OSWORD &06

From BeebWiki
Revision as of 05:28, 29 March 2015 by Jgharston (talk | contribs) (Added implementation details and single-byte code.)
Jump to: navigation, search

OSWORD &06 (6) - Write I/O processor memory Acorn MOS 1.00 and later

On entry:
 XY!0=address to write to
 XY?4=byte to be written.
Some systems recognise screen memory at &FFFExxxx and sideways ROMs
at &FFrr8000-&FFrrBFFF.

Coding

The following routines can be used to copy data to and from I/O memory regardless of the location of the calling program. It requires X%=>5-byte control block, Y%=X%DIV256.

    DEFPROCmem_rd(io%,mem%,num%)
    A%=5:REPEAT
      !X%=io%:CALL&FFF1:?mem%=X%?4
      io%=io%+1:mem%=mem%+1:num%=num%-1
    UNTILnum%<1:ENDPROC
    :
    DEFPROCmem_wr(io%,mem%,num%)
    A%=6:REPEAT
      !X%=io%:X%?4=?mem%:CALL&FFF1
      io%=io%+1:mem%=mem%+1:num%=num%-1
    UNTILnum%<1:ENDPROC
    REM To read a single byte:
    !X%=addr:A%=5:CALL&FFF1:byte=X%?4
    :
    REM To write a single byte
    X%?4=byte:!X%=addr:A%=6:CALL&FFF1

Implementations

All 8-bit Acorn systems write to whichever ROM/RAM is paged in. All except the BBC B+ write to main memory. The B+ recognises &FFFExxxx to write to the shadow screen memory, otherwise it writes to main memory.

See Also

Jgharston 23:54, 30 October 2011 (UTC) Jgharston (talk) 04:28, 29 March 2015 (UTC)