@L|}6CD l0C)HCC WhL/h `CmCDiD`  R@W1  Y0@R !L` D  C D     )16CS S)  C)D1 p p 0 C9DI pCDL~CiCDiD` D  C D     )16CS S)  C)D1 p p }0 C9DI pCDL~CiCDiD` DD˙` d J)L !}D L(( LL()  L| L( S LH 0p n  } CY?  q  L L  ` )} `A! d߰")-݆ "  $G@LLL&0") $G% }H0 3S8`G ȱG ȱG   Gȭ Gȭ GG}GHiH8(()) G$H% `(0 })8` d)L ݆ & LGȘ ݆LL d  ! LL d)N>Q  HH) }  hyhyB q L> Lm JJ  Ln*` dB%' }8  H H` 1 { LL   !L     Hh SY?  q  1L }  !? S   q 1 L   Ll  Lg E`L   !L)  q 1L}) `L0AM݊L݉ ML  N݆LLLNLMLHG!@}1F GȱGLLEEȩÑEȑEEȑE Ed E7EȩE  q} L !,0,0SGɛ L 1 !L EHEh W G gLLSROTCES EERF } G) *Gȩ GȽG GȌd q q G`  8   0G  `D}CEDC0X:Ȣ Y ȱC* ? 0.. , 0%n ?A[ 0 : L`L  `, 0`Y}`piH n0)բY? 08`0 }  0$L GGȽG L `8L`L}8`  05G)݁,G)ȱGȱGHh0})Hh` B! 8`8iiiLE`}E8FEh( l0`ɃLL L8^~jj8jHi hEEEiEȱEiE` dTE} H8EEȱEEȩEh J E8   . m  i`LI!)E1FR}1LJ舩9GIH`LJJ`HGHh l`} S gL   8 rii `дCDCG W  }C  Lq` X٨`DOS SYS IIIIIIIIIIIIIIIC`0 ߩ0}}} HE |||DDOS DOSDOS SYS }}}}CDOS SYS} 0`BDELV !B }`LVUQ   ]   TU J ]L!T  #      TU  } L ? .  t`GBJ V~DEHI B V0dV!}QDEHI VF9 ,0 ,0 s0hhL  L` H hDHEh"}DEL8HI   0 HI,0 0  9 .G VLO#},0 L4*IJ`llD1:AUTORUN.SYSNEED MEM.SAV TO LOAD THIS FILE.D1:MEM.SAV J y08 B|DEHI$} V0 0`B;DELV䌚 !B y`@ʆ v s? F0Ξ05: [ BDEHI%} VY8 B V  @  /DE `E:D1:DUP.SYSERROR-SAVING USER MEMORY ON DISKTYPE Y TO &}STILL RUN DOS B;DE J V (` 9 V⪍ ઍ  -'}LLu DEHILV 9 .l 9 .l  `` s$B VBH(}I|DE V BLV nB,DE J V* \*` B V BLVDEHI BLVL)}1u H232435; 1 ;  hh@2 e1i1LHҍ 00) 08 109hh@ Ҡ2e*}1i1232435ޥ<<8} 3E:}DISK OPERATING SYSTEM II VERSION 2.0SCOPYRIGHT 1980 ATARIA. DISK DIRECTORY I. FORMAT DISKB. RUN CARTRIDGE J. D,}UPLICATE DISKC. COPY FILE K. BINARY SAVED. DELETE FILE(S) L. BINARY LOADE. RENAME FILE M. RUN AT ADDRESSF. LOCK F-}ILE N. CREATE MEM.SAVG. UNLOCK FILE O. DUPLICATE FILEH. WRITE DOS FILES9!&x#!7&p))'&X*./)L''-؆莟.}R'S  vW DEHHI 1A#! @ ~0ɛ8A0.) ȅ 1 1i/}il ! 1L NO SUCH ITEMSELECT ITEM OR FOR MENU! 0 .{z:*{}.|~ 1 0 00}JB 18L^%|DLl%DIRECTORY--SEARCH SPEC,LIST FILE? # 0 0 n&|D! 1L NOT A DISK FILE1}N !B 1L " 1 !BDED:}:1BJ|DE 1DEBH2}I 1 h0ߢ 0.  0?詛 1 ~0YЛ 1 "L<" "L 3} BL1TYPE "Y" TO DELETE...DELETE FILE SPECCOPY--FROM, TO?OPTION NOT ALLOWED COPYING---DN:4}# 0|D .L$A#B#C#JB|DE 1BHIDD#E 1D#0: B5} 1L B#C#C#B# B 1N#$0SYS1}:e#D# d# D# .d#ȽD# d# 𩛙d#X# 1,A#6}PdD#ELO- A.BJdD#E 1 1HH 0hh|DL^%1}:e# Lt% e#dD#EL%7} 1 0 . .0% 1L WILD CARDS NOT ALLOWED IN DESTINATION 0 A.|K@C}//3Hu ξL/L DRIVE TO WRITE DOS FILES TO?WRITING NEW DOS FILESTYPE "Y" TO WRITE DOS TO DRIVE 1.?}D1:DOS.SYSERROR - NOT VERSION 2 FORMAT. , &* բ( 1L `[) 0NΞ 0 L1M) 1@} L BAD LOAD FILELOAD FROM WHAT FILE?) 0 0#B 1L WHAT FILE TO LOCK?) 0 0$B 1L WHAT FILE TO UNLOCK?DUA}P DISK-SOURCE,DEST DRIVES?TYPE "Y" IF OK TO USE PROGRAM AREACAUTION: A "Y" INVALIDATES MEM.SAV. h  ,B}  `)  <0 2 2 0  ,   ,,ޢ* 1L ,K* 1 ~0 0C}FINSERT BOTH DISKS, TYPE RETURNERROR - DRIVES INCOMPATIBLE., 1 ~038  , 1L D}, &*  Lz+, 0 , 1 ~0 + Y,0!,0 ,L+ ,mm  v,"ǭE}0Ξ, 05,Lt+L +,Hh` NOT ENOUGH ROOMINSERT SOURCE DISK,TYPE RETURNF}INSERT DESTINATION DISK,TYPE RETURN`    `L,8,0( rG}L1(`ߢ) 1* 1 ~0Y`hhL S SL1) 8`NAME OF FILE TO MOVE?- 0 0|DLtH}% A., 1 <0 0 .@L# .BJ 1  DEHIB V L1 ,5 1 <0,L. I} JB|,A#Pd#DE 1 HI BDEHHII 1 B 1 , 1 <0,0Lf- B VJ},A#P, 1 <0 0L#L ߢ) 1* 1 ~0Yj383}mm ݭK}}`8}``|* ? ɛ,`|:(|/ 1L `DESTINATION CANT L}BE DOS.SYS0 0H{ $22Δ $28/L /) $2 Π $2 0 ξM}hAΞB,0 J 1 BޝDEHI,HDE 1HIHIDELSAVE-N}GIVE FILE,START,END(,INIT,RUN)O X0 1`BDEPHI V` X0H 1 L O}0 0 1L0`PLEASE TYPE 1 LETTER,0`hhL <0 1L0LA1 ,;ɛ7,"ɛ:ݦ1ݥP}A"D|ݤD|ȩ:|ȩ|ɛ,,(/+.ީ1 1,ɛ`轤{Q}NAME TOO LONG B VL ` L1I H1EӝDL1|mDiE` V0`8d/8 i:"2!22 1R} L ERROR- 128ɛ+,' 20*.. өw2 1``2TOO MANY DIGITSINVALIDS} HEXADECIMAL PARAMETER800 0 8 00`,0'D800H,ɛh`2L1NEED D1 THRU D4uT} HEXADECIMAL PARAMETER800 0 8 00`,0'D800H,ɛh`2L1NEED D1 THRU D4uEiͩkΩ͙kCop j`j {j`Hi͝Νh`V}L"UNEM:D"NURͩkΩ͙kCop j`j {j`Hi͝Νh`  "EXLINEAFxxy &&;A ,;@,;@,W (} ( (1) HELP file#(@( X}(2) How to 'port' filesW( to an ST disk (( SELECTION(+41)42,@ ,6. D:DOC.TXT Y}42,6. D:PORT.TXT1 (}@1@@ A(@2vB:,!@- Z}7@<@,4XXX0(3(E-@@"Y(ӠΠf@l(}v @@<( @@dj@ [} B*-@@"R("ΠҠՠҠˠҠ_@j%D:MENU D1:HELP.BASile#(@( rST LISTINGSON MONTHLY DISK...and how to get themby CHARLES JACKSONAntic Program EditorFor those ST owners who do not ]}yetown a C compiler, but are eager totry out Antic's C language listings,we are now including the executableobject code o^}n the Antic MonthlyDisk.XXXAll disk files with extendersof .PRG, .TOS, .TPP and .ACC arecompiled ST programs, ready to_} betransferred to an ST disk andexecuted. Given enough disk space,we will also include the sourcecode. Source code file`}s will have a.C extender.XXXPORTING FILESBefore using an ST program, you musttransfer it to an ST disk. Thisprocess a}of transferring filesbetween computers is called"porting."XXX To port a file from the AnticMonthly disk to an ST disb}k, you'llneed: - A telecommunications programfor the ST which supports XMODEMfile transfers. Chat (version 1.1)or PCc}/InterComm will work).XXX - A similar program for your8-bit Atari which supports XMODEMfile transfers. Chameleon ord}BackTalk will work. Unfortunately,HomeTerm won't do the job because ittranslates all carriage returns intoATASCII value 1e}55. Also, don'texpect to succeed at ST porting withany version of AMODEM.XXXA - 8-bit Atari computerB - An Atari 850 f}Interface Module with a modem cable (RS-232 to D-9.)C - Null modem connectorD - Gender changer (if required)E - Yog}ur ST    | A |=>| B |=>| C |=>| D |=>| E |     Sample porh}ting configurationXXX IMPORTANT: Both modem programsmust be configured similarly. Ifyour 8-bit software is set for 1i}200baud, your ST software also must beconfigured for 1200 baud. You may use any baud rate whichis supported by both prj}ograms.Antic used PC/InterComm andChameleon to port files at 9600baud.XXX Additionally, BOTH programs mustbe set fok}r 8-bit (binary) filetransfers. Once both computers are linkedtogether and both modem programs arerunning, you may begl}in the filetransfer. You can also reverse thisprocedure to transfer files from STdisks to your 8-bit machine.XXXWALK-m}THROUGH DEMOLet's walk-through a sample filetransfer. We'll use BackTalk on an8-bit machine, and Chat on the ST. Conn}figure BackTalk for 1200 baud,with Full Duplex and ASCIItranslation. Press [SELECT],choose the XSEND option, selectXMODo}EM protocol and enter the nameof the file you wish to port.XXX From the ST desktop, double clickon CHAT.PRG. Make sup}re Chat isrunning at 1200 baud. Use the [F7]function key to change baud rates,if necessary. Now press [F6] andclick on q}the RECEIVE button. Whenthe file selector box appears, press[ESCAPE] and type the name of thefile to receive. Press [RETr}URN] orclick on OK.XXX To begin the transfer, press the[F3] key on the ST and press [START]on the 8-bit Atari. Ws}hen you're done, remember topress the ST's [F10] key to closeany open files. You'll also want tomove your ported program t}out of theSUPPORT folder and onto anotherdisk, where you can make backupcopies.XXX Occasionally some versions ofXMOu}DEM will append extra "garbage"characters to your files. Textfiles, such as C listings, areparticularly susceptible to thv}isproblem. If your implementation ofXMODEM appends garbage characters toyour source code, you must removethose characterw}s with a text editorbefore compiling the program.by CHARLES JACKSONAntic Program EditorFor those ST owners who do not 4 WELCOME TO THE ANTIC MONTHLY DISKMost of the pry}ograms on this side of the disk are for the ATARI 520 ST.We recommend you refer to thecorresponding issue of ANTIC forcoz}mprehensive documentation. If youwish to order a back issue, or needsubscription information, contact usat (415) 957-0886 {}or, for credit cardorders, dial (800) 227-1617, Ex. 133.In California,(800) 722-3545, Ex. 133XXXThe menu that appeared o|}n the screenwhen you booted the disk will onlyRUN programs with a .BAS extender.(NOTE: The menu WILL NOT RUN ST }}BASIC programs!)If you try to run a program and theresponse is 'cannot run Filename',then check the file extender withthe~} following list:XXX.SYS Reserved for DOS system files..DAT Data file. Usually accessed by another program..T}XT Text file. Usually accessed by another program.XXX*** Files for the 520 ST ***.C C Language source cod}e. Must be ported to an ST disk. See the corresponding article for complete details..BAS An ST BASI}C program. WILL NOT RUN on 8-bit computers!!! Must be ported to an ST disk. See the corresponding} article for complete details.XXX.PRG A compiled ST program. Must be ported to an ST disk. See th}e corresponding article for complete details..PAS Pascal language source code. Must be ported to an ST disk}. See the corresponding article for complete details.XXX Whenever possible, we will try toadapt our pr}ograms to work with asmany configurations of C as possible.But we think ANTIC's published Clistings should come as close a}spossible to the industry standard. At this time, only the Lattice,Alcyon, GST and Megamax C packagesdo this.XXXAl}l programs from ANTIC issues datedprior to August 1984 were reproducedfrom ANTIC's Archive. We've updatedthem from our HE}LP columns andmost are compatible with the XL andXE machines. We have worked to insurethat our programs operate aspublish}ed, but we consider all oursoftware listings to be works inprogress which we encourage you topersonalize and enhance.Goo}d luck, and ENJOY!-ANTIC EDware listings to be works inprogress which we encourage you topersonalize and enhance.Goo PROGRAM CountLines;{Sample Personal Pascal application to count the number of lines in}{ a text file chosen by the user wit}h the GEM Item Selector dialog.}{ By Christopher F. Chabris for ANTIC Magazine, 26-27 January 1986.}CONST {$I GEMCONST.P}AS}TYPE {$I GEMTYPE.PAS} tftype = FILE of TEXT;VAR pathname,filename : Path_Name; selection : boolean;{$I GEMSUBS.}PAS}PROCEDURE ItoS (int : integer; VAR inttext : string);{Generic procedure to convert integers to strings, packs front w}ith zeros.}VAR place,digit : integer;BEGIN FOR place:=4 DOWNTO 0 DO BEGIN digit:=int DIV Round(PwrOfTen(place)); } inttext[5-place]:=Chr(digit+Ord('0')); int:=int MOD Round(PwrOfTen(place)); END;END; {ItoS}PROCEDURE Count (filena}me : Path_Name);{Count lines in file by reading lines until end-of-file condition. Report}{ the total in alert box. (Chan}ge mouse to bee while I/O is in progress!)}VAR textfile : tftype; linecount,index,dummy : integer; lcstring,alerttext : }string;BEGIN Set_Mouse(M_Bee); reset(textfile,filename); linecount:=0; WHILE (not eof(textfile)) DO BEGIN readln(t}extfile); linecount:=linecount+1; END; close(textfile); ItoS(linecount,lcstring); alerttext:='[1][File contains:| } |lines of text.][ OK ]'; FOR index:=1 TO 5 DO alerttext[index+23]:=lcstring[index]; Set_Mouse(M_Arrow); dummy:=Do_A}lert(alerttext,1);END; {Count}BEGIN {Main Module} IF Init_Gem>=0 THEN BEGIN pathname:='A:\*.*'; selection:=true}; REPEAT selection:=Get_In_File(pathname,filename); IF selection THEN Count(filename); UNTIL selection=false; } Exit_Gem; END;END. {CountLines}{ a text file chosen by the user witY 100 'Random I/O Files in ST BASIC 110 'ver. 011386 120 'Written by David Stambaugh 130 '(c)1986 Antic Publishing} 140 ' 150 DISK=1: OUTPUT=2 160 TRUE=(-1): FALSE=0 170 clearw OUTPUT: fullw OUTPUT 180 ' 190 open "R",#DISK},"a:\TEST.DAT",35 200 field #DISK, 10 AS PHONE$, 25 AS PERSONAL$ 210 print:gotoxy 0,5 220 input "How many records to} store > ";COUNT% 230 ' 240 for RECORD=1 to COUNT% 250 clearw OUTPUT: gotoxy 10,0 260 print "Input For Record} Number ";RECORD;" of ";COUNT% 270 gotoxy 0,5:input "NAME:",B$ 280 gotoxy 0,10:input "PHONE:",A$ 290 lset PHON}E$=A$: lset PERSONAL$=B$ 300 gotoxy 10,15:print "Please Wait. Writing data to file." 310 put #DISK, RECORD 320 n}ext RECORD 330 close #DISK 340 '- - - - - - - - - - - - - - - - - - - - 350 ATTEMPT=TRUE 360 open "R",#DISK,"a:\T}EST.DAT",35 370 ' 380 while ATTEMPT=TRUE 390 A$=" ": 'Ten Spaces 400 B$=" ":} 'Twenty-Five Spaces 410 clearw OUTPUT: gotoxy 0,0 420 CHOICE%=FALSE: input "( 0=end ) Look at file number ";CHOICE}% 430 if CHOICE% then gosub READRECORD else ATTEMPT=FALSE 440 wend 450 ' 460 close #DISK 470 clearw OUTPUT }480 ' 490 end 500 '-------------------------------------- 510 ' 520 READRECORD: 530 if CHOICE%>COUNT% then r}eturn 540 field #DISK, 10 AS PHONE$, 25 AS PERSONAL$ 550 get #DISK, CHOICE% 560 lset A$=PHONE$: lset B$=PERSONAL$ 5}70 gotoxy 0,4: print "Name > ";B$ 580 gotoxy 0,8: print "Phone > ";A$ 590 for delay=0 to 2000: next delay 600 retu}rn 110 'ver. 011386 120 'Written by David Stambaugh 130 '(c)1986 Antic Publishing' /* * Joystick Demonstration Program * (c) 1986 Antic Publishing * Ver. 013086 * Written By Patrick Bass * * Th }e purpose of this program is to demonstrate * accessing the joystick port on the 520ST. * *--------------------------- }-------*/ #include "osbind.h" #define CON 2 #define IKBD 4 #define CR 0x0d #define LF 0x0 }a #define TRUE (1) #define FALSE (0) #define not ! #define nothing char joyrec[ 3 ], stick0, stick1; } static char mousedata[]={ 0,0,1,1 }; int contrl[ 12 ], intin[ 128 ], ptsin[ 128 ], intout[ 128 ], ptsout[ 12 }8 ], work_in[]={ 1,1,1,1,1,1,1,1,1,1,2 }, work_out[ 57 ], handle, i, j, k, l, flagged, active; int joys }tick(); struct ikbdvbase { long midivec; long vkbderr; long vmiderr; } long statvec; long mousevec; long clockvec; long joyvec; long midisys; } long ikbdsys; }; struct ikbdvbase savesys, *kbase; /*-------------------------------- }--*/ main() { initialize(); do{ stick0=stick( 0 ); stick1=stick( 1 ); Ccon }ws( " Stick zero is: " ); Pbyte( stick0 ); Cconws( " " ); Cconws( " Stick One is: " ); Pb }yte( stick1 ); Bconout( CON, CR ); }while( active ); terminate(); } /*----------------------- }-----------*/ initialize() { appl_init(); handle=graf_handle( &i, &j, &k, &l ); v_opnvwk( work_in, &handl }e, work_out ); kbase=Kbdvbase(); savesys.midivec=kbase->midivec; savesys.vkbderr=kbase->vkbderr; }savesys.vmiderr=kbase->vmiderr; savesys.statvec=kbase->statvec; savesys.mousevec=kbase->mousevec; savesys.c }lockvec=kbase->clockvec; savesys.joyvec=kbase->joyvec; savesys.midisys=kbase->midisys; savesys.ikbdsys=kbas }e->ikbdsys; kbase->joyvec= &joystick; Bconout( IKBD, 0x15 ); active=TRUE; flagged=FALSE; } /* }----------------------------------*/ terminate() { Bconout( IKBD, 0x1a ); kbase->joyvec=savesys.joyvec; } Initmous( 1, &mousedata, kbase->mousevec ); v_clsvwk(handle); appl_exit(); } /*------------------------- }---------*/ stick( which ) int which; { char state; Bconout( IKBD, 0x16 ); do{ nothing; }while( not f }lagged ); flagged=FALSE; if( joyrec[ 1 ] & 0x80 ) active=FALSE; state=joyrec[ which ]; return( }state ); } /*----------------------------------*/ joystick( buffer ) char buffer[ 3 ]; { if( not flagged ){ } for ( i=0; i<2; i++ ) joyrec[ i ]=buffer[ i ]; flagged=TRUE; } } /*------------------------------- }---*/ Pbyte( value ) char value; { Pdigit( value>>4 ); Pdigit( value ); } /*--------------------------- }-------*/ Pdigit( value ) char value; { value=value&0x0f; if( value >= 0x0a ) value=value+0x07; value }=value+0x30; Bconout( CON, value ); } er. 013086 * Written By Patrick Bass * * Th K /* * Atari 520ST PONG * (c) 1986 Antic Publishing * Ver. 012786/10:00a * Written by Patrick Bass * * The purpos$}e of this program is to give * a practical demonstration of joystick access. * *----- Alcyon Include File ------------*$}/ #include "osbind.h" #define CON 2 #define IKBD 4 #define CR 0x0d #define LF 0$}x0a #define not ! #define equals == #define begin { #define end } #define endif } #def$}ine next } #define BREAKOUT 2 #define AND && #define TRUE 1 #define FALSE 0 #define WHI$}TE 0 #define BLACK 1 char packet[ 3 ], stick0, stick1, welcome[]="[1][ AnticPong | (c) 1986 Ant$}ic Publishing ][ Go ]", talert[]="[3][ Desired type of game? ][ Handball | Breakout ]", mdata[]={ 0,0,1$},1 }; int contrl[ 12 ], intin[ 128 ], ptsin[ 128 ], intout[ 128 ], ptsout[ 128 ], w$}ork_in[]={ 1,1,1,1,1,1,1,1,1,1,2 }, work_out[ 57 ], handle, i, j, k, l, flag, button, finished, resol$}ution, di, joypress, pel, type_game, ox, oy, nx, ny, gamego, port_state, opx, opy, px, py, pw, ph, pvel$}, zw, zh, maxrow, maxcol, ball, oballx, obally, ballx, bally, ballw, ballh, $} ballxvel, ballyvel, xres, yres, maxcolor, pxyarray[ 10 ], blkrow[ 15*32 ], blkcol[ 15*$}32 ], benable[ 15*32 ]; int joystick(); struct ikbdvbase { long midivec; $} long vkbderr; long vmiderr; long statvec; long mousevec; long clockvec; $} long joyvec; long midisys; long ikbdsys; }; struct ikbdvbase sa$}vesys, *kbdvbase; /*-------------------------------------*/ main() begin initialize(); do{ po$}ng(); }while ( not finished ); terminate(); end /*-------------------------------------*/ initialize() begin $} appl_init(); handle=graf_handle( &i, &j, &k, &l ); v_opnvwk( work_in, &handle, work_out ); xres=work_ou$}t[ 0 ]; yres=work_out[ 1 ]; maxcolor=work_out[ 13 ]; form_alert( 1, welcome ); for( i=0; i<10000; i$}++ ); type_game=form_alert( 1, talert ); v_hide_c( handle ); kbdvbase=Kbdvbase(); savesys.midivec$}=kbdvbase->midivec; savesys.vkbderr=kbdvbase->vkbderr; savesys.vmiderr=kbdvbase->vmiderr; savesys.statvec=k$}bdvbase->statvec; savesys.mousevec=kbdvbase->mousevec; savesys.clockvec=kbdvbase->clockvec; savesys.joyvec=$}kbdvbase->joyvec; savesys.midisys=kbdvbase->midisys; savesys.ikbdsys=kbdvbase->ikbdsys; kbdvbase->joyvec=$} &joystick; Bconout( IKBD, 0x15 ); resolution=Getrez(); button=TRUE; finished=FALSE; flag=T$}RUE; opx=px=(xres/2); opy=py=(yres-(yres/10)); pw=(xres/20); ph=(yres/60); pvel=4; ob$}allx=ballx=(xres/2); obally=bally=(yres/2); zw=(xres/20); zh=(yres/60); if( resolution equals 0 )$} begin maxrow=7; maxcol=11; ballw=2; ballh=2; ballxvel=2; ballyvel=(-1); endif $} if( resolution equals 1 ) begin maxrow=7; maxcol=15; ballw=2; ballh=2; ballxvel=2; ballyvel$}=(-1); endif if( resolution equals 2 ) begin maxrow=7; maxcol=15; ballw=3; ballh=3; $} ballxvel=3; ballyvel=(-2); endif for( i=0; i<(15*32); benable[ i++ ]=FALSE ); end /*-------------$}------------------------*/ terminate() begin Bconout( IKBD, 0x1a ); kbdvbase->joyvec=savesys.joyvec; In$}itmous( 1, &mdata, kbdvbase->mousevec ); v_show_c( handle, 0 ); v_clsvwk( handle ); appl_exit(); end $} /*-------------------------------------*/ pong() begin draw_board(); if( type_game equals BREAKOUT ) draw_fie$}ld(); for( ball=1; ball<6; ) begin move_paddle(); draw_paddle(); check_for_block(); $} move_ball(); draw_ball(); next finished=TRUE; end /*---------------------------------$}----*/ draw_board() begin int box[4]; box[ 0 ]=0; box[ 1 ]=0; box[ 2 ]=xres; box[ 3 ]=yres; vsf_$}interior( handle, 2 ); vsf_style( handle, 8 ); vsf_color( handle, WHITE ); v_bar( handle, box ); bo$}x[ 0 ]=10; box[ 1 ]=10; box[ 2 ]=xres-10; box[ 3 ]=yres; vsf_color( handle, BLACK ); v_bar( handle, box ); $} end /*-------------------------------------*/ move_paddle() begin joypress=stick( 1 ); if( joypress&0x01 $}) py=py-pvel; if( joypress&0x02 ) py=py+pvel; if( joypress&0x04 ) px=px-pvel; if( joypress&0x08 ) px=px+pve$}l; if( px<=10 ) px=10; if( px>=(xres-10-pw)) px=(xres-10-pw); if( py<=(yres/2) ) py=(yres/2); if( p$}y>=( yres-ph )) py=( yres-ph ); end /*-------------------------------------*/ draw_paddle() begin int box[4]; $} box[ 0 ]=opx; box[ 1 ]=opy; box[ 2 ]=opx+pw; box[ 3 ]=opy+ph; vsf_interior( handle, 2 ); vsf_style( h$}andle, 8 ); vsf_color( handle, BLACK ); v_bar( handle, box ); box[ 0 ]=px; box[ 1 ]=py; box[ 2 ]=px$}+pw; box[ 3 ]=py+ph; vsf_color( handle, WHITE ); v_bar( handle, box ); opx=px; opy=py; end /*--------$}-----------------------------*/ move_ball() begin ballx=ballx+ballxvel; bally=bally+ballyvel; if( (ball$}x>=px) AND (ballx<=(px+pw))) begin if( (bally>=py) AND ( bally<=(py+ph))) begin beep( 3 ); $} ballyvel=(-ballyvel); endif endif if( ballx<=10 ) begin ballx=10; b$}allxvel=(-ballxvel); beep( 1 ); endif if( ballx>=(xres-ballw-10)) begin ballx=(xres-ballw$}-10); ballxvel=(-ballxvel); beep( 1 ); endif if( bally<=10 ) begin bally=10; $} ballyvel=(-ballyvel); beep( 2 ); endif if( bally>=yres ) begin ball=ball+1; $} ballx=(xres/2); bally=(yres/2); for( i=0; i<25; i++ ) begin beep( i/2 ); next $} endif end /*-------------------------------------*/ draw_ball() begin int box[4]; box[ 0 ]=oballx; $}box[ 1 ]=obally; box[ 2 ]=oballx+ballw; box[ 3 ]=obally+ballh; vsf_interior( handle, 2 ); vsf_style( handle$}, 8 ); vsf_color( handle, BLACK ); v_bar( handle, box ); box[ 0 ]=ballx; box[ 1 ]=bally; box[ 2 ]=b$}allx+ballw; box[ 3 ]=bally+ballh; vsf_color( handle, WHITE ); v_bar( handle, box ); oballx=ballx; obally=$}bally; end /*-------------------------------------*/ draw_field() begin int row, col, color; for( row=0;$} row=zx) AND (ballx<=(zx+zw))) begin if( (bally>=zy) AND ( bally<=(z%}y+zh))) begin if( benable[(row*maxcol)+col] equals TRUE) begin bally%}vel=(-ballyvel); draw_block( zx, zy, 1 ); benable[ (row*maxcol)%}+col ]=FALSE; beep( 4 ); block_replace(); %} endif endif endif next next end /*----------------------------% }-------------------*/ block_replace() begin int row, col, found; found=FALSE; for( row=0; rowdN&>"N #( y( ## y( ## y( ## y()} # # y( #$ y( #$ y( #$ y( #$ y( # $ y( !| l>?<?<NX>N 3)}#3(ByN3(Byl09\H3X3'0929H A3b3(09\H3Z09H<3(3)}09\H3'3Z09H3'309\H3p09H<34Jy#f03( 3 3$03)}3j3n y#f03( 33$033j3n y#f03( 33$033)}j3nBy\`0y\ &BPRy\ y\mN^NuNV>?<?<NX y( !y$ y( ./<?<BgN P)}BW?9dN~T>dN NN^NuNVaB y`faD3(`aaaaa@ y(m3NN^NuNVBnBn=y)}\=y>?9dN T>?9dNDTBW?9dNT.Q?9dN T=| =| 09\|=@=y>?9)}dNT.Q?9dN TN^NuNV>ax3#9#g09by3b9#g09by3b9#g09Xy)}3X9#g09Xy3X y Xn3 X09\|yZyXn09\|yZ3X09Hybm09)}H3b09y(ybn09y(3bN^NuNV=y'=y(09'yZ=@09(y(=@>?9dN T) }>?9dNDT>?9dNT.Q?9dN T=yX=yb09XyZ=@09by(=@BW?9dNT.Q?9)!}dN T3X'3b(N^NuNV09'yj3'09'yn3'09'yXmL09XyZy'm809'ybm*0)"}9by(y'm>aZ09nD@3n y 'n3 '09jD@3j>a$09\y$0|y'n,09\y$0|3)#}'09jD@3j>a y 'n3 '09nD@3n>a09'ym\09(R@3(09\H3'09H3)$}'By\`09\H>a^Ry\ y\mN^NuNV=yZ=y09Zy$0=@09y=@>?9dN T>?9)%}dNDT>?9dNT.Q?9dN T=y'=y'09'y$0=@09'y=@BW?9dNT.Q?9dN)&} T3'Z3'N^NuNVBn`Bn`=nJy#f nf=| y#f0.|=@ nf=| y#fBn)'}094Z@|2.n2A$2209p| |2.n2A20.n0@ &0>09)(}4Z@?W09p| ?Wa*XRn0.ymRn0.y( mN^NuNV=n=n 0.yp=@0. y4=@>))}?9dN T>?9dNDT> ?9dNT.Q?9dN TN^NuNVBn`Bn`0.n0@$2=P0.)*}n0@=P09'nm0.ypy'm09'nmv0.y4y'mb0.n0@ & PfD09n)+}D@3n>?.?.aX0.n0@ &BP>aa(Rn0.ymRn0.y( mN^NuNVBnBn`>Bn`(0.),}n0@ & Pf=|Rn0.ymRn0.y( mJnfaN^NuNV>?<?<NXJy(f3( |)-}2nP.HN^NuNV>?<?<N X>Bg?<N X>?9#?<N X3#>?<. H??<).}N XBn`Rn nm>Bg?<N X>?9#?<N X>Bg?<N XN^NuNVJy(g:By\`" |2y\"n)/}4y\Ry\ y\mBy(N^NuNV# $3 $3$By$3$"3$$N#j$N^NuNV3e$By$)0}By$3$$NN^NuNV3{$By$By$3$$NN^NuNV# #( .мZ#,3d$By$3 $)1} n 3$$N n 0$$#4 #6(#l,#j$N^NuNV3 43$By$3$3$$N096N)2}^NuNV3 43$By$3$3$$N096N^NuNV3 43$By$3$3$$N096N^NuNV3)3} 43z$By$3$3$$NN^Nu#$"<psNBNuNV3^0.|Hм:-@=|` nH2n)4}^2RRn nm. "N>B@09N^NuNV#^6#r:#f>#B#'F#(J#6 ">)5} aF3$pN^NuNV>a*pN^NuNV3f# '>4NN^NuNV>MN n0 n 0 n0 n0)6}B@09N^Nu#0NN/90Nu#0NM/90Nu#0NA/90Nu)7} )8})9}[1][ AnticPong | (c) 1986 Antic Publishing ][ Go ][3][ Desired type of game? ][ Handbal):}l | Breakout ]_crystal>_ctrl_cn:_welcome_talert_mdata_work_in);}_mainJ_initiald_pong_termina_joystic l_draw_bo:_draw_fi H_move_pa_draw_pa)<}_check_f _move_ba_draw_bab_stick h_beep _draw_bl r_block_r _v_bar _v_clsvw)=} _v_hide_&_v_opnvwP_vsf_col_vsf_int _vsf_styD_v_show_~_gsx1_gsx2_iioff)>} _iooff(_pioff$_pooff,_vdi_crys_if_appl_in2_appl_ex_form_al_graf_ha)?}_gemdos*_bios_xbios _intin4_zh4_intout6_c6_finisheN_nx)@}P_oxR_oyT_nyV_pxX_pwZ_i\_j^_type_ga`_py)A}b_handled_kf_lh_ptsinj_ballxvej_ptsoutl_gamegol_ballyven_zw)B}p_globalr_maxcolo_packet_pvel_blkcol_pelX_oballxZ_xres\_contr)C}ol^_int_inf_int_out_maxcol_obally_ballh_yres_work_ou_pxyarra _ad_c)D} "_benable &_joypres#_port_st#_stick0#_resolut#_di#_savesys#_stick1$_gl_)E}apid$_contrl$_ballw$0_blkrow$2_addr_in'_ballx'_bally'_opx'_opy(_ph)F}(_flag(_button(_ball(_maxrow( _kbdvbas( _addr_ou(.$   )G}                    )H}                         $)I}$   "   $    && * $    )J}  $   )K} - ЭЭм// ??<JNA NJ/<NA"/0<NBNuNVaaJyNga*N((`f b*O.| *m - ЭЭм// ??<JNA NJ/<NA"/0<NBNuNVaBWa">-M}aH.?< NVT9"H>a^.?< NVT.?< NVT9HH>a,> ?<?<NFXJyjfxa-N}N^NuNVN. J/< H/< D/< BN 3 F./< F/<NP>"N6# y#$ y#-O}( y#, y# 0 y#4 y#8 y#< y#@ y# D y!|>?<?<-P}NFX3jByN^NuNV>?<?<NFX y!y< y./<?<BgN6P> FNVNN^NuNV>?-Q}<?<NFXJygBy9gByj |2nP.HN^NuNVJyfa. H>aN^NuNV. H|@ . m . H^@@ . H|0@ . H>?<?<N-S}FXN^NuNV3eLByNByR3XNN^NuNV# #  .мZ# "3dLByN3 R n 3XN n-T} 0X# * # * #L "# L N^Nu#L "< psNBNuNV3l0.|Hмf-@=|` nH-U}2nl2RRn nm.N>B@09N^NuNV#l *#L .#t 2# 6#d :#l ># *-V}> aF3JpN^NuNV>a*pN^NuNV>MN n0 n 0 n0 n0B@09N^Nu# &NN/9 -W}&Nu# &NM/9 &Nu# &NA/9 &Nu-X} -Y}-Z} Stick zero is: Stick One is: _crystal>_ctrl_cnf_work_in-[}_mainJ_initial_stickL_Pbyte_termina_joystic_Pdigit_v_clsvwV_v_opnvw-\}_gsx1_gsx2_iioff _iooff _pioff _pooff "_vdi_crys_if_appl_in-]}_appl_ex_graf_ha_gemdosV_biosF_xbios6_intin *_intout *_c *_i-^} B_j D_handle F_k H_l J_ptsin L_ptsoutL_globalL_activej_control-_}l_int_int_int_out_work_ou_kbase_ad_c_flagged_joyrec_stick0"_savesys-`}$_stick1H_gl_apidJ_contrlL_addr_ind_addr_oul.(     -a}    l    &  -b}JNA NJ/<NA"/0<NBNuNVaBWa">,B@STm } AXLPB0NZ 1d} +AdAUuA@'A @9A@K@@]@@7c(1e}}uAR@++(#++(#| ANTIC MONTHLY DISK MAY 1986 |++(#1f}( | Side 'B' |++(# @ -@A1g} $ GG;@@,;@ ,;@@,;A,;@,;@@, "D1:MENU" &&@@1q}Rb'DOS SYSb*+DUP SYSbUAUTORUN SYSbWHELP BASb\PORT TXTbxDOC TXTbCNTLIN PASbRANDIO BASbJOYSTICKC bRPONG C b9PONG PRGbLJOYSTICKPRGbcMENU D:*.* 6,6." 6 @0i6-%@(6.7@<@,A67@ <@ ,..1r}i67@<@,.7@<@,3 6.|67B:,%@,.367B:,%@,.G67@<@,.(--@1s}B:,:7<,4 G67<,..] 6.=:, @D67@<@,.7@<@,]67@<@,1t}.0$@(''7@<@,4FREE@- @ 2() <@F''7@<1u}@,4FREE@K @ P(7@<@,)|U @0W'!-@6+'@,%@' |Z++(1v}#| |[ ( |  |\++(#d**(" Sel1w}ect HELP.BAS for information.xAR[@@9'-@@#C( FILE NUMBERM A01x}Q[ BP:,A00"@&6.7@<@,0 AELB6.7+&@,$@%@<+&1y}@,$@%@,L B37@<@,4 36.7@<@,!7@<@,4DOS!.0 61z}.-@B:,07<,4 AH67B:,%@,.7<,   6.! 6.D1:!67B:,%@,.?A1{}R@'-@@"?  LOADING ? A@@91@@5%? B[-@1|}@"-  CANNOT RUN 7 @LF:A,"@![% D:HELP.BAS B A0D1:MENU.AR1}}TOON.SYSMENU.DOC.TXT .TXTC |ATARTOON.SYS(TA0063  0>