remote TABs in doc/ and test/
This commit is contained in:
110
doc/geos.sgml
110
doc/geos.sgml
@@ -68,19 +68,19 @@ programs.
|
||||
The software needed:
|
||||
<itemize>
|
||||
<item><em/cc65/ Excellent package containing a C crosscompiler, a crossassembler and a linker, you
|
||||
can get it from: <url url="https://cc65.github.io/">.
|
||||
can get it from: <url url="https://cc65.github.io/">.
|
||||
<item><em/VICE/ This is a portable C64, C128 and few other Commodore computers emulator, you
|
||||
can obtain it from: <url url="http://vice-emu.sourceforge.net/">.
|
||||
The VICE package contains the <em/c1541/ program that is able
|
||||
to convert/unconvert GEOS files to disk images.
|
||||
can obtain it from: <url url="http://vice-emu.sourceforge.net/">.
|
||||
The VICE package contains the <em/c1541/ program that is able
|
||||
to convert/unconvert GEOS files to disk images.
|
||||
<item><em/The Star Commander/ This tool is only for DOS. You will need it for transferring
|
||||
object files from a PC to a 1541. There's also one important ability of this
|
||||
tool - it automatically un-converts .cvt files into GEOS native format on
|
||||
disk image files. Check out: <url url="http://sta.c64.org/sc.html">.
|
||||
object files from a PC to a 1541. There's also one important ability of this
|
||||
tool - it automatically un-converts .cvt files into GEOS native format on
|
||||
disk image files. Check out: <url url="http://sta.c64.org/sc.html">.
|
||||
<item><em/opencbm/ A package that allows for communication directly with a 1541 and
|
||||
other Commodore IEC bus drives. It can be a replacement for Star Commander if
|
||||
you only want to transfer files to a disk and unconvert using GEOS program for
|
||||
this purpose. Check out: <url url="https://spiro.trikaliotis.net/opencbm">.
|
||||
other Commodore IEC bus drives. It can be a replacement for Star Commander if
|
||||
you only want to transfer files to a disk and unconvert using GEOS program for
|
||||
this purpose. Check out: <url url="https://spiro.trikaliotis.net/opencbm">.
|
||||
</itemize>
|
||||
<p>
|
||||
VICE and cc65 are portable - they run on variety of platforms - DOS, Win32 and UNIX. GEOSLib only
|
||||
@@ -387,7 +387,7 @@ and the number of rows to skip from the top if it.
|
||||
<sect3>BitOtherClip
|
||||
<p>
|
||||
<tt/void BitOtherClip (void *proc1, void *proc2, char skipLeft, char skip Right, unsigned skipTop,
|
||||
struct iconpic *myPic)/
|
||||
struct iconpic *myPic)/
|
||||
<p>
|
||||
Similar to the previous one with some extension. <tt/proc1/ is called before reading a byte (it
|
||||
returns in .A the next value), and <tt/proc2/ is called every time the parser reads a byte which is
|
||||
@@ -1390,9 +1390,9 @@ has the following fields:
|
||||
<itemize>
|
||||
<item><tt/char number/ - total number of icons declared here
|
||||
<item><tt/struct pixel mousepos/ - after finishing <tt/DoIcons/ the mouse pointer will be placed in
|
||||
this point allowing you to have a hint for the user what the default action is
|
||||
this point allowing you to have a hint for the user what the default action is
|
||||
<item><tt/struct icondef tab[&rsqb/ - this table of size equal to <tt/icontab.number/ contains
|
||||
descriptions for all icons
|
||||
descriptions for all icons
|
||||
</itemize>
|
||||
|
||||
<sect1>File and Disk
|
||||
@@ -1452,9 +1452,9 @@ void example = {
|
||||
Which will be compiled to following string of bytes:
|
||||
<tscreen><verb>
|
||||
_example:
|
||||
.byte 3
|
||||
.word 3
|
||||
.byte 0
|
||||
.byte 3
|
||||
.word 3
|
||||
.byte 0
|
||||
</verb></tscreen>
|
||||
As you see this way it is possible to define data of any type in any order. You must remember to
|
||||
cast each member to proper type.
|
||||
@@ -1474,21 +1474,21 @@ just in the content.
|
||||
Here is how a single descriptor looks like:
|
||||
<tscreen><verb>
|
||||
void myMenu = {
|
||||
(char)top, (char)bottom, // this is the size of the menubox
|
||||
(unsigned)left, (unsigned)right, // counting all items in the current descriptor
|
||||
(char)number_of_items | type_of_menu, // number of following items ORed with
|
||||
// type of this menu, it can be either
|
||||
// HORIZONTAL or VERTICAL if you will have also bit 6 set then menu won't be closed
|
||||
// after moving mouse pointer outside the menubox. You can have at most 31 items.
|
||||
(char)top, (char)bottom, // this is the size of the menubox
|
||||
(unsigned)left, (unsigned)right, // counting all items in the current descriptor
|
||||
(char)number_of_items | type_of_menu, // number of following items ORed with
|
||||
// type of this menu, it can be either
|
||||
// HORIZONTAL or VERTICAL if you will have also bit 6 set then menu won't be closed
|
||||
// after moving mouse pointer outside the menubox. You can have at most 31 items.
|
||||
</verb></tscreen>
|
||||
This is followed by <tt/number_of_items/ of following item description.
|
||||
<tscreen><verb>
|
||||
...
|
||||
"menuitemname", (char)item_type, (unsigned)pointer,
|
||||
"nextitemname", (char)item_type, (unsigned)pointer,
|
||||
...
|
||||
"lastitemname", (char)item_type, (unsigned)pointer };
|
||||
// Note that there isn't ending <tt/NULL/ or something like that.
|
||||
...
|
||||
"menuitemname", (char)item_type, (unsigned)pointer,
|
||||
"nextitemname", (char)item_type, (unsigned)pointer,
|
||||
...
|
||||
"lastitemname", (char)item_type, (unsigned)pointer };
|
||||
// Note that there isn't ending <tt/NULL/ or something like that.
|
||||
</verb></tscreen>
|
||||
<tt/pointer/ is a pointer to something, what it points for depends from <tt/item_type/. This one
|
||||
can have following values:
|
||||
@@ -1521,16 +1521,16 @@ The first element can be specified in two ways - by using the default size and p
|
||||
your own. The first case results in
|
||||
<tscreen><verb>
|
||||
const dlgBoxStr example = {
|
||||
DB_DEFPOS (pattern_of_shadow),
|
||||
... // commands
|
||||
DB_END };
|
||||
DB_DEFPOS (pattern_of_shadow),
|
||||
... // commands
|
||||
DB_END };
|
||||
</verb></tscreen>
|
||||
And the own size and position would be:
|
||||
<tscreen><verb>
|
||||
const dlgBoxStr example = {
|
||||
DB_SETPOS (pattern, top, bottom, left, right)
|
||||
... // commands
|
||||
DB_END };
|
||||
DB_SETPOS (pattern, top, bottom, left, right)
|
||||
... // commands
|
||||
DB_END };
|
||||
</verb></tscreen>
|
||||
|
||||
<sect3>Commands
|
||||
@@ -1539,9 +1539,9 @@ The next element of the <tt/DoDlgBox/ command string are the commands themselves
|
||||
default icons and the number of the selected icon will be returned from window processor. The icons are
|
||||
<tt/OK, CANCEL, YES, NO, OPEN/, and <tt/DISK/. You can use predefined macros for using them, e.g.:
|
||||
<tscreen><verb>
|
||||
...
|
||||
DB_ICON(OK, DBI_X_0, DBI_Y_0),
|
||||
...
|
||||
...
|
||||
DB_ICON(OK, DBI_X_0, DBI_Y_0),
|
||||
...
|
||||
</verb></tscreen>
|
||||
Note that the position is counted from top left corner of window, not entire screen and that the 'x'
|
||||
position is counted in cards (8-pixel) and not in pixels. This is also true for all following commands.
|
||||
@@ -1555,11 +1555,11 @@ where the address of the text is stored. This is useful for information windows
|
||||
is variable. Consider following:
|
||||
<tscreen><verb>
|
||||
char text = "foo";
|
||||
...
|
||||
r15=(unsigned)text; // in code just before call to DoDlgBox
|
||||
...
|
||||
DB_VARSTR (TXT_LN_X, TXT_LN_1_Y, &r15),
|
||||
...
|
||||
...
|
||||
r15=(unsigned)text; // in code just before call to DoDlgBox
|
||||
...
|
||||
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
|
||||
<tt/r15/ (in this case) before the call to DoDlgBox.
|
||||
@@ -1596,10 +1596,10 @@ command has to be <tt/GSTR_END/. There is a custom type defined for the command
|
||||
Here is an example for clearing the screen:
|
||||
<tscreen><verb>
|
||||
const graphicStr example = {
|
||||
MOVEPENTO(0,0),
|
||||
NEWPATTERN(0),
|
||||
RECTANGLETO(319,199)
|
||||
GSTR_END };
|
||||
MOVEPENTO(0,0),
|
||||
NEWPATTERN(0),
|
||||
RECTANGLETO(319,199)
|
||||
GSTR_END };
|
||||
</verb></tscreen>
|
||||
|
||||
<sect2>InitRam table
|
||||
@@ -1623,17 +1623,17 @@ It is possible to intercept events and hook into the GEOS Kernal using vectors.
|
||||
void_func oldVector;
|
||||
|
||||
void NewVectorHandler(void) {
|
||||
// do something and at the end call the old vector routine
|
||||
oldVector();
|
||||
// do something and at the end call the old vector routine
|
||||
oldVector();
|
||||
}
|
||||
|
||||
void hook_into_system(void) {
|
||||
oldVector = mouseVector;
|
||||
mouseVector = NewVectorHandler;
|
||||
oldVector = mouseVector;
|
||||
mouseVector = NewVectorHandler;
|
||||
}
|
||||
|
||||
void remove_hook(void) {
|
||||
mouseVector = oldVector;
|
||||
mouseVector = oldVector;
|
||||
}
|
||||
</verb></tscreen>
|
||||
<p>
|
||||
@@ -1655,10 +1655,10 @@ That little example above intercepts <tt/mouseVector/. The <tt/NewVectorHandler/
|
||||
called every time the mouse button changes status. Other important vectors you should know about
|
||||
are:
|
||||
<itemize>
|
||||
<item><tt/appMain/ - this is called from within the <tt/MainLoop/ system loop
|
||||
<item><tt/keyVector/ - called whenever a keypress occurs
|
||||
<item><tt/intTopVector/ - called at the start of the IRQ routine
|
||||
<item><tt/intBotVector/ - called at the end of the IRQ routine
|
||||
<item><tt/appMain/ - this is called from within the <tt/MainLoop/ system loop
|
||||
<item><tt/keyVector/ - called whenever a keypress occurs
|
||||
<item><tt/intTopVector/ - called at the start of the IRQ routine
|
||||
<item><tt/intBotVector/ - called at the end of the IRQ routine
|
||||
</itemize>
|
||||
|
||||
</article>
|
||||
|
||||
Reference in New Issue
Block a user