Difference between revisions of "84PCE:Syscalls:0002E8"

From WikiTI
Jump to: navigation, search
(Outputs)
Line 1: Line 1:
[[Category:84PCE:Syscalls:By Name|WriteFlashA]]
+
[[Category:84PCE:Syscalls:By Name|EraseFlashSector]]
[[Category:84PCE:Syscalls:By Address|0002E8 - WriteFlashA]]
+
[[Category:84PCE:Syscalls:By Address|0002DC - EraseFlashSector]]
 
== Synopsis ==
 
== Synopsis ==
'''Hypothesized Official Name:''' WriteFlashA
+
'''Hypothesized Official Name:''' EraseFlashSector
  
'''Syscall Address:''' 0002E8h
+
'''Syscall Address:''' 0002DCh
  
Writes a byte in register A to flash (This is equivalent to an 'and' with the current byte in flash). Flash must be unlocked in order to use this routine, and locked sectors should not be written to.
+
Erases an entire sector (64kb) of flash memory. This basically resets the bytes in the sector back to the nominal value of FF.
  
 
=== Inputs ===
 
=== Inputs ===
A = Byte to write
+
A = Sector to clear
 
+
DE = Address to write to
+
  
 
=== Outputs ===
 
=== Outputs ===
Byte 'anded' with byte in flash stored
+
Sector erased
  
 
=== Destroys ===
 
=== Destroys ===
 
* All
 
* All
 +
 +
=== Notes ===
 +
This routine actually checks the caller PC address to ensure it was called from a suitable location. A workaround is as follows using the fact that 0000F8 consists of a jump to a ret instruction.
 +
 +
<pre>EraseFlashSector:
 +
ld bc,0000F8h
 +
push bc
 +
jp _EraseFlashSector</pre>

Revision as of 22:49, 25 May 2016

Synopsis

Hypothesized Official Name: EraseFlashSector

Syscall Address: 0002DCh

Erases an entire sector (64kb) of flash memory. This basically resets the bytes in the sector back to the nominal value of FF.

Inputs

A = Sector to clear

Outputs

Sector erased

Destroys

  • All

Notes

This routine actually checks the caller PC address to ensure it was called from a suitable location. A workaround is as follows using the fact that 0000F8 consists of a jump to a ret instruction.

EraseFlashSector:
	ld	bc,0000F8h
	push	bc
	jp	_EraseFlashSector