80186 Second Processor
A second processor for the BBC or Master containing an Intel 80186 processor (the ancestor of the x86 processors that power almost all modern PCs) clocked at 10MHz, with 512K of RAM. It can be modified to be clocked at 12MHz and the RAM increased to 1024K.
The internal 80186 Second Processor converts a Master 128 into a Master 512. It is reported that a "cheese wedge" version was available.
MOS API Calls
Programs communicate with the kernal and MOS via INT software interrupt instruction. Parameters are passed in registers AL onwards.
INT &40 - OSFIND
On entry: On exit: AL=function AL=handle BX=>filename or =handle
INT &41 - OSGBPB
On entry: On exit: AL=function AL=result BX=>control block CF=Carry control block updated
INT &42 - OSBPUT
On entry: AL=byte of data BH=handle
INT &43 - OSBGET
On entry: On exit: AL=byte of data BH=handle CF=Carry
INT &44 - OSARGS
On entry: On exit: AL=function AL=result AH=handle AH=preserved BX=>data word data word updated
INT &45 - OSFILE
On entry: On exit: AL=function AL=result BX=>control block control block updated
In the standard version 1.00 80x86 CoProprocessor client the OSFILE code is broken. There is a version 1.01 patch that fixes this.[1]
The error occurs when the code copies the offset into the control block of the address of the filename into the register that points to the control block. This results in the code trying to use a filename at address &0000, and storing the returned control block there - on top of the hardware vectors!
INT &46 - OSRDCH
On entry: On exit: AL=character CF=Carry
INT &47 - OSASCI
On entry: AL=character
INT &48 - OSNEWL
INT &49 - OSWRCH
On entry: On exit: AL=character AL=preserved
INT &4A - OSWORD
On entry: On exit AL=function BX=>control block control block updated
INT &4B - OSBYTE
On entry: On exit: AL=function AL=preserved BL=first parameter BL=b0-b7 of result (6502 X register) BH=second parameter BH=b8-b15 of result (6502 Y register)
INT &4C - OSCLI
On entry: BX=>command string
INT &4D - unused
INT &4E - unused
INT &4F - ERROR
INT &4F is followed by an error block: INT &4F DB error DS "error string" DB 0
Escape flag
0000:05F0 will have b7 set when an Escape state is pending.
FAULT pointer
0000:05F4 points to the last error block.
Error handler
0000:05F8 is the address of the current error handler.
0000:05FC
0000:05FC
See also
Jgharston 05:32, 8 October 2007 (BST)