c̦ILX z@E,T y rOEu  z8Lј@!謲 Lҙ TDCTOEI Ҥh *8L Ȉ@X OdP J@ΙT žȬ (@!*\ LʤO8DtS4L5v)hR@ DR@ ! rИ@[dE1-IDLi,E8DXRƂb,;eΕz LOIuzX$L¤cX0ʂ$PCm4P*|b,cX0CmPNd4PƂ`,cStJYD,P @ \E*AZ\SPB<=i,EDXRʂVU X0CmPB9|i,EDXRʂVU X2CmPCW4P*|`,d`;e8 XhXHƅ-Oƒ,*Xʂ(Xh:,=i,EDXRȂXʂZX)h{E[d( .TITLE $FPERR -FPP AST HANDLER IDENT 03 ;RFB 23-SEP-74 ; ; DISCLAIMER ; ; R. BRENDER 1-AUG-74 ; ;+ ; FUNCTION: ; HANDLE 11/45 FPP ASYNCHRONOUS TRAPS AND TRANSLATE TO ; FORTRAN ERROR REPORTS. ; ; ALL ERRORS AS INDICATED IN THE FPP FLOATING ; EXCEPTION CODE (FEC) REGISTER ARE REPORTED. ; ADDITIONAL ERROR SPECIFIC HANDLING CONSISTS OF: ; ; FEC=4 -FLOATING DIVIDE BY ZERO ; THE VALUE IN THE FLOATING REGISTER IS ; REPLACED BY ZERO (0.0) ; ; FEC=8 -FLOATING OVERFLOW ; SAME AS FLOATIN .TITLE $ERRSNS -SENSE LAST RUN TIME ERROR DATA IDENT 05 ;RFB 29-SEP-74 ; ; DISCLAIMER ; ; R. BRENDER 9-JUN-74 ; ;+ ; FUNCTION: ; SENSE AND RETURN TO USER DATA ON THE LAST ; ERROR TO OCCUR. ; ; CALLING SEQUENCE: ; CALL ERRSNS(NUM,FERR,FER1,UNIT) ; ; WHERE: ; NUM IS THE ERROR NUMBER, ; FERR IS THE FCS F.ERR BYTE IF NEGATIVE, ; FER1 IS THE FCS F.ERR+1 BYTE IF F.ERR IS NEGATIVE, AND ; UNIT IS THE LOGICAL UNIT NUMBER. ; ; ALL ARGUMENTS ARE TYPE INTEGER*2. ; ANY NUMBER OF ARGUMENTS MAY B .TITLE $STPPAU STOP AND PAUSE MODULE IDENT 08 ;RFB 26-SEP-74 ; ; DISCLAIMER ; ; R. BRENDER 27-MAY-74 ; ; MODIFIED BY: ; B. LEAVITT 29-MAY-74 ; ;+ ; FUNCTION: ; PROCESS STOP AND PAUSE STATEMENTS. ; ALSO INTERNAL $EXIT ROUTINE. ;- OTSWA FBLOCK .MCALL SPND$S OTS$I ;PURE CODE SECTION .IF DF F4P STOP$:: JSR PC,$SAVP1 MOV R0,R4 ;POINTER TO POINTER TO TEXT MOV #TXTSTP,R0 ;STOP TEXT ADDRESS JSR PC,STPPAU BR $EXIT PAUS$:: JSR PC,$SAVP1 MOV R0,R4 ;POINTER TO PO .TITLE $ERRPT - ERROR REPORTING MODULE IDENT 25 ;RFB 30-SEP-74 ; ;DISCLAIMER ; ; R. BRENDER 26-MAY-74 ; ;+ ; FUNCTION: ; REPORT RUN TIME ERRORS. ; ;- OTSWA FBLOCK .MCALL GTSK$S,SVTK$,DIR$,EXIT$S LF =12 ;ASCII LINE FEED CHARACTER CR =15 ;ASCII CARRIAGE RETURN CHARACTER .LIST MEB ; ; TRAP VECTOR ENTRIES ; $SST0:: MOV #ERSST0,R0 BR SSTCOM $SST1:: ADD #6,SP ;DISCARD SEGMENT DATA INFO MOV #ERSST1,R0 BR SSTCOM $SST2:: MOV #ERSST2,R0 ;T-BIT OR BPT BR SSTCOM $SST3 G DIVIDE BY ZERO. ; ; FEC=10 -FLOATING UNDERFLOW ; SAME AS FLOATING DIVIDE BY ZERO. ; (NOTE THAT UNDERFLOW IS NOT NORMALLY ENABLED ; BUT MAY BECOME ENABLED BY THE ERRSET ROUTINE.) ; ; CALLING SEQUENCE: ; FPP ASYNCHRONOUS TRAP. ; ;- ERRDEF OTSWA .MCALL ASTX$S ; ; FLOATING REGISTER NAME DEFINITIONS ; F0=%0 F1=%1 F2=%2 F3=%3 OTS$I ;PURE CODE SECTION $FPERR:: MOV R1,-(SP) ;SAVE R1 MOV 2(SP),R1 ;GET FPP EXCEPTION ADDRESS MOV R0,2(SP) ;SAVE R0 STFPS R0 ;GE E SPECIFIED. ; ;- OTSWA OTS$I ;PURE CODE SECTION ERRSNS:: $AOTS MOV #TABOFF,R1 ;TABLE OF OFFSETS MOVB (R5)+,R0 ;ARG COUNT BEQ 5$ ;EXIT IF NONE INC R5 ;KEEP R5 EVEN 2$: MOVB (R1)+,R2 ;GET OFFSET BEQ 1$ ;BRANCH IF NO MORE BIC #177400,R2 ;CLEAR ANY SIGN EXTEND ADD R3,R2 ;MAKE A WORK AREA ADDRESS CMP #-1,@R5 ;CHECK FOR NULL ARG BEQ 4$ ;BRANCH IF NULL MOV @R2,@(R5)+ ;SEND VALUE TO CALLER 4$: CLR @R2 ;CLEAR USED UP VALUE SOB R0,2$ ;LOOP IF MORE ARGS 5$: MOVB (R1INTER ... MOV #TXTPAU,R0 JSR PC,STPPAU SPND$S ;SUSPEND TASK RTS PC .ENDC ;DF F4P .IF DF F4 BAH$:: MOV #TXTPAU,R0 JSR PC,STPPAU PSE$:: SPND$S JMP @(R4)+ FOO$:: MOV #TXTSTP,R0 JSR PC,STPPAU STP$:: BR $EXIT .ENDC ;DF F4 ; ; COMMON CODE FOR STOP AND PAUSE. ; BUILDS AND PUTS OUT THE MESSAGE ; STPPAU: $AOTS MOV R4,-(SP) ;SAVE THREADED PTR MOV R0,-(SP) ;SAVE STOP/PAUSE TEXT POINTER JSR PC,$ERRZA ;SETS UP TASK NAME, ETC. MOV (SP)+,R1 ;"STOP" OR "PAUSE" POINTE:: MOV #ERSST3,R0 ;IOT BR SSTCOM $SST4:: MOV #ERSST4,R0 ;RESERVED INSTRUCTION BR SSTCOM $SST5:: MOV #ERSST5,R0 ;NON-RSX EMT SST6: TST (SP)+ ;DISCARD EXTRA WORD ; ; $SST6 AND $SST7 ARE ON FOLLOWING PAGES ; ; ; SOMETHING IS VERY WRONG! ; TRY TO GIVE ERROR MESSAGE AFTER DISABLING ; ANY FURTHER SST TRAPS, INCLUDING NORMAL ERROR TRAPS. ; SSTCOM: SUB #ERCLS0,R0 ;MAP ERROR NUMBER INTO USER RANGE $AOTS ;WORK AREA ADDRESS MOV @SP,W.PC(R3) ;SAVE PC FOR ERROR REPORT DIR$ #SVTK JSR T FPP STATUS BIC #100000,R0 ;CLEAR INTERRUPT FLAG LDFPS R0 ;RESTORE TO STATUS REG $AOTS R0 ;OTS WORK AREA ADDR MOV R1,W.PC(R0) ;SAVE ADDR FOR ERROR REPORT MOV 4(SP),R0 ;EXCEPTION CODE ASL R0 ;ADJUST FOR JMP FLT(R0) ;DISPATCH TO REPORT ERROR ; ; TABLE OF SPECIFIC ERROR REPORTS ; EACH ENTRY CONTINUES TO ERROR SPECIFIC CODE ; FLT: ERROR ERFP00 ;CAN'T HAPPEN? BR EXIT 2$: ERROR ERFP02 ;OPCODE ERROR BR EXIT 4$: ERROR FZDIV ;DIVIDE BY ZERO BR VALZER 6$: ERROR ERFLIN ;F)+,R2 ;CLEAR REMAINING WORK AREA VALUES BEQ 1$ ;BRANCH IF DONE BIC #177400,R2 ;CLEAR ANY SIGN EXTEND ADD R3,R2 CLR @R2 BR 5$ 1$: RTS PC OTS$D ;PURE DATA SECTION TABOFF: .BYTE W.ERNM,W.FERR,W.FER1 .BYTE W.ERUN,0 .EVEN .END R JSR PC,$FILL ;FILL IT IN MOV (SP)+,R4 ;RESTORE THREADED POINTER MOV (R4)+,R1 ;USER TEXT ALSO JSR PC,$FILL ;FILL IT IN JSR PC,$DET1L ;OUTPUT TEXT RTS PC ; ; CLOSE ALL FILES AND EXIT TO MONITOR ; EXIT$:: $EXIT:: $AOTS MOV W.DEV(R3),R5 ;ADDR OF DEV TABLES ADD #F.LUN+D.FDB,R5 ;POINT TO FIRST LUN NUMBER MOV W.LUNS(R3),R4 ;NUMBER OF LUNS 1$: MOVB @R5,R2 ;LUN NUMBER FOR CLOSE BEQ 2$ ;SKIP IF EMPTY JSR PC,$CLOSE 2$: ADD #F.FDB,R5 ;POINT TO NEXT F.LUN BYTE SOB R4,1$ ;LOOP IF MOPC,$ERRAA ; ; THESE ERRORS SHOULD NOT RETURN BUT ; JUST IN CASE... ; ; THIS IS SUPPOSED TO BE THE ONLY EXIT$S MACRO ; IN THE ENTIRE OTS. THIS HELPS DEBUGGING BY ONLY ; NEEDING ONE BREAKPOINT TO INTERCEPT ALL EXITS. ; $EXIT$:: $AOTS MOV EXADDR(R3),R0 ;USER EXIT ROUTINE ADDRESS BEQ 1$ ;BRANCH IF NONE JSR PC,@R0 1$: EXIT$S .SBTTL TRAP INTERRUPT HANDLER ; ; TRAP INTERRUPT HANDLER ; THIS IS THE 'NORMAL' WAY TO SIGNAL AN ERROR. THE ; NUMBER FROM THE TRAP INSTRUCTION ILOATING TO INTEGER OVERFLOW BR EXIT 8$: ERROR FOVRFL ;OVERFLOW BR VALZER 10$: ERROR FUNDFL ;UNDERFLOW BR VALZER 12$: ERROR ERFP12 ;UNDEFINED VALUE BR EXIT 14$: ERROR ERFP14 ;MAINTENANCE BR EXIT ; ; ERROR SPECIFIC ACTIONS ; VALZER: MOV @R1,R0 ;GET INSTRUCTION AT TIME OF ERROR ASH #-4,R0 ;SHIFT FOR DISPATCH AND BIC #177763,R0 ;EXTRACT REGISTER JMP CLRF0(R0) ;DISPATCH ; ; TABLE OF REGISTER SPECIFIC CLEAR INSTRUCTIONS. ; NOTE THAT AC 4 AND 5 CANNOT BE DESTINATION AT THE ; FILE ERRASM.CMD ; ; INDIRECT COMMAND FILE TO ASSEMBLE ERROR MODULES ; DK1:[300,121]ERRMO ,LP:=DK1:[100,110]RSXD,FPP,F4P,[300,120]ERRMO DK1:[300,121]ERRPT ,LP:=DK1:[100,110]RSXD,FPP,F4P,[300,120]ERRPT DK1:[300,121]ERRSET,LP:=DK1:[100,110]RSXD,FPP,F4P,[300,120]ERRSET DK1:[300,121]ERRSNS,LP:=DK1:[100,110]RSXD,FPP,F4P,[300,120]ERRSNS DK1:[300,121]ERRTST,LP:=DK1:[100,110]RSXD,FPP,F4P,[300,120]ERRTST DK1:[300,121]ERTXT ,LP:=DK1:[100,110]RSXD,FPP,F4P,[300,120]ERTXT DK1:[300,121]FPERR ,LP:=DK1:[100,RE JMP $EXIT$ ;EXIT TO MONITOR ; ; TEXT FOR STOP AND PAUSE ; OTS$D ;PURE DATA SECTION TXTSTP: .ASCIZ /STOP / TXTPAU: .ASCIZ /PAUSE / .EVEN .END S LOADED TO R0, ; LEGAL RANGES ARE CHECKED, ; THEN THE COMMON ERROR ROUTINE IS INVOKED. ; $SST6:: MOV R0,-(SP) ;SAVE R0 MOV 2(SP),R0 ;GET TRAP NUMBER DOUBLED ASR R0 ;BACK TO JUST ERROR NUMBER SUB #ERCLS0,R0 ;DOES IT BELONG TO US? BGE 1$ ;BRANCH IF YES MOV #ERSST6,R0 ;TREAT LIKE ILLEGAL TRAPS TST (SP)+ ;DISCARD SAVED R0 BR SST6 1$: JSR PC,$ERRAA ;DO ERROR ANALYSIS MOV (SP)+,R0 ;RESTORE R0 TST (SP)+ ;DISCARD TRAP NUMBER RTI ;EXIT INTERRUPT .SBTTL 11/40 FIS INTERRPUT ; TIME OF ANY FPP ERRORS. ALSO THE F/D MODE MODE IS ; ALWAYS CORRECT AT THE TIME OF AN FPP TRAP. ; CLRF0: CLRF F0 ;OR CLRD F0 BR EXIT CLRF1: CLRF F1 BR EXIT CLRF2: CLRF F2 BR EXIT CLRF3: CLRF F3 ; ; COMMON EXIT FOR ALL EXCEPTION CONDITIONS ; EXIT: MOV (SP)+,R1 ;RESTORE R1 MOV (SP)+,R0 ;RESTORE R0 TST (SP)+ ;DISCARD EXCEPTION CODE ASTX$S ;EXIT FPP AST .END 110]RSXD,FPP,F4P,[300,120]FPERR DK1:[300,121]R50 ,LP:=DK1:[100,110]RSXD,FPP,F4P,[300,120]R50 DK1:[300,121]STPPAU,LP:=DK1:[100,110]RSXD,FPP,F4P,[300,120]STPPAU DK1:[300,121]USEREX,LP:=DK1:[100,110]RSXD,FPP,F4P,[300,120]USEREX ; ; ALTERNATE FORMS ; ; NOTE: ERRMO11M MUST BE ASSEMBLED UNDER RSX11M TO GET ; NEW QIO FORMATS. ; DK1:[300,122]ERRMO11M ,LP:=DK1:[100,110]RSXM ,FPP,F4P,[300,120]ERRMO DK1:[300,122]ERRPTDV6 ,LP:=DK1:[100,110]RSXDV6,FPP,F4P,[300,120]ERRPT DK1:[300,122]ERRPT11M .TITLE $ERRSET -SET ERROR CLASS CONTROL CODES IDENT 06 ;RFB 29-SEP-74 ; ; DISCLAIMER ; ; R. BRENDER 9-JUN-74 ; ;+ ; FUNCTION: ; FORTRAN CALLABLE SUBROUTINE TO SET ERROR CLASS ; CONTROL CODES FOR A GIVEN CLASS. ; ; CALLING SEQUENCE: ; CALL ERRSET(NUM,CONTIN,COUNT,ERREQ,LOG,LIMCNT) ; ; WHERE: ; NUM IS ERROR NUMBER, ; CONTINUE = .TRUE. => CONTINUE AFTER THIS ERROR ; COUNT = .TRUE. => INCLUDE THIS ERROR IN ERROR COUNT ; ERREQ = .TRUE. => TAKE ERR=EXIT ; = .FALSE. => RETURN TO REP HANDLER ; ; IF AN 11/40 WITH FIS THEN TRANSFORM THE FIS ; TRAP INTO AN APPROPRIATE ERROR REPORT. ; ELSE REPORT AS AN ILLOGICAL TRAP. ; $SST7:: .IF DF FIS BIT #1,4(SP) BEQ 1$ ERROR FZDIV ;FLOATING ZERO DIVIDE 1$: BIT #10,4(SP) BEQ 2$ ERROR FUNDFL ;FLOATING UNDERFLOW BR 3$ 2$: ERROR FOVRFL ;FLOATING OVERFLOW 3$: MOV (SP)+,2(SP) ;COPY UP TRAP PC & PSW MOV (SP)+,2(SP) ;OVERWRITING B ARGUMENT CLR 4(SP) ;DEFAULT VALUE IS 0.0 CLR 6(SP) RTI ;EXIT INTERRUPT .IFF  .TITLE $R50 -INTERNAL RAD50 TO ASCII CONVERSION IDENT 03 ; ; DISCLAIMER ; ; R.BRENDER 26-MAY-74 ; ADAPTED FROM R50ASC MODULE IN FORTRAN/RT-11 ; WITH CREDITS TO ECP, RRB, AND BAM. ; ;+ ; FUNCTION: ; CONVERT RAD50 PACKED WORDS TO ASCII ; BYTES. ; ; INPUTS: ; R1 = # OF OUTPUT CHARS ; R4 = ADDR OF FIRST INPUT WORD ; R5 = ADDR OF FIRST OUTPUT CHAR ; ; OUTPUTS: ; R0,R1,R2,R3 ARE PRESERVED ; R4 = UNDEFINED ; R5 = ADDR OF NEXT OUTPUT CHAR ; ;- OTS$I ;PURE CODE SECTION $R50:: MO ,LP:=DK1:[100,110]RSXM ,FPP,F4P,[300,120]ERRPT ORTING ROUTINE ; LOG = .TRUE. => REPORT THIS ERROR ON LOGGIN DEVICE ; LIMCNT = INTEGER VALUE USED TO SET THE ERROR COUNT LIMIT ; ; NUM IS INTEGER FROM 1 TO ERMAXN ; REMAINING ARGUMENTS ARE LOGICAL (ANY ALLOCATION SIZE) ; TWO THRU SIX ARGUMENTS MAY BE SPECIFIED. ;- OTSWA ERRDEF OTS$I ;PURE CODE SECTION ERRSET:: $AOTS MOVB (R5)+,R0 BEQ ERR INC R5 MOV @(R5)+,R1 ;GET ERROR NUMBER BLE ERR ;BRANCH IF ERROR NUM TOO SMALL CMP R1,#ERMAXN-ERCLS0 BHI ERR ;BRANCH IF TOO BI MOV #ERSST7,R0 ;ILLOGICAL 11/40 FIS TRAP BR SSTCOM .ENDC ;DF FIS .SBTTL $ERRAA - GLOBAL ENTRY ; ; CALLING SEQUENCE: ; MOV ,R0 ; JSR PC,$ERRAA ; $ERRAA:: JSR R5,.SAVR1 ;FCS REGISTER SAVE COROUTINE $AOTS ; ; SAVE ERROR NUMBER FOR $ERRZ ; NOTE THAT ERROR NUMBER GETS SHIFTED DOWNWARD ; SO THAT PRINTED NUMBERS START AT ERROR 1. ; MOV R0,R2 ;COPY NUMBER ADD W.ERTB(R3),R2 ;ERROR TABLE ADDRESS TSTB @R2 ;VALID ERRORS WILL HAVE AT LEAST ONE BIT ON BNE 1$ ; V R3,-(SP) ;SAVE R3 MOV R2,-(SP) MOV R1,-(SP) MOV R0,-(SP) ;SAVE R0 1$: MOV #DIVTAB,R3 ;R3 -> DIVISION TABLE MOV (R4)+,R2 ;R2 = CURRENT INPUT WORD 2$: TST -(R3) ;NEW WORD REQUIRED YET? BEQ 1$ ;YES MOV #-1,R0 ;INITIALIZE QUOTIENT REG CMP #174777,R2 ;RAD50 VALUE TOO LARGE? BLO 4$ ;YES - OUTPUT QUESTION MARKS 3$: INC R0 ;DIVIDE BY APPROPRIATE POWER OF 50(8) SUB @R3,R2 BCC 3$ ADD @R3,R2 ;RESTORE DIVIDEND TST R0 ;CHARACTER IS A BLANK? BEQ 5$ ;YES CMP #33,R0 ;DOLLAR SIGN,! .TITLE $ERRTST - TEST FOR ERROR IN GIVEN CLASS IDENT 03 ;RFB 29-SEP-74 ; ; DISCLAIMER ; ; R. BRENDER 9-JUNE-74 ; ;+ ; FUNCTION: ; FORTRAN CALLABLE SUBROUTINE TO DETERMINE ; IF AN ERROR HAS OCCURRED FOR A GIVEN ERROR NUMBER. ; ; CALLING SEQUENCE: ; CALL ERRTST(I,J) ; ; WHERE: ; I IS INTEGER ERROR NUMBER, ; J IS SET BY THIS ROUTINE TO ; 1 IF AN ERROR HAS OCCURRED ; 2 IF AN ERROR HAS NOT OCCURRED ; ;- OTSWA ERRDEF OTS$I ;PURE CODE SECTION ERRTST:: $AOTS ;GET I"G ADD W.ERTB(R3),R1 ;ADDRESS OF CONTROL BYTE TSTB @R1 ;VALID ERROR NUMBER? BEQ ERR ;BRANCH IF NOT MOV #1,R2 ;ROTATING BIT DEC R0 ;COUNT ONE ARG USED BLE 1$ ;BRANCH IF NO MORE ARGS ; ; CONTINUATION ARG ; JSR PC,MORE1 ;IS THERE MORE? BCS 1$ ;BRANCH TO SKIP THIS ONE BICB R2,@R1 ;CLEAR CONTINUE BIT TSTB @R4 ;REQUEST IS FOR SET? BEQ 1$ ;BRANCH TOO LEAVE OFF BITB #EC.RTS!EC.ERE,@R1 ;CONTINUE ALLOWED? BEQ ERR ;BRANCH IF ILLEGAL REQUEST BISB R2,@R1 ;SET CONTINUE ON ; #BRANCH IF VALID MOV #ERINVE-ERCLS0,R0 ;SUBSTITUE ERROR ERROR 1$: MOV R0,W.ERNM(R3) ;SAVE THE REPORTED NUMBER CLR W.FERR(R3) ;DEFAULT VALUES FOR FCS INFO CLR W.FER1(R3) ;RETURNED BY SNSERR CLR W.ERUN(R3) ; MOV FILPTR(R3),R2 ;IS THERE AN FDB ACTIVE? BEQ ACTION ;BRANCH IF NOT MOVB F.ERR+D.FDB(R2),R1 ;DID IT CAUSE THE ERROR? BPL ACTION ;BRANCH IF NOT CLRB F.ERR+D.FDB(R2) ;SO CAN'T REPORT THIS AGAIN MOV R1,W.FERR(R3) ;SAVE FOR SNSERR MOVB F.ERR+1+D.FDB(R2),R1 MOV R1,W.FER1(R3) ;ALSO$ PERIOD, OR DIGIT? BLO 6$ ;PERIOD OR DIGIT BEQ 7$ ;DOLLAR SIGN 4$: ADD #40,R0 ;ELSE ALPHA (A-Z) OR QUESTION MARK (SEE ABOVE) 5$: ADD #16,R0 6$: ADD #11,R0 7$: ADD #11,R0 8$: MOVB R0,(R5)+ ;STORE CONVERTED CHARACTER IN OUTPUT DEC R1 ;ANY MORE CHARS TO PRODUCE? BNE 2$ ;YES MOV (SP)+,R0 ;RESTORE R0 MOV (SP)+,R1 MOV (SP)+,R2 MOV (SP)+,R3 ;RESTORE R3 RTS PC OTS$D ;PURE DATA SECTION .WORD 0 ;END-OF-TABLE FLAG .WORD 1 .WORD 50 .WORD 3100 DIVTAB= . ;RAD50 DIVISION TMPURE POINTER TO R3 MOV #2,R0 ;SET "NO ERROR" RETURN CODE MOV @2(R5),R1 ;GET ERROR NUMBER BLE 2$ CMP R1,#ERMAXN-ERCLS0 BHI 2$ ADD W.ERTB(R3),R1 BITB #200,@R1 ;IS ERROR OCCURRED BIT SET BNE 1$ DEC R0 ;ERROR OCCURRED RETURN CODE 1$: MOV R0,@4(R5) ;SEND RETURN CODE TO USER BICB #200,@R1 ;CLEAR FLAG FOR NEXT TIME RTS PC ;DONE 2$: ERROR ERINVA ;INVALID ARGUMENT RTS PC .END &; COUNT CONTROL BIT ; 1$: JSR PC,MORE BCS 2$ BICB R2,@R1 ;CLEAR IT TSTB @R4 ;REQUESTED ON? BEQ 2$ ;BRANCH IF NOT BISB R2,@R1 ;SET IT ON ; ; CONTINUATION TYPE ; 2$: JSR PC,MORE BCS 3$ ;BRANCH IF LEAVE AS IS TSTB @R4 ;REQUEST IS TAKE ERR=? BEQ 21$ ;BRANCH IF REQUEST IS RTS BITB #EC.ERE,@R1 ;ERR= ALLOWED? BEQ ERR ;BRANCH IF NOT BISB R2,@R1 ;ACCEPT THE REQUEST BR 3$ 21$: BITB #EC.RTS,@R1 ;RTS ALLOWED? BEQ ERR ;BRANCH IF NOT BICB R2,@R1 ;HONOR REQUEST ; ;' F.ERR+1 MOVB F.LUN+D.FDB(R2),R1 MOV R1,W.ERUN(R3) ;AND UNIT NUMBER ; ;NOW GET ERROR CONTROL BYTE, ;NOTE FACT OF THIS ERROR, ;AND DECIDE IF WE CONTINUE OR EXIT ; ACTION: MOV R0,R2 ;ERROR NUMBER ADD W.ERTB(R3),R2 ;ADDRESS OF ERROR TABLE BISB #200,@R2 ;NOTE THIS ERROR MOVB @R2,R1 ;GET BYTE ASR R1 ;CONTINUE BIT ON? BCC EXIT ;BRANCH IF NOT ASR R1 ;DO WE COUNT? BCC 1$ ;BRANCH IF NOT DEC W.ECNT(R3) ;DECREMENT COUNT BEQ EXIT ;EXIT IF GOES TO ZERO 1$: TSTB W.IOEF(R3) ;INTERNAL ABLE .END ) .TITLE $ERTXT - ERROR TEXT MODULE IDENT 05 ;RFB 29-SEP-74 ; ;DISCLAIMER ; ; R. BRENDER 23-MAY-74 ; ;+ ; FUNCTION: ; ERROR MESSAGE TEXT FOR MOST COMMON ; RUN TIME ERRORS IS AVAILABLE IN CORE. ; ; USED ONLY UNDER RSX11M. ; ; DATA STRUCTURE: ; A BYTE STREAM. ; EACH MESSAGE CONSISTS OF TWO COMPONENTS- ; BYTE 1 - ERROR NUMBER. ; ZERO INDICATES END OF MESSAGE TEXT. ; BYTES 2 TO 2+N - ; TEXT IN ASCIZ FORMAT. ;- .MACRO DE NAME,NUM,VALUE,TEXT NAME =NUM .BYTE NUM-ERCLS0 ;NAME* LOG CONTROL BIT ; 3$: JSR PC,MORE BCS 7$ BICB R2,@R1 ;INITIAL CLEAR TSTB @R4 ;ON? BEQ 4$ ;LEAVE AS IS BISB R2,@R1 ;SET TO LOG 4$: .IF DF FPP TSTB W.FPPF(R3) ;IS THERE AN FPP ON SYSTEM? BNE 7$ ;BRANCH IF NOT SUB W.ERTB(R3),R1 ;RECOVER ERROR NUMBER CMP R1,#FUNDFL-ERCLS0 ;FLOATING UNDERFLOW? BNE 7$ ;GO ON IF NOT TSTB @R4 ;REQUEST ON? BEQ 5$ ;BRANCH IF OFF STFPS -(SP) ;FPP STATUS BIS #2000,@SP ;SET INTERRUPT ON UNDERFLOW 6$: LDFPS (SP)+ ;REPLACE STATUS BR+OTS ERROR HANDLING? BLE 5$ ;BRANCH IF NOT FOR NORMAL PROCESSING ROR R1 ;SKIP ERR= BIT BR 2$ ;GOTO LOG BIT PROCESSING 5$: ROR R1 ;ERR= NEEDED? BCC 2$ ;BRANCH IF NOT MOV ERREX(R3),R4 ;ERR=PRESENT (LEAVE C) BEQ EXIT ; ;THIS TASK WILL CONTINUE ; 2$: ROR R1 ;LOG IT? (REMEMBER PREV C) BCC 3$ ;BRANCH IF NOT CLR R0 ;NO EXIT FLAG JSR PC,$ERRZ TSTB W.IOEF(R3) ;SPECIAL INTERNAL HANDLING? BNE 4$ ;BRANCH TO TAKE RTS RETURN 3$: ROL R1 ;RECOVER RTS/ERR=BIT BCC 4$ JMP $IOEXIT ; .TITLE $USEREX -USER EXIT ROUTINE SETTER IDENT 01 ;RFB 29-SEP-74 ; ; DISCLAIMER ; ; R. BRENDER 17-AUG-74 ; ;+ ; FUNCTION: ; TO PASS TO OTS THE ADDRESS OF A USER WRITTEN ; ROUTINE TO BE CALLED AT TASK TERMINATION. ; ; CALLING SEQUENCE: ; ; EXTERNAL ROUTIN (OR EXTERNAL *ROUTIN) ; CALL USEREX(ROUTIN) ; ;- OTSWA OTS$I ;PURE CODE SECTION USEREX:: $AOTS ;WORK AREA ADDR TO R3 MOV 2(R5),EXADDR(R3) ;SAVE ADDRESS FROM USER RTS PC ;RETURN .END .ASCIZ @TEXT@ .ENDM .LIST MEB OTS$D ;PURE DATA SECTION $ERTXT:: ERRDEF TEXT .BYTE 0 .EVEN .END . 7$ ;CONTINUE 5$: STFPS -(SP) BIC #2000,@SP ;DISABLE INTERRUPT ON UNDERFLOW LDFPS (SP)+ ;REPLACE .ENDC ;DF FPP ; ; ERROR COUNT LIMIT ; 7$: JSR PC,MORE ;IS THERE A LIMIT COUNT? BCS 8$ ;EXIT IF NOT MOV @R4,W.ECNT(R3) ;USE IT 8$: RTS PC ; ; INTERNAL ENTRY MORE ; ; FUNCTION: ; DECREMENT ARG COUNT, EXIT IF ALL DONE. ; SET C-BIT IF A NULL ARGUMENT ; SHIFT BIT USED TO TEST ERROR CONTROL BYTE ; MORE: ASL R2 ;ROTATE BIT MORE1: DEC R0 ;ARG COUNT BMI 1$ ;BRANCH IF DON/TAKE ERR= TRANSFER (R4 = ADDRESS) 4$: RTS PC ;TAKE RTS ; ;THIS TASK WILL EXIT ; EXIT: MOV #-1,R0 ;TELL $ERRZ WE ARE EXITING JSR PC,$ERRZ ;LOG ALWAYS ; ; EXTERNAL ENTRY USED BY OPEN/CLOSE ; STATEMENT PROCESSORS TO CAUSE TASK EXIT. ; $ERXIT:: $AOTS MOVB #1,W.IOEF(R3) DIR$ #SVTK ;INHIBIT ERROR LOOP JMP $EXIT ;CLOSE FILES AND EXIT TO MONITOR ; ; INTERNAL ENTRY $ERRZ ; $ERRZ: JSR R5,.SAVR1 ;SAVE REGS $AOTS JSR PC,$ERRZA ;INITIAL TEXT TST R0 ;EXITING? BEQ 1$ ;BRANCH 0 .TITLE $ERRMO -ERROR OUTPUT USING MO TASK IDENT 09 ;RFB 29-SEP-74 ; ; DISCLAIMER ; ; R. BRENDER ; OTSWA .IF DF RSXD .MCALL MOUT$S,MOWA$S,ALUN$S .ENDC .MCALL QIO$S,WTSE$S,QIOSY$ ; ; CONSTANTS USED HEREIN: ; CR =15 ;ASCII CARRIAGE RETURN CHARACTER LF =12 ;ASCII LINE FEED CHARACTER .LIST MEB OTS$I ;PURE CODE SECTION $ERRNL:: MOVB #LF,(R5)+ MOVB #CR,(R5)+ RTS PC .IF DF RSXD $ERRW1:: SET1: MOV R5,W.MOV1(R3) ;COMPUTE LENGTH OF FIRST SEGMENT SUB W.MO1bBBKB!KB1fLPKbѠ bѨ bѰ bѸ b b dр 3v)J1PvJ2P`ƗBB1fLR(hh%v)J5PvJ6PԴ;P h@M):}R-QK@E@a|8MԑPvJ Hj1BBш E3v)J HP4KfhA fLPKjh`PlƗBBѸ 3v)J H; fLPKbр bш e3v)JPrƗBB1KBAfLPKbѨ E3v)JPjƗBBqgLRph`rh``h& H;&  HP7Kdј 3R(hh5v)J5PrƗBBaHMvӱ#P hP P hP hBx )@DDLE MOV (R5)+,R4 ;GET ARG ADDRESS CMP #-1,R4 ;NULL ARG? BEQ 2$ ;BRANCH IF YES CLC ;USE THIS ARG RTS PC 1$: TST (SP)+ ;DISCARD LOCAL PC 2$: SEC ;SIGNAL NULL ARG RTS PC ERR: ERROR ERINVA ;INVALID ARG RTS PC .END 3IF NOT MOV #TXT7,R1 ;"EXITING DUE TO" JSR PC,$FILL 1$: MOV #TXT2,R1 ;"ERROR" JSR PC,$FILL MOV W.ERNM(R3),R1 ;ERROR NUMBER JSR PC,$BINAS ;TO ASCII JSR PC,$ERRW1 ;OUTPUT LINE .IF DF RSXM ; ; HANDLE INCORE ERROR TEXT ; MOV #$ERTXT,R1 NEXT: MOVB (R1)+,R2 ;MESSAGE NUMBER BEQ PCLIN ;BRANCH IF NO MORE TEXT BIC #177400,R2 ;MASK SIGN EXTEND CMPB R2,W.ERNM(R3) BEQ MATCH SCAN: TSTB (R1)+ ;SKIP BYTES UNTIL BNE SCAN ;A 0 IS FOUND BR NEXT ;TRY AGAIN FOR A MATCH MATCH: JSR PC4A1(R3),W.MOV1(R3) MOV R5,W.MOA2(R3) ;ADDRESS OF SECOND SEGMENT RTS PC .ENDC ;DF RSXD $DET1L:: ;OUTPUT ONE LINE MESSAGE JSR PC,$ERRNL ;FINAL SPACING $DETIC:: ;OUTPUT INCORE MESSAGE STRING .IF DF RSXD MOV W.MOPR(R3),R0 ;MO STRING DESCRIPTOR CLR R1 ;SIGNAL INCORE FORMAT STRING JSR PC,SET1 BR DET $DET:: MOV W.ERNM(R3),R1 ;MO MESSAGE NUMBER DET: TSTB W.MOTY(R3) ;USE MO TASK OR DIRECT TO TERMINAL? BNE QIO ;BRANCH TO USE TERMINAL MOV R5,W.MOV2(R3) ;COMPUTE LENGTH OF SE5b|J ZjZjZjZjZjZjP h@ z%}XAK*}(5dXB ;PFx*  Z}I**}(լTUPɚAEKP\x:PJ\II)LE )@ZlU< H4ThTx@@L@OTDŌAZ r%} Dt J@(JD r$}H *EpB h䒂P*-PJ rUE جE ڒH @ZU@"YP JH O@E"*R% J\KTTO9OL EEIJ Eh}@)5@*-OrS *A \PJ rOPI r@*-O ڦU AX xB HD*-PDu.PJ rAE.bۚF)D' H@:u\[%cTX@]- HtH@ IEHt,ͺ[T蔨 M)-ACX2tv)hNjN̈I*-R) , J@ ,@ř\Z5Sk JJ@ ;utUP@ EFHv̡h@ F;ta4 GtLUY$\_8tU3dL.| Č@0@DDPv)h@ʼnt J@ Z h`؊)X99ODdN E) Dhy, Iu!-L\_Kub8X)̻tPɅdL@єA".dLKe5EbEEmH@ IEhXɡhZ5DeSX2H F LH   8eH*T,FH*-L  8e7,$ERRNL JSR PC,$FILL ;USE THIS TEXT JSR PC,$ERRW1 ;OUTPUT IT .ENDC ;DF RSXM ; ; GIVE USER PC IF AVAILABLE ; (ONLY SET UP FOR SST AND FPP TYPE ERRORS) ; PCLIN: MOV W.PC(R3),R4 ;IS THERE A VALUE? BEQ CNTLIN ;BRANCH IF NOT JSR PC,$ERRNL MOV #TXT9,R1 ;"AT PC = " JSR PC,$FILL MOV R4,R1 ;THE PC VALUE JSR PC,OCTASC CLR W.PC(R3) ; ;TELL IF ERROR COUNT IS CAUSE OF TERMINATION ; CNTLIN: TST W.ECNT(R3) BNE FCSLIN JSR PC,$ERRNL MOV #TXT8,R1 JSR PC,$FILL ; ; FOR I/O EFCOND SEGMENT SUB W.MOA2(R3),W.MOV2(R3) MOUT$S R0,W.MOPR(R3),R1,#C$ONT,#SY$STM,,,W.IOST(R3),W.MO(R3),,NWAIT BCS 1$ MOWA$S BR $ATT ;INITIALIZE FOR MORE ; ; QIO TO MO TASK HAS FAILED. ASSUME IS NOT LOADED ; AND REVERT TO TERMINAL MODE TO GIVE PARTIAL ; ERROR MESSAGE. FIRST TRY FOR TI: (I.E., SEE IF THIS IS ; RSX11D V6 OR RSX11M). IF THAT FAILES, REVERT TO CO:. ; 1$: ALUN$S W.MO(R3),#"TI ;ASSIGN TI: TO MO LUN BCC 2$ ;BRANCH IF SUCCESS ALUN$S W.MO(R3),#"CO ;ELSE ASSIGN CO: 2$:9bLI r@ƈ: | Y J@ *AZ\.PJ\[T@ZtX:PJr)@T jO@EPL )@ZlU< J\*RIIh}TDWIt\סhPR4t@-TtF RZttU )ҔP@ @ X+-@yLO4-MDP8|LPJ\:EiLtáhPbr J\zI*@*-Ox PJ r @O*M@ttB9 `B H@ $ BCS $ATT ;ON ERROR JUST KEEP GOING AND HOPE WTSE$S #30. $ATT:: MOV W.ERLN(R3),R5 ;INITIALIZE FOR MORE MOV #CcZ}SZA`B)%ѐ Jԑ`J I!-Z}sJRZ LJI:J I!-XőHBL[TX̑H9,AhHuXԑHBX$Uh:|A5m JEd M$REu JEqYXTHB[dSp 9,H-١hH Ut JRZ (M[XTHx ,I`J I!-YEZU JE )MAi,z}H;ΚPOH H,Ad*M(H 1-:R,,HӚPSIRE  JAZd*M(XőH) EhEt H;ΚPtXґH-١hdD,H;ΚPEt H;ΚPU H;ΚP m" H( X̑H-١hzJE 8MLcHez͙tFXEH1` 8 L9|9}%[p1cX$hdz͙tFXEH1` Z%zF͙tFXEH1` Ht=|LOMfƊXhYeTXL=|LOMfƪXhHęDzG }Nh|SƢf,E LbRf|)Dj4cl3"}EtRNR$FE-Jf,E LTz2 }Nh|SƢb,E LbRH RTH2` J2'3蔌O85VƊb,E LdRH RTH2` &ٓItZ`,6cX$hR$FE-j3c,Pz2 }Nh|S`6cX$h*R$FE-XUH1` &ٛItZd+cl3" }3 蔌O85VƒXE LbRR$FE-X0d,PٓItZb+cl3"MT ;OUTPUT MESSAGE SO FAR ; ; ACCOMODATE DIFFERENCES IN THE TRACE BACK CHAIN ; LAYOUT IN F4 AND F4P ; .MACRO MOTRC ERR.LK =0 ;OFFSET TO LINK POINTER ERR.SQ =2 ;OFFSET TO SEQUENCE NUMBER ERR.NM =4 ;OFFSET TO NAME IN RAD50 .ENDM .MACRO F4TRC ERR.NM =0 ;OFFSET TO NAME IN RAD50 ERR.SQ =4 ;OFFSET TO SEQUENCE NUMBER ERR.LK =6 ;OFFSET TO LINK POINTER .ENDM ;F4TRC .IF DF F4P MOTRC .IFF .IF DF RSXD MOTRC RERITE = 1 .IFF F4TRC .ENDC ;DF RSXD .ENDC ;DF F4P SUB #8CR*256.+LF,(R5)+ MOV R5,W.MOA1(R3) RTS PC .END GcXőH-١hh}HJ|RPؔX̑HJ|RPΘDXTHJ|RPd H % zLUBJ!(=(I`BPhǘDXTHBPh% H % zLĘDXTHJ|RPJ!DXȑHB[dSp Z$RJ I!-L:,R:H ! LzJϙP  dLYXőH-١h養đ`B[dSp SE JE LIH;ΙPEdXEH,ٙPT8uґ`B[dSp ٬Ց` LC|XYH8tLdXKHEh9J I!-Z}MJRZ Lլ HhMҙP:|,HEh XԑHB)%ѐ JE`J I!-Pc }z3 }Nh|S`,6cX$hG蔌O85Vƚf,E LjRR$FE-XƂH` &z }Nh|SƢb,E LdR٣ItZb+cp1" }3R$FE-XƂH` &zT }Nh|S`cX$hZ=)Dj4E[X0,PKR$FE-p1Tc,PKR$FE-XH5` -p1"[dzWƂH hPZ!jZjZjZjZjZjZjZjZjZjZjZjZjZjZh\II8L ,@S@Ht@LYTZLR@ t@LYTZL|A rIu$-NZl@h| ZDR@ t@LYTZL :M@Sd|S)l@LYTZL $}I,IZL@SX$X IM D @*MR@ Q.,SP ;MAKE ROOM FOR INITIAL MOV W.SEQC(R3),ERR.SQ(SP) ;SEQUENCE MOV W.NAMC(R3),ERR.LK(SP) ;LINK MOV SP,R0 ;THE INITIAL POINTER MOV #TXT4,R1 LOOP: TST ERR.LK(R0) ;ANY TRACING TO DO? BEQ TRCEND ;BRANCH IF ALL DONE MOV ERR.LK(R0),R4 ;MAKE ADDRESS OF NAME JSR PC,TRCSUB ;DO LINE MOV ERR.LK(R0),R0 ;LOOK FOR MORE MOV #TXT5,R1 BR LOOP TRCEND: ADD #8.,SP ;DELETE TEMP NAME BLOCK JSR PC,$DET1L ;MAKE BLANK LAST LINE RTS PC ;END OF ERROR REPORT ; ; DO A TRACE BACK LINE ; TRCSUB:Jb rOOh YztHJI4E:R{tvh8 ՈլR|7 8 ՈլR;P @Ku H@ 8ԑPPP6v)BI4Z0Ѹ H\F(dK@$r,hHS d#RؘJ-Eјx% Қ*xtrTT,Έ@S @SQPy,JQH}@JI8 MLPJI:xƊvhYԚE9tA 8MZtR( 9M6BRh,;P (LǑp@:|A!-HtPұKH˄r`KH Hű#P\F(5 E;|Py,JCl΄P ztP JL.D ČJ"HtPұKH˄rdH YLvDhHEKcHBY$AhZe:H Ȉ %- JE (%X̑HBY$AhZ}I*H Ȉ Ƒ`H Ȉ Iґ`H Ȉ ꬘I$ JE %XґHBY$Ah:-*J I!-,LHhMҘPD,HEhI,HEhHLt JRZ YLX$HhMҘPXԑHEhJԑ`B)%ѐ )ґ` *-OJRZ ZLR,HhMҘPZ| JE iL eO`B4AhƙtHx M%- JE 4C` iL,Α`B)%ѐ ,HJ|RPE= H;ΘPEM HhMҘPJ!ZƂf,׵X0;P@Sژ.Ŵ`cX>Ƃf,׵p1c>P@Hvӡh@SXTG:ERM\I=S.L@Dvnu`6cv>hP@ I dXh XhÇuXhdXh Xh·uvhP@ llitUh2c,PzM͙tFXEUH1` klI4*X6E :LLY=|LOMfcp1"lE,litUXp1"I=RG ,α#P  HŜ I=S9 ,PViOřdtG4I  hP@ I B (H@X$IIMϡPzR%Xhe Mn` tXH(l@a;QUOTIENT IN R2 1$: ADD #'0+10.,R1 ;MAKE REMAINDER INTO CHAR MOV R1,-(SP) ;SAVE FOR NOW MOV R2,R1 ;SET UP FOR NEXT CHAR BEQ 3$ ;ZERO MEANS NO MORE TO DO JSR PC,BINAS2 ;RECURSE 3$: MOVB (SP)+,(R5)+ ;OUTPUT CHARS AS RECURSION RTS PC ;UNWINDS ; ; EXTERNAL ENTRY $FILL ; $FILL:: CMP R5,W.ERLE(R3) ;TO END OF AREA YET? BHI 1$ ;EXIT IF SO MOVB (R1)+,(R5)+ ;COPY TEXT BNE $FILL ;LOOP IF MORE DEC R5 ;BACK UP ON ZERO TERMINATION BYTE 1$: RTS PC ; ; INTERNAL ENTRY $R50AS ; $R50ASZb ZE, J C @ňL 2H͡hH@H*ΔT @ԈԔPH@ ̘OH*ΔPLSPH@ E  JC @ň9 ) @EE B H@ @O @d|T *H, JJ 2H;|TJu\YhPH@tD$T * ) EPH@ ,RI D,LE QDEZN bALL*UX<"PH@ TLTDLtOI@EdԔPH@ ,R E, z@l@ʼnӔPH@ ,R  HYTB H@ UX<@, DZG!"PL zH EePxĔPH@ ,R rHĚPx@,R1-A *IX\ )E BH[c-8 \XF, 0@ @ 8@tڈ΋-Z(2I[$ YDb |@ @ @ tęܞFj4ű@@ @ O-NYlZ@]ZP@  dA)L:NUlI 5R@ @ I 5VLSU`6cv>h@@ y} H|-Cdh@ RIΙItPEYXLJI:@ B< @ @ X$@JR jNYlZb-I`I,\[Mvh@ @ @lA "EE8E8 ]A,FE-@ @ M O*ŴcD98D ݚA-.)ΕJh@ @  YD )@,@8t̤h@ @ ,;P@  dA)L9ΊLzh@ @ Xɤh@ @ O NT$Rhv̤h@ @ E8ecd|R<4C m̉DREӑPBh ) @E4 U ZMzPL ʚ *Hј LSWdB΄OH( LbU L@JI :( y-=dF(fh2`0dXhI͜I;nvnvnZXhyͤE+Ή` t)+ iERROR REPORTS ; TXT1: .ASCIZ / -- / TXT2: .ASCIZ /ERROR/ TXT3: .ASCIZ /FCS/ .IF NDF RSXDV6 TXT4: .ASCIZ / IN "/ TXT5: .ASCIZ / FROM "/ TXT6: .ASCIZ /" AT/ .ENDC ;NDF RSXDV6 TXT7: .ASCIZ /EXITING DUE TO / TXT8: .ASCIZ /(ERROR COUNT EXCEEDED)/ TXT9: .ASCIZ /AT PC = / .IF DF F4P TXT10: .ASCIZ / OR AFTER/ .ENDC ;DF F4P .EVEN .IF DF RSXD FILDES: +FILLEN,FILSTR .IF DF F4P FILSTR: .ASCII /[1,2]F4POTS/ .ENDC .IF DF F4 FILSTR: .ASCII /[1,2]FOROTS/ jb:M :tDhPM ʈӱ3B H@ @dLT * OYlʈI@EhJ ZA$}IYAʐT,W J@AhJ ZA"B H@.dLT *OL bH r *HpB H@ @ӈ*M@}DtOI@EhJ LEI \ҡhPfr J\yI *H I@Yd|T *E OJ@ E H rH @ƈZA$}SX pB H@ |E(*W)}TD J@RH ̰Ayҙ H@ J@ RZ@ӈyL@TD@D}DtF HhJ ZA$}OYT \šhPI@Y*-Oi"T,W(@yk9Lp H,RZ@N*-OBO\HtXȒҵKXhJMPP[dz)D\ [d[FZ@̚dTр IMET;-Lňk(}FHT(;;uv͙\[d;ZŚdNU$v)h;M:uSkS8R"L:-̉@;uKeH@ @DRLښܤD5WHv]H@ ,@HD̅ʲSj養ĕBH` YI-(8|e LFKREtR1 JI-(8|e LFJ,P[PPd,9|Ηz8|k ̙F @ Z|v)h@@  D}L(AeH@ @ZUr%}.*|AbO %cE(lH h< bOP  dA)LIMO+Xɡhlh : O*-ODXBz)*-O,%dRA"9LE9\H P*-z)D\ Y$ -H|P Dt.,N Sl|HYD J-ZRL(XtE%cEH` dRYzTD\ ۚFZ@̚dTр J YDP JeET;uH Rk$bH J 8ePY$AB養ĕBH` YI-(8|e LFKREtR1 JI-(8|e LFJ,P[PPd,9|Ηz8|k ̙F @ Z|v)h@@  D}L(AeH@ @ZUr%}.*|AbO %cE(lH h@RILU$OK ,ҡcB K DZ}I *A4-@Ae D@EEP@ * .ENDC FILLEN =.-FILSTR .ENDC .EVEN ; ; DPB TO DISABLE ALL SYNCHRONOUS TRAPS ; (EXCEPT OTS ERROR TRAPS) ; SVTK: SVTK$ ERSVTK,7 ERSVTK: +0,0,0,0,0,0,$SST6 ; ; PROTOTYPE ERROR CONTROL TABLES ; THESE MUST BE COPIED INTO THE IMPURE ; WORK AREA BY OTS INITIALIZATION. ; .MACRO DE NAME,NUM,VALUE,TEXT .=$ERRTB+NUM-ERCLS0 .BYTE VALUE ;TEXT NAME =NUM .ENDM $ERRTB:: ERRDEF INIT .=$ERRTB+ERMAXN-ERCLS0 .EVEN $ERRTE:: .END nbZ} LLPJ\B H@tz*@EX TDR< HL0B H@ ZA%} DtWIID XhJ z@Z@;DTI@EH@DY"d: zOGhXTT mTXJ]ڶԅrT mTKb,êC(8XݡhHXIt.P:U *IܺJLIE".bv>hJUZ@E }NdSڞ.)bDKb,àOdb,Ò.b\,]:MRJFt\( R#`cX> }1+3P *()dDXJ]ڶԅrOR2p12p1XIt.JUZ@E R'#ڂ. }NX0,&OוhXTO蔶3J,:u\[BFtxƂ|dfRf|xƂ|b\RKئ *( }NڛԅrA)fDKb,àO9fƱP:U*LYLDJ,dP@ŔtOh8MԑP~b: h TDTTOIIP"DDED ꬘IOYT XIIhJ @HDbxh @ΈJ@ O "ZY%* J@.PB hL h}TDWItX O:-TDE(L @@DZ@JM-TI@EHpB h*PJ r@t"z,@S[tXTIExh r!}B H@.l@ELOr O:-QD@[P:-rv Ӛ@S[dE * zH:AX (Lp 8|@zWLIئ ZY-DcHJݡhҊ-UBW#H-.QdL.,N DӑH-J)@ T,RZ@N*-OBO\HtXʒ%PU ŐjDJP X)tΡhPH@)4T*Z|WΔPH@ ( ZDbΡhH@:Қ HMbB H r@TDzr t}S*JJ d@EјB H@@D,TjTS)lX̡hH@@LO9ODdBB hH@(R"EKX)PJJ YD ZD@E4MAZRB H r *H(Ie,PH@ h}TDWIt\סhP5K LʈA "H$-OZlEјB H@i@҈Z}I *@OJM̘OH(B H@YTB H\x@ELOlIrOI@EUt Jj r@ʼn "A*|@[tXT 'hL $}EVd *DI@E4LtGhPK D lXt$*TZ QD@ӔLC( 4F H IpB hH@.[t@TL H @Έ ) EPJ DtS)l@LyM9ġhH@ XE@DJMI$|@LOlIpB H@y҈@ӈ*\I@EDO[Ip (Lp )LOF`0`@  $+n,P@ OzC`0`@  *A`@ CR7tf,P@ 2zCh0 J@ B F`@ (7th J@ t.bv]h:M\[KPItF,x)Ƃ|9d}X]t.bv]h:M\[KPItF,x)Ƃ|d,Fb\,ZL H:u\[BLYLRDp1)-I].b\eHSڈ.idŗ"X0,H|LXݥt.bv]hHMR :MRJ8KXRdXNz,+ePT. H@ Z H@ rS|RD\SH@ :\[Bmx)Ƃ|b\RK\sH@ :P[:u\[Bmx)Ƃ|b\RK@Dvnu\jXNtP@ BBԅrS|RDp1XIt.6nvXhJ\rO@Dvnu\łXQ+uP@ ԅrS|RDp1XIt.J@ ZbHJ5ۺB( L.ZY*W%#YLvDhP@ O@EIPJ:$bEyI*P$bEYTbPJ@Yh:U *Y:-RM\b TDL J@SK}B H@)4dEb Ӛ@S[dE*PELd8OPαX9(z%RHdtP@Ht@Zt$TdA"D bEOIu[J\ R2(@ T,RZ@N*-OBO\HtXȒO%PĚEHtv̑H[J\*MZPJ4bձKHJݡhƅrSK}hdW,;P@ O@E(zСhPHutؙLCAF|T-@>+䃞DhHLAF|T-@>+䃞DhPjO-t>@/)5@[P:-s[||Pz:TZ| Jxt:ꄠʰE(L>PJ@Y >PJ@YO@, x   hTUl DtU*EY T [DTN ИI"B 5K LI@EC @HZ| J @Ø4PJ\B H@@E,HI$ D$ Y *@dДPC:uRE J\H( TDL}I[$ ) TdAR<ѐB h*PJ r@t"XIEZ@ňh, AU J@ *-*Λe@ED)5D[P:-r J@ I@EZՙ@G[dE*B H@.dLN*DO bH rI@EX$ADeVXePOZDWTA I@EI@H@ d|T*L4="4S8t * HpB H@ l D*(IudFdqt@EI4IIIi"B H@.I}EX b@TDzr ņIIM@YD@E :U*@IEI@EJUZ@E bATdI[$ šhJ zHh$}D4̙DœA "@Xt@t J@  D|\TI@EX rH @$@8@ԈHt@؉ B@ӈ@TMʜI B H@ dEIAxHtIX, zbxJ@  bH rA*֚HttS \СhUL - *Ř TDFdttI4=ND,T(J@ X ZDH @t *SXU J@ H ʊE "@OTM@LT*Obh *L z;|TJE+PJ䢂MT\STTD @A |O@B H@L:uRIH( | h™< L b4,S:mXE9,PTd.,N Sl|Dh@EL 2EdEJ;EUMH @dL.,E bE`  YD y,ΑPɬŲS9lEZNP̊ܤD:- YLDP@ *E) )Pt5 .Y$d,ZdSZlPTRZvNh@ȸlEHD,ұK GtYLvDhc)y H$-O:Ɉ@Ӊ@T  @ EdE :Ɉ@X$Ir| rHh@ J|̈p hI "Ǽd h@ ZD@l E @Ù5I@E4L@GyZDP  : OPPSYu%P:=NRP BBլR@DBH)`@ @ )(%NJ@' P %kvhR@ T*Od :@ I @yZD$}T*L4C mB@ IIH( |F H:Ɉ@4M@AɄ@ԉÚ,CA,B@ h$}D@GdIrR@ T4MDҹ@4MS @4 Fd  @ @ 4 9 dCbTtOI@E) ֤h@@  Ύb-R9bB H@ Z@Ȉ:-L-pB h5L 2@O+XIEZ@ňh,ĢOZDWQ@AͨTD"$ʰE(L@, 9 QD@(IeTlOT *Ե J@PB hL *Ȭ t}S*DIx|XԡhJ YD hMr$}A "E).PJ r*-*A I@E-R9i̙GPT*DA "U BUl J\id@l@ňDdDp (Lp 8|@cdL:eEvEhGM:MEEHtv̑H[J\ L D}I(E(PH@ T,RZvNhEtR1ؠ 9\(vhE@jDOH-.Jh@ H rUBF|d8B H@ B hH@ :U *:EiLpB hH@.TS*< B H\xT,x"t|% Jh rHEI4FdttA(B H@@BH( \ġhPdr J\IE b@TDI YD *@OJ@Odɡ;B H\8@Ԉd$}T *E,(hH@ \EhP%K D-T *E,(:RJҙDP5K D-T *) AL JbL@ *A "H$-O[PHĔPJ 8tI  @t@E@ԈJN(l@d|EX ") AL JAX̚HD,F|T*@ :U *ِ<` NFX]JDXqt:A]` PAX]h%$ )LOLXOh5e IM:|PR: O P9 f[Յ L|Pd+PE, iLOYut iL$Ir;MX͡h;X͡hbZ5Db[dHBd,,PA Xҡhҙhb\.cAk\rPELdLM(̊ґB YD J-:M[YAԚdZd|ND-D Y$X"IExD-"̨ xB H@ ,TbxJ- m@Y[dE*@Hy b@l@ELOb O:-J@ H Z ŦEXyO *E,J@ @Xd@TL"@.TT,@(䔐T4MLY\šhXɡhE@ EӑH-Q YDP YPD(LR(ܖlO5-R)h@ *و͗J١hű#P  Z}I *LEB  x Y$TWx tX|bX.B hKA:-Ez::R:EN;m|1rx:t[*XtӦ*( P@ x=tbť\.ӚA,PXdA, IMx -R9B hr(-t̡hPb rH O@E)8@ Lh @-R9yԡhT*TSHu\ءhPdrȴTD RZ4ETTA, rH[TP@ @XdpB h䚤P8|I@E-R9iy} b@ PJ\ @,LO rH8 ә@1 @ j E(Z| J-ĚIT HB J ŦE@P@ NHŞ@:Xɡh\zA[d\zAUd9= z(݌PXPHH|SZeEJ$EGH|Pű#P@ Hؤ J-YLvDhP@  Z}I *EZNb( XzL*EUP\x:PJ\II)L L H:EiL@)9iҔP@ H[T@X$IrB L X7L J@PB hL LL8@ԈI$|@LOlI r B H@ @A鬪 *UZ -E,I :H[T̔PTTF A$-P8|L ʊH!-@Thp (Lp  SX:-vEh@D-EtA'%nvn MӺ-E5(vǡhHj4Y}@T4̡hH@+TDN(l@d|WJJJ dX D d\ˡhPH@.ZU rHD @OJJ *M@@Dd|T(B H@LP4T *Z zHhH@i @U 1%AdE, JNTTD T *I @I̡hH@˚ 4 B4@E OI `B H@I@E,RD $bJDHјB H@N$jL4WJ r\ԡhPW,W[H:E@L @ΈJ@A ATdS8 :M@,@ZUrPW9L ,@S@TCȬNNI":A* ZjZjZjZjZjZjZjZjZjZjZjZjP y,ΙPJAY$A4S bҔPPH,i̦ E,9,ΡhJ zZ TDA z Z.PJr bTO*R1 d( JI5- DtU(B H@ :- @@tI r@OLEhJ IuTDDd :ATdF H O\EhJ TDDd :ATdI8A,@'RIH%* JZjZjZjZjZjZjZjZjZjZjZjZjZjZjP hAt`<6cX>hDWtxƂ|` tI6`0`0X0h mf=` 8z Mz H,PYzTL1-Xh)E% HO[df=` Kb#,P׺VzD HO8 ә4TZzLzEbX.PJ\:EiLtáhPbB H@l@ELOID-<( |̙D \hPdr J\D @4MN( XIEZRB H@.TDLY X rHZ|J@ @t@,<@E E.PJ rU BH b zH:AXB H@ 4 TD",DEpB h*PJ r *Hyu} H(䔂VXeJ@Z| DtPI E, rH:AZB H@.4I BHi@҈( \̡hXɡh i Ad;PI "4,SLI؞ Lh PU"vH[J\ L\ JK݊5N A,Y*̲X@]ZtZ}I5)-PE[X$]* H(%LW$MӸ-Z)-AH vRhZ@N,;P h@ )LdEEjLM:eRE 2P@EZtdIEx,.Y$,EhR@ < bO@E(HPzLA PXE*K ,ҡcB K DZ}I *E4MI@EY5CL@S鬪 *@OhR<EdAL\ShP rИIB h*PJ r@ƈx@ E@LXIEIEPR< @X$X @* HJ@ Y*B H@.I}EXx *H(HXҙSA@ IuTDLZAH*A "IEPA$It itI iTdSPO XLkeS\dWHv]H-Q $@1$Hb+tP@ P mS\bHuR]Z@t͑P,B< H@ :Y-Ld5EtLtv]Hb%t2ECP@ E)\ `  AtYLSP tLNjO[J\PݔH@ IELt:uY-XLdKJ@ ,őPy,ΑP:Y-XL5jUضh.tPJ-\+h-EsB( YLvDhbhű#R@ TtGHPKdRB jZjZjZjZjZjZjZjZjZjZjZjZjJ@Yt:A+\:r< |9XP9t xۛbE\.c,]PjZjZjZjZjZjZjZjZjZjZjh™< L@H% *WL bP[HuR*k$\Kܨ(5XDNkJݡhU@ёHb+tP@ IE@DDžS\YuXF X-0P,RZ@NtHb%t1( ,@ŘDP mBU.լFY,E#`,JG%d.QJ@ @ZUrRMH@ ETIE-.XEtX(5,`,JGJ \CԍH YD J-P[HuR*k$\Kܨ(5XDNkJ]hZ@Nk,;P@ O@EZhܒS[Ԙߨ|0؎ X`c;PXf`zLA,g:MA,6`0HJhLE,@ZW,TD N(l@|JuATA" @ LI JLE:-@,TF yO PIM@EA$-I8 bQD@SD9 @ʼn"@E OH \ġhPf#NTlORII LIEPMØdҘ@X%zX1L͞2EdAL.PJr@ jO@EHIt@E E yLP )PiLy}NTl(z@EJB H@T@-TtTTd"$-@At\šhR@ < bO@EɜclDEeNIņO PdX0 dA)Ly}=EOEuNIŜecR0@  Z}I *(|z̘D\ Z< @4 䚌I јB H@ X8U bH rE zH:A*(@ Ht\ءhPNEŒ 2HO *YS8Y5@,  J@ H$-Oy @jEXѐB H@ @4@ҙI@EYu @DhJ X,EbI@EYu @(5@DJ@H @҈@ΈجE (}@SXd@TA @I@E 2HH*T,WB hH@hZA FvnvnE+ 6nvdvPYH-ەfvnvnب ͂Զ6nvnwKMh[ln6v3hZA[FfjvlE+ KMn[bVf7v;PYH-ݚE+ b۵hd4v2hZA6ں6b2VnwKMF[ Ff`1&hE+ bۍZA6ں6b2F`1'KMF[;F&l6nب ͂Դhdb2F;P h@@!*N ΘTԘF|I :ODuI,IZL\ShPxBAuX0hDıK:MN(85NRcH*v)hɄ$`dMLPhhJUZ@E$E [dKIYڞDZA"I\,[hXTFY\DJ,LFY\XDt\R|K :MRJ YĶJ,L.ȜUl.XJt;P *(:VdL:\[$rShXÛt`cX>t.bv]hJUZ@E }O[d[dXKeڶԅrOLX0\,JELX]t.bv]hJUZ@EY$A* AܺJTIt9-HuEZE ҕ `6cv>hJUZ@EX -RJ,:u\[BE8ЗX0,*EZ` Hb\,]h rT%OXElU[dTdEBIZPTPP{,85T8uJDv)h{,85T8ujEv)h{,X$] %E܊5XH|ҹ=k,nج XHt] %E)܌D{,k$(FjME ݌P{,k(Һ=O5jME9݊5XۨM:R=k,(ǛEI[dE*R hXR(h X$I *Ա@@ @ 9`@ @ SHu@؈Lh@ @ P yDF=@yidFb\RK :MRJҙD,[dK:\[KPtD,x)Ƃ|dFH-X]t.bvݡhP@ O@EZ}NUlL Y*(Lp 8|@O3l -vءhDtSXH|-SJ@ H-J@ dL.H|ͺ@dO-Yk,-F̡ؔhYD 2LŲTkČG H@ IE(p Z}X)D\[H ՕAY9|DtF:tI rE,PJ\I@Et@LYT @ *@Y@`B J DtWÿII@י bATdE+J@@F ) @E,R9:-O$@GIpB h䚂P*-PJ rTNTlTHt@d|S)l\̡hPTT@-@Ed|T * J\DitZ9,@SBD "@OJ@ H ILAFؔ|F, 0B H@T*ΔW,C,EpB h䢰EZN7e J\jdyh$}W9L |A4uT(B H@;|IJ5 J@dB H@$c@-TLTDHVXe$}T1M̘OpB h%L :PJ\II)LLL8Z TDR @ƈJ@yR ʒȄD IM QD@ X "@Dd|TzR2E @S4 J@I@EA ʊOp h™< L@ }N E؄ L }N O+E؈ ,E-OȔX }2vhȔ eRLĞ[&Oו:MAUR2؊ GthR@ 4WDIJM:]A+R@ TtPH,PY[dRP (Lp L h@[d=-;PI "E,-z[dXPJM 2O+E؈ ,E-OȌXKeбK}̹ŨPK\[dOؒ tWUv)hF PEYLvDhR@ TtIJM:]A+Xɡh$@I)5@Kd"z ZtZ$TBvhPtH Rb,K)vFhPI:-O -PHtP@ƉtIEΕtLJI:H|d%cPZE Z"DMvhYPDtR hϊL\h,EcP@t@-` IEh@EL KSPGtXEt*DMhK J-iH|\JJ@ ,;P@tKe YD y,ΑPϊLIMO*d,KLլ.Lňk(}Fd8 -ItPϊL\b,dSUԊɌzv)hJ-iH|\JHΡh8e2LŲTkČBh%ґP@IE(p LJI:Tt܊JX]hJ@ kdXtŨM9%kv)'nH@ ͛XEH@t\[tEh|Sk(}Fh@NLڊܦFH-X]D  YD y,ΑP2LڈO-ZFye5HZ t\[Hj45WH@]:e`h YD JU%BRh 8eJU%BR LլALڈO-ZFye5H\Ke[85k$XhL8 bKH O5LڊܦFH-X]DYLDPTB< H@ JI:Tt܊JX]hLkdXtŨM`KJ@ O5LڈO-ZFye5H@ YDPTSFt\[tEh|Sk(}F dL.͊ČLTP@ HrELHYu\5Ʉ5ei Ht@d|T *TF H;|TJ,R(:H \ġhP rИIB h*PJrI@ED@Ui@҈̘OpB h%L D-S8 $}T*ΔT(X"B H@l@ňL 2H;|TJuYPPL zH9O:- Ju@YDGttO 2HhJ ) \EhP"IJ b *HH*ΔLt@i "O  @O@ZtJu\YhP*MT\T *H, 2H  ) @E,RhJ |@TT*Y@TDE+J@ A<@Gh| TDHTPJ r *HIRD OI@ED@LYT ʒOAu@IDt-SJ@ $RYTtF(}]t1-jd%(MKeK%`ؤ :-(݆ۥvhYT eRLdL.:-ܨ YD :-ܨG(MKeK)-PEʬ[M]dLYPeP h@RIi؉bE*̗*(Lp  SXx-HdPI"LYL@D|zC|XE[dE *zEZtt|W$L\ |E9d}@]-\ |(%V]8|FA- YD y,ΑP[H|5[Y$NܤD5X-Oj4 ZUsYLvDh[H|5HdEkPE-,F̸-,F؞ Hd(֙dKE+|CdNWYLvDhP@ O@EY"EhZ}PD[KHYu\K-(%X]9tyLOEXšhHERE LE"H   8e2NYl[ H,OL NڈO-O,5dXhHPXEJt*)P8e2NYl[8RP@T,OLEX4Jt*)P@ETOL NښA,̠Yr2wc H,J*DMhK4E"VIhZ}X)KE\[tEEr2wc,J*қVEL\ tEEHѠ@ T,OL2N[$Z=5H,R8ґP,@dL.H|z,Ek$H@T,R< H@ETBEMX4Jt*Rh@%k-HMA*vhZ}X)DSEcR4 YLDP@ *@KuZ@4MAeHHrELH@ լ.i bIXŗH@ :ŒRutM%X4H@؊ GthR@ TtO9DKXɡhDtR;O*m ,=H|P:V O*z,@XP@t܊5E bLEI,(@ \ tElEљD9XZyt(@ T,O Pv)hPt\[tEh|Sk(}FbIXŗLEP"L\ tElE Exy,(@ A"N[$X$@]ZtHtXQ$ YD y,ΑPEK݊5E bEѠ  YD y,ΑPJU*BR"بZD(%"P)l@LYTB H@l@ň |TIDdOI@E`B H@ LYT ʒODuTI@Et@LYTB H@ Ú @h|.PJr *H)O ZE,F, J@ @ƈ̘OH*ΔT*XԔPVXePJrI@ERDTTTI@E@E4pB hL D$T*X@H ILAFؔ|WE JZjZjZjZjZjZjZjZjZjZjZjZjZh@B<  8|@cdLdR@ +cNJADvݑH-Q@fLxPES,RRE-Q@SX3H̻t\KuSlα[J\ NJٙdKv3H-Q@͗(Lp  SX-;PO SX-v1hŎJ-US:eE+UP `IYT9͊k zEdL Œdر4CBE.-v)hPVŒLP h@RIYRbE(Lp  SX-;PI "m --;PO L,;PPEtjܘE5C|,)-`dEEZFx,R(KZCU$.-[H|5C|,IME,bJ\,HeͱK[dPEEGJEр GthP@ O@E4CPE[dRP y,ΙP:V E@D9 "EkEɂE,-=-;PO S-C-;PELd:V E9MEE *ZE B 9%kvhϊLXƢv)hPdL.-@]- KБP,.H|Ћ-8e`d8 J$SUPI,\(JvhP@t(݌ E YD y,ΑP z,@tvEhKSPGdL.H|ͺZ@XԑP@T,R<H@ YS\ tEX(-]P@zѐ H *@t(ݤ-FhJ@ @XɡhJ@ ,@YƢh,KL\ tEEH@t(ݪZFh@T,B< HPt\[tEh|Sk(}F(e8 z,ɗ*HϊL\b,d͛ZEXUPAtJ@ ,@Z}X)D\[tEt+:bX9 IUBT(uh|Sk(}Fd8 bKHΡh@ETIEK݊5E bE H,IEK=Z@XԑP@T,B< HJU*BR"بZD(%"PZ}NjLښEvh@@ Z}PD]KO)A5]R2EJ JOE zSL@JR jItZ x LR3ZE B \fKdL.J|T9ܤFt@Zt`h@ HrEL IEt.J|T9ܤFtR@ O Pv)h@ؒ 2C+X@]Zt( J@ @dL.J[ͺZ@Zt H@:tTK݊5EbIѠ @Xɡh@O PDv)h@OLC+ZlT֬xݕ|7d͛XEH@ YDPTB< H@ E"JU$BR"  IUBйA5L(cP@Ρh8eKSPGKuJ[ ՕAY'nH@ ͛XE:LL؊ GthR@ TtPz͡h™< LCF|@03P@ Iy,ΑP PvhKSPG9XR40hAt(uz(MziLAcXhH-de HOlzLMk,P8 zF`0`0,PdW`PәIH|\tEE,EHA8LLZdEO-AR]"ZLAI-P[dz)ZCU$F:CU$C`cR0"(L;E8 ԅL¨ }*OH;,X$H` 8ΈStO܆E5,XhiLΉYdGESvL: XhLzd:B\t(܄kdXhLPԗr i :eB\SX JL\_LztvHh:B\H|8 LHFtvšh\ tEZ8]P@T,IȜ΋9uEI=+"IM͉jz)|O5X|vChHdJ-US e$9-ڱKDD8ܠG }\}L̺EʬOOGL̸蔺1bб#DD9ܤFt]t2؈ dΈD%-HHd|RCb)-O*JO1$,;P h@ yO RI8H|H5H|ɂb"d"fЗ"(Lp 8|@JE̱l -1Ԉ2Ԉ3 L z9,EZ,KӈÅEXYt̔;P |CZ HŜ Iɢӱ;@M)E%VXeI$KTULv$h@ yO RIC3@B< LyBD`:eTER0ئ:uvEhHܦFH-]e؞ :uA]E5(vǡhu' }NcTER0؞:K:uvEhu'NcTIXԗλWB  t}IIMM8-D,WDDd$-S)lR@  @ LYTZLP LP(D=NuBH,ԱK:MN(D `dҗLPYbLP(=u'$-XZv)hɄurX0DRؒ E'dNAybX'yDO PxB$-NtX'[DTRؒ E'Nyb:F:tIrLP)=uJ'u*HZ}I*LP:=Ru'(X:ERJұK:MN(lX'ɂMLP)<:,RDؒ E': NOcH: ROؒ E'*}NzbNDdORDؒ E'HtNybAu*HHt( vhɄZX',Z ) \EhP+BX:EO*LPT,H v)hɄD-d5P%BXIDRؒ E%"SjLv)hɄD.dOKJLD(%HLPTV,AYv)hɄhdOIuЗrLPTX:EYv)hɄfd9L̗rLPTVAdRؒ E%j#ɢClvhɄldO9tO*LPT,-KJLF(6C8}vhɄD*d՗LPT,OKYTvDhOdBUR1@ OLf36cvh@ұ3 JU6BR@ OL:DcbJ@ )vFh@ J@  @ jZ $}LA v hB Z ͡h@ %TJƂ\ RR h@bCh@ %TBc.Jv)hB Z 8@RIp@ Iиi,%E bJOѠ @Xɡh@BDtL:PбJ@ Z}X)D\[t+:bX9廂NZl*v)h@O PԤv)h@CgdH@ ,v)h@E  ,@Xɡh@BDtL:PбJ@ Z}PD$KJ@ Z}X)D\[t+:bX9廂NZl*v)h@P0X@]ZdbH E}P(8tP@]- IR֡h \ JT9ܤFt@-\ JT(ݪIeH  . %RHԅE bCh-IH L@D8tP蔺2Z@8tPEʬOP h@RIi8PUPELd:Vձ+@DJE(WZIdF, ZzZvšhLYL@DW:LAZ-EdKخ D@Et\ ZŚ4S8ơh@@OXɡh8](t[k|P[X](t[Xv]h8\ 9܊ɔαYLvDhű#P  Z}I*I9$[d(-PELl -vءhDtSXH|-8LEܠY5Oh@ šh@;P@ QjZjZjZjZjZjZjZjZjZjZjZjJ@YP@ (p@ Ib[d[J|@]-n IE8j4BEbRJ@ ZMU$.EܨĶvh@ tEͨ,RT@ E#P@ @2jxTƂ|\ y,ΔP@ H9OHdEXZ;P@ 8H| U$P@ YvDhB 4@-rxTrN %RR+#P@+)dD;P@Ρh8e2CJ[ }NԕN H@ IE(p L b9[d;P 2:LOZ$Eh YD y,ΑPl|LňCJ[ }NוH %RR+#` HΡh 8eH+Y5EbH@ IE\ JT9dКFZ@J=YhIME\ H=+)bDhdȄءhH %RR%#F|LH@ HrELH:}C mE+)bDH %RR#\JT9ܤFtv]hH+)dD;PYLDP 8ey,ΑPLЋ- %RR+#P8LP蔺2H, H8ey,ΑPs_P@$@-YUБP)$ԪDR  @jR9t HPH;v)hBZ 8@RIΡhH$OBҗHb8 HHbZ}I*` H C  @jl (Z|KJp1HddWDMZHh7-YLvDhP@ O@EZYzBh™< L@EDL9d,Z$,h@8TPPRVGM %Rt|%DHtԱHTd( %R9t+ÙdK JEAEP@D(p H@8tPϚFZ@YUH@T,B< H8TPCJ[:- }PL\ 8TPϚFZ@dEEP J@Ҩt+K%)LԑP J@Ҩt+K%t0 J@ @Ή|*EI:t,TbPE넞j45LŅW9LO*HMͺuX]GeiL8PHu͸uC8R؂ d) EyuIDXEZm,P:|A[dDUtTm;|\YСhű#P  Z}I *DtPEL@DJEHs:|A[dyLNHe: HMJ -zRYؒ 2O ) EP@ IE8H|\9tU[I%X3Z$B5DƲRݤh@ YvDhP@  Z}I *ZE C% RNP X$@JRjZN @O@OZ}PC% @tP h@ yO RIԔ0tP@˄ZCU$.J|XL*UB`,bvh@E#,;P h@ yO RI*UL¦ElR y,ΙPTlLšGR؜؄ L h@tzE[d;PO R9mjbMidZA8eHtbML bL;PIGM8Mt9uEI=;PYdGEP(}Eؤ ldL.*M Č.H|&Oѕ YD 29|E,.9-]PK\XZ$AH @(u9 H *EPD(u9 z,Aե\tE }1+3J@ ,@ (-U(E9 vhj̊IE)]EPD(u9 z,AեPbML\(4Sh-X)uZL\ 4Sh-@-\ tE }1+3J@ @Z͕f|v]h8֘\ [d1ZmEIE9$}ETC;P9[dIʞ5P @ ETB< H@XtA}J@ @I4PJ%\,[d[&Rݡh@ETDPE}.-vh89'}Hؠ XE IEv)hX\_XSؠ XE BEdRf|R]ؒ 2SX -@0 \ j@ј@ T,S9DXE8\,[d1bEk,`KZCU$LH*OXEt }2+3`bTK[d[&ە8M|LPYD1- m]9 2LI rET, (Lp Z}B dK,%"%R2؊ Z}OLIsX2Gh,K,dPKYLJD(cd,K,E.*A&b,R4؊ Gt ZtUtv)h@ YvDhZ}I*)PTdY,9},լR@ dLNEȔ bHp@ EPZ@RLIrNjP圊)Y}DZtRiն"@E|LPY鬆9]I9[dIJ@ ZCU$LH*jL\,}̹ŨPK\}LŨPKP@ I-Z(J-ER@ S養ĚPEYбK I-ψ*XU$P@ YDP@ Tυ*YLvDhP@  Z}I*RI y,ΚPΘE YMCU$v)h9DXEŒOȌ eR\,(Rئ H-ω*A9:dE"`,bEdRf|R]ئ H-ψ*IH*E-X0łLŤ2K,;P h@ )L *Yz)h™< LCF|@1.1} zPEyuE,Uڬ`,c.IMӱ,;P h@ yO RIH+Xɡh r4,C,,{|R hP TtWPXYuzh@ Z}D(DNc.լ.9}v)xL\_NxtOEtvhP@!d ~( J@Zt ZjZjZjZjZh TtWHMt=R@ X[T@JEtLXN@@!@TtWHM@ӈL@