Merge branch 'master' into master
This commit is contained in:
@@ -46,7 +46,7 @@ clean:
|
||||
$(RM) -r ../html ../info
|
||||
|
||||
install:
|
||||
$(if $(PREFIX),,$(error variable `PREFIX' must be set))
|
||||
$(if $(PREFIX),,$(error variable "PREFIX" must be set))
|
||||
ifeq ($(wildcard ../html),../html)
|
||||
$(INSTALL) -d $(DESTDIR)$(htmldir)
|
||||
$(INSTALL) -m0644 ../html/*.* $(DESTDIR)$(htmldir)
|
||||
|
||||
@@ -469,25 +469,47 @@ BASIC.SYSTEM) there are some limitations for DOS 3.3:
|
||||
|
||||
<sect1>Direct console I/O<p>
|
||||
|
||||
<descrip>
|
||||
|
||||
<tag/Color/
|
||||
The Apple ][ has no color text mode. Therefore the functions textcolor(),
|
||||
bgcolor() and bordercolor() have no effect.
|
||||
|
||||
</descrip><p>
|
||||
The Apple ][ has no color text mode. Therefore the functions
|
||||
<tt/textcolor()/, <tt/bgcolor()/ and <tt/bordercolor()/ have no effect.
|
||||
|
||||
|
||||
<sect1>Random number generator<p>
|
||||
|
||||
<descrip>
|
||||
The random number seed is generated from the time the program waits for user input.
|
||||
Therefore it is necessary to wait for at least one user keypress either via Standard
|
||||
I/O or via Direct console I/O before initializing the pseudo random number generator.
|
||||
|
||||
<tag/Random number seed/
|
||||
The random number seed is generated from the time the program waits for user input.
|
||||
Therefore it is necessary to wait for at least one user keypress either via Standard
|
||||
I/O or via Direct console I/O before initializing the pseudo random number generator.
|
||||
|
||||
</descrip><p>
|
||||
<sect1>Realtime clock<p>
|
||||
|
||||
There are several types of realtime clocks. It's not desirable to have specific code
|
||||
for all of them. As ProDOS 8 supports file timestamps, realtime clock owners usually
|
||||
use ProDOS 8 drivers for their realtime clock. Those drivers read the realtime clock
|
||||
and write the result to the date/time location in RAM ($BF90 to $BF93).
|
||||
ProDOS 8 reads the date/time from that RAM location. If there's no realtime clock the
|
||||
RAM location keeps containing zeros. ProDOS 8 uses those zeros as timestamps and the
|
||||
files show up in a directory as <tt/<NO DATE>/.
|
||||
|
||||
There's no common interface to set realtime clocks so if a realtme clock <bf/IS/
|
||||
present there's just nothing to do. However, if there's <bf/NO/ realtime clock present,
|
||||
the user might very well be interested to "manually" set the RAM location in order to
|
||||
have timestamps. But he surely doesn't want to manually set the RAM location over and
|
||||
over again. Rather he wants to set it just once after booting ProDOS 8.
|
||||
|
||||
From that perspective it makes most sense to not set both the date and the time but
|
||||
rather only set the date and have the time just stay zero. Then files show up in a
|
||||
directory as <tt/DD-MON-YY 0:00/.
|
||||
|
||||
So <tt/clock_settime()/ checks if the current time equals 0:00. If it does <bf/NOT/
|
||||
then a realtime clock is supposed to be active and <tt/clock_settime()/ fails with
|
||||
<tt/ERANGE/. Otherwise <tt/clock_settime()/ sets the date - and completely ignores
|
||||
the time provided as parameter.
|
||||
|
||||
<tt/clock_getres()/ too checks if the current time equals 0:00. If it does <bf/NOT/
|
||||
then a realtime clock is supposed to be active and <tt/clock_getres()/ returns a time
|
||||
resolution of one minute. Otherwise <tt/clock_getres()/ presumes that the only one
|
||||
who sets the RAM location is <tt/clock_settime()/ and therefore returns a time
|
||||
resolution of one day.
|
||||
|
||||
|
||||
|
||||
|
||||
@@ -470,25 +470,47 @@ BASIC.SYSTEM) there are some limitations for DOS 3.3:
|
||||
|
||||
<sect1>Direct console I/O<p>
|
||||
|
||||
<descrip>
|
||||
|
||||
<tag/Color/
|
||||
The enhanced Apple //e has no color text mode. Therefore the functions
|
||||
textcolor(), bgcolor() and bordercolor() have no effect.
|
||||
|
||||
</descrip><p>
|
||||
The enhanced Apple //e has no color text mode. Therefore the functions
|
||||
<tt/textcolor()/, <tt/bgcolor()/ and <tt/bordercolor()/ have no effect.
|
||||
|
||||
|
||||
<sect1>Random number generator<p>
|
||||
|
||||
<descrip>
|
||||
The random number seed is generated from the time the program waits for user input.
|
||||
Therefore it is necessary to wait for at least one user keypress either via Standard
|
||||
I/O or via Direct console I/O before initializing the pseudo random number generator.
|
||||
|
||||
<tag/Random number seed/
|
||||
The random number seed is generated from the time the program waits for user input.
|
||||
Therefore it is necessary to wait for at least one user keypress either via Standard
|
||||
I/O or via Direct console I/O before initializing the pseudo random number generator.
|
||||
|
||||
</descrip><p>
|
||||
<sect1>Realtime clock<p>
|
||||
|
||||
There are several types of realtime clocks. It's not desirable to have specific code
|
||||
for all of them. As ProDOS 8 supports file timestamps, realtime clock owners usually
|
||||
use ProDOS 8 drivers for their realtime clock. Those drivers read the realtime clock
|
||||
and write the result to the date/time location in RAM ($BF90 to $BF93).
|
||||
ProDOS 8 reads the date/time from that RAM location. If there's no realtime clock the
|
||||
RAM location keeps containing zeros. ProDOS 8 uses those zeros as timestamps and the
|
||||
files show up in a directory as <tt/<NO DATE>/.
|
||||
|
||||
There's no common interface to set realtime clocks so if a realtme clock <bf/IS/
|
||||
present there's just nothing to do. However, if there's <bf/NO/ realtime clock present,
|
||||
the user might very well be interested to "manually" set the RAM location in order to
|
||||
have timestamps. But he surely doesn't want to manually set the RAM location over and
|
||||
over again. Rather he wants to set it just once after booting ProDOS 8.
|
||||
|
||||
From that perspective it makes most sense to not set both the date and the time but
|
||||
rather only set the date and have the time just stay zero. Then files show up in a
|
||||
directory as <tt/DD-MON-YY 0:00/.
|
||||
|
||||
So <tt/clock_settime()/ checks if the current time equals 0:00. If it does <bf/NOT/
|
||||
then a realtime clock is supposed to be active and <tt/clock_settime()/ fails with
|
||||
<tt/ERANGE/. Otherwise <tt/clock_settime()/ sets the date - and completely ignores
|
||||
the time provided as parameter.
|
||||
|
||||
<tt/clock_getres()/ too checks if the current time equals 0:00. If it does <bf/NOT/
|
||||
then a realtime clock is supposed to be active and <tt/clock_getres()/ returns a time
|
||||
resolution of one minute. Otherwise <tt/clock_getres()/ presumes that the only one
|
||||
who sets the RAM location is <tt/clock_settime()/ and therefore returns a time
|
||||
resolution of one day.
|
||||
|
||||
|
||||
|
||||
|
||||
@@ -40,7 +40,7 @@ The archiver is called as follows:
|
||||
V Print the archiver version
|
||||
</verb></tscreen>
|
||||
|
||||
You may add modules to a library using the `r' command (`a' is deprecated). If the library
|
||||
You may add modules to a library using the <tt/'r'/ command ('a' is deprecated). If the library
|
||||
does not exist, it is created (and a warning message is printed which you
|
||||
may ignore if creation of the library was your intention). You may
|
||||
specify any number of modules on the command line following the library.
|
||||
@@ -55,7 +55,7 @@ Here's an example:
|
||||
ar65 r mysubs.lib sub1.o sub2.o
|
||||
</verb></tscreen>
|
||||
|
||||
This will add two modules to the library `mysubs.lib' creating the
|
||||
This will add two modules to the library 'mysubs.lib' creating the
|
||||
library if necessary. If the library contains modules named sub1.o or
|
||||
sub2.o, they are replaced by the new ones.
|
||||
|
||||
@@ -65,9 +65,9 @@ Modules names in the library are stored without the path, so, using
|
||||
ar65 v v r mysubs.lib ofiles/sub1.o ofiles/sub2.o
|
||||
</verb></tscreen>
|
||||
|
||||
will verbose add two modules named `sub1.o' and `sub2.o' to the library.
|
||||
will verbose add two modules named 'sub1.o' and 'sub2.o' to the library.
|
||||
|
||||
Deleting modules from a library is done with the `d' command. You may not
|
||||
Deleting modules from a library is done with the <tt/'d'/ command. You may not
|
||||
give a path when naming the modules.
|
||||
|
||||
Example:
|
||||
@@ -76,11 +76,11 @@ Example:
|
||||
ar65 d mysubs.lib sub1.o
|
||||
</verb></tscreen>
|
||||
|
||||
This will delete the module named `sub1.o' from the library, printing an
|
||||
This will delete the module named 'sub1.o' from the library, printing an
|
||||
error if the library does not contain that module.
|
||||
|
||||
|
||||
The `t' command prints a table of all modules in the library (`l' is deprecated).
|
||||
The <tt/'t'/ command prints a table of all modules in the library ('l' is deprecated).
|
||||
Any module names on the command line are ignored.
|
||||
|
||||
Example:
|
||||
@@ -90,7 +90,7 @@ Example:
|
||||
</verb></tscreen>
|
||||
|
||||
|
||||
Using the `x' command, you may extract modules from the library. The
|
||||
Using the <tt/'x'/ command, you may extract modules from the library. The
|
||||
modules named on the command line are extracted from the library and put
|
||||
into the current directory.
|
||||
|
||||
@@ -107,7 +107,7 @@ Example for extracting a module from the library:
|
||||
</verb></tscreen>
|
||||
|
||||
|
||||
The `V' command prints the version number of the assembler. If you send
|
||||
The <tt/'V'/ command prints the version number of the assembler. If you send
|
||||
any suggestions or bugfixes, please include your version number.
|
||||
|
||||
In addition to these operations, the archiver will check for, and warn
|
||||
|
||||
112
doc/atari.sgml
112
doc/atari.sgml
@@ -29,7 +29,7 @@ supports XL type or newer machines (excluding the 600XL).
|
||||
|
||||
The <tt/atarixl/ runtime makes the whole 64K of memory available, with the
|
||||
exception of the I/O area at $D000 - $D7FF. Since the
|
||||
<tt/atarixl/ runtime has some <ref name="limitations" id="limitations">, it is
|
||||
<tt/atarixl/ runtime has some <ref name="limitations" id="xllimitations">, it is
|
||||
recommended to use the <tt/atari/ target unless lack of memory dictates the
|
||||
use of the <tt/atarixl/ target.
|
||||
|
||||
@@ -329,20 +329,20 @@ unsigned char ScreenMemory[100];
|
||||
|
||||
void DisplayList =
|
||||
{
|
||||
DL_BLK8,
|
||||
DL_BLK8,
|
||||
DL_BLK8,
|
||||
DL_LMS(DL_CHR20x8x2),
|
||||
ScreenMemory,
|
||||
DL_CHR20x8x2,
|
||||
DL_CHR20x8x2,
|
||||
DL_CHR20x8x2,
|
||||
DL_BLK4,
|
||||
DL_CHR20x8x2,
|
||||
DL_JVB
|
||||
DL_BLK8,
|
||||
DL_BLK8,
|
||||
DL_BLK8,
|
||||
DL_LMS(DL_CHR20x8x2),
|
||||
ScreenMemory,
|
||||
DL_CHR20x8x2,
|
||||
DL_CHR20x8x2,
|
||||
DL_CHR20x8x2,
|
||||
DL_BLK4,
|
||||
DL_CHR20x8x2,
|
||||
DL_JVB
|
||||
};
|
||||
...
|
||||
POKEW(560,(unsigned int)&DisplayList); // SDLSTL
|
||||
POKEW(560,(unsigned int)&DisplayList); // SDLSTL
|
||||
...
|
||||
</verb>
|
||||
|
||||
@@ -411,6 +411,29 @@ char* pcAtasciiMappingString = "Hello Atari!";
|
||||
|
||||
does not.
|
||||
|
||||
<sect1>Keyboard codes<p>
|
||||
|
||||
For direct keyboard scanning in conjunction with e.g. the OS location "CH" (764/$2FC),
|
||||
all keyboard codes are available as defined values on C and assembler side.
|
||||
|
||||
Example:
|
||||
<verb>
|
||||
...
|
||||
while (!kbhit());
|
||||
switch (PEEK(764))
|
||||
{
|
||||
case KEY_RETURN:
|
||||
...
|
||||
case KEY_SPACE:
|
||||
...
|
||||
case KEY_1:
|
||||
...
|
||||
}
|
||||
...
|
||||
</verb>
|
||||
|
||||
You can find the C defines in the file "<tt/atari.h/" or "<tt/atari.inc/" for the assembler variant.
|
||||
|
||||
|
||||
<sect>Loadable drivers<p>
|
||||
|
||||
@@ -611,7 +634,18 @@ interface module.
|
||||
|
||||
<sect>Limitations<p>
|
||||
|
||||
<sect1><tt/atarixl/<#if output="info|latex2e"> limitations</#if><label id="limitations"<p>
|
||||
<sect1><tt/Realtime clock/<label id="realtimeclock"<p>
|
||||
|
||||
Access to the realtime clock is supported only when running on SpartaDOS-X.
|
||||
There needs to be a realtime clock driver installed. This is normally the case
|
||||
in the default installation (CONFIG.SYS) of SpartaDOS-X.
|
||||
A missing realtime clock driver in SpartaDOS-X is not supported, and the program
|
||||
may crash when calling the <tt/clock_settime()/ or <tt/clock_gettime()/
|
||||
functions.
|
||||
|
||||
The resolution of the realtime clock driver is 1 second.
|
||||
|
||||
<sect1><tt/atarixl target/<#if output="info|latex2e"> limitations</#if><label id="xllimitations"<p>
|
||||
|
||||
<itemize>
|
||||
<item>The display is cleared at program start and at program termination. This is a side
|
||||
@@ -932,16 +966,16 @@ chunk #2 (RAM memory area).
|
||||
The contents of the new NEXEHDR and CHKHDR segments come from this
|
||||
file (split.s):
|
||||
<tscreen><verb>
|
||||
.import __CODE_LOAD__, __BSS_LOAD__, __CODE_SIZE__
|
||||
.import __DATA_LOAD__, __RODATA_LOAD__, __STARTUP_LOAD__
|
||||
.import __CODE_LOAD__, __BSS_LOAD__, __CODE_SIZE__
|
||||
.import __DATA_LOAD__, __RODATA_LOAD__, __STARTUP_LOAD__
|
||||
|
||||
.segment "NEXEHDR"
|
||||
.word __STARTUP_LOAD__
|
||||
.word __CODE_LOAD__ + __CODE_SIZE__ - 1
|
||||
.segment "NEXEHDR"
|
||||
.word __STARTUP_LOAD__
|
||||
.word __CODE_LOAD__ + __CODE_SIZE__ - 1
|
||||
|
||||
.segment "CHKHDR"
|
||||
.word __RODATA_LOAD__
|
||||
.word __BSS_LOAD__ - 1
|
||||
.segment "CHKHDR"
|
||||
.word __RODATA_LOAD__
|
||||
.word __BSS_LOAD__ - 1
|
||||
</verb></tscreen>
|
||||
<p>
|
||||
Compile with
|
||||
@@ -1008,16 +1042,16 @@ FEATURES {
|
||||
|
||||
New contents for NEXEHDR and CHKHDR are needed (split2.s):
|
||||
<tscreen><verb>
|
||||
.import __STARTUP_LOAD__, __BSS_LOAD__, __DATA_SIZE__
|
||||
.import __DATA_LOAD__, __RODATA_LOAD__
|
||||
.import __STARTUP_LOAD__, __BSS_LOAD__, __DATA_SIZE__
|
||||
.import __DATA_LOAD__, __RODATA_LOAD__
|
||||
|
||||
.segment "NEXEHDR"
|
||||
.word __RODATA_LOAD__
|
||||
.word __DATA_LOAD__ + __DATA_SIZE__ - 1
|
||||
.segment "NEXEHDR"
|
||||
.word __RODATA_LOAD__
|
||||
.word __DATA_LOAD__ + __DATA_SIZE__ - 1
|
||||
|
||||
.segment "CHKHDR"
|
||||
.word __STARTUP_LOAD__
|
||||
.word __BSS_LOAD__ - 1
|
||||
.segment "CHKHDR"
|
||||
.word __STARTUP_LOAD__
|
||||
.word __BSS_LOAD__ - 1
|
||||
</verb></tscreen>
|
||||
|
||||
Compile with
|
||||
@@ -1048,7 +1082,7 @@ If you are using a customized linker config file you might get some errors
|
||||
regarding the MAINHDR segment. Like this:
|
||||
|
||||
<tscreen><verb>
|
||||
ld65: Error: Missing memory area assignment for segment `MAINHDR'
|
||||
ld65: Error: Missing memory area assignment for segment 'MAINHDR'
|
||||
</verb></tscreen>
|
||||
|
||||
The old "HEADER" memory description contained six bytes: $FFFF
|
||||
@@ -1096,14 +1130,14 @@ including commercial applications, and to alter it and redistribute it
|
||||
freely, subject to the following restrictions:
|
||||
|
||||
<enum>
|
||||
<item> The origin of this software must not be misrepresented; you must not
|
||||
claim that you wrote the original software. If you use this software
|
||||
in a product, an acknowledgment in the product documentation would be
|
||||
appreciated but is not required.
|
||||
<item> Altered source versions must be plainly marked as such, and must not
|
||||
be misrepresented as being the original software.
|
||||
<item> This notice may not be removed or altered from any source
|
||||
distribution.
|
||||
<item> The origin of this software must not be misrepresented; you must not
|
||||
claim that you wrote the original software. If you use this software
|
||||
in a product, an acknowledgment in the product documentation would be
|
||||
appreciated but is not required.
|
||||
<item> Altered source versions must be plainly marked as such, and must not
|
||||
be misrepresented as being the original software.
|
||||
<item> This notice may not be removed or altered from any source
|
||||
distribution.
|
||||
</enum>
|
||||
|
||||
</article>
|
||||
|
||||
@@ -339,6 +339,13 @@ The default drivers, <tt/mouse_stddrv (mouse_static_stddrv)/, point to <tt/c128-
|
||||
<sect>Limitations<p>
|
||||
|
||||
|
||||
<sect1>Realtime clock<p>
|
||||
|
||||
The realtime clock functions use the CIA1 TOD clock. As that clock only stores
|
||||
the time but not the date, the date set by <tt/clock_settime()/ is simply stored
|
||||
inside the C library for retrieval in the same program via <tt/clock_gettime()/.
|
||||
|
||||
|
||||
|
||||
<sect>Other hints<p>
|
||||
|
||||
|
||||
@@ -418,6 +418,13 @@ The default drivers, <tt/mouse_stddrv (mouse_static_stddrv)/, point to <tt/c64-1
|
||||
<sect>Limitations<p>
|
||||
|
||||
|
||||
<sect1>Realtime clock<p>
|
||||
|
||||
The realtime clock functions use the CIA1 TOD clock. As that clock only stores
|
||||
the time but not the date, the date set by <tt/clock_settime()/ is simply stored
|
||||
inside the C library for retrieval in the same program via <tt/clock_gettime()/.
|
||||
|
||||
|
||||
|
||||
<sect>Other hints<p>
|
||||
|
||||
|
||||
@@ -2730,7 +2730,7 @@ Here's a list of all control commands and a description, what they do:
|
||||
|
||||
<tag><tt>at_in_identifiers</tt><label id="at_in_identifiers"></tag>
|
||||
|
||||
Accept the at character (`@') as a valid character in identifiers. The
|
||||
Accept the at character ('@') as a valid character in identifiers. The
|
||||
at character is not allowed to start an identifier, even with this
|
||||
feature enabled.
|
||||
|
||||
@@ -2765,13 +2765,13 @@ Here's a list of all control commands and a description, what they do:
|
||||
|
||||
<tag><tt>dollar_in_identifiers</tt><label id="dollar_in_identifiers"></tag>
|
||||
|
||||
Accept the dollar sign (`$') as a valid character in identifiers. The
|
||||
Accept the dollar sign ('$') as a valid character in identifiers. The
|
||||
dollar character is not allowed to start an identifier, even with this
|
||||
feature enabled.
|
||||
|
||||
<tag><tt>dollar_is_pc</tt><label id="dollar_is_pc"></tag>
|
||||
|
||||
The dollar sign may be used as an alias for the star (`*'), which
|
||||
The dollar sign may be used as an alias for the star ('*'), which
|
||||
gives the value of the current PC in expressions.
|
||||
Note: Assignment to the pseudo variable is not allowed.
|
||||
|
||||
@@ -2789,7 +2789,7 @@ Here's a list of all control commands and a description, what they do:
|
||||
|
||||
<tag><tt>leading_dot_in_identifiers</tt><label id="leading_dot_in_identifiers"></tag>
|
||||
|
||||
Accept the dot (`.') as the first character of an identifier. This may be
|
||||
Accept the dot ('.') as the first character of an identifier. This may be
|
||||
used for example to create macro names that start with a dot emulating
|
||||
control directives of other assemblers. Note however, that none of the
|
||||
reserved keywords built into the assembler, that starts with a dot, may be
|
||||
@@ -2825,12 +2825,30 @@ Here's a list of all control commands and a description, what they do:
|
||||
|
||||
<tag><tt>pc_assignment</tt><label id="pc_assignment"></tag>
|
||||
|
||||
Allow assignments to the PC symbol (`*' or `$' if <tt/dollar_is_pc/
|
||||
Allow assignments to the PC symbol ('*' or '$' if <tt/dollar_is_pc/
|
||||
is enabled). Such an assignment is handled identical to the <tt><ref
|
||||
id=".ORG" name=".ORG"></tt> command (which is usually not needed, so just
|
||||
removing the lines with the assignments may also be an option when porting
|
||||
code written for older assemblers).
|
||||
|
||||
<tag><tt>string_escapes</tt><label id="string_escapes"></tag>
|
||||
|
||||
Allow C-style backslash escapes within string constants to embed
|
||||
special characters. The following escapes are accepted:
|
||||
|
||||
<itemize>
|
||||
<item><tt>\\</tt> backslash (<tt>$5C</tt>)
|
||||
<item><tt>\'</tt> single quote (<tt>$27</tt>)
|
||||
<item><tt>\"</tt> double quote (<tt>$22</tt>)
|
||||
<item><tt>\t</tt> tab (<tt>$09</tt>)
|
||||
<item><tt>\r</tt> carriage return (<tt>$0D</tt>)
|
||||
<item><tt>\n</tt> newline (<tt>$0A</tt>)
|
||||
<item><tt>\xNN</tt> (<tt>$NN</tt>)
|
||||
</itemize>
|
||||
|
||||
Note that <tt>\n</tt> maps to ASCII <tt>$0A</tt>, not a platform specific
|
||||
line ending character.
|
||||
|
||||
<tag><tt>ubiquitous_idents</tt><label id="ubiquitous_idents"></tag>
|
||||
|
||||
Allow the use of instructions names as names for macros and symbols. This
|
||||
@@ -3799,7 +3817,7 @@ Here's a list of all control commands and a description, what they do:
|
||||
page and direct (short) addressing is possible for data in this segment.
|
||||
|
||||
Beware: Only labels in a segment with the zeropage attribute are marked
|
||||
as reachable by short addressing. The `*' (PC counter) operator will
|
||||
as reachable by short addressing. The '*' (PC counter) operator will
|
||||
work as in other segments and will create absolute variable values.
|
||||
|
||||
Please note that a segment cannot have two different address sizes. A
|
||||
|
||||
@@ -242,6 +242,13 @@ The default drivers, <tt/mouse_stddrv (mouse_static_stddrv)/, point to <tt/cbm51
|
||||
<sect>Limitations<label id="limitations"><p>
|
||||
|
||||
|
||||
<sect1>Realtime clock<p>
|
||||
|
||||
The realtime clock functions use the CIA1 TOD clock. As that clock only stores
|
||||
the time but not the date, the date set by <tt/clock_settime()/ is simply stored
|
||||
inside the C library for retrieval in the same program via <tt/clock_gettime()/.
|
||||
|
||||
|
||||
<sect1>Kernal and hardware access<p>
|
||||
|
||||
Since the program runs in bank 0, and the kernal and all I/O chips are located
|
||||
|
||||
@@ -224,6 +224,13 @@ No mouse drivers are currently available for the Commodore 610.
|
||||
<sect>Limitations<label id="limitations"><p>
|
||||
|
||||
|
||||
<sect1>Realtime clock<p>
|
||||
|
||||
The realtime clock functions use the CIA1 TOD clock. As that clock only stores
|
||||
the time but not the date, the date set by <tt/clock_settime()/ is simply stored
|
||||
inside the C library for retrieval in the same program via <tt/clock_gettime()/.
|
||||
|
||||
|
||||
<sect1>Kernal and hardware access<p>
|
||||
|
||||
Since the program runs in bank 1, and the kernal and all I/O chips are located
|
||||
|
||||
@@ -44,7 +44,7 @@ Short options:
|
||||
-o name Name the output file
|
||||
-r Enable register variables
|
||||
-t sys Set the target system
|
||||
-u sym Force an import of symbol `sym'
|
||||
-u sym Force an import of symbol 'sym'
|
||||
-v Verbose mode
|
||||
-vm Verbose map file
|
||||
-C name Use linker config file
|
||||
@@ -90,7 +90,7 @@ Long options:
|
||||
--debug Debug mode
|
||||
--debug-info Add debug info
|
||||
--feature name Set an emulation feature
|
||||
--force-import sym Force an import of symbol `sym'
|
||||
--force-import sym Force an import of symbol 'sym'
|
||||
--help Help (this text)
|
||||
--include-dir dir Set a compiler include directory path
|
||||
--ld-args options Pass options to the linker
|
||||
|
||||
@@ -2587,7 +2587,7 @@ changing values. (See the description of <tt/cbm_k_udtim()/.)
|
||||
of the realtime clock. <tt/clock_id/ has to be <tt/CLOCK_REALTIME/. If <tt/res/
|
||||
is not <tt/NULL/, the resolution of the realtime clock is stored in the location
|
||||
pointed to by <tt/res/. If <tt/res/ is <tt/NULL/, the clock resolution is not returned.
|
||||
If the <tt/time/ argument of <tt/<ref id="clock_settime" name="clock_settime">/ is not
|
||||
If the <tt/tp/ argument of <tt/<ref id="clock_settime" name="clock_settime">/ is not
|
||||
a multiple of <tt/res/, then the value is truncated to a multiple of <tt/res/. On
|
||||
success, zero is returned. On error, -1 is returned and <tt/errno/ is set to an
|
||||
error code describing the reason for the failure.
|
||||
@@ -2626,7 +2626,7 @@ retrieved value may not be valid. See also the platform-specific information.
|
||||
<tag/Availability/POSIX 1003.1
|
||||
<tag/See also/
|
||||
<ref id="clock_getres" name="clock_getres">,
|
||||
<ref id="clock_settime" name="clock_settime">
|
||||
<ref id="clock_settime" name="clock_settime">,
|
||||
<ref id="time" name="time">
|
||||
<tag/Example/None.
|
||||
</descrip>
|
||||
@@ -2637,7 +2637,7 @@ retrieved value may not be valid. See also the platform-specific information.
|
||||
|
||||
<quote>
|
||||
<descrip>
|
||||
<tag/Function/Get the time from the realtime clock.
|
||||
<tag/Function/Set the time on the realtime clock.
|
||||
<tag/Header/<tt/<ref id="time.h" name="time.h">/
|
||||
<tag/Declaration/<tt/int __fastcall__ clock_settime (clockid_t clock_id, const struct timespec *tp);/
|
||||
<tag/Description/The <tt/clock_settime/ function sets the time since the 1970-01-01 00:00:00
|
||||
@@ -3386,7 +3386,7 @@ used in presence of a prototype.
|
||||
<descrip>
|
||||
<tag/Function/Load and initialize an extended memory driver.
|
||||
<tag/Header/<tt/<ref id="em.h" name="em.h">/
|
||||
<tag/Declaration/<tt/void __fastcall__ em_load_driver (const char* name);/
|
||||
<tag/Declaration/<tt/unsigned char __fastcall__ em_load_driver (const char* name);/
|
||||
<tag/Description/Load an extended memory driver into memory and initialize
|
||||
it. The function returns an error code that tells if all this has been
|
||||
successful.
|
||||
|
||||
@@ -49,16 +49,6 @@ Programs containing Gamate specific code may use the <tt/gamate.h/ header file.
|
||||
</itemize>
|
||||
|
||||
|
||||
<sect1>Hardware access<p>
|
||||
|
||||
The following pseudo variables declared in the <tt/gamate.inc/ include file do
|
||||
allow access to hardware located in the address space.
|
||||
|
||||
<descrip>
|
||||
|
||||
</descrip><p>
|
||||
|
||||
|
||||
|
||||
<sect>Loadable drivers<p>
|
||||
|
||||
@@ -159,6 +149,3 @@ freely, subject to the following restrictions:
|
||||
</enum>
|
||||
|
||||
</article>
|
||||
|
||||
|
||||
|
||||
|
||||
@@ -48,7 +48,7 @@ changed between <tt/tgi_init/ and <tt/tgi_done/.
|
||||
It is safe to use these standard includes and their contents:
|
||||
<tt/assert.h, conio.h, dio.h, errno.h, em.h, geos.h, joystick.h, modload.h, mouse.h, stdlib.h, string.h, tgi.h, time.h/
|
||||
<p>
|
||||
For <tt/time.h/ functions <tt/systime()/ and <tt/clock()/ note that the resolution is one second.
|
||||
For <tt/time.h/ functions <tt/clock()/ and <tt/clock_gettime()/ note that the resolution is one second.
|
||||
<p>
|
||||
Functions from the headers above are either standard C library functions or cc65-specific, in
|
||||
either case they are not GEOS specific and so they are not described here.
|
||||
@@ -188,6 +188,14 @@ are covered by new names, but I tried to keep them in the naming convention.
|
||||
<p>
|
||||
This section covers the drawing package of GEOS along with text output routines.
|
||||
|
||||
<sect2>SetNewMode
|
||||
<p>
|
||||
<tt/void SetNewMode (void)/
|
||||
<p>
|
||||
This function is intended for use by GEOS 128 only, and will exhibit undefined behavior on the
|
||||
C64. It will toggle between the 40 column screen mode and the 80 column screen mode. Many C128 GEOS
|
||||
programs implement a "Switch 40/80" submenu option under the <tt/geos/ menu.
|
||||
|
||||
<sect2>SetPattern
|
||||
<p>
|
||||
<tt/void SetPattern (char pattern)/
|
||||
@@ -1553,7 +1561,7 @@ char text = "foo";
|
||||
DB_VARSTR (TXT_LN_X, TXT_LN_1_Y, &r15),
|
||||
...
|
||||
</verb></tscreen>
|
||||
will cause the word ``foo'' to appear in the window, but you may store the pointer to any text in
|
||||
will cause the word ''foo'' to appear in the window, but you may store the pointer to any text in
|
||||
<tt/r15/ (in this case) before the call to DoDlgBox.
|
||||
<p>
|
||||
<tt/DB_GETSTR(x, y, ptr, length)/ - will add a input-from-keyboard feature. <tt/ptr/ works as in the
|
||||
|
||||
@@ -66,7 +66,7 @@ Short options:
|
||||
-m name Create a map file
|
||||
-o name Name the default output file
|
||||
-t sys Set the target system
|
||||
-u sym Force an import of symbol `sym'
|
||||
-u sym Force an import of symbol 'sym'
|
||||
-v Verbose mode
|
||||
-vm Verbose map file
|
||||
|
||||
@@ -76,7 +76,7 @@ Long options:
|
||||
--dbgfile name Generate debug information
|
||||
--define sym=val Define a symbol
|
||||
--end-group End a library group
|
||||
--force-import sym Force an import of symbol `sym'
|
||||
--force-import sym Force an import of symbol 'sym'
|
||||
--help Help (this text)
|
||||
--lib file Link this library
|
||||
--lib-path path Specify a library search path
|
||||
@@ -487,7 +487,7 @@ There are of course more attributes for a memory section than just start and
|
||||
size. Start and size are mandatory attributes, that means, each memory area
|
||||
defined <em/must/ have these attributes given (the linker will check that). I
|
||||
will cover other attributes later. As you may have noticed, I've used a
|
||||
comment in the example above. Comments start with a hash mark (`#'), the
|
||||
comment in the example above. Comments start with a hash mark ('#'), the
|
||||
remainder of the line is ignored if this character is found.
|
||||
|
||||
|
||||
@@ -572,7 +572,7 @@ default behaviour is OK for our purposes, I did not use the attribute in the
|
||||
example above. Let's have a look at it now.
|
||||
|
||||
The "file" attribute (the keyword may also be written as "FILE" if you like
|
||||
that better) takes a string enclosed in double quotes (`&dquot;') that specifies the
|
||||
that better) takes a string enclosed in double quotes ('&dquot;') that specifies the
|
||||
file, where the data is written. You may specify the same file several times,
|
||||
in that case the data for all memory areas having this file name is written
|
||||
into this file, in the order of the memory areas defined in the <tt/MEMORY/
|
||||
|
||||
@@ -89,7 +89,7 @@ Example output for the command
|
||||
sim65 --verbose --verbose samples/gunzip65
|
||||
</verb></tscreen>
|
||||
<tscreen><verb>
|
||||
Loaded `samples/gunzip65' at $0200-$151F
|
||||
Loaded 'samples/gunzip65' at $0200-$151F
|
||||
PVWrite ($0001, $13C9, $000F)
|
||||
GZIP file name:PVWrite ($0001, $151F, $0001)
|
||||
|
||||
|
||||
@@ -192,6 +192,7 @@ port cardridge.
|
||||
|
||||
<sect1>Joystick drivers<p>
|
||||
|
||||
|
||||
<descrip>
|
||||
|
||||
Telemon 2.4 & 3.0 manages joysticks but it had been handled yet. This means that
|
||||
@@ -200,26 +201,24 @@ joysticks driver could be written easily.
|
||||
Telemon 2.4 returns in keyboard buffer the direction of the joysticks. This means that
|
||||
if you get input from keyboard by conio cgetc function, you will get direction from joysticks.
|
||||
|
||||
</descrip>
|
||||
|
||||
|
||||
<sect1>Mouse drivers<p>
|
||||
|
||||
|
||||
<descrip>
|
||||
|
||||
Telestrat manages also mouse, but it had been no handled yet in this version.
|
||||
Telestrat mouse is really difficult to find.
|
||||
|
||||
</descrip>
|
||||
|
||||
<sect1>RS232 device drivers<p>
|
||||
|
||||
|
||||
<descrip>
|
||||
|
||||
Telestrat has a RS232 port, but it's not usable in cc65. It is possible to use
|
||||
RS232 port with Telemon calls (see XSOUT primitive for example)
|
||||
|
||||
</descrip>
|
||||
|
||||
<sect>Limitations<label id="limitations"><p>
|
||||
|
||||
|
||||
Reference in New Issue
Block a user