Difference between revisions of "OSBYTE &80"

From BeebWiki
Jump to: navigation, search
m (1 revision)
m (.)
 
(3 intermediate revisions by 2 users not shown)
Line 29: Line 29:
 
|        8    ||  Mouse Y position
 
|        8    ||  Mouse Y position
 
|-
 
|-
|        9    ||  Mouse button state, b0=Left, b1=Middle, b2=Right|
+
|        9    ||  Mouse button state, b0=Left, b1=Middle, b2=Right
 +
|-
 +
|127 (128-1)  ||  low level read from buffer -1 - ie 16-bit GET (cZ80Tube, Brandy and others)
 
|-
 
|-
 
|&FFFF (-1)  ||  Keyboard buffer
 
|&FFFF (-1)  ||  Keyboard buffer
Line 62: Line 64:
 
If an unknown device or buffer is examined, then the call is passed to
 
If an unknown device or buffer is examined, then the call is passed to
 
sideways ROMs as an Unknown OSBYTE service call. {check: some exceptions}
 
sideways ROMs as an Unknown OSBYTE service call. {check: some exceptions}
 +
 +
Most implementations only actually check bit 7 of the parameter (ie, bit 7
 +
of X) to chose between reading devices and reading buffers, so for instance
 +
ADVAL(255) is the same as ADVAL(-1).
  
 
==Mouse==
 
==Mouse==
Line 68: Line 74:
 
mouse buttons are more usually read with INKEY-10, INKEY-11 and INKEY-12.
 
mouse buttons are more usually read with INKEY-10, INKEY-11 and INKEY-12.
 
8-bit systems rarely implement a mouse buffer. 32-bit systems usually use
 
8-bit systems rarely implement a mouse buffer. 32-bit systems usually use
a sound system that does not use the sound output buffers.
+
a sound system that does not use these sound output buffers.
  
 
[[User:Jgharston|Jgharston]] 18:59, 11 September 2007 (BST)
 
[[User:Jgharston|Jgharston]] 18:59, 11 September 2007 (BST)
 +
[[User:Jgharston|Jgharston]] ([[User talk:Jgharston|talk]]) 06:54, 21 December 2018 (CET)

Latest revision as of 17:42, 8 July 2020


OSBYTE &80 (128) - Read I/O device or buffer status

On entry, If XY<0, read buffer status
          If XY>=0, read I/O device

On exit XY=returned value
XY on entry XY on exit
0 b0-b7=buttons, b8-b15=last ADC channel converted
1 Analogue Channel 1
2 Analogue Channel 2
3 Analogue Channel 3
4 Analogue Channel 4
5 Mouse X boundary
6 Mouse Y boundary
7 Mouse X position
8 Mouse Y position
9 Mouse button state, b0=Left, b1=Middle, b2=Right
127 (128-1) low level read from buffer -1 - ie 16-bit GET (cZ80Tube, Brandy and others)
&FFFF (-1) Keyboard buffer
&FFFE (-2) Serial input buffer
&FFFD (-3) Serial output buffer
&FFFC (-4) Printer output buffer
&FFFB (-5) Sound output buffer 0
&FFFA (-6) Sound output buffer 1
&FFF9 (-7) Sound output buffer 2
&FFF8 (-8) Sound output buffer 3
&FFF7 (-9) Speech output buffer
&FFF6 (-10) Mouse input buffer
&FFF5 (-11) MIDI input buffer {check}
&FFF4 (-12) MIDI output buffer {check}

Calling from BBC BASIC

=ADVAL() calls OSBYTE &80

Implementations

If an unknown device or buffer is examined, then the call is passed to sideways ROMs as an Unknown OSBYTE service call. {check: some exceptions}

Most implementations only actually check bit 7 of the parameter (ie, bit 7 of X) to chose between reading devices and reading buffers, so for instance ADVAL(255) is the same as ADVAL(-1).

Mouse

Most mouse drivers do not implement calls 5, 6 and 9. The VFS Videodisk Filing System ROM used with the Domesday System implements 5, 6 and 9. The mouse buttons are more usually read with INKEY-10, INKEY-11 and INKEY-12. 8-bit systems rarely implement a mouse buffer. 32-bit systems usually use a sound system that does not use these sound output buffers.

Jgharston 18:59, 11 September 2007 (BST) Jgharston (talk) 06:54, 21 December 2018 (CET)