IMD 1.06: 5/10/2005 16:33:50 Sage Build disk, 3 May 1984 BOOTG&7_B+NA$NNM}?<A/0|/?+N(fMfaRA?7AK/ 0|/?+N(fbAKαfZ?+"x0]/ /T'I'mP 'mTmX?+N(f(kN.xpNNR+MC~0+X@aWfarA&0X $0BXp ANNJhfJ+g(+ g "+f"8m Am*D0|0<*Q8fA,NN M0<BQ MT0T  0X0XI$M8<DBC4:SBml :xf :r gTB0,T@mD0@0RCM'HA< 0BXp A$NNJhf kCp 0Q`@`;CA 0< Q~ `>:Ma*|.zBBBB/:/:B/:??&zNKA0 @Mo&X @Mnb0X6aDXa@a>a<a6a4SCfJgN N"MBVfB2-4-ANuSg(K`2Y0NuA`A`XNA`XAxNN NRNNJ+f SNpNNBIOSENDBOOTRAMDISKUCSD p-System IV.1 BootstrapError reading Could not find Not BIOS code in Copying to RAM DiskIllegal directory SYSTEM.BIOSdiskette into RAM SYSTEM.INTERP SYSTEM.PASCAL B4S42CoL  SYSTEM.PASCALSYSTEM.MISCINFOSYSTEM.LIBRARY SYSTEM.FILER SYSTEM.EDITOR8SAGE4UTIL.CODEq89ENDBOOTT 9:----- 5:;DK0045B 5;<------ 5<^ SYSTEM.BIOS ^u SYSTEM.INTERP+uSAGETOOLS.CODE WFORMAT.CODE{SAGE.PBOOT.CODE8 SAGE.WBOOT.CODE8  MU4.FBOOT.CODE{ MU4.WBOOT.CODE{MU.BOOTEXT.CODE MU.PBOOT.CODEzTMU4.BIOS T MU.UTIL.CODE MU.CONFIG COMMANDIO.CODESCREENOPS.CODEINSTAL.MU.CODEINSTAL.MU.TEXT BL.DSK.CODE  E.QVT102.MISC E.FD100.MISC E.TV925.MISCQVT102.MISCINFO FINISH4.CODE STD.MISCINFOTV925.MISCINFOFD100.MISCINFO TST.INIT.TEXT TST.INIT.CODEMU.INSTAL.CODEZAP.CODE  MERGE.CODE   USERLIB.TEXT TRM.SCRIPT.CODESYSTEM.STARTUP'MC.12.4 '9MC.18.6 9KMC.40.6 K]MC.18.5 ]oMC.40.5 oMC.0.2  MF.12.4.TEXT MF.40.5.TEXT MF.18.5.TEXT MF.18.6.TEXT MF.40.6.TEXTMULTI.FOUR.TEXTMULTI.SIX.TEXTMULTI.ONE.TEXTMULTI.TWO.TEXTMULTI.THRE.TEXTMULTI.FIVE.TEXTZAP.TEXT  MERGE.TEXT  FINISH4.TEXT BL.DSK.TEXT  WHAT.SYS.TEXT LMU4.FBOOT.TEXT{ B4S42CoL  SYSTEM.PASCALSYSTEM.MISCINFOSYSTEM.LIBRARY SYSTEM.FILER SYSTEM.EDITOR8SAGE4UTIL.CODEq89ENDBOOTT 9:----- 5:;DK0045B 5;<------ 5<^ SYSTEM.BIOS ^u SYSTEM.INTERP+uSAGETOOLS.CODE WFORMAT.CODE{SAGE.PBOOT.CODE8 SAGE.WBOOT.CODE8  MU4.FBOOT.CODE{ MU4.WBOOT.CODE{MU.BOOTEXT.CODE MU.PBOOT.CODEzTMU4.BIOS T MU.UTIL.CODE MU.CONFIG COMMANDIO.CODESCREENOPS.CODEINSTAL.MU.CODEINSTAL.MU.TEXT BL.DSK.CODE  E.QVT102.MISC E.FD100.MISC E.TV925.MISCQVT102.MISCINFO FINISH4.CODE STD.MISCINFOTV925.MISCINFOFD100.MISCINFO TST.INIT.TEXT TST.INIT.CODEMU.INSTAL.CODEZAP.CODE  MERGE.CODE   USERLIB.TEXT TRM.SCRIPT.CODESYSTEM.STARTUP'MC.12.4 '9MC.18.6 9KMC.40.6 K]MC.18.5 ]oMC.40.5 oMC.0.2  MF.12.4.TEXT MF.40.5.TEXT MF.18.5.TEXT MF.18.6.TEXT MF.40.6.TEXTMULTI.FOUR.TEXTMULTI.SIX.TEXTMULTI.ONE.TEXTMULTI.TWO.TEXTMULTI.THRE.TEXTMULTI.FIVE.TEXTZAP.TEXT  MERGE.TEXT  FINISH4.TEXT BL.DSK.TEXT  WHAT.SYS.TEXT LMU4.FBOOT.TEXT{ '),-12\569;<@fB"KERNEL INITOPS GETCMD HEAPOPS EXTRAHEAPERMHEAPCOMMANDISMALLCOMSOFTOPS STRINGOPPRNTERR OSUTIL CONCURREPASCALIOEXTRAIO USERPROG K7 <   #  2 KERNEL 6Copyright (c) 1981, 1982 by SofTech Microsystems, Inc.?GOTOXY ;m#OOk#k"j"j#"``=`" `# `pt 9SCREENOP KERNEL !`"! kFĭĖR0 i k~jl"o' '}W' m)}' )}' )}' )}m$%l#ihn!&'{0!{0-/!h!i&/(yj"~Ҏ*x+$-&0 *p+pl#i#ko! ( '~!')y((|)y)x)x)y))( m'}( '}( '}( '}m$%l8! ($*x+-ԅ**x$Ė ..}k.}kld.zl17F(/|- +p/(lzk...}odcn'&-&g..bc c&'j.}.}".} (.}b(jb.~ih!/x/y !he//%/y!%/ .}/ .}/ .}/ .} (ćyi!.~ҍ 1 /e//%/y %xh .~..b. 7.9h""|" ~" ~ ~" ~"! "Ė$ l)m%zn$$}i$}ijb$zj7oF '(j(zi& k$}& $}& $}& $}kb$#`$$$#%z1;$a#$$#`$%z1#`+%z1$$#$ 7$&`&&0) p7jFk$("|--"$(h#z `#i"#!ĖM +0 ((n((xm`( 8  }{zo zo' ))}#y!*셀i 7 0! "2*z*z}"d+*z*z}ą'2d+ d+ր))}(%(&.u a`p$u(/z. .x*-բ/. .x*-i!ռ/!.! .x*-h ՜/ !.!  .x*- /. .x*- ok)Y #'ko /! '#'0.! '# .x*+- ('+' 'o,Թ) /. .x*-k/#.# .x*-l$-#k/#.# .x*-m%/%$l/. .x*-j"B." .x*-j"*/""j." .x*"-j/"-ҖL)`*Pp"``p` `p+_a#`!" lc%b$`#"#"i ! h nb$a#`"! mb$a#`"! mb$a#`"! m4 cj) c-j) 'h ) i( !! c"!0"j) h cp I)`*P``p+z)h OOha pa p)4``pp"`p`0,⼃ ` i4 e a +0 $ֆ+0+ ~ e0+ ֆ+5h +xh +x > --REBOOTT*STACK OVERFLOW***POOL OVERFLOW*PRNTERR Exec err #  Type to continueepo= o==/oS?'%+ c:]B:*** HEAPOPS GOTOXY PERFOPS GETCMD INITOPS FILEOPS SPOOLOPSCOMMANDICONCURREPRNTERR REALOPS DEBUGGERSCREENOP INITOPS  8b`p`i```!`bp"k b + y@h+ i !i*!Mi!)+! b*+! x **xi!iҖZ)`PB B B`PD D`PEEI`(PLL`:PLɀBLɣL`RPcɀ_c`fP`y`p )u4zapp4zp r44a` p z5 pu(uLu BćuDćuEuMuRuSćuTu%Z u" u" ʛTu"țTu"pp"erPrOěO ěOděOěO'ěZĚʖu`d&p"p & `h1(8ɚ ɢ''v'     /((/W( 000(  0ć0ć0(ć0ć0(( /((/( 00|թ(p"p՜(uՓ0| 00(z,@0`u`%u'!`u(| 1&&1+|&  |& (u&&̇((/( <@@)u() p D) +ɤ/**/++*@ȇ*ɣ+**̖1;Ě:Ě9ě;ě:Ě ĚĖ<՘6; w`w; u: w`w: u9 w`w9 u;ě:ě w u wu$(*u*8&.` '    &  *`u%*ć%x'* &**u*C   (6&.@@@ &   ,   uu;u:u`;`u:`u(`9`u߂;ě:ě9ěěěĖ  '`$`&`(`*`,`.`0`2`4` 6` 8` :` <` >`@`Bć(  $$""$""D"ć""ӛ(sNr (t r  (!rH @ M   P [$_`  $   d D - `D - D  m  EEʖ( +Error in FIRST SUBSIDIARY VOL NUMBER field.Error in HAS SPOOLING field..#Error in HAS EXTENDED MEMORY field..Error in MAX NUMBER OF USER SERIAL VOLS field..'Error in MAX NUMBER OF SUBSIDIARY VOLS.$Error in KEY TO MASK KEYBOARD field..Mount System diskSYSTEM.MISCINFO*SYSTEM.MISCINFO not foundd[IV.13]*:SYSTEM.ASSMBLER*:SYSTEM.COMPILER*:SYSTEM.EDITOR*:SYSTEM.FILERR*:SYSTEM.LINKER*system.startupCan't find system diskkCONSOLESYSTERMGRAPHICPRINTERREMINREMOUTTSERIALx:*SYSTEM.WRK.TEXTT*SYSTEM.WRK.CODEECONSOLE::SYSTERM:: *USERLIB.TEXT???JanFebMarAprMayJunJulAugSepOctNovDec?????????REALOPS Welcome , toU.C.S.D. p-System [IV.13]][IV.13]Current date is System re-initialized ZeuO  *** EXTRAIO PASCALIO STRINGOP HEAPOPS EXTRAHEAFILEOPS COMMANDISPOOLOPSSCREENOP GETCMD *Dbfhi!  zbi |h! j)`*Pup" `  +y ipL k h͚} | yi!xlj"$b!m%"xP%"xn&zo"%%xx7&y!2'y-'}'k' (x(y(y(xĚ~&z (y"jhyĘ#p  m)`*P2`P p+"xi`a`a" Ė"xi`a`a" ĖC%j"Ռki!#Y"!l$$`"`! "p!`"瀀! "`!"瀐!l$$$$!i"А"Ґ"ѐ"Ӑ"Ԑ"Ր"p"!#xi`a`a# c#"jږ(  p##hhD "wi! p" "# #  p8#h = i! i ! j!j$"pd$"ĭ" "h\ h  h! Gs( DĄC $  ! "#ph-&& a!'a/ '' .!a!/ Ą/!a!Ą0!a!'Ą1!ćNj"NJa)!on'&'OOz)nO|o& d"'Ċ"j/Nj"Ne-a!a!"CsCOO O O Osp$$sCOO< O O Osp$$7COO@ O O Osp$$CEw%%pD-- -."OOC ćO2"CĊ+."OOD ćOD 2"D"ja'!/P!dpC'!/Nj"N=."OOC ćOC 2"CĄCCP"j0ć/&/Nj"N0""j /Nk#N )OOxPl$P՗O$x (R 0(ćO$*(/*QQ,ćQ)ćQ1(ćQćQ* **{Ċ.(d(x O$***{Ċ O$$la0#OO,ćO)ćO1#ćOě͇0#Ą ))x#k E'Nm%N+!& aI!!1%OOćOćOEO IćO 2LxJćO KćOMćOćOćO .LćOćOĄMɄM OĊO%m4ć0yЄsxh  i!y !z!{s!xh"> p* h6ia  a  a  a7/-s.D `e6`6p$_ ``   `  n%j k#%#"{#$wi7pĭ7x! "{7x## u  >8ĭ7ĭ6   k#(##k11#h ba ! ( z(((((( ĭ!$b!p&l" $(!Ċ (!Ċր |h      ((((=("(( (| 0)p)) ))(|m%%%%ym(ĭPb')x y`' xfE:$ k ?7$  \&(*** STRINGOP HEAPOPS EXTRAHEA PASCALIO EXTRAIO REALOPS COMMANDIDEBUGGERFILEOPS SCREENOP HEAPOPS 3ߚ| sޛF$Ip$pH a7 aH!p$xII$Ik#Ip#x###ěFޖ ߚ| sޛF`I"` `  p%I"xi՘"rIpH"ěFޖ&p&nl`I'I b7 b'xՉ'xxm%.H'x&ĚH'x pH"pl'xy&l$;'xy&k%#%a'x&!#!'x a% Ia 'x`'''xp!ߚ| sޛF! Fޖ(W EXTRAHEAPERMHEAP EXTRAHEACaa`a`p(l$lFߚIob'm c7 c" "x cHpn"yn&%&mb"%$ Fޖ]1 3P5oikj2xml n2x&!Ս 2xh  aAh *j22xĄ 2xh 2x& 22xĊ; , #ko+#" _$5$ $l# i22xĊo22xċh%2x$o'65nJ"KPq  ~!!} !  ~ " Ցjol"yk#xmn&%$##&xi!!zl'o$&n$D#&xz!!y!!}' 塠!  '"|j"${b| ( (MMLI!JP ! Ոjol"yk#xmn&%$##&xi!!zl'o$&n$ continuess -%*** STRINGOP OSUTIL l,c-Pc/Bhcjcic0i c! c 0i h"-!/!/.& %Ph&n& % PP% Phkli!$,&O!xj#"k# h% "0&O!xn!i# %P% Ȗ.10߇0{0s0x 0shke 0xe l0  h e`ar0l0z$Z$ k#0s#0{0ć0 eZڡ e ȇ/eP1x0߇0ć0ޚĖ0t( -327688- 0(t8 *** PASCALIOSCREENOP CONCURRE `b par! !n&o" '(y'(z'({'+s+p''+p''**'*& & '}' c!l)ěLc)e,%,!ĚNNLޖ LњNNJޛLc##pj#"s``ߖDLߚNLޛJߛLߊLޚp?ih !  p hLtd *** EXTRAHEAHEAPOPS  PASCALIOh% #$pi!%K!j! %" #"$pi"%! ! "!j%" #"$piٚ! i! ! i! !  i(m%n&ս% % drċjh $ "$ x&x$ y&yj h"Ċu $ $ k$ xk&y#& K$ o'#' % $r p-%%%{%&#& &  d i     zi ޖ    yi ޖ8:i=5565zć5xȋ=kxx x k 5 kć=d 7785 7 8ɢdd7)5 5 jj!=yxx w5  <;ȊZ"& p$x ߄x"<;p އ<;ڡ<;w<;#"#<;p#;<5|*d5ć5 Ā =xȇ<;ȇ9 <;ath;;!i:!>=!! !!x!|sh !!x!|h Ė   ޖ !!{! !x!{!Ċ!!ޖ=  y  {  Ċ z  ޖ%%{%%y$ȊU% j$%xh" h#k$`ct% %$ #si %$ #"i$ !%y $$Ȋ%%y%{%%ޖ ,`u+`uĖ K` pp^   `s4    p  `p ` !!h G  ! x |s1  p x |p  | x !ޖ###`!T! #!  ip:##"!s-#  # # p # "!p# !"Ċ #ޖb߇Ոzbh  hpKabć ! s7  p b p  bĊ ćޖ h! v'`u&``n(`&   k\k !ra*** SPOOLOPS COMMANDI SMALLCOMEXTRAIO OSUTIL SCREENOPSOFTOPS FILEOPS  eEXTRAIO ^h% #$pi!%K!j! %" #"$pi"%! ! "!j%" #"$piٚ! i! ! i! !  ##h O!C!#!t x"p'  # xr xp  xĊ #ޖcg+j"\"??i"i!h.c.p ) .-, *p.-, *p. ,-x"!j, *! +" )i'ċ)j"&"Փ"k%"m#x%h& && n &#y$)t &#yi" &#y"z#y n&Ċ}" ('& $" n& $""%&""""ĊB" ('&%$" m% $,%m%%('%pm%m% "%&Ċ ! x)ޖ u ^[*** PASCALIOSCREENOPSOFTOPS  !USERPROG'a#`!" l/z. .x*-բ/. .x*-i!ռ/!.! .x*-h ՜/ !.!  .x*- /. .x*- ok)Y #'ko /! '#'0.! '# .x*+- ('+' 'o,Թ) /. .x*-k/#.# .x*-l$-#k/#.# .x*-m%/%$l/. .x*-j"B." .x*-j"*/""j." .x*"-j/"-ҖV`aĈ! !l$m%'%%%%&% $ b(!kj%(b v!xh!````!x! ĖV`՟```x ``x```x ``x`p`+`݇W```lcc$&mi!%c!!i譅cchcccdcׁY pcׁli!$cׁmc9!x!xz eĈ!!xċ%`!ժcĈ#n&&&&&& %!y& %!xY& e%`!& %瀐!xĊ& &&&%瀀!bĈ"n&#&&Ĉc!"!icׁh cիc p $`!!!!`ʖwa%xMjh "?! k# # # #l $ $ $ $ $ $ ho xz dph UdUpU yU y U U XXUX  XX݇dn`UX xp~ąąxąxąćU XXUX  XX݇UX xYh ećedćU ep ᥀󘤅TWW0aׁ WgWxWWc[[`a[ׁWW: W"瀀Wɥ󇆟`W W&f瀐Wxćfgĭh 瀐Wz瀐WzVVVćVVᇅ瀐WzVVxpxćxx{Ċ6fgVVVćVVᅀΤcZZaZׁVVVWZ[h`V#瀐Va[ׁ WhhzZVxS瀀VSćSćSfSz VSz瀀VćSz ećSS{ćVV(ZZ[WxTĄ[WxTWyxY`y_瀐Wy^^mdn`p``^]]B\\Ei\n_xć___dn`p``_\\i*>[WxyxbmVV[WxybpcZZՄVViaZׁ ViI[WxymZVxĄZVxZVx{ćVVZZr]]WW[[χTͥͅ떆& 0ĆFk#{l#$#{##{$$$$$x`a #{! !i!im% 7n&#z!%}%Ċ%%}Ċ %#z!%}%{%}%}%{%}j%%{"Ė h k# z.k# |h# 2p l$ z$$~ĆFm7n$~o' ' i$}' $}' $}' $}i$${!$ &$'$' p'j '''|($~($~Ė  Jh   00Ė p"ąx7aĆx !a! Fa 8` yyє Too many dicts in SYSTEMMSYSTEM.MISCINFO SYSTEM.PASCALKERNEL USERPROGKERNEL *** GOTOXY missing unit GOTOXYt-= t FILEOPS / 6"`p`i```!`"pO$& ' %gpxW(( !g  Ą   //M c Ջhɣi! %! !hcih!i  D 4 ć.ćć%ć% '&bf h i!b$!!!!!! h ɣaeh a  h oV.[PZYXćW]i!.-.!j" .!u" .!"aA!i˄.ն.*Z@.u.ui!ZZ<!.u!Z.d!ud.!uZO.ui!!i.i!.!Y.d!ud.!u.k#_.uh k# Fki.!j"Zk# XXx "0!i! #! .!*Xk#]#Y՝.YdYudP.WĊz.WĊj.WĊZ.W ĊJ.WĊ:. WĊ*.#WĊYdYud&WĖ\`!!!!`ʖaa%xMjh "?! k####l $$$$ $$  hY  Ɂڡl$ p Ɂڡl$Վa`p  ,  ɡl$epp  l$Nćykj"ppl# "p$a p$)Ė m%n%* o%|Fds%$ěF*%|p%xi!#%| (y(y %ӊi(x&& (&(թ((((MՉi('~h (G%| )))y)x) ) )  ɀd i %|  h!+(k%*%|#p%xi%!#'('(*% '(b( p! ! '*'%v%Ӗ 2 'ji)q)#)Ajhm)%Zj" )%0h%m%)"" i(!塤 !jh h) j" "Y |Nnj&|)&| dcp#&| ,j"!!j !)&| jpj"((h h n&| )&j" "3 n &)&&||'|d'x p nnih # !## j"%$"  ɀdi n hЖJ +,  Վd+ k  #) ()# d #k(V ) )ɢi#j) k +, #!( # "*~)x* #k( # + ,) h *+ + h+) +))Ė # i!$jh "# # h#$ % !!Ė !"h #   # i jhmTl"k### y# x#k"" y $%% i<k#"# x# y#i"k#k! " y"i"Mi!9! yn&o ʄ ʄʄ df! ! #h      "!!ᰠ x ! Ċ! Ċ !!Ė "i!!!!!!h !!!հ ! !!Ċ!!!!! h! !!!"~!  ! ! p !"! !#!!!!p! !#!!p !!&!!!#p! !#!!p!!!!!Ċ!Ė?BPě߇D߇D ċf de nf`i!ޛߛ! ċ&! ćć !ć fć|ć|| բ A jA"  ċ  " x"  ċi%m $% j"%/ " yx yćyx " ċY"ċM " ! ^ | ċ" ć! }ć%ʇ, ćʇʇ ʇAĊćՈ!ć"ćA  Ċ ćSćAI#p    p  #xp #xpDAćĊ|{DrćDxĚ!ފćDޛޖDz 'ߚ'l$$x9xՆ$_$m%P&3$$%  dn$$ $!$"$#$!$!p'$%  ɀd&$ b$ ċik!" #"! x%x"! y%yk!i#ċ!i&&"!  ɀd!" %" h ! " !!i"!  ɀd%  ɀd % D%$D % D % "! %%x$$% $ $ $"! $ $ " &$$ -$Ě 'ޛޖ!ߚ!h ! | {!r Ċ !ޖL&ߚ&}&k#l%#$#|`%#|%#|%#|@%#|@@i%#| % #| j"j!i$y$xh! ! "$  i$ j##### #!Ċ###!# # #!!#~#"<#"##  # # p # ##$x#ppg!#"0#  # # p # ##$x!pp*####{##!#!"Ċ &ޖU \:[].TEXT.CODE.BACK.SVOL.INFO.GRAF.FOTO.BADD  ( 93w?[U`- EXTRAHEASTRINGOPSPOOLOPSHEAPOPS PASCALIO ESCREENOPFS<``tK"! wkTrn"x!"!Ċ "x " Ėdh !   p ! ! pYY p}}||{{zz!h ! j!"#h # l%h# "<"i"<D!)>!  HyhRxhhb za {; |" }! u " !Ė;bi#"!z!|:ɰAc!zb!{!z# "!}: !z# Țu #" h y  yĊ y xCh y z  yĊ y xdh x xĊ y xh x { xĊd iy iyk$x#x#x $u ii$xh !# ɡ!# 塠 h m    =x x [ h  Ė#"&;#""{ih ! h#"u u ćx x ćx`Ζ!p"9Ě u  u `u `u j  Type > to continueetX9,(! UMC{4$GOTOXY EXTRAIO PASCALIOSTRINGOP SEGSCINIFSOdh ! !** !" d Ȋ d Ȇd "Ȇd !ʖ"$!  yh ! !** !"" ʆy "Ȇy !ʖ "/!  d*pypjh "   h)D:%ʆ:&ʆ;ʆ;ʆ;ʆ;ʆ;ʆ;ʆ* ۚۚ-jdȆd""""""""" %jky"" "" " " """" # # "dj"/_kc"scsc"sc 9_kc"sc"scsc"sc" sc ** ȆY pj" Y"ȊY Ț%ĆĆ:Ć:ĆĆĆq  }kPD* SEGSCPROFS*! i!i!jK`p`Ț`u : sm%%[%pl $$s sj%o*k z%"kq*u'i#nc$'n& 'p &(n'(o&#h ##'#pn& '$''po!'nn&ԝ%% v'&'&$ u $"'&oq q )? ):]?  (}SEGSCCHEwFS'&xh jdk`qaq冀;ɠu u5qy&xxq!&xli!$'! _u !i&xj P`qE &x:jq _v v'&x q vqj&&x"%%x"Ė!c ⼭ ۃii! wᱡ"wh ⼭ ۃoi!  i!  h"   !" ! h! u "uky i  ian ⼃h  $ #" n % n ! wᱡĖn`%`qd`qynyy$Ėj!`{!sj`d`{`(|{`sxĊ +l##"`# wK""!`kth  y   z  " ! k{ h" y z! !" {sk!k..uh+-. $%p+. ۃC.+. + . ++ ++`+ pP+ .p*.`+*p`+*ȭ*,f `%G v%v ⼚ۃVV-, gi" ~ h 1  ! ""!i!i! """! Ԥ!k T,UP.,wph #.ia a,S awph #.ia a,S awph WV UV`',`("++`P +U +(VVU V.Zw&t..u[$Ma!i `!hj "!" %"j" .w !.wV  zyx` zxp`ixĖ F!f ,!I"**Ċ="*"x""x*Ċ "*"x""xĊ "*Ċց,"x   a ՙhx2hcx4hSx7/hBx;_h1xBgh xIohxQxha x  aa),(,',x xxĭ &*h&xY [+~&x^ a+f&xd h+N&xk r+6&xu |+&x +&x +&x+++++++++t+g+Z+M+@+3+&++ +++++++++++}+p+c+V+I+<+/+"+++++++++++++y+l +_ +R+E+8+++++++!+$+'+)+++-+/+1+3+u5+h7+[9+N=+AA+4E+'G+I+ K+M+O+Q+T+W+Z+]+`+c+e+~g+qi+dk+Wn+Jq+=s+0u+#w+y+ {+}++++++++++{+o+c+W+K+?+3+'+++ւ ++ 0 ,`dc zx $Hb+ zyp z"$p b+*p z"p e+*p e gf))a,(! B ĭ  Y xy!x 0z "h`i```! k"k (⼀ۀۀۀۀۀ-h(* x))x'ċ x))x'ċ  x x))x'ċ x x))x'ċ 'p b p xbx2 xbx23 xbx2'p b p))xbx2Ċz* x+ x) d))x'Ċ\V'0Q&0L'&/ڡ'&18(o'2ڡ(o'1'%1yl +${+x$z*)փ5  x xzxzx x)պ p `,*p  ,)p (p a,*pxx!{ (xp f,*p&/xn&o.%xzxx/xxfedcb.)-/%$#"///x&'Ċ%//x&'Ċ a!j/!jhr {l$zԹ$ zbc" r yhrږrcih !J j"+" /"g "c" "g  h#{h#y #-j"    zy #z aĂ! aĂ! q 'n&rb&|&bq&&)' y' z&& & "&ɤ .&$& ' ' && ! afaqh  }%Ėah e a ) . - + *  ʖ  (`ba`ba.g z" !c8(u$g!liep aփuHk#-#xq#|k##zxxsq!px h .px  h삄 h . px   px - h A##ba`ba`.5 ; ք!hj ⼮ ۃ&k#+"(#0 d"#0Ċ d"#A "j## ""j# ⼃4Ԗ"'dxi" !dxi px !Ȁ 7 h X @!hj"  px "" ~"- h  lh{9# y z!,!#x z##x"# {sl""xĊ "# {sl"lk|U#L9 =xbAjAxaAi|qh `#b."!pq !u s;`{"i-"#D`{si"xĊi!"xk {yjH{a "x +"!x L`Dq"!xx C|0|qi!|{`D q!x CR|z|{`D q{x Cica`|#z{|a{s!{bD yq"CY{a  `Dyq! qxq!i Cl|T|qi!A$5j!"{$x"|k"yj"ry##`D"q CbiCph JGHI EFքvep u ;j ";*ryhi  ri yh!ք'ijh "M k#4i  #### #  h!j  &/w`6`4/`8w`   9h L N OPքٖ nkm lք@#Lj#Eih "&  < EM1?- Q(S$L @MB#T 8rօC w ih ! 9 hw! Հh !cba #z" !d4h N +}      x   9" |tȚ+ɤ onm ` yi!{l+!yi+!!z!{!{l!k#jyqyyxy or to continue, to stop #4:#5: Filename? .text First  Last  Nothing in file  error reading file  unable to open file SLDCCSLDLLSLDOOSLLAASSTLLSCXGGSINDDSLOD1SLOD2SCPI1SCPI2BNOTTINCIIDECIITJPLDCRLLDRLLSTRLLCTRLLEXRLLLDCNNLDCBBLDCIILCOLDLLLASTLLDOLAOSROLODLDASTRLDELAESTEINDSTOLDCLDMSTMCAPCSPLDBSTBLDPSTPMOVINCIXAIXPLANDDLORLNOTTLEUSWGEUSWABINGIADISBIMPIDVIMODIICHKEQUIINEQIILEQIIGEQIIFLTTNCRNDABRNGRADRSBRMPRDVREQREALLLEREALLGEREALLADJSRSINNUNIINTDIFEQPWRLEPWRGEPWREQBYTLEBYTGEBYTUJPFJPEFJNFJUJPLLFJPLLXJPCPLCPGCPICXLCXGCXICPFRPULSLBPTSIGNALLWAITTEQSTRLESTRGESTRASTRRCSTRRLPRSPRDUP11DUP22SWAPPNOPNATNATINFO(OBh+iv8K`S5\$ #z'4AN[=Jq~0u9F ERWdm,_lyXe1>rILLEGALp(cd)  No proc in seg Seg not in memKERNEL (rg) mp== sp== erec== seg= ipc= tib= rdyq==  ) :  AR~~  Start  End Seg#? no such seg no such seg Delta lex level? no such proc no such seg  ES Mem address?  DU (bb) No breakpts set Set break #?  already existsRemove break#?  LSAR " EXTRALEXEXTRALEXLS the sib is 2~O(0<@DEBUGGER+\y Hit break##Error # at DEBUG [x18]DEBUGGERs^p7GW7 ~ " K   x ; r hmZW}I3 {kbUO/idYOJ* VSPOOLOPS,b/tĆĆĆ btp5b+u(+i!++! ނ w!i p+s`+ bt, r  r u r  *SYSTEM.SPOOLER Spool_TaskkSpooler Error: 0You are using the wrong version of SPOOLER.CODE..] r}*** GOTOXY CONCURRE EXTRAHEASTRINGOPEXTRAIO FILEOPS PASCALIO SPOOLTASm7)`*P `Ptp+"tp uih !U ) h?i"  *u+p=t)`*P `Ptp+pK:5p$5xpm8-9-tj-B-e-veY,u\v-5v7rլumelve-5vei7!t!j;"*c ! mh %c p hj! p! ! Ȋ!i887 5p$ߊGd Ȑd pt:߈))|4ފކ߈)ޖRSބ-t 5p$7}w焁t S*SYSTEM.SPOOLERcan't open *SYSTEM.SPOOLERRcan't read from *SYSTEM.SPOOLER#error in writing to *SYSTEM.SPOOLERin updating *SYSTEM.SPOOLERerror in accessing PRINTER:.TEXTerror when reading print-file error when reading print-file Spool_Taskk9r RREALOPS h3   p  Ɂ ,  , d  d `d dd`g g `d ``` `c c ,ʄ`  frr q r r r r p #h )¿he  /5¿he ; e?eD Je Ha e NaTaZa`afalaraxa ee~eeed`%d`!# p`#c Ɂc ``d``dg g ʄ d;ddddddd „ " ''&H p6 p&¿   `E d  `d  "dc c ɇʄ` d &d* p.bd4 8Qg Ʉ ɣK<:g ʄ `d c ɇc c ɇʄ`B d  F J  N# T Z^ b  h R  lrx~„67򁜄#򁪄򁰄ց „""!d`d`d`)+` *` +*` ```r 2 3Pdji h 52 - ( +kk# #Zڡdd „ #0#kل #.# 5#k #Z"jdd „ #0# #Z(dd #e #E# B#k #- ( #+#k# #Zڡ! #0i#k(!i!"j"""idd!p dd"!p "idd!p dd"!p 5d4698߇8{8r8x 8rhjkl 8xȄ m8  h"`as" "j# #k0mfZ":ff ff#ff "ff%e%E" jf%.#" kf%fl$8r$8{8ć8 Zڡ   塠 ȇ7P9 xĖ8. -Ȋ i  hdp p e ' p ! i p hЄ d- p ! i p hˇ! p ! !p !i k# j#"0Ȅ " #kۇ!oȇ.k!Q#E#k! #-#k!i!c#!d0#k!di! #! 0#k#! 0ȇ#ȋ!=!p!.ȇ! p !Ȋ!ȊK=!p0ȇ.ȇ!0p!! pȊP  zpxk#p#pxj"R#"pxm%2pxo'#"px p % xnh&x2   &x &xh&n& Ըx0xl $p x$p  xp  &nx'&px%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 SINNCOSS Argument of  for  is too large; returning 0.00 (@(( 0dv  fSCREENOPPASCALIO %PDEBUGIN w &,28  J uTFWYZ~@[^_vwy&FILEOPS SCREENOPSEGSCINISEGSCPROSEGSCCHEGOTOXY DEBUGGEREXTRALEXSPOOLOPSSPOOLTASREALOPS PDEBUGIN  SCREENOPSCREENOPSCREENOP 2 DEBUGGER4- SPOOLOPS2SOFTOPS L`SMAL4&C TY  P ?  tINITOPS KERNEL @ ,LONGOPS u[IV a.0]   IMPLEMENTATION (LONGOPS 4c !ct ~qqsqqeqqWqqIqq;qq-qqq q q q րhc  c-hjj"c(c"0i !i   qq!qqq qq!qqq qq!qqq qq!qqq qq!qqqw qq!qqqZ qq!qqq=  qq!qq q   qq!qq q ր"j! `& q``!`s !$ ( 0Nl` G,'@('_,0HN /+,&k(Nu`<```P``J`V`|``d`p`p `p&k(N024AgmBgS@f`J_fR@f?`Fo`rtJ@jD@FAHvH@B@H@ Ԁ@SCfNu0a/??<`^ OO"O02S@j0a22"`>02|o J_flS@`tS@gHB4`HBxv ւBBSDfJf@b6JAjDC?`*"Hp BS@f0S@@2J@g$"OOJf CS@f`"OHA2!SAfHA/NuB?<`4"O SBf4 gB!R@.I?HR@?`~S@k D QNuS@k D QNuA'Hah7@7@7AAaT7@R@7@JkgJkg|kA'H 0<(B S@fA~C0+ S@f kp 'H2 B@@:JEg$Md k C0+aNA"H0+a@` kfA0+k2+`SBk|0Nu4>ExAaAJ@f BAa` PJP :c t n>BUFF1 -EYj e a . . h ~e - - h ~a ea.-< 5rh טrpq q ol'''­q qn$k#00k #vjpq $#l&*n˜q16qw Fw :vwq ˜qDBB#131 |#qw wq ˜q1qwqp"q1 1 |h"1 }q ˜rpq q 6''"j"p 6 ' 6 ' m % 6 6 q"vkpq "#q % w ' ' q$ wc 01 }i1r 11| !ć11 !11|r 61'212 ć12ʇ12 2 D 1Drpq ' '116  1 16 1q r r<qih:>H$(aq4`qiꆀ삀9Ԙ/86>`-r`**: *6 *r`q ))*)J*  dʇ<++. +A +6 +*<@`rpq @:9q ;`r?ph`였 `B ` `I `B `J `Z `K ` `L `>Z.FB98w q q .M:qNw w :v.w Sw q -UYqZ q B@-삀Z[9^8솀 p.ZFq9ka&  I8;d . e hq iw sw 8 |w 8~   w W  րPut in Insert destination disk:TransferrTo whereeTransferrblockss# of blocks to transferTransferr *SYSTEM.WRK... *SYSTEM.WRK..,:.,Save as  ? Save asTEXTTCODEETEXTT*.CODEOld code removed, Text file saved & CODEECode file savedST^ 7!BBUFF2 EY Hq `qil $k#00k1#$ppK$$#mj"%?1"pp)!ibq"w "w&w w"j$#l$ Ԏ!w*w wqD5 k5  Pk0A`1 p`qk&i lj"$! " i"j!k#mu(x'x'xj(xj5 k0w w #w w#4 F@ 'x(x  0 01(x ppq 1&x ppq  ԕ'&x (&xq# Ih  ɢli!$! m%~1%"!h!i  #xĖ q;?@q@LM5 y q q q w`W ( )-$5) .x5) y ..5) ) 5 o `\ 5 ( )-5) .y'..g.xo) ߚFw _w w,ew wʖ րmBad block scan ofScan forrblockssScan for how many blockssBlock  is bad bad blocksMoving SYSTEM.PASCALCrunchhFrom end of disk, blockStarting at block #forward back : cruncheddPlease re-boottBKk= NONBUFF1EY+%+Kqq+;q 2 |;qwJw :v+ %+w++!"h * *) ) H7w  w w = "w"wG&r q‚h c5 ‚(˜rpq 5c-,+*)(5 y'i:5 i : %+!r,qa2 |;-q w .v--5, .5, y.x.y.x('('.w .w (w. w-v/.  /w -v.  wHՂ=M.xw. ww /. /w w 2.xw v/. /w ? !վ:Ֆ5, y5 -w/v5 w"w =&w 'w/w 6w )w8w <w *w>w pq b b wrpq rH6DGqhH`q *5 3r aKaOF5 aqȆ삀UԦ|V[`qJrqJw \w w삀cqwi! !ɣjh ".! k##w dw w#r h͖0hk,⼃,sqq,phq ր Ԩih !\ j p"p"< 6"0"'""" "ր hih ! p" hww wh Fri1!1 j"խ h1w"| w w "w :v"|X[ "v"}w]v1 "(w "w w "ww %q qqwh12w @w :vww <w :vw   ց < UNUSED >>Dir listing off#1:ListtWritingfilee filess, blocks usedd,  unused, in largestMountMountMounted NOT MountedDismountt : Dismounted : Dismounted,Subsidiary Volume: M(ount, D(ismount, C(learr MCONSOLESYSTERMGRAPHICPRINTERREMINREMOUTT Vols on-line: # on volume : starting at block Root vol is - Prefix is - EV@jD t| $NONBUFF2EY)  q `ĭ)) `xppq q`  ` yx`   q ` ćʇMćwqw q 夃E` Dć qw q  ĊĊ` ` yq ) `xppq )) r&*`-r qqk`טrpq `q ))****ć* `rpq qFw :vZw !w w삀$n`r*q Q.% &w '+w w :v.w 98 2w 9w .?&@Ac3`-r98qBw q p 4wR[q\eqfoq)). )p )sq  4qww `r4.&h` ` `. ` `q>Ah`. ` ` w w qF.Z.j"hq i!"5.c" c. "   ." ..,&  h!x w w apjHqqw q  j" q3 55 (q w w w q솀:삀"였  였DqFw w q }cdF D3Jq3appq dw w w3 V  ɢh .; /~3'/rw /w w w h^ fHqqw Sww SRw Rwww wRR5R5 5 RSSRCqwSRdVVd VqVVqw q pap pT USRdVVdw Vw1dVp1dVpp 1dVppdd w wkw wVq5RV5 yHUV5aayćTTTMɢ5 q aTVaTVćVUVV!ayqw  w +w q pqYʁbcDZ/aydVVdaVeeyWexXfTTf1Z TeyOTx0ȇeeyOTxćTT5 TW5T yTTWT5r VVyq6w f   ց?#Zero subsidiary volume directory ? Duplicate dir ? Makee made not named Workfile is (not saved)) No wo rkfileThrow away current workfile ? *SYSTEM.WRK.TEXTT*SYSTEM.WRK.CODEE*SYSTEM.LST.TEXTT.BACKRemoveeWorkfile clearedd:& Get.TEXT.CODE.TEXTText .CODECode No file loaded Zero dir ofDuplicate dir ? Are thereblks on the diskk# of blocks on the diskNew vol name ? : : correct ? : zeroedd : dismounteddExamine blocks onBlock-range ? Fix them ? Block may be okk is badMark bad blocks ?? (files will be removed !)) (Y/N) BAD.xxxxx.BADBad blocks markedGZKNc  NONBUFF3nEYM`-rqz:պRV--V - -(: --˜( -zA -(**q\`טrpq `q )˜qq%)-- dʇ- -Zq-Z`rpq zձ˜Dq>q ,  35p5 F35pp+, +q 3 F@Jz3@F1z5 D15r as>D+>asOw Dw-v?D ?w -vD wX  րVChangeeChange to whatt:Changee:RemoveeRemoveeremovedUpdate directory ? %Date set: <1..31>--<00..99> Today is New date ? : The date is CRS@| cYFILERPRO EYs$s ,s c c i!!@?il jj!H"i!h !00h ww p0` ` !p";Ě`w a z aAh j`! jwFjzb‚(VRׂ(J N!  pqVY`ڇX`"PYc`#P]`-PT`5PK`>PB`EP9`NP0`WP'`^P`fP`pP `xPրX`P`P`P`P`P`P`P`P`P`P`Px`Po`Pf`P]`PT` PK`PB`)P9`2P0`BP'`XP`eP`xP `PցX`**`P *Y *PY `pɡw Yw'w Xw`w WpYw 4,p4Yiww sp35r p (h !9!  ! a! z ! ! aA h!  !p(/-a+h5Q5 *Gw  v5 w vw w  h)5  ;aw w )ww )x*w p0>5,w Fw w  pn[pDia( a/ a(ih !  0ȇ  hT  ( +~+ r jaga" 0ag " j"h$ rcgcrh c  h Pw  w w gw w grh g pb)g/3J5$5 ih !b  5r h( B6E)C`-r`6rpGpG)2)w  v6w w  G `rp `rFaw :vw &h P(ha  w w aw w !!ڭpp *- : @w :v: <w w &P w  #" !8h7Zh'hhhւB &P  w   w  w pU b(bFZar p` ` BFFr5,1  1p"p 1 |  Z Z5r    5Cx hr iaV a a  a(Y+;Y+w  v w w ww4,p4YF 0  ` 5 ` p` U ?+D(FCxտ5 B2 |2BA: wBJN32 5  h )j5 *ʆj*F"j*j"**:*<ʆ ʆ h< BCCxĆ'@3JNCx5 4Y5Cx CCx< Cx)) )ʑCxBէa) )j  az[zpbh  :堡M R    z!  a0  b?  ():!J)!Cxʆʋ? ? El T *pTiP *T-h $%=%?%%+*aT a(*T * *aT aw &P %w ,',w 2w 9w ւ? ", wwDw Lw p-f * *piׄ삂UNטw =E Vw \w aw w w ,pTT#p*옄WT WPT  ;?&* :&T*#T* $*** 炂cWW Wd W($&UU*S*#p`*P**Ȉ*Up`U*U`Up*P=&TT*?&TT*0F%:  $*T$ `:H+WWR We W> $WW䘀( W昀A W( S1NF3J삂fHSS:ט@ טDGOC7K*I`gP7Vjא#1JFH"삂hH*Rzb#L >,rZJF(h`F `i `Z `j "ypw wMih !_ Q5 j zw w "w "w "xw"yww h|5P5 ih !65 y#x'"# Ċ5 x#xʆ ʊ h" #5 Ėj!x h y y !r x; y y 0 Ɂ#    Mj3]삂jkc' cK co c c c,s4ki!#j! l$S!mh %F$ 3 w !ww  ww h!im4\7m奁mwm(w 35Iw mSgw tw vwww w74{m4um4 7m4 ~7m4 c7m4Hl Non-Wild) carddIll file/vol nameIll change (Vol file) name+Nested subsidiary volumes are not permittedBad dest for files foundd%Can't Increase Subsidiary Volume Size"Not enough room for existing filess)Illegal SVOL size - no room for directory9CM%/CWuaMk expected I/O error # Filer error # ? (Y/N)  ? Invalid #Destroy : ? [*****] #Put : in unit  ?  -->  - 0,  : ? : not processed ...too long < file name scan string vol name  - char. max >>- Illegal formatt what filee what vol ? *::: Remove olddFile(s) endangered: Directory'Filer: G(et, S(ave, W(hat, N(ew, L(dir,$ R(em, C(hng, T(rans, D(ate, Q(uit, $B(ad-blks, E(xt-dir, K(rnch, M(ake, P(refix, V(ols, X(amine, Z(ero, #O(n/off-line, F(lip-swap/lock [D.9]TBWarning units  &  have the same name&buff1,buff2,nonbuff1,nonbuff2,nonbuff33&BUFF1,BUFF2,NONBUFF1,NONBUFF2,NONBUFF33Filer segments swappable.&BUFF1,BUFF2,NONBUFF1,NONBUFF2,NONBUFF33Not enough memory..&BUFF1,BUFF2,NONBUFF1,NONBUFF2,NONBUFF33Filer segments memlocked. [[ words]buff1buff2nonbuff11nonbuff22nonbuff33Prefix titles byy Prefix is BZ/g/gg//gSYSTEM.WRK.TEXTSYSTEM.WRK.CODE0???JanFebMarAprMayJunJulAugSepOctNovDec??????????( Bad CodeTextInfoDataGrafFotoSDirSVoll4FHANDLER,FILERPROG,HEAPOPS,EXTRAIO,PASCALIO,STRINGOPP;SCREENOP,SEGSCCHE,SEGSCPRO,OSUTIL,FILEOPS,EXTRAHEAP,SOFTOPSCOMMANDIO,SMALLCOMMAND,PERMHEAP4FHANDLER,FILERPROG,HEAPOPS,EXTRAIO,PASCALIO,STRINGOPP;SCREENOP,SEGSCCHE,SEGSCPRO,OSUTIL,FILEOPS,EXTRAHEAP,SOFTOPSCOMMANDIO,SMALLCOMMAND,PERMHEAP&BUFF1,BUFF2,NONBUFF1,NONBUFF2,NONBUFF33-8 O*dM,l|eY X &EXTRAHEAHEAPOPS STRINGOP PASCALIOEXTRAIO COMMANDISCREENOPFILEOPS  -c@B | EDITPROGGETSTRINFLIPPZ INITIALIOUT COPYFILEENVIRONMPUTSYNTAEDITCORE  2EDITPROGEDITPROGEDITPROGEDITPROGEDITPROGEDITPROGEDITPROGEDITPROG5uACopyright 1980,81,82 by UC Regents and SofTech Microsystems nl  n>bGETSTRINLhqу0ъ& r tr h#"r#"rhhրt!  h Pр!Ԑ! ȚuA! ?FLIPPZ ;6""i!h!!Ȉ! Ȗs`\釂`  AINITIALI}; .t u.tYp᥃ↃDDih !  hـ^?Y! ! Ҁ ! ʖR! ʖaah  qxa! i!p!jO -  0Y  Ge  Nm  Sn  T n&&[&pmU %%  l&j&$k%"i! "ph! i" j!### "#pi!"%" "p j!Ԯg &  &"g g  V  g g  "!   "!%"g g  W  g g  %$   O O OgOyp xgO"! jիra? ?a??ȇMY~ L N( r 7u u;u ^ th p?qY YYvYՇ^ thpFq \ p5 5 05p 5 5pp Lq Rq00 0 ^ ҅ʅ09 ACDFIJKMP Q R S V XZ<,->.+=/ ?"   Rʇ !   +ɥ> [P@ X    ?q  rq00ȅ0p0 u uJ#  & P^# pq 5P5u 5#sр!p#00 0 #o'#'#'q'o# ####.$##P U P##. ## ^# 5P( p 05 505 5҅ąAZ҅Aąaz҅Aą09҅Aą熁  Ć  "> q64q ^  Unable to allocate enough memoryy- Edit: A(djust C(opy D(el F(ind I(nsert J(ump, K(ol M(argin P(age Q(uit R(plc S(et V(erifyy X(ch Z(ap [[IV.1 F7bb]:] ? H Insert: Text { a char, a line} [ accepts, escapes]]0 Ins: {,} [ accepts, aborts]] Ins: ,,,>A Delete: < > { to delete, to abort}0 Del: { deletes, aborts}} Del: ,,>< Adjust: L(just R(just C(enter { to leave}}1 Adj: L(ft R(ght C(en to leave Adj: L, R, C, ,>Edit::Reading Reading filee Disk errorr Disk errorrBuffer overflow..,EDITCORE,PASCALIO,FILEOPS,SCREENOPS,COPYFILEEUnable to allocate buffer..>Edit:::Workfile lost..5No workfile is present. File? ( for no file ) .TEXT.TEXTNot present. File? lldQ z {OUT B~,X r u uu uu u&u u<u uqqOԚRE r W 6hr #Uu #u u_u sKt i!!#'! #P! Ti!T!!q!iu .&TTP TxU TP.   {Pr u , DbpYbp,b t..t65M 06pi06b!pb!!p,bt6!.t65+bp06b56p,bt.t, uu 5uu uU=@&, , *u qqE q, ~>Quit::# U(pdate the workfile and leave E(xit without updating+ R(eturn to the editor without updating% W(rite to a file name and return '$' writes to )Name of output file ( to return) -->$.TEXT.TEXT*SYSTEM.WRK.TEXTTWriting Your file is bytes long..SYSTEM.WRK.TEXT*SYSTEM.WRK.CODEE4Do you want to E(xit from or R(eturn to the editor? Writing out the filee COPYFILEK'qpU006p6q56qh`qqq=qpq64256566060pV  j"! %) i!!"!d."!" .P." .P*d h d kd q p  q pd  #q p ##q p.k#.##q#k.k#. # #q#kq+qV)$#P#$j6"6".qp  $06"p06"qj6"= t p7qp.t  pagh a  ha @qp&] x%S %x&&x%Ė  I Mg= t `p `v `pQ   U   d=i PYqsp= PmpPq (k&"* &"n'#%" &"%q &"'#%"*" '#%" "%q "pq=q= = dImproper marker specification..Marker exceeds file bounds.[ ],.TEXTBuffer overflow..Bad disk transferMarker not there. & Copy: From what file[marker,marker]? # Copy: File not present. Filename?  Copy Disk Error.[JU;-  ENVIRONMF**+*u *Ɋl`Pf` P]`PT`PK`PB`P9`P0`P'` P`%P`)P `.Pր3`u  t*uAu * ɀF* Ɂu* Ɂlu+ihC u ! rB Du Gu uqqJPu ih !r hTƅTjT Zu ^u hqуb#trtуdՅt  0hуfԪ ihu <r ju uu?ki!#"! -tTt!ijru r"u"rqqqhъ7j6" q j," ?q j"?"q j"?""jրуtHA" "ʊ "ʀ-t r?q q jրр 30uu u u uuu uuu uuu tuu uu uCu 5uu 5uu uu `u uu Q;u 't u <u 'tuuZu uu Zh Bu [u Zu u uu"u # #u 'u u+u 0u 8u u>u u@u Iu Nu r PPq! PrqiqfՑrي~r ڊrrq q ܊\rq q ݊Frq q ފ0ru "r q Prrۊցl qq!?qNONEEJanuaryFebruaryyMarchAprilMayJuneeJulyyAugustt SeptemberOctoberNovemberrDecemberr , TrueeFalse@T or FF@True False  9Set tabs: C(ol# T(oggle tab Column ##pCTA(uto indent F(illing L(eft margin R(ight margin P(ara margin C(ommand ch S(et tabstops T(oken def bytes used, available. Patterns: = ' , = ' Markers::   Editing: unnamedCreated ; last updated (revision )..Editor Version [[IV.1 F7bb]..+ Environment: {options} to leaveJATv Not optionn   PUTSYNTA]4 9  o  ''p  P'ej+'}j!'j'j ' j j "t  P ii'dm'%d l' k %0Ȅ $0Ȅ #0Ȅ 0p: !ph !  p !h !p!i  !Ժ   P&! P! nPn&Ȅ &p 4)` ` P`q  u`q u qq   )*SYSTEM.SYNTAXXSYNTAX ERROR ## . type EDITCORE8><r tq7 Pq!qqڅр!Bնc55 775 qc  qjq 07pj"  75  642onh07o06n07)(06(7i67)7i7(066(\060656p67 0706p) 0706p 0706p060!767)74060656p67 0706p) 0706p 0706p56qq66(&'5( '&6qq64q =qF pq #aqa'Kh Za[  ha[  +q xq64q =qP1q!qq'q4q5>q h րDр!Rq Wڅр!Ԣ@څr 6:q=q\qq'!Zq ZZyr Zni!&>a!tiu [!u ku !u!imq qq=q]AhZhbqb?Zni!&[!b!h!i熃[ b 6 ZZZ~Pq!qqhi E p M !!q !!q=qq&qq p36P!Pq!qqY q p63q 63q q=63q 63q63 060356p 030653p563ࣥ63q =qqsq5656060pq6qqp008 Ȗ^l塅元٠р!&5 06p6l006pj6"$iZnk#&$#x"##x!"q #k56څ塅р 6q  qр! qq64q 642767i iqq r9 /qq r  qp# h  ? h 606 p6Z06 ȅqq04 ޥ ܥ  68068 p68 q22@0606 66q2206 q9 040264p"690404964p p690202 8Ȗrqуъ  ց8允у"ڠ6 066Ԝ  r  r r rr > >  u   >?h?h ! "!t !  r ! !t r !q  R   ? r  r  >  u  -06p 06pq 6i6!h ݅ܣ p--t r r0!0! p0!c p60! 0!ȅ 6j!q"ܥ 0!8 8   rc u  @  06p *?*?q *!06*p06*p?* 5hPMql!q64266imڅ6402 02 ܢȄ q,+r,+rk*C),)+r*u ,+r)k,+r u+>> l)+r*u ,+rу$y,? r tr, - . ,텃ݳ-,t*,)#,+rы8 ,+r+606 Ȅ =q*$ql+r +r+ q8962 ,+rK6!P0P'qp"qqY!ъцPMq,+r ,+r,+rցMуYр!!  i 01p1h!" 5  0 p h!ii>r!i# q rc98>q!"#5/  5>!q6 q >q& <> q=q q hq2 :22q h4892 06p6q q q h 06p6i!5 !5 :,! 06p6i!5 h>6ɭ>>> >q54892 06p6q q q :6q q46:6:24:64 06 6q  06p6q q46:q q q 06p6h 6: 51: 6 q4>2 06p6h>>> >56:q qh665 > >> >65q q> 64848q5>qq88ᤀ024202 [42 040254p$5d\q%p 040254p24224q52402802 2qrr98qr2k 6 PNq!lqqiq  qq  уdw<>h :R h" F$!&= 04pj$+8&%"8&݅ܣ"8ܢ&ցf :&!:ilr :&!:ilakKq 04pjq1l8&)l"8&l݅ܣ"8ܢ&ցs р q qр #:h li!$o >! k>' 06pj##"#kq##8#k# >! !i "ց ")pq2 06p6" 4>$ 01p1rrr p#8q i 04ph04!! q p" rrPq!r) pj pi!"q k#h5 5 qq+p 00 5q p 00 5q p  q5 5 q0!" 0" Ȋ0 Ȉ"0!"p0# "#q q 0!q i`` !q `p!Ȳ` !ȣ`p?!>q pr!!p! p} q h  p p?>prO*jc!qуOъDrq 3?r?q +)r+)r ,-ց‹.?q ?ɮr,+) p?rO r=у1Țt?r?q уiр!s p6r?""!"pu r75 07p6r +?р!?cpzPq!r)  - ,0leq q q )h :j "+) r!1 ha)h :j  "+) r!1 h2 !:i:,# !:i:-уq rуC$!kр!Y p6r?$$?$pu rr +?р!?ep./!  (ъ#$<#$ց!pqъXq4qL(2pB >!:< !,($:": q>:"'ւ rNrrr*rrrr у #qqm$h #>0 * hu aq j #" ""u !h 0 t h&%r&i%#jh " ! riu h%#$jh "  t h&$jh "  t hRljki 6nm$l m6n#k4p"!"!$#&h%n m"h!j i$h#l k $"#!6o&dbq'$"r&%3r  6i q2j64lPLq!qqn6  qq  у#[ъI H!D< !62.:")<>r tr'ւ%6! 4р!р q rу1P!hq$642"iр R6!qF6!q 6!q62$!6 060!56p 0!065!p56!ࣥ6!q q46q  ?6!5 6!q6!q 6!6!q 6!  &m%%q" ъ 5 %ւ42qу9 tUр!qqpr tr+ r tу;у=6 q   ւ?L 6qR7qS7Xڅ`qqpi6)#! ! tr!i !t#!!i!Ի!jqqp"!Ėh 0!   h j0 x  0 x xĊ xĊӖi pQp!\  0 ph h i.   0   :   j pQp"]5 i!!0 ph!h !j.   0   :  R ;; Qpq ; q  Q ڮ;ܮ҆Qx҆Qx;;q Q ⼀ ڮ;ݮ; q "    ?@>=<f U ?@   ; pQp 5 : n҈xA_[00x0x 50 x0 x"R*WP`UPP*q[t /tTuwu S  yu |u `u X#? =q:!Aqqр!q64q p <63I<635ȣqq64q p03 065q0603<56pD<63$<03 065q0603<56p<6303 065q03, !")&' B<' 6 !,qq =.qq46q q$!POyOq!qq$xІPyqЅO!qqo%  q  сAъQqNJFB>: 64 0 , (6h3 q64q =qq Cւז% D! Copy: B(uffer F(rom file D Invalid copy.No roomJump to Not there..$ JUMP: B(eginning E(nd M(arker >BM$ $ Inappropriate environment)  BMarker ovflw. Which one to replace? (Type in the letter or ) Set Set: E(nvironment M(arker > Invalid ZAP..L WARNING! You are about to zap more than 80 chars, do you wish to zap? (y/n))No room to insert..No insertion to back over..Please finish up the insertionnBuffer Overflow!!!!P,K WARNING! You are about to discard more than 80 chars, OK to discard? (y/n)!gsBuffer overflow CR8 eXchange: Text {, CURRENT line}}Edit buffer fulll!Buffer is filling up... watch it!<01 Kolumn: {, CURRENT line}!Too manyy@|,,@LVPPInvalid delimiter..Your pattern is too longg]: L(ittT(okk Replacee' aborts, 'R' replaces, ' ' doesn'tBuffer full. Aborting Replacee Find => Replacee V(fy =>>Pattern not in the fileNo old pattern."r`D+ hU g  } Z [ s  fIX9 #`;a1IAP PDEDITPROGT%! !j j7! !j jvu u rh ҅ɥъR ɥ  i iPr r Pu )`*Pr r `u +t++b-Pp",r rr r  u bu ,pu у"!.y#hi0#%00##k!0# i0# !i!i#k"# !lr h1k# ? 8 r#9k 0#pi!?8 > j0#d"p0#" d" !Țd"u #!k h >#5ԛX06 6i6i$!i 0!p!i$$x$x#!h$x>1!"塠!$x# $#Ċ1!"$1k 0#p#j"6$$x"k 0#p#j#a h%? !6# Ėa`! rhih i 0h!! (j j'602 2 02p22 295h5h"! $р 3 Ykk"!0"! 07pk?j>"jrx 0xph " i0xc!p0x! ! ic!!Țc!u x ĖZ#!r!r98!6"=+!r!r 2h ? `98!!i!> 5Zih !$ x#  x"# h7#75 7"# i6j(04 ⼅p&52204 ڠ04 6iik2i8kk5!0!065!p0!0!# !i06 m06 ⼀ 06666h06 ⼃Y606- 06 606.06 06 66 l#$ݲ݅ܣ$'0! !i0! 0!0!܀ !ik60 0!$p06 106m'04 04߰m%0!$ 06 !i#$k!$i%(6!56!060!6p055" 64  T,VP!r r ,u \u asa+h +a a  haUa pUaa pW422040254p224 x2452402028 ȖZ6h 980 90 8" 9p0 90 8" 9p0 8 p"98k#jh "# i!a!z# ! hd! h !   i. Ȋ-!$!hb ! b ! Y . Ȋ&h` ` `w>! r    ŚʖERROR: & Please press to continue..Repeatfactor > 10,000KThere is no room to copy the deletion. Do you wish to delete anyway? (y/n)  what marker?  m7T/}ZS.cW J=k/GOTOXY LONGOPS FILEOPS HEAPOPS STRINGOP EXTRAHEA PASCALIOEXTRAIO SCREENOP "e$58 ESG4UTIL INITMENUCONFIGSAMNUUNIT SIOUNIT u7 SG4UTIL !7 [IV a.0]t (c) 1983 SAGE Computer Technology, All Rights Reserved"dSG4UTIL jcpcpcTTvSvV !ji!j&!!Ć$!!ĆF!!!iԅTji!j՝!ɋp#$!ĆF!!ċ[!{v$!!ĆF!!!ċ'!v$!!ĆF!!!ċ!p$!!ĆF!!!ċ!p$!ĆF!!ċSծ!j"#!p$!ĆF!!Ċy" #!p$!ĆF!!ĊP"0#6!p$!ĆF!!Ċ'"@!T!p$!ĆF!!ċ!p$!!ĆF!!!ċS!!p$!ĆF!!Ċ{S!!p$!ĆF!!ĊSS!!p$!ĆF!!Ċ+S!!p$!ĆF!!Ċր!i\$ !ąSrvv $!Ćv$!!ĆvvpUU'!ji!j$!!ĆF!!!!i߅T ji!j'!!ʆ!!i ji!j'!ʆ!!iӆ ʆʆ ʆʆ ʆ ʆ ʆ0ji!j'!ʆ!!iji!j+!! ʆ!!iφvv#vv{vvv v vvS5vv6vTvvvvvrvVvj3pi!kh # !xi h!pss Tv!xf# Ɇ$ ɱɆ$ɱ Ɇ$ ɱ Ɇ$ ɱ'svF!xp!xF!xp!xF!xp!xF!x{v !xF!xv  !xF !xp!xv !xF!xv!xF!xv!xF!x6v!xF!xTv!!xv!xF!xv!xF!xv!xF!xv!xF!xvTvrvv T!jh " ! hs? pڀP p p p 3pژ p%rH pژ p4Ih hp.rP pژ p4 ph xh x!rX p4 ph xArm ph x px p4 pvu˧Bu˧Iu˧Ou˧Sz!r p p4 pz p. pz p p p pwx p p p pzzz.r p p p4#uizS9r pژ p p p4 di3!.j"."!xi"j! ppsc.. .ژj .l .PcsՖh jp(r pژ p p p  p p p&r pژ p p' p( p p pu-d 0$h!hhhh hց40 vh K %  ` w k _ S XG ,;  0  % n  K  2  C0h #0UsW p4p0 vh0$ !    ցl 0d i hjS i hC i h3 i h# i h i hց0" !0//s p4ih/ih/ih /ih0` !ʆ ʊS !ʆ ʊC !ʆ ʊ3 !ʆ ʊ# !ʆ ʊ !ʆ ʊցƖ06h0h'hhh hց    /x/h/h /hh06 ʊ0 ʊ' ʊ ʊ ʊ  ʊւ06 h0 h' h h h  hւ) "    /d/h /h/h /hh06 ʊ0 ʊ' ʊ ʊ ʊ  ʊւJ0B:/$ւk0Bʊ:ʊ/ʊ$ʊʊʊւC07/$ւ07ʊ/ʊ$ʊʊʊւȖ07/$ւ07ʊ/ʊ$ʊʊʊւD0(# փx0(# փ4`fo``ɀPaffF``ɀ(aff``ɀPa ff ``ɀ(afɡf``ɀ(afɡf``ɀPafɡf }``ɀ(a fɡfɡW``ɀ(a fɡfɡ1``ɀPa ffɡ ` ]ij!ɀP!ɠDsOs !ʊ/ pbs !ʊjo p4ji!ɀ(!ɀ#;! !ʊ*s{s p pj4^!h/u   P     *  P  ʋt   P         ʋu   (     *  P  ʋ$u   (     *  P  ʋu   (     *  P  ʋ*u   P     *  P  ʋt   (         ʋ1t   (         ʋt   P         ʊ:s p4$ ʊs p4փ p x xaA p QĚ p)+* *+8*지#* +*h`*P `Q `P*k+kh [ x h  p[xr p p p[xh  )r p p p p[ xi!7r p! p p p p h[ xi! )r p! p p p[!xi!7r p! p% p p p h[ xjb h[ xi !h3b,r- pb p p pbҙ :r< p pE p p p*rZ p p p pk[ [p[p 2u  pe p1P p p1p12u u  pz p p p1 p pQpYխ2u p p1 p)r p1 p pW[p[ p)r p1 p p [˧B[˧O[˧O[˧T[˧M[˧U[˧B[˧T7 p p p pIr p p1 p p p pՁ Zs p phh2u  p p pgP p pgpgi2u u  p p!! p puZp p!  p& pg p+ pf&Qp&Y2u p pg p&r- pg p po!kk[# mp%&r5 pg p ph= p p puZ p IZ!"#bvih ! b!ɭ!h!i O p p"pvY p p"pv pc p p"p#"# p ps ph i!հˏ p. p3ɮppVr pz p p p p pv #pɮI-v  p p  p, p p) p p p& 8s p p p p p pY p p#pɤ ʈɤ ʭv p" pnɌ 5j"5Ց6i!6[ɤ7h 7ը 88"ʇ8!ʈ ! &o'ɲ 'ɣo &o' 'ɢo "!''o8'ʭ8ʊ 8 hP"ˏ! p. p ( "! ppՀ-(tp4r p p4 p p" p p! p pv #p !",mɌ",m "!,m3ɭ%pp-(tp4r p p4 p p" p p! p pv #p )Վ!i&ɢn&ɲ &ɣn"jg*ʈ ʈ+ʭv $8'%hs p p p pc p p#4#L#lijh/#5#R#rijh#Q  p!p "h # u% ; p pc#Y# p!p u% !%)1HsF`vGpGpGգH??HՓEDED y`D c`D?RD!v*@DA@@pp5# p? p' p pEFDD{??ekH??H\ ?v !v*@ A@@pp24 p? p8 p pF??v pFE p p,S p pd p p pC pC H-$.  /ֆp/ ֆt/%&'()*+,-x.p/h0`1X2M2B373+8#9::ֆzC/CCDIJvJkK`IUIJFBD7E,L!LE Gֆ/1) vֆ/'ֆ/ ֆɊ*'! ֆ>/ֆċ/ֆɋ//V/ /9/0//@/ /xqښ/x_r/xHr/x1r/xr/xֆ͖2t.MTU$0!x堚.$!x塠.ڠs p4'p.//! /#%'p  /ʊև/ ևv/%&'()*+,-./0x1p2ʊa2ʊR3ʊC3ʊ38+9#:ʊ:ʊևC/CʋCʋDʋIʋJʋJʊKʊtIʊiIʊ^FVDʊGEʊ8Lʊ)LʊEʊ Gև0/ʆʊo F!xvʆ F!xvʊ9ʆʊʆʊևB!ċ /'ʊևH/ ʊևMh/M ʊE ʊ:  ʊ/ ʊ$ ʊ ʊ ʊևP`/' ʊʊ ևY./ʊʊև^//ʊb/ /ʊA/0/ʊ /@/ ʋ/Ċqښ/Ċ_r/ĊHr/Ċ1r/Ċr/Ċևb0!Ė4+  ws s -w&u'p.3cS.ڡ4 p. zupk%]%O%6A%T3C{&C !ևT.ڡ.$0!x"s p p4V.IH%=%26%'T%{CCևֈ-v  xxHHl#]]###Make on-line changes? .Do you really want to change the terminal now??BIOS file name: Could not open Error reading )Illegal code file format - wrong byte sexFile has DataSize of  instead of -11 Cannot configure Multi-User BIOSS BIOS Version  header read successfullySize including buffers:  bytess!This SAGE4UTIL is only compatible with BIOS version 2.3 or 2.4Data in  was not BIOS code fileReady to write changes to : &Error writing new BIOS information to BIOS changes saved.$Error closing BIOS information file BIOS changes abandonedd(Illegal setting for Extra Serial Channell/Must remove dip switch selection from Baud Rate%Use on an 80 track drive (read only)?Use on a 40 track drive??Sorry, no other optionsUse on an 80 track drive?4Cannot access 80 track diskettes from 40 track driveeIllegal selectionUse Low Level Change Menu f_YSK:::,Illegal code file format (byte sex is not 1))Code size out of range - File has  instead of 1 procedure.."File has improper code address of File has DataSize of  instead of -11Illegal code relocation type The code size of ( bytes is too big for a 1Kbyte bootstrappIllegal code size of (Source file or device ? Ready to load bootstrap from volume file  ? Could not open Error reading Bootstrap of  bytes read successfullyyData at block 0 of volume Data in file  was not SAGE bootstrap code.Bootstrap Copy Utilityy-Destination file or device ? +Cannot handle bootstrap copy to a file yet.Ready to store bootstrap on volume in file  ? Could not open Error writing #Bootstrap data written successfullyDrive not equippeddDrive not equippeddCannot format under Multi-Userr VerificationnError while verifying Cylinder  Head Format Complete (($Is diskette ready for formatting in LEFT drive? RIGHT drive? Format abortedd FormattinggError  while formatting Cylinder  Head Error  while checking Cylinder  Head Floppy Diskette Formatter*Drive to be formatted - L(eft or R(ight ? More diskettes to format? Drive  positioned for shippinggDrive  positioned for shippinggReady to power system downn Cannot position Winchester headssType space to continuee8AJS\enwNZfr~).H447iHHHHcccc $)@@ ~@)Cannot change this field under Multi-User&/8AJS\enw)9IYev})Uovv'ooooAFKPAF~~^>~OSUTIL,SEGSCCHEMAINN+Only valid for system with Winchester board$_djpv|v$Cannot access this information underr Multi-UserOSUTIL,SEGSCCHEvW E  1  ] > $ [4Rrf <'EXTRAHEA FILEOPS STRINGOP PASCALIO EXTRAIO CONFIGSASCREENOPSIOUNIT MNUUNIT COMMANDI INITMENU>%. p yZ p p  p p ps(s*6s8s As v I#s WYshmsowsysssss s s s$ssssss!)s+5s8BsEsNsWYshtswsssssssssss!s$s.s8:< sLNP s`bd stwsKs %s s ` s s s s Xs ,s  s  s n s K s 2 s s ss s s s s s s s s  s  s  s  s  s ss #s )s 1s 7:sCs Es Gs ILsVs \s cs ilsvs |s s s  sssssssss s s s s ss sss%s-s6s@sJLN s[]_slnps}ss s s s s s s : s Ns _ s h s ssssssss s s s s *s 6s Bs Ns SV$sasrsss<sBF&s+h +% a\PabP at a s hՂhlp's(s)sZSAGE4UTIL Version 1.3 Initializing MAINN SAGE4UTILOn-line ConfigurationOLCBIOS file ConfigurationBFCFloppy FormatterrBootstrap CopyyPrepare Drives for ShippingOLCOn-line Configuration ControlTerminallTRMRemote channellREM Left FloppyyFL4 Right FloppyyFL5RAM DiskkRDKPrinterPRTExtra Serial Port #11XS1Extra Serial Port #22XS2Extra Serial Port #33XS3Extra Serial Port #44XS4 Parallel PortPPORTTime AdjustmentTAJLow Level ConfigurationLLCOLCBFCBIOS File Configuration ControlTRMTerminal Configuration ControllTerminal Baud RateeBAUDDTerminal ParityPARTerminal Stop BitssSTOPPTerminal Data bitssDATAAXon/Xoff on inputBREAK to debuggerREMRemote Serial Channel ControlRemote Serial Baud RateRBAUDRemote Serial ParityyRPARRRemote Serial Stop BitsSTOPPRemote Serial Data bitsDATAAXon/Xoff for inputtXon/Xoff for output DSR PollingDSR Polling intervallXS1Extra Serial Channel #1 ControlExtra Serial Channel Baud RateeRBAUDExtra Serial Channel ParityRPARRExtra Serial Channel Stop BitssSTOPPExtra Serial Channel Data bitssDATAAXon/Xoff for inputtXon/Xoff for outputXS1XS2Extra Serial Channel #2 ControlXS1XS3Extra Serial Channel #3 ControlXS1XS4Extra Serial Channel #4 ControlBAUDDBaud Rate Selection 19200 baudd 9600 baudd 4800 baudd 2400 baudd 2000 baudd 1800 baudd 1200 baudd 600 baudd 300 baudd 200 baudd 150 baudd 110 baudd 75 baudd 50 baudd DIP SwitchhRBAUDBaud Rate SelectionBAUDDBAUDDBAUDDBAUDDBAUDDBAUDDBAUDDBAUDDBAUDDBAUDDBAUDDBAUDDBAUDDBAUDDPARParity Selectionn Even parity Odd parityyDisabled parity DIP SwitchhRPARRParity SelectionnPARPARPARSTOPPStop Bit Selectionn 1 Stop Bitt 1.5 Stop Bits 2 Stop BitsDATAAData Bit Selectionn 5 Data Bits 6 Data Bits 7 Data Bits 8 Data BitsWD1Winchester #1 ParameterssNumber of CylindersBytes per Sectorr Step Time Slew Time Step CounterrHead Settle TimeeCylinder for Precompp Special types Test flagssTrack for shippinggLow Read CounterrHigh Read Counter Header CounttNumber of HeadsNumber of RetriesSectors per Track Select BittWrite Sync BittExtra Head SettleRd after Wt RetriesWrite Cycle RetriesWD1WD2Winchester #2 ParameterssWD1WD3Winchester #3 ParameterssWD1WD4Winchester #4 ParameterssFL4Left Floppy Drive Selection(SAGE double side, 80 track (1280 blocks))(SAGE double side, 40 track ( 640 blocks))8IBM single side, 40 track - Universal Media (320 blocks))&IBM double side, 40 track (640 blocks))5Network Consulting single side, 40 track (400 blocks)5Network Consulting double side, 40 track (800 blocks)6Network Consulting double side, 80 track (1600 blocks))'IBM double side, 80 track (1280 blocks) Non Standard Drive ConfigurationnNo drive equipped0SAGE 10 sector per track, 80 track (1600 blocks))FL4FL5Right Floppy Drive SelectionnRDKRAM Disk ConfigurationnBase of Ram Disk (0 = disabled)Top of Ram Disk (0 = to BIOS))Boot to Ram Disk flagPRTPrinter Configuration ControlPrinter port assignmentPMODELinefeed after carriage returnnPMODEPrinter Port AssignmentRemote serial channel Parallel portExtra serial channel #1Extra serial channel #2Extra serial channel #3Extra serial channel #4DisableddPPORTParallel Port Control Interrupt (vs Scheduled Polling))Polling attempts before delayDelay before re-pollingTAJTime AdjustmentSeconds of time adjustmenttIn number of daysMAPBIOS Channel Map (0 to 15)) Channel Channel device = Channel Channel subdevice ==MAP11BIOS Channel Map (16 to 31)Channel device =Channel subdevice ==LLCLow Level ConfigurationBIOS Channel Map ( 0 to 15)MAPBIOS Channel Map (16 to 31)MAP11Left Floppy DetailssFL4DDRight Floppy DetailssFL5DDShared Floppy DetailsFLS Winchester #1WD1 Winchester #2WD2 Winchester #3WD3 Winchester #4WD4Operating System InformationnOPSYYAuxiliary Device InformationnDINFOFL4DD#Low Level Left Floppy ConfigurationNumber of sidesNumber of cylindersSectors per trackBytes per SectorrRetriesMotor on delay factor Data lengthGap 3 parameterGap 3 for formattPattern for formattSkew for formatIBM track formattNCI 10 sects/trkkRead 48 on 96 TPIRead after writee Ignore errorsFL4DDFL5DD$Low Level Right Floppy ConfigurationnFLS%Shared Low Level Floppy ConfigurationStep Time (msec)) Head loadHead unload timeeDouble DensityyOPSYYOperating System InformationnWord Word DINFOAuxiliary Device InformationnKeyboarddTerminall Left Floppy Right Floppyy Parallel Port Remote Inputt Remote OutputRAM DiskkExtra Serial Port #11Extra Serial Port #22Extra Serial Port #33Extra Serial Port #44 Winchester #1WD1INFO Winchester #2WD2INFO Winchester #3WD3INFO Winchester #4WD4INFOWD1INFO*Winchester #1 Auxiliary Device Informationn Partition Partition WD1INFOWD2INFO*Winchester #2 Auxiliary Device InformationnWD1INFOWD3INFO*Winchester #3 Auxiliary Device InformationnWD1INFOWD4INFO*Winchester #4 Auxiliary Device Informationn CONFIGSAy: "!! ``!ɤ"!I p^`"`pm p`$`p p`#`p!0 !p`0 `p p`%` p p*`!`p9 pO``p_ pu `! `p!"h! !  !"p"h! !  !"p! !p`  ` p  p'``p7 pM@`A@`pA!"T "k%k= k3 k) ^nk Kk 2kK k\ %kR J2kHKkCnk>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  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 * 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 Ntpupt p! !tp t ptprhp`! p! Ȗ+b,Pbi`!v!b bp .-+I? Ib? NP1i 1| p2( |gph Xd40( <?6hI? N0XdBh `0( <1vh `p0(`= N.,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<=hN0/2mrtpT,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-ch)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!-!,! / *a,Pa+` x - q)`*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. qhkՃk|sc-kyj"|H"~B"}a!!}!~.j~."{/"z0st p"}t pj~."{/"z0"|1hkxkch k pjuphj 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 ptprvupt p`t ptpt p 2tptp49gh`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 } -92 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 ybPYI<`r;ɥp;ɥo<ɥ2<5a dehijkfcn43xb( bG5 p7tpupgt pzt ptprvb5  a  |D:dlD  s d   kgJ- (*** FILEOPS GOTOXY STRINGOP HEAPOPS EXTRAHEAEXTRAIO PASCALIOSIOUNIT SCREENOP 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 BIOSPROG BIOSPROG IV.13 [a.1]  BIOS<;P*@PP*@Pnz@4          zzzz2H2ILt @H2ILt @H2ILt @H2ILt @Copyright (c) 1983 Sage Computer Technology, All Rights ReservedHpQF'0<dABXQA&!A!A0!'%g0eC!dAC0CaIg>C.!hACCŇŃŅ'40Br@Q0:HA0<J8IfA0<"HBXQAg!AvC"0<2QBIOSPROG BIOSPROG IV.13 [a.1]  BIOS<;P*@PP*@Pnz@4          zzzz2H2ILt @H2ILt @H2ILt @H2ILt @Copyright (c) 1983 Sage Computer Technology, All Rights ReservedHpQF'0<dABXQA&!A!A0!'%g0eC!dAC0CaIg>C.!hACCŇŃŅ'40Br@Q0:HA0<J8IfA0<"HBXQAg!AvC"0<2QAp0<2QA*Cp Qa>A!xA !tA f!JA `!NR!Ra`/ I4AvCEp)Y&)Y*)Z)Z)H)H"PHzfa J8Ig ElAI`|aFQ(_AlCXp"QA|C$p"Qa#6J8Ifa`a7AC"p QB8WA !X!1NA'N!LF Nup/8Hz,!JgŇ 8gp!NuPpNsH@@C)Pa8!)Ba,!) a"!)Pa!)Ba !LNu<fA Nu<fA Nu<fA#:Nu<fA0Nu<fANu< fA(JfANu<fA$JfANu<fA JfANu<fAJfANuANuNs? A8Aj A@0;N  A0NsL #(r? A8Aj A@0;6N2 A8g8ŁgP9g0Ns:DNXC088fF!gCJx8f0NsF HeHe$HHe@HeRHe 2He,He*x8`/ @n H0; N Ns>LX`:`x.d###$fpRBP*06`L 8&g @Nu xNuANuNuB8Nu!a#NuNuC@aDfCNuC@aJDfCNuA0 / ?/ / / / /Ap NN0(f /h$ONu _1@ONu/Aj!J!X!A\!NR!RA$! _Nur pQQF'8%%sB8 O NH`C@a| 1ADfCLNuHpC@a DfCLNu0ah0;N f fnv!2 r|0a20;N -2 ($Bh @n/ CHpH@"_ @n` @m @n@oHNuX`x0a0;Njrj r&-tjj .R#0a0;/ "hN"_Nu**!81**NXbl****1|Nu1|Nu0(a4 @ n/ "h0;N"_Nu1|Nud~~PX vv2V^fn0(a @ n/ "h0; N"_Nu 1 /0( f26`NS@fAp"Q` HAh d|RAzczRAhH@0H@!@"x<$ gk$I"Q$ gj $LNu !<"Ha:`H`"x< gg$I"Q gf$LNu"P!JftP9g``F"9HI 0<J,gB,A:Hz8!_Bh1l a(J,f J8Ig ItFQF L`F":B> f0j( F NuJ,f 0l&(g, 0l(  Nu,NuJ,f 0l&(gF, 0l( Nu,NuHI`&HIX`HIՔ`HI`HI F"B,l p&a^B,Hzgl F LNu/ Il (_NuHIB@, , 28c< C40l&(<222LNu/ I݄B@, , 2(_NuHIT`HIԐ`HI`HIB@(g*, , 2C50l&(<222` , , 2LNu/ I`/ I*`/ Ih`/ IԦ`/ I""(_NuJ,gpH0l(J,f>2,f2<IB@`Jl2,fr>A|&  LNu13 "()āć*+AG,-./0Ns9H瀈(x xNL`rH`4H`rAqBaf(B8qgpfg pgpsLNuH`rAjBaZJ8sfNB8jg>p g6p8k e,p e&p ep ep ep ep` 8lgpsLNu4B, B8sAifagR8gC gF 2B/NsB8VNr J8Vg`J8hfCF aC`2808cWfNB8hBA8g8fg(/Aag _R8g g8g8ff:og ?0<#N0Nuh/A԰Bh1x2 Hz!_a _NuH@@"h"(g aSfLNu g gB@8g8fg"/AЀag _R8g g0NsB8i gC:g0<#N`F! gCB8ifgJ8hgHAazLB8hF NuH"x85Bg ONXLNuB@8f8g28c@@2Nu!014aCNu"024NuWNuC@B8Wa>DfCNu0 @?n/ C"_Nu!XNu9J8Wf~a`xJx\gH08^CCJfrC !fF !fB !f> !f: !f6 !f2 !f. !f* !f& !f" !f !f !f !f !f !f Sx\L`J@f H@JgR`JgV`T Ar xXNSx\SfJx\fzLJ8GfNuB8GH瀀 xRf*PV:2f&@@ xJNAfAsLNup>N`/9Rx\AR01^g _NuH"H$i0) |$f A0Hz`>|%f A2Hz`.|&f A4Hz`|'f A6Hz`|?flA8Hz~!_CaB)f!R !Ria)f CLNuCF!(gB8VNr J8Vg`F `3|`p$`p%` p&`p'`p? J(f"Cк1gN(gH`"( NJNuF'Jx\f J8GfNr `F NuŇŃŅ1&1aPNuHptrPQCzH@F'aF82<%Q@F'8[8[a޾FLDDC@1Ɩxg2nDCxo(RgSfx`"xoRgR`` QjPB82<%QL8Nu",,f,fp,4HA@bHAHA0,BAHA@H9@, , m @9B09@.`9B.Bl0,@44LNul$l%)l )l)l9l"B,5At*zOp02xHzTЊf4`H?Np?Np?Np?Np?Np?Np?Np?Np@>;NpPPPPPPPPPPPPPPPPpppppppp(08~ZH* * Z l tr ~": ( . $  ` ff   6 B  %%$$$$ %F > $$$$J J R > h n  0 @ Zh0 N T $$ * Z*< X \ 4%P%d%pp`,p`(p`$p` Np`p `p `p ` p `p`|~B?L&'pa p` v=|`=|=k&A*L&SNaNN<6x vhgNuO=G`'f/BHt4+&v(ЎQb Nu =@=k&O`>+&=x A=x L=x=&xx&xL&Nu>+&"_vxvx&7vx&<6x(F<6x Ah<6xOh/ >+&<6xCh7vx&<6x>6h<6h|g Jxg$vx`$NH&Nu*Jg :6XSfNuRn*>+&>6x=*xNu'M&NuN*k&B&NNuHzJ&f*_Nu'_&NuN'f@'f lKNNHG,k&~>+&Jvxg'aLHNu @bH>;Np H r?<Np?N?NpjHjH?N@>?0NpjHH?0N@ЈP@?NpjHHЈP@?N@1NpjHH1N@^?1NpjHH?1NpjHHЉP@?NpjHH3NH@a`pjHH@?6XNaBpjHH@?6XNa$pjHH@PE?NapjHH@=XNpHk&>6>6xpjHH@PGNua?6xNa?Na=xN>>xN@W>NpjHW>N0>=xN'L&zjMprta~j@MAX fJ* g 4 Z?S@f`? S@fL&N'L&prta<>@@Ax? S@fL&NpH>7Ax0U@fB_L&N'L&6h Gg*ra>6h<6h|g Jxg vx` N6hAxNuaJ_pjH>Cx2S@fL&NaJ_pb>CxT@H`a(fJ_>L&NacJ_>L&Nad`"NJg"J>/Cx NJg J>/AxtcSBk VfNu0>/S@r6xAdnN>AxJgAxez>CxR@SfL&N>Wr6x>N0>_xN0r_>46xjjj>N02t_>66xkCkAkvxN>AxgAx>CxpjH fJ* g 2Y2S@f`2S@fL&NpjH@WNpjH2g @gIWNrt4JW?HB?N H@.N?N:jA&` a >+&AxM?0PL&N8:aA&JEk>+&AxM1Pa NpjHN R@(@N(_N0WN0WNFWNFWWN0We >N0Wc>NJWkNDWNRWNSWN0WN0WN0>NJWg0/H>NJWg0/H2H@J@jA>N02WmVWnPN0Wf >N0Wf>N0Wl`0Wo`a(fJ_>L&NacJ_>L&Nad`"NJg"J>/Cx NJg J>/AxpjHS@ VNu'L&r> gBnOIACp3 UAf.I`$?rta&J_ OH"OJGg2SGfBYU@fL&N'L&p0 @d`Hrta2p0kLAb@RA6@C?NO>Na@J@g44XS@f`*a0J@g4XS@fJAgBXSAf`aJ@g 4FBXS@fL&N0/HAH2@k"_J_N'L&HpAr taLIC4`XB0 O.I2SBfBYTAf`aaXS@k 4XVf(SAkJXVf.I?<`aa2S@k4FBXVg.I?<`fajaS@k4FB_Vf`4(JC NuHIN0f`0gRN0_f`0_g`HXIN0gTN0J* gXNupjHjHA2aز@m4aв@nBIAaIL&N(6>*@O>2xO02xkFrt(a ?E?H O?LIx?k&?k&7C&H&/Nuprt(apapNxanL&|~N>+&@@>6x7G'<6xChra"'J'>6h<6h|g Jxg$vx`$NNu*'L&pa2N* `'L&H@`'L&paڎ`*'L&papaa0(HЊ'1@>+'7G&7vx&>6xRvxN'L&H@o`'L&p* @fr A(bI>; GgI'L&Nx`6Z&  0%jp>:'L&papaڎ`&'L&>/az:/ڎp0a L\H O'H&`'L&>(k&garaSvx>+'7G&7vx&pjH>(2(jDA>*AO>2xO>2xIx7A&>(@O AxH&Npa0?Na+&>6x vxfR&=k&`NHG~,k&|~|>bHBA':0|gaLINu|?f<+&6h>6h Gg6xf'a7G&r26x Ag 6f.`=h=x`N02|@dHA'1HJAV? OpNNXNL&Nz:NJvXoSvX`a=h>6Xal=X'aPNNz:NaNN vXg6JvXm0<6X=hX>+&a&7G&>+&6h6xc 'aNuRvXNu6h$r|g6(b246(`=h|g=Nu>Nu><<+&k&g><6h`|g=hxNu7vh&NuNNNNJnfN>N0>_Cx>_AxJ@oS@fL&N0>_@Cx>_@AxJ@o S@fL&N02>_AxJAoSAfL&NJ_>_Ax0246g6mSBJAf WRB`$VRB`RFBJAf WFB` VFBB>L&N> 6x"6x<>4xf xf>` k>6x|f>`>6x |f>=hN>Ax>Cx>)EpRG _g 0e 9c Ae ZbS@m`UG3GJ@o S@fAp|AH>;>Ex"$ffg\J`p*r*`pr3@3AL&N,6Jh:NlAND '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<>|g Jxg vx` N>Cx`"0<>|g Jxg"vx`"N>AxJ@gS@fL&N0<N>>6xvx>6x|g Jxg vx` NJ@g 2Y0S@fL&N<>|g Jxg vx` N>p06x<6x>6x|g Jxg"vx`"NƱgc2S@f` H3 U@fL&N>p06x>6x<6x>6x|g Jxg vx` N>(g@OCx2!YJg2SgSg>!O`II@>>6x26x4!JBg>!pxSBf`L&N>>6x<6x?6hp06x<6x|g Jhg vh` N/06xH??6xBgN:>NPTX\~   $(,~ $(,~048<048<hlpt@DHL~N("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|=AL&BB'gNuN+'g(I'~0A|Np`+'g(I'~0rJg4S@gS@g`".+' 'G'.+' 'G'ACN`xN`rJDgl+'fTNJfZ.+' g ae zb f>.\fJg .+' G'G'`.Sf"g<f+'g SDf`SD f+'gz+'fNJf  f\fTp +'fNJf`:JDgSD.+' g* 'G'vC op +'fnNJftSCf`f f .+' 'G'`+'fBFCaFa, AKNux ,:".̂(ȃ⊄(΀ȁ∀NuJk,f F m F BJgk[SFn gBFNu</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`X``````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`pNNA|pNNA*pNNrNu +''4ApNN5h5PBANuJPfh'Nu,o =_7_'LH'.k'=| B..B./&k'H&'N&'~N.k'A|p 00S@fA|7H&'e'd AC`A"H=Hd'I'|]?./+'?<?+'BgN:Jnfb k'J(g0<2Y0S@fA~"k'7i 'zJigO?|?|?|?|?|?| ?i0+'Q?@?n?|?|?|?| ?|"O?nd?k&E ?J?|?|E0CSEfh~>.~>6x=x=x x86xL$O=x?.Ho??6xBgN:Jnf\O'O& O?H?H?|?|?|~>.>6xx86xL$O=x?.Ho??6xBgN:JnfJ/ g>0/X?@~>/_?GOAx0X0J@g>(_1O27xY?xS@fBk'B&Bn=kV8=|6A'p@0S@fA`1||1|1|1|1|7H&7H&~>.dCx=xA=x k'k'| =GdA|7H&7n&7|& k&$OH&~|>*O>2xOIxKNAgNJ`pNN Error reading boot device "+  ;uA{DJPZCONFIGSAMNUUNIT ATTUNIT DIRINFO SYSINFO FILEINFOWILD SIOUNIT TADUNIT WINUNIT %8<BGMW!7 # $  [IV a.0]   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 }  "uses $(*$U WILD.CODE*) wild; " "Type $D_DateRec = Packed Record 2Month : 0..12; 2Day : 0..31; 2Year : 0..100; 0End; $  $D_NameType = (D_Vol, D_Code, D_Text, D_Data, D_SVol, D_Temp, D_Free); $ $D_Choice = Set of D_NameType; . $D_ListP = ^D_List; $D_List = Record /D_Unit : Integer; { Unit # of entry } /D_Volume : String[7]; { volume name of unit } /D_VPat : D_PatRecP; { volume pattern info } /D_NextEntry : D_ListP; { Next entry in list } /Case D_IsBlkd : Boolean Of 1True : (D_Start, { Starting block of entry } 9D_Length : Integer; { Length (in blocks) of entry } 9Case D_Kind : D_NameType Of ;D_Vol, { Everything but D_Free } ;D_Temp, ;D_Code, ;D_Text, ;D_Data, ;D_SVol : (D_Title : String[15];{ File name } ED_FPat : D_PatRecP; { name pattern info } ED_Date : D_DateRec; { File date } ECase D_NameType of { # of files on vol } GD_Vol : (D_NumFiles : Integer))); -End; + %D_Result = (D_Okay, { Mission accomplished } 1D_Not_Found, { Couldn't find name and/or type } 1D_Exists, { Name already exists; no name change made } 1D_Name_Error, { Illegal string passed } 1D_Off_Line, { Volume not on line } 1D_Other); { Miscellaneous error } %  "Function D_Dir_List(D_Name : String; D_Select : D_Choice; ;Var D_Ptr : D_ListP; D_PInfo : Boolean) : D_Result; "{ Creates pointer to list of names of specified NameTypes $(D_Select), matching specified D_Name (wildcard characters allowed). In- $cludes information about pattern matching that occurred if requested $(by D_PInfo) } $ "  "Function D_Scan_Title(D_Name : String; Var D_VolID, D_TitleID : String; 4Var D_Type : D_NameType; Var D_Segs : Integer) : D_Result; "{ Parses D_Name } & "Function D_Change_Name(D_OldName, D_NewName : String; D_RemOld : Boolean) : D_Result; "{ Changes file name in D_OldName to name in D_NewName, removing already $existing files of name in D_NewName if D_RemOld is set } " "Function D_Change_Date(D_Name : String; D_NewDate : D_DateRec; ND_Select : D_Choice) : D_Result; "{ Changes date of directory or file name in D_Name to date specified by $D_NewDate. D_Name may contain wildcards } " "Function D_Rem_Files (D_Name : String; D_Select : D_Choice) : D_Result; "{ Removes file of specified name (wildcards allowed) } " "Procedure D_Lock; "Procedure D_Release; "{ Provide means to limit use of DirInfo routines to one task at a time " in multi-tasking environments } $ "Function D_Krunch (D_Unit, 5D_Block : Integer) : D_Result; "{ Collects all unused space on a volume around D_Block. This unit must $not be in use when this operation is performed. } $ "Function D_Mount (D_File_Name : String) : D_Result; "Function D_DisMount (D_Vol_Name : String) : D_Result; "{ Provides a means of mounting and dismounting subsidiary volumes. $Wild cards may be used. } " $ "  {*************************************************************************} "  Implementation  DIRINFO 9 D9H7ߛ`2  3L33ޖjh% i!Z ##x !0Ċj h $" $% 지*#j"nsW/[Pk/ti!!i/i!] p!Z/e!teP/!t/l"/th l$  / Y l$k$ZJ/ZeZteP//XĊ/ XĊ/ X#]\}[3`P_P^P]ć\ik oml!3ծ3!j" (o3!t( 'b_P^P\p"In""%mn$ln!n !nր&b_P^P\p"a"z 3!"aA!iI33지*_@P3t33ti!_@_<P!3t_3 !t P3!t3g3지#^n3 h )3 짃4n h3n&_3P3Pb_P^P\p3]ć_k#3 3^\] k#b#_P^P\Ėa+b,Phi !b!!ib!지%!ib!짃8h .-+b,Phi b! b 지=i h!.-\h$%ppi! ! hhP%M k#y#y b%bs#Ɂ##@ڡ$ #h n-d2PkdMd지#dմjd"짛Zi!//x d"짢0"j!"d!k@/x6/x | 4/xk/x kk#0//x /x .0rh.xdĊ.ċhk//xĚ/x | 4/xk/x k#21d/x .0rhd/x h /xԃ kk#54}+b0Ph3M bՅ/x3M  n//xć3/xM i!  ɀd-Ċ1!-Ċ"!-Ċ! -Ċ-ć-x.b!,2rh}/3M  43,c1Pb0`u i!! !!! |!9! /!./! 3ć3! c!4!b3!-ĭx Ċ 4j('՚"l^~5b`am(L$"nk#&B^#M y^#M x$ ^#M y^#M x#k%'^"M n! && &x&y"^M f(8^M n^&M y& ^&M y&  }UP unU 5 gm% i5j5k^ ~fdm%Յmym#H& |)^M TT TxTT & |#>Aݸ&!%Txm%m%S #M #M M"#M ih !# M # M h| }UPeuh ~ U5 c )5n ol_5`^ )՞   | >~AݸS_ d~ ^ _$$l$_M ') _ppj" "   ~    () &).() ) *a,P+ha4+xM  ++xa+xM h .-. W/\PeZPh/dAhec&Y$M e#$#h$M e ^]u ̈́PPu͘,~ah bUah ,h  ~m bh  h  b|M b&Uh|~Uhh |&pp hh /f2Pe1jflh4fb0cah4"M e"4M $ 54 {S~PR}WuYT|hR ɀdhS+a[Vh +X\+TZh|`| RT |B|ݸa\aR|h|ah\M R T |!T\ppUU U hhY YTX 9Y h i i  |iqEvh 4 ??h h v v pph X$M m$M  Հmobĭ"$M xppmp"M k#y#y bsi"M kh #!" M i h!mo + +M o'y'xk'y* 'xi*jl'yi*jl##hh$" j! i !p "p$" j! i# k#Ԭ'xi$'*'y'x'*Ċ '"'*ĭp' Um   n&("& )~)!&m&n%% 'xĖ `  p`M `M y :`M x`M y`M y`M `M 0`M yxDŽv<=Puh ZM i jc d ˤ axs/.~/h ?u>X,c-P`ucbi!"" "s"~j`u!/.ow[].TEXT.BACK.CODE.SVOL o#::?dir_infooXK;=iAA0(O : e. *** EXTRAHEAHEAPOPS STRINGOPFILEOPS WILD     TYPE  "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);  PROCEDURE 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: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   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 Ntpupt p! !tp t ptprhp`! p! Ȗ+b,Pbi`!v!b bp .-+I? Ib? NP1i 1| p2( |gph Xd40( <?6hI? N0XdBh `0( <1vh `p0(`= N.,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<=hN0/2mrtpT,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-ch)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!-!,! / *a,Pa+` x - q)`*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. qhkՃk|sc-kyj"|H"~B"}a!!}!~.j~."{/"z0st p"}t pj~."{/"z0"|1hkxkch k pjuphj 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 ptprvupt p`t ptpt p 2tptp49gh`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 } -92 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 ybPYI<`r;ɥp;ɥo<ɥ2<5a dehijkfcn43xb( bG5 p7tpupgt pzt ptprvb5  a  |D:dlD  s d   kgJ- (*** FILEOPS GOTOXY STRINGOP HEAPOPS EXTRAHEAEXTRAIO PASCALIOSIOUNIT SCREENOP   "Type SI_Date_Rec = Packed Record 7Month : 0..12; 7Day : 0..31; 7Year : 0..99; 5End; { SI_Date_Rec } " " "Procedure SI_Code_Vid (Var SI_Vol : String); ${ Returns name of volume containing current workfile code } " " "Procedure SI_Code_Tid (Var SI_Title : String); ${ Returns title of current workfile code } " " "Procedure SI_Text_Vid (Var SI_Vol : String); ${ Returns name of volume containing current workfile text } " " "Procedure SI_Text_Tid (Var SI_Title : String); ${ Returns title of current workfile text } " " "Function SI_Sys_Unit : Integer; ${ Returns number of bootload unit } " " "Procedure SI_Get_Sys_Vol (Var SI_Vol : String); " { Returns system volume name }  " "Procedure SI_Get_Pref_Vol (Var SI_Vol : String); " { Returns prefix volume name } " " "Procedure SI_Set_Pref_Vol (SI_Vol : String); ${ Sets prefix volume name } " " "Procedure SI_Get_Date (Var SI_Date : SI_Date_Rec); ${ Returns current system date } "  "Procedure SI_Set_Date (Var SI_Date : SI_Date_Rec); ${ Sets current system date } "    {**********************************************************************} " "  Implementation tSYSINFO dTa! P/ P= PK &PWzhe @Ps <P)`*P`` <@<`+ DD r**::ZS<5.(! a ***     "Type F_File_Type = file; 'F_Date_Rec = Packed Record 6 Month : 0..12; 7Day : 0..31; 7Year : 0..100; 5End; { F_Date_Rec } ' " "Function F_Open (var fid: F_File_Type):boolean; " "(* returns true if the file is open and false if not open *) " "Function F_Length (Var Fid : F_File_Type) : Integer;  ${Returns the length of the file attached to the Fid identifier. %If the file is not opened result is returned as zero}   "Function F_Unit_number (Var Fid : F_File_Type) : integer; $ ${Returns the unit containing the file attached to the Fid %identifier. If there is no file opened to Fid, the function %result is Zero.}   "Procedure F_Volume (Var Fid : F_File_Type; 5Var File_Volume : String);  ${Returns the name of the volume containing the file attached %to the Fid identifier. If there is no file opened to Fid, %the file_volume is set to a null string.}   "Procedure F_File_Title (Var Fid : F_File_Type; 9Var File_Title : String);  ${Returns the title (with suffix) of the file attached to the %Fid identifier. If there is no file opened to Fid, %the File_title is set to the null string.}   "Function F_Start (Var Fid : F_File_Type) : integer;  ${Returns the block number of the first block of the file %attached to the Fid identifier. If there is no file opened %to Fid, the function result is returned is zero.}   "Function F_is_Blocked (Var Fid : F_File_Type) : Boolean;  ${Returns a boolean that is TRUE if the file attached to the %Fid identifier is located on a block-structured unit. If there %is no file opened for the Fid or if the device is not block structured %, the function result is set to false.}   "Procedure F_Date (Var Fid : F_File_Type; 3Var File_Date : F_Date_Rec);  ${Returns a record indicating the last access date for the file %attached to the Fid identifier. If there is no file opened to %Fid, the File_Date is unchanged.}    Implementation zFILEINFOmd( Hpi= iiS  iiq!  P P! P P ii ii! r`UJ;,! j ***   "  Type $ $D_PatRecP = ^D_PatRec; $D_PatRec = Record 1CompPos, { starting position of pattern in subject string } 1CompLen, { length of pattern in subject string } 1WildPos, { starting position of pattern in wild string } 1WildLen : Integer; { length of pattern in wildcard string } 1Next : D_PatRecP; { next pattern } /End; { D_PatRec } $ " "Function D_Wild_Match(Wild, Comp : String; Var PPtr : D_PatRecP; TPInfo : 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) } "  {*************************************************************************} "  Implementation WILD hDF5+b,Pb bb지=..-k`r$x$xi!#!{!"!y i!#!" $x$ Ė*a,Ph +x'a+x지 h ++xĊ .-*a.Ph--xć,a-ć,x8a-x지%%h-x'--xć+a-xĊ,Ċ +a-xć,x+x ,ć--xĖ/xćQćxQx짃ڇ$Qx지~Qx지%xċQx질ڇċQxjxćQćxHQx짃 Ċ1Qx지- Qa"i"!ćQćxP! ccc"!ccc"!Qx지}xxx<cĊ-xćx'zQx질 xx%%x%x'$&Ċ>r!x$xh%x #! h &"#x"xr!Ĉr#x"xϖ3)jk'zQ+질(*+*&l$"աQ+h$(*i %#k+ $ !#!ڡj+ * Z jLz(*+ =+ * +'zQ+질(*+ b!( )b( րk"#*&+')Ċ*&+'"j")xz(x(xo'&'{'''yĖ yQ~P(|P`[c%r{Q"Q'(&!{z{x*{x|#{xć##|$#{xć{#ć$#!{Ą%r!s @0 0h={ 0hYQ8 e *** HEAPOPS     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    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%[3Tm54yrlfzP"" 354fr)fr f{ 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 WINUNIT   y +.FORMATWICONFIGSAMNUUNIT SIOUNIT WINUNIT A!7 [IV a.0]t (c) 1983 SAGE Computer Technology, All Rights ReservedxFORMATWIg`p`p`% p p pp奈gg#ĆąՂ pgCi,uh,q,P pX,P  p+r p~ p pp,Pu ii!p,j)r% p`P*H`1PB`9P9`@P0`GP'`QP`YP`aP `iPր|` p p p, p p  p^ p pp*kr p p p, p p  p^ p pp, u,c-P/Ehij!c"c!질j !i!c/ .-xնit p p pdP p pdpkcd`uT   p pvj(iĆ Ĉ ʊ  p!L- h ׂp www h ? ha !!!ʆĆ! ׂj"ĭ"ԈɌĊ"ĆĖ! U ja  j  j` !Գ ɳ#!Ɍ l. " j# #xԈɌll iׂm`  p pp!?A p? p p p ppj% "?x "!"j"!&!"nk#&% #?% #?x#k% "? !i l1<2h ih icuׂ12j"2""c1"c"Ȋ1""j؋ ՝h i je jW jI j; j- j j jׂ" 2ik   ha "!  k iɭԌ?$ׂ ?x/./ՈɌ   kb """i ka ~"! %` ! " . -B kd!d  ,   h" . -9d!d  ,   h" . -ׂ"!ć i"i <h9 h '  hG 񄀧 Gi p% p~P p p p~ Gp8~u ~ p'r; p~ p pi!w,FPh www  `w?ɀXɀ0ɀ1ɀ2ɀ3ɀ4ɀ5ɀ6ɀ7ɀ8 YC$# բׂjhi!" ?x>" ?xi h!Y@&L@>Ě p)r pG p pEF * p . p QC$# ׂjih!" ?x>" ?xi h!Շ p$h! >L @xi h!K@L@>Ċ)r pQ p pEF * p . p p#r[ p pvhp(p ʀ w oi!'`p`p!i@ wdpdp w` p}oi!'!i!-ɌCCB)>h@? )(@@B??@B@ hӅ@k?jE pFif p p!2ˏ* p< p> p> p?@>>>(E@@B??@B@!iEԆ p pFղl p pi#@"?)>E!2ˏ* p< p> p> p?@>>>(E@@B??@B@!iEԆ p pFrr p p՚rz p p p ptZb,5 p5 p5 p5 pDD  pLD@x-ɍ p pLD@x-ˏ p pbl5 p5LD@x-ɍ p5 p5LD@x-ˏ p5 pDˏ pb 5 pDDb 5 p p p w p#r p pvhp w` p}ki!#!i!-ɌCCB%>h@? %(@@B??@B@ hEFiE p p!2ˏ* p< p> p> p?@>>>$E@@B??@B@!iEԆ pFr p p՚r p p p ptZb,5 p5 p5 p5 pDD  pLD@x-ɍ p pLD@x-ˏ p pbl5  p5LD@x-ɍ p5  p5LD@x-ˏ p5 pDˏ pb 5 pDDb 5 p p p pvj w t.2t48t:>t@DtFHtRt ]itlt wtt t t t ttttttt tt t t t t  tt"t ׂ -ʇ -ʇ !ć +ć ,ć $Ě pׂ r& p p{a r8 p pPׂarN p p"wwa p p pvh Rt`rP`u `**`P*Q*P`t -ɌRhI % p p phK-( p- p phH % p p phJ-( p- p ph  p4 i\tp p p, p p`PI`u `--`P-V-PK`u `--`P-_-PH`u `--`P-V-PJ`u `--`P-R-P`t&I-ɌK+H-ɌJ*+* pv,\t -Ɍ3t pI-ɌKiH-ɌJh! dp$r p pvh!p?t8< p p pb5 p"5 p"5H p5 p5L p59  p5N p"815V p58 p5X p5 p5 p"5 1 p5^ p5 p"5h p5 p5 p"5 p"=h =ׂ> > xb> ?n&?b&˧b&ˀ &ngB  gg> y> x   > x-ɍ5> x-ˏ4> y-ɍ7> y-ˏ6 P> ɊP PI P? P5 P+ P! P P Pք p  p pb p pg  p p  p p5 p p4 p p7 p p6 p pb5 p5  p5 p5b p5 p5g  p5 p5  p5 p55 p5 p54 p5 p57 p5 p56 p5 p" h pb 5 p"vi? >ׂot p` p p p  pa p p paa-Ʌ!   a ' xln&?%' &?x' &?x$$l&n՚ p$ p p$-ɍ p p$-ˏ p) p p pvm np$r p pvh$p"ltih ?sׂ ?xl$Q!ը  p p p p p p pbZ5 p%5/ p5 p5 p%5 p%5: p5 p%5 p%$-ɍk$-ˏj# pQ p" pS pb25# p5V p5" p5X p%!i!ˏ pb 5 p% h pb 5 p%!ˏ" pb5 p%5 p%!*[ p p p pvm# ׂtrg p pyׂĆׂy텈 h x 0-xʆĆĖ$-xiׂp{ p p pcP p pc 4'p--c`uo  ! p pvjtAiĆ- ʆ Ćׂ Ċ  p!,-& p p p p pG  pt t -.Հ/ w w IIrt p4FKIHJx&x'-xʋ./t! #$օy/$IKHJօˊK/$IKHJ օҊ/ օيօ݊[.D/ IKH Jօ/ օօ .wօ-e (Cannot run WFORMAT under Multi-User BIOSSOSUTILL Error reading Command syntax error - Number expected Head expected Name expectedIllegal system nameTrack expecteddBlocks expectedIllegal command%Bad Track Map must preceed Device Map Illegal valueEnter number of heads on drive : Head range is 1 to 16, =,HEADS=CYLINDERR=,HEADD=TRACK=Cannot have first track bad More than  bad track entries for drive ,NAMEE=SYSTEMM=UCSDDCPMMODULAAHYFORTHPDOSSMIRAGEEBOSIDRISBLOCKSS= PARTITION=:TOO,DRIVE BAD TRACK MAP DEVICE MAPP%File with Bad Track and Device Maps: .TEXTCould not open file  Too many bad tracksTOO Many bad tracksError writing to file Format pass Verify passFormat abortedd There were  new bad tracks foundDo you want a list of them?New Bad Tracks:Cyl  Head  Cyl  Head  Format was successfulError writing to file Verify passVerify abortedd There were  new bad tracks foundDo you want a list of them?New Bad Tracks:Cyl  Head  Cyl  Head  Verify successfulMAINNWinchester Drive SelectionnDrive 0FUNDrive 1FUNDrive 2FUNDrive 3FUNFUNFunction SelectionsFormat complete diskkFormat selected trackssSFORRVerify complete diskkVerify selected trackssSVERRUpdate Device MapssDisplay partition mapDisplay bad track mapTranslate block to trackkFormat parametersPARMMSFORRSelective FormattStarting cylinder Starting headEnding cylinder Ending head Do the formatSVERRSelective VerifyySFORRSFORRSFORRSFORR Do the verifyPARMMFormat Parameters Data patternnRetries#Error writing configuration to disk*Error reading back configuration from diskk%Error comparing configuration on disk!Configuration stored successfullyBDo you really want to destroy all information on Winchester drive ?Starting cylinder > Starting head > Ending cylinder > Ending head > Process aborted>Do you really want to destroy information on Winchester drive Cylinder  Head  to Cylinder  Head  ??Error writing to fileDrive :  usable blockss, bad tracksLogical track range1Partition Name Blocks Category Cyl Hd to Cyl HddDrive :  usable blockss, bad tracksLogical track range1Partition Name Blocks Category Cyl Hd to Cyl HddUCSDDCPMMODULAAHYFORTHPDOSSMIRAGEEBOSIDRIS                Partition number: Logical Block number: Physical Track is  (Cyl  Head Error writing to fileBad tracks on drive , Cyl Hd Cyl Hd Cyl Hd Cyl HddBad tracks on drive , Cyl Hd Cyl Hd Cyl Hd Cyl Hdd    No bad tracks on drive 'Could not read configuration from driveEnter number of heads on drive : Head range is 1 to 16, Winchester Formatter Version 1.2OSUTILLMAINNDrive is not configured in BIOScuOSUTILLp $_A*1_1_ 1_1_Bh>Cx!I0NN>Np $_A*1_1_ 1_1_Bh>Cx!I0NN>N8!9} v y T `x+CK{ ItH8S / 'STRINGOPFILEOPS LONGOPS EXTRAHEA PASCALIO EXTRAIO CONFIGSASCREENOPSIOUNIT MNUUNIT WINUNIT COMMANDI CONFIGSAy: "!! ``!ɤ"!I p^`"`pm p`$`p p`#`p!0 !p`0 `p p`%` p p*`!`p9 pO``p_ pu `! `p!"h! !  !"p"h! !  !"p! !p`  ` p  p'``p7 pM@`A@`pA!"T "k%k= k3 k) ^nk Kk 2kK k\ %kR J2kHKkCnk>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  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 * 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 Ntpupt p! !tp t ptprhp`! p! Ȗ+b,Pbi`!v!b bp .-+I? Ib? NP1i 1| p2( |gph Xd40( <?6hI? N0XdBh `0( <1vh `p0(`= N.,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<=hN0/2mrtpT,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-ch)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!-!,! / *a,Pa+` x - q)`*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. qhkՃk|sc-kyj"|H"~B"}a!!}!~.j~."{/"z0st p"}t pj~."{/"z0"|1hkxkch k pjuphj 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 ptprvupt p`t ptpt p 2tptp49gh`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 } -92 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 ybPYI<`r;ɥp;ɥo<ɥ2<5a dehijkfcn43xb( bG5 p7tpupgt pzt ptprvb5  a  |D:dlD  s d   kgJ- (*** FILEOPS GOTOXY STRINGOP HEAPOPS EXTRAHEAEXTRAIO PASCALIOSIOUNIT SCREENOP 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 WINUNIT   BOOTPSYS BOOTPSYS IV.13 [a.1]  BOOTG&7_B+NA$NNM}?<A/0|/?+N(fMfaRA?7AK/ 0|/?+N(fbAKαfZ?+"x0]/ /T'I'mP 'mTmX?+N(f(kN.xpNNR+MC~0+X@aWfarA&0X $0BXp ANNJhfJ+g(+ g "+f"8m Am*D0|0<*Q8fA,NN M0<BQ MT0T  0X0XI$M8<DBC4:SBml :xf :r gTB0,T@mD0@0RCM'HA< 0BXp A$NNJhf kCp 0Q`@`;CA 0< Q~ `>:Ma*|.zBBBB/:/:B/:??&zNKA0 @Mo&X @Mnb0X6aDXa@a>a<a6a4SCfJgN N"MBVfB2-4-ANuSg(K`2Y0NuA`A`XNA`XAxNN NRNNJ+f SNpNNBIOSENDBOOTRAMDISKUCSD p-System IV.1 BootstrapError reading Could not find Not BIOS code in Copying to RAM DiskIllegal directory SYSTEM.BIOSdiskette into RAM SYSTEM.INTERP SYSTEM.PASCAL BOOTPSYS BOOTPSYS BOOTPSYS BOOTPSYS IV.13 [a.1] BOOTG&0H< 7@B+NANNMs/<A//<N 0Bp A&NNJhf kCp 0Q`@`;CA0< Q~ `>:Ma*|.zBBBB/:/:B/:??&zNKA0 @Mo&X @Mnb0X6aDXa@a>a<a6a4SCfJgN N"MBVfB2-4-ANuSg(K`2Y0NuA`A`XNA`XAxNN NRNNJ+f SNpNNBIOSENDBOOTRAMDISKUCSD p-System IV.1 BootstrapError reading Could not find Not BIOS code in Copying to RAM DiskIllegal directory SYSTEM.BIOSdisk into RAM SYSTEM.INTERP SYSTEM.PASCAL  BOOTPSYS BOOTPSYS BOOTMU 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>aafZRA/'AK/ 0|/Naa0X 0BXp A(NNJhfMazA0X C 0BXp ANNJhf3k"#k$p NNJhfG>+Ma(.kBBBB/+U/+ B/+??&kNKA0 @Mo&X @Mnj0X6aDXa@a>a<a6a4SCfJgT N"MBVfB2-4-ANuSg.K`2Y0NuA`,A`A`Xa0A`XAa a NRa a! SNgNJ`Nup NJp NJBNJNJNJNJNJNu0Multi-User UCSD p-System IV.1 BootstrapError reading Error writing Could not find Not enough memoryIllegal directory SYSTEM.INTERP SYSTEM.PASCALSYSTEM.MISCINFO 1BOOTPSYS BOOTPSYS 7jBIOSPROG BIOSPROG IV.13 [a.1]7i 7gBIOSlFCopyright (c) SAGE Computer Technology All Rights ReservedHpQF' x (f0<]A BXQA!A0<?BXQC Yf A: 0AX!A!A!A1J!A!A !A|!'%g0eCh!dAC0Cag>C!hACCŇŃŅ'40Br@Q0: HA&n!xr0aQCp"QACp$I QA`!taa)Xa3 aEaj&a/ ICa(C a(Ca(C.a(C@a(CRa((_ x2g Ab1aP!CbEp "QCJ xJhg8AL(#HAL$#H AL #H#H(#H,AL#H#H#HAL#H CA"A"A&"A2"A>"AJ"AV"Ab"An"Az"CA"A"A"A"A"A"A"A"aGa xt1&AHz !_!|}a xCp"Q xCp"QL 8tg0.h _N`L/H`HzCEF `F8NuL`Tr0aOZpG$I&Q&&&Nur--rphhjh32VTLLNL]]:80020db0efI,t"xpBH`J g4r:aNzp(G fI(BG$K Qp 0QQNuX`,d,Z++,+tC Yga, BfCQNup/8Hz,!JgŇ 8gp!NuPpNsB8%sAL`NLNu/ A8Aj A@0;N  A Ns ,6.r/ A8Aj A@0;6N2 A8g8ŁgP)g Ns J T ^ hC08(fF!gCJx(f NsF He/^HeHeHeHe He5x?(`/1 @n H0; N Ns>@FNn0f(l.../Tf>(2L>>Nu xNuNuB8Nu/ "xt#Ha-"_NuNuC@aDfCNuC@a>DfCNuA0 / ?/ / / / /Ap NN0(f /h$ONu _1@ONur pQQF'8%%sB8 O N xtB(!hp(H1C xta T"HAF#H#H#HAF#HAhpBQApBQAahAa`AaXAaPAaHC.i ac iN`FHzFpHz*HiBg?< Op NNJ)$g J)&gB)$J)g J) gB) iNH`C@a 1ADfCLNuHpC@a DfCLNuH"xt0al0($h&igF@h*Hz/(Nu5|LNuH"xt0a6&j0)h$gh*gh./Hz/(Nuaf5|LNuBh @nNHEpf H@ @nV`F  f ?nFH$HA, pNu  f n,H$HA pNu @m @n@hH$HA pNuXL`|H"xt0at&j0)h&gh*gh./Hz/(NuaVf5|LNuH"xt0a"0&j0($h&ig Hz/( Nu5|LNu1|Nu1|NuF!0)h(gF@h*f0)h*!IF Nu0)h,gHB)a@,F LJ)gF Nu0*g @n2HApH@ @nHA p0($h&ig/(Nu5|Nu)f0*g @nHApH@ @nHA p0)h&gh*g h.//( Nuaf`/0* f6&`NS@fAp&Q`S@fA`p`W@f)g AHp`S@f)g Arp`5| _NuHp6* j Cb gaVLNu Cb ` `/] Oa4&\ _J8&g*HC2x4B8'Ht8&HHCցָ ` j!] Oa!\NuNuBNu5|Nu xt hNu xt hNu/ xtp(f(?@ _Nu/I xtA402A A gSAIA020 _Nu2IA`` xtA`Nu/ "xt m( ,o m nC#` C`"A""_Nu/ "xt m( ,o m nC q` C`"A Q"_NuRx*8X8XX NsC)g Ns)H`$x, ga2k""R!,ga"jNL`"Ja` *a`B@CJ8888B@HB48*HB88f$8f"A@J8CDBDAz HA2HANuJ8J8C`aB0 B2@@B@H@+@v HAh d|RAzczRAhH@0H@!@"x,$ g.g6$g"B`"x,k$I"Q$ gj $LNu !,"HaL`F'sB8NO`H`"x, gg$I"Q gf$LNu"P!,ga `C`a )Ad zH@S@`H@HAAdC)gNuCt @l0BAJ@g2<}H@HAgrHICNuS@2:`H xt @n HCp)HCl qHz /(NuB@@ LNsAPt"X)/fNQA2t?"X)/fJQa[BJ8gS8f08g F@ xh&A\!|}a,NuS@/fBi*`S@/fBi*`Y/ xt/h _NuY/ xt/h _NuY/ xt/h _NuY/ xt/h _NuY/ xt/h _NuY/ xt/h _NuY/ xt/h _NuY/ xt/h _NuY/ xt/h _NuY/ xt/h  _NuY/ xt/h _NuY/ xt/h _NuY/ xt/h _NuY/ xt/h _NuY/ xt/h  _NuY/ xt/h$ _NuY/ xt/h( _NuY/ xt/h, _NuH`CEp $QCRhR`gRhT`RhVABB0h6BB`S(EB@F%Hh!xX!F)g`@a"`p=a"~`)H@F% 8g!XFA\JfHz!_1|Bh aP)@g iJ(fB(PstfJ(fL Hzz?< /H`/ "h]!Ip"XQ2 HzN""_``FL` B\ j8a:Nu/ "hJ)g2)x"zB)"_`"_`H瀀Aa= xt h<(@g Aa=lAa=dNINJ Cg4 Rg xt h<(@g Dg0 Eg Fg6pNJ`Aa=F! xtLNs xtL/8NuF'B88%%s` BREAK KEY HIT - C(ontinue, R(eboot, D(ebugger, F(reeze, E(xit? Continuing after BREAK @H@"xt i<2)h*gh./Hz/(NuLNsHaLfLB/NsAF%2(NhPg0hRAh2fB1ANF Nua3gB`H z`0H z`&H z`H z`H z`H z2h6F%(Afd0(JhLg,bR@h4mB@1@J"hB)PsL Ns1hLJ"h0(HJ1g@a^B)PsB2h8B`eeee(A`A`A2h8BB2h6`^@H@"xt i@2)h*gh./$hNLNsHaPLfLB/NsC(AfJ)m|F%2(LbRAh4mBAhJg1AL(BfH(Af@BB)`*4h6*fJ)fpF Ha26LF%`4h8BF J)g a:J)j/0(HJ1g@a CJ)Lk Nua1g:`B)L/a1 `F `qsv13ܶfāćpAGz H|pEh2&x2I@J* gJ8g`2<hka9(H2<bka9RA@AF/C^J+gCP2*C2CTrA*I Q  CJ+g"C2*C2CrA*I Q   _j 1j 1k ?k @1k21k49k2r+!A^k!D1kD9kJ9kHk C1R69R41j89j6)H8!L:|0J+f9|L1|H`r+A9ALr+A1AHC)INu2Jh" *r(HB@(@S@C4q6q1 2h8J(1flB(?2(2f8!gA;p@I|&BB h:BB(@gpr@AABLNuJ(?2(2f8!g0A;@A`@ ?567:<>?H`$*g aSfLNuH`$*g iB`,B)4h6*fJ)f6F Ha(8LF%`4h8BF CNua'g~`F ` NsJ(0g h8!IH`$*g*f*f$aDSfLNuF"*aF `F"*aF `J(0f h:!IH`$*g aSfLNuJ@f,0)h*g""h8F%B)A1hPNB(E Ip&aF NuJ@f0)h*gF%1hLJF Nu*f h8`<0(PhNlh268c< G42h4)<6R6T6VNu*g h:`0(LhJlh46Nu0(NhPNu0(LR@h4mB@hJNu h862h?7hDhC h:h@Nuk@ h8` "h:k@1S2k?1kDkCF%aF Nu)H(xN xJNL`H`4H`rA7Baf(B87gpfg pgp9LNuH`rA0BaZJ89fNB80g>p g6p81 e,p e&p ep ep ep ep` 82gp9LNu4,=g Jx@gP8="BNu"9Nu28@,2HAR=BAHA,0,1l;HA<0,6!B1>`/ A|(f& 'B0,8!@K!Ma|*_Nu f|aZ`A: ( !@ a窐h @c @ c @c p` p`p`p@ apJ,QgT'|RNupJ,QgT'B,RaTA1@H@@(gaCJ!IB"( I c cp`p `pH@!@aL|NuAl 'B(Nu|J*g B*)Nug)'Hz!xNs'Ns8Qf9`9'''')Nu)NumB89HzA HzA ''AדBA9A0Sx0j0g0Ns0NHz J8:f~AքB(a'' ' ''AB(RB(S0(:AրB(RB(SAR01@'anf:pQ8cgaB89aJ,SfA !b`J,?fJ89f|SA (gA !J` 8pgAL!JAf!xAո,<< @lQaf`'Aզp0nB,PB89AaJ,?f J89fx;P x^N/ AԌCl"ACPp$I Q"xXp QA CB"AC2p$I Q"x\p Q$_Nux''g)'Hz:!xNs(xVA$B8p,%gp(gpB@(l8!N!B!F1 @B8q(g qp!B>oJ,0f 9`A !Z`lJ,?fJ89fB89JBgJ8pg.8cg 9` 8pf1D>@;A<`af`A !^`J,?fJ89fB89Av0< ,jA 8pf00S F0R0`L g00 F0S0R0,18;o '` '`00S r0Nq0NqA !xAє'afAјB0<}!@a`0< ,<08<,Q`AhaT8pg g0< QaJ,?f89fVB898p f,=gpA!J` fpp08>ѸFBx@A!J`'J,Dfx9Dx9E 8pfpS8ooh89 g> fB,SR,@A!J`> b bB8:` b c*S8loR,@B89Ax!J`B8:` xJNx9Fa8 xVx9'P&B(Ps(3gJ(g p1/ "Hap"_B($!4VfA!J`CJ)$gag5|NuP$CB)&#H8A(   j% JB4C 8Vg *4f%I4`!VC !J)gCNqNqNq(f*C"xtJ)&fah`C)'H1@B)$NuJ@f0)h(g h*gB(SNuBS7h6B@(27@(1 (0f@7@p)$7@2)'7@4(D7@8(E7@:NupE0$QB8:NuE0p&QNuBSJ0g (407|7|7@Nu5|NuJ0f5|Nu)g![0![41S8aNu5|Nu&0&468NuJ0g( 80eJ4f!@4 (4b0nB0NuH`t`H`B"(0g*B0* *fЁ"@"*gЁ4n$Ka`5|`5|LNuC d"SJgQBAJfCNuQ`pgSJg"QBAJf"g`$Q`H`t`H`B0*H@0* "@"*g$KaLNu@H@"xt iD2)h*gh./$hNLNsHaLfLB/NsF!BA2(:@RAh0mBAh>f(ag2( gC/ "h0(8J1g@aB(Ps"_`J@fD0)h*g:F! gCB(>1h: "f: "f6 "f2 "f. "f* "f& "f" "f "f "f "f "f "f "fSi`J@f H@JgR`JgV`T Ah iNSiSfJif~J)fNuB) if6P)f. i@AA iN i@Bf (B0h8Nu ip>N`/PAhR0Ri3@tfJ)f )g _Nu0* |$f AHz`>|%f AHz`.|&f AHz`|'f AHz`|?fVAHz!_Ca*f!S !Sjan*fCNuC(gag`3|`p$"J`&p%"J`p&"J`p'"J`p?"J JB)Ps(f"E2ga(gH`"( NNuNuF%J)f J)fab`F NuŇŃŅ1&1aPNuHptrPQCzH@F'a~F82<%Q@F'8[8[aVFLDDC@1xg2nDCxo(RgSfx`"xoRgR`` QjPB82<%QL8Nu",,f,fp,4HA@bHAHA0,BAHA@H9@, , m @9B09@.`9B.Bl0,@44LNul$l%)l )l)l9l"B,5AF!J8f&A*!AHzl!_p0<}!@a`dF `H(xACaC,f,J,fJ8g|p!,7g0SgDSgVahfjp0,.Ѭ HѬP`afB ,5f|5`a(f*a6|7`|7l*2`|` ,5fa,J,f@@S,2o gH gB g< g f ,2m `@ `B,0tNu CHNh/ xt!O x|!t.h"_Jhg )gNap0(A!@Hz!_aŬLNs xtJ(flg"xx#h"x!i#H!x!"HB@B8s/ $H hJhf(l(!|!xJ(gpf$_Jg"xt|NukB(BNu|BNuAxJgaŔBF'J8sfCNr C`HF `@Ba8g\XL $F!HNh/ xt!O x|!t.h"_Jhg)Nap0(A!@Hz!_aĈL/` xtp0(A!@Hz!_a`NuHC xtB(PB(F a xtJ(LNuCagA~aĠB@F!` :lf xtp0(AX!@Hz!_aCNuB(NuPtgNupBt$x4<@JJr g J*gJj g4<J*gr2*  gda zNgX&i^&)^gN b6SCKG8G0Jf 2<a&K*x2< Q&S#K^2+RAIA`B* x!"HSBBQJ*gISA3< QkS| fr{*JGQ!hr(I1p2(a!Ira:r a6ra2ra.ra*$x"xt IJ(ge& e hfNuaJf#xtNuB8%sA*N 8H@N$H@N$ANNNur`r`r` r`r`r b8&4:, xt.h A"aA00AaA#a H@aH@aAaa b:A a0aAa H@aH@aAa0aA!a|AatNINJ fAabF"xt.iaj)_gHp)f)H01 g fAa$AaNINJAa Sg sff^f Op)f)0t&<H01zf :g$R&:!C!i1B BhHB1BBxJ8g*H t4a0)h&f0)h&1!Lp NNJhf< iJg$H&:hQ i :fN"xtAa`Aa`Aa`A p NN` :g6 @C@f,$xtCp%I5|?*.5z.N$xt5_.%j`BMUBTMUBE Type S to start system: Error reading boot device No Bootstrap on boot device Insert System diskette Not enough memory, base of BIOS @  Can only boot with Configuration Version 2.x  PROCESSOR EXCEPTION: Error @ Function: Access: Inst: Type space to continue BusAddressIllegal InstructionArithmeticPriviledge ViolationUninitialized TRAPgNJ`Nu/rX? c0NJ0Q"Nu/C Ac  g  gBAI"q"NuI A?nCt`I AnC`H@@ x!"HSABQLNuH h^@gJ)Pf g mar`2)R(g(` f0)R(fAI2;pNlAPLNu fJ)Pg2 b (g2`J)PgB)P?pa0`J)iga2)HiJIAR`  .r40<BvZ4L` 2*8BLV`jt~@\dl$F^z(HxrNu`$rNurNurNurNurNurNuJiHgSiHBNuJiHfH2(iHSAg&4(JG(KISA'$QL`@2)HRAhg3AH`2)HRAhfHG(K2(HISA(QL`JiJgl` JiJfJ(g\JiHgTSiH3hJSiJ`B2)JRAhg43AJ`,2)JRAhfJ(gBiJRiH2)HhfSiH`bBiHBiJ`aF`rdNu(khl3@HreNu(kưhl3@J`rfNua`rgNu@S`2)J4BIER<fR<g BJ*Tg*TgIB3AJ``J(gX3hJSiJ`J2)J4BIESjSk:tJ*Tg*TgIB3AJ`2)J4BIET`2)J4BIET`ET2<B2Q`E2)HI2)J)fB4Q`)fE2)HiJI2(iJSA`< `E2)HI2(SA`E2)HiJ`)fE2)HiJ?I2(_SA`v< `)fE2(SAaZJ(f Nu()R< `R`R`R`R`R`R`R`R`Pg`R`R`R`~R`tR`jR``R`VR`LQg`DrhNu(Er(Vg2fR`RQJ(gp`riNu)R()Ra_R`B)QrjNu2(t)QBIAB1R)Q gJ(V()Qf`Ph`Qh`rkNu@f`E2)HRASAI2(iJUAk5bQBf`XE2)HiJI2(iJUAk$4QBf`&a,`(HG2)H4(I(K2(iHSAg ISA(QBB)f2(SA8QL`Pi`Qi`B)QBjrlNu 0m< :m: ;gT ?gj Am$ {mp` Am [m am {mrrmNuBA)QE*k AkrlNuT)QBA)Q gEBjjrlNuBA)QEPjrlNuBAA 2;Nt $8F \ jv  2)jfRAiHjBiH`2)jfRAiHhm2(SA3AH`b2)jfRAiJhm2(SA3AJ`B2)jfRAiJj2BiJ`*2)jgSAhl4)lgSBhl 3BJ3AH`2)jg Ag`2)jg> Ag`\aSijo`?)Ja3_JSijo`aXSijo`Jijg`PBA)QE jjg jjgUj`tBg`Bi`Q`BAE4*jg Bg, Bg. Bg0T)Qo`:Jg)Qg.)sR`)R`)R`)R`F%08gzF ArHeRAX` P0(F@x(Ng$B(NIE$rg"HDg"iDf`$hDC"h@(M nfJ(PfPB(M`|LfJ*PfPB*M`|LC(M f#J0)JiLgI0(HJ1g@aآI&j<#K:/ Cx+FSg$CSgCSgCSg CSgC""_|M+#xt`JC`@Ha&LS8fPB(B(LPB*B*L|M`8a`v(xt)h@@&i^zaz az azazazazazazazaT<"ozavzap4+SBB,J`RN0< NJ.TgzaPRWgzJ*ggza6za0MBtrkfkgJ+g*J.f++a.T`++a0 @ g&NJRAkoRBJ+f+Faza`/RA:+Ak^VfXORBko`,_SA`zaz ag6M0+2+HSAJ+gSA0NJ Wz J*hgz aHzaBg*fNJza44*Hg SBza&Q2*Jg SAzaQJ*igz#az ag*SNJJ+g ++a`+g TfaNugza+gf+g:z Vg. Wf& a+zT daJf+`B+Fz d aZ`TJf+g4zaB/BMz+ Vg Vg6PQ+NJ,_+gza,NuHM 6Pg6Pg NJRfpL@!NuCB*B((j@|PB(M+#JC`B0* @n H0;N 5|Nu,6L0* @nH0;ND,H`*a4* af* @f A$&&&`5|LNuH`)g&*a4* afC*gSg,Sg\5|CLNu0h*gh*`5|`0h(gF@h*fh*"xt&Iif!I`"ifh*`A$ 0TT0`Jg/SB@2 Nu2)NuJBkB BnTJA tf Bn@JAV p BNu  f ?n&JA4 p BNuDB Bm  fJ`B`<Nu/C2* AgV Af<2*g@SA x08g S@JPgJAg6&&&&SA`QB[BBBBC"Nu5|`66BR`Hx v)R0* gS@g S@g\S@fa`W@fBx`"K2*gSAC48g>SB xBD(H*ITJ\gRDffff 5|`nQQjxn> xBD2*SA"K(HRDxnJTf*BT((((Q޸xo1`5|` `5|CL0Nu"K2*gSABC48g>SB x(HT*ITfff fBP` QPQaJg5|`48SB xBABCRAJPg6Q1Nu"K2*gdSAC48g>SB x(H*ITJ\g&f"fffPg5|Q`&Q5|`/08g0S@ xtBA(RA xCPfBPQaLC"NuaNup)f)6Nu)gkNu&Nu)g#SNu0* gP)g @nS@g)g0HAh 0gx @C&h7| @Hz '_BB(CNu*fDH`(C2*Af)` An SA4IA 0g(@*f )P o " $( g$(hSf gBSf!L f1j #h4aVp` p`B)BpCL5@Nu(xtrt(l0* l@gj f ,R6StfJgSB[`HPap(HG 3g,(@G8 +%g&@`&BB,J,g p3/ "La̘"_LNuH@p*g @nxS@HC 1gh"@C*fh*frI4 gRA(@`6rI< gRA(@`6rI0 gRA(@`6rI8 gRA(@`6`1|CLNuBS )4g(@,R@'l 'lBk tfP`BS )8g @(R@7h'htfa!i<#H<`C )0Jg2 @J(g0(HA 0g @PBaN (!i<#H<`B0 )8Jg @ (!i<#H<`B8 )4Jg @1|a: (`B4CNu$xt"J )0g& @J(gS(f1|aaPs (`"ifNu````````Nu$xCpJfF2<8jaIGLr/ K(Q(BB _Jjf(K!L(K!L!R0`A."XXQAP Nurlrt~vp" (*,.0246DFHJLNPR`bdfhjln|~  *,.0@BDFVXZ\   "$(*,.02468:<++++++++++++TTTTTTTTT T"T$T&T(T*T,T.T0T2T4T6T8T:TT@TBTDTFTHTJTLTNTPTRTTTVTXTZT\T^T`TbTdTfThTjTlTnTpTrTtTvTxTzT|T~TTTTTTTTTTTTTTTTTTTTTTT[*[,[.[0[8[<[>[@[B[H[t[v[x[[bbb b bbb&b(b*b,b.b0 BIOSPROG BIOSPROG <CDG TMUUTIL INITMENUWARNINGSCONFIGMUCONFIGSAMNUUNIT SIOUNIT  T7MUUTIL MUUTIL  !7 [IV a.0]t (c) 1983, 1984 SAGE Computer Technology, All Rights ReservedMUUTIL !s pP p p ppC p p pC  h  p' p pC pB x x% pC p  x:: p x pE pC p˧M˧U˧C˧FYM p p. p pY p p p@c p ph pr pC p puiTc2( pb--} -j -l -Pbs՜C  i! p% p p p p p pC p# p p pCs) p p pC ps -p pu,c(|h 0  th th K %  ` w k _ S XG ,;  0  % n  K  2 t0h 0<s p4p 0  th th |{ i{ h| !|/|/s p4ih0/ih/ih /ih{ !ʆ{ ʖC{h   V//h/h /hh{ ʖ{ h "    //h /h/h /hh%{ ʖ`fo``ɀPaffF``ɀPa ff ``ɀ(aff``ɀ(afɡf``ɀ(afɡf``ɀPafɡf }``ɀ(a fɡfɡW``ɀ(a fɡfɡ1``ɀPa ffɡ ` ij!ɀP!ɠDss !ʊ/ p(s !ʊj5 p4Eji!ɀ(!ɀ#;! !ʊ*sAs pN pj4 !h/u   P     *  P  ʋt   P         ʋu   (     *  P  ʋ$u   (     *  P  ʋu   (     *  P  ʋ*u   P     *  P  ʋt   (         ʋ1t   (         ʋt   P         ʊ:si p4$ ʊsr p4ց+s paP p pa  p p4+ar ka p* pa p pu,+h Gk pk p  p p p  ks hh  s Ԙs h݇+/ `Pdk/ pk ps4 p`P/5ׁSSpkS@p`kP5ׁ` `s` -*P `*r `SS*P S` SP`s^! X!P PJ PA P8 P/ P& P P P !@Ȋւ ! 0P 2P !Ȗ,c-P/cեc /cċc지^ /cċcc지Hcc지hh`cabr /"pcr c3 /pc5 /pc7 /pc9 /pc; /pc= /pc? /pcA /pcC /pcE / pcG / pcI / pcK / pcM / pcO /pcQ /pcS /pcU /pcW /pcY /pc[ /pc] /pc_ /pca /pcc /pce /pcg /pci /pck /pcm /pco /pcq /pcs / p/Ė/.X>@>x?Ӆ?˥QӅ?˥PQ ՒPPˏh/k  uP {PQ H ɀ <  (#  @ւ~ւՅQ h/k  P PQ H ɀ <  (#  @ււ.#! /{{{|{qiaVN}F~>3(i!ւj/xph`XMB7+#ւ/vk`UJB7,! ւ͋/1&)% t&%%ւߋ/'ւd/$zyx{ւ5{Ɋ ւ/||ւ/Ӛ/V/ Ӛ/9/0Ӛ//@Ӛ/ /yn`RJ?4)ւ/A7` *` ` ` /@131#11փf$ɀ0/d/e /x՚/ x/x/x/x/x}w/7( փ62/%h`h`փ փ$s p4s p4 .X>@>x?Ӆ?˥QӅ?˥PQ PPˏh/Q ʊ ʋQ ʋQ  ?ʊqQbˏR  ʚ  ʚ  ʚ   ʚ@  ʊփՅQ h/Q ʊ ʋQ ʋQ  ?ʊqQbˏR  ʚ  ʚ  ʚ   ʚ@  ʊփ&s p4#+.  /{ʋ{ʋ{ʋ{ʋyq0 ʊ^0N}F~>ʊ3++ʊ!ʊʊփ/xpʊaʊRʊCʊ3+#ʊʊք/ʋʋʋʋʋʊʊtʊiʊ^VʊGʊ8ʊ)ʊʊ ք)/n&ʆ<ʊ]% tʆ; tʊ9%ʆ;ʊ%ʆ;ʊք;/'ʊքA[/$zyx{ʊքF,{ʊ{ʊ {ʊքL/|ʊ|ʊքQ/Ӛ/ʊb/ Ӛ/ʊA/0Ӛ/ʊ /@Ӛ/ ʋZ/ȚNjʚɋ̚ˊv͊nʊ_ʊPʊAʊ ʊʊҚъքU/Yʊ ʊ7h`*h`h`h`քiK/@1ʊ31ʊ#1ʊ1ʊքp/(ʊʊʊքv/d/e ʋ/ċ՚/ ċ/ċm/ċU/ċ=/ċ%{asa}ʊs4 p/ʊs p4e ʊs p/ ʊ ʊք>:/-h` ъh` ъքք+$NTh T_+Pa5 ׁPaaNPa % a+r aUU+P Ua UPQ as h)`k Co Sw@Ć@Ć@ STRRTSS@RSąRR؂[s s -JHC.36.;uu uuuuuuuuuu}u}`}K}&6F F F F F F F F r 60u.(dž1OO\.8R0#00?# /օ^.uuuuuuuuxuu]uuBF F F F F F F F }}}}ord P60<1OO+?k pօֆ -s p -Պk C $Multi User Configuration File name: Could not open Error reading )Illegal code file format - wrong byte sexFile has DataSize of  instead of -11Configuration Version  read successfullyyData in  was not Multi User Configuration file..Ready to write changes to : /Error writing new configuration information to Configuration changes saved..-Error closing configuration information file Abandon changes ? Configuration changes abandonedMAINN(Illegal setting for Extra Serial Channell/Must remove dip switch selection from Baud Rate%Use on an 80 track drive (read only)?Use on a 40 track drive??Sorry, no other optionsUse on an 80 track drive?4Cannot access 80 track diskettes from 40 track driveeIllegal selectionUse Low Level Change Menu f_YSK&Terminal Emulator Configuration File: Emulator load aborted.DATACould not open +Error reading Terminal Emulator InformationTEM11TEETEM EMPTY+Error reading Terminal Emulator Information EMPTYTEMTEENULBELBSSHTTLFFESCSPP^ DEL NULSOHSTXETXEOTENQACKBELBSSHTTLFFVTTFFFCRRSOOSIIDLEDC1DC2DC3DC4NAKSYNETBCANEMMSUBESCFSSGSSRSSUSSSPP RemoveableeFixed RemoveableeFixedamy8AJS\enwNZfr~ ss. ggjjjjOOOOOOOOOOOOOOOO0H`x/Drive must first be configured in channel table/Block size must be 1024,2048,4096,8192 or 16384Fixed4^uFixed4^uOnly valid for Modem PortO[gs&/8AJS\enw)9IYev^m|TEE EMPTYCannot specify EMPTY emulator#Number of I/O Buffers must be 1-256+Buffer size in 512-byte blocks must be 1-32`llllll&&&&#Q3X]bg#ssssUg{EMPTYTEEOSUTIL,SEGSCCHEMAINNVbwV:Xvbw3U7RmJ\n'OSUTIL,SEGSCCHE   ry%W< *EXTRAHEAFILEOPS STRINGOP PA'SCALIO EXTRAIO CONFIGMUSCREENOPCONFIGSAMNUUNIT SIOUNIT  INITMENU %. p p p p p p"%s6@sCKsMTsV]s_dsfqssJ~sKsLsMsssOss(s)s*s+s,s- s .s/s0s!1&s(2-s035s84=s@5EsH6MsP7UsX[( sfrst ss s ssssssssssss  Iss s s &)+)s69;*sFIK+sVY[,sfik-svy{.s/s0s1s2s3s4s5s6s7s"$s1<s>HsJYs[ jsl {s} s sssssss ssss sss s s!s's0?s8?sAIsLNPs_acssuw s s ssKs %s s ` s s s s Xs ,s  s  s n s K s 2 s s s!s 's -s 2s 8;sEs Ks Rs X[ses ks qs ws }ssssssssss s s s s sss s ss s"'s)+8s7s>sEsNsTVX9sdfh:stvx;ss?s@sAsBsCsDsEs$&(Fs468GsDF sSs]sfskspswsss s s s s sssssssss ss"$&s352sC"NsQHYs\^2sm#xs{Hs"ss s s s s s )s E s Ys j s s s #ss$s%s&s's$sssss %s-03&s@CF'sSU(sipsss}ssss ss s s s<E p# pH pT p p* 'Ɋ      ց\( Vr p# pu p' p p p p'o* Ƀ* Ƀڠ* j"+չ#"խ"O"O~Ս* Ɇ"O ɰ* Ɇ"O ɰH p# p p" p p p"jA#ka )Too many warnings, checking is terminated Warning: task % base of memory exceeds top of memorytask +'s system stack is inside the task's memorytask 's memory overlaps task 's memorytask 's memory overlaps task 's memorytask 's memory overlaps task 's system stacktask 's memory overlaps RAM Disk 's memorytask 's memory overlaps RAM Disk 's memorytask 's stack overlaps RAM Disk 's memory RAM Disk  has odd number address RAM Disk 's base exceeds its top RAM Disk 's memory overlaps RAM Disk 's memory RAM Disk 's memory overlaps RAM Disk 's memoryTask , logical channel has a zero Winchester partitionnTask 's terminal channel has Remote flag ONTask 's logical channel  has serial channel with Remote flag OFFTask  is sharing terminal with task  without shared mode sett- TCONFIGMU CONFIGSA )CONFIGSA~: "!! ``!ɤ"!I p^`"`pm p`$`p p`#`p!0 !p`0 `p p`%` p p*`!`p9 pO``p_ pu `! `p!"h! !  !"p"h! !  !"p! !p`  ` p  p'``p7 pM@`A@`pA#"#h T! l%l=!l3!l)!^nl!Kl!2lK!l\!%lR!J2lHKlCnl>l9,l3Xl-l'l!l` ll%l Klր !lր("#h >!l2!l(!l!n^l!2lK!l!20l!K1lz!n2lp!4lf!,5l[!X6lP!7lE!8l:!9l/!` :l$!l!K?l>l!  i!i!lր} ## ""!!(``#"`#!`#`p ih`p    r prprpp# ! s5&CONFIGSAGE must use BIOS 2.4 or MU 3.33P FA) {sbUKC91'x *** PASCALIO  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 * 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 Ntpupt p! !tp t ptprhp`! p! Ȗ+b,Pbi`!v!b bp .-+I? Ib? NP1i 1| p2( |gph Xd40( <?6hI? N0XdBh `0( <1vh `p0(`= N.,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<=hN0/2mrtpT,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-ch)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!-!,! / *a,Pa+` x - q)`*P`jj0Gt p`t pRt ptpj{kj~.c+ ) ``` p`P ) .gaYPjhky|0as aPky}++ 1+as +0+as 2 aZ*Pa\Pky~Ձky},,I,}9.,{--.-y{0.-x-. a-yyPaP'^t pky}t ptp0ky{aiPրja ga ȅk|k|aP. qhkՃk|sc-kyj"|H"~B"}a!!}!~.j~."{/"z0st p"}t pj~."{/"z0"|1hkxkch k pjuphj 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 ptprvupt p`t ptpt p 2tptp49gh`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 } -92 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 ybPYI<`r;ɥp;ɥo<ɥ2<5a dehijkfcn43xb( bG5 p7tpupgt pzt ptprvb5  a  |D:dlD  s d   kgJ- (*** FILEOPS GOTOXY STRINGOP HEAPOPS EXTRAHEAEXTRAIO PASCALIOSIOUNIT SCREENOP *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 OCONFIG CONFIG [IV a.0]N LMUCF~~<~~x~~~R~~~,~~h~ ~ ~ B~ " " D" v" " " , 8, d z     < B@B B@ 45@ @ 5ef@ @  f@ @ @ @  @ @   ) *@ @@ @@@ @ @ +@ @ @@@n@@n@@~@@~@@~@@~@@P*}@PP*}@P *2H2ILt @H2ILt @H2ILt @H2ILt @  !"#$%&'()*+,-./0123456789:;<=>?  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 HJGFCOMMANDI  !V6Copyright (c) 1981, 1982 by SofTech Microsystems, Inc.(3j#~0nT <  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 COMMANDI!Vr ***  ,*SCREENOP  !76Copyright (c) 1981, 1982 by SofTech Microsystems, Inc.|0r#pqT7   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_deletekey); $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} $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_crt_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; $  implementation )SCREENOP!7r ***  ,MUINSTAL u2 ~~0LBLDO\\F$0\MUINSTALr uv pvpv pvpvpvpvp;v pvpvpOv pvpvpcv pvpvpxv pvpvpv pvpvpv pvpvpv pvpvpV`-w`wpWO`.Pv p`v p.WQĄ.WTĄ.WF`wp`wW)`*P-,u`v p-*r   *v pv p*Կ*3Cʁ26%Cʁ26Cʁ6ր 6tr vp"v pvp9v pvpvpYv pv p) pvpvpvpov pUv p) pvpvpv pv pv pvpvpv p~v pv pvpvpv pKvpv pvpvpvpvpv pvpvpv pv pv p*v p*Q*qhhHr   vpvp(v pv p9v pvpDv pvpvp] b И " f  i(n( s/ U( - w( ~+ zvpvpv pv pvpv pv pvp*v p*  pւiU{ -P~/PU1PK3P~6PU8PK:P~=PU?PK`AP~DPUFPKAHP~KPUMPK"OP~RPUTPKփV"^PTT "P  6t_PCɊ,aP$cPePgPփit ЂtP ЂvPІUi+ 2+Q 11-. /r .-,,u3p3˧002----01----02⼅1ۅ/uxv p,u0/҄-CP<P2P(PPP pփ5- 55"LL LR LPs0 SAGE BUILD MENU [V1.0]]? _______________________________________________________& MULTI.ONEE& MULTI.TWOO( MULTI.THREEE' MULTI.FOUR' MULTI.FIVE& MULTI.SIXX% P-SYSTEM WHAT.SYS.TEXTQVT1022TV925FD100 A - 12 MEG B - 18 MEG C - 40 MEGHow large is this disk?Ac, SAGE BUILD PROGRAMM? ____________________________________________________* You have selected (() This program requires a (SAGE  A RAM Size of (()K ' A disk storage capacity of ( ) megabytes- It will configure the system for ( ) users. 5 If your selection was in ERROR, press "q". To proceed with the (() program, press .SAGE BUILD PROGRAMM4_____________________________________________________ You have selected the  option which is not1 compatible with your existing hardware! YOU HAVE:A SAGE K RAMMeg Diskk YOU NEED:A SAGE K RAMMeg Diskk9 Please check the tag on the bottom of your SAGE computer6 to find its RAM size and the capacity of thee hard disk.#Type "D" to set the disk size.$ "P" to go to the p-SYSTEM..* to return to the BUILD MENU..Dp-512 00III10244122IVV10244188IVV10244188IVV10244400IVV10244400IVVBb 00 00122188400IVVIII*Position with cursor keys and press RETURNN MULTI.ONE MULTI.TWO MULTI.THREE MULTI.FOURR MULTI.FIVEE MULTI.SIXI== V STRINGOP LONGOPS EXTRAIO FILEOPS PASCALIOGOTOXY CONFIGSACOMMANDISCREENOP ASCII *A 3BASE .AT ,HAVECHAICONFRSYNCONF5DATCONF1STOCONF15STCMD 0CONF2STOCONF6DATCONF7DATCONF8DATCONFCVBACONFCVSTCONFINVACONFNONECONFPARICONFPARPCONFX1 CONFSERICONFX16 CONFX64 CONSOLE DOWN 1CR /DONE 5GOMENU 4HAVE INREDIREINMONITOI -MONITOROSCFILLLE SCEOL  SCBACKSPOUTREDIROPTION NEED URAMMAX TSCCLEARLSCCLEARSSCDOWNCUSCDC1KEYSCDELKEYSCDELETE SCEOFKEYSCDOWNKESCERASS SCERASEESCETXKEYSCESCAPESCERRORLSCERRORMSCGET SCGIVE SCLEFTCUSCINSERT SCLEFTKESCWHOME SCUPCURSSCRIGHTCSCNOTLEG SCPORT SCPRINTASCRIGHTK SCUPKEY TERMINAL+UP 2TSTINIT W 6USERS K A $CURSOR $EQUAL $SYNTAX PO.  {*******************************************************************}  {* FILE: MU.INSTALL *}  {* VERSION: 1.0 *}  {* DESCRIPTION: MU.Install is a simple program, that checks *}  {* hardware configurations and starts multi- *}  {* user script files. These files are named *}  {* Multi.One thru Multi.Six and are used to *}  {*  build turn-key multi-user system. *}  {* *}  {* HISTORY 20-DEC-83 Created -VJB & SEG *}  {* *}  {* *}  {* Copyright (c) 1983 SAGE COMPUTER *}  {* ALL RIGHTS RESERVED *} - {* *}  {*******************************************************************}   PROGRAM MUINSTALL; %{Starts BUILD disk Menu, checks hardware configurations and} %{starts a choosen script file.}   USES {$U SCREENOPS.CODE} SCREENOPS, %{$U COMMANDIO.CODE} COMMANDIO, %{$U SAGETOOLS.CODE} CONFIG_SAGE;    CONST CONSOLE=1;  Type rec= record (ram,dsk,sys:string; (end;  VAR OPTION:STRING;  ASCII:CHAR; %TERMINAL:CHAR;  %BASE,I,AT:INTEGER; %UP,DOWN,CMD,CR:CHAR; %A:PACKED ARRAY [0..1] OF CHAR; %DONE, GOMENU:BOOLEAN;  %W:Conf_Winch; %RAMMAX:INTEGER; %Have,Need:rec; %Users:integer;   FUNCTION TST_INIT:INTEGER;EXTERNAL; %{RETURNS the number of 512 byte blocks of ram}   PROCEDURE SHOWMENU; "BEGIN $SC_CLR_SCREEN; $GOTOXY(0,2); $WRITELN(' SAGE BUILD MENU [V1.0]'); $WRITELN(' _______________________________________________________'); $WRITELN; $WRITELN; $WRITELN; $WRITELN(' MULTI.ONE'); $WRITELN; $WRITELN(' MULTI.TWO'); $WRITELN; $WRITELN(' MULTI.THREE'); $WRITELN; $WRITELN(' MULTI.FOUR'); $WRITELN; $WRITELN(' MULTI.FIVE'); $WRITELN; $WRITELN(' MULTI.SIX'); $WRITELN; $WRITELN(' P-SYSTEM'); $WRITELN;  END;   PROCEDURE GET_TERMINAL(var TERM:char);  var TXIN:TEXT; $TERMINAL:string;  begin  RESET(TXIN,'WHAT.SYS.TEXT');  TERM:='O'; {OTHER}  readln(TXIN,TERMINAL);  if TERMINAL ='QVT102' then TERM:='Q';  if TERMINAL ='TV925' then TERM:='T';  if TERMINAL ='FD100' then TERM:='F';  CLOSE(TXIN);  end;   { DISK SPECIFICATIONS:   Disk Tot Tot Total Total Total User  Type Cyl Hds Trks Blocks Bytes Blocks  !6M 306 2 612 11,628 5,953,536 11,457  12M 306 4 1224 23,256 11,907,072 22,933  18M 306 6 1836 34,884 17,860,608 34,409  40M 512 8 4096 77,824 39,845,888 77,197   }  PROCEDURE WRT(X,Y:INTEGER;S:STRING);  BEGIN  GOTOXY(X,Y);  WRITE(S);  END;  PROCEDURE FIXDISK;  BEGIN  REPEAT "SC_CLR_SCREEN; "WRT(30,7,'A - 12 MEG'); "WRT(30,9,'B - 18 MEG'); "WRT(30,11,'C - 40 MEG'); "WRT(20,5,'How large is this disk?'); "READLN(ASCII);  UNTIL (ASCII in ['A','a','B','b','C','c']);  CASE ASCII OF "'A','a':Begin *W.HEADS:=4; *W.CYLINDERS:=306; *end; "'B','b':Begin *W.HEADS:=6; *W.CYLINDERS:=306; *end; "'C','c':Begin *W.HEADS:=8; *W.CYLINDERS:=512; *end;  end;  Conf_WT_Winch(9,W);  end;      FUNCTION SHOW_SELECT:BOOLEAN;  begin  SC_CLR_SCREEN;  writeln;  writeln(' SAGE BUILD PROGRAM');  writeln(' ____________________________________________________');  writeln;  writeln(' You have selected (',OPTION,')');  writeln;  writeln;  writeln(' This program requires a (SAGE ',Need.sys,')');  writeln;  writeln(' A RAM Size of (',Need.RAM,')K ');  writeln;  writeln(' A disk storage capacity of (',Need.dsk,') megabytes');  writeln;  writeln(' It will configure the system for (',Users,') users. ');  writeln;  writeln;  writeln;  writeln(' If your selection was in ERROR, press "q".');  writeln;  write (' To proceed with the (',OPTION,') program, press .');  read(ASCII);  if (ASCII='Q') or (ASCII='q') then SHOW_SELECT:=FALSE ELSE SHOW_SELECT:=TRUE;  end;     PROCEDURE ERROR_SCREEN;   BEGIN  SC_CLR_SCREEN;  WRT(30,2,'SAGE BUILD PROGRAM');  WRT(10,3,'____________________________________________________');  WRITELN;  WRITELN;  WRITELN(' You have selected the ',OPTION,' option which is not');  WRITELN(' compatible with your existing hardware!');  WRITELN;  WRT(20,8,'YOU HAVE:');  WRT(20,10,'A SAGE ');WRT(27,10,Have.sys); . WRT(20,11,Have.ram); WRT(25,11,'K RAM');  WRT(20,12,Have.dsk); WRT(23,12,'Meg Disk');  WRT(40,8,'YOU NEED:');  WRT(40,10,'A SAGE ');WRT(47,10,Need.sys);  WRT(40,11,Need.ram); WRT(45,11,'K RAM');  WRT(40,12,Need.dsk); WRT(43,12,'Meg Disk');  WRITELN;  WRITELN;  WRITE (' Please check the tag on the bottom of your SAGE');  WRITELN(' computer');  WRITE (' to find its RAM size and the capacity of the');  WRITELN(' hard disk.');  WRT(15,19,'Type "D" to set the disk size.');  WRT(15,20,' "P" to go to the p-SYSTEM.');  WRT(15,21,' to return to the BUILD MENU.');  READ(ASCII);  case ASCII of "'D','d':FIXDISK; "'P','p':EXIT(PROGRAM); "end;  END;   FUNCTION CHECK(I:INTEGER):BOOLEAN; {CHECKS SELECTION}  BEGIN  CHECK:=FALSE;  NEED:=HAVE; {Need this to clear records}  With Need do CASE I OF %0:begin ram:='512'; dsk:=' 0'; sys:='II'; Users:=2; end; %1:begin ram:='1024'; dsk:='12'; sys:='IV'; Users:=4; end; %2:begin ram:='1024'; dsk:='18'; sys:='IV'; Users:=5; end; %3:begin ram:='1024'; dsk:='18'; sys:='IV'; Users:=6; end; %4:begin ram:='1024'; dsk:='40'; sys:='IV'; Users:=5; end; %5:begin ram:='1024'; dsk:='40'; sys:='IV'; Users:=6; end; #END;  Have.ram:='';  RAMMAX:=TST_INIT;  STR(RAMMAX DIV 2,Have.ram);  Conf_RD_Winch(9,W);  {Uses Conf_Winch to get Winchester size, as specified in BIOS - Note that !BIOS may not be correct.}  Have.dsk:=' 0'; {SAGE II}  CASE W.HEADS OF #0:Have.dsk:=' 0'; #4:Have.dsk:='12'; #6:Have.dsk:='18'; #8:Have.dsk:='40'; #END;  if Conf_SGIV then Have.sys:='IV' else Have.sys:='II';   {Now to compare what we have with what we need---}  if Have<>Need then Error_screen ELSE CHECK:=TRUE;  END;     BEGIN "GET_TERMINAL(TERMINAL); "UP:= CHR(11); "IF TERMINAL='Q' THEN DOWN:=CHR(10) ELSE DOWN:=CHR(22); "I:=0; "BASE:=7; "CR:=CHR(13); "REPEAT $SC_CLR_SCREEN; $SHOWMENU; $REPEAT &AT:=BASE+(I*2); &GOTOXY(26,AT); &UNITREAD(CONSOLE,A[0],1,0,4); &CMD:=A[0]; &IF CMD=UP THEN (BEGIN *I:=I-1; *IF I<0 THEN I:=6; (END ELSE &IF CMD=DOWN THEN (BEGIN *I:=I+1; *IF I>6 THEN I:=0; (END; &IF NOT (CMD IN [UP,DOWN,CR]) THEN (BEGIN *GOTOXY(0,23); *WRITE ('Position with cursor keys and press RETURN'); *GOTOXY(22,AT); (END; $UNTIL CMD=CR; $CASE I OF &0:OPTION:='MULTI.ONE'; &1:OPTION:='MULTI.TWO'; &2:OPTION:='MULTI.THRE'; &3:OPTION:='MULTI.FOUR'; &4:OPTION:='MULTI.FIVE'; &5:OPTION:='MULTI.SIX'; &6:EXIT(PROGRAM); (END; $DONE:=FALSE; $IF CHECK(I) THEN &BEGIN (DONE:=SHOW_SELECT; &END; "UNTIL DONE;  OPTION:=CONCAT('I=',OPTION);  CHAIN(OPTION);  END.   BLDSK  ~~0LBLDBC\DC\DF$0C\DBLDSK Qrprprprprpr prprpr prprp-r prpp˧ zMulti.One Build Configuration7Please insert a formatted and zeroed disk into drive #5Press to continuee PASCALIO .2SOFTOPS L`SMAL4&C TY  P ?  tINITOPS KERNEL @ ,2SOFTOPS L`SMAL4[+ TY  P ?  tINITOPS KERNEL @ ,2SOFTOPS L`SMAL4IQW TY  P ?  tINITOPS KERNEL @ , NEXTTEST.CODE 4) TY  P ? 5SYSTEM.MISCINFOh SYSTEM.BIOS WINERRORS.CODE ATEST.TFINISH4 ~~0LBLDBGC\DC\DF$0C\DFINISH4 wrpr prprpr prprpr prprprprp4r p0rp)sprpOr prprpSr prpp˧ ?% SAGE BUILD Program<_____________________________________________________________4 Your machine has been successfully configured for (( users. Press to continue EXTRAIO PASCALIO  NEXTTEST.CODE 4) TY  P ? 5SYSTEM.MISCINFOh SYSTEM.BIOS WINERRORS.CODE ATEST.TSYSTEM.MISCINFO 4 QW TY  P ? /⤋ USERLIB.TEXT 4@In TY  P ? vZSYSTEM.COMPILERtZ~ SETUP.CODE* v~ SAGEUTIL.CODEk LIBRARY$CURSOR $EQUAL A O.JL ;*************************************************************************  ;FUNCTION TST_INIT:INTEGER;  ;  ;This procedure finds out how much memory the SAGE II is equipped with.  ;and returns it as the number of 512 byte blocks.  ;************************************************************************* (.FUNC TST_INIT  RAMMAX .EQU 100H   START MOVEA.L (SP)+,A0 ;Return addr (MOVE.W (SP)+,D0 ;Throw one word of garbage away (CLR.L D0 (LEA RAMMAX,A1 (MOVE.L (A1),D0 ;get 4 bytes of max size (ROR.L #8,D0 ;number of 512 byte blocks (ROR.L #1,D0 (MOVE.W D0,-(SP) ;Return em (JMP (A0)  (.END  TSTINIT TSTINIT [IV a.0]  _0BC ?NJp0<A0!H|2C !N@L> XNpNsC.QNsC"EgAN`t2 X?NJBfEgA`EgA `L TSTINIT TSTINIT TSTLIGHT TSTLIGHTMYSTACK 8STACK MYSTACK STACK TSTCONT TSTCONT  /MUINSTAL u2 [IV a.0]MUINSTALr uv pvpv pvpvpvpvp;v pvpvpOv pvpvpcv pvpvpxv pvpvpv pvpvpv pvpvpv pvpvpV`-w`wpWO`.Pv p`v p.WQĄ.WTĄ.WF`wp`wW)`*P-,u`v p-*r   *v pv p*Կ*3Cʁ26%Cʁ26Cʁ6ր 6tr vp"v pvp9v pvpvpYv pv p) pvpvpvpov pUv p) pvpvpv pv pv pvpvpv p~v pv pvpvpv pKvpv pvpvpvpvpv pvpvpv pv pv p*v p*Q*qhhHr   vpvp(v pv p9v pvpDv pvpvp] b И " f  i(n( s/ U( - w( ~+ zvpvpv pv pvpv pv pvp*v p*  pւiU{ -P~/PU1PK3P~6PU8PK:P~=PU?PK`AP~DPUFPKAHP~KPUMPK"OP~RPUTPKփV"^PTT "P  6t_PCɊ,aP$cPePgPփit ЂtP ЂvPІUi+ 2+Q 11-. /r .-,,u3p3˧002----01----02⼅1ۅ/uxv p,u0/҄-CP<P2P(PPP pփ5- 55"LL LR LPs0 SAGE BUILD MENU [V1.0]]? _______________________________________________________& MULTI.ONEE& MULTI.TWOO( MULTI.THREEE' MULTI.FOUR' MULTI.FIVE& MULTI.SIXX% P-SYSTEM WHAT.SYS.TEXTQVT1022TV925FD100 A - 12 MEG B - 18 MEG C - 40 MEGHow large is this disk?Ac, SAGE BUILD PROGRAMM? ____________________________________________________* You have selected (() This program requires a (SAGE  A RAM Size of (()K ' A disk storage capacity of ( ) megabytes- It will configure the system for ( ) users. 5 If your selection was in ERROR, press "q". To proceed with the (() program, press .SAGE BUILD PROGRAMM4_____________________________________________________ You have selected the  option which is not1 compatible with your existing hardware! YOU HAVE:A SAGE K RAMMeg Diskk YOU NEED:A SAGE K RAMMeg Diskk9 Please check the tag on the bottom of your SAGE computer6 to find its RAM size and the capacity of thee hard disk.#Type "D" to set the disk size.$ "P" to go to the p-SYSTEM..* to return to the BUILD MENU..Dp0512 00III10244122IVV10244188IVV10244188IVV10244400IVV10244400IVVBb 00 00122188400IVVIII*Position with cursor keys and press RETURNN MULTI.ONE MULTI.TWO MULTI.THREE MULTI.FOURR MULTI.FIVEE MULTI.SIXI== _0BC ?N V STRINGOP LONGOPS EXTRAIO FILEOPS PASCALIOGOTOXY CONFIGSACOMMANDISCREENOP ZAPIT ~~0LBLDBEC\DC\DF$0C\DZAPIT Wr*Ps pspVsps pV VWˁp VTT՟TtP t*uQuRuP*s pW*rpWWvUpSSs ss sWrpTTXWr(Enter the number of volumes to be ZEROEDD#: NOT FOUNDZEROEDD EXTRAIO STRINGOPLONGOPS PASCALIOFILEOPS  MERGE ~~0LBLDBIC\DC\DF$0C\DMERGE |rrֆPrpS P|Srpsp9*Ps ps p*t֊|*s p|sprps pspPs ps prpsp$*Ps ps p|*s p|sp҆rp|rp|rr#4:FORMATINFO.TEXTT#4:MUFORMAT.TEXTT 1:ENTER THE PARTITION FILE NAME STRINGOPPASCALIOFILEOPS  O^LL #4:SAGETOOLS.CODE  0TERMSCRI ~~0LBUSu\\F$0\TERMSCRIR-`-s`sp`-t p`tp`t p`tp`sp`s--`-s` sp`-Pt p`t p`Pt p`t p`sp`s-ctpt ptptptp)t ptptp=t ptptpQt ptptpct ptptprt ptptpt pt ptp0^-PM-Pupt p#-P րխWW#vWWW#vWWW vWvW vWWVVWV지*V ȅVVۆ rճWW vWvWvWWWvWvW-vWWWvW)vWWWvW7vW-vW8vWWWvW@vWRfWWWvW-dvWWWvWbvWWWvWpvW՟WWvW-fvWWWvWvWWWvWvW-vWvWWWvWvWDWWvW-fvWWWvWvWWWvWvWvWWVVWV지*V ȅVVۆr WHAT.SYS.TEXT WHAT.SYS.TEXT1 QUICK TERMINAL INSTALLATION MENU& S- SAGE or QVT1022' T- TELEVIDEO TV925# F- FREEDOM 100 M- MENUU! P- p-SYSTEM < Select the letter for the terminal you have::QVT1022CTV925A.11FD100BFtBUILD#FTMU.INSTAL.CODE,SYSTEM.STARTUP*YQI#FTBUS.START.CODE,SYSTEM.STARTUP*YQII=""MAPPERRBUSINESSS XW7SETUP*Y**K*FRSYSTEM.MISCINFO*YTT.MISCINFO,SYSTEM.MISCINFO**T.SPEC,TS.SPEC*Y"TBUS.START.CODE,SYSTEM.STARTUP*YQII ALTERNATEFRSYSTEM.MISCINFO*YTT.MISCINFO,SYSTEM.MISCINFO**"TBUS.START.CODE,SYSTEM.STARTUP*YQIIBUILDFRSYSTEM.MISCINFO*YTE...MISC,SYSTEM.MISCINFO**T.MISCINFO,STD.MISCINFO*YY"TMU.INSTAL.CODE,SYSTEM.STARTUP*YQIIMAPPERRFRSYSTEM.MISCINFO*YTE...MISC,SYSTEM.MISCINFO*QIII="". PSTRINGOPEXTRAIO PASCALIOFILEOPS COMMANDI TERMSCRI ~~0LBUSu\\F$0\1TERMSCRIR-`-s`sp`-t p`tp`t p`tp`sp`s--`-s` sp`-Pt p`t p`Pt p`t p`sp`s-ctpt ptptptp)t ptptp=t ptptpQt ptptpct ptptprt ptptpt pt ptp0^-PM-Pupt p#-P րխWW#vWWW#vWWW vWvW vWWVVWV지*V ȅVVۆ rճWW vWvWvWWWvWvW-vWWWvW)vWWWvW7vW-vW8vWWWvW@vWRfWWWvW-dvWWWvWbvWWWvWpvW՟WWvW-fvWWWvWvWWWvWvW-vWvWWWvWvWDWWvW-fvWWWvWvWWWvWvWvWWVVWV지*V ȅVVۆr WHAT.SYS.TEXT WHAT.SYS.TEXT1 QUICK TERMINAL INSTALLATION MENU& S- SAGE or QVT1022' T- TELEVIDEO TV925# F- FREEDOM 100 M- MENUU! P- p-SYSTEM < Select the letter for the terminal you have::QVT1022CTV925A.11FD100BFtBUILD#FTMU.INSTAL.CODE,SYSTEM.STARTUP*YQI#FTBUS.START.CODE,SYSTEM.STARTUP*YQII=""MAPPERRBUSINESSS XW7SETUP*Y**K*FRSYSTEM.MISCINFO*YTT.MISCINFO,SYSTEM.MISCINFO**T.SPEC,TS.SPEC*Y"TBUS.START.CODE,SYSTEM.STARTUP*YQII ALTERNATEFRSYSTEM.MISCINFO*YTT.MISCINFO,SYSTEM.MISCINFO**"TBUS.START.CODE,SYSTEM.STARTUP*YQIIBUILDFRSYSTEM.MISCINFO*YTE...MISC,SYSTEM.MISCINFO**T.MISCINFO,STD.MISCINFO*YY"TMU.INSTAL.CODE,SYSTEM.STARTUP*YQIIMAPPERRFRSYSTEM.MISCINFO*YTE...MISC,SYSTEM.MISCINFO*QIII="". PSTRINGOPEXTRAIO PASCALIOFILEOPS COMMANDI OCONFIG CONFIG [IV a.0]N LMUCF~~<~~x~~~R~~~,~~h~ ~ ~ B~ " " D" v" " " , 8, d z     < B@B B@ 45@ @  5ef@ @   f@ @ @  1 @   @ @ @@@ @ @ @ @ @@@n@@n "@@~@@~@@~@@~()@@P*}@PP*}@P2H2ILt @H2ILt @H2ILt @H2ILt @   !"#$%&'()*+,-./0123456789:;<=>?  TELEVIDEO 925  '8.'''''H1FI,G6#0:<=>  6$P 10-----| 31dbhgf.0G0XU()()2 FREEDOM 100  %-78.'%%&%HR1FI,G6#0:Q<=>  6$P 2p0FGEHKJ 31dbhgf.1e G0XU%$()VT 102   PP-----|  H QUME QVT 102 '-78.'''''HR1FI,G6# 6$=>P p0fgehkj 31}{.G0XU%$()VT 52  -7 #P -----|H C HJGFOCONFIG CONFIG [IV a.0]2N LMUCF~~<~~x~~~R~~~,~~h~ ~ ~ B~ " " D" v" " " , 8, d z     < B@B B@ 45@ @  5ef@ @   f@ @  @ @   @ @    ) *@ @@   @@@ @ @ @ @ @@@n@@n@@~@@~@@~@@~@@P*}@PP*}@P *2H2ILt @H2ILt @H2ILt @H2ILt @  !"#$%3&'()*+,-./0123456789:;<=>?  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 QUME QVT 102 '-78.'''''HR1FI,G6# 6$=>P p0fgehkj 31}{.G0XU%$()VT 52  -7 #P -----|H C HJGF3OCONFIG CONFIG [IV a.0]N LMUCF~~<~~x~~~R~~~,~~h~ ~ ~ B~ " " D" v" " " , 8, d z     < B@B B@ 45@ @  5ef@ @   f@ @  @ @   @ @    ) *@ @@   @@@ @ @ @ @ @@@n@@n@@~@@~@@~@@4~@@P*}@PP*}@P *HLt @H2ILt @H2ILt @H2ILt @  !"#$%&'()*+,-./0123456789:;<=>?  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 HJGF4OCONFIG CONFIG [IV a.0]N LMUCF~~<~~x~~~R~~~,~~h~ ~ ~ B~ " " D" v" " " , 8, d z     < B@B B@ 45@ @  5ef@ @  f@ @ @ @  @ @   ) *@ @ @@@ @ @ 5@ @ @@@n@@n "@@~@@~@@~@@~@@P*}@PP*}@P 2H2ILt @H2ILt @H2ILt @H2ILt @   !"#$%&'()*+,-./0123456789:;<=>?  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-----|  H5 QUME QVT 102 '-78.'''''HR1FI,G6# 6$=>P p0fgehkj 31}{.G0XU%$()VT 52  -7 #P -----|H C HJGFOCONFIG CONFIG [IV a.0]N LMUCF~~<~~x~~~R~~~,~~h~ ~ ~ B~ " " D" v" " " , 8, d z     < B@B B@ 45@ @  5ef@ @  f@ @ @ @ 6 @ @   ) *@ @ @@@ @ @ @ @ @@@n@@n "@@~@@~@@~@@~@@P*}@PP*}@P HLt @H2ILt @H2ILt @H2ILt @   !"#$%&'()*+,-./0123456789:;<=>?  TELEVIDEO 925  '8.'''''H1FI,G6#0:<=>  6$P 10-----| 31dbhgf.0G0XU()()6 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 HJGFOCONFIG CONFIG [IV a.0]7N LMUCF~~<~~x~~~R~~~,~~h~ ~ ~ B~ " " D" v" " " , 8, d z     < B@B B@ 45@@ 5ef@@ f@  @   @    ) *@ @ @@@ @ @ @ @ @@@n @@n@@~@@~@@~@@~@@P*}@PP*}@Pf H2ILt @H2ILt @H2ILt @H2ILt @  !"#$%7&'()*+,-./0123456789:;<=>?  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 HJGF8O^LL#Partition 1: Cylinder 0, Head 1, Blocks = 1292 1Name = SINGLE 1System = UCSD #Partition 2: Blocks = 456 1Name = MULTI 1System = UCSD #Partition 3: Blocks = 1292 1Name = SYS1 1System = UCSD #Partition 4: Blocks = 1292 1Name = SYS2 1System = UCSD #Partition 5: Blocks = 1292 1Name = SYS3 1System = UCSD #Partition 6: Blocks = 1292 1Name = SYS4 1System = UCSD #Partition 7: Blocks = 3667 1Name = DATA1 1System = UCSD #Partition 8: Blocks = 3667 1Name = DATA2 1System = UCSD #Partition 9: Blocks = 3667 1Name = DATA3 1System = UCSD #Partition 10: Blocks = 3667 1Name = DATA4 1System = UCSD #Partition 11: Blocks = 1292 1Name = SCRATCH 1System = UCSD O^gL#Partition 1: Cylinder 0, Head 1, Blocks = 1292 1Name = SINGLE 1System = UCSD #Partition 2: Blocks = 456 1Name = MULTI 1System = UCSD #Partition 3: Blocks = 1292 1Name = SYS1 1System = UCSD #Partition 4: Blocks = 1292 1Name = SYS2 1System = UCSD #Partition 5: Blocks = 1292 1Name = SYS3 1System = UCSD #Partition 6: Blocks = 1292 1Name = SYS4 1System = UCSD #Partition 7: Blocks = 1292 1Name = SYS5 1System = UCSD #Partition 8: Blocks = 11723 1Name = DATA1 1Syste8m = UCSD #Partition 9: Blocks = 11723 1Name = DATA2 1System = UCSD #Partition 10: Blocks = 11723 1Name = DATA3 1System = UCSD #Partition 11: Blocks = 11723 1Name = DATA4 1System = UCSD #Partition 12: Blocks = 11723 1Name = DATA5 1System = UCSD #Partition 13: Blocks = 10394 1Name = SCRATCH 1System = UCSD O^LL#Partition 1: Cylinder 0, Head 1, Blocks = 1292 1Name = SINGLE 1System = UCSD #Partition 2: Blocks = 456 1Name = MULTI 1System = UCSD #Partition 3: Blocks = 1292 1Name = SYS1 1System = UCSD #Partition 4: Blocks = 1292 1Name = SYS2 1System = UCSD #Partition 5: Blocks = 1292 1Name = SYS3 1System = UCSD #Partition 6: Blocks = 1292 1Name = SYS4 1System = UCSD #Partition 7: Blocks = 1292 1Name = SYS5 1System = UCSD #Partition 8: Blocks = 4959 1Name = DATA1 1System = UCSD #Partition 9: Blocks = 4959 1Name = DATA2 1System = UCSD #Partition 10: Blocks = 4959 1Name = DATA3 1System = UCSD #Partition 11: Blocks = 4959 1Name = DATA4 1System = UCSD #Partition 12: Blocks = 4959 1Name = DATA5 1System = UCSD #Partition 13: Blocks = 1292 1Name = SCRATCH 1System = UCSD O^gL#Partition 1: Cylinder 0, Head 1, Blocks = 1292 1Name = SINGLE 1System = UCSD #Partition 2: Blocks = 456 1Name = MULTI 1System = UCSD #Partition 3: Blocks = 1292 1Name = SYS1 1System = UCSD #Partition 4: Blocks = 1292 1Name = SYS2 1System = UCSD #Partition 5: Blocks = 1292 1Name = SYS3 1System = UCSD #Partition 6: Blocks = 1292 1Name = SYS4 1System = UCSD #Partition 7: Blocks = 1292 1Name = SYS5 1System = UCSD #Partition 8: Blocks = 1292 1Name = SYS6 1System 9= UCSD #Partition 9: Blocks = 3933 1Name = DATA1 1System = UCSD #Partition 10: Blocks = 3933 1Name = DATA2 1System = UCSD #Partition 11: Blocks = 3933 1Name = DATA3 1System = UCSD #Partition 12: Blocks = 3933 1Name = DATA4 1System = UCSD #Partition 13: Blocks = 3933 1Name = DATA5 1System = UCSD #Partition 14: Blocks = 3933 1Name = DATA6 1System = UCSD #Partition 15: Blocks = 1292 1Name = SCRATCH 1System = UCSD O^gL#Partition 1: Cylinder 0, Head 1, Blocks = 1292 1Name = SINGLE 1System = UCSD #Partition 2: Blocks = 456 1Name = MULTI 1System = UCSD #Partition 3: Blocks = 1292 1Name = SYS1 1System = UCSD #Partition 4: Blocks = 1292 1Name = SYS2 1System = UCSD #Partition 5: Blocks = 1292 1Name = SYS3 1System = UCSD #Partition 6: Blocks = 1292 1Name = SYS4 1System = UCSD #Partition 7: Blocks = 1292 1Name = SYS5 1System = UCSD #Partition 8: Blocks = 1292 1Name = SYS6 1System = UCSD #Partition 9: Blocks = 9557 1Name = DATA1 1System = UCSD #Partition 10: Blocks = 9557 1Name = DATA2 1System = UCSD #Partition 11: Blocks = 9557 1Name = DATA3 1System = UCSD #Partition 12: Blocks = 9557 1Name = DATA4 1System = UCSD #Partition 13: Blocks = 9557 1Name = DATA5 1System = UCSD #Partition 14: Blocks = 9557 1Name = DATA6 1System = UCSD #Partition 15: Blocks = 10355 1Name = SCRATCH 1System = UCSD $CURSOR $EQUAL PO. XSAGE4UTIL  AMFA306  G306  N6     YBSYSTEM.BIOS !MFA306  G306  N6     Y  XMERGE  #4:MF.18.6.TEXT  XWFORMAT  #4:MUFORMAT.TEXT  AE    XZAP  15  FZ#9:  Y1280  SINGLE:  YZ#10:  Y456  MULTI:  YZ#12:  Y1280  USER1:  YZ#18:  Y3933  DATA1:  YZ#19:  Y3933  DATA2:  YZ#20:  Y3933  DATA3:  YZ#21:  Y3933  DATA4:  YZ#22:  Y3933  DATA5:  YZ#23:  Y3933  DATA6:  YZ#24:  Y1280  SCRATCH:  YQXSAGE4UTIL  D#4:SAGE.WBOOT.CODE  YSINGLE:  Y D#4:MU4.WBOOT.CODE  YMU9LTI:  Y D#4:MU.PBOOT.CODE  YUSER1:  Y   FT#4:SYSTEM.=,#9:$  T#4:SAGE4UTIL.CODE,#9:$  R#9:SYSTEM.STARTUP  YT#4:SYSTEM.=,#12:$  T#4:SAGE4UTIL.CODE,#12:$  R#12:SYSTEM.STARTUP  YR#12:SYSTEM.MISCINFO  YT#4:STD.MISCINFO,#12:SYSTEM.MISCINFO  T#12:,#13:  YC#13:,USER2:  T#12:,#14:  YC#14:,USER3:  T#12:,#15:  YC#15:,USER4:  T#12:,#16:  YC#16:,USER5:  T#12:,#17:  YC#17:,USER6:  T#4:MU4.BIOS,MULTI:$  T#4:MC.18.6,MULTI:MU.CONFIG  T#4:MUFORMAT.TEXT,MULTI:FORMATINFO.TEXT  QXFINISH4  6  H O^AL XSAGE4UTIL  AMFA512  G512  N8     YBSYSTEM.BIOS !MFA512  G512  N8     Y  XMERGE  #4:MF.40.6.TEXT  XWFORMAT  #4:MUFORMAT.TEXT  AE    XZAP  15  FZ#9:  Y1280  SINGLE:  YZ#10:  Y456  MULTI:  YZ#12:  Y1280  USER1:  YZ#18:  Y9557  DATA1:  YZ#19:  Y9557:  DATA2:  YZ#20:  Y9557:  DATA3:  YZ#21:  Y9557:  DATA4:  YZ#22:  Y9557  DATA5:  YZ#23:  Y9557  DATA6:  YZ#24:  Y10355  SCRATCH:  YQXSAGE4UTIL  D#4:SAGE.WBOOT.CODE  YSINGLE:  Y D#4:MU4.WBOOT.CODE  YMULTI:  Y D#4:MU.PBOOT.CODE  YUSER1:  Y   FT#4:SYSTEM.=,#9:$  T#4:SAGE4UTIL.CODE,#9:$  R#9:SYSTEM.STARTUP  YT#4:SYSTEM.=,#12:$  T#4:SAGE4UTIL.CODE,#12:$  R#9:SYSTEM.STARTUP  YR#12:SYSTEM.MISCINFO  YT#4:STD.MISCINFO,#12:SYSTEM.MISCINFO  T#12:,#13:  YC#13:,USER2:  T#12:,#14:  YC#14:,USER3:  T#12:,#15:  YC#15:,USER4:  T#12:,#16:  YC#16:,USER5:  T#12:,#17:  YC#17:,USER6:  T#4:MU4.BIOS,MULTI:$  T#4:MC.40.6,MULTI:MU.CONFIG  T#4:MUFORMAT.TEXT,MULTI:FORMATINFO.TEXT  QXFINISH4  6  H O^L XBL.DSK  XSAGE4UTIL  D#4:MU4.FBOOT.CODE  Y#5:  Y   FT#4:MU4.BIOS,#5:$  T#4:MC.0.2,#5:MU.CONFIG  Q  XBL.DSK  XSAGE4UTIL  D#4:MU.PBOOT.CODE  Y#5:  Y   FT#4:SYSTEM.=,#5:$  T#4:SAGE4UTIL.CODE,#5:$  R#5:SYSTEM.MISCINFO  YR#5:SYSTEM.STARTUP  YT#4:STD.MISCINFO,#5:SYSTEM.MISCINFO  Q  XBL.DSK  XSAGE4UTIL  D#4:MU.PBOOT.CODE  Y#5:  Y   FT#4:SYSTEM.=,#5:$  T#4:SAGE4UTIL.CODE,#5:$  R#5:SYSTEM.MISCINFO  YR#5:SYSTEM.STARTUP  YT#4:STD.MISCINFO,#5:SYSTEM.MISCINFO  QXFINISH4  2  H   :   O^L XSAGE4UTIL  AMFA306  G306  N4     YBSYSTEM.BIOS !MFA306  G306  N4     Y  XMERGE  #4:MF.12.4.TEXT  XWFORMAT  #4:MUFORMAT.TEXT  AE    XZAP  11  FZ#9:  Y1280  SINGLE:  YZ#10:  Y456  MULTI:  YZ#12:  Y1280  USER1:  YZ#16:  Y3667  DATA1:  YZ#17:  Y3667:  DATA2:  YZ#18:  Y3667:  DATA3:  YZ#19:  Y3667:  DATA4:  YZ#20:  Y1280  SCRATCH:  YQXSAGE4UTIL  D#4:SAGE.WBOOT.CODE  YSINGLE:  Y D#4:MU4.WBOOT.CODE  YMULTI:  Y D#4:MU.PBOOT.CODE  YUSER1:  Y   FT#4:SYSTEM.=,#9:$  T#4:SAGE4UTIL.CODE,#9:$  R#9:SYSTEM.STARTUP  YT#4:SYSTEM.=,#12:$  T#4:SAGE4UTIL.CODE,#12:$  R#12:SYSTEM.MISCINFO  YR#12:SYSTEM.STARTUP  YT#4:STD.MISCINFO,#12:SYSTEM.MISCINFO  T#12:,#13:  YC#13:,USER2:  T#12:,#14:  YC#14:,USER3:  T#12:,#15:  YC#15:,USER4:  T#4:MU4.BIOS,MULTI:$  T#4:MUFORMAT.TEXT,MULTI:FORMATINFO.TEXT  T#4:MC.12.4,MULTI:MU.CONFIG  QXFINISH4  4  H O^L XSAGE4UTIL  AMFA306  G306  N6     YBSYSTEM.BIOS !MFA306  G306  N6     Y  XMERGE  #4:MF.18.5.TEXT  XWFORMAT  #4:MUFORMAT.TEXT  AE    XZAP  13  FZ#9:  Y1280  SINGLE:  YZ#10:  Y456  MULTI:  YZ#12:  Y1280  USER1:  YZ#17:  Y4959  DATA1:  YZ#18:  Y4959:  DATA2:  YZ#19:  Y4959:  DATA3:  YZ#20:  Y4959:  DATA4:  YZ#21:  Y4959  DATA5:  YZ#22:  Y1280  SCRATCH:  YQXSAGE4UTIL  D#4:SAGE.WBOOT.CODE  YSINGLE:  Y D#4:MU4.WBOOT.CODE  YMULTI:  Y D#4:MU.PBOOT.C:ODE  YUSER1:  Y   FT#4:SYSTEM.=,#9:$  T#4:SAGE4UTIL.CODE,#9:$  R#9:SYSTEM.STARTUP  YT#4:SYSTEM.=,#12:$  T#4:SAGE4UTIL.CODE,#9:$  R#12:SYSTEM.STARTUP  YR#12:SYSTEM.MISCINFO  YT#4:STD.MISCINFO,#12:SYSTEM.MISCINFO  T#12:,#13:  YC#13:,USER2:  T#12:,#14:  YC#14:,USER3:  T#12:,#15:  YC#15:,USER4:  T#12:,#16:  YC#16:,USER5:  T#4:MU4.BIOS,MULTI:$  T#4:MUFORMAT.TEXT,MULTI:FORMATINFO.TEXT  T#4:MC.18.5,MULTI:MU.CONFIG  QXFINISH4  5  H O^AL XSAGE4UTIL  AMFA512  G512  N8     YBSYSTEM.BIOS  MFA512  G512  N8     Y  XMERGE  #4:MF.40.5.TEXT  XWFORMAT  #4:MUFORMAT.TEXT  AE    XZAP  13  FZ#9:  Y1280  SINGLE:  YZ#10:  Y456  MULTI:  YZ#12:  Y1280  USER1:  YZ#17:  Y11723  DATA1:  YZ#18:  Y11723  DATA2:  YZ#19:  Y11723  DATA3:  YZ#20:  Y11723  DATA4:  YZ#21:  Y11723  DATA5:  YZ#22:  Y10394  SCRATCH:  YQXSAGE4UTIL  D#4:SAGE.WBOOT.CODE  YSINGLE:  Y D#4:MU4.WBOOT.CODE  YMULTI:  Y D#4:MU.PBOOT.CODE  YUSER1:  Y   FT#4:SYSTEM.=,#9:$  T#4:SAGE4UTIL.CODE,#9:$  R#9:SYSTEM.STARTUP  YT#4:SYSTEM.=,#12:$  T#4:SAGE4UTIL.CODE,#12:$  R#12:SYSTEM.MISCINFO  YR#12:SYSTEM.STARTUP  YT#4:STD.MISCINFO,#12:SYSTEM.MISCINFO  T#12:,#13:  YC#13:,USER2:  T#12:,#14:  YC#14:,USER3:  T#12:,#15:  YC#15:,USER4:  T#12:,#16:  YC#16:,USER5:  T#4:MU4.BIOS,MULTI:$  T#4:MC.40.5,MULTI:MU.CONFIG  T#4:MUFORMAT.TEXT,MULTI:FORMATINFO.TEXT  QXFINISH4  5  H O^ PROGRAM ZAPIT;   VAR #S,S1:STRING; #I,J,K,IERR:INTEGER; #BUFFER:PACKED ARRAY [0..2047] OF 0..255; #F:FILE;   BEGIN "S:=''; "WRITELN('Enter the number of volumes to be ZEROED'); "READLN(I); "I:=I + 9; "FILLCHAR(BUFFER[0],2048,0); "FOR K:=9 TO I DO $BEGIN &STR(K,S1); &S:=CONCAT('#',S1,':'); &WRITE(S); &REWRITE(F,S); &{$I-} &J:=BLOCKWRITE(F,BUFFER[0],4,2); &IERR:=IORESULT; &IF IERR<>0 THEN WRITELN('NOT FOUND') &ELSE WRITELN ('ZEROED'); &{$I+} &CLOSE(F); $END;  END.  ;O^WW PROGRAM MERGE;  VAR $OS,S,FS:STRING; $TXIN,TXOUT:TEXT; $QUIT:BOOLEAN;   BEGIN  QUIT:=FALSE;  FS:='#4:FORMATINFO.TEXT';  RESET(TXIN,FS);  OS:='#4:MUFORMAT.TEXT';  REWRITE(TXOUT,OS);   WHILE (NOT (QUIT)) AND NOT(EOF(TXIN)) DO "BEGIN $READLN(TXIN,S); $IF (POS(' 1:',S)>0) 'THEN QUIT:=TRUE ELSE WRITELN(TXOUT,S); "END;  CLOSE(TXIN,LOCK);  WRITELN('ENTER THE PARTITION FILE NAME');  READLN(FS);  RESET(TXIN,FS);  WHILE NOT(EOF(TXIN)) DO "BEGIN $READLN(TXIN,S); $WRITELN(TXOUT,S); "END;  CLOSE(TXIN,LOCK);  CLOSE(TXOUT,LOCK);  END.  $CURSOR $EQUAL $SYNTAX O. PROGRAM FINISH4;   VAR "I:INTEGER; "A:PACKED ARRAY [0..1] OF CHAR;   BEGIN "READLN(I); {READS THE NUMBER OF USERS THE MACHINE IS CONFIGURED FOR} "REPEAT $WRITELN;WRITELN; $WRITELN(' SAGE BUILD Program'); " WRITELN; " WRITELN('____________________________________________________________'); " WRITELN;WRITELN;WRITELN; $WRITELN(' Your machine has been successfully configured for (',I,')'); " WRITELN(' users.'); " WRITELN; $WRITELN(' Press to continue'); $UNITR;EAD(1,A[0],1,0); "UNTIL (A[0]=' ');  END.  $CURSOR $EQUAL $SYNTAX   O. PROGRAM BLDSK;   VAR #A:PACKED ARRAY [0..1] OF CHAR;   BEGIN "REPEAT $WRITELN;WRITELN;WRITELN;WRITELN;WRITELN; $WRITELN('Multi.One Build Configuration'); $WRITELN; $WRITELN('Please insert a formatted and zeroed disk into drive #5'); $WRITELN; $WRITELN('Press to continue'); $UNITREAD(1,A[0],1,0); "UNTIL (A[0]=' ');  END.  QVT102 BUILD <O^5{(.TITLE "SAGE Multi-User System Bootstrap" .PROC BOOTMU   ;********************************************************************** ;  ; SAGE COMPUTER - Multi-User System Bootstrap from floppy  ;  ; File: MU4.FBOOT.TEXT  ; Date: 7-Nov-83  ; Issue: 1A  ;  ;  ; COPYRIGHT (c) 1982, 1983 SAGE Computer Technology  ; All Rights Reserved  ;  ;**********************************************************************  ;  ; History:  ;  ; 1 3-May-83 Initial release.  ; 1A 7-Nov-83 Fixed Boot extension & User boot options.  ;  ;**********************************************************************  ;  ; This bootstrap is to be located in logical blocks 0 and 1 on a  ; floppy diskette. The floppy diskette bootstrap command in the  ; PROM Debugger will read logical blocks 0 and 1 into memory at  ; location 400H.  ;  ; The bootstrap routine first reads in the p-System directory  ; from the floppy diskette. Then the bootstrap searches the  ; directory for the file MU.BIOS which contains the SAGE  ; Multi-User Basic Input/Output System routines. Once found the  ; BIOS code is positioned into the highest memory available.  ;  ; Next the bootstrap searches for the file MU.CONFIG. If it  ; finds the file it reads it into memory. Otherwise the bootstrap  ; prompts the user for the configuration file name. An immediate  ; carriage return will terminate the bootstrap. Once the  ; configuration file is found it is read into memory and its  ; address is store at CONFADDR (208H).  ;  ; Finally the bootstrap transfers to the BIOS for initialization  ; and the Multi-User executive takes control. The BIOS only  ; returns if no tasks are defined.  ;  ; Note: The Boot extension and User bootstrap features are not yet  ; supported.  ;  ;********************************************************************** (  ; Macro for calls to PROM area.  ; (required for generation of long addresses). (.MACRO LJSR (.WORD 4EB9H (.WORD 00FEH (.WORD %1 (.ENDM (  ; Permanent jump vector assignments in PROM  KEYBCH .EQU 8H ;Get a keyboard character  TERMCHAR.EQU 14H ;Output a character  TERMTEXT.EQU 18H ;Printout text string  TERMCRLF.EQU 1CH ;Printout car<riage return & line feed  FDREAD .EQU 28H ;Read from floppy diskette (  ; RAM variables for Debugger  MEMTOP .EQU 100H ;Top of memory   ; RAM variables for BIOS  BIOSBASE.EQU 200H  CONFADDR.EQU 208H  (  ; Constants for BOOT positioning  HDSIZE .EQU 26. ;Size of header data in uncompressed code file   (.ASCII "BOOT" ;This text is checked by the Debugger @; bootstrap process to insure that the @; boot area has been initialized with @; a bootstrap routine.   START ;The Debugger transfers control to @; offset 4 in this file. (  LEA SCRATCH,A3 ;Set up RAM area for bootstrap (MOVE.L (A7)+,(A3) ;Save the return address (MOVE.W (A7)+,4(A3) ;Save the drive number (CLR.B 21.(A3) ;Clear the BIOS active flag (  ; Output initial boot message (LJSR TERMCRLF (LEA INITMSG,A0 ;Printout "SAGE Multi-User Bootstrap" (LJSR TERMTEXT (LJSR TERMCRLF (  ; Read in p-System directory (LEA DIRNAM-1,A6 ;Set up message in case of error @; note: does not have byte count. (MOVE.W #2,-(A7) ;The p-System directory is at block 2 of ( ; each devices. (LEA BUFFER,A0 ;Set up the directory buffer address (MOVE.L A0,-(A7) ;Buffer address (MOVEA.W #2048.,A0 ;The directory is 2K bytes long (MOVE.L A0,-(A7) ;Length of transfer (MOVE.W 4(A3),-(A7) ;Set up drive number (LJSR FDREAD ;Read in the directory with the floppy @; driver in PROM. (BNE BADREAD ;Found error reading directory (  ; Now search for MU.BIOS and read in first block (LEA BIOSNAM,A6 ;Set up search string (BSR SEARCH (BNE SRCHERR ;Could not find MU.BIOS (ADDQ.W #1,D1 ;Code starts at relative block 1 in file (MOVE.W D1,-(A7) ;Set up logical block for BIOS code (MOVE.W D1,6(A3)  ;Save logical block for later (LEA BUFFER2,A5 ;Set up buffer address for first block (MOVE.L A5,-(A7) ;Buffer address (MOVEA.W #512.,A0 ;Set up size for one block (MOVE.L A0,-(A7) ;Length of transfer (MOVE.W 4(A3),-(A7) ;Set up drive number (LJSR FDREAD ;Read in first block (BNE BADREAD ;Found error while reading BIOS (  ; Calculate target address for BIOS and read it into memory. (LEA BIOSPASS,A0 ;Check for BIOS password code (LEA BUFFER2+HDSIZE,A5 ;Adjust for header data in code file (CMPM.L (A5)+,(A0)+ (BNE BADPASS ;Password is not correct (MOVE.W 6(A3),-(A7) ;Set up logical block number (MOVEA.L MEMTOP,A1 ;Get current top of memory (MOVEA.W (A5)+,A0 ;Get BIOS code size (ADDA.W #HDSIZE,A0 ;Also read in header data (SUBA.L A0,A1 ;Set up code address for floppy driver (MOVE.L A1,-(A7) ;Set up BIOS codefile address in memory (MOVE.L A0,-(A7) ;Set up floppy transfer length (ADDA.W #HDSIZE,A1 ;Now form actual code address (MOVEA.L A1,A4 ;Save base of BIOS to calculate init address (MOVEA.W (A5)+,A0 ;Get size of BIOS buffer area (SUBA.L A0,A1 ;Form base of BIOS area in memory (MOVE.L A1,BIOSBASE ;Store new top of memory address (ADDA.W (A5),A4 ;Form BIOS Initialization routine address (MOVE.L A4,8(A3) ;Save starting address (MOVE.L 88.-8(A5),12.(A3) ;Save RAM Disk address (MOVE.L 92.-8(A5),16.(A3) ;Save top of RAM Disk (MOVE.B 96.-8(A5),20.(A3) ;Save RAM Disk Boot Flag (MOVE.W 4(A3),-(A7) ;Set up drive number (LJSR FDREAD ;Read in the whole BIOS (BNE BADREAD ;Found error while reading BIOS (  ; Read in Configuration info (LEA CONFNAME,A6 ;Set up search string (BSR SEARCH (BEQ $60 ;Found default file MU.CONFIG   ; Prompt user for name of confi=guration file  $10 LJSR TERMCRLF (LEA ASKCONF,A0 ;Ask for configuration file (LJSR TERMTEXT (LEA FILENAME,A6 ;Build filename string (CLR.W D1 (MOVE.B D1,(A6)  $20 LJSR KEYBCH ;Get a keyboard character (CMPI.B #0DH,D0 ;Check for carriage return (BEQ.S $50 ;Found terminator (CMPI.B #8,D0 (BEQ.S $40 ;Found Backspace (CMPI.B #" ",D0 (BLE.S $20 ;Don't process control characters or space (CMPI.B #15.,D1 (BGE.S $20 ;Too many characters (ADDQ.W #1,D1 ;Advance pointer (MOVE.B D0,0(A6,D1.W) ;Store character  CLR.B 1(A6,D1) ;Set up null terminator  $25 MOVE.B D1,(A6) ;Update string count (LJSR TERMCHAR ;Echo the character (BRA $20 ;Back for another character (  ; Handle backspace  $40 TST.W D1 (BEQ $20 ;Don't backspace past beginning (LJSR TERMCHAR ;Output Backspace (MOVEQ #" ",D0 ;Output blank (LJSR TERMCHAR (MOVEQ #8,D0 ;Set up another backspace (SUBQ.W #1,D1 ;Back up the pointer (BRA $25 (  ; Handle no file  $45 LEA SRCHMSG,A0 ;Printout "Could not find " (LJSR TERMTEXT (MOVEA.L A6,A0 (ADDQ.L #1,A0 (LJSR TERMTEXT ;Printout file name (LJSR TERMCRLF (BRA $10 ;Try again (  ; Handle carriage return  $50 LJSR TERMCRLF (TST.B D1 (BEQ PRTERR2 ;Null name field, exit debugger (BSR SEARCH (BNE $45 ;Did not find file (  $60 MOVE.W D1,-(A7) ;Set up logical block (LEA BUFFER3,A5 ;Set up buffer address (MOVE.L A5,-(A7) ;Buffer address for driver (ADDA.W #512.+HDSIZE+6,A5 (MOVE.L A5,CONFADDR ;Save address in BIOS area (ADDA.L D2,A5 ;Set up free address beyond configuration (MOVE.L A5,12.(A3) (MOVE.L D2,-(A7) ;Length of transfer (MOVE.W 4(A3),-(A7) ;Set up drive number (LJSR FDREAD ;Read in configuration (BNE BADREAD ;Found error while reading Configuration ( (MOVEA.L CONFADDR,A5 ;Check password on configuration (SUBQ.L #6,A5 (LEA CONFPASS,A0 (CMPM.L (A5)+,(A0)+ (BEQ.S $65 ;Password is good (LEA NOCONFIG,A0 ;Printout not configuration (LJSR TERMTEXT (LJSR TERMCRLF (BRA $10 (  ; Search for the optional MU.BOOTEXT.CODE file  $65 MOVEQ #0,D4 ;Default address (LEA BOOTEXT,A6 (BSR SEARCH (BNE.S $70 ;Optional boot extension not found (MOVE.W D1,-(A7) ;Set up logical block (LEA SCRATCH,A3 (MOVE.L 12.(A3),-(A7) ;Set up memory buffer (MOVE.L D2,-(A7) ;Length of transfer (MOVE.W 4(A3),-(A7) ;Set up drive number (LJSR FDREAD ;Read in boot extension code (BNE BADREAD ;Found error while reading boot extension (LEA SCRATCH,A3 (MOVE.L 12.(A3),D4  ADDI.L #512.+HDSIZE,D4 ;Bias to p-System assemby code (MOVEA.L D4,A5 (LEA EXBTPASS,A0  CMPM.L (A5)+,(A0)+ (BEQ.S $70 ;Good boot extension (LEA BADEXT,A0 ;Printout bad MU.BOOTEXT.CODE (LJSR TERMTEXT (LJSR TERMCRLF (MOVEQ #0,D4 ;No boot extension (  $70 LEA STACK,SP (MOVE.L D4,-(SP) ;Pass boot extension address (MOVE.W 4(A3),-(SP) ;Physical drive number  ADDQ.W #4,(SP)   ; Search for the optional USER.BOOT.CODE routine (MOVEQ #0,D4 ;Default User boot routine address (LEA USERBOOT,A6 (BSR SEARCH (BNE.S $80 ;No user boot (MOVE.W D1,D4 ;Save routine block address  $80 MOVE.L D4,-(SP) ;Pass User Boot routine address (MOVE.L D2,-(SP) ;Pass User Boot routine size (MOVE.W #0ABCDH,-(SP) ;New boot indicator code ( ; Initialize the BIOS  ENTER MOVEA.L 8(A3),A4 ;Get BIOS initialization= address (JSR (A4) ;Initialize BIOS (  ; Never returns unless no tasks defined (MOVE #2700H,SR ;Make sure interrupts disabled (LEA NOTSKMSG,A0 (BRA PRTERR1 ( (  ; Search Routine for directory entry  ; A6 is pointer to target string.  ; A1 is returned with block address of start of code in file.  SEARCH (LEA BUFFER+32.,A5 ;Set up pointer to directory entry @; skipping initial volume entry. (LEA -16.(A5),A0 (MOVE.W (A0),D0 ;Get number of files (CMPI.W #77.,D0 ;Check for limit (BLE.S $5 ;Within limit  ROL.W #8,D0 ;Check if byte directory needs flipped  CMPI.W #77.,D0 ;Check limit again (BGT BADDIR ;Illegal directory   ; Swap bytes in directory (MOVE.W D0,(A0) ;Store swapped number of files (ADDQ.L #4,A0 (MOVE.W D0,D3 (BSR.S BYTSWAP ;Swap the date word (ADDQ.L #4,A0  ; Swap each directory entry  $2 BSR.S BYTSWAP ;First block (BSR.S BYTSWAP ;Last block (BSR.S BYTSWAP ;File kind (ADDA.W #16.,A0 (BSR.S BYTSWAP ;Last byte of data (BSR.S BYTSWAP ;Date (SUBQ.W #1,D3 (BNE $2 ;Back for more (  $5 TST.B D0 ;Check for empty directory (BEQ.S $40 ;Directory was empty, entry not found (  ; Base of loop for each entry  $10 MOVEA.L A6,A0 ;Set up pointer to test string (MOVEA.L A5,A1 ;Set up pointer to directory entry (CLR.L D1 (MOVE.B (A6),D1 ;Set up byte count for testing (  ; Base of loop for each character  $20 CMPM.B (A0)+,(A1)+ ;Compare the entries (DBNE D1,$20 (BNE.S $30 ;Found miscompare (CLR.L D2 (MOVE.W -6(A5),D1 ;Get starting block number (MOVE.W -4(A5),D2 ;Get trailing block number (SUB.W D1,D2 ;Form size in blocks (LSL.L #8,D2 ;Form size in bytes (LSL.L #1,D2 (CLR.B D0 ;Zero flag indicates success (RTS (  $30 SUBQ.B #1,D0 ;Check entry count (BEQ.S $40 ;Could not find entry (LEA 26.(A5),A5 ;Short way to advance address pointer (BRA.S $10 ;Back for another try (  $40 MOVE.B #1,D0 ;NE flag indicates failure (RTS (   ; Byte swap routine  BYTSWAP MOVE.W (A0),D1 (ROL.W #8,D1 (MOVE.W D1,(A0)+ (RTS    ; Found error while reading diskette.  ; Printout message about problem and return to debugger.  BADREAD LEA READMSG,A0 ;Printout "Error reading "  BRA.S PRTERR    ; Could not find "BIOS" password in SYSTEM.BIOS file.  ; Printout message about problem and return to debugger.  BADPASS LEA PASSMSG,A0 ;Printout "Not BIOS code in " (BRA.S PRTERR    ; Directory entry size was in error.  ; Printout message about problem and return to Debugger.  BADDIR ADDQ.L #4,A7 ;Get rid of return address (LJSR TERMCRLF (LEA DIRMSG,A0 ;Printout "Illegal directory" (BRA.S PRTERR    ; Could not find file in directory.  ; Printout message about problem and return to debugger.  SRCHERR LEA SRCHMSG,A0 ;Printout "Could not find " (   ; Printout error message  PRTERR LJSR TERMCRLF (LJSR TERMTEXT (MOVEA.L A6,A0 ;Set up pointer to name of item being read (ADDQ.L #1,A0 ;Bypass byte count  PRTERR1 LJSR TERMTEXT ;Printout type of information (LJSR TERMCRLF  PRTERR2 MOVEA.L (A3),A0 ;Return address to Debugger  JMP (A0)  (  ; Passwords (must have word alignment)  BIOSPASS.ASCII "BIOS" ;MU.BIOS password  CONFPASS.ASCII "MUCF" ;Configuration password  EXBTPASS.ASCII "MUBE" ;Boot extension password    >; Messages  INITMSG .ASCII "SAGE Multi-User System Bootstrap" (.BYTE 0   READMSG .ASCII "Error reading " (.BYTE 0   SRCHMSG .ASCII "Could not find " (.BYTE 0   PASSMSG .ASCII "Not BIOS code in " (.BYTE 0   NOTSKMSG.ASCII "No Tasks" (.BYTE 0   ASKCONF .ASCII "Configuration file? " (.BYTE 0   NOCONFIG.ASCII "Not MU configuration" (.BYTE 0    BADEXT .BYTE 7 (.ASCII "Bad MU.BOOTEXT.CODE" (.BYTE 0   DIRMSG .ASCII "Illegal "  ; Must fall into DIRNAM.   ; File names  DIRNAM .ASCII "directory" ;Only for error printout (.BYTE 0   BIOSNAM .BYTE 8 ;String byte count (.ASCII "MU4.BIOS" (.BYTE 0 ;Terminator for TERMTEXT   CONFNAME.BYTE 9 (.ASCII "MU.CONFIG" (.BYTE 0 (  USERBOOT.BYTE 14. (.ASCII "USER.BOOT.CODE" (.BYTE 0 (  BOOTEXT .BYTE 15. (.ASCII "MU.BOOTEXT.CODE" (.BYTE 0 ( (.BYTE 2 ;Bootstrap Version @;If bootstrap ends with a non-zero value @; the device to device bootstrap transfer @; can determine the size. ( (.ALIGN 2  SCRATCH .EQU *+1024. ;Ram scratch area  ;Offsets: @; 0.- Return address to Debugger @; 4.- Drive number (0 or 1) @; 6.- Logical block for BIOS @; 8.- Starting address of BIOS @;12.- Starting address of boot extension @;16. @;20. @;21. @;22.- Temporary storage (4 bytes)   FILENAME.EQU SCRATCH+26. ;Configuration file name  STACK .EQU FILENAME+18.  BUFFER .EQU STACK+512. ;p-System directory  BUFFER2 .EQU BUFFER+2048. ;First block of BIOS  BUFFER3 .EQU BUFFER2+512. ;Configuration storage  (.END    Cʁ26Cʁ6ր 6tr vp"v pvp9v pvpvpYv pv p) pvpvpvpov pUv p) pvpvpv pv pv pvpvpv p~v pv pvpvpv pKvpv pvpvpvpvpv pvpvpv pv pv p*v p*Q*qhhHr   vpvp(v pv p9v pvpDv pvpvp] b И " f  i(n( s/ U( - w( ~+ zvpvpv pv pvpv pv pvp*v p*  pւiU{ -P~/PU1PK3P~6PU8PK:P~=PU?PK`AP~DPUFPKAHP~KPUMPK"OP~RPUTPKփV"^PTT "P  6t_PCɊ,aP$cPePgPփit ЂtP ЂvPІUi+ 2+Q 11-. /r .-,,u3p3˧002----01----02⼅1ۅ/uxv p,u0/҄-CP<P2P(PPP pփ5- 55"LL LR LPs0 SAGE BUILD ME>NU [V1.0]]? _______________________________________________________& MULTI.ONEE& MULTI.TWOO( MULTI.THREEE' MULTI.FOUR' MULTI.FIVE& MULTI.SIXX% P-SYSTEM WHAT.SYS.TEXTQVT1022TV925FD100 A - 12 MEG B - 18 MEG C - 40 MEGHow large is this disk?Ac, SAGE BUILD PROGRAMM? ____________________________________________________* You have selected (() This program requires a (SAGE  A RAM Size of (()K ' A disk storage capacity of ( ) megabytes- It will configure the system for ( ) users. 5 If your selection was in ERROR, press "q". To proceed with the (() program, press .SAGE BUILD PROGRAMM4_____________________________________________________ You have selected the  option which is not1 compatible with your existing hardware! YOU HAVE:A SAGE K RAMMeg Diskk YOU NEED:A SAGE K RAMMeg Diskk9 Please check the tag on the bottom of your SAGE computer6 to find its RAM size and the capacity of thee hard disk.#Type "D" to set the disk size.$ "P" to go to the p-SYSTEM..* to return to the BUILD MENU..Dp512 00III10244122IVV10244188IVV10244188IVV10244400IVV10244400IVVBb 00 00122188400IVVIII*Position with cursor keys and press RETURNN MULTI.ONE MULTI.TWO MULTI.THREE MULTI.FOURR MULTI.FIVEE MULTI.SIXI== V STRINGOP LONGOPS EXTRAIO FILEOPS PASCALIOGOTOXY CONFIGSACOMMANDISCREENOP ASCII *A 3BASE .AT ,HAVECHAICONFRSYNCONF5DATCONF1STOCONF15STCMD 0CONF2STOCONF6DATCONF7DATCONF8DATCONFCVBACONFCVSTCONFINVACONFNONECONFPARICONFPARPCONFX1 CONFSERICONFX16 CONFX64 CONSOLE DOWN 1CR /DONE 5GOMENU 4HAVE INREDIREINMONITOI -MONITOROSCFILLLE SCEOL  SCBACKSPOUTREDIROPTION NEED URAMMAX TSCCLEARLSCCLEARSSCDOWNCUSCDC1KEYSCDELKEYSCDELETE SCEOFKEYSCDOWNKESCERASS SCERASEESCETXKEYSCESCAPESCERRORLSCERRORMSCGET SCGIVE SCLEFTCUSCINSERT SCLEFTKESCWHOME SCUPCURSSCRIGHTCSCNOTLEG SCPORT SCPRINTASCRIGHTK SCUPKEY TERMINAL+UP 2TSTINIT W 6USERS K A $CURSOR $EQUAL $SYNTAX PO.?  {*******************************************************************}  {* FILE: MU.INSTALL *}  {* VERSION: 1.0 *}  {* DESCRIPTION: MU.Install is a simple program, that checks *}  {* hardware configurations and starts multi- *}  {* user script files. These files are named *}  {* Multi.One thru Multi.Six and are used to *}  {*  build turn-key multi-user system. *}  {* *}  {* HISTORY 20-DEC-83 Created -VJB & SEG *}  {* *}  {* *}  {* Copyright (c) 1983 SAGE COMPUTER *}  {* ALL RIGHTS RESERVED *}  {* *}  {*******************************************************************}   PROGRAM MUINSTALL; %{Starts BUILD disk Menu, checks hardware configurations and} %{starts a choosen script file.}   USES {$U SCREENOPS.CODE} SCREENOPS, %{$U COMMANDIO.CODE} COMMANDIO, %{$U SAGETOOLS.CODE} CONFIG_SAGE;    CONST CONSOLE=1;  Type rec= record (ram,dsk,sys:string; (end;  VAR OPTION:STRING;  ASCII:CHAR; %TERMINAL:CHAR;  %BASE,I,AT:INTEGER; %UP,DOWN,CMD,CR:CHAR; %A:PACKED ARRAY [0..1] OF CHAR; %DONE, GOMENU:BOOLEAN;  %W:Conf_Winch; %RAMMAX:INTEGER; %Have,Need:rec; %Users:integer;   FUNCTION TST_INIT:INTEGER;EXTERNAL; %{RETURNS the number of 512 byte blocks of ram}   PROCEDURE SHOWMENU; "BEGIN $SC_CLR_SCREEN; $GOTOXY(0,2); $WRITELN(' SAGE BUILD MENU [V1.0]'); $WRITELN(' _______________________________________________________'); $WRITELN; $WRITELN; $WRITELN; $WRITELN(' MULTI.ONE'); $WRITELN; $WRITELN(' MULTI.TWO'); $WRITELN; $WRITELN(' MULTI.THREE'); $WRITELN; $WRITELN(' MULTI.FOUR'); $WRITELN; $WRITELN(' MULTI.FIVE'); $WRITELN; $WRITELN(' MULTI.SIX'); $WRITELN; $WRITELN(' P-SYSTEM'); $WRITELN;  END;   PROCEDURE GET_TERMINAL(var TERM:char);  var TXIN:TEXT; $TERMINAL:string;  begin  RESET(TXIN,'WHAT.SYS.TEXT');  TERM:='O'; {OTHER}  readln(TXIN,TERMINAL);  if TERMINAL ='QVT102' then TERM:='Q';  if TERMINAL ='TV925' then TERM:='T';  if TERMINAL ='FD100' then TERM:='F';  CLOSE(TXIN);  end;   { DISK SPECIFICATIONS:   Disk Tot Tot Total Total Total User  Type Cyl Hds Trks Blocks Bytes Blocks  !6M 306 2 612 11,628 5,953,536 11,457  12M 306 4 1224 23,256 11,907,072 22,933  18M 306 6 1836 34,884 17,860,608 34,409  40M 512 8 4096 77,824 39,845,888 77,197   }  PROCEDURE WRT(X,Y:INTEGER;S:STRING);  BEGIN  GOTOXY(X,Y);  WRITE(S);  END;  PROCEDURE FIXDISK;  BEGIN  REPEAT "SC_CLR_SCREEN; "WRT(30,7,'A - 12 MEG'); "WRT(30,9,'B - 18 MEG'); "WRT(30,11,'C - 40 MEG'); "WRT(20,5,'How large is this disk?'); "READLN(ASCII);  UNTIL (ASCII in ['A','a','B','b','C','c']);  CASE ASCII OF "'A','a':Begin *W.HEADS:=4; *W.CYLINDERS:=306; *end; "'B','b':?Begin *W.HEADS:=6; *W.CYLINDERS:=306; *end; "'C','c':Begin *W.HEADS:=8; *W.CYLINDERS:=512; *end;  end;  Conf_WT_Winch(9,W);  end;      FUNCTION SHOW_SELECT:BOOLEAN;  begin  SC_CLR_SCREEN;  writeln;  writeln(' SAGE BUILD PROGRAM');  writeln(' ____________________________________________________');  writeln;  writeln(' You have selected (',OPTION,')');  writeln;  writeln;  writeln(' This program requires a (SAGE ',Need.sys,')');  writeln;  writeln(' A RAM Size of (',Need.RAM,')K ');  writeln;  writeln(' A disk storage capacity of (',Need.dsk,') megabytes');  writeln;  writeln(' It will configure the system for (',Users,') users. ');  writeln;  writeln;  writeln;  writeln(' If your selection was in ERROR, press "q".');  writeln;  write (' To proceed with the (',OPTION,') program, press .');  read(ASCII);  if (ASCII='Q') or (ASCII='q') then SHOW_SELECT:=FALSE ELSE SHOW_SELECT:=TRUE;  end;     PROCEDURE ERROR_SCREEN;   BEGIN  SC_CLR_SCREEN;  WRT(30,2,'SAGE BUILD PROGRAM');  WRT(10,3,'____________________________________________________');  WRITELN;  WRITELN;  WRITELN(' You have selected the ',OPTION,' option which is not');  WRITELN(' compatible with your existing hardware!');  WRITELN;  WRT(20,8,'YOU HAVE:');  WRT(20,10,'A SAGE ');WRT(27,10,Have.sys);  WRT(20,11,Have.ram); WRT(25,11,'K RAM');  WRT(20,12,Have.dsk); WRT(23,12,'Meg Disk');  WRT(40,8,'YOU NEED:');  WRT(40,10,'A SAGE ');WRT(47,10,Need.sys);  WRT(40,11,Need.ram); WRT(45,11,'K RAM');  WRT(40,12,Need.dsk); WRT(43,12,'Meg Disk');  WRITELN;  WRITELN;  WRITE (' Please check the tag on the bottom of your SAGE');  WRITELN(' computer');  WRITE (' to find its RAM size and the capacity of the');  WRITELN(' hard disk.');  WRT(15,19,'Type "D" to set the disk size.');  WRT(15,20,' "P" to go to the p-SYSTEM.');  WRT(15,21,' to return to the BUILD MENU.');  READ(ASCII);  case ASCII of "'D','d':FIXDISK; "'P','p':EXIT(PROGRAM); "end;  END;   FUNCTION CHECK(I:INTEGER):BOOLEAN; {CHECKS SELECTION}  BEGIN  CHECK:=FALSE;  NEED:=HAVE; {Need this to clear records}  With Need do CASE I OF %0:begin ram:='512'; dsk:=' 0'; sys:='II'; Users:=2; end; %1:begin ram:='1024'; dsk:='12'; sys:='IV'; Users:=4; end; %2:begin ram:='1024'; dsk:='18'; sys:='IV'; Users:=5; end; %3:begin ram:='1024'; dsk:='18'; sys:='IV'; Users:=6; end; %4:begin ram:='1024'; dsk:='40'; sys:='IV'; Users:=5; end; %5:begin ram:='1024'; dsk:='40'; sys:='IV'; Users:=6; end; #END;  Have.ram:='';  RAMMAX:=TST_INIT;  STR(RAMMAX DIV 2,Have.ram);  Conf_RD_Winch(9,W);  {Uses Conf_Winch to get Winchester size, as specified in BIOS - Note that !BIOS may not be correct.}  Have.dsk:=' 0'; {SAGE II}  CASE W.HEADS OF #0:Have.dsk:=' 0'; #4:Have.dsk:='12'; #6:Have.dsk:='18'; #8:Have.dsk:='40'; #END;  if Conf_SGIV then Have.sys:='IV' else Have.sys:='II';   {Now to compare what we have with what we need---}  if Have<>Need then Error_screen ELSE CHECK:=TRUE;  END;     BEGIN "GET_TERMINAL(TERMINAL); "UP:= CHR(11); "IF TERMINAL='Q' THEN DOWN:=CHR(10) ELSE DOWN:=CHR(22); "I:=0; "BASE:=7; "CR:=CHR(13); "REPEAT $SC_CLR_SCREEN; $SHOWMENU; $REPEAT &AT:=BASE+(I*2); &GOTOXY(26,AT); &UNITREAD(CONSOLE,A[0],1,0,4); &CMD:=A[0]; &IF CMD=UP THEN (BEGIN *I:=I-1; *IF I<0 THEN I:=6; (END ELSE &IF CMD=DOWN THEN (BEGIN *I:=I+1; *IF I>6 THEN I:=0; (END; &IF NOT (CMD IN [UP,DOWN,CR]) THEN (BEGIN *GOTOXY(0,23); *WRITE ('Position with cursor keys and press RETURN'); *GOTOXY(22,AT); (END; $UNTIL CMD=CR; $CASE I OF &0:OPTION:='MULTI.ONE'; &1:OPTION:='MULTI.TWO'; &2:OPTION:='MULTI.THRE'; &3:OPTION:='MULTI.FOUR'; &4:OPTION:='MULTI.FIVE'; &5:OPTION:='MULTI.SIX'; &6:EXIT(PROGRA@M); (END; $DONE:=FALSE; $IF CHECK(I) THEN &BEGIN (DONE:=SHOW_SELECT; &END; "UNTIL DONE;  OPTION:=CONCAT('I=',OPTION);  CHAIN(OPTION);  END.   BLDSK  ~~0LBLDBC\DC\DF$0C\DBLDSK Qrprprprprpr prprpr prprp-r prpp˧ zMulti.One Build Configuration7Please insert a formatted and zeroed disk into drive #5Press to continuee PASCALIO 2SOFTOPS L`SMAL4&C TY  P ?  tINITOPS KERNEL @ ,2SOFTOPS L`SMAL4[+ TY  P ?  tINITOPS KERNEL @ ,2SOFTOPS L`SMAL4IQW TY  P ?  tINITOPS KERNEL @ , NEXTTEST.CODE 4) TY  P ? 5SYSTEM.MISCINFOh SYSTEM.BIOS WINERRORS.CODE ATEST.TFINISH4 ~~0LBLDBGC\DC\DF$0C\D@FINISH4 wrpr prprpr prprpr prprprprp4r p0rp)sprpOr prprpSr prpp˧ ?% SAGE BUILD Program<_____________________________________________________________4 Your machine has been successfully configured for (( users. Press to continue EXTRAIO PASCALIO  NEXTTEST.CODE 4) TY  P ? 5SYSTEM.MISCINFOh SYSTEM.BIOS WINERRORS.CODE ATEST.TSYSTEM.MISCINFO 4 QW TY  P ? ⤋ USERLIB.TEXT 4@In TY  P ? vZSYSTEM.COMPILERtZ~ SETUP.CODE* v~ SAGEUTIL.CODEk LIBRARY$CURSOR $EQUAL A O.JL ;*************************************************************************  ;FUNCTION TST_INIT:INTEGER;  ;  ;This procedure finds out how much memory the SAGE II is equipped with.  ;and returns it as the number of 512 byte blocks.  ;************************************************************************* (.FUNC TST_INIT  RAMMAX .EQU 100H   START MOVEA.L (SP)+,A0 ;Return addr (MOVE.W (SP)+,D0 ;Throw one word of garbage away (CLR.L D0 (LEA RAMMAX,A1 (MOVE.L (A1),D0 ;get 4 bytes of max size (ROR.L #8,D0 ;number of 512 byte blocks (ROR.L #1,D0 (MOVE.W D0,-(SP) ;Return em (JMP (A0)  (.END  ATSTINIT TSTINIT [IV a.0]  _0BC ?NJp0<A0!H|2C !N@L> XNpNsC.QNsC"EgAN`t2 X?NJBfEgA`EgA `L TSTINIT TSTINIT TSTLIGHT TSTLIGHTMYSTACK 8STACK MYSTACK STACK TSTCONT TSTCONT  MUINSTAL u2 [IV a.0]MUINSTALr uv pvpv pvpvpvpvp;v pvpvpOv pvpvpcv pvpvpxv pvpvpv pvpvpv pvpvpv pvpvpV`-w`wpWO`.Pv p`v p.WQĄ.WTĄ.WF`wp`wW)`*P-,u`v p-*r   *v pv p*Կ*3Cʁ26%Cʁ26Cʁ6ր 6tr vp"v pvp9v pvpvpYv pv p) pvpvpvpov pUv p) pvpvpv pv pv pvpvpv p~v pv pvpvpv pKvpv pvpvpvpvpv pvpvpv pv pv p*v p*Q*qhhHr   vpvp(v pv p9v pvpDv pvpvp] b И " f  i(n( s/ U( - w( ~+ zvpvpv pv pvpv pv pvp*v p*  pւiU{ -P~/PU1PK3P~6PU8PK:P~=PU?PK`AP~DPUFPKAHP~KPUMPK"OP~RPUTPKփV"^PTT "P  6t_PCɊ,aP$cPePgPփit ЂtP ЂvPІUi+ 2+Q 11-. /r .-,,u3p3˧002----01----02⼅1ۅ/uxv p,u0/҄-CP<P2P(PPP pփ5- 55"LL LR LPs0 SAGE BUILD MEANU [V1.0]]? _______________________________________________________& MULTI.ONEE& MULTI.TWOO( MULTI.THREEE' MULTI.FOUR' MULTI.FIVE& MULTI.SIXX% P-SYSTEM WHAT.SYS.TEXTQVT1022TV925FD100 A - 12 MEG B - 18 MEG C - 40 MEGHow large is this disk?Ac, SAGE BUILD PROGRAMM? ____________________________________________________* You have selected (() This program requires a (SAGE  A RAM Size of (()K ' A disk storage capacity of ( ) megabytes- It will configure the system for ( ) users. 5 If your selection was in ERROR, press "q". To proceed with the (() program, press .SAGE BUILD PROGRAMM4_____________________________________________________ You have selected the  option which is not1 compatible with your existing hardware! YOU HAVE:A SAGE K RAMMeg Diskk YOU NEED:A SAGE K RAMMeg Diskk9 Please check the tag on the bottom of your SAGE computer6 to find its RAM size and the capacity of thee hard disk.#Type "D" to set the disk size.$ "P" to go to the p-SYSTEM..* to return to the BUILD MENU..Dp512 00III10244122IVV10244188IVV10244188IVV10244400IVV10244400IVVBb 00 00122188400IVVIII*Position with cursor keys and press RETURNN MULTI.ONE MULTI.TWO MULTI.THREE MULTI.FOURR MULTI.FIVEE MULTI.SIXI== _0BC ?N V STRINGOP LONGOPS EXTRAIO FILEOPS PASCALIOGOTOXY CONFIGSACOMMANDISCREENOP ZAPIT ~~0LBLDBEC\DC\DF$0C\DZAPIT Wr*Ps pspVsps pV VWˁp VTT՟TtP t*uQuRuP*s pW*rpWWvUpSSs ss sWrpTTXWr(Enter the number of volumes to be ZEROEDD#: NOT FOUNDZEROEDD EXTRAIO STRINGOPLONGOPS PASCALIOFILEOPS  MERGE ~~0LBLDBIC\DC\DF$0C\DMERGE |rrֆPrpS P|Srpsp9*Ps ps p*t֊|*s p|sprps pspPs ps prpsp$*Ps ps p|*s p|sp҆rp|rp|rr#4:FORMATINFO.TEXTT#4:MUFORMAT.TEXTT 1:ENTER THE PARTITION FILE NAME STRINGOPPASCALIOFILEOPS  BO^LL #4:SAGETOOLS.CODE  TERMSCRI ~~0LBUSu\\F$0\TERMSCRIR-`-s`sp`-t p`tp`t p`tp`sp`s--`-s` sp`-Pt p`t p`Pt p`t p`sp`s-ctpt ptptptp)t ptptp=t ptptpQt ptptpct ptptprt ptptpt pt ptp0^-PM-Pupt p#-P րխWW#vWWW#vWWW vWvW vWWVVWV지*V ȅVVۆ rճWW vWvWvWWWvWvW-vWWWvW)vWWWvW7vW-vW8vWWWvW@vWRfWWWvW-dvWWWvWbvWWWvWpvW՟WWvW-fvWWWvWvWWWvWvW-vWvWWWvWvWDWWvW-fvWWWvWvWWWvWvWvWWVVWV지*V ȅVVۆr WHAT.SYS.TEXT WHAT.SYS.TEXT1 QUICK TERMINAL INSTALLATION MENU& S- SAGE or QVT1022' T- TELEVIDBEO TV925# F- FREEDOM 100 M- MENUU! P- p-SYSTEM < Select the letter for the terminal you have::QVT1022CTV925A.11FD100BFtBUILD#FTMU.INSTAL.CODE,SYSTEM.STARTUP*YQI#FTBUS.START.CODE,SYSTEM.STARTUP*YQII=""MAPPERRBUSINESSS XW7SETUP*Y**K*FRSYSTEM.MISCINFO*YTT.MISCINFO,SYSTEM.MISCINFO**T.SPEC,TS.SPEC*Y"TBUS.START.CODE,SYSTEM.STARTUP*YQII ALTERNATEFRSYSTEM.MISCINFO*YTT.MISCINFO,SYSTEM.MISCINFO**"TBUS.START.CODE,SYSTEM.STARTUP*YQIIBUILDFRSYSTEM.MISCINFO*YTE...MISC,SYSTEM.MISCINFO**T.MISCINFO,STD.MISCINFO*YY"TMU.INSTAL.CODE,SYSTEM.STARTUP*YQIIMAPPERRFRSYSTEM.MISCINFO*YTE...MISC,SYSTEM.MISCINFO*QIII="". PSTRINGOPEXTRAIO PASCALIOFILEOPS COMMANDI TERMSCRI ~~0LBUSu\\F$0\TERMSCRIR-`-s`sp`-t p`tp`t p`tp`sp`s--`-s` sp`-Pt p`t p`Pt p`t p`sp`s-ctpt ptptptp)t ptptp=t ptptpQt ptptpct ptptprt ptptpt pt ptp0^-PM-Pupt p#-P րխWW#vWWW#vWWW vWvW vWWVVWV지*V ȅVVۆ rճWW vWvWvWWWvWvW-vWWWvW)vWWWvW7vW-vW8vWWWvW@vWRfWWWvW-dvWWWvWbvWWWvWpvW՟WWvW-fvWWWvWvWWWvWvW-vWvWWWvWvWDWWvW-fvWWWvWvWWWvWvWvWWVVWV지*V ȅVVۆr WHAT.SYS.TEXT WHAT.SYS.TEXT1 QUICK TERMINAL INSTALLATION MENU& S- SAGE or QVT1022' T- TELEVIDEO TV925# F- FREEDOM 100 M- MENUU! P- p-SYSTEM < Select the letter for the terminal you have::QVT1022CTV925A.11FD100BFtBUILD#FTMU.INSTAL.CODE,SYSTEM.STARTUP*YQI#FTBUS.START.CODE,SYSTEM.STARTUP*YQII=""MAPPERRBUSINESSS XW7SETUP*Y**K*FRSYSTEM.MISCINFO*YTT.MISCINFO,SYSTEM.MISCINFO**T.SPEC,TS.SPEC*Y"TBUS.START.CODE,SYSTEM.STARTUP*YQII ALTERNATEFRSYSTEM.MISCINFO*YTT.MISCINFO,SYSTEM.MISCINFO**"TBUS.START.CODE,SYSTEM.STARTUP*YQIIBUILDFRSYSTEM.MISCINFO*YTE...MISC,SYSTEM.MISCINFO**T.MISCINFO,STD.MISCINFO*YY"TMU.INSTAL.CODE,SYSTEM.STARTUP*YQIIMAPPERRFRSYSTEM.MISCINFO*YTE...MISC,SYSTEM.MISCINFO*QIII="". PSTRINGOPEXTRAIO PASCALIOFILEOPS COMMANDI COCONFIG CONFIG [IV a.0]N LMUCF~~<~~x~~~R~~~,~~h~ ~ ~ B~ " " D" v" " " , 8, d z     < B@B B@ 45@ @  5ef@ @   f@ @ @   @   @ @ @@@ @ @ @ @ @@@n@@n "@@~@@~@@~@@~()@@P*}@PP*}@P2H2ILt @H2ILt @H2ILt @H2ILt @C   !"#$%&'()*+,-./0123456789:;<=>?  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 QUME QVT 102 '-78.'''''HR1FI,G6# 6$=>P p0fgehkj 31}{.G0XU%$()VT 52  -7 #P -----|H C HJGFDOCONFIG CONFIG [IV a.0]N LMUCF~~<~~x~~~R~~~,~~h~ ~ ~ B~ " " D" v" " " , 8, d z     < B@B B@ 45@ @  5ef@ @   f@ @  @ @   @ @    ) *@ @@   @@@ @ @ @ @ @@D@n@@n@@~@@~@@~@@~@@P*}@PP*}@P *2H2ILt @H2ILt @H2ILt @H2ILt @  !"#$%&'()*+,-./0123456789:;<=>?  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 QUME QVT 102 '-78.'''''HR1FI,G6# 6$=>P p0fgehkj 31}{.G0XU%$()EVT 52  -7 #P -----|H C HJGFOCONFIG CONFIG [IV a.0]N LMUCF~~<~~x~~~R~~~,~~h~ ~ ~ B~ " " D" v" " " , 8, d z     < B@B B@ 45@ @  5ef@ @   f@ @  @ @   @ @    ) *@ @@   @E@@ @ @ @ @ @@@n@@n@@~@@~@@~@@~@@P*}@PP*}@P *HLt @H2ILt @H2ILt @H2ILt @  !"#$%&'()*+,-./0123456789:;<=>?  TELEVIDEO 925  '8.'''''H1FI,G6#0:<=>  6$P 10-----| 31dbhgf.0G0XU()() FREEDOM 100  %-78.'%%&%HR1FI,G6#0:Q<=>  6$P 2p0FGEHKJ 31dbhgf.1e G0XU%$()FVT 102   PP-----|  H SAGE QUME 102 '-78.'''''HR1FI,G6# 6$=>P p0fgehkj 31}{G0XU%$()VT 52  -7 #P -----|H C HJGFOCONFIG CONFIG [IV a.0]N LMUCF~~<~~x~~~R~~~,~~h~ ~ ~ B~ " " D" v" " " , 8, d z     < B@B B@ 45@ @  F5ef@ @  f@ @ @ @  @ @   ) *@ @ @@@ @ @ @ @ @@@n@@n "@@~@@~@@~@@~@@P*}@PP*}@P 2H2ILt @H2ILt @H2ILt @H2ILt @   !"#$%&'()*+,-./0123456789:;<=>? G 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 QUME QVT 102 '-78.'''''HR1FI,G6# 6$=>P p0fgehkj 31}{.G0XU%$()VT 52  -7 #P -----|H C HJGFGOCONFIG CONFIG [IV a.0]N LMUCF~~<~~x~~~R~~~,~~h~ ~ ~ B~ " " D" v" " " , 8, d z     < B@B B@ 45@ @  5ef@ @  f@ @ @ @  @ @   ) *@ @ @@@ @ @ @ @ @@@n@@n "@@~@@~@@~@@~@@P*}@PP*}@P HLt @H2ILt @H2ILt @H2ILt @H   !"#$%&'()*+,-./0123456789:;<=>?  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 HJGFHOCONFIG CONFIG [IV a.0]N LMUCF~~<~~x~~~R~~~,~~h~ ~ ~ B~ " " D" v" " " , 8, d z     < B@B B@ 45@@ 5ef@@ f@  @   @    ) *@ @ @@@ @ @ @ @ @@I@n @@n@@~@@~@@~@@~@@P*}@PP*}@Pf H2ILt @H2ILt @H2ILt @H2ILt @  !"#$%&'()*+,-./0123456789:;<=>?  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%$()IVT 52  -7 #P -----|H C HJGFO^LL#Partition 1: Cylinder 0, Head 1, Blocks = 1292 1Name = SINGLE 1System = UCSD #Partition 2: Blocks = 456 1Name = MULTI 1System = UCSD #Partition 3: Blocks = 1292 1Name = SYS1 1System = UCSD #Partition 4: Blocks = 1292 1Name = SYS2 1System = UCSD #Partition 5: Blocks = 1292 1Name = SYS3 1System = UCSD #Partition 6: Blocks = 1292 1Name = SYS4 1System = UCSD #Partition 7: Blocks = 3667 1Name = DATA1 1System = UCSD #Partition 8: Blocks = 3667 1Name = DATA2 1System = UCSD #Partition 9: Blocks = 3667 1Name = DATA3 1System = UCSD #Partition 10: Blocks = 3667 1Name = DATA4 1System = UCSD #Partition 11: Blocks = 1292 1Name = SCRATCH 1System = UCSD JO^gL#Partition 1: Cylinder 0, Head 1, Blocks = 1292 1Name = SINGLE 1System = UCSD #Partition 2: Blocks = 456 1Name = MULTI 1System = UCSD #Partition 3: Blocks = 1292 1Name = SYS1 1System = UCSD #Partition 4: Blocks = 1292 1Name = SYS2 1System = UCSD #Partition 5: Blocks = 1292 1Name = SYS3 1System = UCSD #Partition 6: Blocks = 1292 1Name = SYS4 1System = UCSD #Partition 7: Blocks = 1292 1Name = SYS5 1System = UCSD #Partition 8: Blocks = 11723 1Name = DATA1 1System = UCSD #Partition 9: Blocks = 11723 1Name = DATA2 1System = UCSD #Partition 10: Blocks = 11723 1Name = DATA3 1System = UCSD #Partition 11: Blocks = 11723 1Name = DATA4 1System = UCSD #Partition 12: Blocks = 11723 1Name = DATA5 1System = UCSD #Partition 13: Blocks = 10394 1Name = SCRATCH 1System = UCSD O^LL#Partition 1: Cylinder 0, Head 1, Blocks = 1292 1Name = SINGLE 1System = UCSD #Partition 2: Blocks = 456 1Name = MULTI 1System = UCSD #Partition 3: Blocks = 1292 1Name = SYS1 1System = UCSD #Partition 4: Blocks = 1292 1Name = SYS2 1System = UCSD #Partition 5: Blocks = 1292 1Name = SYS3 1System = UCSD #Partition 6: Blocks = 1292 1Name = SYS4 1System = UCSD #Partition 7: Blocks = 1292 1Name = SYS5 1System = UCSD #Partition 8: Blocks = 4959 1Name = DATA1 1System = UCSD #Partition 9: Blocks = 4959 1Name = DATA2 1System = UCSD #Partition 10: Blocks = 4959 1Name = DATA3 1System = UCSD #Partition 11: Blocks = 4959 1Name = DATA4 1System = UCSD #Partition 12: Blocks = 4959 1Name = DATA5 1System = UCSD #Partition 13: Blocks = 1292 1Name = SCRATCH 1System = UCSD JO^gL#Partition 1: Cylinder 0, Head 1, Blocks = 1292 1Name = SINGLE 1System = UCSD #Partition 2: Blocks = 456 1Name = MULTI 1System = UCSD #Partition 3: Blocks = 1292 1Name = SYS1 1System = UCSD #Partition 4: Blocks = 1292 1Name = SYS2 1System = UCSD #Partition 5: Blocks = 1292 1Name = SYS3 1System = UCSD #Partition 6: Blocks = 1292 1Name = SYS4 1System = UCSD #Partition 7: Blocks = 1292 1Name = SYS5 1System = UCSD #Partition 8: Blocks = 1292 1Name = SYS6 1System = UCSD #Partition 9: Blocks = 3933 1Name = DATA1 1System = UCSD #Partition 10: Blocks = 3933 1Name = DATA2 1System = UCSD #Partition 11: Blocks = 3933 1Name = DATA3 1System = UCSD #Partition 12: Blocks = 3933 1Name = DATA4 1System = UCSD #Partition 13: Blocks = 3933 1Name = DATA5 1System = UCSD #Partition 14: Blocks = 3933 1Name = DATA6 1System = UCSD #Partition 15: Blocks = 1292 1Name = SCRATCH 1System = UCSD O^gL#Partition 1: Cylinder 0, Head 1, Blocks = 1292 1Name = SINGLE 1System = UCSD #Partition 2: Blocks = 456 1Name = MULTI 1System = UCSD #Partition 3: Blocks = 1292 1Name = SYS1 1System = UCSD #Partition 4: Blocks = 1292 1Name = SYS2 1System = UCSD #Partition 5: Blocks = 1292 1Name = SYS3 1System = UCSD #Partition 6: Blocks = 1292 1Name = SYS4 1System = UCSD #Partition 7: Blocks = 1292 1Name = SYS5 1System = UCSD #Partition 8: Blocks = 1292 1Name = SYS6 1System = UCSD #Partition 9: Blocks = 9557 1Name = DATA1 1System = UCSD #Partition 10: Blocks = 9557 1Name = DATA2 1System = UCSD #Partition 11: Blocks = 9557 1Name = DATA3 1System = UCSD #Partition 12: Blocks = 9557 1Name = DATA4 1System = UCSD #Partition 13: Blocks = 9557 1Name = DATA5 1System = UCSD #Partition 14: Blocks = 9557 1Name = DATA6 1System = UCSD #Partition 15: Blocks = 10355 1Name = SCRATCH 1System = UCSD K$CURSOR $EQUAL PO. XSAGE4UTIL  AMFA306  G306  N6     YBSYSTEM.BIOS !MFA306  G306  N6     Y  XMERGE  #4:MF.18.6.TEXT  XWFORMAT  #4:MUFORMAT.TEXT  AE    XZAP  15  FZ#9:  Y1280  SINGLE:  YZ#10:  Y456  MULTI:  YZ#12:  Y1280  USER1:  YZ#18:  Y3933  DATA1:  YZ#19:  Y3933  DATA2:  YZ#20:  Y3933  DATA3:  YZ#21:  Y3933  DATA4:  YZ#22:  Y3933  DATA5:  YZ#23:  Y3933  DATA6:  YZ#24:  Y1280  SCRATCH:  YQXSAGE4UTIL  D#4:SAGE.WBOOT.CODE  YSINGLE:  Y D#4:MU4.WBOOT.CODE  YMULTI:  Y D#4:MU.PBOOT.CODE  YUSER1:  Y   FT#4:SYSTEM.=,#9:$  T#4:SAGE4UTIL.CODE,#9:$  R#9:SYSTEM.STARTUP  YT#4:SYSTEM.=,#12:$  T#4:SAGE4UTIL.CODE,#12:$  R#12:SYSTEM.STARTUP  YR#12:SYSTEM.MISCINFO  YT#4:STD.MISCINFO,#12:SYSTEM.MISCINFO  T#12:,#13:  YC#13:,USER2:  T#12:,#14:  YC#14:,USER3:  T#12:,#15:  YC#15:,USER4:  T#12:,#16:  YC#16:,USER5:  T#12:,#17:  YC#17:,USER6:  T#4:MU4.BIOS,MULTI:$  T#4:MC.18.6,MULTI:MU.CONFIG  T#4:MUFORMAT.TEXT,MULTI:FORMATINFO.TEXT  QXFINISH4  6  H O^AL XSAGE4UTIL  AMFA512  G512  N8     YBSYSTEM.BIOS !MFA512  G512  N8     Y  XMERGE  #4:MF.40.6.TEXT  XWFORMAT  #4:MUFORMAT.TEXT  AE    XZAP  15  FZ#9:  Y1280  SINGLE:  YZ#10:  Y456  MULTI:  YZ#12:  Y1280  USER1:  YZ#18:  Y9557  DATA1:  YZ#19:  Y9557:  DATA2:  YZ#20:  Y9557:  DATA3:  YZ#21:  Y9557:  DATA4:  YZ#22:  Y9557  DATA5:  YZ#23:  Y9557  DATA6:  YZ#24:  Y10355  SCRATCH:  YQXSAGE4UTIL  D#4:SAGE.WBOOT.CODE  YSINGLE:  Y D#4:MU4.WBOOT.CODE  YMULTI:  Y D#4:MU.PBOOT.CODE  YUSER1:  Y   FT#4:SYSTEM.=,#9:$  T#4:SAGE4UTIL.CODE,#9:$  R#9:SYSTEM.STARTUP  YT#4:SYSTEM.=,#12:$  T#4:SAGE4UTIL.CODE,#12:$  R#9:SYSTEM.STARTUP  YR#12:SYSTEM.MISCINFO  YT#4:STD.MISCINFO,#12:SYSTEM.MISCINFO  T#12:,#13:  YC#13:,USER2:  T#12:,#14:  YC#14:,USER3:  T#12:,#15:  YC#15:,USER4:  T#12:,#16:  YC#16:,USER5:  T#12:,#17:  YC#17:,USER6:  T#4:MU4.BIOS,MULTI:$  T#4:MC.40.6,MULTI:MU.CONFIG  T#4:MUFORMAT.TEXT,MULTI:FORMATINFO.TEXT  QXFINISH4  6  H KO^L XBL.DSK  XSAGE4UTIL  D#4:MU4.FBOOT.CODE  Y#5:  Y   FT#4:MU4.BIOS,#5:$  T#4:MC.0.2,#5:MU.CONFIG  Q  XBL.DSK  XSAGE4UTIL  D#4:MU.PBOOT.CODE  Y#5:  Y   FT#4:SYSTEM.=,#5:$  T#4:SAGE4UTIL.CODE,#5:$  R#5:SYSTEM.MISCINFO  YR#5:SYSTEM.STARTUP  YT#4:STD.MISCINFO,#5:SYSTEM.MISCINFO  Q  XBL.DSK  XSAGE4UTIL  D#4:MU.PBOOT.CODE  Y#5:  Y   FT#4:SYSTEM.=,#5:$  T#4:SAGE4UTIL.CODE,#5:$  R#5:SYSTEM.MISCINFO  YR#5:SYSTEM.STARTUP  YT#4:STD.MISCINFO,#5:SYSTEM.MISCINFO  QXFINISH4  2  H      O^L XSAGE4UTIL  AMFA306  G306  N4     YBSYSTEM.BIOS !MFA306  G306  N4     Y  XMERGE  #4:MF.12.4.TEXT  XWFORMAT  #4:MUFORMAT.TEXT  AE    XZAP  11  FZ#9:  Y1280  SINGLE:  YZ#10:  Y456  MULTI:  YZ#12:  Y1280  USER1:  YZ#16:  Y3667  DATA1:  YZ#17:  Y3667:  DATA2:  YZ#18:  Y3667:  DATA3:  YZ#19:  Y3667:  DATA4:  YZ#20:  Y1280  SCRATCH:  YQXSAGE4UTIL  D#4:SAGE.WBOOT.CODE  YSINGLE:  Y D#4:MU4.WBOOT.CODE  YMULTI:  Y D#4:MU.PBOOT.CODE  YUSER1:  Y   FT#4:SYSTEM.=,#9:$  T#4:SAGE4UTIL.CODE,#9:$  R#9:SYSTEM.STARTUP  YT#4:SYSTEM.=,#12:$  T#4:SAGE4UTIL.CODE,#12:$  R#12:SYSTEM.MISCINFO  YR#12:SYSTEM.STARTUP  YT#4:STD.MISCINFO,#12:SYSTEM.MISCINFO  T#12:,#13:  YC#13:,USER2:  T#12:,#14:  YC#14:,USER3:  T#12:,#15:  YC#15:,USER4:  T#4:MU4.BIOS,MULTI:$  T#4:MUFORMAT.TEXT,MULTI:FORMATINFO.TEXT  T#4:MC.12.4,MULTI:MU.CONFIG  QXFINISH4  4  H LO^L XSAGE4UTIL  AMFA306  G306  N6     YBSYSTEM.BIOS !MFA306  G306  N6     Y  XMERGE  #4:MF.18.5.TEXT  XWFORMAT  #4:MUFORMAT.TEXT  AE    XZAP  13  FZ#9:  Y1280  SINGLE:  YZ#10:  Y456  MULTI:  YZ#12:  Y1280  USER1:  YZ#17:  Y4959  DATA1:  YZ#18:  Y4959:  DATA2:  YZ#19:  Y4959:  DATA3:  YZ#20:  Y4959:  DATA4:  YZ#21:  Y4959  DATA5:  YZ#22:  Y1280  SCRATCH:  YQXSAGE4UTIL  D#4:SAGE.WBOOT.CODE  YSINGLE:  Y D#4:MU4.WBOOT.CODE  YMULTI:  Y D#4:MU.PBOOT.CODE  YUSER1:  Y   FT#4:SYSTEM.=,#9:$  T#4:SAGE4UTIL.CODE,#9:$  R#9:SYSTEM.STARTUP  YT#4:SYSTEM.=,#12:$  T#4:SAGE4UTIL.CODE,#9:$  R#12:SYSTEM.STARTUP  YR#12:SYSTEM.MISCINFO  YT#4:STD.MISCINFO,#12:SYSTEM.MISCINFO  T#12:,#13:  YC#13:,USER2:  T#12:,#14:  YC#14:,USER3:  T#12:,#15:  YC#15:,USER4:  T#12:,#16:  YC#16:,USER5:  T#4:MU4.BIOS,MULTI:$  T#4:MUFORMAT.TEXT,MULTI:FORMATINFO.TEXT  T#4:MC.18.5,MULTI:MU.CONFIG  QXFINISH4  5  H O^AL XSAGE4UTIL  AMFA512  G512  N8     YBSYSTEM.BIOS  MFA512  G512  N8     Y  XMERGE  #4:MF.40.5.TEXT  XWFORMAT  #4:MUFORMAT.TEXT  AE    XZAP  13  FZ#9:  Y1280  SINGLE:  YZ#10:  Y456  MULTI:  YZ#12:  Y1280  USER1:  YZ#17:  Y11723  DATA1:  YZ#18:  Y11723  DATA2:  YZ#19:  Y11723  DATA3:  YZ#20:  Y11723  DATA4:  YZ#21:  Y11723  DATA5:  YZ#22:  Y10394  SCRATCH:  YQXSAGE4UTIL  D#4:SAGE.WBOOT.CODE  YSINGLE:  Y D#4:MU4.WBOOT.CODE  YMULTI:  Y D#4:MU.PBOOT.CODE  YUSER1:  Y   FT#4:SYSTEM.=,#9:$  T#4:SAGE4UTIL.CODE,#9:$  R#9:SYSTEM.STARTUP  YT#4:SYSTEM.=,#12:$  T#4:SAGE4UTIL.CODE,#12:$  R#12:SYSTEM.MISCINFO  YR#12:SYSTEM.STARTUP  YT#4:STD.MISCINFO,#12:SYSTEM.MISCINFO  T#12:,#13:  YC#13:,USER2:  T#12:,#14:  YC#14:,USER3:  T#12:,#15:  YC#15:,USER4:  T#12:,#16:  YC#16:,USER5:  T#4:MU4.BIOS,MULTI:$  T#4:MC.40.5,MULTI:MU.CONFIG  T#4:MUFORMAT.TEXT,MULTI:FORMATINFO.TEXT  QXFINISH4  5  H LO^ PROGRAM ZAPIT;   VAR #S,S1:STRING; #I,J,K,IERR:INTEGER; #BUFFER:PACKED ARRAY [0..2047] OF 0..255; #F:FILE;   BEGIN "S:=''; "WRITELN('Enter the number of volumes to be ZEROED'); "READLN(I); "I:=I + 9; "FILLCHAR(BUFFER[0],2048,0); "FOR K:=9 TO I DO $BEGIN &STR(K,S1); &S:=CONCAT('#',S1,':'); &WRITE(S); &REWRITE(F,S); &{$I-} &J:=BLOCKWRITE(F,BUFFER[0],4,2); &IERR:=IORESULT; &IF IERR<>0 THEN WRITELN('NOT FOUND') &ELSE WRITELN ('ZEROED'); &{$I+} &CLOSE(F); $END;  END.  O^WW PROGRAM MERGE;  VAR $OS,S,FS:STRING; $TXIN,TXOUT:TEXT; $QUIT:BOOLEAN;   BEGIN  QUIT:=FALSE;  FS:='#4:FORMATINFO.TEXT';  RESET(TXIN,FS);  OS:='#4:MUFORMAT.TEXT';  REWRITE(TXOUT,OS);   WHILE (NOT (QUIT)) AND NOT(EOF(TXIN)) DO "BEGIN $READLN(TXIN,S); $IF (POS(' 1:',S)>0) 'THEN QUIT:=TRUE ELSE WRITELN(TXOUT,S); "END;  CLOSE(TXIN,LOCK);  WRITELN('ENTER THE PARTITION FILE NAME');  READLN(FS);  RESET(TXIN,FS);  WHILE NOT(EOF(TXIN)) DO "BEGIN $READLN(TXIN,S); $WRITELN(TXOUT,S); "END;  CLOSE(TXIN,LOCK);  CLOSE(TXOUT,LOCK);  END.  M$CURSOR $EQUAL $SYNTAX O. PROGRAM FINISH4;   VAR "I:INTEGER; "A:PACKED ARRAY [0..1] OF CHAR;   BEGIN "READLN(I); {READS THE NUMBER OF USERS THE MACHINE IS CONFIGURED FOR} "REPEAT $WRITELN;WRITELN; $WRITELN(' SAGE BUILD Program'); " WRITELN; " WRITELN('____________________________________________________________'); " WRITELN;WRITELN;WRITELN; $WRITELN(' Your machine has been successfully configured for (',I,')'); " WRITELN(' users.'); " WRITELN; $WRITELN(' Press to continue'); $UNITREAD(1,A[0],1,0); "UNTIL (A[0]=' ');  END.  $CURSOR $EQUAL $SYNTAX   O. PROGRAM BLDSK;   VAR #A:PACKED ARRAY [0..1] OF CHAR;   BEGIN "REPEAT $WRITELN;WRITELN;WRITELN;WRITELN;WRITELN; $WRITELN('Multi.One Build Configuration'); $WRITELN; $WRITELN('Please insert a formatted and zeroed disk into drive #5'); $WRITELN; $WRITELN('Press to continue'); $UNITREAD(1,A[0],1,0); "UNTIL (A[0]=' ');  END.  MQVT102 BUILD O^5{(.TITLE "SAGE Multi-User System Bootstrap" .PROC BOOTMU   ;********************************************************************** ;  ; SAGE COMPUTER - Multi-User System Bootstrap from floppy  ;  ; File: MU4.FBOOT.TEXT  ; Date: 7-Nov-83  ; Issue: 1A  ;  ;  ; COPYRIGHT (c) 1982, 1983 SAGE Computer Technology  ; All Rights Reserved  ;  ;**********************************************************************  ;  ; History:  ;  ; 1 3-May-83 Initial release.  ; 1A 7-Nov-83 Fixed Boot extension & User boot options.  ;  ;**********************************************************************  ;  ; This bootstrap is to be located in logical blocks 0 and 1 on a  ; floppy diskette. The floppy diskette bootstrap command in the  ; PROM Debugger will read logical blocks 0 and 1 into memory at  ; location 400H.  ;  ; The bootstrap routine first reads in the p-System directory N ; from the floppy diskette. Then the bootstrap searches the  ; directory for the file MU.BIOS which contains the SAGE  ; Multi-User Basic Input/Output System routines. Once found the  ; BIOS code is positioned into the highest memory available.  ;  ; Next the bootstrap searches for the file MU.CONFIG. If it  ; finds the file it reads it into memory. Otherwise the bootstrap  ; prompts the user for the configuration file name. An immediate  ; carriage return will terminate the bootstrap. Once the  ; configuration file is found it is read into memory and its  ; address is store at CONFADDR (208H).  ;  ; Finally the bootstrap transfers to the BIOS for initialization  ; and the Multi-User executive takes control. The BIOS only  ; returns if no tasks are defined.  ;  ; Note: The Boot extension and User bootstrap features are not yet  ; supported.  ;  ;********************************************************************** (  ; Macro for calls to PROM area.  ; (required for generation of long addresses). (.MACRO LJSR (.WORD 4EB9H (.WORD 00FEH (.WORD %1 (.ENDM (  ; Permanent jump vector assignments in PROM  KEYBCH .EQU 8H ;Get a keyboard character  TERMCHAR.EQU 14H ;Output a character  TERMTEXT.EQU 18H ;Printout text string  TERMCRLF.EQU 1CH ;Printout carriage return & line feed  FDREAD .EQU 28H ;Read from floppy diskette (  ; RAM variables for Debugger  MEMTOP .EQU 100H ;Top of memory   ; RAM variables for BIOS  BIOSBASE.EQU 200H  CONFADDR.EQU 208H  (  ; Constants for BOOT positioning  HDSIZE .EQU 26. ;Size of header data in uncompressed code file   (.ASCII "BOOT" ;This text is checked by the Debugger @; bootstrap process to insure that the @; boot area has been initialized with @; a bootstrap routine.   START ;The Debugger transfers control to @; offset 4 in this file. (  LEA SCRATCH,A3 ;Set up RAM area for bootstrap (MOVE.L (A7)+,(A3) ;Save the return address (MOVE.W (A7)+,4(A3) ;Save the drive number (CLR.B 21.(A3) ;Clear the BIOS active flag (  ; Output initial boot message (LJSR TERMCRLF (LEA INITMSG,A0 ;Printout "SAGE Multi-User Bootstrap" (LJSR TERMTEXT (LJSR TERMCRLF (  ; Read in p-System directory (LEA DIRNAM-1,A6 ;Set up message in case of error @; note: does not have byte count. (MOVE.W #2,-(A7) ;The p-System directory is at block 2 of ( ; each devices. (LEA BUFFER,A0 ;Set up the directory buffer address (MOVE.L A0,-(A7) ;Buffer address (MOVEA.W #2048.,A0 ;The directory is 2K bytes long (MOVE.L A0,-(A7) ;Length of transfer (MOVE.W 4(A3),-(A7) ;Set up drive number (LJSR FDREAD ;Read in the directory with the floppy @; driver in PROM. (BNE BADREAD ;Found error reading directory (  ; Now search for MU.BIOS and read in first block (LEA BIOSNAM,A6 ;Set up search string (BSR SEARCH (BNE SRCHERR ;Could not find MU.BIOS (ADDQ.W #1,D1 ;Code starts at relative block 1 in file (MOVE.W D1,-(A7) ;Set up logical block for BIOS code (MOVE.W D1,6(A3)  ;Save logical block for later (LEA BUFFER2,A5 ;Set up buffer address for first block (MOVE.L A5,-(A7) ;Buffer address (MOVEA.W #512.,A0 ;Set up size for one block (MOVE.L A0,-(A7) ;Length of transfer (MOVE.W 4(A3),-(A7) ;Set up drive number (LJSR FDREAD ;Read in first block (BNE BADREAD ;Found error while reading BIOS (  ; Calculate target address for BIOS and read it into memory. N(LEA BIOSPASS,A0 ;Check for BIOS password code (LEA BUFFER2+HDSIZE,A5 ;Adjust for header data in code file (CMPM.L (A5)+,(A0)+ (BNE BADPASS ;Password is not correct (MOVE.W 6(A3),-(A7) ;Set up logical block number (MOVEA.L MEMTOP,A1 ;Get current top of memory (MOVEA.W (A5)+,A0 ;Get BIOS code size (ADDA.W #HDSIZE,A0 ;Also read in header data (SUBA.L A0,A1 ;Set up code address for floppy driver (MOVE.L A1,-(A7) ;Set up BIOS codefile address in memory (MOVE.L A0,-(A7) ;Set up floppy transfer length (ADDA.W #HDSIZE,A1 ;Now form actual code address (MOVEA.L A1,A4 ;Save base of BIOS to calculate init address (MOVEA.W (A5)+,A0 ;Get size of BIOS buffer area (SUBA.L A0,A1 ;Form base of BIOS area in memory (MOVE.L A1,BIOSBASE ;Store new top of memory address (ADDA.W (A5),A4 ;Form BIOS Initialization routine address (MOVE.L A4,8(A3) ;Save starting address (MOVE.L 88.-8(A5),12.(A3) ;Save RAM Disk address (MOVE.L 92.-8(A5),16.(A3) ;Save top of RAM Disk (MOVE.B 96.-8(A5),20.(A3) ;Save RAM Disk Boot Flag (MOVE.W 4(A3),-(A7) ;Set up drive number (LJSR FDREAD ;Read in the whole BIOS (BNE BADREAD ;Found error while reading BIOS (  ; Read in Configuration info (LEA CONFNAME,A6 ;Set up search string (BSR SEARCH (BEQ $60 ;Found default file MU.CONFIG   ; Prompt user for name of configuration file  $10 LJSR TERMCRLF (LEA ASKCONF,A0 ;Ask for configuration file (LJSR TERMTEXT (LEA FILENAME,A6 ;Build filename string (CLR.W D1 (MOVE.B D1,(A6)  $20 LJSR KEYBCH ;Get a keyboard character (CMPI.B #0DH,D0 ;Check for carriage return (BEQ.S $50 ;Found terminator (CMPI.B #8,D0 (BEQ.S $40 ;Found Backspace (CMPI.B #" ",D0 (BLE.S $20 ;Don't process control characters or space (CMPI.B #15.,D1 (BGE.S $20 ;Too many characters (ADDQ.W #1,D1 ;Advance pointer (MOVE.B D0,0(A6,D1.W) ;Store character  CLR.B 1(A6,D1) ;Set up null terminator  $25 MOVE.B D1,(A6) ;Update string count (LJSR TERMCHAR ;Echo the character (BRA $20 ;Back for another character (  ; Handle backspace  $40 TST.W D1 (BEQ $20 ;Don't backspace past beginning (LJSR TERMCHAR ;Output Backspace (MOVEQ #" ",D0 ;Output blank (LJSR TERMCHAR (MOVEQ #8,D0 ;Set up another backspace (SUBQ.W #1,D1 ;Back up the pointer (BRA $25 (  ; Handle no file  $45 LEA SRCHMSG,A0 ;Printout "Could not find " (LJSR TERMTEXT (MOVEA.L A6,A0 (ADDQ.L #1,A0 (LJSR TERMTEXT ;Printout file name (LJSR TERMCRLF (BRA $10 ;Try again (  ; Handle carriage return  $50 LJSR TERMCRLF (TST.B D1 (BEQ PRTERR2 ;Null name field, exit debugger (BSR SEARCH (BNE $45 ;Did not find file (  $60 MOVE.W D1,-(A7) ;Set up logical block (LEA BUFFER3,A5 ;Set up buffer address (MOVE.L A5,-(A7) ;Buffer address for driver (ADDA.W #512.+HDSIZE+6,A5 (MOVE.L A5,CONFADDR ;Save address in BIOS area (ADDA.L D2,A5 ;Set up free address beyond configuration (MOVE.L A5,12.(A3) (MOVE.L D2,-(A7) ;Length of transfer (MOVE.W 4(A3),-(A7) ;Set up drive number (LJSR FDREAD ;Read in configuration (BNE BADREAD ;Found error while reading Configuration ( (MOVEA.L CONFADDR,A5 ;Check password on configuration (SUBQ.L #6,A5 (LEA CONFPASS,A0 (CMPM.L (A5)+,(A0)+ (BEQ.S $65 ;Password is good (LEA NOCONFIG,A0 ;Printout not configuration (LJSR TERMTEXT (LJSR TERMCRLF (BRA $10 (  ; Search for the optional MU.BOOTEXT.CODE file O $65 MOVEQ #0,D4 ;Default address (LEA BOOTEXT,A6 (BSR SEARCH (BNE.S $70 ;Optional boot extension not found (MOVE.W D1,-(A7) ;Set up logical block (LEA SCRATCH,A3 (MOVE.L 12.(A3),-(A7) ;Set up memory buffer (MOVE.L D2,-(A7) ;Length of transfer (MOVE.W 4(A3),-(A7) ;Set up drive number (LJSR FDREAD ;Read in boot extension code (BNE BADREAD ;Found error while reading boot extension (LEA SCRATCH,A3 (MOVE.L 12.(A3),D4  ADDI.L #512.+HDSIZE,D4 ;Bias to p-System assemby code (MOVEA.L D4,A5 (LEA EXBTPASS,A0  CMPM.L (A5)+,(A0)+ (BEQ.S $70 ;Good boot extension (LEA BADEXT,A0 ;Printout bad MU.BOOTEXT.CODE (LJSR TERMTEXT (LJSR TERMCRLF (MOVEQ #0,D4 ;No boot extension (  $70 LEA STACK,SP (MOVE.L D4,-(SP) ;Pass boot extension address (MOVE.W 4(A3),-(SP) ;Physical drive number  ADDQ.W #4,(SP)   ; Search for the optional USER.BOOT.CODE routine (MOVEQ #0,D4 ;Default User boot routine address (LEA USERBOOT,A6 (BSR SEARCH (BNE.S $80 ;No user boot (MOVE.W D1,D4 ;Save routine block address  $80 MOVE.L D4,-(SP) ;Pass User Boot routine address (MOVE.L D2,-(SP) ;Pass User Boot routine size (MOVE.W #0ABCDH,-(SP) ;New boot indicator code ( ; Initialize the BIOS  ENTER MOVEA.L 8(A3),A4 ;Get BIOS initialization address (JSR (A4) ;Initialize BIOS (  ; Never returns unless no tasks defined (MOVE #2700H,SR ;Make sure interrupts disabled (LEA NOTSKMSG,A0 (BRA PRTERR1 ( (  ; Search Routine for directory entry  ; A6 is pointer to target string.  ; A1 is returned with block address of start of code in file.  SEARCH (LEA BUFFER+32.,A5 ;Set up pointer to directory entry @; skipping initial volume entry. (LEA -16.(A5),A0 (MOVE.W (A0),D0 ;Get number of files (CMPI.W #77.,D0 ;Check for limit (BLE.S $5 ;Within limit  ROL.W #8,D0 ;Check if byte directory needs flipped  CMPI.W #77.,D0 ;Check limit again (BGT BADDIR ;Illegal directory   ; Swap bytes in directory (MOVE.W D0,(A0) ;Store swapped number of files (ADDQ.L #4,A0 (MOVE.W D0,D3 (BSR.S BYTSWAP ;Swap the date word (ADDQ.L #4,A0  ; Swap each directory entry  $2 BSR.S BYTSWAP ;First block (BSR.S BYTSWAP ;Last block (BSR.S BYTSWAP ;File kind (ADDA.W #16.,A0 (BSR.S BYTSWAP ;Last byte of data (BSR.S BYTSWAP ;Date (SUBQ.W #1,D3 (BNE $2 ;Back for more (  $5 TST.B D0 ;Check for empty directory (BEQ.S $40 ;Directory was empty, entry not found (  ; Base of loop for each entry  $10 MOVEA.L A6,A0 ;Set up pointer to test string (MOVEA.L A5,A1 ;Set up pointer to directory entry (CLR.L D1 (MOVE.B (A6),D1 ;Set up byte count for testing (  ; Base of loop for each character  $20 CMPM.B (A0)+,(A1)+ ;Compare the entries (DBNE D1,$20 (BNE.S $30 ;Found miscompare (CLR.L D2 (MOVE.W -6(A5),D1 ;Get starting block number (MOVE.W -4(A5),D2 ;Get trailing block number (SUB.W D1,D2 ;Form size in blocks (LSL.L #8,D2 ;Form size in bytes (LSL.L #1,D2 (CLR.B D0 ;Zero flag indicates success (RTS (  $30 SUBQ.B #1,D0 ;Check entry count (BEQ.S $40 ;Could not find entry (LEA 26.(A5),A5 ;Short way to advance address pointer (BRA.S $10 ;Back for another try (  $40 MOVE.B #1,D0 ;NE flag indicates failure (RTS (   ; Byte swap routine  BYTSWAP MOVE.W (A0),D1 (ROL.W #8,D1 O(MOVE.W D1,(A0)+ (RTS    ; Found error while reading diskette.  ; Printout message about problem and return to debugger.  BADREAD LEA READMSG,A0 ;Printout "Error reading "  BRA.S PRTERR    ; Could not find "BIOS" password in SYSTEM.BIOS file.  ; Printout message about problem and return to debugger.  BADPASS LEA PASSMSG,A0 ;Printout "Not BIOS code in " (BRA.S PRTERR    ; Directory entry size was in error.  ; Printout message about problem and return to Debugger.  BADDIR ADDQ.L #4,A7 ;Get rid of return address (LJSR TERMCRLF (LEA DIRMSG,A0 ;Printout "Illegal directory" (BRA.S PRTERR    ; Could not find file in directory.  ; Printout message about problem and return to debugger.  SRCHERR LEA SRCHMSG,A0 ;Printout "Could not find " (   ; Printout error message  PRTERR LJSR TERMCRLF (LJSR TERMTEXT (MOVEA.L A6,A0 ;Set up pointer to name of item being read (ADDQ.L #1,A0 ;Bypass byte count  PRTERR1 LJSR TERMTEXT ;Printout type of information (LJSR TERMCRLF  PRTERR2 MOVEA.L (A3),A0 ;Return address to Debugger  JMP (A0)  (  ; Passwords (must have word alignment)  BIOSPASS.ASCII "BIOS" ;MU.BIOS password  CONFPASS.ASCII "MUCF" ;Configuration password  EXBTPASS.ASCII "MUBE" ;Boot extension password    ; Messages  INITMSG .ASCII "SAGE Multi-User System Bootstrap" (.BYTE 0   READMSG .ASCII "Error reading " (.BYTE 0   SRCHMSG .ASCII "Could not find " (.BYTE 0   PASSMSG .ASCII "Not BIOS code in " (.BYTE 0   NOTSKMSG.ASCII "No Tasks" (.BYTE 0   ASKCONF .ASCII "Configuration file? " (.BYTE 0   NOCONFIG.ASCII "Not MU configuration" (.BYTE 0    BADEXT .BYTE 7 (.ASCII "Bad MU.BOOTEXT.CODE" (.BYTE 0   DIRMSG .ASCII "Illegal "  ; Must fall into DIRNAM.   ; File names  DIRNAM .ASCII "directory" ;Only for error printout (.BYTE 0   BIOSNAM .BYTE 8 ;String byte count (.ASCII "MU4.BIOS" (.BYTE 0 ;Terminator for TERMTEXT   CONFNAME.BYTE 9 (.ASCII "MU.CONFIG" (.BYTE 0 (  USERBOOT.BYTE 14. (.ASCII "USER.BOOT.CODE" (.BYTE 0 (  BOOTEXT .BYTE 15. (.ASCII "MU.BOOTEXT.CODE" (.BYTE 0 ( (.BYTE 2 ;Bootstrap Version @;If bootstrap ends with a non-zero value @; the device to device bootstrap transfer @; can determine the size. ( (.ALIGN 2  SCRATCH .EQU *+1024. ;Ram scratch area  ;Offsets: @; 0.- Return address to Debugger @; 4.- Drive number (0 or 1) @; 6.- Logical block for BIOS @; 8.- Starting address of BIOS @;12.- Starting address of boot extension @;16. @;20. @;21. @;22.- Temporary storage (4 bytes)   FILENAME.EQU SCRATCH+26. ;Configuration file name  STACK .EQU FILENAME+18.  BUFFER .EQU STACK+512. ;p-System directory  BUFFER2 .EQU BUFFER+2048. ;First block of BIOS  BUFFER3 .EQU BUFFER2+512. ;Configuration storage  (.END