OSBYTE &19

From BeebWiki
Revision as of 09:01, 6 September 2015 by Jgharston (talk | contribs)
Jump to: navigation, search
 OSBYTE &19 (25) - Reset a group of font definitions
 On entry:
   X=0 resets 32-255
   X=1 resets 32-63
   X=2 resets 64-95
   X=3 resets 96-127
   X=4 resets 128-159
   X=5 resets 160-191
   X=6 resets 192-223
   X=7 resets 224-255
 On exit:
   X=&FF:       OSBYTE &19 unsupported
   X=preserved: subcall unsupported
   X=&00:       subcall actioned
 OSBYTE &19 (25) - Watford Speech: Output a speech allophone
 On entry:
   Y=0 X=allophone number - output allophone
   Y=1 X=word number - output a word from dictionary 1
   Y=2 X=word number - output a word from dictionary 1
   Y=3 X=word number - output a word from dictionary 1
   Y>3 - ignored, allowing other ROMs to respond to and pass to OSBYTE &19,x,0

Example code

On MOS 3 and later the font is always exploded, on earlier MOSs (Electron, BBC, BBC B+) OSBYTE &19 does not exist, OSBYTE &14 explodes the font and resets it. The following code will reset the whole font regardless of what machine the code is running on. OSBYTE 25 - if it exists - resets all characters, then *FX20,6 resets characters &20-&7F. OSBYTE 25 has to be called via OSBYTE as *FX25 will give an error if not present.

BASIC

     A%=FNbyte(25,0,0):*FX20,6
     using:
     DEFFNbyte(A%,X%,Y%)=((USR&FFF4)AND&FF00)DIV256

6502

     LDA #25:LDX #0:JSR OSBYTE  :\ try 'reset all font'
     LDA #20:LDX #6:JSR OSBYTE  :\ 'explode full font'

See Also