IMD 1.18: 14/11/2012 8:06:06 nec system boot volume nec_sys:  @CP/M-86 Ȏ؎мb3Ȼ Î3O3ҌɁڻM4 SYSTEM.INTERP Can't find SYSTEM.INTERP Ë73}@W=t2 AtJuPST[XC< uW>t+3ÌȎ؎7 =+KK+MM=7 OP~PPVӋ3f3P6367PPb.3P636766bӹ M7KK657'܆bjv{#OW)1MsCopy (c) 1978,1979 Regents, UC and 1981 SofTech MicrosystemsW WWPWXÏW GGG3&YtW W#;r9su ؎>uWWWt WWt~?Wt />t)vY>62 PWX&َ󿔃3@+.33;r+ËOt x *O@tF;ráu&3ҋ񣤃u&$Bá@;r3>23ҋBË"G\:GTt :GUt:GStG:@u!&6 &6PSQRVWUWt W]_^ZY[XYX<3u@ÏW&t W3&W?CWxcjq ;j0PPnnyYkkkk   #5GNEC SGL PDQ TI TRS AD0 'AD1 4OLD DW1 <DW2  RAM  HRD  <vx2R؋<}?w6DD;t;u$P$Ft:>F<t|(>t ؎D+ؾ]φ㾡R2|tTLEeȈDsdãHâJãLô <t |> >t2 u>DE Q2 Q&t | [> tQH>J:}.2ߋ>L<u ،Î2ô u ̱ ñLON>D.H6J2ɂLv:uv*uuuu ueE uEEM@ u EE emuM ʈMKE:E tE ~ uXO *MĈe QN: {&u2EE EEt KtG날ttⴀ޻.F:ut t٨uô 2Pu2FPsrRW؎P@sRss_à PS$0<:r[JX䓊䓆;t uT2械2橰2昻v 䀀u.q | t | r t  Ђ  &u & @u& &ux3 H> |;U~Á=u}@u9|uU; uSq   ڀ}    ;ty ~ x    | u t!x    tv [<@u[6JNV >L t ،ŽڹY u u(û(&t<@u 2t ôÀ> t= q      | t tv x 22.@䢨 tCI 䢨uC撊䖨ttG䢨u䖨t䒨t䢨u{t䖨tێÿ ` WR䢨 tI䠪?:䢨u $`<@àq #r t QYPh t2&13P3ۇ tH X3RLB@P@@B32@tB`u < t P 9X3A‚Puհ # ZƂu#6"/mð QYÊ, u'tûû$&?r${${ j2ðnQ hh:Y u2hu u  P3ۇ t XÊ5u> u4t2$t0u > u02  4u 2t40û'&tȀu u 22ð42@2v/S2 ؋[++2'226ã#T>t3؎%= """0/F)*X $Y&&?t3t| t |&| t&z($&&?t3t tw *&&?t, ¢]&&?t3&&?t&&?t3P2Y2B  B@N@P@@@@@E@GBP@q3OP"#3ohv2rvnnln"* 2ҹ&?&&9?t &?CC‚>@`Eƅƃƅ0kB3JLNHXu u<>t z> t !i>tXR$_ t  uLtus >u(@t@tdPtu yXPt u>t xtXtt @t  t2@tÜzP&z >t'<B (u 8 $ >t.(@u$ f  j>tIyR(@t h \_\Y & y)6"#J Xz?  B2@@C  B@2@Cø;ظu3G OډO.*ջfŀtt N jL"Ũ  ( &1t8t OOÀ>tqUXPX V^V^PX$V^V^Nx /CC u۱ًň'] t:tػOP0< r, 1 0ࣸX%󤠐 00 00 00Q$Y.X..&..Ȏ.PSQRUVW..&G%tȎ؎&X_^]ZY[ X..&.&.X..&..Ȏ.PSQRUVW..&G%tȎ؎&X_^]ZY[ X..&.&RZ RZ$RZÿ``:t uBb2""HRpю e-} t׌َюٹ Ɏً*F5_Z[[^YXRu&vu2 [XXSt 2à23(u#>t ?u>u :t>t uX t LA t20@@u2Ɉ@>u t t2tttÊ2òt2%T&8u&G{i&Gb1u*" *tJÜ<@u2:t20HR Zd>.u >uã/ð1 a;>t``:uu*t<u#u2'uD&#>#Pu #">"u "7>#u6"#/ t>u /2.à#!" ԰뿾($,-뮶" # 둰"뻶(n߅u rih,0^U1c< 599>t``:u#t#>"t"#O#&#>#Pu#>"r"3҈6"#6"#gP ><t ;6} P8<X> u6+uO> u:P;:w+:IX;:v+~GI:<:+I#X #/(`sH Lu| fMu |&|TNu&zG[u ]uUw !lu&|mu &|| nu z1t{u g}uwZ($&]]I(&(!# "U($ #! 3߂Ar st @à- "#,0r<w,&]]#>#Pr>"r##"~6"#<O*#qC, }2<v", }2"tH"&],0x2u. uA H &t  &uaPmX uPQ6=t= }$<46P8:P<(- PPXPQP0Y<6P+<82:PIYXQPYS@tpB2@C[ÜP@u tXRKB@@@P&.6, IB@@JB@@LB@@@ B@@X9RZAt0RQ"Yt IuGt G ZÃtRP =P|nXZâ" B@@6"#8PH=OuY>]u t Qo B@@B++ҲPP+8BX;B|Bt +B:6â&IB@@P@ u@ tX^PQ**. @tF.F.YXF5!Ȁ F(loppy disk R(am disk H(ard disk... Copyright (c) SofTech Microsystems, Inc. and Ticom Systems, 1983 Version 1.2 Storage devices available: Load from which device ?      TRON.CODEODE#+ TEXTRON.BACKEXT+= BRIDGE.BACK \/=K BRIDGE.TEXT \/K] TEXTRON.TEXT \/ GRAFTEST.BACK\/"B GRAFTEST.TEXT\/BK GRAFTEST.CODE\/uySYSTEM.WRK.CODE} USERLIB.BACK \/ USERLIB.TEXT \//DSYSTEM.INFO \/ NEC_SYS"sB SYSTEM.MISCINFOS $ SYSTEM.INTERP\/t$ SYSTEM.PASCAL\/ SYSTEM.FILER \/v  SYSTEM.EDITOR\/ uSYSTEM.COMPILERtuSYSTEM.ASSMBLERe SYSTEM.LINKER\/ SYSTEM.SYNTAX\/% 9900.ERRORS \/y 9900.OPCODES \/8L 8086.OPCODES \/ 8086.ERRORS \/ 8087.FOPS \/ COMPARE.TEXT \/R COMPARE.CODE \/R  LIBRARY.CODE \/ - PATCH.CODE \/F-7 COMPRESS.CO1TEST.BIOS.CODE/ m$O5   P ? \/Qpz PRIMARY.TEXT \/QzBOOTMAKER.TEXT/ COMPRESS.CODE\/BOOTMAKDE\/7ACOMMANDIO.CODE/ģAc DECODE.CODE \/c{TT.TEXT1 \/{TT.CODE1 \/jKILL.DISK.TEXT/jKILL.DISK.CODE/j BOOTER.TEXT \/ BOOTER.CODE \/ CODEGEN.CODE \/)  REMTALK.CODE \/ oSYSTEM.LIBRARY/xos USERLIB.TEXT \/sx FORMAT.CODE \/x FORMAT.TEXT \/F NEC.DCB.CODE @嫊SYSTEM.WRK.TEXT9DSYSTEM.INFO \/ȁUSERLIB.TEXT \/USERLIB.TEXT \/USE<-,+.>?A4A B @3C5HD20123456789~I( E"='&JFE6G6D#g#GI1JN%K%B!L!M N o$O$O P Q ~L9M R S/  ~K:TF7U7VC8W8ZX~P)~Q*~R+~S,~p-~q.~T/~U0~B@r@t8V@t@ @t@.@l@f@ @d@d TRON.CODEODE#+ TEXTRON.BACKEXT+= BRIDGE.BACK \/=K BRIDGE.TEXT \/K] TEXTRON.TEXT \/ GRAFTEST.BACK\/"B GRAFTEST.TEXT\/BK GRAFTEST.CODE\/uySYSTEM.WRK.CODE} USERLIB.BACK \/ USERLIB.TEXT \//DSYSTEM.INFO \/+  P? + S2&F6 &/ $;u++&@@;uSS.SS6P1/ ݻػӻλɻĻ 뿻 뺻 뵻 밻 뫻릻롉LNPL,NP"J6 F 6&Fx2À&FS؉,"_ظ+;[ÌЎS[*P&/&F2P&/&4FF&/(S&/>7&/7&/S&/nS&/ݏ&/Wݏ&/^7&/?7&/2S&/&ڏ&/2& F=߃ù7&/7&/S&/&/[7&/_1&/_1&/X[&/6 &F2& Fr/(ـ>u>*u KK&7&/KK&P&/ NEC_SYS"sB SYSTEM.MISCINFOS $ SYSTEM.INTERP\/t$ SYSTEM.PASCAL\/ SYSTEM.FILER \/v  SYSTEM.EDITOR\/ uSYSTEM.COMPILERtuSYSTEM.ASSMBLERe SYSTEM.LINKER\/ SYSTEM.SYNTAX\/% 9900.ERRORS \/y 9900.OPCODES \/8L 8086.OPCODES \/ 8086.ERRORS \/ 8087.FOPS \/ COMPARE.TEXT \/R COMPARE.CODE \/R  LIBRARY.CODE \/ - PATCH.CODE \/F-7 COMPRESS.CO6 [2& FerKK7&/2& FCC[&/_[2P&/X_[&/&F ˉ6 ^_ u (<u>*t&ĉGG&GG_S&/Xt_W&/2&F2& FX_3WQP&/YX_#S&/[Y_狅#_# ‰&/Y&FFBى6 ^_ t u :6 uP?3P9sv[&FF6 ^_ t u 2&%G6F:Ċ}:6u:Ď tsv&FF6 ^_2 t6 :wA 6 DE\/7ACOMMANDIO.CODE/ģAc DECODE.CODE \/c{TT.TEXT1 \/{TT.CODE1 \/jKILL.DISK.TEXT/jKILL.DISK.CODE/j BOOTER.TEXT \/ BOOTER.CODE \/ CODEGEN.CODE \/)  REMTALK.CODE \/ oSYSTEM.LIBRARY/xos USERLIB.TEXT \/sx FORMAT.CODE \/x FORMAT.TEXT \/F NEC.DCB.CODE @嫊SYSTEM.WRK.TEXT9DSYSTEM.INFO \/ȁUSERLIB.TEXT \/USERLIB.TEXT \/USE      6 X[SP u t:w&/X[#S&/X[ S&/XP&/X%P&/X[;vX[;sX[;t3P&/P&/X[;uX[;~X[;}Xyy3P&/XP&/X@P&/XHP&/X[S&/X[+S&/X[P&/[X3҅yP&/[X3҅yyyR&/X[Y;| ;Q&/_I(>*u&;?|&; &+?&q&/&;|&O;+&A&/Xr&F&/XrF&/X[;tX[;u&FF&/XsFF&/7&/X[PS&/&/.V^.&/2& F_;r(w&/6 LL WM%%# ## #RIV####~d g ###8 tQ8'S7wY/#d6 ?? "%()++++AND 'ARRAY ,BEGIN CASE CONST DIV 'DO DOWNTO ELSE END EXTERNAL5FOR FILE .FORWARD "FUNCTIONGG6 ++t  3GG3ɋ6 :r&/$\3P&/6 3ɸrX[xP=K;܋狵@H+~ VȾV#VAV63S/[x';}X㋏3#t3GGS&/_[܊'CC2:rt X CC&&/6 t̋7 5GGCC6NNOO GG2P4*s2t _!?CCt 3?CC&&/h:sĄt _!?CC&&/_[܊CC2ã*s̈́__t 2[u& GOTO IF IMPLEMEN4IN )INTERFAC3LABEL MOD 'NOT &OF OR (PACKED +PROCEDURPROCESS 8PROGRAM !RECORD -REPEAT SET *SEGMENT !SEPARATE6THEN TO TYPE UNIT 2UNTIL USES 1VAR WHILE WITH Copy (c) 1978,1979 Regents, UC and 1981 SofTech Microsystems%%> WWp @X68&8#u&2P&/t t _9?uCCu2tt _!?uCCu 벋6 2몰\tt6 _7#uCC6 tm~ $&$WG >E=t8P][Î3&G *&G&_(>*EÏ&?u& GG xC(>.tXs+P66$V66..3ɸ(r>35.6 563Ў&/6 .&tË>&]Gáb@bGÉ6 _>$;t>&tD>&]O&0û28[XSxS<vd8O:rTO/:r *:G.r=x_,؋G tL;vOGG 8;GsO=v"ؠ"t8 888[[X3PS3&*X[؉RUVCC'28^]Z&[[&(ruiucuRkݱ2ՠ*u>(u8.u',P<"u u&u$6662Q6662I&]]..^X[ۉy&K&7&&/6 &62&FrX&/6 &62&F}r;&/6 2& F&S2&FSr&/6 Ӌ6 N$6 N$S&[u6 2&F&Ftl62r&/6 2&Fu&<'狽tF&FRt!62r&k&/6 o봋6 N6$&-[R6 2&F&FFtҋ2S2Ur&/6 Y[t ـ>.u .0*r &/66$6ro2& FS&/[_&3[PPP.&N  5468:,2$؊>.uubu662vt+FEO"uu <u tÊ ~ư QY2tfu[t uM몀>u MG2FEO2_ <u8S S2XUVW2I_^]WPMX_ÊP[ uu  à wt_G=tP_#[ÎЎ 66 N6 6 6 &tFF&/6 &,6 :r2A6 6 F&/ W66 Fy2&F> G7&/&/S&/"̃OO .8Ow$OË"O3ţ8o.$VN n.vS^[ƌ3&v6&F *&N(wo ..Yg_Nr1&/$&/X_7r$P&/VWtL:Ortwt]_^Ë؋GGW_;܋CCGGCC&/_܃CCGG&/&2Fy &F&&CCGG&/܋CCGG&/W3GG_W3GG_m]]]l\\\o___%UUUU'WWWWËEDEEDEEDEEDEËDGDDGDDGDDGDË+EDEEDEEDEEDE3GGGR3҉E ЋG ЉEG ЉEGt6%t- EU X%E  ZEuM  t>"u ;"t_GE__=t EE/&/ExE=u&EGJ>"G:Er/A_?&/F$)1/"Tt&/$e _X&/?w9tPXY~*[_ߋ3rsCtCC&/C&/&/Y~4 _X6 ^X3r3r s+&/Y~_X 6 ^XNOX_XX[Y[Qt@ߎ |"ut (u!OOG+[W&/utu&/&/&/6 Y^[щEE XE ZÊe tzUUUU} |E E ^M A-]]]]eUUUU}u}u}u }u=Em } +e E% E m ؉GEGEGEøm ؉G3GGËE ubE u[E u>E u u E E @ÉEm 0.EEEm EEEEm }|hE }}M e Át e ucd uZM +L }Nj 5~@'E 3D %u8S}0u +EEEEEEEEqSe t_D ؎6 Y_[^%lY_[__&&/6 ^[PO_;s H [G__ǎ&? tN& tEOO& OOt1tt9︆&&OO2G+봎&/6 [XRU_Pw3PGPw_]Z2PStGQY uû6 ^G ><ݴ"<`v, G"<_t<`v, 6]6 ^ ދuDDQ>.7r 4uӹك4uĹʜD D D D D D D D #0~ui%; X u f  ,@/& <>Bjee]rzKT - V Pbi     -$1qqqﻭ$1qqq?$@Y@@@@@j.AcAAAeB_ 7BvHmBB0@Bļ Ck4&?ACy7FnI1塠t8MO?PQhSubo0Wn$ZHw0<]W8&ao%ydE0Rg%k%kqnRJ߬gq42zuOsVgx:T){D+m *侏6 ܿFM y3 Wt2 كmEm s؉6 &/eU݁}u}u}u}u m sċ6 F6 ܿM }6 &/D D..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$$#$@E D qM W****X+`+*+2+''2'S'++**++++k+k+l++++++++M**(&(&(Copy (c) 1978,1979 Regents, UC and 1981 SofTech MicrosystemsZ&W Z&WZ&WPZ&WXÏ&&&Z&W &d&Gb&G`&G3&&}&Y&&&&~&&&td&&~&Z&W Z&W&#P|&p&;`&rd&9&s}&u  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+ր))}(%(&.  a`p$ (/z. .x*-բ/. .x*-i!ռ/!.! .x*-h ՜/ !.!  .x*- /. .x*- &z&؎&>&un&Z&Wp&Z&Wr&Z&W}&t Z&WZ&Wt|&~?Z&Wt />&td&&)&vY>&6n&z&&2PZ&WX&&َ`&3d&@+x&b&.l&33;r+ËOt x *O@tf&F;rá&&u&x&3ҋb&p&v&&uh&p&&j&t&$Br&áv&@;b&rj&t&p&3v&t&v&>l&23ҋb&Br&GGGËG+GsGËw/F;wr3;wtwG uZ&W wg;wt/F;wu3;wu3wwgGËV&"G\:GTt :GUt:GStok)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 ) G:@u!&&T&6& &&6&PSQRVWUZ&WtZ&Wr&BZ&W(ut Z&W*&&]_^ZY[XY&&Xᐐ%Ï&T&V&&&Z&W&&t &3&&&&&22P&u&uZ&W û&Z&W&qt &{3&&&&Z&W,ËZ&W=t Z&W B Z&W 5&&&Z&W"Z&W$X&P`&+&Z&Wt^&&SZ&W6[O&&&& ËZ&g.Z&g0Z&g2Z&g4Z&W8ËZ&W:P,&С<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 *tģPС51*<t 7/ ī7/GtC3PPPPP6<Rw7/+FPPPP3PUPPPPPUVUP%GG⯋>}EE M+܉]6<S3SQuЋW0>*t +X8P>>PWP܃SSԉUn&((x'70(x ((xp"& Z "zi`"'"z8"3""uԅs ^5P^^p`ps 셀ՆFn5 ^:P^CP^^pa! 96&0c6&#&&{Ć՘Ę6j" ""j,p(@0xl`0n&o&''*')'(&& 0$ċaą$0 n&e%{zo''}(s''}ĊBt0xl500z @0($vK ( Q (! 9666,p G e% hb>>$}>M+eE܋.6<S3SQu3&E *=tB&E&E&E&E& & NN&&&&KK&&&E(&u6NN&4& FFP6P66..o "&63ػ66p$$PART"{y)xk"i!n&&|! "i!!|!yi! &|(&{#! l&yi$ɖ S  0wE E6E8   8  E s6Ezxrxrppp"Eԁ% `b(#l$m n%&y%&z&&z%$ %}ĆJ'('߆Jޖ :):(7 EE E,E _tp  Need segment : Put volume in unit  then type > --Rg D #$()\,-0126X8(KERNEL INITIALIGETCMD HEAPOPS EXTRAHEAPERMHEAPCOMMANDISMALLCOMSOFTOPS STRINGOPPRNTERR OSUTIL CONCURREPASCALIOEXTRAIO USERPROG  UKERNEL KERNEL  #   - KERNEL a(c) SCIEBOOTT*STACK OVERFLOW***POOL OVERFLOW* Exec err #  Type to continueepo= o==o/oS?'%+ ,:&B:*** GOTOXY EXTRAIO PASCALIOSTRINGOPHEAPOPS EXTRAHEAPERFOPS CONCURRE SPOOLOPSPRNTERR REALOPS COMMANDIDEBUGGERFILEOPS SCREENOP fKERNEL V!`"! 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     INITIALIXV b + y@h+ i !!i*!Mi!5+! b$*+! x **x*xi!iƖN)`PA A A`PC C`PDDH`(PKK`:PKɀAKɣK`RPbɀ_b`fP`y`p )t0zapza` p 0z4 p0t%tKt AćtCćtDtLtQtRćtSt%Y t" t" ʆA   h $  ć ć  hxraf h a  h $   a % aeh a  h o  |o!xh!````!x! Ė`՟```x ``x```x ``x`p`+`݇W```.%IPi(ć(x(ĈTt"ȆTt"pp"dqPqOĆO ĆOdĆOĆO'ĆZ00ʖt`d&p"p 0& ` %)00 0ɢi0!!Ć      j")>0" **" 0 0**"**"j0 j")Շ0" *|u"p"pl"rf*0| **"0z"@*0|d!0|d0|  h +0|  0| "r h"js%<@(xׁ'&h/ i/ h' bZ  b//xbrpi!Ձ'bJrRbbUbbbExbXrpi!/b[![x' i!!b^ P#/ // /ixr!ՙ.'ć&!/./ ppi!H.'<%.`. ' ԭ'cb'P4/ p lP@crj# p D# e0ɤ l$)e$@$0ɣe$lߖ ;ą:ą9Ć;Ć:Ćh y xĖH՘Ć; `; r: `: r9 `9 r;Ć:Ći! !yr! !xr$(*r*8&.` '  & *`r%*ć%x'* &**r*Mh   ĭ%3   & @ @ubP!(x/ .!)([ glik!# !i!ׁm%x%yxk# axl$!ׁm%nxhV&` jK& g&` ɠ&` -&瀀  j&瀐 gx,jրz" xĊO+& +& +&` +&p x+&瀀 + &瀐 + %"x7$"> di h 2!! x! x!x͊ ! ! x! xj"zk""##"zf"z # %# $ @ y   x    0, 0 0Ė yrxr;r:r`;`r:`r%`9`r߂;Ć:Ć9ĆĆĆĖ $`#`%`'`)`+`-`/`1`3` 5` 7` 9` ;` =`?`A%$$""$!"C"ć""ӆ%0wJq %t q %դ!՜q### # ##Ą  #Ċ#Ė&  ih !p d c pgtcgjbxp)c g((6c h   p h!iZg! oͤ22'2zo'2|22f jkc"3#"j#" " S ! p p  ȭQQQ UQ_QP`>> G @ L O D$\ $-`$ -$ e %+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..SYSTEM.MISCINFO*SYSTEM.MISCINFO not foundd [IV.1 B4h]]*:SYSTEM.ASSMBLER*:SYSTEM.P >f&@&@<le$$f`>P x xQi!Q !!iia >pia"#B!B!i! x23222{ 22{ć2G jh"yn&&xxm% "h !yn&$""i%l"|j" !yn&$x' yĊ'ĖZPP Ϙnf &5$***Z^*7&  jΤ**COMPILER*:SYSTEM.EDITOR*:SYSTEM.FILERR*:SYSTEM.LINKERSYSTEM.STARTUPP SYSTEM.MENUCan't find system diskkCONSOLESYSTERMGRAPHICPRINTERREMINREMOUTTSERIALx:*SYSTEM.WRK.TEXTT*SYSTEM.WRK.CODEECONSOLE::SYSTERM:: *USERLIB.TEXT???JanFebMarAprMayJunJulAugSepOctNovDec?????????REALOPS Welcome , toU.C.S.D. p-System IV.11Current date is System re-initialized)nFCRI g ć*xU8l$zϹ$$|l$$zy$ul$Օ$++z,,}ᰇ,yt- , -}, -}P}'--}*-} ) *)) )p ,ć, $p$|le!K(+o'+>',, ) ,  'o*xyc#*#xć*xDRS cj"ՠS -1`ar Ռ99909 FF|E9r>:GGFGG1G:SCGETCMD  V# k p;)`*P`P p+hͅ | z  z  yi!xkj"#ժ!l$"xՕ$"xm%zn"$$xx $"Ċq%y!l&yD&}7}&yx && p&& }%&Ċ%" $" $""jPa!xhhĘυh 4 yi!k##xxj"#"x! #" |hȖj"i!h!|&!k#x#y#y#xą~!#ya i!"˘p2ih ! ׁj"" h :cj9"Ԟ"S : 1 "TSj    9 4`        `  ```. $` `  ``ȇ y`rp! ` ċA y   ' մ1 `  `;Վ`0,~<` %`i!Z! ! ! `"ih !"  " " Aa hޖJhxߘrp )Tx ߘ  rp )$ ߘ  )x   o n *& (p( (' k #ե#j" "pi "! !"k)"!i ""j!" "pl"$j!" !pl!$i!"m%m%:  " %p %ȇ * $ hN ,#  )          ` =` ``.` ` $ ` > xrpC  $ ć ć ć yriyrh z {q { Ic x   x QD   2 a aY &     ĭj*t=\ 0 ` f   = ᇁ=EXTRAHEAYa`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#&x `Ȅ` ``p``th t p ۄK.q  *F h Uq ia ata a-u   {,qhq  -t,t't"  ց ԡ t;ą;ą;ą:ą9ą9Ć;Ć:Ėz!!y!!}' 塠!  '"|j"${b| ( (MMLI!JP ! Ոjol"yk#xmn&%$##&xi!!zl'o$&n$ continuess - STRINGOP SMALLCOM iD6543x1:17W!xh!!xx`u!xh       p!6j64435!ĊU414`s 4y  h4z43 r rj4  `p 4 `p! Ė'0 t.i==pi=.J$ UPERMHEAPEXTRAIO PASCALIOCOMMANDI OSUTIL hUl,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 ȇ/eP1 xĖ0( -327688- 0(t8 PASCALIOSCREENOP [SOFTOPS U!cOhh p    Ė9 *m- ( (z (xȋ-)ih((4) (!l(!%( (!(|( (((x ȋs(!l$%%l$(|շ(%$(y՝(#(!o h' (' Đ oh'!h]' G';((!!(((!(!Ċ(!(((ĊG(Ā o%m,+'+ (!(!$l-x'ȋS(#(!,+$p(!(!$+$ %$m%(yk#r(!i(  ( ( p ("&("(( (#)x(pCONCURREg `b par! !n&o" '(y'(z'({'+s+p''+p''**'*& & '}' c!l)ěLc)e,%,!ĚNNLޖ LњNNJޛL``ߖ0LߚNLޛJߛLߊLޚp?ih !  p h6d xEXTRAHEAHEAPOPS  p,( (#)x(pp(((!#R*%   h !i ml |  x  y; !% r ċ  !k !kN x  y3rć "ć  ć !!ċ  !k  !k%j"##j( "j"- "ć$ # !"p ! !"$"l%"m%o'n "Ր "ć ( 8 #pn #& &p #&&p  p # x pp} 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ȋ=k 9  p # x p #pp# #&p  ć !&'  x  y ! ć  zĖ *SPASCALIO xx 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!{!STRINGOP)M````p`ȖaaaDh a ph aapaȖ```pȖ?"!*#"!h #"Ȋ #"!#" p##!Ȗ,/--1Wji-hc! 6! !"-!pi!  -!cpc!1!iŖ0r`) ***  Ċ!!ޖ=  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 # "!PRNTERR "IBV%%miih hb 0% % m%! hb -b  p<` yh {zl|j$fxy&"pmfx%z&ig( dg(]g(Sg"(Ig.(?g6(5g?(+gG(!gR(g`( gh(go(gy(g(g(g(xg(og(fg(]g(Tg(Kg(Bg(9g(0g('g(g(g( g(ցg(rKg(Bg,(9g7(0g?('gG(gS(gY( p# !"Ċ #ޖb߇Ոzbh  hpKabć ! s7  p b p  bĊ ćޖ h! v'`u&``n(`&  k\k !raSPOOLOPS COMMANDI SMALLCOMEXTRAIO OSUTIL SCREENOPSOFTOPS FILEOPS  gh(ցogp p $pp "p !p BUnknown run-time errorrValue range errorNo proc in seg-tableeExit from uncalled procStack overflowwInteger overflowwDivide by zerooNIL pointer referenceProgram interrupted by userSystem IO error unknown causeparity error (CRC))illegal unit ##illegal IO requesttdata-com timeouttvol went off-linefile lost in dirr bad file nameno room on voll vol not foundfile not foundd dup dir entryfile already open file not openbad i     WEXTRAIO Ph% #$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$!l"x$h% %% m %"y#(t! %"yz!%}%{%}%}%{%}j%%{"Ė h k# z.k# |h# 2p l$ z$$~ĆFm7n$~o' ' i$}' $}' $}' $}i$${!$ &$'$' p'j '''|($~($~Ė  Jh   00Ė p"ąxząx7aĆx !a! Fa 8` yyє Too many dicts in SYSTEMMSYSTEM.MISCINFO SYSTEM.PASCALKERNEL US!z"y m%Ċ}! '&% #! m% #!!$%!!!!ĊB! '&%$#! l$ #,$l$$'&$pl$l$ !$%Ċ (ޖ  ^NPASCALIOSCREENOPSOFTOPS  ERPROGKERNEL *** GOTOXY missing unit GOTOXYt-= 'USERPROGV'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Ĉ FILEOPS   ձjg"tg"j"jcg"tghɣi! "! o'!h'cih!i  = o'/'c''/'/'' 8bf h i!b$!!!!!! h ɣbaeh a  h oV.[PZYXćW]i!.-.!j" .!t"  .!"aA!i˄.ն.*Z@.t.ti!ZZ<! !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Ĉ!.t!Z.d!td.!tZO.ti!!i.i!.!Y.d!td.!t.k#_.th k# Fki.!j"Zk# XXx "0!i! #! .!*Xk#]#Y՝.YdYtdP.WĊz.WĊj.WĊZ.W ĊJ. WĊ:.#WĊ*.&WĊYdYtd)WĖ\`!!!!`ʖa%xMjh "?! k####l $$$$ $$  h!!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  Ɂڡl$ p Ɂڡl$Վa`p  ,  ɡl$epp  l$Nćykj"ppl# "p$a p$,Ėk l$m$) n$|$u)$|p$xi!"$| o'y'y $ӊi'x%% '%'թ''''MՉi'&~h 'G$| (((y(x( ( (  ɀd i $|  h!+'k$ 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ᇅ瀐WzVVx)$|#p$xi$!#&'&')$ &'b' p! ! &-&$v$Ӗ  '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 nih # !## j"%$"  ɀdi n hЖ` +, j"pxć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``^] $"i"i"c!tc+ j,"kh #+ + 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 ! ]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!%}%Ċ%%}Ċ %#     Ċ! Ċ !!Ė "i!!!!!!h !!!հ ! !!Ċ!!!!! h! !!!"~!  ! ! p !"! !#!!!!p! !#!!p !!&!!!#p! !#!!p!!!!!Ċ!Ė ?BPě߇D߇D ċf de wf`i!ޛߛ! ċ/! ćć !ć fć|ć|| ի A jA"  ċ  " "  SEGSCINIFSOdh ! !** !" d Ȋ d Ȇd "Ȇd !ʖ"$!  yh ! !** !"" ʆy "Ȇy !ʖ "/!  d*pypjh "   h)D:%ʆ:&ʆ;ʆ;ʆ;ʆ;ʆ;ʆ;ʆ* ۚۚ-jdȆd"""ċq%m $% j"%) " yx yćyx" j"ċ[ " ! % " !^ | ċ" ć! }ć%ʇ/ ćʇʇ ʇAĊćՈ!ć"ćA  Ċ ćSćAI#p    p  #xp #xpDAćĊ|{DrćDxĚ!ފćDޛޖD 'ߚ'l$$x9x"""""" %jky"" "" " " """" # # "dj"/_kc"scsc"sc 9_kc"sc"scsc"sc" sc ** ȆY pj" Y"ȊY Ț%ĆĆ:Ć:ĆĆĆq  }kPD* Յ$^$m%O&2$$%  dn$$ $!$"$#$!$!p'$%  ɀd&$ b$ ċik!" #"! x%x"! y%yk!i#ċ!i&&"!  ɀd!" %" h ! " !!i"!  ɀd%  ɀd % D%$D % D % "! %%x$$% $ $ $"! $ $ " &$$ 0$Ě 'ޛޖ!ߚ!h ! | {!r !ޖd&ߚ&}&k#l%#$#|`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 )? ):]?  (%#|%#|%#|@%#|@@i%#| % #| j"j!i$y$xh! ! "$  i$ j##### #!Ċ###!# # #!!#~#"<#"##  # # p # ##$x#ppg!#"0#  # # p # ##$x!pp*####{##!#!"Ċ &ޖm t.SVOL:[].TEXT.CODE.BACK.SVOL.INFO.GRAF.FOTO.BADDNr wg28}SEGSCCHEwFS'&xh jdk`qaq冀;ɠu u5qy&xxq!&xli!$'! _u !i&xj P`qE &x:jq _v v'&x q vqj&&x"%%x"Ė!  HyhRxhhb za {; |" }! u " !Ė;bi#"!z!|:ɰAc!zb!{!z# "!}: !z# Țu #"SPOOLOPS0)`*P `Pp+"sp tih !e  ( hLi"    )t*sp<)`*P `Pp+)*spjbJub.ub tjbVub5ub 7vltjbfub5ub i7!5!!hh! ppv !is+߈))4ފ8  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 ކ߈)ޖ/45ބ-s78 sw5yĆĆ pa`awv  v vih !E+  .+ +  +   h^)v `Pv v `v v3`,v v+ `)ih !+  v v h+v aPv v +h +%+  a+   h +ih !+   h`u `u j  Type > to continueetX9,(! UMC{4$GOTOXY EXTRAIO PASCALIOSTRINGOP      ")`*P`v vp+3a.saspa+t 2a++u+u+sp,r*r v*   ց *Qҷa+tas as3wSYSTEM.SPOOLERRcan't open SYSTEM.SPOOLERcan't read from SYSTEM.SPOOLERR"error in writing to SYSTEM.SPOOLERRin updating SYSTEM.SPOOLERRcan't open print-file error when reading print-file error when reading print-file error in accessff#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#"ing PRINTER:Spooler Error: print what file: filename too longprint queue is fullremove what file: SYSTEM.SPOOLERRcan't open SYSTEM.SPOOLERSYSTEM.SPOOLERR[1]can't create SYSTEM.SPOOLERߓi<"I j6/jh<=#]KEZ"c$>>*?] :UUUUUUſ ;f?c` ?????& .>(VD鿥#c Jb0@i~; "procedure realk_convert(segerec: erecp); "  IMPLEMENTATION P{{HA&&s@  x %1&0? a\+T &{? 9B.?%_<.@I}8#+eG?#0? a\+T & .>?XoR> op|?P?'T$? 8o?@?<$QBqq? `"?-DT!? 0-DT!? 0??W͞^&?Ul?D"$??LXz?"w & .>z꿍:$dj\?  ˼4Q`+#JI .@) أ 2 M@&qm U@ ļ|D@??lG*?& -DT!? 0rREALOPS OG   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~eee??lG*?.&d-DT! @A&P ??SINNCOSS Argument of  for  is too large; returning 0.00 (@(( do  MSCREENOPPASCALIO d`%d`!# p`#c Ɂc ``d``dg g ʄ d;ddddddd „ " ''&H p6 p&¿   `E d  `d  "dc c ɇʄ` d &@ JFMOP~Q7RXsFILEOPS SCREENOPSEGSCINISEGSCPROSEGSCCHEGOTOXY SPOOLOPSREALOPS V SCREENOPSCREENOPSCREENOP2#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`)+` *` +CW FILERPROBUFF1 BUFF2 NONBUFF1NONBUFF2NONBUFF3  m-FILERPROFILERPROFILERPROFILERPROFILERPROHV+ &LGREGS" C  N Fb  <` ```r t2 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      BUFF1 !HVj e a . . h ~e - - h ~a ea.-< 5rh טrpq q ol''­qn$k#00k #vjpq $#l&*n˜q16qw Fw :vwq ˜qDBB#131 |#qw wq ˜q1qwqp"q1 1 |h"1 }q ˜rpq q 6''"j"p6 ' 6 ' m % ('.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`q6 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<xqih:>H$(aq4`qiꆀ삀9Ԙ86>`-r`**: *6 *r`q ))*)J*  dʇ<++. +A +6 +*<@`rp*5 3r aKaOF5 aqȆ삀UԦ|V[`qJrqJw \w w삀cqwi! !ɣjh ".! k##w dw w#r h͖0hk,⼃,sqq,phq ր Ԩww whi1! 1p"1Fri1!1 j"խ h1w"| w w "w :v"|X[ "v"}w]v1 "(q @: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 "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 Mw 8~   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 savedSTR 7 Vols on-line: # on volume : starting at block Root vol is - Prefix is - EV@jD tF BBUFF2 HV 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 ppNONBUFF2HVZ)  q `ĭ)) `xppq q`  ` yx`  q ` ćʇMćwqw q 夃C` Dć qw q  Ċĭ) `xppq *`-r qqk`טrpq `q ))****ć* `rpq qFw :vZw !w w삀$n`rq  ԕ'&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.PASCALC*mq Q.% &w '+w w :v.w 98 2w 9w .?&@A93`-r98qBw q p 4wR[q\eqfoq)). )p )sq  4qww `r4g.&h` ` `. ` `q>Ah`. ` ` w w runchhFrom end of disk, blockStarting at block #forward back : cruncheddPlease re-boottBKk= qF.Z.j"hq i!"5.c" c. "   ." ..,&  h!x w w KapjHqqw q  j" qw w w q솀:삀"였  였DqFw w q }cdF D3Jq3appq dw w w3 V  VNONBUFF1THV+%+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('     ɢh .; /~3'/rw /w w w h fHqqw SwwSRRwwwRR5R5 5 RSSRCqwSRdVVd VqVVqw q pap pT USRdVVdw Vw1dVp1dVpp 1dVppdd w wkw wVq5RV5 yHUV5aayćTTTMɢ5 q aTVaTVć-a+h5Q5 *Gw  v5 w vw zw  h)5  ;aw w )ww )x*w p0>5,w Fw w  p<[pDia( a/ a(ih !  0ȇ  h"  ( +~+ r jaga" 0ag " j"h$ rcgcrh c h Pw  w w gw wVUVV!ayqw  w +w q pqYʁbcDZ/aydVVdaVeeyWexXfTTf1Z TeyOTx0ȇeeyOTxćTT5 TW5T yTTWT5r VVyq6w f3   ց?#Zero subsidiary volume directory ? Duplicate dir ? Makee made not named Workfile is (not saved)) No workfileThrow away current workfile ? *SYSTEM.WRK.TEXTT*SYSTEM.WRK.CODEE grh g pdb)g/3J5$5 ih !b  5r h( B6E)C`-r`6rpGpG)2)w  v6w w  G `rp `rFdaw :vw &h P(ha  w w aw w !!ڭpp *- : @w :v: <w w &P w  #"*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 markedGZ(p9N   !8h7Zh'hhhցB &P w   w  w p# b(bFZar p` ` BFFr5,1  1p"p 1 |  Z Z5r    5Cx hr iaV a a  a(Y+;Y+w  v w w ww4,p4YF  ` 5 ` p` NONBUFF3nHVM`-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@| c*** 炂WW W W($&UU*S*#p`*P**Ȉ*Up`U*U`Up*P=&TT*?&TT*0F%:  $*T$ `:H+WWR W W> $WW䘀( W昀A W( S1NF3J삂HSS:ט@ טDGC7K*I`P7Vjא#1JFH"삂HFILERPROn HVs$s ,s c c i!!@?il jj!H"i!h !00h ww p0` ` !p";Ě`w a z aAh j`! jwFjzb‚(VRׂ(J N!  pBVY`ڇX`"PYZ`#PT`-PK`5PB`>P9`EP0`NP'`WP`^P`fP `pPրxX`*Rzb#LZ >,rZJF(h`F ` `Z ` yw wMih !_ Q5 j %w *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 Ɂ#    Mj]삂,jkc-' cAK cTo cg cx c,sP`P`P`P`P`P`P`Px`Po`Pf`P]`PT`PK`PB`P9`P0`P'`P`P`+P `APցNX`**`P *gY *PY pɡlw Yw'rw Xw`w WpYOw~ 4,p4Yiww sp35r p h !7! !! } ! a! z ! ! aA h!  !yp(/     4ki!#j! l$S!mh %F$ 3 w !ww  ww h!im4\7m奁mwmw 3w mw w !w"w w74&m,4um/4 7m24 ~7m74 c7m<4HAJl Non-Wild) carddIll file/vol nameIll change (Vol file) name+Nested subsidiary volumes are not permittedBad dest for files foundd9WakCMauk expected I/O error # Filer error # ? (Y/N)  ? Invalid #Destroy : ? [*****]ޘp&d ޘ j  l ޘ  fq3 &lkh ; x  x x x y hI xy x  x y # q xPޘ h a qj "ղ Py Շ 6!凄x  yx P 6C_  #Put : in unit  ?  -->  - bT,  : ? : 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.6]6P_6凄x  yx  h>   *** files.  free blocks (( contiguous; "**" too bigg)..couldn't read fileeSelect: 'a'..'''(file), (specify), ?(more info)), or (next page)).TEXT:?*: No Volume ''..Bad Disk Operation on :.TEXTky_Z  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????}RECURSE ${S|Ph ~~ ~  h~ih !~ ~ q h~~~ ~~~ia~PaSaP~)+,`*,*`P,*,*,\C_Cp  . ? ih !  h놅D᥅DCC᥄CC qCॄC.lPaP5q*8q*:2q*)/q*+lq;h ;+ l q h+q)Ea;;8;;lU;5Y;2];/a;P??????( 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  s/ Kq4qS|eY 8 &EXTRAHEAHEAPOPS STRINGOP PASCALIOEXTRAIO COMMq)a;;aP;W;Paq    jh "O k i!   .  ! # ! # h(`-`)p*)p`)0~VP.ZdVPd0d*V3.V.cbq3a`q3#!" .cqg P Pp!)! 6 Nq,j  xĊj]P`-]I] R]PgLP`pC))M )ANDISCREENOPFILEOPS  ])Tf)P`1CYPRUTq31V.!`**t*.Q*P`uPUTV`  vPgwPqRy`-)Ux . .yPz  {P. ..B...QQPQQQP..z. . z.z.CPgQ /~ u &0w EDITOR NUM2 NUM3 NUM4 NUM5 NUM6 NUM7 PUTSYNTALISTDIR OUT RECURSE INITIALICOPYFILEENVIRONMEDITCORE  { #EDITOR EDITOR EDITOR EDITOR EDITOR EDITOR EDITOR EDITOR EDITOR EDITOR EDITOR EDITOR EDITOR EDITOR  4$$hASYS9h! p10h!4.N B4 5     Pg+P)+pza.PgPg -+gP`p )+pzz`)y7h  kC C qC dq# d8WPW1WX kk# CPk CP h#n1 5+C qCqgq1g pq q0j" +q1qq   "]U]P*\y*p\\y*ć\  \$\1SȇTTSS~ v Aai jh "R ʆ  h %p.q   :q~ji!"ՙ !k#ɀ<#ɥ#ɥp#-R###R#ɐ#ʊ:R#;ʆ####ɐ#!ia y   CIP hphCdP )+,`*,*`P,*,lkD1n&1&&x&nㅀ h9h; $ ipq!$ ;!# !qpq#!k$!l!ԯ " 1D q2aP ҅ qpq.q 6 ]   g qW P;WWp`Wl>PqgMq0; ?qCpq0g; q%;1*,B ߃n׃tvȆ^Ȇ>Ȇ<Ȗ . Bji!"!k#P!#P!!i . %j"y"x ++ 8- | --. # pq  ]  -,&q oC ,C'4q#ć,xp4Հ4P-KD0Ȅ4 P  11 ;; ;1 1;1aq02q0q.TEXTwriting page zero M$LAST JM$LAST'Files being edited: (most recent first).ASE!.TEXT$ exists. Do you wish it destroyed? .TEXT Can't create . File? 4? Looks, Creates, Exits or Filename: ,,=$PROFILEE=???.TEXT.BACK.TEXT.TEXT *CREATEDD&File already involved in edit. File? Not present. File? Reading Page Zero/File bad (previous edit session not terminated)Can't open de@&4 ) 4) P4 ( 4]( ]P ( ](F244PQP4W'QP ؂P4ؔ oq4$4P4 484Pg4PgP处EPg %g4Pgst file! !No room in dir/volume to edit in! Copying to Read Error on Input file.Ran out of disk room.Writing backup file..$CURSOR too deeply nested in editss nested Edit: [ASE 0.8aa.ASE!recurse: disk error_MmVgQ agP处'opFq0; Ȑ;1 11;; 1;1 1-> ;1q2-Պk# ###kAZk# #A#kazk# #A#k09k# #A#k톁AȆ Ȇ Ȇ߂ -.TEXTwriting page zero M JM$SYNTAX$LAST JM$LASTReading Page Zero/file bad (previous edit session not terminated)+Bad filename or no room in directory/volume Copying to $SYNTAX $SYNt INITIALI{S|Ph ~~ ~  h~ih !~ ~ q h~~~ ~~~ia~PaSaP~ C_Cp  . ? ih !  h놅D᥅DC5C᥄C C qCॄCUk`P5q*:2q*)/q*8q*]Ն*]q;..;*.].q ȇ..*q)G`;;8;;]U;5Y;2];/a;P ,`;;`PTAX Read Error on Input file.Ran out of disk room.Writing backup file..>Edit::Reading.ASE!&file already involved in edit. file? $ exists. Do you wish it destroyed? .TEXTCannot create . file? Creating No room or disk removedfile system terminal errorrgap? EDITCOREE ,SPOOLOPSCan't get 4K edit bufferr  'xxxJanFebMarAprMayJunJulAugSepOctNovDec takeup??*system.miscinfoocouldn't open miscinfoono extended *system.miscinfoo4? Looks, Creates, Exits or Filename: N;Y;P   *q)`;;`P;W;P``q k$1 5C "qC+qgq1g  q0jp" q1CqqY   "lk M l _eq)!Dqm%DDDE%c% Ć% Ċ lgPD1n&1&&x&nㅀ h9h; $ iphq!$ ;!# !uqpq#!k$ot present. File? ASE 0.8aa>Edit: [[ASE 0.8aa:*SYSTEM.WRK.TEXTT *CREATEDD.textSYSTEM.WRK.TEXT,=$PROFILEE=???,.text.TEXT.BACK.TEXT.TEXT #6=d |\C,-Q ^!l!ԯ " 1Sq   q%|(`-`)p*)p`)R*SP`*P``CPUUTj! j-!'!  Nq,j  xĖ\`-4`4p4C)))4^)g)P]`4 ը4P   gP`; ȆCppqq0 qOUT Ogxp`q) Ć 0Ė`q)x&gq*eq* q* q*cq*aq* x    Nq, & 77 7* 7q  +, 77,7 Q7eS7Pq#է77c7-7e 7 7[7e]7g_7 a7ac70h7ej73k7 7 747q pp 'p Qq߂5ߘ  ]]`\Y /  a p, ,ӊ ibP!ib--bP-Y-P?b!qh  9q;99 Y,``0- `0- Ȉ*jb*Pb`RbP-g[* PDɐ*\\*P\ Q\P` PDɁD``\DɌ\P*\\*P\`\\PD ɐ*[y*p[[y*Ć* :Xq*)T[SS[{S\TUq*U6*]]X     9  K  ]  t        ]  g 4  Տ     gji!"O! k! h ! .   #  # !i hq0lq0m$%q -   $%kjC qDon&'&&x&nC q9P..U.P.X);0 q02i"## !3#k#","#h0 qq&q&#;0 p0  p1qp. p&     agh a  ha :qqp& x%{ x%x&&x%Ė "    CG_`  Kqqp[ h; # ipq!;!" ! q"!j#!k!Լ$g`- Pg Pqq  ]     -P*#*--p`-pVV-PV&aVq; Ț/ q%q02q3q `APE6A(` EPq02q6PĖq`-]P4gPq q#  _   Nc h q0 h!q R!x x;!q !xĊ xg͖)`*P``qp+;0 01 k0q2;00 ȭy%`q*`lk#$ `##k AaD|@kji" #""j!# "qȋ   1)h &4'125 q]  *   8 ))  ) 5 9    q ȭ* *?1@))*:):*A ::*: n:P B  $ :: P:EU:P` p*  H Nq, qw(p"  ]  M] P]fg 4P 4gP`q1`q*]P3#y6s:m Aall.lh ] }ր"yih;  h #!; !i h; q 5h҆"!"q-7E兀Pq q ' ) q  qcf &' 1&&)ӆ ))y)yi)yOhq02q0 m|l)2 o#$#% # #')!ąq-(1   g ***ąֆ4gP iPq+6BX]PjbjbQbkRb`Tbl]bq 6C6qԊ 6A wU  x1x հy]4&vh```&`g?p    } ؄Pq2ć]P4P 6Rp6Eղ  q+66Ai!Y6Yqqq::/ %R! |{}.!!|(-NR!!/!ȭRn7qp+b,Pbih ! b  h- #>թ|l#.[l#]#~l{ruuodie^f#)1OnDb>t8h2*,>&< @g^!ցB|?' S&Kq*Nq*fliNSSyjkR"SxCR!hQ ;Q!h!kQ  !|g8gpq1  !&&q"q41Ǣq&q/DC Ě  ]     4 4 ]q1冉g4gg4q1 q$LAST $LOG $The log is not in the edit buffer. Log Entry? (y/n))Entry:  cM$LOGM$LOGqn>Quit::# A(nother!!|.NKf$fq ҖS lsPpq02qq q# .qpo'e1n'C'턂'P CPq3&C /pB0q  q(p+k)"- )" *#(" )"(q)"*#("-" *#(" "(q"pqq02qqImproper marker specifi file (after Updating)" B(ackup and re-edit same filee- C(hange the name of the destination file$ E(xit (destination not updated))1 R(eturn to the editor without doing anything& U(pdate the destination and leaveeOutput File Name: Backup File Name: (Files being edited (most recent first): )can't restore state: ran out of disk room (from )..reading p zeroowriting p zeroo disk read disk writee Edit: [[ASE 0.8aa Restoring .ASE! not in directoryReading JM$CURSOR:(*cation..Marker exceeds file bounds.[ ],.TEXT.TEXTBad disk transferMarker not there. Old file (markers not valid). No terminator command "|.""Special key overflow.!|_{mftL9E S'?-Y3"Copy buffer undefined or too largee* Takeup from copy b:.TEXT.TEXT)File already exists. Are you sure? (y/n)Illegal filename..BACKA= JM$CURSOR"$au*SYSTEM.WRK.TEXTT:.BACK*system.wrk.codeeCodefile Removed.$CURSOR 7Are you sure you want to exit? (Y(es, N(o or A(nother) @.BACK.Backup file not present (tried to restore it)..SYSTEM.WRK.TEXTThe new file, , is blocks long.The old file is Writing out the filee]6*  uffer: .. >( Takeup: .. or C(opyBuffer >taken upp Key Overflow.:=.atcdfij.mnpqrsvxz<>.......?..=/blegok..#..............uw+...& Copy: From what file[marker,marker]? ?# Copy: File not present. Filename?  Copy Disk Error.eU GrqVF)PP>0 COPYFILE-qqp[;;0p0q!10q'h`q'wqqp910100;0;p8X j"!%)i!!"!d."!".P.".P*dh d kd qp  q pd #qp##q p.k#.###q Ȉ##q #k.k#.##q #k+.$..     ENVIRONM**+* `P*Ɋl` Pf` P]`PT`PK`PB`P9`P0` P'`$P`)P`-P `2Pր7`  * E * Ɂl +  ih !q h9 G J  qq h M&S ji!"q!iqq h TW k[ k iqh ۃ_#  q ۃc g ! ! jJ,Uoz  0i Ԕ!jk qh m  (  ) !q6 ;!!!!66u 6 ( 6 ) !O6 ԰6} 6 ( 6 ) $/qCPC   -i!- !  !..y.x/h /: 6 6 ( 6 )  h !i{C qR6ɥ :;q6ɥ :  J:&E:)j  "qc q"q-"PUTSYNTA<5:lhi7do7'd n7 m '0Ȅ &0Ȅ %0ȇ6 P 6p$ գkk 0p:#pj# ""p"#j #p#k# ۃ##k#kل #ԕ D#"q 6(Ȅ"퇂6(phi$l! ?7*SYSTEM.SYNTAXXSyntax Error nnnn -c-ycp--yc:&m$/S -hʊʊրŚ  ?ih !( Ɋ- T ր hӖCPq cq bq  q  " " qq :qhh6q :6 $6 7<:4: " qj6 7>: " ?qj:"?qj"?"鋀6C  ?qqjf6%6 W6D6Z- p6Di!!!i :' c& :& :&$v EDITCORE<:><q7 7qqq  qq+h ⼃킀q2 q Bq& Fq&qqq  qq+h ⼃E킀Kq2 Cq Fq&q%' Bq&q% Sq4 Eq41q02qqqq02q Oq8lh $q(p1 119\qqp|j0q023%;" ۃl;""j"jۅ"k#);0;0#10p;";0#p1#0#q!0#q'q'q02q h5qo 1 + 91 2  8  >  N  \  a i 1 p    ~                       Z"  'q  qR6h ;q6h '.  )ҀD6q 6D66⼃ԗ6B66Fpqq p,q-  D,h ,՜  -L a   x   x <  > A )  E   h]D-RCPqq+6A A6 )6AiE!bpb bpbb bq -bfhb!bq$b hbŹ " Y '   D   Dih !p  x   x <  > E  D    h       e    g  g qC#Pq  C q+6 6$ qjb3.bK6bP7bq  i! qq bɹObaq)?!x h!xq4!x q !xq02qq qb޹4l+q l  q+d dd pq `q* q+k#Bq2q4#E 1q"#M  #T  #q#⼃ Ԥq =Y q2 aq)`q)E!E #!x !x0j="q02qqqq h C'PqNq,h q08q"qqqDQ 6q 6T Zqq 6     q x q f qT q+`? ) %    ւh6$ qq ! 6 ⼃qNONEEUnknownJanuaryFebruaryyMarchAprilMayJuneeJulyyAugustt SeptemberOctoberNovemberrDecemberr , TrueeFalse@T or FFTrue False  DAk5q ' # A e# qq l6q 6A#*6Ahee      $R $Uԓ$&MiDoj"';"e.E!E"!"xĆ!"x!i"j!D q~ eq*Xq  q+h EpD Msaq$aq21 D( T u e  q  q ⼃xԝq q q3qqqC}Pq qNq,֊qqq= q=0P)q   -Define Special Keys:  : @%Enter delimited string (e.g. /stuff/)-TMSet tabs: C(ol# {N(o T(ab Z(eroAll D(efault} Column ## @ @ bytes used, available. There are  pages in the left stack, and  pages in the right stack.. You have  pages of room, and at most  pages worth in the buffer.qNq, qqp0i=q02l3j!q$023k0k=j#"q#"qqA#" ;#;"1#p ;";#1"p#"h1 #"qq02q0=q q!0qqqq910q(00qqqp10;0;pq;;4 023  塅 充 '*1 ;0p0;;0p0j1"3=0qk'#;0;=p1"=&&4 塭&q0q"q0q!;1q02q'q q A(uto indent  F(illing  L(eft margin  R(ight margin  P(ara margin  C(ommand ch  S(et tabstops  T(oken deflt  U(ser def key  B(uffer auto  I(nfo = ', = 'Markers::Created ; Last updated (Revision ).. Workfile: Backup file: More Info: ( to return)). Environment: {options} to leave [[ASE 0.8aa]N= Not optionnAUZhv     m ,&'`q*cq*nf`fc fq  :,0 qq   , qp  6 #h  ? h 0;0 p0 ;0 ȅ q q;2  04;04 p04 p  3 q33C6;0;0 0 05q33  ;0 q5 ;2;302p"05;2;2502p  p05;3;3 4Ȗf  qq  6K ;2pk6L o 4i'6R o #4io #4 i!6"!jX:14i!8!i!8 !4i!6"!jo#6Z h oj:'$46:&q5:{& +8kh #b j7>.. ;0pi""!"j" .%-q""4"j" - hF3q020` b ~h *0i7>I;0b0;0 /;0 0;0 /;0 ;0 qq020;0b020;0b3  -3:;0bڠ&6 36!6~ +ɥ0 ;060 d q  q qq   ?h! "!   !   !2  ?q  q H0q-;0p0q ;0pq0j0"h 6p6- -  q;" ii;";"! p;"!d p0!!"j;" ;"ȅ 0k"q# ;"4 4 d 020;0b3  -3:;0bڠ0!0  h024 q[ 孀ҧ ] { "+,ւ~"jq3 ;0p0":) ;p q  p#4qi ;2ph;2!! qpJDD$<q < "   q  Ҋ<=?q  pj pi!"qk#h ;   H919q&q0hq&0 U19 ? ;0pqq;0-p;0- -!?- 1hq n 0io q/.qm-J,/,. - /. .m/.q .n,. - /. z"#//?./.  /.  6   / 6 /?6 -/,%/. c6 4/. S5@.0;0 Ȅq-&q n .q.q4503/.  3/.q& Ubi; 1qp ;; 1qp  q!1 19q;!" ;" Ȋ; Ȉ";!"p;# "#qq "i?!h?!h#"p p "!p" pJJ"!pJ" pt"i?h?h!!p"" pJ!J!pJ"" p p  p  qq_">qq h 4hh C :  ;ph!" 1  ; p h!ii !i#qqc54q!"#1q 0hi0!#q3 q 54q!i  qC)P7 C  !%00qh0 i $q&q%10!qq^'1010qh0 i $q&q%0!qqE:-7<   qq: q   (-&: :$( "1(q,? q?=q ?=qւ U' %??  4Aq?q qqJȚ qg6 7?= p?q , (TCPqqq h  ҊҊҊ Ҋւq <h  3  1@ 2A ՞6& ҥ &h +ɥ &i6Ț6 ҊR?=qqD?=/): q:$(#hq383& 83%3q3&q h02453 ;0p0qqq*44 h ;0p0i!1% ;0p0i!1!1 8:! ;0p0i!1 h0!1!%0i( "q12453 ;0p0qqq)44 qh3&20808;h802  ;0p0qq3&q0208qq* 402qqq3? ?qqqqւ z 'B? q"q   ="  A @#Eqq  :qq :q :47>  : 7>  :/h8j "?= !F hۊa:/h8j "?= !F hۊ.: !8i8@!: !8i8A:':& q :':&:'B? q#:CD%:X:47>  :h ;0p0j"1% ;0p0jq44"08"1Dh8"0 "q23 ;0p0j"1 "0i%0!j)0k108q 0#qh7 " q2424 q:6q6q 8('0pjk0mo7>m;0 0'8 7>  :"2!37>237<23փ q!pq  :;Gp898q/18q/0-.~7>-.q7<-.d+`,\8/W7><>8 q8/7><> 8 $q8/8փ): :$  \ ( q ?q . ! q q   q:Yնq q%$h #7; $ h  aqj # #"p !h ; p hĖ@&'i&$kh # ! qi O ;0ph 6;0pi! 8 0!0nl80/oo]'8M026;0pi!028 !00nl$/oo ;0p08q"#%&$q024  ;0p0q024q1q 7  Y0 N2 @4 2 -  +  ] ւ6  PDq32h44E4E;3 ;3E j` ;2;312p3 nk9dk1#<qh!$ $?j?j&$#"%qp#"'%'qqp`&"0k`qi" !k&q* #Kp Kh q 'dqk0 qi0 qh#1$1# ;#p#j!" #L"kϮ$ $' Jlj k i n m 0 o$l o0 #kIp"!"!$#(h' o"h!j i$h#l k%n $"#!' $&" ('H  ) 0iq3j02n]q  qq      0 4p ;2;312p 3 q!1 0 ;34Ej;3" qEq54q E Eeq  5 q4l7n0Jq  oq qhjqq :  6q ::q  6  :nո:<> :")j:h" 58q8 /7 ;2pkN'( 4j# #4j #4 jւp"6(" 0#(4qq'j 7( %l:&>  :4 &>  :84q 86"8jo: 86"8jo6u        qq :q  :~:|-{89v.r7<-.e7>-.X8q/N8q/1B0>+:,68/1:<>7 7  8փ0!0!!0!!P0lk!q! !I!  $ 0!q !I$!I: q :գ!hq&023"i03&0!qI:&?0!q0!q!!0 ;0;!10p ;!;01!p10!ࣥ0!qq20q  (o''q q ):M :4qG*)`*P``qq02q$ $CURSOR $EQUAL $CURSOR $EQUAL $EQUAL $CURSOR Margin: are you sure? (y/n) DeleteMarkers: 'A' .. !' [ accepts, escapes]4 Set: E(nvironment M(arker T(ag D(eleteMarkers >SetM$TAG0 0Verify: Continue function key execution (y/n) ? Can't zap when = ptr on diskk: WARNING! You are about to zap a lot. Are you sure? (y/n))No room to insert..Please finish up the insertionnBuffer Overflow!!!!@@8#@8H Insert: Text { a char, a li qqp+z*q q h +  " ' N6 +ɥ6  q6 *6O*P6AN6iO6'#! !  !iq#!6!i6!!N"!Ė+@xĭĖ,6q 6L O&6V XO6T O 6CO6q 6C6V6T6LP6$61h# x yĆ y%#xp!xSb6S&%p#ąS76R"Y%p#ąS%#Q$%@"#x!ne} [ accepts, escapes]](@ Paging L  R  C Buffer full, Adjust abortedG Adjust: [+ 0] L(just R(just C(enter Z(ero {, line}0; eXchange: Text {, CURRENT line}!Buffer is filling up... watch it!Xchg Dir:  1 Kolumn: {, current line}+@ $ĖR,h ;! T  h$ ;! T ;!   h j{,; x; x xĊ xĊݖ,$#xTpOji!"DT!h T! q Ȉ! Ȋ ! AaȊ! !i-kV#ժ _GT&Ti!Aaj !; p"; ph T; ph T; ph h k/   ;   k T  Nn.lV$է1 i!YCT$Tj"Aak!"; pToo ManyyToo manyy 8Ky~i\tKtV1 @ Delete: < > { to delete, to abort}}7 P8@"Invalid delimiter..Pattern too longg"""]: L(ittT(okk Replacee' aborts, 'R' replaces, ' ' doesn't Buffer full#; ph!T; ph!T; ph!h !l/   ;   n T  Q.TT pqT q^/ڮT߮TTqڮTT q0    Z[7>XWՕ   9TA, ;  ; ; F Z[   . Aborting Replacee Find C(ase => Replacee C(ase V(fy =>>4End of Buffer encountered. Get more from disk? (Y/N))FindingPattern not in the fileNo old pattern. Edit:: = ??L Edit: B(eginLine L(ineEnd G(etch K(olumn P(age O(ppositePage S(et V(erify ??C Edit: T(oDisk N(ext M(argin Z(ap W(ordMove U(ptop E(dit ?6 Edit: "<", ">", "=" ?? :)7Y22A^QUV 1 T dTAWS ;  ; ;  1; ; 7< 0 0    գ?1R*WP`UP*q [  /  T  S   ` Xd2XեWՆ q8\qhqq :hqq :qW::V ::' N : XWW V8 sU0=i!1!1)))))))<g g^9s@+I? 2"UH2RNF2 _ * 5 | l W Y  u]3 vX5_9JRV4MG _9ȣ Nq( N ;0;=U10p! ;0;=U10p;=Up!=!q!1!0!4YWkYX@TԆY@U   :8\$)8\ OPTR: OPԆYURqq:: i0 -8!ըY-!*'(: ]7<( 0 ~7>7<f#YC8PqkNq,YN6Y3CSPqi-7> 1q&q% q&q%0 ֊+L!-#Wqcqq EDITOR m %! !j j7! !j jNgj"xk#y"y#x"z""z"Ċ֊#y"yi""yĊB` p`i1j"x"yP ""yԊ "x!""x!lFbGghi!!ybb!ybp   ą֖H xjR(xl$;k(Ć#l酁$9$Հ)#Ԇ"<兄B (Ċl$P$)i ֊)gm!n%!%%'xą('ċA$9 B.(ċ-$$ 20q /qqqY489kPaoh9? k ma 1%09nf9PfaVfrWf%bfP%y%x9nf9PfaVfP h 9me9PesReP95:  q:q  :qqqq2qqpGu?4)^  ^ քڅq qq>:6 -q) %! !ք5q: _' ToDisk: F(orwards   i i1!i`!` pE ɑ5i#z!ɑ5s 5n!ɑ6!ɑ5Z!ɑ6!ɑ5F ?!ɑ6!ɑ5+!ɑ6!ɑ5!ɑ6!ɑ5ր!jh "5 h0i!*!ɑ6!ɑ5!jh "5 h O#  p߆CC yh55ih !5 h!  0!  #?!p #?!p! +or B(ackwards D$CURSOR J Next: F(orwards, B(ackwards in the file; S(tart, E(nd of the file. >d$CURSOR Copy Buffer not defined..Not enough memory (try ToDisk)., Copy: B(uffer F(rom file >TPMarkers::  0Type the letter of the desired marker or > Jump to? ? Marker all messed up. Not there..$SYNTAX  Edit:  ?? ) Jump: B(eginning E(nd M(arker T(ag $TAG        #""ih !   h7Ȇ߆ Ԇ??2? < 1բ  5  $ ߘ     W*a,Pp"և+ a +p" +h ⼃% -r( B <7 B#hi;#O,;##k!;# i;# !i!i#k"# !lihl$?E a h D5  a$2pDDE a 0Ć ĖL02 Ҕ:::": ߆ Խʆ> ERROR:  Press to continue..L Edit: A(djust C(opy D(elete F(ind I(nsert J(ump R(eplace Q(uit eX(change ??Repeatfactor too bigg7RecordSpecialKey: OR recordedd;Won't fit in copy4 $5l ;$pi ?4k?4k!#j;$" ;$" p;$# p! $!l h $1ԍ;0 0i0ih$!i ;!p!i$$x$x#!h$x!"塠 "!$x $#Ċ!"  $#đ`@$ąk ;#p#j"0$$x"k ;#p#j#ah%? !0#ĖOa`! h6R  60h6VZ h` i !CeP R6ɥ :;6ɥ ::'2:)ՅՑ- buffer (ToDisk makes room). Do it? (y/n):*cbuf in buffer. tell richard" B @ what marker? Disk error. Ignore it? $EQUAL $EQUAL Ran out of disk roomm alllMovinggNo more editing room.  @Marker overflowp [ "J   : '  QD\L$}w7XR% nvw1 @EXTRAHEAFILEOPS STRINGOPEXTRAIO PASCALIO GOTOXY h  y! !7D ;0p0335! }91CPN,j%! ी9;! ;pj$# &&x% ;&xph#?$j?$j "i;&x! ;&x! p;&x" p! &&x ĖL #!54!4"-! !3h ?`54!!i! 1k *-`Sp,` xć+`xĖ- V.WP..h . YcSp.c*.pbbb dbc<piac(pcYSpY *+`Sp`x`x 6q&2*/jACGJK2N+ [_ iPASCALCOERROR COMPINITDECLARATUSESDECLSTRUCTURBODYPARTREADWRITAROUTINEBROUTINEWRITELINUNITPARTBACKEND PARSEDIRFINALPARDEBUGINF  #-PASCALCOPASCALCOPASCALCOPASCALCOPASCALCOPASCALCOPASCALCOPASCALCOPASCALCOPASCALCOPASCALCOD7BACKEND BACKEND kp+(c) Copright Softech Microsystems 1981,1982ch Microsystems ,+% *`Sp`+`Sp+ Dih !/ x x#  x"# h=# ="##1  4;2 ;2 xi 0j- 8 *"p+; 3 8  3)3i *3i0i3in3i4n n m9m%1!;!;01!p;%"!"0!j;!;!& !i;0 0k;09;0 ;0*0 80;0000h;0 ⼃0;0-;0-0;0- l l;0;0 PASCALCO@@&`08p8 O    !d8 !h |! OąOOOu |  |j |jih !  hihj"$i!"h "j #"!mF  ih ! j""ST hↀم iU!! Q!! a!T u3م h U Q = a TąST +R, p+Rh`,P `U ` pu,a"0)1Q "*1 ;0 $l00 o&'$$ ');! !i;! ;!;! !i n0; ;!'p; - ; ;  ;!' 'o"!"0" !j!" j;0 +;0  8 (;!' ;0 !i&'n!'i(Ջ-%0!1!%0!;0;!%0p;1"!"0!j1"02 jh` i!" "j9!5%$j,!!'"  +h #" "j"P!!'Ԉ!' #Pn#"n &T,VP ,  ,a#a+h +a a Q ""+"< 5R1Q %puR + U,˅"  1Q u= 1QQ7xi! 7#Ċ2!`#p&j"eu |j |`#p&j" #Ċ ###Ė !"4&#)z# 9~ 0K +2@3"! K4l`d &`08p8 `e `08p8 $AhSS=. SR21=+ h$-- $ $=a1=='1= = haUapUaa pW?CP N,ĖDih !( x# Ć  x" hӚ.  k9kh%t 1#9V11j;" p`9 .;"pi1;";1!p1:1!#1j"!;;"1p "4J; p`9 (;pi"!j;;"!p":#"l01$"!$;";$p;1Ȗ=0h=2 `) x x=P 1=p=P 1=p $-- $ $="41=pi4*1=!41=!)!i!"!41=!pi! 1=ph#! 1= #!p=!bg`w i!b!&!  af%h %xa%xh%%x}Ċ-d1P30/idh.  dpj" d" ڡ.d"k!#_##aAk0!#!i"j!3" /d"-ć.d"^Ė2P0h" !08 p8  SQao 3=1=$S1=4I1=j"" j1=#;$##p###p#"" p9UDih !@ x x$ x$# "Ć  x$ h.  01h  ;i)Ս0ȣkl!$# -$#o'' ;'pm$%$=!%l1$;$;1pD o'(%'x''x$'o0$Q1m0j0Ȣ%!%3+% ;%pl$%$=!$m%1";1ȑ<   &% 1&% 2 xi1=h&)cP0"Ec-323 - &/p!,!44}!44* ) !h+i="cP0c-323*-1211|3& -&p/p} 4/po!+!-e!+;%S셃% !-S&!+!+)ZcP0c-323B-121Iu-31!2 11|Ċ11|?3/p!+!+!-0?!+0g!^00Z 4Q=4*=  u/pccȅ R c,UĖI0h"x23+;2;312p32i3!!`>>">;3;34 o1 ii`e$ĆE$x`$xD$$xĊ$xDE$x`oh " ! h" !h kPR?ȭP: P R;? @ !? @#3a pahR j";a pah j h` j"'h h l!+h "h  Ykih !'g j"x$"xk"#x#y" hԖ^aeh D      cQp!+!-!+$$5 $ 45/p!+,!-!+(!-$4/p!^//A!+!-/?!+/%!0ր!U4/pI!+!-!-!+//0'"#* (0* /pր&= ,շ==1=;z 1= .1=41=)4}z=4 -,+,==+++Pu+1= u.`+1=1=',1='Ӹ++%++` P--ć-+`-+pP =L  l cxl% ~ % ~< % $~<<%~y%~y> <%~x<%}%}@<%|%|@< "h"yjccwKh% լ%jL "h ""  " ch x$""=L <" <<<쥃ꅃ<醀7x<څ c>"pN᥃{N>#JI 7xC L =>"p>uc!L>L~ > i!)L~uucL~ >L~ > i!>tڠԩ!L~uuc >>#L~ > uc c RLj""" '!"zb"| "yI"x"} "{cL LwL L>'ڥNh5c I*>+ c/>3c  ~! !) p + 0'#p#' +8+ -"& +8+  %x ć/ۇć !% +( 1+0 + $(./ $wĭ(ćĭ=uJK/1=671p% }/ދ1=*=*/=Ŋ=1=. =1== =1=*1=* 7='e(\('thۃ7">u -%Lw *  S9  u|ހh0| u(   $ *V R~ }wv#}w(t * R .TEXT #UM1>^g:'[=> {&S'J)1= = =ր[&) )1== = ր_>/1= .u=!! p& Ċ Ė/7i!:xh & `p& #f *guhh*Ihu#Gh:#Eh/#Dh$#Fh#Ch#AhBh" Ėe#h y " |! {Ċ"#8!Ċ#{!#{ Ċ!Ėx>`i  y | {8ii  i ihh%>2ug >Հ>%98h$` w 3 &u /F]iocMS_ warning ioerror / generating symbolic debugging information for  undefinedd D D  lines compiled H -  ,hU#q{ k C   ` ) o 4Peh  cw##%2j>(?`ڡ ?jj>Սa !l$~h%$ "q ; "%%xĊb :/")cw##%x#l$$x%#Ċ. 9""c w##%xx%#Ċiu>#";h%k>$'"l$$xą:h%?>01"x`w  % jug >gug & Ė '& S'& D'y&y'y 'z&z jHlHk$$m%y'z%x&zj%zl"!dw$m%'z%&z%H$H'z&zj" #H 'z&zL=E* aCSTRINGOP PASCALIO FILEOPS EXTRAIO HEAPOPS BACKEND ERRORHANCOMMANDI  '{&{'|&|j"'|'~&~'}&}'&j"' 'x&xj" g'zi&zhj! "/!~ ~! j"! ! ! j!i h"! '{&{ 'z&z րԊ!'y 'z& &y '&z  08 8 /i'hb!& 0!i& n h ib!0! b! !imi!%b! !iU+b,Pbih !b  h-wih !"  h < S> pih ! j"" hߖ! | u5ERROR @@ = QrQ =  $ qq Eh@$  h( $pa 1= 2u)a 1apai1!b=!pb=!   ]P] s]   ]    ST U  U  p"   ` ⼃3 E e Q p   p! < S >  <---||||Nih !!i!j"$" h m#!Ėb '&:[ uhi! '  u'&:ih!u  6 u u8u8h 00 |  u8 0 08p| |!/8*088p0| u || <` j" |"8" xđ<bbji!" !x!i녃 '߅޲ߥ߅Error #Line  in include file 9Type to continue, to terminate, or 'e' to edit   (U      ih !"  " "  hޖaeh a; a <  Ě+J p'톃ppG`p)g`d`p)`p) wĭyyĭ ą<cwbw"7x"Ęh"i"՗"xՍ"xm%=%      pCOMPINIT;@@; w;h   Ć:w:h   Ć9w9h dLq Ć8w8h   Ć7w7h   Ć5w5h   Ć6w6h ,  8Ć4w4h ,  8Ć3 w3h  P   ;   8 PĆ2w2h    Ć1w1h   ;Ė<a w!k##;#!qa w!k##:#!qa w!k# #8#!qa w!k##7#!qa w!k##3#!qa w!k##6#!qa w!k##4#!q?tem.info8|tx2Output file for compiled listing? ( for none) .text.TEXT.TEXT Pascal compiler - release level IV.1 c5ss< 0>PROGRAM D mlT   w?k##6## # ą?q> w>k#"#6## # ą>qa w!k#&#6## # !qhkj"#9a w!l$7" $*$.$ $ "$!q!h"j…7!a w!k#2#5## #!qa w!k#6#;## !qa w!k#:#2#!qa w!k#>#1#!q`BG wGl$`$$ĆF wFl$`$$$ $ĆE wEl$`$$$ $ $ĆD wDl$`$$$ $ĆCwCl$`$$$$$$$ $ $ DECLARATE@@ -g">|u|q >|L>7l7y7aw! +++Ęjmq>-c w# ++!+"+ %+#q%m#jqug>!"$>qu>1cq q#Waw! # +,~++zq u++, +>qu`fq!f!z ku#~i!3>Zq`fq ;2&&uPn&Pa w!3 ! +&+&Ċu>q uZ!;V>Rqaw! +9y+9xĄ`fq ;&&$u!&qĊu>q u$$ $ ĆAwAl$`$$$$$$$ $ $ $$ $ ĆBwBl$`$$$$$$$ $ $ $$ $ Ė)`*P` ``p`+!F.ph! p JiiKc!i!j"` w` w o'c''"'Ċ'' ' ! q %m lg%m$l%Cn%7j` w ,;,ċ8j!-!xĊXaw!Ą`fq q uh! + +f+>qu`fq!f!z ku!+! +y#+z+z:u+|+{ fu++|.!Ą.Ė!>x ubxq >x!>| b! b! b!!x Ċ !xxĖ>`u`q / qSqQqaqH&q q quq>q q>q>q q>q ?>+q>,q q%>- >*q >. q> q>x>| q Tbg慃h ;j` w ,:,Ċq:jljlfj` wcw# ,,, ,#, l8 l;jh- l&7j` w ,;,Ċ:j jhցE&a wa w! ,g, , +, $&,Ċ,  ,", !q ᥃{[_cgkosw{     qU<@H a$QSRTq;( 9~䘱 bh i! !bh!!}i  & $- aq >$h q0q > h hq qbubb-!>#H7j"{hi ! x yhiu!`w k###"{" qu> :q:Ԝ>qu>u q >Փ!. k##塠k#` w l$$$$q>)? qu#  abq q ! bq >-qug>u q >ձ!.0#bcPww%M O|(+) /'*"!zK ᥃&  !q ,春嘥-.  p |x|dtplh r Wwp  p I--ć-ć-ć-ĂqP  Վ m%%塠m%b w"n&&&q>)? qu%G cd"q"#ą-quI< < uu<X jon>U!. &n'&o'8c w# (("((ą"( <Ċ( Ią#q#jqu> ۆdu ۆdq > :q:m>qu'Ւ!$&'q9q"i ۆdde"`" ($( 9ą( 7x`(p& 99% (j(#$$y"(7zĆp  &--P -U -P$ q08p8 q qSqQqaq; qq- 0  qqqI--ć-ć-ć-Ć=w=--ć-9ć--ć-ć- ć- ć- ć- <ć- ć-ć-ć->#u>!զq> u'--- <ć-ć-q>7!Ċ>-qu>>d՝< < uu< " i7xqTh ;  +   8 րuw8 +wwh   9   I b < ĭCOuOOqi!! u (t>qu>quwL wL-- ć-ć-=ć-9ć-Ić-7ć-cć- ć-ĖWINTEGER REAL CHAR BOOLEAN STRING TEXT INTERACTINPUT OUTPUT KEYBOARDFALSE TRUE NIL MAXINT SEMAPHORPROCESSI =READ.READLN.WRITE.WRITELN.EOF.EOLN.PRED.SUCC.ORD.SQR.ABS.NEW.7UNITREAD.UNITWRIT.CONCAT.LENGTH.INSERT.DELETE.COPY.POS.7MOVELEFT.MOVERIGH.EXIT.IDSEARCH.TREESEAR.TIME.FILLCHAR.6MEMLOCK.MEMSWAP.REWRITE.CLOSE.SEEK.RESET.GET.PUT.SCAN..8BLOCKREA.BLOCKWq >#wuq> u !q > a>mqmi >uB%c wc w# ***!%*Ċ** I#q#i) q> .u .q > :q:ԉl>Sq>Hcq q#~ln$-%)$yyu$2u$y$xn$q n9)& u% 9) u> (u (q !hk!!k! *$*i##" j>$q> u !q >q u+9Ęh "d" *i* *~N* * ''o>*8*~y * ''*RI.TRUNC.PAGE.SIZEOF.STR.GOTOXY.UNITSTAT..2DISPOSE.PMACHINE.SIGNAL.WAIT.START.SEMINIT.ATTACH..VARNEW.VARDISPO.VARAVAIL.P?ODD.CHR.ROUND.SIN.COS.LOG.LN.ARCTAN.EXP.SQRT.ATAN.MARK.RELEASE.;MEMAVAIL.IORESULT.UNITBUSY.PWROFTEN.UNITWAIT.UNITCLEA.HALT.0\syKERNEL HEAPOPS CONCURRESTRINGOPREALOPS LONGOPS FILEOPS PASCALIOOSUTIL GOTOXY SCREENOPDEBUGGEREXTRAHEAEXTRAIO PERMHEAPSOFTOPS COMMANDICOMPUNIT* 3WARNING: bad real size, defaulting to 4 word reals. sys      ~xo$* ((*~x 9*~x *~q 'o'o"h!j, Ċ,Ė "#h " i!~!!~y""x!~x!h#h " i! ! ! Ċ ! ! "x!hږi1'u< O b b>h>quh 9 #m>uCjI 7 c "" cIIIu7.77$"ĊćććĊua"$"!ċ8-I>ua"$"!9 Ċx a"$"!>]q>E$zuaq !~k"####y xu9#x #xqu q $quuq  Ę    q z z~qouwm% %%% ĭ > :q:Ԟ>qu>q u>(    zĭ ĭ> q u> : q  :>   Ėi h> u q >!j>9 d wd w$ć"ćć $j$qqu>u q > {u9~>qu>" " "g""'$ 9' ~'~o>5WIu "uu"ćĚ q%q>qu ""ċ>" )$u">" q>qu o%uNw"ććL q1q>! u q q >q >q>qI7M>H>hq!.衐 " :q:Ԛ>qu ) )ylu"!")""hj$i>q>uq $j!!l"!j$i>Ė#wĭh   q>]*q *& wh   < ĭ<~~y ~Ċluqu >>+ q >d udq >,%q>q ui)bwbw" ,!,),,,"i`f !& * y :muh ;uh" Ċquh> :q:Ԁ>q u> !  u   >>B" >#ڡ>'' !>tu +q >h/N@@@D T.KgX, Rqubf " "ylu"**! ,,*,*! ,{h,",z-,z gq ,| '(,~,~n&'(n&un,&!j i!һ=>-qq7k777 ,,Ċum ݁a%+mbw" ,7x,!,%,#> q u>*vq> quaf !!y!;sui !:ruibw" ,!,!#! gq ,'('u,Ċ,ĊL>.Gqbw" ,,> qaf !6lui"!! ",!xĊ"(."Ė      PA1USESDECL@@3"i`a`a k"k$"$x"x:#$x#c$xxiah #"Ċ$$xĊ$$xĊmj`ak!#*# u#j!#!l!s x"* uB*q)`P `Pր `* *q`08*p8* qQqaq!*l#ą@h #x #Ċ h#x*)aq! q|#ą_* ;* * p#Ċ* #Ċ))#x # xu#Ċuu##xG"bq"q O OOOu<qb)qQqq wą楃䅃楃q>Eq>uą}w}ą}q>>uq>% q08p8 q;#;#}#|(`w#i j"!|"!}"#" #} #| 楃e䅃]xN qih !  h炀qih !  h酃}䊛#i!!y!!y!z׆7Ĉw慃履腃iBODYPART @@ iln2"2 (y(z(z )xn)y){itu>mq`gq$l!uS!yuH!zC q :u2!z~ q%!{h  (|' (xn(zi({h!xnitu&   272y2:( mn/2;2a`q ! Ksu+2 2y}u; d  `d ,!,,  ր 08 8 `08p8 08 8 !3!9!5 !a$! !!!h`w熀7x 7zi 9~RS #qqQqq楃-$.$ 2  腃楃.$-$! %qq? 6qquP"G ;h    hꀼuq> q q> :q:Ԙqu"*SYSTEM.LIBRARY*SYSTEM.LIBRARYWar``0    'ՙ&4xlqh"ji$1lj$%4$x$ i$$l2$$0$"$q!$$mk#%4#x#k$ 4x,''7&'f& 8 x&&"" "&թI!-" / "" "&% s!,"  "" "&$ CI!""" "&Y!I " !ڡ,!"! )"X"k") "! "E "! m%ջ  w wm%%%% aq>h>,aqqa>quq > Maq ~ / y$: qmu ĭ  nu        ( {ą{{5 232yE4j'h"x"zki!#&!"z"yh "!x!iՊ)2y2:4252:=40 I56)f5"I2:sP2x 'րAրH2j"y"y332xg!h xF z?&I { |5 {uD#J x:t xx HրM2H39 3 u&4I565g5 guրTրY2U39 3 u&4I565g5 guր]42y`q2   @2y2;: qL:9 q2;92yu9 2qt *yh/ *|*{K`#VG*x`#K`#F x`#:3m *|* ) k%*E%*xE*x uրu3u Q>#Ci7j"y"j񆀅"{h ! k#xi#yh!uqu+>h> :q:> q u27u/a!"> q4u +> ` !q+ ![ h րb34! * (~(( (  2( 2y I( ( { )y)z){(  )z( ( ( ( 8( u'(gu( (~ ((~xրf22y2x>p ;up q >p>` yuhq m2 2yqu ՘ (z2q9(z q +(zgfq / '&K'''#"u({2?(|&(} q /l X(~(}W2x2y2xi!q  j"z q   q"y"x  Э  ߖ g'2i!!y!:ui> qum j`fq!Q! qF%lk$$ ,z& ,z&u$k,xlbw" ,$,&,{#"m#"Ċu> :q:ԏ>qu ++>h"(> :q:> L'%%z %lm$xk$%$m#l$%z 2> q u ` +>h> :q:> q/ "5u a!@/` ">q6u>$>q u>Մ2 2yuq>i2a2zeq% uO% (~46( 5(  uրo( ( ( 22y2xqu]2W2 (y(yE(y(z(z2u 2822y2xuq> pu pq H >`q quEha p !h I  I F  *ik*  * u* kn* # *~*~xn& o'*'o>A!~uq"2!!~j!"!ռ+! q`2Ձ2yuv2qjy/|{K$A&9# 99 9923u >Eq  )~hi) j) k) luh  y: quhquAq > 63uq g> >n@67u@q (">q6u+`&mn`#'(9 cji>`q quEhB 2m2yd7Y7"j7k#2z47k##5#6 " " 2yՓ283l"x2x3m"y%G"x8 "x 8 ["y2;9% "x8 9"y/"|"{K"2;":q L: $"q 3 "q )3!4gu""y 2x"xuu"2qu!!i>>qu!~u *  * * * * * ?* * ~ " ii" h>q ti u v yc"  c! c! ! >qu$ 0 0 8 p0 !8 2:"x:!2;L:"x; %Ċ)&97k##99 !i99uu> :q:X>q6u+7"9! JJ9l>#P7i!y!i񆀅!{j"""m%x%zu%%x %yjڀuq>qu>fufq >hՓcw>up`q q f  ,Vq IJu!3q.-q-'q0!q1q4q3q5 q7րcwq>&ufq JJ$   qq|m8l ի *h* *~*~x )h* h*i, ))!r! *~e*V*~y":Ė/ xy2y2; 9 x; 9Ė>l:ulq >lՒ>m^`q q   $  ~  22yz;q:q8d w$3 $$qdw$$q$qq >quq*e2 27ueq jdw$ćć> $q|2ն2y u$z2q՚ik34i4o' 8n>Bqk~G* *~q ' h *~q ,*~ +*~x h E*~x *~xh * h*i * *^SR97zi!I! *~ * * ,+z*~4+z8+zx*i$q+>h> :q:> q u I%|$8!q7zi!! * *i" ** )q7{k## *zu*yk'q cĖ   5'S셃q%᥄8 S$z2qu!344 i!& '(#b<"[j$2$u> :q:%>q u".  P PąP[P PąPր>ulq d7 *>'(`?n8oq * 2&`'&`' ;2; = :2:B+2y y y 2q\u`'& :2:Cuy`' ;2;  y2y uM ;2;/b=Kq*q&`o @d`?-@*** NqKo0Z x8g= l 7u 727!uր  on>(?`ڡ?onq )2&2;2:2yu'2;a2:d2y>(`?m8 q ) 2%`(&`' ;2;": :2:@)2y y y 2q[up`(&`' ;2;#: :2:A)2y y y 2q]u 727 uրƊ Poq8(>) .28 ?3Pw2 2y`  W 0 4{ r k   i\K98!?m8 q(3 2ծ%(2y 2zqZuu &  .28 83 `( ( D2y 2`*&`'.)2 #`2 - ,+ % m m m mր 2q x n1 y :nM 7%ڡn3r%n3bn^% un6Jn9 q " nh z zq / %u)) uր&%T&%0ڡ% 018% րއ&$ ,-&)%u7'P @+>n2       READWRIT@@E"`q ~" ~y ~z8q! >"u>q{?h>`u> "4i!*&9&999 992^;2qO:2q ?92q2x)82q 2q 2 }u!%9 9 9 9H0> :q:  00>j> Rb>s"&2h q 333 ) % n&y&y$q22J2>)? ? }uq}u 2 28}u>q;2!2:>2y2;}u; 2 $b^ZV 4 2 2ytu2 4 ; ր NIL /3} 5%WW4Z4_d1A G>%q&22;uii ;! :=!>$q"22;}u t 9q!\ 8! G q ! 1 q 'k z zdcq #$k!## }u0> :q:Ս"0B % WRITELIN@@-88 `08p8 >8j''m%n%08p8 %%~x% " % % hqu42;}ub3282q T33!:!u28&Ph   4ȅP w23 2Ć3 2}u3> `q q>!=hqh  i! ! ! }u}ui9h9 &  !2i!! > :q:! ! i99 w23 2!Ė;  9h9 +    2i  22 -1UNITPART@@ u'u7mInc bo< 9 Lcb ;+ q>uq j@h "  hjeu"$` w ć@ć @ Oqq*! O<Ċuqu>tqwL wLe I7+77ććć  qudLhL wLi!w!j"@""""  ! ! 99! + 22y}u 2zu T>q}u4,$2 2z8u  ր0j /22y}u2z8 u? 70/2 2;`2:c}u;328+2q 34y'2}u;  22| " " " <" """"!9! I>qq ہLL} L L*> >9q>2uf`=kQj i>3quf  !uqq  |lQ"_ R0" u 0" u$0#0#p0##pkl"j q =# 8  1#08p08 p80=#q >4ufhq qfq"q!% > >qu!q) pq'Lm%x%yI%{c%zb%| %} L L`w;YT>`q quEh 2 2y}u>I !9w4i !p! !pĆ3 &q 02 2y}u>Zq>O 9'uqu0  22y}u 2zu >q % 0;{92q2; >]=;+ Oqqu42;}u]>`q q ~ ~x;}>qZ `">ufed9 9 99&%( q q)&>oq`21=uo''ȕ'($%$9 )> 3guq"22u>bq 2;quDgD*>eJJ06Ȉ傀;( JD SLNP~QPURPE 4Km%%  2 S  ED;FYDF =H<h7< Hvi!p! H!G ?i?!7=!v!p!?!h=!= p "?=??p `=?p?qc+> c"abq;!q"q>h q Զp 2+2; b 2:FB}u; >q>>q .        % ;&{       Ė:M Mh ! x x ! LĭMLk!< x!x!!x< x xĊ xĖNaphm%  h na&(& m% ' Ė "!'1h 孀񘱡"!'h  V ?  "!=? p? m9T p x` p  xhb? `5*xxć?vp *0* r   " Ebfih !b v h ih{ h !; +z&i+z xc+z pcx+ p+|h! I /  %Compilation aborted due to I/O error *Compilation aborted due to back-end error Pascal Compiler IV.1 c5ss- *system.lst.textt system.info.TEXT.CODE / /  - Page Using1vp*vp*`55*  e hi2X+j k#+l$e$Yڡ !i#+ "!+폤 + h #+Ժ! 12 h2N.j".*"//az/ / /)"jϭ ҹ cp.j".B"/c"/ c"/ Ą$"/d"0/-0ʊ'0ʊ0ʊ0ʊ 0ʊրa0"ʇ0ʇ0  Constants selected from Types selected from Variables selected from Procedures selected from e"WARNING: illegal character in texttLast syntax error: line End of Compilation. : ----> Syntax Error # Syntax Error: ! Previous error - line  {commented ';'}  {code omitted} 4|yB errors detecteddSYSTEM.COMPILERDEBUGINF% u9ʄt"/ Ą"0d"ɊT0/ ĭ"101xć01"퇁/+ć01Ċ0/րh"00/ ʇ0ʇ0 ʇ0 ʈ~Np"j ii!7c vp!hm 1` hKx( h K xK x K y#Kxhh K y 7vp @"a,aa`p,`p `p j9  c$#lwq8$XUD#5c=|E -. ^ /*** FILEOPS STRINGOP HEAPOPS PASCALIO EXTRAHEAEXTRAIO DEBUGINFERRORHANCOMMANDI  j,-i! c-ćxh  - hꖁ v !h"  0Ȋ!"  " 0" j hߖ J" !Jh   Ĉ 3 "И p#"iaИ( an- a p#"iaИ( aq- a ph  e !Jh x y  (J J"vp8vp *`+*+ +  + JJ* `(+ JPARSEDIR[@&T Kh $$'"#$  # #Ċ%# #Į  " " ! Ė #xp!h  %  Ėrji  ,kb=#pa=#p =#pK7dvpbdpadp dp7dvp"i!h!8? 7=? v?=?`p!!Ċ? !=?!p?!)U 1S*?J" %  3 J e   pvp c0E ȭ  tuJbvJ0   ~  И     b   DDD Vh  p Ȉ     cA! !  ! a ph  HC>94<; <; րG,h>>>; T B!h`ɒ`ɒ#ib!!p!!!8%h! 7!!vp! !!!Ėe""M"2xh(h    z" hڈ i!!z"ERRORHAN#5Pb3 8r r44p4ej34}j'4j4j4 j j "s ii4dm4%d l4 k %0Ȅ $0Ȅ #0g0p: !ph !g p !h !p!i g !Խ g&! P! nPn5&Ȅ 퇂5&p r5p*SYSTEM.SYNTAXX EXTRAIO FILEOPS   !k d a ` $l֒$$!  !mk#%)b : "#kҖ4 Չ  zɅh T .iii=?!=? ȅ?=?!=? ȅ?! L 3;i,ba"!; !   #"  !  - h  z  ɦʭ1?. J  -ETLA INITIALISYMTBLDUPROCEND ASSEMBLEPRINTMES   # TLA TLA TLA TLA TLA  4h$ASM86BK9p! 10p!4. B4 5?x# S Kmx%{%z ji ;;:;:d <;o[R > /(" _)g!=?K; <;_g/ <;<;pk Z; <;l$>$ >94/*<; ց0<i>><;=?IINITIALIfl$Ćl Ć l%Ćl'Ćl9Ćl4Ćl?Ćl7Ć"l8Ć &l >Ć *l &Ć .l 1Ć 2l 2Ć 6l RĆ:l3Ć>l*ĆBl+ĆFl5ĆJl6ĆNl#ĆRlLĆVl:ĆZl;Ćp?; ?? -cn  E" "7DQ] p*>TMd*>M*sss*****      ^l)Ćbl"Ćfl=ĆjlBĆnl<Ćrl,Ćvl-Ćzl.Ć~l/Ć l 0Ė,!l!Ć"l"Ć#l#Ć$l$Ć%l%Ć&l&CĆ'l'DĆ(l(EĆ)l)FĆ*l*GĆ+l+HĆ,l,IĆ-l-JĆSYMTBLDU9wcgih jc"x$"y"ui"y"y"y0Ċ"yh""z"ui"z"z"z0Ċ"zh!Ԭ { z z xN0t p0}n Pf P[ PP PE P: P/ P$ P P Pր N t p0}I0~q Nt pG塭GNtpq NLt p y yp_`u u0Neu%0%%_l$_%$x00}0րR0|$lՄ6PЂ{Pq Nt pNtpN.l.@Ć/l/AĖ;h`A  (ϭĭW|jWtdWiHd  !!di!di!i!xH00dH0|Ht dt tFu0d"0W|qW}qk0#Ċ0W}0W|0!xĆ!0ĈWtWtWWv> &&?((+) p zP`-v`))zPw)w)vp&))zPw)w)P`v`vIt pNtpNt pNtpNtpNtpk f ji f ji6"i%yЄ6PNtpq `u_ AB  LB  PR  FC  PB  PV  RF  DF  UD  MC '4| ' Symbol Table>AB - Absolute LB - Label UD - Undefined MC - Macroo=RF Ref DF - Def PR - Proc FC - Func,PB - PublicC9/% P.h`w` w`P.."t t tp W.v{h`w` w`{P᥉&᥈݆ކ_膈醈ĆzP`-v`))zPw)w)vp())zPw)w)P`vp`v   C  9  / %   PV - Private CS - Constss------------>   P g`-v᥉_3P3 3#t ptpd4t ptp`3vpc c_]gc ,]]c] ]c]·]]χ]xg00cg0|g/>t pct pHt ptpMu0c000χ]xĆχ]0Ć _c `tp`tp`vp`vg Wv fp,3Wt pZt pPROCEND "!5a36h hM 6  6q6 16 1!pM6 65!4!5Ս36h hM 6  6q6 16 1!61'pM611 616q61pM6 65!4!54qTA"ih !# # xq hXtpiB~TXvpkh #?XtpXx&,lj"$#X"xX"xq!i"j hkj"#%"x%"xq!i"j! !q&q q~bt ptpj" " "j톈 h4 #. & . Cpt pdPt pt pd dpdddGdՙGdddddd NdvpYdw'NdPwXwvp%NdPwSwvpphq d 9C9@:9876KB7j" tp"j_ad&cbw_`<D;=IE Xvpih !՚ x0Յ0}v9 NtpNt pN0t pG9tpt p0t pq,Xp0}8XĊ3XĊ+XĊ#XĊXĊX Ċ X ĊրX00}0 0hXĮX0ĮX0ĮX0 0X0 xĮXXp0 0 yĊʮX00 ĊfXĮX#ĮX0~ĮXK0}X ĊX ĮX0ĮX0~ĮX0ĮXXĮX0ĮXĮXր-րR0|u h`  Xvpon&'$XtpXxaX$Â!wwwP9UNt pN!tpNt pNt pNt pNИt pNtpNtpNtp!!xvqu qWvALIGN ASCII BLOCK BYTE CONST EQU FUNC PUBLIC PRIVATE PROC WORD INTERP MACRO ENDM IF ENDC ELSE REF DEF ORG INCLUDE LIST NOLIST ASECT PSECT TITLE END PAGE MACROLISNOMACROLPATCHLISNOPATCHLABSOLUTEOR AND NOT XOR MOD a$5q&nזCGtpqxvpXvp4q w_02q25432˅#0ą"30"φOuMCGtp1BEq`u MOj"`uMp53214"pM 6qqqqji!" q !iqqqqq:`p`ć"Ą! p!aʇʇ Kʄʇ ʇ ʄقzMAE``xq``yqĄaCONDLISTNOCONDLIASCIILISNOASCIILPAGEHEIGNARROWPANOSYMTABRADIX RELPROC RELFUNC opcode declared twice==*#4:#5:#9:#10::#11::#12::*LINKER.INFO[*]80866.OPCODESS80866.OPCODES not on any volumee80866.ERRORS*#4:#5:#9:#10::#11::#12:: 8087.FOPS 8087.FOPS not on any vol on lineeReading 8087.FOPS Floating point op  already declared in OPCODESS80866 Assembler IV.0 [1e]]0123456789ABCDEF2Output file for assembled listing: ( for none))CONSOLE::console::#1:PRINTaxqĄxqq` p6qa Xv0\v# 1Bո#k##xq#k#q2q22"4kM#6 #6q6#XpXXXv0vk#l$Wp0M $#j" M""ppM6 6q6$lp 0vqCGXNtpNt pN tpNt pNtpNtpNt pNtpN pNvptpt p tpt ptpER::printer::#6:REMOUT:remout:#8:.TEXT.TEXT[*]][*] 80866 Assembler IV.0 [1e]]Page -  File:  i' k       tpt ptpCu### Fqpp/p.p-~p,#Xvpxvpxvp u:Ę30qq1>#q1QqL0} q@#000#0Jq1q1Pq0q0ąCGtpt pq 1( q1(qq ,3&Xv0v>>>>>>>>>>## 1  pq0  ) 1ր i (i'hak`j#]"! n!mn! mC!@@i! @ @ n! @ @ m%ld% &n% m%l"n!m! n! m) & % ր Mzyxڭ 堭{yxh x y5 ~(  ~  ~ Ċ Ċր  y xĭ  ċ  |  {ċ  |  {Ċy  |Ċn  |Ċc  | |ĊP  |****& IV.0 [1e]] Assembly complete:: liness" errors flagged on this assemblyyAssembly complete:: liness" errors flagged on this assemblyyN    ĊE  |Ċ1  |"Ċ  |"Ċր  S1*~ 1`*iR M H( <($*  *  (< q0}1! q0'ĆLu0Lq8 ?L:haD;4 Luq5eqL488 q q8. haH a 8 h4aL "qaPԜ3x Yq ##y<Ċm7h8#q1U1#xB##y##yĮN^2N&0~Jq7m2#ĊU2#Rh<1 hw5 ;$6W2 &1 w599"k2q#!N4t ptpt ptpj!1 !R.j LՓ1Ճ 1 S.jib!xxx!x9IɀаyxIɀ䰠Iɀ氠[.j T.jt p4 L4 Ȋ LuL Ȁ&;q qzn<1q1(IqQNLI*I*%t ptp,t ptpI0~0Y!xG:Iɀ$IʈI!yʈI*z }yuq9q qhcd`1ڥJ1@> 1A?KJK p4Cq p'#qq#ւ3q1( q1(q  ,3q IW IF ENDC END ELSE ENDC IF END ENDC ENDC  END ENDM 59&^y~>~qA_.`.#t ptp!x(ڮՓ=ՉIʈIʊIIIʈIʮᲟ#IIII ʮ,M@-I I-a.*t ptp0~iI0~0['R(>/3!y'! IʊIIʭ+-M !A\.0t ptpn 5t ptpI0~0բIɀd6)Iɀ IʊIʈIAe.a!x8L^sQ&Q1{{:: ENTER PUTPRES EXIT PUTPRESSENTER OPENPARI!yʈI*<'(*Iɀ@ IʊIʈIAb.;t ptp!@t ptp0~h0:3 (!x!y io.n.iL+'(IʈI`!Ab.Ft ptp!Kt ptp0~hI0v'(d( c."xy I ʊc.L)I` Ae.Ab.Qt ptp"Wt ptp0~"i0~hq0} ENEXIT OPENPARENNENTER GETONEOPP EXIT GETONEOP ENTER GETOPSS EXIT GETOPS ENTER SETUPEA EXIT SETUPEAA ENTER ZOP11 EXIT ZOP1 ENTER ZOP22PUSH EXIT ZOP2 ENTER ZOP33 EXIT ZOP3 ENTER ZOP44IN OUT EXIT ZOP4 ENTER ZOP55AAD EXIT ZOP5 ENTER ZOP66 EXIT ZOP6 ENTER ZOP77 EXIT ZOP7 ENTER ZOP88 EXIT ZOP8 ENTER ZOP99 EXIT ZOP9 ENTER ZOP10 EXIT ZOP100 ENTER ZOP11 EXIT ZOP111ENTER JCALLSTUFEXIT JCALLSTUFF ENTER ZOP12CALLL JMPL EXIT ZOP122 ENTER ZOP13 EXIT ZOP133 ENTER ZOP140~񲟠g.`*iLpI0~0KIɀIɀIɀIɀNJ>NN J&yqNLI*N!sq%]t ptp"`#+q q #ct ptpIʈI,Skt ptp~#!x4Iɀ IʊIʈIʮAT, Iq SSz.:$hx'z᳭Iɀ鰡 Iʅ&zzII*zF!x EXIT ZOP144 ENTER ZOP15 EXIT ZOP155 ENTER ZOP16 EXIT ZOP166 ENTER ZOP17 EXIT ZOP177 ENTER ZOP18 EXIT ZOP188   JpbkYOzu'/7?GT0{g[@35QbV9t L p 4   0 P C 0 d    |_RA(u{m)V>{A2XN#`l8 Sc4Iɀ IʊIʈIʮATa.$st ptpI0~0y0}h0 UV%t ptp %t ptpI0~0*(I*- I*M.t ptpr%t ptpI0~0#&zzIi.t ptp%t ptpI08(! I*+IIq d.t ptpe&DPRINTMES=rj`-v`{vpB`kvp`tp9Nt pN t pG9t p t p`vk: : t ptp0<(0Iʭ@hI ʈI A].t ptp't ptp0~hI0~0_(M/?=8 IʈIʊIIʈI,M@-r.t ptpp't ptp0~h0$IʈI`Ae.t ptp}' q )bbbbb0~h0bʋՄH!xxbʊ bbbɠu. TLA  93NtpN,fft pNtpNt pN tpG92tp,fft ptpt p tp{  9NtpG9tpOr! t t`t   !/!<xvxvp E e(( &  xvxvp9 j"i`a`a k N't p   Ntp `b(#hbՀ  ᳟_$h)t p` ɧ p`ɧ p6!xbʊ(bbbɠv.bilLw h!ibɆ ɡbɆ ɡbɆ ɡbɆ ɡbɆ ɡl$ ԡ$冉 ɡ!lxq$ n&$I&ʈI&&ɐ^,&,I&ʈI&Ɉ!y&ɐ^,&+I&ʈI&Ɉ!y&ɐ^,b&+I&ʈI&Ɉy&ɐ^,1&+I&&ɐ^e&ʈIeAw.%b*N$0}<0~q0}f.q0}N&0~     `ɧ p`ɧ ptpM'`9@" hM'`ȅM'`9@ |p.p p)+ih !h }Y9 NtpN.t pN t pG9#tp2t p t p  h)+x)w(o5?55 (p5f(톂,5p(톂,fp/5 (p5f(,5p (,fp9G'tp< p tp> pkGNtpNtp N pN6t pN!tpN:t pN((1(,3C9塅>  Gt>1L=#%=/PeP8 8 /8eXXePwX/wXP8 х&%($Pevp PXXePwXUwXve&((G9tp,fft pch8& 8_88 c 8 hjH  h ""c j"c j"j"xH00cH0|HՓguc u u u  uր0o'''' ' 0Ċ" u uut pN<t pNt p9G6##ȆN@t pNИt pNtpNtpNtp!!5 9G. p 29  2=2h2Ȇ2 Ȇa2pa2ȆNBt pNat pNDt pNt p5ee65115,a5pa5ȅN# pNat pNtpN pNat pNtp ,35w"h!L N`ɧ pN`ɧ p!N`tpN`tpN`tp@N` ɧ p00Ċր0o'c''"xĆ"0ċ0}'Ֆ"' s 4Ċ (8  )ą+)0~0~L>L G(pF 8:M0}0}!Q? d$ikh #x*#)j #xj)*+j8(!d!8!i!'HH*"*dH**ۅHv+ (pf @**+*p))# i!(!!x!i熂* (d(&((ą+N`ɧ pN`ɧ pN`ɧ pBN`tpN` tpN` tpN`tpN`tpN`tpz4DM6 666161MMp4455M4!ȅ445433p32329Ev!h02)2`ɧȆ2톈`ɧȆ2 2<252`ɀ0Ȇ2`ɀ0Ȇ2`ɀ0Ȇ2 2b%ab"j9#`a`b$$lb2[2*p$2` ɧȆ2톈`ɧ$2`ɧȆ2+NF8:? |OD+a,P-Ph+ P8 B8"8" ?+" +&a8Ȇ,,Pw,aw,P hD8 () P*|1(FS8 F8 (8      ($$8089?8/?~y8+8?\8-8??:50+&!8>? ց.1S ,xvP`ɧȆ2 2z2s2*p$'2`ɀ0Ȇ2` ɀ0Ȇ2` ɀ0$*2`ɀ0Ȇ2`ɀ0Ȇ2`ɀ0Ȇ2 2#Ebɑ bɑ E:3:::: B{$5"x#x ąx!xtp!p"!"x3""xĖ@ Ki#hw,~x4:y}Ćy:ą | u,~|}>,~7:|ą|:ą | u,~րF_{.| j""Ć}u}3ą}" |vNzvs #C7  1B冄xvPvNverror error ( (continue), (terminate), E(ditt * location >>>>> $>>>>> $Page -   File: | | &! Xdp  ~@.Tx"   .TE" }ą{/. -րnրuw_`!  ,3=P& ' & '(&'&'?=/%&$( & '=Pv $p"pf (pp5f(,5p (,fp[ jL#x ##x8189(81ixhՀxL!L "L ;1" L "jL "L "jL ,"!i hf L pi !hL 8 8; xLg! " ;5" "j " XT !'  !~iA(n4;" . ["n[ S 0>8@2Y EXTRAIO STRINGOPFILEOPS HEAPOPS PASCALIOCOMMANDI "j ,"!i hf pi !h 8 8;8,#xą ?F? 45?L4,L4 8 F5e,5Ȇ,5854L4 8%D M8 D,f L4ph5 f,5 p5 4 8 5f,588  ? 5? L  8%D8 D8;8,ZF LphF ph5 xL x?^8 DA5f,5 5 L  8 ΀ (A 8LNKR PHASE1 PHASE2 PHASE3 BUILDWOR  ( LNKR LNKR LNKR LNKR @G,e,h,LINK#V?l0^/,,G955f,588  ?((?(=( 8;( F((( 8 D;(f (p((8;D(f (p( 8  ր|/-PcP868A -87Ȋ-80cWWcPwW-wWPcwcc88jj jjրj?P-"cGccWW-PwWcwWP݄V cʄVcʄVcʄVcʇVcccWW-PwWcwWPhWi!Wc! p c!h!i'PHASE1 @G 01Ptc(ta#Pp#up& Pv#up&t Pvq3!!vi5w w wdt$1$#$3#e!  qqeq i$e $#&@$cf$sv$瀃$瀓@88Pj!hf"塤e"yf"%qe"ye"xe"x -q&"q 4q! j"j"p! $!խ3;c p  c ccccvccWW-PwWcwWPWi!Wc!p!iVcʄV cʄV cʄVcʄVcʄVcʇVfcUccWW-PwWcwWPWi!W#c! p V!c!!iׇVրah8& 8_88 a 8 h -hHH / h aHH! l x?1RՌ"#xLxL4 4(      w q13#5%h  w hCw wE4C'cvLvv'cM'cT\w c'w w cb5'cvcvv'cd' c짚qc!qkw c'w w cq#c짚qcr scc{Գ|w $'w w $3$짚q$$지. $$v$'$v1j"xi"1"!j"0x#"ht"ĭ!ĭĭ c!ĭĖ #k1m%n7BUILDWOR@Gr!T!z!y!x!@`t !    ĉ Ċ !  h! k!o!z!y!x! Z!S h  z!  p xh`t !         p i qki!R!}H!z!yj!yj h !{ { y" ! Ęh xh xh!} !!{z!xi2i!( xz"!zq h  x ĭ x!Ęi!}iԖ#h2j"x{"#{U"}jxi!{#{$#y z!y z5!h!xi!*!{#{"!h!xi!"!{"#{oi!'խ&c!Օ%!ː# ct###t#xk#"##&瀓!x1l$ ˤ h )A(c -%#!(瀓 $ ː"#z}#z" h$xl$0ҥ!iM%xm%08 j1k#Nml$%:#c$&bt"2"#"$"""2"$l#xk2i!!}h!2! i#32 qq$#t#m%22}%z%%Ė Ć Ć Ć Ć Ć Ć Ć Ć Ć Ć Ć Ć Ć Ć "}j!Ҷ #xĭ#Ċ# x #Ė(xՒ(xk#zl$|#ċ#$ zzq # zċ#$ zzq #yUU#y # zċ m%zn#%y%%y$ĈUU&x瀃&y##z#%zĊ[ #y"#y $~ w $w q/ #y"#y $~w $w qր(xj("x"y^"zk#|A,w 70w *4w 8w ;w ր>#w Iq"y 'x" "'x'"ċg g(՗(z (y (x (n&|&~k&m%t#l#k Ć Ć Ć Ć Ć Ć Ć Ć Ć ld˧) mk#%# # x#kb``" Ć Ė#!$'8P!q!q!q in workspacee.CODENo file Opening segtbl read err Bad seg dicttfunny code segg bad diskinfoo bad seg nameeAll segs linkedLinker IV.1 [x10]: in workspacee*SYSTEM.LIBRARY Host file? : in workspacee Lib file? **SY#l%$xji!}=!y o"'z8."'z'$`t (     !xi!ҷ$l$%xm h i!!{#!}!hi!xi % i!{ {j"!xi"!#z  xh !!3!z !y !x !  `t !     U    j z|"2ĭ "z "z &  2h  }hխ "z    i! !!xi2h  }h missing proccProc  param mismatchFunc  param mismatch %WSTEM.LIBRARY Map name? .TEXTno host seg in host fileeb cGlobal Public Const Proc Func  undefinedd\6B ;{ @PHASE2 @Gmh+ )xy h q !p !ĭG!h q q |  ~ ~q }q |  qw } } ~ ~#qS } })q< |   t  } } ~ ~d0qր7')x$$)y%$瀓)y&$y%x )xĊDq$c)ySk)| %y&yl%yl%x$l5%Mw $# PHASE3 V@G(#"xh!`q lo'h&i !%2 !q !%k !q!i#lj"$ !q!i"jŖ&h%i !$k !q !$j !q#"&""$7(h'k #&j #q "&l "q$$q$mi!%& "!&( "!&& "!q!i #& ( #&& #q #q I! !j jt n& m% qq%p qnxy&  & qq qj"" qq" qi!qh)yw w#){1p'o'''q'o鄁p!n( Rq3p#em%A a t !p){'o''!'q'o!!%mi!!xh!! i&!#b t" ")q )*"!qh {`q kA& &z&y&x&l$m$| $}$} Xq$}i!i%!%!%xh%%%% j kc-%c%cx"c "hx )c)瀓ykk#q #q o('#p!  l!$!$q $q o('$p o=x-.yo-c'-瀓yo.x lm%-%U$l%m ij$k,R,-y (. !.xi".x.xj#.xk-~( -x !"#h !!i""j!"#h'(  'qq  pRR!SS"TqRq!!SqSq""TqTqc^qcҥ% %z%z%%jq(x(yyn&mbta% k# rqP(xy!%(x(yx % zq-!q h o 'l$$ q(zbt O#j"9"zi!-!|!!! !ր!}i"xj2i!!3 !}i#z|#z2i!!!}i!q li read errnon-alpha namee too many refs bad formatt bad private bad globdef bad publicdef bad proc/func DDDDreading code seggReading bad litypqqˤ ,A,y -&&-n,~%+ˤ +1qˤ ,+,x +qq  p q!x!yx!x!yyh  9   Rqq  !"h  q k!" "" {xy   Xqq""  `qq"q k!"  qh{`q ijctee bad proc ##illegal relocation typeproc place errrsep seg too bigsep seg read errr bad proc dict#9 j      i!!{yxc  ɇ{x瀃{yq"{ ctct{ 57ow | uw xw w wxyxznzˏyq 4&  ./-,p,-,/q"{/xyxxnxˏ&   ɋ" zyRqRR׋} zySqy x{qq  x q+ qLNKR U@GW*a+Paw ww wr`w  څ!!,htp"xi`a`a" Ė! j"!`p k! "Ȗb! p%jkh #դ" l$$a"` a"` a"p a"瀀 a"瀀 a"` 6"瀐 "瀐 "瀐 "瀐  hV""Б$$$#x#$ĊM#xi!h!$!zij!$!yij $!x!$Ęhi! " $Ċ $Ė,l!h . + +qSS|Q" zySqSS׊ րyqyqx瀃{x瀃{yʇy~q!xi8ct թ +z ,|,.ᰤ '.+y  z.-x瀃-yɰ ր+|x瀃+|yqo*L,|Y+yhU+y +}y yh' x q h*,|+}h+yh  h' x hր,~k, (#j#k#j("xi/ )Wn m%%{+|%nm%xm&)6&{+|,&y !-z!-z- !-# zh # yh " xh lhΖUkih !" ˧ hko"!h"!h k  i iauts  tau$Type (continue),(terminate)):-aZUMH6. CEXTRAHEA EXTRAIO PASCALIOSTRINGOPFILEOPS HEAPOPS COMMANDI z-yi &xnnn)Q,}2!ql' x dq$ ldq$ l$!q !qր,| !TqTT"j"9(x +xP xi z!瀓 y!cʭ!ĭha   qq!ĭ  j"xk%w %#瀃"yw%, %##"yw %w h %w %w Չ yj%w %"w "| %w %w %w % ~w%w %"yw%w %"w%w xhqji!O^LL"!h %w %w h %w %w դ yk%w %#w #|wx%w %#}wa%w %#}wJ%w % }w3% w % }yw %w %#~wց%w xhV!i%w o'x ft(瀓{h Ր   je"  9qq(sxl(s "k1y%#$ # Hqqa%# # Rqq$#l# #h Ҷ (sft btk#xl#y˦5@\w $#w a!Ww $瀃ww !x$c#|   mi!%G!U7Th ! ! T Tq!TqTT!ibt?i1h cpc $#@dcts瀃瀓@ 1܆8Mx0 jj"ԇxhac! dq"i 0kd%Qul 47pw 'w w  짚qw4 axu aup qqj$1%$up!w $w w$'# ,w1:Error in simple type  2:Identifier expected  3:unimplemented error  4:')' expected  5:':' expected  6:Illegal symbol (terminator expected)  7:Error in parameter list  8:'OF' expected  9:'(' expected  10:Error in type  11:'[' expected  12:']' expected  13:'END' expected  14:Semicolon expected  15:Integer expected  16:'=' expected  17:'BEGIN' expected  18:Error in declaration part  19:Error in  20:'.' expected  21:'*' expected  22:'INTERFACE' expected  23:'IMPLEME$(%w %-x#,zyw %w%w,z}--},z$%w %,yw%w%u,x !au4@ %ud bad proc dictno mem room for output segg seg read errrbad code segmenttoutput seg too biggproc num ofloww0LINKER,PHASE3,HEAPOPS,EXTRAHEAP,PASCALIO,EXTRAIOO out of memmreading sep seglinker error reading sep segg Copying proc func )relocatable quantity not on word boundary"ref to non word aligned addNTATION' expected  24:'UNIT' expected  50:Error in constant  51:':=' expected  52:'THEN' expected  53:'UNTIL' expected  54:'DO' expected  55:'TO' or 'DOWNTO' expected in for statement  56:'IF' expected  57:'FILE' expected  58:Error in (bad expression)  59:Error in variable  60:Must be of type 'SEMAPHORE'  61:Must be of type 'PROCESSID'  62:Process not allowed at this nesting level  63:Only main task may start processes  101:Identifier declared twice resscode write errrSeg # Sep procss  proc func # base == leng == Sep proc refss Local seg refs public LC == const val == privat LC == glob def in  @@ 0LINKER,PHASE3,HEAPOPS,EXTRAHEAP,PASCALIO,EXTRAIOOno mem room to copy interfaceinterface read errrinterface write errLinking  # Code write errrPHASE33 Output file? *SYSTEM.WRK.CODE[*] Code open err Can't open Link map for next base LC = SYSTEM.WRK.CODE 102:Low bound exceeds high bound  103:Identifier is not of the appropriate class  104:Undeclared identifier  105:sign not allowed  106:Number expected  107:Incompatible subrange types  108:File not allowed here  109:Type must not be real  110: type must be scalar or subrange  111:Incompatible with part  112:Index type must not be real  113:Index type must be a scalar or a subrange  114:Base type must not be real  115:Base type must be a scalar or a subrange  116:Error inPHASE33R{DiD<W:       type of standard procedure parameter  117:Unsatisified forward reference  118:Forward reference type identifier in variable declaration  119:Re-specified params not OK for a forward declared procedure  120:Function result type must be scalar, subrange or pointer  121:File value parameter not allowed  122:A forward declared function's result type can't be re-specified  123:Missing result type in function declaration  124:F-format for reals only  125:Error in type of standard procedure parameter  126:Number of parameters does not agree with declaration  127:Illegal parameter substitution  128:Result type does not agree with declaration  129:Type conflict of operands  130:Expression is not of set type  131:Tests on equality allowed only  132:Strict inclusion not allowed  133:File comparison not allowed  134:Illegal type of operand(s)  135:Type of operand must be Boolean  136:Set element type must be scalar or subrange  137:Set element types must be compatible  138:Type of variable is no omma expecteddgnedgned.ASECT.ASECTocnee'undefined labelgnedgned.ASECT.ASECTocnee'operand out of rangened.ASECT.ASECTocnee'must have procedure nameASECT.ASECTocnee'number of parameters expected.ASECTocnee'extra symbols on source lined.ASECTocnee'input line over 80 characters.ASECTocnee'(unmatched conditional assembly directive'&must be declared in .ASECT before usedve'identifier previously declaredore usedve'improper formatiously declaredore usedve'illegal character in textlaredore usedve'&must .Et array  139:Index type is not compatible with the declaration  140:Type of variable is not record  141:Type of variable must be file or pointer  142:Illegal parameter solution  143:Illegal type of loop control variable  144:Illegal type of expression  145:Type conflict  146:Assignment of files not allowed  147:Label type incompatible with selecting expression  148:Subrange bounds must be scalar  149:Index type must be integer  150:Assignment to standard function is not allowed QU before use if not to a labelve'macro identifier expectedot to a labelve'code file too largepectedot to a labelve'backwards .ORG not allowedt to a labelve'identifier expectedallowedt to a labelve'constant expectededallowedt to a labelve'invalid structureedallowedt to a labelve'extra special symbolllowedt to a labelve'branch too farsymbolllowedt to a labelve'$LC-relative to externals not allowedelve'illegal macro parameter indexallowedelve'illegal macro parameter indexallowedelve'operand not abs 151:Assignment to formal function is not allowed  152:No such field in this record  153:Type error in read  154:Actual parameter must be a variable  155:Control variable cannot be formal or non-local  156:Multidefined case label  157:Too many cases in case statement  158:No such variant in this record  159:Real or string tagfields not allowed  160:Previous declaration was not forward  161:Again forward declared  162:Parameter size must be constant  163:Missing variant in declaration  164:Subsoluteter indexallowedelve'illegal use of special symbolsllowedelve'ill-formed expressionl symbolsllowedelve'not enough operandsonl symbolsllowedelve'&LC-relative to absolutes unrelocatableve'constant overflowsolutes unrelocatableve'illegal decimal constant unrelocatableve'illegal octal constantnt unrelocatableve'illegal binary constantt unrelocatableve'invalid key wordonstantt unrelocatableve'$unmatched macro definition directiveleve'include files may not be nestedctiveleve'unexpected end of inputtition of standard proc/func not allowed  165:Multidefined label  166:Multideclared label  167:Undeclared label  168:Undefined label  169:Error in base set  170:Value parameter expected  171:Standard file was re-declared  172:Undeclared external file  173:Fortran procedure or function expected  174:Pascal function or procedure expected  175:Semaphore value parameter not allowed  182:Nested units not allowed  183:External declaration not allowed at this nesting level e nestedctiveleve'.INCLUDE not allowed in macrosdctiveleve'label expectedllowed in macrosdctiveleve'expected local label in macrosdctiveleve'local label stack overflowcrosdctiveleve''string constants must be on single linee'%string constant exceeds 80 charactersnee'!cannot handle this relocate counttersnee'no local labels in .ASECTte counttersnee'expected key wordn .ASECTte counttersnee'string expectedrdn .ASECTte counttersnee'#I/O - bad block, parity error (CRC)rsnee'I/O - illegal unit numberrror ( 184:External declaration not allowed in INTERFACE section  185:Segment declaration not allowed in INTERFACE section  186:Labels not allowed in INTERFACE section  187:Attempt to open library unsuccessful  188:Unit not declared in previous USES  189:'USES' not allowed at this nesting level  190:Unit not in library  191:Forward declaration was not segment  192:Forward declaration was segment  193:Not enough room for this operation  194:Flag must be declared at top of program  195:Unit not importabCRC)rsnee'I/O - illegal operation on unitCRC)rsnee'I/O - undefined hardware errortCRC)rsnee'I/O - unit no longer on-lineortCRC)rsnee'!I/O - file no longer in directoryC)rsnee'I/O - illegal file name directoryC)rsnee'I/O - no room on diskme directoryC)rsnee'I/O - no such unit on-linerectoryC)rsnee'I/O - no such file on volumectoryC)rsnee'I/O - duplicate filen volumectoryC)rsnee'!I/O - attempted open of open fileC)rsnee'%I/O - attempted access of closed filenee'#I/O - bad format in real or integerlenele  201:Error in real number - digit expected  202:String constant must not exceed source line  203:Integer constant exceeds range  204:8 or 9 in octal number  250:Too many scopes of nested identifiers  251:Too many nested procedures or functions  252:Too many forward references of procedure entries  253:Procedure too long  254:Too many long constants in this procedure  256:Too many external references  257:Too many externals  258:Too many local files  259:Expression too complicated e'I/O - ring buffer overflowr integerlenee'#I/O - write to write-protected disklenee'I/O - illegal block numbercted disklenee'I/O - illegal buffer addressed disklenee'$nested macro definitions not allowedenee'`=' or `<>` expectedions not allowedenee'"may not equate to undefined labelsedenee'%.ABSOLUTE must appear before 1st procnee'.PROC or .FUNC expectedefore 1st procnee'too many proceduresctedefore 1st procnee'#only absolute expressions in .ASECTocnee'must be label expressions in .ASECTocnee'no op 300:Division by zero  301:No case provided for this value  302:Index expression out of bounds  303:Value to be assigned is out of bounds  304:Element expression out of range  398:Implementation restriction  399:Implementation restriction  400:Illegal character in text  401:Unexpected end of input  402:Error in writing code file, not enough room  403:Error in reading include file  404:Error in writing list file, not enough room  405:'PROGRAM' or 'UNIT' expected  406:Include file not le     erands allowed in .ASECT.ASECTocnee'offset not word-aligned.ASECT.ASECTocnee'LC not word-alignedgned.ASECT.ASECTocnee'illegal immediate operandSECT.ASECTocnee'index must be WRe operandSECT.ASECTocnee'close paren ')' expecteddSECT.ASECTocnee'indirect & autoincr must be WRASECTocnee'autoincr must be WR indirectWRASECTocnee'comma ',' expectedR indirectWRASECTocnee'no operand allowedR indirectWRASECTocnee'illegal map fileedR indirectWRASECTocnee' WR expected fileedR indirectWRASECTocnee' SALMB SHLMB SHRMB SARMB  XOP , TB SZCB PSZC @SWPB STWP  STST  STCR 4SRL SRC SRA SOCB SOC SLA SETO SBZ SBO RSET `ORI ` MOVB MOV LWPI  LREX LMF  LIMI  LI  XOR (CZC $COC CI  CB C X RTWP R0 R1 R2 R3 R4 R6 R7 R8  undefined labeloperand out of rangemust have procedure namenumber of parameters expectedextra garbage on lineexpectedinput line over 80 charactersnot enough .IF's80 characters&must be declared in .ASECT before usedidentifier previously declaredore usedimproper formatiously declaredore used .EQU expectedatiously declaredore used&must .ER9 R10 R11 R12 R13 R14 R15 A AB ABS @AI  DEC DECT @INC INCT MPY 8 NEG S `SB pBLWP BL B @R5 DIV < JEQ JHE JGT JH JL JLE JLT JMP JNC JNE JNO JOP JOC ANDI @ CKOF CKON CLR IDLE @INV QU before use if not to a labelmacro identifier expectedot to a labelword addressed machinetedot to a label#backward .ORG currently not allowedbelidentifier expectedntly not allowedbelconstant expectededntly not allowedbelinvalid structureedntly not allowedbelextra special symboltly not allowedbelbranch too farsymboltly not allowedbelvariable not PC relativenot allowedbelillegal macro parameter indexllowedbelnot enough macro parametersexllowedbeloperand not abs @LDCR 0LDD LDS NOP oluteametersexllowedbelillegal use of special symbolslowedbelill-formed expressionl symbolslowedbelnot enough operandsonl symbolslowedbel&cannot handle this relative expressionconstant overflows relative expressionillegal decimal constantive expressionillegal octal constantntive expressionillegal binary constanttive expressioninvalid key wordonstanttive expression%unexpected end of input - after macroninclude files may not be nested macronunexpected end of inputOUT IN JC rST REPNZ REPNE REPE REPZ REP IDIVMB DIVMB IMULMB MULMB JNC sTESTBIM XORBIM 0ORBIM ANDBIM CMPBIM 8SBBBIM SUBBIM (ADCBIM ADDBIM MOVBIM DS SS CS ES BH DH CH AH BL DL CL AL DI SI BP SP BX DX e nested macron(this is a bad place for an .INCLUDE file'only labels & comments may occupy col 1eexpected local labelts may occupy col 1elocal label stack overflow occupy col 1e#string constant must be on one lineol 1e%string constant exceeds 80 characters 1eillegal use of macro parameterracters 1eno local labels in .ASECTmeterracters 1eexpected key wordn .ASECTmeterracters 1estring expectedrdn .ASECTmeterracters 1ebad block, parity error (CRC)rracters 1ebad unit numberty error (CRC)rrCX AX LOCK STOSW STOSB LODSW LODSB SCASW SCASB CMPSW CMPSB MOVSW MOVSB REPZ1 REPZ0 RETL RET CALLL CALL JMPL JMP OUTW OUTB INW INB ESC INT RCR  RCL  ROL ROR  SAR  SHR  SAL  SHL  NOT  IDIV  DIV  IMUL  MUL  NEG  DEC H INC acters 1ebad mode, illegal operationC)rracters 1eundefined hardware errorionC)rracters 1e$lost unit, unit is no longer on-lines 1e(lost file, file is no longer in directorbad title, illegal file name in director#no room, insufficient space on diskectorno unit, no such volume on-linediskectorno file, no such file on volumediskectorduplicate filech file on volumediskector(not closed, attempt to open an open file(not open, attempt to access a closed fil(bad format, error in reading real or in @ TEST XOR 0OR AND CMP 8SBB SUB (ADC ADD LES LDS LEA WAIT STI STD NOP STC HLT CLI CMC CLD CLC IRET INTO CWD CBW AAS ?DAA 'AAA 7POPF PUSHF SAHF LAHF XLAT AAM AAD XCHG POP PUSH MOV LOOPNZ LOOPNE t nested macro definitions illegall or int'=' or '<>' expectedions illegall or intmay not EQU to undefined labelsll or int$Declare .ABSOLUTE before first .PROC int eclare .ABSOLUTE before first .PROC int eclare .ABSOLUTE before first .PROC int eclare .ABSOLUTE before first .PROC int eclare .ABSOLUTE before first .PROC int eclare .ABSOLUTE before first .PROC int eclare .ABSOLUTE before first .PROC int eclare .ABSOLUTE before first .PROC int eclare .ABSOLUTE before first .PROC int eclaLOOPE LOOPZ LOOP JS xJPE zJP zJO pJNS yJPO {JNP {JNO qJNZ uJNE uJNG ~JLE ~JNGE |JL |JNL }JGE }JNLE JG JZ tJE tJCXZ JNA vJBE vJNAE rJB rJNB sJAE sJNBE wJA wDAS /INCMB DECMB FWAIT SEG &NOTMB NEGMB ROLMB  RORMB RCLMB RCRMB      re .ABSOLUTE before first .PROC int eclare .ABSOLUTE before first .PROC int eclare .ABSOLUTE before first .PROC int$Had label, openparen then illegality intExpected absolute expressionlegality int&Both operands cannot be a seg registerntIllegal pair of index registersegisterntHave to use BX,BP,SI or DIstersegisterntIllegal const as first operandsegisterntThe first operand is neededandsegisterntThe second operand is neededndsegisternt!Expected comma before 2nd operandisternt(Registers sta$CURSOR $EQUAL O.RRnd alone except in indirectOnly 2 registers per operand in indirectExpected label or absolutend in indirect Illegal to use BP indirect aloneindirectCloseparen expectedndirect aloneindirect Cannot POP CSpectedndirect aloneindirectCannot have xchg r8 with r16loneindirectSegment registers not allowedoneindirect%ESC xtrnl op on left must be const<64ect(Only one of operands can have seg overriRight operand must be a mem loceg overri&Left operand must be a 16 bit registerri%Left op must be mem or register alonerriOp cannot be a seg or immediate alonerriCount must be 1 or in CLmediate alonerri#A byte constant operand is requirednerriOp must use () or be a labelequirednerri"LOCK followed by something illegaldnerri#REP precedes only string operationsnerriNot Implementedly string operationsnerriExpected a labely string operationsnerri xpected a labely string operationsnerriOpen paren expectedtring operationsnerri#Expected register alone as right opnerri%Segovpre then regalone, thatsPROGRAM TEST;   VAR Y, X : PACKED ARRAY [0..511] OF 0..255;  FX, FY : FILE; %COUNT, I, BLOCK : INTEGER; %SX, SY : STRING; %  BEGIN "WRITE('1ST FILE ? '); "READLN(SX); "WRITE('2ND FILE ? '); "READLN(SY); "RESET(FX,SX); "RESET(FY,SY); "WRITE('# OF BLOCKS ? '); "READLN(COUNT); "FOR BLOCK := 1 TO COUNT DO $BEGIN &IF BLOCKREAD(FX,X,BLOCKREAD(FY,Y,1)) = 0 THEN (BEGIN *WRITELN('END OF FILE '); *EXIT(TEST); (END; &IF X = Y THEN (WRITELN('BLOCK #',BLOCK - 1,' IS OK') &ELSE (FOR I :=  illegalrriOnly one operand allowedthats illegalrri&Operands are AL,op2 for byte MUL, etc.ri'SP can only be used with the SS segmenti#MOVBIM only for immediate to memorymenti&BIMs must be immediate bytes to memoryti%Seg override on repeated instr not okytiSegment Register expectedinstr not okyti!(8087) Invalid two-operand formatt okyti$(8087) Invalid single operand formatkyti(8087) Improper operand field formatkyti"(8087) Instruction has no operandsatkyti'No override of ES on string destinati0 TO 511 DO *IF X[I] <> Y[I] THEN ,WRITELN('BLOCK ',BLOCK - 1,' BYTE ',I,' 1ST = ',X[I],' 2ND = ',Y[I]); $END;  END. " oni&Interseg needs 2 const or extrnl opndsni!I/O port must be immed byte or DXopndsni$I/O source/dest reg must be AL or AXdsni3TEST  &RAM" @@ @  @@ @ 0F2XM1 FABS FADD FADD LFADD FADDD kFADDP dFADDQ FBLD FBSTP  FCHS uFCLEX FCOM &FCOM FCOMD FCOMP FCOMP FCOMPD FCOMPP FCOMPQ FCOMQ eFDECSTP *FDISI FDIV FDIV FDIV FDIVD FDIVP FDIVQ FDIVR FDIVR FDIVR FDIVRD FDIVRP FDIVRQ FENI WFFREE ,FIADDD FIADDW FICOMD FICOMPD FICOMPW FICOMW 2TEST -r)Urs p}Ps ps ps pTPs ps p)}rpTrps pSsps pSQQ0)tptps pspp0s pQsp!s pspRR՜R˧R˧y%s pQsp)s pRsp-s pR˧sp1s pR˧spspRRZQQr)r 1STFIDIVD FIDIVRD FIDIVRW FIDIVW FILDD FILDQ FILDW FIMULD FIMULW SFINCSTP FINIT .FISTD  FISTPD FISTPQ FISTPW FISTW FISUBD FISUBRD FISUBRW FISUBW FLD FLD1 *FLDCW FLDD FLDENV FLDL2E FLDL2T cFLDLG2 ,FLDLN2 TFLDPI vFLDQ &FLDT hFLDZ FMUL FMUL FMUL FMULD dFMULP FMULQ dFNCLEX `FNDISI `FNENI `FNIN FILE ? 2ND FILE ? # OF BLOCKS ? END OF FILE BLOCK # IS OKKBLOCK  BYTE  1ST =  2ND = EXTRAIO PASCALIOFILEOPS  IT ` FNOP FNSAVE BtFNSTCW BlFNSTENV B:FNSTSW BFPATAN dFPREM FPTAN eFRNDINT FRSTOR FSAVE FSCALE FSQRT FST FSTCW 2FSTD FSTENV FSTP aFSTPD  FSTPQ FSTPT FSTQ FSTSW FSUB FSUB MFSUB FSUBD YFSUBP FSUBQ DFSUBR TFSUBR FSUBR FSUBRD KFSUBRP  FSUBRQ mFTST FXAM FXCH FXCH FXTRACT FYL2X FYL2XP1       IV1LIBRA - @yX T&4S005ACv72pkT:+DD2pT377u777$7L77aA7. Te$bh   |hցr: 6b b2 c q v n,r tmr gr ՠ^Ւ Amr u (5:u 54;8u u prEՎFFr )sFFr  FFs&u pupu p  .`u p < DLu piOu pi!"h!r Ā'!w Ā8!w Ė+i!Ry!rro rtu pTsHrbPu pu pbh q p Xqrpup os>rbPu pu pbh  r up  u up pup p\允Ճ plh $ asa ap h܆u@u u up pup pn ps lh $ asa ap hs uBu u up pup p~允Ղ pmh % asa ap h݆uDu u up pup pmr奁u p u px.rbPu pu pbrup 9.rbPu pu pbrup  rA  rFu p rbPu pu pbh    rup wog_r奁u p u p1r奁u p u pքr!Qmr 2.+#ru p u pupih ! ps mh % asa ap hs uFu u up pup pw 允 pnh &Ո as csa짆 aȊ cȈ ca짆 aȊ cȈ c hruHu u up pup p ps nh &Ո as csa짆 aȊ cȈ ca짆  r up|tp hۖ  j"(ն"r i!)՞"!!h tp cs es3c짆ڡctp tpetpetp3c짆ڡctp tpetpetp!i\"jDrcses3c짆ڡctp tpetpetp3c짆ڡctp tpetpetp01r +`Pu pu p`***r#+* 6+Or+,aȊ cȈ c hrs uJu u up pup p 允Տ pmh %+ asa pa p hІuLu u up pup p允z ps mh %+ asa pa p hs uNu u up pup p 允Տ pmh %+ asa pa  A L_ Y d,pp sp9t pp pru pu pru pupu pupu pupu pupru p u pu p u p u pupu pih ! r hM1 1˥rY0)˥p hІuPu u up pup p允z ps mh %+ asa pa p hs uRu u up pup p Tu p p6ih !( uWu p p hӊeih !( u[u p p hih !( u_u p p hӆup pmFk#cpFh Fղ j0I˥01r0 0I˥r+0&˥0I˥01r0 0I˥r101 1˥r,0I&˥0I˥01r0 0I˥r00I˥r0 0I˥r1II˥1˥01r80I110"0I˥r01 0I˥r0II˥1˥01r|100i!#x#!#xjh "! $ h<.`Pu pu p`++++%Q6Wr`Pu pu p`>+`짃Fid!ȅ#spp#pp#pp#pp#pp#pp hGնjid!ȅ#pp#pp#pp#pp#pp##ppFjij!o!kh #eÅ p3u  uAu uupOpp h"m`짋`진++1+˥`M+`짆`짆ڡ՞`짃U`지A *'`짃Z`지a * `지0*`짃a`지A **)`짃f`지a ** `지0***++1+˥ m+ֆ +r01r+.,,. )),,.000I˥01r`u p i`rj"`!E100!Ț!tp tp01r))10(01r"҉r01r 01r!"p"ˁ"p_u !umu "uup{pppjpki!#"Շođ Iu #uu tu uppp#k0#`u p  Y yirp`$#r"u p u p'#r!u p u p8#r u p u pr u pupupu pupu pup u pupupu pup     `u p i`rl$ ! դ  0k"   A k a k aAh100j00"˛"˧#Ȋ#"˛"˧"˧#Ț tp01r)01r$!r01rF!r01rh " ,-*&' ()և Q2.d!vpvpvp-#*r .jb3! bDO bPjb\! bmO bPPWPۃOěO ěO  Byte 0 = Most_Sig_Bytee Byte 0 = Least_Sig_Byte Open : True Open : Falsee Unit I/O : True  Unit I/O : False Unitnumber : Number of bytes : Number of bytes is out of range..What pattern : Invalid format.Invalid format.~~~~6Invalid format. Hexdigits ::= 0 .. 9 , A .. F, a .. f Ch ! !7Invalid format. Must have prefix character, 'C' oděOěO' jh " 0 hjh " A hI˥˥i!P᥃tPsrqp᥃oFPEDCB᥃A*X$@vĆv솃vrs/.Oru p aAռ  33 g#c$_2.2r 'H' 2CHARACTERS : , quits Invalid character6HEXADECIMAL : 0 .. 9 , A .. F , a .. f , Quitss~ Invalid inputX$CU!EDIT : D(ump, G(et, R(ead, S(ave,. M(ix, T(ype, I(nfo, F(or, B(ack, ? IV.0.bb!EDIT : V(iew, W(ipe, Q(uit, ? . LTYPE : C(har, H(ex, F(ill, U(p, D(own, L(eft, R(ight, , Q(uittHValid format : C or H Jr2.5""% !ֈ$ ;ֈGQ.vvv > %Null string. Value defaults to zero.(String too long. Value defaults to zero..)Error in string. Value defaults to zero.2Integer constant overflow. Value defaults to zeroo-3276880  FILENAME : < c/r for Unit I/O > !Error opening file. Ioresult is File opened. )Unitnumber : 4, 5, 9 .. 12 ( 0 quits ) ~~"0The display will be in characters, if printable..*The display will be in hexadecimal digits..BVError. File not open. WJcrP) w j 2   ~ ] 7|>A V?&]K> /STRINGOP GOTOXY FILEOPS PASCALIOEXTRAIO  "Error clearing unit. Ioresult is File opened. Filename: !Error opening file. Ioresult is File opened..#Error reading block.U Ioresult is #Error reading block.B Ioresult is #Error reading block.B Ioresult is | | | | | | | | | | | |  : : : ERROR in I/O #1. Ioresult is ERROR in I/O #2. Ioresult is ERROR in I/O #3. Ioresult is ERROR in I/O #4. Ioresult is ERROR in I/O #5. Ioresult is ERROR in I/O #6. Ioresult is ERROR in I/O C16BITCOSCREENOP #7. Ioresult is ERROR in I/O #8. Ioresult is ERROR in I/O #9. Ioresult is ERROR in I/O #10. Ioresult is ERROR in I/O #11. Ioresult is ERROR in I/O #12. Ioresult is ERROR in I/O #13. Ioresult is CORE DUMP Startbyte :  Number of valid bytes : ERROR in I/O #14. Ioresult is CORE DUMP Startbyte :  Number of valid bytes : ERROR in I/O #15. Ioresult is  Block number [  ] of the file ERROR in I/O #16. Ioresult is Error occurred reading block !Do you want to continue ? (/C16BITCOg%1˧i%0˧h ! i!i! i$! $5!!ikkj!$"솁! ˧"j! i#$"-Ȗ $ %˧hki!#$!솁 ˧ h!i%˧hki!#$!솁 ˧ h!i=! !"˧!"˧Ȗ&'1˧hmj"%&"솁 ˧ h"j'0˧h&솁&지0 ˧ hmj"%&"솁 ˧ h"j+$%˧hki!#$!솁 ˧ h!i% y/n )@@TrueeFalseTrueeFalseTrueeFalseDUMP : D(o, Q(uit  A) Input File  B) Starting Block  C) Number of Blocks  E) Read from Memory  F) Starting Byte  G) Number of Bytes  H) Output File  I) Width in words @ Flip Both  J) Decimal  K) Hexadecimal  L) Characters  M) Octal  N) Decimal bytes  O) Octal bytes ˧hki!#$!솁 ˧ h!i$%˧hki!#$!솁 ˧ h!i%˧hki!#$!솁 ˧ h!i0h1˥ ˥h˥ ˥5 jh " ˀ0 h jh " ˀA h˥˥ia˧2˥˥ ˥˥kr prp5r prprp Mr prparpr pa˧Ȇa˧h Ur p!rpYr pr p/sprp! ҉ S) Space between Lines  T) Space between Groups True FalseTrueeFalseTrueeFalseCONSOLE::#1:CONSOLE::#1:Input file is not opened.CONSOLE::#1:#Type < space > to redisplay promptsOutput file is not opened..@@TrueeFalse,Value out of range. Maximum block number is Input file must be opened first..!Number must be greater than zero. Input file must be opened first..TrueeFalseCOREREAD not set.COREREAD not set. Value out range. Defaults to 15^r prparpr pa˧Ȇa˧h fgr p!rpkr pfr p/sprp! ҋpr prparpr pa˧Ȇa˧h bwr p!rp{r pbr p/sprp! ҋr prparpr pa˧Ȇa˧h r p!rpr p r p/sprp! ҉r prparpr pa˧Ȇa˧h r p!rp..TrueeFalseTrueeFalseATTY'py: 0: 2: 4: 6: 8: 10: 12: 14: 16: 18: 20:: 22: 24: 26: 28::Blocknumber : /Blocknumber is out of range. Highest value is Read was successful..Read was successful..Have reached end of file.Read was successful..Already at beginning of file.$Error saving buffer.U. Ioresult is Block saved..$Error saving buffer.B. Ioresult is $Error saving buffer.B. Ioresult is Block saved..File : Length : Current :     r pr p/sprp! ҉r prparpr pa˧Ȇa˧h r p!rpr pr p/sprp! ҉r prp 00-327688     2DEBUGGING PROCEDURE FOR THE 16 BIT CONVERSION UNITT.TYPE INTEGER NUMBERS - A 10 WILL QUIT THE LOOPPCHARACTER TESTTNUM = CHAR = HEXADECIMAL TESTTNUM = HEX = INTEGER TESTTNUM = INT = OCTAL TESTTNUM = OCT = INTEGER BYTES TESTTi!5!! !k!!i#" #j!k!h"*"l$m$ #%p#%k"h"j#h Սi!z!y!zp!ĭ!y!zt t4!x4!x!y!zt !y!ztt tlZh" "x%"xi!z$ $!y# h""xĊіlk#$g#i!j"m!%z%x !j" h m"%z%x #k#h " i  Ȯ ! hKNUM = DEC = OCTAL BYTES TESTTNUM = OCTB = FINISHED TESTINGGNbS e EXTRAIO PASCALIO  h p  24 pih ! 4 h3ĭji!p!3I!"jp3x 24hȭ 1"u"p p1v-234xs301t tt 1tt t 5v1]vr0 v1v >>>>  >>>> disk error ~pascalio,compressorbuffer allocatiCOMPRESSINITIALI `# COMPRESSyJTNN&UTILST:(vtԑk rtT,hstԑT3on hassles.insufficient memory space to read in code fileewhile reading code filetoo many procedures in segmenttno procedures in segmenttprocedure code not assemblyinput code file not linkeddinput code file not linkedd3code may not contain base or interpreter relocation Procedure ##: H - H  bytessbad relocation informationnwhile writing out codee Highest code address is H.. Output file is bytes long:(?P6Ds$ EXTRAHEA STRINGOPFILEOPS EXINITIALIEy@lj"$&m"i!h%!k%!% % #"jߖYst t t ttt tt+t `t J !p Rڥ ut39tZt XPt t XopXqj"̚tpt ePt t e}p evp# ePw~Uwvpңtt /Pt t t/p//eP1/vp"p w/]wq up pqTRAIO PASCALIOHEAPOPS  ik#;#凁! q i#l#k! q$xy$Ɂ]ڥ0123456789ABCDEFAssembly Code File Compressor IV.0 [g6] Type "!" to escape< Do you wish to produce a relocatable object file? (Y/N))@@( Base address of relocation (hex) : ! File to compress : !.CODE$ Output file ( for same) : ! opening file while reading segment dictionaryy&input code file is not liSMALLCOMCOMMANDI  #&&_h4.02`L*)L_&:_ .nked assemblyy&input code file is not linked assemblyy "  uses {$U kernel.code} kernel;  type litrecp=^litrec; %litrec=record , next:litrecp; , size:integer; {# of words of whole record} .bytes:packed array[0..1]of 0..255;{contains chars accessed r-} ,end;  var myprogin,mysysin,oldinput,oldoutput,monitor:fibp; $chainlist,progliteral,sysliteral:litrecp; procedure writemonchar(ch:char); function getredirectchar:char;  procedure updatebools; "procedure remliteral(var listhead:litrecp); "  implementation COMPRESSyC)`*Put `t tp+)`*Put ,t u`t tp,*a,Pat h+"++Y+ u+ + h Y+ u+ + h-P+b-P,/b/Obih !Db ,,xb 0Ċ"b ,,xb A Ċ/ h.f2 i i2  i  i4  i  i2! ȭ! Ȋ! ȭ! Ȗ3"!h7"!SMALLCOMD6543x1:17W!xh!!xx`u!xh       p!664435jR4/4`t 4y  h4z43 r r4  ap 4 ap j!0 s(i==pi=.J$ UPERMHEAPPASCALIOEXTRAIO COMMANDI "!h'"!"!h"!"!h"!h kh"!h2"`ȭ"`Ȋ"`ȭ"`Ȗ" !h4"`ȭ"`Ȋ"`ȭ"`Ȗ i! %5h !2  6u p pJ  k#dVf#h o'(<' m%), %n&&&l&& &$ %m'o i (P#j"s" )")!)"i y{j       type bigstring=string[255];  var havechain,inredirect,outredirect,monitoropen,inmonitor:boolean; "function redirect(command:bigstring):boolean;  procedure exception(stopchaining:boolean); "procedure chain(command:bigstring); " IVDCODE  Sv~,!P"P w# p p p5 p` p  p$h#ji!"~`!˧ p!iݖke pj"/"`ti#? pe p pke p" pD p!ld˧d˧ pd˧d˧~e#d˧Ȋe#ˀ-d˧d˧~e#d˧Ȋ e#ˀ-#k"j)#j " pe p p petiuj3xh pF pS p pT p  pX p p  pk p ! po p!ˏ pw p!! p p!" p~ p pn p pV p p p3 p p p pրɆ pS p p p p p1Q pS p p p p"procedure initcommand;  procedure startmonitor; "procedure stopmonitor(saveit:boolean); "procedure getchainline(var command:bigstring); "  implementation  p˄ uh )h 1Q pS p$ p p+ p p p. pS p3 p p p: p, p> p+ pF p** p pM p) pS p( p pY p  p_ p pt(d p p p( pdsk pd pɋ  pɀ⼀COMMANDIf+1 u _ u `Pu u `A*-r+*-pć*+s*`spu *r*+1,h!ssp u `rDĆĆĆĆ:ĆĆĘ:v# $x$v:#j`"r " # #p$xi!$ Ċ !x!xi! vޖ pv`` 0"!xh x"!xxA! xs" xۀҀռۀ p pɀ⼀ۃn"3 p p p p  p\ɀ"3 p p p p p  pցvj""˧"j놁 p q .)`*P` p+  p pxi!Վ p} S p pî{h!! i!=b! pb p p p!i p !xx!x!x r "!xxĖX0[P]ZYxk0}b-rab-p"!s"0Ysp"ld0Pwd'UwdYsp+ZY Z#xYxx Yx"#"Ċbr]ZY v\<@p  [ [ ii/W[h=W hi?hWW ""WW h, ! Ȋ !!iWW ""ԯ!ȭWX ґ ґ "*"!  A)`+P҈ p p p pun p S p pm`u `-$ p p` p pm% p p  p pu . p S p p`u ` p$  p% p p% p p& p p% p p& pV$$    ւ"( p% p- p& p2 p' 7.҂+,҂,-`P* -P.[݄۬͛<@ZччZ`-(ъ℀.02345UWՁ WWWXX ⼃6 XXX =խU `:(чч VXW^VWXZYYZDY SS; SaASSYWVYYVvXXUՇU "  d` : $$= B G L ւQW %\ _ b ւdi & p$m p' p`x p&  ) *+0( p `u ( `(x p* ˊւr p$ p p 1  p p p p pS p p p p p` p ˧kj"#"˧"ja ]Y UQ 0i` p %! 0i` p XW`ZYYZ=[WYSSC SaAS`YSȇYYXWyU `K(<@@LݖS ]file already openWrite to what file? can't open filecan't close filee.text   PIIPOOIOPL  *USERLIB.TEXTi=o=pi=po=i=""pi=""qG bW#dSTRINGOPSMALLCOMPASCALIOEXTRAIO FILEOPS PERMHEAP  ! 0ih p!ւ + pG )`*P` p+ 2h3`˧ 69< p p ph# p# pO#n p# p# < p#u p# ph c# p#: p# p#S p# p3i#!x p#!y pi! ɊHB90' փ!Ɋuof]TKB9.zCdIVDCODE IVMGBLS IVMPVTS IVMDCD1 IVMDCD2 IVMDCD3 22 ( ,( @Copyright (c) 1982 SofTech Microsystems IV.0 [c.3] 31-JUL-82 WPF     0' փ#! pi!Ɋ-'  ք%! &'! ()*!1íj#"x p#"y p#"z p#"{ p$#' p#í p#' p# . p#+ p# p#/ p# p# p 3 p32ˆ3ugSgíi!ˆ3uա h +Տ g!3 3 IVMDCD2 IVMDCD1 IVMGBLS  S S gH !u9ubu 3&bb6冃3 g hk!iN!ˆ3uu ) p: p p0Mnh &H u6u,eti˧ok#'#˧#k hh  p ˆ3u6 h"W p p p0 Ӳ00h p p0o 00h uj" ull$ eti 8 ps p  pIVMGBLS %-rsr *** FILEOPS  | p pք0Ձ2  p, p, p pUP p pUU,PUuUԈ,UPU p p p pUP p pU+UPUUP U peUUU pUը  ,IV_MGBLS,IV_MPVTS,IV_MDCD1,IV_MDCD2,IV_MDCD330123456789ABCDEF#UCSD Code File Decode-IVMPVTS )6"i`a`a kP  s *** IVMGBLS  r IV.0 [c.3]press spacebar to continue...: Constant pool for segment Block::% Block offset: 0 Seg offset: 0Block:: Block offset: Seg offset:no segment in dictionary entryy$procedure dictionary pointer screwupp > number of procs in segmentIO error on fileeProcedure in assembly languageezsegment procedure0 not available in P-Code form for disassembly....segment procedure0 not available in P-Code form for disassembly.... Disassembling segment procedure  ....yIVMDCD1 tla VK@5*"& *.26:>BFJNRVZ{^qbgf]jSnIr?v5z+~! ր#wlaVK@5* Segment: Procedure::Block:: Block offset: Seg offset: Data size:: Exit IC:: OffsetHex codee exit code::): GInterface text for segment trouble reading interfaceno interface text to list#Segment reference list for segment : )no segment reference list in this segmentLinker information for segment  EOFMARKK CONSTDEF PUBLDEF baseoffset== pubdataseg== GLOBDEF homeproc== icoffset== EXTPROCC EXTFUNCC SEPPROCC SEPFUNCC srcproc=   {qg]S#I'?+5/+3!7; ?ցC5imquy}wlaVK@5nparams= koolbit=TRUEEFALSE GLOBREFF PUBLREFF PRIVREFF CONSTREF format==WORDDBYTEEBIG nrefs= nwords== ((((wD)no linker information to list There are procedures in segment 7Procedure Guide: A(ll), #(of procedure), L(inker info),@ C(onstant pool), S(egment references), I(nterface text), Q(uit))0sxx* {qg]S I ?5+!! %ւ)!⼀ۀۃ[ a!c! eR!/ iC!? m4!g q%!o u!w y }! !ƲLDCB LDCI LCO SEX: LEASTMOSTT$ significant byte first NEXT PAGE:: to quitt , "$" for ]: $listing file [CONSOLE:: , "$" for ]: $CONSOLE::CONSOLE::#1:&KXg]TE,  FILEOPS EXTRAIO PASCALIO GOTOXY EXTRAHEAIVMDCD     TE LEBYTE GEBYTE SRS SWAP TRUNC ROUND ADR SBR MPR DVR STO MOV DUP2 ~ #.9DOZep{ADJ STB LDP STP CHK FLT EQREAL LEREAL GEREAL LDM SPR EFJ NFJ FJP FJPL XJP IXA IXP STE INN UNI INT DIF SIGNAL WAIT ABI NGI DUP1 ABR NGR LNOT IND INC EQSTR LESTR GESTR ASTR CSTR INCI DECI SCIP1 ! l$ $- $˧ $x$l՛- !˧% !lgtk$# $x$l$- $˧#$!- $xĊ-%  !  -pah-x & p dtk#dth$'' վ&m#'dtj""#բ"-xˏ%%%"%"dt%x""%""%x 'ˑ %"dt-vp    SCIP2 TJP LDCRL LDRL STRL CNTRL EXPRL &1~g~JSTRINGOP FILEOPS EXTRAIO IVMPVTS IVMDCD2 IVMDCD1 IVMGBLS  %ɀ_ĊC%ɀo %%ɀgĊ-%ɀw%%%ɀo%Ċ %%ɀxĊ%ʋ%ɋ%%%ɀ⼀ҀԼۀ.%%%Ċ%%%~ %~ S%%%ɀAd%i!dj!dk!!#"nh & dk# # h%%%ċ%%%ċ%%%%ċ%%%%ċ%%%ɀ⼀%%%~ %~ `%%%%ĊD%h 1% %% %%  %ĊO^jր% %ɀ  %  #ĚՇs-i!y$$[!x$h$ˏl# - up #" -$xtm -$xmc$ĚՐ|-k#y%%b%i#x%h%ˏm$ - up $ě-%xj! b˧n b˧njZkNZkZZZZZ111ZZZZZkZZZgP cvEXTRAIO IVMPVTS IVMDCD1 IVMGBLS   {TeleTalker : Source for VS's uEngine TeleMail Talker of 11-Mar-81}  PROGRAM TeleTalker;   CONST (Title = ' N E C A P C T e l e T a l k e r'; ( (Version = ' for SCI on 09-Oct-82'; ( (Copyright = 'Copyright (c) 1980, Volition Systems, Inc.';   (*  UPDATE LOG:  03 Sep 82 BD Fixed S(end so as not to send DLE's in line  30-Jun-81 added null and dle to allowable input chars  12-May-81 Test log entry  11-Mar-81 Added Tab and FF to TextCharSet  11-Mar-81 Fixed bug in BlcIVMDCD3 Lb-i!b!b!xu!i߀`i!b!b!xu!ibpui!Y`!A瀐!xućyućzuć{u!iik"h xV x- xvp x-!p! "ˏkj  !!˛- !ˏj`t rV.WPw.wpjb.P bU bkWrite ... now we don't lose chars  09-Mar-81 Modified for PDQ-3 and DLV11-E  11-Feb-81 Cooked it for LSI-11 and DLV11-E for David  11-Feb-81 Fixed for Joel's box...uses KbStat not UNITBUSY(1) anymore  16-Nov-80 Try to shut sender off while I'm doing blockread  12-Nov-80 Dle expansion broken out into main loop, Fixup NOTCts output loop  12-Nov-80 NoCrLf on output for Unix so DLEs are expanded {rather fast I'm afrai   CONST Contd. *) (BlkSz = 512; (BlkSzM1 = 511; w>ppGih- v&! Ě, uhh!ih !ԽpY X "˧h "˭ !˧ȭ ! Ȉ "xh " !xĈ ! Ė=%i!!k#j#$U"$! #x "x"h#h#h x !x$k ! i!!k#j  ydgtm%gth'Ri p l$ 0%$gtj"!i !$Ȅ !"$l! l$ $!ː$l! l$ $ $ː$l     (BreakChar = 5; (StopChar = 19; (StartChar = 17; (XWait = 128; (Dle = 16; (NoControl = 12; (NoCrlf = 8;  inrem = 7;  outrem = 8;   TYPE (Block = PACKED ARRAY [0..BlkSzM1] OF CHAR;  WhoAmI = (Originator, Answerer); 6 6  VAR (C : CHAR; (TermDone : BOOLEAN; (Ch : PACKED ARRAY [0..0] OF CHAR; (Sending : BOOLEAN; (Recording : BOOLEAN; (Frozen : BOOLEAN; (Chr0 : CHAR; (I : INTEGER; (J $PROCEDURE UpCase ( VAR Str : STRING ); $VAR I : INTEGER; $BEGIN ,FOR I := 1 TO LENGTH (Str) DO 0IF Str[I] IN ['a'..'z'] 4THEN Str[I] := CHR( ORD(Str[I]) - ORD('a') + ORD('A') ) ,END; $PROCEDURE RClose; $BEGIN ,RcvBlk[RcvBufPtr] := CHR(13); ,WHILE RcvBufPtr < (BlkSzM1) DO BEGIN 0RcvBufPtr := RcvBufPtr + 1; 0RcvBlk[RcvBufPtr] := Chr0 0END; ,BlkWrite; ,IF ODD(RcvFilPtr) THEN BEGIN 0FILLCHAR (RcvBlk[0], BlkSz, Chr0); 0BlkWrite 0END; ,CLOSE (RcvFile, CRUNCH) ,END;   PROCEDURE R : INTEGER; (TextCharSet : SET OF CHAR; (DleState : (DleStIdle,DleStWaitingCount,DleStExpanding); (DleCount : INTEGER; (XWaitState : (XWIdle, XWWaiting, XWReady); (XWaitCnt : INTEGER; ( (RcvFile : FILE; (RcvFilPtr : INTEGER; (RcvBlk : Block; (RcvBufPtr : INTEGER; (RcvName : STRING; (XmtFile : FILE; (XmtFilPtr : INTEGER; (XmtBlk : Block; (XmtBufPtr : INTEGER; (XmtName : STRING;    Procedure ForceStatus;  Var A : Char;  Begin ecOpt;  BEGIN (IF Recording ,THEN BEGIN 0WRITE ('Now Recording ', RcvName, 9' C(lose, P(urge ? '); 0READ (C); 0CASE C OF 2'c','C': BEGIN 6RClose; 6Recording := FALSE; 6WRITELN ('losed') 6END; 2'p','P': BEGIN 6CLOSE (RcvFile, PURGE); 6Recording := FALSE; 6WRITELN ('urged') 6END 2END 0END ,ELSE BEGIN 0REPEAT 4WRITE ('Record as what textfile ? '); 4READLN (RcvName); 4UpCase (RcvName); 4IF LENGTH (RcvName) <> 0 THEN 8IF RcvName[LENGTH(RcvName)] = '.' "A := Chr (0); "Unitwrite (1, A, 1);  End {of ForceStatus};    FUNCTION ClearToSend: BOOLEAN;  var a : array [0..50] of integer;  begin "ClearToSend := True;  end { ClearToSend } ;   PROCEDURE PutCon (C: CHAR);  begin "unitwrite (1, c, 1,, 12);  end { PutCon } ;   PROCEDURE PutRem (C: CHAR);  var i : integer;  begin "unitwrite (outrem, c, 1,,12);  end { PutRem } ;   FUNCTION GetCon: CHAR;  var c : char;  begin "c := ' '; "unitread (2, c, 1,, 12); "getcon := c;  end { GetCon 0 THEN BEGIN +{$I-} REWRITE (RcvFile, RcvName);  } ;   FUNCTION GetRem: CHAR;  var c : char;  begin  c := ' '; "unitread (inrem, c, 1,, 12); "getrem := chr (Ord (odd (ord (c)) and odd (127)));  end { GetRem } ;   FUNCTION KbStat: BOOLEAN;  var a : array [0..30] of integer;  begin "ForceStatus; "unitstatus (2, a, 1); "kbstat := a[0] > 0;  end { KbStat } ;   FUNCTION RemStat: BOOLEAN;  var a : array [0..30] of integer;  begin "ForceStatus; "unitstatus (inrem, a, 1); "remstat := a[0] > 0;  end { RemStat } ;   {$I+} 8IF IORESULT = 0 THEN BEGIN  0 THEN >IF XmtName[LENGTH(XmtName)] = '.' BTHEN DELETE (XmtName, LENGTH(XmtName), 1) BELSE XmtName := CONCAT (XmtName, '.TEXT'); :{$I-} RESET (XmtFile, XmtName); {$I+} :IF IORESULT = 0 THEN BEGIN >Sending := TRUE; >WRITELN (XmtName, ' Opened') >END :UNTIL (LENGTH(XmtName) = 0) OR (IORESULT = 0); 6IF COPY (XmtName, LENGTH(XmtName)-4, 5) = '.TEXT' :THEN BEGIN >IF BLOCKREAD (XmtFile, XmtBlk, 1) = 0 THEN; >IF BLOCKREAD (XmtFile, XmtBlk, 1) = 0 THEN (HoldBuf : PACKED ARRAY [1..BlkSz] OF CHAR; (SpareBlk : Block; (I : INTEGER;  BEGIN (PutRem (CHR(StopChar)); (HoldInx := 0; (REPEAT ,IF RemStat THEN BEGIN 0C := CHR( ORD( ODD(ORD(GetRem)) AND ODD(127) ) ); 0PutCon(C); 0IF ORD(C) = StopChar 4THEN Frozen := TRUE 4ELSE IF ORD(C) = StartChar 8THEN Frozen := FALSE 8ELSE IF C IN TextCharSet THEN BEGIN END; 6XmtBufPtr := BlkSz 6END; .'R','r': RecOpt; .'E','e': BEGIN 2DtrSet (FALSE); 2IF Recording THEN BEGIN 6RClose; 6Recording := FALSE 6END; 2IF Sending THEN 6CLOSE (XmtFile, NORMAL); 2EXIT (TeleTalker) 2END .END ,UNTIL C IN ['g','G']; ,C := Chr0 (END;   BEGIN {TeleTalker} (Init;   {$R-} REPEAT ,IF NOT ClearToSend THEN BEGIN 0WRITELN (CHR(7)); 0IF NOT ClearToSend 4THEN WRITE ('LOST CARRIER'); 0REPEAT 4UNTIL ClearToSend OR KbStat; 0IF not KbStat 4THEN BEGIN 8PutConIL NOT RemStat; "{$I-} RcvBufPtr := BLOCKWRITE (RcvFile, RcvBlk, 1, RcvFilPtr); (WHILE RcvBufPtr = 1 DO ,IF (BLOCKREAD (RcvFile, SpareBlk, 1, RcvFilPtr) = 1) CAND (SpareBlk = RcvBlk) 0THEN RcvBufPtr := 0 0ELSE RcvBufPtr := BLOCKWRITE (RcvFile,RcvBlk,1,RcvFilPtr); "{$I+} RcvFilPtr := RcvFilPtr + 1; (FOR I := 1 TO HoldInx DO BEGIN ,RcvBlk[RcvBufPtr] := HoldBuf[I]; ,RcvBufPtr := RcvBufPtr + 1 ,END; (PutRem (CHR(StartChar)) (END;   PROCEDURE RawOptions; $      (chr(13)); 8WRITELN (' ') 8END 4ELSE BEGIN 8ch[0] := getcon; 8RawOptions 8END 0END; ,IF RemStat 0THEN BEGIN 4C := GetRem; 4PutCon(C); 4IF ORD(C) = StopChar 8THEN Frozen := TRUE 8ELSE IF ORD(C) = StartChar = BlkSz THEN CASE XWaitState OF DXWIdle: BEGIN HPutRem (CHR(StopChar)); HXWaitState := XWWaiting; HXWaitCnt := XWait HEND; DXWWaiting: IF XWaitCnt < 0 HTHEN XWaitState := XWReady HELSE XWaitCnt := XWaitCnt - 1; DXWReady: Bh`Pu` Uu`Pqtp#s ps psppX`u`&qrpqrp$ 43qtppց0H$6+qtJt Rrpsp Os p Vs psp ȑ C00/0&40 ڡGG0ȅG GG5603 3 vofTqEGIN 8{$I-} IF BLOCKREAD (XmtFile, XmtBlk, 1) K= 1 {$I+} LTHEN XmtBufPtr := 0 LELSE BEGIN PCLOSE (XmtFile, NORMAL); PWRITELN; PWRITELN (XmtName, ' Finished'); PSending := FALSE PEND; HXWaitState := XWIdle; HPutRem (CHR(StartChar)) HEND DEND; @IF Sending AND (XWaitState=XWIdle) CAND NOT RemStat THEN BEGIN DC := XmtBlk[XmtBufPtr]; DXmtBufPtr := XmtBufPtr + 1; DIF DleState = DleStWaitingCount HTHEN BEGIN LDleCount := ORD(C) - 32; LIF DleCount > 0 r2qtpsps p]s pspցb3 D0 6 060 6060Eqtt& N E C A P C T e l e T a l k e rr for SCI on 09-Oct-822*Copyright (c) 1980, Volition Systems, Inc..Now Recording  C(lose, P(urge ? losedurgedCpRecord as what textfile ? .TEPTHEN DleState := DleStExpanding PELSE DleState := DleStIdle; LC := Chr0 LEND HELSE IF ORD(C) = Dle LTHEN begin NDleState := DleStWaitingCount; Nc := chr0; Lend; DIF NOT (C IN TextCharSet) HTHEN C := Chr0 DEND @END; 4IF C <> Chr0 THEN 8begin 8PutRem (C) 8end 4END ,UNTIL FALSE (END. XT Exists, Purge ? ess Purged Savedd Opened.TEXT*FileOptions: S(end, R(ecord, G(o, E(xit - Now Sending Close it ? ess CloseddSend what textfile ? .TEXT Opened.TEXTEs LOST CARRIERR FinisheduN5zg_\VI<1'  mSTRINGOPFILEOPS PASCALIOEXTRAIO  O^jjTELETALK X $- fXX ( I- f,@@1 - d(TELETALK]$h`p-343<` pJa p] h` p it h` p i`p$`x `p$`x ! Ė~`a  z rpsps pspsps pspsp#s pspsp 9PH:P  ۃ;eh 30000  ha 0 凂  GFrGG3Fr { Kill Disk ---- Disk Diagnostic Utility }  { June 10, 1981 }  { Version 0.4 }  { Advanced Computer Design }  { Barry Demchak }   { This program exercises up to 6 UCSD PASCAL drives. It runs an }  { infinite number of passes, each time running a pre-programmed }  { GGGFrGDžFF &GGaȅGG"ih ! " 짃C" " 지aA hۖGG ȅGGGGG6ȊFGˁ6ptp+4sKs pHs pSs ps p0;]s psp#tp`s pspրcs pHPs ps pHH7HH지. HHuHh`HPu`Uu`PHtpzHs ps ps p0     randomsequence of reads, writes, read-after-writes to random }  { drives at random blocks for random byte counts. The pre-program-}  { med seqence is re-programmed for each pass and includes a phase }  { of multiple writes and read-after-writes, and a phase of multiple}  { reads. In each case, a pre-programmed pattern is written, and }  { expected to be read. Three commands are possible in mid-execu- }  { tion. The escape key causes termination. The space key causes a}  i, j, cur_index : INTEGER; $bad_entry : BOOLEAN;  BEGIN "WRITE ('Programming'); "cur_index := random (0, num_disks - 1); "FOR i := 0 TO max_disk DO $disk_unit[i].prog_count := 0; "FOR i := 0 TO max_prog DO $WITH prog[i] DO &BEGIN (REPEAT *IF random (0, 10) < disk_prob THEN ,cur_index := random (0, num_disks - 1); *disk_num := disk_unit[cur_index].unit_num; (UNTIL disk_unit[cur_index].prog_count < disk_unit[cur_index].max_count;  { pause, and the 'R' key causes a report of the most recent errors.}   { 9/Jan/81 : Version 0.1. Modified to let the user choose the num-}  { ber of passes to make, and output the pass number during }  { error reporting. }  { 12/Jan/81: Version 0.1. Modified to save errors dynamically so }  { more can be saved and reported. }  { 6/Mar/81: Version 0.2. Added worst case pattern for double }  { (disk_unit[cur_index].prog_count := disk_unit[cur_index].prog_count + 1; (REPEAT *byte_length := random (1, max_buf_blocks * block_len DIV 2) * 2; *WITH disk_unit[cur_index] DO ,start_block := random (min_block, max_block - max_buf_blocks); *j := 0; *bad_entry := FALSE; *WHILE (j < i) AND NOT bad_entry DO ,BEGIN .bad_entry := (disk_num = prog[j].disk_num) AND ;((start_block + block_span (byte_length) > =prog[j].start_block) AND (start_block <= =prog[j].start_block)) OR ;((prog[j].start_block density. }  { 7/Apr/81: Version 0.3. Added ability to loop on error, moved }  { check_input to inner loops, added random head unload. }  { 10/Jun/81: Version 0.4. Removed random head unload for hard }  { drives. }   PROGRAM kill_disk;   CONST version = '4.0'; {version identifier} &max_writes = 2; {maximum # of writes in a row}  + =block_span (prog[j].byte_length) > start_block) AND =(prog[j].start_block <= start_block)); .IF bad_entry THEN 0WRITE ('+'); .j := j + 1; ,END {of WHILE}; (UNTIL NOT bad_entry; (WRITE ('.'); (writes := random (1, max_writes); (reads_immed := random (0, max_reads); (reads_deferred := random (1, max_reads); (unload_head := (random (1, head_prob) = 1) AND (disk_num IN [4, 5]); (CASE random (0, 10) MOD pattern_prob OF *0 : BEGIN 0pattern[0] := 170; {AA hex} 0pattern[1] := 170; {AA hex} &max_reads = 8; {maximum # of reads in a row} &max_buf_blocks = 20;{maximum # of blocks in a data transfer} &max_disk = 5; {maximum # of disks - 1} &tests_per_disk = 20;{average number of tests on a disk in a pass} &block_len = 512; {number of bytes in a block} &pattern_prob = 3; {probability / 10 of using a given bit pattern} &disk_prob = 2; {probability / 10 of changing disks} &head_prob = 4; {1 / probability of unloading head} &bell = 7; {^G terminal bell} &esc = 27; 0pattern[2] := 85; {55 hex} 0pattern[3] := 85; {55 hex} 0pattern[4] := 170; {AA hex} 0pattern[5] := 85; {55 hex} 0pattern[6] := 170; {AA hex} 0pattern[7] := 85; {55 hex} 0pattern[8] := 170; {AA hex} 0pattern[9] := 170; {AA hex} 0pattern[10] := 85; {55 hex} 0pattern[11] := 85; {55 hex} 0pattern[12] := 170; {AA hex} 0pattern[13] := 85; {55 hex} 0pattern[14] := 170; {AA hex} 0pattern[15] := 85; {55 hex} .END {of 0}; *1 : BEGIN 0pattern[0] := 128; {80 hex} 0pattern[1] := 127;  {^] escape} &big_min = 5000; {smallest block on large disk to test} &big_max = 6400; {largest block on large disk to test} &small_min = 0; {smallest block on floppy disk to test} &small_max = 493; {largest block on floppy disk to test} &head_unload = 8000;{time necessary to unload head} &  TYPE byte = 0..255; %pat_type = PACKED ARRAY [0..15] OF byte; %error_type = (no_error, read_error, write_error, compare_error); %prog_rec = RECORD {one programmed step} 2writes,  {7F hex} 0pattern[2] := 64; {40 hex} 0pattern[3] := 191; {BF hex} 0pattern[4] := 32; {20 hex} 0pattern[5] := 223; {DF hex} 0pattern[6] := 16; {10 hex} 0pattern[7] := 239; {EF hex} 0pattern[8] := 8; {08 hex} 0pattern[9] := 247; {F7 hex} 0pattern[10] := 4; {04 hex} 0pattern[11] := 251; {FB hex} 0pattern[12] := 2; {02 hex} 0pattern[13] := 253; {FD hex} 0pattern[14] := 1; {01 hex} 0pattern[15] := 254; {FE hex} .END {of 1}; *2 : BEGIN 0pattern[0] := 219; {DB hex} 2reads_immed, 2reads_deferred, 2byte_length, 2start_block, 2disk_num : INTEGER; 2unload_head : BOOLEAN; 2pattern : pat_type; 0END {of prog_rec}; %prog_type = ARRAY [0..120{max_disk * tests_per_disk}] OF prog_rec; %buf_type = ARRAY [0..max_buf_blocks] OF 2PACKED ARRAY [1..block_len] OF byte; $ err_buffer = RECORD {record of bad test} 4test : prog_rec; 4result, 4sequence, 4pass : INTEGER; 4nature : error_type; 2 next : ^err_buffer; 2END {of RECORD}; $  VAR seed : integer; $max_pro0pattern[1] := 103; {67 hex} 0pattern[2] := 219; {DB hex} 0pattern[3] := 103; {67 hex} 0pattern[4] := 219; {DB hex} 0pattern[5] := 103; {67 hex} 0pattern[6] := 219; {DB hex} 0pattern[7] := 103; {67 hex} 0pattern[8] := 219; {DB hex} 0pattern[9] := 103; {67 hex} 0pattern[10] := 219; {DB hex} 0pattern[11] := 103; {67 hex} 0pattern[12] := 219; {DB hex} 0pattern[13] := 103; {67 hex} 0pattern[14] := 219; {DB hex} 0pattern[15] := 103; {67 hex} .END {of 2}; (END {of CASE}; &END {of WITH};g, errors, cum_errors, pass, i, num_disks, num_passes : INTEGER; $ch : CHAR; $zero : buf_type; $prog : prog_type; $start_ptr, $error_ptr : ^err_buffer; $error_hang : BOOLEAN; $disk_unit : ARRAY [0..max_disk] OF RECORD Iprog_count, Imax_count, Imin_block, Imax_block, Iunit_num : INTEGER; GEND {of record};  FUNCTION random (low, hi : INTEGER) : INTEGER;  {Return a random number between two bounds}  BEGIN "seed := ((seed * 11) + 7);  seed := ABS (seed - (seed DIV 1999) * 1999);  "WRITELN;  END {of write_program};   PROCEDURE zap_rest (VAR buffer : buf_type; byte_length : INTEGER);  {zeros the buffer after the 'byte_length'th byte}  BEGIN "fill_char (buffer[byte_length DIV block_len, -byte_length MOD block_len + 1], block_span (byte_length) -* block_len - byte_length, 0);  END {of zap_rest};   PROCEDURE make_pattern (pattern : pat_type; byte_length : INTEGER;  VAR buffer : buf_type);  {makes a repititious pattern of the specified type}  random := seed MOD SUCC (hi - low) + low;  END {of random};   FUNCTION block_span (byte_count : INTEGER) : INTEGER;  {Returns the number of blocks spanned by a number of bytes}  BEGIN "block_span := (byte_count + block_len - 1) DIV block_len;  END {of block_span};   PROCEDURE write_program (VAR prog : prog_type);  {Produce a pre-programmed test sequence. Chooses a drive then keeps !trying to program a test for that drive that doesn't collide with the !existing tests for that drive.}  VAR      BEGIN "MOVELEFT (pattern, buffer, 16); "IF byte_length > 16 THEN $MOVELEFT (buffer, buffer[0, 17], byte_length - 16); "zap_rest (buffer, byte_length);  END {of make_pattern}; *  PROCEDURE set_error (etest : prog_rec; enature : error_type; 5eresult, epass, esequence : INTEGER);  {register an error}  BEGIN "WITH error_ptr^ DO " BEGIN &test := etest; &nature := enature; &result := eresult; &pass := epass; &sequence := esequence;  END; {of with} "IF NOT( MEMAVAIL IN [0..100] ) THEN $B,IF buffer[i] <> master[i] THEN .BEGIN 0set_error (test, compare_error, result, pass, sequence); 0WRITELN (CHR (bell), 'Buffer compare error on disk ', disk_num, 9'; read starts at block ', start_block, 9' error at block ', start_block + i); 0FOR j := 1 TO block_len DO 2IF buffer[i, j] <> master[i, j] THEN 4BEGIN 6check_input; 6WRITELN (' on byte ', j:3, '. Write = ', master[i, j]:3, ?' Read = ', buffer[i, j]:3); 6errors := errors + 1; 4END {of IF buffer[i,j]}; .END {of IF}; (END {of ELSEEGIN &NEW(error_ptr^.next); &error_ptr := error_ptr^.next; &WITH error_ptr^ DO (BEGIN *next := nil; *nature := no_error; (END;  END; {of IF}  END {of set_error};   PROCEDURE check_input;  {Check for input from the keyboard. If valid character is input, go into !command mode.}  VAR ch : CHAR;  a : ARRAY [0..30] OF INTEGER;  BEGIN "UNITSTATUS (2, a, 1); "IF a[0] <> 0 THEN $BEGIN &READ (key_board, ch); &WHILE ch IN [CHR (esc), ' ', 'r', 'R'] DO (IF ch = CHR (esc) THEN *BEGIN }; $UNTIL NOT hanging;  END {of do_read};   PROCEDURE do_program (VAR prog : prog_type; pass : INTEGER;  VAR errors : INTEGER);  {Execute a pre-programmed test sequence. First do writes and !read-after-writes, then do reads.}  VAR read_buffer, write_buffer : buf_type;  i, j : INTEGER;  BEGIN "errors := 0; "FOR i := 0 TO max_prog DO $WITH prog[i] DO &BEGIN (WRITELN ('Step: ', i, ' writes: ', writes, ' reads: ', reads_immed, ,WRITELN; ,WRITELN ('Cummulative Errors Before Pass ', pass, ' = ', cum_errors); ,WRITELN; ,WRITELN ('Replace the system disk then hit any character.'); ,READ (ch); ,EXIT (kill_disk); *END {of IF esc} (ELSE *IF ch = ' ' THEN ,BEGIN .WRITELN; .WRITELN ('Pausing. Pass ', pass,'. Hit "C" to proceed.'); .READ (key_board, ch); ,END {of ' '} *ELSE ,BEGIN {'r' or 'R'} .WRITELN; .WRITELN ('Error Report. Pass ', pass,' :'); .WRITELN; .error_ptr := start_ptr; .REPEAT 0WITH error_ptr^ DO 2IF 1' disk: ', disk_num, ' bytes: ', byte_length, ' block: ', 1start_block); (make_pattern (pattern, byte_length, write_buffer); (FOR j := 1 TO writes DO *do_write (prog[i], write_buffer, pass, j, errors); (FOR j := 1 TO reads_immed DO *do_read (prog[i], read_buffer, write_buffer, pass, j, errors); &END {of WITH};  FOR i := 0 TO max_prog DO $WITH prog[i] DO &BEGIN (WRITELN ('Step: ', i, ' reads: ', reads_deferred, ' disk: ', disk_num, 1' bytes: ', byte_length, ' block: ', start_block); (make_panature <> no_error THEN 4BEGIN 6CASE nature OF 8read_error : WRITE ('Read error. Pass ', :pass,' : '); 8write_error : WRITE ('Write error. Pass ', :pass,' : '); 8compare_error : WRITE ('Compare error. Pass ', :pass,' : '); 6END {of CASE}; 6WITH test DO 8WRITELN ('Pass ', pass:4, ', disk ', disk_num, ?',block ', start_block:4, ', ', ?byte_length:4, ' bytes, #', ?sequence, ', I/O result = ', result); 4END {of IF nature}; ttern (pattern, byte_length, write_buffer); (FOR j := 1 TO reads_deferred DO *do_read (prog[i], read_buffer, write_buffer, pass, j, errors); &END {of WITH};  END {of do_program};   BEGIN {of kill_disk} "WRITELN; "WRITELN ('Kill Disk --- Disk Diagnostic Program Version ', version); "WRITELN; "WRITE ('What is your lucky number ? '); "READLN (seed); "REPEAT $WRITE ('How many disks to test ? '); $READLN (num_disks); "UNTIL num_disks IN [0..max_disk+1]; "IF num_disks = 0 THEN 0IF error_ptr^.next <> nil THEN error_ptr := error_ptr^.next; .UNTIL error_ptr^.next = nil; .ch := ' '; {cause a pause next time round} ,END {of 'r'}; $END {of IF NOT};  END {of check_input};   PROCEDURE do_write (test : prog_rec; VAR buffer : buf_type; 4pass, sequence : INTEGER; VAR errors : INTEGER);  {Perform a write to the test drive. Check for error after write and !complain if one is found.}  VAR delay, result : INTEGER;  hanging : BOOLEAN;  BEGIN  hanging := FALSE; "WITH test$EXIT (kill_disk); "REPEAT $WRITE ('How many passes to make ? '); $READLN (num_passes); "UNTIL (num_passes >= 0) AND (num_passes <= maxint); "IF num_passes = 0 THEN $EXIT (kill_disk); "max_prog := 0; "FOR i := 0 TO num_disks - 1 DO $BEGIN &WRITE ('What is unit #', i, ' ? '); &READLN (disk_unit[i].unit_num); $ WITH disk_unit[i] DO (BEGIN *IF unit_num IN [9..12] THEN ,BEGIN .min_block := big_min; .max_block := big_max; ,END {of IF} *ELSE ,BEGIN .min_block := small_min; .max_block := sm DO $REPEAT &check_input; &IF unload_head THEN (FOR delay := -head_unload TO head_unload DO *{nothing}; &UNITWRITE (disk_num, buffer, byte_length, start_block); &result := io_result; &IF result <> 0 THEN (BEGIN *hanging := error_hang; *set_error (test, write_error, result, pass, sequence); *errors := errors + 1; *WRITELN (CHR (bell), 'Disk write error: ', result, ' on disk ', 3disk_num, ' starting at block ', start_block, ' for ', 3byte_length, ' bytes.'); (END {of IF}; all_max; ,END {of ELSE}; *WRITE (' Minimum block = ', min_block, ', maximum block = ', 1max_block, '; '); *REPEAT ,WRITE (' Change them (Y/N) ? '); ,READ (ch); ,WRITELN; *UNTIL ch IN ['y', 'Y', 'n', 'N']; *IF ch IN ['y', 'Y'] THEN ,REPEAT .WRITE (' New Minimum block ? '); .READLN (min_block); .WRITE (' New Maximum block ? '); .READLN (max_block); ( UNTIL min_block + max_buf_block <= max_block; *max_count := (max_block - min_block) DIV max_buf_blocks; $UNTIL NOT hanging;  END {of do_write};   PROCEDURE do_read (test : prog_rec; VAR buffer, master : buf_type; 3pass, sequence : INTEGER; VAR errors : INTEGER);  {Do read on test drive. Complain if error on read. Also complain if !what is read does not match what was written.}  VAR delay, i, j, result : INTEGER;  hanging : BOOLEAN;  BEGIN "hanging := FALSE; "WITH test DO $REPEAT &check_input; &buffer := zero; &IF unload_head THEN (FOR delay := -head_unload TO head_unload DO *{nothing}*IF max_count > tests_per_disk THEN ,max_count := tests_per_disk; ( max_prog := max_count + max_prog; (END {of WITH}; $END {of FOR}; "REPEAT $WRITE ('Do you want to loop on an error (Y/N) ? '); $READ (ch); " WRITELN; "UNTIL ch IN ['y', 'Y', 'n', 'N']; "error_hang := ch IN ['y', 'Y']; "WRITE ('Load blank disks into drive(s) : '); "FOR i := 0 TO num_disks - 1 DO $WRITE (disk_unit[i].unit_num:3); "WRITE ('; then hit [RETURN]'); "READ (ch); "IF ch = CHR (esc) THEN $EXIT (kill_disk); "FILLCH; &UNITREAD (disk_num, buffer, byte_length, start_block); &result := io_result; &IF result <> 0 THEN (BEGIN *hanging := error_hang; *set_error (test, read_error, result, pass, sequence); *errors := errors + 1; *WRITELN (CHR (bell), 'Disk read error: ', result, ' on disk ', 3disk_num, ' starting at block ', start_block, ' for ', 3byte_length, ' bytes.'); (END {of IF} &ELSE (BEGIN *zap_rest (buffer, byte_length); *FOR i := 0 TO (byte_length - 1) DIV block_len DO      AR (zero, block_len * max_buf_blocks, 0); "NEW(error_ptr); "WITH error_ptr^ DO {to initialize} $BEGIN &nature := no_error; &next := nil; " END; "start_ptr := error_ptr; "max_prog := max_prog - 1; "cum_errors := 0; "FOR pass := 1 TO num_passes DO $BEGIN &write_program (prog); &do_program (prog, pass, errors);  cum_errors := cum_errors + errors; &WRITELN ('End of pass ', pass, '; ', errors, ' errors this pass; ', /cum_errors, ' errors overall'); $END {of FOR};  END. {rpHr pxrpLr pzrpQr pyrprpz`{$x` ӇrpVr pnr prprppr prpr pr prpr p22pr prpr p111p2B3Bar p3rpr p$3rpr p$3CCxCąCĊCąCĚr pCzrpT KILLDISK CX - VʂXX (˔ - VB - d(r pCyrpr pr p r prp88Mr pCrpr pr pCrpr pCzCyԳCCyCząC{CąC{73r p r prp88ڥ#r p2B3B$3xrp3!r p r p8p p!u!BBąBą!"71B4Bn  4 56+r p4rp2r p6rp4r p5rp>r prp4S KILLDISK<0 000 !ˏ!jM izr p2hlj"$$""j7lj"$'"xm 2h%$ xĆ$ |$ {͆$ $ |%Ć$ n%&z&yik!"#h%x'!xx%y%z'!xy%y'!xy'!xy'!xz%y'!xy%yk# +sp!i#^.sp%%%%%x0ڡ ˏ%ˀ%ˀ%ˀU%ˀU% ProgrammingZ=Cummulative Errors Before Pass  = /Replace the system disk then hit any character.Pausing. Pass . Hit "C" to proceed..Error Report. Pass  ::Read error. Pass  : Write error. Pass  : Compare error. Pass  : Pass , disk ,block , bytes, #, I/O result = Disk write error: on disk  starting at block  for  bytes.Disk read error: on disk  starting at block  for  bytes.Buffer compare error on disk ˀ%ˀU%ˀ%ˀU%ˀ% ˀ% ˀU% ˀU% ˀ% ˀU%ˀ%ˀUȋ%ˀ%ˀ%ˀ@%ˀ%ˀ %ˀ%%ˀ%% ˀ% % ˀ% % ˀ%%ˀȋ%ˀ%ˀg%ˀ%ˀg%ˀ%ˀg%ˀ%ˀg%ˀ; read starts at block  error at block on byte . Write =  Read = Step: writes:  reads:  disk:  bytes:  block: Step:  reads:  disk:  bytes:  block: .Kill Disk --- Disk Diagnostic Program Version 4.0What is your lucky number ? How many disks to test ? How many passes to make ? What is unit ## ?  Minimum block = , maximum block = ;  Change them (Y/N) ? @@ New Minimum block ?  New Maximum block ? (Do you want to loop on an error (Y/N)% ˀg% ˀ% ˀg% ˀ% ˀg%ˀ%ˀgȊր"jrp! ׁ ˏ  p`*`(p)((ׁ)p() 3a!h a    t !u!!!h  Ė"ap$axL`r p ⼃5 erpr p4rp,r p5rprprp.r prp`r pp <rpFr p4rpNr pr ? @@!Load blank disks into drive(s) : ; then hit [RETURN] End of pass ;  errors this pass;  errors overall82pW?) W HEAPOPS EXTRAHEAEXTRAIO PASCALIO p`r prpZr p4rper prprp"!!!!!xgr p!rpqr pSur p!rpr p+r p!rpr pր!"r p!rpr p"xrpr p"yrpr p"zrpr p!rpr p!rprp!!!!չ h"_dj*@@ki!#!i$&%pph Չ#jd xĚspr p $CURSOR $EQUAL $TAG ,  O.rpr p$rpr p%rpr p&rpr prp"Gl gl -@@mk#%#k')(pph Ռ#lg xĚspr p rpr p'rpr p(rpr p)rpr prp:))mj"%&"ׁ"ׁg spr p'rpr p(rp r p("rprpni!&՜"ׁ!"ׁ!rr p!rpr p"ׁ!rpr p"ׁ!rprpx!i^"j$ *7.x#r prp'r p}rp,r p|rp1r pxrp5r pzrp:r pyrprpz`}!x` |$x` Ӈ7x?r prpCr p      {$I-}  Program Booter;  Uses {$U Format.Code} NEC_Floppy_Access;  Var Buffer : NEC_Boot_Buffer;  "Procedure Do_Xfer (Xfer_In : Boolean; Prompt : String); "Var Sector, &Result, &Index, &Disk : Integer; &Name : String; &Boot_File : File; &Cur_Format, &The_Format : Record 5Tracks : Integer; 5Sectors : Integer; 5Bytes : Integer; 5Intlv : Integer; 5First : Integer; 5Skew : Integer; 5Name : Packed Array [0..3] Of Char; 3 Recording : (S_Dens_S_Side, D_DPCODEGEN *a+Pwpaw pwpwp paw pwpw pwp`w p  p,)`*Pwpw pwp`w pwp+<4 ph<p4  <0 008!h`ˑ`ˑv!h`˧ˑ`˧ˑ`˧ˑ`˧ˑ'2j'ˏik"4''ˏi%Y)dˆ to exit) ? '); *Readln (Name); *If Length (Name) = 0 Then ,Exit (Booter); ( If Xfer_In Then ,Reset (Boot_File, Name) *Else ,Rewrite (Boot_File, Name); *If IO_Result = 0 Then ,Begin , If Xfer_In Then l) 0 Then (Writeln ('Unsuccessful transfer!', Chr (7)) &Else (Writeln ('Transfer Complete'); &Writeln; $Until Result = 0; "End {of Do_Xfer}; " "  Begin "Writeln; "Writeln ('NEC9ɁP:u9 to continue, to exit...>>>>WARNING<<<<error writing code file....reading past valid codeerror reading/writing code file  Bootstrap copier Version 0.2'); "Writeln; "Do_Xfer (True, 'source'); "Do_Xfer (False, 'destination');  End {of Booter}.   copying...1segment contains machine code<>target native codetrouble getting procc"trouble writing segment dictionaryytrouble closing file...f J FILEOPS STRINGOP HEAPOPS EXTRAIO PASCALIOIVMDCD3 IVMDCD2 IVMDCD1 IVMGBLS  BOOTER q &NEC_0.4@@   @@  0tGENPROC eH=2wpw p. p="RɊ` ` `  ` ր-` &` ` ` `  ` ր i!#xą# !!" # k%h $ # " !#"#!  ʊ ʊ ʊb ʊV!"  ʊ)!!  ʊ ʊ ʊր$   ʖh i!!#!"!ʖ h i!!#!BOOTER )hP.Zst ht  t `tt 1 Նt ht t dPt t dp .ds.dsp,.ui.uip.spj rj")t ut5t tt".s`t>t ttVZ What is the  drive (0 for a file) ? What is the  file ( to exit) ? Unsuccessful transfer!!Transfer Complete/NEC Bootstrap copier "!ʖGh i!!#!"!"!ʖh i!!(!&!% '$#" h i!!#! "!ʖ$''%'o'# .h i!!'!% &$#"Zh i! !$!#!"# !ʊ !ʖF()"""ᰠ(( 6"("( ˤ %ˤ ('&%$# %$(ˤ (&" vh i! !(!&!" '%$ Version 0.2sourcee destination EXTRAIO PASCALIOFILEOPS NECFLOPP #!""!!ɡ!!ʊ!!ʖ j!L  xj<  xj)  xj  xjր'$#ː&#"1h i! !'! # &%$"'h i! !"!ʖ( %#$# $ # 8h i! !(!&! # '%$" h i!!#!"!ʖ$&& &n&# 'h i!Qu$68:E=>.?zECIdCODEGEN GENPROC DUMPPROCINITCG STARTSEGFINISHSEIVMGBLS IVMPVTS IVMDCD1 IVMDCD2 IVMDCD3  2CODEGEN CODEGEN CODEGEN CODEGEN CODEGEN ( ,( @Copyright (c) 1982 SofTech Microsystems IV.0 [a.7] 2-SEP-82 WPF     !& %$#"Lh i!!'!% $&#"h i!!%!$!"!##  !ʊ !ʖh i!!%!$! #!"$ !ʊ !ʖ%2(&$"p$(ˤ (&" ph i!!(!& '%$#!"&!!ʊ!!ʖ h i!!)!'!&! # (%$"  x Ĉ dĖ:le(ʊցd"`ɊL e$<)e$!&)e`$`ցe `3lk`Ɋ9qlk/-`Ɇ/xlbblk!%%iց$`!#b`%%ib``,h c3f3 fɊ! fɆ/xڤ ɤ ցcɊ|, $'l .+$lefec * '$ocf C,cɆ/xڡecc'le ,eɡ$'l ց)c,fc-)`ccff`fɋcɆ/x 'ofʄ cʄ  4/' ր"djklh $R#J /&x< x-k i* x" i xj "d iր, h !x%1q!o iiii FqրT h(ni!&ս!do' ^q'Ɋ|'y d' 'N'%''y ''y'րp'h''!i=  "xuq q"xq4"xhcfc'Ifcf' c' ցc,H`.c.c` $!lc,`  ``c!`ɋ c!{`c`Yb.b!c bc!bցc,P c3f3fc '$of,f'c!2c c,c$f!2f f,fc)`ccff`cc!ff!f xh xգ"xdi!Ɋ\! F!! !y! !y!ʊր! ʈ "xdĈ Ċ"xdր "Ĉ"dĖ  x xi x xiw x xi[ x xi? xi0 xi! xi xiր $j"ɋ#h  "y#h   "Ɇ/#xڈ "Ɋ8,f f , ' ցc, `3c3c`ɀ $!ˏl$!lc,)ccn& `,`.``bɡ`!&  c!0`Ɋ6.` `.b! bցɀs<&og'`Ɋ2`b!ց'$c,`3`!i`!1` `,`3`!i`!'x"h&#h " "i" #i"iր!"#h !""" "y" "yր"" ʖ: $dl$ji!"T!dk##4h#  x!d!!d!ibh iɀ⼀ۀҀռۀ!!!ʆɀ⼀ۀۃ qɀ8ɀoɀx!Ċ!!!ċlɋa!` `,`3`!i`,h`!<``&kg#'` g#B``#$`,p c3f3ɀ fc*'$o'$of,fc)`ccff`fɋ*: @ )c'c*9 ? )fcf4*9 ? ) c' ցc, E!h    "! ɋ)" y( " e 2  y(!!ċG !ʊ !!!ċ!!!!ċ !ʊ !!!!ċ !ʊ !!!!!ċ !ʊ !!!!!ĊG!!!Ċ+!!!!!Ċրޖwh ! Ėh " !Ė5h5L%zi ij!x*%!xz!xi%!xz%!z$!ɱ!xijj"%!z$!ɱQ`  k#!x!"( " y ւ"`3c3c`4Ɋ$$!l!$!l$!l$!l$!l $!lւc,.Ɋ$`!XbYd [ւ c'Ɋ.  . ւfcc``f " t-⼀ۀۀ*!"z t-  --._..+&d' c`>.,K )B))c`>& .,) ,$cc)c, `3d'k!"(`Ɋ   i#$##&?#%ĭk%!%#z%#z#z!!!npAmj"%8 "x$wp邁Sw p"wpVq"jÅ!zk#dil!m%!%#Պ!$ h !%ĭ %ʊ%ʭʭxFx!z9h ĭ ĭ!ʭxx !$%ʖg''Ɇ/%xڡi!k! jh&l$Ɋlik!&! &%! kW $x$Ɇ/%x kj+$!&! &%! k $` bւm`(Ɋ! P#! P#ւ!>`!3` Ɋc#[#ւA`!`3c3d'nc`*Ɋ$! P&$! P&ւa$c`>Ɋ`&X&ւe" `3d o'fq'eq'o`*&!!%'!&dq!"$'lP$`!%& `Bp!"'l `&)`%&d$2` Q`''`''%& k#(#dq!"$ hց_'l$Ɋ0i/i+)$i#$ "ki ցe!#'!'%! #&%! t /z x Ĉ dĖUd kq!hd! ɊI ɐ-D Ɋ4--/--'------ --ցxց Ɋ$>  yց!h   ĊB!d!Ɋ$> !yց``#i`,``$$ibb#`,1a'l#dq#k''%&% 2"`3``!6`,4g"65`3`!B```,"``ibblk#$5#k"c3cc,c,7c!`cn&`&c`c,`,#`3c3``!cc!`,c,s#`.`iq`!k?`1`.`vq`k`!kqq#`.`l`;`k`.$`l#`k`.$`l#`k#q$q#d#``i`,$d`h  a%%jc c$a,('&0gah c  (ml$%c $la''jc&a, !.!h   y ʊqr *c3`3`3c3cɊ0q*n&cɆ/xnee nց&  (`Ɋ1c) )`!`!)`!)`!`!ցcɋ ( cle(ʊ}&c(ccɤ cle(ʊDe9&e e e($     3#O$ f3c3`3fc`$!!'`,`,c,f,d#f.f. q$dI#``i`,$d`3`3#``i`,$d`3I#$dɀ `3#`,`3`3#$d`3#1%"i>h +".!q !yh!ɀ*q q8%>%& dɀT`Sk#> n&*#&&&n`>i``,`,qɊG`3`ʊ@`S`ʊ6`S`ʊ,`S`S`ʊ`S`S`ʊ`ʊ `S`3ւ#cted on stackkimmediate cannot be addressgimmediate cannot be addressqo{`xoperand must be on stackkoperand must be on stackkexpected body of settexpected set on stackillɀ``>ii`, &dɀHk``ʅi#`,pɊ\`3`3(i`ʊOHk`3i`ʊ?HkHl`#$#i$i%HkHl`$iHkHl`iփ#``,(h"x"x|h!h!>Vh!NKE?9/-'> փA!|$h! փ[e! h! փb;!h!  փj!h! փo!egal pkd pointer poppeddoperand must be on stackkoperand must be on stackkreal expected on stackkbad real popped from stackk&!jump expected after start process NOP expected after start processseh!]^tɀ⼀wq!''#"tɀqփ!*h!" փT! h! փ4!!h!>>> >փ !hփ 6)h .q h q)d9lɊFɀwl#k1#kɀl#lk`3`3`3lk#փ$#XY `ʭi`ʊ``,)d`3`3#*d m xproc parms must be on stackincorrect parameter countpoperand should be on stackkerror in multiple word blkkO|ɋ``ʅi#`,`3``ʅi#`,k#`.#!k`gq#uq`3#S`3`3#I`3`3#?`3`3``i#`,&`3`3``i#`, `3`3#ք*#i!!Ƀڡh N$+#i!!ɀ⼀ۀڡh #,ʆʅ$# xl#x+i!#o''zi'h'n'xmk#x##xo'ɋ$]!/'{!m'{!k%"' &'$^ '$]'ɀP?j'x"5'xd<{D<<label destination not found gen illegal pcode!cannot iterively code generate... $8@ndPP-22{{{{{{{"(,HxTT<<<<FFFKKKFAAAAAAF7AAAAqqllvFFFF AA''xxĊ 'x'x{!!''xxĊj'Ƀ'x'x'{'xz#'x$^ $^ք#x#%!q$x$H-w p^pp Ĉ Ĉ Ĉ Ĉ Ĉ Ĉ Ĉ Ć$ $ą$#   ĭ ĭ N-0H_t&!!'z( q$ɀ⼀ۀۀۀۀҀּۀڠՠɀՍɀ ɐ/wɀ/ 0aɀ? ɀ/1Jɀ{{lDz__xnYN;*wO6 C%K  * 6 v ; n W  ? V < 6 (g{r_zQ(%R`D&f& `g ɀ_03ɀoɀg04ɀwW ɀx5ɋ///00041114ɀ22224zJuKp5i4b[]RX[SZNDICDM?O:[5/6(/86N=: :/=?<;/6/66789L?RV[ dːhiP'@ABW dː#uEq dː# nbQ^[Z dː#OPDUMPPROC H=2wpw p. p="1` -` &` ` ` `  ` ր i!#xą# !!" # kI jilp$h ~ m"%ɢj%ɋTۭn&&"&"!&$$l$$l%zxq%zĈۭn&%z&"&"!&ċ%ɀ)ۭn&%{&"&"!&ċ%Շۭn&%{%ɀP6!i&ĭ$ok#'# (%{(#kKFGRC n=G9q0$$mkjl dːihkjlօ,օ1#ɀ⼀ۀۀۀۀۀۀۀۀۀۀрּۀۀۀۀۀۀۃn Ւ\H ..k(all registers in class already allocateddcannot use reg for indexing"stack operands pushed out of orderr!cannot allocate reserved registerregister already allocatedd&allocating re݊#%Ƀ !i&Ċ !i&&"&"!Ċր%%xh%l| ۭkj#zxh -q {6 l$zi$" j!xh 5q$Ċ"2""l$zj$!$Ċ߈ۭ! a x#x'###x%ĭ%7 y#y'###y%ĭ%  e x#x&###x%ĭ%: y#y&###y%ĭ%  :hi hmlk!j"P"n&&y$&&x#&{)*g not in emulation stack!!Pm-~!attempt to generate invalid pcode~ BBB REG::reg left un-freedemulation stack overflowwword expe     =q! րG"j%$#Ԕ m$##8#o'ɋ!'ɀ3''{%m'ۈ'{xy%yċ%m%m%y420i'{'z j"()"`qۈ xy!h"`q"jҋ't%m% (zlۈ$xy(yk##,'ɀP.'O'''#'$ċ'ɃPt''n& ((P(((n& ((O((#($Ċo'""zI"ɀE`"`"`"z`"zւ "ɐ"ɋ"" " !"""""z" " "s!"""""z "{ E" " "{ &" " "z " "z  "" !""""z" "!""""zx" i"^" "ɀ_''ʊ''''n& ((O((#($Ċ '#'$ĊրW#x# )`*P`w p+ wpwp: p  pwp| p pn!!Ȳ `qU!xh  iq4 { s  t u ! w p7  chhh: p p p-!h`qO vq8ˆ'` !"""""z# "  !""""z!"""""z "{  "{ !"""""{!"""""{"   V"ɀE"   2"{"{  "z "ɀO"z "{ ւ̆wp|!!!!h```  wp &m%%Ɋ[%{X%{!R%{%|!H%{%|>%{%|%}0%{%|%}!"%{%|!%}%{ldd˧Ȉˆ'`˧ȮB!h``U"h`!`l"h`!`"h`!`#h`!`"`$h`"`#`#"!!h`!ր! %h`#`"`$`$#!!h`!ր` %h`#`$`"`$#!!h`!ր $    ր7 P!H B 9 0 '    րN!H B 9ւw p %`s`w p%ɋ%ɀ%{ %Ƀ#醄%ɀoxw p %ɀ %| %{ z%ɀ⼀醄%{xw p%{  %| @%ɀ醄%{xw p%{  %|  %} ւwp 420i<6!qq!!h!`q!q.   wp wp%`J=p`JȆwp`w pwp邃w p邃w p邃w pwp邃 w p醂\9 0 '    րȖ % # " !$k" !^ X O F = 4 +"% #   ր   iqii:iXiiiiiiiiiiiriiitiii}ivipihPibi\iWiRiLiD@i>8i8/i0(i*i"/ii+#{ w p邃bw pwp  փh#xhh0wppii i/ii i/iii iHiii i| it$inihibi\ iTiNiGiAi;i5i0i*i#iii i ii0iiiiii4iitiii|i~iwiiri{iiviqii}zixyisinpiiidi_xiZiUiPuiKiFiA}ix0Tj}2W,,,,AX,::,AX,,,,,AX,,CL,11WORDDBYTEE$++*j?Mp ;p-code "{"{H`"`" ""{"{`""z``""""z``"""z`" `"`"""" "zO`F`""" "z`""`"""z"""{"{`"""{"{`"`"""z|`""`"     ,,,,(:::.WORD ,Final 8086 IV.02 [a.7]] Code for segment procedure  segment offset Source Object .RADIX 100 P-Code N-CodeMPP .EQU BPP(Dec. Offsets))BASEE .EQU DXX ;exit codee~~~ emit.. dgrUD8-#XPE 'U& $IVMGBLS %-rsr *** FILEOPS  INITCG R' <pwp w pw pwpwpw p,Pw pw p,ui!"UU,P U%U Uui,(p!ԡ)w bPw w b5pzb6b,Pi7b [8b ;b  bUUbP U>X UPbUUbP UCS UPbpLEw bPw w bpbMpbNbSbX/Ć/Ć/Ć/-IVMPVTS )6"i`a`a kP  s *** IVMGBLS  Ć/Ć4Ć4Ć4Ć4Ć4Ć4Ć4Ć4ĆĆ xZxĖ0123456789ABCDEF8086 IV.02 [a.7]] Code GeneratorSOURCE PCODE FILE: .CODEDESTINATION CODE FILE: $[.CODE.code.CODE[*]][*]LISTING FILE: CONSOLE::console::#1:KERNEL yIVMDCD1 tla VK@5*"& *.26:>BFJNRVZ{^qbgf]jSnIr?v5z+~! ր#wlaVK@5*STARTSEGae'' 'xh a aUa ĊBa  Ċ1a Ċ a  Ċa ĊSa ĊBa Ċ1a"  Ċ a& Ċa*  Ėj"""j<n9 .9 9k:ij"t" "Ʉ."." 7"!u(udu (dd."Ʉ "jh!h :k# i!  {qg]S#I'?+5/+3!7; ?ցC5imquy}wlaVK@5uk#Q:uj49ɥ <944dtdt dtdtk#dtj<" mh % dtq h h<`q"mh %< # dt h#"i#" <˧h<<< ˧x << ˧xi h~g~JSTRINGOP FILEOPS EXTRAIO IVMPVTS IVMDCD2 IVMDCD1 IVMGBLS  %ɀ_ĊC%ɀo %%ɀgĊ-%ɀw%%%ɀo%Ċ %%ɀxĊ%ʋ%ɋ%%%ɀ⼀ҀԼۀ.%%%Ċ%%%~ %~ S%%%ɀAd%i!dj!dk!!#"nh & dk# # h%%%ċ%%%ċ%%%%ċ%%%%ċ%%%ɀ⼀%%%~ %~ `%%%%ĊD%h 1% %% %%  %ĊQREMOTETA  &SYSTEM @@ w  @@ w 0ր% %ɀ  %  #ĚՇs-i!y$$[!x$h$ˏl# - up #" -$xtm -$xmc$ĚՐ|-k#y%%b%i#x%h%ˏm$ - up $ě-%xj! b˧n b˧njZkNZkZZZZZPREMOTETA6&`!` p8` p`i\ r( s`s  aAh a rs i1ׁ ~-1~r~i 3բ` p C` `  ȇ `` .56?46s s +-1r-tp6ss > >111ZZZZZkZZZgP cvEXTRAIO IVMPVTS IVMDCD1 IVMGBLS  -1~rpi 1ׁ ohi5n &6Հj3 k# (#m ##%Ȇ#l ##$"%$j#k  p "Ȅ "  pn&. h?ր$s-t's(s 62>s3s t.URp/SՔU:Ț>s dPs s d p-dtpΚHs dPs s d -t pd.j".U"d""jUR p<ҪWs dPs s d pU;d.j".U"cIVMDCD3 Lb-i!b!b!xu!i߀`i!b!b!xu!ibpui!Y`!A瀐!xućyućzuć{u!iik"h xV x- xvp x-!p! "ˏkj  !!˛- !ˏj`t rV.WPw.wpjb.P bU bd""jUR p<ҩfs dPs s dU8UR p p-dtpҼU9UR p/|+UR pU+h +a U hsU-t-atprs as U<Ȋ|s as U=U psU<XT-atps as U<Ȋs as U=U pրU7+c-Ytu~~us sps s s ss w>ppGih- v&! Ě, uhh!ih !ԽpY X "˧h "˭ !˧ȭ ! Ȉ "xh " !xĈ ! Ė=%i!!k#j#$U"$! #x "x"h#h#h x !x$k ! i!!k#j  ydgtm%gth'Ri p l$ 0%$gtj"!i !$Ȅ !"$l! l$ $!ː$l! l$ $ $ː$lUs ,,, U7UR pցs,QҸ pցsԈ-t ERROR in input fileeD ERROR in output file45 ERROR in input filee ERROR in output file Send what file?  Send to what remote file?  Receive what remote file?  Write to what file? Opening new file: ERROR opening new file: Opening old file: ERROR opening old file: 8;>G fileops,pascalio,extraio,heapopssprogram error allocating buffer REMTA! l$ $- $˧ $x$l՛- !˧% !lgtk$# $x$l$- $˧#$!- $xĊ-%  !  -pah-x & p dtk#dth$'' վ&m#'dtj""#բ"-xˏ%%%"%"dt%x""%""%x 'ˑ %"dt-vp         LK [IV.0 a1] - press S(lave firsttM(aster S(lave Q(uit  S(end R(eceive Q(uit QSMS<!Ki0  EXTRAHEAFILEOPS PASCALIOEXTRAIO  LZzĊ @"9 (|q%TJJ / v r n g c B ; 7    ~xoPL60( {LE62% gXPL?2-) ~uIGECA?=3/$}]T# jcXPH=620.,*(&$" OSUTIL PASCALIOEXTRAIO   $'+=Y$LONGOPS NECHARDWNECFLOPPNECCONFISMALLCOMCOMMANDIGRAFDRAW  &(/;   #4( 6(c) Copyright Ticom Systems, 1983 All rights reservedd  "Type NEC_Buffer = String[255]; 'NEC_Nibble = 0..15; 'NEC_Byte = 0..255; 'NEC_Char_Image = Array [0..15] Of Packed Array [0..7] Of Boolean; 'NEC_Days = (N_Illegal, N_Sunday, N_Monday, N_Tuesday, N_Wednesday, 3N_Thursday, N_Friday, N_Saturday); 'NEC_Map_P = ^NEC_Map_Rec; 'NEC_Map_Rec = Packed Record 7Key_Value : Integer; 7Unshifted : Char; 7Shifted : Char; 5End {of NEC_Map_Rec}; 'NEC_Date_Rec = Packed Record 8Year_Ones : NEC_Nibble; 8Year_Tens : NEC_Nibble; " 8Day : NEC_Days; 8F  IMPLEMENTATION iller : Boolean; 8Month : NEC_Nibble; 8 8Day_Ones : NEC_Nibble; 8Day_Tens : NEC_Nibble; 8 8Hour_Ones : NEC_Nibble; 8Hour_Tens : NEC_Nibble; 8 8Min_Ones : NEC_Nibble; 8Min_Tens : NEC_Nibble; 8 8Sec_Ones : NEC_Nibble; 8Sec_Tens : NEC_Nibble; 6End {of NEC_Date_Rec}; " " Function NEC_Read_Port (Port_Number : Integer) : NEC_Byte; "Procedure NEC_Write_Port (Port_Number : Integer; Data : NEC_Byte); " LONGOPS "y!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!"Procedure NEC_Melody (Melody_Commands : NEC_Buffer); "Procedure NEC_Buzzer (Buzzer_Commands : NEC_Buffer); " "Procedure NEC_Get_Time (Var Date : NEC_Date_Rec); "Procedure NEC_Set_Time (Date : NEC_Date_Rec); " "Function NEC_Get_Key (Key_Num : Integer; Var Key_Val : NEC_Buffer) : Boolean; "Function NEC_Set_Key (Key_Num : Integer; Key_Val : NEC_Buffer) : Boolean;  Function NEC_Get_CMOS (Start_CMOS, 9Byte_Length : Integer; 5Var Buffer) : Boolean; "Function NEC_Set_CMOS (Start_CMOS, 9Byte_Leng `& q``!`s !$ ( 0Nlh_YЎȎЋ܋&Q  &ZR66؋O^|k4*{sf&?>n&Gj&i.t&v6l&Fh& d&3& uGG ø& G&?~&G;u&G;u &HCC&ۉf~&+l| ًjl&KK&nf++ىp.ffnA3&&GGth : Integer; 5Var Buffer) : Boolean; 5 "Procedure NEC_Char_Write (Value : Integer; 8Var Image : NEC_Char_Image; nKK&&A3KK&A&GG&&nCC.n&+CC |&KK&snx&& &&OOq&A&KK& D=>n&&&OOq&^&G&Wl@& n&&&OO&CCfAd>?[_cgko&&|~}utug6z6~.~6|l+n}Np++؉rCClhKK&vl3KK&n.f&KK&OOp 5Var Start_Rec : NEC_Map_Rec); " "Procedure NEC_Power_Down;   Implementation jKK&xlr.t&&GGtlA3&CC.xvr&h&3FĀt03ɋ>~&&& OO}r t;h&3Āt-3ɋ>~&&& OO}r t h&3ĀtӋt>zr&&OO}|t tZC|uKK&l.v36z&&AGGFFl&\t>z&OOX3z&;GG&(t td&KK&Ë.tlnp3fKK&KKx6l>n>|&>|f&!>|x&&&Q&QOOOOt&.|uNNuNECHARDW#! !3``C``Z``x)`*P`Pp+]P2r22]Ps2Us2rp ]rp.tp./9;0101W//h/h10퇐/id!uv$(tpe p102k#2=/3j"3($#/"0ue#"p"j#kd!u0e10 0ć1ćPxhy>n.f&&&OOjy>l.t&&&OO.f>p&~&&COO&^&CC&/.vCCf&?&d366~&Gx;6}fF&0;6}XF&-;6}MF&06zu&=. *=. =. = . .r.r&.;F |1&G.;F|';|.v6z&;~vKK& KK&~>t.v6z;6}HF&06z닋.r.N+~t|-.v6z;6}F&06z.vz&FdCCBdCC/.r.~.KK&OO}f ; d&;K     rv0.FontCould not open fileI/O Error reading font file6Invalid font file: Font X size must be between 1 and 887Invalid font file: Font Y size must be between 1 and 16;u S=[<SU?][?C&&ESFCS[CU?][\S=6 S2_Unused, :S2_Over_Run, S2_Data_Error, S2_Trash, S2_End_Cyl); 'Status_3 = Set Of (S3_U_Sel_0, S3_U_Sel_1, S3_Head, S3_Side, S3_Home, :S3_Ready, S3_Prot, S3_Fault); 'Com_Rec = Record 3Com_Size : Integer; 3Case Integer Of 50 : (C_Arr : Packed Array [0..9] Of NEC_Byte); 51 : (Sense_Com : Packed Record HSense_Com : NEC_Byte; HSense_Sel : NEC_Byte; FEnd {of Sense_Com}); 52 : (Home_Com : Packed Record GHome_Com : NEC_Byte; GHome_Sel : NEC_Byte; EEnd {of Home_Com}); 6[SPX u[ u;QP$ &<XYQP<0 0=XYVRXS>9t>/ Ĝ V^$$CCNxuٱװT*O[Z^ðFIPX V^V^PX$V^V^Nx /CC uر֋ň'뱜RZ RZ$RZPYXP+YX&Qf&_fvю2& F=u=uZ&1I<6$.%XVec~iWI+~nQO_]  IRead_C : NEC_Byte; IRead_H : NEC_Byte; IRead_R : NEC_Byte; IRead_N : NEC_Byte; GEnd {of Read_Stat}); 67 : (Int_Stat : Packed Record HInt_0 : Status_1; HInt_C : NEC_Byte; FEnd {of Int_Stat}); 2End {of Stat_Rec}; 'Header_Rec = Packed Record 6Form_Cyl : NEC_Byte; 6Form_Head : NEC_Byte; 6Form_Sect : NEC_Byte; 6Form_Size : NEC_Byte; 4End {of Header_Rec}; 'Format_Record = Record 9Read_Command, 9Write_Command : NEC_Byte; 9Sectors_Track, 9Sides_Cylinder, 9N_Sects, 9Read_Gap, 9Write_Gap, 9|XROL3xtr~* ( 6 4 3*** EXTRAHEAEXTRAIO STRINGOPFILEOPS  Interleave, 9Skew : Integer;  Header_Info : Record KCase Integer Of M0 : (H : Array [0..Max_Sector] Of dHeader_Rec); ( 1 : (W : NEC_Window); IEnd {of Header_Info}; 7End {of Format_Record}; 6 "Var Single_Single, &Single_Double, &Double_Single, &Double_Double, &Super_Double : Format_Record; ( ( "Procedure NEC_765_IO (Var Command : Com_Rec; 8Var Status : Stat_Rec; 8Var Buffer : NEC_Window; $yk$xj&$x&&$~&%$#$"$y%%%$|&%$#$"Ċ$y$x&$y%$x$ $ 6$'$ /$$y$x&$y%$x$ 6$)&$y%$x$!$ 9 327$/!Ėk0k#y%j#x$i""#~!!#| ڋF+GFڋGFڋ_;G ~ڋ_G FڋG^ ڋGFFF+Fڋ__+vvPQQVQQ&ڋF+G=}FڋG^ ڋF+GFڋGFڋ_;G~ڋ_GFڋG^ ڋGFFF+Fڋ__+vvQPQVQQ&ڋGFڋGr^G^ 3^|@^3~; F#sw3^|@^3~;F#sXڋGsڋwt7ڋFGڋFGڋGsڋwt7^G^^G^ڋG^F=@3vu@"!d## 98h 327##y#x%$# # 6#'# ###y#x%$# 6#) %$#!# 9 327#/Ė/0/.թh./j "tmg"tlf"tk#o ./( ' & , -98i!327--y--x./f./9--y--x!327f#t-y.-~-x/-|-/Ċ-/Ċ-/ $g$t% %t-/Ė0i#"B!98h 327!y!x$"#+ 327!y"!~!x#!|!/Ċ!/Ċ!/Ė/[s0 5t0ewPe 0e 0Ȅ/[[0"u[}u[eXu[s0/ pխ_;tڋGsڋwt73^u@ډGhڋGs_F=73vu@_;tڋwt73^u@ډG F=u Q QڋGЋڋ_ sڋG^EڋG^ڋ3t;vt@#GsTF=|>ڋGsڋwt7ڋFGڋGs!ڋwt7ڋG^ ڋGF3^|@^3~; F#sD3^|@^3~;F#s^G^^FGF^^G^ ^G^ YڋGF^GF F^FF3^|@^3~; /Wv՜ZYXWj"t5wlih"!"k!k[ #p #h"#j"/[vli$"$,0[[ć[Wć[XćY Z [/Ċ0/ Ą/s !0 0Ċ0 Ċ 00!!0/Ė6<N(QNzQPڋGF$^$G"=}F^$G&™‹^$o$»™‰Fڋv$D8@¾ƒ4؋v$D6@؋F^$v$D&™G:^$™&‰F^$v$D$™G<^$™$‰F^$3_8t@^$3_0F;u"^$G$n‰F ^$G&n‰F ^$G&F#sD3^|@^3~;F#s^G^^FGF^^G^ ^G^ `$$ rĆĆĆ0o''''' ' ' '' ' ''''''''''''''''!' '"N'.'- ','+!"#"777777"7#'(7'*%')&'(#'/Ė0/ Ė&xh`%Ċ%`$Ċ$`#Ċ#"!0/Ėn‰F ^$G$n‰F v ̨^$O(QQ¾FF(2Hn‰F^$GF^$F^$w0^$w4$2F ™‹^+؉^F+F F[w.^$w27FFF9F+F ^ ^ΙƉFF+F F [w. 3^}@^ ^v$3K;\~G rF^$w4$2F ™‹^+؉^F+F F[w.0^$w2*5F F™‹^+؉^F+F+F F [w.:3^}@^ ^v$3K;\~G rpFh^$w4*F+F+F F,F F™‹^+؉^[i0/Ė 0/Ė#0/ Ė4)`*P0/ Ė+0/ "Z!281/-+)'%# րO#!!0h0!đ0 Ċ!րd098h 3270~0|06% 3270/Ė` `p0/Ėf PڋGFFG^NQQ@@3^t@3_^uF#rFF»^ ؉3_ }@3_ }F Ƌ3_}F Ƌ3_}F Ƌ3_}F Ƌ3_}F s G^ st3_;\t@3_tF Ƌw.J^$w2$/F ™‹^+؉^F+F F [w.T3^}@^ ^v$3K;\ ~G rF^$w47F+F F~`(`'`&`%`$`#`"`!0 0/Ė hڋGFF^3_u@#G#GFFsڋwt7^GF ^3;G ~F^F 3_;}G sm^F ؋_;ih;ih2ih)ihihih ihր.f󿢇b󿢑!.f .b,"0""uh"98:塤 (327/̆i j:)//+ ++' ''"y/"~"y/"x/"|"x/h : * "y"x/!"" " 6"0+n'"o+r+r'r'r& /̄m /̄m' /̄l /̄l &%""m'&%$ l%!!m' $""l} ^G؉F^vG +DFv ̨F yy3PèFyy3P¿F FF F^F ^3;G~F^F 3;}G sj^F ؋;} ^؉F^vG+Fv ̨F yy3PèFyy3P¿F FF F^v~G^P4E~v v Pwtu&Fsڋwt7^FG^^vDF G^F ^x!0y 0x Fڋ_3_u@#G#GFFsڋwt7FڋGFFFFF;F~FFH^FFH^F$!!l:D9 &&%Ċ&%ć%/&x5ć&x&+$Ċ$$ć#/$x5 "y"x/&%'$!"" " 6"0 /&%'$"!#x;:n$x&x$x&x#x%x ,"y"x&x%x&<kk"y"x$x#x'#<,"y"x&x%x&#<) (327"/ Ė/N-%'$&`&`*`$&%'r%' ``. $&``2 `-0h'$ y6# x:r& y x$#=% y x"!='x&%dcba '.0k#98h 327$l# $>aaaa # ##y#x$## 6-$: 327#y$#~^F+GF ^F+F^GF ^3;G ~F^F 3_;}G sm^F ؋_;} ^G؉F ^vG +DF v̨F yy3PèF yy3P¿FF F F^F^3;G~F^F3;}G sj^F؋;} ^؉F ^vG+F v ̨Fyy3PèF yy3P¿F F FFFs1^v~G^P4E~v vPwtu&3^ t@3ۋvtC ؉^^FGF^F@FFsڋwt7ڋG^v؉7@" F ڋ_3_u@#y$#x$#|#x$#/Ċ#/Ė.0k%#yB$#xFri#98h 327# !Jbbbb # ##y#x!## 6-!: 327#y!#~#y!#x!#|#x!#/Ċ#/Ė.w0w8 0-0+"0T  &F}G@FK@JIxpL=/?/T/t puu?/Ä3u;t@֊ʂـsF$;FuF";F~F"F3^;^@ڋ_3~;?F#ƉF [w.3^;^ u@^#^F#F # F rF ЉFF r!F@™…ỷFF F™…ỷFvF&;FFF F ;FuF;F }FF Qv&v v6F F ^F;F}SFF F EF&;F:FF F ;FuF;F }FF Qv&v v6F F F;F}FF F ڋ_F&;Gڋ_GF F ;FuF;F }FF Qv&v v6F F ڋ_F;G}ڋ_GF F tڋ_F&;~3t 3;u;~Jq;뎋2oo/Ë=/?/2323232Ü$+ȝuP#΀YIt(3?/âS/T/S[ptrptrT/PSQRAS/ +Hx]T/أV/X/Z/=/?/fF /׆r!P^r uc>$ '*X?/<uZY[X36T6R6N6PrvF1nr(/A1/83//5/&3PPSSPSP 336Vd6VnFFFF42FF Fhڋ_F F ;FuF;F }FF Qv&v v6F F *ڋ_F;|ڋ_F F  [w.3^;^ u@^#^3~ ;~$uF## ^ rF rFF FF;Fuy3^;^ u@^#s%Fs3^;^~@F3^;^}@F3^ ;^u@#F^#s%Fs3^ ;^~@F3^ ;^}@FF FrJڋ_t}Gڋ_P4E}v&vvvv vvPwtu0Fr$F ;FuFЋ^ 3v ;v$t@ ÉFFFFFrv*  b f HihC      p tp u r r rˋF 6TF6RFH6NFH6PN V~JJ/v xL Ff Hx ؊FfHyNS/zt^Ft t^y8F |8FS/uF8{8F~8H/|8}8y8z8v~86{82 u:Vu 6C΀tuƊVt:vuЊ-O}8uz8N }8^2t z8:Nt낈6{8~8*2V/X/*2T/8VS/uV0=/?/f F /׆r$^Pr u uX?/<u////v/p/j/f/DDDDEE E EEE EE*E(E4E2E>ES/rS/uFFz8y8:Nt{F^VN 2 y  y ;s/ S/£T/ ȋZ/V/)V/+؉X/ FN ^V hubF^N V S/N IT/F /ף:F׊ Êࣰ::/;/A/CCkF6T%tY+؋F ;vãV/X/F)F V6:.:rQ ^ru:Yu.:F %tWرV/X/NV^)^ B6:.:r"Q^ruYu.:F tDV/X/NV6:.:r$CURSOR $EQUAL O.Q\^ruVjYu^VFNt^VFNS/F t-<~ u3ۉ/<^1<F3Z^v@T7<F;7ك+K&>$>Ny3ɋ^*>2ۋv6 Au~65F~ 6F ~6=F;$>t;*>u v6*>uFـt~65~ 6~6=&>NN N(>Na^ ^ ^36Ў:/;/S/F 6T%?NAAuJ6+Nv+ډ^؃T/NxQ~3V 6;PpN S=/?/?/׀&?/?/ptrptrĊ?*~3ۊ?s6C;^u?<uYN ngrafdraw.code  ngraf4.code  F muGuptrptr tPy +y3CJy3ҋ6+>Nv+B t)y +y3@Iy3ɋ6+>Pv+A t A/B/3~ >@ tq++;>@t>@` y  + OF;ru ;>@t4V+yF3JRV +yG3JRVWvvv RKSZ/N+Ay36N++y؉T/ۉV/X/S/ V 6;PQVYV +xK[V +By36P++}؉T/ۉV/X/S/ N+xRZN6;NZ0=/?/fF /׆rP^ru X?/<uF ^ vVNXF^v VNFNBv 2u+H3N3;BtBi x++++IF;vu3 uVJ@ u^ K;xu ;Bt&HANBH3v AHv23A3c3++xB;Vu3@ xE++++WPV+>AvW@)_A ^X_+A;Vr+VC;^u3IA uvN;xBHVy+36>P++GyF;v|+vًA+ًOANy+3;^ r+^ 6.N++EyXNV^ v~FUPSQVWRJ@Fy+3;^ |+^ 6>N++Gy׋~FORMATTE F &BIOS" @@@@@   @@  0ϽXV^ FNvWxEY6;P ZRNV2Z_^Y[X]USRQFy~+3;v|+v6P++B}~}VAR+AJ6+Nx3+AR+AANy+3;^ |+^ XNVF~v^ P txAF FX FXx t 9FtFYZ[]T&D_7T&D:T&EY:T& Ez=T&E:T& E8T&*E=E,>T&HE@T&REBT&\E3T&fE0T&pE,8T&zE8T&E$8T&EO8T&E1T&E1\"1/""""""""""""""""~"y"t"w=7kR FORMATTELap$ax"`t p ut pp)`,P.u t p`t pt p+tp=t p*tp4.*a;P=uat p vpa=u`t p  aAh + tp vptp >=P*a-P/uat p`tp ,+ڡ 0/ ,xhhh hր ar!br b+s,  Gn%' %x0Ր%"Ո:Kh r! YQ`h Y$#L f y \ 8 Tci>DDDoDhD~C5CCCCBBBBBZBTB3BAAAAAAAAIAEA?A9AA@@@@@@?????????q?@?/?*?%?>>>>>k>Z>S>>>>>>==========o=l=d=a=^=T=O=H=B=:======<<<<<<<<<<<<<<<<1:150/00/     y n7 N2$|L# $xL  nAbC?)ih !T ut pDtp)t p tpED bBs D  hEAbC?)ih !Tut pDtp)t p tpED bBs D  hEtpt ptptpg3s21F0F 30503s21F0F 305 0u4t p4tpt p t pFormat aborteddError  track , side ams (Var Drive, ;Start_Track, ;End_Track : Integer; 7Var Format : Format_Record; 7Var Bootable : Boolean) : Boolean; "Var Ch : Char; ! $Function Get_Number (Line : Integer; 9Prompt : String; 9Lowest, 9Highest : Integer) : Integer; $Var I : Integer; $Begin $ Repeat (Goto_XY (0, Line); $ Write (Prompt);  {$I-} Read (I);  {$I^} Until (IO_Result = 0) And (I In [Lowest..Highest]); $ Get_Number := I; $End {of Get_Number}; " " " $Function Get_Format (Var Drive : Integer;  %Format which drive (0,4,5,9 or 10) ? !Make Track 0 bootable (Y or N) ? @Format ALL tracks (Y or N) ? @%Type to begin, to abortStarting track ? Ending track ? %Type to begin, to abortFormatting track , side formattinggVerifying track , side verifying/NEC Disk Formatter Version U.1Format Successful errors during formattingFormat abortedd[&W(  EXTRAIO GOTOXY PASCALIONECFLO9Var Format : Format_Record) : Boolean; $Var Drv : DCB_Drive; (Cur_Type : DCB_Types; (DCB : DCB_Record; $Begin &Get_Format := False; &Case Drive Of )4 : Drv := DCB_D_0; )5 : Drv := DCB_D_1; )9 : Drv := DCB_D_2; (10 : Drv := DCB_D_3; &End {of Case}; &If DCB_Get_Drive (Drv, Cur_Type) Then (If DCB_Get_Record (Cur_Type, DCB) Then *Begin ,NEC_DCB_Convert (DCB, Format); ,Drive := Ord(Drv); ,Get_Format := True; *End; $End {of Get_Format}; $ $ $ "Begin {of Get_Params} $Get_Params := False; PPNECDCB  $Drive := Get_Number (5, 'Format which drive (0,4,5,9 or 10) ? ', 0, 10); $If Drive In [4,5,9,10] Then &If Get_Format (Drive, Format) Then (Begin *Ch := Get_Char (6, 'Make Track 0 bootable (Y or N) ? ', ['Y', 'N']); *If Ch <> Chr (Esc) Then ,Begin * Bootable := (Ch = 'Y'); .Ch := Get_Char (7, 'Format ALL tracks (Y or N) ? ', ['Y', 'N']); .If Ch = 'Y' Then 0Begin 2Start_Track := 0; 2End_Track := 76; 2Get_Params := Get_Char (10, 9'Type to begin, to abort', [' ']) = ' '; $TAG $CURSOR $EQUAL $SYNTAX $SYNTAX gbl O.F0End {of If 'Y'} .Else If Ch = 'N' Then 0Begin 2Start_Track := Get_Number (8, 'Starting track ? ', 0, 76); 2End_Track := Get_Number (9, 'Ending track ? ', KStart_Track, 76); 2Get_Params := Get_Char (10, 9'Type to begin, to abort', [' ']) = ' '; 0End {of If 'N'}; ( End {of If Chr (Esc)}; (End {of If Get_Format}; "End {of Get_Params}; ( $ $ "Procedure Format_Track (Drive, Track : Integer; :Format : Format_Record; :Bootable : Boolean); "Var Side : Integer; "Begin  {$B Debug+} $Writeln ('Into Format_Track');  {$E Debug+} $For Side := 0 To Pred (Format.Sides_Cylinder) Do &Begin (Check_Key;  {$B Debug-} (Goto_XY (0, 13);  {$E Debug-} (Write ('Formatting track ', Track); (If Format.Sides_Cylinder <> 1 Then *Write (', side ', Side); (If Not NEC_Format_Track (Drive, Track, Side, Format, Bootable) Then *Error (15, 'formatting', Track, Side);  End {of For};  {$B Debug+} $Writeln ('Out of Format_Track');  {$E Debug+} "End {of Format_Track};     {$D Debug- Enable debugging information output}  Program Formatter;   Uses {$U Bios:NEC.DCB.Code} NEC_DCB, %{$U NEC.Floppy.Code} NEC_Floppy_Access; #  Const Esc = 27; { Escape }   Type Char_Set = Set Of Char;   Var Errors, $Drive, $Start_Track, $End_Track, $Track : Integer; " Bootable : Boolean; $Format : Format_Record; " "Procedure Check_Key; "Var Ch : Char; &Stat_Rec : Array [0..29] Of Integer; "Begin " Unitstatu"Procedure Verify_Track (Drive, Track : Integer; :Format : Format_Record; :Bootable : Boolean); "Var Side : Integer; "Begin  {$B Debug+} $Writeln ('Into Verify_Track');  {$E Debug+} $For Side := 0 To Pred (Format.Sides_Cylinder) Do &Begin (Check_Key;  {$B Debug-} (Goto_XY (0, 14);  {$E Debug-} (Write ('Verifying track ', Track); (If Format.Sides_Cylinder <> 1 Then *Write (', side ', Side); (If Not NEC_Verify_Track (Drive, Track, Side, Format, Bootable) Then *Error (16, 'verifying', Track,s (2, Stat_Rec, 1); $If Stat_Rec[0] <> 0 Then &Begin & Read (Keyboard, Ch); (If Ch = Chr (Esc) Then *Begin ,Goto_XY (0, 20); ,Write ('Format aborted'); ,Exit (Formatter); *End {of If Ch}; &End {of If Stat_Rec}; "End {of Check_Key}; " " " "Procedure Error (Line : Integer; Operation : String; Track, Side : Integer); "Begin  {$B Debug-} $Goto_XY (0, Line);  {$E Debug-} $Write ('Error ', Operation, ' track ', Track); $If Format.Sides_Cylinder <> 1 Then &Write (', side ', Side);  Side); &End {of For};  {$B Debug+} $Writeln ('Out of Verify_Track');  {$E Debug+} "End {of Verify_Track}; " " "  Begin {of Formatter} "Writeln; "Writeln ('NEC Disk Formatter Version U.1'); "Writeln; "Errors := 0; "If Get_Params (Drive, Start_Track, End_Track, Format, Bootable) Then $Begin &NEC_Home_Disk (Drive); &For Track := Start_Track To End_Track Do (Format_Track (Drive, Track, Format, Bootable); &NEC_Home_Disk (Drive); &For Track := Start_Track To End_Track Do " Errors := Succ (Errors); "End {of Error}; " " " "Function Get_Char (Line : Integer; 5Prompt : String; 5Allowed : Char_Set) : Char; "Var Ch : Char; "Begin $Goto_XY (0, Line); $Write (Prompt, ' ':5); $Goto_XY (Length (Prompt), Line); $Repeat &Read (Keyboard, Ch); &If Ch In ['a'..'z'] Then (Ch := Chr (Ord (Ch) - Ord('a') + Ord('A')); $Until Ch In Allowed + [Chr (Esc)]; $If Ch < ' ' Then &Writeln $Else &Writeln (Ch); $Get_Char := Ch; "End {of Get_Char}; $ $ $ "Function Get_Par     (Verify_Track (Drive, Track, Format, Bootable);  {$B Debug-} &Goto_XY (0, 20);  {$E Debug-} &If Errors = 0 Then (Write ('Format Successful') &Else (Write (Errors, ' errors during formatting'); $End {of If} "Else $Write ('Format aborted');  End {of Formatter}. e : Boolean; JFunc_Disable : Boolean; JCtrl_Disable : Boolean; JGr1_Disable : Boolean; JGr2_Disable : Boolean; JFiller_3 : Boolean; JAlt_Disable : Boolean; JShift_Disable : Boolean; JCaps_Disable : Boolean; JClick_Enable : Boolean; JFiller_4 : Boolean; JAlt_Font_Enable : Boolean; JShow_Ctrl_Enable: Boolean; JEnter_CR : Boolean; JColor : Integer; HEnd {of Console_Values}; 7Printer_Values : Packed Record JP_Par_Enable : Boolean; JP_Par_Even : Boolean; HEnd {of Printer_Values}; 7Remote_Values : Packed Record JBits : 0..3; JS_Par_Enable : Boolean; JS_Par_Even : Boolean; JStop_Bits : 0..3; JBaud_Rate : 0..8; JX_On_X_Off : Boolean; HEnd {of Remote_Values}; 5 Disk_Values : Packed Record JFlush_Hard : Boolean; H Filler_Disk : 0..127; JLoad_Device : Char; HEnd {of Disk_Values}; 5End {of NEC_Val_Rec};  "Function NEC_Get_Values (Var VNECDCB  IV.0 [1e]alues : NEC_Val_Rec) : Boolean;  "Function NEC_Set_Values (Var Values : NEC_Val_Rec; ?Permanent : Boolean) : Boolean;   Implementation   Type "DCB_Types = (DCB_D_0, DCB_D_1, DCB_D_2, DCB_D_3, /DCB_File, /DCB_F_1, DCB_F_2, DCB_F_3, DCB_F_4, DCB_F_5, /DCB_F_6, DCB_F_7, DCB_F_8, DCB_F_9, DCB_F_10, /DCB_F_11, DCB_F_12, DCB_F_13, DCB_F_14, DCB_F_15); "DCB_Drives = DCB_D_0..DCB_D3; "DCB_Record = Packed Record 1Tracks : Integer; 1Sectors : Integer; 1Bytes : Integer; 1Intlv : Integer; 1First : Integer; 1Skew : Integer; 1Name : Packed Array [0..3] Of Char; 1Recording : (S_Dens_S_Side, D_Dens_S_Side, >S_DeNECCONFIA_.Ap"sp.spt pt p.A_ˀA-a.`r +g p ʄ ʄ ʁhgpgjaahg`r 堤sp|spspztppA_/@/A_ˀAsp/spsp/ sp/p^6B42@2v/2㾺++2'226@ ] PASCALIOEXTRAIO NECHARDW ns_D_Side, D_Dens_D_Side); 1Filler_1 : 0..63; 1Undefined : Boolean; 1Filler_2 : 0..127; /End {of Record};  "Function DCB_Get_Record (DCB : DCB_Types; Var DCB_Rec : DCB_Record) : Boolean; " "Function DCB_Put_Record (DCB : DCB_Types; DCB_Rec : DCB_Record) : Boolean;  "Function DCB_Get_Drive (Drive : DCB_Drives; Var DCB : DCB_Types) : Boolean;  "Function DCB_Put_Drive (Drive : DCB_Drives; DCB : DCB_Types) : Boolean; Implementation  NECDCB F<sF 64$Ў~F<s0F 6=&E&E&E$Ў؋vvs!F6@+-$n2F~s6F<s/6$DuqGGGFbI)    uses {$U kernel.code} kernel;  type litrecp=^litrec; %litrec=record , next:litrecp; , size:integer; {# of words of whole record} .bytes:packed array[0..1]of 0..255;{contains chars accessed r-} ,end;  var myprogin,mysysin,oldinput,oldoutput,monitor:fibp; $chainlist,progliteral,sysliteral:litrecp; procedure writemonchar(ch:char); function getredirectchar:char;  procedure updatebools; "procedure remliteral(var listhead:litrecp); "  implementation O.SMALLCOMD6543x1:17W!xh!!xx`u!xh       p!664435jR4/4`t 4y  h4z43 r r4  ap 4 ap j!0 s(i==pi=.J$ UPERMHEAPPASCALIOEXTRAIO COMMANDI        type bigstring=string[255];  var havechain,inredirect,outredirect,monitoropen,inmonitor:boolean; "function redirect(command:bigstring):boolean;  procedure exception(stopchaining:boolean); "procedure chain(command:bigstring); " Draw_Win_Ovfl = 14; {Draw ignored, window list out of range} " Draw_Win_Imp = 15; {Draw ignored, implementation restrict} (Draw_No_Font = 16; {Draw ignored, no font defined} (Draw_Max = Draw_No_Font; {Current maximum draw result number} ( "Type Cur_Attribute = (Cur_Disable, { Cursor disable } 8Cur_Enable, { Cursor enable } 8Cur_Visible, { Cursor visible } 8Cur_Invisible, { Cursor invisible } 8Cur_Small, { Cursor small } 8Cur_Full); { Cursor full } 'Switch_Types = (Off, On); 'Overlay_Type = (Replace, { Replace contents } 8Xor); { Merge contents } 'Display_Type = (Fast, { No filling } 8Fill); { Fill all polygons } "procedure initcommand;  procedure startmonitor; "procedure stopmonitor(saveit:boolean); "procedure getchainline(var command:bigstring); "  implementation 'Int_Type = (Plain, { Solid rectangle } 8Patterned); { User pattern } 'Edge_Type = (Solid_Line, { Solid border } 8Interior); { Invisible border } 9 'Directions = (Left, { Left direction or position } 8Right, { Right direction or position } 8Up, { Up direction } 8Down, { Down direction } 8Top, { Top position } COMMANDIf+1 u _ u `Pu u `A*-r+*-pć*+s*`spu *r*+1,h!ssp u `rDĆĆĆĆ:ĆĆĘ:v# $x$v:#j`"r " # #p$xi!$ Ċ !x!xi! vޖ pv`` 0"!xh x"!xxA! xs" x8Center, { Center (horz/vert) position } 8Bottom); { Bottom position } 'Font_Type = -1..99; 'Pat_Type = -1..99; 'Color_Index = 0..15; 'Point = Integer; 'Point_Array = Array [1..128] Of Point; 'Sorcery = ^Integer; 'Win_Rec_P = ^Win_Rec; 'Win_Rec = Record 9Next_Window : Win_Rec_P; 9Win_X_Org, { Global drawspace coordinates } 9Win_Y_Org, 9Disp_X_Org, { Display screen coordinates } 9Disp_Y_Org, 9Win_X_Size, !xx!x!x r "!xxĖX0[P]ZYxk0}b-rab-p"!s"0Ysp"ld0Pwd'UwdYsp+ZY Z#xYxx Yx"#"Ċbr]ZY v\<@p  [ [ ii/W[h=W hi?hWW ""WW h, ! Ȋ !!iWW ""ԯ!ȭWX ґ ґ "*"!  A)`+P҈ { Window size in pixels } 9Win_Y_Size : Point; 7End {of Win_Rec}; ' 'Core_Record = Record 9X_Min, { Left edge of screen } 9X_Max, { Right edge of screen } 9Y_Min, { Top edge of screen } 9Y_Max, { Bottom edge of screen } 9 9X_Org, { X-origin of fill pattern } 9Y_Org, { Y-origin of fill pattern } 9 9X_CP, { X-current position } 9Y_CP : Point;{ Y-current position } 9 .҂+,҂,-`P* -P.[݄۬͛<@ZччZ`-(ъ℀.02345UWՁ WWWXX ⼃6 XXX =խU `:(чч VXW^VWXZYYZDY SS; SaASSYWVYYVvXXUՇU "  d`9Line_Index, { Line color} 9Fill_Index, { Filled object color } 9Text_Index, { Text color} 9Background : Color_Index; { Background color } ; 9Line_Style : Integer; { Line pattern } 9Display_Mode : Display_Type; { Fast/Fill } 9Overlay_Mode : Overlay_Type; { Replace/Xor pixels } 9Polygon_Interior : Int_Type; { Plain/Patterned } 9Polygon_Edge : Edge_Type; { Solid_Line/Interior } 9 9Font_Number : Font_Type; { Current font number } 9Font_Cols, XW`ZYYZ=[WYSSC SaAS`YSȇYYXWyU `K(<@@LݖS ]file already openWrite to what file? can't open filecan't close filee.text   PIIPOOIOPL  *USERLIB.TEXTi=o=pi=po=i=""pi=""qG bW#dSTRINGOPSMALLCOMPASCALIOEXTRAIO FILEOPS PERMHEAP  { Columns per char } 9Font_Rows : Point; { Rows per char } 9 9Char_Spacing : Real; { Character pitch } 9Top_Bottom, { Above/below text } 9Left_Right, { Left/right of text } 9Char_Path : Directions; { Write direction } 9DX_Charup, { Char rotation X } 9DY_Charup : Integer; { Char rotation Y } 9Char_Height, { Rows to display } 9Char_Width : Integer; { Colums to display } 9   "Const Graf_Version = '0.5';  (Draw_OK = 0; {Nominal draw result} (Draw_Clipped = 1; {Draw performed, figure clipped} (Draw_Init = 2; {Draw variables at initial state} (Draw_Overflow = 10; {Draw ignored, coordinate out of range} (Draw_Not_Imp = 11; {Draw ignored, feature not implemented} (Draw_Not_Found = 12; {Draw ignored, file not found} (Draw_No_Memory = 13; {Draw ignored, not enough memory} (      9Pat_Number : Pat_Type; { User pattern number } 9Pat_Cols, { Columns in pattern } 9Pat_Rows : Point; { Rows in pattern } 7 9File_Prefix : String[7]; { Prefix for font, text } 9 9Region_X_Org, 9Region_Y_Org : Point; {Draw region origin} 9 9Window_List : Win_Rec_P; {Chain of window records} 9Win_X_Res, 9Win_Y_Res : Point; {Deltas for window coords} 9 9Glob_X_Min, 9Glob_X_Max, 9Glob_Y_Min, 9Glob_Y_Max : Point; {Global coor_;tڋGsڋwt73^u@ډGhڋGs_F=73vu@_;tڋwt73^u@ډG F=u Q QڋGЋڋ_ sڋG^EڋG^ڋ3t;vt@#GsTF=|>ڋGsڋwt7ڋFGڋGs!ڋwt7ڋG^ ڋGF3^|@^3~; F#sD3^|@^3~;F#s^G^^FGF^^G^ ^G^ YڋGF^GF F^FF3^|@^3~; dinates} 7 9Draw_Result : Draw_OK..Draw_Max; V{Result of last draw} 7End {of Core_Record}; " "Var Core : ^Core_Record;  Procedure Move_Abs (X_Position, 6Y_Position : Point); " "Procedure Move_Cursor (X_Position, 9Y_Position : Point); " "Procedure Move_Rel (Delta_X, 6Delta_Y : Point); " "Procedure Set_Cursor (Attrib : Cur_Attribute); " "Procedure Size_Cursor (Size : Integer); " Procedure Set_Fill_Pattern (Pattern_Num : Pat_Type); " F#sD3^|@^3~;F#s^G^^FGF^^G^ ^G^ `$$ rĆĆĆ0o''''' ' ' '' ' ''''''''''''''''!' '"N'.'- ','+!"#"777777"7#'(7'*%')&'(#'/Ė0/ Ė&xh`%Ċ%`$Ċ$`#Ċ#"!0/Ė"Procedure Box_Abs (X_Corner, Y_Corner : Point); " "Procedure Box_Rel (Width, Height : Point); " Procedure Write_Block_Pixels (Data : Sorcery; Rows, Columns : Integer); " "Procedure Read_Block_Pixels (Data : Sorcery; Rows, Columns : Integer); " Procedure Set_Charup (DX_Charup, 8DY_Charup : Integer); " "Procedure Set_Font (Font_Num : Font_Type); " "Procedure Text (The_String : String); " Procedure Set_Line_Style (Dot_1, $yk$xj&$x&&$~&%$#$"$y%%%$|&%$#$"Ċ$y$x&$y%$x$ $ 6$'$ /$$y$x&$y%$x$ 6$)&$y%$x$!$ 9 327$/!Ėk0k#y%j#x$i""#~!!#| ڋF+GFڋGFڋ_;G ~ڋ_G FڋG^ ڋGFFF+Fڋ__+vvPQQVQQ&ڋF+G=}FڋG^ ڋF+GFڋGFڋ_;G~ڋ_GFڋG^ ڋGFFF+Fڋ__+vvQPQVQQ&ڋGFڋGr^G^ 3^|@^3~; F#sw3^|@^3~;F#sXڋGsڋwt7ڋFGڋFGڋGsڋwt7^G^^G^ڋG^F=@3vu@      "!d## 98h 327##y#x%$# # 6#'# ###y#x%$# 6#) %$#!# 9 327#/Ė/0/.թh./j "tmg"tlf"tk#o ./( ' & , -98i!327--y--x./f./9--y--x!327f#t-y.-~-x/-|-/Ċ-/Ċ-/ $g$t% %t-/Ė0i#"B!98h 327!y!x$"#+ 327!y"!~!x#!|!/Ċ!/Ċ!/Ė/[s0 5t0ewPe 0e 0Ȅ/[[0"u[}u[eXu[s0/ pխF^F@F&Fsڋwt7ڋG^v؉7 "0hi!~e!} 6 y x"!z !  .!| 6 y x"!y !  .!{ 6 y x"!x !  .) ڋ_tG +DFڋ_tG+FF$;F u'F$s3^";^~@F53^";^}@F%F$™…yÌ3ۋv ;tC^FFF$@™…ỷFF F™…ỷFvF;F}FFFFFsF$;FuF";F}F"FQv&v53[;^@F yQv&vv6FFsF$;FuF";F~F/Wv՜ZYXWj"t5wlih"!"k!k[ #p #h"#j"/[vli$"$,0[[ć[Wć[XćY Z [/Ċ0/ Ą/s !0 0Ċ0 Ċ 00!!0/Ė6<N(QNzQPڋGF$^$G"=}F^$G&™‹^$o$»™‰Fڋv$D8@¾ƒ4؋v$D6@؋F^$v$D&™G:^$™&‰F^$v$D$™G<^$™$‰F^$3_8t@^$3_0F;u"^$G$n‰F ^$G&n‰F ^$G&"F3^;^@3ۋv;vC#؉^ 'ڋ_G;F} ڋ_GFFFFsF$;FuF";F}F"FQv&v53[;^@F ڋ_Qv&wv6FFsF$;FuF";F~F"F3^;^@3ۋv;vC#؉^ sڋ_;F} ڋ_FFFFsF$;FuF";F}F"FQv&v5ڋ_3^;w@F ڋ_Qv&7v6FFsF$;FuF";F~F"F3^;^@ڋ_3~;F#ƉF F;F}FFFFFsF$;FuF";F}F"FQv&v5ڋ_3^;7@F bQv&vv6FFn‰F ^$G$n‰F v ̨^$O(QQ¾FF(2Hn‰F^$GF^$F^$w0^$w4$2F ™‹^+؉^F+F F[w.^$w27FFF9F+F ^ ^ΙƉFF+F F [w. 3^}@^ ^v$3K;\~G rF^$w4$2F ™‹^+؉^F+F F[w.0^$w2*5F F™‹^+؉^F+F+F F [w.:3^}@^ ^v$3K;\~G rpFh^$w4*F+F+F F,F F™‹^+؉^[sF$;FuF";F~F"F3^;^@ڋ_3~;?F#ƉF [w.3^;^ u@^#^F#F # F rF ЉFF r!F@™…ỷFF F™…ỷFvF&;FFF F ;FuF;F }FF Qv&v v6F F ^F;F}SFF F EF&;F:FF F ;FuF;F }FF Qv&v v6F F F;F}FF F ڋ_F&;Gڋ_GF F ;FuF;F }FF Qv&v v6F F ڋ_F;G}ڋ_GF F tڋ_F&;~w.J^$w2$/F ™‹^+؉^F+F F [w.T3^}@^ ^v$3K;\ ~G rF^$w47F+F F~`(`'`&`%`$`#`"`!0 0/Ė hڋGFF^3_u@#G#GFFsڋwt7^GF ^3;G ~F^F 3_;}G sm^F ؋_;ih;ih2ih)ihihih ihր.f󿢇b󿢑!.f .b,"0""uh"98:塤 (327/̆i j:)//+ ++' ''"y/"~"y/"x/"|"x/h : * "y"x/!"" " 6"0+n'"o+r+r'r'r& /̄m /̄m' /̄l /̄l &%""m'&%$ l%!!m' $""l} ^G؉F^vG +DFv ̨F yy3PèFyy3P¿F FF F^F ^3;G~F^F 3;}G sj^F ؋;} ^؉F^vG+Fv ̨F yy3PèFyy3P¿F FF F^v~G^P4E~v v Pwtu&Fsڋwt7^FG^^vDF G^F ^x!0y 0x Fڋ_3_u@#G#GFFsڋwt7FڋGFFFFF;F~FFH^FFH^F$!!l:D9 &&%Ċ&%ć%/&x5ć&x&+$Ċ$$ć#/$x5 "y"x/&%'$!"" " 6"0 /&%'$"!#x;:n$x&x$x&x#x%x ,"y"x&x%x&<kk"y"x$x#x'#<,"y"x&x%x&#<) (327"/ Ė/N-%'$&`&`*`$&%'r%' ``. $&``2 `-0h'$ y6# x:r& y x$#=% y x"!='x&%dcba '.0k#98h 327$l# $>aaaa # ##y#x$## 6-$: 327#y$#~^F+GF ^F+F^GF ^3;G ~F^F 3_;}G sm^F ؋_;} ^G؉F ^vG +DF v̨F yy3PèF yy3P¿FF F F^F^3;G~F^F3;}G sj^F؋;} ^؉F ^vG+F v ̨Fyy3PèF yy3P¿F F FFFs1^v~G^P4E~v vPwtu&3^ t@3ۋvtC ؉^^FGF^F@FFsڋwt7ڋG^v؉7@" F ڋ_3_u@#y$#x$#|#x$#/Ċ#/Ė.0k%#yB$#xFri#98h 327# !Jbbbb # ##y#x!## 6-!: 327#y!#~#y!#x!#|#x!#/Ċ#/Ė.w0w8 0-0+"0T  &F}G@FK@JIxpL=/?/Nv+B t)y +y3@Iy3ɋ6+>Pv+A t A/B/3~ >@ tq++;>@t>@` y  + OF;ru ;>@t4V+yF3JRV +yG3JRVWvvv RKSZ/N+Ay36N++y؉T/ۉV/X/S/ V 6;PQVYV +xK[V +By36P++}؉T/ۉV/X/S/ N+xRZN6;NZ0=/?/fF /׆rP^ru X?/<u+F݉v :/;/A/B/36\/F6 V$3 Fu~tYN 6TȉN V 6RӉV 6N@36PF ^ vVNXF^v VNFNBv 2u+H3N3;BtBi x++++IF;vu3 uVJ@ u^ K;xu ;Bt&HANBH3v AHv23A3c3++xB;Vu3@ xE++++WPV+>AvW@)_A ^X_+A;Vr+VC;^u3IA uvN;xBHVy+36>P++GyF;v|+vًA+ًOANy+3;^ r+^ 6.N++EyXNV^ v~FUPSQVWRJ@Fy+3;^ |+^ 6>N++Gy׋~313~u8FtN V V Ӌ VW6;R|uPYPPVH;~‡T;} ދ=^XQȋ@;} *-;~ދƇ_^;3;u_YSQRWVPA;}EZRV}΀2oo/:3tF;}u[ZRWS*^_XX^_ZY[VWSQR=/?/3D?:ZY[_^VWSQR=/?/6TJzupZY[_^Ä3u];tY@3֊ʀ3t 3;u;vBq;}׃>T/t puu?/Ä3u;t@֊ʂـϽXV^ FNvWxEY6;P ZRNV2Z_^Y[X]USRQFy~+3;v|+v6P++B}~}VAR+AJ6+Nx3+AR+AANy+3;^ |+^ XNVF~v^ P txAF FX FXx t 9FtFYZ[]T&D_7T&D:T&EY:T& Ez=T&E:T& E8T&*E=E,>T&HE@T&REBT&\E3T&fE0T&pE,8T&zE8T&E$8T&EO8T&E1T&E1\"1/""""""""""""""""~"y"t"w=7kR 3t 3;u;~Jq;뎋2oo/Ë=/?/2323232Ü$+ȝuP#΀YIt(3?/âS/T/S[ptrptrT/PSQRAS/ +Hx]T/أV/X/Z/=/?/fF /׆r!P^r uc>$ '*X?/<uZY[X36T6R6N6PrvF1nr(/A1/83//5/&3PPSSPSP 336Vd6VnFFFF42FF F y \ 8 Tci>DDDoDhD~C5CCCCBBBBBZBTB3BAAAAAAAAIAEA?A9AA@@@@@@?????????q?@?/?*?%?>>>>>k>Z>S>>>>>>==========o=l=d=a=^=T=O=H=B=:======<<<<<<<<<<<<<<<<1:150/00/ p tp u r r rˋF 6TF6RFH6NFH6PN V~JJ/v xL Ff Hx ؊FfHyNS/zt^Ft t^y8F |8FS/uF8{8F~8H/|8}8y8z8v~86{82 u:Vu 6C΀tuƊVt:vuЊ-O}8uz8N }8^2t z8:Nt낈6{8~8*2V/X/*2T/8VS/uV0=/?/f F /׆r$^Pr u uX?/<u////v/p/j/f/DDDDEE E EEE EE*E(E4E2E>ES/rS/uFFz8y8:Nt{F^VN 2 y  y ;s/ S/£T/ ȋZ/V/)V/+؉X/ FN ^V hubF^N V S/N IT/F /ף:F׊ Êࣰ::/;/A/CCkF6T%tY+؋F ;vãV/X/F)F V6:.:rQ ^ru:Yu.:F %tWرV/X/NV^)^ B6:.:r"Q^ruYu.:F tDV/X/NV6:.:r$CURSOR $EQUAL GO.Q\^ruVjYu^VFNt^VFNS/F t-<~ u3ۉ/<^1<F3Z^v@T7<F;7ك+K&>$>Ny3ɋ^*>2ۋv6 Au~65F~ 6F ~6=F;$>t;*>u v6*>uFـt~65~ 6~6=&>NN N(>Na^ ^ ^36Ў:/;/S/F 6T%?NAAuJ6+Nv+ډ^؃T/NxQ~3V 6;PpN S=/?/?/׀&?/?/ptrptrĊ?*~3ۊ?s6C;^u?<uYN!      Mr. James King June 28, 1983  Boeing Computer Services Company  Bldg 33-03 MS 7C-50  2800 160th Avenue S.E.  Bellevue, WA 98008    Dear Jim,   Sincerely,     William P. Franks  #mechanism and global flow analysis. Such optimizations are already #difficult, due in part to the dearth of information contained in the p- #code files used as input. # #The second decision involves the degree to which speed concerns overrule #space concerns within p-code sequences which are selected for translation #to native code. This occurs whenever the fastest form of code is not #the most compact, such as when to break into a loop or branch to an #assembly subroutine instead of producing in-line code. If this decision #is parameterized, then the difficulty shifts to deriving a meaningful #metric for the end-user to supply as input. Possibilities include a #size/speed ratio, an acceptable growth factor, or a set of fixed #optimization levels. #   2: The next decision involves the general approach used in the code #generation process. There are two basic techniques available to choose #from. # #The first approach is to make a single pass over the input p-code, $CURSOR $EQUAL $TAG J.#performing a static emulation of the run-time expression stack, and #producing a sequence of native code instruction records. Single local #expression optimizations are performed during this process. The native #code instruction records are subjected to peep-hole and jump #optimizations before being dumped into the final code file. # #This approach has the advantage of being the simpler of the two #approaches and produces code with reasonable local optimizations. #Additionally, it easily incorporates translation selection at the #individual p-code level and can handle unusual or low integrity p-code #sequences without undue difficulty. It has the disadvantage of limiting #the incorporation of more global or sophisticated optimizations. # #The second approach is to make several passes on the input p-code #producing a forest of expression trees. This forest of trees may be run #through several optional optimization passes to perform flow analysis,  3GUIDELINES FOR BCS NATIVE CODE GENERATOR ( " (The task as defined thus far, is to build a Native Code Generator (NCG)  which inputs BITS 4.0 executable code files, and produces faster, but otherwise  equivalent executable code files, composed to some degree with DEC LSI-11/23  instruction codes. Since other 16-bit architectures (Intel 8086 and Motorola  68000) are potiential future targets for NCGs, every effort should be made  to isolate and generalize code specific to the target processor.#loop optimizations, code movement, common sub-expressions lifetime #analysis, elimination of redundant code, strength reduction in #expressions, etc. The resulting forest is then "harvested" into a #sequence of native code instruction records, similar to those used in #the first approach. Of course, this sequence of instruction records is #subjected to peep-hole and jump optimizations before being deposited in #the final code file. # #This approach has the advantage of being able to optionally p  (In order to further specify the task the following issues need to  be resolved:   1: The most important decision involves the policy regarding the relative #importance of final code execution speed versus code size, and the #degree to which this choice is left to the end-user. Since for all #but the most carefully selected routines p-code is always more compact #and native code is always faster, the choice to use native code implies roduce a #much higher quality of final code. Moreover, it is better suited for #future incorporation of additional global or more sophisticated #optimizations. Also, a much smaller percentage of the NCG requires #knowledge of the target instruction set, making it less machine #dependent. On the negative side, this approach is more complicated and #requires more initial development to get a working model. In addition, #support for translation selection at the individual p-code level is #the existance of circumstances where execution speed is more important #than code size. The degree to which native code is larger or faster, is #dependent on both the type of operation being performed and the level of #optimization applied, varying dramatically across the range of possible #p-code sequences. # #The degree of choice available to the end user affects the viability #of the various optimization techniques. The first decision here #involves how much control the user has over what i#unduly complicated, and there is more difficulty in handling unusual or #low integrity p-code sequences. Finally, of course, the higher quality #of final code requires more time for the NCG to produce. # #  3: The next decision involves the quality of optimization attempted in #the initial implementation. This is most significant when using the #expression tree approach described above, since the choice of #optimizations which are reasonable to incorporate is far greater. This #issue is furthers translated into #native code. This control may be at the program or task level, the #segment level, the procedure level, or the single p-code level. Control #of translation at the single p-code level provides the end-user with the #maximum capability, but complicates beyond cost-effectiveness everything #except local expression, jump, and peep-hole optimizations. Translation #control at the procedure level complicates only the procedure calling "      complicated by the potiential on the negative side for #unusual or low integrity p-code sequences, and on the positive side for #extra compiler generated information embedded in the input p-code file. # #Unusual or low integrity p-code sequences refer to a compiler's use of #the evaluation stack to hold compiler temporaries or variables as #opposed to their allocation in local data space. This does not refer #to the natural use of the stack in holding intermediate results during rees to  funish Symantec with the source code, object code and documentation for  the SCI Bridge, described in Appendix A. In return for this  compensation and without further royalty, SCI grants Symantec and all of  its subsidiaries a nontransferrable, worldwide, perpetual license to  reproduce, or to contract with a third party to reproduce, the SCI  Bridge object code or any works derived therefrom, on any media, for the  use of Symantec and/or distribution to any third party. Additionally, #the computation of an expression, but rather to the compiler's use of #the stack to hold a temporary longer than the lifetime of a single #assignment statement. Although the expected use of any form of low #integrity p-code has an effect on the design of the NCG, the #difficulties only get serious when the temporary's lifetime crosses a #basic block boundary, and the complication becomes unreasonable when #the stack usage is not strictly nested. # #As alluded to earlier, some optimizations are mo SCI grants Symantec or its agents the right to hold up to a total of  five copies of the SCI Bridge source code for the purposes of product  development, maintenance and reasonable backup.  %Symantec agrees that any works of authorship such as writings,  computer program object and source, and program documentation provided  by SCI as part of the SCI Bridge, or works derived from such works,  remain the property of SCI. Symantec understands that SCI considers the  algorithms used in the implemenre difficult because of #the lack of information contained in the standard p-code file used for #input. This is understandable since p-code files are streamlined to #minimize execution space requirements. However, for example,information #such as procedure nesting and variable aliasing, which is necessary for #common sub-expression optimizations, is difficult to reconstruct. Often #such information is known or easily computed at compile time. tation of the SCI Bridge to be trade  secrets. Symantec understands that the distribution or dissemination of  either these trade secrets or the SCI Bridge source code outside of  Symantec damages SCI. Symantec agrees to protect these works and trade  secrets in the same manner as its own confidential material, and agrees  to reimburse SCI for any damages resulting from Symantec's negligence.  %SCI warrants to Symantec that the SCI Bridge is an original work of #Typically, a better job of optimization could be done if extra compiler #generated information were embedded in the input code file. # #Extra compiler generated information embedded in the input p-code file #may range from a specification of what code is selected for translation, #to a description of variable aliasing. # # #Interfaces: %Run-time environment %Final code format %User interface 'Selection of code to translate, 'parameters for translation size/space efficiency   SCI and does not infringe on any copyright or patent held by any third  party. Furthermore, SCI does not warrant the SCI Bridge as being suitable  for any particular use, nor does it accept any liability for damages  incurred by products that incorporate it.   //  4 4SCI Bridge License Agreement 4============================  =Continued =---------  %SCI agrees to provide a single copy of the SCI Bridge source and  code suitable for use with Symantec's proprietary version of the p-  System(tm) which was developed by SCI under the agreement between SCI  and Symantec dated December 16, 1983. This copy shall be delivered no  later than ________________, 1984. Symantec may review the SCI Bridge  as delivered to determine its suitability for Symantec's purposes and to  verify its correct operation. Symantec may refuse acceptance of the SCI  Bridge within 15 days of delivery if either the SCI Bridge cannot be  made to operate as specified, or it is not suitable for use with $CURSOR $EQUAL O. Symantec's product line. If Symantec accepts the SCI Bridge delivery,  payment of the $1,500.00 licensing fee is due within 15 days of  delivery; otherwise, Symantec must return all SCI Bridge materials to  SCI.    %Symantec Software Construction, Inc.   %______________________________ ______________________________  Signed Signed % %______________________________ ______________________________ %Name  Name % %______________________________ ______________________________ %Title Title % %______________________________ ______________________________ %Date Date % %   //   6SCI Bridge License Agreement 6============================  >Appendix A >----------  %The SCI Bridge is a proprietary product of Software Construction,  Inc. It is intended to allow the use of the standard UCSD Pascal I/O  4SCI Bridge License Agreement 4============================  %This agreement is entered into this ______ day of January, 1984, by  and between Software Construction, Inc. (hereinafter called "SCI"), a  California corporation, having a place of business at 3252 Holiday  Court, Suite 104, La Jolla, California, 92037, and Symantec, a  California corporation, having a place of business at 306 Potrero  Avenue, Sunnyvale, California, 94086.  %In consideration of a compensation of $1,500.00, SCI ag"      intrinsics in the generation and processing of files resident in MS-DOS  2.0 directories. Using the SCI Bridge, UCSD Pascal programs should be  able to generate and process such files using exactly the same intrinsic  calls as they would if generating and processing files resident in p-  System directories, subject to the following limitations:  %1) It is assumed that the Connection(tm) be executing under MS-DOS (as if it were a standard MS-DOS application and that it is  possible to cal$CURSOR $EQUAL onG.xxl the MS-DOS file system using the standard MS-  DOS file system calls.  %2) I/O must be constrained to files that are open. It is invalid (to use Unit I/O intrinsics on Connection pseudo-floppies independent (of there being an open file associated with the object of the (Unit I/O.  %3) There must be a '\' character preceeding all MS-DOS file names (used with the Reset and Rewrite intrinsics. This tag indicates (that the file name should be interpreted as a file name in the (MS-DOS file system instead of the p-System file system. Also, (serial volume names (e.g. CON and PRN) must be terminated by (a ':'. ! %4) P-System directories are not expected to be associated with  files opened under the MS-DOS file system. Thus, attempts to  read a p-System directory from the virtual floppy unit  containing an open file will fail if the file is maintained (under the MS-DOS file system.  %5) The p-System cannot execute code resident in files maintaine  Dan Lynch January 16, 1984  Symantec  306 Potrero Ave  Sunnyvale, Ca. 94086   Dear Dan,  %Enclosed you will find a license agreement for the SCI Bridge, the  documentation for the timing utilities, and a copy of the Native Code  Generator (NCG) delivered to SofTech on November 16, 1983. Two versions  of the NCG are provided. CG.8086 (version 1R8.0) generates calls to the  interpreter for real operations; CG.8087 (version 1R8.0) generates calld (under the MS-DOS file system.   //  6SCI Bridge License Agreement 6============================  9Appendix A (continued) 9----------------------  %Notably, the following intrinsics may be employed to generate and  process files maintained under the MS-DOS file system: Reset, Rewrite,  Close, Blockread, Blockwrite, IO_Result, Readln, Writeln, Read, Write,  Get, Put, Seek, Unitread, Unitwrite, Unitclear and Unitstatus. All such s  to an 8087 chip for real operations. It is assumed that you have  SofTech's permission to have and use this software; these copies are  provided as a courtesy in advance of SofTech's supplying you with  legitimate copies.  %Please review the SCI Bridge license agreement and return your  comments as soon as possible.  X XSincerely,  % % XBarry Demchak XVice President   //  8SCI Bridge License Agreement 8============================   intrinsics operate with exactly the same symantics as they would when  used to generate and process p-System files. Notably, all options of  the Close intrinsic operate as defined for UCSD Pascal, and all file  size specification options for the Rewrite intrinsic operate as defined  for UCSD Pascal. Additionally, files may be opened for later extension  in the manner native to the MS-DOS file system. Standard p-System four  character file suffixes are automatically translated into appropriate MS%This agreement is entered into this ______ day of January, 1984, by  and between Software Construction, Inc. (hereinafter called "SCI"), a  California corporation and Symantec, having a place of business at  306 Potrero Avenue, Sunnyvale, California, 94086.  %In consideration of the compensation of $1,500.00, SCI agrees to  funish Symantec with the source code, object code and documentation for  the SCI Bridge, described in Appendix A. In return for this  compensation and without further royalty-  DOS three character file suffixes. Finally, MS-DOS 2.0 path names may  be used when specifying a MS-DOS file name. %  , SCI grants Symantec and all of  its subsidiaries a nontransferrable right to use the SCI Bridge object  code (or any works derived therefrom) in its product lines in  perpetuity. Additionally, SCI grants Symantec or its agents the right  to hold up to a total of five copies of the SCI Bridge source code for  the purposes of product development, maintenance and reasonable backup.  %Symantec agrees that any works of authorship such as writings,  code suitable for use with Symantec's proprietary version of the p-  System(tm) which was developed by SCI under the agreement between SCI  and Symantec dated December 16, 1983. This copy shall be delivered no  later than  on floppy disks   computer program object and source, and program documentation provided  by SCI as part of the SCI Bridge, or works derived from such works,  remain the property of SCI. Symantec understands that SCI considers the  algorithms used in the implementation of the SCI Bridge to be trade  secrets. Symantec understands that the distribution or dissemination of  either these trade secrets or the works themselves outside of Symantec  damages SCI. Symantec agrees to protect these works and trade secrets  i#     n the same manner as any other confidential material, and agrees to  reimburse SCI for any damages resulting from Symantec's negligence.  %SCI warrants to Symantec that the SCI Bridge is an original work of  SCI and does not infringe on any copyright or patent held by any third  party. Furthermore, SCI warrants that the SCI Bridge behaves reliably  and correctly in accordance with the specification in Appendix A.  %SCI agrees to provide a single copy of the SCI Bridge source and  code suitable for use with Symantec's proprietary version of the p-  System(tm) which was developed by SCI under the agreement between SCI  and Symantec dated December 16, 1983. This copy shall be delivered no  later than ________________, 1984. Symantec may review the SCI Bridge  as delivered to determine its suitability for Symantec's purposes and to  verify its correct operation. Symantec may refuse acceptance of the SCI  Bridge within 15 days of delivery if either the SCI Bridge cannot be  m$CURSOR $EQUAL P G.xxade to operate as specified, or it is not suitable for use with  Symantec's product line. If Symantec accepts the SCI Bridge delivery,  payment of the $1,500.00 licensing fee is due within 15 days of  delivery; otherwise, Symantec must return all SCI Bridge materials to  SCI.   // 8SCI Bridge License Agreement 8============================  @Appendix A @----------  %The SCI Bridge is a proprietary product of Software Construction,  Inc. It is intended to allow the use of the standard UCSD Pascal I/O  intrinsics in the generation and processing of files resident in MS-DOS  2.0 directories. Using the SCI Bridge, UCSD Pascal programs should be  able to generate and process such files using exactly the same intrinsic  calls as they would if generating and processing files resident in p-  System directories, subject to the following limitations:  %1) It is assumed that the Connection(tm) be executing under MS-DOS (as if it wer  Dan Lynch January 16, 1984  Symantec  306 Potrero Ave  Sunnyvale, Ca. 94086   Dear Dan,  %Enclosed you will find a license agreement for the SCI Bridge, the  documentation for the timing utilities, and a copy of the Native Code  Generator (NCG) delivered to SofTech on November 16, 1983. Two versions  of the NCG are provided. CG.8086 (version 1R8.0) generates calls to the  interpreter for real operations; CG.8087 (version 1R8.0) generates calle a standard MS-DOS application and that it is  possible to call the MS-DOS file system using the standard MS-  DOS file system calls.  %2) I/O must be constrained to files that are open. It is invalid (to use Unit I/O intrinsics on Connection pseudo-floppies independent (of there being an open file associated with the object of the (Unit I/O.  %3) There must be a '\' character preceeding all MS-DOS file names (used with the Reset and Rewrite intrinsics. This tag indicates s  to an 8087 chip for real operations. It is assumed that you have  SofTech's permission to have and use this software; these copies are  provided as a courtesy in advance of SofTech's supplying you with  legitimate copies.  %Please review the SCI Bridge license agreement and return your  comments as soon as possible.  X XSincerely,  % % XBarry Demchak XVice President   //  4SCI Bridge License Agreement 4============================  (that the file name should be interpreted as a file name in the (MS-DOS file system instead of the p-System file system. ! %4) P-System directories are not expected to be associated with  files opened under the MS-DOS file system. Thus, attempts to  read a p-System directory from the virtual floppy unit  containing an open file will fail if the file is maintained (under the MS-DOS file system.  %5) The p-System cannot execute code resident in files maintained (under the %This agreement is entered into this ______ day of January, 1984, by  and between Software Construction, Inc. (hereinafter called "SCI"), a  California corporation and Symantec, having a place of business at  306 Potrero Avenue, Sunnyvale, California, 94086.  %In consideration of the compensation of $1,500.00, SCI agrees to  funish Symantec with the source code, object code and documentation for  the SCI Bridge, described in Appendix A. In return for this  compensation and without further royaltyMS-DOS file system.  %Notably, the following intrinsics may be employed to generate and  process files maintained under the MS-DOS file system: Reset, Rewrite,  Close, Blockread, Blockwrite, IO_Result, Readln, Writeln, Read, Write,  Get, Put, Seek, Unitread, Unitwrite, Unitclear and Unitstatus. All such  intrinsics operate with exactly the same symantics as they would when  used to generate and process p-System files. Notably, all options of , SCI grants Symantec and all of  its subsidiaries a nontransferrable right to use the SCI Bridge object  code (or any works derived therefrom) in its product lines in  perpetuity. Additionally, SCI grants Symantec or its agents the right  to hold up to a total of five copies of the SCI Bridge source code for  the purposes of product development, maintenance and reasonable backup.  %Symantec agrees that any works of authorship such as writings,  the Close intrinsic operate as defined for UCSD Pascal, and all file  size specification options for the Rewrite intrinsic operate as defined  for UCSD Pascal. Additionally, files may be opened for later extension  in the manner native to the MS-DOS file system. Standard p-System four  character file suffixes are automatically translated into appropriate MS-  DOS three character file suffixes. Finally, MS-DOS 2.0 path names may  be used when specifying a MS-DOS file name. %  %  #      computer program object and source, and program documentation provided  by SCI as part of the SCI Bridge, or works derived from such works,  remain the property of SCI. Symantec understands that SCI considers the  algorithms used in the implementation of the SCI Bridge to be trade  secrets. Symantec understands that the distribution or dissemination of  either these trade secrets or the works themselves outside of Symantec  damages SCI. Symantec agrees to protect these works and trade secrets  i containing an open file will fail if the file is maintained (under the MS-DOS file system.  %5) The p-System cannot execute code resident in files maintained (under the MS-DOS file system.  %Notably, the following intrinsics may be employed to generate and  process files maintained under the MS-DOS file system: Reset, Rewrite,  Close, Blockread, Blockwrite, IO_Result, Readln, Writeln, Read, Write,  Get, Put, Seek, Unitread, Unitwrite, Unitclear and Unitstatus. All such  intrinsics open the same manner as any other confidential material, and agrees to  reimburse SCI for any damages resulting from Symantec's negligence.  %SCI warrants to Symantec that the SCI Bridge is an original work of  SCI and does not infringe on any copyright or patent held by any third  party. Furthermore, SCI warrants that the SCI Bridge behaves reliably  and correctly in accordance with the specification in Appendix A.   // 4 4SCI Bridge License Agreement 4============================  rate with exactly the same symantics as they would when  used to generate and process p-System files. Notably, all options of  the Close intrinsic operate as defined for UCSD Pascal, and all file  size specification options for the Rewrite intrinsic operate as defined  for UCSD Pascal. Additionally, files may be opened for later extension  in the manner native to the MS-DOS file system. Standard p-System four  character file suffixes are automatically translated into appropriate MS- =Continued =---------  %SCI agrees to provide a single copy of the SCI Bridge source and  code suitable for use with Symantec's proprietary version of the p-  System(tm) which was developed by SCI under the agreement between SCI  and Symantec dated December 16, 1983. This copy shall be delivered no  later than ________________, 1984. Symantec may review the SCI Bridge  as delivered to determine its suitability for Symantec's purposes and to  verify its correct operation. Symantec may refuse ac DOS three character file suffixes. Finally, MS-DOS 2.0 path names may  be used when specifying a MS-DOS file name. %  // % 2Task 3 Documentation -- Timing Unit 2===================================  %The timing facility produced for task 3 may be used in one of two  ways: 1) to time the entire execution of an unmodified program, or 2) to  time selected sections of code. In the first mode, timing is specified  at the main system prompt line as an execution option to the E(xecute  prompt. In ceptance of the SCI  Bridge within 15 days of delivery if either the SCI Bridge cannot be  made to operate as specified, or it is not suitable for use with  Symantec's product line. If Symantec accepts the SCI Bridge delivery,  payment of the $1,500.00 licensing fee is due within 15 days of  delivery; otherwise, Symantec must return all SCI Bridge materials to  SCI.    %Symantec Software Construction, Inc.   the second mode, timing is controlled by program calls to a  timing unit. The timing executive samples program execution at a fixed  interval and produces a report of the most frequently executed  procedures.  %Note that the timing executive exists in the TimeUnit unit located  in the operating system code file (System.Pascal). Timing is not  possible if this unit is not installed in System.Pascal, and its  presence is not required in order for the p-System to run correctly. If %______________________________ ______________________________  Signed Signed % %______________________________ ______________________________ %Name Name % %______________________________ ______________________________ %Title Title % %______________________________ ______________________________ %Date Date % %   //  6SCI Bridge License Agreement 6=== present, the timing executive occupies approximately 1000 words of data  space.  % %  Operation at Prompt Line  ------------------------  %Timing may be controlled at the system prompt line by using the T=  execution option. This option is similar to I/O redirection options in  that a file name follows the T= and specifies a timing output file. The  format of a timing execution option is:  % ::= T= [ ( ) ]  %The specif=========================  >Appendix A >----------  %The SCI Bridge is a proprietary product of Software Construction,  Inc. It is intended to allow the use of the standard UCSD Pascal I/O  intrinsics in the generation and processing of files resident in MS-DOS  2.0 directories. Using the SCI Bridge, UCSD Pascal programs should be  able to generate and process such files using exactly the same intrinsic  calls as they would if generating and processing files resident in p- ies the name of a statistics file that  the timing executive uses in order to log timing information. The file  contains the segment name and procedure number being executed by the  user program when the timing executive samples program execution. The  timing executive packs 51 samples per block.  %An optional may be specified by enclosing an  integer in parentheses following the file name. This parameter governs  System directories, subject to the following limitations:  %1) It is assumed that the Connection(tm) be executing under MS-DOS (as if it were a standard MS-DOS application and that it is  possible to call the MS-DOS file system using the standard MS-  DOS file system calls.  %2) I/O must be constrained to files that are open. It is invalid (to use Unit I/O intrinsics on Connection pseudo-floppies independent (of there being an open file associated with the object of the (Uni the timing executive sampling rate, specified in 18.2th's of a second  (the IBM PC interval clock rate). The default timing interval is 18;  the minimum timing interval is 1. Note that the size of the final  statistics file depends on the length of execution of the sampled  program and the sampling rate. Large statistics files may be generated  by using the minimum timing interval for a very long execution.  %A sample program invokation is:  0E(xecute what file? Test.Proc T=#5:Time.Stat(1) t I/O.  %3) There must be a '\' character preceeding all MS-DOS file names (used with the Reset and Rewrite intrinsics. This tag indicates (that the file name should be interpreted as a file name in the (MS-DOS file system instead of the p-System file system. ! %4) P-System directories are not expected to be associated with  files opened under the MS-DOS file system. Thus, attempts to  read a p-System directory from the virtual floppy unit $      %  //   Operation from User Program  ---------------------------  %A user program may include calls to the timing executive to control  statistics sampling and logging. These calls may be used either in  conjunction with, or exclusive of the prompt line timing option. A  program may call the timing executive by using the TimeUnit unit  provided in this release. The calls are:  %Function TC_Open_File (File_Name : String) : Boolean; nted separately at the  bottom of the report.  '{Stops any sampling in progress, closes any current statistics (file, and creates a new statistics file of the specified name. (Also Mem_Locks the Time_Unit and Extra_IO units. The function (is returned True if the file is successfully opened; otherwise, (False is returned.} % %Function TC_Close_File : Boolean; '{Stops any sampling in progress and closes any current statistics (file. Also Mem_Swaps the Time_Unit and Extra_IO units. The (function is returned True if the file is successfully cl$CURSOR $EQUAL G.osed; (otherwise, False is returned.} ( %Procedure TC_Start (Interval : Integer); '{Starts statistics gathering at the specified interval. The (interval is interpreted as a number of 18.2th's of a second. (Calls to this procedure not preceeded by a successful call to (TC_Open_File and intervals specified less than 1 cause the (TC_Start call to be ignored.} % %Procedure TC_Stop; '{Suspends statistics gathering, but does not close the statistics (file.} % %Procedure TC_Resume; '{Restarts statistics gathering at the rate specified in the last (TC_Start call. If TC_Start was never called, the sampling rate (defaults to 18.} ( %Procedure TC_Init; '{Initializes the timing executive. This should be called by the (operating system ONLY, and ONLY at system bootstrap time.} ( %Procedure TC_Suicide; '{Kills the timing executive. This should never be called.} '  // % %Example:  +Program Test; +Uses {$U TimeUnit.Code} Time_Unit; + -Procedure One; -Var I : Integer; -  Marvin Kreithen February 9, 1984  Manager of Engineering  Bridgeport Textron  200 Precision Road  Horsham, Pa 19044   Dear Mr. Kreithen,  %I am submitting this license as a result of a conversation with  Lana Fishman today. We discussed the acquisition of parts of the  Grafdraw graphics module source by your company. Please review the  license, sign both copies then return one signed copy to us.  %Since we have not been introduced, I would likeBegin /For I := 0 To 3 Do 1{Nothing}; -End {of One}; - -Procedure Two; -Var I : Integer; -Begin /For I := 0 To 30000 Do 1One; -End {of Two}; - +Begin {of Test} -If TC_Open ('*Time.Data') Then /Begin 1TC_Start (1 {18.2 times per second}); 1Two; 1If TC_Close Then 3{Don't care}; /End {of If} -Else /Writeln ('Could not open timing file!'); +End {of Test}. 0 0   Statistics Processing  ---------------------  %A timing statistics file may be processed and a timing histogram  to take this  opportunity to familiarize you with our company. Software Construction,  Inc. is a consulting company that specializes in p-System and MS-DOS  systems- and applications-oriented software consulting. All of us worked  on the UCSD Pascal system as it was being created at the University of  California, San Diego and later at SofTech Microsystems. I specialize  in operating systems, and designed and implemented all p-System  may be produced using the Print.Time utility. This utility produces  a histogram of the nine procedures in which the the user program spent  most of its time.  %The Print.Time utility first prompts for the name of the timing  statistics file. Typing specifies the default file *Time.Data.  Typing exits the program.  %Next, the Print.Time utility prompts for the name of the output  file. Typing specifies the default file Console:. Typing  exits the program.   operating system modifications from version I.5 through IV.0. My  partner, William P. Franks wrote the p-System assemblers and the native  code generators. My other partner, David L. Berger designed and  implemented the p-System low-level I/O modules.  %We currently do work in the areas of low level I/O systems,  graphics, networking, compiler construction, native code generation,  operating systems and applications development support. Our prior and  current clients include Texas Instruments //  %The Print.Time utility first loads and sorts the statistics file,  then prints a histogram of program execution. A sample output appears  as follows:  %Seg Name Proc# Hits %-------- -------- ----- %Test 2 97 | *********************** %Test 1 48 | ************  %Each "*" is worth 4 hits  %Each line describes one procedure's execution. The Seg Name column  gives the name of the segment containing the procedure. The Proc# column , Informatics General, Osborne  Computer, Nippon Electric Company, SofTech Microsystems and McGraw-Hill  Publishing, among others.  %You are dealing with us on this graphics license instead of Ticom  Systems (with whom you originally dealt with) because we acquired the  rights and support obligations formerly held by Ticom. We originally  implemented the Grafdraw module and the NEC APC p-System BIOS on the NEC  APC for Ticom.  %We are very pleased to sell you this license and hope to be of  gives the number of the procedure within the segment. Operating system  entrypoints are listed by their procedure names instead of their  procedure numbers. The Hits column gives the number times the timing  executive found the user program to be executing that procedure. The  histogram to the right illustrates the relative hit counts; the scaling  factor is printed at the bottom.  %Note that the hit count is assumed to be between 1 and 32767. Hit  counts above 32767 (i.e. -32768..-1) are pri$      service to you in the future. If there is anything we can do for you,  please let us know.   XSincerely,    XBarry Demchak XVice President   of either these trade secrets or the Grafdraw module source code outside of  Bridgeport Textron damages SCI. Bridgeport Textron agrees to protect these  works and trade secrets in the same manner as its own confidential material, and  agrees to reimburse SCI for any damages resulting from Bridgeport Textron's  negligence.  %SCI warrants to Bridgeport Textron that the Grafdraw module is an original  work of SCI and Ticom Systems and does not infringe on any copyright or patent  held by any third party. Furthermore, SCI does not warrant the Grafdraw module  as being suitable for any particular use, nor does it accept any liability for  damages incurred by products that incorporate it.   //  4 1Grafdraw Module License Agreement 1=================================  =Continued =---------  %SCI agrees to provide a single copy of the Grafdraw module source and code  as described in Appendix A. This copy shall be delivered no later than $CURSOR $EQUAL $TAG  O. ________________, 1984. Bridgeport Textron may review the Grafdraw module as  delivered to determine its suitability for Bridgeport Textron's purposes and to  verify its correct operation. Bridgeport Textron may refuse acceptance of the  Grafdraw module within 15 days of delivery if either the Grafdraw module cannot  be made to operate as specified, or it is not suitable for use with Bridgeport  Textron's product line. If Bridgeport Textron accepts the Grafdraw module  delivery, payment of the $4,000.00 licensing fee is due within 15 days of  delivery; otherwise, Bridgeport Textron must return all Grafdraw module  materials to SCI.  %SCI shall provide up to three hours of support at no extra charge to Bridgeport Textron  over the phone, at the expense of Bridgeport Textron    %Bridgeport Textron Software Construction, Inc.   %______________________________ ______________________________  Signed Signed %  4SCI Grafdraw License Agreement 4==============================  %This agreement is entered into this ______ day of February, 1984, by  and between Software Construction, Inc. (hereinafter called "SCI"), a  California corporation, having a place of business at 3252 Holiday  Court, Suite 104, La Jolla, California, 92037, and Bridgeport Textron, a  __________ corporation, having a place of business at __________________  ____________________________________.  %In consideration of a compensatio%______________________________ ______________________________ %Name Name % %______________________________ ______________________________ %Title Title % %______________________________ ______________________________ %Date Date % %   //   6Grafdraw module License Agreement 6============================  >Appendix A >----------  %The Grafdraw module is a proprietary product of Softwn of $4,000.00, SCI agrees to funish  Bridgeport Textron with the source code, object code and documentation for the  Grafdraw, described in Appendix A. In return for this compensation and without  further royalty to SCI, SCI grants Bridgeport Textron and all of its  subsidiaries a nontransferrable, worldwide, perpetual license to hold up to a  total of five copies of the Grafdraw module source code for the purposes of  product development, maintenance and reasonable backup, and to use the object are Construction,  Inc. It is intended to allow the use of the standard UCSD Pascal I/O  intrinsics in the generation and processing of files resident in MS-DOS  2.0 directories. Using the Grafdraw module, UCSD Pascal programs should be  able to generate and process such files using exactly the same intrinsic  calls as they would if generating and processing files resident in p-  System directories, subject to the following limitations:   code derived from such sources in any of its products and for its own purposes. % %Bridgeport Textron understands that this license agreement does not  supercede its license with Ticom Systems to pay royalties on copies of the  Grafdraw module. Bridgeport Textron must continue to pay royalties to Ticom  Systems for the distribution of the Grafdraw module originally supplied by Ticom  and for the distribution of the Grafdraw module and its derivatives covered by  this license.  %Bridgeport Textr%1) It is assumed that the Connection(tm) be executing under MS-DOS (as if it were a standard MS-DOS application and that it is  possible to call the MS-DOS file system using the standard MS-  DOS file system calls.  %2) I/O must be constrained to files that are open. It is invalid (to use Unit I/O intrinsics on Connection pseudo-floppies independent (of there being an open file associated with the object of the (Unit I/O.  %3) There must be a '\' character preceeding all MS-on agrees that any works of authorship such as writings,  computer program object and source, and program documentation provided by SCI as  part of the Grafdraw module, or works derived from such works, remain the  property of SCI. Bridgeport Textron understands that SCI considers the  algorithms used in the implementation of the Grafdraw module to be trade  secrets. Bridgeport Textron understands that the distribution or dissemination %     DOS file names (used with the Reset and Rewrite intrinsics. This tag indicates (that the file name should be interpreted as a file name in the (MS-DOS file system instead of the p-System file system. Also, (serial volume names (e.g. CON and PRN) must be terminated by (a ':'. ! %4) P-System directories are not expected to be associated with  files opened under the MS-DOS file system. Thus, attempts to  read a p-System directory from the virtual floppy unit n of $4,000.00, SCI agrees to funish  Bridgeport Textron with the source code, object code and documentation for the  Grafdraw, described in Appendix A. In return for this compensation and without  further royalty to SCI, SCI grants Bridgeport Textron and all of its  subsidiaries a nontransferrable, worldwide, perpetual license to hold up to a  total of five copies of the Grafdraw module source code for the purposes of  product development, maintenance and reasonable backup, and to use the object  containing an open file will fail if the file is maintained (under the MS-DOS file system.  %5) The p-System cannot execute code resident in files maintained (under the MS-DOS file system.   //  6Grafdraw module License Agreement 6============================  9Appendix A (continued) 9----------------------  %Notably, the following intrinsics may be employed to generate and  process files maintained under the MS-DOS file system: Reset, Rewrite,  Close, Blockread, Blockwrite,  code derived from such sources in any of its products and for its own purposes. % %Bridgeport Textron understands that this license agreement does not  supercede its license with Ticom Systems to pay royalties on copies of the  Grafdraw module. Bridgeport Textron must continue to pay royalties to Ticom  Systems for the distribution of the Grafdraw module originally supplied by Ticom  and for the distribution of the Grafdraw module and its derivatives covered by  this license.  %Bridgeport TextrIO_Result, Readln, Writeln, Read, Write,  Get, Put, Seek, Unitread, Unitwrite, Unitclear and Unitstatus. All such  intrinsics operate with exactly the same symantics as they would when  used to generate and process p-System files. Notably, all options of  the Close intrinsic operate as defined for UCSD Pascal, and all file  size specification options for the Rewrite intrinsic operate as defined  for UCSD Pascal. Additionally, files may be opened for later extension on agrees that any works of authorship such as writings,  computer program object and source, and program documentation provided by SCI as  part of the Grafdraw module, or works derived from such works, remain the  property of SCI. Bridgeport Textron understands that SCI considers the  algorithms used in the implementation of the Grafdraw module to be trade  secrets. Bridgeport Textron understands that the distribution or dissemination  in the manner native to the MS-DOS file system. Standard p-System four  character file suffixes are automatically translated into appropriate MS-  DOS three character file suffixes. Finally, MS-DOS 2.0 path names may  be used when specifying a MS-DOS file name. %   of either these trade secrets or the Grafdraw module source code outside of  Bridgeport Textron damages SCI. Bridgeport Textron agrees to protect these  works and trade secrets in the same manner as its own confidential material, and  agrees to reimburse SCI for any damages resulting from Bridgeport Textron's  negligence.  %SCI warrants to Bridgeport Textron that the Grafdraw module is an original  work of SCI and Ticom Systems and does not infringe on any copyright or patent  held by any third party. Furthermore, SCI does not warrant the Grafdraw module  as being suitable for any particular use, nor does it accept any liability for  damages incurred by products that incorporate it.   //  4 1Grafdraw Module License Agreement 1=================================  =Continued =---------  %SCI agrees to provide a single copy of the Grafdraw module source and code  as described in Appendix A. This copy shall be delivered no later than $CURSOR $EQUAL $TAG G. ________________, 1984. Bridgeport Textron may review the Grafdraw module as  delivered to determine its suitability for Bridgeport Textron's purposes and to  verify its correct operation. Bridgeport Textron may refuse acceptance of the  Grafdraw module within 15 days of delivery if either the Grafdraw module cannot  be made to operate as specified, or it is not suitable for use with Bridgeport  Textron's product line. If Bridgeport Textron accepts the Grafdraw module  delivery, payment of the $4,000.00 licensing fee is due within 15 days of  delivery; otherwise, Bridgeport Textron must return all Grafdraw module  materials to SCI.  %SCI shall provide up to three hours of support at no extra charge  to Bridgeport Textron over the phone, provided Bridgeport Textron pays  any telephone charges. Additional hours may be purchased at the rate of  $65.00 per hour. Phone time is counted in 1/2 hour increments; time less  than 1/2 hour is counted as a full 1/2 hour.       4SCI Grafdraw License Agreement 4==============================  %This agreement is entered into this ______ day of February, 1984, by  and between Software Construction, Inc. (hereinafter called "SCI"), a  California corporation, having a place of business at 3252 Holiday  Court, Suite 104, La Jolla, California, 92037, and Bridgeport Textron, a  __________ corporation, having a place of business at __________________  ____________________________________.  %In consideration of a compensatio%     %Bridgeport Textron Software Construction, Inc.   %______________________________ ______________________________  Signed Signed % %______________________________ ______________________________ %Name Name % %______________________________ ______________________________ %Title Title % %______________________________ ______________________________ %Date  operating system modifications from version I.5 through IV.0. My  partner, William P. Franks wrote the p-System assemblers and the native  code generators. My other partner, David L. Berger designed and  implemented the p-System low-level I/O modules.  %We currently do work in the areas of low level I/O systems,  graphics, networking, compiler construction, native code generation,  operating systems and applications development support. Our prior and  current clients include Texas Instruments Date % %   //   3Grafdraw Module License Agreement 3================================= # =Appendix A =----------  %The Grafdraw module is a proprietary product of Software  Construction, Inc. and Ticom Systems. It is intended to allow the use  of the graphic capabilities of the NEC Advanced Personal Computer. The  version supplied to Bridgeport Textron under this license is a subset of  this module. It contains sufficient code to properly execute the , Informatics General, Osborne  Computer, Nippon Electric Company, SofTech Microsystems and McGraw-Hill  Publishing, among others.  %You are dealing with us on this graphics license instead of Ticom  Systems (with whom you originally dealt with) because we acquired the  rights and support obligations formerly held by Ticom. We originally  implemented the Grafdraw module and the NEC APC p-System BIOS on the NEC  APC for Ticom.  %We are very pleased to sell you this license and hope to be of  following Grafdraw functions:  )Circle_Rel Write_Block_Pixels )Move_Abs Set_Font )Move_Cursor Text )Set_Cursor Set_Line_Style )Size_Cursor Line_Abs )Box_Abs PLine_Abs )Read_Block_Pixels   service to you in the future. If there is anything we can do for you,  please let us know.   XSincerely,    XBarry Demchak XVice President  //  % 4SCI Grafdraw License Agreement 4==============================  %This agreement is entered into this ______ day of February, 1984, by  and between Software Construction, Inc. (hereinafter called "SCI"), a  California corporation, having a place of business at 3252 Holiday  Court, Suite 104, La Jolla, California, 92037, and Bridgeport Textron, a  __________ corporation, having a place of business at __________________  ____________________________________.  %In consideration of a compensation of $4,000.00, SCI agrees to funish  Bridgeport Textron with the source code, object code and documentation for the  Grafdraw, described in Appendix A. In return for this compensation and without  further royalty to SCI, SCI grants Bridgeport Textron and all of its $CURSOR $EQUAL G. subsidiaries a nontransferrable, worldwide, perpetual license to hold up to a  total of five copies of the Grafdraw module source code for the purposes of  product development, maintenance and reasonable backup, and to use the object  code derived from such sources in any of its products and for its own purposes. % %Bridgeport Textron understands that this license agreement does not  supercede its license with Ticom Systems to pay royalties on copies of the  Grafdraw module. Bridgeport Textron must continue to pay royalties to Ticom  Systems for the distribution of the Grafdraw module originally supplied by Ticom  and for the distribution of the Grafdraw module and its derivatives covered by  this license.  %Bridgeport Textron agrees that any works of authorship such as writings,  computer program object and source, and program documentation provided by SCI as  part of the Grafdraw module, or works derived from such works, remain the   Marvin Kreithen February 9, 1984  Manager of Engineering  Bridgeport Textron  200 Precision Road  Horsham, Pa 19044   Dear Mr. Kreithen,  %I am submitting this license as a result of a conversation with  Lana Fishman today. We discussed the acquisition of parts of the  Grafdraw graphics module source by your company. Please review the  license, sign both copies then return one signed copy to us.  %Since we have not been introduced, I would like property of SCI. Bridgeport Textron understands that SCI considers the  algorithms used in the implementation of the Grafdraw module to be trade  secrets. Bridgeport Textron understands that the distribution or dissemination  of either these trade secrets or the Grafdraw module source code outside of  Bridgeport Textron damages SCI. Bridgeport Textron agrees to protect these  works and trade secrets in the same manner as its own confidential material, and  agrees to reimburse SCI for any damages  to take this  opportunity to familiarize you with our company. Software Construction,  Inc. is a consulting company that specializes in p-System and MS-DOS  systems- and applications-oriented software consulting. All of us worked  on the UCSD Pascal system as it was being created at the University of  California, San Diego and later at SofTech Microsystems. I specialize  in operating systems, and designed and implemented all p-System &     resulting from Bridgeport Textron's  negligence.  %SCI warrants to Bridgeport Textron that the Grafdraw module is an original  work of SCI and Ticom Systems and does not infringe on any copyright or patent  held by any third party. Furthermore, SCI does not warrant the Grafdraw module  as being suitable for any particular use, nor does it accept any liability for  damages incurred by products that incorporate it.   //  4 1Grafdraw Module License Agreement 1=================================  =Continued =---------  %SCI agrees to provide a single copy of the Grafdraw module source and code  as described in Appendix A. This copy shall be delivered no later than  ________________, 1984. Bridgeport Textron may review the Grafdraw module as  delivered to determine its suitability for Bridgeport Textron's purposes and to  verify its correct operation. Bridgeport Textron may refuse acceptance of the  Grafdraw module within 15 days of delivery if eith grafdraw.code  er the Grafdraw module cannot  be made to operate as specified, or it is not suitable for use with Bridgeport  Textron's product line. If Bridgeport Textron accepts the Grafdraw module  delivery, payment of the $4,000.00 licensing fee is due within 15 days of  delivery; otherwise, Bridgeport Textron must return all Grafdraw module  materials to SCI.  %SCI shall provide up to three hours of support at no extra charge  to Bridgeport Textron over the phone, provided Bridgeport Textron pays  any telephone charges. Additional hours may be purchased at the rate of  $65.00 per hour. Phone time is counted in 1/2 hour increments; time less  than 1/2 hour is counted as a full 1/2 hour.      %Bridgeport Textron Software Construction, Inc.   %______________________________ ______________________________  Signed Signed % %______________________________ ______________________________ %Name Name $TAG $CURSOR $EQUAL $LAST $SYNTAX 1 2 3 4 "" " u S_ O.#ӧg % %______________________________ ______________________________ %Title Title % %______________________________ ______________________________ %Date Date % %   //   3Grafdraw Module License Agreement 3================================= # =Appendix A =----------  %The Grafdraw module is a proprietary product of Software  Construction, Inc. and Ticom Systems. It is intended to allow the use  of the graphic capabilities of the NEC Advanced Personal Computer. The  version supplied to Bridgeport Textron under this license is a subset of  this module. It contains sufficient code to properly execute the  following Grafdraw functions:  )Circle_Rel Write_Block_Pixels )Move_Abs Set_Font )Move_Cursor Text )Set_Cursor Set_Line_Style )Size_Cursor Line_Abs )Box_Abs PLine Program Test_Core;  Uses {$U Grafdraw.Code} Graf_Draw;  Const Print_Errors = False; &Esc = 27; { Escape key }  CR = 13; { Return key } &Up_Key = 31; { Up arrow key } &Down_Key = 10; { Down arrow key } &Right_Key = 28; { Right arrow key } &Left_Key = 15; { Left arrow key }  BS_Key = 8; { Backspace key } &Home_Key = 25; { Home key }  Type Result_Set = Set Of Draw_OK..Draw_Max;  Char_Set = Set Of Char;  Var Font_ID : Font_Type; $Pat_ID : _Abs )Read_Block_Pixels  Pat_Type;  Planes, $X_Max_2, $Y_Max_2, $Reg_X, $Reg_Y, $Reg_X_Size, $Reg_Y_Size : Integer;   "Function Read_Key (Allowed : Char_Set) : Char; "Var Ch : Char; &Hit_Digit : Boolean; &Move_Mult : Integer; &W : Win_Rec; "Begin $Move_Mult := 1; $Hit_Digit := False; $Repeat &Read (Keyboard, Ch); $ If Eoln (Keyboard) Then (Ch := Chr (CR); $ W := Core^.Window_List^; &With Core^.Window_List^ Do (Case Ord (Ch) Of *Down_Key : Win_Y_Org := Win_Y_Org + Move_Mult; $CURSOR $EQUAL O.&     *Up_Key : Win_Y_Org := Win_Y_Org - Move_Mult; *Right_Key : Win_X_Org := Win_X_Org - Move_Mult; *BS_Key, *Left_Key : Win_X_Org := Win_X_Org + Move_Mult; ( Home_Key : Begin 8Win_X_Org := 0; 8Win_Y_Org := 0; 6End {of Home_Key}; *48, 49, 50, {'0'..'9'} *51, 52, 53, *54, 55, 56, *57 : Begin 8If Not Hit_Digit Then :Move_Mult := 0; 8Move_Mult := Move_Mult * 10 + Ord (Ch) - Ord ('0'); 6 Hit_Digit := True; 6End {of '0'..'9'}; (End {of Case}; $ If W <> Core^.Window_List^ Then (Begi(Line_Index := Succ (Line_Index); (Move_Abs (X_Min, Y_Min); (Check_Result ([Draw_OK]); (For I := Y_Min To Y_Max Div 4 Do *Begin ,Line_Rel (0, Y_Max - 4 * I); ,Check_Result ([Draw_OK]); ,Line_Rel (X_Max - 4 * I, 0); ,Check_Result ([Draw_OK]); ,Line_Rel (0, -Y_Max + 4 * I); ,Check_Result ([Draw_OK]); ,Line_Rel (-X_Max + 4 * I, 0); ,Check_Result ([Draw_OK]); ,Move_Rel (2, 2); ,Check_Result ([Draw_OK]); *End {of For}; ( (Continue; (Line_Index := Succ (Line_Index); (Overlay_Mode := Replace; n *Hit_Digit := False; *Set_Window (Core^.Window_List); *If (Core^.Draw_Result <> Draw_OK) And Print_Errors Then ,Writeln (' Draw result on window movement was ', Core^.Draw_Result); *If Core^.Draw_Result >= Draw_Overflow Then ,Core^.Window_List^ := W; (End {of If W}; $Until Ch In Allowed; " Read_Key := Ch; "End {of Read_Key}; " " " "Procedure Check_Result (Expected : Result_Set); "Var Ch : Char; "Begin " If Not (Core^.Draw_Result In Expected) Then &If Print_Errors Then (Begin (For I := Y_Min To Y_Max Div 4 Do *Begin ,X[1] := X_CP; { Penup command } ,Y[1] := Y_CP; ,X[2] := I * 2; { Move_Abs (I * 2, I * 2) } ,Y[2] := I * 2; ,X[3] := I * 2; { Line_Abs (I * 2, Y_Max - I * 2) } ,Y[3] := Y_Max - I * 2; ,X[4] := X_Max - I * 2; { Line_Abs (X_Max - I * 2, I * 2) } ,Y[4] := I * 2; ,X[5] := X_Max - I * 2; { Line_Abs (X_Max - I * 2, } ,Y[5] := Y_Max - I * 2; { Y_Max - I * 2) } *Write ('Unexpected draw result ', Core^.Draw_Result, '; Hit [RETURN]'); *Ch := Read_Key ([Chr (CR)]); (End {of If Check_Result}; " Core^.Draw_Result := 9; {Just to see if it changes} "End {of Check_Result}; " " " "Function Do_Test (S : String) : Boolean; "Var Ch : Char; "Begin $Write ('Test ', S, ' (Y/N/Esc) ? '); $Ch := Read_Key (['y', 'Y', 'n', 'N', Chr (Esc)]); $If Ch = Chr (Esc) Then &Exit (Test_Core); $Do_Test := Ch In ['Y', 'y']; $Writeln (Ch); $If Ch In ['Y', 'y'] Then &Erase; ,X[6] := I * 2; { Line_Abs (I * 2, I * 2) } * Y[6] := I * 2; * PLine_Abs (X, Y, 6); ,Check_Result ([Draw_OK]); *End {of For}; ( (Continue; (Line_Index := Succ (Line_Index); (Overlay_Mode := Xor; (Move_Abs (X_Min, Y_Min); (Check_Result ([Draw_OK]); (For I := Y_Min To Y_Max Div 4 Do *Begin ,X[1] := 0; { Line_Rel (0, Y_Max - 4 * I) } ,Y[1] := Y_Max - 4 * I; ,X[2] := X_Max - 4 * I; { Line_Rel (X_Max - 4 * I, 0) } ,Y[2] := 0; ,X[3] := 0; { L$Erase_Alpha; $Goto_XY (0, 24); "End {of Do_Test}; " " " "Procedure Continue; "Var Ch : Char; "Begin $Write ('Type to continue'); $Ch := Read_Key ([Chr (CR), Chr (Esc)]); $If Ch = Chr (Esc) Then &Exit (Test_Core); $Erase_Alpha; $Goto_XY (0, 24); "End {of Continue}; " " " "Procedure Test_Cursor; " $Procedure Box_Cursor (Size : Integer); $Var I : Integer; $Begin &Size_Cursor (Size); &Check_Result ([Draw_OK, Draw_Clipped]); &For I := 0 To Core^.X_Max Do (Begin ine_Rel (0, -Y_Max + 4 * I) } ,Y[3] := -Y_Max + 4 * I; ,X[4] := -X_Max + 4 * I; { Line_Rel (-X_Max + 4 * I, 0) } ,Y[4] := 0; ,X[5] := 0; { Penup command} ,Y[5] := 0; ,X[6] := 2; { Move_Rel (2, 2) } ,Y[6] := 2; * PLine_Rel (X, Y, 6); ,Check_Result ([Draw_OK]); *End {of For}; (Continue;  (Erase; (Check_Result ([Draw_OK]); (Set_Line_Style (On, On, On, On, On, On, On, On); (Check_Result ([Draw_OK]); (Overlay_Mode := Replace; (Line_Index := 0; *Move_Cursor (I, 0); *Check_Result ([Draw_OK, Draw_Clipped]); (End {of For}; &For I := 0 To Core^.Y_Max Do (Begin *Move_Cursor (Core^.X_Max, I); *Check_Result ([Draw_OK, Draw_Clipped]); (End {of For}; &For I := Core^.X_Max Downto 0 Do (Begin *Move_Cursor (I, Core^.Y_Max); *Check_Result ([Draw_OK, Draw_Clipped]); (End {of For}; &For I := Core^.Y_Max Downto 0 Do (Begin *Move_Cursor (0, I); *Check_Result ([Draw_OK, Draw_Clipped]); (End {of For}; &For I := 0 To Core^.X_Max Do (Begin *Move_C(For I := -1 To Succ (X_Max) Do *Begin ,Line_Index := Succ (Line_Index) Mod 8; ,Move_Abs (X_Max_2, Y_Max_2); ,Check_Result ([Draw_OK]); ,Line_Abs (Round (Glob_X_Max / Glob_Y_Max * I), Succ (Y_Max)); ,Check_Result ([Draw_Clipped]); ,Move_Abs (X_Max_2, Y_Max_2); ,Check_Result ([Draw_OK]); ,Line_Abs (Round (Glob_X_Max / Glob_Y_Max * I), -1); ,Check_Result ([Draw_Clipped]); *End {of For}; (For I := -1 To Succ (Y_Max) Do *Begin ,Line_Index := Succ (Line_Index) Mod 8; ,Move_Abs (X_Max_2, Y_Max_2);ursor (I, Round (Core^.Y_Max / Core^.X_Max * I)); *Check_Result ([Draw_OK, Draw_Clipped]); (End {of For}; &For I := Core^.X_Max Downto 0 Do (Begin *Move_Cursor (Core^.X_Max - I, Round (Core^.Y_Max / Core^.X_Max * I)); *Check_Result ([Draw_OK, Draw_Clipped]); (End {of For}; &Continue; $End {of Box_Cursor}; $ "Begin {of Test_Cursor} $Set_Cursor (Cur_Enable); $Check_Result ([Draw_OK]); $Set_Cursor (Cur_Visible); $Check_Result ([Draw_OK, Draw_Clipped]); $Continue; $Box_Cursor (15);  ,Check_Result ([Draw_OK]); ,Line_Abs (Succ (X_Max), Round (Glob_Y_Max / Glob_X_Max * I)); ,Check_Result ([Draw_Clipped]); ,Move_Abs (X_Max_2, Y_Max_2); ,Check_Result ([Draw_OK]); ,Line_Abs (-1, Round (Glob_Y_Max / Glob_X_Max * I)); ,Check_Result ([Draw_Clipped]); *End {of For}; Continue;  (Overlay_Mode := Xor; (Line_Index := 0; (For I := 1 To Pred (X_Max) Do *Begin ,Line_Index := Succ (Line_Index) Mod 8; ,Move_Abs (X_Max_2, Y_Max_2); ,Check_Result ([Draw_OK]); $Box_Cursor (30); $Box_Cursor (2000); " Set_Cursor (Cur_Invisible); $Check_Result ([Draw_OK]); $Set_Cursor (Cur_Small); $Check_Result ([Draw_OK]); $Move_Cursor (Succ (X_Max_2), Succ (Y_Max_2)); $Check_Result ([Draw_OK]); $Set_Cursor (Cur_Visible); $Check_Result ([Draw_OK, Draw_Clipped]); $Continue; $Set_Cursor (Cur_Disable); $Check_Result ([Draw_OK]); "End {of Test_Cursor};   " "Procedure Test_Line; "Var I : Integer; " X, &Y : Point_Array; "Begin $With Core^ Do &Begin (Line_In,Line_Abs (Round (Glob_X_Max / Glob_Y_Max * I), Pred (Y_Max)); ,Check_Result ([Draw_OK]); ,Move_Abs (X_Max_2, Y_Max_2); ,Check_Result ([Draw_OK]); ,Line_Abs (Round (Glob_X_Max / Glob_Y_Max * I), 1); ,Check_Result ([Draw_OK]); *End {of For}; (For I := 1 To Pred (Y_Max) Do *Begin ,Line_Index := Succ (Line_Index) Mod 8; ,Move_Abs (X_Max_2, Y_Max_2); ,Check_Result ([Draw_OK]); ,Line_Abs (Pred (X_Max), Round (Glob_Y_Max / Glob_X_Max * I)); ,Check_Result ([Draw_OK]); ,Move_Abs (X_Max_2, Y_Max_2); dex := 1; (Set_Line_Style (On, On, Off, On, On, Off, On, On); (Check_Result ([Draw_OK]); (Overlay_Mode := Xor; (For I := Y_Min To Y_Max Div 4 Do *Begin ,Move_Abs (I * 2, I * 2); ,Check_Result ([Draw_OK]); ,Line_Abs (I * 2, Y_Max - I * 2); ,Check_Result ([Draw_OK]); ,Line_Abs (X_Max - I * 2, I * 2); ,Check_Result ([Draw_OK]); ,Line_Abs (X_Max - I * 2, Y_Max - I * 2); ,Check_Result ([Draw_OK]); ,Line_Abs (I * 2, I * 2); ,Check_Result ([Draw_OK]); *End {of For}; ( (Continue; '     ,Check_Result ([Draw_OK]); ,Line_Abs (1, Round (Glob_Y_Max / Glob_X_Max * I)); ,Check_Result ([Draw_OK]); *End {of For};  &End {of With}; "End {of Test_Line};    "Procedure Test_Box; "Var I : Integer; & &Procedure Draw_Boxes (Display : Display_Type; ?@ABCDEFGHIJKLMNO'); ,Text_Index := Succ (Text_Index) Mod 8; ,Continue; , ,Move_Abs (Start_X + Font_Cols *(Line_Index := 2; (Circle_Rel (Y_Max Div 8); (Check_Result ([Draw_OK]); (Move_Rel (X_Max Div 3, 0); (Check_Result ([Draw_OK]); (Line_Index := 4; (Circle_Rel (Y_Max Div 8); (Check_Result ([Draw_OK]); (Move_Rel (X_Max Div 3, 0); (Check_Result ([Draw_OK]); (Line_Index := 6; (Circle_Rel (Y_Max Div 8); (Check_Result ([Draw_OK]); ( (Polygon_Interior := Plain; (Fill_Index := 2; {Fill pattern} (Move_Abs (X_Max_2, Y_Max Div 8 * 5 + 7); (Check_Result ([Draw_OK]); (Flo 24 * Mag, 6Start_Y - (24 * Font_Cols + Font_Rows) * Mag); ,Char_Path := Left; ,Top_Bottom := Bottom; ,Left_Right := Right; ,Set_Charup (0, -1); ,Text ('PQRSTUVWXYZ[\]^_`abcdefg'); ,Text_Index := Succ (Text_Index) Mod 8; ,Continue; 4 ,Move_Abs (Start_X - Font_Rows * Mag, 6Start_Y - 24 * Font_Cols * Mag); ,Char_Path := Up; ,Top_Bottom := Bottom; ,Left_Right := Left; ,Set_Charup (-1, 0); ,S := 'hijklmnopqrstuvwxyz{|}~ ';  S[Length(S)] := Chr (127); ,Text (S); od; (Check_Result ([Draw_OK]); (Continue; (Flood; (Check_Result ([Draw_OK]); (Continue; (Fill_Index := 3; (Overlay_Mode := Xor; (Flood; (Check_Result ([Draw_OK]); &End {of With}; "End {of Test_Flood}; $ " "  Procedure Test_Arcs; "Const PI_8 = 0.39269907; (PI_4 = 0.78539815; (PI_2 = 1.5707963; (PI = 3.1415926278; (PI_x2 = 6.2831852; (PI_x3_2 = 4.7123889; (PI_x3_4 = 2.3561944; (PI_x7_4 = 5.497787; (PI_x5_4 = 3.9269907; "Var X_Start, &Y_Start, &X_End, &Y_End, &Pac_X_Open, ,Text_Index := Succ (Text_Index) Mod 8; ,Continue; * *End {of For}; $End {of Test_Rotations}; & & " $Procedure Test_Direction (Dir : Direction); $ &Procedure Test_Position (Horiz, Vert : Directions); &Var Horiz_Name, *Vert_Name : String; &Begin (Case Horiz Of *Left : Horiz_Name := 'Left - '; *Center : Horiz_Name := 'Center - '; *Right : Horiz_Name := 'Right - '; (End {of Case}; (Case Vert Of *Top : Vert_Name := 'Top'; *Center : Vert_Name := 'Center'; *Bottom : Vert_Name :=&Pac_Y_Open, &Pac_X_Closed, &Pac_Y_Closed, &Combo_Radius, &Radius, &J, &I : Integer; &Open_Mouth : Boolean; &Start_Angle, &End_Angle : Real; " $Procedure Clip_Test (Radius : Integer; Start_Angle, End_Angle : Real); $Var Start_X, (Start_Y, (End_X, (End_Y : Integer; $Begin &Move_Abs (Core^.X_Max Div 64, Y_Max_2); &Check_Result ([Draw_OK]); &Arc_Rel (Radius, Start_Angle, End_Angle, Start_X, Start_Y, End_X, End_Y); &Check_Result ([Draw_Clipped]); &Move_Abs (X_Max_2, Core^.Y_ 'Bottom'; (End {of Case}; (Core^.Top_Bottom := Vert; (Core^.Left_Right := Horiz; (Text (Concat (Horiz_Name, Vert_Name)); (Core^.Text_Index := Succ (Core^.Text_Index) Mod 8; (Continue; &End {of Test_Position}; $ $ $Begin {of Test_Direction} $ Core^.Char_Path := Dir; &Test_Position (Left, Bottom); &Test_Position (Left, Center); &Test_Position (Left, Top); &Erase; &Test_Position (Center, Bottom); &Test_Position (Center, Center); &Test_Position (Center, Top); &Erase; (     Max - Core^.X_Max Div 64); &Check_Result ([Draw_OK]); &Arc_Rel (Radius, Start_Angle + PI_x3_2, End_Angle + PI_x3_2, /Start_X, Start_Y, End_X, End_Y); &Check_Result ([Draw_Clipped]); &Move_Abs (Core^.X_Max - Core^.X_Max Div 64, Y_Max_2); &Check_Result ([Draw_OK]); &Arc_Rel (Radius, Start_Angle + PI, End_Angle + PI, /Start_X, Start_Y, End_X, End_Y); &Check_Result ([Draw_Clipped]); &Move_Abs (X_Max_2, Core^.X_Max Div 64); &Check_Result ([Draw_OK]); Level)); &End {of Draw_Section}; & $Begin {of Breakup} &New_Length := Side_Length Div 2; &If Var_New (Pattern.P, New_Length * ((New_Length + 3) Div 4)) <> 0 Then; &Draw_Section (X, Y, -2, -2); &Draw_Section (X, Y + Side_Length - New_Length, -2, 2); &Draw_Section (X + Side_Length - New_Length, Y, 2, -2); &Draw_Section (X + Side_Length - New_Length, Y + Side_Length - New_Length, 42, 2); &Var_Dispose (Pattern.P, New_Length * ((New_Length + 3) Div 4)); $End {of Breakup}; $ " &Arc_Rel (Radius, Start_Angle + PI_2, End_Angle + PI_2, /Start_X, Start_Y, End_X, End_Y); &Check_Result ([Draw_Clipped]); &Continue; &Core^.Line_Index := Succ (Core^.Line_Index) Mod 8; &If Core^.Line_Index = Core^.Background Then (Core^.Line_Index := Succ (Core^.Line_Index) Mod 8; &Erase; &Check_Result ([Draw_OK]); $End {of Clip_Test}; $ "Begin {of Arc_Test} $Combo_Radius := Core^.Y_Max Div 17; $Set_Line_Style (On, On, On, On, On, On, On, On); $Check_Result ([Draw_OK]); $Core^.Polygon_Edge :"Begin {of Test_Block} $With Core^ Do &Begin (Display_Mode := Fill; (Overlay_Mode := Xor; (Polygon_Interior := Patterned; (Polygon_Edge := Interior; (Move_Abs (X_Max_2 - (Y_Max Div 5), 2Y_Max_2 - (Y_Max Div 5)); (Check_Result ([Draw_OK]); (Box_Rel (Succ (Y_Max Div 5), Succ (Y_Max Div 5)); (Check_Result ([Draw_OK]); (Move_Rel (1, 1); (Check_Result ([Draw_OK]); (Breakup (X_CP, Y_CP, Y_Max Div 5, 1); &End {of With}; "End {of Test_Block}; $ $ "Procedure Test_Windows; "Var J, &I : Inte= Solid_Line; $Core^.Overlay_Mode := Replace; $For I := 0 To 7 Do &For J := 0 To 7 Do (Begin *Core^.Line_Index := Succ (Core^.Line_Index) Mod 8; *If Core^.Line_Index = Core^.Background Then ,Core^.Line_Index := Succ (Core^.Line_Index) Mod 8; *Move_Abs (J * (Core^.X_Max Div 8) + Combo_Radius, 4I * (Core^.Y_Max Div 8) + Combo_Radius); *Check_Result ([Draw_OK]); *Arc_Rel (Combo_Radius, I * PI_8, J * PI_8, 3X_Start, Y_Start, X_End, Y_End); *Check_Result ([Draw_OK]); (End {of For J}; $Continue; ger; " Old_Window, &Window : Win_Rec_P; "Begin $With Core^ Do &Begin (Old_Window := Window_List; ({Set_Window (Nil); (Check_Result ([Draw_OK]);} ( (Char_Width := Font_Cols; (Char_Height := Font_Rows; (Char_Spacing := 0; (Char_Path := Right; (Set_Charup (0, 1); (Check_Result ([Draw_OK]); (Top_Bottom := Bottom; (Left_Right := Center; (Move_Abs (X_Max Div 2, 0); (Check_Result ([Draw_OK]); (Text_Index := Succ (Background_Index) Mod 8; (Text ('Hi, mom!'); (Check_Result ([Draw_OK]); ( $Erase; $Check_Result ([Draw_OK]); $Core^.Overlay_Mode := Xor; $For I := 0 To 7 Do &For J := 0 To 7 Do (Begin *Core^.Line_Index := Succ (Core^.Line_Index) Mod 8; *If Core^.Line_Index = Core^.Background Then ,Core^.Line_Index := Succ (Core^.Line_Index) Mod 8; *Move_Abs (J * (Core^.X_Max Div 8) + Combo_Radius, 4I * (Core^.Y_Max Div 8) + Combo_Radius); *Check_Result ([Draw_OK]); *Arc_Rel (Combo_Radius, PI_x2 / (J + 1), I * PI_8, 3X_Start, Y_Start, X_End, Y_End); *Check_Result ([Draw_OK]); (End(Overlay_Mode := Replace; (Line_Index := Succ (Background_Index) Mod 8; (Move_Rel (0, 0); (Check_Result ([Draw_OK]); (New (Window); (New (Window^.Next_Window); (Window^.Win_X_Org := 0; (Window^.Win_Y_Org := Char_Height; (Window^.Disp_X_Org := 0; (Window^.Disp_Y_Org := Char_Height; (Window^.Win_X_Size := Window_List^.Win_X_Size; (Window^.Win_Y_Size := Window_List^.Win_Y_Size - Char_Height; (With Window^.Next_Window^ Do *Begin ,Next_Window := Nil; ,Win_X_Org := 0; ,Win_Y_Org := 0; ,Disp_X_Or {of For J}; $Continue; $Erase; $Check_Result ([Draw_OK]); $Clip_Test (Core^.Y_Max Div 24, PI_x3_4, -PI_x3_4); $Clip_Test (Core^.Y_Max Div 12, PI_x3_4, -PI_2); $Clip_Test (Core^.Y_Max Div 8, PI_2, -PI_x3_4); $Clip_Test (Core^.Y_Max Div 6, PI_2, -PI_2); $ $Move_Abs (Core^.Y_Max Div 6, Y_Max_2); $Check_Result ([Draw_OK]); $Core^.Line_Index := 2; $Pac_X_Open := Core^.X_Max Div 12; $Pac_Y_Open := Core^.Y_Max Div 9; $Pac_X_Closed := Core^.X_Max Div 10; $Pac_Y_Closed := Core^.Y_Max Div 18; g := 0; ,Disp_Y_Org := 0; * Win_X_Size := Window_List^.Win_X_Size; ,Win_Y_Size := Char_Height; *End {of With Window}; (Set_Region (Region_X_Org, Region_Y_Org + Char_Height, 4Succ (X_Max), Succ (Y_Max - Char_Height)); (Check_Result ([Draw_OK]); ( (For I := 0 To 19 Do *Begin ,Move_Abs (I * X_Max Div 20, 0); ,Check_Result ([Draw_OK]); ,Line_Rel (0, Y_Max); ,Check_Result ([Draw_OK]); *End {of For}; (For I := 0 To 19 Do *Begin ,Move_Abs (0, I * Y_Max Div 20); ,Check_Result ([Draw_OK]); $Open_Mouth := True; $Repeat &If Open_Mouth Then (Arc_Abs (Radius, Start_Angle, End_Angle, 1Core^.X_CP + Pac_X_Open, Core^.Y_CP - Pac_Y_Open, 1Core^.X_CP + Pac_X_Open, Core^.Y_CP + Pac_Y_Open) &Else (Arc_Abs (Radius, Start_Angle, End_Angle, 1Core^.X_CP + Pac_X_Closed, Core^.Y_CP - Pac_Y_Closed, 1Core^.X_CP + Pac_X_Closed, Core^.Y_CP + Pac_Y_Closed); &Open_Mouth := Not Open_Mouth; &Check_Result ([Draw_OK]); &Arc_Rel (Radius, Start_Angle, End_Angle, /X_Start, Y_Start, X_End, Y_End); &Check_Re,Line_Rel (X_Max, 0); ,Check_Result ([Draw_OK]); *End {of For}; (Display_Mode := Fill; (Fill_Index := Succ (Background_Index) Mod 8; (Polygon_Interior := Plain; (Polygon_Edge := Interior; (For I := 0 To 19 Do *For J := 0 To 19 Do ,Begin .Move_Abs (I * X_Max Div 20, J * Y_Max Div 20); .Check_Result ([Draw_OK]); .Circle_Rel (Y_Max Div 50); .Check_Result ([Draw_OK, Draw_Clipped]); .Fill_Index := Succ (Fill_Index) Mod 8; .If Fill_Index = Background_Index Then 0Fill_Index := Succ (Fill_Index) Mosult ([Draw_OK]); &Move_Rel (Core^.X_Max Div 22, 0); &Check_Result ([Draw_OK]); " Until Core^.X_CP + Radius >= Core^.X_Max; "End {of Test_Arcs};    "Procedure Test_Block; " $Procedure Breakup (X, Y, Side_Length, Level : Integer); $Type Color_Array = Packed Array [0..30000] Of Color_Index; $Var New_Length : Integer; (Pattern : Record 7Case Integer Of 90 : (S : Sorcery); 91 : (P : ^Color_Array); 5End {of Pattern}; $ d 8; ,End {of For J}; ( (For I := Region_Y_Org To Succ (Glob_Y_Max - Window^.Win_Y_Size) Do ( Begin * Window^.Win_Y_Org := I; ,Set_Window (Window); ,If Window^.Win_Y_Org Mod Win_Y_Res = 0 Then .Check_Result ([Draw_OK]) ,Else .Check_Result ([Draw_Clipped]); *End {of For}; (For I := Region_X_Org To Succ (Glob_X_Max - Window^.Win_X_Size) Do ( Begin ,Window^.Win_X_Org := I; ,Set_Window (Window); ,If Window^.Win_X_Org Mod Win_X_Res = 0 Then .Check_Result ([Draw_OK]) ,Else &Procedure Draw_Section (Sect_X, Sect_Y, X_Offset, Y_Offset : Integer); &Begin (Move_Abs (Sect_X, Sect_Y); (Check_Result ([Draw_OK]); (Read_Block_Pixels (Pattern.S, New_Length, New_Length); (Check_Result ([Draw_OK]); (Move_Rel (X_Offset * New_Length, Y_Offset * New_Length); (Check_Result ([Draw_OK]); (Write_Block_Pixels (Pattern.S, New_Length, New_Length); (Check_Result ([Draw_OK]); (If Level > 0 Then *Breakup (Sect_X + X_Offset * New_Length, 3Sect_Y + Y_Offset * New_Length, New_Length, Pred ((     .Check_Result ([Draw_Clipped]); *End {of For}; ( (Continue; (Window^.Win_X_Org := Region_X_Org; (For I := 0 To 5 Do ( For J := 0 To 7 Do ,Begin .Window^.Win_Y_Org := J * Y_Max Div 20; .Set_Window (Window); ,End {of For J}; ( (Continue; (Set_Region (Region_X_Org, Region_Y_Org - Char_Height, 4Succ (X_Max), Succ (Y_Max + Char_Height)); (Check_Result ([Draw_OK]); (Set_Window (Old_Window); (Check_Result ([Draw_OK]); (Dispose (Window^.Next_Window); (Dispose (Window); &End {of With}; "End {o Program Test_Core;  Uses {$U Grafdraw.Code} Graf_Draw;  Const Print_Errors = False; &Esc = 27; { Escape key }  CR = 13; { Return key } &Up_Key = 31; { Up arrow key } &Down_Key = 10; { Down arrow key } &Right_Key = 28; { Right arrow key } &Left_Key = 15; { Left arrow key }  BS_Key = 8; { Backspace key } &Home_Key = 25; { Home key }  Type Result_Set = Set Of Draw_OK..Draw_Max;  Char_Set = Set Of Char;  Var Font_ID : Font_Type; $Pat_ID : f Test_Windows}; $ $  Begin {of Test_Core} "Check_Result ([Draw_Init]); "Goto_XY (0, 24); "Write ('Background color ? '); "Readln (Core^.Background); "Write ('Pattern number ? '); "Readln (Pat_ID); "Set_Fill_Pattern (Pat_ID); "Check_Result ([Draw_OK]); "Write ('Font number ? '); "Readln (Font_ID); "Set_Font (Font_ID); "Check_Result ([Draw_OK]); "Write ('Planes enabled ? '); "Readln (Planes); "Plane_Enable (Planes); "Check_Result ([Draw_OK]); Pat_Type;  Planes, $X_Max_2, $Y_Max_2, $Reg_X, $Reg_Y, $Reg_X_Size, $Reg_Y_Size : Integer;   "Function Read_Key (Allowed : Char_Set) : Char; "Var Ch : Char; &Hit_Digit : Boolean; &Move_Mult : Integer; &W : Win_Rec; "Begin $Move_Mult := 1; $Hit_Digit := False; $Repeat &Read (Keyboard, Ch); $ If Eoln (Keyboard) Then (Ch := Chr (CR); $ W := Core^.Window_List^; &With Core^.Window_List^ Do (Case Ord (Ch) Of *Down_Key : Win_Y_Org := Win_Y_Org + Move_Mult; "Writeln ('Global space at (', Core^.Glob_X_Min, ', ', Core^.Glob_Y_Min, +') to (', Core^.Glob_X_Max, ', ', Core^.Glob_Y_Max, ')'); "With Core^.Window_List^ Do $Writeln ('Display at (', Win_X_Org, ', ', Win_Y_Org, ') to (', -Pred (Win_X_Org + Win_X_Size), ', ', -Pred (Win_Y_Org + Win_Y_Size), ')'); "Writeln ('Clipping region at (', Core^.X_Min, ', ', Core^.Y_Min, +') to (', Core^.X_Max, ', ', Core^.Y_Max, ')'); "Write ('Clipping region lower left corner (X, Y) ? '); "Readln (Reg_X, Reg_Y); "Wri*Up_Key : Win_Y_Org := Win_Y_Org - Move_Mult; *Right_Key : Win_X_Org := Win_X_Org - Move_Mult; *BS_Key, *Left_Key : Win_X_Org := Win_X_Org + Move_Mult; ( Home_Key : Begin 8Win_X_Org := 0; 8Win_Y_Org := 0; 6End {of Home_Key}; *48, 49, 50, {'0'..'9'} *51, 52, 53, *54, 55, 56, *57 : Begin 8If Not Hit_Digit Then :Move_Mult := 0; 8Move_Mult := Move_Mult * 10 + Ord (Ch) - Ord ('0'); 6 Hit_Digit := True; 6End {of '0'..'9'}; (End {of Case}; $ If W <> Core^.Window_List^ Then (Begite ('Clipping region size (X'', Y'') ? '); "Readln (Reg_X_Size, Reg_Y_Size); "Set_Region (Reg_X, Reg_Y, Reg_X_Size, Reg_Y_Size); "Check_Result ([Draw_OK]); "Erase; "Check_Result ([Draw_OK]); "Erase_Alpha; "Check_Result ([Draw_OK]); "Goto_XY (0, 24); "X_Max_2 := Core^.X_Max Div 2; "Y_Max_2 := Core^.Y_Max Div 2; "If Do_Test ('Cursor') Then $Test_Cursor;  If Do_Test ('Line') Then $Test_Line; If Do_Test ('Box') Then $Test_Box; "If Do_Test ('Text') Then $Test_Text; n *Hit_Digit := False; *Set_Window (Core^.Window_List); *If (Core^.Draw_Result <> Draw_OK) And Print_Errors Then ,Writeln (' Draw result on window movement was ', Core^.Draw_Result); *If Core^.Draw_Result >= Draw_Overflow Then ,Core^.Window_List^ := W; (End {of If W}; $Until Ch In Allowed; " Read_Key := Ch; "End {of Read_Key}; " " " "Procedure Check_Result (Expected : Result_Set); "Var Ch : Char; "Begin " If Not (Core^.Draw_Result In Expected) Then &If Print_Errors Then (Begin  If Do_Test ('Circle') Then $Test_Circle; "If Do_Test ('Block') Then $Test_Block; "If Do_Test ('Area Fill') Then $Test_Flood; "If Do_Test ('Arc') Then $Test_Arcs; "If Do_Test ('Windows') Then $Test_Windows; "Continue; "Erase_Alpha;  End {of Test_Core}. *Write ('Unexpected draw result ', Core^.Draw_Result, '; Hit [RETURN]'); *Ch := Read_Key ([Chr (CR)]); (End {of If Check_Result}; " Core^.Draw_Result := 9; {Just to see if it changes} "End {of Check_Result}; " " " "Function Do_Test (S : String) : Boolean; "Var Ch : Char; "Begin $Write ('Test ', S, ' (Y/N/Esc) ? '); $Ch := Read_Key (['y', 'Y', 'n', 'N', Chr (Esc)]); $If Ch = Chr (Esc) Then &Exit (Test_Core); $Do_Test := Ch In ['Y', 'y']; $Writeln (Ch); $If Ch In ['Y', 'y'] Then &Erase; $Erase_Alpha; $Goto_XY (0, 24); "End {of Do_Test}; " " " "Procedure Continue; "Var Ch : Char; "Begin $Write ('Type to continue'); $Ch := Read_Key ([Chr (CR), Chr (Esc)]); $If Ch = Chr (Esc) Then &Exit (Test_Core); $Erase_Alpha; $Goto_XY (0, 24); "End {of Continue}; " " " "Procedure Test_Cursor; " $Procedure Box_Cursor (Size : Integer); $Var I : Integer; $Begin &Size_Cursor (Size); &Check_Result ([Draw_OK, Draw_Clipped]); &For I := 0 To Core^.X_Max Do (Begin  $TAG $CURSOR $EQUAL $LAST $SYNTAX 1 2 3 4 vK_PO.#h*Move_Cursor (I, 0); *Check_Result ([Draw_OK, Draw_Clipped]); (End {of For}; &For I := 0 To Core^.Y_Max Do (Begin *Move_Cursor (Core^.X_Max, I); *Check_Result ([Draw_OK, Draw_Clipped]); (End {of For}; &For I := Core^.X_Max Downto 0 Do (Begin *Move_Cursor (I, Core^.Y_Max); *Check_Result ([Draw_OK, Draw_Clipped]); (End {of For}; &For I := Core^.Y_Max Downto 0 Do (Begin *Move_Cursor (0, I); *Check_Result ([Draw_OK, Draw_Clipped]); (End {of For}; &For I := 0 To Core^.X_Max Do (Begin *Move_C)     ursor (I, Round (Core^.Y_Max / Core^.X_Max * I)); *Check_Result ([Draw_OK, Draw_Clipped]); (End {of For}; &For I := Core^.X_Max Downto 0 Do (Begin *Move_Cursor (Core^.X_Max - I, Round (Core^.Y_Max / Core^.X_Max * I)); *Check_Result ([Draw_OK, Draw_Clipped]); (End {of For}; &Continue; $End {of Box_Cursor}; $ "Begin {of Test_Cursor} $Set_Cursor (Cur_Enable); $Check_Result ([Draw_OK]); $Set_Cursor (Cur_Visible); $Check_Result ([Draw_OK, Draw_Clipped]); $Continue; $Box_Cursor (15);  ,Check_Result ([Draw_OK]); ,Line_Abs (Succ (X_Max), Round (Glob_Y_Max / Glob_X_Max * I)); ,Check_Result ([Draw_Clipped]); ,Move_Abs (X_Max_2, Y_Max_2); ,Check_Result ([Draw_OK]); ,Line_Abs (-1, Round (Glob_Y_Max / Glob_X_Max * I)); ,Check_Result ([Draw_Clipped]); *End {of For}; Continue;  (Overlay_Mode := Xor; (Line_Index := 0; (For I := 1 To Pred (X_Max) Do *Begin ,Line_Index := Succ (Line_Index) Mod 8; ,Move_Abs (X_Max_2, Y_Max_2); ,Check_Result ([Draw_OK]); $Box_Cursor (30); $Box_Cursor (2000); " Set_Cursor (Cur_Invisible); $Check_Result ([Draw_OK]); $Set_Cursor (Cur_Small); $Check_Result ([Draw_OK]); $Move_Cursor (Succ (X_Max_2), Succ (Y_Max_2)); $Check_Result ([Draw_OK]); $Set_Cursor (Cur_Visible); $Check_Result ([Draw_OK, Draw_Clipped]); $Continue; $Set_Cursor (Cur_Disable); $Check_Result ([Draw_OK]); "End {of Test_Cursor};   " "Procedure Test_Line; "Var I : Integer; " X, &Y : Point_Array; "Begin $With Core^ Do &Begin (Line_In,Line_Abs (Round (Glob_X_Max / Glob_Y_Max * I), Pred (Y_Max)); ,Check_Result ([Draw_OK]); ,Move_Abs (X_Max_2, Y_Max_2); ,Check_Result ([Draw_OK]); ,Line_Abs (Round (Glob_X_Max / Glob_Y_Max * I), 1); ,Check_Result ([Draw_OK]); *End {of For}; (For I := 1 To Pred (Y_Max) Do *Begin ,Line_Index := Succ (Line_Index) Mod 8; ,Move_Abs (X_Max_2, Y_Max_2); ,Check_Result ([Draw_OK]); ,Line_Abs (Pred (X_Max), Round (Glob_Y_Max / Glob_X_Max * I)); ,Check_Result ([Draw_OK]); ,Move_Abs (X_Max_2, Y_Max_2); dex := 1; (Set_Line_Style (On, On, Off, On, On, Off, On, On); (Check_Result ([Draw_OK]); (Overlay_Mode := Xor; (For I := Y_Min To Y_Max Div 4 Do *Begin ,Move_Abs (I * 2, I * 2); ,Check_Result ([Draw_OK]); ,Line_Abs (I * 2, Y_Max - I * 2); ,Check_Result ([Draw_OK]); ,Line_Abs (X_Max - I * 2, I * 2); ,Check_Result ([Draw_OK]); ,Line_Abs (X_Max - I * 2, Y_Max - I * 2); ,Check_Result ([Draw_OK]); ,Line_Abs (I * 2, I * 2); ,Check_Result ([Draw_OK]); *End {of For}; ( (Continue; ,Check_Result ([Draw_OK]); ,Line_Abs (1, Round (Glob_Y_Max / Glob_X_Max * I)); ,Check_Result ([Draw_OK]); *End {of For};  &End {of With}; "End {of Test_Line};    "Procedure Test_Box; "Var I : Integer; & &Procedure Draw_Boxes (Display : Display_Type; ?@ABCDEFGHIJKLMNO'); ,Text_Index := Succ (Text_Index) Mod 8; ,Continue; , ,Move_Abs (Start_X + Font_Cols *Max Div 20 + 3, Y_Max - Y_Max Div 20 + 3, 7Y_Max Div 10); *Clip_Circle (X_Max - Y_Max Div 20 + 3, Y_Max - Y_Max Div 20 + 3, 7Y_Max Div 10); *Clip_Circle (X_Max - Y_Max Div 20 + 3, Y_Max Div 20 + 3, 7Y_Max Div 10); ( *Continue; *Erase; *Check_Result ([Draw_OK]); *Clip_Circle (Y_Max Div 20 - 3, Y_Max Div 20 - 3, Y_Max Div 10); *Clip_Circle (Y_Max Div 20 - 3, Y_Max - Y_Max Div 20 - 3, 7Y_Max Div 10); *Clip_Circle (X_Max - Y_Max Div 20 - 3, Y_Max - Y_Max Div 20 - 3, 7Y_Max Div 10); *      24 * Mag, 6Start_Y - (24 * Font_Cols + Font_Rows) * Mag); ,Char_Path := Left; ,Top_Bottom := Bottom; ,Left_Right := Right; ,Set_Charup (0, -1); ,Text ('PQRSTUVWXYZ[\]^_`abcdefg'); ,Text_Index := Succ (Text_Index) Mod 8; ,Continue; 4 ,Move_Abs (Start_X - Font_Rows * Mag, 6Start_Y - 24 * Font_Cols * Mag); ,Char_Path := Up; ,Top_Bottom := Bottom; ,Left_Right := Left; ,Set_Charup (-1, 0); ,S := 'hijklmnopqrstuvwxyz{|}~ ';  S[Length(S)] := Chr (127); ,Text (S); D); "Set_Font (Font_ID); "Check_Result ([Draw_OK]); "Page (Output); "Goto_XY (0, 24); "X_Max_2 := Core^.X_Max Div 2; "Y_Max_2 := Core^.Y_Max Div 2; "If Do_Test ('Cursor') Then $Test_Cursor  Else "If Do_Test ('Line') Then $Test_Line "Else If Do_Test ('Box') Then $Test_Box "Else "If Do_Test ('Text') Then $Test_Text "Else If Do_Test ('Circle') Then $Test_Circle "Else "If Do_Test ('Block') Then $Test_Block "Continue; "Page (Output);  End {of Test_Core}. ,Text_Index := Succ (Text_Index) Mod 8; ,Continue; * *End {of For}; $End {of Test_Rotations}; & & " $Procedure Test_Direction (Dir : Direction); $ &Procedure Test_Position (Horiz, Vert : Directions); &Var Horiz_Name, *Vert_Name : String; &Begin (Case Horiz Of *Left : Horiz_Name := 'Left - '; *Center : Horiz_Name := 'Center - '; *Right : Horiz_Name := 'Right - '; (End {of Case}; (Case Vert Of *Top : Vert_Name := 'Top'; *Center : Vert_Name := 'Center'; *Bottom : Vert_Name := $TAG $CURSOR $EQUAL $LAST $SYNTAX 1 2 3 4   O.#i 'Bottom'; (End {of Case}; (Core^.Top_Bottom := Vert; (Core^.Left_Right := Horiz; (Text (Concat (Horiz_Name, Vert_Name)); (Core^.Text_Index := Succ (Core^.Text_Index) Mod 8; (Continue; &End {of Test_Position}; $ $ $Begin {of Test_Direction} $ Core^.Char_Path := Dir; &Test_Position (Left, Bottom); &Test_Position (Left, Center); &Test_Position (Left, Top); &{Erase; &Test_Position (Center, Bottom); &Test_Position (Center, Center); &Test_Position (Center, Top); &Erase; &Test_Position (Right, Bottom); &Test_Position (Right, Center); &Test_Position (Right, Top); &Erase; $End {of Test_Direction}; $ $ " "Begin {of Test_Text} " With Core^ Do &Begin (Char_Spacing := 0; (Text_Index := 1; (Char_Width := Font_Cols * 2; (Char_Height := Font_Rows * 1; (Set_Cursor (Cur_Enable); (Set_Cursor (Cur_Visible); (Move_Abs (X_Max_2, Y_Max_2); (Move_Cursor (X_Max_2, Y_Max_2); (Test_Direction (Right); (Test_Direction (Left); (Test_Direction (Up); (Test_Direction (Down);  Program Test_Core;  Uses {$U Grafdraw.Code} Graf_Draw;  Const Print_Errors = False; &Esc = 27; { Escape key }  CR = 13; { Return key } &Up_Key = 31; { Up arrow key } &Down_Key = 10; { Down arrow key } &Right_Key = 28; { Right arrow key } &Left_Key = 15; { Left arrow key }  BS_Key = 8; { Backspace key } &Home_Key = 25; { Home key }  Type Result_Set = Set Of Draw_OK..Draw_Max;  Char_Set = Set Of Char;  Var Font_ID : Font_Type; $X_Max_2, (Set_Cursor (Cur_Disable); (Page (Output); (Test_Rotations; &End {of With}; "End {of Test_Text};    "Procedure Test_Block; " $Procedure Breakup (X, Y, Side_Length, Level : Integer); $Type Color_Array = Packed Array [0..30000] Of Color_Index; $Var New_Length : Integer; (Pattern : Record 7Case Integer Of 90 : (S : Sorcery); 91 : (P : ^Color_Array); 5End {of Pattern}; $ &Procedure Draw_Section (Sect_X, Sect_Y, X_Offset, Y_Offset : Integer); &Begin (Move_Abs (Sect_X, Sect_Y); $Y_Max_2 : Integer;   "Procedure Erase; "Begin ${Not implemented} $Core^.Draw_Result := 0; "End {of Erase}; " " " "Procedure Erase_Alpha; "Begin $Page (Output); $Core^.Draw_Result := 0; "End {of Erase_Alpha}; " " " "Function Read_Key (Allowed : Char_Set) : Char; "Var Ch : Char; &Hit_Digit : Boolean; &Move_Mult : Integer; &W : Win_Rec; "Begin $Repeat &Read (Keyboard, Ch); $ If Eoln (Keyboard) Then (Ch := Chr (CR); $Until Ch In Allowed; " Read_Key := Ch; (Check_Result ([Draw_OK]); (Read_Block_Pixels (Pattern.S, New_Length, New_Length); (Check_Result ([Draw_OK]); (Move_Rel (X_Offset * New_Length, Y_Offset * New_Length); (Check_Result ([Draw_OK]); (Write_Block_Pixels (Pattern.S, New_Length, New_Length); (Check_Result ([Draw_OK]); (If Level > 0 Then *Breakup (Sect_X + X_Offset * New_Length, 3Sect_Y + Y_Offset * New_Length, New_Length, Pred (Level)); &End {of Draw_Section}; & $Begin {of Breakup} &New_Length := Side_Length Div 2; &If Var_New (Pat"End {of Read_Key}; " " " "Procedure Check_Result (Expected : Result_Set); "Var Ch : Char; "Begin " If Not (Core^.Draw_Result In Expected) Then &If Print_Errors Then (Begin *Write ('Unexpected draw result ', Core^.Draw_Result, '; Hit [RETURN]'); *Ch := Read_Key ([Chr (CR)]); (End {of If Check_Result}; " Core^.Draw_Result := 9; {Just to see if it changes} "End {of Check_Result}; " " " "Function Do_Test (S : String) : Boolean; "Var Ch : Char; "Begin $Write ('Test ', S, ' (Y/N/Esc) ? 'tern.P, New_Length * ((New_Length + 3) Div 4)) <> 0 Then; &Draw_Section (X, Y, -2, -2); &Draw_Section (X, Y + Side_Length - New_Length, -2, 2); &Draw_Section (X + Side_Length - New_Length, Y, 2, -2); &Draw_Section (X + Side_Length - New_Length, Y + Side_Length - New_Length, 42, 2); &Var_Dispose (Pattern.P, New_Length * ((New_Length + 3) Div 4)); $End {of Breakup}; $ " "Begin {of Test_Block} $With Core^ Do &Begin (Display_Mode := Fill; (Overlay_Mode := Xor; (Polygon_Interior := Solid; ); $Ch := Read_Key (['y', 'Y', 'n', 'N', Chr (Esc)]); $If Ch = Chr (Esc) Then &Exit (Test_Core); $Do_Test := Ch In ['Y', 'y']; $Writeln (Ch); $If Ch In ['Y', 'y'] Then &Erase; $Erase_Alpha; $Goto_XY (0, 24); "End {of Do_Test}; " " " "Procedure Continue; "Var Ch : Char; "Begin $Write ('Type to continue'); $Ch := Read_Key ([Chr (CR), Chr (Esc)]); $If Ch = Chr (Esc) Then &Exit (Test_Core); $Erase_Alpha; $Goto_XY (0, 24); "End {of Continue}; " " " "Procedure Test_Cursor; " (Polygon_Edge := Interior; (Move_Abs (X_Max_2 - (Y_Max Div 5), 2Y_Max_2 - (Y_Max Div 5)); (Check_Result ([Draw_OK]); (Box_Rel (Succ (Y_Max Div 5), Succ (Y_Max Div 5)); (Check_Result ([Draw_OK]); (Move_Rel (1, 1); (Check_Result ([Draw_OK]); (Breakup (X_CP, Y_CP, Y_Max Div 5, 1); &End {of With}; "End {of Test_Block}; $ $  Begin {of Test_Core} "Check_Result ([Draw_Init]); "Goto_XY (0, 24); "Write ('Background color ? '); "Readln (Core^.Background); "Write ('Font number ? '); "Readln (Font_I*     $Procedure Box_Cursor (Size : Integer); $Var I : Integer; $Begin &Size_Cursor (Size); &Check_Result ([Draw_OK, Draw_Clipped]); &For I := 0 To Core^.X_Max Do (Begin *Move_Cursor (I, 0); *Check_Result ([Draw_OK, Draw_Clipped]); (End {of For}; &For I := 0 To Core^.Y_Max Do (Begin *Move_Cursor (Core^.X_Max, I); *Check_Result ([Draw_OK, Draw_Clipped]); (End {of For}; &For I := Core^.X_Max Downto 0 Do (Begin *Move_Cursor (I, Core^.Y_Max); *Check_Result ([Draw_OK, Draw_Clipped]); (End {of For};*Begin ,Line_Index := Succ (Line_Index) Mod 8; ,Move_Abs (X_Max_2, Y_Max_2); ,Check_Result ([Draw_OK]); ,Line_Abs (Round (Glob_X_Max / Glob_Y_Max * I), Pred (Y_Max)); ,Check_Result ([Draw_OK]); ,Move_Abs (X_Max_2, Y_Max_2); ,Check_Result ([Draw_OK]); ,Line_Abs (Round (Glob_X_Max / Glob_Y_Max * I), 1); ,Check_Result ([Draw_OK]); *End {of For}; (For I := 1 To Pred (Y_Max) Do *Begin ,Line_Index := Succ (Line_Index) Mod 8; ,Move_Abs (X_Max_2, Y_Max_2); ,Check_Result ([Draw_OK]); ,Line_Abs (Pred &For I := Core^.Y_Max Downto 0 Do (Begin *Move_Cursor (0, I); *Check_Result ([Draw_OK, Draw_Clipped]); (End {of For}; &For I := 0 To Core^.X_Max Do (Begin *Move_Cursor (I, Round (Core^.Y_Max / Core^.X_Max * I)); *Check_Result ([Draw_OK, Draw_Clipped]); (End {of For}; &For I := Core^.X_Max Downto 0 Do (Begin *Move_Cursor (Core^.X_Max - I, Round (Core^.Y_Max / Core^.X_Max * I)); *Check_Result ([Draw_OK, Draw_Clipped]); (End {of For}; &Continue; $End {of Box_Cursor}; $  (X_Max), Round (Glob_Y_Max / Glob_X_Max * I)); ,Check_Result ([Draw_OK]); ,Move_Abs (X_Max_2, Y_Max_2); ,Check_Result ([Draw_OK]); ,Line_Abs (1, Round (Glob_Y_Max / Glob_X_Max * I)); ,Check_Result ([Draw_OK]); *End {of For};  &End {of With}; "End {of Test_Line};    "Procedure Test_Box; "Var I : Integer; & &Procedure Draw_Boxes (Display : Display_Type;  0 Then *Breakup (Sect_X + X_Offset * New_Length, 3Sect_Y + Y_Offset * New_Length, New_Length, Pred (Level)); &End {of Draw_Section}; & $Begin {of Breakup} &New_Length := Side_Length Div 2; &If Var_New (Pattern.P, New_Length * ((New_Length + 3) Div 4)) <> 0 Then; &Draw_Section (X, Y, -2, -2); &Draw_Section (X, Y + S(X_Max)); *Continue; *Erase; *Check_Result ([Draw_OK]); *Clip_Circle (0, Y_Max, Succ (X_Max)); *Continue; *Erase; *Check_Result ([Draw_OK]); *Clip_Circle (X_Max, Y_Max, Succ (X_Max)); *Continue; *Erase; *Check_Result ([Draw_OK]); *Clip_Circle (X_Max, 0, Succ (X_Max)); (End {of With}; $End {of Do_Circles};   $Procedure Circle_Groups (Ovly : Overlay_Type); $Var Disp : Display_Type; (Int : Int_Type; (Edge : Edge_Type; (Radius, (I : Integer; $Begin $ With Core^ Do (Begin ide_Length - New_Length, -2, 2); &Draw_Section (X + Side_Length - New_Length, Y, 2, -2); &Draw_Section (X + Side_Length - New_Length, Y + Side_Length - New_Length, 42, 2); &Var_Dispose (Pattern.P, New_Length * ((New_Length + 3) Div 4)); $End {of Breakup}; $ " "Begin {of Test_Block} $With Core^ Do &Begin (Display_Mode := Fill; (Overlay_Mode := Xor; (Polygon_Interior := Solid; (Polygon_Edge := Interior; (Move_Abs (X_Max_2 - (Y_Max Div 5), 2Y_Max_2 - (Y_Max Div 5)); *Overlay_Mode := Ovly; *Radius := Succ (Y_Max) Div 17; *Fill_Index := 5; *Line_Index := 1; *For Int := Plain To Plain Do ,For Edge := Solid_Line To Interior Do .For Disp := Fast To Fill Do 0Begin 0 Display_Mode := Disp; 2Polygon_Interior := Int; 2Polygon_Edge := Edge; 0 For I := 0 To 7 Do 0 Begin 4 Move_Abs (Radius * Succ (I), Radius); 6Circle_Rel (Radius); 6Check_Result ([Draw_OK]); 6Fill_Index := Succ (Fill_Index) Mod 8; 6Line_Index := Succ (Line_Index) Mod 8; 4End {of For I}; 2(Check_Result ([Draw_OK]); (Box_Rel (Succ (Y_Max Div 5), Succ (Y_Max Div 5)); (Check_Result ([Draw_OK]); (Move_Rel (1, 1); (Check_Result ([Draw_OK]); (Breakup (X_CP, Y_CP, Y_Max Div 5, 1); &End {of With}; "End {of Test_Block}; $ $  Begin {of Test_Core} "Check_Result ([Draw_Init]); "Goto_XY (0, 24); "Write ('Background color ? '); "Readln (Core^.Background); "Write ('Font number ? '); "Readln (Font_ID); "Set_Font (Font_ID); "Check_Result ([Draw_OK]); "Page (Output); "Goto_XY (0, 24); "XContinue; 0End {of For Disp}; (End {of Core}; $End {of Circle_Groups}; $ $ "Begin {of Test_Circle} $Set_Line_Style (On, On, On, On, On, On, On, On); $Check_Result ([Draw_OK]); $Circle_Groups (Replace); $Continue; $Erase; $Check_Result ([Draw_OK]); $Circle_Groups (Xor); $Continue; $Erase; $Check_Result ([Draw_OK]); $Do_Circles (Fast, Plain); " Continue; $Erase; $Check_Result ([Draw_OK]); $Do_Circles (Fill, Plain); "End {of Test_Circle}; " "  "Procedure Test_Text; " _Max_2 := Core^.X_Max Div 2; "Y_Max_2 := Core^.Y_Max Div 2; "If Do_Test ('Cursor') Then $Test_Cursor  Else "If Do_Test ('Line') Then $Test_Line "Else If Do_Test ('Box') Then $Test_Box "Else "If Do_Test ('Text') Then $Test_Text "Else If Do_Test ('Circle') Then $Test_Circle "Else "If Do_Test ('Block') Then $Test_Block "Continue; "Page (Output);  End {of Test_Core}. $Procedure Test_Direction (Dir : Direction); $ &Procedure Test_Position (Horiz, Vert : Directions); &Var Horiz_Name, *Vert_Name : String; &Begin (Case Horiz Of *Left : Horiz_Name := 'Left - '; *Center : Horiz_Name := 'Center - '; *Right : Horiz_Name := 'Right - '; (End {of Case}; (Case Vert Of *Top : Vert_Name := 'Top'; *Center : Vert_Name := 'Center'; *Bottom : Vert_Name := 'Bottom'; (End {of Case}; (Core^.Top_Bottom := Vert; (Core^.Left_Right := Horiz; (Text (Concat (Horiz_Name, $TAG $CURSOR $EQUAL $LAST $SYNTAX 1 2 3 4   O.#j Vert_Name)); (Core^.Text_Index := Succ (Core^.Text_Index) Mod 8; (Continue; &End {of Test_Position}; $ $ $Begin {of Test_Direction} $ Core^.Char_Path := Dir; &Test_Position (Left, Bottom); &Test_Position (Left, Center); &Test_Position (Left, Top); &Erase; &Test_Position (Center, Bottom); &Test_Position (Center, Center); &Test_Position (Center, Top); &Erase; &Test_Position (Right, Bottom); &Test_Position (Right, Center); &Test_Position (Right, Top); &Erase; $End {of Test_Direction}; $ $ " "Begin {of Test_Text} " With Core^ Do &Begin (Char_Spacing := 0; (Text_Index := 1; (Char_Width := Font_Cols * 2; (Char_Height := Font_Rows * 1; (Set_Cursor (Cur_Enable); (Set_Cursor (Cur_Visible); (Move_Abs (X_Max_2, Y_Max_2); (Move_Cursor (X_Max_2, Y_Max_2); (Test_Direction (Right); (Test_Direction (Left); (Test_Direction (Up); (Test_Direction (Down); (Set_Cursor (Cur_Disable); (Page (Output); &End {of With}; "End {of Test_Text};    "Procedure Test_Block; " $Procedure +      Program Test_Core;  Uses {$U Grafdraw.Code} Graf_Draw;  Const Print_Errors = False; &Esc = 27; { Escape key }  CR = 13; { Return key } &Up_Key = 31; { Up arrow key } &Down_Key = 10; { Down arrow key } &Right_Key = 28; { Right arrow key } &Left_Key = 15; { Left arrow key }  BS_Key = 8; { Backspace key } &Home_Key = 25; { Home key }  Type Result_Set = Set Of Draw_OK..Draw_Max;  Char_Set = Set Of Char;  Var Font_ID : Font_Type; $X_Max_2, ,Check_Result ([Draw_OK]); ,Line_Abs (X_Max - I * 2, Y_Max - I * 2); ,Check_Result ([Draw_OK]); ,Line_Abs (I * 2, I * 2); ,Check_Result ([Draw_OK]); *End {of For}; ( (Continue; (Line_Index := Succ (Line_Index); (Move_Abs (X_Min, Y_Min); (Check_Result ([Draw_OK]); (Continue; (Line_Index := Succ (Line_Index); (Overlay_Mode := Replace; (For I := Y_Min To Y_Max Div 4 Do *Begin ,X[1] := X_CP; { Penup command } ,Y[1] := Y_CP; ,X[2] := I * 2; { Move_Abs (I * 2, I * 2) $Y_Max_2 : Integer;   "Procedure Erase; "Begin ${Not implemented} $Core^.Draw_Result := 0; "End {of Erase}; " " " "Procedure Erase_Alpha; "Begin $Page (Output); $Core^.Draw_Result := 0; "End {of Erase_Alpha}; " " " "Function Read_Key (Allowed : Char_Set) : Char; "Var Ch : Char; &Hit_Digit : Boolean; &Move_Mult : Integer; &W : Win_Rec; "Begin $Repeat &Read (Keyboard, Ch); $ If Eoln (Keyboard) Then (Ch := Chr (CR); $Until Ch In Allowed; " Read_Key := Ch; } ,Y[2] := I * 2; ,X[3] := I * 2; { Line_Abs (I * 2, Y_Max - I * 2) } ,Y[3] := Y_Max - I * 2; ,X[4] := X_Max - I * 2; { Line_Abs (X_Max - I * 2, I * 2) } ,Y[4] := I * 2; ,X[5] := X_Max - I * 2; { Line_Abs (X_Max - I * 2, } ,Y[5] := Y_Max - I * 2; { Y_Max - I * 2) } ,X[6] := I * 2; { Line_Abs (I * 2, I * 2) } * Y[6] := I * 2; * PLine_Abs (X, Y, 6); ,Check_Result ([Draw_OK]); *End {of For}; (Continue;  (Erase; (Check_Result ([Draw_OK]); "End {of Read_Key}; " " " "Procedure Check_Result (Expected : Result_Set); "Var Ch : Char; "Begin " If Not (Core^.Draw_Result In Expected) Then &If Print_Errors Then (Begin *Write ('Unexpected draw result ', Core^.Draw_Result, '; Hit [RETURN]'); *Ch := Read_Key ([Chr (CR)]); (End {of If Check_Result}; " Core^.Draw_Result := 9; {Just to see if it changes} "End {of Check_Result}; " " " "Function Do_Test (S : String) : Boolean; "Var Ch : Char; "Begin $Write ('Test ', S, ' (Y/N/Esc) ? '(Set_Line_Style (On, On, On, On, On, On, On, On); (Check_Result ([Draw_OK]); (Overlay_Mode := Replace; (Line_Index := 0; (For I := -1 To Succ (X_Max) Do *Begin ,Line_Index := Succ (Line_Index) Mod 8; ,Move_Abs (X_Max_2, Y_Max_2); ,Check_Result ([Draw_OK]); ,Line_Abs (Round (Glob_X_Max / Glob_Y_Max * I), Succ (Y_Max)); ,Check_Result ([Draw_Clipped]); ,Move_Abs (X_Max_2, Y_Max_2); ,Check_Result ([Draw_OK]); ,Line_Abs (Round (Glob_X_Max / Glob_Y_Max * I), -1); ,Check_Result ([Draw_Clipped]); *E); $Ch := Read_Key (['y', 'Y', 'n', 'N', Chr (Esc)]); $If Ch = Chr (Esc) Then &Exit (Test_Core); $Do_Test := Ch In ['Y', 'y']; $Writeln (Ch); $If Ch In ['Y', 'y'] Then &Erase; $Erase_Alpha; $Goto_XY (0, 24); "End {of Do_Test}; " " " "Procedure Continue; "Var Ch : Char; "Begin $Write ('Type to continue'); $Ch := Read_Key ([Chr (CR), Chr (Esc)]); $If Ch = Chr (Esc) Then &Exit (Test_Core); $Erase_Alpha; $Goto_XY (0, 24); "End {of Continue}; " " " "Procedure Test_Cursor; " nd {of For}; (For I := -1 To Succ (Y_Max) Do *Begin ,Line_Index := Succ (Line_Index) Mod 8; ,Move_Abs (X_Max_2, Y_Max_2); ,Check_Result ([Draw_OK]); ,Line_Abs (Succ (X_Max), Round (Glob_Y_Max / Glob_X_Max * I)); ,Check_Result ([Draw_Clipped]); ,Move_Abs (X_Max_2, Y_Max_2); ,Check_Result ([Draw_OK]); ,Line_Abs (-1, Round (Glob_Y_Max / Glob_X_Max * I)); ,Check_Result ([Draw_Clipped]); *End {of For}; Continue;  (Overlay_Mode := Xor; (Line_Index := 0; (For I := 1 To Pred (X_Max) Do $Procedure Box_Cursor (Size : Integer); $Var I : Integer; $Begin &Size_Cursor (Size); &Check_Result ([Draw_OK, Draw_Clipped]); &For I := 0 To Core^.X_Max Do (Begin *Move_Cursor (I, 0); *Check_Result ([Draw_OK, Draw_Clipped]); (End {of For}; &For I := 0 To Core^.Y_Max Do (Begin *Move_Cursor (Core^.X_Max, I); *Check_Result ([Draw_OK, Draw_Clipped]); (End {of For}; &For I := Core^.X_Max Downto 0 Do (Begin *Move_Cursor (I, Core^.Y_Max); *Check_Result ([Draw_OK, Draw_Clipped]); (End {of For};*Begin ,Line_Index := Succ (Line_Index) Mod 8; ,Move_Abs (X_Max_2, Y_Max_2); ,Check_Result ([Draw_OK]); ,Line_Abs (Round (Glob_X_Max / Glob_Y_Max * I), Pred (Y_Max)); ,Check_Result ([Draw_OK]); ,Move_Abs (X_Max_2, Y_Max_2); ,Check_Result ([Draw_OK]); ,Line_Abs (Round (Glob_X_Max / Glob_Y_Max * I), 1); ,Check_Result ([Draw_OK]); *End {of For}; (For I := 1 To Pred (Y_Max) Do *Begin ,Line_Index := Succ (Line_Index) Mod 8; ,Move_Abs (X_Max_2, Y_Max_2); ,Check_Result ([Draw_OK]); ,Line_Abs (Pred &For I := Core^.Y_Max Downto 0 Do (Begin *Move_Cursor (0, I); *Check_Result ([Draw_OK, Draw_Clipped]); (End {of For}; &For I := 0 To Core^.X_Max Do (Begin *Move_Cursor (I, Round (Core^.Y_Max / Core^.X_Max * I)); *Check_Result ([Draw_OK, Draw_Clipped]); (End {of For}; &For I := Core^.X_Max Downto 0 Do (Begin *Move_Cursor (Core^.X_Max - I, Round (Core^.Y_Max / Core^.X_Max * I)); *Check_Result ([Draw_OK, Draw_Clipped]); (End {of For}; &Continue; $End {of Box_Cursor}; $  (X_Max), Round (Glob_Y_Max / Glob_X_Max * I)); ,Check_Result ([Draw_OK]); ,Move_Abs (X_Max_2, Y_Max_2); ,Check_Result ([Draw_OK]); ,Line_Abs (1, Round (Glob_Y_Max / Glob_X_Max * I)); ,Check_Result ([Draw_OK]); *End {of For};  &End {of With}; "End {of Test_Line};    "Procedure Test_Box; "Var I : Integer; "Begin {of Test_Box} $With Core^ Do $ Begin (Line_Index := 1; (Set_Line_Style (On, On, Off, On, On, Off, On, On); (Check_Result ([Draw_OK]); (Overlay_Mode := Xor; "Begin {of Test_Cursor} $Set_Cursor (Cur_Enable); $Check_Result ([Draw_OK]); $Set_Cursor (Cur_Visible); $Check_Result ([Draw_OK, Draw_Clipped]); $Continue; $Box_Cursor (15); $Box_Cursor (30); $Box_Cursor (2000); " Set_Cursor (Cur_Invisible); $Check_Result ([Draw_OK]); $Set_Cursor (Cur_Small); $Check_Result ([Draw_OK]); $Move_Cursor (Succ (X_Max_2), Succ (Y_Max_2)); $Check_Result ([Draw_OK]); $Set_Cursor (Cur_Visible); $Check_Result ([Draw_OK, Draw_Clipped]); $Continue; $Set_Cursor (Cur_D(For I := Y_Min To Y_Max Div 4 Do *Begin ,Move_Abs (I * 2, I * 2); ,Check_Result ([Draw_OK]); ,Box_Abs (X_Max - I * 2, Y_Max - I * 2); ,Check_Result ([Draw_OK]); ,Line_Index := Succ (Line_Index) Mod 8; *End {of For}; $End {of With}; & "End {of Test_Box}; "  "Procedure Test_Circle; $ $Procedure Do_Circles (Disp : Display_Type; Int : Int_Type); $Var I : Integer; * &Procedure Clip_Circle (X, Y, R : Integer); &Begin (Move_Abs (X, Y); (Check_Result ([Draw_OK]); (Circle_Rel (R); (Check_Reisable); $Check_Result ([Draw_OK]); "End {of Test_Cursor};   " "Procedure Test_Line; "Var I : Integer; " X, &Y : Point_Array; "Begin $With Core^ Do &Begin (Line_Index := 1; (Set_Line_Style (On, On, Off, On, On, Off, On, On); (Check_Result ([Draw_OK]); (Overlay_Mode := Xor; (For I := Y_Min To Y_Max Div 4 Do *Begin ,Move_Abs (I * 2, I * 2); ,Check_Result ([Draw_OK]); ,Line_Abs (I * 2, Y_Max - I * 2); ,Check_Result ([Draw_OK]); ,Line_Abs (X_Max - I * 2, I * 2); ,     sult ([Draw_Clipped]); &End {of Clip_Circle}; ( $Begin {of Do_Circles} &With Core^ Do (Begin *Display_Mode := Disp; *Polygon_Interior := Int; *Polygon_Edge := Solid_Line; *Line_Index := 1; *Fill_Index := 1; *Move_Abs (X_Max_2, Y_Max_2); *Check_Result ([Draw_OK]); *Overlay_Mode := Xor; * *Line_Index := 1; *For I := 0 To Y_Max Div 32 Do ,Begin .Circle_Rel (I * 16); .Check_Result ([Draw_OK]); .Line_Index := Succ (Line_Index) Mod 8; ,End {of For};  *Continue; *Line_Index := 1; f Test_Direction} $ Core^.Char_Path := Dir; &Test_Position (Left, Bottom); &Test_Position (Left, Center); &Test_Position (Left, Top); &Erase; &Test_Position (Center, Bottom); &Test_Position (Center, Center); &Test_Position (Center, Top); &Erase; &Test_Position (Right, Bottom); &Test_Position (Right, Center); &Test_Position (Right, Top); &Erase; $End {of Test_Direction}; $ $ " "Begin {of Test_Text} " With Core^ Do &Begin (Char_Spacing := 0; (Text_Index := 1; *Overlay_Mode := Replace; *For I := 0 To Y_Max Div 32 Do ,Begin .Circle_Rel (I * 16); .Check_Result ([Draw_OK]); .Line_Index := Succ (Line_Index) Mod 8; ,End {of For}; $ *Continue; *Erase; *Check_Result ([Draw_OK]); *Line_Index := Succ (Fill_Index) Mod 8; *Fill_Index := Succ (Line_Index) Mod 8; *Clip_Circle (Y_Max Div 20, Y_Max Div 20, Y_Max Div 10); *Clip_Circle (Y_Max Div 20, Y_Max - Y_Max Div 20, Y_Max Div 10); *Clip_Circle (X_Max - Y_Max Div 20, Y_Max - Y_Max Div 20, 7Y_Max Div 10); *(Char_Width := Font_Cols * 2; (Char_Height := Font_Rows * 1; (Set_Cursor (Cur_Enable); (Set_Cursor (Cur_Visible); (Move_Abs (X_Max_2, Y_Max_2); (Move_Cursor (X_Max_2, Y_Max_2); (Test_Direction (Right); (Test_Direction (Left); (Test_Direction (Up); (Test_Direction (Down); (Set_Cursor (Cur_Disable); (Page (Output); &End {of With}; "End {of Test_Text};    "Procedure Test_Block; " $Procedure Breakup (X, Y, Side_Length, Level : Integer); $Type Color_Array = Packed Array [0..30000] Of ColoClip_Circle (X_Max - Y_Max Div 20, Y_Max Div 20, Y_Max Div 10); ( *Continue; *Erase; *Check_Result ([Draw_OK]); *Clip_Circle (Y_Max Div 20 + 3, Y_Max Div 20 + 3, Y_Max Div 10); *Clip_Circle (Y_Max Div 20 + 3, Y_Max - Y_Max Div 20 + 3, 7Y_Max Div 10); *Clip_Circle (X_Max - Y_Max Div 20 + 3, Y_Max - Y_Max Div 20 + 3, 7Y_Max Div 10); *Clip_Circle (X_Max - Y_Max Div 20 + 3, Y_Max Div 20 + 3, 7Y_Max Div 10); ( *Continue; *Erase; *Check_Result ([Draw_OK]); r_Index; $Var New_Length : Integer; (Pattern : Record 7Case Integer Of 90 : (S : Sorcery); 91 : (P : ^Color_Array); 5End {of Pattern}; $ &Procedure Draw_Section (Sect_X, Sect_Y, X_Offset, Y_Offset : Integer); &Begin (Move_Abs (Sect_X, Sect_Y); (Check_Result ([Draw_OK]); (Read_Block_Pixels (Pattern.S, New_Length, New_Length); (Check_Result ([Draw_OK]); (Move_Abs (Sect_X + X_Offset * New_Length, 2Sect_Y + Y_Offset * New_Length); (Check_Result ([Draw_OK]); *Clip_Circle (Y_Max Div 20 - 3, Y_Max Div 20 - 3, Y_Max Div 10); *Clip_Circle (Y_Max Div 20 - 3, Y_Max - Y_Max Div 20 - 3, 7Y_Max Div 10); *Clip_Circle (X_Max - Y_Max Div 20 - 3, Y_Max - Y_Max Div 20 - 3, 7Y_Max Div 10); *Clip_Circle (X_Max - Y_Max Div 20 - 3, Y_Max Div 20 - 3, 7Y_Max Div 10); ( *Continue; *Erase; *Check_Result ([Draw_OK]); *Clip_Circle (0, 0, Succ (X_Max)); *Continue; *Erase; *Check_Result ([Draw_OK]); *Clip_Circle (0, Y_Max, Succ (X_Max)); *Continue; *Erase; *Check_R(Write_Block_Pixels (Pattern.S, New_Length, New_Length); (Check_Result ([Draw_OK]); (If Level > 0 Then *Breakup (Sect_X + X_Offset * New_Length, 3Sect_Y + Y_Offset * New_Length, New_Length, Pred (Level)); &End {of Draw_Section}; & $Begin {of Breakup} &New_Length := Side_Length Div 2; &If Var_New (Pattern.P, New_Length * ((New_Length + 3) Div 4)) <> 0 Then; &Draw_Section (X, Y, -2, -2); &Draw_Section (X, Y + Side_Length - New_Length, -2, 2); &Draw_Section (X + Side_Length - New_Length, Y, 2, -2esult ([Draw_OK]); *Clip_Circle (X_Max, Y_Max, Succ (X_Max)); *Continue; *Erase; *Check_Result ([Draw_OK]); *Clip_Circle (X_Max, 0, Succ (X_Max)); (End {of With}; $End {of Do_Circles};   $Procedure Circle_Groups (Ovly : Overlay_Type); $Var Disp : Display_Type; (Int : Int_Type; (Edge : Edge_Type; (Radius, (I : Integer; $Begin $ With Core^ Do (Begin *Overlay_Mode := Ovly; *Radius := Succ (Y_Max) Div 17; *Fill_Index := 5; *Line_Index := 1; *For Int := Plain To Plain Do ); &Draw_Section (X + Side_Length - New_Length, Y + Side_Length - New_Length, 42, 2); &Var_Dispose (Pattern.P, New_Length * ((New_Length + 3) Div 4)); $End {of Breakup}; $ " "Begin {of Test_Block} $With Core^ Do &Begin (Display_Mode := Fill; (Overlay_Mode := Xor; (Polygon_Interior := Plain; (Polygon_Edge := Interior; (Move_Abs (X_Max_2 - (Y_Max Div 5), 2Y_Max_2 - (Y_Max Div 5)); (Check_Result ([Draw_OK]); (Box_Abs (X_Max_2 - (Y_Max Div 5) + Succ (Y_Max Div 5), ,For Edge := Solid_Line To Interior Do .For Disp := Fast To Fill Do 0Begin 0 Display_Mode := Disp; 2Polygon_Interior := Int; 2Polygon_Edge := Edge; 0 For I := 0 To 7 Do 0 Begin 4 Move_Abs (Radius * Succ (I), Radius); 6Circle_Rel (Radius); 6Check_Result ([Draw_OK]); 6Fill_Index := Succ (Fill_Index) Mod 8; 6Line_Index := Succ (Line_Index) Mod 8; 4End {of For I}; 2Continue; 0End {of For Disp}; (End {of Core}; $End {of Circle_Groups}; $ $ "Begin {of Test_Circle} $Set_Line_Style (On, 1Y_Max_2 - (Y_Max Div 5) + Succ (Y_Max Div 5)); (Check_Result ([Draw_OK]); (Move_Abs (X_Max_2 - (Y_Max Div 5) + 1, 2Y_Max_2 - (Y_Max Div 5) + 1); (Check_Result ([Draw_OK]); (Breakup (X_CP, Y_CP, Y_Max Div 5, 1); &End {of With}; "End {of Test_Block}; $ $  Begin {of Test_Core} "Check_Result ([Draw_Init]); "Goto_XY (0, 24); "Write ('Background color ? '); "Readln (Core^.Background); "Write ('Font number ? '); "Readln (Font_ID); "Set_Font (Font_ID); "Check_Result ([Draw_OK]); "Page (Output);On, On, On, On, On, On, On); $Check_Result ([Draw_OK]); $Circle_Groups (Replace); $Continue; $Erase; $Check_Result ([Draw_OK]); $Circle_Groups (Xor); $Continue; $Erase; $Check_Result ([Draw_OK]); $Do_Circles (Fast, Plain); " Continue; $Erase; $Check_Result ([Draw_OK]); $Do_Circles (Fill, Plain); "End {of Test_Circle}; " "  "Procedure Test_Text; " $Procedure Test_Direction (Dir : Direction); $ &Procedure Test_Position (Horiz, Vert : Directions); &Var Horiz_Name,  "Goto_XY (0, 24); "X_Max_2 := Core^.X_Max Div 2; "Y_Max_2 := Core^.Y_Max Div 2; "If Do_Test ('Cursor') Then $Test_Cursor  Else "If Do_Test ('Line') Then $Test_Line "Else If Do_Test ('Box') Then $Test_Box "Else "If Do_Test ('Text') Then $Test_Text "Else If Do_Test ('Circle') Then $Test_Circle "Else "If Do_Test ('Block') Then $Test_Block; "Continue; "Page (Output);  End {of Test_Core}. *Vert_Name : String; &Begin (Case Horiz Of *Left : Horiz_Name := 'Left - '; *Center : Horiz_Name := 'Center - '; *Right : Horiz_Name := 'Right - '; (End {of Case}; (Case Vert Of *Top : Vert_Name := 'Top'; *Center : Vert_Name := 'Center'; *Bottom : Vert_Name := 'Bottom'; (End {of Case}; (Core^.Top_Bottom := Vert; (Core^.Left_Right := Horiz; (Text (Concat (Horiz_Name, Vert_Name)); (Core^.Text_Index := Succ (Core^.Text_Index) Mod 8; (Continue; &End {of Test_Position}; $ $ $Begin {o,     &TESTCORE #@ &NEC_SYS@@   @@  0rrLineeBoxTexttCircleeBlockEamz7G\4! EXTRAHEASTRINGOPGOTOXY PASCALIOEXTRAIO GRAFDRAW %TESTCORE$/Ė= sp/Ėd `t ptp h  /a30t p/tpt p h/ Ė(*a+Pt pat pt p⼃ h p (ڤ- sptp 0u,W8t p h pu2"r~ih ! r h|ih !~ r h~ih ! |r h|ih ! r h~ih ! |̚~ ¿r h $TAG $CURSOR $EQUAL $LAST $SYNTAX 1 2 3 4     O.#kޚ~ih !"~ |̚~ ¿r hّrr   rr21rrri r ć}|h _  r | r ~  r ~ | r   r  h  ć}r  ćć}|h yaxĄ a Ą a| Ą~ a Ą~ a| Ą a Ąar  h'r ć ᇁ~h g  ˏ21r-̇+ ¿|r 21r-̇+ ¿r  hᇁ|h g  ˏ21r~퇁+̇- ¿r 21rᇁ+̇- ¿r  hć ~h f  ˏ21r-̇+ ¿|r 21r-̇+ ¿r  h|h  Program Test_Core;  Uses {$U Grafdraw.Code} Graf_Draw;  Const Print_Errors = False; &Esc = 27; { Escape key }  CR = 13; { Return key } &Up_Key = 31; { Up arrow key } &Down_Key = 10; { Down arrow key } &Right_Key = 28; { Right arrow key } &Left_Key = 15; { Left arrow key }  BS_Key = 8; { Backspace key } &Home_Key = 25; { Home key }  Type Result_Set = Set Of Draw_OK..Draw_Max;  Char_Set = Set Of Char;  Var Font_ID : Font_Type; $X_Max_2, f  ˏ21r~+̇- ¿r 21r+̇- ¿r  hi! r !!}!|jh "8  r!~ !| r! ! ˏ hÖ"!r r i! $!#!! ! 21r!! !| jh "! r! ! ˏ hڑ! !!| jh "! r! ! ˏ hڑ! ! ˏ! ! ˏ!|!|!| !|!|!|!| !~!|!|!|!| !~!|$Y_Max_2 : Integer;   "Procedure Erase; "Begin ${Not implemented} $Core^.Draw_Result := 0; "End {of Erase}; " " " "Procedure Erase_Alpha; "Begin $Page (Output); $Core^.Draw_Result := 0; "End {of Erase_Alpha}; " " " "Function Read_Key (Allowed : Char_Set) : Char; "Var Ch : Char; &Hit_Digit : Boolean; &Move_Mult : Integer; &W : Win_Rec; "Begin $Repeat &Read (Keyboard, Ch); $ If Eoln (Keyboard) Then (Ch := Chr (CR); $Until Ch In Allowed; " Read_Key := Ch; !|!| !|!|!| !|!|!|!| !~!|!|!|!| !~!|!|!| !|!|!| !|!|!|!| !~!|!|!|!| !~!|!|!| !~!|!~!~!|!~!~!~ m%*%|l% % ni!&toj"'f h (W% %!%" k#)7$#$r$r% % ˏ% % ˏ#kđ h"j!i r   "End {of Read_Key}; " " " "Procedure Check_Result (Expected : Result_Set); "Var Ch : Char; "Begin " If Not (Core^.Draw_Result In Expected) Then &If Print_Errors Then (Begin *Write ('Unexpected draw result ', Core^.Draw_Result, '; Hit [RETURN]'); *Ch := Read_Key ([Chr (CR)]); (End {of If Check_Result}; " Core^.Draw_Result := 9; {Just to see if it changes} "End {of Check_Result}; " " " "Function Do_Test (S : String) : Boolean; "Var Ch : Char; "Begin $Write ('Test ', S, ' (Y/N/Esc) ? '*EP*IP *NPրS`[P`]P `aPրeĚSS*PvS`vSr   ˏđ   h      rr21r21rr spg #"rr#!" rr#!"  #ha w%$%$# %# $%# $# a w) h    2 |1 |r2 | |1 | |); $Ch := Read_Key (['y', 'Y', 'n', 'N', Chr (Esc)]); $If Ch = Chr (Esc) Then &Exit (Test_Core); $Do_Test := Ch In ['Y', 'y']; $Writeln (Ch); $If Ch In ['Y', 'y'] Then &Erase; $Erase_Alpha; $Goto_XY (0, 24); "End {of Do_Test}; " " " "Procedure Continue; "Var Ch : Char; "Begin $Write ('Type to continue'); $Ch := Read_Key ([Chr (CR), Chr (Esc)]); $If Ch = Chr (Esc) Then &Exit (Test_Core); $Erase_Alpha; $Goto_XY (0, 24); "End {of Continue}; " " " "Procedure Test_Cursor; " r2 |1 |r y x | ujt ptpt ptt ptpt p0cr  spu~||D 6 (  spUnexpected draw result ; Hit [RETURN]]Test (Y/N/Esc) ? @@Type to continueLeft - Center - Right - TopCenterrBottommBackground color ? Font number ? Curso-     $Procedure Box_Cursor (Size : Integer); $Var I : Integer; $Begin &Size_Cursor (Size); &Check_Result ([Draw_OK, Draw_Clipped]); &For I := 0 To Core^.X_Max Do (Begin *Move_Cursor (I, 0); *Check_Result ([Draw_OK, Draw_Clipped]); (End {of For}; &For I := 0 To Core^.Y_Max Do (Begin *Move_Cursor (Core^.X_Max, I); *Check_Result ([Draw_OK, Draw_Clipped]); (End {of For}; &For I := Core^.X_Max Downto 0 Do (Begin *Move_Cursor (I, Core^.Y_Max); *Check_Result ([Draw_OK, Draw_Clipped]); (End {of For};*Begin ,Line_Index := Succ (Line_Index) Mod 8; ,Move_Abs (X_Max_2, Y_Max_2); ,Check_Result ([Draw_OK]); ,Line_Abs (Round (Glob_X_Max / Glob_Y_Max * I), Pred (Y_Max)); ,Check_Result ([Draw_OK]); ,Move_Abs (X_Max_2, Y_Max_2); ,Check_Result ([Draw_OK]); ,Line_Abs (Round (Glob_X_Max / Glob_Y_Max * I), 1); ,Check_Result ([Draw_OK]); *End {of For}; (For I := 1 To Pred (Y_Max) Do *Begin ,Line_Index := Succ (Line_Index) Mod 8; ,Move_Abs (X_Max_2, Y_Max_2); ,Check_Result ([Draw_OK]); ,Line_Abs (Pred &For I := Core^.Y_Max Downto 0 Do (Begin *Move_Cursor (0, I); *Check_Result ([Draw_OK, Draw_Clipped]); (End {of For}; &For I := 0 To Core^.X_Max Do (Begin *Move_Cursor (I, Round (Core^.Y_Max / Core^.X_Max * I)); *Check_Result ([Draw_OK, Draw_Clipped]); (End {of For}; &For I := Core^.X_Max Downto 0 Do (Begin *Move_Cursor (Core^.X_Max - I, Round (Core^.Y_Max / Core^.X_Max * I)); *Check_Result ([Draw_OK, Draw_Clipped]); (End {of For}; &Continue; $End {of Box_Cursor}; $  (X_Max), Round (Glob_Y_Max / Glob_X_Max * I)); ,Check_Result ([Draw_OK]); ,Move_Abs (X_Max_2, Y_Max_2); ,Check_Result ([Draw_OK]); ,Line_Abs (1, Round (Glob_Y_Max / Glob_X_Max * I)); ,Check_Result ([Draw_OK]); *End {of For};  &End {of With}; "End {of Test_Line};    "Procedure Test_Box; "Var I : Integer; "Begin {of Test_Box} $With Core^ Do $ Begin (Line_Index := 1; (Set_Line_Style (On, On, Off, On, On, Off, On, On); (Check_Result ([Draw_OK]); (Overlay_Mode := Xor; "Begin {of Test_Cursor} $Set_Cursor (Cur_Enable); $Check_Result ([Draw_OK]); $Set_Cursor (Cur_Visible); $Check_Result ([Draw_OK, Draw_Clipped]); $Continue; $Box_Cursor (15); $Box_Cursor (30); $Box_Cursor (2000); " Set_Cursor (Cur_Invisible); $Check_Result ([Draw_OK]); $Set_Cursor (Cur_Small); $Check_Result ([Draw_OK]); $Move_Cursor (Succ (X_Max_2), Succ (Y_Max_2)); $Check_Result ([Draw_OK]); $Set_Cursor (Cur_Visible); $Check_Result ([Draw_OK, Draw_Clipped]); $Continue; $Set_Cursor (Cur_D(For I := Y_Min To Y_Max Div 4 Do *Begin ,Move_Abs (I * 2, I * 2); ,Check_Result ([Draw_OK]); ,Box_Abs (X_Max - I * 2, Y_Max - I * 2); ,Check_Result ([Draw_OK]); ,Line_Index := Succ (Line_Index) Mod 8; *End {of For}; $End {of With}; & "End {of Test_Box}; "  "Procedure Test_Circle; $ $Procedure Do_Circles (Disp : Display_Type; Int : Int_Type); $Var I : Integer; * &Procedure Clip_Circle (X, Y, R : Integer); &Begin (Move_Abs (X, Y); (Check_Result ([Draw_OK]); (Circle_Rel (R); (Check_Reisable); $Check_Result ([Draw_OK]); "End {of Test_Cursor};   " "Procedure Test_Line; "Var I : Integer; " X, &Y : Point_Array; "Begin $With Core^ Do &Begin (Line_Index := 1; (Set_Line_Style (On, On, Off, On, On, Off, On, On); (Check_Result ([Draw_OK]); (Overlay_Mode := Xor; (For I := Y_Min To Y_Max Div 4 Do *Begin ,Move_Abs (I * 2, I * 2); ,Check_Result ([Draw_OK]); ,Line_Abs (I * 2, Y_Max - I * 2); ,Check_Result ([Draw_OK]); ,Line_Abs (X_Max - I * 2, I * 2); sult ([Draw_Clipped]); &End {of Clip_Circle}; ( $Begin {of Do_Circles} &With Core^ Do (Begin *Display_Mode := Disp; *Polygon_Interior := Int; *Polygon_Edge := Solid_Line; *Line_Index := 1; *Fill_Index := 1; *Move_Abs (X_Max_2, Y_Max_2); *Check_Result ([Draw_OK]); *Overlay_Mode := Xor; * *Line_Index := 1; *For I := 0 To Y_Max Div 32 Do ,Begin .Circle_Rel (I * 16); .Check_Result ([Draw_OK]); .Line_Index := Succ (Line_Index) Mod 8; ,End {of For};  *Continue; *Line_Index := 1; ,Check_Result ([Draw_OK]); ,Line_Abs (X_Max - I * 2, Y_Max - I * 2); ,Check_Result ([Draw_OK]); ,Line_Abs (I * 2, I * 2); ,Check_Result ([Draw_OK]); *End {of For}; ( (Continue; (Line_Index := Succ (Line_Index); (Move_Abs (X_Min, Y_Min); (Check_Result ([Draw_OK]); (Continue; (Line_Index := Succ (Line_Index); (Overlay_Mode := Replace; (For I := Y_Min To Y_Max Div 4 Do *Begin ,X[1] := X_CP; { Penup command } ,Y[1] := Y_CP; ,X[2] := I * 2; { Move_Abs (I * 2, I * 2) *Overlay_Mode := Replace; *For I := 0 To Y_Max Div 32 Do ,Begin .Circle_Rel (I * 16); .Check_Result ([Draw_OK]); .Line_Index := Succ (Line_Index) Mod 8; ,End {of For}; $ *Continue; *Erase; *Check_Result ([Draw_OK]); *Line_Index := Succ (Fill_Index) Mod 8; *Fill_Index := Succ (Line_Index) Mod 8; *Clip_Circle (Y_Max Div 20, Y_Max Div 20, Y_Max Div 10); *Clip_Circle (Y_Max Div 20, Y_Max - Y_Max Div 20, Y_Max Div 10); *Clip_Circle (X_Max - Y_Max Div 20, Y_Max - Y_Max Div 20, 7Y_Max Div 10); *} ,Y[2] := I * 2; ,X[3] := I * 2; { Line_Abs (I * 2, Y_Max - I * 2) } ,Y[3] := Y_Max - I * 2; ,X[4] := X_Max - I * 2; { Line_Abs (X_Max - I * 2, I * 2) } ,Y[4] := I * 2; ,X[5] := X_Max - I * 2; { Line_Abs (X_Max - I * 2, } ,Y[5] := Y_Max - I * 2; { Y_Max - I * 2) } ,X[6] := I * 2; { Line_Abs (I * 2, I * 2) } * Y[6] := I * 2; * PLine_Abs (X, Y, 6); ,Check_Result ([Draw_OK]); *End {of For}; (Continue;  (Erase; (Check_Result ([Draw_OK]); Clip_Circle (X_Max - Y_Max Div 20, Y_Max Div 20, Y_Max Div 10); ( *Continue; *Erase; *Check_Result ([Draw_OK]); *Clip_Circle (Y_Max Div 20 + 3, Y_Max Div 20 + 3, Y_Max Div 10); *Clip_Circle (Y_Max Div 20 + 3, Y_Max - Y_Max Div 20 + 3, 7Y_Max Div 10); *Clip_Circle (X_Max - Y_Max Div 20 + 3, Y_Max - Y_Max Div 20 + 3, 7Y_Max Div 10); *Clip_Circle (X_Max - Y_Max Div 20 + 3, Y_Max Div 20 + 3, 7Y_Max Div 10); ( *Continue; *Erase; *Check_Result ([Draw_OK]); (Set_Line_Style (On, On, On, On, On, On, On, On); (Check_Result ([Draw_OK]); (Overlay_Mode := Replace; (Line_Index := 0; (For I := -1 To Succ (X_Max) Do *Begin ,Line_Index := Succ (Line_Index) Mod 8; ,Move_Abs (X_Max_2, Y_Max_2); ,Check_Result ([Draw_OK]); ,Line_Abs (Round (Glob_X_Max / Glob_Y_Max * I), Succ (Y_Max)); ,Check_Result ([Draw_Clipped]); ,Move_Abs (X_Max_2, Y_Max_2); ,Check_Result ([Draw_OK]); ,Line_Abs (Round (Glob_X_Max / Glob_Y_Max * I), -1); ,Check_Result ([Draw_Clipped]); *E*Clip_Circle (Y_Max Div 20 - 3, Y_Max Div 20 - 3, Y_Max Div 10); *Clip_Circle (Y_Max Div 20 - 3, Y_Max - Y_Max Div 20 - 3, 7Y_Max Div 10); *Clip_Circle (X_Max - Y_Max Div 20 - 3, Y_Max - Y_Max Div 20 - 3, 7Y_Max Div 10); *Clip_Circle (X_Max - Y_Max Div 20 - 3, Y_Max Div 20 - 3, 7Y_Max Div 10); ( *Continue; *Erase; *Check_Result ([Draw_OK]); *Clip_Circle (0, 0, Succ (X_Max)); *Continue; *Erase; *Check_Result ([Draw_OK]); *Clip_Circle (0, Y_Max, Succ (X_Max)); *Continue; *Erase; *Check_Rnd {of For}; (For I := -1 To Succ (Y_Max) Do *Begin ,Line_Index := Succ (Line_Index) Mod 8; ,Move_Abs (X_Max_2, Y_Max_2); ,Check_Result ([Draw_OK]); ,Line_Abs (Succ (X_Max), Round (Glob_Y_Max / Glob_X_Max * I)); ,Check_Result ([Draw_Clipped]); ,Move_Abs (X_Max_2, Y_Max_2); ,Check_Result ([Draw_OK]); ,Line_Abs (-1, Round (Glob_Y_Max / Glob_X_Max * I)); ,Check_Result ([Draw_Clipped]); *End {of For}; Continue;  (Overlay_Mode := Xor; (Line_Index := 0; (For I := 1 To Pred (X_Max) Do -     esult ([Draw_OK]); *Clip_Circle (X_Max, Y_Max, Succ (X_Max)); *Continue; *Erase; *Check_Result ([Draw_OK]); *Clip_Circle (X_Max, 0, Succ (X_Max)); (End {of With}; $End {of Do_Circles};   $Procedure Circle_Groups (Ovly : Overlay_Type); $Var Disp : Display_Type; (Int : Int_Type; (Edge : Edge_Type; (Radius, (I : Integer; $Begin $ With Core^ Do (Begin *Overlay_Mode := Ovly; *Radius := Succ (Y_Max) Div 17; *Fill_Index := 5; *Line_Index := 1; *For Int := Plain To Plain Do ); &Draw_Section (X + Side_Length - New_Length, Y + Side_Length - New_Length, 42, 2); &Var_Dispose (Pattern.P, New_Length * ((New_Length + 3) Div 4)); $End {of Breakup}; $ " "Begin {of Test_Block} $With Core^ Do &Begin (Fill_Index := 2; (Display_Mode := Fill; (Overlay_Mode := Xor; (Polygon_Interior := Plain; (Polygon_Edge := Interior; (Move_Abs (X_Max_2 - (Y_Max Div 5), 2Y_Max_2 - (Y_Max Div 5)); (Check_Result ([Draw_OK]); (Box_Abs (X_Max_2 - (Y_Max Div 5) + Succ (Y_Max Div 5), ,For Edge := Solid_Line To Interior Do .For Disp := Fast To Fill Do 0Begin 0 Display_Mode := Disp; 2Polygon_Interior := Int; 2Polygon_Edge := Edge; 0 For I := 0 To 7 Do 0 Begin 4 Move_Abs (Radius * Succ (I), Radius); 6Circle_Rel (Radius); 6Check_Result ([Draw_OK]); 6Fill_Index := Succ (Fill_Index) Mod 8; 6Line_Index := Succ (Line_Index) Mod 8; 4End {of For I}; 2Continue; 0End {of For Disp}; (End {of Core}; $End {of Circle_Groups}; $ $ "Begin {of Test_Circle} $Set_Line_Style (On, 1Y_Max_2 - (Y_Max Div 5) + Succ (Y_Max Div 5)); (Check_Result ([Draw_OK]); (Move_Abs (X_Max_2 - (Y_Max Div 5) + 1, 2Y_Max_2 - (Y_Max Div 5) + 1); (Check_Result ([Draw_OK]); (Breakup (X_CP, Y_CP, Y_Max Div 5, 1); &End {of With}; "End {of Test_Block}; $ $  Begin {of Test_Core} "Check_Result ([Draw_Init]); "Goto_XY (0, 24); "Write ('Background color ? '); "Readln (Core^.Background); "Write ('Font number ? '); "Readln (Font_ID); "Set_Font (Font_ID); "Check_Result ([Draw_OK]); "Page (Output);On, On, On, On, On, On, On); $Check_Result ([Draw_OK]); $Circle_Groups (Replace); $Continue; $Erase; $Check_Result ([Draw_OK]); $Circle_Groups (Xor); $Continue; $Erase; $Check_Result ([Draw_OK]); $Do_Circles (Fast, Plain); " Continue; $Erase; $Check_Result ([Draw_OK]); $Do_Circles (Fill, Plain); "End {of Test_Circle}; " "  "Procedure Test_Text; " $Procedure Test_Direction (Dir : Direction); $ &Procedure Test_Position (Horiz, Vert : Directions); &Var Horiz_Name,  "Goto_XY (0, 24); "X_Max_2 := Core^.X_Max Div 2; "Y_Max_2 := Core^.Y_Max Div 2; "If Do_Test ('Cursor') Then $Test_Cursor  Else "If Do_Test ('Line') Then $Test_Line "Else If Do_Test ('Box') Then $Test_Box "Else "If Do_Test ('Text') Then $Test_Text "Else If Do_Test ('Circle') Then $Test_Circle "Else "If Do_Test ('Block') Then $Test_Block; "Continue; "Page (Output);  End {of Test_Core}. *Vert_Name : String; &Begin (Case Horiz Of *Left : Horiz_Name := 'Left - '; *Center : Horiz_Name := 'Center - '; *Right : Horiz_Name := 'Right - '; (End {of Case}; (Case Vert Of *Top : Vert_Name := 'Top'; *Center : Vert_Name := 'Center'; *Bottom : Vert_Name := 'Bottom'; (End {of Case}; (Core^.Top_Bottom := Vert; (Core^.Left_Right := Horiz; (Text (Concat (Horiz_Name, Vert_Name)); (Core^.Text_Index := Succ (Core^.Text_Index) Mod 8; (Continue; &End {of Test_Position}; $ $ $Begin {o*TESTCORE # &NEC_SYS@@   @@  0f Test_Direction} $ Core^.Char_Path := Dir; &Test_Position (Left, Bottom); &Test_Position (Left, Center); &Test_Position (Left, Top); &Erase; &Test_Position (Center, Bottom); &Test_Position (Center, Center); &Test_Position (Center, Top); &Erase; &Test_Position (Right, Bottom); &Test_Position (Right, Center); &Test_Position (Right, Top); &Erase; $End {of Test_Direction}; $ $ " "Begin {of Test_Text} " With Core^ Do &Begin (Char_Spacing := 0; (Text_Index := 1; )TESTCORE$/Ė= sp/Ėd `t ptp h  /a30t p/tpt p h/ Ė(*a+Pt pat pt p⼃ h p (ڤ- sptp 0u,W8t p h pu2"r~ih ! r h|ih !~ r h~ih ! |r h|ih ! r h~ih ! |̚~ ¿r h(Char_Width := Font_Cols * 2; (Char_Height := Font_Rows * 1; (Set_Cursor (Cur_Enable); (Set_Cursor (Cur_Visible); (Move_Abs (X_Max_2, Y_Max_2); (Move_Cursor (X_Max_2, Y_Max_2); (Test_Direction (Right); (Test_Direction (Left); (Test_Direction (Up); (Test_Direction (Down); (Set_Cursor (Cur_Disable); (Page (Output); &End {of With}; "End {of Test_Text};    "Procedure Test_Block; " $Procedure Breakup (X, Y, Side_Length, Level : Integer); $Type Color_Array = Packed Array [0..30000] Of Coloޚ~ih !"~ |̚~ ¿r hّrr   rr21rrri r ć}|h _  r | r ~  r ~ | r   r  h  ć}r  ćć}|h yaxĄ a Ą a| Ą~ a Ąr_Index; $Var New_Length : Integer; (Pattern : Record 7Case Integer Of 90 : (S : Sorcery); 91 : (P : ^Color_Array); 5End {of Pattern}; $ &Procedure Draw_Section (Sect_X, Sect_Y, X_Offset, Y_Offset : Integer); &Begin (Move_Abs (Sect_X, Sect_Y); (Check_Result ([Draw_OK]); (Read_Block_Pixels (Pattern.S, New_Length, New_Length); (Check_Result ([Draw_OK]); (Move_Abs (Sect_X + X_Offset * New_Length, 2Sect_Y + Y_Offset * New_Length); (Check_Result ([Draw_OK]); ~ a| Ą a Ąar  h'r ć ᇁ~h g  ˏ21r-̇+ ¿|r 21r-̇+ ¿r  hᇁ|h g  ˏ21r~퇁+̇- ¿r 21rᇁ+̇- ¿r  hć ~h f  ˏ21r-̇+ ¿|r 21r-̇+ ¿r  h|h (Write_Block_Pixels (Pattern.S, New_Length, New_Length); (Check_Result ([Draw_OK]); (If Level > 0 Then *Breakup (Sect_X + X_Offset * New_Length, 3Sect_Y + Y_Offset * New_Length, New_Length, Pred (Level)); &End {of Draw_Section}; & $Begin {of Breakup} &New_Length := Side_Length Div 2; &If Var_New (Pattern.P, New_Length * ((New_Length + 3) Div 4)) <> 0 Then; &Draw_Section (X, Y, -2, -2); &Draw_Section (X, Y + Side_Length - New_Length, -2, 2); &Draw_Section (X + Side_Length - New_Length, Y, 2, -2.     f  ˏ21r~+̇- ¿r 21r+̇- ¿r  hi! r !!}!|jh "8  r!~ !| r! ! ˏ hÖ"!r r i! $!#!! ! 21r!! !| jh "! r! ! ˏ hڑ! !!| jh "! r! ! ˏ hڑ! ! ˏ! ! ˏ!|!|!| !|!|!|!| !~!|!|!|!| !~!|TI TRS AD0 'AD1 4OLD DW1 <DW2  RAM  HRD  <vx2R؋<}?w6DD;t;u$P$Ft:>F<t|(>t ؎D+ؾ]φ㾡R2|tTLEeȈDsdãHâJãLô <t |> >t2 u>DE Q!|!| !|!|!| !|!|!|!| !~!|!|!|!| !~!|!|!| !|!|!| !|!|!|!| !~!|!|!|!| !~!|!|!| !~!|!~!~!|!~!~!~ m%*%|l% % ni!&toj"'f h (W% %!%" k#)7$#$r$r% % ˏ% % ˏ#kđ h"j!i r   2 Q&t |[> tQH>J:}.2ߋ>L<u ،Î2ô u ̱ ñLON>D.H6J2ɂLv:uv*uuuu ueE uEEM@ u EE emuM ʈMKE:E tE ~ uXO *MĈe QN: {&u2EE EEt KtG날ttⴀ޻.F:ut t٨uô 2Pu2FPsrRW؎P@sR*EP*IP *NPրS`[P`]P `aPրeĚSS*PvS`vSr   ˏđ   h      rr21r21rr spg #"rr#!" rr#!"  #ha w%$%$# %# $%# $# a w1 h     2 |1 |r2 | |1 |ss_à PS$0<:r[JX䓊䓆;t uT2械2橰2昻v 䀀u.q | t | r t  Ђ  &u & @u& &ux3 H> |;U~Á=u}@u9|uU; uSq   ڀ}    ;ty ~ x    | u t!x    tv [<@u[6JNV >L t ،ŽڹY u u( |r2 |1 |r y x | ujt ptpt ptt ptpt p0cr  spu~||D 6 (  spUnexpected draw result ; Hit [RETURN]]Test (Y/N/Esc) ? @@Type to continueLeft - Center - Right - TopCenterrBottommBackground color ? Font number ?û(&t<@u 2t ôÀ> t= q      | t tv x 22.@䢨 tCI 䢨uC撊䖨ttG䢨u䖨t䒨t䢨u{t䖨tێÿ ` WR䢨 tI䠪?:䢨u $`<@àq #r t QYPh t2&13P3ۇ tH X3RLB@ CursorrLineeBoxTexttCircleeBlockEamz7G\4! EXTRAHEASTRINGOPGOTOXY PASCALIOEXTRAIO GRAFDRAW P@@B32@tB`u < t P 9X3A‚Puհ # ZƂu#6"/mð QYÊ, u'tûû$&?r${${ j2ðnQ hh:Y u2hu u  P3ۇ t XÊ5u> u4t2$t0u > u02  4u 2t40û'&tȀu u 22ð42@2v/S2 ؋[++2'226ã#T>t3؎%= """0/F)*NECBIOS NECBIOS IV.0 [1e]X $Y&&?t3t| t |&| t&z($&&?t3t tw *&&?t, ¢]&&?t3&&?t&&?t3P2Y2B  B@N@P@@@@@E@GBP@q3OP"#3ohv2rvnnln"* 2ҹ&?&&9?t &?CC‚>@`Eƅƃƅ0kB3JLNHXu u<>t z> t !i>tXR$_< DINSX]bglqv{} ,x⻁⻯2⻠⻤⻨⻬⻤ ⻫ ⻜ ⻱ ⻕ ⻧ Vj"uXPD+P6#T4.6R..RQɎY\6^`ZZXVӋ\6^`Z..VA=NEC B=NEC CAP ALT GR1 GR2 KBD / / : SunMonTueWedThuFriSat InterrFu t  uLtus >u(@t@tdPtu yXPt u>t xtXtt @t  t2@tÜzP&z >t'<B (u 8 $ >t.(@u$ f  j>tIyR(@t hupt Trap Halt! 1B1P1b @  jkmnopqrstuvwxy1234567890_-@[]\^:;,./ *+-./0123456789 ? 1234567890-=`[]\;',./ *+-./0123456789 ?  !@#$%&*()_+~{}|^:"<>?CWxcjq ;j0PPnnyYkkkk   #5GNEC SGL PDQ .      \_\Y & y)6"#J Xz?  B2@@C  B@2@Cø;ظu3G OډO.*ջfŀtt N jL"Ũ  ( &1t8t OOÀ>tqUXPX V^V^PX$V^V^Nx /CC u۱ًň'] t:tػOP0< r, 1 0ࣸX%󤠐 00 00 00Q$Y.X..&..Ȏ.PSQRUV G T ] } >HMW[t~ Fjpt07@hoy} "3FJNRglu'.2<hDLQUY_csv !&8=BFKPUYaot .5Su "3msw Xfv&-5;?NRYltz~ !+8DW..&G%tȎ؎&X_^]ZY[ X..&.&.X..&..Ȏ.PSQRUVW..&G%tȎ؎&X_^]ZY[ X..&.&RZ RZ$RZÿ``:t uBb2""HRpю e-} t׌َюٹ Ɏً*F5_Z[[^YXRu&vu2 [XXSt 2à23(u#>t ?u>u :t>t uX t LA tKf ")-37=@FNXdly} *7<IYfmsx ")05<@JX^mp /3;>q2@D\ BFKPUYaot .5Su "3msw Xfv&-5;?NRYltz~ !+8D20@@u2Ɉ@>u t t2tttÊ2òt2%T&8u&G{i&Gb1u*" *tJÜ<@u2:t20HR Zd>NECBIOS NECBIOS  .u >uã/ð1 a;>t``:uu*t<u#u2'uD&#>#Pu #">"u "7>#u6"#/ t>u /2.à#!" ԰뿾($,-뮶" # 둰"뻶(n߅u rih,0^U1c< 599>t``:u#t#>"t"#O#&#>#Pu#>"r"NECBIOS NECBIOS IV.0 [1e]3҈6"#6"#gP ><t ;6} P8<X> u6+uO> u:P;:w+:IX;:v+~GI:<:+I#X #/(`sH Lu| fMu |&|TNu&zG[u ]uUw !lu&|mu &|| nu z1t{u g}uwZ($&]]I(&(!# "U($ #! 3߂Ar st @à- "#,0r< DINSX]bglqv{} ,x⻁⻯2⻠⻤⻨⻬⻤ ⻫ ⻜ ⻱ ⻕ ⻧ Vj"uXPD+P6#T4.6R..RQɎY\6^`ZZXVӋ\6^`Z..VA=NEC B=NEC CAP ALT GR1 GR2 KBD / / : SunMonTueWedThuFriSat Interrw,&]]#>#Pr>"r##"~6"#<O*#qC, }2<v", }2"tH"&],0x2u. uA H &t  &uaPmX uPQ6=t= }$<46P8:P<(- PPXPQP0Y<6P+<82:PIYXQPYS@tpB2@C[ÜP@u tXRKB@@@P&.6, IB@@JB@@LB@@@ B@@X9RZAt0RQ"Yt IuGt upt Trap Halt! 1B1P1b @  jkmnopqrstuvwxy1234567890_-@[]\^:;,./ *+-./0123456789 ? 1234567890-=`[]\;',./ *+-./0123456789 ?  !@#$%&*()_+~{}|^:"<>?CWxcjq ;j0PPnnyYkkkk   #5GNEC SGL PDQ G ZÃtRP =P|nXZâ" B@@6"#8PH=OuY>]u t Qo B@@B++ҲPP+8BX;B|Bt +B:6â&IB@@P@ u@ tX^PQ**. @tF.F.YXF5!Ȁ F(loppy disk R(am disk H(ard disk... Copyright (c) SofTech Microsystems, Inc. and Ticom Systems, 1983 Version 1.2 Storage devices available: Load from which device ? "$&(*,.TI TRS AD0 'AD1 4OLD DW1 <DW2  RAM  HRD  <vx2R؋<}?w6DD;t;u$P$Ft:>F<t|(>t ؎D+ؾ]φ㾡R2|tTLEeȈDsdãHâJãLô <t |> >t2 u>DE Q02468:<>@BDFHJLNPRTVXZ\_dinsx}!%,1<@DHMSY]aej   !#%-^`lnprvz~ '2<AEUdimp} '+;GQ?DYxEbqx& 3 8 = G K P T b i l v {  & - 2 7 < A F M V [ a  O W _ n I M W  /     2 Q&t |[> tQH>J:}.2ߋ>L<u ،Î2ô u ̱ ñLON>D.H6J2ɂLv:uv*uuuu ueE uEEM@ u EE emuM ʈMKE:E tE ~ uXO *MĈe QN: {&u2EE EEt KtG날ttⴀ޻.F:ut t٨uô 2Pu2FPsrRW؎P@sR20@@u2Ɉ@>u t t2tttÊ2òt2%T&8u&G{i&Gb1u*" *tJÜ<@u2:t20HR Zd>ss_à PS$0<:r[JX䓊䓆;t uT2械2橰2昻v 䀀u.q | t | r t  Ђ  &u & @u& &ux3 H> |;U~Á=u}@u9|uU; uSq   ڀ}    ;ty ~ x    | u t!x    tv [<@u[6JNV >L t ،ŽڹY u u(.u >uã/ð1 a;>t``:uu*t<u#u2'uD&#>#Pu #">"u "7>#u6"#/ t>u /2.à#!" ԰뿾($,-뮶" # 둰"뻶(n߅u rih,0^U1c< 599>t``:u#t#>"t"#O#&#>#Pu#>"r"û(&t<@u 2t ôÀ> t= q      | t tv x 22.@䢨 tCI 䢨uC撊䖨ttG䢨u䖨t䒨t䢨u{t䖨tێÿ ` WR䢨 tI䠪?:䢨u $`<@àq #r t QYPh t2&13P3ۇ tH X3RLB@3҈6"#6"#gP ><t ;6} P8<X> u6+uO> u:P;:w+:IX;:v+~GI:<:+I#X #/(`sH Lu| fMu |&|TNu&zG[u ]uUw !lu&|mu &|| nu z1t{u g}uwZ($&]]I(&(!# "U($ #! 3߂Ar st @à- "#,0r<P@@B32@tB`u < t P 9X3A‚Puհ # ZƂu#6"/mð QYÊ, u'tûû$&?r${${ j2ðnQ hh:Y u2hu u  P3ۇ t XÊ5u> u4t2$t0u > u02  4u 2t40û'&tȀu u 22ð42@2v/S2 ؋[++2'226ã#T>t3؎%= """0/F)*w,&]]#>#Pr>"r##"~6"#<O*#qC, }2<v", }2"tH"&],0x2u. uA H &t  &uaPmX uPQ6=t= }$<46P8:P<(- PPXPQP0Y<6P+<82:PIYXQPYS@tpB2@C[ÜP@u tXRKB@@@P&.6, IB@@JB@@LB@@@ B@@X9RZAt0RQ"Yt IuGt X $Y&&?t3t| t |&| t&z($&&?t3t tw *&&?t, ¢]&&?t3&&?t&&?t3P2Y2B  B@N@P@@@@@E@GBP@q3OP"#3ohv2rvnnln"* 2ҹ&?&&9?t &?CC‚>@`Eƅƃƅ0kB3JLNHXu u<>t z> t !i>tXR$_<G ZÃtRP =P|nXZâ" B@@6"#8PH=OuY>]u t Qo B@@B++ҲPP+8BX;B|Bt +B:6â&IB@@P@ u@ tX^PQ**. @tF.F.YXF5!Ȁ F(loppy disk R(am disk H(ard disk... Copyright (c) SofTech Microsystems, Inc. and Ticom Systems, 1983 Version 1.2 Storage devices available: Load from which device ? "$&(*,.Fu t  uLtus >u(@t@tdPtu yXPt u>t xtXtt @t  t2@tÜzP&z >t'<B (u 8 $ >t.(@u$ f  j>tIyR(@t h02468:<>@BDFHJLNPRTVXZ\_dinsx}!%,1<@DHMSY]aej   !#%-^`lnprvz~ '2<AEUdimp} '+;GQ?DYxEbqx& 3 8 = G K P T b i l v {  & - 2 7 < A F M V [ a  O W _ n I M W   \_\Y & y)6"#J Xz?  B2@@C  B@2@Cø;ظu3G OډO.*ջfŀtt N jL"Ũ  ( &1t8t OOÀ>tqUXPX V^V^PX$V^V^Nx /CC u۱ًň'] t:tػOP0< r, 1 0ࣸX%󤠐 00 00 00Q$Y.X..&..Ȏ.PSQRUV G T ] } >HMW[t~ Fjpt07@hoy} "3FJNRglu'.2<hDLQUY_csv !&8=BFKPUYaot .5Su "3msw Xfv&-5;?NRYltz~ !+8DW..&G%tȎ؎&X_^]ZY[ X..&.&.X..&..Ȏ.PSQRUVW..&G%tȎ؎&X_^]ZY[ X..&.&RZ RZ$RZÿ``:t uBb2""HRpю e-} t׌َюٹ Ɏً*F5_Z[[^YXRu&vu2 [XXSt 2à23(u#>t ?u>u :t>t uX t LA t/     Kf ")-37=@FNXdly} *7<IYfmsx ")05<@JX^mp /3;>q2@D\ BFKPUYaot .5Su "3msw Xfv&-5;?NRYltz~ !+8D graf4.code  NECBIOS NECBIOS  bDIAG  &NEC_SYS@@   @@  0$CURSOR $EQUAL O.aDIAG > Br p0rprp0$ ͑͑"͑&*.͑26:͑>BF͑JNR͑VZ^͑bfj͑nrv͑z͑~͑͑͑͑͑͑͑͑͑͑͑͑͑͑͑͑͑ ͑͑͑"&͑*.͑26K-s prp:>K-s prpP    $ $ $    $ $ $ $       ngraf4.code       failure of test # !REALOPS PASCALIO $CURSOR $EQUAL  O.$CURSOR $EQUAL O.0      ngrafdraw.code  ngraf4.code   $TAG $CURSOR $EQUAL $LAST $SYNTAX 1 2 3 4 262+808:O.#k0     1     1     2     2     3     3     4     4     5     5     6     6     7     7     8     8     9     9     :     :     ;     ;     <     <     =     =      !"; #")05<@JXj %JXx JX^mpl  l7 q ? %?J  Wq< h z"<H zRl zMgj z=W |3Mk |.Hk |$> /3;>q \q8 >qjqq~v{qgoq\vqq ?Yiq  "kq Ztq2 @ ]^x{2 @ ]Ysk2 @ ]2 @ gj2 @ j2 @ J 52 @ o2 @ /6 PN2 @  2 @ D \ o h 8R !    k B d~ lj m9 Spk  /I 0 <V| *D   Ԁ |      ! # /0 3  i   ?Y ΂ Ȉ  (B  & !@  #=  fi  8҈ k  m Ga肟 ,F  NECBIOS NECBIOS  JLNPRTVXZ\_dinsx}!%,1<@DHMSY]aej   !#%-^`lnprvz~c} '2<AEUhEUdimp}mrw|w r 1K , Ztf 6P  Uo ;U  Vp  '+;GQ    ? D Y x  E b q x q x   & 3 8 = G K P T b i l v {   & - 2 7 < A F M V [ a  O W jO W O W O W O W O W O W _ n    IMW  G} E_GT]}>HMW[t~ Fjpt0"0#~ o0#!0% 0,Jd0= 07@hoy} "3FJNRglu'.2<hDLQUY_csv !&8=>X8=BFKPUYa2@ZYaot   NECBIOS NECBIOS  JLNPRTVXZ\_dinsx}!%,1<@DHMSY]aej   !#%-^`lnprvz~c} '2<AEUhEUdimp}mrw|V j i xOi Tn .5SujYs "3msw sw s Xfv6Pj2^x&-5;?NRYltz~{{zp '+;GQ    ? D Y x  E b q x q x   & 3 8 = G K P T b i l v {   & - 2 7 < A F M V [ a  O W jO W O W O W O W O W O W _ n    IMW  G} E_GT]}>HMW[t~ Fjpt !+C!+W!+8DKfp ")-37=@FNXdly} *7c *7<IYfmsxj sxqsxsx ">     0"0#~ o0#!0% 0,Jd0= 07@hoy} "3FJNRglu'.2<hDLQUY_csv !&8=>X8=BFKPUYa2@ZYaot   V j i xOi Tn .5SujYs "3msw sw s Xfv6Pj2^x&-5;?NRYltz~{{zp !+C!+W!+8DKfp ")-37=@FNXdly} *7c *7<IYfmsxj sxqsxsx " !"; #")05<@JXj %JXx JX^mpl  l7 q ? %?J  Wq< h z"<H zRl zMgj z=W |3Mk |.Hk |$> /3;>q \q8 >qjqq~v{qgoq\vqq ?Yiq  "kq Ztq2 @ ]^x{2 @ ]Ysk2 @ ]2 @ gj2 @ j2 @ J 52 @ o2 @ /6 PN2 @  2 @ D \ o h 8R !    k B d~ lj m9 Spk  /I 0 <V| *D   Ԁ |      ! # /0 3  i   ?Y ΂ Ȉ  (B  & !@  #=  fi  8҈ k  m Ga肟 ,F  w r 1K , Ztf 6P  Uo ;U  Vp >     ?     ?     @     @     A     A     B     B     C     C     D     D     E     E     F     F     G     G     H     H     I     I     J     J     *Up_Key : Win_Y_Org := Win_Y_Org - Move_Mult; *Right_Key : Win_X_Org := Win_X_Org - Move_Mult; *BS_Key, *Left_Key : Win_X_Org := Win_X_Org + Move_Mult; ( Home_Key : Begin 8Win_X_Org := 0; 8Win_Y_Org := 0; 6End {of Home_Key}; *48, 49, 50, {'0'..'9'} *51, 52, 53, *54, 55, 56, *57 : Begin 8If Not Hit_Digit Then :Move_Mult := 0; 8Move_Mult := Move_Mult * 10 + Ord (Ch) - Ord ('0'); 6 Hit_Digit := True; 6End {of '0'..'9'}; (End {of Case}; $ If W <> Core^.Window_List^ Then (Begin *Hit_Digit := False; *Set_Window (Core^.Window_List); *If (Core^.Draw_Result <> Draw_OK) And Print_Errors Then ,Writeln (' Draw result on window movement was ', Core^.Draw_Result); *If Core^.Draw_Result >= Draw_Overflow Then ,Core^.Window_List^ := W; (End {of If W}; $Until Ch In Allowed; " Read_Key := Ch; "End {of Read_Key}; " " " "Procedure Check_Result (Expected : Result_Set); "Var Ch : Char; "Begin " If Not (Core^.Draw_Result In Expected) Then &If Print_Errors Then (Begin *Write ('Unexpected draw result ', Core^.Draw_Result, '; Hit [RETURN]'); *Ch := Read_Key ([Chr (CR)]); (End {of If Check_Result}; " Core^.Draw_Result := 9; {Just to see if it changes} "End {of Check_Result}; " " " "Function Do_Test (S : String) : Boolean; "Var Ch : Char; "Begin $Write ('Test ', S, ' (Y/N/Esc) ? '); $Ch := Read_Key (['y', 'Y', 'n', 'N', Chr (Esc)]); $If Ch = Chr (Esc) Then &Exit (Test_Core); $Do_Test := Ch In ['Y', 'y']; $Writeln (Ch); $If Ch In ['Y', 'y'] Then &Erase; $Erase_Alpha; $Goto_XY (0, 24); "End {of Do_Test}; " " " "Procedure Continue; "Var Ch : Char; "Begin $Write ('Type to continue'); $Ch := Read_Key ([Chr (CR), Chr (Esc)]); $If Ch = Chr (Esc) Then &Exit (Test_Core); $Erase_Alpha; $Goto_XY (0, 24); "End {of Continue}; " " " "Procedure Test_Cursor; " $Procedure Box_Cursor (Size : Integer); $Var I : Integer; $Begin &Size_Cursor (Size); &Check_Result ([Draw_OK, Draw_Clipped]); &For I := 0 To Core^.X_Max Do (Begin *Move_Cursor (I, 0); *Check_Result ([Draw_OK, Draw_Clipped]); (End {of For}; &For I := 0 To Core^.Y_Max Do (Begin *Move_Cursor (Core^.X_Max, I); *Check_Result ([Draw_OK, Draw_Clipped]); (End {of For}; &For I := Core^.X_Max Downto 0 Do (Begin *Move_Cursor (I, Core^.Y_Max); *Check_Result ([Draw_OK, Draw_Clipped]); (End {of For}; &For I := Core^.Y_Max Downto 0 Do (Begin *Move_Cursor (0, I); *Check_Result ([Draw_OK, Draw_Clipped]); (End {of For}; &For I := 0 To Core^.X_Max Do (Begin *Move_Cursor (I, Round (Core^.Y_Max / Core^.X_Max * I)); *Check_Result ([Draw_OK, Draw_Clipped]); (End {of For}; &For I := Core^.X_Max Downto 0 Do (Begin *Move_Cursor (Core^.X_Max - I, Round (Core^.Y_Max / Core^.X_Max * I)); *Check_Result ([Draw_OK, Draw_Clipped]); (End {of For}; &Continue; $End {of Box_Cursor}; $ "Begin {of Test_Cursor} $Set_Cursor (Cur_Enable); $Check_Result ([Draw_OK]); $Set_Cursor (Cur_Visible); $Check_Result ([Draw_OK, Draw_Clipped]); $Continue; $Box_Cursor (15);  Program Test_Core;  Uses {$U Grafdraw.Code} Graf_Draw;  Const Print_Errors = False; &Esc = 27; { Escape key }  CR = 13; { Return key } &Up_Key = 31; { Up arrow key } &Down_Key = 10; { Down arrow key } &Right_Key = 28; { Right arrow key } &Left_Key = 15; { Left arrow key }  BS_Key = 8; { Backspace key } &Home_Key = 25; { Home key }  Type Result_Set = Set Of Draw_OK..Draw_Max;  Char_Set = Set Of Char;  Var Font_ID : Font_Type; $Pat_ID : $Box_Cursor (30); $Box_Cursor (2000); " Set_Cursor (Cur_Invisible); $Check_Result ([Draw_OK]); $Set_Cursor (Cur_Small); $Check_Result ([Draw_OK]); $Move_Cursor (Succ (X_Max_2), Succ (Y_Max_2)); $Check_Result ([Draw_OK]); $Set_Cursor (Cur_Visible); $Check_Result ([Draw_OK, Draw_Clipped]); $Continue; $Set_Cursor (Cur_Disable); $Check_Result ([Draw_OK]); "End {of Test_Cursor};   " "Procedure Test_Line; "Var I : Integer; " X, &Y : Point_Array; "Begin $With Core^ Do &Begin (Line_InPat_Type;  Planes, $X_Max_2, $Y_Max_2, $Reg_X, $Reg_Y, $Reg_X_Size, $Reg_Y_Size : Integer;   "Function Read_Key (Allowed : Char_Set) : Char; "Var Ch : Char; &Hit_Digit : Boolean; &Move_Mult : Integer; &W : Win_Rec; "Begin $Move_Mult := 1; $Hit_Digit := False; $Repeat &Read (Keyboard, Ch); $ If Eoln (Keyboard) Then (Ch := Chr (CR); $ W := Core^.Window_List^; &With Core^.Window_List^ Do (Case Ord (Ch) Of *Down_Key : Win_Y_Org := Win_Y_Org + Move_Mult; K     dex := 1; (Set_Line_Style (On, On, Off, On, On, Off, On, On); (Check_Result ([Draw_OK]); (Overlay_Mode := Xor; (For I := Y_Min To Y_Max Div 4 Do *Begin ,Move_Abs (I * 2, I * 2); ,Check_Result ([Draw_OK]); ,Line_Abs (I * 2, Y_Max - I * 2); ,Check_Result ([Draw_OK]); ,Line_Abs (X_Max - I * 2, I * 2); ,Check_Result ([Draw_OK]); ,Line_Abs (X_Max - I * 2, Y_Max - I * 2); ,Check_Result ([Draw_OK]); ,Line_Abs (I * 2, I * 2); ,Check_Result ([Draw_OK]); *End {of For}; ( (Continue; ,Check_Result ([Draw_OK]); ,Line_Abs (1, Round (Glob_Y_Max / Glob_X_Max * I)); ,Check_Result ([Draw_OK]); *End {of For};  &End {of With}; "End {of Test_Line};    "Procedure Test_Box; "Var I : Integer; & &Procedure Draw_Boxes (Display : Display_Type;  Core^.Window_List^ Then (Begi(Line_Index := Succ (Line_Index); (Move_Abs (X_Min, Y_Min); (Check_Result ([Draw_OK]); (For I := Y_Min To Y_Max Div 4 Do *Begin ,Line_Rel (0, Y_Max - 4 * I); ,Check_Result ([Draw_OK]); ,Line_Rel (X_Max - 4 * I, 0); ,Check_Result ([Draw_OK]); ,Line_Rel (0, -Y_Max + 4 * I); ,Check_Result ([Draw_OK]); ,Line_Rel (-X_Max + 4 * I, 0); ,Check_Result ([Draw_OK]); ,Move_Rel (2, 2); ,Check_Result ([Draw_OK]); *End {of For}; ( (Continue; (Line_Index := Succ (Line_Index); (Overlay_Mode := Replace; n *Hit_Digit := False; *Set_Window (Core^.Window_List); *If (Core^.Draw_Result <> Draw_OK) And Print_Errors Then ,Writeln (' Draw result on window movement was ', Core^.Draw_Result); *If Core^.Draw_Result >= Draw_Overflow Then ,Core^.Window_List^ := W; (End {of If W}; $Until Ch In Allowed; " Read_Key := Ch; "End {of Read_Key}; " " " "Procedure Check_Result (Expected : Result_Set); "Var Ch : Char; "Begin " If Not (Core^.Draw_Result In Expected) Then &If Print_Errors Then (Begin (For I := Y_Min To Y_Max Div 4 Do *Begin ,X[1] := X_CP; { Penup command } ,Y[1] := Y_CP; ,X[2] := I * 2; { Move_Abs (I * 2, I * 2) } ,Y[2] := I * 2; ,X[3] := I * 2; { Line_Abs (I * 2, Y_Max - I * 2) } ,Y[3] := Y_Max - I * 2; ,X[4] := X_Max - I * 2; { Line_Abs (X_Max - I * 2, I * 2) } ,Y[4] := I * 2; ,X[5] := X_Max - I * 2; { Line_Abs (X_Max - I * 2, } ,Y[5] := Y_Max - I * 2; { Y_Max - I * 2) } *Write ('Unexpected draw result ', Core^.Draw_Result, '; Hit [RETURN]'); *Ch := Read_Key ([Chr (CR)]); (End {of If Check_Result}; " Core^.Draw_Result := 9; {Just to see if it changes} "End {of Check_Result}; " " " "Function Do_Test (S : String) : Boolean; "Var Ch : Char; "Begin $Write ('Test ', S, ' (Y/N/Esc) ? '); $Ch := Read_Key (['y', 'Y', 'n', 'N', Chr (Esc)]); $If Ch = Chr (Esc) Then &Exit (Test_Core); $Do_Test := Ch In ['Y', 'y']; $Writeln (Ch); $If Ch In ['Y', 'y'] Then &Erase; ,X[6] := I * 2; { Line_Abs (I * 2, I * 2) } * Y[6] := I * 2; * PLine_Abs (X, Y, 6); ,Check_Result ([Draw_OK]); *End {of For}; ( (Continue; (Line_Index := Succ (Line_Index); (Overlay_Mode := Xor; (Move_Abs (X_Min, Y_Min); (Check_Result ([Draw_OK]); (For I := Y_Min To Y_Max Div 4 Do *Begin ,X[1] := 0; { Line_Rel (0, Y_Max - 4 * I) } ,Y[1] := Y_Max - 4 * I; ,X[2] := X_Max - 4 * I; { Line_Rel (X_Max - 4 * I, 0) } ,Y[2] := 0; ,X[3] := 0; { L$Erase_Alpha; $Goto_XY (0, 24); "End {of Do_Test}; " " " "Procedure Continue; "Var Ch : Char; "Begin $Write ('Type to continue'); $Ch := Read_Key ([Chr (CR), Chr (Esc)]); $If Ch = Chr (Esc) Then &Exit (Test_Core); $Erase_Alpha; $Goto_XY (0, 24); "End {of Continue}; " " " "Procedure Test_Cursor; " $Procedure Box_Cursor (Size : Integer); $Var I : Integer; $Begin &Size_Cursor (Size); &Check_Result ([Draw_OK, Draw_Clipped]); &For I := 0 To Core^.X_Max Do (Begin ine_Rel (0, -Y_Max + 4 * I) } ,Y[3] := -Y_Max + 4 * I; ,X[4] := -X_Max + 4 * I; { Line_Rel (-X_Max + 4 * I, 0) } ,Y[4] := 0; ,X[5] := 0; { Penup command} ,Y[5] := 0; ,X[6] := 2; { Move_Rel (2, 2) } ,Y[6] := 2; * PLine_Rel (X, Y, 6); ,Check_Result ([Draw_OK]); *End {of For}; (Continue;  (Erase; (Check_Result ([Draw_OK]); (Set_Line_Style (On, On, On, On, On, On, On, On); (Check_Result ([Draw_OK]); (Overlay_Mode := Replace; (Line_Index := 0; *Move_Cursor (I, 0); *Check_Result ([Draw_OK, Draw_Clipped]); (End {of For}; &For I := 0 To Core^.Y_Max Do (Begin *Move_Cursor (Core^.X_Max, I); *Check_Result ([Draw_OK, Draw_Clipped]); (End {of For}; &For I := Core^.X_Max Downto 0 Do (Begin *Move_Cursor (I, Core^.Y_Max); *Check_Result ([Draw_OK, Draw_Clipped]); (End {of For}; &For I := Core^.Y_Max Downto 0 Do (Begin *Move_Cursor (0, I); *Check_Result ([Draw_OK, Draw_Clipped]); (End {of For}; &For I := 0 To Core^.X_Max Do (Begin *Move_C Program Test_Core;  Uses {$U Grafdraw.Code} Graf_Draw;  Const Print_Errors = False; &Esc = 27; { Escape key }  CR = 13; { Return key } &Up_Key = 31; { Up arrow key } &Down_Key = 10; { Down arrow key } &Right_Key = 28; { Right arrow key } &Left_Key = 15; { Left arrow key }  BS_Key = 8; { Backspace key } &Home_Key = 25; { Home key }  Type Result_Set = Set Of Draw_OK..Draw_Max;  Char_Set = Set Of Char;  Var Font_ID : Font_Type; $X_Max_2, ursor (I, Round (Core^.Y_Max / Core^.X_Max * I)); *Check_Result ([Draw_OK, Draw_Clipped]); (End {of For}; &For I := Core^.X_Max Downto 0 Do (Begin *Move_Cursor (Core^.X_Max - I, Round (Core^.Y_Max / Core^.X_Max * I)); *Check_Result ([Draw_OK, Draw_Clipped]); (End {of For}; &Continue; $End {of Box_Cursor}; $ "Begin {of Test_Cursor} $Set_Cursor (Cur_Enable); $Check_Result ([Draw_OK]); $Set_Cursor (Cur_Visible); $Check_Result ([Draw_OK, Draw_Clipped]); $Continue; $Box_Cursor (15); $Y_Max_2 : Integer;   "Procedure Erase; "Begin ${Not implemented} $Core^.Draw_Result := 0; "End {of Erase}; " " " "Procedure Erase_Alpha; "Begin $Page (Output); $Core^.Draw_Result := 0; "End {of Erase_Alpha}; " " " "Function Read_Key (Allowed : Char_Set) : Char; "Var Ch : Char; &Hit_Digit : Boolean; &Move_Mult : Integer; &W : Win_Rec; "Begin $Repeat &Read (Keyboard, Ch); $ If Eoln (Keyboard) Then (Ch := Chr (CR); $Until Ch In Allowed; " Read_Key := Ch; $Box_Cursor (30); $Box_Cursor (2000); " Set_Cursor (Cur_Invisible); $Check_Result ([Draw_OK]); $Set_Cursor (Cur_Small); $Check_Result ([Draw_OK]); $Move_Cursor (Succ (X_Max_2), Succ (Y_Max_2)); $Check_Result ([Draw_OK]); $Set_Cursor (Cur_Visible); $Check_Result ([Draw_OK, Draw_Clipped]); $Continue; $Set_Cursor (Cur_Disable); $Check_Result ([Draw_OK]); "End {of Test_Cursor};   " "Procedure Test_Line; "Var I : Integer; " X, &Y : Point_Array; "Begin $With Core^ Do &Begin (Line_In Program Test_Core;  Uses {$U Grafdraw.Code} Graf_Draw;  Const Print_Errors = False; &Esc = 27; { Escape key }  CR = 13; { Return key } &Up_Key = 31; { Up arrow key } &Down_Key = 10; { Down arrow key } &Right_Key = 28; { Right arrow key } &Left_Key = 15; { Left arrow key }  BS_Key = 8; { Backspace key } &Home_Key = 25; { Home key }  Type Result_Set = Set Of Draw_OK..Draw_Max;  Char_Set = Set Of Char;  Var Font_ID : Font_Type; $X_Max_2, dex := 1; (Set_Line_Style (On, On, Off, On, On, Off, On, On); (Check_Result ([Draw_OK]); (Overlay_Mode := Xor; (For I := Y_Min To Y_Max Div 4 Do *Begin ,Move_Abs (I * 2, I * 2); ,Check_Result ([Draw_OK]); ,Line_Abs (I * 2, Y_Max - I * 2); ,Check_Result ([Draw_OK]); ,Line_Abs (X_Max - I * 2, I * 2); ,Check_Result ([Draw_OK]); ,Line_Abs (X_Max - I * 2, Y_Max - I * 2); ,Check_Result ([Draw_OK]); ,Line_Abs (I * 2, I * 2); ,Check_Result ([Draw_OK]); *End {of For}; ( (Continue; L     $Y_Max_2 : Integer;   "Procedure Erase; "Begin ${Not implemented} $Core^.Draw_Result := 0; "End {of Erase}; " " " "Procedure Erase_Alpha; "Begin $Page (Output); $Core^.Draw_Result := 0; "End {of Erase_Alpha}; " " " "Function Read_Key (Allowed : Char_Set) : Char; "Var Ch : Char; &Hit_Digit : Boolean; &Move_Mult : Integer; &W : Win_Rec; "Begin $Repeat &Read (Keyboard, Ch); $ If Eoln (Keyboard) Then (Ch := Chr (CR); $Until Ch In Allowed; " Read_Key := Ch; } ,Y[2] := I * 2; ,X[3] := I * 2; { Line_Abs (I * 2, Y_Max - I * 2) } ,Y[3] := Y_Max - I * 2; ,X[4] := X_Max - I * 2; { Line_Abs (X_Max - I * 2, I * 2) } ,Y[4] := I * 2; ,X[5] := X_Max - I * 2; { Line_Abs (X_Max - I * 2, } ,Y[5] := Y_Max - I * 2; { Y_Max - I * 2) } ,X[6] := I * 2; { Line_Abs (I * 2, I * 2) } * Y[6] := I * 2; * PLine_Abs (X, Y, 6); ,Check_Result ([Draw_OK]); *End {of For}; (Continue;  (Erase; (Check_Result ([Draw_OK]); "End {of Read_Key}; " " " "Procedure Check_Result (Expected : Result_Set); "Var Ch : Char; "Begin " If Not (Core^.Draw_Result In Expected) Then &If Print_Errors Then (Begin *Write ('Unexpected draw result ', Core^.Draw_Result, '; Hit [RETURN]'); *Ch := Read_Key ([Chr (CR)]); (End {of If Check_Result}; " Core^.Draw_Result := 9; {Just to see if it changes} "End {of Check_Result}; " " " "Function Do_Test (S : String) : Boolean; "Var Ch : Char; "Begin $Write ('Test ', S, ' (Y/N/Esc) ? '(Set_Line_Style (On, On, On, On, On, On, On, On); (Check_Result ([Draw_OK]); (Overlay_Mode := Replace; (Line_Index := 0; (For I := -1 To Succ (X_Max) Do *Begin ,Line_Index := Succ (Line_Index) Mod 8; ,Move_Abs (X_Max_2, Y_Max_2); ,Check_Result ([Draw_OK]); ,Line_Abs (Round (Glob_X_Max / Glob_Y_Max * I), Succ (Y_Max)); ,Check_Result ([Draw_Clipped]); ,Move_Abs (X_Max_2, Y_Max_2); ,Check_Result ([Draw_OK]); ,Line_Abs (Round (Glob_X_Max / Glob_Y_Max * I), -1); ,Check_Result ([Draw_Clipped]); *E); $Ch := Read_Key (['y', 'Y', 'n', 'N', Chr (Esc)]); $If Ch = Chr (Esc) Then &Exit (Test_Core); $Do_Test := Ch In ['Y', 'y']; $Writeln (Ch); $If Ch In ['Y', 'y'] Then &Erase; $Erase_Alpha; $Goto_XY (0, 24); "End {of Do_Test}; " " " "Procedure Continue; "Var Ch : Char; "Begin $Write ('Type to continue'); $Ch := Read_Key ([Chr (CR), Chr (Esc)]); $If Ch = Chr (Esc) Then &Exit (Test_Core); $Erase_Alpha; $Goto_XY (0, 24); "End {of Continue}; " " " "Procedure Test_Cursor; " nd {of For}; (For I := -1 To Succ (Y_Max) Do *Begin ,Line_Index := Succ (Line_Index) Mod 8; ,Move_Abs (X_Max_2, Y_Max_2); ,Check_Result ([Draw_OK]); ,Line_Abs (Succ (X_Max), Round (Glob_Y_Max / Glob_X_Max * I)); ,Check_Result ([Draw_Clipped]); ,Move_Abs (X_Max_2, Y_Max_2); ,Check_Result ([Draw_OK]); ,Line_Abs (-1, Round (Glob_Y_Max / Glob_X_Max * I)); ,Check_Result ([Draw_Clipped]); *End {of For}; Continue;  (Overlay_Mode := Xor; (Line_Index := 0; (For I := 1 To Pred (X_Max) Do $Procedure Box_Cursor (Size : Integer); $Var I : Integer; $Begin &Size_Cursor (Size); &Check_Result ([Draw_OK, Draw_Clipped]); &For I := 0 To Core^.X_Max Do (Begin *Move_Cursor (I, 0); *Check_Result ([Draw_OK, Draw_Clipped]); (End {of For}; &For I := 0 To Core^.Y_Max Do (Begin *Move_Cursor (Core^.X_Max, I); *Check_Result ([Draw_OK, Draw_Clipped]); (End {of For}; &For I := Core^.X_Max Downto 0 Do (Begin *Move_Cursor (I, Core^.Y_Max); *Check_Result ([Draw_OK, Draw_Clipped]); (End {of For};*Begin ,Line_Index := Succ (Line_Index) Mod 8; ,Move_Abs (X_Max_2, Y_Max_2); ,Check_Result ([Draw_OK]); ,Line_Abs (Round (Glob_X_Max / Glob_Y_Max * I), Pred (Y_Max)); ,Check_Result ([Draw_OK]); ,Move_Abs (X_Max_2, Y_Max_2); ,Check_Result ([Draw_OK]); ,Line_Abs (Round (Glob_X_Max / Glob_Y_Max * I), 1); ,Check_Result ([Draw_OK]); *End {of For}; (For I := 1 To Pred (Y_Max) Do *Begin ,Line_Index := Succ (Line_Index) Mod 8; ,Move_Abs (X_Max_2, Y_Max_2); ,Check_Result ([Draw_OK]); ,Line_Abs (Pred &For I := Core^.Y_Max Downto 0 Do (Begin *Move_Cursor (0, I); *Check_Result ([Draw_OK, Draw_Clipped]); (End {of For}; &For I := 0 To Core^.X_Max Do (Begin *Move_Cursor (I, Round (Core^.Y_Max / Core^.X_Max * I)); *Check_Result ([Draw_OK, Draw_Clipped]); (End {of For}; &For I := Core^.X_Max Downto 0 Do (Begin *Move_Cursor (Core^.X_Max - I, Round (Core^.Y_Max / Core^.X_Max * I)); *Check_Result ([Draw_OK, Draw_Clipped]); (End {of For}; &Continue; $End {of Box_Cursor}; $  (X_Max), Round (Glob_Y_Max / Glob_X_Max * I)); ,Check_Result ([Draw_OK]); ,Move_Abs (X_Max_2, Y_Max_2); ,Check_Result ([Draw_OK]); ,Line_Abs (1, Round (Glob_Y_Max / Glob_X_Max * I)); ,Check_Result ([Draw_OK]); *End {of For};  &End {of With}; "End {of Test_Line};    "Procedure Test_Box; "Var I : Integer; "Begin {of Test_Box} $With Core^ Do $ Begin (Line_Index := 1; (Set_Line_Style (On, On, Off, On, On, Off, On, On); (Check_Result ([Draw_OK]); (Overlay_Mode := Xor; "Begin {of Test_Cursor} $Set_Cursor (Cur_Enable); $Check_Result ([Draw_OK]); $Set_Cursor (Cur_Visible); $Check_Result ([Draw_OK, Draw_Clipped]); $Continue; $Box_Cursor (15); $Box_Cursor (30); $Box_Cursor (2000); " Set_Cursor (Cur_Invisible); $Check_Result ([Draw_OK]); $Set_Cursor (Cur_Small); $Check_Result ([Draw_OK]); $Move_Cursor (Succ (X_Max_2), Succ (Y_Max_2)); $Check_Result ([Draw_OK]); $Set_Cursor (Cur_Visible); $Check_Result ([Draw_OK, Draw_Clipped]); $Continue; $Set_Cursor (Cur_D(For I := Y_Min To Y_Max Div 4 Do *Begin ,Move_Abs (I * 2, I * 2); ,Check_Result ([Draw_OK]); ,Box_Abs (X_Max - I * 2, Y_Max - I * 2); ,Check_Result ([Draw_OK]); ,Line_Index := Succ (Line_Index) Mod 8; *End {of For}; $End {of With}; & "End {of Test_Box}; "  "Procedure Test_Circle; $ $Procedure Do_Circles (Disp : Display_Type; Int : Int_Type); $Var I : Integer; * &Procedure Clip_Circle (X, Y, R : Integer); &Begin (Move_Abs (X, Y); (Check_Result ([Draw_OK]); (Circle_Rel (R); (Check_Reisable); $Check_Result ([Draw_OK]); "End {of Test_Cursor};   " "Procedure Test_Line; "Var I : Integer; " X, &Y : Point_Array; "Begin $With Core^ Do &Begin (Line_Index := 1; (Set_Line_Style (On, On, Off, On, On, Off, On, On); (Check_Result ([Draw_OK]); (Overlay_Mode := Xor; (For I := Y_Min To Y_Max Div 4 Do *Begin ,Move_Abs (I * 2, I * 2); ,Check_Result ([Draw_OK]); ,Line_Abs (I * 2, Y_Max - I * 2); ,Check_Result ([Draw_OK]); ,Line_Abs (X_Max - I * 2, I * 2); sult ([Draw_Clipped]); &End {of Clip_Circle}; ( $Begin {of Do_Circles} &With Core^ Do (Begin *Display_Mode := Disp; *Polygon_Interior := Int; *Polygon_Edge := Solid_Line; *Line_Index := 1; *Fill_Index := 1; *Move_Abs (X_Max_2, Y_Max_2); *Check_Result ([Draw_OK]); *Overlay_Mode := Xor; * *Line_Index := 1; *For I := 0 To Y_Max Div 32 Do ,Begin .Circle_Rel (I * 16); .Check_Result ([Draw_OK]); .Line_Index := Succ (Line_Index) Mod 8; ,End {of For};  *Continue; *Line_Index := 1; ,Check_Result ([Draw_OK]); ,Line_Abs (X_Max - I * 2, Y_Max - I * 2); ,Check_Result ([Draw_OK]); ,Line_Abs (I * 2, I * 2); ,Check_Result ([Draw_OK]); *End {of For}; ( (Continue; (Line_Index := Succ (Line_Index); (Move_Abs (X_Min, Y_Min); (Check_Result ([Draw_OK]); (Continue; (Line_Index := Succ (Line_Index); (Overlay_Mode := Replace; (For I := Y_Min To Y_Max Div 4 Do *Begin ,X[1] := X_CP; { Penup command } ,Y[1] := Y_CP; ,X[2] := I * 2; { Move_Abs (I * 2, I * 2) L     *Overlay_Mode := Replace; *For I := 0 To Y_Max Div 32 Do ,Begin .Circle_Rel (I * 16); .Check_Result ([Draw_OK]); .Line_Index := Succ (Line_Index) Mod 8; ,End {of For}; $ *Continue; *Erase; *Check_Result ([Draw_OK]); *Line_Index := Succ (Fill_Index) Mod 8; *Fill_Index := Succ (Line_Index) Mod 8; *Clip_Circle (Y_Max Div 20, Y_Max Div 20, Y_Max Div 10); *Clip_Circle (Y_Max Div 20, Y_Max - Y_Max Div 20, Y_Max Div 10); *Clip_Circle (X_Max - Y_Max Div 20, Y_Max - Y_Max Div 20, 7Y_Max Div 10); *$Drive := Get_Number (5, 'Format which drive (0,4,5,9 or 10) ? ', 0, 10); $If Drive In [4,5,9,10] Then &If Get_Format (Drive, Format) Then (Begin *Ch := Get_Char (6, 'Make Track 0 bootable (Y or N) ? ', ['Y', 'N']); *If Ch <> Chr (Esc) Then ,Begin * Bootable := (Ch = 'Y'); .Ch := Get_Char (7, 'Format ALL tracks (Y or N) ? ', ['Y', 'N']); .If Ch = 'Y' Then 0Begin 2Start_Track := 0; 2End_Track := 76; 2Get_Params := Get_Char (10, 9'Type to begin, to abort', [' ']) = ' '; Clip_Circle (X_Max - Y_Max Div 20, Y_Max Div 20, Y_Max Div 10); ( *Continue; *Erase; *Check_Result ([Draw_OK]); *Clip_Circle (Y_Max Div 20 + 3, Y_Max Div 20 + 3, Y_Max Div 10); *Clip_Circle (Y_Max Div 20 + 3, Y_Max - Y_Max Div 20 + 3, 7Y_Max Div 10); *Clip_Circle (X_Max - Y_Max Div 20 + 3, Y_Max - Y_Max Div 20 + 3, 7Y_Max Div 10); *Clip_Circle (X_Max - Y_Max Div 20 + 3, Y_Max Div 20 + 3, 7Y_Max Div 10); ( *Continue; *Erase; *Check_Result ([Draw_OK]); 0End {of If 'Y'} .Else If Ch = 'N' Then 0Begin 2Start_Track := Get_Number (8, 'Starting track ? ', 0, 76); 2End_Track := Get_Number (9, 'Ending track ? ', KStart_Track, 76); 2Get_Params := Get_Char (10, 9'Type to begin, to abort', [' ']) = ' '; 0End {of If 'N'}; ( End {of If Chr (Esc)}; (End {of If Get_Format}; "End {of Get_Params}; ( $ $ "Procedure Format_Track (Drive, Track : Integer; :Format : Format_Record; :Bootable : Boolean); "Var Side : Integer; "Begin  {$B Debu*Clip_Circle (Y_Max Div 20 - 3, Y_Max Div 20 - 3, Y_Max Div 10); *Clip_Circle (Y_Max Div 20 - 3, Y_Max - Y_Max Div 20 - 3, 7Y_Max Div 10); *Clip_Circle (X_Max - Y_Max Div 20 - 3, Y_Max - Y_Max Div 20 - 3, 7Y_Max Div 10); *Clip_Circle (X_Max - Y_Max Div 20 - 3, Y_Max Div 20 - 3, 7Y_Max Div 10); ( *Continue; *Erase; *Check_Result ([Draw_OK]); *Clip_Circle (0, 0, Succ (X_Max)); *Continue; *Erase; *Check_Result ([Draw_OK]); *Clip_Circle (0, Y_Max, Succ (X_Max)); *Continue; *Erase; *Check_Rg+} $Writeln ('Into Format_Track');  {$E Debug+} $For Side := 0 To Pred (Format.Sides_Cylinder) Do &Begin (Check_Key;  {$B Debug-} (Goto_XY (0, 13);  {$E Debug-} (Write ('Formatting track ', Track); (If Format.Sides_Cylinder <> 1 Then *Write (', side ', Side); (If Not NEC_Format_Track (Drive, Track, Side, Format, Bootable) Then *Error (15, 'formatting', Track, Side);  End {of For};  {$B Debug+} $Writeln ('Out of Format_Track');  {$E Debug+} "End {of Format_Track};     {$D Debug- Enable debugging information output}  Program Formatter;   Uses {$U Bios:NEC.DCB.Code} NEC_DCB, %{$U NEC.Floppy.Code} NEC_Floppy_Access; #  Const Esc = 27; { Escape }   Type Char_Set = Set Of Char;   Var Errors, $Drive, $Start_Track, $End_Track, $Track : Integer; " Bootable : Boolean; $Format : Format_Record; " "Procedure Check_Key; "Var Ch : Char; &Stat_Rec : Array [0..29] Of Integer; "Begin " Unitstatu"Procedure Verify_Track (Drive, Track : Integer; :Format : Format_Record; :Bootable : Boolean); "Var Side : Integer; "Begin  {$B Debug+} $Writeln ('Into Verify_Track');  {$E Debug+} $For Side := 0 To Pred (Format.Sides_Cylinder) Do &Begin (Check_Key;  {$B Debug-} (Goto_XY (0, 14);  {$E Debug-} (Write ('Verifying track ', Track); (If Format.Sides_Cylinder <> 1 Then *Write (', side ', Side); (If Not NEC_Verify_Track (Drive, Track, Side, Format, Bootable) Then *Error (16, 'verifying', Track,s (2, Stat_Rec, 1); $If Stat_Rec[0] <> 0 Then &Begin & Read (Keyboard, Ch); (If Ch = Chr (Esc) Then *Begin ,Goto_XY (0, 20); ,Write ('Format aborted'); ,Exit (Formatter); *End {of If Ch}; &End {of If Stat_Rec}; "End {of Check_Key}; " " " "Procedure Error (Line : Integer; Operation : String; Track, Side : Integer); "Begin  {$B Debug-} $Goto_XY (0, Line);  {$E Debug-} $Write ('Error ', Operation, ' track ', Track); $If Format.Sides_Cylinder <> 1 Then &Write (', side ', Side);  s/ [IV.1 B4h*@@  e 1bFI( e4]q4(ols, X(amine, Z(ero, O(n/off-line, F(li@@ 458fz3$ # 2/z3$ K 29/ <q:DE3 [IV.1 B4h].6] b1\/ S.BACKM.LST.TEXTT@= +@@  @ :READ.ME.BACK 1H @@  1^BjC NEC_SYS.BACKCKLS@@ =  1BF" Errors := Succ (Errors); "End {of Error}; " " " "Function Get_Char (Line : Integer; 5Prompt : String; 5Allowed : Char_Set) : Char; "Var Ch : Char; "Begin $Goto_XY (0, Line); $Write (Prompt, ' ':5); $Goto_XY (Length (Prompt), Line); $Repeat &Read (Keyboard, Ch); &If Ch In ['a'..'z'] Then (Ch := Chr (Ord (Ch) - Ord('a') + Ord('A')); $Until Ch In Allowed + [Chr (Esc)]; $If Ch < ' ' Then &Writeln $Else &Writeln (Ch); $Get_Char := Ch; "End {of Get_Char}; $ $ $ "Function Get_Par(Verify_Track (Drive, Track, Format, Bootable);  {$B Debug-} &Goto_XY (0, 20);  {$E Debug-} &If Errors = 0 Then (Write ('Format Successful') &Else (Write (Errors, ' errors during formatting'); $End {of If} "Else $Write ('Format aborted');  End {of Formatter}. ams (Var Drive, ;Start_Track, ;End_Track : Integer; 7Var Format : Format_Record; 7Var Bootable : Boolean) : Boolean; "Var Ch : Char; ! $Function Get_Number (Line : Integer; 9Prompt : String; 9Lowest, 9Highest : Integer) : Integer; $Var I : Integer; $Begin $ Repeat (Goto_XY (0, Line); $ Write (Prompt);  {$I-} Read (I);  {$I^} Until (IO_Result = 0) And (I In [Lowest..Highest]); $ Get_Number := I; $End {of Get_Number}; " " " $Function Get_Format (Var Drive : Integer; 9Var Format : Format_Record) : Boolean; $Var Drv : DCB_Drive; (Cur_Type : DCB_Types; (DCB : DCB_Record; $Begin &Get_Format := False; &Case Drive Of )4 : Drv := DCB_D_0; )5 : Drv := DCB_D_1; )9 : Drv := DCB_D_2; (10 : Drv := DCB_D_3; &End {of Case}; &If DCB_Get_Drive (Drv, Cur_Type) Then (If DCB_Get_Record (Cur_Type, DCB) Then *Begin ,NEC_DCB_Convert (DCB, Format); ,Drive := Ord(Drv); ,Get_Format := True; *End; $End {of Get_Format}; $ $ $ "Begin {of Get_Params} $Get_Params := False;