@L}5 _$% l0$)$$Hȱ$ UhL" `e$$%`$%`  R@W!( L(1   Y I`  d  Ld M * @  $ % CC$$)%1 Udߥ$9%: !0 S$% DD˙`  }J)Lr d M * @  $ % CC$$)%1 Udߥ$9%: !0 S$%} DD˙`  }J)Lr J  ((  p L ()   J}L= ( L 0q A    IB JC;? D W } LL  ` W )LA!  ߰")-݆ p" } $G@LL 08`Q")<2Q0 -G$Ș݆ UL# ; p8(()(0ʥ)NQ` }$GȘ݆LU )L ݆ L GȘ ݆LL )W>Z   HH)H }p h  hyhy D L> L JJ    ! LA*` BF }7'8  M HN H` 8 Z  \LdJJ!"! GFE@F (!L }EE !E^ ^ E E7EȩEdE/EȩE  D } .L }  ;F d  ;?F7F? ( .   Z D LL d } . D  L    p  E` , d)  D L) 0BM݊L݉} ML  N݆ L NLML [ TEqEHȱEqEh 0Gȹ G} HLL GɛL  LFREE SECTORS G) *Gȩ GȽG GȌ*jj >G} C8jJ3j2CD( C202C ԠBX` N 1? l LlD:RAMDISK}.COMLu L1 L ;LHL  T`  `8  ɐ     `TU  } L ? .  t`GBJ ~DEHI B V0dV!}QDEHI VF9 ,0 ,0 s0hhL  L` H hDHEh"}DEL8HI4 0 HI,0 0  9 .G VLO#},0 L4*IJ`llD1:AUTORUN.SYSNEED MEM.SAV TO LOAD THIS FILE.D8:MEM.SAV J y08 B|DEHI$} V0 0`B;DEL`?<0LV` ʆ v s? F0Ξ05: [ BDEHI%} VY8 B V  @  /DE `E:D8:DUP.SYSERROR-SAVING USER MEMORY ON DISKTYPE Y TO &}STILL RUN DOS B;DE J  (` 9 V⪍ ઍ  -'}LLu ÝDEHILV 9 .l 9 .l  `` s$B BH(}I|DE V BLV nB,DE JLV B V BLVDEIʩ BꭝLu } 3E:}DISK OPERATING SYSTEM II VERSION COPYRIGHT 1984 ATARI CORP.A. DISK DIRECTORY I. FORMAT DISKB. RUN CARTRIDG*}E J. DUPLICATE DISKC. COPY FILE K. BINARY SAVED. DELETE FILE(S) L. BINARY LOADE. RENAME FILE M. RUN AT ADDRES+}SF. LOCK FILE N. CREATE MEM.SAVG. UNLOCK FILE O. DUPLICATE FILEH. WRITE DOS FILES P. FORMAT SINGLEL !N',}#"&))9(&*)/h)''-&؆莟R'S  vL/ˢ L }Insert DOS 2.0s, type Y Λx -}DEfHI 1莏#q! @ y0ɛ8A0,' ȅ 1 1ild! 1L!NO SUCH ITEMSELECT.} ITEM OR FOR MENU! 0 .z:*{}.|{ 1 0 0JB 18L%|DL/}%DIRECTORY--SEARCH SPEC,LIST FILE?[# 0 0 &|D3" 1L!NOT A DISK FILEN !B 1L!E# 1 !BD0}ED:}:1BJ|DE 1DEBHI 1 h0ߢ 0.1}  0?詛 1 y0YЛ 1 ;#L" ;#L! BL1TYPE "Y" TO DELETE...DELETE FILE SPEC2}COPY--FROM, TO?OPTION NOT ALLOWED697 FREE SECTORS COPYING---D8:COPY32.COMl# 0|D .L/%#3}##JB|DE 1BHID#E 1#0: B 1L!#͑### B 1#c$0SY4}S1}:## # # .#Ƚ# # 𩛙## 1,#PD#ELJ- <.BJD#E 5}1 1HH 0hh|DL%1}:̳# L% #D#EL% 1 0 . .0O% 1L!WILD CARDS NOT A6}LLOWED IN DESTINATION 0 <.|K}N 2 FORMAT. t* 5) 1L!`) 0NΞ 0 L1) 1 L!BAD LOAD FILELOAD FROM WHAT FILE?) 0 ?}0#B 1L!WHAT FILE TO LOCK?) 0 0$B 1L!WHAT FILE TO UNLOCK?DUP DISK-SOURCE,DEST DRIVES?TYPE "Y" IF OK TO US@}E PROGRAM AREACAUTION: A "Y" INVALIDATES MEM.SAV.FE! +L1   `*  70 2 2A} 0.* 1 y0 0)INSERT BOTH DISKS, TYPE RETURN^, 1 y038逍 N, 1L! ,B}C, t*  Lx+, 0 ^, 1 y0 , ,0,0 ,L+ ,I0 ,Vǭ0C}Ξ, 0 }, 1 y0C,ШC, 0K'!" H H 'h h Lx+!EF 5L1L!D,I,HhD}` NOT ENOUGH ROOMINSERT SOURCE DISK,TYPE RETURNINSERT DESTINATION DISK,TYPE RETURNE}`  `8 rL1`-* 1P* 1 y0Y`hhL!NAME OF FILE TO MOVE?- 0 0|DL% <.F},^ 1 70 0 .@L# .BJ 1  DEHIB V L1 ,} 1 70,L.  G}JB|,#P#DE 1 HI BDEHHII 1 B 1 ,^ 1 70,0La- B V,#PH},^ 1 70 0L#L!-* 1P* 1 y0Yj383}mm ݭI}}`8}``|* ? ɛ,`|:-)| / 1L!`DESTINATION CANT BE DOJ}S.SYS0 0H{ 24Δ 28/L!/) 2 Π 2 0 ξK}hAΞB,0 J 1 BDEHI,HÝDE 1HIHIDELSAVE-GIVE L}FILE,START,END(,INIT,RUN)O S0 1`BDEPHI V` S0H 1 L!M}0 0 1L~0`PLEASE TYPE 1 LETTER,0`hhL! 70 1L0L<1 ,;ɛ7,"ɛ:ݦ1ݥN}A"D|ݤD|ȩ:|ȩ|ɛ,,(/+.ީ1 1,ɛ`轤{NAMEO} TOO LONG B VL!` L1I H1EΝDL1|mDiE` V0`8d/8 i:222 1 LP}!ERROR- 144ɛ+,' 20*.. өr2 1``2TOO MANY DIGITSINVALID HEXAQ}DECIMAL PARAMETER800 0 8 00`,0'D800 H,ɛh`2L1NEED D1 THRU D8uR} ECIMAL PARAMETER800 0 8 00`,0'D800 H,ɛh`2L1NEED D1 THRU D8uK?BLg?Can't find D1:ENGINE.OBJ @ VYD?EBJ V"ND?E BI Vl IHEDB VT}0­D?E?8HI V B VL,ace @(<3T.AUE.AC.A5E.ABOA&U}@sAXA|A4A||dA.7A /E&x@|/E, ||aA|XBFA||aA|ZBFA^B|OA|r"A GEf@V}dB|OA$;@|w"A IEf@tB|OA$;@ni$;@( XABOA=A1A ,, ,,,,,,!,',*,-,0,3,9,B,HW},T,W,Z,o,r,u,~,,,,,,,,,,,,,(fA$At${ArA$A( (rAfArrX}FA|r"AfABrOArA$A( BOAr@AnBRARA1A } The ACEC C Compiler Y} by John Palevich and Ralph WaldenCCCC%sCan't open: %sCan't open: %sPress a key to exit to DOScan't open %sZ}filename (or RETURN to exit)? niT ViT,0,n XiB 'E1T, 5E 9E OE SE AE KE EE CE =E +E -E }1T," [} QE ME^9E ;EijjxAE&ik~ EEjkU~&9jkU~&!jv$2jk~vp$jk~&Tj\}vp$jl~&ojvp$j l~&j]k$jl~&j$jlq~$i +Ej ;E+EYE+EIE]}A T RiRiViT&\kRin jRin J&PkRiRin :Ri ,,>, 1ERin H:kRin H&Hk1^}E> 1E1E2Rin Ri$j KE&jkl~ WE1TU~3T`UE, 1E&k1E"J&kh`WE,1E $wkhWE, h4lFAhr_}"A KEfk6l~ } missing closing bracketextern char int char int #include#defineCan't nest include filesHOpe`}n failure on include file(sU~&gl( |nzls~sz7E( (|H|ls~||z&ln a}l|zn l|zn  $l|1{ ||z6s|OA:sU~m,n :  f},,< ?E. ?E`z&Ko( sU~^os~$en( 3TUE,&uoEE&|o $psU~&owp$ps~&owg}p$ps~&oq$ps~os~&obUE*q SE$ps~os~& pbUEwq SE$ps~&$pdq SEh}$ps~6ps~&IpbUEt SE$ps~&dp:rp SE$ps~vpt~&pbUESrp SE$p t~&prpi} SE$pt~pt~&pbUE v SE$pt~&p$pp SESE  tU~p"t~ ^AE4tU~&qEE&q7t~j}$#qeo$qbAE (|Xi|=E|z|reor/ =E XiItU~uqr( |z|ܛreor/ =Ek} Xir( ( |Xi|=E|z||z|||rwqreo$reoNtU~ rTt~rprl}ܛr Xir/ =E|( `zGr/ (||gr( n/nܛ( (B'EH&rem}t~|'E .BZ&rn&r$r .$rjBrvt~n&rnܛ$rnܛ( ]must be consn}tant]illegal function or declaration%s(missing open paren)illegal argument name),expected commacharint wrong nuo}mber argsasmNeeded address*[,expected commachar int $(if(if while(while do switch(switch returnbreak;breakp} continuefor(for ;;missing semicolon$)missing final endelsewhiledo with no whileNo active whilesNo active whilesq}(||| |Xi|=E|z|||GyzIyzKyzNyU~ tVyU~&t\y~|z|r}&u|$9u|n%u|&/uyy~rryU~Luy~yU~ cuyU~&iu$u|z|rܛrs}eoyU~ uyU~ uyU~&u$unܛru&u$t&urܛnr Xirt}/ =E|( ( |Xi|=E|z||z||z||z|||yzyU~`vpryU~vpu}rrܛryU~vyzrܛreorܛr Xir/ =E|( yU~vy~ ((v}( (&w&w`z&w( yU~&-w$2w|H|Bwyz||z&wn ewJ&vwn  $w}wwzyU~&w|Sl&w$w|rrrr1{ $w$wyU~w( $v( ((&x&x`zx}&w( yU~& x$xhH| xyzhz&1xhzyU~&mx|Sl&exbx|>$jx$xy}~xJ&x$xhr=En{ =E~/ =E$x$wyU~x( $w( (T RiRiViT&CyRin z}yRin y| $ y| $+yRin $y| $+y| Ri[Rin Ri$x( ()$(defaultcase 'case' or 'd{}efault' expectedconstant needed:Missing colondefaultcase defaultcase $)(;;)):Missing colon*[,*[,(|}q~y`}~;z`z& z$;z|zu`n}U~8z$;z$y}z&Uzrr$\zr( q}}~}~xz3TUE, }~ }rOA}~ rU~z}~ }~ (TViJ&zrr~&z( n~}$z( (T,0,nXiJ&*{rr~&{( n$z( rz Ri&B{Ri ViT,0,Z&\{}~}Vi RiVir~Rin  Rin  Rin  Rin  Ri ,,< Vin ViRi rz Ri&{Ri XiT,}.Z&{~~Xi RiXir~Rin  Rin  Rin  Rin  Ri ,,< Xin XiRi q~3TUE,} Ab| 3TUE,~~ ^9E 0R9N: 'EB, .H&|-~~ 1E1Ef|'EDD 'EFF`1E*,$|} |&|'E . 'E 'EB|D~~$}'E . 3TUE, 3T, UE 3TUE,>}EE&3} C}~$}~ &}GEX}} EE KE 3Ei}GE 3E3T3E~f}3EAKE&} KE$} GE$} $C} ),);illegal symbol name%s already defined}see abovemissing bracketnot definedGLOBAL symbol table overflowlocal symbol table overflowtoo many active whilesno act}ive whiles~i~C}~$U~r~ ~~C}~ *N*p*****+f+++?3TOA 1E1EUE~$~^1E$~ }RA$~CrOA@ hdA UE WE3TUE,~|&^UE$~~3TUE,Ti&Ti 8h`WE,Ti ~~$Ti"h`}WE,~ 3TUE,"3TUE,nJ~3TUE,\h`WE,~ h`WE,~ $Mh`WE,~ $Ti'h`WE,~ 3T}UE,'3TUE,X~3TUE,\h`WE,~ h`WE,~ $h`WE,~ $Ti~&~ 1E&HWEhWE,1E}aA, WE$ 1E3TUE,~1EL:&$q^1E$Nh`WE,~ $k~$h`WE,~ $ hWE, UE 3ThaAn WE h}H|ȀyzC`5E*,-EnQ-EQ-E,haAn, -E~C`5E*,-EnQQ-E,3TUE,aA 1E-E1En, -E }-Eh>}k~ %s^ %smissing quotemissing apostrophemacro table full(|ʁ&|r( (|ʁ&|r~&Ɓ|}ʁ&Á|r$( (|r~&crr0$)~& krr0$)~&&srr0$) ~&@{}rr0$)~&Zrr0$)~&trr0$)~&rr0$)~&rr0$)~}&‚rr0$)~&܂rr0$)"~&"zn&`|ʁ&|rrJ( $)( }( (?zn&M`rr`|&i|rcH}kH&r|͔&Wr"J( ((}(1$~H&҃( &r9ED 9E9ED 9Evܛ}( (((q~&~H&d( &tr9ED 9E`T3)U~&҄}&r`T3$( (((q~,~H&( &%}r9ED 9E`T3/U~&&lr`T3$E( ((}jq~3TUE,|JJޅ2~Jޅ5~J&( &r&f8~HJ&&;}~HJ&\>U~&R`j&Kr$Y( $c( $( ((q~3TUE,^JJ}@~J&( &r&C~H& F~&`&r$( $( $(} ((އq~3TUE,&JJRH~J&]( &mr&ڇK~HJ&N~}HJ&ЇQU~&Ƈ`އ&r$͇( $ׇ( $m( ((q~S~HJ&V}~HJ&(( &8r&Y~&g`&`r$\~&`&r}$( $8( (({q~_~HJ&a~HJ&c~HJ&f~HJ&}( i~J/l~J&:( &Jr&o~&`{&rr*,J}*,J&$J$r~&`{&ljr*,J*,J&+$J $3TUE,}<HJ&"u~HJ&vUED UE`{&Cr*,Je*,J&o$J$3TUE,}>HJ&x~HJ&UED UE`{&r*,J*,J&#$J$( $J}( ,+=-=*=/=%=<<=>>=&=^=|==?||||&&&&|||=|||=|^=^=^&=&&&=&==!===!=<><=>=>><<<=>=<<>}>(|r.q~X~[~^~b~&( &΋rr&*fU~&`|.&|r}$'i~& `|.&|r$'( $΋( (|rq~3TUE,+[3TUE,-J&e( l~wo}~&( &rr&}rU~&`|&|rr|͔&ČW|r͔&݌uWucr|$zt}~&s`|& |rr|͔&W|r͔&7uWuknPH&f`T3r|}$z( $( (|r~q~3TUE,*3TUE,/3TUE,%J&ō( v~y~|~&덂(} &rr&zU~&$`|&|rs$w~&J`|~&C|r{$w~&p`|~&i|r}$w( $( (U~&Վr~zn&`rr˜nĎ˜rJ( $T~&)r~}zn&`rrלnלrJ( $T~&Rr~&Drr( $T~&{r~}&mrr( $T~&r~&rr`T3( $T~&r~&Ώrr|n&}nn $nn( $T~&zr~+~|nnn n&V( Tr}tnn ( $T|r~&鐂zn&`rr˜nĐ˜rJלn}ߐל( $T~&Mzn& `rrלn(לrJ˜nC˜( $T( (} >><<<<=>>=>><<+=-=+-*=/=%=*/%++---$-!*&illegal address++--(|r|nq~3TUE,}[H3TUE,(H&ޒ&ޒڙU~& ܙ~$5n "rr$5n 5~`zn T}Wcnnnn $ے~&Ԓy$’n rry$’ry|n}$ے( $ꑂ풂( n  Trt( ( (nU~&[|rʁ~&M|rʁ}$5z( |H|&||z&rnnn n nnn n ߓ}nn ( $( ||z&mn mnnn Dn =nn (} Trtnnn ( ||1{ nn( |&”nn( $}ɔ~( nݔ n&  n&n&n$In&Innnn}nn nen$qn n&n&nM$n& zzr} rn&וT7E3$jr&T7E3$j1TU~&f+E 7E3TUE,"23TUE,$2YE`+E,~ $+E} .R&H~^UEYE`+E, T7E $j  (|4U~&t6~&3TUE,~|( 3TU}E,0^UE3TUE,TiTixHޖTiXH&얀^UE$3TUE,Ti&yTi~|&"|r0Ti0.,$sTih@Ti@}P&>TiGL&OTi7.Ti$wTi`P&cTigL&tTiW.Ti$w$y|r0Ti,$sTi*H&3TUEn,~|&ė^UEr}n7E0$$sTi/H&3TUEn,~|&^UErn7E2$$sTi+H&3TUEn,~|&6^UErn}p7E$$sTi-H&R3TUEn,~|&p^UErn7E.$$s$y^UE$&|@n 7E(  7E8U~} ~Ti'J&ƘTi&ݘ7E>, 7E$n7E 3TUE.,TiTi\Ti ~TiTin Tif'}} Tit3 Tib?~ TiuK TidW Tilc Tiro Tim{ Tig Tie Ti~|&֙Ti}0.Ti3TUE,~|&֙Ti 03T`UE,0.,Ti$Ti [can't subscriptcan't subscript]((,)invalid expression()st}ring space exhausted-+'IE%Ar3 n fn H&wIE%A$IE%Art IE%An} : ,,>,=E.3 n ؚn H&IE%A$IE%Ant IE%A$!}IE%Aɞ <IE%A$G IE%A  IE%A  IE%A  IE%A=En =E IE%A IE%Art}n\=E. =E IE%A IE%An\=E. =Eɞ IE%Ar  IE%Ar IE%Ar} .IE%Ar3r =E. 1E1E&SIE%A1E3 IE%A ߞ ߞ ߞ ߞ ߞ } ߞ ߞ ߞ ߞ  IE%A !IE%A "IE%A #IE%A $ߞ %ߞ &ߞ 'ߞ (ߞ )}ߞ *ߞ +ߞ ,ߞ -ߞ IE%AIE%A<IE%A IE%AIE%A r IE%}AIE%A<IE%A r IE%AIE%A<IE%A IE%AIE%A<IE%A} IE%AIE%A<IE%A IE%AIE%A<IE%A (|rIE%AIE%A}<IE%A&vIE%A$IE%A( T.2n' =E. =E =En =E IE%A=E. =E *+ƅɈ}ƅȠƅȱƅˠ ``_0:A [ a{``_0:A[a{LJ*Ȫ`} ,/`ȱ*눩L* ȱ `ƅɈƅȱʱѠ `ʠ`ƅˈƅʱeȥ}iL*`΄̱ȱɠʱ"Ѡ L$+̥ΰ L+ʱ Q*蘠Ș ȱ`_0:A }[a{`ٱƅɈƅȠƅȱƅˠʑȱʑ Q*` *``g?UK?.JLg?Can't find D1:ENGINE.OBJ @ VYD?EBJ V"ND?E BI Vl IHEDB V }0­D?E?8HI V B VL,ace @/J(|b|.F*I+G*I&FHH n }H lH tH vH6IzHIlG*IHNIyn@-IHZIHzHEIzHGI&@HHKI.H pH&@HpH,  }HGIGzHH*I$@GzH*IzHrH lHf@GzH*I$,@rlHH rHlHHrHZ&6AGrH2*I$,@ }&AHwH xHhiArHxHHxHH$AGH*IHQIYA$,@prH HHn zHwH lHfA5HzH*I$, }@ HrHH pHR&AHppH $AH A^H$AHHT&F$B^H$AHHdP& BHJ&/B`HF$BH } =BHH\ HB$gB FH ^B^H$OBbH$F$OB\boB$BHDHI&BvH&BnH. nH vH tH$BtH&BnH. nH t }HHF$F$B\cB$BHKHI&B tHnHn nHHF$F$B\dB$"CHQHI&C^vHnHn nHHF$F$C\0*C$~CH }FHnNIxxCHnFHn HHF&uC`HQIF$XCbH$F$xC\$C$CHnHH.HH(CH }J&CHJ&CH.J&C FnHn nHHFH)CnH. nH$F$C\& D\| D$zDH.HHHH&?DH }FHn }担CS I =L>H >L> _=L> &B V c<NLMȑ` MLN%B VLc}<S:t?E:y?H < |?}? < LD %E File is Now %U} Bytes big.%E%EBBD >`LD %= %=LEReturn=Exit (DN:Filename)D < %=LE% E[ LdI!C) Change ASCII EOL'S to ATASIIIB I < =BB '=BIC BIcLI DBIE BIeLILJ0BL JB9L J CFL)I < < G$GH$H$G\?G$GH$H$G\@G$GH$H$H\AH$HH$H}$)H\B)H\C)H\D)H\E)H$6HH$H$>H\F>H$KHH$H$XH\GXH\HXH$eHH$H$mH\mH$zHH$H$H\H$HH$H}$H$H $H$H$H$@ gJNJmMgJ~ gJ .,.,&HgJ~gJ~ xxx$H H}aIH gJ~n,I nrr)M>BMnH^gJ^PJ gJ~ gJgJ ^PJ (&INM}SJNMSJ:JMSJrM NJfI>JSJM$yI$I( $yI( %s -- ***ERROR***%s is greater than %dK bytes%d new  }instructions%d new instructionNo new instructionsCCCCan't open: %s.H Fh LhKFF F(gJn J!}I$JgJn JI|gJngJn JgJn JgJnH&-KgJn"JgJn#J;L( $J: M( "}gJn#-KgJn""K=L( $-K< M( NKgJn NKgJn H&K)M)M,BMHgJn#} gJ^PJlJ( KgJn KgJn H&KHH@aIH( 3LgJnkJkJL$}LkJ HLkJH&3LH>aIH( HLgJn H&LgJnkJkJffLkJJ{LkJhzLkJ%}L&LH9aIH( LHAaILHFaIH( &}HaIH HaIH gJ~gJ~n>, gJ~ gJ~n< ,, , ,'},,,,,,!,$,',*,-,0,3,6,9,<,?,B,E,H,K,N,Q,T,W,Z,],`,c,f,i,l,o,r,u,x,{,~,,,,,(},,,,,,,,,,,,,(f5N$+Nt$NrM$%N( (rNfNrrM|rM)}fNNrMrN$HN( NMrMnNMMM can't open %sfilename (or RETURN to exit)?*} g?K?;FLg?Can't find D1:ENGINE.OBJ @ VYD?EBJ V"ND?E BI Vl IHEDB V,}0­D?E?8HI V B VL,ace @~ì~ˬ~DϴA@&<@$2@۴-} (V۴|||.,fA~@||., e||E|@( ۴ Eϴ (\.} r,&@r,.J&@t$@|r|,:E|,&'A|,|,n t$A|, r/},&]A|,r,n t$8A|, ?E||ϴ @ ˬ˜fŤf>>Code ends at $%x <<<Can't re-readmainNo main()acecan't re-open fileunknown file 9}type.OBJ.CCCunknown file type(|rr`R&0n; $欂ɜ&&rϴ( $( n:}nѬn&U ,, ˬܬn ܬ$X$\$3ˬܬnܬn>, Ѭ, ˬܬѬn, ܬ$X$;\<};$ܬnܬn>, Ѭ'R&qѬ'.*,ˬ$Ѭ*,ˬܬn ܬ$X$q\\$Eܬnܬn>,=}'. Ѭܬn ܬܬ}^h?ܯ$X$$Uܯ$X$m$H$eܬެJ&mгܯ (|Ǭ,{( (  rϴ@ rr@ϴ @ ìˬ Ŭ ŬEŬpì.E@}ìɬZˬ Ŭ ì ɬu<ɬu &vv$c :<: ìhA} n ӬѬn& $۬\$`ܬ$$\$AܬnB}ܬnܬn ܬ$$I\I$wӬܬn,ܬn>,wܬn ܬ$$\$ܬn ܬ$$\$ܬnC}n>, Ѭf'űѬ*,w$ٱѬ'.*,wܬn ܬ$$ű\$+ܬnܬn>, Ѭܬn ܬdѬh%`ܬD}$$$\3$cˬܬnܬn>,, ˬܬn ܬ$$p\p\p$ܬܬn(n, ܬ$$$ E}$$$$ѰܬެJ&-ܯ  ѬѬ5$Ҳ^Ѭ$Ѭ,2HI`)|MӍөBA@*:@U<: @@ @@N@,U< !S}@ @iA:Ah`MAIN L0 RAM-DISK"h:h:::!T} :L::H:H`HI BLV o=`1b<Lxԭ45S]999';;<;<.>n>o> n>`8>!X}> y>m>ȱm>L= y> m>L > y> m>m>m>L>>P>Q>S>T>Q>T>>i >L=!Y}n>o>` m> m>`=;;a -0= 8 '0 (0 i10 i20L11l >0 ,10 (` d=-- Invalid Syntax --To copy whole diskette to%[} file: SCOPY Dn: [/UR] Dn:fname[.ext]To copy file to whole diskette: SCOPY Dn:fname[.ext] Dn: [/UR]To copy diskette t%\}o diskette: SCOPY Dn: [/UR] Dn: [/UR] Where "/U" indicates source ordestination is to be US Sectorskew and "/R" indica%]}tes RAMDISK.L21 d=SCOPY Ver 1.2 (C) 1985 ICD Inc. )0 `2΄11 3 2( )0 `2LC0 3 3/ 3333L6%^} 3 3 333( `2H 38 d=Source and destination drivesmust be differentL2 2L; 3 3333L;" )(%_}` 33 )0+$ /#ȱ ɛR3U 3LC0 )08`J i!D iEB VB d=Could not open file1 d=%`}  B V`36`33 ;3`8JHCh,6 *a36}> %a}6>3,6JYjXJTCU`J3C333` 3363*6 333 4 %b}433L3 43Δ3 c5336Ь 4`6668e`3T3U83X3Y  ;3R V0`BHI%c} V d=Error on input fileL2`R6 5XY:T?U V0`,H@RP6  I * %d}h0 1 Y0` !00` d=Error Read/Writing sectorL256 :5 .5 .55i`D5 i .5mD55 .55%e}`:?`m6`6 Z566> c5666`6>,6 JHjehe`5,m5665 ?%f}H ?h6ԍ6,6 JHjehe6 5i  ` Q4 d=File not SCOPY formatL2 Q4 Q46 Q4%g}6 Q46 4 p5 3 0}6 d=Formatting D0: ... 3 93 =7 33 3 93 66 A4 Z5 666 A4L6 d= -- DONEL2%q}>B%DOS SYSB*)DUP SYSBySACEC COMBCFORMAT COMBCONFIG COMB!EOLSTRIPCOMB! FASTC COMB#+LINK COMB NRD COMBZSCOPY COMB TDLINE COMB(ENGINE OBJB:ACECIO C B:CFORMAT C B YCOMPACT C B dFILECMP C B"mGRAPHICSC BPMDEMO C BPRIME C B ACECIO CCCBGRAPHICSCCCBENGLOAD OBJ 3 06 d=Writing D0: Track #00` d=~~6 =533 J96>55 58 3 4κ5L7 5 c566͘3з`=N%r}@   3 !0L7O ,3f 6=6=6=0=66== 9{8>%s},30~ !0V d=Error on sending config!L2,3& d=Drive Cannot Run UltraSpeed..L26",!6  @%t}  !0# d=Error formatting diskette!L2`              %u}       ʎ 9@? !0%v}099`9{8 ?,906 ,60, , 5`6 ,60,,5`96 6,$,`6` %w} =9 49,6 9 48 >,P` 9 489t,b`S@ : 3 !%x}0 d=Status of drive failedL2(6:) 66:) ,66`H BHIh V0`Le4&B V0%y}L:M:N:`%B:L:M:N V0` Z5666 c56` : : :6 :6 :6 : : : p5 4 3 %z}93 3 3 3 93 ;63 Z5 -3 ; 3 -366 : 4 d= -- DONEL2 3 0; d=Reading D0: Track #00` d=~~6 %{}=533 J9655 5 3 4κ5L; 5 c566͘3к`; 3 30;K d=Insert Source & Dest Diskettes =LM< d%|}=Insert Source Diskette =;) : 3 93 3 3 3 93 : p56 Z563 ; -3 ; 3 3% d=Insert Destination Di%}}skette =;; 3 0< d=Formatting D0: ... 3 93 =7 33 3 9336 3 6 636;L;L6 d=Press RETURN Wh%~}en Ready B=ɛ`L2%H$H` = T=L=`=GHFH` =}=~=}=~= K=Lt=}=~=L= = =L=HJJJJ%} =h) 0:i K=` = =L=HHHHH  hh(`hhh(`$RPS`P S Q Q Q S% DPELP) 0SJJJJ 0SxH)Ӡ Qh)}X QH)ӠDP  hөÍDPEPH BLVTD ONTime/Date Display Line Installed** TDLINE -- Not)} SpartaDOS 2.6 (or >)L#QLQ SQ`H Ә vS \@b \001S)8S0CS1DCA)}0Cȭ1Ch`QH) h`,Q8`ΕQRR RR8TSJJmSmRR}RR)ȘiR RR RR )}R RR bR RRR RR RR R RR _R RR   bR RS _R RS _RaR p Rm R RQ`,^R8)} i H,^R0  Rh)I0` ,:,-SSMTWTFauouehrtnneduiJFMAMJJASONDaeapauuuecoenbrrynlgptvc R )} RR (`pp0BSSpartaDOS 2.5 :SSɢS Q YS YSS`HS`i` Sh8`uS)}OuS :S01S9HH0iS1iSA0ȩS1hhLbS{UTTTT T`8T)}T TmTȱmTL#T T mTL;T T TmTmTLKTTTTTTTTTi )}TLSTT` T T`P"PP QQTQ^QQQQQQQQQQQQQQQQQQQQQQQQQRRR R RRRRRRR-R0R3)}R6R9R0>L>h>>>><<<<>??…ȱ…ťiÈią ȱ-}iąՈL7ȱĈL7…ȱ…ťiñąՈąiȱiĈL7…ȱ…ťi8ą԰ ȱąՈL7ȱąՈL7…-}ȱ…ťiñąՈą8ĐL7ȱĈL7tmL(=P]L(=…ȱ…8ԈĪCL(=…ȱ…8ԈĪ-}0)L<=8ªԥiàL7Ԅՠªȱ…Æ L78ª0ƊL<=˥ԈL<=ФԈL-}(=q…ԥq…L6…ȱ…ťiåqąԥqąՈL7eȱeťiåiđđL7eȱeťi-}L <eȱeťiL?<eȱeťiLn<eȱeťiL<eȱeťiő-}L6eȱeňeԅȱeՅL6eȱeťiñ‘ąՈ‘ąL6eȱeűąՈąL6eȱeňąԄ-}L6 ԄL7L7L?:6 AHI B V A`E:L@]ԅ ؠH),]0 @LA 3Kh0`WL,*S??Lo?Can't find D1:ENGINE.OBJ @ VaD?EBJ VVD?E BI Vl IHEDB V0ʭDU}?E?8HI V B VL,o?DVE V` BD/E HI V`/8/8/TfhdgsaLJ:K\^OPUI_|VCBXZ$#&%"![ ]NM?REYTWQ()'@}FHDGSA {  -} ` } 7DpƝDUEHIJB V0\]]dw]ex]]] \D0?+K @ \-}D03] \D0) @]]. @L D  \DƌLCp B VpC`H @h @ \D0 @LQDpHIBLV I @ IR-}} @ C "Gw]x]v]]] G "1Da)_DLFʊ DHDH`+*-=RLUF12345678 XCdEqEEEdEqEEEF%F-}FFrFFFFFFFFFFF-EO@2 14V 1 ;L1R @@067^ ^ l Gv]LE Gv]-}] v]w]x]LD Gv]8LE Gv]i]ުLEU$]) K $] #].ʎu]$]`pBu]HI-}$D]ELV E! ELF GLD E#LF E$LF FW 1@ =X+ Eu],$]ȽY$]Xu]$] "G LF "GL-}F F W 1 ; "G ELFULnDp"]J E E0: 0u]$]L]:ȌW @I0} @ < 1L1T @L@WY 7D-} FU 1WY @ @U 1 "1 "GLF I` FĠV 1UL@W4 1XDW =X! IXu]ȹY$] E0LILZH`-}W4 1XDW =X! IXu]ȹY$]! E0LILZH` ]LG ]XXLG ]8X勪, ]0ɛ^LG -}1LG^LG K` 1~U 1DW H0@ GpXDXE8XXHXXI B V0 G 7D0 LIH GhWW %T-}!H} @U 1h @ H <X` 1U 1L~H"] BLVp"]#]H@ e> IhX 1hhL< H"]DYEXH-}I#]JBLV8XXą 1U 1DW HLZH 0 I @ILZHLI"]DE8X冝HX凝I-}B V`"]HmXXImXXXeXXeX GXX` HLZH} @U 1L~H @ԭ88-}`XYL]:ȌW`8Y9Y:Y;Y8* &8Y.9Y8Y.9Y8Y.9Y8Y.9Y 8Y8YLJ8Y 9Y88Y8Y9Y9Y:Y;YL5J-}:Y`8Y=YX?Y >Y 1ؠU 1X`m>Ym?Y8X倅X偅eX 1̠U 1X` 0>YmXX?YmX-}XXX /L4)?! ;I@L7H)h)` @@L Ki `KB:P_YW_Y`HH8OYQYPYRY1-}pHI B_Y V( ZHL1hh_Y`W` 1UL 1L'M 1U 1PW HL'M I KGYFY[Y\Y]W-}#KHY VYTY.KY YXXUYTYHYUYLM^)ZUYUYIYXUYXȱX8ei-}VY MTY M8.TYXXZWW 7TW sQVYȌWOYWPYW MVYLY >M8XX}{GY FY-}KY >MW<WWXWX 1XW 1WW @W 1W @L1YE @U 1 "1 7D <} @ 1L1LK8JYVY-}0 MGYX\ sQ M M MOYPYNY W8OYQYPYRY 1V 1 "1 KFYX[ sQKYVY0 M` -}HYUY 3K`MYmVYVY M` 3K] 3K`XYTYUYXYLNɎUY) K[N[N UYLOʊ WYNH>HoNHnNH`8W-}YeiLK^WY`wlrtbsnhf@p?xmigjqNNNO OOOMOoONNNNNOONNȩTYWLPN IWLPN ISYLPN IQY;YRY-}LPN IOY;YPYLPN IJYLPNNYLPN ]LPN IHYLPN IIYLPN IKYLPN ILYLPN IMYLPN IH WYȱ 8LY-}VY匰 >MhWYLPN hOFY[FYLPNȱ^` hOGY\GYLPN hOLPNȱXYLL IHXY)hY PNL?NWL-}L^ KYXY`"]#] HLuK 0 @ILuK Ihhp"]LK .P`Y PW TP^Y P >0LPL1 1$V -} 1 =`YL1YaYXL1^YW`YXaY 1ъ 拥X;`YeiXŌX卐8`Y]Y-}^Y 4W` 1*V 1X` 1@V 1 =YYYXL18]Y^Ye^Y`Yee8X傅X僅 /-}8X`YXXXY)YYZY ;Y 1YmYiL4X0 K 3K\Y  3K_ 3KLuQ`WY)XY Kc8SY-}XJ 3KWYLQe8IYXȩ LQu\YI\Y#WYOYPY @WYLQXYY 3KLQ 18XXXX @W 18XXXX @-}WXL 1XWXWXXWLKc?LR#LR AڠWWX$ͫWͪW,Xȱ-} LRWiXiXW`XXͫWͪWȱɽXXXX`WγWγWWWXWX-}W` %TW`W "]BJWDWE V` BD$EH I V W$W` }HW#}IW` -}1bW 1H@DW e> IhX"WYW 3SLZHWW RLI Error #BREA-}K Key AbortNo ErrorsLoad File> Press any key.D1:*.*Memory FullNo text in bufferPrint File>Printing...Insert next sh-}eet, press Find:Not foundExit to DOSChange to:Load Config FileSave Config FileKey Click OnKey Click OffFast Re-}peat OnFast Repeat OffD:TEXTPRO.CNFCopy>Copy to> -elete ock nlock ename omat -oad opy Eit Dr-}ive -:Rename to>Format diskInsert ModeReplace ModeUpper CaseLower Case WordsLoad Macro>Word Wrap OnWord Wrap Off-} Used, FreePage , Line ^/^^ ^ BJD^E V0 BD EHI V Q^ T^-} Q^T^" ^" ^ A ^/ A ^ 3S ^W, W5L3` "]LHD:TEXTPRO.FNTD:TEX-}TPRO.MAC0(^, /* ACEC IO ROUTINES *//* To reduce the CCC file size, no arguements are defined in the assembly *//* language functio1}ns. The arguements that should be passed if any, *//* will be in the comment after the function name. *//* *//* Be sure t1}o read the file FLOAT.TXT for a description of floating point *//* functions. *//* */abs() /* (i) RETURNS absolute value o1}f integer (removes the sign if any) *//* same as Basic only with an integer value */ asm 0x2C03;alpha() /* (c) RETURNS 1 1}if c is aplabetic, 0 if not ('_' is alphabetic) */ asm 0x2C06;atof() /* (fp,asc) converts aschii to floating point. */ a1}sm 0x2C09;bgets() /* (addr,len,iocb) get len# of bytes from iocb and put into addr./* RETURNS: actual length transferred */1} asm 0x2C0C;bputs() /* (addr,len,iocb) put len# of bytes into iocb. *//* returns 1 if okay, else negative error number */1} asm 0x2C0F;cgetc() /* (iocb) returns char from iocb, else negative of error number */ asm 0x2C12;cgets() /* (addr,iocb1}) gets a record from iocb (everything up to the *//* next RETURN. Returns the length *//* Like BASIC: INPUT #iocb,str$ */1} asm 0x2C15;ciov() /* (iocb,command,addr,len,ax1,ax2) RETURNS: Y register (Y=1 if okay) *//* Like Basic XIO command *//* 1}Used to call Operating System CIO. Use -1 to ignore any operand */ asm 0x2C18;clear() /* (addr,len) put zero into locatio1}ns from addr through addr+len.*/ asm 0x2C1B;clog() /* (a,b) b=clog(a) Floating Point only! (same as Basic) */ asm 0x2C1E1};close() /* (iocb) close iocb (same as BASIC: CLOSE #iocb)*/ asm 0x2C21;color() /* (col) set color for plotting (same as 1}Basic) */ asm 0x2C24;copen() /* (name,mode) open filename in mode specified *//* r-read, w-write, u-update, a-append, d-d1}irectory *//* example: copen(filename,'r'); */ asm 0x2C27;cputc() /* (c,iocb) put byte c to iocb. RETURNS: - if error */1}/* same as BASIC: PUT #iocb,c */ asm 0x2C2A;cputs() /* (addr,iocb) send string at addr to iocb. RETURNS: - if error */ a1}sm 0x2C2D;dpeek() /* (addr) RETURNS word at addr */ asm 0x2C30;dpoke() /* (addr,word) poke word into addr. RETURNS: previ1}ous value (word) */ asm 0x2C33;drawto() /* (x,y) draw to x,y using color specified in color(c) */ asm 0x2C36;exit() /* 1}return to DOS */ asm 0x2C39;exp() /* (a,b,c) c=a^b (floating point only!) */ asm 0x2C3C;fadd() /* (a,b,c) c=a+b (floati1}ng point only!) */ asm 0x2C3F;fast() /* turn off screen, turn on critic - results in faster computations *//* [see slow()1}] */ asm 0x2C42;fdiv() /* (a,b,c) c=a/b floating division */ asm 0x2C45;find() /* (addr,len,c) look for character c sta1}rting at addr though addr+len *//* returns position, or -1 if not found */ asm 0x2C48;fmul() /* (a,b,c) c=a*b floating mu1}ltiplication */ asm 0x2C4B;fsub() /* (a,b,c) c=a-b floating subtraction */ asm 0x2C4E;ftoi() /* (f.p.) return integer v1}alue of floating point (will round off decimal part) */ asm 0x2C51;getchar() /* returns aschii key and echos it to the scr1}een */ asm 0x2C54;getkey() /* returns asckii key but does not affect the screen *//* Same as BASIC: OPEN #1,0,4,"K:":GET 1}#1,var */ asm 0x2C57;gets() /* (addr) returns a string from the editor *//* Same as BASIC: INPUT STR$ */ asm 0x2C5A;gr1}aphics() /* (num) closes, then opens iocb #6 in graphics mode specified (same as Basic) */ asm 0x2C5D;gtime() /* returns t2}he integer value of the internal clock in 60ths of a second *//* to clear the clock, use the C function: dpoke(19,0); */ a2}sm 0x2C60;itof() /* (i,fp) converts integer i to floating point (fp) */ asm 0x2C63;locate() /* (x,y) returns the color at2} screen location x,y *//* (same as Basic) */ asm 0x2C66;log() /* (a,b) b=log(a) floating point only! (same as Basic) */ 2} asm 0x2C69;match() /* (s1,s2) return false if strings are different, 1 if the same *//* It will return a 1 if s2 is equal 2}to s1 even if s1 is longer. *//* Example: match("testpattern","test"); will return true (1) */ asm 0x2C6C;move() /* (from2},to,len) move len# of bytes at address one, to address two. *//* No check is made to see if from string is overwriting to st2}ring */ asm 0x2C6F;normalize() /* (filename,ext) will convert filename to uppercase, *//* append the extension if there i2}sn't one already, *//* and add D1: to the front if a drive isn't specified *//* Example: normalize(fname,"C") where fname="2}test" will change fname to: *//* "D1:TEST.C" *//* One can change the default drive with the statement: *//* poke(dpeek(0x22 }CB4),'n'); where n is the drive number *//* To make it permanent, you must now save it to ENGINE.OBJ *//* The load paramete2 }rs can be found by using COMPACT.COM. (see COMPACT.TXT) */ asm 0x2C72;open() /* (iocb,ax1,ax2,fname) same as Basic open *2 }/ asm 0x2C75;peek() /* (addr) returns byte at addr (same as Basic) */ asm 0x2C78;plot() /* (x,y) plot point at x,y. Po2 }int color set by color(c) */ asm 0x2C7B;poke() /* (addr,c) poke c into addr, returns previous value */ asm 0x2C7E;posit2 }ion() /* (x,y) position cursor at x,y (same as Basic) */ asm 0x2C81;printf() /* see file PRINTF.TXT for explanation */ a2}sm 0x2C84;putchar() /* (c) send c to the screen */ asm 0x2C87;rnd() /* (n) return random integer between 0 and n inclusiv2}e. *//* if you want 0-255, use rnd(0) which is faster */ asm 0x2C8A;sfind() /* (s1,s2) search for string s2 in s1 and ret2}urn position if found, *//* else return -1 */ asm 0x2C8D;slow() /* turn on screen again after fast() */ asm 0x2C90;sou2}nd() /* (voice,pitch,distortion,volume) same as Basic */ asm 0x2C93;stick() /* (n) returns value of joystick #n */ asm 02}x2C96;strcat() /* (s1,s2) append string 2 to end of string 1 */ asm 0x2C99;strcmp() /* (s1,s2) subtracts string 2 from st2}ring 1. *//* It will return the first non-zero difference. *//* Example: strcmp("Ab","ab") returns -32 *//* Example: strcm2}p("ab","Ab") returns 32 *//* Example: strcmp("ab","ab") returns 0 */ asm 0x2C9C;strcpy() /* (to,from) copy string 2 to st2}ring 1 */ asm 0x2C9F;strig() /* (n) return trigger button value of joystick #n */ asm 0x2CA2;strlen() /* (str) returns 2}length of string */ asm 0x2CA5;tolower() /* (c) return lowercase value of c */ asm 0x2CA8;toupper() /* (c) returns uppe2}rcase value of c */ asm 0x2CAB;usr() /* (addr,args) does a JSR to addr, returns integer (A=low byte, X=high byte *//* 0xB2}F=number of arguements, 0xC6=stack pointer to arguements */ asm 0x2CAE;val() /* (addr) returns integer value of string at 2}addr (same as Basic) */ asm 0x2CB1;closeall() $( /* close all iocb's */ int i; for(i=1;i<8;++i) close(i);$)getre2}ad(s,ext) /* get the file name from the user, *//* normalize it with the extension, and open it for reading *//* Returns th2}e iocb number */char s[],ext[];$( int iocb; getname(s); iocb=0; while(iocb<1) $( normalize(s,ext); iocb=cop2}en(s,'r'); if(iocb<1) $( printf("can't open %s\n",s); getname(s); $) $) return iocb;$)getname(s) /*2} request the filename from the user */char s[];$( printf("filename (or RETURN to exit)? "); gets(s); if(!s[0]) $( 2} putchar(''); putchar(''); exit(); $)$)/ / Ȅ`l@~A0  1 1%7x0 1 105/* This program formats C files *//* See CFORMAT.TXT for a detailed explanation of what if does *//* */#define PAD 2 /* nu6 }mber of spaces to indent after a "$(" */#define SPACE 32#define TAB 127#define EOL 155int iocb,count,i,length,csflag,dfla6!}g,iocb2;char s[20],c,lastchar,nextchar,*bufptr,*endptr,bak[20];main() $( int backup; char *maxsize,*address; /* address6"} MUST be the last variable defined!!! */ address=&address+100; /* This is the address for the text */ maxsize=0xBC00-addr6#}ess; /* Maximum text length */ printf("\f\t The ACE C Formatter\n\t by Ralph Walden\n\n"); printf("^M will insert a r6$}eturn\n^N will delete through the next return\n\n"); while(1) $( /* loop until user indicates no more files via getname() f6%}unction */ dflag=csflag=iocb=count=lastchar=c=backup=0; slow(); getname(s); printf("Do you want a back-up? (Y6&}/N)"); if(tolower(getkey())=='y') backup=1; putchar('\n'); fast(); closeall(); strcpy(bak,s); normali6'}ze(s,"C"); if(backup) $( if(i=find(bak,strlen(bak),'.')) *(bak+i)=0; /* erase the period */ normalize(bak,"BA6(}K"); printf("\u%s <<< %s\n\n",s,bak); $) else printf("\u%s (no back-up)\n\n",s); if((iocb=copen(s,'r'))<6)}1) $( printf("Can't open %s\n",s); continue; $) length=bgets(address,maxsize,iocb); /* read in all of the6*} text *//* address points to the stack, to which was added a safety margin of 100 *//* This gives us an area for the buffer6+}. address MUST be the last variable defined! */ close(iocb); if(length>=maxsize) $( printf("Text exceeds %dK\n6,}You wouldn't be able to link\nit either!\n",length/1024); continue; $) if(backup) $( if((iocb2=copen(bak,6-}'w'))>0) $( bputs(address,length,iocb2); /* write all of the text to a backup */ close(iocb2); $) 6.} else $( printf("I can't open %s\nShall I continue without a back-up?\n(Y/N)",bak); if(toupper(getkey())!='Y'6/}) continue; $) $) endptr=address+length; /* get the length of the text */ *(endptr+1)=EOL; /* to avoid some60} checks for end of buffer */ if((iocb=copen(s,'w'))<0) $( printf("Can't open %s\n",s); continue; $) b61}ufptr=address; while((i=find(address,length,TAB))>=0) *(bufptr+i)=SPACE; /* convert tabs to spaces */ while(*bufptr==62}SPACE) ++bufptr; /* remove any starting spaces */ for(;bufptr'd') && (c != EOL)) out(*bufptr++); if(c==13) c=EOL; /* convert control M to a RETURN */ switch(c) $( 64} case SPACE: /* remove all but one space */ out(SPACE); while(*bufptr==SPACE) ++bufptr; --bufpt65}r; /* in order to read next character */ break; case 'b': /* handles "break" statements */ if(mat66}ch(bufptr,"break;")) $( if(dflag) $( /* break after a default */ count-=PAD; csflag=d67}flag=0; $) else if(csflag) $( /* break after a case */ count-=PAD; csflag68}=0; $) $) out(c); break; case 'c': /* handles "case" statement */ 69} if(match(bufptr,"case ")) $( csflag=1; /* indicate we are dealing with a case */ count+=PAD; /* incr6:}ease the indentation */ $) out(c); break; case 'd': /* handles "default" statement */ 6;} if(match(bufptr,"default")) $( ++dflag; /* indicate that we have a default */ count+=PAD; 6<} $) out(c); break; case '0': /* convert all hex to upper case */ out(c); 6=} if(tolower(*(bufptr+1))=='x') $( out(*(bufptr+1)); bufptr+=2; while(hex(*bufptr)) out(6>}toupper(*bufptr++)); --bufptr; /* so we will read it at top of loop */ $) break; case6?} '$': /* this handles $( and $) */ nextchar= *(bufptr+1); lastchar= *(bufptr-1); if(nextchar=='6@}(') $( if((lastchar != SPACE) && (lastchar != EOL) && (*(bufptr-2) != EOL)) out(SPACE); /* add a space */ 6A} count+=PAD; $) out(c); if(nextchar==')') count-=PAD; break; case '&': /*6B} separate || and && with spaces */ case '|': lastchar= *(bufptr-1); if(lastchar==c) $( 6C} out(c); if(*(bufptr+1)!=SPACE) out(SPACE); $) else if((*(bufptr+1)==c) && (lastchar!=SPACE)6D}) $( out(SPACE); out(c); $) else out(c); break; case '/': /* th6E}is handles comments */ if(*(bufptr+1)=='*') $( out(*bufptr++); /* '/' */ out(*bufptr++); /*6F} '*' */ while(1) $( /* find the end of the comment */ while((*bufptr != EOL) && (*bufptr != '*')) $6G}( out(*bufptr++); $) out(*bufptr); if(*bufptr == EOL) $( /* if the 6H}comment continues to the next line, we must add a '/*' */ i=1; while(*(bufptr+i)==SPACE) ++i;6I} if(*(bufptr+i) != '/') $( out('/'); /* start the new line with a comment it it isn't alrea6J}dy there */ out('*'); out(SPACE); $) $) else 6K}if(*(bufptr+1)=='/') break; /* end of comment */ ++bufptr; /* not the end of the comment, so we continue the lo6L}op */ $) $) else out(c); break; case EOL: /* this handles all returns */ 6M} out(c); if((bufptr+2)='0' && c<='9') || 6X}(tolower(c)>='a' && tolower(c)<='f')) return 1; else return 0;$)4D/* File compacter. This will compact files with multiple load segments. *//* It is useful for .COM files produced by C, and:Z} assembly language object files. *//* Binary file must not exceed 6K! (about 49 sectors) */char *buf,*begin,*end,*place,*en:[}dbuf,name[20];main() $(int iocb,tmp; iocb=getread(name,"COM"); buf=0x5000; endbuf=bgets(buf,0x6000,iocb)+buf; if(ge:\}tint(buf) != 0xFFFF) $( printf("Not a binary file!\n"); getkey(); exit(); $) buf+=2; /* get past the header *:]}/ place=buf; while(1) $( if((begin=getint(place))<0) break; /* end of file? */ end=getint(place+2); /* end of fir:^}st module */ printf("\n%x - %x",begin,end); tmp=(end-begin)+5+place; if(tmp>=endbuf) break; /* end of file */ :_} if(getint(tmp)==(end+1)) $( /* compact it */ printf(" Compacted"); *(place+2)=*(tmp+2); *(place+3)=*(tmp:`}+3); move(tmp+4,tmp,endbuf-tmp); endbuf-=4; $) else place=tmp; $) close(iocb); copen(name,'w'); b:a}uf-=2; /* this is to get the header we discarde at the beginning */ iocb=bputs(buf,endbuf-buf,iocb); close(iocb); putch:b}ar(155); slow();$)getint(where)char *where;$( if(where>endbuf) return -1; /* end of the file */ return *where+(*(wh:c}ere+1)<<8);$)8/* File compare *//* This program will compare two files and tell you if they are the same */int n1,n2,count,c,c2,a1,a2,a3;>e}char name1[20],name2[20];main() $( printf("Filename #1? "); gets(name1); printf("Filename #2? "); gets(name2); no>f}rmalize(name1," "); normalize(name2," "); if((n1=copen(name1,'r'))<0) $( printf("can't open %s\n",name1); getkey(>g}); exit(); $) if((n2=copen(name2,'r'))<0) $( printf("can't open %s\n",name2); getkey(); exit(); $) a1>h}=a2=a3=count=0; fast(); while((c=cgetc(n1))>=0) $( if(c!=(c2=cgetc(n2))) $( slow(); printf(">i} %d\n%s != %s\n%d != %d $%x != $%x",count,name1,name2,c,c2,c,c2); printf(" '%c' != '%c'\n",c,c2); >j}printf("$%x $%x $%x >%x< $%x $%x $%x\n",a1,a2,a3,c,cgetc(n1),cgetc(n1),cgetc(n1)); exit(); $) ++count; a1=a>k}2; a2=a3; a3=c; $) if((cgetc(n2)>0)) $( slow(); printf("%s %s\n",name2,name1); exit();>l} $) slow(); printf("%s == %s\n",name1,name2); exit();$)<A/* graphics and game i/o *//* */#define RAMTOP 0x6A#define PMCOLOR 0x2C0#define SDMCTL 0x22F#define GRACTL 0xD01D#definBn}e CHBASE 0x2F4#define PMBASE 0xD407#define PLSIZE 0xD008#define HPOSPL 0xD000#define PLTOPF 0xD004#define PLTOPL 0xD00CBo}#define HITCLR 0xD01E#define OLDCHSET 0xE000#define GRAF 0xD00Dchar *playbase,*charbase,playsize;/* *//* initialize playBp}ers *//* */pminit() /* this must be called before any use of the following PM functions */$( int i; charbase=(peek(RAMBq}TOP)-12)<<8; poke(PMBASE,peek(RAMTOP)-8); playbase=(peek(RAMTOP)-8)<<8; poke(RAMTOP,peek(RAMTOP)-16); graphics(0); Br}pmgraphics(0); move(OLDCHSET,charbase,1024); poke(CHBASE,charbase>>8);$)pmflush() /* call this before returning to DOS Bs}to turn off PM graphics */$( pmgraphics(0); poke(CHBASE,OLDCHSET>>8); poke(RAMTOP,peek(RAMTOP)+16); graphics(0);$)Bt}/* Set up PM graphics *//* i=0 > inhibits PM graphics *//* i=1 > single line resolution *//* i=2 > double line resolution Bu}*/pmgraphics(i)int i;$( int j; if(i) $( poke(SDMCTL,i==1 ? 0x3E : 0x2E); /* enable DMA */ poke(GRACTL,3); Bv}playsize= (i==1) ? 8 : 7; clear(playbase,2048); playbase += (i==1) ? 1024 : 512; for(j=0;j<4;++j) poke(HPOSPL+j,0Bw}); $) else $( poke(SDMCTL,0x22); poke(GRACTL,0); for(j=0;j<4;++j) $( poke(HPOSPL+j,0); poke(GRAF+Bx}j,0); $) $)$)hitclear() /* clears the collision registers */$( poke(HITCLR,0);$)pmcolor(n,hue,intensity) /* workBy}s like setcolor(), defines color of player n */char n,hue,intensity;$( poke(PMCOLOR+n,(hue<<4)+intensity);$)/* define pBz}layer width *//* width=0 > normal width *//* width=1 > double normal width *//* width=3 > four times normal width */pmwidB{}th(n,width)char n,width;$( poke(PLSIZE+n,width);$)/* *//* hitpf() and hitpl() return a 1 if who collided with hitwho, B|}otherwise it will return 0. *//* if hitwho is minus, a collision with any hitwho will return a 1 *//* */hitpf(who,hitwho) B}}/* player-playfield collisions */int who,hitwho;$( if(hitwho<0) return peek(PLTOPF+who); /* if hitwho is minus, check forB~} any collision */ return (1<200) $( dx[n]=-1; continue; $) if(y[n]223) $( dy[n]=-1; continue; $)/* if wF}e were looking for who we collided with, we would use hitpl(who,hitwho) */ if(hitpl(n,-1)) $( /* did it hit anyone? */F} dx[n]=rnd(3)-1; while(!(dx[n]=rnd(3)-1)); while(!(dy[n]=rnd(3)-1)); y[n]+=dy[n]; plmoF}ve(n,x[n],y[n],shape[n]); pmclear(n); chget(rnd(127)+1,shape[n]+2); /* new shape drawn from character base */F} hitclear(); $) $) $)$)D-/* Sieve of Eratosthenes *//* See BYTE , January 1983, for comparision with other computers *//* Takes about 5 minutes to rJ}un, with the screen off */#define TRUE 1#define FALSE 0#define SIZE 8190char flags[SIZE+1];main() $( int i,prime,k,couJ}nt,iter; printf("10 iterations\n"); fast(); dpoke(19,0); for(iter=1;iter <= 10;++iter) $( count=0; for(i=0;i J}<= SIZE;++i) flags[i]=TRUE; for(i=0;i <= SIZE;++i) $( if(flags[i]) $( prime=i+i+3; for(k=i+prime;kA r'A3 9;'9M'AM' ;'9N}-'A7B <' <'"' .can't open %sfilename (or RETURN to exit)? 'abs'alpha'atoN}f'bgets'bputs'cgetc'cgets'ciov'clear'clog'close'color'copen'cputc'cputs'dpeek 'dpokeN}!'drawto"'exit#'exp$'fadd%'fast&'fdiv''find('fmul)'fsub*'ftoi+'getchar,'getkey-'gets.'graphics/N}'gtime0'itof1'locate2'log3'match4'move5'normaliz6'open7'peek8'plot9'poke:'position;'printf<'putcharN}='rnd>'sfind?'slow@'soundA'stickB'strcatC'strcmpD'strcpyE'strigF'strlenG'tolowerH'toupperI'usrJ'vN}alK'closeallL'getreadM'getnameL%' j'  '  j'  ' j'  ' j j'  ' ' R}' ' ' '  '' '   ' j j'7 ' ''R}A /AB > . '  'AB  '' '' ABR}  '@ A3  : A '   / "'  R}'@A3: A ' A ' '  '' FR} F  F '' F F ''A3 A ' A A ' R} 'A3 A ' A A '   '' F ' 'R} '!'F 8' A '"'F 7 A '#'9F 8' '$'A7 'R} F ' F A ' F F '%'' F '&' A F  F  ''' FR} ' U9(' TF '       )'*' pF  '+' |F  R}','F -' . .   .'F -'R} . ! "!."#"  $#%$ &%$&''''playbaseR}'charbase'playsize'pminit'peek'poke'graphics'pmgraphi'move'pmflush'clear'hitclear'pmcolorR}'pmwidth'hitpf'hitpl 'pmclear!'chget"'chaget#'chput$'plmove%'pladdr&'setcolor''fill('dpoke)'ciov*R}'paddle+'ptrig,'vstick-'stick.'hstickP.