Q p4 @`  `! #@%`')+-/1 3@5`79;=?A C@E`GIKMOQ S@U`WY[]_a c@e`gikmoq s@u`wy{} @` @ ` @ ` @ `  @ ` ɠ O ` ׀ ٠  @o/@o!Aa   !A!!#A%a)+/1O5a79;=?A!CAEaGIKMOQ!OUaWY[]_a!cAeagikmoq!Ouawy{}!@`  `! #@%`')+-/1 3@5`79;=?A C@E`GIKMOQ S@U`WY[]_a c@e`gikmoq s@u`wy{} @` @ ` @ ` @ `  @ ` ɠ O ` ׀ ٠  @o/@o!Aa   !A!!#A%a)+/1O5a79;=?A!CAEaGIKMOQ!OUaWY[]_a!cAeagikmoq!Ouawy{}!FANCYFMTBAS v BD'EDITTXTMBAS v BD EDITTXTCBAS u BDDISK RSC u BD4COMPAN PRG u BDF>COLEXPLDBAS u BD4CHAPT06 TUT t BDCHAPT05 TUT t BD4 CHAPT04 TUT t BDCHAPT03 TUT t BD> CHAPT02 TUT t BDrCHAPT01 TUT t BD *CALDEMO1BAS t BD64KCLIP2PRG t BD32KCLIP2PRG t BDWDEHIREZLST w BD TUTOVL  w BDETUTOR PRG v BDV9README 1ST v BD MONEXPLDBAS v BDT2LOWRADIOLST v BD'? ICON BAS v BD*" HELPBOX1BAS v BD-HELPBOX DAT v BD2GENMONO RSC v BD3}GENCOLORRSC v BDS}GEMWIND BAS v BDs=FSEL_INPLST v BD  GfABASICvvv~~~444#~$%&&'$'$'$'*'*'*'2'j'j'j'jTRACKXREZONSNDUMMYBLOCK1BLOCK2AX1X2Y1Y2XX1XX2X1CONTX2CONTKYDISKTYPEDISK_HITXXYYCLIP_LENCOLR_LEN CLIP_WIDTH CLIP_HITEREZ_PICX_FORMAT_SWITCH1XFORMAT_SWITCH2 CRASH_DISKBUFFERBMBUFF2BUF2BUFF1 FREESPACEDISK_HITFILENAMEMASTERBLANKSCREEN1PICCOLRVIRGINMAGIC INTERLEAVESPTDEVSIDETRACKFLLERSNDISKTYPEEXFLAGSIDESREZCURRDRIVOUTV2STRINGLOOPBEGIN SHOW_TITLEWARNING FORMAT_DISK SHOW_DONE FORMAT2_DISKGETSIDES SHOW_BLOCKSDRAW_FORMATTERDETERMINE_DRIVEINDIVIDUAL_TRACKSINDIDIDUAL_TRACKSANIMATE CLIPLOADERPUT_CLIPPThis is a demonstration file to show you just what is possible with GFA Basic Pand the Pbox Command. The acutal formatting routine is a cleaned up version Pof Public Domain Source Code Downloaded from GEnie. However, the dialog box Proutine contains many of the techniques presented in The GFA Basic Companion, 8so please dov not upload this source code to any BBS. T oE F iX JFP)!: You must be in | Medium Resolution | To use me! !! SORRY !FqF! F!%!!F!! !GF Equates "EeeFo sector format data 2E5yFomagic constant, must be used as is EF,EF order of sectors on disk (usually 1) 6EFsectors per track (use 9 for standard) 6Dev%=0 !drive #; 0 for A, 1 for B .Sides%=0 !disk side, 0 or 1 EF EF EF$EFtrack to be formatted, 0-79 o,E5yF actually an unused longword e,E  ! Fbuffer for the track data DE ! Fbuffer for clearing the boot & fat tracks (E ! Fbuffer for boot sector :EFs Serial No., should be randomized longword mLNote: a serial number > &H010 results automatically in a random SN. -gosub disktype rDDisktype%=2 !Disk types 0=40 track, single sided (180K) B 1=40 track, double sided (360K) B 2=80 track, single sided (360K) B 3=80 track, double sided (720K) < -1=no change to disk type (B EF 0=not executable, 1=executable, -1=no change to boot sec. 0 main loop  ajFMFMF(The animate procedure does just that: PIt animates the formatting process. Not only does it give you something nice Jto look at but also graphically displays errors as they occur {if any}.  oM FFERFEQFEPF: o  \\F%F$ !\! !F { F%F$ !\! !F$ !\! !F%F(F'!|!AF(F'1!|!BFEFEF F: p*>>\\F%F$*!\!>!F { F%F$*!\!>!F$*!\!>!F%F(F'1!|!BF(F'!|!AFEFEF FE: q  **>>F%F$ !*! !>F { F%F$ !*! !>F$ !*! !>F%F(F'!:!SF(F'1!:!DF EF EFEF FE: r*>>**>>F%F$*!*!>!>F { F%F$*!*!>!>F$*!*!>!>F%F(F'1!:!DF(F'!:!SF EF EFEF FE: tZ  ffzzF%F$ !f! !zF svJFMF sF { Fp)!SDisk Not Defined: | format SSDD Disk in Drive A?| Define Drive & Type.!! Yes | Define !FwLF F%!!FJ$ !f! !zF$ !f! !zF F:n  F%F$ !! !F { F%!!FJ$ !! !F $ !! !F V)!B Fancy Formatter | 1987 | Marathon Computer Press!! OK !FqFP=L +F=v6EGF=v,EG F0E !z !z !!!!!!! FMF uF uFwDEGF v Fnd)!PBad Disk: | Multiple errors encountered| Check Write Protect Tab!! OK !F jFBEFFFkEFFFkEF FEw:EG F0E !z !z !!!!!!! FMF vF vJF xj FFE!z !! ! F&E!z !z !!!!! F EA FgFF x F!P)!%Disk Formatted: | Free Space = A  | Errors = 0 !! OK !F x^FiP)!!Disk Not Properly Formatted: | A  Errors Encountered!! OK !F F!g Fs FM FFjFjF.F  P=M  P=M +F  E F | JF%!!F$H! !@ !3F$! !F$H! !@ !3F$!!F$p! ! !.F(!!!@F,'!H!Diskette Track WindowF '!x!DriveF $ !\! !FF$*!\!>!FF(F'!|!AF'1!|!BF(F'!8!TypeF$ !*! !>FF$*!*!>!>FF(F'!:!SF'1!:!DF(F'!t!FormatF$ !f! !zFF '!!QuitF$ !! !FF'!*!Side 0F'b!*!Side 1F F M F.F + FFindividual tracks ~F F big box %F$R!X!  ! FS$R!X!  ! FF seperator $@!X!@5! FFtwo track boxes $W!d!;!FF$E!d!  !FFE FtE Ft}EG`F,W!dd!W!F ,E!dd!E!F E F }NF~BEGF*W!d!;;!dF*E!d!  !dFE F }F F.FE  +F %F ~z JF EFF%F FF EXXF EjjF EhhF EFEFFFEOOF JF ~F ! ! ! F DF! @ F. !# #  ! !# #  F F  F    JFE  FE  FD!# ##    !!# ##    F F P ppJFE  FE  FD!# ##    !!# ##    F F p JFE pFE pFD!# ##pp   !!# ##p   F F \ HHJFE  FE  FD!# ##    !!# ##    F F HppJFE HFE HFD!# ##HH   !!# ##H   F F hp JFE pFE pFD!# ##pp   !!# ##p   F F   JFE  FE  FD!# ##    !!# ##    F F F$if two sided well lets display it :JF DFd! !! F F!  F .!# #  !!# #  F F F   JFE FE FD!# ##    !!# ##    F F  ppJFE FE FD!# ##    !!# ##    F F p JFEpFEpFD!# ##pp   !!# ##p   F F  HHJFE FE FD!# ##    !!# ##    F F *HppJFEHFEHFD!# ##HH   !!# ##H   F F p JFEpFEpFD!# ##pp   !!# ##p   F F 6  JFE FE FD!# ##    !!# ##    F F F%F.FL@I +F@ EH F.FE = = = = =+ FE\PROGRAMS.LIB\DISK.RSCFM FDEHHFEHHFDeffill 2,2,8 Pbox 0,0,639,199 F"lEG H FoEFEFM FH(F!F FFH'\!>!1Fancy Formatter 1987 by Marathon Computer PressFs =.F=.This procedure was developed by Jim Luczak Band the PicClip program, elsewhere in the source code libraries  n+ F R- Pic Clip File Loader -  -( Filename$ --> Pic Clip File  " Fc 7I!M!F:M!!!!!F E! F! E! F!M!z !FM!z !F8MFz F$=!  Install Color palette = I@!z F.F+ F&=" l" Xx,Yy --> Screen Coordinates = !! !F&=" l.F= H:  , #( "eC! eC! u ~Xy.|6GfABASIC`r|REZSLXSRXSTYSBYMINCOUNTMAXCOUNT ACTUALCOUNTKXYCHOICE1CHOICE2CHOICE3 SLIDEPERCENTATEMPUSELARROWRARROWPERCENTKEY LIN_TO_EDITOUT CUSTOMBX.LSTREDRAW_SLIDERCUSTOMBX.LST CUSTOMBOX.LSTMFFY! " Choice 1 = " FiY! " Choice 2 = " FiY! " Choice 3 = " Fi"Yp! " Slider = ""%Fy$Yp! "Editable Text = "F0Yp! "Press any key to quit..."FEa FqFE># CUSTOMBX.LST procedure #  #+F#F The GFA Basic Companion Computer Generated Source Code 1987   H This source code is Copyright (c) 1987 Marathon Computer Press  J Legal owners of The GFA Companion are granted a non-exclusive license H to distribute applications containing this source code without any s, additional royalties or licensing fees.  0 Provided the following conditions are met: s B The user agrees not to distribute any applications containing F this source code modified or unmodified in any manner unless the y< the program/application is in compiled or PSAVED form. n F To release this source code in any other manner is a violation of < Title 17 of the U.S. Code governing copyrighted works. o6 Violators will be prosecuted o4 All rights are reserved. d  n nE F(Rez=0 if machine is in low resolution ,Rez=1 if machine is in medium resolution *Rez=2 if machine is in high resolution nNYou may use the Rez variable in conditional statements concerning your box  oBIt is up to you to design this box to the specifications needed Bin the desired resolution. If you are unsure if a box will fit Fwithin the bounds of a given resolution, use the resolution overlay 0option with the Custom Designed Box routine. t p  F()!This demo For High Rez!!OK!FqF! F!FoNow for your object data s o o%!!Fo$!F&Now for the Main Dialog Box Objects $(!! !0Ft$!F$(!! !0Ft$8!! !/FtMain Box Label (!!!PFH'`!:!2This is an example of a Custom Designed Dialog BoxF(!!!@F Choice Box #1 $!!!&Fm$!!!$Fm*'R!!Option Box Number 1Ff Choice Box #2 $!5!!^Fb$!7!!\Fb*'X!L!Option Box Number 2Ff Choice Box #3 $!n!! Fb$!p!! Fb*'X!!Option Box Number 3Ff Exit Box $ !!e!Fb$!!c!Fb'!!Quit BoxF End of Object Box Definition  n@If you want to add additional text, this is the area for it. a(!!!PF.'%!!The GFA Basic CompanionF4'!!1987 Marathon Computer PressFu4'! !Distributed by MichTron, Inc.Fr(!!!Fo6'4!,!Demo Prepared by John B. HolderFl(!!!@F0'%!u!Release 1.00 Will Soon BeFo0'%!!Available For Only $49.95Fn0'%! !From Particpating DealersFnNow for the User Input: NSee the source libraries for techniques to get user input from the keyboard TIf you intend to use text entry, you should leave room in your Dialog Box for it. Slider X Y Parameters are: nECCFPE@ FPE!!FPE&&FP E Now let's draw the slider box EFEF$!F!!!F &F'!!F'!!F &F'!!F'!!F F !! !F !! !F%!!F !! !F%!!F!$'C!!Slider = 0% FF0!!(!F0!!(!FE@FE(FEF E E6If you have text entry routines, Insert them here: o4' !4!Click the mouse in the box orFb2' !>!Press Tab to Edit This FieldF$%!M! !aFdY4!` "FP-Fs f<The Inkey$ reads the keyboard down below and tells us if #FThe tab key has been pressed. You can also use the mouse to select #the option. FfESFERF EPF EQF EEditable text management s *>7 JFF Y0!` "Fe>  FY4!` "Fe` !F *FE  F FEY0!` "( FY4!` "FF  F: +" %  MM aaFF Y0!` "Fe>  FY4!` "Fe` !F *FE  F FEY0!` "( FY4!` "FF  FSlider Object Management u4 + 0    FMF!F(!!!@F 'C!!Slider F F, ,J 0   F ,F F EF EFMFF!F(!!!@F 'C!!Slider F F F, , 0   F ,F EFF EFFMFF!F(!!!@F 'C!!Slider F F FMain Box Object management < .p    $$Fo - F  EF%!!F$!!!$F(F!F*'R!!Option Box Number 1F .lF!F(!F%!!F$!!!&Fb$!!!&Fb$!!!$Fb*'R!!Option Box Number 1F EF FE FE< /   77 \\Fo /, F  EF%!!F$!7!!\F(F!F*'X!L!Option Box Number 2F /F!F(!F%!!F$!5!!^Fb$!5!!^Fb$!7!!\Fb*'X!L!Option Box Number 2F EF FE FE< 1d   pp  Fo 0 F  EF%!!F$!p!! F(F!F*'X!!Option Box Number 3F 1`F!F(!F%!!F$!n!! Fb$!n!! Fb$!p!! Fb*'X!!Option Box Number 3F EF FE FE {F<)H  cc  Fo%!!F$!!c!F(F!F'!!Quit BoxF { F!FDBox values are returned in the Choice1,Choice2,Choice3 variables aHwith a value of 1 indicating selection. Slider percentage is stored >in the Slidepercent variable as a number between 0 and 100. .FnT# end CUSTOMBX.LSTdrawlines procedure # L# Redraw_sliderCUSTOMBX.LST procedure # # #+F#%!!F#$!F !! !F%!!F !! !F%!!F! 4R (F0!!(!F0!!(!F 4F  !! !F  !! !F F E = A @ % FE# @ FE F.FE.3wGfABASIC$BFFFFFFFTTT ^       $$$$REZKXYCHOICE1CHOICE2CHOICE3ATEMPUSEKEYEDIT LIN_TO_EDITOUT EDITCUST.LSTMF#Y! " Choice 1 = "FFY! " Choice 2 = "FFY! " Choice 3 = "FF$Y! "Editable Text = "FF0Yp!H "Press any key to quit..."FEa FqFE># EDITCUST.LST procedure #  #+F#F The GFA Basic Companion Computer Generated Source Code 1987   H This source code is Copyright (c) 1987 Marathon Computer Press  J Legal owners of The GFA Companion are granted a non-exclusive license H to distribute applications containing this source code without any s, additional royalties or licensing fees.  0 Provided the following conditions are met: s B The user agrees not to distribute any applications containing F this source code modified or unmodified in any manner unless the y< the program/application is in compiled or PSAVED form. n F To release this source code in any other manner is a violation of < Title 17 of the U.S. Code governing copyrighted works. o6 Violators will be prosecuted o4 All rights are reserved. d  nE F(Rez=0 if machine is in low resolution ,Rez=1 if machine is in medium resolution *Rez=2 if machine is in high resolution nNYou may use the Rez variable in conditional statements concerning your box  oBIt is up to you to design this box to the specifications needed Bin the desired resolution. If you are unsure if a box will fit Fwithin the bounds of a given resolution, use the resolution overlay 0option with the Custom Designed Box routine. t  Fk&)!Sorry For Medrez Only!!OK!FqF! F! pNow for your object data s o o(!!!@F%!!F$!F&Now for the Main Dialog Box Objects $!! !<Ft$!F$!! !<Ft$0! ! !:FtMain Box Label .'6!H!The GFA Basic CompanionF.'6!p!Custom Designed Box DemoF('B! !by John B. HolderFx6'%!4! 1987 by Marathon Computer PressF4'*!H!Distributed by MichTron, Inc.Fs"'M!\! Only $49.95Fb0'2!!Click the Mouse in Box orFn:'#!!#Press the Tab Key to Edit the FieldF Choice Box #1 $4!L!!FK$<!T!!FK'!!Option 1F Choice Box #2 $\!,! !`FK$d!0! !\FK' !L!Option 2F Choice Box #3 $8!t!q!FK$<!x!o!FK'! !Option 3F Exit Box $b!"!\!4FK$f!$!Z!2FK'!-!QuitF End of Object Box Definition  n@If you want to add additional text, this is the area for it. v f fNow for th e User Input: NSee the source libraries for techniques to get user input from the keyboard TIf you intend to use text entry, you should leave room in your Dialog Box for it. 6If you have text entry routines, Insert them here: o f&Now for an editable text item entry  oThe setup is as follows: i$>!!  ! FeYL!  "F-F oFf2Here we read the keyboard and the mouse buttons ESFERFEPFEQFMain Box Object management i: &>   FF"YH!  "> FYL!  "F`!FYH!  " F &zJFE F FF F '$7 FyF"YH!  "> FYL!  "F`!F 'JFE F FYH!  " F F F< (<TTFo 'FEF%!!F$<!T!!F(F!F'!!Option 1F (F!F(!F%!!F$4!L!!F$4!L!!F$<!T!!F'!!Option 1FEF FE FE< )d 00\\Fo )6FEF%!!F$d!0! !\F(F!F' !L!Option 2F )F!F(!F%!!F$\!,! !`F$\!,! !`F$d!0! !\F' !L!Option 2FEF FE FE< +J<ooxxFo *FEF%!!F$<!x!o!F(F!F'! !Option 3F +FF!F(!F%!!F$8!t!q!F$8!t!q!F$<!x!o!F'! !Option 3FEF FE FE {F<%RfZZ$$22Fo%!!F$f!$!Z!2F(F!F'!-!QuitF { F!FDBox values are returned in the Choice1,Choice2,Choice3 variables aHwith a value of 1 indicating selection. Slider percentage is stored >in the Slidepercent variable as a number between 0 and 100. .FnT# end EDITCUST.LSTdrawlines procedure # ?+^258,34,43,20,1 wpwU33ss77w+ @? @ ' @ 0' @ 0  @?0 @0 @ 0 @ 0 `:W` Efv*oM" m HPHUBg?<JNA(m)m -:gS)@ -OK1PC#HNߢHx?<HNA@)@l/?<HNA)@h&@)@XЬl)@d)@`ARCpr Ѝ"QHNFALNDHz2?< NA\pdAxr0XQ)K\NN(fNx ,`NuJrBjNuHz?<&NN\NFCAp$L Qp N29lrBlJpNN2pMN29@pdAr 0Q0tr N9lNNupealp`NuaNJHz?<&NNBWNANC2A@p222NrҌ0<NB0,rNurA9Ar`v C9Cr`rt9@9A9BNrrҌpsNB0,Nu9@N`rDҌpsNBNuC2 @ e @}bA@p222Nr,Ҍ0<NBNu    - pa2|a>:><|a4g RGj`a(0GVfA1G<ap??<?<NM\Nu??< NMXNu&8*:EENuHn 2$4BBNuAd RdQRB BbABJk 0NuJBjBBXNu 0Nu 2$NuE`B<gJEgEjCDEDF Fe( F dF8BCHC` F0bFHC8v` HD8HDkDуdQRBNuDdBDA@kgAр[SBk0NuJlJBk&Nu0g H@rB JkЀ[` BbNuJBj prtNuHPAJgPpr$< _Nup _NtNu&8*JEgJBgJjBEB:HC҅H@:|ۆ҄ۆ<HC>H@ЃdHA@B@H@хk HAҁHAрSB BbNuNpNNuCDEJEgJBgJjBEBQ*HE?<>0rHGGdHGGdSWDуdi\?<>0rHGGdHGGdSWDуdiN?<>0rHGGdHGGdSW2 H@N?<,>CEdGH@0r`?<`JBgVB&8TTDуdQRBNuDAр&AdRAрAрDуNuprt|=|  g +g -f .g20  b 0e 9b da`RF` .f 0e 9b dajSF` Eg efX +g -f 0e 9oSH`00  b&Hz0  b E Do`HJjDDDS4</NJFkSFk&aQN`Ha"FFaQL8Nh6.JgtBnNupr$<NuJBk4<rpAC v JBgJjv-| Bb BkH>aaNRFBdL8?Nh<JBga2SF Be BgQRB`ApdR e <rRF&0xafEv+0JFjDFv-Hƌd0BFHF 0HF0ANuprt|`2:HQ A dNAXJ@jNNu~c0NQNuNJ@g,A,BBgHQ?<=NAP FJ@k??<>NAXtNutNuJ@jD@vqapvNr)@p `H@)@prtNAHplrtNB 2pNppNdpapaprapalpalpalpaTpaTpaTBp'a?<NNT@B){L9|0<rtNpapap9@p`pvNrv`v`vj`v `v`v`v`?Aa*` Al 2l 4)lVH)lRprtNAl 2l 4HVNuAl 2l 4L VA0000000000prtN9Cp rtNAv` Av `Avl 2l 4)lVHNZaBp0,l 2Nua40,HNua*p0,l 4Nuaprt0,l 22,l 44,NuN9||BlBlrҌpsNBNu0<}N& ?<NNC`&?<NNT"@ C <}N`N~(* 9AJA)H@@[000][ˈN Evz`* [g" ]g |g QSz` zQSpQ][ɈN Dvx`* [g" ]g |g QSx` xQSpQ]Bp4N2HNu*( INA)H @depd ae zb QB DNA\)H @ e` ae zb \gQBA BhNpZN2A BP"`#|}NA"H0,tg"Hg \f`A\fS A ENAR@H`2QNu@9@JpNN2r|<N @xepw2A$JBjDFHB t`0QBl9F)lVTAtp 9| N2(g"P@g2RADAH""l`r2oZAe 1@#)I`Nuk1@Nup NNx"l`dpNAtrdJhk\QpaNH ld$l`"Hg: k&@0+R`g k#&@0+S@H3 Q&f)I`LNu?<?<NAXJgJgNAH@B pNA NuApNN$N`$BS@kH2QNupC ұd"X0Pg"RA$D#Nu"X0Nu _0HpN _0HpNp"_0HqNp"_0HqNE ұeHHQ0)N$_$ZR@H`2QNu$Y0gHR@@"D%$X0P2g# R@%NupE $ $X0dP.gRG,D%pr Y2dP.gRG,D!p4Ae4v`VfANuNWHNuNVHNu Ihd"*N`$E8*$R`"QˈN ENu2)A IJAfr4(Ae*RBBc0*SA?N`$E$R`QˈN ENup`(* 0(iN`$E 4R`Q$D 4R`QˈN DN ENu2p <0N``QNu?Hl?<GNAPA"HJf SNpC 0(gFd"P$I` *N`$E$R(S@jv A(Wf( ae zb Q DNuH&NրNꚶjNuHRp` HRpJQfpNNq Y QfdЀЀ 0NuNNNq Y Qfd ЀЀNuNN $_& Y Qfdփփ!8NNN0$_& if"QdփփHRN|NN~,Nq8DRzXEEg"7PNqR$HBJBgpNJgJigp`eetЂ`"ЀeЁdp`ЀeЀe"Ѕe$W.H@@NL"2` NqR YEjrd0` SjN$_N6ЀЀ 2$4BBN$_N6ЀЀ 0N$_N6ЀЀN YQf "_Nq*eNN*< NqbІSGfN$_NփփHRN$_Nփփ!8N $_Nփփ"@HHRN| YQf "_&Nq*eNN*<&NqbֆSGfNp"X4g S`"QNuNuNJPgBP, d4d<e<Ѐ"ЀЁE Y0gR@2DAH!b` `ЀЀ`Ѐ"ЀЁE. l ,`2"X2g,e($UAk&QHPS Y2g RSj _b l ,"X2geb J"F\N~" KC`e Nx`d \N l\Ӭ\ NupNd d3 d# d# # d# # # # d# # # # # # # # dB` # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # QNudd2d"d""d""""d""""""""dB` """"""""""""""""""""""""""""""""QNu?k?<NM"UAf J@fH@NuDW?<NMXNu0,p2,rR@RANuS@SA9@p9ArNu9@pN4, 6fprta0,2,NuA4, 6f9@9Ap rt`Blf`pBlf`p9| f|9Fd@9@hNX9@^9A`9Ab~`$aJf,H@ Kg Mg Pg Hf~`BSGj>RGFc8>`4A g6 g0 g` gTlfelhgFf2pRGRFa`a,` `?~ap ap a 0NuCpE`bf`FgRGJGgRSGSFFgCpE`Yf`Nua@Jf gH@ fa(@ fza0 b @ Ee0Nu?<?<NMXNur9A(HNLNu0,^2,`NrzEfpaRppaNAEg0PaľEfa4RE`p a2a*Efp a(NXldeS@f lbfSl`9Ab9FdNupapqr`p`"p`tdbDA0Hg<<R@f|0HN`*JFk*HQ/??<?NAXfX ENuJkpNp`p`\F( &I.` ??<NMXJ[j E&DNu<(`|HP?N<pg2JFg W"X2@e2<A`QNCpR@ 1 fA 0! "_N|, HHHNup`pNu)H9@Jp4N2P'J&f H LNu P&NuQ'` J,'fJ,&gHA#ȇeC! B,&LNu-W)K20, 8k8@ gJl&f"Nu , 8g"P 8 @/, 8N  8fQ 8J,'gNupB <``L@ H)l26)z @W , Jf`CfSHj-D@Hd0H@H 0H@0`fSC\fS , @a"C\fApNNNHP?< NA\NuH@aa/a a Nu@0 9c^Nu| PC>$Error # ][Abort]\f.B &lX)K\)ld` lp ,BQjNup(NV)l g,vARC( g9CJ9|Lp!,N2 FPeNuA JpBQA/)H )l gBlJpN2B Aprt0 0BBB R@ @efA000 0PB0 *00 000\0X0 *0000 0P0BX0, *@00p1| 1|QBX0 $HTH0P &0 *0,NupNSk [0NupNuHPaH8 _&X Pf/|~ K!zag @ ep 24C"2 S@ػ Td BTA3A0C4$I2a222B"0@2A\xvaRg<2#M 4B3BS@ -f ػ Td>BAAb8RGRC`3RSG5GC5C J1DcaRF F e`RG GcdNuXASF1F41R 1h4 x1EDgVA)H)H 9|J?<NNTU@g,ACg dRhdRh(gpL8N2p>L8NAJ0?C bL000zH?A/.)HpN2LrHH/>Bl/,ff.f.ffNu l /.g&, ^`D&, N`>&, R`8&, V`2&, Z`,2,/4WAARA0,/6A hfRAS@f9A/,&, Jo ? CN0`@k Ap0(/.NuA Nup)@JphN2LtH &JKBCH .A/~0 1PP1P1PA L? &<@>AFG0000X0000X0000X0000C ~AJ0g0  pi, N2"F QNu _b@gGHpp 0f NuGNp @"l`Yd&-KNNx"l`YepN&#k"C-KN"Cփk փk2##`փk"`2`$Y8gHRDD*D%H8#$c2g# HRDD%H`p"l`Qd&&| NuNx"l`QepZNpr`&AdRd QJBgRBBABJk"l` d&6&|0!NuNx"l` epZNC ҳfHP0(N`$W$RR@H`2Q"H _$l` dd" $X&0BP6Y&|Hg R@@%E ҳeHQ0)N$_$RR@H`2QNu$Y 0P1@Hg R@@%NuNx$l` epZN"X0gBPHR@@"D#Nu/&#k gH`Nq-KNuNNHxpCB~NVBHxpANCB~NBHxpBNCB~NBHxpCNCB~NBHxpDNCB~NBHxpENCB~NBHxpFNCB~NHxHxp1NCB~NHxHxp2NCB~NHxHxp3NCB~NHxHxp4NCB~NHxHxp5NCB~NHxHxp6NCB~NHxpCr~NVA:N?<NNTANl?<NNTANlAN&<x*<NVfN+`HxNH4Currently works only in |Medium or High Resolution! HPNT Sorry r"_ N +@(Np"NCN|A5N)|-> A탐r(NBNT Style of text to use? | |%HPNH Norm | Bold | Ital r"_ N +@(+m(0AN&<x*<NfN9pNpNpNp NN9pNpNpNpN -0Np&<x*<NnpJBgp/ -0Np&<x*<NtpJBgp$VHfN:pN -0NpH <r$<L8NNNB -0NpH <r$<L8NNCfN -0WWHfN:pNpNBpCfNpNpA탐NNp&<x*<NAjNpNpCfNNBmdAN&<x*<NfN;vA` 0A`N&<x*<NN"<NA탐NAN&<x*<NfN;A 00N;A 0A 0 <r$<ANATN&<x*<N>fN=A?$NA>jNpNpCfNNA`N&<x*<NN"<NA탐NAB 0 <r$<ABNpNABNCfNNA NABNN&<x*<NN"<NABNC NNN`NqNqN`NqpNpNpNpNAZN&<x*<NN"<NNHContinueNpNpN"AZN&<x*<NN"<NAZN&<x*<NN"<aN(pNBNH*Box is now defined: |Save as .LST file? |HPNH Save | Abort r"_ N +@( -(~NCA탄NANBmdBm^A NAfNNNBm@pNpNpN"prdNAZN&<x*<NN"<NtprdNAZN&<x*<NN"<N(pNpN"priNAZN&<x*<NN"<N(NNAN&<x*<NfN?NprNpp*NNNNprNpp*NNNNprNpNn Enter Line 4ANN` of Box, enter *q or *Q to AbortNNprNpNN`> N@NprNpp*NNNNprNpp*NNNNprNpNn Enter Line 4ANN` of Box ,enter *q or *Q to AbortNNprNpNN`> ANC Nr(NANC NHPNH*q"_N,pJBgp/ANC NHPNH*Q"_N,pJBgp$VHfNA AN/A C N,AT 0ATN&<x*<N>fNCBNT Style of text to use? | |HPNH Norm | Bold | Ital r"_ N +@(+m(0pN -0Np&<x*<NnpJBgp/ -0Np&<x*<NtpJBgp$VHfNBZpN -0NpH <r$<L8NNNAN/ -0NpH <r$<L8NNCfN -0WWHfNBpNpNAN/pCfNpNpANC NNNp&<x*<NAjNNNA탺NNH NewBox.lstCN|pNHPNH\*.LST"_NHPHmA탺""_NHmA "_N,gNCA탺NSVHgpNHmA "_N6fNMAXNpONHPAr"_N0pNNTRem # HPA"_NHPNH procedure #"_NNNpNp'NNAZ H0Af 0A` 0 Al =0pNN` Procedure ANNApNAPNpNNn5' * Warning Warning *#NpNNn5' This style of box will require considerable scaling%NpNN`' to work in Low Resolution.NpNNn5' *3%NANpNN`' NpNp'NNpNNn' Some High Rez Scaling now..*NpNN`If Rez=2NpNNn By=By+By-Ty4NpNNnEndifTNpNp'NNpNNn Sget Tempuse$4NpNNnDim Linstyle%(12),Credline$(12)4NBm <r$<ANpNN` Linstyle%(ANNn)= eANCfNNNN`NqNqA 0 <r$<ANpNN` Credline$(ANN`)=ANANC NNANNN`NqNqpNNn Deffill 0,2,8 NpNNn Defline 1,2!NpNN`Pbox Lx,Ty,Rx,ByNpNNnBox Lx,Ty,Rx,By%NpNNn Defline 1,1%NpNNnBox Lx+5,Ty+2,Rx-5,By-2NpNNn1' Here is where we define the text size and style%NpNN`*' to change the size you must change the 6NpNN`6' however, other modifications may have to occur also.NpNN`If Rez=2NpNNnDeftext 1,Linstyle%(0),0,13mNpNNn Offset=22sNpNN`ElseNpNN`Deftext 1,Linstyle%(0),0,6NpNNn Offset=10sNpNNnEndifsNpNN`If Rez=2NpNNnText Lx+55,Ty+20,)ANA탐NANNpNN`ElseNpNNnText Lx+55,Ty+15,ANA탐NANNpNNnEndif5NpNNn For X=1 to 12NpNN`Deftext 1,Linstyle%(x)NpNN`*Text Lx+55,(Ty+25+(X)*Offset),Credline$(x)NpNN`Next XNpNNnDeftext 1,1,0,6XNpNNnText Lx+182,By-9,4ANN`ContinueANNpNNn Defline 1,29NpNN`Box Lx+175,By-19,Rx-186,By-4NpNN`RepeatNpNN`K=MousekNpNN`X=MousexNpNN`Y=MouseyNpNN`:Until K=1 and X>Lx+175 and XBy-19 and YfN[A`N&<x*<NA`NA`N&<x*<NN"<*NNTFatal4NpNpNA`NzN>fN\A`N&<x*<NA`NA`N&<x*<NN"<NNT Not Fatal4NpNpNpNpNAZN&<x*<NN"<NNHContinueNAZN&<x*<NN"<TNNTAbort4NpNpN"AZN&<x*<NN"<NAZN&<x*<NN"<FN(AZN&<x*<NN"<QNAZN&<x*<NN"<~N( <NBNT/Error Box is Created: | Save to .Lst File? | 4HPNH Yes | No r"_ N +@( -(~N]BmdBm^NNA탺NNH ErrBox.lstCN|pNHPNH\*.LST"_NHPHmA탺""_NHmA "_N,gN^fA탺NSVHgHmA "_N6fNk2pNAXNpONHPAr"_N0pNNTRem # HPA"_NHPNH procedure #"_NNNpNN` Procedure ANNApNAPNAZ u0Af 0A` E0Al 0pNNnClr Tempvar,Yoffset4NANpNN`If Rez=2NpNNn Yoffset=By-Ty4NpNN` Tempvar=35NpNNnEndif5NpNNn3' This style of box is suitable for all resolutions#NpNp'NNpNN`*' Precede this routine with On Error GosubNpNp'NNpNNn Sget Tempuse$uNpNNn Deffill 0,2,8%NpNNn Defline 1,2!NpNN`If Rez=2NpNN`Deftext 1,0,0,13NpNN`ElseNpNNnDeftext 1,0,0,6%NpNNnEndif,NpNN`Pbox Lx,Ty,Rx,By+YoffsetNpNNn Defline 1,2yNpNNnBox Lx,Ty,Rx,By+Yoffset%NpNNn Defline 1,1+NpNNnBox Lx+5,Ty+2,Rx-5,By-2+YoffsetrNpNNntitle$=+ANNn  Error eANNpNN`If Rez=2NpNNnText Lx+37,Ty+20,Title$ NpNN`ElseNpNNnText Lx+37,Ty+10,Title$%NpNNnEndif7NpNN`Eline2$=ANNn Number = 4ANNpNN`*Text Lx+35,Ty+25+Tempvar,Eline2$+Str$(Err)NpNp'NNpNNn Deftext 1,25NpNNn-' You should use a conditional statement here4NpNN`>' to determine if the error is recoverable or fatal. If fatalNpNNn' the text style should be 1,0.vNpNp'NNpNN`If Rez=2NpNN`Tempvar=Tempvar+10NpNNnEndifeNpNNnText Lx+53,Ty+40+Tempvar,0ANNnFataloANNpNp'NNpNN` Deftext 1,0 NpNN`(' The reverse of the above is true here.NpNN`If Rez=2NpNN`Tempvar=Tempvar+10NpNNnEndifeNpNNnText Lx+40,By-30+Tempvar, ANNn Not Fatal4ANNpNp'NNpNNnDeftext 1,0,0,6mNpNNnText Lx+15,By-10+Yoffset,ANN`ContinueANNpNNnText Rx-55,By-10+Yoffset,ANNnAbortnANNpNNn Defline 1,10NpNN`*Box Lx+13,By-19+Yoffset,Rx-69,By-6+YoffsetNpNN`*Box Rx-58,By-19+Yoffset,Rx-13,By-6+YoffsetNpNNn Clr Choice%+NpNNn Deffill 1,2,84NpNN`RepeatNpNN`K=MousekNpNN`X=MousexNpNN`Y=MouseyNpNN`' If Continue is chosen:NpNNnEIf K=1 and X>Lx+13 and XBy-19+Yoffset and YRx-58 and XBy-19+Yoffset and Y' From this point on, you're own your own with error handling!NpNN`Until Choice%<>0NpNNn Sput Tempuse$!NpNNnPause 5eNpNN`Clr Tempuse$,Yoffset,TempvarNpNN`ReturnNpNNnRem # end 4ANN` procedure #NpNNNBmBNT What Size? | |#HPNH 1/2 | 3/4r"_ N +@(pN -(SWHfNl6A6 0AZ x0Ar 0Ax 0A` 0 Af `0Al .0AN&<x*<NfNl6AlN&<x*<NAlN -(UWHfNlA6 0AZ D0A` @0 Ar p0Ax 0Af `0Al 80AN&<x*<NfNlAlN&<x*<NAlNpNpNpNAN&<x*<NfNm@pNpNpNpNNmXpNpNpNp NpNpN"AN&<x*<NfNnAZN/AfN"NA`N/AlN"NtAZN/AfN"NA`N/AlN"N(pNpN"AZN&<x*<NN/AfN&<x*<NN"N <r$<A`NNN/ <r$<AlNNN"N(No2NNprNpNn'Enter the lines for the text box below:NNprNpNnTo exit enter *Q or *q"lNNprNpN`,Hi Resolution Text Only Dialog Box WorkbenchNBNH< Text Entry Style: | Ragged or Centered? | HPNH Rag | Cent | Abort r"_ N +@(AxN&<x*<NAN -(~NovpNNBNHH Begin Text Entry: | Enter *q or *Q to | Quit or Save HPNH OK r"_ N +@(ANAxNCNTpNppNA 0AxNANAN&<x*<NfNqNprNpNnLines Remaining in Workspace = |ANANNNNn 4Nq\Npr-NpNNnLines Remaining in Workspace = nANANNNNn 4A6N&<x*<NfNshNAN&<x*<NNrNpANCNr(NANCNHPNH*q"_N,pJBgp/ANCNHPNH*Q"_N,pJBgp$VHfNrhAN/A CN, <r$<ANNAxNBmA y0 AxNANNfNrA y0 A~ 0AN&<x*< NfNrA y0 AN&<x*< NVfNshNAN&<x*<NNrNpp(NNNNAN&<x*<NNrNpANCNNNA6N&<x*<NfNvLNAN&<x*<NNr NpANCNrfNuANCNHPNH*s"_N,pJBgp/ANCNHPNH*S"_N,pJBgp$VHfNu|AN/A CN, <r$<ANNAxNA~ 0A y0 AxNANNfNuA y0 A~ 0AN&<x*< NVfNvLNAN&<x*<NNr Npp(NNNNAN&<x*<NNr NpANCNNNN`6NqA|NANNNBNTI Begin Text Entry: | Enter *q or *Q to | Quit or Save HPNH OK r"_ N +@(ANAxNCNTpNppNA 0AxNANAN&<x*<NfNwNprNpNnLines Remaining in Workspace = ANANNNNn 4NwNpr-NpNNnLines Remaining in Workspace = nANANNNNn 4A6N&<x*<NfNzJNAN&<x*<NNrNpANCNr(NANCNHPNH*q"_N,pJBgp/ANCNHPNH*Q"_N,pJBgp$VHfNyAN/A CN, <r$<ANNAxNBmA y0 NyzANCNNNp&<x*<NA0NpNp'NNpNN`"' For a keyboard wait routine use:NpNN` ' A=Inp(2)NpNN`' NpNNn Sput Tempuse$4NpNN` Clr Tempuse$NpNNnPause 5$NpNN`ReturnNpNN`Rem # end ANN` procedure # NpNNNAN&<x*<NfNNpNpNpN"pNpNpNp"<N <"<Ntp"<N <"<N(pNpN"p"<N <"<N(pNpNpNp Np-"<NNT Radio Buttons4NpNpNpNpNpA"<NNH How manyNpK"<NNH Buttons?NAfNpNpNpNBmNANlNANlNA$NlAN&<x*<NPpJBgp/AN&<x*<NVpJBgp/AN&<x*<NPpJBgp/AN&<x*<NVpJBgp/A$N&<x*<NpJBgp$VHfN <"<N <"<mNtpNBmA 0AN&<x*<NVfN,AN&<x*<NPpJBgp/AN&<x*<NVpJBgp/AN&<x*<NPpJBgp/AN&<x*<NVpJBgp/A$N&<x*<NpJBgp$VHfN(pR"<Np\"<mNtpNA 0A 0AN&<x*<NPpJBgp/AN&<x*<NVpJBgp/AN&<x*<NPpJBgp/AN&<x*<NVpJBgp/A$N&<x*<NpJBgp$VHfN*A @0pa"<Npk"<mNtpNA 0AN&<x*<NPpJBgp/AN&<x*<NVpJBgp/AN&<x*<NPpJBgp/AN&<x*<NVpJBgp/A$N&<x*<NpJBgp$VHfN,pp"<Npz"<mNtpNA 0A @0AN&<x*<NPpJBgp/AN&<x*<NVpJBgp/AN&<x*<NPpJBgp/AN&<x*<NVpJBgp/A$N&<x*<NpJBgp$VHfN,p"<N <"<mNtA `0A 0ANzN>gANzN>fN^ANNNpR"<Np\"<mN(pZ"< NNT 2 Buttons4Npa"<Npk"<mN(pi"< NNT 3 Buttons4Npp"<Npz"<mN(px"< NNT 5 Buttons4Np"<N <"<mN( <"< NNT 7 Buttons4N <"<N <"<mN( <"< NNT Abort 4NNNAN&<x*<NfNBmNA 0AN&<x*<NfN A탄NANNNNXAN&<x*<NfN@ANAN&<x*<NfNlANAN&<x*<NfNANAN&<x*<NfNANNNpNpNpNpK"<N <"<NtpNpN"pK"<N <"<N(AN&<x*<NfNpNpNpNp "<Np7"<NtpNpN"p "<Np7"<N(p"<Np5"<N(pNpN"NA N&<x*<NNr NpNnTwo Radio ButtonsNNA N&<x*<NNrNpNnEnter the title of the box:NNA N&<x*<NNrNpN`> A탐rNA탐NNp&<x*<NA ArNANNp&<x*<NA ArNANNp&<x*<NAfNAN&<x*<NfNBpNNTText Lx+74,Ty+35,0HPA"_NHPpAN"_NHPA"_NNNpNNTText Rx-88,Ty+35,HPA"_NHPpBN"_NHPA"_NNNAN&<x*<NfNpNNTText Lx+74,Ty+35,HPA"_NHPp1N"_NHPA"_NNNpNNTText Rx-88,Ty+35,HPA"_NHPp2N"_NHPA"_NNNpNNHText Lx+24,By-7,HPA"_NHPA"_NHPA"_NNNpNNTText Rx-140,By-7, HPA"_NHPA"_NHPA"_NNNpNN`' Now to get an answer for youNpNN` Clr ChoiceNpNN`RepeatNpNN`X=MousexNpNN`Y=MouseyNpNN`K=MousekNpNNn?If X>(Lx+63) and X<(Rx-233) and Y>(Ty+27) and Y<(By-18) and K=1#NpNN`Choice=1NpNNnEndif!NpNNn?If X>(Lx+228) and X<(Rx-70) and Y>(Ty+27) and Y<(By-18) and K=1%NpNN`Choice=2NpNNnEndif!NpNNnUntil Choice<>0 A탐rNA탐NNp&<x*<NA ArNANNp&<x*<NA ArNANNp&<x*<NAfNtAN&<x*<NfNpANCN|pBNCN|pNNTText Lx+74,Ty+35,5HPA"_NHPpAN"_NHPA"_NNNpNNTText Rx-88,Ty+35,HPA"_NHPpBN"_NHPA"_NNNNp1NCN|p2NCN|pNNTText Lx+74,Ty+35,HPA"_NHPp1N"_NHPA"_NNNpNNTText Rx-88,Ty+35,HPA"_NHPp2N"_NHPA"_NNNpNNTText Lx+24,Ty+48,HPA"_NHPA"_NHPA"_NNNpNNHText Rx-140,Ty+48,HPA"_NHPA"_NHPA"_NNNpNNHText Lx+152,By-10,HPA"_NHPNHOK"_NHPA"_NNNpNN`' Now to get answers for youNpNNnClr Choice1,Choice2,Choice3%NpNN`RepeatNpNN`X=MousexNpNN`Y=MouseyNpNN`K=MousekNpNNn7If X>Lx+63 and XTy+27 and YLx+228 and XTy+27 and YLx+146 and XTy+57 and Y0NpNN`V' The chosen buttons return the value of one to you in the ' Choice(number) ' VariableNpNNnC' If button 1 chosen, Choice1=1 and If button 2 chosen, Choice2=1bNpNN`J' If the buttons are not chosen they will equal 0. Choice1=0 or Choice2=0NpNNnPause 5tNpNNn Graphmode 14NpNNn Defline 1!NpNNn Deftext 1%NpNNn Sput Tempuse$4NpNN` Clr Tempuse$NpNN`ReturnNpNNH Rem # end HPA"_NHPNH procedure #"_NNNpNNNpNpNpNp"<N <"<NtpNpN"p"<N <"<N(AN&<x*<NfNpNpNpN <"<N <"<NtpNpN" <"<N <"<N( <"<N <"<N(NpNpN"NprNpN`Five Radio ButtonsNNprNpNnEnter the title of the box: NNprNpN`> A탐rNA탐NNp&<x*<NN A ArNANNp&<x*<NA ArNANNp&<x*<NA"<NpH"<N(pF"<NANNprNpN` Enter the function for button 3:NNprNppNNNNprNpN`> ArNANNp&<x*<NA ArNANNp&<x*<NA0A` a0Af p0Al 0A탺NNT Fivbutn.lst4CN|pNHPNH\*.LST"_NHPHmA탺""_NHmA "_N,gNA탺NSVHgHmA "_N6fNpNAXNpONHPAr"_N0pNNTRem # HPA"_NHPNH procedure #"_NNNpNp'NNpNN` Procedure ANNApNAPNANpNN`*' This box is suitable for all resolutionsNpNNn Sget Tempuse$tNpNNn Graphmode 1!NpNNn Deffill 1,2,24NpNNnDeftext 1,0,0,64NpNNn Defline 1,34NpNN`Pbox Lx,Ty,Rx,ByNpNNnBox Lx,Ty,Rx,By%NpNNn Defline 1,1%NpNNTText Lx+30,Ty+10,4HPA"_NHPA탐"_NHPA"_NNNpNNn Deffill 1,2,84NpNNnPbox Lx+25,Ty+25,Rx-200,Ty+40NpNNnPbox Lx+25,Ty+45,Rx-200,Ty+60%NpNNnPbox Lx+25,Ty+65,Rx-200,By-55%NpNNnPbox Lx+25,By-50,Rx-200,By-35%NpNNnPbox Lx+115,By-20,Rx-110,By-5%NpNNn Deffill 0,2,8,NpNNnPbox Lx+25,Ty+25,Rx-203,Ty+39%NpNNnPbox Lx+25,Ty+45,Rx-203,Ty+59%NpNNnPbox Lx+25,Ty+65,Rx-203,By-56%NpNNnPbox Lx+25,By-50,Rx-203,By-36%NpNNnPbox Lx+115,By-20,Rx-113,By-6%NpNN`Box Lx+25,Ty+25,Rx-203,Ty+39NpNN`Box Lx+27,Ty+27,Rx-205,Ty+37NpNN`Box Lx+25,Ty+45,Rx-203,Ty+59NpNN`Box Lx+27,Ty+47,Rx-205,Ty+57NpNN`Box Lx+25,Ty+65,Rx-203,By-56NpNN`Box Lx+27,Ty+67,Rx-205,Ty+77NpNN`Box Lx+25,By-50,Rx-203,By-36NpNN`Box Lx+27,By-48,Rx-205,By-38NpNN`Box Lx+115,By-20,Rx-113,By-6NpNN`Box Lx+117,By-18,Rx-115,By-8NAN&<x*<NfNxpNNTText Lx+38,Ty+35,1HPA"_NHPpAN"_NHPA"_NNNpNNTText Lx+38,Ty+55,HPA"_NHPpBN"_NHPA"_NNNpNNTText Lx+38,By-60,HPA"_NHPpCN"_NHPA"_NNNpNNTText Lx+38,By-40,HPA"_NHPpDN"_NHPA"_NNNNרpNNTText Lx+38,Ty+35,HPA"_NHPp1N"_NHPA"_NNNpNNTText Lx+38,Ty+55,HPA"_NHPp2N"_NHPA"_NNNpNNTText Lx+38,By-60,HPA"_NHPp3N"_NHPA"_NNNpNNTText Lx+38,By-40,HPA"_NHPp4N"_NHPA"_NNNpNNHText Lx+124,By-10,HPA"_NHPNHOK"_NHPA"_NNNpNNTText Lx+68,Ty+35,HPA"_NHPA"_NHPA"_NNNpNNTText Lx+68,Ty+55,HPA"_NHPA"_NHPA"_NNNpNNTText Lx+68,By-60,HPA"_NHPA"_NHPA"_NNNpNNTText Lx+68,By-40,HPA"_NHPA"_NHPA"_NNNpNN`' Now to get answers for youNpNNn+Clr Choice1,Choice2,Choice3,choice4,choice5NpNN`RepeatNpNN`X=MousexNpNN`Y=MouseyNpNN`K=MousekNpNNn7If X>Lx+27 and XTy+27 and YLx+27 and XTy+47 and YLx+27 and XTy+67 and YLx+27 and XBy-48 and YLx+117 and XBy-18 and Y0NpNN`V' The chosen buttons return the value of one to you in the ' Choice(number) ' VariableNpNNnC' If button 1 chosen, Choice1=1 and If button 2 chosen, Choice2=1bNpNN`$' The same is true for buttons 3 & 4NpNN`J' If the buttons are not chosen they will equal 0. Choice1=0 or Choice2=0NpNNnPause 5tNpNNn Graphmode 14NpNNn Defline 1!NpNNn Deftext 1%NpNNn Sput Tempuse$4NpNN` Clr Tempuse$NpNN`ReturnNpNNH Rem # end HPA"_NHPNH procedure #"_NNNpNNNpNpNpNprdN <"<NtpNpN"prdN <"<N(AN&<x*<NfNpNpNpN <rhN <"<NtpNpN" <rhN <"<N( <rjN <"<N(NpNpN"NprNpNnSeven Radio Buttons4NNprNpNnEnter the title of the box: NNprNpN`> A탐r-NA탐NNp&<x*<NA ArNANNp&<x*<NA ArNANNp&<x*<NA ArNANNp&<x*<NA ArNANNp&<x*<NA ArNANNp&<x*<NA ArNANNp&<x*<NALx+82 and XTy+27 and YRx-118 and XTy+27 and YLx+82 and XTy+57 and YRx-118 and XTy+57 and YLx+82 and XBy-48 and YRx-118 and XBy-48 and YLx+208 and XBy-18 and Y0NpNN`V' The chosen buttons return the value of one to you in the ' Choice(number) ' VariableNpNNnC' If button 1 chosen, Choice1=1 and If button 2 chosen, Choice2=1bNpNN`D' The same is true for buttons 3, 4, 5, 6. Choice7 is the exit codeNpNN`J' If the buttons are not chosen they will equal 0. Choice1=0 or Choice2=0NpNNnPause 5tNpNNn Graphmode 14NpNNn Defline 1!NpNNn Deftext 1%NpNNn Sput Tempuse$4NpNN` Clr Tempuse$NpNN`ReturnNpNNH Rem # end HPA"_NHPNH procedure #"_NNNpNNNAZ H0A` 0 Af 0Al =0AN&<x*<NfN1AlNNHAfNL8NAlNANA~NA Np C~NTp C NTBpC~NHxpC~NHxpC~NHxpC~NHxpC~NHxpC~NHxpC~NHxpC~NHxpC~NHx pC~NHx pC~NHx pC~NHx pC~NHxNH(These boxes allow you to get from 1 to 6C N,HxNH(user selected choices from a Dialog Box.C N,HxNH C N,HxNT% These are the available options:C N,HxNH 2 Buttons = 1 ChoiceC N,HxNT 3 Buttons = 2 ChoicesC N,HxNT 5 buttons = 4 ChoicesC N,HxNT 7 Buttons = 6 ChoicesC N,Hx NH C N,Hx NT) Just select the option desired from the4C N,Hx NH(next dialog box. You will then be askedC N,Hx NHto supply label names.C N,pNpNpNpNpN"AZN/AfN"NA`N/AlN"NtAZN/AfN"NA`N/AlN"N(pNpN"AZN&<x*<NN/AfN&<x*<NN"N <r$<A`NNN/ <r$<AlNNN"N(AN&<x*<NfN5pNpC~NNpNp NA 00N5pNpC~NNpNpNA 0AN&<x*<NfN6AZN&<x*<NN/AfN&<x*<NN"NNH" Radio Button Box InformationNN6AZN&<x*<NN/AfN&<x*<NN"NNH" Radio Button Box InformationNA 0 <r$<ANpNANC~NNAZN&<x*<NN/AfN&<x*<NHA NANNL8NN"NANC NNN`hNqpNpNpNpNAZN&<x*<NN/ <r$<AlNNN"NNHContinueNpNpN"AZN&<x*<NN/ <r$<AlNNN"N <r$<A`NNN/ <r$<AlNNN"N(NzNCN|NA$NlNANlNANlHmA "_N6gN9A$N&<x*<NpJBgp/AZN&<x*<NANNVpJBgp/ <r$<A`NNANNPpJBgp/ <r$<AlNNANNVpJBgp/ <r$<AlNNANNPpJBgp$VHgpNpNpNAZN&<x*<NN/ <r$<AlNNN"N <r$<A`NNN/ <r$<AlNNN"NtA~NA NANANNNBm <r$<ANp9@A r @0A r @0AN9@A r @0NAN/Bp0,Cr~NxAN/Hxp0,Cr~NxAN/Hxp0,Cr~NxN`hNqNNBm <r$<ANp9@A r @0A r @0AN9@AN/pCr~N9@AN/pCr~N9@AN/pCr~N9@NN`~NqNNHx; <r$<&<x*<NhANNN/HxHx2Hx2HxHxHxAXNpNpNpNpNpNpNpNpNpN"pK"<N <"<NtpK"<N <"<N(pNpN"pU"<NNH Return To The Desktop? NpNpNpNpd"<Nps"<Ntpd"<|Nps"<NtpNpNpNpd"<Npr"<Ntpd"<|Npr"<Ntpd"<Npr"<N(pf"<Npp"<N(pd"<|Npr"<N(pf"<~Npp"<N(pn"<NpANNpn"<NpBNNp{"<NNH Yes, Good Bye! Np{"<TNNT No, I'll Stay 4NBmNANlNANlNA$NlAN&<x*<NPpJBgp/AN&<x*<NVpJBgp/AN&<x*<NPpJBgp/AN&<x*<NVpJBgp/A$N&<x*<NpJBgp$VHfN?zA 0AN&<x*<NPpJBgp/AN&<x*<NVpJBgp/AN&<x*<NPpJBgp/AN&<x*<NVpJBgp/A$N&<x*<NpJBgp$VHfN@PA 0ANzN>g NNBmBmpAN&<x*<NfN@A p0Al p0NpNpNpNprNA N&<x*<NN"<pNtpNpN"prNA N&<x*<NN"<pN(pNpN"prNA N&<x*<NN"<nN(pNA N&<x*<NN"<&NA N&<x*<NN"<gN(pNpNpNpNA N&<x*<NN"<0NNHCONTINUENAN&<x*<NfNBnpdrN <"<pNtpdrN <"<pN(NBNprNpN`. Hi Resolution Wide Information Box WorkbenchNprNpN`Please enter title of box:NNprNpN`> A탐r#NAN&<x*<NfNC A&rFNAN&<x*<NfND6AlN&<x*<NAlNAlN&<x*<NNr(NA&NNprNppINNNNprNpNn%Please enter the second line of text:4NNprNpN`> A,rFNAN&<x*<NfNEAlN&<x*<NAlNAlN&<x*<NNr(NA,NNprNppINNNNprNpNn)Please enter the third line of text: 4NNprNpN`> A2rFNAN&<x*<NfNFAlN&<x*<NAlNAlN&<x*<NNr(NA2NNprNppINNNNprNpN`*Please enter the last line of text: NNprNpN`> A8rFNAN&<x*<NfNFAlN&<x*<NAlNAlN&<x*<NNr(NA8NBNH" Information Box Now Defined | | HPNH Save | Abort r"_ N +@( -(~NGzNNAZ `0A` 0 Af p0Al *0A탺NNT Widebox.lst4CN|pNHPNH\*.LST"_NHPHmA탺""_NHmA "_N,gNH&A탺NSVHgHmA "_N6fNQ:pNAXNpONHPAr"_N0pNNTRem # HPA"_NHPNH procedure #"_NNNpNp'NNpNN` Procedure ANNpNN`Clr Offset,Offset2NApNAPNANpNN`If rez=2NpNNn Offset=604NpNN` Offset2=10NpNNnEndif0NpNN`@' This style of box is intended for use ONLY with Medium or HighNpNNn' resolution screens.tNpNp'NNpNNn Sget Tempuse$eNpNNn Graphmode 1!NpNNn Deffill 0,2,84NpNNn Defline 1,3!NpNNnPbox Lx,Ty,Rx,By+Offset4NpNN`Box Lx,Ty,Rx,By+OffsetNpNNn Defline 1,1+NpNN`Box Lx+2,Ty+2,Rx-2,By-2+OffsetNpNNn'Box Rx-74,By-13+Offset,Rx-9,By-5+OffsetYNpNNnDeftext 1,0,0,4sNpNNTText Rx-64,By-7+offset,,HPA"_NHPNHCONTINUE"_NHPA"_NNNpNN`If Rez=1NpNNnDeftext 1,0,0,6sNpNN`ElseNpNN`Deftext 1,0,0,13NpNNnEndif,NpNNTText Lx+11,Ty+10+Offset2, HPA"_NHPA탐"_NHPA"_NNNpNN`If Rez=2NpNN`Offset2=Offset2+10NpNNnEndiffNpNNTText Lx+26,Ty+23+Offset2,HPA"_NHPA&"_NHPA"_NNNpNN`If Rez=2NpNN`Offset2=Offset2+10NpNNnEndiffNpNNTText Lx+26,Ty+33+Offset2,HPA"_NHPA,"_NHPA"_NNNpNN`If Rez=2NpNN`Offset2=Offset2+10NpNNnEndiffNpNNTText Lx+26,Ty+43+Offset2,HPA"_NHPA2"_NHPA"_NNNpNN`If Rez=2NpNN`Offset2=Offset2+10NpNNnEndiffNpNNTText Lx+26,Ty+53+Offset2,HPA"_NHPA8"_NHPA"_NNNpNNnE' Now to get the user's o.k. to continue either by mouse or keyboard.4NpNN`RepeatNpNN`K=MousekNpNNn Keybd$=Inkey$4NpNNHUntil K<>0 or Keybd$<>HPA"_NHPA"_NNNpNNn Defline 1 NpNNn Deftext 1%NpNNn Sput Tempuse$4NpNNnClr Tempuse$,Offset,Offset2NpNNnPause 5$NpNN`ReturnNpNNH Rem # end HPA"_NHPNH procedure #"_NNNpNNNA`Np C`NTBmAN&<x*<NfNQA p0NpNpNpNp#rNA N&<x*<NN"<NtpNpN"p#rNA N&<x*<NN"<N(pNpN"pNp%rNA N&<x*<NN"<N(pNpNpNpNA N&<x*<NNrRNA N&<x*<NN"<N(A N&<x*<NNrUNNHCONTINUENAN&<x*<NfNS&pNpNpNpNNS>pNpNpNp NAN&<x*<NfNSpd"<N <"< Ntpd"<N <"< N(NSNprNpN`0 Hi Resolution Long Information Box WorkbenchNNprNpNnPlease Enter Box Title:BNNprNpN`> A탐rNA탐NNp&<x*<NA pC`NrNAlN&<x*<NNr#NpC`NNAN&<x*<NfNVpAlN&<x*<NAlNNprNpNnPlease Enter Line 2 Text:4NNprNppNNNNprNpN`> pC`NrNAlN&<x*<NNr#NpC`NNAN&<x*<NfNWTAlN&<x*<NAlNNprNpNnPlease Enter Line 3 Text:4NNprNppNNNNprNpN`> pC`NrNAlN&<x*<NNr#NpC`NNAN&<x*<NfNX8AlN&<x*<NAlNNprNpNnPlease Enter Line 4 Text:4NNprNppNNNNprNpN`> pC`NrNAlN&<x*<NNr#NpC`NNAN&<x*<NfNYAlN&<x*<NAlNNprNpNnPlease Enter Line 5 Text:4NNprNppNNNNprNpN`> pC`NrNAlN&<x*<NNr#NpC`NNAN&<x*<NfNZAlN&<x*<NAlNNprNpNnPlease Enter Line 6 Text:4NNprNppNNNNprNpN`> pC`NrNAlN&<x*<NNr#NpC`NNAN&<x*<NfNZAlN&<x*<NAlNNprNpNnPlease Enter Line 7 Text:4NNprNppNNNNprNpN`> pC`NrNAlN&<x*<NNr#NpC`NNAN&<x*<NfN[AlN&<x*<NAlNNprNpNnPlease Enter Line 8 Text:4NNprNppNNNNprNpN`> pC`NrNAlN&<x*<NNr#NpC`NNAN&<x*<NfN\AlN&<x*<NAlNNprNpNnPlease Enter Line 9 Text:4NNprNppNNNNprNpN`> p C`NrNAlN&<x*<NNr#Np C`NNAN&<x*<NfN]AlN&<x*<NAlNNprNpN`Please Enter Line 10 Text:NNprNppNNNNprNpN`> p C`NrNAlN&<x*<NNr#Np C`NNBmpBNH" Information Box Now Defined | | HPNH Save | Abort r"_ N +@( -(~N^A`NNNAZ p0A` H0Af 0Al /0A탺NNT Longbox.lst4CN|pNHPNH\*.LST"_NHPHmA탺""_NHmA "_N,gN_LA탺NSVHgHmA "_N6fNlpNAXNpONHPAr"_N0pNNTRem # HPA"_NHPNH procedure #"_NNNpNp'NNpNN` Procedure ANNApNAPNANpNN` Clr OffsetNpNN`If Rez=2NpNN` Offset=120NpNNnEndif0NpNNn3' This style of box is suitable for all resolutions#NpNp'NNpNNn Sget Tempuse$oNpNNn Graphmode 1!NpNNn Deffill 0,2,84NpNNn Defline 1,3!NpNNnPbox Lx,Ty,Rx,By+OffsetaNpNN`Box Lx,Ty,Rx,By+OffsetNpNNn Defline 1,1+NpNN`Box Lx+2,Ty+2,Rx-2,By-2+OffsetNpNN`(Box Lx+67,By-13+Offset,Rx-65,By-5+OffsetNpNNnDeftext 1,0,0,4sNpNNTText Lx+70,By-7+Offset,5HPA"_NHPNHCONTINUE"_NHPA"_NNNpNN`If Rez=2NpNN`Deftext 1,1,0,13NpNN`ElseNpNNnDeftext 1,1,0,6%NpNNnEndif,NpNNn Clr Offset24NpNN`If Rez=2NpNN` Offset2=10NpNNnEndif0NpNNTText Lx+13,Ty+10+Offset2, HPA"_NHPA탐"_NHPA"_NNNpNNn Deftext 1,00NpNN`If Rez=2NpNN` Offset2=25NpNNnEndif5NpNNTText Lx+20,Ty+25+Offset2,HPA"_NHPpC`N"_NHPA"_NNNpNN`If Rez=2NpNN`Offset2=Offset2+10NpNNnEndiffNpNNTText Lx+20,Ty+35+Offset2,HPA"_NHPpC`N"_NHPA"_NNNpNN`If Rez=2NpNN`Offset2=Offset2+10NpNNnEndiffNpNNTText Lx+20,Ty+45+Offset2,HPA"_NHPpC`N"_NHPA"_NNNpNN`If Rez=2NpNN`Offset2=Offset2+10NpNNnEndiffNpNNTText Lx+20,Ty+55+Offset2,HPA"_NHPpC`N"_NHPA"_NNNpNN`If Rez=2NpNN`Offset2=Offset2+10NpNNnEndiffNpNNTText Lx+20,Ty+65+Offset2,HPA"_NHPpC`N"_NHPA"_NNNpNN`If Rez=2NpNN`Offset2=Offset2+10NpNNnEndiffNpNNTText Lx+20,Ty+75+Offset2,HPA"_NHPpC`N"_NHPA"_NNNpNN`If Rez=2NpNN`Offset2=Offset2+10NpNNnEndiffNpNNTText Lx+20,Ty+85+Offset2,HPA"_NHPpC`N"_NHPA"_NNNpNN`If Rez=2NpNN`Offset2=Offset2+10NpNNnEndiffNpNNTText Lx+20,Ty+95+Offset2,HPA"_NHPpC`N"_NHPA"_NNNpNN`If Rez=2NpNN`Offset2=Offset2+10NpNNnEndiffNpNNHText Lx+20,Ty+105+Offset2,HPA"_NHPp C`N"_NHPA"_NNNpNN`If Rez=2NpNN`Offset2=Offset2+10NpNNnEndiffNpNNHText lx+20,Ty+115+Offset2,HPA"_NHPp C`N"_NHPA"_NNNpNNnE' Now to get the user's o.k. to continue either by mouse or keyboard.4NpNN`RepeatNpNN`K=mousekNpNNn Keybd$=Inkey$4NpNNHUntil K<>0 or Keybd$<>HPA"_NHPA"_NNNpNNn Defline 1 NpNNn Deftext 1%NpNNn Sput Tempuse$4NpNN`Clr Tempuse$,Offset2NpNNnPause 5$NpNN`ReturnNpNNH Rem # end HPA"_NHPNH procedure #"_NNNpNNNANNNprNpN`>  Function Key Box Definition Procedure NNpr NpN`,  Enter Quit to abort NNprNpN`Please enter title of box:NNprNpN`> A탐rNA탐NNp&<x*<NA Ap H0ANHmNHQUIT"_N,fNoDNyAnCtN|NprNpp(NNNNprNpNn#Now for 1st Function Key Secondary:4NNprNpN`> ANHmNHQUIT"_N,fNoNyAnCzN|NprNpp2NNNNp2NNNNprNpN`Function Key 1 Defined as:NNprNpN` Primary = AtNNNprNpN` Secondary = AzNNNprNpNn!Now for 2nd Function Key Primary:4NNp rNpN`> Ap H0ANHmNHQUIT"_N,fNq&NyAnC턀N|Np rNpp(NNNNprNpNn#Now for 2nd Function Key Secondary:4NNp rNpN`> ANHmNHQUIT"_N,fNqNyAnC턆N|NprNpp2NNNNp2NNNNprNpN`Function Key 2 Defined as:NNp rNpN` Primary = A턀NNNp rNpN` Secondary = A턆NNNp rNpNn!Now for 3rd Function Key Primary:4NNp rNpN`> Ap H0ANHmNHQUIT"_N,fNsNyAnC턌N|Np rNpp(NNNNp rNpNn#Now for 3rd Function Key Secondary:4NNp rNpN`> ANHmNHQUIT"_N,fNsNyAnC턒N|Np rNpp2NNNNp2NNNNp rNpN`Function Key 3 Defined as:NNp rNpN` Primary = A턌NNNp rNpN` Secondary = A턒NNNprNpNn!Now for 4th Function Key Primary:4NNprNpN`> Ap H0ANHmNHQUIT"_N,fNtNyAnC턘N|NprNpp(NNNNprNpNn#Now for 4th Function Key Secondary:4NNprNpN`> ANHmNHQUIT"_N,fNuNyAnC턞N|NprNpp2NNNNp2NNNNprNpN`Function Key 4 Defined as:NNprNpN` Primary = A턘NNNprNpN` Secondary = A턞NNNprNpNn!Now for 5th Function Key Primary:4NNprNpN`> Ap H0ANHmNHQUIT"_N,fNvNyAnC턤N|NprNpp(NNNNprNpNn#Now for 5th Function Key Secondary:4NNprNpN`> Ap H0ANHmNHQUIT"_N,fNwzNyAnC턪N|NprNpp2NNNNp2NNNNprNpN`Function Key 5 Defined as:NNprNpN` Primary = A턤NNNprNpN` Secondary = A턪NNNpr Npp2NNNNprNpN`0 Keys are now defined, Save This Box? Y/NNpNANlAN&<x*<NpJBgp/AN&<x*<NpJBgp$VHgNyTAN&<x*<NpJBgp/AN&<x*<NpJBgp$VHgNyT`DAN&<x*<NpJBgp/AN&<x*<NpJBgp$VHfNyAyNNNA탺NNH Functbox.lstCN|pNHPNH\*.LST"_NHPHmA탺""_NHmA "_N,gNz0A탺NSVHgHmA "_N6fNpNAXNpONHPAr"_N0pNNTRem # HPA"_NHPNH procedure #"_NNNpNp'NNpNN` Procedure ANNApNpNN` Rez=Xbios(4)NpNNnA' This style of box is intended for use only with Medium and HighNpNN`H' Resolution screens. You may however use the same techniques presentedNpNN`F' in this source code to create a function key box for Low Resolution.NpNp'NNpNNn Sget Tempuse$cNpNNn Graphmode 1!NpNNn Deffill 0,2,84NpNNn Defline 1,5,2%NpNNnHidem,NpNNn If Rez=2 Then%NpNNn Deffill 0,2,8%NpNN`Pbox 75,35,564,350NpNNnBox 75,35,564,350%NpNN`Deftext 1,0,0,13NpNNnEndif,NpNNn If Rez=1 Then!NpNN`Pbox 75,20,564,179NpNNnBox 75,20,564,179%NpNNnDeftext 1,0,0,6!NpNNnEndif,NpNNTPrint At(25,4);%HPA"_NHPA탐"_NHPA"_NNNpNNnPrint At(20,6);NpNNHPrint HPA"_NHPNH(''Press Key Indicated To Toggle Values''"_NHPA"_NNNpNNnDefault_screen:NpNNnPrint At(25,9);%NpNNHPrint HPA"_NHPNTF1 = e"_NHPA"_NNNpNN`Print At(25,11);NpNNHPrint HPA"_NHPNTF2 = "_NHPA"_NNNpNN`Print At(25,13);NpNNHPrint HPA"_NHPNTF3 = "_NHPA"_NNNpNN`Print At(25,15);NpNNHPrint HPA"_NHPNTF4 = "_NHPA"_NNNpNN`Print At(25,17);NpNNHPrint HPA"_NHPNTF5 = "_NHPA"_NNNpNN`Print At(25,20);NpNNHPrint HPA"_NHPNH Press the Spacebar to Exit"_NHPA"_NNNpNN`If Key_choice1=0NpNNnPrint At(30,9);%NpNNHPrint HPA"_NHPAt"_NHPA"_NNNpNNnEndifNpNN`If Key_choice1=1NpNNnPrint At(30,9);%NpNNHPrint HPA"_NHPAz"_NHPA"_NNNpNNnEndifNpNN`If Key_choice2=0NpNN`Print At(30,11);NpNNHPrint HPA"_NNHmA"_NNNpNNnEndifNpNN`If Key_choice2=1NpNN`Print At(30,11);NpNNHPrint HPA"_NHPA턆"_NHPA"_NNNpNNnEndifNpNN`If Key_choice3=0NpNN`Print At(30,13);NpNNHPrint HPA"_NHPA턌"_NHPA"_NNNpNNnEndifNpNN`If Key_choice3=1NpNN`Print At(30,13);NpNNHPrint HPA"_NHPA턒"_NHPA"_NNNpNNnEndifNpNN`If Key_choice4=0NpNN`Print At(30,15);NpNNHPrint HPA"_NHPA턘"_NHPA"_NNNpNNnEndifNpNN`If Key_choice4=1NpNN`Print At(30,15);NpNNHPrint HPA"_NHPA턞"_NHPA"_NNNpNNnEndifNpNN`If Key_choice5=0NpNN`Print At(30,17);NpNNHPrint HPA"_NHPA턤"_NHPA"_NNNpNNnEndifNpNN`If Key_choice5=1NpNN`Print At(30,17);NpNNHPrint HPA"_NHPA턪"_NHPA터"_NNNpNNnEndifNpNN`DoNpNN`A=Inp(2)NpNN` Exit If A=32NpNN`If A=187NpNN`Switch=1NpNN`If Key_choice1=0NpNNn Key_choice1=1!NpNN`ElseNpNNn Key_choice1=0%NpNNnEndifeNpNNnEndif%NpNN`If A=188NpNN`Switch=1NpNN`If Key_choice2=0NpNNn Key_choice2=1!NpNN`ElseNpNNn Key_choice2=0%NpNNnEndifeNpNNnEndif%NpNN`If A=189NpNN`Switch=1NpNN`If Key_choice3=0NpNNn Key_choice3=1!NpNN`ElseNpNNn Key_choice3=0%NpNNnEndifeNpNNnEndif%NpNN`If A=190NpNN`Switch=1NpNN`If Key_choice4=0NpNNn Key_choice4=1!NpNN`ElseNpNNn Key_choice4=0%NpNNnEndifeNpNNnEndif%NpNN`If A=191NpNN`Switch=1NpNN`If Key_choice5=0NpNNn Key_choice5=1!NpNN`ElseNpNNn Key_choice5=0%NpNNnEndifeNpNNnEndif%NpNNn If Switch=14NpNNnGoto Default_screen4NpNNnEndifuNpNN`LoopNpNNn Sput Tempuse$eNpNN` Clr Tempuse$NpNN`:' The values are returned in the variables Key_choice(1-5)NpNN`@' If the primary is selected the value is 0 and if the secondaryNpNN`,' was chosen the value in the variable is 1.NpNp'NNpNN`ReturnNpNNH Rem # end HPA"_NHPNH procedure #"_NNNpNNNApN/An"NAnN(CN|AnNNpApNNVfNHmnAnNNpApNNNN"_NCnN|NNAN&<x*<NfNJA 0NNH.  Flip Page |  Flip Back | Return to Quit C턼N|A6 0AZ x0Ar 0Ax 0A` 0 Af `0AN&<x*<NfNAl /0NAl #0pNpNpNAN&<x*<NfNppNpNpNpNNpNpNpNp NpNpN"AZN/AfN"NA`N/AlN"NtAN&<x*<NfN <rsN <"< NtAZN/AfN"NA`N/AlN"N(pNpN"AN&<x*<NfN| <rsN <"< N(AZN&<x*<NN/AfN&<x*<NN"N <r$<A`NNN/ <r$<AlNNN"N(AN&<x*<NfND <"<NA턼NN\ <<"<NA턼NHxNT Want some help? HPNT No | Yes r"_ N +@(pN -(UWHfNAZ H0A` 0 Af 0Al =0AN&<x*<NfNfN2AB 0 <r$<ABNNprNpp-NNNNprNpNn > 4ANCNNr*NANCNNCN|AN&<x*<NANAN(HPNHQUIT"_N,fNf <r$<ANNANAN/A CNN, <r$<ANNANAB @0AX 0NANCNNNNp&<x*<NA 0NpNNn Pages=Pages+1!NpNNnEndifeNpNNn Pointer=14NpNp@NHPA"_NHPNT drawlines"_NNNpNN`DoNpNNnKeyinput=Inp(2)rNpNN`0' See if the key pressed was the <= left arrow NpNNnIf Keyinput=203eNpNN` If Pointer>1NpNNnPointer=Pointer-14NpNp@NHPA"_NHPNT drawlinese"_NNNpNNnEndifNpNN`ElseNpNNn' We do nothingrNpNNnPointer=Pointer%NpNNnEndifoNpNN`"' Now for the => right arrow key NpNNnIf Keyinput=205gNpNN`If Pointer <r$<ANNNNpNNT3Text Lx+26,(Ty+11)+10*Drawlines+(Offset*Drawlines), HPA"_NHPNH$(Startloop+Drawlines)"_NNNpNN`Next DrawlinesNpNN`ReturnNpNNH Rem # end HPA"_NHPNT)drawlines procedure #"_NNNpNNNANHxpC~NVNpNpNpNpNp Np"<NNTEditable Dialog Box Workbench)NpNpNpNpNprNp"<NHxNT+Do you want to display|Resolution Outlines?4HPNH Yes | No r"_ N +@( -(~N NTCHold down the button to draw box outline and release when satisfied CN|ADNprNpONNpr NNT# Dialog Box Outline is now defined iNA :NAN&<x*<NfNBHxNT7 Kill this box? | Let's Keep it? | Leave?4HPNT Kill | Keep | Bye %r"_ N +@( -(SWHfNBN -(Np&<x*<NpJBgp/AN&<x*<NpJBgp$VHfN6HxHxANC~NdHxHxANC~NdHxHxANC~NdHxHxANC~NdAN&<x*<NN/AN&<x*<NN"N <r$<ANNN/ <r$<ANNN"N(HxHxAN&<x*<NC~NdHxHxAN&<x*<NC~NdHxHx <r$<ANNC~NdHxHx <r$<ANNC~NdprNpONNNTEHold down the button to draw box 1 outline and release when satisfiedCN|ADNprNpONNprNNT#First Dialog Object Box is defined:aNA :NAN&<x*<NfN6HxHxANC~NdHxHxANC~NdHxHxANC~NdHxHxANC~NdAN&<x*<NN/AN&<x*<NN"N <r$<ANNN/ <r$<ANNN"N(HxHxAN&<x*<NC~NdHxHxAN&<x*<NC~NdHxHx <r$<ANNC~NdHxHx <r$<ANNC~NdpNNTEHold down the button to draw box 2 outline and release when satisfiedCN|ADNprNpONNprNNH$Second Dialog Object Box is defined:NA :NAN&<x*<NfN6HxHxANC~NdHxHxANC~NdHxHxANC~NdHxHxANC~NdAN&<x*<NN/AN&<x*<NN"N <r$<ANNN/ <r$<ANNN"N(HxHxAN&<x*<NC~NdHxHxAN&<x*<NC~NdHxHx <r$<ANNC~NdHxHx <r$<ANNC~NdpNNTEHold down the button to draw box 3 outline and release when satisfiedCN|ADNprNpONNprNNT#Third Dialog Object Box is defined:aNA :NAN&<x*<NfN6HxHxANC~NdHxHxANC~NdHxHxANC~NdHxHxANC~NdAN&<x*<NN/AN&<x*<NN"N <r$<ANNN/ <r$<ANNN"N(HxHxAN&<x*<NC~NdHxHxAN&<x*<NC~NdHxHx <r$<ANNC~NdHxHx <r$<ANNC~NdNTCHold down the button to draw an exit box and release when satisfiedCN|ADNprNpONNpNprNNH"Exit Dialog Choice Box is defined:NHx HxANC~NdHx HxANC~NdHx HxANC~NdHx HxANC~NdAN&<x*<NN/AN&<x*<NN"N <r$<ANNN/ <r$<ANNN"N(Hx HxAN&<x*<NC~NdHx HxAN&<x*<NC~NdHx Hx <r$<ANNC~NdHx Hx <r$<ANNC~NdANAN&<x*<NfN Dialog Box is now Defined: To save the box choose  ContinueNA :NAN+@pNNNprNpONNprNANpNpNpN"pNpBLBPAN&<x*<NN+@T -\Np&<x*<NN+@XN+@dN+@h -LJWHfNVNH +@l +@p +@L -p`]HfN +m`p -ldVHfN:+mld -phVHfNT+mph` -dANl -hANl+|t+mlx+mp| -tSWHfNBNH +@ +@ +@t -`]HfN+m` -xVHpJBgp/ -|VHpJBgp$VHfN> -p"-lN -|"-xN( -p"-lN -"-N(+mx+m|`B -xANl -|ANl -p"-lN -"-N(pNpAN/AN"NAN/AN"N(NNANpNpNpprNpPNNprNNTAEnter A Box Title: Left Button = Keep Right Button = Start Over4NpNpANA CN|NANlNANlNA$NlNCN|HmA "_N6fNƠHmA"_NCN|AN/AN"NANpNA$N&<x*<NfN,N\Hx HxNNpC~NdHx HxNNpC~NdANNzA$N&<x*<NfNZA CN|ANA$N&<x*<NgpNpNpprNpONNprNNH@Enter Box 1 Text: Left Button = Keep Right Button = Start OverNpNpANA CN|NANlNANlNA$NlNCN|HmA "_N6fNfHmA"_NCN|AN/AN"NANpNA$N&<x*<NfNHx HxNNpC~NdHx HxNNpC~NdN\ANNzA$N&<x*<NfN A CN|ANA$N&<x*<NgpNpNpprNpONNprNNH@Enter Box 2 Text: Left Button = Keep Right Button = Start OverNANpNpA CN|NANlNANlNA$NlNCN|HmA "_N6fN,HmA"_NCN|AN/AN"NANpNA$N&<x*<NfNʸHx HxNNpC~NdHx HxNNpC~NdN\ANNzA$N&<x*<NfNA CN|ANA$N&<x*<NgpNpNpprNpONNprNNH@Enter Box 3 Text: Left Button = Keep Right Button = Start OverNANpNpA CN|NANlNANlNA$NlNCN|HmA "_N6fNHmA"_NCN|AN/AN"NANpNA$N&<x*<NfN~HxHxNNpC~NdHxHxNNpC~NdN\ANNzA$N&<x*<NfN̬A CN|ANA$N&<x*<NgpNpNpprNpONNprNNTCEnter Exit Box Text: Left Button = Keep Right Button = Start Over4NANpNpA CN|NANlNANlNA$NlNCN|HmA "_N6fNͼHmA"_NCN|AN/AN"NANpNA$N&<x*<NfNHHxHxNNpC~NdHxHxNNpC~NdN\ANNzA$N&<x*<NfNvA CN|ANA$N&<x*<NgpNpNpAgANNbNNpNpA탺NNT Custmbx.lst4CN|pNHPNH\*.LST"_NHPHmA탺""_NHmA "_N,gNўA탺NSVHgHmA "_N6fNpNAXNpONHPAr"_N0pNNTRem # HPA"_NHPNH procedure #"_NNNpNp'NNpNN` Procedure ANNApNAPNpNNnA' It is up to you to design this box to the specifications neededNpNNnA' in the desired resolution. If you are unsure if a box will fit%NpNNnE' within the bounds of a given resolution, use the resolution overlay4NpNN`.' option with the Custom Designed Box routine.NpNp'NNpNNn Sget Tempuse$ NpNN`' Now for your object dataNpNp'NNpNp'NNpNNn Deffill 0,2,8jNpNNn Defline 1,2!NpNNn%' Now for the Main Dialog Box ObjectstNpNNnPbox HxpC~NNp,NHxpC~NNp,NHxpC~NNp,NHxpC~NNNpNNn Defline 1,1NpNN`Box HxpC~NNp,NHxpC~NNp,NHxpC~NNp,NHxpC~NNNpNN`Box HxpC~NNp,NHxpC~NNp,NHxpC~NNp,NHxpC~NNNpNNn'Main Box LabelNpNNnText Hx pC~NNp,NHx pC~NNp,NHPA"_NHPA"_NHPA"_NNNpNp'NNpNNn' Choice Box #1NpNN`Box HxpC~NNp,NHxpC~NNp,NHxpC~NNp,NHxpC~NNNpNN`Box HxpC~NNp,NHxpC~NNp,NHxpC~NNp,NHxpC~NNNpNNnText Hx pC~NNp,NHx pC~NNp,NHPA"_NHPA"_NHPA"_NNNpNp'NNpNNn' Choice Box #2NpNN`Box HxpC~NNp,NHxpC~NNp,NHxpC~NNp,NHxpC~NNNpNN`Box HxpC~NNp,NHxpC~NNp,NHxpC~NNp,NHxpC~NNNpNNnText Hx pC~NNp,NHx pC~NNp,NHPA"_NHPA"_NHPA"_NNNpNp'NNpNNn' Choice Box #3NpNN`Box HxpC~NNp,NHxpC~NNp,NHxpC~NNp,NHxpC~NNNpNN`Box HxpC~NNp,NHxpC~NNp,NHxpC~NNp,NHxpC~NNNpNNnText HxpC~NNp,NHxpC~NNp,NHPA"_NHPA"_NHPA"_NNNpNp'NNpNN` ' Exit BoxNpNN`Box Hx pC~NNp,NHx pC~NNp,NHx pC~NNp,NHx pC~NNNpNN`Box Hx pC~NNp,NHx pC~NNp,NHx pC~NNp,NHx pC~NNNpNNnText HxpC~NNp,NHxpC~NNp,NHPA"_NHPA"_NHPA"_NNNpNp'NNpNN`' End of Object Box DefinitionNpNp'NNpNN`>' If you want to add additional text, this is the area for it.NpNp'NNpNp'NNpNNn' Now for the User Input:aNpNNnM' See the source libraries for techniques to get user input from the keyboard>NpNNnS' If you intend to use text entry, you should leave room in your Dialog Box for it.4NASlx+11 And XSty And YSrx-11 And XSty And YSlx And Y>Sty And YMincount>NpNNnActualcount=Actualcount-14NpNNn X=ActualcountlNpNNH@Redraw_sliderHPA"_NNNpNNn Graphmode 1NpNNnDeftext 1,0,0,64NpNNnText ,HxpC~NNp,NHxpC~NNp,NHPA"_NHPA"_NHPA"_NNNn +Percent$!NpNNnEndifNpNNnEndif%NpNN`' Main Box Object managementNpNNn If K=1 and X> HxpC~NNNn and X<4HxpC~NNNn and Y>4HxpC~NNNn and Y<4HxpC~NNNpNN` If Choice1=0NpNNn Choice1=1!NpNNn Deffill 1,2,84NpNNnPbox ,HxpC~NNp,NHxpC~NNp,NHxpC~NNp,NHxpC~NNNpNNn Deftext 0NpNNn Graphmode 24NpNNnText Hx pC~NNp,NHx pC~NNp,NHPA"_NHPA"_NHPA"_NNNpNN`ElseNpNNn Graphmode 1NpNNn Deftext 1,0%NpNNn Deffill 0,2,84NpNNnPbox ,HxpC~NNp,NHxpC~NNp,NHxpC~NNp,NHxpC~NNNpNN`Box HxpC~NNp,NHxpC~NNp,NHxpC~NNp,NHxpC~NNNpNN`Box HxpC~NNp,NHxpC~NNp,NHxpC~NNp,NHxpC~NNNpNNnText Hx pC~NNp,NHx pC~NNp,NHPA"_NHPA"_NHPA"_NNNpNNn Choice1=0 NpNNnEndif NpNNnEndif%NpNNn If K=1 and X>4HxpC~NNNn and X<4HxpC~NNNn and Y>4HxpC~NNNn and Y<4HxpC~NNNpNN` If Choice2=0NpNNn Choice2=1!NpNNn Deffill 1,2,84NpNNnPbox ,HxpC~NNp,NHxpC~NNp,NHxpC~NNp,NHxpC~NNNpNNn Deftext 0NpNNn Graphmode 24NpNNnText Hx pC~NNp,NHx pC~NNp,NHPA"_NHPA"_NHPA"_NNNpNN`ElseNpNNn Graphmode 1NpNNn Deftext 1,0%NpNNn Deffill 0,2,84NpNNnPbox ,HxpC~NNp,NHxpC~NNp,NHxpC~NNp,NHxpC~NNNpNN`Box HxpC~NNp,NHxpC~NNp,NHxpC~NNp,NHxpC~NNNpNN`Box HxpC~NNp,NHxpC~NNp,NHxpC~NNp,NHxpC~NNNpNNnText Hx pC~NNp,NHx pC~NNp,NHPA"_NHPA"_NHPA"_NNNpNNn Choice2=0 NpNNnEndif NpNNnEndif%NpNNn If K=1 and X>4HxpC~NNNn and X<4HxpC~NNNn and Y>4HxpC~NNNn and Y<4HxpC~NNNpNN` If Choice3=0NpNNn Choice3=1!NpNNn Deffill 1,2,84NpNNnPbox ,HxpC~NNp,NHxpC~NNp,NHxpC~NNp,NHxpC~NNNpNNn Deftext 0NpNNn Graphmode 24NpNNnText HxpC~NNp,NHxpC~NNp,NHPA"_NHPA"_NHPA"_NNNpNN`ElseNpNNn Graphmode 1NpNNn Deftext 1,0%NpNNn Deffill 0,2,84NpNNnPbox ,HxpC~NNp,NHxpC~NNp,NHxpC~NNp,NHxpC~NNNpNN`Box HxpC~NNp,NHxpC~NNp,NHxpC~NNp,NHxpC~NNNpNN`Box HxpC~NNp,NHxpC~NNp,NHxpC~NNp,NHxpC~NNNpNNnText HxpC~NNp,NHxpC~NNp,NHPA"_NHPA"_NHPA"_NNNpNNn Choice3=0NpNNnEndifNpNNnEndif%NpNNnPause 84NpNN`Until K=1 and X>Hx pC~NNNn and X<4Hx pC~NNNn and Y>4Hx pC~NNNn and Y<4Hx pC~NNNpXNNn Deffill 1,2,8!NpNNnPbox ,Hx pC~NNp,NHx pC~NNp,NHx pC~NNp,NHx pC~NNNpNNn Deftext 0 NpNNn Graphmode 24NpNNnText HxpC~NNp,NHxpC~NNp,NHPA"_NHPA"_NHPA"_NNNpNN`Pause 10NpNNn Graphmode 14NpNNn Sput Tempuse$4NpNN` Clr Tempuse$NpNN`B' Box values are returned in the Choice1,Choice2,Choice3 variablesNpNN`F' with a value of 1 indicating selection. Slider percentage is storedNpNNn=' in the Slidepercent variable as a number between 0 and 100.tNpNN`ReturnNpNNH Rem # end HPA"_NHPNT)drawlines procedure #"_NNNA' By adjusting these coordinates you can move the box anywhereNpNNn9' on the screen. Don't forget the different resolutions.eNpNp'NNpNN`@' Moving a box on screen is as easy as adjusting these 4 points:NpNNnLx=gAZNNpNNnRx=A`NNpNNnTy=AfNNpNNnBy=AlNNpNp'NNpNp'NNNNpNNnE' The GFA Basic Companion Computer Generated Source Code 19874NpNp'NNpNp'NNpNNnG' This source code is Copyright (c) 1987 Marathon Computer Press4NpNNn)' '&8NpNN`8' Distributed by MichTron, Inc. NpNp'NNpNN`H' Legal owners of The GFA Basic Companion are granted a non-exclusive NpNN`J' license to distribute applications containing this source code withoutNpNN`L' any additional royalties or licensing fees with the following exception:NpNp'NNpNNnA' The user agrees not to distribute any applications containingeNpNN`D' this source code modified or unmodified in any manner unless theNpNNn;' the program/application is in compiled or PSAVED form. sNpNp'NNpNNnE' By your use of this product you consent to all of the above terms4NpNN`2' with no exceptions, or exclusions of any kind.NpNp'NNpNN`F' To release this source code in any other manner is a violation of NpNN`:' Title 17 of the U.S. Code governing copyrighted works.NpNN`4' Violators will be prosecutedNpNN`2' All rights are reserved.NpNp'NNpNN`D' Please Honor Our Copyright and the Conditions Outlined AboveNpNp'NNNNAZ 0A` p0Af 0Al 0ANpNpNpNpNpNpNpNpNpN"AZN/AfN"NA`N/AlN"NtAZN/AfN"NA`N/AlN"N(pNpN"AZN&<x*<NN/AfN&<x*<NN"NNH Dialog Box Options NpNpNpNAZN&<x*<NN/AfN&<x*<NN"N <r$<A`NNN/ <r$<AlNNN"NtAZN&<x*<NN/AfN&<x*<NN"N <r$<A`NNN/ <r$<AlNNN"NtpNpNpNAZN&<x*<NN/AfN&<x*<NN"N <r$<A`NNN/ <r$<AlNNN"NtAZN&<x*<NN/AfN&<x*<NN"N <r$<A`NNN/ <r$<AlNNN"NtAZN&<x*<NN/AfN&<x*<NN"N <r$<A`NNN/ <r$<AlNNN"N(AZN&<x*<NN/AfN&<x*<NN"N <r$<A`NNN/ <r$<AlNNN"N(AZN&<x*<NN/AfN&<x*<NN"N <r$<A`NNN/ <r$<AlNNN"N(AZN&<x*<NN/AfN&<x*<NN"N <r$<A`NNN/ <r$<AlNNN"N(AZN&<x*<NN/ <r$<AlNNN"NNH Continue N <r$<A`NNN/ <r$<AlNNN"NNT Abort 4NBmNANlNANlNA$NlAZN&<x*<NANNVpJBgp/ <r$<A`NNANNPpJBgp/AfN&<x*<NANNVpJBgp/ <r$<AlNNANNPpJBgp/A$N&<x*<NpJBgp$VHfNA 0AZN&<x*<NANNVpJBgp/ <r$<A`NNANNPpJBgp/AfN&<x*<NANNVpJBgp/ <r$<AlNNANNPpJBgp/A$N&<x*<NpJBgp$VHfNA 0ANzN>gANANNNAZ 0A` p0Af 0Al 0ANpNpNpNpNpNpNpNpNpN"AZN/AfN"NA`N/AlN"NtAZN/AfN"NA`N/AlN"N(pNpN"AZN&<x*<NN/AfN&<x*<NN"NNH Labeling Options NpNpNpNAZN&<x*<NN/AfN&<x*<NN"N <r$<A`NNN/ <r$<AlNNN"NtAZN&<x*<NN/AfN&<x*<NN"N <r$<A`NNN/ <r$<AlNNN"NtpNpNpNAZN&<x*<NN/AfN&<x*<NN"N <r$<A`NNN/ <r$<AlNNN"NtAZN&<x*<NN/AfN&<x*<NN"N <r$<A`NNN/ <r$<AlNNN"NtAZN&<x*<NN/AfN&<x*<NN"N <r$<A`NNN/ <r$<AlNNN"N(AZN&<x*<NN/AfN&<x*<NN"N <r$<A`NNN/ <r$<AlNNN"N(AZN&<x*<NN/AfN&<x*<NN"N <r$<A`NNN/ <r$<AlNNN"N(AZN&<x*<NN/AfN&<x*<NN"N <r$<A`NNN/ <r$<AlNNN"N(AZN&<x*<NN/ <r$<AlNNN"NNH Add Text N <r$<A`NNN/ <r$<AlNNN"NNT Skip Text 4NBmNANlNANlNA$NlAZN&<x*<NANNVpJBgp/ <r$<A`NNANNPpJBgp/AfN&<x*<NANNVpJBgp/ <r$<AlNNANNPpJBgp/A$N&<x*<NpJBgp$VHfNA 0AZN&<x*<NANNVpJBgp/ <r$<A`NNANNPpJBgp/AfN&<x*<NANNVpJBgp/ <r$<AlNNANNPpJBgp/A$N&<x*<NpJBgp$VHfNA 0ANzN>gpNANANNNAZ 0A` p0Af 0Al 0ANpNpNpNpNpNpNpNpNpN"AZN/AfN"NA`N/AlN"NtAZN/AfN"NA`N/AlN"N(pNpN"AZN&<x*<NN/AfN&<x*<NN"NNT Add A Slider Box? NpNpNpNAZN&<x*<NN/AfN&<x*<NN"N <r$<A`NNN/ <r$<AlNNN"NtAZN&<x*<NN/AfN&<x*<NN"N <r$<A`NNN/ <r$<AlNNN"NtpNpNpNAZN&<x*<NN/AfN&<x*<NN"N <r$<A`NNN/ <r$<AlNNN"NtAZN&<x*<NN/AfN&<x*<NN"N <r$<A`NNN/ <r$<AlNNN"NtAZN&<x*<NN/AfN&<x*<NN"N <r$<A`NNN/ <r$<AlNNN"N(AZN&<x*<NN/AfN&<x*<NN"N <r$<A`NNN/ <r$<AlNNN"N(AZN&<x*<NN/AfN&<x*<NN"N <r$<A`NNN/ <r$<AlNNN"N(AZN&<x*<NN/AfN&<x*<NN"N <r$<A`NNN/ <r$<AlNNN"N(AZN&<x*<NN/ <r$<AlNNN"NNT Yes N <r$<A`NNN/ <r$<AlNNN"NNH No NBmNANlNANlNA$NlAZN&<x*<NANNVpJBgp/ <r$<A`NNANNPpJBgp/AfN&<x*<NANNVpJBgp/ <r$<AlNNANNPpJBgp/A$N&<x*<NpJBgp$VHfN#^A 0AZN&<x*<NANNVpJBgp/ <r$<A`NNANNPpJBgp/AfN&<x*<NANNVpJBgp/ <r$<AlNNANNPpJBgp/A$N&<x*<NpJBgp$VHfN$dA 0ANzN>gpNANANNNANAZ `0A` 0 Af p0Al 0pNppNpNpNpNpN"AZN/AfN"NA`N/AlN"NtAZN/AfN"NA`N/AlN"N(pNpN"AZN&<x*<NN/AfN&<x*<NN"N <r$<A`NNN/ <r$<AlNNN"N(pNpNpNpNpNpNpNpNAZN&<x*<NN/AfN&<x*<NN"NNHAdding A Slider Box:NAZN&<x*<NN/AfN&<x*<NN"NNHD To add a Slider Box, just hold down the left mouse button and moveNAZN&<x*<NN/AfN&<x*<NN"NNHFthe slider into position. When it is located in the desired position,NAZN&<x*<NN/AfN&<x*<NN"NNH:just release the mouse button. That's all there is to it!NAZN&<x*<NN/AfN&<x*<NN"NNT?  Press Down on the Left Mouse Button and Hold Down to Start.4NNA$NlA$N&<x*<NgNANlNANlNA$NlCA 0AN&<x*<NANCA 0AN&<x*<NA$NA)NA$NzNgfANNNANpNCN|pNC N|pNpN"AN/AN"NAN/A$N"N(AN&<x*<NfN*AN&<x*<NN/AN&<x*<NN"NAN <r$<ANNN/AN&<x*<NN"NA NN+FAN&<x*<NN/ <r$<A$NNN"NAN <r$<ANNN/ <r$<A$NNN"NA NAN&<x*<NN/AN"NAN&<x*<NN/A$N"N <r$<ANNN/AN"N <r$<ANNN/A$N"NpNpNpNAN&<x*<NN/AN"N <r$<ANNN/A$N"NtpNpNpNAN&<x*<NN/AN"NAN&<x*<NN/A$N"NtAN&<x*<NN/AN"NAN&<x*<NN/A$N"N(NNBmdBm^Bm|AZ u0A` E0Af 0Al 0AN&<x*<NfN-AfNAlNNAZNA` 0ANpNpNpNpNpN"AN&<x*<NfN.4pNpNpNp NN.LpNpNpNpNAZN/AfN"NA`N/AZNAlNNN"NtpNpN"AZN/AfN"NA`N/AZNAlNNN"N(pNpN"AZN&<x*<NN/AfN&<x*<NN"N <r$<A`NNN/ <r$<AlNNAZNNN"N(NT  Error C탐N|AN&<x*<NfN0AZN&<x*<NN/AfN&<x*<NN"NA탐NN0PAZN&<x*<NN/AfN&<x*<NN"NA탐NNT Number = CN|AZN&<x*<NN/AfN&<x*<NA`NNN"NHmNpJBgp/AxNzN>pJBgp$VHfN6A76NA$N&<x*<NpJBgp/AZN&<x*<NANNVpJBgp/ <r$<A`NNANNPpJBgp/ <r$<AlNNAZNNANNVpJBgp/ <r$<AlNNAZNNANNPpJBgp$VHfN8AZN&<x*<NN/ <r$<AlNNAZNNN"N <r$<A`NNN/ <r$<AlNNAZNNN"NtpN+|A$N&<x*<NpJBgp/ <r$<A`NNANNVpJBgp/ <r$<A`NNANNPpJBgp/ <r$<AlNNAZNNANNVpJBgp/ <r$<AlNNAZNNANNPpJBgp$VHfN: <r$<A`NNN/ <r$<AlNNAZNNN"N <r$<A`NNN/ <r$<AlNNAZNNN"Nt+|NA76N -JVHgANANBm^BmdA+xNNN*Ft D &b(Z8^2\2~(:d8n <\8d8 & 288\^nr|>`T Fzn,  4Ptz:||r& f 4VFRZzf>0l0bp>ZzP>P68<^0j& Zx( X 6b*Z`d 0*&&& ^  d @& J"l$ ^  d@Z& "      l& d8>ZZNZZNZZNZZ&x       "& PZZNZZNZZNZZNZZNZZ04PvvR6誤& Z:> ^t $&  0 z  z  z  z   VZp& \BvzvZ4Pt~.P0b|rN0dFpNZx& &( XR&~VR&R&R&& &&l.F.@^f^f^f^f^f`^f8&  J*rR&..80GfABASIC@VZZZdnnn3|3333333334444REZKXYCHOICE1CHOICE2CHOICE3LXRXTYBYOFFSETOFFSET2ATEMPUSEKEYBDKEYKBOUTCREDLINELINSTYLE EXPLODE.LST EXPLCRD1.LST EXPLTEX1.LST EXPLWID1.LST EXPLCRED.LST EXPLCOLR.LSTL Exploded dialog box demonstration {color}: By John B. Holder 6/28/87 F xF The GFA Basic Companion Computer Generated Source Code 1987   H This source code is Copyright (c) 1987 Marathon Computer Press * && 8 Distributed by MichTron, Inc.  J Legal owners of The GFA Companion are granted a non-exclusive license H to distribute applications containing this source code without any s, additional royalties or licensing fees.  0 Provided the following conditions are met: s B The user agrees not to distribute any applications containing F this source code modified or unmodified in any manner unless the y< the program/application is in compiled or PSAVED form. n F To release this source code in any other manner is a violation of < Title 17 of the U.S. Code governing copyrighted works. o6 Violators will be prosecuted o4 All rights are reserved. d F Please Honor Our Copyright and the Conditions Outlined Above   E F Q F@()!For Med Rez Only | !!Sorry!FrqF! F!8FYF#(!!!@F%!!F!! !GF%!!FMF#YFPqF!># EXPLCOLR.LST procedure #  #+F#FoNow for your object data s o o%!!Fo$!F&Now for the Main Dialog Box Objects ! ! !`F$!F! ! !`F$!@! !PFOMain Box Label R'(!0!in the Slidepercent variable as a number between 0 and 100. .FnT# end EXPLCOLR.LSTdrawlines procedure # ># EXPLCRD1.LST procedure #  #+F#E F(Rez=0 if machine is in low resolution ,Rez=1 if machine is in medium resolution C*Rez=2 if machine is in high resolution nNYou may use the Rez variable in conditional statements concerning your box # o6* Warning Warning * 6This style of box will require considerable scaling to work in Low Resolution. i6*3 8Here are the coordinates to adjust for box movement. s@By adjusting these coordinates you can move the box anywhere n:on the screen. Don't forget the different resolutions.  nBMoving a box on screen is as easy as adjusting these 4 points: nEHHFxE Fx E Fx E==Fx E E E ESome High Rez Scaling now.. aFR E   Fc FE EF*@@ !@@ F EF EF EF EF EF  EF@ EF` EF EF EF  EF0 EF@ EF2 E( This is just another example of what isFh2 E( possible with The GFA Basic Companion.Fh E F 4 E$ Demo Prepared by John B. HolderFe2  E# 1987 Marathon Computer PressF$@ E Fm6` E' The GFA Basic Companion is soon to beF* E released by:Fs* E MichTron, Inc.F.  E Tel: (313) 334-5700F 60 E' At Marathon Computer Press, We Go TheF4@ E$ Distance For Creative Computing!FF%!!F $!F! !! F! !! F$!F" ! ! ! F2Here is where we define the text size and style ,to change the size you must change the 6 8however, other modifications may have to occur also. eFt(! !!PFf E00F fF(! !!@Ff E F FE fbFF@'\!  !$ E X P L O D E D DIALOG BOX DEMOF fF@'\! pp!$ E X P L O D E D DIALOG BOX DEMOF FfEG@F (! F('\!# H#  ! F fF(!!!@F$'6! !ContinueF$!F2/! !::! FLFESFERFEPFEQF gZFDgh/:  FD %!!F2/! !::! FF FF FF Pause 5 jF.F @# end of EXPLCRD1.LST procedure # ># EXPLTEX1.LST procedure #  #+F#E F(Rez=0 if machine is in low resolution ,Rez=1 if machine is in medium resolution C*Rez=2 if machine is in high resolution nNYou may use the Rez variable in conditional statements concerning your box # o8Here are the coordinates to adjust for box movement. s@By adjusting these coordinates you can move the box anywhere n:on the screen. Don't forget the different resolutions.  nBMoving a box on screen is as easy as adjusting these 4 points: nExxFxE Fx E``Fx E..Fx E E kFF E Fx E  F  FE:This style of box will require considerable scaling to pwork in Low Resolution.  oF %!!Fe kF(!!!PFo kF!(!!!@Fo F!$!F! !! F! !! F$!F"! !! F ldF!N' ! !))FD lFN' ! !))FD F mF!N' ! !) Want More Eh? FD mjFN' ! !) Want More Eh? FD F mF!N' ! d!) 'FD nFN' ! X!) 'FD F nF!N' ! !) As you can see, the possiblities FD nFN' ! !) As you can see, the possiblities FD F o4F!N' ! >!) are really only limited by your own FD oFN' ! 4!) are really only limited by your own FD F oF!N' ! d!) imagination. Every serious GFA Basic FD p:FN' ! X!) imagination. Every serious GFA Basic FD F pF!N' ! !) Programmer will surely want to have FD pFN' ! |!) Programmer will surely want to have FD F qPF!N' ! !) a copy of this program for his or her FD qFN' ! !) a copy of this program for his or her FD F rF!N' ! +!) software library. FD rVFN' ! "!) software library. FD F rF!N' ! >!) 'FD s FN' ! 4!) 'FD F slF!N' ! Q!) This is an example of a text only FD sFN' ! F!) This is an example of a text only FD F t F!N' ! d!) box created by the Companion's Source FD trFN' ! X!) box created by the Companion's Source FD F tF!N' ! w!) Code Generator. FD u&FN' ! j!) Code Generator. FD F uF!N' ! !) 'FD uFN' ! |!) 'FD F v<F!N' ! !) Press Any Key to Return FD vFN' ! !) Press Any Key to Return FD F vF!N' ! !))FD wBFN' ! !))FD FHNow that you box has been created for you, you have to use a routine Jto hold the screen until the user is ready to continue. Pick one from Jbelow. Also Be Sure To Include The Instructions On Line 16 Of Your Box.  e*For a wait routine with the mouse use: r n$For a keyboard wait routine use:  Ea F(!!!@F =FpjFp  Pause 5 .F:# end EXPLTEX1.LST procedure # ># EXPLWID1.LST procedure #  #+F#j ! FE F(Rez=0 if machine is in low resolution ,Rez=1 if machine is in medium resolution C*Rez=2 if machine is in high resolution nNYou may use the Rez variable in conditional statements concerning your box # o8Here are the coordinates to adjust for box movement. s@By adjusting these coordinates you can move the box anywhere n:on the screen. Don't forget the different resolutions.  nBMoving a box on screen is as easy as adjusting these 4 points: nE``FxE Fx EHHF  E>>F  E E {zFF EppFx E Fx FEBThis style of box is intended for use ONLY with Medium or High nresolution screens.  eFl!F%!!Fr$!F! !!  F ! !!  F $!F! !!  Fd6! PP !!   F(!!!FP('! `` !CONTINUEF |F!(!!!@F` |F!(!!!PF` F!8'0!   !So You Want To Hear More?F }>F! E  F  FEd'P! 88 !E Well, The GFA Basic Companion is a dedicated Dialog Box GeneratorF }F! E  F8 FEf'P!  !Ffor GFA Basic. It also comes with many examples of how to effectivelyF ~HF! E  F FEd'P! ,, !Euse the Generator and GFA Basic in general. There are two disks fullF ~F! E  F, FEX'P! TT !8of help files, and source code. Quite a deal at $49.95!FiFNow to get the user's o.k. to continue either by mouse or keyboard. FoERFESFn Fe$F(FF j! ! F  Pause 5 (!!!@F.FL# end EXPLWID1.LST procedure # C=B A^hy0Rr The GFA Companion Tutorials: Copyright (c) 1987 Marathon Computer Press All rights are reserved. This material may not be reproduced except for the personal use of registered owners of The GFA Companion. Chapter 6 - Advanced Topics and Closing Overview 6.00 Background This short chapter is to head you in the right direction for searching out and using advanced material. The first requirement is that you MUST have reference material. The Three Books listed in the REFS.TXT file are probably the most comprehensive available on the market at the time of this product's publishing. The next section will list some suggested reading. 6.01 Suggested Reading & References 1. ATARI ST GEM Programmer's Reference ABACUS SOFTWARE P.O. Box 7211, Grand Rapids, MI 49510 (616)241-5510 2. ATARI ST Internals ABACUS SOFTWARE (Same address as above) 3. Programmer's Guide To GEM SYBEX, INC. 2344 Sixth Street, Berkeley, CA 94710 4. The ATARI ST Developer's Kit (If you plan on doing commercial release of your software, the price of $300 is worth the reams of documentation and development tools. Comes with a C compiler, Assembler, Resource Construction Set, and more. Not recommended for those that only intend to use GFA Basic for enjoyment.) Contact: ATARI CUSTOMER RELATIONS P.O. Box 61657 Sunnyvale, CA 94088 6.02 The List Libraries and Basic Examples A comprehensive set of procedures is contained within The GFA Basic Companion .LST libraries for you to study and merge into your own programs. VDI, GEMDOS, XBIOS, and BIOS functions are presented varying degrees of coverage. They are by no means a Full set of instructions that are possible with GFA Basic. The bulk of the procedures are to pick up where GFA Basic is lacking in resident commands. You will note that the majority of the procedures are contained in the AES.LIB. A few of the procedures are duplicates for resident GFA Basic commands, and they are included to show you alternative methods to accomplish a task. Many of the procedures are Cross Referenced for you with some or all of the above listed references to make it easier to locate them in the documents. The first time beginner will want to first become acquainted with GFA Basic as a new language before going off to try out some of the example procedures. On the Libraries Disk there is a folder named Examples.Bas that contains some very well constructed Public Domain programs that will introduce you to a wealth of GFA Basic's capabilities. The programs were downloaded from GEnie's MichTron Product Support Round Table library. My thanks to all of the programmer's that contributed to Public Domain Software on the MichTron RT. Special Thanks to: Mr. Jim Luczak Author of: Picclip.Bas GFA_FX.Bas Vdisamp.Bas 6.03 Disclaimer While every attempt has been made to thoroughly test and implement any and all of the procedures contained in the .LST libraries, there is no guarantee as to the quality and performance of the programs and the fitness for a particular purpose. You assume the ENTIRE risk as to the quality and performance of any and all of the programs contained therein. They are provided here as a part of the Tutorials and are meant to be used as learning tools. If you include them in your own programs for Public Domain Distribution, please place a notice stating where you got the procedure from, IE.. Rem "This procedure extracted from The GFA Basic Companion .LST Libraries." *?  WARNING: The source code generated by Compan.Prg {The Source Code Generator}, may not be distributed in .LST or .BAS format. You must abide by the Licensing Agreement that states you must first Compile or PSAVE the source code. This includes any of the programs that are contained in the Programs Folder on the Program Disk. Any source code produced by the Generator comes under the restriction. No exceptions to this limitation are allowed! Most every development tool on the market utilizes this type of limitation. It would be no different than giving away the Binary Libraries contained within a C compiler package. The Generated Source Code carries full Copyright protection. If you have any questions about giving away any portion of the source code contained on Disks provided with The GFA Basic Companion, please contact MichTron, Inc. *>  *9/ZZZ   The GFA Companion Tutorials: Copyright (c) 1987 Marathon Computer Press All rights are reserved.  This material may not be reproduced except for the personal use of registered owners of The GFA Companion.   Chapter 5 - Sequential File Handling This chapter will briefly discuss how you write to and read from Sequential Files. So without further ado, let's get started.  5.00 Background  A sequential file is one that is read from disk or written to disk one record or line at a time in sequential order. This is different from Random Access file operations as Random Access methods can selectively read records stored in a file, {no particular order}. The most common and easy to use is the Sequential method, so that is the one covered in this tutorial.  5.01 Creating and Writing A File  To design a file you must have some sort of data that you wish to store to disk. That data can be a series of strings, numbers, characters, etc.. For our demonstration we will use a small array of text strings.  Dim Tex_lines$(5) Tex_lines$(1)="Line 1" Tex_lines$(2)="Line 2" Tex_lines$(3)="Line 3" Tex_lines$(4)="Line 4" Tex_lines$(5)="Line 5" ' Now let's open a file to write to 'Open "O", #1,"Sample.Dat" ' Now for the loop to write the data to disk For Loop=1 to 5 Print #1,Tex_lines$(Loop) Next Loop ' Next we close the file Close #1 End 5.02 Reading From a Sequential File  Provided the Tex_lines$ array is still dimensioned, we would read the data back into the array like this.  Open "I", #1,"Sample.Dat" For Loop=1 to 5 Line Input #1,Tex_lines$(Loop) Next Loop Close #1  Line Input allows the full range of characters available on the ST to be read into memory without exclusion.]  True, this is a 'down and dirty' example of File Handling, but perhaps when coupled with the GFA Basic Manual it will further your understanding of reading and writing to sequential files. *9/ZZZ   The GFA Companion Tutorials: Copyright (c) 1987 Marathon Computer Press All rights are reserved.  This material may not be reproduced except for the personal use of registered owners of The GFA Companion.  Chapter 4 - Using The GFA Basic Companion Clipboards 4.00 Background  What is a Clipboard? Well, a Clipboard is a glorified scratch pad really. The benefits to be derived from it's usage is the quicker loading of data, graphic images, & etc. The two versions included with this release of The GFA Basic Companion are in two versions; 32K and 64K in size. You say, why only 2 sizes and why not bigger? Well, the Clipboard is not supposed to serve as a full scale Ram Disk, remember that it is there to service the passing of data between programs and to aid in shortening graphic images loading times. If you want a variable size Ram Disk, you should look into MichTron's M-Disk Plus. Although the Clipboard is in essence a small Ram Drive, it is furnished for a different purpose.  4.01 Applications  An example application would be that you have 2 D.E.G.A.S. screens that you are using with one of your programs and you don't want to have to keep both of the screens resident in Ram throughout the program. Enter the Clipboard! Just have your application move the two screens up into the clipboard to be called upon later when needed. Since the largest of the 2 Clipboards will comfortably hold 2 D.E.G.A.S. screens, there will be no need to access the disk in Drive A later to load them. The access time on the Graphic images and data files stored in one of the Clipboards is phenomenally fast compared to either Floppy or Hard Disk storage.  Perhaps you have a series of programs that will need data interchanged between them. For example you may have just written an accounting program that needs to post the ledger entries to several files, however the various modules are contained in different separately compiled GFA Basic programs. Once again, enter the Clipboard to the rescue! All you would need to do in this case is just write the data to the Clipboard once and Chain between the various modules accessing the data as needed. For an application such as this you'll probably want to use the 32K version of the Clipboard.  These concepts are approaching the Medium Skill to Advanced Level of programming in GFA Basic, but the power afforded by these simple utilities will save you from devising many very complicated solutions worked out in desperation to substitute for a System Clipboard.  4.02 Technical Facts About the Clipboards  1. The Clipboards are installed as Mini-Ram Disks in the Drive M slot.  2. You may install the Drive M Icon from the Desktop for either variety. The data can also be accessed from the Desktop once an Icon has been installed for the Clipboard.  3. To Auto-Boot the Clipboard, just place it in an AUTO folder. To then display the Icon on a permanent basis, install the Clipboard as Drive M and save the Desktop.  4. To access the Clipboard {either variety} from a running GFA Basic Program just use a Chdrive 13 {Drive M} command. Sub-directories may be established within the Clipboard as on any other logical drive. 5. To see if the Clipboard is currently installed, use the Drive Map techniques covered in the .LST libraries and GFATIP files that cover the subject.  6. Remember that you are responsible for the maintenance of the files that are contained on the Clipboard, and if you try to load too many you will get a drive full err!or. The Dfree(0) and Files command can be used within a running program to help you keep track of how much room remains on the Clipboard. You may also use the Kill command to delete files stored on the Clipboard.  4.03 License Information  As a registered owner of The GFA Basic Companion, you may use the Clipboards in any application that you develop for Commercial Release provided:  The programs are not to be altered in any fashion. Mention the following in Documentation:  This program contains a compiled version of The GFA Basic Companion Clipboard developed by Marathon Computer Press. The Clipboard is (c)1987 Marathon Computer Press  You may not: Upload the Clipboards to any BBS. That includes with any program that needs the Clipboard. Sorry, but that's the deal. If this policy is updated, you will be notified. You may also give away applications using the Clipboard to your friends as long as they understand and accept this conditional license. *9/ZZZ i  The GFA Companion Tutorials: Copyright (c) 1987 Marathon Computer Press All rights are reserved.  This material may not be reproduced except for the personal use of registered owners of The GFA Companion.  Chapter 3 - Passing Parameters  3.00 Background  One of the strongest points to GFA Basic is it's ability to pass parameters into a procedure from a calling routine. This short file will attempt to demonstrate just how this feat is accomplished. The feature will aid you in cutting down repetitive sections of code, thereby making your finished programs smaller and faster. 3.01 Making it happen  First things first. You must have the need to call a subroutine, and then you have to define the parametric data to be passed to the routine. The following example is a bit simplistic, but it will be easy to understand and implement. Problem: The desire is to draw a filled box with a set of pre- defined size coordinates. You could easily do this with Pbox, but it is used here for clarifying the parameter passing features of GFA Basic. 1. We want a filled box with the XY coordinates of: 100,100,150,150 2. Next we set up the parameters.  Deffill 1,2,8 {Fill pattern} X1=100 Y1=100 X2=150 Y2=150  3. Now to set up the procedure call.  @Draw_filled_box(X1,Y1,X2,Y2) {The Gosub to the Routine}  4. Here's the procedure call.  Procedure Draw_filled_box(X1,Y1,X2,Y2) Pbox X1,Y1,X2,Y2 Return  That's all there is to passing parameters! You will note that the parameters are checked by the procedure before passing into the main body of the routine. If something is wrong you will get a parameter error. This makes for very strong checking and aids in developing Bug Free programs. If your parameter list is very long, you may opt to drop the listing following the procedure definition. Like this:  Procedure Draw_filled_box Pbox X1,Y1,X2,Y2 Return  Either way is correct. The only stipulation is that whatever parameters are passed into the called procedure must appear in that procedure.  There are examples of procedures that work well with parameter passing in the .LST Libraries. *9/ZZZ   The GFA Companion Tutorials: Copyright (c) 1987 Marathon Computer Press All rights are reserved.  This material may not be reproduced except for the personal use of registered owners of The GFA Companion.   Chapter 2 Using Graphics In this chapter we will discover how to use some of GFA Basic's built in Graphics Commands. This short tutorial is not intended to replace the manual, it merely offers some additional examples of using Graphics on your computer with GFA Basic. With that out of the way, let's get started!  2.00 Graphic Boxes  The commands dealing with Boxes are among the strongest and most versatile in the GFA Basic Language when dealing with Graphics. To fully utilize these commands you will need to be familiar with the Pixel Limitations of each Resolution as outlined in Chapter 1 of this tutorial. As with all Graphics commands, the screen size dictates just how much room you will have to present your Graphic Objects. Before getting started with Boxes it would be a good idea to briefly read your GFA Basic Manual to get a grasp of the Defline and Deffill commands as they are not discussed in this chapter. You will find out that they are integral in defining your box outlines and fill patterns.  Box: The box command very quickly and accurately displays just what it's name suggests (a Box). This option can be used in conjunction with Defline to vary the color and width of the outline for the box. Below the example will draw a box on any Resolution Screen that is 1 pixel in width, and is 50 pixels wide and 50 pixels high.  Defline 1,1 Box 10,10,60,60  Above the command is entered with the data in the following format:  Box (Top Left Corner Across,Top Left Corner Down From the Top,Bottom Right Corner Across,Bottom Right Corner Down From the Top) If you were presented the formula Box X1,Y1,X2,Y2 the graphic layout would appear something like this:  X1,Y1_ | | | | Remember that your coordinates must not | | exceed the maximums for the Resolution | | that you are currently working with. | | -X2,Y2    Pbox: The Pbox command very quickly draws a filled box on your screen. The parameters are the same as Box, except you must pre-define the Fill Pattern to be used with the Deffill command. Try the following example to draw a black box on your screen.  Deffill 1,2,8 Pbox 10,10,60,60  This command can be used to create backdrops for your customized screens, and if used to the maximum size allowed for a given resolution it will completely replace the screen with a box much in the way the Cls command erases the screen with a white background. For example on a medium resolution screen try this:  Deffill 1,2,8 Pbox 0,0,639,199  The result is that you now have a black background vice the normal white screen. Try experimenting with other colors & Fill Patterns now that you are armed and dangerous with this most powerful Graphics command.  Prbox:  Since Prbox is very much like the Pbox command, only a brief description will follow. The Prbox will draw a filled box on the screen with Rounded Corners. Use one of the above commands for Pbox to see the differences. One thing that will become apparent is that this box drawing routine is not as fast as either of it's predecessors. However, a rounded box can be an attractive addition to a Graphics screen if properly presented. If you need speed over fancy corners, go with Pbox instead of Prbox.  2.01 Graphic Circles and Ellipses  Two very useful functions are included in the GFA Basic Language to quickly draw circles and ellipses to a graphics screen. Filled circles and ellipses may be drawn using the Pcircle and Pellipse commands also. The functions rely on your knowledge of X & Y coordinates just as the box drawings have. There are a few differences as you will soon see.  Circle & Pcircle: To use the Circle commands you must first define the center point of the proposed circle, and then a radius in pixels. The format to be used is:  Circle X,Y,R What this means in plain english is:  Draw a circle with a center at (X,Y), and a Radius of R pixels wide. Sort of like this:   * * * * *  * X,Y _ * &\ '\R (radius)   The above half of a circle is a rough example of how a circle is constructed. You will understand the function if you enter and run the following code with your GFA Basic Interpreter:  Circle 100,100,50 Or Perhaps the Filled Version:  Deffill 1,2,8 Pcircle 100,100,50   Ellipse: The Ellipse command is very similar to the Circle command with the exception of the definition of two axis measurements entered vice the one radius measurement for Circle. The format is like this: Ellipse X,Y,Rx,Ry  Again, the translation is:  Draw an ellipse with the center at X,Y and a horizontal axis length of Rx, with the vertical axis length represented by Ry.  You might visualize it in this manner:  * | Rx * | * / | / *_|_/__* X,Y | * | * |<- - - - Ry *  To see the Ellipse command in action try:  Ellipse 100,100,50,75  Or  Deffill 1,2,8 Pellipse 100,100,50,75  2.02 Lines  The simplest of all Graphics commands to use, Lines are nonetheless very powerful tools to apply to your GFA Basic programs. When coupled with the Defline command, many variations of lines can be explored. Lets assume that we just want to work with a standard 1 pixel wide line on a Medium Resolution Screen. Now we have the task to draw 2 lines, 1 from the top left hand corner of the screen to the top right hand corner of the screen, and one from the top left hand corner of the screen to the lower left hand corner. The code would look something like this  Line Top Left X, Top Left Y, Top Right X, Top Right Y Line Top Left X, Top Left Y, Bottom Right X, Bottom Right Y  or in GFA Basic:  Defline 1,1 Line 0,0,639,0 Line 0,0,639,199   Although more Graphics commands are available with the Language, these will be the most frequently used commands by most users. The examples are here just to get you up and running with your own experiments. Have fun with GFA Basic Graphics. *9/ZZZ   The GFA Companion Tutorials: Copyright (c) 1987 Marathon Computer Press All rights are reserved.  This material may not be reproduced except for the personal use of registered owners of The GFA Companion.   About the Tutorials These tutorials were designed to present the the GFA Basic language in a series of chapters that you may read at your own pace. They are intended to be a supplement to the owner's manual and not a replacement.  A number of topics will be discussed with varying degrees of difficulty and detail. You are encouraged to try out the examples presented within the tutorials with your own GFA Basic interpreter. Many of the samples will appear in the library folder on the distribution diskette.  This material is copyrighted and carries the full protection of federal law, so please don't give away printouts of these tutorials. This copy is yours for your own personal use. Please support copyright laws and protect your future with ensuring that new and innovative software won't be pirated.  Chapter 1 Getting Down to Basics 1.00 Printing With GFA Basic  If you have just purchased your ST, you will need to spend a bit of time with your computer set up manuals becoming acquainted with the operation of your machine. If you are a first time user of GFA Basic, it would be to your advantage to read about the GFA Basic interpreter's built in editor. This tutorial assumes that you know how to operate your ST and how to enter and edit programs on your interpreter.  To start off we will discover how GFA Basic places text output on the screen with the Print, Print At(col,line), and Text commands. The descriptions and example source code follows:  !Print The print command has several flavors with GFA Basic. It can be used to print Strings (Text lines), or perhaps numeric variables (Numbers) to the standard output of the screen, or in the case of files; to disk.  If you enter the following and then run it:  Print "Have a nice day with GFA!" Key=Inp(2)  Your screen will show this:  Have a nice day with GFA! If you are wondering what the Key=Inp(2) is for; it will hold the screen until you press a key. That way you can see the output of what you have created before the alert box tells you your program has ended. This ' wait for keypress ' routine will appear frequently throughout this set of tutorials. You may assign text to variables with the Print command also. All of the support suffixes (following identifiers) are supported. Please refer to Appendix D of your manual for a description of the variable identifiers  A$="This is a string variable." A%=999 (An integer) A=456.789 (Floating point Real Number) Now some example of output:  A$="This is a string variable.) Print A$ Key=Inp(2)  Will output the following:  This is a string variable.  Example 2 A%=999 Print A% Key=Inp(2)  Will output the following:  999  Example 3  A=456.789 Print A Key=Inp(2)  Will output the following:  456.789   1.01 Text Placement with Print At(col,line)  One of the more useful and easy to use commands inherent to GFA Basic is the Print At(xx,xx) command. This section will discuss it usage and some possible applications.  First you must visualize the first xx as the column across the top of the page and the second xx as the line position on the screen. Since the Medium Resolution and High Resolution screens output the same number of characters & the same number of lines in the text mode; the following examples are for those Resolutions.  Example 1  To print an asterisk "*" in the upper left hand corner of the screen try this: Cls {to clear the screen on output} Print At(1,1);"*"  Example 2  To print an asterisk "*" in the lower right hand corner of the screen try this:  Cls Print At(79,25);"*"; {The last semi colon is to %Prevent the screen from %Scrolling to a new line.}    Some of the possible applications of this command are exact placement within a screen for input/output, or placing a comment in the unused portion of the menu bar for a GEM program that uses pull down menus. Try this trick the next time you test out a program with a GEM menu bar.  Print At(70,1);"Wow!"  You will see that the above command will place text in the upper right hand corner of the menu bar.  1.02 Using the Text Command  The text command is another tool for the placement of text on a GFA Basic screen. The first thing that you must become aware of prior to using this command is the screen coordinate system used by your computer. Below is the listing of parameters that you will have to deal with.  Low Resolution 320 x 200 Pixels Available 16 Colors  Medium Resolution 640 x 200 Pixels Available 4 Colors High Resolution 640 x 400 Pixels Available 2 Colors {Black & White} So now you ask; "Why do I need to know that?". Well, the answer is that the Text command uses these coordinates {you supply them} to find a starting place for the string of text that you are attempting to place on the screen. In a moment we'll see just how to use the command but first a quick discussion of the differences between Print and Text commands is in store.  While both Print and Text have their strengths and weaknesses, a good rule to follow when selecting one of the two to work with would be:  Use Print for Large Amounts of text that require Only the standard printable characters of the ASCII set, and use Text for placement of pre-defined strings of text that can be any of the screen printable characters available on the ST. Refer to the back of the GFA Basic Manual {Appendix C} for a complete listing of the ASCII Table. The Extra set of characters are entered at the keyboard by pressing either the control or alternate keys plus an additional key on the keyboard at the same time. If defining a string with Astring$="x", just substitue the different combinations of keypresses to take the place of the x's above. Enter the GFA Basic Editor and try entering the above code except in place of the x's press the Control+C keys instead of the X key. You will see a series of Arrows appear on your screen.  Now that we know how to enter text into a string, let's place it on the screen. Try this:  Deftext 1,0,0,6 {Sets us up with Black 8x8 Text} Astring$="x" {Whatever you want to appear} Text 100,100,Astring Your output will appear 100 Pixels across the screen from the left and 100 Pixels down from the top of the screen. To see the effect of this, it is best left to you and the interpreter to experiment. In no time at all you should be placing text on the screen like a pro no matter which screen text placement command you use. {Print, Print At(xx,xx),Text}  One last printing command will be covered in this chapter and it is how to output text to the printer attached to your system.  1.03 Using Lprint The Lprint command serves a useful function as you will soon see. It will output text and control codes to your printer with relative ease. Let's see how it's done!  Printing Text to the Printer:  Test$="This is a test of Lprint" Lprint A$  Providing you have your printer online, this will cause the above string to be printed to your printer. It is used in much the same way as the Print command, except that the Print At(xx,xx) option is not available. To place text at pre-determined positions on a sheet of paper, you will have to experiment a bit to get the placement down. By using Lprint on a single line by itself will advance the printer head to the next line without printing any text. This will prove helpful in positioning your text. The following code will show you how to place a line of text in the approximate middle of a sheet of paper.  Test$="This is just a test..." For X=1 to 35 Lprint Next X Lprint Test$  The For..Next Loop just advances the print head down the page 35 lines. Not too hard, is it?  This chapter has attempted to briefly discuss the possibilities with text placement on the screen, and the printer. It is not intended to replace the GFA Basic Manual here, or in any other instance. Look upon the tutorials as added instruction for helping you to grasp the principles and functionality of the language. By using these tutorials and the GFATIP files contained in another directory on one of your distribution diskettes, you should be well on your way to a working knowledge of GFA Basic.  *9/ZZZ GfABASICf(Z6 ((((..2bbbjYEARFLAGYEARYRIS_IT_OKMONTHMNTHMBMCYCW1WEEKDAYD1DMIJXXXE1PRLPTYKXATREZPADDINGM1MONTHDAYNAMESDAYDAITWIDEONWIDEOFF MONTHDAYS MONTHNAMEYRMNTHTEMPCURMONTH CURRMONTHOUTPADDINGSAV TOP_CALENDAR DO_CALENDARDISPLAY_CALENDARCALENDAR_SETUP PRINT_CALCALENDAR_DAY_OF_WEEKCALENDAR_MONTH_OF_YEAR DAYS_IN_MONTHWEEKSGET_DATA WHAT_MONTH GET_COLORSRESTORE_COLORSLThis is a demonstration file of how to use your own style of Dialog boxes using the VDI and Pbox. RThe demo is a heavily modified Public Domain program. For that reason, please aNdo not Upload this demo in the form of source code to any BBS. Thank you. a o*pp@ FM F  6!!!`F%!!FE F x F >)!'Currently runs in | Medium Rez only! | !! Sorry !FrqF! F!!! !GF$!F%!!F$H!! !GFe$H!! !GFU$M! ! !DFeFYp! "/Planning Calendar 1987 Marathon Computer PressF(Y<!  "by John B. HolderF(Y<!0 "Demonstration ForF0Y,!8 "The GFA Basic CompanionF ,Y0!@ "Source Code LibrariesFMFDYFM FqFN# do_calendar procedure # +F#^!H!F#ZF\! Planning Calendar F#MF .FN# display_calendar procedure # +F#EF,F#EF#EFEF#,FF.F* PRINT CALENDAR +F*EGFEFEF,FF E FEF,FFEF  FEYFFp "" "FFFF FEF,FF E F EG@FFEF, L ##  `   FdDEGF :FG F h F ,F F  F FF F F  F  F  F ZF.F*print week +F* EG`F*E##  `@@ Fd$  F##  `` #  F E F  XF E?@@ F FE  F EGF  xFG  F "" "F  F"; """"l"F F F F.F* DAY OF THE WEEK #+F* !(FAE@F EF !,F FL E%# % %HH %HH F E % ` `F E @F E % ` `F.FE(* NUMBER OF DAYS IN THE MONTH +F* "FUEFEF$ "#%  F< "~##%H H  ##%H FEF "F#EF FE FE FE E5?@@ F E F.FE* MONTH OF THE YEAR +F*"E?@# @ F.FE* SET UP CALENDAR +F*:E2 1 2 3 4 5 6 7 8 910111213141516171819F 6E,202122232425262728293031 F:E3 SUN MON TUES WED THUR FE FRI SAT FDE=JANUARY FEBRUARY MARCH APRIL MAY JUNE JULY F:E/ AUGUST SEPTEMBEROCTOBER NOVEMBER DECEMBER F E312831303130313130313031FO.FEL# get_data procedure # +F# o.Here is the start of the custom Dialog Box c e%!!F#$ ! !!*Fp$!!!F$ ! !!*Fp(!!!F&' !p!CLICK ON CHOICESF E=~@ F E5 F E;~@ F E;~@ FM F@ E5 F|F *THIS IS WHERE TO GO BACK TO ON DISPLAY u H H'p! ! MONTHFTE#6 F E#%  F'p!H! F&' !p!NEXT PREVIOUSF $!!!F$ !!p!FU$H!!p!FU' !4!YEARF ' !H!=~@ F&' !\!NEXT PREVIOUSF$ !f!p!zFU$H!f!p!zFU$' ! !UPDATE QUITF$ !!p!FF$H!!p!FFFMF F[F Fj FF F jF { FEPFEQFERF: )HppF%F$H!!p!F { F (FE@@F (F EF FE EA F )"6 F E0 F FEM F0%F$H!!p!F$H!!p!F'p!H!@ FE#6 F E#%  F'p!H! F F: +F ppF%F$ !!p!F { F *`@FEF *nF EF FE EA F *6 F E0 F FEM F0%F$ !!p!F$ !!p!F'p!H!@ FE#6 F E#%  F'p!H! F F: ,( ppF%F$ !!p!F { FF%F$ !!p!&F$ !!p!FMF F[F Fj FF  F : -HppffzzF%F$H!f!p!zF { F EF EA F' !H! F%F$H!f!p!zF$H!f!p!zF F: - ppffzzF%F$ !f!p!zF { F EF EA F' !H! F%F$ !f!p!zF$ !f!p!zF F< .,VNhYN`NsN^NuNVBn:.EIBtPRn nfI* -EI* -EI* -EI* -EI* -Ez-E=| Bn=|BnBn <I* "NB=|N=|=|=|Bn=|z-E <I* "NB=|4=|=|=|Bn=|(mI* -E <I* "NB=|Bn=|BnBn <I* "NBN hpL?09NAN^NuNV/-+NI Gz+WBn:.IJ4PgRn`=y n d:.I0PN(z:. HEBEHE HEx0D8.I@Rnz:. HEx0D8.I@RnI GzWBn:.I8.nGP@Rn:.IJ4Pg`N+_N^NuF'/NNn-/=-/H"Q ,IL?/^>/^Nf,oNsF'/NNn-/=-/H"Q G*- =/^Nf,oNs/NNn-/=/-/H _"h$",HL?/^>/^Nf,oNsF'SSfWWNsSf>NsSfF NsSfNqNsSf NNsNhBBB 9T!B*H$C! `N h <L? <NAN`WNsNVH|".$. &(*HDHEHABBمCمHABBBCHBHCԃԄ-A -BL>N^NuNVHx". $.bBCh8BAHA62HC6BAHA`B6HCBAHA8<㑲eRCQ-C -ALN^NuNVH(. ,..BGg^<BEgV<✚G|HF⌈0BDHD8 H@∀HDkSEؼdREJEk|m pN B` -D LN^NuNVH .g*2<bH@|bQAU-@LN^NuNVHLHD6HFC[40<@g6@gBC?ckp@@t?0H@26HFЃ6HGHACBCHCуHD6CHABCHCу6HFЃ6҃т6HGBDHD҄т6҃т6HFBCHCCтHE6҃тHFHAFHABFHFцHGBEHE҅тPт6xz gRDCB詂[ f ԂӁрC c&JCk*H@@CH@Jgv-@-ALN^NuTOpr`pN NVHLHD2AgHF0@grA@?kz2A[FDHFHDrva$$rvar փՂkN@k,փՂ`@އ݆\Þ[j ޅ݄JA]NuTtvH LN^NupN |Նd @kr2~ BHBB@HBJgp``NVHp".gH4/9:/9>/9:NPIB((/9F/9B/9F/9BNPIJ((#A #; #B#:o#F@#8Q#L #6Ŭ#Z#57#tŮ#3VBN^NNV n"n *.Jf *. JgJgS`N zd"Y`JgS`N^NuNVH n f`Nz:.p -EJng nf(z:.p ڹ//. /.aZO pN< ng nf(/. z:.p ڹ//.a"O pNpN"?.?.?./. ?.(yNO L?N^NuNVH n fpN?.(yNTL?N^NuNVH n fI* N?.(yNTL?N^NuNV:. ?(nHTa\N^NuNV< aRT< aHTN^NuNV:. ?(nHTa\aN^NuNV?<#Hy:a\z/HnadP*.p -E d ?<,Hy`a\?<$Hya\?<Hy?< B'*./HyHnaO*93z ڹp #/9HyaPJf?<Hya\-y-y(nBXYJg`I89|9|9|9|9| 9| 9||N^Nu#r#v#~*<!r*<!v*<!~NuNxNVUaJgV*</a4X?< HyaB\?<Hya2\(y/ *, ڬ(,ڄ/Bga\(_N^NuGFA Basic Companion Custom ClipboardThere is not enough RAM to build a Clipboard. Clipboard Installation has Failed!!66 Can't Build Clipboard! GFA Basic Companion 64K Clipboard(c)1987 Marathon Computer Press<@ *lDP2         (          p>        <4."n8  @  `N "pNGNuNV*x ڄ=E*P-E@-M-VNh-H ng nf-n*.P-ENB nf Nh-hN. nf BBN n e Nh-PN-n I"8B,)n9n)n )n)n)n|.n 9/@>,VNhYN`NsN^NuNVBn:.EIBtPRn nfI* -EI* -EI* -EI* -EI* -Ez-E=| Bn=|BnBn <I* "NB=|N=|=|=|Bn=|z-E <I* "NB=|4=|=|=|Bn=|(mI* -E <I* "NB=|Bn=|BnBn <I* "NBN hpL?09"NAN^NuNV/-+NI Gz+WBn:.IJ4PgRn`=y" n d:.I0PN(z:. HEBEHE HEx0D8.I@Rnz:. HEx0D8.I@RnI GzWBn:.I8.nGP@Rn:.IJ4Pg`N+_N^NuF'/NNn-/=-/H"Q ,IL?/^>/^Nf,oNsF'/NNn-/=-/H"Q G*- =/^Nf,oNs/NNn-/=/-/H _"h$",HL?/^>/^Nf,oNsF'SSfWWNsSf>NsSfF NsSfNqNsSf NNsNhBBB 9Z!B*H$C! `N h <L? <NAN`WNsNVH|".$. &(*HDHEHABBمCمHABBBCHBHCԃԄ-A -BL>N^NuNVHx". $.bBCh8BAHA62HC6BAHA`B6HCBAHA8<㑲eRCQ-C -ALN^NuNVH(. ,..BGg^<BEgV<✚G|HF⌈0BDHD8 H@∀HDkSEؼdREJEk|m pN B` -D LN^NuNVH .g*2<bH@|bQAU-@LN^NuNVHLHD6HFC[40<@g6@gBC?ckp@@t?0H@26HFЃ6HGHACBCHCуHD6CHABCHCу6HFЃ6҃т6HGBDHD҄т6҃т6HFBCHCCтHE6҃тHFHAFHABFHFцHGBEHE҅тPт6xz gRDCB詂[ f ԂӁрC c&JCk*H@@CH@Jgv-@-ALN^NuTOpr`pN NVHLHD2AgHF0@grA@?kz2A[FDHFHDrva$$rvar փՂkN@k,փՂ`@އ݆\Þ[j ޅ݄JA]NuTtvH LN^NupN |Նd @kr2~ BHBB@HBJgp``NVHp".gH4        <4."n8  @  @Widebox.lst Rem # WIDEBOX.LST procedure # ' Procedure Widebox.lst Clr Offset,Offset2 ' The GFA Basic Companion Computer Generated Source Code 1987 ' ' ' This source code is Copyright (c) 1987 Marathon Computer Press ' '& ' Distributed by MichTron, Inc. ' ' Legal owners of The GFA Companion are granted a non-exclusive license ' to distribute applications containing this source code without any ' additional royalties or licensing fees. ' ' Provided the following conditions are met: ' ' The user agrees not to distribute any applications containing ' this source code modified or unmodified in any manner unless the ' the program/application is in compiled or PSAVED form. ' ' To release this source code in any other manner is a violation of ' Title 17 of the U.S. Code governing copyrighted works. ' Violators will be prosecuted ' All rights are reserved. ' ' Please Honor Our Copyright and the Conditions Outlined Above ' ' Rez=Xbios(4) ' Rez=0 if machine is in low resolution ' Rez=1 if machine is in medium resolution ' Rez=2 if machine is in high resolution ' You may use the Rez variable in conditional statements concerning your box ' ' Here are the coordinates to adjust for box movement. ' By adjusting these coordinates you can move the box anywhere ' on the screen. Don't forget the different resolutions. ' ' Moving a box on screen is as easy as adjusting these 4 points: Lx=14 Rx=624 Ty=15 By=85 ' ' If Rez=2 ' By inserting the next two lines we effectively move the entire box to the ' bottom of a High Resolution Screen. Ty=Ty+300 By=By+300 ' ' ' That's all there is to it! Simple Huh? ' Offset=60 Offset2=10 Endif ' This style of box is intended for use ONLY with Medium or High ' resolution screens. ' Sget Tempuse$ Graphmode 1 Deffill 0,2,8 Defline 1,3 Pbox Lx,Ty,Rx,By+Offset Box Lx,Ty,Rx,By+Offset Defline 1,1 Box Lx+2,Ty+2,Rx-2,By-2+Offset Box Rx-74,By-13+Offset,Rx-9,By-5+Offset Deftext 1,0,0,4 Text Rx-64,By-7+Offset,"CONTINUE" If Rez=1 Deftext 1,0,0,6 Else Deftext 1,0,0,13 Endif Text Lx+11,Ty+10+Offset2,"Sample Wide Style Box:" If Rez=2 Offset2=Offset2+10 Endif Text Lx+26,Ty+23+Offset2," This example will show the movement of a box on a high resolution" If Rez=2 Offset2=Offset2+10 Endif Text Lx+26,Ty+33+Offset2,"screen while remaining at the top of the screen on a medium resolution" If Rez=2 Offset2=Offset2+10 Endif Text Lx+26,Ty+43+Offset2,"screen." If Rez=2 Offset2=Offset2+10 Endif Text Lx+26,Ty+53+Offset2," " ' Now to get the user's o.k. to continue either by mouse or keyboard. Repeat K=Mousek Keybd$=Inkey$ Until K<>0 Or Keybd$<>"" Defline 1 Deftext 1 Sput Tempuse$ Clr Tempuse$,Offset,Offset2 Pause 5 Return Rem # end WIDEBOX.LST procedure # H`E T` Efv*oM m HPHUBg?<JNA(m)m -:gS)@ -OK1PC#HNHx?<HNA@)@l/?<HNA)@h&@)@XЬl)@d)@`ARCpr Ѝ"QHNFALNHz2?< NA\pdAxr0XQ)K\NN jJbbJrBjNuHz?<&NN\CAp$L Qp NBlJpNNpMN9@pdAr 0Q0tr N^9lNNupealp`NuaNJHz?<&NNBWNANC2A@p222NrҌ0<NB0,rNurA9Ar`v C9Cr`rt9@9A9BNrrҌpsNB0,Nu9@N`rDҌpsNBNuC2 @ e @}bA@p222Nr,Ҍ0<NBNu    -&8*:EENuHn< 2$4BBNuAd RdQRB BbABJk 0NuJBjBBXNu 0Nu 2$NuE`B<gJEgEjCDEDF Fe( F dF8BCHC` F0bFHC8v` HD8HDkDуdQRBNuDdBDA@kgAр[SBk0NuJlJBk&Nu0g H@rB JkЀ[` BbNuJBj prtNuHPAJgPpr$< _Nup _NtNu&8*JEgJBgJjBEB:HC҅H@:|ۆ҄ۆ<HC>H@ЃdHA@B@H@хk HAҁHAрSB BbNuNBpNNuCDEJEgJBgJjBEBQ*HE?<>0rHGGdHGGdSWDуdi\?<>0rHGGdHGGdSWDуdiN?<>0rHGGdHGGdSW2 H@N?<,>CEdGH@0r`?<`JBgVB&8TTDуdQRBNuDAр&AdRAрAрDуNuprt|=|V  g +g -f .g20  b 0e 9b da`RF` .f 0e 9b dajSF` Eg efX +g -f 0e 9oSH`00  b&Hz0  b E Do`HJjDDDS4</N JFkSFk&aQN `Ha"FFaQL8N6.VJgtBnVNupr$<NuJBk4<rpAC v JBgJjv-| Bb BkH>aaNRFBdL8?N<JBga2SF Be BgQRB`ApdR e <rRF&0xafEv+0JFjDFv-Hƌd0BFHF 0HF0ANuprt|`2:HQ A dNAXJ@jNNu~c0NQNuvNP)@p `H@)@prtN^AHplrtN^B 2pNNpNBpapaprapalpalpalpaTpaTpaTBp'a?<NNT@B){L9|0<rtN^papap9@p`pvNPv`v`vj`v `v`v`v`?Aa*` Al 2l 4)lVH)lRprtN^Al 2l 4HVNu9Cp rtN^Av` Av `Avl 2l 4)lVHNf0<}N& ?<NNC`&?<NNT"@ C <}N`N@((?<NN.?<NNX@LvA HA HNupmrtA)HA)HN^(* 9AJA)H@@[000][ˈN Evz`* [g" ]g |g QSz` zQSpQ][ɈN Dvx`* [g" ]g |g QSx` xQSpQ]Bp4NHNu*( INA)H @depd ae zb QB DNA\)H @ e` ae zb \gQBA BhNpZNA BP"`#|}NA"H0,tg"Hg \f`A\fS A ENAR@H`2QNur|<N @xepw2A$JBjDFHB t`0QBl9F)lVTAtp 9| N^2(g"P@g2RADAH""l`r2oZAe 1@#)I`Nuk1@Nup NNx"l`dpNAtrdJhk\QpaNH ld$l`"Hg: k&@0+R`g k#&@0+S@H3 Q&f)I`LNuApNN|$N`$BS@kH2QNupC ұd"X0Pg"RA$D#Nu"X0Nu _0HpN _0HpNp"_0HqN,p"_0HqN,E ұeHHQ0)N$_$ZR@H`2QNu$Y0gHR@@"D%$X0P2g# R@%NupE $ $X0dP.gRG,D%pr Y2dP.gRG,D!p4Ae4v`VfANuNWHNuNVHNu Ihd"*N`$E8*$R`"QˈN ENu2)A IJAfr4(Ae*RBBc0*SA?N`$E$R`QˈN ENup`(* 0(iN`$E 4R`Q$D 4R`QˈN DN ENu2p <0N``QNu?Hl?<GNAPA"HJf SNr ,* N& ( EN C"Sj|Ac9@^9A`9Ab~`$aJf,H@ Kg Mg Pg Hf~`BSGj>RGFc8>`4A g6 g0 g` gTlfelhgFf2pRGRFa`a,` `?~ap ap a 0NuCpE`bf`FgRGJGgRSGSFFgCpE`Yf`Nua@Jf gH@ fa(@ fza0 b @ Ee0Nu?<?<NMXNur9A(HN$LNu0,^2,`NXzEfpaRppaNAEg0PaľEfa4RE`p a2a*Efp a(N>ldeS@f lbfSl`9Ab9FdNupapqr`p`p`pNu)H9@Jp4NP'J&f H LNu P&NuQ'` J,'fJ,&gHA#ȇeC! B,&LNu-W)K20, 8k8@ gJl&f"Nu , 8g"P 8 @/, 8N  8fQ 8J,'gNupB <``L@ H)l26)z @W , Jf`CfSHj-D@Hd0H@H 0H@0`fSC\fS , @a"C\fApNNNHP?< NA\NuH@aa/a a Nu@0 9c^Nu| PC>$Error # ][Abort]\f.B &lX)K\)ld` lp ,BQjNup(NVA JpBQA/)H )l gBlJpNB Aprt0 0BBB R@ @efA000 0PB0 *00 000\0X0 *0000 0P0BX0, *@00p1| 1|QBX0 $HTH0P &0 *0,NupNSk [0NupNuHPaH8 _&X Pf/|~ K!zag @ ep 24C"2 S@ػ Td BTA3A0C4$I2a222B"0@2A\xvaRg<2#M 4B3BS@ -f ػ Td>BAAb8RGRC`3RSG5GC5C J1DcaRF F e`RG GcdNuXASF1F41R 1h4 x1EDgVA)H)H 9|J?<NNTU@g,ACg dRhdRh(gpL8Np>L8NTAJ0?C bL000zH?A/.)HpNLrHH/>Bl/,ff.f.ffNu l /.g&, ^`D&, N`>&, R`8&, V`2&, Z`,2,/4WAARA0,/6A hfRAS@f9A/,&, Jo ? CN 0`@k Ap0(/.NuA Nup)@JphNLtH &JKBCH .A/~0 1PP1P1PA L? &<@>AFG0000X0000X0000X0000C ~AJ0g0  pi, N"F QNu?S@k&8L &LeBLe,C`(A? fHa)_ 2TNuBlJ`l *bl ,bH .N0S@k@>A PC/~. 0(JgRJ)@g1@CJ2fP2HP" &" *pdN0,r W1@AJ00 piN9|L@NpiN _CL""pe`9| LpiN9|LphNLtH 2H/`SBSC@AHH/jP 6P/^P0<rtN^papapapaL/jr`S@k6@ A 9PJg8BPpfNpgN9| LphN9@JfdBlJa\Q 6BB 2`NuS@k @ A 9pJg a$Bp`NuHS&I. FV 7p&NZ9l/h8,:,L/d4,pĴ@cS@9@p4,rŴAcBSA9Ar`8pJ, 7fnJ/^k0 Eg$2,/h pg  qfH9A/hpjNF` R0AD X0AN<&<x*<NAJNPBmTBmZCJA\ 0C2Ab 0AJNN NAXN<&<x*<NgN3D`N NpNA"NAtNNBNDo Another Chapter now? | |HPN Yes | No r"_ N.+@ -SWHfN4nAX 0N4rNAzNLA(N >LAN >LAN >pNAPN8FAPNACV  "002AC\  "002A(Cb  "002A.Ch  "002CA 0CA 0C(A 0C.A 0A킲NANN N NANpN ANN8NA@N N NLA4N >pN ANN8NA@N N NLA.N >LA(N >LAN >LAN >pNpNANpNANpNA(NpNA.NAPNN N NLA.N >LA(N >LAN >LAN >pNA킲NANN N NLA.N >LA(N >LAN >LAN >A킲NAN8/AN8" A0AN8/AN8" A0AN8/A(N8" A0AN8/A.N8" A0pNpN A@N A큼NANC4A큤 0p0, 9@A r @0A4N89@A>N8NN NLA4N >C4A큪 0p0, 9@A r @0A4N89@A>N8NN NLAFN >LA@N >LARN >LALN >A@NN8NAFNN8NN NLA@N >A큼NAN   > FF f . 4 F f 4 . ֌ : DD}w`9Q` Efv*oM\ m HPHUBg?<JNA(m)m -:gS)@ -OK1PC#HNHx?<HNA@)@l/?<HNA)@h&@)@XЬl)@d)@`ARCpr Ѝ"QHNFALNHz2?< NA\pdAxr0XQ)K\NNZxN ,`NuJrBjNuHz?<&NN\NCAp$L Qp N9lrBlJpNNpMN9@pdAr 0Q0tr N9lNNupealp`NuaNJHz?<&NNBWNANC2A@p222NrҌ0<NB0,rNurA9Ar`v C9Cr`rt9@9A9BNrrҌpsNB0,Nu9@N`rDҌpsNBNuC2 @ e @}bA@p222Nr,Ҍ0<NBNu    -pa2|a>:><|a4g RGj`a(0GVfA1G<ap??<?<NM\Nu??< NMXNu&8*:EENuHnv 2$4BBNuAd RdQRB BbABJk 0NuJBjBBXNu 0Nu 2$NuE`B<gJEgEjCDEDF Fe( F dF8BCHC` F0bFHC8v` HD8HDkDуdQRBNuDdBDA@kgAр[SBk0NuJlJBk&Nu0g H@rB JkЀ[` BbNuJBj prtNuHPAJgPpr$< _Nup _NtNu&8*JEgJBgJjBEB:HC҅H@:|ۆ҄ۆ<HC>H@ЃdHA@B@H@хk HAҁHAрSB BbNuNpNNuCDEJEgJBgJjBEBQ*HE?<>0rHGGdHGGdSWDуdi\?<>0rHGGdHGGdSWDуdiN?<>0rHGGdHGGdSW2 H@N?<,>CEdGH@0r`?<`JBgVB&8TTDуdQRBNuDAр&AdRAрAрDуNuprt|=|(  g +g -f .g20  b 0e 9b da`RF` .f 0e 9b dajSF` Eg efX +g -f 0e 9oSH`00  b&Hz0  b E Do`HJjDDDS4</NJFkSFk&aQN`Ha"FFaQL8N6.(JgtBn(Nupr$<NuJBk4<rpAC v JBgJjv-| Bb BkH>aaNRFBdL8?N<JBga2SF Be BgQRB`ApdR e <rRF&0xafEv+0JFjDFv-Hƌd0BFHF 0HF0ANuprt|`2:HQ A dNAXJ@jNNu~c0NQNuNJ@g,A,BBgHQ?<=NAP FJ@k??<>NAXtNutNuN` A$ HJo d*b` QjNuQjNubNN>/N.,*Q(,l؅kb/,h?<INA\/?<HNA\Jg< l`"ld۬d۬`)Dl$I& `&bۛp0R@@b&C CX`~/,l?<HNA\p=NX$_*(<HREHRa" EHRa DHRa??<KNNANNuN @ep~QBNuJ@jD@vqapvN)@p `H@)@prtNAHplrtNB 2pNpNpapaprapalpalpalpaTpaTpaTBp'a?<NNT@B){L9|0<rtNpapap9@p`pvNv`v`vj`v `v`v`v`?Aa*` Al 2l 4)lVH)lRprtNAl 2l 4HVNuAl 2l 4L VA0000000000prtN9Cp rtNAv` Av `Avl 2l 4)lVHNaBp0,l 2Nua40,HNua*p0,l 4Nuaprt0,l 22,l 44,NuN9||BlBlrҌpsNBNu0<}N& ?<NNC`&?<NNT"@ C <}N`N>(* 9AJA)H@@[000][ˈN Evz`* [g" ]g |g QSz` zQSpQ][ɈN Dvx`* [g" ]g |g QSx` xQSpQ]Bp4NHNu@9@JpNNr|<N @xepw2A$JBjDFHB t`0QBl9F)lVTAtp 9| N2(g"P@g2RADAH""l`r2oZAe 1@#)I`Nuk1@Nup NN"l`dpNAtrdJhk\QpaNH ld$l`"Hg: k&@0+R`g k#&@0+S@H3 Q&f)I`LNu?<?<NAXJgJgNAH@B pNA NuApNNN$N$BS@kH2QNupC ұd"X0Pg"RA$D#Nu"X0Nu _0HpN _0HpNE ұeHHQ0)N$_$ZR@H`2QNu$Y0gHR@@"D%$X0P2g# R@%NupE $ $X0dP.gRG,D%pr Y2dP.gRG,D!p4Ae4v`VfANuNTVHNuH&NTրNTjNuHRp` HRpJQfpNNq Y QfdЀЀ 0NuNNNq Y Qfd ЀЀNuNN,$_& Y Qfdփփ!8NNNP$_& if"QdփփHRNNN~,Nq8DRzXEEg"7PNqR$HBJBgpNJgJigp`eetЂ`"ЀeЁdp`ЀeЀe"Ѕe$W.H@@NL"2` NqR YEjrd0` SjN$_N$ЀЀ 0N YQf "_Nq*eNN*< NqbІSGfN$_Nbփփ!8N YQf "_&Nq*eNN*<&NqbֆSGfNp"X4g S`"QNuNuNJPgBP, d4d<e<Ѐ"ЀЁE Y0gR@2DAH!b` `ЀЀ`Ѐ"ЀЁE. l ,`2"X2g,e($UAk&QHPS Y2g RSj _b l ,"X2geb J"F\N>" KC`e N`d \N l\Ӭ\ NupNd d3 d# d# # d# # # # d# # # # # # # # dB` # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # QNudd2d"d""d""""d""""""""dB` """"""""""""""""""""""""""""""""QNu"p`tdbDA0Hg<<R@f|0HN*JFk*HQ/??<?NAXfX ENuJkpNp`p`\F( &I.` ??<NMXJ[j E&DNup`pNu)H9@Jp4NP'J&f H LNu P&NuQ'` J,'fJ,&gHA#ȇeC! B,&LNu-W)K20, 8k8@ gJl&f"Nu , 8g"P 8 @/, 8N  8fQ 8J,'gNupB <``L@ H)l26)z @W , Jf`CfSHj-D@Hd0H@H 0H@0`fSC\fS , @a"C\fApNNNzHP?< NA\NuH@aa/a a Nu@0 9c^Nu| PC>$Error # ][Abort]\f.B &lX)K\)ld` lp ,BQjNup(NV)l g,vARC( g9CJ9|Lp!,N FPeNudA JpBQA/)H )l gBlJpNB Aprt0 0BBB R@ @efA000 0PB0 *00 000\0X0 *0000 0P0BX0, *@00p1| 1|QBX0 $HTH0P &0 *0,NupNSk [0NupNuHPaH8 _&X Pf/|~ K!zag @ ep 24C"2 S@ػ Td BTA3A0C4$I2a222B"0@2A\xvaRg<2#M 4B3BS@ -f ػ Td>BAAb8RGRC`3RSG5GC5C J1DcaRF F e`RG GcdNuXASF1F41R 1h4 x1EDgVA)H)H 9|J?<NNTU@g,ACg dRhdRh(gpL8Np>L8NAJ0?C bL000zH?A/.)HpNLrHH/>Bl/,ff.f.ffNu l /.g&, ^`D&, N`>&, R`8&, V`2&, Z`,2,/4WAARA0,/6A hfRAS@f9A/,&, Jo ? CN0`@k Ap0(/.NuA Nup)@JphNLtH &JKBCH .A/~0 1PP1P1PA L? &<@>AFG0000X0000X0000X0000C ~AJ0g0  pi, N"F QNu _b@gGHpp 0f NuGNp @"l`Yd&-KNN"l`YepN&#k"C-KN"Cփk փk2##`փk"`2`$Y8gHRDD*D%H8#$c2g# HRDD%H`p"l`Qd&&| NuN"l`QepZN"X0gBPHR@@"D#NuNHxpC퀲~NvA)N?<NNTAN2?<NNTAN2AN&<x*<NfN#HxN4Currently works only in |Medium or High Resolution! HPN Sorry r"_ N+@xNzp"NCZNA'Np&C퀦NtBN Desk C퀦NLHxN About Program C퀦NLHxN----------------------C퀦NLHxN-1C퀦NLHxN-2C퀦NLHxN-3C퀦NLHxN-4C퀦NLHxN-5C퀦NLHxN-6C퀦NLHx A C퀦NLHx N The Tutorials -C퀦NLHx N Read a Chapter C퀦NLHx A C퀦NLHx N Quit C퀦NLHxN Quit C퀦NLHxN What Version? 4C퀦NLHxA C퀦NLHxA C퀦NLA퀦NpN@Nz)|% JN6N`NzpNA N2NXA N&<x*<NfN%A,NA N&<x*<NfN&NpN8pN# EXPLODE.LST procedure #  #+F# E FFoNow for your object data s o o%!!Fo$!F&Now for the Main Dialog Box Objects $8!!L!Ft$!F$8!!L!Ft$<!$!J!FtMain Box Label *'X!h!Exploded Dialog DemoF Choice Box #1 $@!H!5!FD$@!H!5!Fg$P!L!3!Fg$'@!x! Tell Me More!Fg Choice Box #2 $I!T!  !FD$I!T!  !Fg$J!X! @ !Fg$'X!! Show Me More!Fg Choice Box #3 $C!B!A!pFD$C!B!A!pFg$E!D!@!nFg&'j!Z!And Even More!!FD Exit Box $ !7!@ !GF$ !7!@ !GF$ !8!@ !FFV't!@!@ Press the Space Bar or Click The Mouse Here To Quit The Demo F End of Object Box Definition oFfESFERFEPFEQFMain Box Object management i< X"P33LLFo XFEF%!!F$P!L!3!F(F!F$'@!x! Tell Me More!FMF#!F(!F%!!F$@!H!5!F$@!H!5!F$P!L!3!F$'@!x! Tell Me More!FEF FE FE< YJ @ XXFo YFEF%!!F$J!X! @ !F(F!F$'X!! Show Me More!FMF!F(!F%!!F$I!T!  !F$I!T!  !F$J!X! @ !F$'X!! Show Me More!FEF FE FE< ZE@@DDnnFo ZFEF%!!F$E!D!@!nF(F!F&'j!Z!And Even More!!FMF!F(!F%!!F$C!B!A!pF!$C!B!A!pF!$E!D!@!nF!&'j!Z!And Even More!!FEF FE FE {FBV\1188FF F%!!F$ !8!@ !FFa(F!F,']!@!See You Later. Bye!F {pF!FjF.FnT# end EXPLODE.LSTdrawlines procedure # ># EXPLCRD1.LST procedure #  #+F#E F(Rez=0 if machine is in low resolution ,Rez=1 if machine is in medium resolution C*Rez=2 if machine is in high resolution nNYou may use the Rez variable in conditional statements concerning your box # o6* Warning Warning * 6This style of box will require considerable scaling to work in Low Resolution. i6*3 8Here are the coordinates to adjust for box movement. s@By adjusting these coordinates you can move the box anywhere n:on the screen. Don't forget the different resolutions.  nBMoving a box on screen is as easy as adjusting these 4 points: nEHHFxE Fx E Fx E==Fx E E E ESome High Rez Scaling now.. _FR E   Fc FE EF*@@ !@@ F EF EF EF EF EF  EF@ EF` EF EF EF  EF0 EF@ EF2 E( This is just another example of what isFh2 E( possible with The GFA Basic Companion.Fh E F 4 E$ Demo Prepared by John B. HolderFe2  E# 1987 Marathon Computer PressF$@ E Fm6` E' The GFA Basic Companion is soon to beF* E released by:Fs* E MichTron, Inc.F.  E Tel: (313) 334-5700F 60 E' At Marathon Computer Press, We Go TheF4@ E$ Distance For Creative Computing!FF%!!F $!F! !! F! !! F$!F" ! ! ! F2Here is where we define the text size and style ,to change the size you must change the 6 8however, other modifications may have to occur also. cFt(! !!PFf E00F cF(! !!@Ff E F FE d,FF@'\!  !$ E X P L O D E D DIALOG BOX DEMOF dpF@'\! pp!$ E X P L O D E D DIALOG BOX DEMOF FdEG@F (! F('\!# H#  ! F dF(!!!@F$'6! !ContinueF$!F2/! !::! FLFESFERFEPFEQF eZFDe2/:  FD %!!F2/! !::! FF FF FF Pause 5 jF.F @# end of EXPLCRD1.LST procedure # ># EXPLTEX1.LST procedure #  #+F#E F(Rez=0 if machine is in low resolution ,Rez=1 if machine is in medium resolution C*Rez=2 if machine is in high resolution nNYou may use the Rez variable in conditional statements concerning your box # o8Here are the coordinates to adjust for box movement. s@By adjusting these coordinates you can move the box anywhere n:on the screen. Don't forget the different resolutions.  nBMoving a box on screen is as easy as adjusting these 4 points: nExxFxE Fx E``Fx E..Fx E E hFF E Fx E  F  FE:This style of box will require considerable scaling to pwork in Low Resolution.  oF %!!Fe ilF(!!!PFo iF!(!!!@Fo F!$!F! !! F! !! F$!F"! !! F j.F!N' ! !))FD jFN' ! !))FD F jF!N' ! !) Want More Eh? FD k4FN' ! !) Want More Eh? FD F kF!N' ! d!) 'FD kFN' ! X!) 'FD F lJF!N' ! !) As you can see, the possiblities FD lFN' ! !) As you can see, the possiblities FD F lF!N' ! >!) are really only limited by your own FD mPFN' ! 4!) are really only limited by your own FD F mF!N' ! d!) imagination. Every serious GFA Basic FD nFN' ! X!) imagination. Every serious GFA Basic FD F nfF!N' ! !) Programmer will surely want to have FD nFN' ! |!) Programmer will surely want to have FD F oF!N' ! !) a copy of this program for his or her FD olFN' ! !) a copy of this program for his or her FD F oF!N' ! +!) software library. FD p FN' ! "!) software library. FD F pF!N' ! >!) 'FD pFN' ! 4!) 'FD F q6F!N' ! Q!) This is an example of a text only FD qFN' ! F!) This is an example of a text only FD F qF!N' ! d!) box created by the Companion's Source FD r# EXPLWID1.LST procedure #  #+F#j ! FE F(Rez=0 if machine is in low resolution ,Rez=1 if machine is in medium resolution C*Rez=2 if machine is in high resolution nNYou may use the Rez variable in conditional statements concerning your box # o8Here are the coordinates to adjust for box movement. s@Byk adjusting these coordinates you can move the box anywhere n:on the screen. Don't forget the different resolutions.  nBMoving a box on screen is as easy as adjusting these 4 points: nE``FxE Fx EHHF  E>>F  E E yDFF EppFx E Fx FEBThis style of box is intended for use ONLY with Medium or High nresolution screens.  eFl!F%!!Fr$!F! !!  F ! !!  F $!F! !!  Fd6! PP !!   F(!!!FP('! `` !CONTINUEF zF!(!!!@F` zF!(!!!PF` F!8'0!   !So You Want To Hear More?F {F! E  F  FEd'P! 88 !E Well, The GFA Basic Companion is a dedicated Dialog Box GeneratorF {F! E  F8 FEf'P!  !Ffor GFA Basic. It also comes with many examples of how to effectivelyF |F! E  F FEd'P! ,, !Euse the Generator and GFA Basic in general. There are two disks fullF |F! E  F, FEX'P! TT !8of help files, and source code. Quite a deal at $49.95!FiFNow to get the user's o.k. to continue either by mouse or keyboard. FoERFESF}8 Fe$F(FF j! ! F  Pause 5 (!!!@F.FL# end EXPLWID1.LST procedure # j Rr\jfv@Twobutn.lst Rem # TWOBUTN.LST procedure # ' Procedure Twobutn.lst ' The GFA Basic Companion Computer Generated Source Code 1987 ' ' ' This source code is Copyright (c) 1987 Marathon Computer Press ' ' Legal owners of The GFA Companion are granted a non-exclusive license ' to distribute applications containing this source code without any ' additional royalties or licensing fees. ' ' Provided the following conditions are met: ' ' The user agrees not to distribute any applications containing ' this source code modified or unmodified in any manner unless the ' the program/application is in compiled or PSAVED form. ' ' To release this source code in any other manner is a violation of ' Title 17 of the U.S. Code governing copyrighted works. ' Violators will be prosecuted ' All rights are reserved. ' ' ' Rez=Xbios(4) ' Rez=0 if machine is in low resolution ' Rez=1 if machine is in medium resolution ' Rez=2 if machine is in high resolution ' You may use the Rez variable in conditional statements concerning your box ' ' This box is suitable for all three resolutions ' Here are the coordinates to adjust for box movement. ' By adjusting these coordinates you can move the box anywhere ' on the screen. Don't forget the different resolutions. ' ' Moving a box on screen is as easy as adjusting these 4 points: Lx=154 Rx=480 Ty=75 By=130 If Rez=0 Lx=0 Rx=326 Endif ' ' Sget Tempuse$ Deffill 1,2,2 Deftext 1,0,0,6 Defline 1,3 If Rez=0 Pbox Lx+10,Ty,Rx-10,By Box Lx+10,Ty,Rx-10,By Else Pbox Lx,Ty,Rx,By Box Lx,Ty,Rx,By Endif Defline 1,1 Text Lx+65,Ty+10," " Deffill 1,2,8 Pbox Lx+61,Ty+25,Rx-230,By-15 Pbox Lx+226,Ty+25,Rx-65,By-15 Deffill 0,2,8 Pbox Lx+61,Ty+25,Rx-233,By-16 Pbox Lx+226,Ty+25,Rx-68,By-16 Box Lx+61,Ty+25,Rx-233,By-16 Box Lx+63,Ty+27,Rx-235,By-18 Box Lx+226,Ty+25,Rx-68,By-16 Box Lx+228,Ty+27,Rx-70,By-18 Text Lx+74,Ty+35,"A" Text Rx-88,Ty+35,"B" Text Lx+24,By-7," " Text Rx-140,By-7," " ' Now to get an answer for you Clr Choice Repeat X=Mousex Y=Mousey K=Mousek If X>(Lx+63) And X<(Rx-233) And Y>(Ty+27) And Y<(By-18) And K=1 Choice=1 Endif If X>(Lx+228) And X<(Rx-70) And Y>(Ty+27) And Y<(By-18) And K=1 Choice=2 Endif Until Choice<>0 ' The chosen button is returned to you in the ' Choice ' Variable ' If button 1 chosen, Choice=1 and If button 2 chosen, Choice=2 Pause 5 Sput Tempuse$ Clr Tempuse$ Return Rem # end TWOBUTN.LST procedure # yGfABASIC...zvAXKYSWITCHOUTICONINVERTIT NORMAL_MODEPThis is an example of how to create an interactive Icon with GFA Basic Source NCode. If there is enough demand for this sort of Icon, perhaps a dedicated FIcon Maker can be put together. Let MichTron know what you think. e c: This Demo is 1987 by Marathon Computer Press (c)1987 ( All Rights are reserved t 4 Please do not Upload this source code to any BBS  P$Y ! "Sample Icon ProgramF4Y !  "Press the Right Mouse ButtonF"Y !@ " To Quit...FiNY !  "6This Demo Taken From The GFA Basic Companion LibrariesF:Y !0 "# By John B. HolderFMFqFIcon tester 1 +FMFFF!F j!!F { FERFEQFEPF ZF:,LLLF F  F,F F,FF F F (F.F+FEF%!!F$!!F$L!L!!FF$L!L!!F !F$!!FNow for the object $p!\!f!zF$f!z! !zF$ !z!!\F$!\!p!\F$!!F$h!|! !|F$ !|!!^F$!!FEGxHF!^!!bbF vF$!!F$v!v!!vF!F4Yp! "Icon is now selected F{F.F+FFEF%!!F $!!F$H!H! !F$H!H! !F$L!L!!F$ !!4!F$ !!4!F Now for the object $p!\!f!zF$f!z! !zF$ !z!!\F$!\!p!\F$!!F$h!|! !|F$ !|!!^F$!!F $EGxHF!^!!bbF F$!!F$v!v!!vF(!!!F2Yp! "Icon is not selected F$'4!!Floppy Drive AF.FTxGfABASICNVVVVdddd8>>>>DDDDLLLLREZLXRXTYBYOFFSETPOINTERPAGESOVERFLOWKEYINPUT STARTLOOP DRAWLINESXTEMPUSE HELPBOX1.LST HELPBOX1.LSTHELPBOX1.LSTDRAWLINESLThis is an example of how to read in a data file for use with the Helpbox Doption. A bit of experimentation will show you the possiblities.  pRBoth Helpbox1.Bas & Helpbox.Dat must be in the same folder for this example to work properly. a o oMF#># HELPBOX1.LST procedure #  #+F#F The GFA Basic Companion Computer Generated Source Code 1987   H This source code is Copyright (c) 1987 Marathon Computer Press * && 8 Distributed by MichTron, Inc.  H Legal owners of The GFA Basic Companion are granted a non-exclusive L license to distribute applications containing this source code without N any additional royalties or licensing fees with the following exception:  B The user agrees not to distribute any applications containing F this source code modified or unmodified in any manner unless the e< the program/application is in compiled or PSAVED form. n F By your use of this product you consent to all of the above terms 4 with no exceptions, or exclusions of any kind. o F To release this source code in any other manner is a violation of < Title 17 of the U.S. Code governing copyrighted works. o6 Violators will be prosecuted o4 All rights are reserved. d F Please Honor Our Copyright and the Conditions Outlined Above   E F(Rez=0 if machine is in low resolution ,Rez=1 if machine is in medium resolution C*Rez=2 if machine is in high resolution nNYou may use the Rez variable in conditional statements concerning your box  o8Here are the coordinates to adjust for box movement. s@By adjusting these coordinates you can move th 9e box anywhere n:on the screen. Don't forget the different resolutions.  nBMoving a box on screen is as easy as adjusting these 4 points: nExxFxE FxE``FxE//Fx E E>This style of box will require considerable scaling to work in Low Resolution. i,Now to load your text lines into an array  o Let's make room for our Data:  e e* F e e Now to read in the Data File  o o7I!M! Helpbox.datFtn EGFt =`M! F X FF$8MF' That's all there is to it.  M M MFjFF%!!F F(!!!@F   F!EF E F(!!!PF  F!!!!F$!F!!!F$!F"!!!F  F!J'@! !.  Flip Page |  Flip Back | Return to Quit F !FJ'@! !.  Flip Page |  Flip Back | Return to Quit F F EF"Now to set up the paging scheme E%@ FE @FF !F EF  FEEFMFF Ea F2See if the key pressed was the <= left arrow   " KFe !F EFMF F " FWe do nothing EFo FE$Now for the => right arrow key   " MFg "zF EFFMF "FWe do nothing EFo FE FE6Check to see if the key pressed was the return key k "Z PPFh!FFFj!FF FX F. * Warning * DThe mouse was turned off at the start of this procedure so if you <need the mouse when you return use a Showm command here. o.FeL# end HELPBOX1.LST procedure # &Now for the actual drawing routine 1L# HELPBOX1.LSTdrawlines procedure # +F# $F#2 !@@!00!ppFr $F2 !@@!00!HHFr F E#@ @F0% EG@F %Z  F8'P!#0   # !  F# %( F.FT# end HELPBOX1.LSTdrawlines procedure # x `/  PPA&<$|6 Line 1 line 2 line 3 line 4 line 5 line 6 line 7 line 8 line 9 line 10 line 11 line 12 line 13 line 14 line 15 line 16 The Last Line C x<x<~>|<??|????????????????{>??|???>?>???~?~???????????????????|??8@????>????|???????????????????????? ?ρ????~<?~?~>|?~|~?||??|x??xx??xx??x?x??xx??xx??x??~??|?>??x??????????????????~|>>|x<<xp88px ` 00`5440`4  4`04@4@4@4@4@4@4@4@4@4@4@4@4@4@4@4@4@4@4@4@4@4@4@4@4@4@4@4@?4@`K"@a4@!4@14@4@4@4@4@4@4@4@4@x4@89CA4@$ED@x4@ ED@4@ 9Cx4@ 4@4@1K4@a x 0)4@">a yʀ4@ "a2 4@ 1xK4@ 4@4@`04@"% @@  ?  Uw@ 0  @  Uxx@  ߸ U\>  _فX =>U^x h~`|`5flف ?W h``$|Y@ ?W> h lg`6`vـ uU  h lf`;6`f6́<uU  l|`|s7 H=U|@  n~` 7 800=U  g8o`` U_>@  c0mg``<t@U_  ?UW?  <pUW<  0_  xpp ` `   p@   W?@ >UU  UU~ =UU  ` U<  =U_H   _ yc0  <=W=|   ׃@   8ᇀ@   ?   x    ' p~ '  c1c1c1c1c1c1c1  c1c1c1c1c1c1c0  1c1c1c1c1c1c1c 1c1c1c1c1c1c1c@ c1c1c1c1c1c1c1! c1c1c1c1c1c1c0! 1c1c1c1c1c1c1c" 1c1c1c1c1c1c1c<$ c1c1c1c1c1c1c1 c1c1c1c1c1c1c08  1c1c1c1c1c1c1c@   1c1c1c1c1c1c1c@x@  c1c1c1c1c1c1c1   c1c1c1c1c1c1c0 p@ @1c1c1c1c1c1c1c  @"  ( ( )  Ӡwsp   cV p 5 6S  dʪwv    0 ` ` 00 ` 00 ! 0` p ` ` `  ` ` 00   @@  @   < @     *p  *@  *@   ( `   (   @@@@@@0@   @0 0 0`` @   @``@PP@  @   0pp@  b`         @` 8@ @@   0 0`@ (` `@   ``P@@0@ 0     0  p`0  |8 ?7_ ?/ 7_@ ?0 `@0 0@@@x`  ` 0   @`>8 8@`0 @ P@   0 p@ ~ _@@8 o@ _ p? 8 ``@@ @  ``@ `@@`@ @0 @0   0  @ @@ @ /@ 88  @@  ?@   0  0      @8 p @88 p  @@@    0   @q ?  @  . . q8.@ .@ .@ .@ . @. .`x. . =.=.  0f1.@ 0f1.0f1.0f1J 0f1J 0f1J<1J<1. @x ~< x>|<|< ?? ???? ? ??????? ????y?~<?????>??????~????????????????|????? ?????~<? ?????? ???? ??????????? ????? ????~>|<??~?~|~???~||x????|x?xx????xx?xx????xx~|????xp?~<????????? ????? ??????~|x? ><><|xx p`  8080p`!2B!UUUUUUUUUUUUUUUUUUUUUUUUUUA!* ? A!U?@PA!jA=!UBPA!mBA!UBPA!mBA!UBPA!mBA!UBPA!mBA!UBPA!mBA!UBPA!mB$A!UB`"PA!mB??mm.. ?A!UBߺ??PA!mB~~A!UB mmOOccyy||PA!mB%A!UBpsǾ PA!mB""@H"" "' A!UB@s PA!mBb0A!UB}S|}}`PA!mB}B}}8A!UBPA!mB@8Jx  A!UBDUD_D!!QQ PA!mB8D< A!UB A  PA!mB<A=}9}A!UBA_}yPA!mB  = 8ǎ@|@|)PA  $D Q y@FAAU}A UUUUUUUUUU BL<EPA <c<A UUUUUUUUUU PA "A UUUUUUUUUU%PA  ' psA UPU( "" P9  's ]6 UPUP:uux6 ?* p^6 UUU?UU >PWW5 * :]]O4 UUUUUUUUUU<@9Pju]UW1 " `""̂"m (烿S?WWUUUUOUUUU]W]WUTPh Qlc`UpD6`UUUUUUUUUU^UWUuUUUUUUUWUUu]]WU^n"~` s 7?UWx?U}UUUUUUUժueTիWAEcTmg`U`@?ZWU_WUU__UUUUUUuUժU USUO?UUWWUUWWUeTիU\UUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUbUUUU Uj5UUWU_WU~U]]U]WUUWڪ UUUWUOUzuuU]WUUUpUUUUUUUUUUUUU2UUUUU_U?UuUWUUU_UUUUUUU_U?UWUիUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUU__UUUUTUUUUUUUUUUUWծWUUUUUUUUxUUUUUUUUU_U?__xz]UUUUUUUU^UUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUTUUUUUUUUUUUׇ==?juuUUUUUUUUUUUUUUUUUUUU?UUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUTUUUUUUUUUUUUժU WUUUUUUUUUUMUUUUUUUUUUUUUU ]UUUUUUUUUUUUU\qqqqqqqqqqqqVUUUUUUUUUUUUU*ժUȈ݈]UUUUUUUUUU88888888888UUUUUUUUUUUUUTUTuUUUUUUUUUU UUWqqqqqqqqqqquUUUUUUUUUUUUUUUUWUWUw#UժUUUUUUUUUU88888888888UUUUUUUUUUUUUUSUU/WUUUUUUUUUUUUUqqqqqqqqqqqUUUժUUUUUUUUUUUUUUUWUW]UUUUUUUUUUU* 888888888888jUUyUUUUUUUUUUUUUUWUuUUUUUUUUUUUU5U qqqqqqqqqqqqUUUUj5UUUUUUUUUUUUUUUUU_uUUUUUUUUUUUj@*UUUUUUUUUUUUUUUUUUOUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUZUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUWUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUW@P@EUWY UUUUUUUUUUUUUUUUUUWUUUUUUUUUUUU d*@w8rUUUUUUUUUUUUUUUUUWUUUUUUUUUUUUUWUUVUUUUUUUUUUUUUUUUUWUUUUUUUUUUUUqUUUUUUUUUUUUUUUUWUUUUUUUUUUUUUuUUU_UU}UUUWUU}UUUWUU]UUUUUUUUUUUUUUU<ժUUUUUUUUUUUUUUUWUUUUUUUUUUUU UUUUUUUUUUUUUUUWUUUUUUUUUUUU? UUUUUUUUUUUUUUWUUUUUUUUUUUU@ϪUUUUUUUUUUUUUWUUUUUUUUUUUU5 W`  @~}UUUUUUUUUUUUUWUUUUUUUUUUUUj@ @ @ @@ @  j @UUUUUUUUUUUUWUUUUUUUUUUUUU@X @ @ @P P@0P@UPժUUUUUUUUUUUWUUUUUUUUUUUU? 0?` 0 `y}~UUUUUUUUUUUWUUUUUUUUUUUU_? 0?` 0PT `TUUUUUUUUUUWUUUUUUUUUUUU @ @@(@ @@ ``UUUUUUUUUUWUUUUUUUUUUUUU` @ @@ P T @   V8~0<>~UUUUUUUUUWUUUUUUUUUUUU0? `?@'0`UUUUUUUUWUUUUUUUUUUUUU0? `?@'T0`U7UUUUUUUUUWUUUUUUUUUUU  @ @ @ j@ UUUUUUUWUUUUUUUUUU U@ @ @5`@0U@@U_UUUUUUWUUUUUUUUU_ 0?0@ ? p@`?U?UUUUUWUUUUUUUU_W 0?0@ ? pU` UUU|UUUUUWUUUUUUUW*  @ @@j`UUUUWUUUUUUU UT@ @ @@5UUUUUUUUUU@0@ PUUUW>?UUUUWUUUUUU j@ 0`0?8`j`UUUWUUUUU _ 0`0?UUUUUUUUUUG8`UTpUUUU|UUWUUUU_  *; ?U>UWUUU_UUUU@0(UUUUUUUUUUU@@VUUUU WUWUUW`` u`` WUUU@?U`UUUUUUUUUUUQ`UpUQAW WU; `  UUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUU@@WU`  @`)`pUUW);* ==  0 0ff11\)00ff11 0 0ff11<<11@GfABASIC;(<<<<<<<<<<<<<TRUEFALSEBIOS_REZMREZHREZ SCR_ORG_X SCR_ORG_YREZ SCR_MAX_Y SCR_MAX_XW_GETW_SETW_CALC TOP_MARGINWFULLOLD_FULXOLD_FULYOLD_FULWOLD_FULHWATTRIBSWCLOSEDWFULLEDWARROWEDWHSLIDEDWVSLIDEDWSIZEDWMOVEDWGUESS SLID_HORZ_POS SLID_VERT_POSSLID_HORZ_SIZESLID_VERT_SIZECHAR_CELL_WIDTHCHAR_CELL_HEIGHTTXT_CHARTXT_LINE TXT_WIND_W TXT_WIND_H TOT_TXT_LEN TOT_TXT_LINESI1ATTRXPOSYPOSWIDTHHEIGHTWXWYWWWHMAXYWHMARKWTEMPHTEMPXTEMPYTEMPTEST MSG_EVENT OPEN_WINDOW SETWINDFULLPAGE_UPPAGE_DNROW_UPROW_DNPAGE_LTPAGE_RTCOL_RTCOL_LTSETHSLIDSETVSLID SETWINDSIZ SETWINDMOV CALC_VERT_POS SETWINDVSLID DRAW_WINDOW CALC_HORZ_POS SETWINDHSLID CALC_TXT_WIND SIZE_SLIDERS CALC_HORZ CALC_VERT> Window Demo --- GFA Systemtechnik 1986 --- : Extensive work by John Tal/Michtron/1987   o: Works in Color(med-rez) or Mono(hi-rez)  a r* F EFEF E@bios function call for screen resolution and returned values .EFoEFEF E$screen size (to be used with Rez) E  FoEHHFo E@get screen resolution from Xbios/Trap #14, opcode=Bios_rez=4 . E Fn E8calc to allow this demo to function in med or Hi rez s EF EFF EGEM opcodes  EPPF  ERRF  EXXF  E,working margin on GFA basic screen at top  E00F E&vars for tracking window full state EFEFE FrE Fr E F E&window attributes(&HFFF=all active) E Fi E(event messages return values in Menu nE00FgE88FgE@@FgEHHFgEPPFgEXXFgE``FgEppFg Evars to track sliders EFEFEFEF E$vars to track and calc text size e EFc!EF E<position in string array for upper left corner of window z"EF#EF E,window size in chars for text to displayE o$EF%EF&E88F 'EF E2create sample data to manupilate within window of E\ +For further information contact: F f E\ (Gordon Monnier &F f E\ (President, MichTron Inc. F l E\ \Fl  E\For Immediate Release: FFl@ E\GFA BASIC by GFA Systemtechnik >Fl` E\ MichTron is pleased to announce the release of GFA BASIC. GFA BASIC Fl E\was developed by our friends in Germany, GFA Systemtechnik. MichTron is Fl E\delighted that we can continue to bring you dynamic and useful programs Fl  E\from both home and abroad. Besides this package from Germany, we are Fl0 E\currently releasing new programs from England, Scotland, and France. Fl@ E\ GFA BASIC is a high level language for the ATARI ST that is as easy to FlP E\program as BASIC yet offers full access to system features and an execution Fl` E\speed that rivals assembly language. 8Flp E\ The concept behind the development of GFA BASIC was not to make Fl E\further minor improvements in BASICs programming language but to develop a Fl E\totally new form of BASIC which would meet the following criteria: Fl E\structured programming should be made possible in its entirety, everyone Fl E\who has programmed in BASIC should be able to use the new Interpreter in Fl  E\the shortest time possible, and the advantages already present in BASIC Fl( E\should be found in the newly developed BASIC. /Fl0 E\ GFA BASIC offers the user a BASIC Interpreter which, apart from Fl8 E\entirely fulfilling the before mentioned conditions, also offers the user Fl@ E\other advantages. The GFA BASIC Interpreter is very compact; it uses only FlH E\55 KBytes of 'precious' memory on your ATARI ST. The Interpreter has an FlP E\extremely fast processing speed; it needs less than half a second to carry FlX E\out an empty FOR-NEXT loop 10,000 times. 4Fl` E\ GFA BASIC also makes structured programming possible. In order to do Flh E\this, several additional structure commands were added to the list of BASIC Flp E\commands. For example: DO ... LOOP, WHILE ... WEND, REPEAT ... UNTIL, and Flx E\PROCEDURE (with local variables) were among those added. It was considered Fl E\necessary to limit the amount of commands to one per line to keep the Fl E\structure of the program simple. 1 If Dummy$<>"" @Strip_file_path Endif Return ' ' Procedure Strip_file_path Local Size Size=Len(Dummy$) For Strippat=Size To 1 Step -1 If Mid$(Dummy$,Strippat,1)="\" Then File$=Right$(Dummy$,(Size-Strippat)) Strippat=1 Endif Next Strippat Return