A83: Ti-83 Plus Flash Access
[Prev][Next][Index][Thread]
A83: Ti-83 Plus Flash Access
I've been trying for a while to understand how the 83p Flash ROM works, I've
isolated this in base code , but It doesn't seem to work:
--/ This piece of code runs at RamCode(8100h) --/
FlashWrite:
AND 1Fh
OUT (06h), A
BIT 7, H
JR NZ, NoBitSet
SET 1, (IY + 25h)
wFlashLp:
BIT 1, (IY + 25h)
NoBitSet:
PUSH HL
JR NZ, SkipAdjust
LD HL, 7FFFh
OR A
SBC HL, DE
JR NC, SkipAdjust
IN A, (06h)
INC A
CP 1Eh
JR Z, NoOut
OUT (06h), A
NoOut:
LD DE, 4000h
SkipAdjust:
POP HL
NotBitSet:
IN A, (06h)
PUSH AF
LD A, 02h
OUT (06h), A
LD A, 0AAh
LD (6AAAh), A
LD A, 01h
OUT (06h), A
LD A, 55h
LD (5555h), A
LD A, 02h
OUT (06h), A
LD A, 0A0h
LD (6AAAh), A
POP AF
OUT (06h), A
LDI
DEC DE
DEC HL
RepeatChk:
LD A, (DE)
PUSH AF
XOR (HL)
AND 80h
JR Z, NeXtByte
POP AF
BIT 5, A
JR Z, RepeatChk
LD A, (DE)
XOR (HL)
AND 80h
JR NZ, FlashErr
JR StackFlushed
NeXtByte:
POP AF
StackFlushed:
INC DE
INC HL
LD A, B
OR C
JR NZ, wFlashLp
DEC DE
LD A, 0F0h
LD (DE), A
INC DE
LD A, 1Fh
OUT (06h), A
XOR A
RET
FlashErr:
LD A, 0F0h
LD (DE), A
LD A, 1Fh
OUT (06h), A
OR A
RET
CodeSiz EQU $ - FlashWrite
--/ /--
This can be used to invoke that code, where B is byte to write, DE offset in
flash page, A ROM page and C, number of bytes to write
LD BC, 1F50h
LD DE, 4000h
LD A, 0Fh
fWriteLp:
PUSH BC
PUSH AF
LD C, 01h
LD IX, 8100h
Invoke(8021h)
POP AF
POP BC
DEC C
JR NZ, fWriteLp
--/ /-
Solignac Julien
Alias x1Cygnus
x1cygnus@online.fr
http://x1cygnus.online.fr/