Index of MOS features as they are seen by user programs


§1. OSWRCH.

 This is the 'VDU' command in BBC BASIC. The non-printable characters are handled by
 individual routines. See .oswrchEntryPoint

 VDU   0    - Does nothing                                   See .vdu0EntryPoint
 VDU   1    - Send next character to printer only            See .vdu1EntryPoint
 VDU   2    - Enable printer                                 See .vdu2EntryPoint
 VDU   3    - Disable printer                                See .vdu3EntryPoint
 VDU   4    - Write text at text cursor                      See .vdu4EntryPoint
 VDU   5    - Write text at graphics cursor                  See .vdu5EntryPoint
 VDU   6    - Enable VDU drivers                             See .vdu6EntryPoint
 VDU   7    - Make a short beep                              See .vdu7EntryPoint
 VDU   8    - Move cursor left                               See .vdu8EntryPoint
 VDU   9    - Move cursor right                              See .vdu9EntryPoint
 VDU  10    - Move cursor down                               See .vdu10EntryPoint
 VDU  11    - Move cursor up                                 See .vdu11EntryPoint
 VDU  12    - Clear text window                              See .vdu12EntryPoint
 VDU  13    - Move cursor to start of current line           See .vdu13EntryPoint
 VDU  14    - Paged mode on                                  See .vdu14EntryPoint
 VDU  15    - Paged mode off                                 See .vdu15EntryPoint
 VDU  16    - Clear graphics window                          See .vdu16EntryPoint
 VDU  17    - Define text colour                             See .vdu17EntryPoint
 VDU  18    - Define graphics colour                         See .vdu18EntryPoint
 VDU  19    - Change palette colour                          See .vdu19EntryPoint
 VDU  20    - Restore default palette                        See .vdu20EntryPoint
 VDU  21    - Disable VDU drivers / delete line              See .vdu21EntryPoint
 VDU  22    - Select screen MODE                             See .vdu22EntryPoint
 VDU  23    - Define character shape (etc)                   See .vdu23EntryPoint
 VDU  24    - Define graphics window                         See .vdu24EntryPoint
 VDU  25    - PLOT                                           See .vdu25EntryPoint
 VDU  26    - Restore default windows                        See .vdu26EntryPoint
 VDU  27    - Does nothing                                   See .vdu27EntryPoint
 VDU  28    - Define text window                             See .vdu28EntryPoint
 VDU  29    - Define graphics origin                         See .vdu29EntryPoint
 VDU  30    - Move text cursor to top left                   See .vdu30EntryPoint
 VDU  31    - Move text cursor to X,Y                        See .vdu31EntryPoint
 VDU 127    - Delete                                         See .vdu127EntryPoint

§2. OSBYTE.

 See .osbyteEntryPoint

 OSBYTE   0 - Generate error message/return version number See .osbyte0EntryPoint
 OSBYTE   1 - Read/Write user flag                         See .osbyte1EntryPoint
 OSBYTE   2 - select input stream                          See .osbyte2EntryPoint
 OSBYTE   3 - Select output stream                         See .osbyte3EntryPoint
 OSBYTE   4 - Enable / disable cursor editing              See .osbyte4EntryPoint
 OSBYTE   5 - Select printer type                          See .osbyte5EntryPoint
 OSBYTE   6 - Set printer ignore character                 See .osbyte6EntryPoint
 OSBYTE   7 - Set RS-423 baud rate for receiving data      See .osbyte7EntryPoint
 OSBYTE   8 - Set RS-423 baud rate for transmitting data   See .osbyte8EntryPoint
 OSBYTE   9 - Duration of first colour                     See .osbyte9EntryPoint
 OSBYTE  10 - Duration of second colour                    See .osbyte10EntryPoint
 OSBYTE  11 - Set keyboard autorepeat delay                See .osbyte11EntryPoint
 OSBYTE  12 - Set keyboard autorepeat rate                 See .osbyte12EntryPoint
 OSBYTE  13 - Disable events                               See .osbyte13EntryPoint
 OSBYTE  14 - Enable events                                See .osbyte14EntryPoint
 OSBYTE  15 - Flush selected buffer class                  See .osbyte15EntryPoint
 OSBYTE  16 - Select ADC channels                          See .osbyte16EntryPoint
 OSBYTE  17 - Start ADC conversions                        See .osbyte17EntryPoint
 OSBYTE  18 - Reset soft keys                              See .osbyte18EntryPoint
 OSBYTE  19 - Wait for vertical sync                       See .osbyte19EntryPoint
 OSBYTE  20 - 'Explode' soft character definitions         See .osbyte20EntryPoint
 OSBYTE  21 - Flush specific buffer                        See .osbyte21EntryPoint

 OSBYTEs 22-116 are undefined

 OSBYTE 117 - Read VDU status                              See .osbyte117EntryPoint
 OSBYTE 118 - Set keyboard LEDs based on keyboard status   See .osbyte118EntryPoint
 OSBYTE 119 - Close Spool / Exec files                     See .osbyte119EntryPoint
 OSBYTE 120 - Write key pressed data                       See .osbyte120EntryPoint
 OSBYTE 121 - Keyboard scan from value in X                See .osbyte121EntryPoint
 OSBYTE 122 - Keyboard scan from 16 decimal                See .osbyte122EntryPoint
 OSBYTE 123 - Warn OS about printer going dormant          See .osbyte123EntryPoint
 OSBYTE 124 - Clear ESCAPE condition                       See .osbyte124EntryPoint
 OSBYTE 125 - Set ESCAPE condition                         See .osbyte125EntryPoint
 OSBYTE 126 - Acknowledge detection of ESCAPE condition    See .osbyte126EntryPoint
 OSBYTE 127 - Check for EOF on open file                   See .osbyte127EntryPoint
 OSBYTE 128 - Read ADC Channel / get buffer status         See .osbyte128EntryPoint
 OSBYTE 129 - Read key within time limit                   See .osbyte129EntryPoint
 OSBYTE 130 - Read machine high order address              See .osbyte130EntryPoint
 OSBYTE 131 - Read OSHWM (OS High Water Mark)              See .osbyte131EntryPoint
 OSBYTE 132 - Read HIMEM (start of screen memory)          See .osbyte132EntryPoint
 OSBYTE 133 - Read start of screen memory for given MODE   See .osbyte133EntryPoint
 OSBYTE 134 - Read text cursor position                    See .osbyte134EntryPoint
 OSBYTE 135 - Read character at text cursor position       See .osbyte135EntryPoint
 OSBYTE 136 - Execute code via User Vector (*CODE)         See .osbyte136EntryPoint
 OSBYTE 137 - Turn on tape motor                           See .osbyte137EntryPoint
 OSBYTE 138 - Put byte into buffer                         See .osbyte138EntryPoint
 OSBYTE 139 - Select file options (*OPT)                   See .osbyte139EntryPoint
 OSBYTE 140 - Select TAPE file system                      See .osbyte140EntryPoint
 OSBYTE 141 - Select ROM file system                       See .osbyte141EntryPoint
 OSBYTE 142 - Enter language ROM (at $8000)                See .osbyte142EntryPoint
 OSBYTE 143 - Pass service commands to sideways ROMs       See .osbyte143EntryPoint
 OSBYTE 144 - *TV                                          See .osbyte144EntryPoint
 OSBYTE 145 - Get byte from buffer                         See .osbyte145EntryPoint
 OSBYTE 146 - Read a byte from FRED                        See .osbyte146EntryPoint
 OSBYTE 147 - Write a byte to FRED                         See .osbyte147EntryPoint
 OSBYTE 148 - Read a byte from JIM                         See .osbyte148EntryPoint
 OSBYTE 149 - Write a byte to JIM                          See .osbyte149EntryPoint
 OSBYTE 150 - Read a byte from SHEILA                      See .osbyte150EntryPoint
 OSBYTE 151 - Write a byte to SHEILA                       See .osbyte151EntryPoint
 OSBYTE 152 - Examine buffer status                        See .osbyte152EntryPoint
 OSBYTE 153 - Put byte in input buffer                     See .osbyte153EntryPoint
 OSBYTE 154 - Write to Video ULA's Video Control Register  See .osbyte154EntryPoint
 OSBYTE 155 - Set palette value                            See .osbyte155EntryPoint
 OSBYTE 156 - Update ACIA Control Register and OS Copy     See .osbyte156EntryPoint
 OSBYTE 157 - Fast Tube BPUT                               See .osbyte157EntryPoint
 OSBYTE 158 - Read byte from speech processor              See .osbyte158EntryPoint
 OSBYTE 159 - Write byte to speech processor               See .osbyte159EntryPoint
 OSBYTE 160 - Read VDU Variable                            See .osbyte160EntryPoint

 OSBYTEs 161-165 are undefined.

 OSBYTEs 166-255 affect MOS variables (bytes $0236-$028F respectively). They are handled
 by one routine, see .osbyte166to255EntryPoint.

 OSBYTE 166 - Address of MOS variables - 166 (Low byte)    See .mosVariables
 OSBYTE 167 - Address of MOS variables - 166 (High byte)   See .mosVariables
 OSBYTE 168 - Address of extended vector space (Low byte)  See .romPointerTable
 OSBYTE 169 - Address of extended vector space (High byte) See .romPointerTable
 OSBYTE 170 - Address of table of type of each ROM (Low)   See .romInformationTable
 OSBYTE 171 - Address of table of type of each ROM (High)  See .romInformationTable
 OSBYTE 172 - Address of keyboard translation table (Low)  See .keyTranslationTable
 OSBYTE 173 - Address of keyboard translation table (High) See .keyTranslationTable
 OSBYTE 174 - Address of VDU variables (Low byte)          See .vduVariablesTable
 OSBYTE 175 - Address of VDU variables (High byte)         See .vduVariablesTable
 OSBYTE 176 - Vertical sync counter                        See .verticalSyncCounter
 OSBYTE 177 - Current input buffer                         See .currentInputBuffer
 OSBYTE 178 - Process keyboard under interrupt flag        See .enableKeyboardInterruptProcessingFlag
 OSBYTE 179 - Default/Primary High Water Mark (OSHWM)      See .defaultOSHWM
 OSBYTE 180 - Current High Water Mark (OSHWM)              See .currentOSHWM
 OSBYTE 181 - RS-423 mode                                  See .rs423Mode
 OSBYTE 182 - Soft character definition ranges             See .softCharacterDefinitionsSwitch
 OSBYTE 183 - Tape or ROM Filing System active             See .tapeOrROMSwitch
 OSBYTE 184 - OS copy of the Video ULA VCR register        See .videoULAVideoControlRegisterCopy
 OSBYTE 185 - Last value written to palette                See .videoULAPaletteValue
 OSBYTE 186 - ROM number from last BRK                     See .romNumberActiveLastBRK
 OSBYTE 187 - ROM number containing BASIC                  See .basicROMNumber
 OSBYTE 188 - Current ADC channel number                   See .adcCurrentChannel
 OSBYTE 189 - Maximum ADC channel number                   See .maximumADCChannelNumber
 OSBYTE 190 - ADC Conversion type                          See .adcConversionType
 OSBYTE 191 - RS_423 ready flag                            See .rs423ReadyFlag
 OSBYTE 192 - OS copy of the RS-423 control flag           See .rs423ControlRegisterCopy
 OSBYTE 193 - Countdown timer for flashing colours         See .videoULAFlashingColourIntervalCount
 OSBYTE 194 - First colour time interval                   See .videoULAFirstFlashingColourInterval
 OSBYTE 195 - Second colour time interval                  See .videoULASecondFlashingColourInterval
 OSBYTE 196 - Delay before autorepeat                      See .keyboardAutoRepeatDelay
 OSBYTE 197 - Keyboard autorepeat rate                     See .keyboardAutoRepeatRate
 OSBYTE 198 - File handle of open EXEC file                See .execFileHandle
 OSBYTE 199 - File handle of open SPOOL file               See .spoolFileHandle
 OSBYTE 200 - Escape and break effect                      See .escapeAndBreakEffect
 OSBYTE 201 - Keyboard disable flag                        See .keyboardDisableFlag
 OSBYTE 202 - Keyboard modifier keys status                See .keyboardStatusFlags
 OSBYTE 203 - RS-423 handshake extent                      See .rs423HandshakeExtent
 OSBYTE 204 - RS-423 input suppression flag                See .rs423InputSuppressionFlag
 OSBYTE 205 - Tape or RS-423 selection                     See .tapeRS423SelectionFlag
 OSBYTE 206 - Econet intercept for OSBYTE 166-255 / OSWORD 224-255 See .econetOSCallInterceptionFlag
 OSBYTE 207 - Read character from Econet flag              See .econetReadCharacterInterceptionFlag
 OSBYTE 208 - Write character to Econet flag               See .econetWriteCharacterInterceptionFlag
 OSBYTE 209 - Enable or disable speech                     See .speechSuppressionStatus
 OSBYTE 210 - Disable sound flag                           See .soundDisableFlag
 OSBYTE 211 - Channel for BELL                             See .soundBELLChannel
 OSBYTE 212 - Amplitude or Envelope for BELL               See .soundBELLAmplitudeEnvelope
 OSBYTE 213 - Pitch for BELL                               See .soundBELLPitch
 OSBYTE 214 - Duration for BELL                            See .soundBELLDuration
 OSBYTE 215 - Startup options                              See .startupMessageSuppressionAndBootOptions
 OSBYTE 216 - Length of *KEY string being decoded          See .softKeyStringLength
 OSBYTE 217 - Paged mode line count                        See .pagedModeCounter
 OSBYTE 218 - Bytes in VDU queue                           See .twosComplimentOfNumberOfBytesInVDUQueue
 OSBYTE 219 - ASCII code to produce when TAB pressed       See .asciiCodeGeneratedByTABKey
 OSBYTE 220 - ASCII code that generates ESCAPE condition   See .asciiCodeThatGeneratesESCAPEAction
 OSBYTE 221-228 - How to interpret special keys            See .functionAndCursorKeyCodes
 OSBYTE 229 - ESCAPE action                                See .escapeAction
 OSBYTE 230 - ESCAPE effects                               See .escapeEffects
 OSBYTE 231 - User VIA IRQ bit mask                        See .userVIAIRQBitMask
 OSBYTE 232 - RS-423 IRQ bit mask                          See .rs423IRQBitMask
 OSBYTE 233 - System VIA IRQ bit mask                      See .systemVIAIRQBitMask
 OSBYTE 234 - Tube present flag                            See .tubePresentFlag
 OSBYTE 235 - Speech system present flag                   See .speechSystemPresentFlag
 OSBYTE 236 - Character destination availability           See .characterDestinationsAvailableFlags
 OSBYTE 237 - Cursor editing type                          See .cursorEditingType
 OSBYTE 238 - Unused byte                                  See .unused27E
 OSBYTE 239 - Unused byte                                  See .unused27F
 OSBYTE 240 - Country code                                 See .countryCode
 OSBYTE 241 - User flag                                    See .userFlag
 OSBYTE 242 - Serial ULA register copy                     See .serialULARegisterCopy
 OSBYTE 243 - Time clock switch                            See .timeClockSwitch
 OSBYTE 244 - Soft key consistency flag                    See .softKeyConsistencyFlag
 OSBYTE 245 - Printer destination                          See .printerDestination
 OSBYTE 246 - Printer character to ignore                  See .printerIgnoreCharacter
 OSBYTE 247 - Break intercept JMP instruction              See .breakInterceptJMPInstruction
 OSBYTE 248 - Break intercept address (low)                See .breakInterceptLowAddress
 OSBYTE 249 - Break intercept address (high)               See .breakInterceptHighAddress
 OSBYTE 250 - Unused byte                                  See .unused28A
 OSBYTE 251 - Unused byte                                  See .unused28B
 OSBYTE 252 - Current language ROM number                  See .languageROMNumber
 OSBYTE 253 - Last reset type                              See .lastResetType
 OSBYTE 254 - System available RAM                         See .systemAvailableRAM
 OSBYTE 255 - Startup options                              See .startUpOptions

§3. OSWORD.

 See .oswordEntryPoint

 OSWORD   0 - Read line from current input into memory     See .osword0EntryPoint
 OSWORD   1 - Read system clock                            See .osword1EntryPoint
 OSWORD   2 - Write system clock                           See .osword2EntryPoint
 OSWORD   3 - Read interval timer                          See .osword3EntryPoint
 OSWORD   4 - Write interval timer                         See .osword4EntryPoint
 OSWORD   5 - Read a byte from I/O memory                  See .osword5EntryPoint
 OSWORD   6 - Write a byte to I/O memory                   See .osword6EntryPoint
 OSWORD   7 - Make a sound                                 See .osword7EntryPoint
 OSWORD   8 - Define an envelope                           See .osword8EntryPoint
 OSWORD   9 - Read a pixel                                 See .osword9EntryPoint
 OSWORD  10 - Read character definition                    See .osword10EntryPoint
 OSWORD  11 - Read palette                                 See .osword11EntryPoint
 OSWORD  12 - Write palette                                See .osword12EntryPoint
 OSWORD  13 - Read last two graphic cursor positions       See .osword13EntryPoint

 OSWORDs 14-255 are undefined.
 OSWORDs 224-255 are routed through USERV.

§4. OS Entry Points.

 OS Call       Vector             Default handler         Description
 ---------------------------------------------------------------------------------------
 See .GSINIT   -                  See .gsinitEntryPoint   Initialise for parsing a string
 See .GSREAD   -                  See .gsreadEntryPoint   Parse a character from string
 See .NVRDCH   -                  See .osrdchEntryPoint   Non-vectored .OSRDCH
 See .NVWRCH   -                  See .oswrchEntryPoint   Non-vectored .OSWRCH
 See .OSARGS   See .vectorARGSV   See .osargsEntryPoint   Read or write file arguments
 See .OSASCI   -                  See .OSASCI             Output byte, expanding CR
 See .OSBGET   See .vectorBGETV   See .osbgetEntryPoint   Get a byte from file
 See .OSBPUT   See .vectorBPUTV   See .osbputEntryPoint   Save a byte to file
 See .OSBYTE   See .vectorBYTEV   See .osbyteEntryPoint   OS call with A,X,Y parameters
 See .OSCLI    See .vectorCLIV    See .oscliEntryPoint    Execute star command string
 See .OSEVEN   -                  See .eventEntryPoint    Generate an EVENT
 See .OSFILE   See .vectorFILEV   See .osfileEntryPoint   Read or write a file
 See .OSFIND   See .vectorFINDV   See .osfindEntryPoint   Open or close a file
 See .OSGBPB   See .vectorGBPBV   -                       Transfer block to or from a file
 See .OSNEWL   -                  See .OSNEWL             Output CR/LF
 See .OSRDCH   See .vectorRDCHV   See .osrdchEntryPoint   Get byte from current input stream
 See .OSRDRM   -                  See .osrdrmEntryPoint   Get a byte from sideways ROM
 See .OSWORD   See .vectorWORDV   See .oswordEntryPoint   OS call with parameter block
 See .OSWRCH   See .vectorWRCHV   See .oswrchEntryPoint   Output a character
 See .VDUCHR   -                  See .vduChrEntryPoint   Output a character to screen

§5. Vectors.

 Vector              Address   Default handler          Description
 ---------------------------------------------------------------------------------------
 See .vectorARGSV    $0214     See .osargsEntryPoint    Load / Save file parameters
 See .vectorBGETV    $0216     See .osbgetEntryPoint    Get byte from file
 See .vectorBPUTV    $0218     See .osbputEntryPoint    Put byte to file
 See .vectorBRKV     $0202     See .brkHandler          BRK vector
 See .vectorBYTEV    $020A     See .osbyteEntryPoint    OSBYTE call
 See .vectorCLIV     $0208     See .oscliEntryPoint     Command line interpreter
 See .vectorCNPV     $022E     See .cnpEntryPoint       Count or purge buffer
 See .vectorEVNTV    $0220     -                        Events
 See .vectorFILEV    $0212     See .osfileEntryPoint    Load / Save file
 See .vectorFINDV    $021C     See .osfindEntryPoint    Open / Close file
 See .vectorFSCV     $021E     See .fscEntryPoint       Filing system control
 See .vectorGBPBV    $021A     -                        Multiple BPUT/BGET
 See .vectorIND1V    $0230     -                        Unused vector
 See .vectorIND2V    $0232     -                        Unused vector
 See .vectorIND3V    $0234     -                        Unused vector
 See .vectorINSV     $022A     See .insEntryPoint       Insert character into buffer
 See .vectorIRQ1V    $0204     See .irq1Handler         Primary IRQ vector
 See .vectorIRQ2V    $0206     See .irq2Handler         Unrecognised IRQ vector
 See .vectorKEYV     $0228     See .keyEntryPoint       Keyboard
 See .vectorNETV     $0224     -                        Econet
 See .vectorRDCHV    $0210     See .osrdchEntryPoint    OSRDCH call
 See .vectorREMV     $022C     See .remEntryPoint       Remove character from buffer
 See .vectorUPTV     $0222     -                        User print
 See .vectorUSERV    $0200     See .badCommandError     User vector
 See .vectorVDUV     $0226     -                        Unrecognised PLOT / VDU 23 commands
 See .vectorWORDV    $020C     See .oswordEntryPoint    OSWORD call
 See .vectorWRCHV    $020E     See .oswrchEntryPoint    OSWRCH call

§6. 6502 Vectors.

 NMI         See .nmiEntryPoint
 RESET       See .resetEntryPoint
 IRQ         See .irqEntryPoint