Index of MOS features as they are seen by user programs
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
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
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.
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
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
NMI See .nmiEntryPoint RESET See .resetEntryPoint IRQ See .irqEntryPoint