It should be noted that these vectors are as set in an unexpanded 512 running an unmodified DOS Plus 2.1 with no software loaded except COMMAND.COM. Users are warned that loading almost any application program may damage some of the vectors. These vector contents should never be accessed directly.
Access should be either by an implicit program jump as a result of a call to the appropriate interrupt, or, when intercepting vectors, by the legal means of INT 21h function 25h or 35h.
In the table below the interrupts are grouped. In all cases the table shows the hex and decimal interrupt number, the offset of the vector in segment zero, the segment and offset of the vector contents and the function.
Internal Hardware Interrupts
Interrupt Seg0. Vectored to Hex Dec Offs Seg:Offset Function 00 0 0000 06BB:47B5 Divide by zero overflow 0l 1 0004 06BB:47CC Single step error 02 2 0008 06BB:119F Non Maskable Interrupt 03 3 000C 06BB:47D6 Breakpoint 04 4 0010 06BB:47DB Overflow error 05 5 0014 06BB:47E0 Bounds (range) error 06 6 0018 06BB:47E5 Invalid Opcode 07 7 001C 06BB:47EA 'ESC' opcode exception 08 8 0020 06BB:1658 Hardware timer tick ± 09 9 0024 0000:0000 Not supported 0A 10 0028 0000:0000 Not supported 0B 11 002C 0000:0000 Not supported 0C 12 0030 06BB:0713 Tube register 1 or 4 interrupt 0D 13 0034 0000:0000 Not supported
External Hardware Interrupts (IBM ROS Emulation)
0F 14 0038 0000:0000 Not supported (PC FDC) 0F 15 003C 0000:0000 Not supported (PC FDC) 10 16 0040 06BB:21F1 Display services for PC monitors ± 11 17 0044 06BB:2729 Return equipment flags for PC ± 12 18 0048 06B3:2734 Return memory size for PC ± 13 19 004C 0B4E:06EE if AH = 8 Return no. of floppy drives ± else error = 'Unsupported IBM XT ROS call' 14 20 0050 06BB:2740 Async services int for PC Comm ports ± 15 21 0054 068B:2801 Cassette services interrupt - Not supported 16 22 0058 06BB:2802 Keyboard Driver (Dummy - returns) ± 17 23 005C 06BB.287A Printer driver 18 24 0060 063B:2935 (ROM BASIC) ± 19 25 0064 06BB:28EA (Bootstrap loader) ± 1A 26 0068 06BB:1661 IBM time of day 1B 27 006C 0B4E:10DC IBM ROS kbd. break (Dummy-returns)$ 1C 28 0070 06BB:4794 IBM ROS tick (Dummy - returns) 1D 29 0074 068B:2199 Video parameter address pointer § 1E 30 0078 06BB:218E Disc parameter table pointer § 1F 31 007C 0000:0000 Not supported (Graphics char table in PC)
MSDOS Interrupts
20 32 0080 0B4E:0756 Terminate process (obsolete) 21 33 0084 0B4E:07B1 General function despatcher 22 34 0088 0B4E:069F Terminate handler address § 23 35 008C 0B4E:08E1 CTRL-C handler address § 24 36 0090 0B4E:0A84 Critical error handler address § 25 37 0094 0B4E:0B43 Absolute disc read 26 38 0098 0B4E:0B99 Absolute disc write 27 39 009C 0B4E:0BBD Terminate and stay resident (obsolete)
MSDOS Interrupts - Reserved for Future Use
28 40 00A0 06BB:4794 Wait for keyboard input (Dummy-returns)
29 41 00A4 0000:0000 INT 29h through to 2Eh are 2E 46 00B8 O000:0000 not supported - vectors zero
2F 47 00BC 06BB:4794 MSDOS print spooler (Dummy - returns)
30 48 00C0 0000:0000 INT 48h 43h are 3F 63 00FC 0000:0000 not supported - vectors zero
40 64 0100 F000:lDAC Host OSFIND (f/disc driver on PC/XT) 41 65 0104 F000:1DCF Host OSGBPB (h/disc param. table PC/XT) 42 66 0108 F00D:1F1F Host OSBPUT 43 67 Ol0C F000:1F3B Host OSBGET 44 68 0110 F000:1F4F Host OSARGS (Graphics chr. table PC Jnr) 45 69 0114 F000:1F93 Host OSFILE 46 70 0118 F000:19B0 Host OSRDCH 47 71 011C F000:19D8 Host OSASCI 48 72 0120 F000:19DD Host OSNEWL 49 73 0124 FODO:19E5 Host OSWRCH 4A 74 0128 FO00:1E6D Host OSWORD 4B 75 012E F000:1E10 Host OSBYW 4C 76 0130 F000:lA11 Host OSCLI 4D 77 0134 0000:0000 Not supported 4E 78 0138 0000:0000 Not supported 4F 79 013C F000:2048 80186 error handler 50 80 0140 0000:0000 INTs 50h to DFh are DF 223 037C 0000:0000 not supported - vectors zero
In the above range 60h to 67h are the user vectors, while 67h is used for EMS in later PCs.
CP/M (86)/BDOS calls (Available to DOS Plus)
E0 224 0380 0060:0144 Direct call to BDOS (See below) Unused - Reserved for Future MS/PCDOS Expansion El 225 0384 0000:0000 INTs Elh to FDh are F0 253 03F4 0000:0000 not supported - vectors zero
Acorn 512 'Specials'
FE 254 03F8 06BB:4795 SYSDAT vector for GEM (Kills INT 224) FF 255 03FC 06BB:47F4 80186 register dump on critical error
§ These are pointers to code or data tables and must not be called directly. ± These are incomplete implementations or supply suitable simulated return information.
In the following list all interrupt functions are shown for completeness. The function number is always in register AH.
A '§' indicates that the function is available in MSDOS v2.0 onwards, but is not officially recognised or supported by the Microsoft Corporation.
A ± against the function indicates that the call is incompatible with DOS Plus 2.1 for the reason shown.
Hex Dec Function type 00 00 Terminate process 01 01 Character input with echo 02 02 Character output 03 03 Auxiliary input 04 04 Auxiliary output 05 05 Printer output 06 06 Direct console input/output 07 07 Unaltered character input no echo 08 08 Character input without echo 09 09 Display string 0A 10 Buffered keyboard input 0B 11 Check input status 0C 12 Flush input buffer then input 0D 13 Drive reset 0E 14 Select drive 0F 15 Open file 10 16 Close file 11 17 Find first file 12 18 Find next file 13 19 Delete file 14 20 Sequential read 15 21 Sequential write 16 22 Create file 17 23 Rename file 18 24 MSDOS Reserved function ± 19 25 Get current drive 1A 26 Set disc transfer area (DTA) address 1B 27 Get default drive data 1C 28 Get drive data 1D 29 MSDOS Reserved function ± 1E 30 MSDOS Reserved function ± 1F 31 MSDOS Reserved function ± 20 32 MSDOS Reserved function ± 21 33 Random read 22 34 Random write 23 35 Get file size 24 36 Set relative record number 25 37 Set interrupt vector 26 38 Create new PSP 27 39 Random block read 28 40 Random block write 29 41 Parse filename 2A 42 Get date 2B 43 Set date 2C 44 Get time 2D 45 Set time 2E 46 Set verify flag (non-functional in DOS Plus) 2F 47 Get DTA address 30 48 Get DOS version number 31 49 Terminate and stay resident 32 50 Get disc information (undocumented call) §± 33 51 Get or set break flag (non-functional in DOS Plus) 34 52 Find active byte (undocumented call) §± 35 53 Get interrupt vector 36 54 Get drive allocation data 37 55 Set or get DOS switch character 38 56 Get or set country information 39 57 Create directory 3A 58 Delete directory 3B 59 Set current directory 3C 60 Create file 3D 61 Open file 3E 62 Close file 3F 63 Read file or device 40 64 Write file or device 41 65 Delete file 42 66 Set file pointer 43 67 Get or set file attributes 44 68 I/O control 45 69 Duplicate handle 46 70 Redirect handle 47 71 Get current directory 48 72 Allocate memory block 49 73 Release memory block 4A 74 Resize memory block 45 75 Execute program 46 76 Terminate process with return code 4D 77 Get return code 4E 78 Find first file 4F 79 Find next file 50 80 Set address of PSP (undocumented call) §± 51 81 MSDOS Reserved function ± 52 82 MSDOS Reserved function ± 53 83 MSDOS Reserved function ± 54 84 Get verify flag (non-functional in DOS Plus) ± 55 85 MSDOS Reserved function ± 56 86 Rename file (not implemented) ± 57 87 Get or set file date and time stamps (not implemented) ± 58 88 Get or Set allocation strategy (DOS Version 3.0+) ± 59 89 Get extended error information (DOS Version 3.0+) ± 5A 90 Create temporary file (DOS Version 3.0+) ± 5B 91 Create new file (DOS Version 3-0+) ± 5C 92 Lock or unlock file region (DOS Version 3.0+) ± 5D 93 MSDOS Reserved function ± 5E 94 Get machine name/Get or set printer setup (DOS Version 3.1+) ± 5F 95 Device redirection (DOS Version 3.1+) ± 60 96 MSDOS Reserved function ± 61 97 MSDOS Reserved function ± 62 98 Get PSP address (DOS Version 3.0+) ± 63 99 Get lead byte table (DOS Version 2.25 only) ± 64 100 MSDOS Reserved function ± 65 101 Get extended country information (DOS Version 3.3+) ± 66 102 Get or set code page (DOS Version 3.3+) ± 67 103 Set handle count (DOS Version 3.3+) ± 68 104 Commit file (DOS Version 3.3+) ± E0 224 Call BDOS (See below)
In the following list only interrupts compatible with DOS version 2 and which should be available in DOS Plus 2.1 are shown. where a function has (v.1) shown, it is the original implementation from DOS version 1 and has been superseded or has improved facilities in the later call referred to, which should generally be used in preference. Calls marked ± are not usable in the 512 even though they are DOS 2.1 calls.
Hex Dec Function type
Character Input/output
0l 1 Character input with echo 02 2 character output 03 3 Auxiliary input 04 4 Auxiliary output 05 5 Printer output 06 6 Direct console input/output 07 7 Unfiltered character input without echo 08 8 Character input without echo 09 9 Display string 0A 10 Buffered keyboard input 0B 11 Check input status 0C 12 Flush input buffer then input
Disc Operations
0D 13 Drive reset 0E 14 Select drive 19 25 Get current drive 18 27 Get default drive data 1C 28 Get drive data 46 Set verify flag 32 50 Get disc information (undocumented call) § 36 54 Get drive allocation data 54 84 Get verify flag
Directory Functions
39 57 Create directory 3A 58 Delete directory 3B 59 Set current directory 47 71 Get current directory
File operations
0F 15 Open file (V.1 use 3D) 10 16 Close file (V.1 use 3E) 11 17 Find first file(V.1 use 4E) 12 18 Find next file (V.1 use 4F) 13 19 Delete file (V.1 use 41) 16 22 Create file (V.1 use 3C) 17 23 Rename file 23 35 Get file size 29 41 Parse file name 3C 60 Create file 3D 61 Open file 3E 62 Close file 41 65 Delete file 43 67 Get or set file attributes 45 69 Duplicate handle 46 70 Redirect handle 4E 78 Find first file 4F 79 Find next file 56 86 Rename file 57 87 Get or set file date and time
Record Operations
14 20 Sequential read 15 21 Sequential write lA 26 Set disk transfer area (DTA) address 21 33 Random read (See 27) 22 34 Random write (See 28) 24 36 Set relative record number 27 39 Random block read 28 40 Random block write 2F 47 Get DTA address 3F 63 Read file or device 40 64 Write file or device 42 66 set file pointer
Process Management
00 00 Terminate process (V.1 use 4C) 26 38 Create new PSP (V.1 use 4B) 31 49 Terminate and stay resident 34 52 Find active byle (undocumented call) §± 4B 75 Execute program 4C 76 Terminate process with return code 4D 77 Get return code 50 80 Set address of PSP (undocumented call) §±
Memory Management
48 72 Allocate memory block 49 73 Release memory block 4A 74 Resize memory block
Time/Date Functions
2A 42 Get date 2B 43 Set date 2C 44 Get time 2D 45 Set time
Miscellaneous System Functions
25 37 Set interrupt vector 30 48 Get MSDOS version number 33 51 Get or set break flag: (not implemented) ± 35 53 Get interrupt vector 37 55 Set or get DOS switch character 38 56 Get or set country information 44 68 I/0 control (limited implementation) E0 224 Call BDOS (see below)
In external (i.e. DOS resident console-connected) programs, all functions are initiated by a call to INT 21h with a fundion code of 0E0h in AH and the BDOS function number in CL. There are gaps in the sequence, either because the call is not implemented up to 2.1, or because it is a pure CP/M function not available in DOS Plus.
Hex Dec Function type 00 0 Terminate program (exactly as 8Fh) 01 1 Read a character 02 2 Write a character 03 3 Auxiliary input 04 4 Auxiliary output 05 5 Write a character to the list device 06 6 Direct console I/O 07 7 Auxiliary input status 08 8 Auxiliary output status 09 9 String output 0A 10 Read an edited line 0B 11 Get console status 0C 12 Get BDOS version number 0D 13 Reset all drives 0E 14 Set default drive 0F 15 Open a file for record access 10 16 Close a file 11 17 Search for first matching file 12 18 Search for next matching file 13 19 Delete a file 14 20 Read records sequentially 15 21 Write records sequentially 16 22 Create a file entry 17 23 Rename a file 18 24 Return 'Login Vector' for all logged in drives 19 25 Return the default drive ID 1A 26 Set the DMA buffer offset address 18 27 Get address of disc allocation vectors 1C 28 Set the default drive to read-only 1D 29 Get read-only drive vectors lE 30 Set file attributes 1F 31 Get calling process's default disc DPB address 20 32 Get/set current user number 21 33 Read random records 22 34 Write random records 23 35 Return the size of a file 24 36 Set the random record number in the FCB 25 37 Reset the specified drives 26 38 Unallocated 27 39 Free specified drives 28 40 Write random records and zero-fill unallocated blocks 29 41 Unallocated 2A 42 Unallocated 2B 43 Unallocated 2C 44 Set the system multi-sector count 2D 45 Set filing system error mode 2E 46 Return unallocated space on the specified drive 2F 47 Load and execute program specified in DMA buffer 30 48 Write pending internal disc buffers to media 31 49 Get/set system variable 32 50 Call BIOS (XIOS) directly (See below) 33 51 Set the DMA buffer segment address 34 52 Return segment:offset of DMA buffer 35 53 Allocate maximum memory available in system 36 54 Allocate maximum memory available at specified address 37 55 Allocate a segment as specifed in MCB 38 56 Allocate specified memory at specified address 39 57 Free memory starting at a specified address 3A 58 Unallocated 3B 59 Load CMD file into memory 3C 60 Call RSX program
3D 61 Calls 3Dh to 62h are 62 98 unallocated
63 99 Truncate file to the specified random record number 64 100 Create or update a directory label 65 101 Get directory label data byte for specified drive 66 102 Return a file's date/time stamps and password mode 67 103 Create or update a file's extended FCB 68 104 Set internal date and time 69 105 Get internal date and time 6A 106 Set the default password 6B 107 Get the DOS Plus serial number (Not version number) 6C 108 Get/set program return cole 6D 109 Get/set console mode 6E 110 Get/set output delimiter 6F 111 Write a specified block of characters 70 112 Write a specified number of characters to the list device
71 113 Calls 71h to 8Ch are 8C 140 unallocated
8D 141 Delay a specified number of ticks (wait) 8E 142 Relinquish processor to other programs (multitasking) 8F 143 Terminate program (exactly as 0)
90 144 Calls 90h to 92h are 92 146 unallocated
93 147 Detach program from console (enter background)
94 148 Calls 94h to 97h are 97 151 Unallocated
98 152 Parse ASCII string and initialise FCB 99 153 Unallocated 9A 154 Get System data area (SYSDAT) address
95 155 Calls 95h to ADh are AB 171 Unallocated
AC 172 Read characters from AUXIN AD 173 Send characters to AUXOUT
AE 174 Calls AEh to FF are FF 255 unallocated
The BDOS call summary shown below groups functions by operation type. The list is essentially in numerical order within operations, but where two functions complement each other they have been placed together if this does not occur naturally.
It must be remembered that, in CP/M disc formats a directory sub- structure is not supported, nor is file date/time stamping the norm (although this can be initiated by the DOS Plus INIT command). Many of the disc and file handling calls may, therefore, not be appropriate for use with MSDOS or PCDOS disc formats.
In CP/M, files are protected or separated from each other by being assigned to a group under different user numbers (0 to 15) rather than by being placed in different directories. In CP/M, media attributes can be set at disc and/or file level which can, even in direct BDOS calls, prevent or restrict unanthorised access to files in several different ways.
Hex Dec Function type Auxiliary character I/O 03 3 Auxiliary input 04 4 Auxiliary output 07 7 Auxiliary input status 08 8 Auxiliary output status AC 172 Read characters from AUXIN AD 173 Send characters to AUXOUT
Console Input/Output
01 1 Read a character 02 2 Write a character 06 6 Direct console I/O 09 9 String output 0A 10 Read an edited line 0B 11 Get console status 6D 109 Get/set console mode 6E 110 Get/set output delimiter 6F 111 Write a specified block of characters 93 147 Detach program from console (enter background)
Disc Drive open functions
0D 13 Reset all drives 0E 14 Set default drive 18 24 Return 'Login Vector' for all logged in drives 19 25 Return the default drive ID 1B 27 Get address of disc allocation vectors 1C 28 Set the default drive to read-only 10 29 Get read-only drive vectors 1F 31 Get calling process's default disc DPB address 25 37 Reset the specified drives 27 39 Free specified drives 2E 46 Return unallocated space on the specified drive 30 48 Flush (write) pending internal disc buffers to media 64 100 Create or update a directory label 65 101 Get directory label data byte for specified drive
File Operations
0F 15 Open a file for record access 10 16 Close a file 11 17 Search for first matching file 12 Is Search for next matching file 13 19 Delete a file 14 20 Read records sequentially 15 21 Write records sequentially 16 22 Create a file entry 17 23 Rename a file 1A 26 Set the DMA buffer offset address 1E 30 set file attributes 20 32 Get/set current user number 21 33 Read records randomly 22 34 Write records randomly 23 35 Return the size of a file 24 36 set the random record number in the PCB 28 40 Write random records and zero-fill unallocated blocks 2C 44 Set the system multi-sector count 2D 45 Set filing system error mode 33 51 Set the DMA bufkr segment address 34 52 Return segment:offset of DMA buffer 63 99 Truncate file to the specified random record number 66 102 Return a file's date/time stamps and password mode 67 103 Create or update a files extended FCB 6A 106 Set the default password 98 152 Parse ASCII string and initialise FCB
List Device Calls
05 5 Write a character to the list device 70 112 Write a specified number of characters to the list device
Process Management
00 0 Terminate program (exactly as 8Fh) 2F 47 Load and execute program specified DMA buffer 3B 59 Load CMD file into memory 3C 60 Call RSX program 6C 108 Get/set program return code 8D 141 Delay a specified number of ticks (wait) 8E 142 Relinquish processor to other programs (multitask) 8F 143 Terminate program (exactly as 00)
Memory Management
35 53 Allocate maximum memory available in system 36 54 Allocate maximum memory available at specified address 37 55 Allocate a segment as specified in MCB 38 56 Allocate specified memory at specified address 39 57 Free memory starting from a specified address
Time/Date Functions
68 104 Set internal date and time 69 105 Get internal date and time (NB: Time is in hours and minutes only)
Miscellaneous Functions
0C 12 Get BDOS version number 31 49 Get/set system variable 32 50 Call BIOS (XIOS) directly (See below) 6B 107 Get the DOS Plus serial number (Not version number) 9A 154 Get Sytem data area (SYSDAT) address
Within interrupt E0h is function 32h, which gives another range of subfunctions, direct calls to the XIOS. As usual CL is set to the interrupt function number, are, while DS:DX are used as pointers to the memory location containing the XIOS call parameters
As can be seen, many of the standard CP/M functions are almost identical to the slightly easier to use BDOS functions and hence are of little advantage. The block of functions with values of 80h or greater are peculiar to the XIOS as implemented for Acorn 6502 host systems, while function 80h itself is provided for use within the BDOS and the bootstrap loader.
Hex Dec Function type 00 00 Terminate program (Same as BDOS function 0/8Fh) 0l 01 As above 02 02 Check for console input status 03 03 Read character from console 04 04 Write character to console 05 05 Write character to list device 06 06 Write character to auxiliary device 07 07 Read character from auxiliary device 0F 15 Return list device status
10 16 Calls l0h to l4h are 14 20 reserved 15 21 Device initialisation 16 22 Check console output status
17 23 Calls l7h to 7Fh are 7F 127 reserved
80 128 XIOS version (ACORN specific) 81 129 Get tube semaphore 82 130 Release the semaphore 83 131 Select text-graphics 84 132 Update graphics rectangle (B&W) 85 133 Update graphics rectangle (colour) 86 134 Get release/update mouse 87 135 Get system error info 88 136 Entry in CLOCK called by WatchDog RSP 89 137 BBC OSBYTE function 8A 138 BBC OSWORD function