Quote:
At least in the existing HP-71B emulators, it is possible to switch from 1BBBB to 2CDCC using the same hardware emulation layer as described in the HIDS documents.
good. that's pointing to maybe some byte error inside the 2CDCC dump that i'm using.
Quote:
Is your 64k segment at address 00000 write-protected, I mean emulating a ROM not a RAM? I think it was needed for my emulator to run correctly.
hm... your question implies, that "write-protected" status is read during the "ID" phase also for the system ROM. i never saw that during logic analysis of the boot phase, hence i did not configure the intended RAM portion to be visible to the configuration code. maybe, that's exactly the problem.
let me describe, how i got the 1BBBB into the RAM. i simply put a block of read-dis-, write-enabled RAM at the same address (00000) as SYSROM. SYSROM was output-enabled. then, a simple basic-loop
10 DIM A$[64]
20 B$="00000" @ B=HTD(B$)
30 FOR I=0 TO 64*32-1
40 Y$=DTH$(B+I*64)
50 A$=PEEK$(Y$,64)
60 POKE Y$,A$ @ DISP Y$
70 NEXT I
80 END
copied SYSROM into the "parallel" SYSRAM. after that, SYSROM was set to output-disabled, and SYSRAM was set to output-enabled. after a further power-on, the calculator comes up normally and works just fine.
i am going to verify the 2CDCC code one more time. if that proves to be ok, i will include the SYSRAM portion as two 32KB blocks, that are visible to the configuration routine. the complete process of swapping the system area would then be as follows (all configuration of FRAM71 is done by poke-ing bytes into the card-reader MMIO area at 2C000h):
1) configure intended SYSRAM as standard RAM (dev type 0)
2) after power-on, this part of RAM will be located at 30000h.
3) fill RAM at 30000h with new system code
4) re-configure RAM at 30000h to be soft-configured ROM (dev type 1)
5) power off
6) set SYSROM's OD to "high" (currently done by jumper)
7) power-on
thanks all for your help, will be keeping you posted!
hans
btw... that basic peek/poke loop is dead slow. somebody in the forum here pointed me already to using the FORTH module's "cmove" instead, but i can't get it to work. any hints as to what the code should look like?
Edited: 30 Apr 2012, 11:39 a.m. after one or more responses were posted