Most computers have an operating system. An operating system is a piece of software that manages hardware, software resources and provides services for programs.
You may have wondered if it is possible to have an operating system with this 8-bit computer! The answer is yes.
Commodore used an operating system (OS) called Kernal. Kernal is a low-level OS, containing a set of low-level hardware interfaces. KERNAL consists of 39 functions. These functions form the basis for higher-level routines in BASIC (such as LOAD, SAVE, INPUT and PRINT). The KERNAL functions are accessible via a jump-table, at the end of addressable memory ($FF81 – $FFF3). KERNAL occupied the last 8KB of address space ($E000 – $FFFF).
ACPTR | $FFA5 | 65445 | Input byte from serial port |
CHKIN | $FFC6 | 65478 | Open channel for input |
CHKOUT | $FFC9 | 65481 | Open a channel for output |
CHRIN | $FFCF | 65487 | Get a character from the input channel |
CHROUT | $FFD2 | 65490 | Output a character |
CIOUT | $FFA8 | 65448 | Transmit a byte over the serial bus |
CINT | $FF81 | 65409 | Initialize the screen editor and VIC-II Chip |
CLALL | $FFE7 | 65511 | Close all open files |
CLOSE | $FFC3 | 65475 | Close a logical file |
CLRCHN | $FFCC | 65484 | Clear all I/O channels |
GETIN | $FFE4 | 65508 | Get a character |
IOBASE | $FFF3 | 65523 | Define I/O memory page |
IOINIT | $FF84 | 65412 | Initialize I/O devices |
LISTEN | $FFB1 | 65457 | Command a device on the serial bus to listen |
LOAD | $FFD5 | 65493 | Load RAM from device |
MEMBOT | $FF9C | 65436 | Set bottom of memory |
MEMTOP | $FF99 | 65433 | Set the top of RAM |
OPEN | $FFC0 | 65472 | Open a logical file |
PLOT | $FFF0 | 65520 | Set or retrieve cursor location |
RAMTAS | $FF87 | 65415 | Perform RAM test |
RDTIM | $FFDE | 65502 | Read system clock |
READST | $FFB7 | 65463 | Read status word |
RESTOR | $FF8A | 65418 | Set the top of RAM |
SAVE | $FFD8 | 65496 | Save memory to a device |
SCNKEY | $FF9F | 65439 | Scan the keyboard |
SCREEN | $FFED | 65517 | Return screen format |
SECOND | $FF93 | 65427 | Send secondary address for LISTEN |
SETLFS | $FFBA | 65466 | Set up a logical file |
SETMSG | $FF90 | 65424 | Set system message output |
SETNAM | $FFBD | 65469 | Set up file name |
SETTIM | $FFDB | 65499 | Set the system clock |
SETTMO | $FFA2 | 65442 | Set IEEE bus card timeout flag |
STOP | $FFE1 | 65505 | Check if STOP key is pressed |
TALK | $FFB4 | 65460 | Command a device on the serial bus to talk |
TKSA | $FF96 | 65430 | Send a secondary address to a device commanded to talk |
UDTIM | $FFEA | 65514 | Update the system clock |
UNLSN | $FFAE | 65454 | Send an UNLISTEN command |
UNTLK | $FFAB | 65451 | Send an UNTALK command |
VECTOR | $FF8D | 65421 | Manage RAM vectors |
The operating system provided a screen editor, flashing cursor and a prompt that says READY.
The commodore had an OS but is different to today’s in some of the ways that it handles tasks. It did provide a method of interacting with the user and handling I/O. I/O such as disk drives were not handled by the operating system like today’s would – this is because the disk drives were like a computer themselves, as they contained. This meant that the drive could carry out the required task while the main computer did something else.
There was also an interpreted language called BASIC. The BASIC interpreter doubled as an operating system
The operating system is KERNAL/Commodore BASIC 2.0
A popular operating system for 8-bit computers was BASIC and this is what I would like to have the ability to run on my computer.