IMD 1.18: 23/09/2013 10:59:55 terakb: ucsd-pascal II.0  @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ ,lŗkm HBf     &  E.CODEtDOUBLECOL.TEXTTRT11TOEDIT.CODEC SETUP.CODE:[%C e U7N ?IO ERROR WHILE BOOTING? 7, ?NOT ENOUGH CORE TO BOOT?   e   ևߕ vߕ 7 SYSTEM.PASCAL? w7j SYSTEM.PDP-11? @Aw  `! m d!  \ZD C& H&  0  EL    _ U@pe5w E ŋw Ŋw C! @  ̋   wLwDԤ eeW 7 ?YOU DON'T HAVE A  ߋt_v @ @ COUNT BEQ RWBAD ; HAVE WE RUN OUT OF CHOICES ?? MOV @SP,R0 ; GET ADDRESS OF IDCODE CMP (R0)+,(R1)+ ; IS FIRST WORD EQUAL ? BNE 1$ CMP (R0)+,(R1)+ ; IS SECOND WORD EQUAL ? BNE 2$ CMP (R0)+,(R1)+ ; IS THIRD WORD EQUAL  {TERAKBG/".Z  SYSTEM.PDP-11Z$SYSTEM.CHARSETZ"$@ SYSTEM.FILER:[g@a SYSTEM.PASCALZ8a SYSTEM.EDITORje SYSTEM.LINKERjSYSTEM.COMPILERSYSTEM.LIBRARYk SYSTEM.SYNTAXj%SYSTEM.MISCINFOȟ XXREF.CODE:[ FORMAT.TEXT:[a2 REMOTE.TEXT:[2J COMP2.TEXT:[Jb CALC.TEXT:[be FORMAT.CODECODEek BINDER.CODE:[5ks CALC.CODEK.CODEsy FOOTNET.TEX {TERAKBG/".Z  SYSTEM.PDP-11Z$SYSTEM.CHARSETZ"$@ SYSTEM.FILER:[g@a SYSTEM.PASCALZTEXTy} TESTR.TEXT 6 & p f7 ` N H~w : ?2  "U@ $ wE7 w  "&\htx   $ ( 2 6   F X l   0 FR R R R R R $ 6 L p >  (.> FH  ,JN $*06<BHNTZ`f%SYSTEM.MISCINFOȟ XXREF.CODE:[ FORMAT.TEXT:[a2 REMOTE.TEXT:[2J COMP2.TEXT:[Jb CALC.TEXT:[be FORMAT.CODECODEek BINDER.CODE:[5ks CALC.CODEK.CODEsy FOOTNET.TEX )`*f!N TEXTy} TESTR.TEXT vUB~     I?f& 7  AFeA  Ձ@  a a!~F@  B~ ~E `E `EՀW WFlxT   mhAɋF!p &.JffD e w,5 w&De D `E e `&& `& `E e `&EՀ~  7 CB@B C& Ο @ e E`E``B~A EwwD  ҂ ~ E e ` E   @ ` Gz7<z   7NH w   '((@`@`( (+m ]   P~P~7 6W w{ N B  6 E E7N eeNPP  W  ~~eee``!~ e C~C~ %~& EET Bd`n * %  D~ " ~ E D~ D C~ %  D~ C~C~cheί^Z%@ eAp6% "1, lrx~``@n`faf@d"# 6!"@* X r   ~& AA~E e @`& E&~AA~E e @`&AA~E $ B h Z t  @ @ e @`  `` t @L A@@A tBt J@ P ``f~f ~f{fxfufrfoflfifffcf `f"]f$Zf&Wf(Tf*Q NKHEB ``A~ c ҇e  ``&& `  E e @a&&6?<963 0"-$*&'($*!6eeee e  e eE e @a&E e @a \@@`@`$fH& ,   EezN EE7- @$@$@$@" EB~ H&z%%@7 `e B~  B~ _7@`  7 &X\7 &X``WtB  aBE B<  wN EC~ B~ dd&`f&d&b&  m e, ɋ e  rfwBC % eU f &z  eN 8@ 6NE LU@t7`.~BE B @Wt 7dz\ Aɋ BJ@ Bm8~@ Bm*~@ Bm~  IF IMPLEMEN4IN )INTERFAC3LABEL MOD 'NOT &OF OR (PACKED +PROCEDUR Ette E e' eZ-V잇ELE7 @ e dddPROGRAM !RECORD -REPEAT SET *SEGMENT !SEPARATE6THEN TO TYPE UNIT 2UNTIdddd|ddddddddddddd"PE Ґ~X wU &f&L USES 1VAR WHILE WITH 7 `&X& @  z7 `&X7 &7 &7 #7 f7 \U   0ɝ^& _E7 \C DE!:7  7a(7 #7 %7 P)\ vw J r'(((@ BCzEG@HehD A   aw7e:wXP@P7n@eI70@wnM)w\ 7 ,PtJ$LM nO(kQRChTV焵W!cY_[\^^k `#ǭaxXc'exfhShjQYkoNmo9?pIrs|ouEw7x߄z @|Η} ßz 5U$ J  E     7 7  @  27 ½  & && &7 <b7 <b7 <b7 t&<nb7 \&<z!ׯ+U E `    ͋D 5|w 5B N  5b6 \ = "  \m\  W  m e,5`\_e w5 5@ , W#D  7W ΁?Zw w   D5H5   :@ S~ e&-" \ɋE 5\\\wvr@p@8D:NDwn.5) 5|w 77 :  .-& pU`E@ wHLbjrz - e6_ 8 E E7 _ wUw .h FU@ % eC ~% C ``` 1,1,^  % ^A %^A&Daef ¥_09E AZ K E|7 xvv vV R-N$D TO SCREENMOVE CURSOR    C  f ee@ $ $ $ $ @A eeee >eHOMEERASE TO END OF SCREEN  &fEʝ@W $  xw w ʕJ !$'(****AND 'ARRAY ,BEGIN CASE CONST DIV tʕ  Q~EU 5 \ N  X UU0 >e0 'DO DOWNTO ELSE END EXTERNAL5FOR FILE .FORWARD "FUNCTION GOTO    W #@e@ E@W $ E&@W $E  t`  Ue _ E7 ~ TO THE PROMPT/5"NEW VALUE" WILL ESCAPE THE SINGLE OR PROMPTED CHANGE4SEQUENCE WITHOUF',','D&n'D&#D&#D&#D&#D&' e\ \S\ e& @7 #^''e\'f&T CHANGING THE CURRENT FIELD'S VALUE.I0 wU  M _&5ŀ - \:יc&>X4%]@& & & & & D&&D&& @%7 r%'  IA e / -.!  xt -.! v v ^ T `_VB JF ":7 4e@ e& & & & & D&&e #@  @6 7 %n(6 6 #E7 _ 7  E7 D"U@ %LN wU  ?%-0 @ ׳f&& @׳@f&7 D&#)#%(f&f&7 lD&)D&#D&#D&#D&#D&##,)#R&E@ e ]& 7 7 7ߐ2 7  | t ~"w d  )   \L)f& \ e\>:L]L?ƪ@ \fEA#& e@ & f& f& f7 %#|)  X N wK w: 7 ,* $? U@ _E7 wnf U? ff w   &@& )   E7 ez\& Dr)&&\   5@5@7 X#>$#%T$T$>*>$$~$~$$>> >.*.:*:8DD88(800   $~$|8(8D&*$4$4$4$D&#D&#D&#D&#H$&^$D&#h$D&h$$f&\  \& \\r1@\[?\  ~8(8``0 > BB~~BB~>BBBBB>~>~~-  e \z\D f C_  fW & @&&&&7 %D&`&%&%%#%D&#%##%z%#%D&%e\>>"rBB^@BBB~BBB ">B""B~fZBBBBBBFJZRbB~BBBBB~~BB~~BBBRr~@~BB>BBB<\;@\ \N @   =@f&ysE[\pCf&f&\% a @w  B<@B<~BBBBBB~BBBBB$BBBBBZfBB$$BBBBB<~B0< B~>> 0``|@@@@@|> 6 6 &  f 6A  v  6N\z\\\ N A f C %<@\B|:FBF: Non-Wild) card(Ill file/vol nameת(}Ill change (Vol <??`(H"a- TR cbd cto> file) nameת(UBad dest for files foundת(4,"iEbUġ#(צ fZBBB>BBBB>xx > 5 FILEHAND ہہǻ ýýýýݽGצצkת{צcתת(WצSתԦת(KצOת  ÿ۽ϟn`Äצ(ڹצParity (CRC) error(Bad unit numberת(Bad I/O operationת( Timeout errorÿŹýýýŹת(Vol went off-lineת(File lost in dirת(|צ Bad file name(fצNo room on vol(ONo such vol on-lineת(ýýýŻ3File not foundת( t`K1ٹVol already on-lineת(Text file lostת(צCode file lost(Qˡá  File foundת(צBlkd vol( Unblkd volת(צ File name(צFile/(unblkd vol)(צFile/(blkd vol)(צ000 Q 0 ̌̌̌? ?File/vol(Vol nameת(צOutput file full(Workfile is savedת(No directory on volת(No workfile to  N۪ڪƁK""áN׷9& צ ? "'ز=g(=g=&=g&Pɡۡצ ...too long <ٹFצ file n  ڪ٪ت&:&Pɡ(š ame < scan string #צ vol name  M8!ۡ1á    - char. max >---> 4ثضÍצ$*á-:á?: Illegal formatT<=ڲ= ݪצc&.צ what fileצ:á ;&Pġ - عEXå[ׯGC81(o* what vol ?  , gg#š=jgjPg?=ɍ : MJLN0A$6Uۡ &Pɡ צ, áצ áצ g=#g=ɍ=*á =*jjjצ:j($hh=ɡX="#š=P="=expected1(& Ş"˶ I/O error # 4!צ Filer error # ءfܪ(G[!nء CGGá+á &"ˡ~[צ[\&),áY 6( ˡ  .  sآWצ:آ(Yצc&" ȡ3پ!}ȄپaپzȄ پaAצI T  ܪ۪ڪ- آצ ? ) ,áYø۪   ˡ[ ġR&    צ ? (Y/N) - -F&צ ?   0ު(áܲ~Í %&ܥKO &&ȡu ''k' ɡ& Invalid #aP  ˄8&Destroy Gצ: ?  ȡKk'k-'' ܡšڡKNJ [ áF([*****]/(ġ 0 2` ٪ # ת á  Y˄ &"&& & ܡ&'&k'{[1 0 ء,ˡ   ߓ`&צPut  : in unit  { c󓍄E''S'צ:'{!'0'c?'(&K&not proccessedء ߓ ٨š5Kˡ*   ġ" ء " á á3!:W~,gڲ= ggۓ$=? *[")ǐ ),, d,,[,["𥀈{á򥀿D#٪ؓצ *SYSTEM.WRK.,C:[.á" G"+!+~G?KÄ?G;K;GK,,, $[.GC .צE&Save as G,:, ׯ>צRemoveǀ RemoveE+G:. ? 瓡צSave asצ[š C?/צTEXT$CODE$饀ޤ removed%á % ń,&Update directory ? צ".[G&TEXT&  #hKצ*..CODEOld code removed, Ɓ3"ݣ ɡݣ  ڕš"ق Text file saved  & 0צCODE  #צCode file saved62"o.ܡC׷C#ÄÄ~Íj%á*צPut in G:'צInsert destination צצ not named2 Workfile is :.񄓡 (not saved) No workfiledisk % š " ݢÄv%.ת&תת(&Ɓ.񄓡9&צThrow away current workfile ? ݢÄ ۡ"ˡ ݢڶ /ݢ0/0 /0 ءצ*SYSTEM.WRK.TEXTצ*SYSTEM.WRK.CODEצ*SYSTEM.LST.TEXT**.*צ.BACK*צ"=h"h=h"h"=P=gg=á?gg=ɡ, 󍓡 =g/0 0 òCń /C"ݢݢ///צ://td צTPܓÄ)jjSjצ:jˡjj(jAj(ܓfOGK׷ȄransferTo whereׯ󓄡=H3Transferצblocks# of blocks to transfer צTransferff@Զ  rުݪ"צPWkKGšׯɄ  צ. Ɓ-צMakeǐh"))** **S{c\ڥs[KG2G:[ Remove oldRƁ-צChang"&G:[ madeצT! ߪ Ɓ8 55 *SYSTEM.WeChange to what׷{צSW,,W,צ:,(,,(,{A,(*צChangeRK. 5 5 4454=5  d66.6.6 65ݪ   p  .&ؓń=.צ.TEXT.צ.CODE ..Ȳ.׷:.TEXTצText ײ ƃƅ0ʅ/ƅ0. ڍʅ- /ƃʅ. ƃ/ƃ  ƃ files;ƃצ, ƃʅ( ƃ blocks usedƃ, ƃʅ* ƃ unusedƃצ, ƃʅ+ ƃצ in largest&+- ȡ%ܾz ܾ0ŶȄ: \,%Date "١ ƃƃ"ƃ ,  N- Vols on-line: ȡ &Gset: <1..31>--<00..99>Cˡ_צ Today is C -C- ȡR~צ; צ #  :צRoot vol is - C  New date ?  ,Cػ+škGGȡ"GؾAĥGؾZȄ?:צPrefix is - ;: 0 צ Zero dir ofצH  GإGؾAa ȡ$GCػ+c,C ػ?צ:@ÄצDuplicate dir ?   Are thereצblks on the diskצ# of blocks on the disk צNew vol name ?  Cצ The date is C -C-C 6 * 饀:˥׷!צ:DGצ : correct ? ,%ö,ÍP$&,􍓡~%K:, %,,,|.G CK"צ: zeroed p1šצFile(s) endangered:Mȡڶ+šڸ+*ڂ*ŶB < UNUSED >     .p/ƃƅ'l\ؤ áצ Directoryڢڢ  v 2Dir listing ofצ׷١糖 צ#1:(ƃ"١̅.̅-̅,̅+̅*̅) ̅(ˡZ ȡ<ڤ š+ؓښڤ ȡ3ؓ R j3צBad block scan ofצ Ä . %̅,ړצListƅ-~$ʅ.áWriting.ʅ.̅.ʅ- ̅/צHScan forצblocksScan for how many blocks ܕšۏ"ˡ`ۂȡQRemove  ء&צWorkfile cleared&Tf ' ݪܪ  : .  ǀʅ- ʅ//ʅ/ʅ/̅)ʅ(ʅ)̅(ƃʅ/ƃצʅ/ƃʅ) ƃʅ/  ƃ-ƃƅ0ʅ/ á@ .  ڲ צ& * )'Getצǐ&G.[0ƃ-ƃʅ/   ءQƃʅ/ ƃʅ/  ƃƃƅ0ʅ/ƅ0ƃfile3ƃʅ/   : crunched#צPlease re-boot{ X6تPFP') x"ˡ93צBlock  צ is badۂġ צ bad blocks2 R88תVצOFiler: G(et, S(ave, W(hat, N(ew, L(dir, R(em, C(hng, T(rans, D(ate, Q(uit [C.4]8+צ 4צExamine blocks onצH&Block-range ? S  SRR  RRˡR&Filer: G, S, N, L, R, C, T, D, Q [C.4]8?áVOFiler: B(ad-blks, E(xt-dir, K(rnch, M(ake, P(refix, V(ols, X(amine, Z(ero [C. ġ RSSRō5%SVR̂dVʂdȡ V3VVš#2 Fix them ? Ǡ  4]8+&Filer: W, B, E, K, M, P, V, X, Z [C.4]8ڡ$&B% ȡ~٤ܦ׷u ȡhܲ~ؤ T USVR̂dVʂdȡצBlock V ƁdVƁdV"á dV"Ɓdd  may be okVWarning units   &  צ have the same name--('z is badV3ˡYV šOUVˡ9TTTM šTVT"צPrefix titles byl;G& Prefix is ;:`%\!X0T4P1L5H6VVUVVá52Mark bad blocks ?š$צ (files will be removed !)צ (Y/N) D*@:BZ2" (@,(NXF0N>w\ ƁG&צSYSTEM.YbcCZ BAD.xxxxx.BADתV̂dVʂdȡV̂eʂeWʂeXT̂fTʂfġ1Z TʂeoT0WRK.TEXT צSYSTEM.WRK.CODE &PĶ (Dɞ(ń?Íצ0???JanFeʂeoTTT TWT ɡTTWT#VV צBad blocks markedH`]t5ebMarAprMayJunJulAugSepOctNovDec?????????0צ Bad CodeTextInfoDataGrafFoto ~% ۢˡMoving ۢۢצ SYSTEM.PASCAL G?   š "0 & L (*&brB\( "&`'"#))'D+*,H--*..\//x0001B1Z1h55p8L5H6 " " ġ  7x8>` PASCALSYUSERPROGDEBUGGERPRINTERRINITIALIGETCMD צCrunch@צFrom end of disk, blockצStarting at block # 3 % forward ת   ȡ'  š 7  צback  ġ ɡ7 G"""""   overflowת(צInteger overflow(Divide by zeroת(צNIL pointer reference(צProgram interrupted by user(ʁ%ʁ% t*&*n تٞ&"á ~٤  :SYSTEM.ASSMBLERת :SYSTEM.COMצSystem IO error(צ unknown cause( parity (CRC)ת(צillegal unit #(illegal IO requestת(צdata-PILERת :SYSTEM.EDITORת :SYSTEM.FILERת צ:SYSTEM.LINKERƁ&̨<́b ́cʁcȡ~ؤcom timeout(vol went off-lineת(file lost in dirת(צ bad file name(צno room on vol( vol not found́dʁdתʁd0ʁdʁd؞&"á*ʁd ضá0?ʁdצ*SYSTEM.STARTUP(߫7ת(file not foundת(צ dup dir entry(צfile already open(צ file not open(צbad input format(r%́eʁ%ʁeȡlضʁ%ʁbQ́fƁfʁdƁfƁ&ʁ% Ɓf(ߡʁ% ʁbʁ%́bʁ%́%8FNo user programתP8F0turn  RáEáꥂNing buffer overflowת(צdisk write protected(uillegal block #ת(]bad byte countת(Fצbad init record(.Wáצ)Name of output file ( to return) -->ƂPƂáƂ̂.ʂ.ȡƂƂ۾ &}eN:%oYDצ IO error: (צUnimplemented instruction(צFloating point error(u.TEXTƂƂƂȍƂƂ.˄%Ƃ̂.Ƃ.ƂPƂ..TEXTUƂ.PƂƂ.á ƂƂtV,tString overflowת(]Programmed HALTת(EProgrammed break-pointת(&eP9$oYC#Bj| #fn^:R T>&`L " > d j p> I:*צ dup dir entry(צfile already open(צ file not open(צbad input format(r8FNo debugger in systemתP8F6  RáEáꥂNing buffer overflowת(צdisk write protected(uillegal block #ת(]bad byte countת(Fצbad init record(.Wáצ)Name of output file ( to return) -->ƂPƂáƂ̂.ʂ.ȡƂƂ۾ &}eN:%oYDצ IO error: (צUnimplemented instruction(צFloating point error(u.TEXTƂƂƂȍƂƂ.˄%Ƃ̂.Ƃ.ƂPƂ..TEXTUƂ.PƂƂ.á ƂƂtV,tString overflowת(]Programmed HALTת(EProgrammed break-pointת(&eP9$oYC#Bj| #fn^:R T>&`L " > d j p> I٢ š٢ ٢٢ 4*ƁV`tDoo odoo'zrצUnknown run-time error(צValue range error(צNo proc in seg-table(Exit from uncalled procת(Stacḱʁʁʁצ*SYSTEM.MISCINFOP*"áO* ?́*́ʁʁʁʁʁʁ  ? צ*SYSTEM.WRK.TEXT& *SYSTEM.WRK.CODEײ , 7 !! !:!!ڤ  ڤ  áڤ R :9CONSOLE:ת(:9SYSTERM:ת(8:98áצ Assemblingצ Compiling...á999':::::&: 6ëצ???JanתצFebMarתצAprMayתצJunJ(yáצAssembleצCompile what text? (ׯ::(:.TEXT-:( ulתצAug Sepת צOct Novת צDec ???תצ??????ת6! "ˡ$צ Can't find ::9 ƀצ:9 ƀ:SYSTEM.SWAPDISK&:(7%7詄% š t Welcome ?צ, to-*SYSTEM.WRK.CODE[*]תצTo what codefile? (צ,áuצ$,,ˡ-U.C.S.D. Pascal System II.0Current date is C -C-,::(,$,]ˡ$-::(:צ.CODE[*]0:--"ˡ צ Can't opeC %System re-initialized(, 06" 0 MayתצJunJn -   áث 7_a 7& š+ ;??ٟá'C CONSOLEצSYSTERMGRAPHICצPRINTERREMINצREMOUTexulתצAug Sepת צOct Novת צDec ???תצ??????ת6! <ƋD*SYSTEM.CHARSETת(ƋDʋI&"áǀʋUʋTʋKƆD ʋT  ̌fʌުP11ˡCۡ>1áIllegal file nameצNo file ́3ˡ fȡƆD   ̌fʌfȡƈD  ل7@ǀ ?̌fʌfȡƊDؤؤ  not code3"ˡצ Bad block #02́42ʁ4ȡCƀ2ƀ2ō$ƀ ƀ P  ƋDR677::9 3222́42ʁ4ȡuƀ2ˡaݡ9צ Linking...ܡ #צ988:9  6 ۪1٦׷)Must L(ink firstg222́42ʁ4ȡJ22č7ʁ302́532́6ʁ5ʁ5ʁ6ʁ5ʁ622צ: ܢܢH d    0&צצ.צ??e f@^ڤ áڤ !~ e ת*U    צ:) Running...ء ء:9á+ ɡ _1+ˡ  +á -8:9á'צ*SYSTEM.STARTUP %áá  ˡ.$  š t@..$$&ˡ . 6   FצKCommand: E(dit, R(un, F(ile, C(omp, L(ink, X(ecute, A(ssem, D(ebug,? [II.0]P')%?á@F.6% .&$&!F:F FˡFFD'%ɡצ*Command: U(ser restart, I(nitialize, H(altP')%$z쓡šɡš  P&:+:azȄaA Linking...ˡ&צ Restarting...צ U not allowed:) Type צ to continue) & ,Í ˫hp(PRRJHá68AX0qz((* "D&(,. Dv\xצצ22ȡ5233 ȡ 23aĩ3zȄ 23aA22š*á ?צ:26   FצKCommand: E(dit, R(un, F(ile, C(omp, L(ink, X(ecute, A(ssem, D(ebug,? [II.0]P')%?á@F2ȡá;2á!2ȡ5252š[ץ22š2222ȡ2š52צ*Command: U(ser restart, I(nitialize, H(altP')%$z쓡52á4w4]ץ11á4\1šV42233z 3042221é42é1Ä Linking...ˡ&צ Restarting...צ U not allowed2*á444ń55P.TEXTׯ]צ.CODEJ.BACKׯ7צ.INFO$צS#  צ, P#  צ, I# آ   .GRAFׯצ.FOTO8 <!~áë š%צSYSTEM.WRK.CODEsSYSTEM.WRK.CODE׷Fš5,á*6!F *STK OFLOW*תPFF+ ˡ 6!:9 "8צ.CODE.. Execute what file??á <צ Exec err #   á, ,(+,  šA.á צ.CODEm%,ábÍš 쾿  .Tá  INITIALIOUT COPYFILEENVIRONMPUTSYNTAEDITCORE삫Ú š a "á61 " *áá0á +-Í-ɚ l šš áš zV 0á$-á z   šš!邚邫镫ë퓡S  ! "ˡ!kO  ȡ*ńȄ4šá "ˡ "ˡáˡ á xń# Ȅ RתPńȄ ,ń.áš 隹Ká/Ä   ~@šQȡ2 š:X fE6 á1 š2    šš$ !邚邫!~?8FצPut in :P?FP'Ǡá*EEE   !#镫ë퓡h  ! "ˡ ɡ!  ! "ˡf á3E$ á"ˡ"& E ##&Eá +6+6ˡ á+á! "ˡ  +Uz 6á  Z4" V(n|lv J.*L  .Tf0 zL d2 Oš *š  @šQȡ2 š:X fE64T h ɡ 逫-á-32768ת Pġ>o00ń0ˡ o!~?8FצPut in :P?FP'Ǡá*EEE   !#  "á <&ȡ<-á á.á é Äە߂ũȍ0 á   ٪P&áצERROR: á<& Please press to continue.۩ߞ á<á / é쾩Í ߂  á߂߂܂܂ áR۾8۾áݩ۾ ۾ á ܕR`  d>h ٪Pצ what marker? -P,-Vۥ    ڞڂ ˡ  !Uقč,Vȡ-,-, ,,-- -- C ƂNƃz   šw^  á  ܂áũؓɍš  ٚáء  á á  á ƂN-R; v< ~*^LLbP& F > Z   ~  e   ݂ɡ  ݂ەݕ ; Z ,  B!۩ߞ á<á / é쾩Í ߂  á߂߂܂܂-š 0 ۍۡ צRepeatfactor > 10,000?COPYRIGHT (C) 1979, THE REGENTS OF THE UNIVERSITY OF CALIFORNIA\ á  8ڕ škvKThere is no room to copy the deletionɡ š    H FIؾ. Do you wish to delete anyway? (y/n)תP Yá*KڕJJI IJ2IھPھNéN˄  ˥P۾ܥOڂ  ٕ ݞ݂ ˡ !U܂Zhڡ?١ ( P!کN˄9!'۹  vڤVڳNĩ1ۥ č%`wȡ'ڤġڤڤ؂  * 񿥆P&  IĩIɄ I؂ IHZګ ء8ȩ쾩 쾩 vPv v&áٕٕ:áܕܩܕ   á    L(ft R(ght C(ntr to leaveתP צ+ Edit: A, C, D, F, I, J, R, Q, X, Z [E.6f]P<צ>Editȍ .˄# ̂5Ƃ5 PƂ5צ.TEXTUƂ5P .á N vNot present. File? תP"á :צReadingNvˡצ Reading file.N5øb  > K%̂5ʂ5ʂ5ʂ5ʂ5 ʂ5PHGv.5  ĸ5 á "ˡצ Disk error:v CC^v̂5ʂ5ȡܤܚAẐ5ʂ5ȡܤAaẑ5Buffer overflow.8 4آFGأ%Fأ&G G آ-NIآHآ$5ȡܤA09̂5ʂ5ȡܤA    Ǫ צP8VteinTZ|H  Iآ Hآ$Iآ Hآ$Iآ#Hآ$Iآ#Hآ$Iآ!Hآȍ .˄# ̂5Ƃ5 PƂ5צ.TEXTUƂ5P .á N vNot present. File? תP"á $I HIآ"Hآ$Iآ!Hآ$Pأ.Oآ/ POPآ)  > K%̂5ʂ5ʂ5ʂ5ʂ5 ʂ5PHGvOآ/ Pآ-Oآ/ Pآ,Oآ/ Pآ,Oآ/ Pآ'Oآ/Pآ:v CC^v̂5ʂ5ȡܤܚAẐ5ʂ5ȡܤAaẑ5'Oآ/Pآ(Oآ/P آ(O آ/أ.áPáPJO>Quit:תP# U(pdate the workfile and leaveצ E(xit without updatingPپخ%v ACDFIJLMP Q R S V XZ,>.+-?/=+ R(eturn to the editor without updatingצ% W(rite to a file name and return v٤ؚٳ v قؚ. M Edit: A(djst C(py D(lete F(ind I(nsrt J(mp R(place Q(uit X(chng Z(ap [E<    09̂5ʂ5ȡ )  (( ń(Ą?Í .6g]תPrצH Insert: Text { a char, a line} [ accepts, escapes]PIצA Delete: < > {Edit:KN̂5Ƃ5Ƃ5:Ƃ5&Ƃ5tx> to delete, to abort}PK Adjust: L(just R(just C(enter { to leave}תP ɡ"ˡWorkfile lost.vFNo workfile is present. File? ( for no file to exit ) תPvr2 Insrt: {,} [ accepts, aborts]תPI4 Delete: { deletes, aborts}תP5 Adjst::  P á v ,á ̂5ʂ5ȡ   .TEXT    áƂ̂.ʂ.ȡƂƂ۾ .TEXTƂƂƂȍƂƂ.˄%Ƃ̂.Ƃ.ƂPƂ..TEXTUƂ. ۲ ۾ ..ȡ۲۾ צ.TEXT˲ȍ.˄#..PPƂƂ.á ƂƂƂצ*SYSTEM.WRK.TEXTPצWritingNƂCNvˡ..צ.TEXTU.P.áȡLٕڂġ)Buffer overflow.ĩɡW  ۂۂۀ Nˡۂ.ɡ3 ꕞN  ٩ڞڂZ= ˸ .   Vˡ.Nצ Your file is   bytes long.UáV?&צSYSTEM.WRK.TEĶɄ , ڨ߶ߤ ߤ Marker not there. ٲ0XTN*SYSTEM.WRK.CODENתeצ4Do you want to E(xit from or R(eturn to the editor? ز+߾á f v   ׷   ׷ U=ˡ   EګצWriting out the file K+IT Nvˡ. ׷     ׷     Ƃ=ƃiצ& Copy: From what file[marker,marker]? PɡW  ۂۂۀ Nˡۂ.ɡ3 ꕞN ƂPƂá Ƃ=Ƃ# Copy: File not present. Filename? תP"áצ CopyP  Ⓞ ˡ.Nצ Your file is   bytes long.UáV?&צSYSTEM.WRK.TEڕɄ čⓄ% Ʉ "ˡ Disk Error.ĩƂ=XTN*SYSTEM.WRK.CODENתeצ4Do you want to E(xit from or R(eturn to the editor? Ƃ=fV^vdN  ׷   ׷ U=ˡ צImproper marker specification.  2ꂶ6צMarker exceed ׷     ׷     Ƃ=ƃiצ& Copy: From what file[marker,marker]? Ps file bounds.ĩ :ꕕ,צ[á$  ƂPƂá Ƃ=Ƃ# Copy: File not present. Filename? תP"áצ CopyP  Ⓞ ר  צ]ɍٲˍ.ڕ.P..P,áؕڕɄ čⓄ% Ʉ "ˡ Disk Error.ĩƂ=" RáEáꥂNWáצ)Name of output file ( to return) -->ƂPƂ     ە ..ȡ۲۾ ..ȡ wi[M=/AT(k) geQ"c&eginning E(nd M(arker תP  Bá)EáMá ةˡة$ ; E &(38 xؤá i ĩ צInappropriate environmentKR  w w  ȡ.ءצTrueצFalse0 ڳ@צ Date Created:  - -  Last Used:  -@צT or FȡĹ TáTrue צFalse Z -   Jצ Not option d  # ڳɡ ڂ0 wi[M=/AT(k) geQ"c&   צ. Environment: {options} or to leaveP  A(uto indenvSyntax Error #תP צ . Type @Ƃ ƃ7Ƃ צ*SYSTEM.SYNTAX"ˡ hȡ9t צ F(illing  L(eft margin   R(ight margin   ~ȡ- Ǘȡ ǹȡ .ȡ  Ƃ ˡ á d d   0 P(ara margin   C(ommand ch  T(oken def  0 00 :  ؕ؞ق ق   پÍ   پÄG vؕvDؕצ  צ bytes used,   available.HG Patterns: vצ . Type  á   Ƃ #%deQ"c&G2 = 'ũEǀ'H.צ , = 'Fǀ'wá> < A&! Copy: B(uffer F(rom file תP  DB Markers: wȡ8 xؤá K멂J IũIĄצ Invalid copy.멂JġNo roommLꩂJIĩIɄIJꩂצ Date Created:  - -  Last Used:  -J IꩂJ멂JꩂJ ĩ Fá * צJump to   -   Jצ Not option d \ةwxؤ xؤ  Not there.ؤ ĩ.\ $ JUMP: B( ɡ"צNo room to insert. j˄' ǀ vá(ȡ  á Ą ꂫꂶÄ  Í  KÄ˄Ąۄy á  háOȡ% ˡܡ IJڶȡ6No insertion to back over.   oڶġd5Please finish up the    á áث8   Ʉinsertion   ڶ š Buffer Overflow!!!! á    ڂ٥ č9h  ^ġ) > ! á ^áš (š  ) <öÍ   ˄w áwȡ/ ) x٤vצ$Marker ovflw. Which one to replace?P Jéé Íɡ f ġ앞$ĩp0wSet  ׷ Gwȡx٤ xؤؤةw앞 ^ á "4áww@n *  Set: E(nvironment M(arker תP  EáMá ةˡة ! á.!~ō?    G~ ĩo < eXchange: TEXT { a char} [ escapes; accepts]תP          á   ǀd ؂ȡ ؂ġ    á8š1ؾ\ áO ˄:؂š!  ؂  P  ɡ          š   ˡ? ة꾿á٫؞ǀ 8ꕀPšrZ-    ٕةġ-á- ؕ  ؕ ٩L WARNING! You are about to zap more than 80 chars, do you wish to zap? (y/n)תP  Yˡ   ؞؞ ٫ګ    U ؂ \   EL š ꕞ ĩꕕ  rP  ˡPšǀ3á   ø ɡzɄ2  ɡáĸ š# Í 4` x š ɡ,ń    $%&؂ɡ šٮ ݮ+,    IP Ä؂ jš앞0dšצBuffer overflow' 앞ˡ앫؂  vá   w"#<á"# |!x$sá< >  (  P  Nġ Integer Ovflw) <á"#]_nlDtٕ ,˄ Má M vá    á< >   ȩMd$ Tá(J átÄ S ٕ܄Lɡ ꕞ ٩ٕٕ   ܹ-(1ڕ($ڕ( 4-"á(wá (eDŽP ثLK IٕJ٫ ö ݓ -á- á'*  á á (- áڕ(ڕ( ˡá۫ k 'šA>á  ö D. ./ Lá .Vá . Tá#áR)  M;%*&&<á%&  . VTÍLÍ/SsÍV^0/L(Invalid delimiter.  ń     ɡT "$"#<á"# !$šToo many$ġצInteger Oveb   Ȅ5  ɡášĶ  rflow<) <á"#˶˄ >á#"+ $   Í      !ń9  á   á8á  á  Cá1á  á   ɡit"  Ʉ: á    |  *ȡGھ á-ń ۂšĶ   #<áTń1 á  ꂫġ ھO Z+ȡˡˡȡ ȡ  63ǀ Ŷٶq ġ   ض á 9 ؂    á<á  ٓ(MńצPattern not in the fileצNo old pattern.  " d   2  .|v 4ǀ Ŷڶq š  P  .Má  Má   d~ á 9ض     á   2  .|v 5EE Ŷ zxt p lhd ĩD@08lb^\ZXVVVTRPN024680>@b Eá X7Ŷ EɄ ŶŶ; ˡ; z\2n  t  ^&@H t tZz0`b0 öEɄ E Ŷ EɄ Eá ? !!h"#$#,%<%l&hv;צPattern not in the fileצNo old pattern.  " d8     á78>á54v b á78   3 P  .Má  Má   d~  Ŷ š 2 á}Aáojũ˄ȍzxt p lhd ĩD@08lb^\ZXVVVTRPN024680>@b ȥ  Ä: N6.۪PڪP.P [M /&SYSTEMLELINKER  צ]: ء% áL(itT(okz9z  Replaceצ' aborts,  'R' replaces, ' ' doesn't 9 á Rr˄Fš[Fš9צBuffer full. Aborting Replace FꕞFɡFꕞFFˡ F멂FꩂF.á*۾ ń  čġ.צYour pattern is too long @:̀̀  á Findצ =>9( Replaceצ V(fy =>9. 1۶ɩۂ۾Ä۶d% 02  á./0ʀ ťE1G á./̀0ʀ F1HéG éHGl  ȩMل*6 ١ނ߫ á: 9ȡ Linker [II.0 a2]E˫[':'צ in workspǠōɍdōצ bad proc/func$  vY[]_* Ŕ&ʁ&́'ʁ'ʁ'تP%Type (continue), (terminate)++á+ á VTrace'*SYSTEM.LIBRARYצ Host file? 'ׯ?':'צ iٚi.ھZڿ Zn workspace'š  ȡXצ Lib file? 'צ***SYSTEM.LIBRARYǀ"ȡ6ݢܢ`ܢ`ښ>  Rצ Map name? 'צ,.á .TEXTץ'۫۟á! ٢٢ٟáٚUۢ٢  !ۢ٢   ٚ۟áڟˡܡڢٚڢٚT x H ȡۢ`Ä ڢڢڢۢ`qˡצ badݟˡ2ݢܱ !ݢܵ ˡ: H ܟˡBܢȡ&ޢ ۯ ޢ` host segˡצ dup host segګ Láڢ ڢګ3áۢ ڢ  yy}/Já á:צUnit  not foundl ȡ"ښ ȡ á  áצ weird hostFTO_| l - > [ ڂتP.(2.P."ˡ2צ in workspace.CODE۟ˡSȡ<ۢcá'ڢۚڢڢڢڢګٟˡ٢٫eyj P."ˡ&.!צNo file Pˡ !צOpening /s//./ٚ./  >`  ת' #Zë[ !ššˡsegtbl read errá>-2-2ȡ+/c-˫ZZ--Z/ -0,šá8 ١צ li read err ١آá11/22`-ˡצ bad byte sex02`-Ä02-2`-˄'2`n ٟˡhˡc٢ˡUáצno room in seginfo6  ٚۢۢۢ-ˍfunny code seg2-2-ɍ2-,ōצ bad diskinfo2`-1צ bad seg kind non-alpha name٢ōצ too many refsצ bad formatáōצ2 -  bad seg name,š----š0ÄצAll segs linked,á/[` bad privateá ˡٮǠōɍ Nōצ bad globdefō bad publicdefe٢٢ ٢٢٢ ٢Ǡ ٢أǠٶٸf؟ˡu!!!`أáW #ڢ욥    ˡ+  "؟ˡ`%" '" ٟˡٟˡáٸ ٢ؚ٢٢٢٢٢Ǡٶ ٸ ٸ T!!צ missing proc` ٢؟ˡ 8%"4o(ǐɡ no mem room ٟˡaáUá ؟ˡ%áá ٢ؚá ٢ iF xȡ  ܶˡ seg read errڕڟˡ0 ٟˡٚښ7B#۶ˡábá& ɡڕڕˡ4šٶەەڞ 6 $) "  ,צReading ʁ& ́%Z4Ɓ ́&ʁ&ȡƁ Ɓ >ڟá0ˡ"ڟˡˡá ڟáٟá ضؚؚo8l$ˡˡ bad litype fzá́%nšE   ۢZ ́&ʁ&ȡۢ#ݢˡݢ ݢˡݢ ݢݢ ˡݢݢ # áݢˡ á  ۟ˡá2á*Ȅ  צ bad host LCʁ% ܢ  ۡ,צProc  param mismatch #áݢˡá  ۡ,צFun ٢ áWsBJ؟ˡآōצ bad proc #ڶc  param mismatchO áݢݢ unit err$3Z:$V  ˶˄disagreeing p #Iٕȍ Nōצproc place err  N ZGlobal iצPublic VConst DProc 3צFunc "bQB 8)(ǐɡ sep seg 2 big ȡˡsep seg rea@1 undefined˄$ܚsX$ f"؟ˡ&&&آߣޟd err5Ǡō bad proc dict!   #ȡ ˡˡš ޢ? ɡ>>>>> Error # 6 l~ڟá Ɓ #Ɓ Ɓ צ assem hostƁ Ɓ  #̂MʂMȡ" ˥ ˄/~ؚ7؞áeá ؞á٢ؚ٢ؚآآ< bWW/2.WV2á/Z 2 ˡCode write erráh2#?SYSTEM.WRK.CODEת׷3ˡ'Ɓ צnext <W >),áZ ááP P &XXC f$3>A COMPDUMM  ڿڞڂ,$áˡ,Í +۹Iš)P PASCALCOCOMPINITDECLARATBODYPARTWRITELINUNITPART +ë0+ë+ë2+-Í+ë-(*á) %  ǖ X"ˡ.X(.TEXT-"ˡǓ%.Z-U*U +-Í&+ë))צ*SYSTEM.LST.TEXT("ë) -ë/򥂀 z+ë1s-ë#l+ë(e+-Í-ë11-2$(0 -CU&fc^ [^^^Uˍ^U^^ؚ^E/)ǐȄ Zá .Z Z Zڕxrmhc,ˡ áá)}Í+-*68Fu!^:,+,+ڕǴצ <<<<Line W , error  :/2( (continue), (terminat+ á +'á,'ˡ++%++á #R---+-+RZ e), E(dit EÍeÍ^ÍEeÍ ^U ǐÍ ^ /<W >  '09ō.á7.ˡ. 09ȄáEáL Ɓ #Ɓ Ɓ צ assem hostƁ Ɓ  #̂MʂMȡ" ˥ ˄/Sp Z$M/áUˡ$/á0Uˡ$$)U,+Z$/%+XU/Z 2 ˡCode write erráh2#?SYSTEM.WRK.CODEת׷3ˡ'Ɓ צnext ˡX%*U.-Z%$UˡǑá $áUU:&DK 0, Ɓ Ɓ Ɓ r2Ɓ^&2  $F.  n \:*W  \ X ZdšdZڞá% š   -á  +á09Ȅɡáȡ:  0 ń  ᚹ2ީ:&á ᚹi#ááإj$áá ; 0 #ثە$ġ  ȡ5áؚ 澂0إF0á5á.ީ ޢإ j   ޚ ášؚ0ە ȡ  0ġ 0ڕ$۟ڟÍáH Hˡ Ä ޓ%  HH ȡ 徂0 á $ $$ b3߫HÄ dݟܟ˄ބ2f JK/}*á*.á ݟÄܟÄÄÄ#`!%á á ,0I; =á '((')   =>)ؿ  ٿ 4áˡǒ )=á   {  "$&(*,.2468:<@,NPRTV6šۥٞقق؍+áˡǒٕálXZ\^`nplnprtvxz|~&%1 z [ġ%ؤáQ񂥀ؤ[NQQ.J ^؟ˡN٣`;٣ á/á á ǐ" .ٟˡإá؟؟"ġ>~ڟˡ(4٣ á-٣(uצ undefined\#!   D áڣb 3g3ChG4E(DFCBښá OO&J XIō~ %M >á á á  á á !ک9áˡ <  ڟˡá 9ÄM Mé Äܓ+MáM Mé ÄmܓMá á    y2y y%á:á9% ީ4 ޢMÄ% Ä  xMˡݣ 9.*IÄN+N[ޢ ǂإ (é`á  á  ˡgá áVީ;áá I \M!M MON Iá>D.  Má ۢ @ @INPUT רۢ7ۢۢ ۢ @ ? ?OUTPUT ۢ7ۢۢ ۢ ?  KEYBOARDʀʀ ʀ ٚ b ODD CHR MEMAVAILROUND ۢ7ۢۢ ۢ  ȡN ܢ8áFALSE TRUE ܢؚܢ ښܢ 8ٚ  SIN COS LOG ATAN  LN  EXP  NIL רۢ6ۢۢ ۢ  MAXINT ۢۢۢ   ZG G רآSQRT  MARK  RELEASE IORESULTUNITBUSYPWROFTENUNZ^FƂƃƂ0ƃ\ƂXƃƁƃ* Y ma ˡ)WW آF F آآآ آE E רآآآ آ آD D רآآV VYY *+N/W צ linesYšSצ, Y< آ آCC آآآآآآآ آ آ آآ آ BB רآآ secs, YW  lines/min/DSmallest available space = T  wordsآآآآآ آ آ آآ آ VREAD READLN WRITE  ̄ʄȡN̄̄ʄȡ3N̄̄ʄȡ̄ʄȡNWRITELN EOF EOLN PRED SUCC  ORD  SQ̄ʄȡNP̄ʄȡΟˡ Ω(̄ʄȡ R  ABS  NEW  UNITREADUNITWRITCONCAT LENGTH ƂƂ0ƂXƁ<s$` 0T @NDZ 8 T z ~ x\6 Y< INSERT DELETE COPY POS MOVELEFTMOVERIGH آآ;;آآ::dL آ99آآ88آآ66EXIT IDSEARCHTREESEARTIME FILLCHAROPENNEW OPENOLآآ77,آآ955,آآ94 4آPآآآآآآ9آPD REWRITE CLOSE  SEEK !RESET "GET #PUT $ INTEGER ۢۢ  REAL ۢ;ۢ  CHAR רۢ9ۢ  SCAN %BLOCKREA&BLOCKWRI'TRUNC (PAGE )SIZEOF *STBOOLEAN ۢ8ۢ  STRING רۢ4ۢ  TEXT ۢ7ۢ  INTERACTרۢ5R +GOTOXY +̀ʀȡ{(ٳ %`ٳڡ  ̀ʀʀʀڡ ʀ R ȡ  PASCAL Compiler [II.0.A.1]< 0>~؟آآآ(T  / ł ڢ ڢ  ˡ   ٶ˄/ڣ %ڣ áڢ ڣ ڣ Ȅ ڢ ڢ %>PNmmDz I~؟آآآ N>>آآPROGRAM آآآ ٢٢٢ á   ٢٢٢٢ 3 3 á!   áآ آ آ آ آآآ!á^ áN>ˡ >>   á (má  á   áU  ˡ8ȡ,; m   ء n      L M Mآ آآ>آآIآ\آ آLj z Z }*I /  ł á       ˡ o   R ȡ  PASCAL Compiler [II.0.A.1]< 0>~؟آآآ(T  ٢٢ ٢٢    ˫  á  á  á (  š u u uá ~ˡ  á2 ߚ  öń ˡ%      ł  á%    ˫ ITWAITUNITCLEAHALT SSȡܳ 0ܹ8 TTT9 TT   " " ˡߢ á  á  ád;T; TTTTTTۚTbZ8 TTT@;:5-& ǔ  á   ߢ ˡk ߩ4Äg  á4{ VP84$3ݡ  TTT T ݡTT؟ˡآTښTؚ ō P Pˡ ߩ4  á  váqáW ߩ:  á$Rd(&š##=AHZX)UWVȡ1Nڢڢ ڢڢ   á  á ǿ ߟˡkߢ  ǔ ޚ<Ϧ*SYSTEM.PASCALת(Ϧ*SYSTEM.LIBRARYת( -&Q[\RǂNJ+* P'!/ á   ߢ ˡk ߟˡ/á&ˡ ;áǏ š f ߚ "0, 21(.3%$ȡؤKW'  By8uyq) ٟ$; ڟ˶zbک;˄2 ġ%ɡ܂5|u]tmiexaM }*I / ɡ۸ ik3T@š  ڢ  ڢ ڢ ڢ  آ=آ =$ ˡ ˩   l   q q qu ́ [́Ɓ ʁoƁ ʁ́ʁƁʁ<ʁʁ' ʁ ʁ ʁ ʁ<[áʁ 'Uá+á$ ] ] ,á á    ߚ ' ʁ ʁ['ؓ ˫ ˡ  ؍ؓá  ʁʁƁ$ <0ce2 ޟˡ1ȡ$ީ;á m á Ǖ ޚq ˫  á   á  #áS~؟ٓˡ Ǧ ٓ۩ۢۢڢؚ       ˡ ál "ȡˡ9   ˫  á   ˡ  á ۥۢۢۢ )é Ä   ȡ ǎ   ߟá-á  ɡ ~  ł   آٚآ á%   é   ˡ ~ߚ á  *á  á   ߟˡ%Íߩ;Í s  ߩ;ár   á ݥݢݢ )é Ä   ڢۚ=ٟˡ)گ ٩=ˡآ=ߚߟˡ% š ǩ \.áW ǿ    á  á%   é  =ˡu ={ áM   ݥݢٚߚߟˡ ,(  ٟá138:+ Aٟ٥ ݢݢ I ݢ ݢ   ] ] ˫  á  -N٣ ë''٣ [N٣ /80"ˡ ǻ 0ˡ ǻ ]ٟˡ<ݢۚݢ ܂ á۟ˡáݢ~~ؚá%      Í kk    áá> 9"ڤ "ڤ ~/rڤbڤë'']PP ߚ       ˫  á   PPš Nۢۢ"ڤ ۢ ۢbڤۢ[Ǿ á $,Z+U)Uˡ ál ˡáá&     ޟˡ   68 Iˡǽ   ؓ*$<ؓ˄ $+<́ʁˡʁ ʁ́Ǽ á؟*/1-" h   آآ ái3 3 á)  إآ ء"ƁTURTLE ר́́Ɓ\Ɓ [( צ words]<W >  ! @á  ˡ = ߚá I   O MM M I \ء[&#!!  . ˫   áJ á<    ˡááy  ȡ 䏂   /@#.IéP Ä $ 1á  á' Ǻ ~   á  áá ( (  ߟˡ ˡ á( @ !  á IáNC $ !á ǹ ˡQ$  á+    آˡZޚˡ@á -á&ȡ  D+%ݍm   aTOA v$~  Zn RJ  ޚٟl ء@. Ǐ QP[ [  Ǐ  O MM M I \ء[&#!!  á X&á$ R~ ܟˡ?ܣáܣÄܣ Äܣáܣ Äܣ ÄޓǠ  /@#.IéP Ä $ 1á  á' Ǻ ~   á  áޓá     I [ $ [ $'ǀš'(&ˡǒ &&'('ک} ۢ ۢٚ۩Q؂''h&ˡ ǀ DءPš PPN[Ǖá [[á l۟ˡJá5áSړ Ǧ  ȡۢ ڡ " ^Ȅ "3ǔ ؀ ؀ ɡ  š á  š ܣ ˡܣ [ؓǏ   CI \ ܣ \IɡII :ȡ ǀ  (ǀ 3ámá šˡ ۚš$  ɡ. ~ޡ áޓܢۚo ޓܢۚáP á4ޡz  ġ  á ٳ0d@ h ٳ ǀ  FJ)ÍȄ )ܢݚݟˡ x ܢ   ޓ{ á  ܢ5é$'IˡǷ  $Ǹ ءá ؂ ؂ #Ȅ ؂ خ @MÍǀ   Gڳáق  [( צ words]<W >\*5á+ šخáخǀ  خj[ؤ[[[[Ǖš +2 ؤá "O é  ]=ˡu =OS ^   áw   @    $ܢ"é Bޡǡ ܢ"á á    @   ˡ ˡq ݟˡ < , 1 ˡ䀮šNj ˡ>'   ˡ ˡ} á/M2خ٣ɡ ٣ šث ٫+áMM: á 1 @$ńˡá  áˡˡ nj  áˡu á á :} á     t ^"ˡ ˡ} ás áؤ Oؤ8`ǀ Ȅ ?á(ۢ䚩á 䥁ǘ ^ " ǐ  !   ˡń  WˡO $ۢ9á ۢښ   8ˡLJ !خ  ٢`m Í; ááǏ ˡńǍ  i i 1-.+ۢۢ`mɡ'ġ 9!٫ خ 4Pˡáb'ڢȡ;Gv dá}   Eܮ29Ä Há=ءǚ á/9á'Rá$خڢ+;˄6á;á33S,á)6IݢݢR 4  ˡ} 4  x"ˡ' áˡ á)##:<> 4!O˄˄0  ˡS>á+t á " ٟáǞ eˡǢ WˡQ ة;Íǟ < -؟ˡ á  8I6ˡǐ #;=? E.dˡfN &ǐ E&á%2t ޮ < á  á á Iˡ"g . VCtˡuN &ǐ E&á%2I   á áá`  !á > ؟ˡ4أ á'أ أ  أ ˡ"g . VCˡˡء!%" أ } } nˡ} á  á  " ˡ} áR   ˡ Ä á)  6I ' á" ˡ} á   ˡ}  á ~á Iá)6    < ˡǖ g    8خ2خ"ɡٮM2خ˫  ɡ  šث  4 ٚ  :ˡńi; i iáݟˡˡ NJ  t á +ˡ/îá2خá   ˡ ˡ} á !   ˄ٮ%"ág ˡ[ M K; <:  )9 M     ˡ ˡ} Má   Má  M} -˫  áٮ%M- &?ö;}R ˡ(á!9á  á  á   ˡ ˡ} á  " á ˄ۮ%&؟ˡ#š á$ á% &ˡ ˡ   ˡ ˡ}  "ˡ ˡ} ˡ!áM )  ÍMá ١M ة;á5١á" " ˡ ˡ} rة:  ١]ة9á ١MJ-á ;ˡ;áá} U'NweD+$&*,._ 6 ١M5 )ˡ ݕ١ܮܮM} -˫  áۮ%M-Y4>@DFHJLޡá  (s ;;Í؍á ;á ٩;0)Í!áeNORMAL ILOCK ׯ 2PURGE CRUNCH ׯ    M- 'ޣ á ޣ ˡǐ áٟá~  "ٟ˄٣ڟˍ٣áȡw9Ä á \ "ˡˡ}  áǏ Xá   ˡ} } FM?M8ˡ 9ˡǏáá :;é1 %ک;  ; 4D Ä ,'S  M (_83 6-!ˡ ˡ} á  )á á á}  }ˡ ݕˡǎ ګ1á&ág ڟˡ ˡǎ ǚ  ǎ ٟˡˡá    ˡ 9ˡ} á  "á    "ˡٟˡ~ ޣ áޣá V"7ޣ ޣ ÄOޣ ޣ á Mޣ ޣ Ǖ ޣMޣ ޣ Fޣ ˡ}  ˡǏ á  á  " ˡ} á   ˡ} ˡ Mޣ ޣ 4ޣ áBޣ %ޣ IáNޣ ޣ áOޣ .ޣ  ޣ á(ޣ ޣ ˄ޣ (HSx%áM-#á}  ˡ.$ع0sokgc_(أ áأ á t ݳ͐o" ݳ}ݹ&'ޡ2 ˡˡ [!W"S#O$KG +@7575 799;9E"$&EC,GIGEG8SIGi٣á٣ á%٣ } 9ÄǏ @%áM M 8ˡáás ˡ ġ} ˡá 2I٣ ٣ ٣ á)٣  6I٣ ٣ J%@ö=} ˡ(á!9á " á ;á} ˡá;á}  >á  á"  ˫  á  ߡ,RRR RRRj0b ˡ ō  á 9 ˡ ȡ ٟ˄á;  ;: á "$&(*,.02468:<>@BDFtdPRTVXZ\^`M e -&:ˡ ǁ :ޡK9Ä47ˡ.  9˄Sˡǁ ٫٫ e1 $d--'á  - ܟ˄)*Ä?ܩ;;Äh ]WGޡ*٣(('( ǒ  MoQM`A#ǁ 3 /Ä   dž )ܩ;;Ä dž v*ÄÄ  dž   02 #áP~ڤˡ~ڤ؟ٓá 9 ٓǧ   7R FÄ dž -ܩ88Ä dž  'rD0 $R, (é`  n1/a˫   á  8: B2á8á ܓ ٮ á,. á";áá dž (á  , ܟ˄) 4  /ܡ ۡګ  á-ܓ  9خ ٮ /ܡ ۓګ خܓٮ 3 *Ä?ܩ;;Ä/Ä  dž )*Ä?ܩ;;Ä/Ä 9߮ ٟˡ٩;Í ǐ  á    ٟˡ^ Oܟˡ ȡáǜ    dž (ܩ88Ä  dž  |& +ˡ ە ܚޚ۟áښǓ ˫  á  /aڟˡ9 ˫   Í߮ :á ة:6*e: e e^  ܣáܮ&ܣáˡǁ ؚ,.+)á 9Íˡ ȡ  S + 9  ܮˡá ; á9 4 ˡ ȡ ܟ˄á+á   ǁ  ǂ ˡ )* .   :     á   -8Ä퓫 ˡ8ˡ LJ  S. f  ܩ;á ܩ8á  ǃ   DŽ  u   á  ˡˡ Lj   Ȅ   %  ˡ  ǃ 5ǃ  "Dž  o1 á @ áG    lj ޡȄ   ޡ 䔜ߡlj*564/1(0!7/ 1, )ǁ 8 jF@خá # خ á 6 /9ٮ خB6áX}  á   Ǜ ؟ˡũ;  ǏUW/a˫   á  ~ڟˡ 2 M %Iá<ڟˡڣ    A áW ˡ>ˡǐ 0 ! ؟ˡé1 Ǒ 3 ġ ڣ áV' áA-á۶~ܟˡ `mˡǨ ੁ  ǀ @ˡnˡǐ ` Q ؟ˡé1 8߮ 6  šߤ ޶á     ؕ  \ I ..N QQšá40Ǒ 7 @ ! á 6 / á9߮  \QG ART!99  F8``  L r4p` !2""#$$%L&&N'] 7á}   EBخˡxál ɡ_ ~á~ۢۢۢ B((( f,,F--J///0./0~00b1p222B3r 9 á  ~ڟˡ 2 M %Iá<ڟˡڣ +8~ۢۢ š nj ˫  á 6 /ڕ ٕ  8J&š(ˡ2'é&Ä&ȡW&ɡǀ' ȡ%٩(J#á[~ݤˡ~ݤޟˡ# áǥ ǧ  á  0 UW, á( ܩ&ɡ ګ ȡ  l ڣ a `}p  ܣá ܮ0v 2o 1h 3a 4Z 6S 5L 7E 8>é ڣ  ,ڣ ڣá ڣ ڣ á[ڣ áOڣá$ڣ"  6h  "$&fZUIRFAm!dš  &  JJ7 Ql   " "ڣ"  " ١qˡAۣá "ۣáȡ /#!  /# @# ( Tɡ Tˡ;צ [  `  ڣ 0  ]Z@B.١NáöÍ words]<W >ˡڟˡ ˡtáašQ2 6ٮ / ١ بȡ      áأ ` أ  أ   ݟˡ` ݚܟá ,   9 š   ݟá á  >=jF*ˡ (ޕ( áWV~ܟˡ ܢ  .Iá(<ڟˡG#4 خ/a˫   á خ 5 EG V5 ٮ@  ġ ڣ M~ڟˡN 2 2 ,á5á9áMIé$ M M I ɡ- ~ݟˡ   á   0'&6á" DURE FWRITEREAL(VAR F: FIB; X: REAL; W, D: INTEGER); "PROCEDURE FREADDEC(VAR F: FIB; VAR D: STUNT; L: INTEGER); "PROCEDURE FWR          ȡ   á     2ˡ "" N NN 3á   _4ˡ a $ y{ġ  ˡˡ$&LGv .Ǐ  & ۂۂۀ Nˡۂ.ɡ3 ꕞNء~Nڟˡȡ𥀲ܤˡܹ FSEEK ר~ FREADREAרj FWRITEREרV FREADDECרB ˡ.Nצ Your file is   bytes long.UáV?&צSYSTEM.WRK.TEXTFWRITEDEר$ ' DECOPS  tbP>%ȡ  "!    ܤN*SYSTEM.WRK.CODENתeצ4Do you want to E(xit from or R(eturn to the editor?   ܤ   ܤȡ      +ء*4<NG&F EګצWriting out the file*ZlDTXZ\l\B.5$<$ y{ġ  ˡˡ$&LGv .Ǐ  & , PASCALIODECOPS *SYSTEM.INFO[*]"ˡǒ . Ƕ . Ǐ QI \ [ MPPPPš [   ˡ TAݟޓݥ e ޓ* A ݫAN؞ (M M I ɡ- ~ݟˡ   á   0'&6á" ?COPYRIGHT (C) 1979, THE REGENTS OF THE UNIVERSITY OF CALIFORNIA2ˡ "" N NN 3á   _4ˡ a  $ "TYPE DECMAX = INTEGER[36]; STUNT = RECORD CASE INTEGER OF 12:(W2:INTEGER[4]); 13:(W3:INTEGER[8]); 14:(W4:INTEGER \ &š(&ˡǒ *Nݢݢ" á   ˡ[12]); 15:(W5:INTEGER[16]); 16:(W6:INTEGER[20]); 17:(W7:INTEGER[24]); 18:(W8:INTEGER[28]); 19:(W9:INTEGER[32]); 110:(W10:Iá  M I\[ M M! Ddnt ݫAN؞ (NTEGER[36]) /END; ' " "PROCEDURE FSEEK(VAR F: FIB; RECNUM: INTEGER); PROCEDURE FREADREAL(VAR F: FIB; VAR X: REAL); "PROCE% ؼɡ ؼ߀$ ؼߞ$"Hɍ -   $,/36:GJNQUbeilp}  }rg\QF;0%á  $ ݞ$' ݑ$ $݂ō $݂ġ ݂$+-Í-۲z0ݡߑ ع   $ $ȡ%  0 ފ$čQ   .ˡ5  Eɡ 2w&7$" G8  x*b`$7w& 8  & 2  D!@  -ݑ š 0 0 ߿`ġ(   ݂. ݕ ؂݂3  ݕ 0 . ݑ0 ݕ  Aa@  U  D D   D          f   ITEDEC(VAR F: FIB; D: DECMAX; RLENG: INTEGER); "  IMPLEMENTATION $ "PROCEDURE FSEEK(*VAR F: FIB; RECNUM: INTEGER*); $LABEL ݂ ؂ ɡ   x,  & * عuu1; $VAR BYTE,BLOCK,N: INTEGER; "BEGIN SYSCOM^.IORSLT := INOERROR; $IF F.FISOPEN THEN &WITH F,FHEADER DO (BEGIN *IF (RECNUh[NA4 '  }rg\QF;0%á M < 0) OR NOT FSOFTBUF OR 2((DFKIND = TEXTFILE) AND (FRECSIZE = 1)) THEN $ "TYPE DECMAX = INTEGER[36]; +-Í-۲z0ݡߑ ع  STUNT = RECORD CASE INTEGER OF 12:(W2:INTEGER[4]); 13:(W3:INTEGER[8]); 14:(W4:INTEGER[12]); 15:(W5:INTEGER[16]); 16:(W6:INT    k ݢݣޢÄ@@@   P  5  O ~eL3Ná ޣ Ąޣ ݣ ˡRݣ &ݢ ݢݢ!ݣ "ˡݣ ˄ݢ!ۂ <<Df\A4 '  }rg\QF;0%á "ˡ\ݣ ݣ šݢ ݣ ݢݣݣ ݣ ݣݣńݢݣݢݢݢˡݢݢ ۚݢܚ   p +-Í-۲z0ݡߑ ع  á +-Í-ڲzؼ 0.áAPASCALIOFSEEK FSEEK FREADREA FREADREA FREADDEC FREADDEC FWRITERE ڲzؼ 0ڲzQeEÍݍ.á '߂ۓۡܡ FWRITERE FWRITEDE  FWRITEDE  DECOPS @  $-1:>GK& -w` F   &  & w %% | x |rntjfhX \L -LL   *      l  b  w!     a  E _ vJ  b h^  XVD$`h d  20$`   O^ 747( a "  ` $$ _ * ˕͕07 7  %% ͕- ͕0  F\  F  ##- (    "& f X7 vwpn  @\Z \ V ͕0F ͕0 0 _  ``f  w\  __ _B B`A b e  QB  b   6  _ ;NJ#&;KLZzĊ @" R _j7 ev a " j b \ H HH  ` H HhHh    e^TPJ$BLOCK <= FMAXBLK) AND (BYTE <> FBLKSIZE) THEN 0BEGIN 2UNITREAD(FUNIT,FBUFFER,FBLKS_DB F  F   _% _ "77 * &IZE,DFIRSTBLK+BLOCK-1); 2IF IORESULT <> ORD(INOERROR) THEN GOTO 1 0END ,END; *IF FNXTBLK > FMAXBLK THEN ,BEGIN FMAXBLK := F     w aB  ~ B   `w`7& 7 7 7 7aNXTBLK; FMAXBYTE := FNXTBYTE END *ELSE ,IF (FNXTBLK = FMAXBLK) AND (FNXTBYTE > FMAXBYTE) THEN .FMAXBYTE := FNXTBYTE; *FEOF : E  Da7 D7zE mna R Ha H R e<! F  (&  = FALSE; FEOLN := FALSE; FREPTCNT := 0; *IF FSTATE <> FJANDW THEN FSTATE := FNEEDCHAR; *FNXTBLK := BLOCK; FNXTBYTE := BYTE  _d 7dwH J7 D aw> w* (7 "D 7Da7  DECOPS DECOPS GDEC GDEC ' d procedure 120:Function result type must be scalar, subrange or pointer  121:File value parameter not allowed  122:A forward 1:Error in simple type  2:Identifier expected  3:'PROGRAM' expected  4:')' expected  5:':' expected  6:Illegal symbol (termdeclared function's result type can't be re-specified  123:Missing result type in function declaration  124:F-format for realsinator expected)  7:Error in parameter list  8:'OF' expected  9:'(' expected  10:Error in type  11:'[' expected  12:']' ex only  125:Error in type of standard procedure parameter  126:Number of parameters does not agree with declaration  127:Illegpected  13:'END' expected  14:semicolon expected  15:Integer expected  16:'=' expected  17:'BEGIN' expected  18:Error in dal parameter substitution  128:Result type does not agree with declaration  129:Type conflict of operands eclaration part  19:error in  20:'.' expected  21:'*' expected  22:'INTERFACE' expected  23:'IMPLEMENTATION' e 130:Expression is not of set type  131:Tests on equality allowed only  132:Strict inclusion not allowed  133:File comparisoxpected  24:'UNIT' expected  50:Error in constant  51:':=' expected  52:'THEN' expected  53:'UNTIL' expected  54:'DO' expen not allowed  134:Illegal type of operand(s)  135:Type of operand must be boolean  136:Set element type must be scalar or sucted  55:'TO' or 'DOWNTO' expected in for statement  56:'IF' expected  57:'FILE' expected  58:Error in (bad expressbrange  137:Set element types must be compatible  138:Type of variable is not array  139:Index type is not compatible with thion)  59:Error in variable  101:Identifier declared twice 102:Low bound exceeds high bound 103:Identifier is not of the apprope declaration  140:Type of variable is not record 141:Type of variable must be file or pointer 142:Illegal parameter solution riate class  104:Undeclared identifier  105:sign not allowed  106:Number expected  107:Incompatible subrange types  143:Illegal type of loop control variable  144:Illegal type of expression  145:Type conflict  146:Assignment of files not al 108:File not allowed here  109:Type must not be real  110: type must be scalar or subrange  111:Incompatible withlowed  147:Label type incompatible with selecting expression  148:Subrange bounds must be scalar  149:Index type must be inte part 112:Index type must not be real  113:Index type must be a scalar or a subrange  114:Base type must not be real  115:Base type must be a scalar or a subrange  116:Error in type of standard procedure parameter  117:Unsatisified forward reference  118:Forward reference type identifier in variable declaration  119:Re-specified params not OK for a forward declare( ger  150:Assignment to standard function is not allowed  151:Assignment to formal function is not allowed 152:No such field ind source line  203:Integer constant exceeds range  204:8 or 9 in octal number  250:Too many scopes of nested identifiers  25 this record  153:Type error in read  154:Actual parameter must be a variable 1:Too many nested procedures or functions  252:Too many forward references of procedure entries  253:Procedure too long  254: 155:Control variable cannot be formal or non-local  156:Multidefined case label  157:Too many cases in case statement  158:Too many long constants in this procedure  256:Too many external references  257:Too many externals  258:Too many local filesNo such variant in this record  159:Real or string tagfields not allowed  160:Previous declaration was not forward  161:Again  259:Expression too complicated  300:Division by zero  301:No case provided for this value  302:Index expression out of bou forward declared  162:Parameter size must be constant  163:Missing variant in declaration  164:Substition of standard proc/fnds  303:Value to be assinged is out of bounds  304:Element expression out of range  398:Implementation restriction unc not allowed  165:Multidefined label 166:Multideclared label  167:Undeclared label  168:Undefined label  169:Error in bas 399:Implementation restriction  400:Illegal character in text  401:Unexpected end of input  402:Error in writing code file,e set  170:Value parameter expected  171:Standard file was re-declared  172:Undeclared external file  173:Fortran procedure  not enough room  403:Error in reading include file  404:Error in writing list file, not enough room 405:Call not allowed in sor function expected!  174:Pascal function or procedure expected  182:Nested units not allowed  183:External declaration not eparate procedure  406:Include file not legal  allowed at this nesting level  184:External declatation not allowed in INTERFACE section  185:Segment declaration not allowed in UNIT  186:Labels not allowed in interface section  187:Attempt to open library unsuccessful  188:Unit not declared in previous USES  189:'USES' not allowed at this nesting level  190:Unit not in library  191:File not allowed to be private  192:'USES' must be in interface section  193:Not enough room for this operation  194:Comment must appear at top of program  195:Unit not importable  201:Error in real number - digit expected  202:String constant must not excee)  DO Щ x  ELSE Щ x  END Щ x  FOR Щ x  FUNCTION Щ x ک    x  x  šx O bک  ȡ  IF Щ x IN Щ x MOD Щ x NIL Щ x NOT Щ x   (> ة    z á<   OF Щ x OR Щ x PROCEDURE Щ x PROGRAM Щ x RECORD Щ x'  ) ' Я l   Źýý  P  ? REPEAT Щ x SET Щ x THEN Щ x TO Щ x TYPE Щ xýýýŻ UNTIL Щ x VAR Щ x WHILE Щ x WITH Щ xp O INPUT FILE NAME - Pš C"ٓ3*** INPUT OPEN ERROR # ١ XREF.LISTING XREF šWAS  GENERATED AS ALISTING FILE BY THE !U.C.S.D . PASCAL COMPILER? (Y/N)? YëLISTING OF INPUT FILE (Y/N)?NZ   0 7á,^.t CBEGIN Щ x CASE Щ x CONST Щ x DIV Щ x DOWNTO Щ x 8'ɡ- **** TOO MANY LINESC' á   * }˧C * &ƘƙBƙCƚoՂC 쥚p #{!#%'579;=?ACEG02468:<cegikmoqsuwy{}rtvx|   IDENTIFIERS (*$D-,R-,I-*)   PROGRAM PRINT ;  "(* THIS PROGRAM IS A SIMPLE PRINTING PROGRAM THAT &PRINTS FILES ON THE PRINTER AND D  OCCURRENCESCƘƙCt||`5.z*xN|OES SIMPLE &PRINTER CONTROL FOR THE USER. & &THE COMMANDS TO THE PROGRAM ARE ON SEPERATE LINES &AND MUST BEGIN WITH '#'.  &C * &ƘƙBƙCƚoՂC 쥚p  IF A LINE STARTS WITH &A '#' AND IS NOT A PRINTER CONTROL LINE THE PROGRAM &WILL PRINT IT DIRECTLY & &THE COMMANDS SO FAR: #{!#%'579;=?ACEG02468:<cegikmoqsuwy{}& *#PG - SKIP TO THE TOP OF THE NEXT PAGE *#SK - SKIP NUM LINES *#PN - PRINT PAGE NUMBERS AT TOP OF PAGE *#NN -'   Hނġá) **rtvx|   IDENTIFIERS** TABLE FULL᧘d     ڶ á á  > بO^   á     á=f ˡaˡ5  ˡF     Щ ɡ*azȄ aA  쥚 J f쥚  'çC  *á2)˧C *˧C 3" F*á2/˧C *˧C 3" F+ ,ASSUMES PRINTER SITTING ON LINE 1 OF PAGE WHEN PROGRAM IS RUN , *COMMUNICATION WITH USER ,THE PROGRAM ASKS THE USER FOR THEER ( VAR STR : RSTRING ) : INTEGER; %VAR VALUE : INTEGER; %BEGIN 'VALUE := 0; 'STR := CONCAT(STR,' 0 '); 'WHILE STR[1] = '  FILES TO PRINT. ,THE PROMPT IS 'COM?'. THERE ARE TWO LEGAL THINGS ,TO ANSWER WITH. THE FIRST IS A COMPLETE FILE NAME, ,THE ' DO DELETE(STR,1,1); 'WHILE STR[1] IN [ '0','1','2','3','4','5','6','7','8','9'] DO )BEGIN +VALUE := VALUE*10 + ORD(STR[1])-OTHER IS A COMMAND STARTING WITH '#'. BEWARE! ,IF THE COMMAND STARTING WITH A '#' IS NOT A LEGAL ,COMMAND THE THE PROGRAM IT ORD('0'); +DELETE(STR,1,1) )END; % NUMBER := VALUE; %END; % % #PROCEDURE SKIPLINES; %VAR NUM : INTEGER; %BEGIN WILL BE PRINTED ON THE ,PRINTER. THIS WAS DONE SO THAT AT THE BEGINNING ,OF THE RUN THE USER CAN SPECIFY THE ACTUAL PAPER ,S'IF LINENUM < PAGETOP THEN ATTOPPAGE; 'DELETE(LINE,1,3); 'NUM := NUMBER(LINE); 'WHILE (LINENUM <= PAGEBOTTOM) AND (NUM > 0) IZE HE IS USING ( IF IT IS DIFFERENT FROM THE ,DEFAULT ) OR ANY OTHER THING THAT HE MIGHT WANT TO ,DO. THE COMMAND TO CHANGE DO )BEGIN +WRITELN(PRINTER); +LINENUM := LINENUM+1; +NUM := NUM-1 )END; %END; % % #PROCEDURE CONTROL; %VAR ITEM :RSTRITHE PAGE NUMBER WAS ,PUT IN SO THAT THE USER COULD PRINT MORE THAN ONE ,FILE IN A RUN AND HAVE BOTH SETS OF OUTPUT START ,AT NG; %BEGIN 'ITEM := COPY(LINE,2,2); 'IF ITEM = 'PG' THEN ENDPAGE 'ELSE IF ITEM = 'SK' THEN SKIPLINES 'ELSE IF ITEM = 'PN' TPAGE 1. , , * * * *) # #TYPE RSTRING = STRING[120]; # # #VAR LINE : RHEN PRTPGNUM := TRUE 'ELSE IF ITEM = 'NN' THEN PRTPGNUM := FALSE 'ELSE IF ITEM = 'PT' THEN -BEGIN /DELETE(LINE,1,3); /PAGETSTRING ; 'INFILE, PRINTER : TEXT; 'LINENUM, PAGENUM, PAGEBOTTOM, PAGETOP, PAGESIZE, SPACING : INTEGER; OP := NUMBER(LINE) -END 'ELSE IF ITEM = 'PB' THEN -BEGIN /DELETE(LINE,1,3); /PAGEBOTTOM := NUMBER(LINE); -END 'ELSE IF I'TEST, PRTPGNUM : BOOLEAN; ' ' #PROCEDURE ATTOPPAGE; %VAR I : INTEGER; %BEGIN 'IF PRTPGNUM THEN WRITE(PRINTER,'':60,'PAGTEM = 'PS' THEN -BEGIN /DELETE(LINE,1,3); /PAGESIZE := NUMBER(LINE) -END 'ELSE IF ITEM = 'SN' THEN -BEGIN /DELETE(LINE,1, DON'T PRINT PAGE NUMBERS *#PT - PAGETOP - WHERE ON THE PAGE FOR FIRST LINE OF TEXT *#PB - PAGEBOTTOM - LAST E ',PAGENUM:5); 'FOR I := LINENUM TO PAGETOP-1 DO WRITELN(PRINTER); 'LINENUM := PAGETOP; %END; # # #PROCEDURE ENDPAGE; %VLINE ON PAGE FOR TEXT *#PS - TOTAL NUMBER OF LINES ON A PAGE *#SN - SET PAGE NUMBER TO *#LS - LAR I : INTEGER; %BEGIN 'FOR I := LINENUM TO PAGESIZE DO WRITELN(PRINTER); 'LINENUM := 1; 'PAGENUM := PAGENUM+1; %END; % %INE SPACING, 1=> SINGLE SPACING, 2=> DOUBLE SPACING F3=> TRIPLE SPACING ETC. * * *DEFAULTS , ,PAGESIZE = 66 ,PAGETOP = 6 #PROCEDURE LIST; %VAR I : INTEGER; %BEGIN 'IF LINENUM > PAGEBOTTOM THEN ENDPAGE; 'IF LINENUM < PAGETOP THEN ATTOPPAGE; ' ,PAGEBOTTON = 60 ,DON'T PRINT PAGE NUMBER ,LINE SPACING = 1 ,PAGE NUMBER STARTS AT 1 WRITELN(PRINTER,LINE); 'FOR I := 1 TO SPACING DO WRITELN(PRINTER); 'LINENUM := LINENUM +1+SPACING %END; % % #FUNCTION NUMB, 'ELSE LIST; %END; % # # # #BEGIN %PAGENUM := 1; %LINENUM := 1; %PAGEBOTTOM := 60; %PAGETOP := 6; %PAGESIZE := 66; %PRTPGNUM := FALSE; %TEST := FALSE; %SPACING := 0; %REWRITE(PRINTER,'PRINTER:'); % %REPEAT 'WRITE(OUTPUT,'COM? '); 'READLN(INPUT,LINE); 'IF LINE[1] = '#' THEN CONTROL 'ELSE (IF LINE <> 'END.' THEN *BEGIN ,LINE := CONCAT(LINE,'.TEXT'); ,RESET(INFILE,LINE); ,IF IORESULT <> 0 THEN WRITELN(OUTPUT,'NO SUCH FILE',CHR(8)) ,ELSE .BEGIN 0WHILE NOT EOF(INFILE) DO 2BEGIN 4READLN(INFILE,LINE); 4IF LENGTH(LINE) <> 0 THEN 6IF LINE[1] = '#' THEN CONTROL ELSE LIST 4ELSE LIST; 2END; 0CLOSE(INFILE); (*$G+,R-,I-*) PROGRAM TERMINAL;   LABEL 1;  CONST QUEUESIZE = 24576; HALFDUPLEX = FALSE; CTRLD = 4; &RUBOUT = , END; ,TEST := FALSE *END )ELSE TEST := TRUE; $ UNTIL TEST;  ENDPAGE; #END.  127; NUL = 0; ESC = 27; DLE = 16; DC2 = 18; CR = 13; LF = 10; BS = 8; &US = 31;   TYPE HANDLER = RECORD 1QBASE: INTEGER; (*ADDRESS OF QUEUE ARRAY*) 1QHEAD: INTEGER; (*BYTE INDEX-HANDLER INSERTS*) 1QTAIL: INTEGER; (*BYTE INDEX-PROGRAM REMOVES*) 1QSIZE: INTEGER; (* # OF BYTES IN CIRC QUEUE*) 1CODE: ARRAY [0..20] OF INTEGER /END; / %KWTRICK = ARRAY [0..7] OF INTEGER; QUEUE = PACKED ARRAY [0..QUEUESIZE] OF CHAR; % %DL11 = RECORD .RCSR: INTEGER; .RBUF: INTEGER; .XCSR: INTEGER; .XBUF: INTEGER ,END; , , VAR Q : ^QUEUE; $H : ^HANDLER; $CDL, (*CONSOLE DL-11*) $HDL: ^ DL11; (*HOST DL-11*) $ALPHALOCK,DONEBIT,PARITYMASK: BOOLEAN; PAGEINX,CH,QSIZE,INTENABLE,TIMER: INTEGER; TRIX: RECORD CASE INTEGER OF ,0: (P: ^DL11); ,1: (M: ^INTEGER); ,2: (I: INTEGER) 3); /PAGENUM := NUMBER(LINE) -END 'ELSE IF ITEM = 'LS' THEN -BEGIN /DELETE(LINE,1,3); /SPACING := NUMBER(LINE) - 1 -END - D(H)+8; "TRIX.I := OCTAL(0,0,0,1,2,2); "TRIX.M^ := OCTAL(0,0,0,2,0,0);  (*SET UP CONSOLE DL-11 STATUS*) "TRIX.I := OCTAL(1,7"BEGIN $FOR I := 1 TO LENGTH(S) DO &WRITECH(S[I]) "END (*WRITES*) ; " "PROCEDURE READCH(VAR CH: CHAR); "BEGIN $REPEAT $,7,5,6,0); CDL := TRIX.P; CDL^.RCSR := 0; "CDL^.XCSR := 0; (*MAKE BPT VECTOR POINT AT CLOCK HANDLER*) "TRIX.I := OCTAL(0,0UNTIL ORD(ODD(CDL^.RCSR) AND DONEBIT) <> 0; $CH := CHR(ORD(ODD(CDL^.RBUF) AND PARITYMASK)); " IF ALPHALOCK THEN &IF (CH >= '*END; $KW: ^KWTRICK; PAGE: PACKED ARRAY [0..1023] OF CHAR;  FUNCTION OCTAL(P1,P2,P3,P4,P5,P6: INTEGER): INTEGER;  BEGIN,0,1,0,0);  I := TRIX.M^; "TRIX.I := OCTAL(0,0,0,0,1,4); "TRIX.M^ := I; "TRIX.I := OCTAL(0,0,0,0,1,6); "TRIX.M^ := 0; (*S "IF P1 <> 0 THEN P1 := 16384+16384; (*32768*) "OCTAL := (((P2*8+P3)*8+P4)*8+P5)*8+P6+P1  END (*OCTAL*) ;  PROCEDURE INITIAET UP NEW CLOCK HANDLER...PREVENTS REENTRY*) "NEW(KW); "KW^[0] := OCTAL(0,0,5,1,6,7); "KW^[1] := OCTAL(0,0,0,0,1,2); "KW^[2]LIZE; VAR I: INTEGER; BEGIN  (*INITIALIZE MISC THINGS*) "ALPHALOCK := FALSE; QSIZE := QUEUESIZE; DONEBIT := ODD(OCTAL(0, := OCTAL(0,0,1,4,0,1); "KW^[3] := OCTAL(0,0,0,0,0,3); "KW^[4] := OCTAL(0,0,5,1,6,7); "KW^[5] := OCTAL(0,0,0,0,0,2); 0,0,2,0,0)); "PARITYMASK := ODD(OCTAL(0,0,0,1,7,7)); "INTENABLE := OCTAL(0,0,0,1,0,0); "NEW(H); "NEW(Q);  (*INITIALIZE RECE"KW^[6] := OCTAL(0,0,0,0,0,6); "KW^[7] := 0; "TRIX.I := OCTAL(0,0,0,1,0,0); "TRIX.M^ := ORD(KW);  (*MAKE FLOPPY INTERRUPTABIVE HANDLER STUFF*) "H^.QBASE := ORD(Q); "H^.QHEAD := 0; "H^.QTAIL := 0; "H^.QSIZE := QSIZE; "H^.CODE[ 0] := OCTAL(0,1,0,0,LE*) "TRIX.I := OCTAL(0,0,0,2,5,2); "TRIX.M^ := 0;  (*SET UP B6700 DL-11 STATUS*) "TRIX.I := OCTAL(1,7,7,5,2,0); "HDL := TR4,6); "H^.CODE[ 1] := OCTAL(0,1,6,7,0,0); "H^.CODE[ 2] := OCTAL(1,7,7,7,6,4); "H^.CODE[ 3] := OCTAL(0,6,6,7,0,0); "H^.CODE[ IX.P; "HDL^.RCSR := INTENABLE; "HDL^.XCSR := 0; "CDL^.XBUF := US; HDL^.XBUF := CR  END (*INITIALIZE*) ; PROCEDURE TERMINA4] := OCTAL(1,7,7,7,5,6); H^.CODE[ 5] := OCTAL(1,1,3,7,1,0); "H^.CODE[ 6] := OCTAL(1,7,7,5,2,2); "H^.CODE[ 7] := OCTAL(1,4,2TE;  VAR I: INTEGER; BEGIN  (*REPAIR TRAP VECTOR AND EXIT*) "TRIX.I := OCTAL(0,0,0,0,1,4); "I := TRIX.M^; "TRIX.I := OCTA,7,2,0); "H^.CODE[ 8] := OCTAL(0,0,0,2,0,0); "H^.CODE[ 9] := OCTAL(1,6,6,7,0,0); "H^.CODE[10] := OCTAL(1,7,7,7,4,2); L(0,0,0,1,0,0); "TRIX.M^ := I; TRIX.I := OCTAL(0,0,0,2,5,2); "TRIX.M^ := OCTAL(0,0,0,2,4,0); "CDL^.RCSR := INTENABLE; "EXI"H^.CODE[11] := OCTAL(0,2,0,0,6,7); "H^.CODE[12] := OCTAL(1,7,7,7,4,4); "H^.CODE[13] := OCTAL(0,0,1,0,0,1); "H^.CODE[14] := T(PROGRAM)  END (*TERMINATE*) ;  PROCEDURE FILEXFER;  VAR CH: CHAR; TITLE,S: STRING[50]; "PROCEDURE WRITECH(CH: CHAR); OCTAL(0,0,5,0,0,0); "H^.CODE[15] := OCTAL(0,1,0,0,6,7); "H^.CODE[16] := OCTAL(1,7,7,7,3,0); "H^.CODE[17] := OCTAL(0,1,2,6,0,0"BEGIN $REPEAT $UNTIL ORD(ODD(CDL^.XCSR) AND DONEBIT) <> 0; $CDL^.XBUF := ORD(CH) "END (*WRITECH*) ; " "PROCEDURE WRITELN;); "H^.CODE[18] := OCTAL(0,0,0,0,0,6); (*SET UP TRAP VECTOR FOR B6700 RECEIVE*) "TRIX.I := OCTAL(0,0,0,1,2,0); "TRIX.M^ := OR "BEGIN $WRITECH(CHR(CR)); $WRITECH(CHR(LF)) "END (*WRITELN*) ; " "PROCEDURE WRITES(S: STRING); " VAR I: INTEGER; . 5; BEGIN &WHILE (BLOCKREAD(BF,BUF,1) = 1) AND NOT ABORT DO (FOR I := 0 TO 7 DO *BEGIN ,FOR J := 0 TO 127 DO .BEGIN 0SEND(CH); ,WRITELN; WRITES('Transfer '); ,IF ABORT THEN WRITES('aborted') ,ELSE WRITES('complete'); ,WRITELN END(CHR(BUF[I,J]+ORD('@'))); , TIMER := TIMEOUT; 0REPEAT TIMER := TIMER-1 0UNTIL TIMER = 0 .END; IF ORD(ODD(C& END END "END (*SENDFILE*) ; " PROCEDURE GETFILE; VAR LINECNT: INTEGER; F: FILE; " $FUNCTION WRITEPAGE: BOODL^.RBUF) AND PARITYMASK) = ESC THEN .BEGIN ABORT := TRUE; I := 10 END; SEND(CHR(CR)); ,WAITFOR(LF); LLEAN; $BEGIN WRITEPAGE := FALSE; &FILLCHAR(PAGE[PAGEINX],1024-PAGEINX,0); &PAGEINX := 0; &IF BLOCKWRITE(F,PAGE,2) <> 2 THEN INECNT := LINECNT+1; ,WRITECH('.'); IF LINECNT MOD 50 = 0 THEN .WRITELN & END; CLOSE(BF) $END (*SENDBIN(BEGIN *WRITES('Disk output error'); *WRITELN; ( WRITEPAGE := TRUE END $END (*WRITEPAGE*) ; $ $PROCEDURE GETFTP;FILE*) ; $ BEGIN (*SENDFILE*) REPEAT &WRITES('Pascal input file? '); READS(S); &IF LENGTH(S) > 0 THEN (IF BINARYMODE T $ CONST TIMEOUT = 5000; VAR I: INTEGER; CH: CHAR; BEGIN S := CONCAT('cat ',TITLE,' '); &S[LENGTH(S)] := CHR(a') AND (CH <= 'z') THEN (CH := CHR(ORD(CH)-ORD('a')+ORD('A')); WRITECH(CH) (*ALWAYS ECHO*) END (*READCH*) ; " "PROCEDUHEN *OPENOLD(BF,S) (ELSE *OPENOLD(F,S) $UNTIL (LENGTH(S) = 0) OR (IORESULT = 0); $IF LENGTH(S) > 0 THEN &BEGIN RE READS(VAR S: STRING); $VAR I: INTEGER; CH: CHAR; "BEGIN $I := 1; $REPEAT &READCH(CH); &IF CH = CHR(BS) THEN (IF I > 1 (WRITES('Host output file? '); READS(TITLE); (IF LENGTH(TITLE) > 0 THEN *BEGIN LINECNT := 0; ABORT := FALSE; ,S := CONCAT('cTHEN I := I-1 (ELSE (*NOTHIN*) &ELSE (IF CH <> CHR(CR) THEN *BEGIN S[I] := CH; I := I+1 END $UNTIL CH = CHR(CR); $S[0] := at > ',TITLE,' '); ,S[LENGTH(S)] := CHR(CR); ,FOR I := 1 TO LENGTH(S) DO SEND(S[I]); WAITFOR(LF); IF BCHR(I-1); WRITECH(CHR(LF)) "END (*READS*) ; " PROCEDURE SENDFILE(BINARYMODE: BOOLEAN); " VAR I,LINECNT,REPTCNT: INTEGEINARYMODE THEN , SENDBINFILE ELSE .BEGIN 0READ(F,CH); REPTCNT := 1; 0WHILE NOT (ABORT OR EOF(F)) DO 2BEGIN 4IR; (ABORT: BOOLEAN; CH: CHAR; (BF: FILE; F: TEXT; $PROCEDURE WAITFOR(CH: INTEGER); $BEGIN &REPEAT (ABORT := ORD(ODD(CDLF EOLN(F) THEN 6BEGIN SEND(CHR(CR)); 8WAITFOR(LF); 8WRITECH('.'); 8LINECNT := LINECNT+1; 8IF LINECNT MOD 50 = 0 THEN WRITEL^.RBUF) AND PARITYMASK) = ESC &UNTIL ABORT OR (ORD(ODD(HDL^.RBUF) AND PARITYMASK) = CH) $END (*WAITFOR*) ; $ N; 8TIMER := 200; (*50 MS*) 8REPEAT TIMER := TIMER-1 8UNTIL TIMER = 0; 8REPTCNT := 0 6END; 4IF CH = CHR(DLE) THEN 6BEGIN  PROCEDURE SEND(CH: CHAR); $BEGIN &REPEAT &UNTIL ORD(ODD(HDL^.XCSR) AND DONEBIT) <> 0; &HDL^.XBUF := ORD(CH) $END (*SENDREAD(F,CH); 8REPTCNT := ORD(CH)-32; 8CH := ' ' 6END; 4IF REPTCNT > 0 THEN SEND(CH); 4REPTCNT := REPTCNT-1; 4IF REPTCNT <= *) ; $ PROCEDURE SENDBINFILE; &CONST TIMEOUT = 20; VAR I,J: INTEGER; $ BUF: PACKED ARRAY [0..7,0..127] OF 0..10 THEN 6BEGIN READ(F,CH); REPTCNT := 1 END 3END; 0CLOSE(F) .END; ,IF ABORT THEN CH := CHR(NUL) ,ELSE CH := CHR(CTRLD); ,S/ NT MOD 50 = 0 THEN WRITELN; 4IF PAGEINX > 920 THEN 6IF WRITEPAGE THEN TIMER := 0 2END .END *END; (IF ORD(ODD(CDL^.RBUF) AN 800; "HDL^.XCSR := 1; "REPEAT TIMER := TIMER-1 "UNTIL TIMER = 0; "HDL^.XCSR := 0; "H^.QTAIL := H^.QHEAD  END (*SENDBREAK*D PARITYMASK) = ESC THEN *TIMER := 0; (*ABORT XFER*) (TIMER := TIMER-1 &UNTIL TIMER <= 0; &WRITELN; HDL^.RCSR := 0; &) ;  BEGIN INITIALIZE;  1: "IF ORD(ODD(CDL^.RCSR) AND DONEBIT) <> 0 THEN $BEGIN IF (PAGEINX > 0) AND (TIMER = 0) THEN (BEGIN *IF PAGEINX > 2 THEN ,IF (PAGE[PAGEINX-2] = '%') AND , (PAGE[PAGEINX-1] = ' '&CH := ORD(ODD(CDL^.RBUF) AND PARITYMASK); &IF CH = ESC THEN (FILEXFER &ELSE (IF CH = DC2 THEN *ALPHALOCK := NOT ALPHALOCK) THEN 1PAGEINX := PAGEINX-2; *IF WRITEPAGE THEN TIMER := -1 $ END END (*GETFTP*) ; $ BEGIN (*GETFILE*) $WRITES('H (ELSE *BEGIN ,IF ALPHALOCK THEN .IF (CH >= ORD('a')) AND (CH <= ORD('z')) THEN 0CH := CH-ORD('a')+ORD('A'); ,IF HALFDUPLEost input file? '); READS(TITLE); $IF LENGTH(TITLE) > 0 THEN &BEGIN (REPEAT *WRITES('Pascal output file? '); READS(S); *IF X THEN CDL^.XBUF := CH; ,HDL^.XBUF := CH; ,IF CH = NUL THEN SENDBREAK *END $END; "IF H^.QTAIL <> H^.QHEAD THEN $IF ORD(ODDLENGTH(S) > 0 THEN OPENNEW(F,S) (UNTIL (IORESULT = 0) OR (LENGTH(S) = 0); (IF LENGTH(S) > 0 THEN *BEGIN (*TRANSFER!*) ,PAGEI(CDL^.XCSR) AND DONEBIT) <> 0 THEN &BEGIN (CDL^.XBUF := ORD(Q^[H^.QTAIL]); (H^.QTAIL := H^.QTAIL+1; (IF H^.QTAIL = QSIZE THENX := 0; LINECNT := 0; ,IF WRITEPAGE THEN TIMER := -1 ,ELSE GETFTP; IF TIMER < 0 THEN .BEGIN N H^.QTAIL := 0 &END; GOTO 1  END. 0WRITES('Transfer aborted'); 0WRITELN; CLOSE(F,PURGE) .END ,ELSE .BEGIN WRITES(TITLE); CR); &H^.QHEAD := 0; H^.QTAIL := 0; &FOR I := 1 TO LENGTH(S) DO (BEGIN *WHILE ORD(ODD(HDL^.XCSR) AND DONEBIT) = 0 DO; *HDL^ WRITES(' transferred'); 0WRITELN; CLOSE(F,LOCK) .END *END &END "END (*GETFILE*) ;   BEGIN (*.XBUF := ORD(S[I]) (END; REPEAT UNTIL ORD(ODD(HDL^.RBUF) AND PARITYMASK) = LF; HDL^.RCSR := INTENABLE; TIMER FILEXFER*) WRITELN; REPEAT $HDL^.RCSR := 0; $WRITES('Filexfer: S(end), G(et), B(insend), P(ascal), H(ost)'); $READCH(CH);:= TIMEOUT; &REPEAT (IF H^.QHEAD <> H^.QTAIL THEN *BEGIN ,TIMER := TIMEOUT; (*RESET TIMEOUT COUNTER*) ,CH := Q^[H^.QTAIL] WRITELN; IF (CH >= 'a') AND (CH <= 'z') THEN &CH := CHR(ORD(CH)-ORD('a')+ORD('A')); $CASE CH OF &'P': TERMINATE; &'G':; ,H^.QTAIL := H^.QTAIL+1; ,IF H^.QTAIL = QSIZE THEN H^.QTAIL := 0; IF CH <> CHR(LF) THEN .BEGIN  GETFILE; &'B': SENDFILE(TRUE); 'S': SENDFILE(FALSE) $END "UNTIL CH = 'H'; "H^.QHEAD := 0; H^.QTAIL := 0; "HDL^.RC0PAGE[PAGEINX] := CH; 0PAGEINX := PAGEINX+1; 0IF CH = CHR(CR) THEN 2BEGIN 4WRITECH('.'); 4LINECNT := LINECNT+1; 4IF LINECSR := INTENABLE; "CDL^.XBUF := US; "HDL^.XBUF := CR  END (*FILEXFER*) ;  PROCEDURE SENDBREAK;  BEGIN (*200 MS*) "TIMER :=0 AR TITLEA, TITLEB : STRING; (*<<<10/27/77 GLH*) FILEA, FILEB : TEXT; A, B : STREAM; MATCH : BOOLEAN; ENDFILE : BOOLEAN; TEMPLINE : STRING[LINELENGTH]; (*<<<10/26/77 GLH*) FREELINES : LINEPOINTER; SAME : BOOLEAN; PROCEDURE COMPARE; FUNCTION ENDSTREAM(VAR X : STREAM) : BOOLEAN;  BEGIN (* ENDSTREAM *) ENDSTREAM := (X.CURSOR = NIL) AND X.ENDFILE END; (* ENDSTREAM *) PROCEDURE MARK(VAR X : STREAM); (* CAUSES BEGINNING OF STREAM TO BE POSITIONED BEFORE *) (* CURRENT STREAM CURSOR. BUFFERS GET RECLAIMED, LINE *) (* COUNTERS RESET, ETC. *) PROCEDURE COLLECT(FWA, LWAPLUS1 : LINEPOINTER); VAR P : LINEPOINTER; BEGIN (* COLLECT *)  WHILE FWA <> LWAPLUS1 DO BEGIN P := FWA^.NEXTLINE; FWA^.NEXTLINE := FREELINES; FREELINES := FWA; FWA := P  END END; (* COLLECT *) BEGIN (* MARK *) IF X.HEAD <> NIL THEN BEGIN COLLECT(X.HEAD, X.CURSOR); X.HE(*$L-*) PROGRAM SRCCOM; (* SOURCE COMPARE *) (* COPYRIGHT (C) 1977 *) (* J. F. MINER, SSRFC, U OF MINN. *) AD := X.CURSOR; X.HEADLINENO := X.CURSORLINENO; IF X.CURSOR = NIL THEN BEGIN X.TAIL := NIL; X.TAILLINENO := X.CURS(* ALL RIGHTS RESERVED. *) (* DEVELOPMENTAL, BUYER BEWARE... *) CONST VERSION = 'v202 27-Oct-77'; MINLINESFORMORLINENO END END END; (* MARK *) PROCEDURE MOVECURSOR(VAR X : STREAM; VAR FILEX : TEXT); (* FILEX IS THE INPUT ATCH = 6; MAXTRY = 150; (*<<<10/27/77 GLH. LIMIT ON SEARCH AHEAD FOR MATCH*) LINELENGTH = 90; TYPE LINEPOINTER = ^LINFILE ASSOCIATED WITH STREAM X. THE *) E; LINE = RECORD (*<<<10/26/77 GLH*) NEXTLINE : LINEPOINTER; IMAGE : STRING[LINELENGTH] END; STREAM = REC, & txx && T(PtW xORD CURSOR, HEAD, TAIL : LINEPOINTER; CURSORLINENO, HEADLINENO, TAILLINENO : INTEGER; ENDFILE : BOOLEAN END; V1  (* MOVECURSOR *) PROCEDURE BACKTRACK(VAR X : STREAM; VAR XLINES : INTEGER); (* CAUSES THE CURRENT POSITION OF STREAM TREAM TO SEARCH *) VAR FILEX : TEXT; VAR Y : STREAM; (* STREAM TO LOOKAHEAD *)  (* CURSOR FOR X IS MOVED FORWARD ONE LINE, READING FROM X *) (* IF NECESSARY, AND INCREMENTING THE LINE COUNT. ENDFILE *) THE NEW CURRENT *) (* THE LINE COUNTER IS RETURNED IN XLINES. IT IS THE NUMBER *) (* OF THE CURRENT LINE (BEFORE BACKTRA (* IS SET IF EOF ENCOUNTERED ON EITHER STREAM. *) PROCEDURE READLINE; VAR I : INTEGER; CH : CHAR; NEWCK) RELATIVE TO BEGINNING *) LINE : LINEPOINTER; C, C2 : 0..LINELENGTH; BEGIN (* READLINE *) IF NOT X.ENDFILE THEN BEGIN C := 0;  (*<<<10/26/77 GLH. CHANGED WAY CHARS GET INTO TEMPLINE*) READ(FILEX, TEMPLINE); NEWLINE := FREELINES; IF NEWL (* OF STREAM. *) BEGIN (* BACKTRACK *) XLINES := X.CURSORLINENO + 1 - X.HEADLINENO; X.CURSOR := X.HEAD; X.CURSORLININE = NIL THEN NEW(NEWLINE) ELSE FREELINES := FREELINES^.NEXTLINE; NEWLINE^.IMAGE := TEMPLINE; (*<<<10/26/77 GLH*)ENO := X.HEADLINENO; ENDFILE := ENDSTREAM(A) OR ENDSTREAM(B) END; (* BACKTRACK *) PROCEDURE COMPARELINES(VAR MATCH : B NEWLINE^.NEXTLINE := NIL; IF X.TAIL = NIL THEN BEGIN X.HEAD := NEWLINE; X.TAILLINENO := 1; X.HEADLOOLEAN); (* COMPARE THE CURRENT LINES OF STREAMS A AND B, RETURNING *) (* MATCH TO SIGNAL THEIR (NON-) EQUIVALENCE. EOF INENO := 1 END ELSE BEGIN X.TAIL^.NEXTLINE := NEWLINE; X.TAILLINENO := X.TAILLINENO + 1 END; ON BOTH STREAMS *) (* IS CONSIDERED A MATCH, BUT EOF ON ONLY ONE STREAM IS A MISMATCH *) BEGIN (* COMPARELINES *) IF (A X.TAIL := NEWLINE; .CURSOR = NIL) OR (B.CURSOR = NIL) THEN MATCH := ENDSTREAM(A) AND ENDSTREAM(B) ELSE MATCH := (A.CURSOR^.IMAGE = B.C X.ENDFILE := EOF(FILEX); END END; (* READLINE *) BEGIN (* MOVECURSOR *) IF X.CURSOR <> NIL THEN BEGIN URSOR^.IMAGE) END; (* COMPARELINES *) PROCEDURE FINDMISMATCH; BEGIN (* FINDMISMATCH *) (* NOT ENDFILE AND MATCH *) IF X.CURSOR = X.TAIL THEN READLINE; X.CURSOR := X.CURSOR^.NEXTLINE; IF X.CURSOR = NIL THEN ENDFILE := TRUE;  REPEAT (* COMPARENEXTLINES *) MOVECURSOR(A, FILEA); MOVECURSOR(B,FILEB); MARK(A); MARK(B); COMPARELINES(MATCH) X.CURSORLINENO := X.CURSORLINENO + 1 END ELSE IF NOT X.ENDFILE THEN (* BEGINNING OF STREAM *) BEGIN READLI UNTIL ENDFILE OR NOT MATCH; NE; X.CURSOR := X.HEAD; X.CURSORLINENO := X.HEADLINENO END ELSE (* END OF STREAM *) ENDFILE := TRUE; END; END; (* FINDMISMATCH *) PROCEDURE FINDMATCH; VAR TRYCOUNT : INTEGER; PROCEDURE SEARCH(VAR X : STREAM; (* S2 OUNT); CHECKFULLMATCH; COUNT := COUNT - 1; WHILE (COUNT <> 0) AND NOT MATCH DO BEGIN MOVECURSOR(X, FILEX);  EMPTYB := (B.HEAD = B.CURSOR); IF EMPTYA OR EMPTYB THEN IF EMPTYA THEN PRINTEXTRATEXT(B, TITLEB, A, TITLEA) ELCOUNT := COUNT - 1; CHECKFULLMATCH END END; (* SEARCH *) PROCEDURE PRINTMISMATCH; VAR EMPTYA, EMPTYSE PRINTEXTRATEXT(A, TITLEA, B, TITLEB) ELSE BEGIN WRITELN(' MISMATCH:'); WRITELN; WRITE(' ', TITLEA, ', 'B : BOOLEAN; PROCEDURE WRITETEXT(P, Q : LINEPOINTER); BEGIN (* WRITETEXT *) WRITELN; WHILE (P <> NIL) AND (P ); WRITELINENO(A); WRITELN(':'); WRITETEXT(A.HEAD, A.CURSOR); WRITE(' ', TITLEB, ', '); WRITELINENO(B); WRITELN(<> Q) DO BEGIN WRITE(' * '); WRITELN (P^.IMAGE); P := P^.NEXTLINE END; IF P = NIL THEN WRITELN(':'); WRITETEXT(B.HEAD, B.CURSOR) END END; (* PRINTMISMATCH *) BEGIN (* FINDMATCH *) TRYCOUNT := 0;  VAR FILEY : TEXT); (* LOOK AHEAD ONE LINE ON STREAM Y, AND SEARCH FOR THAT LINE *) (* BACKTRACKING ON STREAM' *** EOF ***'); WRITELN  X. *) VAR COUNT : INTEGER; (* NUMBER OF LINES BACKTRACKED ON X *) PROCEDURE CHECKFULLMATCH; (* FROM THE C END; (* WRITETEXT *) PROCEDURE WRITELINENO(VAR X : STREAM); VAR F, L : INTEGER; BEGIN (* WRITELINENO *URRENT POSITIONS IN X AND Y, WHICH MATCH, *) (* MAKE SURE THAT THE NEXT MINLINESFORMATCH-1 LINES ALSO *) (* MATCH, OR ) F := X.HEADLINENO; L := X.CURSORLINENO - 1; WRITE('LINE'); IF F = L THEN WRITE(' ', F) ELSE WRITE('S ', FELSE SET MATCH := FALSE. *) VAR N : INTEGER; SAVEXCUR, SAVEYCUR : LINEPOINTER; SAVEXLINE, SAVEYLINE : IN, ' TO ', L); IF X.CURSOR = NIL THEN WRITE(' (BEFORE EOF)'); END; (* WRITELINENO *) PROCEDURE PRINTEXTRATEXT(VARTEGER; BEGIN (* CHECKFULLMATCH *) SAVEXCUR := X.CURSOR; SAVEYCUR := Y.CURSOR; SAVEXLINE := X.CURSORLINENO; SAVEY X : STREAM; XNAME : STRING; VAR Y : STREAM; YNAME : STRING); BEGIN (* PRINTEXTRATEXT *) WLINE := Y.CURSORLINENO; COMPARELINES(MATCH); RITE(' EXTRA TEXT ON ', XNAME, ', '); WRITELINENO(X); WRITELN; IF Y.HEAD = NIL THEN WRITELN(' BEFORE EOF ON ',  N := MINLINESFORMATCH - 1; WHILE MATCH AND (N <> 0) DO BEGIN MOVECURSOR(X, FILEX); MOVECURSOR(Y, FILEY); YNAME) ELSE WRITELN(' BETWEEN LINES ', Y.HEADLINENO-1, ' AND ', Y.HEADLINENO, ' OF ', YNAME); WRIT COMPARELINES(MATCH); N := N - 1 END; X.CURSOR := SAVEXCUR; X.CURSORLINENO := SAVEXLINE; Y.CURSOR := SAVEYCURETEXT(X.HEAD, X.CURSOR) END; (* PRINTEXTRATEXT *) BEGIN (* PRINTMISMATCH *) WRITELN(' ***************************; Y.CURSORLINENO := SAVEYLINE; END; (* CHECKFULLMATCH *) BEGIN (* SEARCH *) MOVECURSOR(Y, FILEY); BACKTRACK(X, C********'); EMPTYA := (A.HEAD = A.CURSOR); 3 MATCH THEN FINDMISMATCH ELSE BEGIN SAME := FALSE; FINDMATCH END UNTIL ENDFILE AND MATCH; MARK(A); MARK(B); (* MARK END OF FILES, THEREBY DISPOSING BUFFERS *) END; (* COMPARE *) PROCEDURE INITSTREAM(VAR X : STREAM; VAR FILEX : TEXT); BEGIN (* INITSTREAM *) X.CURSOR := NIL; X.HEAD := NIL; X.TAIL := NIL; X.CURSORLINENO := 0; X.HEADLINENO := 0; X.TAILLINENO := 0; X.ENDFILE := EOF(FILEX); END; (* INITSTREAM *) BEGIN (* SRCCOM *) WRITELN('INPUT FILE NAME:'); READLN(TITLEA); OPENOLD(FILEA, TITLEA); WRITELN('SECOND INPUT FILE NAME:'); READLN(TITLEB); OPENOLD(FILEB, TITLEB); RESET(FILEA); RESET(FILEB); INITSTREAM(A, FILEA); INITSTREAM(B, FILEB);  FREELINES := NIL; WRITELN('Source Compare [', VERSION, ']' ); WRITELN; IF EOF(FILEA) THEN BEGIN WRITELN(TITLEA, ' IS EMPTY WHILE (NOT MATCH) AND (TRYCOUNT <= MAXTRY) DO BEGIN SEARCH(A, FILEA, B, FILEB); TRYCOUN.'); IF EOF(FILEB) THEN WRITELN(TITLEB, ' IS EMPTY.') END ELSE IF EOF(FILEB) THEN WRITELN(TITLEB, ' IS EMPTY.') ELSE T := TRYCOUNT+1; END; IF NOT MATCH THEN BEGIN TRYCOUNT:=0; WHILE (NOT MATCH) BEGIN SAME := TRUE; COMPARE; IF SAME THEN WRITELN('No differences encountered.'); END END. (* SRCCOM *)  AND (TRYCOUNT<=MAXTRY) DO BEGIN SEARCH(B, FILEB, A, FILEA); TRYCOUNT:=TRYCOUNT+1; END;  END; PRINTMISMATCH; IF (NOT MATCH) AND (TRYCOUNT>MAXTRY) THEN BEGIN MARK(A); MARK(B) END;  END; (* FINDMATCH *) BEGIN (* COMPARE *) ENDFILE := FALSE; MATCH := TRUE; (* I.E., BOI MATCHES BOI *) REPEAT IF 4 = 7; TABLESIZE = 35; (* INCREASE TABLESIZE FOR MORE MEMORY *) IDBLANKS = ' '; LASTX = 'LASTX '; EGIN WHOLEPART := NUMBER(FALSE); IF CH='.' THEN GETCHAR; DODECIMAL := (CH IN NUMERIC); END ELSE BEGI TYPE TOKENKINDS = (CONSTV, EOFV, FUCIDENV, LINEV, LPARENV, MINUSV, PLUSV, RPARENV, SLASHV, STARV, UNRECIN WHOLEPART := 0; GETCHAR; DODECIMAL := (CH IN NUMERIC); IF NOT DODECIMAL THEN TOKENTYPE := UNRECSYMV DV, UNRECSYMV, UPARROWV, VARIDENV, EQUALV, LASTXV); IDKIND = PACKED ARRAY[0..IDLENGTH] OF CHAR; V END; IF DODECIMAL THEN NUM := WHOLEPART + NUMBER(TRUE) ELSE NUM := WHOLEPART; DONTEAT:=CH<>' '; (* DONT EAT NEAR CH: CHAR; J, TOTALIDS, INDEX: INTEGER; OPERATORS, ALPHA, NUMERIC: SET OF CHAR; NUM, ANSWER: REAL; SOURCE: STRXT NONBLANK IF CH IS NONBLANK DA 7/11/77 *) END (* OF GETCONSTANT *); PROCEDURE GETID; VAR ID: IDKIND; I: INTEGER; FUNING; TOKENTYPE: TOKENKINDS; NAMETABLE: ARRAY[0..TABLESIZE] OF RECORD NAME: IDKIND; CASE ISVARCTION LOOKUP(IDTEXT: IDKIND):INTEGER; VAR I: INTEGER; BEGIN I:=TOTALIDS; NAMETABLE[0].NAME:=IDTEXT;(* NOTE DON'T C: BOOLEAN OF TRUE: (VALUE: REAL) END; TEMP: REAL; ITSOK, GAVEERR: BOOLEAN; PROCEDURE GETCHAR; BEGIN J:=J+1HANGE THIS AS THIS FACT IS USED INSIDE OF PRIMARY!!!!!!! *) WHILE NAMETABLE[I].NAME<>; (* J IS THE INDEX INTO THE SOURCE STRING *) IF J<=LENGTH(SOURCE) THEN CH:=SOURCE[J] IDTEXT DO I:=I-1; LOOKUP:=I END (* OF LOOKUP *); BEGIN (*GETID*) ID:=IDBLANKS; I:=0; REPEAT IF I<=IDLENGTH THE ELSE CH:='#'; (* EOF SOURCE CHAR *) IF (CH>='a') AND (CH<='z') THEN CH:=CHR(ORD(CH)-32) (*CHANGE TO UPPER CASE*) END (* ON ID[I]:=CH; I:=I+1; GETCHAR UNTIL NOT(CH IN ['A'..'Z','0'..'9']); DONTEAT:=CH<>' '; (* DONT GET NEXT NONBLANKF GETCHAR *); PROCEDURE SCANNER; VAR DONTEAT: BOOLEAN; PROCEDURE GETCONSTANT; (* Real number scanner RJH 9 July 77 *) VAR WH IF CH IS NONBLANK *) IF ID=LASTX THEN TOKENTYPE:=LASTXV ELSE BEGIN INDEX:=LOOKUP(ID); IF INDEX>0 THEN OLEPART: REAL; DODECIMAL: BOOLEAN; FUNCTION NUMBER (FRACTION: BOOLEAN): REAL; (* Returns number as whole or fraction  IF NAMETABLE[INDEX].ISVAR THEN TOKENTYPE:=VARIDENV ELSE TOKENTYPE:=FUCIDENV ELSE TOKENTYPE:=UNRECIDV *) VAR SUM, COUNT: REAL; BEGIN COUNT := 1; SUM := 0; REPEAT IF SUM < 0.9E37 (*MAXREAL*) THEN BEGIN SUM := 10*SUM + ORD(CH) - ORD('0'); COUNT := 10*COUNT END; GETCHAR UNTIL NOT (CH IN NUMERIC); IF FRACTION THEN NUPROGRAM CALCULATOR;(* WRITTEN BY DALE ANDER JULY 8, 1977 *) (* CHANGED TO A CALCULATOR ON JULY 17, 1977 *) CONST IDLENGTH MBER := SUM / COUNT ELSE NUMBER := SUM END (*NUMBER*); BEGIN (*GETCONSTANT*) TOKENTYPE := CONSTV; IF CH <> '.' THEN B5  END END (* OF GETID *); BEGIN (*SCANNER*) DONTEAT:=FALSE; IF CH IN ALPHA THEN GETID ELSE IF CH IN NUMERIC+['.'] T WRITE ('Illegal symbol') END ELSE IF TOKENTYPE<>EOFV THEN BEGIN GAVEERR:=TRUE; WRITHEN GETCONSTANT ELSE IF CH IN OPERATORS THEN CASE CH OF '+': TOKENTYPE:=PLUSV; '-': TOKENTYPE:=MINUSV; E ('Left parenthesis missing') END END (* OF PARENEXPRESSION *); FUNCTION EVALU8 (VAR ANS: REAL): BOOLEAN; VAR ARG, TEM '*': TOKENTYPE:=STARV; '/': TOKENTYPE:=SLASHV; '\': TOKENTYPE:=LINEV; '^': TOKENTYPE:=UPARROWV; '(': TOKENTYPE:=LPP: REAL; I: INTEGER; BEGIN EVALU8 := TRUE; IF PARENEXPRESSION (ARG) THEN CASE FUCNUM OF 1: ANS:=SIN(ARG); ARENV; ')': TOKENTYPE:=RPARENV; '=': TOKENTYPE:=EQUALV; '#': BEGIN TOKENTYPE:=EOFV; DONTEAT:=TRUE END END  2: ANS:=COS(ARG); 3: IF COS(ARG)=0 THEN BEGIN WRITE('Undefined TAN'); GAVEERR:=TRUE END ELSE ANS:=SIN(ARG)/COS( ELSE TOKENTYPE := UNRECSYMV; IF NOT DONTEAT THEN REPEAT GETCHAR UNTIL CH<>' ' (* GETNONBLANK *) END (* OF SCANNER *); FUNCTARG); 4: IF ARG<=0 THEN BEGIN WRITE('Undefined LOG'); GAVEERR:=TRUE END ELSE ANS:=LOG(ARG); 5: IF ARG<=0 THEN BION EXPRESS(VAR ANS: REAL): BOOLEAN ; VAR OK, CHANGESIGN: BOOLEAN; RSLT1, RSLT2: REAL; SAVEOP: TOKENKIND; FUNCTION TERMEGIN WRITE('Undefined LN'); GAVEERR:=TRUE END ELSE ANS:=LN(ARG); 6: ANS:=ABS(ARG); 7: IF ARG<0 THEN BEGIN WRITE(VAR ANS: REAL): BOOLEAN ; VAR OK: BOOLEAN; SAVEOP: TOKENKIND; RSLT1, RSLT2: REAL; FUNCTION FACTOR(VAR ANS: REAL): BOOL('Undefined SQRT'); GAVEERR:=TRUE END ELSE ANS:=SQRT(ARG); 10: IF (ROUND(ARG)>33) OR (ROUND(ARG)<0) THEN EAN ; VAR OK: BOOLEAN; RSLT1, RSLT2: REAL; FUNCTION PRIMARY(VAR ANS: REAL): BOOLEAN ; (* REWRITTEN BY RJH 12 JULY 77 *) BEGIN WRITE('Cannot calculate factorial GTR 33'); GAVEERR:=TRUE END ELSE BEGIN TEMP:=1; (* REREWRITTEN BY D ANDER 7/14/77 *) VAR FUCNUM, SAVEINDEX: INTEGER; SAVEID: IDKIND; SAVETOK: TOKENKINDS; FUNCTION P FOR I:=2 TO ROUND(ARG) DO TEMP:=TEMP*I; ANS:=TEMP END END (* OF CASE *) ELSE EVALU8 ARENEXPRESSION(VAR ANS: REAL): BOOLEAN ; BEGIN PARENEXPRESSION := FALSE; IF TOKENTYPE=LPARENV THEN BEGIN SCANNER; := FALSE; IF GAVEERR THEN EVALU8 := FALSE END (* OF EVALU8 *); BEGIN (*PRIMARY*) PRIMARY:=FALSE; IF TOKENTYPE=CONSTV THEN IF EXPRESS(ANS) THEN IF TOKENTYPE=RPARENV THEN BEGIN SCANNER; PARENEXPRESSION := TRUE END  (*CONSTANT*) BEGIN ANS:=NUM; (*GLOBAL SET BY GETCONSTANT*) PRIMARY:=TRUE; SCANNER END ELSE ELSE IF TOKENTYPE<>EOFV THEN BEGIN GAVEERR:=TRUE; WRITE ('Right parenthesis mi IF TOKENTYPE IN [VARIDENV, UNRECIDV] THEN BEGIN SAVETOK:=TOKENTYPE; SAVEID:=NAMETABLE[0].NAME; (* THISssing') END END ELSE IF TOKENTYPE IN [UNRECIDV, UNRECSYMV] THEN BEGIN GAVEERR:=TRUE;  WAS PUT THERE BY LOOKUP IN GETID *) SAVEINDEX:=INDEX; (*GLOBAL SET IN GETID*) (*THIS MAY NOT BE NECESSARY*) SCA6 CTOR*) OK:=TRUE; IF PRIMARY(RSLT1) THEN WHILE OK AND (TOKENTYPE=UPARROWV) DO BEGIN SCANNER; IF PRIMARY(RSLT2) TH END END ELSE OK:=FALSE; EXPRESS:=OK; IF OK THEN ANS:=RSLT1 END (* OF EXPRESS *); PROCEDURE INITABLES; BEGIN EN BEGIN IF RSLT1<=0 THEN BEGIN WRITE('Cannot calculate power'); OK:=FALSE; GAVEERR:=TRUE  ALPHA:=['A'..'Z']; NUMERIC:=['0'..'9']; OPERATORS:=['+','=','*','-','/','\','^','(',')','#']; WITH NAMETABLE[1] DO BEEND ELSE RSLT1:=EXP(RSLT2*LN(RSLT1)) END ELSE OK:=FALSE END ELSE OK:=FALSE; IF OK THEN ANS:=RSLT1GIN NAME:='SIN '; ISVAR:=FALSE END; WITH NAMETABLE[2] DO BEGIN NAME:='COS '; ISVAR:=FALSE END; WITH NAMETANNER; IF TOKENTYPE=EQUALV THEN (* MEMORY ASSIGNMENT *) BEGIN SCANNER; IF EXPRESS(ANS) THEN ; FACTOR:=OK END (* OF FACTOR *); BEGIN (*TERM*) OK:=TRUE; IF FACTOR(RSLT1) THEN  BEGIN IF SAVETOK=UNRECIDV THEN IF TOTALIDS+1<=TABLESIZE THEN BEGIN TOTALIDS:=TOTALIDS+1; SAVEI WHILE OK AND (TOKENTYPE IN [STARV, SLASHV, LINEV]) DO BEGIN SAVEOP:=TOKENTYPE; SCANNER; IF FACTOR(RSLT2) THENDEX:=TOTALIDS; WITH NAMETABLE[SAVEINDEX] DO BEGIN ISVAR:=TRUE; NAME:=SAVEID END END ELSN CASE SAVEOP OF STARV: RSLT1:=RSLT1*RSLT2; SLASHV: IF RSLT2=0 THEN BEGIN OK:=FALSE; GAVEERR := TRUE;E BEGIN WRITE('Table full. Assignment not done'); GAVEERR:=TRUE  WRITE('Division by zero') END ELSE RSLT1:=RSLT1/RSLT2; LINEV: IF ROUND(RSLT2)=0 THEN BEGIN  END; IF SAVEINDEX<>0 THEN BEGIN NAMETABLE[SAVEINDEX].VALUE:=ANS; PRIMARY:=TRUE END  OK:=FALSE; GAVEERR:=TRUE; WRITE('MOD by zero') END ELSE RSLT1:=ROUND(RSLT1) MOD ROUND(RSLT2) END  END END ELSE IF SAVETOK=UNRECIDV THEN BEGIN WRITE('Unrecognized ID'); (* OF CASE *) ELSE OK:=FALSE END ELSE OK:=FALSE; IF OK THEN ANS:=RSLT1; TERM:=OK END (* OF TERM *); BEGIN (*EX GAVEERR:=TRUE END ELSE BEGIN PRIMARY:=TRUE; ANS:=NAMETABLE[PRESS*) OK:=TRUE; IF TOKENTYPE IN [PLUSV,MINUSV] THEN BEGIN CHANGESIGN:=(TOKENTYPE=MINUSV); SCANNER END SAVEINDEX].VALUE END END ELSE IF TOKENTYPE=FUCIDENV THEN (*FUNCTION*) BEGIN FUCNUM := INDEX; (*I ELSE CHANGESIGN := FALSE; IF TERM(RSLT1) THEN BEGIN IF CHANGESIGN THEN RSLT1:=-RSLT1; WHILE OK AND (TOKENTYPNDEX SET BY GETIDENT*) SCANNER; PRIMARY := EVALU8 (ANS) END ELSE IF TOKENTYPE=LASTXV THEN BEGIN SCE IN [PLUSV, MINUSV]) DO BEGIN SAVEOP:=TOKENTYPE; SCANNER; IF TERM(RSLT2) THEN ANNER; ANS:=ANSWER; PRIMARY:=TRUE END ELSE PRIMARY:=PARENEXPRESSION (ANS) END (* OF PRIMARY *); BEGIN (*FA CASE SAVEOP OF PLUSV: RSLT1:=RSLT1+RSLT2; MINUSV: RSLT1:=RSLT1-RSLT2 END ELSE OK:=FALSE 7 EXIT(PROGRAM); REPEAT GETCHAR UNTIL CH<>' '; (*GETNONBLANK*) SCANNER; ITSOK := EXPRESS(TEMP) AND (TOKENTYPE=EOFV); PB[PSׯ>צSN!LSׯ IF NOT ITSOK THEN BEGIN IF (TOKENTYPE=EOFV) AND NOT GAVEERR THEN WRITE ('Unexpected end of expression') ELS@ƁlƁmƂՀ<B@צPRINTER:COM? x#áE IF NOT GAVEERR THEN WRITE('Illegal Symbol'); WRITELN(': Try Again') END ELSE BEGIN WRITELN(צEND.̂ƂxƂ.TEXT}Ƃxm"ˡ& NO SUCH FILE=m +mxm' ',TEMP); ANSWER:=TEMP END UNTIL FALSE; END (*EXPRESSION*). ˡ#ám@ƁmdJPJTxצ( BINDER  PRINT  BLE[3] DO BEGIN NAME:='TAN '; ISVAR:=FALSE END; WITH NAMETABLE[4] DO BEGIN NAME:='LOG '; ISVAR:=FALSE EN D; WITH NAMETABLE[5] DO BEGIN NAME:='LN '; ISVAR:=FALSE END; WITH NAMETABLE[6] DO BEGIN NAME:='ABS '; ISVAR:=FALSE END; WITH NAMETABLE[7] DO BEGIN NAME:='SQRT '; ISVAR:=FALSE END; WITH NAMETABLE[8] DO BEGIN NAME:='E '; ISVAR:=TRUE; VALUE:=2.718282 END; WITH NAMETABLE[9] DO  @<@צPAGE @ ȡ @Rȡ @ BEGIN NAME:='PI '; ISVAR:=TRUE; VALUE:=3.141593 END; WITH NAMETABLE[10] DO BEGIN NAME:='FAC '; ISVAR:=F  2šɡ@@ȡ @Rxצ 0 {xALSE END; TOTALIDS:=10 (* BUILD IN NUMBER OF FUNCTIONS AND VARIABLES *) END (* OF INITABLES *); BEGIN (*CALCULATOR*) ANSWE á 0):~ `ɡń@R:=0; INITABLES; REPEAT GAVEERR := FALSE; J := 0; WRITE('->'); READLN(SOURCE); IF LENGTH(SOURCE)=0 THEN $ F>>xPGׯצSKPNׯצNNPTׯxצ8 cal System Binder (2.1 a2)>This program modifies the SYSTEM.PASCAL of your default prefix?d[[[ , Z\]\á ]*צCode file write error ] isk. If any of the files it expects to be around are missing,צ?i.e. SYSTEM.PASCAL, or enough room (60 blocks) to Ɓ62Ɓ^Ձ.  Moving procedures around  !  re-create it,2it will terminate with the cryptic message "ERROR"?You also need to execute th2 Calling system linker to create new SYSTEM.PASCALצ SYSTEM.PASCALצSYSTEM.PASCAL[35] 2e program SETUP to get the system toצ&work intelligently with your terminal.צ* File with GOTO6.\ ]UZ\̀[̀[ʀȡ;ʀ [ רʀ[XY(X,Y: INTEGER) procedure:Pá "ˡ" ++P+צ.CODEU+"á2 SYSTEM.PASC[[[ , Z\]\á ]*צCode file write error ] AL"ˡ2ˡ+ZZ ++++2+ˡ ˡZF CALCULAT +צincompatible byte sex+Z ++++ +ˡe  ZؕܕZؕܕ'ؕ'ؕە''''۞ۂەZ Y]UˡF\ PASCALSYר\욶\UXXUU' Yض[ Zˡl]ZUˡM\ [آ [\[\[UXXUٚ.ȡ$ˡ,U ,š YáZY [[ȡY[š [[ -n  Tȡܢ"6 ERROR ( Pas ,٪PتP]ƁX\Y]UZ\̀[̀[ʀȡ;ʀ [ רʀ[9 Rfd.ˡ.áړ dڡ99 ˸  ۩dd ܹ%cצDivision by zero Tdڨe#e#   8 רȡ á cצ MOD by zero F ۡ $< LASTX d%še# dd dn @' d` d Xۡ ܩd`Ad  . '5dd ddd ddddd##^x )&AMLF "$&(*,.024I8:<>@B_ 'P e#SIN רآe#DFHJLNPRTVXZ\^`bdfhjlnprv dؓ ˡ  dáG;P;á ˡadÄddvdécצ Undefined LOGc צ Undefined LNc  Undefined SQR*Unexpected end of expression cIllegal Symbol : Try Again/צ Tc !ɍ3!Cannot calculate factorial GTR 33c/ ȡߊa7a ɍ -   $ $ xof+c0R  dáڥ9d$d e# ݞ$' ݑ$ $݂ō $݂ġ ݂$ $dá{p áT#ȡe# /Table full. Assignment not donecˡe#ڼ $ȡ%  0 ފ$čQ   .ˡ5  Eɡ  -ݑ š8 á!צUnrecognized IDcڥe#/dá dáڥ7 C4 ,  0 0 ߿`ġ(   ݂. ݕ ؂݂3  ݕ 0 . ݑ0 ݕ݂ ؂;ȡ ;훾#azȄ 0Ȫ} ꊃ0 ڡ a۩d ÄW H+צCannot calculate powercۡs : discs and the LLL OCTOPUS time-sharing system. The  program runs under the DEC RT-11 Version 3 operating system. It will function  under either the SJ or the FB monitor, however timer support is required.  This implies a special sysgen to use the SJ  ɡ   x,  *2 l 8 d  monitor. The system makes use  of the serial port on the OCTOPUS RJET network. It communicates with the  RJET system using the  SCULL protocol at 4800 baud. Wth no competition, it achieves an average  data tranfer rate of approximately 3000 bits peO^r second.   2. The hardware necessary to run the FOOTNET software consists of any PDP-11  with a floppy disc and a special differential-input serial line interface.  The differential-input serial interface is a modified version of the lab  stock DLV-11. A special card would have to be designed for use with the  UNIBUS.   3. For new or replacement cofigurations to implent FOOTNET, the following  hardware is recommended for minimum expense, minimum size, and maximum  versatility. #A) VT103-AA HARDWARE TO RUN FOOTNET   1. FOOTNET is a computer programming system designed to make data transfers  between RT-11 floppy ; PROGRAM TESTR(INPUT,OUTPUT);   VAR #E:REAL; #X:INTEGGER;   BEGIN #E := 1.0; #X ;= 1; #WRITELN('E = ',E); #WRITELN('X = ',X)  END.  ;OTHERNET (EITHER/AND NET)   Background (Ethernet): #ETHERNET (i.e. XEROX's contention network) can achieve near 100% line  utiliation. It is a network in which all participants communicate using  a singgle "wire" (... the ether). Each participantO^O^33< ts for a random period and trys again. #The high rate of utilization is due to the prompt detection of a Transceiving and testing will be done  on a character basis. Thus, we will be unable to achieve the extent of  utilization of collision followed by a restart. All participants, senders as well as  receivers, easily detect collisions since they will a Ethernet. In contrast, we will have no special purpose  equipment.   Strategy: #A packet is defined to be a series of froll occur very early  in packet transmission. In particular, with the XEROX synchronous, bit  oriented scheme, a collision is m 6 to 255 bytes of which six  are overhead: (tentative)   ... delay ...  ...<8-bit data>...<16-bit checksum, least significant byte first>  mination of the packet as defined by the protocol. #Finally, each packet is terminated by a detectable idle ether ... some-  t A transmitter participant sets up the packet and computes the checksum.  The transitter awaits a minimum delay time and beginhinng like twice the round-trip transmssion time. Maximum round-trip  time is computed by dividing the length of the ether (wis the transmission.  The first few characters are immediately read and checked following  transmission. If there is a collisire) into the spped  of light for the ether medium. This could be less than a single character  time ... the signal would travon, the transmitter sends one or two  nulls (to simulate a break) and thus mess up the other computing partici-  pant.(Problemel about 1000 feet in one microsecond.   Othernet: #Our goal is to achieve ethernet interconnection simplicity and perform- : Whay if the other participant is sending nulls legitamately?  Probably O. K. since only the byte count could legitametly be n seeking to send a  packet listens to determine if the line is idle before attempting to  transmit.  The transmitting part ance by using (mostly) commercially available components. In particular, icipant monitors the line to guarentee  that the packet is going out unmolested. Because of physical delays  in the ether, in we select standard (MDB) DLV-11 interfaces for the LSI-11 strapped at  19.2kbaud (maximum posible) and passive current loop.  detecting its use, etc., it is possible for more than  one participant to begin simultaneously -- within a few character timesAll participant  transmitters and receivers will be connected in series (AND-net). The  only hardware required will be a con.  Thus each transmissing participant monitors the line for a while to see  if a collision is taking place. #Should a collisinector and a normally closed relay  which shorts the transmitter and receiver for a participant which is  unplugged, or, pluggon be detected, the transmitter jams the ether to  guarentee that the other participant detects the collision. Each then  waied in but unpowered. #Packets will be transceived isosynchronously ... asynchronously with  no delays between 10-bit frames. = he receiver times enough characters to guarentee  that there are no idle times denoting a transmitter detected collision and  SUCCESSFUL_RCVE := false; %Count out IDLE_TIME constantly testing receiver to find "inter-message"  II. While NOT SUCCESSFUL_resultant restart. Once the collision period is past, the receiver need RCVE AND R_TRY <= R_TRY_MAX do 'A. SUCCESSFUL := true 'B. R_BYTE := 1 'C. R_PACKET[R_BYTE] := RECEIVED_BYTE 'D. R_PACKET_DON not time each byte provided it knows the protocol and can detect the end  of the packet, whether it is addressed to the receiE := false  E. While NOT R_PACKET_DONE AND R_BYTE <= MAX_R_LENGTH do +1. INTER_BYTE_TIME := counted time to next receive +2. ver, and whether it is  correctly received.   Protocol: #Errors beyond collisions are unlikely. For the purposes of this tif INTER_BYTE_TIME < IDLE_TIME 0then R_PACKET[R_BYTE] := RECEIVED_BYTE: 5R_BYTE := R_BYTE + 1 0else R_PACKET_DONE := true 'Fext,  we should use the simplest posible protocol with very simple error checks.   Questions: #What is a good idle line (no. if R_BYTE < R_COLLIDE_MAX OR R_BYTE > MAX_R_LENGTH -then SUCCESSFUL := false; -R_TRY := R_TRY + 1 . of characters) ? #How many jamming nulls are required? #How does performance suffer should we use 60 Hz clock pulses rather  III. Report R_STATUS ... SUCCESS/FAIL etc.    Assunptions: #*All computers linked in series (AND-NET) in one current loothan #CPU counting loops to time the idle times?   SIMPLEST DRIVER   TRANSMIT(T_ADDRESSEE,T_ADDRESSOR,T_LENGTH,T_MESSAGE,p. #*Transmitter and Receiver for each computer hooked in series. # 3--- --- --- --- #[-T_STATUS) #I. Set up 'A. Construct_Packet 'B. T_TRY := 1 #II. While NOT SUCCESSFUL_XMIT AND T_TRY < MAX_T_TRY do 'A. Await-----> + >---- T ---- R -------//------ T ---- R ----- !20 ma. --- --- --- --- I !current  IDLE_TIME + UNCOLLIDE_TIME(TRY) for idle line -{use computed timing count down loops} 'B. SUCESSFUL_XMIT := true 'C. For T_B I !source I #[------> - >----YTE := 1 to T_COLLIDE_MAX do +1. SEND( PACKET [T_BYTE]) +2. if PACKET[T_BYTE] <> RECEIVED_BYTE --------------//------------------------ # #*Standard (MDB) DLV-11strapped for passive current loop. #*Stapped at 9600 or 19.0then SUCCESSFUL_XMIT := false 'D. if SUCESSFUL_XMIT ,then for T_BYTE := T_COLLIDE_MAX + 1 to LENGTH do /SEND(PACKET[T_BYTE]2 Kbaud(standard, on-board maximum. #*60 Hz. clock.  ull during  the period of likely collision.) Following this abort, the transmitter  waits a random time and tries again. #A ) ,else for I := 1 to T_JAM do SEND(NULL); 2T_TRY := T_TRY + 1 /end #III. Return T_STATUS to report success/failure and causreceiver awaits an idle period long enough to be the interpacket  time. It then awaits a character. #Once a packet begins, te if possible    SIMPLEST DRIVER   RECEIVE(R_ADDRESSEE,R_ADDRESSOR,R_LENGTH,R_MESSAGE,R_STATUS)   I. R_TRY := 1; %> 345 00E5 OPS1 5 BC 000000 0000 DEFRP 6 DE 000001 0001 DEFRP 7 HL 000002 0002 DEFRPS 103313 86CB OPS8  8 SP 000003 0003 DEFRP 9 AF 000003 0003 DEFRP 10 B 000000 0000 DEFREG 11 C 000001 0001 DEFREG 12 D 000002 0002 DEFREG 13 E 000003 0003 DEFREG 14 H 000004 0004 DEFREG 15 L 000005 0005 DEFREG 16 A 000007 0007 DEFREG 17 NZ 000000 0000 DEFCC 18 Z  000001 0001 DEFCC 19 NC 000002 0002 DEFCC 20 PO 000004 0004 DEFCC 21 PE 000005 0005  DEFCC  22 P 000006 0006 DEFCC 23 M 000007 0007 DEFCC 24 IX 000335 00DD DEFABS 25 IY 000375 00FD DEFABS 26 EX 000343 00E3 OPS2 27 ADD 004606 0986 OPS3 28 ADC 045216 4A8E OPS4 29 SBC 041236 429E OPS4 30 SUB 000226 0096 OPS5 31 AND 000246 00A6 OPS5 32 OR  000266 00B6 OPS5 33 XOR 000256 00AE OPS5 34 CP 000276 00BE OPS5 35 INC 021464 2334  OPS6 36 DEC 025465 2B35 OPS6 37 RLC 003313 06CB OPS7 38 RL 013313 16CB OPS7 39 RRC  Z80.opcodes Machine has low order byte first. MNEMONIC OPCODE TYPE Octal Hex  007313 0ECB OPS7 40 RR 017313 1ECB OPS7 41 SLA 023313 26CB OPS7 42 SRA 027313 2ECB 1 R 000117 004F DEFIR 2 I 000107 0047 DEFIR 3 POP 000341 00E1 OPS1 4 PUSH 000 OPS7 43 SRL 037313 3ECB OPS7 44 BIT 043313 46CB OPS8 45 SET 143313 C6CB OPS8 46 RE? 66641 EDA1 OPS18 74 CPIR 166661 EDB1 OPS18 75 CPD 166651 EDA9 OPS18 76 CPDR 166671 EDB9 OPS18 77 NEG 166504 ED44 OPS18 78 RLD 166557 ED6F OPS18 79 RRD 166547 ED67 OPS18 80 RETI  166515 ED4D OPS18 81 RETN 166505 ED45 OPS18 82 INI 166642 EDA2 OPS18 83 INIR 166662 EDB2 PROGRAM readopfile(input, output);   TYPE  strtype = PACKED ARRAY [0..5] OF char; "casetype = (binary_type, octal_type, hOPS18 84 IND 166652 EDAA OPS18 85 INDR 166672 EDBA OPS18 86 OUTI 166643 EDA3 OPS18 87 OTIR ex_type, integer_type); "wordvarient = RECORD &CASE casetype OF (binary_type : (binary : PACKED ARRAY [0..15] OF 0..1); (oc 47 JP 141751 C3E9 OPS9 48 DJNZ 000020 0010 OPS10 49 JR 000000 0000 OPS11 50 CALL 1 166663 EDB3 OPS18 88 OUTD 166653 EDAB OPS18 89 OTDR 166673 EDBB OPS18 90 LD 000000 000042315 C4CD OPS12 51 IN 166733 EDDB OPS13 52 OUT 166723 EDD3 OPS14 53 EXX 000331 00D9 OPS OPS19 15 54 DAA 000047 0027 OPS15 MNEMONIC OPCODE TYPE Octal Hex 55 CPL 000057 002F OPS15 56 CCF 000077 003F OPS15 57 SCF 000067 0037 OPS15 58 NOP 000000 0000 OPS15O^ 59 HALT 000166 0076 OPS15 60 DI 000363 00F3 OPS15 61 EI 000373 00FB OPS15 62 RLCA Ӡt000007 0007 OPS15 63 RLA 000027 0017 OPS15 64 RRCA 000017 000F OPS15 65 RRA 000037 001F OPS15 66 RET 140311 C0C9 OPS20 67 IM 000355 00ED OPS16 68 RST 000307 00C7 OPS17 69 LDI  166640 EDA0 OPS18  70 LDIR 166660 EDB0 OPS18 71 LDD 166650 EDA8 OPS18 72 LDDR 166670 EDB8 OPS18 73 CPI 1@ "lineperpage, "linecount : integer; "   PROCEDURE cnvrtatrib(atribvalue:atributetype; VAR atribstring:string);   BEGIng := 'UNKNOWN'; $macros : atribstring := 'MACROS' $END  END; "   PROCEDURE intgr2oct(intgrword : integer; VAR octal_stN "CASE atribvalue OF $defabs : atribstring := 'DEFABS'; $procs : atribstring := ' PROCS'; $ops1 : atribstring := 'ring : strtype);   VAR "word : wordvarient; "i, temp : integer; "  BEGIN WITH word DO $BEGIN &integr := intgrword; OPS1'; $ops2 : atribstring := ' OPS2'; $ops3 : atribstring := ' OPS3'; $ops4 : atribstring := ' OPS4'; $ops  {$R-} &octal_string[0] := chr(binary[15] + 48); &FOR i := 1 to 5 DO *octal_string[i] := chr(octal[5-i] + 48)  {$R+} 5 : atribstring := ' OPS5'; $ops6 : atribstring := ' OPS6'; $ops7 : atribstring := ' OPS7'; $ops8 : atribs$END; {with}  END; { intgr2oct }    PROCEDURE intgr2hex(intgrword : INTEGER; VAR hex_string : strtype);   VAtring := ' OPS8'; $ops9 : atribstring := ' OPS9'; $ops10 : atribstring := ' OPS10'; $ops11 : atribstring := ' OPSR "word : wordvarient; "j : INTEGER;   BEGIN "hex_string[0] := ' '; "hex_string[1] := ' '; "WITH word DO  BEGIN 11'; $ops12 : atribstring := ' OPS12'; $ops13 : atribstring := ' OPS13'; $ops14 : atribstring := ' OPS14'; $ops15  integr := intgrword;  {$R-} &FOR j := 2 TO 5 DO (IF hex[5-j] IN [0..9] *THEN ,hex_string[j] := CHR(hex[5-j] + 48)  : atribstring := ' OPS15'; $ops16 : atribstring := ' OPS16'; $ops17 : atribstring := ' OPS17'; $ops18 : atribstrin*ELSE ,hex_string[j] := CHR(hex[5-j] + 55)  {$R+} $END {WITH}  END;    BEGIN {readopfile} "write('Machine -- '); readtal_type : (octal : PACKED ARRAY [0..4] OF 0..7); (hex_type : (hex : PACKED ARRAY [0..3] OF 0..15); (integer_type : g := ' OPS18'; $ops19 : atribstring := ' OPS19'; $ops20 : atribstring := ' OPS20'; (integr : integer) $END; { varient record }  atributetype = (defabs, procs, ops1, ops2, ops3, ops4, ops5, ops6, ops7,$defrp : atribstring := ' DEFRP'; $defreg : atribstring := 'DEFREG'; $defcc : atribstring := ' DEFCC'; $defir : a 2ops8, ops9, ops10, ops11, ops12, ops13, ops14, ops15, 2ops16, ops17, ops18, ops19, ops20, defrp, defreg, defcc, 2defir, deftribstring := ' DEFIR'; $defpc : atribstring := ' DEFPC'; $defdp : atribstring := ' DEFDP'; $defunknown : atribstring :pc, defdp, defunknown, interps, publics, consts, 2privates, refs, defs, funcs, abs, labels, unknown, macros); "oprec = RECORD = 'DEFUNKNOWN'; $interps : atribstring := 'INTERPS'; $publics : atribstring := 'PUBLICS'; $consts : atribstring := 'CONST&opname : PACKED ARRAY [0..7] OF char; &opcode : integer; &opatrib : atributetype; $END;   VAR "opfile : FILE OF S'; $privates : atribstring := 'PRIVATES'; $refs : atribstring := ' REFS'; $defs : atribstring := ' DEFS'; $funcs oprec; "printid : text; "hexstring, "octstring : strtype; "atribstring, "infilename, "outfilename : string;  : atribstring := ' FUNCS'; $abs : atribstring := ' ABS'; $labels : atribstring := 'LABELS'; $unknown : atribstriA - '); readln(outfilename); "rewrite(printid, outfilename); "writeln(printid, ' ':12,infilename); "IF opfile^.opcode=1 ٹצDEFABSPצ PROCSPצ OPS1Pצ OPS2Pצ OPS3Pצ OPS4Pצ OPS5Pצ OPS6Pצ OPS7P" THEN writeln(printid, 'Machine has low order byte first.') " ELSE writeln(printid, 'Machine has high order byte first.'); צ OPS8Pצ OPS9Pצ OPS10Pצ OPS11Pצ OPS12Pצ OPS13Pצ OPS14Pצ OPS15Pצ OPS16P"GET(opfile); "linecount := 1; "REPEAT $writeln(printid); writeln(printid); writeln(printid); $writeln(printid, ' ':4, 'MNEצ OPS17Pצ OPS18Pצ OPS19Pצ OPS20Pצ DEFRPPצDEFREGPצ DEFCCPצ DEFIRPצ DEFPCPצMONIC':10, 'OPCODE':12, 'TYPE':9); $writeln(printid, ' ':16,'Octal','Hex':7); $lineperpage := 1; $REPEAT &WITH opfile^ DO ( DEFDPPצ DEFUNKNOWNPצINTERPSPئPUBLICSתPצCONSTSPצPRIVATESPצ REFSPצ DEFSPצ FUNCSBEGIN *intgr2oct(opcode, octstring); *intgr2hex(opcode, hexstring); *cnvrtatrib(opatrib,atribstring); *writeln(printid, linePצ ABSPצLABELSPuצUNKNOWNPfئMACROSתPX'PA5)ui]QE9-! count:4, ' ':2, opname:8, 2octstring:8, hexstring:6, ' ', atribstring); (END; {with} &get(opfile); &lineperpage := linepe}qd\ 0ȡܕ0  :  ȡ5rpage + 1; &linecount := linecount + 1; $UNTIL eof(opfile) OR (opfile^.opname[0]=chr(0)) OR (lineperpage>=55); $page(printid)ەە0ە7= \Ɓ5ƂaƁ/Հצ Machine -- P;  UNTIL eof(opfile) OR (opfile^.opname[0]=chr(0));  close(printid,lock)  END.  ̂Ƃ奂PƂצ.opcodesXƂP"ˡẑƂ#4:Ƃ奂SƂ"ˡÔƂצ#5:ƂSƂ"ˡ$File not on lineOutput File -- hP5h5  READOPFI 55á75!Machine has low order byte first.565צ"Machine has high order byte first.5ln(infilename);  {$I-} "infilename := concat(infilename, '.opcodes'); "reset(opfile, infilename); "IF ioresult<>0 THEN $BEG IN $ reset(opfile, concat('#4:', infilename)); " IF ioresult<>0 THEN (BEGIN *reset(opfile, concat('#5:', infilename)); *IF ioresult<>0 THEN ,BEGIN .writeln('File not on line'); .EXIT(readopfile) ,END (END $END; "{$I+} "write('Output File -B 㥁5555 5MNEMONIC 5OPCODE 5TYPE 55 5Octal5צHex5̂婂be5 5 55b5e PROGRAM DOUBLECOLUMN(INPUT,OUTPUT,INFILE,OUTFILE);   {VERSION 1.0 - CREATED 10-May-1980 by Roger E. Anderson   This prog5 55䩂 Í7č5  Í5Ɓ5ram is designed to read a text file and output to another file  or printer in a double column format. It is designed to be fleexPVhine has low order byte first.565צ"Machine has high order byte first.5xible in  format so the user can produce his desired results. It is interactive  so the initial conditions can be readily e㥁5555 5MNEMONIC 5OPCODE 5TYPE 55 5Ontered, but does have default  values so the uninitiated can produce preliminary results. A zero  reply will signal thectal5צHex5̂婂be5 5 55b5e program to use the default values. It also  contains the option of single or double spacing, and the option to have  th1 \+O^e last page have equal sized columns or one full column and a partial  column. It also contains an optional PAUSE feature to wait between  pages to allow the user to insert individual pages of paper in the event  that continuous forms are not available. The file to be formatted is  assumed to be on the system floppy disc, but the program will look for  it on all disc drives on the system.}    CONST #SPC = 32; #DLE = 16; #PAGE_LNGTH = 66; #TITLE_LINES = 0; #L_LMRGN_DEF = 5; #R_LMRGN_DEF = 35; #L_RMRGN_DEF = 45; #R_RMRGN_DEF = 75; #BALNCEDCOL = FALSE;    VAR  OUTFILE,INFILE : TEXT; #LINEBUF : STRING[90]; #INNAME,OUTNAME : STRING[15]; #L_LCOL_MRGN, R_LCOL_MRGN, #L_RCOL_MRGN, R_RCOL_MRGN, #LINEINDEX, LINENUMB, #COLSIZE, LINELENGTH, #TEMPVALUE, LINESPERPAGE, #TITLLINE, COLVALUE, #LINEVALUE, PAGC EMPVALUE := 0; #READLN(TEMPVALUE); #IF TEMPVALUE>0 # THEN L_LCOL_MRGN := TEMPVALUE &ELSE L_LCOL_MRGN := L_LMRGN_DEF;  e default is zero. Lines desired : '); #TEMPVALUE := 0; #READLN(TEMPVALUE); #IF TEMPVALUE>0 &THEN TITLLINE := TEMPVALUE &EL WRITE('What column do you wish for the right margin of the left column : '); #TEMPVALUE := 0; #READLN(TEMPVALUE); SE TITLLINE := TITLE_LINES; #CH := ' '; #WHILE NOT (CH IN ['S','s','D','d']) DO &BEGIN )WRITELN('Do you wish single or doubl#IF (TEMPVALUE>0) AND (TEMPVALUE0 )THEN R_LCOL_MRGN := TEMPVALUE )ELSE R_LCOL_MRGN := R_LMRGN_DEF;  WRITE('WhD, #DOING_LEFT_COL, #PAUSE : BOOLEAN;  CH : CHAR;     PROCEDURE WARNING;   BEGIN #Wat column do you wish for the left margin of the right column : '); #TEMPVALUE := 0; #READLN(TEMPVALUE); #IF (TEMPVALUE>0) ANRITELN('This program assumes that the input file has been written with'); #WRITELN('a zero left margin. If not, all new lines D (TEMPVALUE0 ,THEN L_RCOL_MRGN := TEMPVALUE ,ELSE L_RCOL_MRGN := L_RMRGN_DEF; #WRITE(#WRITELN('appear as paragraphs in the double column output. If this'); #WRITELN('is not the intent, the input file shoul'What column do you wish for the right margin of the right column : '); #TEMPVALUE := 0; #READLN(TEMPVALUE); #IF (TEMPVALUE>0d be preprocessed with'); #WRITELN('the screen-oriented editor to adjust the standard left margin'); #WRITELN('to zero.')  E) AND (TEMPVALUE0 ,THEN R_RCOL_MRGN := TEMPVALUE ,ELSE R_RCOL_MRGN := R_RMRGN_DEF; LN('the left and the right columns. However, if you are not sure'); #WRITELN('you may reply with a zero and select the defau COLSIZE := R_LCOL_MRGN - L_LCOL_MRGN + 1  END; {INITLX1}   PROCEDURE INITLZ2;   BEGIN #WRITE('How many lines do yolt value. Be'); #WRITELN('sure to signal the end of the number with a carriage-return.'); #WRITELN('Otherwise, reply with thu wish per page? The default is 66. : '); #TEMPVALUE := 0; #READLN(TEMPVALUE); #IF TEMPVALUE>0 &THEN LINESPERPAGE := TEMPVe column number in decimal.');  WRITELN; #WRITE('What column do you wish for the left margin of the left column : '); #TALUE &ELSE LINESPERPAGE := PAGE_LNGTH; #WRITELN('How many title lines (not separated into columns) do you wish?'); #WRITE('ThD OCEDURE GETLINE; FORWARD;    PROCEDURE SCANLINE (VAR LINE:STRING; VAR LINDEX,LINENUMB:INTEGER; 4COLWIDTH,LINLNGTH:INTEGER;HR(SPC)); )GETLINE; )EXIT(SCANLINE) &END; #IF LINDEX=1 THEN {beginning of new line?} &IF LINE[1]=CH PRESCAN,BALANCED:BOOLEAN);   {This procedure scans LINE starting at LINDEX to pass COLWIDTH characters !to OUTFILE or the R(DLE) THEN {compressed left margin?} )BEGIN ,LINDEX := 3; ,FOR I := 0 TO (ORD(LINE[2])-ORD('0')) DO /SCANOUT(Carray LEFTCOLUMN or RIGHTCOLUMN. If LINE is completely HR(SPC)) )END; #IF (LINE[LINDEX]=' ')AND(COLNUMB=1) {look a column width forward} &THEN LINDEX := LINDEX + 1; #TEMPINDE!scanned, a new line is read from INFILE. If LINDEX is one, the new line !is tested for a compressed left margin and the X := LINDEX + COLWIDTH; #IF TEMPINDEX >= LINLNGTH THEN {enough chars in LINE}  BEGIN )FOR I := LINDEX TO LINapropriate spaces are !emitted. If PRESCAN is true, the characters are written to LEFTCOLUMN, !otherwise the characters aLNGTH DO ,BEGIN /SCANOUT(LINE[I]); /LINDEX := LINDEX + 1 ,END; )IF LINE[LINDEX-1]<>' ' THEN ,BEGIN /SCANOUT(CHR(SPC)); /re written to RIGHTCOLUMN if BALANCED is true !and to OUTFILE if BALANCED is false. When COLWIDTH characters have been !scLINDEX := LINDEX + 1 ,END; )TEMPINDEX := TEMPINDEX - LINLNGTH; )GETLINE;   CH := ' '; #WHILE NOT (CH IN ['Y','y','N','n']) DO &BEGIN )WRITELN('Do you wish to pause between pages?'); )WRITE('Ansanned, the procedure exits with an updated value of LINDEX. Output is !padded with spaces to COLWIDTH characters. The procedwer Y)es or N)o. : '); )READ(CH); )WRITELN &END; #PAUSE := (CH='Y') OR (CH='y'); ure looks for an !EOLN in the input string, or the last space on the input line to terminate !the transfer. If a new line #WRITE('Write the name of the input file : '); #READLN(INNAME); #WRITE('Write the name of the output file : '); #READLN(OUTNis read and starts with spaces, the current !line is padded with spaces to finish the line (new paragraph).} !  VAR  TEMAME); #LINEINDEX := 1; #PAGECOUNT := 0; #TMPLNPPAGE := LINESPERPAGE; #IF TITLLINE>0 THEN LINESPERPAGE := LINESPERPAGE - TITLPINDEX, #I, COLNUMB : INTEGER;    PROCEDURE SCANOUT (CH:CHAR);  #BEGIN &IF PRESCAN )THEN ,BEGIN /LEFTCOLUMN[LINENUMLINE  END; {INITLZ2}    PROCEDURE OPENFILES;   BEGIN {OPENFILES}  {$I-} #RESET(INFILE,INNAME); #IF IORESULT<>0 THEN B,COLNUMB] := CH; /COLNUMB := COLNUMB + 1 ,END )ELSE ,IF BALANCED /THEN 2BEGIN 5RIGHTCOLUMN[LINENUMB,COLNUMB] := CH; &RESET(INFILE,CONCAT('#4:',INNAME)); #IF IORESULT<>0 THEN &RESET(INFILE,CONCAT('#5:',INNAME)); #IF IORESULT<>0 THEN &BEGIN 5COLNUMB := COLNUMB + 1 2END /ELSE 2BEGIN 5WRITE(OUTFILE, CH); 5COLNUMB := COLNUMB + 1 2END #END;    BEGIN {SCANLIN)WRITELN(INNAME,' NOT ON LINE.'); )EXIT(DOUBLECOLUMN) &END;  {$I+} #REWRITE(OUTFILE,OUTNAME)  END; {OPENFILES}    PRE} #COLNUMB := 1; #IF LINLNGTH=0 THEN {blank line?} &BEGIN )FOR I := LINDEX TO COLWIDTH DO ,SCANOUT(CE 1) AND (LINE[TEMPINDEX]<>' ') DO {look for terminator} /TEMPINDEX := TEMPINDEX - 1; ,IF (COLNUMB' '))) THEN /FOR I := LINDEX TO TEMPINDEX DO 2BEGIN 5SCANOUT(LINE[I]); {output valid characters} /WRITELN(OUTFILE); /IF DOUBLESPACE THEN WRITELN(OUTFILE); /LINENUMB := LINENUMB + 1 ,END; )IF PAUSE THEN ,BEGIN /WRITELN(5LINDEX := LINDEX + 1 2END; ,IF COLNUMB when completed.'); /READ(CH) ,END &END;  END; {SCANPAGE}  HR(SPC)) )END  END; {SCANLINE}    PROCEDURE SCANPAGE;    PROCEDURE GETLINE;   BEGIN  {$I-} #READLN(INFILE,LINEBUF); #IF IORESULT<>0 THEN EXIT(SCANPAGE);  {$I+} #LINELENGTH  {This procedure outpus the characters in column format, first scanning a !page of LEFTCOLUMN, then generating lines of RIGHTC:= LENGTH(LINEBUF);  LINEINDEX := 1  END;    BEGIN {MAIN} #WARNING; {warn about left OLUMN and outputting !full lines to OUTFILE, padded with spaces to maintain the left and !center margins. It calls SCANLINE tmargins} #INITLZ1; {interactive initialization} #INITLZ2; {into get the appropriate characters !for each line, and terminates when INFILE has been read.} !  BEGIN #WHILE NOT EOF(INFILE) eractive initialization} #OPENFILES; {find and open input and output} DO {now start the actual work} &BEGIN )PAGECOUNT := PAGECOUNT + 1; )IF PAGECOUNT>1 THEN LINESPERPAGE := TMPLN#GETLINE; {pick up the first line, increment MLINENUMB, reset LINEINDEX, Mdetermine LINELENGTPPAGE; {compensate for title} )DOING_LEFT_COL := TRUE; )LINENUMB := 1; )FOR I := 1 TO LINESPERPAGE DO {preliminary scanH} #FOR I := 1 TO TITLLINE DO {copy title without columnizing} &BEGIN )WRITELN(OUTFILE,LINEBUF); )GETLINE; &)IF LINE[1]=CHR(DLE) THEN {new paragraph} ,BEGIN /FOR I := LINDEX TO COLWIDTH DO 2SCANOUT(CHR(SPC)); /LINDEX := 1 for left column} +BEGIN -SCANLINE(LINEBUF,LINEINDEX,LINENUMB,COLSIZE,LINELENGTH,TRUE,FALSE); ) LINENUMB := LINENUMB + 1; ; /EXIT(SCANLINE) ,END; )IF COLNUMB>=COLWIDTH THEN {were any chars taken from LINE?} ,BEGIN /LINDEX := 1; /EXIT(S+END; +Writeln('finished left COLUMN. PAGECOUNT = ',PAGECOUNT,LINENUMB:4); )LINENUMB := 1; )DOING_LEFT_COL := FALSE; )FOR ICANLINE) ,END; )LINDEX := 1; &END; #IF LINE[TEMPINDEX + 1]=' ' &THEN )BEGIN ,FOR I := LINDEX TO COLWIDTH DO /BEGIN 2SCA := 1 TO LINESPERPAGE DO {real scan for output} ,BEGIN /FOR J := 1 TO L_LCOL_MRGN DO NOUT(LINE[I]); {finish the line} 2LINDEX := LINDEX + 1 /END; ,EXIT(SCANLINE) )END &ELSE )BEGIN ,WHILE (TEMPINDEX> WRITE(OUTFILE,' '); /FOR COLVALUE := 1 TO COLSIZE DO 2WRITE(OUTFILE,LEFTCOLUMN[LINENUMB,COLVALUE]); /FOR F  {EOF reached, now cleanup} /THEN 2BEGIN 5FOR I := 1 TO LINENUMB DO 8BEGIN ;FOR J := 1 TO L_LCOL_MRGN DO >WRITE(OړGáu   ׯ  ȡ  .UTFILE,' '); ;FOR J := 1 TO COLSIZE DO >WRITELN(OUTFILE,LEFTCOLUMN[I,J]) 8END 2END /ELSE 2BEGIN 5FOR I := LINENUMB TO LIN  ړ ڡeG  SIZE: צ, START:ESPERPAGE DO 8BEGIN ;FOR J := 1 TO L_LCOL_MRGN DO >WRITE(OUTFILE,' '); ;FOR J := 1 TO COLSIZE DO >WRITELN(OUTFILE,LEFTCOLUM @o& :%Enter title of wanted RT11 text file:PšZ.ץN[I,J]) 8END 2END )END &ELSE )BEGIN )END  END.  ˡȡצ P ר C  Enter title of output Text file:PšצEnter unit # of Pascal disk : #4:V RT11TOTE SPצ#5:SP#9:SPצ#10:TP^צ#11: TP<צ#12:TP  zZ:j (Transfer Option? B(inary R(t11 edit :س@ BáRá X *Place Pasca;COPYRIGHT (C) 1979, REGENTS OF THE UNIVERSITY OF CALIFORNIAl disk in drive then Type "á Enter title of output Text file:Pۡ (ۡ*(3 ġ((((ȡ;á ȡšj צ(Transfer Option? B(inary R(t11 edit :س Bá@ġ ٿB  ( @ Dz?$ TITLE SIZE STARTRá * 2jnn T, n n jnGˡGá[ ׷ .ȡnȡn á#n Ǭš Pޡ= áEND; #SCANPAGE; {now do the real work} #IF NOT BALANCED &THEN )BEGIN ,IF DOING_LEFT_COL   צ   @ GG (Are you using a standard RT11 disk[Y,N]? צ,Are you using a Single floppy drive machine? تo צNULצSOHצSTXצETXצEOTצENQצACKצBELצBSHTצLFVצAPlace RT11 disk in drive, indicate unit number [4-12], then (C/R) ATצFFCRצSOSIצDLEצDC1צDC2צDC3צDC4צNAKצSYNצETBצCANצEMSUBESC/nn ؂nݿnݿ j% š !Eצ RT-11.DIRPE0"ÄˡġDisplay the directory? (y/n) o) n( n צ'Place RT11 Disk In Drive and Type  ġ nZ"  E   צ)Place Pascal Disk In Drive and Type   ȡn(w (Put system disk in drive, then type [Y]: Q3The RT11 directory on the Pascal disk was náo)  P= á/o)o) ؂ o)߿o)߿jnot foundƯjZ!_Z X h $ dv Ajo݂ˡ6 THERE WAS AN ERROR IN TRANSFER!!ݡjn !Eצ RT-11.DIRPE0"ÄˡġDisplay the directory? (y/n) j_ H2 šצ'Place RT11 Disk in Drive and Type  ġZ"  E    nצ)Place Pascal Disk in Drive and Type  jn(Put system disk in drive, then type [Y]: Q3The RT11 directory on the Pascal disk was nڂˡ6 THERE WAS AN ERROR IN TRANSFER!! j G& 4 ȡn   PASCALSYSETUP NUMBER2 NUMBER3 NUMBER4 NUMBER5 NUMBER6 NUMBER7 jnˡJצ OUTPUT ERROR, program terminatedj NUMBER8 NUMBER9 INITS TEACHSET  تP!-̄/+.-ʄ/m.-á̄/--,+̄1,ʄ1ȡ%,.-ˡ̄/--,, II0D1 Copyright(c)1979 Regents of the University of California, San DiegoF YOURʄ/ -+- -+--š---.-.-` ƯjưՁצH RACTER]/PREFIXED[KEY FOR STOP]/צPREFIXED[KEY FOR BREAK]/צPREFIXED[KEY FOR FLUSH]/צPREFIXED[KEY TO END FILE] NEW.MISCINFOצ(ON YOUR DISK. THE NAME OF THIS FILE MUSTBE CHANGED USING THE FILER TO: ׮ SYSTEM.MISCI/ צPREFIXED[EDITOR ESCAPE KEY]/ צPREFIXED[KEY TO DELETE LINE]/ !PREFIXED[KEY TO DELETE CHARACTER]/ PREFIXED[EDITNFO׮צ&IN ORDER FOR THE CHANGES YOU HAVE MADETO BE LOADED AT BOOTSTRAP TIME.׮T צ"ALL NON-PRINTING CHARACTEOR ACCEPT KEY]/ Oצ SCREEN HEIGHT%צ SCREEN WIDTH&LEAD IN TO SCREENMOVE CURSOR HOMRS EXCEPT&CARRIAGE RETURN (CR) WILL ECHO AS "?".׮צ&THE INPUT ABORT CHARACTER, "*", CAN BE(!צ&TYPED IN RESPONSEEצERASE TO END OF SCREEN ERASE TO END OF LINE צMOVE CURSOR RIGHT!צMOVE CURSOR UP! BACKSPACE" ERA TO MOST REQUESTS FOR"INPUT AND WILL ESCAPE YOU FROM THE׮צ(SEQUENCE WHICH ASKED THE QUESTION, E.G.,(WHEN CHANGING A VSE LINE#צ ERASE SCREEN#KEY TO MOVE CURSOR UP'KEY TO MOVE CURSOR DOWN'KEY TO MOVE CURSOR LEFT(KEY TO ALUE, TYPING "*" TO THEת( !"PROMPT "NEW VALUE" WILL ESCAPE THE׮צ"CHANGE WITHOUT ALTERING THE VALUE.Y*FSצGSRSצUSSPتP+ +(++!T&ڪP. (á  WMOVE CURSOR RIGHT(צKEY TO END FILE)צ KEY FOR FLUSH)צ KEY FOR BREAK*צ KEY FOR STOP*NON PRINTING CHARACTERW--̀ƀצENTER ƀVƀ/̀ʀPʀʀٚʀؚʀʀʀʀW.+צKEY TO DELETE LINE,EDITOR ESCAPE KEY,LEAD IN FROM KEYBOARD-EDITOR ACCEPT KEY-KEY TO DELETE CHARACTW.PتP,+,---ٚ-P-,-V6TFTRUE׮FALSE׮ER+VERTICAL MOVE DELAY"  /ڢתPڢ/ + +צ +צ L@æINI HAS CLOCK HAS 8510AHAS LOWER CASEצHAS RANDOM CURSOR ADDRESSINGHAS SLOW TERMINALSTUDENTTS ث /ȡ٤٤צ INITIALIZING  TE xVX$\ HAS BYTE FLIPPED MACHINE צHAS WORD ORIENTED MACHINE צPREFIXED[MOVE CURSOR UP]$PREFIXED[MOVE CURSOR RIGHT]$T URSOR RIGHT(צKEY TO END FILE)צ KEY FOR FLUSH)צ KEY FOR BREAK*צ KEY FOR STOP*NON PRINTING CHARACTERPREFIXED[ERASE TO END OF LINE]$צ PREFIXED[ERASE TO END OF SCREEN]$PREFIXED[MOVE CURSOR HOME]$צPREFIXED[DELETE CتPR צ'IF YOU HAVE A VIDEO TERMINAL AND EXPECTצ&TO USE THE SCREENHARACTER]$PREFIXED[ERASE SCREEN]$צPREFIXED[ERASE LINE]$"PREFIXED[KEY TO MOVE CURSOR RIGHT]/צ!PREFIXED[KEY TO ORIENTED EDITOR, THE%CHANGES SETUP CAN MAKE WILL BE NOT BE׮'SUFFICIENT. YOU WILL ALSO HAVE TO BIND׮(IN THE PROCEDURE  MOVE CURSOR LEFT]/צPREFIXED[KEY TO MOVE CURSOR UP]/צ!PREFIXED[KEY TO MOVE CURSOR DOWN]/צ PREFIXED[NON PRINTING CHAGOTOXY IN THE OPERATING׮צ(SYSTEM. SEE SECTION 4.7 OF THE DOCUMENT.Eצ#NOTE: DISK UPDATES CREATE THE FILE:צI BE UNDERSTOOD AS THE STRING׮צ& "CHARACTER". WHEN YOU ACCESS A FIELD,$YOU WILL BE SHOWN ITS CURRENT VALUE.׮צ&NUMBERS A  aA!áHڦתP /ۄ >RE GIVEN IN OCTAL, DECIMAL OR'HEXADECIMAL RADIX, CHARACTERS ARE GIVEN׮&AS THEIR ASCII VALUE AS NUMBERS AND AS׮צ#THEIR A<áצPצ<>/áQšHۓ<?PSCII MNEMONIC. BOOLEANS AREצ(EITHER TRUE OR FALSE. ENTER NUMBERS, OR(CHARACTERS AS THEIR ASCII NUMERIC VALUE,׮צACCOR  ?PɡPצ#QP꿹!áá$T (DING TO THE FORMAT:!->O-{OCTAL}-!׮צ! !'--DEFAULT----!----------->DIGIT--->(CR)׮"! ! ! ڪPP-תP---<. LتP  ˡ-ڕ ! ! !׮צ"!->H-{HEX}---! !->(-)-! !-DIGIT<-!! !׮צ!->D{DECIMAL}!Rצ$THE DEFAULT RADIX ڂ6NƁ.`צ QUIT: D(ISK) OR M(EMORY) UPDATE,צ R(ETURN) H(ELP) E(XIT) STARTS AS DECIMAL.$NON-PRINTING CHARACTERS MAY BE INPUT׮צ'BY TYPING THE KEY WHICH GENERATES THEIRצ&VALUE (FOLLOWED BY  *NEW.MISCINFO٥`_/_́ʁȡ__'D(ISK) UPDATE PUTS CR) OR, IF THERE IS%AN ASCII MNEMONIC FOR THAT CHARACTER,׮&JUST TYPE IT IN (AND CR). BOOLEANS ARE׮צ!INPUT BY TYPING "TRTHE CURRENT SETUP ONצ$ DISK AS THE FILE "NEW.MISCINFO"צ! WHICH MUST BE CHANGED IN THEUE" OR "FALSE"צ (AND CR). FOR MORE INFORMATION,$PLEASE SEE THE SYSTEM DOCUMENTATION.׮z צ"HINTS ON DEALING WI FILER TO "SYSTEM.MISCINFO"צ$M(EMORY) UPDATE CHANGES THE SETUP INצ! MEMORY UNTIL Tצ%THE LINE DELETE CHARACTER, "*" ALLOWS(<(YOU TO DELETE A RESPONSE YOU GAVE IF YOU׮צ'HAVE NOT YET TYPED CR. CR TH BACKSPACING:'THE 'KEY TO DELETE CHARACTER' SHOULD BE׮(SET TO THE KEY YOU WISH TO TYPE TO CAUSE׮צA BACKSPACE. THE 'WILL BE SENTצ'TO THE TERMINAL AND YOU WILL BE ABLE TOצ'START OVER ON A NEW LINE. THE BACKSPACEצ(CHARACTER, "*" WILL DBACKSPACE'צ(CHARACTER WILL BE ECHOED TO THE TERMINAL"WHEN THE 'KEY TO DELETE CHARACTER'׮צ IS TYPED.  ELETE YOUR RESPONSE( /צ%TO A QUESTION CHARACTER BY CHARACTER,צ(ECHOING EACH CHARACTER AS IT IS DELETED.%THE ECH .d< L d  OR THAT CHARACTER,׮&JUST TYPE IT IN (AND CR). BOOLEANS ARE׮צ!INPUT BY TYPING "TROED DELETED CHARACTERS WILL BE׮(ENCLOSED IN ANGLE BRACKETS. FOR EXAMPLE,׮צ!TYPING THE SEQUENCE OF CHARACTERSCHARAتPٓצ BUG LOCATION צ'PLEASE WRITE DOWN THIS LOCATION AND ANY&SUPPORTING DETAILS YOQF// CTER 84צ$WILL ECHO ON THE SCREEN THE SEQUENCECHARAQFCTER׮$AND WILL U CAN, AND REPORT$IT TO THE UCSD SUPPORT STAFF AT YOUREARLIEST CONVENIENCERJ  C(ONTINUE) Q(UIT)CUN Vצ OCTAL DECIMAL HEXADE GENERATEצ%THE VALUE YOU WANT, JUST TYPE THE KEY&AND THEN TYPE CARRIAGE RETURN, OR TYPECIMALء.ǀɡצ ASCII ɡ CONTROLɡ 1) ń ġ$THE ASCII MNEMONIC FOR THE CHARACTER C(ONTINUE)Cá &  쓡jWANT TO CHANGE THIS    ń ġ= ɡ  VALUE? (Y,N,!)YE@썡p | Gצ NOW OCTALL A ء!ɡ&o! o!DáצDEL (ٳ? NOW DECIMAL5צNOW HEXADECIMALO> 3l: O(CT) D(EC) H(EX) Q(UIT)  ɡ^@ ?b צ NEW VALUE: ܄/ 'DO 5썡 ȄBo!! o!  DELׯ !˄Ȅᚹġ _'Dɡ_ؑȡ#_ F 0  ( DO 6-á = *hȡ  (á 2C / ~D5 -á1 FFȡ  쓄 쓡 N썡쓡ۮ46X r˦ SHOWSCALARˡ˦ SHOWSCALARCURRE ߡ 0 A  ₚ ȡ00 NT VALUE IS ٢L lALLOWED VALUES ARE:צSHOWALLآáA  ōޡĄȄ  "INPUT VALUES IN THE DECIMAL RANGE+ \ڪP.P.....O T : Tצ NEW VALUE: .: ..  IN THE FORMAT BELOW:צ!->O-{OCTAL}-!צ! !썓!צ NEW VALUE:  썡׷خeJT |á á $NAME HE NEXT SYSTEM INITIALIZATIONצ"R(ETURN) TAKES YOU BACK INTO SETUPצ IF YOU'Rצ'--DEFAULT----!----------->DIGIT--->(CR)"! ! ! ! ! !"!->H-{HEXE NOT DONEE(XIT) TERMINATES THIS PROGRAM"DMC ,R썡E07}---! !->(-)-! !-DIGIT<-!! !!->D{DECIMAL}!ڡצ OR IF YOUR KEYBOARD CANK INFORMATION' THE SYSTEM HAS ABOUT YOUR HARDWAREצ CONFIGURATIONOF FIELD: [쓄Hצ DIDN'T FIND NAME OF FIELD: 쓡]Rצ$T(EACH) TEACHES YOU HOW TO USE SETUPצ&Q(UIT) ALLOWS YOU TO MAKE YOUR CHANGESצ( PERMANENT AN쓄<쓡4 FIELD NAME = آخLצ#CHANGE: S(INGLE) P(ROMPTED) R(ADID TO LEAVE THIS PROGRAM+CT$ | "I5` \4F(  X) H(ELP) Q(UIT)צ&S(INGLE) ALLOWS YOU TO EXAMINE 1 VALUE  @,>r4]  (C(HANGE) ALLOWS YOU TO CHANGE OR EXAMINE& THE VAצ BY NAME'P(ROMPTED) TAKES YOU THROUGH ALL FIELDSצ(R(ADIX) ALLOWS YOU TO CHANGE THE ASSUMEDUTFILE,' '); ;FOR J := 1 TO COLSIZE DO >WRITELN(OUTFILE,LEFTCOLUMN[I,J]) 8END 2END /ELSE 2BEGIN 5FOR I := LINENUMB TO LINצ RADIX FROM ;צOCTALDDECIMAL1צ HEXADECIMALYC6 /ESPERPAGE DO 8BEGIN ;FOR J := 1 TO L_LCOL_MRGN DO >WRITE(OUTFILE,' '); ;FOR J := 1 TO COLSIZE DO >WRITELN(OUTFILE,LEFTCOLUM TO EITHER ^DECIMAL OR HEXADECIMALVOCTAL OR HEXADECIMAL6OCTAL OR DECIMAN[I,J]) 8END 2END )END &ELSE )BEGIN )END  END.  LIfH 4 HS   Qá ,   צ"SETUP: C(HANGE T(EACH H(ELP Q(UIT צ[D1]  (C(HANGE) ALLOWS YOU TO CHANGE OR EXAMINE& THE VARIOUS PIECES OF INFORMATION' THE SYSTEM HAS ABOUT YOUR HARDWAREצ CONFIGURATIONצ$T(EACH) TEACHES YOU HOW TO USE SETUPצ&Q(UIT) ALLOWS YOU TO MAKE YOUR CHANGESצ( PERMANENT AND TO LEAVE THIS PROGRAM+CT$ | "I5` \4F(    @,>r4]  (C(HANGE) ALLOWS YOU TO CHANGE OR EXAMINE& THE VAL