@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 Supplementary Documentation for Ace C Libraries by Mark Miller 10/5/9T}1 ------------------------------------------------- This documentation is derived from the U}Ace C doc's included with the Ace C package. I decided to make this documentation to bring various pieceV}s of information from the Ace C doc's together into one cohesive document that can be used for reference. I W} gave more detailed descriptions of each function where I could. I've also categorized the functions and alphabeX}tized them to make the function calls easier to find. You will notice some key phrases in the descrY}iptions of these functions. "Is the same as" means that the function (as far as I can tell) works the saZ}me way as a corresponding function found in most other "standard" C implementations. "Is similar to" mea[}ns that the function works almost the same way as a corresponding function in "standard" C, with a few exceptions.\} An example would be a function that does what a "standard" C function does, or something similar, but ret]}urns a different result. "Is like" means that the function does something like a corresponding function ^}in "standard" C, but does not work the same way. An example of this is the atof() function. It converts_} a floating point number in a string to a float-type (6 character array). The corresponding "standard" C function `}atof() does the same thing except it converts the string to a _number_ of type float. There is a distinca}t difference in what they do, technically, but they _functionally_ do the same thing, or almost the same b}thing. They do it in different implementations. All values returned from these library functions are of typec} int. The types of values passed in to these functions are pretty much by my guess. I decided on the tyd}pes according to the descriptions given of the functions in the Ace C doc's. For some of the functions, e}C source code is provided (a lot of the functions talked about in the doc's just have pointer references f}to functions in ENGINE.OBJ), so I was able to give the exact types passed in to those functions. Unless otherwise g}specified the functions listed are in the ACECIO library. If anybody has corrections or comments, mh}ail them to me at millerm@mozart.cs.colostate.edu. Character Processii}ng ---------------------- alpha(c) char c; Returns 1 if c is alphabetic, 0 j}if not ('_' is alphabetic). Is the same as isalpha() in standard C. tolower(c) char c; k} Returns lowercase value of c. Is the same as tolower() in standard C. toupper(c) l} char c; Returns uppercase value of c. Is the same as toupper() in standard C. Strinm}g Processing ------------------- atof(fp, asc) char *fp, *asc; Takes the stn}ring "asc" and converts it into a float-type (6 character array), and puts it into fp. Is like atof() in o} standard C. Ex.: atof(fp, "3.14276");. Notice that the string "asc" is more than 6 characters. find(ap}ddr, len, c) char *addr; int len; char c; Looks for character c startiq}ng at addr (start of array) through addr+len. Returns the position of the first occurance of character cr} in the string (where the first character is at position 0), or -1 if not found. Is similar to strpos() in s} standard C. normalize(filename, ext) char *filename, *ext; Converts filename to upt}percase, appends the extension "ext" if there isn't one already, and adds "D1:" to the front if a drive iu}sn't specified. Ex.: normalize(fname,"C") where fname="test" will change fname to "D1:TEST.C". v} sfind(s1, s2) char *s1, *s2; Searches for string s2 in s1 and returns positionw} of first occurance if found, else returns -1. strcat(s1, s2) char *s1, *s2; x} Appends string s2 to end of s1. Is the same as strcat() in standard C. strcmp(s1, s2) chy}ar *s1, *s2; "Subtracts" string s2 from s1. It will return the first non-zero difference. z} Ex.: strcmp("Ab","ab") returns -32. Ex.: strcmp("ab","Ab") returns 32. Ex.: strcmp("ab","ab") return{}s 0. Is the same as strcmp() in standard C. strcpy(to, from) char *to, *from; |} Copies "from" string to "to". Is the same as strcpy() in standard C. strlen(str) char *}}str; Returns length of string. Is the same as strlen() in standard C. val(addr) ~} char *addr; Returns integer value of string at addr. Is similar to atoi() in standard C.} Memory Functions ------------------ clear(addr, len) } char *addr; int len; Puts zero into locations from addr through addr+len. Is the } same as bzero() in C. dpeek(addr) int *addr; Returns 16-bit word at addr. } dpoke(addr, word) int *addr, word; Pokes 16-bit word into addr. Returns previous 16-bit word}. match(s1, s2) char *s1, *s2; Returns false (0) if strings s1 and s2 are different, }true (1) if they are the same. It returns true if s1 is longer than s2 and s2 is in s1. Ex.: match("te}stpattern", "test"); will return true. Is the same as bcmp(). move(from, to, len) char *fr}om, *to; int len; Moves len number of bytes starting at "from" address, to area starti}ng at "to" address. No check is made to see if "from" string is overwriting "to" string. Is the same as memcpy() }in standard C. peek(addr) char *addr; Returns 8-bit byte value at addr. } poke(addr, c) char *addr, c; Pokes 8-bit byte c into addr, returns previous 8-bit byte } value. Input/Output -------------- bgets(addr, len, ioc}b) char *addr; int len, iocb; Gets len number of bytes from iocb channel and puts t}hem into string starting at addr. Returns actual number of bytes transferred. Is like fgets() in standa}rd C. bputs(addr, len, iocb) char *addr; int len, iocb; Puts len number }of bytes starting at addr into iocb channel. Returns 1 if transfer went okay, else negative of error number. } Is like fputs() in standard C. cgetc(iocb) int iocb; Returns a character from ioc}b channel, else returns negative of error number. Is like fgetc() in standard C. cgets(addr, iocb) } char *addr; int iocb; Gets everything up to carriage-return from iocb channel. } Returns the number of bytes transferred. ciov(iocb, command, addr, len, ax1, ax2) int iocb, command}, addr, len, ax1, ax2; Performs CIO (XIO) operation. Use -1 to ignore any operand. Returns 1 if op}eration was successful. close(iocb) int iocb; Closes iocb channel. Is like fclose() }in standard C. closeall() Closes all iocb channels. copen(name, mode) char} *name, mode; Opens file "name" in specified mode: 'r'=read, 'w'=write, 'u'=update, 'a'=append, 'd}'=directory (disk). Is like fopen() in standard C. cputc(c, iocb) int c, iocb;} Puts byte c into iocb channel. Returns a negative number if error occurs. Is like fputc() in sta}ndard C. cputs(addr, iocb) char *addr; int iocb; Sends string at addr to} iocb channel. Returns a negative number if error occurs. Is like fputs() in standard C. getchar() } Returns ASCII value of keypress and echos it to the screen. Is similar to getchar() in standard C. } getkey() Returns ASCII value of keypress, but does not output to screen. Is the same as ge}tchar() in standard C. getname(s) char *s; Requests a filename from the user. String} s becomes input filename. getread(s, ext) char *s, *ext; Gets a filename f}rom the user, normalizes it with the extension "ext", and opens a free iocb channel for reading. String s} becomes the normalized filename. Returns the opened iocb channel number. gets(addr) char }*addr; Gets a string from the editor (E: device) and puts it in the string at addr. The carriage-r}eturn from input is not put into the string (I don't think). Is similar to gets() in standard C. hstick}(n) char n; Returns 1 if joystick is pushed to the right, -1 if pushed to the left, 0 }otherwise. Is in the GRAPHICS library. open(iocb, ax1, ax2, fname) int ioc}b, ax1, ax2; char *fname; Opens iocb channel. "fname" can be any device like "E:", "P}:", etc. paddle(n) char n; Returns position of paddle #n. Is in the GRAPHICS library}. printf(iocb, ctrlstr, args...) int iocb; char *ctrlstr; Uses control s}tring to format output to iocb channel. If no iocb channel is specified, then the screen (E: device) is }assumed. The following are the acceptable parameters for the control string: %c - print a character } %d - print an integer %f - print a float-type number (6 character array) %s - print a string } %x - print a hexadecimal number %% - print a '%' Field widths are also accepted. A number put betwe}en the % and the letter does this. A '-' in this number field left-justifies what is to be printed. A d}ecimal point and another number determines what size the field is for the part of the number after the de}cimal point for float-type numbers. Examples: printf("%-3d", 65); produces - "65 " (the 3rd c}haracter is a padding space, which is automatically put in if the field is too big.) a = "3.14159", prin}tf("%1.3f", a); produces - "3.141" (the decimal part of the floating point number was only given 3 places}.) It is similar to printf() when no iocb channel is specified, since it defaults to the screen, and is }like fprintf() when an iocb channel is specified, in standard C. Look at PRINTF.TXT for more details on }this function. ptrig(n) char n; Returns value of paddle trigger #n. Is in the GRAPHI}CS library. putchar(c) char c; Sends c to the screen. Is the s}ame as putchar() in standard C. stick(n) int n; Returns value of joystick #}n. strig(n) int n; Returns trigger button value of joystick #n. vstick(n)} char n; Returns -1 if joystick is pushed up, 1 if pushed down, 0 otherwise. Is in the} GRAPHICS library. Mathematical functions ------------------------ abs(i) int i}; Returns absolute value of integer i. Is the same as abs() in standard C. clog(a, b) } char a[6], b[6]; b equals the common log of a. a and b are float types. Is like log10}() in standard C. exp(a, b, c) char a[6], b[6], c[6]; c=a^b. a, b, and c are float t}ypes. Is like pow() in standard C. fadd(a, b, c) char a[6], b[6], c[6]; c=}a+b. a, b, and c are float types. fdiv(a, b, c) char a[6], b[6], c[6]; c=a/b. a, b,} and c are float types. fmul(a, b, c) char a[6], b[6], c[6]; c=a*b. a, b}, and c are float types. fsub(a, b, c) char a[6], b[6], c[6]; c=a-b. a, b, and c are} float types. ftoi(fp) char fp[6]; Returns the integer value of a float type number. } It will round the float value. Is like ceil() in standard C. Ex.: If fp="1.9", the returned value will} be 2. itof(i, fp) int i; char fp[6]; Converts integer i to floating typ}e fp. log(a, b) char a[6], b[6]; b equals the natural log of a. a and b are float ty}pes. Is like log() in standard C. rnd(n) int n; Returns random integer bet}ween 0 and n inclusive. If you want 0-255, use rnd(0) which is faster. Is similar to rand() in standard} C. Time Functions ----------------- gtime() Returns the integer value of th}e internal clock in 60ths of a second. Control Functions ------------------- exit(}) Returns control to DOS. fast() Turns off screen, results in faster computations.} slow() Turns on screen (after fast() is used). usr(addr, args...) } char *addr; Does a JSR to addr, returns integer after execution of machine-language routine.} Bitmapped & Player/Missile graphics, and Sound ------------------------------------------------ } chaget(c, s) char c, *s; Gets the ATASCII character definition for c and puts it in } string s. Is in the GRAPHICS library. chget(c, s) char c, *s; Gets the character de}finition of c, and puts it in string s. Is in the GRAPHICS library. chput(c, s) char c, *s;} Puts string s into the character definition of c (in the character set). Is in the GRAPHICS libra}ry. color(col) int col; Sets color for bitmapped drawing. drawto(x, y) } int x, y; Draw line to x, y coordinates using color specified by color(c). fil}l(x, y, c) int x; char y, c; Fills in a space starting at coordinates x, y, with co}lor c. Is in the GRAPHICS library. graphics(num) int num; Closes then opens} iocb #6 in graphics mode specified. hitclear() Clears the player/missile collision re}gisters. Is in the GRAPHICS library. hitpf(who, hitwho) int who, hitwho; P}layer-playfield collisions. Returns 1 if who collided with hitwho, otherwise it will return 0. If hitwho is negat}ive, a collision with any playfield will return 1. [This is a puzzling function as I don't know exactly }what it does. Perhaps hitwho is a color value so it can detect if a PM graphic has hit a certain bitmap.}] Is in the GRAPHICS library. hitpl(who, hitwho) int who, hitwho; Player-player coll}isions. Returns 1 if who collided with hitwho, otherwise it will return 0. If hitwho is negative, a col}lision with any other player will return 1. Is in the GRAPHICS library. locate(x, y) int x}, y; Returns the color at screen location x, y. pladdr(n) char n; Ret}urns the address of the memory space of player n. Is in the GRAPHICS library. plmove(n, x, y, shape) } char n, x, y, *shape; Moves shape into memory area of player n, at position x, y. This f}unction is used for defining and moving a player shape. The first value of shape (the first byte) should contain th}e length of player data. The second and last values (bytes) should be \0 to clear previous value when mo}ving the shape. Is in the GRAPHICS library. plot(x, y) int x, y; Plot poin}t at x, y. Point color is set by color(c). pmclear(n) char n; Clears the player n. }Is in the GRAPHICS library. pmcolor(n, hue, intensity) char n, hue, intensity;} Defines the color of player n. Is in the GRAPHICS library. pmflush() Call this fu}nction before returning to DOS, to turn off all player/missile graphics. Is in the GRAPHICS library. pm}graphics(i) int i; Sets up player/missile graphics: i=0 inhibits PM graphics, i=1 sin}gle line resolution, i=2 double line resolution. Is in the GRAPHICS library. pminit() T}his must be called before _any_ use of the player/missile (PM) graphics functions. Is in the GRAPHICS library. } pmwidth(n, width) char n, width; Defines player width: width=0 normal width, width=1 do}uble normal width, width=3 four times normal width. Is in the GRAPHICS library. position(x, y}) int x, y; Positions cursor at x, y coordinates. setcolor(reg, hue, lum) } int reg; char hue, lum; Sets color register reg. Is in the GRAPHICS library. sound}(voice, pitch, distortion, volume) int voice, pitch, distortion, volume; Produces sound out of s}pecified sound channel "voice". int voice, pitch, distortion, volume; Produces sound out of s/B%DOS SYSB*)DUP SYSBSACECLIB DOC