</descrip><p>
-<sect1>Specifying ProDOS File Types<p>
+<sect1>Specifying file types for fopen<p>
<descrip>
- <tag>Problem Explanation</tag>
+ <tag>Explanation of File Types</tag>
ProDOS associates a file type and an auxiliary type with each file.
These type specifications are separate from the file's name, unlike
- Windows and UNIX-like systems which use the file name's suffix (a.k.a.
- extension) to specify the file type. For example, .exe, .doc, or .bat.
+ Windows which uses the file name's suffix (a.k.a.
+ extension) to specify the file type. For example, <tt/.exe/,
+ <tt/.doc/, or <tt/.bat/.
The ProDOS low-level
Machine-Language Interface (MLI) functions for creating and opening
files require these types to be specified. And if they don't match
auxiliary type. Therefore, some additional mechanism for specifying
the file types is needed.
- <tag>Solution</tag>
+ <tag>Specifying the File Type and Auxiliary Type</tag>
There are two global variables provided that allow the file type
and auxiliary type to be specified before a call to <tt/fopen()/
- or <tt/open/. They are defined in <tt/apple2_filetype.h/:
+ or <tt/open()/. They are defined in <tt/apple2_filetype.h/:
- <quote>
+ <tscreen>
<verb>
extern unsigned char _filetype; /* Default: PRODOS_T_BIN */
extern unsigned int _auxtype; /* Default: 0 */
</verb>
- </quote>
+ </tscreen>
The header file <tt/apple2_filetype.h/ also defines many values
that can be used to set these variables. It is included in
<tt/apple2.h/, which is in turn included in <tt/apple2enh.h/.
- So it
- not necessary to include it directly. Just
+ So it isn't necessary to include it directly. Just
include one of <tt/apple2.h/ or <tt/apple2enh.h/.
<tag>Example</tag>
length text file is referred to as a sequential text file.
This is equivalent to text files on
other operating systems, except that the line terminator is a
- carriage return instead of a new line (Linux/BSD/MacOS) or
- carriage return, new line pair (Windows).
+ carriage return instead of a line-feed (Linux/BSD/MacOS) or
+ carriage return, line-feed pair (Windows).
The "sequential" text file terminology is in contrast to a
"random-access" text file which would
<tt/_auxtype/ can also be set to <tt/PRODOS_AUX_T_TXT_SEQ/
which is defined as zero.
- <quote>
+ <tscreen>
<verb>
- #include <stdio.h>
- #include <string.h>
- #include <errno.h>
- #include <apple2.h>
- void main()
+ #include <stdio.h>
+ #include <string.h>
+ #include <errno.h>
+ #include <apple2.h>
+
+ void main(void)
{
FILE *out;
char *name = "MY.FAVS";
+ /*-----------------------------*/
+
_filetype = PRODOS_T_TXT;
_auxtype = PRODOS_AUX_T_TXT_SEQ;
+ /*-----------------------------*/
+
if ((out = fopen(name, "w")) != NULL) {
fputs("Jorah Mormont\r", out);
fputs("Brienne of Tarth\r", out);
}
}
</verb>
- </quote>
+ </tscreen>
</descrip><p>