▼
Posts: 528
Threads: 85
Joined: Jul 2005
I have just published a new BETA version of the M2kM software. It can be downloaded from my website .
The disassembler is completely changed internally, and the listing allows for much more customization. Apart from the disassembler there are no other changes in M2kM (I hope). As this is still a BETA version, please give me you feedback about the disassembler. Be aware that the disassembler also works if you do not have an MLDL2000.
The one thing I have to add to the disassembler is full SDK41 compatible disassembly, that will be part of the final release.
Meindert
▼
Posts: 4,027
Threads: 172
Joined: Aug 2005
Thanks, Meindert;
will give it a try and let you know ASAP.
In time: many of the original X-Functions do not work in the MLDL2000 'emulation': ALENG works but ANUM, ATOX works but AROT... I have a complete Work/NoWork list, and I did not include the ones dealing with X-Memory, of course. Is it possible that Page #3 has some kind of hardware disabling in the HP41C/CV scheme? Or should some of the 'unreported' X-Memory areas exist and are used as scratch pad for these functions? Do you happen to know something about it?
Cheers.
Luiz (Brazil)
(so far, MLDL2018A is working flawlessly...)
▼
Posts: 528
Threads: 85
Joined: Jul 2005
Luiz,
I suspect that this is due to the CX bankswitching, which is somewhat different from the external ports. The MLDL2000 switches the banks in pairs, so bank 2 and 3 are switched together, and 4 and 5.
I would first try to fill all banks of a page with the same contents, and then try again, let me know if this works (or not) and what the offending functions are.
Meindert
▼
Posts: 528
Threads: 85
Joined: Jul 2005
Luiz,
I have checked the pages for the HP41CX: Bank 2 of Page 3 (CX XFuncftions ROM) maps to Bank 2 of Page 5, and that is not done in the MLDL2000. Keep a copy of Page 5, Bank 2 also in Page 3, Bank2.
My documentation states that bankswitching is not supported in pages <6, but looking at my code it should work in exactly the same way as the bankswitching in the higher ports.
Good luck with further testing!
Meindert
Edited: 10 Jan 2010, 12:17 p.m.
▼
Posts: 4,027
Threads: 172
Joined: Aug 2005
Hi, Meindert;
Sorry, I did not notice you wrote a complementary message! I read Monty´s follow-up and wrote him an answer. Based on what you observed, my conclusions were wrong and the problem seems easier to be solved. I will test your configuration and post results later
Imagine hacking the HP41 O.S... What about adding Angel´s complex features and HEPAX functionality altogether in the first pages, as part of the system? If the OS can be rewritten with the use of bank switching, chances are that it would fit in the first page alone. Well, if the guys who wrote the O.S. did not write it so, chances are that it is not actually a good idea, though.
So much for the dreaming, let me get back to my teacher activities (have not concluded the end-of-semester paperwork yet... It sucks big time!)
Cheers.
Luiz (Brazil)
Posts: 297
Threads: 25
Joined: Nov 2006
It may have something to do with the fact the the C/CV mainframe
ROMs start searching for functions in Page 4, completely
ignoring Page 3?
Monte
▼
Posts: 4,027
Threads: 172
Joined: Aug 2005
Hi, Monte;
once I loaded pages 0, 1 and 2 of the CX mainframe in a CV mainboard through MLDL2000, I considered that the O.S. reads page #3 as it addresses it through the system software. Fact is when I first used MLDL2000 (some years ago) I loaded page #3 of some CV units (coco- and halfnut) with some different ROM images. These ROM list their contents with CAT 2 (hence the system 'sees' it) but once you try to execute anything there you get NONEXISTENT.
When I loaded the CX ROM set (few weeks ago) in the MLDL2000 and powered a coconut CV without the ROM IC´s with it, it behaves accordingly, as a CX, except that the time functions return blank display and X-memory functions either return file-not-found errors, as expected, or no reaction at all (EMDIR, for example, always returns [124.0000] to the X-register and no message at all, like [DIR EMPTY]). Many features, like program size in CAT1, ROM headings in CAT 2 and the fully-operating CAT 6, were observed.
When I decided to test the extended functions that might work, the following ones did not work at all:
ANUM
AROT
CLKEYS
CLRGX (CX only, right?)
GETKEY
PASN
PCPLPS
POSA
PSIZE
STOFLAG
X...NN (none of these)
These ones worked fone:
ALENG
ATOX
SIZE?
RCLFLAG
REGMOVE
REGSWAP
X<>F
XTOA
SigmaREG? (also a CX-only, and works!)
I could see no pattern that might connect each of the working (or the nonworking) functions with each other. The only thing I could think of is the use of RAM scratch area that was not there. You see, I never accepted too well the concept of X-Memory discontinuity as physical, I aways took it as existing RAM area for system scratch in some X-Function/Memory 'maneuvers'. I'd gladly accept any other concise explanation, though.
This is all I can remember now. I did not have the time to test the emulation in an actual CX mainboard this weekend, will do it in the days ahead. I am trying to repair a faulty one for ages (I actually have it waiting for an actual definitive go-nogo repair procedure), and will soon post about the results here.
Cheers.
Luiz (Brazil)
Edited: 10 Jan 2010, 2:57 p.m.
▼
Posts: 297
Threads: 25
Joined: Nov 2006
Luiz,
As to your first question, the CAT function searches everything
from Page 3 on, but the XEQ function starts at page 4 (C/CV).
This is why a Page 3 function shows up but can't be executed.
I ran into this issue when writing functions for my new design
and it took me a while, watching a trace, to figure out the
problem. I ended up having to map my new functions into Page 7
at startup.
As far as the CX X functiuons, everything shows up in the CAT
because the function entries are all in Page 3. However, most
of the functions jump fairly quickly to an address in Page 5,
after switching to Bank 2. So, if the bank switching isn't
done correctly the code will end up in neverland. That's why
most of your CX X functions aren't working. The ones that do
work remain in Page 3. For proper operation, the bank select
for Page 5 must be updated while executing in either Page 3 or
Page 5, but only Page 5 actually has multiple banks.
The CAT function is only capable of searching Bank 1, and that
is why it has to be done this way.
Hope that clarifies things,
MOnte
▼
Posts: 528
Threads: 85
Joined: Jul 2005
Monte is totally correct here. Luiz, I do not expect the MLDL2000 to work in this configuration. Remember, it always switches the odd and even banks. That means that bank 2 of Page 2 must also have valid contents (system ROM 2) when ENBANK is executed in Page 3 as Page 2 will also be switched.
In the case of the 41CX, bank 5 is also switched when ENBANK is executed while in Page 3, and the MLDL2000 will fail to do this. New firmware is required to implement and it is not very difficult, but I have no time to do that this week (travelling again).
Meindert
Posts: 297
Threads: 25
Joined: Nov 2006
Luiz,
And I just noticed that the last CX OS code ( Rev NFL) jumps
directly into Page 3 in several spots. Clearly the authors
needed more space than was available in Pages 0-2. This means
that the CX X functions must be available in Page 3 or "bad
things" will likely happen.
Monte
Posts: 1,253
Threads: 117
Joined: Nov 2005
Greetings Meindert - I just downloaded the newer code and will take it for a spin in a couple of days - feedback will come then.
Thanks for keeping the 41-flame on!
|