IMD 1.06: 20/10/2005 13:52:06 STRIDE MICRO SGUTIL IV.21 DK0135B October 15, 1985 Stride Sage Machines VXUNITREA XUNITREA[IV a.0]U .p $_A*1_1_ 1_1_Bh>Cx!I0NN>NRp $_A*1_1_ 1_1_Bh>Cx!I0NN>N0  RPSGUTIL- xEA DK0135A  INTERP.0.CODEh6 INTERP.2.CODEh6LINTERP.HF2.CODEhLcINTERP.HF4.CODEhcpREALOPS.4.CODEp|REALOPS.2.CODE| DUMP.CODE DUMPDIR.CODE RESTORE.CODECOPYDUPDIR.CODEW PRINT.CODE DISKSIZE.CODE REALCONV.CODEȀ ASCII.CODEˀ RECEIVE.CODEр TEXTIN.CODEԀ SEND.CODE؀MARKDUPDIR.CODEW߮ REMTALK.CODEREMINTEST.TEXTREMOUTTEST.TEXTREM.HAYES.CODEREM.VADIC.CODE RECOVER.CODEW TRMDEF.DATAAH MUTRMSET.CODE{HuLIAISON.LIBRARYu SHARE.CODE)DISKSERVER.CODE).PRNTSERVER.CODE).9 SPOOLER.CODE$9RQUICKSTART.CODERv PATCH.CODE<vҲ LIBRARY.CODEuTELE.VADIC.CODETELE.HAYES.CODE UNITS.SVOLNETLIB&REGLIB&5TOPSYS4.2.CODE5pSAGETOOLS.CODEptMU4.FBOOT.CODE{t INTERP.4.CODEh MU.CONFIG4Modula:(RegOp:Conf_OpSystem); 4CPM:(CPMOp:ARRAY[0..15] OF MU_CPMOs); 2END; 0 "MU_Task = PACKED RECORD 2BaseH:INTEGER; 2BaseL:INTEGER; 0 TopH:INTEGER; 2TopL:INTEGER; 0 StackH:INTEGER; 2StackL:INTEGER; 0 Slice:INTEGER; 2Priority:0..255; 2BootDevice:0..255;  RPSGUTIL- xEA DK0135A  INTERP.0.CODEh6 INTERP.2.CODEh6LINTERP.HF2.CODEhLcINTERP.HF4.CODEhcpREALOPS.4.CODEp|REALOPS.2.CODE| DUMP.CODE DUMPDIR.CODE RESTORE.CODECOPYDUPDIR.CODEW PRINT.CODE DISKSIZE.CODE REALCONV.CODEȀ ASCII.CODEˀ RECEIVE.CODEр TEXTIN.CODEԀ SEND.CODE؀MARKDUPDIR.CODEW߮ REMTALK.CODEREMINTEST.TEXTREMOUTTEST.TEXTREM.HAYES.CODEREM.VADIC.CODE RECOVER.CODEW TRMDEF.DATAAH MUTRMSET.CODE{HuLIAISON.LIBRARYu SHARE.CODE)DISKSERVER.CODE).PRNTSERVER.CODE).9 SPOOLER.CODE$9RQUICKSTART.CODERv PATCH.CODE<vҲ LIBRARY.CODEuTELE.VADIC.CODETELE.HAYES.CODE UNITS.SVOLNETLIB&REGLIB&5TOPSYS4.2.CODE5pSAGETOOLS.CODEptMU4.FBOOT.CODE{t INTERP.4.CODEh MU.CONFIG1..8] OF INTEGER; 0END;  "MU_Floppy = PACKED RECORD 0 Excl:MU_Excl; 0 Fconfig:Conf_Floppy 0END; . "MU_RamDisk = PACKED RECORD / Excl:MU_Excl; 0 Rconfig:Conf_RamDisk; 0END; / "MU_Parallel = PACKED RECORD 0 Excl:MU_Excl; 0 BufferSize:INTEGER; 2Pconfig:Conf_Printer; 0END; 0 "MU_WinDCB = PACKED RECORD 1Excl:MU_Excl; 1Dummy1:0..255; 1SubDevice:0..255; /END; / "MU_TermEmul= PACKED RECORD 1Unused: 0..255; { These fields are reversed by the } N#Z`(` ``\`lN NCopr 1981 Tallgrass Technologies, 1982 SofTech Microsystems,Copyright 1985 L5 Computingp@>;Np &,28>DJPV\bhntz "(.djpv| 4:@FLRX^T\dlt| J^ @ f n  rJ:  * * , "  Z `6v  4 6 4 >   0  08(LT N l R,L^& H N  ( z < R : R VVb p`,p`(p`$p` p`p `p `p `p ` p`a^|~B?Lpa p` X=G` NO'L=G=|=kA*LSN aNNf/ЂЀt4+46(ЂЎQb Nu =@=kO=|`>+=x A=x L=x=xxx kNu>+"_vxvx7vx<6x(F<6x Ah<6xOh/ >+<6xCh7vx<6x>6h<6h$NJGg*6xg$EHNu*Jg:6XSfNuRn*>+>6x=*xNu:|*kBNu+f Jf KNu fHz'_NufDN fnKNN/ Ga&_Nu @bH>;Npp?N?<N?<N?<N?<N?<N?<N?<N?<N?< N?< N?< N?< N?< N?<N?<N?<N?<N?<N?<N?<N?<N?<N?<N?<N?<N?<N?<N?<N?<N?<N?<N?( N?( N?(N?(N?(N?(N?(N?(N?(N?(N?(N?( N?("N?($N?(&N?((N1_ N1_ N1_N1_N1_N1_N1_N1_N?) N?) N?)N?)N?)N?)N?)N?)N?)N?)N?)N?) N?)"N?)$N?)&N?)(Np Ј?Np Ј?NpЈ?NpЈ?NpЈ?NpЈ?NpЈ?NpЈ?N*:6X:6XpjH@@?6XN*:6XpjH@@?6XN>>xN>>xN>>xN>>xN>>xN>>x N>>x N>>xN'Lp` 'Lp` 'Lp` 'Lp` 'Lp` 'Lp` 'Lp` 'Lp` p?N?NpjHj@?NpjH@?0NpjH@ЈP@?NpjH@1NpjH@?1NpjH@ЉP@?NpjH@3N*p`:6XQpjH@@?6XN*p`:6XQpjH@@PE?N*p`:6XQpjH@@=XNp@k>6>6xpjH@@?6xNp@k>6>6xpjH@@PG?Np@k>6>6xpjH@@=xNpjH@W>N0>=xN'LzjMprtaj@ES@&AX fJ* g `Q CN? Q CN'Lprta>@@*AxS@? Q ENp2SA@*>7Ax0QT EN N0>6g<6x86hg<>6hg*6xg E<>6pjH>CxS@2QLNNO?` N0>6g<6x86hg>6hg*6xg E<>6pb>CxH2QLN`Pv `v`v(* "NJg"J> NJg J>tcSBk Vf D"EN0gBWNd BWNcBWN>N0>/S@r6xAdN`(* > NJg Jpb>CxH2Q D"EN`>Wr6x>N0>_xN02A<46hj{>N??LB<66hkC{ kvhN(* > Ng J>CxpjHS@ fJ* gQ D"EN2Q D"ENpjH@WNpjH2g @gAWNrt4BW?HB?N H@.N?N:k6>+(Ax 0 1\ 00EE?6x DNEE?3PN8:aAJEk>+AxE1PaNpjHN R@(@N(_N0WN0WNFWNFWWNտOb ?<NտOd?<NJWkNDWNRWNSWN0WN0WN0>NJWg0/H>NJWg0/H2H@J@jA>N02WmbWn\NտOf ?<NտOf?<NտOo?<NտOl?<Na&fT>LNacTBWLNad`"NJg"J>/ NJg J>/pjHS@ VNu'Lr> g@nGAACp3 UAf.I`"?rta,T O@"O`2QBYU@fLN'Lp0 @dvHrta2p0kbAb@RA6@C?NBWNHz`H4XQLNHz`24XQp`0QLNHz `4FBXQLN0/@AH2@k"_J_NAC4`VB0 O.I2QBYTAf`a4(BC S@kOVf6SAkJXVf*.I?<LNa4(BC S@k4FBXVg.I?<LNaj4(BC S@k4FB_Vf`HNeRNdRNտOfRNտOgRNHNdTNpjHj@*A2J* g 4ZBm0X@n BA00X ENղhnXmA ENprt(a'MNxaL|~N(6>*@G>2xG02xkrt(a@?+?+? ?? OIx7CH/Nu>+@@>6x7G<6xCh<6xJvhg'J$N>6hg(6xg$D<6hNu*:6Xr`.*:6X:6Xr`r*g:6XSf` * `*rp6>*@G>2xG02xk@ftPԀ<+<6hԆԎb&?+?+? ?? OIx7CHNH'L=@=k`'LpaaRڎ`<'L>/az:/ڎp0aL\H O'H`*p'Lapala0(HЊ1@>+7G7vx>6xRvxN'Lp* @fr A/bA+f>;gR'LNx>;tgR'LNxF"p "N  (ppF"p "N  (p>(kgL*<6xCh<6xJvhg$N>6hg(6xg$D<6hRn*>+>6x=*xSvx7E7vXpjH>(2(jDA>*AG>2xG>2xIx7A@O >(AxHN*g:6XSf?Na*ax7kNa>+>6xJvxfR=k`NH|~Gt,k|>b@zA:0gaLINu|?f<+6h>6hg6xfa7Gr26xg 6f.`=h=x`N 02|@d@A1HJAV? OpNNXN kNz:N JvXoSvX`a=h>6Xan=XaRNNz:N aNNJvXg+a&7G>+6h6xc aNuRvXNu6h$rJBg6(b246(`=hJAg=Nu>Nu~<+kg><6h`JGg=hxNu7vhNuNJnfN>N0o"S@(* >_Cx>_AxQ D"ENPN0o(* >_@Cx>_@AxS@ Q D"EN02oSA>_*AxQ ENXNT>_*AxL6g6mSBJAf WRB`$VRB`RFBJAf WFB` VFBB> EN> 6x"6x<>4xfxfBW=hNk>6xf>=hN>6x f>=hN>Ax>Cx>*EprJ3 gkS@mJ3 gk` _g֑UH2J@o S@r QAp|A@>;:g(Ex"$ffgX`P`"LN"LN":^*ZrAND 'ARRAY ,BEGIN CASE CONST DIV 'DO DOWNTO ELSE END EXTERNAL5FOR FILE .FORWARD "FUNCTION GOTO IF IMPLEMEN4IN )INTERFAC3LABEL MOD 'NOT &OF OR (PACKED +PROCEDURPROCESS 8PROGRAM !REPEAT RECORD -SET *SEGMENT !SEPARATE6THEN TO TYPE UNIT 2UNTIL USES 1VAR WHILE WITH **0<> NJGg*6xg E>Cx` 0<>"NJGg*6xg"E>Ax`QLN0<F>>6xvx>6x( NJGg*6xg E` (AQ DNp_gNN&( <> NJGg*6xg E>p06x<6x>6x"NJGg*6xg"EƱgc S@H"Q`@S@H# Q C"DN>p06x>6x<6x>6x NJGg*6xg E>(g@GCx2!YJg2SgSg>!G`IA@>>6x26x4!JBg>!pxSBf`LN>>6x<6x?6hp06x<6x NJFg*6hg E/06x@??6xBgNj>NPTX\   $(, $(,048<048<hlpt@DHLN LNuN LNupE LN >= Nx>= PxLNB @B DB+ H?<a0?<a(?.a Nu H _pr468$_:/?`X H _pr:/?`Dpr`>p4>Exrf,r`(pr`pr468>_Ex`J_BW`J_r`'L: HAJk c.ne(Nxr ` r`r`r Eg|=ALBB HgNuN+ Hg(I n~0ANp`+ Hg(I n~0rJg4S@gS@g`".+ @ 'G @.+ D 'G DACN`rN`lJDgf+fNNJfT.+ @ g ae zb f>.\fJg .+ @ G'G @`.Sf"g<f+ HgSDf`SD f+ Hgz+fNJf  f\fTp +fNJf`:JDgSD.+ D g* 'G DvC op +fhNJfnSCf`f f .+ D 'G D`+f6NJf<  ff f + Jf~p +fNJf `fN"````(````^````D`p`r``>````.`F`B`D`T``````pNNNupNNNuNIrNuNJrNup /A!I"_CR!I!I 0NNrNuDA Ab;NurNu p `p `p XE|cVEA0Bh1D!J1C Bh1BNN2(kNup `p `p `g:<`:<>+ 6xf*a$<+f A"0p NNa` XE|cVEp A01B!JNN2(k8Nur NuNKrNuNLrNu BbNMrNuA0!|Hh!_@1C 1B/p NN `p A0NN2(kNuA0P!|Hh!_@1C 1B/p NN 2(kNuAV0P!|Hh!_1C 1Bp NN(2(kpNuA"0Pp NN2(kXNuA 0P1B!Jp NN2(k8NupNN`ApNNA*pNNrNu + b ^4ApNN5h5PBANuJPfh JNuS@2Y0QNu'K Z7_ h,_'N ^(NrBQB..B./=k h=|=| 2=|6=k8|]=|`4p0.4K@7@p MBXQ:. pNN"4(gc$ނjBp0@f0@$O'J?./ ?0,+KxA'H7H l7k;||B- k b;H;| B-|;|Bm;|;k l"kp0+K0.|I0, @2+ lA@ ;@Bi 3A3A3|3|O O7H7H 7H jp0+K;k?|?|?k?k l?k?k j Bo ?|?| k?H?|Bo?|BoBB p0.|A?h>$0+ fh;Np &,28>DJPV\bhntz "(.djpv| 4:@FLRX^T\dlt| J^ @ f n  rJ:  * * , "  Z `6v  4 6 4 >  #:#D"""" #0 #""" 08(LT N l R,L^& H N "" ( z < R : R VVb ###p`,p`(p`$p` p`p `p `p `p ` p`a^|~B?L$% pa p` X=G` NO'L$=G=|=k%A*L$SN aNN% f/ЂЀt4+%46(ЂЎQb Nu =@=k%O=|`>+%=x A=x L=x=%xx% x k$Nu>+%"_vxvx% 7vx%<6x(F<6x Ah<6xOh/ >+%<6xCh7vx%<6x>6h<6h$NJGg*6xg$EH$Nu*Jg:6XSfNuRn*>+%>6x=*xNu:|% *k$B$% Nu+% f J$f KNu fHz'_$Nu% fDN % fnKNN/ G% a&_Nu @bH>;Np$d$p?N?<N?<N?<N?<N?<N?<N?<N?<N?< N?< N?< N?< N?< N?<N?<N?<N?<N?<N?<N?<N?<N?<N?<N?<N?<N?<N?<N?<N?<N?<N?<N?( N?( N?(N?(N?(N?(N?(N?(N?(N?(N?(N?( N?("N?($N?(&N?((N1_ N1_ N1_N1_N1_N1_N1_N1_N?) N?) N?)N?)N?)N?)N?)N?)N?)N?)N?)N?) N?)"N?)$N?)&N?)(Np Ј?Np Ј?NpЈ?NpЈ?NpЈ?NpЈ?NpЈ?NpЈ?N*:6X:6XpjH@@?6XN*:6XpjH@@?6XN>>xN>>xN>>xN>>xN>>xN>>x N>>x N>>xN'L$p` 'L$p` 'L$p` 'L$p` 'L$p` 'L$p` 'L$p` 'L$p` p?N?NpjHj@?NpjH@?0NpjH@ЈP@?NpjH@1NpjH@?1NpjH@ЉP@?NpjH@3N*p`:6XQpjH@@?6XN*p`:6XQpjH@@PE?N*p`:6XQpjH@@=XNp@k%>6>6xpjH@@?6xNp@k%>6>6xpjH@@PG?Np@k%>6>6xpjH@@=xNpjH@W>N0>=xN'L$zjMprtaj@ES@&AX fJ* g `Q CN? Q CN'L$prta>@@*AxS@? Q ENp2SA@*>7Ax0QT EN N0>6g<6x86hg<>6hg*6xg E<>6pjH>CxS@2QL$NNO?` N0>6g<6x86hg>6hg*6xg E<>6pb>CxH2QL$N`Pv `v`v(* "NJg"J> NJg J>tcSBk Vf D"EN0gBWNd BWNcBWN>N0>/S@r6xAdN`(* > NJg Jpb>CxH2Q D"EN`>Wr6x>N0>_xN02A<46hj{>N??LB<66hkC{ kvhN(* > Ng J>CxpjHS@ fJ* gQ D"EN2Q D"ENpjH@WNpjH2g @gAWNrt4BW?HB?N H@.N?N:k6>+%(Ax 0 1\ 00%% EE?6x DNEE%?3PN8:aA%JEk>+%AxE1PaNpjHN R@(@N(_N0WN0WNFWNFWWNտOb ?<NտOd?<NJWkNDWNRWNSWN0WN0WN0>NJWg0/H>NJWg0/H2H@J@jA>N02WmbWn\NտOf ?<NտOf?<NտOo?<NտOl?<Na&fT>L$NacTBWL$Nad`"NJg"J>/ NJg J>/pjHS@ VNu'L$r> g@nGAACp3 UAf.I`"?rta,T O@"O`2QBYU@fL$N'L$p0 @dvHrta2p0kbAb@RA6@C?NBWNHz`H4XQL$NHz`24XQp`0QL$NHz `4FBXQL$N0/@AH2@k"_J_NAC4`VB0 O.I2QBYTAf`a4(BC S@kOVf6SAkJXVf*.I?<L$Na4(BC S@k4FBXVg.I?<L$Naj4(BC S@k4FB_Vf`HNeRNdRNտOfRNտOgRNHNdTNpjHj@*A2J* g 4ZBm0X@n BA00X ENղhnXmA ENprt(a'M$NxaL$|~N(6>*@G>2xG02xkrt(a@?+% ?+%? ?? OIx7C% H$/Nu>+%@@>6x7G%<6xCh<6xJvhg'J%$N>6hg(6xg$D<6hNu*:6Xr`.*:6X:6Xr`r*g:6XSf` * `*rp6>*@G>2xG02xk@% ftPԀ<+%<6hԆԎb&?+% ?+%? ?? OIx7C% H$NH'L$=@=k%`'L$paaRڎ`<'L$>/az:/ڎp0aL\H O'H$`*p'L$apala0(HЊ%1@>+%7G%7vx%>6xRvxN'L$p* @fr A/bA+% f>;gR'L$Nx>;tgR'L$NxF"p "N  #(ppF"p "N  #(p>(k%gL*<6xCh<6xJvhg$N>6hg(6xg$D<6hRn*>+%>6x=*xSvx7E%7vX%pjH>(2(jDA>*AG>2xG>2xIx7A% @O >(AxH$N*g:6XSf?Na*ax7k%%Na>+%>6xJvxfR$=k%`NH|~Gt,k$|>b@zA%:0gaLINu|?f<+%6h>6hg6xf% a7G%r26xg 6f.`=h=x`N 02|@d@A%1HJAV? OpNNXN k$Nz:N JvXoSvX`a=h>6Xan=X% aRNNz:N aNNJvXg+%a&7G%>+%6h6xc % aNuRvXNu6h$rJBg6(b246(`=hJAg=Nu>Nu~<+%k%g><6h`JGg=hxNu7vh%NuNJnfN>N0o"S@(* >_Cx>_AxQ D"ENPN0o(* >_@Cx>_@AxS@ Q D"EN02oSA>_*AxQ ENXNT>_*AxL6g6mSBJAf WRB`$VRB`RFBJAf WFB` VFBB> EN> 6x"6x<>4xfxfBW=hNk>6xf>=hN>6x f>=hN>Ax>Cx>*EprJ3 gkS@mJ3 gk` _g֑UH2J@o S@r QAp|A@>;:g(Ex"$ffgX`P`"L$N"L$N":^*ZrAND 'ARRAY ,BEGIN CASE CONST DIV 'DO DOWNTO ELSE END EXTERNAL5FOR FILE .FORWARD "FUNCTION GOTO IF IMPLEMEN4IN )INTERFAC3LABEL MOD 'NOT &OF OR (PACKED +PROCEDURPROCESS 8PROGRAM !REPEAT RECORD -SET *SEGMENT !SEPARATE6THEN TO TYPE UNIT 2UNTIL USES 1VAR WHILE WITH **0<> NJGg*6xg E>Cx` 0<>"NJGg*6xg"E>Ax`QL$N0<F>>6xvx>6x( NJGg*6xg E` (AQ DNp_g% N% N&( <> NJGg*6xg E>p06x<6x>6x"NJGg*6xg"EƱgc S@H"Q`@S@H# Q C"DN>p06x>6x<6x>6x NJGg*6xg E>(g@GCx2!YJg2SgSg>!G`IA@>>6x26x4!JBg>!pxSBf`L$N>>6x<6x?6hp06x<6x NJFg*6hg E/06x@??6xBgNj>NPTX\   $(, $(,048<048<hlpt@DHLN&"L$NuN&&L$NupE%N&>=%x>=%xL$NB%B%B+%?<a0?<a(?.a Nu% _pr468$_:/?`X% _pr:/?`Dpr`>p4>Exrf,r`(pr`pr468>_Ex`J_BW`J_r`'L$:%AJk c.ne(Nxr ` r`r`r Eg|=AL$BB%gNuN+%g(I%~0ANp`+%g(I%~0rJg4S@gS@g`".+% 'G%.+% 'G%ACN`rN`lJDgf+% fNNJfT.+% g ae zb f>.\fJg .+% G'G%`.Sf"g<f+%gSDf`SD f+%gz+% fNJf  f\fTp +% fNJf`:JDgSD.+% g* 'G%vC op +% fhNJfnSCf`f f .+% 'G%`+% f6NJf<  ff f +%f~p +% fNJf `fx JBk(Dm JfD@`xS$ĄfȁtNuDBDm"pD`xSF„Ȁ tNu*ばcABDBCC<g:JgH<<46H@HAւCHCЃD~NNuBJfJg< `JgJj <NuABCBD@ARSDo>RRSCoJR蘘C6HA4B@䀁HHHBЂDNXNuf`gJg"`gJf` Jg Jfp`Jg <`@UUðcACzBDfJgvJffҀ`j`f<< g`<D FmQFf쨴fҀd$RE|m`PkgF[SEngBEd RE Eg&| NuJffg`r`"<`&HCBBf<Jg*<`$<f4<`B<Jg<`<SB<BpNuJkSDJDn Dm6DRBDdRD Dl dNug JDg < NupNu <NuLH@HANH@/@|g k$J@fBNN"Ar`Ah`AH`A`NoNaf ?<Na oBgNal`$LH@HA/Bg$ĀkA<@㉰dAc>Jf>Nw0HxvJgjDvSDjDaKH@/N"HAa`"HAa|JBjRBa:ӂт l&a&BJfHAJAfHAJCjDA?N/NpjHjH/2N>/6xN>/-xTN0|&bH.N?A BDz@FPG$ItK Lk(NnPCQԥShU!V_XcZ[ l]^$_ x`(bXydhegSYRiojˑlN?;n oqIorŰt7vEwy{@|v~"/HA.NXJBjaN*HA/ANu"/HA.N8JBjRBaӂт`8 m 4ЀЁ`&Jg PDf gkSDЀjDa<"CNu````(````^````D`p`r``>````.`F`B`D`T``````pNNNupNNNuNIrNuNJrNup /A!I"_CR!I!I 0NNrNuDA Ab;NurNu p `p `p XE|cVEA0Bh1D!J1C Bh1BNN2(kNup `p `p `g:<`:<>+% 6xf*a$<+% f A"0p NNa` XE|cVEp A01B!JNN2(k8Nur NuNKrNuNLrNu BbNMrNuA0!|Hh!_@1C 1B/p NN `p A0NN2(kNuA0P!|Hh!_@1C 1B/p NN 2(kNuAV0P!|Hh!_1C 1Bp NN(2(kpNuA"0Pp NN2(kXNuA 0P1B!Jp NN2(k8NupNN`ApNNA*pNNrNu +%%4ApNN5h5PBANuJPfh%NuS@2Y0QNu'K%7_%,_'N%(NrBQB..B./=k%=|=| 2=|6=k8|]=|`4p0.4K@7@%p MBXQ:. pNN"4(gc$ނjBp0@f0@$O'J$?./ ?0,+%KxA'H$7H%7k%%;||B- k%;H;| B-|;|Bm;|;k%"k$p0+%K0.|I0, @2+%A@ ;@Bi 3A3A3|3|O O7H%7H% 7H%p0+%K;k%?|?|?k%?k%?k%?k% Bo ?|?| k$?H?|Bo?|BoBB p0.|A?h>$0+%h;Np &,28>DJPV\bhntz "(.djpv| 4:@FLRX^T\dlt| J^ @ f n  rJ:  * * , "  Z `6v  4 6 4 >  "d" !!: "0 "2!n!! 08(LT N l R,L^& H N """* ( z < R : R VVb """p`,p`(p`$p` p`p `p `p `p ` p`a^|~B?L##pa p` X=G` NO'L#=G=|=k#A*L#SN aNN#f/ЂЀt4+#46(ЂЎQb Nu =@=k#O=|`>+#ȑ=x A=x L=x=#xx#x k#Nu>+#"_vxvx#7vx#<6x(F<6x Ah<6xOh/ >+#<6xCh7vx#<6x>6h<6h$NJGg*6xg$EH#Nu*Jg:6XSfNuRn*>+#>6x=*xNu:|#*k#B##Nu+#f J#f KNu fHz'_#Nu#fDN #fnKNN/ G#a&_Nu @bH>;Np  Fp?N?<N?<N?<N?<N?<N?<N?<N?<N?< N?< N?< N?< N?< N?<N?<N?<N?<N?<N?<N?<N?<N?<N?<N?<N?<N?<N?<N?<N?<N?<N?<N?( N?( N?(N?(N?(N?(N?(N?(N?(N?(N?(N?( N?("N?($N?(&N?((N1_ N1_ N1_N1_N1_N1_N1_N1_N?) N?) N?)N?)N?)N?)N?)N?)N?)N?)N?)N?) N?)"N?)$N?)&N?)(Np Ј?Np Ј?NpЈ?NpЈ?NpЈ?NpЈ?NpЈ?NpЈ?N*:6X:6XpjH@@?6XN*:6XpjH@@?6XN>>xN>>xN>>xN>>xN>>xN>>x N>>x N>>xN'L#p` 'L#p` 'L#p` 'L#p` 'L#p` 'L#p` 'L#p` 'L#p` p?N?NpjHj@?NpjH@?0NpjH@ЈP@?NpjH@1NpjH@?1NpjH@ЉP@?NpjH@3N*p`:6XQpjH@@?6XN*p`:6XQpjH@@PE?N*p`:6XQpjH@@=XNp@k#>6>6xpjH@@?6xNp@k#>6>6xpjH@@PG?Np@k#>6>6xpjH@@=xNpjH@W>N0>=xN'L#zjMprtaj@ES@&AX fJ* g `Q CN? Q CN'L#prta>@@*AxS@? Q ENp2SA@*>7Ax0QT EN N0>6g<6x86hg<>6hg*6xg E<>6pjH>CxS@2QL#NNO?` N0>6g<6x86hg>6hg*6xg E<>6pb>CxH2QL#N`Pv `v`v(* "NJg"J> NJg J>tcSBk Vf D"EN0gBWNd BWNcBWN>N0>/S@r6xAdN`(* > NJg Jpb>CxH2Q D"EN`>Wr6x>N0>_xN02A<46hj{>N??LB<66hkC{ kvhN(* > Ng J>CxpjHS@ fJ* gQ D"EN2Q D"ENpjH@WNpjH2g @gAWNrt4BW?HB?N H@.N?N:k6>+#(Ax 0 1\ 00##EE?6x DNEE#?3PN8:aA#JEk>+#AxE1PaNpjHN R@(@N(_N0WN0WNFWNFWWNտOb ?<NտOd?<NJWkNDWNRWNSWN0WN0WN0>NJWg0/H>NJWg0/H2H@J@jA>N02WmbWn\NտOf ?<NտOf?<NտOo?<NտOl?<Na&fT>L#NacTBWL#Nad`"NJg"J>/ NJg J>/pjHS@ VNu'L#r> g@nGAACp3 UAf.I`"?rta,T O@"O`2QBYU@fL#N'L#p0 @dvHrta2p0kbAb@RA6@C?NBWNHz`H4XQL#NHz`24XQp`0QL#NHz `4FBXQL#N0/@AH2@k"_J_NAC4`VB0 O.I2QBYTAf`a4(BC S@kOVf6SAkJXVf*.I?<L#Na4(BC S@k4FBXVg.I?<L#Naj4(BC S@k4FB_Vf`HNeRNdRNտOfRNտOgRNHNdTNpjHj@*A2J* g 4ZBm0X@n BA00X ENղhnXmA ENprt(a'M#NxaL#|~N(6>*@G>2xG02xkrt(a@?+#?+#ʙ? ?? OIx7C#H#/Nu>+#@@>6x7G#<6xCh<6xJvhg'J#$N>6hg(6xg$D<6hNu*:6Xr`.*:6X:6Xr`r*g:6XSf` * `*rp6>*@G>2xG02xk@#ftPԀ<+#<6hԆԎb&?+#?+#ʙ? ?? OIx7C#H#NH'L#=@=k#`'L#paaRڎ`<'L#>/az:/ڎp0aL\H O'H#`*p'L#apala0(HЊ#1@>+#7G#7vx#>6xRvxN'L#p* @fr A/bA+#f>;gR'L#Nx>;tgR'L#NxF"p "N  "(ppF"p "N  "(p>(k#gL*<6xCh<6xJvhg$N>6hg(6xg$D<6hRn*>+#>6x=*xSvx7E#7vX#pjH>(2(jDA>*AG>2xG>2xIx7A#@O >(AxH#N*g:6XSf?Na*ax7k##Na>+#>6xJvxfR#=k#`NH|~Gt,k#|>b@zA#:0gaLINu|?f<+#6h>6hg6xf#a7G#r26xg 6f.`=h=x`N 02|@d@A#1HJAV? OpNNXN k#Nz:N JvXoSvX`a=h>6Xan=X#aRNNz:N aNNJvXg+#a&7G#>+#6h6xc #aNuRvXNu6h$rJBg6(b246(`=hJAg=Nu>Nu~<+#ļk#g><6h`JGg=hxNu7vh#NuNJnfN>N0o"S@(* >_Cx>_AxQ D"ENPN0o(* >_@Cx>_@AxS@ Q D"EN02oSA>_*AxQ ENXNT>_*AxL6g6mSBJAf WRB`$VRB`RFBJAf WFB` VFBB> EN> 6x"6x<>4xfxfBW=hNk>6xf>=hN>6x f>=hN>Ax>Cx>*EprJ3 gkS@mJ3 gk` _g֑UH2J@o S@r QAp|A@>;:g(Ex"$ffgX`P`"L#N"L#N":^*ZrAND 'ARRAY ,BEGIN CASE CONST DIV 'DO DOWNTO ELSE END EXTERNAL5FOR FILE .FORWARD "FUNCTION GOTO IF IMPLEMEN4IN )INTERFAC3LABEL MOD 'NOT &OF OR (PACKED +PROCEDURPROCESS 8PROGRAM !REPEAT RECORD -SET *SEGMENT !SEPARATE6THEN TO TYPE UNIT 2UNTIL USES 1VAR WHILE WITH **0<> NJGg*6xg E>Cx` 0<>"NJGg*6xg"E>Ax`QL#N0<F>>6xvx>6x( NJGg*6xg E` (AQ DNp_g#N#N&( <> NJGg*6xg E>p06x<6x>6x"NJGg*6xg"EƱgc S@H"Q`@S@H# Q C"DN>p06x>6x<6x>6x NJGg*6xg E>(g@GCx2!YJg2SgSg>!G`IA@>>6x26x4!JBg>!pxSBf`L#N>>6x<6x?6hp06x<6x NJFg*6hg E/06x@??6xBgNj>NPTX\   $(, $(,048<048<hlpt@DHLN$L#NuN$L#NupE$bN$>=$dx>=$fxL#NB$VB$ZB+$^?<a0?<a(?.a Nu$^ _pr468$_:/?`X$^ _pr:/?`Dpr`>p4>Exrf,r`(pr`pr468>_Ex`J_BW`J_r`'L#:$^AJk c.ne(Nxr ` r`r`r Eg|=AL#BB$^gNuN+$^g(I$~0ANp`+$^g(I$~0rJg4S@gS@g`".+$V 'G$V.+$Z 'G$ZACN`rN`lJDgf+#fNNJfT.+$V g ae zb f>.\fJg .+$V G'G$V`.Sf"g<f+$^gSDf`SD f+$^gz+#fNJf  f\fTp +#fNJf`:JDgSD.+$Z g* 'G$ZvC op +#fhNJfnSCf`f f .+$Z 'G$Z`+#f6NJf<  ff f +$`f~p +#fNJf `fr1>013p8Ag8!f. 8H@r@@H@1>01 @!p8Ag8!gpdQJgpNN gN"N _ 4H@JB201B1p8Ag8!f:/8JfNB81>01-B!p8Ag8!f?8JfnNB81>01%B!p8Ag8!f?8Jf/6xN>/-xTN0|&bH.N?A BDz@FPG$ItK Lk(NnPCQԥShU!V_XcZ[ l]^$_ x`(bXydhegSYRiojˑlN?;n oqIorŰt7vEwy{@|v~````(````^````D`p`r``>````.`F`B`D`T``````pNNNupNNNuNIrNuNJrNup /A!I"_CR!I!I 0NNrNuDA Ab;NurNu p `p `p XE|cVEA0Bh1D!J1C Bh1BNN2(kNup `p `p `g:<`:<>+# 6xf*a$<+#f A"0p NNa` XE|cVEp A01B!JNN2(k8Nur NuNKrNuNLrNu BbNMrNuA0!|Hh!_@1C 1B/p NN `p A0NN2(kNuA0P!|Hh!_@1C 1B/p NN 2(kNuAV0P!|Hh!_1C 1Bp NN(2(kpNuA"0Pp NN2(kXNuA 0P1B!Jp NN2(k8NupNN`ApNNA*pNNrNu +$x$t4ApNN5h5PBANuJPfh$`NuS@2Y0QNu'K$p7_$~,_'N$t(NrBQB..B./=k$~=|=| 2=|6=k8|]=|`4p0.4K@7@#p MBXQ:. pNN"4(gc$ނjBp0@f0@$O'J#?./ ?0,+#KxA'H#7H$7k##;||B- k$x;H;| B-|;|Bm;|;k$"k#p0+#K0.|I0, @2+$A@ ;@Bi 3A3A3|3|O O7H#7H# 7H$p0+#K;k#?|?|?k#?k$?k#?k$ Bo ?|?| k#?H?|Bo?|BoBB p0.|A?h>$0+$|h;Np &,28>DJPV\bhntz "(.djpv| 4:@FLRX^T\dlt| J^ @ f n  rJ:  * * , "  Z `6v  4 6 4 >  "#0 !!H! #n0 "!" "H 08(LT N l R,L^& H N "" ( z < R : R VVb #x##p`,p`(p`$p` p`p `p `p `p ` p`a^|~B?L%@%fpa p` X=G` NO'L%P=G=|=k%`A*L%@SN aNN%ff/ЂЀt4+%`46(ЂЎQb Nu =@=k%bO=|`>+%`=x A=x L=x=%bxx%ex k%@Nu>+%`"_vxvx%e7vx%b<6x(F<6x Ah<6xOh/ >+%b<6xCh7vx%^<6x>6h<6h$NJGg*6xg$EH%@Nu*Jg:6XSfNuRn*>+%b>6x=*xNu:|%f*k%TB%T%fNu+%ff J%Tf KNu fHz'_%TNu%ffDN %ffnKNN/ G%fa&_Nu @bH>;Np  Zp?N?<N?<N?<N?<N?<N?<N?<N?<N?< N?< N?< N?< N?< N?<N?<N?<N?<N?<N?<N?<N?<N?<N?<N?<N?<N?<N?<N?<N?<N?<N?<N?( N?( N?(N?(N?(N?(N?(N?(N?(N?(N?(N?( N?("N?($N?(&N?((N1_ N1_ N1_N1_N1_N1_N1_N1_N?) N?) N?)N?)N?)N?)N?)N?)N?)N?)N?)N?) N?)"N?)$N?)&N?)(Np Ј?Np Ј?NpЈ?NpЈ?NpЈ?NpЈ?NpЈ?NpЈ?N*:6X:6XpjH@@?6XN*:6XpjH@@?6XN>>xN>>xN>>xN>>xN>>xN>>x N>>x N>>xN'L%Pp` 'L%Pp` 'L%Pp` 'L%Pp` 'L%Pp` 'L%Pp` 'L%Pp` 'L%Pp` p?N?NpjHj@?NpjH@?0NpjH@ЈP@?NpjH@1NpjH@?1NpjH@ЉP@?NpjH@3N*p`:6XQpjH@@?6XN*p`:6XQpjH@@PE?N*p`:6XQpjH@@=XNp@k%^>6>6xpjH@@?6xNp@k%^>6>6xpjH@@PG?Np@k%^>6>6xpjH@@=xNpjH@W>N0>=xN'L%PzjMprtaj@ES@&AX fJ* g `Q CN? Q CN'L%Pprta>@@*AxS@? Q ENp2SA@*>7Ax0QT EN N0>6g<6x86hg<>6hg*6xg E<>6pjH>CxS@2QL%@NNO?` N0>6g<6x86hg>6hg*6xg E<>6pb>CxH2QL%@N`Pv `v`v(* "NJg"J> NJg J>tcSBk Vf D"EN0gBWNd BWNcBWN>N0>/S@r6xAdN`(* > NJg Jpb>CxH2Q D"EN`>Wr6x>N0>_xN02A<46hj{>N??LB<66hkC{ kvhN(* > Ng J>CxpjHS@ fJ* gQ D"EN2Q D"ENpjH@WNpjH2g @gAWNrt4BW?HB?N H@.N?N:k6>+%`(Ax 0 1\ 00%b%eEE?6x DNEE%b?3PN8:aA%bJEk>+%`AxE1PaNpjHN R@(@N(_N0WN0WNFWNFWWNտOb ?<NտOd?<NJWkNDWNRWNSWN0WN0WN0>NJWg0/H>NJWg0/H2H@J@jA>N02WmbWn\NտOf ?<NտOf?<NտOo?<NտOl?<Na&fT>L%@NacTBWL%@Nad`"NJg"J>/ NJg J>/pjHS@ VNu'L%Pr> g@nGAACp3 UAf.I`"?rta,T O@"O`2QBYU@fL%@N'L%Pp0 @dvHrta2p0kbAb@RA6@C?NBWNHz`H4XQL%@NHz`24XQp`0QL%@NHz `4FBXQL%@N0/@AH2@k"_J_NAC4`VB0 O.I2QBYTAf`a4(BC S@kOVf6SAkJXVf*.I?<L%@Na4(BC S@k4FBXVg.I?<L%@Naj4(BC S@k4FB_Vf`HNeRNdRNտOfRNտOgRNHNdTNpjHj@*A2J* g 4ZBm0X@n BA00X ENղhnXmA ENprt(a'M%TNxaL%@|~N(6>*@G>2xG02xkrt(a@?+%d?+%b? ?? OIx7C%dH%@/Nu>+%^@@>6x7G%h<6xCh<6xJvhg'J%j$N>6hg(6xg$D<6hNu*:6Xr`.*:6X:6Xr`r*g:6XSf` * `*rp6>*@G>2xG02xk@%fftPԀ<+%`<6hԆԎb&?+%d?+%b? ?? OIx7C%dH%@NH'L%P=@=k%b`'L%PpaaRڎ`<'L%P>/az:/ڎp0aL\H O'H%@`*p'L%Papala0(HЊ%j1@>+%h7G%b7vx%^>6xRvxN'L%Pp* @fr A/bA+%ff>;gR'L%PNx>;tgR'L%PNxF"p "N  #(ppF"p "N  #(p>(k%bgL*<6xCh<6xJvhg$N>6hg(6xg$D<6hRn*>+%b>6x=*xSvx7E%b7vX%^pjH>(2(jDA>*AG>2xG>2xIx7A%d@O >(AxH%@N*g:6XSf?Na*ax7k%\%`Na>+%b>6xJvxfR%P=k%b`NH|~Gt,k%X|>b@zA%n:0gaLINu|?f<+%\6h>6hg6xf%fa7G%\r26xg 6f.`=h=x`N 02|@d@A%n1HJAV? OpNNXN k%@Nz:N JvXoSvX`a=h>6Xan=X%faRNNz:N aNNJvXg+%\a&7G%\>+%`6h6xc %faNuRvXNu6h$rJBg6(b246(`=hJAg=Nu>Nu~<+%\k%`g><6h`JGg=hxNu7vh%\NuNJnfN>N0o"S@(* >_Cx>_AxQ D"ENPN0o(* >_@Cx>_@AxS@ Q D"EN02oSA>_*AxQ ENXNT>_*AxL6g6mSBJAf WRB`$VRB`RFBJAf WFB` VFBB> EN> 6x"6x<>4xfxfBW=hNk>6xf>=hN>6x f>=hN>Ax>Cx>*EprJ3 gkS@mJ3 gk` _g֑UH2J@o S@r QAp|A@>;:g(Ex"$ffgX`P`"L%@N"L%@N":^*ZrAND 'ARRAY ,BEGIN CASE CONST DIV 'DO DOWNTO ELSE END EXTERNAL5FOR FILE .FORWARD "FUNCTION GOTO IF IMPLEMEN4IN )INTERFAC3LABEL MOD 'NOT &OF OR (PACKED +PROCEDURPROCESS 8PROGRAM !REPEAT RECORD -SET *SEGMENT !SEPARATE6THEN TO TYPE UNIT 2UNTIL USES 1VAR WHILE WITH **0<> NJGg*6xg E>Cx` 0<>"NJGg*6xg"E>Ax`QL%@N0<F>>6xvx>6x( NJGg*6xg E` (AQ DNp_g%fN%fN&( <> NJGg*6xg E>p06x<6x>6x"NJGg*6xg"EƱgc S@H"Q`@S@H# Q C"DN>p06x>6x<6x>6x NJGg*6xg E>(g@GCx2!YJg2SgSg>!G`IA@>>6x26x4!JBg>!pxSBf`L%@N>>6x<6x?6hp06x<6x NJFg*6hg E/06x@??6xBgNj>NPTX\   $(, $(,048<048<hlpt@DHLN&|L%@NuN&L%@NupE%N&x>=%x>=%xL%@NB%B%B+%?<a0?<a(?.a Nu% _pr468$_:/?`X% _pr:/?`Dpr`>p4>Exrf,r`(pr`pr468>_Ex`J_BW`J_r`'L%P:%AJk c.ne(Nxr ` r`r`r Eg|=AL%@BB%gNuN+%g(I&~0ANp`+%g(I&~0rJg4S@gS@g`".+% 'G%.+% 'G%ACN`rN`lJDgf+%ffNNJfT.+% g ae zb f>.\fJg .+% G'G%`.Sf"g<f+%gSDf`SD f+%gz+%ffNJf  f\fTp +%ffNJf`:JDgSD.+% g* 'G%vC op +%ffhNJfnSCf`f f .+% 'G%`+%ff6NJf<  ff f +%f~p +%ffNJf `fr1>013p8Ag8!f. 8H@r@@H@1>01 @!p8Ag8!gpdQJgpNN gN"N _ H@"4HAJBx:01B1p8Ag8!fY?8?x?x?xJfTNB81>01)B1111p8Ag8!fn>JfNB81>01!B1111p8Ag8!f0>JfN////NpjHjH/2/2N>/6x/6xN>/-x-xTNp0|4bҀAZB81010B!!AH@!!p p8Ag8!f O   k%@Jf&N?7yCAnFt1I?OM8hQPobuS$nW0<0wHZ8W]%oa&R0Edy%gk%kgJRnqz24qÿVsOu)T:xgm+D{* ?@$@Y@@@j@A.AcׄAeA _BHvB7Bm@0BB&4kC ````(````^````D`p`r``>````.`F`B`D`T``````pNNNupNNNuNIrNuNJrNup /A!I"_CR!I!I 0NNrNuDA Ab;NurNu p `p `p XE|cVEA0Bh1D!J1C Bh1BNN2(kNup `p `p `g:<`:<>+%` 6xf*a$<+%ff A"0p NNa` XE|cVEp A01B!JNN2(k8Nur NuNKrNuNLrNu BbNMrNuA0!|Hh!_@1C 1B/p NN `p A0NN2(kNuA0P!|Hh!_@1C 1B/p NN 2(kNuAV0P!|Hh!_1C 1Bp NN(2(kpNuA"0Pp NN2(kXNuA 0P1B!Jp NN2(k8NupNN`ApNNA*pNNrNu +&& 4ApNN5h5PBANuJPfh%NuS@2Y0QNu'K&7_&,_'N& (NrBQB..B./=k&=|=| 2=|6=k8|]=|`4p0.4K@7@%\p MBXQ:. pNN"4(gc$ނjBp0@f0@$O'J%H?./ ?0,+%\KxA'H%D7H&7k%\%`;||B- k&;H;| B-|;|Bm;|;k&"k%Dp0+%\K0.|I0, @2+&A@ ;@Bi 3A3A3|3|O O7H%^7H%b 7H&p0+%\K;k%b?|?|?k%b?k&?k%^?k& Bo ?|?| k%H?H?|Bo?|BoBB p0.|A?h>$0+&h d  B F  J# P VZ ^  d R  hntz„67򁘄#򁦄򁬄ց 򁾄""!Wd`id`{d`)+` *` +` ```r  2 3Pdji h 52 - ( +kk# #Yڡdd „ #0#kل #.# 5#k #Y"jdd „ #0# #Y(dd #e #E# B#k #- ( #+#k# #Yڡ! #0i#k(!i!"j"""idd!p dd"!p "idd!p dd"!p 5d4698߇88r8x 8rhjkl 8xȄ m8  h"`as" "j# #k0mfY":ff ff#ff "ff%e%E" jf%.#" kf%fl$8r$88ʇ8 Yڡ  塠 ȇ7P9 xĖ8 -Ȋ i  hdp p e ' p ! i p hЄ d- p ! i p hˇ! p ! !p !i k# j#"0Ȅ " #ۇ!}ȇ.k!_#E#k! #-#k!i!c!#!d0#k!di! #0#k! #! 0#k#! 0ȇ#ȋ!=!p!.ȇ! p !Ȋ!ȊK=!p0ȇ.ȇ!0p!! pȊP #yjih "x!" xzi h!l !!z p xo' a!y{p p xk#X #p xj": #"p xm%' #"p x p % xnh&x2  &x &xh&n& Ըx0xl $p x$p  xp  &n x'&p x%m! a!y{p! %$#"! Ė `C!j7 nS"w 0o '"w 0o 'E j4ݎ# j%"&#6E"'#7:." 5@    ] :~   c`   )"#cfgi~O{)?&0   &<%1&1$6T $o %_T&#1$6T tJ  pP '''T$^)<$9 `""w 0"w 0 w 7 D"$"w Ik a:$`  @""#@) E &q!S 7 G"^& "w 0o.&dE &A&P -T (@(( 0REALOPS vdlL ]}SCREENOPPASCALIO REALOPS GCopyr 1978,79 Regents, U.C., Copyr 1980,81,82,83 SofTech Microsystems 88v " "{ USES KERNEL } "{$L-} "USES {$U opsys:KERNEL.CODE} KERNEL; "{$L^} " "FUNCTION SIN(X:REAL):REAL; "FUNCTION COS(X:REAL):REAL; "FUNCTION LOG(X:REAL):REAL; "FUNCTION LN(X:REAL):REAL; "FUNCTION ATAN(X:REAL):REAL; "FUNCTION EXP(X:REAL):REAL; "FUNCTION SQRT(X:REAL):REAL; "PROCEDURE f_read_real (VAR f:fib; VAR x:REAL); "PROCEDURE f_write_real (VAR f:fib; x : REAL; w, d : INTEGER); "function str_to_real(s:string):real; "function gotrealstr(var f:fib; var return:string): boolean; "procedure real_to_string(x: real; d:integer; var s:string); "procedure realk_convert(segerec: erecp); "PROCEDURE Real_Limits (VAR real_max, real_min, max_ln_real, min_ln_real :REAL; 9VAR max_exp, signif_digits : INTEGER); =  IMPLEMENTATION REALOPS gg gu pdgeɀ~ne~&ee&nbd bd`bdbb`cc`bd`aa&ʄ ` _ e e p+ehe¿hc e ¿hc #eec&c)c,e/ce)aecee2a5a8a;a cc+ >cccob`b`JA p`aɀ~a~`D `Gb`J. `Mb Pccf. b S b bVYb f\„ f_  b  eD h p2 k p" n¿ d* dqdt w `z -f b }f`bfb* aa*ʄ` r dbdb p b ceɣ ,~B, 2c~e~`bda, , a,ʄ ` fbd f ff fffff, f f' f ff 򀹄 „ ,67 򀿄 # Ȅ  ˄ ր ׄ   b`b`b`)+` *` +` ```r ,0g1Pdjigh 3g-n&g+kk# g#Yڡdd g#0#kg#.# 2#kg#Y"jdd g#0# g#Y&ddg#eg#E# =#kg#-n&g#+#k# g#Yڡ! g#0i#k&!i!"j""idd!p dd"!p "idd!p dd"!p 3d2698߇88r8x 8rhjkl 8xȄ m8  h"`as" "j# #k0mfY":ff ff#ff "ff%e%E" jf%.#" kf%fl$8r$88ʇ8 Yڡ  塠 ȇ7P9 xĖ8 -  ,-Ȋ, i  hdp fp \ f# p ! i p hՄ d) p ! i p h*-! p -! -!p f!i f k#+ j,#"0Ȅ "f#k*!e,,,.k!L,#E#k! ,#-#k!i!c,#!d0#k!di! ,#! 0#k,#! 0,#Ȋy!4,,!p,!.,-! p- ,-!Ȋ,!Ȋ@-4,,!p,0,.,!0p,!-! p,-Ȋ,P #yjih "x!" xzi h!l zp x,.o-' a!y{pp x,.k#I#p x,.j"-#"p x,.m%'#"p x, p % xnh&x2  &x &xh&n& Ըx,xl $p x$p  xp  &nx,' &p x,%m) a!y{p %$#"! Ė PC!j7 nS"o "o 5 |4ݎ#) F#D ~  1$$ "&1$   "" w 7 n%7 G""oE & $Tp" (@(( 0REALOPS ~Uy`T ';LDSCREENOPPASCALIO  ODUMP AILSYXFxxx?xx NDUMP  =G*p$*x`*x pG{S|PSv p`Pv pv p``**`Pw*Qw*P`짤~}  Aai iwX*V   *  p*Wvp*v pdXWWX{lW2)\  *vpD*`Pv p*v p*vp** p*v p`l WW|* X2b/ 0 pb p0fvp0vpb1i!1C0!2)v p0vp0(!2  p0vp!id1h 1w0b2i!2$ 2)!2)0!iՇ060 2)v p0vp0%  p0vp hb 2Ji/[ kgjlPj]]] ڡil]Ll]P   -v plv p v pvp]   '  d]Ɍ  ]   h] ^j"^B] "짃1,9v p] v pvph] j"j      ] G0     ] Oaa]v p: p] v pvp/^^]w^Ww^] w^ p/eRp/ p,l p]vp p$vp p"  p pvp""]     j~jjr/ jcXv pghhh  ڡ ;ccc2) Pc2)v p ph~hhҠvpsV*V b*a p*fvp*v pfe*vp]*vpT*`Pv p*v p* p*v pbbb2)`P(b2 * Vhckh #_jdli!$" 2)!2)j!i"( 2)v pfv pvp hdki!#_jclh $"!2) 2)j h"(!2)v pvv pvp!inpW*V d* pv p*vpS*`Pv p*v p*vp9ddd2)`P pd2)v pvp* W -].`=/.]ppy׊p].]].`/ˁ.]pp0v Pv v 집Yp uff v fevv v  u` pf --`˄ȇ``pp0v Pv v 집YNJp]./ˁ]pp0v Pv v 집Yp]]/ < - )` p% p uv p%v pvpu$, ,,PwRwP,,ȅ_U ~%PwQwUww,wP~**`*˄~*ȇ**` $$ $ $$ $$**` ) p+)+)+ v p%v p p$vp p!  p p"!   p p]vpvp pv pvp pp`+ ** % H- ` p P%}P fT +ττPwς Qwτ}wςwτTwP+Ϥ**ϲ`*˄+*ȇ**`]pp0v +Pv v +집YŊp]]Pjjgsi g"  Hh% pvpջ*Pv pv pvppUvpV pv pvpwS`*P*YTTYI*T지-(`S%ȇSS`ZZ`PwZ-QwZP`S*TȇSSTTj`jgsiiաi*v p.v pvppu*v p8v pvppO*v pAv pvpp)*v pIv pvppցPgU9Wv p*v p\v pvp pp*UV :\+"  dh^^ տia^2)PwanRwaPjjgsigh`iXpv pvpEzv pvp/v pvpv pvpց^^9vp p+C0`- sifsisi` p..v vv v` Pjjgsighy/h000G/5v 0v y `0v `v `0v `vh~hhҕ`v` ` p..#v v` `v`v` `]at % ɀd  %%  d   %%   ` 0.0\ / #v pvpvp 0 p9Pjjgsi "X   `  `      &`     `     `  `      &`     `   u  "   (;v pvpDsipLv p"  pvpWv p"a  X    pvp  p p`vpcv pvp ppv pv p u_X]0 p psiiv pvp0   log.texttnewlog.text[*]]log.texttVolume has not been previously dumped..Illegal filename ignored: directory.texttdirectory.textt:Volumes on line: log.textt on line but no dump requestedd dump requested but not on line..Proceed (y/n)? dnames.textVolumes to dump::Write error, retry (y/n)? Write error, retry (y/n)? Insert backup volume  and press return..Write error, retry (y/n)? Write error, retry (y/n)? Transferring    Transfering Error reading input file.DUMPP  Write error, retry (y/n)? directory.texttdirectory.textt  error in file name volume off linee file not found misc. errorre The file # has changed size, exiting program.:== error in file name volume off linee file not found misc. errorrdirectory.textt.Do you want a full or incremental dump (f/i)? dnames.textlog.textt dnames.text,This is a new dump using this prefix volume..Creating dnames.texttdnames.text[*]]=:=Dump all volumes (y/n)? Dump volume  (y/n)? log.texttCreating log.text log.text[*]DUMP release 4, 1-Aug-844directory.text[*]=:=No files to dump.directory.texttFile blocks to dump: Total blocks to dump:  block backup volume(s)..(Insert backup volume 1 and press return.. newlog.textlog.texttError renaming newlog.text.0$?OXJ! 'HEAPOPS OSUTIL GOTOXY EXTRAIO LONGOPS FILEOPS STRINGOPPASCALIOSCREENOPSYSINFO DIRINFO WILD  DUMPDIR  ILS`_Fxxx?xxDUMPDIR *0  Aai iv&짃 지0Ӈ{h} Pa P~ ˧|-a~ ˧ȇ}++}Pr+ar+P hƖ~,bPp,i!,b!!˧!ibs ps p΂/P˧Ȇ˧Ȇ/Ȇ ˧Ȇ ˧Ȇ/Ȇ˧Ȇ˧Ț4s pΘs pspb:P i!˧ b! !˧!ib,u}>P|P~pbCbribU!rUPhb!지  b!!i h!ih!b| b!!i h|~++h +7 p) tpDs psp hÆ)up+>`-u`YupΘs psp`sp3`WPs p`s p`.Ps p`s pWs psp`upup`uE)Uu(uas ssSQQorQwrQ|_rQx`rQP)Supys sps *Ps s *2*up*s s sps sp)uu 12344DUMPP5Please insert the first dump volume and press return.123456788 Dump date:   )Out of room while writing temporary file.directory.texttDUMPDIR release 4, 1-Aug-84directory.textt[]#Cannot open directory file exiting.File for output: cannot be opened, exiting.. No file name specified, exiting..f=f= FILEOPS EXTRAIO PASCALIOSTRINGOP RESTOR  #ILS^ ]F xxx?xx RESTOR =5)`*P`r prpp+R  aAi is"ih !" " 집 h&짃  지0Ӈ{h}PaP~ ˧|9a~ ˧ȇ}++}Ps+as+P h P~;aa t t ttttli t tth  h l,b(P\p,i!,b!솂\!˧!ib+.r pr pbIP i\!˧ b! 솂\!˧!ib ,s\p\˧D h\h CupMr p rpWr prpr p Sτ,aPb,P\pp4fr pUPr pr pU집Yp\UxUsi\U!sPhU!지 , U!!i h!ih!Ub U!!i h,b*`-v *w*SSysS*_sS`sSP`*vpS))Sw\)pp6r pPr pr p집Yp`\)upr prp))`vp`v+bP,,hrp|,brpjbPr pr pbsi\bP :!b!b!sbPrp"rprp tpr p,b-, Xttttt t tt `-v)w){{\Ps{Qs{)s{s{P  `\vpx\r r Pr r 집YBr \Pr r \r rp`\vp{{z\pp0r Pr r 집YÊp `\u}`RRpˤxR`Rp`v`vR*SP`-v)\*Pv*ղ)`\vpՖ`v\r r Pr r 집Y7r \Pr r \r rz*!r Pr r 집YN`vr>) 1r pr prp`vT9r pPr pr pJ지:l/[v.vXr prprp fvv/vv .Buffer to large to convert to string, exiting..12344DUMPP5Please insert the first dump volume and press return. Please insert vol.  and press return.. #Error reading backup, retry (y/n)?  directory.text[]#Error reading backup, retry (y/n)? Out of room:[]- cannot be opened, rename output file (y/n)? New file name: !No file name, skipping this file.#Error reading backup, retry (y/n)? Error writing file, exiting..directory.textt# exists, rename output file (y/n)? New file name: !No file name, skipping this file.Overwrite existing file(y/n)? Could not find file or volume name to restore: No file specified, exiting.RESTORE release 4, 1-Apr-84directory.texttalD<_<+ OSUTIL FILEOPS EXTRAIO LONGOPS STRINGOPPASCALIO DUPLICAT eCCopyright 1978,79 Regents, UC; Copyright 1984 SofTech Microsystems 88PDUPLICAT.%:`r prprp Y yiY sprpr prprpr pr pr p지#t2 지0지0지0/r prprpq2pp <r prprppׁ˧Mr pQfr p!ׁ˧spӚ~r pzׁx Kr prpr pp ׁ 2p2pr p r pr pr p(Duplicate Directory Copier { 12/12/83 } , Enter Volume ID # [i.e. 4,5,9,12,etc... : *** INVALID VOLUME ID *** *** NO SUCH VOLUME ON LINE *** 1Illegal volume name. Do you want to copy anyway? .Are you sure you want to zap the directory of : {blocks 2-5}? to exit. STRINGOPEXTRAIO PASCALIO PRINT DA'CCopyr 1982,83 SofTech Microsystems, Inc. -88vPRINT ] A'p,c-Pc/Fhcjc짃ic지0i c! c 짢0i h"-!/!/.)`*P r `s p+)`*P`As pA r + i  iDr.\  @ Ć =tp†  ,  .  2  7  :  =  ?  B  E I N R W *!up *Yup *Nup*Vt\`Ps s *`tj v`]vqpvԱ{WPs ps pW*Xup*Ws p*sp*!upD2N3U4S5*Fup*6sp*sp*Lup*7sp*sp*Tup*8sp*sp*Bup*9sp*sp*Pup*:sp*sp*Iup* s p*sp*Oup*s p*sp*Hup* s p*sp*!up*tp*trxsp` Ps pr*Ps ps p*`PU*VSSVU*S짃ڡUSSU`P`'VV vV`]vVjvV:T*VSSV"xT*S지0ćT TSSrs prxsp% rs p!Y!xs p s pd r !xup!s p r!xup~VP-Ph`v`-Vv`r Vs ps psps ps p!i! p=tpr p 奇ċ     } voh a Z SLE 45? V` ցxrA+r spspspsps psps psps psps pspsps psp"s psp0s pspMs pspsphs pspvs psps psps psps psps psps psp`P`+**+`***+O r spsps psp#s pspGs pspls psps pspsps psps psps psps psp;s psp`s psps psps psps psps psps psp5s pspZs psps psps psps ps psps psps psp2s pspUn o`s p {  *a+Ph-a> 집a 짰 a h a 집a 짰 -av,~  =6spL=m s p= up=msp=s p=m sp8 B=s p = s p=1up v! !3=sp=s p = 7s p"vh $ =" s p" v""vh؆="s p=sp   !2i 5  8ih !  h   4 = up :ih ! =sp h6 Ö hi ! 지  지" 지' h !5 지" 지' jb3vbvbp ! 지  h뇀b ! vbP짥Ah  짅A h  퇀 vA짰A'A"vv^jtjtpjh`v`v`th`v`v`v`pBCjsp兇Cjs pjs pCBjtp, hcPcc지 ccvci!c!짃ڡ!i! %c!vchcj 7"j"j",=+bPbb지 bbvbh b 짃ڡ h  $b vbi!!:i !  +4`집`집`, `-B .`K H`LCs`Maa짥CY`Naa짥EaP8`O)`P`Q `R`p$`x As p`xӇ#A SAQ Bp0L*+ph ~a P HaePBakP9auP0a}P'aPaPaP aPև++v+av+v+,~Csp兇Cs ps pږjt=it<t B  P1Ȇ :9 :89!ņłvł:vŘr  tp%ņņ vłvŘt+=t=tptp( tpjt=tt(PRINTER::1Page \page. File is "\file". Printed on \date.???JanuaryFebruaryyMarchAprilMayJuneeJulyyAugustt SeptemberOctoberNovemberrDecemberrEnter name of script file: Script file "" can't be opened: Enter name for invoking PRINT: *Enter an integer number, followed by >  no more than 4 digits allowed..only "0" to "9" allowed.. Bad integer: Type space. Enter Y(es or N(oYesNo Enter a single characterrEnter 8Must print something before you A(dvance. Type .. I(nput--> +input file specification, followed by  O(utput--> ,output file specification, followed by > H(eader--> /text of header line for top of page, then !UJETl&gt.|1 G(o. Print the input file on the output.2 A(dvance. Skip to next page on the output..9 M(ake script file for setting current parameters.# Q(uit. Leave this program. D(ouble-space the lines?? N(umber the lines??8 S(top before each page for single sheet loading??5 U(se ASCII formfeed characters between pages? F(irst page numberr' L(eft margin size in characters! T(op margin size in lines$ B(ottom margin size in linessA P(age size in lines (total: includes margins and heading)' E(scape sequence flag character$ C(ommand line flag characterrDNSUFLTBPECIOHHIPRINT takes I(nput text files and produces O(utput text files that can beFpaginated, line-numbered, or double-spaced.It can also add headings tooHthe top of each page. The O(utput file can be a serial device (probablyyDPRINTER:) or a disk file. (The p-System Spooler or Filer's T(ransferr?command can then be used to produce the  final printed version.)IInput text lines are usually tranferred without change to the output. OneDexception is COMMAND LINES. COMMAND LINES have a "command line flagg?character" (ordinarily ".") in the first column. The first twoFcharacters after the flag character usually determine the command, buttHmore characters of the command word can be included. Some commands haveeGa parameter, which is either a quoted string separated from the commandBname by one or more blanks, or an integer. There are ten commands;;G1) PAGE (no parameter: causes a page eject), 2) INCLUDE (one parameter:Ca file name: text in that file is substituted for the command line;Jno nesting allowed 3) COMMAND (one parameter: new command flag character),,E4) ESCAPE (one parameter: new escape flag character), 5) HEADING (oneIparameter: new heading definition used at top-of-page), 6) END (no param:Hterminate a file), 7) MARGIN (one parameter: an integer, see Print.Doc),,E8) PC (Page Conditional - must use 2 char abreviation, one parameter:Ginteger between 0 and page length), 9) SINGLE (no parameters, shifts toDsingle spacing), 10) DOUBLE (no parameter, shifts to double spacing))HESCAPE SEQUENCES begin with an escape flag character, can be anywhere innGa line, and are replaced by other text as follows: 1) PAGE (use currentEpage #), FILE (use current input file name), DATE (use current date).2Further information on PRINT. Type to return..4Print [1R3.0]: Select an option (type "?" for help)::0Printing. Type to pause; "Q" to cancel..PAGEEDATEE, 199FILEE: 9Insert a page in the printer and type when ready.3Type . This line needs space before param: .TEXTCan't include "": (,MARGIN command requires an integer parameterr((PC command requires an integer parameterrPAIN8Can't do an include within an include file. Type space..HEENCOESSIDOMAPC#Pausing. Type to continue. bad block..bad device number..bad file name..no room on output volume.no such volume on-line.no such file on volume.volume write-protected.illegal block number. Type .xSum of the margins is greater than page size. Type space...textInput file can't be opened: Output file can't be opened: k2U@l9ang#*7^[I: STRINGOPEXTRAIO FILEOPS PASCALIOSCREENOP Q BDISKSIZEIOBUFFERAFSUTIL  <   $9GCopyright 1980,81,82,83,84 SofTec1,82,83,84, SofTech Microsystems, Inc.DISKSIZEe$9L`# $`v j"#"$Ėl0TTv kh #a y  xav hr   &  * E A  S ?   9  p9))b"i!h!!! !h!!! Ȗ"h ! p  ,Ċ p! Ċ 44 $ĆĆ$l$jh "/at!k#0#T# !#! h̖K"x h i! p! ! Ć !"Ė `rpp*`pxpx`ĖE#x h j" p" " Ć " #xxi!pV#x"Ċi" f "" p "Ċ" #x!"rp1p" p T"#Ėߘhjj0i!Q!k# D! p;# ;; ;"!h;j4#" !h4#j#xi Ċp lޖ20hi !a j" ' B"&8"'-! p;" ;; ;,ii! " " Ċ xh!^ j""T" " "ދi$ "% V$x"%"' " '  Ěċ h j"$ "&"'" ' " '  "' "'" f'# "" p " $x"rp%'v'$x."" p " $x"rp'$x3% V$x"%p k$#T# # Ć#ފp0hi !W j" & B"%8"&-! p;" ;; ;,ii! xh!E j" " Ć"# "$ V#x"$"& " &  ĊOh j"# "%"&" & " &  "& "$"&"ih ! hޖ"ih ! h' 0h  ! T xhޖr0h 8 " # ! T  T xhĆޖx%3! Vbl;HEAPOPS GETCMD AFSUTIL  AAFSUTIL .!h""`"`ȖHac`a`a m`$`$a$a #j "#!i "#!i%a%b%bȖa#a#`"`"! #"l`"!`"! ki ii ii i i iրj%xi! !N##x!"A%#x$%#xh  "j%#xh  ##x Ċ"nh$hh hhր $k# j#"%#i%#%#%#!#k$jk#"A"h%k$ k k k kր# ""j"lhW !p !pC !p8 !p !p! !p !p !pր&E V &m&% &m'xj" "'%c '#iid&d&$h   L "!A! # 0!'#!'#"#!p"!j  k'#'# "#p# '"  V&% #h i !!hj"#T"#p"# pA"# p7"#p"# p!"#p"#p"#pր2#"`  V!" ll     zn U&H REALCONV ,cqCCopyright 1984 SofTech Microsystems, Inc. *Y);REALCONVcqH)`*Prsr `r rp+Trr `Pr r `p`tp **`Pu*Uu*tpҥT  Ȗ3s(h    Ց )5!}xh` j}lfp i0m%%!%%jh x"x7 f  "x "xh"j"0 ԰x6xk #p x#p  xp !}2p"11j!"i.s$l$2lr r }ĭh'hv 1r ra v9! (s B!}xj!}xjLm%k##%k#l#ln$1& ! (s T^r ra v h 7 i!x%% r jr !x!yr Ö$1trlr r ( r rpե3ttERROR: Enter file name ( to exit): .CODEreading segment dictionaryynot a code filesegment too bigallocating bufferreading the segmentnot a code filewriting the segmentincompatible real sizee (Real Constant Conversion Utility [2R0.0]]1PME does not have a real number package installedAbY&  EXTRAHEASTRINGOPFILEOPS EXTRAIO PASCALIO  ASCIIHAC -Copyright 1983-4, RB&A. All rights reserved.xxx?xxASCIIHACB"ih !"  " " aA hޖ[)*`Rp ɤ+*)+`Rp *`+Rp+h`i*a,P/.arp]+Vas  s `s .rs s.r s sp/+.arp/.,h#s pPs ps pU. t):iaPta.UtaP>-h v .-7*a+PhakaPa1P 2s pkPs ps pk*kkk. kktk-hk ԋ .- jnh &k o' 3' )i)))!( ɀ0m(ɀ0l(ɀ0k"( ɢ(ɢ(ɢj>%up>$up>#up h>.up>"sp>sp"mi>>s p>spkʆʆ upjh "   hֆ>Es p>!sp>spuprp ph -hii" Q K""x  0Ċ-Os pspRs psp h""x!Ėo h  .jmk#%c#i)#n&o' !0'!0'!0"' ɢ'ɢ'ɢj3& (l((($#k t " " M_s pspbs p"spks pspsp -qs pspts psp :s psps pspsp Vijh>sp hh hhրd>es p>s p!i Iehk<5s ps psp0h petՑh"(ups psp e td #$s psp Ɂɢrpks ps pspW"L""jBupj,s p!sps psp ր r Fs psp3s psp  s psp ցr>jr upsp s pspsp7s pspspHs pspspsp_s ps p2iqs psp2p~1up1ss ps p2}s psp(2p1up1070,0 #01 0 pց>rprpr>r Exists, P(urge ? PurgeddSavedName of Text file ? .TEXTName of Binary file ? !!!BEGIN!!!.. !!!END!!!..Line  illegal char in checksumLine  bad checksum of expected Line  missing "." before checksummLine  has illegal length of  !!!BEGIN!!!..Decoding file !!!END!!!..error writing final disk blockkLongitudinal checksum error closed successfullyyLine  disk write error&Decorous end of Ascii file encounteredd No data encountered in text fileeEnd of file in a data filee-B i n a r y / A S C I I C o n v e r t e r Version 1.0 of 11 Jun 844-Copyright 1983-84, RB&A. All rights reserved.ASCII to Binary ? YesBinary to ASCII ? YespJC0# EXTRAIO STRINGOPPASCALIOFILEOPS   nRECEIVE  \&LRAMDISKBD F ZD&mRECEIVE "6`p`˧ 8 8 !h X8)8 !!x80Ċ !!x8A h! r prp4spp0!x;4`sp"r p Pr pr p p4 sp 9<8S 761/rprp1r prp4spp\4\ 2ׁ464065/rprp@r prp4spp1 ˏ$rp<tp1rp>tp.tp122 4 2tp&8Z!24 2tp4sp 4s~Bad character in transmission *Device name for recieving (example #4:) ? Block number out of sequenceeChecksum errorr TEXTRAIO FILEOPS PASCALIO LTEXTIN V&LRAMDISKBDF ZD&KTEXTIN U8rpr prphrpr pPr pr prppsph!)r pr prp Ԋhrp1r pPr pr prp *spp*sph!Br pr prp ԃȆ*r *rp;rpKr pr prp*spsppؐmrpl$*sp3rpYr pr prpsppsprpcr prpp!thp,rpmr pr prpp! ˏ$rp<tp!rp>tp.tp!i%˧j" 3"" *$l$rpur prpf$"%m%ұ#ռp"hrpr p$Pr pr p$p$sph.r p$r pr prp Ԅptp4rpr p$r prpspprpr prprp sppˁpJtp4rpr p$r prpsppsp-rpr p$r prpppLp$xU#p#˧0T0t/0A0aspp##pp$xh նd! p! i!՜d#tjp3rpr p$r prpspp#k!i!dd!p#ˀ.#p# ˏ# #pL*Vs.srpr pr prprpr pr prprpp0C0c*0R0r0Q0qp tpԑ*ss.Convert raw text to UCSD p-System .TEXT formattSource file for conversion? Could not open !Destination file for conversion? Could not create Error writing output file Error closing file Conversion completeError reading Line > 255 charactersReceive text into what file? File  could not be createdError writing to A(bort or  T(erminate receiving? Error writing to Error closing Error writing to TEXTIN program - Version 1AAC(onvert, R(eceive, Q(uit ? uW EXTRAIO FILEOPS PASCALIO  SEND &LRAMDISKBDF ZD& SEND :`#`pji!"!iU 0 A o  ˏ0 \r/[rs pPs ps pp\rps psps p1p122 ˏ$sp<tp2sp>tp.tp\2tpS22ˏ 33˧3 ˏ 30 2 ˏ}4426Z \r/rDevice name (example #4:) ? Number of blocks to send ? - :EXTRAIO PASCALIOFILEOPS  DUPLICAT HCCopyright 1978,79 Regents, UC; Copyright 1984 SofTech Microsystems 88PDUPLICAT3`r prp Y yi sprpr prprpr pr pr prp지#t2 지0지0지0/r prprpj2pp <r prprppׁ˧Mr pprpׁx hr p!ׁ˧spӚr prprpׁx#r prpr p r pHr p6ׁ 2p2pr per p!ׁ˧spӚr prpr prp!r pr p(Duplicate Directory Marker { 12/12/83 } , Enter Volume ID # [i.e. 4,5,9,12,etc... : *** INVALID VOLUME ID *** *** NO SUCH VOLUME ON LINE *** 4Illegal volume name. Do you want to mark it anyway? 1A duplicate directory is not being maintained on : .;WARNING! It appears that blocks 6 - 9 are not free for use." Are you sure that they are free? 3 Are you sure that blocks 6 - 9 are free for use? , Do you want the directories to be marked? + Directories are now marked as duplicate. 6 A duplicate directory is already being maintained on : . Mark not done. Type to exit. STRINGOPEXTRAIO PASCALIO  BREMOTETA ag?Copr (c) 1977,78,79 Regents UC, 1980,81,82 SofTech Microsystems-88vAREMOTETAag;p"`p$`x p`p$)`*P,5rr `r r ,rrp,rr rUUUR pp.UR pp2UUUȊ`!` ` pp5J` pp9`i` pn s( r`r < aAh a sr i1ׁ ~-1~s~i; 3` ppD`0p Q` 0` 0 ȇ 0`` . 56? 46rGr R-1s-tp6rVr > -1~spi 1ׁ ohi5n&6եj3 k# 4#m"%j%0m ##%Ȇ#l"$j$0l ##$#k  ppa"0j "Ȅ "  ppen&. h? րiN-t'rmr 62>rxr .UR p/SՋU:Țr dPr r dp-dtpΚr dPr r d -tpd.j".U"d""j<ҳ r dPr r dpU;d.j".U"d""j<Ҳr dPr r dUR pU8ȑp-dtpһUR pU9ȑ /,U7pU,i!,b!U!!irU-t-btpr br 0 THEN &BEGIN (UNITREAD(1,TwoChar[0],1); (IF (TwoChar[0]='Q') OR (TwoChar[0]='q') THEN EXIT(PROGRAM); &END; $UNITSTATUS(7,Status,1); $IF Status[0]<>0 THEN &BEGIN (UNITREAD(7,TwoChar[0],1); (UNITWRITE(2,TwoChar[0],1); &END; "UNTIL FALSE;  END.   {Alternate version for pre-Version IV systems  BEGIN {RemInTest}  REPEAT $UNITREAD(7,TwoChar[0],1); $UNITWRITE(2,TwoChar[0],1); "UNTIL FALSE;  END.  }  O^֥ { Program for testing Remote Output Serial Channel }  { Version: 1A 16-Jul-82 }   PROGRAM RemOutTest;  CONST "Delay=750; {Adjust down for slower machines}  VAR "Line:STRING; "TwoChar:PACKED ARRAY[0..1] OF CHAR; "I,Dly,Lines:INTEGER;  BEGIN "Line:='ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789abcdefghijklmnopqrstuvwxyz'; "TwoChar[0]:=CHR(13); {Carriage return} "REPEAT $WRITELN; $WRITE('Lines to output (0 quits) ? '); $READLN(Lines); $IF Lines=0 THEN EXIT(PROGRAM); $FOR I:= 1 TO Lines DO &BEGIN (UNITWRITE(8,Line[1],LENGTH(Line)); (UNITWRITE(8,TwoChar[0],1,0,8); (FOR DLY:=1 TO Delay DO {Nothing}; &END;  UNTIL FALSE;  END.  REMUNIT 2Copyright 1979 - 1983, RB&A. All rights reserved.\dF"\"   TYPE (CrDialResult = (CrOffHook, CrDialError, CrNoAutoDial ); (CrBaudResult = (CrBadParameter, CrBadRate, CrSetOk, CrSelectNotSupported); (CrWhoAmI = (CrOrig, CrAns); (CrState = (CrOn, CrOff, CrAuto); (CrRemPort = RECORD ,Part1 : INTEGER; ,Part2 : INTEGER ,END;   VAR (CrAttenChar : CHAR; (CrCurrentPort : CrRemPort;    PROCEDURE CrCommInit (Dir : CrWhoAmI; 6Atten : CHAR; 2VAR RemExists : BOOLEAN; 2VAR DialerExists : BOOLEAN);  PROCEDURE CrSetCommunications (Parity : BOOLEAN; ?Even : BOOLEAN; ?Rate : INTEGER; ?CharBits : INTEGER; ?StopBits : INTEGER; ?Dir : CrWhoAmI; ?Model : STRING; ;VAR Rslt : CrBaudResult );  PROCEDURE CrCommQuit;  PROCEDURE CrPutRem (c : CHAR);  PROCEDURE CrAnswer;  PROCEDURE CrBreak;  PROCEDURE CrDial (Number : STRING; WaitChar : CHAR; VAR Rslt : CrDialResult);  PROCEDURE CrHook (OnHook : BOOLEAN);  PROCEDURE CrSetAddress (Port : CrRemPort);  PROCEDURE CrDelay (Tenths : INTEGER);  PROCEDURE CrSetDtr (Setting : CrState);  PROCEDURE CrSetRts (Setting : CrState);  FUNCTION CrRemStat : BOOLEAN;  FUNCTION CrGetRem : CHAR;  FUNCTION CrCarrier : BOOLEAN;  FUNCTION CrClearToSend : BOOLEAN;  FUNCTION CrRinging : BOOLEAN;  FUNCTION CrDialTone : BOOLEAN;  FUNCTION CrKbStat : BOOLEAN;  FUNCTION CrGetKb : CHAR;   IMPLEMENTATION REMUNIT G4+b,Pbih ! b  h-" "j!0jh 0 5 0kkk)`,Pp"  `  p"+*.-h h i!  ! !j j&  p pQ  p pip$ hp$h   ip$xhp$xh` p4 `i`i`!` p` p`i$jh "ki!#!i h=`` p `pT3 hhw 2X"3hT,WPia3ra,RraX#UĊUX 35-3):67/f1P8765 4 3 f mh % 9 aA hA raK6ibD rbH rb 5b 8b 7ʇ4bʊbdʀap06s¿8>$ #p""pp"""xp"xL`!Ċ!ĖG Y`"`j `aptpAT #E Q V X1 S7=60 S10=30 S11=36 S12=40+++#E Q V X1 S7=60 S10=30 S11=36 S12=40ADTTHOH11MASKKFLOWINNFLOWOUTMaskk/[B >!&bD,!7*** REALOPS STRINGOP REMUNIT 2Copyright 1979 - 1983, RB&A. All rights reserved.\dF"\"   TYPE (CrDialResult = (CrOffHook, CrDialError, CrNoAutoDial ); (CrBaudResult = (CrBadParameter, CrBadRate, CrSetOk, CrSelectNotSupported); (CrWhoAmI = (CrOrig, CrAns); (CrState = (CrOn, CrOff, CrAuto); (CrRemPort = RECORD ,Part1 : INTEGER; ,Part2 : INTEGER ,END;   VAR (CrAttenChar : CHAR; (CrCurrentPort : CrRemPort;    PROCEDURE CrCommInit (Dir : CrWhoAmI; 6Atten : CHAR; 2VAR RemExists : BOOLEAN; 2VAR DialerExists : BOOLEAN);  PROCEDURE CrSetCommunications (Parity : BOOLEAN; ?Even : BOOLEAN; ?Rate : INTEGER; ?CharBits : INTEGER; ?StopBits : INTEGER; ?Dir : CrWhoAmI; ?Model : STRING; ;VAR Rslt : CrBaudResult );  PROCEDURE CrCommQuit;  PROCEDURE CrPutRem (c : CHAR);  PROCEDURE CrAnswer;  PROCEDURE CrBreak;  PROCEDURE CrDial (Number : STRING; WaitChar : CHAR; VAR Rslt : CrDialResult);  PROCEDURE CrHook (OnHook : BOOLEAN);  PROCEDURE CrSetAddress (Port : CrRemPort);  PROCEDURE CrDelay (Tenths : INTEGER);  PROCEDURE CrSetDtr (Setting : CrState);  PROCEDURE CrSetRts (Setting : CrState);  FUNCTION CrRemStat : BOOLEAN;  FUNCTION CrGetRem : CHAR;  FUNCTION CrCarrier : BOOLEAN;  FUNCTION CrClearToSend : BOOLEAN;  FUNCTION CrRinging : BOOLEAN;  FUNCTION CrDialTone : BOOLEAN;  FUNCTION CrKbStat : BOOLEAN;  FUNCTION CrGetKb : CHAR;   IMPLEMENTATION REMUNIT [*a+Prar r h   sr ڤ-,  p p  p pp$ hp$h   ip$xhp$xh4` p4 `i`iF`!` pX` p`i|$jh "ki!#!i h`` p `p3p$h  ii 3h h*a-Pr$r ar ,+Ċ+. B 39r:r :Gr rOr r+ 3$r: Vr kr d/f1P8765 4 3 f mh % t aA h| taK6ib tb tb 5b 8b 7ʇ4bʊbdʀap0Ė8$ #p""pp"""xp"x`!Ċ!Ė  `"``apup ? [y/n] : @@Get a good Dial ToneePlease Dial : Did you Succeed in DialinggPhone assumed On Hook in Originate mode. Answer mode..)Phone assumed Off Hook in Originate mode.Answering Phone..MASKKFLOWINNFLOWOUTMaskk g[wE0L*** STRINGOPEXTRAIO PASCALIO RECOVER #!CCopyright 1978,79 Regents, UC; Copyright 1984 SofTech Microsystems 88PRECOVER <2D"ih !" 짃" " 지aA ۖ$l"# i#b!x!!!!!M*h !!  ڡ h !l "# pm!! !!!y!x! ! !  ɀd(h !! ڡ h !lG!h""`"`ȖM j"""""0"MĚt t )t142pp9t t>t t`2`s u ċ ~ ~䅁 u~ ~Ċl  `v` h` v`Sv`v`짢Ȇ지90Ȇ짢 1 T 1 0Ȇ 1 ˏ0 )˧ ) )˧YY _h)˧dj  h )˧) dž a va  ppĖhb ۃnۛx2xpi!!bh!x xċćx2xp@i!˧v!i!h 3hi!!˧h! 2xp` x ԍ xĊր|ih! !!M x!h!i / M x  M x ji!"!M !M !ޅ M j""/". kc vcvc. kc vcvc.  kc vcvc" " " DxĚt  t t t-w/tthjk"@#Յ"˧ ۃۛBi"!˧!짰!!i"˧짰!k" "˧ h @j"ji#a$h a  # "āh  ˧" "x82$pˆpp" "x""x2$p"x!$# $ $ ""x!"2$pgĀ@h ˧ h釀 ćxզ@ keph `e xje yif ! y i!! "!l "!l$#$k 튚#׳#؇׆ ؅ 2pز`M  M "& M ## M  !Ċ!Ėkih !$ M j"x"yk"y ֖Y M_M y  hh 0F?2 p 0a ! 0a! 0a!M˥M h h h2 pp p2 pp p2 pp p2 pp p' b%`$2b`s %$ 2bs%%$%$$? t tt tt 2p2֚t t t p2˛TTs|2 }2˛TTs,`2`st 2tt,t 2ttt tp, uM˅-M j""M˥M MM˥*t tt p0MM˥h m M˅% M t t t6 ji!"!M !M ! hM˥ hv t t t #wt+@G@G%GO AHEAD AND UPDATE DIRECTORY? (Y/N) @@WRITE OKK)SECTOR ID ERROR--DISK MUST BE REFORMATTED.DUMMYNNXX y.TEXT.CODE.SVOLFile  inserted at blocks Recover [IV.1 I]]022PROGRAM!USER'S DISK IN DRIVE# (0 exits): 1USER'S VOLUME ID:UNABLE TO LOCK UNIT LOCKED FILES ON UNIT UNABLE TO REMOVE LOCKSSHow many blocks on disk ?  foundd/Are there still IMPORTANT files missing? (Y/N) @@[6VjXiw$ EXTRAIO STRINGOPHEAPOPS PASCALIOLOCK SCREENOP INITIALH!@(-----| TELEVIDEO 925  '8.'''''H1FI,G6#0:<=>  6$P 10-----| 31dbhgf.0G0XU()() FREEDOM 10025  %-78.'%%&%HR1FI,G6#0:Q<=>  6$P 2p0FGEHKJ 31dbhgf.1e G0XU%$()VT 102LH!@(   PP-----|  H SAGE QUME 102 '-78.'''''HR1FI,G6# 6$=>P p0fgehkj 31}{G0XU%$()VT 52ALH!@(  -7 #P -----|H C HJGFEMPTYALH!@(EMPTYALH!@(EMPTYALH!@(EMPTYALH!@(EMPTYALH!@(EMPTYALH!@(EMPTYALH!@(EMPTYALH!@(EMPTYALH!@(EMPTYALH!@(EMPTYALH!@(EMPTYALH!@(EMPTYALH!@(EMPTYALH!@(EMPTYALH!@(EMPTYALH!@(EMPTYALH!@(EMPTYALH!@(EMPTYALH!@(EMPTYALH!@( "MNUUNIT SIOUNIT MUTRMSETINITMENU 7 ( MUTRMSETACopyright (c) 1983 SAGE Computer Technology, All Rights Reserved "  TYPE " "MNU_Cat = (MNU_Integer,MNU_String,MNU_Hex,MNU_OnorOff,MNU_SubMenu,MNU_Event, -MNU_Choice); "MNU_Status= (MNU_Done,MNU_Get,MNU_Put,MNU_Enter,MNU_ReEnter,MNU_Exit); "MNU_Style = (MNU_1Style,MNU_2Style); "  VAR " "MNU_Value:INTEGER; "MNU_HighValue:INTEGER; "MNU_Boolean:BOOLEAN; "MNU_StrValue:STRING; " "MNU_State:MNU_Status; "MNU_MenuNumber:INTEGER; "MNU_ItemNumber:INTEGER; MNU_General:INTEGER; "MNU_Category:MNU_Cat; "MNU_Fancy:BOOLEAN; " "MNU_Aborted:BOOLEAN; "MNU_Reject:BOOLEAN; " "MNU_File:FILE OF CHAR; "MNU_Fopen:BOOLEAN; " { Procedures to Define a Menu }  PROCEDURE MNU_Menu(MenuName,MenuTitle:STRING; MenuStyle:MNU_Style; MenuNumber, 3MenuWidth:INTEGER); PROCEDURE MNU_CopyM(OldName,MenuName,MenuTitle:STRING; MenuNumber:INTEGER);   { Procedures to Define Items in a Menu }  PROCEDURE MNU_ItemI(ItemName:STRING; General,Number:INTEGER; 4HighLimit,LowLimit:INTEGER);  PROCEDURE MNU_ItemS(ItemName:STRING; General,Number:INTEGER);  PROCEDURE MNU_ItemO(ItemName:STRING; General,Number:INTEGER);  PROCEDURE MNU_ItemM(ItemName:STRING; General,Number:INTEGER; 4MenuName:STRING; DispSubItem:BOOLEAN);  PROCEDURE MNU_ItemH(ItemName:STRING; General,Number:INTEGER; 4Digits:INTEGER);  PROCEDURE MNU_ItemE(ItemName:STRING; General,Number:INTEGER; 4Redisplay:BOOLEAN);  PROCEDURE MNU_ItemC(ItemName:STRING; General,Number:INTEGER); PROCEDURE MNU_CopyI(MenuName:STRING; Number:INTEGER);    PROCEDURE MNU_Show(MenuName:STRING);   PROCEDURE MNU_Loop;  { Procedures for User Screen Output }  PROCEDURE MNU_ClrScreen;  PROCEDURE MNU_Error;  FUNCTION MNU_YesorNo(Prompt:STRING):BOOLEAN;    IMPLEMENTATION  MNUUNIT   Fatal error  in menu systemDuplicate menu Could not find menu for copyNo menu defined before itemIncorrect item for menu styleCould not find Menu for displayyOnnOffCould not find menu *$/RjSubmenu  is not correct styleCould not find referenced menu Menu  is  characters too wideeToo many items in menu  -  - 'Select Menu item : Error writing to file , Type space to continuee  Illegal integer valueValue out of range  to  Illegal hex valueONNOFFMust enter ON or OFFF~: 'Select menu item : Error closing previous file File for printout: .TEXTCould not open &Warning - item will not fit in displayy^Y or N? Error closing printout file ntpupt p! !tp t ptprhp! p! Ȗ+b,Pbi`!v!b bp .-2+I? Ib? NP1i 1| p2( |gph Xd40( <?6hI? N0XdBh `0( <1vh `p0(`= N.6,I? If? NPp0(bBv0)ܰ|gD0)<?6hI? N0Xd1i`6I? BgI? N`I? BgI? N0(|gd0(<1vh 1| p2( |gph Xd*0( <06h<06hhdfBh `0( <1vh `0( r2(b<=hN0O2mrtpT,ZPbXP,` t p,t ph wehdehąhehi!!,!b!V!U!!W!! !w!yĘi[}UP,PbPU` *t pUt p$t ph wehąhehi!!,!b!~! ! {! }! ! ! y!y!yxĘi1,`w +h,+-ć-y, , -yć,,ć,-| &-|-~+Ċa,+aĊ ąi h Ċi i-h)t ph} ,7t phzt pAt p+b0P`w i!!b!/!.!-!,! 1+b.P`w i!!b!-!,! /,+b.P`w i!!b!-!,! /vT,ZPbVP`w i!!,!Y!X! b U [+b/P`w i!!b!.!-!!, 0+b/P`w i!!b!.!-!!, 0 +b.P`w i!!b!-!,! / 8*a,Pa+` x - )`*P`jj0Gt p`t pRt ptpj{kj~.c+ ) ``` p`P ) .gaYPjhky|0as aPky}++ 1+as +0+as 2 aZPa\Pky~qky},,9.,{--.-y{0.-x-. a-yyP'^t pky}t ptp0ky{aiPրja ga ȅk|k|aP. hkաk|Տc-kyj"|d"~^"}a!7!}!~.*st p"}t pxt pt p"}t pj~."{/"z0"|1hkxkch M juphj jiu ss!oOt pjzt pt ps!otpt ptp!rtsos!stt  tusqrstsj"j|wwwwwqlqm pxy 0)<1vh 0(|oSh0( <1vh `p0( = Nny2r tptpx 5t5tw wupx 5 wuj|t ptpx5j|t 5ttpx5tqnj"&soi!'!q"k#uյ#`#A#l[#$ 0#lL#$*lB#%#l8#& a#&l&t pjzt ptp $ !rt "ʚ$upt p yyt px5$u5t 5 yyt j yym% %upx 5 %u upx 5 u | |t px 5 |t &j jupx 5 ju!s\t upx 5 u|upx 5|ut tupx 5 tu!i.tpx5t"j tpx&5t5t 5t5t5txy<2 qrtpt pzt ptprvCupt p`t ptpt p 2tptp4ggh`siky|kyj`s奁g`si gg t p0"}0"~2gt p"~tpt p"}tpPx`s奁g`si gg t p;s !g t pցtpffwfąfĊ-fxwfĭfĭĭffxffjąkyh {/ z0 } -g2 qrtpkyyt pt pPt pt p3!g"c-kyhj~. {/ z0 |1c-kyij~.!{/!z0!|1!{j{h L |B |: | | / | | ȅ2" j ɔ  |t p xh!-kyhj~. {/ z0 |1ky}cc-i2qrqrt p`t ptpՐ ! c3 pj& a z aAhj{k!允kk{ ikxk!+ky|k#"###$#%  =2 qrtpb@5 p0up0t pzt ptprvb?t pzt pt pzfIzs 5z pG2 qrtpupLt pzt ptprvb /bx up t pci!*-9hc!4W2*kj kɔ k|t p tpg2qrTt pncc4g j}c3c#4cj j{kcskxkfc\ X-hQj~.h-c@f1fz$fzz hfąfyfyf-ccցh 4Z2r tptpn,c-Phj/ct p upat p!Y!y!up/jD!N!n j!up,tpt pup rt ph"Ԗtp.<`r;ɥp;ɥo<ɥ2<5a dehijkfcn43xb& bG5 p7tpupwt pzt ptprvb5  { x 6$ [Q{tT /  wZ= &*** FILEOPS GOTOXY STRINGOP HEAPOPS EXTRAHEAEXTRAIO PASCALIOSIOUNIT SCREENOP    FUNCTION SIO_IntRd (VAR Cursor:INTEGER; VAR Source:STRING; VAR Result:INTEGER): 4BOOLEAN;  FUNCTION SIO_HexRd (VAR Cursor:INTEGER; VAR Source:STRING; VAR ResultH, 4ResultL:INTEGER):BOOLEAN;  FUNCTION SIO_AlphRd(VAR Cursor:INTEGER; VAR Source:STRING; VAR Result:STRING): 4BOOLEAN;  FUNCTION SIO_AlNuRd(VAR Cursor:INTEGER; VAR Source:STRING; VAR Result:STRING): 4BOOLEAN;  FUNCTION SIO_CharRD(VAR Cursor:INTEGER; VAR Source:STRING; Check:CHAR): 4BOOLEAN;  FUNCTION SIO_ByDlim(VAR Cursor:INTEGER; VAR Source:STRING; Check:STRING): 4BOOLEAN;   PROCEDURE SIO_CharWt(Value:CHAR; VAR Result:STRING);  PROCEDURE SIO_HexWt (Value:INTEGER; Digits:INTEGER; VAR Result:STRING);  PROCEDURE SIO_IntWt (Value:INTEGER; VAR Result:STRING);  PROCEDURE SIO_Fill (Count:INTEGER; VAR Result:STRING);  PROCEDURE SIO_Upper (VAR Result:STRING);  PROCEDURE SIO_Suffix(Suffix:STRING; VAR Result:STRING);   IMPLEMENTATION SIOUNIT 3k"x! !"xk""xĖ+b,P0i/x.Q./xhb b 0//xĊi*b!b bpb 0//xĊiii!Ԡ/ o$ijh&%-j &%+&x%(%&xk#h&&x$$x #0Ċii! o"$$xĖ %$h'x&[&'xj"G ''x" 0i"A ia i$xk%%xc ɢ$$x"!Ċhh Ԙmh$x#!#$xi! m$$x!"hh Җ$#"mpmh$x##$xi! $$x!"hh Ԗ?#,#jh "!# i!a!z # !aA hږ{P p`P` {`r`{`{``지.**Pr*{r*P지. r46s` s5nf5Prf`ZrfP6 P !ȖK&&2'k&li!$&c!h 0 jA j"%!iՖz||Q)`|`| p{**{Pr*`r*P|t~~~"dx T ***  LONGOPS STRINGOP MUTRMSETn1 a z aAi ik Pw pw p p   s ii2wpw pU#w p p w p2w pwpԬUY= WW`WȇWW_WWpW_ȇWWWWWȇWW߄ˀ-Ȅˀ-Ȅˀ-Ȅˀ-Ȅˀ-Ȅˀ|WWWȇWWWWWȇWW0YWWwp0A WW p,wpDw pw pwpp p.wpMw pw pwpp`UPWWU`쇄WAȄ*W)`P VS 0` PWwpWWwp WWO*W)w p *W)vp*W )w pwpWWwpU@Xw p`Pw pw p`짐XXAXZɇXAUU pwpY0gw p`Pw pw p`짐XXArw pwpXBXZԮXATT pwpY0 T p0Ywpw p`Pw pw p` w pwp` ``s 0` 2+3兛At w pw pw p`w p y Ywp|.00˧c)Pq00_˧c)PS0iP0W!˧h չ!ˏ",,P ,Q ,P 2,,P ,  R) ,PT $,,P ,S ,P+bPb ț,,P ,b ,P!i !ˏ#gP0S0˧ȊL/?0G0˧0G0˧#0G0˧0G0˧րϊր| .s m%c)n%m%c&&+.00%Ȋ00_%Ȋ)r"vpw pw p42P Q Pm%Y k# ##$g%)# P#  g%)P%m   ٛrw p4pm%o%g%)%ċ%g%)ċg%)g%)지^#g%)s %g%)지@ċg%)s jg%)(g%)지Hbg%)a`s % Ą%x\g%)%Ċ? l$1g%)$ R)%$Ā l$lȊց%x2r"vpg%)w p w p4p%mm% 0W0%˄%x%mّr6w p4p0S0˛Ȋy/l0G0˚0G0˚ˏȊ>0G0˚Ȋ+0G0ˀȊ0G0Ȋց@ցX - udr r - .3 .ցg-І *.DATA8Name of terminal definition file : Name of new file :  could not be createdINITIALEMPTYError writing to Error opening X - Source record < A to clear>? Destination record? +Sorry, you can't modify the initial record.7New name of the destination record ? #13 characters maximum -- Try again.Ready to write changes to ? (y/n)  DELXX r" is not a function namee    $Maximum of 4 characters per sequenceeDEL*" is not a recognized character identifierrOne character onlyy OOOOQMAINNeo 8FSTRINGOP FILEOPS PASCALIOEXTRAIO SCREENOPSIOUNIT MNUUNIT  INITMENU $.vpt w pwpwpw p!$r2DrGXrZfrh xr{~rrrrrrrrr r r r r r rrrrrrrrrrr r&r,r2r8r>rDrJLr]irlxr{rrrrrrrrrrr r r r r rrrr rrrr!r'r-r3r9r?rErKrQrWr]rc rilr!r"r#r$r%r&r'r(r)r* r+ r, r- r. r/r0r1r2r3r4r5r6r7r 8r9r:r;r$<r*=r0>r6?r<@rBEr[AraBrgCrmDrsEryFrGrHrIrJ rK rL rM rN rOrPrQrRrSrTrUrVrWrXrYrZr[r\r]r ^r_rr#,r/=r@ NrQTrdrkrrrz rrrrr r$ r( r, r0 r4 r8r<rrr r0@rCDrTHr`LrlPrxTrXr\r`rd rh rl rp rt rxr|rrr r'r7rHrXrirxr rrrrrrrr r r r r r, r9 rFrSr`rmrzrrrrc)Pc)Pc)Pc)Pc)Pc)Pc)Pc)P c)P c)P c)P c)P c)Pc)Pc)Pc)Pc)Pc)Pc)Pc)Pc)Pc)Pc)Pc)Pc)Pc)Pc)Pc) Pc)Pc)Pc)PԀ c)PԀ!c)PԀ"c)#PԀ#c)&PԀ$c))PԀ%c).PԀ&c)1PԀ'c)6PԀ(c);PԀ)c)?PԀ*c)CPԀ+c)GPԀ,c)KPԀ-c)OPԀ.c)SPԀ/c)WPԀ0c)[PԀ1c)_PԀ2c)cPԀ3c)gPԀ4c)kPԀ5c)oPԀ6c)sPԀ7c)wPԀ8c){PԀ9c)PԀ:c)PԀ;c)PԀ<c)PԀ=c)PԀ>c)PԀ?c)PԀ@c)PԀAc)PԀBc)PԀCc)PԀDc)PԀEc)PԀFc)PԀGc)PԀHc)PԀIc)PԀJc)PԀKc)PԀLc)PԀMc)PԀNc)PԀOc)PԀPc)PԀQc)PԀRc)PԀSc)PԀTc)PԀUc)PԀVc)PԀWc)PԀXc)PԀYc)PԀZc)PԀ[c) PԀ\c)PԀ]c)PԀ^c)PԀ_c)PԀ`c)PԀac)#PԀbc)'PԀcc)+P R)/P R)1P R)3P R)5P R)7P R)9P R);P R)=P R)?P R)AP R)CP R)EP R)GP R)IP R)KP R)MP  R)OP  R)QP  R)SP  R)UP  R)WP  R)YP  R)[P  R)]P  R)_P  R)aP R)cP R)eP R)gP R)iP R)kP R)mP R)oP R)qP R)sP R)uP R)wP R)yP R){P R)}P R)P R)P R)P R)P R)P R)P R)P R)P R)P R)P R)P R)P R)P R)P R)P R)P R)P R)P R)P R)P R)P R)P  R)P  R)P. Multi-User Terminal Set-upp Initializing MAINNMulti-User Terminal Set-upp"Define control character functionssCTRLL Define escape sequence functionssESCDefine output sequencesOUTDefine terminal characteristicsTERMMCTRLL"Define Control Character Functionss CTRL-A 01H CTRL-B 02H CTRL-C 03H CTRL-D 04H CTRL-E 05H CTRL-F 06H CTRL-G 07H CTRL-H 08H CTRL-I 09H CTRL-J 0AH CTRL-K 0BH CTRL-L 0CH CTRL-M 0DH CTRL-N 0EH CTRL-O 0FH CTRL-P 10H CTRL-Q 11H CTRL-R 12H CTRL-S 13H CTRL-T 14H CTRL-U 15H CTRL-V 16H CTRL-W 17H CTRL-X 18H CTRL-Y 19H CTRL-Z 1AH CTRL-[ 1BH CTRL-\ 1CH CTRL-] 1DH CTRL-^ 1EH CTRL-_ 1FHESC Define Escape Sequence FunctionssESC 20H through ESC 40HESCAAESC 41H through ESC 60HESCBBESC 61H through ESC 7FHESCCCESCAA*Define Escape Sequences ESC 20H - ESC 40HH ESC SP 20H ESC ! 21H ESC " 22H ESC # 23H ESC $ 24H ESC % 25H ESC & 26H ESC ' 27H ESC ( 28H ESC ) 29H ESC * 2AH ESC + 2BH ESC , 2CH ESC - 2DH ESC . 2EH ESC / 2FH ESC 0 30H ESC 1 31H ESC 2 32H ESC 3 33H ESC 4 34H ESC 5 35H ESC 6 36H ESC 7 37H ESC 8 38H ESC 9 39H ESC : 3AH ESC ; 3BH ESC < 3CH ESC = 3DH ESC > 3EH ESC ? 3FH ESC @ 40HESCBB*Define Escape Sequences ESC 41H - ESC 60HH ESC A 41H ESC B 42H ESC C 43H ESC D 44H ESC E 45H ESC F 46H ESC G 47H ESC H 48H ESC I 49H ESC J 4AH ESC K 4BH ESC L 4CH ESC M 4DH ESC N 4EH ESC O 4FH ESC P 50H ESC Q 51H ESC R 52H ESC S 53H ESC T 54H ESC U 55H ESC V 56H ESC W 57H ESC X 58H ESC Y 59H ESC Z 5AH ESC [  5BH ESC \ 5CH ESC ] 5DH ESC ^ 5EH ESC _ 5FH ESC ` 60HESCCC*Define Escape Sequences ESC 61H - ESC 7FHH ESC a 61H ESC b 62H ESC c 63H ESC d 64H ESC e 65H ESC f 66H ESC g 67H ESC h 68H ESC i 69H ESC j 6AH ESC k 6BH ESC l 6CH ESC m 6DH ESC n 6EH ESC o 6FH ESC p 70H ESC q 71H ESC r 72H ESC s 73H ESC t 74H ESC u 75H ESC v 76H ESC w 77H ESC x 78H ESC y 79H ESC z 7AH ESC { 7BH ESC | 7CH ESC } 7DH ESC ~ 7EH ESC DEL 7FHOUTDefine Output SequencesPart A (General))OUTAAPart B (Screen attributes))OUTBBPart C (Window characters))OUTCCOUTAADefine Output Sequences, Part A * Cursor home * Cursor down* Cursor rightt* Cursor new line* Clear screennClear all tabssSet tab at cursor Normal videoo Reverse videoShow status lineeShow user lineeLoad user linee#Change cursor attr. (start of seq.) Invisible cursor (preceded by M))!Select fill char. (start of seq.)!Normal fill char. (preceded by O)Screen overwrite modeScreen insert modeeOUTBBDefine Output Sequences, Part B%Set lump screen attr. (start of seq.)!Normal lump attr. (preceded by A)Clr screen attribute 00Set screen attribute 00Clr screen attribute 11Set screen attribute 11Clr screen attribute 22Set screen attribute 22Clr screen attribute 33Set screen attribute 33Clr screen attribute 44Set screen attribute 44Clr screen attribute 55Set screen attribute 55Clr screen attribute 66Set screen attribute 66Clr screen attribute 77Set screen attribute 77OUTCCDefine Output Sequences, Part CCharacter for upper left corner Character for upper right cornerrCharacter for lower left corner Character for lower right cornerrCharacter for horizontal lineCharacter for vertical lineTERMMDefine Terminal CharacteristicsTerminal Width (char/ln))Terminal Height (ln/scrn)ANSI parameter sequencessVisible lump char..Cursor wrap-arounddHome cursor on clr scrnMove curs. on no tab stopCoord. conversion codeeASCII normal cursor attr.Separately altered attr..Attr. cleared togetherrLump alterable attributesASCII conv. for lump charBit mask for monitor modeLump bit affecting attr 0Lump bit affecting attr 1Lump bit affecting attr 2Lump bit affecting attr 3Lump bit affecting attr 4Lump bit affecting attr 5Lump bit affecting attr 6Lump bit affecting attr 7ESCSEQQIGNOREEIGNORE2IGNORE3IGNORE4IGNORE5IGNORE6IGNORE7UNUSEDDCUPCUPSCRRCDNCDNSCRRCLFCLFWRPPCRTCRTWRPPCCRCHOMECNEWLCGOTORCCGOTORRCGOTOCCCATRRCTABBCBKTABBSETTABBCLRTABBCLRALLTERBOLEREOLEREOLNULLERLINEEERBOPEREOPEREOPNULLERSCRERSCRNULLERSCRATRRSETATR0SETATR1SETATR2SETATR3SETATR4SETATR5SETATR6SETATR7SETREVVSETATRRCLRATR0CLRATR1CLRATR2CLRATR3CLRATR4CLRATR5CLRATR6CLRATR7CLRREVVUNUSEDDLOADUSERRSHOWUSERRSHOWSTATTUNUSEDDUNUSEDDUNUSEDDUNUSEDDUNUSEDDUNUSEDDUNUSEDDINSCHRRDELCHRRINSLINNDELLINNINSONINSOFFFUNUSEDDUNUSEDDUNUSEDDUNUSEDDPARSANSIILOADFILLLDSPCTRLUNUSEDDUNUSEDDUNUSEDDUNUSEDDUNUSEDDUNUSEDDUNUSEDDUNUSEDDUNUSEDDUNUSEDDUNUSEDDUNUSEDDUNUSEDDUNUSEDDUNUSEDDUNUSEDDUNUSEDD^AASOH^BBSTX^CCETX^DDEOT^EEENQ^FFACKBELBELBSSBSSHTTHTTLFFLFF^KKVTT^LLFFFCRRCRR^NNSOO^OOSII^PPDLE^QQDC1^RRDC2^SSDC3^TTDC4^UUNAK^VVSYN^WWETB^XXCAN^YYEMM^ZZSUBESCESC^\\FSS^]]GSS^^^RSS^__USSSPPSPP xW jP?/ #b%&1(uCHGROUP CHSERVICCHUTILS PRSINGLELOCATOR DISKSHARPRNTSHARSMTYPES SMSERVERSEGSMSRVSEGSMQUISMSERVICSMMANAGESMCLEAR SMSINQUIPARSE   \-  < <  ASMSERVERSMSERVER2 #- ,!CCopyright 1979,80 U.C. Regents; Copyright 1984 SofTech MicrosystemswCHGROUP mb1%i  t i9i t t i#(h)th)t h  p)ti!h5!bth *" "&$#uhր "t"t  Ե)t (! !t! ta kPRSINGLECHUTILS CHSERVICSOCKETS  CHSERVICbQ c.-//#s p`*u J *p j"" "" /i# ctiր!! -  s`*u$`si!!mp #"si #xii! s s!m&ash  op! !$"thր o !s!s`'ash  p! !%#"thր !s!s"ash  kp! !thր k!s222hޖvmM *** EXTRAHEAPRSINGLECHUTILS SOCKETS  VCHUTILS R!Fl!#!xl!xh  "Ċl!Ćޖc"h !  ޖ"i!h! !y!  r! ! !  |Ć!  "! xĆ "ĆޖXv p !!"#xvpv p !!"#xvpv p !!"#xvp v p !!"#xvpvp)j%&&'(%&&'(" %&&'("%&&'("'%t#i)j"y"$'%r"yh!i! $t$j"zi""{"!$j k"x"x"y# h$y $ h mx)++*w iG,o'y(rh'yb)*+xr 'yi!+xh)*Ċ)hhր )x+*w! v pvpjh "շ xi!ա!kvp'v p#yvp/v p#xvp8v p#~vpvpAv p#vpIv p#vpRv p# vpvp[v p# vpcv p#vplv p#vpvpuv p#vp}v p#vpv p# vpvpv p#vpv p# vpvpv pvpv p#xiY hCvpv pvpvp jh "R  k#x> vpv p#{vpv p#xvpvp hޖ ˏik"xh  i!" kh!xh%jh"xik!#!%k!h!xi#Շ "Ċ !x! f!l$yr!$  |$  $ Ċ $  |h!  h $ !$  }$  a*w! r jjjj j jր– th+i0`r0r i to continue...... Dump of Setss timeout : protocol : GV_gtm>*I4v 4% L*** CONCURRE EXTRAHEAPASCALIOTIMEOUT BYTEFLIPCHSERVICSOCKETS  iPRSINGLEPb9#h$a#tj h ""m!m` xp x|lmdunfu` t xvĭ p x}%x|lmdunfu` t xvĭĖ @$#h I% '$&#ti '$&#%ti #x($xu$xj"y "x' h#&Ċ  ( ( )y*u*xĊ))y$lmdu nfu`2tv  ah  !} ,+. p,+ja"v x!o' ' (.('u),+*++,))xp)um.!"2th mn..cdh#  &%% a"v!h i!u!x  ,   !!˭!xp!x v   u   u2t ĭ ĖWah   .ć--`aj #,'h i!u!x  ,   !!˭!xp!x v   u   u2t ĭ Ė? g -`aj #, }  vah    -mneu , -a2th p-- h)+˖k ! yar a xdaxh !$ ć ć ć ć Ė  lmn o   du  ` t , a`tj""y!  +u+ ,x,yj,z j ,| jj  "  u d tk -,{- ,}av"#"h b`ti!$"u"k#x#y#ziibv!lb'h h h h(  }B6AS2u 6V"NEXTRAHEABYTEFLIPCHUTILS CHSERVICSOCKETS  OLOCATOR 5rcH6i iii iiրh*a.P0+ć,TP-h+ r0+xar/('Tha tM,+r,*c U!r ,r j"" %!l$m%)s%)M $*&'('pa t F f/-,ha tK!l$m%M%s+,$-,pkf !rr j#k"#"" a tO r0g8P1:6P7i1!r:t43Thd t:Z$m%n&)M&)s&gP23%*43pk1x U$r1xr j#k"#"" :d t9W('ka#tI,+r,*b#!r ,r h  "!l$m%s%xM $&'('pa#t a rh .m63 EXTRAHEABYTEFLIPSOCKETS  DISKSHARAb"ć!u!u!! "phauh2!! h!! 净ɠh "p bu "p t "pc  "p!rg !U P1w<P Q   1 eg<  "p ln$ Ճe# c&n M瀇xć#yć##}ć#~ć#!ćĊ"m% &"x&p# "P! # ~ćʇ!t   Ċ"c !/k` kl i!!#!"x!"!"|!"}  k7"~ i! ! ~!!"$ʂ* ,`v p@P Pv v kl# ՛mi fe v v r$la ^!ꇀ xć!ć  Ą5ub  "ꇀꄀ! ! "Ċ!釀퇀쇀뗋U v$n% jh "V k##ɡ9a n*!l t$#$ $#~$#$ %x%! h`u    #G #ʇʋi jka vՌ0*v av* *v v R  v v )& ć#ʇʂ] vz#P vPFv hij`  `vv //ׇ5cvc v  dPvPDISK!! LOCAL LOCKS*SPDEVICE,SPREMOTI,PNMSG1B,PNMSG1A,BYTEFLIPP LOCAL LOCKS*SPDEVICE,SPREMOTI,PNMSG1B,PNMSG1A,BYTEFLIPP PDISKINQUIREE*SPDEVICE,SPREMOTI,PNMSG1B,PNMSG1A,BYTEFLIPP*SPDEVICE,SPREMOTI,PNMSG1B,PNMSG1A,BYTEFLIPPQW ?STRINGOP EXTRAHEA REQUESTO BYTEFLIP TIMEOUT SPDEVICESOCKETS PARSE FILEOPS LOCK OSUTIL  PRNTSHARcv:?LDćKuKuKK LphIauh)! ɇɠ!ڠh LphJuJuJ LpJ#J짃 Lpb  LpG  F  !Irf  KV P0w;IP Q J  H      0 df;  LpCCCC Ckm# Ճd" c%m M瀇Dxć"yć""}ć"~ć"!ćDĊLBA@m$ %Lf%^" L>! " ~ćʇEʇD DĊLb Kl` l` i!!!#x!#!#|!#}  l+#~ i! ! ~!!"ʖX^]`v^p.P P.v v \jkW" WՃli edE v v _#kap ^K!XX7]xć]!ćX X ćX PX5,ćX6-X6 X5 !W[ZYn v#^]n%]jh "_  k##ɡ=a n.!l t$#$ $#~$#$ %x%! h`u ]  ɇ ʇʋi jka vՄ0*v av* *v v J  v v ) ćʇʊvP vPFv hij`  `vv //Ӈ5cvc v  dPv u((]( ɠl ,v] h(ij`  )`v+ +)v ) v)  v ,)v )vMAESPPRINTT!!!!! PPRINTINQUIREqK STRINGOP EXTRAHEA REQUESTO BYTEFLIP TIMEOUT SPDEVICESOCKETS PARSE FILEOPS LOCK OSUTIL  SMTYPES @ SOCKETS  SMSERVERg%އ iX! `u p pp buJ bt t"bvbv cvր tt buxԢ uޔ  iu(ĚՆa mn(!!h%1b% N!% &n!o' lc#$' #' j$}#jc"#$}l#$!ha  !%m a &(ěޖ vhh  < psemshare-Unable to open accept socket in rqst process  hmb*** HEAPOPS CONCURRE PASCALIO EXTRAHEA SMCLEAR SMSINQUISMMANAGELOCATOR BYTEFLIPSMTYPES SOCKETS  >SEGSMSRVg%!"^^, 2h,i !br bx!! "! b x!"!<`r p p= p P66t S r Xr 7<ar r *= p8x p p= r<sl# l p##jh "  h2jh "a  !! h l p0 p p## paq`^a  aw`^a  a, `,a l'could not open socket for server check pseminquire*Semaphore server already exists on node B .SEGSMQUI+g%S߆߆v1 i! !h!}i`  SMSERVICS)EH`r `x`xĆ`xĆ`x c, 0hj "d  j h"/0ha w!c ! ! 0!  h !Ė  d. 0i0jk-D!#;!e*!  ! ! k!0! " ! a k!j! i! ! ha  iABPE  Fp D'  DDh t tff u)authuh F  t E.e/Pee1p t u`ut1  u0ou`rupc bkl\3 P\t S3r rsij]2`^`  p pupt!]k2oaao^a b aa dcLc^r r Ս"j_^_ n!n wn^_ ntn ttnćnI^_ 3nmn wm nć__n^_ ntn tn ćtx]rqp r"u^` t t* u`utm  u 0 xii  psemshare psemshare pseminquire,error allocating inquire list in sm_inquire psemshareW& C IM *** PASCALIO EXTRAHEA HEAPOPS TIMEOUT LOCATOR BYTEFLIPSMTYPES SOCKETS  aSMMANAGETg*4h44}ޖ> 4 ޖ}l3kh #%2 j" "i"}j!2  hޖg bh H i!b!2 2 2 i!!g ! ą! ! Ėl e,jk2+ l$ ih!"K!x%!f5 $ !}Ċ !}!$ $ *j $ i }ik!h!}i#$ 2+  # cih !3)2! j" h!Ċ "!!i aa` 2 x' p3 pgb ޖAbib` pc ! ޖlb'ih 3 b ! h ޖĘ ttA !#8 *** SMTYPES SOCKETS  SMCLEAR ^!`rv pvpp r ra ar r : u0 r (vpv p r vpvpxԤ rwerror allocating clear socket PNETCLEARClear Socket NetWork error : \CONCURREPASCALIOSMMANAGESMTYPES BYTEFLIPSOCKETS  0SMSINQUI)eOSބEDMNwI p pw p p pPp`Rr&$ p pPބwp r 6rOO D  aSr r CsC! afr r 勜ߚOOY C     s s aLcr r ߇Qxw rPޔ S1error allocating inquire list in inquire process varavail is #error allocating the inquire socket pseminquire CONCURRE PASCALIO EXTRAHEASMMANAGESMTYPES LOCATOR BYTEFLIPSOCKETS  tPARSE UFwB"ih !"  " A" a hޖ`P `t*Ԃ P*<++ԘPt+`*tt+P`*t `t**Һ++ԘPt+`t+P th P a taP ts}~ P+,h ,9 x+'+ xas~--~Pt-at-P h~ ~Pl#!i#jh "!# ڡi h!l  t : t4##l#p##%"p# #!#s!x!x]l## ##"!#r!xll*a-P, P+aaapa/ataa:aataap+a`rć+x,aP.  !0#f S STRINGOPOSUTIL FILEOPS  REQUESTOJr`P*xQ`rU rxrx`arxr Axr 'xrasb!xr Ҡ axh  b  xh疀O$Ě#i`u% !j" `v $x$ Ċ`v"%x drXh,i`sd $-`r+ +$r $r $$r$e br$r b$rACKACKo(- EXTRAHEAHEAPOPS TIMEOUT BYTEFLIPSOCKETS  *REQUESTO ] '$u&'(/PREQUESTOSMSERVICSHARE DSHAREPRPSHAREPRDISKSHARPRNTSHARPARSE SHREPROMSMTYPES SMSHREPRLOCATOR 2 U- < 0< < <  d7  2r-Copyright (c) 1984 Softech MicroSystems, Inc.REQUESTOrJr`P*xQ`rU rxrx`arxr Axr 'xrasb!xr Ҡ axh  b  xh疀O$Ě#i`u% !j" `v $x$ Ċ`v"%x drXh,i`sd $-`r+ +$r $r $$r$e br$r b$rACKACKo(- EXTRAHEAHEAPOPS TIMEOUT BYTEFLIPSOCKETS  SMSERVICSetH`r `x`xĆ`xĆ`x c, 0hj "d  j h"/0ha w!c ! ! 0!  h !Ė  d. 0i0jk-D!#;!e*!  ! ! k!0! " ! a k!j! i! ! ha  iABPE  Fp D'  DDh t tff u)authuh F  t E.e/Pee1p t u`ut1  u0ou`rupc bkl\3 P\t S3r rsij]2`^`  p pupt!]k2oaao^a b aa dcLc^r r Ս"j_^_ n!n wn^_ ntn ttnćnI^_ 3nmn wm nć__n^_ ntn tn ćtx]rqp r"u^` t t* u`utm  u 0 xii  psemshare psemshare pseminquire,error allocating inquire list in sm_inquire psemshareW& C IM *** PASCALIO EXTRAHEA HEAPOPS TIMEOUT LOCATOR BYTEFLIPSMTYPES SOCKETS  \SHARE HG@FE(_t= p pP p pφtr ++. +6M +FT +J,rr  p0r vt pP p p pVuR p[ pth p pm p pwրs0Q6Enter Client Identifer (between 1 and 20 characters) ::.Share : I(dent, N(o-Messages, P(rinter-Share, D(isk-Share, S(em-Share, Q(uit [1R0.1]B Client Identifier is Server Messages will be Ignored.. Displayed.. Spuz STRINGOP PASCALIO SMSHREPRDSHAREPRPSHAREPRSPDEVICELOCK SCREENOP DSHAREPR HSVt  p p,w*, p p p% p p p,,VVխ  pV| p( pV p: p V pV|-w-- p - p   pV`u p` p p,+V ,+ *V !"ć#Ն  p# p # p# hi L p: p p |h!  p  p!i pbp$bx! p"!1Ė#t *vtB p p pbzwh  Rv)"%" l$$k$|lc  "i" ja זj!! ! h  joW/XPZt,t+/*u iv/s** yvZn* v^* ..ZDv p. p p- p-ڤZ,+tY,h i ! !! h!i +!-s-jb b-Q bR bP .-`P`** *g *p ** *̔ *S *P`P`P`P` Pjw[`** *h *$q ** *)Ӕ *S *3 *P`4P0`**F **W *Jg *PցS`vQ ć!+. p`p$`x p 1Ċ ĚO p! v}|^vv|231 Sv||:S S}(S}}S p pt}|ԕ| p}v231`v|`}}|χ| pv231 *v|| p `j o * ʔ S v? H vt `*Sz w ~怇~ 䖁vvv231 `Tv**` p`w?+UU`P UY UP!+P+-P +BPւY+vt h`a3 `{: `,t0 ւ0Qҳ  ,ɥ No Remote Blocked Devices..( Device Volume Server Identifier Node# .Type to terminate I(nquire Operation.. Server Identifier Volumess,No Servers Responded to the I(nquire RequesttIllegal Local Volume Specifier..Volume not a storage device or already Shared..'Not a storage Device or already Shared. Replaces :, Ok (y/n) ?#:Add Complete to Server ,Volume ,to Device 8Server did not respond or could not complete connection..Illegal server identifier..Illegal server volume. Illegal local volume. Add Completed to Server , Volume , to Local Device .#Server did not complete connection.Volume  already online.._7AUK;Type or for default, to exit A(ddLocal Volume ? 0Enter Server Identifier or to exit A(ddd Server ? ,Enter Server Volume or to exit A(ddd Server Volume ? Attempting to A(dd Server  Vol to device ?"." means no offer received yet, "O" means offer, type to exit. Enter Volume or to exittVolume to Delete ? Deleted.Illegal Volume for Delete..)Server did not respond to delete request.-Network error occurred during delete request.3Disk-Share : I(nquire, A(dd, D(elete, L(ist, Q(uit [1R0.1] LZB  *** STRINGOP EXTRAHEA EXTRAIO PASCALIO DISKSHARSHREPROMPARSE SCREENOPOSUTIL FILEOPS  & PSHAREPRHSVt  p p,w*, p p p( p p p,,VVխ  pV| p+ pV p: p V pV|-w-- p - p   pV`u p` p p,+V ,+ *V6!"ć#հ#!  p! p ! p  p! p  p!5h h  p- p!6/ p2 p! p pap$ax p" 1Ė#t 5vtM p p pbzwh  jv""i"7jap j!!]#! h  !jW/XPZt,t+/*u v/s*/r** vZy* vi* ..ZKv p. p p- p-ڤZv,+tY ,hi !]"!! h!i +!-s-jb b-Q bR bP .-`P`** *g *r **” *Δ *S *P`0wO`** *g *r **” *Δ *S *P`P0`P'`1P`?P`MP `^Pցz`vV ć!.. p`p$`x p 1Ċ ĚO p!v}|vv231 Sv||:S S}(S}}S p pt}|ԕ| p}v231`v|`}}|χ| pv231*v|| p `j l * ǔ S v! H vt `*S/.0z w ~怇~ 䖁vv(v9231 `Tv**` p`w?+UU`P UCY UP!+HP+VP +kPւ+vDvvv231 `+v**` p`w?,UU! U`q UP!,P,P ,Pւ,v ht ),thvvv b//a/P/ a--aP -?_ -Pa--aP -Gv -Pav..a[P. a--aP -h_ -Pa--aP -p\ -Pav00awP0 a--aP -Y -Pa--aP -] -Pavfv21Pa,v++aP8aP. a--aP -[ -Pa--aP -X -Pa--aP -^ -P/ a--aP -X -Pa--aP -[ -Pa--aP -\ -P0 a--aP -R -Pa--aP -S -Pav vv pփ QahZ &t h`0 ` D `K `,t0   ք0QҠ& P/.0  ,ɥ  No Remote Communication Devices..( Device Volume Server Identifier Node#  excl shrd .Type  to terminate I(nquire Operation..9 Server Identifier Printer Lines Qd Mode Description,No Servers Responded to the I(nquire RequesttIllegal Local Volume Specifier.,Volume not a legal device or already Shared..!Illegal Local Volume for Sharing. Replaces :, Ok (y/n) ?#:Add Complete to Server ,Printers ,to Device Add Complete to Server , Printers , to Device #Server did not complete transaction8Server did not respond or could not complete connection..Illegal server identifier..Illegal printer specifier..!Illegal local volume for sharing.7Network error detected while trying to form connection.i;Type or for default, to exit A(ddLocal Volume ? 0Enter Server Identifier or to exit A(ddd Server ? ;Enter Server Printer Specification or to exit A(dd Printers ? Attempting to A(dd Server  // to device !"." means no offer received yet, '"O" means offer, type to exit. Enter Volume or to exittVolume to Delete ? Deleted.Illegal Volume for Delete..)Server did not respond to delete request.-Network error occurred during delete request.4Enter Volume to Form Feed or to exit B(reakkVolume to Form Feed ? !New Print File Started on volume Illegal Volume for B(reak..(Server did not respond to break request..,Network error occurred during break request..HSet: A(uto-Toggle, E(xcl-Toggle, B(uff-Toggle, C(omment, D(isplay, Q(uitt>Print Files will terminate at B(reak command.&program termination or B(reak command..A(dd Requests will be in EXCLUSIVE mode. SHARED mode..Print output will be BUFFERED. NOT BUFFERED.)Type in upto 80 chars or to exit? Access : EXCLUSIVE SHARED Print Files : MANUAL AUTOMATIC Buffering : ONNOFFPrint File comment is not set.. Comment : AEE0Printer-Share : I(nquire, A(dd, D(elete, L(ist, S(et, B(reak, Q(uit [1R0.1] S%jN y*** STRINGOP EXTRAHEA EXTRAIO PASCALIO PRNTSHARSHREPROMPARSE SCREENOPOSUTIL FILEOPS  DISKSHARAb"ć!u!u!! "phauh2!! h!! 净ɠh "p bu "p t "pc  "p!rg !U P1w<P Q   1 eg<  "p ln$ Ճe# c&n M瀇xć#yć##}ć#~ć#!ćĊ"m% &"x&p# "P! # ~ćʇ!t   Ċ"c !/k` kl i!!#!"x!"!"|!"}  k7"~ i! ! ~!!"$ʂ* ,`v p@P Pv v kl# ՛mi fe v v r$la ^!ꇀ xć!ć  Ą5ub  "ꇀꄀ! ! "Ċ!釀퇀쇀뗋U v$n% jh "V k##ɡ9a n*!l t$#$ $#~$#$ %x%! h`u    #G #ʇʋi jka vՌ0*v av* *v v R  v v )& ć#ʇʂ] vz#P vPFv hij`  `vv //ׇ5cvc v  dPvPDISK!! LOCAL LOCKS*SPDEVICE,SPREMOTI,PNMSG1B,PNMSG1A,BYTEFLIPP LOCAL LOCKS*SPDEVICE,SPREMOTI,PNMSG1B,PNMSG1A,BYTEFLIPP PDISKINQUIREE*SPDEVICE,SPREMOTI,PNMSG1B,PNMSG1A,BYTEFLIPP*SPDEVICE,SPREMOTI,PNMSG1B,PNMSG1A,BYTEFLIPPQW ?STRINGOP EXTRAHEA REQUESTO BYTEFLIP TIMEOUT SPDEVICESOCKETS PARSE FILEOPS LOCK OSUTIL  PRNTSHARcv:?LDćKuKuKK LphIauh)! ɇɠ!ڠh LphJuJuJ LpJ#J짃 Lpb  LpG  F  !Irf  KV P0w;IP Q J  H      0 df;  LpCCCC Ckm# Ճd" c%m M瀇Dxć"yć""}ć"~ć"!ćDĊLBA@m$ %Lf%^" L>! " ~ćʇEʇD DĊLb Kl` l` i!!!#x!#!#|!#}  l+#~ i! ! ~!!"ʖX^]`v^p.P P.v v \jkW" WՃli edE v v _#kap ^K!XX7]xć]!ćX X ćX PX5,ćX6-X6 X5 !W[ZYn v#^]n%]jh "_  k##ɡ=a n.!l t$#$ $#~$#$ %x%! h`u ]  ɇ ʇʋi jka vՄ0*v av* *v v J  v v ) ćʇʊvP vPFv hij`  `vv //Ӈ5cvc v  dPv u((]( ɠl ,v] h(ij`  )`v+ +)v ) v)  v ,)v )vMAESPPRINTT!!!!! PPRINTINQUIREqK STRINGOP EXTRAHEA REQUESTO BYTEFLIP TIMEOUT SPDEVICESOCKETS PARSE FILEOPS LOCK OSUTIL  tPARSE UFwB"ih !"  " A" a hޖ`P `t*Ԃ P*<++ԘPt+`*tt+P`*t `t**Һ++ԘPt+`t+P th P a taP ts}~ P+,h ,9 x+'+ xas~--~Pt-at-P h~ ~Pl#!i#jh "!# ڡi h!l  t : t4##l#p##%"p# #!#s!x!x]l## ##"!#r!xll*a-P, P+aaapa/ataa:aataap+a`rć+x,aP.  !0#f S STRINGOPOSUTIL FILEOPS  SHREPROMg,)`*P2r `s p+D)`*P0r `s p+\)`*P1r `s p+-dQPS1rds p/Phkjas p!1kk!AspjU!"ɰ///t hr upr&! 0 h/ ȇ/ !Ț!up#"z#T.rĖS*01v0$ *** EXTRAIO STRINGOPPASCALIOSCREENOP SMTYPES @ SOCKETS  SMSHREPR;cavh!H PB P9 P0 :P' TP iP {P Pրwww0/⼅.4w33 4232Å3pw10/⼅0.w33p223…3p,,w1/⼅0.w3!223˅3p"#--, *$P*,P- `4P`<PVVD V4- VT1 V* VW V`ה VwsTS-*Uv#USU4STU U݇S-,-4v11 [wdw1<1T+<VVo V4% V{> VP, to exit L(ockSemaphore Name ? 9 Type or for default, to exit  Shared Access {y,n} ?? yY8 Type or for default, to exit  Wait Forever {y,n}?  yYexclusive modeeshared mode  wait forever  no wait Attempting to L(ock Semaphore  in  with Lock successful Lock not successful Must unlock semaphore  before attempting lock. (Type , to exit U(nlockkSemaphore Name ? Attempting to U(nlock Semaphore Unlock successful Unlock not successful /Attempting to do I(nquire of semaphore server  No servers responded 0 SEMAPHORE LOCK ACCESS NUMBER OF OWNERS , No semaphores currently in semaphore table exclusive shared  7Attempting to S(how semaphores locked by this station / SEMAPHORE LOCK ACCESS NUMBER OF LOCKS exclusive shared / No semaphores currently locked by this node . Type to exit C(lear 0Do you Really want to remove all of your locks ?? yY"އABAw ;aAr;r "ފր*.p9 p;r p pՂX )`*PF p` p pp+ %(&'@>==r p= p p p =r<r (i!!j"kl"j"k"l,$ i$- p$ p p p.# i#/ p# p p p p  p p p'  p p p pt p.p p p  p p p !  % $ n%xh"߆ xij!"!%j!xi" dnn"ޖZ ,xh"߆ xjlm"%",m"l"xj%ջ"nim!&y%&!*m!i%Տ&y[c<&y #"&yoi!'#!&!!i$  #Ċ$#b<&y #j"o''y''y (*(+(+u% qb< e!!% !  "n&&&,& )&&*&+&+u" xĆ "Ć"ޖ o*xh"߆ xlkj$"$*j$k$xl$n")u% &y+#  $xĊ#$xd< !!%! i&!(!i&!&!&y!p&&y&yYe<&y %$&yoi!'%!&!!i#  %Ċ#%d<&y "ޖ  &m p pkni!&!xk!i# p p6   p p p p ni!&"߆!x!xj""o  p' p ' p'x p p l'y h (i'  )H ) p )p $l$% 'y  p p l h  p "xj$"!i  -xhij"߆ xk#!#-i#j#xk!"  #xĊ"#xĆ"!l#y n&)@#& *u*ym%%% +z o', *+s'o%{let$m&n#y c<( !!%!   p# p p p nj"&"߆"x"xk##o 'x p p'y h (Ք1 p'  p4 p' yl$D$ )z p/pe)e)ʚ% p6 p){l8 p hf 'xk p)""j ,crp   w 0<,i!,w"߆!xj"a"/.-Qhd"  p: p" p p#dC r h #r "xj"!i#r0i zih "y!" ɭi h!k!z)`* P`v`v`+*, v v!z $%!0&&0&ą&&"Ę'(Ć*ĔD p p;r 0 and <= (Looking for other semaphore servers ... ,Semaphore server established on this node. ANot enough memory to support semaphore server with table size of entries. Short by  words.'Unable to initialize semaphore server. B SEMAPHORE LOCK ACCESS # OWNERS OWNERS (node numbers)  exclusive shared  ,  Semaphore table is of size  Used slots in table  Unused slots in table - No sempahores currently in semaphore tableSEGSMSRVBd!"^^, 2h,i !br bx!! "! b x!"!<`r p p= p P66t S r Xr 7<ar r *= p8x p p= r<sl# l p##jh "  h2jh "a  !! h l p0 p p## paq`^a  aw`^a  a, `,a l'could not open socket for server check pseminquire*Semaphore server already exists on node B .SEGSMQUI+BdS߆߆v1 i! !h!}i`  0SMSINQUIBdOSބEDMNwI p pw p p pPp`Rr&$ p pPބwp r 6rOO D  aSr r CsC! afr r 勜ߚOOY C     s s aLcr r ߇Qxw rPޔ S1error allocating inquire list in inquire process varavail is #error allocating the inquire socket pseminquire CONCURRE PASCALIO EXTRAHEASMMANAGESMTYPES LOCATOR BYTEFLIPSOCKETS  aSMMANAGETBd*4h44}ޖ> 4 ޖ}l3kh #%2 j" "i"}j!2  hޖg bh H i!b!2 2 2 i!!g ! ą! ! Ėl e,jk2+ l$ ih!"K!x%!f5 $ !}Ċ !}!$ $ *j $ i }ik!h!}i#$ 2+  # cih !3)2! j" h!Ċ "!!i aa` 2 x' p3 pgb ޖAbib` pc ! ޖlb'ih 3 b ! h ޖĘ ttA !#8 *** SMTYPES SOCKETS  SMCLEAR ^Bd`rv pvpp r ra ar r : u0 r (vpv p r vpvpxԤ rwerror allocating clear socket PNETCLEARClear Socket NetWork error : \CONCURREPASCALIOSMMANAGESMTYPES BYTEFLIPSOCKETS  UDSERVER T2{ EQDFVM_` `u ppu up  pppu` sӇռ˄ԄՔ ӄru! p p# p% p p p' p. p5 pppu`7!up8 ppp pu hi]kj"#a" l$$7>u$ p $p! ˏp p!iu"jpSpuppA pu`P p p`7p`*S uS1L p` pP ppBS $* pY pp` ppuSTuu pu`P p pu p` p p`*S S pp? ST T pp pp uTup p pp ppu |)up pu`P p pu p pp p` ppu` )XUup pu`P p p`*S S ppS˄TU S ppX p pp p* p:ppS U*up pu`P p p`p`<u ppup *)<,t*u*   ցB*Qʖ*supW pu` p p` p`sp3c ` n u ss/~,tht p L- -  pp*-  - ppց Q҅8 p` p p a a7Սa s   p p p pp ppa7s pp ppp 5 +..(=.Gc.[l.`,t+, up+t  ~zvr m iepp,,f p,l ppun pp  ւq, No Volumes On-Line.& Volume Device# Available #Sharingg   Yes No   Storage Volumes Enter Volume Name : Volume  is not on-line.. now online.(Volume already available or Not Blocked..Enter Volume Name : Volume is not online..!Deleted from online volumes list.#Made unavailable for future SHARES. Sending :  to All clientsClient Identifier ? Sending :  to Volume Name ? Volume is not online.Volume is not Shared. Sending : ! to all clients sharing volume Message String ? 2String too long (maximum length is 60 characters)..$Xmit : A(ll, S(ingle, G(roup, Q(uit  ASWrite Stats to where ? Could not open file Ioresult = Statistics Saved.%Statistics : R(ecord, S(ave, Q(uit ? "Statistics Already Being Recorded.."Statistics Are Not Being Recorded..RS-Do you REALLY want to STOP the SERVER (y/n)? Volume Deleted from volume list. Made unavailable to be shared ..3Volumes being shared, the Server cannot be stopped.Exiting Liaison Disk Server=Disk Server: V(ols, A(dd, D(elete, U(sers, I(nfo , M(onitor, &X(mit-Message, S(emaphore-server,Q(uitt [1R0.2.3]"j Monitor is On.Off. Xr}w Y@z STRINGOPEXTRAHEAPASCALIOEXTRAIO SMSRVRPRDISKSTATMEMCHECKSINQUIRESCLEAR DSHARERQ PARSE DISKSERV VOLMANAG DISKSHARSOCKETS CONSOLEISCREENOPFILEOPS OSUTIL  TINITSERVpT2( Ě.pV pp-wh{-hj  ! jp h-i!!! k# #j#|kb !h! i`ۖ-t pp pppppph+ pP p p  09 ppN pp{2Z p p^ ppBg p ps pa pp!{h p pp p pp* p p*p.pp ppp pp* p ppp,-- Looking for other Disk Servers. / L I A I S O N D i s k S e r v e rEnter Server Identifier : (Server Identifier must be between 1 and  non-blank characters..Server  already exists..Server Identifier is :  Okay (y/n)? Starting Clear Task..Starting Disk Server Task..)I/O Requests will be received on socket #Starting Inquire Task..Starting Mount Task..*Total words available for Client Mounts : @- WDISKSTAToT2[## jh "  hji!"!!iru  xĖ!h xĊi xĊM xĊ1 xĊxĖ    r sp sp s p sp sp s p 7sp :tp 6 sp 6 ˏsp :tp 5 sp 5 ˏsp s p 3sp :tp 2 sp 2 ˏsp :tp 1 sp 1 ˏsp sp sp s p xsp sp !s p  xsp sp -s p  xsp sp 9s p  xsp sp Es p  xsp sp Qs p  xsp sp ]s p  xsp sp is p  xsp sp us p  xsp sp s p xsp sp s p xsp sp s p xsp sp s p xsp sp sp s p sp sp s p sp sp sp s p sp sp s p sp s p xsp sp s p sp s p xsp sp s p sp s p xsp sp s p sp $s p xsp sp *s p sp 3s p xsp sp sp Disk Server Activity From  To Mounts Dismounts Read Requests Write Requests Read Errors Write Errors Unit Clear Requests Unit Status Requests Lock Requests Locks Denied Unlock Requests Change Lock Requests Client Lock Retries (Maximum Users During Recording Period - (Minimum Users During Recording Period - %I/O Request Block Length DistributionLess or Equal to blocks = Less or Equal to blocks = Less or Equal to blocks = Less or Equal to blocks = Greater Than blocks = =0 mEXTRAIO PASCALIOOSUTIL  DSHARERQ#8+uՓ`v`rfv f lw ˄wT E0u*u xfsw \ ),/ia  a.U aP-+u/  p pa` a .:++t REMOTE LOCKSSPDISK$Error : Could not open share socket.. e*** PASCALIO STRINGOP CONCURRE DISKSERV FILEOPS VOLMANAGPARSE ACCEPTORSOCKETS CONSOLEIOSUTIL   SINQUIREb#8j01ޅr`0Perr ) s/`r///r Խt1l#Xrl u pupa`atvr PDISKINQUIREE&Error : Could not open inquire socket.. 8Z*** PASCALIOCONCURREVOLMANAGSOCKETS  CONSOLEI#8;4ih ! r  hrޖrirh3r t p$tp t p"tpt p#t p:up! rޖrirh20r"up2210r ! rޖrirh0r ! rޖߖ ޖsv MOUNT Node ## Local Unit  TO Server Volume }nT *** EXTRAIO PASCALIOSCREENOP %CONINIT "#8A<`r;;ɥ03Ė< ACCEPTORi-"!rkk"x rt`Qarr r +Rrx,r  s x r) xr )(( x`efrxr f ( xrpxrx`ersxr xrć`c(j ) ``*xc`r"j"*xr *xr  *xr ACKACKNAK= BYTEFLIPSOCKETS  tPARSE UFwB"ih !"  " A" a hޖ`P `t*Ԃ P*<++ԘPt+`*tt+P`*t `t**Һ++ԘPt+`t+P th P a taP ts}~ P+,h ,9 x+'+ xas~--~Pt-at-P h~ ~Pl#!i#jh "!# ڡi h!l  t : t4##l#p##%"p# #!#s!x!x]l## ##"!#r!xll*a-P, P+aaapa/ataa:aataap+a`rć+x,aP.  !0#f S STRINGOPOSUTIL FILEOPS  MEMCHECKicGs ttart tt!Z!j t "t t "tt " t"t t!h"xi` utt&t ut3t tTask Stack UsageeTask in segment has used  words out of  words.AVAILABLE HEAP MEMORY IS  WORDS. gEXTRAHEAPASCALIOSCREENOPTASKUTIL TASKUTILzc(+!}h y!  yh j `p l($z'${$$pj k#m%{z)%{z)p)P)"?$zpi "$zpi&"!Ė &Ě7~h 9b r"&x&"`ap"m!%%%%"m%l%~k% dcp ~hÖ KERNEL RxHEAPOPS  DISKSHARAb"ć!u!u!! "phauh2!! h!! 净ɠh "p bu "p t "pc  "p!rg !U P1w<P Q   1 eg<  "p ln$ Ճe# c&n M瀇xć#yć##}ć#~ć#!ćĊ"m% &"x&p# "P! # ~ćʇ!t   Ċ"c !/k` kl i!!#!"x!"!"|!"}  k7"~ i! ! ~!!"$ʂ* ,`v p@P Pv v kl# ՛mi fe v v r$la ^!ꇀ xć!ć  Ą5ub  "ꇀꄀ! ! "Ċ!釀퇀쇀뗋U v$n% jh "V k##ɡ9a n*!l t$#$ $#~$#$ %x%! h`u    #G #ʇʋi jka vՌ0*v av* *v v R  v v )& ć#ʇʂ] vz#P vPFv hij`  `vv //ׇ5cvc v  dPvPDISK!! LOCAL LOCKS*SPDEVICE,SPREMOTI,PNMSG1B,PNMSG1A,BYTEFLIPP LOCAL LOCKS*SPDEVICE,SPREMOTI,PNMSG1B,PNMSG1A,BYTEFLIPP PDISKINQUIREE*SPDEVICE,SPREMOTI,PNMSG1B,PNMSG1A,BYTEFLIPP*SPDEVICE,SPREMOTI,PNMSG1B,PNMSG1A,BYTEFLIPPQW ?STRINGOP EXTRAHEA REQUESTO BYTEFLIP TIMEOUT SPDEVICESOCKETS PARSE FILEOPS LOCK OSUTIL  sVOLMANAGbciߖ'ޖl5pi0h ! #i xh! lp##]H# 5`s+l j"#"0 ""5ޖ#Ć0ijh! !$h!j!xi #!z !ʊ#5"!x"!xĆޖ]$#Ć0hi ! %i xh! j$"#"zĆޖ0h Սji ! i xh "  xh I k净#ɡ1ldtdtd"# td#xhޖ   Di0h ! "i xh kd!ˑ h   zĆޖ!ˑ h   zĆޖj!ˑ h  zjޖĆu! D4$ dS *** STRINGOPEXTRAHEAPARSE  SCLEAR eb%{0r`0 `r0r  s 00r (tpt p0r tptpԪukxrkt ptpa`auv0r PNETCLEARClear Socket NetWork error : &Init Error : Cannot open CLEAR socket.. A_*** CONCURREPASCALIODISKSERVSOCKETS  aLOCKPOOLZbgJl#ji!"`rl 2 3 !iܖr3 i 33{2iޖ x3 x2ޖ2hޖs;'J Q*** EXTRAHEA SMTYPES @ SOCKETS  OLOCATOR 5rcH6i iii iiրh*a.P0+ć,TP-h+ r0+xar/('Tha tM,+r,*c U!r ,r j"" %!l$m%)s%)M $*&'('pa t F f/-,ha tK!l$m%M%s+,$-,pkf !rr j#k"#"" a tO r0g8P1:6P7i1!r:t43Thd t:Z$m%n&)M&)s&gP23%*43pk1x U$r1xr j#k"#"" :d t9W('ka#tI,+r,*b#!r ,r h  "!l$m%s%xM $&'('pa#t a rh .m63 EXTRAHEABYTEFLIPSOCKETS  45u789=t?@bABPACCEPTORPARSE MEMCHECKTASKUTILDISKSHARVOLMANAGSCLEAR LOCKPOOLSMTYPES LOCATOR  <   xnrKERNEL STRINGOPEXTRAHEAPASCALIOEXTRAIO HEAPOPS CONCURRESOCKETS BYTEFLIPOSUTIL SCREENOPFILEOPS TIMEOUT LOCK SPDEVICEUPDATEDISKSERVER.CODE                DSERVER V dSMSRVRPRSMSERVERSMCLEAR SMMANAGEbSMTYPES ASMSINQUI1LOCATOR PBDISKSTAT+MEMCHECK7TASKUTIL8SINQUIRE1VOLMANAGt=PARSE u5SCLEAR ?DISKSERV 50CONSOLEI2LOCKPOOLb@DSHARERQ/+ACCEPTOR4DISKSHAR9REQUESTOINITSERVU(SEGSMSRV?SEGSMQUI/CONINIT &34 GY&$&'u)*+0REQUESTOPSERVER INITSERVPRINTSERPSHARERQSPINQUIRCONSOLEICONINIT PRNTMANGPFILEOPSACCEPTORPARSE MEMCHECKTASKUTILPRNTSHARSPCLEAR _nPSERVER 'P+A$( CONSOLEIS2  (  < #9:b,Copyright (c)1984 SofTech Microsystems, Inc.REQUESTObJr`P*xQ`rU rxrx`arxr Axr 'xrasb!xr Ҡ axh  b  xh疀O$Ě#i`u% !j" `v $x$ Ċ`v"%x drXh,i`sd $-`r+ +$r $r $$r$e br$r b$rACKACKo(- EXTRAHEAHEAPOPS TIMEOUT BYTEFLIPSOCKETS  3PSERVER ) ZpDFVM ` jAAZˀZAZˤ k# `#AZˀA"j#k"u ppu_up  p% pppuAAZˀZAZˤ k# `#AZˀA#AZfdeg u p#p p&p p$p p%p p', p0 p)4 p7 p p(: p= p  ppu#k up@ pu`P p p`p.`*.w.uK ppupuV pu/P p p/p/w//짃gڡԵum puXP p pXpXX(uu ppuXX(Ԓu puP p ppsԴu./지AZ˄X #` p pp ppup*u pu`P p p`w`p``짃ڡԺu`지AZ˄* *3 p`p pp1 p`p ppu*up p pp ppuD)up  pu`P p pu p pp p` ppu` )Dup pu`P p p`w`p``짃(. ppa`지AZ˄,.*+/-D ,`지AZ˔ 1< p`pA ppD*upH pu`P p p`p`<Q ppp *k~,t*u*  ց*Qʖ*")pu pu`P p p` p`w``짃ڡԺ*`지AZ˔ `지AZ˔ * p` p p a ,AAZˀZAZmk#%ya#AZˀAd#AZd ,$, p#p p$ pp pp#k, pp  ppp  +..6.8Z.Kc.P,t+-up+t {ws nj e `pp--V p-u\ pp^ pp ւa-,No Volumes On-Line.1 Spec Dev# Mounts Qlen Status Mode Available Descriptionnhlding  ready excl shrd yes  no Enter Volume Name : Illegal volume name.. Enter Specifier (A through Z) : Description ? :Description must be between 1 and 40 characters in length..-#chars to send to printer in one UnitWrite ? now online..!Illegal volume name or specifier.Enter Printer Specifier : Printer  deleted from volume list..Printer  unavailable for mounts.. Sending :  to All clientsClient Identifier ? Sending :  to Printer Specifier ? Illegal Printer Specifier..Printer Not On-line.Message String ? 2String too long (maximum length is 60 characters)..$Xmit : A(ll, S(ingle, G(roup, Q(uit  AS Enter Specifier (A through Z) : -Do you REALLY want to STOP the SERVER (y/n)? Printer Deleted from volume list.#Made unavailable for future mounts.2Active Mounts exist, the Server cannot be stopped..Exiting Liaison Print Serverr6Print Server: V(ols, A(dd, D(elete, U(sers, M(onitor, $X(mit-Message, H(old, R(esume, Q(uitt [1R0.1.2]!f Monitor is On.Off. Xw| Zc:  EXTRAHEAEXTRAIO STRINGOPPASCALIOPRINTSERMEMCHECKPRNTSHARPQINIT SPCLEAR SPINQUIRPSHARERQ PFILEOPS DISKUTIL PRNTMANG PTYPES PARSE SOCKETS CONSOLEISCREENOPOSUTIL FILEOPS  FINITSERV')6)*`P p p`s*)#ihrG pj""k#! ppp#Լk/ pi!!k#!E ppp#ԽW ph !k##n p!pp#Թ! j! " i ph  pp7 i!. p p pp!ԗh p p p< pp wwh ԣ+rr=```지/"``0`"```   pp pp p pp ppp pp`rp< `% rmr+ Ě.p) pphphj  ! j p 7h5i!!h!7i`pLt pp: pppiS pP p pww0a ppv pp{ 2 p p ppB p p pb pp"i! ppp pp pp* p*p.pp pp pp*  ppp,-5Enter the minimum # of blocks required for a Mount : "This number must be between 0 and +Enter the Maximum (Open) print file size : "This number must be between 0 and -Enter the Maximum (Open) control file size : "This number must be between 0 and Enter Number of File Buffers : 'This must be an integer greater than 0.Could not allocate buffers.Enter Spool Directory Prefix : +Length must be between 1 and 60 characters. :/::Spool Volume InformationnTotal Space :  Free Space :  Largest Free Space : Illegal Volume for Spooling..0.DATAACannot Open Test File 0.DATAA Looking for other Print Servers..1 L I A I S O N P r i n t S e r v e rEnter Server Identifier : (Server Identifier must be between 1 and  non-blank characters..Server  already exists..Server Identifier is :  Okay (y/n) ? Initializing Printer Queue.Starting Clear Task..Starting Print Server Task.)I/O Requests will be received on socket #Starting Inquire Task..Starting Mount Task..*Total words available for Client Mounts :   XPRINTSERL)M#xh xij!"#!j!i!ll# p#ih !# x" l p h#" i!{8!}wh!} w!~ !~ w ! !{ !!ɔ ! #h " i!}!w)!!}! w!}! !w!ĖT!(*h&.h!ChShdhWh RhBhր +0 r  x+**+0fe&%r **hij0k2- (l,$ `vd*0. `r***0r 0r /. 4! u $ { ! u% ć"%  v& %Ą0e &  r 0r   u0r e#   \e# L vx1.{-{| {Ċ.+/"0# r0r 0r +- * hi*j0k `v0# `r0r #hij `vm1& `r%m%1r XJK0rdh1agr1r vgv4'a n&( )/&/ {&/';DEFI Dv 1a Dr1r /ab&/ {T&/ J va-9J|.)J~ JJ{w ćJ.ćJ~ J~J}J|w aJ},-a/&/ { Ċ?v 1a?r1r D6/7&&/ JJ{&/J{7776v 1a6r1r v 1ar1r / a&/ x898v 1a8r1r vv 1ar1r &/>' &/ ɠ,&/ JJ{J}w &/JćJ{&/րr K)`*P! p` ppp+ "#$@>2= p2pH pp2L2rb0rsXi!t%i& pp pp psp pp$ hwi!Esh$ j"(k " (kޛF7Hp# iF!m ,xh, k#8c#m%,%)%Ć% xĆ #Ćl##m%%%lb# "##m3%"3 #3 3߆ x#  "Ċ xi!#!i!"Ćc" "k#m%%%l#$ m%+%*%%%%'%&%%((%(%(P#$%%ɔ  ' j"& k#p'xl"#"# m%%ɔ "# m%}%(%%%"<"$x $"Ċ$xh " h "Ćb"m%# %# %#p%%"xa" !"!m3%!3 "3 3"$x $!Ċ$xh " h !Ćb!  F" h  xi "!  ,crp   v 0<,i!,v߆!xj"`"/.-Ohd" p p" pp#dC r h #r "j!i#r0 i   z <ih "!" Ai h!k L!z j)`*P` ` `+*  !zL phoj"' "xh"j  pp  p ppp oj"'I߆"xk#0#  p( p (p(xp i(!  p){p p)}edu%p p) p p) p pAZ n&*)&A &p&nߚp!i!(  p !(#k"j '3' 33 pp1r0r  fTTTTTWInitialization Error : Could not open request socket..Write socket size is  bytes.*Not enough memory for write socket buffer.. Could not allocate write socket.. Could not allocate write buffer..Write Buffer size is  blocks..Available memory is  words.Sending Message to No Users Mounted.) Identifier Node# File Size Emode Pmode Printerssexcl shrd auto manl Closing I/O Sockets..( 0 iC) C 76 I(*** EXTRAIO EXTRAHEAPASCALIOCONCURRE CONSOLEI PARSE PRNTMANG PQMANAGE PFILEOPSBYTEFLIPDISKUTILLOCK PTYPES SOCKETS  PSHARERQ)d+pu5$pv$ri5pvCpv"pv#pv*pnp5l$n5$지AZˀA$ll kAAZˀZAZˤm%Zn%AZˀAD#l%AZˀAɡk#/%AZ˄ gf #)##'k%m#] Tpp0`bu?!n*C"# bux5!s! պ -ia a/V aP.+u  p pp0Ea`a a`a /+tSEAEPPRINTT$Error : Could not open mount socket.. *** PASCALIO STRINGOP CONCURRE PRINTSER PRNTMANG PTYPES PARSE ACCEPTORSOCKETS CONSOLEIOSUTIL  SPINQUIR)89ޅ$re P$`0Per$r e Ֆ6uAAZˀZAZˤ8118y61AZˀA`1AZ˄23"4 5#u25@  1"t#td/$`Er///$r 11@v9,#$Xrw pwppa`av9 $r PPRINTINQUIRE PPRINTINQUIRE &Error : Could not open inquire socket.. v*** PASCALIOCONCURREPRNTMANGBYTEFLIPPTYPES SOCKETS  CONSOLEI);4ih ! r  hrޖrirh3r t p$tp t p"tpt p#t p:up! rޖrirh20r"up2210r ! rޖrirh0r ! rޖߖ ޖsv MOUNT Node ## Local Unit  TO Server Volume }nT *** EXTRAIO PASCALIOSCREENOP %CONINIT ")A<`r;;ɥ03Ė< !PRNTMANGiYkn""p$p$Az$Azi!x% !npAZih !# Az Azx%p h%% $A$A ՜$Azi!( $A $AĊi!( %!( $A $AĊ8n!!"!%!!!$! t! ! #($Aޖ!Ć"A߆"AzW"Azh  !Ċ+ (  ( "A "AĆ"Aޖv&Ć'A߆'Aze&'Azx$'Az #'Az!'Az 'Az%'Az "'Az ('AޖAZih !" A Az hAZih !5$ A% A߆ Azj" " #Ć A hƖAZih !#$ A Azj" " # hؖnAZih !C$ A3 A߆ Azj" " ""#ʆ A hAZih !>$ A. A߆ Azj" " #"ʆ A h!A߆!Ah z zʆ!Aޖ!A߆!Ah z zʆ!Aޖ^(Azoc`n'{f#dew ' '!'"Ċ'''{w &`ab%tC&Azz`v2&Azl$$$ v ${ $& b! ! h #ap$ax#" p hݖ#ra sAzrrz`8va prxag rxggrxa ȇrxagrxggrx88rxagrxggrx``a Ȅa ȇrxas*+d)ąPVAZ) ))B)A߆)Az)Az**x p$* xp*ɋ* )*ɑ *)*yh*z`$abw*x) *}p"&)Ȅ) ȇ*x)p*ʇ*zvq*z gw*( m*yh'*('*n&*ym%*yh&h*z`$abw*x) *}p% **~) ր )A) +xAZROOR$OAĆOAąOOPERQR RQR  P Client : Comment : Printers :  F[s1uR= *** CONCURRE EXTRAHEA DISKUTILPFILEOPSFILEOPS PQMANAGEOSUTIL PTYPES  PFILEOPSwiY1000h`/10s0h`0Pv`Uv` \v`P1*.+, ć,xa+ -au.-au.- !u!u"a`u! k2gfl=jPhPdhAZi!f!A d d ! h!ib=ćmR"cubćmR"cubdćm"cumRR"cum*P)P(P`)ĀRk+c abu`(ĀRk+c abu`*k+c abukRRn&n`d&om%'k+c abu%m  %' L' s h`v` v` v`&sh`v`v`  v`)kba`u t1!k1 kZ]*(wP\`s`,,`Pv, Uv,\v,P[ *`u+*`u++*]*(w\&bcu%l`b' au%&ujkl`b& au&uf(w  .DATA[][].CTRL TI\SJ2hm*** EXTRAHEASTRINGOPDISKUTILFILEOPS OSUTIL PTYPES  ACCEPTORi-"!rkk"x rt`Qarr r +Rrx,r  s x r) xr )(( x`efrxr f ( xrpxrx`ersxr xrć`c(j ) ``*xc`r"j"*xr *xr  *xr ACKACKNAK= BYTEFLIPSOCKETS  !tPARSE UFwB"ih !"  " A" a hޖ`P `t*Ԃ P*<++ԘPt+`*tt+P`*t `t**Һ++ԘPt+`t+P th P a taP ts}~ P+,h ,9 x+'+ xas~--~Pt-at-P h~ ~Pl#!i#jh "!# ڡi h!l  t : t4##l#p##%"p# #!#s!x!x]l## ##"!#r!xll*a-P, P+aaapa/ataa:aataap+a`rć+x,aP.  !0#f S STRINGOPOSUTIL FILEOPS  MEMCHECKicGs ttart tt!Z!j t "t t "tt " t"t t!h"xi` utt&t ut3t tTask Stack UsageeTask in segment has used  words out of  words.AVAILABLE HEAP MEMORY IS  WORDS. gEXTRAHEAPASCALIOSCREENOPTASKUTIL TASKUTILzc(+!}h y!  yh j `p l($z'${$$pj k#m%{z)%{z)p)P)"?$zpi "$zpi&"!Ė &Ě7~h 9b r"&x&"`ap"m!%%%%"m%l%~k% dcp ~hÖ KERNEL RxHEAPOPS  PRNTSHARcv:?LDćKuKuKK LphIauh)! ɇɠ!ڠh LphJuJuJ LpJ#J짃 Lpb  LpG  F  !Irf  KV P0w;IP Q J  H      0 df;  LpCCCC Ckm# Ճd" c%m M瀇Dxć"yć""}ć"~ć"!ćDĊLBA@m$ %Lf%^" L>! " ~ćʇEʇD DĊLb Kl` l` i!!!#x!#!#|!#}  l+#~ i! ! ~!!"ʖX^]`v^p.P P.v v \jkW" WՃli edE v v _#kap ^K!XX7]xć]!ćX X ćX PX5,ćX6-X6 X5 !W[ZYn v#^]n%]jh "_  k##ɡ=a n.!l t$#$ $#~$#$ %x%! h`u ]  ɇ ʇʋi jka vՄ0*v av* *v v J  v v ) ćʇʊvP vPFv hij`  `vv //Ӈ5cvc v  dPv u((]( ɠl ,v] h(ij`  )`v+ +)v ) v)  v ,)v )vMAESPPRINTT!!!!! PPRINTINQUIREqK STRINGOP EXTRAH"EA REQUESTO BYTEFLIP TIMEOUT SPDEVICESOCKETS PARSE FILEOPS LOCK OSUTIL  SPCLEAR p w0rfm0`efr0r `t00r (upu p0r upupԮvxru pupp.Ea`Xava`avw0r PNETCLEARClear Socket NetWork error : &Init Error : Cannot open CLEAR socket.. ?k*** CONCURREPASCALIOPRINTSERPTYPES SOCKETS  PQMANAGE(da sp!j"&"%"$""#Ć2h ! | |h !Ćޖ 2p2ihj!"%!(AZˀA$!}$j!h!|i"' !| !|!k'#x&#y%#a s" "Ć2h i!#AZˀA""x!y!|h܆ޖ&Ętp4 *** EXTRAHEAPTYPES  :DISKUTILrch:k1ih !"0 ׁ k h1ji!"0!ׁ4!ih1ji!""0!ׁ0 ׁ!h!i i!k0#ׁi!j":!3!""p`!! u  !ĖYh m0 ׁ 0 ׁj"$"#$j"Aa0 ׁ""$!u  0 ׁ""Ėh)(ĆU,i,w!,i,l+x$+xj$j0!ׁn&&&* "p "h&&"&&o'('(x++x"+xj"J,* "um(,(x %h%"$  ++x" "h+x[!,i0!ׁnc&&#u/  &* +xp&&+x& +xh+ ĆUޖ h&ĆU)i)|!)i)l($(j$j0!ׁm%' %%"p "h%%"%!%c%%#u&x(" (j"8  h( ' (j")' "u&x(" "h(3!)i0!ׁm' %(p%%(% (hUޖ z|t`**P *{ *P|`tp}|/z|t`**P *{ *P|`tp}|TU!h  0 ׁ!tUޖqU!h  !tUޖU$i"!$h "x0 ׁ#!Ċ#!Ċ"x#!Ċ#!ĆUޖU"h  "i!!ĆUޖ*l# l&#1ih !0 ׁj""p hS+TP+s+s+Pt ,PE;+ h + <+ h =+ h,+a aPUU,"! w"ĆUޖ PUĔ  Fatal I/O error on buffer SAVE. !Fatal I/O error on buffer RESTOREError on Block Read..Error on partial read../:/tH cv;,W*** EXTRAHEA STRINGOP PASCALIO DIRINFO WILD EXTRAIO FILEOPS PARSE TIMEOUT  PTYPES   "PQINIT lrc)8wV` h 3`P \  `ր%ܚ`  pP`- `99P 9 9 pp`) p)RR+p++p+9))9+)*p))ـAZ9**9*Aʇ**+9))9+)Aʇ))` ܄v `P 0Q ` s`P 1V `sՑ f` `5`  `t 8  >  ~gwIllegal Spool Directory Not Online..Unknown File Handling Error..==.DATAA.DATA DATA file  Queued..P jEXTRAHEAEXTRAIO FILEOPS PASCALIO STRINGOP PQMANAGE PFILEOPSDISKUTILPTYPES OSUTIL DIRINFO WILD  12;67PQMANAGEDISKUTILPTYPES PQINIT V7 AݹKERNEL EXTRAHEAEXTRAIO STRINGOPPASCALIOCONCURRESCREENOPOSUTIL FILEOPS HEAPOPS LOCK TIMEOUT BYTEFLIPSOCKETS SPDEVICEUPDATEPRNTSERVER.CODE|BILLSYSTEM.LIBRARY                        PSERVER 4_PRINTSERY'CONSOLEIPARSE u'PRNTMANGSDISKUTIL;2VDIRINFO WILD ,PFILEOPS$ PTYPES 6PQMANAGE1MEMCHECK)TASKUTIL*PRNTSHAR+REQUESTOPQINIT 7SPCLEAR 0SPINQUIR$PSHARERQ+ACCEPTOR&INITSERVG CONINIT &TSPOOLER SPOOLCMD .( *7 @CCopyright 1981, 1982, 1983 SofTech Microsystems, Inc.  \N $ $TYPE long_string = STRING[255]; $ *ptr = ^node; *node = RECORD 4link : ptr; 4name : long_string; 4prnt_as_text : BOOLEAN; {true if file is printed as text} 2END; { record } + *error_type = (no_error, cannot_read_queue, cannot_create_queue, 8no_queue, full_queue, no_files_queued, 8illegal_string, queue_write_error, volume_off_line, 8file_not_found, miscellaneous); 8 $PROCEDURE Sp_List (VAR list_head : ptr; VAR result : error_type); #$PROCEDURE Sp_Delete (filename : long_string; VAR result : error_type); $PROCEDURE Sp_Print (filename : long_string; VAR result : error_type; 9prnt_as_text : BOOLEAN); $PROCEDURE Sp_Clear (VAR result : error_type); $PROCEDURE Sp_Resume; $PROCEDURE Sp_Suspend; $PROCEDURE Sp_Abort; $FUNCTION Spool_On : BOOLEAN; { returns true if spooler is enabled } $ "IMPLEMENTATION SSPOOLCMD h1**ߖH * p ą),vp+w ) +w  ! p&ci!˧?!i!cQ!ˀTȊ !ˀF!icjh "!c !i h净!ˀ$Ȋ>` i*`-v`*vpp ˤ)) ֊ր +*֐+wނ `v! Ċ Ċ Ċ Ċ Ċր *pZ *Ćh` `& `vp)+?p+w Vجב xאxpV*S`uԇӘ8VքքV ւ( V*S`uԇӘĚEӘQVքք*P ւ+Q ևӘ` VՐ ׇćӊ\ӘQVքքS ւ, ևӘ VՐ ׇćӊր-ԇא# #xS+˧?#$Ċ>ha $!Ć+ ˧?#!j"+ "瀁r "ha "!Ċ"Ė~021 1xJ+`u,,)E11P 11Q 1 1지#411P 12Q 1 1>113 1Q 14R 1 1ր5h-.+ ˧?7a+ 0rsa/.t-+ ar ah-1 +w1Ċ1Ė3 x+?p+w Ė  v)*ޖ -v)* v*ކv*SYSTEM.SPOOLER Spool_Taskk*SYSTEM.SPOOLER[1].TEXT:/K:///JSL& /*** HEAPOPS STRINGOP EXTRAHEA EXTRAIO FILEOPS DIRINFO WILD OSUTIL SPOOLOPS SPOOLER }uh` v`v`w wph` v`v`w wpw w-w w8w wo@w w]h`Hv`S#v`w w9[w w'cw wmw wրwUuw `w w ` `1t`ct##`w j"Uw "w w "态w ww w"xib !juw `w w `(`tuw w@`t uw w t ՜wu1 w w )v Ov Vv$,ss w0"!ttt  1ց*0Qn@w w Can't read *SYSTEM.SPOOLER Can't create *SYSTEM.SPOOLERPrint queue does not exist.Print queue is full..No files queuedFile not foundderror in writing to *SYSTEM.SPOOLERIllegal stringgVolume not on lineeMiscellaneous error 0Yl#Print what file ?   -- texttnon texttDelete what file name ? filename(s) removed from queuee Queue cleared2Text ON : Data files will be printed as text filess7Text OFF : Data files will NOT be printed as text files)Spool: P(rint, D(elete, L(ist, S(uspend, &R(esume, A(bort, C(lear, T(ext, Q(uit [2R1.1]ATSpooler is not enabledd "EXTRAHEA PASCALIOSTRINGOPGOTOXY SPOOLCMDSCREENOPSPOOLOPS wBQUICKSTAPEDGEN CHKSUMOP )- 7 Bg)Copyright 1984 SofTech Microsystems, Inc.nc. vQUICKSTABg5 v v H555h)`*P6555w5s `v vtp+9v v Fh`s2ki!##!!!aA!i؊pp$jc" c" ar d߄P 9r6ᤂ5w5s v v #v `%& 77` 7/ 7rp `r"`77` 72 7p 775 7` 7 r1w5s <v F  +   G  r H. QR 5[77 7d 7 r gs 65w`123`u pv v77 7` 777 7` 777 7` 777 7` 7m77 7` 7J77 7` 7 777 7` 7 777$ 7` 777 7` 7&|77A 7` 7D 7M77U 7` 7Z 7i~ ց r0ws v 1v 2v 3vA I  s0 092(s 1 s 2s 3s ps ւKONNOFF.CODEIllegal file nameQuickstart what ? Illegal file name.CODE.CODE Cannot find To what codefile? $$Illegal file name.Illegal file nameIllegal file name.CODEIllegal file name!Quickstart construction complete.Error reading library Error creating Error inserting checksum into Error reading Error writing Unit not founddLibrary list file  is not a textfilee$I/O error reading library list file Duplicate unit *Too too many library code files referencedd Too many system units referencedd"No program in code file to executee4System code file does not contain a USERPROG segmenttUnit ! must be linked via L(ink commandSegment  is an obsolete code segmentt(Insufficient memory to build environmentt&Environment descriptor buffer overfloww Monitor Error*Mp:]gq{Toggle settings: Copy , Library copy , Messages AQuickstart: P(rogram, S(ystem, C(opy, L(ibrary, M(essages, Q(uit [2R3.2] 0 0 programsystemm sE& EXTRAIO STRINGOP GOTOXY PASCALIOPEDGEN COMMANDISCREENOPFILEOPS  $APEDGEN  Bg%j"Ռki!#Y"!l$r$r`"`! r"p!r`"瀀! r"`!"瀐!l$r$r$r$r!i"r"r"r"r"r"r"rO%j"Ռki!#Y"!l$r$r`"`! r"p!r`"瀀! r"`!"瀐!l$r$r$r$r!i"r"r"r"r"r"r"rrxh  i!y !{!|r!xh ! p``ćr`e`p$``  (`Ȅ`pme e` e e |`  n%j k#%#"|#$sipĭx! "|"zx##1 ! ǭĭĈ33t  k#( ##k k#(##k ĭ( )2  ((((((( Ċjoh ba ! ( z(((((( ĭ!$b!p&l" $(!Ċ (!Ċր |h      ((((3  (z3((((( (} )p))))(}m%%% %ym(ĭo(}m(~'%{n(~'&g@(~%b&(%"&'%b&%"&o%b&(Ĉ"%"&&n%ymy(~ "!'     `Ȅ`pme% e` e) e e  eȄep`Ȅ `p -  e  3!  `)  ;/    Q P  r ʇ 1rpZ 1P ?U rp&11P BU PP  1ih   sjp" 1 h ! m%%l$ $pk $# #$m(ճ$#k $$l#$ $pn$&l#$ #pn#&k#$o'o'l $ 'p 'Ȅ t E  xć   z r x  A   xć  zM  r x r P  $ha  aU   ArĭX  b `   d lr  t   կ ,p t  i!" !  !  iڄ .  $ „„ ‚ r rp p     o |m%h%%nn|&'skp#&|p&(slp$& p'&o(& %&mrp$   r& (   rA\ap&h S!%%>2 %ĭ!Ċ!! %kmn&-Ս&%%yկ%zo%ć%%P Ն%|r%| ʇ%|'rp0''%|&&' & &rp7%&& &' & & %& ĭ%} && &' & % %|r'w%|%zx%|r%| ʇ%|'rp0''%|&&' & &rp%|%zp%& ć%Ċ%{է%} j"(Ֆ(& ")Z&b)ɤ *@*&")Չ&瀂)  &b) ()%~2%ć%(ć%2 ((%ĭ && &瀒)''z'y l#$j*ՙ&瀒)Ն#k  ,''&")'ć'ć'ć'ć'ć' (ć' )%,m,Ċ,,&")&z-#$j) "&&y&&&& ć&y a-# & %xni- p &z  +Ċ++ !+Ċ!++%%%ć%ć%ĭ))%)ĭ))%ć% -ć% .-瀒.z/% / /./% ĭ/$% &&/ć&/p&-瀂.%Ą&'Ċ%'š % #ć% %ĭ#&&% % '!&|Ą"Ą#ć'x'y'y$!"#'x'y uI$uu3u#&|&z3$ր$7 ("% ć% "(p% "ć% (7&| spćx&|&zx d  px((xĊ((ĭ   p)hx ĭX$p i!sjpk"!# 3#"$`pS"Bh h" "i i#!p!c#!"!js"h "" ha"! `dr d `.j. `** + ,* -yl-xm* ,瀐* xnn+xo ,`*  ʄ ,瀀* ʄ )*~y ^"&'}00J011&`1 1211҇y0'"&-#,,, + 22S,+ )&+)ć + 瀂+ )ć))+~+22C  xx..*- .&Ċ .-ć,-~,6--&( ( p (pM!,,,*ć*~,)//%/}Ր|z/և+#,,#,* ć* x~,#%D)///*|ć*P/!,,,2 ć2~,! `sjĭi`p`  l j""#si!p p"""ih !"   " " aA hޖY~Y YZ ZdZVs[[Zp p.dZWs\\Zp piVZVWZWYZY|h鄂qio.Zre2riis阔 _e鄀鄁阀  rp(鄀鄁阀 邁  er erp p阐mS.irp pik4  # i  he mqW i!!!ѐ!xiWWd X j""釀l$ժ`$Ք`$p$x$p$xVp$Wć瀐${Y$xV$Wć`$$y瀐$yY$yY$lNx чXĊ.Xs\\p piXXxjk'& W 1  mer.r鄁iere c # ]^ _`abe##դWbWWchbn]lkfjh臂ihW#釀ԇWćՇferere#s\\p p阐ertlsiscs]sWsQsKsE s? s9 s3 s- s's!ssss sց9.rerr Warning:  unit not foundSEGMENT KERNEL USERPROGKERNEL Using  from Including  as segment of  from .TEXT.TEXT*SYSTEM.LIBRARY*SYSTEM.LIBRARY.CODECopy updated file ? @@Copy to what codefile? $$.CODECopying  to  in use. File not copied..Copying complete. (( blocks copied)*SYSTEM.PASCALL*SYSTEM.LIBRARY.CODEWarning: Library not founddInstalling new checksum into *SYSTEM.LIBRARY.CODEKERNEL KERNEL *** REALOPS KERNEL KERNEL USERPROG.CODE.CODE.CODECopying  to Copying complete. (( blocks copied) u S ? p 1+Ew@[  EXTRAHEA STRINGOP PASCALIO HEAPOPS CHKSUMOPGETCMD CUPOPS OSUTIL EXTRAIO FILEOPS  %CHKSUMOPA  hik rpćx sV f tjp"x -"m#k%l$!i f$!h$l芚  Ċ Ė ppĭx<,`-r`,r`*+++/`,t))*`,t))`rRphpĭx-`-r`-r`-t))**!`+,,, *+`r^V iEXTRAIO PASCALIOFILEOPS   PATCH C16BITCO  ( 2vCCopyr 1978,79 Regents, UC; Copyr 1980,81,82,83 SofTech MicrosystemsPATCH E2vl*a-P+traau ,,u tu `u r.)`*Pr`u +/f0Prfu 1`u i`rj""UhDh LhRhր!! aAh !Zh k-d.P0d !}d 4kdhi dIhi 5d M!d 0Od xi h Qih!f0!0/# "PY# "PL"Pi#h#kh#"!# x!i# k "!-!i"!"!p"!Ȗ()*`RpE!++*X"ih !"  " " aA hޖ132ru `Pu u `Ն4v4`vp.p5ć5P32r@511ć1` 1`P1ć14ć1Ă32ru ]uu `Pu u `** ]1Ե*Ր4v*p"p.p5ć5P32rO511ć1ć1ć1ć1*ć1`P54 1Ċ32rr5*,+ru `Pu u `r-v-`vp*p.ć.P,+r5.**ć*ć*ć*ć*` *`Pr.k"h {' x yppprk9! ytprkp+prk)允 pmh % asa ap h߆u=u u up pup pj ps mh % asa ap hs u?u u up pup pH允Հ plh $ asa ap hކuAu u up pup pk ps lh $ asa ap hs uCu u up pup pc允 pmh % asa ap h߆uEu u up pup pj ps mh % asa ap hs uGu u up pup p; 允 pnh &y as csa  aȊ cȈ ca aȊ cȈ c huIu u up pup p ps nh &y as csa  aȊ cȈ ca aȊ cȈ c hs uK%u u up pup po 允Պ pmh %' asa pa p hԆuMu u up pup p允u ps mh %' asa pa p hs uOu u up pup p 允Պ pmh %' asa pa p hԆuQu u up pup p允u ps mh %' asa pa p hs uSu u up pup pz Uu p p6ih !( uXu p p hӊeih !( u\u p p hih !( u`u p p hӆup pFk#dpFh Fղ jid!ȅ#tpp#pp#pp#pp#pp#pp hGնjid!ȅ#pp#pp#pp#pp#pp#$ppFij!o!kh #eÅ p4u  uBu uupPpp h"hÅ!"p""p`u !unu "uup|pppjpki!#"Ռođ Pu #uu tu uppp#kpp.#`u  Y yirk*`$#r" u u '#r! u u 8#r u u Nr u uuu uu uu uuu u(u u5u uuBu uOu u\u u}u uu uu uu uu uu uuu uu urtu rpurur u u ruru rFu  ru r u u r u u rEՈFFr )sFFr  FFs u uu   /(`u = EMu i Pu iQ"h!r Ā'!w Ā8!w Ė+i!SW!Pro rtu rpu'sBrbPu u bh q p Yqrpu ps8rbPu u bh  r u r奁 u u [(rbPu u bru "(rbPu u bru  rA  rFu  rbPu u bh    ru wog_Wr奁 u u -r奁 u u քr!QՏr 2.+'ru  u uih ! r u|t hߖ10j"0 " "j0k#0ի#r1j"1Շ"h#""i!ds!fs3 f p'd dȄ  Ȋ f p3 f p)d dȄ  Ȋ f p"jr KKu #kNrdsfs3dڡdt tftft3dڡdt tftft01r1+`Pu u `***r#+* 7+Or+" B MU Z e,pp tp9t pp pru u ru u&u uu uu ur u u u u  u uu ih ! r h11rC0001r00r 0001r00rH1011r!0I001r00r|00r00r1I101r0I1100r010r0I101r100i!#x#!#xjh " ! $ h.`Pu u `++++&87Wr`Pu u `?+`G``++1+`N+``ڡՑ`V`A *$`[`a * `0*`b`A **&`g`a ** `0***++1+ n+ֆ +r01r+.,,. )),,.H00001r`u i`rj"W!<100!Ț!t t01r))10(01r"Ҕr01r+01r`u i`rl$թ ! Չ  0k"   A k a k aAh100j00""#Ȋ"""#Ț t01r)01r$>r01rr01rh " ,-*&' ()և Q2.vvvM!*r .jb4! bEL bPjb[! blO bPPWPۃOěO ěOděOěO' jh " 0 hjh " A hi!P᥃tPsrqp᥃oFPEDCB᥃A*v"@vĆv솃vrs/.Oru  aAռ  33  g#c$_2.2Jr2.5""% !ֈ 7ֈCQ .vvv > %Null string. Value defaults to zero.(String too long. Value defaults to zero..)Error in string. Value defaults to zero.2Integer constant overflow. Value defaults to zeroo-3276880  FILENAME : < c/r for Unit I/O > !Error opening file. Ioresult is File opened. Unitnumber : 4, 5, 9 ..  ( 0 quits ) "Error clearing unit. Ioresult is File opened. Filename: !Error opening file. Ioresult is File opened.."Error reading block. Ioresult is "Error reading block. Ioresult is "Error reading block. Ioresult is | | | | | | | | | | | |  : : : ERROR in I/O #1. Ioresult is ERROR in I/O #2. Ioresult is ERROR in I/O #3. Ioresult is ERROR in I/O #4. Ioresult is ERROR in I/O #5. Ioresult is ERROR in I/O #6. Ioresult is ERROR in I/O #7. Ioresult is ERROR in I/O #8. Ioresult is ERROR in I/O #9. Ioresult is ERROR in I/O #10. Ioresult is ERROR in I/O #11. Ioresult is ERROR in I/O #12. Ioresult is ERROR in I/O #13. Ioresult is CORE DUMP Startbyte :  Number of valid bytes : ERROR in I/O #14. Ioresult is CORE DUMP Startbyte :  Number of valid bytes : ERROR in I/O #15. Ioresult is  Block number [  ] of the file ERROR in I/O #16. Ioresult is Error occurred reading block !Do you want to continue ? ( y/n )@@TrueeFalseTrueeFalseTrueeFalseDUMP : D(o, Q(uit  A) Input File  B) Starting Block  C) Number of Blocks  E) Read from Memory  F) Starting Byte  G) Number of Bytes  H) Output File  I) Width in words @ Flip Both  J) Decimal  K) Hexadecimal  L) Characters  M) Octal  N) Decimal bytes &  O) Octal bytes  S) Space between Lines  T) Space between Groups True FalseTrueeFalseTrueeFalseCONSOLE::#1:CONSOLE::#1:Input file is not opened.CONSOLE::#1:#Type < space > to redisplay promptsOutput file is not opened..@@TrueeFalse,Value out of range. Maximum block number is Input file must be opened first..!Number must be greater than zero. Input file must be opened first..TrueeFalseCOREREAD not set.COREREAD not set. Value out range. Defaults to 15..TrueeFalseTrueeFalseAT,uz6y: 0: 2: 4: 6: 8: 10: 12: 14: 16: 18: 20:: 22: 24: 26: 28::Blocknumber : /Blocknumber is out of range. Highest value is Read was successful..Read was successful..Have reached end of file.Read was successful..Already at beginning of file.$Error saving buffer.U. Ioresult is Block saved..$Error saving buffer.B. Ioresult is $Error saving buffer.B. Ioresult is Block saved..File : Length : Current :  Byte 0 = Most_Sig_Bytee Byte 0 = Least_Sig_Byte Open : True Open : Falsee Unit I/O : True  Unit I/O : False Unitnumber : Number of bytes : Number of bytes is out of range..What pattern : Invalid format.Invalid format.~~~~6Invalid format. Hexdigits ::= 0 .. 9 , A .. F, a .. f Ch007Invalid format. Must have prefix character, 'C' or 'H' 2CHARACTERS : , quits Invalid character6HEXADECIMAL : 0 .. 9 , A .. F , a .. f , Quitss~ Invalid inputX$CU!EDIT : D(ump, G(et, R(ead, S(ave,+ M(ix, T(ype, I(nfo, F(or, B(ack, ? [1R0.0]!EDIT : V(iew, W(ipe, Q(uit, ? . LTYPE : C(har, H(ex, F(ill, U(p, D(own, L(eft, R(ight, , Q(uittHValid format : C or H ~~"0The display will be in characters, if printable..*The display will be in hexadecimal digits..BVError. File not open. WJc&  [ M x B p  b T 4+ .R}PD8 /STRINGOP GOTOXY FILEOPS PASCALIOEXTRAIO C16BITCOSCREENOP  $CONST 'C_NUMCHARS = 2; (* number of characters per word *) 'C_MAX_BUF = 511; (* 1 minus number of characters in a block *) $ C_BLOCKSIZE = 512; (* number of characters in a block *) $ $TYPE $ 'C_INTSTRING = STRING [ 6 ]; (* plus minus sign *) 'C_HEXSTRING = STRING [ 4 ]; (* sizeof( integer ) * 2 *) 'C_OCTSTRING = STRING [ 6 ]; (* sizeof( integer ) * 3 *) 'C_CHRSTRING = STRING [ 2 ]; (* sizeof( integer ) *) 'C_DECSTRING = STRING [ 6 ]; (* sizeof( integer ) * 3 *) 'C_BYTSTRING = STRING [ 6 ]; (* octal bytes - sizeof(integer) * 3 *) ' 'C_BUFFER_RANGE = 0 .. C_MAX_BUF; 'C_BUFFER_TYPE = PACKED ARRAY [ C_BUFFER_RANGE ] OF CHAR; ' $VAR ' 'C_LOW, C_HIGH : 0 .. 1; 'C_MOST_SIG_FIRST : BOOLEAN; ' 'C_BUFFER : C_BUFFER_TYPE; ' 'PROCEDURE C_MAKE_INT( START : INTEGER; VAR RET : C_INTSTRING ); 'PROCEDURE C_MAKE_OCT( START : INTEGER; VAR RET : C_OCTSTRING ); ''PROCEDURE C_MAKE_CHR( START : INTEGER; VAR RET : C_CHRSTRING ); 'PROCEDURE C_MAKE_HEX( START : INTEGER; VAR RET : C_HEXSTRING ); 'PROCEDURE C_MAKE_DEC( START : INTEGER; VAR RET : C_DECSTRING ); 'PROCEDURE C_MAKE_BYT( START : INTEGER; VAR RET : C_BYTSTRING ); ' 'PROCEDURE C_INITIALIZE; 'PROCEDURE C_FLIPBYTES; 'PROCEDURE C_DEBUG;  (* THis is filler THis is filler THis is filler THis is filler THis is filler THis is filler THis is filler THis is filler THis is filler THis is filler  *) ! !IMPLEMENTATION C16BITCO2v%1i%0h ! i!i! i$! $0!!ikkj!$"! "j! i#$"-Ȗ`"`"!`ɧ!`ɧ!`ɧ!` ɧ!Ȗ  ! !Ȗj& '1hmj"%&"  h"j'0h&&0  hmj"%&"  h"j$%hki!#$! h!i%hki!#$! h!i$%hki!#$!  h!i%hki!#$!  h!i:0h1 h  jh " 0 h jh " A hia2r prp0r prprp Hr prparpr paȆah Pr p!rpTr pr p/sprp! ҙYr prparpr paȆah fbr p!rpfr pfr p/sprp! қkr prparpr paȆah brr p!rpvr pbr p/sprp! қ{r prparpr paȆah r p!rpr p r p/sprp! ҙr prparpr paȆah r p!rpr pr p/sprp! ҙr prparpr paȆah r p!rpr pr p/sprp! ҙr prp 00-327688   2DEBUGGING PROCEDURE FOR THE 16 BIT CONVERSION UNITT.TYPE INTEGER NUMBERS - A 10 WILL QUIT THE LOOPPCHARACTER TESTTNUM = CHAR = HEXADECIMAL TESTTNUM = HEX = INTEGER TESTTNUM = INT = OCTAL TESTTNUM = OCT = INTEGER BYTES TESTTNUM = DEC = OCTAL BYTES TESTTNUM = OCTB = FINISHED TESTINGGLgKr  EXTRAIO PASCALIO | IV2LIBRA 2 DiCCopr. 1979 Regents, UC; Copr. 1984 SofTech Microsystems, Inc.  J{ IV2LIBRAA)`*P gruv `v t+.10#x퍱x݇퍰|폤 `pxć瀀 瀐ćʖ/(hj9 9 jj"q0 w0k0k#x#xk#w#xk#9 #l$m$pni!&%`!% !!i$$قM9 p0k l7$ #xk7(폤 #l'm$(%$!(%'$a(%$q(%$瀁(%$瀑(%  L!xh!````!x! Ė`y`aaɤq)߇~ѐ`$Օ1h  i xha j  p`w1 ! i 6 "u:  "   j"Ҋ:0ik!2!x2j2j!"!#u)"k!xiʖ  ]5^Paw m%}m%k#k #@?k`#  7`##j`jn6 "bu"og= g5X g+ "au"ogB g5X gnb"ba"a`"``&Ԃ&cawb /.-`fɊ/b / րGh  ږ1akh:ihh9i`a fj""r "j # #fed #kkj"!#feՎ"d z#f #fr"v Ɋ4Mv *Ov Qv Sv րUfv %v#k "qr"op"jc`ahhfjh " r hbcsjh " c|c hsic!fd"!f h!frcv c|c!iυcs!scgc4bh j"c j" |h" s`w b bbc >h_( [ hhihh d io6`uO`u8`|kuԓPh&u p  mgjhg"u@ k# - i! !!iii#k̊ $'&2m%3&f !%l$f $%$l%&%%f ՜ՉՁ|w%"n!o   _ !% !%f1 01M'& % & `k"!`rkz -.lr v uPpusup^6 6u p6jbuP bU b pi!!҈ .^- `v  aAh a H v )cȚuii !hbv c!"c! c! c!ca`r!i h u Գ*! h (* *xc 0 h! %i&hɥ`ɥa!f e dnnmmllkkfjjiihhfg rqpo  sr nrv v jr v uPpusupuuPu p6B666 ,6$ ց6f%_  ')(T)( ?9'i!'4!b Ʉd#! #)!iƖ(Y f *:m5%0a5 af*f55p5˖ 5u/YH5r5q5 mr )v 5v2v 4u5p: 5ց:55:z:55 5p5mr vv uPv v u՜u77u77u77u777$777aA7. $bh   |hց8: 6b b2 c q x n,r umr gr ՠ^Ւ  Amr v (5:v 54;8 for option menu LOST CARRIERR LOST CARRIERR error on . Hit """ to end recording. Closed Disk writee Disk rereadI/O error closing receive file SenddCurrently Sending Close it ?  Closed Left opennSend what textfile ? .TEXT Opened.TEXTRecorddCurrently Recording  C(lose, P(urge ?  Closed PurgedError closing received file Recording to continueddRecord as what textfile ? .TEXT Exists, P(urge ?  Purged Savedd Opened.TEXTThaww2Thaw: T(eleMail, M(USUS, O(ther, , or :  Other: For an e-mail system other than TeleMail or MUSUS, youu0 may have to set the Thaw Character manually..; The Thaw Character is what TeleTalker must receive from< the e-mail system before it will send the next line of aa: file. TeleMail uses . I have MUSUS set up to usee& CHR(1) via the OP and PC commands..'ThawChar: Please type Thaw Character : xRateeRate: 1(200, 3(00, ? ExittBitss'BitsPerChar: 5(, 6(, 7(, 8(, or ? ExittParityy)Parity: E(ven, O(dd, D(isable, or ? 00 EvennOddDisableddFloww FlowControl[ NooOut NooIn NooMaskk& ]: O(utput, I(nput, M(ask, or ? ExittIoConfiggCnfg: , or : TT@@LffOnnOffDplxxExittPrintOFFFPrintONExittOpt: G(o, S(end, R(ec, P(rt, &B(rk, C(onfig, T(haw, 7(, 8(, E(xit - GooBreakThawedd7 Cleared & Thawedd 8 Cleared7T Finished. P{}~$Mm FILEOPS GOTOXY EXTRAIO PASCALIOSTRINGOPREMUNIT RAWCONSO PtTELETALKRAWCONSOREMUNIT (  2Copyright 1979 - 1984, RB&A. All rights reserved.sRAWCONSOn#`p$ "!!"!! ʄ ʀp""%##ɥ#ʇ#ɥ#ʇ"##ɥ#ʖ#h %i!0!1 2ʀpprM d***  REMUNIT G4+b,Pbih ! b  h-" "j!0jh 0 5 0kkk)`,Pp"  `  p"+*.-h h i!  ! !j j&  p pQ  p pip$ hp$h   ip$xhp$xh` p4 `i`i`!` p` p`i$)jh "ki!#!i h=`` p `pT3 hhw 2X"3hT,WPia3ra,RraX#UĊUX 35-3):67/f1P8765 4 3 f mh % 9 aA hA raK6ibD rbH rb 5b 8b 7ʇ4bʊbdʀap06s¿8>$ #p""pp"""xp"xL`!Ċ!ĖG Y`"`j `aptpAT #E Q V X1 S7=60 S10=30 S11=36 S12=40+++#E Q V X1 S7=60 S10=30 S11=36 S12=40ADTTHOH11MASKKFLOWINNFLOWOUTMaskk/[B >!&bD,!7*** REALOPS STRINGOP OTELETALK WaPa++aPt+Wt+Pa++aPt+Xt+Pa++aPt+ Yt+Pa++aPt+Tt+Pᅄ⅄a`s uu upW)u u+u  /u 1u 3u 5u u9u Ovov Iviv Mvmv =u Au 8 Eu Iu Mu 7 ^v7@v7v]0lk#$ u#kwQu uufu mu pu su uuxu uu߁ uu Avu u  ۃ ⼃- ۃ    sAsTsVs1sEs1ssOs s)`*P,u`u vu u u  v^v@vu s2s, uu u u,+ p#pp9vp`9vp`Ե9 p "ih !"  " " aA hޖ@:: : : ::p p!vu u u,u u1xu eu u sh y Y%= eu u u!veu  u uu ePu u e|eee. eet)ee:eiaePtaUtaP=e p#eu u uepQe'eaeta!=ev , #,$u u2(u u 3u sh c C! u =u u p PO pu Au u!vEu u u%Tu u [u uau Pu u . t):iaPtaoUtaP p|vu ru sh |# u u u/ Pu u u p pu u up;ata pv  , [u uu sh ۃ ⼃ h h ՜u uuu uu uu u u'u uFu udu uuxu sh   u p 7 ^v7@v7vu u uu sh ⼃ u up 3,uu /u uu sh ⼃ u up 0ߚuu u uu sh ⼃ up u u8 u uu u u uu  u *u u u u u u sh ⼃. 5u up* $! փ8 vu2 au ueu iu sh ⼃p x    ;奄u u uu uc 08 u 8Hvu Fvu)   u u p+b,Pih bb  ! b 0i h!.-`- ` pՇu .Pu u .R.... ..t1..:$..PtUtPp`. qu`u`u /0`WPu `u W Wpt W턁Wt$avu u u u  u u`u `WPu `u p Wtć!W0ć"Wć#Wć$Wtć%W ć&W ć'W ć(Wć)W,*Wtć,-Wtćˋ` ` Hmu `u u up  aAh A Aň A0j$" $" "!"""#"$"%"&"'"(") ۃki!#%"*!x "*!x!iֆ ⼃ki!#%"-!x"-!x!i֚"u uu umx՚u u`$``s33  pu u u uu u2 1= 3 ppuru u "u &u sh Gh : aAh BՉ Hu uq m iea ]Ju usIMu u4p"Qu up"[u uք` vu GrW =i rr:sXs070 0v30-ڡ0p20ڡ:0:: ss1016Ն5 5w;9=ev #= eu u u7e;; 50 50 0 8塥0-0s8'0v20ڡ:0::  = FlowIn,FlowOut,, LineFeed,Maskk)ERROR Configuring Communications. Abort.Rt-, Pty--EvnOddDis, Bit--, Flow-, LfOnn, LfNoo, DplxH, DplxF, Thaw-( R a n d y ' s T e l e T a l k e rr 4.1mm of 25 Jul 84-Copyright 1979-84, RB&A. All rights reserved. for option menu error on . Hit """ to end recording. Closed Disk writee Disk rereadI/O error closing receive file SenddCurrently Sending Close it ?  Closed Left opennSend what textfile ? .TEXT Opened.TEXTRecorddCurrently Recording  C(lose, P(urge ?  Closed PurgedError closing received file Recording to continueddRecord as what textfile ? .TEXT Exists, P(urge ?  Purged Savedd Opened.TEXTThaww2Thaw: T(eleMail, M(USUS, O(ther, , or :  Other: For an e-mail system other than TeleMail or MUSUS, youu0 may have to set the Thaw Character manually..; The Thaw Character is what TeleTalker must receive from< the e-mail system before it will send the next line of aa: file. TeleMail uses . I have MUSUS set up to usee& CHR(1) via the OP and PC commands..'ThawChar: Please type Thaw Character : xRateeRate: 1(200, 3(00, ? ExittBitss'BitsPerChar: 5(, 6(, 7(, 8(, or ? ExittParityy)Parity: E(ven, O(dd, D(isable, or ? 00 EvennOddDisableddFloww FlowControl[ NooOut NooIn NooMaskk& ]: O(utput, I(nput, M(ask, or ? ExittIo*ConfiggCnfg: , or : TT@@LffOnnOffDplxxExittPHONE.DIR.TEXTTName of Phone List : .TEXT  Choose, or :  ....DiallPrintOFFFPrintONExittOpt: G(o, S(end, R(ec, D(ial, P(rt, &B(rk, C(onfig, T(haw, 7(, 8(, E(xit - GooBreakThawedd7 Cleared & Thawedd 8 Cleared7T} Finished ^ ? &h0[]u^ }m FILEOPS GOTOXY EXTRAIO PASCALIOSTRINGOPREMUNIT RAWCONSO  UNITS@6 COMMANDIO.CODE ޲ERRORHANDL.CODE: DIRINFO.CODE) DATASEGS.CODE)4SMSERVICES.CODE47CLOCKUNIT.CODE7C CUPOPS.CODECIATTRIBUTE.CODEIN FILEINFO.CODENR TRANSFER.CODER\ SYSINFO.CODE\c WILD.CODEZciCHKSUMOPS.CODEi PEDGEN.CODE SMTYPES.CODEQ CHGROUP.CODEQCHSERVICES.CODEQ LOCATOR.CODEQ€DISKSHARE.CODEQ׀PRNTSHARE.CODEڀBYTE_FLIP.CODEQ SOCKETS.CODE" TIME_OUT.CODEQ SMSERVER.CODESCREENOPS.CODEQ9 KERNEL.CODE+ U421@6 COMMANDIO.CODE ޲ERRORHANDL.CODE: DIRINFO.CODE) DATASEGS.CODE)4SMSERVICES.CODE47CLOCKUNIT.CODE7C CUPOPS.CODECIATTRIBUTE.CODEIN FILEINFO.CODENR TRANSFER.CODER\ SYSINFO.CODE\c WILD.CODEZciCHKSUMOPS.CODEi PEDGEN.CODE SMTYPES.CODEQ CHGROUP.CODEQCHSERVICES.CODEQ LOCATOR.CODEQ€DISKSHARE.CODEQ׀PRNTSHARE.CODEڀBYTE_FLIP.CODEQ SOCKETS.CODE" TIME_OUT.CODEQ SMSERVER.CODESCREENOPS.CODEQ9 KERNEL.CODECOMMANDI c@5CCopyright 1983 SofTech Microsystems, Inc.  >J   type bigstring=string[255];  var havechain,inredirect,outredirect,monitoropen,inmonitor:boolean; " "function redirect( command:bigstring ):boolean; "procedure exception( stopchaining:boolean ); "procedure chain( command:bigstring );  "procedure initcommand; "procedure startmonitor; "procedure stopmonitor( saveit:boolean ); "procedure getchainline( var command:bigstring ); "  implementation COMMANDIc@5  ERRORHAN CCopyright 1982,83,84 SofTech Microsystems, Inc. +   TYPE drive_range = 4..127; (eh_results = ( cant_handle, re_initialize, continue ); (eh_info = record 4{used internally by operating system} 4a:^integer; b:^integer; c:integer; 4d:^integer; e:^integer; f:^integer; 2end;   { system error handling parameter setting: }  PROCEDURE SetErrorLine( line:integer );  PROCEDURE SetUserMessage( drive:drive_range; message:string );   { user error handling facilities: }  PROCEDURE SetErrHandler( var info:eh_info; 9FUNCTION ErrHandler( err, ior:integer ):eh_results );  PROCEDURE ClrErrHandler( var info:eh_info );  PROCEDURE ErrToMessage( err:integer; var message:string );  PROCEDURE IORToMessage( ior:integer; var message:string );  PROCEDURE Debugger;   { process control facilities: }  PROCEDURE Cancel( taskid:processid );   IMPLEMENTATION ERRORHAN ,c-P// Ս-a r! jh "  c)/xa/xar/Ċ+/xa)r/!Ě/xcP/`$ $  ! " # t`! t ! t! t@^h  z  h |hI uVvĆrDEBUGGER{f *** CONCURREPRNTERR SCREENOPPERMHEAP !DIRINFO  S(CCopyright 1984 SofTech Microsystems, Inc.  %   {$L-}  USES {$U fmunits:Wild.Code} Wild;  {$L^}  (*  USES {$U fmunits:Wild.Code} Wild;  *)   TYPE dDateRec = PACKED RECORD 5Month: 0..12; 5Day : 0..31; 5Year : 0..100 3END;  (dNameType = (dVol,dCode,dText,dData,dSVol,dTemp,dFree,dDir);  (dChoice = SET OF dNameType; $ (dLongString = String[255];  (dFListP = ^dFList; (dFList = RECORD 3dFTitle: String[15]; 3dFNextEntry: dFListP; 3dFTempFile: boolean; 1END; $ (dListP = ^dList; (dList = RECORD 2dUnit: Integer; { Unit # of entry } 2dVolume: String[7]; { volume name of unit } 2dVPat: dPatRecP; { volume pattern info } 2dNextEntry: dListP; { Next entry in list } 2CASE dIsBlkd: Boolean OF ,5True: (dStart, { Starting block of entry }  allocated}  { "The function DS_Allocate is used to allocate a data segment. A descriptor "used to describe this segment is returned via DS. In the event that "there is not enough free memory to allocate the data segment then "a value of fa,lse is returned. This function will also return false if "the Words parameter is <= 0. A value of true is returned if the segment "is allocated. "The function DS_Avail can be used to determine how much memory can be "allocated.  The parameter Permanent is used to indicate whether or not the data "segment is to be preserved after the program creating it terminates.  Permanent data segments form a convenient mechanism for passing data "between programs.  } 5 5  PROCEDURE DS_Free (VAR DS : DS_Desc);  {  The procedure DS_Free is used to deallocate a data segment. "Note: permanently allocated data segments must be explicitly deallocated; "they are never automatically deallocated. Non-permanent data segments "will automatically be deallocated when the program terminates but should "be explicitly de-allocated whenever they are no longer needed.  }    PROCEDURE DS_FreeAll;  { "The procedure DS_FreeAll deallocates all non-permanent data segments. "This procedure is implicitly called at the end of a program.  }    FUNCTION DS_Avail (NeededSegs : STRING) : INTEGER;  { "The function DS_Avail is used to determine the largest available space "for use as a data segment. Since code segments compete for space "with data segments, the string parameter NeededSegs is used to specify "what swappable code segments should be assumed to be in memory when "determining the maximum amount of data segment space.  When running with an internal code pool this function is equivalent to "VARAVAIL.  }    FUNCTION DS_FindPerm (VAR DS : DS_Desc) : BOOLEAN;  {  The function DS_FindPerm is used to get the data segment descriptor "of the permanently allocated data segment. If an application "allocates more than one permanent data segment then the one that was "allocated first is the one returned by this function. A function result "of true indicates that a permanent data segment exists and that its "descriptor is being returned. A function result of false indicates that "no permanent data segment exists. "If multiple permanent data segments are being used to pass information "from one program to another then this first segment can be used to pass "the data segment descriptors of the other permanent data segments.  }    FUNCTION DS_Read ( DS : DS_Desc; 6Offset : INTEGER; 6NWords : INTEGER; 2VAR Buffer : INTERFACE ARRAY [lo..hi:INTEGER] OF INTEGER 1) : BOOLEAN;  { "This function reads data from the selected data segment into a buffer.  The parameters Offset and NWords indicates the location within the data "segment of the data to be read. The offset is in words from the beginning "of the segment. A value of false is returned if any part of the selected "area is outside of the data segment or if NWords is larger than the buffer "size or is negative.  }    FUNCTION DS_Write ( DS : DS_Desc; 7Offset : INTEGER; 7NWords : INTEGER; 3VAR Buffer : INTERFACE ARRAY [lo..hi:INTEGER] OF INTEGER 2) : BOOLEAN;  { "This function writes data from the buffer into the selected data segment.  The parameters Offset and NWords indicates the location within the data "segment where the data is to be put. The offset is in words from the "beginning of the segment. A value of false is returned if any part of "the selected area is outside of the data segment or if NWords is larger "than the buffer or is negative.  }    IMPLEMENTATION -DATASEGMbXe(qqhk  sk< zj ~i!}! "! j!i! ~"#"k h# q#l;n$l$ի եn`r $p j"q""" $"# "$Ȋ"&" "at!j""" Ěp j""!""Ěpas j""00% Ė$xh$   R i!j"x"y"y"xĚp k####!xqp $p`rh i!*1!j"a"z"Aaj" "_ h "!Ɉ Ȉfi!!!,f!!!i!!,!i!i!um^k#yl$x i!*N$ +!x<+!x ,z,y$)-fm-}-x,z- !튬#|k#%Ԛ,.e/Psq es1lqi$!zl! i!qqi!j"}"! $" l"j"!! i!qҐ kqi!zh!~j"}"! " h"j"!~ # k! i!q$l$l$l#$$k#塤1s0hiqj"k#l$$ ${!${i#h#k#"" j"q n% ĖB (h i&&$''&! !ڡ "!x!'p&&p  (h i&&$''&! ! ڡ "!x!'p&&p qi!h kbcx#k"&b#  h !ܖv DATASEG$DATASEG&DATASEG DataSegmmDataSegmmPP #nD;\ *** STRINGOPHEAPOPS EXTRAHEAPERMHEAP SMSERVIC 2 CCopyright 1983 SofTech Microsystems, Inc. WtYt8     (* #Uses ({$U sockets.code } sockets, ({$U smtypes.code } smtypes; ( ( ( (  *)   {$L-}  "Uses ({$U sockets.code } sockets, ({$U smtypes.code } smtypes; ( ( (  {$L^}     Function sm_lock ( access : access_typ ; 3wait_forever : boolean ; 3semid : sm_long_string ) : sm_result; 3 "{ attempt to perform lock on a semaphore } "{ access designates whether lock to be shared or exclusive } "{ wait forever designates whether lock should be attempted } "{ until successful ( with the possibility of hanging if } "{ it is not possible to perform the lock) } " "  Function sm_unlock ( semid : sm_long_string ) : sm_result;  "{ attempt to unlock a semaphore } "{ unlock will only be granted if requesting node is an owner } "{ of semaphore 'semid' } "   Function sm_inquire ( var inq_list : p_inq_rec ; 6time_limit : integer; 6procedure user_proc 7( this_response : p_inq_rec ; 9var stop_collecting : boolean)) : sm_result;  -"{ return semaphores currently in semaphore table } "{ the time_limit is the number of 1/30 second increments } "{ to wait for a response } "{ the user_proc is provided to allow exiting the inquire } "{ before the time period has expired } "{ the user should set up a procedure within the procedure } "{ or function that calls sm_inquire which has the parameters} "{ of the user_proc and the name of this procedure should } "{ be passed as a parameter } "{ if no special action is desired by the user_proc it is } "{ sufficient to set the boolean stop_collecting to false } "{ and return (if set to true sm_inquire will be exited) } " "  Function sm_clear_mine : sm_result; " "{ unlock all semaphores owned by this node } "{ for easy clean_up when finished executing } " "  Function sm_list ( var ptr : p_inq_rec ) : boolean; " "{ the boolean result indicates whether the current list has any } "{ semaphores present } "{ a value of true indicates this node does have semaphores } "{ locked while a value of false means there are none } "{ some caution is advised since the local list may not be in } "{ sync with the actual semaphore table ( if server dies , eg. } " "  Implementation SMSERVICH`r `x`xĆ`xĆ`x c, 0hj "d  j h"/0ha w!c ! ! 0!  h !Ė  d. 0i0jk-D!#;!e*!  ! ! k!0! " ! a k!j! i! ! ha  iBCPF  G E'  E t tfhf u1authEhuh E  h G  t FABP D tmff u$`u tmum%  m%D  CRou`ruhc bkl\3 P\t S3r rsij]2`^`  p put!]k2oaao^a b a dcLK^r r Ս"j_^_ n!n wn^_ ntn ttnćnI^_ 3nmn wm nć__n^_ ntn tn ćtx]rqp r"u^` t tmff* u$`u tmum%  m%   0 xii   psemshare psemshare pseminquire,error allocating inquire list in sm_inquire psemshareW& v+k *** PASCALIO EXTRAHEA HEAPOPS TIMEOUT LOCATOR BYTEFLIPSMTYPES SOCKETS  dCLOCKUNI  rhxxxV?xx6   type weekdays = (Sun,Mon,Tue,Wed,Thu,Fri,Sat); (clockinfo = record 6thousandths:0..9; 6hundreds:0..9; 6tenths:0..9; 6second:0..59; 6minute:0..59; 6hour:0..24; 6day:1..31; 6weekday:weekdays; 6month:1..12; 6year:1980..2079; 4end {clockinfo};   procedure timedate( var c:clockinfo );   procedure set_timedate( c:clockinfo );   IMPLEMENTATION .cCLOCKUNI^p 0 ˏ 0 1; 2; 3 54 8 6 7Ė `* " !#$%&'()p C \ PCUPOPS #$qCCopyright 1983 SofTech Microsystems, Inc. Y-88v   TYPE $cup_sw_id = packed array[0..5] of char; $bite = 0..255; $unip = ^integer;   Procedure CupInit; "{To be called by the OS only. Outside use is not supported.}   Function StoreCupId(sw_id:cup_sw_id): boolean; "{Stores the CupId into this workstation's CUP DEVICE. #Returns false if this CUP DEVICE already has ten entries. #}   Procedure PollCupId(sw_id:cup_sw_id); "{Requests a response from all workstations with the " designated CupId stored in their CUP DEVICE . #}   Function IllegalUser(sw_id:cup_sw_id;sw_count:integer) : boolean; "{Returns true if software in question is being used more than #sw_count times}   Procedure RemCupId(sw_id:cup_sw_id); "{Removes the designated CupId from this workstation's CUP #DEVICE. #Does nothing if network not available}   Function GetCup(var sw_id:cup_sw_id;var sw_count:integer): boolean;  {Returns the CUPID and CUP count for the currently executing #program. #GetCup will return false if current program has no cup information.  Returns false when network not available} #  Function AssocCup(source:unip;info:unip; 2dest:unip;stype:unip; 2addr:integer;length:integer; 2qstart:boolean;startsys:boolean; 2var already_read:boolean; 2var sw_id:cup_sw_id;var sw_count:integer):integer; "{To be called by the OS only. Outside use is not supported.} "  Function SysGetCup(info:unip; 3fromI:boolean; 3var sw_id:cup_sw_id; 3var sw_count:integer):integer; "{To be called by the OS only. Outside use is not supported.} "  Function AssocQCup(source:unip; 3addr:integer;length:integer; 3var sw_id:cup_sw_id;var sw_count:integer):integer; "{To be called by the OS only. Outside use is not supported.}   IMPLEMENTATION OCUPOPS  $q"00}Ė6^ouH  Ȗp   ' ''^h  z h |hvz0(p0xa0kj"#! a!"jbe<btii!;  !o$ad< at;  cgh ;>  ad< at= j! :Ċ j!p Ė! !塠j ii$#jh " !& i h.!% '*x"o'*x'*xY'*xHih !' *' *x# &x h)''*x    N'*x'*x 8'*x ''*x'*x  ww ww p p t('ā a ]-,)ĭ('ā 0  ',0 ,Ċ 'ā ր  v 2pa&0ć)<+a.!x *+`1c/Ą vbv"% %-s'pć'x&&%xć%x!&& x .&&!e% xće ؇-xx#% % s'pć'x"%xć" d"u"!!Հ$&&$"%xć "s'pć'x!&&$!"xćߊ1$"&&$"%xć݇"&&$ $x"%%$$x$x$xՄx $x "%-$x-$###M$x $e%xće ͇  % %s'pć'x# }e$x ր m$x 4"%%$x 0$x  e$x ր%ex ex%%exć5V  %% (':ć-,)0ć+\eex%%eexexć%%0 exć v;  21  p   ā >  >  p , 9'-<0 (y( x( x'a( xaax h )a ( xax h aaxax ax h ) a x h5V  h )   h,+*:;  ր* ev`0au  ev pjcb* !#)(d'& ev  SOCKETS System Halt - Tampering Detectedd;3m cj& PASCALIOHEAPOPS EXTRAHEAPNMSGCUPEXTRAIO INITOPS  ATTRIBUT SiCCopyright 1984 SofTech Microsystems, Inc.  >J   TYPE FA_File=file; (FA_LongString=string[255]; (FA_DiskAddress=packed array[0..2] of char; (FA_FTreeId=packed array[0..3] of 0..255; (FA_Chron=record 3date:packed record :month: 0..12; :day: 0..31; :year: 0..100; 8end; 3time:packed record :min: 0..59; :hour: 0..24; {24 indicates time not valid} 8end; 1end {FA_Chron}; (FileAttribute = *( { 0} FA_Reserved, { 1} FA_Organization, ,{ 2} FA_PackingFactor, { 3} FA_EmbeddedKeys, ,{ 4} FA_DuplicateKeys, { 5} FA_SpanningRecords, ,{ 6} FA_BlockedRecords, { 7} FA_RecordVLength, ,{ 8} FA_KeyVLength, { 9} FA_LogicalRecSize, ,{10} FA_KeyOffset, {11} FA_KeyLength, ,{12} FA_KeyCompareType, {13} FA_LastValidByte, ,{14} FA_KeyDataLength, {15} FA_ParentTreeId, /,{16} FA_Name, {17} FA_Comment, ,{18} FA_FileStatus, {19} FA_VersionNumber, ,{20} FA_FileType, {21} FA_PrimAllocation, ,{22} FA_SecondAllocation, {23} FA_Copyright, ,{24} FA_PartNumber, {25} FA_CreationDate, ,{26} FA_RevisionDate, {27} FA_ArchitectLevel, ,{28} FA_NextTreeId, {29} FA_VolumeSize, ,{30} FA_FileRootAddr, {31} FA_TreeId, ,{32} FA_DataBlocks, {33} FA_ReadOnly, ,{34} FA_VerifyWrites, {35} FA_NodeBlocks, ,{36} FA_Exclusive );   FUNCTION GetAttribute( var f:FA_File; which:FileAttribute; 7var value:interface packed Aarray[lo..hi:integer] of char ):boolean;   FUNCTION PutAttribute( var f:FA_File; which:FileAttribute; 7var value:interface packed Aarray[lo..hi:integer] of char ):boolean;   FUNCTION SetKeyComparison( var f:FA_File; /function KeyCompare( var LeftKey,RightKey:FA_LongString):integer 9):boolean;   FUNCTION FA_Open( var f:FA_File; name:FA_LongString ):boolean;    IMPLEMENTATION ATTRIBUTSi  FILEINFO SHyCCopyright 1984 SofTech Microsystems, Inc.  >J  TYPE 'F_File_Type = file; 'F_Date_Rec = Packed Record 6 Month : 0..12; {0 implies date not meaningful} 7Day : 0..31; 7Year : 0..100; 5End; { F_Date_Rec } " "  FUNCTION F_Open (var fid: F_File_Type):BOOLEAN;  FUNCTION F_Length (VAR Fid : F_File_Type) : INTEGER;  FUNCTION F_Unit_number (VAR Fid : F_File_Type) : INTEGER;  PROCEDURE F_Volume (VAR Fid : F_File_Type; 4VAR File_Volume : STRING);  PROCEDURE F_File_Title (VAR Fid : F_File_Type; 8VAR File_Title : STRING);  FUNCTION F_Start (VAR Fid : F_File_Type) : INTEGER;  FUNCTION F_is_Blocked (VAR Fid : F_File_Type) : BOOLEAN;  PROCEDURE F_Date (VAR Fid : F_File_Type; 2VAR File_Date : F_Date_Rec);  PROCEDURE F_Get_Short_Circuit (VAR Fid : F_File_Type; ?VAR Short_Circuit : STRING);  IMPLEMENTATION FILEINFOSHy /TRANSFER cDACCopyright 1984 SofTech Microsystems, Inc.  >J   TYPE T_Long_String = STRING [255]; %  PROCEDURE T_Transfer_File ( Source_File_Name, ?Dest_File_Name : T_Long_String; ;VAR Result : INTEGER);   PROCEDURE T_Image_Disk_Copy ( Source_Device, BDest_Device : INTEGER; >VAR Num_Blocks : INTEGER; >VAR Result : INTEGER);  PROCEDURE T_Menu_Transfer_File ( Source_File_Name, ?Dest_File_Name : T_Long_String; ?Procedure Src_Menu; ?Procedure Dst_Menu; ;VAR Result : INTEGER);   PROCEDURE T_Prompt_Image_Disk_Copy ( Source_Device, EDest_Device : INTEGER; BProcedure Src_menu; BProcedure Dst_menu; >VAR Num_Blocks : INTEGER; >VAR Result : INTEGER); $  IMPLEMENTATION TRANSFERcDA  SYSINFO gDCCopyright 1984 SofTech Microsystems, Inc. 2 J   TYPE 'SI_File_Sys_Level = ( SI_SFS, SI_AFS ); ' 'SI_Long_String = STRING [255]; ' 'SI_Date_Rec = PACKED RECORD 7Month : 0..12; 7Day : 0..31; 7Year : 0..100; 5End; { SI_Date_Rec } ' 'SI_Vol_List = ^SI_Vol_Record; 'SI_Vol_Record = PACKED RECORD 4NextVolRec : SI_Vol_List; 2 VolName : STRING [7]; 4UnitNo : INTEGER; 4LocalDevice : BOOLEAN; 4CASE Blocked : BOOLEAN OF 6FALSE : (); 6TRUE : (NumBlocks : INTEGER; >CASE SVol : BOOLEAN OF @FALSE : ( Reserved : string[19]); @TRUE : ( PUnitNo : integer; JPOffSet : integer; JPName : string[7]; JFreeSpace : string[7] )) 2END; {Vol_List} * * "  PROCEDURE SI_Code_Vid (VAR SI_Vol : STRING);  PROCEDURE SI_Code_Tid (VAR SI_Title : String);  PROCEDURE SI_Text_Vid (VAR SI_Vol : STRING);  PROCEDURE SI_Text_Tid (VAR SI_Title : String);  FUNCTION SI_Sys_Unit : 0INTEGER;  PROCEDURE SI_Get_Sys_Vol (VAR SI_Vol : STRING);  PROCEDURE SI_Get_Pref_Vol (VAR SI_Vol : STRING);  PROCEDURE SI_Set_Pref_Vol (SI_Vol : STRING);  PROCEDURE SI_Get_Date (VAR SI_Date : SI_Date_Rec);  PROCEDURE SI_Set_Date (VAR SI_Date : SI_Date_Rec); {procedures added for IV.2 start here} PROCEDURE SI_Get_Time (VAR Hr, Min, Sec, Ticks : INTEGER);  PROCEDURE SI_Set_Time (Hr, Min, Sec, Ticks : INTEGER);  FUNCTION SI_Add_Del_Alias_Entry (AliasName : STRING; AFileName : SI_Long_String) : BOOLEAN;  PROCEDURE SI_Get_Alias_Entry ( AliasNumber : INTEGER; >VAR AliasName : STRING; >VAR FileName : SI_Long_String);  PROCEDURE SI_Clear_Work_File;  PROCEDURE SI_Set_Work_File (file_name : String);  PROCEDURE SI_Get_Volume_List (VAR p : SI_Vol_List); ! FUNCTION SI_Get_File_Level : SI_File_Sys_Level;   {$P} {**********************************************************************}  {* Implementation Section *}  {**********************************************************************} "  IMPLEMENTATION SYSINFO gDH `r P PP/`*TSr UU*PuUUuUP P/`*TSr UU*PuUUuUPzh @P <PK)`*P` t `u`u` ` <@<`+X DxĖu<= ɀd`s*=x`s=G&ϬPc0ru t t jEGhh" IGU,a~r 0cGuLurpcrcr8#"! t D#"! tZEhhրaccdrja(]mj"%Վ" n`v &p o''&'"'&'&'4'&}" '' &~' &' &'(x( Ċ! i"k W$jX"|hX"| X"|y"| pW$W$ $p$ji!"W!k##| !W"hW"|h X h y%W"i!! ĈX pPbiyՔuut tbth W  h   bib/h W  h i i!$$y<#W$P# "W$|iX!h" ȚX!" p#P".CODE.TEXT:/*.CODE.TEXT.CODE/:$/Y}vpNI' HEAPOPS STRINGOPOSUTIL SCREENOPFILEOPS  ,WILD  `CCopyright 1983 SofTech Microsystems, Inc. hG*] "  TYPE "D_PatRecP = ^D_PatRec; "D_PatRec = Record /CompPos, { starting position of pattern } /CompLen, { length of pattern } /WildPos, { starting position of pattern } /WildLen : Integer; { length of pattern in wildcard string } 0/Next : D_PatRecP; { next pattern } -End; { D_PatRec } "D_LongS = string[255]; "  FUNCTION D_Wild_Match( Wild, Comp:D_LongS; Var PPtr:D_PatRecP; 7PInfo:Boolean ):Boolean;  { Compares two strings (one containing wildcards) and returns true if they $match. Includes information about pattern matching that occurred if re- $quested (by PInfo) } "  FUNCTION E_Wild_Match(VAR Wild,Comp: DLongS; VAR PPtr: D_PatRecP; 7PInfo: Boolean): Boolean; 7  IMPLEMENTATION +WILD Jj x% x x! x x xj oj&&x&x%$&x~k#&&x&x%"# ja&k$&x-&&x&x%V`&M!h! B#! ! $&x,Y$&x}&&xoij*&s$*=ib$*{Mh* *&$*}$*%h*& &"j*&$** i$**"j"j$*%* * '%"!'x)('xĊ()Ė {xćx*xxa`xxxa`x!j""i"jx !QPc!ćx 5x!xc#xx xĊĊ *k)j&#=:#k#('j#"a`('&%! lj"$#"('&%"j&#{Kc(&#(&#cb('&%"'%""j_"'&#?#k"jH&#% #k#("'~&#%"t#k"j#( &#ڦ#(Լ#( "'C#"('&%2 +xrxl$)$")$*$#*$Ė kj# #"``$ ' @HEAPOPS  CHKSUMOP A,Copyright (c) 1983 SofTech Microsystem, Inc.   $? *  " $const max_chksum_file_name_length = 255; $ $type chksum_file_name = string[max_chksum_file_name_length]; $ )chksum_result = + +(chksum_no_error, 6{Checksum operation 7successful} 4 ,chksum_obsolete_error, 6{Checksum in code 7file is obsolete; 7i.e. the contents 7of the file have 7been changed} 7 ,chksum_io_error 6{Error opening, 7reading, or 17writing code 7file} *); $ $ $function chksum_gen(file_id: chksum_file_name; 8var iorslt: integer): :chksum_result; : $function chksum_check(file_id: chksum_file_name; :var iorslt: integer): 2 %ĭ!Ċ!! %kmn&-Ս&%%yկ%zo%ć%%P Ն%|r%| ʇ%|'rp0''%|&&' & &rp7%&& &' & & %& ĭ%} && &' & % %|r'w%|%zx%|r%| ʇ%|'rp0''%|&&' & &rp%|%zp%& ć%Ċ%{է%} j"(Ֆ(& ")Z&b)ɤ *@*&")Չ&瀂)  &b) ()%~2%ć%(ć%2 ((%ĭ && &瀒)''z'y l#$j*ՙ&瀒)Ն#k  ,''&")'ć'ć'ć'ć'ć' (ć' )%,m,Ċ,,&")&z-#$j) "&&y&&&& ć&y a-# & %xni- p &z  +Ċ++ !+Ċ!++%%%ć%ć%ĭ))%)ĭ))%ć% -ć% .-瀒.z/% / /./% ĭ/% &&/ć&/p&-瀂.%Ą&'Ċ%'š % #ć% %ĭ#&&% % '!&|Ą"Ą#ć'x'y'y$!"#'x'y uI$uu3u#&|&z3$ր$7 ("% ć% "(p% "ć% (7&| spćx&|&zx d  px((xĊ((ĭ   p)hx ĭX$p i!sjpk"!# 3#"$`pS"Bh h" "i i#!p!c#!"!js"h "" ha"! `dr d `.j. `** + ,* -yl-xm* ,瀐* xnn+xo ,`*  ʄ ,瀀* ʄ )*~y ^"&'}00J011&`1 1211҇y0'"&-#,,, + 22S,+ )&+)ć + 瀂+ )ć))+~+22C  xx..*- .&Ċ .-ć,-~,6--&( ( p (pM!,,,*ć*~,)//%/}Ր|z/և+#,,#,2* ć* x~,#%D)///*|ć*P/!,,,2 ć2~,! `sjĭi`p`  l j""#si!p p"""ih !"   " " aA hޖY~Y YZ ZdZVs[[Zp p.dZWs\\Zp piVZVWZWYZY|h鄂qio.Zre2riis阔 _e鄀鄁阀  rp(鄀鄁阀 邁  er erp p阐mS.irp pik4  # i  he mqW i!!!ѐ!xiWWd X j""釀l$ժ`$Ք`$p$x$p$xVp$Wć瀐${Y$xV$Wć`$$y瀐$yY$yY$lNx чXĊ.Xs\\p piXXxjk'& W 1  mer.r鄁iere c # ]^ _`abe##դWbWWchbn]lkfjh臂ihW#釀ԇWćՇferere#s\\p p阐ertlsiscs]sWsQsKsE s? s9 s3 s- s's!ssss sց9.rerr Warning:  unit not foundSEGMENT KERNEL USERPROGKERNEL Using  from Including  as segment of  from .TEXT.TEXT*SYSTEM.LIBRARY*SYSTEM.LIBRARY.CODECopy updated file ? @@Copy to what codefile? $$.CODECopying  to  in use. File not copied..Copying complete. (( blocks copied)*SYSTEM.PASCALL*SYSTEM.LIBRARY.CODEWarning: Library not founddInstalling new checksum into *SYSTEM.LIBRARY.CODEKERNEL KERNEL *** REALOPS KERNEL KERNEL USERPROG.CODE.CODE.CODECopying  to Copying complete. (( blocks copied) u S ? p 1+Ew@[  EXTRAHEA STRINGOP PASCALIO HEAPOPS CHKSUMOPGETCMD CUPOPS OSUTIL EXTRAIO FILEOPS  SMTYPES  @CCopyright 1983 SofTech Microsystems, Inc.  'L    (* #Uses ({$U sockets:sockets.code } sockets (sk_netaddr ); ( ( ( (  *)   {$L-}  "Uses ({$U sockets:sockets.code } sockets (sk_netaddr ); ( ( (  {$L^}     Const (sm_max_table = 50; (psem = 'psemshare'; (pseminquire = 'pseminquire';  Type " / "sm_string = string[15]; { semaphore actually only 15 characters } " "sm_long_string = string[80]; " "p_sm_owners = ^sm_owners; " "sm_owners = record 0owner : sk_netaddr; 0next : p_sm_owners; .end; . 3"p_sm_table_rec = ^sm_table_rec; " "access_typ = (shared,exclusive); " "sm_lockrec = record 1access : access_typ; 1semid : sm_string; /end; / "sm_table_rec = record 5lkrec : sm_lockrec; { semid and access } 5numowners : integer; { number of owners } 5owners : p_sm_owners; 5next : p_sm_table_rec; 3end; 3 !sm_table = array [1..sm_max_table] of sm_table_rec; ! !p_sm_tabl = ^sm_table; ! !p_inq_rec = ^sm_inq_rec; ! !sm_inq_rec = record 0lkrec : sm_lockrec; 0numowners : integer; 0next : p_inq_rec; .end; . !sm_inq_list = array[1..sm_max_table] of sm_inq_rec; ! !p_sm_inq_list = ^sm_inq_list; ! !sm_rqst_type = ( slock,sunlock,sclear); ! !sm_rqst_header = record 4typ : sm_rqst_type; 4rqstor : sk_netaddr; 4{other stuff } 3end; ! ! / !sm_result = 0( sm_okay, 2sm_full, 2sm_ill_rqst, 2sm_ill_owner, 2sm_not_found, 2sm_no_resp, 2sm_too_long, 2sm_error ); 0 0  sm_inq_mssg = record 2server : boolean; 2nummsg, 2numrecspermsg : integer; 2rqstor : sk_netaddr; 2result : sm_result; 0end; 0 0  sm_rqst_rec = record 2header : sm_rqst_header; 2lkrec : sm_lockrec; 2 2result : sm_result; 0end;  Implementation SMTYPES @ SOCKETS  xCHGROUP bBCCopyright 1983 SofTech Microsystems, Inc.  'L  "{ Uses Sockets, Chservices }  "{$L-} "Uses "{$U sockets:sockets.code} sockets ( $sk_netaddr ) , "{$U chservices.code} ch_services ( ${types} ch_result, ch_state, ch_type, ch_p_desc ) ; "{$L^} $  "function ch_init_group ( protocol : ch_type ) : integer ; " ${ allocates a group identifier and returns the value of the &identifier. A zero is returned if the group identifier cannot &be allocated. Protocol defines the channel protocol associated &with this group. All channels associated with this group must &use this protocol type. } & "function ch_free_group ( group_id : integer ) : boolean ; " ${ frees the channel group so that the group identifier can be &re-used by the system. Ch_free_group will not free the group &id if there are any associated channels. A false is returned in &this case. } & "function ch_group_receive "( $group_id : integer ; $var con_id : integer ; $var msg : interface packed array[min..max:integer] of ch3ar ; " var lngth : integer ") : ch_result ; " ${ performs a receive operation on the group defined by group_id. The &con_id defines the channel that actually received the message. } &  procedure ch_set_group_timout (group_id : integer ; timeout : integer) ; " ${ timeout is in 60ths of a second. This procedure sets the maximum &time a group operation will wait for any message to arrive on its &member sockets. } &  Implementation wCHGROUP mb1%i  t i9i t t i#(h)th)t h  p)ti!h5!bth *" "&$#uhր "t"t  Ե)t (! !t! ta kPRSINGLECHUTILS CHSERVICSOCKETS   CHSERVIC  rCCopyright 1983 SofTech Microsystems, Inc.  'L "{ Uses sockets } " "{$L-} "Uses {$U sockets:sockets.code} sockets (sk_netaddr) ; "{$L^} $ "Type " ${ Type ch_result is the error return code of all channel service &functions supplied at this level } & $ch_result = &( cr_success, { operation was a successs } (cr_error, { unknown error } (cr_msg_overflow, { message too large for user buffer } (cr_busy, { channel is busy } (cr_closed, { channel is closed } & cr_net_failure, { network hardware failure } (cr_ill_protocol, { illegal protocol passed to connect } (cr_no_response, { no response received from other side } (cr_version, { protocol version incompatibility } (cr_msg_lost, { message lost due to buffer overflow } (cr_memory, { memory allocation failure } (cr_incompatible, { incompatible protocol parameters } & cr_too_large, { message to large to send } (cr_sending, { both sides attempting to send } (cr_receiving, { both sides attempting to receive } (cr_ill_group, { illegal group specified for connection } & cr_no_msg { no message in socket buffer } &) ; & " { Ch_state of one side of the channel. This result is returned &by the ch_remote_status procedure and is used to keep track of &channel state by the Ch_utils unit. } & $ch_state = &( cs_open, { channel is open } (cs_closed, { channel is closed } (cs_receive, { channel is receiving } (cs_send, { channel is sending } (cs_disconnect, { channel is disconnecting } & cs_status { channel is performing remote status } &) ; & " ${ Ch_type represents the protocol types that are supported4 in this &version of Chanel_Services } & $ch_type = (connection, { channel services generic connection } /single { single packet delivery } / /{* add other protocol types here *} / .) ; 6 ${ ch_p_desc is the protocol descriptor that is passed to the &ch_connect procedure to describe the protocol desired over the &channel $} $ $ch_p_desc = &record (case p_type:ch_type of *single: ,(s_max_rcv_msg, { maximum size (in bytes) of received mess } -s_max_snd_msg, { max size of send message } -ack_wait_time, { time to wait for acknowledgement } -rcv_wait_time : integer);{ time to wait for data message } ' *{* add other protocol-type dependent information here *} * 'end ; 6  " ${* if new procedures are added add to end of current interface procedure 'list *} ' $function ch_connect $( &local_addr : integer ; { address of this side of channel } &remote_addr : sk_netaddr ;{ address of other side of channel } &group_id : integer ; { group identifier - optional } &protocol : ch_p_desc ; { protocol to be used over the channel } &var con_id : integer { connection identifier of new channel } $) : ch_result ; { result code of operation } & & &{ ch_connect attempts to connect two sockets to form a channel. Both (sides must call ch_connect within 1 minute of each other for this (procedure to work. Con_Id is the connection identifier to be used (in future calls to ch_services procedures. If the channel is to be (a member of a channel group, then group_id should be set, otherwise (a zero should be passed as the group identifier. } ( ( $function ch_remote_status $( &con_id : integer ; { defines the channel to perform status on } &var status : ch_state ; { status of the channel } &var message_count : integer @{ number of messages in other side's buffer } $) : ch_result ; { result of operation } & " { ch_remote_status attempts to find the status of the other side of (the channel defined by CON_ID. It will attempt to allocate a (temporary socket to do this. The status code returned is defined (in the set of constants at the beginning of this interface section } ( ( $function ch_send $( &con_id : integer ; { defines the channel } &var msg : interface packed array[min..max:integer] of char @{ the user message } $) : ch_result ; & &{ ch_send sends msg to the other side of the channel. It will not (return until the message is acknowledged or an error occurs. } ( $function ch_receive $( &con_id : integer ; { defines the channel } &var msg : interface packed array[min..max:integer] of char ; @{ callers buffer area } &var lngth : integer { byte length of the message returned } $) : ch_result ; & &{ ch_receive waits until a message arrives on the channel or an error (occurs. } ( (  function ch_disconnect $( &con_id : integer { defines the channel } $) : ch_result ; $ &{ ch_disconnect trys to 'bring down' a channel } &  Implementation CHSERVICbQ c.-//#s p`*u J *p j"" "" /i# ctiր!! -  s`*u$`si!!mp #"si #xii! s s!m&ash  op! !$"thր o !s!s`'ash  p! !%#"thր !s!s"ash  kp! !thր k!s222hޖvmM *** EXTRAHEAPR4SINGLECHUTILS SOCKETS   PLOCATOR  rcHCCopyright 1983 SofTech Microsystems, Inc.  'L   {Uses Sockets}  {$L-}  Uses {$U sockets:sockets.code} sockets ( "{types} sk_netaddr, "{procs} sk_open, sk_close, sk_set_timeout, sk_vgetmessage, sk_vputmessage, *sk_vputbroadcast, sk_nresult, sk_accept_broadcast ) ;  {$L^}   Type  "{ lo_result is the result code for Locator operations } " "lo_result = $(lo_okay, { operation was a success } %lo_unknown, { unknown socket level error } %lo_socket_overflow, { socket buffer overflow } %lo_open_error, { could not open required socket } %lo_memory, { could not allocate a message buffer } %lo_put_error, { could not PUT a message } %lo_buf_overflow, { received message too large for buffer } %lo_invalid_msg, { received an invalid message } %lo_no_message { no response from other side } $) ; $ !  {************ Acceptor Procedures ************}   function ac_initiate  ( !desc : string ; { broadcast service descriptor } !queue_depth : integer ; { max # of requests that can be remembered } !msg_size : integer ; { size of the requests (in bytes) } !var accept_socket : integer { the socket to receive the requests }  ) : lo_result ; { result of the operation }  !{ ac_initiate should be called by servers to prepare a socket pick up #location request messages. The DESC string is the broadcast string #that defines the service provided. The QUEUE_DEPTH is the number of #request messages that can be queued in the ACCEPT_SOCKET buffer. The #MSG_SIZE is the size (in bytes) of the USER PART of the request message #expected. The ACCEPT_SOCKET is allocated by the ac_initiate procedure #and should be used as an input parameters to the other acceptor #procedures. } #   function ac_getrequest  ( !accept_socket : integer ; { the socket to pick up request on } !wait_time : integer ; { time to wait for a request (in 60ths/sec) } !var requestor : sk_netaddr ; { who the request is from } !var msg : interface packed array [l..h:integer] of char @{ user defined part of the message }  ) : lo_result ; { result of the operation }  !{ ac_getrequest picks up one locator request off of the ACCEPT_SOCKET. #WAIT_TIME defines the time to wait for the request. REQUESTOR is the #network address of the sender of the request. The MSG is the user part #of the request. } #   function ac_putresponse  ( !accept_socket : integer ; { socket to put out response on } !requestor : sk_netaddr ; { where to send the response } !var msg : interface packed array [l..h:integer] of char @{ user defined part of the message }  ) : lo_result ; { result of the operation }  5!{ ac_putresponse constructs a locator response message and sends it to #REQUESTOR. MSG is the user part of the message }   procedure ac_close  ( !accept_socket : integer { socket to close down }  ) ;  !{ ac_close closes the ACCEPT_SOCKET. }     {************ Requestor Procedures ************}   function rq_putrequest  ( "desc : string ; { service we are looking for } "queue_depth : integer ; { # of responses to be held } "msg_size : integer ; { the size of expected response message } "var msg : interface packed array[l..h:integer] of char ; @{ user part of request message } "var request_socket : integer { the socket used to make the request }  ) : lo_result ; { result of the operation }  !{ rq_putrequest opens a REQUEST_SOCKET. The size of the request socket #is dependent upon the MSG_SIZE of the expected responses AND the number #of responses that can be queued before responses are lost. # #After the REQUEST_SOCKET is open rq_putrequest will broadcast a message #consisting of DESC (the service descriptor string) and MSG (the user #portion of the message. NOTE THAT msg_size is NOT the size of the request #MSG, but the size of the response messages that will be picked up using #the rq_getresponse procedure. } # #   function rq_getresponse  ( "request_socket : integer ; { socket to pick up the response on } "wait_time : integer ; { time to wait for one response } "var acceptor : sk_netaddr ; { who the response came from } "var msg : interface packed array[l..h:integer] of char @{ user portion of response message }  ) : lo_result ; { result of operation }  !{ rq_getresponse picks up one response message off of the REQUEST_SOCKET. #WAIT_TIME is the time to wait for one message. ACCEPTOR is the source #address of the response. MSG is the user portion of the message received. !} !   procedure rq_close  ( "request_socket : integer { socket to close down }  ) ;  !{ rq_close closes the REQUEST_SOCKET. } !  "  Implementation OLOCATOR 5rcH6i iii iiրh*a.P0+ć,TP-h+ r0+xar/('Tha tM,+r,*c U!r ,r j"" %!l$m%)s%)M $*&'('pa t F f/-,ha tK!l$m%M%s+,$-,pkf !rr j#k"#"" a tO r0g8P1:6P7i1!r:t43Thd t:Z$m%n&)M&)s&gP23%*43pk1x U$r1xr j#k"#"" :d t9W('ka#tI,+r,*b#!r ,r h  "!l$m%s%xM $&'('pa#t a rh .m63 EXTRAHEABYTEFLIPSOCKETS  DISKSHAR < bCCopyright 1983 SofTech Microsystems, Inc.  'L5  "const " $ds_sidlen = 20 ; { maximum length of a server identifier } $ds_vollen = 7 ; { length of volume names }  "type  ${ function result return values } $ $ds_results = (ds_okay, {operation was successful} 2ds_multiple, {multiple responses received during share} 2ds_no_respnse,{no responses received to share request} 2ds_net_error, {network error occurred during operation} 2ds_bad_id, {a bad server identifier was detected} 2ds_bad_lvol, {a bad local volume name was detected} 2ds_bad_svol, {a bad server volume name was detected} 2ds_heap_error,{a heap error occurred during operation} 1 ds_dup_vol {server volume would have caused duplicate} 1) ;  $ ${ share responses record definition. used when more than one server &offers service } & $ds_p_share_resp = ^ds_share_resp ;  $ds_share_resp = record 3net : integer ; {network number of server} 3node : array[0..2] of integer ; H{node number of server} 3socket : integer ; H{socket received offer on} 3io_socket : integer ; H{socket server will handle io on} 3lunit : integer ; {local unit to redirect} 3text : string[255] ; {server restrictions on offer} 3next : ds_p_share_resp ; H{next record in response list} 2end ; 2 $ ${ inquire responses record definition } $ $ds_p_inq_resp = ^ds_inq_resp ; $ $ds_p_srvr_vol = ^ds_srvr_vol ; $ $ds_inq_resp = record 3server_id : string[ds_sidlen] ; H{server identifier string} 3server_vols : ds_p_srvr_vol ; H{list of server volumes} 3next : ds_p_inq_resp ; H{next record in response list} 2end ; 2 $ $ds_srvr_vol = record 3volname : string[ds_vollen] ; H{volume name of server volume} 3next : ds_p_srvr_vol ; H{next record in server_vols list} 2end ; 2 ${ remote volumes list record definition } $ $ds_p_rem_vol = ^ds_rem_vol ; $ $ds_rem_vol = record 4volname : string[ds_vollen] ; H{name of redirected volume} 4deviceno : integer ;{p-system device number} 4server_net : integer ; H{server network number} 4server_node : array[0..2] of integer ; H{server node number} 4next : ds_p_rem_vol ; H{next volume in list} 3end ; 3 3 $function ds_add $ (var server_id : string; {disk server identifier } 'var server_vol: string ; {volume to add } 'var user_vol : string ; {volume to redirect} 'var choices : ds_p_share_resp ; L{list of responses} 'time_limit : integer ; {wait time for responses} ' 'procedure user_proc )(this_offer : ds_p_share_resp ; {offer made at this interval} *var stop_collecting_offers : boolean )) &): ds_result ; {operation result} 7 ${Ds_add broadcasts a share request to all disk servers identified by %SERVER_ID. The message sent requests an add to be performed on %SERVER_VOL, with the local device being redirected identified by %USER_VOL. SERVER_ID is a string from 1 to 20 characters in length. 6%SERVER_VOL and USER_VOL are p-system volume names. After the message %is sent ds_add waits for a TIME_LIMIT amount of time (in 60ths of %a second) for offers of service from the disk server(s). % %If only one disk server responds, Ds_Add automatically adds the %volume, and returns a result of ds_okay. % %If more than one disk server responds, Ds_Add returns a list of %CHOICES to the caller, with a result of ds_multiple. The caller may %choose one of the offers of service using Dm_Choose. The choice must %be made within 1 minute or the disk server retracts the offer of service. % %The TIME_LIMIT parameter has a maximum value of 30 seconds (1800). Any %value greater than 1800 will be reduced to 1800. The minimum value is %1/2 second (30). % %The USER_PROC parameter is a caller supplied procedure. Ds_Add will %call this procedure every 1/2 second while it is collecting offers. %The pointer passed is the offer made in the last 1/2 second interval %(it will be nil if no offer was made). The output parameter may be %used to tell ds_add to stop collecting offers of service. %} % $function ds_choose (choice : ds_p_share_resp) {the caller's choice} 8: ds_result ; {result of operation} 8 ${Dm_choose should only be called when the Ds_Add function returns a %result of ds_multiple with a list of possible CHOICES. The caller can %traverse the list, select a choice and call ds_choose to try to complete %the add request. A result of ds_okay indicates that the add was %successful.} % $ $function ds_inquire &(var inq_list : ds_p_inq_resp ; {pptr to returned list} 'time_limit : integer ; {wait time for responses} ' 'procedure user_proc )(this_response : ds_p_inq_resp ; {response just received} ) var stop_collecting_responses : boolean )) &): ds_result ; {operation result} 9 ${Dm_inquire broadcasts an INQUIRE message to all disk servers on the %network. It returns a list of responses (pointed to by INQ_LIST). %The list contains the server identifiers of all servers which responded %to the inquire, and the volume names of all of the volumes that they %control. Dm_inquire can be used with Ds_Add to add any volumes %(or set of volumes) that are on the network. The TIME_LIMIT parameter %can be any positive value. % %The USER_PROC procedure is called every 1/2 second while ds_inquire %is collecting responses to its inquire request. this_response is %the response collected in the last interval. If this response is %nil then no response was collected. stop_collecting_offers may be %used to terminate the collection of responses. %} % $function ds_vols (var vols_list : ds_p_rem_vol ) : ds_result ; $ ${Dm_Vols returns a list of all the client blocked devices that have %been redirected to remote disk servers. No explicit message c %communication is performed, although the ds_vols does do a %directory read of the remote volume (to insure that the system %information is current} % $function ds_delete (var volume : string) : ds_result ; $ ${Ds_delete performs a remote delete on the specified volume. The %volume must be 'special' and a blocked device. Any p-system volume name %is legal as a specifier.} % ! function ds_who (deviceno : integer ; var server_id : string) : ds_result ; $ ${Ds_Who, given a p-System device number, returns the server identifier %of the server that is controlling that shared volume.} % !Implementation 6DISKSHARAb"ć!u!u!! "phauh2!! h!! 净ɠh "p bu "p t "pc  "p!rg !U P1w<P Q   1 eg<  "p ln$ Ճe# c&n M瀇xć#yć##}ć#~ć#!ćĊ"m% &"x&p# "P! # ~ćʇ!t   Ċ"c !/k` kl i!!#!"x!"!"|!"}  k7"~ i! ! ~!!"$ʂ* ,`v p@P Pv v kl# ՛mi fe v v r$la ^!ꇀ xć!ć  Ą5ub  "ꇀꄀ! ! "Ċ!釀퇀쇀뗋U v$n% jh "V k##ɡ9a n*!l t$#$ $#~$#$ %x%! h`u    #G #ʇʋi jka vՌ0*v av* *v v R  v v )& ć#ʇʂ] vz#P vPFv hij`  `vv //ׇ5cvc v  dPvPDISK!! LOCAL LOCKS*SPDEVICE,SPREMOTI,PNMSG1B,PNMSG1A,BYTEFLIPP LOCAL LOCKS*SPDEVICE,SPREMOTI,PNMSG1B,PNMSG1A,BYTEFLIPP PDISKINQUIREE*SPDEVICE,SPREMOTI,PNMSG1B,PNMSG1A,BYTEFLIPP*SPDEVICE,SPREMOTI,PNMSG1B,PNMSG1A,BYTEFLIPPQW ?STRINGOP EXTRAHEA REQUESTO BYTEFLIP TIMEOUT SPDEVICESOCKETS PARSE FILEOPS LOCK OSUTIL  PRNTSHAR < cvCCopyright 1983 SofTech Microsystems, Inc. 85  "const " $ps_sidlen = 20 ; { maximum length of a server identifier } $ps_vollen = 7 ; { length of volume names }  "type  ${ function result return values } $ $ps_results = (ps_okay, {operation was successful} 2ps_multiple, {multiple responses received during share} 2ps_no_respnse,{no responses received to share request} 2ps_net_error, {network error occurred during operation} 2ps_bad_id, {a bad server identifier was detected} 2ps_bad_lvol, {a bad local volume name was detected} 2ps_bad_spec, {a bad printer specifier was detected} 2ps_heap_error {a heap error occurred during operation} 1) ;  $ ${ share responses record definition. used when more than one server &offers service } & $ps_p_share_resp = ^ps_share_resp ;  $ps_share_resp = record 3net : integer ; {network number of server} 3node : array[0..2] of integer ; H{node number of server} 3socket : integer ; H{socket received offer on} 3io_socket : integer ; H{socket server will handle io on} 3lunit : 7integer ; {local unit to redirect} 3text : string[255] ; {server restrictions on offer} 3next : ps_p_share_resp ; H{next record in response list} 2end ; 2 $ ${ inquire responses record definition } $ $ps_p_inq_resp = ^ps_inq_resp ; $ $ $ps_inq_resp = record 3server_id : string[ps_sidlen] ; H{server identifier string} 3specifier : char ; H{the printer specifier A..Z} 3descriptor : string ; H{description of this printer} 3queue_length : integer ; H{current queue length in blocks} 3exclusive : boolean ; H{printer being used in exclusive mode} 3next : ps_p_inq_resp ; H{next record in response list} 2end ; 2 $ ${ remote volumes list record definition } $ $ps_p_rem_vol = ^ps_rem_vol ; $ $ps_rem_vol = record 4volname : string[ps_vollen] ; H{name of redirected volume} 4deviceno : integer ;{p-system device number} 4server_net : integer ; H{server network number} 4server_node : array[0..2] of integer ; H{server node number} 4next : ps_p_rem_vol ; H{next volume in list} 3end ; 3 3 $function ps_add &(var server_id : string ; {print server identifier} 'var printers : string ; {printers to share} 'var user_vol : string ; {volume to redirect} 'var header : string ; {header for print files} 'manual, {manual print file mode} 'exclusive, {exclusive printer access} 'buffering : boolean ; {printer output buffering } 'var choices : ps_p_share_resp ; L{list of responses} 'time_limit : integer ; {wait time for responses} ' 'procedure user_proc )(this_offer : ps_p_share_resp ; {offer made at this interval} *var stop_collecting_offers : boolean )) &): ps_result ; {operation result} 7 ${Ps_add broadcasts a share request to all print servers identified by %SERVER_ID. The message sent requests an add to be performed on %PRINTERS, with the local device being redirected identified by %USER_VOL. SERVER_ID is a string from 1 to 20 characters in length. %USER_VOL is a p-system volume name. After the message %is sent ps_add waits for a TIME_LIMIT amount of time (in 60ths of %a second) for offers of service from the print server(s). % %If only one print server responds, Pm_Add automatically adds the %volume, and returns a result of ps_okay. % %If more than one print server responds, Pm_Add returns a list of %CHOICES to the caller, with a result of ps_multiple. The caller may %choose one of the offers of service using Pm_Choose. The choice must %be made within 1 minute or the print server retracts the offer of service. % %The TIME_LIMIT parameter has a maximum value of 30 seconds (1800). Any %value greater than 1800 will be reduced to 1800. The minimum value is %1/2 second (30). % %The USER_PROC parameter is a caller supplied procedure. Pm_Add will %call this procedure every 1/2 second while it is collecting offers. %The pointer passed is the offer made in the last 1/2 second interval %(it will be nil if no offer was made). The output parameter may be %used to tell ps_add to stop collecting offers of service. %} % $function ps_choose (choice : ps_p_share_resp; {the caller's choice} 8buffering : boolean) { print output buffering} 8: ps_result ; {result of operation} 8 ${Ps_choose should only be called when the Pm_Add function returns a %result of ps_multiple with a list of possible CHOICES. The caller can %traverse the list, select a choice and call ps_choose to try to complete %the share. A result of ps_okay indicates that the share as successful.} % $ $function ps_inquire &(var inq_list : ps_p_inq_resp ; {pptr to returned list} 'time_limit : integer ; {wait time for responses} ' 'procedure user_proc )(this_response : ps_p_inq_resp ; {response just received} ) var stop_collecting_responses : 7boolean )) &): ps_result ; {operation result} 9 ${Ps_inquire broadcasts an INQUIRE message to all print servers on the %network. It returns a list of responses (pointed to by INQ_LIST). %The list consists of one entry per available printer on the network. %Each entry contains the server identifier of the server offering the %printer. Ps_inquire can be used with Ps_Add to add any volumes %(or set of volumes) that are on the network. The TIME_LIMIT parameter %can be any positive value. % %The USER_PROC procedure is called every 1/2 second while ps_inquire %is collecting responses to its inquire request. this_response is %the response collected in the last interval. If this response is %nil then no response was collected. stop_collecting_offers may be %used to terminate the collection of responses. %} % $function ps_vols (var vols_list : ps_p_rem_vol ) : ps_result ; $ ${Ps_Vols returns a list of all the client serial devices that have %been redirected to remote print servers.} % $function ps_delete (var volume : string) : ps_result ; $ ${Ps_delete performs a remote delete on the specified volume. The %volume must be 'special' and a serial device. Any p-system volume name %is legal as a specifier.} % ! function ps_who (deviceno : integer ; var server_id : string) : ps_result ; $ ${Ps_Who, given a p-System device number, returns the server identifier %of the server that is controlling that shared volume.} % $function ps_break (var volume : string) : ps_result ; $ %{Ps_break sends an r_break message to the server that is connected to &volume. This should cause the current print file to be closed } & % !Implementation PRNTSHARcv:?LDćKuKuKK LphIauh)! ɇɠ!ڠh LphJuJuJ LpJ#J짃 Lpb  LpG  F  !Irf  KV P0w;IP Q J  H      0 df;  LpCCCC Ckm# Ճd" c%m M瀇Dxć"yć""}ć"~ć"!ćDĊLBA@m$ %Lf%^" L>! " ~ćʇEʇD DĊLb Kl` l` i!!!#x!#!#|!#}  l+#~ i! ! ~!!"ʖX^]`v^p.P P.v v \jkW" WՃli edE v v _#kap ^K!XX7]xć]!ćX X ćX PX5,ćX6-X6 X5 !W[ZYn v#^]n%]jh "_  k##ɡ=a n.!l t$#$ $#~$#$ %x%! h`u ]  ɇ ʇʋi jka vՄ0*v av* *v v J  v v ) ćʇʊvP vPFv hij`  `vv //Ӈ5cvc v  dPv u((]( ɠl ,v] h(ij`  )`v+ +)v ) v)  v ,)v )vMAESPPRINTT!!!!! PPRINTINQUIREqK STRINGOP EXTRAH8EA REQUESTO BYTEFLIP TIMEOUT SPDEVICESOCKETS PARSE FILEOPS LOCK OSUTIL  GBYTEFLIP  CCopyright 1983 SofTech Microsystems, Inc.  'L   procedure bf_flip_record( 0var x:interface packed array [min..max:integer] of char);  procedure bf_var_flip_record( 0var x:interface packed array [min..max:integer] of char; 0ln:integer);    implementaion FBYTEFLIPA@V#h $" i" " " ! hsV$%i%##h! $!j$!$!$!"!ir" <***  TSOCKETS SEGSKINI  7 SOCKETS sHCCopyright 1983 SofTech Microsystems, Inc. 8;   type  ( (sk_netaddr = record 4netnum:integer; 4nodenum:array [0..2] of integer; 4socketnum:integer; 2end;  (st_record = array [0..29] of integer;    function sk_open(var socket:integer; bfsize:integer): boolean;  procedure sk_set_timeout(socket:integer; timeout:integer);  procedure sk_accept_broadcast(socket:integer; desc:string);   procedure sk_getmessage(socket:integer; var srcaddr:sk_netaddr; var ln:integer; +var msg:interface packed array[min..max:integer] of char);  procedure sk_putmessage(socket:integer; dstaddr:sk_netaddr; +var msg:interface packed array[min..max:integer] of char);  procedure sk_putbroadcast(socket:integer; +var msg:interface packed array[min..max:integer] of char);   procedure sk_close(socket:integer);   procedure sk_skt_status(socket:integer; var stat:st_record);  function sk_nresult(socket:integer;dirn:boolean):integer;  procedure sk_node_status(var stat:st_record);  procedure sk_nparameters(var stat:st_record);  procedure sk_vgetmessage(socket:integer; var srcaddr:sk_netaddr;  var ln:integer; + datasiz:integer;data_offset:integer; +var msg:interface packed array[min..max:integer] of char);  procedure sk_vputmessage(socket:integer; dstaddr:sk_netaddr; +d8atasiz:integer;data_offset:integer; +var msg:interface packed array[min..max:integer] of char);  procedure sk_vputbroadcast(socket:integer; +datasiz:integer;data_offset:integer; +var msg:interface packed array[min..max:integer] of char);   procedure sk_init;  procedure sk_terminate;   function sk_msg_length (socket:integer) : integer ;  procedure sk_set_semaphore (socket:integer;var sem : semaphore) ;  procedure sk_clr_semaphore (socket:integer) ;     implementation SSEGSKINIEsHEhxxh3pa. a pa* p pk p0omxmxo~ćo~m@ p4 ppxpx po~ćo~pl o~lĊ3%o~ppćpćp p o~ {ćo~wa p$t Ć- 0"" "~##ć#ć#ć#ć#ć#Đ"ć"ć"" #h #"{  h"ć"ć"ć"ć" ć" ć" ć" #h #"  h0sar!  !!#h #=1 $b xrb xr$b xć$$ć$ h`q`q$*SYSTEM.MISCINFOO %SOCKETS sHGb$0{%xi!bph # # kb!b#pj"nq,c-Phcji!" c!h!i /.i 0y 0{ xi0i!x!yjp= = :9 89< 89 1xmf1055{>x6ߚ77ć7 ć7* ć7`7 pe7 p89<7  **p7 us6 rć6 5 5 Ċ5 5 ć6 6 ěޖ>jc)0i!{*xj"cph $%!~# $ lc"h% !~#$$ ;" ph h0{"xxߊ6xt) ćć  ć  ć  p"%b  ć )ć" u! * ć xi x ć ć"Ąć-p" x"!ċ xp" x" xć x xp""! xĄ x xp xć x xć   ć  s{* s"U&%$" s`)*`'% $" .*0 ,{.x`- .-b*   )0iX h !y!{ x  h! 2jh " 1 xr h2  - ts 0K;& ?2Hhc7r<- K'sHEAPOPS EXTRAHEA EXTRAIO FILEOPS POOLMANASCREENOPBYTEFLIPTIMEOUT PNMSG1B PNMSG1A  9TIMEOUT gfCCopyright 1983 SofTech Microsystems, Inc.  'L   var (tm_current_time:integer; { in 60ths of a second }    function tm_twait(var s:semaphore; t:integer):integer;   { t is a timeout period in 60ths of a second . twait will wait until "either s is signalled by someone, or the time t expires. The function "returns the amount of time that remains until the scheduled time out "when the function terminates. (i.e. returns 0 on a time out) " "The function always returns a value at least 1 less than the value of t "that was input.   }    procedure tm_sleep(t:integer);   { calling process goes to sleep for 't' 60ths of a second }   procedure tm_start_timeout;  procedure tm_stop_timeout;    implementation TIMEOUT gf `+*0lceĆ1ji""y$"i"{j#"!#!## ) ))$Ć ߆1ji"#"i"{j!#{!#{Ć#z #y0l*$$l$ ``"!51201h 0 y z  x {hފs)r`Ȁ`s9rޖ@^S CONCURRETIMER   ? /SMSERVERSEGSMSRVSEGSMQUI  ASMSERVERSMSERVERg%CCopyright 1983 SofTech Microsystems, Inc. 8;   (* #Uses ({$U sockets:sockets.code } sockets, ({$U smtypes.code } smtypes; (  *)   {$L-}  "Uses ({$U sockets:sockets.code } sockets, ({$U smtypes.code } smtypes; ( 9 {$L^}   !  Var %server_on_this_node : boolean; { true if semaphore server running } ! sm_tblsiz : integer; { size of semaphore table } !  Function sm_srvr_init ( tablesiz : integer ) : boolean ; " " " "{ start inquire and response processes } "{ start clear process - to handle re-boots } "{ look for other servers - if others exist then don't run } "{ tablesiz determines size for dynamic allocation of table } "{ a boolean value of true indicates that the server has been } "{ successfully initiallized } "{ a boolean value of false indicates that for some reason } "{ the semaphore server could not be established on this node} "   Procedure sm_table_stats ( var p_tabl : p_sm_table_rec );  "{ list contents of semaphore table } "{ for use by interactive programs } "{ p_tabl returns nil if there are no semaphores in table } "  Function sm_clear_table : boolean; " "{ clear semaphore table - eg if dead locks throughout } "{ a boolean return of true indicates the semaphores were } "{ removed from the semaphore table } "{ a boolean return of false might indicate some type of } "{ corruption in the table } "  Procedure sm_quit;  "{ to quit semaphore server processes but allow node to continue } "{ will close down inquire,clear and server respond processes and } "{ deallocate semaphore table } "  Procedure sm_max_owners (new_max : integer) ;  "{ At unit initialization time the maximum number of lock owners } "{ is set to 60 (decimal). Calling sm_max_owners prior to calling} "{ sm_srvr_init will change this value to new_max. Since owner } "{ records are pre-allocated, changing this value will use a } "{ different amount of memory and will support a different number } "{ of users. } " " "  Implementation >SEGSMSRVg%!"^^, 2h,i !br bx!! "! b x!"!<`r p p= p P66t S r Xr 7<ar r *= p8x p p= r<sl# l p##jh "  h2jh "a  !! h l p0 p p## paq`^a  aw`^a  a, `,a l'could not open socket for server check pseminquire*Semaphore server already exists on node B .SEGSMQUI+g%S߆߆v1 i! !h!}i`  :SMSERVERg%އ iX! `u p pp buJ bt t"bvbv cvր tt buxԢ uޔ  iu(ĚՆa mn(!!h%1b% N!% &n!o' lc#$' #' j$}#jc"#$}l#$!ha  !%m a &(ěޖ vhh  < psemshare-Unable to open accept socket in rqst process  hmb*** HEAPOPS CONCURRE PASCALIO EXTRAHEA SMCLEAR SMSINQUISMMANAGELOCATOR BYTEFLIPSMTYPES SOCKETS   1 xSCREENOPSEGSCINISEGSCPROSEGSCCHE   SCREENOPSCREENOPSCREENOPRiXDCopr 1978,79 Regents, UC; Copr 1980,81,82,83,84 SofTech Microsystems-88v   const  sc_fill_len = 11; $sc_eol = 13;   type $sc_chset = set of char; $sc_misc_rec = packed record 8height, width : 0..255; 8can_break, slow, xy_crt, lc_crt, 8can_upscroll, can_downscroll : boolean; 6end; $sc_date_rec = packed record 8month : 0..12; 8day : 0..31; 8year : 0..99; 6end; $sc_info_type = packed record 8sc_version : string; 8sc_date : sc_date_rec; 8spec_char : sc_chset; {Characters not to echo} 8misc_info : sc_misc_rec; 6end; $sc_long_string = string[255]; $sc_scrn_command = (sc_whome, sc_eras_s, sc_erase_eol, sc_clear_lne, 7sc_clear_scn, sc_up_cursor, sc_down_cursor, 7sc_left_cursor, sc_right_cursor); $sc_key_command = (sc_backspace_key, sc_dc1_key, sc_eof_key, sc_etx_key, 7sc_escape_key, sc_del_key, sc_up_key, sc_down_key, 7sc_left_key, sc_right_key, sc_not_legal, sc_insert_key, 7sc_delete_key); $sc_keyset = set of sc_key_command; $sc_choice = (sc_get, sc_give); $sc_window = packed array [0..0] of char; $sc_tx_port = record 8row, col, { screen relative} 8height, width, { size of txport (zero based)} 8cur_x, cur_y : integer; E{cursor positions relative to the txport } 6end; 6 &{entries 4..syscom^.subsidstart-1 are valid, that is, 'unit numbers between 4 and the starting unit number for subsidiary 'volumes} $sc_err_msg_array = array [4..4] of ^string; {accessed $R-} 6 "var $sc_port : sc_tx_port; $sc_printable_chars : sc_chset; $sc_errorline : integer; $sc_errormessage : ^sc_err_msg_array; " "procedure sc_use_info(do_what:sc_choice; var t_info:sc_info_type); "procedure sc_use_port(do_what:sc_choice; var t_port:sc_tx_port); "procedure sc_erase_to_eol(x,line:integer); "procedure sc_left; "procedure sc_right; "procedure sc_up; "procedure sc_down; "procedure sc_getc_ch(var ch:char; return_on_match:sc_chset); "procedure sc_clr_screen; "procedure sc_clr_line (y:integer); "procedure sc_home; "procedure sc_eras_eos (x,line:integer); "procedure sc_goto_xy(x, line:integer); "procedure sc_clr_cur_line; "function sc_find_x:integer; "function sc_find_y:integer; "function sc_scrn_has(what:sc_scrn_command):boolean; "function sc_has_key(what:sc_key_command):boolean; "function sc_map_c:rt_command(var k_ch:char):sc_key_command; "function sc_prompt(line :sc_long_string; x_cursor,y_cursor,x_pos, 7where:integer; return_on_match:sc_chset; 7no_char_back:boolean; break_char:char):char; "function sc_check_char(var buf:sc_window; var buf_index,bytes_left:integer) ::boolean; "function sc_space_wait(flush:boolean):boolean; "procedure sc_init; "procedure sc_read_long_string( var s:sc_long_string; max_length:integer; Adefault: sc_long_string ); "function sc_get_long_string ( var s:sc_long_string; max_length:integer; Avar default: sc_long_string; Aexit_keys: sc_keyset ):sc_key_command; A  implementation SEGSCINIRiXEf g g r" g Ȋg Ȇg "Ȇf !ʖ"$!  z { { "" ʆ{ "Ȇz !ʖ"/!  d*pypjh "   hDzP%ʆ&ʆʆʆʆʆʆʆ ۚۚ-jdȆd""""""""" %jk"ɥy" "" " " """" # # "f-_jbgtbtbgtb 9_jbdtbgtbtbdtbg tb  ȆY pj" Y"ȊY Ț%ɥɥq  m]G;% ySEGSCPRORiX*! i!i!jK`p`Ț`v  tm%%[%pl $$t tj%ok2%"kqv'i#nc$'n& 'p &(n'(o&#h ##'#pn& '$''po!'nn&ԝ%% w'&'&$ v $"'&oq q )? ):]?  (wSEGSCCHEqRiX&%xhoj`qZq冀ɠv v1q 1%x0q!%xki!#&! _v !i%xjoO`qDo%x:jq _w w&%x q wqj%%x"$$x"Ė!i+! !% .  +!p+p1ր&Wvv v+!Ȗ aah Type > to continuee vv9lV9,a(! mf]QD7*x GOTOXY EXTRAIO PASCALIOSTRINGOPFILEOPS  0KERNEL /VBCCopr. 1978,79 Regents, UC; Copr. 1984 SofTech Microsystems Inc. 88P   CONST "maxdir = 77; { max number of entries in a directory } "vidleng = 7; { number of chars in a volume id } "tidleng = 15; { number of chars in title id } "wrkleng = 71; { workfile name max length } "maxseg = 15; { max code segment number } "fblksize = 512; { standard disk block length } "dirblk = 2; { disk addr of directory (sfs) } "agelimit = 300; { max age for gdirp...in ticks } "eol = 13; { end of line...ascii cr } "dle = 16; { blank compression code } "name_leng = 23; { number of characters in a full file name} "swapping = 0; { swapping segment status} "p_locked = -1; { position locked segment status} "stack_slop = 40; { number of words of temp for procedure stack} "mem_link_size = 4; { number of bytes in heap record}  "sys_error = 0; { unknown system error} "proc_error = 3; { unknown procedure error} "stk_error = 4; { stack overflow error} "sys_io_error = 9; { system I/O error} "halt_error = 14; { programmed halt } "heap_error = 15; { heap operation error} "seg_fault = 128; { segment fault} "stk_fault = 129; { stack fault} "heap_fault = 130; { heap operation fault} "pool_fault = 131; { used to consolidate pool after purge }  "{ FIB FType Values - indicates internal organization of file } "FTypeDir = 0; "FTypeCode = 1; "FTypeText = 2; "FTypeData = 3;    TYPE {pointer forward references} "int_p = ^integer; "tib_p = ^tib; "sib_p = ^sib; "e_rec_p; = ^e_rec; "e_vec_p = ^e_vec; "sem_p = ^sem; "mscwp = ^mscw; "p_mem_chunk= ^mem_chunk; "vip = ^vinfo;  ptr_c_file_struct = ^c_file_struct;  "iorsltwd = ( { 0} i_no_error, i_bad_block, i_bad_unit, i_bad_mode, 1{ 4} i_time_out, i_lost_unit, i_lost_file, i_bad_title, 1{ 8} i_no_room, i_no_unit, i_no_file, i_dup_file, 1{12} i_not_closed, i_not_open, i_bad_format, i_buf_ovfl, 1{16} i_write_prot, i_ill_block, i_ill_buf, i_ill_size, 1{20} i_past_eof, i_data_size_error, i_corrupt_tree, i_dup_key, 1{24} i_no_cur_rec, i_key_size_error, i_illegal_op, i_not_avail, 1{28} i_bad_file_type, i_no_dir, i_net_transmit_error, 1{31} i_net_timeout );  "m_types = ( { 0} m_pseudo, m_6809, m_pdp_11, m_8080, 1{ 4} m_z_80, m_ga_440, m_6502, m_6800, 1{ 8} m_9900, m_8086, m_z_8000, m_68000, 1{12} m_hp_87, m_16000, m_80186, m_80187 ); " "{ archival info...the date and time } "daterec = packed record .month: 0..12; { 0 implies date not meaningful } .day: 0..31; { day of month } .year: 0..100 { 100 is temp disk flag (sfs) } ,end {daterec};  "timerec = packed record .min: 0..59; .hour: 0..24; { 24 means that the time is not set } ,end; & "{ volumes and directories } "unitnum = 0..127; { valid system device numbers } "vid = string[vidleng]; { volume id } "tid = string[tidleng]; { title id } "dirrange = 0..maxdir; "FileSpec = string[255]; {complete file specification} "filekind = ( untypedfile, xdskfile, codefile, textfile, infofile, 0datafile, graffile, fotofile, securedir, subsvol );  "direntry = packed record 1dfirstblk: integer; { first physical disk addr } 1dlastblk: integer; { points at block following } 1case dfkind: filekind of 3securedir, 3untypedfile: { only in dir[0]...volume info } 5(filler_1 : 0..2048; {12 bits} 6dvid: vid; { name of disk volume } 6deovblk: integer; { lastblk of volume } 6dnumfiles: dirrange; { num files in dir } 6dloadtime: integer; { time of last access } 6dlastboot: daterec; {most recent date setting} 6dpartnum:packed array[0..7] of 0..15); 3xdskfile,codefile,textfile,infofile, 3datafile,graffile,fotofile,subsvol: 5(dhour: 0..24; {0 means invalid time. Msubtract 1 for correct hour} 6dminute: 0..59; 6status: boolean; 6dtid: tid; { title of file } 6dlastbyte: 1..fblksize;{ num bytes in last block } 6daccess: daterec) { last modification date } /end {direntry};  "dirp = ^directory; "directory = array[dirrange] of direntry;  "{ file information } "closetype = ( c_normal, c_lock, c_purge, c_crunch ); "windowp = ^window; "window = packed array[0..0] of char; "byte = 0..255; "fibp = ^fib; "DiskAddress= packed array[0..2] of char; "TreeId = packed array[0..3] of byte; {tree identification - Oaccession number} " "FileOrganization = ( FOrg_Reserved, FOrg_KS, FOrg_DS, FOrg_IXO );  "fib = packed record *FWindow: windowp; {user window...f^, used by get and put} *FEoln, *FEof: boolean; *FState: (FJandW, FNeedChar, FGotChar); *FBufChngd, *FModified, {new date must be set by close} *FIsBlkd, {file is on blocked device} *FIsOpen: boolean; *FReptCnt: byte; {blank expansion repetition count} *FRecSize: integer; {logical record length in bytes} *FLock: semaphore; *FVid: vid; {volume on which file is located} *FDirRoot: DiskAddress; {root address of directory containing Bthis file} *FUnit: byte; {unit number where file is located} *FKeyCompType: 0..2; {key comparison type: 0-char,1-int,2-user} *FReadAfterWrite: boolean; {follow each write with a read to Einsure write was successful. } *FTempFile: boolean; {true if file is a temp disk file} *FExclusive: boolean; {true if we have exclusive access} *FPackingFacto<r: ( pf_50, pf_63, pf_75, pf_88, pf_100 ); {% packed} *FKDataLen: byte; {key data length} *FKeyLen: byte; {key maximum length} *FType: byte; {file type}  *{ index attribute flags } *FReadOnly, {no write or update permitted} *FKeyVarLen, {key is variable length} *FRecVarLen, {records are variable length} *FBlocked, {records are blocked (KS only)} *FSpan, {records can span extents (DS only)} *FDupKeysAllowed, {duplicate keys are allowed} *FKeyEmbedded: boolean; {keys are embedded in the records}  *FSoftBuf: boolean; {512 byte buffer available following fib} *FRootAdr: DiskAddress; {root node disk address} *FTreeId: TreeID; {accession number for the file} *FCurPos: record {current position within leaf node} 6LeafAdr: DiskAddress; {leaf node disk address} 6KeyStart: integer; {offset in leaf node to Mindex element} 6RecStart: integer; {offset in leaf node to Mcurrent record} 4end; *case FOrg: FileOrganization of ,FOrg_DS: .( FLastByte: 0..512; {last byte of last block} 0FMaxBlk, {maximum relative block accessed. For next_sib, {15 Pointer to next sib} >prev_sib: sib_p; {14 Pointer to previous sib} @case boolean of {Scratch area} Btrue: (next_sort: sib_p); {16} Bfalse: (new_loc: mem_ptr); {16} >end {res_sibs}; 1mtype: integer; {17 Machine type of segment} /end {sib};  "e_vec = record {Environment vector} 1vect_length: integer; 1map: array[1..1] of e_rec_p; {Accessed $R-} /end {e_vec};  "e_rec = record {Environment record} 1env_data: mem_ptr; {Pointer to base data segment} 1env_vect: e_vec_p; {Pointer to environment vector} 1env_sib: sib_p; {Pointer to associated segment} 1case boolean of {Outer block information} 3true: (link_count: integer; :next_rec: e_rec_p); /end; {e_rec}  "mscw = record {Mark stack control} 1ms_stat: mscw_p; {Lexical parent pointer} 1ms_dynl: mscw_p; {Ptr to caller's mscw} 1ms_ipc: integer; {byte inx in retrn code seg} 1ms_env: e_rec_p; {Environment of caller code} 1ms_proc: integer; {Proc # of caller} /end {mscw};  "tib = packed record {task information block} 1regs: packed record {word offset & description} 9wait_q: tib_p; { 0 Queue link for semaphores} 9prior: byte; { 1 Task's cpu priority} 9flags: byte; { 1 State flags...not defined yet} 9sp_low: mem_ptr; { 2 Lower stack pointer limit} 9sp_upr: mem_ptr; { 3 Upper limit on stack} 9sp: mem_ptr; { 4 Actual top of stack pointer} 9mp: mscw_p; { 5 Active procedure MSCW ptr} 9task_link: tib_p; { 6 links all tasks in system} 9ipc: integer; { 7 byte ptr in current code seg} 9env: e_rec_p; { 8 Ptr to current environment} 9procnum: byte; { 9 procedure currently executing} 9tibioresult: byte; { 9 current ioresult} 9hang_p: sem_p; {10 Which task is waiting on} 9m_depend: integer; {11 Reserved for interpreter} L{ initted to 0 when process started} 7end {regs}; 1main_task: boolean; {12 indicates operating system task} 1system_task: boolean; {12 indicates system tasks} 1reserved: 0..16383; {12 future use} 1start_mscw: mscw_p; {13 mp at bottom of task stack} /end {tib};  "sem = record {semaphore format} 1sem_count: integer; {Number outstanding signals} 1sem_wait_q: tib_p {List of tasks waiting on sem} /end {sem};  "fault_message = record 4fault_tib: tib_p; 4fault_e_rec: e_rec_p; 4fault_words: integer; 4fault_type: seg_fault..pool_fault; 2end {fault_message};  "fulladdress = array[0..1] of integer; {32 bits} " "utablentry = packed record 1uvid: vid; {volume id for unit} 1uisblkd: boolean; {unit is a blocked device} 1u_is_special: boolean; {=indicates remote unit} 1special_buf: boolean; {indicates buffered serial device} 1stdamap : boolean; {allocation map starts in blk 8} 1{ the following booleans are general purpose flags which 3can be used by the special devices unit to keep track 3of device dependent attributes } 3 1uf7, uf6, uf5, uf4 : boolean ; 1 1u_is_loc_locked: boolean; {unit is locally locked} 1reserved : 0..127; {7 more bits for future expansion} 1ueovblk: integer; {0 for an unmounted svol} 1case boolean of 3true: {networked unit} 5( u_server_addr: 9record ;netnum: integer; ;nodenum: array[0..2] of integer; ;socketnum: integer; 9end ); 3false: {subsidiary volume} 5( uphysvol: integer; {physical unit} 7ublkoff: integer; {start block} 7upvid: vid ); {volume id of physical unit} /end {utablentry};  utable = array[unitnum] of utablentry; {0 not used}  "meminfo_rec= record 1NWords:integer; {size of meminfo_rec, currently 6} 1FreeSpaceInfo, {size units are 512 bytes} 1SocketPoolInfo:record {size units are words} BBase:FullAddress; {address of area} BSize:integer; {size units vary see above} @end; /end {meminfo_rec};  p_meminfo_rec = ^meminfo_rec;  "{ SYSTEM COMMUNICATION AREA - SYSCOM } "{ See interpreters...note that we assume backward field allocation is $done by the compiler. Word offsets indicated to left of fields, only $first field in a word is marked, only first word of field is listed. } "syscomrec = record {modified for IV.1} ,{ 0} iorslt: iorsltwd; {result of last I/O call} ,{ 1} APoolSize: integer; {alias pool size} ,{ 2} sysunit: unitnum; {physical unit of bootload} ,{ 3} max_io_bufs: byte; {number of I/O buffers allocated} ,{ 4} gdirp: dirp; {global dirp, SFS only} 1fault_sem: record ,{ 7} real_sem, ,{ 5} message_sem: semaphore; ,{ 9} message: fault_message; end; 2events : packed record {supported events} ,{69} async_char : boolean; @tick : boolean; >end; 0end;  "pooldes = record 1poolbase: fulladdress; 1poolsize: integer; 1minoffset: memptr; 1maxoffset: memptr; 1resolution: integer; {in bytes} 1poolhead: sibp; 1permsib: sibp; 1extended: boolean; 1nextpool: poolptr; {circular list of code pool descriptors} 1mustcompact : boolean; /end {pooldes}; "bytearray = packed array[0..0] of byte;  "AliasRec = record 1Name: vid; 1Index: integer; {index in AliasPool^ of file specifications} /end {aliasrec}; & "AliasTable = array[1..1] of AliasRec; {accessed $r-}  "FileSysLevel = (SFS,AFS); {possible file system configurations}   VAR "syscom : ^syscomrec; {magic param...setup in tertboot} "gfiles : array[0..5] of fibp; {global files, 0=input, 1=output} "userinfo : inforec; {work stuff for compiler etc} "emptyheap : ^integer; {heap mark for memory management} "maintask : tib_p; {taskinfo block of op sys prog} "Has_PM : boolean; {performance monitor in use} "inputfib, "outputfib, "systerm : fibp; {console files...gfiles are copies} "syvid,dkvid: vid; {root and prefix volume names} "thedate : daterec; {today...set in filer or sign on} "FileSystemLevel : FileSysLevel; {type of file system in use} "heap_info : record {stuff for heap management} 1lock: semaphore; 1top_mark, 1heap_top: mem_ptr; /end {heap_info}; "task_info : record {stuff for task management} 1lock, 1task_done: semaphore; 1n_tasks: integer; /end {task_info}; "ipot : array[0..4] of integer; {integer powers of ten} "NoAddress : DiskAddress;  {"constant" null disk address} "SexLstFirst: boolean; {least significant byte first machine} "AliasP : ^AliasTable; {allocated by initialize, AFS only} "AliasPool : windowp; {text of the aliases, alloc. by initialize} "digits : set of '0'..'9'; "maxunit : unitnum; "unit_list : e_rec_p; "user_env_vec, "sys_env_vec: e_vec_p; "dir_lock : semaphore; {for volume and directory exclusion} "inexerr : boolean; {set when processing execution errors Eso that file system locks are not enforced} "debugging : boolean; "permlist : memptr; {list of "permanent" new's} "suspectset : set of unitnum; "atsysprompt: boolean; {true if at system prompt} "syslist : e_rec_p; {last unit placed on unit_list that is a Esystem unit; all subsequent units added Eto the unit_list are user units} "nofit : boolean; {set to true if dumpsegs can't get any Emore room} "codepool : poolptr; "resolving_break : boolean; {true if in debugger and a code segment Emust be read in without breakpoints} "realsref, {true if reals are being used by user} "pooloverflow : boolean; "use_prog_slot : integer; {sys_evec index of userprog} "Zero_Id : TreeId; {"constant" zero tree id} "AfsDirBlk : DiskAddress; { disk addr of directory (afs) } "version : string[11]; { O.S. version, currently: '[IV.2 R1.5]' } "sys_ped_block: integer; "LIAISON : boolean; {true if running network software} "os_chksum : integer; "word_addressed : boolean; {true if processor uses word addressing } "word_res : integer; {codepool resolution in words} "  PROCEDURE exec_error( bad_e_rec_p:e_rec_p; n_words, err:integer ); {Proc 2}  PROCEDURE loadseg( segerec:erecp ); {Proc 3}  PR>OCEDURE rlocseg( segerec:erecp ); {Proc 4}  FUNCTION ptr_add( var p:mem_ptr; n_words:integer ):int_p; {Proc 5}  FUNCTION ptr_sub( var p_0, p_1:mem_ptr ):integer; {Proc 6}  FUNCTION ptr_less( var p_1, p_2:mem_ptr ):boolean; {Proc 7}  FUNCTION ptr_gtr( var p_1, p_2:mem_ptr ):boolean; {Proc 8}  FUNCTION ptr_geq( var p_1, p_2:mem_ptr ):boolean; {Proc 9}  PROCEDURE print( s:string ); {Proc 10}  PROCEDURE printint( i:integer ); {Proc 11}  PROCEDURE writestr( s:string ); {Proc 12}  PROCEDURE checkunit( lvid:vid; lunit:unitnum ); {Proc 13}  PROCEDURE moveseg( segsib:sibp; srcpool:poolptr; srcoffset:memptr ); {Proc 14}   IMPLEMENTATION KERNEL VB  >$ ASSOCIATCREATEENPEDBUILD  <ASSOCIATASSOCIAT-CCopyright 1979,80 U.C. Regents; Copyright 1984 SofTech MicrosystemsFBYTEFLIPA@V#h $" i" " " ! hsV$%i%##h! $!j$!$!$!"!ir" <***  6PNMSG1B &aEb$0{%xi!bph # # kb!b#pnc&0i!{'xj"cph $%!~# $ lc"h% !~#$$i 0y 0{ xi0m'n& `p`s&x &a& dpds$ $  %| 0i$j%! ! ! ! p!{%xk" h #{)#{" " h# # ! ! p%#$ #%# đ##{ đ###!!Ė! h !0k%l`$ $$xi# !xj"" ")%"*j  ut r ߖޖ#tޖ4 pޖCߘ pJYI%  $CONCURREPASCALIOBYTEFLIPPNMSG1A  SOCKETS sHGb$0{%xi!bph # # kb!b#pj"nq,c-Phcji!" c!h!i /.i 0y 0{ xi0i!x!yjp= = :9 89< 89 1xmf1055{>x6ߚ77ć7 ć7* ć7`7 pe7 p89<7  **p7 us6 rć6 5 5 Ċ5 5 ć6 6 ěޖ>jc)0i!{*xj"cph $%!~# $ lc"h% !~#$$ ;" ph h0{"xxߊ6xt) ćć  ć  ć  p"%b  ć )ć" u! * ć xi x ć ć"Ąć-p" x"!ċ xp" x" xć x xp""! xĄ x xp xć x xć   ć  s{* s"U&%$" s`)*`'% $" .*0 ,{.x`- .-b*   )0iX h !y!{ x  h! 2jh " 1 xr h2  - ts 0K;& ?2Hhc7r<- K'sHEAPOPS EXTRAHEA EXTRAIO FILEOPS POOLMANASCREENOPBYTEFLIPTIMEOUT PNMSG1B PNMSG1A  SSEGSKINIEsHEhxxh3pa. a pa* p pk p0omxmxo~ćo~m@ p4 ppxpx po~ćo~pl o~lĊ3%o~ppćpćp p o~ {ćo~wa p$t Ć- 0"" "~##ć#ć#ć#ć#ć#Đ"ć"ć"" #h #"{  h"ć"ć"ć"ć" ć" ć" ć" #h #"  h0sar!  !!#h #=1 $b xrb xr$b xć$$ć$ h`q`q$*SYSTEM.MISCINFOO %PNMSGCUPgENaeoar &ror h a  Ės`d`r `r  Ė  r b r  n&&&}āh&}iasb&ߚo`' p'' rޖ`dn`r `r  |nx<) BYTEFLIPPNMSG1A  VPOOLMANA;ae0#j"zhi"`##'Ęle(%pb(e"&`bdeec%"&%p'e&"$ (c ac`(d,e&pm"&jb(e$ (e ae`(d  +,{*hi`, , ),{o ,, .g,b,g#)#gcb,g cf *ha '(b,gg"p& fg" h cfb,g(d, f p( ae $h`,f `!#$$%&" %$`!#$$%&" %$kb$"`$b# kba#mmb#"X`#br p"rpr p rp r p!rprpbat Address :  Size : Next @ : g 9PASCALIO ?SPDEVICEVTB': ! :[h #x #x  #x i""x!#!~Ėpw hĆ;  b"whb " wi!*:!h+ `p.-c bećt# w `p ohe:mffć;;ll$ $ " $w$$# wi!h `p wޖipw  / Ć;  g 'w ) _ ga(E;;hh'  w )  :!&&# b p* *wޖ w `+ $m0+ `)wm g)wn&':&m(mepwޖ D)w,)`, $m>,'`'wm''f'@w((&:(m 'm+ epwޖ,QiĖ]Ė w   iĆ; !  (w * O b):!;;h!h(  w *  :"!'i'$ # ! +wޖ_ adtaw  wh ):  *  /.-,* hjc. wi!YhU+h } ()( 9++h  ()( h"h"j " h"jր wޖ $#"! m"! k߇   hwcft cw hjbwi!":!h h wޖ! h ji!"9! k##ɡ#  !T!h!i–d   i wbet bw!i wh :* !ii+!wޖjpvw`' $ 'e`%wef%w&:wޖ  h  i!OOi`` !`p;+* ``p}.` ``pp"p$x`p` +* .#(uu +,#)C`u`t"((t '!&!!r!ߐccp ފրԴ ,Y uw  v,( ; /aau`,DŽ 삀# + i]jh "&! ! ɡ3  hՖ, type to continuee PNETCLEARPNMSG1A,TIMEOUTPNMSG1A,TIMEOUT*SPDEVICE,SPREMOTI,PNMSG1B,PNMSG1A,BYTEFLIPPq2 Q/j^d:7=4j70T!EXTRAHEA CONCURRE GOTOXY SPREMOTIPNMSG1A SOCKETS BYTEFLIPSCREENOPLOCK  SPREMOTITcr0`r ` p}im}j!L`$s "j"i9 3$xk# # i!$xtsm$xts $xssր"! kߚj'" &p%$" &#p(" p" p" &#(p" &u5ish!i ! ޖ O&ha &! u! '&p! &%$#ps  |"ha ! u! #"psllb$&ha )! u! '&p! %"#s  t t RI BYTEFLIPPNMSG1B PNMSG1A SOCKETS  TIMEOUT gf `+*0lceĆ1ji""y$"i"{j#"!#!## ) ))$Ć ߆1ji"#"i"{j!#{!#{Ć#z #y0l*$$l$ ``"!51201h 0 y z  x {hފs)r`Ȁ`s9rޖ@^S CONCURRETIMER  @1TIMER ,<``}Ā`'p'rP`'p'rV *CONCURRE PNMSG1A e] 66H߆ED "6EDrDr Dրފǀ4s5ssuFF FF FIĆIĆIĆH#Ā4HsLa`Ȁas!h  ĖD!h"" I ? Ċ$    Ėf ih !   h ""p ?tL`p' h  hap$IaxĖ" pL ?tL(cgh i! j"|!i"ch!i !! Ph i! |h!i !!ja$ !j" h a"x<"Ć0k"# p#$x# 0ފ"x  k"y#}##|ĖL `p#$3ć$x##ć#I#I#Ā`p$#`xć#`xĀ p!ʄ"ʀ$x `xp%Ċ%Ċ#ć%Ė%#&ep$LexQbp"*c:adac!h Fڠ  &%$ %%(&%'3j%xi&%xjij%xiր*kddbebʀcp& %%!pfp$fxfp$fxfxh (' *=2qgtHcEXTRAHEACONCURREPNMSG1B  ASSOCIAT@&g>)`*P`P wwp+P`  &Goi!z!!|i!(!zyt!v!z +}++}&t^i!o>! +z +cp+,  ##dp#+$k!|i^i!m! +z ,},yUqe, -}, -}"q}q-}%-}h h%  e pm,,e!p!|ig*w<x ktKt^h^ox |^ yi!xlj"$`!m%"xN%"xn&zo"%%xx5&y!0'y+'}%k' (x(y(y(xĚq~&zq(y"j^h_uĘ`#%l$$$$$$$ޚ dt ~REALOPS REALOPS,Insufficient memory to allocate data segmentt2Insufficient memory to load fixed position segmenttConcurrent Use Limit exceededREALOPS !>STRINGOPEXTRAHEAPASCALIO HEAPOPS OSUTIL CUPOPS REALOPS EXTRAIO DEBUGGERFILEOPS GETCMD  CREATEEN&g@"!#xi`a`a# c#"jږV.   p))hh~ (ui! p( () )  p#h = i! i ! j!j$"pd$"ĭ" "h, h  h! - Us. ~Ą~Ą}UĀ(#" $$% &' ()(pĀ(h-,,. h##, a!#  < w *'ww wր-a/&-$-%4!a!/&Ą5!a!Ą6!a!-$Ą7!ć 5j"Ja/!"oon'&'z/n|o& "'Ċ"j/j"3a! a! "R}s} ʇ}ј՘sp**s}<՘sp**7}@ ՘sp**}u++p~-3R34"} ć@:"}8syć8ĊĊZ4"~ ć~:"~8syć8ĊĊ"j,a#-'/P!p}#-'/j"l4"} ć}:"}8syć8ĊĊ}}P"jЇ6ć5,5j"6""j 5k# )xl$՘$x (R 6(ć$*(/*,ć)ć7(ćć* **{Ċ/((x $***{Ċ $$l`6#,ć)ć7#ć^ě^6#Ą ))x#k -m%`+', a!'"7%I%E w .ww w ր ć Ą:xć yĊ9 999y9zy9{⇂y9ć ććqćć 4ććĄɄq Ċ%m_uć6y` Us P"xi`a`a" Ė 70s,Ĉ , ʇ,sp5p $, %,cu--p )hi`aj ..  wj..e.c "$,cu--p :/,/ .L/X/[La/ku$//(  rr  m/:/ $'6IցY.DEn:~/$ցҚdts7:::Illegal file nameNo file  is not a code file Error reading segment dictionaryy#Error re-reading segment dictionaryError reading library Unit not founddLibrary list file  is not a textfilee$I/O error reading library list file Duplicate unit &Too many library code files referencedd Too many system units referencedd"No program in code file to executee Linking.... Program must be linked via L(inkkSegment  is an obsolete code segmentt,Insufficient memory to construct environmentt9Program environment too complicated: run QUICKSTART firstConcurrent use limit exceeded%CUP DEVICE software id limit exceededEnvironment construction errorrOY7CO[Environment construction errorr#Insufficient memory for environmentError reading program code fileError reading library code fileConcurrent use limit exceeded%CUP DEVICE software id limit exceeded`N-" * PEDBUILD&g%j"Ռki!#Y"!l$s$s`"`! s"p!s`"瀀! s"`!"瀐!l$s$s$s$s!i"s"s"s"s"s"s"sxh  i!y !{!|s!xh !  p``ćs4`e`p$O``  `  n%j k#%#"|#$uipĭx! "|"zx## ! ƭĭĈ33   k#( ##k k#(##k ĭ( )oh ba ! ( z(((((( ĭ!$b!p&l" $(!Ċ (!Ċր |h      ((((3 (z3((((( (} )p))))(}m%%%%ym(ĭo(}m(~'%5n(~'&"%b&(Ĉ"%"&&n%ym(~   P s ʇ 1sApZ 1PUsp&11P UPQ  1ih   ujp" 1 h ! m%%l$ $pk $# #$m(մ$#k $$l#$ $pn$&l#$ #pn#&k#$o'o'm $ 'p 'Ȅ    xć  z s x  A  xć  z  s x s P h ap&h C!%%.2 %ĭ!Ċ!!%kmn&-Ւ&%%y%zo%ć%%Pգ%|s%| ʇ%|'sp0''%|&&'&&&sp6%&&)&'&2&%&ć%Ċ%{Տ%} j"(~(& ")B&b)ɤ *(*&")Չ&瀂) &b) ()%~2%ć%(ć%2 ((%ĭ && &瀒)''z'y l#$j*Ձ&瀒)o#k  ,''&")'ć'ć'ć'ć'ć' (ć' )%,m,Ċ,,-#$j) "&&y&&&&ć&y y-#&  %xnd-  +Ċ++ !+Ċ!++%%%ć%ć%ĭ))%)ĭ))%ć% -ć% .-瀒.z/% //./% ĭ/% &&/ć&/p&-瀂.%Ą8&'Ċ%'<ġ % #ć% %ĭ#&&% % '!&|Ą"Ą#ć'x'y'y$!"#'x'y  wP$ww w%&|&z $ր@$7 ("% ć% "(p% "ć% (7&| upćx&|&zx d  pxG((xĊ(( ĭK   p) hx $  `p "Bh  h" "i i#!p!c#!"!j! "h "" ha"! < `ds d  `.j. `** + ,* -yl-xm* ,瀐* xnn+xo ,`*  ʄ ,瀀* ʄ )*~S O '" &-#,,ե, + 225+)ć + 瀂+ )ć))+~+22ÇC  xx..*- .&Ċ .-ć,-~,T--&( ( p (p+#,,#,* ć* x~,#%D)///*|ć*P/!,,,2 ć2 ~, ! .TEXT.TEXT*SYSTEM.LIBRARY*SYSTEM.LIBRARY*SYSTEM.LIBRARY.CODEWarning: Library not founddKERNEL KERNEL *** REALOPS KERNEL \G7xl[  .AG7 T W2 BYTEFLIPPNMSG1B SOCKETS SEGSKINIPNMSGCUPPOOLMANASPDEVICESPREMOTITIMEOUT TIMER PNMSG1A   7 SOCKETS  2  M  ASSOCIATASSOCQUIASSOCBAS <ASSOCIATASSOCIAT@Copyright 1979 U.C. Regents; Copyright 1984 SofTech MicrosystemsASSOCIAT\9f1 d S t2zl$$}t^h^oՈ |^ yi!xlk#$o!#x`!m%#xn&zo' &y!'y'}ᰠ<(x(y(y(x'xq~&zq(yĊ'x~&z 'x'x~'x #튋^hn_uĘ`qjlq &$$7$$$$$ޚq Ěq q"qŚ  td  c  i1h'! 0'xxzj"c'xh"c'xi 0'xx  !'!Ė  }:Pu Pk1PakPWPLPB{P8(P.P$PP]p `p`pC0` `(s*szsPsWsP&pȭ"Ȋ)DPssPo^`_uĚ  tp<`$%'#j" "i " " "!"j! !`0h !`  !瀐  !!ioh !i |h!u0oo|h 1 zb 0"0"1"p0" 1 |hb(5&2zh yt u22 }  }ĭt bu"p"pl^h o| yo'x m%(g'%xy yS'%xz z F'%x 0 "$"$ x"$ x"$ "$$ z l '%x xa)!!5!ڡ!! )!Dښ))|]k)|#z)|#{) #k)|# ) ) *z*{f*f*) ) &)Ċ ))|#)}8)) u ))y*|*|)'%xp%틒 |h| t+/rh`  t rppbwpb+ć +ba +bap r th!z NĚ Fr+e, Error: REALOPS REALOPSno program in bad code file accessing file can't find unit "reading segment "not enough memory must link code segment ""incorrect operating systemmtoo many units (use quickstart)incompatible machine code in ""'WARNING: Invalid quickstart information&too many segrefs (use quickstart) in "" PRNTERR FILEOPS EXTRAIO SCREENOP GETCMD HEAPOPS OSUTIL DEBUGGER STRINGOPEXTRAHEAPASCALIO REENOPEXTRAIO FILEOPS PRNTERR  ASSOCQUIyVk !*!!  !  *xĐ(^&`_u&! x  h ծwp x xypyii !Ĉ~ĭhzj"Ճ xl d h ⢧i e!p !hEese!s e!s ⢧ie!p e!pee! !h"Uerppk#wep Be$p"oz x ɰoz  oz Ċtx ćxrepyĮr"t Ė' }ĭ{|i!h u p^ !lj"$"m%n%o" (  (&&&%"{ & % &'q'')y'(' (|' (})z' )x' (~ĉ' '''(('", a }h u p~nk#&2#bl$ #$Ċ##ȭm{nk#&Հ%o'x j"(X'"xi!'"!xĊ4!&d!$${'"$!{$%Ċ '""튢#%e''x#y `a``a` `a``a`/:sle^[F- - - ASSOCBASrĄ pklnmh^j$ $$i$y`%%mO%x_u!"^rɀ> ʭɇ rp%)v  v v voz x ɰoz  oz t ćɄr ph C Ȥɇ wpȕi!`!!`!瀀!瀐!b !no y x  ʄʄ  ʄʄ ʇ b Ɋ xyzbb !"h r K &b Įha&p&h ?!"Ċ:!!}m!|l!~k!&!%!$!#Ċ!"Ċ"" "h ap&h b$pbon babĮK  !~! Ėct#ćy⤀ććxp_yć ćf i!f!⤀*ćbćx\dp&6$$O$ć$$${Ċ!/e~%(%%% %%y%~mԇć`t" .p i!q!!"! "! " ! " !" " ! "ĉ! !!!"  "  ! i!! !!Ė/ ) // / /o')塤 ,u/ / x+,(pp ,m(lkh %*k/ $-z-{T-z-{$j%"%i"if-f-&$-zn/ x+#!&pp %!m$"l#!k h* /*+'.)p ,un*h| 1, 1  1rp 1DvaPv v aaha!Pahh z*.TEXTREALOPS  not found.*SYSTEM.LIBRARYWarning: library rBG BG BG librar TOPSYS CONFIGUN ^#=FCopyright (c) 1982, 1983 SAGE Computer Technology, All Rights Reserved TOPSYS %kjas p!# !0k"j!tpG!5"%"jtp tptp# k tp! tpspԆ#h ")"lk#$ tp tptp# 6",s ptpk# tp#p %#Ěsp[0Zh  h Y Xm[@Ĉmr isp[s ps pZsp&s pYsp.s pXspsp4Bs ptpspspKs pspjs psps psps pspsps psps psps psps p`s psp IpDZX@Yi3sps psps psp$s psp2s psp@s pspspNs pspds p`s psp *Z&ZZ Z@Z pցjsp sps pXsps psps pYsps piց!rh$r$]ɥ[$]j[0*[ W [DrEɥWmrm[@xkO[ +"TrbWr""ˏxks ptpsph ]ep$exexiW"s ptpsph##l##k#k#ˏX#k #@ˏY#@k$k#F##ZZZ Z @Zւ !ZUUVV#s ptpsp "ih !#" 지a" 지z" " 지aA Ysp$s pkjK Y i! !@ˏ]_XW!p_ !˧h  _ ! ˧ " h d  ߇ z"jd" #ˏk#spQs p Ss p u s p tp us p!spUs pspspۚ{s p܀Ps ps p܂܂ p܂܂Ԧܑܘuܘuuܘuh h piaܘPuaSuaP s psp  Liaܘ uPua u_uaܘ uuaP)iaܘPua u_uaP PلܬP\cvcogugcugugun&&nڀT ``ogcug&uUug`ZugP ;&Ylj"$"@ˏ]_XW"p_ "˧՞kh _ " ˧' k #xVmh %nU_ " ˧i*_ " ˧_ " ˧i!!&&xĆ_&x!ZWX 튌"% [s pspp -h** WZi++!@],_*x+p,tp ))+튷*튠 cp+++Z +***-!],_*x+p+s ps pspp ,˧ĭ , ȭ!,tp )) ,p,tp ))lkZ+imb" " &%  )#RimZ%5" !i)" !!ˏi! !i""m"" !ˏh   """o #) +`-w`/wp*).T `wp,)`w/Gsps pspsps p]spsps p\spsp**T T+s p]spspT͚"tp*s p5s pTsp8s psp?s p^s psp^t^d ^aA^^T^DԿ*^ ^TS "tps pOs pSspRs psp0 Bad value** CP/M disk parameters ARE: BlockSize =, Dir entries= , Offset =-Error: ** CP/M disk parameters not defined **< The Blocksize in bytes, the directory track offsett5 (the boot tracks) and the number of entries> in a directory must be defined. See Auxiliary Devicee9 Information under UTIL in your Stride manual or'Type: F to use Floppy Defaults.  V to define the parameters now..& Q to quit this program.. --->  Block Size: 0 10244 1 20488 2 40966 3 81922 4 163844* Q to quit this program.. ---> 0Q% Boot Track Offset (normally 2) --->% Number of Dir Entries (32,64...)--->FvC** Not a valid channel **** Invalid Sectors per Track **%** CP/M disk block size is illegal **LCP/M directory--------------------------------------------------------------- 12345678901  : K---------------------------------------------------------------------------;CP/M file name (? for directory, @ new setup, CR to exit): ?@@?  . ILLEGAL FILE NAME (too long))  #: .TEXT.DATA WRITE ERROR READ ERROR --& CP/M TEXT FILE HAS NO "EOF" CHARACTERRTOPSYS version 2.004Read CP/M files from BIOS channel:4, 5, or 9-22 --> 4Write to p-System Unit Number: 4, 5, or 9-22 --> FILE NOT FOUND ON #" is extents longIs this a T(ext or D(ata file? " is blocks longgf0 Kc jFILEOPS OSUTIL STRINGOPEXTRAIO PASCALIOCONFIGUN CONFIGUNz: "!! ``!ɤ"!J Np`'`('`Np(o p`#`p! 0 !p` 0 `p! p !p`%& ` p `&p p&`!`p5 pK``p[ pq``p p `! `p!" h! ڡ! ڡ !"p" h! ڡ!  ڡ !"p !  !p(` `p7 pM@`A@`pA] ps@`A@`pA!& %k $ xk kր "5h h$ x! l!  i!i!lր= ## ""!!(``#"`#!`#H[`p io`p i`p h  r prprpp# !$2Ć$nĆ$Ć$Ć$,Ć$XĆ$Ć$Ć$` Ć$ Ć$  Ć$ %Ć$ Ć$ KĆ$nĆ$Ć$Ć$,Ć$XĆ$Ć$Ć$` Ć$Ć$Ć$%Ć$KĖ!"s'Config_Unit must use BIOS 4.0 or MU 6.0 vU<1)qbQD:2'r!*** PASCALIO  %)0:CONFIGSAMNUUNIT ATTUNIT SIOUNIT TADUNIT WINUNIT "&,7!7  y   TYPE  C"Conf_Rates = (Conf_RSync,Conf_X1,Conf_X16,Conf_X64); "Conf_DataBits = (Conf_5Data,Conf_6Data,Conf_7Data,Conf_8Data); "Conf_StopBits = (Conf_Invalid,Conf_1Stop,Conf_1_5Stop,Conf_2Stop); "Conf_PrtMode = (Conf_None,Conf_Serial,Conf_ParInterrupt,Conf_ParPoll); " "Conf_Type = (Conf_CvBaud,Conf_CvStepRate); " "{ Terminal Configuration } "Conf_Terminal = PACKED RECORD 2 BaudRate:INTEGER; 2 BreakAllowed:BOOLEAN; 4XonXoffFlag:BOOLEAN; 4Reserve1:0..63; 4RateFactor:Conf_Rates; 4DataBits:Conf_DataBits; 4ParityEnabled:BOOLEAN; 4ParityEven:BOOLEAN; 4StopBits:Conf_StopBits; 2END; " "{ Remote Serial Channel Configuration } " "Conf_Remote = PACKED RECORD 2BaudRate:INTEGER; 2XONin:BOOLEAN; 2XONout:BOOLEAN; 2Reserve1:0..63; 2RateFactor:Conf_Rates; 2DataBits:Conf_DataBits; 2ParityEnabled:BOOLEAN; 2ParityEven:BOOLEAN; 2StopBits:Conf_StopBits; 2PollDelay:INTEGER; 2Reserve2:0..255; 2DSR_Polling:BOOLEAN; 2Reserve3:0..127; 0END; " "{ Printer Channel Configuration } " "Conf_Printer = PACKED RECORD 3Timeout:INTEGER; 3PollTime:INTEGER; 3NoLF:BOOLEAN; 3Reserve1:0..127; 3Mode:Conf_PrtMode; 3Reserve2:0..63; 1END; " "{ Floppy Configuration } " "Conf_Floppy = PACKED RECORD 0 Cylinders:0..255; 2Sides:0..255; 2Gap3:0..255; 2SectorsPerTrack:0..255; 2DataLength:0..255; 2Skew:0..255; 2BytesPerSector:INTEGER; 2MotorOnDelay:INTEGER; 2NoDMAflag:BOOLEAN; 2HeadLoad:0..127; 2HeadUnload:0..15; 2StepRate:0..15; 2IBMflag:BOOLEAN; 2NCIflag:BOOLEAN; 2RAWflag:BOOLEAN; 2Reserve1:0..31; 2Reserve2:0..63; 2MFMflag:BOOLEAN; 2Reserve3:0..1; 2IgnoreErrors:BOOLEAN; 2Reserve4:0..127; 2Tries:0..255; 2DoubleStep:BOOLEAN; 2Reserve5:0..127; 2SoftErrors:0..255; 2Gap3Format:0..255; 2PatternFormat:0..255; 2LastError:0..255; 2FirstError:0..255; 2Reserve6:ARRAY[0..4] OF INTEGER; 0END;  "{ RAM Disk Configuration } " "Conf_RamDisk = PACKED RECORD 1 BaseHigh:INTEGER; 3BaseLow:INTEGER; 3TopHigh:INTEGER; 3TopLow:INTEGER; 3Reserve1:0..255; 3BootRamDisk:BOOLEAN; 3Reserve2:0..127; 1END; " "{ System Configuration }  "Conf_System = PACKED RECORD 2Seconds:0..255; 2Days:0..255; 0END;  "Conf_OpSystem = ARRAY[0..15] OF INTEGER; " "Conf_ChanTable = ARRAY[0..31] OF PACKED RECORD EChannel:0..255; ESubChannel:0..255; CEND;  "Conf_Winch = PACKED RECORD / Cylinders:INTEGER; 1BytesPerSector:INTEGER; 1StepTime:INTEGER; 1SlewTime:INTEGER; 1StepCtr:INTEGER; 1HeadSettleTime:INTEGER; 1PreCompTrack:INTEGER; 1SpecialType:INTEGER; 1Tests:INTEGER; 1ShipTrack:INTEGER; 1HeaderCount:INTEGER; 1LowReadCounter:INTEGER; 1HighReadCounter:INTEGER; 1SectorsPerTrack:0..255; 1Heads:0..255; / Tries:0..255; 1SelectBit:0..255; 1LastError:0..255; 1FirstError:0..255; 1SoftErrors:0..255; 1LastHardError:0..255; 1SeekUnderflow:INTEGER; 1CRC:INTEGER; / SyncBit:INTEGER; 1ExtraHeadSettle:INTEGER; 1WriteTries:0..255; 1RawTries:0..255; / Reserved:ARRAY[1..8] OF INTEGER; /END;  "Conf_DevInfo = ARRAY[1..16] OF INTEGER; " "Conf_WDevInfo = ARRAY[0..3,0..15] OF INTEGER; " "Conf_File = PACKED RECORD 0Header:ARRAY[0..12] OF INTEGER; 0Name:PACKED ARRAY[0..3] OF CHAR; 0BiosSize:INTEGER; 0BiosBuffers:INTEGER; 0BisoStart:INTEGER; 0BiosVersion:0..255; 0BIOSSubVersion:0..255;  Floppy0:Conf_Floppy; 0Floppy1:Conf_Floppy; 0Terminal:Conf_Terminal; 0Remote:Conf_Remote; 0RamDisk:Conf_RamDisk; 0Printer:Conf_Printer; 0TimeAdj:Conf_System; 0OpSystem:Conf_OpSystem; 0ChanTable:Conf_ChanTable; 0DevInfo:Conf_DevInfo; 0XSerial1:Conf_Remote; 0XSerial2:Conf_Remote; 0XSerial3:Conf_Remote; 0XSerial4:Conf_Remote; 0Winch1:Conf_Winch; 0Winch2:Conf_Winch; 0Winch3:Conf_Winch; 0Winch4:Conf_Winch; 0WinDevInfo:Conf_WDevInfo; 0DummyBlock:ARRAY[0..255] OF INTEGER; .END;  PROCEDURE Conf_RD_Terminal(VAR Data:Conf_Terminal);  PROCEDURE Conf_Wt_Terminal(Data:Conf_Terminal);  PROCEDURE Conf_RD_Remote(VAR Data:Conf_Remote);  PROCEDURE Conf_Wt_Remote(Data:Conf_Remote);  DPROCEDURE Conf_RD_Printer(VAR Data:Conf_Printer);  PROCEDURE Conf_WT_Printer(Data:Conf_Printer);  PROCEDURE Conf_RD_Floppy(Drive:INTEGER; VAR Data:Conf_Floppy);  PROCEDURE Conf_WT_Floppy(Drive:INTEGER; Data:Conf_Floppy);  PROCEDURE Conf_RD_RamDisk(VAR Data:Conf_RamDisk);  PROCEDURE Conf_WT_RamDisk(Data:Conf_RamDisk);  PROCEDURE Conf_RD_System(VAR Data:Conf_System);  PROCEDURE Conf_WT_System(Data:Conf_System);  PROCEDURE Conf_RD_OpSystem(VAR Data:Conf_OpSystem);  PROCEDURE Conf_WT_OpSystem(Data:Conf_OpSystem);   PROCEDURE Conf_RD_ChanTable(VAR Data:Conf_ChanTable);  PROCEDURE Conf_WT_ChanTable(Data:Conf_ChanTable);   PROCEDURE Conf_RD_XSerial(Device:INTEGER; VAR Data:Conf_Remote);  PROCEDURE Conf_WT_XSerial(Device:INTEGER; VAR Data:Conf_Remote);   PROCEDURE Conf_RD_Winch(Drive:INTEGER; VAR Data:Conf_Winch);  PROCEDURE Conf_WT_Winch(Drive:INTEGER; Data:Conf_Winch);  PROCEDURE Conf_RD_DevInfo(VAR Data:Conf_DevInfo);  PROCEDURE Conf_WT_DevInfo(Data:Conf_DevInfo);   PROCEDURE Conf_RD_WDevInfo(VAR Data:Conf_WDevInfo);  PROCEDURE Conf_WT_WDevInfo(Data:Conf_WDevInfo);   { Converts raw data to user familiar form }  FUNCTION Conf_Rd_Conversion(Device:INTEGER; DataType:Conf_Type; k9,k3Xk-k'k!k` kk%k Kkր kր!"> k2 k( k n^k 2kK k 20k K1kz n2kp 4kf ,5k[ X6kP 7kE 8k: 9k/ ` :k$ k K?k>k   h h kրs ## ""!!(``#"`#!`#~`p ih`p    r prprpp# ! s: &CONFIGSAGE must use BIOS 2.4 or MU 3.33K A<) {sbUKC91's *** PASCALIO  "  TYPE " "MNU_Cat = (MNU_Integer,MNU_String,MNU_Hex,MNU_OnorOff,MNU_SubMenu,MNU_Event, -MNU_Choice); "MNU_Status= (MNU_Done,MNU_Get,MNU_Put,MNU_Enter,MNU_ReEnter,MNU_Exit); "MNU_Style = (MNU_1Style,MNU_2Style); "  VAR " "MNU_Value:INTEGER; "MNU_HighValue:INTEGER; "MNU_Boolean:BOOLEAN; "MNU_StrValue:STRING; " "MNU_State:MNU_Status; "MNU_MenuNumber:INTEGER; "MNU_ItemNumber:INTEGER; MNU_General:INTEGER; "MNU_Category:MNU_Cat; "MNU_Fancy:BOOLEAN; " "MNU_Aborted:BOOLEAN; "MNU_Reject:BODOLEAN; " "MNU_File:FILE OF CHAR; "MNU_Fopen:BOOLEAN; " { Procedures to Define a Menu }  PROCEDURE MNU_Menu(MenuName,MenuTitle:STRING; MenuStyle:MNU_Style; MenuNumber, 3MenuWidth:INTEGER); PROCEDURE MNU_CopyM(OldName,MenuName,MenuTitle:STRING; MenuNumber:INTEGER);   { Procedures to Define Items in a Menu }  PROCEDURE MNU_ItemI(ItemName:STRING; General,Number:INTEGER; 4HighLimit,LowLimit:INTEGER);  PROCEDURE MNU_ItemS(ItemName:STRING; General,Number:INTEGER);  PROCEDURE MNU_ItemO(ItemName:STRING; General,Number:INTEGER);  PROCEDURE MNU_ItemM(ItemName:STRING; General,Number:INTEGER; 4MenuName:STRING; DispSubItem:BOOLEAN);  PROCEDURE MNU_ItemH(ItemName:STRING; General,Number:INTEGER; 4Digits:INTEGER);  PROCEDURE MNU_ItemE(ItemName:STRING; General,Number:INTEGER; 4Redisplay:BOOLEAN);  PROCEDURE MNU_ItemC(ItemName:STRING; General,Number:INTEGER); PROCEDURE MNU_CopyI(MenuName:STRING; Number:INTEGER);    PROCEDURE MNU_Show(MenuName:STRING);   PROCEDURE MNU_Loop;  { Procedures for User Screen Output }  PROCEDURE MNU_ClrScreen;  PROCEDURE MNU_Error;  FUNCTION MNU_YesorNo(Prompt:STRING):BOOLEAN;   { Procedures for Item Name access }  PROCEDURE MNU_GetIname(MenuName:STRING; ItemNumber:INTEGER; 7VAR ItemName:STRING);  PROCEDURE MNU_PutIname(MenuName:STRING; ItemNumber:INTEGER; 7ItemName:STRING); 7   IMPLEMENTATION  MNUUNIT  btpupt p! !tp t ptprhpt! p! Ȗ+b,Pbi`!v!b bp .-+b-Pdhi!  zbi xh, Ė.,,c/P-ąjjzcjjcbcb"!"{hi!  y{.i xh- yĖ0E2mrtpT,ZPbXP,` t p,t ph wehdehąhehi!!,!b!V!U!!W!! !w!yĘi[}UP,PbPU` *t pUt p$t ph wehąhehi!!,!b!~! ! {! }! ! ! y!y!yxĘi',`w +h,+-ć-y, , -yć,,ć,-| &-|-~+Ċa,+aĊ ąi h Ċi i-yh)t ph} ,7t phzt pAt p+b0P`w i!!b!/!.!-!,! 1+b.P`w i!!b!-!,! /"+b.P`w i!!b!-!,! /lT,ZPbVP`w i!!,!Y!X! b U [+b/P`w i!!b!.!-!!, 0+b/P`w i!!b!.!-!!, 0+b.P`w i!!b!-!,! /.*a,Pa+` x -)`*P`jj0Gt p`t pRt ptpj{kj~.c+) ``` p`P ).gaYPjhky|0as aPky}++ 1+as +0+as 2 aZPa\Pky~Ձky},,I,}9.,{--.-y{0.-x-. a-yyPaP'^t pky}t ptp0ky{aiPրja ga ȅk|k|aP.hkՃk|sc-kyj"|H"~B"}a!!}!~.j~."{/"z0st p"}t pj~."{/"z0"|1hkxkch kjuphj jiu ss!oOt pjzt pt ps!otpt ptp!rtsos!stt  tusqrstsj"j|wwwwwqlqmpxyj{h""j xh! Ė ny2r tptpx 5t5tw wupx 5 wuj|t ptpx5j|t 5ttpx5tqnj"&soi!'!q"k#uյ#` #A#l[#$ 0#lL#$*lB#%#l8#& a#&l&t pjzt ptp $ !rt "ʚE$upt p yyt px5$u5t 5 yyt j yym% %upx 5 %u upx 5 u | |t px 5 |t &j jupx 5 ju!s\t upx 5 u|upx 5|ut tupx 5 tu!i.tpx5t"j tpx&5t5t 5t5t5txy<2 qrtpt pzt ptprv upt p`t ptpt p 2tptp4 /gh`siky|kyj`s奁g`si gg t p0"}0"~2gt p"~tpt p"}tpPx`s奁g`si gg t p;s !gt pց tpffwfąfĊ-fxwfĭfĭĭffxffjąkyh {/ z0 } -/2 qrtpkyyt p t pPt pt p3#g!"c-kyhj~. {/ z0 |1c-kyij~.!{/!z0!|1!{j{h L |B |: | | / | | ȅ2" j ɔ  |t p xh-kyhj~. {/ z0 |1ky}cc-i2qrqr t p`t ptpՐ ! c3"pj& a z aAhj{k!允kk{ ikxk!+ky|k#$#%#&#'  =2 qrtpb@5 p0up t pzt ptprvb/t pzt pt pzf9zs 5z pG2 qrtpup<t pzt ptprvb /bx up t pci!*-hc!4W2*kj kɔ k|t p tpg2qrDt pncc4g !j}c3c#4!cj j{kcskxkfc\"X-hQj~.h-c@f1fz$fzz hfąfyfyf-ccցX 4"2r tptpn,c-Phj/ct p upat p!Y!y!up/jD!N!n j!up,tpt pup bt ph"Ԗtp.*a-Pa,` + yP.T,XPbUP,W` ) yi!b!b !bbs b y ybPY?<`r;ɥp;ɥo<ɥ2<5a dehijkfcn43xb( bG5 p7tpupgt pzt ptprvb5  Fatal error  in menu systemDuplicate menu Could not find menu for copyNo menu defined before itemIncorrect item for menu styleCould not find Menu for displayyOnnOffCould not find menu * AYCould not find referenced menu Menu  is  characters too wideeToo many items in menu  -  - 'Select Menu item : Error writing to file , Type space to continuee  Illegal integer valueValue out of range  to  Illegal hex valueONNOFFMust enter ON or OFFF~: 'Select menu item : Error closing previous file File for printout: .TEXTCould not open &Warning - item will not fit in displayy^Y or N? Error closing printout file \wOE_wOkR<3 n _  frU8 (*** FILEOPS GOTOXY STRINGOP HEAPOPS EXTRAHEAEXTRAIO PASCALIOSIOUNIT SCREENOP    TYPE "ATT_Events = (ATT_Key,ATT_TrmQE,ATT_RemIn,ATT_RotQE, 0ATT_ParQE,ATT_PrtQE,ATT_Break,ATT_Schd1, 0ATT_Schd2,ATT_Schd3,ATT_Schd4,ATT_TaskR, 0ATT_Ex1In,ATT_Ex1QE,ATT_Ex2In,ATT_Ex2QE, 0ATT_Ex3In,ATT_Ex3QE,ATT_Ex4In,ATT_Ex4QE, 0ATT_UKey,ATT_Win,ATT_Floppy,ATT_ComIn, 0ATT_ComDn);  E FUNCTION ATT_Lookup(Event:ATT_Events):INTEGER;   IMPLEMENTATION ATTUNIT  "!"!" """#"`p`x$#"!"")"+"-" /"րu>"o$"i%"c&"]'"W?"Q("K)"E*"?+"9,"3-"-."'/"!0"1"2"3" ="ր!-3:AHO }    FUNCTION SIO_IntRd (VAR Cursor:INTEGER; VAR Source:STRING; VAR Result:INTEGER): 4BOOLEAN;  FUNCTION SIO_HexRd (VAR Cursor:INTEGER; VAR Source:STRING; VAR ResultH, 4ResultL:INTEGER):BOOLEAN;  FUNCTION SIO_AlphRd(VAR Cursor:INTEGER; VAR Source:STRING; VAR Result:STRING): 4BOOLEAN;  FUNCTION SIO_AlNuRd(VAR Cursor:INTEGER; VAR Source:STRING; VAR Result:STRING): 4BOOLEAN;  FUNCTION SIO_CharRD(VAR Cursor:INTEGER; VAR Source:STRING; Check:CHAR): 4BOOLEAN;  FUNCTION SIO_ByDlim(VAR Cursor:INTEGER; VAR Source:STRING; Check:STRING): 4BOOLEAN;   PROCEDURE SIO_CharWt(Value:CHAR; VAR Result:STRING);  PROCEDURE SIO_HexWt (Value:INTEGER; Digits:INTEGER; VAR Result:STRING);  PROCEDURE SIO_IntWt (Value:INTEGER; VAR Result:STRING);  PROCEDURE SIO_Fill (Count:INTEGER; VAR Result:STRING);  PROCEDURE SIO_Upper (VAR Result:STRING);  PROCEDURE SIO_Suffix(Suffix:STRING; VAR Result:STRING);   IMPLEMENTATION SIOUNIT 3k"x! !"xk""xĖ+b,P0i/x.Q./xhb b 0//xĊi*b!b bpb 0//xĊiii!Ԡ/ o$ijh&%-j &%+&x%(%&xk#h&&x$$x #0Ċii! o"$$xĖ %$h'x&[&'xj"G ''x" 0i"A ia i$xk%%xc ɢ$$x"!Ċhh Ԙmh$x#!#$xi! m$$x!"hh Җ$#"mpmh$x##$xi! $$x!"hh Ԗ?#,#jh "!# i!a!z # !aA hږ{P p`P` {`r`{`{``지.**Pr*{r*P지. r46`s5nf5Prf`ZrfP6 P !ȖE&&2'k&li!$&c!h 0 jA j"%!iՖz||Q)`|`| p{**{Pr*`r*P|~~~"du T OSUTIL STFRINGOP    TYPE "TAD_Style = SET OF (TAD_Short,TAD_Long);  TAD_Ptime = PACKED ARRAY[0..3] OF 0..255;   PROCEDURE TAD_TimO(Hours,Minutes,Seconds:INTEGER; Method:TAD_Style; 3VAR Result:STRING);  PROCEDURE TAD_DatO(Day,Month,Year:INTEGER; Method:TAD_Style; VAR Result:STRING);  PROCEDURE TAD_DOWO(DayOfWeek:INTEGER; Method:TAD_Style; VAR Result:STRING);   FUNCTION TAD_TimI(VAR Cursor:INTEGER; VAR Source:STRING; Method:TAD_Style; 2VAR Hours,Minutes,Seconds:INTEGER):BOOLEAN;  FUNCTION TAD_DatI(VAR Cursor:INTEGER; VAR Source:STRING; Method:TAD_Style; 2VAR Day,Month,Year:INTEGER):BOOLEAN;   PROCEDURE TAD_Pack(Day,Month,Year,Hours,Minutes,Seconds:INTEGER; 3VAR Result:TAD_Ptime);  PROCEDURE TAD_Unpack(Source:TAD_Ptime; VAR Day,Month,Year, 5Hours,Minutes,Seconds,DayofWeek,Julian:INTEGER);   PROCEDURE TAD_Fetch(VAR Result:STRING);  PROCEDURE TAD_Set(Day,Month,Year,Hours,Minutes,Seconds:INTEGER);   IMPLEMENTATION TADUNIT ?4*/h`/Ps`Rs`P* .`33E0*3 ``3 3 33 33  /r3/r  :/r2<22 0/r2/r  0):/r1<11 0/r1/r  `/kc/Psc`TscP3,*|h`|Ps` Rs`P*p{}Յ` Pl` Pf`P]`PT`PK`PB`P9`!P0`$P'`(P`-P`1P `6Pր;}`}}   |r|r  /|r  0|r|r  /|r~d~~ 0|r~|r  ,}ը|**|Ps*`s*Is*P   |r|r  |**|Ps*JRs*P~d~)~dˏ ~l~~~~|r  |   |r|r  |**|Ps*LQs*`s*Ms*P~d~~ 0|r~|r  2`N 5?`P 9`T 0`X '`\ `a `f `j րo4`ȇ3me3Pse`YseP5/hm5xk54xrl54brP""F54:r;54ar1!!<&54:r54`r <mm%[3Tm54yrlfP"" 354fr)fr fz m" jf| m" " j%2"ć1!ć0 65#65^]~rh ^]r hhhP ^]r7.Ȉr 0sˏ hh^]r^]r2,dh!ddˏh \[ ZĊ[ĭZĭYĖXmF^xk0Pn ^]-r! ^]-r > ^]/r."i!!  ^]/r  %#[xZxm[x ZxP m%__^#Ė^ -l--d/. xm.-ˏ%mo'n-&-l-ˏ&'%-$ (o(ˏ,<+*k#',Q%3-$j"%-$i!-$h)#)")!) Ȗ  ˧k ˧j ˧i ˧h, !"#- !",x<. !-x<Ā .xl,,x<ˏ--x<ˏ..xˏ$on&m$ˏm&%+'%xˏxn/'%&dˏćx&*xćx;/xˏxćxćxx xxćxx xĖ < p ˧ ˧ ˧ ˧2 p edcba`gf%$#==r "! == =Ps cs P= '' && %%d$$##<""<'&%$#"``p | Ć Ć <Ć [Ć yĆ Ć Ć Ć  Ć  Ć  1Ć  OĆ  nt??? PM AM??????JanuaryFebruaryyMarchAprilMayJuneeJulyyAugustt SeptemberOctoberNovemberrDecemberr  , --???SundayyMondayyTuesday WednesdayThursdayyFridayySaturdayy  AMMPMM  ,,$JANFEBMARAPRMAYJUNJULAUGSEPOCTNOVDECC No time was set. xm }h*** STRINGOPSIOUNIT      CONST "Win_BadMax = 63;   TYPE "Win_NameType = PACKED ARRAY[0..7] OF CHAR; " "Win_BadTracks = ARRAY[0..Win_BadMax] OF INTEGER; 2 "Win_DevMap = ARRAY[0..15] OF 1RECORD 3BaseTrack:INTEGER; 3TopTrack:INTEGER; 1END; 2 "Win_DevData = ARRAY[0..15] OF 2PACKED RECORD 4Name:Win_NameType; 4Dummy:0..255; 4System:0..255; 4Data:ARRAY[0..10] OF INTEGER; 2END; 0 #Win_PromInfo = PACKED RECORD 4Heads:0..255; 4SectorsPerTrack:0..255; 4BytesPerSector:INTEGER; 4LowReadCounter:INTEGER; 4HighReadCounter:INTEGER; 4StepCtr:INTEGER; 2END; 0 "Win_DiskImage = RECORD  DevMap:Win_DevMap; 4BadTracks:Win_BadTracks; 4Dummy:ARRAY[0..154] OF INTEGER; 4PromInfo:Win_PromInfo; 4DevData:Win_DevData; 2END;   IMPLEMENTATION WINUNIT   GBOOTMU BOOTMU IV.13 [a.1] BOOTG&7_B+NANNMm?<A /0|/?+N(fdMVafrRA?7AK/ 0|/?+N(f6ApKf.?+"x0]/ /(I0]!'L'mP 'mTmX?+N(fMabgNAoNMBAN gZ g o lRAB6N`JAgNp NpSA`AN NRNN`NJgaf?K/  !'M /?+N(f*x]AVgANN`*xMa|fD?G/+ /?+N(fG(+ *DAgANNxO/?+XWxMa f8//?<(kNF'A`KA0 @Mo&X @Mnj0X6aLXaHaFaDa>a;Np &,28>DJPV\bhntz "(.djpv| 4:@FLRX^T\dlt| J^ @ f n  rJ:  * * , "  Z `6v  4 6 4 >  )D)Z(((( )0 )6)))* 08(LT N l R,L^& H N () ( z < R : R VVb )))p`,p`(p`$p` p`p `p `p `p ` p`a^|~B?L++++6=x A=x L=x=+8xx+;x k+Nu>++6"_vxvx+;7vx+8<6x(F<6x Ah<6xOh/ >++8<6xCh7vx+4<6x>6h<6h$NJGg*6xg$EH+Nu*Jg:6XSfNuRn*>++8>6x=*xNu:|+<*k+*B+*+;Np&,&Vp?N?<N?<N?<N?<N?<N?<N?<N?<N?< N?< N?< N?< N?< N?<N?<N?<N?<N?<N?<N?<N?<N?<N?<N?<N?<N?<N?<N?<N?<N?<N?<N?( N?( N?(N?(N?(N?(N?(N?(N?(N?(N?(N?( N?("N?($N?(&N?((N1_ N1_ N1_N1_N1_N1_N1_N1_N?) N?) N?)N?)N?)N?)N?)N?)N?)N?)N?)N?) N?)"N?)$N?)&N?)(Np Ј?Np Ј?NpЈ?NpЈ?NpЈ?NpЈ?NpЈ?NpЈ?N*:6X:6XpjH@@?6XN*:6XpjH@@?6XN>>xN>>xN>>xN>>xN>>xN>>x N>>x N>>xN'L+&p` 'L+&p` 'L+&p` 'L+&p` 'L+&p` 'L+&p` 'L+&p` 'L+&p` p?N?NpjHGj@?NpjH@?0NpjH@ЈP@?NpjH@1NpjH@?1NpjH@ЉP@?NpjH@3N*p`:6XQpjH@@?6XN*p`:6XQpjH@@PE?N*p`:6XQpjH@@=XNp@k+4>6>6xpjH@@?6xNp@k+4>6>6xpjH@@PG?Np@k+4>6>6xpjH@@=xNpjH@W>N0>=xN'L+&zjMprtaj@ES@&AX fJ* g `Q CN? Q CN'L+&prta>@@*AxS@? Q ENp2SA@*>7Ax0QT EN N0>6g<6x86hg<>6hg*6xg E<>6pjH>CxS@2QL+NNO?` N0>6g<6x86hg>6hg*6xg E<>6pb>CxH2QL+N`Pv `v`v(* "NJg"J> NJg J>tcSBk Vf D"EN0gBWNd BWNcBWN>N0>/S@r6xAdN`(* > NJg Jpb>CxH2Q D"EN`>Wr6x>N0>_xN02A<46hj{>N??LB<66hkC{ kvhN(* > Ng J>CxpjHS@ fJ* gQ D"EN2Q D"ENpjH@WNpjH2g @gAWNrt4BW?HB?N H@.N?N:k6>++6(Ax 0 1\ 00+8+;EE?6x DNEE+8?3PN8:aA+8JEk>++6AxE1PaNpjHN R@(@N(_N0WN0WNFWNFWWNտOb ?<NտOd?<NJWkNDWNRWNSWN0WN0WN0>NJWg0/H>NJWg0/H2H@J@jA>N02WmbWn\NտOf ?<NտOf?<NտOo?<NտOl?<Na&fT>L+NacTBWL+Nad`"NJg"J>/ NJg J>/pjHS@ VNu'L+&r> g@nGAACp3 UAf.I`"?rta,T O@"O`2QBYU@fL+N'L+&p0 @dvHrta2p0kbAb@RA6@C?NBWNHz`H4XQL+NHz`24XQp`0QL+NHz `4FBXQL+N0/@AH2@k"_J_NAC4`VB0 O.I2QBYTAf`a4(BC S@kOVf6SAkJXVf*.I?<L+Na4(BC S@k4FBXVg.I?<L+Naj4(BC S@k4FB_Vf`HNeRNdRNտOfRNտOgRNHNdTNpjHj@*A2J* g 4ZBm0X@n BA00X ENղhnXmA ENprt(a'M+*NxaL+|~N(6>*@G>2xG02xkrt(a@?++:?++8? ?? OIx7C+:H+/Nu>++4@@>6x7G+><6xCh<6xJvhg'J+@$N>6hg(6xg$D<6hNu*:6Xr`.*:6X:6Xr`r*g:6XSf` * `*rp6>*@G>2xG02xk@+/az:/ڎp0aL\H O'H+`*p'L+&apala0(HЊ+@1@>++>7G+87vx+4>6xRvxN'L+&p* @fr A/bA++;gR'L+&Nx>;tgR'L+&NxF"p "N  )(ppF"p "N  )(p>(k+8gL*<6xCh<6xJvhg$N>6hg(6xg$D<6hRn*>++8>6x=*xSvx7E+87vX+4pjH>(2(jDA>*AG>2xG>2xIx7A+:@O >(AxH+N*g:6XSf?Na*ax7k+2+6Na>++8>6xJvxfR+&=k+8`NH|~Gt,k+.|>b@zA+D:0gaLINu|?f<++26h>6hg6xf+6Xan=X+++2a&7G+2>++66h6xc +Nu~<++2k+6g><6h`JGg=hxNu7vh+2NuNJnfN>N0o"S@(* >_Cx>_AxQ D"ENPN0o(* >_@Cx>_@AxS@ Q D"EN02oSA>_*AxQ ENXNT>_*AxL6g6mSBJAf WRB`$VRB`RFBJAf WFB` VFBB> EN> 6x"6x<>4xfxfBW=hNk>6xf>=hN>6x f>=hN>Ax>Cx>*EprJ3 gkS@mJ3 gk` _g֑UH2J@o S@r QAp|A@>;:g(Ex"$ffgX`P`"L+N"L+N":^*ZrANHD 'ARRAY ,BEGIN CASE CONST DIV 'DO DOWNTO ELSE END EXTERNAL5FOR FILE .FORWARD "FUNCTION GOTO IF IMPLEMEN4IN )INTERFAC3LABEL MOD 'NOT &OF OR (PACKED +PROCEDURPROCESS 8PROGRAM !REPEAT RECORD -SET *SEGMENT !SEPARATE6THEN TO TYPE UNIT 2UNTIL USES 1VAR WHILE WITH **0<> NJGg*6xg E>Cx` 0<>"NJGg*6xg"E>Ax`QL+N0<F>>6xvx>6x( NJGg*6xg E` (AQ DNp_g+ NJGg*6xg E>p06x<6x>6x"NJGg*6xg"EƱgc S@H"Q`@S@H# Q C"DN>p06x>6x<6x>6x NJGg*6xg E>(g@GCx2!YJg2SgSg>!G`IA@>>6x26x4!JBg>!pxSBf`L+N>>6x<6x?6hp06x<6x NJFg*6hg E/06x@??6xBgNj>NPTX\   $(, $(,048<048<hlpt@DHLN,RL+NuN,VL+NupE+N,N>=+x>=+xL+NB+B+B++?<a0?<a(?.a Nu+ _pr468$_:/?`X+ _pr:/?`Dpr`>p4>Exrf,r`(pr`pr468>_Ex`J_BW`J_r`'L+&:+AJk c.ne(Nxr ` r`r`r Eg|=AL+BB+gNuN++g(I+~0ANp`++g(I+~0rJg4S@gS@g`".++ 'G+.++ 'G+ACN`rN`lJDgf++.\fJg .++ G'G+`.Sf"g<f++gSDf`SD f++gz++BFCaFa, AKNux ,:".̂(ȃ⊄(΀ȁ∀NuJk,f F m F BJgk[SFn gBFNu<l`0H/a`nLH@HAAHa`LH@HAABHa H@R@|b\H@?N////NajH/2/2N>/6x/6xN>/-x-xTNp0|4bPA$/0/0AH@/0/0a k+`?CAy7FnI1tM8O?PQhSubسoW0$nZwH0<]ԀW8a&%odyER0g%k%knqJRgq24zuOsVxg:)T{D߃+m *?@$@Y@@@È@jA.AcAׄAeB_ B7HvBmB0@BּC k&4````(````^````D`p`r``>````.`F`B`D`T``````pNNNupNNNuNIrNuNJrNup /A!I"_CR!I!I 0NNrNuDA Ab;NurNu p `p `p XE|cVEA0Bh1D!J1C Bh1BNN2(kNup `p `p `g:<`:<>++6 6xf*a$<++@$O'J+?./ ?0,++2KxA'H+7H+7k+2+6;||B- k+;H;| B-|;|Bm;|;k+"k+p0++2K0.|I0, @2++A@ ;@Bi 3A3A3|3|O O7H+47H+8 7H+p0++2K;k+8?|?|?k+8?k+?k+4?k+ Bo ?|?| k+?H?|Bo?|BoBB p0.|A?h>$0++h? I TELEVIDEO 925  '8.'''''H1FI,G6#0:<=>  6$P 10-----| 31dbhgf.0G0XU()() FREEDOM 100  %-78.'%%&%HR1FI,G6#0:Q<=>  6$P 2p0FGEHKJ 31dbhgf.1e G0XU%$()VT 102   PP-----|  H SAGE QUME 102 '-78.'''''HR1FI,G6# 6$=>P p0fgehkj 31}{G0XU%$()VT 52  -7 #P -----|H C HJGFJ k+?H?|Bo?|BoBB p0.|A?h>$0++hk9,k3Xk-k'k!k` kk%k Kkր kր!"> k2 k( k n^k 2kK k 20k K1kz n2kp 4kf ,5k[ X6kP 7kE 8k: 9k/ ` :k$ k K?k>k   h h kրs ## ""!!(``#"`#!`#~`p ih`p    r prprpp# ! s: &CONFIGSAGE must use BIOS 2.4 or MU 3.33K A<) {sbUKC91's *** PASCALIO K "  TYPE " "MNU_Cat = (MNU_Integer,MNU_String,MNU_Hex,MNU_OnorOff,MNU_SubMenu,MNU_Event, -MNU_Choice); "MNU_Status= (MNU_Done,MNU_Get,MNU_Put,MNU_Enter,MNU_ReEnter,MNU_Exit); "MNU_Style = (MNU_1Style,MNU_2Style); "  VAR " "MNU_Value:INTEGER; "MNU_HighValue:INTEGER; "MNU_Boolean:BOOLEAN; "MNU_StrValue:STRING; " "MNU_State:MNU_Status; "MNU_MenuNumber:INTEGER; "MNU_ItemNumber:INTEGER; MNU_General:INTEGER; "MNU_Category:MNU_Cat; "MNU_Fancy:BOOLEAN; " "MNU_Aborted:BOOLEAN; "MNU_Reject:BOOLEAN; " "MNU_File:FILE OF CHAR; "MNU_Fopen:BOOLEAN; " { Procedures to Define a Menu }  PROCEDURE MNU_Menu(MenuName,MenuTitle:STRING; MenuStyle:MNU_Style; MenuNumber, 3MenuWidth:INTEGER); PROCEDURE MNU_CopyM(OldName,MenuName,MenuTitle:STRING; MenuNumber:INTEGER);   { Procedures to Define Items in a Menu }  PROCEDURE MNU_ItemI(ItemName:STRING; General,Number:INTEGER; 4HighLimit,LowLimit:INTEGER);  PROCEDURE MNU_ItemS(ItemName:STRING; General,Number:INTEGER);  PROCEDURE MNU_ItemO(ItemName:STRING; General,Number:INTEGER);  PROCEDURE MNU_ItemM(ItemName:STRING; General,Number:INTEGER; 4MenuName:STRING; DispSubItem:BOOLEAN);  PROCEDURE MNU_ItemH(ItemName:STRING; General,Number:INTEGER; 4Digits:INTEGER);  PROCEDURE MNU_ItemE(ItemName:STRING; General,Number:INTEGER; 4Redisplay:BOOLEAN);  PROCEDURE MNU_ItemC(ItemName:STRING; General,Number:INTEGER); PROCEDURE MNU_CopyI(MenuName:STRING; Number:INTEGER);    PROCEDURE MNU_Show(MenuName:STRING);   PROCEDURE MNU_Loop;  { Procedures for User Screen Output }  PROCEDURE MNU_ClrScreen;  PROCEDURE MNU_Error;  FUNCTION MNU_YesorNo(Prompt:STRING):BOOLEAN;   { Procedures for Item Name access }  PROCEDURE MNU_GetIname(MenuName:STRING; ItemNumber:INTEGER; 7VAR ItemName:STRING);  PROCEDURE MNU_PutIname(MenuName:STRING; ItemNumber:INTEGER; 7ItemName:STRING); 7   IMPLEMENTATION  MNUUNIT  btpupt p! !tp t ptprhpt! p! Ȗ+b,Pbi`!v!b bp .-+b-Pdhi!  zbi xh, Ė.,,c/P-ąjjzcjjcbcb"!"{hi!  y{.i xh- yĖ0E2mrtpT,ZPbXP,` t p,t ph wehdehąhehi!!,!b!V!U!!W!! !w!yĘi[}UP,PbPU` *t pUt p$t ph wehąhehi!!,!b!~! ! {! }! ! ! y!y!yxĘi',`w +h,+-ć-y, , -yć,,ć,-| &-|-~+Ċa,+aĊ ąi h Ċi i-yh)t ph} ,7t phzt pAt p+b0P`w i!!b!/!.!-!,! 1+b.P`w i!!b!-!,! /"+b.P`w i!!b!-!,! /lT,ZPbVP`w i!!,!Y!X! b U [+b/P`w i!!b!.!-!!, 0+b/P`w i!!b!.!-!!, 0+b.P`w i!!b!-!,! /.*a,Pa+` x -)`*P`jj0Gt p`t pRt ptpj{kj~.c+) ``` p`P ).gaYPjhky|0as aPky}++ 1+as +0+as 2 aZPa\Pky~Ձky},,I,}9.,{--.-y{0.-x-. a-yyPaP'^t pky}t ptp0ky{aiPրja ga ȅk|k|aP.hkՃk|sc-kyj"|H"~B"}a!!}!~.j~."{/"z0st p"}t pj~."{/"z0"|1hkxkch kjuphj jiu ss!oOt pjzt pt ps!otpKt ptp!rtsos!stt  tusqrstsj"j|wwwwwqlqmpxyj{h""j xh! Ė ny2r tptpx 5t5tw wupx 5 wuj|t ptpx5j|t 5ttpx5tqnj"&soi!'!q"k#uյ#` #A#l[#$ 0#lL#$*lB#%#l8#& a#&l&t pjzt ptp $ !rt "ʚ$upt p yyt px5$u5t 5 yyt j yym% %upx 5 %u upx 5 u | |t px 5 |t &j jupx 5 ju!s\t upx 5 u|upx 5|ut tupx 5 tu!i.tpx5t"j tpx&5t5t 5t5t5txy<2 qrtpt pzt ptprv upt p`t ptpt p 2tptp4 /gh`siky|kyj`s奁g`si gg t p0"}0"~2gt p"~tpt p"}tpPx`s奁g`si gg t p;s !gt pց tpffwfąfĊ-fxwfĭfĭĭffxffjąkyh {/ z0 } -/2 qrtpkyyt p t pPt pt p3#g!"c-kyhj~. {/ z0 |1c-kyij~.!{/!z0!|1!{j{h L |B |: | | / | | ȅ2" j ɔ  |t p xh-kyhj~. {/ z0 |1ky}cc-i2qrqr t p`t ptpՐ ! c3"pj& a z aAhj{k!允kk{ ikxk!+ky|k#$#%#&#'  =2 qrtpb@5 p0up t pzt ptprvb/t pzt pt pzf9zs 5z pG2 qrtpup<t pzt ptprvb /bx up t pci!*-hc!4W2*kj kɔ k|t p tpg2qrDt pncc4g !j}c3c#4!cj j{kcskxkfc\"X-hQj~.h-c@f1fz$fzz hfąfyfyf-ccցX 4"2r tptpn,c-Phj/ct p upat p!Y!y!up/jD!N!n j!up,tpt pup bt ph"Ԗtp.*a-Pa,` + yP.T,XPbUP,W` ) yi!b!b !bbs b y ybPY?<`r;ɥp;ɥo<ɥ2<5a dehijkfcn43xb( bG5 p7tpupgt pzt ptprvb5  Fatal error  in menu systemDuplicate menu Could not find menu for copyNo menu defined before itemIncorrect item for menu styleCould not find Menu for displayyOnnOffCould not find menu * AYCould not find referenced menu Menu  is  characters too wideeToo many items in menu  -  - 'Select Menu item : Error writing to file , Type space to continuee  Illegal integer valueValue out of range  to  Illegal hex valueONNOFFMust enter ON or OFFF~: 'Select menu item : Error closing previous file File for printout: .TEXTCould not open &Warning - item will not fit in displayy^Y or N? Error closing printout file \wOE_wOkR<3 n _  frU8 (*** FILEOPS GOTOXY STRINGOP HEAPOPS EXTRAHEAEXTRAIO PASCALIOSIOUNIT SCREENOP L   TYPE "ATT_Events = (ATT_Key,ATT_TrmQE,ATT_RemIn,ATT_RotQE, 0ATT_ParQE,ATT_PrtQE,ATT_Break,ATT_Schd1, 0ATT_Schd2,ATT_Schd3,ATT_Schd4,ATT_TaskR, 0ATT_Ex1In,ATT_Ex1QE,ATT_Ex2In,ATT_Ex2QE, 0ATT_Ex3In,ATT_Ex3QE,ATT_Ex4In,ATT_Ex4QE, 0ATT_UKey,ATT_Win,ATT_Floppy,ATT_ComIn, 0ATT_ComDn);   FUNCTION ATT_Lookup(Event:ATT_Events):INTEGER;   IMPLEMENTATION ATTUNIT  "!"!" """#"`p`x$#"!"")"+"-" /"րu>"o$"i%"c&"]'"W?"Q("K)"E*"?+"9,"3-"-."'/"!0"1"2"3" ="ր!-3:AHO }    FUNCTION SIO_IntRd (VAR Cursor:INTEGER; VAR Source:STRING; VAR Result:INTEGER): 4BOOLEAN;  FUNCTION SIO_HexRd (VAR Cursor:INTEGER; VAR Source:STRING; VAR ResultH, 4ResultL:INTEGER):BOOLEAN;  FUNCTION SIO_AlphRd(VAR Cursor:INTEGER; VAR Source:STRING; VAR Result:STRING): 4BOOLEAN;  FUNCTION SIO_AlNuRd(VAR Cursor:INTEGER; VAR Source:STRING; VAR Result:STRING): 4BOOLEAN;  FUNCTION SIO_CharRD(VAR Cursor:INTEGER; VAR Source:STRING; Check:CHAR): 4BOOLEAN;  FUNCTION SIO_ByDlim(VAR Cursor:INTEGER; VAR Source:STRING; Check:STRING): 4BOOLEAN;   PROCEDURE SIO_CharWt(Value:CHAR; VAR Result:STRING);  PROCEDURE SIO_HexWt (Value:INTEGER; Digits:INTEGER; VAR Result:STRING);  PROCEDURE SIO_IntWt (Value:INTEGER; VAR Result:STRING);  PROCEDURE SIO_Fill (Count:INTEGER; VAR Result:STRING);  PROCEDURE SIO_Upper (VAR Result:STRING);  PROCEDURE SIO_Suffix(Suffix:STRING; VAR Result:STRING);   IMPLEMENTATION SIOUNIT 3k"x! !"xk""xĖ+b,P0i/x.Q./xhb b 0//xĊi*b!b bpb 0//xĊiii!Ԡ/ o$ijh&%-j &%+&x%(%&xk#h&&x$$x #0Ċii! o"$$xĖ %$h'x&[&'xj"G ''x" 0i"A ia i$xk%%xc ɢ$$x"!Ċhh Ԙmh$x#!#$xi! m$$x!"hh Җ$#"mpmh$x##$xi! $$x!"hLh Ԗ?#,#jh "!# i!a!z # !aA hږ{P p`P` {`r`{`{``지.**Pr*{r*P지. r46`s5nf5Prf`ZrfP6 P !ȖE&&2'k&li!$&c!h 0 jA j"%!iՖz||Q)`|`| p{**{Pr*`r*P|~~~"du T OSUTIL STRINGOP    TYPE "TAD_Style = SET OF (TAD_Short,TAD_Long);  TAD_Ptime = PACKED ARRAY[0..3] OF 0..255;   PROCEDURE TAD_TimO(Hours,Minutes,Seconds:INTEGER; Method:TAD_Style; 3VAR Result:STRING);  PROCEDURE TAD_DatO(Day,Month,Year:INTEGER; Method:TAD_Style; VAR Result:STRING);  PROCEDURE TAD_DOWO(DayOfWeek:INTEGER; Method:TAD_Style; VAR Result:STRING);   FUNCTION TAD_TimI(VAR Cursor:INTEGER; VAR Source:STRING; Method:TAD_Style; 2VAR Hours,Minutes,Seconds:INTEGER):BOOLEAN;  FUNCTION TAD_DatI(VAR Cursor:INTEGER; VAR Source:STRING; Method:TAD_Style; 2VAR Day,Month,Year:INTEGER):BOOLEAN;   PROCEDURE TAD_Pack(Day,Month,Year,Hours,Minutes,Seconds:INTEGER; 3VAR Result:TAD_Ptime);  PROCEDURE TAD_Unpack(Source:TAD_Ptime; VAR Day,Month,Year, 5Hours,Minutes,Seconds,DayofWeek,Julian:INTEGER);   PROCEDURE TAD_Fetch(VAR Result:STRING);  PROCEDURE TAD_Set(Day,Month,Year,Hours,Minutes,Seconds:INTEGER);   IMPLEMENTATION TADUNIT ?4*/h`/Ps`Rs`P* .`33E0*3 ``3 3 33 33  /r3/r  :/r2<22 0/r2/r  0):/r1<11 0/r1/r  `/kc/Psc`TscP3,*|h`|Ps` Rs`P*p{}Յ` Pl` Pf`P]`PT`PK`PB`P9`!P0`$P'`(P`-P`1P `6Pր;}`}}   |r|r  /|r  0|r|r  /|r~d~~ 0|r~|r  ,}ը|**|Ps*`s*Is*P   |r|r  |**|Ps*JRs*P~d~)~dˏ ~l~~~~|r  |   |r|r  |**|Ps*LQs*`s*Ms*P~d~~ 0|r~|r  2`N 5?`P 9`T 0`X '`\ `a `f `j րo4`ȇ3me3Pse`YseP5/hm5xk54xMrl54brP""F54:r;54ar1!!<&54:r54`r <mm%[3Tm54yrlfP"" 354fr)fr fz m" jf| m" " j%2"ć1!ć0 65#65^]~rh ^]r hhhP ^]r7.Ȉr 0sˏ hh^]r^]r2,dh!ddˏh \[ ZĊ[ĭZĭYĖXm^xk0Pn ^]-r! ^]-r > ^]/r."i!!  ^]/r  %#[xZxm[x ZxP m%__^#Ė^ -l--d/. xm.-ˏ%mo'n-&-l-ˏ&'%-$ (o(ˏ,<+*k#',Q%3-$j"%-$i!-$h)#)")!) Ȗ  ˧k ˧j ˧i ˧h, !"#- !",x<. !-x<Ā .xl,,x<ˏ--x<ˏ..xˏ$on&m$ˏm&%+'%xˏxn/'%&dˏćx&*xćx;/xˏxćxćxx xxćxx xĖ < p ˧ ˧ ˧ ˧2 p edcba`gf%$#==r "! == =Ps cs P= '' && %%d$$##<""<'&%$#"``p | Ć Ć <Ć [Ć yĆ Ć Ć Ć  Ć  Ć  1Ć  OĆ  nt??? PM AM??????JanuaryFebruaryyMarchAprilMayJuneeJulyyAugustt SeptemberOctoberNovemberrDecemberr  , --???SundayyMondayyTuesday WednesdayThursdayyFridayySaturdayy  AMMPMM  ,,$JANFEBMARAPRMAYJUNJULAUGSEPOCTNOVDECC No time was set. xm }h*** STRINGOPSIOUNIT      CONST "Win_BadMax = 63;   TYPE "Win_NameType = PACKED ARRAY[0..7] OF CHAR; " "Win_BadTracks = ARRAY[0..Win_BadMax] OF INTEGER; 2 "Win_DevMap = ARRAY[0..15] OF 1RECORD 3BaseTrack:INTEGER; 3TopTrack:INTEGER; 1END; 2 "Win_DevData = ARRAY[0..15] OF 2PACKED RECORD 4Name:Win_NameType; 4Dummy:0..255; 4System:0..255; 4Data:ARRAY[0..10] OF INTEGER; 2END; 0 #Win_PromInfo = PACKED RECORD 4Heads:0..255; 4SectorsPerTrack:0..255; 4BytesPerSector:INTEGER; 4LowReadCounter:INTEGER; 4HighReadCounter:INTEGER; 4StepCtr:INTEGER; 2END; 0 "Win_DiskImage = RECORD  DevMap:Win_DevMap; 4BadTracks:Win_BadTracks; 4Dummy:ARRAY[0..154] OF INTEGER; 4PromInfo:Win_PromInfo; 4DevData:Win_DevData; 2END;   IMPLEMENTATION MWINUNIT   *~y ^"&'}00J011&`1 1211҇y0'"&-#,,, + 22S,+ )&+)ć + 瀂+ )ć))+~+22C  xx..*- .&Ċ .-ć,-~,6--&( ( p (pM!,,,*ć*~,)//%/}Ր|z/և+#,,#,* ć* x~,#%D)///*|ć*P/!,,,2 ć2~,! `sjĭi`p`  l j""#si!p p"""ih !"   " " aA hޖY~Y YZ ZdZVs[[Zp p.dZWs\\Zp piVZVWZWYZY|h鄂qio.Zre2riis阔 _e鄀鄁阀  rp(鄀鄁阀 邁  er erp p阐mS.irp pik4  # i  he mqW i!!!ѐ!xiWWd X j""釀l$ժ`$Ք`$p$x$p$xVp$Wć瀐${Y$xV$Wć`$$y瀐$yY$yY$lNx чXĊ.Xs\\p piXXxjk'& W 1  mer.r鄁iere c # ]^ _`abe##դWbWWchbn]lkfjh臂ihW#釀ԇWćՇferere#s\\p p阐ertlsiscs]sWsQsKsE s? s9 s3 s- s's!ssss sց9.rerr Warning:  unit not foundSEGMENT KERNEL USERPROGKERNEL Using  from Including  as segment of  from .TEXT.TEXT*SYSTEM.LIBRARY*SYSTEM.LIBRARY.CODECopy updated file ? @@Copy to what codefile? $$.CODECopying  to  in use. File not copied..Copying complete. (( blocks copied)*SYSTEM.PASCALL*SYSTEM.LIBRARY.CODEWarning: Library not founddInstalling new checksum into *SYSTEM.LIBRARY.CODEKERNEL KERNEL *** REALOPS KERNEL KERNEL USERPROG.CODE.CODE.CODECopying  to Copying complete. (( blocks copied) u S ? p 1+Ew@[  EXTRAHEA STRINGOP PASCALIO HEAPOPS CHKSUMOPGETCMD CUPOPS OSUTIL EXTRAIO FILEOPS  SMTYPES  @CCopyright 1983 SofTech Microsystems, Inc.  'LN    (* #Uses ({$U sockets:sockets.code } sockets (sk_netaddr ); ( ( ( (  *)   {$L-}  "Uses ({$U sockets:sockets.code } sockets (sk_netaddr ); ( ( (  {$L^}     Const (sm_max_table = 50; (psem = 'psemshare'; (pseminquire = 'pseminquire';  Type " / "sm_string = string[15]; { semaphore actually only 15 characters } " "sm_long_string = string[80]; " "p_sm_owners = ^sm_owners; " "sm_owners = record 0owner : sk_netaddr; 0next : p_sm_owners; .end; . "p_sm_table_rec = ^sm_table_rec; " "access_typ = (shared,exclusive); " "sm_lockrec = record 1access : access_typ; 1semid : sm_string; /end; / "sm_table_rec = record 5lkrec : sm_lockrec; { semid and access } 5numowners : integer; { number of owners } 5owners : p_sm_owners; 5next : p_sm_table_rec; 3end; 3 !sm_table = array [1..sm_max_table] of sm_table_rec; ! !p_sm_tabl = ^sm_table; ! !p_inq_rec = ^sm_inq_rec; ! !sm_inq_rec = record 0lkrec : sm_lockrec; 0numowners : integer; 0next : p_inq_rec; .end; . !sm_inq_list = array[1..sm_max_table] of sm_inq_rec; ! !p_sm_inq_list = ^sm_inq_list; ! !sm_rqst_type = ( slock,sunlock,sclear); ! !sm_rqst_header = record 4typ : sm_rqst_type; 4rqstor : sk_netaddr; 4{other stuff } 3end; ! ! / !sm_result = 0( sm_okay, 2sm_full, 2sm_ill_rqst, 2sm_ill_owner, 2sm_not_found, 2sm_no_resp, 2sm_too_long, 2sm_error ); 0 0  sm_inq_mssg = record 2server : boolean; 2nummsg, 2numrecspermsg : integer; 2rqstor : sk_netaddr; 2result : sm_result; 0end; 0 0  sm_rqst_rec = record 2header : sm_rqst_header; 2lkrec : sm_lockrec; 2 2result : sm_result; 0end;  Implementation SMTYPES @ SOCKETS  xCHGROUP bBCCopyright 1983 SofTech Microsystems, Inc.  'L  "{ Uses Sockets, Chservices }  "{$L-} "Uses "{$U sockets:sockets.code} sockets ( $sk_netaddr ) , "{$U chservices.code} ch_services ( ${types} ch_result, ch_state, ch_type, ch_p_desc ) ; "{$L^} $  "function ch_init_group ( protocol : ch_type ) : integer ; " ${ allocates a group identifier and returns the value of the &identifier. A zero is returned if the group identifier cannot &be allocated. Protocol defines the channel protocol associated N&with this group. All channels associated with this group must &use this protocol type. } & "function ch_free_group ( group_id : integer ) : boolean ; " ${ frees the channel group so that the group identifier can be &re-used by the system. Ch_free_group will not free the group &id if there are any associated channels. A false is returned in &this case. } & "function ch_group_receive "( $group_id : integer ; $var con_id : integer ; $var msg : interface packed array[min..max:integer] of char ; " var lngth : integer ") : ch_result ; " ${ performs a receive operation on the group defined by group_id. The &con_id defines the channel that actually received the message. } &  procedure ch_set_group_timout (group_id : integer ; timeout : integer) ; " ${ timeout is in 60ths of a second. This procedure sets the maximum &time a group operation will wait for any message to arrive on its &member sockets. } &  Implementation wCHGROUP mb1%i  t i9i t t i#(h)th)t h  p)ti!h5!bth *" "&$#uhր "t"t  Ե)t (! !t! ta kPRSINGLECHUTILS CHSERVICSOCKETS   CHSERVIC  rCCopyright 1983 SofTech Microsystems, Inc.  'L "{ Uses sockets } " "{$L-} "Uses {$U sockets:sockets.code} sockets (sk_netaddr) ; "{$L^} $ "Type " ${ Type ch_result is the error return code of all channel service &functions supplied at this level } & $ch_result = &( cr_success, { operation was a successs } (cr_error, { unknown error } (cr_msg_overflow, { message too large for user buffer } (cr_busy, { channel is busy } (cr_closed, { channel is closed } & cr_net_failure, { network hardware failure } (cr_ill_protocol, { illegal protocol passed to connect } (cr_no_response, { no response received from other side } (cr_version, { protocol version incompatibility } (cr_msg_lost, { message lost due to buffer overflow } (cr_memory, { memory aOllocation failure } (cr_incompatible, { incompatible protocol parameters } & cr_too_large, { message to large to send } (cr_sending, { both sides attempting to send } (cr_receiving, { both sides attempting to receive } (cr_ill_group, { illegal group specified for connection } & cr_no_msg { no message in socket buffer } &) ; & " { Ch_state of one side of the channel. This result is returned &by the ch_remote_status procedure and is used to keep track of &channel state by the Ch_utils unit. } & $ch_state = &( cs_open, { channel is open } (cs_closed, { channel is closed } (cs_receive, { channel is receiving } (cs_send, { channel is sending } (cs_disconnect, { channel is disconnecting } & cs_status { channel is performing remote status } &) ; & " ${ Ch_type represents the protocol types that are supported in this &version of Chanel_Services } & $ch_type = (connection, { channel services generic connection } /single { single packet delivery } / /{* add other protocol types here *} / .) ; 6 ${ ch_p_desc is the protocol descriptor that is passed to the &ch_connect procedure to describe the protocol desired over the &channel $} $ $ch_p_desc = &record (case p_type:ch_type of *single: ,(s_max_rcv_msg, { maximum size (in bytes) of received mess } -s_max_snd_msg, { max size of send message } -ack_wait_time, { time to wait for acknowledgement } -rcv_wait_time : integer);{ time to wait for data message } ' *{* add other protocol-type dependent information here *} * 'end ; 6  " ${* if new procedures are added add to end of current interface procedure 'list *} ' $function ch_connect $( &local_addr : integer ; { address of this side of channel } &remote_addr : sk_netaddr ;{ address of other side of channel } &group_id : integer ; { group identifier - optional } &protocol : ch_p_desc ; { protocol to be used over the channel } &var con_id : integer { connection identifier of new channel } $) : ch_result ; { result code of operation } & & &{ ch_connect attempts to connect two sockets to form a channel. Both (sides must call ch_connect within 1 minute of each other for this (procedure to work. Con_Id is the connection identifier to be used (in future calls to ch_services procedures. If the channel is to be (a member of a channel group, then group_id should be set, otherwise (a zero should be passed as the group identifier. } ( ( $function ch_remote_status $( &con_id : integer ; { defines the channel to perform status on } &var status : ch_state ; { status of the channel } &var message_count : integer @{ number of messages in other side's buffer } $) : ch_result ; { result of operation } & " { ch_remote_status attempts to find the status of the other side of (the channel defined by CON_ID. It will attempt to allocate a (temporary socket to do this. The status code returned is defined (in the set of constants at the beginning of this interface section } ( ( $function ch_send $( &con_id : integer ; { defines the channel } &var msg : interface packed array[min..max:integer] of char @{ the user message } $) : ch_result ; & &{ ch_send sends msg to the other side of the channel. It will not (return until the message is acknowledged or an error occurs. } ( $function ch_receive $( &con_id : integer ; { defines the channel } &var msg : interface packed array[min..max:integer] of char ; @{ callers buffer area } &var lngth : integer { byte length of the message returned } $) : ch_result ; & &{ ch_receive waits until a message arrives on the channel or an error (occurs. } ( (  function ch_disconnOect $( &con_id : integer { defines the channel } $) : ch_result ; $ &{ ch_disconnect trys to 'bring down' a channel } &  Implementation CHSERVICbQ c.-//#s p`*u J *p j"" "" /i# ctiր!! -  s`*u$`si!!mp #"si #xii! s s!m&ash  op! !$"thր o !s!s`'ash  p! !%#"thր !s!s"ash  kp! !thր k!s222hޖvmM *** EXTRAHEAPRSINGLECHUTILS SOCKETS   PLOCATOR  rcHCCopyright 1983 SofTech Microsystems, Inc.  'L   {Uses Sockets}  {$L-}  Uses {$U sockets:sockets.code} sockets ( "{types} sk_netaddr, "{procs} sk_open, sk_close, sk_set_timeout, sk_vgetmessage, sk_vputmessage, *sk_vputbroadcast, sk_nresult, sk_accept_broadcast ) ;  {$L^}   Type  "{ lo_result is the result code for Locator operations } " "lo_result = $(lo_okay, { operation was a success } %lo_unknown, { unknown socket level error } %lo_socket_overflow, { socket buffer overflow } %lo_open_error, { could not open required socket } %lo_memory, { could not allocate a message buffer } %lo_put_error, { could not PUT a message } %lo_buf_overflow, { received message too large for buffer } %lo_invalid_msg, { received an invalid message } %lo_no_message { no response from other side } $) ; $ !  {************ Acceptor Procedures ************}   function ac_initiate  ( !desc : string ; { broadcast service descriptor } !queue_depth : integer ; { max # of requests that can be remembered } !msg_size : integer ; { size of the requests (in bytes) } !var accept_socket : integer { the socket to receive the requests }  ) : lo_result ; { result of the operation }  !{ ac_initiate should be called by servers to prepare a socket pick up #location request messages. The DESC string is the broadcast string #that defines the service provided. The QUEUE_DEPTH is the number of #request messages that can be queued in the ACCEPT_SOCKET buffer. The #MSG_SIZE is the size (in bytes) of the USER PART of the request message #expected. The ACCEPT_SOCKET is allocated by the ac_initiate procedure #and should be used as an input parameters to the other acceptor #procedures. }