@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* MENU 018 COPYING---D1:MENU4}# 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` WELCOME TO THE ANTIC MONTHLY DISKMost of the pr X}ograms on this side of the disk are for the ATARI 520 ST.We recommend you refer to thecorresponding issue of ANTIC forco Y}mprehensive documentation. If youwish to order a back issue, or needsubscription information, contact usat (415) 957-0886 Z}or, for credit cardorders, dial (800) 227-1617, Ex. 133.In California,(800) 722-3545, Ex. 133XXX *** BONUS FILES * BONUS [} FILES ***HOLIDAY.PC1 is a picture created byPatrick Bass, Antic's ST ProgramEditor. It was drawn with DEGASELITE, fro \}m Batteries Included, andfeatures two levels of animation!To see it, transfer this file to anST disk, run DEGAS ELITE, lo ]}ad thisfile, and enable the animationsequence, (but don't rent the room!).NOTE: This picture will NOT WORKwith the origi ^}nal DEGAS program.(Color monitor required.)XXX *** MORE BONUS FILES ***Whenever there is sufficient room,we will be _}including TYPO-ST andLINKLINE on the monthly disks.Please see the HELP files on thisside of the disk for LINKLINEinstruc `}tions.XXXThe menu that appeared on the screenwhen you booted the disk will onlyRUN programs with a .BAS extender. a}(NOTE: The menu WILL NOT RUN ST BASIC programs!)If you try to run a program and theresponse is 'cannot run Filen b}ame',then check the file extender withthe following list:XXX.SYS Reserved for DOS system files..DAT Data file. Usu c}ally accessed by another program..TXT Text file. Usually accessed by another program..PI2 A Med.-resoluti d}on DEGAS picture file.XXX*** Files for the 520 ST ***.C C Language source code. Must be ported to an e} ST disk. See the corresponding article for complete details..BAS An ST BASIC program. WILL NOT RUN f}on 8-bit computers!!! Must be ported to an ST disk. See the corresponding article for complete de g}tails.XXX.PRG A compiled ST program which uses GEM. Must be ported to an ST disk. See the correspo h}nding article for complete details..TOS A compiled ST program which does not use GEM. Must be ported i} to an ST disk. See the corresponding article for complete details..S 68000 Assembly language sou j}rce code. Must be ported to an ST disk. See the corresponding article for complete details.XXX Whe k}never possible, we will try toadapt our programs to work with asmany configurations of C as possible.But we think ANTIC's l}published Clistings should come as close aspossible to the industry standard. At this time, only the Lattice,Alcyon, GS m}T and Megamax C packagesdo this.XXXAll programs from ANTIC issues datedprior to August 1984 were reproducedfrom ANTIC W}  "EXLINEAFxxy &&;A ,;@,;@,W (} ( (1) HELP file#(@(o}(2) How to 'port' filesW( to an ST disk (( SELECTION(+41)42,@ ,6. D:DOC.TXTp}42,6. D:PORT.TXT1 (}@1@@ A(@2vB:,!@-q}7@<@,4XXX0(3(E-@@"Y(ӠΠf@l(}v @@<( @@dj@r} B*-@@"R("ΠҠՠҠˠҠ_@j%D:MENU D1:HELP.BASile#(@(r` *O.|r*m - ЭЭм// ??<JNA NJ/<NA"/0<NBNuNVaaJygaHNt}^NuNVNZ./</</<N $ 3>.j/<>/< N&P. ?<NTByByN^NuNV. <u}?<NT3 yfa< yfa. ?<NT3 yf3N^NuNV. r?<NTBy<`Ryv}< y>Naa>>NN^Nuw}NV. ?<NTah09,|3f09,|@3:. ?<NTD:*B9./</<x}NPJyg">>N>a&a>>NN^NuNVBy`By<`Ry< y?<?<N vy}X>f?<?<N vX>:?<?<N vXByd`*0yd"|00H>?<?<N vXRyd09dy,m>?<?<Nz} vXN^NuNV32>N 3h09h|A:*.*B9B9./</<NPJy{}gv>>N>/<?<=N \32 y2o$.0/9 n?92?<?N P3,>2?<>N T>>NN|}^NuNV>>NBW/<?<2?<>N T>>NN^NuNV}}>>N>aa>>NN^NuNV>?<N vT3& y&f>?<N vT3f>?<N vT3:09:~}@yf3.Byd`* |02yd/?<?<N vX _Ryd09dy.m3d,N^NuNV>?<?<N vX nf>}S?<?<N vX nf>L?<?<N vXBy`> |2y \g$0y"|0H>?<?<N vXRy |2y}J(nBy`*0y"|0H>?<?<N vXRy |2y n> ?<?<N vXN^NuNV. :?<N}T>>NNN^NuNV3eBByDByH3NNN^NuNV3{BByDByH3NNN^NuNV#z#} .мZ#3dBByD3 H n 3NN n 0N#z###~N^NuNV3 3}zBByD3H3NNN^Nu#Bv"<vpsNBNuNV30.|Hм -@=|` nH2n2}RRn nm.4N>B@09 N^NuNV#### #Z##4> aF3} @pN^NuNV>a*pN^NuNV3# Z>4NN^NuNV#Z# ^>ZN n0"B@09 N^NuNV>}MN n0" n 0$ n0& n0(B@09 N^Nu#NN/9Nu#NM/9Nu#NA/9Nu} }}[1][ Welcome to LinkLin}e/ST | v.041286 ][ Perform ][3][ Load: 8Bit->ST Save: ST->8Bit ][ Load | Save ][3][ Enter the 8Bit file to load. ][ Selec}t ][3][ Select the ST file to transfer. ][ Select ][3][ Select the new device:filename.ext ][ Select ][3][ Want to tran}sfer another file? ][ Yes | No ][3][Thanks for using|LinkLine/ST|v.041286][ Exit ]}_crystal>_ctrl_cn _workin} _hialert _typeale <_loadler r_saveler _devaler _moreale _tksaler :_max_len n_main}J_initiald_communi_termina_load_fi8_save_fi_load_8B_write_tL_read_thX_send_}co_send_fi_get_fil_v_clsvw_v_hide__v_opnvw&_v_show__gsx1_gsx2_iiof}fz_iooff_pioff~_pooff_vdi_crys_if_appl_inZ_appl_ex_form_al_fse}l_in_graf_ha $_gemdos _bios v_xbios f_intin_intout_org_pal_c_mx}_my_finishe_new_pal_i_j_k_l_hi_word_w}rite_b_ptsin_path_ptsout_write_h_global_inchar&_lo_word(_pressed*_}bytes_r,_bytes_t._text_bu0_control_int_in_int_out _read_ha._dum0_file_ha2}_ad_c4_resolut8_lenhi:_delay<_gem_han>_gl_apid@_contrlB_addr_inZ_charact}b_file_ind_lenlof_driveh_workoutj_button_filenam_for_rea_action__addr_ou}_color.$            }            }$    .|r*m - ЭЭм// ??<JNA NJ/<NA"/0<NBNuNVaaJygaHNPhi AXLPB0NZCL25 } D +26-?:C:hhhԩ`,<A6,DAdAUuA@'A @9A}@K@@]@@7c(}uAR@++(#++(#| AN}TIC MONTHLY DISK DEC. 1986 |++(#( | Side 'B' |++(#} @ -@A $ GG;@@,;@ ,;@@,;A,;@,;@@}, "D1:MENU" &&@@D:*.* 6,6." 6 @0i6-%@}(6.7@<@,A67@ <@ ,..i67@<@,.7@<@,3 6.|67B:,%@,.367}B:,%@,.G67@<@,.(--@B:,:7<,4 G67<,..] 6.=:, @D67@}<@,.7@<@,]67@<@,.0$@(''7@<@,4FREE@- @ }2() <@F''7@<@,4FREE@K @ P(7@<@,)|U @}0W'!-@6+'@,%@' |Z++(#| |[ ( |  |\++(}#d**(" Select HELP.BAS for information.xAR[@@9'-}@@#C( FILE NUMBERM A0Q[ BP:,A00"@&6.7@<@,}0 AELB6.7+&@,$@%@<+&@,$@%@,L B37@<@,4 36.7@}<@,!7@<@,4DOS!.0 6.-@B:,07<,4 AH67B:,%@,.7<, }  6.! 6.D1:!67B:,%@,.?AR@'-@@"?  LOADING ? A@}@91@@5%? B[-@@"-  CANNOT RUN 7 @LF:A,"@![% D:}HELP.BAS B A0D1:MENU.TORUN .SYS:C:hhhԩ`,<A6|AUTORUN..SYS(AD260 FREE SECTORS2A} :hi AXLPB0NZCL25 ST LISTINGSON MONTHLY DISK...and how to get themby CHARLES JACKSONAntic Technical EditorFor those ST owners who do no}t yetown a C compiler, but are eager totry out Antic's C language listings,we are now including the executableobject code} on 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. 'C' source cod}e files willhave a .C extender, assemblylanguage source code will havean .S extender.XXXPORTING FILESBefore using an }ST program, you musttransfer it to an ST disk. Thisprocess of transferring filesbetween computers is called"porting."X}XX To port a file from the AnticMonthly disk to an ST disk, you'llneed the Linkline programs fromthe August 1985 issue}.(LINKLINE.PRG and LINKLINE.EXE are both included on this disk).XXXIf you don't have Linkline, youmay also use: }- A telecommunications programfor the ST which supports XMODEMfile transfers.FLASH or PC/InterComm will work).XXX - }A similar program for your8-bit Atari which supports XMODEMfile transfers. Chameleon orBackTalk will work. Unfortunately},HomeTerm won't do the job because ittranslates all carriage returns intoATASCII value 155. Also, don'texpect to succeed} at ST porting withany version of AMODEM.XXXA - 8-bit Atari computerB - An Atari 850 Interface Module with a modem }cable (RS-232 to D-9.)C - Null modem connectorD - Gender changer (if required)E - Your ST   } | A |=>| B |=>| C |=>| D |=>| E |     Sample porting configurationXXX IMPORT}ANT: If you're not usingLinkline, both modem programsmust be configured similarly. Ifyour 8-bit software is set for 1200}baud, your ST software also must beconfigured for 1200 baud. Additionally, BOTH programs mustbe set for 8-bit (binary) }filetransfers.XXX Once both computers are linkedtogether you may begin the filetransfer. You can also reverse this}procedure to transfer files from STdisks to your 8-bit machine.XXXWALK-THROUGH DEMO1) LINKLINE:Once both LINKLINE pro}grams arerunning, place the monthly diskinto the 5-1/4" drive, and sitdown at the ST. Choose theLOAD A FILE option and t}ype inthe name of the file you want totransfer. LINKLINE will pullthe file off of the monthly disk,and save it to an ST }disk.That's it. You're done.XXXWALK-THROUGH DEMO2) MODEM PROGRAMSLet's walk-through a sample filetransfer. We'll }use BackTalk on an8-bit machine, and FLASH on the ST. Configure BackTalk for 1200 baud,with Full Duplex and ASCIItrans}lation. Press [SELECT],choose the XSEND option, selectXMODEM protocol and enter the nameof the file you wish to port.X}XX From the ST desktop, double clickon FLASH.PRG. Make sure FLASH isrunning at 1200 baud. Type -Bto change baud} rates, if necessary. Now type -R (for RECEIVE).When the file selector box appears,press [ESCAPE] and type the name }ofthe file to receive. Press [RETURN]or click on OK. To begin the transfer, press the[START] button on the 8-bit Atar}i.XXX Occasionally some versions ofXMODEM will append extra "garbage"characters to your files. Textfiles, such as C} listings, areparticularly susceptible to thisproblem. If your implementation ofXMODEM appends garbage characters toyour} source code, you must removethose characters with a text editorbefore compiling the program.or those ST owners who do noa 1000 ' TYPO/ST 1010 ' (c) 1986 Antic Publishing 1020 ' Written by Patrick Bass and Bill Marquardt 1030 ' Version 050 }286 1040 '----------------------------------------------------------------- 1050 ' 1060 DISK=1: OUTPUT=2: TRUE=(-1): F }ALSE=0: CHECKSUMMING=TRUE 1070 TV=FALSE: PRINTER=FALSE 1080 ' 1090 print "File to Check:": input FILENAME$ 1100 pr }int "Output on:" 1110 print "(S)creen or ": print "(P)rinter ": input DEVICE$ 1120 if( DEVICE$="p" )or( DEVICE$="P" )th }en PRINTER=TRUE else TV=TRUE 1130 ' 1140 if TV then print "Checksum for file: ": print FILENAME$: print 1150 if PRINT }ER then lprint "Checksum for file: ";FILENAME$: lprint 1160 ' 1170 '----------------------------------------------------- }------------ 1180 open "I", #DISK, FILENAME$ 1190 ' 1200 while CHECKSUMMING 1210 LINENUMBER=0: CHECKSUM=0 1220 } ' 1230 gosub GETALINE 1240 ' 1250 DECIMAL=CHECKSUM: gosub DECTOHEX 1260 OUTPUT$=str$( LINENUMBER )+" :" }+HI$+LO$ 1270 if PRINTER then lprint OUTPUT$ else print OUTPUT$ 1280 wend 1290 ' 1300 close DISK 1310 end 13 }20 ' 1330 '----------------------------------------------------------------- 1340 GETALINE: 1350 BLINE$="": on error }goto 1300 1360 GOTALINE=FALSE 1370 ' 1380 while not GOTALINE 1390 line input#DISK, BLINE$ 1400 if len( BL }INE$ )>1 then GOTALINE=TRUE 1410 wend 1420 ' 1430 LINENUMBER=val( BLINE$ ) 1440 for CHAR=1 to len( BLINE$ ) 1450 } OK=TRUE 1460 CHARACTER$=mid$( BLINE$, CHAR, 1 ) 1470 if CHARACTER$=" " then OK=FALSE 1480 if OK then C }HECKSUM=CHECKSUM+asc( CHARACTER$+chr$( 0 )) 1490 next CHAR 1500 return 1510 ' 1520 '-------------------------------- }--------------------------------- 1530 DECTOHEX: 1540 DECIMAL=abs( DECIMAL ) 1550 HI=int( DECIMAL/256 ): LO=( DECIMAL }-( HI*256 )) 1560 HH=int( HI/16 ): HL=( HI-( HH*16 )) 1570 LH=int( LO/16 ): LL=( LO-( LH*16 )) 1580 HI$=chr$( 48+HH- }( 7*( HH>9 )))+chr$( 48+HL-( 7*( HL>9 ))) 1590 LO$=chr$( 48+LH-( 7*( LH>9 )))+chr$( 48+LL-( 7*( LL>9 ))) 1600 return 50 { 1000 'ST Classics: MASTERMIND 1010 '(c)1986 Antic Publishing 1020 'Written by Paul Pratt & Steven Evermann 1030 ' $}1040 defint A, Z:gosub KOLOR 1050 A#=GB:MOUSE=peek( A#+12 ) 1060 fullw 2:clearw 2:randomize 0:TRUE=1:FALSE=0 1070 ' 1$}080 clearw 2:color 1 1090 gotoxy 22, 0: print "#############" 1100 gotoxy 22, 1: print "# #" 1110 gotoxy 22,$} 2: print "#############" 1120 TXT=4:gosub TEXT 1130 gotoxy 24, 1: print "DEDUCTION" 1140 TXT=0:gosub TEXT 1150 color$} 1, 8, 14 1160 gotoxy 17, 17: print " ACCEPT REJECT"; 1170 gotoxy 25, 4: print "ANSWER" 1180 'answer box 1190 C=1:F$}=8:BX=206:BY=35:L=38 1200 W=89:gosub BOX:fill 229, 41:fill 269, 40 1210 BY=49:L=18:W=18:F=11 1220 for BX=210 to 281 ste$}p 21 1230 gosub BOX:next 1240 'deduction box 1250 F=0:C=14:BX=203:BY=6:L=17:W=94 1260 gosub BOX 1270 'message box $}1280 F=0:C=1:BX=206:BY=79:W=89:L=67 1290 gosub BOX 1300 'accept box 1310 F=7:C=1:BX=150:BY=152:W=72:L=12 1320 gosub $}BOX:fill 164, 158:fill 196, 157 1330 'reject box 1340 F=2:BX=222:W=72 1350 gosub BOX:fill 236, 157 1360 color 1, 11:f$}ill 3, 100 1370 gosub MENU 1380 COLUM=13 1390 'guessing boxes 1400 W=26:F=8:L=8:C=1:COLUM=COLUM-1 1410 for BY=6 to $}COLUM*12-4 step 12 1420 for BX=30 to 137 step 28 1430 gosub BOX:next:next 1440 'reply boxes 1450 W=8:F=8:L=8:C=9 146$}0 for BY=6 to COLUM*12-4 step 12 1470 for BX=151 to 193 step 12 1480 gosub BOX:next:next 1490 gosub INITIAL 1500 'po$}inter 1510 F=1:C=1:BX=10:BY=8:L=4:W=17 1520 gosub BOX 1530 gosub 2350 1540 ROW=1:COLUM=1 1550 FO=7 1560 MAINLOOP:$} 1570 gosub RAT 1580 F=INT( ( MX-10 )\20 ) 1590 IST=9+D*20 1600 if MB=1 and MX>IST and MX<150 and YOK and FO<>F then $}gosub CHOOSE 1610 if MB=1 and MX>222 and MX<294 and MY>173 and MO<>MX then gosub 1700 1620 if ROW =5 then gosub ACCEPT 1$}630 if MB=2 then 2230 1640 goto MAINLOOP 1650 CHOOSE: 1660 color 1, CO( F ):FO=F:GUS( ROW )=CO( F ) 1670 fill ROW*28$}+14, COLUM*12-2 1680 ROW=ROW+1 1690 return 1700 REJECT: 1710 gosub 2350: 1720 if ROW>1 then ROW=ROW-1 1730 color $}1, 8:FO=7 1740 fill ROW*28+14, COLUM*12-2 1750 for DELAY=1 to 10:next 1760 return 1770 BOX: 1780 color 1, F, C 179$}0 linef BX, BY, BX, BY+L 1800 linef BX, BY+L, BX+W, BY+L 1810 linef BX+W, BY+L, BX+W, BY 1820 linef BX+W, BY, BX, BY $}1830 fill BX+2, BY+2 1840 return 1850 ACCEPT:gosub EMPTY 1860 gotoxy 23, 10: print " ACCEPT":gotoxy 23, 12: print " $} OR " 1870 gotoxy 23, 14: print " REJECT" 1880 gosub RAT 1890 if MB=1 and MX>149 and MX<222 and YOK then 1920 19$}00 if MB=1 and MX>222 and MX<294 and YOK and MO<>MX then 1700 1910 GOto 1880 1920 BLK=0:WHT=0 1930 gosub 2350:'PRINT S$}ELECT 4 colorS 1940 for X=1 to 4 1950 if GUS( X )=PAT( X ) then BLK=BLK+1 1960 for Y=1 to 4 1970 if GUS( X )=PAT( Y )$} then WHT=WHT+1 1980 next:next:WHT=WHT-BLK 1990 color 1, 0:for X=1 to WHT 2000 fill X*12+146, COLUM*12-2 2010 sound 1$}, 10, 3, 5, 5:sound 1, 0, 0, 0, 0 2020 next 2030 color 1, 1:for X=1 to BLK 2040 fill ( X+WHT )*12+146, COLUM*12-2 2050$} sound 1, 10, 3, 6, 5:sound 1, 0, 0, 0, 0 2060 next 2070 F=11:C=11:BX=10:BY=COLUM*12-4 2080 L=4:W=17:gosub BOX 2090 $}ROW=1:COLUM=COLUM+1 2100 if BLK=4 then gosub WIN:goto 2230 2110 if COLUM>12 then MB=2:FO=0:return 2120 F=1:C=1:BX=10:BY$}=COLUM*12-4 2130 gosub BOX 2140 FO=7:return 2150 if FL=0 then TRYS=TRYS-1:gotoxy 13, 7: print TRYS 2160 INITIAL: 217$}0 RandOMIZE 0 2180 for X=D to 6 2190 TEMP=PAT( X ) 2200 Y=INT( RND*( 7-D ) )+D 2210 PAT( X )=PAT( Y ):PAT( Y )=TEMP $} 2220 next:return 2230 ANSWER: 2240 for X= 1 to 4 2250 color 1, PAT( X ) 2260 fill X*18+205, 51:next 2270 gosub ME$}NU 2280 for X= 1 to 4 2290 color 1, 11 2300 fill X*18+205, 51:next 2310 if COLUM>12 then goto 1400 2320 F=11:C=11:B$}X=10:BY=COLUM*12-4:W=17:L=4 2330 gosub BOX 2340 goto 1400 2350 ' 2360 gosub EMPTY 2370 color 11: gotoxy 23, 9: prin$}t "RIGHT=ANSW" 2380 color 1: gotoxy 23, 10: print string$( 11, 249 ) 2390 gotoxy 23, 11: print " SELECT" 2400 gotoxy $}23, 13: print " FOUR " 2410 gotoxy 23, 15: print " COLORS" 2420 return 2430 RAT: 2440 gemsys( 79 ) 2450 MX=peek($} MOUSE+2 ) 2460 MY=peek( MOUSE+4 ) 2470 MB=peek( MOUSE+6 ) 2480 YOK=FALSE: if MY>174 and MY<186 then YOK=TRUE 2490 re$}turn 2500 KOLOR: 2510 dim KOL%( 16 ) 2520 restore 2550 2530 for A=0 to 15:read B 2540 KOL%( A )=B:next 2550 data $}1911, 1792, 112, 51, 775, 80 2560 data 5, 1365, 546, 101, 51, 1904 2570 data 1796, 1360, 1285, 0 2580 defdbl K: K = 111%}4 2590 poke K, varptr( KOL%( 0 ) ) 2600 return 2610 WIN: 2620 for Y=1 to 3: for X=7 to 10: sound Y, 13, X, 5+Y, 2: ne%}xt 2630 next: for Y=1 to 3: sound Y, 0, 0, 0: next 2640 return 2650 KOLORBOX: 2660 gosub EMPTY: TXT=1:gosub TEXT 267%}0 color 5: gotoxy 23, 9: print " RESETTING " 2680 TXT=0:gosub TEXT 2690 color 1:gotoxy 23, 10: print STRING$( 11, 249 )%} 2700 gotoxy 25, 11: print chr$( 189 );" 1986" 2710 gotoxy 23, 13: print " PRATT " 2720 gotoxy 23, 14: print " %}& " 2730 gotoxy 23, 15: print " EVERMAN " 2740 restore 2800 2750 BY=152: C=1: W=12: L=12 2760 for BX=10+D*20 to 1%}30 step 20 2770 read F: X=( ( BX-10 )/20 ) 2780 CO( X )=F: PAT( X )=F 2790 gosub BOX: next 2800 data 2, 14, 7, 10, 4,%} 13, 12 2810 return 2820 MENU: 2830 gosub EMPTY 2840 gosub RAT: if MB<>0 then 2840 2850 TXT=1:gosub TEXT 2860 got%}oxy 23, 9: print "CLICK MOUSE" 2870 TXT=0:gosub TEXT 2880 gotoxy 23, 10: print string$( 11, 249 ) 2890 gotoxy 23, 11: %}print "LEFT = EASY" 2900 gotoxy 23, 13: print "RIGHT= HARD" 2910 gotoxy 23, 15: print "BOTH to END" 2920 gosub RAT 293% }0 if MB=1 then D=1:BX=10:BY=152:C=6:F=11:W=12:L=12:gosub BOX 2940 if MB=2 then D=0 2950 if MB=3 then end 2960 if MB=0 % }then 2920 2970 gosub KOLORBOX 2980 return 2990 EMPTY: 3000 color 1, 0 3010 FOR X=9 to 15 3020 gotoxy 23, X: print% } " " 3030 next 3040 return 3050 TEXT: 3060 poke CONTRL, 106:poke CONTRL+2, 0 3070 poke CONTRL+6, 1:poke I% }NTIN, TXT 3080 VDISYS( 0 ) 3090 return )1986 Antic Publishing 1020 'Written by Paul Pratt & Steven Evermann 1030 ' $, /* * ST Stepper Motor * (c) 1986 Antic Publishing * Version 073086 Wednesday * Written by Patrick Bass * )}* The purpose of this program is to explore creating * and manipulating a form while performing a job. * *---- Alcyo)}n Include File -----------------*/ #include "stepper.h" #include "osbind.h" #define TRUE (1) )}#define FALSE (0) #define begin { #define end } #define wend } #define r)}epeat } #define next } #define endif } #define not ! #define equals )} == #define does_not_equal != #define then #define CONSOL 2 #define PRINTER 0 #define DELAY )} for( i=0; i<1000; i++ ); #define LWGET(x) ( (int) *((int *)(x)) ) #define OB_W(x) ( box_address+(x)*)}sizeof(OBJECT)+20 ) #define OB_H(x) ( box_address+(x)*sizeof(OBJECT)+22 ) typedef struct object begin )} int ob_next; int ob_head; int ob_tail; unsigned in)}t ob_type; unsigned int ob_flags; unsigned int ob_state; long ob_spec; )} int ob_x; int ob_y; int ob_width; int ob_h)}eigth; end OBJECT; typedef struct text_edinfo begin long te_ptext; long )} te_ptmplt; long te_pvalid; int te_font; int te_junk1;)} int te_just; int te_color; int te_junk2; int )} te_thickness; int te_txtlen; int te_tmplen; end TEDINFO; /*---)}------------- Alcyon Declarations/Equates --------*/ int contrl[ 12 ], intin[ 256 ], ptsin[ 256 ], intout[ 256)} ], ptsout[ 256 ], workin[]={ 1,1,1,1,1,1,1,1,1,1,2 }, workout[ 57 ], i, j, k, l, x, y, w, h, mtopx, mtopy,)} mbotx, mboty, t_x, t_y, t_w, t_h, b_x, b_y, b_w, b_h, c_x, c_y, c_w, c_h, s_x, s_y, s_w, s_h, )} top, bottom, current, speed, delay, drive, dum, gem_handle, button, pressed, finished, xdial, ydial, wdial, hdia) }l; char topstring[ 20 ], botstring[ 20 ], currstring[ 20 ], speedstring[ 20 ], a, b, c, d; long box_addres)!}s; /*-------------------------------------------------------------------*/ main() begin initialize(); do b)"}egin move_the_stepper_motor(); repeat while( not finished ); terminate(); end /*-------)#}-------------------------*/ initialize() begin appl_init(); gem_handle=graf_handle( &i, &i, &i, &i ); v_o)$}pnvwk( workin, &gem_handle, workout ); rsrc_load( "\STEPPER.RSC" ); rsrc_gaddr( 0, TREE1, &box_address ); )%} a=5; b=6; c=10; d=9; graf_mouse( 0, 0L ); finished=FALSE; end /*--------------------------------*/ move)&}_the_stepper_motor() begin x=0; y=0, w=10, h=10; form_center( box_address, &xdial, &ydial, &wdial, &hdial ); )'} find_box_sizes(); form_dial ( 0, x, y, w, h, xdial, ydial, wdial, hdial ); form_dial ( 1, x, y, w, h, xdia)(}l, ydial, wdial, hdial ); objc_draw( box_address, TREE1, 2, xdial, ydial, wdial, hdial ); do begin ))} button=form_do( box_address, 0 ); if( button equals MOVETOP )then move_top(); if( button equals MOV)*}EBOT )then move_bottom(); if( button equals TOPUP )then d_topup(); if( button equals TOPDN )then d_to)+}pdn(); if( button equals BOTUP )then d_botup(); if( button equals BOTDN )then d_botdn(); ),} if( button equals CURRUP )then d_curup(); if( button equals CURRDN )then d_curdn(); if( button equal)-}s SPEEDUP )then d_speup(); if( button equals SPEEDDN )then d_spedn(); repeat while( button does_not_equal ).}QUIT ); form_dial( 2, x, y, w, h, xdial, ydial, wdial, hdial ); form_dial( 3, x, y, w, h, xdial, ydial, wdial,)/} hdial ); finished=TRUE; end /*----------------------------------*/ find_box_sizes() begin objc_offset( b)0}ox_address, TOPNUM, &t_x, &t_y ); t_w=( LWGET( OB_W( TOPNUM )))-1; t_h=( LWGET( OB_H( TOPNUM )))-1; objc_)1}offset( box_address, BOTNUM, &b_x, &b_y ); b_w=( LWGET( OB_W( BOTNUM )))-1; b_h=( LWGET( OB_H( BOTNUM )))-1; )2} objc_offset( box_address, CURRNUM, &c_x, &c_y ); c_w=( LWGET( OB_W( CURRNUM )))-1; c_h=( LWGET( OB_H( CURRNUM)3} )))-1; objc_offset( box_address, SPEEDNUM, &s_x, &s_y ); s_w=( LWGET( OB_W( SPEEDNUM )))-1; s_h=( LWGET()4} OB_H( SPEEDNUM )))-1; end /*----------------------------------*/ d_topup() begin top=top+1; adjust( TOPNUM)5}, top, &topstring, t_x, t_y, t_w, t_h ); end /*----------------------------------*/ d_topdn() begin if( top>bott)6}om )then begin top=top-1; adjust( TOPNUM, top, &topstring, t_x, t_y, t_w, t_h ); if( top<=c)7}urrent )then begin current=top; d_curdn(); endif endif end /*-----------)8}-----------------------*/ d_botup() begin if( bottom=current )then begin current=bottom; ):} d_curup(); endif endif end /*----------------------------------*/ d_botdn() begin );} bottom=bottom-1; adjust( BOTNUM, bottom, &botstring, b_x, b_y, b_w, b_h ); end /*-------------------------------)<}---*/ d_curup() begin int i; current=current+1; adjust( CURRNUM, current, &currstring, c_x, c_y, c_w, )=}c_h ); Bconout( PRINTER, d ); DELAY Bconout( PRINTER, c ); DELAY Bconout( PRINTER, b ); DELAY Bconout)>}( PRINTER, a ); DELAY end /*----------------------------------*/ d_curdn() begin int i; current=current-)?}1; adjust( CURRNUM, current, &currstring, c_x, c_y, c_w, c_h ); Bconout( PRINTER, a ); DELAY Bconout( PRIN)@}TER, b ); DELAY Bconout( PRINTER, c ); DELAY Bconout( PRINTER, d ); DELAY end /*-----------------------------)A}-----*/ d_speup() begin speed=speed+1; adjust( SPEEDNUM, speed, &speedstring, s_x, s_y, s_w, s_h ); end /*)B}----------------------------------*/ d_spedn() begin if( speed>0 )then begin speed=speed-1; adj)C}ust( SPEEDNUM, speed, &speedstring, s_x, s_y, s_w, s_h ); endif end /*--------------------------------*/ adjust( )D}object, variable, string, x, y, w, h ) int object, variable, x, y, w, h; char *string; begin ftoa( (float)variable,)E} string, 0 ); set_text( box_address, object, string ); objc_draw( box_address, object, 1, x, y, w, h ); bee)F}p( 0, 1, 50 ); end /*--------------------------------*/ set_text( tree_address, obj_number, string_address ) OBJECT )G}*tree_address; int obj_number; char *string_address; begin TEDINFO *obj_specification; obj_sp)H}ecification=(TEDINFO *)(tree_address+obj_number)->ob_spec; obj_specification->te_ptext=( string_address ); obj_sp)I}ecification->te_txtlen=( 4 ); end /*--------------------------------*/ move_top() begin int i, j, k, mx, my, pre)J}ssed, key; for( i=current; ibottom; i-- )begin graf_mkstate( &mx, &my, &presse)O}d, &key ); if( pressed )then i=bottom; if( not pressed )then begin d_curdn(); )P} for( j=0; j???<>? 80?x0<>??>-}?80xp>??>?`8x? ~-} ~``8{`p> `p>` `-} x x``p g 8 -}8``xpg``8pc??-}`<8O<8O8-}O| ' -}' ?'?l@l-}ll@lllx@ll-}<666I6-}p~86I6$f8?? d -}< 8>?-}> ? ??>`  ? -} ? `` À ?< ?<``-}`OOO-} ' ' 'l-}lllll6 6-}66 666 66-}@ 6I6@ 6I6@ 6?-}I6@ ?d  ?$-} $  2      -} ? ? ?`-} `` ` >B``p>B-}` ` ~  BO c-} 8~O o~ BOp-}>B' ` ` >B'-}'l`>Ollp>Ol-} l߷ HPl66>H\66-}6HP66p6>OI6 `-}>Od?d?$ ?2 -} 2  2 @?@ -}?@ ?  o-} `  o `  g ` -} O O -}O O O-} O ' -}' 'l -}ll ll l  -}  {l*www,