SYM History
The SYM has 72 lines of I/O built in without the need to add extra hardware. To utilize all 72 lines, you had to install a third 6522 in the provided empty socket. I personally never needed that much I/O. The SYM also has a very friendly and powerful 4K monitor residing in page 8 with good and expandable debug capabilities. The board also came with 1K of user RAM and was expandable to 4K. By piggybacking the RAM chips and adding a few wires, you could obtain 8K on the board. The RAE-1 Resident Assembler Editor is more than adequate for code development. Couple these features with several pieces of software that were written in the SYM Users Group news letter or purchased from them and you have the makings of a great development platform. The main drawbacks with the system was not having a disk storage system and, needing more RAM. Saving a program to tape was slow and sometimes unreliable. It was always suggested to save your program 2 to 3 times just to make sure that you had a good re-loadable copy. After all that work and not being able to reload the program was frustrating. The following discusses how to build and generate a bootable DOS operating system for any 6502 based computer. This was written for the SYM but could be adapted for any 6502 based system.
Disk Operating Systems
Having a SYM with RAE-1 & BASIC installed, provided me with hours of fun and was a great learning tool, but still required a tape recorder to save and load any programs. Being a member of the SYM users group brought to light three disk operating systems available for the SYM. The first was Micro Technology Unlimited's - Channel Oriented Disk Operating System (CODOS). It only supported 8" drives but up to four drives could be connected giving you over 4 megs of storage. The second DOS was from Synertek called the FDC-1. My understanding was that Synertek never marketed the FDC-1 themselves but gave all the marketing and distribution rights to the SYM users group. This system could support both 8" and 5 1/4" drives. More information can be found about the FDC-1 and a different DOS available called SYM DOS2 using this link. The third DOS was Hudson Digital Electronics (HDE) - File Oriented Disk System (FODS). FODS was highly spoken of and heavily supported by the SYM users group. This system could be purchased for a single 8", dual 8", single 5 1/4" OR dual 5 1/4" drive system.
This site describes the FODS (File Oriented Disk System) Floppy Disk Operating System for the SYM using two 5 1/4" drives which I purchased from the SYM users group. Although the software described here is for the SYM, it was available from HDE for the KIM, TIM, and AIM computer systems. I believe very little modifications to the source code presented here, would be required to allow the reader to generate a fully functional DOS for any of the above systems or any other 6502 based computer as very little external support is needed.
Converting to 3 1/2"
I must mention that I did convert the 5 1/4" disks to 3 1/2" recently and encountered one problem. If you are using a 1.44 floppy drive and formatting a 720K floppy (only one hole in floppy) there will be no problem but if you try using a 1.44 meg floppy (2 holes) the format fails. I tried several floppies with the same result. I fixed the problem by gluing down the floppy size switch inside the drive ( the one on the right side) with crazy glue. Now all floppies are "considered" 720K. You could also put a tape on the floppy itself but it might get stuck inside the drive.
Also note that all references are made assuming the reader is using a SYM-1.
You may also want to check my Projects Page for a program called SYM Link which will allow the transfer of RAE source code files, which are presented here, directly from your PC to the SYM using the serial port.
FODS Hardware
Below are copies of the original schematic which also includes the board layout. The original schematic for the floppy controller board may be a little confusing. The notation of using the "*" after a signal name represents an inverted signal. A separate set of pages includes a complete parts list and shows how to set the dipswitches on the controller card for the proper address location for the appropriate computer to work properly. This controller card can be located anywhere in memory to match software requirements.
FODS General
As a minimum, FODS requires a single disk drive, a disk interface or controller card and main memory in locations $6000 to $7FFF for this version. The disk controller card is addressed to location $A880 in 5 1/4" systems. If using this software on a SYM, it is required that U-28 (user supplied 6522) be removed to avoid an address conflict with the controller card. Zero page locations from $A0 to $AF are reserved for FODS. The FODS operating system is resident in locations $7000 to $7FFF. Any data written to this memory block will cause failure of the system with unpredictable results.
The disk index is a 512 character file written to track 0, sectors 1 through 4. The memory location used for disk index transactions is $7000 to $71FF. Because of this, user programs located in this region will be overwritten by the index during any disk transaction and files cannot be written to or saved from this area of memory. A maximum of 40 files may be written to the disk. This includes deleted and active files. A status error will be issued when the 41st file save is attempted. Each FODS command is based upon a three character mnemonic which attempts to describe to some extent, the function involved. The user may add functions by saving the object level routine to the system disk and using a three character file label preceded with a "%" that does not conflict with existing commands. The user routine may then be called as any other FODS command. Be sure that the routine starts with an executable instruction. A file name may be any character string, except $, %, : (colon), .(period), and @1, up to a total of six characters. If more than six, the name will be truncated to six. If less than six, the operating system will pad the name with spaces to equal six. A complete listing of the commands will be presented later in this article.
FODS is strictly a single-density, single-sided system, as it stands. It stores its files sequentially on the disk, never over-writing existing files, and thus must be periodically "packed" to compact the active files. This may not be the most "popular" technique, but it is good insurance. Even when you "clear" a disk by deleting the directory (DEL INDEX!), the data is still easily recoverable by indirect methods. An example of the DIR command shows the file structure used by FODS. A blank floppy can hold 161,644 ($027780 hex) bytes of data.
FODS Software
The FODS Software presented here is the original FODS which is loaded into memory address $7300-$7FFF by the boot loader program and all the utilities using $6D00-$6FFF. The only change made to this software was to convert it from a 40 to 80 track DOS. Three files were involved which were the FODS program itself, the format command and the free command. These changes are noted in the source code. I disassembled all programs using Dessainte's disassembler which I purchased from the SYM Users group. The source code can be easily relocated to any address location desired but remembering to allocate 4K of contiguous memory for FODS to work and any other memory location for the utilities. This DOS has a separate boot loader program and requires the user to save the actual FODS program as the first file on the disk. The boot program included here will load FODS at address $7300. The boot loader can be modified to load FODS into any area of memory. Steps to show what changes to make to allow this are included in the boot loader source code. Note that most of this source code has little or no comments as I never really had time to explore all aspects of this software. My main objective was to relocate the operating system to a higher memory address as well as the utilities. My current FODS is loaded at $D300 and ends at $F800 with all utilities using $F500 to $F7FF. The disk controller card is located at $FE80. This is my current master disk. The $F000 - $F4FF, which is loaded at boot up, contain several utilities I use which include the RTC display routine, and several enhancements made to RAE. I must mention that I never encountered any problems with this software and also that this software does a compare to memory after each command to ensure that the program was either loaded or saved with no errors. Even the boot loader does a compare after the read to insure a proper load. All source codes listed in this site were generated using RAE-1 as the assembler and using the SEt command to set the text and label memory allocation boundaries to the following: $0200 $5FFC $6000 $6FFC. The text generated files show both the object and source code. I will now provide the steps necessary to generate a bootable operating system.
FODS Source
The first thing necessary is to compile the FODS source code.txt or FODS source code.rae. This code should be assembled as shown in order for it to work properly. You can always modify the code later. After compiling the source, at the SYM monitor prompt type g 7300 (CR). The screen should display the FODS copyright material message followed by a new line and the "#" prompt. You are now in FODS command mode. Only 3 commands are available at this time. ENTer, LOaD, and RUN. If using a SYM, a control C will exit the program and display the SYM "." prompt. To re-enter FODS type g (CR) or g 7380 (CR). Location $7380 is the warm start entry location.
Format
The second thing necessary is the format command. The format source code.txt or format source code.rae must be assembled as shown to allow this program to work properly. After assembling the code enter a control C to exit from RAE. At the SYM prompt re-enter FODS to ensure that it is still loaded by a g 7380. Remember that a cold start entry to FODS is at $7300 and warm start entry is at $7380. Now type a control C to exit FODS and re-enter the SYM command mode. Insert the floppy in drive 1 and type g 6d00 (CR). This will now execute the format program. The program will prompt for drive number. Enter 1 and (CR). Next you will be prompted to enter a + to continue. Enter the + followed by a (CR). The floppy being formatted should be a known good one with no errors as this program will do an extensive test to the floppy. If there are ANY bad sectors, the program will display either a 1A (seek error) or 1D (bad sector) error message and terminate. Try again with another floppy. Once you have a good formatted floppy, you are now ready to make a bootable disk. At this point, formatting a floppy completely will bring you back to the FODS command prompt. At the FODS command prompt type the following: ENT /1$7300$7FFF=%FODS (CR). Enter only one space between ENT and /1, and also DO NOT use any other spaces. This will now save your FODS program to the disk. Next is to save the format command with: ENT /1$6D00$6FED=%*FM (CR). At this point you now have one bootable disk with the format utility. The next procedure would be to make some extra disks, just in case. With the current bootable disk in drive 1, simply put the disk to be formatted in drive 2. At the FODS prompt type *FM (CR). Enter 2 as the drive number and the + key to proceed. Since there is no CoPY command at this time, simply type ENT $7300$7FFF=%FODS (CR) and then ENT $6D00$6FED=%*FM (CR). Remember to always leave one space between the command and the parameters. Also notice that no drive number need be specified, as mentioned before, all saves and loads default to drive 2. Repeat for as many bootable disks as you want. IMPORTANT: The FODS program MUST be the first file on the boot disk.
Boot Loader
Now that you have a FODS bootable disk, you need the FODS boot loader.txt or FODS boot loader.rae program to load the FODS program from a cold start. Noted in the source, the program is assembled anywhere in memory, but must be moved to page zero to work. As mentioned earlier, FODS always does a compare to memory after a read or write. This boot loader program is no exception which helps ensure a proper load. The code should be saved to either an EPROM or tape BEFORE execution as this program is self-modifying. This program will boot FODS - which MUST be the first file on the disk to memory location $7300 and stop at $7FFF. The code can be modified to load the file at any other location in memory. Notes on how to achieve this are noted in the source code.
FODS Commands
The FODS command summary shows the available commands which were included on the system disk when I purchased it. Note that this summary also includes commands that were only available for the 8" systems which I did not have. The complete FODS user manual will give a complete explanation of each command.
TED
TED was included on the original diskette from HDE. The HDE Text EDitor is an advanced line oriented editor particularly suited for source code development and general purpose applications. The TED user manual contains all the available commands and the actual usage of the editor. The source code is included in the command source code page.
Other FODS Utilities
Files like %RAE, %BAS were included on the original disk. Obviously, after having a disk system, programs were written to link them with FODS. If you had RAE or BASIC this would certainly be necessary. From the FODS command prompt, simply typing RAE or BAS would load the appropriate link and enter you into the program. The %RAE program included the ability to ENter, LOad, or execute a Direct Command. The BASIC link included the same as RAE plus the trig package, computed GOTO's to name a couple. FODS shares zero page locations $A0 to $AF with BASIC on a non-interference basis. The FODS user manual describes the complete BASIC commands available and there usage. NOTE that there were two BASIC links available. %BAS is the SYM user's group version and %BAX was HDE's version. Since no source code was available and copyrighted, the user's group wrote there own BASIC link. They then changed the name of HDE's %BAS to %BAX and included it on the disk. The %BAS is fully commented whereas %BAX is just my disassembly for relocation purposes.
FODS Commands Source
Use this link for the complete command source code
1 - The : (colon) is preceded by the file name for RAE files, the @ is preceded by the file name for BASIC files saved using HDE's basic link and a . (period) if using the Sym-physis users group link. If any of these programs are not used, then these three characters could be used.