[ 53280,0:53281,0:646,(162):"":" USE LYNX TO DISSOLVE THIS FILE":10 1 LYNX IX BY WILL CORLEY 5 COMPIL-PATCH.FMT 21 S 158 NEWSHELL.ARC 145 P 255 RSHELL.DOC 6 S 91 LIBRARY.I 9 S 45 CRT.I 3 S .IN 10 .RM 70 .SP 20 .CE 8 OWER MODS Y: AN ENDIKSEN 3387 ILLIAMS VE ALEM, 97303 () -INK: AN15 ODIFICATION DATE: 04/08/1989 .M1 0 .BP .FO/ COMPILER PATCH/-INK: AN15/AGE: # .CE 1 ISTORY OF MODIFICATIONS .NF 04/05/1989: .FI .IN +5 HANGED COMPILER INPUT ROUTINE TO CALL AND AT SAME TIME, SAVING TIME. .IN -5 .NF 04/05/1989: .FI .IN +5 HANGED COMPILER INPUT ROUTINE TO STOP CALLING ON EVERY INPUT BYTE. ROVIDED 25% SPEED UP ON AVERAGE SOURCE FILE. .IN -5 .NF 04/06/1989: .FI .IN +5 HANGED COMPILER OPEN ROUTINE TO CORRECT BUG IN INPUT ROUTINE. DDED CALL TO BEFORE OPENING NEW FILE. EEDED FOR MY BURST 64 . .IN -5 .NF 04/07/1989: .FI .IN +5 HANGED COMPILER INPUT ROUTINE TO BE JUST A LITTLE BIT FASTER. ERHAPS 1% AT MOST. ARELY WORTH IT! .IN -5 .CE 1 ISCLAIMER NDER NO CIRCUMSTANCES SHALL THE AUTHOR OF THESE MODIFICATIONS BE HELD RESPONSABLE FOR ANY DATA THAT MAY BE LOST. HE ROUTINES HAVE BEEN THOURLY TESTED AND APPEAR TO BE IN PERFECT WORKING ORDER. HIS IS NOT A RELEASE FROM ROLINE OR PINNAKER. HESE ROUTINES ARE NOT TO BE USED IN A COMERCIAL SETTING WITH OUT FIRST SENDING THE AUTHOR A $50 CONTRIBUTION FOR HIS PROGRAMING EFFORTS. .CE 1 HAREARE HIS SOFTWARE PATCH IS RELEASED TO HAREARE. $5 CONTRIBUTION IS REQUESTED IF YOU USE THE RESULT OF THIS PATCH FOR ANY EXTENDED LENGHT OF TIME. F YOU CAN'T SEND $5, THEN ANY SUPPORT TO THE AUTHOR WOULD BE GLADLY ACCEPTED. .CE 1 NSTRUCTIONS IND YOUR FAVORITE MONITOR AND LOAD IT UP. OCATE A COPY OF THE OWER COMPILER. OAD IT INTO MEMORY. YPE IN THE CHANGES INDICATED IN THE LISTS EXACTLY AS LISTED. ERIFY YOUR WORK! CCURACY IS A . NCE YOU HAVE ALL THE CHANGED ENTERED, IT IS SUGGESTED THAT YOU GO THROUGH THEM AND DOUBLE CHECK THAT THEY ARE CORRECT. AVE THE COMPILER BACK TO DISK USING THE MEMORY RANGE $2000-$7 (MY MONITOR USES 'S"COMPILER",08,2000,7ACD'). EST THE COMPILER. OMPILE ANY SOURCE FILE THAT HAS AN INCLUDE STATMENT IN IT. HE CHANGES AS IMPLEMENTED EFFECT ONLY THE INPUT ROUTINES OF THE COMPILER AND NOTHING ELSE. IT BACK AND ENJOY 'ALMOST' INCREDABLE SPEED FROM YOUR 'NEW' OWER COMPILER. .M1 3 .BP .NF ; PATCH CHRIN 214F 4C 55 21 JMP $2155 ; MAKES CHRIN DO CHROUT ALSO ; PATCH OPEN 2179 20 CC FF JSR $FFCC ; CLRCHN (NEEDED BY MY FAST ; ) 217C 20 C0 FF JSR $FFC0 ; OPEN FILE 217F A5 BA LDA $BA ; DEVICE THAT OPEN WAS ON 2181 8D 63 02 STA $0263 ; SET AS CMD CHANNEL DEVICE 2184 A2 0F LDX #$0F ; SETUP FOR INPUT 2186 20 C6 FF JSR $FFC6 2189 A0 00 LDY #$00 ; INPUT LINE INTO BUFFER 218B 20 CF FF JSR $FFCF 218E 99 31 7C STA $7C31,Y 2191 C8 INY 2192 C9 0D CMP #$0D ; DONE ON '\R' 2194 D0 F5 BNE $218B 2196 A9 00 LDA #$00 ; REPLACE '\R' WITH 2198 99 31 7C STA $7C31,Y 219B 20 CC FF JSR $FFCC ; CLRCHN 219E AD 31 7C LDA $7C31 ; CHECK ERROR NUMBER 21A1 0D 32 7C ORA $7C32 21A4 C9 30 CMP #$30 ; != THEN ERROR 21A6 D0 04 BNE $21AC 21A8 18 CLC ; NO ERRORS, RETURN 21A9 4C 2D 21 JMP $212D 21AC 38 SEC ; ERROR, GET MESSAGE POINTER 21AD A2 31 LDX #$31 ; AND RETURN 21AF A0 7C LDY #$7C 21B1 4C 2D 21 JMP $212D 21B4 EA NOP ; EXTRA SPACE ; COMPILER ROUTINE FOR CHRIN 3BD7 AE 03 56 LDX $5603 ; CURRENT CHANNEL NUMBER 3BDA BD 2E 3C LDA $3C2E,X ; CHECK CHANNEL 3BDD 29 40 AND #$40 ; ONLY FLAG 3BDF F0 0F BEQ $3BF0 ; NOT , GET NEXT BYTE 3BE1 A9 00 LDA #$00 ; FLAG FOR END OF INPUT 3BE3 E0 02 CPX #$02 ; IS END OF ROOT FILE? 3BE5 F0 25 BEQ $3C0C ; YES, TERMINATE TEXT 3BE7 8A TXA ; CHANNEL NUMBER TO . 3BE8 20 5B 21 JSR $215B ; AND CLOSE 3BEB CE 03 56 DEC $5603 ; GOTO NEXT CHANNEL NUMBER 3BEE D0 E7 BNE $3BD7 ; RESTART LOOP 3BF0 EC 2D 3C CPX $3C2D ; IS THIS CHANNEL ALREADY 3BF3 F0 0D BEQ $3C02 ; TALKING TO US? 3BF5 20 37 21 JSR $2137 ; NO, DO CHKIN . 3BF8 A9 5D LDA #$5D ; FLAG FOR UNABLE TO CHKIN 3BFA AE 03 56 LDX $5603 ; CURRENT CHANNEL NUMBER 3BFD B0 0D BCS $3C0C ; ERROR, PUT ERROR FLAG 3BFF 8E 2D 3C STX $3C2D ; FLAG 'CURRENTLY TALKING' 3C02 20 49 21 JSR $2149 ; GET INPUT BYTE 3C05 A5 90 LDA $90 ; GET TO CHANNEL 3C07 9D 2E 3C STA $3C2E,X 3C0A A5 A4 LDA $A4 ; SYSTEM STORAGE OF INPUT CHAR 3C0C AA TAX ; TEMP STORE IN . 3C0D A0 00 LDY #$00 ; STORE IT ($40) 3C0F 91 40 STA ($40),Y 3C11 E6 3E INC $3E ; INC POINTER $3/ 3C13 D0 08 BNE $3C1D 3C15 E6 3F INC $3F 3C17 A5 3F LDA $3F ; (AND ROUND POINTER) 3C19 29 F3 AND #$F3 3C1B 85 3F STA $3F 3C1D E6 40 INC $40 ; INC POINTER $40/1 3C1F D0 08 BNE $3C29 3C21 E6 41 INC $41 3C23 A5 41 LDA $41 ; (AND ROUND POINTER) 3C25 29 F3 AND #$F3 3C27 85 41 STA $41 3C29 8A TXA ; RESTORE . 3C2A 4C D0 3B JMP $3BD0 ; FINISH UP 3C2D 00 BRK ; DATA: CURRENT TALKER ; 3C2E/E = STORAGE: ./. ; 3C30/40 = STORAGE: FILE TABLE $3F 3C17 A5 3F LDA $3F ; (AND ROUND POINTER) 3C19 29 F3 AND #$F3 3C1B 85 3F $S SHELLMAIN.A!F@Q2d($80hB`%!@ yJQ!c!A*!T'H$Ȓ'B J8)њ!I(z#H:ab  1oݨ%ڶo4xJ)T'y @`BtY#X,s*SB4(Jo$i %Ow1D'ShrėG^8K-M$`„Ep`Ć3 LN/&%fR&d.s(tȠfR;5b !rq 0$0jry0rN(H$O /#e-̱ʌt,Ĝt,3ܰV3%t"0"bvʋXA 6$Ģnr(9:m3Q #!D̶tJGtH~A5-.)bIC *2Dᡡ 2,מT6AX",r +0  4N;=r p2:% 2DC*!8v'F[>rU100kø[M5Zk*|f r刂p@gu4&Р&zA:JHǛy9,r!s^ L𚡤R*n'! u]I ȷ}C 6ޑ M%\MH>H#Bub ֥ދʕ%Tyr=CATj(Nȩ=~TC8ݒ „aH!tL 8nj(65  0zBД0Z34 FNNފ'vB46PA"6lV@r00 [ 9KqL`JI .겻DAXbG K^:ui!|HS2J &)A5!@*(6 `2#aʛ4\7 PF &BSǽ@U \];PxjycK8pCȣIJ]CZrU}+gR T ·~}ú#K<(rJC\ aB2~f_j."O 8$|`E\r>~bR`HZ"4Xx+~p@LT,vuҒ9qH):k "Q%RbԮVɿkT.R)Yh,r e)G%b@`mR dFp(<(q<"O̡ʾARqKB8!2A hi!D=z`G{F*RZnv@GVۍlg-w ߵ;vNOyw%(KYVMoz8 qtu'UܫA)0Cy)88Pǡ O!Q(AA / P:{_ mmoG;T`F57Aѡ icx5Q ?P#L`?!rS&1KPg4t v@C(I rWxZe` Fր,n׸"*n9ny"M!AQE)e OS#„%JP N|:0"f)y ݍ` }#d\)H`M] RH"Gu?Ppn6w*4f.,V´-*wwyLfVXn2(aPF\nPH҇ r-/х0P+*F]kSawf&0 bP8"נ.0B'?bjI`H wFe|Vj)ׁu`njbC8@ G*Њ !,F %^<  7A rhuE:cx]%,ew\=?+ f@d;}زnp{b?/}4A~4l6ρ'Wl1Az;X²zۚQl..w/W쿮_v7%³"b&YLNx}>.R-X␊(R Ic&X +m#i<"aʁ+ zS;!gS09ꎍب;.QY2z"(S(GhoX뫕k 8dv1[.s1Rh2, m  ٫Lh5O$G!jm[~!+$А58F:H]ҵurH9Q&"<. < ( * h: 51 #mUI#/ZGp(5ɅK%&?{0a{;{⅌2iڸ#/bʂXPSf(] $c%,.0E[R6f8|Ef2kWz;eUG'gHo1'鐱;&wzڪ@ t!#MGY IOn|e,H(! 2vz SB#;:nYjn:P.i'hn_V[WJ먛3%6!vzt~yI\C]\04d2LF%X"#g48*!:k1Sz!赡ȃ'P$?b -ɻ\x.%\i+,JւR;*ol}bLD!0?ry-ґDj_vWЍ10g\gbPT'lEIgKg{VY'nIdvZb{MR^%["H1rmV%g Vw']4?%$Tz=eAMTծ5sivi'lI)$|*OE 3ky3qeg&VTt{QbiN258~Q4N-4N^ƢwxPc<{.!yD6JRNpPq5)J*77zC4+.ضz53y"NZ&FT& #c]4P9O1QsPp$SGW;sK"zՂP`s_':Z'^: |m` !P|1mYnR/rSz#0m[zk:v1-S _ _zwC[$NZE[UGO;st3rAeqW/wfm$w#w!\O鼯uxKb+fFF Kt;/SataC7E03I1(xqQOP8ȁF %30b9՘pq_EDhR)_Wh U&r Y[@mtkw{r Suո E[e۴oCPpw?bw pV0А(%H(ajh9q:0m!~sW: ]m(J8);y:.V (Ӥ486ydʙ# a(3!/HvOg>i)z>Ik7QMN~X'85b{W"2#No$6.,s.#Ȕ*Pz&9)1"T 4Q !9)˪8GXގ"")٢qkbk"qPث 'r2& P*cq Y6) z9Qr ,ezPL.b!MpVU/vyNw8X Ot b*+Ρb1M# ,1r!nFS;+㣐;2Q "M9pW1(yi/- ז3JOiJ!mx3 ai"mF(%,:8  MXzRv-H>>l(F:Z-:Շ\"W[ BFo[UIk9Np$/:Q,R~NdVAv@cJ6h lbGO!ؖX#5u\r1Z,|,+f<[l@@gu ,u*n"WHR*(d]X0*QL "dؗdmu[. 5 b +z^8ap\U8J6.-T˞ BҲ ڗʮ0+ a.#,*;le."JB CPB}1JD C0a"E$"w7(ܻxE'7#z>0~'R(_8ӜWJȫOfhVC<5*m}Mm!s}JOg -,脈 T2 ^?,݄B-+hB[TB @K Ƚˈx 0 Tf!L*ԗrG2s(-SяCvC`[ SBp\7؛J; w{K^+71m ŀ+ŒЦ}C5La74Gވ #js7}Hd!J,DO y=$u?bD%z#=7^sH7o%D? %}n5 Tf(A@)O(H7k$+Tc6T) M2@ rZ;d"$LK&JcSh Ɉ!yf2YD22$C)c"O3rf='لJ!r;*+^ C(QMQ@" 'K3GE.xN|)?q-%'%.)rT(,BJW,v8P VyT|)MU|ULp!+rP,"T!dhR^jxM)kRbK&ynsRZUI%XxgU Xս3S*@Sjd,uF\qlL*R-$.q2D\~B0 aצV1J-'T톖 p~_ \Zy`IvZ!ӻ`IysA"Կg(X+l`>5y}oFU0VM2ݮݻW6ͽ1!TimFQ̝k(G0]cUu#"h=Sռ?m#p!Z炑R v;Uޤ9}Rb{{CcIUF5)#Q&@A tشlˮO;q0_+oØd?$ g1Q6KI1-0rp99F"3A&W%x a;9X̶U26; ٘1M vs* ՝o:O @g;]=0;=u!'@[nwl9\A6`=GwzyUe"`v]ۼdFؠh=^3wHW> O'=Ky׌z:;jD䃚Q]9F=6;XDoeӬ|OoSB;=g"{¬>1~*=y\9֬/uͳ"rs'{ 8yz0yK8;kG؁ohZDotPS[p h| 12;Ȅtk Ǜwg8) J)a0 rbcVi@zt;mʉ[)hZ"0pR>3'|8Rh8ф!P9_GIYoqȄ|4Ec4; 03P(vzDhIṡkP1(#e8ĺ9}x/Dmx+b񜡹vkqkh܈m󡾀 G8A~8HBİHj&P%VPǬYsy0&Ittzſ ʧx?4 ͡'@s$ibK^$U% Zh\7pT Ę0y78^zƉG &/z!UB.IRzx^y*;zkƘM:b*)$c]i [4 L&K]  1m"BpX`&2j;u|;(D80\ SHL7Ph=~1v{::E" "k>^'_.EPGz*(.6ɟ0Fd-e.&E}V!?hH!+(,1M6ap29#Hp"雥#EJF?]A&ƂTr#%i 0!&f=R!'(5! JQbIVfqQ+zd>{FΥ=a +qS$12$H: Ѓ0dyhhSǖfl_DE`skNǎ!l SDOLOAD.A!F@Q2d($80hB`%!@ yJQ!c!A*!T'H$Ȓ'B J8)њ!I(z#H:ab  1oݨ%ڶo4xJ)T'y @`BtY#X,s*SB4(Jo$i %Ow1D'ShrėG^8K-M$`„Ep`Ć3 LN/&%fR&d.s(ttmݔx'4٥@AN(!GCVYC ( cٱ bY#nV[ #EB4\(Nt1sH73B2Oӱ~wW4@;t*},4.B q6t7}#:jeR޶e"Rd5o^B 9 z/[yC #0 hԆ,虲Ip؁9ֆ*qå C#0yYm7 \wun})t'zعMpzg}|{#.B# Ƚ}Ye^;N]mlr62c1TQ,lSID(2(s<6!*k-,&j :Q["!u}A;*$ꆌ(6ςRP]Kvs 4B=!qўA/E&r2;GbQMW#LgFEZ RuC"q FkP;Vzl԰B>T_k0Ys6 UnA1P)9H T2PO-`Ûh5ZI"H)ґftE%[(b\ Xs A[O9ɏw xR/|gLi=A B= mG#sq>⩆x `.`$;Q3@8:4Q[ 蓍 Way&TĢ3 ɐ,4_qJ(($ (q鬃@jRZMSD~HYd Xg̾-NPW+Dr]`+K S9lpP A!D0Y t#k0`H_Z}Qsm3v‹חP(@ mәyȴ7gu( 2HÀ ,8&O#O*e6)lgN4*Mkt30 s[,F%``ΧwS|vʵ{ \Sy dS꤀TDiֈޮwCxl7:4\p,3&5Du{ PX˹jFkBEЪ)d JqtvA5R\ky:@\fP;Nm= }?tV;>mTGǜݳ)כ`}`Az,̌Fے !-i5a7ɱ C"V@ ;l!!VAeX@ch构˩ Ȯq,yiqtSCpoʬyҀH"S SRCHCMD.A!F@Q2d($80hB`%!@ yJQ!c!A*!T'H$Ȓ'B J8)њ!I(z#H:ab  1oݨ%ڶo4xJ)T'y @`BtY#X,s*SB4(Jo$i %Ow1D'ShrėG^8K-M$`„Ep`Ć3 LN/&%fR&d.s(t(>םf] n|nHBg>q;ʊ",ϟ ͙Ȝwfy 2FR7E >h6SGD 03RIa(QBQj$n- !)d@+<"9-R1UÂR #I`Vp*єTt 0@(&12mm(P,A" t 6d@X +A JDrS,9h+8ԣw ͈x:+[Iؓ:*rfqO1n(CGvf j3@#N}l3B3 r D8H%6i6s e+ 6Ox@`M 0`: )΂g:)͊SEc,ibfe1)@@s,4 @j\FuJ^<4ѧMUZhCYe0Tɛɏٜr31hdb*,CAT:(W5YUSUlL]ځŐGmh66|jzԩ.<{Pz6>mt Y5<KsjVu׺I֫vu :SK1VqA24v7~Y&9+F6 Y\fP@kLӓ=Ed]og#hujk-ƍbH!u 3JׇI2Ka=< o V"w i zo'$K^;4:LBi ຍ&{>0ui(!?x С_;x,m8: ;zRI[9F]g,R7.uW!pB`ȁB%;X$ S@e%HA-ɒz ل`hc(y `JGj0lTR*C1thdT:c6k 5p@i3`1!zWs7DtWbPDЩKy Y_:gr`M{ gN]z>^fzc_tü?ޓz U]c ?cnJ_=j2}x>3iLH螜F- @ Ŝ|SGne.ܛ  PKwC)N__ (40I  0H >R $&9oPBz_؏9>0t|QX/f0(jKK{H6#/ b !hb7s 090dd:' M<6y3!'c:l\<bS"]!OY q()c9UP( Q!DFKȁM'}Q#!;bdk e[ef[N8zeMfˬlb1'GW L%MO1d0ioYؐt>)vqJڿ/i` ;PTsH6Rپdf[E`Ie;ieS\^)9x6THIVV.Tfv;JfTzD5f%A^Z%apu'uFcTZUd&W抝Z;&b% 69s;Pj'K0KpyE5?[D'9}֞|i95?$R^)%Ue檭ByM.wNX Rw52*fg>'oفOt#wWsZ׋U#zڂ6bձ.6=544b5B#eSb756-MsV^[ ѧf99cFWE˱yX824 #]iBSK|S8-@qSE;z]J,a5ZK! +r9 # (A׸hǶ׫@D7ѓJchd"! ho7hvg7_Qu%;Egҳ]ʕck@I=y17.@tdB_Cl kO-Dw_ߋq&f*u9 hK`hu)%gZ=bl҇8jM 0+dU%JIahQ/GA?V%y` W}'(O^ u@UbH_V<` {X  STZ‰ˁVƨpc_ ; 0Qg 7ȏPFʈDu 0G$ >A!PkYoxxwr"{xOLEDuyYw! I]N=Mdrjlyxl4$)Kַ<ȍE?MX[U紖3w}`MEX2+s;4# ">Z 7icVFRr* ˖+XU( Hjv,)t j <29H&W MPS"3TL"B(N(Zw-56:-TB ΊP&43tBAR'[9沩kB/ rRiDњ5y Yp-L&2x 1 XTjϼ.h!2 _`#1IBG=#; 'l`gCn*bK'yBW#в>.2ۈ) #F*۲w<Բt!|ᥭ>m ([vM9tcA@={܉7?@u s.`5IlNp@0 4a%~ $)( Ӟ$!JCB!C"r>r IE#I9* ;( B4 Z`/C@cP(4s-Td:*bu.JPDQ@,TF0B/D{ҽAS,@<24)JEȡӛޔw3ɲPc8zDz P(Bŝ"2Un-CNbWTFI-Q7ee!f dOYXa*>{1,, Q(*^Ȕۈ&&ć9 [))n*œ,N5|V7, TUD !gLSӖtU =`(KJ E^aI !aUUy\, 53?oaG)0c7ʛmbti58n#'կxYtUA-O/(JLj-E3 u^m1r"* aɪ܉SEqS. uSI85e_|6Cjk.5$u [YTcNǢ&[Ku>g|׭fB#Q4 ɑH͌u)&)%Oeof$9ݖKbjzN/6o k@4<=XHY5 g3DY ~w~{ͤXMzY1i;ڹKwVrhቶʞiSt8uF0K"|| >2`"yʬ%GY֭fy'W^Kq:#pJN V DAL@B*P%J}-( akqR A(a@@guT:"r()cmel|U ku#c(;6*"gYB] ,u')0$"Ss T؃u(Me~Ⱥf#6H*y;#>jF$j=0RrȦ" :JH2ڴ98jfx3o/ԣO7CK̒c= 57,r'ȦNfJU'(*[$7#\q}T> bs50 3'ГrS C64KERNAL.A!Ɔi$Qb$ɑB<9` O APBCHIJ%(+N&%L桔D7't,&ZtdHRB8A(Y*)iU (lQ %"Q6Gh:݉!2Aj)&&BTd'׮D&"Kb* H, -[S C PITɑ\Фm# j(BC+ȒҖܕLYN %x !F VR{m~}C0~W"X-"0(*Ay"#l " {( ""0(*t !#*^ XbpD:ꅈPh"">hV!{ȇG\+1^I# ~BLkIlb&A*礔ilhaZ")Fh%PAVZ"B41ۂ ҉Eg)=į;Z~fW^~Ne?;0F8չN^7{N5DJfs0T dS SHELLVAR.A!F@Q2d($80hB`%!@ yJQ!c!A*!T'H$Ȓ'B J8)њ!I(z#H:ab  1oݨ%ڶo4xJ)T'y @`BtY#X,s*SB4(Jo$i %Ow1D'ShrėG^8K-M$`„Ep`Ć3 LN/&%fR&d.s(t $XXD4bHbq \J䛿g1;H "A/!HljGHC jVq%@Cц,ES@ s#4]tzR7*0UIBEA F١qq{-Wz R ҟj$`;eW^lbPW9HrU(ěِns1Ąxa\0v>> QA.LOYd*,9LѵlLZآ. }"X2E$ :.q`B x10-M'-VP+T(>trM hԢ֜}3*CdVLG^$ӄnE:iCc (QFͺ y5 A.bH [_ s&)';{]nPPՆp&,+?RAxD a%=0ijz :; _+୅xE# q #(x.P,g5?Мt9} !W`[r>s&8_X !KW`v08Ѯ1Y;8e) 3{2+jzy K5)ZhSll+2"Y㜌ȚERɏL6 [XiKHJY]Bp;GgF0EEG\DEkj"JN!;{M(.F9! ! .!{0;%ңy;RFQ*G%ƚRLjZEUGGi~GxyD|Tm\5bXp)ZO*r\ٯ!'ŏ`fhZ a*Y׆cʨ>EW663'1pDIq9g`R7`c V' 'S!;)h-(1#;P ?Qd:*W6JIee42/'ՀJVggce9%E2"E'gy σH]dSֳ9*Tj"挹dHJXޒ~a!;A1i 9R0gMFnzN;OꚱFe^gmB6 sfd* qtEV\V!J%U$-Rn~=~*UVR;edEqmesTHppZ(kPt1dX)k;=0ڳgSRM Mi&pr1iٕyI_uvOVKH96Ж(|y*)21(B jTJWx1UY5N:! 7j';"vS LINKNEWCC.CMD!P"Q Ll .<2$ɑ=xƆ4QJA(PXd&JZڸJB^H! Y&\.%S LINKNEWCC.E!P"Q L%0`D0Ȑ$G:|̘C&?alXHD tI# K DQ˘ A O b$C4ADq *L%PCSTART!A` xĐED2 EQr@+D1B:.dS&eԈ (xD# @9L1X'. &̸B" 'I.)!$ABdR1HAX%F& zb*l 2 KJs2$iE@ YDHR&$rrJAN*J-6\GQ"* RB"•l0#8L"PH2D!:H ZxD:PUM'PXIšYb[OL(+0\+!PJHL4CPdbEFLJT jp2$ts=/\SO 4ӈ&dh@SȄ5k[54Տ$HXR- bК5Р@94xtМg5@e(4>B$(NfȵEP0)24x ܕ!b݁+oF 4 Q 4)T;-@t TIG4A,@3?ﷂ۹Q< `جF/X58R 'NjJaP=06vP3leB*PXvpEB$X͌(,  R(C>t q@((BOpRq b" Qnf\ qApԅ ! `! NF>KT"LcCFHNZlC'S ,7! BBhv/MkF4a] i= /_uFI? 2r\An]w 6:m^A*PGFH FBp :fN=h#T A PEk)0L`iJRsnj)ǐ,(r6T= PNEWSHELL!A <0`02@A*h2c8a0c*( 3X9@%(!Ofb}C7ejZETLla ŖT Ⰻ(Elbk)/J,WF, Y[P cPPI%@!J%VmL`=@2%x4I[[|fm$#3Ea,TD pTbUs`2=qR XG ?s!#HPJ1  `l  `<$,F)Ģ &`dpP 1ƌ0ţci4: SJ;Q0EH7pEQhJqI U@ DR$d,%wYqD,p<`<Av ?J;t!T;#Ƞ0r(%1:1 Ă$.1I3  @@$pFN Ԡ2  `Ss @P4 QDaMt5 ED gP2  r@1@<ߕ<=P=U{Dڄ g@R eZ@0 4 @a0A ȣ(r Y#$2 ?LL5t!A(JQ IBI,<:   QX@&<2!!4N@;Bti< 0? P(``,() wmaԝFC&3ܜC˘@~%YR،% `QDMq7@b\j5׳0?ԅ<@ ,u|@p=nؑEL! TE%T t<@;}1} pj2@f0A+^1(SAP @PPn>8.6.VU; 9P2P0XΊX'/PTab?A TC#@!Ȏц#Cr ~E0E49e@ƁkJCr1 FP!> ptPv cވEP`ZQK_ 0q=Jo>Uc.W,4Q(xXN* ( ԁQfT!l J (T:@z8@ A"ڟ w2OhP. d (A0ZaTX@~:i@U/ "H"r `| E@&dAD~@9 |@E #;$p$!7㚋B BĻ C 9  2 ¤-@rP.>,ooB"p)IAm` 0*"'"t;xӟą bn2#Ȱ"Ȏo1'(㺆j ,(! 2 jx(bʪ3¥8nW1HyjgNԨڅ K(dŔR渎HN$ZLm[ZPΦ(br";UaɊAp^:52^Y%i}d1_ (xOKaydriWĘȣ`C_J{( YEǞj[(;25AgpB!!꼋&w1QAnTNKcC62{ꦿt\%JN ! J˒*hHcb)h/3 uթ 0ꠙu"BS``EJdG8IZ~,CbBDA 'elbu5 b5,kQ y r]v 3 \ib&\69Yj:b HTjE IUI"@y lS;;ENvG,^S˵Bl1` q P;xaH+I;DrhBD(&`ԡ49P sh_BT HjR[2Hs7!xfJMD0(M$# JՔSХ D%9$ė%яΐOƫ@gq`10šwC@c6Y|eAAdgAT2uޠ"G0CJ1r! ZU"$fK@vsȃd󭪭xT&DDO)PŐM\kCf*DDAY=d#1e #ssH"/sz LVgf#CaXK!J?V͜gvSj`KQ婳mIo`ۉA thY)dc6A3qhAHVyttdşkYF dCmb"Tux9UziXA FpDE(60װ:]捪 LI2NʧTd{/Lip/+ub-aLbR!dBssJc.O+[?El;>v Q{L% ެE&ޠ¥i(n ZgP^U'zKҭ>d, u@, j”%(gc%ww';Q,aNicQ}S 67apbM'}Rx8I+ez "L W5 h t }㦷9o|f! 5G\]YJ-%zk(6B`ξ@ޝG+v`إL ٕ$!={X Fo bhO[cOpCX> H"I4t}dHBުnfȪyґ! Y[M5<$#Lì<~/ۃUBFD q3i)*FHH+b2?Rߩ##2>b Fr s!bx vQ=Pp2a*S.i=~Γ/ўY%Ih8[1K`s$)zr22ɠӺ4ub.6k.+8y\-9œn{'<;b*2# 6oXA,nc*  z_VǷkB0 *r &7e>0$s h?ɇlSȹ+ <~K`'%As.`}`[x)bq#:;9Qh !_te\7 HD%Z5ׄ_dD;Ħ>Rq)"5ң0[km! b.b)"\/= U,ikb(xѨWz=H{#y3,< jb oS9\l+(&a ).MśpR?(Dh`/;9cˠJ)8+㊾H"Р0H4=3[^-3P'Y㏾KlUVrh."HO0!mȎ!&"Sac#{91 E؅zneZ93P8",/`(Y1H2L8Fojc& 7(lf˞0P.ZD^$a:jQ}`!4Hb@[ J"UzQI@ѐ b(J?(r9ayɓ؆f%]W21#`) T2h5aT5:{),T4YNhU\QC%Zr> L DRIAN EPPER VERSION. OU WILL ALSO NEED THE FILES FROM . IF YOU WANT TO CHANGE ANY OF THE DEFAULTS AND RE-ASSEMBLE THE NEW SHELL, OR IF YOU WANT(* LIBRARY OF SOURCE EXTENSIONS FOR THE ADVANCED KYAN PASCAL COMPILER. *) FUNCTION GETKEY:CHAR; BEGIN #A TXA PHA WAIT JSR $FFE4 ; GETIN BEQ WAIT LDY #3 STA (SP),Y PLA TAX # END; (* GETKEY *) (* TRUE IF ANY KEY PRESSED FALSE IF NO KEY PRESSED *) FUNCTION ANYKEY:BOOLEAN; BEGIN #A TXA PHA JSR $FFE4; GETIN BEQ ANY1; FALSE LDA #1; TRUE ANY1 LDY #3 STA (SP),Y PLA TAX # END; (* ANYKEY *) (* SET CURSOR TO SCREEN ROW/COL *) PROCEDURE SETCUR(X,Y:INTEGER); BEGIN #A TXA; SAVE POINTER PHA LDY #5 LDA (SP),Y CMP #25 BCS CUREND; ROW > 24 TAX DEY DEY LDA (SP),Y CMP #40 BCS CUREND; COL > 39 TAY CLC; SET CURSOR POSITION JSR $FFF0; PLOT CUREND PLA; RESTORE POINTER TAX # END; (* SETCUR *) (* CONST MAXSTR AND TYPE STRING MUST BE DEFINED IN USING PROGRAM *) FUNCTION LEN(LSTR:STRING):INTEGER; VAR LCH:CHAR; BEGIN LCH:=CHR(MAXSTR); #A TXA PHA LDY #3 LDA (SP),Y; MAXSTR TAX ADC #4 TAY; END OF STRING CLC LENLP LDA (SP),Y CMP #32; FIND NON-SPACE CHAR BNE LEN1 DEX DEY JMP LENLP LEN1 TXA LDY #3 STA (SP),Y PLA TAX # LEN:=ORD(LCH) END; (* LEN *) (* GENERATES A PSEUDO RANDOM NUMBER IN THE RANGE 0..255 WITHOUT REPEATING UNTIL ALL NUMBERS IN THE SET HAVE BEEN USED. THE VARIABLE X = THE SEED VALUE AND MUST BE INITIALIZED TO A NUMBER IN THE ABOVE RANGE BEFORE CALLING THIS FUNCTION. *) FUNCTION RND(VAR X:INTEGER):INTEGER; BEGIN X:=(125 * X + 767) MOD 256; RND:=X END; (* RND *) (* CENTERS A STRING OF LESS THAN 41 CHAR IN LENGTH ON A SCREEN ROW. TYPE STRING MUST BE DEFINED IN THE USING PROGRAM WITH FUNCTIONS LEN AND SETCUR INCLUDED. EXAMPLE: SETCUR(ROW,CENTER(STRING)); WRITELN(STRING); *) FUNCTION CENTER(CSTR:STRING):INTEGER; VAR CEN:INTEGER; BEGIN CEN:=LEN(CSTR); IF (CEN < 40) THEN CENTER:=(40 - CEN) DIV 2 ELSE CENTER:=0 END; (* CENTER *) LING THIS FUNCTION. *) FUNCTION RND(VAR X:INTEGER):INTEGER; BEGIN X:=(125 * X + 767) MOD 256; RND:=X END; (* RND *) (* CENTERS A STRING OF LESS THAN 41 CHAR IN LENGTH ON A SCREEN ROW. TYPE STRING MUST BE D(* CALL BY:CRT(ROW,COL,CHAR) *) PROCEDURE CRT(X,Y:INTEGER;CH:CHAR); BEGIN #A TXA; *** SAVE COMPILER POINTER PHA SEC; *** READ OLD CURSOR POSITION JSR $FFF0; PLOT TXA; *** SAVE OLD POSITION PHA TYA PHA LDY #6; *** PLOT NEW POSITION LDA (SP),Y; *** X POS TAX LDY #4 LDA (SP),Y; *** Y POS TAY CLC; *** SET NEW POSITION JSR $FFF0; PLOT LDY #3 LDA (SP),Y; CHR TO PRINT JSR $FFD2; CHROUT PLA; *** RESET OLD POSITION TAY PLA TAX CLC JSR $FFF0; PLOT PLA; *** RESET COMPILER uuuuuuuuuuuuuuuuu