@L}5 _$% l0$)$$Hȱ$ UhL" `e$$%`$%`  R@P!( L(1   Y I`  d  Ld M * @  $ % CC$$)%1 Udߥ$9%: !0 S$% DD˙`  }J)Lr 8ZpppB0ppppB2ppppA8pppB0pppC2pppA"8pppB0ppppD2ppppAB8pppB0E2}Ad8pppB0ppppF 2F22FZ2Ƃ2F2F2F2F"3ppppA8pppB0G 2G22GZ2ǂ2G2G2G2G"3A88"8B8d8884(ʔF}X8Y8081888$8%8X0Yv9ԩ9L\88 \808188@ԭ8X}8Y`HH A ԭ8 Ԡ8ЈL9 8i hh@Х)8Э8 8081Lb88hihiHHȱ}ȱ`8Hh` 9E…¦ 9`L9` :"Ff ee& }8L/: :_Wń児0 &&86.ń児8儅充FfFf8L }/: q:` Fj` &`p B V8l ; Vhhl$;HHJJJJhh` `hhl$; G;`iDi }E`Hh&;`Hh` r;`ԆՄ ؠ0ȑ8)ȑ`HhL;0L;II襢 ;iȑȩ- }`ȩ$&*i0:iȑ`&; G;LFĆ>%>Ć5%/E)ԵH }膇hCI4H}Ƥƥ8`?>L?>>L/?Щo"/ Щ >L@>IL?))8}>>??>i>>i>>i>>i>>/>>>L?))8>>??>i>}>i>>i>>i>./>>>>> :ԠoЈЭ??>> >`2L-@'@&@&@)(@e)@i}'@)`L[@ 9S@S@)V@eW@iT@ U@)`L@ 9@@)@@>> ;:}>e@>e@@->@@m@@i@i@i@@ >@m@@i@`LL4A0A0A)>}> ;:>e>e>> >`! UUUUUUUUUUUUUUUUvA UUUUUUUUUUUUUUUUA}ALAAAA ALA8AAAALA`)LAAALEB8A < =8A ;:} AALB`LJBLPBK:BM l= V=FB =FB`LyB@0 >`LB =LBANTIC %U8iB <} =8ILBLBoldB `L,C =}LUCode = opy C8 < =LCet = verlay Ch < =LCideo = change} C < =LCick ' ' urn C < =LDrase lip C < =LEDndo/r}estore nvert D( < =LuD hue/luminance ead DX < =LD  shift/rotate rite D} < B`LDDD < =LD D < =LD D < =L E E <} =LAE E3 < =LbE ET < =DD <`LE|ELEError E DLE%U|EE }< A )CuA`LEE2E E$͹E3ELDFEEEEEi FEi F FͻE FEL0FEEE tA!}EEELEEi(EEiELE`!LkF GFEFEFLFFFFFLFEF mFF"}AmEFAiGFFFLFEFLuFFG8 @`LF vB@2 >4 > 8 E ? *@ *@ *@#} *@AA8 @AA8 @ X@  X@ X@  X@888AA88 @sA $};:eA4eAAAA > hF )Cpp`LGGG >GGIGI GILH`L4HGI%} GI GI L4H``LBH=H=H >>H>HI>HI >HILtH`LH>HI>HI >HI LH&}``@ HLH >LI888JJH88JJHAmHAiHmHHiQ hF A A'} G ;HH ?H ;HH8mH888L\IT8LkIT8LkI88H HLI8mH8 1A8L(}I,8LI,8LI8AA88 @H H H HLI >LI A`LI99I >)}Į99 >`LJI99 >`LCJ4J ItA;JtA E87J8sA8JAAA >85J8*}6J 1AsA : `e8sA q: @e8AA88 @ILJLLLL >L+}K ALLLL G ;8e88`L@K8LOK8LOK`8 ?H ;>J?J>J ?JLK8m>J88@,}LK\8LK\8LK@8 1AAA88 @88`JJ88@ esAsA ;:e ALJ7J85J86J8 1AAA88 @;JtA EILM GB9J8JsAsA ;:eA4e/}AAAA >LM4JIcLfM8JsAsA ;:eA4eA=JLM4JIxLM8JsA0}9J9JLM A`LN 9NNNNNNMNLJNNLNLNNNmNNiI LNNN2}NNNNLN8NNiNeNiNmNNiNLtN8NNiNLNL4NN_NILNNi3}NiI:>NLONiNiI:LONiNiI:LONNNiNNLONiNeNiN4}mNNi8NNLGOLOD1:ONN E>NNNNNNNNmNNiI L/5}PNmNNi.NNNNNNqNNN E>LSPLMPNmNNiI.LMPLSPNLO`LXPTPTPALl6}PZTPTP0L}P9TP TPI_LP``LPPPP GBPPILPL&QL#QPILPPL&QL#QPI~LP͓P7}LP8PPP Q ;:i iQ =Q8 }SSL%T = )C R`LfTbT9mbT9ii`LTT9mT9ii)T9mT9i9mT9i?}) T`@ TLTTTLUTTUUTLUTTLUTTTTLUT^TA@}mTAiTmTTi1LUTT TTTL2UTLUT䮽AA >TL U`LUAAUUA}ͩULUAmUAiUiAeAiULUAiAiU`LVVVI-LBV UAiAiLB}VVI*LqV T UAiAi TLVVI=LV T UAiAi TLV T UAiAiC} T`LVVVI VI_LV UL0WVI VI^LW T U TL0WVI VI|L#W T U TL0W T U T`L6W1D}W1WLWAm1WAi2WAm1WAi81WAeAi81WAeAi2W1WL;W`LWWͪE}WLWAmWAiIWLW`LW%;W$;WE%;~E$; F HILZ GBWWImLDX8iF} :8LZWIsLhX8IL`X48LeX8LZWIvLXtAItA ELZWIpLXp @JLZWIrLX RLZWIwLX SLG}ZW0LX4WLX8W0 cTLZWI)LX TLZW!LY$WLY8W!i TLZWI-WI=WI+ WI*H}L;YW VLZWI4WI-WI&WIWI_WI^WI| WI\LYW VLZWIcLYc @JLZWIoLYo @JLZWIxLI}Yx @JLZWItLY TLZWIfLY 3WLZWIiLY WLZWIeLZAA >LZWIuL'ZAAA >LZJ}WIULiZsA ;:eeAA >LZWIqLZL~Z Quit?Zv D GBWWIy WIYLZ ? CK}9 = =W%;W$;@l )C hF BLX`W2 0SCREENWINDOWNEWSETX;X;DISPLAY LISTS$X;. ANTIC28 p=p=p=@B SCREEN;; SCM}REEN ADDRL ======V p=p=p=p=@` WINDOWj ======t p=p=p=p=A~ ANTIC2N}X; ANTIC3 p=p=p=@ SCREEN ====== p=p=p=@ WINDOW ======O} p=p=p=A ANTIC3X; ANTIC4 p=p=p=@  SCREEN ====== p=p=p=p=@( WP}INDOW2 ======< p=p=p=p=AF ANTIC4PX;Z ANTIC5d p=p=p=@n SCREENx =====Q}= =@ WINDOW ====== A ANTIC5X; ANTIC6 p=p=p=@ SCREEN =R}===== p=p=p=p=@ WINDOW  @ WINDOW ( @ WINDOW P" @, WS}INDOW x6 @@ WINDOW J @T WINDOW ^ @h WINDOW r @| WINDOW  p=pT}=p=p=A ANTIC6X; ANTIC7 p=p=p=@ SCREEN ====== =@ WINDOW  U}@ WINDOW ( @ WINDOW P @ WINDOW x @& WINDOW 0 @: WINDOW V}D @N WINDOW X @b WINDOW l Av ANTIC7X;X;X;:DLISTS ANTIC2=ANTIC3=ANTIC4=ANTIW}C5=ANTIC6=ANTIC7X;X;X;X; INTERRUPT ROUTINESX; SAVMSCXSDLSTL0VDSLSTVVBLKD$SETVX}BV\  NMIENCHBASE COLPF0* WSYNC 4VCOUNT >HPOSP0H TIMERRXITVBVb\X;f OLY}DDLI pOLDDLIST zOLDSCREEN  OLDVBI X;SET 5NEWSETCOLORS (===F= CRSX  CRSY  MOZ}DE X;X;X; INTRSTART QSAVMSCPOLDSCREEN QSAVMSC POLDSCREEN QSDLSTL$ POLDDLIST. QSDLSTL[}8 POLDDLISTB QVDSLSTL POLDDLIV QVDSLST` POLDDLIj QVVBLKDt POLDVBI~ QVVBLKD POLDVBI Q>4\}SCREEN PSAVMSC Q>5SCREEN PSAVMSC Q>4DLI PVDSLST Q>5DLI PVDSLST Q> PNMIEN Q> $>5VBI ]} %>4VBI !SETVBV X;( X;2 X;< INTRSTOP%OLDVBIF $OLDVBIP Q>Z SETVBVd QOLDDLISTn PSDLSTLx QOLDDLIST^} PSDLSTL QOLDDLI PVDSLST QOLDDLI PVDSLST Q>@ PNMIEN QOLDSCREEN PSAVMSC QOLDSCREEN_} PSAVMSC : X; X; X; DLI5" C, 56 QVCOUNT@ R>AJ EDLI2T DLI1PWSYNC^ QSETh PCHBASEr %>| DLILO`}OPQCOLORS8 PCOLPF08 1 IDLILOOP !DLIDONE DLI2PWSYNC , QSET O> PCHBASE DLIDONE7 ? 7 9 X;a} X; X;& VBIQ>0 PHPOSP0: QTIMERD M>N FSKIPX QCRSXb PHPOSP0l SKIPQMODEv T? ? QDLISTS8 PSDLSTLb} QDLISTS8 PSDLSTL !XITVBV X; 0SET $0E = $3800SET $491 = $3800;BLOCK CONTAINING DISPLAY LISTS;AND INTERRUPT ROUTINESBYTE ARRAY codeblock=[112 112 1d}12 66 0 48 2 2 2 2 2 2 130 112 112 112 112 66 0 50 2 2 130 2 2 2 2 112 112 112 112 65 e}0 56 112 112 112 66 0 48 2 2 2 2 2 2 130 112 112 112 67 0 50 3 3 131 3 3 3 3 112 112 112 f} 65 34 56 112 112 112 66 0 48 2 2 2 2 2 2 130 112 112 112 112 68 0 50 4 4 132 4 4 4 4 1g}12 112 112 112 65 66 56 112 112 112 66 0 48 2 2 2 2 2 2 130 16 69 0 50 5 5 133 5 5 5 h}5 65 100 56 112 112 112 66 0 48 2 2 2 2 2 2 130 112 112 112 112 70 10 50 70 50 50 70 90 50 198i} 130 50 70 170 50 70 210 50 70 250 50 70 34 51 112 112 112 112 65 127 56 112 112 112 66 0 48 2 2 2 j} 2 2 2 130 16 71 10 50 71 50 50 71 90 50 199 130 50 71 170 50 71 210 50 71 250 50 71 34 51 65 17k}5 56 0 56 34 56 66 56 100 56 127 56 175 56 0 0 0 0 0 0 0 0 52 40 202 148 70 0 0 0 0l} 165 88 141 232 56 165 89 141 233 56 173 48 2 141 230 56 173 49 2 141 231 56 173 0 2 141 228 56 173 1 m} 2 141 229 56 173 36 2 141 234 56 173 37 2 141 235 56 169 0 133 88 169 48 133 89 169 118 141 0 2 169 n}57 141 1 2 169 192 141 14 212 169 7 162 57 160 167 76 92 228 172 234 56 174 235 56 169 7 32 92 228 173 230o} 56 141 48 2 173 231 56 141 49 2 173 228 56 141 0 2 173 229 56 141 1 2 169 64 141 14 212 173 232 56 p}133 88 173 233 56 133 89 96 72 152 72 173 11 212 201 65 176 23 141 10 212 173 236 56 141 9 212 160 4 185 2q}37 56 153 22 208 136 16 247 76 163 57 141 10 212 24 173 236 56 105 2 141 9 212 104 168 104 64 169 0 141 r}0 208 165 20 41 8 240 6 173 242 56 141 0 208 173 244 56 10 168 185 216 56 141 48 2 185 217 56 141 49 2s} 76 98 228], colors=$38EDBYTE chset=$38EC, mode=$38F4, crsx=$38F2, crsy=$38F3PROC IntrStart=$38F5()PROC Intrt}Stop=$3943()MODULEINCLUDE "D:CODEBLK.ACT"INCLUDE "D:RTIME.ACT"INCLUDE "D:PMG.ACT"INCLUDE "D:UTILS1.ACT"INCLUDE "D:UTILS2.ACT"PROC Main() v} BYTE shflok=$2BE, invflg=$2B6, ch=$2FC, c CARD tmperr tmperr=ERROR ERROR=MyErr Init() DO MoveCr w}s() shflok=0 invflg=0 IF ch<>255 THEN c=GetKey() IF c='m THEN mode=(mode+1) MOD 6 ELSEI x}F c='s THEN IF chset=OLD THEN chset=NEW ELSE chset=OLD FI ELSEIF c='v THEN y} video=video ! 128 ShowSet() ELSEIF c='p THEN Choose('p) ELSEIF c='r THEN Read() z} ELSEIF c='w THEN Write() ELSEIF c>='0 AND c<='4 THEN ChangeCol(c-'0) ELSEIF c=') THEN {} ChangeHue(0) ELSEIF c>='! AND c<='$ THEN ChangeHue(c-'!+1) ELSEIF c='- OR c='= OR c='+ OR c='* THEN |} Shift(c) ELSEIF c=' OR c=' OR c=' OR c=' OR c='_ OR c='^ OR c='| OR c='\ THEN Rotate(c) }} ELSEIF c='c THEN Choose('c) ELSEIF c='o THEN Choose('o) ELSEIF c='x THEN Choose('x) ~} ELSEIF c='t THEN Turn(1) ELSEIF c='f THEN Flip() ELSEIF c='i THEN Invert() ELSEI }F c='e THEN Zero(chardef,8) ELSEIF c='u THEN MoveBlock(chardef,olddef,8) ELSEIF c='U THEN } MoveBlock(chardef,$E000+curchar*8,8) ELSEIF c='q THEN MsgBox(" Quit?") c=GetKey() IF c='y OR }c='Y THEN PmgInit(0) IntrStop() Graphics(0) Close(6) ERROR=tmperr } shflok=64 [$6C $0A $00] ;JMP (DOSVEC) FI Menu() FI ShowChar() UpDate() FI }OD ;Player missile graphics routines.MODULEBYTE ARRAY _mismask=[252 243 207 63], _mbaseBYTE _ymaxpmCARD _pbase,_pm}sizeBYTE gprior=623, gractl=53277, hitclr=53278PROC PMGInit(BYTE res) ;Sets up player missile graphics.;res=}0 to disable pm graphics.; =1 for single line resolution; =2 for double line resolution;Uses memory just below memtop.};After set up, the global variable;_mbase contains the lowest address;used by the pmg's. DEFINE HPOSP0 = "$D0}00"BYTE _sdmctl=559, pmbase=54279CARD i, pmgspace, pmgsize=[0], memtop=741 IF res=0 THEN gractl=0 gprior=4} _sdmctl=34 Zero(HPOSP0,$0D) ELSE IF res=1 THEN pmgspace=(memtop & $F800)-$800 ;2K boundary } pmgsize=1280 _mbase=pmgspace+767 _pbase=pmgspace+1024 _sdmctl=62 ymaxpm=255 _pmsize=256 EL}SE pmgspace=(memtop & $FC00)-$400 ;1K boundary pmgsize=640 _mbase=pmgspace+383 _pbase=pmgspac}e+512 _sdmctl=46 ymaxpm=127 _pmsize=128 FI pmbase=pmgspace RSH 8 gprior=1 gractl=3 hitc}lr=0 FI Zero(_mbase,pmgsize)RETURNPROC PlrSize(BYTE plrnum,size);Sets the size of player #plrnum.BYTE ARRAY sizep}=53256 sizep(plrnum & 3)=size & 3RETURNPROC PMColor(BYTE pmnum,hue,lum);Sets color of player-missile pmnum.BYTE ARRA}Y pcolr=704 pcolr(pmnum & 3)=(hue LSH 4)%(lum & $0F)RETURNPROC PlrMove(BYTE plrnum,xpos,ypos BYTE ARRAY plrdef)};Moves player #plrnum to xpos,ypos;using the string plrdef. plrdef(0);contains the # of bytes in;the player.BYTE ARRAY }hposp=53248CARD plbas plrnum==&3 plbas=_pbase+(_pmsize * plrnum) ypos==&_ymaxpm MoveBlock(plbas+ypos,plrdef+1,}plrdef(0)) hposp(plrnum)=xposRETURNPROC PlrClr(BYTE plrnum);Clears out player # plrnum. Zero(_pbase+((plrnum & 3)*_}pmsize), _pmsize)RETURNMODULEDEFINE SCREEN="$3000", WINDOW="$3200", TOP="16", LEFT="56", WTOP="64", WBOT="92", WLEFT="96", WRIGHT="156",} OLDSET="$E000", OLD="$E0", NEWSET="$3400", NEW="$34", DISK="3"BYTE curchar=[33], video=[0], errflg=[0]BYTE AR}RAY grid1=[32 85 85 85 85 170 170 170 170 85 85 85 85 170 170 170 170 85 85 85 85 170 170 170 170 85 85 85 85 1}70 170 170 170], grid2=[32 170 170 170 170 85 85 85 85 170 170 170 170 85 85 85 85 170 170 170 170 85 85 85 85 170} 170 170 170 85 85 85 85], chardef, olddef(8), cursor=[4 $F0 $90 $90 $F0]PROC Delay(CARD t) WHILE t DO t==-1} ODRETURNPROC Ping() BYTE i FOR i=0 TO 15 DO Sound(0,60,10,15-i) Delay((15-i)*10) ODRETURNBYTE F}UNC GetKey() BYTE c Open(5,"K:",4,0) c=GetD(5) Close(5) RETURN(c)PROC ClrScr() Zero(SCREEN,320)RETURNP}ROC UpDate() Position(19,0) PrintF("ANTIC %U",mode+2) Position(18,1) IF chset=OLD THEN PrintF("old") ELSE P}rintF("new") FI Position(20,2) IF video=0 THEN PrintF("normal ") ELSE PrintF("inverse") FI Poke(SCREEN+12}0+18,curchar)RETURNPROC Menu() Position(12,0) PrintF("ode = opy ") Position(12,1) PrintF("et =} verlay ") Position(12,2) PrintF("ideo = change ") Position(12,3) PrintF("ick ' ' } urn ") Position(12,4) PrintF("rase lip ") Position(12,5) PrintF("ndo/restore nver}t ") Position(12,6) PrintF(" hue/luminance ead ") Position(12,7) PrintF(" shift/rotate rite }") Update()RETURNPROC MsgBox(BYTE ARRAY msg) Put(') Position(18,1) PrintF("") Position(18,2) Pr}intF(" ") Position(18,3) PrintF(" ") Position(18,4) PrintF(" ") Position(18,5)} PrintF("") Position(20,3) PrintF(msg)RETURNPROC MyErr(BYTE err) MsgBox("Error ") PrintF("%U",err)} Delay(65000) Menu() errflg=1RETURNPROC ShowSet() BYTE i CARD c BYTE POINTER w i=0 FOR c=WIND}OW+12 TO WINDOW+12+280 STEP 40 DO FOR w=c TO c+15 DO w^= i % video i==+1 OD ODRETURNPROC ShowChar()} BYTE i,j BYTE ARRAY charimage(33) charimage(0)=32 FOR i=0 TO 7 DO FOR j=1 TO 4 DO charimage((i LS}H 2)+j)=chardef(i) OD OD PlrMove(1,LEFT,TOP,charimage)RETURNPROC Init() BYTE pokmsk=$10, irqen=$D20E, c}rsinh=$2F0 ClrScr() Zero(WINDOW,320) MoveBlock(NEWSET,OLDSET,1024) IntrStart() ShowSet() PmgInit(2) PlrSize(0,}0) PlrSize(1,3) PlrSize(2,3) PlrSize(3,3) PlrMove(2,LEFT,TOP,grid1) PlrMove(3,LEFT,TOP,grid2) PmColor(0,0,0) Pm}Color(1,3,12) PmColor(2,8,4) PmColor(3,10,6) crsx=LEFT crsy=TOP PlrMove(0,crsx,crsy,cursor) chardef=NEWSET+curcha}r*8 MoveBlock(olddef,chardef,8) ShowChar() crsinh=1 ;no cursor Menu() pokmsk=$70 ;disable break key irqen=$70R}ETURNINT FUNC HStick(BYTE s) BYTE i i=Stick(s) IF i=5 OR i=6 OR i=7 THEN RETURN(1) ELSEIF i=9 OR i=10 OR }i=11 THEN RETURN(-1) FIRETURN(0)INT FUNC VStick(BYTE s) BYTE i i=Stick(s) IF i=6 OR i=10 OR i=14 THEN RE}TURN(-1) ELSEIF i=5 OR i=9 OR i=13 THEN RETURN(1) FIRETURN(0)PROC MoveCrs() INT dx, dy BYTE ARRAY mask}=[128 64 32 16 8 4 2 1] BYTE x, y IF Strig(0)=0 THEN x=(crsx-LEFT) RSH 2 y=(crsy-TOP) RSH 2 chardef(y)==}! mask(x) ShowChar() Ping() Delay(4000) FI dx=HStick(0) LSH 2 dy=VStick(0) LSH 2 crsx=crsx+dx IF crsxLEFT+28 THEN crsx=LEFT FI IF dy<>0 THEN crsy=crsy+dy PlrClr(0) IF} crsyTOP+28 THEN crsy=TOP FI PlrMove(0,crsx,crsy,cursor) FI IF }dx<>0 OR dy<>0 THEN IF Strig(0)<>0 THEN Delay(5000) FI FIRETURNQMODULEBYTE ARRAY tmpcolrs(5)PROC SavColrs() MoveBlock(tmpcolrs,colors,5) MoveBlock(colors,708,5)RETURNPROC Re}sColrs() MoveBlock(colors,tmpcolrs,5)RETURNPROC Choose(BYTE m) BYTE oldx, oldy, oldmode, oldchar, ch=764, i, }tmp, oldvid BYTE ARRAY defn INT dy SavColrs() oldvid=video video=0 ShowSet() oldmode=mode mode=0 o}ldchar=curchar MoveBlock(olddef,chardef,8) oldx=crsx oldy=crsy PlrClr(0) crsx=WLEFT+((curchar MOD 16) LSH 2) crs}y=WTOP+((curchar/16) LSH 2) PlrMove(0,crsx,crsy,cursor) ch=255 DO IF ch<>255 THEN EXIT ELSEIF Strig(0)=0 }THEN Ping() EXIT ELSE crsx=crsx+HStick(0) LSH 2 IF crsxWRIGHT THEN crsx=WLEFT FI dy=VStick(0) LSH 2 IF dy<>0 THEN crsy=crsy+dy IF }crsyWBOT THEN crsy=WTOP FI PlrClr(0) Plr}Move(0,crsx,crsy,cursor) FI curchar=(crsx-WLEFT) RSH 2 + ((crsy-WTOP) LSH 2) defn=NEWSET+curchar *} 8 IF m='p OR m='c THEN chardef=defn ELSEIF m='o THEN FOR i=0 TO 7 DO chardef(i)=olddef}(i)%defn(i) OD FI ShowChar() IF m='p THEN Poke(SCREEN+120+18,curchar) FI Delay(}4000) FI OD mode=oldmode crsx=oldx crsy=oldy PlrClr(0) PlrMove(0,crsx,crsy,cursor) video=oldvid ShowSet()} IF ch<>255 THEN i=GetKey() curchar=oldchar chardef=NEWSET+curchar*8 MoveBlock(chardef,olddef,8) ELSEIF m}='c THEN curchar=oldchar chardef=NEWSET+curchar*8 MoveBlock(chardef,defn,8) ELSEIF m='x THEN curchar=oldcha}r FOR i=0 TO 7 DO tmp=defn(i) defn(i)=chardef(i) chardef(i)=tmp OD ELSEIF m='o THEN curchar=o}ldchar FI ResColrs() MoveBlock(olddef,chardef,8) Delay(4000)RETURNPROC Normalize(BYTE ARRAY str, ext);Changes st}r to a standard file name.;Adds extension ext if there is not;one to start with. BYTE len, indx, i len=str(0);rem}ove blanks indx=0 DO IF (indx=len) THEN len=0 EXIT ELSE indx==+1 IF (str(indx)<>' ) THEN} FOR i=indx TO len DO str(i-indx+1)=str(i) OD len=len-indx+1 EXIT FI FI }OD;add device spec IF (len<2) OR (len=2 AND str(2)<>':) OR (len>2 AND str(2)<>': AND str(3)<>':) THEN i=len }len==+3 WHILE (i) DO str(i+3)=str(i) i==-1 OD SAssign(str,"D1:",1,3) FI;add extension str(0)=len} i=3 DO IF (i>str(0)) OR (str(i)=' ) THEN str(i)='. i==+1 SAssign(str,ext,i,i+ext(0)) EXIT } ELSEIF (str(i)='.) THEN EXIT FI i==+1 ODRETURNBYTE FUNC AlphaNum(BYTE c);Return 1 if c is alphanumeric} char,;0 if not. IF (c>='A AND C<='Z) OR (c>='0 AND c<='9) OR (c='_) THEN RETURN(1) FIRETURN(0)PROC GetNa}me(BYTE ARRAY name) DEFINE EOL = "$9B", BKSPC = "126", ESC = "27" BYTE i, c i=0 DO c=GetKey() IF} c=EOL THEN EXIT ELSEIF c=ESC THEN i=0 EXIT ELSEIF c=BKSPC THEN IF i>0 THEN i=i-1 } Put(c) FI ELSEIF AlphaNum(c) THEN i==+1 name(i)=c Put(c) FI OD name(0)=iRETURNM}ODULEBYTE ARRAY fname(50)PROC Directory(BYTE ARRAY prompt) BYTE ARRAY dirrec(20) BYTE x,y errflg=0 C}lrScr() Close(DISK) Open(DISK,"D:*.FNT",6,0) IF errflg=0 THEN x=0 y=0 DO InputSD(DISK,dirrec) I}F errflg=0 THEN IF dirrec(0)<>17 THEN EXIT ELSE SCopyS(fname,dirrec,3,10) Posit}ion(x*9+12,y) PrintF(fname) x=x+1 IF x=3 THEN x=0 y=y+1 IF }y=7 THEN EXIT FI FI FI FI OD FI Close(DISK) IF errflg=0 THEN }IF y<>7 THEN y=y+1 FI Position(12,y) PrintF(prompt) GetName(fname) IF fname(0)=0 THEN errflg=}1 Menu() ELSE Normalize(fname,"FNT") FI FIRETURNMODULEBYTE iotmpsetPROC PreIO() BYTE }shflok=$2BE shflok=64 SavColrs() iotmpset=chset chset=OLDRETURNPROC PostIO() ResColrs() chset=iotmpsetRETUR}NPROC Read() BYTE POINTER c PreIO() Directory("Read < ") IF errflg=0 THEN Open(DISK,fname,4,0) IF err}flg=0 THEN FOR c=NEWSET TO NEWSET+1023 DO c^=GetD(DISK) OD FOR c=tmpcolrs TO tmpcolrs+4 DO }c^=GetD(DISK) OD Close(DISK) Menu() FI FI PostIO()RETURNPROC Write() BYTE POINTER c Pr}eIO() Directory("Write < ") IF errflg=0 THEN Open(DISK,fname,8,0) IF errflg=0 THEN FOR c=NEWSET TO NEWSET+1}023 DO PutD(DISK,c^) OD FOR c=tmpcolrs TO tmpcolrs+4 DO PutD(DISK,c^) OD Close(DISK)} Menu() FI FI PostIO()RETURNPROC ChangeCol(BYTE reg) colors(reg)==+$10RETURNPROC ChangeHue(BYTE reg) } BYTE lum lum=(colors(reg)+2) & $0F colors(reg)=(colors(reg) & $F0) % lumRETURNPROC Turn(BYTE r) BYTE ARRAY } mask=[128 64 32 16 8 4 2 1], temp(8) BYTE i, j, k IF r>0 THEN FOR k=1 TO r DO FOR i=0 TO 7 DO } temp(i)=0 FOR j=0 TO 7 DO temp(i)==RSH 1 IF chardef(j) & mask(i) THEN temp(i)==%128} FI OD OD MoveBlock(chardef,temp,8) OD FIRETURNPROC Up() BYTE i, tmp tmp=cha}rdef(0) FOR i=0 TO 6 DO chardef(i)=chardef(i+1) OD chardef(7)=tmpRETURNPROC Shift(BYTE dir) IF dir='- THEN } Up() chardef(7)=0 ELSEIF dir='* THEN Turn(3) Up() chardef(7)=0 Turn(1) ELSEIF dir='= THEN Turn(}2) Up() chardef(7)=0 Turn(2) ELSE Turn(1) Up() chardef(7)=0 Turn(3) FIRETURNPROC Rotate(B}YTE dir) IF dir=' OR dir='_ THEN Up() ELSEIF dir=' OR dir='^ THEN Turn(3) Up() Turn(1) ELSEIF dir=' }OR dir='| THEN Turn(2) Up() Turn(2) ELSE Turn(1) Up() Turn(3) FIRETURNPROC Flip() BYTE }i, tmp FOR i=0 TO 3 DO tmp=chardef(i) chardef(i)=chardef(7-i) chardef(7-i)=tmp ODRETURNPROC Invert() B}YTE i FOR i=0 TO 7 DO chardef(i)==!$FF ODRETURN>DDDDDDD<`8 xDL0dD68of;  `00`f<8lDD|DxH|DD||D@@D|xLDDLx|@x@@||@x@@@|@@LD|DD|DDD||D|HXpXLD@@@@@|Dl|TDDDdt\LD}8lDDl8|DD|@@8lDDl>|DD|HLx@|||DDDDD|DDDl8DDT|lDDl88lDDl8| 0`|8 8@`0 886}c8 33` 08 xϟl$6 8 ฎ} 8>0 ` 8x6$l؟ 8}=gg=8 x3ฎ8lDD|D}}9 8x3} F ꪪ }ꪪꪯ }ꪪUUUUUUUUUUUU}}UUUUUUUUUUUUWWW_]}UUUuUUWW____UUUU]]__WWWUUUuu }UUUUUUUUUUUWWUUU}}UUUUUUUUU__UUuUU_WWWW_}UUUUU}UWWW___UUUUU }UUUUU]]]__U]UUUUW__U]UUUUUUTTtt }__]_WWUUUUU]uU__WWWWUUUUuuUttttttttx`x`~<~~< }0~0 ~ <~~<``|ff|ttTTttttttttTTttUUUUttTT8<<``lxlf8<f }kc|ffff`<|~ffff>fff<UUUUUUUUfff> x<~~< }~x|nf8x8TH $?xxxxxxfffffff>`<|fl0fF68of;88888|||||xxxxxxx|$}|||v|||88888||8|||888pxxxxxxx$}x6c6>UUUUUUUUUUUUUUUUUUUUUUU$}$hihiHHȱȱ`8Hh` &E…¦ &`%}L&` &"Ff ee&8L& Fj` &`p B V8l A' Vhhl%}U'HHJJJJhh`hhlU' `iDiE`HhW'`Hh`Hh` x'IHiDiE B X'H%}I B X'`ԆՄ ؠ0ȑ8)ȑ`0L'II襢 'iȑȩ-` 'L' 'LE( 'L' 'LQ(%}ȩ$&*i0:iȑ`W' LFĆ>%>Ć5%/E)ԵH%}膇hCI4H/,,,L-))8,,,,,i,,i,,i,,i,./,,,,%}, #'ԠoЈЭ,,,, }*`53$L- &--)-e-i- -)`48$03D$L.. &".".)"%}.".,, &,e).,e*.$.-,$.).m$.*.i%.i&.i%.&. *'.m".(.i%}#.`SL...),, &,e,e,, }*`L/ })`L/ )L6/ %} /! K(LU/ /@ K(`L`/,,Ȍ,͗,L/,͘,L/{,m,|,im,+,,L/,%}L/,IL/,,L{/,Ll/ )L/ WHITE-%I ,/ ( )L0 BLACK-%I ,/ (`L08,,,{,m,%}|,im,+IL1,͗,L1,m,,ii,, m**(m*,qq{,e|,e%}m,, m**(m*qq+M,L1, m**(m*,q,, m**(m*,q,,,%}, m**(m*,q,, m**(m*,q,{,m,|,im,,,+IL1L1L1,+M,L1Ȍ,%},m,,ii,,m,,ii,,L1L%1,LO0`L1,͡,L52,͢,L/2 0,IL)2 %}, ,,L2,L1`L92 ), &m,i m+*(m+ K(`2AL22%}222 . 2 &Ee2 &e22 +.22L͘22L322L3%} *L-3L3L3 *22ILZ38222LW32L32I Ly322I Lv32L32I L38222L32L%}32IL322I L32L2 .2,2,`ADL333L433L4, ;i?;iYX%*} M*>;i?;i10 M*?;>;10 * )  ) ) )  )ppҩ&%+}& #' ,  -} v)L< reversi|%E< (,͙,L ŧӠ >%0}@ &ii m+*(m+L> ˧Ӡ > A;, :, ]/,I,%1}L? 1,L? 62 2 0,L> 4L>L?L>, f5,L8? 62 !7+I +IL8? 0, f5,,,ILH?LT?8,,L%2}> ]/ ),M,L?L? IT'S A TIE! ?n W(L?,͞,L?L? WHITE WINS! ? W(L?L? BLACK WINS! %3}? W( 4 4 4 4 *L?L?L=``<$-; REVERSI; ACTION! version of the ST BASIC; program by Kevin Mykytyn which; appeared in the Oct. 86 Compute)5}! ; Not pretty, but it works.;; Jeff Reister 5/15/87DEFINE KEYBD="2"SET $0E = $2400SET $491 = $2400BYT)6}E ARRAY chset=[ 0 0 0 0 0 0 0 0 120 120 120 120 120 0 120 0 0 102 102 102 0 0 0 0 0 10)7}2 255 102 102 255 102 0 24 62 96 60 6 124 24 0 0 102 108 24 48 102 70 0 28 54 28 56 111 102 59 )8} 0 56 56 56 56 56 0 0 0 60 120 112 112 112 120 60 0 120 60 28 28 28 60 120 0 0 102 60 255 6)9}0 102 0 0 0 24 24 126 24 24 0 0 0 0 0 0 0 24 24 48 0 0 126 126 126 0 0 0 0 0):} 0 0 0 24 24 0 0 6 12 24 48 96 64 0 124 254 246 246 246 254 124 0 120 248 248 120 120 120 120 );}0 124 254 14 126 254 240 254 0 124 254 14 126 14 238 124 0 246 246 246 246 254 14 14 0 254 254 240 254 6)<} 246 124 0 124 252 240 252 246 246 124 0 254 254 14 30 60 120 120 0 124 254 246 124 246 246 124 0 124 254 )=}238 126 14 126 60 0 0 0 24 24 0 24 24 0 0 0 24 24 0 24 24 48 6 12 24 48 24 12 6 0)>} 0 0 126 0 0 126 0 0 96 48 24 12 24 48 96 0 124 254 246 6 60 0 56 0 0 60 102 110 110 )?} 96 62 0 124 254 246 254 246 246 246 0 252 254 246 252 246 246 252 0 124 254 246 240 246 254 124 0 248 252 2)@}46 246 246 252 248 0 254 254 240 252 240 254 254 0 254 254 240 252 240 240 240 0 124 254 240 246 242 254 124 0)A} 246 246 246 254 246 246 246 0 120 120 120 120 120 120 120 0 6 6 6 6 246 254 124 0 246 246 246 252 246 2)B}46 246 0 240 240 240 240 240 254 254 0 252 254 234 234 234 234 234 0 226 242 250 254 238 230 226 0 124 254 24)C}6 246 246 254 124 0 252 254 246 252 240 240 240 0 124 254 246 246 246 252 118 0 252 254 246 254 244 246 246 0 )D} 124 254 240 124 14 254 124 0 254 254 56 56 56 56 56 0 246 246 246 246 246 254 124 0 246 246 246 246 254 12)E}4 56 0 234 234 234 234 254 254 124 0 246 246 246 124 246 246 246 0 246 246 246 246 124 56 56 0 254 254 28)F} 56 112 254 254 0 0 30 24 24 24 24 30 0 120 120 120 120 120 0 120 0 0 120 24 24 24 24 120 0 )G} 0 8 28 54 99 0 0 0 0 0 0 0 0 0 255 0 0 54 127 127 62 28 8 0 170 149 149 149 149 149)H} 151 151 170 85 85 127 255 255 255 255 170 85 85 213 245 245 253 253 151 151 151 149 149 149 149 149 255 255 255 )I}255 255 127 85 85 253 253 253 245 245 213 85 85 170 149 149 149 149 149 149 149 170 85 85 85 85 85 85 85 1)J}49 149 149 149 149 149 149 149 85 85 85 85 85 85 85 85 128 128 128 128 128 128 128 128 170 0 0 0 0 0 )K} 0 0 128 0 0 0 0 0 0 0 0 0 0 0 0 0 255 255 0 0 0 0 240 240 240 240];INCLUDE "D:)L}RUNTIME.ACT"INT ARRAY dx=[0 1 1 1 0 65535 65535 65535], dy=[65535 65535 0 1 1 1 0 65535], sc1=[0 0 0 0 0 0 0 0 0 0 )M} 0 8 65534 2 1 1 2 65534 8 0 0 65534 65530 65535 65535 65535 65535 65530 65534 0 0 2 65535 2 1 1 2 65535 2 0 0 )N}1 65535 1 0 0 1 65535 1 0 0 1 65535 1 0 0 1 65535 1 0 0 2 65535 2 1 1 2 65535 2 0 0 65534 65530 65535 65535 65535)O} 65535 65530 65534 0 0 8 65534 2 1 1 2 65534 8 0 0 0 0 0 0 0 0 0 0 0]INT fs,bs,js,nsCARD ARRAY mess(6)BYTE )P}ARRAY board(100),tboard(100), brow=[0 10 20 30 40 50 60 70 80 90], prow=[0 2 4 6 8 10 12 14], path(16)BYTE )Q} a,b,c,p,nt,np,flag,p1,p2,pt, tx,ty,nd,q,r,lev,ptx,pty, gx,gy,fl,x,y,sx,sy,counter, px,pyBYTE ARRAY _mbaseBYTE)R} _ymaxpmCARD _pbase,_pmsizeBYTE gprior=623, gractl=53277, hitclr=53278PROC PMGInit(BYTE res) DEFINE HPOS)S}P0 = "$D000"BYTE _sdmctl=559, pmbase=54279CARD i, pmgspace, pmgsize=[0], memtop=741 IF res=0 THEN gractl=0 )T} gprior=4 _sdmctl=34 Zero(HPOSP0,$0D) ELSE IF res=1 THEN pmgspace=(memtop & $F800)-$800 ;2K bound)U}ary pmgsize=1280 _mbase=pmgspace+767 _pbase=pmgspace+1024 _sdmctl=62 ymaxpm=255 _pmsize=2)V}56 ELSE pmgspace=(memtop & $FC00)-$400 ;1K boundary pmgsize=640 _mbase=pmgspace+383 _pbas)W}e=pmgspace+512 _sdmctl=46 ymaxpm=127 _pmsize=128 FI pmbase=pmgspace RSH 8 gprior=1 gractl=3)X} hitclr=0 FI Zero(_mbase,pmgsize)RETURNPROC PMColor(BYTE pmnum,hue,lum)BYTE ARRAY pcolr=704 pcolr(pmnum & 3)Y})=(hue LSH 4)%(lum & $0F)RETURNPROC PlrMove(BYTE plrnum,xpos,ypos BYTE ARRAY plrdef)BYTE ARRAY hposp=53248CARD )Z}plbas plrnum==&3 plbas=_pbase+(_pmsize * plrnum) ypos==&_ymaxpm MoveBlock(plbas+ypos,plrdef+1,plrdef(0)) hposp()[}plrnum)=xposRETURNPROC PlrClr(BYTE plrnum) Zero(_pbase+((plrnum & 3)*_pmsize), _pmsize)RETURNBYTE FUNC GetKey)\}()RETURN(GetD(KEYBD))PROC ClrMsg() Position(0,18) Print(" ") Print(" ")RETUR)]}NPROC Score() p1=0 p2=0 FOR a=1 TO 8 DO FOR b=1 TO 8 DO c=board(brow(a)+b) IF c=0 THEN p1=p1)^}+1 ELSEIF c=1 THEN p2=p2+1 FI OD OD Position(1,18) PrintF("WHITE-%I ",p1) Position(11,18) P)_}rintF("BLACK-%I ",p2)RETURNPROC CheckLegal() q=1-p flag=0 IF board(brow(tx)+ty)=4 THEN FOR a=0 TO 7 DO pa)`}th(prow(a)+0)=0 IF board(brow(tx+dx(a))+ty+dy(a))=q THEN sx=tx+dx(a) sy=ty+dy(a) counter=0 )a} DO counter=counter+1 sx=sx+dx(a) sy=sy+dy(a) c=brow(sx)+sy IF board(c)=)b}4 THEN EXIT ELSEIF board(c)=p THEN flag=1 path(prow(a)+0)=1 path(pr)c}ow(a)+1)=counter EXIT FI OD FI OD FIRETURNPROC AnyMove() FOR tx=1 TO 8 DO )d} FOR ty=1 TO 8 DO CheckLegal() IF flag=1 THEN tx=9 ty=9 FI OD ODRETURNPROC Turn())e} Position(20,19) Print(mess(np*3+p))RETURNPROC GetMove() BYTE ARRAY crsr=[5 4 4 31 4 4] BYTE crsx=[1],crs)f}y=[1],oldx,oldy,stk CARD delay DO oldx=crsx oldy=crsy PlrClr(0) PlrMove(0,69+crsx*12,22+crsy*8,crsr))g} FOR delay=0 TO 7500 DO OD IF STrig(0)=0 THEN EXIT ELSE stk=Stick(0) IF stk=14 THEN )q}BHFEDIT COMBLCODEBLK ASMBcCODEBLK ACTBuMAIN ACTBPMG ACTB UTILS1 ACTB4UTILS2 ACTB LOGIC1 FNTB CHESS FNTB:REVERSI COMB\4REVERSI ACTyTENPIN BASB%DOS SYSB*7DUP SYSB!aSTARTUP BASBAUTORUN SYS crsy==-1 IF crsy=0 THEN crsy=8 FI ELSEIF stk=13 THEN crsy==+1 IF crsy=9 THEN)r} crsy=1 FI ELSEIF stk=11 THEN crsx==-1 IF crsx=0 THEN crsx=8 FI )s} ELSEIF stk=7 THEN crsx==+1 IF crsx=9 THEN crsx=1 FI FI FI OD PlrClr(0) t)t}x=crsx ty=crsyRETURNPROC Bing() BYTE a,b FOR a=0 TO 15 DO FOR b=0 TO 200 DO Sound(1,60+p LSH 3,10,15-)u}a) OD ODRETURNPROC Bong() BYTE a,b FOR a=0 TO 15 DO FOR b=0 TO 200 DO Sound(1,200,10,15-a) OD)v} ODRETURNPROC PutPiece() fl=fl+1 board(brow(x)+y)=p IF nd<>1 THEN Position(5+x*3,y*2-1) IF p=0 THEN )w} Print("") ELSE Print("") FI Position(5+x*3,y*2) IF p=0 THEN Print("") ELSE Pr)x}int("") FI Bing() FIRETURNPROC FlipPieces() fl=0 x=tx y=ty PutPiece() FOR a=0 TO 7 DO IF path()y}prow(a)+0)<>0 THEN x=tx+dx(a) y=ty+dy(a) FOR b=1 TO path(prow(a)+1) DO PutPiece() x=x+dx(a))z} y=y+dy(a) OD FI ODRETURNPROC CheckMove() bs=-20 FOR tx=1 TO 8 DO FOR ty=1 TO 8 DO Chec){}kLegal() ns=sc1(brow(tx)+ty) IF flag<>0 THEN IF ns>bs OR ns=bs AND Rand(2)=1 THEN b)|}s=ns FI FI OD ODRETURNPROC BestMove() js=-50 nd=1 FOR tx=1 TO 8 DO FOR ty=1 TO 8 DO C)}}heckLegal() IF flag<>0 THEN FOR q=1 TO 8 DO FOR r=1 TO 8 DO c=brow(q)+r tboar)~}d(c)=board(c) OD OD FlipPieces() fs=sc1(brow(tx)+ty) IF pt>58 THEN fs=fs+)}fl*5 FI ptx=tx pty=ty IF lev=2 THEN p=0 CheckMove() p=1 )} FI tx=ptx ty=pty FOR q=1 TO 8 DO FOR r=1 TO 8 DO c=brow(q)+r board)}(c)=tboard(c) OD OD IF lev=1 THEN bs=0 ELSE IF pt>58 THEN b)}s=bs+fl*5 FI FI IF fs-bs>js OR fs-bs=js AND Rand(2)=1 THEN js=fs-bs )} gx=tx gy=ty FI FI OD OD tx=gx ty=gy IF (tx=1 OR tx=8) AND (ty=1 OR ty=8) THEN FOR a=)}0 TO 6 STEP 2 DO sc1(brow(tx+dx(a))+ty+dy(a))=8 OD FIRETURNPROC Options() Position(0,18) Print(" PLAYERS?)} ( OR ) ") DO np=GetKey()-'0 UNTIL np=1 OR np=2 OD IF np=1 THEN Position(0,18) Print(" LEVEL? ( OR ) )} ") DO lev=GetKey()-'0 UNTIL lev=1 OR lev=2 OD Position(0,18) Print("I GO FIRST? ( OR )") DO )} c=GetKey() UNTIL c='Y OR c='y OR c='N or c='n OD IF c='Y or c='y THEN p=1 ELSE p=0 FI FI C)}lrMsg()RETURNPROC SetScreen() CARD dlist=560, savmsc=88 BYTE ARRAY dl=[112 112 112 71 0 0 6 4 4 4 4 4 4)} 4 4 4 4 4 4 4 4 4 4 4 6 4 6 4 65 0 0] BYTE crsinh=752,pass=[0],chbas=756, pokmsk=$10,irqen=$D20E IF pass=)}0 THEN pass=1 PokeC(dl+4,savmsc) PokeC(dl+29,dlist) MoveBlock(dlist,dl,31) SetColor(0,12,8) SetColor()}1,2,12) SetColor(2,0,14) SetColor(3,0,0) SetColor(4,9,0) crsinh=1 pokmsk=$70 irqen=$70 chbas=chse)}t RSH 8 PMGInit(2) PMColor(0,2,10) FI Put('}) PrintF(" reversi|%E") FOR c=1 TO 8 DO PrintE(" )} ") PrintE(" ") OD PrintE(" ") nd=0)} p=0 x=4 y=4 PutPiece() x=5 y=5 PutPiece() p=1 x=4 y=5 PutPiece() x=5 y=4 PutPiece()RETURNPRO)}C Reversi() Close(KEYBD) Open(KEYBD,"K:",4,0) DO FOR a=0 TO 9 DO FOR b=0 TO 9 DO board(brow(a)+b)=4 )} OD OD mess(1*3+0)=" Ҡ " mess(1*3+1)=" ٠ " mess(2*3+0)=" ŧӠ)} " mess(2*3+1)=" ˧Ӡ " SetScreen() p=0 Options() nt=0 DO Score() IF np)}=2 OR p=0 THEN AnyMove() IF flag<>0 THEN Turn() DO GetMove() Chec)}kLegal() IF flag=0 THEN Bong() ELSE EXIT FI OD )} nd=0 FlipPieces() nt=0 FI ELSE Turn() BestMove() IF js<>-50 T)}HEN CheckLegal() nd=0 FlipPieces() nt=0 FI FI nt=nt+1 IF nt)}=3 THEN EXIT FI p=1-p OD Score() Position(20,19) IF p1=p2 THEN PrintE(" IT'S A T)}IE! ") ELSEIF p1>p2 THEN PrintE(" WHITE WINS! ") ELSE PrintE(" BLACK WINS! ") FI B)}ong() Bong() Bong() Bong() WHILE STrig(0) DO OD ODRETURN(P0x;;SCOREBALLNBALLSPINPOWERHIMARKEREBONUSSPACERRACKDUMRLEVELPLAYERPLAYEBALCOINCSTROWAIGFRAM-}LIMIXXFACTIOLUCLEFRIGHLASTLEFTRIGHCLEFCRIGHCCLEFCCRIGHSSSSXXPINSUPINSHIEBONUSBONUXBONUFRAMSINCPI-}NCLEVECONSOCHBAMYCHBACHASTFFLAA$AHAAA&AJAn -}    A1@@@@!`DQ@@!!&)@2@@@5`D-}Q@@2@@3@3@3 !@2"@2#@2$@2%@2&@2'@2(@3)@-}2*+@(,@-@2./@01@23@45?6@7@8@-}9@:@;BsD@?@@@ A@B ""ΪΠ by Rassilon 19JAN86ee9@-},9@,9@0<@,9@,9@,9@,9@,9@,LL;@,;@<@,-};@,;@,;@<@,( [FONT2*-@&68,-A3* <6-@6-@F -} [INTROP [MAINZ--@@-(@ Game Overd5-@@#5(@Press n[-}END GAMEx[CLEAN UP @pYWINDUP;)+"@*F:A%,"F:A,,;A @[ BALL -}RETURN.-$@.(@>:AU, @2,@# 6-%6-R:&@,(!@0-}6-6@(6-@0' @6-@'6-@//2A0%@%@@//2@A-}0%@&@@<<If (Stk=14 And Strig(Player-1)=0) Then Call "SET SPIN""@[SET SPIN==-}If (Stk=13 And Strig(Player-1)=0) Then Call "SET POWER" "@[ SET POWERCCIf (Stk=11 Or Stk=7) And Strig(Play-}er-1)=0 Then Call "MARKER"$"@)"@$[MARKER!@!@w" @4,,'--}$@'(@ 6..+"@*T:&@,",A@@6-@#@J ApT^^YM-}OVEMENT LOGICh8-@@#8(@ r @2,| -@"@6@ -}16-+@#',$8,$8, 6-%!!@!)!@(APM'++"@)!@,*"@,9[ ST-}RIKE YES/NOM"A@ @ [UPORDOWN!@(6-@0 @6-@ @4-},442AT@P:+@'@,$,442@AS@P:+@'@,$,"@-}[ PIN ACTION"@!@* @&[ PIN ACTION=&=0@:"@D!-}@* @$N[ PIN ACTIONX=b=l=v @:>:,,, G%2G2@-}[ SCORE BALLQ%@^Y PIN ACTION'']<@,!@A -}!!"@)"@0A 006-P:@&+$+@'@ ,,%?`,-+&,+%,/+@4%+$AX-},,!,/6-@&##+ @)!@(,A 1@3A  @26-]@ ,-} /) +@&+O:&,&+8,$@,,,/,* 4^>YUPORDOWNH"@2[CLOSER"@3\%%2@-}A0@@f[HIT PINp%%2@z=6-@2^YHIT PIN-} @A`16-@26-@2'6-@21@21&@&@1%@&@-}8,"A`"@31N:8,,"@+,&@&@16-="@32N:8,,"6@-},,%@&@26-= @A`"@3$6-@2@2./1&@&@-}/@3A8;6-]@<@,% @;,&@&@B=L"@3V6-@2@2-}`/1%@&@/@3A@j;6-]@<@,%!@;,%@&@t=~ @2-}^ YCLOSE%6-@26-@2%@21&@1&@1%@1%-}@]<@ , @  @2,&@,%@f"+"@3*N:8,,"6@,0-},&@R2@A0@@f6-@#@e!+"@3*N:8,,"@,/,%@Q2@-}A0@@e6-@#@ %%2@=^(Y STRIKE YES/NO2"1@ -}@"HEAD PIN<$1@@$LT OF HEADF$1@"@$RT OF HEADP$1@ @$CENTER-} PINZEE+"@2*"@2*"@2,)+"@2*"@2*"@2,d::]<@ , +@%+@&+8,$@-},,,n @2x -@@6@-@@&@ ,  ]<@-},!@P @3(N:8,,"6@(,@&@'N:8,,"@',@@9N:8,,"-}',@&@9,@@</-@@#/(@ s t r i k eF:A%,"F:A,68-},-8,%@=-@ %%2@@(@@"6-@#A(,%%2@-}6 @6-J=T=^=h^rY SCORE BALL|-@@&@-@-}@@ 1"@36-%@   68,-6-8&@,&8,*+"@*-}",*6-8@,'+"@*",'6-@0068+++$@,&@,%+&@,,<,-'+"@-})"@,'6-@9"@$68@,-968@,-6-^YEND TURN-}68,-6. &---@++$@,&@,@0"@68,-:'6-6-'6--}D6-8<,%8%@<,N8<,"@X0'6-%8%@<,%8%@<,06. Xb8%@<,"@-}l''6-%8%@<,%8%@<,v== +"@*8<,@,!6-%8%@<,!6. /-}=68,-8,%%2+"*",)68,-8,%26. 4-@$@4(@p:8,-}662@+Aw&+8,$@,,@@ %%2@[SET RACK^Y-}SET RACK6-  -@@6@7-@)(@7@%Y,76-@&  * -}@34-@@>'-@'(@7@Y,HW"@!,@@3,@@E,@"-}@W,@&@RE"@!,@@3,@ @E,@$@\3"@!,@-}@3,@"@f!"@!,@ @p z^YSET SPIN-@2@(@-} Spin ""R:&@,@A"P772@@`%+@ $O:8,,,@@68,-8,%"8,-}"6?@"68,-?0-@8@(@8,$@6-@#@%%2@-}^Y SET POWER -@ (@Power  ""R:&@,@A#p$ 442@-}@`%+@ $8,,@@. 68,-8,%8 !8,!?P!68,-B -@@L %%(@-}@&+8,$@,V 6-@#@` %%2@j ^t YMAIN~ [ALLEY [SET -}RACK -@@ 96-@%6-]@<@,90@@ "-@5@"(@ -}-@ "@ -@  /-@@#/(@  %%2@@3@-}@ 6-@#@  %%2@ .-@@#.(@ Tenth Frame   -}= [SET SPIN [ SET POWER( -68@,--68@,-2 -@< ))O&@]@<@-},@F  @P Q%@8,Z <d Q%@n =x 6-@#6-@ ---}-(@젣  [WINDUP [MOVEMENT LOGIC A @R   [END TURN "@-}A(@ "@ V)+8@<,%8@ <,,"@56-@A6-@V68@,-@ 28@<-},"@&6-@26-@ "@A& = "@ <8@!<,"@&6-@26-@-}< A& = '!@6-@'6-@" Q%@,  6  @ ^J YINTROT 6-@-}^ [ALLEYh 0-@@0(@ T e n ! P i nr &-@@&(@ | 2-@@2-}(@R A S S I L O N 6-@@6(@ҠӠӠɠ̠Ϡ 1-@@1(@OPTION -}7Y, 4-@@!4(@SELECT  1-@@#1(@ START  -@@-} 6-F:B2y, ..+"@)T:&@,",A1 &&+"@)R:&@,@, %%2@@2-}@@ )6-%@!@)6-@ C-@@+-@@$?(@ C -} %%2@ -@ 2-@$@2(@p8,   =&  -}0 6-@&: "@D )6-%@!@)6-@N &-@!@&(@7Y,X =b A-}) l ^v YCLEAN UP 5-@@#5(@ Please wait..  $68,-@$6- !-}@6-@ -@ 68,- 68,- -@% 68<,-   -}  ^ Y HI SCORES Q-@3*(@ Hi's <-@3@Q(@====== -@-} 8,!8, 68,-8, 5-@3+@$,5(@p: 8,* s-@92@@-}@@M6-@#@ o2@s 4 ++6-+@#@ ,$+@#@ ,> <H 5-}-@3+@$,5(@p: 8,R =\  f ^p YFONTz  #A86-F:AV, 6-$AV-} 6-F:A,&@ A +@%@P@ !-@N+,!  Poke 623,34 -}AV 6-$AV L@$AV -@ "%@%   -@-}##%+@$A$,%@V##%+@$@,%@` $-@.!"!%+@-}$@2,%8 B-@L!"!%+@$A',%V `))%+@$@,%@AU-}j-@yt!"!%+@$@,%~ -@!"!%+@$@b,% -}-@-@@b:,%A&%AU  ^60,20,40,40,85,85,85,20-}0,20,85,85,85,85,20,00,60,65,65,65,65,60,0!!0,128,160,168,168,160,128,0 DATA FOR NUMBERS 0-90,8,34,3-}4,34,34,8,00,8,40,8,8,8,42,0(0,40,2,2,8,32,42,020,40,2,8,2,2,40,0<0,34,34,34,42,2,2,0F0,42,32,40,2,-}2,40,0P0,10,32,40,34,34,8,0Z0,42,2,8,8,32,32,0d0,8,34,8,34,34,8,0n0,8,34,34,10,2,40,0x!!DATA FOR NUMBE-}RS STOPS HERE0,8,34,8,8,8,0,0 YALLEYAAAA@A -}@RA@AR@6. 67@Y,.Easiest67@Y,.Ea-}sier 67@Y,.Easy ##67@Y,.TenPin  TenPin##67@Y,. ! ! ! ! ! ! ! ##67@Y,. -} =6-6?6-?168,-@=6-"-@ ,++(@@-}@6++(@ 7 8 9 10 @++(@ J++(@ 4 -} 5 6 T++(@ ^++(@ 2 3 h++(@ -} r++(@ 1 |++(@ ++(@ -} ++(@ ++(@ ++(@-} ++(@ ++(@ ++(@-} ++(@ ++(@@ ^ @++(-}@ ^ ^ ++(@ T P ++(@ e i .}++(@ n n "@))(@ <&))(@ .} 0=:)-@3)(@D[SET SPIN[ SET POWERN-@X2-@.}$@2(@p8,b l#-@5@#(@v^YEND GAME6- @2.}9,@ @',@@9,@&@[ HI SCORES[ FILL PLAYER0-@AU.}Q##-@@%+@,""T:&@,"AF  [ FILL PLAYER0""-.}AU@6@$ Q##-@@%+@, ""T:&@,"AF* 4 >.} AE0HQR^\Y FILL PLAYER0fOp)6-%@"@)6-@.}z6-@"@6. TENPIN "@6. ALLEY *"@6. BY *6-@.}"@6.RASSILON*"@6. 1986 *6-@-@@LLL BsD%+@:7,,&@2,$@. }b:,%A$%$@ @ /6-]<@,/6-]@<@,O0@. }^Y BALL RETURN!@5-@@#5(@ player  up ='6-@&'6-@. }%$@ $556-++@0&+$@ ,,&+@%+$@ ,,,.>>-@ +@0&+$@ ,&@%+@$,,. }N:,8'1@@4',@B-6-@#@!@:>:,,-,@L V-@@#`''2. }A%@@j''2@A%@@t 1~ @4 ,6-@#@.} @:>:,, , G%2G2@^YMARKER.} @"@68,-8,%@!8,!AX!68,-A= "@68,-8,&@.}!8, A!68,-AW(=2Q%@8,<=F^P!!Ϊ by Rassilon 19APR86D:MYTENPIN..}BX8!8, A!68,-AW(=2Q%@8,<=F^P!!Ϊ by Rassilon 19APR86D:MYTENPIN.,d M * @  $ % CC$$)%1 Udߥ$9%: !0 S$%2} DD˙`  }J)Lr J  ((  p L ()   J2}L= ( L 0q A    IB JC;? D W 2} LL  ` W )LA!  ߰")-݆ p" 2} $G@LL 08`Q")<2Q0 -G$Ș݆ UL# ; p8(()(0ʥ)NQ`2}$GȘ݆LU )L ݆ L GȘ ݆LL )W>Z   HH)H 2}p h  hyhy D L> L JJ    ! LA*` BF2}7'8  M HN H` 8 Z  \LdJJ!"! GFE@F (!L2}EE !E^ ^ E E7EȩEdE/EȩE  D2} .L }  ;F d  ;?F7F? ( .   Z D LL d 2} . D  L    p  E` , d)  D L) 0BM݊L݉2} ML  N݆ L NLML [ TEqEHȱEqEh 0Gȹ G2} HLL GɛL  LFREE SECTORS G) *Gȩ GȽG GȌ*jj >G2} C8jJ3j2CD( C202C ԠBX` N 1? l LlD:RAMDISK2-}.COMLu L1 L ;LHL  T`  `8  ɐ     `TU 2.} L ? .  t`GBJ ~DEHI B V0dV2/}QDEHI VF9 ,0 ,0 s0hhL  L` H hDHEh20}DEL8HI4 0 HI,0 0  9 .G VLO21},0 L4*IJ`llD1:AUTORUN.SYSNEED MEM.SAV TO LOAD THIS FILE.D8:MEM.SAV J y08 B|DEHI22} V0 0`B;DEL`?<0LV`@ʆ v s? F0Ξ05: [ BDEHI23} VY8 B V  @  /DE `E:D8:DUP.SYSERROR-SAVING USER MEMORY ON DISKTYPE Y TO 24}STILL RUN DOS B;DE J  (` 9 V⪍ ઍ  -25}LLu ÝDEHILV 9 .l 9 .l  `` s$B BH26}I|DE V BLV nB,DE JLV B V BLVDEIʩ BꭝLu 0} 3E:}DISK OPERATING SYSTEM II VERSION COPYRIGHT 1984 ATARI CORP.A. DISK DIRECTORY I. FORMAT DISKB. RUN CARTRIDG68}E J. DUPLICATE DISKC. COPY FILE K. BINARY SAVED. DELETE FILE(S) L. BINARY LOADE. RENAME FILE M. RUN AT ADDRES69}SF. LOCK FILE N. CREATE MEM.SAVG. UNLOCK FILE O. DUPLICATE FILEH. WRITE DOS FILES P. FORMAT SINGLEL !N'6:}#"&))9(&*)/h)''-&؆莟R'S  vL/ˢ L }Insert DOS 2.0s, type Y Λx 6;}DEfHI 1莏#q! @ y0ɛ8A0,' ȅ 1 1ild! 1L!NO SUCH ITEMSELECT6<} ITEM OR FOR MENU! 0 .z:*{}.|{ 1 0 0JB 18L%|DL6=}%DIRECTORY--SEARCH SPEC,LIST FILE?[# 0 0 &|D3" 1L!NOT A DISK FILEN !B 1L!E# 1 !BD6>}ED:}:1BJ|DE 1DEBHI 1 h0ߢ 0.6?}  0?詛 1 y0YЛ 1 ;#L" ;#L! BL1TYPE "Y" TO DELETE...DELETE FILE SPEC6@}COPY--FROM, TO?OPTION NOT ALLOWED631 FREE SECTORS COPYING---D2:HOMETERM.SETl# 0|D .L/%#6A}##JB|DE 1BHID#E 1#0: B 1L!#͑### B 1#c$0SY6B}S1}:## # # .#Ƚ# # 𩛙## 1,#PD#ELJ- <.BJD#E 6C}1 1HH 0hh|DL%1}:̳# L% #D#EL% 1 0 . .0O% 1L!WILD CARDS NOT A6D}LLOWED IN DESTINATION 0 <.|K"(>:,)7<,7%<%%,46-&$$+"%,>6-"$:k}% 6-%6-%"%- &, ( -&((>:@:7%,,%$,, @  &"&(:l}@(}RUN/ENTER,gg(_+LOAD rerun menu, miniDOS, printout more, *. files print to :m}screen% )6-F:B2y,%6-")"II+"&,%+"%,$%+"A',$%+"AU,$+!%,$&%%I :n}%)!%)!$*$I6-%$$+ @W,&&%++!%,,$$B !&6-$&&)67,.7<%,1->7<,0:o} B C7%<%,0 !67<,..)6-%=67,.7%<%%,C %9 & +-+( 7,/5:p}9%V & )')7"AU*"<GV6-?:AUv,2 (ĺ:q}#6-2 &$+F:,",g"6.}ˠ堭36. $#! Rr3c@9A&g(!}Ӻ (1) Unlock (2) Lock:r}S*("(3) Delete (4) Rename (5) FormatS(#(6) Quit Rerun to MenuT )6-&@HH+ )!%,%+":s}&,%+"A,$%%&T6-@:7,,#!%%6-@:7%,,# &67,.7,$67<,.$36:t}7<,.067%,.󠨧3$-*6. }Ԡ렭-$ + K ((:u}=>#)/(5"K &%@F$+0A,A4%+B:, ,&!-06-7<,4:=6.7$%,A  !:v}%E!)"%$4(堧٧;)E%[  6.67&$+!,,.+/@67:w},.DOS.SYSEPU[6-$ $$(塠9  6--$ 9 &%$+F:,!,%:x}$+",)6-%Ax$6-&!6-) %$D+(#CHOOSE: Enter Merge Return2):"&@D %:y} &O &(}NEW8(POKE842,12:GR.0:E.>:%,FAB%L-O&+7,4SYS)7,4COM!.+ B:z}%A(}7<%, documentation/ &6-$6-F:, (!%/6-( (F:%,  &G:|} --(٠ݠ4)A"$)F:,G % %%(} &S 6-P:E6:}}.'}堨 M&S &7( }Ǻ-(WEWF1 76-+ B:~}:, %(E @+ &(( 6-%"#6-(( &2 $.( *** ERROR #F:, ***:}2 f;(%}Πխ堣>:%Av,B)P6-&@HV6-`!*f6- 6-6- :}F((Write 'DOS.SYS' file also? =>/)96-"%F(>:&%$,@:,%)@:, %6.9$D:MENY RU:}NTIME ACT 078 RTSCAN COM 051 RUNTIME ASM 8,O) !"`3!3