Creating GEOS Files: It is important that all GEOS programs have an information sector. Therefore, to create GEOS programs, it is suggested that a small BASIC-Assembly language shell be added to the beginning of a user's program. This shell will consist of a BASIC SYS statement and some assembly code to delete the file (Use DeleteFile) and resave the file as a GEOS file (Use SaveFile). After having done this, for completeness, the info sector that is in memory should be rewritten because SaveFile will clear the text field. Also the directory should be modified to include the proper time and date of file creation (Use FindFile and PutBlock). After all this has been done, a call to FirstInit and EnterDesktop will restart GEOS. The CONVERT program by BSW does not convert itself in this way. It is designed so that the information sector is exactly in the last disk sector of the file. It then modifies the sector links of the last two sectors and changes the directory entry for convert. This leaves the conversion code as part of the final program; the method outlined above does not. Another possibility is to use the same method as BSW, but to make the info sector the first sector after the initial shell. Then only 1 sector and the directory need be modified, and sectors for the shell program can be freed up. This is all up to a user's discretion. Creating CBM-style GEOS programs: If a program with a BASIC start (10 SYS2061), is to use GEOS it must first disable interrupts (SEI) and then set the system to all RAM by loading location $01 with a value of $30. This is important because GEOS resides beneath the Commodore's ROMs and I/O section. When GEOS needs to do I/O, it switches in the I/O ports, relieving the user of this burden. Also a call to FirstInit will set things up so that the GEOS graphic screen is displayed. Simple Applications: Application programs have everything set up for them before they are run. To terminate an application properly, a EnterDesktop is made at some point. If the program is simply a menu, like Convert, then a call to DoMenu and an RTS is sufficient to be the main body of code. One of the menu options should make the jump to EnterDesktop. More on that RTS later.