@L}5 _$% l0$)$$Hȱ$ UhL" `e$$%`$%`  R@W!( L(1   Y I`  d  Ld M * @  $ % CC$$)%1 Udߥ$9%: !0 S$% DD˙`  }J)Lr K!"Li3!3255 THEN K:=TRUE ELSE K:=FALSE; KEYPRESSED:=K;END;PROCEDURE FLUSHKBD;BEGIN#A LDA #$FF } STA $2FC#END;PROCEDURE PAUSE;BEGIN FLUSHKBD; repeat (* zip *) until keypressed; FLUSHKBD;END;procedure  }doit; var ch:char; x,y,z:integer;begin reset(f,fn);x:=0; FLUSHKBD; while not eof(f) do begin ch:=f^;  }x:=x+1; write('byte #',x:5,' ord = ',ord(ch):3,' char = ',ch); IF CH<>CHR(155) THEN WRITELN; get(f); IF K }EYPRESSED THEN PAUSE; end; PAUSE;end;begin repeat write(chr(125)); writeln;writeln; write('Enter filenam}e: '); readln(fn); if fn<>' ' then doit; until fn=' ';end.LoMlNLO R"(+_12/31/84HH`Q R!!  % !   / .   FȑF! /GF \H"+0+*  DOCUMENTATION FOR DEPRG12.PAS COMPILE THE FILE DEPRG12.PAS WITH KYAN PASCAL. LOAD FROM THE KIX MENU. DEPRG is a } mini D.B. program that currently supports up to 100 records of up to 64 chars each. At the Main menu: Press STA }RT to Create a new file. Press SELECT to Load a existing file. Press HELP to QUIT. At the scan menu: Press the Spa }ce bar to ADD/MODIFY a record. (only the 1st 64 chars are captured) If modifying an existing record, the old recor }d will be displayed below the edit area. If you press return the old rec. will be gone. You MUST retype the record } if you decide not to change it after hitting the space bar. Press START for record 1. Press SELECT for last record. } press - to go backwards 1 record. press = to go forwards 1 record. press + to go backwards 20 recs. press * to g }o forwards 20 recs. press OPTION to save the file to disk or printer. press HELP to EXIT Scan/Edit menus. } This is just a small demo of one way to handle disk access with kyan. It might be best to exit and reload the p }rogram if you are going to swap data disks due to the way kyans lazy IO handles file closeings. You can load about an }y file into the memory array (or the 1st 6400 bytes), but if it contains control chars it might wipeout the screen temp }orarly. I wouldn't save any Non-Deprg data files if you want to use them again. (It MIGHT work however.) An }y comments, suggestions or questions ?!?!????? let me know. Scott Armitage. 72750,22371FqȱFpȱFk`B! eprogram DEPRG2(input,output,f);(* DEMO PROGRAM OF KYAN D.B ver 1.2 *)(* MAX RECS=100 MAX REC SIZE=64 *)(* WRITTEN }03/12/89 BY S. ARMITAGE *) type dev_str=array[1..15] of char; string=array[1..64] of char; var i,j,k,sl:intege}r; st:ARRAY[1..100] OF string; f:FILE OF STRING; bl:string; fn:dev_str; start,select,option:boo }lean;#i d8:util1.iprocedure cls;begin position(0,0); write(chr(125)); end;procedure cls2;begin#a lda $58 sta !}_t+12 lda $59 sta _t+13 inc _t+13 ;2nd page of scrn mem lda #$00 ;clear page cnt sta _t+11 ldy #24 ;offset for scre"}en row 7cl_loop lda #$00 sta (_t+12),y lda _t+11 cmp #$02 bne cl_n cpy #$99 ;offset for last scrn char beq cls_end ;i#}f done then leavecl_n iny bne cl_loop inc _t+11 ;y=0 go next scrn page inc _t+13 jmp cl_loopcls_end equ *#end;p$}rocedure clst(l:integer); var z:integer;begin for z:=1 to l do st[z]:=bl;end;procedure rdat; var z:integer; d%}l:string;begin clst(100); cls; curon; position(5,1); write('Input FILENAME: '); readln(fn); curoff; writeln; r&}eset(f,fn); z:=1; position(3,3); write('Reading record'); while ((not eof(f)) and (z<101)) do begin ST[Z]:=f^; Z:'}=Z+1; position(16,3);WRITE(' '); position(16,3);write(z-1:4); get(f); end; sl:=z-1; cls;end;procedure wd(}at; var z,v,len,ds,kbv:integer; dl:string; procedure psc; var y:integer; begin cls2; POSITION(0,6); )} FOR Y:=0 TO 39 DO WRITE('_'); position(13,5); write(sl:3); position(34,5); write(ds:3); position(0,8)*}; Write(st[ds]); end; procedure addrec; var y:integer; begin if ds<=sl then begin CLS2; +} position(0,14);write(st[ds]); end; curon; position(8,22); write('EDIT MODE. Enter Record.'); pos,}ition(0,8); write(' ',chr(126)); position(0,8); readln(dl); st[ds]:=dl; if ((ds>sl) and (sl<100)) then -} sl:=sl+1; if ((ds<=sl) and (ds<>100)) then ds:=ds+1; curoff; psc; end;begin cls; positio.}n(3,0); writeln('HELP to ABORT, OPTION to SAVE'); writeln(' START to TOF, SELECT to BOF,'); writeln(' - bwds 1, /} = fwds 1,'); writeln(' space bar to edit.'); position(5,5); write('#Recs = '); position(20,5); w0}rite('Current rec = '); flushkbd; ds:=1; psc; repeat begin if keypressed then begin kbv:=peek(764)1}; flushkbd; if kbv=14 then if ds>1 then begin ds:=ds-1; psc; end; if kbv=15 then if 2}((ds100)) then begin ds:=ds+1; psc; end; if kbv=6 then if ds<21 then 3} begin ds:=1; psc; end else begin ds:=ds-20; psc; end; if kbv=7 then if ds+20<=sl th4}en begin ds:=ds+20; psc; end else begin ds:=sl; psc; end; if kbv=33 then addrec; 5} end; cfkeys; if select then begin ds:=sl; psc; end; if start then begin ds:=1; psc; end; end;6} until ((help) or (option)); if option then begin write(chr(125)); writeln; writeln; writeln(' Enter Filename 7}for save With DEV.'); writeln(' i.e. Dn:XXXXXXXX.XXX,'); writeln(' or P: for Print (save first !) '); writ8}eln; curon; write(' Enter FILENAME: '); readln(fn); curoff; rewrite(f,fn); for z:=1 to sl do begi9}n f^:=st[z]; put(f); end; end; POKE(764,33); inithelp;end;begin curoff; inithelp; for i:=1 to 64 do:} bl[i]:=' '; repeat begin sl:=1; clst(100); flushkbd; cls; position(3,1); writeln('DEPRG ver. 1.2;} Mini D.B. program.'); writeln(' Written 03/89 by Scott Armitage.'); writeln; writeln; writeln(' press S<}ELECT to Load a file.'); writeln(' press START to edit/scan a file,'); writeln(' or create a NEW file.'); =} writeln(' Press HELP to QUIT.'); repeat begin cfkeys; if select then begin rdat; >} wdat; end else if start then wdat; end; until ((keypressed) or (help)); end; ?} until help; position(0,23); writeln;writeln;writeln; writeln('All Done !!'); curon; flushkbd; inithelp;end. |PROGRAM PFLIST(INPUT,OUTPUT,F,POUT);(* PASCAL PROCEDURE, FUNCTION LISTER *)(* UTILITY. BY SCOTT ARMITAGE. 02/87 *)(* A} updated on 03/89 *)(* FOR USE WITH KYAN PASCAL 2.0 *)(* KYAN PASCAL *)(* COPYRIGHB}T 1986 KYAN SOFTWARE, INC *)(* *)(* COMPILE & RUN !!!!! *)(* C} *)(* CREATES A LISTING OF ALL GLOBAL *)(* TYPES, VARIABLES, CONSTANTS AND *)(* ALL PROCEDURE & FUD}NCTION HEADERS, *)(* TYPES, VARIABLES ECT. *)(* ALL COMMENTS THAT ARE INBETWEEN *)(* A PROCEDURE OR FUNCTIONE} HEADING *)(* AND "BEGIN" WILL ALSO BE LISTED *)(* *)(* WARNING: F} *)(* COMMENTS AND STRING LITERALS *)(*(LIKE THE COMMENTS IN THIS LISTING)*)(* CONTAINING ANY OF THE FOLLOWING G} *)(* KEYWORDS WILL CAUSE INCORRECT *)(* OUTPUT. *)(* *)(H}* KEYWORDS: *)(* BEGIN, PROCEDURE, FUNCTION. *)(* If the input file is an include *)(* I}file the program will terminate *)(* with an error message at eof. *)(* the program looks for end./END. *)(* to inJ}dicate the end of a pascal *)(* program. The eof function *)(* does not work with files of char *)(* or text fiK}les. *)(* NOTE - Add a few blank lines at *)(* the end of your pascal program *)(* after the END.L} statement. *)(* If the END. statement is the *)(* very last line, the period gets *)(* lost. I don't knowM} why. *)CONST MAXSTRING=256;TYPE string = ARRAY[1..256] OF CHAR; dev_str = ARRAY[1..15] OF Char;VN}AR F,pOUT: TEXT; start,select,option:boolean;FUNCTION CONSOL:INTEGER;BEGIN CONSOL:=0;#A LDA $D01F LDY #5 STO}A (_SP),Y INY LDA #0 STA (_SP),Y#END;PROCEDURE CFKEYS;BEGIN START:=((CONSOL=6) OR (CONSOL=4) OR (CONP}SOL=2) OR (CONSOL=0)); SELECT:=((CONSOL=5) OR (CONSOL=4) OR (CONSOL=1) OR (CONSOL=0)); OPTION:=CONSOL<=3;Q}END;procedure position(horiz,vert:integer);begin#a LDY #5 LDA (_SP),Y STA $54 LDY #7 LDA (_SP),Y STA $55 INY LDR}A (_SP),Y STA $56#END;procedure cls; begin write(chr(125)); end;procedure dtitle;begin cls; WRITELN;writeln; S}WRITELN(' Kyan Pascal'); WRITELN(' Copyright 1986 Kyan Software, Inc.'); WRITELN; WRITELN(' PFLIST PASCAL UTILITYT}'); WRITELN(' ***** WRITTEN BY *****'); WRITELN(' SCOTT A ARMITAGE.'); writeln;writeln; writeln('Press START to begU}in or '); writeln(' SELECT to quit.'); writeln;end;(* NOTE: ACTUAL STRING LENGTH PASSED TO NEXT THREE ROV}UTINES TO INCREASE SPEED *)(* THE PROCEDURES INVSTR AND UPCASE AND THE FUNCTION INDEX ARE MODIFIED VERSIW}ONS OF ROUTINES PUBLISHED IN THE UPDATE KYAN NEWSLETTER *)procedure invstr(var str:string; STL:INX}TEGER); var l,v:integer;begin for l:=1 to STL do begin v:=ord(str[l]); str[l]:=chr(v+128) endend;procedurY}e upcase(var str:string; STL:INTEGER); var l,v:integer; begin for l:=1 to STL do begin Z} v:=ord(str[l]); if (123>v) and (v>96) then str[l]:=chr(v-32) end end;function index(var a1,a2:strin[}g; STL:INTEGER): integer;var i,j,k,l:integer;begini:=STL;while ((a2[i] = ' ') and (i <> 1)) do i:=i\}-1;k:=0;repeatj:=1;l:=1; while(j<=i) do begin if(a1[j+k] <> a2[j]) then l:=0; j:=j+1; end; k:=k+1;u]}ntil((l=1) or ((i+k)>STL));if(l=1) then index:=k else index:=0;end;procedure listit;VAR DLN,BLN,fln,pln:string; ^} s,T:dev_str; DONE,FPLINE,PRNT:BOOLEAN; LINE,L2:STRING; X,LEN:INTEGER;BEGIN DLN[1]:='E';DLN[2]:='N';DLN[3]:='D_}'; DLN[4]:='.'; FOR X:=5 TO MAXSTRING DO DLN[X]:=' '; BLN[1]:='B';BLN[2]:='E';BLN[3]:='G'; BLN[4]:='I';BLN[5]:='N'; FO`}R X:=6 TO MAXSTRING DO BLN[X]:=' '; FLN[1]:='F';FLN[2]:='U';FLN[3]:='N'; FLN[4]:='C';FLN[5]:='T';FLN[6]:='I'; FLN[7]:='Oa}';FLN[8]:='N'; FOR X:=9 TO MAXSTRING DO FLN[X]:=' '; PLN[1]:='P';PLN[2]:='R';PLN[3]:='O'; PLN[4]:='C';PLN[5]:='E';PLN[6b}]:='D'; PLN[7]:='U';PLN[8]:='R';PLN[9]:='E'; FOR X:=10 TO MAXSTRING DO PLN[X]:=' '; DONE:=FALSE; PRNT:=TRUE; FPLINE:=c}FALSE; writeln;writeln; WriteLN('INPUT FILENAME'); WRITE('---> '); Readln(s); reset(f,s); WRITELN('OUTPUT FILENAME or Pd}:'); WRITE('---> '); READLN(T); rewrite(pout,T); WRITELN; WRITELN(POUT,'FUNCTIONS & PROCEDURES - ',S); WRITELN('FUNCTIOe}NS & PROCEDURES - ',S); WRITELN; WRITELN(POUT); REPEAT BEGIN readLN(f,line); L2:=LINE; LEN:=MAXSTRING; f} WHILE ((L2[LEN]=' ') AND (LEN<>1)) DO LEN:=LEN-1; POSITION(25,3);WRITE(LEN:3); IF LEN>1 THEN BEGIN g} IF LEN>MAXSTRING THEN WRITELN('LINE LENGTH ERROR') ELSE IF LEN+10; POSITION(35,3);Wi}RITE(DONE); POSITION(0,23); FPLINE:=((INDEX(L2,FLN,LEN)<>0) OR (INDEX(L2,PLN,LEN)<>0)); if fpline then pj}rnt:=true; IF INDEX(L2,BLN,LEN)<>0 THEN begin prnt:=false; writeln(pout); end; k} IF prnt THEN BEGIN FOR X:=1 TO LEN DO WRITE(POUT,L2[X]); WRITELN(POUT); l}INVSTR(L2,LEN); FOR X:=1 TO LEN DO WRITE(L2[X]); END; FOR X:=1 TO MAXSTRING DO BEm}GIN if not prnt then IF L2[X]<>CHR(0) THEN WRITE(LINE[X]); LINE[X]:=' '; n} END; WRITELN; END; END; until done; WRITELN(POUT);WRITELN(POUT); dtitle;END;begin dtitle; repo}eat cfkeys; if start then Listit; until select; WRITELN;WRITELN; WRITELN('ALL DONE !?!');end.TING HIDDEN SCREENkrs22ADEFINITIONMAIDATEPCINZISVVOLSSSEONXDSNRECSEBYSECAPPLDESTYPSRCDATDPL1PGDBq}S r}s} !"#$%&'2 ٠455ԠŠ٠t}̠ 644ORIGINAL PGM IN COMPUTE MAGAZINE8llTHIS UPDATE BASED ON PREVIOUS UPDu}ATES BY CHRIS DALIMONTE, ROBERT Q. WON, RON MARCUSE:AND GEORGE PAIR.<mmThis version will allow you to sev}t up and switch databases as you wish. I got fed up having to go>JJto DOS and switching names of programs to set upw} a new database.@mmFurther enhancements include a date file so that your printouts will be dated(which is the mostx}Bmmrecent printout?--now you'll know). Also, you will see which database you are using right onDiimost of thy}e screens. A word of caution: check the screen to make sure which database you areFffgoing to be using. The defaultz} setting will be ± unless you change it(option 8).HppThe PROGSORT program will allow you to choose which{} database you want to sort(may be different thanJ33the one you are currently working on.LnnAnother improve|}ment is the ability to recover from a disk error when using the autocatalogNnnoption. The program will eithe}}r take you back to the menu or tell you to shut your disk drive doorP%%and then allow you to continue.RTll~}Ǻ ALWAYS BACK UP YOUR DISK. IF YOU ACCIDENTLY TRY TO CATALOG A NON-DOS DISK YOU MAYV MESS UP YOUR LIBRAR}Y DISK.XmmIF YOU HAVE ANY CORRECTIONS, COMMENTS, OR IMPROVEMENTS PLEASE LET ME KNOW. I WILL CONTINUE TOZ``WOR}K WITH THE PROGRAM AS QUITE A FEW OF THE 4-ACES ATARI USER GROUP HERE USE IT.\ppՠ̠ĠŠή, } , , , AND TO RUN THIS SETUP. YOU THEN CREATE^!!± USING OPTION 9.`;;Good luck. I} hope you enjoy using this program.b***** Bill DeBruin *****dŠΠӛn6-Ax6-B}z6-B'@'@@9##@@K: ҠԠś''}@@D:DATE@@$,Ġ͛6 +"@$}"@ A  @@@@99( 7@<@, 7@}<@,($X"-@@( " b"-@@1(_" l"-@2@8( }" v$ + AbP  ' -@A $[6-@ Ab6.+6-@}76-@C6-@O6-[6-! Ap!"@ AD-@D7$@&@<$@}&@,4A; 67@b,.D1(  DELETED ON ; ALb767@Y<@a,.7$@&@}<$@,T67$@<$@,.*b6-%@V)@(@) A  AbP" }6-@  Ab@-@@"@*7$@<$@,4*A@[.6.7$@&@<$@&@},Q6.7$@&@<$@,[ Ah  A P+6-@ 6. ! Ah+ A P r(} }(;( USING 7@<@, DB>(Y( INQUIRY/LISTINGe6-@o Aer( <( OUTPUT: 1. INQU}IRY,( 2. BROWSE<( 3. LISTING K Ai A0@#6-A:>:,,- BK @)!@A0@ E6-}6-@% Ab16-E @A1 C6-A0 A 9@@P:C B / } Ap6-%@/!@A3& A1 A1`A20  Av(: =6- ( (E=END) OR* }Ai=>:,4EA PD A1X 2"@/(}VOL FILE ID DESCRIP2(b 8$(7@<@!,}8"@A10l A1 !@A2  ?'@@D:DATE4@?@ (}@>:@, XX(@DISK PROGRAM LIBRARY  DATABASE: 7@<@,  ]](@LDI}SK# PROGRAM NAME DESCRIPTION TYPE J/P/* DATE SECTORS  (@>:@, ::(@ }      !@U A3P A1 $"@ A3P$@ "@ }Ai A P %%ĠŠȠΛ /-@b(@ ,6-/$< (} &( } RECORD UPDATE26-@< Ae%6-@ Ab%6-! Ap!!@A P9 Av(}9($ TYPE FIELD # TO UPDATE, D TO DELETE) Ai>:,4D)67@b,.DA AC6-A:>:,,# BA @})!@AC& #A-@"# &((( ENTER NEW A`@%( A@03 Aa@})(@3 A@ < (} &( /26-@< Ae9%( TYPE Y TO SORT ON FIELD # /(} OR 9 Ai>:,0Y +A&@+A&@,( LOADING SORT PROGRAM,% D:PROGSORT|}F(#( ENTER PROG/FILE ID ==>'36-@BB:,"F ` Ab6-%6-@66-@%B:,B6}-@L Ap`"@ A P$$7@<@,4CAV'('( Ԡ  TO RUN ,67@},.,67@<@,.D:8(( TYPE 'Y' TO RUN% Ai8>:,0YA P.(( LOADING  AUp$%}. B3((  NOT ON DEVICE) A 3 A P9()( INSERT TAPE  IN RECORDER9( WIND TO 3(} TYPE Y TO RUN Ai3>:,0YA P4#( LOADING FILE, PRESS RETURN- AV04%C:6(( RECORDER ERROR, LOADI}NG PROGLIB6% D:PROGLIBp( } TO ADD , ENTER:z% #A!-@@%"77 @*+"@)"@})"@,A`@( A`@%   $(|----| $ (|------------|  $*#(|----------}------------| '*$( |-------| $( |-------| $( |------| $(|---| }$(-@@a$67<,. ( _67@<@,.167@<@,.H67@<@8,._67@9}<@E,.K67@F<@R,.167@S<@X,.H67@Y<@a,.K$8W6-Ab A%@J}@6@WUNLOCK PL$B'@$ B'$j$6-AbP A$@t}?@4@5@?LOCK PL$~ B$d( KEY:#An9-@" (} $ /( END9 Ai; A `6-A:>:,,# B; @)!A `"@Ae2#}-@" 2"@Ae0( ENTER VALUE0B:, @A `%B:,&@!Aep6}-%B:,&@$2 A` Aa(67@b,.*2 Av6( TYPE 'Y' IF OK # Ai6>:,0YAh}"@ Ab(@$5(( Ԡ ==>+)@2(>:,5$>('( PRESS ANY KEY TO} CONTINUE 4)@;(>:,>$X("@)"@(@b= Ap`@$ B=7@b,4}DApl"@Ap@v07<,Apm6-%@(6.7@<@,?6.7@<@,V6.7}@<@8,m6.7@9<@E,K6.7@F<@R,16.7@S<@X,H6.7@Y<@a,K$96-@ }((,( RECORDS FOUND= 6 A 9$) (}#A)-@@)"(  " Av%& })$ ( $ ( $ ( $ ( $ ( $ ( $ ( $@ŠנŠśJ (}OYS(K }***EACH DATABASE SHOULD ONLY CONTAIN A MAXIMUM OF 450 ENTRIES***V(Y(Tfb(Y IF YOU HAVE ENOUGH SPACE, ENTER TO }CREATE A NEW DATABASE; OR TO RETURN TO MENUfY# @)!@# A ^"@ h"@ }A (}/+("ENTER DB # YOU WANT TO ORIGINATE: /++67@<@ ,.7@<@ ,67@<@},.=:,++67@<@,.7@<@,HH6.>0000ERASE ME FILE THIS IS FI RST FILE 000000001*} @@ @@RR(JNEW DATABASE READY. BE SURE TO USE UPDATE(#5) TO D}ELETE THIS RECORD.  Ai (#E@@;( ˠˠ ERROR E A)#;"AD-(C}LOSE THE DISK DRIVE DOOR7 Ai; *#AD Ai <#F@@8( ˠ ERROR B} AiF &,,1,4,5,16,17,38,39,45,46,52,53,58,59,61&mmˠ,͠,Π,Š ,٠},Š,Ӡ,ALL RECORDS'̤Λ'$' (}.'(Which database to run?3'99(1YOU CANNO}T HAVE MORE THAN 9 DATABASES ON ONE DISK8'Z(( 1. #1( 2. #2*( 3. #36( 4. #4B( 5. #5N( 6. #6Z( }7. #7B'( 8. #8( 9. #9L'((Enter choice: Q'# @)!@ # B V'-"@#6. D:PROG}LIB1.DB- BW'-"@#6. D:PROGLIB2.DB- BX'-"@#6. D:PROGLIB3.DB- BY'-"@#6}. D:PROGLIB4.DB- BZ'-"@#6. D:PROGLIB5.DB- B['-"@#6. D:PROGLIB6.DB- B\'-"}@#6. D:PROGLIB7.DB- B]'-"@#6. D:PROGLIB8.DB- B^'-"@ #6. D:PROGLIB9.DB- B}j' *Π͛ +Πӛ+~~;@,;@,;@,;@b,;@,;@,;}@",;@,;@,;@,;@, +GG;A `,;@ ,;@ ,;@,;@b,;@,\+}Šӛf+6. D:PROGLIB1.DBp+6.͠z+6. D:DISK.CAT+ԠĠŠś+ Š}қ$,ΠՠƠӛ., +0,o@@d'B7t@d9A @KAAE]A}AEoAR@6, (}7,-8,`(  AI(  DATABASE: 7@<@},`( @, A( B,( ǠL,--(% AUTO CATALOG SORT LIBRARYV,++}(# LIST DIRECTORY RUN PROGRAM`,//(' MANUAL ADD CHANGE DATABASEj,--(% INQUIRY/LIST CREATE N}EW DBt,++(# UPDATE RECORD END SESSION,Z((ԠΠ", B26-< BZ @)!@}B,'6-%@!@' B,=("@(}" B@=B=3 MEANS LIST DIRECTORY,Ơ}ϠǛ,L (} Ρ#(L($ DO AUTO-CATALOG NON-DOS DISKS,-(-(" ***USE OPTION [3] }INSTEAD***,@(*( INSERT DISK TO CATALOG-(0(3(6(@ Ai,A B*@@4 B}A@,@'B:, @)7@<@,06( ҭ @ B,S6-@&6.7@<@,)(I( }ˠ٠ S B0,;@6-B`'@;ApA,8(!( ENTER DISK #(XXXX)}=>%4B:,"8 -^6-B  A6@@E(@^WRITE DISK.CAT TO DISK -C}@3@5@CLOCK DISK.CAT-^6-B@ A<@@D:*.*H6}-^READ DISK DIRECTORY-$ B@@$ B(-B:, @B@2-,"@("6-%@}, BP<-(-@@$7<,0 ( F-f+67@<@,.7@<@,D67@ <@ ,. f67}&@,.7@<@,P-57&@,0 567&@<&@,..Z-A74DOS.SYS)4DUP.SYS)4DISK.CAT)}4DISK.DATA BPd-F+67%@<%@,. F67%@<%@,.n-G/67%@<%@,.7@}<@,=6-%@G BPx-@6-'@}-V"@(L( FILES FOUND= , FREE SPACE= }7@<@,V B`-C (}C( FILES FOUND= , FREE SPACE= 7@<@,-A @!( DISK IS # }$(A( INSERT SYSTEM/DATA DISK- Ai" - ĠϠŠś-YYAAA }A0A@APAUBAA D:PROGLIB@5@@-@M Program Library from S.C.A.M.S. (516) 586-9765 address quetions to:} CHRIS DALIMONTE on SCAMS Requirements: 24K RAM d}isk drive programs to catalog----------------------------------------One of the most difficult aspects of owni}ng a computer is maintaining anaccurrate catalog of programs and data files. We first attacked this problemthrough the use }of a homegrown data bases which handled the program librayin addition to other data. But, alas it became too time consuming }to manuallyupdate the data base as new programs were added or changes made. The logicalextention to this concept was to aut}omate the cataloging process. To accomplish this, one must compare the index of the disk to the program library file,adding} or deleting records on the file as the comparison is warrents. theease of OPENing the ATARI's DOS directory from BASIC grea}tly facilitatedthe programming, but more on this later. Besides the automatic cataloging function, other required featur}eswere:1. Listing the directory from the prgram.2. Cataloging Non-DOS disks (full disks)3. Inquiry,Browse and formatted }Printout of the library.4. Maintaining other data not supplied by the disk directory (rating,date,type,description).5. A m}achine language sorting program to compress the data file.6. An auto-locate funtion to Run any program.7. Variable search c}riteria to locate any program.8. Creating an internal label to identify a disk. The three listings represent the main p}rogram, the sort program, andthe autorun. The sort program (PROGSORT) is exectued by a RUN statement,allowing the DIMension}ing of the rather large X$ and calls the machinelanguage subroutine through a USR statement. The autorun that must be named}on your disk as AUTORUN.SYs must be loaded in if you are going to use thePROGSORT. The AUTORUN.SYS loads the machine languag}e code that PROGSORTuses to sort the data file. The main program begins by DIMensioning of strings and OPENing of theke}yboard (K:) in lines 30-60. The program then does a GR.0 and prints outthe menu of options. Options are selected by pressing} a number 1-8. Thenumber selected is stored in B. B is increased by 1 at line 170 to allowtwo options for autocataloging de}pending on wether or not the disk hasalready been cataloged. Disks that have already been catalog have a programon them cal}led DISK.CAT this is a file that contains th disk number ofthat disk. This program my be deleted if you are not going to cat}alog thatdisk again. You must not have a write protect notch on te disk when cataloging because of this file. A later revis}ion of this program may not have thisfeature if it seems useless to all. If this DISK.CAT file is found thenthe program doe}s a "recatalog". The options that do not require a disk directory (B>3) are sent toline 500 immediatly. Those that do a}re sent through the routine at lines300-400 that preforms a disk directory. The entire directory is editedso that DOS.SYS,D}UP.SYS,MEM.SAV,AUTORUN.SYS, and DISK.CAT are not includedin the data file. This edited directory is then stored in X$. Then }theprogram goes to line 500 and goes to the specified operation with the catalogstored. The recatalog function (B=1,line}s 1000-1110), after OPENing the libraryfile for both input and output operations extracts all the records havingthat volume} number. These are compared to the stored catalog in X$. Changesand deletions are posted to the file using NOTE and POINT co}mmands. Anasterisk is moved to each directory member that was successfully matchedto the library. At the conclusion of this} procedure, control is passedto "Autocatalog". The "Autocatalog" function (at lines 1200,1240) OPENs the file for output}operation. All new entries,stored in X$, are then added to the data file.The "recatalog" function also travels through this }routine and stores onlythe new programs with the same disk volume. At line 1220 it checks to seeif an astrisk is in the X$ }position if not then it means a new entrie hasbeen hit and stores it. Option 2 (B=3) consists of displaying the directory} of the disk in thedrive. Which then returns to the menu. The rest of the operations do not require a disk directory so t}hey gostraight to their indicated operations. Option 3 (B=4) handles the manualadd routine. This can be used to enter full }disk games or just add oneprogram to a volume already stored. You can even save the cassette tapenames this way and for TYP}E just say Tape. The inquiry and print operations (B=5) is handled at lines 3000-3320.The search strategy(GOSUB 6500) and} the output mode are selected, the datafile is then OPENed for input and then prints to the screen or on the printer. Each }tell total number of records found under the selected field thatwas picked before. The file is actually read in at line 7000}, with onlythe reacords matching the search field being loaded in. An Inquiry goesto line 3120,the Browse (19 records per s}creen) to line 3160 and printto line 3200. For the multiple record options the variable L is the linecounter. When end of f}ile is reached at line 7010 then the program goesback to the main menu. The Update option 5 (B=6) at lines 4000 to 4300 w}ould be used for changingor deleting library records. The search key is selected and the data fileis then OPENed for input }and output. The records are read in full and theuser is asked wether he wants to change it or delete or just leave it thewa}y it is. Here typing the desired field number allows you to change itto what ever you want it to say,within a limit of space}. Pressing D willcause the record to be deleted. The sort routine, selected as 6, (B=7) at lines 5000-5050), as statede}arlier, execute the program on the disk called PROGSORT. But before thisis done the beginning and ending positions are POKEd} into locations 207and 208 (decimal) for use by the machine language subroutine. The run program option selected as 7 (B}=8) at lines 5500-5570 will runSAVEd programs or binary load programs. Not all of the binary load programswill work because} of the presence of the BASIC cartridge. A few notes on the subroutines that do most of the work in this program.The rou }tine starting at 6000 is used for the input of data for both addingand updateing the records. The labels for the individual  }fields being storedin data statements are READ during the FOR/NEXT loop at line 6010. Thelibrary record, stored as REC$, is } built from the individual fields atline 6100. Lines 6200 and 6250 OPENs and CLOSEs the file. The search andsort keys are b }uilt at line 6500,using the same DATA statements as abovefor the headings. The positions of the fields are contained in anot }herDATA statement. Lines 6900 and 6910 are prompts. The library record isREAD and moved into its elements in lines 7000-706}0. The variables SV$,SS,SEand SK are used in the search process. The full screen display of the recordis taken care of by l}ines 7600-7617, once again using heading DATA statements. Finally the error routines for the disk drive and printer are foun}d atlines 9000 and 9020. The variable R is the return line number. One note on the program names. To RUN the PROGSORT it }must be namedPROGSORT and the main program must be named PROGLIB. To start your own data file you must do the exact foll}owing: OPEN #3,8,0,"D:PROGLIB.DB": CLOSE #3:XIO 35,#3,0,0, "D:PROGLIB.DB" This little program creat}es the data file empty and locked. The main programlocks and unlocks the data file constantly so dont think it cant accessi}t if the data file is locked. This program is modified greatly from the origional that was publishedby compute magizine,}so if you add anything that makes this program evenbetter please tell me. Thank you. Well, Good luck with this and I hope} it works as good for you as itdoes for me. address any question or problems to :CHRIS DALIMONTE on S.C.A.M.S. or any other} local BBS system.Ťl An(EYE:,,p A6.$tɤv Axd7IXRECAPSPL 6-I:!},&A4 ;,;@b,;@,46. D:PROGLIB1.DB B**( LOADING FILE: 7@<@,6!} A0*@@66-(= @`@$ B=7@b,4D@@2>6-%@!}467$@b&@a<$@b,.> @@<8@(8( RECORDS LOADED=  , BEGIN SORTA/!AP(,(!} ٠נ/(F%!@%6-?:A6255 THEN K:=TRUE ELSE K:=FALSE; KEYPRESSED:=K;END;PROCEDURE INITHELP;B-<}EGIN#A LDA #$00 STA $2DC#END;FUNCTION HELP:BOOLEAN;VAR B:BOOLEAN;BEGIN (* HELP KEY VALUE *) IF PEEK(732-=})=17 THEN B:=TRUE ELSE B:=FALSE; HELP:=B;END;PROCEDURE FLUSHKBD;BEGIN#A LDA #$FF STA $2FC#END;P->}ROCEDURE CUROFF;BEGIN#A LDA #$01 ;poke 1 into STA $2F0 ;...CRSINH (752)#END;PROCEDURE CURON;BEGIN#A LDA #$00 ;p-?}oke zero into STA $2F0 ;...CRSRINH (752)#END;FUNCTION CONSOL:INTEGER;BEGIN CONSOL:=0;#A LDA $D01F LDY #5 STA (_-@}SP),Y INY LDA #0 STA (_SP),Y#END;PROCEDURE CFKEYS;BEGIN#a LDA #$00 STA $4D# START:=((CONSOL=6) OR (CONSOL=4)-A} OR (CONSOL=2) OR (CONSOL=0)); SELECT:=((CONSOL=5) OR (CONSOL=4) OR (CONSOL=1) OR (CONSOL=0)); -B} OPTION:=CONSOL<=3;END;procedure twpos(c,r:integer);begin poke(656,r); poke(657,c);end;F1EؑȭF1EّԤ,^#Asetvbv equ $e45cxitvbv equ $e462random equ $d20ach equ $02FChelp equ $02dc#PROGRAM vbarr(INPUT,OUTPUT);VAR1D} I:INTEGER; START,SELECT,OPTION:BOOLEAN; st:char;FUNCTION PEEK(L:INTEGER):INTEGER;BEGIN PEEK:=0;#a LDY #7 LDA1E} (_SP),Y STA _T INY LDA (_SP),Y STA _T+1 LDY #0 LDA (_T),Y LDY #5 STA (_SP),Y INY LDA #0 STA (_SP),Y#END;proce1F}dure position(horiz,vert:integer);begin#a LDY #5 LDA (_SP),Y STA $54 LDY #7 LDA (_SP),Y STA $55 INY LDA (_SP),Y ST1G}A $56#END;FUNCTION KEYPRESSED:BOOLEAN;VAR K:BOOLEAN;BEGIN IF PEEK(764)<>255 THEN K:=TRUE ELSE K:=FALSE; K1H}EYPRESSED:=K;END;FUNCTION CONSOL:INTEGER;BEGIN CONSOL:=0;#A LDA $D01F LDY #5 STA (_SP),Y INY LDA #0 STA (_SP),Y1I}#END;PROCEDURE CFKEYS;BEGIN START:=((CONSOL=6) OR (CONSOL=4) OR (CONSOL=2) OR (CONSOL=0)); SELECT:=(1J}(CONSOL=5) OR (CONSOL=4) OR (CONSOL=1) OR (CONSOL=0)); OPTION:=CONSOL<=3;END;procedure vb_init;begin#a1K} lda $224 sta vhold lda $225 sta vhold+1 lda $58 sta _t+12 lda $59 sta _t+13 STA reghx lda #$1 sta numfc lda #$031L} sta $d20f LDA #$00 STA FX sta fy#end;#avhold dw 0#procedure vb_on;begin#a stx _t lda #$07 ldx #vblank jsr setvbv ldx _t#end;procedure vb_off;begin#a stx _t lda #$07 ldy vhold ldx vhold+1 jsr setvbv ldx _t1N}#end;(* start of VBLANK code *)#ado_key EQU * cmp #60 ;caps beq spdup cmp #39 ;inv atari key beq spddn 1O} cmp #247 beq dk_ins cmp #246 beq dk_clr cmp #178 ;ctr-0 ; do nada jmp nokeydk_ins lda numfc cmp #$1P}00 bNE dk_id inc numfcdk_id jmp nokeydk_clr lda numfc beq dk_ic LDA #$00 STA numfcdk_ic jmp nokeyspdup ld1Q}a speed cmp #$1 beq nokey dec speed jmp nokeyspddn ldA speed cmp #$07 beq nokey inc speednokey lda s1R}peed sta fspd RTSdo_hlp equ * lda help cmp #81 ;shift-help beq shft_h cmp #145 ;ctrl-help bEQ ctrl_1S}h LDA kflag ;help here beq kf_0 lda #$00 jmp kf_1kf_0 lda #$01kf_1 sta kflag jmp help_dctrl_h lda lf1T}lag cmp #$01 beq tl_f lda #$01 jmp tl_dtl_f lda #$00tl_D sta lflag jmp help_dshft_h lda #$00 sta fx s1U}ta fy sta fdir STA (_T+12),Y lda $59 sta _t+13 LDA #95 sta fchhelp_d lda #$00 sta help rtsg_dir e1V}qu * lda random cmp #$40 bcs g_d1 lda #95 sta fch lda #$00 jmp g_d9g_d1 cmp #$80 bcs g_d2 lda #941W} sta fch lda #$01 jmp g_d9g_d2 cmp #$c0 bcs g_d3 lda #92 sta fch lda #$02 jmp g_d9g_d3 lda #93 s1X}ta fch lda #$03g_d9 sta fdir rtsmv_up equ * lda fx bne nu_l lda #$01 sta fdir lda #$03 sta fx lda #1Y}94 sta fch lda #$c0 tay inc _t+13 inc _t+13 inc _t+13 jmp mu_endnu_l dec fx dec _t+13mu_end rtsmv_dn equ 1Z}* lda fx cmp #$03 bne nd_l lda #$00 sta fx sta fdir tay lda #95 sta fch dec _t+13 dec _t+13 dec _t+11[}3 jmp md_endnd_l inc fx inc _t+13md_end rtsm01_sub equ * lda fdir bne ydn iny ; move face right b1\}ne ml_0ml_z jsr mv_dn jmp mdoneml_0 lda fx cmp #$03 bne mj_0 cpy #$c1 beq ml_zmj_0 jmp mdoneydn cmp #$01 1]} ; move face left bne ml_1 dey bne mdone lda #$ff tay jsr mv_up jmp mdoneml_1 cmp #$02 bne ml_21^} tya sec sbc #40 bcc l1_a tay jmp mdonel1_a tay jsr mv_up jmp mdoneml_2 tya clc adc #40 bc1_}s l1_b tay jmp mdonel1_b tay jsr mv_dnmdone sty fy rtsvblank lda _t+12 sta regh0 lda _t+13 sta reg1`}h1 ldy fspd dey beq nfdit jmp nfac1nfdit lda ch cmp #$ff beq nf_k jsr do_keynf_k lda numfc bne dv1a}b_sub lda regh0 sta _t+12 lda regh1 sta _t+13 jmp xitvbvdvb_sub ldy fy lda reghx sta _t+13 lda gfla1b}g beq f_first lda lflag bNE f_first lda random cmp #$08 bcs NR_D jsr g_dirNR_D lda #$00 sta (_t+12),1c}yf_first sty fyh lda fx sta fxh lda _t+13 sta fth jsr m01_sub clc lda (_t+12),y cmp #$00 ;equ 1d}space ?? beq do_it lda kflag beq sp_0 lda fx cmp #$00 bne sp_n cpy #40 ;don't destroy line 0 bcs sp_11e} jmp sp_0sp_n cmp #$03 bne sp_1 cpy #151 ; don't destroy line 23 bcs sp_0sp_1 lda #$00 sta (_t+12),y lda 1f}#$00 sta gflagSP_0 ldy fyh sty fy lda fxh sta fx lda fth sta _t+13 jsr g_dir jmp nfac0 DO_IT LDA 1g}#$01 sta gflag lda fch sta (_t+12),y STY FY lda help beq nfac0 jsr do_hlpnfac0 LDA _t+13 STA REGHX 1q}KBAUTORUN SYSB BYTER P BDATE B DEPRG12 DOCB#DEPRG12 P B0@PFL2 P BfpPROGLIB BBPROGLIB DOCB PROGSORT B %READ ME B0SORT B 7UTIL1 I B9CVBARR P ldy speednfac1 sty fspd lda regh0 sta _t+12 lda regh1 sta _t+13 jmp xitvbvfch db 95fx db 0fy db1r} 0fyh db 0fxh db 0fth db 0fdir db 0gflag db 0fspd db 5speed db 5lflag db 0kflag db 0numfc db 1ReGH0 DB 0r1s}egh1 db 0reghx db 0#(* end of VBLANK code *)PROCEDURE DELAY(DD:INTEGER); VAR D:INTEGER;BEGIN FOR D:=0 TO DD DO (* Z1t}IP *);END;procedure invscrn; (* ROUTINE USES ZERO PAGE LOCATIONS INSTEAD OF THE _T TO _T+15 THAT THE AS ASSEMBLER1u} USES. *) (* TO PREVENT PROBLEMS WITH OTHER ROUTINES, IT SAVES AND RESTORES THESE LOCS. *)begin#ainv_sc equ *1v} lda $ce sta regh2 lda $cf sta regh3 lda $58 sta $ce lda $59 sta $cf lda #$00 sta icntibl_0 ldy1w} #$00ibl_1 clc lda ($ce),y cmp #$80 bcc id_add sbc #$80 jmp d_nxtid_add adc #$80d_nxt sta ($ce),y lda i1x}cnt cmp #$03 bne sk_1 cpy #$BF ;END OF SCREEN bcc sk_1 jmp ib_exitsk_1 iny bne ibl_1 inc icnt INC $C1y}F jmp ibl_0 ib_exit lda regh2 sta $ce lda regh3 sta $cf# delay(2500);(* invscrn is so fast, *) 1z} (* we must delay a bit.*)end;#aregh2 db 0regh3 db 0icnt db 0#PROCEDURE CLS;VAR J:INTEGER;BEGIN POSITION(0,1{}23); FOR J:=1 TO 24 DO BEGIN WRITELN; DELAY(100); END;END;procedure dmenu;begin cls; writeln(' VB1|}ARR by Scott A. Armitage.'); writeln; writeln('vertical blank now installed'); writeln('press ctrl-shift Insert to turn1}} on,'); writeln('press ctrl-shift Clear to turn off,'); writeln('press help to toggle destroy on/off,'); writeln('press1~} shift-help to position(0,0),'); WRITELN('press ctrl-help to toggle trail on/off,'); writeln('press Caps to increase spee1}d,'); writeln('press Inv (logo key) to decrease speed,'); writeln; writeln('now in black-board mode, type anything or'1}); writeln('press start for this menu,'); WRITELN('press select to invert/uninvert screen.'); writeln('press option to q1}uit.'); writeln(' (hit Return before function keys.)'); writeln;writeln;end;BEGIN(* MAIN *) dmenu; vb_init; vb_1}on; REPEAT BEGIN CFKEYS; if select then INVSCRN; if start then dmenu; if keypressed then begin1} read(st); end; END; UNTIL option; CLS; VB_OFF; POSITION(2,20); WRITELN; WRITE(' ALL DONE ')1}; WRITELN('?!?!?!?!?!'); WRITELN;WRITELN; WRITELN; CLS;END.z Dfff~ff<<f<flxlff`````~cwkccfv~~nf:AU,uMM6.C  ;<| 80~acgcu67B:,%@,.u1}rr6.hpp088 83>u67B:,%1}@,.urr6.h;W y З l1}u67B:,%@,.urr6.h00><8<0p` 80`p?>1} ? u67B:,%@,.ubb6.X 0|88~l01}u67B:,%@,.uAV$D:HORSE8~l00?'(q MAINPICMALHSSLHSLSHCC5} LLϠҠŠҢà5}宠ӪЪêŠ &&;AB,;@,;@U,AA6.7h01DZ)ʊXiYi5}`@@6.6hBDEHI  <(OO67@U,.<   5} ĩ2OO67A,.:AU,FQQ67A),.>`RɥPee`/5}eePGG67A,.4(eeЕeeZ%-A6AV"!5}% dGG162,16,169,1,157,72,3,169,0,157,73,3,32,86,228,48,1,96,104,104,96ns+@%@$6-F:A`,36-F:A5}a,B6-F:@,Q6-F:@,]6-?:C:,,sàŢxA&@!+3AR@EA5} AHT6-F:A`,c6-F:Aa,r6-F:@,6-F:@,c-(%+ϠҠŠҠ+H(5}c(->5 (or5($ to return to loaded pictureg)(!When viewing the 5}picture, press:Q(# to return to this screen.g( Ԡ to quit.'AAH'A A65}@-@@K66.D:A@ -@$@2AR7(A A (>:,5} 6-B:,AdAUDF:B2y,"@$A 0A: AD A@ F:Ad,"AUA5}$)@$"AUAp[ @=!@d* @)+*!@E* @Y,Q67%@,.>:,[ A5}'"A&67,.' A AAR@(,* Ap*@@5}6 A@E A`6-?:C:,,$@E䠦J!6-F:A ,!6-F:A,T9F:5}B2y,"@,A%@26+9^ F:B2y,@A@hu@@--@&@5}@( LA`XAab A`ul@@'A`3Aa65}$làà堢ŢD:MILOADl@@'A`3Aa64Hq./TEMPNSPITCSCNCCNSUSCXPONTYPOYPRNTWTTEMMOVCLRESTYPNTIDOSNDESCCHSELECKEYCHOR9}SRSCHRBASPMBASFIRSTTIMNSCALECCFOSOSICIDLDHDLDH9} 9} !"#$%&9}'()*+,-./01234569}7 KKŠΠᬠà糷à堵qqź9}報婠򮠛 AP2F:@ , @P<6-F:9}Ad,$c$$d> -&6-@:7,,%"AT+17; >$n["AU9}@:7%,,+@:7%,,?@:7%@,,M6-%@Q [ Ax;6-!A(#6-&A(/"A%;69}-A(" @ "(Ap!@ AP{6.BBT6-@:7,,+6-!A1/=6-&A9}(O67@,.PT[!@ri6-&@r{67@,.bTK6.7&,A6-?:C:,:%A(,/9}67@,.>:,E @)A@J67@,.`%67@,.1!@ B67@ ,.`S67@ ,._9}"@2p67@,.`67@,.T)67@,.)67@,.L^)67@,.)67@,.s9}hI6-@&@ $767@,.>:%A(,I67@,.>:,r%67@,.%67@,.|6.7%+(,9},HH6-?:C:,:AT%,"6.+67,.467,.7$!-&@ ( !$*@A9}'B7tA*$9@K-A@d9AAdAU$Q6-@69}-6-!6-'6-66. quarterB6-@Q:6.BBT76.:$L#9}6-C:.9/5 >Z#( -?!6*,7%@@4L좠!!ΠТ" 6-R:,""@9})A07"@!@#6-&- A7 A7"@ @#6-%- A7 A9}O6-F:Ad,AU0AdAUE6-?:<<@"<,O A`(T:,A & A9}0(A:AAAA A0A@APA`ApAAA9}AA0AAAAAAAA CD! 6-6. whole! A9}MNa 6-6- A%6-%7-@@"M(chord off W A a A%X 9}Aab 6-6. half Akl(6-@6. quarter( Au۸9}v'6-@6. eighth' A۶囀)6-@6. sixteenth) A۳ݲ囊*9}6-@2 6. thirty sec* Aۮݧ囔 6-( A回6-+(*(, A9}ۣݠ 6- Aݠ 6-6 A웼 6- A  6-9}6- Ac 6-6.#@A/6-@A6-%+"@,G6-M6-S6-Y6-c A 9} AI)6-?::,67,.>:,*67,.6"@ B6-@;67,.>:,;67,.>:@:7,,%A(%@r$+",,9} 6-%(6- A 6.7%+(,, A'6-%%+,!@' AP A9} AK۪LN A (*( enter chord D( then press returnN A%VS A9}PA6-+6. G6-C: *~abcdefgmj+-#67,SAU`i )-6-?:<<@%@$+!,<,[%9}A APA`A`Api"A j;!@6./6-@:7&@,,;t=67<9},.>:,!-&%@ +(>:,36-%= A ~!A% 6- A  A0%㛒> !67&,.9} '-&@ .(66-&> A V6-@:,&@"6.%#! 06-%@:7,,<6-@H6-@9}V"A> -&%7<,46)7<,47>6-@ %+7<,47,M  6-6-@:7,,56-+"@,&+"@59},=6-%AM6-@7<,46-@(7<,4d6-@(6-@7<,46-@9}7<,0mA,7%<%,4  6-@,6-@,B:,!% 7%<%,4aj,6-@ ,7%<9}%,4 6-@,6-@,7%<%,4 6-@,6-@ G 6- A!67%,.7,167%,.7&,9}G67%@,.7&,(!6-%@6-!67,.2QA@dQ6-?:46-@6-@h% )"AU% ArS"A&!@#6-&1-%@9};( I-%@S A@|C#!@) @e)!@C%+"@',A@A@467,.>:,"(9}>:%A(,*6-%4 A@ 4D:6.C:L A@ &@,"@3:B6-%L A9} 6-&((?6-?:<<-@PB 1 6- Ap AP' A1 A 9}W-@"&(press to exit0 AP7)C@M AW A6-?:B, 9}J-@-2@@@5-9 C2G J$ , A%-@ ) A,$ 9} / +@AY%AV/ A@ 4Ap(%6-F:A`,46-F:Aa, A6-6+9},((} the musician ll:-@@"A( i)6-?: 1>lx 1>lx9}xI6-$AV6.(67A%,.167,.I6-?:}5/<5yQ@@yfD@DUQUHHl`[HHrLHL`[`lQyff[̭lfUHl[}-}}    ԏ  >}   ԋ  ԏ  <5VDATMOVPMBASSPABARBhdBh@@$ KKӢB}󬠠à묠àH;A,H6-C:.hhhhhhh`,"B }AF:A@,"+@(s=6.3h ! ԍЌнн н#LU67@4,.>:@4,s6-?:',A@P'/A0F+}@P@9/A0@`'/A@`9/A@PD$F @H',@P@U'/A@UF,}J$P-@R-@T0@U!!2@ @@&V X w$xF-} +@.-@@.(HOW ABOUT THIS...$ +@0@0F.}@@-@A@@#,@ #/@$A@ -@0@F/}"-@ , .-@0-@@20@&3-@ 4 6F0} ;0@?$@J +@O 0T#-@@#(SOUND!Y-@P F1}^-@c2@@%@h 0m-@ r |-@62@ F2}-@  $ +@(-@((YOU HAVE A CHOICE%-@%(F3}OF 8 DIFFERENT-@('VOICES'-A (-@((HIT IT MAESTRO...$F4}Š 6-@ A   6- A   6- A -@P  6-Q:,2@&F5}(S:,)(T:,A0 Ab 2k$lv +@" -"(YOU CAN EVEN HAVE+F6}-@@+(UP TO 4 VOICES(-@((AT THE SAME TIME!-A 2AP@F7}-A 2@@@@-A 2@@@-A F8}%%2@A@@-A -@ %%2AP%@%'@!!2@@F9}&@@!!2@@ %@//2@A%@$@@(S:,)(T:,AF:}  AR 2 22@2@$+-F;}@( ( THANK YOU( ( ((,)(! ANOTHER WRIGHT-ON PRODUCTION,(-@6 F<}2@ @-@@   "-@@6$ 0& * 6-3$ D:F=}SLIDSHOW@-@@   "-@@6$ 0& * 6-3$ D:D DISK CONTENTS - Front Side of Disk1. DISSOLVER CRE. Creates BASIC sub-routines for spiral or sweep dissolvesof any graJ?}phics mode screen. Excellent!Refer to magazine for "how to use".(Fred Pinho, ANTIC 1/86, p18)2. DISSOLVER DEM. A clever J@}demo of the"Dandy Dissolver". (Fred Pinho, ANTIC,1/86, S*P*A*C*E mods)3. FACE. "Face of the Galaxy" - Musicwith graphicJA}s. (Gary Gilbertson)4. FADER II. An enhanced ML Hi-Res picloader with dot-by-dot "lapse-dissolve"effects. To use: TransfJB}er to a picturedisk & rename AUTORUN.SYS. Compressedpictures (ie, KoalaPad, Micro Illustr.)must use a ".PIC" fn extender. JC}Normalpictures (ie, Micro Painter, any 62sector pic) use ".*IC" fn extenders.Reboot with this pic disk to view your"slideJD} show". Press OPTION to hold apicture on the screen; START to skipthe pause between pics; or SELECT to goto DOS. (PatrickJE} Dell'Era, ANTIC 5/85)5. FADER MOD. Use to change FADER II'spausing rate. Self prompting. BASIC.(Patrick Dell'Era, ANTICJF} 5/85)6. 3D GRAPHICS. A 3-D graphics editor.(Paul Chabot, ANTIC 10/85, JC mods)7. G.U.P. The Graphics Utility PackageJG}is a ML program which will speedup yourBASIC graphic commands & adds ten newones: circles, squares, patterned fills& more!JH} Read the magazine article forfull tutorial/instructions. For bestresults rename to AUTORUN.SYS & rebootto load. If loadedJI} from this menu, youmust press RESET upon load completion.(Darek Mihocka, ANTIC, 6/85, p45)8. G.U.P. DMO. A demonstratioJJ}n of someof G.U.P.'s capabilities. Load G.U.P.(per above) prior to running this demo.(Darek Mihocka, ANTIC, 6/85)9. HORSJK}E. A galloping horse demo usingcharacter graphics. (B.R.A.C.E.)10. MILOADER. Loads/displays Micro-Illustrator (KoalaPadJL}) pics. (ANTIC&JC)11. MUSICIAN. A "Music construction"program. Integral command list. Allowsediting of last note only! TJM}his versionis not compatable with the original!(A.Giambra, ANTIC, 6/85, pg37, JC mods)12. LAURA. Demo tune for The MusicJN}ianabove. Load "LAURA" to hear it play orto edit. (ANTIC disk, 6/85, JC mods)13. PENCILS. A sharp GTIA demo! (GreggTravJO}ares, ANTIC disk, 6/85, JC mods)14. SLIDE SHOW. A BASIC demo using theAtari to present computer "slides".(Steve Wright, JP}from B.R.A.C.E. disk) DISK CONTENTS - Back Side of Disk(NOTE: These programs should be loadedw/o BASIC to insure propeJQ}r operation.)1. FUJIBOINK. Famous Atari demo with abouncing multi-color "Fuji" logo.(Park '86)2. MCP. Multi-Colored PJR}layers demo.Brilliant colors. ML. (ANTIC 2/86)3. SPLASH. Splash colors on a Gr.7+screen. ACTION. (ANTIC, 4/85)4. SWAN.JS} Another sharp Atari demo withflying swan & twirling Fuji. (Park '86)5. VIEW 3D. Create 3-D wire frame picsin Gr 8/7+. JT}Magnify, shrink, rotate, &shift viewing position fairly fast. Seemagazine article for details. ACTION.(Paul Chabot, ANTIC JU}6/85, p37)6. HOUSE.V3D. A sample VIEW 3D image.(Paul Chabot, ANTIC 6/85)rticle for details. ACTION.(Paul Chabot, ANTIC HM