X-Git-Url: https://git.sur5r.net/?a=blobdiff_plain;f=doc%2Fgeos.sgml;h=aa3725bdf7173b10e820d91bf98e21ad59e7d90a;hb=3f72e59e932fe482623652768e8a478a64138caa;hp=7726e7409c11dd6d1fd38f8977f827c549a31e8f;hpb=fc51f7f77f48e873821b17a75e7f936b54f00b11;p=cc65 diff --git a/doc/geos.sgml b/doc/geos.sgml index 7726e7409..aa3725bdf 100644 --- a/doc/geos.sgml +++ b/doc/geos.sgml @@ -5,11 +5,11 @@
-As we all know that the best computers in the world are c64 and c128. They have their GUI too - -excellent GEOS. GEOS seems very difficult and cryptic for many people, from programmer's point -of view. That's not true. The designers of GEOS created flexible and powerful system, which +As we all know that the best computers in the world are the C64 and C128. They have their GUI too - +the excellent GEOS. GEOS seems very difficult and cryptic for many people, from programmer's point +of view. That's not true. The designers of GEOS created a flexible and powerful system, which is easy to use and program.
Coding GEOS in C? That's something new. It is possible now - with Ulrich von Bassewitz's cc65 -package and my GEOSLib you are able to create GEOS applications in no-time. +package and my GEOSLib you are able to create GEOS applications in no time.
-GEOSLib supports a subset of standard cc65 libraries. Memory and string functions are included -but you should consider using native versions of these (e.g. + + + + +It is safe to use these standard includes and their contents: + +For +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.
I am an assembler programmer and GEOSLib was designed in such way that cc65 could emit the best -available code (well, the best as for machine :). Many of the Requirements
-You will not need c64 or c128 for development. The only hardware requirement is a PC capable of
-runing cc65. You will however need c64 or c128 emulator and GEOS image disks (.d64) to test your
+You don't need a C64 or C128 for development. The only hardware requirement is a PC capable of
+running cc65. You do however need C64 or C128 emulator and GEOS disk images (.d64) to test your
programs.
The software needed:
VICE and cc65 are portable - they run on variety of platforms - DOS, Win32 and UNIX. GEOSLib only needs cc65.
-Legal
I want to thank Uz for his cc65 package, Alexander Boyce for his excellent GEOS Programmer's
Reference Guide and BSW for GEOS.
-GEOSLib is covered by the same license as cc65. You can find the whole text among documentation.
-I would really appreciate if you would like to send me your comments, suggestions, questions,
-changes, bug reports etc. I will also appreciate if you will just give me a sign that you are
-using GEOSLib - not especially something big and important, mail me even if you are just playing
+GEOSLib is covered by the same license as cc65. You can find the whole text
+among documentation. I would really appreciate if you would like to send me
+your comments, suggestions, questions, changes, bug reports etc. I will also
+appreciate if you will just give me a sign that you are using GEOSLib - not
+especially something big and important, mail me even if you are just playing
with it.
You can send postcards with hellos to:
@@ -84,38 +111,30 @@ POLAND
e-mail: What have you got and what to do with it?
+
This chapter describes some rules you ought to obey, and how to use GEOSLib.
-
-Think twice before you use standard C library function. In current implementation almost always
-you will get better code using only
-Apart from this file, which merely describes only standard GEOS library functions, you should read
-Usage
+Apart from this file, which merely describes only standard GEOS library
+functions, you should read the
All in all, you just need to place
-Please read cc65's documentation on how to compile C, assembler and link everything together.
-
-GEOSLib building process isn't yet defined stable. Detailed information how to link everything
-together is in separated file together with resource compiler documentation.
-
-As a general rule read the sources of example programs and read the headers. These are the most
-reliable sources of knowledge ;). You will also find there many C macros representing various
-arguments passed to functions. Please use them. You will find your sources easier to understand,
-and it will be easier to find bugs.
+As a general rule read the sources of the example programs and read the headers.
+These are the most reliable sources of knowledge ;-). You will also find there
+many C macros representing various arguments passed to the functions. Please use
+them. You will find your sources easier to understand, and it will be easier
+to find bugs.
All types used in GEOSLib are
@@ -123,43 +142,60 @@ Screen coordinates are given in pixels unless stated differently.
-All programs start their execution on
+For GEOS GUI applications the recommended program structure is to have everything initialized
+in the
Whenever possible use definitions from
Don't hesitate to use library functions. Everything was written with size and speed in mind. In
-fact many calls are just redirections to GEOS kernal which results in simple
-You might wonder why I have chosen sometimes weird order of arguments in functions. It is because
-I wanted to avoid unnecessary pushing and popping arguments from stack. cc65 can pass single
-Do not try to compile in strict ANSI mode. I'm using some cc65 extensions which are not available in
+You might wonder why I have chosen a sometimes weird order of arguments in functions. I just
+wanted to avoid unnecessary pushing and popping of arguments from the stack because cc65 can pass a single
+
+Do not try to compile in strict ANSI mode. The library uses cc65 extensions which are not available in
ANSI.
+
+It is possible to use dynamically loaded modules, three such modules are provided:
+A GEOS TGI driver, a GEOS EMD driver (for VDC extended memory) and a GEOS JOY driver.
+Just make sure that their filenames appear UPPERCASE in DeskTop. There are no more special
+recommendations, read the cc65 documentation about modules and the demo programs source code.
-Functions here are sorted more or less in the way they appear in header files. This way I am able
-to keep functions covering similar task near each other. All function names are identical to those
-from Graphics
-This section covers drawing package of GEOS along with text output routines.
+This section covers the drawing package of GEOS along with text output routines.
-This function sets current pattern to given. There are 32 different patterns in GEOS. You can
+This function sets the current pattern to the given. There are 32 different patterns in GEOS. You can
see them together in the filling box in GeoPaint.
-Parameters to those functions are grouped in InitDrawWindow
-This function only copies contents of Rectangle
-This draws on screen rectangle filled with current pattern.
+This draws on screen a rectangle filled with the current pattern.
-This one draws frame with given line pattern.
+This one draws a frame with the given bit pattern (not a pattern from the GEOS palette).
@@ -209,91 +245,95 @@ Just as the name says...
-These two functions are for copying parts of the screen to (Line Functions
-GEOS drawing package is optimized so there are different functions for drawing vertical and
+The GEOS drawing package is optimized so there are different functions for drawing vertical and
horizontal lines.
-
-This function draws horizontal line using given pattern - here it is a true bit pattern, not
-pattern set by InvertLine
-
-There is only horizontal version.
+There is only a horizontal version.
-
-This function recovers only one line. It is utilized by VerticalLine
-
-This function draws vertical line using given pattern. Note that DrawLine
-
-Point Functions
-Parameters to these two functions are passed by a pointer to own DrawPoint
-
-Draws single point on the screen, no matter what the current pattern is.
+Depending on TestPoint
-This function tests if given pixel is set and returns true or false.
+This function tests if the given pixel is set and returns Character and string output
-
-This function outputs single character using current style and font to screen.
+This function outputs a single character using the current style and font to the screen.
-
-Same as PutDecimal
-
This function converts Font Handling
@@ -301,26 +341,26 @@ values for
-This function returns real width (in pixels) of given character with current font. It can be used
-for counting the length of string on screen, allowing for indentation or justification.
+This function returns the real width (in pixels) of the given character with the current font. It can be used
+for counting the length of a string on the screen, allowing for indentation or justification.
-This function forces GEOS to use given font instead of own. UseSystemFont
-This function forces GEOS to use built-in BSW font.
+This function forces GEOS to use the built-in BSW font.
-I'm not quite sure how are these functions working (except BitmapUp
@@ -328,12 +368,12 @@ if something is wrong or broken.
This function unpacks the bitmap and places it on the screen - just as you set it in the
-BitmapClip
-
This function acts similar to BitOtherClip
-
Similar to the previous one with some extension. Menus and Icons
@@ -355,34 +395,34 @@ Here you will find information about functions related with menus and icons.
-Menus are essencial for GUI. GEOS can handle only one menu at a time, but each menu can call
-another one, which results in submenu tree. There can be up to 8 menu levels, each one with up
+Menus are essential for a GUI. GEOS can handle only one menu at a time, but each menu can call
+another one, which results in a submenu tree. There can be up to 8 menu levels, each one with up
to 32 items.
-Menus are initialized with DoMenu
-This function initializes GEOS menu processor and exits. See ReDoMenu
-This simply redraws the menu at lowest level. It works like calling RecoverMenu
-This function erases current menu from the screen. It doesn't change the menu level.
+This function erases the current menu from the screen. It doesn't change the menu level.
@@ -395,23 +435,23 @@ set to 0 (topmost).
-This functions causes menu processor to go back one menu level. You should use it in menu
+This functions causes the menu processor to go back one menu level. You should use it in menu
handler code to have the screen clean.
-This one jumps back to the topmost menu. If there is only menu and submenu it works the
+This one jumps back to the topmost menu. If there is only a menu and one submenu it works the
same as Icons
+
Icons are working similar to menus except the fact that there is only one level. Icons are
defined as a screen area filled with a bitmap, but if you would setup icons and erase the
-screen they are still active and clicking in the place where formerly an icon was will cause
-an effect. Similary if you would setup icons and then turn them off with DoIcons
@@ -419,7 +459,7 @@ There is only one, but powerful icon function.
This function initializes all icons that are present on the screen at once. For more information
-look at DialogBoxes
@@ -431,43 +471,44 @@ This chapter covers the most powerful GEOS user interface function -
-DialogBox returns one byte. It can be the value of one of six standard icons (see
-Read structures chapter for the specs of the RstrFrmDialogue
-This function called from within DialogBox event immediately closes the DialogBox and returns
+This function is called from within DoDlgBox event. It immediately closes the DialogBox and returns
the owner ID (or whatever caller has in the .A register).
-To simplify usage of DoDlgBox from C I've wrote some help functions - wrappers for DoDlgBox,
+To simplify the usage of DoDlgBox from C I wrote some helper functions - wrappers for DoDlgBox,
with predefined data. In one word - these are standard DialogBoxes you can see in almost every
GEOS application.
-
-
-
-These function show two lines of text in standard-sized DialogBox. You can read the code of
-pressed icon from return value. E.g. for DlgBoxGetString
-This function prompts user for entering a string of at most DlgBoxFileSelect
@@ -476,34 +517,51 @@ to place
This routine is the standard file selector. It can return
At present this file selector handles only first 16 files of given type and supports only one
(current) drive.
+
+
+This function is a more general one. It works very much like
+Note: Use it if you really need (or if you use it in many places) as
+it adds quite amount of code to your program.
+
+Note: the formatted text Mouse, Sprites and Cursors
You will find here functions related to sprite and mouse drawing and handling.
-These cover mouse - as a general pointing device, but expect user to utilize as different devices
-as digital or analog joystick, mouse, lightpen or koalapad (whatever it is).
+These cover the mouse - as a general pointing device, but expect users to utilize as different devices
+as a digital or analog joystick, a mouse, a lightpen or a koalapad (whatever it is).
-This function initializes mouse vectors - ClearMouseMode
-This function disables all mouse actitivies - icons and menus stop to respond to mouse events,
+This function disables all mouse activities - icons and menus stop to respond to mouse events,
but they are not cleared from the screen.
-The first function turns the mouse pointer on. It will appear on next IRQ. The second one does
-the opposite - it turns off the pointer, but its position is still updated by input driver.
+The first function turns the mouse pointer on. It appears on the next IRQ. The second one does
+the opposite - it turns off the pointer, but its position is still updated by the input driver.
-This function tests if mouse pointer is actually in given range of screen. See Sprites
You are free to use any of the eight sprites, but keep in mind that sprite 0 is actually the mouse
-pointer and sprite 1 can be overwritten when using text prompt.
+pointer and sprite 1 can be overwritten when using a text prompt. You don't have to worry about
+40/80 column issues because GEOS128 has a pretty good sprite emulator for the VDC.
This function initializes the sprite data. PosSprite
-This function positions the sprite on the screen. Given coordinates are screen ones - they are
+This function positions the sprite on the screen. The given coordinates are screen ones - they are
converted to sprite coordinates by GEOS. Due to this you cannot use this function to position your
sprite off the left or top to the screen.
@@ -557,7 +616,7 @@ These two functions are responsible for making the sprite visible or not.
-This function initializes sprite 1 for text prompt with given PromptOn and PromptOff
@@ -566,35 +625,38 @@ range 1-48.
-The first function places text prompt in given place and enables its blinking
+The first function places a text prompt in given place and enables blinking.
The second one is pretty self-explanatory.
-This function gets next character from the keyboard queue. If the queue is empty it returns
-Disk
-This chapter covers slightly low-level disk routines. You should use them with care, because
+This chapter covers rather low-level disk routines. You should use them with care, because
you may easily corrupt data on disks. Also remember that contemporary GEOS supports many various
devices and sticking to 1541 track layout (e.g. expecting the directory on track 18) might be
dangerous.
-For some purposes you might consider using
-All GEOS disk functions return error code in X register. In some cases this is returned by
-GEOSLib function (if its type is
-Passing parameters use always e.g. Buffer functions
-These functions are taking single data sector (256 bytes) to read or write on a disk.
+These functions take a single data sector (256 bytes) to read or write on the disk.
@@ -602,7 +664,7 @@ These functions are taking single data sector (256 bytes) to read or write on a
-These functions are reading and writting sector placed at GetBlock and ReadBlock
@@ -610,8 +672,8 @@ These functions are reading and writting sector placed at
-These two functions are reading a single block directly at 256 byte array placed at PutBlock, WriteBlock, VerWriteBlock
@@ -622,21 +684,21 @@ enabled.
-Similar to previous but needed for writting the disk. Directory header
-Functions described here are operating on GetPtrCurDkNm
-This function fills given character string with the name of current disk. It is converted to C
-standard - string is terminated with GetDirHead and PutDirHead
@@ -644,29 +706,29 @@ Note that passed pointer must point to an array of at least 17 bytes.
-These functions are reading and writting the directory header. You should use CalcBlksFree
-
-This function returns the number of free blocks on current disk. It is counted using data in
+This function returns the number of free blocks on the current disk. It is counted using data in
ChkDskGEOS
-This functions checks SetGEOSDisk
-This function initializes disk for use with GEOS. It sets indicator in directory header and
+This function initializes disk for use with GEOS. It sets the indicator in directory header and
allocates a sector for the directory of border files. You don't need to initialize the disk before
using.
@@ -674,13 +736,13 @@ using.
-This function returns the bit value from BAM (Block Allocation Map) for given sector. The bit is
-set if the sector is free to use. Returned value is always zero if the sector is already allocated.
+This function returns the bit value from the BAM (Block Allocation Map) for the given sector. The bit is
+set if the sector is free to use. The returned value is always zero if the sector is already allocated.
In fact, this function could be used in a following way:
-
-
-Both functions are allocating enough disk sectors to fit the number of
-The difference between those two is that
You need to use
-Simply deallocates a block in BAM. You need to update BAM with SetNextFree
@@ -715,21 +777,21 @@ Simply deallocates a block in BAM. You need to update BAM with
This function finds the first free sector starting from given track and sector and allocates it.
It might return the same argument if the given block is not allocated. I wanted it to be type
-clean, but it made usage a bit tricky. To assign a value to own
In this example
-NOTE that you Low-level disk IO
-Functions described here are more usable in kernal or drivers code, less common in applications,
+Functions described here are more usable in Kernal or drivers code, less common in applications,
but who knows, maybe someone will need them.
-These functions are interface to GEOS TurboDos feature which makes slow Commodore drives a bit
+These functions are the interface to the GEOS TurboDos feature which makes slow Commodore drives a bit
more usable.
-This function changes logical number of current device (in fact drives only) with given one. It is
-usable for swapping drives. There's no check if given Disk Initialization
-GEOS has two functions for initialization ('logging' as they say on CP\M) the disk.
+GEOS has two functions for initialization ('logging in' as they say on CP/M) of a disk.
This function initializes everything for a new disk. It loads and enables TurboDos if needed.
Then the disk is initialized with NewDisk
-This function is similar to DOS command I. It clears REU cache and enables TurboDos if needed.
+This function is similar to the DOS command I. It clears the REU cache and enables TurboDos if needed.
-This section cover GEOS file interface.
+This section covers the GEOS file interface.
-Functions described here are common for SEQ and VLIR structures.
+The functions described here are common for SEQ and VLIR structures.
@@ -791,34 +853,33 @@ Functions described here are common for SEQ and VLIR structures.
-These two functions are best suited for scanning whole directory for particular files. Note that
-returned filehandles describes all file slots in the directory - even those with deleted files.
-The return value can be obtained by casting both sides to FindFile
-This function scans whole directory for the given filename. It returns either 0 (success) or 5
-(FILE_NOT_FOUND, defined in FindFTypes
-This function scans directory and fills a table at DeleteFile
@@ -836,17 +897,30 @@ I think it is obvious...
-This function loads the file header into Common and SEQ structure
-Functions described here are common for SEQ and VLIR structures because arguments passed are
-starting track and sector which may point either to start of a chain for VLIR or data for SEQ.
+Functions described here are common for SEQ and VLIR structures because the arguments passed are the
+starting track and sector which may point either to the start of a chain for VLIR or the data for SEQ.
+
+
+
+This routine loads and runs a given file ReadFile
-
This function reads at most
-This function returns next byte from a file. Before the first call to it you must load
-Returned value is valid only if there was no error. End of file is marked as SaveFile
-
+
-
+When saving sequential files the two most important fields in FreeFile
-This function deallocates all sectors contained in passed table.
+This function deallocates all sectors contained in the passed table.
-This function fills a VLIR structure
-Here are informations about VLIR files (called later as RecordFile) and functions.
+Here is information about VLIR files (later called RecordFiles) and functions.
-VLIR is a file which consists of up to 127 SEQ-like files called records. Each record is like one
-SEQ structure file. Records are grouped together, described by common name - VLIR file name and
-own number. Each record pointed by its number is described by starting track and sector numbers.
+A VLIR structure file consists of up to 127 SEQ-like files called records. Each record is like one
+SEQ structure file. Records are grouped together, described by a common name - the VLIR file name and
+an own number. Each record pointed to by its number is described by the starting track and sector numbers.
VLIR structures allow records to be empty (
-In GEOS there can be only one file opened at a time. Upon opening VLIR file some information
-about it are copied into memory. You can retrieve records table at OpenRecordFile
-This function finds and opens given file. An error is returned if file is not found or it is not
+This function finds and opens a given file. An error is returned if the file is not found or if it is not
in VLIR format. Information in CloseRecordFile
@@ -928,16 +1004,16 @@ This function calls
-This function fill check PointRecord
This function will setup internal variables (and NextRecord and PreviousRecord
@@ -951,14 +1027,14 @@ These two work like
-This function will append an empty record ( pair of 255,0 ) to current VLIR track and sector
+This function will append an empty record (pair of 255,0) to the current VLIR track and sector
table. It will also set DeleteRecord
-This function will remove current record from the table, and move all current+1 records one place
+This function will remove the current record from the table, and move all current+1 records one place
back (in the table). Note that there's no BAM update and you must call
This function will insert an empty record in place of ReadRecord and WriteRecord
-
-
-This function will load or save at most Memory and Strings
-Functions covered in this section are common for whole C world - copying memory parts and
-strings is one of the main computer tasks. GEOS also has interface to do this. These functions
-are replacement for those like
+However some of them have slightly different calling conventions (order of arguments to be specific),
+so please check their syntax here before a direct replacement.
+
+Please note that the memory areas described here as CopyString
-This function copies string from CmpString
-This function compares string CopyFString and CmpFString
@@ -1012,59 +1090,61 @@ strings have to have the same length. It returns either
These two are similar to CRC
-
-This function calculates the CRC checksum for given memory range. I don't know if it is
+This function calculates the CRC checksum for the given memory range. I don't know if it is
compatible with standard CRC routines.
-
-
-Both functions are filling given memory range. MoveData
-
-This functions copies one memory region to another. There are checks for overlap and the
-non-destructive method is chosen. Be warned that this function destroys contents of
-InitRam
This function allows to initialize multiple memory locations with single bytes or strings.
-This is done with Stash, Fetch, Swap, and VerifyRAM
+
-
-
-
-
-These functions are interface to REU - Ram Expansion Unit. I think that they are self-explanatory.
+These functions are the interface to a REU - Ram Expansion Unit. I think that they are self-explanatory.
+You can check for REU presence by taking the value of Processes and Multitasking
-Weird? Not at all. GEOS has limited multitasking ability. You can set up a chain of functions
+Weird? Not at all. GEOS has some limited multitasking ability. You can set up a chain of functions
called in specified intervals and you can put the main program to sleep without disturbing other
-tasks and making user interface unresponsive.
+tasks and making the user interface unresponsive.
@@ -1074,11 +1154,11 @@ This is the main initialization routine. After calling it processes are set up,
enabled. The parameters for
-Single task is described by entry in
The maximum number of tasks is 20. Be warned that GEOS doesn't check if parameters are valid and
@@ -1087,7 +1167,7 @@ if
-See description of RestartProcess and EnableProcess
@@ -1095,44 +1175,45 @@ See description of
-These two functions start the task counter.
-
-BlockProcess and UnBlockProcess
+
-
-
-FreezeProcess and UnFreezeProcess
+
-
-Sleep
-
-This function is multitasking sleep - the program is halted, but it doesn't block other functions.
-The only argument here is the number of jiffies to wait until app will wake up.
+
-You can force to sleep not only the main application routine, but also processes-tasks. Be warned
-that the maximum number of sleeping functions is 20. If it would be larger it will overwrite
-parameters of already sleeping functions in GEOS kernal data space, leading to crash.
+This function is a multitasking sleep - the program is halted, but it doesn't block other functions
+e.g. callbacks from menus and icons.
+The only argument here is the number of jiffies to wait until the app will wake up. It depends on the
+video mode (PAL or NTSC) how many jiffies there are per second (50 or 60, respectively).
+If you don't want to worry about it and need only full second resolution, call the standard
+System
+
@@ -1148,57 +1229,65 @@ up. You shouldn't use this unless you know what you are doing.
These functions are called by some disk routines. You should call them only if you want to
-do something with IO registers or call one of Kernal's routines.
+do something with IO registers or call one of the Kernal ROM routines. Note that this is rather an
+expensive way of turning off IRQs and enabling IO.
-Your programs exits to MainLoop upon exiting from EnterDeskTop
-This is default exit code of your application. It is finish of ToBASIC
-This one is another way of finishing application - forcing GEOS to shutdown and exit to BASIC.
-I was considering whether to include it or not, but maybe someone will need it. Which is I doubt.
+This one is another way of terminating an application - forcing GEOS to shutdown and exit to BASIC.
+I was considering whether to include it or not, but maybe someone will need it - which I doubt.
+
+Panic
-This calls system's
-This is system caller routine. You need to provide pointer to a function and it will be immediately
+This is a system caller routine. You need to provide a pointer to a function and it will be immediately
called, unless the pointer is equal to GetSerialNumber
-
-This function returns the serial number of system. It might be used for copy-protection, but you
-shouldn't do this. Please remember that the Free Software is a true power.
+This function returns the serial number of the system. It might be used for copy-protection.
+However, please remember that Free Software is a true power and you are using it right now.
@@ -1209,48 +1298,75 @@ This function returns a random number. It can be also read from
but by calling this function you are sure that the results will be always different.
-
+Note that this is not the same as the SetDevice
-This function sets current device to given. It might be used together with get_ostype
+
+
+This function returns the GEOS Kernal version combined (by logical OR) with the machine type. Read
+get_tv
+
+
+This function returns the PAL/NTSC flag combined (by logical OR) with the 40/80 columns flag. This is
+not the best way to check if the screen has 40 or 80 columns since a PAL/NTSC check is always
+performed and it can take as long as a full raster frame. If you just want to know if the
+screen has 40 or 80 columns use the expression Library Structures
To simplify usage and optimize passing parameters to functions I have declared several structures
-which describe most common objects. Some of these structures are binded to static addresses in
-GEOS data space ($8000-$8fff), so you can use their fields directly in optimized way.
-Please see Graphics
+
-One simple structure describing a point on the screen.
+A simple structure describing a point on the screen.
-This structure describes a font in one pointsize. There is current font - window
-This widely used structure holds description of a region of the screen. It describes top-left and
+This widely used structure holds the description of a region of the screen. It describes the top-left and
bottom-right corners of a window.
Maybe the name isn't the best - it has nothing with icondef
-This is the definition of a single click box. Please see icontab
-This is toplevel description of icons to be placed and enabled on the screen. This structure
-has following fields:
+This is the toplevel description of icons to be placed and enabled on the screen. This structure
+has the following fields:
-This simple structure holds track and sector number of something. Do not expect the track to be
+This simple structure holds the track and sector number of something. Do not expect the track to be
in range 1-35, as GEOS can support many various and weird devices. For example my C128 256K
-expansion is utilized as RAMDisk with layout of 4 tracks 128 sectors each. However assuming that
-track number equal to 0 is illegal might be wise.
+expansion is utilized as RAMDisk with a layout of 4 tracks of 128 sectors each. However assuming that
+a track number equal to 0 is illegal might be wise.
-This is placeholder for file datestamp. This structure is also present in filehandle
-This is main file descriptor. It is either entry in the directory (returned from file functions)
+This is the main file descriptor. It is either an entry in the directory (returned from file functions)
or its copy in fileheader
-This structure holds fileheader description. You can load file's header into System
+
This structure is defined only for
You should declare a table of that type to prepare data for Few thing in detail...
+
GEOSLib uses cc65 non-ANSI extensions to easily initialize data in memory. This is done with a
-kind of array of unspecified length and unspecified type. Here is how it goes:
+kind of array of unspecified length and unspecified type. Here is how it works:
-Menu is described by two types of data - menu descriptors and menu items. Descriptor contains
-information about following menu items, and items are containing names of entries and either
+A menu is described by two types of data - menu descriptors and menu items. A descriptor contains
+information about the following menu items, and items contain names of entries and either
pointers to functions to execute or, in case of nested menus, pointers to submenu descriptors.
Note that submenu descriptor can be top-level descriptor, there's no difference in structure,
just in the content.
-Here is how single descriptor looks like:
+Here is how a single descriptor looks like:
-The first element can be specified in two ways - by using default size and position or specifying
-own. The first case results in
+The first element can be specified in two ways - by using the default size and position or specifying
+your own. The first case results in
-The next element of
-
Here is an example for clearing the screen:
-This type of data is used to initialize one or more bytes in many places at once. The format is
-as following:
+This type of data is used to initialize one or more bytes in different locations at once. The format is
+the following:
+It is possible to intercept events and hook into the GEOS Kernal using vectors. Here is a little example:
+
+In your
+It is critical to restore old vector values before exiting the program. If you have more than one
+place where you call
+That little example above intercepts
+