Difference between revisions of "84PCE:Ports:0020"

From WikiTI
Jump to: navigation, search
(Mention that exploit was patched.)
 
(7 intermediate revisions by 2 users not shown)
Line 1: Line 1:
[[Category:84PCE:Ports:By_Address|0020 - Flash Protection]]
+
[[Category:84PCE:Ports:By_Address|0020 - Memory Protection]]
[[Category:84PCE:Ports:By_Name|Flash Protection]]
+
[[Category:84PCE:Ports:By_Name|Memory Protection]]
 
== Synopsis ==
 
== Synopsis ==
 
'''Port Number:''' 0020-0025
 
'''Port Number:''' 0020-0025
  
'''Function:''' Flash Protection
+
'''Function:''' Memory Protection Range
  
This range of ports controls access to flash so that you don't accidentally do something really really bad. Information is not public on the actual control of these ports.
+
0020-0022: Memory protection range lower limit (inclusive, LSB in 20, MSB in 22)
 +
 
 +
0023-0025: Memory protection range upper limit (inclusive, LSB in 23, MSB in 25)
 +
 
 +
Any memory access from unprivileged code at an address (after adding MBASE in z80 mode) in this inclusive range has the following effects:
 +
* Reads read-as-zero.
 +
* Writes don't affect the byte in memory and cause an nmi.
 +
* Fetches (reads of executed code) work normally.
 +
* Privileged code can read and write normally.
 +
 
 +
Execution in this range is privileged. Implications of privileged code are described in [[84PCE:Ports:001D]].
 +
 
 +
By default the boot code sets this to D1887C-D1887C on pre-M. Later revisions set it to D1887D-D1887C. If lower limit > upper limit then no memory is affected.

Latest revision as of 20:12, 9 April 2020

Synopsis

Port Number: 0020-0025

Function: Memory Protection Range

0020-0022: Memory protection range lower limit (inclusive, LSB in 20, MSB in 22)

0023-0025: Memory protection range upper limit (inclusive, LSB in 23, MSB in 25)

Any memory access from unprivileged code at an address (after adding MBASE in z80 mode) in this inclusive range has the following effects:

  • Reads read-as-zero.
  • Writes don't affect the byte in memory and cause an nmi.
  • Fetches (reads of executed code) work normally.
  • Privileged code can read and write normally.

Execution in this range is privileged. Implications of privileged code are described in 84PCE:Ports:001D.

By default the boot code sets this to D1887C-D1887C on pre-M. Later revisions set it to D1887D-D1887C. If lower limit > upper limit then no memory is affected.