-
Notifications
You must be signed in to change notification settings - Fork 3
Useful assembly libraries for BSW GEOS operating system programming
License
bozimmerman/geoModules
Folders and files
Name | Name | Last commit message | Last commit date | |
---|---|---|---|---|
Repository files navigation
geoModules (C)1997-2023 Bo Zimmerman Please read the LICENSE file for license information Please read the NOTICE file for credits information Home Page: http://www.zimmers.net/geos/geomods.html The geoModules project The purpose of my geoModules project:. The user interface standards of GEOS are well known to users and programmers alike, and this creates the constant threat of duplicate code whenever a new app is written. With this in mind, I embarked on my geoModules project with the following goals: That each module should support a single programming purpose. That each module be self contained and self reliant. All modules use shared temporary space. All module functions support a common function-calling convention. All modules adopt a standard naming convention to support the function-calling conventions, as well as naming all local labels by beginning the name with a three character code unique to that module. The implementation of these goals required that first a meta-module be created to provide the common temporary work space, and a common set of routines to support the calling standard calling convention. The Common Function Interface The function interface for all modules is as follows: All functions have a normal and in-line call. Normal calls are unprotected. Registers are not saved, and all parameters must be manually loaded into the proper registers before calling. In-line calls are protected. Registers A2-A6 are saved, along with the .y register. In-line function names begin with the standard "i_" prefix. All functions will use the module and common work space, system registers, and application registers A2-A6 only. Parameters may be pointers, characters, or whatever will fit in registers A2-A6, which is the limit of the parameter passing space. This common functional interface is supported by a single linkable module called "APIcommon". It is required of all modules that they be linked along with this "metamodule" in order to make use of the shared resources. APIcommon contains four 20 character temporary buffers to be shared by all modules, and also includes the following functions: APISavRegs: saves the status register, .a, and .x APIResRegs: restores .a, .x, and the status register APISavSys: calls APISavRegs, saves GEOS registers A2-A6, and then APIResRegs APIinit: Calls APISavSys, and saves its return address APIreturn: Calls APISavRegs, restores the return address, and restores A2-A6 geoModules implemented Below are all of the modules hitherto implemented along with their functions and parameters. They are all tested unless otherwise noted. MODstring - Various string handling routines MODwin2 - Dual movable windows module MODflist - Directory files/list handling routines MODclicks - Random click area helper code MODdaAB - Desk accessory menu and About menu module MODferr - File/Disk error message box MODscrn - General OK, Cancel, and Yes/No dialogs MODvPrg - VLIR application support module MODfbox - Open/Create/Quit box, along with support dialogs MODseqR - Opening and reading from sequential-type files. MODseqW - Create and write to sequential-type files. MODgeoRx - Opening and reading geoWrite documents to a window. MODgeoWx - Creation and writing to geoWrite documents. MODsecIO - Support for reading to and from disk sectors in order. MODtbox - Multi-line text box support. MODdemo - Assist in creation of limited-use demo applications. MODconvert - Convert and Unconvert GEOS files to and from .CVT. MODfcopy - Copy any file type from one drive to another. MODem64 - User port modem interactions for C64. MODem128 - User port modem interactions for C128. MODmodem - Shared code for MODem64 & MODem128 - DO NOT USE MODreuX - Use a REU/geoRAM as read/write stream. MODxmodem - X-Modem serial transfer protocol. Requires MODem64/128 ------------ MODstring ------------ Introduction: This module is intended to handle all facets of string manipulation. A string is defined as a sequential series of bytes representing GEOS ASCII characters, and terminated by a null character (0). Functions: Append String: appends the source string to the end of the destination string. Return Values: returns the high byte of string length in .a and low byte in .x AppStr A2 Pointer to destination string A3 Pointer to source string i_AppStr .word Pointer to destination string .word Pointer to source string String Length: returns the length of a string Return Values: returns the high byte of string length in .a and low byte in .x StrLen A2 Pointer to source string i_StrLen .word Pointer to source string Reverse Strng: reverses (mirror images) the characters in a given string Return Values: returns the high byte of string length in .a and low byte in .x RevStr A2 Pointer to source string i_RevStr .word Pointer to source string To Uppercase : converts a string to uppercase characters Return Values: returns the high byte of string length in .a and low byte in .x ToUpper A2 Pointer to source string i_ToUpper .word Pointer to source string To Lowercase : converts a string to lowercase characters Return Values: returns the high byte of string length in .a and low byte in .x ToLower A2 Pointer to source string i_ToLower .word Pointer to source string To PETSKII : converts a string to the CBM "PETSKII" character set Return Values: returns the high byte of string length in .a and low byte in .x ToPETSKII A2 Pointer to source string i_ToPETSKII .word Pointer to source string To Uppercase : converts a null terminated CBM "PETSKII" string to GEOS ASCII characters Return Values: returns the high byte of string length in .a and low byte in .x ToASCII A2 Pointer to source string i_ToASCII .word Pointer to source string Inside String: Locates the location of one string inside another Return Values: returns the high byte of found string in .a and low byte in .x, null otherwise InStr A2 Pointer to source string A3 Pointer to string to search for i_InStr .word Pointer to source string .word Pointer to string to search for Compare Strng: Compares two strings Return Values: returns result of the search in .a, .x has 0 CmpStr A2 Pointer to first string A3 Pointer to second string i_CmpStr .word Pointer to first string .word Pointer to second string Copy Strings : Copies first string into the second Return Values: returns the high byte of string length in .a and low byte in .x CpyStr A2 Pointer to source string A3 Pointer to destination string i_CpyStr .word Pointer to source string .word Pointer to destination string ------------ MODwin2 ------------ Introduction: This powerful modules provides support for the creation of two movable, resizable, overlapping windows. The windows contain a centered titlebar, and two work bars on the right and bottom, which the programmer may use as he pleases. They also contain a programmable close button on the top right, and a resizing gadget on the bottom right. The windows are moved by dragging the window by the title bar. The windows are initialized by calling Win1Mv, Win2Mv, Win1Init, Win2Init, and finally WindInit. Only that last should receive a non-null for the "Draw Now" parameter. Also, WindInit must only be called once per application, while the others may be re-called at will. Functions: Window 1 Move: Initializes the position of, or moves, Window 1. Return Values: NONE Win1Mv A2L The top position for the window A2H The bottom position for the window A3 The left position for the window A4 The right position for the window A5L Draw Now flag (0=no, 1=yes) i_Win1Mv .byte The top position for the window .byte The bottom position for the window .word The left position for the window .word The right position for the window .byte Draw Now flag (0=no, 1=yes) Window 2 Move: Initializes the position of, or moves, Window 2. Return Values: NONE Win2Mv A2L The top position for the window A2H The bottom position for the window A3 The left position for the window A4 The right position for the window A5L Draw Now flag (0=no, 1=yes) i_Win2Mv .byte The top position for the window .byte The bottom position for the window .word The left position for the window .word The right position for the window .byte Draw Now flag (0=no, 1=yes) Window 1 Init: Initializes certain variables for Window 1 Return Values: NONE Win1Init A2 Pointer to null terminated titlebar string A3 Pointer to a routine to execute when close button clicked A4 Pointer to code to complete drawing of this window A5L Enabled flag (1=enabled, 0=disabled) i_Win1Init .word Pointer to null terminated titlebar string .word Pointer to a routine to execute when close button clicked .word Pointer to code to complete drawing of this window .byte Enabled flag (1=enabled, 0=disabled) Window 2 Init: Initializes certain variables for Window 2 Return Values: NONE Win1Init A2 Pointer to null terminated titlebar string A3 Pointer to a routine to execute when close button clicked A4 Pointer to code to complete drawing of this window A5L Enabled flag (1=enabled, 0=disabled) i_Win1Init .word Pointer to null terminated titlebar string .word Pointer to a routine to execute when close button clicked .word Pointer to code to complete drawing of this window .byte Enabled flag (1=enabled, 0=disabled) IsOverlapping: Returns whether the two windows are presently overlapped. * Unprotected. Return Values: .a $ff=overlapped, 0=no overlap IsOverlap ReDraw Windw1: Completely redraws window 1. Must set dispBufferOn first. * Unprotected. Return Values: NONE DrawWin1 ReDraw Windw2: Completely redraws window 2. Must set dispBufferOn first. * Unprotected. Return Values: NONE DrawWin2 ReDraw Active: Completely redraws active window. Must set dispBufferOn first. * Unprotected. Return Values: NONE DrawWinA ReDraw InActv: Completely redraws inactive window. Must set dispBufferOn first. * Unprotected. Return Values: NONE DrawWinI Ready Window1: Copies the coordinates of window 1 into R2-R4. *Unprotected. Return Values: R2L - Top of window R2H - Bottom of window R3 - Left coordinate of window R4 - Right coordinate of window RedyWin1 Ready Window2: Copies the coordinates of window 2 into R2-R4. *Unprotected. Return Values: R2L - Top of window R2H - Bottom of window R3 - Left coordinate of window R4 - Right coordinate of window RedyWin2 Ready Active : Copies the coordinates of active window into R2-R4. *Unprotected. Return Values: R2L - Top of window R2H - Bottom of window R3 - Left coordinate of window R4 - Right coordinate of window RedyWinA Ready InActiv: Copies the coordinates of inactive window into R2-R4. *Unprotected. Return Values: R2L - Top of window R2H - Bottom of window R3 - Left coordinate of window R4 - Right coordinate of window RedyWinI Get Str Width: Returns the pixel width of a given string. *Unprotected. Return Values: APITemp2 contains width of string in LB/HB format. GetStrWidth R0 points to null-terminated string Win Activate : Activates (brings to the foreground) a particular window and redraws. Return Values: NONE WinAct A2L 0 = swap, 1=activate Window 1, 2=activate Window 2 i_Winact .byte 0 = swap, 1=activate Window 1, 2=activate Window 2 ------------ MODflist ------------ Introduction: Handles the retreival of complete disk filename lists into a buffer as null-terminated strings. It also includes all manner of traversal and display routines for any lists formatted in this way. Functions: Get File List: Retreives a buffer of filenames from the current drive. Return Values: .x contains standard errors FileList A2 Pointer to a destination buffer A3 Pointer to the end of the destination buffer i_File2List .word Pointer to a destination buffer .word Pointer to the end of the destination buffer Get File List 2: Retreives a buffer of filenames from the current drive. This version is slightly more versatile than Get File List Return Values: .x contains standard errors File2List A2 Pointer to a destination buffer A3 Pointer to the end of the destination buffer A4L Number of file entries to skip A4H Maximum number of file entried to read i_File2List .word Pointer to a destination buffer .word Pointer to the end of the destination buffer .byte Number of file entries to skip .byte Maximum number of file entried to read Copy Filename: Copies a $A0 terminated filename string into a null terminated string buffer. Return Values: NONE CopyFnam A2 Pointer to the filename A3 Pointer to the destination string buffer i_CopyFnam .word Pointer to the filename .word Pointer to the destination string buffer Print a List : Displays a list inside of a window Return Values: .a = whether a filename was highlighted, .x = total files displayed PrntList A2 Pointer to the first string to display A3L Which filename (relative to the first) to highlight R2L Top of the box to print inside R2H Bottom of the box to print inside R3 Left side of the box to print in R4 Right side of the box to print in i_PrntList .word Pointer to the first string to display .byte Which filename (relative to the first) to highlight R2L Top of the box to print inside R2H Bottom of the box to print inside R3 Left side of the box to print in R4 Right side of the box to print in Go Down List : Skip down a number of strings in a list Return Values: .x = 0 if ok, 1 of error DownList A2 Pointer to the first string A3 Pointer to a place to put the result pointer A4L How far down to skip i_DownList .word Pointer to the first string .word Pointer to a place to put the result pointer .byte How far down to skip Go Up in List: Travel up a list of null-terminated strings Return Values: .x = 0 if ok, 1 of error UpList A2 Pointer to the current string A3 Pointer to the start of the list A4 Pointer to a place to put the result pointer A5L How far up to skip i_UpList .word Pointer to the current string .word Pointer to the start of the list .word Pointer to a place to put the result pointer .byte How far up to skip Click in List: Determine if one of the items in a list has been clicked on Return Values: .x = 0 if none, or the filename number clicked on ClkList R2L Top of the box to print inside R2H Bottom of the box to print inside R3 Left side of the box to print in R4 Right side of the box to print in Pick frm List: Select (highlight) an item in a list Return Values: .x = 0 if ok, 1 if not done PikList A2L Which item number to affect R2L Top of the box to print inside R2H Bottom of the box to print inside R3 Left side of the box to print in R4 Right side of the box to print in i_PikList .byte Which item number to affect R2L Top of the box to print inside R2H Bottom of the box to print inside R3 Left side of the box to print in R4 Right side of the box to print in ------------ MODclicks ------------ Introduction: Remembers the dimensions of 20 or more click areas (buttons, or whatever). Includes functions to dynamically set the click areas, detect mouse clicks within them, and automatically handle these clicks. Functions: Set a Click : Set or change a click area Return Values: NONE SetClick A2L Top of the click area A2H Bottom of the click area A3 Left side of click area A4 Right side of the click area A5 Routine to execute on click (or null if none) A6L Click area ID number to set (1-20) i_SetClick .byte Top of the click area .byte Bottom of the click area .word Left side of click area .word Right side of the click area .word Routine to execute on click (or null if none) .byte Click area ID number to set (1-20) Set Click Win: Set or change a click area using window data Return Values: NONE WSetClick A2 Routine to execute on click (or null if none) A3L Click area ID number to set (1-20) R2L Top of the click area R2H Bottom of the click area R3 Left side of click area R4 Right side of the click area i_WSetClick .word Routine to execute on click (or null if none) .byte Click area ID number to set (1-20) R2L Top of the click area R2H Bottom of the click area R3 Left side of click area R4 Right side of the click area Check Click : Determine if a click area has been clicked in Return Values: .x = 0 if clicked inside, $ff if not clicked inside ChkClick A2L Click area ID number to check (1-20) i_ChkClick .byte Click area ID number to check (1-20) Do a Click : Check if a click area's selected; execute its routine if so. * Unprotected. Return Values: NONE DoClick A2L Click area ID number to check (1-20) Do all Clicks: Check all active click areas; execute routines if necessary. * Unprotected. Return Values: NONE DoAllClicks ------------ MODdaAB ------------ Introduction: This great module handles the initialization of a GEOS menu to include all desk accessories on the current drive. It will handle execution of the desk accessories on this menu when appropriate. It also includes a "program info" (about) option off the geos menu, and will display a dialog box with strings of your choice on selection of this option. After this module is initialized, it must be linked to your main menu code by pointing your "geos" menu to the structure "DAABMenu". Functions: Init DAs, Abt: Initialize the functionality of this module Return Values: NONE InitDaAb A2 Routine pointer to refresh the screen after about box display (or null) A3 Routine pointer to refresh the app after desk accessory return (or null) A4 Routine pointer to save app data before desk accessory execute (or null) A5 Pointer to a buffer of four strings to display in the about box i_InitDaAb .word Routine pointer to refresh the screen after about box display (or null) .word Routine pointer to refresh the app after desk accessory return (or null) .word Routine pointer to save app data before desk accessory execute (or null) .word Pointer to a buffer of four strings to display in the about box ------------ MODferr ------------ Introduction: Displays a dialog box with one of the GEOS disk error messages. Functions: File Error : Display an error dialog box Return Values: NONE FError .x error message to generate, or 0 to abort ------------ MODscrn ------------ Introduction: Module to contain some common screen controls. Functions: Clear Screen : Clear the screen with the standard GEOS fill pattern Return Values: NONE ClrScrn OK Box Disply: Display an OK dialog box with a short message. Return Values: NONE OKBox A2 Pointer to string message to display i_OKBox .word Pointer to string message to display CANCEL Box : Display a CANCEL dialog box with a short message. Return Values: NONE CNCLBox A2 Pointer to string message to display i_CNCLBox .word Pointer to string message to display Yes/No Box : Display a Yes/No dialog box with a short message. Return Values: NONE YNBox A2 Pointer to string message to display i_YNBox .word Pointer to string message to display OK/Cancel Box : Display an OK/Cancel dialog box with a short message. Return Values: NONE OKCANBox A2 Pointer to string message to display i_OKCANBox .word Pointer to string message to display ------------ MODvPrg ------------ Introduction: Module to support VLIR applications with module loading/app init functions. Functions: Init VLIR : Initialize VLIR application by reading in links. Return Values: .x error message if any InitVPrg A2 Pointer to application permanent name i_InitVPrg .word Pointer to application permanent name Load module : Swap a new code module into memory. Return Values: .x error message if any LdMod A2L Module number to load in (1..2..3..) i_LdMod .byte Module number to load in (1..2..3..) Virtual Jump : Swap a new code module into memory and jump to an offset routine. Return Values: .x error message if any VJump A2L Module number to load in (1..2..3..) A2H Offset from VPRGBase to execute (0,3,6,9,etc.) i_VJump .byte Module number to load in (1..2..3..) .byte Offset from VPRGBase to execute (0,3,6,9,etc) ------------ MODfbox ------------ Introduction: Module to support all major opening file screens for a workfile based application. This includes the standard OPEN an existing file/CREATE a new file/QUIT to deskTop. The Open/Create screens screens include fully functional DISK/DRIVE icons which are sensitive to the application disk (see curDrive below), and to single drive systems. The Create box will check for already existing files. Auto-clicked filenames are also supported. Functions: Opening Box : Handle all opening screens as described in introduction. Return Values: A5 - the filename created or selected curDrive - the drive the file was opened from/created sysDBData - $00 if create done, $ff if open FileBox A2 Pointer to any extra display code besides the opening screen. A3 Pointer to any clean up code for the A2 routine A4 Pointer to the permanent name for data files A5 Pointer to destination for opened/created file name curDrive the application drive (no DISK icon will appear on this drive) ------------ MODseqW ------------ Introduction: The creation of standard commodore sequential and program files is supported here as well as writing to them. All write/file buffers are maintained internally. Only one open file is supported at present. Functions: Create SF : Create the file on disk and prepare for writing Return Values: .x error message if any CreatSF A2 Pointer to seq file name i_CreatSF .word Pointer to seq file name Put S Byte : Output a single character to the current file Return Values: .x error message if any PutSByte A2L Character to output i_PutSByte .byte Character to output Put S String : Output a null-terminated string to the current file Return Values: .x error message if any PutSString A2 Pointer to the string to output i_PutSString .word Pointer to the string to output Put S Buffer : Output a buffer of data to the current file Return Values: .x error message if any PutSBuf A2 Pointer to the buffer to output A3 Number of bytes in the buffer i_PutSBuf .word Pointer to the buffer to output .word Number of bytes in the buffer Put S Memory : Output a block of memory to the current file Return Values: .x error message if any PutSMem A2 Pointer to the buffer to output A3 Pointer to the last byte in the buffer i_PutSMem .word Pointer to the buffer to output .word Pointer to the last byte in the buffer Copy filename: Copy an $a0 terminated string to a standard one Return Values: none CpyFName A2 Pointer to filename A3 Pointer to destination Fname Uppcase: Make an $a0 terminated string uppercase (for C= files) Return Values: none MakeFNUpp A2 Pointer to filename Close SF : Close the last page in the file and close the file. Return Values: .x error message if any ClosSF A2L File type to save as i_ClosSF .byte File type to save as ------------ MODgeoWx ------------ Introduction: This module supports the creation and SEQUENTIAL writing of genuine geoWrite 2.0 style files. This version is compatible with MODvPrg above, meaning that the file will remain open no matter what virtual block of code is loaded into memory. However, this means that all the standard disk block buffers ($8000-$8300) were extensively used. Pictures are also supported, as well as auto-matic page breaking after 65 lines. Functions: Create WF : Create the geoWrite file on disk and prepare the first page Return Values: .x error message if any CreatWF A2 Pointer to geoWrite file name i_CreatWF .word Pointer to geoWrite file name Put W Byte : Output a single character to the current page Return Values: .x error message if any PutWByte A2L Character to output i_PutWByte .byte Character to output Put W String : Output a null-terminated string to the current page Return Values: .x error message if any PutWString A2 Pointer to the string to output i_PutWString .word Pointer to the string to output Put W Buffer : Output a buffer of data to the current page Return Values: .x error message if any PutWBuf A2 Pointer to the buffer to output A3 Number of bytes in the buffer i_PutWBuf .word Pointer to the buffer to output .word Number of bytes in the buffer Put W Memory : Output a block of memory to the current page Return Values: .x error message if any PutWMem A2 Pointer to the buffer to output A3 Pointer to the last byte in the buffer i_PutWMem .word Pointer to the buffer to output .word Pointer to the last byte in the buffer Put W Picture: Output a photo-scrap picture to the current page. Picture scrap should be organized as .byte width, .byte height, and then the data. Return Values: .x error message if any PutWPic A2 Pointer to the scrap to output A3 Pointer to the last byte in the buffer i_PutWPic .word Pointer to the scrap to output .word Pointer to the last byte in the buffer geoWrite Page: Close the current page and start a new page (Next Page). Return Values: .x error message if any GWPage Close WF : Close the last page in the geoWrite file and close the file. Return Values: .x error message if any CloseWF A2 Pointer to geoWrite file name i_CloseWF .word Pointer to geoWrite file name ------------ MODseqR ------------ Introduction: The reading of standard commodore sequential and program files is supported here. All read/file buffers are maintained internally. Only one open file is supported at present. Functions: Open SF : Open the sequential file for reading. Return Values: .x error message if any OpenSF A2 Pointer to file name A3L Drive search flag, 0=current only i_OpenSF .word Pointer to file name .byte Drive search flag, 0=current only Get S Byte : Input a single character from the current file Return Values: .a byte read in, .x error message if any GetSByte Get S String : Input a null-terminated string from the current file Return Values: String where designated, .x error message if any GetSString A2 Pointer to the string destination buffer i_GetSString .word Pointer to the string destination buffer Get S Buffer : Input a buffer of data from the current file Return Values: Data at designated place, .x error message if any GetSBuf A2 Pointer to the buffer for input A3 Maximum number of bytes to read in i_GetSBuf .word Pointer to the buffer for input .word Maximum number of bytes to read in Get S Memory : Input a block of memory from the current file Return Values: Data at designated place, .x error message if any GetSMem A2 Pointer to the buffer for input A3 Pointer to the last byte in the buffer i_GetSMem .word Pointer to the buffer for input .word Pointer to the last byte in the buffer ------------ MODseqR ------------ Introduction: The reading of standard commodore sequential and program files is supported here. All read/file buffers are maintained internally. This library allows multiple files may be opened. Functions: Open SF : Open the sequential file for reading. Return Values: .x error message if any OpenSF A2 Pointer to file name A3L File number to open (1, 2, 3...) A3L Drive search flag, 0=current only i_OpenSF .word Pointer to file name .byte File number to open (1, 2, 3...) .byte Drive search flag, 0=current only Read S Byte : Input a single character from a file Return Values: .a byte read in, .x error message if any ReadSB * unprotected A2L File number (1, 2, 3...) ------------ MODsecIO ------------ Introduction: This module supports reading from and writing to direct disk sectors in clumps. Only useful for disk archiver so far, but I may find another use in the future. Functions: SectorIO Init: Open the disk for reading/writing Return Values: .x error message if any SecIOinit .a Device/Drive to Open i_SecIOinit .byte Device/Drive to Open PutWholeTrack: Write an entire track out from the buffer Return Values: .x error message if any PutWTrk A2 Pointer to track buffer TRACK Pre-set i_PutWTrk .word Pointer to track buffer TRACK Pre-set ReadWholeTrak: Read an entire track into a buffer Return Values: Data where designated, .x error message if any ReadWTrk A2 Pointer to the destination buffer A3 Buffer end byte pointer TRACK Pre-set i_ReadWTrk .word Pointer to the destination buffer .word Buffer end byte pointer TRACK Pre-set Read Sectors : Read as many sectors as will fit in the buffer Return Values: Data where designated, .x error message if any ReadSecs A2 Pointer to the destination buffer A3 Buffer end byte pointer TRACK Pre-set SECTOR Pre-set i_ReadSecs .word Pointer to the destination buffer .word Buffer end byte pointer TRACK Pre-set SECTOR Pre-set Write Sectors: Write as many sectors as fit in the buffer Return Values: .x error message if any WriteSecs A2 Pointer to the source buffer A3 Buffer end byte pointer TRACK Pre-set SECTOR Pre-set i_WriteSecs .word Pointer to the source buffer .word Buffer end byte pointer TRACK Pre-set SECTOR Pre-set ------------ MODgeoRx ------------ Introduction: Given a particular window size, this module supports displaying and navigating the pages of a geoWrite document. Coded so far is support for Fonts, pictures, styles, and rulers. Functions: Init geoRead : Initialize the module for geoWrite file reading Return Values: .x error message if any InitGeoR A2 Pointer to font buffer A3 Size of font buffer A4 Pointer to page buffer A5 Size of page buffer A6 Pointer to pages buffer i_InitGeoR .word Pointer to font buffer .word Size of font buffer .word Pointer to page buffer .word Size of page buffer .word Pointer to pages buffer Open geoW doc: Open a geoWrite document for reading Return Values: .x error message if any OpenGeoR A2 Pointer to the file name A3L Top row of window A3H Bottom row of window A4 Left col of window A5 Right col of window i_OpenGeoR .word Pointer to the file name .byte Top row of window .byte Bottom row of window .word Left col of window .word Right col of window Load page : Read current geoWrite doc page into memory Return Values: .x error message if any LoadGPg i_LoadGPg Show page : Show current geoWrite doc page on screen Return Values: .x error message if any ShowGPg i_ShowGPg Previous page: Read previous geoWrite doc page into memory Return Values: .x error message if any PrevGPg i_PrevGPg Next page : Read next geoWrite doc page into memory Return Values: .x error message if any NextGPg i_NextGPg ------------ MODtbox ------------ Introduction: Supports the maintenance of one or more text boxes which may have character limits for both input and display, and also may be more than one line. Functions: Open TextBox : Begin taking input from a text box Return Values: Data in appropriate buffer OpenTBox A2 Pointer to text buffer A3L Maximum number of lines A3H Maximum number of characters R2-R4 Dimensions of the input buffer i_OpenTBox .word Pointer to text buffer .byte Maximum number of lines .byte Maximum number of characters R2-R4 Dimensions of the input buffer Print TextBox: Display the text in a text box Return Values: none PrintTBox A2 Pointer to text buffer A3L Maximum number of lines A3H Maximum number of characters R2-R4 Dimensions of the input buffer i_PrintTBox .word Pointer to text buffer .byte Maximum number of lines .byte Maximum number of characters R2-R4 Dimensions of the input buffer Close TextBox: Remove focus from a text box Return Values: none TBoxClose ResumeTextBox: If a text box has been closed, this routine resumes entry without reopening Return Values: none TBoxResume ------------ MODdemo ------------ Introduction: For a special edition of ChromeMag, I received permission from LoadStar to republish many of my old GEOS programs. To encourage people to actually purchase the edition of LoadStar from which these programs came, I added code that would mark both the disk and the file with a counter. The same code then used the counter to enforce a limit on the number of times the program would run. Functions: Set Demo : Evaluate whether the limit of execution for this program has expired. Return Values: .x $0 means the program may execute, $ff means it may not SetDemo A2 Name of the executable A3L Identifying code number (from $bd - $dc) A3H Maximum number of times to run i_SetDemo .word Name of the executable .byte Identifying code number (from $bd - $dc) .byte Maximum number of times to run ------------ MODconvert ------------ Introduction: The Convert series of applications has long been a staple in the GEOS world, allowing the non-standard GEOS formatted file to be changed into a more standard sequential style file, and back again. This allows the files to be easily transmitted between different computers. This module contains the basic functionality of that process. Functions: Convert : Convert a GEOS file to a .CVT file (sequential format) Return Values: .x $0 is ok, $ff means that the file was not a GEOS file, and other is error. Convert A2 Name of GEOS file to convert i_Convert .word Name of GEOS file to convert unConvert : Convert a .CVT (sequential format) file back to the GEOS format. Return Values: .x $0 is ok, $ff means that the file was not a .CVT file, and other is error. unConv A2 Name of .CVT file to unconvert i_Convert .word Name of .CVT file to unconvert ------------ MODfcopy ------------ Introduction: Quite simply, this module supports copying of a file of any file type between two drives. The copy buffer must be supplied by the application, and must be between 3 and 126 blocks long. Functions: FileCopy : Copy a file from the current drive to a given destination drive. Return Values: .x $0 is ok, other is a disk error FileCopy A2 Name of the source file A3 Name of the destination file A4 Address of the beginning of the copy buffer A5 Address of the end of the copy buffer (+1) A6L The destination drive device number i_FileCopy .word Name of the source file .word Name of the destination file .word Address of the beginning of the copy buffer .word Address of the end of the copy buffer (+1) .byte The destination drive device number ------------ MODreuX ------------ Introduction: A module for reading and writing to REU memory as a file device, forward and backward, after dynamically checking for a free block. Maintains its own small buffer. Functions: Open Ram : Open buffer for reading. Return Values: .x $0 is ok, other is an error finding free ram space OpenRR Seek Ram : Seek to read position Return Values: .x $0 is ok, other is an error finding position SeekRR A2 Pointer to new read position (0-n) Get Ram Byte : Read byte from open buffer, advance Return Values: .a contains byte read, .x $0 is ok, other is an error GetRByte Get Reverse Byte : Read byte from open buffer, go backwards Return Values: .a contains byte read, .x $0 is ok, other is an error GetRevB Create Ram Write : Create/Reset write buffer Return Values: .x $0 is ok, other is an error CreatRW Put Ram Byte : Write to open write buffer Return Values: No error, since buffer is a loop PutRByte .a Byte to write out Flush Ram : Flush written bytes to REU Return Values: FlushR ------------ MODem64 MODem128 MODmodem ------------ Introduction: A module for reading and writing to an RS-232 device connected to a C64 or C128 user port such as traditional or internet modems. Functions: Com Init : Initialize RS-232 system Return Values: none ComInit A2L Input Buffer Addr Page A2H Size of A2 Buf in Pages (unimpl) A3L Baud Rate Code (0=300, 1=1200, 2=2400, 3=4800, 4=7200,5=9600,6=144, 7=192) A3H Flow Control Code (0=None, $40=XOFF, $80=RTSCTS,$C0=BOTH) Com Uninstall: Remove RS-232 system. Should be called before exiting program or calling DA. Return Values: none ComUninst Com Re-Init: Re-Initialize RS-232 system, for when Com Uninstall was previously called. Return Values: none ComReInit Com Disable: Disable RS-232 system, for temporary safety when doing I/O. Return Values: none ComDisable Com Enable: Re+Enable disabled RS-232 system, for when ComDisable was previously called. Return Values: none ComEnable Com Online: Check whether DCD is high Return Values: N = 0, not online, N > 0, online ComOnline Com Send: Send byte to RS-232 Return Values: none ComSend .a Byte to send Com Safe Put: Safe Send byte to RS-232 Return Values: none ComSPut .a Byte to send Baud Set: Change RS-232 Baud Rate Return Values: none BaudSet A2L Baud Rate Code (0=300, 1=1200, 2=2400, 3=4800, 4=7200,5=9600,6=144, 7=192) Is NTSC: Is the computer NTSC? Return Values: none IsNTSC Pause Second: Pause about a second Return Values: Lost Time. PauSec Com Get: Read RS-232 Byte Return Values: .carry set=nada, clear=byte, .a the byte received or 0 ComGet Com Flon: Turn on incoming data by turnning on RTS flag Return Values: none ComFlon Com Floff: Turn off incoming data by turnning off RTS flag Return Values: none ComFloff ------------ MODxmodem ------------ Introduction: A module for sending and receiving data using the X-Modem protocol. Supports CHK and CRC16. Requires MODmodem or compatible library Functions: XModem Receive Checksum: X-Modem Receive (checksum) Return Values: .x = 0 no error XMOrcvChk A2 Vector - Receive a single byte in .a A3 Vector - Received a good block A4 Vector - Received a bad block A5 Vector - Abort check (carry set = abort) XModem Receive CRC: X-Modem Receive (CRC-16) Return Values: .x = 0 no error XMOrcvCrc A2 Vector - Receive a single byte in .a A3 Vector - Received a good block A4 Vector - Received a bad block A5 Vector - Abort check (carry set = abort) XModem Send: X-Modem Send Return Values: .x = 0 no error XMOsend A2 Vector - Ensure 128 bytes available A3 Vector - Send a single byte in .a, .x=no more A4 Vector - Sent a bad block A5 Vector - Abort Check (carry set = abort)
About
Useful assembly libraries for BSW GEOS operating system programming
Resources
License
Stars
Watchers
Forks
Releases
No releases published
Packages 0
No packages published