.."   ...t              ..DW]Ak_  P ,..   ..DW]Ak_  P!,..   ..DW]Ak_  P",..   ..DW]Ak_  P#,..   ..DW]Ak_ !Ss,..   &L.j8.   !Qr/G.   'H.Gi.s|E P /n/   'H.Gi.s|E P!/n/   'H.Gi.s|E P"/n/   'H.Gi.s|E P#/n/   'H.Gi.s|E P$/n/   'H.Gi.s|E P%/n/   'H.Gi.s|E P&/n/   'H.Gi.s|E!W./n/   :>-&X_   !Ri,k0   bm2..V{T P ,K.   bm2..V{T P!,K.   bm2..V{T P",K.   bm2..V{T P#,K.   ...t              bm2..V{T P$,K.   bm2..V{T!Va,K.   cK.X    P /,O   cK.X    P!/,O   cK.X    P"/,O   cK.X    P#/,O   cK.X    P$/,O   cK.X    P%/,O   cK.X    P&/,O   cK.X    P'/,O   cK.X    P(/,O   cK.X   !Tt/,O   B.mr.^9 !T_,*0   .>.4     !R=/
5   FR\vt_   P ,x.   FR\vt_   P!,x.   FR\vt_   P",x.   FR\vt_   P#,x.   FR\vt_  !S+,x.   F[-cK.v]I\P ,pO   F[-cK.v]I]P.,pO   o;CCK.|_ P /w.   o;CCK.|_!Uv/w.   j|.Vp     P ,;4   j|.Vp    !P3,;4   RyTV<R._!Q.l.H   F.l{A*{S P ,..   F.l{A*{S!Ww,..   2<.3{.U#wyQ
,i.   2m-U0     P ,I'   2m-U0     P!,I'   2m-U0     P",I'   2m-U0     P#,I'   2m-U0     P$,I'   2m-U0     P%,I'   2m-U0     P&,I'   2m-U0    !T,I'   g\LVt_    P /.W   g\LVt_    P!/.W   g\LVt_    P"/.W   g\LVt_   !RN/.W   g\LVt     P /.W   g\LVt     P!/.W   g\LVt    !Sl/.W   g\LVt_    P /.W   g\LVt_    P!/.W   g\LVt_    P"/.W   g\LVt_   !Q!/.W   g\LVu    !V#/.W   dx.b{DG   P /.J   dx.b{DG   P!/.J   dx.b{DG  !Q^/.J   >             o<.6p !R\l+*   ?H.7SreP !U$,v(   ?H.7Ssy  !T+lup   Oi.p      P /op   Oi.p     !T8/op   >             ..EVk.1Q\/.   'LAl      0 /..   'LAl      0!/..   'LAl      0"/..   'LAl      0#/..   'LAl     !3./..   bX.       0 /pQ   bX.       0!/pQ   bX.       0"/pQ   bX.       0#/pQ   bX.       0$/pQ   bX.      !7./pQ   bh.$      P /pQ   bh.$     !R./pQ   .<.V.O|   P /.)   .<.V.O|   P!/.)   .<.V.O|   P"/.)   .<.V.O|  !P]/.)   :k.       @ /.)   :k.       @!/.)   :k.      !C4/.)   bh.7MIRi_!Q-l9L   2iE       _ lDn   2iE       _!lDn   2iE       _"lDn   2iE       _#lDn   2iE       _$lDn   2iE       _%lDn   2iE       _&lDn   2iE       _'lDn   2iE       _(lDn   2iE       _)lDn   2iE       _*lDn   2iE       _+lDn   2iE      !_ lDn   ?I.X|.6!Q.lJq   6|       !QKot/   ?H.7@    !S.lR.   n\AVKE.<.(  lu/   n\AVKE.<.( !lu/   n\AVKE.<.)'.lu/                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               .GL  SNAP-SHOT
.GL  IN-STRUC-TION FOL-LOWS
.GL  FUR-THER COM-PLETES ALLO-CA-TION
.GL  VER-SION RE-STORES RE-AC-TI-VATE PROCES-SORS PROCES-SES
.GL IN-COR-PO-RAT-ING FRE-QUENT-LY AP-PEAR-ANCE
.GL  TELE-TYPE FIN-ISHED
.GL  AB-SO-LUTE-LY
.GL  RE-START-ING PO-SITION MICRO-PROCES-SOR MAG-NETIC
.GL IM-MED-IATE-LY FOL-LOW-ING DOUBT-FUL DIS-PLAYED
.GL DEC-RE-MENT
.PARAGRAPH SPACING 0
.PARAGRAPH INDENTATION 0
.CE
^UM1 COLD START PROCEDURE^L
.SP 4
       /THE FOLLOWING STEPS DESCRIBE THE LOADING PROCEDURE FOR 
ABSOLUTELY BARE HARDWARE.
/THESE STEPS ARE WRITTEN WITH THE ASSUMPTION THAT THE HARDWARE IS
FUNCTIONAL.
/IF THEY EVER HAVE TO BE TAKEN IN ENTIRETY, THEN THIS ASSUMPTION IS
DOUBTFUL.
/NEVERTHELESS, FOR THE SAKE OF DOCUMENTATION THEY ARE WRITTEN DOWN
HERE.
/OF COURSE THEY ARE NOT UNIQUE; THERE ARE MANY OTHER WAYS TO GET
TO THE SAME POINT.  /THESE STEPS HAVE BEEN CHECKED OUT, HOWEVER, AND
ARE "GUARANTEED" TO WORK.
.SP
/ACCOMPANYING THIS WRITEUP IS A KIT OF PAPER AND MAGNETIC
TAPES TO BE USED IN THE PROCEDURE.
/THIS MATERIAL MUST BE KEPT TOGETHER.
/EACH ITEM IS THE KIT IS NUMBERED.  /FOR EXAMPLE, THIS WRITEUP
IS ITSELF #1.  /THE OTHER ITEMS ARE REFERRED TO BELOW IN SEQUENCE.
.SP 4
.RM 12
.UN 12
/I.  ^ULOAD AND INITIALIZE THE HP2100A^L
.SP
.UN 9
1.  /LOAD ^CHP BASIC BINARY LOADER (^CBBL) INTO PROTECTED MEMORY.
.SP
.UN 6
/PRESS ^CHALT.
.UN 6
/PRESS ^UEXTERNAL, INTERNAL PRESET^L.
.UN 6
/PRESS ^ULOADER ENABLE^L.
.UN 6
/PRESS /M.
.UN 6
/SET ADDRESS 17700/B IN DISPLAY REGISTER.
.UN 6
/PRESS /M DATA.  /THE CONTENTS OF 17700 WILL BE DISPLAYED.
.SP
.RM 0,6
[/BY PRESSING EITHER /M ^CINCREMENT OR /M ^CDECREMENT, THE CONTENTS
OF MEMORY IN FOLLOWING OR PRECEDING LOCATIONS WILL BE DISPLAYED.
/BY CHANGING THE DISPLAY REGISTER BEFORE GOING TO THE NEXT LOCATION,
THE CONTENTS OF MEMORY CAN BE ALTERED.
/THE ^CBBL IS AS FOLLOWS:]
.SP
.RM 12
17700^/  107700

17701^/  063770

17702^/  106501

17703^/  004010

17704^/  002400

17705^/  006020

17706^/  063771

17707^/  073736

17710^/  006401

17711^/  067773

17712^/  006006

17713^/  027717

17714^/  107700

17715^/  102077

17716^/  027700

17717^/  017762

17720^/  002003

17721^/  027712

17722^/  003104

17723^/  073774

17724^/  017762

17725^/  017753

17726^/  070001

17727^/  073775

17730^/  063775

17731^/  043772

17732^/  002040

17733^/  027751

17734^/  017753

17735^/  044000

17736^/  000000

17737^/  002101

17740^/  102000

17741^/  037775

17742^/  037774

17743^/  027730

17744^/  017753

17745^/  054000

17746^/  027711

17747^/  102011

17750^/  027700

17751^/  102055

17752^/  027700

17753^/  000000

17754^/  017762

17755^/  001727

17756^/  073776

17757^/  017762

17760^/  033776

17761^/  127753

17762^/  000000

17763^/  103716  (^INOT 103713)

17764^/  102316  (^INOT 102313)

17765^/  027764

17766^/  102516  (^INOT 102513)

17767^/  127762

17770^/  173775

17771^/  153775

17772^/  160100

17773^/  177765

17774^/  000000

17775^/  000000

17776^/  000000
.EM 12,6
.SP 2
.UN 9
2.  /LOAD THE ^CHP MAG TAPE LOADER.
.SP
.UN 6
/PRESS ^CHALT.
.UN 6
/MAKE SURE ^CLOADER ^CENABLE IS STILL ON.
.UN 6
/PRESS ^UEXTERNAL, INTERNAL PRESET.^L
.UN 6
/PRESS /S AND CLEAR DISPLAY REGISTER.
.UN 6
/PRESS /P.
.UN 6
/SET STARTING ADDRESS 17700/B IN DISPLAY REGISTER.
.UN 6
/PLACE SWITCH INSIDE ^CHP TELETYPE TO ^CHP POSITION.
.UN 6
/PLACE "^CHP /MAG /TAPE /LOADER" PAPER TAPE (ITEM #2 IN STARTUP KIT)
IN TELETYPE READER.
.UN 6
/SET READER TO ^CRUN POSITION.
.UN 6
/PRESS ^CRUN ON ^CHP.  /TAPE SHOULD START READING AND STOP BEFORE
RUNNING OUT OF TAPE AT THE END.  102077/B SHOULD BE IN DISPLAY
REGISTER AT THIS TIME.
.UN 6
/RETURN SWITCH INSIDE ^CHP TELETYPE TO 500 POSITION.
.SP 2
.UN 9
3.  /LOAD THE ^CHP RESIDENT PROGRAM.
.SP
.UN 6
/PRESS ^CHALT.
.UN 6
/PRESS ^UEXTERNAL, INTERNAL PRESET^L.
.UN 6
/PRESS /P.
.UN 6
/SET STARTING ADDRESS 17200/B IN DISPLAY REGISTER.
.UN 6
/MOUNT "^CHP /RESIDENT" TAPE (ITEM #3) ON MAG TAPE UNIT.
.UN 6
/PRESS ^CLOAD^/^CUNLOAD AND ^CONLINE ON TAPE UNIT.
.UN 6
/MAKE SURE ^CEXTEND LIGHT ON ^CHP IS OFF.
.UN 6
/PRESS ^CRUN ON ^CHP.  /TAPE SHOULD QUICKLY READ, REWIND AND UNLOAD.
^CHP SHOULD BE RUNNING RESIDENT AT THIS TIME.
.SP 2
.UN 9
4.  /TO RESTART THE ^CHP RESIDENT (IF IT BECOMES NECESSARY):
.SP
.UN 6
/PRESS ^CHALT.
.UN 6
/PRESS ^UEXTERNAL, INTERNAL PRESET^L.
.UN 6
/PRESS /P.
.UN 6
/SET STARTING ADDRESS 000200/B IN DISPLAY REGISTER.
.UN 6
/PRESS ^CRUN.
.EJ
.UN 12
^UII.  INSTALL MAINTENANCE AND CONTROL SOFTWARE^L.
.SP
.UN 9
1.  /LOAD AN INITIAL PROGRAM LOADER (^CIPL) INTO ^CCTP.
.SP
.UN 6
/MAKE SURE ^CCHIO HAS AN ^CMNODT BOARD IN ITS ^CROM SLOT /B4.
/IF NECESSARY, MOVE ^CMNODT BOARD FROM /B4 OF ^CMSCH.
.UN 6
/GROUND POINTS /A6-44 (STOP ON ^CROM PARITY) AND /A6-83 (EXTENDED
SCRATCHPADS) ON ^CCHIO.
.UN 6
/CONNECT A TELETYPE TO ^CCHIO LOCAL TELETYPE BOARD.  /REMOVE ANY
OTHER DEVICE WHICH MAY BE CONNECTED TO THE /D/B-35 PLUG ON THE SAME
BOARD.  /SET LOCAL TERMINAL BIT RATE TO 110 BY PLACING SWITCH
IN EXTREME LOW POSITION.
.UN 6
/PLACE MEMORY SWITCH ON /A4 INTO "LOCAL CORE ONLY" POSITION (CENTER).
.UN 6
^CZAP ENTIRE SYSTEM AND FORCE ^CCHIO INTO ^CMNODT.
(/GROUND /B4 PIN 2 MOMENTARILY.)
.UN 6
/PLACE MYLAR TAPE LABELED "/M1 ^CCTP ^CBOOTSTRAP" (#4) INTO OPTICAL
PAPER TAPE READER AND TURN READER FULL ON (SWITCH FULL UP).
.UN 6
/MOUNT MAGNETIC TAPE "^CIPL ^CDUMP -- ^CCTP ^CDDT" (#5) ON MAG TAPE
UNIT.
.UN 6
/INITIATE SELF-FILL SEQUENCE BY TYPING "2325/G" ON THE ^CCTP TELETYPE.
/MYLAR TAPE SHOULD READ IN AND STOP AT END OF TAPE.  /MAG TAPE SHOULD
IMMEDIATELY START READING IN AND STOP AS THE ^CCTP TELETYPE TYPES
"^CDDT".  /AT THIS POINT A STAND- ALONE ^CDDT IS LOADED INTO THE
LOCAL CORE OF THE ^CCTP.
/ALSO IN THIS CORELOAD IS A COPY OF /M/T (MEMORY TEST), WHICH CAN BE
USED TO CHECK OUT CENTRAL MEMORY.
.UN 6
/TURN OFF OPTICAL TAPE READER.
.SP 2
.UN 9
2.  /LOAD ^CSYSDDT AND ^CIPL INTO ^CMSCH.
.SP
.UN 6
/MOMENTARILY HALT ^CCHIO BY SELECTING IT ON THE /O-REGIS- TER DISPLAY
PANEL AND TURNING ON THE MICROPROCESSOR HALT SWITCH.
/MAKE SURE THE INSTRUCTION EXECUTING DOES NOT CONTAIN A ^CFETCH.
.UN 6
/PLACE MEMORY ACCESS SWITCH ON ^CCHIO (ON /A4) BACK TO NORMAL (FULL
LEFT).  /THEN ALLOW ^CCTP TO CONTINUE RUNNING.  /VERIFY THAT IT IS
STILL FUNCTIONAL AND THAT IT WILL ACCESS CENTRAL MEMORY (RUN /M/T
FOR A MOMENT).
.UN 6
/MODIFY ^CMT TO CLEAR CENTRAL MEMORY BY INSERTING A ^CCLA INSTRUCTION
IN PLACE OF THE ^CLDA ^CPTR INSTRUCTION NEAR THE START OF THE STORE
LOOP.  /ALSO PLACE A ^CBRU 300 INSTRUCTION AFTER THE STORE LOOP IN
PLACE OF THE FETCH LOOP.  /THEN CLEAR THE CENTRAL MEMORY.
.UN 6
/MOUNT "^CIPL ^CLIBRARY" TAPE (ITEM #6) ON TAPE UNIT.  /USE ^CIPL
ON ^CCTP TO READ IN 8/D25 CORELOAD INTO LOWER HALF
AND ^CDDE INTO UPPER HALF OF CENTRAL MEMORY AS FOLLOWS:
.SP
.UN 3
^U^-IPL;U
.UN 3
GO$GO
.SP
.UN 3
#^II^ENIT^I.
.SP
.RM 2,5
[^L/IF ^CIPL REFUSES TO ^CINIT PROPERLY, TRY A ^CZAP ON THE ^CCHIO
MULTIPLEXER.  /IF ALL ELSE FAILS, TURN OFF THE ^CCHIO AND THEN BACK ON.
/RESTART ^CCTP AS INDICATED BELOW.^U]
.EM 2,5
.SP
.UN 3
#^ID^EIRECTORY^I.
.SP
.UN 3
#^IR^EEAD^I.
.UN 3
FILENAME: ^-8D25.
.UN 3
LA: 40000000/B
.UN 3
WC: 200000/B
.UN 3
SA: 3B
.SP
.UN 3
#^IR^EEAD^I.
.UN 3
FILENAME: ^-HDDT.
.UN 3
LA: 40200000B
.UN 3
WC: 200000B
.UN 3
SA: 3B^L
.SP
.UN 6
/IF IT WAS NECESSARY TO BORROW THE ^CMSCH ^CMNODT BOARD, FOLLOW THE
NEXT FEW INSTRUCTIONS.  /OTHERWISE, SKIP DOWN TO THE LINE MARKED
"2/A" BELOW.
.SP
.UN 6
/TURN ^COFF ^CCHIO AND ^CMSCH.
.UN 6
/MOVE ^CMNODT BOARD BACK TO ^CMSCH (/B4 IN BOTH PROCESSORS).
.UN 6
/TURN ^CON BOTH PROCESSORS AND PLACE ^CMSCH INTO ^CMNODT.
.UN 6
/RESTART ^CCTP AS FOLLOWS:
.SP
.RM 12
3^/  4100004

4^/  0100004

22^/  1642

27^/  12343210

306^/  0/P

307^/  40000
.EM 1
3133^/  4

3134^/  77777777

3135^/  0

3136^/  0/P

3137^/  40000

306/P^/  0

 307/P^/  40000

540/G
.SP
.EM 11
[/THIS CAUSES ^CITP TO STROBE ^CCHIO, CAUSING IT TO JUMP FROM ITS
"1610" LOOP TO ITS "1167" LOOP.]
.SP
.UN 6
/PUT ^CMSCH INTO ^CMNODT AGAIN.
.SP
.RM 11
540/G
.SP
.EM 11
[/THIS CAUSES ^CITP TO STROBE ^CCHIO A SECOND TIME, RESTARTING ^CCTP.]
.SP
.UN 11
2/A.  ^CZAP ENTIRE SYSTEM.
.UN 6
/REMOVE GROUNDS ON PINS /A6-44 AND /A6-83 OF ^CCHIO.
.UN 6
/PRESS ^CMNODT BUTTON AND TYPE THE FOLLOWING TO ^CITP:
.RM 12
.SP
306/P^/  0

307/P^/  40000

3^/  124000

540/G
.EM 12
.SP
[/AT THIS POINT ^CITP SHOULD TYPE OUT
"8/D25".]
.SP 2
.UN 9
3.  /LOAD ^CDDE^/^CDDT INTO ^CITP AND WRITE ON DRUM.
.SP
.UN 6
/USE ^CIPL ON ^CITP TO READ ^CDDE INTO LOW HALF OF CENTRAL MEMORY.
/AS ON THE ^CCTP DO THE FOLLOWING:
.SP
.UN 3
^U^-IPL;U
.UN 3
GO$GO
.SP
.UN 3
#^II^ENIT^I.
.SP
.UN 3
#^ID^EIRECTORY^I.
.UN 3
.SP
#^IR^EEAD^I.
.UN 3
FILENAME: ^-DDTE.
.UN 3
LA: 40000000B
.UN 3
WC: 200000B
.UN 3
SA: 3B
.SP
.UN 3
#^IG^EO TO^-10001.
.SP
.UN 3
8D25^L
.SP
.UN 6
/TYPE TO ^CSYSDDT THE FOLLOWING:
.SP
.RM 12
3%^/  ^CBRU 10001

4%^/  ^CBRU 10001

%/Z

0;1

377777;2

0%*

0%$

0*#
.SP
.EM 12
.UN 6
/PRESS ^CMNODT BUTTON.
.UN 6
/TYPE TO ^CMNODT THE FOLLOWING:
.RM 12
.SP
306/P^/ 0

307/P^/ 40000

3^/ 124000

540/G
.SP
.EM 12
[/THIS CAUSES ^CDDE TO BE LOADED INTO ^CITP, SAVING 8/D25 IN CENTRAL
MEMORY AT 40000/B THROUGH 77777/B.  ^CDDE CAN NOW BE USED TO WRITE
AWAY BOTH THE UPPER HALF OF CENTRAL MEMORY (ALSO ^CDDE) ON
DRUM AS WELL AS THE SAVED 8/D25.]
.SP
.UN 6
/TO ^CDDT TYPE:
.SP
.RM 12
/Z+40306[  2/B6

/Z+40307[  204/B4
.SP
.EM 12
.UN 6
/SET BIT 22 OF SWITCH REGISTER AND ^CZAP SYSTEM.
.UN 6
/SET SWITCH REGISTER TO 17600/B.
.UN 6
/TYPE THE FOLLOWING TO ^CDDE:
.SP
.RM 12
^UR;U

FORN+1^\  STA FORNT

DDEA^\  NOP

BAD^\  200

BAD+1^\  200

NW^\  1

NR^\  0

NP^\  40

BAND^\  16

SECT^\  0

WBPN^\  40

E;U
.SP
.EM 12
[^L/THIS WRITES ^CDDE ONTO DRUM 0 SAVE AREA 3 (BANDS 16 AND 17).^U]
.SP 2
.UN 9
4.  ^L/WRITE ^CSYSDDT ONTO DRUM.^U
.SP
.UN 6
^L/CONTINUE TYPING TO ^CDDE THE FOLLOWING:^U
.RM 12
.SP
37000^\  LDX =-40000

37001^\  LDA* 37020

37002^\  STA* 37021

37003^\  BRX 37001

37004^\  BRU 300

37020^\  60100000

37021^\  60300000

37000;G
.SP
.EM 12
[^L/THIS MOVES THE SAVED COPY OF 8/D25 TO UPPER HALF OF CENTRAL
MEMORY, FROM WHERE IT WILL ALSO BE WRITTEN ON DRUM.^U]
.RM 12
.SP
BAND^\  2

SECT^\  0

E;U
.SP
.EM 12
[^L/NOW BOTH CORELOADS ARE ON DRUM.  8/D25 IS ON DRUM 0 SAVE AREA 0
(BANDS 2 AND 3).]
.SP 2
.UN 9
5.  /WRITE COPIES OF ^CDDE AND ^CSYSDDT ONTO DISK.
.SP
.UN 6
/CONTINUE TYPING TO ^CDDE:
.SP
.RM 12
^UNW^\  0

NR^\  1

BAND^\  16

SECT^\  0

RBPN^\  40

E;U

NW^\  1

NR^\  0

TSU^\  2

UNIT^\  1

MAXS^\  4
.SP
.UN 18
^L/ADDITIONALLY TURN ON SWITCH 4/B7.^U
.SP
BAND^\  7

SECT^\  0

WBPN^\  40

E;U

.SP
.UN 18
^L/REPEAT THE NEXT TWO STEPS A COUPLE OF TIMES.^U
.SP
SECT^\  0

E;U
.UN 18
.SP
^L/TURN OFF SWITCH 4/B7 AND
REPEAT LAST 5 STEPS ABOVE, EXCEPT USE DISK BAND 17.^U
.SP
.UN 12
[^L^CDDE IS NOW WRITTEN ON DISK.^U]
.SP
.EM 12
.UN 6
^L/REPEAT ALL THE STEPS ABOVE BEGINNING AT 5., USING DRUM BAND 2 AND
DISK UNIT 0.  /AT THIS POINT, 8/D25 CAN BE OBTAINED BY A ^CZAP-GO
SPECIFYING 102/B5 OR 112/B5.  ^CDDE CAN BE OBTAINED BY A ^CZAP-GO
WITH 122/B5 OR 132/B5.
.SP 2
.EJ
.UN 12
^UIII.  LOAD THE SYSTEM FROM MAG TAPE AND DO A SAVD^L.
.SP
.UN 9
1.  /LOAD THE SYSTEM FROM TAPE AND GET OPERATIONAL.
.SP
.UN 6
/ATTACH A TELETYPE TO ^CCHIO MULTIPLEXER LINE 0 (^CKDF TELETYPE).
.UN 6
/DISCONNECT ALL TERMINALS FROM ^CCHIO MULTIPLEXER WHICH MIGHT BE
TYPED ON DURING THIS PORTION OF THE PROCEDURE.  /SUCH EVENTS CAN
LEAD TO ANOMOLOUS BEHAVIOR OF THE SYSTEM.
.UN 6
/FOR THIS PORTION OF THE PROCEDURE THE SCRIPT GIVEN BELOW SHOULD
BE FOLLOWED ON THE ^CSYSDDT TELETYPE:
.SP 3
.EM 3
.NOFILL
^U8D25                  (^LFRESH^U SYSDDT)
%Z
0;1
377777;2
0<;1,;2;Z             (^LCLEAR CENTRAL MEMORY^U)

;#

0;#                   (^LVERIFY^U)
0
;#                    (^LCLEAN OUT ^CSWR^ES^U)

CPU%Z--OK.            (ZAP CPU0)
1%$                   (^LSTEP MODE^U)
1%X
0%*                   (^LSCHEDULER OFF^U)
0*#                   (CPU0)
IPL;U

GO$GO
#INIT.

#DIRECTORY.
8D25
DDTE
HDDT
ICL1

#READ.
 FILENAME: ICL1.      (^LREAD INITIAL CORE LOAD^U)
LA: 40000000B
WC: 200000B
TA: 1215B
#GO TO 10001.
8D25

.UN 3
ZAP ^LSYSTEM WITH BIT 22 SET IN SWITCH REGISTER.^U

?>>12722  2650255
3%^/  BRU 15505  BRU 10001
%Z
4100005;U             (^LSTART ^UCHIO & AMC)
$
306%[  2000000

.UN 3
^L/PRESS ^UMNODT.

3^/ 0
16G8D25               (^LSTART SCHEDULER^U)

.UN 3
^L/LOAD REAL-TIME CLOCK BIAS (CF. /PROGRAMMERS' /LOG).
/IF UNKNOWN DUE TO CLOCK BEING OFF, MAKE 0 AND DO
STEP 5 OF PART /I/V.

/Z+12[  (VALUE)
/Z+13[  (VALUE)

3314%^UR
;L(
613371^/  SLOK         (CPU ^LIS^U OK)
Z+5[  0  444B4        (^LDESIGNATE SAVE AREA 1^U)
;L+2!
0%$
1%*
;#
 D 40

;P                    (^LINITIALIZE ^UMONITOR)
613373:  BLLN D:5640  A= 1  B= 676710  X= 665572
;L+1!
1%$
;P                    (^LWRITE SYSTEM ON SAVE AREA 1^U)
613374:  BLLN D:5706  A= 40  B= 0  X= 2

.UN 3
^L/GET A FRESH COPY OF ^USYSDDT.
.UN 3
ZAP-GO ^LWITH 104/B5 IN SWITCH REGISTER.^U

8D25
3314%R
;L(
613371^/  SLOK         (CPU ^LIS^U OK)
0%$
1%*
;#

.UN 3
^L/MOUNT "^CIDL" TAPE (ITEM #7) ON MAG TAPE UNIT.^U

;P                    (^LSTARTS READING ^CIDL TAPE^U)

.RM 3
.FILL
[^L/TAPE READS IN FOR SEVERAL MINUTES.  /WHEN IT IS FINISHED, "@" IS
TYPED ON THE ^CKDF TELETYPE.]
.SP
.UN 3
^L/THE SYSTEM IS NOW IN A STATE WHERE THE FIRST SNAPSHOT SHOULD BE
TAKEN.
.SP 2
.UN 9
2.  /PERFORM THE ^CSAVD PROCEDURE ON THE SYSTEM.
.SP
.UN 6
/DO A ^CRESET ON ^CKDF TELETYPE.
.UN 6
/ON ^CSYSDDT TELETYPE HIT ^CRUBOUT AND TYPE:
.SP
.UN 3
%/Z
.UN 3
0%*
.SP
.UN 6
/CHECK PROCESS TABLE TO MAKE SURE ALL PROCESSES ARE BLOCKED.
/THERE SHOULD BE ONLY TWO: THE ^CLISTENER (^CINITIAL-PROCESS) AT 3324 AND 
^CM30-COM AT 3340 (.+14).
.SP
.UN 3
3524[  53704000
.UN 3
 . 14[  46204000
.UN 3
 . 14[  0
.UN 3
 . 14[  0
.SP
.UN 6
/SET UP THE CORRECT AREA PARAMETERS.
.SP
.UN 3
^CSW%^\  100/B5
.UN 3
.NOFILL
^CSA%^\  ^CSY0                    (OR OTHER AREA)

.UN 6
/SAVE STATES OF ^CCHIO, ^CAMC, AND ^CCPU.

.UN 3
/S1;/U

.UN 6
/PRESS ^CMNODT.

.UN 3
^/ 017/G                       (SAVE STATE OF ^CMSCH)

.UN 6
/PRESS ^CMNODT AGAIN.

.UN 3
^/ 0540/G                      (REACTIVATE ^CITP)

.FILL
.UN 6
/WRITE OUT CENTRAL MEMORY CONTENTS AND ALL OF DRUM ONTO SAVE AREA.
.SP
.UN 3
/S2;/U
.UN 3
8/D25
.SP
[/AT THIS POINT, THE SYSTEM CAN BE RESTARTED TOTALLY FROM DISK.
/THE REMAINDER OF THE COLD START REQUIRES ONLY FILES TO BE LOADED
ONTO THE DISK AND SOME SETUP OF ^CMIB^ES, ETC.]
.EJ
.EM 3
.UN 9
^UIV.  LOAD SUBSYSTEMS AND INITIALIZE MIB'S.^L
.SP
.UN 6
(/IF THE ^CPFS AREA OF THE DISK IS INTACT, SKIP TO STEP 3 BELOW.)
.SP
.UN 6
1.  /RESTART SAVED VERSION OF SYSTEM.
.SP
.UN 3
/OBTAIN FRESH COPY OF ^CSYSDDT.
.UN 3
/TYPE ON ^CSYSDDT TELETYPE:
.SP
^CSW%^/  100/B5

^CSA%^/  ^CSY0             (OR WHATEVER)

/R1;/U                  (RELOADS THE DRUM)
.SP
.RM 3
[/IT IS IMPORTANT TO READ THE LIGHTS REGISTER AT THE END OF THIS
STEP.  /NONE OF THE LIGHTS IN A FIELD OF SIX OR SO ENDING IN /BIT 11
SHOULD BE ON.  /THIS FIELD IS A COUNT OF HARD ERRORS DURING THE
RESTORE OPERATION.]
.EM 3
.SP
.UN 3
/PLACE 100/B5 (CONTENTS OF ^CSW) INTO SWITCH REGISTER AND DO A
^CZAP-GO.  /THIS RESTORES THE CONTENTS OF CENTRAL MEMORY.
.UN 3
/START ALL PROCESSORS AND RELEASE THE ^CCPU TO RUN.
.SP
/R2;/U                  (STARTS PROCESSORS)

8/D25

/R3;/U                  (EXPANDS DRUM BANDS)

8/D25

0%$                   (STEP MODE ^COFF)

1%*                   (SCHEDULER ^CON)

;#                    (CLEAR ^CSWR)
.SP
.UN 3
/HIT ^CCR ON ^CKDF TERMINAL.
.SP
;/P                    (RELEASE ^CCPU)
.SP 2
.UN 6
2.  /LOAD DISK ^CPFS SPACE WITH SUBSYSTEMS.
.SP
.UN 3
/CREATE A LARGE FILE USING ^CFILE-MAINTENANCE.
.UN 3
/LOAD "/SUBSYSTEMS" ^CKDF TAPE (ITEM #8) ON MAG TAPE UNIT.
.UN 3
/USING ^CKDF, READ ^CPF001 INTO LARGE FILE.
.UN 3
/USING ^CDDUMP (MAINTENANCE ^CPFS), INITIALIZE INDEX BLOCKS 1 THROUGH
137.  /LOAD ^CPFS USER 1 FROM LARGE FILE.
.UN 3
/REPEAT THIS PROCEDURE, MOVING ^CPF002 FROM MAG TAPE TO ^CPFS USER 2
AND ^CPF004 TO ^CPFS USER 4.
.SP 2
.UN 6
3.  /RESTART SYSTEM FROM SAVE AREA.
.SP
.UN 3
/FOLLOW PROCEDURE OF STEP 1 ABOVE, BUT DO ^CNOT DO ^-/R3;/U^E.  /LEAVE
THAT STEP OUT SO THAT THE DRUM BAND ALLOCATION REMAINS SMALL.
.SP 2
.UN 6
4.  /CREATE AND INITIALIZE ^CMIB^ES.
.SP
.UN 3
/FOLLOW THE FOLLOWING SCRIPT ON THE ^CKDF TERMINAL:
.SP
.RM 12
^U@REC DDUMP
.SP
START;G
.SP
&$ASSUME.

USER 1.

&$UNLOCK DIRECTORY FOR USER 1.

&$UNLOCK DIRECTORY FOR USER 2.

&$UNLOCK DIRECTORY FOR USER 14.

&READ DISK FILE PROFILE-MAINT.

TO "PROFILE-MAINT:TCMD".

14336 WORDS.

&FINISHED.

%F
.SP
@P-M

PROFILE-MAINT 9.16.77

>C-U =128  (NO. OF MIBS)

>E-P-P

>S-I FSL 7 2

>S-I CSL 7 2

>FIN

@#1:DELETE #1:PROFILE-MAINT

@#1:REC #1:DDUMP
.SP
START;G
.SP
$ASSUME.

USER 1.

&READ DISK FILE MAKE-LINKS;

2025 WORDS.

&READ DISK FILE COPY-SUBSYS;

367 WORDS.

$ASSUME.

USER 2.

&READ DISK FILE DDT:9SUB;

10240 WORDS.

&READ DISK FILE FILE-MAINT.

TO "FILE-MAINTENANCE:TCMD".

14336 WORDS.

&READ DISK FILE EMULATOR:PIF;

18432 WORDS.

$ASSUME.

USER 14.

&READ DISK FILE DDUMP;

12289 WORDS.

&FINISHED.

%F
.SP
@#1:RESET

@F-M

>COM-FROM MAKE-LINKS
.RM 3
(^L/THERE'S A LOT OF ACTION HERE WHILE LINKS ARE BEING SET UP.^U)
.EM 3
>FIN

@REC DDUMP
.SP
START;G
.SP
&$COMMANDS.

FROM FILE COPY-SUBSYS.
.RM 3
(^L/AT THIS POINT, THE SUBSYSTEMS ARE BROUGHT IN AUTOMATICALLY
FROM DISK.^U)
.EM 3
&FINISHED.
.SP
@D-F DDUMP

@D-F MAKE-LINKS

@D-F COPY-SUBSYS

.EM 9
.SP
.UN 3
^L/THE FIRST FOUR ^CMIB^ES SHOULD NOW LOOK AS FOLLOWS:
.EM 9
.NOFILL
.SP 4
.CE
^UMIB #1:
.SP 2
A-FRIEND:KEY <KEY> F(NO) O(NO)
ACCTNG-BACKUP:PCMD LEN= 33777B
ACTIVE-USERS:BIN LEN= 7777B
AMC-ITP:BIN LEN= 13777B F(NO) O(15)
AUTO-PFS:9SUB LEN= 13777B
AUTO-PFS:TCMD <LINKS TO> #2:EMULATOR:PIF
CONTINUE:TCMD <BSCMD> P(PX) F(NO) O(NO)
ENTER:PCMD LEN= 47777B
FINISHED:TCMD <BSCMD> P(PX) F(NO) O(NO)
G-FRIEND:KEY <KEY> F(NO) O(NO)
INITIAL-PROCESS:PROC <PROC> F(NO) O(15)
LINK-UTILITIES:PIF LEN= 47777B
LISTENER:BIN LEN= 33777B F(NO) O(15)
LOCKS-PFS:9BIN LEN= 7777B
M30COM:PROC <PROC>         [^LRENAMED FROM^U JUDY:PROC]
MONITOR:BIN LEN= 57777B F(NO) O(15)
OWNER:KEY <KEY> F(NO) O(10)
QUIT:TCMD <BSCMD> P(PX) F(NO) O(NO)
REAL-CORE:BIN LEN= 27777B F(NO) O(15)
RELEASE:TCMD <BSCMD> P(PX) F(NO) O(NO)
RESET:TCMD <BSCMD> P(PX) F(NO) O(NO)
SAVE-CURRENT:TCMD <BSCMD> P(PX) F(NO) O(NO)
USER-PROFILE:BIN LEN= 7777B
UTILITY:PIF LEN= 74000B
.SP 4
.CE
MIB #2:
.SP 2
$NOBOL:9SUB LEN= 43777B
?:9SUB <LINKS TO> #2:HELP:9SUB
?:TCMD <LINKS TO> #2:EMULATOR:PIF
ALLOW-LINKS:TCMD <LINKS TO> #1:LINK-UTILITIES:PIF
BASIC:9SUB LEN= 37777B
BASIC:PCMD <LINKS TO> #2:EMULATOR:PIF
BREAK-LINKS:TCMD <LINKS TO> #1:LINK-UTILITIES:PIF
CAL:9SUB LEN= 37777B
CAL:PCMD <LINKS TO> #2:EMULATOR:PIF
CONTINUE:TCMD <LINKS TO> #1:CONTINUE:TCMD
COPY:TCMD LEN= 43777B
DATE:TCMD LEN= 27777B
DDT:9SUB LEN= 33777B
DDT:PCMD <LINKS TO> #2:EMULATOR:PIF
DECTYPE:9SUB LEN= 7777B
DECTYPE:TCMD <LINKS TO> #2:EMULATOR:PIF
DELETE-FILES:TCMD <LINKS TO> #2:FILE-MAINTENANCE:TCMD
DELETE-OBJECTS:TCMD <LINKS TO> #2:FILE-MAINTENANCE:TCMD
DRUM-SPACE:TCMD LEN= 37777B
DUMP-940:TCMD <LINKS TO> #1:CONTINUE:TCMD
EMULATOR:PIF LEN= 57777B
EMULATOR-VERSION:PCMD <LINKS TO> #2:EMULATOR:PIF
EXAMINE-FILE:TCMD <LINKS TO> #2:FILE-MAINTENANCE:TCMD
FILE-MAINTENANCE:TCMD LEN= 43777B
FLIBE:9BIN LEN= 13106B
FOS:9SUB LEN= 23777B
FOS:PCMD <LINKS TO> #2:EMULATOR:PIF
FRIEND:SPCL <FRL> F(10)
FTC:9SUB LEN= 27777B
FTC:PCMD <LINKS TO> #2:EMULATOR:PIF
HELP:9SUB LEN= 13777B
HELP:TCMD <LINKS TO> #2:EMULATOR:PIF
HELP-940:9SUB LEN= 33777B
HELP-940:TCMD <LINKS TO> #2:EMULATOR:PIF
HELP-TEXT:9SYM LEN= 32444B
KDF-BACKUP:TCMD LEN= 117777B
LINE:TCMD <LINKS TO> #1:LINK-UTILITIES:PIF
LINK-TO:TCMD <LINKS TO> #1:LINK-UTILITIES:PIF
LISP:9SUB LEN= 27777B
LISP:PCMD <LINKS TO> #2:EMULATOR:PIF
LIST-FILES:TCMD <LINKS TO> #2:FILE-MAINTENANCE:TCMD
LIST-OBJECTS:TCMD <LINKS TO> #2:FILE-MAINTENANCE:TCMD
LOGOUT:PCMD <LINKS TO> #1:ENTER:PCMD
NARP:9SUB LEN= 37777B
NARP:PCMD <LINKS TO> #2:EMULATOR:PIF
NRH-940:TCMD <LINKS TO> #1:CONTINUE:TCMD
OWNER:KEY <KEY> F(10)
OWNER:SPCL <OWL> F(10)
PAPER-TAPE-READ:TCMD LEN= 43777B
PATCH:9SYM LEN= 4026B
PFS:9SUB LEN= 13777B
PFS:TCMD <LINKS TO> #2:EMULATOR:PIF
PRINT:TCMD LEN= 53777B
QED:9SUB LEN= 17777B
QED:PCMD <LINKS TO> #2:EMULATOR:PIF
QRUN:9SUB LEN= 37777B
QRUN:PCMD <LINKS TO> #2:EMULATOR:PIF
QSPL:9SUB LEN= 43777B
QSPL:PCMD <LINKS TO> #2:EMULATOR:PIF
RECOVER-940:PCMD <LINKS TO> #2:EMULATOR:PIF
REFUSE-LINKS:TCMD <LINKS TO> #1:LINK-UTILITIES:PIF
RELEASE:TCMD <LINKS TO> #1:RELEASE:TCMD
RENAME-FILE:TCMD <LINKS TO> #2:FILE-MAINTENANCE:TCMD
RESET:TCMD <LINKS TO> #1:RESET:TCMD
RUNOFF:9SUB LEN= 47777B
RUNOFF:TCMD <LINKS TO> #2:EMULATOR:PIF
SAVE-CURRENT:TCMD <LINKS TO> #1:SAVE-CURRENT:TCMD
SCHEDULE:9SUB LEN= 7777B
SCHEDULE:TCMD <LINKS TO> #2:EMULATOR:PIF
SNOBOL:9SUB LEN= 27777B
SNOBOL:PCMD <LINKS TO> #2:EMULATOR:PIF
TLOGOUT:PCMD <LINKS TO> #1:ENTER:PCMD
TYPE:9SUB LEN= 7777B
TYPE:TCMD <LINKS TO> #2:EMULATOR:PIF
WHERE-IS:TCMD <LINKS TO> #1:LINK-UTILITIES:PIF
WHO-IS-ON:TCMD <LINKS TO> #1:LINK-UTILITIES:PIF
.SP 4
.CE
MIB #3:
.SP 2
?:9SUB <LINKS TO> #2:HELP:9SUB
?:TCMD <LINKS TO> #2:EMULATOR:PIF
ALLOW-LINKS:TCMD <LINKS TO> #1:LINK-UTILITIES:PIF
BASIC:9SUB <LINKS TO> #2:BASIC:9SUB
BASIC:PCMD <LINKS TO> #2:EMULATOR:PIF
BREAK-LINKS:TCMD <LINKS TO> #1:LINK-UTILITIES:PIF
CAL:9SUB <LINKS TO> #2:CAL:9SUB
CAL:PCMD <LINKS TO> #2:EMULATOR:PIF
CONTINUE:TCMD <LINKS TO> #1:CONTINUE:TCMD
COPY:TCMD <LINKS TO> #2:COPY:TCMD
DATE:TCMD <LINKS TO> #2:DATE:TCMD
DDT:9SUB <LINKS TO> #2:DDT:9SUB
DDT:PCMD <LINKS TO> #2:EMULATOR:PIF
DECTYPE:9SUB <LINKS TO> #2:DECTYPE:9SUB
DECTYPE:TCMD <LINKS TO> #2:EMULATOR:PIF
DELETE-FILES:TCMD <LINKS TO> #2:FILE-MAINTENANCE:TCMD
DRUM-SPACE:TCMD <LINKS TO> #2:DRUM-SPACE:TCMD
DUMP-940:TCMD <LINKS TO> #1:CONTINUE:TCMD
EXAMINE-FILE:TCMD <LINKS TO> #2:FILE-MAINTENANCE:TCMD
FILE-MAINTENANCE:TCMD <LINKS TO> #2:FILE-MAINTENANCE:TCMD
FOS:9SUB <LINKS TO> #2:FOS:9SUB
FOS:PCMD <LINKS TO> #2:EMULATOR:PIF
FRIEND:SPCL <FRL> F(10)
FTC:9SUB <LINKS TO> #2:FTC:9SUB
FTC:PCMD <LINKS TO> #2:EMULATOR:PIF
HELP:9SUB <LINKS TO> #2:HELP:9SUB
HELP:TCMD <LINKS TO> #2:EMULATOR:PIF
HELP-940:9SUB <LINKS TO> #2:HELP-940:9SUB
HELP-940:TCMD <LINKS TO> #2:EMULATOR:PIF
LINE:TCMD <LINKS TO> #1:LINK-UTILITIES:PIF
LINK-TO:TCMD <LINKS TO> #1:LINK-UTILITIES:PIF
LISP:9SUB <LINKS TO> #2:LISP:9SUB
LISP:PCMD <LINKS TO> #2:EMULATOR:PIF
LIST-FILES:TCMD <LINKS TO> #2:FILE-MAINTENANCE:TCMD
LOGOUT:PCMD <LINKS TO> #1:ENTER:PCMD
NARP:9SUB <LINKS TO> #2:NARP:9SUB
NARP:PCMD <LINKS TO> #2:EMULATOR:PIF
OWNER:KEY <KEY> F(10)
OWNER:SPCL <OWL> F(10)
PFS:9SUB <LINKS TO> #2:PFS:9SUB
PFS:TCMD <LINKS TO> #2:EMULATOR:PIF
PRINT:TCMD <LINKS TO> #2:PRINT:TCMD
QED:9SUB <LINKS TO> #2:QED:9SUB
QED:PCMD <LINKS TO> #2:EMULATOR:PIF
QRUN:9SUB <LINKS TO> #2:QRUN:9SUB
QRUN:PCMD <LINKS TO> #2:EMULATOR:PIF
QSPL:9SUB <LINKS TO> #2:QSPL:9SUB
QSPL:PCMD <LINKS TO> #2:EMULATOR:PIF
RECOVER-940:PCMD <LINKS TO> #2:EMULATOR:PIF
REFUSE-LINKS:TCMD <LINKS TO> #1:LINK-UTILITIES:PIF
RELEASE:TCMD <LINKS TO> #1:RELEASE:TCMD
RENAME-FILE:TCMD <LINKS TO> #2:FILE-MAINTENANCE:TCMD
RESET:TCMD <LINKS TO> #1:RESET:TCMD
RUNOFF:9SUB <LINKS TO> #2:RUNOFF:9SUB
RUNOFF:TCMD <LINKS TO> #2:EMULATOR:PIF
SAVE-CURRENT:TCMD <LINKS TO> #1:SAVE-CURRENT:TCMD
SCHEDULE:9SUB <LINKS TO> #2:SCHEDULE:9SUB
SCHEDULE:TCMD <LINKS TO> #2:EMULATOR:PIF
SNOBOL:9SUB <LINKS TO> #2:SNOBOL:9SUB
SNOBOL:PCMD <LINKS TO> #2:EMULATOR:PIF
SPL:PCMD <LINKS TO> #2:SPL:PCMD
TLOGOUT:PCMD <LINKS TO> #1:ENTER:PCMD
TYPE:9SUB <LINKS TO> #2:TYPE:9SUB
TYPE:TCMD <LINKS TO> #2:EMULATOR:PIF
WHERE-IS:TCMD <LINKS TO> #1:LINK-UTILITIES:PIF
WHO-IS-ON:TCMD <LINKS TO> #1:LINK-UTILITIES:PIF
.SP 4
.CE
MIB #4:
.SP 2
?:9SUB <LINKS TO> #2:HELP:9SUB
?:TCMD <LINKS TO> #2:EMULATOR:PIF
BASIC:9SUB <LINKS TO> #2:BASIC:9SUB
BASIC:PCMD <LINKS TO> #2:EMULATOR:PIF
BREAK-LINKS:TCMD <LINKS TO> #1:LINK-UTILITIES:PIF
CAL:9SUB <LINKS TO> #2:CAL:9SUB
CAL:PCMD <LINKS TO> #2:EMULATOR:PIF
CONTINUE:TCMD <LINKS TO> #1:CONTINUE:TCMD
COPY:TCMD <LINKS TO> #2:COPY:TCMD
DATE:TCMD <LINKS TO> #2:DATE:TCMD
DECTYPE:9SUB <LINKS TO> #2:DECTYPE:9SUB
DECTYPE:TCMD <LINKS TO> #2:EMULATOR:PIF
DELETE-FILES:TCMD <LINKS TO> #2:FILE-MAINTENANCE:TCMD
FOS:9SUB <LINKS TO> #2:FOS:9SUB
FOS:PCMD <LINKS TO> #2:EMULATOR:PIF
FRIEND:SPCL <FRL> F(10)
FTC:9SUB <LINKS TO> #2:FTC:9SUB
FTC:PCMD <LINKS TO> #2:EMULATOR:PIF
HELP:9SUB <LINKS TO> #2:HELP:9SUB
HELP:TCMD <LINKS TO> #2:EMULATOR:PIF
LINE:TCMD <LINKS TO> #1:LINK-UTILITIES:PIF
LINK-TO:TCMD <LINKS TO> #1:LINK-UTILITIES:PIF
LIST-FILES:TCMD <LINKS TO> #2:FILE-MAINTENANCE:TCMD
LOGOUT:PCMD <LINKS TO> #1:ENTER:PCMD
OWNER:KEY <KEY> F(10)
OWNER:SPCL <OWL> F(10)
PFS:9SUB <LINKS TO> #2:PFS:9SUB
PFS:TCMD <LINKS TO> #2:EMULATOR:PIF
QED:9SUB <LINKS TO> #2:QED:9SUB
QED:PCMD <LINKS TO> #2:EMULATOR:PIF
RESET:TCMD <LINKS TO> #1:RESET:TCMD
SCHEDULE:9SUB <LINKS TO> #2:SCHEDULE:9SUB
SCHEDULE:TCMD <LINKS TO> #2:EMULATOR:PIF
TYPE:9SUB <LINKS TO> #2:TYPE:9SUB
TYPE:TCMD <LINKS TO> #2:EMULATOR:PIF
WHERE-IS:TCMD <LINKS TO> #1:LINK-UTILITIES:PIF
WHO-IS-ON:TCMD <LINKS TO> #1:LINK-UTILITIES:PIF
.FILL
.SP 2
.RM 6
.UN 3
^L/THE ABOVE ^CMIB^ES ARE COMPLETE EXCEPT FOR ^CSPL.  /THIS WAS
NOT READ IN INTENTIONALLY SO AS NOT TO OVERFLOW THE SMALL AMOUNT
OF AVAILABLE DRUM SPACE.  /THERE SHOULD NOW BE BARELY ENOUGH
ROOM TO ACCOMMODATE ^CSPL.  /THIS BEING THE CASE, READ IT IN
FROM ^CPFS USER 2.
.UN 3
/DO A ^CSAVD.
.SP 2
.UN 6
5.  /SET REAL-TIME CLOCK (IF REQUIRED).
.SP
.UN 3
/BRING UP SYSTEM AND USE ^CP-M TO INSTALL A USER, IF ONLY TEMPORARILY.
.UN 3
/LOGIN ON TWO TERMINALS.
.UN 3
/ON ONE OF THE TERMINALS, USE ^CDDUMP TO OBTAIN A COPY OF ^CREAL-CORE
FROM ^CPFS USER 4.  /ASSEMBLE THIS CODE AND LOAD IT WITH ^CDDT.
.UN 3
/START THE PROGRAM (^CSTART;/G).  /WHEN THE BELL RINGS, ONE CAN USE
^CDDT TO LOOK AT AND CHANGE CENTRAL MEMORY.
.UN 3
/ON THE OTHER TERMINAL, DO A ^CDATE COMMAND.  /ADJUST THE CONTENTS
OF LOCATIONS 12 AND 13 IN CENTRAL MEMORY ITERATIVELY SO AS TO GET
THE ^CDATE COMMAND TO TYPE THE CORRECT DATE AND EXACT TIME.
.UN 3
/NOTE THE CONTENTS OF 12 AND 13 SO THAT THEY CAN BE INCLUDED IN THE
SAVED VERSION OF THE SYSTEM.
.SP 2
.UN 6
6.  /COMPLETE THE COLD START.
.SP
.UN 3
/RESTART THE SYSTEM FROM SAVE AREA AS IN STEP 3.
.UN 3
/USING ^CSYSDDT, INSERT THE CORRECT VALUES FOR LOCATIONS 12 AND 13
INTO CENTRAL MEMORY.
.UN 3
/DO A ^CSAVD.
.SP
.RM 3
[/AT THIS POINT THERE IS A VALID VERSION OF THE SYSTEM
SAVED ON DISK.  /THIS COMPLETES THE COLD-START PROCEDURE.  /THE
SYSTEM JUST ASSEMBLED WILL SERVE AS THE BASIS FOR FURTHER VERSIONS
INCORPORATING VARIOUS CHANGES.]
.EJ
.EJ
> #2:FILE-MAINTENANCE:TCMD
RESET:TCMD <LINKS TO> #1:RESET:TCMD
RUNOFF:9SUB LEN= 47777B
RUNOFF:TCMD <LINKS TO> #2:EMULATOR:PIF
SAVE-CURRENT:TCMD <LINKS TO> #1:SAVE-CURRENT:TCMD
SCHEDULE:9SUB LEN= 7777B
SCHEDULE:TCMD <LINKS TO> #2:EMULATOR:PIF
SNOBOL:9SUB LEN= 27777B
SNOBOL:PCMD <LINKS TO> #2:EMULATOR:PIF
TLOGOUT:PCMD <LINKS TO> #1:ENTER:PCMD
TYPE:9SUB LEN= 7777B
TYPE:TCMD <LINKS TO> #2:EMULATOR:PIF
WHERE-IS:TCMD <LINKS TO> #1:LINK-UTILITIES:PIF
WHO-IS-ON:TCMD <LINKS TO> #1:LINK-UTILITIES:PIF
.SP 4
.CE
MIB #3:
.SP 2
?:9SUB <LINKS TO> #2:HELP:9SUB
?:TCMD <LINKS TO> #2:EMULATOR:PIF
ALLOW-LINKS:TCMD <LINKS TO> #1:LINK-UTILITIES:PIF
BASIC:9SUB <LINKS TO> #2:BASIC:9SUB
BASIC:PCMD <LINKS TO> #2:EMULATOR:PIF
BREAK-LINKS:TCMD <LINKS TO> #1:LINK-UTILITIES:PIF
CAL:9SUB <LINKS TO> #2:CAL:9SUB
CAL:PCMD <LINKS TO> #2:EMULATOR:PIF
CONTINUE:TCMD <LINKS TO> #1:CONTINUE:TCMD
COPY:TCMD <LINKS TO> #2:COPY:TCMD
DATE:TCMD <LINKS TO> #2:DATE:TCMD
DDT:9SUB <LINKS TO> #2:DDT:9SUB
DDT:PCMD <LINKS TO> #2:EMULATOR:PIF
DECTYPE:9SUB <LINKS TO> #2:DECTYPE:9SUB
DECTYPE:TCMD <LINKS TO> #2:EMULATOR:PIF
DELETE-FILES:TCMD <LINKS TO> #2:FILE-MAINTENANCE:TCMD
DRUM-SPACE:TCMD <LINKS TO> #2:DRUM-SPACE:TCMD
DUMP-940:TCMD <LINKS TO> #1:CONTINUE:TCMD
EXAMINE-FILE:TCMD <LINKS TO> #2:FILE-MAINTENANCE:TCMD
FILE-MAINTENANCE:TCMD <LINKS TO> #2:FILE-MAINTENANCE:TCMD
FOS:9SUB <LINKS TO> #2:FOS:9SUB
FOS:PCMD <LINKS TO> #2:EMULATOR:PIF
FRIEND:SPCL <FRL> F(10)
FTC:9SUB <LINKS TO> #2:FTC:9SUB
FTC:PCMD <LINKS TO> #2:EMULATOR:PIF
HELP:9SUB <LINKS TO> #2:HELP:9SUB
HELP:TCMD <LINKS TO> #2:EMULATOR:PIF
HELP-940:9SUB <LINKS TO> #2:HELP-940:9SUB
HELP-940:TCMD <LINKS TO> #2:EMULATOR:PIF
LINE:TCMD <LINKS TO> #1:LINK-UTILITIES:PIF
LINK-TO:TCMD <LINKS TO> #1:LINK-UTILITIES:PIF
LISP:9SUB <LINKS TO> #2:LISP:9SUB
LISP:PCMD <LINKS TO> #2:EMULATOR:PIF
LIST-FILES:TCMD <LINKS TO> #2:FILE-MAINTENANCE:TCMD
LOGOUT:PCMD <LINKS TO> #1:ENTER:PCMD
NARP:9SUB <LINKS TO> #2:NARP:9SUB
NARP:PCMD <LINKS TO> #2:EMULATOR:PIF
OWNER:KEY <KEY> F(10)
OWNER:SPCL <OWL> F(10)
PFS:9SUB <LINKS TO> #2:PFS:9SUB
PFS:TCMD <LINKS TO> #2:EMULATOR:PIF
PRINT:TCMD <LINKS TO> #2:PRINT:TCMD
QED:9SUB <LINKS TO> #2:QED:9SUB
QED:PCMD <LINKS TO> #2:EMULATOR:PIF
QRUN:9SUB <LINKS TO> #2:QRUN:9SUB
QRUN:PCMD <LINKS TO> #2:EMULATOR:PIF
QSPL:9SUB <LINKS TO> #2:QSPL:9SUB
QSPL:PCMD <LINKS TO> #2:EMULATOR:PIF
RECOVER-940:PCMD <LINKS TO> #2:EMULATOR:PIF
REFUSE-LINKS:TCMD <LINKS TO> #1:LINK-UTILITIES:PIF
RELEASE:TCMD <LINKS TO> #1:RELEASE:TCMD
RENAME-FILE:TCMD <LINKS TO> #2:FILE-MAINTENANCE:TCMD
RESET:TCMD <LINKS TO> #1:RESET:TCMD
RUNOFF:9SUB <LINKS TO> #2:RUNOFF:9SUB
RUNOFF:TCMD <LINKS TO> #2:EMULATOR:PIF
SAVE-CURRENT:TCMD <LINKS TO> #1:SAVE-CURRENT:TCMD
SCHEDULE:9SUB <LINKS TO> #2:SCHEDULE:9SUB
SCHEDULE:TCMD <LINKS TO> #2:EMULATOR:PIF
SNOBOL:9SUB <LINKS TO> #2:SNOBOL:9SUB
SNOBOL:PCMD <LINKS TO> #2:EMULATOR:PIF
SPL:PCMD <LINKS TO> #2:SPL:PCMD
TLOGOUT:PCMD <LINKS TO> #1:ENTER:PCMD
TYPE:9SUB <LINKS TO> #2:TYPE:9SUB
TYPE:TCMD <LINKS TO> #2:EMULATOR:PIF
WHERE-IS:TCMD <LINKS TO> #1:LINK-UTILITIES:PIF
WHO-IS-ON:TCMD <LINKS TO> #1:LINK-UTILITIES:PIF
.SP 4
.CE
MIB #4:
.SP 2
?:9SUB <LINKS TO> #2:HELP:9SUB
?:TCMD <LINKS TO> #2:EMULATOR:PIF
BASIC:9SUB <LINKS TO> #2:BASIC:9SUB
BASIC:PCMD <LINKS TO> #2:EMULATOR:PIF
BREAK-LINKS:TCMD <LINKS TO> #1:LINK-UTILITIES:PIF
CAL:9SUB <LINKS TO> #2:CAL:9SUB
CAL:PCMD <LINKS TO> #2:EMULATOR:PIF
CONTINUE:TCMD <LINKS TO> #1:CONTINUE:TCMD
COPY:TCMD <LINKS TO> #2:COPY:TCMD
DATE:TCMD <LINKS TO> #2:DATE:TCMD
DECTYPE:9SUB <LINKS T.GL  PROCES-SORS
.GL  FAIR-LY
.PAGING MODE OFF
.GL  UNDER-STAND MANAGE-MENT EXTENS-IVE-LY COMPUT-ING
.GL CONTRI-BUTE
.SP 4
.CE
^USYSTEM ARCHITECTURE FOR THE BCC 500^L
.SP 4
.CE
BY
.SP
.CE
/JACK /FREEMAN*
.SP
.CE
AND
.SP
.CE
/W. /W. /LICHTENBERGER*
.SP 4
.CE
^I^CABSTRACT
.SP 2
       /THE ARCHITECTURE OF THE MULTIPROCESSOR ^CBCC 500 COMPUTING
SYSTEM IS DESCRIBED.
/THIS SYSTEM -- THE PROTOTYPE FOR A LARGE RESOURCE-SHARING COMPUTING
SYSTEM -- WAS DESIGNED AND CONSTRUCTED IN 1969-70, BUT HAS NOT BEEN
REPORTED EXTENSIVELY IN THE LITERATURE.
/IT CONSISTS OF A NUMBER OF MICROPROCESSORS, EACH WITH A 
100 NSEC CONTROL STORE AND WITH ACCESS TO A MULTI-PORT, MULTI-MODULE
CENTRAL MEMORY.
/TWO OF THESE PROCESSORS ARE USED TO IMPLEMENT FAIRLY CONVENTIONAL
^CCPU^ES.
/THE REST ARE DEDICATED TO BASIC OPERATING SYSTEM TASKS (SCHEDULING,
SWAPPING, TERMINAL MANAGEMENT) WHICH ARE PERFORMED DIRECTLY IN 
MICROCODE.
/EXPERIENCE WITH THE SYSTEM IS DISCUSSED, AND AN EVALUATION OF THE
BASIC ARCHITECTURE AND THE USE OF THE MICROPROCESSORS IN IT IS GIVEN.
/IT IS CLAIMED THAT THE USE OF POWERFUL MICROPROCESSORS AND THE
ARCHITECTURE THEY MAKE POSSIBLE CONTRIBUTE DIRECTLY TO A WELL-MODULARIZED
OPERATING SYSTEM THAT IS SIMPLE TO BUILD AND CHECK OUT AND EASY TO
UNDERSTAND AND MAINTAIN.
.SP 11
* /DEPARTMENT OF /ELECTRICAL /ENGINEERING,

.IN 5
/UNIVERSITY OF /HAWAII

>  B\B.LE
.SP
^LS^UT0\B.LE + C.LE

^LR^UT0\T0.NSI + T0.SI
.SP
^LS^UTX\T0.SI

^LR^UTX\TX.ZEROS + TX.RS04
.SP
^LS^UTX0\TX.ZEROS

^LR^UTX0\TX0.NZEROS + TX0.RS04
.SP
^LS^UT46\TX.RS04 + TX0.RS04

^LR^UT46\T46.RS48 + T46.NRS48
.SP
^LS^UC\T46.NRS48

^LR^UC\C.LE + C.RSRTM
.SP 5
NSI\DSI'.RSRTM
.SP
SI\DSI.RSRTM
.SP
NZEROS\ZDET'.RSRTM1
.SP
ZEROS\ZDET.RSRTM1
.SP
NRS48\RSR48'.RSRTM1
.SP
RS48\RSR48.RSRTM1
.SP
RS04\RSR04.RSRTM
.FILL
.SP 5
.CE
^L/TABLE 1.  /RECEIVER /STATE /COUNTER /LOGIC /EQUATIONS.
> MARILY
TO INVESTIGATE THE NATURE OF DATA WHICH HAS JUST COME INTO ^CRSR.
.CALL CHAPT
/RECEIVER /STATE /COUNTER /TIMING
       /ALL /F/FS IN THE RECEIVER STATE COUNTER ARE /J/KS CLOCKED BY /K2'.
/THEY THUS OPERATE EFFECTIVELY ON THE LEADING EDGE OF /K2 AS DO ALL OTHER
^CRSR DEVICES.
/SIMPLE LOGIC TERMS ARE USED TO IMPLEMENT THE CONDITIONS LEADING TO EACH
OF THE ALLOWABLE STATE TRANSITIONS (SEE /FIGURE 4).
/EACH SUCH TERM CONSISTS OF A PRESENT STATE AND A "CONDITION" WHICH IN ONE
WAY OR OTHER INVOLVES TIMING (I.E., /K2 INTERVAL) INFORMATION.
/SINCE EACH TRANSITION INTO A STATE IS ALSO A TRANSITION FROM ANOTHER ONE,
EACH OF THESE LOGIC TERMS IS USED IN ONE OTHER PLACE TO RESET ONE OF THE STATE
/F/FS.
/THE CONDITION SIGNALS ARE ^CSI, ^CNSI, ^CZEROS, ^CNZEROS, ^CRS48, ^CNRS48,
AND ^CRS04.
/EQUATIONS FOR ALL OF THESE SIGNALS AND THE SET^/RESET TERMS FOR EACH OF
THE /F/FS IN THE COUNTER ARE GIVEN IN /TABLE 1.
/THE SET CONDITIONS FOR STATE /A ARE MADE TO FORCE A /D/C RESET OF ALL OTHER
/F/FS (EXCEPT /L/E WHICH IT /D/C SETS) SO THAT ONLY ONE OF THE 7 STATE
/F/FS CAN BE ON AT ANY TIME.
/THE CIRCUIT CONSISTING OF ^CLSI AND ^CLE IS THE LEADING EDGE DETECTOR.
/WHEN /L/E IS SET THE CIRCUIT IS DORMANT; RESETTING IT PERMITS ANY ZERO-TO-ONE
TRANSITION TO CLOCK ^CLSI TO ONE, WHERE IT WILL BE COPIED GLITCH-FREE BACK
TO /L/E AT THE NEXT /K2 TIME.
/THE SETTING OF /L/E IS USED IN THE STATE COUNTER.
.CALL CHAPT
/SUPERVISORY /CHANNEL
       /AS PREVIOUSLY MENTIONED THE RECEIVER OPERATES ON THE PHILOSOPHY THAT
MOST OF THE TIME IT WILL BE IN FRAME SYNC.
/THUS IT WATCHES FOR DATA ANOMOLIES DURING THE FRAME RATHER THAN BY CHECKING
FOR THE STOP BYTE AT EACH FRAME END.
/THIS LEAVES THE STOP BYTE UNUSED EXCEPT TO SERVE AS A BENCHMARK FROM WHICH
TO GET BACK IN SYNC WHEN THE RECEIVER DOES GET LOST.
/A FIFTH, SUPERVISORY CHANNEL IS PERMITTED TO "PIGGYBACK" ITS COMMUNICATIONS
DURING STOP BYTE INTERVALS.
/IT IS NOT EXPECTED THAT THIS LEVEL OF USEAGE WILL BE GREAT.
/SOME USERS MAY BE TEMPTED TO PLACE THE FIFTH CHANNEL IN REGULAR OPERATION.
/IT CAN BE DONE IN PRINCIPLE; BUT IT IS ^CNOT ADVISABLE TO DO SO, AT LEAST
WITHOUT UNDERSTANDING AND CONFORMING TO THE FOLLOWING RESTRICTIONS ON THE
SUPERVISORY CHANNEL:
.RM 10,5
.SP
.UN 4
1.  /NO CONTROL^/STATUS BITS ARE SENT FOR THE CHANNEL.
.SP
.UN 4
2.  /ONLY 7 INFORMATIONS BITS ARE SENT, NOT 8 AS WITH THE OTHERS.
/THIS WILL USUALLY MAKE NO DIFFERENCE, EXCEPT THAT PARITY AND^/OR BINARY
INFORMATION CANNOT BE SENT ON THE CHANNEL.
.SP
.UN 4
3.  /IF A LONG SEQUENCE OF CHARACTERS IS SENT ON THE CHANNEL AT 30 CPS
AND THE RECEIVER SHOULD GET OUT OF FRAME SYNC, NO SYNC COULD BE ESTABLISHED
UNTIL THE SEQUENCE ENDS AND A STOP BYTE IS SENT.
/THIS COULD BE A MATTER OF SEVERAL SECONDS AND WOULD CAUSE THE MULTIPLEXER
TO BE OUT OF SERVICE FOR THAT LENGTH OF TIME.
.SP
.ER
/THE CHANNEL MIGHT SERVE FOR GENERAL USE IN SOME APPLICATIONS IF IT WERE
OPERATED AT 10 CPS, HOWEVER.
.CALL CHAPT
/OPERATION
       /EACH MULTIPLEXER UNIT IS EQUIPPED WITH SIX /D/B-25 PLUGS WIRED FOR
STANDARD /R/S-232 INTERFACING (SEE /APPENDIX /A FOR DETAILS OF THE CONNECTIONS)
AND WITH SEVEN SWITCHES.
/THE PLUGS ARE MARKED "/CHANNEL 0" THROUGH "/CHANNEL 3", "/SUPERVISORY /CHANNEL",
AND "1400 ^CBPS /DATA /LINE".
/A TWO-POSITION, RECESSED SWITCH IS ASSOCIATED WITH EACH OF THE PLUGS
(EXCEPT THE 1400 BPS LINE PLUG) TO SELECT THE DATA RATE FOR THAT CHANNEL.
/THE REMAINING SWITCHES ARE MARKED "/POWER ^CON^/OFF" AND
"/TEST1^//OPERATE^//TEST2".
/THE LATTER SWITCH
IS PROVIDED TO ASSIST IN THE ISOLATION OF VARIOUS FAULTS WHICH MAY
OCCUR FROM TIME TO TIME AS THE MULTIPLEXER IS IN USE.
       /TEST 1 SEPARATES THE MULTIPLEXING UNIT FROM THE 1400 BPS DATA LINE
AND TURNS EACH BACK UPON ITSELF (A LOOP-BACK CONDITION).
(/SEE /FIGURE 5.)
/IN THIS STATE THE MULTIPLEXING UNIT CAN BE TESTED OUT LOCALLY AND^/OR THE
COMMUNICATIONS LINE CAN BE TESTED FROM THE OTHER END.
/ANY INFORMATION SENT ON ANY OF THE CHANNELS IS TURNED BACK UPON THE SENDER.
/THUS THE SUPERVISORY CHANNEL TERMINAL CAN BE SET TO "FULL-DUPLEX" OPERATION
AND SHOULD ECHO ANY CHARACTER TYPED ON IT; SIMILARLY FOR ANY OTHER
TERMINALS WHICH MIGHT BE CONNECTED TO THE UNIT.
       /TO .GL  SUF-FIC-IENT SOME-TIMES REMAIN-DER PRO-JECT JAN-UARY
.GL FIF-TEEN FEB-RU-ARY
.GL  UTIL-IZE SYS-TEMS STAND-BY SOFT-WARE SEPAR-ATE
.GL SECUR-ITY REFER-ENCES PROCES-SORS PROB-ABIL-ITY
.GL PHYSICAL-LY OPER-ATION NET-WORK NECES-SAR-ILY MULTIPORT
.GL MINI-MIZED MICRO-PRO-CES-SORS MEGA-WORDS LOGICAL-LY
.GL INFOR-MA-TION INEX-PEN-SIVE INDE-PEN-DENT-LY INCLU-SION
.GL IMPLE-MEN-TA-TION IDEN-TICAL HOW-EVER GENERAL-LY
.GL EXAM-PLE EQUIV-ALENT DEFIN-ITION DEDI-CA-TION CORPO-RA-TION
.GL CONTROL-LERS CON-TENTS CONSIDER-ATIONS CONFIG-URA-TION
.GL COMPUT-ING COMPAN-IES COMMUNI-CA-TION COMMUN-ICATE
.GL COM-MERCIAL CEN-TRAL CAPA-CITY AUTO-MAT-ICAL-LY
.GL ASSOC-IATED ADDRES-SING
.SP 5
.CENTER
^UTHE BCC 500 COMPUTING SYSTEM;

.CENTER
AN INTRODUCTION AND OVERVIEW^L
.SP 10
1.0  ^CINTRODUCTION
.SP 2
       /THIS DOCUMENT DESCRIBES THE ARCHITECTURE OF THE ^CBCC 500
SYSTEM, STRESSING ITS MULTIPROCESSOR STRUCTURE AND THE EFFECTS OF
THIS STRUCTURE ON THE ORGANIZATION AND IMPLEMENTATION OF THE ^CBCC
500 OPERATING SYSTEM.
/DETAILS OF THE SYSTEM'S HARDWARE COMPONENTS AND DESCRIPTIONS OF
VARIOUS ASPECTS OF THE USER MACHINE PROVIDED BY THE SYSTEM ARE
FOUND IN OTHER DOCUMENTS AND PAPERS [LIST OF
REFERENCES].
/IN ORDER TO GIVE THE READER SOME ORIENTATION,
HOWEVER, THE REMAINDER OF THIS SECTION
IS DEVOTED TO A SHORT ACCOUNT OF THE SYSTEM'S ORIGINS.
/BRIEF MENTIONS OF ITS
INTENDED USES, ITS USER MACHINE FEATURES, AND ITS HARDWARE STRUCTURE
ARE GIVEN IN /APPENDIX /I.
.SP 2
.EJECT 15
1.1  /BACKGROUND
.SP
       /THE ARCHITECTURE OF THE ^CBCC 500 SYSTEM WAS LARGELY
DETERMINED BY A DESIGN TEAM WORKING UNDER /PROJECT ^CGENIE AT THE
/UNIVERSITY OF /CALIFORNIA, /BERKELEY IN 1968 [ANOTHER LIST OF OLD
/GENIE REFERENCES, 6700 DOCUMENTS, /VAN /TUYL'S THESIS, ETC.]*.
/THE /PROJECT'S GOAL AT THAT TIME WAS TO DEVELOP A BASIC, COST-EFFECTIVE
RESOURCE-SHARING SYSTEM STRUCTURE WHICH COULD SERVE AS THE NUCLEUS
FOR A NUMBER OF OPERATING SYSTEMS TAILORED TO SPECIFIC APPLICATIONS
AREAS.

.SP 2
-------------

*/THE /PROJECT WAS ASSOCIATED WITH SEVERAL COMMERCIAL ORGANIZATIONS IN
A JOINT VENTURE TO PRODUCE WHAT WAS THEN TERMED THE ^CSCC 6700.
.EJECT
       /IN EARLY 1969 A NUMBER OF INDIVIDUALS FROM /PROJECT
^CGENIE JOINED WITH OTHERS TO FORM /BERKELEY /COMPUTER /CORPORATION
(^CBCC)
TO DEVELOP REMOTELY-ACCESSED RESOURCE-SHARING COMPUTING SYSTEMS.
/THE SYSTEM ARCHITECTURE CONCEPTS WERE CARRIED OVER FROM THE /PROJECT.
/THE SPECIFIC 500 HARDWARE AND SOFTWARE WERE DEVELOPED 
IN THE PERIOD /JANUARY 1969 THROUGH /JULY 1970 AS A PROTOTYPE FOR
THE COMPANY'S SUBSEQUENT LINE OF SYSTEMS.
^CBCC WAS UNABLE TO SECURE SUFFICIENT FUNDING TO ESTABLISH
A VIABLE MARKET BASED ON THE CONCEPT OF CENTRALIZED RESOURCE-SHARING
SYSTEMS
AND WAS FORCED TO TERMINATE OPERATIONS
IN /MARCH 1971.
/THE 500 SYSTEM WAS OPERATED, HOWEVER, FOR DEMONSTRATION
PURPOSES AND FOR ^CBCC'^ES OWN PROGRAMMING DEVELOPMENT
ACTIVITIES FROM MID-1970 TO THE COMPANY'S DEMISE.

       /IN 1972 THE COMPANY'S HARDWARE ASSETS -- INCLUDING THE
500 PROTOTYPE -- WERE PURCHASED BY THE /UNIVERSITY OF /HAWAII, AND
THE EQUIPMENT WAS DISMANTLED AND MOVED TO /HONOLULU, WHERE IT WAS
REFURBISHED AND REASSEMBLED BY ^UTHE ALOHA SYSTEM^L /PROJECT
TO BE USED AS A RESEARCH AND COMPUTING TOOL.
/THE SYSTEM BECAME ACTIVE AGAIN IN /FEBRUARY 1973, AND IT HAS BEEN
USED SINCE THAT TIME BY THE /PROJECT, BY OTHER ^CARPA
CONTRACTORS (VIA THE ^CARPA NETWORK) AND
IN CLASSES OF THE /DEPARTMENT OF /ELECTRICAL /ENGINEERING.
.SP 2
.EJECT 15
.EJECT
2.0  ^USYSTEM ARCHITECTURE^L
.SP 2
       /THE SIMPLEST VIEW OF THE 500 SYSTEM ARCHITECTURE IS SHOWN
IN /FIGURE 1.
/IN THE FIGURE WE SEE SIX PROCESSORS CLUSTERED AROUND A 
COMMON MEMORY.
/THE MULTIPROCESSING NATURE OF THE STRUCTURE DERIVES FROM
THE CONCURRENT USE OF THE PROCESSORS IN SUPPORT OF A COMMON TASK
AND THE USE OF A COMMON MEMORY FOR INTERPROCESSOR COMMUNICATION.
/THE COMMON TASK SUPPORTED BY THIS COMPUTING STRUCTURE IS, OF COURSE,
THE PROVISION TO EACH SYSTEM USER OF A FICTICIOUS, POWERFUL ^IVIRTUAL
^IMACHINE WHICH IS THE TARGET OF SYSTEMS PROGRAMMERS AS THEY PREPARE
COMPILERS AND OTHER LARGE SUB-SYSTEMS FOR THE CONVENIENCE OF THE USERS.
/PROVIDING AND CONTROLLING THE VIRTUAL MACHINE -- SYSTEM RESOURCE
ALLOCATION -- IS ONE OF THE MORE PROMINENT ROLES OF AN OPERATING SYSTEM
ON ANY TYPE OF COMPUTING STRUCTURE.

.FIGURE SPACING 24
.CENTER
/FIGURE 1.  /B/C/C 500 /SYSTEM.
.SP 2
       /THE SIX PROCESSORS ARE BUILT ALMOST IDENTICALLY.
/IN THE SYSTEM THEY ARE INDIVIDUALLY DEDICATED, HOWEVER, TO VARIOUS
ROLES.
/THE NATURE OF THIS DEDICATION AND ITS IMPLICATIONS ARE AMONG THE MORE
INTERESTING ASPECTS OF THE SYSTEM ARCHITECTURE.
/TWO OF THE PROCESSORS HAVE ENHANCED HARDWARE CAPABILITY AND ARE USED TO
IMPLEMENT THE MORE VISIBLE ASPECTS OF THE VIRTUAL MACHINE; THEY ARE CALLED
ACCORDINGLY ^CCPU^ES (ALTHOUGH THE TERM IS NOT ENTIRELY APT IN THIS 
CONTEXT).
/THE OTHER PROCESSORS ARE DEDICATED TO VARIOUS TASKS OF RESOURCE ALLOCATION.
.EJECT
2.1  /PROCESSOR /ASSIGNMENTS
.SP
       /FIGURE 2 SHOWS THE NAMES OF THE 500 SYSTEM PROCESSORS AND 
SUGGESTS THEIR ASSIGNMENTS.
.FIGURE SPACING 24
.CENTER
/FIGURE 2.  /B/C/C /CENTRAL-SITE /PROCESSOR /ASSIGNMENTS.
.SP 3
/THE PROCESSORS ARE:
.SP 3
.RM 5,5
^I^CCPU^E^IS

       /THE TWO /^IC^EENTRAL /^IP^EROCESSING /^IU^ENITS ARE USED ALMOST
EXCLUSIVELY TO EXECUTE THE CODE PROVIDED BY THE SYSTEM'S USERS.
/THE RATHER SIGNIFICANT ^CCPU POWER REQUIRED IN OTHER SYSTEMS FOR THE
SYSTEM'S OWN MANAGEMENT FUNCTIONS IS PROVIDED IN THE 500 SYSTEM BY MORE
SPECIALIZED PROCESSORS.
/IT IS NECESSARY, OF COURSE, FOR THE ^CCPU^ES TO COMMUNICATE WITH THE
OTHER PROCESSORS, AND IT IS UNREASONABLE TO REQUIRE THE USER OF THE SYSTEM TO
WRITE SUCH CODE INTO EACH OF HIS PROGRAMS (ESPECIALLY
WITHOUT ERROR).
/HENCE AS A FEATURE OF THE ^CCPU, CODE IS AUTOMATICALLY INCLUDED INTO
EACH USER'S PROGRAM TO DO THE REQUISITE
COMMUNICATION TASKS AND A NUMBER OF OTHERS WHICH ARE 
CONVENIENT TO THE USER.
/THIS SYSTEM-PROVIDED CODE IS CONSIDERED TO BE LOGICALLY A PART OF EACH
USER'S JOB - CALLED ^IPROCESS IN OUR TERMINOLOGY -- AND IS SHARED BY ALL
PROCESSES.
/IT IS FULLY PROTECTED BY VARIOUS ^CCPU HARDWARE FEATURES; IT
CANNOT BE INSPECTED OR MODIFIED BY USER CODE, BUT ONLY ENTERED AT
DISCRETE ENTRY POINTS IMPLEMENTED AS SYSTEM ^ICALLS^E.
/THESE CALLS TAKE ON THE NATURE OF VIRTUAL MACHINE "INSTRUCTIONS," 
CHECKING CAREFULLY THE USER'S INTENDED ACTIONS AND HIS AUTHORITY TO DO THEM
BEFORE INTERACTING IN ANY WAY WITH THE REST OF THE SYSTEM.

       /BEYOND THE PROTECTION MECHANISMS ALLUDED TO ABOVE 
THE INSTRUCTION AND ADDRESSING CAPABILITIES OF THE ^CCPU^ES ARE OF
LITTLE IMPORTANCE TO THE SYSTEM ARCHITECTURE.
/IN THIS SYSTEM VIRTUALLY ANY ^CCPU COULD BE USED (ASSUMING
HARDWARE COMPATIBILITY WITH THE MEMORY SYSTEM AND THE REQUISITE
PROTECTION MECHANISMS).
.SP 2
^I^CCHIO

       /THE ^C^ICH^EARACTER-ORIENTED /^II^E^//^IO PROCESSOR HAS TWO
MAIN FUNCTIONS:  (1) TO COMMUNICATE AND MANAGE THE TERMINALS WHICH
MAY BE CONNECTED TO THE SYSTEM, AND (2) TO PERFORM A NUMBER OF FUNCTIONS
RELATED TO DYNAMIC BUFFERING OF CHARACTER /I^//O STREAMS TO AND FROM
THE USER PROCESSES ON THE ^CCPU^ES.
/ORIGINIALLY THE ^CCHIO WAS DESIGNED TO COMMUNICATE WITH A NUMBER OF REMOTELY
LOCATED COMPUTERS TERMED /DATA /COMMUNICATION /COMPUTERS (^CDCC^ES)
TO WHICH THE ACTUAL TERMINALS WERE CONNECTED.
/THUS IN CONNECTION WITH (1) THE ^CCHIO WAS TO SUPERVISE AND
CONTROL THE VARIOUS ^CDCC^ES, LOAD THEIR LOCAL MEMORIES, MULTIPLEX 
/I^//O FOR INDIVIDUAL TERMINALS, ACKNOWLEDGE CORRECT RECEIPT OF PACKETS
FROM ^CDCC^ES, INITIATE RETRANSMISSIONS TO ^CDCC^ES, ETC.
/IN /HAWAII IT WAS NOT NECESSARY TO IMPLEMENT A FULL-SCALE
COMMUNICATIONS NETWORK JUST TO ACCOMMODATE THE LOCAL TERMINALS; THEY WERE 
WIRED DIRECTLY TO THE ^CCHIO PROCESSOR AND ITS ACTIVITIES WERE MODIFIED TO 
DEAL WITH THE TERMINALS DIRECTLY.
/REMOTE TERMINALS ARE ACCOMMODATED BY MEANS OF THE ^CARPA NETWORK,
WHICH IS INTERFACED TO THE 500 SYSTEM THROUGH THE ^CCHIO PROCESSOR.
.SP 2
^I^CSCHED

       /THE ^I^CSCHED^EULING PROCESSOR'S PRINCIPAL FUNCTION IS TO
SCHEDULE THE TWO ^CCPU^ES AMONGST THE VARIOUS ACTIVE PROCESSES.
/THUS IT IS RESPONSIBLE FOR FIELDING WAKEUP CONDITIONS AS THEY ARE
GENERATED AND FOR MAKING DECISIONS ON THE ORDER IN WHICH PROCESSES
ARE PASSED THROUGH THE CENTRAL MEMORY FROM, SAY, DRUM WHERE THEY
COMMONLY RESIDE.
/THIS INFORMATION IS PASSED TO THE MEMORY MANAGEMENT PORTION OF THE
SYSTEM FOR APPROPRIATE ACTION.
/ON A DIFFERENT LEVEL OF ACTIVITY THE ^CSCHED^EULER MAKES FINAL DECISIONS
AS TO WHICH OF SEVERAL PROCESSES READY TO RUN IN THE CENTRAL MEMORY 
IS ASSIGNED TO EACH ^CCPU.
/THIS DECISION IS NORMALLY MADE AS THE PROCESS ON EACH ^CCPU BLOCKS.
/IT IS POSSIBLE FOR THE ^CSCHED^EULER TO PRE-EMPT A RUNNING PROCESS ON
A ^CCPU; THIS DOES NOT NORMALLY HAPPEN, AS THE ALGORITHMS FOR
SCHEDULING ARE DESIGNED TO PERMIT ^CCPU TASKS NORMALLY TO DISMISS
THEMSELVES OR RUN TO THE END OF A PRESET TIME INTERVAL.
/THE ^CSCHED^EULER GENERATES ITS OWN REAL-TIME WAKEUP CONDITIONS.
.SP 2
^I^CMMP

       /THE ^I/M^EEMORY /^IM^EANAGEMENT /^IP^EROCESSOR IS RESPONSIBLE
FOR MANAGEMENT OF THE ENTIRE SYSTEM MEMORY.
/WE DEFINE MEMORY HERE TO INCLUDE THE CONTENTS OF DRUM AND DISK AS
WELL AS CENTRAL MEMORY.
/THE ^CMMP TOGETHER WITH THE STORAGE UNDER ITS CONTROL CAN BE VIEWED
AS A SEPARATE SYSTEM WITH A TABLE-DRIVEN INTERFACE TO THE REST OF THE 
500 SYSTEM.
/THE MEMORY SYSTEM IS DESCRIBED MORE FULLY IN /SECTION 2.3 BELOW.
/HERE WE SIMPLY POINT OUT THAT THE FUNCTION OF THE ^CMMP IS TO GET
THE RIGHT INFORMATION INTO THE RIGHT PLACE AT THE PROPER TIME.
.SP 2
^I^CSMP

       /THE ^I/S^EYSTEM /^IM^EONITORING /^IP^EROCESSOR CONTINUOUSLY
MONITORS A NUMBER OF INDICATORS WHICH ARE SET ON THE OCCURRENCE OF SOME
MALFUNCTION.
/IT IS EQUIPPED WITH A NUMBER OF SPECIAL CONTROL LINES LEADING TO
THE OTHER PROCESSORS AND HAS THE ABILITY TO CONTROL THESE PROCESSORS AS
WELL AS MONITORING THE SYSTEM'S HEALTH.
/THE ^CSMP MAY THUS EFFECT AUTOMATIC CRASH
RECOVERY PROCEDURES, IN MANY CASES BEFORE SIGNIFICANT DAMAGE TO THE CONTENTS
OF VARIOUS SYSTEM TABLES HAS BEEN DONE.
/THE ^CSMP ALSO CONTAINS A SPECIAL SYSTEM DIAGNOSTIC AND CONTROL ROUTINE
CALLED ^CSYSDDT.
/THIS ROUTINE IS EQUIPPED WITH AN INTERACTIVE INTERFACE VIA A SPECIAL
TERMINAL TO A SOFTWARE OR HARDWARE DIAGNOSTICIAN WHO CAN CONTROL
INDIVIDUAL PROCESSORS IN THE SYSTEM.
/IT CONTAINS A FULL EMULATION FACILITY, FOR EXAMPLE, FOR A ^CCPU.
/EITHER OF THE ^CCPU^ES, WHEN SUSPECTED OF BEING FAULTY, CAN BE
SINGLE-STEPPED BY ^CSYSDDT AND SIMULTANEOUSLY EMULATED SUCH THAT AFTER
THE EXECUTION OF EACH INSTRUCTION THE STATE OF THE REAL ^CCPU CAN BE
COMPARED WITH THAT OF THE EMULATED ONE.
/THIS PROVIDES THE ABILITY TO QUICKLY LOCATE ^CCPU
FAULTS.
^CSYSDDT IS A GENERAL-PURPOSE PROGRAM RUNNING FROM A PRIVATE MEMORY
MODULE ATTACHED TO THE ^CSMP.
/IT PERMITS OTHER DIAGNOSTIC PROCEDURES TO BE DESIGNED ON THE SPOT IF NEED BE
AND READILY INSERTED INTO THE PROCESSOR.
.ER
.EJECT
2.2  /REALIZATION OF THE /DEDICATED /FUNCTIONS

       /THE DETERMINING FACTOR FOR THE 500 SYSTEM ARCHITECTURE WAS THE
DEVELOPMENT OF A SIMPLE, BUT POWERFUL MICROPROCESSOR WHICH IS USED AS THE
BASIS OF ALL OF THE SYSTEM'S PROCESSORS.
/THE MICROPROCESSOR, LIKE MOST, HAS ACTIVE REGISTERS, SCRATCHPAD STORAGE,
BASIC ARITHMETIC AND LOGICAL PROCESSING ABILITY, AND AN INTERFACE BOTH TO
THE CENTRAL MEMORY AND TO A PRIVATE MEMORY.
/IT ALSO HAS APPROXIMATELY 2/K OF DIODE READ-ONLY MEMORY (^CROM) FROM
WHICH IT FETCHES ITS MICRO-INSTRUCTIONS.
/THE ^CROM HAS A MINIMUM CYCLE TIME OF ABOUT 65 NSEC; BUT THE ENTIRE
PROCESSOR IS OPERATED SYNCHRONOUSLY WITH A 100 NSEC CLOCK.
/THIS MEANS THAT EACH 100 NSEC A NEW MICRO-INSTRUCTION MAY BE FETCHED 
AND EXECUTED.

       /EACH WORD IN THE ^CROM CONTAINS ONE MICRO-INSTRUCTION.
/THERE ARE 90 BITS IN EACH WORD, HOWEVER, SO THAT VERY LITTLE
ENCODING OF THE BITS IN THE MICRO-INSTRUCTION IS USED.
/THIS, TOGETHER WITH THE EXISTENCE OF SEVERAL BUSSES CONNECTING THE
VARIOUS STORAGE AND PROCESSING ELEMENTS, PERMITS UP TO THREE OR FOUR 
OPERATIONS TO BE DONE IN A GIVEN MICRO-INSTRUCTION.
/THUS THE PROCESSOR IS THEORETICALLY CAPABLE OF BURSTS OF COMPUTATION OF
UP TO 20 OR 30 MILLION OPERATIONS PER SECOND.
/IN PRACTICE THIS SPEED IS NOT ATTAINED FOR LONG DURATIONS, AS IT IS NOT
ALWAYS POSSIBLE TO CRAM THREE OR FOUR OPERATIONS INTO EVERY INSTRUCTION
AND THE PROCESSOR MUST WAIT FOR MEMORY RESPONSES WHEN IT REFERENCES
CENTRAL OR LOCAL MEMORY.
/ITS AVERAGE RATE OF PROCESSING IS CONSEQUENTLY SOMEWHAT LESS, DEPENDING ON THE
FREQUENCY WITH WHICH IT ACCESSES MEMORY.

       /IT WAS DECIDED EARLY IN THE 500 SYSTEM DESIGN TO PLACE THE
DEDICATED FUNCTIONS OF EACH PROCESSOR DIRECTLY INTO THE PROCESSOR MICROCODE.
/THIS GIVES A DISTINCTIVE CAST TO THE SYSTEM, AS IT MEANS IN EFFECT THAT
THE BULK OF THE OPERATING SYSTEM EXISTS IN THE PROCESSOR HARDWARE
(MORE PRECISELY, THE ^IFIRMWARE).
/CLEARLY, THE PROCESSORS OPERATING IN THIS MODE HAVE HIGH CAPABILITY
(THEIR INSTRUCTION BANDWIDTH IS HIGH SINCE THEY REFER TO MEMORY ONLY FOR
DATA).
/BUT THE OPERATING SYSTEM ALGORITHMS ARE DIFFICULT TO CHANGE, AS THE
^CROM^ES CAN BE MODIFIED ONLY BY REMOVING AND INSERTING DIODES.

       /THE DIFFICULTY OF CHANGING THE MICROCODE MAY BE VIEWED AS A
BENEFICIAL CONSTRAINT.
/IT IS THE SAME CONSTRAINT THAT REQUIRES A HARDWARE DESIGNER TO EXERCISE
EXTREME CARE AND REGULARITY IN HIS DESIGNS, YIELDING RESULTS WHICH ARE MORE 
NEARLY CORRECT AND MORE MAINTAINABLE.
/YET, IT IS PROBABLY UNFAIR TO PRESS THE ANALOGY TOO FAR.
/THUS, IN EACH PROCESSOR THERE IS FOUND MICROCODE WHICH, IN MORE CLASSICAL
FASHION EMULATES THE INSTRUCTION SET OF A SIMPLE, CONVENTIONAL PROCESSOR.
/THIS MICROCODE GOES TO MEMORY FOR INSTRUCTION FETCHING FOR THE EMULATED 
PROCESSOR; AND THUS EACH PROCESSOR CAN EXECUTE CONVENTIONAL SOFTWARE.

       /IN PRACTICE, BOTH TECHNIQUES ARE USED.
/PLACED DIRECTLY INTO FIRMWARE ARE THOSE FUNCTIONS WHICH ARE FUNDAMENTAL,
CLEARLY-KNOWN, TIME-CONSUMPTIVE OPERATIONS.
/IN THE SOFTWARE ARE THOSE FUNCTIONS WHICH ARE NOT SO WELL DEFINED
INITIALLY OR WHICH ARE MOST SUBJECT TO CHANGE.
/THE EMULATED PROCESSOR HAS AN INSTRUCTION TO CALL MICROCODED SUBROUTINES
DIRECTLY, AND THE MICROCODE CAN ALSO START UP AND STOP THE EMULATED
PROCESSOR.
/THUS ONE CAN TAKE TWO VIEWS OF THIS HYBRID APPROACH: THE VIEW THAT THE
MICROPROCESSOR EMULATES A STANDARD PROCESSOR WHICH CONTAINS AN EXTRAORDINARY
SET OF ADDITIONAL INSTRUCTIONS (THE MICROCODED SUBROUTINES) TO HELP IT
PERFORM ITS DEDICATED TASKS, OR THE VIEW THAT THE MICROPROCESSOR PERFORMS
ITS TASKS DIRECTLY FROM MICROCODE, SOME OF WHICH IS SIMULATED BY
THE STANDARD PROCESSOR DUE TO THE NECESSITY TO CHANGE OR PARAMETERIZE IT.
/WE PREFER THE LATTTER VIEW, BUT EITHER RESULTS IN THE SAME END:
THE TIME-CONSUMPTIVE OPERATIONS ARE EXECUTED DIRECTLY FROM MICROCODE
WHILE THAT PORTION OF THE ALGORITHMS MOST SUBJECT TO CHANGE
IS KEPT IN SOFTWARE.
/THIS SOFTWARE RESIDES IN LOCAL MEMORIES FOR THOSE PROCESSORS SO
EQUIPPED; IT IS OTHERWISE FOUND IN DEDICATED AREAS OF THE CENTRAL MEMORY.
/SIMILARLY, DATA STORAGE REQUIRED FOR THE SOLE USE OF A GIVE PROCESSOR IS
KEPT IN PRIVATE MEMORY, WHEREAS CENTRAL MEMORY IS USED FOR THAT STORAGE
WHICH MUST BE SHARED BETWEEN PROCESSORS.
.EJECT
2.3  /THE /MEMORY /SYSTEM

       /FIGURE 3 SHOWS THE PRINCIPAL COMPONENTS OF THE MEMORY SYSTEM.
/THE PROCESSORS ACCESS ONLY THE CENTRAL MEMORY (^CCM), SHOWN IN THE
FIGURE AS A FOUR-PORT MEMORY (UP TO FOUR MEMORY TRANSFERS CAN OCCUR
EACH MEMORY CYCLE).
/THREE OF THE PORTS ARE USED FOR PROCESSOR ACCESS, AND THE FOURTH IS 
EXTERNALLY MULTIPLEXED TO ACCOMMODATE THE COLLECTIVE TRANSFERS OF THE
ROTATING MEMORY DEVICES.
/BECAUSE OF THE LARGE NUMBER OF USER PROGRAMS BEING ACCOMMODATED IT IS
NECESSARY TO TRANSFER LARGE QUANTITIES OF INFORMATION RAPIDLY BETWEEN
^CCM AND DRUM AND DISK.
/ONE VIEWPOINT WHICH CAN BE TAKEN OF THE MEMORY SYSTEM IS THAT THE
ROTATING MEMORY -- PRIMARILY DRUM -- CONSTITUTES THE SYSTEM'S
MAIN MEMORY AND THAT THE ^CCM IS BUT A WINDOW ON THIS MEMORY THROUGH 
WHICH THE ^CCPU^ES ARE PERMITTED TO ACCESS USER PROGRAMS SUBJECT
TO USUAL SCHEDULING CONSIDERATIONS.
/WITH SUCH A POINT OF VIEW (SEE /FIGURE 4) WE SEE THE DESIRABILITY FOR 
CONTINUOUS TRANSFER OF INFORMATION THROUGH THE ^CCM.

.FIGURE SPACING 24
.CENTER
/FIGURE 3.  /B/C/C 500 /MEMORY /SYSTEM.
.SP 3
       /IN /FIGURE 4 WE NOTE THAT USER PROGRAMS (MORE PRECISELY, PROCESSES)
FOUND IN THE ^CCN MAY BE CLASSED INTO ONE OF FOUR CATEGORIES:
.SP 2
.RM 7
1)  INCOMING PROCESSES (PARTIALLY LOADED)
.SP
2)  FULLY LOADED PROCESSES (READY TO RUN)
.SP
3)  ACTIVE PROCESSES (BEING RUN BY A ^CCPU)
.SP
4)  OUTGOING PROCESSES (PARTIALLY UNLOADED).
.SP 2
.ER
/CLEARLY THE INDIVIDUAL PROCESSES DO NOT MOVE PHYSICALLY THROUGH THE
^CCM AS /FIGURE 4 SUGGESTS.
.FIGURE SPACING 24
.CENTER
/FIGURE 4.  /CONCEPTUALIZATION OF THE /MEMORY /SYSTEM OPERATION.
.SP 3
/THEY ARE PLACED INTO RANDOMLY AVAILABLE PAGE SLOTS BY THE ^CMMP AND MAPPED
INTO THEIR PROPER POSITION IN THE LOGICAL ADDRESS SPACE BY PAGE MAPS
ASSOCIATED WITH EACH ^CCPU.
/TO FACILITATE THE HANDLING OF PAGES IN CENTRAL MEMORY, THE DATA
FORMAT ON THE DRUMS AND DISKS WAS DESIGNED SO THAT PAGES ARE THE ONLY UNIT
OF INFORMATION TREATED AS ADDRESSIBLE ENTITIES WITHIN THE MEMORY SYSTEM.

       /FIGURE 4 ILLUSTRATES HOW THE SIZE OF ^CCM IS MINIMIZED BY
THE RAPID SWAPPING:  THE ^CCM NEED BE LARGE ENOUGH ONLY TO HOLD THE TWO
ACTIVE PROCESSES PLUS ENOUGH ADDITIONAL SPACE TO "BUFFER" THE PROCESSES UNDER
TRANSFER, I.E., TO ENSURE THAT WITH GOOD PROBABILITY THERE IS ALWAYS A
READY PROCESS TO WHICH TO ASSIGN A ^CCPU WHEN ITS CURRENT PROCESS BLOCKS.
(/THE SYSTEM ACTUALLY DEALS WITH ^IWORKING ^ISETS OF PAGES -- PAGES OF
A PROCESS ON WHICH ALL MEMORY REFERENCES ARE LOCALIZED DURING AN ACTIVE 
QUANTUM OF A PROCESS.)
/THE AMOUNT OF ^CCM USED TO BUFFER INCOMING AND OUTGOING PROCESSES IS KEPT 
LOW BY DYNAMICALLY ALLOCATING SPACE ON THE DRUMS.
/THE ^CMMP WRITES OUT PROCESS PAGES AT ANY SECTOR ADDRESS CURRENTLY 
AVAILABLE AND UNDER
THE READ^/WRITE HEADS; SIMILARLY IT READS IN PROCESSES IN THE ORDER IN
WHICH A PROCESS'S PAGES HAPPEN TO COME UNDER THE HEADS.

       /THE IDENTITY OF THE PAGES IN A GIVEN PROCESS WORKING SET TOGETHER
WITH THEIR LOCATION IN THE MEMORY SYSTEM IS MAINTAINED BY THE ^CMMP IN
VARIOUS RESIDENT TABLES IN THE ^CCM.
(/THIS SPACE IS NOT SHOWN IN /FIGURE 4.)
/THE ^CMMP MUST REFER TO THESE TABLES CONSTANTLY AND TO THE ROTATIONAL
POSITION OF EACH OF THE 16 ROTATING DEVICES IN ORDER TO KEEP THE FLOW OF
PAGES MOVING AT AN OPTIMUM RATE.
.EJECT
3.0  ^USYSTEM OPERATION^L

       /THE PURPOSE OF THE SYSTEM IS TO PROVIDE AN ENVIRONMENT FOR
THE EXECUTION OF USER PROCESSES WHICH, IN TURN, TYPICALLY ACCESS AND
MODIFY USER FILES.
/PROCESSES AND FILES ARE THUS PRINCIPAL SYSTEM OBJECTS 
CONSISTING OF PAGES OF INFORMATION CONTAINED WITHIN THE MEMORY SYSTEM
TOGETHER WITH ADDITIONAL DESCRIPTIVE INFORMATION.
/THE PROCESS CONSISTS OF SYSTEM CODE SHARED WITH ALL PROCESSES
(THAT CODE WHICH COMMUNICATES WITH THE MANAGEMENT PROCESSORS),
SYSTEM CODE WHICH MAY BE UNIQUE TO THE PROCESS OR SHARED WITH A 
NUMBER OF OTHER PROCESSES, USER CODE, AND ALL VARIABLE STORAGE.
/IT ALSO INCLUDES A SO-CALLED ^ICONTEXT ^IBLOCK CONTAINING
THE ^CCPU STATE WHEN THE PROCESS IS INACTIVE, UNIQUE NAMES OF ALL
THE PROCESS PAGES, CONSTITUTION OF THE PRESENT WORKING SET OF
PAGES (THOSE PAGES WHICH MUST BE LOADED INTO CENTRAL MEMORY BEFORE
THE PROCESS CAN BE CONSIDERED FOR ACTIVATION), AND MAPPING INFORMATION.
/THE FILE CONSISTS OF THOSE PAGES HOLDING THE FILE'S CONTENTS PLUS 
DIRECTORY INFORMATION, AGAIN NAMING THE PAGES AND ORDERING
THEM WITHIN THE FILE.

       /THE FILES CAN BE CREATED AND DESTROYED (BY PROCESSES); 
IN THE MEANTIME THEY
RESIDE PERMANENTLY WITHIN THE SYSTEM.
/THE PLACE OF RESIDENCE OF INACTIVE FILES IS, OF COURSE, DISK.
/WHEN FILES ARE ACCESSED THE MEMORY SYSTEM MOVES THEM FIRST TO
DRUM AND THEN TO CENTRAL MEMORY FOR THE ACTUAL ACCESS.
/AS THE FILE IS NO LONGER ACCESSED AND ROOM ON THE DRUM IS NEEDED
FOR NEW FILES OR PROCESSES, THE FILE IS MOVED BY THE MEMORY SYSTEM
BACK TO DISK.

       /PROCESSES ARE CREATED BY A
SINGLE SYSTEM SUBPROCESS BY USER REQUEST, USUALLY WHEN HE LOGS INTO
THE SYSTEM.
/EACH PROCESS HAS A SUBPROCESS STRUCTURE TO FACILITATE
BOTH THE SYSTEM DESIGN AND THE NEEDS OF THE USER.
/THE STRUCTURE IS A SIMPLE, LINEAR ONE IN WHICH EACH SUBPROCESS IS THE
INFERIOR OF AT MOST ONE OTHER SUBPROCESS AND IN TURN IS (IMMEDIATELY)
SUPERIOR TO AT MOST ONE SUBPROCESS.
/SUBPROCESSES MAY HAVE THEIR OWN MEMORY SPACES OR MAY SHARE PORTIONS
OR ALL OF MEMORY WITH OTHER SUBPROCESSES.
/THEY MAY
COMMUNICATE BY MEANS OF 
MESSAGES PASSED THROUGH SHARED MEMORY OR BY (SOFTWARE) INTERRUPTS.
/AT THE END OF A COMPUTATION THE PROCESS TERMINATES ITSELF OR IS 
TERMINATED BY THE USER WHEN HE LOGS OUT.
/AN OPTION PERMITS THE USER TO LOG OUT OF THE SYSTEM, LEAVING HIS
PROCESS UNDESTROYED BUT IN A DORMANT STATE.
/THE PROCESS THEN TAKES ON THE NATURE OF A FILE, I.E., IT TAKES ON A
SYMBOLIC NAME AND IS PLACED IN A DIRECTORY FOR LATER REFERENCE.
/AT A LATER TIME A SIMILAR OPTION AT LOG-IN PERMITS THE USER TO
RE-ATTACH HIMSELF TO THE DORMANT PROCESS OR ESTABLISH A NEW ONE.

       /IT HAS BEEN IMPLIED IN ALL OF THE FOREGOING WHAT EACH OF THE
PROCESSORS DOES WITH RESPECT TO A PROCESS OR A FILE.
/WE STATE HERE MORE EXPLICITLY THE ACTIVITIES OF EACH MANAGEMENT
PROCESSOR RELATIVE TO PROCESSES AND FILES.
.SP 2
.RM 5,5
^I^CCHIO

       /THE ^CCHIO PASSES CHARACTER STREAMS BETWEEN PROCESSES AND 
^CI^/O TERMINALS.
/IT ALSO PASSES FILES BETWEEN THE SYSTEM AND EXTERNAL STORAGE
MEDIA SUCH AS MAGNETIC TAPE OR SPECIAL /I^//O DEVICES SUCH AS LINE
PRINTERS.
/THE ^CCHIO PROCESSOR ALSO COMMUNICATES WITH THE ^CARPA NETWORK.
.SP 2
^I^CSCHED

       /THE ^CSCHED^EULER SELECTS PROCESSES FOR RUNNING AND DIRECTS THIS
INFORMATION TO THE ^CMMP.
/IT ALSO ATTACHES PROCESSES LOADED AND READY TO RUN TO ^CCPU^ES.
/IT DOES THIS BY PLACING A POINTER TO THE PROCESS CONTEXT BLOCK IN A
SPECIAL CENTRAL MEMORY LOCATION AND SETTING A REQUEST LATCH IN THE
GIVEN ^CCPU, WHICH THEN PROCEEDS TO LOAD ITS OWN STATE FROM THE CONTEXT
BLOCK AND RESUME COMPUTATION.
/THE ^CSCHED^EULER SETS IN THIS STATE A TIME INTERVAL WHICH IS PICKED
UP BY THE ^CCPU AND COUNTED DOWN IN REAL TIME, AT WHICH TIME THE ^CCPU
BLOCKS THE PROCESS, DUMPS ITS STATE IN THE CONTEXT BLOCK AND NOTIFIES
THE ^CSCHED^EULER THAT IT HAS BLOCKED.
/THE ^CSCHED PROCESSOR DOES NOT DEAL WITH FILES.
.SP 2

^C^IMMP

       /THE ^CMMP SWAPS PROCESSES AND FILES OR PORTIONS OF FILES
INCLUDED IN A PROCESS WORKING SET.
/IT ALSO GOES TO DISK WHEN REQUIRED TO MOVE FILES OR PROCESSES TO DRUM,
AND VICE VERSA.
/BOTH CORE AND DRUM ARE DYNAMICALLY ALLOCATED.
/THE LOCATIONS OF PAGES IN THESE AREAS ARE KEPT TRACK OF IN SPECIAL
HASH TABLES IN CENTRAL MEMORY KEYED BY THE PAGE UNIQUE NAMES.
/DISK, ON THE OTHER HAND IS ALLOCATED IN A MORE STATIC FASHION: EACH PAGE
EXISTING IN THE SYSTEM HAS A FIXED, PERMANENT RESIDENCE ON DISK.
/THE LOCATION OF EACH PAGE ON DISK IS DETERMINED WHEN THE PAGE IS CREATED
AND REMAINS SO UNTIL THE PAGE IS DESTROYED.

.ER
.EJECT
3.1  /INTERPROCESSOR /COMMUNICATION
.SP 2
       /IN A MULTIPROCESSOR SYSTEM THE PROCESSORS BY DEFINITION
INTERACT.
/THE NEXT SEVERAL SECTIONS EXPLORE THE NATURE OF THE COMMUNICATION
BETWEEN THE 500 SYSTEM PROCESSORS.  /THIS COMMUNICATION CLOSELY
PARALLELS THAT BETWEEN DIFFERENT MODULES OF A CONVENTIONAL OPERATING
SYSTEM.

       /BASICALLY THE PROCESSORS COMMUNICATE BY MEANS OF CENTRAL
MEMORY, I.E., BY CHANGING BITS IN SHARED TABLES.
/TO SPEED UP A PROCESSOR'S HAVING TO LOOK THROUGH EXTENSIVE TABLES FOR
CHANGES, A HARDWARE FLAG SYSTEM IS PROVIDED.
/THIS MECHANISM CONSISTS OF A SMALL NUMBER OF LATCHES IN EACH PROCESSOR
WHICH CAN BE SET BY ONE OR MORE OTHER PROCESSORS.
/THE LATCHES -- CALLED ^IREQUEST ^ISTROBES -- ARE TESTED AND RESET
BY EACH PROCESSOR'S MICROCODE.
/FLAGS IN CENTRAL MEMORY AUGMENT THIS RUDIMENTARY FACILITY INTO A
MORE GENERAL ONE.

.SP 5
.EJECT 20
3.2  /PROCESSOR /INTERLOCKING
.SP 2

       /WHEN MORE THAN ONE PROCESSOR ACCESSES A DATA STRUCTURE IT IS
GENERALLY NECESSARY TO UTILIZE AN INTERLOCK MECHANISM -- A MEANS BY 
WHICH ONLY ONE PROCESSOR AT A TIME CAN MODIFY THE DATA STRUCTURE INTO A
NEW STATE WHICH IS MEANINGFUL TO ALL PROCESSORS.  
(/IN EFFECT AN INTERLOCK ALLOWS A PROCESSOR TO SEIZE A GIVEN DATA
STRUCTURE, RENDERING IT INACCESSIBLE TO ALL OTHER PROCESSORS UNTIL THE
PROCESSOR HAS COMPLETED ITS UPDATING TASK).
/IN THE 500 SYSTEM SPECIAL HARDWARE INTERLOCKS OPERATING AT MICROCODE
SPEEDS ARE PROVIDED.
/THESE INTERLOCKS -- CALLED ^IPROTECTS -- CONSIST OF EIGHT CENTRAL LATCHES
WHICH MAY BE SET OR RESET BY ANY PROCESSOR BUT BY ONLY ONE AT A TIME.
/THAT IS, IF MORE THAN ONE PROCESSOR ATTEMPTS TO ACQUIRE THE SAME PROTECT
AT THE SAME TIME OR IF THE PROTECT IS ALREADY SET, A HARDWARE CONTENTION
CIRCUIT RESOLVES THE CONFLICT AND ISSUES A POSITIVE OR NEGATIVE ACKNOWLEDGEMENT
TO THE APPROPRIATE PROCESSOR.
/PROCESSORS RECEIVING POSITIVE ACKNOWLEDGEMENTS TO PROTECT REQUESTS THEN
"OWN" THE PROTECT (AND THE DATA STRUCTURE ASSOCIATED WITH IT)
UNTIL THEY VOLUNTARILY RELINQUISH IT.

       /THE PARTICULAR PROTECT MECHANISM USED IS GREATLY SIMPLIFIED BY
THE FACT THAT EACH PROCESSOR (AND IN FACT, ^IEVERY SYSTEM COMPONENT)
IS OPERATED WITH A COMMON CLOCK.
/THUS PROCESSORS MAKE PROTECT REQUESTS IN EXACT SYNCHRONISM.
/THE HARDWARE CONTENTION CIRCUIT SHIFTS ITS NOTIONS OF CONTENTION
PRIORITY IN SUCH A WAY THAT EACH PROCESSOR IS TREATED WITH THE SAME PRIORITY
ON THE AVERAGE.

.EJECT
3.3  /ILLUSTRATION OF /PROCESSOR /INTERACTION
.SP 2
       /FIGURE 5 SHOWS THE PROCESSORS (EXCEPT ^CSMP) AND SOME OF
THE MORE IMPORTANT COMMUNICATION SIGNALS BETWEEN THEM.
/EACH PROCESSOR IS DEDICATED TO ITS OWN TASK AND IS DESIGNED
TO OPERATE AUTONOMOUSLY, INDEPENDENT OF THE OTHER PROCESSORS.
/NO ONE PROCESSOR IS "IN CNTROL" OF THE OTHER PROCESSORS OR OF THE
SYSTEM (EXCEPT FOR, THAT IS, THE ^CSMP WHICH EXERCISES ITS PRIVILEGES
ONLY WHEN A PROBLEM DEVELOPS -- SEE /SECTION XXXX ON RESTARTS).
.FIGURE SPACING 24
.CENTER
/FIGURE 5.  /SCHEMATIC OF /PROCESSOR /INTERACTION
.SP 2
       /CONSIDER THE ACTIONS OF THE PROCESSORS AND THE COMMUNICATION
BETWEEN THEM IN RESPONSE TO AN INTERACTIVE USER TYPING A COMMAND ON
HIS TERMINAL.
/WE WILL ASSUME THAT AT THIS TIME HIS PROCESS IS BLOCKED FOR REASONS
OF /I^//O AND THAT THE PROCESS IS PHYSICALLY LOCATED ON DRUM.

.RM 5,5
.SP 2
1.  ^CCHIO

       /AS THE USER TYPES, HIS CHARACTERS ARE ACCUMULTED BY THE ^CCHIO.
(/IN /HAWAII THE ^CCHIO ALSO ECHOES THESE CHARACTERS; THE ^CDCC^ES WERE
ORIGINALLY DESIGNED FOR THIS UNDER CONTROL OF THE ^CCHIO.)
/AS PART OF ITS WORK THE ^CCHIO CHECKS EACH CHARACTER TO SEE IF IT IS A
"WAKEUP" CHARACTER.
(/WAKEUP CHARACTERS ARE DEFINED FOR THE ^CCHIO BY THE PROGRAM THE USER
IS INTERACTING WITH.)
/UNTIL A WAKEKUP CHARACTER IS RECEIVED BY THE ^CCHIO IT SIMPLY BUFFERS
AND ECHOES THE CHARACTERS BEING TYPED.
/WHILE THIS IS GOING ON, ^IONLY THE ^CCHIO GIVES ATTENTION TO THE USER.
/NO OTHER PROCESSORS -- IN PARTICULAR, THE ^CCPU^ES -- ARE INVOLVED.
/THEY ARE EXECUTING CODE FOR OTHER USERS.

       /WHEN THE ^CCHIO RECEIVES A WAKEUP CHARACTER (SAY, ^CEOL IN OUR
CASE), IT INITIATES THE SEQUENCE OF EVENTS WHICH ARE REQUIRED TO BRING
INTO EXECUTION THE PROGRAM THE USER IS INTERACTING WITH.
/THE ^CCHIO DOES THIS BY PASSING A SIMPLE MESSAGE TO THE ^CSCHED^EULER;
A POINTER TO THE APPROPRIATE PROCESS IS PLACED INTO A SMALL QUEUE.
.SP 2

2.  ^CSCHED^EULER

       /THE MESSAGE FROM THE ^CCHIO IS RETRIEVED BY A DISPATCHER TASK
IN THE ^CSCHED^EULER AND PASSED TO THE ^CSCHED^EULER'S ^CWAKEUP TASK.
/THIS TASK JUST (1) RECORDS A BIT WHICH IDENTIFIES THE SOURCE OF THE
WAKEUP AND (2) QUEUES THE PROCESS ON A QUEUE CALLED
THE ^CWAKEUP QUEUE.

       /AN INDEPENDENT TASK (THE ^CSCHEDULING TASK) LATER REMOVES THE
PROCESS FROM THE ^CWAKEUP QUEUE AND PLACES IT ON THE APPROPRIATE ONE OF
SEVERAL ^CSCHEDULER QUEUES.
/STILL ANOTHER TASK REMOVES THE PROCESS FROM THIS QUEUE AND SENDS A MESSAGE
TO THE ^CSWAPPER TASK IN THE ^CMMP, REQUESTING THAT THE PROCESS BE LOADED
INTO CENTRAL MEMORY.

.SP 2
3.  ^CMMP

       /THE ^CMMP, IN RESPONSE TO THE REQUEST FROM THE ^CSCHED^EULER, SETS
ABOUT THE TASK OF READING THE PROCESS WORKING SET OF PAGES INTO
CENTRAL MEMORY.
/WHEN THIS RATHER COMPLEX ACTION HAS BEEN COMPLETED, THE ^CMMP NOTES
BACK TO THE ^CSCHED^EULER THAT THE PROCESS IS LOADED.
/NOTE THAT DURING THE TIME THE ^CMMP IS READING PAGES OF THE PROCESS
INTO MEMORY, ^IONLY THE ^CMMP IS CONCERNED WITH THE PROCESS.
/IN PARTICULAR, AGAIN, THE ^CCPU^ES ARE RUNNING OTHER PROCESSES.

.SP 2
4.  ^CSCHED^EULER

       /LOADED PROCESSES BECOME THE RESPONSIBILITY OF THE ^CSCHED^ELER
TASK CALLED THE ^CMICRO-SCHEDULER.
/THIS IS THE MODULE THAT ACTUALLY CONTROLS THE ^CCPU^ES.
/IT KEEPS TRACK OF THE "PRIORITIES" OF THE PROCESSES EXECUTING ON THE
^CCPU^ES AND OF THE PROCESSES WHICH ARE LOADED AND READY TO BE EXECUTED.
/WHEN A ^CCPU BECOMES AVAILABLE FOR OUR PROCESS (BY VIRTUE OF ITS BEING
FREE OR BECAUSE ITS CURRENT PROCESS HAS LOWER PRIORITY THAN OURS)
THE ^CMICRO-SCHEDULER HANDS THE PROCESS TO THE ^CCPU AND TELLS IT TO RUN.
.SP 2
5.  ^CCPU

       /WHEN THE ^CCPU RECEIVES THE "SWITCH PROCESSES" MESSAGE FROM THE
^CSCHED^EULER IT PICKS UP THE STATE OF OUR PROCESS FROM ITS CONTEXT
BLOCK AND STARTS EXECUTING IT.
/IF IT IS RUNNING A PROCESS ALREADY, IT WAITS UNTIL THE PROCESS IS
NOT EXECUTING FROM ITS SYSTEM CODE;
AND AS SOON AS THIS IS TRUE IT STORES THE STATE OF THE
^CCPU INTO THE CONTEXT BLOCK OF THE PROCESS.
/IT THEN SENDS A MESSAGE TO THE ^CSCHED^EULER, LETTING IT KNOW THAT
THE ^CCPU HAS BLOCKED THE PROCESS IT WAS RUNNING.
/ON PICKING UP OUR PROCESS, THE ^CCPU THEN COMMUNICATES WITH THE ^CCHIO TO
RECEIVE THE MESSAGE TYPED BY THE USER WHICH EVOKED ALL THIS ACTIVITY.

.ER
.EJECT
3.4  /EXPLICIT /COMMUNICATION /BETWEEN THE /PROCESSORS

       /IN THIS SECTION WE CONSIDER THE PROCESSOR COMMUNICATION
INTERFACES IN MORE DETAIL.
/WE CONSIDER THE VARIOUS POSSIBLE PAIRWISE COMBINATIONS.
.SP 2
1.  ^CCHIO - ^CCPU^ES

       /IN THESE BI-DIRECTIONAL EXCHANGES THE SYSTEM CODE RUNNING ON
A ^CCPU IS ALWAYS THE INITIATOR.
/AT THE COMMAND OF A USER PROGRAM, THE SYSTEM CODE REQUESTS THE ^CCHIO
TO ACCEPT SOME CHARACTERS FOR DELIVERY TO A TERMINAL, TO DELIVER TO
THE ^CCPU CHARACTERS WHICH THE ^CCHIO HAS RECEIVED AND BUFFERED, OR TO
CHANGE THE STATE OF SOME TERMINAL PARAMETER SUCH AS ECHO STRATEGY,
WAKEUP STRATEGY, ETC.
/THE SYSTEM CODE PUTS ITS REQUEST, TOGETHER WITH ANY ASSOCIATED DATA, INTO
THE ^CCHIO'^ES REQUEST BUFFER (A BLOCK OF WORDS IN CENTRAL MEMORY), SETS
A "REQUEST WAITING" FLAG ASSOCIATED WITH THIS BUFFER (A BIT IN ^CCM), AND
SETS THE ^CCHIO'^ES REQUEST STROBE LATCH TO LET IT KNOW IT SHOULD LOOK
AT ITS REQUEST BUFFER.
/IF THE NATURE OF THE REQUEST IS SUCH THAT NO REPLY OR RESPONSE FROM
THE ^CCHIO IS EXPECTED, THIS COMPLETES THE INTERACTION.
/THE SYSTEM CODE RETURNS CONTROL TO THE USER CODE THAT CALLED IT.
/THE ^CCHIO PROCEDES AT ITS LEISURE (ALTHOUGH VERY QUICKLY) TO PERFORM
THE REQUESTED OPERATION.
/WHEN IT FINISHES, IT RESETS THE "REQUEST WAITING" FLAG.
/FOR THOSE REQUESTS TO WHICH THE SYSTEM CODE IN THE ^CCPU DOES EXPECT
A REPLY (SUCH AS ONE WHICH ASKS FOR THE DELIVERY OF ANY CHARACTERS
WHICH MAY HAVE COME IN FROM A GIVEN TERMINAL), THE SYSTEM CODE WAITS WHILE
THE ^CCHIO PERFORMS THE REQUEST.
/THE ^CCHIO PUTS ITS RESPONSE IN THE SAME MESSAGE BUFFER AND RESETS THE
"REQUEST WAITING" FLAG TO LET THE SYSTEM CODE KNOW THAT THE RESPONSE
IS READY.  
/THE SYSTEM CODE THEN DELIVERS THE RESPONSE AND POSSIBLY THE CHARACTERS
TO THE USER CODE.

.SP 2
2.  ^CCHIO - ^CSCHED

       /THIS COMMUNICATION IS ONLY ONE WAY: FROM THE ^CCHIO TO THE
^CSCHED.
/WHEN THE ^CCHIO FINDS THAT IT HAS COLLECTED A COMPLETE MESSAGE FOR
A PROCESS, I.E., WHEN IT GETS A WAKEUP CHARACTER FROM A TERMINAL, THE
^CCHIO SENDS A NOTIFICATION TO THE ^CSCHED.
/IT DOES THIS BY PLACING A SHORT MESSAGE CONTAINING THE PROCESS' ^CID
INTO THE ^CSCHED^E'S MESSAGE INPUT BUFFER.
/THIS BUFFER IS ALSO USED BY THE OTHER PROCESSORS IN COMMUNICATING WITH
THE ^CSCHED TO COMMUNICATE A VARIETY OF THINGS.
/A "WAKEUP MESSAGE" FROM THE ^CCHIO MUST THUS CONTAIN MORE THAN JUST
THE ^CID OF THE PROCESS FOR WHOM THE ^CCHIO HAS COLLECTED A MESSAGE.
/IT CONTAINS AN "OPCODE" WHICH MEANS THAT THE MESSAGE IS A WAKEUP MESSAGE
PLUS A SPECIFICATION OF THE REASON FOR THE WAKEUP MESSAGE.

       /THE ^CCHIO SENDS WAKEUP MESSAGES TO THE ^CSCHED FOR OTHER REASONS
ALSO.
/AMONG THEM ARE
.RM 5
.SP

.UN 2
- THE INPUT BUFFERS ALLOCATED TO A PROCESS ARE (NEARLY) FULL

.SP
.UN 2
- THE OUTPUT BUFFERS ALLOCATED TO A PROCESS ARE EMPTY ENOUGH THAT THE
PROCESS CAN PROCEED TO DO MORE OUTPUT

.SP
.UN 2
- A SPECIAL CONTROL CHARACTER(A ^CQUIT OR ^CESCAPE CHARACTER) HAS BEEN
RECEIVED FROM THE PROCESS' TERMINAL.

.ER

       /THE ^CSCHED'^ES MESSAGE INPUT BUFFER IS USED BY ALL THE SYSTEM
PROCESSORS.
/IT IS PROTECTED FROM SIMULTANOUS ACCESS BY MEANS OF ONE OF THE HARDWARE
^CPROTECT^ES.
/THUS, WHENEVER A PROCESSOR WANTS TO REFERENCE THIS BUFFER, IT FIRST
ACQUIRES THE ASSOCIATED ^CPROTECT, MAKES ITS REFERENCE (WHICH ONLY
REQUIRES FOUR OR FIVE MEMORY REFERENCES), AND THEN RELEASES THE ^CPROTECT.
/AFTER PLACING A REQUEST IN THE BUFFER, THE PROCESSOR SETS A REQUEST
STROBE LATCH IN THE ^CSCHED TO LET IT KNOW THAT THERE IS A MESSAGE FOR IT.

.SP 2
3.  ^CCHIO - ^CMMP

       /THESE TWO PROCESSORS HAVE NO NEED TO COMMUNICATE WITH EACH
OTHER.

.SP 2
4.  ^CCPU^ES - ^CMMP

       /MESSAGE EXCHANGE BETWEEN THESE TWO PROCESSORS IS ALWAYS INITIATED
BY THE SYSTEM CODE IN A ^CCPU MAKING A REQUEST ON THE ^CMMP.
/MESSAGES FROM THE ^CMMP TO THE ^CCPU ARE ALWAYS RESPONSES TO SUCH REQUESTS.

       /WHAT THE TWO PROCESSORS TALK ^IABOUT ARE PAGES OF MEMORY.  
/EACH PAGE IN THE MEMORY SYSTEM HAS BEEN GIVEN A UNIQUE NAME AT CREATION
TIME. 
/PAGES ARE ALWAYS REFERRED TO BY NAME.
/FOR EXAMPLE THE SYSTEM CODE IN THE ^CCPU MAKES SUCH REQUESTS AS

.RM 3

.SP
- CREATE A NEW PAGE

.SP
- DESTROY A PAGE

.ER

       /THE ^CMMP HAS THREE SEPARATE MESSAGE INPUT "PORTS."  
/EACH PORT CORRESPONDS TO A MAJOR TASK STRUCTURE IN THE ^CMMP.
/ONE IS FOR THE ^CSWAPPER, ONE FOR A DIRECT /I^//O CAPABILITY (NOT A
NORMAL USER'S FACILITY), AND ONE IS A UTILITY TASK.

       /TO MAKE A REQUEST ON THE ^CMMP, THE ^CCPU SYSTEM CODE FIRST
CONSTRUCTS A REQUEST IN THE FORM EXPECTED BY THE ^CMMP, THEN COPIES THE
REQUEST ONTO THE END OF A QUEUE AT THE APPROPRIATE PORT, AND FINALLY
REQUEST STROBES THE ^CMMP TO LET IT KNOW THERE'S A MESSAGE WAITING FOR IT.
/CLEARLY, THE COPYING OPERATION IS DONE UNDER A ^CPROTECT.

       /SOME REQUESTS REQUIRE NO RESPONSE, AND THE SYSTEM CODE IN THE ^CCPU
IS FINISHED ONCE IT HAS DONE THE REQUEST STROBE.
/OTHER REQUESTS INITIATE ACTIONS WHICH REQUIRE EXPLICIT RESPONSES
AND SOME OF THESE CALL FOR IMMEDIATE
RESPONSES WHILE OTHERS, TAKING LONGER TO PROCESS, PRODUCE A DELAYED 
RESPONSE.

       /IN THE IMMEDIATE RESPONSE CASE, THE SYSTEM CODE WAITS FOR THE
^CMMP TO REPLY IN A COMMUNICATION AREA DEDICATED TO THIS PURPOSE.
/IN THE OTHER CASE, THE SYSTEM CODE BLOCKS THE ^CCPU PROCESS.
/WHEN THE ^CMMP HAS THE RESPONSE READY IT WILL PUT ITS MESSAGE IN AN
AREA LOCAL TO THE PROCESS FROM WHICH THE ORIGINATING MESSAGE CAME,
AND SEND A MESSAGE TO THE ^CSCHED TELLING IT TO WAKE UP THE PROCESS
BECAUSE THERE'S A MESSAGE FOR IT.
/IN DUE COURSE THIS WILL RE-START THE BLOCKED SYSTEM CODE, WHICH WILL
THEN GO AND READ THE ^CMMP'^ES MESSAGE.

.SP 2
5.  ^CMMP - ^CSCHED

       /THE ^CMMP SENDS MESSAGES TO THE ^CSCHED IN THE SAME WAY FOR
THE SAME BASIC REASON THE THE ^CCHIO DOES, I.E., TO LET THE ^CSCHED
KNOW THAT SOME EVENT OF INTEREST TO A PROCESS HAS OCCURRED.
/THUS MESSAGES FROM THE ^CMMP TO THE ^CSCHED ARE NORMALLY REQUESTS TO
WAKE UP A SPECIFIED PROCESS.
/USUALLY, SOME SMALL AMOUNT OF DATA FOR USE BY THE PROCESS
ACCOMPANIES THESE MESSAGES.

       /THE ^CSCHED SENDS MESSAGES TO THE ^CMMP TO REQUEST THE SWAPPING
INTO OR OUT OF CENTRAL MEMORY OF THE WORKING SET OF A PROCESS.
/IT GIVES REQUESTS TO THE ^CMMP THE SAME WAY THE ^CCPU DOES -- BY FORMING
A MESSAGE, APPENDING IT TO THE APPROPRIATE ONE OF THE ^CMMP'^ES MESSAGE
INPUT QUEUES (UNDER A ^CPROTECT), AND THEN REQUEST STROBING THE ^CMMP.

.SP 2
6.  ^CCPU - ^CSCHED

       /THE ^CCPU COMMUNICATES WITH THE ^CSCHED FOR VARIOUS REASONS.
/THE ^CSCHED IMPLEMENTS A REAL-TIME INTERRUPT^/WAKEUP FACILITY FOR THE
USE OF USER PROCESSES.
/AT THE REQUEST OF SUCH PROCESSES, THE SYSTEM CODE IN THE ^CCPU CALLS
THIS FUNCTION IN THE ^CSCHED TO ARRANGE THAT THE PROCESS BE AWAKENED
AND NOTIFIED AT A CERTAIN REAL TIME.
/THESE REQUESTS ARE MADE BY THE ^CCPU IN THE SAME WAY THAT THE ^CCHIO
AND ^CMMP SEND WAKEUP MESSAGE TO THE ^CSCHED.
/THE ^CCPU SEIZES THE APPROPRIATE ^CPROTECT, PUTS A SHORT MESSAGE INTO 
THE ^CSCHED'^ES MESSAGE INPUT BUFFER, RELEASES THE ^CPROTECT, AND
REQUEST STROBES THE ^CSCHED.


.EJECT
4.0  ^UDISCUSSION^L
.SP 3
       /THE USE OF MULTIPLE PROCESSORS PERMITTED THE ^CBCC 500 TO BE A
MORE CAPABLE SYSTEM THAN THE USE OF A SINGLE PROCESSOR -- EVEN A
CONSIDERABLY FASTER ( AMD MORE EXPENSIVE) ONE.
/THE VARIOS PROCESSORS IN THE SYSTEM, WHILE SIMILAR IN HARDWARE,
ARE DEDICATED TO THEIR ASSIGNED FUNCTIONS:  THREE DEDICATED TO SYSTEM
MANAGEMENT AND TWO TO RUNNING THE USER CODES.
/THERE ARE SEVERAL CONSEQUENCES OF THIS DECISION WHICH SHOULD BE
MENTIONED.
/FIRST, THERE IS NO NEED FOR COMPLEX TIME-SHARING AND SCHEDULING 
OF THE VARIOUS PROCESSORS OVER THE MANY SYSTEM AND USER TASKS.
/THE TASKS CAN THUS BE DESIGNED TO RUN TO COMPLETION, IE.E, WITH
LITTLE CONCERN FOR INTERRUPTION BY HIGHER PRIORITY TASKS.

       /PUTTING THE SYSTEM TASKS INTO SEPARATE PROCESSORS HAS THE RESULT
THAT THE OPERATING SYSTEM GETS MODULARIZED IN A "REAL" WAY.
/MODULARIZATION IS ALWAYS A PROBLEM IN ANY OPERATING SYSTEM DESIGN:
THE ACTUAL CHOICE OF MODULES IS FREQUENTLY DIFFICULT, AND PROGRAMMERS ARE
OFTEN LED TO "CHEAT," I.E., TO CUT ACROSS MODULE BOUNDARIES AGAINST 
THERI OWN DEFINITIONS OF THOSE BOUNDARIES.
/ALTHOUGH THIS CAN BE REMEDIED BY SUFFICIENT SELF-DISCIPLINE, HAVING
SEPARATE PROCESSORS FORCES THE ISSUE, WITH THE CONSEQUENCE OF CLEAN,
IMPOSSIBLE-TO-CHEAT-ON MODULARIZATION.
/THE MODULARIZATION IS READILY COMPREHENSIBLE, EVEN TO A TECHNICIAN, SAY,
BECAUSE HE CAN IDENTIFY A MODULE ( AND ITS FUNCTION) WITH A KNOWN PIECE
OF HARDWARE.
/THIS HAS DISTINCTLY BENEFICIAL RAMIFICATIONS TOWARD MAINTAINABILITY.

       /IN ADDITION TO ERROR ANALYSIS THE USE OF SEPARATE, DEDICATED 
PROCESSORS IN GENERAL MAKES CHECKOUT AND PERFORMANCE MONITORING 
EASIER.
/THE MODULES AREBASICALLY INDEPENDENT AND ARE DRIVEN BY THE CONTENTS
OF MEMORY TABLES BY WHICH THEY COMMUNICATE AND INTERACT.
/THUS THEY CAN BE READILY TESTED INDEPENDENTLY.
(/CHECKOUT IS A SERIOUS PROBLEM NORMALLY IN COMPLEX OPERATING SYSTEMS
BECAUSE OF THE MANY MODULE INTERACTIONS.)
/IN THE CHECKOUT OF THE 500, FOR EXAMPLE, THE ENTIRE ^CMMP FUNCTION
WAS DEVELOPED AND CHECKED OUT BEFORE THE ^CCPU^ES EXISTED.

       /BECAUSE SO MUCH FIXED-ALGORITHM COMPUTATIONAL POWER EXISTS IN
THE SEVERAL MANAGEMENT PROCESSORS, IT IS POSSIBLE TO CONSIDER -- WITHIN
THOSE PROCESSORS -- THE USE OF ALGORITHMS FOR VARIOUS OPERATING SYSTEM
FUNCTIONS WHICH ARE TOO COMPLEX (I.E., TIME-SONSUMPTIVE) TO UTILIZE
EVEN OV VERY FAST ^CCPU^ES.
/ANOTHER CONSEQUENCE OF THE USE OF MULTIPLE MICROPROCESSORS FOR SYSTEM
MANAGEMENT IS THE ABILITY TO UTILIZE MORE STRAIGHTFORWARD CODING
TECHNIQUES (SINCE, FOR EXAMPLE, MANY "TRICKS" ARE USED IN CONVENTIONAL
OPERATING SYSTEMS FOR EFFICIENCY).
/THE CODING IS EASIER TO DO, IS MOR EASILY ANALYZED, AND OF COURSE
IS LESS LIKELY TO FAIL.
/FINALLY, IT IS POSSIBLE TO INCLUDE ON A PRACTICAL SCALE THE USE OF 
REDUNDANT COMPUTATIONS FOR OPERATING SYSTEM MANAGEMENT WHICH MAKE ERROR
DETECTION MORE IMMEDIATE, GIVE THE SYSTEM MORE SURVIVABILITY (IS THIS
THE RIGHT TERM?), AND GREATER FAULT LOCATABILITY.

       )/HOW DO WE DISCUSS BRINGING UP THE 2ND ^CCPU?)

       /THERE ARE, OF COURSE, SOME DRAWBACKS TO THE ^CBCC 500
ARCHITECTURE, EXPECIALLY THAT OF THE EXISTING PROTOTYPE.
/MOSTLY THESE RELATE IN ONE WAY OR ANOTHER TO THE PURELY READ-ONLY NATURE
OF THE MICROPROCESSORS' CONTROL STORES.
/BECAUSE EACH OF THE MANAGEMENT PROCESSORS EXECUTES UNIQUE FUNCTIONS
AS DETERMINED BY THE (FIXED) ^CROM^ES, THERE IS NO WAY TO CONTINUE
OPERATION OF THE SYSTEM WHEN A PROCESSOR FAILS.
/THIS DOES NOT RELATE TO THE BASIC ARCHITECTURE, IE.E, TO THE USE OF
DEDICATED, MULTIPLE PROCESSORS, AS THE USE OF WRITEABLE CONTROL STORES
WOULD EASILY PERMIT STANDBY PROCESSORS TO BE PHASED IN TO REPLACE
A GIVEN MANAGEMENT PROCESSOR WHICH HAS HAILED.

       /BHE ^CBCC 500 SYSTEM DESIGNERS WERE ENCOURAGED TOWARD THE
USE OF MULTIPLE PROCESSORS BY THEIR CONSIDERATIONS OF THE SYSTEM'S
POTENTIAL NEED FOR DATA SECURITY.
/IN THE EARLIER EXAMPLE OF HOW THE PROCESSORS EXECUTING THEIR
SEPARATE FUNCTIONS COMMUNICATE AND COOPERATE, WE SAW HOW THEY UTILIZED
COMMON, RESIDENT MEMORY TABLES AS THEIR COMMUNICATION MEDIUM.
/THE ACCESS OF ANY ONE PROCESSOR INTO THESE TABLES IS HIGHLY RESTRICTED
BY THE MICROCODE WHOSE BEHAVIORAL PROPERTIES ARE MORE AMENABLE TO
STUDY THAN THE MORE UNSTRUCTURED CODE OF USERS OR SYSTEMS PROGRAMMERS.
/THE ^CCPU (EXCEPT ITS MICROCODED ROUTINES) IS GENERALLY PREVENTED
FROM INSPECTING THESE TABLES DIRECTLY -- EVEN IN ITS SYSTEM MODE.
/THUS THE SEPARATION OF FUNCTIONS INTO PROCESSORS HAS CLEAR RAMIFICATIONS
ON THE POTENTIAL SECURITY OF THE OPERATING SYSTEM; IT IS MUCH MORE 
DIFFICULT FOR A PENETRATOR TO INDUCE A DIFFERENT PROCESSING RUNNING
FIXED CODE TO INSPECT CRITICAL INFORMATION AND THEREBY CAUSE AN
ABRIDGMENT OF SECURITY.
/THIS ASPECT OF THE ARCHITECTURE MAKES IT APPEAR FAVORABLE FOR
APPLICATIONS IN WHICH SECURITY IS A CONCERN; AT LEAST, COMPARTMENTALIZATION
IS A CLASSICAL (NON-COMPUTING) MEANS FOR IMPLEMENTING SECURITY.
.EJECT
.SP 4
.CENTER
^UAPPENDIX I^L
.SP 2
1.0  /INTENDED /AREA OF /APPLICATIONS
.SP
       /A GOAL OF ^CBCC WAS TO DEVELOP SYSTEMS
WHICH COULD BE USED BY ^ICOMPUTER ^IUTILITIES, I.E., COMPANIES
OFFERING APPROPRIATELY PACKAGED COMPUTING POWER AND SERVICES
BY MEANS OF TELECOMMUNICATIONS AND REMOTE TERMINALS.
/THE 500 SYSTEM WAS INTENDED TO SERVE THIS PURPOSE PARTICULARLY WHERE
THE COMPUTING JOBS INDIVIDUALLY REQUIRE SMALL AMOUNTS OF COMPUTATION;
THAT IS, THE SYSTEM ARCHITECTURE WAS ^IBIASED TOWARD ACCOMMODATING
LARGE NUMBERS OF RELATIVELY SMALL JOBS.
/COMMON EXAMPLES OF INTENDED APPLICATIONS WERE SMALL 
SCIENTIFIC COMPUTATIONS (E.G., SMALL ^CBASIC PROGRAMS),
BANK-TELLER SYSTEMS, RESERVATIONS SYSTEMS, REAL-ESTATE SYSTEMS,
ETC.
/MANY OF THESE SYSTEMS, WHILE NOT REQUIRING LARGE
AMOUNTS OF COMPUTATION, DO REQUIRE A LARGE MACHINE -- LARGE IN THE
SENSE OF FILE CAPACITY AND MEMORY ADDRESS SPACE.
/THUS A MINI-COMPUTER, FOR EXAMPLE, WOULD BE ILL-SUITED TO THE
APPLICATION, WHILE A LARGE MACHINE MIGHT NOT BE JUSTIFIABLE ON
ECONOMIC GROUNDS.
.SP 2
[MORE: SEPARATE UTILITIES, WHOLESALING, GUARANTEED SERVICE, DATA SECURITY]
.EJECT 15
.SP 4
1.1  /USER /MACHINE AND /OPERATING /SYSTEM

       /THE OPERATING IS PARTITIONED INTO FUNCTIONAL AREAS AND IS
EXECUTED ON DIFFERENT PROCESSORS CONCURRENTLY.
/THESE PROCESSORS ARE DEDICATED TO THEIR TASKS.
/ONE TYPE OF PROCESSOR IS "DEDICATED," OF COURSE, TO THE RUNNING
OF GENERAL-PURPOSE (I.E., USER-SPECIFIED) CODE.
/THIS PROCESSOR, CALLED A ^ICENTRAL ^IPROCESSOR, ALSO EXECUTES
PORTIONS OF THE OPERATING SYSTEM, ALWAYS ON BEHALF OF ITS ACTIVE
USER.
/THOSE /C/P CHARACTERISTICS OF MOST INTEREST FROM THE OPERATING SYSTEM
VIEWPOINT ARE BRIEFLY LISTED BELOW:
.SP
.RM 8,5
.UN 3
- /THE /C/PS ARE DESIGNED TO BE PROGRAMMED ONLY IN HIGHER-LEVEL
LANGUAGES.  /THERE IS NO ASSEMBLER FOR THE /C/P.
.SP
.UN 3
- /VIRTUAL MEMORY:  /THE /C/PS SEE A VIRTUAL MEMORY OF 256/K WORDS
IN PAGES OF 2/K EACH.
.SP
.UN 3
- /HIERARCHICAL, RING-STRUCTURED PROTECTION MECHANISMS:  3 PROTECTION
RINGS DESIGNED TO ACCOMMODATE TWO LEVELS OF OPERATING SYSTEM AND ONE
FOR SUBSYSTEMS AND USER CODE.  /INTER-RING REFERENCES ACQUIRE THE
PROTECTION OF THE RING BEING ADDRESSES.
.SP
.UN 3
- /NUMEROUS ADDRESSING MODES DESIGNED TO FACILITATE EFFICIENT
RUNNING OF COMPILER-GENERATED CODE.  /HEAVY EMPHASIS IS MADE ON THE USE
OF DESCRIPTORS FOR COMMON DATA STRUCTURES SUCH AS STRINGS, FIELDS, AND 
ARRAYS.
.SP
.UN 3
- /COMPREHENSIVE FUNCTION CALL AND RETURN MECHANISM.  /COPIES ARGUMENTS
BETWEEN ENVIRONMENTS, CREATES AND STACKS ENVIRONMENTS.
.SP
.UN 3
- /C/P TRAPS DIRECTLY UNDER USER CONTROL.
.SP 2
.UN 8
/THE PRINCIPAL FEATURES OF THE OPERATING SYSTEM ARE:
.SP
.UN 3
- /A ^IMONITOR, COMMON TO ALL USER PROCESSES.  /CONTAINS A BARE MINIMUM
OF CALLS AND IS AS GENERAL AS POSSIBLE.  /IS INTENDED TO BE A "KERNEL"
FOR ADDITIONAL OPERATING SYSTEM CODE.  /EXISTS IN HIGHEST PROTECTION
RING.
.SP
.UN 3
- /A ^IUTILITY, WHICH CAN BE TAILORED FOR INDIVIDUAL USERS.  /IMPLEMENTS
ALL OF THE USER MACHINE CHARACTERISTICS AND EXECUTIVE COMMAND LANGUAGE.
/RUNS IN MIDDLE PROTECTION RING.
.SP
.UN 3
- /SUBSYSTEMS AND USER CODE, RUNNING IN LOWEST RING, CAN CALL UTILITY
OR MONITOR JUST LIKE THEY CALL THEIR OWN FUNCTIONS, SUBJECT TO THE
RING PROTECTION.
.SP 2
.UN 8
/FINALLY, THE VIRTUAL MACHINE SEEN BY USER CODE (THE USER MACHINE)
HAS THE FOLLOWING GENERAL APPEARANCE:
.SP
.UN 3
- /A 128/K ADDRESS SPACE
.SP
.UN 3
- /THE USUAL TYPES OF OPERATING SYSTEM CALLS.
.SP
.UN 3
- /SOME UNUSUAL CALLS SUCH AS:
.RM 5
.UN 2
- /USER CONTROL OVER PROCESS WORKING SET
.SP
.UN 2
- /SCHEDULING DECISIONS LIKE WHETHER TO BLOCK FOR /I^//O.
.ER
.EJECT
.ER
1.2  /HARDWARE
.SP
       /THE SYSTEM AS IT EXISTS AT THE /UNIVERSITY OF /HAWAII
INCLUDES SIX PROCESSORS
CONNECTED TO
A HIGH-BANDWIDTH MULTI-PORT, MULTI-MODULE 128/K CENTRAL MEMORY; TWO
LARGE DRUMS, TWO LARGE DISK FILES, WITH THEIR ASSOCIATED 
CONTROLLERS; AND CENTRALIZED CONTROL, SYNCHRONIZATION, AND COMMUNICATION
LOGIC.
/THESE RESOURCES ARE CAPABLE OF SIGNIFICANT COMPUTATION.
/THE ORIGINAL SYSTEM DESIGN, HOWEVER, CALLED FOR A 256/K CENTRAL MEMORY
AND ALLOWED FOR A SIGNIFICANT EXPANSION OF BOTH DRUM AND DISK STORAGE.
/MORE IMPORTANTLY, THE BASIC DESIGN INCLUDED
A NUMBER OF REMOTE PROCESSORS FOR TERMINAL AND
COMMUNICATIONS HANDLING, CONNECTED TO THE CENTRAL SITE BY A NETWORK
OF COMMUNICATION LINES.
/THREE OF THESE REMOTE PROCESSORS WERE CONSTRUCTED AND BROUGHT TO
/HONOLULU.
/THEY WERE NOT INCLUDED IN THE PRESENT CONFIGURATION, HAVING BEEN
"REPLACED" IN FUNCTION BY A CONNECTION THROUGH ONE OF THE CENTRAL-SITE
PROCESSORS TO THE ^CARPA NETWORK.

       /ALL OF THE PROCESSORS -- THE CENTRAL-SITE PROCESSORS AND THE
REMOTE-SITE PROCESSORS -- ARE IMPLEMENTED AROUND A BASIC MICROPROCESSOR
DESIGNED BY /B/C/C FOR USE IN THE SYSTEM.
/THE MICROPROCESSORS USED IN THE CENTRAL SITE HAVE 24-BIT WIDE ARITHMETIC
UNITS, AND EACH EXECUTES AT A MAXIMUM RATE OF ABOUT TWELVE MILLION
OPERATIONS PER SECOND.
/THE REMOTE-SITE PROCESSORS HAD 16-BIT ARITHMETIC UNITS
AND WERE SLOWER.
/EACH VERSION USES DISCRETE DIODE CIRCUIT BOARDS FOR THEIR CONTROL
MEMORY, WHICH
CONTAINS 2/K X 90-BIT WORDS.

       /THE CENTRAL MEMORY TO WHICH THE SIX
PROCESSORS ARE CONNECTED
IS A FOUR-PORT, EIGHT-MODULE MEMORY
CAPABLE OF SUSTAINING AN AVERAGE DATA TRANSFER RATE OF SIXTEEN
MEGAWORDS PER SECOND.
/EACH MODULE CONTAINS 8/K DOUBLE-WORDS OF ONE-MICROSECOND CORE STORAGE AND
TWO DOUBLE-WORDS OF ACTIVE STORAGE TOGETHER WITH ASSOCIATED LOGIC.
/THE ACTIVE STORAGE AND THE LOGIC ASSOCIATED WITH IT ARE CALLED THE
/FAST /MEMORY (/F/M).
/THE /F/M FUNCTIONS AS A TEMPORARY REPOSITORY FOR DATA AS IT PASSES
TO AND FROM THE CORE MODULE,
AND AS A GATHERING POINT FOR MEMORY REQUESTS FOR BETTER ASSIGNMENT OF
AVAILABLE MEMORY BANDWIDTH IN THE FACE OF CONTENTION
BETWEEN THE PROCESSORS AND CONTROLLERS.
/THE /F/M PROVIDES A SMALL AMOUNT OF LOOK-BEHIND CAPABILITY.

       /THE DRUM AND DISK MEMORY UNITS ARE INTERFACED WITH THE CENTRAL
MEMORY BY RATHER SIMPLE CONTROLLERS TERMED "TRANSFER UNITS."
/EACH DRUM IS EQUIPPED FOR FULL PARALLEL TRANSFER AT THE RATE OF
TWO MEGAWORDS PER SECOND (SIX MEGABYTES PER SECOND).
/THE DISK UNITS TRANSFER APPROXIMATELY TEN TIMES MORE SLOWLY, OR AT ABOUT
600 KILOBYTES PER SECOND.
.SP 5
[/THE /AUX /MEM IS CONSIDERED TO BE PART OF THE SYSTEM "MAIN MEMORY"
(AS OPPOSED TO BEING /I^//O UNITS), AND THE DATA FORMAT ...
PAGES, UNIQUE NAMES, ETC.]
.EJECT
> WHERE
THE COMPUTING JOBS INDIVIDUALLY REQUIRE SMALL AMOUNTS OF COMPUTATION;
THAT IS, THE SYSTEM ARCHITECTURE WAS ^IBIASED TOWARD ACCOMMODATING
LARGE NUMBERS OF RELATIVELY SMALL JOBS.
/COMMON EXAMPLES OF INTENDED APPLICATIONS WERE SMALL 
SCIENTIFIC COMPUTATIONS (E.G., SMALL ^CBASIC PROGRAMS),
BANK-TELLER SYSTEMS, RESERVATIONS SYSTEMS, REAL-ESTATE SYSTEMS,
ETC.
/MANY OF THESE SYSTEMS, WHILE NOT REQUIRING LARGE
AMOUNTS OF COMPUTATION, DO REQUIRE A LARGE MSKNE   MACRO D; SKE D(1); BRU *+2; ENDM

MSG    MACRO D,G,2; LDA =G(1); LDB =-1; LDX =1; BRS 34; BRU G(2)
G(1)   ASC "$.&D(1).&/"
G(2)   EQU *; ENDM

START  MSG (INPUT FILE: ); CLEAR; BRS 15; BRU START; STA IFNO
S1     MSG (OUTPUT FILE: ); CLEAR; LDA =3B6; BRS 16; BRU S1; STA OFNO
LOOP   CIO IFNO; SKE =137B; BRU LOOP0; CIO OFNO; BRS 17; BRS 10
LOOP0  STA C0; CIO IFNO; STA C1; CIO IFNO; STA C2
L1     CIO IFNO; SKE =':'; BRU L2
       LDA C1; SKE ='T'; BRU L1B; LDA =':'
L1A    XMA C2; XMA C1; XMA C0; CIO OFNO
       CIO IFNO; SKE =' '; BRU *+2; BRU L2
       SKE =135B; BRU L1A; BRU L2
L1B    SKG ='9'; SKG ='0'-1; BRU L3
       SUB ='0'; MUL =10; LSH 23; STA HOUR
       LDA C2; SUB ='0'; ADM HOUR
       CIO IFNO; STA C1; CIO IFNO; STA C2; CIO IFNO; SKE =':'; ZRO *
       LDA C1; SUB ='0'; MUL =10; LSH 23; STA MIN
       LDA C2; SUB ='0'; ADM MIN
       CIO IFNO; STA C1; CIO IFNO; STA C2; CIO IFNO; SKE =155B; ZRO *
       CIO IFNO; LDA C1; SUB ='0'; MUL =10; LSH 23; STA SEC
       LDA C2; SUB ='0'; ADM SEC

       LDA SEC; ADD SECBIAS; SKG =59; BRU *+3; SUB =60; MIN MIN; STA SEC
       LDA MIN; ADD MINBIAS; SKG =59; BRU *+3; SUB =60; MIN HOUR; STA MIN
       LDA HOUR; ADD HOURBIAS; STA HOUR; SKG =23; BRU *+3; TCO =147; TCO =155B

       LDA C0; CIO OFNO
       LDA HOUR; RSH 23; DIV =10; ADD ='0'; CIO OFNO; CBA; ADD ='0'; CIO OFNO
       LDA =':'; CIO OFNO
       LDA MIN; RSH 23; DIV =10; ADD ='0'; CIO OFNO; CBA
       ADD ='0'; CIO OFNO; LDA =':'; CIO OFNO
       LDA SEC; RSH 23; DIV =10; ADD ='0'; CIO OFNO; CBA
       ADD ='0'; CIO OFNO; LDA =155B; CIO OFNO; LDA =152B; CIO OFNO
       BRU LOOP
L2     XMA C2; XMA C1; XMA C0; CIO OFNO; BRU L1
L3     LDA =':'; BRU L2

C0     BSS 1
C1     BSS 1
C2     BSS 1
HOUR   BSS 1
IFNO   BSS 1
MIN    BSS 1
OFNO   BSS 1
SEC    BSS 1

HOURBIAS DATA 2
MINBIAS DATA 28
SECBIAS DATA 20

       END
>                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  **RUNOFF 










                             PFS REFERENCE MANUAL







                             W. W. Lichtenberger










                               THE ALOHA SYSTEM
                             University of Hawaii














                               Document No. M-3
                                 May 1, 1974



                              Contract NAS2-6700
                            Department of Defense
                      Advanced Research Projects Agency
                             ARPA Order No. 1956
         PFS Reference Manual    May 1, 1974                   Page  1






         1.0  INTRODUCTION


              This is a users' guide for  a  subsystem  designed  for
         long-term  storage  of  files.   The  system  was originally
         intended for temporary use during the early  development  of
         the  BCC 500.  Because of the turn of events, however, it is
         still with us and probably will be throughout  the  life  of
         the  500.   In some ways the use of PFS has distinctly posi-
         tive benefits; the user has good  control  over  his  files,
         their  various  back-up  copies, and/or previous versions of
         them.  Its principal disadvantages are that it requires  the
         user  to  remember to write out his files before logging out
         of the system and its slightly different file-naming conven-
         tions  from  that of the basic 500 system.  These are really
         minor, however, and the user should be able quickly to adapt
         to the use of PFS.

              Any large computing system making use of on-line access
         requires a means for storing and retrieving large quantities
         of information which must be accessed  during  computations.
         A common example of this is the storage of programs and data
         files which they require or generate.  These files  must  be
         readily  accessible,  since it frequently costs much time to
         read them into the system over and  over  again  from  paper
         tape  or card media.  This is especially true for the remote
         user.

              Large operating systems facilitate  on-line  access  by
         providing  mechanisms  for naming and handling files and for
         storing  them,  usually  on   disk.    Unfortunately,   even
         well-developed operating systems are subject to failure, and
         it is likely that valuable information can be lost  at  such
         times.   The  reasons  for  such  loss  mostly stem from the
         design of the operating system's directory  structures.   If
         they  are damaged by the failure, then the system may become
         totally confused about its files.  Approaches all  requiring
         some  type  of redundancy in the directory structures can be
         used to remedy this serious problem, but most  of  them  can
         lead  to  system inefficiencies, and, in any event, to added
         system complexity.

              The basic idea  of  PFS  is  to  remove  the  permanent
         storage of files from the duties of the operating system and
         assign the file storage to a user-level sub-system.  PFS  is
         designed  in a very simple, straightforward manner, removing
         much of the flexibility of a fancier system, but providing a
         much higher degree of integrity for user files.
         PFS Reference Manual    May 1, 1974                   Page  2


         2.0  PFS DESIGN AND USE


              To accommodate PFS a portion of the disk file has  been
         removed  from the domain of the 500's operating system.  PFS
         accesses this portion of the disk file as  a  classical  I/O
         device.   That  is,  only PFS makes decisions concerning the
         allocation of the storage and the absolute addresses of  the
         records  being  written or read from disk.  Each system user
         is allocated a fixed area of this storage.  The user's space
         is divided into a number of pages, the first one of which is
         used for a file directory.  The PFS  directory  page  has  a
         number  of  entries  which  are in one to one correspondence
         with the other pages in the user space.  As files are copied
         into  the  PFS  user  space,  the  (non-directory) pages are
         filled on an as available basis.

              When the user logs in to the  500  system,  he  usually
         finds  that  his  files are not known by the system.  Before
         proceeding, then, the user enters PFS and  instructs  it  to
         copy  the  requisite  files  from the permanent storage area
         into the operating system's  file  storage  area.   He  then
         works  with  his  files,  and  before leaving the system, he
         reenters PFS and instructs it to copy his updated files from
         the  operating system back onto the permanent area.  Because
         this operation is entirely manual and  requires  the  user's
         attention and consideration, and because the copying operat-
         ion is relatively fast, the user's files are thus reasonably
         secure from system malfunctions.



                                   WARNING

                   The user must remember that  it  is  his
                   responsibility to copy back to PFS those
                   files which he has  changed  during  his
                   computation  session  and  that  all his
                   work will be lost if he  forgets.   Good
                   practice    requires   that   the   user
                   occasionally write out files which  have
                   changed even during a session -- in case
                   the system should  go  down  after  some
                   reasonable amount of work.
         PFS Reference Manual    May 1, 1974                   Page  3



              Satisfactory evidence of the merit of this approach  is
         that  in  over seven years of operation of PFS-like systems,
         only a very small number of files have been lost by  operat-
         ing system or hardware malfunction.  This should be contras-
         ted with other systems in which the approach is  to  provide
         protection  within  the  system  itself;  in  such cases the
         losses have been much greater.  Of course, the user  himself
         can foul up, and the hardware can fail; but these situations
         are tolerably low in frequency.

              As a matter of good  practice,  of  course,  users  are
         reminded  that  it  may be wise to write out a file onto the
         permanent storage area at regular intervals as their console
         sessions  progress (assuming the files are changing) so that
         in case of a system crash a relatively small amount of their
         work will be lost.

              Users can have access to the directories of other users
         in  reasonablly  controlled  ways and can share files.  They
         can change the accessibility of their  files  to  themselves
         and  to  other  users  and  can do a number of other actions
         related to maintenance of their own directories.

              The following is a simple summary of PFS commands.  The
         reader can easily learn to use PFS by reading it.
         PFS Reference Manual    May 1, 1974                   Page  4


         3.0  PFS COMMANDS


              Upon entering PFS, the user sees the PFS  herald,  "&".
         The  user can then type one or more commands.  The commands,
         except  for  arguments  like  file  names,   are   generally
         one-letter  commands,  i.e., the user types the first letter
         of the command and the rest of it is supplied by PFS.   Most
         of  the  commands must be confirmed by typing a ".".  In the
         following, the characters which must be typed  by  the  user
         are  underlined; the characters "<" and ">" are meta-symbols
         to designate the type of object which PFS expects.

              Three types of file names are  mentioned  below:  <file
         name>,  <disk  file  name>, and <system file name>.  <system
         file name>s use the  500  System  file  naming  conventions.
         <disk  file  name>s  have  a  slightly different convention:
         names may not be longer than thirteen  characters  and  must
         consist  of  letters,  digits, "-", and ":".  The term <file
         name> is used in those situations where the name is  both  a
         <disk file name> and a <system file name> and must therefore
         conform to an intersection of both naming conventions.

              It is possible under certain rules to  refer  to  files
         belonging to other users, i.e., files in other users' direc-
         tories.  These files may be designated by their  usual  file
         name, preceded by the directory-owner name; e.g.,

                        @<user name>:<disk file name>

         Thus, this document may  be  retrieved  on-line  from  WWL's
         directory by referring to it as

                              @WWL:PFS-DOCUMENT

              PFS requires that user names -- when they are  supplied
         --  be  typed  perfectly.   If  a  user makes a typing error
         during a user name, he  can  abort  the  command  by  typing
         control-K.   The  file  name  can  have preceding characters
         removed by the use  of  control-A.   As  each  control-A  is
         typed,  PFS  echoes "^" to signify backing up one character.
         If the user feels it is more convenient, he can  also  abort
         the  command  with  a  control-K.  Typing two control-K's in
         succession will cause the user to leave PFS  and  return  to
         the executive language processor.
         PFS Reference Manual    May 1, 1974                   Page  5


         3.1  Leaving PFS

              The user may get out of PFS and return to the executive
         language  processor by typing two control-K's in succession.
         Alternatively he may use the PFS command:


             &FINISHED.              _       _



         3.2  Transfer Commands

              Only two commands actually  do  the  transfers  between
         disk  and  the  system  required  for  long-term storage and
         retrieval:  READ and WRITE.  Occasionally error  diagnostics
         may accompany a transfer command.  PFS is quite conservative
         about disk errors at the present time and reports any errors                                                           ___
         which  occur  without  automatically  retrying.   Diagnostic
         messages are discussed in  Section  4.   All  such  messages
         should  be reported to hardware maintenance, and the command
         should be immediately repeated.



             3.2.1  Copying  a  file  from  the  system  to  PFS
                  storage


             &WRITE DISK FILE <file name>;  (<reminder>)              _               ____________  ____________

          or &WRITE DISK FILE <disk file name>.  (<reminder>)              _               _________________  ____________
             FROM <system file name>.                  ___________________

                  Copies a file from the system onto the perman-
                  ent  storage area.  The date & hour are recor-
                  ded, and the file's type  is  preserved.   The                                      ____
                  reminder  is  one  of  two  messages, (NEW) or
                  (OLD), and serves to remind the user  that  he
                  is  creating a new file or writing over an old
                  one.  Either situation can occur as the result
                  of  an  error  on  the part of the user.  Note
                  that if the user utilizes the  short  form  of
                  the  command  (i.e., terminates it with a ";")
                  the reminder message occurs  after  the  fact;
                  the  file will be written anyway.  If the user
                  utilizes the long form of the  command  (i.e.,
                  uses  two  "."   terminators),  the second "."
                  serves to confirm the data transfer after  the
                  reminder  shows  the  user what he is about to
                  do.  Beginning users should use the long  form
         PFS Reference Manual    May 1, 1974                   Page  6


                  of the command until they have more confidence
                  with PFS.



             3.2.2  Copying a file from permanent  storage  into
                  the system


             &READ DISK FILE <file name>;              _              ____________

          or &READ DISK FILE <disk file name>.              _              _________________
             TO <system file name>.                ___________________

                  Inverse of the write disk file command.




         3.3  File Directory Commands

              The user must be able to inspect the  contents  of  his
         directory  from  time to time.  Occasionally he may forget a
         file name, or he may want to see when he created it or  last
         updated  it.   Files  also have associated a number of other
         parameters which he may want to inspect or to verify that  a
         change  he has just made is correct.  Too, users may want to
         look at other users' directories.   The  following  commands
         facilitate  the  inspection  and modification of directories
         and items contained within them.



             3.3.1  Listing the contents of a file directory


             &LIST.              _   _

          or &LIST FOR USER @<user name>:.              _   _         ______________

                  The PFS directory for the  indicated  user  is
                  listed.    All   information   concerning  the
                  various files for  the  user  is  printed  for
                  those items not invisible under access protec-
                  tion.
         PFS Reference Manual    May 1, 1974                   Page  7


             3.3.2  Listing only the file names within a  direc-
                  tory


             &BRIEF LIST.              _         _

          or &BRIEF LIST FOR USER @<user name>:.              _         _         ______________

                  Same as above except only the file  names  are
                  printed.  This command is frequently used when
                  a user has forgotten the exact name of a  file
                  or  is looking for the presence of a file in a
                  directory.   It  is  faster  than   the   LIST
                  command.



             3.3.3  Looking at the parameters for a given file


             &EXAMINE FILE <file name>.              _            ____________

          or &EXAMINE FILE @<user name>:<file name>.              _            _________________________

                  Prints all the  information  that  LIST  would
                  print except only for the indicated file.



             3.3.4  Changing a file name


             &CHANGE FILE NAME <old name>.              _                ___________
             TO <new name>.                ___________

          or &CHANGE FILE NAME @<user name>:<old name>.              _                ________________________
             TO <new name>.                ___________

                  The use of  the  command  is  obvious.   Users
                  cannot  normally  change the names of files in
                  other users' directories as the second form of
                  the   command   implies  above.   Section  3.3
                  discusses file sharing and protection.
         PFS Reference Manual    May 1, 1974                   Page  8


             3.3.5  Deleting a file from the directory


             &DELETE FILE <file name>.              _           ____________

          or &DELETE FILE @<user name>:<file name>.              _           _________________________

                  The use of the command is obvious.  The  space
                  occupied  by  the file being deleted is avail-
                  able for re-use.



             3.3.6   Checking  the  amount  of  available   disk
                  storage space


             &UNUSED SPACE.              _           _

          or &UNUSED SPACE FOR USER @<user name>:.              _                     ______________

                  Prints the number of unused disk pages in  the
                  indicated user's allocation.
         PFS Reference Manual    May 1, 1974                   Page  9


         3.4  File Accessibility Commands:  File Sharing and  Protec-
              tion

              Files written on the disk  are  provided  with  one  of
         several  levels of access to each of three classes of users:
         its owner(s), the public, and to that subset of  the  public
         who  may  know  a special password associated with the file.
         These  accesses  are  called  respectively,  owner   access,                                                      _____   ______
         general access, and password access.         _______ ______      ________ ______

              Each access class may have one of four levels:   invis-                                                               _____
         ible  (-),  inaccessible  (N), read-only (R), and read-write         ____        ____________       _________          __________
         (W).  When a file is first written it is given  the  initial
         accesses:

                             owner:    W                             _____
                             password: - (- means here "no access")                             ________
                             general:  N                             _______

         Thus the newly-created file is read-write  to  its  owner(s)
         and inaccessible to all others.

              The reader will recall that the users of PFS  may  list
         the  directories of other users and attempt to read or write
         their files.  The algorithm used by PFS to check an  attemp-
         ted  access  for validity is straightforward:  first a check
         is made to see whether the user attempting the access is  an
         owner;  if  so,  then is the nature of the access legal?  If
         the ownership test fails, then does the password (if one  is
         typed)  match;  and  if  so, is the nature of the access now
         legal?  Finally, is the attempted access legal  for  general
         users?   If  the  answer  to  all these questions is no, the
         access is denied.  When a  user  lists  the  contents  of  a
         directory  which he does not own, all files marked invisible
         will be skipped.

              Ownership of a directory is  required  to  be  able  to
         execute  several  PFS  commands.  Users cannot, for example,
         CHANGE  or  DELETE  file  names  without  ownership  status.
         Ownership is also required to do those commands which change
         the accesses from their initial values.  These commands  are
         given below.

              Files with passwords associated with them are  referred
         to  much  as  a  general  user  reference  is made, i.e., by
         specifying a user name with the file name, except the  pass-
         word  is  supplied  in parentheses after the user name.  PFS
         does  not  echo  the  password.   For  example,  a  password
         reference would be typed as:

                          @WWL(<password>):SOME-FILE
         PFS Reference Manual    May 1, 1974                  Page  10


         Because of the non-echoing  password  the  file  name  would
         appear on the terminal as

                               @WWL():SOME-FILE



             3.4.1  Changing general access to files


             &GENERAL ACCESS TO FILE <file name>.              _                      ____________
             IS -/N/R/W.                _ _ _ __

          or &GENERAL ACCESS TO FILE @<user name>:<file name>.              _                      _________________________
             IS -/N/R/W.                _ _ _ __

                  The construct -/N/R/W means - or N or R or  W.                                _ _ _ _         __   __   __
                  -  means  the file is invisible; general users
                  cannot see the file in a directory listing.  N
                  stands for inaccessible; general users can see
                  it in the directory but can't get at it.  R is
                  for read-only, and W means read-write.



             3.4.2  Changing password access to files


             &PASSWORD ACCESS TO FILE <file name>.              _                       ____________
             IS (<password>)-/N/R/W.                 ____________ _ _ __

          or &PASSWORD ACCESS TO FILE @<user name>:<file name>.              _                       _________________________
             IS (<password>)-/N/R/W.                 ____________ _ _ __

                  Same as above, but for  password  access.   In
                  this case the "-" stands for "no such access."
                  It is used to remove existing password  access
                  for a file.  In this case the password portion
                  is echoed to the user as confirmation  of  the
                  new password.
         PFS Reference Manual    May 1, 1974                  Page  11


             3.4.3  Changing owner access to files


             &OWNER ACCESS TO FILE <file name>.              _                    ____________
             IS -/N/R/W.                _ _ _ __

          or &OWNER ACCESS TO FILE @<user name>:<file name>.              _                    _________________________
             IS -/N/R/W.                _ _ _ __

                  Same as above, but for owner  access.   If  an
                  owner  wants to prevent himself from overwrit-
                  ing an important file, he  can,  for  example,
                  set his owner access to read-only.  Of course,
                  he can set it back whenever he wishes.




         3.5  Pseudo-ownership and Abbreviations:  More File Sharing

              Most files are owned by the user  creating  them;  they
         contain information of interest only to him and remain under
         his private jurisdiction.  Some files, however, are of wider
         interest.   While the owner may wish to retain the privilege
         of modifying them, others may have the right to  read  them.
         Files  in  this  category  are  easily  handled  by means of
         general and password accesses.  Some files may  need  to  be
         written  occasionally  by others.  Again the password access
         mechanism will suffice for this  situation.   Finally,  how-
         ever,  there  is  a  small  number  of  files  which require
         frequent read-write  access  by  several  individuals.   The
         password mechanism becomes cumbersome if it must be used too
         frequently.

              PFS provides a means by which several users  may  enjoy
         almost  all  the privileges of ownership of files in a given
         directory.  This  status  is  called  pseudo-ownership,  and                                               ________________
         users  having  it are called friends of the directory owner.                                      _______
         Friends can execute all of the operations and  commands  the
         directory  owner can do except modify the list of friends of                                 ______
         the owner.  There may be as many as twelve  friends  of  any
         directory owner.

              The list of friends may  be  set  or  modified  by  the
         following command:
         PFS Reference Manual    May 1, 1974                  Page  12


             3.5.1  Equating an item number to a user name


             &MODIFY ITEM #<item number>.              _            _____ ________
             TO USER @<user name>:.                     ______________

                  This command permits the owner to  change  the
                  friend  list  for  his directory.  His friends
                  are designated by the numbers  1  through  12.
                  The  friend  list  is  given  in the directory
                  listing by the LIST command.  A user name  may
                  be  removed  from  the  list  by typing "-" in
                  place of the expected user name.



              The MODIFY ITEM command permits two additional items to
         be  set to user names.  Item 13 determines the identity of a
         user who may be referred to  merely  by  "<",  and  item  14
         determines  who  is  ">".   These two symbols may be used in
         place of a user name at any point in PFS.  Thus if  a  given
         user is himself the friend of another user and finds himself
         doing file operations frequently in that other user's direc-
         tory,  the  symbols  "<"  and ">" can greatly facilitate his
         references.

              For example, it is much easier to type

                                <SHARED-FILE.

         than it is to type

                         @LICHTENBERGER:SHARED-FILE.

         Items 13 and 14 may be returned to  null  by  means  of  the
         MODIFY ITEM command, specifying "-" in place of the expected
         user name.



              It may be that a user has a number of  files  which  he
         wants  accessed  by  friends  but  others  he  wants to keep
         private.  PFS does not provide a finer access  control  than
         those mechanisms previously mentioned.  It is possible, how-
         ever, to remedy the  situation  just  mentioned,  especially
         when a number of users are working on a similar project.
         PFS Reference Manual    May 1, 1974                  Page  13


              A fictitious user directory can be established.   (This
         cannot be done just to accommodate a few files.)  No user of
         the system is then the true owner of the  directory,  and  a
         number  of  users can establish themselves as friends of the
         directory and interact accordingly.  All that remains is  to
         provide  a  means  for  these  mutual  owners  to change the
         constitution of the friend  list.   To  do  this  they  must
         become,  for  the  moment,  the real owner.  This is done by
         tricking PFS -- with the following command -- into  assuming
         a new identity for the user.

              The command, which detaches the user from his  own  PFS
         directory and attaches him to the new directory, is:



             3.5.2  Attaching the user to a new directory


             @<user name>:(<password>).             __________________________

                  When a user enters PFS, he is given the direc-
                  tory  associated  with  his name.  If for some
                  reason he wishes to  assume  a  new  identity,
                  i.e., take over the directory of someone else,
                  then he uses this command.  But he  must  know
                  the  password  of the new user.  This password
                  is identical to the new user's TSS password.
         PFS Reference Manual    May 1, 1974                  Page  14


         3.6  Miscellaneous Commands



              PFS  contains  a   few   other   commands   which   are
         occasionally useful.  These are listed below.



             3.6.1  Verifying the integrity of the user's data


             &VERIFY DATA.              _          _

          or &VERIFY DATA FOR USER @<user name>.              _          _         _____________

                  The entire set of disk pages is read one at  a
                  time  for  error checking purposes.  If a disk
                  error is encountered, a diagnostic message  is
                  typed giving the physical disk address and the
                  nature of the  error.   Such  episodes  should
                  always  be reported to the hardware people for
                  investigation.   Normally,  the  use  of  this
                  command  should  not  be required, as all disk
                  pages are reread upon writing, and their  con-
                  tents  are  compared with that of the original
                  system file.



             3.6.2  Typing out correspondence of file pages with
                  physical disk pages


             &STATUS.              _     _

          or &STATUS FOR USER @<user name>:.              _     _         ______________

                  Prints the contents of the PFS directory show-
                  ing  the  utilization  of the various physical
                  disk pages allocated to the indicated user.



             3.6.3  Permanently discard physical disk page  from
                  user directory


             &ABANDON FILE <file name>.              _            ____________

          or &ABANDON FILE @<user name>:<file name>.              _            _________________________
         PFS Reference Manual    May 1, 1974                  Page  15


                  Ownership access is required.   Command  works
                  precisely  like delete file except that as the
                  file is deleted, each page is  read  once  for
                  possible  errors.  If an error is encountered,
                  the page involved is  marked  as  bad  and  is
                  permanently  removed from the user's available
                  space so as not to  cause  further  difficulty
                  for the user.  The hardware maintenance people
                  should be informed of any disk pages which are
                  deleted  as  a  consequence of the use of this
                  command.  The command should be regarded as an
                  extreme measure.



             3.6.4  Conversing with another user in PFS


             &"<arbitrary text>              _________________


                  If another user links to a given user while he
                  is  in  PFS,  the " command causes PFS to stop
                  interpreting commands or file names and permit
                  the  user to carry out a conversation of arbi-
                  trary length (any number of  carriage  returns
                  can  be  included  in  the  text).   The  user
                  escapes from this mode with control-K.
         PFS Reference Manual    May 1, 1974                  Page  16


         4.0  PFS ERROR MESSAGES


              PFS does a considerable amount of checking for  various
         kinds  of errors.  The integrity of the users' files depends
         on the various checks that are done.   The  disk  file  unit
         reports  several  types  of  data  transfer  errors, but PFS
         checks data further.   Each  directory  as  it  is  read  is
         checked for correctness of content; this is also done before
         writing the directory after updating.  Each data block writ-
         ten  on the disk is re-read during the writing operation and
         compared with the correct information.

              All these checks and others give rise to the  following
         error messages and their interpretations.



             NOT ENOUGH ROOM

                  This message signifies that  the  file  to  be
                  written  will not fit into the available space
                  on the disk.  The standard remedy is  to  list
                  the  directory contents.  This usually reveals
                  some junk files which can be deleted  to  make
                  room.


             ?

                  This message means that the user is attempting
                  an  operation which is improper.  The user may
                  be denied the attempted access or he may  have
                  typed  an  incorrect  file name, user name, or
                  password.   Basically  the  message  means  to
                  think more carefully and try again.


             REREAD ERROR

                  This message is typed during a WRITE operation
                  if  the data is somehow written incorrectly on
                  the disk.  The checking operation  is  similar
                  to  the read-after-write checks done by magne-
                  tic tape units.  The user  should  repeat  the
                  WRITE  command.   The  message includes track,
                  band,  sector,  and  unit  information   which
                  should  be  reported  to  hardware maintenance
                  personnel.
         PFS Reference Manual    May 1, 1974                  Page  17


             TSU DUMP...

                  This message is given by any read error detec-
                  ted   by  the  disk  hardware.   Track,  band,
                  sector, and unit information  is  included  in
                  the   message,   and  it  should  be  reported
                  promptly to  hardware  maintenance  personnel.
                  The  user should repeat his command -- perhaps
                  several times.


             COMPARE ERROR

                  This message indicates catastrophic failure of
                  the disk controller.  It should occur with far
                  less  frequency  than  virtually   any   other
                  message.   Occurrences  should  be immediately
                  reported to hardware maintenance personnel.


             CAN'T WRITE INDEX

                  The user has performed some  strange  sequence
                  of  actions,  or  a bug in PFS, has caused the
                  directory to  become  disarranged.   The  user
                  should  repeat  his command.  Failing a second
                  time, he should leave PFS and re-enter.


             INDEX FORMAT ERROR
             CAN'T READ INDEX
             INDEX CLOBBERED

                  These messages result from various  checks  on
                  the  directory  as  it is read from disk.  The
                  user should retry and if  he  cannot  get  the
                  directory   to  read  successfully  he  should
                  contact operations personnel.


             DRUM ERROR, BLOCK ...

                  Catastrophic  system  error  which  can  never
                  occur.
>>> spondence of file pages with
                  physical disk pages


             &STATUS.              _     _

          or &STATUS FOR USER @<user name>:.              _     _         ______________

                  Prints the contents of the PFS directory show-
                  ing  the  utilization  of the various physical
                  disk pages allocated to the indicated user.



             3.6.3  Permanently discard physical disk page  from
                  user directory


             &ABANDON FILE <file name>.              _            ____________

          or &ABANDON FILE @<user name>:<file name>.              _            _________________________
         PFS Reference Manual    May 1, 1974                  Page  15


                  Ownership access is required.   Command  works
                  precisely  like delete file except that as the
                  file is deleted, each page is  read  once  for
                  possible  errors.  If an error is encountered,
                  the page involved is  marked  as  bad  and  is
                  permanently  removed from the user's available
                  space so as not to  cause  further  difficulty
                  for the user.  The hardware maintenance people
                  should be informed .HE ^USEVENTH DRAFT   ^L/MARCH 5, 1974
.GL  UN-DER-SCORE TRANS-LATORS TRANS-FERS TO-GETHER
.GL TECH-NICAL SUP-PORT STRUC-TURES SIM-PLI-FIED SAFE-GUARDS
.GL RE-STRIC-TIONS RE-QUIRE-MENTS RE-ORGAN-IZED REF-ERENCES
.GL QUAN-TI-TIES PRO-DUC-TION PRO-DUCED PRO-CES-SING
.GL PRO-CEED PRI-VACY PLAN-NING PAR-TIC-ULAR-LY OR-DINARY
.GL NET-WORK MOST-LY MONI-TOR MODI-FIED MEN-TIONED
.GL MAT-TERS MAIN-TAINED IN-VEST-MENT INTER-ACTION
.GL IN-FOR-MA-TION IN-FERIOR IN-CLUDE IM-PLIES 
.GL FUNC-TIONS FOL-LOW-ING EXIS-TENCE EXE-CU-TION EN-FORCED
.GL EN-COUNTERED EN-CAP-SU-LATED EF-FICIENT-LY DO-MAIN
.GL DOCU-MEN-TA-TION DIREC-TION DIF-FERENCES DE-SIGNED
.GL DES-CRIBED DE-FINE CROS-SING CON-SOLI-DA-TION CON-SIS-TING
.GL COM-PU-TER COM-PART-MEN-TAL-IZA-TION CHECK-ER-BOARD
.GL CAP-ABIL-ITY AR-RANGE-MENTS ARBI-TRARY AP-PEND
.GL AD-VANCED AD-DRESS AD-DITION-AL AC-CESS
.GL  VISUAL-LY UTIL-I-TIES UN-DER-FLOW SUP-POSED SUPER-VISOR
.GL SU-PER-IOR SIM-U-LA-TION SER-VICES SEPA-RATE SE-LEC-TIVE
.GL SEG-MENT SE-CUR-ITY SE-CUR-ING SEC-TION RUN-NING
.GL ROU-TINES RE-SULT-ING RE-SPEC-TIVE-LY RE-QUI-SITE
.GL RE-QUEST RE-PRE-SEN-TA-TIONS RE-OR-GAN-IZA-TION
.GL RE-MOVED REGIS-TER PUR-POSE PRO-VIDED PRO-TEC-TION
.GL PRO-POSED PRO-GRAM PER-TAIN PAR-TI-CI-PA-TING PARA-GRAPHS
.GL OR-GAN-IZA-TIONS OP-POR-TUN-ITY OPER-ATIONS OPER-ATING
.GL MILI-TARY MICRO-PRO-CES-SOR MAN-NER MAN-AGE-MENT
.GL KNOW-LEDGE IN-VO-CA-TION IN-SE-CURE IN-DE-PEN-DENT
.GL IM-PLI-CA-TIONS HARD-WARE GEN-ERAL-LY FUNC-TION-ING
.GL FEA-TURES FEAS-IBLE EX-TEND EXER-CISE EXE-CUT-ING
.GL EX-CEP-TION EX-AM-PLE EN-VIRON-MENTS EN-TI-TIES
.GL EM-PLOYED ELSE-WHERE DIREC-TORY DE-TER-MI-NA-TION
.GL DES-CRIP-TORS DEPICTS DE-GREE COR-RECT-NESS CO-OPER-ATION
.GL CON-TRI-BU-TIONS CON-SUL-TA-TION CON-STRAINTS COM-PU-TA-TION-AL
.GL COM-PRE-HEN-SIVE COM-PILER COM-PAR-A-TORS COM-MUN-ICA-TION
.GL CHAR-AC-TER-IZING CHAR-AC-TER-IZED CER-TI-FI-CA-TION
.GL CEN-TRAL CAPA-BILI-TIES BE-LIEVABLY AVAIL-ABLE
.GL AUTO-MA-TION AP-PRO-PRIATE AP-PLI-CA-TIONS AP-PLIED
.GL ANA-LYSIS AL-READY AL-LOWED AC-COM-PLISHED AC-CES-SING
.GL AC-CES-SIBLE UN-STACKED
.GL  TECH-NIQUES SYS-TEM SE-CURED RE-VISIONS RE-COM-MEN-DA-TION
.GL RE-AS-SEM-BLE PRO-CES-SORS POR-TIONS OB-JECTS MOD-IFI-CA-TIONS
.GL IN-COR-PO-RATE IM-PLE-MEN-TA-TION EN-HANCE-MENTS
.GL DE-TECT CON-TRACT COM-PUT-ING COM-PU-TA-TION AP-PLI-CA-BIL-ITY
.DS
1.0  ^UINTRODUCTION^L
.SP 3
       /THIS DOCUMENT
PROPOSES A ONE-YEAR PROJECT TO CONTINUE AND EXTEND
WORK IN COMPUTER SECURITY^/PRIVACY BEGUN ON /JANUARY 1,
1974 BY /TASK /I/I (/MULTIPROCESSOR /COMPUTING /SYSTEMS /TECHNOLOGY
GROUP) OF ^UTHE ALOHA SYSTEM^L.
/THE PROPOSED PROJECT WOULD DEVOTE ITS MAIN EFFORTS TO THE 
DEVELOPMENT OF A SECURED ^UTENEX^L-BASED MULTIPROCESSOR COMPUTING
SYSTEM FOR AND IN COOPERATION WITH ^UNASA^L^//AMES' /INSTITUTE FOR
/ADVANCED /COMPUTATION (/I/A/C).
/THE PRESENT /TASK (KNOWN AS THE ^CMCST TASK)
IS NOW PLANNING FOR SUCH A SYSTEM AND BY
/AUGUST 31, 1974 WILL HAVE PRODUCED A NUMBER OF DETAILED RECOMMENDATIONS
AS TO HOW THE PRESENT ^UTENEX^L SYSTEM SHOULD BE MODIFIED TO ACCOMMODATE
THE SYSTEM AND SECURITY REQUIREMENTS OF ^CIAC.  
/THE MODIFICATIONS ARE BEING DESIGNED IN SUCH A WAY AS TO APPLY
TO OTHER ^UTENEX^L-BASED SYSTEMS
WHERE BETTER SECURITY^/PRIVACY IS ALSO NEEDED.
/SOME OF THE WORK WILL BE OF ENOUGH GENERAL APPLICABILITY
TO EXTEND BEYOND THE ^CTENEX SYSTEM AND APPLY TO OTHER AREAS,
PARTICULARLY THE DEVELOPMENT OF VARIOUS SPECIAL-PURPOSE
SYSTEMS SUCH AS SECURED COMMUNICATIONS PROCESSORS, CENTRAL
FILE SYSTEMS, AND OTHER OPERATING SYSTEM MODULES.

       /THE ^CMCST TASK WAS FORMED EARLY IN 1972 UNDER
/CONTRACT /N/A/S2-6700 (WITH /A/R/P/A-/I/P/T/O FUNDING) TO WORK IN
CONJUNCTION WITH ^UTHE ALOHA SYSTEM^L, AN EXISTING
RESEARCH PROJECT IN THE /DEPARTMENT OF /ELECTRICAL /ENGINEERING
AT THE /UNIVERSITY OF /HAWAII.
/IT WAS THOUGHT AT THAT TIME THAT THE TWO TASKS WOULD EVENTUALLY
MERGE THEIR EFFORTS.  /SINCE THEN, HOWEVER, THEIR WORK HAS 
PROCEEDED ALONG DIFFERENT LINES, AND IT NOW SEEMS APPROPRIATE
THAT THEY SHOULD BE UNDER SEPARATE 
CONTRACT.
/BOTH PROJECTS WILL CONTINUE TO BE ADMINISTRATED
UNDER THE /ELECTRICAL /ENGINEERING /DEPARTMENT AND WILL SHARE
QUARTERS, OFFICE PERSONNEL, AND OTHER FACILITIES AS BEFORE.
.EJ 
2.0  ^USUMMARY OF PRESENT AND PROPOSED WORK^L
.SP 3
       /THE ^CMCST TASK
BEGAN EFFORTS IN /MARCH, 1972 TO REASSEMBLE 
AND REFURBISH, AFTER ITS MOVE TO /HAWAII, THE ^CBCC 500 COMPUTING
SYSTEM AND TO FURTHER DEVELOP ASPECTS OF THE SYSTEM, INCLUDING
COMPLETION OF THE ^CSPL COMPILER AND CONNECTION OF THE SYSTEM
TO THE ^CARPA NETWORK.
[/THIS WORK IS DETAILED IN /SECTION 5.]
/WHEN THIS WORK APPROACHED COMPLETION IN LATE 1973, THE /PROJECT 
BEGAN THE PREPARATION OF RECOMMENDATIONS FOR REVISIONS TO
THE ^CTENEX SYSTEM TO PROVIDE IT WITH
ADDITIONAL SECURITY^/PRIVACY FACILITIES AND TO SECURELY
INCORPORATE IT IN THE FINAL VERSION OF THE ^CIAC SYSTEM.
.SP 5
.EJ 15
2.1  /PRESENT /WORK
.SP 3

       /THE SPECIFIC RESEARCH TASKS NOW BEING WORKED ON ARE:
.SS
.SP
.RM 10
.UN 5
1.  /A RECOMMENDED REORGANIZATION OF THE ^CTENEX MONITOR CODE TO
SEPARATE CRITICAL FROM NON-CRITICAL PORTIONS
IN ORDER THAT THE CRITICAL PORTION MAY BE HARDWARE PROTECTED
FROM THE NON-CRITICAL.

.SP
.UN 5
2.  /A RECOMMENDED MEANS FOR IMPLEMENTING SUCH HARDWARE PROTECTION
(I.E., A "THIRD RING").

.SP
.UN 5
3.  /RECOMMENDED ADDITIONS TO THE ^CTENEX SYSTEM TO PERMIT MORE
SELECTIVE GRANTING OF ACCESS TO SYSTEM OBJECTS AND TO PROGRAMS
AS WELL AS USERS.

.SP
.UN 5
4.  /IDENTIFICATION OF THOSE PORTIONS OF ^CTENEX WHICH
CAN BE REMOVED TO OTHER (MANAGEMENT) PROCESSORS.

.SP
.UN 5
5.  /PROVISION OF GUIDELINES FOR THE PROPER ORGANIZATION OF CODE
IN MANAGEMENT PROCESSORS AND RECOMMENDATION OF HARDWARE FACILITIES
NEEDED TO SUPPORT THIS ORGANIZATION.

.SP
.UN 5
6.  /RECOMMENDED HARDWARE AND SOFTWARE CHECKING TECHNIQUES WHICH
WILL IMPROVE THE OPPORTUNITY TO DETECT A SYSTEM FAILURE BEFORE
SIGNIFICANT DAMAGE HAS BEEN DONE.

.DS
.EM 10
.SP 5
.EJ 15
2.2  /PROPOSED /WORK
.SP 3

       /FOR THE COMING YEAR WE PROPOSE THE FOLLOWING RESEARCH TASKS:

.SP 3
.RM 9
.SS
.UN 4
1.  /PARTICIPATION IN THE REVISIONS OF ^CTENEX TO SEPARATE CRITICAL
FROM NON-CRITICAL FUNCTIONS [CF. /SECT. 4.3].  
/CLERICAL REORGANIZATION WILL BE DIRECTED BY ^CMCST PROJECT STAFF
WORKING IN CONJUNCTION WITH ^CIAC ^CTENEX SUPPORT STAFF.
/DOCUMENTATION WILL BE PRODUCED SPECIFICALLY TO ASSIST SUBSEQUENT
EFFORTS TO AUTHENTICATE THE SECURITY OF THE REORGANIZATION.

.SP
.UN 4
2.  /IMPLEMENTATION OF HARDWARE MODIFICATIONS TO THE /K/I10 PROCESSOR
[/SECT. 4.3].
^CMCST STAFF WILL DESIGN AND SUPERVISE THE MODIFICATIONS; TESTING 
WILL BE DONE IN CONJUNCTION WITH ^CIAC PERSONNEL.

.SP
.UN 4
3.  /IMPLEMENTATION OF NEW FORMS OF ^CTENEX OBJECT ACCESS AND 
VERIFICATION OF THEIR SECURITY ASPECTS [/SECT. 4.4].
/CODING AND DOCUMENTATION WILL BE DIRECTED BY ^CMCST STAFF IN
CONJUNCTION WITH ^CIAC ^CTENEX SUPPORT STAFF.

.SP
.UN 4
4.  /REPLACEMENT OF EXCISED ^CTENEX SYSTEM MANAGEMENT CODE BY CODE
DESIGNED TO COMMUNICATE WITH THE CENTRAL OPERATING SYSTEM
[/SECT. 4.3].
/CODING AND DOCUMENTATION WILL BE DONE PRIMARILY BY ^CMCST STAFF.

.SP
.UN 4
5.  /IMPLEMENTATION OF CODE FOR THE SYSTEM MANAGEMENT PROCESSORS
[/SECT. 4.5].
^CMCST AND ^CIAC STAFF WILL WORK JOINTLY, WITH DETAILED
ASSIGNMENTS TO BE PROVIDED BY ^CIAC.
^CMCST STAFF WILL SUPPLY THE MICROCODE TECHNOLOGY AND SUPPORT;
^CIAC THE DETAILED REQUIREMENTS OF THE CENTRAL OPERATING SYSTEM.
/SPECIFIC DOCUMENTATION WILL BE PRODUCED TO ASSIST EFFORTS TO
AUTHENTICATE THE SECURITY OF EACH PROCESSOR.

.SP
.UN 4
6.  /DEVELOPMENT AND IMPLEMENTATION OF HARDWARE CONSTRAINTS IN THE
MANAGEMENT PROCESSOR TO BE USED BY ^CIAC [/SECT. 4.5].
/THE CONCEPTION, PLANNING, AND DOCUMENTATION FOR SUCH MODIFICATIONS
ARE TO BE DONE BY ^CMCST STAFF; ACTUAL HARDWARE MODIFICATIONS
ARE TO BE INCORPORATED IN THE PROCESSORS AS THEY ARE PRODUCED
(BY ^CIAC).

.SP
.UN 4
7.  /A THEORETICAL INVESTIGATION OF THE IMPLICATIONS OF HARDWARE
CONSTRAINTS ON THE ORGANIZATION AND INTERACTION OF SYSTEM MANAGEMENT
CODE; THIS WORK WILL EXAMINE THE PROPERTIES OF CODE WITH EMPHASIS
ON FLOW ANALYSIS AND RESOURCE ALLOCATION.
.EM 9

.EJ

3.0  ^USUGGESTED WORK STATEMENT^L
.SP 4
.RM 6
.UN 6
.SS
/I.   /DURING THE CONTRACT YEAR THE CONTRACTOR SHALL DEVOTE HIS
FULL EFFORTS TO RESEARCH AND DEVELOPMENT IN SUPPORT OF
SECURITY^/PRIVACY
MEASURES FOR THE ^CILLIAC ^CIV COMPUTER SYSTEM AT THE /N/A/S/A^//AMES
/INSTITUTE FOR /ADVANCED /COMPUTATION.
/THIS WILL INCLUDE, BUT NOT BE LIMITED TO, THE FOLLOWING
SPECIFIC TASKS:
.SP
.RM 5
.UN 5

1.  /PARTICIPATION WITH ^CIAC STAFF IN REVISION OF THE ^CTENEX SYSTEM
TO SEPARATE CRITICAL FROM NON-CRITICAL FUNCTIONS.
/THIS PARTICIPATION WILL INCLUDE DIRECTION OF THE EFFORT AND THE
PRODUCTION OF DOCUMENTATION TO ASSIST ANY SUBSEQUENT EFFORTS TO
AUTHENTICATE THE SECURITY OF THE REORGANIZED SYSTEM
.SP
.UN 5
2.  /IMPLEMENTATION OF HARDWARE MODIFICATIONS TO THE ^CDEC /K/I10
PROCESSOR.
/DESIGN AND DOCUMENTATION OF THE MODIFICATIONS AND THE SUPERVISION
OF THEIR INSTALLATION ARE SPECIFICALLY WHAT IS TO BE DONE.
/ACQUISITION OF PARTS AND OTHER LOGISTICAL ARRANGEMENTS ARE TO BE 
DONE BY ^CIAC.

.SP
.UN 5
3.  /IMPLEMENTATION OF NEW FORMS OF ^CTENEX OBJECT ACCESS; SPECIFICALLY,
ACCESS CONTROL LISTS FOR FILES AND THE ASSOCIATION OF
ACCESS WITH PROGRAMS AS OPPOSED TO JOBS.
/THIS WILL INCLUDE THE DIRECTION OF JOINT EFFORTS WITH ^CIAC STAFF
AND THE PRODUCTION OF APPROPRIATE DOCUMENTATION.

.SP
.UN 5
4.  /REPLACEMENT OF EXCISED ^CTENEX SYSTEM MANAGEMENT CODE BY CODE
DESIGNED TO COMMUNICATE WITH THE CENTRAL OPERATING SYSTEM.

.SP
.UN 5
5.  /PARTICIPATION IN THE IMPLEMENTATION OF CODE FOR THE SYSTEM 
MANAGEMENT PROCESSORS.
/THIS WILL INCLUDE SUPPLYING CONSULTATION AND ADVICE ON MATTERS
RELATING TO THE USE OF MICROCODE IN THE PROCESSORS AND ON THE
USE OF MICROCODE COMPILERS AND SIMULATORS RUNNING ON THE
/B/C/C 500 COMPUTER.

.SP
.UN 5
6.  /DEVELOPMENT AND IMPLEMENTATION OF HARDWARE CONSTRAINTS IN THE
MANAGEMENT PROCESSOR TO BE USED BY ^CIAC.
/THIS WILL INCLUDE THE CONCEPTION, PLANNING, AND DOCUMENTATION FOR
SUCH MODIFICATIONS, THE ACTUAL HARDWARE WORK TO BE DONE BY ^CIAC.

.SP
.UN 5
7.  /A THEORETICAL INVESTIGATION OF THE IMPLICATIONS OF HARDWARE
CONSTRAINTS ON THE ORGANIZATION AND INTERACTION OF SYSTEM MANAGEMENT
CODE.
/THIS WILL EXAMINE THE PROPERTIES OF CODE WITH EMPHASIS ON FLOW
ANALYSIS AND RESOURCE ALLOCATION.

.SP 4
.UN 6
/I/I.  /THE /B/C/C 500 SYSTEM SHALL BE AVAILABLE AS A COMPUTATION
FACILITY IN PERFORMING THE TASKS IN /PART /I OF THE STATEMENT 
OF WORK.  /IT SHALL ALSO BE MAINTAINED SO AS TO BE AVAILABLE
FOR USE BY /I/A/C PERSONNEL FOR DESIGN AUTOMATION SUPPORT
AND FOR A LIMITED NUMBER OF ^CARPA COMMUNITY RESEARCHERS.
.DS
.EM 11
.EJ 
4.0  ^UDETAILED PROPOSAL: METHODS FOR SECURING THE IAC SYSTEM^L
.SP 3
       /THE PROPOSED PROJECT WILL WORK CLOSELY WITH THE ^CIAC SYSTEM
DEVELOPMENT STAFF TOWARD THE FINAL CONFIGURATION, DESCRIBED BELOW,
OF A SYSTEM INVOLVING MANY COMPONENTS AND ACCESSIBLE  
TO A LARGE AND VARIED COMMUNITY OF USERS.
/WE PROPOSE TO EXTEND
OUR PRESENT INVOLVEMENT IN THE PLANNING FOR THIS
SYSTEM TO INCLUDE PORTIONS OF THE
ACTUAL IMPLEMENTATION AND TO PURSUE FURTHER INVESTIGATIONS INTO 
PROVISION OF COMPUTER SECURITY WITH EMPHASIS ON SYSTEMS UTILIZING
MULTIPLE PROCESSORS.
/THIS SECTION DISCUSSES THE PROPOSED WORK IN DETAIL.
/BEFORE GOING INTO THE WORK, HOWEVER, IT IS DESIRABLE TO REVIEW
THE CURRENT AND PLANNED ^CIAC SYSTEMS.
.SP 5
.EJ 15
4.1  /I/A/C /SYSTEM /DESCRIPTION
.SP 3
       /THE /I/A/C SYSTEM EXISTS TO PROVIDE A NUMBER OF USERS 
ACROSS THE /UNITED /STATES WITH THE SERVICES OF TWO MAJOR RESOURCES:
THE ^UILLIAC IV^L PROCESSOR, CAPABLE OF EXECUTING PROGRAMS AT THE
RATE OF 150 MILLION OPERATIONS PER SECOND, AND THE ^UUNICON^L MASS
STORAGE DEVICE, CAPABLE OF STORING ON-LINE OVER 85 BILLION
CHARACTERS OF INFORMATION.
/BOTH OF THESE DEVICES ARE UNIQUE AND OF GREAT VALUE, AND
TOGETHER CONSTITUTE
A MAJOR, NATIONAL COMPUTING RESOURCE.
/USERS OF THE ^CILLIAC AND ^CUNICON GAIN ACCESS BY MEANS OF 
THE ^CARPA NETWORK.

       /THE ^CIAC SYSTEM ALSO INCLUDES A GENERAL-PURPOSE
COMPUTING SYSTEM.
/THIS SYSTEM CONSISTS AT PRESENT OF
A /DIGITAL /EQUIPMENT /CORPORATION
/P/D/P-10 (/K/I10 CENTRAL PROCESSOR) RUNNING THE ^CTENEX OPERATING
SYSTEM.
/THE ^CTENEX SYSTEM CONTROLS THE USER JOB SEQUENCES AND EXECUTES
UTILITY PROGRAMS PROVIDED TO USERS
(GENERAL PURPOSE TEXT EDITORS,
LANGUAGE TRANSLATORS, AN ^UILLIAC^L SIMULATOR, AND OTHERS).
/THESE SERVICES MATERIALLY ASSIST THE USER IN PREPARING,
DEBUGGING, AND RUNNING HIS PROGRAM, AND IN ASSEMBLING AND FORMATTING
HIS DATA.
       /I/A/C PLANS TO MODIFY THE CURRENT SYSTEM CONSIDERABLY FROM
ITS PRESENT CONFIGURATION.
/THESE MODIFICATIONS ARE TO BE MADE PRIMARILY

.RM 9
.SP
.EJ 14
.SS
.UN 4
(A) TO PROVIDE FOR AN EXPANSION OF USER SERVICES,
.SP

.UN 4
(B) TO INCREASE THE EFFICIENCY OF THE ENTIRE SYSTEM AND, IN PARTICULAR,
THE USE OF THE ^UILLIAC^L AND THE ^UUNICON^L,
.SP

.UN 4
(C) TO ESTABLISH AN INDEPENDENT ^UUNICON^L-BASED CENTRAL FILE
SYSTEM WHICH IS RELIABLE AND CONTINUOUSLY AVAILABLE EVEN WHEN THE
REST OF THE SYSTEM IS NOT; AND
.SP

.UN 4
(D) TO PROVIDE WITHIN THE SYSTEM A CAPABILITY FOR
HANDLING A LARGE NUMBER OF FILES OF
INFORMATION WITH AN ASSURED LEVEL OF PROTECTION.*
.EM 9
.SP 2
.DS

       /THE FINAL SYSTEM PLANNED BY /I/A/C MAY BE VIEWED AS CONSISTING
OF A CENTRAL OPERATING SYSTEM AND AT LEAST
THE FOLLOWING COMPONENTS:

.RM 10
1)  ^CTENEX SYSTEM

2)  CENTRAL FILE SYSTEM (^CUNICON)

3)  ^CILLIAC ^CIV SUBSYSTEM

4)  /BURROUGHS /B6700 SYSTEM

.EM 10
/THESE WILL BE DESCRIBED BRIEFLY IN THE FOLLOWING
PARAGRAPHS.

.SP 4

.SS
^---------------------------------

*/AN EXAMPLE OF THE NEED FOR ASSURING SUCH DATA PROTECTION
CAN BE FOUND IN THE FOLLOWING:
/IT IS FORESEEN THAT THE ^CUNICON MAY STORE
CONSIDERABLE QUANTITIES OF SEISMIC DATA RELATED TO UNDERGROUND
NUCLEAR TESTING.
/IN COOPERATION WITH OTHER NATIONS AND PARTIALLY IN SUPPORT OF
NUCLEAR TEST BAN TREATIES, THIS DATA
(TOGETHER WITH ^CILLIAC PROCESSING CAPABILITY) MUST BE AVAILABLE TO A
NUMBER OF NATIONS 
FOR THEIR OWN ANALYSIS.
^I/ALL PARTICIPATING NATIONS MUST BE ASSURED THAT THE DATA, ONCE
AUTHENTICATED
IN FILES, IS READABLE BY ALL BUT WRITEABLE BY NONE.
/THIS EXAMPLE SERVES TO UNDERSCORE THE NEED FOR CENTRAL SYSTEM
PROTECTION, EVEN WHEN THE INFORMATION BEING PROTECTED IS NOT,
IN THE MILITARY SENSE, CLASSIFIED.
.DS

.EJ

       4.1.1  /CENTRAL /OPERATING /SYSTEM

   /THE CENTRAL OPERATING SYSTEM WILL BE DISTRIBUTED OVER A NUMBER
OF MANAGEMENT PROCESSORS CONNECTED TO A LARGE CENTRAL
MEMORY.
/THESE MANAGEMENT PROCESSORS WILL NOT BE /P/D/P-10'S, AND 
THE OPERATING SYSTEM WILL NOT BE THE ^UTENEX^L SYSTEM.
[/THE MANAGEMENT PROCESSOR TO BE USED WAS DEVELOPED BY THE ^CMCST
TASK FOR ^CIAC AND IS DESCRIBED IN /SECTION 5.]
/THE MANAGEMENT PROCESSORS WILL RUN FIXED PROGRAMS -- PART IN
/P/D/P-11 CODE AND PART IN MICROCODE --
TO PERFORM SUCH SYSTEM-WIDE
FUNCTIONS AS SCHEDULING, INPUT-OUTPUT, MONITORING, AND
STORAGE MANAGEMENT.

   /BOTH THE ^CILLIAC SUBSYSTEM (WHICH CONTAINS A DIFFICULT TO MANAGE
HIGH SPEED DISK FILE) AND THE ^CUNICON WILL HAVE THEIR OWN
MANAGEMENT PROCESSORS.
/ALL OF THE CUSTOMARY ON-LINE PERIPHERAL DEVICES WILL BE
CONTROLLED BY ANOTHER MANAGEMENT PROCESSOR, AS WILL
ALL COMMUNICATION BETWEEN THE SYSTEM AND ITS VARIOUS USERS 
(I.E., THE /A/R/P/A NETWORK).
/THE CENTRAL MEMORY WILL
HAVE ATTACHED TO IT A BUFFER DISK
TO ABSORB THE PEAK SURGES OF MEMORY ACTIVITY WHICH WILL RESULT
WHEN AN ^UILLIAC^L PROCESS IS TERMINATED AND ANOTHER ONE MUST BE
LOADED.
/THIS BUFFER DISK AND THE PRESENT ^CTENEX SWAPPING DRUM 
WILL BE CONTROLLED BY
ONE OR MORE MEMORY MANAGEMENT PROCESSORS, WHICH WILL ALSO GOVERN
THE ALLOCATION OF SPACE WITHIN THE CENTRAL MEMORY.

.SP 2
.EJ 10
       4.1.2  ^CTENEX /SYSTEM

       ^CTENEX WILL BE EXTENSIVELY MODIFIED, ALTHOUGH THE
MODIFICATIONS WILL NOT BE APPARENT TO THE SYSTEM'S USERS.
/ALL OF THE SYSTEM'S CURRENT MANAGEMENT FUNCTIONS WILL BE REMOVED
INTO THE CENTRAL OPERATING SYSTEM AND INTEGRATED WITH OTHER SYSTEM
MANAGEMENT ACTIVITY.
/THE REMAINING PORTIONS OF THE ^UTENEX^L CODE -- PRIMARILY
THOSE WHICH IMPLEMENT THE ^CTENEX FILE SYSTEM AND PROVIDE 
USER
SERVICES -- WILL BE MODIFIED SO THAT SUCH
CODE MAY COMMUNICATE WITH THE (REMOVED) SYSTEM MANAGEMENT CODE.

       /ALL OF THE CHANGES TO ^UTENEX^L WILL BE MADE WITH A 
STRICT ADHERENCE TO THE CONSIDERATIONS OF USER PRIVACY.
/THE MANNER IN WHICH THIS WILL BE DONE IS DISCUSSED IN /SECTION 4.3.
/THE NECESSITY FOR MAKING THE CHANGES ALSO
PRESENTS
AN OPPORTUNITY TO INTRODUCE INTO THE SYSTEM SOME ADDITIONAL
SECURITY^/PRIVACY FACILITIES.
/THESE ARE DISCUSSED IN /SECTION 4.4.

.SP 2
.EJ 10
       4.1.3  /CENTRAL /FILE /SYSTEM
       /THE CENTRAL FILE SYSTEM WILL INCLUDE THE ^UUNICON^L AND ONE
OR MORE MANAGEMENT PROCESSORS.  
/IT SHOULD BE
REGARDED AS AN INDEPENDENT SYSTEM,
AND IT HAS ITS OWN CONNECTION TO THE /A/R/P/A NETWORK.
/THE CENTRAL FILE SYSTEM WILL BE
ACCESSIBLE TO NETWORK USERS
EVEN IF THE REST OF THE /I/A/C SYSTEM IS NOT FUNCTIONING.
/I/A/C SYSTEM USERS MAY ACCESS THE
CENTRAL FILE SYSTEM NO DIFFERENTLY FROM OTHER NETWORK USERS.
/THE CENTRAL FILE SYSTEM WILL HAVE ITS OWN SEPARATE DIRECTORY
STRUCTURE AND SECURITY^/PRIVACY MECHANISMS;
IT WILL BE COMPLETELY INDEPENDENT OF ^CTENEX.

.SP 2
.EJ 10
       4.1.4  ^CILLIAC ^CIV /SUBSYSTEM

       /THE ^CILLIAC ^CIV SUBSYSTEM CONSISTS OF THE ^CILLIAC ^CIV
PROCESSING ARRAY, CONTROL UNIT, AND HIGH SPEED DISK (CALLED THE ^CILLIAC
DISK), TOGETHER WITH A
MANAGEMENT PROCESSOR.
/THE MANAGEMENT PROCESSOR IS DEVOTED PRIMARILY TO MANAGEMENT
OF DATA TRANSFERS BETWEEN THE ARRAY AND
THE ^CILLIAC DISK -- A TASK OF CONSIDERABLE MAGNITUDE.
/SECURITY CONSIDERATIONS FOR THE ARRAY STORAGE ARE SIMPLE,
SINCE IT DEALS ONLY WITH ONE JOB AT A TIME; THE USUAL SOLUTION OF
PURGING THE SYSTEM AS THE SWITCH IS MADE FROM ONE JOB TO ANOTHER
IS SUFFICIENT TO KEEP JOBS FROM INTERFERING WITH OR HAVING ACCESS
TO EACH OTHER.
/SECURITY OF INFORMATION ON THE ^CILLIAC DISK WILL BE PROVIDED
BY PROTECTION MECHANISMS IMPLEMENTED WITHIN THE MANAGEMENT PROCESSOR.

.SP 2
.EJ 10
       4.1.5  /BURROUGHS /B6700 /SUBSYSTEM
       /THE INTERIM AND FINAL SYSTEMS BOTH INCLUDE A
/BURROUGHS /B6700 COMPUTING SYSTEM, THE MAIN PURPOSE OF WHICH IS
TO CARRY OUT CERTAIN PREPARATION TASKS FOR ^CILLIAC PROGRAMS
(MAINLY COMPILING).  /SECURITY CONSIDERATIONS FOR THIS SYSTEM
WILL PROBABLY DICTATE THAT, UPON REQUEST, IT CAN BE OPERATED
IN ONE-USER-AT-A-TIME (NON-MULTIPROGRAMMING) MODE AND THAT IT BE
PURGED AFTER EACH JOB.

.SP 5
.EJ 15
4.2  /SCOPE OF THE /PROPOSAL
.SP 3

       /THIS PROPOSAL IS DIRECTED TO THE IMPLEMENTATION OF THE
CENTRAL OPERATING SYSTEM AND THE REORGANIZATION OF THE ^CTENEX
SYSTEM WITH APPROPRIATE SECURITY CONSIDERATIONS.
/THE DIRECT ATTENTION OF THE PROJECT WILL BE GIVEN ONLY TO THESE
ITEMS, BUT
CERTAIN ASPECTS OF
THE WORK WILL IMPINGE ON THE DESIGN AND IMPLEMENTATION 
OF THE CENTRAL FILE SYSTEM AND THE ^CILLIAC ^CIV SUBSYSTEM.

       /WE FIRST DISCUSS [/SECTION 4.3] THE REORGANIZATION OF ^CTENEX
TO REMOVE ITS MANAGEMENT CODE AND TO PROVIDE FOR VERIFIED SECURITY
OF THE RESULTANT CODE RUNNING ON THE /K/I10 PROCESSOR.
/WE PROPOSE TO PARTICIPATE IN THIS WORK THROUGH DETAILED CONSULTATION
AND EVEN ACTUAL CODING EFFORTS WHERE THIS SEEMS CALLED FOR.

       /NEXT [/SECTION 4.4] WE DISCUSS CERTAIN NEEDED ENHANCEMENTS
TO ^CTENEX.  
/AGAIN WE WILL PROVIDE NECESSARY CONSULTATION AND^/OR CODING MANPOWER.

       /FINALLY, WE DISCUSS [/SECTION 4.5] IMPLEMENTATION OF PROTECTION
MECHANISMS IN THE MANAGEMENT PROCESSOR CODE.
/IN THIS AREA WE PROPOSE TO TAKE A MAJOR ROLE: IN TERMS 
OF DESIGN AND
IMPLEMENTATION OF THE CODE; AND IN THE DETERMINATION OF NEW
CONSTRAINTS WHICH WILL GREATLY SIMPLIFY THE PROBLEMS
OF VERIFYING SUCH CODE.

.SP 5
.EJ 15
4.3  /PROVIDING /SECURITY IN THE ^CTENEX /SYSTEM
.SP 3
       /THE REMOVAL OF ALL ^CTENEX SYSTEM MANAGEMENT CODE AND ITS
INTEGRATION INTO THE CENTRAL OPERATING SYSTEM HAS ALREADY BEEN
MENTIONED.
/THIS CODE WILL BE REPLACED WITH A SMALL AMOUNT OF NEW CODE TO
COMMUNICATE WITH THE MANAGEMENT PROCESSORS (THE CENTRAL OPERATING
SYSTEM).

       /THE REMAINING ^CTENEX CODE (THE BULK OF THE ^CJSYS CODE)
WILL BE EXTENSIVELY REORGANIZED
TO PROVIDE WITHIN THE
RESULTING STRUCTURE A WELL-DEFINED WALL OF PROTECTION WHICH INCLUDES
ONLY A NECESSARY MINIMUM OF THE CURRENT ^CTENEX MONITOR.
/ALL MODIFICATIONS TO ^CTENEX
WILL BE DONE IN SUCH A WAY THAT ^-NO CURRENT USER PROGRAMS
(WITH THE POSSIBLE EXCEPTION OF A HANDFUL OF PRIVILEGED PROGRAMS)
^-WILL BE AFFECTED^E.

   /THE CURRENT /K/I10 ^CTENEX SYSTEM UTILIZES TWO PROCESSOR MODES:
ONE FOR THE USER CODE AND ONE FOR THE SYSTEM CODE.
/THESE MODES GOVERN THE INSTRUCTION SET AND MEMORY SPACE VISIBLE
TO A USER OR SYSTEM PROCESS.
/SINCE ONLY ONE MODE IS USED FOR ALL OF THE SYSTEM CODE,
EVERY SYSTEM ROUTINE HAS THE SAME CAPABILITY AS EVERY OTHER SYSTEM
ROUTINE (I.E., THE FULL CAPABILITY OF THE HARDWARE) WHETHER IT
NEEDS IT OR NOT; AND THE SYSTEM MUST THUS BE TREATED AS A SINGLE
(LARGE) ENTITY IN ANY ATTEMPTS TO VERIFY ITS GOOD BEHAVIOR.

       /CLEARLY WHAT IS NEEDED TO ALLEVIATE THIS PROBLEM IS A NUMBER
OF LEVELS OF CAPABILITY ON WHICH VARIOUS SYSTEM ROUTINES CAN RUN.
/EVEN ONE ADDITIONAL PROCESSOR MODE WITH SUITABLE HARDWARE RESTRICTIONS
WOULD BE OF GREAT VALUE, SINCE MOST OF THE ^CJSYS CODE IS CONCERNED
ONLY WITH THE ACTIVE USER AND HAS NO NEED TO ACCESS SYSTEM-WIDE
DATA STRUCTURES.

       /THE /K/I10 HAS SUCH A MODE; ITS EXECUTIVE MODE HAS TWO SUBMODES
CALLED "KERNEL" AND "SUPERVISOR" MODES.
/SUPERVISOR MODE HAS LARGELY THE SAME INSTRUCTION AND MEMORY
RESTRICTIONS AS USER MODE.
(/IT CAN, HOWEVER, READ PAGES OF THE KERNEL; THIS CAPABILITY WE
PROPOSE TO ELIMINATE.)
/KERNEL MODE HAS NO INSTRUCTION
RESTRICTIONS AND NO MEMORY CONSTRAINTS.

       /IN THE ^CTENEX REORGANIZATION, KERNEL AND SUPERVISOR MODES
WILL BE MODIFIED SLIGHTLY TO INCREASE THE PROTECTION AND DECREASE
THE CAPABILITIES OF KERNEL MODE.
/THEN THE ^CJSYS CODE WILL BE DIVIDED INTO "CRITICAL" AND "NON-CRITICAL"
PORTIONS.
/THE CRITICAL PORTION WILL REQUIRE ACCESS TO SYSTEM-WIDE DATA
OR WILL NEED TO COMMUNICATE WITH THE CENTRAL OPERATING SYSTEM AND
WILL RUN UNDER KERNEL MODE CAPABILITIES; THE NON-CRITICAL
PORTION WILL DEAL MAINLY WITH THE ACTIVE USER, WILL NOT NEED 
ACCESS TO SYSTEM-WIDE INFORMATION, AND WILL RUN UNDER SUPERVISOR
MODE CONSTRAINTS.
/THE AMOUNT OF SYSTEM CODE RUNNING UNDER KERNEL MODE 
WILL BE ONLY A FRACTION OF THE CURRENT ^CTENEX MONITOR CODE.
/THIS DRASTIC REDUCTION IN SIZE WILL HELP
MAKE FEASIBLE THE VERIFICATION 
OF THE ^CTENEX ^IKERNEL
AND 
WILL RESULT IN THE ESTABLISHMENT OF A CLEARLY-DEFINED WALL OF
PROTECTION BETWEEN EACH USER AND THE REST OF THE SYSTEM AT THE 
ENTRANCE TO THE KERNEL.
       /IT SHOULD AGAIN BE STRESSED THAT NO USER PROGRAMS
WILL BE AFFECTED
BY THE SYSTEM REORGANIZATION.
/MANY NEW SYSTEM CALLS -- BOTH ORDINARY /J/S/Y/S'S AND KERNEL CALLS --
MAY BE
ADDED, BUT NONE (EXCEPT POSSIBLY PRIVILEGED ONES) WILL BE DELETED 
OR MODIFIED IN SUCH A WAY AS TO REQUIRE CHANGES TO EXISTING
USER CODE.
/FIGURE 1 ILLUSTRATES THE CHANGES WHICH WILL BE MADE.
.EJ
.SP 26
.CE
/FIGURE 1A.  /CURRENT ^CTENEX /SYSTEM
.SP 24
.CE
/FIGURE 1B.  ^CTENEX AFTER /REORGANIZATION
.EJ


4.4  /IMPROVING /PROTECTION OF /OBJECTS IN THE ^UTENEX^L /SYSTEM
.SP 3
       /THE PRECEDING SECTION DISCUSSES WAYS
IN WHICH
THE PRESENT ^UTENEX^L SYSTEM WILL BE MODIFIED TO OPERATE IN 
THE /I/A/C SYSTEM WHILE HAVING INCORPORATED IN IT A MUCH GREATER
DEGREE OF (VERIFIED) PROTECTION.
/THE PRESENT ^UTENEX^L, HOWEVER, LACKS SOME FACILITIES RELATED TO
OBJECT ACCESS CAPABILITIES WHICH ARE 
BADLY NEEDED IN A SYSTEM WITH SUCH A LARGE AND DISPARATE USER
COMMUNITY AS ^CIAC WILL SERVE.
/WE PROPOSE TO INCORPORATE SUCH FACILITIES INTO THE SYSTEM DURING
THE REORGANIZATION EFFORT.
/THE RESULTING NEW CODE WILL ALSO BE DIVIDED INTO CRITICAL AND
NON-CRITICAL PORTIONS GOING RESPECTIVELY INTO THE (VERIFIED) KERNEL
AND THE (NON-VERIFIED) SUPERVISOR CODE.

.SP 2
.EJ 10
       4.4.1  /PROVIDING /MORE /SELECTIVE /ACCESS /SPECIFICATION

       /A COMPUTING SYSTEM SHOULD BOTH PROVIDE ADEQUATE
SECURITY OF EACH OF ITS USERS' FILES AND INCLUDE
FEATURES WHICH FACILITATE FILE SHARING.
/THIS "SECURE SHARING" OF FILES IS IMPLEMENTED IN ^CTENEX
PRESENTLY ALONG THE FOLLOWING LINES:

.RM 9
.SS
.SP
.UN 4
1.  /SEVERAL KINDS OF RESTRICTED ACCESS TO FILES ARE DEFINED (AMONG
THEM: ^UREAD, WRITE, EXECUTE, ^LAND ^UAPPEND^L ACCESS).

.SP
.UN 4
2.  /ALL OPERATIONS ON FILES ARE CHARACTERIZED BY THE KINDS
OF ACCESS THEY NEED TO THE FILE THEY OPERATE ON. 
/THE SYSTEM CALLS THAT IMPLEMENT THESE OPERATIONS ALWAYS CHECK TO 
SEE THAT THE CALLING USER HAS (AT LEAST) THE REQUIRED ACCESS TO
THE FILE.

.SP
.UN 4
3.  /THE SYSTEM PERMITS DIFFERENT CATEGORIES OF ACCESS TO EACH
OBJECT BELONGING TO A USER ACCORDING TO WHETHER THE CALLING USER
IS A MEMBER OF ONE OF THREE CLASSES: THE USER HIMSELF (^IOWNER),
A MEMBER OF A DEFINED ^IGROUP, AND THE ^IPUBLIC (ALL OTHER USERS).

.SP

.DS

.EM 9
       /THIS SCHEME FOR SELECTIVELY SHARING INFORMATION IS NOT
ADEQUATE FOR THE ^CIAC SYSTEM WITH ITS LARGE USER
COMMUNITY.
/THE ONLY WAY A USER MAY GIVE ANOTHER USER ACCESS TO ONE OF
HIS FILES (OTHER THAN BY GIVING SUCH ACCESS TO ^IALL USERS)
IS TO USE THE GROUP MECHANISM; AND ^CTENEX PERMITS A TOTAL OF
ONLY 36 GROUPS.

       /WE PROPOSE TO ADD TO ^CTENEX
SOME FORM OF ACCESS CONTROL LIST WHICH WILL BE ASSOCIATED WITH EACH
^UTENEX^L FILE.
/SUCH A LIST WILL TAKE THE FORM EITHER OF AN EXPLICIT LIST OF USER
NAMES AND THEIR ASSOCIATED ACCESS TO THE FILE (AS IN ^UMULTICS^L)
OR A LIST OF ACCESS LOCKS (AS IN THE /B/C/C 500).

.SP 2
.EJ 10
       4.4.2  /ASSOCIATING /ACCESS WITH /PROGRAMS

       /WE HAVE SEEN IN THE PREVIOUS SECTION THAT THE CAPABILITIES
TO ACCESS PROTECTED OBJECTS ARE ASSOCIATED IN ^CTENEX WITH THE
IDENTITY OF USERS OF THE SYSTEM.
/WE PROPOSED A MODIFICATION TO MAKE POSSIBLE A MORE SELECTIVE 
ASSOCIATION OF USERS WITH CAPABILITIES THAN IS NOW AVAILABLE.
/THIS ENHANCEMENT OF ^CTENEX IS NECESSARY FOR IT TO BE REALLY
USEFUL IN /I/A/C'S TYPE OF USER ENVIRONMENT, BUT IT ISN'T 
SUFFICIENT TO SOLVE SOME OF THE PROBLEMS THAT ARE ALREADY
BEING ENCOUNTERED BY ^CIAC.
/THESE PROBLEMS ARE A CONSEQUENCE OF THE WAY ^CTENEX BINDS USERS AND
THEIR CAPABILITIES TO PROGRAMS BEING RUN BY THE USERS.

       /WHEN A USER HAS PERFORMED ^CTENEX'^ES ^CLOGIN PROCEDURE,
HE IS REPRESENTED IN THE SYSTEM BY A "JOB" CONTAINING A SINGLE
PROCESS, OR "FORK", WITHIN WHICH A SYSTEM-PROVIDED PROGRAM
CALLED THE ^CEXEC IS RUNNING.
/THE USER CAN COMMUNICATE WITH THE ^CEXEC
AND CAN COMMAND IT TO PERFORM A VARIETY OF ACTIONS FOR
HIM.
/IN PARTICULAR HE CAN COMMAND IT TO PERFORM OPERATIONS 
THAT HE HIMSELF IS NOT AUTHORIZED TO PERFORM.
/THE WAY ^CTENEX GUARDS AGAINST THIS IS, OF COURSE, TO RESTRICT
THE CAPABILITIES OF THE ^CEXEC TO EXACTLY THOSE OF THE USER,
AS DETERMINED AT ^CLOGIN TIME.
/THE SAME APPLIES TO ANY OTHER PROGRAMS RUN BY THE USER.
/THESE PROGRAMS WILL RUN IN "INFERIOR FORKS" OF THE ^CEXEC AND WILL
HAVE NO CAPABILITIES BEYOND THOSE POSSESSED BY THE ^CEXEC.

       /THIS SCHEME IS PERFECTLY ^ISECURE (ASSUMING THE CORRECTNESS
OF THE ^CTENEX MONITOR), SINCE IT ENSURES THAT NO PROGRAM
A USER RUNS CAN DO ANYTHING THE USER ISN'T AUTHORIZED TO DO.
/THE PROBLEM IS THAT THERE ARE CASES WHERE ONE WISHES TO ALLOW
USERS TO RUN SPECIFIC PROGRAMS WHICH EXERCISE CAPABILITIES ^INOT
POSSESSED BY THE USER HIMSELF.
/FOR EXAMPLE, MANY ^CJSYS^EES ARE LIKE THIS.
/THEY CAN BE INVOKED BY THE USER'S PROGRAM TO PROVIDE SERVICES
WHICH REQUIRE THE USE OF CAPABILITIES FAR IN EXCESS OF THOSE THE
USER CAN DIRECTLY EXERCISE.

       /AS A SYSTEM DEVELOPS TO MEET THE REQUIREMENTS OF ITS USER
COMMUNITY, THE NEED FOR NEW USER SERVICES CONSTANTLY ARISES.
/WHEN THE PERFORMANCE OF SUCH A SERVICE CAN ONLY BE ACCOMPLISHED
USING CAPABILITIES WHICH CANNOT SAFELY BE GIVEN TO ALL USERS  
OF THE SERVICE, THERE ARE NOW IN ^CTENEX ONLY TWO
POSSIBILITIES FOR IMPLEMENTING THE SERVICE: EITHER IMPLEMENT IT
WITHIN THE MONITOR ITSELF, OR IMPLEMENT IT INSECURELY.

       /AN EXAMPLE OF THE INSECURE IMPLEMENTATION OF A SERVICE WHICH
IS NEVERTHELESS MUCH USED IS PROVIDED BY THE ^CTENEX ^CSNDMSG PROGRAM.
/THIS PROGRAM IMPLEMENTS A MESSAGE SENDING SERVICE THAT HAS PROVEN
OF GREAT VALUE TO THE MEMBERS OF THE ^CARPA COMMUNITY.
/IT WORKS AS FOLLOWS.  /EVERY PARTICIPATING USER HAS IN HIS FILE
DIRECTORY A FILE NAMED ^UMESSAGE.TXT^L.  ^CSNDMSG ACCEPTS A MESSAGE
TYPED IN BY A USER, PREFIXES TO IT THE DATE AND TIME AND THE NAME
OF THE SENDING USER, AND APPENDS IT TO THE ADDRESSED USER'S
^UMESSAGE.TXT^L FILE.  
/THE ^CTENEX FILE PROTECTION MECHANISMS ARE ADEQUATE TO PREVENT
ANY UNAUTHORIZED USER FROM ^IREADING ANOTHER'S ^UMESSAGE.TXT^L
FILE, AND ^CSNDMSG IS (IN THEORY) SECURE IN THIS RESPECT.
/HOWEVER, THE MESSAGE SYSTEM IS ^IINSECURE WITH RESPECT TO FORGERY.
/IN ORDER FOR ^CSNDMSG TO DO ITS WORK, IT MUST BE ABLE TO EXERCISE
^CAPPEND ACCESS ON ANY ADDRESSED USER'S ^UMESSAGE.TXT^L FILE.
/BUT A USER RUNS ^CSNDMSG, LIKE ANY OTHER SUBSYSTEM, AS AN "INFERIOR
FORK" OF HIS JOB'S ^CEXEC.
/AS WE HAVE SEEN, THIS MEANS THAT ^CSNDMSG CAN EXERCISE ONLY THOSE
CAPABILITIES ALSO AVAILABLE TO THE USER ON WHOSE BEHALF IT IS RUNNING.
/AS A RESULT, EVERY USER MUST HAVE ^CAPPEND ACCESS TO EVERY OTHER
USER'S ^UMESSAGE.TXT^L FILE IN ORDER FOR ^CSNDMSG TO WORK; AND THERE
IS NO WAY TO PREVENT A USER FROM USING THIS ACCESS DIRECTLY TO,
FOR EXAMPLE, SEND FALSE "MESSAGES" TO OTHER USERS.

       /WHAT IS NEEDED IS A MEANS FOR ALLOWING USERS TO RUN
PROGRAMS WHICH USE CAPABILITIES IN EXCESS OF THOSE DIRECTLY 
EXERCISABLE BY THE USER.
/THIS CAN BE PROVIDED IN ^CTENEX WITHOUT TOO GREAT AN UPHEAVAL.
/THREE THINGS ARE REQUIRED:

.SP
.SS
.RM 9
.UN 4
(1) /IT MUST BE POSSIBLE TO ASSIGN CAPABILITIES TO PROGRAMS.
/ONCE THE MODIFICATION OF THE PREVIOUS SECTION IS MADE, AND IT IS
POSSIBLE TO SPECIFY ACCESS TO OBJECTS ON A USER-BY-USER BASIS,
THIS CAN BE ACHIEVED (SOMEWHAT INELEGANTLY) BY CREATING "USERS"
TO REPRESENT THE PROGRAMS AND ASSIGNING THE NEEDED CAPABILITIES
ONLY TO THESE SPECIFIC "USERS".

.SP
.UN 4
(2) /WHEN ONE OF THESE PROGRAMS IS PUT INTO EXECUTION IN A FORK,
THE CAPABILITIES THE PROGRAM POSSESSES AS A "USER" MUST BE
PASSED ON TO THE FORK.
/THIS WILL REQUIRE A NEW ^CJSYS (A VARIANT OF THE CURRENT ^CGET
^CJSYS) FOR USE IN ESTABLISHING SUCH A PROGRAM AS A FORK, AND IT
WILL REQUIRE MODIFICATIONS ELSEWHERE TO ALLOW
THE FORK TO TELL THE SYSTEM WHEN IT WANTS TO USE ITS OWN CAPABILITIES
AND WHEN IT WANTS TO BE RESTRICTED TO THOSE OF THE USER WITHIN 
WHOSE JOB IT IS RUNNING.

.SP
.UN 4
(3) /THE SECURE IMPLEMENTATION OF (2) WILL REQUIRE THE ADDITION
OF CONSTRAINTS ON THE MANIPULATION OF LOWER FORKS BY THEIR SUPERIORS,
WHEN THE LOWER FORK HAS BEEN SET UP TO RUN A PROGRAM WITH INDEPENDENT
"USER" IDENTITY AND CAPABILITIES.
/THE SUPERIOR FORK MUST BE RESTRICTED TO ONLY BEING ALLOWED TO
^ICALL THE LOWER FORK (AND PERHAPS DESTROY IT).
/IT MUST NOT BE PERMITTED TO START IT EXECUTING AT ARBITRARY
POINTS, MODIFY OR LOOK AT ITS MEMORY, ETC.
.DS
.EM 9

       /WITH THESE (OR EQUIVALENT) MODIFICATIONS TO ^CTENEX,
TOGETHER WITH THOSE OF THE PREVIOUS SECTION, THE ^CSNDMSG PROGRAM
AND OTHERS CAN BE IMPLEMENTED SECURELY.
/THE ^CILLIAC ^CBATCH DRIVER NOW IN USE AT ^CIAC IS ANOTHER EXAMPLE
OF AN IMPORTANT PROGRAM THAT NEEDS THESE FACILITIES.

.SP 5
.EJ 15
4.5  /SECURITY IN THE /MANAGEMENT /PROCESSORS
.SP 3
       /THE MODIFICATIONS TO THE /K/I10 PROCESSOR AND THE
REORGANIZATION AND REPACKAGING OF THE ^CTENEX SYSTEM CODE WILL
AID GREATLY OUR ATTEMPT AT PRODUCING A CERTIFIABLE CENTRAL SYSTEM 
FOR ^CIAC.
/THE ^CTENEX KERNEL, HOWEVER, WILL STILL HAVE TO BE VIEWED
AS A SINGLE PROGRAM FOR CERTIFICATION PURPOSES SINCE ALL OF THE
CRITICAL ROUTINES WHICH COMPRISE IT 
WILL RUN UNDER KERNEL MODE WITH THE SAME BASIC POWERS OF ACCESS.
/THUS, FOR THE KERNEL, DEMONSTRATION OF SECURITY
REQUIRES DEMONSTRATION OF CORRECTNESS -- IN GENERAL, A MUCH MORE
ARDUOUS TASK.

       /IDEALLY, ONE WOULD HOPE TO BE ABLE TO PROVIDE A SEPARATE
EXECUTION ENVIRONMENT FOR EACH OF THE CRITICAL ROUTINES SO THAT
EACH ROUTINE HAS ACCESS ONLY TO THOSE DATA IT NEEDS TO REFERENCE.
/HARDWARE ENFORCEMENT OF THE PROPERLY DEFINED ENVIRONMENTS WOULD 
THEN GUARANTEE THAT 
CROSS-ENVIRONMENT REFERENCES WOULD BE PROHIBITED
AND 
CROSS-ENVIRONMENT TRANSFERS CAREFULLY CONTROLLED.
/THE ^ICORRECTNESS OF SYSTEM ROUTINES WHICH ^ICANNOT ACCESS
SECURITY-ORIENTED DATA STRUCTURES CAN THEN BE CONSIDERED APART
FROM THE OVERALL SYSTEM SECURITY QUESTION AND CERTIFICATION IS
THEREBY GREATLY SIMPLIFIED.

       /UNFORTUNATELY, THE ^CDEC /K/I10 PROCESSOR CANNOT BE
EASILY MODIFIED TO SUPPORT AN ARBITRARY NUMBER OF EXECUTION ENVIRONMENTS,
SO THE RESULTANT SIMPLIFICATION OF THE SECURITY QUESTION FOR THE ^CTENEX
KERNEL WILL NOT BE READILY ATTAINED.
/A GREAT DEAL OF THE OVERALL OPERATING SYSTEM CODE, HOWEVER, WILL
RESIDE IN THE SEVERAL /P/D/P-11-LIKE MANAGEMENT PROCESSORS WHERE
A MULTI-ENVIRONMENT STRUCTURE ^ICAN BE IMPOSED.
/IN THE FOLLOWING, WE INVESTIGATE THE PROPERTIES OF THE
MULTI-ENVIRONMENT STRUCTURE WHICH WILL BE REQUIRED FOR USE IN THE
MANAGEMENT PROCESSORS AND NOTE THE CRITICAL DIFFERENCES BETWEE
THE PROPOSED SCHEME AND OTHER EXISTING IMPLEMENTATIONS.

.SP 2
.EJ 10
       4.5.1  /DESCRIPTOR-ENFORCED /DOMAINS

       /THE VISIBLE MEMORY SPACE OF A MANAGEMENT PROCESSOR INCLUDES
A LOCAL MEMORY, A NUMBER OF /I^//O DEVICES ON THE ^CUNIBUS, AND
A WINDOW INTO THE SYSTEM'S CENTRAL MEMORY.
/THE MEMORY IS ADDRESSED, HOWEVER, AS A SINGLE, CONTIGUOUS ADDRESS SPACE.
/LOCATED WITHIN THIS SPACE MAY BE FOUND

.SS
.SP
.RM 9
.UN 4
(A) THE CODE FOR EACH OF THE MANAGEMENT ROUTINES,

.SP
.UN 4
(B) THE ASSOCIATED DATA STRUCTURES LOCAL TO THESE ROUTINES, AND

.SP
.UN 4
(C) THE GLOBAL (SYSTEM-WIDE) SHARED DATA STRUCTURES.

.DS
.SP
.EM 9
/THESE VARIOUS ENTITIES ARE DISTRIBUTED ABOUT THE MEMORY SPACE IN THE
FASHION OF A STAINED GLASS WINDOW.
/EACH "PANE" OF THE WINDOW IS CALLED A ^ISEGMENT AND IS CHARACTERIZED
BY A STARTING ADDRESS AND AN ENDING ADDRESS (WHICH TOGETHER
DEFINE ITS EXTENT) AND BY THE TYPE OF ENTITY IT REPRESENTS
(I.E., CODE, LOCAL DATA, OR GLOBAL DATA).

       /IT IS INTENDED THAT EACH AND EVERY FUNCTION EXECUTED BY
A GIVEN MANAGEMENT PROCESSOR WILL BE ISOLATED AS A DISTINCT CODE
SEGMENT AND WILL HAVE ASSOCIATED WITH IT EXACTLY THE
SET OF LOCAL AND GLOBAL DATA SEGMENTS IT MUST ACCESS IN
ORDER TO PROPERLY PERFORM ITS TASK.
/THIS (HARDWARE ENFORCED) ASSOCIATION OF A SINGLE CODE SEGMENT
WITH ITS NEEDED DATA SEGMENTS WILL BE CALLED ^IENCAPSULATION, AND
THE ENCAPSULATED SEGMENTS WILL COMPRISE A ^IDOMAIN.

       /IN ORDER TO DEAL APPROPRIATELY WITH DOMAINS WE MUST HAVE A
MEANS FOR

.RM 10
REPRESENTING THEM,

ENFORCING THEIR USE, AND

SWITCHING AMONG THEM.
.EM 10

/THESE TOPICS ARE DEALT WITH IN TURN.

.SP 2
.EJ 10
^-/REPRESENTING /DOMAINS

       /A DOMAIN REPRESENTATION CONSISTS OF A SET OF SEGMENT
DESCRIPTORS, WHERE EACH SEGMENT DESCRIPTOR CONTAINS THE BASE
AND LIMIT ADDRESS OF EITHER THE SINGLE CODE SEGMENT OR ONE OF THE
LOCAL OR GLOBAL DATA SEGMENTS OF THE GIVEN DOMAIN.
/REPRESENTATIONS OF ^IALL MANAGEMENT DOMAINS FOR A PARTICULAR
PROCESSOR WILL BE COLLECTED
TOGETHER INTO A LOCAL CHECKERBOARD DATA SEGMENT (EACH DOMAIN IS A
SQUARE) WHOSE BASE
ADDRESS IS KNOWN TO THE HARDWARE.
/REPRESENTATIONS WILL BE STATIC (I.E., WILL BE PREDETERMINED AND
NOT ALTERED AS
EXECUTION PROGRESSES).
/THIS IS BECAUSE THE SYSTEM CODE IN A MANAGEMENT PROCESSOR WILL BE
FIXED, UNLIKE USER CODE.

.SP 2
.EJ 10
^-/ENFORCING /THEIR /USE

       /A FUNCTION MUST BE RESTRICTED TO ACCESSING ONLY THOSE DATA
IT REQUIRES TO PERFORM ITS STATED TASK; THAT IS, IT MUST BE RESTRICTED
TO EXECUTING EXCLUSIVELY WITHIN ITS DOMAIN.
/IN ADDITION IT MAY BE RESTRICTED TO READ-ONLY ACCESS OF A GIVEN
DATA SEGMENT.
/WE REQUIRE THAT THE HARDWARE ENFORCE DYNAMICALLY THESE RESTRICTIONS.

       /THERE WILL BE A NUMBER OF HARDWARE REGISTERS INTO WHICH
SEGMENT DESCRIPTORS MAY BE LOADED.
/THE STANDARD DOMAIN REPRESENTATION FOR A PARTICULAR DOMAIN CAN
BE FETCHED FROM ITS POSITION IN THE CHECKERBOARD STRUCTURE INTO
THE HIGH SPEED REGISTERS.
/EACH REGISTER PAIR (ONE FOR THE BASE AND ONE FOR THE LIMIT) WILL
BE SELECTIVELY EMPLOYED TO MONITOR THE ADDRESS PLACED ON THE 
MEMORY ADDRESS BUSS OF THE PROCESSOR AND TO INDICATE AN ADDRESSING
EXCEPTION WHEN THE VALUE FALLS OUTSIDE THE GIVEN EXTENT.
"/SELECTIVE EMPLOYMENT" IMPLIES THAT A PARTICULAR REGISTER PAIR WILL
BE CHOSEN FOR THE MONITORING PURPOSE BASED ON THE NATURE OF THE MEMORY
REQUEST
(E.G., READ, WRITE, FETCH FOR EXECUTION).
/SUCH AN ARRANGEMENT HAS IMPLICATIONS FOR THE STRUCTURE OF THE
DOMAIN REPRESENTATION AND THE INHERENT COMPLEXITY OF MANAGEMENT 
FUNCTIONS -- IMPLICATIONS WHICH WILL HAVE TO BE INVESTIGATED.

       /PERHAPS THE MOST CRUCIAL ASPECT OF THIS PARTICULAR 
IMPLEMENTATION SCHEME LIES IN THE FACT THAT THESE DOMAIN RESTRICTIONS
MAY BE APPLIED EQUALLY WELL TO /P/D/P-11 CODE (WHEN THE PROCESSOR
IS IN EMULATION MODE) AND MICROCODE AT THE BARE MACHINE LEVEL.

.SP 2
.EJ 5
^-/SWITCHING /AMONG /DOMAINS
       /AS STATED, DOMAINS ARE ASSOCIATED WITH FUNCTIONS.
/EVERY FUNCTION WILL BE ASSIGNED A UNIQUE SEQUENCE NUMBER WHICH
SERVES AS THE INDEX OF ITS ASSOCIATED DOMAIN REPRESENTATION IN
THE CHECKERBOARD SEGMENT.
/AT FUNCTION INVOCATION, THE HARDWARE WILL CALCULATE THE
PROPER OFFSET TO THE APPROPRIATE REPRESENTATION, APPLY A SIMPLE
BASE RELOCATION, AND LOAD THE HARDWARE DESCRIPTOR REGISTERS FROM
THE RESULTING ADDRESS.

       /SINCE DOMAIN REPRESENTATIONS DO NOT CHANGE OVER NESTED
FUNCTION INVOCATIONS, THEY NEED NOT BE STACKED AND UNSTACKED; ONLY
THE SEQUENCE NUMBER OF THE CALLING FUNCTION NEEDS TO BE SAVED.
/THE RETURN FROM A CALLED FUNCTION WILL USE THE SAVED NUMBER
TO REINSTATE THE STATIC DOMAIN FROM THE CHECKERBOARD SEGMENT IN
PRECISELY THE MANNER DESCRIBED ABOVE.

.SP 2
.EJ 10
       4.5.2  /EXTENSIONS TO /DESCRIPTOR-ENFORCED /DOMAINS

       /THE ABOVE DISCUSSIONS HAVE INTRODUCED THE MEANS BY WHICH 
DOMAINS MAY BE EFFECTIVELY EMPLOYED IN THE MANAGEMENT PROCESSOR
ENVIRONMENT.
/THE DOMAINS CONSIDERED TO THIS POINT, HOWEVER, ARE MINIMAL IN SOME
SENSE SINCE THEY, AS MOST OTHER EXISTING DOMAIN-ORIENTED
IMPLEMENTATIONS,
DEAL STRICTLY WITH LINEAR MEMORY SEGMENTS AND MAKE
NO ATTEMPT TO DEAL WITH THE SIMPLE CONSTRUCTS SO OFTEN EMPLOYED IN
OPERATING SYSTEM IMPLEMENTATIONS.
/TO THIS END WE PROPOSE SOME FURTHER TOPICS OF RELATED RESEARCH.

.SP 2
.EJ 10
^-/DESCRIPTORS FOR /OTHER /MODELING /STRUCTURES

       /WE PAUSE TO REFLECT ON THE PROPERTIES WHICH ALLOWED US
TO DEVELOP DOMAIN REPRESENTATIONS FOR ^ISEGMENTS: FIRST WE 
CONSTRUCTED A ^IDESCRIPTOR WHICH CONTAINED THE CHARACTERIZING PARAMETERS
OF A LINEAR EXPANSE OF MEMORY (THE BASE AND LIMIT ADDRESSES);
THEN WE INSURED, VIA HARDWARE COMPARATORS, THAT THE ^IACCESSING
^IALGORITHMS ("READ ANYWHERE BETWEEN THE BOUNDS", "WRITE
ANYWHERE BETWEEN THE BOUNDS") PERMITTED FOR REFERENCING MEMORY SEGMENTS
THROUGH ONE OF THESE DESCRIPTORS WERE IN FACT EMPLOYED.

       /IT IS PROPOSED THAT OTHER ENTITIES BESIDES LINEAR CODE AND
DATA SEGMENTS (FOR EXAMPLE, STACKS, RING BUFFERS, FIELDS, ARRAYS,
STRINGS AND QUEUES) ALSO BE CHARACTERIZED WITHIN A DOMAIN 
REPRESENTATION.
/EACH OF THESE STRUCTURES HAS PARAMETERS WHICH DEPICT IT AND AN 
ACCESSING ALGORITHM WHICH DEFINES ITS USE.
/THE CHARACTERIZING PARAMETERS CAN BE ASSEMBLED INTO A FORMATTED
DESCRIPTOR; ACCESS MADE TO THE STRUCTURE ^ITHROUGH THIS DESCRIPTOR
MUST THEN ADHERE TO THE DICTATES OF THE APPROPRIATE ACCESSING
ALGORITHM.

       /AS AN EXAMPLE, WE COULD SET ASIDE A CERTAIN REGION OF MEMORY
AND DEFINE IT TO BE A STACK.
/THE DESCRIPTOR FOR THE STACK WOULD SIMPLY CONTAIN THE BASE
AND LIMIT ADDRESSES WHICH DEFINE THE STACK SIZE.
/BY CONVENTION, THE FIRST WORD (BASE ADDRESS) OF THE STACK
WILL CONTAIN THE CURRENT POINTER INTO THE STACK.
/THE ACCESSING ALGORITHM WOULD THEN ENFORCE THE ACTIONS OF PUSHING
ONTO THE STACK (AND CHECKING FOR STACK OVERFLOW) ON ANY STORE OPERATION
AND THE ACTIONS OF POPPING UP FROM THE STACK (AND CHECKING FOR STACK
UNDERFLOW) ON ANY FETCH OPERATION ^-MADE THROUGH THE STACK DESCRIPTOR^E.
/PROVIDED THAT THE ^IONLY DESCRIPTORS WHICH POINTED TO THIS REGION
OF MEMORY WERE ^ISTACK DESCRIPTORS, THE REGION WOULD BE EFFECTIVELY
ISOLATED FROM INADVERTENT MODIFICATION AND WOULD APPEAR AS THOUGH
IT WERE AN ADDRESSABLE HARDWARE ENTITY MUCH LIKE A SIMPLE /I^//O
DEVICE.

   /SINCE THE DESCRIPTORS FOR ALL DOMAIN REPRESENTATIONS WILL BE 
STATICALLY DEFINED, A PROGRAMMED SEARCH OF ALL DESCRIPTOR EXTENTS
CAN VERIFY THAT A GIVEN REGION ^IIS EMPLOYED ^IONLY AS A STACK;
THIS SEARCH CAN BE CONDUCTED OVER ALL LOCAL MEMORY EXTENTS FOR A
SINGLE PROCESSOR AND ALL GLOBAL EXTENTS FOR THE MULTIPROCESSOR CASE.

.SP 2
.EJ 10
^-/EXTENDING /FUNCTION /DESCRIPTORS
       /WE HAVE TO THIS POINT DESCRIBED A NUMBER OF ENTITIES FOR 
WHICH DESCRIPTORS MAY BE CONSTRUCTED AND SUGGESTED THE ALGORITHMS
WHICH MIGHT BE USED WHEN REFERENCING THESE ENTITIES THROUGH
THEIR RESPECTIVE DESCRIPTORS.
/WE HAVE ALSO REFERRED TO A "FUNCTION" ENTITY AS A
CODE SEGMENT, THE EXTENT OF WHICH MAY BE DEPICTED IN A BASE^/LIMIT-TYPE
SEGMENT DESCRIPTOR, BUT HAVE MADE NO MENTION YET OF THE ACCESSING
ALGORITHM TO BE EMPLOYED WHEN INVOKING THE FUNCTION THROUGH ITS 
DESCRIPTOR.

       /SINCE IN GENERAL THE ACTIONS PERFORMED BY A GIVEN BODY
OF CODE WILL BE UNDEFINED IF EXECUTION IS BEGUN AT AN
ARBITRARY POINT, WE REQUIRE THAT INVOCATION OF A FUNCTION OCCUR
AT A LOCATION KNOWN TO THE HARDWARE -- MOST LIKELY THE FIRST
INSTRUCTION IN (I.E., BASE ADDRESS OF) THE SEGMENT.
/THUS IN ORDER TO CALL UPON A GIVEN FUNCTION, THE CURRENTLY
EXECUTING BODY OF CODE MUST EMPLOY THE APPROPRIATE FUNCTION
DESCRIPTOR.  /THIS IS THE ONLY MEANS BY WHICH TRANSFER OF CONTROL
MAY BE MADE FROM ONE CODE SEGMENT INTO ANOTHER; AND OF COURSE IT
REQUIRES THAT THE CALLED FUNCTION'S DESCRIPTOR APPEAR IN THE STATIC
DOMAIN REPRESENTATION OF THE CALLER.


       /IN THIS WAY, FUNCTION INVOCATION CAN BE CONTROLLED AND
THE GLOBAL SEQUENCING OF OPERATIONS ENFORCED.
/SINCE DOMAIN BINDING ACCOMPANIES FUNCTION INVOCATION, WE
INSURE THAT CROSSING FROM ONE DOMAIN TO ANOTHER IS DONE PROPERLY
AND IN A PREDEFINED SEQUENCE.
/FLOW GRAPH TECHNIQUES MAY BE APPLIED TO FUNCTION DESCRIPTORS WITHIN
THE STATIC DOMAIN REPRESENTATIONS TO ANALYZE PROGRAM FLOW FOR 
CERTIFICATION PURPOSES; SUCH ANALYSIS WILL HOPEFULLY REVEAL
SEVERAL NEW AREAS FOR FURTHER RESEARCH.

       /TRANSFER (BY BRANCHING) ^IWITHIN THE LIMITS OF A GIVEN FUNCTION
MAY BE CONSTRAINED BY THE USE OF BRANCH DESCRIPTORS THROUGH WHICH ALL
TRANSFERS MUST REFRACT.
/THE CHARACTERIZING PARAMETERS OF A BRANCH DESCRIPTOR WILL INCLUDE
THE TARGET ADDRESS AS FOR NORMAL INDIRECTION, BUT ALSO THE ^ISOURCE
^IADDRESS OF THE INSTRUCTION PERMITTED TO REQUEST THE TRANSFER.
/THE ABILITY TO EMPLOY A GIVEN BRANCH DESCRIPTOR OF COURSE DEPENDS
ON IT BEING PRESENT IN THE STATIC DOMAIN REPRESENTATION.

       /FURTHER CONSTRAINTS ON INSTRUCTION SEQUENCING (FOR EXAMPLE
THROUGH THE EMPLOYMENT OF LOOP DESCRIPTORS, TRANSFER VECTOR 
DESCRIPTORS, ETC.) ARE STILL TO BE INVESTIGATED.

.SP 2
.EJ 10
^-/DYNAMIC /MODIFICATION OF /DESCRIPTORS

       /OUR DISCUSSIONS TO THIS POINT HAVE DEALT SOLELY WITH THE 
NOTION OF STATIC DESCRIPTORS -- THOSE WHICH CAN BE CONSTRUCTED DURING
COMPILE TIME AND INSPECTED (EITHER VISUALLY OR BY PROGRAM) TO INSURE
CONSISTENCY AND ADHERENCE TO THE NEED-TO-KNOW PRINCIPLE.
(/A FUNCTION'S DOMAIN REPRESENTATION CONTAINS DESCRIPTORS FOR ONLY
THE DATA STRUCTURES IT "NEEDS-TO-KNOW" ABOUT.)
/IN THE MANAGEMENT PROCESSOR ENVIRONMENT, HOWEVER, WHERE GLOBAL
OPERATING SYSTEM DATA STRUCTURES OFTEN CONTAIN ^IENTRIES FOR EACH
OF THE KNOWN JOBS OR USER PROCESSES, MORE FLEXIBILITY MAY BE
REQUIRED.

       /WHAT IS PREFERRED IS THAT THE FUNCTION BE GIVEN A DESCRIPTOR
FOR ONLY THE PARTICULAR TABLE ENTRY IT IS "SUPPOSED" TO REFERENCE
AT A GIVEN INVOCATION.
/FOR THIS PURPOSE IT IS PROPOSED TO ASSOCIATE WITH A FUNCTION THE
DESCRIPTOR FOR A ^ISINGLE (THE ZERO-TH) ENTRY OF A GIVEN DATA 
STRUCTURE ONLY, AND TO AUGMENT THE STATIC DESCRIPTOR BY THE
APPROPRIATE DISPLACEMENT AS IT IS LOADED FROM ITS DOMAIN
REPRESENTATION INTO ITS HARDWARE REGISTERS SO THAT IT DEPICTS THE
SELECTED ENTRY.

       /THE "APPROPRIATE DISPLACEMENT" CAN BE CALCULATED AS THE
PRODUCT OF THE INDEX OF THE GIVEN ENTRY WITHIN THE TABLE (THIS
INDEX WILL BE HELD IN A SPECIAL "INDEXING REGISTER") AND THE LENGTH
OF A REPRESENTATIVE ENTRY (A QUANTITY WHICH CAN BE STORED WITH THE
ENTRY'S DESCRIPTOR IN THE DOMAIN REPRESENTATION).
/THE OCCURRENCE OF DESCRIPTOR AUGMENTATION (USING A SINGLE VALUE IN
THE INDEXING REGISTER) AT EVERY FUNCTION INVOCATION
WILL SERVE TO EFFECT A COMPARTMENTALIZATION OF THE PROCESSOR WHICH
WILL BE MOST HELPFUL IN THE CERTIFICATION PROCESS.

.SP 2
.EJ 10
       4.5.3  /A /LANGUAGE FOR /DOMAIN /GENERATION

       /SUITABLE SOFTWARE SUPPORT WILL HAVE TO BE MADE AVAILABLE
FOR AT LEAST THE FOLLOWING TASKS ASSOCIATED WITH SECURING
THE MANAGEMENT PROCESSORS; PRELIMINARY STUDIES CAN PROCEED WITHOUT
THESE TOOLS HOWEVER.

.SS
.SP
.RM 9
.UN 5
(1)  /A LANGUAGE WILL HAVE TO BE DEVELOPED, AND A COMPILER CONSTRUCTED,
WHICH ALLOWS THE IMPLICIT OR EXPLICIT SPECIFICATION OF THE DOMAINS
REQUIRED BY A GIVEN FUNCTION; THE COMPILER WILL BE RESPONSIBLE FOR
CREATING THE VARIOUS DESCRIPTORS TO BE LOADED INTO DOMAIN
REPRESENTATIONS.

.SP
.UN 5
(2)  A LOADER WILL BE REQUIRED TO SECURELY COPY THE BINARY IMAGE PRODUCED
BY THE COMPILER INTO THE PROPER LOCATIONS IN (CENTRAL AND LOCAL) CORE.

.SP
.UN 5
(3)  /SEVERAL ANCILLARY PACKAGES WILL BE REQUIRED FOR INVESTIGATIVE
ANALYSIS OF THE SECURITY IMPLICATIONS WHICH CAN BE DERIVED FROM THE
STATIC DOMAIN REPRESENTATIONS; THESE WILL INCLUDE THE FLOW ANALYSIS
ROUTINES MENTIONED PREVIOUSLY.

.SP 2
.DS
.EM 9

.SP 5
.EJ 15
4.6  /SUMMARY AND /EXPLICIT /GOALS
       /THE PRECEDING DISCUSSION DESCRIBES A NUMBER
OF METHODS BY WHICH THE /PROJECT CAN ASSIST THE /I/A/C
DEVELOPMENT
STAFF IN SECURING THE ^CIAC SYSTEM AND MAKE SOME GENERAL CONTRIBUTIONS
TO THE SOLUTION OF THE COMPUTING SECURITY^/PRIVACY PROBLEM.
/IT IS BELIEVED THAT SUCH EFFORTS ARE
JUSTIFIED BY
THE FOLLOWING CONSIDERATIONS:
.SP
.SS
.RM 9
.UN 4
1.  /ALTHOUGH SIGNIFICANT PLANNING FOR IMPROVED PROTECTION AND OTHER MODIFICATIONS
TO ^CTENEX WILL HAVE BEEN DONE BY THE TIME THE CURRENT CONTRACT,
^CNAS-6700, EXPIRES AND SOME IMPLEMENTATION WILL HAVE BEGUN, THE
BULK OF THE IMPLEMENTATION WILL YET REMAIN BEFORE THE ^CIAC SYSTEM
WILL HAVE SOME CLAIM TO SECURITY.
.SP

.UN 4
2.  /PERSONNEL OF THE ^CMCST /PROJECT HAVE BETTER KNOWLEDGE THAN ANYONE OF THE 
PROPOSED SOLUTIONS TO THE REORGANIZATION OF ^CTENEX AND CAN 
PARTICIPATE IN THE IMPLEMENTATION WITH A HIGH DEGREE OF EFFICIENCY.

.SP
.UN 4
3.  /THE /PROJECT POSSESSES UNIQUE CAPABILITIES IN THE AREAS OF HARDWARE
DESIGN, MULTIPROCESSOR OPERATING SYSTEM DESIGN (IN PARTICULAR,
THE DIVISION
OF SYSTEM TASKS AMONG MANAGEMENT PROCESSORS), AND THE PROPER
ORGANIZATION OF CODE IN SUCH PROCESSORS.

.SP
.UN 4
4.  /THE /PROJECT POSSESSES UNIQUE TOOLS FOR SUCH WORK, ESPECIALLY
FACILITIES FOR THE COMPILATION AND SIMULATION OF MICROCODE,
DESIGN AUTOMATION AIDS FOR THE PRODUCTION OF VARIOUS KINDS OF
HARDWARE YET TO BE DESIGNED BY ^CIAC FOR ITS SYSTEM, AND 
CROSS-REFERENCING SOFTWARE FOR DEALING WITH THE ^CTENEX CODE.
.DS
.EM 9
.EJ

       /THE PROJECT'S EFFORTS FOR THE YEAR WILL THEREFORE BE DIRECTED TOWARD
THE FOLLOWING GOALS:
.SP
.SS
.RM 10

.UN 5
1.  /DIRECT PARTICIPATION IN THE EFFORTS
TO MODIFY THE ^CIAC SYSTEM.
/IT IS ENVISIONED THAT THIS WORK WILL CONSIST OF ACTUAL CODING
TO BE DONE IN COOPERATION WITH /I/A/C PERSONNEL.
/THIS EFFORT MIGHT EXTEND TO IN-DEPTH
CONSULTATIONS WITH OTHER ORGANIZATIONS IF ^CARPA SHOULD DETERMINE
THAT SOME OF THE RECOMMENDED CHANGES SHOULD BE ADDED TO
OTHER VERSIONS OF ^CTENEX (THUS BENEFITTING MORE USERS).

.SP
.UN 5
2.  /DIRECT PARTICIPATION IN THE DESIGN OF THE MANAGEMENT PROCESSOR
MICROCODE.

.SP
.UN 5
3.  /FURTHER EXPLORATION OF A
CHOICE OF HARDWARE ENHANCEMENTS TO THE MANAGEMENT PROCESSOR
STRUCTURE NOW PLANNED FOR USE IN THE /I/A/C SYSTEM AND 
IMPLEMENTATION OF THESE MODIFICATIONS.

.SP
.UN 5
4.  /EXPLORATION OF THE POTENTIAL VALUE OF HARDWARE
CONSTRAINTS OF THE KIND BEING CONSIDERED.

.SP 3
.DS
.EM 10
       /THESE GOALS ARE NOT TOTALLY DIRECTED TO SPECIFIC
IMPLEMENTATION PROBLEMS OR A SPECIFIC SYSTEM DESIGN.
/MANY OF THE PROBLEMS WHICH MUST BE SOLVED FOR THE /I/A/C FACILITY
ARE PROBLEMS SHARED BY OTHER GENERAL PURPOSE COMPUTER UTILITIES.
/IT IS FELT THAT MANY OF THE MODIFICATIONS TO ^CTENEX NECESSARY
FOR THE /I/A/C SYSTEM WILL BE TRANSPORTABLE TO OTHER ^CTENEX
FACILITIES.
/THE CURRENT PLANNING FOR THESE MODIFICATIONS IS BEING DONE IN
SUCH A WAY THAT SEPARATE MANAGEMENT PROCESSORS ARE NOT ACTUALLY
REQUIRED; THEIR ACTIVITIES CAN BE HANDLED BY A /K/I10
PROCESSOR, OR A NUMBER OF ^CPDP-11'S CAN BE USED
IN PLACE OF OUR MICROPROCESSOR.
/ALSO, OUR MICROPROCESSOR CAN,
IF MADE AVAILABLE BY SOME SUPPLIER, BE USED BY OTHERS TO
BETTER IMPLEMENT SOME OF THE CURRENTLY KNOWN TECHNIQUES FOR
PRODUCING SECURE SYSTEM KERNELS BUT WHICH REMAIN DIFFICULT ON
PRESENT HARDWARE.

       /IT IS ANTICIPATED THAT DURING THE PROPOSED WORK A 
COMPUTATIONAL FACILITY WILL BE REQUIRED.
/THE /B/C/C 500 WILL BE USED FOR THIS.
/THE SYSTEM 
IS CURRENTLY BEING USED BY /I/A/C PERSONNEL VIA THE
^CARPA NETWORK FOR DESIGN AUTOMATION IN SUPPORT OF VARIOUS
KINDS OF HARDWARE BEING DESIGNED FOR THE /I/A/C SYSTEM.
/NO MODIFICATIONS OF THE 500 OPERATING SYSTEM ARE CONTEMPLATED;
THE SYSTEM WILL BE OPERATED AS A COMPUTATIONAL FACILITY FOR
THE NEEDS OF THE PROPOSED PROJECT, FOR THE HARDWARE
DESIGN EFFORTS OF THE /I/A/C, AND FOR A FEW OTHER SELECTED
USERS FROM THE ^CARPA COMMUNITY.
/IT WILL ALSO BE USED BY A NUMBER OF STUDENTS IN CONJUNCTION
WITH THEIR COURSES IN COMPUTER PROGRAMMING AND FOR SOFTWARE
DESIGN PROJECTS.

.EJ
5.0  ^UPAST ACCOMPLISHMENTS^L
.SP 3
       /DURING THE TWO YEARS OF ITS OPERATION (/MARCH, 1972 THROUGH
/FEBRUARY, 1974) THE ^CMCST TASK ACCOMPLISHED A NUMBER
OF ACHIEVEMENTS INCLUDING

.RM 9
.SS
.SP
.UN 4

1) /COMPLETE REFURBISHMENT OF THE /B/C/C 500 COMPUTING HARDWARE
(INCLUDING 6 PROCESSORS, 2 DRUMS, A DISK, A CENTRAL MEMORY,
11 CORE MODULES, CABINETS, POWER SUPPLIES, INTERCONNECTING CABLES,
ETC.);

.SP
.UN 4
2) /CATALOGING, DOCUMENTATION, AND REWORK OF THE /B/C/C 500
OPERATING SYSTEM -- THE MICROCODE AND THE SOFTWARE PORTIONS;

.SP
.UN 4
3) /PRODUCTION OF A WORKING /S/P/L, A 
LARGE AND COMPREHENSIVE
COMPILING SYSTEM (ABOUT 20,000 LINES OF ^CSPL CODE);

.SP
.UN 4
4) /PRODUCTION OF A NUMBER OF HARDWARE DESIGN AUTOMATION AIDS
WHICH CAN BE USED BY OTHERS ON THE /A/R/P/A NETWORK;

.SP
.UN 4
5) /DESIGN OF A MICROCODED PROCESSOR FOR USE WITH THE /I/A/C
SYSTEM; AND

.SP
.UN 4
6) /A STUDY (IN PROGRESS) OF THE ^UTENEX^L OPERATING SYSTEM WITH
RECOMMENDATIONS FOR REORGANIZING IT
FOR PRIVACY^/SECURITY PURPOSES, AND
FOR INTEGRATION INTO THE /I/A/C OPERATING SYSTEM.
.EM 9
.DS

/THESE ACTIVITIES ARE REPORTED IN DETAIL IN OUR /ANNUAL /TECHNICAL
/REPORT FOR 1973 [REF.].

       /THE MICROPROCESSOR MENTIONED
IN 5) ABOVE IS PARTICULARLY PERTINENT TO THIS PROPOSAL AND IS THUS
DESCRIBED HERE.
/THE PROCESSOR
IS A REPACKAGED DESIGN OF THE ORIGINAL /B/C/C MICROPROCESSOR,
CONFIGURED TO EMULATE EFFICIENTLY A /P/D/P-11 (HAVING A 16-BIT
ARITHMETIC UNIT) AND
EQUIPPED WITH A
^UUNIBUS^L INTERFACE.  /THE PROCESSOR WAS DESIGNED AT THE REQUEST
OF /I/A/C, FIRST ON A FEASIBILITY BASIS AND LATER ON A PRODUCTION
BASIS WHEN /I/A/C DETERMINED THAT THE /P/D/P-11'S PLANNED
FOR USE AS MANAGEMENT PROCESSORS IN THE /I/A/C SYSTEM DID NOT HAVE
THE REQUISITE COMPUTING POWER FOR SUCH APPLICATIONS.  /I/A/C'S PLAN
FOR THESE PROCESSORS IS TO PLACE MANY OF THE SYSTEM MANAGEMENT
PROCESSING FUNCTIONS DIRECTLY INTO MICROCODE AS IS DONE IN THE /B/C/C 
500, THEREBY
PROVIDING MUCH GREATER COMPUTING CAPABILITY AND
MAKING OVERALL SYSTEM PROTECTION EASIER TO ACHIEVE.
/A PORTION OF THE MICROCODE EMULATES THE INSTRUCTION SET OF THE
/P/D/P-11^/40, BY WHICH MEANS THE PROCESSOR CAN RUN GENERAL PURPOSE
CODE.
/A SPECIAL EMULATED INSTRUCTION ALLOWS CALLS TO MICROCODED SUBROUTINES.
/THE PROCESSOR THUS HAS THE ABILITY TO RUN FIXED CODE AT VERY HIGH
SPEED (ABOUT FIFTEEN MILLION OPERATIONS^/SECOND), ORDINARY /P/D/P-11
CODE, OR A COMBINATION OF THE TWO.
/DURING THE PROCESSOR'S DESIGN, GREAT ATTENTION WAS PAID TO INCLUDING
CERTAIN FEATURES WHICH CONTRIBUTE GREATLY TO MAINTENANCE AND REPAIR
OF THE PROCESSORS.
/THIS IS A FEATURE OF IMPORTANCE TO ^CIAC BECAUSE OF THE COMPLEXITY
OF THEIR SYSTEM.

.EJ
6.0  ^UREFERENCES^L
.EJ
7.0  ^URELEVANCE TO DOD AND UH NEEDS^L
.SP 3
       /THE ^CDOD AND ITS VARIOUS AGENCIES HAVE AN IMMENSE INVESTMENT
IN LARGE COMPUTING SYSTEMS WITH ON-LINE STORAGE CAPACITY.
/THE UTILITY OF MOST OF THESE SYSTEMS IS CURRENTLY LIMITED BY SECURITY
CONSIDERATIONS.
/ACCESS CHECKING IS MOSTLY MANUAL; ON-LINE ACCESS IS RESTRICTED.
/IMPROVED COMPUTER SECURITY WILL GREATLY AID ^CDOD BY PROVIDING
THE KIND OF COMPUTING NOW ENJOYED BY OTHERS IN ENVIRONMENTS WHERE
SECURITY IS NOT OF CONCERN.

       /UNDER A DIRECTIVE OF THE /SECRETARY OF /DEFENSE, THE MILITARY
FORCES ON THE /ISLAND OF /OAJU ARE PLANNING A CONSOLIDATION OF
THEIR TELECOMMUNICATIONS (CALLED ^CCOTCO).
/THE NATURE OF THE ^CCOTCO DONFIGURATION WILL DEPEND ON THE
EXISTENCE OF SECURED PROCESSORS -- BOTH COMMUNICATIONS PROCESSORS
AND GENERAL PURPOSE PROCESSORS.
^CTENEX HAS BEEN MENTIONED AS A CANDIDATE FOR THIS CONFIGURATION,
BUT THE PRESENT SYSTEM LACKS IN SECURITY.
/A REVISED VERSION HAVING IMPROVED OBJECT ACCESS PROTECTION AND MORE
MODULARIZED SYSTEM SOFTWARE WOULD BE OF GREAT USE TO ^CCOTCO.

       /IN A REPORT PREPARED RECENTLY FOR THE /UNIVERSITY OF
/HAWAII VICE-PRESIDENT FOR BUSINESS AFFAIRS BY THE DIRECTOR OF
THE /U/H /COMPUTING /CENTER, IT WAS STATED THAT ONE OF THE MOST
ANNOYING AND PERSISTENT PROBLEMS FACED DURING 1973 WAS THE LACK
OF ADEQUATE SECURITY FEATURES WITHIN THE /MANOA CAMPUS CENTRAL
FACILITY.
/STUDENT RECORDS -- KEPT ON-LINE -- HAVE BEEN EXAMINED;
USERS' FILES HAVE BEEN MALICIOUSLY MODIFIED; AND EXTRA OFF-HOUR
COMPUTING TIME (WITH NO TERMINAL ACCESS PERMITTED) HAS HAD TO BE
SCHEDULED SO THAT THE SYSTEM COULD BE LOADED WITH FILES CONTAINING
MEDICAL HISTORIES.
/THE WORK OF THE PROJECT WILL NOT IMMEDIATELY PROVIDE RELIEF TO THE
CAMPUS; IN TIME, HOWEVER, SUCH RESULTS WILL FIND THEIR WAY INTO
COMMERCIAL SYSTEMS.

.PAGING MODE OFF
.EJ
.SP 10
.CE
^CABSTRACT
.SP 5
.SS
       /THIS DOCUMENT PROPOSES TO CONTINUE FOR ONE YEAR THE WORK
OF THE /MULTIPROCESSOR /COMPUTING /SYSTEMS /TECHNOLOGY
GROUP (/TASK /I/I) OF ^UTHE ALOHA SYSTEM^L IN
SECURE COMPUTING SYSTEMS.  /EFFORTS WILL BE MADE
IN TWO MAIN AREAS:
.SP 3
.RM 9
.UN 4
1)  /CONTINUING OUR ASSISTANCE TO THE /INSTITUTE OF /ADVANCED
/COMPUTATION IN SECURING ITS LARGE SYSTEM CONTAINING THE ^CILLIAC
^CIV AND ^CUNICON, THIS TIME BY PARTICIPATING IN THE ACTUAL
REORGANIZATION OF ^CTENEX AND IN THE IMPLEMENTATION OF MANAGEMENT 
PROCESSOR CODE; AND
.SP 3
.UN 4
2)  /DETERMINING A SET OF HARDWARE CONSTRAINTS TO BE ADDED TO THE
MANAGEMENT PROCESSORS AND STUDYING THE EFFECTS OF THESE CONSTRAINTS
ON THE TASK OF SYSTEM VERIFICATION.
.EM 9
.DS

.EJ
.SP 10
.CE
^CFOREWORD
.SP 5
.SS
       /COMPUTING SYSTEMS HAVE ENABLED MAN TO AMASS  
LARGE QUANTITIES OF INFORMATION AND ACCESS IT READILY.
/MODERN SYSTEMS KEEP MUCH OF THIS INFORMATION ON-LINE 
(LIKE A BANK KEEPING ITS MONEY IN THE WINDOW).
/THE ESTABLISHMENT OF ADEQUATE SAFEGUARDS ON THE INFORMATION 
IN A COMPUTING SYSTEM IS KNOWN AS ^ICOMPUTER ^ISECURITY OR
^ICOMPUTER ^IPRIVACY.

       /IN THIS PROPOSAL WE USE THE TERMS "SECURITY",
"PRIVACY", AND "PROTECTION".
/EACH TERM CONNOTES NOT QUITE THE RIGHT MEANING IN CERTAIN CONTEXTS;
HENCE WE USE AT VARIOUS PLACES THAT TERM WHICH IS CLOSEST IN MEANING
AT THE TIME.

       /IN ANY CASE WE ARE TALKING ABOUT THE PROTECTION
OF POTENTIALLY VALUABLE INFORMATION FROM UNAUTHORIZED ACCESS.
/SECURITY IS USED IN THE SENSE OF ASSURING AN OWNER THAT HIS
INFORMATION IS SAFE.
/PRIVACY IS USED TO EMPHASIZE THAT THE INFORMATION MAY PERTAIN TO
(INNOCENT) PARTIES OTHER THAN THE OWNER AND WHO ARE POWERLESS TO
TAKE THEIR OWN PROTECTION MEASURES.
/PROTECTION IS THE TERM GENERALLY GIVEN TO THE MECHANISMS EMPLOYED
IN THE SYSTEM TO PROVIDE SUCH SAFEGUARDS.

       /FULL COMPUTER SECURITY INCLUDES THE SECURITY OF THE
COMPUTING EQUIPMENT ITSELF, ACCOUNTING FOR ALL MAGNETIC TAPES AND
OTHER MEDIA ON WHICH INFORMATION CAN BE INTRODUCED INTO OR EXTRACTED
FROM THE SYSTEM, AND THE SCREENING OF PERSONNEL WHO OVERSEE OPERATION
OF THE EQUIPMENT.
/FOR THIS RESEARCH, HOWEVER, WE MAKE THE ASSUMPTION THAT ALL SUCH
MATTERS NOT SPECIFICALLY A PART OF THE OPERATING SYSTEM ARE HANDLED
SEPARATELY.

.EJ
.SP 4
.CE
^UTABLE OF CONTENTS^L

.SP 2
1.0  ^UINTRODUCTION
.SP 2
2.0  SUMMARY OF PRESENT AND PROPOSED WORK
.SP
.IN 2
2.1  ^L/PRESENT /WORK
.IN 2
2.2  /PROPOSED WORK
.SP 2
3.0  ^USUGGESTED WORK STATEMENT
.SP 2
4.0  DETAILED PROPOSAL: METHODS FOR SECURING THE IAC SYSTEM
.SP
.IN 2
4.1  IAC S^LYSTEM /DESCRIPTION
.SP
.IN 4
4.1.1  /CENTRAL /OPERATING /SYSTEM
.IN 4
4.1.2  ^CTENEX /SYSTEM
.IN 4
4.1.3  /CENTRAL /FILE /SYSTEM
.IN 4
4.1.4  ^CILLIAC ^CIV /SUBSYSTEM
.IN 4
4.1.5  /BURROUGHS /B6700 /SYSTEM
.SP
.IN 2
4.2  /SCOPE OF THE /PROPOSAL
.IN 2
4.3  /PROVIDING /SECURITY IN THE ^CTENEX /SYSTEM
.IN 2
4.4  /IMPROVING /PROTECTION OF /OBJECTS IN THE ^CTENEX /SYSTEM
.SP
.IN 4
4.4.1  /PROVIDING /MORE /SELECTIVE /ACCESS /SPECIFICATION
.IN 4
4.4.2  /ASSOCIATING /ACCESS WITH /PROGRAMS
.SP
.IN 2
4.5  /SECURITY IN THE /MANAGEMENT /PROCESSORS
.SP
.IN 4
4.5.1  /DESCRIPTOR-ENFORCED /DOMAINS
.IN 11
/REPRESENTING /DOMAINS
.IN 11
/ENFORCING /THEIR /USE
.IN 11
/SWITCHING /AMONG /DOMAINS
.SP
.IN 4
4.5.2  /EXTENSIONS TO /DESCRIPTOR-ENFORCED /DOMAINS
.IN 11
/DESCRIPTORS FOR /OTHER /MODELLING /STRUCTURES
.IN 11
/EXTENDING /FUNCTION /DESCRIPTORS
.IN 11
/DYNAMIC /MODIFICATION OF /DESCRIPTORS
.SP
.IN 4
4.5.3  /A /LANGUAGE FOR /DOMAIN /GENERATION
.SP
.IN 2
4.6  /SUMMARY AND /EXPLICIT /GOALS
.SP 2
5.0  ^UPAST ACCOMPLISHMENTS
.SP 2
6.0  REFERENCES
.SP 2
7.0  RELEVANCE TO DOD AND UH NEEDS
.SP 2
8.0  PERSONNELL
.SP 2
9.0  CURRICULUM VITAE
.SP 2
10.0 BUDGET^L
.DS
> THE ABILITY TO RUN FIXED CODE AT VERY HIGH
SPEED (ABOUT FIFTEEN MILLION OPERATIONS^/SECOND), ORDINARY /P/D/P-11
CODE, OR A COMBINATION OF THE TWO.
/DURING THE PROCESSOR'S DESIGN, GREAT ATTENTION WAS PAID TO INCLUDING
CERTAIN FEATURES WHICH CONTRIBUTE GREATLY TO MAINTENANCE AND REPAIR
OF THE PROCESSORS.
/THIS IS A FEATURE OF IMPORTANCE TO ^CIAC BECAUSE OF THE COMPLEXITY
OF THEIR SYSTEM.

.EJ
6.0  ^UREFERENCES^L
.EJ
7.0  ^URELEVANCE TO DOD AND UH NEEDS^L
.SP 3
       /THE ^CDOD AND ITS VARIOUS AGENCIES HAVE AN IMMENSE INVESTMENT
IN LARGE COMPUTING SYSTEMS WITH ON-LINE STORAGE CAPACITY.
/THE UTILITY OF MOST OF THESE SYSTEMS IS CURRENTLY LIMITED BY SECURITY
CONSIDERATIONS.
/ACCESS CHECKING IS MOSTLY MANUAL; ON-LINE ACCESS IS RESTRICTED.
/IMPROVED COMPUTER SECURITY WILL GREATLY AID ^CDOD BY PROVIDING
THE KIND OF COMPUTING NOW ENJOYED BY OTHERS IN ENVIRONMENTS WHERE
SECURITY IS NOT OF CONCERN.

       /UNDER A DIRECTIVE OF THE /SECRETARY OF /DEFENSE, THE MILITARY
FORCES ON THE /ISLAND OF /OAJU ARE PLANNING A CONSOLIDATION OF
THEIR TELECOMMUNICATIONS (CALLED ^CCOTCO).
/THE NATURE OF THE ^CCOTCO DONFIGURATION WILL DEPEND ON THE
EXISTENCE OF SECURED PROCESSORS -- BOTH COMMUNICATIONS PROCESSORS
AND GENERAL PURPOSE PROCESSORS.
^CTENEX HAS BEEN MENTIONED AS A CANDIDATE FOR THIS CONFIGURATION,
BUT THE PRESENT SYSTEM LACKS IN SECURITY.
/A REVISED VERSION HAVING IMPROVED OBJECT ACCESS PROTECTION AND MORE
MODULARIZED SYSTEM SOFTWARE WOULD BE OF GREAT USE TO ^CCOTCO.

       /IN A REPORT PREPARED RECENTLY FOR THE /UNIVERSITY OF
/HAWAII VICE-PRESIDENT FOR BUSINESS AFFAIRS BY THE DIRECTOR OF
THE /U/H /COMPUTING /CENTER, IT WAS STATED THAT ONE OF THE MOST
ANNOYING AND PERSISTENT PROBLEMS FACED DURING 1973 WAS THE LACK
OF ADEQUATE SECURITY FEATURES WITHIN THE /MANOA CAMPUS CENTRAL
FACILITY.
/STUDENT RECORDS -- KEPT ON-LINE -- HAVE BEEN EXAMINED;
USERS' FILES HAVE BEEN MALICIOUSLY MODIFIED; AND EXTRA OFF-HOUR
COMPUTING TIME (WITH NO TERMINAL ACCESS PERMITTED) HAS HAD TO BE
SCHEDULED SO THAT THE SYSTEM COULD BE LOADED WITH FILES CONTAINING
MEDICAL HISTORIES.
/THE WORK OF THE PROJECT WILL NOT IMMEDIATELY PROVIDE RELIEF TO THE
CAMPUS; IN TIME, HOWEVER, SUCH RESULTS WILL FIND THEIR WAY INTO
COMMERCIAL SYSTEMS.

.PAGING MODE OFF
.EJ
.SP 10
.CE
^CABSTRACT
.SP 5
.SS
       /THIS DOCUMENT PROPOSES TO CONTINUE FOR ONE YEAR THE WORK
OF THE /MULTIPROCESSOR /COMPUTING /SYSTEMS /TECHNOLO.GL  SUC-CESS-FUL-LY SOFT-WARE ALLO-CA-TION
.PM OFF
.GL  SLIGHT-LY RETRY-ING PROG-RESS AUTO-MATIC-AL-LY
.CE
^ULOADING THE SYSTEM^L
.SP 3
       /THE FOLLOWING ASSUMES THAT THE HARDWARE IS FUNCTIONING
CORRECTLY.  /A DIFFERENT SECTION DESCRIBES WHAT TO DO IN CASE OF
VARIOUS TYPES OF MALFUNCTIONS.
.SP
.RM 6
.UN 4
1.  ^ULOAD A FRESH COPY OF SYSDDT AND THE CTP RESIDENT^L.
.SP
/PLACE    IN THE SWITCHES.  (/SEE ^CTTY FOR VALUE.)

/PRESS ^CZAP.

/PRESS ^CGO.

^CSYSDDT SHOULD RESPOND WITH "8/D25".
.SP
.UN 4
2.  ^UCOPY AN INITIAL DRUM LOAD FROM DISK^L.
.SP
/TO ^CSYSDDT, TYPE THE FOLLOWING:
.SP
.NOFILL
/S/A%^/ ----    /C/R/L/F  (NAME OF SYSTEM VERSION IS
.FILL
.IN 21
SHOWN ON ^CTTY)
.SP
/THEN TYPE:
.SP
/R1;/U
.SP
/AT THIS POINT, A PORTION OF ^CSYSDDT CODE CAUSES THE SPECIFIED
COPY OF THE SYSTEM TO BE COPIED FROM
THE DISK TO THE DRUM.  /YOU SHOULD SEE LOTS OF ACTIVITY ON THE
MONITOR SCOPE, INDICATING TRANSFERS IN PROGRESS.  /AT THE END OF
THIS ACTIVITY, THE CODE PAUSES FOR ABOUT 3 SECONDS, INDICATING IN
THE LIGHTS WHETHER THERE WERE  TRANSFER ERRORS.
.SP
/IGNORE THE HIGH ORDER 6 BITS; THEY ARE ALWAYS SET.  /IGNORE THE
LOW ORDER 4 OR 5 BITS; AN INDICATION HERE MEANS THAT DISK ERRORS
WERE OVERCOME BY RETRYING SUCCESSFULLY.  /AN INDICATION ELSEWHERE
(SLIGHTLY BELOW THE MIDDLE) MEANS THAT THERE WAS AN UNSUCCESSFUL
READ.  /TRY ANOTHER /R1;/U, AND IF YOU CANNOT GET A GOOD COPY,
CALL FOR HELP.
.SP
.UN 4
3.  ^UCOPY THE INITIAL CORE LOAD FROM DRUM^L.
.SP
/SET 100/B5 INTO THE SWITCHES.

/PRESS ^CZAP.

/PRESS ^CGO.
.SP
/THIS ACTION CAUSES THE LOWER HALF OF CORE TO BE LOADED FROM THE
DRUM.  /ALL THE RUNNING TABLES AND THE INITIAL STATE OF EACH 
PROCESSOR, TOGETHER WITH INITIAL SOFTWARE ARE INCLUDED IN THIS AREA.
.EJECT
.UN 4
4.  ^USTART ALL PROCESSORS EXCEPT ^CCPU^L.
.SP
/TYPE TO ^CSYSDDT:
.SP
/R2;/U     (/THIS STARTS UP ALL THE MICROPROCESSORS.)
.SP
.RM 10
.UN 10
/R3;/U     (/THIS EXPANDS THE INITIAL DRUM BAND ALLOCATION TO
INCLUDE ALL AVAILABLE BANDS.)
.EM 10
.SP
;#       (/CLEARS SYSTEM WARNING REGISTERS.)
.SP
0%$      (/TURNS OFF STEP MODE ON THE ^CCPU.)
.SP
1%*      (/TURNS ON THE SCHEDULER PORTION OF THE

.IN 10
MICROSCHEDULER.)
.SP
.UN 4
5.  ^USTART UP CPU^L.
.SP
/TYPE A SINGLE CARRIAGE RETURN ON THE ^CKDF ^CTTY.
/THE ^CTTY SHOULD RETURN IF IT WAS NOT POSITIONED AT THE LEFT, BUT NO
LINE FEED WILL ACCOMPANY THE ACTION.
.SP
/BACK ON ^CSYSDDT, TYPE:
.SP
;/P
.SP
/THE MISSING LINE FEED AND AN "@" WILL BE TYPED ON THE ^UKDF TTY^L
AND THE SYSTEM WILL BE UP.  /NO ONE WILL BE ABLE TO LOG IN AT THIS
POINT, HOWEVER, BECAUSE THE SYSTEM WILL NOT YET HAVE BEEN GIVEN ITS
USER PROFILE (DESCRIPTION OF ALL KNOWN USERS).
.SP
.UN 4
6.  ^UREAD IN NECESSARY SYSTEM FILES^L.
.SP
/RETURN TO THE ^UKDF TTY^L AND ENTER ^CPFS.
/WHEN YOU GET THE "&" HERALD, TYPE:
.SP
$/C.      (COMES OUT LOOKING LIKE "$^CCOMMANDS.")
.SP
^CPFS PROMPTS BY SAYING "^UFROM FILE^L", WHEREUPON YOU TYPE:
.SP
^CPATCH.
.SP
/THE ENTIRE TRANSACTION LOOKS ON THE PRINTOUT LIKE...
.RM 4
.SP
@^CPFS
.SP
&$^UCOMMANDS.

FROM FILE PATCH^L.
.EM 4
.SP
/AT THIS POINT, SEVERAL FILES ARE BROUGHT IN AUTOMATICALLY BY ^CPFS.
/THE ACTION TERMINATED BY ^CPFS SIGNALLING WITH SOME BELLS.
/MAKE SURE THERE ARE NO DISK ERRORS DURING THESE TRANSFERS.
/IF THERE ARE ERRORS, REPEAT THIS STEP.
/IF SOME FILE CANNOT BE READ IN DURING THIS STEP, CALL FOR HELP.
.SP
.UN 4
7.  ^UENTER KDF^L.
.SP
/DO A "/C/L/E" COMMAND AND A "/R/E/W" COMMAND.
/THE LATTER MAY RESPOND WITH "^CTAPE ERROR^L" IF NO TAPE IS MOUNTED
ON THE UNIT.
.SP
/THIS MAKES NO DIFFERENCE.
/THE SYSTEM IS NOW READY FOR USE.
>                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                              
                           W A Y N E

                                 BY   J. DAVIDSON & J. FREEMAN


    (TO BE SUNG TO THE TUNE OF "MAME")

VERSE 1:
"YOU TOOK THE JOY RIGHT OUT OF MY LIFE, (YOUKNOWHO);
       I'D LIKE TO GET IN BED WITH YOUR WIFE, (YOUKNOWHO);
THE TIME WE'VE SPENT AT SCHOOL FOR YOU
       WORKING UP A SWEAT EACH NIGHT AND DAY...
WHILE YOU KEEP SEMI-U-ING IT
       AMC AND CPU-ING IT
CAN'T SEE HOW YOU KEEP DOING IT, (YOUKNOWHO).

VERSE 2:
"I GUESS WE WORK EACH HOLIDAY THRU, (YOUKNOWHO);
       WE WORKED WHEN JOHNSON PASSED AWAY TOO, (YOUKNOWHO);
WE MADE YOUR SYSTEM OPERATE;
       NOW WE HAVE A CHANCE TO TAKE A BREAK...
WE'LL TAKE OFF NEXT KUHIO DAY
       YOU'LL PROB'LY WORK THEN ANYWAY;
WHILE JACK & BONNIE SNEAK AWAY, (YOUKNOWHO).

VERSE 3:
"THERE'S ONE GUY YOU LOOK UP TO, I KNOW, (YOUKNOWHO);
       HIS NAME I GUESS IS !"#$%&'(), (YOUKNOWHO);
SINCE THOSE DAY BACK AT 1234567890
       YOU AND HE HAVE BEEN THE BEST OF PALS;
I'M GLAD HE'S ON THE OTHER TYYYTYTY;
       HIS HELP I'D NEVER EVER ASK,
HIS NOTES MAKE HIM LOOK LIKE AN 127757646, (YOUKNOWHO).




                            A M C

                               BY   J. DAVIDSON & J. FREEMAN


    (TO BE SUNG TO THE TUNE OF "OVER THERE")

AMC, AMC, SEND A STROBE, LATCH THE PRI-OR-ITY;
       CAUSE THE SWAP IS COMING, THE DISK IS RUNNING,
       AND WHO KNOWS WHERE THE DRUM WILL BE?

HNE, ETC, HOPE WE DON'T GET A DAMNED RLV;
FOR EACH TRACK JUMP -- A TSU DUMP,
AND WE ALL LOSE TRACK OF THE LAST PMRD.




                          A M T U

                               BY   J. DAVIDSON & J. FREEMAN


"O LORD, WON'T YOU BUY ME AN AMTU;
       MY FRIENDS ALL HAVE CHANNELS, BUT THEY JUST WON'T DO;
I'D LIKE TEN MEG BANDWIDTH...
       BUT I'LL SETTLE FOR TWO;
O LORD, WON'T YOU BUY ME AN AMTU.
> ED FROM THE
DRUM.  /ALL THE RUNNING TABLES AND THE INITIAL STATE OF EACH 
PROCESSOR, TOGETHER WITH INITIAL SOFTWARE ARE INCLUDED IN THIS AREA.
.EJECT
.UN 4
4.  ^USTART ALL PROCESSORS EXCEPT ^CCPU^L.
.SP
/TYPE TO ^CSYSDDT:
.SP
/R2;/U     (/THIS STARTS UP ALL THE MICROPROCESSORS.)
.SP
.RM 10
.UN 10
/R3;/U     (/THIS EXPANDS THE INITIAL DRUM BAND ALLOCATION TO
INCLUDE ALL AVAILABLE BANDS.)
.EM 10
.SP
;#       (/CLEARS SYSTEM WARNING REGISTERS.)
.SP
0%$      (/TURNS OFF STEP MODE ON THE ^CCPU.)
.SP
1%*      (/TURNS ON THE SCHEDULER PORTION OF THE

.IN 10
MICROSCHEDULER.)
.SP
.UN 4
5.  ^USTART UP CPU^L.
.SP
/TYPE A SINGLE CARRIAGE RETURN ON THE ^CKDF ^CTTY.
/THE ^CTTY SHOULD RETURN IF IT WAS NOT POSITIONED AT THE LEFT, BUT NO
LINE FEED WILL ACCOMPANY THE ACTION.
.SP
/BACK ON ^CSYSDDT, TYPE:
.SP
;/P
.SP
/THE MISSING LINE FEED AND AN "@" WILL BE TYPED ON THE ^UKDF TTY^L
AND THE SYSTEM WILL BE UP.  /NO ONE WILL BE ABLE TO LOG IN AT THIS
POINT, HOWEVER, BECAUSE THE SYSTEM WILL NOT YET HAVE BEEN GIVEN ITS
USER PROFILE (DESCRIPTION OF ALL KNOWN USERS).
.SP
.UN 4
6.  ^UREAD IN NECESSARY SYSTEM FILES^L.
.SP
/RETURN TO THE ^UKDF TTY^L AND ENTER ^CPFS.
/WHEN YOU GET THE "&" HERALD, TYPE:
.SP
$/C.      (COMES OUT LOOKING LIKE "$^CCOMMANDS.")
.SP
^CPFS PROMPTS BY SAYING "^UFROM FILE^L", WHEREUPON YOU TYPE:
.SP
^CPATCH.
.SP
/THE ENTIRE TRANSACTION LOOKS ON THE PRINTOUT LIKE...
.RM 4
.SP
@^CPFS
.SP
&$^UCOMMANDS.

FROM FILE PATCH^L.
.EM 4
.SP
/AT THIS POINT, SEVERAL FILES ARE BROUGHT IN AUTOMATICALLY BY ^CPFS.
/THE ACTION TERMINATED BY ^CPFS SIGNALLING WITH SOME BELLS.
/MAKE SURE THERE ARE NO DISK ERRORS DURING THESE TRANSFERS.
/IF THERE ARE ERRORS, REPEAT THIS STEP.
/IF SOME FILE CANNOT BE READ IN DURING THIS STEP, CALL FOR HELP.
.SP
.UN 4
7.  ^UENTER KDF^L.
.SP
/DO A "/C/L/E" COMMAND AND A "/R/E/W" COMMAND.
/THE LATTER MAY RESPOND WITH "^CTAPE ERROR^L" IF NO TAPE IS MOUNTED
ON THE UNIT.
.SP
/THIS MAKES NO DIFFERENCE.
/THE SYSTEM IS NOW READY FOR USE.
>                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                              .GL  TER-MI-NAL SYS-TEM SUB-ROUTINE STRAIGHT-FOR-WARD-NESS
.GL SOFT-WARE SIMUL-TAN-EOUS-LY RE-TRIEV-AL REGIS-TER
.GL REF-ER-ENCE QUAN-TI-TIES PRO-GRAM-MING PER-FORMS
.GL OPER-ATIONS NONDES-TRUC-TIVE-LY MUL-TI-PLY MULTI-PLE
.GL MOD-IFY MOD-IFI-CA-TION MINI-COM-PUTERS MEM-ORY
.GL INTE-GER IN-STRUC-TIONS IN-DIS-TINGUISH-ABLE HOW-EVER
.GL GREAT-LY EX-PEN-SIVE EXE-CU-TION EX-CEPT DESIG-NAT-ING
.GL DES-CRIBES DE-PEND-ING CON-TROLS CON-TENTS COM-PLETE-LY
.GL COM-PLE-MENTS CATE-GORY CARE-FUL-LY BE-GIN-NING
.GL AP-PEAR-ANCE ALLO-CATION AC-CURACY AC-CUM-ULA-TOR
.GL ABSO-LUTE
1.0  ^CINTRODUCTION
.SP 2
       /THE ^CXDS 940 IS A MEDIUM-SIZED, GENERAL PURPOSE COMPUTER
ACCESSED FROM TERMINALS IN A TIME-SHARING MODE.
/THE 940 IS A GOOD MACHINE FOR A STUDY OF ASSEMBLY-LANGUAGE
PROGRAMMING TECHNIQUES AND MACHINE ORGANIZATION.  /IT
IS SUFFICIENTLY LARGE
THAT A USER DOES NOT HAVE TO CONFUSE
HIMSELF WITH VARIOUS TRICKS REQUIRED TO AVOID THE
HARDWARE LIMITATIONS OF TYPICAL MINICOMPUTERS; YET IT IS
SIMPLE ENOUGH THAT THE USER CAN WRITE, ASSEMBLE, LOAD AND RUN A
SMALL PROGRAM WITHOUT HAVING TO LEARN A HUGE NUMBER OF DETAILS.
(/THIS IS NOT TRUE OF THE ^CIBM 370, FOR EXAMPLE.)

       /THE 940 IS AT THE UPPER END OF A FAMILY OF "MIDI" COMPUTERS
BUILT BEGINNING IN 1961 BY /SCIENTIFIC /DATA /SYSTEMS (^CSDS),
WHICH LATER BECAME /XEROX /DATA /SYSTEMS (^CXDS).
/THE FAMILY, NOT PRODUCED SINCE 1968,
CONSISTS OF THE 910, THE 920, THE 930, AND THE 940.
/THESE MACHINES ARE MADE OF DISCRETE COMPONENTS AND ARE THUS
PHYSICALLY LARGE AND EXPENSIVE COMPARED TO THEIR CAPABILITY (AND WITH
MACHINES WHICH ARE BEING BUILT TODAY.)
/SEVERAL HUNDRED WERE BUILT AND MARKETED OVER A TEN-YEAR PERIOD,
HOWEVER, AND MANY ARE STILL IN USE.
       /IN TERMS OF COMPUTING POWER, THE MACHINES ARE VERY LITTLE
BETTER, IF ANY, THAN PRESENT-DAY MINICOMPUTERS.
/IN FACT, IT WOULD BE NO PROBLEM TO MAKE THEM TODAY AS MINICOMPUTERS
AND SELL THEM AT COMPETITIVE PRICES.
/WHERE THEY DIFFER FROM THE MINIS, HOWEVER, IS IN THEIR LONGER WORD
LENGTH (50% LONGER THAN THE STANDARD 16 BITS).
/THIS SHOWS UP NOT JUST IN TERMS OF NUMERICAL PRECISION AND STORAGE
EFFICIENCY, BUT IN CERTAIN SIMPLICITIES IN THE INSTRUCTION SET AND
ADDRESSING MODES WHICH RESULT FROM INSTRUCTIONS NOT HAVING TO BE
ENCODED INTO SHORTER LENGTHS.

       /THE 940 IS A TIME-SHARED VERSION OF THE 930.
/IT IS EQUIPPED WITH A SPECIAL OPERATING SYSTEM (HARDWARE AND SOFTWARE)
WHICH PROVIDES TO SEVERAL USERS SIMULTANEOUSLY THE SERVICES OF A
^IVIRTUAL ^IMACHINE.
/A VIRTUAL MACHINE APPEARS TO THE USER TO BE A COMPLETE MACHINE OVER
WHICH HE HAS FULL CONTROL, EVEN THOUGH HE IS IN FACT TIME-SHARING
SLIGHTLY DIFFERENT
HARDWARE WITH OTHER USERS.
/THE USER MAY LOAD THE VIRTUAL MACHINE, EXAMINE ITS STATE, START IT, STOP
IT, AND DO ANY OPERATION HE COULD DO IF HE HAD HIS HANDS ON A ^IPHYSICAL
EQUIVALENT.

       /THE MEANS BY WHICH THE USER COMMUNICATES WITH THE MACHINE
AND EXERCISES HIS CONTROL OVER IT IS A /TELETYPE OR SIMILAR ON-LINE TERMINAL.
/THE TERMINAL MAY BE USED FOR INPUT AND OUTPUT WHEN THE USER'S
PROGRAMS ARE RUNNING; AND IT IS USED FOR THE INSPECTION OF MEMORY
LOCATIONS, REGISTER CONTENTS, ETC. WHICH ON AN ACTUAL MACHINE USUALLY
INVOLVES LIGHTS
OR INDICATORS.
/THE TERMINAL
PERMITS THE USER TO RESET OR CLEAR HIS (VIRTUAL) MACHINE,
START IT AT A CERTAIN LOCATION, STOP IT, ETC.
/INSTEAD OF PUSHING ACTUAL BUTTONS AND SWITCHES, THE USER TYPES SPECIAL
COMMANDS ON HIS TERMINAL.
/THE TERMINAL MAY ALSO BE USED TO PREPARE INPUT FOR A PROGRAM IN
ADVANCE OF ITS OPERATION, MUCH LIKE THE USE OF A KEYPUNCH WHEN
PREPARING PROGRAM SOURCE LANGUAGE OR DATA; AND IT CAN DISPLAY
(PERHAPS SELECTED PORTIONS OF) THE PROGRAM'S OUTPUT AFTER ITS
TERMINATION.
/THE TERMINAL, THEN, IS A MULTI-USE DEVICE AND ASSUMES DIFFERENT
ROLES AT DIFFERENT TIMES AND IN DIFFERENT CONTEXTS.

       /ASIDE FROM ITS VIRTUES OF SIMPLICITY AND STRAIGHTFORWARDNESS,
WE USE THE 940 IN THIS COURSE BECAUSE THE ^CBCC 500 SYSTEM, AS A
SPECIAL FEATURE, ^IEMULATES THE 940 SYSTEM WITH REASONABLE EFFICIENCY.
/WE CAN THUS PROVIDE A NUMBER OF STUDENTS THE OPPORTUNITY TO USE
AN ON-LINE SYSTEM SIMULTANEOUSLY.
/THIS IS ADVANTAGEOUS TO THE STUDENTS NOT ONLY IN TERMS OF HOW
MUCH WORK CAN BE DONE BUT ALSO IN PROVIDING SOME EXPERIENCE IN
ON-LINE COMPUTING.

.SP 4
2.0  940 ^CORGANIZATION
.SP 2
       /FROM HIS ^CBCC 500 TERMINAL, THE USER (IF HE WISHES)
SEES A 940 SYSTEM, I.E.,
A COMPLETE COMPUTER SYSTEM CONSISTING OF MEMORY, PROCESSOR,
INPUT^/OUTPUT DEVICE(S), AND OPERATING CONTROLS AND INDICATORS.
/FIGURE 1 IS A DIAGRAM OF THE MACHINE, WITH EMPHASIS ON
ITS REGISTERS AND DATA PATHS.

.SP 2
2.1  /MEMORY
       /THE MEMORY CONTAINS 16384 ADDRESSABLE CELLS IN WHICH
INFORMATION CONSISTING OF INSTRUCTIONS OR DATA CAN BE STORED.
(16384 IS OFTEN REFERRED TO AS "16/K," WHERE 1/K = 1024.)
/EACH CELL CONTAINS 24 BITS -- BINARY ZEROS OR ONES -- OF STORAGE.
/IT IS UP TO THE USER
TO DETERMINE WHERE IN THE MEMORY AND IN WHAT FORM THE INFORMATION
IS TO BE STORED.
/THERE ARE ESSENTIALLY NO RESTRICTIONS 
AS TO HOW THE MEMORY MAY BE USED (ALTHOUGH THERE ARE SOME
CONVENTIONS).
.EJ
.SP 25
.CE
^CFIGURE 1.  940 /PROCESSOR.
.SP 2
/FIGURE 2 GIVES THE FORMAT OF AND BIT NAMING CONVENTIONS FOR
A MEMORY CELL IN THE
MACHINE.
/EACH LOCATION IS IDENTIFIED BY A UNIQUE ^IADDRESS, WHICH
IS A NUMBER RANGING FROM 0 THROUGH 16383.
/AS SEEN IN THE FIGURE,
THE BITS IN A CELL ARE NUMBERED FROM THE MOST SIGNIFICANT TO THE 
LEAST BEGINNING WITH 0.
.SP 14
.CE
^CFIGURE 2.  /MEMORY /CELL /FORMAT.
.EJ
/SINCE ONE OCTAL DIGIT IS READILY CONVERTIBLE INTO THREE BITS, OCTAL
NOTATION IS USED TO REPRESENT THE CONTENTS OF A CELL.
/WHERE IT MIGHT OTHERWISE BE AMBIGUOUS WE USE THE CONVENTION
OF IDENTIFYING OCTAL NUMBERS BY TERMINATING THEM WITH THE LETTER "/B."
/A CELL WHOSE CONTENTS ARE AS FOLLOW:
.SP 10
IS SAID TO CONTAIN 30563672/B.
       /THE MEMORY PERMITS BOTH STORING INTO AND RETRIEVING INFORMATION
FROM ANY OF ITS CELLS.
/STORING INVOLVES COPYING A NEW VALUE INTO THE CELL; RETRIEVING COPIES
THE CURRENT CONTENTS OUT WITHOUT MODIFYING THE CONTENTS (I.E.,
NON-DESTRUCTIVELY).
/EITHER OF THESE OPERATIONS IS CALLED A ^IMEMORY ^IREFERENCE OR
A ^IMEMORY ^IACCESS.
/IN UNDERGOING SUCH A REFERENCE THE MEMORY
MUST BE PROVIDED WITH AN ADDRESS AND WITH A ^ISTORE
OR A ^IFETCH COMMAND, AS SHOWN IN /FIGURE 3.
/THE MEMORY IS DESIGNED TO OPERATE RAPIDLY, AT SPEEDS MATCHING
THOSE OF THE PROCESSOR.
/THE OPERATING SPEED, OR ^IMEMORY ^ICYCLE ^ITIME, IS INDEPENDENT
OF THE ADDRESS; AND SO THE MEMORY IS TERMED ^IRANDOM ^IACCESS
^IMEMORY (^CRAM).
/THE (STRICTLY HARDWARE) MEMORY COMMANDS ARE PREPARED AND ISSUED BY THE
IN ITS ROLE OF EXECUTING THE USER'S PROGRAM.
/THE USER, THEN, IS NEVER EXPLICITLY CONCERNED WITH OPERATING THE MEMORY,
BUT IT IS IMPORTANT FOR EACH USER AT THE VERY OUTSET TO
CORRECTLY VISUALIZE THE MEMORY, THE APPEARANCE OF ITS CONTENTS,
AND THE WAY IT WORKS.
.EJ
.SP 23
.CE
^CFIGURE 3.  /DETAIL OF /MEMORY /ORGANIZATION.
.SP 2
2.2  /PROCESSOR
       /THE PROCESSOR IS THE ENTITY WHICH PERFORMS THE OPERATIONS
REQUIRED TO EXECUTE THE PROGRAM.
/IT FETCHES THE MACHINE-LANGUAGE PROGRAM STEPS (CALLED OPERATIONS
OR ^IINSTRUCTIONS) FROM MEMORY
AND PERFORMS THE INDICATED ACTIONS, WHICH INCLUDE FURTHER FETCHING OR
THE STORING OF ^IOPERANDS.
/THE PROCESSOR IS THUS DIVIDED INTO TWO PARTS CALLED THE CONTROL
SECTION AND THE ARITHMETIC SECTION.
/THE CONTROL SECTION ITERATIVELY:
.RM 10,5
.SP
.UN 5
1) FETCHES THE NEXT INSTRUCTION,
.UN 5
2) INTERPRETS AND EXECUTES IT, (HANDS OVER CONTROL TO THE ARITHMETIC
SECTION)
.UN 5
3) DETERMINES THE LOCATION OF THE NEXT INSTRUCTION.
.SP
.UN 10
/THE ARITHMETIC SECTION:
.SP
.UN 5
1) DETERMINES THE ADDRESS OF ANY OPERAND(S),
.UN 5
2) PERFORMS AN OPERATION ON IT (THEM).
.SP
.EM 10,5

       /FROM THE USER'S POINT OF VIEW THE CONTROL SECTION PERFORMS
ITS WORK WITH NO SPECIFIC ATTENTION OTHER THAN AN AWARENESS ON THE
USER'S PART FROM TIME TO TIME OF THE CONTENTS OF A ^IREGISTER CALLED
THE ^IPROGRAM ^IREGISTER OR /P.
(/A REGISTER IS IDENTICAL IN STRUCTURE TO THE MEMORY CELL, EXCEPT 
THAT IT IS A CONSTITUENT OF THE PROCESSOR AND PLAYS A SPECIFIC
ROLE IN THE PROCESSOR'S OPERATION.
/SINCE THE REGISTER IS DEDICATED TO CERTAIN FUNCTIONS IT DOES
NOT HAVE TO BE ADDRESSED IN THE SINCE OF THE MANY "REGISTERS"
OF THE MEMORY.)
/P IS USED TO HOLD THE ADDRESS OF THE INSTRUCTION CURRENTLY BEING
EXECUTED; AT THE END OF THE CURRENT INSTRUCTION /P WILL BE MODIFIED
TO CONTAIN THE ADDRESS OF THE NEXT INSTRUCTION.
/P MAY BE THOUGHT OF AS A ROVING POINTER WHICH RANGES OVER THE PROGRAM
AS IT EXECUTES AND SHOWS AT ANY POINT OF INTERRUPTION THE INSTRUCTION
ADDRESS TO BE NEXT EXECUTED.
/P THUS PROVIDES THE ADDRESS REQUIRED BY THE CONTROL
SECTION WHEN IT GOES TO THE MEMORY TO FETCH AN INSTRUCTION.
       940 INSTRUCTIONS EACH OCCUPY ONE MEMORY CELL AND ARE CONNECTED
TOGETHER IN SEQUENCE BY THE OBVIOUS EXPEDIENT OF PLACING
SEQUENCES OF INSTRUCTIONS INTO SEQUENCES OF CELLS, I.E., CELLS WITH NUMERICALLY
INCREASING ADDRESSES.
/SINCE /P MOST OFTEN INCREMENTS IN CONTENT VALUE AS THE PROGRAM
RUNS, IT IS FREQUENTLY REFERRED TO AS THE "/P ^ICOUNTER."
(/THIS COUNTING ACTION MAY BE OVERRIDDEN BY THE USE OF
^IBRANCH OR CONTROL TRANSFER INSTRUCTIONS WHICH SERVE TO CHANGE THE CONTENTS
OF /P ALTOGETHER).  
/AS INSTRUCTIONS CAN BE FETCHED ONLY FROM THE 16/K MEMORY,
/P IS ONLY A 14-BIT REGISTER.
/IF THE MACHINE SHOULD ATTEMPT TO FETCH AN INSTRUCTION LOCATED IN
THE NEXT CELL FROM 16383, /P WILL OVERFLOW AND THE FETCH WILL BE
MADE FROM LOCATION 0 INSTEAD.
.SP 2
2.3  /INSTRUCTION /FORMAT
       /THE FORMAT OF AN INSTRUCTION IS SHOWN BELOW.  /EACH INSTRUCTION
IS DIVIDED INTO PORTIONS CALLED ^IFIELDS WHICH INDICATE VARIOUS
ASPECTS OF THE INSTRUCTION.

.SP 10
.EJ
/THE FIELDS ARE:

.SP
.RM 10,6
.UN 4
- /BIT 0:  ^I/SYSTEM ^I/CALL.

/IF /BIT 0 = 1 AND /BIT 2 = 1, THE INSTRUCTION
IS A
SYSTEM CALL, I.E., A TYPE OF INSTRUCTION WHICH CAUSES A BRANCH
INTO A SPECIFIC ENTRY POINT IN THE ^IOPERATING ^ISYSTEM
(SEE /SECTION 2.9).
/INPUT^/OUTPUT,
FOR EXAMPLE, IS PERFORMED BY MEANS OF SYSTEM CALLS.
/IF /BIT 2 = 0, THE /BIT 0 FIELD IS MEANINGLESS; IT MAY HAVE EITHER VALUE.

.SP 1
.UN 4
- /BIT 1:  ^I/INDEX ^I/DESIGNATOR.

/IF /BIT 1 = 1, THE 
ADDRESS CALCULATION KNOWN AS ^IINDEXING IS TO BE DONE.
/INDEXING IS DESCRIBED LATER.
/IT IS APPLICABLE ONLY TO CERTAIN INSTRUCTIONS.

.SP
.UN 4
- /BIT 2:  ^I/PROGRAMMED ^I/OPERATOR ^I/DESIGNATOR.

/IF /BIT 0 = 0 AND /BIT 2 = 1,
THE INSTRUCTION IS OF A SPECIAL TYPE KNOWN AS A ^IPROGRAMMED
^IOPERATOR.  /THIS IS DESCRIBED IN /SECTION 2.8.

.SP
.UN 4
- /BITS 3 - 8:  ^I/OPERATION ^I/CODE.

/THIS FIELD HOLDS A SIX-BIT
NUMBER DESIGNATING ONE OF 64 POSSIBLE INSTRUCTIONS.  /THE 940
DOES NOT USE ALL OF THESE COMBINATIONS.  
/A FEW ARE THUS TERMED ^IILLEGAL ^IINSTRUCTIONS.
/THE FIELD IS ALSO USED IN CONJUNCTION WITH PROGRAMMED OPERATORS
TO DESIGNATE WHICH ONE OF 64 POSSIBLE OPERATORS IS BEING INVOKED.

.SP
.UN 4
- /BIT 9:  ^I/INDIRECT ^I/ADDRESS ^I/DESIGNATOR.

/IF /BIT 9 = 1,
A DIFFERENT MODE OF ADDRESSING CALLED INDIRECT ADDRESSING,
OR INDIRECTION, IS INVOKED.

.SP
.UN 4
- /BITS 10 - 23:  ^I/OPERAND ^I/FIELD.

/THIS FIELD CONTAINS 14 BITS
AND, LIKE THE /P COUNTER, IS CAPABLE OF NAMING ANY ONE OF THE 16/K
MEMORY LOCATIONS.  /THE FIELD IS MOST FREQUENTLY USED TO REFER TO
THE ADDRESS OF AN OPERAND IN MEMORY.  /SOME INSTRUCTIONS, HOWEVER,
USE IT TO HOLD THE OPERAND ITSELF; AND SOME DO NOT USE IT AT ALL.

.EM 10,6
.SP 2
.EJ 10
2.4  /PROCESSOR /REGISTERS
       /THE ARITHMETIC SECTION OF THE PROCESSOR CONTAINS THREE REGISTERS LABELED
/A, /B, AND /X.  /THESE REGISTERS PLAY UNIQUE ROLES IN THE
PROCESSOR AND ARE ADDRESSED IMPLICITLY IN THE INSTRUCTIONS.
/THE USER MUST MAINTAIN AWARENESS OF THEIR CONTENTS, HOWEVER,
SINCE IT IS HE WHO MANAGES THE USE OF THESE REGISTERS WITHIN
THE PROGRAM.

       /A IS CALLED THE ^IACCUMULATOR.
/IT IS USED BY ALMOST ALL THE ARITHMETIC AND LOGICAL INSTRUCTIONS AND
IS CENTRAL TO THE OPERATION OF ANY PROGRAM.
/B IS THE ^IAUXILIARY ^IACCUMULATOR, USED WITH /A IN A FEW
ARITHMETIC INSTRUCTIONS AND IN SHIFTING.
/THE /X REGISTER IS CALLED THE ^IINDEX ^IREGISTER AND IS USED TO HOLD A 
QUANTITY--TERMED THE INDEX--FOR OFFSETTING THE OPERAND ADDRESS.
/ALTHOUGH THE INDEXING OPERATION IS AN ADDRESS CALCULATION--A CALCULATION
ON A 14-BIT QUANTITY--/X ALSO CONTAINS 24 BITS.

.SP 2
2.5  /OVERFLOW /INDICATOR
       /THE OVERFLOW INDICATOR IN THE COMPUTER PERMITS THE READY
DETECTION AND SIGNALING OF OVERFLOW CONDITIONS WHICH MIGHT OTHERWISE
GO UNDETECTED OR REQUIRE ADDITIONAL SOFTWARE OVERHEAD TO DETECT
DURING ARITHMETIC OPERATIONS IN THE EXECUTION OF A PROGRAM.
/THE OVERFLOW INDICATOR IS SET TO 1 (TURNED ON) IF ANY OF THE FOLLOWING
OCCURS:
.SP
.RM 11,5
.UN 6
1.  /A SUM OR DIFFERENCE RESULTING FROM AN ADDITION OR SUBTRACTION
CANNOT BE CONTAINED WITHIN THE /A REGISTER.
.SP
.UN 6
2.  /MULTIPLICATION OF 40000000/B (ALSO WRITTEN 4/B7) BY ITSELF.
(/THE /A AND /B REGISTERS CANNOT CONTAIN THIS PRODUCT.)
.SP
.UN 6
3.  /A DIVISION WITH THE ABSOLUTE VALUE OF THE NUMERATOR EQUAL TO
OR GREATER THAN THE ABSOLUTE VALUE OFF THE DENOMINATOR.
(/THE /A REGISTER CANNOT CONTAIN THIS QUOTIENT.)
.SP
.UN 6
4.  /AN ARITHMETIC LEFT SHIFT CHANGES THE VALUE OF THE BIT IN THE
SIGN POSITION OF THE /A REGISTER.
.SP
.UN 6
5.  /BIT 14 OF THE INDEX REGISTER IS NOT EQUAL TO /BIT 15 OF THE
INDEX REGISTER WHEN THE INSTRUCTION ^URECORD EXPONENT OVERFLOW
(ROV)^L IS EXECUTED.
.SP
.EM 11,5
/THE 940 INSTRUCTION SET CONTAINS INSTRUCTIONS TO RESET, TEST,
OR TEST AND RESET THE STATE OF THE OVERFLOW INDICATOR (SEE
/SECTION 3, "/OVERFLOW /INSTRUCTIONS").
.SP 2
2.6  /DATA /FORMATS
       /THE 940 HAS VARIOUS INSTRUCTIONS WHICH ARE DESIGNED TO WORK
ON DATA ASSUMED TO BE IN DIFFERENT FORMATS AS FOLLOW:
.SP
2.6.1  ^I/INTEGERS
       /INTEGERS ARE REPRESENTED AS 2^^24'S COMPLEMENT NUMBERS
HAVING THE FORMAT:
.SP 10
/BIT 0 INDICATES THE SIGN OF THE NUMBER, NEGATIVE NUMBERS HAVING A
1 BIT AND POSITIVE NUMBERS HAVING A 0 BIT IN THIS POSITION.
/THE ASSUMED BINARY POINT IS TO THE RIGHT OF /BIT 23, THE LEAST
SIGNIFICANT BIT.
/IN THIS FORM THE RANGE OF REPRESENTATION IS FROM -2^^23, OR
-8,388,608, TO +2^^23-1, OR 8,388,607.
/ALL OF THE ARITHMETIC INSTRUCTIONS EXCEPT MULTIPLY (^CMUL) AND
DIVIDE (^CDIV) CAN BE USED ON INTEGER QUANTITIES.
.SP
2.6.2  ^-/FIXED-POINT /FRACTIONS
       /THE ARITHMETIC INSTRUCTIONS ARE DESIGNED PRIMARILY TO 
OPERATE ON FIXED-POINT FRACTIONS HAVEING THE FOLLOWING APPEARANCE:
.SP 10
/THE ASSUMED BINARY POINT IS BETWEEN /BITS 0 AND 1 AT THE MORE SIGNIFICANT
END.
/NEGATIVE NUMBERS ARE HANDLED AS COMPLEMENTS WITH RESPECT TO 2
(TWO'S COMPLEMENTS).
/THE RANGE OF REPRESENTATION IS FROM -1.0 TO +1-2^^(-23).
/THESE NUMBERS HAVE THE EQUIVALENT OF MORE THAN 6 DECIMAL DIGITS OF
ACCURACY.
/FIXED-POINT SCALING (A FORGOTTEN PROGRAMMING ART) IS USED IN
WORKING WITH SUCH NUMBERS DURING COMPUTATION.
.SP
2.6.3  ^-/EXTENDED-PRECISION /FIXED-POINT /NUMBERS
       /SEVERAL INSTRUCTIONS GREATLY FACILITATE THE USE OF MULTIPLE
PRECISION DATA.
/NONE, HOWEVER, OPERATE ON SUCH DATA DIRECTLY.
/A DOUBLE-PRECISION FRACTION, FOR EXAMPLE, WOULD LOOK LIKE:
.SP 10
/IN MEMORY SUCH A DATUM WOULD BE STORED IN TWO CONSECUTIVE MEMORY
LOCATIONS.
.SP
2.6.4  ^-/FLOATING-POINT (/REAL) /NUMBERS
       /WHILE NOT HAVING TRUE FLOATING-POINT INSTRUCTIONS, THE
940 HAS SEVERAL (RATHER ODD) INSTRUCTIONS DESIGNED TO GREATLY
REDUCE THE SOFTWARE OVERHEAD OF SUBROUTINES TO PERFORM CALCULATIONS
ON ^IREALS.
/THESE INSTRUCTIONS ASSUME THE FOLLOWING REAL-NUMBER FORMAT:
.SP 10
/THE MANTISSA IS A 39-BIT, TWO'S COMPLEMENT, NORMALIZED FIXED-POINT
FRACTION (GIVING ABOUT 11 DECIMAL DIGITS OF ACCURACY).
/THE EXPONENT IS A 9-BIT, 512'S COMPLEMENT INTEGER, PERMITTING AN
EXPONENT RANGE OF 2^^-256 TO 2^^255, OR ABOUT 10^^-77.
/IN MEMORY, THE REAL NUMBER IS STORED IN TWO CONSECUTIVE MEMORY
LOCATIONS AND IS ADDRESSED BY THE FORMER (I.E., SMALLER) ADDRESS.
/THE VIRTUAL 940 (THE BASIC INSTRUCTION SET AUGMENTED BY SYSTEM
CALLS -- SEE /SECTION 2.9) DOES HAVE ARITHMETIC "INSTRUCTIONS" WHICH
DEAL DIRECTLY WITH REALS.
.SP
2.6.5  ^-/CHARACTER /STRINGS
       /THE VIRTUAL MACHINE ADDS OTHER CAPABILITIES NOT FOUND IN THE
HARDWARE INSTRUCTION SET.
/AN IMPORTANT ONE IS THE ABILITY TO FETCH AND STORE INDIVIDUAL
8-BIT BYTES FROM MEMORY, ACCORDING TO THE FOLLOWING
FORMAT:
.SP 10
/THIS ABILITY MAKES THE MACHINE WELL SUITED TO DEAL WITH CHARACTER
STRINGS -- VARIABLE LENGTH SEQUENCES OF BYTES.
/FOR THIS PURPOSE IT IS IMAGINED THAT ALL OF MEMORY CAN BE BYTE
ADDRESSED, AS WELL AS WORD ADDRESSED.
/SINCE THERE ARE THREE BYTES^/WORD, THE BYTE ADDRESS IS ROUGHLY THREE
TIMES IN VALUE THE ADDRESS OF THE WORD IN WHICH IT IS STORED.
/THE PRECISE CORRESPONDENCE IS
.SP 5
AND THE BYTE POSITION WITHIN THE WORD IS
.SP 5
^-/BYTE MEMORY^E THUS LOOKS LIKE THE FOLLOWING:
.SP 18
2.7  /ADDRESS /MODIFICATION /RULES
.SP
       /MOST MACHINES PROVIDE SOME MEANS FOR MODIFYING AT EXECUTION
TIME THE EFFECTIVE ADDRESS OF AN INSTRUCTION FROM THAT WHICH IT ACTUALLY
CONTAINS.
/THIS IS DONE  A) TO REDUCE THE RUN-TIME OVERHEAD OF PROGRAMS DEALING
WITH SIMPLE DATA STRUCTURES AND^/OR  B) TO AVOID THE PROGRAM'S HAVING TO
MODIFY ^IITSELF.
/THE 940 PROVIDES ^IINDEXING AND ^IINDIRECTION (INDIRECT, OR DEFERRED,
ADDRESSING) FOR THESE PURPOSES.
/THE TWO FEATURES MAY BE USED JOINTLY OR SINGLY IN THE SAME INSTRUCTION.
.SP
2.7.1  ^I/INDEXING
       /THE MACHINE CONTAINS AN INDEX REGISTER (/X REGISTER) FOR
ADDRESS MODIFICATION, THE USE OF WHICH DOES NOT INCREASE EXECUTION
TIME.
/IF /BIT 1 IN AN INSTRUCTION WHICH ADDRESSES MEMORY (SOME DON'T) IS
1, THE 940 ADDS /BITS 10-23 OF  THE /X REGISTER TO THE ADDRESS
FIELD OF THE INSTRUCTION TO PRODUCE A DIFFERENT ^-EFFECTIVE ADDRESS 
(THE ADDRESS ACTUALLY REFERENCED).
/THE ADDITION IS DONE STRICTLY MODULO 2^^14, COMPLETELY IGNORING
ANY OVERFLOWS WHICH MAY OCCUR.
/IF /BIT 1 IS A ZERO THE /X REGISTER IS NOT ADDED; THE EFFECTIVE
ADDRESS IS MERELY THE ADDRESS FOUND IN THE INSTRUCTION.
       /THE INSTRUCTION SET PROVIDES INSTRUCTIONS FOR MODIFYING AND
TESTING THE /X REGISTER.
.SP
2.7.2  ^-/INDIRECTION
       /WHEN /BIT 9 OF AN INSTRUCTION (WHICH PERMITS IT) IS 1,
INDIRECTION IS INVOKED.
/THE MACHINE FETCHES THE CONTENTS OF THE ADDRESS FOUND IN THE INSTRUCTION
(OR THE ADDRESS OFFSET BY /BITS 10-23 OF THE /X REGISTER IF THE
INSTRUCTION WORD'S /BIT 1 = 1) AND BEGINS THE ENTIRE ADDRESS MODIFICATION
CYCLE AGAIN USING /BITS 1 AND 9 OF THE NEWLY-FETCHED LOCATION AS A
GUIDE TO FURTHER ACTION.
/THIS PROCESS CAN REPEAT MANY TIMES, DEPENDING ON THE CONTENTS OF
MEMORY.
.SP
2.7.3  ^-/SIMULTANEOUS /INDEXING AND /INDIRECTION
       /IT IS CORRECT TO SAY THAT FOR EACH INSTRUCTION EXECUTED AN
EFFECTIVE ADDRESS IS ALWAYS CALCULATED, THE RESULTS DEPENDING ON THE
/X AND /I BITS ACCORDING TO THE FOLLOWING ALGORITHM EXECUTED BY THE
HARDWARE:
       /IN THE FOLLOWING, /P IS THE 14-BIT PROGRAM REGISTER, /S
THE 14-BIT MEMORY ADDRESS REGISTER, /M THE 24-BIT MEMORY DATA REGISTER,
/I THE 24-BIT INSTRUCTION REGISTER, /O THE 6-BIT OPERATION CODE
REGISTER, AND /X THE 24-BIT INDEX REGISTER.  /THE ALGORITHM IS EXPRESSED
IN TERMS OF AN INFORMAL PROGRAMMING LANGUAGE.
.SP 2
.NOFILL
^U*  940 EFFECTIVE ADDRESS CALCULATION:
*  FIRST WE HAVE TO FETCH THE INSTRUCTION.

START: S-P & FETCH;

*  AT THE END OF THE MEMORY CYCLE THE FETCHED DATA IS IN M.

       O-M(3,8);          ^/*CAPTURE THE OP CODE BITS*^/
       FOREVER DO;
          I-M;            ^/*ADDRESS CALC BEGINS HERE*^/
          I-(I+X)MOD 2^^14 IF I(1)=1;
          GOTO DONE IF I(9)=0;
          S-I(10,23) & FETCH;  ^/*DO INDIRECT STEP*/
       ENDFOR;

DONE:  Q-I(10,23);        ^/*Q IS THE EFFECTIVE ADDR*^/^L
.FILL
.SP 2
(/THE READER WILL NOTE THAT THIS ALGORITHM ACCURATELY DESCRIBES THE
BEHAVIOR OF THE MACHINE FOR ALL FOUR COMBINATIONS OF THE /X AND /I
BITS.)
.SP 2
2.8  /PROGRAMMED /OPERATORS
       /MOST ARITHMETIC MACHINE INSTRUCTIONS REQUIRE IN SOME WAY
THREE ADDRESSES: THOSE OF TWO OPERANDS AND THAT OF THE RESULT.
/THE 940, LIKE MOST ONE-ADDRESS MACHINES, ADDRESSES THE /A REGISTER
BY IMPLICATION FOR THE FIRST OPERAND AND FOR THE RESULT.
/ITS INSTRUCTIONS, THEN, EXPLICITLY ADDRESS ONLY THE SECOND OPERAND.
       /IT IS NOT INFREQUENT THAT A SIMILAR SITUATION DEVELOPS WHEN
A PROGRAMMER IS DESIGNING A SUBROUTINE:  THE SUBROUTINE IS TO PERFORM
SOME OPERATION ON TWO 24-BIT QUANTITIES AND RETURN A SINGLE RESULT.
/THE PROBLEM IS HOW TO CONVEY TO THE SUBROUTINE THE TWO ARGUMENTS
AND RECEIVE THE RESULT.
/THE OBVIOUS CHOICE FOR A MACHINE OF THIS TYPE IS TO USE /A
FOR THE FIRST OPERAND AND FOR THE RESULT.
/BUT THE ADDRESS FIELD OF THE SUBROUTINE CALL INSTRUCTION IS OCCUPIED
WITH THE ADDRESS OF THE SUBROUTINE, FORCING SOME OTHER CHOICE (SUCH
AS THE USE OF /B, PERHAPS).
/THIS IS NOT REALLY BAD, BUT IT MAKES THE USE OF THE SUBROUTINE A
LITTLE AWKWARD, ESPECIALLY IF WE WOULD LIKE TO APPLY ADDRESS
MODIFICATION TO THE SECOND OPERAND.
       /THE 940 /PROGRAMMED /OPERATOR (^CPOP) FEATURE PERMITS A PROGRAMMER
TO PACK INTO A SINGLE INSTRUCTION BOTH WHICH SUBROUTINE IS TO BE 
ENTERED AND A 14-BIT ADDRESS OF AN OPERAND.
/THE SUBROUTINE CAN WITH GREAT EFFICIENCY AND EASE RETRIEVE THIS
ADDRESS ^-AND APPLY THE SAME ADDRESS MODIFICATION RULES AS THE BARE
^-HARDWARE USES.
/THIS MAKES THE ^CPOP SUBROUTINE LOOK FOR ALL SUBSEQUENT PROGRAMMING
PURPOSES ^-VERY MUCH LIKE A MACHINE INSTRUCTION.
       /THE BASIS OF THE ^CPOP IS AS FOLLOWS:
/AN INSTRUCTION IS EITHER A ^CPOP, OR IT IS NOT.
/THEREFORE ONLY ONE BIT IS REQUIRED IN THE INSTRUCTION WORD TO SPECIFY
WHETHER THE FEATURE IS TO BE USED.
/BIT 2 = 1 IS USED FOR THIS PURPOSE.
/THE REMAINING 6 BITS OF THE OPERATION
CODE FIELD ARE USED TO SPECIFY THE SUBROUTINE
ENTRY POINT.
6 BITS CANNOT, OF COURSE, DIRECTLY POINT TO AN ARBITRARY 14-BIT
ADDRESS.
/BUT THE FIELD CAN DIRECT THE MACHINE TO AN ARBITRARY LOCATION THROUGH
A 64-WORD LINKAGE TABLE.
       /WHEN THE 940 FETCHES A NEW INSTRUCTION AND DETECTS A 1 IN
/BIT 2 OF THAT INSTRUCTION (AND A 0 IN /BIT 0), IT DOES NOT INTERPRET
/BITS 3-8 AS AN OPCODE.
/INSTEAD IT:
.RM 11,5
.SP
.UN 6
1.  /STORES CURRENT VALUE OF OVERFLOW INDICATOR IN /BIT 0 OF MEMORY
LOCATION 0.
.SP
.UN 6
2.  /RESETS THE OVERFLOW INDICATOR.
.SP
.UN 6
3.  /STORES ZEROS IN /BITS 1-8 OF MEMORY LOCATION 0 AND A 1 IN /BIT 9.
.SP
.UN 6
4.  /STORES CURRENT CONTENTS OF /P REGISTER INTO /BITS 10-23 OF 
MEMORY LOCATION 0.
.SP
.UN 6
5.  /LOADS /BITS 2-8 OF THE INSTRUCTION WORD INTO /P REGISTER.
.SP
.EM 11,5
/THE MACHINE DOES ^INOT APPLY THE ADDRESS MODIFICATION RULES TO A
^CPOP, NOR DOES IT REFER TO /BITS 10-23 OF THE ^CPOP INSTRUCTION.
       /THE EFFECT OF THE STEPS JUST OUTLINED IS TO STORE A NORMAL
(EXCEPT THAT /BIT 9 IS ALWAYS SET) SUBROUTINE RETURN LINK (SEE
^CBRM INSTRUCTION IN /SECTION 3) IN MEMORY LOCATION 0 AND TO TRANSFER
CONTROL TO A MEMORY ADDRESS IN THE RANGE 100/B - 177/B.
/THERE IT IS EXPECTED THAT THE PROGRAMMER WILL HAVE PLACED AN 
UNCONDITIONAL CONTROL TRANSFER TO THE ACTUAL SUBROUTINE ENTRY POINT.
/A GIVEN PROGRAM MAY INCLUDE UP TO 64 (100/B) SUCH SUBROUTINES.
       /THE SUBROUTINE CAN ACCESS THE OPERAND SPECIFIED BACK IN THE
^CPOP INSTRUCTION, ALONG WITH ANY ADDRESS MODIFICATION SPECIFIED IN
THE ^CPOP, MERELY BY REFERRING TO MEMORY LOCATION 0 INDIRECTLY.
/BECAUSE OF /BIT 9'S PREVIOUSLY HAVING BEEN SET, THE INDIRECT
REFERENCE IS PROPAGATED ONE MORE LEVEL AND THE EFFECTIVE ADDRESS
IS THEN FORMED AS IF THE ^CPOP HAD BEEN A MACHINE INSTRUCTION.
/THIS MEANS THAT ANY ^CPOP CAN USE INDEXING AND^/OR INDIRECTION FOR
ANY MEANINGFUL PURPOSES.
.SP 2
2.9  /SYSTEM /CALLS
       /AN OPERATING SYSTEM SUCH AS THAT REQUIRED IN TIME-SHARING
CANNOT PERMIT THE USER TO EXECUTE ^IEVERY INSTRUCTION KNOWN TO THE
HARDWARE.
/SOME INSTRUCTIONS, SUCH AS /I^//O INSTRUCTIONS FOR EXAMPLE, WOULD
BRING THE (INDEPENDENT) USERS INTO SERIOUS CONFLICT WITH EACH OTHER
AND WITH THE SYSTEM.
/INSTEAD THE SYSTEM MUST PERFORM THE /I^//O ON THE USER'S BEHALF
WITH DUE REGARD FOR CHECKING HIS AUTHORIZATION FOR SUCH /I^//O,
FOR SCHEDULING CONSIDERATIONS, DEVICE ALLOCATION, ETC.
/THE USER COMMUNICATES HIS WISHES TO THE SYSTEM (OBTAINS^/GIVES
DATA FROM^/TO THE SYSTEM IN THE CASE OF /I^//O) BY MEANS OF
^ISYSTEM ^ICALLS, TRANSFERS OF CONTROL THROUGH CAREFULLY PROTECTED
ENTRY POINTS OF THE SYSTEM SOFTWARE.
       /THE SYSTEM SOFTWARE IS PLACED IN A DIFFERENT AREA OF MEMORY
FROM THAT ADDRESSABLE BY THE USER.
/THIS IS MADE POSSIBLE BY THE 940 VIRTUAL MEMORY FEATURES, NOT
DISCUSSED HERE.
/SINCE THE USER CANNOT ADDRESS THIS MEMORY, THERE IS NO WAY HE CAN
FETCH IMPROPER INFORMATION (SUCH AS SOMEONE ELSE'S PASSWORD) OR
STORE DATA INTO IT, THEREBY POSSIBLY DESTROYING OR ALTERING THE
SYSTEM.
/ALL HE CAN DO IS ^IENTER IT, AND THEN ONLY AT KNOWN LOCATIONS WITH
VALID PARAMETERS.
       /THE ^CPOP MECHANISM IS IDEAL FOR THIS PURPOSE SINCE IT PROVIDES
FOR PROTECTED ENTRY (E.G., ONLY THROUGH THE ^CPOP TRANSFER VECTOR,
OR LINKAGE TABLE) AND MAKES PARAMETER RETRIEVAL SO NATURAL.
/IF THE 940 DETECTS A 1 IN /BIT 2 OF AN INSTRUCTION WORD
^-AND ALSO SEES A 1 IN /BIT 0^E, THEN BEFORE PROCEEDING TO PERFORM
THE STEPS DETAILED IN /SECTION 2.8 ABOVE IT FIRST SHIFTS MEMORY
ADDRESSING TO INCLUDE THE SYSTEM CODE.
/WHEN THE LINK RETURN WORD IS SAVED IN MEMORY LOCATION 0, IT IS
PLACED IN THE ^ISYSTEM'S LOCATION 0; AND WHEN THE BRANCH
IS MADE TO THE ^CPOP TRANSFER VECTOR IN 100/B - 177/B, IT IS TO THE
^ISYSTEM'S TRANSFER VECTOR IN THE ^ISYSTEM'S 100/B - 177/B.
^CPOP^ES WITH /BIT 0 SET TO 1 THUS ALL BRANCH TO MEMORY INVISIBLE
TO THE USER AND ARE TERMED ^CSYSPOP^ES.
       /BECAUSE OF THEIR GREAT RESEMBLANCE TO MACHINE INSTRUCTIONS
(NOW NOT EVEN REQUIRING THE LOADING OF A SUBROUTINE INTO 
VISIBLE MEMORY AND THE PLACING OF THE CORRECT BRANCH INTO THE
VISIBLE TRANSFER VECTOR), ^CSYSPOP^ES ARE ^IINDISTINGUISHABLE FROM
MACHINE INSTRUCTIONS, EXCEPT THAT THEY MAY TAKE A LITTLE LONGER TO
EXECUTE.
/IN EFFECT THERE ARE 64 NEW "INSTRUCTIONS" NOW AVAILABLE TO A USER.
       /THROUGH THIS MEANS ALL OF THE INSTRUCTIONS DENIED A USER
BECAUSE THEIR EXECUTION MIGHT BRING HIM IN CONFLICT WITH SOMEONE ELSE
(THE ^IPRIVILEDGED INSTRUCTIONS) HAVE BEEN REPLACED.
/IN ADDITION, A GREAT NUMBER OF SUBROUTINES WHICH MIGHT BE CALLED
FREQUENTLY BY A TYPICAL PROGRAMMER HAVE BEEN INSTALLED IN THE SYSTEM
AND ARE IMMEDIATELY AVAILABLE VIA ^CSYSPOP^ES.
/THIS REDUCES CONSIDERABLY THE NECESSITY FOR A USER TO HAVE TO
RETRIEVE A SIMPLE LIBRARY SUBROUTINE AND INSTALL IT IN HIS PROGRAM.
/IT IS ALREADY THERE (IN SYSTEM SPACE); ALL HE HAS TO DO IS CALL IT.
       /OF THE VARIOUS SYSTEM CALLS, MANY FALL INTO THE CATEGORY
IDEALLY SUITED TO THE ^CPOP: A SINGLE PARAMETER (AND POSSIBLY THE
/A REGISTER) IS INVOLVED.
/ACCORDINGLY SUCH ^CSYSPOP^ES LOOK LIKE NORMAL MACHINE INSTRUCTIONS,
AND EACH IS ASSIGNED ITS OWN POSITION IN THE TRANSFER VECTOR AND HAS ITS
OWN MNEMONIC CODE FOR USE WITH ASSEMBLY LANGUAGE.
/OTHERS, HOWEVER, EITHER TAKE NO PARAMETER OR TAKE SEVERAL.
/THESE CASES ALL USE THE SAME ^CSYSPOP CODE, ^I^CBRS^E (BRANCH TO
SYSTEM); AND USE THE ADDRESS FIELD TO FURTHER SPECIFY WHICH
ACTION TO TAKE.
/HENCE IT IS POSSIBLE TO HAVE MANY MORE THAN 64 SYSTEM CALLS.
>   BOTH WHICH SUBROUTINE IS TO BE 
ENTERED AND A 14-BIT ADDRESS OF AN OPERAND.
/THE SUBROUTINE CAN WITH GREAT EFFICIENCY AND EASE RETRIEVE THIS
ADDRESS ^-AND APPLY THE SAME ADDRESS MODIFICATION RULES AS THE BARE
^-HARDWARE USES.
/THIS MAKES THE ^CPOP SUBROUTINE LOOK FOR ALL SUBSEQUENT PROGRAMMING
PURPOSES ^-VERY MUCH LIKE A MACHINE INSTRUCTION.
       /THE BASIS OF THE ^CPOP IS AS FOLLOWS:
/AN INSTRUCTION IS EITHER A ^CPOP, OR IT IS NOT.
/THEREFORE ONLY ONE BIT IS REQUIRED IN THE INSTRUCTION WORD TO SPECIFY
WHETHER THE FEATURE IS TO BE USED.
/BIT 2 = 1 IS USED FOR THIS PURPOSE.
/THE REMAINING 6 BITS OF THE OPERATION
CODE FIELD ARE USED TO SPECIFY THE SUBROUTINE
ENTRY POINT.
6 BITS CANNOT, OF COURSE, DIRECTLY POINT TO AN ARBITRARY 14-BIT
ADDRESS.
/BUT THE FIELD CAN DIRECT THE MACHINE TO AN ARBITRARY LOCATION THROUGH
A 64-WORD LINKAGE TABLE.
       /WHEN THE 940 FETCHES A NEW INSTRUCTION AND DETECTS A 1 IN
/BIT 2 OF THAT INSTRUCTION (AND A 0 IN /BIT 0), IT DOES NOT INTERPRET
/BITS 3-8 AS AN OPCODE.
/INSTEAD IT:
.RM 11,5
.SP
.UN 6
1.  /STORES CURRENT VALUE OF OVERFLOW INDICATOR IN /BIT 0 OF MEMORY
LOCATION 0.
.SP
.UN 6
2.  /RESETS THE OVERFLOW INDICATOR.
.SP
.UN 6
3.  /STORES ZEROS IN /BITS 1-8 OF MEMORY LOCATION 0 AND A 1 IN /BIT 9.
.SP
.UN 6
4.  /STORES CURRENT CONTENTS OF /P REGISTER INTO /BITS 10-23 OF 
MEMORY LOCATION 0.
.SP
.UN 6
5.  /LOADS /BITS 2-8 OF THE INSTRUCTION WORD INTO /P REGISTER.
.SP
.EM 11,5
/THE MACHINE DOES ^INOT APPLY THE ADDRESS MODIFICATION RULES TO A
^CPOP, NOR DOES IT REFER TO /BITS 10-23 OF THE ^CPOP INSTRUCTION.
       /THE EFFECT OF THE STEPS JUST OUTLINED IS TO STORE A NORMAL
(EXCEPT THAT /BIT 9 IS ALWAYS SET) SUBROUTINE RETURN LINK (SEE
^CBRM INSTRUCTION IN /SECTION 3) IN MEMORY LOCATION 0 AND TO TRANSFER
CONTROL TO A MEMORY ADDRESS IN THE RANGE 100/B - 177/B.
/THERE IT IS EXPECTED THAT THE PROGRAMMER WILL HAVE PLACED AN 
UNCONDITIONAL CONTROL TRANSFER TO THE ACTUAL SUBROUTINE ENTRY POINT.
/A GIVEN PROGRAM MAY INCLUDE UP TO 64 (100/B) SUCH SUBROUTINES.
       /THE SUBROUTINE CAN ACCESS THE OPERAND SPECIFIED BACK IN THE
^CPOP INSTRUCTION, ALONG WITH ANY ADDRESS MODIFICATION SPECIFIED IN
THE ^CPOP, MERELY BY REFERRING TO MEMORY LOCATION 0 INDIRECTLY.
/BECAUSE OF /BIT 9'S PREVIOUSLY HAVING BEEN SET, THE INDIRECT
REFERENCE IS PROPAGATED ONE MORE LEVEL AND THE EFFECTIVE ADDRESS
IS THEN FORMED AS IF THE ^CPOP HAD BEEN A MACHINE INSTRUCTION.
/THIS MEANS THAT ANY ^CPOP CAN USE INDEXING AND^/OR INDIRECTION FOR
ANY MEANINGFUL PURPOSES.
.SP 2
2.9  /SYSTEM /CALLS
       /AN OPERATING SYSTEM SUCH AS THAT REQUIRED IN TIME-SHARING
CANNOT PERMIT THE USER TO EXECUTE ^IEVERY INSTRUCTION KNOWN TO THE
HARDWARE.
/SOME INSTRUCTIONS, SUCH AS /I^//O INSTRUCTIONS FOR EXAMPLE, WOULD
BRING THE (INDEPENDENT) USERS INTO SERIOUS CONFLICT WITH EACH OTHER
AND WITH THE SYSTEM.
/INSTEAD THE SYSTEM MUST PERFORM THE /I^//O ON THE USER'S BEHALF
WITH DUE REGARD FOR CHECKING HIS AUTHORIZATION FOR SUCH /I^//O,
FOR SCHEDULING CONSIDERATIONS, DEVICE ALLOCATION, ETC.
/THE USER COMMUNICATES HIS WISHES TO THE SYSTEM (OBTAINS^/GIVES
DATA FROM^/TO THE SYSTEM IN THE CASE OF /I^//O) BY MEANS OF
^ISYSTEM ^ICALLS, TRANSFERS OF CONTROL THROUGH CAREFULLY PROTECTED
ENTRY POINTS OF THE SYSTEM SOFTWARE.
       /THE SYSTEM SOFTWARE IS PLACED IN A DIFFERENT AREA OF MEMORY
FROM THAT ADDRESSABLE BY THE USER.
/THIS IS MADE POSSIBLE BY THE 940 VIR.GL  SEP-AR-ATE-LY PACK-AGES IN-STRUC-TIONS HOW-EVER
.CE
^UASSEMBLY OF THE INITIAL CORE LOAD^L
.SP 3
       /THE OPERATING SYSTEM SOFTWARE IS INITIALIZED BEGINNING WITH
AN INITIAL CORE LOAD (^CICL).
/THIS DOCUMENT DESCRIBES THE STEPS NECESSARY FOR THE PRODUCTION OF THE
^CICL.
/WE ASSUME THE EXISTENCE OF A NUMBER OF SOURCE FILES HAVING
MORE OR LESS OBVIOUS NAMES.
/IT IS NOT PROPER TO USE THEIR EXACT NAMES OR MENTION THEIR WHEREABOUTS IN THIS
DOCUMENT, HOWEVER, AS EXPERIENCE HAS SHOWN THAT THEY CHANGE NAMES
AND LOCATIONS TOO OFTEN TO INCORPORATE PERMANENTLY INTO INSTRUCTIONS SUCH AS THESE.
       /THE ACTUAL ^CICL IS PRODUCED WITH A SIMPLE 940 PROGRAM
CALLED "^CMAKE-ICL".  /THIS PROGRAM EXISTS ONLY IN SOURCE, SO IT MUST
BE ASSEMBLED WITH ^CNARP AND LOADED WITH ^CDDT BEFORE IT CAN BE
RUN.
/EXPERIENCE HAS SHOWN THAT IT IS A GOOD IDEA TO LIST OUT THE
SOURCE BEFORE ASSEMBLING IT TO SEE IF THE SOURCE IS COMPATIBLE WITH THAT SOFTWARE
BEING PLACED INTO THE ^CICL.  /USUALLY CHANGES IN THE SOFTWARE
DICTATE RELOCATING SOME PAGES OR CHANGING THE NUMBER OF PAGES
BEING COPIED FROM VARIOUS FILES.
/THE FOLLOWING SHOWS HOW THIS PROGRAM BEHAVES WHEN IT IS RUN:
.SP
.RM 10
^U@DDT
.SP
;T   BMAKE-ICL.

IDENT.   02X   622
.SP
START;G
.SP
RUNNING TABLE: RT.

CONTEXT BLOCK: CB.

MIB: MIB.

MONITOR: MONITOR.

LISTENER: LISTENER.

APU CODE: APU.

NEW ICL FILE: "NEW-ICL".
.SP
DONE.

%F^L
.SP
.EM 10
       /THE VARIOUS FILES NAMED IN THE PRECEDING TRANSACTION WHICH ARE THE CONSTITUENTS OF THE ^CICL ARE
THEMSELVES MADE IN DIFFERENT WAYS.  /WE CONSIDER FIRST THE ^CMONITOR FILES.
/THE ^CMONITOR IS COMPILED WITH A SPECIAL VERSION OF ^CSPL CALLED
HERE "^CMSPL".  /THE ^CMONITOR SOURCE EXISTS IN 9 SEPARATE PACKAGES
WHICH ARE READ IN AND COMPILED INTO A DUMP FILE.  /THE DUMP FILE
IS THEN SEPARATED INTO SEVERAL OF THE ^CICL-^ECONSTITUENT FILES BY MEANS
OF ^CBXFER, WHICH EXISTS AS A ^CQSPL BINARY FILE AND MUST BE LOADED
AND RUN BY ^CQRUN.
.SP
.RM 10
^U@MSPL
.SP
SPL VERSION 1.1  (7^/5^/73)
.SP
:.B 610000B

610 MS 16 PAGE FAULTS

:.S E 8

0 MS 0 PAGE FAULTS

:R COMN

1569 LINES = 0 WORDS

:R SPCL

247 LINES = 0 WORDS

:R TRAP

158 LINES = 0 WORDS

:R PMS

1309 LINES = 0 WORDS

:R IWS

649 LINES = 0 WORDS

:R FLS

1433 LINES = 0 WORDS

:R CHIO

247 LINES = 0 WORDS

:R SPS

747 LINES = 0 WORDS

:R STRT

330 LINES = 0 WORDS

:.C

943100 MS 11001 PAGE FAULTS

:.P

150584-18224=132360 WORDS

19701 MS 497 PAGE FAULTS

:.D "DMONITOR"

84 PAGES

10985 MS 93 PAGE FAULTS

:.L M

MONITOR RING

.NOFILL
   WGS 10 OF 600160-602777   RSGS 3010 OF 604000-607777
   CS 610000-652331
250 MS 1 PAGE FAULTS
:.F
@QRUN

;T   BXFER.
IDENT.   06X   1713

.EM 1
 .GET;G
.RM 1

DUMP FILE: DMONITOR.
DATA FILE: "CB".

VIRTUAL ADDRESS: 600000B
NUMBER OF PAGES: 1.

OK

.EM 1
 .GET;G
.RM 1

DUMP FILE: DMONITOR.
DATA FILE: "MONITOR".

VIRTUAL ADDRESS: 604000B
NUMBER OF PAGES: 10.

OK

.EM 1
 .GET;G
.RM 1

DUMP FILE: DMONITOR.
DATA FILE: "MIB".

VIRTUAL ADDRESS: 710000B
NUMBER OF PAGES: 1.

OK

%F^L
.FILL
.EM 10
       /IT IS NECESSARY TO RECOMPILE PART OF THE ^CMONITOR
WITH OLD ^CSPL SO THAT THE RESIDENT TABLES CAN BE INITIALIZED BY
RUNNING THE FUNCTION ^CINIT'CHT.
/OLD ^CSPL IS A 940 DUMP FILE.  /BEFORE IT CAN BE ^CRECOVER^EED, IT
IS NECESSARY TO LINK ^CDDT:^CPCMD TO #2:^CEMULATOR:^CPIF AND 
^CDDT:^C9SUB TO #2:^CDDT:^C9SUB.
/THEN:
.SP
.NOFILL
.RM 10
^U@RECOVER OLD-SPL JACK

40;B
BRS 146D;U
$
M1MODE/    1   0
%!
.EM 1
 .SPL;G

 SPL 8-27.50

 :.A 2
 250 MS
 :.B 610000B
 2616 MS
 :R COMN
 1591 LINES = 18608 WORDS
 :R SPCL
 247 LINES = 1884 WORDS
 :R STRT
 323 LINES = 3084 WORDS
 :.C

 CHTD COMPILING
 0 ERRORS 6R0W2836M 0 WGS 13 RSGS
 .
 .
 .
 :- INIT'CHT()
 COMPILE 1-GO

 EXIT TASK 1
 -:.D "XMON"
 37 PAGES
 6266 MS
 :.F

 %F

 @QRUN

 ;T BXFER.
 IDENT.   06X   1713

 .GET;G

 DUMP FILE: XMON.
 DATA FILE: "RT".

 VIRTUAL ADDRESS: 664000B
 NUMBER OF PAGES: 1.

 OK

 %F^L
.FILL
.SP
.EM 9
/THIS COMPLETES THE ^CMONITOR^E-RELATED FILES.
       /THE ^CLISTENER IS MADE USING YET ANOTHER VERSION OF ^CSPL
FOR COMPILING CODE IN THE /UTILITY RING.  /THIS VERSION IS
CALLED HERE "^CUSPL".
/THE FOLLOWING SHOWS HOW IT IS DONE:
.SP
.RM 10
.NOFILL
^U@USPL

SPL VERSION 1.1 (7^/5^/73)

:.B 435000B
610 MS 16 PAGE FAULTS
:.S E 5
0 MS 0 PAGE FAULTS
:.Z S
0 MS 0 PAGE FAULTS
:.R LISTENER
1815 LINES = 0 WORDS
:.C
91459 MS 1117 PAGE FAULTS
:.P
43386-8177=35209 WORDS
5290 MS 131 PAGE FAULTS
:.D "DLISTENER"
28 PAGES
3652 MS 34 PAGE FAULTS
:.L M
UTILITY RING
   WGS 1726 OF 403200-406777   RSGS 711 OF 434000-434777
   CS 435000-446034
0 MS 1 PAGE FAULTS
:-O/$403012B
2435520B
-:.F
@QRUN

;T   BXFER.
IDENT.   06X   1713

.EM 1
 .GET;G

 DUMP FILE: DLISTENER.
 DATA FILE: "LISTENER".

 VIRTUAL ADDRESS: 434000B
 NUMBER OF PAGES: 3.

 OK

 %F^L
.FILL
.EM 9
       /IT IS NECESSARY TO MODIFY THE SUB-PROCESS ENTRY-POINT
CONTENTS OF THE ^CCB FILE MADE PREVIOUSLY TO BE COMPATIBLE WITH THE
^CLISTENER JUST COMPILED.  /THAT IS WHY THE CONTENTS OF 403012/B
WAS JUST EXAMINED.  /THIS IS DONE AS FOLLOWS:
.SP
.NOFILL
.RM 10
^U@DDT

CLEAR;U
$
BRS 15D;U
CB.$$
10^\   3
4000;A
;A;X
BIO 10;U
$$
BRS 17D;U
$
7012B[   2435620   2435520
CLEAR;U
$
BRS 16D;U
CB.$$
4000;A
;A;X
BIO 10;U
$$
BRS 17D;U
$
%F^L
.FILL
.SP
.EM 10
       /FINALLY, IT IS NECESSARY TO MAKE THE ^CAPU CODE FILE.
/A SPECIAL VERSION OF ^CNARP CALLED ^CAPUAS IS USED TO ASSEMBLE
THE SOURCE LANGUAGE.  ^CAPUAS IS A 940 DUMP FILE.  /THE SOURCE FILE
ACTUALLY CONTAINS TWO PROGRAM PACKAGES WHICH MUST BE SEPARATELY
ASSEMBLED.  /THE FOLLOWING SCRIPT SHOWS THE ENTIRE PRODUCTION PROCESS:
.SP
.RM 10
.NOFILL
^U@QED

*READ FROM AMC04.
18766 WORDS.
*1,:UMCCD:-1WRITE ON "AMCCD".
11147 WORDS.
*:UMCCD:,$WRITE ON "UMCCD".
7620 WORDS.
*FINISHED.

@REC APUAS

SOURCE FILE:  AMCCD.
OBJECT FILE:  "B1".

AMCCD   IDENT
AMCCD COMPILING
HALF WAY


50 SEC    0 ERR    2457 (1327) WRD   (S:670,O:0,L:62,M:1977,U:0)


@CONT
#2:NARP

SOURCE FILE:  UMCCD.
OBJECT FILE:  "B2".

UMCCD   IDENT


29 SEC    0 ERR    2513 (1355) WRD   (S:697,O:0,L:54,M:1977,U:35)


@DDT

0;T   B1.
IDENT.   MACCD   2457

;T   B2.
IDENT.   UMCCD   5172

;U

%R   23250000   0
2325,0;R
240;F
CLEAR;U
$
BRS 16D;U
"APU:9BIN".$$
10^\   3
10000;A
;A;X
BIO 10;U
$$
BRS 17D;U
$
%F^L
.FILL
.SP
.EM 10
>AMES.
/IT IS NOT PROPER TO USE THEIR EXACT NAMES OR MENTION THEIR WHEREABOUTS IN THIS
DOCUMENT, HOWEVER, AS EXPERIENCE HAS SHOWN THAT THEY CHANGE NAMES
AND LOCATIONS TOO OFTEN TO INCORPORATE PERMANENTLY INTO INSTRUCTIONS SUCH AS THESE.
       /THE ACTUAL ^CICL IS PRODUCED WITH A SIMPLE 940 PROGRAM
CALLED "^CMAKE-ICL".  /THIS PROGRAM EXISTS ONLY IN SOURCE, SO IT MUST
BE ASSEMBLED WITH ^CNARP AND LOADED WITH ^CDDT BEFORE IT CAN BE
RUN.
/EXPERIENCE HAS SHOWN THAT IT IS A GOOD IDEA TO LIST OUT THE
SOURCE BEFORE ASSEMBLING IT TO SEE IF THE SOURCE IS COMPATIBLE WITH THAT SOFTWARE
BEING PLACED INTO THE ^CICL.  /USUALLY CHANGES IN THE SOFTWARE
DICTATE RELOCATING SOME PAGES OR CHANGING THE NUMBER OF PAGES
BEING COPIED FROM VARIOUS FILES.
/THE FOLLOWING SHOWS HOW THIS PROGRAM BEHAVES WHEN IT IS RUN:
.SP
.RM 10
^U@DDT
.SP
;T   BMAKE-ICL.

IDENT.   02X   622
.SP
START;G
.SP
RUNNING TABLE: RT.

CONTEXT BLOCK: CB.

MIB: MIB.

MONITOR: MONITOR.

LISTENER: LISTENER.

APU CODE: APU.

NEW ICL FILE: "NEW-ICL".
.SP
DONE.

%F^L
.SP
.EM 10
       /THE VARIOUS FILES NAMED IN THE PRECEDING TRANSACTION WHICH ARE THE CONSTITUENTS OF THE ^CICL ARE
THEMSELVES MADE IN DIFFERENT WAYS.  /WE CONSIDER FIRST THE ^CMONITOR FILES.
/THE ^CMONITOR IS COMPILED WITH A SPECIAL VERSION OF ^CSPL CALLED
HERE "^CMSPL".  /THE ^CMONITOR SOURCE EXISTS IN 9 SEPARATE PACKAGES
WHICH ARE READ IN AND COMPILED INTO A DUMP FILE.  /THE DUMP FILE
IS THEN SEPARATED INTO SEVERAL OF THE ^CICL-^ECONSTITUENT FILES BY MEANS
OF ^CBXFER, WHICH EXISTS AS A ^CQSPL BINARY FILE AND MUST BE LOADED
AND RUN BY ^CQRUN.
.SP
.RM 10
^U@MSPL
.SP
SPL VERSION 1.1  (7^/5^/73)
.SP
:.B 610000B

610 MS 16 PAGE FAULTS

:.S E 8

0 MS 0 PAGE FAULTS

:R COMN

1569 LINES = 0 WORDS

:R SPCL

247 LINES = 0 WORDS

:R TRAP

158 LINES = 0 WORDS

:R PMS

1309 LINES = 0 WORDS

:R IWS

649 LINES = 0 WORDS

:R FLS

1433 LINES = 0 WORDS

:R CHIO

247 LINES = 0 WORDS

:R SPS

747 LINES = 0 WORDS

:R STRT

330 LINES = 0 WORDS

:.C

943100 MS 11001 PAGE FAULTS

:.P

150584-18224=132360 WORDS

19701 MS 497 PAGE FAULTS

:.D "DMONITOR"

84 PAGES

10985 MS 93 PAGE FAULTS

:.L M

MONITOR RING

.NOFILL
   WGS 10 OF 600160-602777   RSGS 3010 OF 604000-607777
   CS 610000-652331
250 MS 1 PAGE FAULTS
:.F
@QRUN

;T   BXFER.
IDENT.   06X   1713

.EM 1
 .GET;G
.RM 1

DUMP FILE: DMONITOR.
DATA FILE: "CB".

VIRTUAL ADDRESS: 600000B
NUMBER OF PAGES: 1.

OK

.EM 1
 .GET;G
.RM 1

DUMP FILE: DMONITOR.
DATA FILE: "MONITOR".

VIRTUAL ADDRESS: 604000B
NUMBER OF PAGES: 10.

OK

.EM 1
 .GET;G
.RM 1

DUMP FILE: DMONITOR.
DATA FILE: "MIB".

VIRTUAL ADDRESS: 710000B
NUMBER OF PAGES: 1.

OK

%F^L
.FILL
.EM 10
       /IT IS NECESSARY TO RECOMPILE PART OF THE ^CMONITOR
WITH OLD ^CSPL SO THAT THE RESIDENT TABLES CAN BE INITIALIZED BY
RUNNING THE FUNCTION ^CINIT'CHT.
/OLD ^CSPL IS A 940 DUMP FILE.  /BEFORE IT CAN BE ^CRECOVER^EED, IT
IS NECESSARY TO LINK ^CDDT:^CPCMD TO #2:^CEMULATOR:^CPIF AND 
^CDDT:^C9SUB TO #2:^CDDT:^C9SUB.
/THEN:
.SP
.NOFILL
.RM 10
^U@RECOVER OLD-SPL JACK

40;B
BRS 146D;U
$
M1MODE/    1   0
%!
.EM 1
 .SPL;G

 SPL 8-27.50

 :.A 2
 250 MS
 :.B 610000B
 2616 MS
 :R COMN
 1591 LINES = 18608 WORDS
 :R SPCL
 247 LINES = 1884 WORDS
 :R STRT
 323 LINES = 3084 WORDS
 :.C

 CHTD COMPILING
 0 ERRORS 6R0W2836M 0 WGS 13 RSGS
 .
 .
 .
 :- INIT'CHT()
 COMPILE 1-GO

 EXIT TASK 1
 -:.D "XMON"
 37 PAGES
 6266 MS
 :.F

 %F

 @QRUN

 ;T BXFER.
 IDENT.   06X   1713

 .GET;G

 DUMP FILE: XMON.
 DATA FILE: "RT".

 VIRTUAL ADDRESS: 664000B
 NUMBER OF PAGES: 1.

 OK

 %F^L
.FILL
.SP
.EM 9
/THIS COMPLETES THE ^CMONITOR^E-RELATED FILES.
       /THE ^CLISTENER IS MADE USING YET ANOTHER VERSION OF ^CSPL
FOR COMPILING CODE IN THE /UTILITY RING.  /THIS VERSION IS
CALLED HERE "^CUSPL".
/THE FOLLOWING SHOWS HOW IT IS DONE:
.SP
.RM 10
.NOFILL
^U@USPL

SPL VERSION 1.1 (7^/5^/73)

:.B 435000B
610 MS 16 PAGE FAULTS
:.S E 5
0 MS 0 PAGE FAULTS
:.Z S
0 MS 0 PAGE FAULTS
:.R LISTENER
1815 LINES = 0 WORDS
:.C
91459 MS 1117 PAGE FAULTS
:.P
43386-8177=35209 WORDS
5290 MS 131 PAGE FAULTS
:.D "DLISTENER"
28 PAGES
3652 MS 34 PAGE FAULTS
:.L M
UTILITY RING
   WGS 1726 OF 403200-406777   RSGS 711 OF 434000-434777
   CS 435000-446034
0 MS 1 PAGE FAULTS
:-O/$403012B
2435520B
-:.F
@QRUN

;T   BXFER.
IDENT.   06X   1713

.EM 1
 .GET;G

 DUMP FILE: DLISTENER.
 DATA FILE: "LISTENER".

 VIRTUAL ADDRESS: 434000B
 NUMBER OF PAGES: 3.

 OK

 %F^L
.FILL
.EM 9
       /IT IS NECESSARY TO MODIFY THE SUB-PROCESS ENTRY-POINT
CONTENTS OF THE ^CCB FILE MADE PREVIOUSLY TO BE COMPATIBLE WITH THE
^CLISTENER JUST COMPILED.  /THAT IS WHY THE CONTENTS OF 403012/B
WAS JUST EXAMINED.  /THIS IS DONE AS FOLLOWS:
.SP
.NOFILL
.RM 10
^U@DDT

CLEAR;U
$
BRS 15D;U
CB.$$
10^\   3
4000;A
;A;X
BIO 10;U
$$
BRS 17D;U
$
7012B[   2435620   2435520
CLEAR;U
$
BRS 16D;U
CB.$$
4000;A
;A;X
BIO 10;U
$$
BRS 17D;U
$
%F^L
.FILL
.SP
.EM 10
       /FINALLY, IT IS NECESSARY TO MAKE THE ^CAPU CODE FILE.
/A SPECIAL VERSION OF ^CNARP CALLED ^CAPUAS IS USED TO ASSEMBLE
THE SOURCE LANGUAGE.  ^CAPUAS IS A 940 DUMP FILE.  /THE SOURCE FILE
ACTUALLY CONTAINS TWO PROGRAM PACKAGES WHICH MUST BE SEPARATELY
ASSEMBLED.  /THE FOLLOWING SCRIPT SHOWS THE ENTIRE PRODUCTION PROCESS:
.SP
.RM 10
.NOFILL
^U@QED

*READ FROM AMC04.
18766 WORDS.
*1,:UMCCD:-1WRITE ON "AMCCD".
11147 WORDS.
*:UMCCD:,$WRITE ON "UMCCD".
7620 WORDS.
*FINISHED.

@REC APUAS

SOURCE FILE:  AMCCD.
OBJECT FILE:  "B1".

AMCCD   IDENT
AMCCD COMPILING
HALF WAY


50 SEC    0 ERR    2457 (1327) WRD   (S:670,O:0,L:62,M:1977,U:0)


@CONT
#2:NARP.GL  TRANS-MIT-TING TRANS-MIT-TED THERE-FORE SYNCH-RONIZ-ATION
.GL SUB-TRACT-ED RE-SEND
.GL  WAIT-ING VERI-FIES TRANS-MIT TRANS-MIS-SION SYNCH-RON-IZED
.GL SIMUL-TANEOUS-LY SEC-OND-ARY RE-SYNC RE-PEAT-ING
.GL RE-CEIV-ING RE-CEIV-ER RE-CEIVE PLAC-ING FOL-LOW-ING
.GL DES-CRIBES CON-TIN-UOUS CON-STANT-LY COM-MUNI-CATES
.GL CHAR-ACTER ASYNCH-RON-OUS ASSOC-IATED ANY-WHERE
.GL ACTUAL-LY ACK-NOWLEDG-MENT
.SP 3
.CE
^USYNCHRONOUS COMMUNICATION PROTOCOL
.SP
.CE
FOR THE
.SP
.CE
BCC 500^/ELF DATA CONNECTION^L
.SP 4
1.0 ^CGENERAL
.SP
       /THE LINE WILL BE OPERATED WITH 8-BIT BYTES.
/ALTHOUGH THE LINE IS SYNCHRONOUS,
IT WILL BE USED BY THE SOFTWARE
AT EITHER END IN A PSEUDO-ASYNCHRONOUS FASHION.
/THAT IS, THE LINE INTERFACES WILL BE OPERATED TO IGNORE SYNC
CHARACTERS (^CSYNC).
/WHEN NO INFORMATION IS TO BE PASSED OR WHEN THE TRANSMITTING FUNCTION
AT EITHER END OF THE LINE IS LATE IN PRODUCING THE NEXT BYTE FOR
TRANSMISSION, A ^CSYNC (026/B) WILL BE SENT AUTOMATICALLY BY THE
SENDING INTERFACE.
/THE SAME CHARACTER ON ARRIVAL AT THE RECEIVING INTERFACE WILL NOT
PRODUCE A SERVICE INTERRUPT AND SO WILL BE IGNORED.

       /SINCE ^CSYNC IS IGNORED, THE
COMBINATION 026/B MAY NOT BE SENT ON THE LINE,
AND THE LINE CANNOT BE USED FOR TRANSMITTING ARBITRARY INFORMATION.
/TO OVERCOME THIS LIMITATION THE PROTOCOL IS HEREBY
ESTABLISHED WHEREBY THE SPECIAL BYTE ^CDLE (020/B) WILL PRECEDE THE
TRANSMISSION OF AN 066 AND WILL ACT AS AN ESCAPE, SIGNIFYING THAT THE 
066 MUST HAVE 040/B SUBTRACTED FROM IT BEFORE
FURTHER INTERPRETATION.

       /THE DEDICATION OF ^CDLE FOR THIS PURPOSE MEANS THAT IT, TOO,
CANNOT BE SENT AS INFORMATION ON THE LINE.
/BUT THE SAME CONVENTION MAY BE USED TO SEND THE VALUE 020: THAT IS,
THE COMBINATION 020 060.
/TO SUMMARIZE, ANY 8-BIT BYTE MAY BE SENT ON THE LINE AT THE CONVENIENCE
OF THE SENDER EXCEPT ^CSYNC AND ^CDLE.
/OF THESE, ^CSYNC IS RESERVED FOR TRANSMISSION DURING IDLE TIME
AND ^CDLE IS USED TO INDICATE THAT THE FOLLOWING BYTE REQUIRES A SUBTRACTION
OF 040/B.
/THE BYTE 026 THUS APPEARS ON THE LINE AS 020 066, AND 020 APPEARS
AS 020 060.
.EJ
2.0  ^UCHARACTER FRAMING SYNCHRONIZATION^L
.SP
       /THE LINE IS SHORT AND DOES NOT INVOLVE MODEMS AND TRANSMISSION
FACILITIES.
/THE EXPECTED ERROR RATE WILL THEREFORE BE SMALL.
/IN PARTICULAR, THE LOSS OF CLOCKS OR OTHER UNTOWARD EVENTS WHICH
MIGHT CAUSE LOSS OF CHARACTER SYNC WILL BE MOST INFREQUENT.
/THE ACTION OF LINE SYNCHRONIZATION WILL BE UNDERTAKEN SELDOM -- 
USUALLY ONLY WHEN RESTARTING THE MACHINE AT EITHER END OF THE LINE.

       /THE ACTUAL ACT OF SYNCHRONIZATION IS INITIATED BY PLACING
A RECEIVER IN "SEARCH MODE."
/IN THIS MODE THE RECEIVER CEASES TO FUNCTION AS SUCH, BUT COMPARES
AT EACH NEW BIT TIME THE LAST 8 BITS RECEIVED WITH THE SYNC CHARACTER.
/WHEN AT MOST TWO SUCH CHARACTERS ARE RECEIVED SUCCESSIVELY, CHARACTER
FRAMING IS ESTABLISHED AND THE RECEIVER REVERTS TO NORMAL ACTIVITY.

       /THE ESTABLISHMENT OF SYNC DOES REQUIRE THE COOPERATION OF
THE OTHER END OF THE LINE.
/TO OBTAIN THIS COOPERATION IN TURN REQUIRES A SIGNALLING SCHEME.
/BY CONVENTION, THEN, WHEN EITHER END OF THE LINE IS INITIALIZED OR
OTHERWISE DETERMINES THAT IT HAS LOST CHARACTER SYNC, THE FOLLOWING
PROCEDURE WILL BE EMPLOYED:
.RM 3,3
.SP 3
^I/REMARKS:  /THAT END OF THE LINE FIRST NOTICING LOSS OF SYNC IS
CALLED ^ISYNCEE; IT IS ACTUALLY THE INITIATOR OF THE PROCEDURE.
/THE OTHER END OF THE LINE IS, OF COURSE, THE ^ISYNCER AND MUST
COOPERATE WITH THE SYNCEE IN ORDER TO ESTABLISH SYNC.
/THERE IS A CHANCE THAT BOTH ENDS OF THE LINE WILL SEE LOSS OF
SYNC SIMULTANEOUSLY AND THAT EITHER END WILL THINK ITSELF TO BE
SYNCEE.
/THIS GIVES RISE TO A POSSIBLE RACE CONDITION.
/THE CHANGE OF SUCH A RACE
IS REDUCED BY HAVING EACH END WAIT A DIFFERENT AMOUNT OF
TIME BEFORE INITIATING ACTION.
/THE RACE WILL THUS OCCUR WITH SMALL ODDS AND IN ANY EVENT IS
NON-CRITICAL.
/NOTE THAT IN THE SCHEME BELOW BOTH DIRECTIONS OF TRANSMISSION ARE
ALWAYS SYNCHRONIZED.
.SP 3
^I/PROCEDURE:
.SP
.RM 3,3
.RM 5
.UN 5
1.  /SYNCEE IMMEDIATELY SUSPENDS /I^//O OPERATIONS, SETS REQUEST
TO SEND, COUNTS TO 1000, AND SENDS CONTINUOUS SYNCS.
/SYNCEE THEN VERIFIES AT LAST MOMENT THAT SECONDARY RECEIVE IS LOW AND
ISSUES SECONDARY TRANSMIT, WAITING FOR SECONDARY RECEIVE AS A RESPONSE.

.SP
.UN 5
2.  /SYNCER SEES SECONDARY RECEIVE AND SUSPENDS /I^//O OPERATIONS.
/SYNCER RESYNCS ITS RECEIVER, SENDS REQUEST TO SEND, AND SENDS CONTINUOUS
SYNCS.
/SYNCER THEN RAISES SECONDARY TRANSMIT AND WAITS FOR LOSS OF SECONDARY
RECEIVE.
.SP
.UN 5
3.  /SYNCEE SYNCS ITS RECEIVER, PREPARES TO RECEIVE INFORMATION, AND
LOWERS SECONDARY TRANSMIT.
/IT WAITS FOR LOSS OF SECONDARY RECEIVE.
.SP
.UN 5
4.  /SYNCER PREPARES TO RECEIVE INFORMATION, DROPS SECONDARY TRANSMIT,
AND RESUMES TRANSMISSIONS.
.SP
.UN 5
5.  /SYNCEE RESUMES TRANSMISSIONS.
.EM 8,3
.SP 2
       /IT IS IMPORTANT THAT THE SYNCEE CHECK ITS OWN SECONDARY
RECEIVE IMMEDIATELY BEFORE REQUESTING A RESYNC.
/IF IT FINDS THE LINE HIGH, THEN IT MUST INSTEAD PLAY THE ROLE OF
SYNCER.
.SP 3
.EM 3,3
       /THE REQUEST^/CLEAR TO SEND SIGNALS WERE DESIGNED FOR SIGNALLING
WITH HALF-DUPLEX MODE SITUATIONS.
/THESE SIGNALS ARE NOT ESPECIALLY USEFUL FOR OUR INTENDED USE OF THE
LINE.
/HOWEVER, THE SIGNALS DO AFFECT THE OPERATION OF THE LINE INTERFACES
AND SO SHOULD BE KEPT PERMANENTLY ON.
/IF IT IS USEFUL INFORMATION AT ANY TIME, HOWEVER, THE LACK OF A CLEAR
TO SEND SIGNAL AT EITHER END OF THE LINE IS CLEAR EVIDENCE OF THE
OTHER END'S BEING NOT ACTIVE.
/THE CONVERSE IS, OF COURSE, NOT NECESSARILY TRUE.
.EJ
3.0  ^UINITIATING SYNC IN THE 500^L
.SP
       /THE PROGRAM TO INITIATE AND ESTABLISH SYNC ON THE LINE AT THE
500 END WILL RESIDE IN ^CCTP CODE IN THE ^CCHIO.
/THE ^CCTP IS A CONVENIENT PROCESSOR FOR SUCH CODE BECAUSE IT IS ACTUALLY
A PART OF THE ^CCHIO AND HAS READY ACCESS TO THE ^CCHIO DATA STRUCTURES
AND /I^//O HARDWARE.
/THE ^CCTP WILL RUN A LITTLE RESIDENT PROGRAM CONTAINING MISCELLANEOUS
TASKS RELATING TO VARIOUS DEVICES CONNECTED TO THE ^CCHIO.
/THE SYNCHRONIZATION TASK IS ONE OF THESE.

       /SYNCHRONIZATION WILL BE INITIATED BY A USER PROCESS (THE ^CFTP
PROCESS) UPON INITIATION OR WHENEVER THE PROCESS BELIEVES THE LINE TO
BE OUT OF SYNC.
/THE ^CFTP PROCESS COMMUNICATES WITH THE SYNCHRONIZATION TASK IN THE
^CCTP THROUGH A SPECIAL PSEUDO-TERMINAL LINE, I.E., A ^CCHIO LINE
NOT ASSOCIATED WITH ANY REAL LINE HARDWARE (JUST ENTRIES IN THE
VARIOUS BIT TABLES).
/THE ^CFTP "ACQUIRES" THIS LINE AND THEN OUTPUTS A COMMAND ON IT.
/THE ^CCTP TASK PERIODICALLY READS THE LINE AND THUS PICKS UP THE
COMMAND.
/RESPONSES ARE RETURNED THROUGH THE OTHER HALF OF THE LINE.

       /THE EXACT COMMANDS AND THEIR ASSOCIATED RESPONSES AND THEIR
FORMATS WILL BE SPELLED OUT IN A SEPARATE DOCUMENT.

.EJ
4.0  ^UERROR DETECTION AND RECOVERY PROCEDURES^L

.SP
       /SPECIFICATION /S-1 GIVES THE BASIC DATA FORMAT ON THE LINE
AND DESCRIBES THE FLOW CONTROL.
/THIS APPROACH WAS DEVELOPED FOR USE WITH THE /D/J-11 ASYNCHRONOUS
LINE INTERFACE WHICH MAY RUN AT RATES UP TO 9600 BPS.
/THE SYNCHRONOUS LINE WILL RUN AT RATES UP TO 38.4 /KBPS BUT MAY BE
MORE SUBJECT TO ERROR, ESPECIALLY IF A CLOCK IS MISSED.
/THIS SECTION DESCRIBES A MODIFICATION (ACTUALLY AN ENHANCEMENT) OF
THE DATA FORMAT^/FLOW CONTROL OUTLINES IN /S-1.

       /WHEREAS /S-1 MENTIONS FOUR 30-CHARACTER BUFFERS, THE SYNCHRONOUS
LINE WILL UTILIZE A GREATER NUMBER OF BUFFERS, EACH OF WHICH IS LARGER
THAN 30 CHARACTERS.  /THE ACTUAL NUMBERS WILL HAVE TO BE DETERMINED
BY NEGOTIATION WITH ^CELF EXPERTS, BUT IN ORDER TO MAINTAIN A
TRANSMISSION RATE ANYWHERE NEAR THE 38.4 /KPBS RATE
A TOTAL OF AT LEAST TWO SECOND'S WORTH OF TRANSMISSION MUST BE
BUFFERED.  
/THAT IS, AT 4800 CHARACTERS^/SEC, ABOUT 10/K BYTES.
/INSTEAD OF A 16-BIT BINARY COUNT OF THE NUMBER OF CHARACTERS IN A
BUFFER-LOAD PRECEDING THE BUFFER ON THE LINE, EACH BUFFER ON THE
SYNCHRONOUS LINE WILL BE PRECEDED BY A 16-BIT HEADER WORD AND
FOLLOWED BY A 16-BIT CYCLIC CHECK SUM.

       /THE HEADER WORD WILL CONSIST OF AN 8-BIT BINARY CHARACTER
COUNT (AS BEFORE EXCEPT NOW THE FIRST OF THE TWO BYTES) AND AN 8-BIT
BINARY BUFFER /I./D. NUMBER.
/DURING TRANSMISSIONS THE NUMBER OF EACH BUFFER WILL BEGIN WITH 128
AND INCREASE UP TO 255 BEFORE REVERTING TO 128 AND REPEATING.

       /THE CHECK SUM WILL BE TRANSMITTED AS TWO 8-BIT BINARY BYTES,
MORE SIGNIFICANT BYTE FIRST.
/THE CHECK SUM WILL BE FORMED AS FOLLOWS:  /EACH NEW CHARACTER PLACED
IN A BUFFER WILL BE /E/O/RED WHILE RIGHT-JUSTIFIED IN A 16-BIT REGISTER
WITH THE PRECEDING VALUE OF THE CHECK SUM.
/THEN THIS NEW VALUE WILL BE LEFT CYCLED 5 PLACES TO FORM THE CURRENT
VALUE OF THE CHECK SUM.
/AFTER THE APPROPRIATE N CHARACTERS THE RESULT IS THE BUFFER CHECKSUM.

       /EACH BUFFER TRANSMITTED WILL REQUIRE A POSITIVE ACKNOWLEDGMENT
AND AN /I./D. CHECK FROM THE RECEIVING END.
/FLOW CONTROL WILL BE IMPLICIT IN THESE ACKNOWLEDGMENTS.

       /AS IN /S-1, THREE 200 (OCTAL) BYTES WILL BE SENT BY THE RECEIVING
END AT THE BEGINNING OF DATA TRANSFER TO INDICATE START OF TRANSMISSION.
/SIMILARLY AT THE END OF TRANSMISSION A SINGLE 203 BYTE WILL BE SENT
AS VERIFICATION THAT THE RECEIVING ^CDTP HAS TERMINATED.
/IF FOR ANY REASON THE RECEIVING ^CDTP TERMINATES PREMATURELY, A SINGLE
204 BYTE WILL BE SENT AS NOTIFICATION.
/APPROPRIATE MESSAGES WILL SIMULTANEOUSLY FLOW ON THE CONTROL LINE.
/THE 201 AND 202 BYTES WILL, HOWEVER, EACH BE FOLLOWED BY AN /I./D.
NUMBER AND, WHILE STILL SERVING TO PERFORM FLOW CONTROL, WILL ALSO
ACT AS ACKNOWLEDGMENT MESSAGES.

       201 WILL MEAN POSITIVE ACKNOWLEDGMENT FOR BUFFER N; BUFFER
RECEIVED CORRECTLY AND THERE IS NOW ROOM FOR ANOTHER BUFFER
LOAD.
202 WILL MEAN POSITIVE ACKNOWLEDGMENT FOR BUFFER N KNOWN TO BE THE
LAST BUFFER; ^CDTP ACTIVITY WILL THEREFORE CEASE WITH THIS BUFFER.
205 WILL BE A NEGATIVE ACKNOWLEDGMENT FOR BUFFER N; BUFFER RECEIVED IN
ERROR; RESEND, AS THERE IS NOW ROOM TO RECEIVE.

       /WHEN A 205 IS RECEIVED, OR WHEN SOME SEQUENCE ERRORS ARE NOTED
THE RECOVERY PROCEDURE WILL WORK AS FOLLOWS.  /THE PROCEDURE IS
DESIGNED FOR SIMPLICITY AND IS BASED ON THE EXPECTED LOW ERROR RATE.
/WE DISCUSS CHECK SUM ERRORS AND SEQUENCE ERRORS SEPARATELY.
/FIRST, CHECK SUM ERRORS.

       /THE SENDING PROCESS WILL RETAIN A COPY OF THE TRANSMITTED BUFFER
LOAD UNTIL THE ACKNOWLEDGMENT HAS BEEN RECEIVED.
/AT THAT TIME IF IT IS NEGATIVE, THE SENDING ^CDTP WILL REJECT AND
FLUSH FROM ITS BUFFER SPACE ALL BUFFERS RECEIVED AFTER A DEFECTIVE ONE
UNTIL THAT BUFFER REAPPEARS.
/NO ACKNOWLEDGMENTS WILL BE SENT FOR THE REJECTED BUFFERS.
> .
/SYNCER THEN RAISES SECONDARY TRANSMIT AND WAITS FOR LOSS OF SECONDARY
RECEIVE.
.SP
.UN 5
3.  /SYNCEE SYNCS ITS RECEIVER, PREPARES TO RECEIVE INFORMATION, AND
LOWERS SECONDARY TRANSMIT.
/IT WAITS FOR LOSS OF SECONDARY RECEIVE.
.SP
.UN 5
4.  /SYNCER PREPARES TO RECEIVE INFORMATION, DROPS SECONDARY TRANSMIT,
AND RESUMES TRANSMISSIONS.
.SP
.UN 5
5.  /SYNCEE RESUMES TRANSMISSIONS.
.EM 8,3
.SP 2
       /IT IS IMPORTANT THAT THE SYNCEE CHECK ITS OWN SECONDARY
RECEIVE IMMEDIATELY BEFORE REQUESTING A RESYNC.
/IF IT FINDS THE LINE HIGH, THEN IT MUST INSTEAD PLAY THE ROLE OF
SYNCER.
.SP 3
.EM 3,3
       /THE REQUEST^/CLEAR TO SEND SIGNALS WERE DESIGNED FOR SIGNALLING
WITH HALF-DUPLEX MODE SITUATIONS.
/THESE SIGNALS ARE NOT ESPECIALLY USEFUL FOR OUR INTENDED USE OF THE
LINE.
/HOWEVER, THE SIGNALS DO AFFECT THE OPERATION OF THE LINE INTERFACES
AND SO SHOULD BE KEPT PERMANENTLY ON.
/IF IT IS USEFUL INFORMATION AT ANY TIME, HOWEVER, THE LACK OF A CLEAR
TO SEND SIGNAL AT EITHER END OF THE LINE IS CLEAR EVIDENCE OF THE
OTHER END'S BEING NOT ACTIVE.
/THE CONVERSE IS, OF COURSE, NOT NECESSARILY TRUE.
.EJ
3.0  ^UINITIATING SYNC IN THE 500^L
.SP
       /THE PROGRAM TO INITIATE AND ESTABLISH SYNC ON THE LINE AT THE
500 END WILL RESIDE IN ^CCTP CODE IN THE ^CCHIO.
/THE ^CCTP IS A CONVENIENT PROCESSOR FOR SUCH CODE BECAUSE IT IS ACTUALLY
A PART OF THE ^CCHIO AND HAS READY ACCESS TO THE ^CCHIO DATA STRUCTURES
AND /I^//O HARDWARE.
/THE ^CCTP WILL RUN A LITTLE RESIDENT PROGRAM CONTAINING MISCELLANEOUS
TASKS RELATING TO VARIOUS DEVICES CONNECTED TO THE ^CCHIO.
/THE SYNCHRONIZATION TASK IS ONE OF THESE.

       /SYNCHRONIZATION WILL.GL  UNI-VERS-ITY PROCES-SOR COM-PUT-ING
.GL  CO-RESPONS-I-BIL-ITY AUX-IL-IARY
.GL  SPEC-IFI-CA-TIONS SCHEDUL-ING RE-SEARCH PAR-TI-CI-PAT-ED
.GL LAB-ORA-TORY LAB-ORA-TORIES ENGIN-EER-ING DUR-ING
.GL COM-PUT-ERS ASSIS-TANTS
.GL  ONE-THIRD MULTI-PROCES-SOR
.GL  TRANS-FERRED SYS-TEMS RES-PONS-IBLE PROTO-TYPE
.GL MAIN-TE-NANCE IN-VES-TI-GATOR COM-MITTEE CHECK-OUT
.GL AD-VISORY
.PM OFF
.SP 4
.CE
^C^IRESUME
.SP 3
/W. /WAYNE /LICHTENBERGER              /MARRIED, 2 CHILDREN

965 /PROSPECT /STREET #510            5' 9" - 150 POUNDS

/HONOLULU, /HAWAII 96822              /U./S. /CITIZEN

(808) 524-3841                      /BORN /SEPTEMBER 25, 1933
.SP 3
.CE
^C^IEDUCATION
.SP
.CE
/B./S./E./E.  /UNIVERSITY OF /ILLINOIS, /URBANA  1955
.SP
.CE
/M./S./E./E.  /UNIVERSITY OF /ILLINOIS, /URBANA  1956
.SP
.CE
/PH./D.     /UNIVERSITY OF /ILLINOIS, /URBANA  1961
.SP 3
.CE
^C^IEXPERIENCE
.SP
/AUGUST 1971 - /PRESENT     ^-/UNIVERSITY OF /HAWAII
.IN 26
/HONOLULU, /HAWAII
.SP
.RM 5
^-/PROFESSOR, /DEPARTMENT OF /ELECTRICAL /ENGINEERING

/AUGUST 1971 - PRESENT
.SP
^I/TEACHING:  /RESPONSIBLE FOR ALL GRADUATE INSTRUCTION IN COMPUTING.
/RESPONSIBLE FOR UNDERGRADUATE COURSES IN COMPUTER ARCHITECTURE,
MACHINE-LANGUAGE PROGRAMMING, SYSTEMS PROGRAMMING, AND SENIOR PROJECTS
IN COMPUTING.  /FULL-TIME DUTIES.

.SP
^I/RESEARCH:  /DIRECTOR OF /COMPUTER /SYSTEMS /EFFORT, ^CTHE
^CALOHA ^CSYSTEM /PROJECT (^CNASA /CONTRACT /N/A/S2-6700,

$1,563,000
OUT OF $2,572,000), 1971-1974.  /PRINCIPAL /INVESTIGATOR, /RESEARCH IN
/SECURED /MULTIPROCESSOR /COMPUTING /SYSTEMS (^CNASA /CONTRACT ^CNAS2-8600,
$481,226), 1974-1976.  /PRINCIPAL /INVESTIGATOR, /COMMUNICATIONS
/PROCESSOR /DESIGN AND /IMPLEMENTATION (^CNASA /CONTRACT ^CNAS2-9175,
$138,936), 1976-1977.

.SP
^I/SERVICE:  /DIRECTOR, /COMPUTING /FACILITY, /DEPARTMENT OF /ELECTRICAL
/ENGINEERING.  /RESPONSIBLE FOR OPERATION, MAINTENANCE, AND CONTINUING
DEVELOPMENT OF THE MULTIPROCESSOR ^CBCC-500 SYSTEM.
.SP
^I/COMMITTEES:  /DEPARTMENT UNDERGRADUATE CURRICULUM COMMITTEE, DEPARTMENT
PERSONNEL COMMITTEE, DEPARTMENT ADVISORY COMMITTEE, /COMPUTING /CENTER
ADVISORY COMMITTEE, STATEWIDE ACADEMIC COMPUTING ADVISORY COMMITTEE.
.SP 2
.UN 5
/JUNE 1971 - /AUGUST 1971   ^-/COMPUTER /SCIENCES /CORPORATION

.IN 21
/LOS /ALTOS, /CALIFORNIA
.SP
^-/SENIOR /SCIENTIST

/LED A GROUP OF FIVE INDIVIDUALS IN INITIAL PLANNING EFFORTS FOR THE
^CILLIAC /I/V OPERATING SYSTEM.  /THIS WAS A TEMPORARY POSITION BY
ARRANGEMENT, ALTHOUGH IT COULD HAVE BEEN MORE PERMANENT, HAD /I SO
CHOSEN.
.SP 2
.UN 5
/MARCH 1969 - /MAY 1971     ^-/BERKELEY /COMPUTER /CORPORATION
.IN 21
/BERKELEY, /CALIFORNIA
.RM 5,5
.SP
(^CBCC WAS ESTABLISHED AS A DEVELOPMENT EFFORT IN LARGE, ON-LINE
MULTIPLE-ACCESS COMPUTER SYSTEMS WITH A VIEW TOWARD MARKETING
BOTH SYSTEMS AND LARGE BLOCKS OF TIME ON SAME.
/THE COMPANY WAS FORCED TO SUSPEND OPERATIONS BY A LACK OF AVAILABLE
CAPITAL.
/A PROTOTYPE SYSTEM, WHICH HAD BEEN BUILT AT THAT POINT, WAS SUBSEQUENTLY
TRANSFERRED TO THE /UNIVERSITY OF /HAWAII WHERE IT HAS BEEN OPERATED SINCE.)
.EM 5,5
.SP
^-/SECRETARY-/TREASURER, /ASSISTANT TO THE /PRESIDENT, /MEMBER OF THE
^-/BOARD OF /DIRECTORS

/ONE OF FIVE FOUNDERS OF THE COMPANY.
/RESPONSIBLE FOR ACQUIRING INITIAL FACILITIES AND EQUIPMENT.
/RESPONSIBLE FOR LEGAL ARRANGEMENTS RELATED TO ESTABLISHING AND INITIAL
FINANCING OF THE COMPANY, INCLUDING PREPARATION OF AN /S-2 REGISTRATION
FOR A PUBLIC OFFERING OF COMPANY SECURITIES.
/MUCH OF THIS RESPONSIBILITY WAS LATER TRANSFERRED TO OTHER PERSONNEL
AS THEY WERE ACQUIRED, AND EFFORTS WERE THEN DIRECTED TOWARD ACQUISITON,
CHECK-OUT, AND INSTALLATION OF ALL ROTATING AUXILIARY MEMORY ASSOCIATED
WITH THE ^CBCC 500 SYSTEM (ABOUT ONETHIRD OF THE SYSTEM).
/THIS INCLUDED TWO DRUM MEMORY UNITS, ONE LARGE DISK FILE, AND ALL
ASSOCIATED READ^/WRITE ELECTRONICS.
.SP 2
.UN 5
/SEPT. 1963 - /FEB. 1969    ^-/UNIVERSITY OF /CALIFORNIA
.IN 21
/BERKELEY, /CALIFORNIA
.SP
^-/ASSOCIATE /PROFESSOR, /DEPARTMENT OF /ELECTRICAL /ENGINEERING AND
^-/COMPUTER /SCIENCES^E - /JULY 1967 - /JUNE 1969
.SP
^I/TEACHING:  /RESPONSIBLE FOR THREE-QUARTER-SEQUENCE COURSE IN LOGIC
DESIGN AND COMPUTER ORGANIZATION AT UPPER DIVISION LEVEL, INCLUDING
ASSOCIATED LABORATORIES.
/HALF-TIME DUTIES.
.SP
^I/RESEARCH:  /FACULTY INVESTIGATOR, /PROJECT ^CGENIE.
/CORESPONSIBILITY FOR ADMINISTRATION OF RESEARCH PROJECT OF 35
COMPUTER PROFESSIONALS AND GRADUATE ASSISTANTS WITH A THREE-MILLION-DOLLAR
BUDGET.
/RESPONSIBLE FOR PRELIMINARY LOGIC DESIGN AND SPECIFICATIONS FOR
AUXILIARY MEMORY PORTION OF LARGE COMPUTER SYSTEM UNDER A DESIGN
CONTRACT WITH ^CARPA (/DO/D).
.SP
^I/COMMITTEES:  /DEPARTMENT CURRICULUM COMMITTEE, SCHEDULING COMMITTEE;
/ELECTRONICS /RESEARCH /LABORATORY /ADVISORY /COMMITTEE;
/DEPARTMENT DOCTORAL PRELIMINARY EXAMINATION COMMITTEE;  /CHANCELLOR'S
ADVISORY COMMITTEE ON COMPUTERS ON THE /BERKELEY CAMPUS.
.SP
^-/LECTURER, /ACTING /ASSOCIATE /PROFESSOR, AND /ACTING /RESEARCH
^-/ENGINEER^E - /JULY 1965 - /JUNE 1967

/PRIMARILY WITH /PROJECT ^CGENIE, COMPLETING TIME-SHARING SYSTEM
IMPLEMENTATION (PROTOTYPE OF ^CXDS 940 SYSTEM).
/SUPERVISING SYSTEMS PROGRAMMING DURING FIRST HALF OF PERIOD AND
DEVELOPING AUXILIARY STORAGE FACILITIES DURING LATTER HALF.
.SP
^-/VISITING /ASSISTANT /PROFESSOR AND /VISITING /ASSISTANT /RESEARCH
^-/ENGINEER^E - /JULY 1963 - /JUNE 1965

/CO-DEVELOPER OF /PROJECT ^CGENIE ^CXDS 930 TIME-SHARING SYSTEM.
/WROTE EARLY /PROJECT SOFTWARE INCLUDING 930 SYSTEM MACRO-ASSEMBLER.
/SUPERVISED OTHER SOFTWARE AND PARTICIPATED IN DESIGN OF /PROJECT
HARDWARE.
/TAUGHT VARIOUS COURSES IN /ELECTRICAL /ENGINEERING INCLUDING LOGIC
DESIGN AND CIRCUIT THEORY.
.SP 2
.UN 5
/JUNE 1957 - /JUNE 1963     ^-/UNIVERSITY OF /ILLINOIS
.IN 21
/URBANA, /ILLINOIS
.SP
^-/ASSISTANT /PROFESSOR, /DEPARTMENT OF /ELECTRICAL /ENGINEERING AND
^-/ASSISTANT /RESEARCH /ENGINEER, /COORDINATED /SCIENCE /LABORATORY
- /FEB. 1961 - /JUNE 1963
.SP
/RESPONSIBLE FOR OPERATION AND DEVELOPMENT OF ^CCDC 1604 COMPUTER FACILITY
IN ^CCSL.
/SUPERVISED STAFF OF 10.
/REPORTED TO LABORATORY DIRECTOR.
.SP
^-/RESEARCH /ASSOCIATE, /COORDINATED /SCIENCE /LABORATORY^E - /JUNE
1957 - /FEB. 1961

/DID DOCTORAL RESEARCH IN LINEAR PROCESS IDENTIFICATION TOPICS; ONE OF
DESIGNERS OF ORIGINAL ^CPLATO PROJECT SYSTEM FOR ^CCAI.
/DESIGNED FLYING SPOT SCANNER AND VIDEO SWITCHING SYSTEM AND DID ALL
COMPUTER PROGRAMMING; PARTICIPATED IN SIDE-LOOKING RADAR STRIP MAPPING
PROJECT, DESIGNING ALL VIDEO CIRCUITS FOR STORAGE TUBE SIGNAL PROCESSOR;
DID OPTICAL SIMULATIONS OF RADAR MAPPING.
>  BERGER              /MARRIED, 2 CHILDREN

965 /PROSPECT /STREET #510            5' 9" - 150 POUNDS

/HONOLULU, /HAWAII 96822              /U./S. /CITIZEN

(808) 524-3841                      /BORN /SEPTEMBER 25, 1933
.SP 3
.CE
^C^IEDUCATION
.SP
.CE
/B./S./E./E.  /UNIVERSITY OF /ILLINOIS, /URBANA  1955
.SP
.CE
/M./S./E./E.  /UNIVERSITY OF /ILLINOIS, /URBANA  1956
.SP
.CE
/PH./D.     /UNIVERSITY OF /ILLINOIS, /URBANA  1961
.SP 3
.CE
^C^IEXPERIENCE
.SP
/AUGUST 1971 - /PRESENT     ^-/UNIVERSITY OF /HAWAII
.IN 26
/HONOLULU, /HAWAII
.SP
.RM 5
^-/PROFESSOR, /DEPARTMENT OF /ELECTRICAL /ENGINEERING

/AUGUST 1971 - PRESENT
.SP
^I/TEACHING:  /RESPONSIBLE FOR ALL GRADUATE INSTRUCTION IN COMPUTING.
/RESPONSIBLE FOR UNDERGRADUATE COURSES IN COMPUTER ARCHITECTURE,
MACHINE-LANGUAGE PROGRAMMING, SYSTEMS PROGRAMMING, AND SENIOR PROJECTS
IN COMPUTING.  /FULL-TIME DUTIES.

.SP
^I/RESEARCH:  /DIRECTOR OF /COMPUTER /SYSTEMS /EFFORT, ^CTHE
^CALOHA ^CSYSTEM /PROJECT (^CNASA /CONTRACT /N/A/S2-6700,

$1,563,000
OUT OF $2,572,000), 1971-1974.  /PRINCIPAL /INVESTIGATOR, /RESEARCH IN
/SECURED /MULTIPROCESSOR /COMPUTING /SYSTEMS (^CNASA /CONTRACT ^CNAS2-8600,
$481,226), 1974-1976.  /PRINCIPAL /INVESTIGATOR, /COMMUNICATIONS
/PROCESSOR /DESIGN AND /IMPLEMENTATION (^CNASA /CONTRACT ^CNAS2-9175,
$138,936), 1976-1977.

.SP
^I/SERVICE:  /DIRECTOR, /COMPUTING /FACILITY, /DEPARTMENT OF /ELECTRICAL
/ENGINEERING.  /RESPONSIBLE FOR OPERATION, MAINTENANCE, AND CONTINUING
DEVELOPMENT OF THE MULTIPROCESSOR ^CBCC-500 SYSTEM.
.SP
^I/COMMITTEES:  /DEPARTMENT UNDERGRADUATE CURRICULUM COMMITTEE, DEPARTMENT
PERSONNEL COMMITTEE, DEPARTMENT ADVISORY COMMITTEE, /COMPUTING /CENTER
ADVISORY COMMITTEE, STATEWIDE ACADEMIC COMPUTING ADVISORY COMMITTEE.
.SP 2
.UN 5
/JUNE 1971 - /AUGUST 1971   ^-/COMPUTER /SCIENCES /CORPORATION

.IN 21
/LOS /ALTOS, /CALIFORNIA
.SP
^-/SENIOR /SCIENTIST

/LED A GROUP OF FIVE INDIVIDUALS IN INITIAL PLANNING EFFORTS FOR THE
^CILLIAC /I/V OPERATING SYSTEM.  /THIS WAS A TEMPORARY POSITION BY
ARRANGEMENT, ALTHOUGH IT COULD HAVE BEEN MORE PERMANENT, HAD /I SO
CHOSEN.
.SP 2
.UN 5
/MARCH 1969 - /MAY 1971     ^-/BERKELEY /COMPUTER /CORPORATION
.IN 21
/BERKELEY, /CALIFORNIA
.RM 5,5
.SP
(^CBCC WAS ESTABLISHED AS A DEVELOPMENT EFFORT IN LARGE, ON-LINE
MULTIPLE-ACCESS COMPUTER SYSTEMS WITH A VIEW TOWARD MARKETING
BOTH SYSTEMS AND LARGE BLOCKS OF TIME ON SAME.
/THE COMPANY WAS FORCED TO SUSPEND OPERATIONS BY A LACK OF AVAILABLE
CAPITAL.
/A PROTOTYPE SYSTEM, WHICH HAD BEEN BUILT AT THAT POINT, WAS SUBSEQUENTLY
TRANSFERRED TO THE /UNIVERSITY OF /HAWAII WHERE IT HAS BEEN OPERATED SINCE.)
.EM 5,5
.SP
^-/SECRETARY-/TREASURER, /ASSISTANT TO THE /PRESIDENT, /MEMBER OF THE
^-/BOARD OF /DIRECTORS

/ONE OF FIVE FOUNDERS OF THE COMPANY.
/RESPONSIBLE FOR ACQUIRING INITIAL FACILITIES AND EQUIPMENT.
/RESPONSIBLE FOR LEGAL ARRANGEMENTS RELATED TO ESTABLISHING AND INITIAL
FINANCING OF THE COMPANY, INCLUDING PREPARATION OF AN /S-2 REGISTRATION
FOR A PUBLIC OFFERING OF COMPANY SECURITIES.
/MUCH OF THIS RESPONSIBILITY WAS LATER TRANSFERRED TO OTHER PERSONNEL
AS THEY WERE ACQUIRED, AND EFFORTS WERE THEN DIRECTED TOWARD ACQUISITON,
CHECK-OUT, AND INSTALLATION OF ALL ROTATING AUXILIARY MEMORY ASSOCIATED
WITH THE ^CBCC 500 SYSTEM (ABOUT ONETHIRD OF THE SYSTEM).
/THIS INCLUDED TWO DRUM MEMORY UNITS, ONE LARGE DISK FILE, AND ALL
ASSOCIATED READ^/WRITE ELECTRONICS.
.SP 2
.UN 5
/SEPT. 1963 - /FEB. 1969    ^-/UNIVERSITY OF /CALIFORNIA
.IN 21
/BERKELEY, /CALIFORNIA
.SP
^-/ASSOCIATE /PROFESSOR, /DEPARTMENT OF /ELECTRICAL /ENGINEERING AND
^-/COMPUTER /SCIENCES^E - /JULY 1967 - /JUNE 1969
.SP
^I/TEACHING:  /RESPONSIBLE FOR THREE-QUARTER-SEQUENCE COURSE IN LOGIC
DESIGN AND COMPUTER ORGANIZATION AT UPPER DIVISION LEVEL, INCLUDING
ASSOCIATED LABORATORIES.
/HALF-TIME DUTIES.
.SP
^I/RESEARCH:  /FACULTY INVESTIGATOR, /PROJECT ^CGENIE.
/CORESPONSIBILITY FOR ADMINISTRATION OF RESEARCH PROJECT OF 35
COMPUTER PROFESSIONALS AND GRADUATE ASSISTANTS WITH A THREE-MILLION-DOLLAR
BUDGET.
/RESPONSIBLE FOR PRELIMINARY LOGIC DESIGN AND SPECIFICATIONS FOR
AUXILIARY MEMORY PORTION OF LARGE COMPUTER SYSTEM UNDER A DESIGN
CONTRACT WITH ^CARPA (/DO/D).
.SP
^I/COMMITTEES:  /DEPARTMENT CURRICULUM COMMITTEE, SCHEDULING COMMITTEE;
/ELECTRONICS /RESEARCH /LABORATORY /ADVISORY /COMMITTEE;
/DEPARTMENT DOCTORAL PRELIMINARY EXAMINATION COMMITTEE;  /CHANCELLOR'S
ADVISORY COMMITTEE ON COMPUTERS ON THE /BERKELEY CAMPUS.
.SP
^-/LECTURER, /ACTING /ASSOCIATE /PROFESSOR, AND /ACTING /RESEARCH
^-/ENGINEER^E - /JULY 1965 - /JUNE 1967

/PRIMARILY WITH /PROJECT ^CGENIE, COMPLETING TIME-SHARING SYSTEM
IMPLEMENTATION (PROTOTYPE OF ^CXDS 940 SYSTEM).
/SUPERVISING SYSTEMS PROGRAMMING DURING FIRST HALF OF PERIOD AND
DEVELOPING AUXILIARY STORAGE FACILITIES DURING LATTER HALF.
.SP
^-/VISITING /ASSISTANT /PROFESSOR AND /VISITING /ASSISTANT /RESEARCH
^-/ENGINEER^E - /JULY 1963 - /JUNE 1965

/CO-DEVELOPER OF /PROJECT ^CGENIE ^CXDS 930 TIME-SHARING SYSTEM.
/WROTE EARLY /PROJECT SOFTWARE INCLUDING 930 SYSTEM MACRO-ASSEMBLER.
/SUPERVISED OTHER SOFTWARE AND PARTICIPATED IN DESIGN OF /PROJECT
HARDWARE.
/TAUGHT VARIOUS COURSES IN /ELECTRICAL /ENGINEERING INCLUDING LOGIC
DESIGN AND CIRCUIT THEORY.
.SP 2
.UN 5
/JUNE 1957 - /JUNE 1963     ^-/UNIVERSITY OF /ILLINOIS
.IN 21
/URBANA, /ILLINOIS
.SP
^-/ASSISTANT /PROFESSOR, /DEPARTMENT OF /ELECTRICAL /ENGINEERING AND
^-/ASSISTANT /RESEARCH /ENGINEER, /COORDINATED /SCIENCE /LABORATORY
- /FEB. 1961 - /JUNE 1963
.SP
/RESPONSIBLE FOR OPERATION AND DEVELOPMENT OF ^CCDC 1604 COMPUTER FACILITY
IN ^CCSL.
/SUPERVISED STAFF OF 10.
/REPORTED TO LABORATORY DIRECTOR.
.SP
^-/RESEARCH /ASSOCIATE, /COORDINATED        DECLARE INTEGER CHAR, I, IFNO, OFNO,
                       XFLAG;
       DECLARE STRING INFNAM(20), OTFNAM(20);
       DECLARE ARRAY XLINE[72];

START: SOUT("&M&JINPUT FILE: "); SETS(INFNAM,0,0);
       INNAME(INFNAM:START); IFNOINFILE(INFNAM:START);
ST1:   SOUT("&M&JOUTPUT FILE: "); SETS(OTFNAM,0,0);
       OUTNAME(OTFNAM:ST1); OFNOOUTFILE(OTFNAM,3B6:ST1);
       CRLF();
       XFLAG1;

* HANDLE AN INDEFINITE NUMBER OF LINES OF TEXT
       WHILE 1 DO;
          XLINE[I]' ' FOR I0 TO 71 IF XFLAG;
          XFLAGICHAR0;

* HANDLE INDIVIDUAL CHARACTERS OF A GIVEN LINE
          WHILE CHAR#'&J' DO;
             IF (CHARCIN(IFNO))=135B DO;       * BLANK COUNT CASE
                II+(CHARCIN(IFNO));
                COUT(135B,OFNO); COUT(CHAR,OFNO);
             ELSEIF CHAR='&M' DO;               * CARRIAGE RETURN CASE
                IF (CHARCIN(IFNO))='&J' DO;    * CR-LF.  END OF LINE
                   XOUT(XLINE,XFLAG,OFNO) IF XFLAG ELSE CRLF(1,OFNO);
                ELSE DO;                        * NOT REAL END OF LINE.
                   COUT('&M',OFNO); COUT(CHAR,OFNO);
                   COUT((CHARCIN(IFNO)),OFNO) WHILE CHAR#'&M';
                   XOUT(XLINE,XFLAG,OFNO) IF XFLAG ELSE CRLF(1,OFNO);
                   HALT() IF (CHARCIN(IFNO))#'&J';
                ENDIF;
             ELSEIF CHAR='' DO;                * PUT < IN XLINE AT I
                XLINE[I]'<';
                XFLAGI;
                COUT(CHAR,OFNO);
                II+1;
             ELSEIF CHAR=137B DO;               * END OF FILE.  QUIT.
                COUT(CHAR,OFNO);
                CLOSALL();
                EXIT();
             ELSE DO;                           * COPY ANY OTHER CHAR.
                COUT(CHAR,OFNO);
                II+1;
             ENDIF;
          ENDFOR;
       ENDFOR;

       DECLARE ARRAY LINE, INTEGER J;
       FUNCTION XOUT(LINE,COLUMN,FILE);
       COUT('&M',FILE);
       COUT(LINE[J],FILE) FOR J0 TO COLUMN;
       CRLF(1,FILE);
       RETURN;

       END;
>                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        .GL  TRAC-TORS PRO-CED-URE PRINT-ER PRE-VIOUS-LY POS-SIB-LY
.GL IN-TEND-ED IN-DIV-ID-UAL-LY HOW-EVER FOL-LOW-ING
.GL FOL-LOW CON-SIST-ING CHAR-AC-TERS
       /THE GENERAL PROCEDURE FOR PRODUCING MAILING LABELS ON
THE ^CBCC 500 IS:
.SP
.RM 10
.UN 5
1.  /PREPARE A FILE CONSISTING OF ALL OF THE ADDRESSEES.
/USUALLY THIS FILE WILL HAVE BEEN PREPARED PREVIOUSLY BUT MAY REQUIRE
UPDATING.
/THE TEXT EDITOR (^CQED) IS USED FOR THIS PURPOSE.
.SP
.UN 5
2.  /RETRIEVE AND RUN THE LABEL-MAKING PROGRAM.
/THIS PROGRAM RE-FORMATS THE ADDRESSEE FILE FROM ONE WHICH
IS CONVENIENT FOR CREATION AND MODIFICATION VIA A TERMINAL INTO ONE
WHICH FITS A STANDARD SHEET OF MAILING LABELS.
.SP
.UN 5
3.  /INSTALL THE MAILING LABEL FORMS IN THE LINE PRINTER.
/THE PROCESSED ADDRESSEE FILE (THE OUTPUT FILE OF THE LABEL-MAKER
PROGRAM) IS THEN PRINTED ON THE FORMS, AFTER WHICH
THE LINE PRINTER IS RE-FITTED WITH NORMAL PAPER AND
RESTORED TO NORMAL OPERATION.
.ER
.SP
       /DETAILED INSTRUCTIONS FOR EACH OF THE THREE STEPS FOLLOW:
.SP 3
.UNDERLINE
1.  /PREPARATION OF THE /ADDRESSEES /FILE.
       /THE FILE IS PREPARED USING THE TEXT EDITOR.
/IT IS POSSIBLE (AND IT HAS BEEN DONE SUCCESSFULLY) TO COPY INTO THE
SYSTEM VIA MAGNETIC TAPE AN EXISTING MAILING LIST FILE.
/FOR EXAMPLE, MANY SUCH LISTS EXIST IN PUNCHED-CARD FORM.
/WITHOUT ANY FURTHER PROGRAM PREPARATION, SUCH A FILE
(CONSISTING OF BOXES OF CARDS) CAN BE READ IN THE /COMPUTING
/CENTER AND TRANSFERRED TO 800 ^CBPI, 9-TRACK MAGNETIC TAPE.
/THE ^CBCC-500 CAN COPY THIS TAPE INTO A FILE CONSISTING OF A LINE OF
TEXT FOR EACH CARD READ.
/THE TEXT EDITOR CAN THEN BE USED TO MAKE ANY MODIFICATIONS
REQUIRED TO GET THE FILE INTO CORRECT FORMAT FOR THE LABEL-MAKING
PROGRAM.
       /THE FORMAT OF THE ADDRESSEE FILE IS QUITE SIMPLE.
/THE FILE CONSISTS OF AN ENTRY (A FEW LINES OF TEXT) FOR EACH MAILING LABEL TO BE PRINTED.
/ENTRIES ARE SEPARATED FROM EACH OTHER BY A SINGLE LINE WHICH BEGINS WITH ONE OR
MORE ASTERISKS.
/AFTER THE INITIAL ASTERISK THE SEPARATOR LINE MAY CONTAIN ANY
INFORMATION WHICH MIGHT BE LATER USEFUL FOR FILE MAINTENANCE.
/THE SIZE OF A MAILING LABEL RESTRICTS THE NUMBER OF LINES
IN EACH ENTRY TO BE NO MORE THAN FIVE.
/SIMILARLY, EACH LINE MAY HAVE IN IT NO MORE THAN 39 CHARACTERS.
/IF EITHER OF THESE RESTRICTIONS IS VIOLATED, THE LABEL-MAKING
PROGRAM WILL TRUNCATE THE INFORMATION TO FIT WITHIN THE
AVAILABLE SPACE ON THE LABEL.
       /THE FOLLOWING EXAMPLE SHOWS THE FIRST FEW LINES OF SUCH A
FILE.
.SP 2
.NOFILL
^UROBERT P. ABBOTT
LAWRENCE LIVERMORE LAB
BOX 808
LIVERMORE, CALIFORNIA 94550
***
DR. SAUL AMAREL
DEPT. OF COMPUTER SCIENCE
RUTGERS UNIVERSITY
HILL CENTER FOR MATH SCIENCES
NEW BRUNSWICK, NEW JERSEY  08903
***
DR. M. C. ANDREWS
IBM RESEARCH LABORATORY
DATA COMMUNICATIONS CENTER
SAEUMERSTRASSE 4
CH-8803 RUSCHLIKON, SWITZERLAND
***

     .
     .
     .^L
.FILL
.SP 2
       /THE ADDRESSEE FILE CAN NOW BE CONSIDERED COMPLETE.
/MAILING LISTS PREPARED FROM IT WILL HAVE IDENTICAL FORM IN EACH
LABEL, I.E., THE LABELS WILL BE PRINTED IN UPPER-CASE ONLY.
/ALTERNATIVELY, THE FILE CAN BE PROCESSED FURTHER INTO A FORMAT WHICH
IS SUITABLE FOR ^CRUNOFF.
/THE ^CRUNOFF OUTPUT OF SUCH A FILE WILL HAVE UPPER- AND LOWER-CASE
LETTERS; THE ENTRIES WILL APPEAR MORE AS IF THEY HAD BEEN TYPED INDIVIDUALLY.
 /OF COURSE THE FILE COULD HAVE BEEN CREATED IN THIS ^CRUNOFF-^ECOMPATIBLE
FORMAT INITIALLY.
/IT IS PERHAPS A BIT CUMBERSOME TO DO THIS FOR A LARGE NUMBER OF ENTRIES, HOWEVER;
AND IT WOULD BE MOST TRYING TO MODIFY A PREVIOUSLY EXISTING UPPER-CASE
FILE OR ONE JUST
COPIED FROM MAGNETIC TAPE.
/THUS A PROGRAM HAS BEEN PREPARED TO CAPITALIZE (IN THE ^CRUNOFF
SENSE) ALL WORDS BEGINNING WITH LETTERS IN THE ENTRIES.
/THIS IS GENERALLY CORRECT; BUT IT WILL NOT PRODUCE PERFECT
RESULTS.
/THE PROGRAM IS INTENDED MERELY TO REDUCE THE AMOUNT OF MANUAL EDITING
OF THE FILE DOWN TO A VERY SMALL LEVEL.
/THE PROGRAM -- CALLED "^CCAPS" -- COPIES THE ADDRESSEE FILE ONTO A
NEW FILE, TRANSFORMING THE INFORMATION FROM A FORM LIKE THAT SHOWN ABOVE
INTO ONE LIKE THE FOLLOWING:
.SP 2
.NOFILL
.LI
.^UNOFILL
.LI
.PAGING MODE OFF
.LI
.LAYOUT 1,80,6,66,79,0
.LI
.LINE LAYOUT 1,72
^/ROBERT ^/P. ^/ABBOTT
^/LAWRENCE ^/LIVERMORE ^/LAB
^/BOX 808
^/LIVERMORE, ^/CALIFORNIA 94550
***
^/DR. ^/SAUL ^/AMAREL
^/DEPT. ^/OF ^/COMPUTER ^/SCIENCE
^/RUTGERS ^/UNIVERSITY
^/HILL ^/CENTER ^/FOR ^/MATH ^/SCIENCES
^/NEW ^/BRUNSWICK, ^/NEW ^/JERSEY  08903
***
^/DR. ^/M. ^/C. ^/ANDREWS
^/IBM ^/RESEARCH ^/LABORATORY
^/DATA ^/COMMUNICATIONS ^/CENTER
^/SAEUMERSTRASSE 4
^/CH-8803 ^/RUSCHLIKON, ^/SWITZERLAND
***

     .
     .
     .^L
.FILL
.SP 2
       /TO USE ^CCAPS, FIRST RETRIEVE THE FILE FROM ^CPFS (THE FILE
IS A 940 ^CDUMP FILE).
/TYPE THE SYSTEM COMMAND "^URECOVER CAPS^L".
/THEN TYPE "^CSTART;/G".
^CCAPS FIRST ASKS FOR AN INPUT FILE NAME.  /TYPE THE NAME OF THE
TOTALLY UPPER-CASE FILE, FOLLOWED BY ".".  /NEXT ^CCAPS ASKS FOR AN OUTPUT
FILE NAME.  /TYPE A NEW FILE NAME SURROUNDED BY DOUBLE-QUOTES AND
THEN A PERIOD.
/THE PROGRAM THEN DOES ITS WORK AND EXITS BY RINGING THE BELL ON THE
TERMINAL AND TYPING AN EXTRA CARRIAGE RETURN AND LINE FEED.
/RETURN TO THE SYSTEM COMMAND LEVEL BY TYPING "%/F".
       /THE (NEW) ADDRESSEE FILE IS NOW IN A FORM SUITABLE FOR ^CRUNOFF.
/PROCESSING THE FILE WITH ^CRUNOFF WILL YIELD A FILE WHICH NEEDS
ONLY RE-FORMATTING TO FIT THE MAILING LABELS FORM.
/IF THE ADDRESSEE FILE HAS JUST BEEN PROCESSED BY ^CCAPS HOWEVER,
IT SHOULD FIRST BE PROCESSED BY ^CRUNOFF AND THE OUTPUT PRINTED FOR
PROOFREADING
TO SEE WHERE FURTHER EDITING OF THE ADDRESSEE FILE MAY
BE REQUIRED.
/AFTER FINAL EDITING, THE ADDRESSEE FILE WILL BE SAVED ON THE DISK
UNDER ^CPFS.
/THE TEXT EDITOR WILL BE USED SUBSEQUENTLY TO MAKE ADDITIONS, DELETIONS,
AND CHANGES TO THE FILE.
/THE EDITING SHOULD BE DONE SUCH THAT EACH OF THE NEW OR MODIFIED
ENTRIES APPEAR AS IN THE SECOND CASE GIVEN ABOVE.
/THE ^CCAPS PROGRAM IS INTENDED TO BE USED ONLY ONCE IN THE PREPARATION
AN AN ADDRESSEE FILE.
.SP 3
.UNDERLINE
2.  /MAKING THE /ACTUAL /LABELS /FILE.
       /BEGINNING WITH A VALID ADDRESSEE FILE,
THE FIRST STEP IS TO PROCESS THE FILE WITH ^CRUNOFF.
(/THAT IS, ASSUMING THE FILE IS IN THE FORM OF ^CRUNOFF INPUT;
OTHERWISE, ONE CAN SKIP DOWN TO THE RE-FORMATTING PARAGRAPH BELOW.)
/THIS IS QUITE EASY.  ^CRUNOFF IS A SUBSYSTEM, SO ONE MERELY TYPES
THE NAME "^CRUNOFF" AS A SYSTEM COMMAND (I.E., AFTER THE "@" SIGN).
/WHEN ^CRUNOFF BECOMES ACTIVE IT ASKS FOR AN INPUT FILE.
/TYPE THE NAME OF THE ADDRESSEE FILE, FOLLOWED BY ".".  
/TYPING ERRORS CAN BE CANCELLED WITH CONTROL-/A.
/AFTER DOING SOME PROCESSING, ^CRUNOFF WILL ASK FOR THE NAME OF AN
OUTPUT FILE.
/DO ^CNOT GIVE THE NAME OF THE INPUT FILE; GIVE THE NAME OF A NEW
FILE (AND SURROUND IT WITH DOUBLE-QUOTES).
/THE FILE THUS PRODUCED WILL HAVE UPPER- AND LOWER-CASE CHARACTERS
IN IT AND IS ALMOST READY FOR RE-FORMATTING.
/BUT IT WILL ALSO HAVE A COUPLE OF UNDESIRABLE FEATURES IN IT WHICH
SHOULD BE REMOVED BEFORE THIS STEP.
/THE EASIEST WAY TO DO THIS IS WITH ^CQED.
 /READ IN THE FILE AND DELETE THE FIRST LINE.  (/THE LINE WILL SAY
"**^CRUNOFF" AND IS A COMMAND FROM ^CRUNOFF TO THE PRINTING PROGRAM
TO LET IT KNOW WHAT KIND OF FILE IT IS ABOUT TO PRINT.
/WE DON'T WANT THE LINE SINCE WE ARE NOT GOING TO PRINT THIS FILE.)
/SECOND, DELETE EVERY CONTROL-/L IN THE FILE.  (/THESE ARE LIKEWISE
PAGE EJECT COMMANDS FROM ^CRUNOFF TO THE PRINTING PROGRAM AND ARE OUT
OF PLACE HERE.)
/SIMPLY SAY TO ^CQED, "@^USUBSTITUTE ^/^/ FOR ^/^L<CONTROL-/L>^/.
/TO TYPE THE CONTROL-/L IN THIS COMMAND, YOU MUST TYPE
CONTROL-/V FOLLOWED BY CONTROL-/L.
/AFTER DELETING THE FIRST LINE AND REMOVING ALL THE CONTROL-/L'S,
WRITE THE FILE BACK OUT.
/IT IS NOW READY FOR RE-FORMATTING AND APPEARS AS FOLLOWS:
.SP 2
.NOFILL
/ROBERT /P. /ABBOTT
/LAWRENCE /LIVERMORE /LAB
/BOX 808
/LIVERMORE, /CALIFORNIA 94550
***
/DR. /SAUL /AMAREL
/DEPT. OF /COMPUTER /SCIENCE
/RUTGERS /UNIVERSITY
/HILL /CENTER FOR /MATH /SCIENCES
/NEW /BRUNSWICK, /NEW /JERSEY  08903
***
/DR. /M. /C. /ANDREWS
^CIBM /RESEARCH /LABORATORY
/DATA /COMMUNICATIONS /CENTER
/SAEUMERSTRASSE 4
/CH-8803 /RUSCHLIKON, /SWITZERLAND
***

     .
     .
     .
.FILL
.SP 2
       /RE-FORMATTING IS DONE BY MEANS OF THE PROGRAM ^CLABEL-MAKER.
/AFTER GETTING THE PROGRAM FROM THE DISK (IT IS IN THE FORM OF A
940 ^CDUMP FILE), TYPE THE SYSTEM COMMAND "^URECOVER LABEL-MAKER^L".
/THEN TYPE ^CSTART;/G.
/LIKE ^CRUNOFF THE PROGRAM ASKS FOR AN INPUT FILE.
/TYPE THE NAME OF THE FILE JUST MADE AND EDITED, FOLLOWED BY ".".
/THE PROGRAMS THEN ASKS FOR AN OUTPUT FILE NAME.
/TYPE THE NAME OF YET A NEW FILE.
/THE PROGRAM THEN COPIES INFORMATION FROM ITS INPUT FILE ONTO ITS OUTPUT
FILE, RE-FORMATTING IT SO THAT THREE COLUMNS ARE MADE AND PLACED EXACTLY
WHERE LABELS WILL BE ON THE LABEL FORMS.
/THE PROGRAM WILL TERMINATE BY RINGING THE TERMINAL BELL AND DOING
AN EXTRA CARRIAGE RETURN AND LINE FEED.
/OTHER LABEL FILES CAN BE MADE, EACH TIME BY TYPING "^CSTART;/G"
AND REPEATING THE FILE NAME BUSINESS.
/WHEN THE LAST FILE HAS BEEN PROCESSED, EXIT TO THE COMMAND-LANGUAGE
LEVEL OF THE SYSTEM BY TYPING "%/F".
.SP 3
.UNDERLINE
3.  /PRINTING THE /LABELS.
       /THE FINAL STEP MUST BE PERFORMED IN /HOLMES /HALL.
/POSSIBLY SOMEONE WORKING WITH THE SYSTEM REGULARLY CAN ASSIST IN
SETTING UP THE PRINTER.
/ANYONE CAN DO IT, HOWEVER, ONCE HAVING BEEN SHOWN HOW.
/THESE INSTRUCTIONS ARE INTENDED AS REMINDERS FOR SOMEONE PREVIOUSLY
CHECKED OUT ON THE PROCEDURE.
       /THE LINE PRINTER SHOULD NOT BE IN USE.
/TYPE "^CPREEMPT" TO ^CKDF (THE PERIPHERAL DEVICES PROGRAM) TO
INSURE THAT NO ONE WILL START A PRINT GOING WHILE YOU ARE
SETTING UP THE PRINTER.
       /TURN ON THE PRINTER, HIT THE ^UTOP OF FORM^L BUTTON, OPEN THE
PRINTER CABINET, AND REMOVE THE PAPER FROM IT.  /MOVE THE LEFT TRACTOR
MECHANISMS ABOUT 1" TO THE RIGHT.  /INSTALL LABEL FORMS ON THE LEFT
TRACTORS ONLY AND PLACE THEM SO THAT THE LEFT EDGE OF THE PAPER
JUST BARELY COVERS THE SLOT CONTAINING THE PRINT HAMMERS.
/MAKE SURE THE UPPER TRACTOR IS PLACED SO THAT THE PAPER IS PERFECTLY
VERTICAL.  /THEN MOVE THE RIGHT TRACTORS SO THEY ENGAGE THE FORMS
PROPERLY.
       /LOG IN THE SYSTEM ON ONE OF THE NEARBY TERMINALS, RETRIEVE
YOUR PRINT FILE IF IT IS PRESENTLY ON ^CPFS, AND ALSO RETRIEVE THE
FILE "^CALIGNMENT-TXT".
/TURN THE PRINTER PLATEN SO THAT THE GAP BETWEEN LABELS IS ALIGNED WITH
THE BLACK TOP-OF-FORM ALIGNMENT MARK ON THE LEFT SIDE OF THE PRINTER.
/CLOSE THE PRINTER CABINET, HIT THE ^CPRINT BUTTON, AND
THEN TYPE TO ^CKDF, "^CPRINT @<YOUR NAME>:^UALIGNMENT-TXT,A^L".
/ALLOW ONLY A FEW LINES TO PRINT AND THEN HIT THE ^CSTOP BUTTON.
ON THE PRINTER.
/INSPECT THE PRINTING FOR VERTICAL ALIGNMENT.
/IF IT IS NOT CORRECT (THERE REALLY ISN'T MUCH TOLERANCE), MAKE A
SLIGHT CORRECTION OF THE PRINTER PLATEN, HIT ^CPRINT AGAIN AND LET
A FEW MORE LINES PRINT BEFORE HITTING ^CSTOP.
/REPEAT AS REQUIRED UNTIL VERTICAL ALIGNMENT IS ACHIEVED; THEN
LET THE REST OF THE FILE PRINT.  /IT IS LESS THAN ONE PAGE LONG AND
WILL NOT WASTE MANY LABELS.
/NOW RETURN TO ^CKDF AND TYPE "^CPRINT @<YOUR NAME>:<YOUR FILE>,/A".
/THE LABELS WILL NOW BE PRINTED.  /THIS CAN BE DONE FOR AS
MANY LABEL PRINT FILES AS EXIST AT THE MOMENT, AFTER WHICH
THE PRINTER MUST BE RESTORED TO NORMAL OPERATION.
       /REMOVE THE LABEL FORM PAPER AND PUSH THE LEFT TRACTORS BACK
INTO NORMAL POSITION.  /THERE IS A GROOVE ON THE RODS HOLDING THE
TRACTOR MECHANISMS INTO WHICH A DETENT FITS.  /PUSH EACH TRACTOR
ALL THE WAY TO THE LEFT AND THEN BACK RIGHT JUST ENOUGH THAT A "CLICK"
IS FELT.  /PUSH THE RIGHT TRACTORS BACK TOWARD THE RIGHT.
/PLACE THE NORMAL PAPER FORMS IN THE LEFT TRACTORS AND THEN ADJUST THE
RIGHT TRACTORS SO THAT THE PAPER IS HELD PROPERLY; THE TEETH
IN THE RIGHT MECHANISMS SHOULD BE EXACTLY IN THE CENTER OF THE
HOLES.  /HIT THE ^UTOP OF FORM^L BUTTON AND MOVE THE PLATEN SO THAT
THE NEAREST CREASE IN THE PAPER IS ALIGNED WITH THE BLACK ALIGNMENT
MARK TO THE LEFT OF THE PRINTER.  /CLOSE THE PRINTER CABINET AND
TYPE "^CUNPREEMPT" TO ^CKDF.  /IF NO PRINTING BEGINS, TURN OFF THE
PRINTER.
> N ADDRESSEE FILE.
.SP 3
.UNDERLINE
2.  /MAKING THE /ACTUAL /LABELS /FILE.
       /BEGINNING WITH A VALID ADDRESSEE FILE,
PFS         USER           TSS
NO.          NAME          NO.


  1   SYSTEM-01              1
  2   SYSTEM-02              2
  3   SYSTEM-03              3
  4   SYSTEM-04              4
  5   SYSTEM-05            
  6   SYSTEM-06            
  7   SYSTEM-07            
  8   SYSTEM-08            
  9   SYSTEM-09            
 10   SPL-01               
 11   SPL-02               
 12   SPL-03               
 13   SPL-04               
 14   WWL                    5
 15   DAVIDSON               8
 16   FREEMAN                9
 17   GOODRICH              10
 18   LEE                   11
 19   JOHNSTON              28
 20   MOODY                 29
 21   YONAMINE              14
 22   BASIC-B              
 23   BASIC-C              
 24   LOAD                 
 25   SMITH                 24

 27   CPU                  
 28   KAM                   18
 29   HOOVER                20
 30   SOFTWARE             
 31   STOUTE                33
 32   SOFTWARE-A           
 33   IAC                   36
 34   BASIC                 16
 35   BASIC-A              
 36   SPIRN                


 39   XBLA                 
 40   XBLB                 
 41   GUEST                  7
 42   ALOHA                 25
 43   ROK                  
 44   BK                    27
 45   CARDESTAM            
 46   APU                  
 47   AMC                  
 48   SUE                  
 49   KAGAN                 31
 50   IFA                   32
 51   BISSONNETTE           26
 52   CHIO                 
 53   CROSBY                17
 54   MSCH                 
 55   FM                   
 56   HARRISON             
 57   OKINAKA               30
 58   CER                   56
 59   ELF                  

 61   IWAMOTO               21
 62   OKANO                 23


 65   CP                   
 66   FORTRAN              
 67   GEOFF                 12


 70   CSA-1                 13
 71   CSA-2                 19









 81   OPERATOR               6
 82   EC-3                 
 83   EC-1                  15
 84   EE-491                34
 85   WAYMOND               35
 86   ICS-160-1             37
 87   ICS-160-2             55
 88   ICS-160-3             58
 89   ICS-160-4             59
 90   ICS-160-5             60
 91   ICS-160-6             61
 92   ICS-160-7             62
 93   ICS-160-8             63
 94   ICS-160-9             64
 95   ICS-160-10            38
 96   YOSHINO               39





102   HCAM                  57








111   EC-2                  22


























>                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                 .DEFINE FORMAT EXP L(A) J(B)
AAAAAAAAAABBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBB
.END FORMAT
.DEFINE FORMAT SUBEXP L(A) J(B)
          AAAAABBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBB
.END FORMAT
.PAGING MODE OFF
.SP 16
.CE
^UDDT
.SP 2
.CE
INTERACTIVE MACHINE LANGUAGE DEBUGGING SYSTEM
.SP 2
.CE
REFERENCE MANUAL
.SP 15
.CE
^L^CBCC 500 /COMPUTER
.SP 4
.CE
/DEPARTMENT OF /ELECTRICAL /ENGINEERING
.CE
/UNIVERSITY OF /HAWAII
.SP 2
.CE
/JANUARY 25, 1978
.EJ
.HEADER ^CDDT /REFERENCE /MANUAL
.PA 1
^-1.0/GENERAL
 ^CDDT IS A RELOCATING, LINKING LOADER AND DEBUGGING SYSTEM FOR THE ^CXDS 940.
/IT HAS FACILITIES FOR SYMBOLIC REFERENCE TO AND TYPEOUT OF MEMORY
CELLS AND CENTRAL REGISTERS.
/IT PERMITS THE USER TO INSERT BREAKPOINTS INTO PROGRAMS, PERFORM TRACES, AND
SEARCH PROGRAMS FOR SPECIFIED WORDS AND SPECIFIED EFFECTIVE ADDRESSES.
/IN ADDITION, IT HAS A CONDITIONAL BREAKING FACILITY THAT
WILL ALLOW THE USER TO SPECIFY THE EXACT CONDITION UNDER WHICH HE WANTS
THE PROGRAM TO BREAK.
/FINALLY, ^CDDT CAN LOAD BOTH ABSOLUTE AND RELOCATABLE FILES IN
THE FORMAT PRODUCED BY THE ASSEMBLER.
 /THE SYSTEM HAS A LANGUAGE BY WHICH IT CAN BE CONTROLLED.
/THE BASIC COMPONENTS OF THIS LANGUAGE ARE ^ISYMBOLS, ^ICONSTANTS,
AND ^ICOMMANDS.
.SP 2
^-1.1/SYMBOLS
 /A ^ISYMBOL IS ANY STRING OF LETTERS, DIGITS, AND DOTS(.) CONTAINING
AT LEAST ONE LETTER.
(/HOWEVER, A DIGIT STRING FOLLOWED BY /B OR /D AND POSSIBLY ANOTHER
DIGIT IS INTERPRETED AS AN OCTAL OR DECIMAL NUMBER RESPECTIVELY).
/IN SYMBOLS MORE THAN SIX CHARACTERS, ONLY THE FIRST SIX ARE SIGNIFICANT:
THUS, ^CALPHABET IS EQUIVALENT TO ^CALPHAB.
/ALL OP CODES RECOGNIZED BY THE ASSEMBLER ARE BUILT-IN SYMBOLS, EXCEPT
FOR SOME /I^//O INSTRUCTIONS.
/DOT (.) IS A BUILT-IN SYMBOL WITH A SPECIAL MEANING EXPLAINED IN
A LATER SECTION.
/THERE ARE ALSO SOME CONSTRUCTS LIKE ;/A (THE /A-REGISTER) WHICH
UNDER MOST CIRCUMSTANCES ACT EXACTLY LIKE SYMBOLS.
/SEE THE SECTION ON SPECIAL SYMBOLS.
 /EVERY SYMBOL MAY HAVE A VALUE.
/THIS VALUE IS A 24-BIT INTEGER; FOR MOST SYMBOLS IT WILL EITHER BE AN
ADDRESS IN MEMORY OR THE OCTAL ENCODING OF AN OPERATION CODE.
.NOFILL

/EXAMPLES:
      ^UABC
      AB124
      12XYZ
^L/THE FOLLOWING ARE NOT SYMBOLS:
      135/B
      /A/B*/C/D
.FILL
 /SYMBOLS MAY BE INTRODUCED TO ^CDDT IN TWO DIFFERENT WAYS:
.SP
.FORMAT EXP
(1)\/THEY MAY BE WRITTEN OUT BY THE ASSEMBLER AND READ IN FROM THE
BINARY FILE BY ^CDDT.
.FILL
.SP
.FORMAT EXP
(2)\/THEY MAY BE TYPED IN AND ASSIGNED VALUES DURING DEBUGGING.
.FILL
 /IT IS POSSIBLE FOR A SYMBOL TO BE UNDEFINED.
/THIS MAY OCCUR IF A PROGRAM IS LOADED WHICH REFERENCES AN EXTERNAL
SYMBOL NOT DEFINED IN A PREVIOUSLY LOADED PROGRAM.
/IT MAY ALSO OCCUR IF AN UNDEFINED SYMBOL IS TYPED IN AN EXPRESSION.
/IN GENERAL, UNDEFINED SYMBOLS ARE LEGAL INPUT TO ^CDDT EXCEPT WHEN
THEIR VALUES WOULD BE REQUIRED IMMEDIATELY FOR THE EXECUTION OF A
COMMAND.
/THUS, FOR EXAMPLE, THE ;/G (^CGO ^CTO) COMMAND WOULD GIVE AN ERROR IF
ITS ARGUMENT IS AN UNDEFINED SYMBOL.
 /UNDEFINED SYMBOLS MAY BECOME DEFINED IN SEVERAL WAYS.
/THAY MAY BE DEFINED AS EXTERNAL IN THE ASSEMBLER (I.E., WITH ^CEXT
OR $) AND READ IN BY ^CDDT AS PART OF A BINARY PROGRAM.
/ALTERNATIVELY, THEY MAY BE DEFINED BY ONE OF THE SYMBOL DEFINITION
COMMANDS AVAILABLE IN ^CDDT.
/WHEN THE DEFINITION OCCURS, THE VALUE OF THE SYMBOL WILL BE SUBSTITUTED
IN ALL THE EXPRESSIONS IN WHICH THE SYMBOL HAS APPEARED.
 /IF ^CDDT TYPES (/U) AFTER TYPING OUT THE CONTENTS OF A CELL IN SYMBOLIC MODE,
IT MEANS THAT THE CELL CONTAINS AN UNDEFINED SYMBOL.
/THE CELL IS CLOSED AT ONCE SO THAT ITS CONTENTS CANNOT BE ERRONEOUSLY CHANGED.
 /THE ONLY RESTRICTION ON THIS FACILITY IS THAT, AS FOR ^CNARP, THE UNDEFINED
SYMBOL MUST BE THE ONLY THING IN THE ADDRESS FIELD OF THE WORD IN WHICH IT
APPEARS.
/INCORRECT USES OF UNDEFINED SYMBOLS WILL BE DETECTED BY ^CDDT AND WILL RESULT
IN THE ERROR COMMENT (/U).
 ^CDDT KEEPS TRACK OF THE REFERENCES TO UNDEFINED SYMBOLS BY BUILDING
POINTER CHAINS THROUGH THE ADDRESS FIELDS OF THE WORDS REFERRING TO THE SYMBOL.
/FOR EACH UNDEFINED SYMBOL, ^CDDT WILL CONSTRUCT A DIFFERENT POINTER CHAIN
FOR EACH 2/K PAGE IN THE USER'S MAP WHICH CONTAINS A
REFERENCE TO THE SYMBOL.
/THE POINTERS TO THE BEGINNINGS OF THESE CHAINS ARE MAINTAINED IN A 2/K
PAGE ACQUIRED BY ^CDDT AND NOT ACCESSABLE BY THE USER.
/A CHAIN POINTER IS STORED IN THE RIGHT ELEVEN BITS OF THE ADDRESS
FIELD.
/BIT 10 MARKS THE END OF A CHAIN AND BIT 11 INDICATES WHETHER THE SYMBOL SHOULD
BE PATCHED UP ON 14 BITS OR 24 BITS WHEN THE SYMBOL IS DEFINED.
 /FROM THIS DESCRIPTION IT SHOULD BE OBVIOUS WHAT WILL HAPPEN IF THE
POINTER CHAIN IS DESTROYED.
/A PROBABLE CONSEQUENCE IS THAT A SEARCH DOWN THE POINTER CHAIN WILL NOT
TERMINATE.
^CDDT WILL OFTEN DO SUCH SEARCHES WHENEVER IT PRINTS AN ADDRESS.
/IF THE CHAIN IT IS SEARCHING HAS MORE THAN 256 LINKS, IT WILL PRINT THE SYMBOL
FOLLOWED BY (/U) AND CONTINUE.
/A CHAIN MAY BE DESTROYED BY CLOBBERING A WORD IN THE CHAIN OR BY REMOVING A
PAGE CONTAINING UNDEFINED REFERENCES FROM THE USER MAP.
/A WORD OF WARNING, /D/D/T'S LOADER MAY BECOME CONFUSED OR GO INTO A LOOP
IF A BINARY PROGRAM IS LOADED WHICH ATTEMPTS TO DEFINE AN UNDEFINED SYMBOL
WHOSE REFERENCE CHAINS ARE NOT ALL IN THE MAP.
/FIXING UP AN UNDEFINED SYMBOL POINTER CHAIN WHICH HAS BEEN CLOBBERED IS
AN EXERCISE WHICH WE LEAVE TO THE READER.
.SP 2
^-1.2/BLOCK/STRUCTURE
 /A LIMITED FACILITY CALLED THE ^IBLOCK ^ISTRUCTURE FACILITY IS PROVIDED
TO SIMPLIFY THE REFERENCING OF LOCAL SYMBOLS WHICH ARE DEFINED IN
MORE THAN ONE SEPERATELY LOADED PROGRAM.
/NOTE THAT /D/D/T'S BLOCK STRUCTURE HAS ONLY A TENUOUS CONNECTION WITH
THE BLOCK STRUCTURE OF ^CALGOL.
/THE BLOCK STRUCTURE OF A PROGRAM IS ORGANIZED IN THE FOLLOWING MANNER:
EVERY ^CIDENT READ BY ^CDDT AS A PART OF A BINARY FILE BEGINS A NEW BLOCK.
/ANY LOCAL SYMBOL KNOWN TO ^CDDT HAS A BLOCK NUMBER ASSOCIATED WITH IT;
GLOBAL SYMBOLS DO NOT HAVE A BLOCK NUMBER.
/UNDEFINED SYMBOLS ARE ALWAYS TREATED AS A GLOBAL.
 /THE NAME OF A BLOCK IS THE SYMBOL IN THE LABEL FIELD OF THE ^CIDENT.
/IF TWO /I/D/E/N/TS WITH THE SAME SYMBOL ARE READ, THE MESSAGE
(^CALREADY ^CLOADED) IS PRINTED, AND THE LOCAL SYMBOL TABLES FOR THE TWO
/I/D/E/N/TS WILL BE MERGED.
/CONFLICTING SYMBOL DEFINITIONS WILL BE OVERWRITTEN.
 /IF LOCAL SYMBOLS ARE DEFINED IN A BINARY PROGRAM FILE, WITH NO PRECEEDING
^CIDENT, THEN ^CDDT WILL ASSIGN AN ^CIDENT NAME SUCH AS 03/X.
/GLOBAL SYMBOLS MUST BE UNIQUE WITHIN AN ENTIRE PROGRAM AND ARE RECOGNIZED
AT ALL TIMES.
/IF A MULTIPLE DEFINITION IS ENCOUNTERED, THE LATEST ONE TAKES PRECEDENCE.
/LOCAL SYMBOLS ARE RECOGNIZED ACCORDING TO THE FOLLOWING RULES:
.SP
.FORMAT EXP
(1)\/AT ANY GIVEN TIME ONE BLOCK IS CALLED THE PRIMARY BLOCK.
/ALL LOCAL SYMBOLS ASSOCIATED WITH THE PRIMARY BLOCK WILL BE RECOGNIZED.
.FILL
.SP
.FORMAT EXP
(2)\/IF A SYMBOL IS USED WHICH IS NEITHER GLOBAL NOR IN THE PRIMARY BLOCK,
THE ENTIRE TABLE IS SCANNED FOR IT.
/IF IT OCCURS IN ONLY ONE BLOCK, THE SYMBOL IS RECOGNIZED PROPERLY.
/IF IT OCCURS IN MORE THAN ONE BLOCK, THE ERROR MESSAGE (/A) IS PRINTED.
.FILL
.SP
.FORMAT EXP
(3)\/A SYMBOL MAY BE EXPLICITLY QUALIFIED BY WRITING: ^CSYMA&SYMB.
^CSYMA MUST BE THE NAME OF A BLOCK.
^CSYMB IS THEN REFERENCED  AS THOUGH THE BLOCK WHOSE NAME IS ^CSYMA WERE
PRIMARY.
.FILL
.SP
.FORMAT EXP
(4)\/WHEN A CELL IS OPENED (SEE /SECTION 2.1), THE BLOCK TO WHICH THE SYMBOLIC
PART OF ITS LOCATION BELONGS BECOMES PRIMARY.
/THUS, ^CNN&XYZ^/ CAUSES BLOCK /N/N TO BECOME PRIMARY; IF ^CABC IS A UNIQUE
LOCAL SYMBOL
IN BLOCK ^CPQ, THEN ^CABC^/ CAUSES ^CPQ TO BECOME PRIMARY.
.FILL
.SP 2
^-1.3/LITERALS
.SP
 /LITERALS HAVE THE SAME FORMAT AND MEANING IN ^CDDT AS IN THE ASSEMBLER,
I.E., THE TWO CHARACTERS
.BEGIN GROUP
' ='
.END GROUP
SIGNAL THE BEGINNING OF A LITERAL, WHICH IS TERMINATED BY ANY OF THE
CHARACTERS WHICH ORDINARILY TERMINATE AN EXPRESSION.
/IN CONTRAST TO THE ASSEMBLER, THE EXPRESSION IN A ^CDDT LITERAL ^IMUST
BE DEFINED.
 /THE LITERAL IS LOOKED UP IN THE LITERAL TABLE.
/IF IT IS FOUND, THE ADDRESS WHICH HAS BEEN ASSIGNED TO IT IS THE VALUE OF
THE SYMBOL.
/IF IT DOES NOT APPEAR IN THE LITERAL TABLE, IT IS STORED AT THE ADDRESS
WHICH IS THE CURRENT VALUE OF THE SPECIAL SYMBOL ;/F, AND THIS
ADDRESS IS TAKEN AS THE VALUE OF THE LITERAL.
;/F IS INCREASED BY 1.
/FOR EXAMPLE, IF THE LITERAL -1 DOES NOT ALREADY EXIST IN THE LITERAL TABLE
AND ;/F IS 1000/B, THEN TYPING ^CLDA =-1 CAUSES -1 TO BE STORED AT 1000/B,
AND IS EQUIVALENT TO ^CLDA 1000/B. /THE NEW VALUE OF ;/F IS 1001/B.
/EXCEPTION: /IN PATCH MODE (SEE /SECTION 2.10), LITERALS ARE SAVED AND NOT
STORED UNTIL THE PATCH IS COMPLETED SINCE OTHERWISE THEY WOULD INTERFERE
WITH THE PATCH.
 /WHEN ^CDDT TYPES OUT A SYMBOL WHOSE VALUE IS AN ADDRESS IN THE LITERAL
TABLE, IT WILL TYPE IT OUT IN THE SAME FORMAT IN WHICH IT WOULD BE INPUT;
THAT IS, AS = FOLLOWED BY THE NUMERIC VALUE OF THE LITERAL.
/IT SHOULD BE NOTED THAT ADDRESSES SPECIFIED AS LITERALS IN A BINARY PROGRAM
FILE LOADED BY ^CDDT WILL BE PRINTED AS LITERALS, HOWEVER NO ENTRY INTO
/D/D/T'S LITERAL TABLE IS MADE FOR THESE ADDRESSES.
.SP 2
^-1.4/CONSTANTS
 /A ^ICONSTANT IS ANY STRING OF DIGITS, POSSIBLY FOLLOWED BY A /B OR /D,
IN TURN POSSIBLY FOLLOWED BY ANOTHER DIGIT.
/THE NUMBER REPRESENTED BY THE STRING IS EVALUATED, TRUNCATED TO 24 BITS
AND THEN USED JUST LIKE THE VALUE OF A SYMBOL.
/THE RADIX OF THE NUMBERS IS NORMALLY 8 (OCTAL), BUT MAY BE CHANGED ARBITRARILY
BY THE COMMANDS DESCRIBED IN /SECTION 2.4 BELOW.
/IF A NUMBER IS TERMINATED BY A /B OR /D, IT IS INTERPRETED AS OCTAL OR DECIMAL
RESPECTIVELY REGARDLESS OF THE CURRENT RADIX.
/A DIGIT FOLLOWING A /B OR /D IS INTERPRETED AS A POWER OF 8 OR 10 RESPECTIVELY
BY WHICH THE NUMBER IS TO BE MULTIPLIED.
/THUS 1750/B=175/B1=1000/D=1/D3.
/CONSTANTS ARE ALWAYS PRINTED BY ^CDDT IN THE CURRENT RADIX.
.SP 2
^-1.5/COMMANDS
 /A ^ICOMMAND IS AN ORDER TYPED TO ^CDDT WHICH INSTRUCTS IT TO DO SOMETHING.
/THE COMMANDS ARE LISTED AND THEIR FUNCTIONS EXPLAINED IN /SECTION 2 BELOW.
.SP 2
^-1.6/EXPRESSIONS
 /AN ^IEXPRESSION IS A STRING OF NUMBERS OR SYMBOLS CONNECTED BY ANY OF A LARGE
NUMBER OF OPERATORS.
/THESE OPERATORS HAVE THE FOLLOWING SIGNIFICANCE:
.SP
.NOFILL
.RM 10
+    ADDITION
-    SUBTRACTION
;*   (INTEGER) MULTIPLICATION
;^/   (INTEGER) DIVISION
;&   LOGICAL ^CAND
;<   LESS THAN
;=   EQUAL TO
;>   GREATER THAN
;%   LOGICAL /O/R
;+   /X;+/Y MEANS /X;*3+/Y
;-   /X;-/Y MEANS /X;*3-/Y
;:   REMAINDER ON (INTEGER) DIVISION
;$   LOGICAL EXCLUSIVE /O/R
.FILL
.ER
 /EXPRESSIONS ARE EVALUATED STRICTLY LEFT TO RIGHT.
/ALL OPERATORS HAVE THE SAME PRECEDENCE.
/PARANTHESES ARE NOT ALLOWED.
/THE FIRST SYMBOL OR NUMBER MAY BE PRECEEDED BY A MINUS SIGN.
/BLANK ACTS LIKE A PLUS (+), EXCEPT THAT ALL SUBSEQUENT OPERANDS ARE
TRUNCATED TO 14 BITS BEFORE BEING OPERATED ON THE ACCUMULATED VALUE OF
THE EXPRESSION.
/THIS ALLOWS ONE TO COMPUTE A VALUE WHICH IS LOADED ONLY INTO THE ADDRESS
FIELD OF AN INSTRUCTION.
/THE VALUE OF AN EXPRESSION IS A 24 BIT INTEGER.
/AN EXPRESSION MAY BE A SYMBOL OR CONSTANT.
/THE VALUE OF AN EXPRESSION AFTER A RELATIONAL OPERATION IS EITHER 1 OR 0
IF THE RELATION IS TRUE OR FALSE RESPECTIVELY.
.SP
.RM 5
.NOFILL
/EXAMPLES:       ^CLDA       HAS THE VALUE   7600000
                ^CLDA 10    HAS THE VLAUE   7600010
                          IF THE RADIX IS OCTAL
                ^CLDA 10/D   HAS THE VALUE   7600012

/IF ^CSYM IS A SYMBOL WITH THE VALUE 1212, THEN
                ^CSYM       HAS THE VALUE   1212
                ^CSYM 10    HAS THE VLAUE   1222
                ^CLDA ^CSYM   HAS THE VALUE   7601212
.ER
.FILL
 /IF THIS LAST EXPRESSION WERE PUT INTO A CELL AND LATER EXECUTED BY THE PROGRAM
THE EFFECT WOULD BE TO LOAD THE CONTENTS OF ^CSYM, REGISTER 1212, INTO THE
/A REGISTER.
 /WHEN ^CDDT TYPES OUT EXPRESSIONS, TWO MODE SWITCHES CONTROL THE FORMAT OF THE
OUTPUT.
/COMMANDS FOR SETTING THESE MODES ARE DESCRIBED IN /SECTION 2.4 BELOW.
/THE WORD PRINTOUT MODE DETERMINES WHETHER QUANTITIES WILL BE PRINTED AS
CONSTANTS OR AS SYMBOLIC EXPRESSIONS.
/IN THE LATTER CASE, THE OPCODE (IF ANY) AND THE ADDRESS WILL BE PUT INTO
SYMBOLIC FORM.
/IF THE FIRST NINE BITS OF THE VALUE ARE ALL ZEROES OR ALL ONES, NO OPCODE
WILL BE PRINTED; IN THE LATTER CASE A NEGATIVE INTEGER WILL BE PRINTED.
/IF THE OPCODE IS NOT RECOGNIZABLE AS A SYMBOL, IT WILL BE TYPED AS A
NUMBER FOLLOWED BY '/B5'.
 /THE ADDRESS PRINTOUT MODE CONTROLS THE FORMAT IN WHICH THE ADDRESS IS TYPED.
^CDDT TYPES ADDRESSES WHEN ASKED TO OPEN THE PREVIOUS OR NEXT CELL, WHEN IT
REPORTS THE RESULTS OF WORD AND ADDRESS SEARCHES, AND ON BREAKPOINTS.
/IN THE RELATIVE MODE, ADDRESSES ARE TYPED IN SYMBOLIC FORM, I.E., AS
THE LARGEST DEFINED SYMBOL SMALLER THAN THE ADDRESS PLUS A CONSTANT IF
NECESSARY.
/IF THE CONSTANT IS BIGGER THAN 200 OCTAL, OR IF THE VALUE OF THE SYMBOL
IS LESS THAN OR EQUAL TO SOME MINIMUM VALUE (SETTABLE BY THE USER, BUT NORMALLY
THE LOWEST LOCATION OF THE PROGRAM) THE ENTIRE ADDRESS IS TYPED AS A CONSTANT.
/IN ABSOLUTE MODE, ADDRESSES ARE ALWAYS TYPED AS CONSTANTS.
.SP 2
^-1.7/THE/OPEN/CELL
 /ONE OTHER MAJOR INGREDIENT OF THE ^CDDT LANGUAGE IS THE ^IOPEN ^ICELL.
/CERTAIN COMMANDS CAUSE A CELL TO BE "OPENED".
/THIS MEANS THAT ITS CONTENTS ARE TYPED OUT (EXCEPT IN ENTER MODE, FOR WHICH
SEE THE ^\ COMMAND), FOLLOWED BY A TAB.
/IF THE USER TYPES AN EXPRESSION FOLLOWED BY A CARRIAGE RETURN, IT WILL
BE INSERTED INTO THE CELL IN PLACE OF THE CURRENT CONTENTS, AND THEN THE CELL
WILL BE CLOSED.
/THE ^ICURRENT ^ILOCATION IS GIVEN THE SYMBOL "." (DOT) WHICH IS ALWAYS
HAS AS ITS VALUE THE ADDRESS OF THE LAST CELL OPENED, WHETHER OR NOT IT
IS STILL OPEN.
.SP
^I/NOTE:
.SP
.FORMAT EXP
(1)\/COMMA AND STAR (FOR INDEXING AND INDIRECT ADDRESS) MAY BE USED IN
EXPRESSIONS AS THEY ARE USED IN THE ASSEMBLER; E.G., ^CLDA* 0,2 HAS THE
VALUE 27640000.
.FILL
.SP
.FORMAT EXP
(2)\^CDDT WILL RESPOND TO ANY ILLEGAL INPUT WITH THE CHARACTER ? FOLLOWED
BY A TAB (IF A CELL IS OPEN) OR CARRIAGE RETURN (OTHERWISE), AFTER WHICH
IT WILL BEHAVE AS IF NOTHING HAD BEEN TYPED SINCE THE LAST THE LAST TAB OR
CARRIAGE RETURN.
/THE COMMAND "?" ALSO ERASES EVERYTHING TYPED SINCE THE LAST TAB OR CARRIAGE
RETURN.
.FILL
.SP 2
^-1.8/MEMORY/ALLOCATIONAND^CDDT
 ^CDDT MAY CAUSE THE /TIME-/SHARING /SYSTEM TO ASSIGN MEMORY FOR USE EITHER BY
^CDDT ITSELF OR BY THE USER'S PROGRAM.
/D/D/T'S MEMORY IS USED TO HOLD THE SYMBOL TABLES, WHICH STARTS IN PAGE 0
AND GROWS UPWARD IN MEMORY.
/THE SYMBOL TABLE CONTRACTS AT THE END OF EACH LOAD OF A BINARY FILE AND WHEN
SYMBOLS ARE KILLED; THIS CONTRACTION MAY CAUSE MEMORY TO BE RELEASED.
 ^CDDT ACQUIRES PROGRAM MEMORY WHEN IT IS REQUIRED FOR LOADING A BINARY FILE
OR WHEN A ;/U (EXECUTE) COMMAND IS GIVEN AND THE VALUE OF ;/F IS SUCH THAT
A NEW BLOCK IS NEEDED TO HOLD THE INSTRUCTION TO BE EXECUTED.
/FOR EXECUTING AN INSTRUCTION, ^CDDT REQUIRES LOCATION ;/F, ;/F+1, ;/F+2.
/MEMORY IS NEVER GRABBED FOR EXAMINATION OF A REGISTER. /HOWEVER, ENTERING
INFORMATION IN CELLS WHICH ARE IN PAGES NOT IN THE MAP WILL CAUSE A BLOCK
OF MEMORY TO BE ASSIGNED FOR THAT PAGE.
/IF A CELL IS OPENED WHICH IS NOT ASSIGNED THEN ^CDDT WILL TYPE A ? AND
A TAB, BUT THE CELL WILL REMAIN OPEN.
/INFORMATION MAY BE FILLED INTO SUCH A CELL.
 /IF AN ATTEMPT TO ACQUIRE OR REFERENCE MEMORY LEADS TO A TRAP, ^CDDT TYPES
(/M) AND ABANDONS WHATEVER IT IS DOING.
/THIS CAN HAPPEN IF THE MACHINE SIZE IS EXCEEDED, OR IF AN ATTEMPT IS
MADE TO CHANGE READ-ONLY MEMORY.
.EJ
^-2.0/D/D/T/COMMANDS
 /IN THE FOLLOWING DESCRIPTION OF ^CDDT COMMANDS, </S> WILL BE USED TO
DENOTE AN ARBITRARY SYMBOL.
</E> OR </W> WILL BE USED TO DENOTE AN ARBITRARY EXPRESSION WHICH MAY BE TYPED
BY THE USER. </E> WILL BE USED WHEN THE VALUE OF THIS EXPRESSION IS TRUNCATED
TO 14 BITS BEFORE IT IS USED BY ^CDDT, WHILE </W> WILL DENOTE A FULL 24 BIT
EXPRESSION.
</A> WILL BE USED TO DENOTE AN ^IOPTIONAL 14 BIT EXPRESSION.
/IF NONE IS TYPED, THE LAST EXPRESSION TYPED WILL USUALLY BE USED; DEVIATIONS
FROM THIS RULE WILL BE DESCRIBED UNDER THE INDIVIDUAL COMMANDS.
</F> WILL DENOTE A FILE NAME FOLLOWED BY A "." (DOT); ^CDDT WILL TYPE A TAB
WHENEVER IT EXPECTS A FILE NAME.
.SP 2
^-2.1/CELL/OPENING/COMMANDS
.SP
.FORMAT EXP
</A>^/\/THIS OPENS THE CELL ADDRESSED BY THE VALUE OF </A>.
^CDDT WILL GIVE A TAB, TYPE AN EXPRESSION WHOSE VALUE IS EQUAL TO THE CONTENTS
OF THE REGISTER, GIVE ANOTHER TAB AND AWAIT FURTHER COMMANDS.
/THE PRECISE FORM OF THE EXPRESSION TYPED IS DEPENDENT ON THE SETTING OF THE
WORD AND ADDRESS PRINTOUT MODES.
/IF THE USER TYPES IN AN EXPRESSION, ^CDDT WILL INSERT THIS VALUE INTO THE
CELL.
/TYPING ANOTHER COMMAND CLOSES THE CELL, UNLESS IT IS A TYPE VALUE OR
SYMBOL DEFINTION COMMAND.
/IF ANOTHER ^/ IS GIVEN AS THE NEXT COMMAND WITH NO PRECEEDING EXPRESSION, THE
CONTENTS OF THE CELL ADDRESSED BY THE EXPRESSION TYPED BY ^CDDT ARE TYPED OUT.
/A FURTHER ^/ REPEATS THIS PROCESS.
/NOTE, HOWEVER, THAT THE ORIGINAL CELL OPENED REMAINS THE OPEN CELL; ANY
CHANGES MADE WILL GO INTO THAT CELL.
/A FLOATING POINT NUMBER MAY BE INSERTED IN THE OPEN CELL AND THE FOLLOWING
CELL BY TYPIG A '%' FOLLOWED BY A FLOATING POINT NUMBER AND THEN CLOSING
THE CELL.
.FILL
.SP
.FORMAT EXP
/C/R\/CARRIAGE /RETURN. /THIS COMMAND DOES NOT NECESSARILY HAVE ANY EFECT.
/IF THE SPECIFIED CONDITIONS ARE PRESENT, HOWEVER, ANY OF THE FOLLOWING
ACTIONS MAY OCCUR:
.FILL
.SP
.FORMAT SUBEXP
(1)\/IF THERE IS AN OPEN CELL, THE CELL IS CLOSED.
.FILL
.SP
.FORMAT SUBEXP
(2)\/IF ^CDDT IS IN ENTER MODE, IT LEAVES IT.
.FILL
.SP
.FORMAT SUBEXP
(3)\/IF ^CDDT IS IN PATCH MODE, THE PATCH IS TERMINATED (FOR A FULLER
DESCRIPTION OF THIS EFFECT, SEE THE PATCH COMMAND IN /SECTION 2.10)
.FILL
.SP
.FORMAT EXP
</A>]\/THIS COMMAND HAS THE SAME EFFECT AS ^/, EXCEPT THAT THE CONTENTS
OF THE CELL OPENED ARE ALWAYS TYPED IN SYMBOLIC FORM.
.FILL
.SP
.FORMAT EXP
</A>[\/THIS COMMAND HAS THE SAME EFFECT AS ^/, EXCEPT THAT THE CONTENTS OF
THE CELL OPENED ARE TYPED IN CONSTANT FORM.
.FILL
.SP
.FORMAT EXP
</A>$\/THIS COMMAND HAS THE SAME EFFECT AS ^/, EXCEPT THAT THE CONTENTS OF THE
CELL OPENED ARE TYPED AS A SIGNED INTEGER.
.FILL
.SP
.FORMAT EXP
</E>"\/THIS COMMAND ACTS LIKE ^/, EXCEPT THAT THE CELL CONTENTS ARE TYPED
IN ^CASCII.
/UNPRINTABLE CHARACTERS, AS IN ^CQED, ARE PRECEEDED BY &, E.G., 141
(CONTROL - /A) PRINTS OUT AS &/A.
.FILL
.SP
.FORMAT EXP
</E>@\/THIS COMMAND HAS THE SAME EFFECT AS ^/, EXCEPT THAT THE CONTENTS OF
THE CELL OPENED ARE PRINTED IN FORMATTED FORM.
/THE FORMAT WHICH IS USED IS DETERMINED BY THE VALUES OF THE TWO SPECIAL
SYMBOLS %/M AND %/N.
%/M IS A MASK OF BITS TO BE INCLUDED IN THE FIELDS.
/A BIT TURNED ON IN %/N INDICATES THE RIGHT-MOST BIT OF A FIELD.
/THE FORMATTING COMMANDS WILL ACT AS THOUGH THE RIGHT-MOST BIT OF %/N IS
TURNED ON WHETHER IT IS ON OR NOT.
/FOR EXAMPLE, IF CELL 400 CONTAINS 54356321/B AND %/N=10101/B AND
%/M=77770777/B, THEN WE GET:
.SP
.NOFILL
.CENTER
400@   5435 3 21
.SP
.FILL
.RM 10
/SUCCESSIVE FIELDS IN THE OPEN CELL AND THE FOLLOWING CELLS MAY BE CHANGED
BY TYPING EXPRESSIONS FOR THE NEW FIELD VALUES SEPARATED BY ";," . (I.E.,
333;,2;,11).
.ER
.SP
.FORMAT EXP
</E>;'\/THE CONTENTS OF LOCATIONS </E> AND </E>+1 ARE TREATED AS AN ^CSPS
STRING POINTER, AND THE STRING IS PRINTED.
/CELL </E> IS OPENED.
.FILL
.SP
.FORMAT EXP
</E>%#\/THE CONTENTS OF LOCATIONS </E> AND </E>+1 ARE TREATED AS A FLOATING
POINT NUMBER WHICH IS PRINTED.
/CELL </E> IS OPENED.
.FILL
.SP
.FORMAT EXP
/L/F\/LINE /FEED. /THIS COMMAND OPENS THE CELL WHOSE ADDRESS IS THE CURRENT
LOCATION PLUS ONE, I.E. THE CELL AFTER THE ONE JUST OPENED.
/THE OUTPUT OF ^CDDT ON THIS COMMAND IS CARRIAGE RETURN, LOCATION (FORMAT
CONTROLLED BY THE ADDRESS PRINTOUT MODE), ^/, TAB, VALUE OF THE CONTENTS, TAB.
.SP
.FORMAT EXP
;< >\/THE BRACKETS INDICATE A SPACE.
/THIS IS EQUIVALENT TO LINE FEED EXCEPT THAT NOTHING IS PRINTED.
/ITS MAIN USE IS IN ENTERING PROGRAMS OR DATA, E.G.
.NOFILL
.SP
.IN 10
1000^\   1; 2; 3      (CARRIAGE RETURN)
.SP
.IN 15
IS EQUIVALENT TO
.SP
.IN 10
1000^\   1            (CARRIAGE RETURN)
.IN 10
1001^\   2            (CARRIAGE RETURN)
.IN 10
1002^\   3            (CARRIAGE RETURN)
.SP
.FILL
.FORMAT EXP
^^\/THIS COMMAND OPENS THE CELL WHOSE ADDRESS IS THE CURRENT LOCATION MINUS
ONE, I.E. THE PREVIOUS CELL.
/THE OUTPUT IS THE SAME AS FOR THE LINE FEED COMMAND.
.NOFILL
.SP
.RM 10
^CABC^/    ^CLDA ^CALPHA                  (LINE FEED)
^CABC+1^/  ^CSTA ^CBETA      ^CSTA ^CGAMMA    (LINE FEED)
^CABC+2^/  ^CLDB ^CDELTA     ^^
^CABC+1^/  ^CSTA ^CGAMMA
.FILL
.ER
.SP
.FORMAT EXP
(\/THIS COMMAND OPENS THE CELL WHOSE ADDRESS IS THE LAST 14 BITS OF THE VALUE
OF THE LAST EXPRESSION TYPED.
/THE OUTPUT IS SAME AS FOR LINE FEED.
.FILL
.SP
.FORMAT EXP
^\\/THIS COMMAND IS THE SAME AS ^/, EXCEPT THAT THE CONTENTS OF THE CELL ARE
NOT TYPED.
^CDDT GOES INTO THE ENTER MODE, IN WHICH THE CONTENTS OF CELLS OPENED BY
LINE FEED, ^^, OR ( ARE NOT TYPED.
/MOST OTHER COMMANDS CAUSE ^CDDT TO GO OUT OF THE ENTER MODE.
/IN PARTICULAR, CARRIAGE RETURN HAS THIS EFFECT.
/WHEN A CELL HAS BEEN OPENED WITH ^\, ^CDDT THINKS THAT IT HAS TYPED OUT
ITS CONTENTS.
/THE TYPE VALUE COMMAND WILL, THEREFORE, WORK ON THE CONTENTS OF THE CELL.
.FILL
.SP
/THE TYPE REGISTER SPECIAL MODE CHARACTERS [, ], $, ", ARE ALSO
PRESERVED BY LINE FEED, UP ARROW AND (.
.SP
.FORMAT EXP
;^\\/THIS COMMAND SUPRESSES TYPEOUT OF CELL ADDRESSES DURING LINE FEED, UP
ARROW AND ( CHAINS.
/CARRIAGE RETURN CANCELS THE COMMAND.
.FILL
.EJ
^-2.2/TYPE/VALUE/COMMANDS
.SP
.FORMAT EXP
=\/THIS COMMAND TYPES THE VALUE OF THE LAST EXPRESSION TYPED (;^CQ) IN CONSTANT
FORM.
/IT MAY APPEAR IN THE FORM </W>=, IN WHICH CASE THE VALUE OF </W> IS TYPED.
/OTHERWISE, THE EXPRESSION REFERRED TO IS THE ONE MOST CURRENTLY TYPED,
EITHER BY ^CDDT OR BY THE USER.
.FILL
.SP
.FORMAT EXP
#\/THIS COMMAND TYPES THE VALUE OF ;/Q AS A SIGNED INTEGER.
.FILL
.SP
.FORMAT EXP
<^B-\/THIS COMMAND TYPES THE VALUE OF ;/Q IN SYMBOLIC FORM.
.FILL
.SP
.FORMAT EXP
'\/THIS COMMAND TYPES THE VALUE OF ;/Q TYPED AS A WORD OF TEXT (SEE " COMMAND
ON PAGE 9).
.FILL
.SP
.FORMAT EXP
>\/THIS COMMAND TYPES THE VALUE OF ;/Q IN FORMATTED FORM. (SEE THE </A>@
COMMAND).
.FILL
.SP
.NOFILL
.RM 15
/EXAMPLE:
.SP
^ULDA=              7600000
LDA 10=           7600010
LDA<^B-              LDA 0
7600000<^B-          LDA 0
-1=               77777777
-1#               -1
10221043'         ABC^L
.SP
.FILL
.ER
.FORMAT EXP
;<^B-\/THIS COMMAND TYPES ;/Q AS A CHARACTER ADDRESS, E.G. IF THE VALUE OF
THE SYMBOL /X IS 1000, THEN 3002;<^B- YIELDS /X;+2.
/ALSO, THE CURRENT LOCATION IS SET TO THE WORD ADDRESS OF THE CHARACTER.
.FILL
.SP
.FORMAT EXP
;'\/THIS COMMAND TYPES THE STRING POINTED TO BY THE CONTENTS OF THE CURRENT
LOCATION AND THE FOLLOWING CELL, CONSIDERED AS A ^CSPS STRING POINTER.
.FILL
.SP
.FORMAT EXP
</E>,</E>;'\/THIS COMMAND TYPES THE STRING POINTED TO BY THE PAIR OF
EXPRESSIONS CONSIDERED AS AN ^CSPS STRING POINTER.
.FILL
.SP
.FORMAT EXP
%#\/THIS COMMAND TYPES THE CONTENTS OF THE CURRENT LOCATION AND THE
FOLLOWING CELL CONSIDERED AS A FLOATING POINT NUMBER.
.FILL
.SP
.FORMAT EXP
</E>,</E>%#\/THIS COMMAND TYPES THE PAIR OF EXPRESSIONS CONSIDERED AS A
FLOATING POINT NUMBER.
.FILL
.SP 2
^-2.3/SYMBOL/DEFINITIONAND/KILLING/COMMANDS
.SP
/THESE COMMANDS ALL DEFINE THE SYMBOL AS A GLOBAL.
.SP
.FORMAT EXP
</S>:\/THIS COMMAND DEFINES THE VALUE OF THE SYMBOL </S> TO BE THE CURRENT
LOCATION.
.FILL
.SP
.FORMAT EXP
</W><^B<</S>:\/THIS COMMAND DEFINES </S> TO HAVE THE VALUE OF </W>.
.FILL
.SP
.FORMAT EXP
</W><^B<</S>;/O\/THIS COMMAND DEFINES </S> AS AN OPCODE WITH VALUE </W>.
.FILL
.SP
.FORMAT EXP
;/K\^C(KILL) /THIS COMMAND RESETS /D/D/T'S SYMBOL TABLE TO ITS INITIAL
STATE. ^CDDT WILL TYPE BACK "--/O/K" AND WAIT FOR A CONFIRMING DOT.
/ANY OTHER CHARACTER WILL ABORT THE COMMAND.
.FILL
.SP
.FORMAT EXP
</S>;/K\^C(KILL) /THIS COMMAND REMOVES ONLY THE SYMBOL </S> FROM THE SYMBOL
TABLE.
.FILL
.SP
.FORMAT EXP
</S>&;/K\^C(KILL) /THIS COMMAND REMOVES ALL SYMBOLS LOCAL TO TO THE BLOCK
NAMED </S> FROM THE SYMBOL TABLE, AS WELL AS REMOVING THE BLOCK NAME ITSELF.
.FILL
.SP
.FORMAT EXP
%/K\/THIS COMMAND WILL REMOVE ^IALL UNDEFINED SYMBOLS FROM /D/D/T'S SYMBOL
TABLE.
/THIS IMPLIES THAT ALL REFERENCES TO UNDEFINED SYMBOLS WILL BE LOST.
^CDDT WILL TYPE "--/O/K" AND EXPECT A CONFIRMING DOT.
.FILL
.SP 2
^-2.4/MODE/CHANGING/COMMANDS
.SP
.FORMAT EXP
"\/THIS COMMAND IS FOLLOWED BY A STRING OF ARBITRARY CHARACTERS TERMINATED
BY CONTROL-/D.
/IF A CELL IS OPEN, THE STRING WILL BE INSERTED INTO SUCCESSIVE LOCATIONS
PACKED 3 CHARACTERS PER WORD; OTHERWISE, CHARACTERS BEYOND THE THIRD
WILL BE THROWN AWAY AND THE RESULT TREATED AS A CONSTANT.
/FOR EXAMPLE, IF NO REGISTER IS OPEN, "^UABCDE^LCONTROL-/D= YIELDS 10221043.
.FILL
.SP
.FORMAT EXP
;/D\^C(DECIMAL) /THIS COMMAND CHANGES THE CURRENT RADIX TO DECIMAL.
(SEE /SECTION 1.4).
.FILL
.SP
.FORMAT EXP
;/O\^C(OCTAL) /THIS COMMAND CHANGES THE CURRENT RADIX TO OCTAL.
.FILL
.SP
.FORMAT EXP
</E>;/R\^C(RADIX) /THIS COMMAND SETS THE CURRENT RADIX TO THE VALUE OF THE
EXPRESSION, WHICH MUST BE GREATER THAN OR EQUAL TO 2.
.FILL
.SP
.FORMAT EXP
;[\^C(CONSTANT) /THIS COMMAND CHANGES THE WORD PRINTOUT MODE TO CONSTANT,
I.E., MAKES ^/ EQUIVALENT TO [.
.FILL
.SP
.FORMAT EXP
;]\^C(SYMBOLIC) /THIS COMMAND CHANGES THE WORD PRINTOUT MODE TO SYMBOLIC,
I.E., MAKES ^/ EQUIVALENT TO ].
.FILL
.SP
.FORMAT EXP
;"\^C(ASCII) /THIS COMMAND MAKES ^/ EQUIVALENT TO ".
.FILL
.SP
.FORMAT EXP
;$\^C(SIGNED ^CINTEGER) /THIS COMMAND MAKES ^/ EQUIVALENT TO $.
.FILL
.SP
.FORMAT EXP
;@\^C(FORMATTED) /THIS COMMAND MAKES ^/ EQUIVALENT TO @.
.FILL
.SP
.FORMAT EXP
;/R\^C(RELATIVE) /THIS COMMAND CHANGES THE ADDRESS PRINTOUT MODE TO RELATIVE
(SYMBOLIC).
/THIS DETERMINES THE FORMAT FOR THE OUTPUT OF ADDRESSES, BOTH IN
SYMBOLIC EXPRESSIONS AND WHEN GENERATED BY LINE FEED AND UP ARROW.
.FILL
.SP
.FORMAT EXP
;/V\^C(ABSOLUTE) /THIS COMMAND CHANGES THE ADDRESS PRINTOUT MODE TO ABSOLUTE.
.FILL
.SP
.FORMAT EXP
;3\(3 ^CCHARS^/WORD) /THIS SETS THE " AND ' COMMANDS TO ACT ON 8 BIT
CHARACTERS PACKED 3 PER WORD.
.FILL
.SP
.FORMAT EXP
;4\(4 ^CCHARS^/WORD) /THIS COMMAND SETS " AND ' COMMANDS TO OPERATE ON 6
BIT CHARACTERS PACKED 4 PER WORD.
.FILL
.SP 2
^-2.5/BREAKPOINT/COMMANDS
.SP
 /THERE ARE FOUR BREAKPOINTS IN ^CDDT.
/THE FIRST ONE IS CALLED THE SPECIAL BREAKPOINT.
/THE REMAINING 3 ARE CALLED REGULAR BREAKPOINTS.
/IF A PROGRAM ATTEMPTS TO EXECUTE THE INSTRUCTION AT AN ADDRESS AT WHICH
A BREAKPOINT IS SET, CONTROL RETURNS TO ^CDDT WHICH WILL PRINT A BREAK MESSAGE
AND AWAIT FURTHER COMMANDS.
/THE BREAK OCCURS BEFORE THE EXECUTION OF THE INSTRUCTION IN THE BREAKPOINT
LOCATION.
;/L IS SET TO THE LOCATION AT WHICH THE BREAK OCCURED.
/THE BREAK MESSAGE WILL NORMALLY PRINT THE ADDRESS OF THE BREAK FOLLOWED BY
THE CONTENTS OF ANY OF THE CENTRAL REGISTERS WHICH HAVE CHANGED SINCE THE
LAST BREAK.
/IF IT IS THE FIRST BREAK AFTER A ;/G THEN ALL THE REGISTERS WILL BE TYPED.
/FURTHERMORE, IF A REGISTER HAS NOT BEEN PRINTED IN THE LAST TEN BREAK
MESSAGES, THEN IT WILL BE PRINTED ANYWAY IN THE FORM ;/A=<EXPRESSION>, INSTEAD
OF THE NORMAL FORM ;/A<^B-<EXPRESSION>/
/THE CONTENTS OF THE BREAK LOCATION WILL ALSO BE TYPED IN THE BREAK MESSAGE
IF THE SPECIAL SYMBOL %/I IS SET TO A NON-NEGATIVE VALUE.
/THE TYPING OF THE BREAK ADDRESS CAN BE SUPRESSED BY SETTING THE SPECIAL
SYMBOL %/P TO A NON-NEGATIVE VALUE.
/IF ONE INSTRUCTION IS EXECUTED BY THE ;/N OR ;/S COMMANDS, THEN THE BREAK
MESSAGE WILL INCLUDE THE ADDRESS AND NEW CONTENTS OF ANY CELL MODIFIED AS A
RESULT OF EXECUTING THAT INSTRUCTION.
/IN ADDITION TO THESE BREAKPOINTS THERE IS THE CONDITIONAL BREAKPOINT
FACILITY (SEE THE SECTION ON CONDITIONAL BREAKING).
.SP
.FORMAT EXP
</E>!\^C(SET ^CSPECIAL ^CBREAKPOINT) /THIS COMMAND SETS THE SPECIAL
BREAKPOINT TO THE VALUE </E>.
/THE PREVIOUS VALUE OF THE SPECIAL BREAKPOINT WILL OF COURSE BE LOST.
.FILL
.SP
.FORMAT EXP
!\^C(CLEAR ^CSPECIAL ^CBREAKPOINT) /THIS COMMAND CLEARS THE SPECIAL BREAKPOINT.
.FILL
.SP
.FORMAT EXP
</E>;!\^C(SET ^CSPECIAL ^CBREAKPOINT) /THIS COMMAND SETS A REGULAR BREAKPOINT TO
THE VALUE </E>.
/IF ALL THE REGULAR BREAKPOINTS ARE ALREADY SET THEN ^CDDT WILL TYPE BACK
"^CFULL?".
/IF A BREAKPOINT ALREADY EXISTS WITH THAT VALUE THEN ^CDDT WILL TYPE A "?".
.FILL
.SP
.FORMAT EXP
</E>%!\^C(CLEAR ^CREGULAR ^CBREAKPOINT) /THIS COMMAND WILL CLEAR A REGULAR
BREAKPOINT THAT HAS THE VALUE </E>.
IF NO SUCH BREAKPOINT EXISTS, THEN ^CDDT WILL TYPE "?".
.FILL
.SP
.FORMAT EXP
%!\^C(CLEAR ^CALL ^CBREAKPOINTS) /THIS COMMAND CLEARS ALL 4 BREAKPOINTS.
.FILL
.SP
.FORMAT EXP
;!\^C(LIST ^CBREAKPOINTS) /THIS COMMAND LISTS ALL BREAKPOINTS, THE
SPECIAL BREAKPOINT FIRST.
.FILL
.SP 2
^-2.6/CONDITIONAL/BREAKING
.SP
 /CONDITIONAL BREAKING IS A FEATURE WHICH ALLOWS THE USER TO RUN A PROGRAM
AND HAVE IT BREAK ON THE EXACT INSTRUCTION WHEN A SPECIFIED CONDITION BECOMES
TRUE.
/CONDITIONAL BREAKING IS IMPLEMENTED BY LOADING AN INTERPRETER AT ;/F WHEN
CONTROL IS TRANSFERRED TO THE USER PROGRAM.
/THEREFORE, IF CONDITIONAL BREAKING IS USED, APPROXIMATELY 200 CELLS FOLLOWING
;/F WILL BE CLOBBERED.
/CONDITIONAL BREAK MODE IS ENTERED BY SETTING THE SYMBOL %/B TO A NON-NEGATIVE
NUMBER.
/A NEGATIVE VALUE OF %/B RETURNS ^CDDT TO NORMAL BREAK MODE.
/TO USE CONDITIONAL BREAKING, PUT ^CDDT IN CONDITIONAL BREAK MODE AND
SPECIFY A CONDITION TO BREAK ON USING THE %/E COMMAND.
/THEREAFTER, ANY TRANSFER OF CONTROL TO THE USER PROGRAM WILL CAUSE
CONDITIONAL BREAKING TO TAKE EFFECT.
/A USER PROGRAM WILL EXECUTE ABOUT 15 TIMES SLOWER IN CONDITIONAL
BREAK MODE.
 /TO SPECIFY A BREAK CONDITION TYPE %/E.
^CDDT WILL THEN TYPE A CARRIAGE RETURN AND EXPECT THE USER TO TYPE A LOGICAL
EXPRESSION WHICH OBEYS THE FOLLOWING SYNTAX.
/A CONDITIONAL EXPRESSION IS TERMINATED WITH A /CONTROL-/D.
/CONTROL-/A MAY BE USED TO DELETE CHARACTERS TYPED.
/WHEN THE VALUE OF THIS EXPRESSION BECOMES TRUE THEN THE CONDITION IS
SATISFIED AND ^CDDT WILL CAUSE THE USER PROGRAM TO BREAK.
.SP
.IN 5
^I/SYNTAX:
.SP
.FORMAT EXP
<EXPR>\<^B- ANY NUMBER OF <TERM> SEPARATED BY !
.FILL
.SP
.FORMAT EXP
<TERM>\<^B- ANY NUMBER OF <PRIMARY> SEPARATED BY *
.FILL
.SP
.FORMAT EXP
<PRIMARY>\<^B- <OPERAND1> <RELATIONAL> <OPERAND2>
.FILL
.SP
.FORMAT EXP
<RELATNL>\<^B- = OR # OR > OR < OR <= OR >=
.FILL
.SP
.FORMAT EXP
<OPERND1>\<^B- ANY NUMBER OF <OPERAND2> SEPARATED BY <OPERATOR>
.FILL
.SP
.FORMAT EXP
<OPERATOR>\<^B- + OR - OR @ OR BLANK
.FILL
.SP
.FORMAT EXP
<OPERND2>\<^B- [$] (<CONSTANT> OR <SYMBOL> OR <SPECIAL SYMBOL>
.FILL
.SP
.FORMAT EXP
<SP.SYMBL>\<^B- ;/A OR ;/B OR ;/X OR ;/L OR ;/E OR ;/O
.FILL
.SP
/A CONSTANT MAY BE ANY LEGAL ^CDDT CONSTANT.
/A SYMBOL MAY BE ANY DEFINED SYMBOL OPTIONALLY PRECEEDED BY A BLOCK NAME
AND &.
.SP
.IN 5
^I/SEMANTICS:
 /EXPRESSIONS ARE COMPILED LEFT TO RIGHT.
/THE STRENGTH OF BINDING OF OPERATORS IS AS FOLLOWS:
.SP
<OPERATORS>,<RELATIONALS>,*,!.
.SP
.FORMAT EXP
!\MEANS ^CCR
.FILL
.SP
.FORMAT EXP
*\MEANS ^CAND
.FILL
.SP
.FORMAT EXP
@\MEANS ^CMASK I.E. EXTRACT SECOND OPERAND FROM FIRST OPERAND.
.FILL
.SP
.FORMAT EXP
$\MEANS LITERAL AS OPPOSED TO "CONTENTS OF".
.FILL
.SP
.FORMAT EXP
BLANK\MEANS ADDRESS ADD, E.G. "/B 3" IS THE CONTENTS OF /B+3
.FILL
.SP
.FORMAT EXP
+\MEANS ADD
.FILL
.SP
.FORMAT EXP
-\MEANS SUBTRACT
.FILL
.SP
.FORMAT EXP
;/A,;/B,;/X\ARE THE CONTENTS OF THE CENTRAL REGISTERS.
.FILL
.SP
.FORMAT EXP
;/L\IS THE PROGRAM COUNTER.
.FILL
.SP
.FORMAT EXP
;/E\IS THE EFFECTIVE ADDRESS OF THE CURRENT INSTRUCTION.
.FILL
.SP
.FORMAT EXP
;/O\IS THE 7-BIT OPCODE FIELD OF THE CURRENT INSTRUCTION RIGHT JUSTIFIED.
.FILL
.SP
/EXAMPLES:
.CE
/A 3=;/E*;/O=$43!/B+3=$123
 /THIS EXPRESSION WILL CAUSE CONDITIONAL BREAKING IF THE CONTENTS OF /A+3
IS EQUAL TO THE EFFECTIVE ADDRESS OF THE CURRENT INSTRUCTION AT THE SAME TIME
THAT THE OPCODE OF THE CURRENT INSTRUCTION IS 43 OR IF THE CONTENTS OF /B PLUS
THE CONTENTS OF 3 EQUALS 123.
.SP 2
^-2.7/PROGRAM/EXECUTION/COMMANDS
.SP
.FORMAT EXP
</A>,</A>;/G\(/G/O /T/O) /THIS COMMAND ALLOWS TRANSFER OF CONTROL TO THE USER PROGRAM.
/THE FIRST ARGUMENT, IF GIVEN, SPECIFIES THE STARTING ADDRESS.
/THE SECOND ARGUMENT, IF GIVEN, SPECIFIES THE NUMBER OF BREAKPOINTS THE PROGRAM
WILL PASS THROUGH BEFORE THE PROGRAM HALTS.
/THE FIRST ARGUMENT, IF MISSING, IS ASSUMED TO BE THE CURRENT LOCATION.
/THE SECOND ARGUMENT, IF MISSING, IS ASSUMED TO BE ONE.
/IF THERE ARE ANY UNDEFINED SYMBOLS IN /D/D/T'S SYMBOL TABLE, THEN ^CDDT WILL
TYPE "--/O/K" AND EXPECT A CONFIRMING DOT TO BE TYPED BEFORE IT WILL ALLOW
TRANSFER OF CONTROL TO THE USER PROGRAM.
/THIS IS TRUE ALSO OF ALL THE OTHER PROGRAM EXECUTION COMMANDS.
.SP
.FORMAT EXP
</A>,</A>;/P\^C(PROCEED) /THIS COMMAND ALSO CAUSES TRANSFER OF CONTROL TO
THE USER PROGRAM, BUT IT IS DESIGNED TO RESTART A PROGRAM AFTER A BREAKPOINT.
/IT IS IDENTICAL TO THE ;/G COMMAND, WITH THE FOLLOWING EXCEPTIONS.
/THE ;/P COMMAND WILL NOT BREAK ON THE FIRST INSTRUCTION EXECUTED IF A
BREAKPOINT IS SET AT THAT ADDRESS, WHEREAS THE ;/G COMMAND WILL BREAK.
/THE ARGUMENTS OF THE ;/P COMMAND ARE INTERPRETED IN THE OPPOSITE ORDER
OF THE ;/G COMMAND.
/ALL CENTRAL REGISTERS WILL BE PRINTED AT A BREAK AFTER A ;/G COMMAND,
WHILE ONLY THE CHANGED CENTRAL REGISTERS ARE PRINTED AFTER THE ;/P  COMMAND.
.FILL
.SP
.FORMAT EXP
</A>,</A>;/V\^C(ADVANCE) /THIS COMMAND IS IDENTICAL TO THE ;/P COMMAND EXCEPT
THAT A BREAK MESSAGE IS PRINTED AT EVERY BREAKPOINT ENCOUNTERED DURING
EXECUTION OF THE PROGRAM, WHEREAS ;/P WILL PRINT A BREAK MESSAGE ONLY AFTER
THE LAST BREAKPOINT.
.FILL
.SP
.FORMAT EXP
</A>,</A>;/N\^C(NEXT) /THIS COMMAND CAUSES THE NUMBER OF INSTRUCTIONS SPECIFIED
BY THE FIRST ARGUMENT TO BE EXECUTED STARTING AT THE ADDRESS SPECIFIED BY THE
SECOND ARGUMENT.
/IF THE FIRST ARGUMENT IS OMMITED THEN ;/L IS ASSUMED.
/A BREAK MESSAGE IS PRINTED AT THE END OF THE EXECUTION.
.FILL
.SP
.FORMAT EXP
</A>,</A>;/S\^C(STEP) /THIS COMMAND IS IDENTICAL TO THE ;/N COMMAND EXCEPT
THAT A BREAK MESSAGE IS PRINTED AFTER THE EXECUTION OF EVERY INSTRUCTION.
.FILL
.SP
.FORMAT EXP
</E>;/U\^C(EXECUTE) /THIS COMMAND CAUSES THE VALUE OF THE EXPRESSION TO BE
EXECUTED AS AN INSTRUCTION.
/IF IT IS A BRANCH, CONTROL GOES TO THE LOCATION BRANCHED TO.
/IN ALL OTHER CASES CONTROL REMAINS WITH ^CDDT.
/A SINGLE CARRIAGE RETURN IS TYPED BEFORE EXECUTION OF THE INSTRUCTION.
/IF THE INSTRUCTION DOES NOT BRANCH AND DOES NOT SKIP, OR RETURNS TO THE
FOLLOWING LOCATION, A $ AND ANOTHER CARRIAGE RETURN ARE TYPED AFTER ITS
EXECUTION.
/IF THE INSTRUCTION DOES SKIP, TWO DOLLAR SIGNS ($$) ARE TYPED FOLLOWED BY
A CARRIAGE RETURN.
.FILL
.SP
 ^CDDT MAY BE PUT IN POP TRACE MODE BY SETTING THE SPECIAL SYMBOL %/O TO
A NON-NEGATIVE VALUE.
/A NEGATIVE VALUE WILL CAUSE ^CDDT TO LEAVE POP TRACE MODE.
/IN POP TRACE MODE ALL PROGRAMMED OPERATORS TOGETHER WITH THEIR ASSOCIATED
SUBROUTINES WILL BE TREATED LIKE MACHINE INSTRUCTIONS FOR THE ;/N AND ;/S
COMMANDS, I.E., THE BREAK WILL NOT OCCUR UNTIL CONTROL RETURNS TO THE
LOCATION FOLLOWING THE POP.
/SINCE ^CDDT DETERMINES WHEN IT SHOULD BREAK BY COUNTING /P/O/PS, /B/R/MS,
/S/B/R/MS, /B/R/R/S, AND /S/B/R/RS, IT CAN BE FOOLED BY /P/O/PS WHICH DO
SUFFICIENTLY PECULIAR THINGS.
 ^CDDT CAN BE PUT IN SUBROUTINE TRACE MODE BY SETTING THE SPECIAL SYMBOL %/U
TO A NON-NEGATIVE VALUE AND REMOVED FROM THIS MODE BY SETTING %/U TO A
NEGATIVE VALUE.
/IN SUBROUTINE TRACE MODE /B/R/MS AND /S/B/R/MS TOGETHER WITH THEIR
ASSOCIATED SUBROUTINES WILL BE TREATED AS SINGLE INSTRUCTION BY THE ;/N
AND ;/S COMMANDS.
 /ATTEMPTS TO PROCEED THROUGH CERTAIN INSTRUCTIONS HAVING TO DO WITH FORKS
WILL PRODUCE ERRONEOUS RESULTS, AND BREAKPOINTS ENCOUNTERED WHEN THE PROGRAM
IS RUNNING IN A FORK WILL NOT DO THE RIGHT THING.
/ATTEMPTS TO PROCEED THROUGH UNREASONABLE INSTRUCTIONS WILL CAUSE THE ERROR
COMMENT $>> TO BE TYPED BY ^CDDT.
/ALSO, WHEN CONTROL RETURNS TO ^CDDT FROM A BREAKPOINT OR RUBOUT, THE
INTERRUPT MASK FOR THE PROGRAM IS CLEARED.
.SP 2
^-2.8/INPUT^//OUTPUT/COMMANDS
.SP
.FORMAT EXP
</A>;/Y </F>\^CDDT EXPECTS TO FIND A BINARY PROGRAM ON THE FILE </F>.
/IF THE PROGRAM IS ABSOLUTE, IT IS LOADED IN.
/IF IT IS RELOCATBLE, IT IS READ IN AND RELOCATED AT THE LOCATION SPECIFIED
BY </A>.
/IF THE EXPRESSION IS OMITTED, RELOCATABLE LOADING COMMENCES AT LOCATION ;/F.
;/F IS UPDATED WHEN THE FILE IS LOADED.
/AFTER READING IS COMPLETE, THE FIRST LOCATION NOT USED BY THE PROGRAM IS
TYPED OUT.
/ANY LOCAL SYMBOLS OR OPCODE DEFINITIONS ON THE BINARY FILE ARE IGNORED.
.FILL
.SP
.FORMAT EXP
</A>;/T </F>\/THIS COMMAND IS IDENTICAL TO ;/Y EXCEPT THAT IT ALSO READS LOCAL
SYMBOLS AND OPCODE DEFINTIONS FROM THE FILE AND ADDS THEM TO /D/D/T'S SYMBOL
TABLE.
/ANY SYMBOLS ON THE FILE WILL BE RECOGNIZED BY ^CDDT THEREAFTER.
.FILL
.SP
.FORMAT EXP
</A>%/Y </F>\/THIS COMMAND IS IDENTICAL TO THE ;/Y COMMAND EXCEPT THAT IT
WILL ALSO READ IN OPCODE DEFINITIONS AND PUT THEM IN /D/D/T'S SYMBOL TABLE,
BUT IT WILL STILL IGNORE LOCAL SYMBOL DEFINITIONS.
.FILL
.SP
/THE FOLLOWING TWO POINTS SHOULD BE NOTED IN CONNECTION WITH ;/Y, %/Y, OR
;/T COMMANDS.
.SP
.FORMAT SUBEXP
(1)\/THE USE OF AN EXPRESSION BEFORE ;/T, OR %/Y OR ;/Y WHEN THE
FILE IS ABSOLUTE (I.E. ^CSAVE FILE) IS AN ERROR.
.FILL
.SP
.FORMAT SUBEXP
(2)\/THE BLOCK READ IN BECOMES THE PRIMARY BLOCK.
.FILL
.SP
.FORMAT SUBEXP
(3)\/SEVERAL FILES CAN BE LOADED IN A ROW WITH GREATER SPEED IF A SEMI-COLON
IS USED FOR THE FILE NAME TERMINATOR INSTEAD OF A DOT.
/USING A SEMI-COLON CAUSES THE RESORTING OF THE ^CDDT SYMBOL TABLE TO BE
SUPRESSED AT THE END OF LOADING.
.FILL
.SP
.FORMAT EXP
;/W </F>\/CAUSES ALL GLOBAL SYMBOLS WITH THEIR VALUES TO BE WRITTEN ON THE
SPECIFIED FILE, IN A FORMAT WHICH CAN BE READ BACK IN WITH ;/T.
.FILL
.SP
.FORMAT EXP
;/C </F>\/CAUSES ALL SYMBOLS TO BE WRITTEN ON THE SPECIFIED FILE.
.FILL
.SP 2
^-2.9/SEARCH/COMMANDS
.SP
.FORMAT EXP
</W>;/W\^C(WORD ^CSEARCH) /THIS COMMAND SEARCHES MEMORY BETWEEN THE LIMITS
;1 AND ;2 FOR CELLS WHOSE CONTENTS MATCH </W> WHEN BOTH ARE MASKED BY THE
VALUE OF ;/M.
/THE LOCATIONS AND CONTENTS OF ALL SUCH CELLS ARE TYPED OUT.
.FILL
.SP
.FORMAT EXP
</W><^B<</W>;/W\/WILL PERFORM THE SAME SEARCH, AND IN ADDITION PERFORMS
THE FOLLOWING REPLACEMENT: IF /Q IS THE ADDRESS OF A CELL SUCH THAT (/Q)
[^CAND] ;/M=2ND</W>, THEN THE MASKED PART OF 1ST</W> WILL REPLACE THE MASKED PART OF
(/Q).
.FILL
.SP
.FORMAT EXP
</W>;#\^C(NOT ^CWORD ^CSEARCH) /THIS IS THE SAME AS ;/W EXCEPT THAT ALL
CELLS WHICH DO NOT MATCH </W> WILL BE PRINTED.
/THIS IS USEFUL, FOR EXAMPLE, IN FINDING AND PRINTING ALL NON-ZERO CELLS
IN A GIVEN PART OF MEMORY.
.FILL
.SP
.FORMAT EXP
</E>;/E\^C(EFFECTIVE ^CADDRESS ^CSEARCH) /THIS COMMAND SEARCHES MEMORY BETWEEN THE
LIMITS ;1 AND ;2 FOR EFFECTIVE ADDRESSES EQUAL TO </E>.
/INDEXING, IF SPECIFIED, IS DONE WITH THE VALUE OF ;/X.
/INDIRECT ADDRESS CHAINS ARE FOLLOWED TO A DEPTH OF 64.
/THE ADDRESSES AND CONTENTS OF ALL WORDS FOUND ARE TYPED OUT.
/WHEN ;/W OR ;/E IS COMPLETE, '.' IS LEFT POINTING TO THE LAST CELL TYPED
OUT.
.FILL
.SP 2
^-2.10/PATCH/COMMANDS
.SP
.FORMAT EXP
;)\/THIS COMMAND CAUSE A PATCH TO BE INSERTED BEFORE THE INSTRUCTION IN THE
OPEN CELL.
/A CELL MUST BE OPEN FOR THIS COMMAND TO BE LEGAL.
^CDDT INSERTS IN THIS LOCATION A BRANCH TO THE CURRENT VALUE OF ;/F.
/WHEN THE PATCH IS DONE, ;/F IS UPDATED.
/IT THEN GIVES A CARRIAGE RETURN AND A ) AND WAITS FOR THE USER TO TYPE IN
THE PATCH.
/LEGAL INPUT CONSISTS OF A SERIES OF EXPRESSIONS WHOSE VALUES ARE INSERTED IN
SUCCESSIVE LOCATIONS IN MEMORY.
/EACH OF THESE EXPRESSIONS SHOULD BE TERMINATED BY A LINE FEED OR ;(SPACE),
EXACTLY AS THOUGH THE PROGRAM WERE BEING TYPED IN WITH THE ^\ COMMAND
INSTEAD OF AS A PATCH.
/THE ^^ COMMAND MAY BE GIVEN IN PLACE OF THE LINE FEED AND HAS ITS USUAL
MEANING, EXCEPT THAT THE CONTENTS OF THE PREVIOUS LOCATION ARE NOT TYPED.
/TWO OTHER COMMANDS ARE IN PATCH MODE.
/THEY ARE:
.SP
.FORMAT SUBEXP
(1)\/COLON, WHICH MAY BE USED TO DEFINE A SYMBOL WITH VALUE EQUAL TO THE
CURRENT LOCATION.
.FILL
.SP
.FORMAT SUBEXP
(2)\/CARRIAGE /RETURN, WHICH TERMINATES THE PATCH.
/WHEN THE PATCH IS TERMINATED, ^CDDT INSERTS IN THE NEXT AVAILABLE LOCATION
THE ORIGINAL CONTENTS OF THE LOCATION AT WHICH THE PATCH WAS INSERTED.
/IT THEN INSERTS IN THE FOLLOWING TWO LOCATIONS BRANCH INSTRUCTIONS TO THE
FIRST AND SECOND LOCATIONS FOLLOWING THE PATCH.
/THIS MEANS THAT IF THE PATCHED INSTRUCTION IS A SKIP INSTRUCTION, THE
PROGRAM WILL CONTINUE TO OPERATE CORRECTLY.
/ANY OTHER COMMAND GIVEN IN PATCH MODE MAY CAUSE UNPREDICTABLE ERRORS.
.FILL
.SP
.FORMAT EXP
;(\/THIS COMMAND IS IDENTICAL TO ;) COMMAND EXCEPT THAT IT PUTS THE INSTRUCTION
BEING PATCHED BEFORE THE NEW CODE INSERTED BY THE USER INSTEAD OF AFTER.
.FILL
.SP 2
^-2.11/MISCELLANEOUS/COMMANDS
.SP
.FORMAT EXP
;/Z\^C(ZERO) </E>,</E>;/Z
/SETS TO ZERO ALL LOCATIONS BETWEEN THE VALUE OF
THE FIRST EXPRESSION AND THAT OF THE SECOND.
</E><^B<</E>,</E>;/Z SETS TO THE VALUE OF THE FIRST EXPRESSION ALL
LOCATIONS BETWEN THE VALUES OF THE SECOND AND THIRD.
;/Z ALONE RELEASES ALL MEMORY ACCESSIBLE TO THE USER'S PROGRAM.
^CDDT WILL TYPE BACK "--/O/K" AND WAIT FOR A CONFIRMING DOT.
/IF THIS MEMORY IS RETURNED, DUE TO LATER ACCESS BY ^CDDT OR A PROGRAM, IT
WILL BE CLEARED TO ZERO.
.FILL
.SP
.FORMAT EXP
%&\^C(LIST ^CBLOCKS) /THIS COMMAND CAUSES ALL BLOCKS KNOWN TO ^CDDT TO
BE LISTED.
/IF PRINTING OF SYMBOLS IN THAT BLOCK HAS BEEN SUPRESSED, THEN A ;] WILL
BE TYPED FOLLOWING THE BLOCK NAME.
.FILL
.SP
.FORMAT EXP
</S>;]\^C(SUPRESS) /THIS COMMAND CAUSES SYMBOLS IN THE GIVEN BLOCK </S> TO
BE IGNORED WHEN ^CDDT PRINTS SYMBOLIC ADDRESSES.
.FILL
.SP
.FORMAT EXP
</S>;[\/THIS COMMAND REVERSES THE ACTION CAUSED BY THE ;] COMMAND.
.FILL
.SP
.FORMAT EXP
%/F\/THIS COMMAND ALLOWS THE USER TO EXIT ^CDDT, RETURNING TO THE EXECUTIVE
COMMAND PROCESSOR (@) OF THE ^CBCC 500.
.FILL
.SP
.FORMAT EXP
%/R\^C(PRINT ^CMAP) /THE CURRENT PROGRAM MAP IS PRINTED.
.FILL
.SP
.FORMAT EXP
</E>,</E>;/R\^C(SET ^CMAP) /THE PROGRAM MAP IS SET AS INDICATED.
/THIS IS EQUIVALENT TO PUTTING THE EXPRESSION IN /A AND /B RESPECTIVELY
AND EXECUTING ^CBRS 44.
.FILL
.SP
.FORMAT EXP
%/A\/THIS COMMAND LISTS ALL AMBIGUOUS SYMBOLS IN THE ^CDDT SYMBOL
TABLE AND LISTS THE BLOCKS THAT EACH AMBIGUOUS SYMBOL IS IN.
.FILL
.SP 2
^-2.12/SPECIAL/SYMBOLS
.SP
 ^CDDT HAS BUILT INTO IT A NUMBER OF SPECIAL SYMBOLS.
/THESE SYMBOLS CAN HAVE THEIR VALUES SET WITH THE FOLLOWING CONSTRUCT </E>;/A
WHERE ;/A IS A SPECIAL SYMBOL.
/IT IS TREATED LIKE ANY OTHER SYMBOL IN ^CDDT.
/WHENEVER ^CDDT EXECUTES ANY COMMAND INVOLVING EXECUTION OF INSTRUCTIONS
IN THE USER'S PROGRAM, IT RESTORES THE VALUES OF ALL MACHINE REGISTERS.
/IF ANY OF THESE VALUES HAVE BEEN CHANGED BY THE USER, IT IS THE CHANGED
VALUE THAT IS RESTORED.
.FILL
.SP
.FORMAT EXP
;/A\/THE VALUE OF THIS SYMBOL IS THE CONTENTS OF THE /A REGISTER.
.FILL
.SP
.FORMAT EXP
;/B\/CONTENTS OF THE /B REGISTER.
.FILL
.SP
.FORMAT EXP
;/X\/CONTENTS OF THE /X REGISTER.
.FILL
.SP
.FORMAT EXP
;/L\/CONTENTS OF THE PROGRAM COUNTER.
.FILL
.SP
.FORMAT EXP
;/M\/MASK USED BY WORD SEARCH COMMANDS.
.FILL
.SP
.FORMAT EXP
;0\/THE VALUE OF THIS SYMBOL +1 IS THE SMALLEST ADDRESS WHICH ^CDDT WILL
EVER ATTEMPT TO PRINT IN SYMBOLIC FORM.
.FILL
.SP
.FORMAT EXP
;1\/LOWER LIMIT FOR SEARCHES USING SEARCH COMMANDS.
.FILL
.SP
.FORMAT EXP
;2\/UPPER LIMIT FOR SEARCHES
.FILL
.SP
.FORMAT EXP
;/Q\/VALUE OF THE LAST EXPRESSION TYPED BY ^CDDT OR THE USER.
.FILL
.SP
.FORMAT EXP
;/F\/THE VALUE OF THIS SYMBOL IS THE ADDRESS OF THE LOWEST LOCATION IN CORE
NOT USED BY THE USER'S PROGRAM.
/NEW LITERALS AND PATCHES ARE INSERTED STARTING AT THIS ADDRESS.
/IT IS UPDATED BY PATCHES, LITERAL DEFINITIONS, AND LOAD COMMANDS.
.FILL
.SP
.FORMAT EXP
%/N\/THE VALUE OF THIS SYMBOL IS THE FIELD DESCRIPTOR FOR TYPE OUT AND
LOADING OF CELLS IN FORMATTED FORM.
.FILL
.SP
.FORMAT EXP
%/M\/THE VALUE OF THIS SYMBOL IS THE MASK FOR TYPE OUT AND LOADING OF CELLS
IN FORMATTED FORM.
.FILL
.SP
.FORMAT EXP
%/V\/THE VALUE OF THIS SYMBOL IS THE OPCODE NUMBER WHICH WILL NEXT BE USED
IN AUTOMATIC OPCODE DEFINITIONS USING THE OPCODE LINKING FEATURE OF THE ^CDDT
LOADER.
(SEE THE MANUAL ON BINARY FILE FORMAT FOR THE ^CDDT LOADER).
.FILL
.SP
/THE REMAINING SPECIAL SYMBOLS ARE USED TO CONTROL MODES IN ^CDDT.
/THE SPECIFIED ACTION WILL OCCUR IF THE SYMBOL IS SET TO A NON-NEGATIVE
VALUE.
.SP
.FORMAT EXP
%/B\/TURN ON CONDITIONAL BREAKING
.FILL
.SP
.FORMAT EXP
%/I\/PRINT THE INSTRUCTION AT ;/L AS PART OF A BREAK MESSAGE.
.FILL
.SP
.FORMAT EXP
%/P\/SUPRESS PRINTING OF THE VALUE OF THE PROGRAM COUNTER AS A PART OF THE
BREAK MESSAGE.
.FILL
.SP
.FORMAT EXP
%/O\/SUPRESS TRACING OF ^CPOP SUBROUTINES.
.FILL
.SP
.FORMAT EXP
%/U\/SUPRESS TRACING OF ^CBRM AND ^CSBRM SUBROUTINES.
.FILL
.SP 2
^-2.13/PANICS
.SP
^CDDT RECOGNIZES FOUR KINDS OF PANIC CONDITIONS:
.SP
.FORMAT SUBEXP
(1)\/ILLEGAL INSTRUCTION PANICS FROM THE USER'S PROGRAM.
.FILL
.SP
.FORMAT SUBEXP
(2)\/MEMORY ALLOCATION EXCEEDED PANICS FROM THE USER'S PROGRAM.
.FILL
.SP
.FORMAT SUBEXP
(3)\/PANICS GENERATED BY TYPING THE /CONTROL-/K KEY.
.FILL
.SP
.FORMAT SUBEXP
(4)\/PANICS GENERATED BY THE EXECUTION OF ^CBRS 10 IN THE USER'S PROGRAM.
.FILL
.SP
/FOR THE FIRST TWO OF THESE CONDITIONS ^CDDT PRINTS OUT A MESSAGE, THE
LOCATION OF THE INSTRUCTION AT WHICH THE PANIC OCCURED, AND THE CONTENTS
OF THIS LOCATION.
/THE MESSAGES ARE AS FOLLOWS:
.SP
.FORMAT SUBEXP
(1)\/ILLEGAL INSTRUCTION PANIC  /I>>
.FILL
.SP
.FORMAT SUBEXP
(2)\/MEMORY ALLOCATION PANIC  /M>>
.FILL
.SP
.FORMAT SUBEXP
(3)\/THE OTHER TWO TYPES OF PANICS CAUSE ^CDDT TO TYPE A BELL AND CARRIAGE
RETURN.
;/L AND '.' WILL BOTH BE EQUAL TO THE LOCATION AT WHICH THE PANIC OCCURRED.
.FILL
.SP
/IF MEMORY ALLOCATION EXCEEDED PANIC IS CAUSED BY A TRANSFER TO AN ILLEGAL
LOCATION, THE CONTENTS OF THE LOCATION CAUSING THE PANIC IS NOT AVAILABLE
AND ^CDDT, THEREFORE, TYPES A '?'.
.SP
/TWO OTHER PANIC CONDITIONS ARE POSSIBLE IN ^CDDT.
.SP
.FORMAT SUBEXP
(1)\/IF THE /CONTROL-/K KEY IS HIT TWICE WITH NO INTERVENING TYPING BY THE
USER, CONTROL LEAVES ^CDDT AND RETURNS TO THE EXECUTIVE COMMAND PROCESSOR. (@)
.FILL
.SP
.FORMAT SUBEXP
(2)\/IF THE /CONTROL-/K KEY IS HIT WHILE ^CDDT IS EXECUTING A COMMAND,
EXECUTION AND TYPEOUT ARE TERMINATED AND ^CDDT TYPES CARRIAGE RETURN AND
BELL AND THEN AWAITS FURTHER COMMANDS.
.FILL
>D LOCATIONS FOLLOWING THE PATCH.
/THIS MEANS THAT IF THE PATCHED INSTRUCTION IS A SKIP INSTRUCTION, THE
PROGRAM WILL CONTINUE TO OPERATE CORRECTLY.
/ANY OTHER COMMAND GIVEN IN PATCH MODE MAY CAUSE UNPREDICTABLE ERRORS.
.FILL
.SP
.FORMAT EXP
;(\/THIS COMMAND IS IDENTICAL TO ;) COMMAND EXCEPT THAT IT PUTS THE INSTRUCTION
BEING PATCHED BEFORE THE NEW CODE INSERTED BY THE USER INSTEAD OF AFTER.
.FILL
.SP 2
^-2.11/MISCELLANEOUS/COMMANDS
.SP
.FORMAT EXP
;/Z\^C(ZERO) </E>,</E>;/Z
/SETS TO ZERO ALL LOCATIONS BETWEEN THE VALUE OF
THE FIRST EXPRESSION AND THAT OF THE SECOND.
</E><^B<</E>,</E>;/Z SETS TO THE VALUE OF THE FIRST EXPRESSION ALL
LOCATIONS BETWEN THE VALUES OF THE SECOND AND THIRD.
;/Z ALONE RELEASES ALL MEMORY ACCESSIBLE TO THE USER'S PROGRAM.
^CDDT WILL TYPE BACK "--/O/K" AND WAIT FOR A CONFIRMING DOT.
/IF THIS MEMORY IS RETURNED, DUE TO LATER ACCESS BY ^CDDT OR A PROGRAM, IT
WILL BE CLEARED TO ZERO.
.FILL
.SP
.FORMAT EXP
%&\^C(LIST ^CBLOCKS) /THIS COMMAND CAUSES ALL BLOCKS KNOWN TO ^CDDT TO
BE LISTED.
/IF PRINTING OF SYMBOLS IN THAT BLOCK HAS BEEN SUPRESSED, THEN A ;] WILL
BE TYPED FOLLOWING THE BLOCK NAME.
.FILL
.SP
.FORMAT EXP
</S>;]\^C(SUPRESS) /THIS COMMAND CAUSES SYMBOLS IN THE GIVEN BLOCK </S> TO
BE IGNORED WHEN ^CDDT PRINTS SYMBOLIC ADDRESSES.
.FILL
.SP
.FORMAT EXP
</S>;[\/THIS COMMAND REVERSES THE ACTION CAUSED BY THE ;] COMMAND.
.FILL
.SP
.FORMAT EXP
%/F\/THIS COMMAND ALLOWS THE USER TO EXIT ^CDDT, RETURNING TO THE EXECUTIVE
COMMAND PROCESSOR (@) OF THE ^CBCC 500.
.FILL
.SP
.FORMAT EXP
%/R\^C(PRINT ^CMAP) /THE CURRENT PROGRAM MAP IS PRINTED.
.FILL
.SP
.FORMAT EXP
</E>,</E>;/R\^C(SET ^CMAP) /THE PROGRAM MAP IS SET AS INDICATED.
/THIS IS EQUIVALENT TO PUTTING THE EXPRESSION IN /A AND /B RESPECTIVELY
AND EXECUTING ^CBRS 44.
.FILL
.SP
.FORMAT EXP
%/A\/THIS COMMAND LISTS ALL AMBIGUOUS SYMBOLS IN THE ^CDDT SYMBOL
TABLE AND LISTS THE BLOCKS THAT EACH AMBIGUOUS SYMBOL IS IN.
.FILL
.SP 2
^-2.12/SPECIAL/SYMBOLS
.SP
 ^CDDT HAS BUILT INTO IT A NUMBER OF SPECIAL SYMBOLS.
/THESE SYMBOLS CAN HAVE THEIR VALUES SET WITH THE FOLLOWING CONSTRUCT </E>;/A
WHERE ;/A IS A SPECIAL SYMBOL.
/IT IS TREATED LIKE ANY OTHER SYMBOL IN ^CDDT.
/WHENEVER ^CDDT EXECUTES ANY COMMAND INVOLVING EXECUTION OF INSTRUCTIONS
IN THE USER'S PROGRAM, IT RESTORES THE VALUES OF AL.GL  STATE-MENTS RE-MAINS
.GL  REG-IS-TER REF-ER-ENCE REA-SON PUR-POSES PRE-DE-CLARED
.GL PRE-CE-DENCE NUM-BERS EQUIV-ALENT DIS-CUS-SION
.GL DEC-LARA-TIONS COM-PIL-ER BOUND-ARY BOUND-ARIES
.GL  SUB-SET RELA-TION PRE-CEDED OVER-FLOW OTHER-WISE
.GL OPER-ATION OPER-ANDS NOR-MAL-LY MUL-TI-PLI-CA-TION
.GL LO-CA-TION FOL-LOWED FAIL-URE EVAL-U-ATED DIF-FER-ING
.GL COR-RES-POND-ING AR-GU-MENTS AD-DRESS
.GL  UN-DE-FINED CON-TAIN SUP-PLIED
.GL  SUIT-ABLE OPER-ATORS FLEX-IBIL-ITY EX-PRES-SION
.GL  SIG-NI-FI-CANCE SEPAR-AT-ING CON-STANTS
.GL CHAR-AC-TER-IS-TIC CAP-ABLE CALI-FORNIA
.DEFINE FORMAT EXP L(A) J(B)
AAAAAAAABBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBB
.END FORMAT
.PAGING MODE OFF
.SP 5
.CE
^UQSPL REFERENCE MANUAL^L
.SP 3
.CE
/L. /P. /DEUTSCH
.SP
.CE
/B. /W. /LAMPSON
.SP 2
.CE
/UNIVERSITY OF /CALIFORNIA, /BERKELEY
.SP 20
.CE
/ISSUED /JUNE 12, 1967
.CE
/REVISED /FEBRUARY 20, 1969
.CE
/REVISED /JANUARY 22, 1970
.CE
/REVISED /DECEMBER 15, 1975
.HEADER ^CQSPL /MANUAL   /DECEMBER 15, 1975
.PAGE 1
       /THIS MANUAL PROVIDES A BRIEF BUT COMPLETE DESCRIPTION OF
A LANGUAGE INVENTED AND IMPLEMENTED IN 1967 BY /L. /PETER /DEUTSCH
AND /BUTLER /W. /LAMPSON OF THE /UNIVERSITY OF /CALIFORNIA,
/BERKELEY.
/THIS LANGUAGE IS INTENDED TO BE A SUITABLE VEHICLE FOR PROGRAMS 
WHICH WOULD OTHERWISE BE WRITTEN IN MACHINE LANGUAGE FOR REASONS OF
EFFICIENCY OR FLEXIBILITY.
/IT IS PART OF A SYSTEM WHICH ALSO INCLUDES A COMPILER CAPABLE OF
PRODUCING REASONABLY EFFICIENT OBJECT CODE AND A
.NOFILL
RUNTIME WHICH IMPLEMENTS  THE  INPUT^/OUTPUT AND  STRING-HAN-
.FILL
DLING FEATURES
OF THE LANGUAGE AS WELL AS A FAIRLY ELABORATE STORAGE ALLOCATOR.
/THE SYSTEM AUTOMATICALLY TAKES CARE OF PAGING ARRAYS AND
BLOCKS WITHIN THE MEMORY SYSTEM IF THEY HAVE BEEN SO DECLARED.
.SP 4
^I/THE ^I/LANGUAGE:
       /A ^CQSPL PROGRAM CONSISTS OF ^ISTATEMENTS SEPARATED BY
SEMICOLONS.
/CARRIAGE RETURNS AND BLANKS HAVE NO SIGNIFICANCE IN THE LANGUAGE
EXCEPT THAT THEY:
       1.  /ACT AS WORD (AND COMMENT) DELIMITERS.
.RM 9
.UN 4
.SP
2.  /ARE TAKEN LITERALLY IN STRING AND CHARACTER CONSTANTS.
.EM 9
.SP
[^I/WARNING:  /THIS IS ONE OF THE MANY FEATURES OF THE LANGUAGE WHICH
CAN CAUSE TROUBLE FOR THE UNWARY PROGRAMMER.
/IT IS QUITE POSSIBLE TO WRITE TWO STATEMENTS WITHOUT THE SEPARATING 
SEMICOLON AND WIND UP WITH SOMETHING WHICH IS LEGAL, BUT NOT AT ALL 
WHAT WAS INTENDED.
/IT IS A GENERAL CHARACTERISTIC OF ^CQSPL THAT IT IS VERY PERMISSIVE;
MANY THINGS ARE LEGAL WHICH ARE NOT AT ALL REASONABLE.
/THIS IS A NATURAL CONSEQUENCE OF THE GREAT FLEXIBILITY.]
       /A STATEMENT MAY BE:
.RM 5
       1.  /A COMMENT.
       2.  /AN END STATEMENT.
       3.  /AN EXPRESSION.
       4.  /A DECLARATION.
       5.  /A FUNCTION DEFINITION.
       6.  /A LISTING CONTROL STATEMENT.
.EM 5
.EJ
^I/COMMENTS:
       A COMMENT STATEMENT BEGINS WITH AN ASTERISK ("*") AND ENDS
WITH A ^ICARRIAGE ^IRETURN (NOT ";").
/IT MAY BEGIN ON A NEW LINE OR AFTER A SEMICOLON.  /THUS:
.SP 2
^U***  WE MAY HAVE A COMMENT WHICH LOOKS LIKE THIS.  ***^L
.SP 2
^ULABEL: XYZA+B-C     ^L;* ^UOR OUR COMMENT MAY GO HERE^L
.SP 5
^I/END ^I/STATEMENT:
       /A SINGLE END STATEMENT CONCLUDES THE PROGRAM.  /THUS:
.SP 2
^CEND;
.SP 2
OR,
.SP
       ^CEND;
.EJ
^I/EXPRESSIONS:
       /MOST STATEMENTS IN A PROGRAM ARE EXPRESSIONS.
/AN EXPRESSION IS MADE UP OF OPERANDS SEPARATED BY OPERATORS.
/PARENTHESES ARE ALLOWED TO ANY REASONABLE DEPTH.
/THE OPERATORS ARE ARRANGED IN A HIERARCHY OF BINDING STRENGTH OR
PRECEDENCE.
/THOSE AT THE TOP OF THE FOLLOWING LIST ARE EXECUTED LATEST; FOR
EXAMPLE, /A+/B*/C IS THE SAME AS /A+(/B*/C).
.SP 2
.RM 0,5
.FORMAT EXP
&\DENOTES SUCCESSIVE EVALUATION.
/THE VALUE OF THE RESULT IS THE VALUE OF THE LAST EXPRESSION IN THE 
STRING.
/THUS
.FILL
.SP
.RM 16
/A+/B & /C+/D;
.SP
.EM 8
OR MORE PLAUSIBLY
.SP
.RM 8
^UF(A,B) & G(L,Y);^L
.SP
.EM 8
WHICH CAUSES BOTH FUNCTIONS TO BE CALLED IN THE ORDER IN WHICH THEY
ARE WRITTEN.
.SP
.RM 8
.EM 16
.FORMAT EXP
^CWHERE\IS SIMILAR TO &, BUT CAUSES THE FOLLOWING EXPRESSION
TO BE EVALUATED FIRST.
/IT MAY NOT BE ITERATED.
/THUS
.FILL
.SP
.RM 16
^UF(X,Y) WHERE N14;^L
.SP
.EM 16
.SP
^UFOR,WHILE^L
.RM 8
TAKES THE FORM
.SP
.RM 8
<EXPRESSION> ^CFOR <FOR CLAUSE>;
.SP
.EM 8
OR
.SP
.RM 8
<EXPRESSION> ^CWHILE <EXPRESSION>;
.SP
.EM 8
/THE EXPRESSION IS EVALUATED REPEATEDLY UNDER CONTROL OF THE FOR
CALUSE (SEE BELOW FOR THE SYNTAX OF THIS CONSTRUCT).
/THE FINAL VALUE OF THE EXPRESSION INVOLVING ^CFOR OR ^CWHILE IS
UNDEFINED.
/OF COURSE, SOMETHING LIKE
.SP
.RM 8
^U(A[I])[J]0 FOR I=1 TO N FOR J=I TO M;^L
.SP
.EM 8
IS LEGAL.
.EJ
.EM 8
.FORMAT EXP
^CIF\TAKES THE FORM
.FILL
.SP
.RM 16
<EXPRESSION> /I/F <EXPRESSION> ^CELSE

.RM 3
<EXPRESSION;
.EM 3
.SP
.EM 8
/THE SECOND EXPRESSION IS EVALUATED.
/IF IT IS NON-ZERO, THE FIRST EXPRESSION IS EVALUATED.
/ITS VALUE BECOMES THE VALUE OF THE WHOLE THING, AND THE THIRD
EXPRESSION (WHICH, BY THE WAY, MAY CONTAIN ANOTHER ^CIF) IS SKIPPED.
/OTHERWISE THE FIRST EXPRESSION IS SKIPPED, AND THE THIRD IS EVALUATED.
/THUS
.SP
.RM 8
^UX4 IF Y=6 ELSE X5 IF Y>=0 ELSE X6;^L
.SP
.EM 8
/IF THE FINAL ^CELSE IS OMITTED, 0 WILL BE SUPPLIED.
.SP
.EM 8
.FORMAT EXP
\IS THE ASSIGNMENT OPERATOR.
/IT RANKS ON THE SAME LEVEL AS "." FOR ITS LEFT-HAND OPERAND, AND
JUST BELOW ^CIF FOR ITS RIGHT-HAND ONE.
/THE RIGHT-HAND OPERAND IS EVALUATED, AND ITS VALUE BECOMES THE VALUE
OF THE LEFT-HAND ONE.
/THE WHOLE EXPRESSION IS THEN TREATED AS THOUGH ONLY THE LEFT-HAND
SIDE HAD BEEN WRITTEN.
.FILL
.SP
.FORMAT EXP
^COR\IS THE LOGICAL ^IOR^E.
/IF EITHER OPERAND IS A RELATION OR AN EXPRESSION CONTAINING LOGICAL
OPERATORS CONNECTING AT LEAST ONE RELATION, THEN THE RESULT IS 0 OR 1
DEPENDING ON WHETHER BOTH OPERANDS ARE TRUE (NON-ZERO).
/IF BOTH OPERANDS HAVE ORDINARY VALUES, THESE VALUES ARE COMBINED WITH
THE MACHINE'S ^CMRG INSTRUCTION.
/THUS
.FILL
.SP
.RM 16
^UA<4 OR B<5^L
.SP
.EM 8
IS TRUE IF EITHER RELATION HOLDS; AND
.SP
.RM 8
^UA<4 OR X+1^L
.SP
.EM 8
IS TRUE IF /A<4 OR IF /X+1 IS NOT ZERO.
/IN BOTH THESE CASES, THE SECOND OPERAND IS NOT EVALUATED IF THE FIRST
ONE IS TRUE.
/BUT
.SP
.RM 8
^UF(X,Y) OR Z^L
.SP
.EM 8
IS THE 24-BIT LOGICAL ^IOR OF /Z AND THE VALUE OF THE FUNCTION.
/THE OPERANDS OF AN ^COR ARE NEVER RE-ORDERED.
.EM 8
.SP
^UAND, EOR^L
.RM 8
^CAND IS THE LOGICAL ^IAND.
/IT IS EXACTLY THE SAME AS ^COR IN THE WAY IT TREATS ITS OPERANDS,
DIFFERING ONLY IN THE RESULT.
.SP
^CEOR ALWAYS CONVERTS ITS OPERANDS TO VALUES AND USES THE 940 ^CEOR
INSTRUCTION.
.EM 8
.SP
.FORMAT EXP
^CNOT\IS THE LOGICAL ^INOT.
/IF ITS SINGLE OPERAND IS A RELATION (SEE ABOVE DISCUSSION OF ^COR) ITS
VALUE IS INVERTED (0 BECOMES 1, 1 BECOMES 0).
/OTHERWISE, A 24-BIT COMPLEMENT IS TAKEN (WITH ^CEOR =-1).
.FILL
.SP
= # < <= > >=
.RM 8
ARE THE RELATIONS.
/EACH ONE EVALUATES ITS OPERANDS AND THEN PERFORMS THE INDICATED TEST.
/FOR THESE AND ALL THE ARITHMETIC OPERATIONS, THE OPERANDS MAY BE
RE-ORDERED IF IT SUITS THE COMPILER'S CONVENIENCE.
.EM 8
.SP
.FORMAT EXP
^CMOD\/A ^CMOD /B IS THE REMAINDER OF /A^//B.
.FILL
.SP
.FORMAT EXP
+ -\PERFORM 24-BIT INTEGER ADDITION OR SUBTRACTION.
.FILL
.SP
* ^/ ^ULSH RSH LCY RCH^L
.RM 8
"*" AND "^/" PERFORM 24-BIT INTEGER MULTIPLICATION AND DIVISION.
/NO TEST IS MADE FOR OVERFLOW ON DIVISION.
.SP
/THE SHIFT OPERATIONS SHIFT THE FIRST OPERAND THE NUMBER OF PLACES
INDICATED BY THE SECOND OPERAND.
/VACATED BITS ARE REPLACED BY ZEROS (I.E., ONLY LOGICAL SHIFTING
IS DONE).
/THE CYCLE OPERATORS DO AN END-AROUND SHIFT.
.EM 8
.SP
+ - ^UGOTO RETURN SRETURN DO ^L(ALL UNARY OPERATORS)
.RM 8
/THE UNARY "+" AND "-" DO THE OBVIOUS THING.
^CDO IS A NOISE WORD AND IS IGNORED BY THE COMPILER.
/IT MAY BE CONVENIENT FOR CONSTRUCTIONS SUCH AS THIS:
.SP
.RM 8
^UDO F(X,Y);^L
.SP
.EM 8
ALTHOUGH
.SP
.RM 8
^UF(X,Y);^L
.SP
.EM 8
TECHNICALLY WILL WORK JUST AS WELL.
.SP
^CGOTO TRANSFERS TO THE ADDRESS WHICH IS THE VALUE OF ITS OPERAND
(SEE THE DISCUSSION OF LABELS BELOW.)
.SP
^CRETURN AND ^CSRETURN EVALUATE THEIR OPERAND(S), OF WHICH THERE MAY
BE AT MOST THREE.
/THEY LEAVE THE VALUES IN THE /A, /B, AND /X REGISTERS RESPECTIVELY AND
RETURN THROUGH THE RETURN LINK OF THE MOST RECENTLY DEFINED FUNCTION
(SEE BELOW).
/IF THIS IS NOT DESIRED, THE ^CRETURN MAY BE MODIFIED BY FOLLOWING IT 
WITH ^CFROM <EXPRESSION>.
/IN THIS CASE THE RETURN IS TO THE ADDRESS WHICH IS ONE GREATER
THAN THE VALUE OF THE EXPRESSION.
/THUS
.SP
.RM 8
^URETURN X+Y FROM FCNL;^L
.EM 8
.SP
/THE PROGRAMMER SHOULD BE SURE THAT ^CFCNL HAS A PROPER RETURN ADDRESS
IN IT, SINCE THE COMPILER WILL NOT CHECK THIS.
/THE OPERAND OF ^CRETURN MAY BE OMITTED.
^CRETURN IS A NORMAL RETURN, OR A NO-SKIP RETURN (FAILURE RETURN) FROM
FUNCTIONS CALLED WITH A FAILURE LOCATION (SEE FUNCTION CALLS BELOW).
^CSRETURN IS A SKIP RETURN, OR A NORMAL RETURN FROM FUNCTIONS CALLED WITH
A FAILURE LOCATION.
.EM 8
.SP
.FORMAT EXP
()\(FUNCTION CALLS)
.FILL
.RM 8
/THE ARGUMENTS OF THE FUNCTION ARE ENCLOSED IN THE PARENTHESES, SEPARATED
BY COMMAS.
/THUS
.SP
.RM 8
^UF(X,Y+5,Z);^L
.SP
.EM 8
/NOTE THAT THE FUNCTION MAY BE SPECIFIED BY AN EXPRESSION; THUS
.SP
.RM 8
^U(A+B)(X,Y+5,Z);^L
.EM 8
.SP
IS PERFECTLY LEGAL.
/IT CAUSES CONTROL TO BE TRANSFERRED TO THE LOCATION WHICH IS THE VALUE
OF THE EXPRESSION /A+/B WITH THE SPECIFIED ARGUMENTS.
^I/CAUTION^E!
THE ^IVALUES OF THE FIRST THREE FUNCTION ARGUMENTS ARE TRANSMITTED IN
THE /A, /B AND /X REGISTERS RESPECTIVELY.
/THE ADDRESSES OF THE VALUES OF FURTHER ARGUMENTS ARE PUT INTO ^CNOP
INSTRUCTIONS WHICH PRECEDE THE FUNCTION CALL.
/THE FUNCTION IS CALLED WITH A ^CPOP WHICH LEAVES THE LINK IN 0 AND
TRANSFERS TO THE LOCATION ADDRESSED BY IT.
/THUS
.SP
.RM 8
^UF(X,Y+5,Z,P+1,Q);^L
.EM 8
.SP
COMPILES THE CODE
.SP
.RM 8
^ULDA P; ADD =1; STA T:+1; 

LDA Y; ADD =5; CAB;

LDA X; LDX Z; NOP Q;

NOP T:+1; CALL* F;^L
.EM 8
.SP
/IN ADDITION TO 0 OR MORE ARGUMENTS, A FUNCTION CALL MAY ALSO HAVE
A ^IFAILURE ^ILOCATION.
/THIS CORRESPONDS TO A NO-SKIP RETURN (^CRETURN OPERATION) FROM A
FUNCTION WHICH ALSO HAS A SKIP-RETURN (^CSRETURN OPERATION).
/THE FAILURE LOCATION COMES AFTER THE ARGUMENTS AND IS PRECEDED BY A
COLON, THUS:
.SP
.RM 8
^UF(A1,A2:L);^L
.EM 8
.SP
/THE FAILURE LOCATION MAY BE EITHER A LABEL, IN WHICH CASE CONTROL WILL
GO THERE IN CASE OF FAILURE, OR ^CRETURN OR ^CSRETURN (POSSIBLY
FOLLOWED BY A ^ISINGLE EXPRESSION, WHICH WILL BE EXECUTED IN CASE OF
FAILURE.
/A FUNCTION NORMALLY RETURNS JUST ONE VALUE, WHICH IS PASSED IN THE 
/A-REGISTER.
/HOWEVER, IT MAY RETURN NO VALUES, OR UP TO THREE; ADDITIONAL VALUES
ARE PUT IN THE /B AND /X REGISTERS.
/THE FIRST VALUE IS ALWAYS THE ONE USED FOR FURTHER COMPUTATION
(E.G., IN SITUATIONS LIKE ^UF(X)+1^L), BUT ANY SUBSET OF THE VALUES
CAN BE SAVED BY PUTTING A ^ISAVE ^ILIST AFTER THE FAILURE LOCATION,
PRECEDED BY ANOTHER COLON, THUS:
.SP
.RM 8
^UF(X,Y:M:V1,V2,V3);^L
.EM 8
.SP
OR EVEN
.SP
.RM 8
^UF(P,R::X,Y,Z);^L
.EM 8
.SP
IF THERE IS NO FAILURE LOCATION.
/THE SAVE LIST MUST BE A LIST OF SIMPLE VARIABLES.
/IT IS ALL RIGHT TO HAVE A COMMA WITH NO NAME; THE CORRESPONDING 
RETURN VALUE JUST GETS LOST.
/SEE BELOW FOR A DISCUSSION OF FUNCTION DECLARATIONS.
/NOTE THAT THIS CALLING CONVENTION IS ^INOT THE SAVE AS ^CFORTRAN'^ES.
/IN PARTICULAR, IN THE ABOVE EXAMPLE NOTHING THE FUNCTION DOES (WITHIN 
REASON) CAN AFFECT THE VALUE OF /A OR /Z.
/IT IS POSSIBLE TO TRANSMIT THE ^IADDRESS OF /A OR /Z WITH THE
REFERENCE OPERATOR, HOWEVER (SEE BELOW).
.EM 8
.SP
.FORMAT EXP
.LITERAL
.\IS THE TAILING OPERATOR.
/THE "." MUST BE FOLLOWED BY A FIELD NAME (SEE DISCUSSION OF
DECLARATIONS BELOW).
/THE RESULTING OBJECT REFERS TO THE SPECIFIED FIELD RELATIVE TO 
THE ADDRESS WHICH IS THE VALUE OF THE FIRST OPERAND.
/THUS, IF WE HAVE
.FILL
.SP
.RM 16
^UDECLARE FIELD A(1), B(2);^L
.EM 8
.SP
AND IF /X CONTAINS 143, THEN /X./A REFERS TO LOCATION 144, /X./B
TO 145, /X./A./B TO 2 + THE CONTENTS OF LOCATION 144.
/A TAILED OPERAND MAY APPEAR ON EITHER SIDE OF AN ASSIGNMENT.
/SEE THE DISCUSSION OF ^CPAGED DECLARATIONS FOR THE TREATMENT OF
PAGED BLOCKS.
.EM 8
.SP
.FORMAT EXP
@ $\ARE THE REFERENCE AND INDIRECTION OPERATORS.
/THE REFERENCE OPERATOR "@" IS UNARY ONLY, AND INDIRECTION MAY BE
USED IN BOTH A UNARY AND BINARY FASHION.
/THE REFERENCE OPERATOR TAKES AN OPERAND WHICH MUST BE AN ADDRESS
(I.E., ACCEPTABLE ON THE LEFT SIDE OF AN ASSIGNMENT) AND RETURNS
THIS ADDRESS AS ITS VALUE.
/NOTE THAT THIS IMPLIES THAT ITERATION OF THE REFERENCE OPERATOR
IS ILLEGAL (IN FACT IT DOES NOT MAKE ANY SENSE).
.FILL
.RM 8
.SP
/THE INDIRECTION OPERATOR IN ITS UNARY SENSE EVALUATES ITS OPERAND
AND RETURNS THIS VALUE AS AN ^IADDRESS.
/THE SEQUENCE "@$" IS ALMOST EQUIVALENT TO NO OPERATION, EXCEPT
THAT "$" ON AN ADDRESS IS COMPILED WITH THE 940'S INDIRECT BIT
AND WILL THEREFORE BE AFFECTED BY THE PRESENCE OF INDIRECT OR INDEX
BITS IN THE CONTENTS OF ADDRESSES.
/IF WE HAVE WRITTEN
.RM 8
.SP
^UDECLARE FIELD S(0);^L
.EM 8
.SP
THEN <EXPRESSION>./S IS EQUIVALENT TO $<EXPRESSION>, WITH THE EXCEPTION
NOTED ABOVE.
.SP
/BINARY $ IS USED AS FOLLOWS.
/THE CONSTRUCT /T$/F IS ALMOST EQUIVALENT TO @/T./F.
/I.E., IT REFERS TO BE BITS OF /T (AND ^INOT THE WORD ADDRESSED BY
/T) SELECTED BY /F.
/THE WORD DISPLACEMENT OF /F IS IGNORED, AND /F MUST NOT CROSS A
WORD BOUNDARY.
.EM 8
.SP
.FORMAT EXP
[]\INDICATE SUBSCRIPTING.
/A ^ISINGLE SUBSCRIPT IS ALLOWED.
/AS WITH FUNCTION CALLS, THE OBJECT BEING SUBSCRIPTED MAY BE AN 
ARBITRARY EXPRESSION.
/IF IT HAS BEEN DECLARED AS AN ARRAY, THE COMPILER LOADS THE SUBSCRIPT
INTO THE /X REGISTER AND COMPILES AN INDIRECT REFERENCE THROUGH THE
ARRAY NAME.
/I.E., IT EXPECTS THE ARRAY NAME TO CONTAIN THE BASE ADDRESS OF THE
ARRAY WITH THE INDEX BIT ON.
/FOR ANY OTHER EXPRESSION THE "[]" OPERATOR IS EQUIVALENT TO "$"
PLUS ".".
/THUS
.FILL
.SP
.RM 16
^U(A-B)[C OR D]+1;^L
.EM 8
.SP
COMPILES AS
.SP
.RM 8
^ULDA C; MRG D; STA T;

LDA A; SUB B; ADD T;

XXA; LDA 0,2; ADD =1;^L
.EM 16
.EM 0,5
.EJ
^I/PRIMARIES:
       /THE PRIMARIES FOR EXPRESSIONS MAY BE NUMBERS, NAMES, STRING
CONSTANTS, OR CHARACTER CONSTANTS.
.SP 2
^INUMBERS
       /A NUMBER MAY BE AN INTEGER CONSTANT OR A REAL CONSTANT.
/AN INTEGER CONSTANT IS A STRING OF DIGITS, POSSIBLY FOLLOWED BY
/B OR /D, POSSIBLY FOLLOWED BY A SINGLE-DIGIT SCALE FACTOR.
/B MAKES THE NUMBER OCTAL; IF IT IS ABSENT, DECIMAL /D IS
ASSUMED.
/THUS 100/D = 1/D2 = 144/B =1/B2+44/B = 100 .
/A REAL CONSTANT IS OF THE FORM XXX.XXX/EXXX.
/EITHER THE DOT OR THE /E MUST BE PRESENT.
/IF THE DOT IS PRESENT, THERE MUST BE SOME DIGITS ^IBEFORE IT;
IF THE /E IS PRESENT, THERE MUST BE SOME DIGITS AFTER IT.
/FOR FURTHER DETAILS, CONSULT THE DESCRIPTION IN /R-21 OF THE ^CSIC
SYSPOP, WHICH IS USED TO CONVERT REAL CONSTANTS TO BINARY FORM.
.SP 2
^INAMES
       /A NAME IS A STRING OF ANY NUMBER OF LETTERS AND DIGITS
BEGINNING WITH A LETTER.
/ONLY THE FIRST SIX CHARACTERS OF THE NAME ARE SIGNIFICANT.
/A NAME MUST BE DECLARED (SEE BELOW).
/ALL NAMES EXCEPT PARAMETERS AND FIELDS ARE TREATED IN EXACTLY THE
SAME WAY WHEN THEY OCCUR IN EXPRESSIONS (EXCEPT FOR SUBSCRIPTING).
/E.G., A STRING NAME REFERS TO THE POINTER TO THE STRING DESCRIPTOR
WHICH IS THE VALUE OF THE NAME.
/THUS, IF /S IS A STRING
.SP
.RM 16
^USA+1;^L
.EM 16
.SP
SIMPLY STORES /A+1 INTO /S; THIS IS PROBABLY NOT REASONABLE.
/FUNCTIONS ARE PROVIDED TO CONVERT BETWEEN STRINGS AND NUMBERS.
.SP 2
^IRESERVED ^IWORDS
       /THERE ARE ABOUT 80 RESERVED WORDS (SEE /APPENDIX /B) WHICH
MAY NOT BE USED AS NAMES.
/IN ADDITION, ABOUT 20 LOCATIONS IN THE RUNTIME PACKAGE (SEE /APPENDIX
/C) ARE PREDECLARED AS EXTERNAL; ATTEMPTS TO DECLARE THEM FOR OTHER
PURPOSES WILL FAIL.
.EJ
^ICHARACTER ^ICONSTANTS
       /A CHARACTER CONSTANT HAS THE FORM
.SP
.CENTER
'<3 OR FEWER PSEUDO-CHARACTERS>'
.SP
AND MAY BE USED WHEREVER A CONSTANT IS USED.
/A PSEUDO-CHARACTER IS ANY CHARACTER OTHER THAN "&" OR "'" FOLLOWED
BY ONE OF THE FOLLOWING:
.SP
.RM 8
.RM 4
.UN 4
1.  /ANOTHER "&" OR A "'".
/THE TWO ARE EQUIVALENT TO A SINGLE "&" OR "'" IN THE CONSTANT.
.UN 4
2.  /THREE OCTAL DIGITS.
/THE NUMBER THUS DEFINED, TRUNCATED TO 8 BITS, COUNTS AS ONE
CHARACTER.
.UN 4
3.  /A LETTER.
/THE ^CASCII CODE FOR THE LETTER + 100/B AS THE VALUE OF THE 
PSEUDO-CHARACTER.
.SP
.EM 4
.EM 8
/THE CHARACTERS ARE RIGHT-JUSTIFIED IN THE CONSTANT, WHICH IS
FILLED OUT WITH BLANKS (000) ON THE LEFT.
/IT IS AN ERROR TO HAVE MORE THAN 3 PSEUDO-CHARACTERS IN THE CONSTANT
SINCE THESE WOULD EXCEED THE 24 BITS OF A MACHINE WORD IN WHICH
THE CONSTANT IS STORED.
.SP 2
^ISTRING ^ICONSTANTS
       /A STRING CONSTANT HAS THE FORM
.SP
.CE
"<ANY NUMBER OF PSEUDO-CHARACTERS>".
.SP
/IT IS LEGAL IN ANY CONTEXT IN WHICH A STRING NAME IS LEGAL.
/A DESCRIPTOR WILL BE CREATED WHICH POINTS TO THE CONSTANT STRING.
/IF THE STRING CONSTANT APPEARS ALONE IMMEDIATELY AFTER A LEFT ARROW,
THE VARIABLE TO WHICH THE CONSTANT IS BEING ASSIGNED IS ASSUMED TO
HOLD A POINTER TO AN ALREADY EXISTING STRING DESCRIPTOR; IN ALL OTHER
CASES, SPACE FOR A DESCRIPTOR WILL BE ALLOCATED FOR THE CONSTANT
BY THE COMPILER.
/IN ANY CASE, WRITING INTO THE STRING WILL ALTER THE CONSTANT.
       /A VARIETY OF OPERATIONS ARE PROVIDED FOR CONVERTING FIELD
NAMES INTO CONSTANTS:
.SP
.RM 8
.RM 4
.UN 4
1.  /F(<EXPRESSION>) HAS THE VALUE FOR /T AFTER THE STATEMENTS
.SP
.RM 8
^UT0; T$F^L<EXPRESSION>;
.EM 8
.SP
HAVE BEEN EXECUTED.
/F MUST NOT CROSS WORD BOUNDARIES.
.UN 4
2.  /THE FUNCTION ^CFSHIFT(F) HAS 23 (THE RIGHTMOST BIT POSITION
OCCUPIED BY /F) AS ITS VALUE.
/F MUST NOT CROSS WORD BOUNDARIES.
/THE VALUE OF ^CFSHIFT ^IIS A CONSTANT.
.UN 4
3.  /THE FUNCTION ^CFMASK(F) HAS AS VALUE A CONSTANT WHICH HAS 
ONE-BITS IN POSITIONS SELECTED BY THE FIELD AS ITS VALUE.
/IT IS EQUIVALENT TO /F(-1).
/F MUST NOT CROSS WORD BOUNDARIES.
.UN 4
4.  /A FIELD NAME /F APPEARING IN ANY CONTEXT OTHER THAN 
.RM 16
/F(

.LITERAL
./F

$/F
.EM 16
IS EQUIVALENT TO A CONSTANT WHOSE VALUE IS THE WORD DISPLACEMENT OF
THE FIELD.
.EM 4
.EM 8
.SP 2
^ICONSTANT ^IEXPRESSIONS
       /ANY EXPRESSION INVOLVING OPERATORS OF PRECEDENCE HIGHER
THAN ^CFOR AND CONSTANT OPERANDS WILL BE EVALUATED BY THE COMPILER
YIELDING A RESULT WHICH BEHAVES EXACTLY LIKE A CONSTANT.
.EJ
^I/DECLARATIONS:
       /VARIABLES ARE DECLARED WITH ^CDECLARE OR ^CFUNCTION STATEMENTS
OR BY APPEARING AS STATEMENT LABELS.
/THE SYNTAX OF VARIABLE ^CDECLARE IS
.SP
.RM 8
^CDECLARE [^CFIXED OR ^CPAGED] [^CINTEGER OR ^CREAL OR
.RM 3
^CSTRING] [^CARRAY] [^CEXTERNAL OR ^CENTRY OR

^CLOCAL] <NAMELIST>.
.EM 3
.EM 8
.SP
/THE STUFF AFTER THE ^CDECLARE MAY BE REPEATED AS MANY TIMES AS 
DESIRED.
/ONCE ^CFIXED, ^CPAGED OR ^CARRAY HAS BEEN USED IT REMAINS IN
EFFECT FOR THE REMAINDER OF THE CURRENT ^CDECLARE STATEMENT.
^CINTEGER IS ASSUMED IF IT IS OMITTED, BUT ONCE ^CSTRING HAS BEEN
USED IT REMAINS IN EFFECT UNTIL ^CINTEGER APPEARS AGAIN.
/EACH NAME IN THE NAMELIST MAY BE PRECEDED BY "$" (WHICH MAKES IT
AN ENTRY) OR BY "*" (WHICH MAKES IT EXTERNAL, I.E., PREVENTS 
STORAGE FROM BEING ASSIGNED FOR IT).
/IF ^CFIXED AND ^CARRAY ARE BOTH AS PRESENT, A NAME MAY BE FOLLOWED
BY AN EXPRESSION IN PARENTHESES (OR BRACKETS).
/THUS
.SP
.RM 8
^UDECLARE FIXED ARRAY A[12], B[X*2+14];^L
.EM 8
.SP
/THE EXPRESSION ( WHICH MUST BE A CONSTANT) WILL BE EVALUATED AND
THAT MANY CELLS ASSIGNED FOR THE ARRAY AT COMPILE TIME.
/THE BASE ADDRESS OF THE REGION ASSIGNED, WITH THE INDEX BIT SET,
WILL BE STORED IN THE NAME.
/IF A NAME IS DECLARED ^CARRAY WITHOUT ANY STORAGE BEING ASSIGNED,
THE SYSTEM WILL ASSUME THAT ITS VALUE IS A POINTER TO AN ARRAY WITH
THE INDEX BIT SET.
/THAT IS, IT WILL COMPILE FOR THE STATEMENT
.SP
.RM 8
^UBA[I];^L
.SP
.UN 8
THE CODE
.SP
^ULDX I; LDA* A; STA B;
.EM 8
.SP
^L/EXAMPLE:^U
.SP
.RM 8
^UDECLARE INTEGER A,B STRING D, $G1, G2,
.RM 3
EXTERNAL G3, G4,

ARRAY E(X+Y[4]), INTEGER C(10);^L
.EM 3
.EM 8
.SP
DECLARES TWO SCALAR INTEGERS, ONE INTEGER ARRAY WHICH WILL BE ASSIGNED
10 LOCATIONS WHEN THE DECLARATION IS EXECUTED, TWO LOCAL SCALAR 
STRINGS (/D AND /G2), ONE LOCAL STRING ARRAY WHICH WILL BE ASSIGNED
/X/Y[4] LOCATIONS WHEN THE DECLARATION IS EXECUTED, ONE SCALAR
STRING WHICH IS AN ENTRY (/G1), AND TWO SCALAR STRINGS WHICH ARE 
ASSUMED TO BE DEFINED ELSEWHERE (/G3 AND /G4).
.EJ
>  
/AN INTEGER CONSTANT IS A STRING OF DIGITS, POSSIBLY FOLLOWED BY
/B OR /D, POSSIBLY FOLLOWED BY A SINGLE-DIGIT SCALE FACTOR.
/B MAKES THE NUMBER OCTAL; IF IT IS ABSENT, DECIMAL /D IS
ASSUMED.
/THUS 100/D = 1/D2 = 144/B =1/B2+44/B = 100 .
/A REAL CONSTANT IS OF THE FORM XXX.XXX/EXXX.
/EITHER THE DOT OR THE /E MUST BE PRESENT.
/IF THE DOT IS PRESENT, THERE MUST BE SOME DIGITS ^IBEFORE IT;
IF THE /E IS PRESENT, THERE MUST BE SOME DIGITS AFTER IT.
/FOR FURTHER DETAILS, CONSULT THE DESCRIPTION IN /R-21 OF THE ^CSIC
SYSPOP, WHICH IS USED TO CONVERT REAL CONSTANTS TO BINARY FORM.
.SP 2
^INAMES
       /A NAME IS A STRING OF ANY NUMBER OF LETTERS AND DIGITS
BEGINNING WITH A LETTER.
/ONLY THE FIRST SIX CHARACTERS OF THE NAME ARE SIGNIFICANT.
/A NAME MUST BE DECLARED (SEE BELOW).
/ALL NAMES EXCEPT PARAMETERS AND FIELDS ARE TREATED IN EXACTLY THE
SAME WAY WHEN THEY OCCUR IN EXPRESSIONS (EXCEPT FOR SUBSCRIPTING).
/E.G., A STRING NAME REFERS TO THE POINTER TO THE STRING DESCRIPTOR
WHICH IS THE VALUE OF THE NAME.
/THUS, IF /S IS A STRING
.SP
.RM 16
^USA+1;^L
.EM 16
.SP
SIMPLY STORES /A+1 INTO /S; THIS IS PROBABLY NOT REASONABLE.
/FUNCTIONS ARE PROVIDED TO CONVERT BETWEEN STRINGS AND NUMBERS.
.SP 2
^IRESERVED ^IWORDS
       /THERE ARE ABOUT 80 RESERVED WORDS (SEE /APPENDIX /B) WHICH
MAY NOT BE USED AS NAMES.
/IN ADDITION, ABOUT 20 LOCATIONS IN THE RUNTIME PACKAGE (SEE /APPENDIX
/C) ARE PREDECLARED AS EXTERNAL; ATTEMPTS TO DECLARE THEM FOR OTHER
PURPOSES WILL FAIL.
.EJ
^ICHARACTER ^ICONSTANTS
       /A CHARACTER CONSTANT HAS THE FORM
.SP
.CENTER
'<3 OR FEWER PSEUDO-CHARACTERS>'
.SP
AND MAY BE USED WHEREVER A CONSTANT IS USED.
/A PSEUDO-CHARACTER IS ANY CHARACTER OTHER THAN "&" OR "'" FOLLOWED
BY ONE OF THE FOLLOWING:
.SP
.RM 8
.RM 4
.UN 4
1.  /ANOTHER "&" OR A "'".
/THE TWO ARE EQUIVALENT TO A SINGLE "&" OR "'" IN THE CONSTANT.
.UN 4
2.  /THREE OCTAL DIGITS.
/THE NUMBER THUS DEFINED, TRUNCATED TO 8 BITS, COUNTS AS ONE
CHARACTER.
.UN 4
3.  /A LETTER.
/THE ^CASCII CODE FOR THE LETTER + 100/B AS THE VALUE OF THE 
PSEUDO-CHARACTER.
.SP
.EM 4
.EM 8
/THE CHARACTERS ARE RIGHT-JUSTIFIED IN THE CONSTANT, WHICH IS
FILLED OUT WITH BLANKS (000) ON THE LEFT.
/IT IS AN ERROR TO HAVE MORE THAN 3 PSEUDO-CHARACTERS IN THE CONSTANT
SINCE THESE WOULD EXCEED THE 24 BITS OF A MACHINE WORD IN WHICH
THE CONSTANT IS STORED.
.SP 2
^ISTRING ^ICONSTANTS
       /A STRING CONSTANT HAS THE FORM
.SP
.CE
"<ANY NUMBER OF PSEUDO-CHARACTERS>".
.SP
/IT IS LEGAL IN ANY CONTEXT IN WHICH A STRING NAME IS LEGAL.
/A DESCRIPTOR WILL BE CREATED WHICH POINTS TO THE CONSTANT STRING.
/IF THE STRING CONSTANT APPEARS ALONE IMMEDIATELY AFTER A LEFT ARROW,
THE VARIABLE TO WHICH THE CONSTANT IS BEING ASSIGNED IS ASSUMED TO
HOLD A POINTER TO AN ALREADY EXISTING STRING DESCRIPTOR; IN ALL OTHER
CASES, SPACE FOR A DESCRIPTOR WILL BE ALLOCATED FOR THE CONSTANT
BY THE COMPILER.
/IN ANY CASE, WRITING INTO THE STRING WILL ALTER THE CONSTANT.
       /A VARIETY OF OPERATIONS ARE PROVIDED FOR CONVERTING FIELD
NAMES INTO CONSTANTS:
.SP
.RM 8
.RM 4
.UN 4
1.  /F(<EXPRESSION>) HAS THE VALUE FOR /T AFTER THE STATEMENTS
.SP
.RM 8
^UT0; T$F^L<EXPRESSION>;
.EM 8
.SP
HAVE BEEN EXECUTED.
/F MUST NOT CROSS WORD BOUNDARIES.
.UN 4
2.  /THE FUNCTION ^CFSHIFT(F) HAS 23 (THE RIGHTMOST BIT POSITION
OCCUPIED BY /F) AS ITS VALUE.
/F MUST NOT CROSS WORD BOUNDARIES.
/THE VALUE OF ^CFSHIFT ^IIS A CONSTANT.
.UN 4
3.  /THE FUNCTION ^CFMASK(F) HAS AS VALUE A CONSTANT WHICH HAS 
ONE-BITS IN POSITIONS SELECTED BY THE FIELD AS ITS VALUE.
/IT IS EQUIVALENT TO /F(-1).
/F MUST NOT CROSS WORD BOUNDARIES.
.UN 4
4.  /A FIELD NAME /F APPEARING IN ANY CONTEXT OTHER THAN 
.RM 16
/F(

.LITERAL
./F

$/F
.EM 16
IS EQUIVALENT TO A CONSTANT WHOSE VALUE IS THE WORD DISPLACEMENT OF
THE FIELD.
.EM 4
.EM 8
.SP 2
^ICONSTANT ^IEXPRESSIONS
       /ANY EXPRESSION INVOLVING OPERATORS OF PRECEDENCE HIGHER
THAN ^CFOR AND CONSTANT OPERANDS WILL BE EVALUATED BY THE COMPILER
YIELDING A RESULT WHICH BEHAVES EXACTLY LIKE A CONSTANT.
.EJ
^I/DEC.GL  THERE-FORE TEST-ED SYS-TEM SUB-TRAC-TION SUB-SCRIP-TED
.GL STOR-AGE STATE-MENT SPEC-I-FIED RE-STORED RES-PEC-TIVE-LY
.GL RE-DE-CLAR-ATION RE-COM-MEND-ED PRO-VID-ED OPER-AND
.GL INIT-IAL-IZED IN-DIR-EC-TION IL-LEGAL FUNC-TION
.GL EX-PRES-SION EXE-CUT-ED DIS-PLACE-MENT DE-SIRED
.GL COR-RECT-LY CON-VERT CON-STANT CHAR-ACTERS AR-RAYS
.GL AL-LO-CAT-ED AD-DRESS
^IDECLARED ^IPAGED
       /A NAME OR AN ARRAY MAY BE DECLARED PAGED BY PUTTING THE WORD
^CPAGED IN FRONT OF ITS DECLARATION.
/THIS ATTRIBUTE, ONCE MENTIONED, APPLIES TO ALL THE NAMES DECLARED
FOLLOWING IT IN THE SAME STATEMENT.
/IF AN ARRAY IS DECLARED ^CPAGED (^INOT A ^CFIXED ARRAY, OF COURSE),
ALL REFERENCES TO IT WILL BE MADE TO THE DRUM.
/CORRECT ACCESS TO THE ARRAY WILL BE OBTAINED ONLY IF IT IS SUBSCRIPTED
IN THE USUAL WAY: /A[/I].
/IT IS ^INOT TRUE THAT (/A+1)[/I] IS EQUIVALENT TO /A[/I+2], FOR
EXAMPLE, AS IS THE CASE FOR CORE ARRAYS.
       /IF A NAME DECLARED PAGED IS NOT AN ARRAY, THE ONLY EFFECT
IS THAT WHEN IT IS TAILED THE SYSTEM WILL ASSUME IT CONTAINS A
DRUM ADDRESS.
/SUCH AN ADDRESS CAN ONLY BE CORRECTLY OBTAINED WITH ^CPMAKE (SEE
BELOW).
/IT IS THE PROGRAMMER'S RESPONSIBILITY TO SEE THAT:
.SP
.RM 9,5
.UN 4
A.  IT DOES CONTAIN A DRUM ADDRESS GENERATED WITH ^CPMAKE.
.UN 4
B.  THE FIELD NAME USED FOR TAILING HAS A WORD DISPLACEMENT LESS
THAN THE BLOCK SIZE SPECIFIED BY THE ^CPMAKE.
/UNPREDICTABLE ERRORS WILL OCCUR IF THIS RULE IS NOT OBSERVED.
.EM 9,5
.SP
/DECLARATIONS OF FIELDS ARE NOT AFFECTED BY ^CPAGED.
/INDIRECTION ($) AND SUBSCRIPTING ([]) WILL WORK PROPERLY ON A
^CPAGED POINTER.
/ARITHMETIC MAY BE DONE ON ^CPAGED POINTERS IN THE USUAL FASHION,
PROVIDED THE RESULT IS WITHIN A BLOCK ALLOCATED BY A SINGLE CALL
TO ^CPMAKE.
/THUS AFTER
.SP
.RM 8
^UDECLARE PAGED P; FIELD F0(0),F1(1),F2(2);
.RM 3
PPMAKE(2);^L
.EM 3
.EM 8
.SP
THE STATEMENTS 
.SP
.RM 8
^UAP.F1; A(P+1).F0; A(P+1)[0];^L
.SP
.UN 8
HAVE THE SAME EFFECT, BUT
.SP
^UAP.F2; A(P+2)[0];^L
.EM 8
.SP
ARE ALL ERONEOUS, SINCE ONLY TWO WORDS WERE ALLOCATED IN THE BLOCK
POINTED TO BY /P.
.EJ
^IDECLARED ^ISTRING
       /WHEN A NAME IS DECLARED TO BE A STRING, A SINGLE STORAGE
LOCATION IS RESERVED FOR IT UNLESS ^CFIXED HAS BEEN USED.
/STRINGS ARE SPECIFIED, HOWEVER, BY FOUR-WORD DESCRIPTORS.
/THE ADDRESS OF SUCH A DESCRIPTOR MUST BE PUT INTO THE STRING
VARIABLE BEFORE IT IS USED IN ANY STRING OPERATION.
/FOR NON-^CFIXED STRINGS, THIS IS USUALLY DONE WITH THE ^CSETUP 
FUNCTION, POSSIBLY PRECEDED BY A ^CMAKE; ALTERNATIVELY, THE ADDRESS
OF A DESCRIPTOR OBTAINED IN SOME OTHER WAY CAN BE USED.
/IF A STRING VARIABLE IS NOT PROPERLY INITIALIZED, THE CONSEQUENCES
OF USING IT IN ANY STRING OPERATION ARE LIKELY TO BE SERIOUS.
       /IF A STRING DECLARATION IS PRECEDED BY ^CFIXED, THE FOUR-WORD
DESCRIPTOR IS ASSIGNED BY THE COMPILER AND ITS ADDRESS IS THE INITIAL
VALUE OF THE STRING.
/IF A ^CFIXED ^CSTRING IS FOLLOWED BY A PARENTHESIZED EXPRESSION,
THAT MANY CHARACTERS ARE ALLOCATED FOR THE STRING AND THE DESCRIPTOR
IS INITIALIZED TO POINT TO THE AREA THUS ALLOCATED.

/EXAMPLE:
.SP
.RM 8
^UDECLARE FIXED STRING S,T,U(5),V(240);^L
.EM 8
.SP
ALLOCATES STRING DESCRIPTORS FOR /S AND /T; THEY MUST BE SET UP TO
POINT TO STRINGS BY ^CSETUP.
/IT ALSO ALLOCATED 5 CHARACTERS FOR /U AND 240 FOR /V AND SETS UP
THE DESCRIPTORS PROPERLY.
.SP 2
^IINITIALIZED ^IDECLARATIONS
       /AN INTEGER MAY BE ^IINITIALIZED BY FOLLOWING ITS NAME WITH
""<CONSTANT> OR ""<NAME>.
/THUS,
.SP
.RM 8
^UDECLARE A3,B14,CA;^L
.EM 8
.SP
MAKES 3 THE INITIAL VALUE OF /A, 14 THE INITIAL VALUE OF /B, AND
3 THE INITIAL VALUE OF /C.
/OF COURSE, ANY EXPRESSION WHICH CAN BE EVALUATED BY THE COMPILER MAY
BE USED AS A CONSTANT.
/THIS IS ^INOT THE SAME AS A ^CPARAMETER DECLARATION (SEE BELOW).
/THE USE OF THIS CONSTRUCT IS NOT RECOMMENDED IF THE PROGRAM CHANGES 
THE VALUES OF THE VARIABLES, SINCE THE PROGRAM MUST THEN BE
RELOADED IN ORDER TO BE RESTARTED.
       /A ^CFIXED ^CARRAY CAN BE INITIALIZED IN THE SAME WAY:
.SP
.RM 8
^UDECLARE FIXED ARRAY A[10]1,3,5,7,11,13;^L
.EM 8
.SP
/THE FIRST SIX ELEMENTS OF /A ARE INITIALIZED AS INDICATED.
/THE REMAINING FOUR ELEMENTS ARE INITIALIZED TO 0.
       /A FIXED STRING OR A FIXED STRING ARRAY MAY BE INITIALIZED
IN THE SAME WAY, BUT THE INITIAL VALUES MUST BE STRING CONSTANTS.
^I/WARNING: WRITING INTO INITIALIZED STRINGS WILL DESTROY THE CONTENTS.
       /IF ANY DECLARATION CAUSES SPACE TO BE ALLOCATED AT THE POINT
IN THE PROGRAM WHERE THE DECLARATION OCCURS, A BRANCH OVER IT IS 
COMPILED.
/DECLARATIONS MAY THEREFORE BE FREELY INTERPOLATED IN THE PROGRAM.
.SP 2
^IFIELD ^IDECLARATIONS
       /ANOTHER FORM OF ^CDECLARE IS THE FOLLOWING:
.RM 8
.SP
^UDECLARE FIELD ^L<NAME>
.RM 3
(<CONSTANT>[:<CONSTANT>,<CONSTANT>[)
.EM 8
.SP
WHICH DEFINES A FIELD.
/LOTS OF FIELDS CAN BE DEFINED IF DESIRED.
/THE FIRST CONSTANT SPECIFIES THE WORD DISPLACEMENT OF THE FIELD,
THE OTHER TWO THE BIT POSITIONS IN THE WORD.
/BIT POSITIONS CAN TAKE ON VALUES BETWEEN 0 AND 47.
/A FIELD MAY SPAN TWO WORDS, BUT IT MAY NOT BE MORE THAN 24 BITS
LONG.
/THUS:
.SP
.RM 8
^UDECLARE FIELD A(0),B(1),C(2),C1(2:0,5),
.RM 3
C2(2:3,20),XYZ(2:12,23);^L
.EM 3
.EM 8
.SP
DEFINES SIX FIELDS.
/THE LAST THREE MIGHT BE THOUGHT OF AS SUBFIELDS OF /C, BUT THEY DO
NOT HAVE TO BE USED IN THIS WAY.
/IF /P WERE A POINTER TO A THREE-WORD DATA OBJECT, FOR EXAMPLE,
THEN ^CP.^CXYZ WOULD REFER TO THE LAST 12 BITS OF THE THIRD WORD
OF THE OBJECT.
/SUCH OBJECTS CAN BE CREATED FROM NOWHERE WITH THE ^CMAKE FUNCTION
OR, OF COURSE, MAY BE ALLOCATED BY THE PROGRAMMER.
       /NAMES DECLARED AS ^CFIELD ARE OUTPUT TO ^CQRUN WITH THEIR
WORD DISPLACEMENTS AS VALUE.
/IF THEY APPEAR NOT FOLLOWING A ".", THEY ARE TREATED AS CONSTANTS
EQUAL TO THEIR WORD DISPLACEMENTS.
/THUS,
.RM 8
.SP
$(^CPTR+/B)  EQUIV  $(^CPTR+1)  EQUIV  ^CPTR./B  .
.EM 8
       /A FULL-WORD FIELD MAY BE DECLARED ^CREAL OR ^CPAGED.
/THIS MEANS THAT WHENEVER IT IS USED FOR TAILING, THE RESULTING QUANTITY
IS CONSIDERED ^CREAL OR ^CPAGED RESPECTIVELY.
.SP 2
^IPARAMETER ^IDECLARATIONS
       /THE DECLARATION 
.SP
.RM 8
^UDECLARE PARAMETER C11,C22,C33;^L
.SP
.EM 8
MAKES THE NAMES /C1, /C2, AND /C3 EQUIVALENT IN ^IALL ^IWAYS TO
THE CONSTANTS 1, 2, AND ,3 FOR THE REST OF THE PROGRAM.
/ANY CONSTANT MAY APPEAR ON THE RIGHT OF THE "".
/NOTE AGAIN THAT ANY CONSTANT EXPRESSION MAY BE USED WHERE A CONSTANT
IS REQUIRED.
/PARAMETERS, UNLIKE OTHER NAMES, MAY BE REDECLARED.
.SP 2
^IEQUIVALENCE ^IDECLARATION
       /THE DECLARATION
.SP
.RM 8
^UDECLARE INTEGER Q=R, S=T[3];^L
.EM 8
.SP
IS LEGAL ONLY IF /T HAS ALREADY BEEN DECLARED AS A FIXED ARRAY.
/IT CAUSES /Q TO BE ASSIGNED TO THE SAME LOCATION AS /R, /S TO THE
SAME LOCATION AS /T[3].
.SP 2
.EJ
^I/FUNCTION ^I/DEFINITION:
       /A FUNCTION IS DEFINED BY 
.SP
.RM 8
^U[REAL] FUNCTION ^LOR ^CENTRY [$] NAME(ARGLIST);  .
.EM 8
.SP
/IF THE WORD ^CREAL APPEARS, THE FUNCTION IS ASSUMED TO RETURN A
FLOATING POINT VALUE; OTHERWISE, IT IS ASSUMED TO RETURN INTEGER
VALUES, IF ANY.
/IF A $ PRECEDES THE FUNCTION NAME, THE NAME IS MADE AN ENTRY.
/EXCEPT WHEN COMPILING UNDER ^CNOLIST ^CLOCAL (DESCRIBED BELOW), 
THERE IS NO DIFFERENCE BETWEEN ^CFUNCTION AND ^CENTRY.
/EACH ARGUMENT IN THE ARGLIST CAN BE PRECEDED BY ^CINTEGER, ^CSTRING
OR ^CARRAY AND IS DECLARED AUTOMATICALLY.
^CINTEGER IS ASSUMED UNLESS OTHERWISE SPECIFIED.
/IF ^CARRAY IS SPECIFIED, THE INDEX BIT WILL BE MERGED INTO THE VALUE
SUPPLIED.
/A NAME CAN BE REDECLARED IN A FUNCTION DEFINITION (THIS IS ILLEGAL
IN ANY OTHER CONTEXT), BUT ONLY IF THE REDECLARATION EXACTLY MATCHES
ANY PREVIOUS DECLARATION.
/THE SYSTEM CREATES A RETURN LINK BY PREFIXING THE FUNCTION NAME
WITH /X.
/THE STATEMENT
.SP
.RM 8
^UFUNCTION FOO[A, ARRAY B, STRING C);^L
.EM 8
.SP
WOULD COMPILE
.SP
.RM 8
^USTA A; CBA; MRG =2B7
.RM 8
STA B; STX C; LDX 0;

STX XFOO;^L
.EM 3
.EM 8
.SP
/IF ADDITIONAL ARGUMENTS ^CINTEGER /D,/E WERE SUPPLIED, THE CODE
.SP
.RM 8
LDA* -1,2; STA D; LDA* -2,2; STA E;^L
.EM 8
.SP
WOULD BE ADDED.
       /THE FUNCTION NAME ITSELF IS ALSO DECLARED BY THIS STATEMENT.
/A STORAGE LOCATION IS RESERVED FOR IT, AND THE ADDRESS OF THE FIRST
WORD OF THE FUNCTION (^CSTA /A ABOVE) IS PUT INTO THIS ADDRESS.
       /THE LINK MAY BE SPECIFIED EXPLICITLY, IF DESIRED, AS 
FOLLOWS:
.RM 8
.SP
^UFUNCTION F(Q,R), LINK W;^L
.EM 8
.SP
^IRECURSIVE ^IFUNCTIONS
       /A FUNCTION MAY BE DECLAREDRECURSIVE BY
.SP
.RM 8
^U[REAL] RECURSIVE FUNCTION ^LOR ^UENTRY [$] F(A,B),
.RM 3
SAVE E;^L
.EM 3
.EM 8
.SP
/THE EFFECT WILL BE THAT WHENEVER THE FUNCTION IS CALLED THE LINK AND
THE CURRENT VALUES OF /A, /B, AND /E WILL BE SAVED.
/WHEN THE FUNCTION RETURNS (VIA A ^CRETURN OR ^CSRETURN WITH NO ^CFROM
MODIFIER AND ONLY ONE VALUE RETURNED), THE SAVED VARIABLE VALUES ARE
RESTORED.
       /SPACE FOR SAVING THE VARIABLES IS OBTAINED BY CALLING THE
FUNCTION IN THE RESERVED LOCATION ^CRECSTK.
/THIS CELL IS INITIALIZED TO BE A CALL TO ^CMAKE, BUT THE USER MAY SUPPLY
HIS OWN FUNCTION.
/THE CALL
.SP
.RM 8
^UTOPRST  RECSTK(N);^L
.EM 8
.SP
WHERE /N CONTAINS THE NUMBER OF WORDS REQUIRED AND THE FUNCTION RETURNS
THE ADDRESS OF THE FIRST WORD.
       /SPACE IS RELEASED BY
.SP
.RM 8
^UDO RECUNS(TOPRST);^L
.EM 8
.SP
AND ^CRECUNS IS INITIALIZED TO ^CFREE.
       /THE CELL ^CTOPRST, WHICH IS ALSO RESERVE 8I.E., BUILT INTO THE
RUNTIME) CONTAINS THE ADDRESS OF THE CURRENT TOP OF THE RECURSION STACK.
/ITS OLD VALUEIS SAVED IN THE SECOND WORD OF THE STACK ENTRY.
       /IF A FUNCTION CALL APPEARS IN A COMPILED EXPRESSION, IT IS NOT SAFE
TO RE-EXECUTE THE EXPRESSION INSIDE THE FUNCTION, SINC THE EXPRESSION MAY 
USE TEMPORARY LOCATIONS WHICH ARE ^INOT SAVED WHEN THE FUNCTION IS CALLED.
/BEWARE.
.SP 2
^IDECLARATION ^IOF ^ILABELS
       /A NAME IS DECLARED AS A LABEL BY WRITING IT FOLLOWED BY A  COLON
AT THE BEGINNING OF A STATEMENT.
/IT IS TREATED EXACTLY LIKE A FUNCTION NAME: A STORAGE LOCATION IS RESERVED
FOR IT AND INITIALIZED TO THE ADDRESS OF THE FIRST INSTRUCTION OF THE
STATEMENT.
/ANY STATEMENT CAN BE LABELED.
/A LABEL IS ASSUMED TO BE AN INTEGER SCALAR.
/IF WE HAVE 
.SP
.RM 8
^UA:... ; GOTO A;^L
.EM 8
.SP
THIS WILL COMPILE THE CODE
.SP
.RM 8
^U:A BSS 0; ...; BRU* A; ...;A ZRO :A;^L
.EM 8
.SP
SO THAT THE RIGHT THING HAPPENS.
/IF THE SYMBOL IS PRECEDED BY A $, THE LABEL IS MADE AN ENTRY.
       /THESE CONVENTIONS FOR ARRAYS, STRINGS AND LABELS MAKE IT VERY
EASY FOR THEM TO BE TRANSMITTED AS ARGUMENTS.
.EJ
^I/REAL ^I(FLOATING-POINT) ^INUMBERS:
       /REAL NUMBERS OCCUPY TWO WORDS OF STORAGE RATHER THAN ONE AND THEREFORE
HAVE A SOMEWHAT ANOMALOUS STATUS IN ^CQSPL, WHICH OTHERWISE TAKES THE POSITION
THAT ANY KIND OF QUANTITY ONLY OCCUPIES A SINGLE WORD (INTEGERS, STRINGS,
LABELS, FUNCTION, AND ARRAYS ALL HAVE THIS PROPERTY).
(/REMEMBER THAT ^CQSPL IS DESIGNED FOR PROGRAMMING SYSTEMS COMPONENTS WHICH
ARE AWKWARD TO HANDLE IN OTHER LANGUAGES; IT  THEREFORE IS NOT ORIENTED TO
NUMERICAL COMPUTATIONS.)
/WE DEFINE A ^IREAL ^IOPERAND AS A REAL NAME (POSSIBLY SUBSCRIPTED IF AN
ARRAY), A REAL CONSTANT, A REAL FUNCTION, A REAL EXPRESSION, OR AN EXPRESSION
TAILED BY A REAL FIELD.
/A REAL EXPRESSION MAY BE FORMED IN THE FOLLOWING WAYS:
.SP
.RM 9,5
.UN 4
1.  /BY COMBINING TWO REAL OPERANDS WITH ANY OF THE FOLLOWING BINARY
OPERATORS: +, -, ^CMOD, *, ^/.
/IF ANY OF THESE OPERATORS IS APPLIED TO A REAL OPERAND AND AN INTEGER CONSTANT,
IT WILL CONVERT THE CONSTANT TO A REAL NUMBER.
/A REAL OPERAND AND ANY OTHER KIND OF INTEGER OPERAND WILL PRODUCE AN ERROR.
.SP
.UN 4
2.  /BY UNARY + OR - APPLIED TOA REAL OPERAND.
.SP
.UN 4
3.  /BY THE CONSTRUCT <REAL OPERAND> ^CIF <INTEGER EXPRESSION> [^CELSE
<REAL OPERAND>].
.SP
.EM 9,5
/IN ADDITION, TWO REAL OPERANDS MAY BE COMPARED BY ANY OF THE RELATIONAL
OPERATORS (=, #, >, <, >=, <=).
/THE TEST IS MADE BY DOING A FLOATING SUBTRACTION AND TESTING THE RESULT
AGAINST ZERO: BEWARE OF ROUND-OFF ERROR IN TESTING FOR EQUALITY.
/ALSO, A REAL OPERAND MAY APPEAR IN A ^CRETURN OR ^CSRETURN PROVIDED IT IS
THE ONLY ARGUMENT OF THE OPERATION.
/THERE IS NO RESTRICTION ON MIXING REAL AND NON-REAL ARGUMENTS OF FUNCTIONS:
HOWEVER, THE TYPES OF THE ACTUAL ARGUMENTS IN A CALL MUST CORRESPOND TO THOSE
IN THE FUNCTION DEFINITION.
/THE COMPILER DOES NOT CHECK THIS, AND AN ERROR WILL PROBABLY CAUSE CHAOS
AT RUN TIME.
       /VARIOUS SPECIAL FUNCTIONS ARE AVAILABLE FOR DOING THE SAME THINGS 
TO REAL NUMBERS THAT ONE CAN DO TO INTEGERS.
^CRIN AND ^CROUT PROVIDE FLLOATING POINT INPUT^/OUTPUT; ^CCSR AND ^CCRS
PROVIDE CCONVERSION BETWEEN REALS AND STRINGS; ^CFIX AND ^CFLOAT CONVERT BETWEEN
REALS AND INTEGERS.
/THESE ARE ALL DISCUSSED IN DETAIL IN THE LATER SECTIONS ON SPECIAL FUNCTIONS.
/THERE IS A LIBRARY OF MATHEMATICAL ROUTINES WITH ^CQSPL-^ECOMPATIBLE
CALLING SEQUENCES AVAILABLE, INCLUDING ^CSIN, ^CCCOS, ^CTAN, ^CATAN, ^CEXP,
^CLOG, ^CLOG10, AND RANDOM NUMBER GENERATION; THIS IS DESCRIBED IN A
SEPARATE DOCUMENT.
.EJ
^I/CONTROL ^I/STATEMENTS
.SP 2
^ITHE ^I^CIF ^ICONSTRUCT
       /THE CONSTRUCTION
.SP
.RM 8
^CIF <EXPRESSION> ^CDO;

     .

     .

     .

.RM 3
.UN 3
^CELSEIF <EXPRESSION> ^CDO; (0 OR MORE ^CELSEIF^ES ALLOWED)
.EM 3

     .

     .

     .

^CELSE ^CDO; (0 OR MORE OF THESE ALLOWED)

     .

     .

     .

ENDIF;
.EM 8
.SP 
IS LEGAL WITH THE OBVIOUS MEANING.
/ANY SEQUENCE OF STATEMENTS BALANCED WITH RESPECT TO ^CIF AND ^CENDIF MAY
APPEAR IN PLACE OF THE DOTS.
/OF COURSE, ^CIF MAY BE NESTED.
^I/PROPER ^IUSE ^IOF ^IINDENTATION ^IIS ^ISTRONGLY ^IRECOMMENDED.
.SP 2
^ITHE ^I^CFOR ^IAND ^I^CWHILE ^ICONSTRUCTS
       THE CONSTRUCTION
.SP
.RM 8
^CFOR <FOR CLAUSE> ^CDO;

     .

     .

     .

^CENDFOR;
.EM 8
.SP
IS ALSO ALLOWED.
/THE ARBITRARY SEQUENCE OF STATEMENTS BALANCED WITH RESPECT TO ^CFOR AND
^CENDFOR WHICH IS SYMBOLIZED BY THE DOTS IS EXEUTED REPEATEDLY UNDER CONTROL
OF THE FOR CLAUSE, WHOSE SYNTAX HAS THREE FORMS:
.SP
.RM 8
<NAME><EXPRESSION> ^CWHILE <EXPRESSION>
.EM 8
.SP
WHICH CAUSES THE VALUE OF THE FIRST EXPRESSION TO BE ASSIGNED TO THE NAME
AND THE SECOND EXPRESSION TESTED EACH TIME AROUNG THE LOOP.
/WHEN THE TEST FAILS (VALUE OF THE EXPRESSION=0) REPETITION STOPS.
/THE ASSIGNMENT AND TEST ARE PERFORMED ONCE BEFORE THE LOOP IS EXECUTED;
.SP
.IN 8
<NAAME><EXPRESSION [^CBY <EXPRESSION>] ^CTO
.IN 11
<EXPRESSION>
.SP
WITH THE OBVIOUS MEANING.
/IF THE ^CBY IS OMITTED, AN INCREMENT OF 1 IS ASSUMED.
/REPETITION CONTINUES UNTIL THE VALUE OF THE NAME IS GREATER THAN THE
^CTO EXPRESSION, UNLESS THE LATTER IS A NEGATIVE ^ICONSTANT, IN WHICH CASE
IT CONTINUES UNTIL THE NAME IS LESS.
/A TEST IS PEFORMED BEFORE THE LOOP IS EXECUTED FOR THE FIRST TIME.
/THE SPECIAL CASES
.SP
.IN 8
/I<EXPRESSION> ^CBY 1 ^CTO /N
.SP
AND
.SP
.IN 8
/I<EXPRESSION> ^CBY -1 ^CTO 0
.SP
ARE RECOGNIZED AND COMPILED MORE EFFICIENTLY.
       /THE SIMILAR CONSTRUCTION
.SP
.IN 8
^CWHILE <EXPRESSION> ^CDO;
.IN 8
     .
.IN 8
     .
.IN 8
     .
.IN 8
^CENDFOR;
.SP
IS ALSO ALLOWED.
/THE BODY OF THE LOOP IS EXECUTED REPEATEDLY AS LONG AS EVALUATION OF THE
EXPRESSION IS EVALUATED ONCE BEFORE THE LOOP IS ENTERED FOR THE FIRST TIME.
.EJ
> E CALL
.SP
.RM 8
^UTOPRST  RECSTK(N);^L
.EM 8
.SP
WHERE /N CONTAINS THE NUMBER OF WORDS REQUIRED AND THE FUNCTION RETURNS
THE ADDRESS OF THE FIRST WORD.
       /SPACE IS RELEASED BY
.SP
.RM 8
^UDO RECUNS(TOPRST);^L
.EM 8
.SP
AND ^CRECUNS IS INITIALIZED TO ^CFREE.
       /THE CELL ^CTOPRST, WHICH IS ALSO RESERVE 8I.E., BUILT INTO THE
RUNTIME) CONTAINS THE ADDRESS OF THE CURRENT TOP OF THE RECURSION STACK.
/ITS OLD VALUEIS SAVED IN THE SECOND WORD OF THE STACK ENTRY.
       /IF A FUNCTION CALL APPEARS IN A COMPILED EXPRESSION, IT IS NOT SAFE
TO RE-EXECUTE THE EXPRESSION INSIDE THE FUNCTION, SINC THE EXPRESSION MAY 
USE TEMPORARY LOCATIONS WHICH ARE ^INOT SAVED WHEN THE FUNCTION IS CALLED.
/BEWARE.
.SP 2
^IDECLARATION ^IOF ^ILABELS
       /A NAME IS DECLARED AS A LABEL BY WRITING IT FOLLOWED BY A  COLON
AT THE BEGINNING OF A STATEMENT.
/IT IS TREATED EXACTLY LIKE A FUNCTION NAME: A STORAGE LOCATION IS RESERVED
FOR IT AND INITIALIZED TO THE ADDRESS OF THE FIRST INSTRUCTION OF THE
STATEMENT.
/ANY STATEMENT CAN BE LABELED.
/A LABEL IS ASSUMED TO BE AN INTEGER SCALAR.
/IF WE HAVE 
.SP
.RM 8
^UA:... ; GOTO A;^L
.EM 8
.SP
THIS WILL COMPILE THE CODE
.SP
.RM 8
^U:A BSS 0; ...; BRU* A; ...;A ZRO :A;^L
.EM 8
.SP
SO THAT THE RIGHT THING HAPPENS.
/IF THE SYMBOL IS PRECEDED BY A $, THE LABEL IS MADE AN ENTRY.
       /THESE CONVENTIONS FOR ARRAYS, STRINGS AND LABELS MAKE IT VERY
EASY FOR THEM TO BE TRANSMITTED AS ARGUMENTS.
.EJ
^I/REAL ^I(FLOATING-POINT) ^INUMBERS:
       /REAL NUMBERS OCCUPY TWO WORDS OF STORAGE RATHER THAN ONE AND THEREFORE
HAVE A SOMEWHAT ANOMALOUS STATUS IN ^CQSPL, WHICH OTHERWISE TAKES THE POSITION
THAT ANY KIND OF QUANTITY ONLY OCCUPIES A SINGLE WORD (INTEGERS, STRINGS,
LABELS, FUNCTION, AND ARRAYS ALL HAVE THIS PROPERTY).
(/REMEMBER THAT ^CQSPL IS DESIGNED FOR PROGRAMMING SYSTEMS COMPONENTS WHICH
ARE AWKWARD TO HANDLE IN OTHER LANGUAGES; IT  THEREFORE IS NOT ORIENTED TO
NUMERICAL COMPUTATIONS.)
/WE DEFINE A ^IREAL ^IOPERAND AS A REAL NAME (POSSIBLY SUBSCRIPTED IF AN
ARRAY), A REAL CONSTANT, A REAL FUNCTION, A REAL EXPRESSION, OR AN EXPRESSION
TAILED BY A REAL FIELD.
/A REAL EXPRESSION MAY BE FORMED IN THE FOLLOWING WAYS:
.SP
.RM 9,5
.UN 4
1.  /BY COMBINING TWO REAL OPERANDS WITH ANY OF THE FOLLOWING BINARY
OPERATORS: +, -, ^CMOD, *, ^/.
/IF ANY OF THESE OPERATORS IS APPLIED TO A REAL OPERAND AND AN INTEGER CONSTANT,
IT WILL CONVERT THE CONSTANT TO A REAL NUMBER.
/A REAL OPERAND AND ANY OTHER KIND OF INTEGER OPERAND WILL PRODUCE AN ERROR.
.SP
.UN 4
2.  /BY UNARY + OR - APPLIED TOA REAL OPERAND.
.SP
.UN 4
3.  /BY THE CONSTRUCT <REAL OPERAND> ^CIF <INTEGER EXPRESSION> [^CELSE
<REAL OPERAND>].
.SP
.EM 9,5
/IN ADDITION, TWO REAL OPERANDS MAY BE COMPARED BY ANY OF THE RELATIONAL
OPERATORS (=, #, >, <, >=, <=).
/THE TEST IS MADE BY DOING A FLOATING SUBTRACTION AND TESTING THE RESULT
AGAINST ZERO: BEWARE OF ROUND-OFF ERROR IN TESTING FOR EQUALITY.
/ALSO, A REAL OPERAND MAY APPEAR IN A ^CRETURN OR ^CSRETURN PROVIDED IT IS
THE ONLY ARGUMENT OF THE OPERATION.
/THERE IS NO RESTRICTION ON MIXING REAL AND NON-REAL ARGUMENTS OF FUNCTIONS:
HOWEVER, THE TYPES OF THE ACTUAL ARGUMENTS IN A CALL MUST CORRESPOND TO THOSE
IN T.GL  WRIT-TEN TREAT-ED SEMI-COLON SEC-OND PAR-EN-THE-SES
.GL OPER-ATIONS NON-ZERO HOPE-LESS-LY FUNC-TION EF-FIC-IENT
.GL EF-FIC-IEN-CY DUM-MIES DIS-CUS-SION DES-CRIBED
.GL DEF-INI-TION DE-CLAR-A-TIONS CON-VEN-TION CON-VEN-IENT
.GL CON-TAINS COM-MENT CHAR-ACTER AR-GU-MENTS AL-LO-CA-TION
.GL AD-VANCE
^I/LISTING ^I/CONTROL:
       /LISTING MAY BE CONTROLLED WITH THE STATEMENTS ^CLIST AND 
^CNOLIST.
/EITHER MAY BE FOLLOWED BY ^CSOURCE, ^CCODE, OR ^CBINARY, AND 
TURNS ON OR OFF THE SPECIFIED FORM OF OUTPUT.
/IT IS NOT A GOOD IDEA TO TURN BINARY OUTPUT ON AND OFF, SINCE THIS
WILL IN GENERAL PRODUCE AN UNLOADABLE RESULT.
       /TWO SPECIAL OPTIONS CONCERNING ALLOCATION OF VARIABLES ARE
ALSO CONTROLLED BY ^CNOLIST.
^CNOLIST ^CFREE WILL PREVENT ^CZRO'^ES FOR UNINITIALIZED SCALARS FROM
APPEARING ON THE ASSEMBLY-LANGUAGE LISTING; THIS MAY BE USEFUL IF
RE-ENTRANT PROGRAMS ARE DESIRED.
^CNOLIST ^CEXTERNAL WILL CAUSE UNDECLARED VARIABLES TO BE TREATED
AS EXTERNAL; NORMALLY THEY ARE TREATED AS ERRORS AND SPACE IS ASSIGNED
FOR THEM.
       ^CNOLIST ^CPAGED PUTS THE COMPILER INTO A MODE WHERE THE CODE
PRODUCED FOR TAILING A PAGED POINTER NO LONGER ASSUMES THAT THE BLOCK
LIES WITHIN A SINGLE PAGE.
/IT IS INTENDED FOR PROGRAMS WHERE THE  USER IS ALLOCATING PAGED
STORAGE HIMSELF WITHOUT REGARD TO PAGE BOUNDARIES.
       /THE STATEMENT
.SP
.IN 8
^CINCLUDE "<FILE NAME>";
.SP
HAS THE EFFECT OF PLACING THE ENTIRE CONTENTS OF THE NAMED FILE
IN THE PROGRAM AT THAT POINT.
/THIS PROCESS MAY BE NESTED, I.E., THE FILE BEING INSERTED MAY ITSELF
CONTAAN ^CINCLUDE^ES.
/NOTE THAT SINCE THE FILE IS INSERTED VERBATIM, IT SHOULD ^INOT
END WITH AN ^CEND STATEMENT.
/THE ^CINCLUDE FEATURE IS MEANT PRIMARILY FOR GROUPS OF PROGRAMS
WITH COMMON DECLARATIONS.
/TO THIS END, THE STATEMENT ^CNOLIST ^CINCLUDE IS PROVIDED WITH 
THE FOLLOWING EFFECT: IF IT OCCURS IN THE ORIGINAL SOURCE FILE, IT
HAS NO EFFECT, WHILE IF IT OCCURS IN AN ^CINCLUDE^ED FILE, IT 
TERMINATES PROCESSING OF  THAT FILE.
/THUS A MAIN PROGRAM COULD HAVE THE FORM
.RM 8
.SP
.NOFILL
     .
     .
     .
(DECLARATIONS)
     .
     .
     .
^CNOLIST ^CINCLUDE;
     .
     .
     .
(REMAINDER OF PROGRAM)
^CEND;
.FILL
.EM 8
.SP
AND ANY SUBPROGRAM COULD USE ITS DECLARATIONS BY ^CINCLUDE^E-ING IT.
       /THE STATEMENT
.SP
.IN 8
^CIDENT <NAME>;
.SP
WILL CAUSE THE NAME TO BE OUTPUT TO ^CQRUN AS THE PROGRAM NAME.
/NO MORE THAN ONE ^CIDENT MAY APPEAR IN A PROGRAM.
.EJ
^I/MACRO ^I/FACILITY:
       /THE FORMAT OF A MACRO DEFINITION IS:
.SP
.IN 8
^CDECLARE ^CMACRO
.IN 11
<NAME>(<DUMMIES>)<DEFINITION>;
.SP
WHERE <NAME> IS THE NAME OF THE MACRO BEING DEFINED, <DUMMIES> IS
THE LIST OF DUMMY ARGUMENT NAMES, AND <DEFINITION> IS THE DEFINITION.
<NAME> MUST BE A HITHERTO UNMENTIONED IDENTIFIER.
<DUMMIES> MAY BE AN EMPTY LIST; IF IT IS NOT EMPTY, IT IS A SEQUENCE
OF IDENTIFIERS SEPARATED BY COMMAS.
/THESE IDENTIFIERS SERVE ONLY TO INDICATE THE PLACE WITHIN THE 
DEFINITION WHERE ACTUAL ARGUMENTS ARE TO BE SUBSTITUTED: THEIR USE
HERE DOES NOT CONFLICT WITH THEIR PREVIOUS OR SUBSEQUENT USES FOR
ANY PURPOSE.
/THE <DEFINITION> IS ^IANY SEQUENCE OF TOKENS (IDENTIFIERS, NUMBERS,
OPERATORS, CHARACTER CONSTANTS, OR STRING CONSTANTS) NOT INCLUDING
A SEMICOLON.
/IT NEED NOT BE  A LEGAL STATEMENT, EXPRESSION, OR ANYTHING ELSE.
       /A MACRO CALL LOOKS ALMOST LIKE A FUNCTION CALL, I.E., IT
HAS THE FORM <NAME>(<ARGUMENTS>); HOWEVER, THE <ARGUMENTS> ARE NOT
REQUIRED TO BE LEGAL EXPRESSIONS: THEY NEED ONLY BE SEQUENCES OF 
TOKENS BALANCED WITH RESPECT TO PARENTHESES, NOT CONTAINING SEMICOLONS,
AND DELIMITED BY COMMAS WHICH ARE NOT ENCLOSED IN INNER PARENTHESES.
/FOR EXAMPLE,
.SP
.IN 8
^CSTRING X(20), #, AND (/B,/C)
.SP
ARE LEGAL ARGUMENTS.
/THE EFFECT OF THE MACRO CALL IS THAT THE DEFINITION, WITH THE
ACTUAL ARGUMENTS, REPLACES THE CALL BEFORE ANY FURTHER PROCESSING IS
DONE ON THE STATEMENT.
/A MACRO CALL MAY APPEAR ANYWHERE IN THE STATEMENT, NOT JUST WHERE
A FUNCTION CALL WOULD BE LEGAL.
/MACROS MAY CALL OTHER MACROS.
/IF LISTING IS BEING DONE, STATEMENTS WILL BE LISTED ^IBEFORE MACRO
SUBSTITUTIONS HAVE BEEN PERFORMED; THIS IS ALSO TRUE WHEN A STATEMENT
IS LISTED IN RESPONSE TO AN ERROR.
       /A WORD OF WARNING FOR THOSE ACCUSTOMED TO THE ^CNARP MACRO
FACILITY.
/SINCE SUBSTITUTIONS ARE PERFORMED ON THE BASIS OF TOKENS RATHER
THAN CHARACTERS, NO SUBSTITUTION OCCURS WITHIN CHARACTER OR STRING
CONSTANTS IN THE DEFINITION, E.G.,
.SP
.IN 8
^UDECLARE MACRO S1(X)"X";^L
.SP
WILL NOT CAUSE A SUBSTITUTION.
/ALSO, CONCATENATION IS NOT AVAILABLE.
/FINALLY, EACH DUMMY ARGUMENT HAS A NAME OF ITS OWN AND THE PROPER
NUMBER OF ARGUMENTS MUST BE SUPPLIED AT EACH CALL.
       /TWO EXAMPLES OF USEFUL MACROS ARE AS FOLLOW:
.SP
.IN 8
^UDECLARE MACRO INC(X)XX+1;^L
.SP
CAUSES ^CINC(A) TO BE EQUIVALENT TO /A/A+1;
.SP
.IN 8
^UDECLARE MACRO TWO(X)(X)*2;^L
.SP
CAUSES ^CTWO(X+Y) TO BE EQUIVALENT TO (/X+/Y)*2.
/NOTE THAT IF THE DEFINITION HAD BEEN SIMPLY /X*2, THEN ^CTWO(X+Y)
WOULD HAVE BEEN EQUIVALENT TO /X+/Y*2, WHICH IS PRESUMABLY NOT WHAT
IS WANTED.
.EJ
^I/SPECIAL ^I/FUNCTIONS:
       /THE FOLLOWING SPECIAL FUNCTIONS ARE A STANDARD PART OF THE
LANGUAGE.
/THEY PROVIDE ALL THE BUILT-IN STORAGE ALLOCATION, STRING HANDLING
AND INPUT^/OUTPUT FACILITIES.
/IF MORE ELABORATE FACILITIES ARE REQUIRED, RECOURSE MAY BE HAD TO
MACHINE-LANGUAGE ROUTINES.
/THE NECESSARY LINKAGES ARE DESCRIBED UNDER FUNCTION CALLS AND 
DECLARATIONS ABOVE.
.SP 2
.UNDERLINE
STORAGE ALLOCATION FUNCTIONS
.SP 2
.UNDERLINE
^CMAKE,^CSETARRAY
.SP
.IN 8
^CMAKE(<^EEXPRESSION>)
.SP
CREATES A BLOCK OF STORAGE OF THE LENGTH SPECIFIED BY THE EXPRESSION
(BUT OF AT LEAST TWO CELLS) AND RETURNS A POINTER TO THIS BLOCK AS
ITS VALUE.
/IN FACT, ONE EXTRA CELL IS ASSIGNED BY THE SYSTEM; THE USER SHOULD
KEEP HIS HANDS OFF THIS CELL WHICH IS THE ONE BEFORE THE ONE POINTED
TO BY THE VALUE OF THE ^CMAKE FUNCTION.
/AN ALTERNATE FORM IS
.SP
.IN 8
^CMAKE(<^EEXPRESSION>,<ARRAY NAME>)
.SP
WHICH ASSIGNS THE BLOCK OUT OF THE SPECIFIED ARRAY, WHICH MUST HAVE
BEEN PROPERLY INITIALIZED BEFOREHAND BY A CALL OF
.SP
.IN 8
^CSETARRAY(<^EEXPRESSION>,<ARRAY NAME>);
.SP
/ONLY BLOCKS OR THE SIZE SPECIFIED IN THE CALL OF ^CSETARRAY CAN BE
ASSIGNED IN THIS WAY.
/BLOCKS OF ANY SIZE CAN BE ASSIGNED BY A SIMPLE ^CMAKE.
.SP 2
^I^CPMAKE
       /TO ALLOCATE SPACE ON THE DRUM THE FUNCTION ^CPMAKE SHOULD BE
USED.
/IT IS EXACTLY LIKE ^CMAKE, EXCEPT THAT THE SECOND ARGUMENT, IF PRESENT,
SHOULD BE A PAGED POINTER TO AN OBJECT NEAR WHICH THE NEW SPACE SHOULD
BE ASSIGNED IF POSSIBLE.
/PROPER USE OF THIS FEATURE WILL GREATLY IMPROVE THE EFFICIENCY WITH
WHICH PAGED OBJECTS ARE ACCESSED.
/SEE THE DISCUSSION OF THE ^CPAGED DECLARATION FOR FURTHER INFORMATION
ABOUT THE PROPER USE OF ADDRESSES OBTAINED FROM ^CPMAKE.
.SP 2
^I^CFREE
       /TO RELEASE A BLOCK OF STORAGE, DO
.SP
.IN 8
^CFREE(<^EEXPRESSION>) OR ^CFREE(<^EEXPRESSION>,
.IN 11
<ARRAY NAME>)
.SP
WHERE THE VALUE OF THE EXPRESSION IS A POINTER TO THE BLOCK.
/THE FUNCTION HAS NO MEANINGFUL VALUE.
/THE STORAGE ALLOCATOR WILL ATTEMPT TO COALESCE FREED BLOCKS, BUT
SINCE IT CANNOT MOVE BLOCKS AROUND, IT IS POSSIBLE TO GRAGMENT STORAGE
HOPELESSLY BY ACQUIRING AND RELEASING BLOCKS OF MANY DIFFERENT 
SIZES IN A INDISCRIMINATE MANNER.
/IF THE SYSTEM RUNS OUT OF SPACE, IT WILL COMPLAIN AND QUIT.
/NOTE THAT
.SP
.IN 8
^UFREE(MAKE(4));^L
.SP
ACQUIRES AND IMMEDIATELY RELEASES A BLOCK OF FOUR WORDS.
/IT IS EXACTLY EQUIVALENT TO ^CNOP (EXCEPT FOR TIMING).
^CFREE ALSO WORKS FOR DRUM SPACE.
.SP 2
^I^CBCOPY
       /TO COPY ONE BLOCK OF STORAGE INTO ANOTHER ONE OF EQUAL SIZE
USE
.SP
.IN 8
^UBCOPY^L(<^EEXPRESSION>,<EXPRESSION>)  .
.SP
/THE FIRST EXPRESSION IS A POINTER TO THE DESTINATION, THE SECOND
TO THE SOURCE.
/THESE MUST BE POINTERS ACQUIRED BY ^CMAKE (OR CAREFULLY FABRICATED)
SINCE THE LENGTH OF THE BLOCK IS DETERMINED FROM THE CONTENTS OF THE
EXTRA HIDDEN WORD PROVIDED BY ^CMAKE.
/THE SOURCE BLOCK MUST HAVE BEEN CREATED BY A ^CMAKE WITH A SINGLE
ARGUMENT.
/IF THE SOURCE BLOCK DOES NOT HAVE THE HIDDEN WORD,
.SP
.IN 8
^CBCOPY(<EXPRESSION>,<EXPRESSION>,
.IN 11
<EXPRESSION>)
.SP
MAY BE USED, WHERE THE THIRD ARGUMENT SPECIFIES THE NUMBER OF WORDS
TO COPY.
.EJ
.UNDERLINE
/PAGING /FACILITY
.SP 2
.UNDERLINE
^UNPG,PM,^/$QPDATA,NPB,PCAT^L
       /THE PAGING FACILITIES PROVIDE A MEANS FOR THE USER TO ALLOCATE
AND ACCESS A LARGE (UP TO 2^^19 WORDS) ADDRESS SPACE, BY BUFFERING
PARTS OF THIS ADDRESS SPACE BETWEEN CORE AND DRUM IN FIXED-SIZE
PAGES.
/THE USER CAN SPECIFY THE PAGE SIZE, THE AMOUNT OF CORE SPACE TO 
ALLOCATE FOR BUFFERS (WHICH CAN BE CHANGED DYNAMICALLY DURING EXECUTION),
AND THE SIZE OF THE ADDRESS SPACE; INDIVIDUAL PAGES MAY BE LOCKED
INTO CORE FOR A TIME AND LATER ALLOWED TO BE SWAPPED OUT AGAIN; THE
USER'S PAGED DATA MAY BE DIVIDED INTO A NUMBER OF CATEGORIES, WHICH
ALLOWS MORE EFFICIENT ALLOCATION OF SPACE BY GROUPING OBJECTS OF THE
SAME CATEGORY ON THE SAME PAGE.
       /AT THE TIME THAT ^CINIT IS CALLED (SEE THE ^CINITIALIZE
FUNCTION IN SECTION 6), CERTAIN CELLS IN THE RUNTIME ARE EXAMINED TO
DETERMINE THE SETUP OF THE PAGING LOGIC.
/THE NAMES OF THESE CELLS ARE PRE-DECLARED ^CEXTERNAL.
/THE CELL ^CNPL CONTAINS THE PAGE SIZE AS A POWER OF 2, WHICH MUST
BE BETWEEN 8 AND 11.
/THE CELL ^CNPG CONTAINS THE SIZE OF THE DESIRED ADDRESS SPACE AS A
MULTIPLE OF 2^^NPL: THE SIZE CANNOT EXCEED 2^^19.
/IF ^CNPG CONTAINS A ZERO, IT IS ASSUMED THAT NO USE WILL BE MADE
OF THE PAGING LOGIC, AND ANY CALLS ON IT WILL PRODUCE ERROR COMMENTS.
/THE CELL ^CNPB CONTAINS THE NUMBER OF CORE BUFFERS TO BE PROVIDED.
/IF IT CONTAINS 0, ALL AVAILABLE SPACE WILL BE USED FOR BUFFER.
/THE CELL ^CNPC CONTAINS THE HIGHEST CATEGORY NUMBER WHICH WILL BE
USED.
/THE CELL ^CPM CONTAINS A POSITIVE NUMBER IF THE DIRECT DRUM ACCESS
MACHINERY, ^CBRS 124-127, IS TO BE USED FOR STORING PAGED DATA, OR
A NEGATIVE NUMBER IF A RANDOM FILE CALLED ^/$QPDATA IS TO BE USED;
THE FORMER IS SOMEWHAT MORE EFFICIENT, ESPECIALLY IF THE ADDRESS SPACE
IS LARGE, BUT THE LATTER CAN BE ACCESSED BY OTHER PROGRAMS VIA THE
ORDINARY FILE MACHINERY WHEREAS THE FORMER CANNOT.
       /A FEW OTHER CELLS ARE OF INTEREST.
/THE CELL ^CPCAT IS EXAMINED WHENEVER A CALL IS MADE TO ^CPMAKE.
/IF IT CONTAINS A NON-ZERO NUMBER, THE NEW BLOCK WILL BE ALLOCATED ON
A PAGE RESERVED FOR DATA OF THE DESIGNATED CATEGORY.
/IF IT CONTAINS A ZERO, THE NEW BLOCK WILL BE ALLOCATED ON SOME 
CONVENIENT PAGE WITHOUT REFERENCE TO CATEGORY.
/A CALL OF ^CPMAKE WITH A VALID DRUM ADDRESS AS THE SECOND ARGUMENT
TAKES PRECEDENCE OVER THE SETTING OF ^CPCAT.
.SP 2
.UNDERLINE
^CLOCK,^CUNLOCK
       /A PAGE MAY BE LOCKED INTO CORE WITH
.SP
.IN 8
^CLOCK(^CX);
.SP
WHERE /X IS A DRUM ADDRESS; THE VALUE IS THE CORRESPONDING CORE
ADDRESS, WHICH IS GUARANTEED TO REMAIN VALID UNTIL THE PAGE IS
UNLOCKED.
/THE FUNCTION
.SP
.IN 8
^UUNLOCK(A);^L
.SP
WHERE /A IS A CORE ADDRESS, STORES THE CORRESPONDING DRUM ADDRESS
IN A CELL CALLED ^CPADDR AND RETURNS THE OLD LOCK COUNT (WHICH IS
INCREMENTED BY ^CLOCK AND DECREMENTED IF NON-ZERO BY ^CUNLOCK) AS 
VALUE; IT IS ALL RIGHT TO UNLOCK AN UNLOCKED BUFFER.
/THE CELL ^CNUP ALWAYS CONTAINS THE NUMBER OF BUFFERS WHICH ARE
NOT LOCKED AT THE MOMENT.
       /PAGE BUFFERS ARE ALLOCATED DOWNWARDS (TOWARDS LOW-NUMBERED
ADDRESSES) FROM THE INITIAL SETTING OF A CELL CALLED ^CBSTORG; THE
BOTTOM OF THE BUFFER AREA IS PUT INTO THE CELL ^CBARRAY BY THE ^CINIT
OPERATION.
/IF THE USER WANTS TO REDUCE THE AMOUNT OF SPACE AVAILABLE FOR BUFFERS,
HE MAY USE ^CBPUT(/X), WHERE /X IS A CORE ADDRESS IN A BUFFER.
/THE BUFFER WILL BE RETURNED TO THE POOL OF SPACE AVAILABLE TO THE 
CORE ALLOCATOR (^CMAKE).
/THE CONVERSE OPERATION IS ^CBGET(NCX), WHICH RESTORES THE BUFFER
FOR USE BY THE PAGING LOGIC.
/NOTE THAT THE BUFFER AREA IS DEFINED AT ^CINIT TIME (AS THE ^CNPB*2^^CNPL
CELLS JUST BELOW (^CBSTORG)-2^^^CNPL AND ^CBPUT AND ^CBGET MAY ONLY
BE USED ON ADDRESSES IN THIS RANGE.
^CINIT ALLOCATES SPACE UP FROM ^CBSTORG FOR TABLES FOR THE DRUM 
ALLOCATOR, LEAVING THE FIRST UNUSED CELL IN ^CSARRAY.
/THUS ^CSARRAY AND ^CBARRAY BRACKET THE CORE NOT USED BY THE PAGING
LOGIC AFTER AN ^CINIT, WHILE ^CBSTORG AND ^CESTORG BRACKET THE CORE
AVAILABLE TO IT BEFORE AN ^CINIT.
.EJ
.UNDERLINE
/STRING /HANDLING /FUNCTIONS
.SP 2
.UNDERLINE
STRING DESCRIPTORS,^CSETUP
       /A STRING IS DESCRIBED BY A FOUR WORD DESCRIPTOR WHICH SPECIFIES
THE BEGINNING AND END OF THE AREA ASSIGNED TO THE STRING, THE READER
POINTER, AND THE WRITER POINTER.
/THE FUNCTION
.SP
.IN 8
^CSETUP(<^ESTRING NAME>,<SIZE>)
.SP
WILL OBTAIN A BLOCK SPECIFIED SIZE AND SET UP THE DESCRIPTOR POINTED
TO BY THE STRING NAME TO POINT TO THAT BLOCK.
/THE NAME MUST ALREADY CONTAIN A POINTER TO A DESCRIPTOR; IF IT CONTAINS A 0
A RUNTIME ERROR WILL RESULT.
/THE ALTERNATE FORM
.SP
.IN 8
^CSETUP(<^ESTRING NAME>,<SIZE>,<EXPRESSION>)
.SP
WILL MAKE A DESCRIPTOR WHICH POINTS TO THE SPECIFIED NUMBER OF
CHARACTERS STARTING WITH THE WORD POINTED TO BY THE EXPRESSION.
/THE STORAGE ALLOCATOR IS NOT INVOKED; IT IS THE PROGRAMMER'S RESPONSIBILITY
TO CREATE THE DESCRIPTOR.
/IT IS ALSO THE PROGRAMMER'S RESPONSIBILITY TO ENSURE THAT THE PROPER
AMOUNT OF SPACE IS IN FACT AVAILABLE.
.SP 2
.UNDERLINE
^USETS,SETR,SETW,LENGTH^L
       /TO SET THE READER AND WRITER POINTERS OF A STRING, USE
.SP
.IN 8
^CSETS(<^ENAME>,<EXPRESSION>,<EXPRESSION>)  .
.SP
/THE FIRST EXPRESSION SPECIFIES THE READER POINTER, THE SECOND
THE WRITER POINTER (WHICH MUST BE GREATER; IF IT IS NOT, THE READER IS
SET EQUAL TO THE WRITER POINTER).
/CHARACTERS ARE NUMBERED STARTING AT 0.
/TO SET THE READER POINTER ONLY, USE
.SP
.IN 8
^CSETR(<^ENAME>,<EXPRESSION>)  .
.SP
/TO SET THE WRITER POINTER ONLY, USE
.SP
.IN 8
^CSETW(<^ENAME>,<EXPRESSION>)  .
.SP
/TO OBTAIN THE LENGTH OF A STRING (WRITER POINTER - READER POINTER) USE
.SP
.IN 8
^CLENGTH(<^ENAME>)  .
.SP
/NONE OF THESE FUNCTIONS EXCEPT ^CLENGTH HAS A MEANINGFUL VALUE.
.SP 2
.UNDERLINE
^UGCI,GCD,WCI,WCD,APPEND,GC^L
       /TO GET THE NEXT CHARACTER FROM A STRING AND INCREMENT THE READER
POINTER, USE
.SP
.IN 8
^CGCI(<^ENAME>)  .
.SP
/IF THERE IS NO NEXT CHARACTER, THERE WILL BE AN ERROR COMMENT AND A HALT.
/TO AVOID THIS, USE THE ALTERNATE FORM
.SP
.IN 8
^CGCI(<^ENAME>:<FAILURE LOCATION>)
.SP
(SEE DISCUSSION OF FAILURE LOCATIONS BELOW).
/THIS CONVENTION IS ALSO USED FOR THE NEXT FIVE FUNCTIONS.
.SP
.IN 8
^CGCD(<^ENAME>)
.SP
READS A CHARACTER FROM THE END OF THE STRING AND DECREMENTS THE WRITER
POINTER.
.SP
.IN 8
^CWCI(<^EEXPRESSION>,<NAME>)
.SP
WRITES THE CHARACTER SPECIFIED BY THE EXPRESSION ON THE STRING SPECIFIED
BY THE NAME.
/IT FAILS IF THERE IS NO ROOM.
.SP
.IN 8
^CWCD(<^EEXPRESSION>,<NAME>)
.SP
WRITES THE CHARACTER ON THE FRONT OF THE STRING, AT THE LOCATION OF THE 
READER POINTER, AND FAILS FOR THE SAME REASON.
/THESE FUNCTIONS HAVE THE CHARACTER WRITTEN AS THEIR VALUE.
.SP
.IN 8
^CAPPEND(<^ENAME>,<NAME>)
.SP
APPENDS THE SECOND STRING TO THE FIRST ONE.
/IT FAILS IF THERE IS NOT ENOUGH ROOM.
/IT HAS NO MEANINGFUL VALUE.
.SP
.IN 8
^CGC(<^ENAME>)
.SP
YIELDS THE NEXT CHARACTER OF THE STRING, BUT DOES NOT ADVANCE THE READER
POINTER.
/IT NEVER FAILS, BUT YIELDS JUNK IF THE STRING IS EMPTY.
.SP 2
.UNDERLINE
STRING MOVING,^CBCOPY,^CSCOPY
       /THE EXPRESSION /A/B (WHERE /A AND /B ARE STRING NAMES) SIMPLY
MOVES THE CONTENTS OF /B (PRESUMABLY A POINTER TO A DESCRIPTOR) INTO /A.
/TO COPY THE DESCRIPTOR, THE ^CBCOPY FUNCTION MIGHT BE USED, SINCE STRING 
DESCRIPTORS ARE JUST 4 WORD BLOCKS;
.SP
.IN 8
^CBCOPY(/B,/A)  .
.SP
/BE SURE TO READ THE SECTION ON ^CBCOPY ABOVE.
/TO COPY THE STRING, USE
.SP
.IN 8
^CSCOPY(/B,/A)  .
.SP
/THE EFFECT IS THAT OF ^CSETS(/,0,0) FOLLOWED BY ^CAPPEND(/B,/A).
^CSCOPY, LIKE ^CAPPEND, FAILS IF THERE IS NOT ENOUGH ROOM IN /B.
.SP 2
.UNDERLINE
STRING^/NUMBER CONVERSION,^CCNS,^CCSN,^CCRS,^CCSR
       /TO CONVERT A STRING /S TO A NUMBER, WRITE
.SP
.IN 8
^CCSN(/S)  .
.SP
/TO CONVERT A NUMBER /N TO A STRING /S, WRITE
.SP
.IN 8
^CCNS(/N,/S)  .
.SP
/THIS CONVERTS A SIGNED NUMBER TO ITS DECIMAL REPRESENTATION, PRODUCING ONLY
ENOUGH DIGITS TO ACCURATELY REPRESENT THE NUMBER.
/EXTRA ARGUMENTS MAY BE SUPPLIED WHICH SPECIFY RADIX (10 ASSUMED) AND THE
NUMBER OF CHARACTERS IN THE STRING VERSION (-1 OR FREE FORMAT ASSUMED).
/CORRESPONDING OPERATIONS FOR FLOATING POINT NUMBERS ARE
.SP
.IN 8
^CCSR(/S)
.SP
AND
.SP
.IN 8
^CCRS(/R,/S)  .
.EJ
.UNDERLINE
4.  /FILE-NAMING FUNCTIONS
.SP 2
.UNDERLINE
^UINFILE,OUTFILE,FTYPE,ERROR^L
       /A FILE IS OPENED FOR INPUT WITH
.SP
.RM 8
^CINFILE(<^ESTRING NAME>:<FAILURE LOCATION>) .
.EM 8
.SP
/THE STRING CONTAINS THE FULL NAME OF THE FILE.
/THIS FUNCTION REQUIRES THE PRESENCE OF A ^IFAILURE ^ILOCATION TO WHICH
CONTROL TRANSFERS IN THE CASE THE FUNCTION FAILS.
/ITS VALUE IS THE FILE NUMBER.
.SP
.RM 8
^COUTFILE(<^ENAME>,<EXPRESSION>[:<FAILURE
.RM 3
LOCATION>])
.EM 3
.EM 8
.SP
DOES THE SAME THING FOR OUTPUT.
/THE EXPRESSION IS THE OPTION WORD WHICH ^CBRS 16 TAKES IN THE /A-REG.
/IT WILL BE ASSUMED TO BE 0 IF NOT SUPPLIED.
/BOTH OF THESE OPERATIONS LEAVE IN THE LOCATION ^CFTYPE THE TYPE WORD 
RETURNED BY THE ^CBRS; IN CASE OF FAILURE, THE ERROR RETURNED BY THE ^CBRS
IS IN LOCATION ^CERROR.
.SP 2
.UNDERLINE
^UINNAME,OUTNAME^L
       /TO ACQUIRE FILE NAMES, USE
.SP
.RM 8
^CINNAME(<^ENAME>:<FAILURE LOCATION>)
.SP
.UN 8
AND
.SP
^COUTNAME(<^ENAME>:<FAILURE LOCATION>)
.SP
.EM 8
BOTH OF WHICH COLLECT THE NAME FROM THE TERMINAL AND ^IAPPENDS ^IIT ^ITO
^ITHE ^ISTRING ^ISUPPLIED.
/BOTH TRANSFER TO THE GIVEN LOCATION IN THE EVENT OF FAILURE, AND HAVE
THE TERMINATING CHARACTER AS VALUE.
.SP 2
.UNDERLINE
^UCLOSE,CLOSALL^L
       /TO CLOSE A FILE, DO
.RM 8
.SP
^CCLOSE(<^EEXPRESSION>) .
.SP
.EM 8
/THE EXPRESSION'S VALUE SHOULD BE THE FILE NUMBER.
/TO CLOSE ALL FILES, DO
.SP
.IN 8
^CCLOSALL();
.EJ
.UNDERLINE
5.  /INPUT-OUTPUT FUNCTIONS
.SP 2
.UNDERLINE
^UCIN,COUT,WIN,WOUT,SOUT,CRLF^L
       /TO READ A CHARACTER, USE
.SP
.IN 8
^CCIN(^E<EXPRESSION>);
.SP
/THE VALUE OF THE EXPRESSION SHOULD BE THE FILE NUMBER.
/THIS FUNCTION SIMPLY DOES A ^CCIO.
/ITS VALUE IS THE CHARACTER READ.
/TO WRITE A CHARACTER, USE
.SP
.IN 8
^CCOUT(NE<EXPRESSION>[,<EXPRESSION>]);
.SP
/FILE 1 IS ASSUMED IF NOT SPECIFIED.
/THIS FUNCTION HAS THE CHARACTER WRITTEN AS ARGUMENT.
/TO READ AND WRITE A FULL WORD, USE ^CWIN AND ^CWOUT IN EXACTLY THE SAME
WAY.
/TO WRITE A STRING, USE
.SP
.IN 8
^CSOUT(^E<NAME>[,<FILE>])  .
.SP
/TO WRITE CARRIAGE RETURNS, USE
.SP
.IN 8
^CCRLF(^E<EXPRESSION>[,<FILE>]);
.SP
/THE EXPRESSION SPECIFIES HOW MANY SHOULD BE WRITTEN.
.SP 2
.UNDERLINE
^UIIN,IOUT,RIN,ROUT
       /TO READ A NUMBER, USE
.SP
.IN 8
^CIIN(^E<FILE>[,<RADIX>]) .
.SP
/DECIMAL RADIX IS ASSUMED.
/TO WRITE A NUMBER, USE
.SP
.IN 8
^CIOUT(^E<EXPRESSION>) .
.SP
/EXTRA ARGUMENTS, IN ORDER, ARE THE FILE (1 ASSUMED), THE RADIX
(10 ASSUMED) AND THE NUMBER OF CHARACTERS TO BE WRITTEN (-1, OR FREE FORMAT
ASSUMED).
/CHARACTERS ARE DISCARDED FROM THE LEFT; THE NUMBER IS FILLED OUT ON THE
LEFT WITH BLANKS.
/A SIGN IS SUPPLIED IF THE NUMBER IS NEGATIVE.
/CORRESPONDING OPERATIONS FOR FLOATING POINT NUMBERS ARE
.SP
.IN 8
^CRIN(^E<FILE>[,<FORMAT>])
.SP
FOR FLOATING INPUT, AND
.SP
.IN 8
^CROUT(^E<EXPRESSION>,<FILE>[,<FORMAT>])
.SP
FOR FLOATING OUTPUT.
/THE FORMAT WORD IS EXPLAINED IN /R-2.
/IF IT IS OMITTED, IT WILL BE TAKEN AS ZERO, LEADING TO FREE FORMAT
OUTPUT.
.EJ
> ,<EXPRESSION>)  .
.SP
/THE FIRST EXPRESSION SPECIFIES THE READER POINTER, THE SECOND
THE WRITER POINTER (WHICH MUST BE GREATER; IF IT IS NOT, THE READER IS
SET EQUAL TO THE WRITER POINTER).
/CHARACTERS ARE NUMBERED STARTING AT 0.
/TO SET THE READER POINTER ONLY, USE
.SP
.IN 8
^CSETR(<^ENAME>,<EXPRESSION>)  .
.SP
/TO SET THE WRITER POINTER ONLY, USE
.SP
.IN 8
^CSETW(<^ENAME>,<EXPRESSION>)  .
.SP
/TO OBTAIN THE LENGTH OF A STRING (WRITER POINTER - READER POINTER) USE
.SP
.IN 8
^CLENGTH(<^ENAME>)  .
.SP
/NONE OF THESE FUNCTIONS EXCEPT ^CLENGTH HAS A MEANINGFUL VALUE.
.SP 2
.UNDERLINE
^UGCI,GCD,WCI,WCD,APPEND,GC^L
       /TO GET THE NEXT CHARACTER FROM A STRING AND INCREMENT THE READER
POINTER, USE
.SP
.IN 8
^CGCI(<^ENAME>)  .
.SP
/IF THERE IS NO NEXT CHARACTER, THERE WILL BE AN ERROR COMMENT AND A HALT.
/TO AVOID THIS, USE THE ALTERNATE FORM
.SP
.IN 8
^CGCI(<^ENAME>:<FAILURE LOCATION>)
.SP
(SEE DISCUSSION OF FAILURE LOCATIONS BELOW).
/THIS CONVENTION IS ALSO USED FOR THE NEXT FIVE FUNCTIONS.
.SP
.IN 8
^CGCD(<^ENAME>)
.SP
READS A CHARACTER FROM THE END OF THE STRING AND DECREMENTS THE WRITER
POINTER.
.SP
.IN 8
^CWCI(<^EEXPRESSION>,<NAME>)
.SP
WRITES THE CHARACTER SPECIFIED BY THE EXPRESSION ON THE STRING SPECIFIED
BY THE NAME.
/IT FAILS IF THERE IS NO ROOM.
.SP
.IN 8
^CWCD(<^EEXPRESSION>,<NAME>)
.SP
WRITES THE CHARACTER ON THE FRONT OF THE STRING, AT THE LOCATION OF THE 
READER POINTER, AND FAILS FOR THE SAME REASON.
/THESE FUNCTIONS HAVE THE CHARACTER WRITTEN AS THEIR VALUE.
.SP
.IN 8
^CAPPEND(<^ENAME>,<NAME>)
.SP
APPENDS THE SECOND STRING TO THE FIRST ONE.
/IT FAILS IF THERE IS NOT ENOUGH ROOM.
/IT HAS NO MEANINGFUL VALUE.
.SP
.IN 8
^CGC(<^ENAME>)
.SP
YIELDS THE NEXT CHARACTER OF THE STRING, BUT DOES NOT ADVANCE THE READER
POINTER.
/IT NEVER FAILS, BUT YIELDS JUNK IF THE STRING IS EMPTY.
.SP 2
.UNDERLINE
STRING MOVING,^CBCOPY,^CSCOPY
       /THE EXPRESSION /A/B (WHERE /A AND /B ARE STRING NAMES) SIMPLY
MOVES THE CONTENTS OF /B (PRESUMABLY A POINTER TO A DESCRIPTOR) INTO /A.
/TO COPY THE DESCRIPTOR, THE ^CBCOPY FUNCTION MIGHT BE USED, SINCE STRING 
DESCRIPTORS ARE JUST 4 WORD BLOCKS;
.SP
.IN 8
^CBCOPY(/B,/A)  .
.SP
/BE SURE TO READ THE SECTION ON ^CBCOPY ABOVE.
/TO COPY THE STRING, USE
.SP
.IN 8
^CSCOPY(/B,/A)  .
.SP
/THE EFFECT IS THAT OF ^CSETS(/,0,0) FOLLOWED BY ^CAPPEND(/B,/A).
^CSCOPY, LIKE ^CAPPEND, FAILS IF THERE IS NOT ENOUGH ROOM IN /B.
.SP 2
.UNDERLINE
STRING^/NUMBER CONVERSION,^CCNS,^CCSN,^CCRS,^CCSR
       /TO CONVERT A STRING /S TO A NUMBER, WRITE
.SP
.IN 8
^CCSN(/S)  .
.SP
/TO CONVERT A NUMBER /N TO A STRING /S, WRITE
.SP
.IN 8
^CCNS(/N,/S)  .
.SP
/THIS CONVERTS A SIGNED NUMBER TO ITS DECIMAL REPRESENTATION, PRODUCING ONLY
ENOUGH DIGITS TO ACCURATELY REPRESENT THE NUMBER.
/EXTRA ARGUMENTS MAY BE SUPPLIED WHICH SPECIFY RADIX (10 ASSUMED) AND THE
NUMBER OF CHARACTERS IN THE STRING VERSION (-1 OR FREE FORMAT ASSUMED).
/CORRESPONDING OPERATIONS FOR FLOATING POINT NUMBERS ARE
.SP
.IN 8
^CCSR(/S)
.SP
AND
.SP
.IN 8
^CCRS(/R,/S)  .
.EJ
.UNDERLINE
4.  /FILE-NAMING FUNCTIONS
.SP 2
.UNDERLINE
^UINFILE,OUTFILE,FTYPE,ERROR^L
       /A FILE IS OPENED FOR INPUT WITH
.SP
.RM 8
^CINFILE(<^ESTRING NAME>:<FAILURE LOCATION>) .
.EM 8
.SP
/THE STRING CONTAINS THE FULL NAME OF THE FILE.
/THIS FUNCTION REQUIRES THE PRESENCE OF A ^IFAILURE ^ILOCATION TO WHICH
CONTROL TRANSFERS IN THE CASE THE FUNCTION FAILS.
/ITS VALUE IS THE FILE NUMBER.
.SP
.RM 8
^COUTFILE(<^ENAME>,<EXPRESSION>[:<FAILURE
.RM 3
LOCATION>])
.EM 3
.EM 8
.SP
DOES THE SAME THING FOR OUTPUT.
/THE EXPRESSION IS THE OPTION WORD WHICH ^CBRS 16 TAKES IN THE /A-REG.
/IT WILL BE ASSUMED TO BE 0 IF NOT SUPPLIED.
/BOTH OF THESE OPERATIONS LEAVE IN THE LOCATION ^CFTYPE THE TYPE WORD 
RETURNED BY THE ^CBRS; IN CASE OF FAILURE, THE ERROR RETURNED BY THE ^CBRS
IS IN LOCATION ^CERROR.
.SP 2
.UNDERLINE
^UINNAME,OUTNAME^L
       /TO ACQUIRE FILE NAMES, USE
.SP
.RM 8
^CINNAME(<^ENAME>:<FAILURE LOCATION>)
.SP
.UN 8
AND
.SP
^COUTNAME(<^ENAME>:<FAILURE LOCATION>)
.SP
.EM 8
BOTH OF WHICH COLLECT THE NAME FROM THE TERMINAL AND ^IAPPENDS ^IIT ^ITO
^ITHE ^ISTRING ^ISUPPLIED.
/BOTH TRANSFER TO THE GIVEN LOCATION IN THE EVENT OF FAILURE, AND HAVE
THE TERMINATING CHARACTER AS VALUE.
.SP 2
.UNDERLINE
^UCLOSE,CLOSALL^L
       /TO CLOSE A FILE, DO
.RM 8
.SP
^CCLOSE(<^EEXPRESSION>) .
.SP
.EM 8
/THE EXPRESSION'S VALUE SHOULD BE THE FILE NUMBER.
/TO CLOSE ALL FILES, DO
.SP
.IN 8
^CCLOSALL();
.EJ
.UNDERLINE
5.  /INPUT-OUTPUT FUNCTIONS
.SP 2
.UNDERLINE
^UCIN,COUT,WIN,WOUT,SOUT,CRLF^L
       /TO READ A CHARACTER, USE
.SP
.IN 8
^CCIN(^E<EXPRESSION>);
.SP
/THE VALUE OF THE EXPRESSION SHOULD BE THE FILE NUMBER.
/THIS FUNCTION SIMPLY DOES A ^CCIO.
/ITS VALUE IS THE CHARACTER READ.
/TO WRITE A CHARACTER, USE
.SP
.IN 8
^CCOUT(NE<EXPRESSION>[,<EXPRESSION>]);
.SP
/FILE 1 IS ASSUMED IF NOT SPECIFIED.
/THIS FUNCTION HAS THE C.GL  TER-MIN-AL TEM-PO-RARY SOME-WHERE RUN-TIME OTHER-WISE
.GL IN-TE-GER IN-STRUC-TION INIT-IAL-IZES GEN-ER-AL
.GL DIS-AS-TER DE-MAND DE-FAULT COM-PIL-ATION AUTO-MAT-ICAL-LY
.DEFINE FORMAT COM L(A) J(B)
AAAAAAAABBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBB
.END FORMAT
.UNDERLINE
6.  /MISCELLANEOUS FUNCTIONS
.SP 2
.UNDERLINE
^UFIX,FLOAT^L
       /TWO FUNCTIONS ARE PROVIDED FOR CONVERTING BETWEEN
INTEGER AND FLOATING POINT.
/TO CONVERT A FLOATING POINT NUMBER TO AN INTEGER BY TRUNCATION, USE
.SP
.IN 8
^CFIX(^E<EXPRESSION>) .
.SP
/TO CONVERT TO AN INTEGER BY ROUNDING, USE
.SP
.IN 8
^CFIX(X0.5) .
.SP
/TO CONVERT AN INTEGER TO FLOATING POINT, USE
.SP
.IN 8
^CFLOAT(^E<EXPRESSION>) .
.SP 3
^I^CINITIALIZE
       /THERE ARE THREE ARGUMENTLESS SPECIAL FUNCTIONS OF GENERAL
INTEREST.
^CINITIALIZE() INITIALIZES THE ^CQSPL STORAGE ALLOCATOR, TAKING ALL THE
SPACE BETWEEN THE CONTENTS OF ^CBSTORG AND THE END OF CORE FOR ITSELF.
       /THE COMPILER PROVIDES AN ^CINITIALIZE AS THE FIRST INSTRUCTION
OF THE USER'S PROGRAM (I.E., IT IS AT THE TOP OF THE PROGRAM; THE
USER MAY WISH TO HAVE ONE OR MORE ENTRY POINTS TO LABELS LOWER DOWN).
/IF THE PROGRAM STARTS SOMEWHERE OTHER THAN AT THE TOP AND THUS DOES NOT
BEGIN WITH AN ^CINITIALIZE, THE USER MAY SAY ^CCALL* ^CINIT;/U
TO ^CDDT BEFORE STARTING THE PROGRAM.
/FAILING THIS, THERE WILL BE A DISASTER AS SOON AS THE PROGRAMS CALLS ON
ANY RUNTIME FEATURE.
.SP 2
.UNDERLINE
^UHALT,EXIT^L
       /THE OTHER TWO FUNCTIONS ARE
.SP
.IN 8
^CHALT(),
.SP
WHICH HALTS, AND
.SP
.IN 8
^CEXIT(),
.SP
WHICH DOES A ^CBRS 10.
/THE COMIPLER GENERATES A ^CBRS 10 AUTOMATICALLY AT THE END OF EVERY
PROGRAM.
.SP 2
.UNDERLINE
^UBRS,SBRM,POP^L
       /TO EXECUTE A ^CBRS, DO ^UBRS(N,A,B,X)^L WHICH SETS UP THE 
/A, /B, AND /X REGISTERS AND DOES THE ^CBRS NUMBERED /N.
/TRAILING ARGUMENTS MAY BE OMITTED, AND THE ADJACENT COMMAS MAY BE 
USED IF ONE OF THE REGISTERS DOES NOT NEED TO BE SET UP.
/IF THE ^CBRS IS EXPECTED TO SKIP, A FAILURE LOCATION MAY BE USED,
WHICH WILL BE USED IF THE ^CBRS DOES NOT SKIP.
/THE VALUE OF ^CBRS IS THE CONTENTS OF /A WHEN THE ^CBRS RETURNS: THE 
REGISTERS MAY BE SAVED BY A SAVE LIST AS FOR ORDINARY FUNCTION CALLS.
       /TO EXECUTE A ^CSBRM DO ^USBRM(N,A,B,X)^L.
/CONVENTIONS ARE EXACTLY THE SAVE AS FOR ^CBRS.
       /ARBITRARY MACHINE INSTRUCTIONS MAY BE GENERATED WITH 
^UPOP(OP,N,A,B,X)^L.
/THIS WORKS LIKE ^CBRS AND ^SBRM EXCEPT THAT THE OPCODE IS THE VALUE OF 
^COP, WHICH MUST BE A CONSTANT.
/THUS, ^CBRS(31,/X) AND ^CPOP(573/B,31,/X) ARE EQUIVALENT.
.EJ
^I/THE ^I/COMPILER
       /A PROGRAM IS COMPILED WITH THE FOLLOWING SET OF TERMINAL
ACTIONS:
.SP
.NOFILL
@^CQSPL
7^/14^/69   [THE DATE OF THE LAST ^CQSPL ASSEMBLY]
^CSOURCE ^CFILE: <FILE NAME><TERMINATING CHARACTER>
.FILL
.RM 5
[THE TERMINATING CHARACTER IS EITHER "."--ASSUME DEFAULT FILE FOR
^CBINARY AND ^CLISTING--^EOR "," OR ";"--DEMAND FURTHER FILE NAMES]
.UN 5
^CBINARY ^CFILE: <FILE NAME><TERMINATING CHARACTER>

[DEFAULT IS NOTHING--*/N]
.UN 5
^CLISTING ^CFILE: <FILE NAME> .

[DEFAULT IS NOTHING--*/N]
.EM 5
.SP 2
2 ^USEC  1 ERRS  243 CELLS  (A:^LN1,/L:N2(N3),/I:N4,N5,/T:N6,/M:N7)

@
       /THE 'N ^CERRS" DOES NOT APPEAR IF THERE WERE NO ERRORS.
/THE NUMBERS PRINTED OUTING THE COMPILATION SUMMARY HAVE THE
FOLLOWING SIGNIFICANCE:
.SP
.RM 8
.UN 8
.FORMAT COM
/A:N1,\NUMBER OF SYMBOL TABLE CELLS REMAINING AT END OF COMPILATION.
/THE SYMBOL TABLE HAS ABOUT 4900 CELLS.
/SYMBOLS TAKE 5 CELLS; CONSTANTS TAKE 4 CELLS.
.SP
.UN 8
.FORMAT COM
/L:N2\NUMBER OF LITERALS (CONSTANTS) IN THE LITERAL TABLE.
/THIS INCLUDES CONSTANTS ACTUALLY WRITTEN IN THE PROGRAM, TEMPORARY AND
FINAL VALUES OF CONSTANT EXPRESSIONS, AND OTHER COMPILER-GENERATED 
CONSTANTS SUCH AS FIELD MASKS.
.SP
.UN 8
.FORMAT COM
(N3),\NUMBER OF LITERALS WHICH WERE NEVER REFERENCED IN AN INSTRUCTION.
.SP
.UN 8
.FORMAT COM
/I-N4,\NUMBER OF INDIRECT CELLS GENERATED FOR LABELS.
.SP
.UN 8
.FORMAT COM
N5,\NUMBER OF INDIRECT CELLS GENERATED FOR ARRAYS AND FUNCTIONS.
.SP
.UN 8
.FORMAT COM
/T:N6,\TOTAL NUMBER OF ARITHMETIC TEMPORARY CELLS GENERATED.
.SP
.UN 8
.FORMAT COM
/M:N7\SMALLEST AMOUNT OF SYMBOL TABLE SPACE ENCOUNTERED AT ANY POINT 
DURING COMPILATION.
/THIS NUMBER IS SMALLER THAN THE "/A" NUMBER BY ROUGHLY THE NUMBER OF TOKENS IN
THE LONGEST STATEMENT IN THE PROGRAM.
/IT IS THE BEST MEASURE OF HOW CLOSE YOU ARE TO OVERFLOWING ^CQSPL'^ES
SYMBOL TABLE.
.FILL
.EJ
^I/THE ^I/RUNTIME
       /A SUBSYSTEM CALLED ^CQRUN CONTAINS THE ^CQSPL RUNTIME.
/WHEN CALLED, IT PUTS THE RUNTIME CODE INTO PAGE 7 OF THE MEMORY
SPACE, READ-ONLY, AND INITIALIZES THE POP TRANSFER VECTOR IN PAGE 0.
/IT LEAVES ;/F SET AFTER ITS STORAGE AND CONVERTS ITSELF INTO ^CDDT.
/DUMPS AND CONTINUES MAY BE PERFORMED EXACTLY AS THOUGH IT WERE ^CDDT.
/THE USER MAY SET UP ^CSARRAY TO THE FIRST UNUSED CELL BEFORE CALLING
^CINIT; OTHERWISE, ^CSARRAY GETS SET TO 100/B BEYOND THE LAST NON-ZERO
WORD OF THE PROGRAM.
> ASE OF FAILURE, THE ERROR RETURNED BY THE ^CBRS
IS IN LOCATION ^CERROR.
.SP 2
.UNDERLINE
^UINNAME,OUTNAME^L
       /TO ACQUIRE FILE NAMES, USE
.SP
.RM 8
^CINNAME(<^ENAME>:<FAILURE LOCATION>)
.SP
.UN 8
AND
.SP
^COUTNAME(<^ENAME>:<FAILURE LOCATION>)
.SP
.EM 8
BOTH OF WHICH COLLECT THE NAME FROM THE TERMINAL AND ^IAPPENDS ^IIT ^ITO
^ITHE ^ISTRING ^ISUPPLIED.
/BOTH TRANSFER TO THE GIVEN LOCATION IN THE EVENT OF FAILURE, AND HAVE
THE TERMINATING CHARACTER AS VALUE.
.SP 2
.UNDERLINE
^UCLOSE,CLOSALL^L
       /TO CLOSE A FILE, DO
.RM 8
.SP
^CCLOSE(<^EEXPRESSION>) .
.SP
.EM 8
/THE EXPRESSION'S VALUE SHOULD BE THE FILE NUMBER.
/TO CLOSE ALL FILES, DO
.SP
.IN 8
^CCLOSALL();
.EJ
.UNDERLINE
5.  /INPUT-OUTPUT FUNCTIONS
.SP 2
.UNDERLINE
^UCIN,COUT,WIN,WOUT,SOUT,CRLF^L
       /TO READ A CHARACTER, USE
.SP
.IN 8
^CCIN(^E<EXPRESSION>);
.SP
/THE VALUE OF THE EXPRESSION SHOULD BE THE FILE NUMBER.
/THIS FUNCTION SIMPLY DOES A ^CCIO.
/ITS VALUE IS THE CHARACTER READ.
/TO WRITE A CHARACTER, USE
.SP
.IN 8
^CCOUT(NE<EXPRESSION>[,<EXPRESSION>]);
.SP
/FILE 1 IS ASSUMED IF NOT SPECIFIED.
/THIS FUNCTION HAS THE C.GL  NUM-BER GUAR-AN-TEED FUNC-TION COM-PILES BUF-FERS
.GL AR-GU-MENTS
.GL  ORIG-IN-AL FOL-LOW-ING DE-SCRIP-TOR CHAR-AC-TERS
.GL ALLO-CATES
.DEFINE FORMAT A L(A) J(B)
AAAAAAAABBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBB
.END FORMAT
.DEFINE FORMAT B L(A) L(B) J(C)
AAAAAABBBBBBBBBCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC
.END FORMAT
.DEFINE FORMAT C R(A) J(B)
AAAAAAAAAAAA  BBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBB
.END FORMAT
.DEFINE FORMAT D R(A) J(B)
AAAAAAAAAAAA ::= BBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBB
.END FORMAT
.CE
^CAPPENDIX /A
.SP 2
.CE
/RUNTIME /DETAILS
.SP 5
^I/STRINGS
       /A ^CQSPL STRING DESCRIPTOR CONSISTS OF FOUR WORDS, EACH OF WHICH
IS A CHARACTER POINTER (3*<WORD ADDRESS>+0, 1, OR 2).  /THEY ARE:
.RM 8,5
.UN 3
POINTER TO CHARACTER BEFORE FIRST CHARACTER OF SPACE ALLOCATED TO STRING.

.UN 3
READ POINTER FOR STRING.

.UN 3
WRITE POINTER FOR STRING.

.UN 3
POINTER TO LAST CHARACTER OF SPACE ALLOCATED TO STRING.
.EM 8,5
^CISD CREATES SUCH A DESCRIPTOR.
^CRSD, ^CRSR AND ^CRSW SET THE READ AND WRITE POINTERS.
/CHARACTERS ARE COUNTED FROM 0.
^CRCS READS THE CHARACTERS BETWEEN READ AND WRITE POINTERS.
^CWCS WRITES CHARACTERS BETWEEN WRITE AND END POINTERS.
^CRCB READS CHARACTERS BETWEEN WRITE AND READ POINTERS.
^CWCB WRITES CHARACTERS BETWEEN READ AND BEGINNING POINTERS.
/A VARIABLE DECLARED ^CSTRING MUST CONTAIN THE ^IADDRESS OF A DESCRIPTOR
WHEN IT IS USED IN A STRING OPERATION.
.SP 3
.UNDERLINE
/PAGING /LOGIC
       /A VALID DRUM ADDRESS HAS BIT 3 OFF AND BIT 4 ON; BITS 0-2 ARE
IGNORED AND BITS 5-23 COMPRISE THE ACTUAL VIRTUAL ADDRESS.
^CCEA AND ^CCEI ARE USED TO TRANSLATE SUCH ADDRESSES INTO CORE ADDRESSES;
IF THE DESIRED PAGE IS NOT IN CORE, IT IS READ IN (WHICH USUALLY INVOLVES
WRITING OUT SOME OTHER PAGE).
^CCEAS AND ^CCEIS DO THE SAME, EXECPT THAT THEY ALSO SET A FLAG
ASSOCIATED WITH THE BUFFER TO ENSURE THAT THE PAGE WILL BE REWRITTEN ON
THE DRUM BEFORE A NEW ONE IS BROUGHT INTO THE BUFFER.
.EJ
.UNDERLINE
/CORE /STORAGE /ALLOCATION
       /A BLOCK ALLOCATED BY A (FIXED) ARRAY DECLARATION OR BY A
SINGLE-ARGUMENT CALL OF ^CMAKE CONTAINS ONE MORE WORD THAN WAS REQUESTED
BY THE USER.
/THE EXTRA WORD, WHICH IS THE ONE IMMEDIATELY PRECEDING THE 0TH WORD OF
THE BLOCK, CONTAINS THE ^ITOTAL LENGTH OF THE BLOCK, INCLUDING THE EXTRA
WORD.
/THE TOP TWO BITS ARE USED BY THE STORAGE ALLOCATOR:
       /BIT 0 IS ON IF THE BLOCK IS FREE.
       /BIT 1 IS ON THE THE NEXT LOWER BLOCK IS FREE.
.SP
/BLOCKS ALLOCATED BY A TWO-ARGUMENT CALL OF ^CMAKE DO ^INOT HAVE THIS
EXTRA WORD.
       /AN ARRAY BEING USED FOR STORAGE ALLOCATION (I.E., ONE SET UP BY
^CSETARRAY, OR THE ^CSARRAY ARRAY) HAS THE FOLLOWING FORM:
       ^I/WORD                 ^I/CONTENTS
.RM 5,5
.SP
.FORMAT A
-1\/LENGTH + BLAG BITS.  /SEE ABOVE.
.SP
.FORMAT A
0\/BEAD SIZE, OR 0 FOR AN ARRAY WHICH ALLOCATES VARIABLE SIZED BEADS
(OR BLOCKS).
.SP
.FORMAT A
1\/ADDRESS OF ROUTINE TO CALL WHEN FREE SPACE IS EXHAUSTED.
/THIS WORD MAY BE SET BY THE PROGRAMMER.
/THE SYSTEM DOES A ^CCALL* THROUGH IT.
.SP
.FORMAT A
2\/POINTER TO MASTER FREE LIST (OR JUST TO FREE LIST FOR ARRAYS
ALLOCATING FIXED SIZE BLOCKS).
.SP
.FORMAT A
3\/FREE SPACE TO BE ALLOCATED.
.FILL
.EM 5,5
.SP 2
       /THE FREE LIST FOR A FIXED BLOCK SIZE ARRAY STARTS AT THE SECOND
WORD OF THE ARRAY, IS LINKED THROUGH THE FIRST WORD OF EACH FREE BLOCK,
AND TERMINATES WITH A ZERO.
.EJ
       /THE MASTER FREE LIST FOR A VARIABLE BLOCK SIZE ARRAY USES ONE
BLOCK FOR EACH BLOCK SIZE.
/THREE WORDS OF THIS BLOCK ARE USED:
.RM 5,5
.SP
.FORMAT A
-1\/LENGTH + FLAG BITS.
.SP
.FORMAT A
0\/BACK-POINTER.  /TERMINATES AT 0TH WORD OF ARRAY.
.SP
.FORMAT A
1\/POINTER TO SLAVE-FREE LIST FOR THIS BLOCK SIZE.
.SP
.FORMAT A
2\/POINTER TO NEXT BLOCK ON MASTER FREE LIST.
.FILL
.EM 5,5
.SP 2
       /THE BLOCKS ON A SLAVE-FREE LIST ARE ALL OF THE SAME SIZE.
/TWO WORDS OF EACH ARE USED:
.RM 5,5
.SP
.FORMAT A
-1\/LENGTH + FLAG BITS.
.SP
.FORMAT A
0\/BACK POINTER ON SLAVE-FREE LIST.
.SP
.FORMAT A
2\/FORWARD POINTER ON SLAVE-FREE LIST, OR 0.
.FILL
.EM 5,5
.SP 2
       /THE LAST ENTRY ON THE MASTER FREE LIST MAY BE FOR BLOCK SIZE 2.
/IN THIS CASE THE THIRD WORD IS NOT AVAILABLE, BUT IT IS NOT NEEDED,
SINCE THE MASTER FREE LIST IS SORTED BY DECREASING BLOCK SIZE, AND
THE SMALLEST POSSIBLE BLOCK SIZE IS 2.
.EJ
.UNDERLINE
^CQSPL /RUNTIME ^CPOPS
.SP 3
* ON MNEMONIC MEANS THAT ALL CENTRAL REGISTERS NOT USED TO RETURN RESULTS
ARE DESTROYED.
.SP
+ ON MNEMONIC MEANS THAT ALL CENTRAL REGISTERS ARE CLEARED.
.SP 2
^I/CODE  ^I/MNEMONIC                 ^I/FUNCTION
.SP
.FORMAT B
100\  ^CCALL\/FUNCTION CALL.  /THE DEFINITION IS JUST ^CBRM 0.
/THUS ^UF(A,B)^L COMPILES ^ULDA A; LDB B; CALL* F^L.
.FILL
.SP
.FORMAT B
101\+ ^CNSC\/NUMERIC TO STRING CONVERSION.  (/Q) = ORIGINAL INTEGER.
(/A) = STRING DESCRIPTION ADDRESS, (/B) = RADIX, (/X) = NUMBER OF
CHARACTERS TO WRITE (-1 MEANS FREE FORMAT).
^CCNS(/A,/S) COMPILES ^ULDA S; LDB =10; LDX =-1; NSC A^L.
.FILL
.SP
.FORMAT B
102\+ ^CMSG\/PRINT STRING STARTING AT /A ON TELETYPE WITH ^CBRS 34.
/NOT OUTPUT BY COMPILER.
.FILL
.SP
.FORMAT B
103\+ ^CFIO\/OUTPUT INTEGER TO FILE.  (/A) = FILE NUMBER; (/Q), (/B),
(/X) AS FOR ^CNSC.  ^CIOUT(/A,/F,/R,/C) COMPILES ^ULDA F; LDB R; LDX C;
FIO A^L.
.FILL
.SP
.FORMAT B
104\  ^CRERR\/RUNTIME ERROR.  /Q (^INOT (/Q)) IS THE ERROR NUMBER.
.FILL
.SP
.FORMAT B
105\* ^CRCN\/READ CHARACTER, NO MOTION.  (/Q) = STRING DESCRIPTOR ADDRESS.
/READS THE CHARACTER FOLLOWING THE ONE ADDRESSED BY THE DESCRIPTOR TO /A.
/THE DESCRIPTOR IS NOT CHANGED.  /G/C(/S) COMPILES ^CRCN /S.
.FILL
.SP
.FORMAT B
106\* ^CRCS\/READ CHARACTER FROM STRING.  (/Q) = STRING DESCRIPTOR
ADDRESS.
/READS THE CHARACTER FOLLOWING THE ONE ADDRESSED BY THE DESCRIPTOR INTO
/A, INCREMENTS THE DESCRIPTOR TO POINT TO THE CHARACTER.
/SKIPS IF STRING IS NOT EMPTY.
^CGCI(/S:/F) COMPILES ^URCS S; BRU* F^L.
.FILL
.SP
.FORMAT B
107\* ^CWCS\/WRITE CHARACTER (Q) ON STRING (A).  /SEE ^CRCS, BUT WRITES
CHARACTER FROM /Q.
/SKIPS IF SPACE LEFT IN STRING.
^CWCI(/C,/S:/F) COMPILES ^ULDA S; WCS C; BRU* F^L.
.FILL
.SP
.FORMAT B
110\* ^CRCB\/READ CHARACTER BACKWARDS.  /SEE ^CRCS, BUT READS THE
CHARACTER WHICH WOULD HAVE BEEN WRITTEN BY THE LAST ^CWCS.  
^CGCD(/S:/F) COMPILES ^URCB S; BRU* F^L.
.FILL
.SP
.FORMAT B
111\* ^CWCB\/WRITE CHARACTER BACKWARDS.  /SEE ^CRCS BUT WRITES (/Q)
INTO THE STRING SO THAT IT WILL BE READ BY A FOLLOWING ^CRCS.
^CWCD(/C,/S:/F) COMPILES ^ULDA S; WCB,C/ BRU* F^L.
.FILL
.SP
.FORMAT B
112\+ ^CRSD\/RESET STRING DESCRIPTOR.  (/Q) = STRING DESCRIPTOR
ADDRESS, (/A) = CHARACTER NUMBER TO SET READ POINTER TO, (/B) = CHARACTER
NUMBER TO SET WRITE POINTER TO.
^CSETS(/S,/R,/W) COMPILES ^ULDA R; LDB W; RSD S^L.
.FILL
.SP
.FORMAT B
113\* ^CLNG\/LENGTH OF STRING.  (/Q) = STRING DESCRIPTOR ADDRESS.
/NUMBER OF CHARACTERS BETWEEN BASE AND WRITE POINTERS (I.E. NUMBER
OF CHARACTERS OF USEFUL INFORMATION) RETURNED IN /A.
/T^CLENGTH(/S) COMPILES ^ULNG S; STA T^L.
.FILL
.SP
.FORMAT B
114\+ ^CRSR\/RESET STRING READ POINTER.  /SAME AS ^CRSD FOR READ POINTER
ONLY.  ^CSETR(/S,/R) COMPILES ^ULDA R; RSR S^L.
.FILL
.SP
.FORMAT B
115\+ ^CRSW\/RESET STRING WRITE POINTER.  /SAME AS ^CRSR FOR WRITE
POINTER.  ^CSETW(/S,/W) COMPILES ^ULDA W; RSW S^L.
.FILL
.SP
.FORMAT B
116\+ ^CESC\/ESTABLISH STRING CONSTANT.  (/Q) AS FOR ^CISD.
/THE WORD AFTER THE ^CESC CONTAINS A CHARACTER COUNT; THE FOLLOWING WORDS
THE CHARACTERS PACKED THREE PER WORD.
/THE STRING DESCRIPTOR IS SET TO POINT TO THIS STRING, AND CONTROL RETURNS
TO THE WORD FOLLOWING THE LAST WORD OF THE STRING.
/S"/A/B/C/D" COMPILES ^UESC S; DATA 4; ASC 2,ABCD^L.
.FILL
.SP
.FORMAT B
117\  ^CCEA\/COMPUTE EFFECTIVE ADDRESS FOR PAGED OBJECT.  (/Q) =
DRUM ADDRESS.  /CORE ADDRESS OF OBJECT RETURNED IN /X.  /A PRESERVED,
/B DESTROYED.
/THE VALIDITY OF THE CORE ADDRESS IS GUARANTEED ONLY UNTIL THE NEXT 
PAGED STORAGE ^CPOP.  /USE ^CCEAS IF OBJECT IS TO BE MODIFIED.
/A/P./X COMPILES ^UCEA P; LDA X.2; STA A^L.
.FILL
.SP
.FORMAT B
120\  ^CCEI\/COMPUTE EFFECTIVE ADDRESS, INDEXED.  /SAME AS ^CCEA
EXCEPT THAT (/A) IS ADDED TO (/Q) TO GET DRUM ADDRESS.
/USE ^CCETS IF OBJECT IS TO BE MODIFIED.
/A/P[/I] COMPILES ^ULDX I; CEI P; LDA 0,2; STA A^L.
.FILL
.SP
.FORMAT B
121\  ^CCEAS\/COMPUTE EFFECTIVE ADDRESS FOR ABOVE.  /SAME AS ^CCEA, BUT
FOR STORING INTO OBJECT.  /P./X/A COMPILES ^ULDA A; CEAS P; STA X.2^L.
.FILL
.SP
.FORMAT B
122\  ^CCEIS\/COMPUTE EFFECTIVE ADDRESS, INDEXED INTO ARRAY.
/P[/I]/A COMPILES ^ULDA A; LDX J; CEIS P; STA 0,2^L.
.FILL
.SP
.FORMAT B
123\  ^CRCAL\/RECURSIVE CALL ENTRY.  /Q (^INOT (/Q)) GIVES NUMBER OF
CELLS TO ALLOCATE ON STACK FOR ARGUMENTS AND ^CSAVE^ED VARIABLES.
^URECURSIVE FUNCTION F(X,Y); SAVE Z^L COMPILES ^USTA RECRG1; LDA 0;
RCAL 3; LDA X; STA 2,2; LDA Y; STA 3,2; LDA Z; STA 4,2; LDA RECRG1;
STA X; STB Y^L.
.FILL
.SP
.FORMAT B
124\  ^CRRET\/RECURSIVE FUNCTION EXIT.  /REMOVES BLOCK FROM STACK AND
RETURNS.
.FILL
.SP
.FORMAT B
125\  ^CDBLX\/DOUBLE /X REGISTER.  /USED FOR FLOATING POINT ARRAYS.
/IF /A IS A ^CREAL ^CARRAY, THEN /B/A[/I] COMPILES ^ULDX I; DBLX;
LDP* /A; STP B^L.
.FILL
.SP
.FORMAT B
126\  ^CROUT\/REAL OUTPUT.  (/Q),(/Q+1) IS THE NUMBER.  (/A) = FILE,
(/B) = FORMAT.  ^CROUT(/R,/N,/Q) COMPILES ^ULDA N; LDB Q; ROUT R^L.
.FILL
.SP
.FORMAT B
127\  ^CCRS\/CONVERT REAL TO STRING.  (/Q),(/Q+1) IS THE NUMBER.
(/A) = STRING DESCRIPTOR ADDRESS, (/B) = FORMAT.
^CCRS(/R,/S,/Q) COMPILES ^ULDA S; LDB Q; CRS R^L.
.FILL
.EJ
.CE
^CAPPENDIX /B
.SP 3
.UNDERLINE
/RESERVED /WORDS
.SP 2
.LINE LAYOUT 15,75,3,1
^UAND

APPEND

ARRAY

BCOPY

BGET

BINARY

BPUT

BRS

BY

CIN

CLOSE

CLOSALL

CNS

CODE

COUT

CRLF

CRS

CSN

CSR

DECLARE

DO

ELSE

ELSEIF

END

ENDFOR

ENDIF

ENTRY

EOR

EXIT

EXTERNAL

FIELD

FIX

FIXED

FLOAT

FMASK

FOR

FREE

FROM

FSHIFT

FUNCTION

GC

GCD

GCI

GOTO

HALT

IDENT

IF

IIN

INCLUDE

INFILE

INITIALIZE

INNAME

INTEGER

IOUT

LCY

LENGTH

LINK

LIST

LOCAL

LOCK

LSH

MACRO

MAKE

MOD

NOLIST

NOT

OR

OUTFILE

OUTNAME

PAGED

PARAMETER

PFLUSH

PMAKE

POP

RCY

REAL

RECURSIVE

RETURN

RIN

ROUT

RSH

SAVE

SBRM

SCALAR

SCOPY

SETARRAY

SETR

SETS

SETUP

SETW

SOURCE

SOUT

SRETURN

STRING

TO

UNLOCK

WCD

WCI

WHERE

WHILE

WIN

WOUT^L
.LINE LAYOUT 15,75,1,0
.EJ
.CE
^CAPPENDIX /C
.SP 3
.UNDERLINE
/STANDARD /EXTERNAL /SYMBOLS
.SP 2
.FORMAT C
^CBSTORG\/FIRST WORD OF STORAGE AVAILABLE TO ^CINIT.
.FILL
.SP
.FORMAT C
^CEARRAY\/LAST WORD NOT USED FOR PAGE BUFFERS OR TABLES AFTER ^CINIT.
.FILL
.SP
.FORMAT C
^CERROR\/ERROR CODES LEFT HERE BY ^CINFILE AND ^COUTFILE.
.FILL
.SP
.FORMAT C
^CESTORG\/LAST WORD OF STORAGE AVAILABLE TO ^CINIT.
.FILL
.SP
.FORMAT C
^CFTYPE\/FILE TYPE LEFT HERE BY ^CINFILE AND ^COUTFILE.
.FILL
.SP
.FORMAT C
^CNPB\/NUMBER OF CORE BUFFERS FOR PAGING.  0 = ALL AVAILABLE SPACE.
.FILL
.SP
.FORMAT C
^CNPC\/DESIRED SIZE OF DRUM ADDRESS SPACE (2^^^CNPL).
^CNPG<=2^^(19-^CNPL).  0 = PAGING WILL NOT BE USED.
.FILL
.SP
.FORMAT C
^CNUP\/NUMBER OF UNLOCKED PAGES.
.FILL
.SP
.FORMAT C
^CPADDR\/DRUM ADDRESS OF UNLOCKED PAGE.
.FILL
.SP
.FORMAT C
^CPCAT\/CATEGORY TO BE USED BY ^CPMAKE.  0 = DON'T CARE.
.FILL
.SP
.FORMAT C
^CPM\>=0:  USE ^CNRH FOR PAGING LOGIC.  4/B7: USE FILE ^/$^CQPDATA.
4/B7+/F:  USE FILE NO. /F.  /ANY OF THE ABOVE + 2/B7:  RECOVER OLD STATE
FROM FILE.
.FILL
.SP
.FORMAT C
^CSARRAY\/ADDRESS OF SECOND WORD NOT USED FOR PAGE BUFFERS OR TABLES
AFTER ^CINIT.
.FILL
.EJ
.CE
^CAPPENDIX /D
.SP 3
.UNDERLINE
^CBNF /SYNTAX OF ^CQSPL
.SP
.FORMAT D
<EXPR>\<XWHR> $('& <XWHR>);
.FILL
.SP
.FORMAT D
<XWHR><XFORX> [^CWHERE <XFORX>];
.FILL
.SP
.FORMAT D
<XFORX>\<XCOND> $(^CFOR <XFORC> ^/ ^CWHILE <XWHILE>);
.FILL
.SP
.FORMAT D
<XFORC>\<IDENTIFIER> ('= ^/ ') <XCOND> ([ ', <XCOND>] ^CWHILE <XCOND>
^/ [^CBY <XCOND>] ^CTO <XCOND>);
.FILL
.SP
.FORMAT D
<XWHILE>\<XCOND>;
.FILL
.SP
.FORMAT D
<XOR>\<XAND> $(^COR <XAND>);
.FILL
.SP
.FORMAT D
<XAND>\<XNOT> $((^CAND ^/ ^CEOR) <XNOT>);
.FILL
.SP
.FORMAT D
<XNOT>\[^CNOT] <XREL>;
.FILL
.SP
.FORMAT D
<XREL>\<XMOD> [('= ^/ '# ^/ '> ^/ '>= ^/ '< ^/ '<=) <XMOD>];
.FILL
.SP
.FORMAT D
<XMOD>\<XADD> $(^CMOD <XADD>);
.FILL
.SP
.FORMAT D
<XADD>\<XMUL> $((' ^/ '-) <XMUL>);
.FILL
.SP
.FORMAT D
<XMUL>\<XSIGN> $(('* ^/ '^/ ^/ ^CLSH ^/ ^CRSH ^/ ^CLCY ^/ ^CRCY)
<XSIGN>);
.FILL
.SP
.FORMAT D
<XSIGN>\['+ ^/ '- ^/ ^CGOTO] <XTAIL> ^/ (^CRETURN ^/ ^CSRETURN)
<XSGN17>;
.FILL
.SP
.FORMAT D
<XSGN17>\[<XOR> ', <XOR> '. <XOR> ^/ <XOR> '. <XOR> ^/ <XOR>]
[^CFROM <XTAIL>];
.FILL
.SP
.FORMAT D
<XFC>\<XTAIL> ['( <XFCN> ')];
.FILL
.SP
.FORMAT D
<XFCN>\[<EXPR> $(', <EXPR>)] [': [<FAILURE>] [': [<IDENTIFIER>]
$('. [<IDENTIFIER>])];
.FILL
.SP
.FORMAT D
<FAILURE>\<IDENTIFIER> ^/ (^CRETURN ^/ ^CSRETURN) [<XOR>];
.FILL
.SP
.FORMAT D
<XTAIL>\<XREF> $(('. ^/ '$) <GFIELD>) [<XSUBS>] [' <XOR>];
.FILL
.SP
.FORMAT D
<XREF>\$('$) ['@] <XPRIM> <XSUBS>;
.FILL
.SP
>RSD FOR READ POINTER
ONLY.  ^CSETR(/S,/R) COMPILES ^ULDA R; RSR S^L.
.FILL
.SP
.FORMAT B
115\+ ^CRSW\/RESET STRING WRITE POINTER.  /SAME AS ^CRSR FOR WRITE
POINTER.  ^CSETW(/S,/W) COMPILES ^ULDA W; RSW S^L.
.FILL
.SP
.FORMAT B
116\+ ^CESC\/ESTABLISH STRING CONSTANT.  (/Q) AS FOR ^CISD.
/THE WORD AFTER THE ^CESC CONTAINS A CHARACTER COUNT; THE FOLLOWING WORDS
THE CHARACTERS PACKED THREE PER WORD.
/THE STRING DESCRIPTOR IS SET TO POINT TO THIS STRING, AND CONTROL RETURNS
TO THE WORD FOLLOWING THE LAST WORD OF THE STRING.
/S"/A/B/C/D" COMPILES ^UESC S; DATA 4; ASC 2,ABCD^L.
.FILL
.SP
.FORMAT B
117\  ^CCEA\/COMPUTE EFFECTIVE ADDRESS FOR PAGED OBJECT.  (/Q) =
DRUM ADDRESS.  /CORE ADDRESS OF OBJECT RETURNED IN /X.  /A PRESERVED,
/B DESTROYED.
/THE VALIDITY OF THE CORE ADDRESS IS GUARANTEED ONLY UNTIL THE NEXT 
PAGED STORAGE ^CPOP.  /USE ^CCEAS IF OBJECT IS TO BE MODIFIED.
/A/P./X COMPILES ^UCEA P; LDA X.2; STA A^L.
.FILL
.SP
.FORMAT B
120\  ^CCEI\/COMPUTE EFFECTIVE ADDRESS, INDEXED.  /SAME AS ^CCEA
EXCEPT THAT (/A) IS ADDED TO (/Q) TO GET DRUM ADDRESS.
/USE ^CCETS IF OBJECT IS TO BE MODIFIED.
/A/P[/I] COMPILES ^ULDX I; CEI P; LDA 0,2; STA A^L.
.FILL
.SP
.FORMAT B
121\  ^CCEAS\/COMPUTE EFFECTIVE ADDRESS FOR ABOVE.  /SAME AS ^CCEA, BUT
FOR STORING INTO OBJECT.  /P./X/A COMPILES ^ULDA A; CEAS P; STA X.2^L.
.FILL
.SP
.FORMAT B
122\  ^CCEIS\/COMPUTE EFFECTIVE ADDRESS, INDEXED INTO ARRAY.
/P[/I]/A COMPILES ^ULDA A; LDX J; CEIS P; STA 0,2^L.
.FILL
.SP
.FORMAT B
123\  ^CRCAL\/RECURSIVE CALL ENTRY.  /Q (^INOT (/Q)) GIVES NUMBER OF
CELLS TO ALLOCATE ON STACK FOR ARGUMENTS AND ^CSAVE^ED VARIABLES.
^URECURSIVE FUNCTION F(X,Y); SAVE Z^L COMPILES ^USTA RECRG1; LDA 0;
RCAL 3; LDA X; STA 2,2; LDA Y; STA 3,2; LDA Z; STA 4,2; LDA RECRG1;
STA X; STB Y^L.
.FILL
.SP
.FORMAT B
124\  ^CRRET\/RECURSIVE FUNCTION EXIT.  /REMOVES BLOCK FROM STACK AND
RETURNS.
.FILL
.SP
.FORMAT B
125\  ^CDBLX\/DOUBLE /X REGISTER.  /USED FOR FLOATING POINT ARRAYS.
/IF /A IS A ^CREAL ^CARRAY, THEN /B/A[/I] COMPILES ^ULDX I; DBLX;
LDP* /A; STP B^L.
.FILL
.SP
.FORMAT B
126\  ^CROUT\/REAL OUTPUT.  (/Q),(/Q+1) IS THE NUMBER.  (/A) = FILE,
(/B) = FORMAT.  ^CROUT(/R,/N,/Q) COMPILES ^ULDA N; LDB Q; ROUT R^L.
.FILL
.SP
.FORMAT B
127\  ^CCRS\/CONVERT REAL TO STRING.  (/Q),(/Q+1) IS THE NUMBER.
(/A) = STRING DESCRIPTOR ADDRESS, (/B) = FORMAT.
^CCRS(/R,/S,/Q) COMPILES ^ULDA S; LDB Q; CRS R^L.
.FILL
.EJ
.CE
^CAPPENDIX /B
.SP 3
.UNDERLINE
/RESERVED /WORDS
.SP 2
.LINE LAYOUT 15,75,3,1
^UAND

APPEND

ARRAY

BCOPY

BGET

BINARY

BPUT

BRS

BY

CIN

CLOSE

CLOSALL

CNS

CODE

COUT

CRLF

CRS

CSN

CSR

DECLARE

DO

ELSE

ELSEIF

END

ENDFOR

ENDIF

ENTRY

EOR

EXIT

EXTERNAL

FIELD

FIX

FIXED

FLOAT

FMASK

FOR

FREE

FROM

FSHIFT

FUNCTION

GC

GCD

GCI

GOTO

HALT

IDENT

IF

IIN

INCLUDE

INFILE

INITIALIZE

INNAME

INTEGER

IOUT

LCY

LENGTH

LINK

LIST

LOCAL

LOCK

LSH

MACRO

MAKE

MOD

NOLIST

NOT

OR

OUTFILE

OUTNAME

PAGED

PARAMETER

PFLUSH

PMAKE

POP

RCY

REAL

RECURSIVE

RETURN

RIN

ROUT

RSH

SAVE

SBRM

SCALAR

SCOPY

SETARRAY

SETR

SETS

SETUP

SETW

SOURCE

SOUT

SRETURN

STRING

TO

UNLOCK

WCD

WCI

WHERE

WHILE

WIN

WOUT^L
.LINE LAYOUT 15,75,1,0
.EJ
.CE
^CAPPENDIX /C
.SP 3
.UNDERLINE
/STANDARD /EXTERNAL /SYMBOLS
.SP 2
.FORMAT C
^CBSTORG\/FIRST WORD OF STORAGE AVAILABLE TO ^CINIT.
.FILL
.SP
.FORMAT C
^CEARRAY\/LAST WORD NOT USED FOR PAGE BUFFERS OR TABLES AFTER ^CINIT.
.FILL
.SP
.FORMAT C
^CERROR\/ERROR CODES LEFT HERE BY ^CINFILE AND ^COUTFILE.
.FILL
.SP
.FORMAT C
^CESTORG\/LAST WORD OF STORAGE AVAILABLE TO ^CINIT.
.FILL
.SP
.FORMAT C
^CFTYPE\/FILE TYPE LEFT HERE BY ^CINFILE AND ^COUTFILE.
.FILL
.SP
.FORMAT C
^CNPB\/NUMBER OF CORE BUFFERS FOR PAGING.  0 = ALL AVAILABLE SPACE.
.FILL
.SP
.FORMAT C
^CNPC\/DESIRED SIZE OF DRUM ADDRESS SPACE (2^^^CNPL).
^CNPG<=2^^(19-^CNPL).  0 = PAGING WILL NOT BE USED.
.FILL
.SP
.FORMAT C
^CNUP\/NUMBER OF UNLOCKED PAGES.
.FILL
.SP
.FORMAT C
^CPADDR\/DRUM ADDRESS OF UNLOCKED PAGE.
.FILL
.SP
.FORMAT C
^CPCAT\/CATEGORY TO BE USED BY ^CPMAKE.  0 = DON'T CARE.
.FILL
.SP
.FORMAT C
^CPM\>=0:  USE ^CNRH FOR PAGING LOGIC.  4/B7: USE FILE ^/$^CQPDATA.
4/B7+/F:  USE FILE NO. /F.  /ANY OF THE ABOVE + 2/B7:  RECOVER OLD STATE
FROM FILE.
.FILL
.SP
.FORMAT C
^CSARRAY\/ADDRESS OF SECOND WORD NOT USED FOR PAGE BUFFERS OR TABLES
AFTER ^CINIT.
.FILL
.EJ
.CE
^CAPPENDIX /D
.SP 3
.UNDERLINE
^CBNF /SYNTAX OF ^CQSPL
.SP
.FORMAT D
<EXPR>\<XWHR> $('& <XWHR>);
.FILL
.SP
.FORMAT D
<XWHR><XFORX> [^CWHERE <XFORX>];
.FILL
.SP
.FORMAT D
<XFORX>\<XCOND> $(^CFOR <XFORC> ^/ ^CWHILE <XWHILE>);
.FILL
.SP
.FORMAT D
<XFORC>\<IDENTIFIER> ('= ^/ ') <XCOND> ([ ', <XCOND>] ^CWHILE <XCOND>
^/ [^CBY <XCOND>] ^CTO <XCOND>);
.FILL
.SP
.FORMAT D
<XWHILE>\<XCOND>;
.FILL
.SP
.FORMAT D
<XOR>\<XAND> $(^COR <XAND>);
.FILL
.SP
.FORMAT D
<XAND>\<XNOT> $((^CAND ^/ ^CEOR) <XNOT>);MSG    MACRO D,G,2; LDA =G(1); LDB =-1; LDX =1; BRS 34; BRU G(2)
G(1)   ASC "D(1)"
G(2)   EQU *; FRGT G(1),G(2); ENDM

R1     MSG ($SAVE AREA SY/); LDB =10; LDX =0; BRS 38; STA AREA
       CBA; SKE ='.'; BRU R1
       LDX AREA; LDA BASE,2; LRSH 14; STA TRACK
       CLA; LSH 7; STA BAND; STA MINB; ADD =4; STA MAXB
       CLA; LSH 5; STA SECT
       CLA; LSH 2; STA UNIT
       MSG ($TO FILE /); CLEAR; BRS 16; BRU R1; STA FILE
R2     TCO =155B; TCO =152B; LDA =24; BRM XFER; BRM INC
       LDA =8; BRM XFER; BRS 17; BRS 10

XFER   ZRO; STA ENDCNT; LDA =1; STA COUNT
X1     BRM READ; LDA NODE+21B; SKA =3777B; ZRO *
       LDA =4000B; LDX =RBUF; BIO FILE; ZRO *
       BRM INC; LDA COUNT; SKG ENDCNT; BRU X1; BRR XFER

INC    ZRO; MIN COUNT; MIN SECT; LDA SECT; SKG MAXS; BRR INC
       LDA MINS; STA SECT; MIN BAND; LDA BAND; SKG MAXB; BRR INC
       LDA MINB; STA BAND; MIN TRACK; BRR INC

READ   ZRO; CLA; STA NODE; STA NODE+1
       LDA TSU; CLB; LSH 8; MRG TRACK; LSH 6; MRG BAND; LSH 4
       MRG SECT; LSH 2; MRG UNIT; STA NODE+2
       CLA; STA NODE+3
       LDA WDCT; CLB; LSH 18; MRG =205B; STA NODE+4
       LDA INST; CLB; LSH 18; MRG =777777B; STA NODE+5
       LDA =NODE; LDB =18; LDX CMA; BRS 137; BRR READ

AREA   BSS 1
BAND   BSS 1
COUNT  BSS 1
ENDCNT BSS 1
FILE   BSS 1
NODE   BSS 20
SECT   BSS 1
TRACK  BSS 1

BASE   DATA 40040000B          SY0
       DATA 42340000B          SY1
       DATA 44640000B          SY2
       DATA 47140000B          SY3
       DATA 51440000B          SY4
       DATA 53740000B          SY5
       DATA 40041400B          SY6
       DATA 42341400B          SY7
       DATA 44641400B          SY8
       DATA 47141400B          SY9
       DATA 51441400B          SY10
       DATA 53741400B          SY11
CMA    DATA RBUF
INST   DATA 0
MAXB   DATA 4
MINB   DATA 0
MAXS   DATA 4
MINS   DATA 0
TSU    DATA 2
UNIT   DATA 0
WDCT   DATA 11

RBUF   EQU     34000B
START  EQU     R1

       END
>                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          58
12
71 182 250 400 1000 286 400 700 700 700 1400 2100
630000
ASUKA, LESLIE S.:576-64-6164:70 31 16 0 5 0 0 95 83 86 65 77
BARTLETT, ELLEN A.:009-42-3692:70 40 0 25 8 23 25 26 49 61 26 62
CHIU, DENNIS D.:575-76-6909:83 52 28 20 7 32 20 70 90 92 51 82
CHUNG, KIRBY:576-60-2764:100 41 17 23 8 31 20 57 61 85 60 79
DARRELL, GEORGE S.:032-26-5125:98 55 29 14 7 22 25 20 91 74 53 69
DAVIS, JOHN A.:551-27-1516:48 0 22 21 8 35 25 30 78 52 40 57
DEUTSCH, JONATHAN D.:575-76-6577:77 42 14 0 10 10 25 23 67 70 33 68
FERNANDEZ, NOEL G.:586-62-7157:68 36 20 22 9 35 19 45 93 85 44 81
FONG, RANDALL L.:576-70-4368:110 43 31 19 8 35 19 70 82 84 42 78
FOX, BRUCE:575-70-8015:86 43 24 25 8 24 23 63 73 67 79 69
FUKUDA, DEREK Y.:575-84-4276:88 37 25 21 10 0 25 78 68 68 43 72
HALLSTROM, GREGORY A.:535-48-3959:96 38 14 22 10 35 25 43 79 91 74 74
HARUNO, CLYDE Y.:575-94-8208:118 36 0 14 5 35 24 80 66 83 59 79
HASENYAGER, JAMES D.:576-64-1493:78 35 18 0 8 30 17 30 93 59 64 70
HESTON, DAVID D.:521-82-0145:95 44 21 19 9 31 24 65 86 81 81 78
HIGA, TIMOTHY S.:576-90-3062:110 55 28 23 0 33 19 90 91 79 70 81
HIRANO, WESLEY M.:576-48-5955:138 48 36 25 10 33 23 86 100 88 76 87
HIROSE, CHRIS M.:576-90-6202:60 18 0 0 0 0 0 46 53 27 48 0
HO, KWAN-YING:576-78-0404:87 31 0 12 0 35 21 65 46 63 68 66
ILLINGWORTH, THOMAS:000-00-0000:58 0 0 0 0 0 0 20 44 59 63 65
IMPERIAL, JOHN V.:575-64-2108:48 28 0 12 6 0 0 17 64 50 58 60
INAO, NEWTON M.:576-54-9499:76 19 0 23 9 30 20 40 73 77 51 74
INOUYE, MICHAEL S.:576-70-3810:94 41 0 0 8 33 23 43 76 80 62 72
ISHIHARA, WESLEY T.:576-84-4390:0 35 0 0 4 0 19 95 77 72 59 76
KAHOOKELE, KEVIN:576-58-1936:0 0 0 0 0 0 0 33 90 59 0 8
KAWANO, GLADYS S.:576-86-6849:0 0 0 16 0 0 0 43 52 63 53 53
KWOK, CHI-KONG SIMON:999-20-3233:128 36 27 22 9 3 20 83 84 75 78 74
LEGASPI, CONRADO S.:000-00-0000:50 0 15 0 4 13 0 16 69 54 49 64
LIU, DERRICK K. T.:576-70-9726:117 38 15 21 6 28 17 55 77 81 74 71
MA, LILY Y. C.:576-76-5576:88 37 21 23 9 22 22 39 63 70 50 67
MENDOZA, EDGAR E.:586-09-3304:81 31 19 18 8 35 18 26 72 67 50 78
MIYAHARA, CALVIN T.:575-92-5835:68 17 20 21 9 18 24 16 41 80 52 63
MIYAMOTO, GORDON K.:576-54-9770:84 0 0 19 0 0 0 55 61 73 66 75
NAKAGAWA, ERIC S.:575-84-8825:70 34 0 18 0 35 0 16 49 77 30 54
NAKAMOTO, NOBU M.:575-72-7790:140 47 24 23 0 30 24 83 95 78 74 88
NAKATA, ROBERT H.:576-76-6838:138 33 24 21 8 35 0 53 0 0 0 77
OHYE, RICHARD Y.:576-56-2019:107 38 28 19 8 26 25 73 81 81 58 77
ORNELLAS, LAWRENCE G.:575-84-8995:130 40 32 22 8 33 25 90 85 84 76 90
PRIETO, ALBINO C.:575-64-9478:87 42 16 20 6 33 19 48 78 73 63 64
SASAKI, GALEN H.:575-60-8755:140 53 37 25 10 33 21 81 90 92 84 84
SHIMABUKURO, RANDY L.:575-84-4113:118 25 27 23 8 32 23 68 83 83 76 77
SHIMODA, RANDALL T.:576-76-7658:46 10 0 0 0 12 15 16 61 53 40 50
SHIRAISHI, ALLAN H.:546-25-9596:30 0 0 0 0 0 0 16 52 52 32 24
SORAYAMA, CLAYTON TO.:575-50-8788:108 25 0 0 9 30 20 33 82 79 54 74
TAKATANI, RICHARD I.:576-48-8997:85 43 24 23 10 29 24 56 93 72 73 100
TAKAYANAGI, KARL A.:575-94-9895:107 41 11 20 0 0 0 15 71 75 52 73
TERAOKA, BRIAN T.:576-76-6835:120 52 25 25 8 33 25 75 80 66 67 82
TSUTSUI, RUSSELL I.:576-70-9524:110 0 0 0 0 0 0 16 23 0 0 0
UMNUSS, PILAR J.:264-53-1652:88 45 22 13 8 31 25 40 61 81 75 65
WONG, STEVEN K. H.:576-76-6720:138 55 33 25 10 33 24 100 86 77 94 85
WONG, YIU-TIM:576-86-5754:140 25 0 0 0 0 0 70 80 89 75 87
YAMAGUCHI, DEXTER M.:559-23-0660:130 45 36 22 8 33 0 80 79 91 85 82
YAMAGUCHI, KEITH K.:575-86-3221:95 40 0 23 5 29 25 33 90 69 74 81
YAMAOKA, ALAN H.:576-90-4373:136 19 0 20 9 0 0 30 22 68 48 69
YOUNG, ELAINE E.:575-78-0203:110 35 24 20 8 33 25 50 97 93 68 81
YOUNG, LORI ANN Y. L.:575-50-9877:75 26 10 20 10 31 14 28 69 69 66 70
YOUNG, RONALD G.:576-50-4722:0 21 0 15 0 0 0 16 72 86 75 56
YUEN, SHERILL:576-92-9781:134 41 16 21 9 30 25 53 90 85 86 82
>                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  56
10
77 100 143 100 167 167 167 525 525 1050
278040
AKEE, HOWARD H., II:576-70-2808:129 98 70 98 60 60 60 88 78 92
ASHMAN, KATSUMI:567-33-1044:106 85 64 78 53 50 53 67 82 60
BAJET, EDWIN, JR.:575-92-5879:118 83 52 78 60 60 60 57 65 0
CADAVONA, EUGENE R.:576-66-2686:130 100 70 99 60 60 59 91 85 78
CAMPBELL, EDWARD F., JR.:228-94-8293:130 98 70 85 60 60 60 67 93 82
CHAN, WINGYUEN:999-20-6119:0 97 68 70 60 59 60 77 72 78
CHEW, GEORGE H.:466-19-6538:129 100 69 100 58 60 60 61 60 76
CHIANG, SZEPUI C.:999-20-5097:116 90 58 84 35 60 59 75 75 72
CHINA, WANDA:575-74-3734:99 0 70 0 56 0 60 73 50 65
CHING, RANDY W. G.:575-84-3049:114 87 68 90 54 45 0 93 90 88
CHOW, DEBRA P. L.:576-70-5460:128 30 70 100 60 45 60 83 79 84
COBB-ADAMS, SMITH:576-70-8241:128 90 70 100 51 60 59 76 95 74
DANG, DAVID M. C. P.:576-90-3207:104 83 70 95 58 60 60 71 85 84
DHANYANGKUN, WIMOLWAN:576-97-7740:129 98 69 100 51 0 59 73 73 66
FOURQUREAN, JAMES E.:315-48-0761:128 88 69 74 56 15 58 66 81 84
GEITER, JISOO A.:576-78-7348:130 100 69 100 60 60 60 82 90 75
GRAY, PHILLIP S.:544-74-6624:91 70 49 70 42 42 42 87 80 81
HAMMOND, DIXIE A.:495-44-3607:129 93 68 100 55 60 60 56 80 84
HAYASHI, JILL K.:575-56-1466:117 81 70 88 55 60 60 64 55 86
HILL, CHARLES C.:576-68-0296:110 94 70 99 60 55 60 70 95 87
IKEDA, SHARON M.:461-88-0384:130 99 66 100 53 44 60 55 100 68
IP, KAMSING F.:576-02-6046:128 99 67 100 59 59 60 69 77 78
KATEKARU, LISA A.:576-90-9717:73 97 70 100 60 59 60 84 95 92
KONG, RANDAL:575-74-7313:126 0 0 0 20 0 0 45 63 49
KURASHIMA, PEARL R.:575-78-2323:105 60 36 0 0 0 0 62 58 66
KWAN, SHIUWAH P.:999-20-6216:129 91 65 82 60 54 60 80 70 88
LEE, YUEN S.:575-90-6919:0 0 0 0 0 0 0 84 90 76
LEONG, SAMSON:575-86-1145:79 97 70 0 51 0 58 84 85 80
LEUNG,MUN YE:999-20-6081:73 89 70 100 60 54 60 77 97 84
MANYANONOH, PATIPAN:575-92-6689:125 88 70 95 60 60 60 56 77 52
MICHAUD, WALTER J.:036-36-1229:119 0 0 0 0 0 0 63 72 55
MIYANO, SCOTT M.:575-76-9506:130 82 63 95 60 58 60 92 55 44
MURAKAMI, MYLES Y.:575-74-8456:127 95 70 85 58 60 60 81 95 80
NAKAMURA, CURTIS M.:575-74-2018:128 93 70 100 58 58 60 54 47 64
NISHIMURA, JEFFREY H.:576-44-9838:118 100 70 100 50 60 60 75 87 90
OIE, LAUREN L.:576-70-1308:118 81 66 0 55 60 40 69 59 46
OKIMOTO, ALAN S.:575-64-1369:109 75 46 85 49 60 60 82 69 80
OSHIRO, COLIN T.:576-88-7586:129 70 69 95 53 30 58 78 95 80
OSHIRO, SELA A.:576-88-3712:129 90 0 0 53 0 0 41 0 0
PANELA, ALFRED M.:575-84-0985:116 97 70 95 60 55 60 74 80 88
SALAT, JAMES. S:484-58-3086:120 0 0 0 54 60 60 61 95 84
SATO, STANLEY T.:575-78-0998:117 77 60 97 60 60 60 67 80 80
SHIBANO, KRIS Y.:576-76-8255:104 91 63 84 58 59 58 72 74 58
SHIIGI, CLYDE:575-68-6108:117 0 54 79 55 58 55 57 75 75
SNEATH, JAMES K.:372-48-4957:130 100 69 95 60 55 60 59 87 82
SUEHIRO, JILL M.:575-92-4611:129 67 66 100 60 60 60 64 70 74
TAI, KONGMEI M.:575-96-0835:108 97 63 85 45 60 60 87 69 84
TAKASUGI, LLOYD S.:552-72-9446:124 84 67 96 57 50 60 82 95 71
TAKETA, EDWARD A.:576-90-0832:130 100 70 100 60 59 60 69 100 81
TANAKA, LESLEY C.:576-62-4225:117 92 63 84 55 60 60 78 95 84
TAO, JAMES Y.:999-20-5588:130 100 70 99 60 55 59 78 77 76
UEHARA, KEITH K.:575-74-0031:124 88 70 69 60 30 60 83 88 78
VILLAVERDE, RUDOLPH E.:586-66-0115:130 100 69 100 60 60 60 76 92 87
WONG, SHINGKEUNG J.:576-98-6235:127 97 70 85 60 60 59 75 98 74
YAMANAKA, STEVEN M.:575-92-4350:130 100 70 100 60 59 60 97 100 94
ZIGNEIGO, ANTHONY P.:475-28-8950:123 0 69 100 43 0 60 61 78 70
>                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                              KTEST  IDENT


*  PROGRAM TO RUN OVER DISK FILE, PRINTING OUT VARIOUS ERRORS AS THEY
*     ARE ENCOUNTERED.  PROGRAM STARTS BY BRANCHING TO KTEST.


*  THE PROGRAM HAS TWO MODES OF OPERATION: SEQUENTIAL MODE AND 
*     RANDOM MODE.  IN THE LATTER MODE, SECTORS ARE CHOSEN ON THE
*     FILE AT RANDOM.  IN SEQUENTIAL MODE, SECTORS ARE CHOSEN IN
*     SEQUENTIAL ORDER, SECTOR, UNIT, BAND, AND TRACK BEING 
*     INCREMENTED IN THAT ORDER.
*     AN ENTIRE SURFACE IS PROCESSED AT ONE TIME.  TWO OPERATIONS
*     ARE DONE ON THE SURFACE BEFORE GOING ON: A WRITE AND A READ.
*     EACH IS CONTROLLED BY THE CONTENTS OF THE CELLS 'WRITE' & 'READ',
*     A ZERO IN THE CELL IMPLYING THAT NO OPERATION IS TO BE DONE.
*     THE TSU INSTRUCTION FOR EACH OPERATION IS CONTAINED IN CELLS
*     'WINST' & 'RINST'.  MOVEMENT OF THE HEADS OVER THE VARIOUS
*     RECORDS IS CONTROLLED BY THE CELLS:
*                              UNIT
*                              TRACK
*                              BAND
*                              SECT
*                              MAXS
*                              MINS
*                              MAXB
*                              MINB
*                              MAXT
*                              MINT
*                              MAXU
*                              MINU
*
*     SEQUENTIAL MODE INCREMENTING IS CONTROLLED BY THE PARAMETERS
*     SINC, BINC, & TINC.


*  RANDOM & SEQUENTIAL MODES ARE CONTROLLED BY THE CELL 'TMODE'.
*     WHEN THIS CELL CONTAINS ZERO, SEQUENTIAL MODE IS USED.


*  WHEN STARTED, THE PROGRAM NORMALLY INITIALIZES ITSELF TO MINT, MINB,
*     MINS, & MINU, ALTHOUGH IF SINC, BINC, OR TINC IS ZERO, THE COR-
*     RESPONDING PARAMETER IS NOT INITIALIZED.



*  AS OPERATIONS ON EACH NEW TRACK ARE BEGUN, THE TRACK ADDRESS IS
*     TYPED.  ERRORS ARE PRINTED IN THE FORM:
*
*  # TRIES    INST    UNIT    TRACK    BAND    SECT    STATUS
*
*     OR, FOR EXCEPTIONAL ERRORS:
*
*   STATUS    INST    UNIT    TRACK    BAND    SECT



*  AT THE CONCLUSION OF EACH RUN THE CONTENTS OF DTLCT & RLVCT SHOULD
*     BE EXAMINED & SAVED, ALONG WITH ANY PRINTOUT OF THE PROGRAM.


*  BAD SPOTS OR OTHER LOCATIONS TO BE SKIPPED CAN BE MAPPED OUT OF THE
*     PROGRAM BY SETTING A BIT IN A TABLE.  TABLE0 IS FOR UNIT 0 & 
*     TABLE1 IS FOR UNIT 1.  THE TABLE FORMAT IS AS FOLLOWS:
*
*TRACK,SECT                   BANDS IN OCTAL
*
*             27 26 25 24         .  .  .              2  1  0
*       0
*       1
*   0   2
*       3
*       4
*       0
*       1
*   1   2
*       3
*       4
*   .   .
*   .   .
*   .   .
*
*


*  SECTORS CAN BE MAPPED OUT CONVENIENTLY BY HAND BY TRANSFERRING
*     CONTROL TO 'DELETE' & TYPING UNIT, TRACK, BAND, & SECTOR.  EACH
*     VALUE IS TYPED IN OCTAL AND TERMINATED WITH A SPACE.


*  WHEN ERRORS ARE ENCOUNTERED DURING OPERATION, THE SECTORS INVOLVED
*     ARE AUTOMATICALLY MAPPED OUT.  THUS, A CUMULATIVE RECORD OF BAD
*     SPOTS ON THE FILE CAN BE MADE USING DUMPS AND RECOVERIES OF THE
*     PROGRAM.



*  AT THE CONCLUSION OF EACH RUN, A SYMBOLIC DUMP OF BAD SPOTS SHOULD
*     BE MADE TO KEEP THE RECORDS UP TO DATE.  TO DO THIS, EXECUTE A
*     'BRM LIST'.  THE SYMBOLIC DUMP WILL REQUEST A FILE NAME.
*  MACROS USED FOR OUTPUT, ETC.
SPACE  MACRO D; CLA; RPT D(1); CIO FNO; ENDR; ENDM
TNO    MACRO D; LDA D(1); LDB =8; LDX FNO; BRS 36; SPACE 2; ENDM
TSTRG  MACRO D; LDA D(1); LDB =-1; LDX FNO; BRS 34; ENDM
CRLF   MACRO D; TCO =155B; TCO =152B; ENDM
OTCRLF MACRO D; LDA =155B; CIO FNO; LDA =152B; CIO FNO; ENDM
SET    MACRO D; LDA D(1); SKG =0; BRU *+4; LDA FLAG; MRG =D(2)
       STA FLAG; ENDM
READIN MACRO D
I      EQU 1
J      NARG
       RPT J
       LDB =8; CLX; BRS 38; STA D(I)
I      EQU I+1
       ENDR
       FRGT I,J
       ENDM


*  MAIN LOOP BEGINS HERE
KTEST  BRM INIT
KTST0  BRM SKIP; BRU *+2; BRM DOIT; BRM INC; BRU KTST0

*  ROUTINE TO GENERATE RANDOM DATA PATTERN IN WRITE BUFFER
FWB    ZRO; LDX =-2048; BRM GETRND; STA WBUF+2048,2; BRX *-2; BRR FWB

GETRND ZRO; LDA RANDOM; MUL CONS; LSH 19; ADD INCRT; STA RANDOM
       BRR GETRND
       STA WBUF+2048,2; BRX *-4; STA RANDOM; BRR FWB

*  ROUTINE TO INITIALIZE PARAMETERS UNIT, TRACK, BAND, & SECT
*  TRACK, BAND, & SECT ARE NOT INITIALIZED IF THEIR INCREMENT IS ZERO
INIT   ZRO; LDA MINU; STA UNIT; LDB MINT; LDA TINC; SKE =0
       STB TRACK; LDB MINB; LDA BINC; SKE =0; STB BAND
       LDB MINS; LDA SINC; SKE =0; STB SECT; CLA; STA RW; STA CHNZCT
       STA CLNECT; STA HWNECT; STA ERRCT; STA DPECT; LDA WINST; STA INST
       LDA =1; STA FNO; TNO TRACK; CRLF; LDA =-1; STA SKMASK; BRR INIT

*  ROUTINES TO INCREMENT OVER FILE
INC    ZRO; LDA SECT; ADD SINC; SKE =5; BRU INC1; LDA RW; ADD =1
       SKG =1; BRU INC0; LDA TMODE; SKE =0; BRU INC2; BRM INCU; CLA
INC0   STA RW; LDA MINS
INC1   SKG MAXS; BRU *+2; SUB =5; STA SECT; BRR INC
INC2   BRM GETRND; ETR =1; STA UNIT; BRM GETRND; ETR =377B
       SKG MINT; LDA MINT; STA TRACK; BRM GETRND; ETR =37B
       SKG =23; BRU *+2; BRU *-4; STA BAND; CLA; BRU INC0

INCU   ZRO; LDA UNIT; ADD =1; SKG MAXU; BRU INCU0; BRM INCB; LDA MINU
INCU0   STA UNIT; BRR INCU

INCB   ZRO; LDA BAND; ADD BINC; SKG MAXB; BRU INCB0; BRM INCT
       LDA MINB
INCB0  STA BAND; BRR INCB

INCT   ZRO; LDA TRACK; ADD TINC; SKG MAXT; BRU INCT0; BRM FWB
       LDA MINT
INCT0  STA TRACK; LDA TMODE; SKE =0; BRR INCT; TNO TRACK; CRLF
       BRR INCT

*  TESTS TABLE0 OR TABLE1 FOR BAD SECTORS
SKIP   ZRO; LDA TRACK; MUL =5; LSH 23; ADD SECT; CAX; LDB UNIT
       LDA TABLE0,2; SKB =1; LDA TABLE1,2; ETR SKMASK; LDX BAND; EAX 1,2
       RSH 0,2; SKB =4B7; BRU *+2; MIN SKIP; BRR SKIP

*  ROUTINE TO READ IN BAD SECTOR ADDRESS & DELETE FROM TABLES
DELETE READIN UNIT,TRACK,BAND,SECT; BRM REMOVE; CRLF; BRU DELETE


*  ROUTINE TO INSERT BIT IN SKIP TABLES
REMOVE ZRO; LDA TRACK; MUL =5; LSH 23; ADD SECT; CAX; LDB UNIT
       LDA TABLE0,2; SKB =1; LDA TABLE1,2; STX T1; LDX BAND; EAX 1,2
       RSH 0,2; LSH 1; MRG =1; EAX -1,2; LSH 0,2; LDX T1
       LDB UNIT; SKB =1; BRU RMOV1; STA TABLE0,2; BRR REMOVE
RMOV1  STA TABLE1,2; BRR REMOVE

*  ROUTINE TO TYPE OUT ALL BAD SECTORS
LIST   ZRO; TSTRG =MSG7; CLEAR; LDA =3B6; BRS 16; 0; STA FNO; CRLF
       TSTRG =MSG5; CLA; STA UNIT; LDA SKMSK0; STA SKMASK
       BRM LIST1; OTCRLF; TSTRG =MSG6; LDA =1; STA UNIT; LDA SKMSK1
       STA SKMASK; BRM LIST1; LDA =137B; CIO FNO; LDA FNO; BRS 20
       BRR LIST
LIST1  ZRO; LDA MINT; STA TRACK
LIST1A LDA MINB; STA BAND
LIST1B LDA MINS; STA SECT
LIST1C BRM SKIP; BRM OUT6; MIN SECT
       LDA SECT; SKG MAXS; BRU LIST1C; MIN BAND
       LDA BAND; SKG MAXB; BRU LIST1B; MIN TRACK
       LDA TRACK; SKG MAXT; BRU LIST1A; BRR LIST1

*  MAIN ROUTINE FOR DOING A READ OR WRITE OPERATION
DOIT   ZRO; LDA RW; SKE =0; BRU DOIT1; LDA WRITE; SKG =0; BRR DOIT
       LDA =WBUF; LDB WINST
DOIT0  STA CMA; STB INST; BRM DO; BRM TEST; BRM TUN; BRM WAIT; BRR DOIT
DOIT1  LDA READ; SKG =0; BRR DOIT; LDA =RBUF; LDB RINST; BRU DOIT0

*  FORMS A NODE AND EXECUTES A BRS 137
DO     ZRO; LDA UN0; STA NODE; LDA UN1; STA NODE+1; LDA TSU
       SKG =1; BRU DO1; CLB; LDA TSU; LSH 8; MRG TRACK; LSH 6
       MRG BAND; LSH 4; MRG SECT; LSH 2; MRG UNIT; STA NODE+2
       LDA =5; STA T0
DO0    CLA; STA NODE+3; CLB; LDA WDCT; LSH 18; MRG =200B; MRG T0
       STA NODE+4; CLB; LDA INST; LSH 18; MRG =777777B; STA NODE+5
       LDA =NODE; LDB =18; LDX CMA; BRS 137; BRR DO
DO1    CLB; LDA TSU; LSH 12; MRG BAND; LSH 5; MRG SECT; LSH 2
       MRG UNIT; STA NODE+2; LDA =4; STA T0; BRU DO0

*  TESTS STATUS WORD AFTER TRANSFER
TEST   ZRO; CLA; STA ERRCT; STA HWNECT; STA DPECT; STA CLNECT
       STA CHNZCT
TST0   LDA STATUS; SKA =255B; BRU TOTHER
TST1   SKA =2; BRU TRLV
TST2   SKA =20B; BRU TDTL
TST3   SKA =100B; MIN CHNZCT; SKA =400B; MIN CLNECT; SKA =1000B
       MIN DPECT; SKA =2000B; MIN HWNECT; SKA =3500B; BRU TST5
       LDA ERRCT; SKG MINCT; BRR TEST; BRM OUT1; BRR TEST
TST5   MIN ERRCT; LDA ERRCT; SKG MAXCT; BRU RETRY; BRM OUT2; BRR TEST
TDTL   SKA =1100B; BRU TST3; MIN DTLCT; BRU RETRY
TRLV   MIN RLVCT; BRU RETRY
TOTHER BRM OUT3
RETRY  BRM DO; BRU TST0

*  ROUTINE TO CHECK VALIDITY OF UNIQUE NAME
TUN    ZRO; LDA UN0; LDB NODE+10B; CLX; SKE NODE+10B; BRM TUN1
       LDA UN1; LDB NODE+7B; LDX =1; SKE NODE+7B; BRM TUN1; BRR TUN

TUN1   ZRO; STA T2; STB T3; LDA TUNMSG,2; LDB =-1; LDX =1; BRS 34
       TNO T2; TNO T3; TSTRG =MSG2; TNO INST; CRLF; BRR TUN1

*  ROUTINES TO OUTPUT ERROR INFORMATION

OUT1   ZRO; SPACE 3; TNO ERRCT; BRM OUT4; BRM OUT5; CRLF; LDA CHNZCT
       SKE =0; BRM REMOVE; BRR OUT1
OUT2   ZRO; TSTRG =MSG1; SPACE 2; BRM OUT4; BRM OUT5; BRM REMOVE; CRLF
       BRR OUT2
OUT3   ZRO; TNO STATUS; BRM OUT4; CRLF; BRR OUT3
OUT4   ZRO; TNO INST; TNO UNIT; TNO TRACK; TNO BAND; TNO SECT; BRR OUT4
OUT5   ZRO; CLA; STA FLAG; SET HWNECT,2000B; SET DPECT,1000B
       SET CLNECT,400B; SET CHNZCT,100B; TNO FLAG; BRR OUT5
OUT6   ZRO; TNO TRACK; TNO BAND; TNO SECT; OTCRLF; BRR OUT6
WAIT   ZRO; LDA TIME; BRS 81; BRR WAIT

*  CONSTANTS & DATA STORAGE
TMODE  DATA    0               SET TO NON-ZERO FOR RANDOM MODE
WRITE  DATA    0               SET TO READ ONLY INITIALLY
READ   DATA    1
TSU    DATA    2
UNIT   ZRO
TRACK  ZRO
BAND   ZRO
SECT   ZRO
MAXS   DATA    4
MINS   DATA    0
MAXB   DATA    27B
MINB   DATA    0
MAXT   DATA    377B
MINT   DATA    0
MAXU   DATA    1
MINU   DATA    0
SINC   DATA    1
BINC   DATA    1
TINC   DATA    1
WINST  DATA    10B
RINST  DATA    0B
MAXCT  DATA    8
MINCT  DATA    1
DTLCT  DATA    0
RLVCT  DATA    0
RANDOM DATA    0
CONS   DATA    53120637B
INCRT  DATA    24511725B
TIME   DATA    250             TIME IN MILLISECONDS FOR WAKEUP
INST   ZRO
CMA    ZRO
WDCT   DATA    11              2^11 = 2048 WORDS IN ONE PAGE
UN0    DATA    0
UN1    DATA    0
SKMSK0 DATA    77777470B
SKMSK1 DATA    77777777B
MSG1   ASC     'HARD/'
MSG2   ASC     'INST  /'
MSG3   ASC     'UN0 ERR  /'
MSG4   ASC     'UN1 ERR  /'
MSG5   ASC     'UNIT 0:$/'
MSG6   ASC     'UNIT 1:$/'
MSG7   ASC     'DUMP TO: /'
TUNMSG DATA    MSG3
       DATA    MSG4

*  TEMPORARY AND WORKING STORAGE
SKMASK ZRO
ERRCT  ZRO
FLAG   ZRO
FNO    ZRO     1
CHNZCT ZRO
CLNECT ZRO
DPECT  ZRO
HWNECT ZRO
RW     ZRO
T0     ZRO
T1     ZRO
T2     ZRO
T3     ZRO
T4     ZRO
NODE   BSS     17
STATUS ZRO

TABLE0 RPT     256*5
       DATA    00000307B       TAKE OUT BANDS 0-2,6,7
       ENDR

TABLE1 RPT     256*5
       DATA    00000000B       TAKE OUT NO BANDS FOR NOW
       ENDR

WBUF   EQU     30000B

RBUF   EQU     34000B


       END
>    _ !.R<.d _ !0R<.f0_ !3R<.f@_ !5R<.fP_ !72..  _ !F2.._ _ !O2..d _ !V2.   _ !\2.   _ !q2._  _ !.r|.  _ !.s]0  _ !.s]1  _ !.s]2  _ !.s]3  _ !.s]5  _ ",rmL  _ "2sKV  _ "6r.H7@_ "8j                                                  . _ "9s{   _ ";s{1  _ "G                   _ "j                    _ ".                     _ "                      _ ".                       _ "=                        _ "_.:.  _ "{r{.4 _ ">>J.4 _ ".jx.  _ ".s]_  _ ".v
.  _ ".sH.L _ ".*;D  _ ".nx.  _ ".V>S  _ ".V;S  _ ".V>B  _ ".V;B  _ "
V>T  _ ".V;T  _ "V>U  _ "V;U  _ ".n;C  _ ".*;C  _ ".r;C  _ "..;Sp _ ".j;Sp _ ".V>Cp _ ".V;Cp _ ".3kCp _ ".jmCp _ ".j;D^p_ "...S  _ ".F..p _ ".r;.  _ ".F.  _ "..x_  _ "..h.  _ ".v.   _ ".v._  _ # n[.M _ #!n[.M0_ #"WYq  _ ##WYr  _ #%WYs  _ #(WYt  _ #,WYu  _ #0WYv  _ #3WYw  _ #6s{Mn._ #:n[.nP_ #<7LCp _ #=:h.  _ #>:._  _ #?.+Z/__ #@.kE/__ #A3).p _ #BC.E/__ #Ck.   _ #Dq    _ #Eq0   _ #Fq@   _ #GqP   _ #Hq_   _ #IZ.E  _ #Joh.wP_ #[r8L5 _ #\r8L50_ (\.M.  _ P jM.  _ X                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                           MSG    MACRO D,G,2; LDA =G(1); LDB =-1; LDX =1; BRS 34; BRU G(2)
G(1)   ASC "D(1)"
G(2)   EQU *; FRGT G(1),G(2); ENDM

START  CLA; STA COUNT
R1     MSG ($COPY AREA C/); CIO =0; SKG =20B; BRU R2
       SKG =24B; BRU R3
R2     MSG (  ?); BRU R1
R3     SUB =20B; CLB; LSH 15; ADD =1614B4; ABC; LSH 10; STA TRACK
       ADD =1; STA MAXT
       CLA; LSH 7; STA BAND; CLA; LSH 5; STA SECT
       CLA; LSH 2; STA UNIT; CIO =0; SKE ='.'; BRU R1
       MSG ($TO FILE /); CLEAR; BRS 16; BRU R1; STA FILE
R4     LDA COUNT; SKG =32; BRU *+2; BRU R5
       BRM READ; LDA =4000B; LDX =RBUF; BIO FILE; ZRO *; MIN COUNT
       MIN SECT; LDA SECT; SKG MAXS; BRU R4; LDA MINS; STA SECT
       MIN BAND; LDA BAND; SKG MAXB; BRU R4; LDA MINB; STA BAND
       MIN TRACK; LDA TRACK; SKG MAXT; BRU R4
R5     LDA FILE; BRS 20; BRS 10
READ   ZRO; CLA; STA NODE; STA NODE+1
       LDA TSU; CLB; LSH 8; MRG TRACK; LSH 6; MRG BAND; LSH 4
       MRG SECT; LSH 2; MRG UNIT; STA NODE+2
       CLA; STA NODE+3
       LDA WDCT; CLB; LSH 18; MRG =205B; STA NODE+4
       LDA INST; CLB; LSH 18; MRG =777777B; STA NODE+5
       LDA =NODE; LDB =18; LDX CMA; BRS 137; BRR READ

COUNT  BSS  1
MAXS   DATA 4
MINS   DATA 0
MAXB   DATA 4
MINB   DATA 0
MAXT   BSS  1
CMA    DATA RBUF               
FILE   BSS  1
INST   DATA 0
NODE   BSS  20
TRACK  BSS  1
BAND   BSS  1
SECT   BSS  1
UNIT   BSS  1
TSU    DATA 2
WDCT   DATA 11

RBUF   EQU  34000B

       END
>                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                            & C. !    <.!.(v.?!.2\&7..>H[..<..'_jR#Y.5G/_.'_j.5=n?!.?!K_u%..&.U@.!.2\%gs._j      <.!.(v.?!.2\%%.&.K+_.$O!Y.'...?!K_t.E\'_.$O!Y.'..'_j.5=m>!.?!K_xw_.ZP.'_j.6sg_.+?!.2\%f.s_.'_j.6sg_.$/!.2\%gsw_.'_j.65.>^'P.3>V..\'_j.5;)>!<
_.?!K_{m/!.>.'_j.5=m>!.?!K_q&O!,.!.2\%xv/_.[_.$O!qt|.R    <.!.(v.?!.2\&7..>H[..<..'_jj.._.%.!.?!K_t.X.'_.$O!v5C.9nv#\'_j.5=mo#H                     5j   .4.'O!.>.'_j.5=mo#H     <.!.(v.?!.2\%%.&.V+_.$O!Y.'.Y.?!K_t.E\'_.$O!Y.'..'_j.5=m>!.?!K_{m/!{...?!K_{m?!{0.'_j.4.+_c3_.$O!v5C.9n.?!K_t.W\,@                                                                                                                                                                                                                                            "75> !+<>>SQ=$. ".'$>nSQ> "0!$?$..>..>.?$..>.10\3 !.>\."..:B.>a.>.;..>5.>..;..=7.(&.>M.>..>N.>Y.>s.>6.>o.>y.>{.>T.>U.>X.>|.>              >..9..),?$..>..>..>..>b.>..>..8c..!.;..=m.=n.>..8!.>^.;..;..=3.9..=2.>_.>e.>c.>f.>d.;..;..;
.;..>v?>B.>C?$..(?$..."?$....?$..)*?>5>.?>I.$?>5>.3 !.$P?$..>??$..>>.>@?>.5>.?>J.7..7.?$..?p?$..9.?$
3 ";@".;.?$.3 ";@".9.?$;@".=i.=j?$;@".;:?$..=41!.?$.1"Y?$.>$.s  ] 01!.1"9(  ["iY?] !+ !1?$.>$.<$.] 0] *.>-?$.1"Y3 !s  >$.] /1!..>/3 P; &&$.4$. !w3 @1"9 !.3 !<$.>$.] E1!.3 0_aH !L !N !W !Y?$..>{3 !.>_?$.3 "s  ] 01!..>. !??$. !Z3 !.>^?$..>".>:6$..><X$.4$. !i9>^>$./."13{>>^ !?4$. !l !c=%  !q?%!X$. !_3! >?.&% .."8>" !_?%"1"Y1!. !1-5o?%#X>.?%$X>.4!{-!.?%#X$.?%$X$.4!.   ?%%9!.3 !X$.?%!X$.3 !X$.4!.["iY?] !.5>_ !.?%&1"Y !N?$.5>{.>_?>.4$. "  "">%'/>>1,.?$..0V3" .0W10@..p<%(>>gn>n0"*?%). !?%*] n] x.>.3 #] {/>. ".3 ! !,-!?3 (=$>=$. "A>"9/"H "J1"H4"98"94"9?%!X$. "I-!?X$.4$. "O3 !X$.4"H8"H4%+ "S "V4$. "E1!.3 !X$.4"H-!2."f<%,>bf3 !;@&4%- "b4"YX>.0"]8"f "[ >.       &. &.NOTHING                                       '3 '7/M2/                                           ".".?$..".?". _"      ?$.nSP?%. !(3 !.>W.8 .>Z.>].>[1-F?.+4$. "(5>W "$ "??$..>T1*".1"O "!1#\5>S1#85>s "M5>] "4?%/'>'.>'5>[ "9?%0'>'.>'1*                 )v8(. "C8>6 ".3 !.>'1*".<(.>(.&%1.>'?%2u(.?$..>)1)v ";1*"=-"(?>:.>#?>9.>"1&h "Y "Y #: "w<=nu=8 "] ".?%31+W3 !.>.s  .>Q3 !.>S?>.=%/ "tf?l.>'>?m.>*?>!4$. "r?>''%/.>'8"O4"Of?l'%4 "i5>z #T1$k "Y5=m ".5=n ". ".<=nu=8 ".?%51<. <k?%61<. <e?%71<. ;.?%81<. <q ".?>.3 $=%9 # ?>!4$. ".3 ! ".?>.&%:; !3! 5%;?$. "b&%<4%= #$ 8d4%< #' 8d3 (=%4 #+ #Q&%>.>'?$..>S3 !.>).>Q?>.=%/ #6 "l?>''%4.>' "l?>.4$. "w?>7.>"1&h #D #D #J #D?>96%?.>"?%@1+W4"O?>.4$. #D?>!4$. #D4"O&%A.>. ..5>r "Y?>.&%B3 ";@/.>. "{   ?>9.>#?>7.>"1&h #f #) #k #f5>s #.?$.1+W #.?>.4$. #o #.5>z #f?>..>.?>..>.5>s #.1#. #f<$O?%C.SN5%D1+W5>N #.3 (&%EnSN1)e3 !.>N.>Z4#\1#. #.5>. #.?>.&%F'%G5>M'%H<$OnSN?>6nSO #.?%I5>y1*x?$..>y #.?>.'%D #.?>.'%G5>M'%H.>.?>6.>.1#n #. #.?>.4$. #f?>!4%J #f5>. #2 #f5>\ #5 #f?$..>N #a   ?><.>#?>:.>"3 !.(.3 !.>.1$.5>s #k?>:.>"1%. #f3 !.>.1')?>&&>*'>'.>'?>!4%K4#81%. #d3 !4>$ #^?>&; #3 (&%L'>'.>'4#85>M #a #W?%M1+W4#8?%@ #b5>Q #H?%@1+W #H3 !.>.4#8   .#./#./#.3 !>>.;@&4%N #x #
?$6$P=%O ##.<$P?>.nSM?>.5>Z #.'$>nSN?>.nSO3! 6$..$P8#n?#.>#.<#.4#n            .$L/$M/$N3 !.$Q>>.;@&4%N #. $C3!!>%P|?.5>s<$P=$P $:/$R5$R<$P?>.tSP0$?>SQ<>.0$>.>.3  6$..$O?>..SR/>.<%,;@,n>.;@!0$68#.?$L>$M<$N4#.?>.0$@0$(5$Q $H<%,3 !n>.0$E $:?$..$Q<$P $'                     -7_.$i/$j?$6$P=%Q $[ $f<$?>.nAU?>.nAV?>.nAW3! 6$..$8$S?$i<$j4$S..   !-"z.$./$s !4$ $t?$.<$4$k?>.4AU ${?>.4AV ${ $.?$'%/3! ?>.>.0$. $qtAU $>?>.tAV $.>AW.>.8$k $qqt.  ! "$   .$|?$..>x.$                 &h $3 $P $q $P $.1&h $3 $P $q $.5$                 $i $" $.3 !.>x5>. $55>z $*1#. $>?>!4$. $93 !.>O?%R1%W $3 $.3 !.>x3 !.>Z?$|4$.4$. $.5>z $3 $55>. $A $55>\ $D $5?>.'$..>.1#n $J $*?%I5>y1*x?$..>y $55$                 $i $T $.?>.4$. $.?>!4%S $[ $.4%T $^ $_4%J $c.$              >x $.4%U $f $.4%V $. $.   ?>!4$$.?$..$                        $i4$i5>. $t $&5$$.?>!4%K $&?$..>! $&       "    ...  !  # .# .. )-  X  h ?q T| ;. ^K ^J ;; UD ?Ph0  "iH0  "i >. "z  / ?> "g,@  .+  R     .  T  ;    ? ?K    
... ?g  .... ".(    ,...  $..  _ _  ...  %  >   qX5qX4.>.qtu_    '  @._ .  ..  "  < .  .  3 $ ...... !  (  >]  [  U.    A  ^ 1...  1.  Y  V  Z  S  O   .%/%.3 !.> ?(.5>R?(..%.?."4% %q8>"8%W5>O %l?> >(.8%. %o.> ?%>%.4%W1%. %i8%. %t %e5>O %.3! .?.3! ?> 1%..> 8>"?>"=>= %_ %e;H& %y   /%3 "5>R %.;@">%;@&4%.               .&Z/&[/&\3 !.>n.>&.>$.>w.&g.&_.&a.&b.&c.&d?(..>%1(' &] %' %- %r %5?>!4(. &?(..>n %01&/ %5 &.1(' &]1&. %5 %r1&9?>.5&a %: &'5&b %= &-5(. %A:(; 75>% %D3" 9>&?(.5>%?(.5>>3 !5(. %N:(; 79>$3 !9&c.&a3 !9&d.&b>(.?>!4(.>(./>%4)  %] %04)! %_ %0=(. %04)" %e %j4)# %h %j4)$ &s.&_3 !9>&.&e3 !9>$.&f %!1&9?>..&]5>> %y?(..>w?>!.&^1(' &]1&. %. %.5>. %.5>x %. %.5>> %.?(..>w?&^4)% %.?>.:&]; !/&] %.4)& &#?&]; 7:>..&]?>!4)% %. %y4)& %. %y4)' &! %y?&] %7?>.&&].&] %.'>&.>&3 !.&a.&b %G'>& &(   5>z &34&/5>r &64&/5>P8&/4&/   5>.4&95>x &?4&95>. &Z?>!4)% &E %w4)& &H %w?>.')(5(. &M'))5>% &P')*5>Y &S')+<(.n(.8(.?(.=), %O &]?(..>w4&9?)-1+W3 !.>&.>$?>!4). &f &.4)/ &i &.?>"=># &m &.1&h &b &m &b &m &m?>$4(. &w &y4(. &.5>w.>w5>n &.1'U?&_4(. &88%.?&Z>&[<&\4%.5&g &.4( &. &{?(. &y>(.4)& &./>[ %!4)0 &./>] %!1&. %5 %r %5   ?>!4)' &. &.4)  &" &04)! &% &54)" &(4&.4)# &+4&.4)$ &]4&.8&.4&.?(..&c?)19&.4&.?(..&d &24)" &J?>$4&f &E?>&=&e &H?(..>&3 !.>$ &.?)21+W &.3 ! &A4)# &S?>$4&f &E?&e=>& &H &@?>$4&f &E?&e4>& &H &@                                          -"V.'./'./' 3 !.>..>..>..>r.>z.>!.>..'!.'".'#?(..'$.'%.'&?>..'(<)3?>#6>"6(..''8'' &. '.?."8>".>!=)4 'I4)5 & 'I4)6 &.?(..>Z3 ! &.?(.3 ${HD'>..>.3 (&)7'>..>.?(.4>. '??>!8&h=)/ '$ '.=)0=)8 '( '.8&h=)& ', '.8&h=(. '0 '.8&h=)0 '4 '.4)9 ';?)".>!?):9&h '.4)8 &.?)# '75'% 'G.>r?'"5'( '..>. &..>z &.5'$ 'Z3 "; 2{HD'>..>.3 ('>..>.3  6);3! ?>!0'Z3 "/'$5'% &.5'& 'x=)< 'l4)= '.5'# 'x3 "/'&/'(4)> &.?(..'( &.5'# 'u?'!:)?; !3 (6>!.'! '                              (./'# 'n=)@ '.3 "/'% &.?'":)A; !3 (6>!.'" &.5>5 '.4)B '.3 !.>58&h?'.>'.<' 4&h4)> 'z 'b.>.5'( &. 'z?>.6>.6>.3!"?'!{  .>. &. .,_3@  !         ...   ...  !...   .'L5>. '53 !=(. 'M.>)3 !.>Y?'L4')5>w '=3 !.>&.>w?)21+W '-5>x 'C5>. 'C?(. '.3 !4>$ 'G '-?)15&g '.?(. '.   5>n 'P?)@5>Y '04(.'(. '0   .(#/($/(%?(..>Y3 !9>n1').>n?(.=(. 'e?)C1+W 'o4(. 'h 'o?(.3 ";@#'>).>)3 !.(.3 !4(& '.?>A=(& '.?)D5>o1*x?)E5>o1+W?(..>o3 !.>&.>$3 !.>.?(#>($<(%4'U<(&?>&nAT?>)nAS3  6)1.(&3  ; !3" 6>+.>&?(. '>s  ?>&tAT '.?>)tAS '. '.3  6)1=(& 'r3!  '.               .(./(./(.3 !.>R.>>.(..(.>..>..>P.>.?(.1&h (^ ({6(.6(.3 $5>r (@?>..>. (5>z (C (q?>!=)& (G (4)F ([?(.1&h (^ ({6(.6(.3 $5>r (U?>..>. (5>z (X (q5>P (a (4(. (a?>%3" .>% (I4)% ([?(.1&h (^ (w6(.6(.3 $5>r (m (^5>z (p (^?>6.>.?(..>z5>M.>> (.>.?(..>P ({?>!4)G (.?>".(
3 !.>O?)B1%W (^?>.4(. (.?> 4)2 (.?(..(. (4?> .>!>(. (P?(
.>" (^4)H (.?(..( (I4)I (3?>.4(. (^?(..>O?)I1%W (^?> .>.?(..>P?(.1&h (^ (<6(.6(.3 $?>.4(. (^ (4)J (C?>.4(. (^3 !.>O?)J ("?>!4)G (@ (.4(. (Q (M4(. (Q?>.4(. (M5>z (K (M>(. (?)$.>!>(. (;4)" (T (O4)# (W (O4)0 (^>(. (k4)& (^ (Y3 "5( (e?>.3" 6(..>.5(. (k3 !5>.?(..&g3 (9('?(.>(.<(.4('1#. (><$O>SN&)KnSN=)L (. (3 !.>.?)M1+W (5>. (z?(..>. (5>. ( (>                 #                                      #  $     !  V...  Q 'A!gA!XB!..!hD  R  S!'s @  _        (.  B  T  U  O  "  A..|  I  ^  ..   K  J...  %  )  1  3  (  '  *  Y  4 >h  5  P  X!wC  Z  [... "   D   .)b/)c/)d5>)\1)N1/. >.  #?)b>)c<)d4)N?>E1/k1)5?,e.>)T            5>X )m1)N1/. >.  #4)e.)u?>D1/k1)5?,e.>X?)u )h      .)./)./).5>| ).1).4)v?>C1/k?>B.>C?,e.>| )|_        -5.5>. ).1/. >'  ! )&?>'.i*8)*?>);H#?)+;@#.)+8),?),4,f )&.)!1/. )+  !1/. )-  !?,g.)*3 !.),?).>).<).4). )-      _  .                    -5..)./)./).?)5.).3 !.>|?),=,h )&3" 6,f3 ".)M;@!6)M3! ?)+{@ .)+<).?), ).  '   .)s/)t/)u?,e.)v?,i.)w?>.3 "/)x3 ";@&3 0.?.9)x;@&8)w )q5)v )j.>.?>.>,j/)w3 "/)v )X>)x;@,.>.?)s>)t<)u4)N9)x )Y                     .*q/*r/*s.*t?,e.*u3 !.*v5>V ).>V5>f ).6,k5>c ).6,l.*v?*w4+/ ).3 !.>W5*u *6?*q>*r<*s4)y>,m?*t<jw *4?*v=,h *,3 $?>.4,j *# **3 H3" 3! ?,n1060*'3 03 !.*v.*u>jw;@&1068*w8*t0) ).8*v *1?,o106?>.4,e *\?>6.>.3 !.>>?>.4,j1!{1,5?9.=,e *Z=,h *S?,o106?,p9?p?>p.>.8?p?>p8?p.>.1,R?,o106??q.>.??r.>.1,R1,. )..>.?>..>.1,R1#. *C?>66>.4,h *g *C=,h *m.>.?,q106 *=3" .>.?,r *k                        1,;16.1,.4*x-5 5>s *.5>W5>_ *
.+;3 !.>T.>U.>.?+;4*              +;/+</+=?.94,n *.?.74,n *. *.?,e.+>?>e.+@3 !.+?5>T *!3 !.>T?,e.+@ *p5>U *23 !.>U5>f *+<,s?,n1060*)5>c *.<,t?,n1060*/ *.5>f *@3 !.+>>>6;@)<,u3 !;@#1060*9?,n1061065>c *n3 !.+>5>. *S>>&<,v3 !;@#1060*H?,n<,w1060*N3 !.>. *n>>'3 !;@#106?,n106<,p3 !;@#1060*Z3 !;@!6,r=,r?,n106<,u3 !;@!3 !;@#1060*g?,n1061065>d *
3 !.+>?>9>>71+ >,k1+,?>:>>91+ >,x1+,?><>>:1+ 5+@ *..+B?>=6><4,j *. *.?+B>,y1+,5+@ *.?>=>><1+ 5>W *.1,.?>76>=3! ?>71)y5+>1,.?+;>+<<+=4*                     > *. *
   /+A6+A3" 3! ?+A1+.3  3" 6+?.+?4+    /+B=+B +14+,6+B=,e +54+,3! ?,n1068+?0+74+,...                        .+U/+V?,n>>.5,e?,z106?,n>>.5,e?,{106?,n106?+U>+V4+C         .+./+ /+!3 ";H&/+"?>"=>9 +g=>: +.?,|6,                      >:=,h3 !6>"6,..+#?>7=+# +o.+#5>W +.?+/4,> +u +.?,.6+/3! ?+/',..+$?k$&,m=+# +.?+#'+"9k$0+. +.4+# +.6,j.+#0+{?+#=>< +?><'+".k/8+/?+.>+ <+!4+W?,..+/.*w?,e.>W.>V +.?,|6,k6>9 +f                                                      .+P?>.4,h +:?>.4,h +:?+P4+05>. +B?,.1/k1/. >H  ! +E?>H1/k1)51)N1/. >.  #5>. +L +81/. ,e  ! +8   -5%.+z/+{?(&4,h +X +w5>_ +[ +c?,.1,;1,.3 !.>d.>e?,e.>cs  >AT.>'.>&>AS.>)1)v?,e.>.1*                        >6?>)=,. +|3  6,.=(& +w3!  +d?+z<+{4+Q  /  ";H#.>'?,..>)1)v +q   .+./+..+.?k.8+.4,. +.3 !1060+.?+.<+.4+.         -5(5>M +.?,.1/k1/. ,.  ! +.?,.1/k1)53 !4$P ,)5>M ,%4+.1/. ,e  !4+.3! >SN=,. ,8=,. ,8.>.>SM.>.>SO.>.1)N1/. >.  #3  6,i , -5b.,N.,O/,P/,Q<,w>lO3 !;@&4,. ,J?,N>,P<,Q4,;1060,B8,O ,@ ?w ?x  *  !   .,b/,c/,d<,
>>.?>.;@&1060,Y?,n106?,b>,c<,d4,R         -5h.,2/,3?$P4,h ,n?,2<,34,e5>{ ,s1,.?,.1,;<>5>.s  1,.1,.?,j4>.?,..>,3 !.>>.>..>.>SN=,. ,*=,. ,*=,.>>=,.>.=,..>..>.>SM.>.>SO.>.?>.4,h ,.5>. ,.4>. ,.5>{ ,*1,R1+C1,58>, ,$1,.?,j4>.?,..>, ,*?,k.,4?,n1068,4 ,'3  6,i=$P ,03!  ,|1,. ,k 5j  !   -5U.,_/,a/,b3 !.,c.,d<,s>>.3 !;@#5,c ,C ,E=,h ,^106?,e.,c0,>3 !;@#106?,n>>>5,e?,q106?,d4,h ,X?,_>,a<,b4,53" 3! ?,n1060,[ ,T8,d ,H    &.        '...  ( )-     #  !  '  , .  T -T...  P  Q...............  /  C  3  = .+  .  " +/ +%_  (   ?q!    %  .   "    ... >z (  $  ! -5t.-C/-D8>? -%3 !60Y6>?3! .-E?>.40Z -!?0[X>.?0\X>.0,.?-E3! ?0].>??0[X>.?0\X>.?>>.>@?-C<-D4,.   .-C?-..,.?>.40Z -:?0]=>?4,.?0Z ,.?0[X>.?0\X>.?0^X>.?0].>? -)  
...   -"..-./-./-.3 !.-..-.5". -U5>s -..>_<0] - -.?0.-..-..-... ..!..m?0_.>".>7>0a1-. -s.>9?-..>81-. -w.>:?0.-.1-. -{.><?-..>;?0.-.1-. -./.".>98>"60Z/.".>:8>"60Z/.".><8>"60Z60b.>;60b/.".>=?-.>-.<-.4-F?0.> -RX0c1!.3 !.".5>s -.?0.>_?0d] n -U3 !.> -.   _3@  !      ...--e/-.?0.-..-.?>"60Z.-.?-.5-. -3 -m..".-.8>"?>"=0e -'?0f 6.5-. -g5;
 -.5.! -K40g -@.-..-... 8-. -x40h -K5-.8-. -x?0.-..-... ?-. -g5-. -Y40i -Y.. ..!?0'-..-.5-. -w.. ..!?-.5.  -g40j -g.-...!?0'-..-.5-. -w.-...!?-.5-. -z40a -m.-. n"40k -t8>"?."40l -. .95-. -x -z?-.5-. -|8-. n"8-.?>"60Z>-.4-.?0a.."8>"?-.60Z ->?0m58! 6.?0n5=3 6.?0o5>s1"Y?0[X0Z?0\X0Z 5.40k -m5-. -g -m ./  T......  3......... .#5-. .3?.p40p .) -.40^ ., .340q .6>0/-. .6?0..m5.m .D10@40[ .?10@10@40Y .= .3..p -.40r .H..m10@..n8.n .G .1?0c40p .R?0m58! 6.?0n5=3 6.?0s 6.=0t .i..o?0a.."?0u1+W5>s .g?0v1"Y3 !X>.>.o;@/<0w3 !;@#1060.b1,.?0a -+3! >?.&0t -+...        >?0x.;.3 !.;.1:s -. -+?0y.;.?0.;.1:s -. -+   9.".n.8..?..=0z4.>?0{ 6. ..   8..(  ?..=0| ..?n..."4..?0.>W1*                               06.                                                              T  4  =  3  T  T  T  T  T  T  T  T  T  T  T  T  T  Z  T  T  T                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                 -5../.5>. /.100["iY?Y /?0Z]>-?/.9>'./.?0.9>)./.1).3 !.>              >X.>|?/..>'?/..>)?/.4/k5>X /u1/. 0  ! /uY?] /u?0Y./.3 !X0Z8/. /. /u   _         /.      -)!.00/01/028/.?o.8/..03?o..04804 0,?00>01<024/.?p310K803 0&  !0      )....106-,J.0H/0I/0J8>@ 0>1,. 0:&0t3! >?.&0>;H2X>.?0H>0I<0J406  B.._...-5.80b 0Y.0d10\80b 0U10\?0d 0L?pcX>-80c 0P.pc80c40K-0:?0..0c?0..0b40\  H 0e   0  _  .  ...   _  >>>>>>                                                                                                $0. 0/3 $?0..0$3 !;@&.0%;@#3! >0'.0&3 !;@#3! ?0&g0''0''0%X0Z80$ 0.] I           _        _     _  _      -5:?0.60b=0c400.0b?0..0c80b 0<10\400?pcX>-80c 08-.980V 0Q?0b.0V<0W00L?0.<0.>/(  <0.>T|/0W;H0/0X40@3 !>0X; (/0X40@   ..%     +  !    
  W  ... .+  T  "   (   /j >.  X  Y  Z  [  / .# ?V ?y ?;  >  *  ?d    ^ ?S... 9. =5 .* >. .. ?A  $.   0e  H  # !L SP..t5>M 0?5d.1_3 !.1a 1#?>645e 0.?5d.>M.>. 0.?5f1+W3 !.>&?5d.>.1*".3 !.1_?5d 1"?5d.1_.1a3 !.>x?>:.>"?><.>#1%. 1V1')?>)45e 1X5>s 1>3 !.>|5>. 16 1>?>C&5g.1b?>C6>&&5h'1b.>C?>651a3 !6>&.1b5>s 1K5>. 1K&5h'>G.>C?1b51_.>61#\?5d.>.1*                     1_ ".?1b.>6 ".?5i 1\5>M 1[ 1/?5f1+W3 !.>& 1/         1#\5>s 1.3 !.>).>&?><.>#?>:.>"1&h 1r 1r 1x 1r?5j1+W?>&'5k.>' "9<5l01{ 1r?>.t1. 1y?>&g1..>&?>!45m 1t 1ms..=?.=/.f..e/.b..a?....?..g..c..  _  @     0  ( !   $ " _    "  !1*"=1#\3 !.1s3 !.>.?><.>#?>:.>".1t1$.?1t.>"3 !.(.1%. 1V?>".1t5>s 1:?5d.>Y1')?>&8(. 1Y.>'1)v?5d.>.1*                        >6?>!45n 1J51s 1G?1u.>e?1v.>d3 !.>. ".51s 1M 1'3 !9>e.1u3 !9>d.1v?5d.1s 1'?5i1+W 1.=5o 1g?(.45e 1g4>$ 1g?(.&5p'>&.>'?5q.>) 19?>&.>'1)v<(.>(..>'?5q.>)1)v8(. 1j 1:            3 ! 1z?5d.>.?5d.>.3 !.>&1*".?5d 1.3 !.>q?5d 1.3 !.>p3 !.>x5>p 1.59. 1.?5j1+W3 !.>& 2/5>q 1.?>;6>: 1.?9..>&3 !.>$ 2%?><.>#?>:.>"1%. 2i1')?>9.>#?>7.>"1&h 2. 2. 21 2.?5r1+W 2u5>z 2d5>W 26 2u>5s?>$45t>5u/2l1#. 2U5>. 2H?>.&5v'2l<$OnSN?>&nSO.>. 2m?>.=5u 2@?2l&5w.2l?>.'5x.>.?5y1+W?>. 2@?>.'2l'5z.>.?>&.>.1#n 2^ 2m?5{5>y1*x?5d.>y 2m?>.45d 2.?5i 2/?5i1+W 2$   5>s 2u5>N 2u>SN&5|nSN1)e5>. 2z?5d.>.1*                    !.>N.>Z ".?>.45d 2.?>!452.?5d.>N 2)5>s 2
 ".3 !.>p.>x?5t.5015"?>:.25?25.>".>:X5e45. 2. 2%45> 2. 2,45. 2. 2.3! >?.&5..."8>" 2.?5.X5t?>"=25 2.8>" 2.1!{ 2.?5.X5t?5n.."?>".>< 1.   5>\ 29 2.5>s 2b5>. 2@?5.1+W 2b3 !.2.?><.>#?>:.>"1&h 2U 2U 2. 2K3 !.>x?>:.>"1%. 2
1')?>)45t 2W?5j1+W?>9.>#?>7.>"1&h 2_ 2_ 2h 2_?5j1+W3 !.>&?5d.>.1*".5>z 2_52. 2.1#. 2p5>. 2r?5. 2a5>. 2v?5y1+W<$O>SN&5|nSN?>..>&1)e 2d5>W 2. 2b?>&.>.?>)45. 2|?>.'5..>. 2|?>!45n 2U?5d.2. 2W5>z 2K?5d 2L   3 !4>6 2.?5d.>\1*".?5j1+W 2.5>s 30?>:.>"?><.>#1&h 3* 3* 34 3*?5j1+W 30?>!45n 3%3 !.>'1*".5>z 3*1#. 3-5>. 3; 3-<$O>SN'5.nSN 3-3 !.>&?5d.>.1*                     >s 3H ".?5d.>.?$P.>?$.>?7..>. ".3 ! 3T?5d.>.?>7.>"?>9.>#1&h 3^ 3^ 3b 3^?5j1+W1*".5>z 3^5>s ".3 !5>.?5d.>.1+0?>_5>. 3r?5d.>T3 !9>_1*              >_ ".3 !13{ ".?5d13{ ".   .3B?>:.>"?><.>#1&h 3. 3. 3
 3.?5j1+W1*                    3{<5.?>.5>z?>.t3B 3.?3Bg3CnsDu3D 3.59..>.?>!45n 3.43{> "03. 3.  "    >_  !... >       >_.o.... >a.O.... >bH.... >fe'.... >c*4... >di.... >er..... >..f.... >.*(.... >{   3 !.>v ".5>s ".5>_ 3K ".1-. ".3 !.>u?5d 3V?5d 3T3 !.>u3 !.>t?><.>#?>:.>"1%. 4l?>&5>u 3e=5
 3e?5j1+W 3w.>'14r 4l?>&=5t 4\?>''5..>'14r 3w?>&45e 3t 3w?>''5.>'?>9.>#?>7.>"1&h 3. 3. 4L 3.?5.1+W5>s 4J5>t 3. 4'5>v 4'5>. 3.?51/k1/. 5.  ! 3.?5.1/k1)51)N?>.5>.&5.9>.&53 ";@)'>..>.1/. >.  #5>. 4$ 4'1/. 5d  !5>u 4J5>. 4A5>s 4J?>'.4q&5.;H/'>G.>C3 !.>|?>6'5..>'1)v?4q.>'?>6'>G.>C3 !.>| 4J?>'&5.9>C&5.'>C.>C1/k?>B.>C1*".5>z 3.5>W 4Q 3.?>'.>.1$S 4V 3.?5{5>{1*x?5d.>{ 3.14r 3w?>&45e 4h14r 3w?>&&5.'>'.>' 3n?>''5..>' 4a?5i1+W3 !.>' 3w      ?>!45n 4w44r1%.(  84r44r?5d 4.3 !.4o1#\3 !.>).>&?5d.4m?>:.>"?>=.>#?."45. 4.8>">5d 4(?5j1+W?5d.>.1*                        >654m 4. ".?1u.>e?1v.>d ".454"8>"3 " 4(1%. 4.3 !4>$ 4, 4//>O>5h/4n 4=?5f1+W 4.?>!45m 4.?>&=5. 46 4..4n?5d.>O?5.84n 4= 4.>4o/>R1%W 4J?> 5>O 4g.>'.>&5>s 4I1)v 4.3 $?> .>'.>&?5d.>.1*                     4m 4[3 !9>e.1u3 !9>d.1v3 !.4m5>s 4^1)v8>6?>"=># 4c 4.3 (84n 4= 4.>5d8%. 4k 4D;@& 4h         ?>:.>"?><.>#1%. 4.1')5>W 4.5>s 4.5>W 4. 4.?(&5.'5.1/k3 !5>W 4..>&?5d.>.1*                     >W 4 ".?(&5.'5.1/k ".?>)45e 4.?>&.( 4y?5f1+W 4y?5i 4.5>s ".?>..5015" ".   ?>:.>"<.".?.3 !;@&X508>"?>"=>= 5%1,.45"   1#\?>:.>"?><.>#1%. 5N1')?>)45e 5K5>W 5B?5d.>.1*".5>.15Z?>&.>.9>6.>.?5d.>M 5>?5f1+W 5>?5i 5L5>. 5U?5j1+W 5V15Z3 !.>'1*".   ?>66>.6>..>6?>..>M?5d.>.45Z...     A._  .  <  B3  ...  U  T .. >.  %  ; (_  !  _..... $   3 !  >]...  [  .  .      ^  
  >  D  " (    ..|@      _ (  .  ..     ...  '  0  Z ..a  5>M 5.5>.15Z3 !.>&?7J.>.1*                     >s 5.?>/] 41+Q5>v 5)1+.5>M 5                               >:.>"?>=.>#1%. 6y?>&&7K'7L.>Z?>Y1/k1/. >Z  #100] x6>.3 "; 7:7M.>.["iY?] 5L?7N.6h3 !X7O86h 5G<7J] v?>-] 4<7P1,.05O3 !.>>?>6.>.1,5?7Q5>M?7R1,;1,.?7S1,;?>.>7T<>.] D?7U1,;1,.?7V] n?7W. !1,e 5m  "<7J] =3 !] n1!{5>. 5v16><7X1,.05t?7YX>.X>.X>.?>.] 4] *?>C4>B1/k?>F1/k1)5?7Z10K10K 5:?>/] 4?7[>7\<7J] /] *.>/["iY?Y 6{5>M 5.?>-] 4<7]] !] *.>-?7O]>-]>- 60["iY?] 60<7J] u<0] !] *.>-?7^] q<73 !X7O06+?7]5>MX>-3 !9>6.>+16!<7_?7J.@E066.6hs  >SM&7a46h 6F;H23! 67bn?.=$P 6H3!  6:.6h 6>5>M 6t1/. >K  .?7J.>..>..>s.>..>v?>5>.?>I.$3 !.:B.9..(&?>.5>.?>J.7..7.?7c.?p?7b.(?7J.0V3" .0W10@..p<7d>>nn>g06k3 !>>.<>.] C1,. ".16>?>+'7e1/k 6M3 ! 545>M 5.Y?[ 6. 5.Y?] 6. 5.?7f1,; 6.1,;16.1,.] 1] *   ?>..>.?>..>.1#.46.?7g1,;1,R?>66>.47h 6.46..>.?7i1063 !.>>1,546.-63.6e/6f/6g?>6$P:7j.6i?$P.6k 6U<6k/6l?7k.6m.6n?6i.6j>SP16o=6m 6[.6m/6l>SQ;H,16o.6n> #86j 63<6l3 @=6k 6S>SP<6kySP3 PnSP>SQ3 PySQ3 PnSQ>SR3 PySR3 PnSR?7b96k86i 6,?6e>6f<6g46!46m 6=>SQ;H,16o=6n 6=.6n/6l 6=    &.l S   ...                  67l=7m 6u67n46o67o=7p 6z67q46o67O=7r46o67o46o-5r.7F/7G3 !.7H?$P47h 6
?7F<7G46>s  >SN=7s 7 3  67b=$P 6.3!  6.57H 6.5>s 6. 6.1/. 7J  !?>,47t1,. 6..>.>SM.>.5>s 7757H 7.1,R8>, 6.1,.?7t.>, 6.?7J.7H?7u1,;1,.1,.?7t.>, 7'57H 7??7I.>.nSO87I1)N 6.3 !.7I?7J.7H?7t.>, 79  
  !      ... .     \  p  !... >. >. ?u  * ?w(   5j...  >>>>@   "z  " 3(..(..v.    # ?q..._   >. ?a     PJJK   $0 #. $/.  _ /_ 0   "   % >t3 !.8!.8"?>=.>#?>7.>"18# 7{?>:.>"18# 7r18# 7h3 !1%. 7.?>&.w.5>W 7.?=..8 3 !9>f.>.3 !9>c.>.1*                 -F?.+4=. 7. 7.?>7.>"?>9.>#18-?>:.>#1&h 76 76 76 76 76?>9.>"18-?><.>#18-?>=.>#18-?=
19. =. 8  7. 7.?>.4= 7.?=.98!48! 7'?>9.>"?>=.>#18( =. 8  7.?=
19. =. 8  7.1*                               >..>f?>..>c58  7R ".?7.;H"6=.7.97.'=.58"&=..>.?7..>.?7..>.1$S 7b ".?=.5>{1*x?=..>{ ".?>.4=. 7n.7.3 ! 7..7.?>..7. 7.?>.4=. 7w.7. 7k.7.?>..7. 7.?>.4=. 7.?=.1+W 7>.7.?>..7. 7>?7.4=. 7. 7.87..w.?7.87..w.87.?7.3 ";@".7. 7.4=. 7'88! 7'.E.. o.... ...     R  R   ...   -7.1&h 8) 8) 8, 8)?=.1+W88#48#-7.?>#.8$?>".8%?>".8&1&h 8: 8. 8: 82 82?>".8&?>#=>" 8@ 82?>"98%.>"?8&.>#3 !.8c18( =. 8  7.?8&.8'?8%.>".8&?8$.>#=>"48-?>..8"?>..8#3 !.>0?=.1&h 8b 8e 8_ 8_.>0 8[?8'.8% 8:3 !5>0 8i.>r?>!4=. 8.?8"47. 8.?8#47. 8.?=.5>r 8|?>.4=. 8z?=..8"?=. 8                               =.19. =. 8  7.5>r 82?>.19. =. 8  7.?>!19. =. 8  7. 80?8"47. 8b?8#47. 8b?=.5>r?=. 8                               >!4=. 82?>.4=. 8@ 824=. 8b 8lo....  ., ., ., .,-7D<=.88(?x(n8W08*3 !.8S?>#6>"==. 8M?."4=. 8>88S8>"?8S==. 8018W 8.?8S==. 8B18W?."58c4=. 8G 8K19. xT xU xV8>" 8.?8S4=.18W?=..8c48(  # =. 8  7.-8O?=.19. xT xU xV?8S19. xT xU xV48W...>>./>p8?p>>./>p8?p>>./9.>>!/9..9=>  8r1#\5>b 8.?=..>U1*                     9. 8.?>_5>b?=.9>_.93 !.8 89.?9.==. 9T19>! 9. 9.?9..9.69..9.=>" 8.?># 6.5>a 8t59. 8.?>_ 8                               9..9.?>$1.>?9..9.?9.&>%.9.?y.89..9.4=. 9J?9.3 ";@".9.?9..9..9.?9=>  9\?=.9.?>:.>"?>=.>#3 !.9y.9{192 9E<9.?9.n9.89.?9.=>& 97?=.1+W1*                               >' 6..9.?9.6>(.9. ".?y.89..9.?y.89..9.?9.99.99. 9$?=.5>b3 !5>a3 !.>.3 ! 8.?>7.>"?>9.>#3 !.9y.9{?>89>;.>8192(  4=. 9n8>"?=.892 9M?>8.>;?9..9. 9.?9..9.89.(  ?9.4=. 9.?=..>.?9.>_3 !.>U1..?>)9?p "..9.?9..9.199. >! 9. 9.         ...    T|    .L                                                                                             3 !.9|?."8>"4=. 9;?9y492892.9z?9{==. 9]?9z4=. 9D89{4=. 9M89{(  ?9{4=. 9L 9R?9z89|19. =. 8  9.?>"6>#==. 9Z?=.1+W1*9s?."8>" 9<?9z4>* 9g?=
19. =. 8  9.89y 994=. 9o?>"=>; 9L892(   9_3 !49| 9w?9z4=. 9M89{ 9R?9z 9M               ?> 99                            =.89                               y                                                                              9.09.89. 9.49                               y.y.8989. 9.         -wI.:??>+99.?y..:@89.5y. 9.89.49.89.?y.5:@ :!6=.y.;H".:A3 !;@"3!"?:?&>,{zC9zAf:G9zA5:@8y.5:@ :7?:B;@"6===j49.?>- 6.?:A=>. :; :0=:B :0.:B :0  *     Q  Q;@2;@,;@&;@ #.../....._   ?{.5;. :Q6=.{.;H"3!!|  ;@"3! {zC&>,5;.8{.4:K   ?>+9:[?z[.:r8:[?z[5:r :f6=.z[;H".:q3 !;@"3!"?zq{zC&>,5:r8z[4:[         5;. :.5;. :.5;. :85;. ;25;
 :e1:K4=
 :.4:s4=. :..;.1:K.;.8;. :?=..;. :.?=.8:s4:s5=2 :.;.4=. :A.;.1:K.;.1:K?;.69..;.?9..;?9..;?>/>>0;@".;.>;.3 !; !:=
.;.3 (19. =. 8  ;.?>)9;.?;.4=. :#?>1.;.?>23 ";@".;.8;. :=?=..;. :.1:[ =. ;. :4=. :p1:K.>43! 6>4==. :J :S3  &>%4>% :P?9. :69.==. :X5;. :V :.?=. :3 !.;
>9..;.5;. ;#5>2 :a :.?=..>2?=. :5;. ;Q1;h :p5;. :.8;.?;. :E1;> :e4=. :u.;.1;F :.4=. ;u1;F==. :|.>4 :E4=. :.?>3 :E=>) :..>4 :E.;.3 !.>25>1 :?>3.;. :E.;.?>3.>4 :k?;.9;..;.3 !.;.1:[ =. ;.4=
 :?=..;.?;..;. :e3 !.;.?=. :1:K4=. ;I?>".;.?>4.>#1:K.."4=. ;A?=..."?;..>"1%.(  ?>!4=. ;<?>&.;.?;..>" :e?>&.;.?;..>" ;*4>* ;D ;04=
 ;G ;98>" ;*9;.4=. ;M :n?;.4=. :n :e8;.5;. ;\?;.=;. ;Y1;h ;Q?>5.;. :g?;.=;. ;a1;h ;Q?;.=;. ;e :g?=..;. ;Y   1:[ =. ;.4=
4;h?=..;..;..;
3 !.;. :i4=. :1:K4=. ;.?>".;.3 !.;.1:K4=. ;.8;..."8>" ;.1;>?=. :4=
 ;.?;..>"?=.1+W?=. :4=. ;.8;. ;.?=..."?;..>"?>4.>#1%.(  ?=
19. =. =. ;:>>&3 !; !:=
.>&3 (19. =. =. ;:?>&4=. ;!?;..>"3 !.;.1:[ =. ;:4=
 :?=..;. :| .            5;. ;C8{.4;>8{.4;>4;>   3 !.>1.>2?>".;.?>4.>#1:K.."8>"4=. ;z?>"6=.;.?=..{.?;.9>"6>"4= ;b?>)4;F?=.1+W ;x1%. ;?;..>"5>W ;i ;x?>$4=. ;x?>&5>14;F.>45>2.>3?>)5>2 ;v4;F.>2 ;N3 !4;F4=. ;.1;> ;S4>* ;N?=..>1 ;S               .........            ...   ...    .p..*            ......<=nu=8 < 8=m ".1#\8=n?=n=>6 <'?>7 6.?=..>.1=o<=n==. </5>. <93 !n=M?=.n=85>. ".?=..>.1*".?=.n=M3 ! <2?=. <@3 !.=a1#\5>W <F.>'1*                    !.>W8=3?=3==. <19>8 =4 >(?>(9=4?=4=>9 <W?>: 6.?=g.=f?=j.=i3 !.=e?=a.=b3 !5=a?=.=6?.:4=. <i5=a =  =.1=o.=d5=a <u?."4=. <u?=..>2?=f.=g =(?>W.=h5>. <#?=..>.5=a1*                    !.=25=b1-F?>9.>"?>=.>#1&h <
 <
 <
 <
?.+4=. <. <.?>7.>"18( =. =h =j?=
19. =. =h =j?>;1<. <(?><1<. <&?>=1<. <& <.5>W <<y8=6 <.8=6(  ?=6==. <. <.?=5.=c?=..=2?>>1.>5=h <E8=3(  ?=3==. <C?=c.=5?>?9=419=4 >8 >(1.. ".?=d==. <6?=i.=55=b ".1-F1=o.=d5>. <]?=..>.?>W1*                             =. <6?=d==. <6 ".1#\ <F?>W <U?>@.=f.=g?=i.=j <[<=nu=M <i <n?= <*<=nu=M <'?=.n=8 ".5=m <.5=n <>?=.1+W5>. ".3 !.>&?=..>.1*".8=n(   <w8=m(   ".5=b8=d(  5=e <E?=f.=k<=k> !|  vSOnSO?=k6>A.=k4=g < <E   4>. <.?>B4>. <.4<.8<.4<.3 !.>2?=f.=g?>:.>"?>=.>#?."8>"4=. =.1&h =. =2 =. =. =.?>..>.?>..>
?>!4>C =.5>z =.1=(?>D.2l?>..>.?>
.>.1#. =.5>. =y?>.&>E'2l<$OnSN?>&nSO.=l3  <=gn  ?>!4>* =s1=(n !?>!4=. =c5>2 =%> "/=g3  =>F =(?>G1"Y =.4>* =.5>2 =h =.1=(v !6=l3 "; 7z !.=d?=..>2<=g =V4=. =.5>2 =.?= =U?>.=>D =G3 !.2l?>.'>H.>.?>I1+W?>. =G?>.'2l'>J.>.?>&.>.1#n =. =.?=.5>y1*x?=..>y3 !.>&.>$?=.1+W <u?$P6>K3! ?>& =M4=. =.5>2 =.?=..=e <u?=y ! =i   ?=..>51%.(  3 !4>$ =.?>&4=(...... UD                                                                     ...                                                                                     .H .H      ......   ?>:.>"?>=.>#1%. =.5>w =.?>L1+W3 !.>.?>&4=o?>$4=. =. =z?=.1+W =z5>. =x =z...  R  *   qt|  !._ .. >]  <.$A  B  Y  ^  ,  ]  +  X  [...  T  >  W  \ _  9. UC ?" .q .  4 ?/  )...  U _!   ?5 ^J ;_    & ; #. /j 0   4 ?[ =b U' ?)qt.%..j7. .x... U(  "..   V  _... U? ?l $   3 !   #  A                                                   ...   ...   ..................   ...............               ...      ...         ...                        qt...    ...   ...             "$  R   ...               ............        0......        T .0 .0                             "  !! /                      .+ .+ ., .0 .0 .1 .2  h  E  h...         _  _  n  @   "$ U@m *0 "-  ?  0B   "!%$- "   < ,     $      n !     !   *'1.]Ca6tqy;..4&7AqEtiM2.xx.eB>..(t%&.-${se.].vh.                                                                        .(t%&.q%=.53>o.r.t%t;rJ<e..rh4ol..0.hH.7;+iBq]Qs..FUq@$quG/d4]05&;a6ts..qE;.MD)d.f-?%.Aao..hCq(Bqd{sd1).<q...'t'hp.m..w./hCaFT.uAuWF>...w./d.uuAqy;...-.T.d7qd2%AqIA)'=>..-.T.d7r7.r52288.                                                                                                                                                                                                                                                               -.T.'.q(v+f=qd2%.*Xx.B-.tqirqdto..6.-V{D"X.0(.o{.0. .w./hCaFT1tt%v.;..FkE>; ..&.$FUp)IRpN_T7-$*;Ak6 0  "H."ZAh_ q...                            aH.qU5...-.T.d7q%.%dD&F>....7DeUTb]q...                                   r..#mY"|."..c                           _ r._V;Y#LT"<Gl. (t%&.rh4l..-'4[mrE2+..q...                                 .]1.:s.._ Td h -l p [t x | Z. X. Y, R, P, U( Q. W S$  ( !, "0 #4 $8 %< &@ 'D (H )L .P /T JX V\ K_ Ld h 0l 1p 2t 3x 4| 5. 6. 7. 8. 9. :. ; <. =. >L ?T @H A\ B  CP D. EX F@ GD H< I0 M, , N.   O ? ?k   PAPER TAPENOTHINGTELETYPELIST: NOLIST: TEXT OUTPUT: TTY MSG OUTPUT:      .. . . .. .. .. .. >!  # >! >)  " >) >6    >6 >F  !      .^  !. ?q                                                                                                                              ...                                                                                                                           ...                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                             $t>P _3Q..u.. _3Mmd... _2...G/. _2.%f.%. _51%h.qP _5P%g.. _4.qX4.. _<e.H... _1wmd.. _1ym6.. Q_0m7.. Q_0n... R_0n... R_0r... U_0yD... O_0.D.. P_0(.. S_0)(.. S_0)$.. P_0*V.. O_09D... N_0q.... # 0i.... _1cv54E_ _3@v5C.. _2.%$... _4pf6.. $ 0uY... U_0ug... V_0vD... V_0u$... W_0e'.. _0.H... T_0.H... T_0.E... _1.qX5.. _<k.(v.. _1..>... _;.bD.. _4{qtu.. _<qqt... _<.%.... _<?j7... _<=-G.. ^_0-F.. ^_0f8.. ]_0jX{.. ]_0)8|.. \_0*W... [_0W... [_0yF.. Z_09E... Z_0)H4.. Y_0)H6.. Y_0i'.. X_09'.. X_09F.. W_0qt|.. _9s.$A.. _7v-i... _4                                                                                                                         .... _3S..s.. _3Qr).. _1.m(p.. _1.qt... _5..5.. _0.eh.. _0.fH.. _1 .%4.. _3Fr.... _26(C.. _3u..x*P _3x.U=/. _3Smf.A_ _3C=e.. 3 .*U.. 3 r)H.. 0 0)D... > 0.W.. ) _%.... ) !.x... ) a%g.. ) (..... (  ..... ;01U.. 3 ..h... 0@".X... 0@$                                                                                                                                                                                        ...    q... ! 0q(... !@"m(... !@$iU0'. s #i(... 00 f8... 0B e.d.. 0@@e.c.. 0@_e.b.. 0@ e.a.. 0A eh... 0@(e$.. 3 *bDF.. !4 aTF.. !p a(... !@0b... 3!!a4.. 3 %F7..    >.... 3 P>... 3! =d.. 9 0=$... 3 ,9'.. - 0-.... !8 *d.. 7 0)G.. < 0)D... 5 0)D.. = 0%E... 3 0..... % 0.'... - 0.).. % 0r... ) 0q.... ' 0m(F.. !  j8... 04 j.... 3 @j... 3  iT1.. 3 #ih... 02 i9... 3 0i4.. 3 (i)... 3! i(... 08 i$... 3 $aW.. 9 0aT.. 7 0*d... 6 0*Y... / 0*T... / 0*T.. . 0)H... 8 0)G... 5 0)E.. = 0)E.. 4 0&E... ; 1%J.. ;@1.f... : 0.5.. ' 0.'... 8 0.E... ; 1.87.. ;H1Y... < 0T... > 0T.. ? 0J.. ;@1rX... & 0q)... ? 0m)... : 0it.. 3" iY... s  iT... 3 "iT.. 3 !f9... 0 0f9..   0f8... 4 0f7.. 1 0aT... 6 0qx.C. . &.w.. . ?me... . .)8... . ".E.. . *                                                                                                                                                                           >>>>>>..*            ......<=nu=8 < 8=m ".1#\8=n?=n=>6 <'?>7 6.?=..>.1=o<=n==. </5>. <93 !n=M?=.n=85>. ".?=..>.1*".?=.n=M3 ! <2?=. <@3 !.=a1#\5>W <F.>'1*                    !.>W8=3?=3==. <19>8 =4 >(?>(9=4?=4=>9 <W?>: 6.?=g.=f?=j.=i3 !.=e?=a.=b3 !5=a?=.=6?.:4=. <i5=a =  =.1=o.=d5=a <u?."4=. <u?=..>2?=f.=g =(?>W.=h5>. <#?=..>.5=a1*                    !.=25=b1-F?>9.>"?>=.>#1&h <
 <
 <
 <
?.+4=. <. <.?>7.>"18( =. =h =j?=
19. =. =h =j?>;1<. <(?><1<. <&?>=1<. <& <.5>W <<y8=6 <.8=6(  ?=6==. <. <.?=5.=c?=..=2?>>1.>5=h <E8=3(  ?=3==. <C?=c.=5?>?9=419=4 >8 >(1.. ".?=d==. <6?=i.=55=b ".1-F1=o.=d5>. <]?=..>.?>W1*                             =. <6?=d==. <6 ".1#\ <F?>W <U?>@.=f.=g?=i.=j <[<=nu=M <i <n?= <*<=nu=M <'?=.n=8 ".5=m <.5=n <>?=.1+W5>. ".3 !.>&?=..>.1*".8=n(   <w8=m(   ".5=b8=d(  5=e <E?=f.=k<=k> !|  vSOnSO?=k6>A.=k4=g < <E   4>. <.?>B4>. <.4<.8<.4<.3 !.>2?=f.=g?>:.>"?>=.>#?."8>"4=. =.1&h =. =2 =. =. =.?>..>.?>..>
?>!4>C =.5>z =.1=(?>D.2l?>..>.?>
.>.1#. =.5>. =y?>.&>E'2l<$OnSN?>&nSO.=l3  <=gn  ?>!4>* =s1=(n !?>!4=. =c5>2 =%> "/=g3  =>F =(?>G1"Y =.4>* =.5>2 =h =.1=(v !6=l3 "; 7z !.=d?=..>2<=g =V4=. =.5>2 =.?= =U?>.=>D =G3 !.2l?>.'>H.>.?>I1+W?>. =G?>.'2l'>J.>.?>&.>.1#n =. =.?=.5>y1*x?=..>y3 !.>&.>$?=.1+W <u?$P6>K3! ?>& =M4=. =.5>2 =.?=..=e <u?=y ! =i   ?=..>51%.(  3 !4>$ =.?>&4=(...... UD                                                                     ...                                                                                     .H .H      ......   ?>:.>"?>=.>#1%. =.5>w =.?>L1+W3 !.>.?>&4=o?>$4=. =. =z?=.1+W =z5>. =x =z...  R  *   qt|  !._ .. >]  <.$A  B  Y  ^  ,  ]  +  X  [...  T  >  W  \ _  9. UC ?" .q .  4 ?/  )...  U _!   ?5 ^J ;_    & ; #. /j 0   4 ?[ =b U' ?)qt.%..j7. .x... U(  "..   V  _... U? ?l $   3 !   #  A                                                   ...   ...   ..................   ...............               ...      ...         ...                        qt...    ...   ...             "$  R   ...               ............        0......        T .0 .0                             "  !! /                      .+ .+ ., .0 .0 .1 .2  h  E  h...         _  _  n  @   "$ U@m *0 "-  ?  0B   "!%$- "   < ,     $      n !     !   *'1.]Ca6tqy;..4&7AqEtiM2.xx.eB>..(t%&.-${se.].vh.                                                                        .(t%&.q%=.53>o.r.t%t;rJ<e..rh4ol..0.hH.7;+iBq]Qs..FUq@$quG/d4]05&;a6ts..qE;.MD)d.f-?%.Aao..hCq(Bqd{sd1).<q...'t'hp.m..w./hCaFT.uAuWF>...w./d.uuAqy;...-.T.d7qd2%AqIA)'=>..-.T.d7r7.r52288.                                                                                                                                                                                                                                                               -.T.'.q(v+f=qd2%.*Xx.B-.tqirqdto..6.-V{D"X.0(.o{.0. .w./hCaFT1tt%v.;..FkE>; ..&.$FUp)IRpN_T7-$*;Ak6 0  "H."ZAh_ q...                            aH.qU5...-.T.d7q%.%dD&F>....7DeUTb]q...                                   r..#mY"|."..c                           _ r._V;Y#LT"<Gl. (t%&.rh4l..-'4[mrE2+..q...                                 .]1.:s.._ Td h -l p [t x | Z. X. Y, R, P, U( Q. W S$  ( !, "0 #4 $8 %< &@ 'D (H )L .P /T JX V\ K_ Ld h 0l 1p 2t 3x 4| 5. 6. 7. 8. 9. :. ; <. =. >L ?T @H A\ B  CP D. EX F@ GD H< I0 M, , N.   O ? ?k   PAPER TAPENOTHINGTELETYPELIST: NOLIST: TEXT OUTPUT: TTY MSG OUTPUT:      .. . . .. .. .. .. >!  # >! >)  " >) >6    >6 >F  !      .^  !. ?q                                                                                                                              ...                      H  . H  M. Nl  >  > ".  "  \  H  H !.  . &. "x "x "x "x "x "x !. !. !.  4  / %z "& ". H  Mk  R$.y ?    "..;  "..   #..   $..      4..SCHEDULE NOT CURRENT 5.5SCHEDULE NOT COMPLETE7.MCOST PER ASSIGNMENT IS  ?.hSCHEDULE COULD NOT BE COMPLETED  G.FOLLOWING HAVE INCOMPLETE DESCRIPTIONS:<.6NO PROFESSORS FOR FOLLOWING:  7.WPCAP ERROR:  FLOW INTO  -.r FLOW OUT IS   2..SCHEDULE STATUS:  4..CURRENT AND COMPLETE /.1 (S-S ARC ONLY)+.CNOT CURRENT 8.RCURRENT BUT NOT COMPLETE-.m (INFEASIBLE)  P.> ARC        I      J   COST     HI     LO   FLOW5.2 NODE    PRICE   TYPE(.J<SOURCE> &.V<SINK>&.ARCS: '.hNODES:   '.tWORDS:   '..FREE:    :. TAB   USED   FREE  L ADDR !.*   *.0HEADING:    /.?DEBUG ACTION:  0.QEND DEBUG ACTION  +.fI/O ERROR   7.u RANDOM OR WRONG TYPE    I. \r \n \k \f \b \ Iz Ii IK I{ Iw Ig IL IH IE I@ I; I0 \4 \9 \<[ Q/ S?_ ? W\J!<!%[ W] C[ Q< S4  / R:_ ; 7> R4  .!#?_ X!%?!#4  X!$._ 4  3 "; 7:_ 4  / R/ Ss  ?_ x !> !. s?_ \J.> !&M@4MA I\> R< S4  3! >  &M@6MB= s IY3  9 s?_s8   IY[!1/!3>MCs  ?_ /!9<  [a9 Is<!1 In> !/  >!2<!34  [!1/!3>MD Ij/!6s  /!!<ME/ .<MF/ V[!4[_ [!7s  ?_ /!<<  ?!4\_V I.\I^ I.> !/  3! [a</ 
[!7[a<3  >!5<!64  [!7 I.[!:[a<?MG[a< I..!=&M@6"?3 "; .6MH. Q[a<[!:? Q3 "[a<?!4\_V I.. .[a<[ .?!=; !;H3. .[!:[a<>M@? .8 . I= IG[a<\M)< . I9=MI _.&MJ9 .&MK' .\I^[ .[a< I,/!6s  /! <ML/!!<MM/ .<MN I. !a[a<4.T8.T4.T !bZa<4.Y8.Y4.Y !c5!! I.8! 3 $?! = .4.^. .3 ( I./ T/ V<!$>MO] F3 ,4MP Iv3 (> T< V._ 4  <  \J./   Ik[ Q/ S?_ 5_  I.<  ]MQ/  3" <!%>MO] D[ Q< S4  6_ 6MB. Q?_Q4   !)[!&/!(\Jt<ML] +<ML] =< x_I.] * K- Nl I. J' J,?!?>"q\Y.?!>>"v\Y.3 !. z Nl?MR] n[!&<!( a)?!).!*?  &M@6MB.!)?MS.  [!&<!( a* !d?"U6"S. @<MT>"Uv"S9 @> $0J<? @]MU'MV. @?MW.!/s "? @] 0 Ja\KG.!%4
7 !e?MX.!/s #] / Ja.!+3   J[ J\&MY4MV J\4
N^H.3 !9!+] 4 JO^Hx3  4MB Jg^H= a/=ML^H a/ !0[!&/!(^H\KG?MR] n[!&<!( a0 !f?!$4MA J>?!%4MB J| J.]MZ]MZ]MZ] 43 !>MB[!$4
t !g.!,?!$4MA N\?!,4
. !h\J.^H=4
. !i/ U3! ;H.v  3! > U4
. !j/ V< cv.3 "; .6 c6M[< V4
. !k/ U;H0n !3 !; 0n  y !> U4
! !lo "\J!4
+ !m/ H3 !.b&. K. .?"&]M\3 $[ L< H?!$3 "; ,'!$>M]] E JB4
/[ L\J. J8/ F3 (6M^[ @Z @\M)3 $? F=MA J\4MP Jp8 M3 (=MA8 M< H[ L. K\LT4
/\J. J18 M? M6 L=MA J9. .3 (. K=MA8 M< H[ L\LT4
/? K4MA JZ. .8 M J93 (4M J{8 @8 A3 !W @? FW @8 M J94M_ JZ Js !n[ D/ @8 @/ AZ @\M)\K6 K04Ma J\ @3 ! K14MZ J. T@4Mb J.\J.]M^\ @\K6 J.4Mb J.]M^ K04Mc K%\J.? D6MB4 E K" K0]Md8 E K04Me K*\J.\KP K08
.4Mf K3\J.]Mg Nl\ @8 EW D3! [ D4
. !o4Mh K<]Mi]Mi KB4Mi K@]Mh KB8.64.64.6 !p\KG]Mj4.C !q[ o/ q]Mi?Mi\K6[ o< q4.G !r?M^. x\KG\KG^H>?Mk]M\.!c.!d<Ml?MA>Mm] E Kh/!e\KG\ae^H.\KG\KG?MB. x4.P^H= KV Kl Kx "' "1 K. "3 "; K. "< "H K. "H "O L.HASHTABLE:  NETWORK: SIZE OF NET:TABLES:   !s?"0.!e?!e="2 K4..<MB[ae] C\KG?M\9!e K. !t\KG^H.3 "< z_K. K. K# K% K.>ML^H.5ML^H% K)^H+ K)^H0? {4MA^H9\KG\KG^H?3 !. >?!?\Kr K<?Mn. [<Mo^HD? >U_[\K[?Mp9 [0K4 K.\KG^HP3 !. >?!>\Kr KY^HD? >U"v\K[^HF<Mq? >4MB KN.   K@<Mr=M^ KL<Ms\KK@<Mt\KK@]MQ K@\KG4.. !u/ V. @=Mu3" s  =Mv> !=Mw> !=Mx> !5 @ Kj>./ A< V8 A KpX @4.[]MA Kl !v\KG8 >6MB= >4.r? >\K[^HB8.r4.r !w/ B>  . "[ @? A= @ K.3 !. C[ B K.&M@. CU"X4 > K.< @.  4.                                CU"]4 > K. K.8 @8 @?My9 B K.8.                    .!x^HX!?^HD^HbX!>^HD^Hf?!?]Mz. @?!>]M\9 @X @\KG4.. !y\KG^Hj?M{6".. @X @\KG\KG^Hn?MB>M|[ @?M                      M.3! \KGX @^HD>".v".6MB. BX B^HD?_A6 B. BX B^HDX A8 @8 A> $0L>\KG\KG4. !z[ @/ B> !. C|  3  4 C L_8T< B4T.  Y @ Lf3  . " L^> # LZ !{3 !.b&?"&]M\3 $[ L\LL4h< c>.6 e6MB3! ?M>9 e0Lz L(?_e3 @<M.. [\J!3 0[ LY @ L&?!$4MA L.^H=? e&M@. e Lk?MB.!%^HB^Qq< u..1]MA^ [\KG?!$.!%? u=M^ L..!-\ @=MA L.4M L"?!-4MA Nl4MP3 !.!- L.> !0Lz? e&M@. e3 !\R-8 e? M6 L. a6 j\M\[ @6 i6".^".? i]M\6 j3 $[ [[ @6 i[ iZ L LCW [ L?? a3 "; 06 [\R-3 !\R-8h4h !|3 !. a\ @W L[ L LT[ L\J. LS3 (6M^[ @Z @\M)3 $&M@<MA                                                                                                                                                                            b_Lc> " L^    L.  + L.  , L.  - Lz  . L  / L.  9 Lz  : Lz  ; L.  @ L.  Z Lz... L.3! 8 a? a=M. LO3  =MA8 M]MP L.5ML Lz8 M LO8 a]MA3 ! LP? M6 L4MB L.4L\J.? L. M LM? M6 L=MB L.8 M]MA8L4L !                          .4MA M"]MA9 .4. !.9 K4MA M)]MP]MA9 K4$ !>5 | M5"x"                                                               ".3 !.bx. z8!>?!>4, !.5 | MJ/ V?M.. @6M.. A<Mo_@>!F._A?Mp9 @9 A0MA3 !. z8!??!?< V48 !./ V\M,3 $<M.>  4MA> !o  < V\M84N !.\Jt\KG^M M>?'TABLES FULL: WRITE TO SAVE DATA  \Jt\KG^Mo M>/'.TABLE AREA FULL?I*. .?I,. .\Jt\KG^MM>6(9ASSEMBLE OR LOAD ERROR  / @\Jt\KG^MX @ M>6(fBAD INPUT TO NETFLW:    \Jt\KG^M.\KG\K. M>E(.SAME STRING OCCURS TWICE IN HASHTABLE   !.\Jt\KG^M2?)&M@. @X @ M>?(XEXECUTED A TRAP INSTRUCTION AT   \KG] * .     !#_ #.. I. IY!_  "?!  .  #..... IH IT  *  ;  -)   I....  ',   JE JO<    >...  #  L  "  .  ,   .  .  ^  .  .    
    [ !f Kj !c "X...  % HX H\ "I "N     )  . #.     & H  H" "& "._    @  g "Z _  !@3 !>TK[!$?TL. $?TM. !?TN. x?TO] n?TP4TQ Mu?TR6TS3! >I0n  0M. M. !.?TT>TU[ @?TV6TW3! ? An".6TKn".6TK6_@n".. A8 @3 !n".n".> $0N!.".?"'6TK."(<TX>H=n".0N4?".6TK. @3 !6TY= @ N;=TZ NA Mu?TU6TZ3! 3 !nH 0NE?T[.                                T\. |. .?T]>T^[!I<T3 !n!F0NQ\M,.!A\MN?T\. z3 !. {.!+ Nl?!$4T_ Na^H= Nl?TK.!%?T[. x^H=\KG\ @] @4Ta Ng T@?"06TK."2?"+6TK."-3 !. w. x. v?!+4T_ Nz N..!$\Jt3 !.!+?TO] n?!$4T_ N.>TK[!$\KC?Tb. P? P. O?"-. N3 !. I\NH\N4? O. P? N."-\NH?_P; !. @5 @ N'8 P?_P&Tc. @?_P;H.3! 8 P?_P;H#&Tc3!@\_@? P. @>_@; "3 0; %&Td3 @5Te3" 6 @. P N. !.?"2="0 N\6TK. Z?"0. Y<Tf\J// b&Tc6"0\Tg6TK. I?"06TK."24.4 !.3 !. J. G?_P&Th3! _NP NT NN. N.? I4T_ NZ? J4T_ Nl?b-. P8"-? P. @>_@; "3 0; %&Td3 @5Te3" 6 @. P. O8 N NL? N6 G3! >  . @>_@; "3 0; %&Td3 @5Te3" 6 @. P8 G NL?_P;H#&Tc3 "\OR N."-? P.b-?_P;H#&Tc. P NL?_P;H#&Tc. @\_@ N.5_P N.?"-4 N N.4.H?b-. P8"- N.?_P; !3" . @8 P5 @8 P NL !.?Ti\O;4.# !.?Tj\O;4.' !.?Tk\O;4.+ !
?Tl\O;4./ !.?Tm\O;4.3 !?Tn\O;4.7 !. [6T[. \3 !. ]?_\6 ]=_[4.;?Tg^"2? ]3 "; .6 [3 $?_[6 ]\OR?T[9 ] OA !.[ @8 J? I4T_ Om?Tg^"2?_@> A8"2<"28"28"2\J+3 $?"0. ^?"26T[. <To?_@&Tp\LT M.4.R4 J4.R4.H!.*3 b1!J! .%.z'.2i&Q S.e&a S.   -.J+.:).B'.j% b# B   %!b#!.   i%1 .Ne,. .N-."+.2).j'.B%.
#.J   a%Q .[a%i Q[e%. .[!.
C."   e%.!Q[!.2   e&9!.[#..!.
C."E.:G.z   e&Q!Q[#..!.
C."E.:G.RI."K.b   e*i R.   #%Qe.; ..   #%ie.[!R.   e*i R|   #.2#.r   #.R#.r   #.Z!.zC.
   #%.e.{!..   i*) .Oe*I!.O%%Q'%ii.; .2e.[!S2   i). .He)A RH   i)y .He*1 RH   #.:#.r   #*.#&9e.;"R.   e+) SW#+I'+ii+.".Oi.;"..e.; ..   e(. S.'!"%."%'I   #,!#,9a,i TH#,ya&Q M.e)I .Nm%. .[m&9!.[m&Q!Q[!.*   !."   !..   +.:).r'.Z%.R#.2   e(1!QN#*y#..   e(Y!.N#-qu%Q .[q%i Q[m%. .[i&9!.[e&Q!Q[!&.   e&.!S.i'q . e(I S g'I S.#!"a)y T#   e(y"QN!&.   #)1e)I T0   a,1 .Ba,I TB),i',.%-)#-I   #)aa)y T&e'q!S.#!"   e&1!S.#!"   -!Z+!
)":'"j%".##"   e+) .[#%ra.; S#   e+A Q[#%ra.[ S#   e+Y .[#%ra.{ S#   e+q!Q[#%ra.. S#   e&q!.[%&.#&.a.; S#+$*/$
y%. S[   '$
q%. S[%%R   #$*G$
e%. S[e&y!Q[#%ra.[ S#'$*'$
   #$
%%R   #$*G$
e&y!Q[#%ra.[ S#+$*/$
y%. S[   '$
q%. S[%%R   #$*G$
e%. S[e&q!.[%&.#&.a.; S#'$*'$
   #$
%%R   #$*G$
/(y-'q/'.-'.e'1 SW   %'.#'.e'1 SW   i'9!Sei') .ei.[ Sie.; Si   ''Ie'a S1   %&.#(9   ,2)ASSIGNED TO '28DEFINE   %2DTIME  &2MFIELD &2VGROUP (2OVERLAP  &2kCLASS *2tPROFESSOR   )2.PROFESSOR%2.LIST  )2.HOW MANY !2$.  !2*?  %20CLASS !29   #2?ES #2EAT #2KIN $2QAND   #2ZOR &2_WHICH #2iIS $2oARE   $2xNOT   +2.EVERYTHING  /2.DESCRIPTION OF $3"ALL   "3+S  -31SCHEDULE FOR   $3CWHO   '3LDELETE   $3XADD   #3aTO '3gCHANGE   13sCOMPUTE SCHEDULE  %3.READ  %3.FROM  &3.WRITE #3#ON 03)MINIMUM CLASSES   03>MAXIMUM CLASSES   13SMINIMUM SECTIONS  13hMAXIMUM SECTIONS  %3                                   OST  ,3.EXCEPTION:  '3.IGNORE   /4!CHANGE COST OF #43TO (49REQUEST  '4EDO NOT   '4QASSIGN   )4]TO CLASS (4iAT TIME  $4uTIME  %4.FIELD %4.GROUP '4.OVERLAP  !4.E  &4".  .../4+ARE YOU SURE?  #4=NO $4CYES   !4L[  !4RS  &4XTIMES:'4aFIELDS:  '4mGROUPS:  )4yOVERLAPS:(4.CLASSES: +4.PROFESSORS: (5 NAME OF   !./ w?TK. x\QT4.N !.?"U. g6TK. f\RA4.T !./ u3 (6TK]Tq6Ti6T[. c?_c. e6TK. d\R9?".>                                                                                                                                                                                             i3 !. r?T\. .< w_Qp Qw Q. Q. Q. R  R(\Lh Nl? u=T[ Q                    .[\Lh T. QR((  \S.\L.]Tr^HB? b.!.\J.>  \R-> !\R-&Tc. =T_4.[3! >  &Tc. @. >  &Ts\R1> !8 @ Q.< d? fn !4.[\S.\L.^Q5? b.!.\Lh Nl4.[3 !. .. .\S14.[ !.._e\R94.- !.._g\RA4.1 !.\R18_f4.5 !.? e6 d6T[^_c?_e8 e4.9 !.? g6 f6T[^"U?_g8 g4.A\J.3 !. I\_.\N4 N. !./ r4.O !.. ./ .; ./ .? w4Tg\R? b\J.9 .? .4.R !.< d> !&Tc4T_4.\R1? fn !? u=TN4.? u4Tt Rs?Tu3 "; '6Tv Rw?Tw3 "; '6Tx6Ty\R53 !\R54. !.\R\R.< gy.]T_4.| !.Y @=Tz R.=Td R.\J. R.3 "; 2&T{4.. !.\R\R.. @? d\J.[ k3 ![ k\M)&Tc6 @._s]T_4.. !.\RR? d\J.[ k[ m? r6 .3! ? w4Tg R+ S.? .>T|<TR0 R2<T. R5Z k3 "_R:Z k3 "_R:3 !. r4.. RG RG Ry Ry R| RG RG RG RG S_ S_ So\M) !./ .\R< f> !&T>. @> !;H'&T>. AY B]T_3 $<T.? .4T_> !o  ? A=T\ Rm? @6TK= A Rm?TQ= @ Rm? A3 "; '6 @6Ty< fn !4.H\J. RS !.5T\ RI? .\R54.o ! 5T\4.u RI\Ro\M$ R8\Ro\M$8_f? g6TK. h? b3 "[ k[ k R.. FZ m R.&T.6T                                                                                                                                                                                            R1\S)\KG?!$4T_ S$]T.^HD^Qq? F&T|;H.3! ../]T_< F.  ^H@ R.?_h;H26TK9_f R8\ @4T. R.\ @ R. !!?_h&T{4T{ S/ N\?T.9_h4.) !"\RR3 "/ lZ k RI< h?_h; !;H3. @>Tc8 @ SA SK> !>  < . S>&T|=T. RI\SQn   SN\S)\SQ\R53 !. r4.2 !#? r6 .=Th S\\L.^Q5\R.]T_6T. S^\M$?T                       .4.Q5T\ RI/ l? b[ m3 (\Zy RI\M$? .&T|4T. Sv? . S|\Ru?T.9 .Z k Su RI\M$? .3""; 66 .>T\/ .\R5 R8 !$3 !. I? u]TN3! .N.\N44..? r3 "; .9 .? .Z k RI?_s'Te._s\M$ R8 !%/ w?TK. x3 !. v?T\. t4.. !&\S.. v4.. !'/ v4.  !(\M$? .4T_ S+\SI?TK. .? b\J.> !' .n !4.# !)? .;H!4T_ S8\SI?Te. .4T. S< N\< c|./ @?_c= @4.1> !' .n !> "8 @8 @ S? !*< c|./ @?_c= @4.I> !&Tcn !> "8 @8 @ SM !+3 !. .4.W !,? .6TK. t? c> u[ .? .. .4.[ !-; ./ .4.e !.\L.? b\J.9 .? c6T[3 "[ A3! |  / @?_c= @ S.> !> .< . S.? .3 $6TK. [? .Z A> [3 (4T_ S.> !' .n !?T
9 A> "8 @8 @ Su?T\. .4.i !/?TN. x< w_S. T. T* V. V. W# W) T7 Y!0?Tg9 v4.. !1\J7 W) !2?TK. x?TN. v?Tt. w?T\. t\T# !3?Th. w?TK. x\JN S.\KG?!+.!$.!%3 !.!+?T[. x Nl\Jt Nl !4/ @>TK\QN> @\Q[ !5^Pv Nl  ! Jj I.  $)         H. I0 H" ". "& ".... (  H   "... YZ M....     > Op .  /     Y  #  ' "5 ": "? "D "I "N  ^ ..  %  :...  &     #  !  ! _ ....  #_  _ !    .  @#..           !_ !_ "  "_  @    < u_T T. T. T. T. T. T.\T. Nl\T%\T. Nl T.3 !. z T. T. !6? e6Y8._c[ i."./                     .. !7? g6Y8."U4.%\W.\W:< c|./ Y< Y?_c= Y Nl> !;H.=Y9 TH? Y\U.\U.\Vu?Y:. .?Y;.!"? Y< u_TA Ta T TU TK TM TK8 Y8 Y T/\Uh T/'Y<<Y=\T.? Y'Y><Y=\T. TK>Y?/ .'Y@<Y=\T.? Y'Y@<YA\T. T.'YB Tb'YC. .<Y=\T.? .<YA\T.> c?YD. c\SI/ c?YE. .? .<YF\T.?YG. .<"?/ .?"A= . T.u ! T.? .'Y@<Y=\T.? .'Y@<YA\T.8 .8 .< . Tv? w4YH T. Nl?YI. .?YJ.!"?Y<<Y=\T.?Y><Y=\T.?YK. .?YL<Y=\T.? w4YM TK Vu !8. .>  > "3 @[ D?_E= D4..< c[ D/ c\J.[ L/ c?YN.!<? .\a" U3 _.8 D8 D U$?_s; !;H36Y83 $ U@?YO< Dy !>Y8\U. U3<_s; !;H3. .?_s6YP> s[ k8 . UR< c[ D/ c\U./ c U38 s?_s>YQ< . UJ> k/_l=YR U?? s>Y8\U1< D>Y8\V* U3? s. .?_s&YQ< c>YS/ c\J./ c[ m? L[ k3 !\Zy Ur U-? .. s8 M>Y8\U. U-? s. .? L3 "[ k?_s&YQ'YCZ k Ur U- !9/ r? s. .< c[ D/ c\U./ c? .> r\U1< D> r\V*4.. !:<YT?_Y\J!> A?".]YM6                     ,[ [? @. AZ [ U#W @ U.? A\YM."./                                YU>YV[ a?_Y;H03 $?_Y&YU\UG4.. !;[ F. a6 G. b? b="U UB6 G6Y8."U?YQ>YW[ a[ F\UG4.1?_b._a8 b8 a U6 !<[ F?YX. >?YY= >4.G? >6YZ. .<_>/ Z?_.= Z Ue?_b& a= F Ua6 G. @?Y[' a&_b' @._b8 Z8 Z< Z US?Y\9 > UK !=? Y6YZ3 $? Y[ a? b=_c U.6YM._c?"S. Z? Z="U Uy4.h?_Z&YQ. F8 Z8 F U. Uu?_Z&Y];H.'Y^. @?YO;_@< ufU.=Y9 U|?_Z&YQ= Y U|6YZ9_Z&Y9_Z U|?_b._a8 b8 a Un2( )_ $  @   P  !>\J.[ @3 ![ @4..&YQ=Y94..5 z/ z4.. !?> !>  &YQ=Y94.*/ @3!(3"@y  >  &YQ. B3 !. A<Y_8 A>  > %= @ V:? B< AtVn4.*=Y9 Vg3 0> !>  &Ya9 A4Y\ VP9 A4Yb4.* VS9 A4Yc4.*>  / B;H'> B&Ya9 A4Y\ V9 A4Yd4.* Vb9 A4Ye4.*> !&Yf4Y94.*< A?_@&Y._@>Vn6Y83 ,\U14.*              "  " !@< Y> !&YQ=Y94.u3 "o !3!$>  6Y83 ,\U14.u(  \T%?Yg>YW[ a< d/ Y>_b?!.\J./ .?_b/_b< Y._b\_a? w4Y\ V. Nl3 "/ z>Y;/!"4YH Vu? u4YM Nl\SI?YO< .y !?Yh Ts< .> !&YQ=Y9 Nl3! 6 . B>  &YQ. @6 =Y9 Nl. A? n  ? L3 "[ k/ C8 A Vj? @n  ? C=Y9 U33  6 . B\QT>YQ< D| !>  &YQ. @. A6 C\R1< . VT/ h8 C Va> !>  8 A VN\T%< D> !> fo !8 @> @\U1 U38 B5 B VR?_B&Yi6YC\R1\S) VR8 B?_B&Yj._BZ k V;?_B'YO._B8 C V;? .> c[ D< D> !&YQ=Y9 Nl3! >  &YQ.!.u   V/ s>  . .&Y]=Yk V.>Y8\U. Vu> !8!. V. Nl=YB V.?_s; !;H36Y83 $\U. T.>Y8\U.? u4YM T.\SI?YO< Dy ! Tr[ i."./                                Yl>YV V.?YZ. x? v=YZ W/ X.\W2\Jt Nl !A3 "? v4Y8 W;? u=YZ/ v W@4YZ W@? u=YH N\\W.\W:< u>.I. .>.J? v=Y9/ . WP Y9 Y9 P\ P Pc Pf3 !. >< c|./ Y\KG?_c= Y W.> !;H.=Y9 W./ Z/!.8 Z8 Z< Z?_c= Z Wt> !;H.=Y9 W?_Y<YT\J!?_Z<Ym\J!> C< ZY @/ Y W< Y> !&YQn !8 >5 v W| W.\KG? .4Y9]Yn^ ..  ? v4Y9 W.]Yo]Yp W.>Yq4Y8>Yr/ @\_@\KG<!./ Y WV8 Y8 Y< Y WV5 v W.X >? v4Y9 W.^Pv\KG4.2 !B5 t W$? v4YZ4..< z_W'4.. W* W.4..\Jt\KG^HI Nl\KG^HQ>Y8?!%4Y8 W54../!%\KG^HQ.!%4.. !C? t=YO4.:[ ./ u9 c. .? .. .?Y[. .< c|./ Y?_c= Y4.:> !& .;H!=Y9 W\? Y>Ys< u..[? t4Y9 W\< Y> !' .n !8 Y8 Y< Y WI [0 [,? .> >\[.? m\J.> !;H.=Y9 [^? t4Y9 WX W\ !D/ Z^H@3 !. .? Z\J.[ [? .;H.3! ? .[ [ W._W.? .6Yt4YR W.?Y<=YL Ws^Pv4.o W. W. W. XO XQ XS W. W. W. W. X. X
 X\M)&Yu W.\KG^HB\X. Ww. @;H'&Ya. A3 "? u4Y\ X+? A4Yd X' X5\KG^HB^Q[ X2? A4Ye X/ X5\KG^HB^QMX A^H@>Y[? @&Ya. A? u4Y\ XA? A4Yb X? Ww<Yv XF? A4Yc XE Ww<Yw3 (4Y9 XK\KG^HB.  X A^H@ Ww<PV W.<PY W.. A; !;H39 A&YQ<P\\X-8 A X] Ww\KG^HF[ [\M). B&Y];H.3! ? B&YQ_Xb Xl Xn Xr Xt<PV Xo<PY^Qq\X. XZ<PV Xu<PY^Qu3! . @^ @>  . @^ @]Y9^Q5? B; !; 3. @X @^H@ XZ\KG^HB^Q                            Pc W.<Q. X<Q\KG^HB; !. @; !&YQ5 @^Q.^Q. W. !E>YQ<Y9 X. X#/ @^ @3! .  / @^ @^H@; !; 34Y9 X(4... @^QiX @^H@4.. !F\KG^HB\X.4.- !G? >> Y[ .?Y[. .3  >Yx< u..[?"2="0 X
< k? u4Y\ XG?YY>b2\[.< m3 "[ k/ |[!>[ .3 ![ k\M)&YQ.!?U"]6Y8.!>8!?? k\[v[ .[!>?Y[. |3 !. .\Z. X
&YQ. >3 (&YQ. Y?"0. Z?_Z&YQ4 Y X.?_Z;H.9 Z4Y9 Xj>_Z<YS? u4Yy<YY3  \[.\KG^HB<Yz? u4Yy<Y{.  ? m\J..  \KG^HF^PV^_> Z8 Z? Z="2 Xf Z?Y[. .[ .. >/ Y4.26YM. v. .\KG>YH4YZ3 "/ u\KG? .. v8 u? u=Yy Y!\Jt Nl3 $\Q[< c>  v.=Y[ X.< u..13  4Y\ Y.^Q.^Q0]Y|\W2 X. Q. Q. Q. Q. Pz Pk  !    U? IY"   "N"_  U6!_  "I!   _  "A U< "? UB  $ Ub IT Ux#    #  L   $   .!   "K  @ .._  _ ! "5 "P  "...  %#_  H ._  ":  .  !  #  !   .   Vu V&#....."_  U.  B  [  ;    Wo X2 Wb _ .0  Qb QT [^  & Pc Pf  :\KG?[.. x< z_Y. Y. Y. YK Y.?[.. z?!?3" 3! ?"b>"q[ @3 !. .?_@]_A9 .8 @8 A0Y.^HY? .>bg5[.\bg. @X @ Nl?[.>[.[ @<[.?_@6[.._A?[.9 @9 A0Y"<[.3 !n!F0Y+\M,.!A\MN?[.. z<[.\Y.<[.\Y.?!?=[. YK?[.. @<[.?_@n!I?[.9 @0Y<?[.\]A3 !. {?[.>[.\ZJ Y.?[.. z^Hb? {4[.^H9?Hn. [?[.>[.\ZJ?H|. [?[.>[.\ZJ Nl?[.. {. z3 !. >. B8 >?!>6[.= > Y3 #[ @. .8 .?!?6[.= . Y|? .U"X4 > Yv<\ ? .U"qy   Yh? .U"]4 > Yh<\! Yr? @4 A Y. Y_?[.. B^H.X >][.^PX A]\"^H.X @\KG Y_5 B YK\K.?!?>"q\Y.?!>>"v\Y.3 ! YJ !H/ @3" 3!!._@8 @0Y.4.. !I/ c>.. .?_c= .4..? .\J.[ @3 ![ @ Z3&\#._s? c4[. Z3? @\[v8 .8 . Z#4[. Za YI4[. Za\KG? [4[. Z@ ZD^ [\KG3 !. [? @\J.>  . \^ \ Za !J[ B?\$. @3 !. A[ @ _B&\%4[. _C. .?\&Y @ _B3 !. A. .?\'Y @ _B3 ! _C?\(9 @? @\J.="K ZN4.J !K. B? BY m4.h. A; !; 3. @? AZ k Zj. A; !; 38.h4.h !L. C3 !. .?\). .?\'\Zh Z.6 @= .. . Z>?\)= .4.y3 !. .. >. .?\&\Zh Z,? @9 .8 >5 C Z<"./ @>\%?".= @ Z$> "8 @8 @>.< A Z.'\*n. Z".? A'\*.b.".3 !.b. Z? >=[.4.y? .\ >9 .? m\J.6\+Z k Z:; !; 39 .3 !. l8.y4.y !M3 ![ k\M). F&\%4[. ZZ.!A.!E?[..!@? F; !; 3.!B< s>.&\,.!C>.;H'&\,.!D\MN6 F._s&\%. <\-5 | Z.3 ![ m\M). F&\%4[. Z{.!@.!E?[..!A< s>.&\,.!C9bg>.;H'&\,.!D9bl? F; !; 3.!B\MN6 F._s&\%. .<\.5 | Z.4.>6[.4!?_  8!?8!>_   !N?..6[.. ?".. _< _?".= _4..8 _8 _.  5 . _u   Z _ !O3 "/ l>[.Z k ["&\/=[.4../!D/!C4.. !P\Z.4.$5[. Z/!A/!C/!D/!E; !; 3.!B>  6\0\Z.\MNn ! Z !Q?"
. [?"= [ [U?_[&\%.!@?_[;H.. \. ]4 > [Q? [. ^8 ] [J4.68 ^\Z. [Q&\%4_^ Z [G? \6[.9 [ [9\M,.!A;H.6 >; .".b8!C\Z. [g&\%".b3 (U"].!@\M8 Z?!A.!@8!C4.6 !R? .U"X> .[!A? m\J.6\1\Z.\M84.k !S3 "[ k?".6[..".?"
6[.."?"I6[.. Y8 Y8 Y?"K= Y [*? Y6"I3 "; .6\$[ m?[.\Zy [.3 !. n\Z>? U"].!@\[$\Z.\M)3 (U"].!@3 #[!B[!D? >4[.\[6\[k3 !. l\Z. [.&\2n   Z(  4.v !T<[.\[44., !Us  \[44.0 !V/ .\J.[ k/ @?\3>[.5 @3 ,[ .?[.5 @?[.. .\[D4.4 !W?"0. N6[.."23 ![ k4.D&\%=[.4.D"2.b2?_N&\%U_.4 . [[8 N? N="2 [Q4.D. .3 !. >8 >? >=!? [g8 N? N="2 [Q4.DU_.4 . [^5 . [p? >U"q=[. [^? >U_.. @"2? >.b2?_N;H.?"26 N; .._N? @4 . [^ _. !X/ @6[.3 "[ m3 ![ m [&\%4 @ [4..?\(6 m [.  "... "X "Z...  !  %... "K "P !> YI Z6    Z; Za Z9  @  A  ,._  "I . _ !       ?   "    . Z^ Z>_  "_ "_ ... "][!k/!m6^3 % \@[!k/!m \?[!k/!m?^>^[!ns  /!{?_ /!t< x/ y<^_/ x<!ty  3 (v                                                                                                                                                                                                 . \2\MZ> #>  > %4^a \Q?^b.!p>  &^c.ap8!p>.4^a \W<!x3 "o $> %>  4^a \_/!w> %;H23! t\j \l \j \k?!z.aw<!x?!yv  n $4^a\\;> !.!y> %3  &^c=!t \p3 !.!u>  v.9!u?!|=!u \.3  &^c> %4!w \.?^d9!{?!n3" 9at>.?!u6!|9aw?!|6!u9aw>.3  &^c=!t \.> %v !n $\\; \.?!|5!{y !3 !.aw<!x/!p> #4^a._#<!p> %>  4^a \%<!t?!o5!{ \L[!k<!m5!{ \7 a{9 y. x? y4   !v/!q>                                                                                                                                  " \F<!q> $y  y !y "4.;v "6^3 $> "u $ \U6^e.!rv $.!s3 0?ar.as0\Q \@.!rv $.!s3 0?ar.as8!r8!s0\Y \@=_ ._ 4  ?_ =^a3" 4  3 @<_ ?a3 04  ?a.6_ 4  ?a.6_ 3" 4  >_ ?^f5^d4  ?^5^f4  3 !4   !.>"%=^a a.="$4.{ a. !.3 @<a.?a3 0<a.6a3 06a..!.4.. !..""Va.="" \.4.?!.=^a \.Va
="" \.4.8.4. !>.""Va
="" ]"4..3 !=!. ])Va.="" ])4..8..4.. !.Wa.4^a ]3Wa.4^a ]64.+Wa.4^a4.+8.+4.+ !.<!.Wa.!.Wa.6!.6^.!.4.8 !                              ^g/ x3! . ,/!.>^c/"$3 "/"%\\{6^h. @8"%<^i?_@\\{n!.0]P8"%?^j."!<"!>!.."#<!.>!.?"!=^_3 03  6"#."$<^k?"$                                                                                                                                 . ]i?"#                                                                                                                                 . ]k0]c ]q3  6^l>"%4"! a. ]i8"! ]W8"%<^m?!.6^ny!0]w?!.3" .!.3! ?!.."$?a.\\{?a.\\{0]>8"%<^o>!.6^n6^n!.6^6!.n!.0].?!.3" .!.<!.?a
=a. ].>"% a.0].?^p.!.3 !.!.<!.\\.3 !\\. ]&3 !\\ ]+0].4.A?^.!.?a.>a. ]/?^f.!.?a.>a.." /!.3  '^d6!.6^4!. ];<!.>a5^f ]H.!.<!.3 !.a..a.0]><!.W" ]!..aW!.]!..a.?!..!.3 !.!.<!.\]+ ]w\\.Wa.4^a ]T ]b?^f\\ ]w3 @?a.<a..a3 ('^d6!.6^.a.3 0 ]p?^f\\. ]w?a.3" 3 $<a./a3 $'^d6!.6^3" .a.?^.!.<" ?a3 04^a ^+0]M?!.4^a ]J?!..!.<!.\]+ ].\\.Wa.4^a ].Va.=^a ].?!. ].Va
=^a ].?!.3" X!.0].?!.4!. ^#?!.6!.6^3! Va.4^a ]. ].Va
4^a a.W!..!.4!. ^# a.<!.?!.>a.5^f ^)9a.0^% ].?!..!.?!..!.\]8Ua.. @?a<!.6a. AW A] @3" <!.6a..!.<!.?a.<!.=^f ^H?!.=^a ^FVa
 ^NVa. ^N3 !=!. ^MVa. ^NVa
=^a ^QX!.?!..!.4!. ^/\]8Ua.]!.<!.9a.?!..!.4!. ^U ].  !  %    !| .   _ !...  #_ -...  (...  *..._  ......                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                             >>>>>>?????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????


FIELDS:

COMMUNICATIONS; 
COMP HARDWARE; 
COMP SOFTWARE; 
COMPUTERS; 
CONTROL; 
ELECTRONIC CIRCUITS; 
EM THEORY, PLASMAS; 
GENERAL; 
NETWORKS, SYSTEMS; 
SOLID STATE; 
SPECIAL; .



CLASSES:

[CLASS 100; 
  FIELD GENERAL; .

[CLASS 101A; 
  FIELD GENERAL; .

[CLASS 101B; 
  FIELD GENERAL; .

[CLASS 103; 
  FIELD SPECIAL; .

[CLASS 104; 
  FIELD NETWORKS, SYSTEMS; .

[CLASS 105; 
  FIELD ELECTRONIC CIRCUITS; .

[CLASS 108; 
  FIELD SPECIAL; .

[CLASS 111; 
  FIELD GENERAL; .

[CLASS 114; 
  FIELD GENERAL; .

[CLASS 115; 
  FIELD ELECTRONIC CIRCUITS; .

[CLASS 116; 
  FIELD EM THEORY, PLASMAS; .

[CLASS 117; 
  FIELD EM THEORY, PLASMAS; .

[CLASS 119; 
  FIELD NETWORKS, SYSTEMS; 
  FIELD CONTROL; .

[CLASS 123; 
  FIELD NETWORKS, SYSTEMS; .

[CLASS 124; 
  FIELD COMMUNICATIONS; .

[CLASS 125; 
  FIELD ELECTRONIC CIRCUITS; .

[CLASS 126; 
  FIELD SOLID STATE; .

[CLASS 128; 
  FIELD CONTROL; .

[CLASS 130; 
  FIELD SOLID STATE; .

[CLASS 131; 
  FIELD SOLID STATE; .

[CLASS 132; 
  FIELD EM THEORY, PLASMAS; 
  FIELD COMMUNICATIONS; .

[CLASS 133; 
  FIELD GENERAL; .

[CLASS 134; 
  FIELD SOLID STATE; .

[CLASS 135; 
  FIELD EM THEORY, PLASMAS; .

[CLASS 136; 
  FIELD SOLID STATE; 
  FIELD EM THEORY, PLASMAS; .

[CLASS 148; 
  FIELD COMPUTERS; .

[CLASS 151; 
  FIELD COMP HARDWARE; .

[CLASS 152; 
  FIELD COMP SOFTWARE; .

[CLASS 153; 
  FIELD COMP SOFTWARE; .

[CLASS 160; 
  FIELD COMMUNICATIONS; .

[CLASS 163; 
  FIELD COMP SOFTWARE; .

[CLASS 166; 
  FIELD CONTROL; .

[CLASS 170; 
  FIELD EM THEORY, PLASMAS; .

[CLASS 171; 
  FIELD EM THEORY, PLASMAS; .

[CLASS 204; 
  FIELD EM THEORY, PLASMAS; 
  FIELD SOLID STATE; .

[CLASS 205; 
  FIELD EM THEORY, PLASMAS; .

[CLASS 206; 
  FIELD EM THEORY, PLASMAS; .

[CLASS 210; 
  FIELD EM THEORY, PLASMAS; .

[CLASS 216; 
  FIELD EM THEORY, PLASMAS; .

[CLASS 217; 
  FIELD EM THEORY, PLASMAS; .

[CLASS 222; 
  FIELD NETWORKS, SYSTEMS; 
  FIELD CONTROL; .

[CLASS 223; 
  FIELD NETWORKS, SYSTEMS; .

[CLASS 224; 
  FIELD NETWORKS, SYSTEMS; .

[CLASS 226; 
  FIELD CONTROL; .

[CLASS 227; 
  FIELD CONTROL; .

[CLASS 228; 
  FIELD CONTROL; .

[CLASS 229; 
  FIELD CONTROL; .

[CLASS 230; 
  FIELD SOLID STATE; .

[CLASS 231; 
  FIELD SOLID STATE; .

[CLASS 240; 
  FIELD ELECTRONIC CIRCUITS; .

[CLASS 241; 
  FIELD ELECTRONIC CIRCUITS; 
  FIELD NETWORKS, SYSTEMS; .

[CLASS 251; 
  FIELD COMPUTERS; .

[CLASS 252; 
  FIELD COMP SOFTWARE; .

[CLASS 253; 
  FIELD COMP SOFTWARE; .

[CLASS 260; 
  FIELD COMMUNICATIONS; .

[CLASS 261; 
  FIELD COMMUNICATIONS; .

[CLASS 263; 
  FIELD COMP SOFTWARE; .

[CLASS 264; 
  FIELD COMP SOFTWARE; .

[CLASS 265; 
  FIELD COMMUNICATIONS; .

[CLASS 266; 
  FIELD COMMUNICATIONS; .

[CLASS 267; 
  FIELD COMP SOFTWARE; .

[CLASS 270; 
  FIELD EM THEORY, PLASMAS; .

[CLASS 290A; 
  FIELD NETWORKS, SYSTEMS; 
  FIELD CONTROL; .

[CLASS 290C; 
  FIELD NETWORKS, SYSTEMS; .

[CLASS 290D; 
  FIELD EM THEORY, PLASMAS; .

[CLASS 290F; 
  FIELD EM THEORY, PLASMAS; .

[CLASS 290H; 
  FIELD EM THEORY, PLASMAS; .

[CLASS 290I; 
  FIELD COMMUNICATIONS; .

[CLASS 290K; 
  FIELD CONTROL; .

[CLASS 290M; 
  FIELD COMMUNICATIONS; .

[CLASS 290Q; 
  FIELD EM THEORY, PLASMAS; .

[CLASS 290T; 
  FIELD COMP SOFTWARE; .

[CLASS 290W; 
  FIELD COMMUNICATIONS; .

[CLASS E1; 
  FIELD COMPUTERS; .

[CLASS E17; 
  FIELD SOLID STATE; 
  FIELD ELECTRONIC CIRCUITS; .


PROFESSORS:

[PROFESSOR ANGELAKOS; 
  FIELD EM THEORY, PLASMAS; .

[PROFESSOR BACKUS; 
  FIELD COMP SOFTWARE; .

[PROFESSOR BAKER; 
  FIELD COMP SOFTWARE; .

[PROFESSOR BIRDSALL; 
  FIELD EM THEORY, PLASMAS; .

[PROFESSOR BLACK; 
  FIELD GENERAL; .

[PROFESSOR CHAI; 
  FIELD SOLID STATE; 
  FIELD EM THEORY, PLASMAS; .

[PROFESSOR CHANG; 
  FIELD EM THEORY, PLASMAS; .

[PROFESSOR CONN; 
  FIELD COMP SOFTWARE; .

[PROFESSOR CURTIS; 
  FIELD COMPUTERS; .

[PROFESSOR DALZIEL; 
  FIELD GENERAL; .

[PROFESSOR DAVIS; 
  FIELD SOLID STATE; 
  FIELD EM THEORY, PLASMAS; .

[PROFESSOR DAVISON; 
  FIELD CONTROL; .

[PROFESSOR DESOER; 
  FIELD NETWORKS, SYSTEMS; 
  FIELD CONTROL; .

[PROFESSOR ENGLISH; 
  FIELD SOLID STATE; .

[PROFESSOR FINCH; 
  FIELD GENERAL; .

[PROFESSOR FRANK; 
  FIELD NETWORKS, SYSTEMS; .

[PROFESSOR FRISCH; 
  FIELD NETWORKS, SYSTEMS; .

[PROFESSOR GILL; 
  FIELD NETWORKS, SYSTEMS; 
  FIELD COMP SOFTWARE; .

[PROFESSOR GRAHAM; 
  FIELD COMP HARDWARE; .

[PROFESSOR HAINES; 
  FIELD COMP SOFTWARE; .

[PROFESSOR HARDY; .

[PROFESSOR HARRISON; 
  FIELD COMP SOFTWARE; .

[PROFESSOR HO; 
  FIELD NETWORKS, SYSTEMS; .

[PROFESSOR HOPKIN; 
  FIELD CONTROL; .

[PROFESSOR HORNBUCKLE; 
  FIELD COMP HARDWARE; .

[PROFESSOR IWENS; 
  FIELD CONTROL; .

[PROFESSOR JURY; 
  FIELD CONTROL; .

[PROFESSOR KLUIVER; 
  FIELD EM THEORY, PLASMAS; .

[PROFESSOR KUH; 
  FIELD NETWORKS, SYSTEMS; .

[PROFESSOR LAMPSON; 
  FIELD COMP SOFTWARE; .

[PROFESSOR LENZLINGER; 
  FIELD ELECTRONIC CIRCUITS; .

[PROFESSOR LICHTENBERG; 
  FIELD EM THEORY, PLASMAS; .

[PROFESSOR LICHTENBERGER; 
  FIELD COMP SOFTWARE; .

[PROFESSOR LIEBERMAN; 
  FIELD EM THEORY, PLASMAS; .

[PROFESSOR LOVE; 
  FIELD COMPUTERS; .

[PROFESSOR MANGASARIAN; 
  FIELD CONTROL; .

[PROFESSOR MAURER; 
  FIELD COMP SOFTWARE; .

[PROFESSOR MEI; 
  FIELD EM THEORY, PLASMAS; .

[PROFESSOR MORRIS; 
  FIELD COMP SOFTWARE; .

[PROFESSOR MORTON; 
  FIELD COMPUTERS; .

[PROFESSOR MULLER; 
  FIELD SOLID STATE; .

[PROFESSOR NEUREUTHER; 
  FIELD EM THEORY, PLASMAS; .

[PROFESSOR OLDHAM; 
  FIELD SOLID STATE; 
  FIELD ELECTRONIC CIRCUITS; .

[PROFESSOR PARLAR; 
  FIELD GENERAL; .

[PROFESSOR PAZ; 
  FIELD COMP SOFTWARE; .

[PROFESSOR PEASE; 
  FIELD SOLID STATE; .

[PROFESSOR PEDERSON; 
  FIELD ELECTRONIC CIRCUITS; .

[PROFESSOR PIRTLE; 
  FIELD COMPUTERS; .

[PROFESSOR POLAK; 
  FIELD CONTROL; .

[PROFESSOR RIGBY; 
  FIELD ELECTRONIC CIRCUITS; .

[PROFESSOR ROBERTSON; 
  FIELD GENERAL; .

[PROFESSOR ROHRER; 
  FIELD NETWORKS, SYSTEMS; .

[PROFESSOR ROOT; 
  FIELD COMMUNICATIONS; .

[PROFESSOR SAKRISON; 
  FIELD COMMUNICATIONS; .

[PROFESSOR SCHORR; 
  FIELD COMPUTERS; .

[PROFESSOR SCHWARZ; 
  FIELD EM THEORY, PLASMAS; .

[PROFESSOR SHARP; 
  FIELD COMPUTERS; .

[PROFESSOR SIEDMAN; 
  FIELD COMMUNICATIONS; .

[PROFESSOR SILVER; 
  FIELD EM THEORY, PLASMAS; .

[PROFESSOR SILVERMAN; 
  FIELD CONTROL; 
  FIELD NETWORKS, SYSTEMS; .

[PROFESSOR SINGER; 
  FIELD EM THEORY, PLASMAS; .

[PROFESSOR SLAGLE; 
  FIELD COMP SOFTWARE; .

[PROFESSOR STRUTT; 
  FIELD SOLID STATE; .

[PROFESSOR STUDER; 
  FIELD GENERAL; .

[PROFESSOR SUSSKIND; 
  FIELD EM THEORY, PLASMAS; .

[PROFESSOR TAUSSIG; 
  FIELD COMP HARDWARE; .

[PROFESSOR THOMASIAN; 
  FIELD COMMUNICATIONS; .

[PROFESSOR TURNER; 
  FIELD EM THEORY, PLASMAS; .

[PROFESSOR ULRICH; 
  FIELD COMP SOFTWARE; .

[PROFESSOR VAN DUZER; 
  FIELD EM THEORY, PLASMAS; 
  FIELD SOLID STATE; .

[PROFESSOR VAN SLYKE; 
  FIELD CONTROL; .

[PROFESSOR VARAIYA; 
  FIELD CONTROL; 
  FIELD NETWORKS, SYSTEMS; .

[PROFESSOR VOGELHUT; 
  FIELD EM THEORY, PLASMAS; 
  FIELD SOLID STATE; .

[PROFESSOR WANG; 
  FIELD SOLID STATE; .

[PROFESSOR WEINER; 
  FIELD SOLID STATE; 
  FIELD EM THEORY, PLASMAS; .

[PROFESSOR WELCH; 
  FIELD EM THEORY, PLASMAS; .

[PROFESSOR WHINNERY; 
  FIELD EM THEORY, PLASMAS; .

[PROFESSOR WHITE; 
  FIELD SOLID STATE; 
  FIELD EM THEORY, PLASMAS; .

[PROFESSOR WONG; 
  FIELD COMMUNICATIONS; 
  FIELD NETWORKS, SYSTEMS; .

[PROFESSOR WOODYARD; 
  FIELD EM THEORY, PLASMAS; 
  FIELD SOLID STATE; .

[PROFESSOR ZADEH; 
  FIELD NETWORKS, SYSTEMS; .


>>>.

[PROFESSOR PIRTLE; COST 14; 
  TIME TUTH8-9:30; 
  FIELD COMPUTERS; 
  ASSIGN TO CLASS EECS252; .

[PROFESSOR SCHWARZ; 
  TIME TUTH11-12:30; 
  FIELD SURVEY; .

[PROFESSOR SMITH; 
  TIME TH9-1; 
  FIELD ANTENNAS; .

[PROFESSOR SPIRA; 
  TIME MWF11; 
  FIELD SYSTEMS; .

[PROFESSOR TURIN; 
  TIME MWF10; 
  FIELD SYSTEMS; .

[PROFESSOR TURNER; 
  TIME MWF11; 
  TIME TUTH11-12:30; 
  FIELD FIELDS; .

[PROFESSOR VAN SLLYKE; 
  TIME MTUWTH1; 
  FIELD SYSTEMS; .

[PROFESSOR WANG; 
  TIME TUTH12:30-2; 
  FIELD CIRCUITS; .

[PROFESSOR WELCH; 
  TIME TUTH12:30-2; 
  FIELD FIELDS; .

[PROFESSOR WHINNERY; 
  TIME MWF8; 
  TIME MWF9; 
  FIELD SURVEY; .

[PROFESSOR WOODYARD; 
  TIME M1-5; 
  TIME TUTH10; 
  FIELD ANTENNAS; 
  FIELD SOLID-STATE; .

[PROFESSOR WOOLEY; 
  TIME MTUWF1; 
  FIELD ELECTRONICS; .

[PROFESSOR WU; 
  TIME MW12-2; 
  FIELD SYSTEMS; .


>>>.."  /KA'KC K:(K +KA K#"  '' !KE K)"   .. _  ..    #                                                                                                                                                                                                                                                                                K:/@c#L2/.L'2 L+/@,/@-&  /2%?\+L2/L2.@d L#"  (L     ,P                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                       /@.#?.'# #?.%?.%?/%?o+?./?..@. M#"  "  0 !"  /.L!?r'?r M4 M/"  0""%J 0!"%?o"   M-                                                                                                                Ma%?.%?/%?o0 !"  (M_    Mb/>q!?r'?. Mi"  "  (Mh    Mm/@.#M./@.#M./.'.%M.+M.+M./M..@. Mv"  "  (Mq    Mx/?.%?^%?R/?.%?^%?R/M.%?^%?R/.%?^%?R/.%?^"  "  %?P(M.    P  .       "  +?./?..@.(M."  +?. AA/@c#M>/>!?r'?r M1+M>/>!?r*@f!?s'M>%M@+M> M7+M>'>%M@+M>"  "  /M>.@d M$"  "  (M!    ,P    M./M>%?^%?P(M@%?^       Mo+?./?..Mv(MH/Mw#?.+?./?..Mx(MH/My#?."  "  (MH   '# #?./@.#?./Ms#?."  "  %M_%Mh"  "  /Mt#?./@.#?."  %M_%Mh"  %Mq"  %MH"   M[     (        7     I                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                            DIMENSION INPUT(50), IOUT(50), IN109(3)
       DIMENSION RA17(23)
       DIMENSION RAF6(10), RCAPIM(10), RAF7(10), RAF8(10)
       DIMENSION RT18(10), RT19(10), RT20(10), RT21(10)
       DIMENSION RT22(10), RT23(10), RT24(10), RT25(10), RT26(10)
       DIMENSION RT27(10), RT28(10), RT29(10), RT30(10)
       DIMENSION RT31(10), RT32(10), RT33(10), RT34(10)
       DIMENSION RT35(10), RT36(10), RT37(10)
       DIMENSION RT38(10), RT39(10), RT40(10)
       DIMENSION RT41(10), RT42(10), RT43(10), RT44(10)
       DIMENSION ISTAR(10), CFLOW(10)
C INPUT PHASE
498    DO 499 I=1,50
           INPUT(I) = 1
499    CONTINUE
       IN109(1) = 1
       IN109(2) = 1
       IN109(3) = 1
500    IF (INPUT(3)) 5001, 501, 5001
5001   TYPE 203
       ACCEPT 2300, RA17(3)
       IF (100.0 - RA17(3)) 500, 501, 501
501    IF (INPUT(4)) 5011, 502, 5011
5011   TYPE 204
       ACCEPT 2300, RA17(4)
       IF (100.0 - RA17(4)) 501, 502, 502
502    IF (INPUT(5)) 5021, 503, 5021
5021   TYPE 205
       ACCEPT 2300, RA17(5)
       IF (100.0 - RA17(5)) 502, 503, 503
503    IF (INPUT(6)) 5031, 5032, 5031
5031   TYPE 206
       ACCEPT 2301, RA17(6)
5032   IF (INPUT(7)) 5033, 5034, 5033
5033   TYPE 207
       ACCEPT 2301, RA17(7)
5034   IF (INPUT(8)) 5035, 5036, 5035
5035   TYPE 208
       ACCEPT 2301, RA17(8)
5036   IF (INPUT(9)) 5037, 5038, 5037
5037   TYPE 20911
       TYPE 209
       IF (IN109(1)) 50371, 50372, 50371
50371  TYPE 2091
       DO 504 I=1,10
           ACCEPT 279, RAF6(I)
           TYPE 280
504    CONTINUE
50372  IF (IN109(2)) 50373, 50374, 50373
50373  TYPE 2092
       DO 505 I=1,10
           ACCEPT 279, RAF7(I)
           TYPE 280
505    CONTINUE
50374  IF (IN109(3)) 50375, 5038, 50375
50375  TYPE 2093
       DO 506 I=1,10
           ACCEPT 279, RAF8(I)
           TYPE 280
506    CONTINUE
5038   IF (INPUT(10)) 5039, 5061, 5039
5039   TYPE 210
       ACCEPT 2301, RA17(10)
5061   IF (INPUT(11)) 5062, 5063, 5062
5062   TYPE 211
       ACCEPT 2301, RA17(11)
5063   IF (INPUT(12)) 507, 5064, 507
507    TYPE 212
       ACCEPT 2300, RA17(12)
       IF (100.0 - RA17(12)) 507, 5064, 5064
5064   IF (INPUT(13)) 508, 5065, 508
508    TYPE 213
       ACCEPT 2303, RA17(13)
5065   IF (INPUT(14)) 509, 5066, 509
509    TYPE 214
       ACCEPT 2304, RA17(14)
       IF (4.0 - RA17(14)) 508, 510, 510
510    IF (RA17(14)) 509, 509, 5066
5066   IF (INPUT(16)) 513, 5067, 513
513    TYPE 216
       ACCEPT 2303, RA17(16)
5067   IF (INPUT(17)) 5068, 5069, 5068
5068   TYPE 217
       DO 514 I=1,10
           TYPE 2171, I
           ACCEPT 2301, RCAPIM(I)
514    CONTINUE
5069   IF (INPUT(18)) 5141, 5142, 5141
5141   TYPE 2218
       ACCEPT 2301, RA17(18)
5142   IF (INPUT(19)) 5143, 5144, 5143
5143   TYPE 2219
       ACCEPT 2303, RA17(19)
5144   IF (INPUT(20)) 5145, 5146, 5145
5145   TYPE 2220
       ACCEPT 2300, RA17(20)
       RA17(20) = RA17(20) / (100.0 * 12.0)
5146   IF (INPUT(21)) 5147, 5148, 5147
5147   TYPE 2221
       ACCEPT 2303, RA17(21)
5148   IF (INPUT(22)) 5149, 5150, 5149
5149   TYPE 2222
       ACCEPT 2301, RA17(22)
5150   IF (INPUT(23)) 515, 517, 515
515    TYPE 2223
       ACCEPT 2304, RA17(23)
       IF (1.0 - RA17(23)) 515, 516, 516
516    IF (RA17(23)) 515, 515, 517
C INITIALIZATION PHASE
517    TYPE 248
       EQUIT = RA17(6) - RA17(18)
       DV = RA17(10) * (1.0 - RA17(5)) * (1.0 - RA17(12))
       LIFE = RA17(11) - RA17(13) / 12.0
       A = RA17(18)
       P = RA17(18) / RA17(19)
       T = (1.0 + RA17(20)) ** (RA17(19))
       RK = (RA17(20) * RA17(18) * T) / (T - 1.0)
       KTB = 1
       KTE = 10
       GROW = RA17(6) * RAF6(1) / 100.0
       RT29(1) = GROW + RA17(6)
       T = RK - RA17(20) * RA17(18)
C EDIT PHASE
700    TYPE 269
       ACCEPT 271,I
       IF (I - 3HY  ) 7011, 701, 7011
7011   IF (I - 3HN  ) 700, 709, 700
701    TYPE 270
       ACCEPT 271,I
       IF (I - 3HA  ) 702, 498, 702
702    IF (I - 3HS  ) 708, 7030, 708
7030   DO 7031 I=1,50
           INPUT(I) = 0
7031   CONTINUE
       IN109(1) = 0
       IN109(2) = 0
       IN109(3) = 0
703    TYPE 272
704    TYPE 273
       ACCEPT 274,I
       IF (I) 7042, 500, 7042
7042   IF (I - 109) 7041, 7043, 7041
7043   IN109(1) = 1
       IN109(2) = 1
       IN109(3) = 1
       INPUT(9) = 1
       GOTO 704
7041   IF (I - 123) 706, 706, 705
705    IF (I - 1093) 7051, 7051, 7055
7051   IF (I - 1091) 7055, 7052, 7052
7052   I = I - 1090
       IN109(I) = 1
       INPUT(9) = 1
       GOTO 704
7055   TYPE 275
       GOTO 704
706    IF (I - 103) 705, 705, 707
707    I = I - 100
       INPUT(I) = 1
       GOTO 704
708    IF (I - 3HN  ) 701, 709, 701
709    TYPE 276
C MAIN CALCULATION LOOP
       TYPE 283
       DO 120 I=KTB,KTE
           IF (I - 1) 7091, 7091, 7092
7091       RT18(I) = RA17(7) * (RAF7(I) / 100.0 + 1.0)
           RT20(I) = RA17(8) * (RAF8(I) / 100.0 + 1.0)
           GOTO 7093
7092       RT18(I) = RT18(I - 1) * (1.0 + RAF7(I) / 100.0)
           RT20(I) = RT20(I - 1) * (1.0 + RAF8(I) / 100.0)
7093       RT19(I) = RA17(3) * RT18(I)
           RT21(I) = RT18(I) - RT19(I) - RT20(I)
           JS = (I - 1) * 12 + 1
           JE = JS + 11
           RP = 0.0
           RI = 0.0
           IF (JE - RA17(21) + 1) 999, 994, 995
994        JS = JE
           GOTO 996
995        IF (JS - RA17(21) + 1) 9951, 996, 996
9951       JS = RA17(21) + 1
996        IF (JS - RA17(19)) 96, 96, 999
96         IF (JE - RA17(19)) 98, 98, 97
97         JE = RA17(19)
98         DO 99 J=JS,JE
               IF (RA17(23) - 2.0) 9801, 9810, 9820
9801           T1 = T * ((1.0 + RA17(20)) ** (J - 1))
               RI = RK - T1 + RI
               RP = T1 + RP
               GOTO 99
9810           RI = RA17(20) * RA17(18) + RI
               GOTO 99
9820           RI = RA17(20) * A + RI
               RP = RP + P
               A = A - P
99         CONTINUE
999        RT22(I) = RP
           RT23(I) = RI
           GOTO (100, 101, 102, 103) IFIX(RA17(14))
C STRAIGHT LINE
100        RT24(I) = DV / LIFE
           GOTO 104
C 150% DECLINING BALANCE
101        RT24(I) = (1.5 * DV) / LIFE
           DV = DV - RT24(I)
           GOTO 104
C 200% DECLINING BALANCE
102        RT24(I) = (2.0 * DV) / LIFE
           DV = DV - RT24(I)
           GOTO 104
C SUM OF THE YEARS-DIGITS
103        RT24(I) = (RA17(10) * (RA17(11) - FLOAT(I) + 1.0)) /
     C (RA17(11) * (RA17(11) + 1.0) * 0.2)
104        RT25(I) = RT21(I) - RT24(I) - RT23(I)
           IF (RT25(I)) 105, 106, 106
105        RT26(I) = 0.0
           GOTO 107
106        RT26(I) = RT25(I) * RA17(4)
107        IF (RT25(I)) 108, 109, 109
108        RT27(I) = -RA17(4) * RT25(I)
           GOTO 110
109        RT27(I) = 0.0
110        RT28(I) = RT21(I) - RT22(I) - RT23(I) - RT26(I) + RT27(I)
           IF (I - 1) 1101, 1101, 111
1101       RT30(1) = RT22(1)
           GOTO 112
111        GROW = RT29(I - 1) * RAF6(I) / 100.0
           RT29(I) = GROW + RT29(I - 1)
           RT30(I) = RT30(I - 1) + RT22(I)
112        RT31(I) = RA17(18) - RT30(I)
           RT32(I) = RT29(I) - RT31(I)
           IF (I - 1) 1121, 1121, 1122
1121       RT33(1) = RT24(I)
           RT35(1) = RT24(I) - (RA17(10) * (1 - RA17(12)) / RA17(11))
           GOTO 1123
1122       RT33(I) = RT33(I - 1) + RT24(I)
           RT35(I) = RT33(I) - (FLOAT(I) * RA17(10) * (1 - RA17(12)) /
     C RA17(11))
1123       RT34(I) = RA17(6) - RT33(I) + RCAPIM(I)
           RT36(I) = RA17(4) * RT35(I)
           RCAPG = RT29(I) - RT34(I) - RT35(I)
           IF ((RCAPG / 4.0) - (RCAPG / 2.0 * RA17(4))) 113, 114, 114
113        RT37(I) = RCAPG / 4.0
           GOTO 115
114        RT37(I) = RCAPG / 2.0 * RA17(4)
115        RT38(I) = RT29(I) - RT37(I) - RT31(I) - RT36(I)
           RT39(I) = ((RT21(I) - RT22(I) - RT23(I)) / RT32(I)) * 100.0
           RT40(I) = (RT28(I) / RT32(I)) * 100.0
           RT41(I) = ((RT28(I) + RT22(I)) / RT32(I)) * 100.0
           RT42(I) = ((RT28(I) + RT22(I) + GROW) / RT32(I)) * 100.0
           CFLOW(I) = RT25(I) + RT24(I)
           IF (I-1) 1151, 1151, 1152
1151       V = 10.0
           GOTO 1153
1152       V = RT43(I - 1)
1153       RT43(I) = CIRR(I,RT38(I),RT28(I),EQUIT,V)
           RT44(I) = (RT21(I) / RT29(I)) * 100.0
           IF ((RT19(I) + RT20(I)) / RT18(I) - 0.30) 117, 116, 116
116        IF ((RT19(I) + RT20(I)) / RT18(I) - 0.50) 118, 118, 117
117        ISTAR(I) = 3H*
           GOTO 120
118        ISTAR(I) = 3H
120    CONTINUE
C OUTPUT EDIT PHASE
       TYPE 277
6010   TYPE 270
       ACCEPT 271, I
       IF (I - 3HN  ) 6011, 611, 6011
6011   IF (I - 3HS  ) 6018, 6012, 6018
6012   DO 60121 I=1,50
           IOUT(I) = 0
60121  CONTINUE
       TYPE 272
6013   TYPE 273
       ACCEPT 274,I
       IF (I) 6015, 60211, 6014
6014   IF (I - 44) 6016, 6016, 6015
6015   TYPE 278
       GOTO 6013
6016   IF (I - 18) 6015, 6017, 6017
6017   IOUT(I) = 1
       GOTO 6013
6018   IF (I - 3HA  ) 6010, 6019, 6010
6019   DO 6020 I=1,50
           IOUT(I) = 1
6020   CONTINUE
C OUTPUT PHASE
60211  KTB = 1
       KTE = 5
6021   J = 0
       DO 6022 I=18,28
           J = IOUT(I) + J
6022   CONTINUE
       IF (J) 6023, 603, 6023
6023   WRITE(1,250)
       WRITE(1,254)(ISTAR(I),I,I=KTB,KTE)
       IF (IOUT(18)) 6024, 6025, 6024
6024   WRITE(1,218)
       WRITE(1,245)(RT18(I),I=KTB,KTE)
6025   IF (IOUT(19)) 6026, 6027, 6026
6026   WRITE(1,219)
       WRITE(1,245)(RT19(I),I=KTB,KTE)
6027   IF (IOUT(20)) 6028, 6029, 6028
6028   WRITE(1,220)
       WRITE(1,245)(RT20(I),I=KTB,KTE)
6029   IF (IOUT(21)) 6030, 6031, 6030
6030   WRITE(1,221)
       WRITE(1,245)(RT21(I),I=KTB,KTE)
6031   IF (IOUT(22)) 60321, 60331, 60321
60321  WRITE(1,222)
       WRITE(1,245)(RT22(I),I=KTB,KTE)
60331  IF (IOUT(23)) 6034, 6035, 6034
6034   WRITE(1,223)
       WRITE(1,245)(RT23(I),I=KTB,KTE)
6035   IF (IOUT(24)) 60361, 6037, 60361
60361  WRITE(1,224)
       WRITE(1,245)(RT24(I),I=KTB,KTE)
6037   IF (IOUT(25)) 60381, 6039, 60381
60381  WRITE(1,225)
       WRITE(1,245)(RT25(I),I=KTB,KTE)
6039   IF (IOUT(26)) 6040, 6041, 6040
6040   WRITE(1,226)
       WRITE(1,245)(RT26(I),I=KTB,KTE)
6041   IF (IOUT(27)) 60421, 6043, 60421
60421  WRITE(1,227)
       WRITE(1,245)(RT27(I),I=KTB,KTE)
6043   IF (IOUT(28)) 60441, 6045, 60441
60441  WRITE(1,228)
       WRITE(1,245)(RT28(I),I=KTB,KTE)
6045   J = 0
       DO 60451 I=KTB,KTE
           J = ISTAR(I) + J
60451  CONTINUE
       IF (J) 60452, 603, 60452
60452  WRITE(1,255)
603    J = 0
       DO 60311 I=29,38
           J = IOUT(I) + J
60311  CONTINUE
       IF (J) 6032, 604, 6032
6032   WRITE(1,251)
       WRITE(1,253)(I,I=KTB,KTE)
       IF (IOUT(29)) 6033, 60341, 6033
6033   WRITE(1,229)
       WRITE(1,245)(RT29(I),I=KTB,KTE)
60341  IF (IOUT(30)) 60351, 6036, 60351
60351  WRITE(1,230)
       WRITE(1,245)(RT30(I),I=KTB,KTE)
6036   IF (IOUT(31)) 60371, 6038, 60371
60371  WRITE(1,231)
       WRITE(1,245)(RT31(I),I=KTB,KTE)
6038   IF (IOUT(32)) 60391, 60401, 60391
60391  WRITE(1,232)
       WRITE(1,245)(RT32(I),I=KTB,KTE)
60401  IF (IOUT(33)) 60411, 6042, 60411
60411  WRITE(1,233)
       WRITE(1,245)(RT33(I),I=KTB,KTE)
6042   IF (IOUT(34)) 60431, 6044, 60431
60431  WRITE(1,234)
       WRITE(1,245)(RT34(I),I=KTB,KTE)
6044   IF (IOUT(35)) 60453, 6046, 60453
60453  WRITE(1,235)
       WRITE(1,245)(RT35(I),I=KTB,KTE)
6046   IF (IOUT(36)) 6047, 6048, 6047
6047   WRITE(1,236)
       WRITE(1,245)(RT36(I),I=KTB,KTE)
6048   IF (IOUT(37)) 6049, 6050, 6049
6049   WRITE(1,237)
       WRITE(1,245)(RT37(I),I=KTB,KTE)
6050   IF (IOUT(38)) 6051, 604, 6051
6051   WRITE(1,238)
       WRITE(1,245)(RT38(I),I=KTB,KTE)
604    J = 0
       DO 6060 I=39,44
           J = IOUT(I) + J
6060   CONTINUE
       IF (J) 6061, 609, 6061
6061   WRITE(1,252)
       WRITE(1,253)(I,I=KTB,KTE)
       IF (IOUT(39)) 6062, 6063, 6062
6062   WRITE(1,239)
       WRITE(1,246)(RT39(I),I=KTB,KTE)
6063   IF (IOUT(40)) 6064, 6065, 6064
6064   WRITE(1,240)
       WRITE(1,246)(RT40(I),I=KTB,KTE)
6065   IF (IOUT(41)) 6066, 6067, 6066
6066   WRITE(1,241)
       WRITE(1,246)(RT41(I),I=KTB,KTE)
6067   IF (IOUT(42)) 6068, 6069, 6068
6068   WRITE(1,242)
       WRITE(1,246)(RT42(I),I=KTB,KTE)
6069   IF (IOUT(43)) 6070, 6071, 6070
6070   WRITE(1,243)
       WRITE(1,246)(RT43(I),I=KTB,KTE)
       IF (IOUT(44)) 6071, 609, 6071
6071   WRITE(1,244)
       WRITE(1,246)(RT44(I),I=KTB,KTE)
609    WRITE(1,247)
       IF (KTE - 10) 610, 611, 611
610    KTB = 6
       KTE = 10
       GOTO 6021
C PRINT INPUT VALUES PHASE
611    TYPE 281
       ACCEPT 271,I
       IF (I - 3HY  ) 9211, 921, 9211
9211   IF (I - 3HN  ) 611, 9300, 611
921    TYPE 270
       ACCEPT 271,I
       IF (I - 3HA  ) 922, 9270, 922
922    IF (I - 3HS  ) 928, 9230, 928
9230   DO 9231 I=1,50
           INPUT(I) = 0
9231   CONTINUE
       IN109(1) = 0
       IN109(2) = 0
       IN109(3) = 0
923    TYPE 272
924    TYPE 273
       ACCEPT 274,I
       IF (I) 9242, 900, 9242
9242   IF (I - 109) 9241, 9243, 9241
9243   IN109(1) = 1
       IN109(2) = 1
       IN109(3) = 1
       INPUT(9) = 1
       GOTO 924
9241   IF (I - 123) 926, 926, 925
925    IF (I - 1093) 9251, 9251, 9255
9251   IF (I - 1091) 9255, 9252, 9252
9252   I = I - 1090
       IN109(I) = 1
       INPUT(9) = 1
       GOTO 924
9255   TYPE 275
       GOTO 924
926    IF (I - 103) 925, 925, 927
927    I = I - 100
       INPUT(I) = 1
       GOTO 924
9270   DO 9271 I=1,50
           INPUT(I) = 1
9271   CONTINUE
       IN109(1) = 1
       IN109(2) = 1
       IN109(3) = 1
       GOTO 900
928    IF (I - 3HN  ) 921, 9300, 921
929    TYPE 276
900    IF (INPUT(3)) 9001, 901, 9001
9001   TYPE 203
       X = RA17(3) * 100.0
       TYPE 2300, X
901    IF (INPUT(4)) 9011, 902, 9011
9011   TYPE 204
       X = RA17(4) * 100.0
       TYPE 2300, X
902    IF (INPUT(5)) 9021, 903, 9021
9021   TYPE 205
       X = RA17(5) * 100.0
       TYPE 2300, X
903    IF (INPUT(6)) 9031, 9032, 9031
9031   TYPE 206
       TYPE 2301, RA17(6)
9032   IF (INPUT(7)) 9033, 9034, 9033
9033   TYPE 207
       TYPE 2301, RA17(7)
9034   IF (INPUT(8)) 9035, 9036, 9035
9035   TYPE 208
       TYPE 2301, RA17(8)
9036   IF (INPUT(9)) 9037, 9038, 9037
9037   TYPE 209
       IF (IN109(1)) 90371, 90372, 90371
90371  TYPE 2091
       DO 904 I=1,10
           TYPE 279, RAF6(I)
           TYPE 280
904    CONTINUE
90372  IF (IN109(2)) 90373, 90374, 90373
90373  TYPE 2092
       DO 905 I=1,10
           TYPE 279, RAF7(I)
           TYPE 280
905    CONTINUE
90374  IF (IN109(3)) 90375, 9038, 90375
90375  TYPE 2093
       DO 906 I=1,10
           TYPE 279, RAF8(I)
           TYPE 280
906    CONTINUE
9038   IF (INPUT(10)) 9039, 9061, 9039
9039   TYPE 210
       TYPE 2301, RA17(10)
9061   IF (INPUT(11)) 9062, 9063, 9062
9062   TYPE 211
       TYPE 2301, RA17(11)
9063   IF (INPUT(12)) 907, 9064, 907
907    TYPE 212
       X = RA17(12) * 100.0
       TYPE 2300, X
9064   IF (INPUT(13)) 908, 9065, 908
908    TYPE 213
       TYPE 2303, RA17(13)
9065   IF (INPUT(14)) 909, 9066, 909
909    TYPE 214
       TYPE 2304, RA17(14)
9066   IF (INPUT(16)) 9067, 913, 9067
913    TYPE 216
       TYPE 2303, RA17(16)
9067   IF (INPUT(17)) 9068, 9069, 9068
9068   TYPE 217
       DO 914 I=1,10
           TYPE 2171, I
           TYPE 2301, RCAPIM(I)
914    CONTINUE
9069   IF (INPUT(18)) 9141, 9142, 9141
9141   TYPE 2218
       TYPE 2301, RA17(18)
9142   IF (INPUT(19)) 9143, 9144, 9143
9143   TYPE 2219
       TYPE 2303, RA17(19)
9144   IF (INPUT(20)) 9145, 9146, 9145
9145   TYPE 2220
       X = RA17(20) * 1200.0
       TYPE 2300, X
9146   IF (INPUT(21)) 9147, 9148, 9147
9147   TYPE 2221
       TYPE 2303, RA17(21)
9148   IF (INPUT(22)) 9149, 9190, 9149
9149   TYPE 2222
       TYPE 2301, RA17(22)
9190   IF (INPUT(23)) 915, 9300, 915
915    TYPE 2223
       TYPE 2304, RA17(23)
9300   TYPE 282
       ACCEPT 271, I
       TYPE 276
       IF (I - 3HF  ) 9302, 9301, 9302
9301   STOP
9302   IF (I - 3HR  ) 9300, 700, 9300
C FORMAT STATEMENTS
203    FORMAT(/,'103 VACANCY %: ')
204    FORMAT(/,'104 MARGINAL F.I.T. %: ')
205    FORMAT(/,'105 TAX ALLOCATION %: ')
206    FORMAT(/,'106 LISTING PRICE: ')
207    FORMAT(/,'107 SCHEDULED GROSS ANNUAL INCOME: ')
208    FORMAT(/,'108 ANNUAL OPERATING EXPENSES: ')
209    FORMAT(/,'109 YEARLY ADJUSTMENT %     1   2   3   4   5   6
     C   7   8   9  10')
20911  FORMAT(//,'    3 CHARACTERS EACH ENTRY (SPACE, -, OR + GOOD
     C FOR FIRST CHARACTER)')
2091   FORMAT(/,'  1091 LISTING PRICE      ')
2092   FORMAT(/,'  1092 GROSS INCOME       ')
2093   FORMAT(/,'  1093 OPERATING EXPENSES ')
2094   FORMAT('% ')
210    FORMAT(/,'110 INITIAL DEPRECIATION BASIS: ')
211    FORMAT(/,'111 DEPRECIATION LIFE (YEARS): ')
212    FORMAT(/,'112 SALVAGE %: ')
213    FORMAT(/,'113 MONTHS HELD: ')
214    FORMAT(/,'114 DEPRECIATION METHOD (1,2,3 OR 4): ')
215    FORMAT(/,'115 OPTIONAL DEPRECIATION ELECTION (1,2 OR 3): ')
216    FORMAT(/,'116 DEPRECIATION RECAPTURE PERIOD (MONTHS): ')
217    FORMAT(/,'117 YEAR    CAPITAL IMPROVEMENTS')
2171   FORMAT(/,I8,8X)
2218   FORMAT(/,'118 INITIAL BORROWED AMOUNT: ')
2219   FORMAT(/,'119 LIFE OF LOAN (MONTHS): ')
2220   FORMAT(/,'120 LOAN INTEREST %: ')
2221   FORMAT(/,'121 STARTING MONTH OF LOAN (MONTHS): ')
2222   FORMAT(/,'122 CURRENT BALANCE OF LOAN: ')
2223   FORMAT(/,'123 TYPE OF LOAN (1,2 OR 3): ')
2300   FORMAT(F5.2)
2301   FORMAT(F11.0)
2302   FORMAT(I2)
2303   FORMAT(I4)
2304   FORMAT(I1)
2305   FORMAT(F2.2)
218    FORMAT(/,'18 GROSS SCHEDULED INCOME ',1X)
219    FORMAT(/,'19 VACANCY LOSSES',10X)
220    FORMAT(/,'20 OPERATING EXPENSES',6X)
221    FORMAT(/,'21 NET OPERATING INCOME',4X)
222    FORMAT(/,'22 PRINCIPAL PAYMENT',7X)
223    FORMAT(/,'23 INTEREST PAYMENT',8X)
224    FORMAT(/,'24 DEPRECIATION ALLOWANCE  ')
225    FORMAT(/,'25 TAXABLE INCOME',10X)
226    FORMAT(/,'26 TAX PAYMENT',13X)
227    FORMAT(/,'27 TAX SAVED',15X)
228    FORMAT(/,'28 SPENDABLE INCOME',8X)
229    FORMAT(/,'29 SALE PRICE', 14X)
230    FORMAT(/,'30 MORTGAGE PAID',11X)
231    FORMAT(/,'31 MORTGAGE UNPAID',9X)
232    FORMAT(/,'32 CURRENT EQUITY',10X)
233    FORMAT(/,'33 CUMULATIVE DEPRECIATION ')
234    FORMAT(/,'34 BOOK VALUE (BASIS)',6X)
235    FORMAT(/,'35 RECAPTURABLE DEPREC',5X)
236    FORMAT(/,'36 1250 RECAPTURABLE TAX',3X)
237    FORMAT(/,'37 CAPITAL GAIN TAX',8X)
238    FORMAT(/,'38 NET PROCEEDS (NO COMM)'2X)
239    FORMAT(/,'39 GRS SPEND / EQTY %',6X)
240    FORMAT(/,'40 NET SPEND / EQTY %',6X)
241    FORMAT(/,'41 NET EQTY INCOME RATE %',2X)
242    FORMAT(/,'42 TOTAL EQTY RATE %',7X)
243    FORMAT(/,'43 INTERNAL RATE %',9X)
244    FORMAT(/,'44 CAPITALIZATION RATE %',3X)
245    FORMAT(10I9)
246    FORMAT(10(4X,F5.2))
247    FORMAT(//////////)
248    FORMAT(//)
250    FORMAT(//,'   *****ANNUAL CASH FLOW INFORMATION *****')
251    FORMAT(//,'   *****PROCEEDS FROM SALE AT END OF YEAR
     C SHOWN*****')
252    FORMAT(//,'   *****RATES OF RETURN AND CAPITALIZATION
     C FOR YEAR SHOWN*****')
253    FORMAT(/,27X,5(5X,'(',I2,')'))
254    FORMAT(/,27X,5(4X,A1,'(',I2,')'))
255    FORMAT(//,'NOTE - IN STARRED YEARS, (VACANCY LOSSES PLUS
     C EXPENSES) DIVIDED BY',/,7X,'GROSS RENT IS
     C OUTSIDE 30 TO 50 % RANGE')
269    FORMAT(/,'DO YOU WISH TO ALTER THE INPUT (Y OR N): ')
270    FORMAT(/,'SOME, ALL OR NONE (S, A OR N): ')
271    FORMAT(A1)
272    FORMAT(/,'ENTER ITEM NUMBERS (EACH FOLLOWED BY COMMA), FINISH
     C WITH 0',/)
273    FORMAT(/,'  ')
274    FORMAT(I10)
275    FORMAT(/,'ITEM NUMBERS 103-123, 1091-1093 AND 0 ONLY',/)
276    FORMAT(/)
277    FORMAT(/,'HOW MANY OF THE RESULTS DO YOU WISH TO SEE?')
278    FORMAT(/,'ITEM NUMBER 18-44 AND 0 ONLY',/)
279    FORMAT(I3)
280    FORMAT('%')
281    FORMAT(/,'DO YOU WISH TO SEE THE INPUT VALUES (Y OR N): ')
282    FORMAT(/,'FINISH OR REPEAT (F OR R): ')
283    FORMAT(/,'WAIT A MINUTE WHILE I COMPUTE THE RESULTS',/)
       END
       FUNCTION CIRR(L, CFFS, CFLOW, EQUITY, OLDIR)
       DIMENSION CF(20),CFLOW(10)
C SET UP CASH FLOW ARRAY
       DO 1005 I=1,L
           CF(I) = CFLOW(I)
1005   CONTINUE
       CF(L) = CF(L) + CFFS
C INITIALIZE EXTIMATE OF IRR
       XIRR = OLDIR / 100.0
       II = 0
C ITERATION LOOP
1010   TEMP = 1.0 / (1.0 + XIRR)
       EST = -1.0 * EQUITY
       DEST = 0.0
       II = II + 1
C CALCULATE FCN'S VALUE AND DERIVATIVE AT ESTIMATE
       DO 1020 I=1,L
           EST = EST + CF(I) * TEMP ** I
           DEST = DEST - FLOAT(I) * CF(I) * TEMP **(I + 1)
1020   CONTINUE
C CHECK FOR CONVERGENCE
       IF (ABS(EST) - 5.0) 1040, 1040, 1030
C ITERATE
1030   CONTINUE
       IF (II - 10) 1035, 1040, 1040
1035   XIRR = XIRR - EST / DEST
       GOTO 1010
C CONVERGED
1040   CIRR = 100.0 * XIRR
       RETURN
       END
> F (INPUT(9)) 9037, 9038, 9037
9037   TYPE 209
       IF (IN109(1)) 90371, 90372, 90371
90371  TYPE 2091
       DO 904 I=1,10
           TYPE 279, RAF6(I)
           TYPE 280
904    CONTINUE
90372  IF (IN109(2)) 90373, 90374, 90373
90373  TYPE 2092
       DO 905 I=1,10
           TYPE 279, RAF7(I)
           TYPE 280
905    CONTINUE
90374  IF (IN109(3)) 90375, 9038, 90375
90375  TYPE 2093
       DO 906 I=1,10
           TYPE 279, RAF8(I)
           TYPE 280
906    CONTINUE
9038   IF (INPUT(10)) 9039, 9061, 9039
9039   TYPE 210
       TYPE 2301, RA17(10)
9061   IF (INPUT(11)) 9062, 9063, 9062
9062   TYPE 211
       TYPE 2301, RA17(11)
9063   IF (INPUT(12)) 907, 9064, 907
907    TYPE 212
       X = RA17(12) * 100.0
       TYPE 2300, X
9064   IF (INPUT(13)) 908, 9065, 908
908    TYPE 213
       TYPE 2303, RA17(13)
9065   IF (INPUT(14)) 909, 9066, 909
909    TYPE 214
       TYPE 2304, RA17(14)
9066   IF (INPUT(16)) 9067, 913, 9067
913    TYPE 216
       TYPE 2303, RA17(16)
9067   IF (INPUT(17)) 9068, 9069, 9068
9068   TYPE 217
       DO 914 I=1,10
           TYPE 2171, I
           TYPE 2301, RCAPIM(I)
914    CONTINUE
9069   IF (INPUT(18)) 9141, 9142, 9141
9141   TYPE 2218
       TYPE 2301, RA17(18)
9142   IF (INPUT(19)) 9143, 9144, 9143
9143   TYPE 2219
       TYPE 2303, RA17(19)
9144   IF (INPUT(20)) 9145, 9146, 9145
9145   TYPE 2220
       X = RA17(20) * 1200.0
       TYPE 2300, X
9146   IF (INPUT(21)) 9147, 9148, 9147
9147   TYPE 2221
       TYPE 2303, RA17(21)
9148   IF (INPUT(22)) 9149, 9190, 9149
9149   TYPE 2222
       TYPE 2301, RA17(22)
9190   IF (INPUT(23)) 915, 9300, 915
915    TYPE 2223
       TYPE 2304, RA17(23)
9300   TYPE 282
       ACCEPT 271, I
       TYPE 276
       IF (I - 3HF  ) 9302, 9301, 9302
9301   STOP
9302   IF (I - 3HR  ) 9300, 700, 9300
C FORMAT STATEMENTS
203    FORMAT(/,'103 VACANCY %: ')
204    FORMAT(/,'104 MARGINAL F.I.T. %: ')
205    FORMAT(/,'105 TAX ALLOCATION %: ')
206    FORMAT(/,'106 LISTING PRICE: ')
207    FORMAT(/,'107 SCHEDULED GROSS ANNUAL INCOME: ')
208    FORMAT(/,'108 ANNUAL OPERATING EXPENSES: ')
209    FORMAT(/,'109 YEARLY ADJUSTMENT %     1   2   3   4   5   6
     C   7   8   9  10')
20911  FORMAT(//,'    3 CHARACTERS EACH ENTRY (SPACE, -, OR + GOOD
     C FOR FIRST CHARACTER)')
2091   FORMAT(/,'  1091 LISTING PRICE      ')
2092   FORMAT(/,'  1092 GROSS INCOME       ')
2093   FORMAT(/,'  1093 OPERATING EXPENSES ')
2094   FORMAT('% ')
210    FORMAT(/,'110 INITIAL DEPRECIATION BASIS: ')
211    FORMAT(/,'111 DEPRECIATION LIFE (YEARS): ')
212    FORMAT(/,'112 SALVAGE %: ')
213    FORMAT(/,'113 MONTHS HELD: ')
214    FORMAT(/,'114 DEPRECIATION METHOD (1,2,3 OR 4): ')
215    FORMAT(/,'115 OPTIONAL DEPRECIATION ELECTION (1,2 OR 3): ')
216    FORMAT(/,'116 DEPRECIATION RECAPTURE PERIOD (MONTHS): ')
217    FORMAT(/,'117 YEAR    CAPITAL IMPROVEMENTS')
2171   FORMAT(/,I8,8X)
2218   FORMAT(/,'118 INITIAL BORROWED AMOUNT: ')
2219   FORMAT(/,'119 LIFE OF LOAN (MONTHS): ')
2220   FORMAT(/,'120 LOAN INTEREST %: ')
2221   FORMAT(/,'121 STARTING MONTH OF LOAN (MONTHS): ')
2222   FORMAT(/,'122 CURRENT BALANCE OF LOAN: ')
2223   FORMAT(/,'123 TYPE OF LOAN (1,2 OR 3): ')
2300   FORMAT(F5.2)
2301   FORMAT(F11.0)
2302   FORMAT(I2)
2303   FORMAT(I4)
2304   FORMAT(I1)
2305   FORMAT(F2.2)
218    FORMAT(/,'18 GROSS SCHEDULED INCOME ',1X)
219    FORMAT(/,'19 VACANCY LOSSES',10X)
220    FORMAT(/,'20 OPERATING EXPENSES',6X)
221    FORMAT(/,'21 NET OPERATING INCOME',4X)
222    FORMAT(/,'22 PRINCIPAL PAYMENT',7X)
223    FORMAT(/,'23 INTEREST PAYMENT',8X)
224    FORMAT(/,'24 DEPRECIATION ALLOWANCE  ')
225    FORMAT(/,'25 TAXABLE INCOME',10X)
226    FORMAT(/,'26 TAX PAYMENT',13X)
227    FORMAT(/,'27 TAX SAVED',15X)
228    FORMAT(/,'28 SPENDABLE INCOME',8X)
229    FORMAT(/,'29 SALE PRICE', 14X)
230    FORMAT(/,'30 MORTGAGE PAID',11X)
231    FORMAT(/,'31 MORTGAGE UNPAID',9X)
232    FORMAT(/,'32 CURRENT EQUITY',10X)
233    FORMAT(/,'33 CUMULATIVE DEPRECIATION ')
234    FORMAT(/,'34 BOOK VALUE (BASIS)',6X)
235    FORMAT(/,'35 RECAPTURABLE DEPREC',5X)
236    FORMAT(/,'36 1250 RECAPTURABLE TAX',3X)
237    FORMAT(/,'37 CAPITAL GAIN TAX',8X)
238    FORMAT(/,'38 NET PROCEEDS (NO COMM)'2X)
239    FORMAT(/,'39 GRS SPEND / EQTY %',6X)
240    FORMAT(/,'40 NET SPEND / EQTY %',6X)
241    FORMAT(/,'41 NET EQTY INCOME RATE %',2X)
242    FORMAT(/,'42 TOTAL EQTY RATE %',7X)
243    FORMAT(/,'43 INTERNAL RATE %',9X)
244    FORMAT(/,'44 CAPITALIZATION RATE %',3X)
245    FORMAT(10I9)
246    FORMAT(10(4X,F5.2))
247    FORMAT(//////////)
248    FORMAT(//)
250    FORMAT(//,'   *****ANNUAL CASH FLOW INFORMATION *****')
251    FORMAT(//,'   *****PROCEEDS FROM SALE AT END OF YEAR
     C SHOWN*****')
252    FORMAT(//,'   *****RATES OF RETURN AND CAPITALIZATION
     C FOR YEAR SHOWN*****')
253    FORMAT(/,27X,5(5X,'(',I2,')'))
254    FORMAT(/,27X,5(4X,A1,'(',I2,')'))
255    FORMAT(//,'NOTE - IN STARRED YEARS, (VACANCY LOSSES PLUS
     C EXPENSES) DIVIDED BY',/,7X,'GROSS RENT IS
     C OUTSIDE 30 TO 50 % RANGE')
269    FORMAT(/,'DO YOU WISH TO ALTER THE INPUT (Y OR N): ')
270    FORMAT(/,'SOME, ALL OR NONE (S, A OR N): ')
271    FORMAT(A1)
272    FORMAT(/,'ENTER ITEM NUMBERS (EACH FOLLOWED BY COMMA), FINISH
     C WITH 0',/)
273    FORMAT(/,'  ')
274    FORMAT(I10)
275    FORMAT(/,'ITEM NUMBERS 103-123, 1091-1093 AND 0 ONLY',/)
276    FORMAT(/)
277    FORMAT(/,'HOW MANY OF THE RESULTS DO YOU WISH TO SEE?')
278    FORMAT(/,'ITEM NUMBER 18-44 AND 0 ONLY',/)
279    FORMAT(I3)
280    FORMAT('%')
281    FORMAT(/,'DO YOU WISH TO SEE THE INPUT VALUES (Y OR N): ')
282    FORMAT(/,'FINISH OR REPEAT (F OR R): ')
283    FORMAT(/,'WAIT A MINUTE WHILE I COMPUTE THE RESULTS',/)
       END
       FUNCTION CIRR(L, CFFS, CFLOW, EQUITY, OLDIR)
       DIMENSION CF(20),CFLOW(10)
C SET UP CASH FLOW ARRAY
       DO 1005 I=1,L
           CF(I) = CFLOW(I)
1005   CONTINUE
       CF(L) = CF(L) + CFFS
C INITIALIZE EXTIMATE OF IRR
       XIRR = OLDIR / 100.0
       II = 0
C ITERATION LOOP
1010   TEMP = 1.0 / (1.0 + XIRR)
       EST = -1.0 * EQUITY
       DEST = 0.0
       II = II + 1
C CALCULATE FCN'S VALUE AND DERIVATIVE AT ESTIMATE
       DO 1020 I=1,L
           EST = EST + CF(I) * TEMP ** I
           DEST = DEST - FLOAT(I) * CF(I) * TEMP **(I + 1)
1020   CONTINUE
C CHECK FOR CONVERGENCE
       IF (ABS(EST) - 50     $$$$$$#  !.XJ<.C'< .Z!.[8'<J<.6!-='< .\!.ZJ<.<'<.C,!.Y .[!.\J<.<<..C6J<.<<..C6J<.<<..C6!.]<<.
C,=!/ .^=!, . .^!.^?<." $ ._" %3 !" & .a<<..C;" %J5t<<..C;=!/ .]=!, . .!.<<.
C,=!/ .b=!, .c .b!.b?<." $ .d" %3 !" & .a<<..C;" %J5t<<..C;=!/ .=!, .c .c!.c<<.
C,=!/ .e=!, .f .e!.e?<." $ .g" %3 !" & .a<<..C;" %J5t<<..C;=!/ .c=!, .f .f!.f<<.
C,=!/ .h=!, .i .h!.h?<." $ .j" %3 !" & .k<<..C;" %!.i<<.
C,=!/ .l=!, .m .l!.l?<." $ .n" %3 !" & .k<<..C;" %!.m<<.
C,=!/ .o=!, .p .o!.o?<." $ .q" %3 !" & .k<<..C;" %!.p<<.
C,=!/ .r=!, .s .r!.r?<." $ .t" %?<." $ .u" %<<.
C6=!/ .v=!, .w .v!.v?<." $ .x" %J<.C'< .z!.{8'<J<.6!-='< .|!.z3 !" & .                                                                                                                                                            '<.C@" %?<." $ .." %!.y .{!.|!.w<<.
C6=!/ .>=!, .. .>!.>?<." $ .." %J<.C'< ..!..8'<J<.6!-='< ..!..3 !" & .                                                                                                                                                            '<.CJ" %?<." $ .." %!.. ..!..!..<<.
C6=!/ ..=!, .s ..!..?<." $ .." %J<.C'< ..!.
8'<J<.6!-='< ..!..3 !" & .                                                                                                                                                            '<.CO" %?<." $ .." %!.. .
!..!.s<<.
C,=!/ .=!, . .!.?<." $ .." %3 !" & .k<<..C;" %!.<<.
C,=!/ ..=!, .. ..!..?<." $ .." %3 !" & .k<<..C;" %!..<<.
C,=!/ ..=!, .. ..!..?<." $ .." %3 !" & .a<<..C;" %J5t<<..C;=!/ ..=!, .. ..!..<<.
C,=!/ ..=!, .. ..!..?<." $ .." %3 !" & ..<<..C;" %!..<<.
C,=!/ ..=!, .. ..!..?<." $ .." %3 !" & ..<<..C;" %J5v<<..C;=!/ ..=!, .. ..!..<<.
C;=!/ ..=!, .. ..!..<<.
C,=!/ ..=!, .. ..!..?<." $ . " %3 !" & ..<<..C;" %!..<< 
C,=!/ .!=!, ." .!!.!?<." $ .#" %J<.C'< .%!.&8'<J<.6!-='< .'!.%?<." $ .(H'<" %3 !" & .k<'<.CE" %!.$ .&!.'!."<<!
C,=!/ .)=!, .* .)!.)?<." $ .+" %3 !" & .k<<!.C;" %!.*<<"
C,=!/ .,=!, .- .,!.,?<." $ .." %3 !" & ..<<".C;" %!.-<<#
C,=!/ ./=!, .0 ./!./?<." $ .1" %3 !" & .a<<#.C;" %J5tP5xCQd<<#
C;RQd<<#.C;!.0<<$
C,=!/ .2=!, .3 .2!.2?<." $ .4" %3 !" & ..<<$.C;" %!.3<<%
C,=!/ .5=!, .6 .5!.5?<." $ .7" %3 !" & .k<<%.C;" %!.6<<&
C,=!/ .8=!, .9 .8!.8?<." $ .:" %3 !" & ..<<&.C;" %J5z<<&.C;=!/ .8=!, .; .;!.;<<&
C;=!/ .8=!, .8 .9!.9?<." $ .<" %<<.
C;<<!.C;C  J5z<<..C;CQdJ5z<<..C;PQd<<..C;C "<<.
C;R5x<<..C;S  B'><<!
C;C $<<!
C;<<".C;C &J5z<<#C;CQdFQd<<".C;" @C (J (N5zCQd<<#
C;<<!.C;P (RQdC *J<.C'@J<.C'B<<.
C;<<..C@R5tC ,J ,<<.C;<<..C.<<#
C;<<!.C;N *S  C (!.=?<." $ .>" %3 !" & .?H'<" %J'<N<'=!/ .@=!, .A .@!.@J'<N<(=!/ .==!, .B .=!.A?<." $ .C" %3 !" & .?H'<" %J'<N<)=!/ .D=!, .X .D!.DJ'<N<*=!/ .E=!, .F .E!.FJ<.C'< .H!.I8'<J<.6!-='< .J!.HJ<+<'<.C,!.G .I!.JJ<+<<..C6J<+<<..C6J<+<<..C6!.K?<." $ .L" %!.M?<." $ .N" %3 !" & .OH'<" %J'<=!/ .P=!, .] .P!.PJ'<N<,=!/ .Q=!, .R .Q!.RJ<.<<..C6J<.<<..C6J<.<<..C6J<.<<..C, .M!.QJ'<N<-=!/ .S=!, .S .T!.TJ'<N<.=!/ .U=!, .U .V!.UJ'<N</=!/ .V=!, .W .W!.WJ'<N<0C'<J<.<'<.C6J<.<<..C, .M!.V?<." $ .X" % .M!.SJ'<N<1=!/ .T=!, .T .Y!.YJ'<N<2C'<J<.<'<.C, .M!.EJ'<N<(=!/ .A=!, .B .A!.B?<." $ .Z" %?<." $ .[" %J'@C'< .]!.^8'<J'B6!-='< .!.]J'<N<.=!/ ._=!, ._ .a!._<'<
CJR5tL5z<<..C;<'<.CT<'<
COR5tL5z<<..C;<'<.C^ .b!.aJ'<N<.CQd<'<
CJR5tL5z<Qd.CT<'<.CTJ'<N<.CQd<'<
COR5tL5z<Qd.C^<'<.C^!.b<<.
C;<'<.CT<'<.CY<'<
CT<'<.CY<'<.C^<'<.CcJ'<N<.P<.L<.C'DJ'DL<.C'FJ5|C .J5|C 0I'F<<$.C;L5z=!/ .c=!, .d .e!.dJ'FC'D .f!.eI'D<<$.C;L5z=!/ .g=!, .f .f!.g<<$
C;L5zB'D!.fI'D<<".C;=!/ .h=!, .h .c!.hI'F<<".C;=!/ .i=!, .i .j!.j<<"
C;B'F!.iJ'DC'H .l!.m8'HJ'F6!-='H .n!.l<<&
C;N5.=!/ .o=!, .p .q!.oJ'HN<." :CQdJ5z<<#C;CQfFQfGQd" @P (C 2J *N 2L 0C 0J 2L .C . .k!.p<<#
C;<<!.C;L 0C 0 .k!.q<<#
C;P $L 0C 0J .L &C .J $N &C $!.k .m!.n!.cJ .<'<.ChJ 0<'<.Cm<<..C;\
H" 0  $ .r .s .t .u!.rJ "Q'><'<.Cr .v!.sJ5.P "Q'><'<.CrJ "<'<.CrC " .v!.tJ5.P "Q'><'<.CrJ "<'<.CrC " .v!.u<<.
C;L5zP5.<<..C;CQdF'<\
JN5z<<..C;<<..C;RQdS  <'<.Cr!.v<'<
Cc<'<.Cr<'<.Cm<'<.Cw<'<
Cw=!/ .w=!, .x .x!.wJ5|<'<.C| .y!.x<'<
Cw<<..C;<'<.C|!.y<'<
Cw=!/ .z=!, .{ .{!.z<<.
C;<'<.CwS  <'<.C. .|!.{J5|<'<.C.!.|<'<
Cc<'<.Ch<'<.Cm<'<.C|<'<C.<'<.C.J'<N<.=!/ .                             !, .                                                                                                                                ..!.                                                                                                                                                            <.
Ch<<..C. .>!..J'<N<.CQd<Qd
C.<'<.C@R5tC ,J'<N<.CQdJ ,<QdC.<'<.C.J'<N<.CQd<Qd
C.<'<Ch<'<.C.!.><<!
C;<'<.C.<'<.C.<'<
C.<'<.C.<'<.C.J'<N<.=!/ ..=!, .. ..!..<'<
Cr<<..C.J5z<<..C;<<..C;<<..C;<'<.CrS  <<..D) ..!..J'<N<.CQd<Qd
C.<'<Cr<'<.C.J5z<<..C;<<..C;CQdF'<\
JPQd<<..C;<'<.C.S  <'<.D)!..<<.
C;<'<.C.<'<CE<'<.D$<<.
C;<'<.D)<'<.D.<'<
C.<'<.D$<'<.D)C 4J 4R5.<<..C;CQdJ 4R5vNQd=!/ ..=!, .. ..!..J 4R5v<'<.D3 ..!..J 4R5.<<..C;<'<.D3!..<'<
C.<'<.D3<'<.C.<'<.D.<'<.D8<'<
Cc<'<.Ch<'<.Cm<'<.C.P5t<'<.D=<'<
C.<'<.C.P5t<'<.DB<'<
C.<'<Ch<'<.C.P5t<'<.DG<'<
C.<'<ChL ,<'<.C.P5t<'<.DL<'<
Cw<'<Cr<'<.D_J'<N<.=!/ ..=!, .. ..!..J5.C 6 ..!..J'<N<.CQd<Qd
DQC 6!..F'<<'<.D8<'<.C.G  G 6\
L<'<.DQ<'<
Cc<'<.C.P5t<'<.DV<'<
CY<'<C^<'<.CTN5.=!/ ..=!, .
 .
!.
<'<
CY<'<C^<'<.CTN5.=!/ ..=!, .. ..!..J<3<'<.D[ .\!..J<+<'<.D[!.\ .^!.?<." $ ." %!.?<." $ .C" %3 !" & .?H'<" %J'<N<(=!/ ..=!, .. ..!..J'<N<*=!/ ..=!, .. ..!..J<.C'< ..!..8'<J<.6!-='< ..!..J<+<'<.C1!.. ..!..?<." $ .L" %!..?<." $ .N" %3 !" & .OH'<" %J'<=!/ ..=!, .. ..!..J'<N<4=!/ ..=!, .. ..!..?<." $ .." % ..!..J'<N<!=!/ ..=!, .. ..!..J<.<'<.C1 ..!..J'<N<)=!/ .=!, .. .!..J<.C'< ..!/ 8'<J<.6!-='< /!!..J<.<'<.C1!.. / !/!!..J<.C'@J<.C'B!/"J<+C'HJ<!C'< /$!/%8'<J<56!-='< /&!/$<'<
C1L'HC'H!/# /%!/&J'H=!/ /'=!, /( /'!/'J<." $ /)" %J<." $ /*J'@C'< /+!/,8'<J'B6!-='< /-!/+<'<.D[H'< /,!/-" %<<!
C1=!/ /.=!, // /.!/.J<." $ /0" %J<." $ /1J'@C'< /2!/38'<J'B6!-='< /4!/2<'<.CT /3!/4" %!//<<"
C1=!/ /5=!, /6 /5!/5J<." $ /7" %J<." $ /1J'@C'< /8!/98'<J'B6!-='< /:!/8<'<.CY /9!/:" %!/6<<#
C1=!/ /;=!, /< /;!/;J<." $ /=" %J<." $ /1J'@C'< />!/?8'<J'B6!-='< /@!/><'<.C^ /?!/@" %!/<<<$
C1=!/ /A=!, /B /A!/AJ<." $ /C" %J<." $ /1J'@C'< /D!/E8'<J'B6!-='< /F!/D<'<.Cc /E!/F" %!/B<<%
C1=!/ /G=!, /H /G!/GJ<." $ /I" %J<." $ /1J'@C'< /J!/K8'<J'B6!-='< /L!/J<'<.Ch /K!/L" %!/H<<&
C1=!/ /M=!, /N /M!/MJ<." $ /O" %J<." $ /1J'@C'< /P!/Q8'<J'B6!-='< /R!/P<'<.Cm /Q!/R" %!/N<<6
C1=!/ /S=!, /T /S!/SJ<." $ /U" %J<." $ /1J'@C'< /V!/W8'<J'B6!-='< /X!/V<'<.Cr /W!/X" %!/T<<7
C1=!/ /Y=!, /Z /Y!/YJ<." $ /[" %J<." $ /1J'@C'< /\!/]8'<J'B6!-='< /^!/\<'<.Cw /]!/^" %!/Z<<8
C1=!/ /=!, /_ /!/J<." $ /a" %J<." $ /1J'@C'< /b!/c8'<J'B6!-='< /d!/b<'<.C| /c!/d" %!/_<<9
C1=!/ /e=!, /f /e!/eJ<." $ /g" %J<." $ /1J'@C'< /h!/i8'<J'B6!-='< /j!/h<'<.C. /i!/j" %!/f<<5
C1=!/ /k=!, /l /k!/kJ<." $ /m" %J<." $ /1J'@C'< /n!/o8'<J'B6!-='< /p!/n<'<.C. /o!/p" %!/lJ<+C'HJ'@C'< /r!/s8'<J'B6!-='< /t!/r<'<
D[L'HC'H!/q /s!/tJ'H=!/ /u=!, /( /u!/uJ<." $ /v" %!/(J<+C'HJ<:C'< /x!/y8'<J<;6!-='< /z!/x<'<
C1L'HC'H!/w /y!/zJ'H=!/ /{=!, /| /{!/{J<." $ /   %J<." $ /.J'@C'< />!/.8'<J'B6!-='< /.!/>H'< /.!/." %<<:
C1=!/ /.=!, /. /.!/.J<." $ /." %J<." $ /1J'@C'< /.!/.8'<J'B6!-='< /.!/.<'<.C. /.!/." %!/.<<<
C1=!/ /.=!, /. /.!/.J<." $ /
" %J<." $ /1J'@C'< /.!/8'<J'B6!-='< /!/.<'<.C. /!/" %!/.<<=
C1=!/ /.=!, /. /.!/.J<." $ /." %J<." $ /1J'@C'< /.!/.8'<J'B6!-='< /.!/.<'<.C. /.!/." %!/.<<>
C1=!/ /.=!, /. /.!/.J<." $ /." %J<." $ /1J'@C'< /.!/.8'<J'B6!-='< /.!/.<'<.C. /.!/." %!/.<<?
C1=!/ /.=!, /. /.!/.J<." $ /." %J<." $ /1J'@C'< /.!/.8'<J'B6!-='< /.!/.<'<.C. /.!/." %!/.<<@
C1=!/ / =!, /! / !/ J<." $ /"" %J<." $ /1J'@C'< /#!/$8'<J'B6!-='< /%!/#<'<.D$ /$!/%" %!/!<<A
C1=!/ /&=!, /' /&!/&J<." $ /(" %J<." $ /1J'@C'< /)!/*8'<J'B6!-='< /+!/)<'<.D) /*!/+" %!/'<<B
C1=!/ /,=!, /- /,!/,J<." $ /." %J<." $ /1J'@C'< //!/08'<J'B6!-='< /1!//<'<.D. /0!/1" %!/-<<C
C1=!/ /2=!, /3 /2!/2J<." $ /4" %J<." $ /1J'@C'< /5!/68'<J'B6!-='< /7!/5<'<.D3 /6!/7" %!/3<<;
C1=!/ /8=!, /| /8!/8J<." $ /9" %J<." $ /1J'@C'< /:!/;8'<J'B6!-='< /<!/:<'<.D8 /;!/<" %!/|J<+C'HJ<DC'< />!/?8'<J<46!-='< /@!/><'<
C1L'HC'H!/= /?!/@J'H=!/ /A=!, /B /A!/AJ<." $ /C" %J<." $ /.J'@C'< /D!/E8'<J'B6!-='< /F!/DH'< /E!/F" %<<D
C1=!/ /G=!, /H /G!/GJ<." $ /I" %J<." $ /JJ'@C'< /K!/L8'<J'B6!-='< /M!/K<'<.D= /L!/M" %!/H<<E
C1=!/ /N=!, /O /N!/NJ<." $ /P" %J<." $ /JJ'@C'< /Q!/R8'<J'B6!-='< /S!/Q<'<.DB /R!/S" %!/O<<F
C1=!/ /T=!, /U /T!/TJ<." $ /V" %J<." $ /JJ'@C'< /W!/X8'<J'B6!-='< /Y!/W<'<.DG /X!/Y" %!/U<<G
C1=!/ /Z=!, /[ /Z!/ZJ<." $ /\" %J<." $ /JJ'@C'< /]!/^8'<J'B6!-='< /!/]<'<.DL /^!/" %!/[<<H
C1=!/ /_=!, /a /_!/_J<." $ /b" %J<." $ /JJ'@C'< /c!/d8'<J'B6!-='< /e!/c<'<.DQ /d!/e" %<<4
C1=!/ /a=!, /B /a!/aJ<." $ /f" %J<." $ /JJ'@C'< /g!/h8'<J'B6!-='< /i!/g<'<.DV /h!/i" %!/BJ<." $ /j" %J'BN<.=!/ /k=!, .. ..!/kJ<.C'@J<.C'B /"!..?<." $ /l" %3 !" & .?H'<" %J'<N<'=!/ /m=!, /n /m!/mJ'<N<(=!/ ..=!, /o ..!/n?<." $ .C" %3 !" & .?H'<" %J'<N<)=!/ /p=!, /q /p!/pJ'<N<*=!/ /r=!, /s /r!/sJ<.C'< /u!/v8'<J<.6!-='< /w!/uJ<+<'<.C,!/t /v!/wJ<+<<..C6J<+<<..C6J<+<<..C6!/x?<." $ .L" %!/y?<." $ .N" %3 !" & .OH'<" %J'<=!/ /z=!, /{ /z!/zJ'<N<,=!/ /|=!, /                                                                                                                                /|!/                                                                                                                                                                          <.<<..C6J<.<<..C6J<.<<..C6J<.<<..C, /y!/|J'<N<-=!/ /.=!, /. />!/>J'<N<.=!/ /.=!, /. /.!/.J'<N</=!/ /.=!, /. /.!/.J'<N<0C'<J<.<'<.C6J<.<<..C, /y!/.?<." $ .X" % /y!/.J'<N<1=!/ />=!, /> /.!/.J'<N<2C'<J<.<'<.C, /y!/qJ<.C'< /.!/.8'<J<.6!-='< /.!/.J<.<'<.C,!/. /.!/.J<.<<..C6J<.<<..C6J<.<<..C6 /{!/rJ'<N<(=!/ /n=!, /o /n!/.?<." $ .Z" %!/{<<.
C,=!/ /.=!, /
 /.!/.?<." $ ._" %<<.
C;P5tC 8?<." $ .aH 8" %!/
<<.
C,=!/ /.=!, / /.!/.?<." $ .d" %<<.
C;P5tC 8?<." $ .aH 8" %!/<<.
C,=!/ /=!, /. /!/?<." $ .g" %<<.
C;P5tC 8?<." $ .aH 8" %!/.<<.
C,=!/ /.=!, /. /.!/.?<." $ .j" %?<." $ .k<<..C;" %!/.<<.
C,=!/ /.=!, /. /.!/.?<." $ .n" %?<." $ .k<<..C;" %!/.<<.
C,=!/ /.=!, /. /.!/.?<." $ .q" %?<." $ .k<<..C;" %!/.<<.
C,=!/ /.=!, /. /.!/.?<." $ .u" %<<.
C6=!/ /.=!, /. /.!/.?<." $ .x" %J<.C'< /.!/.8'<J<.6!-='< /.!/.?<." $ .                                                                                                                                                            '<.C@" %?<." $ .." %!/. /.!/.!/.<<.
C6=!/ /.=!, /. /.!/.?<." $ .." %J<.C'< 0 !0!8'<J<.6!-='< 0"!0 ?<." $ .                                                                                                                                                            '<.CJ" %?<." $ .." %!/. 0!!0"!/.<<.
C6=!/ 0#=!, /. 0#!0#?<." $ .." %J<.C'< 0%!0&8'<J<.6!-='< 0'!0%?<." $ .                                                                                                                                                            '<.CO" %?<." $ .." %!0$ 0&!0'!/.<<.
C,=!/ 0(=!, 0) 0(!0(?<." $ .." %?<." $ .k<<..C;" %!0)<<.
C,=!/ 0*=!, 0+ 0*!0*?<." $ .." %?<." $ .k<<..C;" %!0+<<.
C,=!/ 0,=!, 0- 0,!0,?<." $ .." %<<.
C;P5tC 8?<." $ .aH 8" %!0-<<.
C,=!/ 0.=!, 0/ 0.!0.?<." $ .." %?<." $ ..<<..C;" %!0/<<.
C,=!/ 00=!, 01 00!00?<." $ .." %?<." $ ..<<..C;" %!01<<.
C,=!/ 02=!, 03 02!03?<." $ . " %?<." $ ..<<..C;" %!02<< 
C,=!/ 04=!, 05 04!04?<." $ .#" %J<.C'< 07!088'<J<.6!-='< 09!07?<." $ .(H'<" %?<." $ .k<'<.CE" %!06 08!09!05<<!
C,=!/ 0:=!, 0; 0:!0:?<." $ .+" %?<." $ .k<<!.C;" %!0;<<"
C,=!/ 0<=!, 0= 0<!0<?<." $ .." %?<." $ ..<<".C;" %!0=<<#
C,=!/ 0>=!, 0? 0>!0>?<." $ .1" %<<#
C;P5
C 8?<." $ .aH 8" %!0?<<$
C,=!/ 0@=!, 0A 0@!0@?<." $ .4" %?<." $ ..<<$.C;" %!0A<<%
C,=!/ 0B=!, 0C 0B!0B?<." $ .7" %?<." $ .k<<%.C;" %!0C<<&
C,=!/ 0D=!, /o 0D!0D?<." $ .:" %?<." $ ..<<&.C;" %!/o?<." $ 0E" %3 !" & .?H'<" %?<." $ .Z" %J'<N<I=!/ 0F=!, 0G 0F!0G" #!0FJ'<N<J=!/ /o=!, .= /o!._ 0H$ ((/,'103 VACANCY %: ')   !0H!.d 0I$ +(/,'104 MARGINAL F.I.T. %: ')    !0I!.g 0J$ *(/,'105 TAX ALLOCATION %: ')  !0J!.j 0K$ )(/,'106 LISTING PRICE: ')  !0K!.n 0L$ /(/,'107 SCHEDULED GROSS ANNUAL INCOME: ')    !0L!.q 0M$ -(/,'108 ANNUAL OPERATING EXPENSES: ')  !0M!.u 0N$ ;(/,'109 YEARLY ADJUSTMENT %     1   2   3   4   5   6   7   8   9  10')          !0N!.t 0O$ =(//,'    3 CHARACTERS EACH ENTRY (SPACE, -, OR + GOOD FOR FIRST CHARACTER)')           !0O!.x 0P$ ,(/,'  1091 LISTING PRICE      ')    !0P!.. 0Q$ ,(/,'  1092 GROSS INCOME       ')    !0Q!.. 0R$ ,(/,'  1093 OPERATING EXPENSES ')    !0R!0S 0T$ #('% ')   !0T!.. 0U$ .(/,'110 INITIAL DEPRECIATION BASIS: ')    !0U!.. 0V$ -(/,'111 DEPRECIATION LIFE (YEARS): ')  !0V!.. 0W$ ((/,'112 SALVAGE %: ')   !0W!.. 0X$ )(/,'113 MONTHS HELD: ')    !0X!.. 0Y$ 0(/,'114 DEPRECIATION METHOD (1,2,3 OR 4): ')    !0Y!0Z 0[$ 3(/,'115 OPTIONAL DEPRECIATION ELECTION (1,2 OR 3): ')    !0[!.  0\$ 2(/,'116 DEPRECIATION RECAPTURE PERIOD (MONTHS): ')    !0\!.# 0]$ .(/,'117 YEAR    CAPITAL IMPROVEMENTS')    !0]!.( 0^$ $(/,I8,8X)   !0^!.+ 0$ -(/,'118 INITIAL BORROWED AMOUNT: ')    !0!.. 0_$ ,(/,'119 LIFE OF LOAN (MONTHS): ')   !0_!.1 0a$ *(/,'120 LOAN INTEREST %: ')   !0a!.4 0b$ /(/,'121 STARTING MONTH OF LOAN (MONTHS): ')  !0b!.7 0c$ -(/,'122 CURRENT BALANCE OF LOAN: ')    !0c!.: 0d$ -(/,'123 TYPE OF LOAN (1,2 OR 3): ')    !0d!.a 0e$ #(F5.2)   !0e!.k 0f$ #(F11.0)  !0f!0g 0h$ "(I2)  !0h!.. 0i$ "(I4)  !0i!.. 0j$ "(I1)  !0j!0k 0l$ #(F2.2)   !0l!/0 0m$ -(/,'18 GROSS SCHEDULED INCOME ',1X)    !0m!/7 0n$ *(/,'19 VACANCY LOSSES',10X)   !0n!/= 0o$ +(/,'20 OPERATING EXPENSES',6X)   !0o!/C 0p$ ,(/,'21 NET OPERATING INCOME',4X)    !0p!/I 0q$ +(/,'22 PRINCIPAL PAYMENT',7X)    !0q!/O 0r$ *(/,'23 INTEREST PAYMENT',8X)  !0r!/U 0s$ ,(/,'24 DEPRECIATION ALLOWANCE  ')   !0s!/[ 0t$ *(/,'25 TAXABLE INCOME',10X)   !0t!/a 0u$ )(/,'26 TAX PAYMENT',13X)   !0u!/g 0v$ ((/,'27 TAX SAVED',15X)  !0v!/m 0w$ *(/,'28 SPENDABLE INCOME',8X)  !0w!/. 0x$ )(/,'29 SALE PRICE', 14X)   !0x!/
 0y$ *(/,'30 MORTGAGE PAID',11X)    !0y!/. 0z$ *(/,'31 MORTGAGE UNPAID',9X)   !0z!/. 0{$ *(/,'32 CURRENT EQUITY',10X)   !0{!/. 0|$ ,(/,'33 CUMULATIVE DEPRECIATION ')   !0|!/" 0     +(/,'34 BOOK VALUE (BASIS)',6X)   !0                                                                                                                                 /( 0.$ +(/,'35 RECAPTURABLE DEPREC',5X)  !0.!/. 0>$ ,(/,'36 1250 RECAPTURABLE TAX',3X)   !0>!/4 0.$ *(/,'37 CAPITAL GAIN TAX',8X)  !0.!/9 0.$ ,(/,'38 NET PROCEEDS (NO COMM)'2X)   !0.!/I 0.$ +(/,'39 GRS SPEND / EQTY %',6X)   !0.!/P 0.$ +(/,'40 NET SPEND / EQTY %',6X)   !0.!/V 0.$ ,(/,'41 NET EQTY INCOME RATE %',2X)  !0.!/\ 0.$ +(/,'42 TOTAL EQTY RATE %',7X)    !0.!/b 0.$ *(/,'43 INTERNAL RATE %',9X)   !0.!/f 0.$ ,(/,'44 CAPITALIZATION RATE %',3X)   !0.!/1 0.$ #(10I9)   !0.!/J 0.$ %(10(4X,F5.2))  !0.!/j 0
$ %(//////////)   !0
!.< 0.$ "(//)  !0.!/) 0$ 1(//,'   *****ANNUAL CASH FLOW INFORMATION *****')  !0!/                                                                                                                                0$ 7(//,'   *****PROCEEDS FROM SALE AT END OF YEAR SHOWN*****')          !0!/C 0.$ :(//,'   *****RATES OF RETURN AND CAPITALIZATION FOR YEAR SHOWN*****')         !0.!/. 0.$ )(/,27X,5(5X,'(',I2,')'))   !0.!/* 0.$ *(/,27X,5(4X,A1,'(',I2,')'))   !0.!/v 0.$ M(//,'NOTE - IN STARRED YEARS, (VACANCY LOSSES PLUS EXPENSES) DIVIDED BY',/,7X,'GROSS RENT IS OUTSIDE 30 TO 50 % RANGE')                !0.!.> 0.$ 1(/,'DO YOU WISH TO ALTER THE INPUT (Y OR N): ')    !0.!.C 0.$ -(/,'SOME, ALL OR NONE (S, A OR N): ')  !0.!.? 0.$ "(A1)  !0.!.L 0.$ 9(/,'ENTER ITEM NUMBERS (EACH FOLLOWED BY COMMA), FINISH WITH 0',/)         !0.!.N 0.$ $(/,'  ')    !0.!.O 0.$ #(I10)    !0.!.X 0.$ 2(/,'ITEM NUMBERS 103-123, 1091-1093 AND 0 ONLY',/)    !0.!.Z 0.$ "(/)   !0.!. 0.$ 1(/,'HOW MANY OF THE RESULTS DO YOU WISH TO SEE?')  !0.!.. 0.$ -(/,'ITEM NUMBER 18-44 AND 0 ONLY',/)   !0.!.                                                                                                                                0.$ "(I3)  !0.!.. 0.$ #('%')    !0.!/l 0.$ 2(/,'DO YOU WISH TO SEE THE INPUT VALUES (Y OR N): ')  !0.!0E 0.$ ,(/,'FINISH OR REPEAT (F OR R): ')   !0.!.[ 0 $ 1(/,'WAIT A MINUTE WHILE I COMPUTE THE RESULTS',/)  !0 " #$ s  !  R  "  #  $  %  &  '  (  )  *  +  ,  -  .  0  1  2  3  4  5  6  7Y  N  A  S         . $e $c $b  .  .*    L  <  8  9  :  ;  =  F  >  ?  @  A  B  C  D  E  G  H  I  J  KF  R    '.    #_    $.    !_          "_    !.  ......  $p  lm.lll   _    +k  #    &  X  
    :  N  b  v  
  . !2 !F !Z !n !. !. !* !> !R !f !z !. "" "6 "J "^ "r ". ". ". "B "V "j ". ". #' #0#  #  #    [  8     #  #  ' #F #M #g   IFIX  FLOAT CIRR  #  


(     CIRR  #  !.X   " !@X.@X.@X.@X.@X." "J<.C'< .Z!.[8'<J..6!-='< .\!.Z<'<>.J..<'<.C,!.Y .[!.\<..
C,L..<...C,J..R5tC $J<.C'@!.]J5vL $CQdJ5vRQdC (J5vP..S  C *J5xC .J'@L<.C'@J<.C'< .!._8'<J..6!-='< .a!.I'<CQdF (GQd" @<'<.C,L *C *J'<L<." :CQdF (GQd" @<'<.C,CQfF'<\
HPQfN .S  C .!.^ ._!.aF *\
JN5z=!/ .b=!, .b .c!.cJ'@N<.=!/ .d=!, .b .b!.dJ *R .N $S  C $ .]!.bJ5tP $C  J  4nX" #$ +  !     *  '.    !_          #p  #    .   #    !   #    "     &     ,   #    #  (     "  ,  0  X  Z  d   FLOAT ABS   #  


>>>>>> .k<<..C;" %!/.<<.
C,=!/ /.=!, /. /.!/.?<." $ .u" %<<.
C6=!/ /.=!, /. /.!/.?<." $ .x" %J<.C'< /.!/.8'<J<.6!-='< /.!/.?<." $ .                                                                                                                                                            '<.C@" %?<." $ .." %!/. /.!/.!/.<<.
C6=!/ /.=!, /. /.!/.?<." $ .." %J<.C'< 0 !0!8'<J<.6!-='< 0"!0 ?<." $ .                                                                                                                                                            '<.CJ" %?<." $ .." %!/. 0!!0"!/.<<.
C6=!/ 0#=!, /. 0#!0#?<." $ .." %J<.C'< 0%!0&8'<J<.6!-='< 0'!0%?<." $ .                                                                                                                                                            '<.CO" %?<." $ .." %!0$ 0&!0'!/.<<.
C,=!/ 0(=!, 0) 0(!0(?<." $ .." %?<." $ .k<<..C;" %!0)<<.
C,=!/ 0*=!, 0+ 0*!0*?<." $ .." %?<." $ .k<<..C;" %!0+<<.
C,=!/ 0,=!, 0- 0,!0,?<." $ .." %<<.
C;P5tC 8?<." $ .aH 8" %!0-<<.
C,=!/ 0.=!, 0/ 0.!0.?<." $ .." %?<." $ ..<<..C;" %!0/<<.
C,=!/ 00=!, 01 00!00?<." $ .." %?<." $ ..<<..C;" %!01<<.
C,=!/ 02=!, 03 02!03?<." $ . " %?<." $ ..<<..C;" %!02<< 
C,=!/ 04=!, 05 04!04?<." $ .#" %J<.C'< 07!088'<J<.6!-='< 09!07?<." $ .(H'<" %?<." $ .k<'<.CE" %!06 08!09!05<<!
C,=!/ 0:=!, 0; 0:!0:?<." $ .+" %?<." $ .k<<!.C;" %!0;<<"
C,=!/ 0<=!, 0= 0<!0<?<." $ .." %?<." $ ..<<".C;" %!0=<<#
C,=!/ 0>=!, 0? 0>!0>?<." $ .1" %<<#
C;P5
C 8?<." $ .aH 8" %!0?<<$
C,=!/ 0@=!, 0A 0@!0@?<." $ .4" %?<." $ ..<<$.C;" %!0A<<%
C,=!/ 0B=!, 0C 0B!0B?<." $ .7" %?<." $ .k<<%.C;" %!0C<<&
C,=!/ 0D=!, /o 0D!0D?<." $ .:" %?<." $ ..<<&.C;" %!/o?<." $ 0E" %3 !" & .?H'<" %?<." $ .Z" %J'<N<I=!/ 0F=!, 0G 0F!0G" #!0FJ'<N<J=!/ /o=!, .= /o!._ 0H$ ((/,'103 VACANCY %: ')   !0H!.d 0I$ +(/,'104 MARGINAL F.I.T. %: ')    !0I!.g 0J$ *(/,'105 TAX ALLOCATION %: ')  !0J!.j 0K$ )(/,'106 LISTING PRICE: ')  !0K!.n 0L$ /(/,'107 SCHEDULED GROSS ANNUAL INCOME: ')    !0L!.q 0M$ -(/,'108 ANNUAL OPERATING EXPENSES: ')  !0M!.u 0N$ ;(/,'109 YEARLY ADJUSTMENT %     1   2   3   4   5   6   7   8   9  10')          !0N!.t 0O$ =(//,'    3 CHARACTERS EACH ENTRY (SPACE, -, OR + GOOD FOR FIRST CHARACTER)')           !0O!.x 0P$ ,(/,'  1091 LISTING PRICE      ')    !0P!.. 0Q$ ,(/,'  1092 GROSS INCOME       ')    !0Q!.. 0R$ ,(/,'  1093 OPERATING EXPENSES ')    !0R!0S 0T$ #('% ')   !0T!.. 0U$ .(/,'110 INITIAL DEPRECIATION BASIS: ')    !0U!.. 0V$ -(/,'111 DEPRECIATION LIFE (YEARS): ')  !0V!.. 0W$ ((/,'112 SALVAGE %: ')   !0W!.. 0X$ )(/,'113 MONTHS HELD: ')    !0X!.. 0Y$ 0(/,'114 DEPRECIATION METHOD (1,2,3 OR 4): ')    !0Y!0Z 0[$ 3(/,'115 OPTIONAL DEPRECIATION ELECTION (1,2 OR 3): ')    !0[!.  0\$ 2(/,'116 DEPRECIATION RECAPTURE PERIOD (MONTHS): ')    !0\!.# 0]$ .(/,'117 YEAR    CAPITAL IMPROVEMENTS')    !0]!.( 0^$ $(/,I8,8X)   !0^!.+ 0$ -(/,'118 INITIAL BORROWED AMOUNT: ')    !0!.. 0_$ ,(/,'119 LIFE OF LOAN (MONTHS): ')   !0_!.1 0a$ *(/,'120 LOAN INTEREST %: ')   !0a!.4 0b$ /(/,'121 STARTING MONTH OF LOAN (MONTHS): ')  !0b!.7 0c$ -(/,'122 CURRENT BALANCE OF LOAN: ')    !0c!.: 0d$ -(/,'123 TYPE OF LOAN (1,2 OR 3): ')    !0d!.a 0e$ #(F5.2)   !0e!.k 0f$ #(F11.0)  !0f!0g 0h$ "(I2)  !0h!.. 0i$ "(I4)  !0i!.. 0j$ "(I1)  !0j!0k 0l$ #(F2.2)   !0l!/0 0m$ -(/,'18 GROSS SCHEDULED INCOME ',1X)    !0m!/7 0n$ *(/,'19 VACANCY LOSSES',10X)   !0n!/= 0o$ +(/,'20 OPERATING EXPENSES',6X)   !0o!/C 0p$ ,(/,'21 NET OPERATING INCOME',4X)    !0p!/I 0q$ +(/,'22 PRINCIPAL PAYMENT',7X)    !0q!/O 0r$ *(/,'23 INTEREST PAYMENT',8X)  !0r!/U 0s$ ,(/,'24 DEPRECIATION ALLOWANCE  ')   !0s!/[ 0t$ *(/,'25 TAXABLE INCOME',10X)   !0t!/a 0u$ )(/,'26 TAX PAYMENT',13X)   !0u!/g 0v$ ((/,'27 TAX SAVED',15X)  !0v!/m 0w$ *(/,'28 SPENDABLE INCOME',8X)  !0w!/. 0x$ )(/,'29 SALE PRICE', 14X)   !0x!/
 0y$ *(/,'30 MORTGAGE PAID',11X)    !0y!/. 0z$ *(/,'31 MORTGAGE UNPAID',9X)   !0z!/. 0{$ *(/,'321.0 OPEN "RESULTS" FOR OUTPUT AS FILE 1  
1.05 DEMAND IN FORM 1: B  
1.1 DEMAND IN FORM 2: M,Y,P,R
1.2 DO PART 2 
1.3 SET R=R/1200 
1.4 DO PART 3 
2.1 SET I=1
2.15 TYPE IN FORM 4:
2.2 DEMAND IN FORM 3: A(I),M(I),Y(I)  
2.3 SET I=I+1 
2.4 TO STEP 2.2 IF A(I-1)#0  
2.5 SET A(0)=I-2 
3.1 SET J=1
3.11 WRITE ON 1 IN FORM 11: R*1200 
3.12 WRITE ON 1 IN FORM 12: B
3.2 DO PART 4 FOR I=M TO 12  
3.24 CLOSE 1 IF B<0 
3.25 DONE IF B<0 
3.3 SET M=1
3.4 SET Y=Y+1 
3.45 WRITE ON 1 IN FORM 100: 
3.5 TO STEP 3.2  
4.05 DONE IF B<0
4.1 DO PART 5 IF M(J)=I AND Y(J)=Y 
4.2 SET I1=B*R
4.3 SET P1=P-I1  
4.4 SET B=B-P1
4.5 WRITE ON 1 IN FORM 10: I,Y,P,I1,P1,B 
5.1 SET P=P+A(J) 
5.2 SET J=J+1 

FORM 1:.
PRINCIPAL AMT:  #####
FORM 2:.
BEGINNING MONTH:  #####.
BEGINNING YEAR:   #####.
MONTHLY PAYMENT:  #####.
ANNUAL INTEREST RATE IN PER CENT:  #####  
FORM 3:.
#####  #####  #####  
FORM 4:.
ADJUSTMENTS: AMT, MO, YEAR:
FORM 10:.
%%/%%  %%%%.%%  %%%%.%%  %%%%.%%   %%%%%%.%%
FORM 11:.
LOAN AMORTIZATION SCHEDULE.
.
.
         INTEREST RATE:  %%.%% PER CENT PER ANNUM.
.
.
.
 DATE   PYMT    INTEREST  PRINC     BALANCE.
.
 
FORM 12:.
                                   %%%%%%.%%
FORM 100:.
.

>                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                         2f P   (  )  /  #  2  :  D  D  T...  @]$rmevUP !R_@ )  $  #  2  :  D  D  T...@ *  %  #  2  :  D  D  T...@ +  &  #  2  :  D  D  T...@ ,  '  #  2  :  D  D  T...  -  .  /  0  1  2  3  4  5  6  ;                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                -.D                                                                                                                                                                                              U: U? P. Y. p                                                                                                                                                                                     PU P9                                                                                       X..X. aN                                                                                                                                                                                                ?  ?                                                                                                                                                                                      ? .  . .T   .i         ...............  )    W_...  ?...  !......  ( ^U            ...... .    H     /. Ze %K %K ) )        ,  *                         .( P"(P'......  . "_                                         @ ). ). )w ) )/ (. (a (I (= ( '.              @                         ). ))t )\ ), (. (^ (F (: (
 '                                         #  (  (  (  (  7  5  7  7  7  6              @  @        @  @............  $(   ). ). ). ).>.3  =!W ^zu " !Y/!X<!Wu " ^c> #3  4!X !a ^wu " ^
...............................................................................................................                                                                                                                                                                                                                                                    .  ..^8     !      ...> '       /a      &. &.%FE/2122,23242526;R                                                         '_ 'b%FE/2526;R                                                  ...  &   3Pe   (U6 UP        /......   ...                                                                                                                                         z ).............     !-[. %K %K Q:    (    ...        *  1    Q:  / $. Q:         -.e-.M-..-.p-.z-.M                                           "J......      ...     (    @.> @...   .........  # A.......      3     ... @.T   "j     %...  F %K  $ H.  8 _            '?b....        !-X.  &                                                      X    $ @.+M_  $   6._  $!  n\_  $0  b.   $%  b;   $-  +J_  $$  j.   %) !j{_  %) (7l   $&  WI_  $'  6.   $'  Z.   $(  7-_  $)  oh_  $.  oh   $/  on   $/     %) ak_  %) _+N   $0  +K_  $1  .h_  %3 !.h   %3 ".n   %s  .h.  %3 #.i.h %s #.8   %3 $.H_  %3 (.8   %3 ,*8_  %3 *&H_  %3 %/(_  %3  .>   %3! .(_  %3! .N   %3 0/(   %3 @.(   %3 P.._  %3" '(_  %3!!Ri_  %3 .oi_  %3 r.y_  %3 .nY_  $4  +L   $4  nX   $5  n[   $5  ox   $6  &i   $6  ox_  $7  &h_  $7  n\   $8  V;   $8  .x_  $9  &k_  $9  W{   $:  2=   $:  kZ   $;  j^_  $;@ SL.  $;H SZ   $;  Z.   $;0 R^_  $;@ n[_  $<  Rn   $<  nX_  $=  nY_  $=  nY   $>  Rh   $>  Rh_  $?  6>   $?  *\T  $M  ok_  $N  .Y   $N  oj_  $O  >Y   $O  GX_  $P  n8_  $P  2J_  $Q  2K_  $Q  3._  $R  3._  $R  R<_  $S  n<_  $S  G]   $T  ]   $T  7,_  $U  :m   $U  :|   $V  ;X   $V  :9   $W  .Z_  $W  .;_  $X  .;_  $X  n\.  $Y  n\.  $Y  .Z   $Z  >Z_  $Z  Rl   $[  ol   $[  nLM  $\  nLR  $4_ /lL  $]  +L_  $]  rZ_  $^  r[_  $^  *;_  $  jZ   $3                                                        Rn   $-  .(_  %'. .;.  %' !om.  %@_l.H_  %'' .(   %'+ +L   $(  7l   $!  .8   %'& +M_  $   n[_  $-  G+   %  hWI_  $!  n[   $)  .IA  $'!#.n   %'% SZ   $,! b;   %&  oh_  $#  ox   $)  +N   $%  R^_  $,  F
.s %@_iRh_  $/  oh   $$  &i   $*  kZ   $," Rh   $/  n\   $*  j^_  $,$ .._  %'/ .h_  %'# .h   %'$ Z.   $"  cK_  $0" &k_  $,  V;   $+  .h.  %'" 7-_  $#  b._  %@_jb.   %&  .yA  %'! .x_  $+  .Xn  $'  k<_  $0  >.D  %@_m.KA  %' "w,   $0! Bm   %   bj.4 %@_n.N   %') nX_  $.  SL.  $,# .>   %'- nX   $(  .yA  %'  .;.  $'!!.;L  $"  .8   %'( .Xn  $'! k.D  %@_k6>   $0  6.   $"  /(_  %', /(   %'* +K_  $%  nY_  $'  /KA  $'!"on   $$  nY_  $.  .IA  %' #.lM' %0# .        +J_     5?L_     d?Lq     e;I     h;Id    iZEP    s3\L(    2;.     .bP     %c'@     %e+@     %f.@     %gn=Ei   % P     %'n=Ed   %(n=E.   %)s].    &_3\L    , .@     H ,      H sLC    M
/(_    M.0      O..@     P j@       j{     . s].W   .N/-20 .X Rhq|  .X/Z.To0 ..Bnk.   .XM/-.j. .XRvR\  .XT[c      (/)K._  !rjiI\   $a>YSj_  $%3L.    $w>LGl   $.3YDp   %I2YDp   '_>{Rd   )boiS_   )os].P   )tc{C@   /Jo;.&@  7_jI..p  7b*y..p  7.jiT    ?\v\Tn0  ?_X.     ?_R\Tn0  ?a[.Sk_  ?bkh.q0  ?ckh.q@  ?dkh.c0  ?ebEP   ?q6.     ?r.xIp   ?s:Th   ?tbEQ0  ?ub.R6_  ?vV;Um0  ?wb.Q    ?xb.Qd   ?y?KA3@  ?zRTh   ?{?L.;P  ?|Z{    ?                                                                                                                                                          .M$   ?.2;._   ?>2j.    ?.Nj.    ?.v._    ?.v.     ?..:.    ?.6[T    ?.7,T    ?..[T    ?.b..    ?.R..4   ?.r;.Z.  ?
3{.    ?.j]R    ?j|.0   ?p      ?.s].[P  ?.7-R    ?.3l.    ?.2H.0   ?.3Y.p   ?.3{Ip   ?.Ol.    ?.OlA.P  ?.NH.0   ?.OY.p   ?.O{Ip   ?.>.     ?.>.1    ?):.M    ?/b..d   ?o-t7h   ?.P      ?.R..    ?.vXn0  ?.RXn0  ?.[.S&p  ?.&x.q0  ?.&x.q@  ?.&x.c0  ?.&|.zp  ?.k\A3@  @,&x.T   @-k]Cd   @.k]Ch   @/k]Zj.  @0j|.k_  @1
<AVP  @9k]P[_  @LbLK    @MV9.,   @N29I'.  @O29LFp  @P29C[_  @Q29TW   @RFlA3@  @S2;.o   @T29Sa0  @X2;.{   @c29DS0  @d&x.-0  @m&x.q0  @n&x.+P  @o&x.L   @p&x.M0  @.&x.M@  @.B._    A.R_     D V;I    D7V>I    D8bR    D9W_     H :_     H*cl     H;7@     H<:h.    HGr..    J q0     J6qP     J7b..    J8q@     JFq_     JG3_     K!5      K'F..    KKbj.d   KLbj.e0  KM7LOh   KO50     K]5@     K_5P     Kc5_     Kfq4     Klq4_    Kmq4     Knq4_    Ko3$_    Kp3$     Kq3$_    Kr3%     Ksc]Arp  KtbZK_   KuV<.    Kvb<1    K b<2    K#b<3    K6b<4    K=&lS    KA2M.8   KBV>A3@  KCV;A3@  KDb<M'P  KEs      L s$_    L+c      L2H      M 2..    M_.:.d   Mh.*.t   Mq3I.    M.b._    M.b.     M..*.    M!.*.d   M1.*.h   M7c.     M>7LX    M@7NX    M@F..h   MHr0     MY.;Sp   Msj;Sp   MtV>Dl   MvV;Dl   MwV>D(   MxV;D(   My:.N    P :.Nd   P7:.Nh   PB:.Np   Pa[-N|   Pc;.     Pk;.A    Pr/H     Px/HA    P..h.[P  P..KO,   P.jKO,   P./..P  P
j|.P  P.F..P  P.r|R    P4r|R$   P9r|R(   PC7MYc_  PH[..p   PI7M.    PZ.)Ap   P].)Ar0  Pe.)Ar@  Pg7L     Pxs].,   P>.,E<   P..,E>0  P..,E>@  Q$.,E?_  Q'.*qT   Q(.*pT   Q)oj.    Q,oj.$   Q/[I.                             #                                                                                                                                                                                                                                                                                                                                                                                                                                                                     ] 1] *] *                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        fh#P. *P 1. (  *B **P....0(q. Y ?. O...... #(.$(.%/.-(.%*1"/Y/(..5. *G%/."69 0%/(%'5n 0? 0P/hr.5. 0P 4 /
 /c 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4. Z. [. \-(!/6$%/.*(+ _  1. 1. 1. 1. 1. 1. 1. 1. 1. 1. 1. 1. 1. 1. 1. 1. 1. 1. 1. 1. 1. 1. 1. 1. 1. 1. 1. 1. 1. 1. 1. 1. 1. 1. 1. 1. 1. 1. 1. 1. 1. 1. 1. 1. 1. 1. 1. 1. 1. 1. 1. 1. 1. 1. 1. 1. 1. 1. 1. 1. 1. 1. 1.,#)*6?%/U *G/(4!6@+(4"(4,"/%*1".0%/."6A 0./hr(5. 0O$(."5n#(./('#((/5.%08/(4%0:%0_/(''6C 0@-6B 0\)(. 0$-((%*1b  -(.%*1"/Y/(.#(4/hr(5.'5. 0. *G'5n 06 01$(.,"/'5n 0X/(4 .*/5n$(./5.-6C$('%*1b  /(4  $               (  (_  gH !K !. "R "g ". #J c#  q# .-'
/_.'# ,!(''.  y( o*'$ .$ .@g./ .- .% t+ .  r #K   /  ...@."  .  %        !  X  %  @         -  $''/'&'.$'./'..'.  . gW/'.&'.$'./'.!'.(''#' -  $')/'&'.$'./'..'. !+ gX/' !'.*'.'& /'.&'.(')#'
-  $'//'.' !#'./'.&'.$'./'..'. !? gY/'.&'.$'./'..'. !F !H/'.('//'.#'y/'
''. !N !P/'.@g./'.' !#'./'y!'.('/#' -  $'0/'.' !#'./'.&'.$'./'..'. !c gZ/' !'.'& /'.&'./'.' !#'.('0#' -  $'./'.# o/'  _p#'y'' !'.#'|-  $'(*'|"  /'.#'. !@g^#' !'.,#&''. !. !./' ('(/' !( -'.#g|+'./'..'y !.+'(('(!'.#'|-  $'!-'./g|'$ ,!&#'v-'./g|'$ ,!,#'u-'./g|'$ ,!2!'u!'v-'.!g|('!#'4-  $'2,#2!'.@g_/'4,#,!'.@g_/'4,#&!'.@g_/'.!'4@g_('2#'5-  $'*'$ ,!"*'5#'6'$ ,!$*'6#'7'$ ,!(*'7*(!,#0('*-  $'$/("/'.&'./'./(#&'./'&'.$'./'..'. !Z !]/'.&'.$'./($/(o&'./'&'.$'./'..'. !g('$/'./(%&'./'.#'. !u/'&'.$'./'..'. gd+'./'..(! !m('$/(&@g_/('@g_/'.@g_/((@g_@g^'() !. !./'.('$/'.#'.#'.+'$('$#'.-  $',/'.#'./'./(*@g= gj/(+@g_/'.@g_/'.@g_/'.@g_/(,@g_/(,@g_/'.@g./'.@g./'./';@g gN@g^#'y#'y'(- "0@g^@g^ gv/'y'(. "4 "6/'.(',/'./';@g gM@g^#'y/(//(*@g= gk/'.#'./'y.(0 "F "J/'.#'./(1(',+',(',/'.(',/'.(',/'.(',-  $'-/'.''. "X "Z/'.('-/'.''. gp/(2@g_/'.@g_/(*@g_/(3@g_/'.@g_/'./';@g gE/'./'c@g gE/';@g:''. "u'#  "v/'.#'.''. "z "|/'.('-/'c@g:!(4#'./'./';@g gE/';@g:#'./'./';@g gE/';@g:#'.#'./'c@g:''. "./'.#'.)'. ". "./'..'. ". gg/'.*'.#'6/'..'6 "# "'/'..'6 "' gg/'.,'./'.#'./'./';@g gE*'."  )'. "8/'./';@g gE gr/';@g:+'-('-#'y'(- "B@g^@g^ g9/'y'(. "F "H/'.('-/'.#'./';*'.'& /'.@g gM@g^/ ..' "U "W/'.('-'' .' "[ go/'.#'./(//(*@g= gq/'.#'./(5('-/'.('-#'.-  $'.#'./'.''. "o "q/'.('./'.''. "u "w/'.('./'.''. "|/'.('./'.#'./'.#'./(6@g_/'.@g_/'.'$ ,!!*'.#'.,#,!'.@g_/'.,#&!'.@g_/'.!'.@g_+'.('.#'y-  $'3/'.''. "./'.('3/'y@g./'.,'./'.#'w/'..'w #)/(1+'3('3/'.#'./'..'. #/ #1/'.@g.@g. g.#'y'(7 #8/'.#'./(,/(*@g= g.#'y'(7 #A/'.#'./(//(*@g= g./'.+'3('3/'.('3#'.$'.$'.-  $'+*'."  /'..(' #V/('#'./(8@g_/'.@g_/'.*'.#'y,#&*'.@g_/'.!'y@g_/'.'$ ,!0*'.@g./'.*'.@ge#'y/'.#'. #v/'.*'.'. o  @g.+'./'..'y #o/'y.'. #               '.@g.@g^'() #. #./'.('+@g^'(9 #. #./'.('++'+('+/(:# _/(;@g./(<@g. #. #.            /(=##. #.GO$GO//#.@g. gL#'y$'               $'"@g./'.@g>#'y'(> #* g>/'y'' gm g               (;@g./(<@g. g               (;@g./(<@g./(?@g./'.#'.#'./'.@g>#'y'(@ #O #G #J            /(A##B #LO TO/ /#B/'J@g</'y'(B #_ #X #[            /(C##S #]EAD/  /#S/'s@g</'y''. #q #i #l            /(D##d #nDUMP/ /#d/'.@g</'y'(E #. #z #v            /(F##u #>RITE/ /#u/'y@g</'y'(G #. #. #.            /(H##. #.NIT/  /#./'b@g</'y''. $& #. #.            /(I##. $#CREATE TAPE//#./'u@g</'y'(J $8 $/ $2            /(K#$* $5IRECTORY//$*/'@@g</'y''. $I $A $=            /(L#$< $FRUNCH//$</'a@g</( @g. gL/'.#'#'./'y'' $i $X $T            /(M#$S $] & GO//$S@g./'.@g>'(> gL/'.#'/(;@g./(<@g. $o $r            /(N#$j $v FILENAME: //$j@g./'.#'. $./'.@g>)'-'.#gc+'./'..'. ${/'.@g>'(> gt/(;@g./(<@g./'c@g:@gi gl@g| gw#g./'..(O $.+'. gn)'. $. $. gg#'..'. $  gx $& $)            /(P#$! $+LA: / /$!@g./'.@gU/(;@g./(<@g. $9 $<            /(Q#$4 $>WC: / /$4@g./'.@gU/(;@g./(<@g. $L $O            /(R#$G $QTA: / /$G@g./'.@gU/'''. g. gL $ $[            /(S#$Z $nWARNING,WORD COUNT WORDS NOT READ/  /$Z@g.@gQ gS gL $y $u            /(T#$t $.FILE TOO LONG/ /$t@g.@gQ gS gL $ $.            /(U#$. $.FILE WOULD OVERLAY LOADER/ /$.@g.@gQ gS gL %# $.            /(V#$. %+M30 READ ERROR//$.@g. gL#'. %5 %1            /(W#%0 %@M30 OR TAPE NOT READY/  /%0@g. gL#'.'(1 %X %L %H            /(X#%G %UFILE NOT ON TAPE/ /%G@g. %i %^ %Z            /(Y#%Y %gM30 SEARCH ERROR/ /%Y@g. gL/'.#'y/'.#'. %./(6@g_/(*@g_/(*@g_/(3@g_/'.@g_/'.#'. %./gy@g.+'y+'./'..(Z %|@g^'() g?+'./'..([ %o gL %. %.            /(\#% %.DUMP FAILED//%@g. gL/(;@g./(<@g. %% %!            /(]#%  %*FROM //% @g.@gT#'. %4 %0            /(^#%/ %9TO /  /%/@g.@gT)'.*'.#'. %E %A            /(#%@ %NTRANSFER ADDRESS //%@@g.@gT#'./(;@g./(<@g. %\ %X            /(_#%W %bTO FILE //%W@g./'.#'. %n/'.@g>)'-'.#gc+'./'..'. %g/'.@g>'(> gG/(;@g./(<@g./'c@g:#'.@gi g. %. %>            /(a#%. %FILE ALREADY ON TAPE//%.@g. gL#'.'(1 %. %./'. gl/(1#'./'..(b g\+'./(c,'./'.@gg./'.@g. g./'.@g. g./(b@g. g./'.@g. g./(b#'. &5/g.@g. g.#'y+'.*'. &0/'y''. &; g[ &A &=            /(d#&< &OEND OF TAPE, FILE NOT FINISHED/  /&<@g. gL#'. &Y &U            /(e#&T &bM30 WRITE FAILED/ /&T@g. gL/(f.'. &j/(g &l/'.*'.@gg./'.@g. g./'.!'.@g. g./'.@g. g./'.@g. g./'.)'.#'./'.#'. &./g.@g. g.#'y+'.+'./'..'. &./'y''. &. &" &. &.            /(h#&. & END OF TAPE, FILE FINISHED//&.@g. gL@gQ gS gL &, &/            /(i#&' &8INIT FAILED, RESTART M30/  /&'@g. gL@gT#'y gy/'./(*@g= gz/(,/(*@g= gz/(//(*@g= gz gL g{-  $'%/'.#'./'.@g>#'y'(> &V gP/(j,'y)'y &[ gm/'y.([ & gm/'.'$ ,!#*'y#'. gR/(;@g./(<@g./'.('%#'{-  $'&''. &s gV*'.#'./(k#'./'{-'.l# ''. &               '
,'. &u/'. &./'
*'.#'.*'..'. &/'{-'.l# !([*(l@g. &>/(+@g.('&#'$'.-  $'#/(m@g_/'.@g_/'.@g_/'@g_@g.('#+'#('#-  $'1@g^#'8'() '& '+/'8'(7 '* '+ './'8+'1('1/'8'(- '4@g^@g^ g./'8('1/'./(*@g= g{/(2@g_/'.@g_/'.@g_/'.@g_/(n@g_/'./';@g gA/'./'c@g gA-'co  .' 'Q gB/'.#'. 'Y-'./g; (p+'./'..'. 'T/(;@g./(<@g.@g^#'y'(- 'f@g^@g^ gD/'y'(. gx/';*'.'& /'.@g gx@g^.' gL gC gm                 $      _ . &;        $                (p        "  !  a  d     $  $   ... X    .|q            !   .|    c#    h      * b9 cN b? f$ f; dT a. bO a>       d. d.    fQ fh f. b#         !       . "g !._ . #. &. #. %. '6 '_ ' ': 'D "< $x %R #.  . &; !+ #3 "L "* "< &e !K &P && &L &k & . !$ !8 !\ %. &e %.  . !s !! 's &#_ . !x !: $s $. #J !. "N "P %C $I $. "] "+ "e "3 $L $i &> "$ $. $. %. &K &S "R "g !l !2 !V %j '! $Y &. &R %. !( #H "....  /  @_ 0    ! _ c  .    (   c     "  "_    %  .  $  $  !  _  #    _  a '   ( (g  ^  $  j  .  a  b  c  .  .  d  (...  (  ....  &  "  .  '  . _   -  * #.  N  C  g #J  r #[ #l  w # i #. #.  d $2 $D $[ $r _  $) $< $O $b $| $. %& %8 %O %a '.  ' %. %( %7 %H % %. '...$ &D &\  0  4 &. &/..p  5  P  +  f  $*'@g. 'W 'X   '!"%?\%?\                                                                                                                        -)w *GX..X.                                                                                            0$ "  0$IkXIkX   IkXIkX         ............    A. ?_... ?_  $  (......... . 0F   ...p '   %?\%?\%?\%?\  &  "     (-..p  "/e 1[  /...        g 4 /
 /c 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4_<$_<%_<&............/         <&              (  H    0$  /..W    )% +# +' /+ .. 0P -.      ....../AX        ( 1[......g<$%-. -. A.......        $       0: *P    1: 1:   ......... A.             4^ QZ          0.,.   )"    6D    6F    6J    5.    5.    5.    5
    5    5.    5.    6$    1o    5. .#.. _     
._ .. %?\ ( %4 *G( f  "(   _      "(   _ 2m   %%?\+M_  $   b.   %&  b;   %&  .;L  $"  F
.  %@_ib._  %@_jk.D  %@_kom.  %@_l>.D  %@_mbj.  %@_nG+   %  hk<_  $0  7l   $!  WI_  $!  6.   $"  Z.   $"  7-_  $#  oh_  $#  oh   $$  on   $$  +N   $%  +K_  $%  .h_  %'# .h   %'$ .n   %'% .8   %'& .H_  %'' .8   %'( /(_  %', .>   %'- .(_  %'. .N   %') /(   %'* .(   %'+ .._  %'/ .h.  %'" nY_  $'  +L   $(  nX   $(  n[   $)  ox   $)  &i   $*  n\   $*  V;   $+  .x_  $+  &k_  $,  W{   %%?H2=   %%?JkZ   $," j^_  $,$ SL.  $,# SZ   $,! R^_  $,  n[_  $-  Rn   $-  nX_  $.  nY_  $.  Rh   $/  Rh_  $/  6>   $0  .K_  $   .;.  %' !.IA  %' #.yA  %'  .KA  %' ".yA  %'! .;.  %'!!/KA  %'!".IA  %'!#s]G  %%?T.;   %%?L...  %%?NF..  %%?XZ..  %%?^F;   %%?Z2<   %%?V6<   %%/./KF  %%?Pr8   %%?Rjn   %%?F>Z_  %%6N>Y   %%6y>Z   %%6\.Z_  %%6..Y   %%6.w,   $0! cK_  $0" w,   $0! ...$(!/7U' #'# -7Vc)R%*.'% $/H0?_$(S$(U$(R$7d0 ($(W00F$(\01[$).00.$)O/-k#(/-./-.#)2$)30 $$7c0.$([/7W#(T#(X#(Y#(Z/)t-7Xc(Qd(e%*3%4-7X$7_-7Y$7b/+^/+#("$(#/7Z#2_%0$-7Xg!$c)|c).%*C-7Xo(e')t *L *OchQ/)tc(e%*H%0$00*$0@$0A00:$0B$0C/7W#)D#)B/7.# C/7.# D/7[# $/7\# %/7]# &/7^#)R%1K/7%0.%1E-7_p !o)mc?_%*k'# #(.#)G#4.#0E/7W#)/#))#)(/7a#(m#(./7W#)5'" #(]#)H$)I/7W#(^#(.#)6'# #)L/7W#(n/7W#)0'# #(o'# #(_/7W#(#(.'" #(.$(.#(.#)7$)8/(W#)-/7b#(e/7d%-.#7d/7^#)R-7U%+_"+&_  '- %+_"19!7c#)B, /.7dpwT!7e#)9o7U!7f.)9%+/.)o +%o7U,#5!)($(i'- /7W#)(_+X))6 +A/(.#)L%+_"/*#(.-(im7U +v%+_".. +C))6 +M +?%+_"/*/)H(7W +. +C/7b))6'(e +M +D +D +S +J +G +=  !X..X.  +'+(..)R +e +k'. 0iRpW $+{p) '. +(.++_++_!)m#iR++_+k_#+|+k_+)R k|*)R(iR*)R+iR(iR  %"19 n#(.$)P++           + )m!7U++                k                                                                                 -7g'# (7W + +.(7h*(.,"!(7h%+%+.(7h +.-)P(+         (.,#!, ! +. ol,"!,!!$)P#(g++.++.!)m!7U++.0k.o  #(h/(g-7g.7i +1)(h +3,!!*(h%+) +8)(h +-,$!*7i, ")(h%+).7i +=)(g +H +D)(g +@ +J*(h'( *7i +J)(h'( *7j +J'( *7k-)P(+. -Q++L/+L!)m#+L/kL#('* 0h$(o  o !-((+L/)/))6.7W +v))G +a +
'# ')H +t/7d'(R +j/)L%-Z +q)(m +l/7d%-./)L$)E#iE))) +v -?/)L.)m +./)H/)I#)7$)8/)s%+_"-. +.%.#!7l!7m#h
/7W#h./7d%+_"-y,)L +d%0Z"7n))/ ,K *i/7o%0. +/7p +./7W#(/7q#(e+)6/)6.7r#)L *./)o,)L+)6 +./+^/+)(%+L")7%+_",+ +
/7W *.-7sg(B%,8'( g(C%,7', '$ *7t,!%#(L +x'( %,, +v"/e/7b))6'(e ,D /T"1P"1["iO"/o  #(k%1K/)L-7W%+_"hk%1K *{ -
!)n.7i(,M!)m(,M"1["7Z"/e"7u"iO"7v"/"7uo  #).o_!#2_ *i))6 2./7.#(\ *i.7h ,h -w/7##(\ *i"(V)(^ ,."(R!)m"(U"(S"([%,M%,."(H"(I"(J"(T"(."/H")|")  ).")>m  /(e'( '7b ,.o  #(. +.d   *i)(^ +
#(]'# #(^ *.%,.#([/(]%,.#(S *i ,t#, /(e'7b ,.(,.'!#.,  +
/, (,.   %+_"+Z))) ,& *t/7d))6*7h#(R/(m.7w ,//)*%-Z/))#7d*+]%-Z*7h%-Z%+_"-? *t%+_"+Z+7d%+_",? ,K *o/7d%,M#7d#)L))) ,H-7W)(. ,^/(m!7c#)B%/I))) +v'# #)(#)6#)G/(m-7U%+_"+)o_ #(l/7d%-.$7d'$ $)/ ,.%+_"h\/):#(L ,H%+_"+Z/)L#7d ,l%+_"+Z*7d"  %1E ,;%+_"+Z/7d*7h%,M#7d'- %+_",. *{")./7i,)B").",A",:",B",Co_ #(l/)B))6#(m))6 -3/(.%,M)(^ -"%-.%+_",. ,K *o))B ,. ,.$)E/iE#(. +v%1K$)E/iE#(.%+_"hl))G +v/7x%0. +x)(m -% ,/(]%,M+7d#(]%1E%+_",?"  %1E/(].7d *i+7d -*%+_"../)H(7W +.%,M#7d'$ $)//):$(L ,.%+_"1A/)s/h.-)s%-W/h
.7m -I%-W"7m#)8$)C/(R#)4%+_"-_%+L"h., ,%-Z-)C%-V/)s%-X%-B +v +h'& /(R'7y -_ .8%-.$)E$iEp !', '7y -h .8#(R'' (-Zp 'p %"0."0.o  #)Oo.#( +))6 3Z/7m#(W *i/7z -w/7W#(. + ,Y%,M.7{ -.'. (-..7| -.'. p(P(-. *.%,M.7              7.(-.*7>(-.      %+_"1A/)7 )1%-. -./h
-)8%-. +v/)7%-.%)1 +x/)4(7. -5/)7'7Y -*/)4%,M#7d +v/)s%+_"-. -;%.#/)8/)4+h
#)8$h. +v/)8!7.(7.!7h#)8 -#.7. -R/)8(7. -A -]")8.7. -E -]")8.7. -N.7m -N/)4'h. -N +v/7.,h
,)8 -./7.,)8/h
")8.7. -Y -]%+_"-. -U -..7m -_ -//h.'7W -d -w,#.#)?, .$)9%-.$)@/)4*)? -n%,Mk  '& !)rl  '' %-.', ')@ -i-)9 -/#)9/h.'7W -./)9)(n -.!)o#h.%,M +v0h.)(n -./)ol  o  !)r!)9k  %,M +vo  ,#..7r -.#)@*)@ . ', b  .)m -.o  !)r!)9c  %,M +vo_ m   -. +>-7_%.+$7_/)7#h./)8(.# .%/7.,(.,(
,(.'. *7.'& '/ *7W-7..7.(.+/7.%0. +
/(.%,M)( .L))6 .F#)L0,A))H ,A +./(.%+  )o$(. *./7d#)4)( .P +
%+_"-  +#)4+)5 *               (./7m .[/(./7z#(.$(.)( .l)(. .k/7b.(e .k'# #(.#(.+(.#(.+(. .l+(/)B'$ -(e_.p *.,$&,$&,$&,$&,$&, 2,)7'' ,)8+)6*(e *.)( .k/)-%+  (.,!7*)B)7.#(./)B,$#/(., ##(./(.%+  7q,!8*)B)7.#(. .l)( .)/7W+(..7W .$/(.!7.#(./(. .!%+  (.,!7*(. ..#(./(o-)0c.a#(o +v/)s%+_"-. .. .V.7. .8.7m .L/h
!7.#):/h.#(. .$'# #)?/h
!7.'(L .G$)?%+_"-. .:))? +.-)?/h
 .0)(_ .?')? .? .>/)7+)H'7r +.)(^ +./)8#)I/(o +v/(n'7W .L%+_"1:/)s%+_"-. .5 .L*(.)(. .m .q .u .| ..!(.!(."(. .. .. .%+  (., 7 .',"7%+."(. .'.(. .y'#  .''(. .. .w'(. .w/7h .'.(. .w ..,"7%+."(.''  .'%+  7
,!"*(. .'%+  7
,!")(. .'%+_"..!(n*)L#)L)(. .. +v/7W()H +.$(.$)0/7.,$,#)7$)8/(.#)L'# #(o%+_".) ..%+_"..)(^ // +v'& '# ,$#!(]#)L +v/)L/)m.7i/7$(n *. /H /H /H /H /H /H /H /H /H /P /H /H /H$)B%+_"../)B)7#)0+)6 *))6 /H0,Y ,Y)(. +
/7W.)H +./)L.)m +
#(.+(. *./7.-7. /e%0Z"7.'/ #(B'" #(C/(B#(D,#7%+."(W'(C /i'' *7.%/I/(D'(B /g +v 19$0L$0M/0C'0B /y/0@'0A /. /|-0@%/.%/.%/.o  $0@%/I/0L-0M(/v /|#0E/7i'  #/G'# ' !#(f$0G$0H/(q*7.!7c)/H /.'7c /. /:'7. /)#)B//
# "%0Q/(f' !/0E/0G-0H%21 *G-0A%/.'. '0@ // /2'. c  $0A/0G-0H/(f' !//G'  /0E o
/7.#)B%0Q/(f' !/0E/0G-0H%2>%0$//
%1z *G( f    0d$0P$0O-0C%/.%/.%/.'. '0B /T /Q'. c  $0C'& '# ' !+ *!7.+ *!7.' !'' /0O-0P(/I />#0I/7i'  #/$0J$0K/0B'0C /n /.'- '# ' !#/.%/.$0Bo  *7.# Y/7.# **7.# Z*7h# [//.!7.' !/7., */0J-0K//'  /0I oc/7.# **7h# Y /.     " /M+/.'# ' !+/.(/. /O+/.' !+/.(/.    /rp !i  (/.p_ '. !7y'. (/. *P'# ' !!7.' !(0$  B  4  ;  G  2  0  5  4  1  ;  U  4  4  ;  A 0*  D  D  T    
 0: 0* 0* 0> 0>            -.e 0*   .."   .."       )q /!'# -7.c09%0T-7.c0?%0W(0Q qI#);$)<+0Z+0Z!)m!7U+0Z0pZo  %/I/);-)<(0Z   +0h+0h!)m!7U+0h0ph'. !)m#(.-7./h.'# ,!('7. 0y 0.'7a 0     5u(0h%/I%0t+(. 0r%0Z"7.%0Z"7. 0.'& '# , &%/I'' '7r 0. +v'& '# , (%+_"0.'# (7W 0. +v.7.%0Z"7b!7 %/I +v *h%+_"0.(0./h./)s-)s 0+%0Z"7!/h.#)?/i? //h
!7.'7r#):/h
.7. 03 0@,$%!7"$)?'- .7r 0=o("%0.o(#%0.%0Z"7b-)?/h.%0./h
!)s%0. +v%,M*7h#(./7t#(.', '7W%,M#)=%+_"1A/7./(..7i 0W.(U 0l(h
 0..7i 0^)h. 0_%0g)h.%0g.h.%0g)h..(. 0w%0f/(.%0h%0W/(..7c 0z/(.)7h#(./)='7W 0t/(. /e/(.!)m /e#(.$(.%0f+)L!7$+)L-(.%+_"0!/(..7h +v%0Z"7% 0m/)='7W 0
 0./h
.7q 0.$)9/7&#)C/h.'7W 0.%0f%,M#)@')= 1&-)9$)G+)L!7$+)L 0!/h
.7'%0f/h.*7h'(.%0f 0./i@%,M')@ 1--)9/7.%0f*)C 0.-)9+)L!7$+)L%+_"0!/7o%0. 1*   %/v')p 1@/)q%/I"7. +v')q +v/)p%/I 1= *i%0Z")p%0Z")q(1E *f%0Z"7r%0Z"7r%0Z"7r(1K   /7(%0.%+_"19'7) +
(1S$)=/)o$)G#)L.7. 1#/)L()o%0Z"7z%0Z"7r/)L%,M-)=%+_"h\/)L.7* 1p +v!7*,#)*7+%0. +v/)L!7,+)L")L,"/%+_"/e%0Z"7- 1a/h
(7h 1 $(."7W#(./)?#)@/7.%1./)L%1.%11/)?'7/ 1.-7. 1-)(. 1u-)@%+_b  -(.%+_"0!/(.#)L/h
(7h'7r 1a +v'7W 1. 1.$(.,"/'7W 1)/)L //7W$(./7.-7/$)?%+_b  /)L-h.%1
"h..h.%1."7W.(. 1>%1.-*./1M 1C-)F 1B-(. 1B-7_/1N$(.)(.#(.)7h#(
)7h#(.!1O#)1 +v_)._7d'  !70%+  71$)L%+_"0F/)L, (!72!73%0. +v%+_"1_ 20 3_%1E!)m#)9/(V!7d!)9#(V-7W$(X$)D%2_%1.%5u%2P hV%2>/?\%1z/(K(7W +v$(X-7X%3x +v +x 1q!74#(V!)m#7d#(.'& %1.%2_'' (1z 1k-7Xi(Q 1
 1ohQk(echQ%1.(1.%21/75/_"!7e.76.7r 1./77/ ".78 2"''  4.+  # "+  %21/79 1./7:%0./ "%+_"h\%1K- "o  %+_"i.%5u *G%0Z"7n *G 1.#2=/ "!)m.78(21%0$/2=%2>/ "%1z(21%?\ 1o#(H$(I$(J-7Xo)|g $c).%2C%2I(2> 2G-7.o(Hb(Kc(H%2K(2I 1m-7Xo).g $%2R%2Z'- /(H/(I(2P 2U-7.o(Kc(H%2\(2Z 1j-7go(.k Yc(.%2b(2_))6 2j 54.)r 2n0(Z 3[-(Rp !c  /)tc !c "/7d#2./(V#2./(X#2.', %+_"1_ 20)7.'(R 2.%0Z"7./2.#7d/2.#(V/2.#(X)7h'(R 3_%0Z"7. 2. A. Q&...#),'# '(X +
))6/)L)7h#)+%1E +v/7W 2.'# %+_"2. 2')), 2'%+_"23%1E%+_"2a/(V%+_"1a 2. 3_*)+ 2"%+_"23 *i/(V!)m#7d#(./(V-7W%+_"h\'# #2^-7.o(H.7W+2^*2^%2>-7.o(H.7W 2I%2D +vo2^/2_,!,#2%1K'# '2^/2%0.%0Z"7ro(K$)Q-7W%+_"i.-)Q 2G (_ (  .   "   .  /7W#)>%2Z/(V%-.o  -7.$)N/7..7d 3O-7>m3s%2m_ss#)N,"3!7.'- '# m3t, $'. l  .7W 4./)N%31 2.$)N%2P#)N 2.+(V%2>/(V*7h%-.#(V 2.%-./(V(7d!7d#(V%2I))> 2c/(V!)m#7d#(. +v/7; 4.#)N 2>%31 2.+(J!)r,(J+(V 2..)o 3%#)N 2>%31 2.!7e,)N 2>%31 2. 2.')t 30 *i%31 2./(V!7<c  ))> 38)(Z+)>p !',  2.%31 2.m  *)> 39/7W#)> 39+(J/(J()o 3* 2.%31 2.o  *)N 2i 2.,#/!7c+(V!7U#  ))> 3W)(Y+)>/(V 3I0(Y.7= +
'/ c   *i/(V!)m#7d#(./h.')t *d/7W#(X *d 3*%3D(3<%3-#3I"2.'2.,3!02. 2p      ..... 1x!)mg(Q 3        3x%3y+3x(3x))6 3./7W 3.-7X%3x +
#(M *i-7X))6 3&%1Ko(Q.7W 3.$(]%+_"0F-(] 3.%0Z"7z%3 *i))6 3 /7W-7Xc(Q%3. *i-7.%3x 3$ +
/7W 3-%3x +
'& /7W-7.g(Q 3/d(Q *i%3+ .8 4i-7.$(.-(J'. !)m!3Y#(j', !7.#3Z', .7w#(j.)o 3H', !)m'- !3Z'. +31(31', %-.o  '- .7i 3Q*(. 3=(31.7w*(J%,M!7i'- #3[/7? 3Dp     #..",B))6 ,.))/ 3t-7@%+_"19'7A 3g 3q#('& '# l$9,(.%3b%+_"19'7A 3m%0Z"7. +.-7@%+_"19'7A 3z 3q#('& '# l$9,(.%3u%+_"19'7A 3. 3q'& '# '% #(l$!+(.#wd+7d-7@#(%3u/7B$)B))/ 3.#7d))) +
%+_"+Z/7d%-.$))o  #)*/(R!4,c  /)B!7i#(m.7* 4(/)*%-Z/(R#)/#7d ,l   %1E-7Co(B'7r 45%43%4/ *i%0.o(C%0.%1E%43'7r 4= 4O)(^ 4@#(])(].7i +
*7h'$ '/ '- /(]#)E))5/)4$iE+)E%4K *Z%1S%4'# '$ '% %2>/7D#)E'!#!7'/ *)E'-  4K%4 *i *6-7g/7Nc Y%4b-7E/7Fc  %4f/7.# C/7.# D-7go Yc(.%4m/7G# #/7H# )/7I# **7h# Y%/.%0Q%/.(4/7W$4.!(T/49))6 4. +
-7W$)5$)J#)K%1E/(T"7W#4.'# #2^/7W#(m/(S%,M#)E#)J!(T')K 4.)4.%+_"4x+2^))5 4')4.%1E+)E/)E.([ 4.%1E/2^%+_"/e *i)4.%1K/iE!4.*)4#iE)4.%+_"4. 4./43 4. 44/iE!(T')K 4. 4./iE%,M/7W()H 4A/4@ 4. 4^'7r +
/7x%0.%1E/)H/)I#)7$)8/7m,)8/7J%+_"-. 4Q *i/h.'7W 4U *i%,M%+_"4y%1E/(.%,M'7d 4V *i/iE!7.#4
'7K 4d 4./iE.7L 4h 4j%31 4.%,M')K 4n 4./4
'7v 4.-iEo  *7h%,M')K 4. 4./)E%,M#7d'% $)/-7W%+_"h\/7M%+_"0./iE#(.%+_"i. +v               %2>/4#(V/75%0./(V!)m#7d-7W$)/%+_"h\%1K/7d%-.o  %+_"i.%5u *G%0Z"7n *G/7W 5''# %+_"2. 5/)), 5/%+_"23%1E%+_"2a*)+ 5* 20%1E%+_"1A/h
.7m 5>%5;%5<%57 *i%+_"0!%1E%5;/7V)7_#(./(L,)8)( 5Y%1S)(_ 5O%+_"5 *i/7X#7_'# #(L-7Cc(B%5T *i%+_"5:/7E)(_/)s%+_"-. 5W *i'& /(e'7b 5e 5j,!,!)s#)7$)8 5Y%1S%+_"50 *i%+_"5: 5k         /(e'7b 5.%1S%+_"50 *i/h.#5q/h./h
,!,#5s'uq 5.%5.%+_"57 *i 5{%1E$5r-7W/5q%+_"/e/7M%+_"0./uq%+_"/%1K%0Z"7!/5s%+_"/-5r 5./)7'7O *i/)8'7P *i%+_"50 *i/h.#5q/h./h
,!,#uq%5,%+_"57 *i 5%%+_"1A/)s'& -h.%57 +x%58%52 +v$)9', .7_ 1A/7.'- '/ ,7_/h.-)9#h.-7./h
/h.-)9+h.'( +h
.7. 5O 1A'( #)7$)8/)s%+_"-. 5W +v$)9%+_"-. +v-)9/7Q,h
 +v/(L,"%'- '# '$ #("$(# 5i%+_"5:%+_"1A/(L/7.-h
%5p 5g%5q%5m +v%1S * 1l#5.'#  5z' !' !.7. 5y' !/5.(5u 4%/v%5u(?L%/I%5u(?N%1E%5u(?P%1K%5u(?R/?T#0h 0i%/.(?V#6"$6#%+_"/e%5u/6"/6#(?^#6"$6#%+_"/%5u/6"/6#(?XIkXIkX$6A'# #6B/(W#)-/7W#6C%?L'- .7R.7a 68+6C)7.+6B%+  )-,!7,6B 6+)6C 6=', !7i'- /6B'* -6A(?Z         #(W(?F+?H#+               ?H +.+?J#+./?J +.   +6N+6N!)m!7U+6N0vNk !o !n " 6hj !(6N(6N   +6\+6\!)m!7U+6\0v\/6\#6No !*7h 6i%+  71'- '' '$ , "o  ') '& c6u!7S+6N(6N, (, 0'( (6N   +6\+6\!)m!7U+6\0v\/6y#6No "n  (6yn !j !j " 6h   +6.+6.!)m!7U+6.0v.'. !7S#6@k "o "n # 6.j "/6@(6.%+  71'- '# , "o  '. c6u!7T!6@c6*'- d  /6@+6.(6.,$(,$0'( (6.   +6.+6.!)m!7U+6.0v./6.#6.'. !7S#6@o !n   6.j ! 6.(6.      #6R$6S$6T'- o !#6U%6N"6R 6M%/I 6H/6U-6Rc !', (6A             D./5.3.!3\a,C",>".J#,!c,Bd,c$3.%+.%/;.,.&/<'.k',{,.             .K-.en.Sn,:/.M/+0.;0.k1.V1.k2.Y=.k=,                              ,x>,|?,h>,A4+
5,86+
6,!?+
 c +
_3.!+
"4]"+
#4-/+
/+0+
Q,.2+
25s4+
T,|5+
U5_65tV,{7+
W,z8+
Y,                         +
;+
{4|?+
 . ,n_3.!,Wa41"/D"/C#/B$+
%/=%/F&+
&/G'+
'/>H,pH,qI,r)-m*-n,+
-/E-+
./?./@//A/+0+
P,uQ,v1+
2-y24:S,ns1\4+
43.5+
55B.,kV,xw5&w-tx2.x,y.,ey5$z+
z2g{,_{4.\,w|+
.4:=,U>-{>,S?+
>,@?+
 _ ..p......X  .   (  *B * ) "iT...  /  &  .@  ?  ?.....  !     "  !..!  (  ?Cr_B2_  %   ...   .  (  _  .>_ .  *  X  A (. (q..p    $_.  0 /_  #... ?E;{L  '.   ?.#.. /<.    - /e /
  .  >0   /c  @. Y0 ". Y  "......    
  _    =  > 0F...  + !   ,T{.  ._  Q  _..  @ 1: 1A ..JJK  _T @.E. 0  U.  ?Fb.>2mE5. -  ...... s[...  ._ )... ?_.._ 1. 1.0(q. Y..('  __ /   4j|.@ ...  9  ... .." 7a 7b...                     ..^   X    $ Q&jI..p! 7b*y..p! 7.c{C@ ! /Jo;.&@! 7_*y.o0!j-aZ.To0!..BjiT  ! ?\.        X.     ?_.@   $1  .;   $@_ v\Tn0  ?_R\Tn0  ?a[.Sk_  ?bkh.q0  ?ckh.q@  ?dkh.c0  ?e;I     h;Id    iZEP    s?L_     d?Lq     es].    &_2;.     .3\L(    3\L    , bEP   ?q6.     ?r.xIp   ?s:Th   ?tbEQ0  ?ub.R6_  ?vV;Um0  ?wb.Q    ?xb.Qd   ?y?KA3@  ?zRTh   ?{?L.;P  ?|Z{    ?                                                                                                                                                          .M$   ?.2;._   ?>2j.    ?.Nj.    ?.v._    ?.v.     ?..:.    ?.6[T    ?.7,T    ?..[T    ?.b..    ?.R..4   ?.r;.Z.  ?
3{.    ?.j]R    ?j|.0   ?s].[P  ?.7-R    ?.3l.    ?.2H.0   ?.3Y.p   ?.3{Ip   ?.Ol.    ?.OlA.P  ?.NH.0   ?.OY.p   ?.O{Ip   ?.P     %'j{   % . >.     ?.>.1    ?):.M    ?/.@     P 4    %%Q2b..d   ?o-t7h   ?.&|.zp  ?.Ri   $1  oi   $2  &i   $2  V.   $3  >.O  $3  7i   $4  n[E  $5  n.  $5  Vh_  $6  n[E  $6  nXP $7  nY  $7  n[   $8  nY.  $8  n\   $9  n[A  $9  n[B  $:  +\   $:  +[   $;  +^   $;  +   $<  n]  $<  nZ_  $=  +LX  $=  +L_  $>  Rk_  $?  Rj_  $?  bP     %c'@     %e+@     %f.@     %g/)K._  !r>{Rd   )boiS_   )os].P   )tjiI\   $a>YSj_  $%>LGl   $.3L.    $w3YDp   %I2YDp   '_R..    ?.vXn0  ?.RXn0  ?.[.S&p  ?.&x.q0  ?.&x.q@  ?.&x.c0  ?.k\A3@  @,&x.T   @-k]Cd   @.k]Ch   @/k]Zj.  @0j|.k_  @1bLK    @M
<AVP  @9V9.,   @Nk]P[_  @L+J_     5j|.'@%%@129I'.  @O29LFp  @P29C[_  @Q29TW   @RFlA3@  @S2;.o   @T29Sa0  @X2;.{   @c29DS0  @dnk.  %.XMvR\ %.XT/-.j.%.XRRhq| %.X//-20%.X .@     H /(_    M.sLC    M
s].W % .Nj  %3 jn=Ei   % n=E.   %)n=Ed   %(&x.-0  @m&x.q0  @n&x.+P  @o&x.L   @p&x.M@  @.&x.M0  @.h    %%@1P      ?.p      ?.,      H 0      O..."  ! @.o.DT   TE7LX    M@.."..! @...  0! @.o.D[@  T?.....! @.R_     D .. #.! @.r..    J ....! @.q0     J6..  p! @... &p! @.b..    J8q@     JF3%     Ks5      K'F..    KK.. !.! @... ..! @...   ! @.7LOh   KOq4     Klq4_    Kmq4     Knq4_    Ko50     K]5@     K_5P     Kc5_     Kfbj.d   KL..  p! @ qP     J7.. &p! @!bj.e0  KM..   ! @"q_     JG3_     K!c]Arp  KtbZK_   Ku3$_    Kp3$     Kq3$_    KrV<.    KvV;I    D7bR    D9V>I    D8W_     H cl     H;:h.    HG../..! @87@     H<:_     H*.. &.! @9s      L .. _ ! @cc      L2s$_    L+.. b.! @dH      M .. ! ! @e.*.h   M7.*.    M!c.     M>.*.d   M1..  .! @f7NX    M@2..    M_.:.d   Mh.*.t   Mqb._    M.../  ! @.b.     M.3I.    M.F..h   MH.. "0! @.r0     MY..  _! @...  _! @... !.! @..;Sp   Msj;Sp   MtV>Dl   MvV;Dl   MwV>D(   MxV;D(   My>.     ^ >._    ^..... ! @...     ^...1    ^.^..    ^_oh.4   ^.>..nP  ^.>._   ^.>.d   ^.:.N    P :.Np   Pa:.Nd   P7s]_    QU*;Dp   Qbnx.p   Qcv
.    QV:.Nh   PBsH.O_  Qab9.    QWF.    QX[-N|   PcZ._   QY;.     Pkc.     QZ/HA    P.[      Q[..S    Q\;.A    Pr.KO,   P.F._    Q]/H     PxcH     Q^jKO,   P..h.[P  P./..P  P
sH.L   Q*;D    Q_nx.    Qaj|.P  P.F..P  P.n;C    QbV>S    QeV;S    Qf*;C    QcV>B    QgV;T    QjV;B    Qh..   ! @r;C    QdV>T    Qir|R    P46                                                                                                                                                                                                    Qk[..p   PIr|R$   P97MYc_  PH7M.    PZr|R(   PC.d_    Qm7LC[_  QpR..d   QqR..h   Qr2=Td   Qs2=Th   Qt.)Ap   P].)Ar0  Pe.d_    Qo.)Ar@  Pg.d     Qn7L     Pxs].,   P>.,E<   P.oh.T   Qu.,E>0  P... $ ! @..,E>@  Q$.*pT   Q).,E?_  Q'.*qT   Q(oj.    Q,[I.    Q8oj.$   Q/?)N    Q;..  @! @.?)Np   Q^r                                                                                                                                                                                                    Ql?)N$   QP.. !.! @... '.! @... /.! @...  .! @
>J.4   Qe[.     Q                                                                                                                                                                                                                               H_    Qh[.     Q>.LN    Qv[-     Qx>H     Qsj.I0  Q![@     Q.j@   $   jx.    Q.kH_    Q.[M     Q.jLN    QwkH     Q....._! @2i_    Q22i.    Q:2i.    Q<?k.    Q|o\A3@  Q...@  ! @...   ! @.b                                                   v_  Q ..   ! @...   ! @... ._! A*..#.P! A+.. , ! A,b<1    K V;A3@  KD&lS    KA2M.8   KBb<4    K=b<3    K6V>A3@  KCb<2    K#b<M'P  KE..Yw   W...Y2.  W.j                                      @  Q.:.P'_  Q...  .! AF>LR_  Q.@    % \ o.BT   TDo.B[@  T;*9     Z_...p   Y.F..Z_  Z >.X    Z,....@! AN.. "@! AO.. "_! AXBx.    \ Bx.d   \<..  @! Aa.. '.! AbB._    A. fl fl fl fl fl fl fl fl fl fl fl fl fl fl fl fl fl fl fl fl fl fl fl fl fl fl fl fl fl fl fl fl fl fl fl fl fl fl fl fl fl fl fl fl fl fl fl fl fl fl fl fl fl fl fl fl fl fl fl fl fl fl fl fl fl fl fl fl fl fl fl fl fl fl fl fl fl fl fl fl fl fl fl fl fl fl fl fl fl fl fl fl fl fl fl fl fl fl fl fl fl fl fl fl fl fl fl fl fl fl fl fl fl fl fl fl fl fl fl fl fl fl fl fl fl fl fl fl fl fl fl fl fl fl fl fl fl fl fl fl fl fl fl fl fl fl fl fl fl fl fl fl fl fl fl fl fl fl fl fl fl fl fl fl fl fl fl fl fl fl fl fl fl fl fl fl fl fl fl fl fl fl fl fl fl fl fl fl fl fl fl fl fl fl fl fl fl fl fl fl fl fl fl fl fl fl fl fl fl fl fl fl fl fl fl fl fl fl fl fl fl fl fl fl fl fl fl fl fl fl fl fl fl fl fl fl fl fl fl fl fl fl fl fl fl fl fl fl fl fl fl fl fl fl fl fl fl fl fl fl fl fl fl fl fl fl fl fl fl fl fl fl fl fl fl fl fl fl fl fl fl fl fl fl fl fl fl fl fl fl fl fl fl fl fl fl fl fl fl fl fl fl fl fl fl fl fl fl fl fl fl fl fl fl fl fl fl fl fl fl fl fl fl fl fl fl fl fl fl fl fl fl fl fl fl fl fl fl fl fl fl fl fl fl fl fl fl fl fl fl fl fl fl fl fl fl fl fl fl fl fl fl fl fl fl fl fl fl fl fl fl fl fl fl fl fl fl fl fl fl fl fl fl fl fl fl fl fl fl fl fl fl fl fl fl fl fl fl fl fl fl fl fl fl fl fl fl fl fl fl fl fl fl fl fl fl fl fl fl fl fl fl fl fl fl fl fl fl fl fl fl fl fl fl fl fl fl fl fl fl fl fl fl fl fl fl fl fl fl fl fl fl fl fl fl fl fl fl fl fl fl fl fl fl fl fl fl fl fl fl fl fl fl fl fl fl fl fl fl fl fl fl fl fl fl fl fl fl fl fl fl fl fl fl fl fl fl fl fl fl fl fl fl fl fl fl fl fl fl fl fl fl fl fl fl fl fl fl fl fl fl fl fl fl fl fl fl fl fl fl fl fl fl fl fl fl fl fl fl fl fl fl fl fl fl fl fl fl fl fl fl fl fl fl fl fl fl fl fl fl fl fl fl fl fl fl fl fl fl fl fl fl fl fl fl fl fl fl fl fl fl fl fl fl fl fl fl fl fl fl fl fl fl fl fl fl fl fl fl fl fl fl fl fl fl fl fl fl fl fl fl fl fl fl fl fl fl fl fl fl fl fl fl fl fl fl fl fl fl fl fl fl fl fl fl fl fl fl fl fl fl fl fl fl fl fl fl fl fl fl fl fl fl fl fl fl fl fl fl fl fl fl fl fl fl fl fl fl fl fl fl fl 6D fl 6F fl 6J fl 5. A. 5. A. 5. A. 5
 fl 5 fl 5. HC 5. fl 6$ A
 1o A. 5. X    .x  .  H  @8/?_#?c/?a#?d-?b/>c#>d+?c+?d%?k(?e  h#..    *6  i  s...  d  e *6 *;  %.   *Z *;  $  %   ...       'l  +  %  !     !     $  ,#..           !  "     8     ! Q/0""/>q!?r'?r ?    !?s#?t/>t!?r#>q'?r ?)!?q#>u/?w,>v0!"/?t"  (?. ?.#?.!?r!?s#?>/?.#>>+?>/?.#>>+?>/?'$ '?. ?F/?.,!,!?.,!%!?.,!"!?. ?Q'?.   /?.,!(!?.,!&!?.,!$!?.,!"!?.#>>+?>/?.,!"!?.,!2!?.#>>+?>/?.,!'!?.,!!!?.,!"!?
,!!!?.,!!!?,!&!?#>>+?>/?.,!2!?.#>>/?.(?/ Q1!?r#?z0""/>y!?r*?|!?s#?{/>{!? ?z#>{!?r#>y*?|!?s#?{/>{!?r#>{0!"(?o *Z @3%?/%?o0 !/>q!?r'?. ?. ?."  "  "  "   ?. .  . .. !   .  @7/?./?. @# @./?.#?./?./?.-?.#?.$?./>.#>.+?.+?.%@&(?.  )  _.. .x     Ad/@,/@-&  -@.%@6%?.%?e0 !0 !(@1/@N#.M-@/%@?/.M'@0(@1%?.%?e/@N#.M-@/%@H/.M'@0(@1(@1  5If( H  ( ..  Iv  ( @n#@O$@P$@Q/@O#@R-@Q/@S/.R&   @e%@\*@P @X(@T..v.. $@c-@d%@g-@c+@R @ @_0"/  _ 0   ( AH%?P/?.*@m#?./?.*@m#?./?.*@m'- />.'>. @.+?.+?.%@{%?\#@n/@o/?.%?X%?R/@n%?^%?R/>.%?^%?P @. H  O.  !...  /T?.@. T: T;#..  %    7 '.   %?N *[ *\  %      fh  !  "%?\  h%?\%?\            /@.#?.%?. K" K#'# #?.%?. ?. ?.!..  .%?\  h%?\%?\                                                                                                       @a @2 @3 ,  ,O  8  &%@1  h%?\%?\                                                                .   I  ,  $  >..   _  "  ?  .  /  ...  (!@..@. P7 P8"  .@. PAo.] P@ PA_  '@./@.$? Q: Q;0  @  -@"   Q' Q'', *A*#Q /.  Q( Q) &t P. (_%Q2  h%?\%?\                                             #Q\/@/Q\&   QS QT  '/@.&  /@.&  %Q| Q7 Q8...  B/AO%?N%?R'' %?^ Ac T< T=  D/AX%?N%?R'' %?^%?P T@ TA  "  .%?R/Q_%?X%?R/Qa%?X%?P AV AW/@.&  '' !TD'@. Ay/@.&  '' !TE'@. AH /AO%A. Ar As/AX%A. Ax Ay A.%?N%?R'' %?^%?P(A.   %A.%?\%?\                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                            /D7#D9/.9"  'D9%E +D9/D9.D8 D"/D7#D9'# #.9+D9/D9.D8 D,"  "   ?.       H  O.    .8 .9 .: .; .< .= .> .? .@ .A .B .C .D .E .F .G .H .I .J .K .L .M .N .O .P .Q .R .S .T .U .V .W .X .Y .Z .[ .\ .] .^ . ._ .a .b .c .d .e .f .g .h .i .j .k .l .m .n .o .p .q .r .s .t .u .v .w .x .y .z .{ .| ... .> .. .. .. .. .. .. .. .. .. .. .
 .. . . .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .  .! ." .# .$ .% .& .' .( .) .* .+ ., .- .. ./ .0 .1 .2 .3 .4 .5 .6 .7 .8 .9 .: .; .< .= .> .? .@ .A .B .C .D .E .F .G .H .I .J .K .L .M .N .O .P .Q .R .S .T .U .V .W .X .Y .Z .[ .\ .] .^ . ._ .a .b .c .d .e .f .g .h .i .j .k .l .m .n .o .p .q .r .s .t .u .v .w .x .y .z .{ .| ... .> .. .. .. .. .. .. .. .. .. .. .
 .. . . .. .. .. .. .. .. .. .. .. .. .. .. .. .. ..      "  "  %?^%?R"  "  /D9%?^%?P"  (E                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                             /?_/?a&  %@I-?p%F%%?L%@T%@_!?m'?f F- F(%?N F&                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                   /@"#H;"HG#.;+H;/H;.@8 H"/@"#H;/.;"HG'H;%H<+H;/H;.@8 H*/HG"@.#HG/@9%?N Al          .9 H-%?^%?R/H;%?^%?R/HG%?X%?P(H<   ...                                                                                                                                                                                                                                                                        /?_/?a&  %@I/?.&  $@0'' %@T'# #H<%@_ ?. H/ H4+H</H<.?. H+%@D/H<.H= HA#H='& /?.&   H$  "  "          H$%?X%?R ?..?. H$'# #HN%?P H$                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                Q+/.L!?r'?r J&   .A,   #J6*@ #J7/
7#.L!@.'@. J2/@!#.M"  /J6(J     *6 *; Q-#JF!@"#JG/>q#
G!@.'@. JC/JF#>u/JF#>q(J8 *6 *6                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                            @.%?/%?o0 !"   K-/?.*KK.@. K,'# #?."  "  %?.%?/%?o0 !"  "  /.L!@.'@. K: K5%L 0""%J %J80!""  "  /.t!@.!.u!Kv'@.%KO"  "   K'     !  .  .    KF/.p#Kl/.q#Km/.r#Kn/.s#Ko"  "  "  %?P/Kl%?^%?R/Km%?^%?P/Kn%?^%?R/Ko%?^%?P(KO         .P   P   ..@ &e &d &p &q &q &p...                                                                                                                            AA/KD#KA/.A#KB"  /@.&   K='@. K, K6%?^%?R/KA%?^%?R/KB%?^%?P"  "  /KA'KC K:(K +KA K#"  '' !KE K)"   .. _  ..    #                                                                                                                                                                                                                                                                                K:/@c#L2/.L'2 L+/@,/@-&  /2%?\+L2/L2.@d L#"  (L     ,P                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                       /@.#?.'# #?.%?.%?/%?o+?./?..@. M#"  "  0 !"  /.L!?r'?r M4 M/"  0""%J 0!"%?o"   M-                                                                                                                Ma%?.%?/%?o0 !"  (M_    Mb/>q!?r'?. Mi"  "  (Mh    Mm/@.#M./@.#M./.'.%M.+M.+M./M..@. Mv"  "  (Mq    Mx/?.%?^%?R/?.%?^%?R/M.%?^%?R/.%?^%?R/.%?^"  "  %?P(M.    P  .       "  +?./?..@.(M."  +?. AA/@c#M>/>!?r'?r M1+M>/>!?r*@f!?s'M>%M@+M> M7+M>'>%M@+M>"  "  /M>.@d M$"  "  (M!    ,P    M./M>%?^%?P(M@%?^       Mo+?./?..Mv(MH/Mw#?.+?./?..Mx(MH/My#?."  "  (MH   '# #?./@.#?./Ms#?."  "  %M_%Mh"  "  /Mt#?./@.#?."  %M_%Mh"  %Mq"  %MH"   M[     (        7     I                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      Q0 Q.!?r!?s#?>/Q\#>>+?>"@.#>>+?>/?'$ '?. P7/QU,!,!Qb,!%!Qc,!"!QV PB'?.   /QU,!(!Qa,!&!Qb,!$!Qc,!"!QV#>>+?>/?.,!"!?.,!2!?.#>>+?>/?.,!'!QW,!!!?.,!"!?
,!!!?.,!!!?,!&!?#>>+?>/QX,!2!?.#>>/Pa(P     *6    Po'/ '- '# *QY%Pg(Pc    Q:+Qv/Qv.@.(Pk/AF#Qv(Pk+P.*Q]%Pr(Pk    Q./Q^#P./Q[%Pc"  '- /P.#..+P.%P.(Px%Y.       X  .     Q./Q#Qa/Q_#Qb/Qa#Qc(P
    QH/Qa#Q/Qb#Q_/Qc#Qa(P. Q3/Qc*Qb#Qc.Qe(P./Qf#Qc/Qb*Qc%Z .Qg(P./Qh#Qb/Qa*Qd#Qa.Qi(P./Qj#Qa+Qp(P.    Py%Q| @.(P4-PI#PH!@..@. PC$QmoP] @.%?^%?R-Qm/PH,!!%P9%?P(P4 .&...    Qp       QU QV Qa Qb Qc P. P. P. Qq Qr Qs Qt P. P.    Ab/QZ#Qq/Q^#Qr/Q['/ '- $Qo-QY$Qn/.q#Qs/.r#Qt'Qs%Px+Qq+Qr-Qn%Pg%P.-Qo%Pe(P]       Q$%P4"  "  "  "  (Px  v   ..#.e. + .  .?.6#,..........0.0.0.0...   ..              Q./P./Qu-@. P. T8-@. Q$/P.!Q)#Q'/P.!Q(!Q''@.%Px(P.   .!.......       Q.)@.#Q8%?.%P %?o+QW%P.*Q8 Q/(Q,   ...       Q./A+"  #Q^%Q|!@"'@."  "  /.^,""!@.#Qc/.^,"'!@.#Qb QX#Qa(Q;   /.^,""!@
#Qc/.^,"&!@.#Qb/.^,".!@.#Qa(Q;    P.           6       Q>%P
/Q   Q>/Ms#QX/Qv#QW/Q[%Q,0 !/Q[)@.#Qx%Q!%P.*Qx Qs/Q>)@.'@. Qh(Qe     !  #  !  # QE%P
/Q.#Q.%Q|!@.'@.%Px/Mt#QX/Qw#QW/Q[%Q,0 !/Q[)@.#Qx%Q!%P.*Qx Q.%Q|!@.'@.%P]/Q.)@.'@. Q.(Q. &s Q./.L!?r'?r A  Q" A$cP.%Q'0""%J 0!"%J8%Q;(Q!       Ad Q.#?.#Qp AG/@.!@" @.%Pk"  /Q       @.%Qe+Y."  "  "  /Q.'@.%Q.%P
%P.%P.%Q|/@.-@.(Q2/@.-@. Q</Q\*Q] A@ Q:           1   ..  P   !..\D2i              !  !  !  7     I     .   ".   ......*...  ! P*  *RFvSFv '.  &  0             Q./Q.&  '' (Q|     &   #Pa/QU'@. Q./QV'@."  /Q_.@
 Q. Q./QX.AF Q.   %?\/Pa P"      %?e/@. Q4                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  %Q2/Qe#Qa%P
%P.%P./Q'Qj T!/Q_'Qh T!(T                               /@.&  (TD AP/@.&  (TE AY%Q|!TF TH   ......(     '@. TK(P./P."@.'P.%Px(P.                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                 AO-W.o.#..%W.(W.._!_..                                                   -W./..cW.%W.  $.h(_..                                                                                                                                        Hj H& Hk Hk  F   )W. X./\a%X'.\b XZ(XR,#0#X ,!0!\\#X'/\6-\F Xc Xe-XQ%Y>/\z%X'.X'%Y>/\{%X'#W./\|%X'#W.-\       , *\.%X'cX9%Xp%X3/X .\>.\.%Y>'- '# #X(_X. X. XY X Y+%Y>%Y>%Y> YI%Y>%Y>%Y>%Y>%Y>/XM#XO#XP/\.#W.(XR/X',"!,!"$X&%XK/X ,!:!X(,!./\a%X,/X-/\.%X,-\       , *\.'& oX9%X,%X (XR   !\e#X)/.)(X'   '( !\e#X)'' #.)(X,   /X',"!,!"$X&/\.%X'*X&%X''$ ,#6#W.,!"$X",!!$W.,!%$X%,!'$X$,!'!\1#X#(X3   /\.%X'*X&#X&%X'!\.)X""\M)W."\f/X&%X,(XK/W..\..\.%Y>#X,/\.#X+,X,/X+'X, Xe X.*\5#X+%Y.'\F Xk Xa'\. Xn Xa.\. X.)\a!\./X'(\5 Xw%Y Xa/\.(X' X|%98 Xa%:& Xa'\. X
/X+'X, X. X
*\5#X+%Y.!\.*\. Xr/\?#X( X./\.#X+#X,/W..\..\.%Y>/XO#X*'# #X-/X'.\5%Y>%Y.*W. X. Y(/\.%Y) Y&+X-/W.%Yy X./\5#X(/X*#XO X./\.#X+#X,/W..\..\.%Y>'# #X-/X'.\5%Y>%Y.*W. Y; X.'# %Y) YF+X-/W.%Yy%YV Y8/\?#X( X./\5#X( X./W.,!(!\.)\
'/ #W..\.%Y>'# ,!%#W.'# ,!+.\- Yb)\^#W./X'%5z"\@,!7,W./\.%X' Yi#W./X',"!,!:,W./\.%X'*W.#W.%X'-W.l  $W.-W.l" /W.l! /W.-W.l$ /W.%X, X.   *\a!\..\. Y> Y.*\a#X!/\.+X,/X,%Y.+X-*W."  /X!+X,/X,%Y.(Yy   #W./XP#X10XP%Yw'& /W.%Y./XP'XO Y./X1#XP(Y)W. Y.(Y/W.%YV Y&/\e#W.)X$(Y/W.%YG(Y   #W./XO'XP Y2'# #X"#W.(Y)0XO%Yw%Y.#W.)W.)W. Y=)X" Y?/W.%YG+Y)(Y)/W.%YV Y=/\e#X")X$ Y; Y=   )X%(YG/X'(\6%Y>.\ YT'\ YR YT'\.(YG%98(YG   -W._YY(YV Y] Y] Yu/X#%5z"\|,!7#W./W.*\a!\.,##*\?,W.,!$!\s#W./\.%X'*W.%X'-W.l! ,#6*W..\?(YV+YV(YV   k  o  .XN Y./XMc  (Yw   %[    /X''\F Y%9y(Y.#W.%X3/W.%Y%XK Y.%:.(Y. Y.   $X0,"7%6&"\@'- o  ') cY.!\-X0(Y.,$0,$("      P%#Qb$Z,-AN/QbgZ. Z)+Qb Z#%Z%-Z,(Z    #.//X.-X0(Y.,!0,!("  .   .   .%9y Z7#[./\?#[I L./[.%98/\?#[I L.   '!<.\P ZH/\> M.!\.' </ -*\?.\. ZS'!<!\P' <%L. ZC# -!\J!\e#[#/[.!B_#.#+[#/ZB#.#'!<!\P' <  .  /                                                                                        .. ..   (Z.   $[#%S['\? Z/[#.\.%M>(Z./[#.\_%M.(Z. Se%\.(Z.   #Z.$Z.$Z.*Z. Z.(Z./..-Z.%Z.+Z.+Z. Z.   #Z.$Z.$Z.*Z. Z'(Z /Z.%\.#..+Z.+Z. Z$   #Z.$Z.$Z.*Z. Z4(Z-/Z.%S1#..+Z.+Z. Z1 M<#Z.$Z.$Z.*Z. ZA(Z:/..-Z.%SB+Z.+Z. Z> S.#[-%\.#[+/[-*\5%\.#[,/[-*\?%\.'- /[+/[,%[,(ZG/Z.+ZG(ZG   !\J,#+'- $[Co[..\8 Zh#[A,!+!\J/[A+ZZ(ZZ$[@%S. Z.#[B', '$ .\d/\m$[A/[B*\@%\..\d Zw Z./\m.\e$[A/[B%ZG Z.*\@%\.'- !\J,#+'* (\e!\/![A/[@-[C Zb/\./\8-[C(ZZ !e "8  ..$p !. "b  _ !% [.#%....    [1'\F Z.(\. Z.(Z.$Z"Z#Z,"("Z,"("Z"\.!\*\m'- +Z.(Z. ZV#Z.$Z.$Z.%Z.%[ #Z.)\4#Z./\m#Z./Z.*Z. [;%[ %\.!\J#Z.'\J [A([,/Z.%\.'Z. [R/Z.*\5%\.'Z. [R/Z.*\?%\./\X-Z.%[ +[,([,/Z.#Z.*\4 [8 Lq-\./\8c\.%[Y([V V^#[<)[6 [w%S1)[5 [d([\#[9/[5*[2.\
 [j%M{/\
)[2+[9-[5l  -[9/[3(\5 [ul#  [vl" #[<-\.([\ T.#[.)[.%M.)[5 [./[<-[.%SB([y/[5*[2.\
 [.%M{/\.'# -[2l  $[>/[.%S1'& -[5l  -[2l  "[<![>"[<l$ -[5l$ '' -[.%SB([y/\5 M.   /\@ M.  !     "!Hw#5{       ]{  _ !%!Ht  !  " !f  "  !      ...     !  /       0  R...            !Ht  ..XR.\8  /  !         !L                                                           0                                                            ...8!f..D(..        !#5z#5{  0#$        R#5{#5|  "...#5|  !Z (...@)g   ..8#$\#     _S(..T..8!H  $  $  $  $  $  $  $  $  $  $  $  $ /Q_"  "  '# ' !#\<%Q2/@"&  (@. \, \&/Aa&  /\<' !'' !@..Ab \5  _+Q_/Q_.Qg \ /Qh#Q_ \   " $  $  $  $  $  $  $  $  $  $  $  $  $  $  $  $  $  $  $  $  $  $  $  $  $  $  $  $  $  $  $  $  $  $  $  $  $  $  $  $  $  $  $  $  $  $  $  $  $  $  $  $  $  $  $  "E #& #' #( #) #* #+ #, #- #. #/ $  $  "  "! "" "# "$ $  $  $  $  $  $  $  $  $  $  $  $  $  $  S,!\e#[*/.*(\. Z.#[*'* /[s.\. \!/\? M.'- )[t+[s'' !\ec[K/[*c[)[t \,c.K(\.  /... "  _   ?  3    %  !...#%
 $ #  #("...  $...  &  "  #  '  (  )  *  +   #( "&."& #..  , .(  ..0  @  ....X .   '._  P  o....p  W..!.. ?.H    0  .     @ @  0  (    $  !     "    7"%.".. !   _.....>......  . , ....    M  [..p %.  C  D...  P  -  B %.,    5 HU  =  ?  .  .  4  8 %.  >    
 %.>..  _  T..  [< [. [. [  3  -- /   '\. ] A\. 5o,"7 J.k
V/C J7+C. JD                                                      ..0. &_  . &"  b.   & _ G+   &  h&x_  &  !wl   &  ".*.  &  #/-_  &  $\.&_ 0S   &_%'T.&_%_d.&_%(..&_%)nS   &_%_h.&_% R9.sP& 0$o..V<.l & Hkj{   &_. B<.ZK.  &   B<.[k.  &   m0  /\m@  .Ai0  .Zi@  .]o.  . /_  ."/-0P   /p/-0@   ].$     2.IX   /bR_  & o4       o4_   )  o4    3  o4_   <  o5    F  o5_   O  -0 Y  -@ Y  -P Z  -_ Z  n0  .LN]A(   ]weTw                                                                                                                                                                                                                                                  $ b$0c$@ $P!$_"$p#$.$$.%$ &$0'$@($P)$_*$p+% ,%0-%@.%P/%_0%p1%.2%.3% 4%05%@6%P7%_8%p9%.:%.;& <&0=&@>&P?&_@&pA&.B&.C& D&0E...    (l'# #../^./^.&  /^./^.&  0 $'# -^|#.     ^--^.#..%^0#^.-^{o^^c.{%^4/^.#^./ * '- #.>*^. ^:'# #../^.#..0 $(^!/!%^U%^./"#^./-/#%^U%^"/^..^..$ ^M$..+^. ^M !J$..!%#^.-&/..#..%^Z/^]#.z/^
#..0 $/...' ^b(^U !,'$ $^.#^.#..#^/^.#..0 $/...' ^o/..'.. ^./^.... ^.)^'$ ,!#'- /..l# !^. ^./..'( ^./^ ^j/^.)^'( ^/..#^. ^.'$ ,!#'- /..l# !^.#^./^).. ^j/../..#^.$^(^f ^//)%^f/^.'* ^ (^. ^M/^.%^f/^.'+ ^3/)%^f*^. ^J/./^.%^U%^./)#0=  $, (') ,!"'* , &') ,!"'* , &') ,!"'* , &(^"   c     .@ ,_ ,a .X .x .. -$  (0    P  8  .  "   ...         ...   _  _  _  _  .   %0 ,_ ,c  A &5 %. %. %. &< %. %. &) &- &1 &2 &3 %. &. &* &, %. % &/ &  &! &" &# &$ &%  -.....X_4(_ __.8 08  I  J_ K  C  %  B  2  @#@ !@!.   bb  !  !   _'.... ^ $a.   (aa._ +ahd  (    (  $  )  "...  ]  (  #  '  %..._  ... @      !.  .a. ^. ^. ^.                                                                                                                                                                                                                                                                                                      /O1.-.'$ $./.#././.&  /./.&  /./.&  /.&  (. & !o./.&  %!/.&  (. / */.&  '' !.'. 4-.*. N-./.&  (. > 9o/.&  %9/.&  (. G B/.&  '' !.'. L ./.&  (. S No./.&  %N%a'& /..... W$..'$ +. W w-.,!&#./.&  (. j f/.&  '' /.-. t!.!.%c(a!.'. v%a'U y 5 (( (a (a (. (_... .&   (^ ($ (a (.... (+ (a (h (d(    $ ....  (  c '   a !   (  $_ 0   _ c  .  ....  _      Q8?)N    Q;?)N$   QP?)Np   Q^sH.O_  Qa*;Dp   Qbnx.p   Qc>J.4   Qe>H_    Qh>H     Qs[.     Q                                                                                                                                                                                           @     Q.[.     Q>[M     Q.jx.    Q.kH_    Q.kH     Q.b                                                   v_  Q j.I0  Q!X      Q&2i_    Q22i.    Q:2i.    Q<s]_    QUv
.    QVb9.    QWF.    QXZ._   QYc.     QZ[      Q[..S    Q\F._    Q]cH     Q^sH.L   Q*;D    Q_nx.    Qan;C    Qb*;C    Qcr;C    QdV>S    QeV;S    QfV>B    QgV;B    QhV>T    QiV;T    Qj6                                                                                                                                                                                                    Qkr                                                                                                                                                                                                    Ql.d_    Qm.d     Qn.d_    Qo7LC[_  QpR..d   QqR..h   Qr2=Td   Qs2=Th   Qtoh.T   Qu.LN    QvjLN    Qw[-     Qx?k.    Q|o\A3@  Q.:.P'_  Q.>LR_  Q.j                                      @  Q.o.B[@  T;o.D[@  T?o.BT   TDo.DT   TE..Yw   W...Y2.  W....p   Y.F..Z_  Z >.X    Z,*9     Z_Bx.    \ Bx.d   \<>..nP  ^.>.d   ^.>._   ^.oh.4   ^...     ^...1    ^.>._    ^.>.     ^ ^..    ^_@      \ j|.'@ %@1h     %@14     %Q2.Xn   '! .@    1  Ri    1  oi    2  &i    2  V.    3  >.O   3  j   3 j7i    4  n[E   5  n.   5  Vh_   6  n[E   6  nXP  7  nY   7  n[    8  nY.   8  n\    9  n[A   9  n[B   :  +\    :  +[    ;  +^    ;  +    <  n]   <  nZ_   =  +LX   =  +L_   >  Rk_   ?  Rj_   ?  .;    @_ s#    ITP*y.o0 j-a                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                             KBb<4    K=b<3    K6V>A3@  KCb<2    K#b<M'P  KE..Yw   W...Y2.  W.j                                      @  Q.:.P'_  Q.>LR_  Q.@    % \ o.BT   TDo.B[@  T;*9     Z_...p   Y.F..Z_  Z >.X    Z,Bx.    \ Bx.d   \<B._    A....   _  >>>>>>    QgV;T    QjV;B    Qhr;C    QdV>T    Qir|R    P46                                                                                                                                                                                                    Qk[..p   PIr|R$   P97MYc_  PH7M.    PZr|R(   PC.d_    Qm7LC[_  QpR..d   QqR..h   Qr2=Td   Qs2=Th   Qt.)Ap   P].)Ar0  Pe.d_    Qo.)Ar@  Pg.d     Qn7L     Pxs].,   P>.,E<   P.oh.T   Qu.,E>0  P..,E>@  Q$.*pT   Q).,E?_  Q'.*qT   Q(oj.    Q,[I.    Q8oj.$   Q/?)N    Q;?)Np   Q^r                                                                                                                                                                                                    Ql?)N$   QP>J.4   Qe[.     Q                                                                                                                                                                                                                               H_    Qh[.     Q>.LN    Qv[-     Qx>H     Qsj.I0  Q![@     Q.j@   $   jx.    Q.kH_    Q.[M     Q.jLN    QwkH     Q.2i_    Q22i.    Q:2i.    Q<?k.    Q|o\A3@  Q.b                                                   v_  Q b<1    K V;A3@  KD&lS    KA2M.8  >>>?)N    Q;?)N$   QP?)Np   Q^sH.O_  Qa*;Dp   Qbnx.p   Qc>J.4   Qe>H_    Qh>H     Qs[.     Q                                                                                                                                                                                           @     Q.[.     Q>[M     Q.jx.    Q.kH_    Q.kH     Q.b                                                   v_  Q j.I0  Q!X      Q&2i_    Q22i.    Q:2i.    Q<s]_    QUv
.    QVb9.    QWF.    QXZ._   QYc.     QZ[      Q[..S    Q\F._    Q]cH     Q^sH.L   Q*;D    Q_nx.    Qan;C    Qb*;C    Qcr;C    QdV>S    QeV;S    QfV>B    QgV;B    QhV>T    QiV;T    Qj6                                                                                                                                                                                                    Qkr                                                                                                                                                                                                    Ql.d_    Qm.d     Qn.d_    Qo7LC[_  QpR..d   QqR..h   Qr2=Td   Qs2=Th   Qtoh.T   Qu.LN    QvjLN    Qw[-     Qx?k.    Q|o\A3@  Q.:.P'_  Q.>LR_  Q.j                                      @  Q.o.B[@  T;o.D[@  T?o.BT   TDo.DT   TE..Yw   W...Y2.  W....p   Y.F..Z_  Z >.X    Z,*9     Z_Bx.    \ Bx.d   \<>..nP  ^.>.d   ^.>._   ^.oh.4   ^...     ^...1    ^.>._    ^.>.     ^ ^..    ^_@      \ j|.'@ %@1h     %@14     %Q2.Xn   '! .@    1  Ri    1  oi    2  &i    2  V.    3  >.O   3  j   3 j7i    4  n[E   5  n.   5  Vh_   6  n[E   6  nXP  7  nY   7  n[    8  nY.   8  n\    9  n[A   9  n[B   :  +\    :  +[    ;  +^    ;  +    <  n]   <  nZ_   =  +LX   =  +L_   >  Rk_   ?  Rj_   ?  .;    @_ s#    ITP*y.o0 j-a                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                             KBb<4    K=b<3    K6V>A3@  KCb<2    K#b<M'P  KE..Yw   W...Y2.  W.j                                      @  Q.:.P'_  Q.>LR_  Q.@    % \ o.BT   TDo.B[@  T;*9     Z_...p   Y.F..Z_  Z >.X    Z,Bx.    \ Bx.d   \<B._    A....   _  >>>>>>    QgV;T    QjV;B    Qhr;C    QdV>T    Qir|R    P46                                                                                                                                                                                                    Qk[..p   PIr|R$   P97MYc_  PH7M.    PZr|R(   PC.d_    Qm7LC[_  QpR..d   QqR..h   Qr2=Td   Qs2=Th   Qt.)Ap   P].)Ar0  Pe.d_    Qo.)Ar@  Pg.d     Qn7L     Pxs].,   P>.,E<   P.oh.T   Qu.,E>0  P..,E>@  Q$.*pT   Q).,E?_  Q'.*qT   Q(oj.    Q,[I.    Q8oj.$   Q/?)N    Q;?)Np   Q^r                                                                                                                                                                                                    Ql?)N$   QP>J.4   Qe[.     Q                                                                                                                                                                                                                               H_    Qh[.     Q>.LN    Qv[-     Qx>H     Qsj.I0  Q![@     Q.j@   $   jx.    Q.kH_    Q.[M     Q.jLN    QwkH     Q.2i_    Q22i.    Q:2i.    Q<?k.    Q|o\A3@  Q.b                                                   v_  Q b<1    K V;A3@  KD&lS    KA2M.8  RUNOFF SETUP FOR THE GREEN SHEET: (LINES 3-7)

.PAGING MODE OFF
.LAYOUT 1,132,12,90,110,1
.LINE LAYOUT 5,100,2,5
.PAGE LAYOUT 12,84,1
.PARAGRAPH SPACING 0

CAPTIONS ARE HANDLED AD HOC.  THERE IS NO AUTOMATIC SPACING; ALL SPACING
MUST BE GIVEN EXPLICITLY.

THE FOLLOWING PROGRAM (14,30) POST-PROCESSES THE RUNOFF OUTPUT TO CONVERT
ANY "" CHRS INTO BLANKS:
POST   IDENT

MSG    MACRO D,G,2; LDA =G(1); LDB =-1; LDX =1; BRS 34; BRU G(2)
G(1)   ASC '$.&D(1).&/'
G(2)   EQU *; ENDM

START  MSG (INPUT FILE: ); CLEAR; BRS 15; BRU START; STA IFNO
S1     MSG (OUTPUT FILE: ); CLEAR; LDA =3B6; BRS 16; BRU S1; STA OFNO
L1     CIO IFNO; SKE =''; BRU *+2; CLA; SKE =137B; BRU L2
       CIO OFNO; CIO OFNO; CIO OFNO; CIO OFNO; CIO OFNO
       BRS 17; BRS 10
L2     CIO OFNO; BRU L1

IFNO   BSS 1
OFNO   BSS 1

       END
>                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                     18
029 24 9917 .5 2
       441 1 24 .5 1 .25
       699 1 2 0 1 0
565 74 6826 1 2
       315 1 52 1 1 0
       613 1 12 0 1 .25
503 48 0931 1 3
       326 1 49 0 1 0
       327 3 30 0 0 0
       428 1 35 .5 1 .25
396 34 8569 1 3
       492 1 21 1 1 .25
       647 1 5 .5 1 .25
       699 1 1 0 1 0
388 40 8583 1 4
       331 1 23 0 1 .25
       333 2 20 0 0 0
       657 1 8 0 1 .25
       699 1 1 0 1 0
162 32 1177 1 2
       453 1 8 0 1 .25
       614 1 7 0 1 .25
556 48 7006 1 3
       617 1 12 1 1 .5
       699 1 3 0 1 0
       800 1 1 0 1 0
575 34 4049 1 4
       371 1 48 0 1 0
       492 1 11 1 1 .25
       499 1 1 0 1 0
       699 1 1 0 1 0
349 28 4921 1 2
       260 1 17 2 1 .25
       311 1 53 0 1 0
348 26 8938 .5 3
       660 1 30 .5 1 0
       692 1 22 0 1 0
       699 1 3 0 1 0
530 30 4232 1 3
       360 1 31 1 1 .25
       446 1 21 0 1 .25
       699 1 1 0 1 0
576 22 5154 1 5
       323 1 50 0 1 0
       324 3 56 0 0 0
       425 1 17 .5 1 .25
       4990 1 10 0 0 0
       699 1 2 0 1 0
010 23 2856 1 2
       424 1 6 1 1 .25
       693 1 5 2 1 .25
152 12 0686 1 3
       372 1 15 0 1 .25
       473 1 7 2 1 .25
       699 1 2 0 1 0
128 28 6397 1 4
       461 1 19 0 1 .25
       462 1 17 0 0 0
       467 1 16 1 1 .5
       699 1 2 0 1 0
309 20 7398 .5 2
       313 3 53 0 1 0
       492 1 9 2 1 .25
216 48 2255 1 3
       451 1 29 0 1 .25
       452 2 16 0 0 0
       652 1 5 0 1 .25
575 20 8213 0 2
       477 1 10 1 1 .25
       699 1 1 0 1 0
>  p _ 0Lbl   _ 0Mb\Ol _ 0NbXU8 _ 0Ob.A< _ 0{bZAh _ 0|FI   _ 0                                                                                                                                                                      .U:p_ 0GJ.. _ 0G... _ 0.r:.  _ 0.r:.  _ 0.r:.  _ 0..;P( _ 0..;P. _ 0....$ _ 0....( _ 0...., _ 0..... _ 0..... _ 0.
{D  _ 0.&j._ _ 0.'h.  _ 0.&..  _ 0.&ZAh _ 0.G..0 _ 0.c..0 _ 0.cX.&__ 0.cX.k0_ 1 cX.s@_ 1!cX.3 _ 1"F9EnP_ 1#biT  _ 1$6..jP_ 1%6
.  _ 1&6.., _ 1'6..| _ 1(;k.nP_ 1);j.. _ 1*bT  _ 1+bW  _ 1,v<   _ 1.v=   _ 1/cL.d _ 10cL.h _ 11cL.D _ 12&h   _ 13/H_  _ 14R._  _ 15R|.  _ 16R._  _ 176k.  _ 1ERk.  _ 1E+K.&._ 1F_    p 1Ga0   _ 1Ha@   _ 1I,V&__ 2.v]AP _ 3;.V&__ 3;V]AP _ 3AvTV&__ 3GvTO_ _ 3I-A( _ 3JF.C^__ 3KF.R  p 3.6;.h _ 4hF.T&@_ 4hoh.p p 4ioh.q0_ 4koh.qP_ 4.2{T  _ 4.2{Td _ 4.kX_  _ 42k]   _ 4>kXB  _ 4?k]_  _ 4Bk[   _ 4FkX_  _ 4Kk\_  _ 4MkY   _ 4Qk\_  _ 4Uh    p 4hj@   _ 4lj0   _ 4qkI   _ 4tk@   _ 4ykI_  _ 4zj_   _ 4.jp   _ 4.k)_  _ 4.k+   _ 4.k(_  _ 4.k.   _ 4.k.   _ 4.k)   _ 4.k(   _ 4.k-   _ 5!3h.  _ 5)3h.d _ 5Ooh.  _ 5Toh.d _ 5mb]   _ 5nb]1  _ 5$2.   _ 5%2.1  _ 56.T&@_ 5_.;L  p 5_-0   _ 5iZyv__ 5tW{L  _ 5zZ.4)._ 5.&iD  _ 5.
|O  _ 5.  _ 6$2=V  _ 6&2..7__ 6,R..0 _ 69.I.  _ 6@Zy.vp_ 6G2..d _ 6M
|Q  _ 6T.k_  _ 6VFkB  _ 6_Fk_  _ 6aFn   _ 6bFm_  _ 6jol_  _ 6noj   _ 6p2k_  _ 6w2i   _ 6x2m   _ 6.2l   _ 6.j9S  _ 66W  _ 6.6<W  _ 6.6p   _ 6.7<_  _ 6.70   _ 6.*\   _ 6.k_   _ 6.?l   _ 6.7=   _ 6 c0   _ 6"'    _ 6'n|N  _ 65n|S  _ 6:n|C  _ 6<n|H  _ 6>n|NX _ 6@n|F  _ 6Bnx   _ 6L2k   _ 6P3+   _ 6S3)_  _ 6T2k1  _ 6U2k2  _ 6V2h_  _ 6X2h   _ 6Y2n   _ 6Z3(_  _ 6[3)   _ 6\3,_  _ 6]2k_  _ 6^2l_  _ 63(_  _ 6_3.   _ 6a3)   _ 6b3,_  _ 6cV>P  _ 6d.<N  _ 6eR=El _ 6fFS  _ 6n2i   _ 6pnZM0 _ 6unZMd _ 6                                                                                                                                                   *_  _ 6.3*q  _ 6
3-_  _ 63-q  _ 6.n|   _ 6.n                                              _ 6.oi.  _ 6.nlUT _ 7$n\U  _ 7&.k.  _ 7+K   _ 7-,   _ 7/-   _ 71H_  _ 7BL   _ 7FL   _ 7IL_  _ 7K7M   _ 7S7I_  _ 7U7K   _ 7YF|C  _ 7^F|W  _ 76x.  _ 7c6yP  _ 7d6y   _ 7h7M_  _ 7k7J_  _ 7l7H_  _ 7m7H   _ 7n7L_  _ 7o7I   _ 7p7@   p 7q7K_  _ 7x7N_  _ 7.7L_  _ 7.6K   _ 7.6L   _ 7.6M   _ 7$6L   _ 7-6N   _ 7/^]B  _ 77^]1  _ 7N^]2  _ 7^]L  _ 7a^]O  _ 7e6>7. _ 7k6>5. _ 7l2d_  _ 7m2e   _ 7n']Ah _ 7t&:.o__ 7z&9EnP_ 7|&;Sp _ 7.&i., _ 7.FiE  _ 7.Fi2  _ 7.FiR  _ 7.Fi1  _ 7.Fi3  _ 7.Fi6  _ 8-Fi4  _ 87b9F  _ 89nZ   _ 8<n[_  _ 8=nT_  _ 8GnU_  _ 8Jn^   _ 8MnU   _ 8OnU_  _ 8WnT   _ 8XnU   _ 8^nT_  _ 8ni   _ 8dnm   _ 8mB|E  _ 8po]   _ 8yR                                                    ( _ 8|R                                                    0 _ 8>R                                                    7@_ 8R.   _ 8.-   _ 8.R._  _ 8.R.   _ 8.29.p _ 8.3X.Rp_ 86nX50_ 8;nX5@_ 8>R                                         _ 8AR                                              _ 8C>d_  _ 8P>d   _ 8T7.   _ 8X7   _ 8Z7R  _ 8]7_  _ 87.  _ 8d7N  _ 8g7._  _ 8i7A( _ 8p7..P _ 8{7.Ix _ 8>7..0 _ 8.6<.d _ 8.7.._ _ 8.7.l _ 8.6\C  _ 8.6X.  _ 9(7.   _ 937_  _ 987q  _ 9A7p  _ 9C-   _ 9Fo(_  _ 9Fbl_  _ 9FV_  _ 9G+.P _ 9H)Ix _ 9I).h _ 9J+.< _ 9K).h _ 9L+.0 _ 9M(._ _ 9N(l _ 9OoX._ _ 9PcV   _ 9WcTp  _ 9Yc[   _ 9[',_  _ 9\'-E[__ 9gZ.O _ 9jZ.Ed _ 9l.;Pd _ 9                                                                                                                                              ;P_ _ 9.r:_  _ 9r:q  _ 9.r:s  _ 9!r:r  _ 9+...h _ 9C...X _ 9F...l _ 9T..._ _ 9c...d _ 9ib]A( _ 9|b\.  _ 9.bX.P _ 9.b[.x _ 9.s<.p _ :8b\.p _ :?2<R  _ :G6<R  _ :M2<T  _ :R6..7__ :S.;.v._ :YrYP  _ :^r.   _ :cryP  _ :eryPd _ :lryPh _ :nryPp _ :uryPl _ :{rp   _ :>c.   _ :.c._  _ :.c._  _ :bZ_  _ :.VZ._ _ :.VZ.d _ : V[.q0_ :)c^q  _ :7r0   _ :>r;_  _ :Fr4   _ :Ir4_  _ :K+j_  _ :Q+jq  _ :W+jr  _ :Z+jr$ _ :^+js  _ :cGj_  _ :hGjq  _ :pGjp  _ :ySP   _ :.S    _ :.S$_  _ :.S+_  _ ;$R<O  _ ;%2i_  _ ;&cH.  _ ;/cH.  _ ;52lP  _ ;72l1  _ ;82l   _ ;:cHr  _ ;=cHq  _ ;AcHs  _ ;Fk{Ip _ ;IGlE.p_ ;LGlD\ _ ;PGlR>._ ;V2.Op _ ;Xb.W0 _ ;as(.FP_ ;bb;I, _ ;eb;I-0_ ;h*Z_  _ ;                                                                                                                                          Zs  _ ;.*Z.  _ ;.*Zs$ _ ;.*Zr  _ ;*Zs( _ ;.2n   _ ;#2n1  _ ;,*k.N._ ;2*k.L _ ;4*jq  _ ;B*jr  _ ;Sn                                                     _ _ ;Zb                                                                                                                                                                                                  _ ;n2m_  _ ;p.l_  _ ;t.k   _ ;|.l   _ ;..h.  _ ;..h_  _ ;..i   _ ;.[.S  _ ;.[.N  _ ;.2i_  _ ;.69_  _ <"6;   _ <++I  _ <0+   _ <4+1  _ <A+T  _ <E69.  _ <F2l_  _ <G2k   _ <IsHq  _ <MsHr  _ <TsHs  _ <U2j_  _ <XN;S  _ <^N;Sd _ <no<.X _ <u2;S$ _ <.2=.  _ <.28_  _ <.&yMp _ <+&{S@ _ <B&|S@ _ <Nci   _ <Zch_  _ <]ch.  _ <fch.  _ <hch.  _ <sch.d _ <>ch.  _ <.ch.  _ <.chX  _ <.clD  _ <.cl.  _ <.cl.d _ <.cl.h _ ="c$_  _ =*c$   _ =8c$_  _ =9c%_  _ =Cc%   _ =Ec%   _ =Lb5_  _ =Tb5_  _ =_b6   _ =gb5   _ =ub4   _ =|b4A  _ =                                                                                                                                                                                                  4_  _ =.&                                 < _ =.6;.&._ =.&                                                                                                                                                                 P _ = &xA  _ =>c_  _ =\b4_  _ =_b5   _ =ib<W  _ =kc,W  _ =pr<W  _ =tbW  _ =xb|W  _ =.r|W  _ =.r|ET _ =.r|AT _ =.b8q  _ =.b8.  _ >)b8_  _ >-cX.  _ >7/X_  _ >>cXq  _ >GcXs  _ >Sbi_  _ >[bi.  _ >bk   _ >cbk2  _ >ebk1  _ >gbi   _ >kbi2  _ >tbi1  _ >ybl_  _ >.bh_  _ >.bhr  _ >+bhq  _ >46.   _ >76._  _ >=6.q  _ >C6   _ >E6..  _ >G6..T _ >V6..W _ >W6..  _ >X6..S@_ >Z6..o@_ >\6..b__ >^6..0 _ >a6... _ >h6...__ >s6..10_ >x6..1@_ >z6.  _ >|6.  _ >.6.d _ >.6.  _ >.6.d _ >.6.h _ >6
_  _ >.6
q  _ >.6
s  _ >.6
.  _ >.6
t  _ ?$6
.  _ ?'6
.  _ ?+6
.  _ ?/6
.  _ ?3b   _ ?Mb1  _ ?Pb2  _ ?Ub3  _ ?b{_  _ ?db{   _ ?lcL_  _ ?ncD_  _ ?qcD   _ ?                                                                                                                                                                                                   D_  _ ?>cD   _ ?cDA  _ ?.cFX  _ ?.cE_  _ ?(cE   _ ?)cE_  _ ?/cEX  _ ?0cDr. _ ?3cD4. _ ?6n<T&@_ ?9n:.&@_ ?=n<.&@_ ?Mw]1  _ ?dvd        DECLARE INTEGER GRADE, REM;
       DECLARE STRING IFNAME(30), OFNAME(30);
       DECLARE INTEGER IFNO, OFNO, TEMP;
       DECLARE INTEGER NOSTUDENTS, NOSCORES, PERFECT;
       DECLARE ARRAY WEIGHT[50];
       DECLARE STRING STORAGE(0);
       DECLARE ARRAY SS[10000];
       DECLARE INTEGER CHAR;
       DECLARE FIELD BP(0), RP(1), WP(2), EP(3);
       DECLARE ARRAY NAMES[4*200], NAMES1[4*200];
       DECLARE INTEGER AVG, I, J;
       DECLARE ARRAY SCORES[200], SCORE1[200];

START: INITIALIZE();

S1:    SOUT("&M&JINPUT FILE: ");
       SETS(IFNAME,0,0);
       INNAME(IFNAME:S1);
       IFNOINFILE(IFNAME:S1);

       NOSTUDENTSIIN(IFNO)-1; PUNT() IF CIN(IFNO)#'&J';
       NOSCORESIIN(IFNO)-1; PUNT() IF CIN(IFNO)#'&J';
       WEIGHT[I]IIN(IFNO) FOR I0 TO NOSCORES; PUNT() IF CIN(IFNO)#'&J';
       PERFECTIIN(IFNO); PUNT() IF CIN(IFNO)#'&J';

       SETUP(STORAGE,250,SS);

       FOR I0 TO NOSTUDENTS DO;
          WCI(CHAR,STORAGE) WHILE (CHARCIN(IFNO))#':';
          WCI(':',STORAGE);
          WCI(CHAR,STORAGE) WHILE (CHARCIN(IFNO))#':';
          STORAGE.EPSTORAGE.WP;
          BCOPY(@NAMES[4*I],STORAGE,4);
          STORAGE.BPSTORAGE.RPSTORAGE.WP;
          STORAGE.EPSTORAGE.EP+250;
          AVG0;
          AVGAVG+WEIGHT[J]*IIN(IFNO) FOR J0 TO NOSCORES;
          PUNT() IF CIN(IFNO)#'&J';
          SCORES[I]AVG*10000/PERFECT;
       ENDFOR;

       BCOPY(@NAMES1[0],@NAMES[0],4*200);
       BCOPY(@SCORE1[0],@SCORES[0],200);

       FOR J0 TO NOSTUDENTS DO;
          FOR I0 TO NOSTUDENTS-1 DO;
             IF SCORES[I]<SCORES[I+1] DO;
                TEMPSCORES[I];
                SCORES[I]SCORES[I+1];
                SCORES[I+1]TEMP;
                BCOPY(STORAGE,@NAMES[4*I],4);
                BCOPY(@NAMES[4*I],@NAMES[4*I+4],4);
                BCOPY(@NAMES[4*I+4],STORAGE,4);
             ENDIF;
          ENDFOR;
       ENDFOR;

S2:    SOUT("&M&JOUTPUT FILE: ");
       SETS(OFNAME,0,0);
       OUTNAM(OFNAME:S2);
       OFNOOUTFILE(OFNAME,3B6:S1);

       FOR I0 TO NOSTUDENTS DO;
          J0;
          WHILE (CHARGCI(@NAMES1[4*I]))#':' DO;
             COUT(CHAR,OFNO);
             JJ+1;
          ENDFOR;
          COUT(' ',OFNO) FOR JJ TO 30;
          COUT(CHAR,OFNO) WHILE (CHARGCI(@NAMES1[4*I]:S3))#' ';
S3:       COUT(' ',OFNO) FOR J1 TO 6;
          GRADESCORE1[I]/10;
          REMSCORE1[I] MOD 10;
          GRADEGRADE+1 IF REM>=5;
          REMGRADE MOD 10;
          GRADEGRADE/10;
          IOUT(GRADE,OFNO); COUT('.',OFNO); IOUT(REM,OFNO);
          SOUT("&M&J",OFNO);
       ENDFOR;

       SOUT("&L&M&J",OFNO);

       FOR I0 TO NOSTUDENTS DO;
          J0;
          BCOPY(STORAGE,@NAMES[4*I],4);
          WHILE (CHARGCI(STORAGE))#':' DO;
             COUT(CHAR,OFNO);
             JJ+1;
          ENDFOR;
          COUT(' ',OFNO) FOR JJ TO 30;
          COUT(CHAR,OFNO) WHILE (CHARGCI(STORAGE:S4))#' ';
S4:       COUT(' ',OFNO) FOR J1 TO 6;
          GRADESCORES[I]/10;
          REMSCORES[I] MOD 10;
          GRADEGRADE+1 IF REM>=5;
          REMGRADE MOD 10;
          GRADEGRADE/10;
          IOUT(GRADE,OFNO); COUT('.',OFNO); IOUT(REM,OFNO);
          SOUT("&M&J",OFNO);
       ENDFOR;

       SOUT("&L&M&J",OFNO);

       FOR I0 TO NOSTUDENTS DO;
          JJ WHILE (CHARGCI(@NAMES[4*I]))#'-';
          JJ WHILE (CHARGCI(@NAMES[4*I]))#'-';
          COUT(CHAR,OFNO) WHILE (CHARGCI(@NAMES[4*I]:S5))#' ';
S5:       COUT(' ',OFNO) FOR J1 TO 3;
          SOUT("&M&J",OFNO);
       ENDFOR;

       COUT(137B,OFNO);
       CLOSALL();
       SOUT("&M&JDONE."); EXIT();
       FUNCTION PUNT();
       SOUT("&M&JBAD!"); EXIT();

       END;
>                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                            _<"                                                                                                                          @                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                         ?+=>+;<+<] B  I$E OR D?   /X+>4+?  M  P4+@  @  c?+A>+;<+<] B  Z$ENCODE FILE / s #] /  P.!O?+R.!T?+B.!W  v?+C>+;<+<] B  m$DECODE FILE / s #] /  c.!O?+X.!T?+D.!W  v?+E>+;<+<] B  .$KEY: /  ?+F<+;] ,3 !.!NX+>=+G=+H  .6+I3! >!X<!Ng!rn!r8!N?!N=+J  .  .4+K  .3 !<+;] ,?+L>+;<+<] B ! $TO FILE /  s #?!W] 0  ..!R?+M>+;<+<] B !+$/ ?+N.!Q<+O!O !91aT?+N<+O!R !4?!Q4+N !< !+6+O.!Q !0?+PX!R] 1?+Q>+;<+<] B !G$DONE./  ] *   <+Y3 !.!N3 !.!P.  ; !.!V> $; !v !v "; "v !9!V; 76!Vv #v $n %8!N8!P> !?!P=+J !N?!N=+N !L<+S>)r&+T'+U.!S.  g)r3 ,g)su)s3 ,;aS.  > !0!g<+S>)r; ,&+V6+O.!M; ,&+V6+O.!U?aM9aU.aM0!v<+W>)En!w0!.4!H   <+Y3 !.!N3 !.!P.  ; !.!V> $; !v !v "; "v !9!V; 76!Vv #v $n %8!N8!P> !?!P=+J !.?!N=+N !<+;?+V.!L>)r; ,&+V6+O.!M; ,&+V6+O.!U?aM9aU.aM>.8!L !)<+S>)r&+T'+U.!S.  ;aSu)s3 ,g)s3 ,g)r.  > !0!9<+W>)En!w0!H4!.                                    >pCG.3=..Yso4R.c.?=q.                                                                                                                                                                                                 @IF^.|..E&B_?.#H..PLqL.QE..n+B.QA$I:D.-(x&NkD[].@.wT.b.C
zjr:..?j .                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                            ...  !  E     E  D  U(    h,    {  #  Z  @  A  $  .  . !* (  X   > !D !H..    @  '.... !. !r                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  .