The Museum of HP Calculators

HP Forum Archive 15

[ Return to Index | Top of Index ]

HEPAX/NoVRAM Question
Message #1 Posted by Jeff D on 9 May 2005, 8:14 p.m.

Is it possible to use page "B" for one 4K machine code project and also allocate page "A" to another machine code project. I have found many utility programs that I would like to enter into the page "A" project while still developing my existing project in page "B". I do not see any reason this would not work as "A" and "B" are the last two pages in the Advanced HEPAX correct? The problem that I am encountering is the mcode that I have entered into page "A", the FAT for the 3rd function should be A161 but when the function is called it is NONEXISTENT. When I DISASM the listing the FAT reads A060 not A161 like it is supposed to. I have verified several times that the hex code reads A161 in the FAT portion of the 4K block using HEXEDIT. Any ideas what might cause such a problem? Please let me know. Jeff

      
Re: HEPAX/NoVRAM Question
Message #2 Posted by Raymond Del Tondo on 9 May 2005, 8:52 p.m.,
in response to message #1 by Jeff D

Hi,

after the first reading it seems you allowed the HEPAX
to assign another ROM ID than the one you wanted for page A.

Another idea: Does the *code* you address with the FAT entry
actually exist in page A, or is it in (maybe) page B?
Or does the code call something, which isn't available?

Did you copy the code from somewhere else (another ROM),
or did you key it in, making the fat entry by hand?

Questions over questions...

Did you know that you can use one page's FAT to address
code which resides somewhere else?
The CCD module uses this feature.

Raymond

            
Re: HEPAX/NoVRAM Question
Message #3 Posted by Jeff D on 10 May 2005, 7:55 a.m.,
in response to message #2 by Raymond Del Tondo

Thanks for your response. I did determine the problem after some further reading. In the FAT the first word for the function 000 where the third digit is the a of the abc address. This has not been a problem for me as of yet because I had not written long enough code to use anything other than 0 for the a digit. I would be very interested in understanding how to access another page of code with only one FAT. If I understand correctly, I could have the FAT in page "B" have all the addresses for page "A". I would assume page "A" still needs its own FAT in order to recognize the code. Thanks much Jeff

                  
Re: HEPAX/NoVRAM Question
Message #4 Posted by Raymond Del Tondo on 10 May 2005, 9:44 a.m.,
in response to message #3 by Jeff D

Hi Jeff,

given your example, your page A doesn't need a FAT,
if you don't want it to have a FAT.
Just put three zero words at addresses
p001, p002, and p003 , where p is your page.

However, the FAT structure for each entry consists of two ROM words,
where the Least Significant Nibble (LSN) of the first word
is the secondmost significant nibble of the target address,
and the two LSN of the second word are the LSN of the target address.

The second nibble of the first word is used to determine the page offset.
This nibble is usually zero.

If you set it to F, then the complete target address
will be in the page *below* the current page.

If your FAT looks like:
8026 004
8027 06A
the target address will be 846A (the usual case).

If your FAT looks like:
8026 014
8027 06A
the target address will be 946A.

If your FAT looks like:
8026 0F4
8027 06A
the target address will be 746A.

HTH

Raymond

                        
Re: HEPAX/NoVRAM Question
Message #5 Posted by Jeff D on 10 May 2005, 1:00 p.m.,
in response to message #4 by Raymond Del Tondo

Thanks much for the assistance. Jeff

                        
Re: HEPAX/NoVRAM Question
Message #6 Posted by Peter on 10 May 2005, 10:44 p.m.,
in response to message #4 by Raymond Del Tondo

Man, you reall know your m-code!!

Peter

                        
Re: HEPAX/NoVRAM Question
Message #7 Posted by Miki Mihajlovic on 11 May 2005, 11:04 p.m.,
in response to message #4 by Raymond Del Tondo

May I ask an additional question here. The first nibble of the first word describes if the function is MCODE - 0 or a User Code program - 2. But what about the first nibble of the second word. I haven't found explanantion for it anywhere. I know it is usually set to zero but is this a rule or can it be something else and what does it mean if it isn't zero?

1234

                              
Re: HEPAX/NoVRAM Question
Message #8 Posted by Raymond Del Tondo on 13 May 2005, 7:32 a.m.,
in response to message #7 by Miki Mihajlovic

AFAIK the first nib of the 2nd word isn't used at all.
There exists a (legacy-type) pseudo-op DEFP4K which produces an 1 there,
but it doesn't seem to be used anywhere.

I could look up in the VASM listing, but that can take a while...

Raymond

BTW: Actually, I sent this post yesterday already,
and just wondered why it didn't show up.
So here it is again;-)


[ Return to Index | Top of Index ]

Go back to the main exhibit hall