OSBYTE &19
OSBYTE &19 (25) - Reset a group of font definitions On entry: X=0 reset all font groups - CHR$32-CHR$255 X=1 reset font group 1 - CHR$32-CHR$63 X=2 reset font group 2 - CHR$64-CHR$95 X=3 reset font group 3 - CHR$96-CHR$127 X=4 reset font group 4 - CHR$128-CHR$159 X=5 reset font group 5 - CHR$160-CHR$191 X=6 reset font group 6 - CHR$192-CHR$223 X=7 reset font group 7 - CHR$224-CHR$255 Extension: X=16 resets soft Teletext font (where supported) X=&80+n ... On exit: X=&FF: OSBYTE &19 unsupported X=preserved: subcall unsupported X=&00: subcall actioned
On MOS 3 and later each font group is reset by copying it from ROM into RAM. On earlier MOSs (Electron, BBC, BBC B+) a font group can be reset by clearing the appropriate bit of the FONTFLG VDU variable, b6 for font group 1 down to b0 for font group 7. This will result in that font group being read from ROM until any future VDU 23 to redefine a character in that font group.
Extensions
On entry: X=16
placeholder
On entry: X=&80+n
placeholder
Example code
On MOS 3 and later the font is always exploded, on earlier MOSs OSBYTE &19 does not exist and OSBYTE &14 only resets CHR$32-CHR$127. 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 it is not present.
BASIC
if you want to ensure the full font is exploded, this may change PAGE on the BBC: A%=FNbyte(25,0):*FX20,6 if you want to leave the explosion state unchanged on the BBC and not overwrite memory at PAGE: A%=FNbyte(25,0):A%=FNbyte(20,FNbyte(182,&FF00)) using: DEFFNbyte(A%,X%):LOCAL Y%:Y%=X%DIV256:=((USR&FFF4)AND&FF00)DIV256
6502
if you want to ensure the full font is exploded, this may change PAGE: on the BBC: LDA #25:LDX #0:JSR OSBYTE :\ try 'reset all font' LDA #20:LDX #6:JSR OSBYTE :\ 'explode full font' if you want to leave the explosion state unchanged on the BBC and not overwrite memory at PAGE: LDA #25:LDX #0:JSR OSBYTE :\ try 'reset all font' LDA #182:LDX #0:LDY #&FF:JSR OSBYTE :\ Read current explosion state LDA #20:JSR OSBYTE :\ 'explode full font'
On the Master and later OSBYTE 182 reads the NoIgnore status, but the value returned is ignored by the following OSBYTE 20.
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 2 Y=3 X=word number - output a word from dictionary 3 Y>3 - ignored, allowing other ROMs to respond to and pass to OSBYTE &19,x,0
See Also
- OSBYTE &14 explode font
- http://mdfs.net/Docs/Comp/BBC/Osbyte00