Difference between revisions of "OSBYTE &97"

From BeebWiki
Jump to: navigation, search
m (1 revision)
m (link maintenance)
 
(10 intermediate revisions by 3 users not shown)
Line 1: Line 1:
 
[[Category:OSBYTE]]
 
[[Category:OSBYTE]]
OSBYTE &97 (151) - Write SHELIA
+
OSBYTE &97 (151) - Write SHEILA
  
 
     X=offset within page &FE and Y=byte to write
 
     X=offset within page &FE and Y=byte to write
  
 
;Warning
 
;Warning
Acorn MOS 1.20 writes the byte using <code>STA &FE00,X</code> (at address &EAFF).  As it is an indexed-addressing instruction, the 6502 CPU performs a dummy read immediately before the write.  Some hardware, though not all, may operate inappropriately due to the dummy read: outputs could momentarily be set to the wrong level, or an interrupt condition could be cleared and lost.  Review the datasheet for the hardware being accessed to see whether it will be adversely affected.
 
  
The safe alternative is to call [[OSWORD &06]] with !XY = &FFFFFExx and XY?4 = byte to write.
+
Acorn MOS 1.20 writes the byte using STA &FE00,X. As it is an indexed-addressing instruction, the 6502 CPU always<!-- ref name="65xxprog">MOS Technology, Inc. (January 1976), [http://6502.org/documents/books/mcs6500_family_programming_manual.pdf MCS6500 Microcomputer Family Programming Manual], appendix B, p.B-26 (PDF p.228)</ref --><ref name="65xxhw">MOS Technology, Inc. (January 1976), [http://6502.org/documents/books/mcs6500_family_hardware_manual.pdf MCS6500 Microcomputer Family Hardware Manual], appendix A, section A.3.4, p.A-6 (PDF p.173)</ref><ref name="64doc">Jarkko Sonninen ''et al.'' (1994), [https://archive.retro-kit.co.uk/bbc.nvg.org/doc/6502.txt 64doc]</ref> performs a dummy read immediately before the write. Some hardware, though not all, may operate inappropriately due to the dummy read: outputs could momentarily be set to the wrong level, or an interrupt condition could be cleared and lost. Review the datasheet for the hardware being accessed to see whether it will be adversely affected.
 +
 
 +
A safer alternative is to call [[OSWORD &06]] with !XY=&FFFFFE00 + offset, XY?4=byte.
  
 
==See Also==
 
==See Also==
Line 13: Line 14:
  
 
[[User:Jgharston|Jgharston]] 22:08, 26 May 2009 (UTC)
 
[[User:Jgharston|Jgharston]] 22:08, 26 May 2009 (UTC)
 +
 +
==References==
 +
<references/>

Latest revision as of 13:17, 19 August 2022

OSBYTE &97 (151) - Write SHEILA

   X=offset within page &FE and Y=byte to write
Warning

Acorn MOS 1.20 writes the byte using STA &FE00,X. As it is an indexed-addressing instruction, the 6502 CPU always[1][2] performs a dummy read immediately before the write. Some hardware, though not all, may operate inappropriately due to the dummy read: outputs could momentarily be set to the wrong level, or an interrupt condition could be cleared and lost. Review the datasheet for the hardware being accessed to see whether it will be adversely affected.

A safer alternative is to call OSWORD &06 with !XY=&FFFFFE00 + offset, XY?4=byte.

See Also

Jgharston 22:08, 26 May 2009 (UTC)

References

  1. MOS Technology, Inc. (January 1976), MCS6500 Microcomputer Family Hardware Manual, appendix A, section A.3.4, p.A-6 (PDF p.173)
  2. Jarkko Sonninen et al. (1994), 64doc