6809 Second Processor

From BeebWiki
Jump to: navigation, search

A second processor for the BBC/Master containing a Motorola 6809.

The 6809 client MOS provides the basic system required to communicate with the host computer. The BBC MOS entry block is implemented by using the BA/BS signals to remap the hardware vectors to from &FFF0 to &FEF0.

MOS API Calls

Programs communicate with the kernal and MOS via an entry block at &FF80-&FFFF. Parameters are passed in the A, X and Y registers.

On entry, A, X, Y contain values to pass to system call
On exit,  A, X, Y contain returned data
          All addresses are little-endian, except where noted

&FFF7 - OS_CLI

On entry:               On exit:
X=>command string       A=Return value

&FFF4 - OS_BYTE

On entry:               On exit
A=function              A=preserved
X=first parameter       X=returned word
Y=second parameter      Y=returned word DIV 256
                        Cy=returned carry flag

&FFF1 - OS_WORD

On entry:               On exit:
A=function              Control block updated
X=>control block        Y=returned line length for OSWORD 0
Text buffer address at X+0/1 with OSWORD 0 is big-endian

&FFEE - OS_WRCH

On entry:               On exit:
A=character             A=preserved

&FFEC - OS_WRCR

On entry:               On exit:
                        A=13

&FFE7 - OS_NEWL

On entry:               On exit:
                        A=13

&FFE3 - OS_ASCI

On entry:               On exit:
A=character             A=preserved

&FFE0 - OS_RDCH

On entry:               On exit:
                        A=character
                        Cy=carry flag

&FFDD - OS_FILE

On entry:               On exit:
A=function              A=result
X=>control block        X=preserved
Filename address at X+0/1 is big-endian

&FFDA - OS_ARGS

On entry:               On exit:
A=function              A=result
Y=handle                Y=preserved
X=>data                 X=preserved
                        data updated

&FFD7 - OS_BPUT

On entry:               On exit:
A=byte                  A=preserved
Y=handle                Y=preserved

&FFD4 - OS_BGET

On entry:               On exit:
                        A=byte
Y=handle                Y=preserved
                        Cy=carry flag

&FFD1 - OS_GBPB

On entry:               On exit:
A=function              A=preserved
X=>control block        Cy=carry flag

&FFCE - OS_FIND

On entry:               On exit:
A=function              A=handle
X=>string or
Y=handle

&FF9B - PRSTRING

&FFA1 - SCANHEX

&FFA7 - OSQUIT

&FFAA - PRHEX

&FFAD - PR2HEX

&FFB0 - USERINT

&FFB3 - PRTEXT

&FFB9 - CLICOM

&FFBC - ERRJMP

&FFBF - INITERR

See also

External links

Jgharston 16:53, 6 November 2009 (UTC) Jgharston (talk) 23:41, 30 January 2016 (UTC)