@L}5 _$% l0$)$$Hȱ$ UhL" `e$$%`$%`  R@P!( L(1   Y I`  d  Ld M * @  $ % CC$$)%1 Udߥ$9%: !0 S$% DD˙`  }J)Lr d M * @  $ % CC$$)%1 Udߥ$9%: !0 S$%} DD˙`  }J)Lr J  ((  p L ()   J}L= ( L 0q A    IB JC;? D W } LL  ` W )LA!  ߰")-݆ p" } $G@LL 08`Q")<2Q0 -G$Ș݆ UL# ; p8(()(0ʥ)NQ` }$GȘ݆LU )L ݆ L GȘ ݆LL )W>Z   HH)H }p h  hyhy D L> L JJ    ! LA*` BF }7'8  M HN H` 8 Z  \LdJJ!"! GFE@F (!L }EE !E^ ^ E E7EȩEdE/EȩE  D } .L }  ;F d  ;?F7F? ( .   Z D LL d } . D  L    p  E` , d)  D L) 0BM݊L݉} ML  N݆ L NLML [ TEqEHȱEqEh 0Gȹ G} HLL GɛL  LFREE SECTORS G) *Gȩ GȽG GȌ*jj >G} C8jJ3j2CD( C202C ԠBX` N 1? l LlD:RAMDISK}.COMLu L1 L ;LHL  T`  `1  ɐ     `TU  } L ? .  t`GBJ ~DEHI B V0dV!}QDEHI VF9 ,0 ,0 s0hhL  L` H hDHEh"}DEL8HI4 0 HI,0 0  9 .G VLO#},0 L4*IJ`llD1:AUTORUN.SYSNEED MEM.SAV TO LOAD THIS FILE.D1:MEM.SAV J y08 B|DEHI$} V0 0`B;DEL`?<0LV`@ʆ v s? F0Ξ05: [ BDEHI%} VY8 B V  @  /DE `E:D1:DUP.SYSERROR-SAVING USER MEMORY ON DISKTYPE Y TO &}STILL RUN DOS B;DE J  (` 9 V⪍ ઍ  -'}LLu ÝDEHILV 9 .l 9 .l  `` s$B BH(}I|DE V BLV nB,DE JLV B V BLVDEIʩ BꭝLu  } 3E:}DISK OPERATING SYSTEM II VERSION COPYRIGHT 1984 ATARI CORP.A. DISK DIRECTORY I. FORMAT DISKB. RUN CARTRIDG*}E J. DUPLICATE DISKC. COPY FILE K. BINARY SAVED. DELETE FILE(S) L. BINARY LOADE. RENAME FILE M. RUN AT ADDRES+}SF. LOCK FILE N. CREATE MEM.SAVG. UNLOCK FILE O. DUPLICATE FILEH. WRITE DOS FILES P. FORMAT SINGLEL !N',}#"&))9(&*)/h)''-&؆莟R'S  vL/ˢ L }Insert DOS 2.0s, type Y Λx -}DEfHI 1莏#q! @ y0ɛ8A0,' ȅ 1 1ild! 1L!NO SUCH ITEMSELECT.} ITEM OR FOR MENU! 0 .z:*{}.|{ 1 0 0JB 18L%|DL/}%DIRECTORY--SEARCH SPEC,LIST FILE?[# 0 0 &|D3" 1L!NOT A DISK FILEN !B 1L!E# 1 !BD0}ED:}:1BJ|DE 1DEBHI 1 h0ߢ 0.1}  0?詛 1 y0YЛ 1 ;#L" ;#L! BL1TYPE "Y" TO DELETE...DELETE FILE SPEC2}COPY--FROM, TO?OPTION NOT ALLOWED736 FREE SECTORS COPYING---D1:DIRECK.COMl# 0|D .L/%#3}##JB|DE 1BHID#E 1#0: B 1L!#͑### B 1#c$0SY4}S1}:## # # .#Ƚ# # 𩛙## 1,#PD#ELJ- <.BJD#E 5}1 1HH 0hh|DL%1}:̳# L% #D#EL% 1 0 . .0O% 1L!WILD CARDS NOT A6}LLOWED IN DESTINATION 0 <.|K}N 2 FORMAT. t* 5) 1L!`) 0NΞ 0 L1) 1 L!BAD LOAD FILELOAD FROM WHAT FILE?) 0 ?}0#B 1L!WHAT FILE TO LOCK?) 0 0$B 1L!WHAT FILE TO UNLOCK?DUP DISK-SOURCE,DEST DRIVES?TYPE "Y" IF OK TO US@}E PROGRAM AREACAUTION: A "Y" INVALIDATES MEM.SAV.FE! +L1   `*  70 2 2A} 0.* 1 y0 0)INSERT BOTH DISKS, TYPE RETURN^, 1 y038逍 N, 1L! ,B}C, t*  Lx+, 0 ^, 1 y0 , ,0,0 ,L+ ,I0 ,Vǭ0C}Ξ, 0 }, 1 y0C,ШC, 0K'!" H H 'h h Lx+!EF 5L1L!D,I,HhD}` NOT ENOUGH ROOMINSERT SOURCE DISK,TYPE RETURNINSERT DESTINATION DISK,TYPE RETURNE}`  `8 rL1`-* 1P* 1 y0Y`hhL!NAME OF FILE TO MOVE?- 0 0|DL% <.F},^ 1 70 0 .@L# .BJ 1  DEHIB V L1 ,} 1 70,L.  G}JB|,#P#DE 1 HI BDEHHII 1 B 1 ,^ 1 70,0La- B V,#PH},^ 1 70 0L#L!-* 1P* 1 y0Yj383}mm ݭI}}`8}``|* ? ɛ,`|:-)| / 1L!`DESTINATION CANT BE DOJ}S.SYS0 0H{ 24Δ 28/L!/) 2 Π 2 0 ξK}hAΞB,0 J 1 BDEHI,HÝDE 1HIHIDELSAVE-GIVE L}FILE,START,END(,INIT,RUN)O S0 1`BDEPHI V` S0H 1 L!M}0 0 1L~0`PLEASE TYPE 1 LETTER,0`hhL! 70 1L0L<1 ,;ɛ7,"ɛ:ݦ1ݥN}A"D|ݤD|ȩ:|ȩ|ɛ,,(/+.ީ1 1,ɛ`轤{NAMEO} TOO LONG B VL!` L1I H1EΝDL1|mDiE` V0`8d/8 i:222 1 LP}!ERROR- 138ɛ+,' 20*.. өr2 1``2TOO MANY DIGITSINVALID HEXAQ}DECIMAL PARAMETER800 0 8 00`,0'D800 H,ɛh`2L1NEED D1 THRU D8uR} ECIMAL PARAMETER800 0 8 00`,0'D800 H,ɛh`2L1NEED D1 THRU D8u/* CLR_SCRN.C Copyright 1990 by MAX Systems and Marty Albert. May be freely used and distribuT}ted by all so long as credit is given. This routine allows for a simple way to clear the screen. U} You could, of course, imbed the 'printf("\f");' command in your program at the point that you wish to clear the V}screen, but this will use up the string memory for that routine. By using this routine, your string memory is not W} reduced. To clear the screen, make the call: clr_scrn(); Screen colors, graphic mX}ode, margins, etc. are unchanged. The cursor is in the upper left corner. */#define NOARGC;#define FIXARGC;Y}clr_scrn() $( printf("\f");return; $)n the upper left corner. */#define NOARGC;#define FIXARGC;7/* CURSOR.C Copyright 1990 by MAX Systems and Marty Albert. May be freely used and distribute [}d by all so long as credit is given. This pair of routines do nothing more than turn the cursor on a \}nd off. Calling the routines is simple: cursor_on() or cursor_off() ]} */char * crsinh=0x02f0;cursor_on() $( *crsinh=0;return; $)cursor_off() $( *crsinh=1;return; ^}$) */char * crsinh=0x02f0;cursor_on() $( *crsinh=0;return; $)cursor_off() $( *crsinh=1;return; /* DISBREAK.C Copyright 1990 by MAX Systems and Marty Albert. May be freely used and distributed b`}y all so long as credit is given. This pair of routines will allow you to disable and enable the BREAK kea}y from within your programs. Once disabled, the BREAK key stays disabled until you re-enable it or RESET is pb}ressed, even if your program is exited. To disable the BREAK key, make the call: d_break(c}) To enable the BREAK key again, make the call: e_break() It is suggested that yod}u always enable the BREAK key before you exit your program. */int oldbreak;int * vprced=0x0202;int * brkkye}=0x0236;d_break() $( oldbreak=*brkky; *brkky=*vprced;return; $)e_break() $( *brkky=oldbreak;rf}eturn; $)reak() $( oldbreak=*brkky; *brkky=*vprced;return; $)e_break() $( *brkky=oldbreak;r/* SET_SCRN.C Copyright 1990 by MAX Systems and Marty Albert. May be freely used and distributh}ed by all so long as credit is given. This routine allows for a simple way to set a number of valuesi} for the graphics 0 screen. Included are setting: Left Margin Colors (all 5 color j} registers) Cursor Inhibit Flag The calling format is: set_scrn(lm,c0,c1,c2,c3,c4,c5k},ci) where: lm = Left Margin Value c0 = Color 0 (peek 708) c1 = Color 1 (peek 709) c2 = Color l}2 (peek 710) c3 = Color 3 (peek 711) c4 = Color 4 (peek 712) ci = Cursor Inhibit (0=on 1=off) m} Note that ALL parameters MUST be passed or unexpected results WILL be had! As an added function, the set_sn}crn routine saves all values in temporary locations from where they can be restored by the sister routine res_scro}n. By calling set_scrn at the start of your program and res_scrn at the end, you can set the screen to yop}ur own colors, margin, etc. and then restore those that the user had set before running your program. */cq}har * lmar=0x0052;char * col0=0x02c4;char * col1=0x02c5;char * col2=0x02c6;char * col3=0x02c7;char * col4=0x02c8;char *r} crsinh=0x02f0;char tlmar;char tcol0;char tcol1;char tcol2;char tcol3;char tcol4;char tcrsinh;set_scrn(lm,c0,c1,c2,s}c3,c4,ci) $( tcol0=*col0; tcol1=*col1; tcol2=*col2; tcol3=*col3; tcol4=*col4; tlmar=*lmar; tcrst}inh=*crsinh; *lmar=lm; *col0=c0; *col1=c1; *col2=c2; *col3=c3; *col4=c4; *crsinh=ci;return; $u})res_scrn() $( *lmar=tlmar; *col0=tcol0; *col1=tcol1; *col2=tcol2; *col3=tcol3; *col4=tcol4; v} *crsinh=tcrsinh;return; $)mar; *col0=tcol0; *col1=tcol1; *col2=tcol2; *col3=tcol3; *col4=tcol4;  } TYPE.ME File For CC65 Routines Group #1 August 15, 1990 The x}files and source code included in this ARC are copyright 1990 by MAX Systems and Marty Albert. They may be freely diy}stributed to and used by all so long as proper credit is given. This is Group #1 of what I hope will bez} a growing number of routines for use with the CC65 C Language. While not a part of this Group, users are encou{}raged to get the 'rand()' routines for use with CC65. Included in this Group are the following routines: s|}et_scrn - Sets a number of GR.0 screen parameters cursor - Turns the cursor on and off disb}}reak - Disables and enables the BREAK key clr_scrn - Clears the screen If you have any suggestions ~}for new routines that you would like to see, please let me know! I can be reached on GEnie at address: } MARTY.A or in the Atari 8-bit RoundTable. Enjoy! now! I can be reached on GEnie at address: D Game Controller Functions for use with CC65 The Game Controller Functions} consist of two object files for use with the CC65 C language for the Atari 8-bit computers. These two object fil}es provide support for the use of both joystick and paddle controllers identical to those used in BASIC and Action!.} The first file is STK_FUNC.OBJ and includes two routines; stick(#) and strig(#). These routine are used as follo}ws: pos = stick(#) trg = strig(#) where "pos" is the position of the stick, "trg" is the s}tick trigger <0=pressed, 1=not pressed>, and "#" is the port number to read. "#" should have a value of 0 through }3 for the 4 possible ports. The second file is PAD_FUNC.OBJ and includes two routines; paddle(#) and ptrig(#). Thes}e routine are used as follows: pos = paddle(#) trg = ptrig(#) where "pos" is the position of} the paddle, "trg" is the paddle trigger <0=pressed, 1=not pressed>, and "#" is the port number to read. "#" shoul}d have a value of 0 through 7 for the 8 possible ports. Note that there is NO check done for a valid port number. It} is up to you to make sure that you are indeed passing a port number in the valid range. Also remember that the }XL/XE series have only 2 stick ports <0 and 1> and 4 paddle ports <0 through 4>. Calling the routines with invalid} port numbers will not generate any sort of error, but the values returned will be somewhere in left field! } In the above examples, the "pos" and "trg" values should have been declared as either type char or int. The ML }routines will clear the high byte so that if you use a two byte value you will still get the }right results. One last note... It seems that there is some problem or another with the CC65 printf function... If }you try to do something like: printf("Stick 0 = %u\n",stick(0)); you will get some crazy output. If, however, you t}ry: char trash; trash=stick(0); printf("Stick 0 = %u\n",trash); all will be well. Enjoy! } ...Marty... sh; trash=stick(0); printf("Stick 0 = %u\n",trash); all will be well. Enjoy!  Documentation For GRAPH.OBJ Atari Graphics Support for }CC65 C Language The routines contained in the file GRAPH.OBJ will allow you to easily use the various Atari Graphics }commands in your CC65 programs. Where possible, the commands have been made to closely resemble those found in Atari BASIC } and/or in the Action! language. What follows is a list of all the available commands and how to use them. } SETCOLOR Just like the BASIC and Action! commands. Call by: Setcolor(register,hue,luminance) } COLOR Used to select a color for PLOT, DRAWTO, etc.. Call by: color(register) GRA }PHICS Used to set a graphics mode. Call by: graphics(mode) POSITION Used to position }to any point on the screen for the NEXT character to be read or written. Call by: position(column,row) } PLOT Used to position to any point on the screen AND to place a character there in the current COLOR. Call }by: plot(column,row) DRAWTO Used to draw from the current location to any other location } in the current COLOR. Call by: drawto(column,row) LOCATE Used to get the value of the c }haracter at any location on the screen. Call by: value=locate(column,row) FILL Used to fill } an area of the screen with the current COLOR. Call by: plot(UL_column,UL_row) fill(LR_column,LR_row) w }here UL=Upper Left and LR=Lower Right. See the note below for the fill command. NOTE: The fill command is NOT 100% } debugged yet, but I'm tired of messing with it for now. When I get it fixed 100%, I will re-upload it. The other function }s all work properly... Besides, I can't recall EVER using the fill function in ANY language! ;-) ANOTHER NOTE: Rem }ember that to use the locate command in mode 0, you must first give a graphics(0) command. I'll be damned if I know why! } Enjoy! ...Marty... 0, you must first give a graphics(0) command. I'll be damned if I know why! .m+ POPAX _GRAPHICS9 _SETCOLOR_COLOR2_PLOTz_DRAWTO_FILL _POSITIONm_LOCATE$}S: @  @  @    m  ` @ ` @ ` B V`B"D!$}E K)I J V` @T @UV` m`BHI  V` m `B JK V` m `$}B JK V` m`BHI V` m`BHI  V` m `B JK V` m `$).$POPAX_PADDLEPUSHAX_PTRIG  @p B` @| B`B JK V` m `(Z} READ.ME File For CC65 Group #2 Copyright 1990 by ,} MAX Systems and Marty Albert The files contained in this ARChive are copyright ,} 1990 by MAX Systems and Marty Albert. They may be, however, freely distributed to all so long as the complete A,}RChive is kept together and unchanged in any way. You may use these routines in your own programs so long as proper ,} credit is given. This is the second set, albeit a small one, of support files for the CC65 C Langage for,} the Atari 8-bits. This set includes three *.OBJ files: STK_FUNC.OBJ PAD_FUNC.OBJ ,} GRAPH.OBJ STK_FUNC.OBJ and PAD_FUNC.OBJ allow access to the paddle and stick ports of the Ata,}ri and are fully documented in CONTROL.DOC. The real gem here is GRAPH.OBJ that allows access to the Atari graph,}ic modes and commands. See GRAPH.DOC for full documentation. Have fun! ...Marty... ,}c modes and commands. See GRAPH.DOC for full documentation. Have fun! ...Marty... ,-$POPAX_STRIG _STICKPUSHAX @x C` @ C` ...Marty... 0Y BLOCK.OBJ Block Memory Routines4} for use with The CC65 C Language For Atari 8-Bits 4} This software is copyright 1990 by MAX Systems and Marty Albert. It may be freely distributed to 4}all so long as it is not sold and remains unchanged in any way. You may use these routine4}s in your programs so long as credit is given. These routines may not be used in programs4} to be sold without the express consent of MAX Systems and Marty Albert. 4} BLOCK.OBJ contains three routines to make manipulation of blocks of memory easier for the C program4}mer. Note that these routines are NOT included in the "standard" C libraries and may not be supported on 4}other computer types, so use care if you plan to port your program(s) to other machines. 4} The three routines included here are: s_block 4} z_block m_block The function and us4}e of each is covered below in detail. s_block 4} This routine will set any block of memory to any value defined by the user. The routine is called b4}y: s_block(address,length,value) Where "address" is the starti4}ng address of the block, "length" is the length in bytes of the block, and "value" is the value to set th4}e block to. For example; s_block(10000,256,100) would set the me4}mory block from 10000 to 10256 to have a value of 100. Note that "address" an4}d "length" may have any value from 0 to 65536 and "value" may have a value of 0 to 255. 4} z_block This routine will set any block of memory to a v4}alue of 0. The routine is called by: z_block(address,length) 4} Where "address" is the starting address of the block and "length" is the length in bytes of the block. 4}For example, z_block(10000,256) would fill the memor4}y block from 10000 to 10256 with a value of zero. Note that "address" and "length" may ha4}ve any value in the range of 0 to 65536. m_bl4}ock This routine will move or copy one block of memory to another block of memory. The ro4}utine is called by: m_block(destination,source,length) Where "des4}tination" is the starting address of the target block, "source" is the starting address of the source blo4}ck, and "length" is the length in bytes to move. For example, m_block(12000,4}10000,256) would copy the 256 bytes starting at address 10000 to the 256 bytes starting at add4}ress 12000. Note that m_block does a "bottom up" move of the data. That is, in the above 4}example, the value at 10000 is copied to 12000, then 10001 to 12001, and so on. Also note that the data a4}t "source" is left intact after the move is completed. A note about4} memory usage... As you may have realized just from what the above routine do, a certain number of 4} page zero locations were needed. The "spare" floating point register at $DA through $DF was selected. The reg4}ister is used only for temporary storage and counting while the routine is being run. The routines do not4} expect any values to be in the register, so use of the block routines should not interfere with floating4} point use in any way. Enjoy! uld not interfere with floating4T>xPOPAX_Z_BLOCK6_M_BLOCK@PUSHAX_S_BLOCK @ކ @܆ @چ۠ޑ8}ܥ8` CL  @܆ @ކ @چ۠ޑܥ8`ޑ8m GSOUND.OBJ Sound Routines for the GUMBY<} Chip for use with The CC65 C Language For Atari 8-Bits <} This software is copyright 1990 by MAX Systems and Marty Albert. It may be freely distribut<}ed to all so long as it is not sold and remains unchanged in any way. You may use these r<}outines in your programs so long as credit is given. These routines may not be used in pr<}ograms to be sold without the express consent of MAX Systems and Marty Albert. <} There are three routines in this file that provide support for the use of sound in CC65 C lan<}guage programs in mahines that have the GUMBY chip installed. The routines included here are: <} g_sound g_sndrst <}gumby and will be covered below. g<}_sound This routine is identical to the Atari BASIC command. The routine is called by: <} g_sound(voice,pitch,distortion,volumn) The only special that you need<} to know here is that "voice" must be in the rangeof 0 through 3. Other values will simply return to you <}with nothing being done. g_sndrst <} This routine will turn off all 4 voices with one command. Call the routine by: <} g_sndrst() gumby <} This routine will tell you if the computer has a GUMBY chip installed. Call the routine by: <} trash=gumby() where "trash" has been declared as a type char variab<}le. The value of "trash" will be 0 if a GUMBY chip IS installed or 1 if a GUMBY chip is NOT installed. <} Note that gumby should be called only ONE time at the start of your program! Otherwise, you<} will get false results on later calls. When you call the g_sound r<}outine, the "spare" floating point register at $DA is used for temporary storage. <} Enjoy! t register at $DA is used for temporary storage. <+2a{_G_SOUND _G_SNDRST?POPAX_GUMBYJ B B B Bݥ$ ҩҥ)ݥ) ݝ@}ҥ۝`` L L`` B B B Bݥ$ ҩҥ)ݥ) ݝ@8 POKEPEEK.OBJ Poke and Peek RoutinesD} for use with The CC65 C Language For Atari 8-Bits D} This software is copyright 1990 by MAX Systems and Marty Albert. It may be freely distributed to all D}so long as it is not sold and remains unchanged in any way. You may use these routines in yourD} programs so long as credit is given. These routines may not be used in programs to be sold D} without the express consent of MAX Systems and Marty Albert. D} The three routines in this file allow you to use the BASIC style PEEK and POKE commands in your CC65 C language D} programs. This can make it much easier to port BASIC and Action! programs to C. D}NOTE: These routines are NOT in the "standard" C library and may not be supported on other machine types. D} Use with care if you plan to port your programs to other machines. The use of the D}routines are: poke(address,value) char value=peek(address)E} int value=peekc(address) where "address" is the memory location to look at E}and "value" is the value of that location. For the poke and peekc commands, boE}th "address" and "value" may have value of 0 through 65536. For the peek command, "value" will be in the E}range of 0 to 255. In a nut shell, use poke to stuff any number into any location; use peE}ek to find the byte value at any location; use peekc to find the two byte value at any location. E} Enjoy! use peekc to find the two byte value at any location. D0+?J_PEEK1POPAX_PEEKC_POKE A܆ Aچܑ۠ȥݑ` Aچ۠څȱڅݥܦ` A چ۠ڢ`H} CC65 Support Files Group #3 Copyright 1990 MAX Systems MartM}y AlbertThe programs and documentation inthis ARChive are NOT in the PublicDomain. They are copyright 1990 byM }MAX Systems and Marty Albert. Theymay be freely distributed to all solong as they are not sold and areunchanged.M }Permission is granted for use ofthese routines in programs offeredfor Public Domain or "freeware"release. M } These routine may not beused in commercial or "shareware"programs without the prior permissionof MAX Systems and MM }arty Albert.Permission is granted for OFFICIALAtari computer user groups to sellthese routines for a nominal priM }cefor the sole purpose of raising fundsfor the club.These routines may be made availableon the various online data seM}rvicessuch as GEnie and CompuServe and on"pay BBSs" at their normal connectfees.The offering of these routines by tM}heso-called "Public Domain" sellingcompanies is expressly forbidden.This is group #3 in a continingseries oM}f support routines for theCC65 C language for the Atari 8bitcomputers. Included in this group issupport for sound,M} both "standard"Atari sound and the GUMBY chip sound;support for the manipulation ofblocks of memory; and a PEEK anM}d POKEcommand set.Files in this ARChive are:SOUND.OBJ - Sound supportSOUND.DOC - Docs for aboveGSOUND.OBJ - GM}UMBY supportGSOUND.DOC - Docs for aboveBLOCK.OBJ - Block memory supportBLOCK.DOC - Docs for abovePOKEPEEK.OBJ - PM}OKE and PEEKPOKEPEEK.DOC - Docs for aboveREAD.ME - This textAs with prior groups, these routinesmaintain, as muM}ch as possible, thesame format as similar commands foundin Atari BASIC and the Action!language. This is to make M}it easierfor programmers to convert BASIC andAction! programs to C.Note that these routines are NOT apart of the M} "standard" C library.They will most likely NOT besupported by other machine and Ctypes, so if you plan on M}porting yourprogram(s) to another machine, usethese routines with care.All of the routines in this groupwere wrM}itten in machine language andcompiled with the RA65 program in theCC65 set.Source code is available tointerestM}ed and qualified developers.Please refer all questions andcomments to me on GEnie at GEnie Mailaddress MARTY.A orM} in the Atari 8-BitRoundTable Bulletin Board, CATegory 3TOPic 48.Enjoy! ...Marty...address MARTY.A orLj SOUND.OBJ Sound Routines Q} for use with The CC65 C Language For Atari 8-Bits Q} This software is copyright 1990 by MAX Systems and Marty Albert. It may be freely distributed to all Q}so long as it is not sold and remains unchanged in any way. You may use these routines inQ } your programs so long as credit is given. These routines may not be used in programs to Q!}be sold without the express consent of MAX Systems and Marty Albert. Q"} There are two routines in this file that provide support for the use of sound in CC65 C language prograQ#}ms. The routines included here are: sound Q$} sndrst and will be covered below. Q%} sound This routine is identical to the Atari BASIC command. The routine is cQ&}alled by: sound(voice,pitch,distortion,volumn) The only special thQ'}at you need to know here is that "voice" must be in the rangeof 0 through 3. Other values will simply retQ(}urn to you with nothing being done. sndrst Q)} This routine will turn off all 4 voices with one command. Call the routine by: Q*} sndrst() When you call the sound routineQ+}, the "spare" floating point register at $DA is used for temporary storage. EnQ,}joy! point register at $DA is used for temporary storage. EnP#J[POPAX_SOUND_SNDRST? @ @ @ @ݥ$ ҩҥ)ݥ) ݝҥ۝`U.}`POPAX_SOUND_SNDRST? @ @ @ @ݥ$ ҩҥ)ݥ) ݝҥ۝`T B%DOS SYSB*)DUP SYSBSCLR_SCRNC BZCURSOR C B_DISBREAKC BgSET_SCRNC B wTYPE ME BCONTROL DOCBGRAPH DOCBGRAPH OBJBPAD_FUNCOBJB READ ME2BSTK_FUNCOBJB%BLOCK DOCBBLOCK OBJBGSOUND DOCBGSOUND OBJBPOKEPEEKDOCBPOKEPEEKOBJBREAD ME3BSOUND DOCB-SOUND OBJ