' JJJJ ?\>' L-=l>  ԠéԠˠ#~?  xDIR ERA TYPESAVEREN USER!yO#< Ty#O 3ǯ21y_͸2y2ͽ:ķ˜1͘A͌>>͌92^ :˷¥.!_~#fow]ɭʎʥ!v"!çREAD ERRORçNO FILE^:˷#͘*~ "Ʒ"͌#>?͌͘ =_.:;<> Oƅo$>!Y2*O"ʉ@G:ʐ:wÖx2p0ʹ#*©6?ëw˜0ï#6 ¹.0#*6?w0#6 #6"  Ň!˶2:2a{_:˷ʖ:˷>Ľʖ:=2–!B!6#5ʖ:˷Ľ!ͬʧ )!F#xʺ~0wëw!" !~6ͽ:ý(!\X COPYRIGHT (C) 1979, DIGITAL RESEARCH _͌> ͒> Ò> Ò͘~#͌ì _2<į2: ::>:(y2E!|"*wɍ`JX^>EE??++ ԩ  [\ ĭ ?  JL ``LLL $Lq<`ΧԠĠڸčԠԠ͠Ԡ؍2>o:= gw8H<8H=` }Hx / hJ Leh<> > @A @A>i =<>+ LeÍڍh@(L>*// -П( ( $8` %  ZNx`. }x$50x.$50xL JJJJ`Hjf5 }h $50x`  Ȍ` Hx  -(hL(h8֩`Lx (`H݌hHhHh݌>?F؅G(jf5(  ;  R( FGj 0x j $xxH` ( Rh RL.xxH h  !"#$%&'()*+,-./0123456789:;<=>?x&& 8 , P ; ' / \ ; & ; x)*++`FGG8`0($ p,&" cI꽌ɪVɭ&Y & &Y &   꽌ɪ\8`&&꽌ɪɖ'*&%&,E'зЮ꽌ɪФ`V0 ^ *^ *>`+*xS&x'8*3IxiU ,>J>V J>V `8'x0| &HhHh V Y V '&Y V x ꪽV ' `Hh` ! ~ 3#0 Wx x ƀ Ƃ G ~ # 3x~#B!Y~ɯ2:˷=!˾ý:˷=!˾:ý^T!~  6?#ˆ:`O> K{͘A͒>:͒͢>:͒͢xK > K > ͒x  ͢ØÆ^ BRͧ9!5‚#~Y‚#"T<ÆALL (Y/N)?^ Tʧ͘!6!~ڇ ɯw4!Y~ʆ͌†t=ʆf ^ T ɯ2o&)|+!<ͧЯ2*C!!~~#~O~G#n,-.‹! w! yG!x͢.:E<ʄ! q!pQ:E<. ʄ$.:E<ʄi6}2ExN! ~态O>G~G!~G} *C!r#r#r ^ͥ_y#x#{2>2T*CGͻ:ẅ́n>2;O ^DM;}H>"*C :ٷ:ddslO s#r:EϷ͊:==»y==»*Ww#*"͸*:G#š"͸:!پw4 iw:Z!E~=26 w ~>2!E5T*C!"C"C!w# F! w͌xѯ2͢*C ~<wʃG:٠!٦ʎì 4~ʶ¬:<ʶ$ʶïZͻЯx>2>2ͻ:!پZկ2:EϷẅ́͊Ͳ> *C ^OT *C~wD -'  -@ͦ~^*C Ox! N!Fwyxʋ>ڋ>*Cw~#+w#w+ɯ2E22i^ *C :ٷ~w~͔͔# # ::/GyO>2!q*C"͡ʔ*JҔ^:Oyʃ?|x | sӖ-|N-# S:2E!~Яw>T D^6k-äPYy 5*{zBK5:AϾ#~$=2Ek͌ ):BO!yoxg*:BO}!N#F "*#*s#r^ ~!J! J*:مo$*C~i6iw**{#zr+s{ozg**͕** Ѿ,w͜͸Ͳ!!N#F$**O!~#O: \зSЀ*C :ٷqn& ^#V>O^"*}:*)=":O:١o"*C *C!ͮ~2~2ͦ:٦2ͮ:ЯO:فw:w |g}o*ٯ# 2E>! ^#V w#P:BO|^#V#"##"##"##"!O*!O*|!6ʝ6>گ*w#w*w#w'û*ڷ! J*""!N#F*^#V*~#foyx*{_zW+*x: 2 p&x~+é7ͯ2 H! >w_: ! Ͼ5ͤNkͱ¦ͱxʊ#Nx: Ϸ! ϖ2 ͤ! 5™#wO~x½p Hy<< ڷʑ :!qMD# O͐  :ϷE B 2>: Ϸb# : Ϸy! 4 5~yy5 6yҐ^H@Oy H H: –ͬ  #H: ! Ͼ Hù H H $O͐: 2 *CN# ʽ̙̥̫̱"C{2!"E9"1Aϯ22!ty)K!G_^#V*Cΐ~؃E؜إث ,&-AGMSϛ!!ô!ô!Bdos Err On : $Bad Sector$Select$File R/O$:BA2!~6=qf^!~2>`~2˯2\!!B!~> >#0~O#Cx2͘1)ͽÂf zͧÆBAD LOADCOMf^: !˶ Â$$$ SUBÆNO SPACE^ :Ty!B*O=?_s#"^sG!~Yʸpsp2mÆÆf ͧÆFILE EXISTS _: É: :˷ʉ=2)ͽÉ T!@k!}|qs+p+q-*C ͥ!!q#p#w*:BOYG}*MD "ã:!BϾw!>2*C~=2u:B2~2wE:A*C϶w>"!""ٯ2B!"!rQQQâ~?ͦ~?rQ*"CQ-Q͜QüQrQ$Q*):B"*)*)Q;*"E:;:A2AQÓQÜQ*C}/_|/*٤W}_*"}o|g":ٷʑ*C6:ٷʑw:2E**E}DQ>2C0T"I !>"H>2J: !͢:d:d!s~B#1!P!J߇o~,foɷp:BB Apple ][ CP/M 56K Ver. 2.20 (C) 1980 Microsoft >>EE??++B#1!P!J߇o~,foɷp:B:޷ Apple ]~6(*} *:޽ y(3:޷s:2G<2x/a2:oa":޷zޯ2{![:޷ <2:>sɯ2>!>2!;:*     1>2>2*"?ۯ2:08 !"Y"BT"->2:8Y"/:8Y"F~!xq!;`~0,~!M;!x~1.~8[q>:޷ 2y2!!{o!:=8 ~y!3w.y2Cɯ2>!w#w#wOa."y .:g"*"!~((5:# :*޽ :޼ $| 8g,"ޯ2!"_!ޅoN!޷((+! ~O#O:x >2ޯ2:޷*(*D*:wk*(:$_"~28 ?@wx( !;!܅ony 2$8!2E!y>>?22!ɯog"$2E!.B...X&*}(8.|8&"$պ`~(,qy2E[22G: 2:O*:)!O#~#'۹~y/:02?"2O: K*:*(0**:8'(*:08* *: 8(*7!w˹#~(=5:!( +_ywɷ+ͱ*:]lc_O{- OMG!~_ :( 6>83! ~èPCfuÇKmVÉÎÓãݯ`iޓښ:ޓڦJޓڲZޓھjޓzޓߊ / !~ `66= !; !{g1:Q!;͢گ22>2!"2!"͎>2PRUN COMd PASCAL PCOPASCAL PCO !"#$%&'()*+,-.PRUN20 COMd/0123456789:;PASLIB PCOK<=>?@ABCDEPASERRS TXT(FGHIJTESTP PASKLINSTALLPSUBM2_!^N:vý}ìì _ 2fCVK ) :fo&EoýCVCK^#Vx8GjS]  (:!Z ~_#~WýCVy!Z N#Fڧo`ALbS\®ùʹo#!- y/w#x/wý = ìì{ozgì}o|}/o}zý6 &  : )     / &C " G @ 7 . CCCCCCA|yC! CCP6 CCCCCCCCCC@}vp + ,/~ͧ #  :j>2 ///`* " /// o g o gì _ì!ì _րW _*R *R*R*T͗ì*T͗^#Vì*T͗s#rì *^#V= ͗ ìDATTIM COM NOCONSTRL ASM]PQRSTUVWXYZ[CONSTRLZZ805\]^_`abCONTEST PAS=cdefghijCHASE PAS)klmnopCONTEST PCOqrsCHASE PCOtu?? @o& 0!P_^#VKV}~B8b8 _*T @_*R^#Vb_!!!)RQ_ D9e3CCC X #,CC6E͗ì͗CV`i{=a ) ý͗CV{OzG+ý `iG^#V#MDì^#V#~#foìCVq#p#s#rý ʬo&)+V+^= ì ʞo&)9^#Vs#r#= ì^ìsì͗CVKB+ýì O>Gì᯲ìè 2vCV|}.Copyright SORCIM, 1980.03.20 Sorcim proprietary product SerialZ# Z 02.xFilenameEXTÛ ç ð(>P?PT  * >}>?}zz_z>}>=}z}{}"-o&"*V"!9":!w#<#ì*ì...CV..!""."CV"!/>.!'"P.. . . CV*~. '#KV>  "CV"!/>.."."".PCOEììCVͤ ýCVͤ  CVa ý7Rì 8 Ҭ]ڬ>!: ( 0 ! E>KV"!hß"Z2o&))~W-^s,r#^,V"+V+}_|W~KW(/K|怺ʬKz!+ K "f *fý!"f"h!9+x> Q wxGyOzW{_#҆ :i2i#:h2h#:g2g#:f2f+++~w#~w#~w#~w++++5 *f}lg*h}lgý*h*f "f"h*l*j "j"lɯ_>W>o>g"xᯕo>g>o>g "xRý {#  {+  x: {#  {+   "#$&&&&AND 'ARRAY ,BEGIN CASE CONST DIV 'DO DOWNTO  ELSE END EXTERNAL"FOR FILE .FORWARD "FUNCTION GOTO KB9+9+#ýMDR"f!99y*:f/O:g/G>kb ýCV])9N#F#! >8.!vqxgFOx>0y_!~h&##)y(#9(>o&ý} | } |  0 ì8 O>Gì*O ^#V7RMDìi`N#F#^#V#"V"z}|ýx8 (!ìN ( !ýN (!ýN 8 N 8 N 8N 8 CV_!^ ^#VSn  | }!^z {^2_N2vG8Ay(#:v͗CVKB ͗CV)MD (+{_}zzɯO>G CV_! ^#Vz  x A |ʼzFҼW>O>G| 㴵 *zï *z 7CVEIF IN )LABEL MOD 'NOT &OF OR (OTHERWISPACKED +PROCEDURPROGRAM !RECORD -REPEAT SET *SEGMENT !THEN TO  TYPE UNTIL VAR WHILE WITH !n> #w"h"f^#V*hz"dýB#)*VN#F+BMDì*+V+^" "T*R^#V ( O*R #*" "R"*y x( *~t"ìo&)) F-N q,py*P$s*""Z CV/<_*^#V7R"~C^#V#N#F8o>g9͇ o>g9͇*##y*V*P 9 ` l  & < |0)D_>W>o>g0x0K 0 ýR0B͋ *h*f͋ *l*j9 !'*PҬ Ҭ] *j*hڽʽ ?!!x8C"f"h"j *h*fz!"s+r+wKZW!!>ðx}}:"jyKxyxʽ*jyý>!/ͭ>!:ͭýC*Ps#rì^#V"Pì*Ps#r "P!9͇ýxýͧs xʽ]Tý}|8ͧý ͧ+ý0&z #:v *Z>O*\ýͳ({/ #z/ #:v ͳ(~/ #~/ #:v(CVx!8X{z8M!vqxgOFszg_~!\^#V( = x!z G{_#zWx:v2!"$_~(q0mOx#1>!x͒05: T~ʴ"# |*#"O͓!"!!>80Oy *~*w*T] FO>8/Gwq#6o###'zW+yO+~7G,_~W+~O+~7GҰ$g_|W|O|Gð͆GN #x=qtƁOGOG~#V#^_P|gxҤzWyOxG- ||}l&.Õ_͆OG~ G#yƁO >%&s!%&k!>%&{!>2E&#~ !*!""N*~ɯ2>2i`""""!&"*'Ԍ&:̈́'*0!*͚!(  x2̈́'"8 *"!"*!+Q&w**͢!( (x2̈́'"'>? ~# ߷G>  x!8|(;(=(-(:(@F #F *F ?K 2Y aR { w*%.*/ͭ>*:h x: Ƞ2 Ʉ͛ ç OYy(OOyڲ _   ɯ ^{# V!6]T ))+F+N+V+^>2X Hz@CPt$> nk(:Chԥ5!c_ʹ1^ l $-xX(y)hSYR%oNˑ?;! I|oŰE7v@pvCV2X:Xʽ?aý"f"ha*h*fýͳ>>2ýC&y( !&$*.!0!ý>>2!$"""""C&~ (G:(~ 9#~2###^$*|(W!~ w** Q&w*ýx2.Ç**'$:&Ì&!"2*͍'**{(g:(NX%V:%>2!9E|½!w"ý!#9 *#y*#y!# ͋!<2\!#]K!\{!!w# :@!.+ Pascal ABORT. PC= FFFFh SP= FFFFh $$$ SUB*}ʬÇ*ì{2#w#wì}2#{ì2y(#02!q"8 &o!":~#V#^_~G#N#V8x8 y8 }?0 }o|g{_7}o0!9~ +~r#wS(@){_{_Zx8zG{֐ړÌ>2XҚ>_8 O>G{} !"*"|))|?bk ##6++Fz'Q&E'~w!k!w!! %:q'bk 6z'>27%! {~w*8*#~2%#~2%π@ `-TIہI1r ^[((*'*'!V!#6^w#VwzW{_! 4!~oO _!!!! Y!!!͝! !ͥ!  GCONSOLE#CON#CRT>READ͔͝Nͻͫýq"ZzWx怺 (YP{ z { z*Z!9]T>͆>ã͆>Gҭ/ZQHo8- $%~%%͛ wN%͛%w|%$%͎ .%> %:ʝ> 6#{ Q&w#"$: @:y2 = ͟%#„%>w  :7>>( YO%Oʾ%͎ î%_>è%*b|~#"b!"b%& %!*, s#r> 2%& !{x7# + +~ x xx~aC{C# 3~#K7#Tzq#aO:=@I |~}͇Ɛ'@'ɯ2Y #~:+:¬~@##´:<~>:7.~.#y !  :Y 7x7~ #. * ,GOWo,-(|<怨BW]"Z}o:X2Xl&9*Zo$MDy_xW{z/W{/_xzW{_M͈͖͈͖͈͖͈͖}0>02>0]T< 8=kbG:£> x>20~0~0#yíGN#xy_ѯ #7# y(yz͝ͳ*'*'q}2a"~"|*'*'͔"":80(h("z"x):(„)͋(Ç)(:ڒ)ͫ:y)ͫ"z"x):ʿ))()͋(:)ͫ{*'*')2*'*'N:= ʁ@fUUX[ZXXUUWWW.UWUUSWWf ʁ@`USWW-D X" ʁ@ʀ,#ʁ@Z[X#!. :ʁ@Q$ʁ@!ʁ@R$?ʁ@ :V2!U g9!9!!9"" "R"T!$$"}2ý!3!Z&*3w:3!3~22 N#F#y2#2:w#:w#q#p#~#~#ίa:<OYPa a**N**͔"":= ****|c,} >2X>v,>2}ց2.+T,*&a*'*'N͔:T,*'*'N*&a*'*'b)͢)D*ͅ*M(B[B `Aff[Bʄ9ʄ9`[ i[]!\ [?dib bLine #Q$ , Error ##`$(` 2`2 =continue, =quit? # ]K͋!<22\!"1}2!~2#<361..U͒!m1<#.]0!1U0\1?0DM#~#fo*b#6+"b!"b 2?0!EX">T23͒!m1\#!PC">O23! !0\#3!1\#**0!61\#"%"$!)3ͪ!?0!1\#?? No M""ͻ'""͔****͝"z"xͳq"a͝**)N:y*"z"xͻ{ڞ*""*'"*'"!")-a*KBa a**N**͔""*- :x+*'*7+͸,͌,: ʬ--ýCV| !- a*-N#)- -Z*n&-u*n&-l*#n&-u- S#12 P#123 Lev 12 12345 - line executed. Entering Proc name - 12345678 :.!.@-!/-:2!--!'."Pa a a 2v1  *`ʀbaЍʀbЃaЄ  8`N`NMZP`ʀʀ :VVʀʀʁ@(ʁ@ʀO]!ʁ@V$ʁ@U]ʁ@ ʁ@]#ʁ@Uachine code file found ?? Machine file ill-formed Machine file load address too large *bK6,#"b6 ?? File name error! <@T=0v0*@Tv03@M=}0Z "!@_!`_!\ 2XV+}_+g+}ց2_}o""*'"*'">2****͔'"":= :o:x+*'*'͝""*'"*'">2o&w PASCALM INIT DECLARE gNBODYSEG 5Z1 GETPARM + 04/01/8016:30Sorcim PASCAL/M Compiler./)//  |$/}. 1/ w# ?? Pascal Library not found. ?? Pcode file not found. ?? Pascal Library ill-formed. ?? Pcode file ill-formed. PASCAL/M version NOT compatible with OS. Sorcim PASCAL/M ver vv.llPASLIB PCO!/)BKPpSTEP Oͤ.ʹ. .}|:.s.~ m. m.,m.;m.|ʎ. ʎ.ʎ.ai.{i. w#9.6#!.:.ʈ.~ ʎ.ʎ.#s.6#9.6go~œ.ѯx~ ʯ. ³.#ä.~'.".2.6#2.1~#.<+w#_^#Vѯ716ͼ1!""""U! ʁ@i?]!ʁ@B))i[= [  {  "$&(*,.2468:<O4Gj[?[i[ `bba`i[a`[b:Y$M(i[`i[i[i[b,b` b+[YaY YP])]Pb+$b+(L•ʁ“LZb2Rb+M'H'" f+ fNf iOӀi` \(]`]  \v g jv`jhXfK h``pGfVh ii`pݑ`i&fXh ii`pݰ`iif\#hOK`L\$h OOݑV`-\0e aopa ao oݰ eB ݚ ݝpn o pllll 0ʄ6  dll pd(ldclB$`?cZ` cWʃ4Z ZF` ʃ4Z bb?Z Z?bbʃ4Zi?b?b?Zab`ci? ??i? #JRIR @i[[[\ i[ i[[[??9 Di[ at`/ca`a `` `<daa`/```"HQʁQpb,b/baa %gQ%Dha84a6(a5a7a43`b ]_acegikmonp{}87C\/Y Y Y&%* @ʁHpb ʁH`8b`/ceatb0b9b0WW.b+'CR vl yDB,[a,[Y Y`i[)`}`*[,..29;.IrXN323Y 2Y22Y'3i['22%22 !E4442h OOݰX` j  af v cbdcbdcqbqfefjcrbrsncrbrbc-b-UcsbsctbtdctcvbvcubucwbwdccpbpqqgXfO}6f crbl` pl``de` `( `( ʄ6 [r.* &9:&/Y [i.}i[* [*i[. [Yi[ @[@ @@ [[??F\( i%i:! Wild character= #Y$i]?441a\'`bb  iaba`4a?ia bcq act`csabU``cs`csy 8 \ \"`\6 bbq btbsU bbw`ʀ2 \ʀ\%5NUEYe9$i[[Y-Y+Y-i[[!bcd\#Y#e$a pa ea'ao ~~i[[!be obe4a ݏp ݝ 42Ernh YcY0` Ya Ya YA `i[[`!2Y_ i[[2p x!#  !beY.(i[.$i[[!bdeYa%ʂ`pDIʂ`p`MYʂ%MDID)L^"Bʁ B3&#`{`a`Ba8a.a &a! undefined#uat$G`BP#au' SET_NEXT)SIZEOF *WDECA * WHEXA +GOTOXY +OUTPORT ,INPORT - SIZE - NEXT .PURGE /ASSERT cHaDb   iiiFALSE fcf`faacWa add -dNIL dda add KdMAXINT dabddd adMAXLINT d Xddba8 8` `hB’h %` 0:– iaʄ9qa :Є g '2i`   `i?]!`!`a hZ 'L'(gg PASERRS.txt LENGTH INSERT DELETE COPY POS MOVELEFTMOVERIGH+TIME 2EXIT .SCAN#ID /FIND#SYMREADXY FILLCHARFILEREADFILEWRITdINTEGER d Kda adREAL d Vda adCHAR d Uda adBOOLEAN d Wda adLONG_INTd Xda adSTRING d +da adTEXT d .d$$KF2>>#9RIPGʁHp$e# \  <"A  f Bw b)ʂ%adBII dqdpaʀ:BII ʀCBII ]]BI'AhWRITELN  EOF EOLN -CARD PRED SUCC ODD  ORD  ABS  SQR  TRUNC  NEW  DISPOSE  CHR CONCAT K```V```X```U```W```--```..```U,,```U+ +``P```K` ` `U`P a ǁǁǁM%ʁ@(A&*( ǁ@ǁ ǁsdj48X N(l6n2,PJ @ ^ @ h < |P(dibi `i Z  af Kff `f VffaCONACT  (EXP10 V (PWROFTENV *RANDOM V ` ROUND K !SIN V "COS V #ARCTAN V $LOG V %LN` `PFb=b;a-AAb @@bEʀLP: 9ʀ#err# +DU$BH 1T-^`bd`F  Source file name, options: #ʁʁ2ʁ?F Fʁʂ , aac'ocaccacacccdcdc'ac ccdcdcdccecc1cccccdac'cceccccccccd6f"7#nn P#nnn procname levN (***** bytes))LlH x ʀ8ʀʀʀ|ʀʀtʀʀʀxʀ(ʄ9 ghʁ@  `EEpDDpEp  PEpʀPAS 4PEpʀ*! Input file not found.# 2Ep PCO .! Input file suffix is .PCO# 2ʀ0EpʀPCO ʀ ʀNULL:PDpʀ bbЌ b,$\` 2)# @``Ќ*``` >ppa`a<bbЋ V &EXP V 'SQRT V  bf -ffMARK  RELEASE  3HALT  IORESULTK MEMAVAILK ~ ""*ʂ%`$$$$ `"E© Suppress Pcode# D- Suppress Line # code# G- Don't allow GOTO#& R- Suppress value range checks#( S Swap mode, for large programs#+ `P4 Pa.a PASCAL/M Command Line contains:#)1) Name of the input file to be compiled;#$2) followed by zero or more Options:# L=file Specify Listing# P=file Specify Pcode# P=0  g3UIIDI$RIGJSKQ*THMGLMM'(I_$`ʁ@ST?i Oan8   / 03.19# ʁ````NN2@@ʀ0bEpʀPRN ʀCʀ 2@@Cr@@M@#Ep]SYM ]ʁ*] 2`w `P=aPPaPR( ```b'b'0bbЌbb2   bh `bbaadZa(,d)ad bddadbbaaaad adadad,a a#ghA R`VWfQB~U^X[DYZCdeF _)%L]ʀ /&:ʀ^  Line. AddrSorcim PASCAL/Mʀʀ)+ʀ:ʀCPageʀJʀ* ʀ(S:a aЋ4aǀǀPaVPa8a.a aЋVaǀǀPa VaPaPVbVV V a-aP)b -- - -PaȀǀ4PǀVǀ.ǀ-ǀP\\(ʀ\\;< <```0`J`P`H` Z``;i Xh (  Nʃhʃ’I0C= ʁ````J =0 0``J`PROGRAM ` ````` M`` ` ` \!i\,ʀʂ%M0 00Gʀ0Pʀ\PʀPʀ0Pʀʁǂ\ʂGpʂGpǂ\PʂGpȂ\GƂ\<ʂGGp ʂGGp Hʁʁǂ]IHǂ]Pʁ GFʀ0F F'! Command Line Error#2Bʀج2 :B$ D  `)"$\#\\ *C CK}\\)]] }C CU}\eeqC Cqqeemre=mrqCKXmrmrmr  SlkllmrCCXKmsCDmt,mueS mvmu Cp Cqb刣 ba`ab` ba`4 ` `cpTacqIbbb8cr#c^^^^ʃcrcqcrcrcr%cBIa IIcbI CW```paaGD<`D/CU(EeeeEE C+ CC}+ v% T&"#C(C hqhrhr ipiqist\" dacaq%CV`CX `:a7Cq!-)"C ( F@dwdd\a j0"#C Cqt\C\7LOCK PURGE `&x1"#C,CqtCrt( CrUt&J2#CICq}%\ %f K)#\ #f\#\ #Kf*/3>412+56}7y(u0q.m8i9e/^FHFHFD, @VC 2XC $UC C Cx T\ LLa:& ;1\7^ bv'bvq bvrUb\"\\c:&C` `q\a!` \ %JC CKt\ C CKt  %` ax `ax JRJ` a-C CKt\ #C CKt ddd dv@ p? ```\e4 eo"e€"e;<=C Cq}fKC!CqCVmfD sCCK~"CaEavab3a b! DEb\@aaw\\a~dd dndd Md d Dd d0dP dd Cr}\#\"CK}\ CK}TK3 #C Cq}TW:4#\ %to"u{u{uwusqsqomkPkiLiwigg\?h ("dpqdpC``;AddpC0CKcc CVbbCXaa hAapWCW` &C CKt`K$ z`V1\#"C CKt' D`X% :`W" 0`U &``# `! tT\ LLc:& R<4 #CCq}CrUJ.-#C Cqt\#C CKt\ #C CKt/C Cp XCXt\ %CCxt  CX}WCCq}D KCfCCVfCX}K'C CK}D U, %K%\%Cx\ C CK}f -` N9`a*a a PaЄa (a a PaЄa h:2\8 `v'`vq `vrU`\"\ \a:"#ECNKC:5 #6"#CCqt CrUt',\! XCXt X&r7 %&8I C0CW&D` EO$aC\ LL\ EEEa19RT[~F\ʀ:ʀ \ʀ\^ d d"'dd kvk dC#ʀ#`  ʀ fʀBIfIf wbTb hvEh,hvqah a hvHahvphahw\JʁHsd ddqʁHrbRb hv h h irhv,geuer edpdedcder kjI hm4ihenrk Ilk Inqnpk ei\  ?>gN`L\ `5 :Oa@ D \(]`] Dj\(e] DdC4i"A"AB )lC`p%`pwb`pccapxa`p6GT99\#\Hʁeqeʁesf#f ipOirpir iq\` Q I`\ \ʀ\z| d d"dJL\  nKgM` LL(* 2LDCWd EI a\ 4 Id cb I\ -d `aIdcb `da MSCaaqaVaX\ \CC kqkr kqXKVNU f+ fNfX \EDCWEC CWmFi0b)h )"$@ \R3 JJ JRJ\] @RgS7@ hffg g jf i`dS\6If Xd d j hi`\6Ia`DPC C&R` ` S\x   kvkkkcP`'`qX``qV`C\)DCCUC Cq] CDCCU C CqdCi*CqdCrdCm G lGmCldgdCdp dqdV dW dX  NYPROKQDT=6  "$&YTHQE@l hNhNIdP \& 99H} IKF2^ʀX*& Q$. g  a\a`Neddnrf nrf dnpbndnfnIcbcb\ LL\I\ʀbi\ LL\ \ hLi&(*,.02468:<>@BDFPRTVXZ\^`ʀ EE\'] EdCMj9 A=VA/ A$AB @5+"gSg Q\ 6B`CyCqnHbH bʁHcCrEʁHccFcG,J ʁHccJJ aJRJ\ LL\6IHb Ja  bC ECqa!a0a hq#aH!3CJJ\#QHʁbqbʁbs`a`cpO crcqa7T pKI\ʀ\i< xi( f ddw  d i<7i< % 3p`3#ijk WX :8``awax ` ap 0H@`\irUirp hwI\ʀ\ LL\  IʁHrbb h  hw,vccvpʁHsdd hr ip iq}hq^II gIʃ j hʁHpgjl \  X\*L\.G h\  hgg hgph ah aap``app'). \#a a   \ LL\\ \ (     % r       \ \ L L\ bcpq+cpVmcpX ddcpKcXJ`\   a kݝ f(gXgggg2aXKaff f  afsf frfrqfrfrݰfr }.fftfvfv - }.ffݰa `a  \ b4b b!bbbba a apb bbb`bbB aaa\ %  % !  \\gpgR RhۄhI`IZP))ʂ%MdDIDʂZD$ikPUU  8\ R  JhVfb$B^jX< ffw gfi\ `).p"    ```\l%  % +  ``  `/` /% v vqI   vl f.fq$fVcf  ^^   \f\ g ii  \ LL\ n nqlgfg nggwi\  gagggݰgݰ` `ʀ \ʀ\H ʁHqH gmmm \4 imm gmhmkmik i " \ghj \\  `sr   a`a`0` aapaaʀ  \ʀ\ʀ a`\ \+ʀ  \, \-H HH ʁHƈV   v9q,Vm  ` n   \      rrv o  a a8!!l""Z##$$$%b%%@&h&&$*H*&n **4+++,,-&.F.-h../H/z///P0p000 1@1Ux   kvkkkcP`'`qX``qV`KfXfqebfd> \    fffaf  a  `qp \ LL\ \     ql # d dcdd5erer ccc gi3O`bvH  b bbb3  bb bv  bvp aA i imvm{ivg+\d  fK4ll P lP g+ gmlml\ g`gp  f ag a3Ix bxbeq`bKbVbX-bQʁHbs`a`pO`qa`cOccbsb`  \ LL\ƌz  \ `cc cc\)] \ `` a?? @o& 0!P_^#VKV}~B8b8 _*T @_*R^#Vb_!!!R\6fz cvd eeeq xd  f{\d \"]T`  eKj h  d  hfd \ \ʀ/u/ \*\* \\( \\P\0   v   q x (  \ý6 &  : )     / &C " G @ 7 . CCCCCCA|yC! CCP6 CCCCCCCCCC@}vp +ad$dd a dff d J PY M`!C_CCʂ%MYYYa dydwcQcvA`\  \ bee e\)]bb c/a)ab avbva/`awaw/aaw\ /u/e>R 2," @ RlN ,\\p \\\PH=\\dd!\e\ʀ \ʀji  oZ`nYk;>d   ` << < >tz&KFF2\\p \\\PH=\\dd!\e\ʀ \ʀC  `` `` `P    \ LL\_\Q   v   %  qy q p J (  J)RQ_ D9e3CCC X #,CC6EgJg !vpgJg cwMd ۉd Y`4P H ZddZʂZP PH/H ʁHfdwadfdcr dfdc\ \1 beeaee ePbbʀ \ LL\aʀa@ae ceJJd ewew ccqeʁHrʁH`\ \.Copyright SORCIM, 1980.03.20 Sorcim proprietary product SerialZ# Z 44642.xFilenameEXTÛ ç ðP>P?T  WQ>}>?}zz_z>}>=}z}{}vLoomm4o*ovqommovpoJJovp mhg afax* `>) DeM CYY\\bJ a J JR#X\ʀʁHpdfNdd  \w\! \v \ \ g gg go jowiihf \ \ `Jhfhowofo"-o&"*V"!9":!w#<#ì*ì...CV..!""."CV"!/>.!'"P.. . . CV*~. '#KV>  "CV"!/>.."."".PCO|ʼzFҼKV"!hß"Z2o&))~W-^s,r#^,V"+V+}_|W~KW(/K|怺ʬKz!+ K "f *fý!"f"h!9+x> Q wxGyOzW{_#҆ :i2i#:h2h#:g2g#:f2f+++~w#~w#~w#~w++++5 *f}lg*h}lgý*h*f "f"h*l*j "j"lɯ_>W>o>g"xᯕo>g>o>g "x ,/~ͧ #  :j>2 ///`* " /// o g o gì _ì!ì _րW _*R *R*R*T͗ì*T͗^#Vì*T͗s#rì *^#V= ͗ ìKB9+9+#ýMDR"f!99y*:f/O:g/G>kb ýCV])9N#F#! >8.!vqxgFOx>0y_!~h&##)y(#9(>o&ý} | } |  0 ì8 O>Gì*O ^#V7RMDìi`N#F#^#V#"V"z}|ýxz #:v *Z>O*\ýͳ({/ #z/ #:v ͳ(~/ #~/ #:v(CVx!8X{z8M!vqxgOFszg_~!\^#V( = x!z G{_#zWx:v!: ( 0 ! E>W>O>G| 㴵 *zï *z 7CVE͗ì͗CV`i{=a ) ý͗CV{OzG+ý `iG^#V#MDì^#V#~#foìCVq#p#s#rý ʬo&)+V+^= ì ʞo&)9^#Vs#r#= ì^ìsì͗CVKB+ýì O>Gì᯲ìè 2vCV|}B#)*VN#F+BMDì*+V+^" "T*R^#V ( O*R #*" "R"*y x( *~t"ìo&)) F-N q,py*P$s*""Z CV/<_*^#V7R"~C^#V#N#F8o>g9͇ o>g9͇*##y*V*P 9 ` l  & < |0)D_>W>o>g0x0K 0 ýR0B͋ *h*f͋ *l*j9 !'*PҬ Ҭ] *j*hڽʽ ?!!x8C"f"h"j *h*fz8 (!ìN ( !ýN (!ýN 8 N 8 N 8N 8 CV_!^ ^#VSn  | }!^z {^2_N2vG8Ay(#:v͗CVKB ͗CV)MD (+{_}zzɯO>G CV_! ^#Vz  x A !"s+r+wKZW!!>ðx}}:"jyKxyxʽ*jyý>!/ͭ>!:ͭýC*Ps#rì^#V"Pì*Ps#r "P!9͇ýxýͧs xʽ]Tý}|8ͧý ͧ+ý0&>>2ýC&y( !&$*.!0!ý>>2!$"""""C&~ (G:(~ 9#~2###^$*|(W!~ w** Q&w*ýx2.Ç**'$:&Ì&!"2*͍'**{(g:(NX%V:%,GOWo,-(|<怨BW]"Z}o:X2Xl&9*Zo$MDy_xW{z/W{/_xzW{_M͈͖͈͖͈͖͈͖}0>02>0]T< 8=kbG:£> x>20~0~0#yíGN#xy_ѯ #7# y(yz!na8{0 wa8 {00 JA8 [8_(R?0#( $(08 :0#w*h8*fs#r:nͼ:n<ͼ"l(-!o #*f##w#6ý! *l*f##6#6###!nýAO*d| Ni` ) ) "f"h"j*f #!*j*hsER5PUNCHGPRINTERLP5COMM1,COMM,NULL5TAPE15TAPE2/>2!"$_~(q0mOx#1>!x͒05: T~ʴ"# |*#"O͓!"!!>80Oy *~*w*T] FO>8/Gwq#6o###'zW+yO+~7G,_~W+~O+~7GҰ$g_|W|O|Gð͆GN #x=qtƁOGOG~#V#^_P|gxҤzWyOxG- ||}l&.Õ_͆OG~ G#yƁO Rý {#  {+  x: {#  {+   "#$&&&&AND 'ARRAY ,BEGIN CASE CONST DIV 'DO DOWNTO  ELSE END EXTERNAL"FOR FILE .FORWARD "FUNCTION GOTO >? ~# ߷G>  x!8|(;(=(-(:(@F #F *F ?K 2Y aR { w*%.*/ͭ>*:h x: Ƞ2 Ʉ͛ ç OYy(OOyڲ _   ɯ ^{# V!6{x7# + +~ x xx~aC{C# 3~#K7#Tzq#aO:=@I |~}͇Ɛ'@'ɯ2Y #~:+:¬~@##´:<~>:7.~.#y !  :Y 7x7~ #. * #rý0*j^#V{= !*j ^#V{= !"f ~LLw#6*fw#6ý̀z w#6{ w#6ý{ W} _!Ã}҇!3~#fo:EKQZjpzWzWN|g.͔q!!>2!9E|½!w"ý!#9 *#y*#y!# ͋!<2\!#]K!\{!!w# :@!.+ Pascal ABORT. PC= FFFFh SP= FFFFh $$$ SUB*}ʬÇ*ì{2#w#wì}2#{ì2y(#02!q"8 &o!":~#V#^_~G#N#V8x8 y8 }?0 }o|g{_7}o0!9~ +~r#wS(@){_{_Zx8zG{֐ړÌ>2XҚ>_8 O>G{} IF IN )LABEL MOD 'NOT &OF OR (OTHERWISPACKED +PROCEDURPROGRAM !RECORD -REPEAT SET *SEGMENT !THEN TO  TYPE UNTIL VAR WHILE WITH !n> #w"h"f^#V*hz"dý!V!#6^w#VwzW{_! 4!~oO _!!!! Y!!!͝! !ͥ!  GCONSOLE#CON#CRT>READ͔͝Nͻͫýq"ZzWx怺 (YP{ z { z*Z!9]T>͆>ã͆>Gҭ/ZQHo8- $%~]T ))+F+N+V+^>2X Hz@CPt$> nk(:Chԥ5!c_ʹ1^ l $-xX(y)hSYR%oNˑ?;! I|oŰE7v@pvCV2X:Xʽ?aý"f"ha*h*fýͳ%%͛ wN%͛%w|%$%͎ .%> %:ʝ> 6#{ Q&w#"$: @:y2 = ͟%#„%>w  :7>>( YO%Oʾ%͎ î%_>è%*b|~#"b!"b%& %!*, s#r> 2%& !)BKPpSTEP Oͤ.ʹ. .}|:.s.~ m. m.,m.;m.|ʎ. ʎ.ʎ.ai.{i. w#9.6#!.:.ʈ.~ ʎ.ʎ.#s.6#9.6go~œ.ѯx~ ʯ. ³.#ä.~'.".2.6#2.1~#.<+w#_^#Vѯ716ͼ1!""""U!*'*'͔*'*'͔*'*'͔*z*xͳ*~*|'͝*~*|*'*'N͝ͳ*z*xͳ**'͝**ͻͫ""'""N'**ͻ5ͻͫ""'ͻ""͔****:V2!U g9!9!!9"" "R"T!$$"}2ý!3!Z&*3w:3!3~22 N#F#y2#2:w#:w#q#p#~#~#ίa:<OYPa a**N**͔"":= ****|c,} >2X>v,>2}ց2.+T,*&a*'*'N͔:T,*'*'N*&a*'*'b)͢)D*ͅ*>%&s!%&k!>%&{!>2E&#~ !*!""N*~ɯ2>2i`""""!&"*'Ԍ&:̈́'*0!*͚!(  x2̈́'"8 *"!"*!+Q&w**͢!( (x2̈́'"']K͋!<22\!"1}2!~2#<361..U͒!m1<#.]0!1U0\1?0DM#~#fo*b#6+"b!"b 2?0!EX">T23͒!m1\#!PC">O23! !0\#3!1\#**0!61\#"%"$!)3ͪ!?0!1\#?? No M/)//  |$/}. 1/ w# ?? Pascal Library not found. ?? Pcode file not found. ?? Pascal Library ill-formed. ?? Pcode file ill-formed. PASCAL/M version NOT compatible with OS. Sorcim PASCAL/M ver vv.llPASLIB PCO!/͝ͳ*'*'q}2a"~"|*'*'͔"":80(h("z"x):(„)͋(Ç)(:ڒ)ͫ:y)ͫ"z"x):ʿ))()͋(:)ͫ{*'*')2*'*'N:= 7+͸,͌,: ʬ--ýCV| !- a*-N#)- -Z*n&-u*n&-l*#n&-u- S#12 P#123 Lev 12 12345 - line executed. Entering Proc name - 12345678 :.!.@-!/-:2!--!'."P!"*"|))|?bk ##6++Fz'Q&E'~w!k!w!! %:q'bk 6z'>27%! {~w*8*#~2%#~2%π@ `-TIہI1r ^[((*'*'achine code file found ?? Machine file ill-formed Machine file load address too large *bK6,#"b6 ?? File name error! <@T=0v0*@Tv03@M=}0Z "!@_!`_!\ 2XV+}_+g+}ց2_}o""*'"*'">2****͔'"":= :o:x+*'*'͝""*'"*'">2o&""ͻ'""͔****͝"z"xͳq"a͝**)N:y*"z"xͻ{ڞ*""*'"*'"!")-a*KBa a**N**͔""*- :x+*'*wPASLIB H PRINTERR` INITIALI04/22/8016:30Sorcim PASCAL/M Library. H(Sݑ  U @.AAۡAA ~8:Dr,A,@ A, @ @ 0&A, @   @ ݰ@ 6BȀɀɀZ*Cp B B    Cr(   B#*\+B@B  @Bۡ BA+BB A Bp Bۡ BA R pA,2Ar ,2 A6A4A@pA`CCBC BACCC.C2CC@ C,C,CCbC2C2C4C6@C2 C4C6B>#B p $BE e23 5T #F0GgHGQ !AQ AaQ a0Q0122 5z1  1UTQF0G SGFFFۣF2FFDABBA(F2FpCF8FAF6FACADADEYF2CF2F@F8FRJFۡ@F8FF.FF6E@FpF  F3@q3! STACK OVERFLOWP3 @q@p@|`BCCCCCA@@CpC*@C@ CC*C*@@d@B0BBBBBAB,BB2`bap/aeapf, dGݏcݝ`d02GQcd6 X0    AAp &2 - - +23A`A`p `ۡA+A`p *B4  9A      T-A,2Ar ,2      J.b/2bafDec,c0d ca dcA  `pd``peN ~/@BB)CCCC@CC ABr^ (\Xn $FJvp8440?4454400404008:4x01@ @,@P@\@h@t@@.@@0 @2B7DBBBAE @EABABABA7AF2B@@BFpC@D @ DC@BEE70 6AB@6 CBA@6!BA@A6#True PA FalsePB@6rN9 IO error: (? .Unknown run-time error(BDivide by zero(Exit from uncalled proc(Floating point error(Illegal PCODE instruction(Integer overflow(Value range error(Non-exis@0BA@C BACBA@BACBB@B@CCBЃA4B@DB@B@CЃDDCB@CBBCЃNCSCBCЄCED3EDEFBE EDBECCEE:f  ( BEEEE5E EE  j BEEEEE2B)E  E.ݰE6 EE E(AHardware parity error(Unknown device specified(Illegal I/O direction(Undefined hardware error( Device referenced is not on-line(File not found on CLOSE(Illegal file name(No space for fil++`**``CONSOLE:P+**rCRT:Pr+*/ 03.29#V4:0"A @@ЋB@60$@@ЋC@60%A@ I AI2  ݑ- ((EE(#EEtent Proc/Seg called(Stack overflow($String length exceeds declared limit(Can't read Pcode file(Programmed HALT(Program interrupted by user(String Index out of range(Illegal EXTERNAL reference(CaseaaaaDb a`b` aaC,E P8A@  A- ݰ@8EAED0@EAEA @A@ 7htH : ^  n  0ZZBE8EEE.EE4EEE8E4E8E    @p @ @p @ @r  @p @ E*(D2`Dp D `` De(Bad random access("File not found on volume specified(Duplicate file name(File already open( File not open(xError reading Real or Integer(RPut not at EOF(; End of file(' nG)HiE#EE.GAE0.E0 EIE IAЋDA6'& ('ABЃ@ABBABABЃ(BPA@A@CЌCAB@B@.A((@IE(IEIE((E(EI$ HF0F(hG  G0@_.  eE  -EE H HE 0H HE 08Enter new value: #& 8`)DValue= #`$`) , Limit= #`$\Value= #$$Value = #Nil# sing result type in Function declaration 124: F-format for Reals only 125: Error in type of standard Function parameter 126: Number of parameters does not agree with declaration 127: Illegal parameter substitution 128: Result type does not agree 10: Error in type 11: '[' expected 12: ']' expected 13: 'END' expected 14: ';' expected (possibly on line above) 15: Integer expected 16: '=' expected 17: 'BEGIN' expected 18: Error in declaration part 19: Error in a*PASLIB* nrа nr nrk lnrknrk m`nrk  f``yEab kqabksFktge,beF ku    #ffgfbe scalar or subrange 114: Base type must not be real 115: Base type must be scalar or a subrange 116: Error in type of standard procedure parameter 117: Unsatisfied forward reference 118: Forward referenced type identifier in variable declaratio 16### V aCurrent dynamic length= #`$, Illegal index value= #a$" pa`"  @@  File at 16### = #@ 58: Error in (bad expression) 59: Error in variable 101: Identifier declared twice 102: Lower bound exceeds upper bound 103: Identifier is not of the appropriate class 104: Undeclared identifier 105: Sign not allowed 106: Numb 20: ',' expected 21: '*' 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 k` )B &s $S#ss P#ppp procedur I#iiii sp=1234 < (  Line #$CE=continue, =quit?# D D CC n 119: Must not repeat parameter list for a FORWARD declared procedure 120: Function result type must be scalar, subrange or pointer 121: File value parameter not allowed 122: Must not repeat result type for a FORWARD declared function 123: Mis 1: Error in simple type 2: Identifier expected 3: 'PROGRAM' expected 4: ')' expected 5: ': ' expected 6: Illegal symbol (possibly missing ';' on line above) 7: Error in parameter list 8: 'OF' expected 9: '(' expected   b+. P b :@b P # b B&G C 62 .*%- 35,.,&,V` b`a`Ѝ b`Ѓa`Є ( b  a er 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 type 112: Index type must not be real 113: Index type must ( 2 Resuming...#gL.4b"~ H( Line #$CE=continue, =quit?# D D CC 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 m ( WRNFIL, 'or by any means, electronic, mechanical,'); Writeln( WRNFIL, ' magnetic, optical, chemical,'); Write ( WRNFIL, 'manual, or otherwise, without the prior'); Writeln( WRNFIL, ' written permission of'); Writeln( WRNFIL, 'SORCIM, 28: Too many local files 259: Expression too complicated 261: Too many Segments. 262: "FORWARD" declared as Segment 263: All Segment procedures must be first 270: No window variable for untyped files 300: Division by zero 301: No case pxpression 148: Subrange bounds must be scalar 149: Index type must not be Integer 150: Assignment to standard function is not allowed 151: Assignment to formal function is not allowed 152: No such field in this record 153: Type error in Read procedure Filetext; begin Write ( WRNFIL, 'Copyright (c) 1979 by Sorcim.'); Writeln( WRNFIL, ' All rights reserved.'); Write ( WRNFIL, 'No part of the "PASCAL/M Software System"'); Writeln( WRNFIL, ' covered by this License Agreement'd 190: Error in compiler directive 201: Error in Real constant - digit expected 202: String constant must not exceed source line 203: Integer constant exceeds range 204: Digit exceeds radix. 250: Too many nested scopes of identifiers 2ust be Boolean 136: Set element type must be scalar or subrange 137: Set element types must be compatible 138: Type of variable is not Array 139: Index type is not compatible with declaration 140: Type of variable is not Record 141: Type of vexpected end of input (Premature EOF) 402: Error in writing code file 403: Error in reading include file 404: Error in writing list file 405: Include files cannot be nested rovided 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: Feature NOT implemented 400: Illegal character in text 401: Un 154: Actual parameter must be a variable 155: Control variable must be local and not a parameter 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 ); Write ( WRNFIL, 'may be reproduced, transmitted, transcribed,'); Writeln( WRNFIL, ' stored in a retrieval system,'); Write ( WRNFIL, 'or translated into any language'); Writeln( WRNFIL, ' or computer language, in any form,'); Write51: Too many nested procedures and/or functions 252: Too many forward references of procedure entries 253: Procedure too long 254: Too many long constants in this procedure 255: Too many errors on this source line 257: Too many externals 25ariable must be File or Pointer 142: Illegal parameter substitution 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 eprogram TESTP( OUTPUT, WRNFIL); (* 'TESTP.PAS': Pascal installation test program. Sorcim Pascal/M: seh 79-08-7*) const WRNFILNAM='TPWARN.txt'; VERSION='Testp: Version 02.08'; var CH: char; LINE: string; WRNFIL: text; red label 167: Undeclared label 168: Undefined label 169: Base type of set exceeds implementation limit 170: Value parameter expected 171: Standard file was re-declared 172: Undeclared external file 174: Pascal procedure or function expecte 160: Previous declaration was not FORWARD 161: Previously declared as FORWARD 162: Parameter size must be constant 163: Missing variant in declaration 164: Substitution of standard proc/func not allowed 165: Multidefined label 166: Multidecla273 Calle De Luna, Santa Clara CA 95050.'); Writeln( WRNFIL); Writeln( WRNFIL, 'The files on this disk are as follows:'); Writeln( WRNFIL, 'PASCAL.pco = Pascal compiler.'); Writeln( WRNFIL, ' PRUN.com = Pascal P-code interpreter.'); /yy hh:mm Date (mm/dd/yy) is: Time (hh:mm:ss) is: 00:uPYfP:ul#~͗#~͗#͏͗͏͗:t_0:0 $<VXfXIllegal month specified.Illegal day of month, WRNFILNAM); Filetext; Close ( WRNFIL, LOCK); (*Copy TPWARN.txt to the console*) Reset ( WRNFIL, WRNFILNAM); while not Eof( WRNFIL) do begin Readln ( WRNFIL, LINE); Writeln( LINE); end; Writeln; end. Writeln( WRNFIL, 'PASLIB.pco = Pascal library.'); Writeln( WRNFIL, ' TESTP.pas = Pascal test program source code.'); (*This file*) end (*end Filetext*) ; begin WRITELN (' ', VERSION); (*Write alpx: Ƞ2 Ʉ&O!*.  !0*. OO!>*.   V>ɯ^f XNy#g͌͌  Y  specified.Illegal year specified.Illegal hour specified.Illegal minute specified.All entries must be in range from 0 to 9*%*/>*:ERA A:PASCAL.PCO ERA A:PRUN.COM ERA A:PASLIB.PCO ERA A:TESTP.PAS ERA A:TESTP.PCO ERA A:PASERRS.TXT PIP A:PRUN.COM=B:PRUN.COM[v] PIP A:PASLIB.PCO=B:PASLIB.PCO[v] PIP A:PASCAL.PCO=B:PASCAL.PCO[v] PIP A:TESTP.PAS=B:TESTP.PAS[v] PIP A:PASERRS.TXT=B:P1>/2t!~vf>>'<#2u =JҤJ2Ҫ> 2tJxڰ!=>:2tJ%ҶJaҼ:=> Sorcim program for setting time and date entry to be compatible with PASCAL/M definition for CP/M 1.x systems. Entry format is- mm/ddhabetics*) for CH:='A' to 'Z' do Write( CH); Writeln; for CH:='a' to 'z' do Write( CH); Writeln; Writeln; (*Create TPWARN.txt*) {$I-} Reset( WRNFIL, WRNFILNAM); {$I+} Close ( WRNFIL, PURGE); Rewrite( WRNFIL ͌  Y ASERRS.TXT[v] PRUN PASCAL TESTP.PAS,L=CONSOLE: PRUN TESTP OM[v] PIP A:PASLIB.PCO=B:PASLIB.PCO[v] PIP A:PASCAL.PCO=B:PASCAL.PCO[v] PIP A:TESTP.PAS=B:TESTP.PAS[v] PIP A:PASERRS.TXT=B:P; TITLE 'CONSTRL - Console Control Assembly Module.' ;CONSTRL - Console Control Assembly Module. ; 80-03-16, SORCIM. ; CONSTRL This deck contains all the console device ; dependent code. All addresses up thru and including ; the cursor motion taSN: DB 'Z'-40h,0,0 ;SUB Clear screen (& Home cursor) ENDIF ; Following values for Televideo TVI 912/920. ; (Superset of ADM 3). IF 0 ;skip (1 to assemble) HOMEC: DB '^'-40h,0,0 ;RS home display (0,0) CLNE1: DB ESC,'T',0 ; Clear to EOL MUP:y between cursor motions. ; Some terminals can take a significant amount of time for ; complex functions (e.g., Clear Screen). If your ; terminal appears to be mis-behaving, it can be helpful ; to set (CDELAY) to a very large number while debugging To aid the user in constructing a CONSTRL ; configured for his actual device, example source ; code for a few other terminals is provided, within ; IF-skip brackets. The installer is urged to consult ; the manual for the specific terminal to be emplo to 0 (terminals are supposed ; to ignore NULls). ; ; Following values are for Lear-Seigler ADM3A or equivalent IF 0 ;SKIP (1 TO ASSEMBLE) HOMEC: DB '^'-40h,0,0 ;RS home display (0,0) CLNE1: DB 0,0,0 ; Clear to EOL ***N/A*** MUP: DB 'K'-40h, functions RDXY: JMP RDCXY WTXY: JMP SETXY ; Define dimensions of character output devices. ; These are the values returned by the SCREEN intrinsic ; function. ; Console dimensions NOLNES: DB 24 ;Maximum lines on terminal NOCOLS: DB 40 ;Maxble must be maintained in this ; deck as each user configures it for his/her own ; device. The CONSTRL region begins at 180h and can ; extend up thru 1FFh. ; ; Refer to section 19.3 in your PASCAL/M (tm) manual ; for directions on using CONSTRL. ; ; 5000 200ns 200 ; 4000 250ns 160 Z80A ; 2765 360ns 111 8085A ; 2174 460ns 87 8080A ; 2000 500ns 80 Z80 ; 1230 820ns 49 8080 FREQ EQU 2000 ;Frequency in KiloHertz SCLFRE: DB FREQ/25 ;Scaled frequency value ; Data port definition for AMD9511; ;; your CONSTRL adapatation. CDELAY: DB 25 ;25 milliseconds delay DW 0 ;(reserved) ; Machine clock period factor. ; Used by PRUN to determine delay times. ; (1 MHz = 1000 KHz) ; Value= (Clock Frequency/1000) div 25 ;Examp Freq Period Value yed ; before beginning the process. ; ;79-10-02 ADM 42 configuration is courtesy of ; ComputerLand, Belmont, CA ;79-11-11 Hazeltine 1500 configuration is courtesy of ; J. Spanton, Sunnyvale, CA ;80-03-14 TRS Model II configuration is courtesy of 0,0 ;VT move up one line MDWN: DB 'J'-40h,0,0 ;LF move down one line MLEF: DB 'H'-40h,0,0 ;BS move left one char MRIG: DB 'L'-40h,0,0 ;FF move right one char MDEL: DB 0,0,0 ; delete char ***N/A*** MINS: DB 0,0,0 ; insert char ***N/A*** CLimum columns on terminal ; Printer dimensions NOPLN: DB 62 ;Maximum lines per page NOPCOL: DB 80 ;Maximum columns per line ;CCCHR: char to echo to console for unknown control-char (0..20h) CCCHR: DB '?' ;CDELAY: milliseconds of dela ; As released, this deck is set up to be acceptable ; to the CP/M (tm) ASM assembler. The user should use ; this source code as a guide to adapt to whatever ; assembler is available. ; ; The default configuration herein is for an ADM 3 ; terminal. Status port must be = Data port + 1. AMDP: DB 18h ;Altos AMD data port ; Reserved for future expansion. DB 0 DW 0 DW 0 ; Constants for character movement processors. ; Each entry MUST be three bytes long, with any ; bytes not used setARD^) ; ;Transparent read, no echo. ; ;Exit A= Char, uses all. OUTSC EQU INPSC+3 ; OUTPUT^:=A; Put(OUTPUT) ; ;Transparent write to crt. ; ;Entry A= Char, uses all. ORG CONORG ;Fixed address ; Jump vector for all PASCAL callable; Pickles & Trout, Goleta, CA ESC EQU '['-40h ;Escape, Ascii ESC ; (for convenience) ; External addresses for this release package. ; (Not changeable by user). CONORG EQU 180h ;FIXED orgin INPSC EQU CONORG-6 ; Get(KEYBOARD); A:=(KEYBO DB 'K'-40h,0,0 ;VT move up one line MDWN: DB 'J'-40h,0,0 ;LF move down one line MLEF: DB 'H'-40h,0,0 ;BS move left one char MRIG: DB 'L'-40h,0,0 ;FF move right one char MDEL: DB ESC,'W',0 ; delete char MINS: DB ESC,'Q',0 ; insert char CLSN' ' RET ENDIF ; Following code is supplied as a sample for terminals ; supporting the reading of the cursor. ; Upper left corner is = (0,0), or DE=2020h. ; Note: If terminal returns absolute coordinates, they ; must be biased by adding ' ' becreen (& Home cursor) ENDIF ; Following values for Tandy Radio Shack, TRS-80 Model II. IF 0 ;skip (1 to assemble) HOMEC: DB 'F'-40h,0,0 ;ACK home display (0,0) CLNE1: DB 'A'-40h,0,0 ;SOH Clear to EOL MUP: DB '^'-40h,0,0 ;RS move up one line CLSN: DB ESC,'+',0 ; Clear screen ENDIF ; Following values are for Perkin-Elmer Fox 1100 IF 0 ;skip (1 to assemble) HOMEC: DB ESC,'H',0 ; home display (0,0) CLNE1: DB ESC,'I',0 ; Clear to EOL MUP: DB ESC,'A',0 ; move up one line OF FIXED ADDRESS CODE AND DATA ; ASSERT $ = 1B0h (i.e.: The origin counter should ; now be = 1B0h if the above is ; done properly) ; ; All code following is local to your implementation ; and is always referenced locally (ie PASCAL does not ;llowing values for HAZELTINE 1500. IF 0 ;skip (1 to assemble) HPRE EQU 7Eh ;Lead-in character (Tilde) HOMEC: DB HPRE,'R'-40h,0 ;~DC2 home display (0,0) CLNE1: DB HPRE,'O'-40h,0 ;~SI Clear to EOL MUP: DB HPRE,'L'-40h,0 ;~FF move up one line MDWN: : DB 'Z'-40h,0,0 ;SUB Clear screen (& Home cursor) ENDIF ; Following values for Lear Siegler ADM 42. ; (Also works for TVI 912/920.) IF 0 ;skip (1 to assemble) HOMEC: DB '^'-40h,0,0 ;RS home display (0,0) CLNE1: DB ESC,'T',0 ; Clear to EOL ar screen (& Home cursor) ENDIF ; Following values for SouthWest Technical Products CT82. IF 0 ;skip (1 to assemble) HOMEC: DB 'P'-40h,0,0 ;home display (0,0) CLNE1: DB 'F'-40h,0,0 ;Clear to EOL MUP: DB 'A'-40h,0,0 ;move up one line MDWN: DBMDWN: DB '_'-40h,0,0 ;US move down one line MLEF: DB 'H'-40h,0,0 ;BS move left one char MRIG: DB ']'-40h,0,0 ;GS move right one char MDEL: DB 0,0,0 ; delete char ***N/A*** MINS: DB 0,0,0 ; insert char ***N/A*** CLSN: DB 'L'-40h,0,0 ;FF CleMDWN: DB ESC,'B',0 ; move down one line MLEF: DB ESC,'D',0 ; move left one char MRIG: DB ESC,'C',0 ; move right one char MDEL: DB 0,0,0 ; delete char ***N/A*** MINS: DB 0,0,0 ; insert char ***N/A*** CLSN: DB ESC,'K',0 ; Clear scree make any direct references to the code). RDCXY: ;Read X,Y postion ; Entry None. ; Exit D= Y+32 ; E= X+32 ; Uses all. ; ADM 3 does not have this capability, so reply = (0,0). ; TRS-80 Mod II, ditto. IF 1 ;assemble default (0 to skip) LXI D,DB 'J'-40h,0,0 ;LF move down one line MLEF: DB 'H'-40h,0,0 ;BS move left one char MRIG: DB 'P'-40h,0,0 ;DLE move right one char MDEL: DB 0,0,0 ; delete char ***N/A*** MINS: DB 0,0,0 ; insert char ***N/A*** CLSN: DB HPRE,1Ch,0 ; Clear s MUP: DB 'K'-40h,0,0 ;VT move up one line MDWN: DB 'J'-40h,0,0 ;LF move down one line MLEF: DB 'H'-40h,0,0 ;BS move left one char MRIG: DB 'L'-40h,0,0 ;FF move right one char MDEL: DB ESC,'W',0 ; delete char MINS: DB ESC,'Q',0 ; insert char 'B'-40h,0,0 ;move down one line MLEF: DB 'D'-40h,0,0 ;move left one char MRIG: DB 'I'-40h,0,0 ;move right one char MDEL: DB '\'-40h,'H'-40h,0 ;delete char MINS: DB '\'-40h,'X'-40h,0 ;insert char CLSN: DB 'L'-40h,0,0 ;Clear screen ENDIF ; END move down one line MLEF: DB 'H'-40h,0,0 ;BS move left one char MRIG: DB 'L'-40h,0,0 ;FF move right one char MDEL: DB 0,0,0 ; delete char ***N/A*** MINS: DB 0,0,0 ; insert char ***N/A*** CLSN: DB ESC,'*',0 ; Clear screen ENDIF ; Fon (& Home cursor) ENDIF ; Following values for SOROC IQ 120/140. IF 1 ;ASSEMBLE (0 TO SKIP) HOMEC: DB '^'-40h,0,0 ;RS home display (0,0) CLNE1: DB ESC,'T',0 ; Clear to EOL MUP: DB 'K'-40h,0,0 ;VT move up one line MDWN: DB 'J'-40h,0,0 ;LF fore exit. ; X is Column, Y is Row. Some terminals use (X,Y) order. ; Code for TVI 912/920 and ADM 42. ; Note the read & discard of CR following Y X. IF 1 ;assemble sample (0 to skip) ; the RET above can be patched out if ; this code is appro ; SetXY for Fox 1100 ; Following code for Perkin-Elmer Fox 1100 IF 0 ;skip (1 to assemble) PUSH D MVI A,ESC CALL OUTSC MVI A,'Y' CALL OUTSC ;ESC-'Y' = 'set X' POP D MOV A,E PUSH D CALL OUTSC MVI A,ESC CALL OUTSC MVI A,'X'E,A RET ENDIF ; ReadXY CT82 ; Following is for SouthWest Technical Products CT82. ; The CT82 does not offset cursor addressing by 20h ; like most other terminals, thus the characters ; must get a bias of 32 here. IF 0 ;skip (1 to assemble) ed Y ENDIF ; The entire CONSTRL patch area cannot extend past 1FFh. ; Following awkward expression is ASM way of saying this. XEND EQU $ ; IF XEND > (CONORG+128) IF (XEND-(CONORG+128d)) and 08000h error: DW (XEND-CONORG) ; console interfac= X+32 ; Exit None. ; Uses all. ; Following code is for ADM3 or compatible, including ; ADM 42, Televideo 912, and SOROC IQ. ; Can be adapted to BEEHIVE 100 by changing '=' to 'F'; ; Can be adapted to TRS Model II by changing '=' to 'Y'; IF 1 ;asspriate to your crt. MVI A,ESC CALL OUTSC MVI A,'?' CALL OUTSC ;Inform terminal I want Y,X CALL INPSC ;read Y+32 PUSH PSW CALL INPSC ;read X+32 POP D MOV E,A PUSH D CALL INPSC ;read CR and discard POP D RET ;D=Y+32, E=X+32 ENDIFe bias from the characters being sent. IF 0 ;skip (1 to assemble) MVI A,'K'-40h PUSH D CALL OUTSC POP D MOV A,E SUI 20h PUSH D CALL OUTSC POP PSW SUI 20h JMP OUTSC ENDIF ; SetXY for Hazeltine 1500 ; Following code for HAZELT CALL OUTSC ;ESC-'X' = 'set Y' POP PSW JMP OUTSC ENDIF ; SetXY for CT82 ; Following is for SouthWest Technical Products CT82. ; The CT82 does not bias its screen addressing by 32 ; like most other terminals, therefore we must subtract ; th MVI A,']'-40h CALL OUTSC MVI A,'A'-40h CALL OUTSC CALL INPSC ADI 20h MOV E,A PUSH D CALL INPSC POP D ADI 20h MOV D,A RET ENDIF ; ReadXY Hazeltine 1500 ; Following code for Hazeltine 1500 IF 0 ;skip (1 to assemble) Me is too long ENDIF ORG CONORG+128 END ;end of assembly ing this. XEND EQU $ ; IF XEND > (CONORG+128) IF (XEND-(CONORG+128d)) and 08000h error: DW (XEND-CONORG) ; console interfacemble (0 to skip) PUSH D MVI A,ESC CALL OUTSC MVI A,'=' ;for ADM, TVI & SOROC ; MVI A,'F' ;(for BEEHIVE 100) ; MVI A,'Y' ;(for TRS-80 Mod II) CALL OUTSC POP D MOV A,D ;Y+32 PUSH D CALL OUTSC POP D MOV A,E ;X+32 JMP OUTSC ENDIF ; ReadXY Fox 1100 ; Following code suitable for Perkin-Elmer Fox 1100. IF 0 ;skip (1 to assemble) MVI A,ESC CALL OUTSC MVI A,'Z' CALL OUTSC ;ESC-Z means 'ReadXY?' CALL INPSC ;get Y+32 PUSH PSW CALL INPSC ;get X+32 POP D MOV INE 1500. IF 0 ;skip (1 to assemble) PUSH D MVI A,HPRE CALL OUTSC MVI A,'Q'-40h ;Ascii DC1 CALL OUTSC POP D MOV A,E ;X+32 PUSH D SUI 20h CALL OUTSC ;output unbiased X POP D MOV A,D ;Y+32 SUI 20h JMP OUTSC ;go output unbiasias. CALL INPSC ;read coordinate value CPI 'a'-1 JC ICORD3 ;If response in lower range SUI 'a'-1 ;remove Hazeltine upper bias ICORD3: ADI ' ' ;add Pascal/M bias RET ENDIF SETXY: ;set X,Y position of cursor ; Entry D= Y+32 ; EVI A,HPRE CALL OUTSC MVI A,'E'-40h CALL OUTSC ;request current X,Y CALL ICORD ;read X PUSH PSW CALL ICORD ;read Y POP D MOV E,D MOV D,A PUSH D CALL INPSC ;read & discard CR POP D RET ICORD: ;Get Hazeltine coordinate & unb; TITLE 'CONSTRLZ - Console Control Common deck (Zilog). ;CONSTRLZ - Console Control Common Deck (Zilog mnemonics). ; 80-03-16, SORCIM. ; CONSTRLZ deck contains all the console device ; dependent code. All addresses up thru and including ; the cine MDWN: DEFB 'J'-40h,0,0 ;LF move down one line MLEF: DEFB 'H'-40h,0,0 ;BS move left one char MRIG: DEFB 'L'-40h,0,0 ;FF move right one char MDEL: DEFB 0,0,0 ; delete char ***N/A*** MINS: DEFB 0,0,0 ; insert char ***N/A*** CLSN: DEFB 'Z'n terminal NOCOLS: DEFB 80 ;Maximum columns on terminal ; Printer dimensions NOPLN: DEFB 62 ;Maximum lines per page NOPCOL: DEFB 80 ;Maximum columns per line ;CCCHR: char to echo to console for unknown control-char (0..20h) CCCHR: DEFB '?' ;3 ; terminal. To aid the user in constructing a CONSTRL ; configured for his actual device, example source ; code for a few other terminals is provided in the ; file CONSTRL.ASM. The installer is urged to consult ; the manual for the specific termin; ; Status port must be = Data port + 1. AMDP: DEFB 18h ;Altos AMD port ; Reserved for future expansion. DEFB 0 DEFW 0 DEFW 0 ; Constants for character movement processors. ; Each entry MUST be three bytes long, with any ; bytes not uG-6 ; Get(KEYBOARD); A:=(KEYBOARD^) ; ;Transparent read, no echo. ; ;Exit A= Char, uses all. OUTSC EQU INPSC+3 ; OUTPUT^:=A; Put(OUTPUT) ; ;Transparent write to crt. ; ;Entry A= Char, uses all. ORG CONORG ;Fixed address ; Jump ursor motion table must be maintained in this ; deck as each user configures it for his/her own ; device. The CONSTRL region begins at 180h and can ; extend up thru 1FFh. ; ; Refer to section 19.3 in your PASCAL/M (tm) manual ; for directions on usirge number while debugging ; your CONSTRL adapatation. CDELAY: DEFB 25 ;25 milliseconds delay DEFW 0 ;(reserved) ; Machine clock period factor. ; Used by PRUN to determine delay times. ; (1 MHz = 1000 KHz) ; Value= (Clock Frequency/1000) div 25 CDELAY: milliseconds of delay between cursor motions. ; Some terminals can take a significant amount of time for ; complex functions (e.g., Clear Screen). If your ; terminal appears to be mis-behaving, it can be helpful ; to set (CDELAY) to a very laal to be employed ; before beginning the process. ; ; Setup for following terminals is found in CONSTRL.ASM: ; Lear-Seigler ADM3A, ADM42 ; Televideo TVI-912/920 ; Perkin-Elmer Fox 1100 ; Soroc IQ 120/140 ; Hazeltine 1500 ; Tandy Radio Shack sed = 0 (terminals are supposed ; to ignore NULls). ; ; Following values are for Lear-Seigler ADM3, or equivalent. HOMEC: DEFB '^'-40h,0,0 ;RS home display (0,0) CLNE1: DEFB 0,0,0 ; Clear to EOL ***N/A*** MUP: DEFB 'K'-40h,0,0 ;VT move up one lvector for all PASCAL callable functions RDXY: JP RDCXY WTXY: JP SETXY ; Define dimensions of character output devices. ; These are the values returned by the SCREEN intrinsic ; function. ; Console dimensions NOLNES: DEFB 24 ;Maximum lines ong CONSTRL. ; ; As released, this deck is set up to be acceptable ; to a hypothetical Z80 assembler. The user should use ; this source code as a guide to adapt to whatever ; assembler is available. ; ; The default configuration herein is for an ADM ;Examp Freq Period Value ; 5000 200ns 200 ; 4000 250ns 160 Z80A ; 2765 360ns 111 8085A ; 2174 460ns 87 8080A ; 2000 500ns 80 Z80 ; 1230 820ns 49 8080 FREQ EQU 4000 ;Frequency in KiloHertz SCLFRE: DEFB FREQ/25 ; Data port definition for AMD9511I configuration is courtesy of ; Pickles & Trout, Goleta, CA ESC EQU '['-40h ;Escape, Ascii ESC ; (for convience) ; External addresses for this release package. ; (Not changeable by user). CONORG EQU 180h ;FIXED orgin INPSC EQU CONORTRS80 Model II ; SouthWest Technical Products CT82 ; Beehive 100 ; ;79-10-02 ADM 42 configuration is courtesy of ; ComputerLand, Belmont, CA ;79-11-11 Hazeltine 1500 configuration is courtesy of ; J. Spanton, Sunnyvale, CA ;80-03-14 TRS Model I-40h,0,0 ;SUB Clear screen (& Home cursor) ; Following values for Televideo TVI 912/920. ; (Superset of ADM 3). IF 0 ;(skip) HOMEC: DEFB '^'-40h,0,0 ;RS home display (0,0) CLNE1: DEFB ESC,'T',0 ; Clear to EOL MUP: DEFB 'K'-40h,0,0 ;VT move -************************************************************ const VERSION='Contest: Version 10/31/79'; var X,Y,Z: integer; procedure Wait; var Q: integer; begin for Q:=1 to 5000 do ; end (*end Wait*) ; procedure Border (LENGTH, II) CALL OUTSC POP DE LD A,D ;Y+32 PUSH DE CALL OUTSC POP DE LD A,E ;X+32 JP OUTSC ; The entire CONSTRL patch area cannot extend past 1FFh. XEND EQU $ IF XEND > (CONORG+128) error: DEFW (XEND-CONORG) console interface is too l1B0h if the above is ; done properly. *) ; All code following is local to your implementation ; and is always referenced locally (ie PASCAL does not ; make any direct references to the code). RDCXY: ;Read X,Y postion ; Entry None. ; Exit D= Y --'Contest' is intended to demonstrate and exercise --the console-action intrinsics of Pascal/M. --This program and the procedures within it are NOT licensed, --and the user may adapt any part of this program --for his own software and/or personal ins PUSH DE CALL INPSC ;read CR and discard POP DE RET ;D=Y+32, E=X+32 SETXY: ;set X,Y position of cursor ; Entry D= Y+32 ; E= X+32 ; Exit None. ; Uses all. ; Following code is for ADM3 or compatible, including ; ADM 42, Televideo 912,up one line MDWN: DEFB 'J'-40h,0,0 ;LF move down one line MLEF: DEFB 'H'-40h,0,0 ;BS move left one char MRIG: DEFB 'L'-40h,0,0 ;FF move right one char MDEL: DEFB ESC,'W',0 ; delete char MINS: DEFB ESC,'Q',0 ; insert char CLSN: DEFB 'Z'-40h,0ong ENDIF ORG CONORG+128 END ;end of assembly L patch area cannot extend past 1FFh. XEND EQU $ IF XEND > (CONORG+128) error: DEFW (XEND-CONORG) console interface is too l+32 ; E= X+32 ; Uses all. ; ADM 3 does not have this capability, so reply = (0,0). ; TRS80 Model II, ditto. LD DE,' ' RET ; The RET may be patched out if the ; following code suffices for your ; terminal. ; Following code is supplied truction. --Indeed, users are encouraged to suggest improvements --(or useful adaptations/applications) to this program --for inclusion in the next release of Pascal/M. --Please send comments to Digital Marketing: --(address inside Pascal/M manual) - and SOROC IQ. ; Can be adapted to BEEHIVE 100 by changing '=' to 'F'; ; Can be adapted to TRS Model II by changing '=' to 'Y'; PUSH DE LD A,ESC CALL OUTSC LD A,'=' ;for ADM, TVI & SOROC ; LD A,'F' ;(for BEEHIVE 100) ; LD A,'Y' ;(for TRS-80 Mod,0 ;SUB Clear screen (& Home cursor) ENDIF ; Refer to the companion assembly deck CONSTRL.ASM for ; values appropriate to other terminals. ; END OF FIXED ADDRESS CODE AND DATA ; ASSERT $ = 1B0h (* i.e.: The origin counter should ; now be = program Contest (INPUT,OUTPUT,KEYBOARD); (* 'Contest.pas': console intrinsics demo/test program. Sorcim Pascal/M: seh 08/27/79 *) --************************************************************ --Note to users of this program: use (X,Y) order. ; Code for TVI 912/920 and ADM 42. ; Note the read & discard of CR following Y X. LD A,ESC CALL OUTSC LD A,'?' CALL OUTSC ;Inform terminal I want Y,X CALL INPSC ;read Y+32 PUSH AF CALL INPSC ;read X+32 POP DE LD E,A as a sample for terminals ; supporting the reading of the cursor. ; Upper left corner is = (0,0), or DE=2020h. ; Note: If terminal returns absolute coordinates, they ; must be biased by adding ' ' before exit. ; X is Column, Y is Row. Some terminals HEIGHT: integer); {'Border': seh 09/07/79} {requires 'Conact' #s 2-5} (*Border draws a box of dimensions LENGTH & HEIGHT: CURSOR MUST BE @ STARTING POSITION OF BOX BEFORE 'Border' IS CALLED. Exits with cursor @ starting position.*) {this proce end (*endcase of console input*) ; end (*endif CH is a valid command*) ; ReadXY(X,Y); GotoXY(0,0); Write (OUTPUT,'(',X,',',Y,') '); GotoXY(X,Y); until CH in ['Q','q']; (*QUIT chars*) GotoXY(0,0); end (*end Jteger; begin Screen(OUTPUT,Y,X); Fillchar(OFFX[1],25,' '); Y:=(X-LENGTH-5) div 2; LIN:=NEWT; Writeln(OUTPUT); Writeln(OUTPUT,OFFX:Y,' ',REF,ENND); Write (OUTPUT,OFFX:Y,BEG,OLD,ENND); Wait; Write (OUTPUT,Chr(CR),OFr east side*) ; for X:=1 to (LENGTH-1) do begin Write (OUTPUT,CH); Conact(4);{left} Conact(4); end (*endfor bottom*) ; for X:=1 to (HEIGHT-1) do begin Write (OUTPUT,CH); Conact(4);{left} Conact(2);{up} etters will not.'); GotoXY(0,0); repeat Read(KEYBOARD,CH); if CH in ['D','d','E','e','L','l','R','r','U','u','X','x'] then begin if CH in ['A'..'Z'] then begin Write(OUTPUT,CH); Conact(4); it; end (*end ClrtoEOL*) ; procedure Insrdelt; {'Insrdelt': seh 09/07/79} {requires 'Conact' #s 6 & 7 and 'Screen'} {Exit: cursor is moved down 4 lines} {requires global procedure 'Wait': (waste 3 seconds)} const CR=13; BEG='<<<<<'; dure will not draw a box equal to the console screen in width unless the AUTO-LF feature of the console is disabled} {requires global procedure 'Wait': (waste 3 seconds)} const CH='+'; var X: integer; begin for X:=1 to ((LENGTH div 2)-1) Writeln(OUTPUT); end (*end Inserdelt*) ; procedure Joystick; {'Joystick': seh 09/07/79} {requires 'Conact' #s 0,2-5, 'ReadXY', and 'GotoXY'} {Exit: cursor @ (0,0)} var X,Y: integer; CH: char; begin Writeln(OUTPUT,'The console will nFX:Y,BEG); Wait; for X:=1 to LENGTH do Conact(6);{delete 1 char @ cursor} Wait; for X:=1 to LENGTH do begin Conact(7);{insert blank char @ cursor} Write (OUTPUT,LIN[X]); end (*endfor Conact(insert)*) ; Wait; end (*endfor west side*) ; for X:=1 to (LENGTH-(LENGTH div 2)) do Write (OUTPUT,CH); for X:=1 to (LENGTH-(LENGTH div 2)) do Conact(4);{left} end (*end Border*) ; procedure ClrtoEOL (WIDTH: integer); {'ClrtoEOL': seh 09/07/7 end (*endif char was uppercase*) ; case CH of 'D','d': Conact(3); 'E','e': Conact(0); 'L','l': Conact(4); 'R','r': Conact(5); 'U','u': Conact(2); 'X','x': Halt; ENND='*|'; LENGTH=32; NEWT='*** Sorcim Pascal/M ***'; OLD='These are PASCAL cursor controls'; REF='--------------------------------'; var LIN: packed array[1..LENGTH] of char; OFFX: packed array[1..25] of char; X,Y: indo Conact(5);{right} {cursor is now @ 1/2 line length} for X:=1 to (LENGTH-(LENGTH div 2)) do Write (OUTPUT,CH); for X:=1 to (HEIGHT-1) do begin Write (OUTPUT,CH); Conact(4);{left} Conact(3);{down} end (*endfoow go into Joystick mode:'); Writeln(OUTPUT,'r=right, l=left'); Writeln(OUTPUT,'u=up , d=down'); Writeln(OUTPUT,'Q=QUIT , E=erase screen, X=RETURN TO OS'); Write (OUTPUT,'UPPER-CASE letters will echo;'); Write (OUTPUT,' lower-case ln Writeln(OUTPUT); for X:=1 to (25+((WIDTH-LENGTHS) div 2)) do Write (OUTPUT,' '); Write (OUTPUT,S1); Wait; Write (OUTPUT,Chr(CR),S2); Wait; Conact(1); Wait; Write (OUTPUT,Chr(CR)); Wait; Conact(1); Wa9} {requires Conact(1); Exit: cursor is moved down 1 line} {requires global procedure 'Wait': (waste 3 seconds)} const CR=13; S1='This sentence will disappear first.'; S2='This one will be second.'; LENGTHS=58; var X: integer; begioystick*) ; procedure Sinewave (MAXX,MAXY: integer); {'Sinewave': seh 09/07/79} {requires ReadXY and GotoXY} {draws a sine-wave of MAXX by MAXY; cursor position @ start becomes UL corner of sine-wave; Note: A height <3 will not produce a recogn79; Height = 23; U1up = 'e'; U1dwn = 'x'; U1lft = 's' ; U1rht = 'f'; U2up = '8'; U2dwn = '2'; U2lft = '4' ; U2rht = '6'; type Ustat= record X,Y : Integer; Dir : (up,down,right,left); Ch ; GotoXY(2,2); Sinewave( X-4, Y-8); Wait; Conact(0); GotoXY(1,1); Border( X-2, Y-6); GotoXY(2,2); Spiral( X-4, Y-8); GotoXY(0,Y-6); ClrtoEOL(X); GotoXY(0,Y-6); Insrdelt; or*) ; GotoXY(OLDX,OLDY); end (*end Sinewave*); procedure Spiral (MAXX,MAXY: integer); {'Spiral': seh 09/07/79} {requires 'GotoXY' and 'ReadXY'} {draws a spiral of size MAXX by MAXY; cursor position @ start becomes UL corner of spiral} {Exical/M. --This program and the procedures within it are NOT licensed, --and the user may adapt any part of this program --for his own software and/or personal instruction. --Indeed, users are encouraged to suggest improvements --(or useful adaptatdif X & Y are in range*) ; THETA:=THETA+INCR; until ( ((X=MAXX)) and ((Y=MAXY)) ); (*until X AND Y have both exceeded their boundaries*) end (*end Spiral*) ; {Main Program} {Notice the use of 'Scizable drawing...} {Exit: cursor @ starting position} const CH='*'; TWOPi=6.28318; var OFFY,OLDX,OLDY,X,Y: integer; INCR,THETA,YSTRETCH: real; begin ReadXY(OLDX,OLDY); INCR:=TWOPi/MAXX; THETA:=0; OFFY:=Round(MAXY/2)+OLDY-1; Conact(2);Conact(1);Conact(2);Conact(1); Joystick; until FALSE; end (*end Contest*) .  GotoXY(2,2); Spiral( X-4, Y-8); GotoXY(0,Y-6); ClrtoEOL(X); GotoXY(0,Y-6); Insrdelt; t: cursor @ starting position} const C=0.345; {tightness-of-curl constant} INCR=0.08; {0.08 radians = 3.6305 degrees} XSTRETCH=2.3; {optimum for TeleVideo} CH='*'; var MINX,MINY,OFFX,OFFY,X,Y: integer; THETA: real; begin Readions/applications) to this program --for inclusion in the next release of Pascal/M. --Please send comments to Digital Marketing: --(address inside Pascal/M manual) --************************************************************ const Width = reen': } {This enables 'Contest' to adapt itself to} {different size terminal-screens: better portability.} begin Write (OUTPUT,VERSION); Wait; Screen (OUTPUT, Y, X); repeat Conact(0); GotoXY(1,1); Border( X-2, Y-6) YSTRETCH:=MAXY/2; for X:=OLDX to OLDX+MAXX-1 do begin Y:=-Round(Sin(THETA)*YSTRETCH); if (not Odd(MAXY)) and (Y<1) then Y:=Y+1+OFFY else Y:=Y+OFFY; GotoXY(X,Y); Write (OUTPUT,CH); THETA:=THETA+INCR; end (*endf(*$D- Must suppress debug info for Filebusy *) program CHASE; --************************************************************ --Note to users of this program: --'Contest' is intended to demonstrate and exercise --the console-action intrinsics of Pas X:=Round(OFFX+XSTRETCH*(THETA*Cos(THETA)*C)); Y:=Round(OFFY+ THETA*Sin(THETA)*C ); if ( (X>=MINX) and (X=MINY) and (Y ' '; if not Offsides then begin Screen [U.X, U.Y] := U.Ch; Gotoxy (U.X, U.Y); Write (U.Ch); end; end; Crash := Crash or Offsides; U.Dead := Offsides; end(*Cnewpos*); procedure DispWrite('-'); end; U1stat.Ch:= '+'; U2stat.Ch:= 'x'; U1stat.X := Width div 3; U2stat.X := Width div 3 *2; U1stat.Y := Height div 2; U2stat.Y := Height div 2+1; U1stat.Dir := right; U2stat.Dir := left ; U1stat.Dead := False; Unitial setting *) repeat Getchr; Dispts; until Crash; Gotoxy(4,Height-3); if U1stat.Dead = U2stat.Dead then Write(' TIE game. ') else if U1stat.Dead then begin U2stat.Wins := U2stat.Wins+1; = left; U1rht : U1stat.Dir := right; U2rht : U2stat.Dir := right; otherwise Uchr := Lchr; end; Lchr := Uchr; end(*Getchr*); procedure Cnewpos (var U: Ustat); var Offsides: Boolean; begin case U.Dir of up : Char; Screen : packed array [0..Width, 0..Height] of Char; U1stat, U2stat : Ustat; procedure Init; var i,j : Integer; begin for i := 0 to Width do begin Fillchar(Screen[i],Height+1,' '); end; Conact (0) Writeln(' Welcome to the Sorcim program of CHASE...'); Writeln(' The object of this two player program is to'); Writeln(' avoid each other and the walls while moving'); Writeln(' your object around the inscribed box.'); Writeln(' Player onets; begin Steps := Steps +1; Cnewpos(U1stat); Cnewpos(U2stat); if not Crash then begin Crash := (U1stat.X = U2stat.X) and (U1stat.Y = U2stat.Y) end; end; begin (*chase*) U1stat.Wins := 0; U2stat.Wins := 0; Writeln; Writeln;2stat.Dead := False; Steps := 0; Delay := (Mspeed * 100) - (Ngames * 5); Ngames:= Ngames+1; Crash := False; Lchr := '.'; (* throw away any Chars in usart *) while not Filebusy(Keyboard) do Read(Keyboard, Uch); end; procedure Getch Write(' User ', U2stat.Ch, ' won.') end else begin U1stat.Wins := U1stat.Wins+1; Write(' User ', U1stat.Ch, ' won.'); end; Writeln (' Total number of steps : ',Steps, ' + user wins ',U1stat.Win : U.Y := U.Y-1; down : U.Y := U.Y+1; left : U.X := U.X -1; right : U.X := U.X +1; end; Offsides := (U.X < 0) or (U.X > Width) or (U.Y < 0) or (U.Y > Height); if not Offsides then begin Offsides (*home and clear Screen *); for i := 1 to Width do begin Write('-'); end; for i := 1 to Height-1 do begin Gotoxy(0,i) ; Write('|'); Gotoxy(Width,i) ; Write('|'); end; Gotoxy(0,Height); for i := 1 to Width do begin (+) uses e,x s,f for up,down left,right'); Writeln(' Player two (x) uses 8,2 4,6'); Writeln; Writeln; Write(' Please indicate your machine speed, 2 or 4(MHz)'); Read( Mspeed); Ngames := 0; repeat Init; Dispts; (* Display Ihr); if Uchr = Lchr then Exit(Getchr); case Uchr of U1up : U1stat.Dir := up; U2up : U2stat.Dir := up; U1dwn : U1stat.Dir := down; U2dwn : U2stat.Dir := down; U1lft : U1stat.Dir := left; U2lft : U2stat.Dir :r; var dum : real; Uchr : Char; i : Integer; begin for i := 0 to Delay do begin Dum := (0); end; if Steps mod 20 = 0 then Delay := Delay - (Delay div 10); if Filebusy(Keyboard) then Exit (Getchr); Read (Keyboard,Uc(Keyboard,Uch); until Uch = 'n'; end.  while not Filebusy(Keyboard) do Read(Keyboard,Uch); for II := 0 to 700 do begin Uch := ' '; end; Read JOYSTICK+The console will now go into Joystick mode:#r=right, l=left#u=up , d=down#'Q=QUIT , E=erase screen, X=RETURN TO OS#UPPER-CASE letters will echo;#cb* }#cgcabfb` CONTESTContest: Version 10/31/79#DCDCDCDCCD#VWXY Z[\] INSRDELTqr s t *** Sorcim Pascal/M *** uv! # --------------------------------#*|#@vpFHJLNPvTVXZ\z`bxfhv( a$, `$) #a`bsy~ SINEWAVE ЃIa ` d`eea lower-case letters will not.#b$0$0bb b/x3qDx460 6: "8&(6,.02468:<>w CONTEST H 78/04/99?8:04C> w!<<<<<# These are PASCAL cursor controls#*|#xy !<<<<<#z{  | }~  '   EgB mV !ݕ `b bfbfcb* ݓcedXk SPIRALag`fag`f e33 "ã0 d !ã0 cgcabfb`b>aac?+ b@aac AbB?r4CLRTOEOLPQ`:bR aS#This sentence will disappear first.#TU This one will be second.WAITˆa`*BORDER+ac ,b-aac.+ b/`c0+ 123b4ac5+ 678b9`c:+ ;<=w CHASE  78/04/99?8:04468:<>@BDFHJLNPRTVXZ\^`bdflnprtvxz|~b 8 D`r$``p+``p#``q``q4+%!`q`qO`p`paD `qO `p a( `qO `p`s`q`E$ + user wins #Ƀ$ x user wins #Ƀ$ Want to play again? (y or n): #  ¼ȃƃ׌  fȃ In)Ht  INIT/Ob aO  aOb- ab&a| Oa| aOb- a+˃x˃O˃O˃˃˃˃˃˃˃CdDD.p`s Ga`aEʃʃGɃɃ̈ɃɃˈ0˃˃* Welcome to the Sorcim program of CHASE...#, The object of this two player program is to#, avoid ea   "*Bd cEBB 2bH2bQ˃˃˃˃˃˃˃˃H2x=/! [ "$&(*,.02dicate your machine speed, 2 or 4(MHz)#GɃɃϘ TIE game. #qɃ7Ƀ˃ User #Ƀ  won.#5Ƀ˃ User #Ƀ  won.# Total number of steps : #ch other and the walls while moving#& your object around the inscribed box.#4 Player one (+) uses e,x s,f for up,down left,right# Player two (x) uses 8,2 4,6#0 Please in