HP-71B MultiMod ROM Emulator User Manual
|
01-18-2021, 12:30 AM
Post: #1
|
|||
|
|||
HP-71B MultiMod ROM Emulator User Manual
As anyone who has worked on a term paper (or other) knows, there comes a time after many reviews when you can no longer see its defects. So I'm posting the MultiMod user manual now as something of a near finished product. There are some appendices that need completion and some missing images, but they're not needed at the moment. Hopefully as promised this draft will give you an idea of how you work with a completed ROM emulator board.
I'm still ironing out how files will be structured in the root directory, and some procedures may need a slight tweak as things are finishing up. Support software is working on Windows 10, but I hope Linux can be added as a host in the near future. I'll follow the thread arrangement others use and put any updated manual or associated file in this first post. Feedback welcome! ~Mark Remember kids, "In a democracy, you get the government you deserve." |
|||
01-18-2021, 03:28 AM
Post: #2
|
|||
|
|||
RE: HP-71B MultiMod ROM Emulator User Manual
Ok. Just take my money. Please.
My Collection: 55, 67T, 25PLP, 34C, 15C, 16C, 41CV, 41CX, 41-CL, DM41X, DM42, 42S, 48G, 71B, 75C, 95LX, HP-150, Portable+, HP-86, Integral PC. |
|||
01-18-2021, 04:39 AM
(This post was last modified: 01-18-2021 08:30 PM by Sylvain Cote.)
Post: #3
|
|||
|
|||
RE: HP-71B MultiMod ROM Emulator User Manual
Mark,
I did a first pass reading and I have not completely double checked with the Hardware IDS but if you follow the H-IDS, then there is an error at page 6: this line Code: -------[ROM ID code]-------- Flag Addr Chip ; Comment should be Code: -------[ROM ID code]-------- Flag Addr Chip ; Comment There are other errors in the example, if I have understood correctly of course. From what I can deduce, the only reason the Flag field exist is because you need a way to specify the hard-coded ROM, otherwise the [Nibble 4 : Last Chip] field should be enough. Sylvain 5-nibble ID code as described in Hardware IDS Nibble 0 : Address Space Size Code: Value Memory Size Nibble 1 : Reserved Nibble 2 : Device Type Code: 0 : RAM Nibble 3 : Device Class Code: Memory : 0..F : Unassigned Nibble 4 : Last Chip Code: bit 3 : Last chip in module Edit: rework Address Space Size table to add byte sizes |
|||
01-18-2021, 06:45 AM
(This post was last modified: 01-18-2021 07:11 AM by mfleming.)
Post: #4
|
|||
|
|||
RE: HP-71B MultiMod ROM Emulator User Manual
Hi Sylvain,
To quote Chico Marx, "Who you gonna believe, me or your own eyes?" The configuration string shown works in real hardware. One of the interesting things I've learned during this project is that the available documentation on the 71B is not just incomplete but in some cases wrong, or at least ambivalent and open to interpretation. The EOM flag in nib 5 marks the end of all resources, right? Wrong. It marks the end of a module, but who would think of more than one module per port, right? FRAM71. The 71 actually sends out an ID command following an EOM as a check to see if anything else is out there - consider it a hardware sanity check. I've also seen it send an Unconfigure command after setting an invalid DP address just to see if the hardware target doesn't respond to a read afterwards. Very clever, those developers. My early misunderstanding of the discovery process resulted in an infinite ID/CONFIGURE loop. Big fun! Yes, the remaining fields in a table entry are used as markers as well as holding precomputed values to speed command processing (the Addr field is populated during boot). Remember kids, "In a democracy, you get the government you deserve." |
|||
01-18-2021, 11:40 AM
Post: #5
|
|||
|
|||
RE: HP-71B MultiMod ROM Emulator User Manual
Hello Mark,
I found it strange that HP documentation was wrong with something that important, but you are the expert here not me. That settle the nibble 4 and the Flag field, but what about the nibble 0, the size nibble ? Should the 16K module not have the 0x0b value ? The documentation is clear for the address field, so no problem with that. Sylvain |
|||
01-18-2021, 04:01 PM
Post: #6
|
|||
|
|||
RE: HP-71B MultiMod ROM Emulator User Manual
A question of nomenclature that confused me early on. When speaking of ROM sizes, the size is usually given in kilobytes but the size nib in the configuration string specifies the size in kilonibbles so a 16KB ROM is 32Knib (0xA).
Remember kids, "In a democracy, you get the government you deserve." |
|||
01-18-2021, 04:15 PM
Post: #7
|
|||
|
|||
RE: HP-71B MultiMod ROM Emulator User Manual
(01-18-2021 04:01 PM)mfleming Wrote: A question of nomenclature that confused me early on. When speaking of ROM sizes, the size is usually given in kilobytes but the size nib in the configuration string specifies the size in kilonibbles so a 16KB ROM is 32Knib (0xA).That make sense, my error, sorry. I will reread the document tonight and will came back here if I have more questions. Thanks! |
|||
01-18-2021, 04:55 PM
Post: #8
|
|||
|
|||
RE: HP-71B MultiMod ROM Emulator User Manual
One of the documentation "errors" that bit me was the timing information in the H/W IDS. It states that Tacc, "*STR low to data-out valid" (p. 9-4), is a maximum of 200 ns. Not so with the earliest Saturn chip, as confirmed by J-F with an oscilloscope. Seems the chips that are in early Titans were a bit slow to serve up data on the bus. The timing specs in the IDS were probably written with newer Saturns in mind.
At one point I tried sampling the bus early in the strobe cycle rather than at midpoint. My code worked fine with a newer 71B (2724A). On an older model (2406A) the data was not yet valid so the code usually, not always, saw a NOP. On the occasions when it saw something random: Bang. Crash. Battery pull. Remember kids, "In a democracy, you get the government you deserve." |
|||
01-20-2021, 01:36 AM
(This post was last modified: 01-20-2021 03:40 PM by Sylvain Cote.)
Post: #9
|
|||
|
|||
RE: HP-71B MultiMod ROM Emulator User Manual
Hello Mark,
After reading your manual several times, this is what I understand. Sylvain Summary:
Edit 1: typos Edit 2: integrated Mark comments Edit 3: clarifications |
|||
01-20-2021, 02:44 AM
(This post was last modified: 01-20-2021 02:45 AM by mfleming.)
Post: #10
|
|||
|
|||
RE: HP-71B MultiMod ROM Emulator User Manual
Hi Sylvain,
Excellent summary! I should include something like this in the Appendix. Here are a couple of comments. Quote: [*]ROMsThe ROM order of enumeration follows the order of entries in the table. There's also no constraint on the order of chip numbers in the table. So, if you wanted to swap the order of appearance of the MATH and JPC ROMs, just swap the two table entries and change the FLAG value of each. The second entry would have JPC starting at chip 4 (flash block 4) and the third entry would have MATH starting at chip 2 (flash block 2). I was thinking a picture of the mapping between virtual "chips" and physical flash blocks might help. Quote: [*]ROMsThis should really be expected chip size. If you build a ROM from a sequence of 16K chips then it can be any multiple of 16KB. You could build a 48KB ROM from three 16KB chips, or from one 32KB and one 16KB chip if you want! Quote: [*]ADDR : address of some sort, data is inconsistent, explanation not found in the manualThis is a lookup value used when mapping a 71B address to an address in flash memory. I used to do it by hand but realized it was a certain source of error if others had to do it. The value is now computed when the processor starts. The table/include format is pretty flexible. If you think in terms of the hardware, chips and such, then it's a bit easier to see what you're doing with the table. Reordering the table for MATH and JPC would be like rewiring the Daisy-In/Daisy-Out signal between chips. The ROMs are still in the same place on the board, you've just moved them around with the wiring order. I hope the manual conveys everything needed to use the MultiMod board. Don't want a whole lot of questions later Edit: I should warn against changing the MMIO entry. You can probably guess why... Remember kids, "In a democracy, you get the government you deserve." |
|||
01-20-2021, 01:23 PM
Post: #11
|
|||
|
|||
RE: HP-71B MultiMod ROM Emulator User Manual
Hello Mark,
(01-20-2021 02:44 AM)mfleming Wrote: Excellent summary! I should include something like this in the Appendix. Here are a couple of comments.Thanks! (you can take mine if you want) (01-20-2021 02:44 AM)mfleming Wrote:Understood, I will update my summary to reflect this.(01-20-2021 01:36 AM)Sylvain Cote Wrote:The ROM order of enumeration follows the order of entries in the table. ... (01-20-2021 02:44 AM)mfleming Wrote:I know, I will update my summary to show a ROM with multiple chips of 16K.(01-20-2021 01:36 AM)Sylvain Cote Wrote:This should really be expected chip size. If you build a ROM from a sequence of 16K chips then it can be any multiple of 16KB. You could build a 48KB ROM from three 16KB chips, or from one 32KB and one 16KB chip if you want! (01-20-2021 02:44 AM)mfleming Wrote:If it is calculated by your code, then I think you should just say to put 0x00 in that field, this will remove questions from a beginner.(01-20-2021 01:36 AM)Sylvain Cote Wrote:This is a lookup value used when mapping a 71B address to an address in flash memory. I used to do it by hand but realized it was a certain source of error if others had to do it. The value is now computed when the processor starts. (01-20-2021 02:44 AM)mfleming Wrote: Edit: I should warn against changing the MMIO entry. You can probably guess why...Mmmm, I wonder ... LOL Question: for the place holder lines in the table, what should be put there to make it neutral, like default values for that type of line. Sylvain |
|||
01-20-2021, 01:43 PM
Post: #12
|
|||
|
|||
RE: HP-71B MultiMod ROM Emulator User Manual
Nice manual. A minor point, but there appears to be a typo on page 8 in the line "The Math2B ROM for example spans chips 2 and 3, so it uses the origin address of chip 3 (0x08000)." Should it be chip 2?
|
|||
01-20-2021, 04:08 PM
Post: #13
|
|||
|
|||
RE: HP-71B MultiMod ROM Emulator User Manual
(01-20-2021 01:23 PM)Sylvain Cote Wrote:I will! Thanks.(01-20-2021 02:44 AM)mfleming Wrote: Excellent summary! I should include something like this in the Appendix. Here are a couple of comments.Thanks! (you can take mine if you want) Quote:Good idea.(01-20-2021 02:44 AM)mfleming Wrote: This is a lookup value used when mapping a 71B address to an address in flash memory. I used to do it by hand but realized it was a certain source of error if others had to do it. The value is now computed when the processor starts.If it is calculated by your code, then I think you should just say to put 0x00 in that field, this will remove questions from a beginner. Quote:Question: for the place holder lines in the table, what should be put there to make it neutral, like default values for that type of line.An invalid value for the size nib, 6 or less, would be rejected during enumeration. Although I do some sanity checks while processing the table, these 8-bit controllers lack the RPM (Read Programmers Mind) instruction, so I ultimately have to rely on proper care being taken when setting up the table. OTOH, part of the fun might be seeing what happens if you enumerate the same ROM multiple times - backup first (01-20-2021 01:43 PM)jwhsu Wrote: Nice manual. A minor point, but there appears to be a typo on page 8 in the line "The Math2B ROM for example spans chips 2 and 3, so it uses the origin address of chip 3 (0x08000)." Should it be chip 2?Corrected. That's what I mean by being blind to defects after a while. Thanks for the feedback! ~Mark Remember kids, "In a democracy, you get the government you deserve." |
|||
01-22-2021, 12:08 AM
(This post was last modified: 01-22-2021 12:11 AM by Sylvain Cote.)
Post: #14
|
|||
|
|||
RE: HP-71B MultiMod ROM Emulator User Manual
(01-20-2021 04:08 PM)mfleming Wrote:(01-20-2021 01:23 PM)Sylvain Cote Wrote: Question: for the place holder lines in the table, what should be put there to make it neutral, like default values for that type of line.An invalid value for the size nib, 6 or less, would be rejected during enumeration. Although I do some sanity checks while processing the table, these 8-bit controllers lack the RPM (Read Programmers Mind) instruction, so I ultimately have to rely on proper care being taken when setting up the table. OTOH, part of the fun might be seeing what happens if you enumerate the same ROM multiple times - backup first So, could these be reasonable default place holder values: Code: ; SIZE , RESV , TYPE , CLAS , LAST , FLAG , ADDR , CHIP or this ? Code: ; SIZE , RESV , TYPE , CLAS , LAST , FLAG , ADDR , CHIP Sylvain edit: added the second option |
|||
01-22-2021, 02:31 AM
Post: #15
|
|||
|
|||
RE: HP-71B MultiMod ROM Emulator User Manual
MultiMod Preparation Table Alternate Version
|
|||
01-22-2021, 06:08 AM
(This post was last modified: 01-22-2021 07:58 PM by mfleming.)
Post: #16
|
|||
|
|||
RE: HP-71B MultiMod ROM Emulator User Manual
Now that I like and shall adopt. I'll post a mapping diagram I made on the morrow. Processing a chip 0 is a recent addition with not a lot of guards around it yet, so best to avoid unless you really mean it. Added mainly to make J-F's Ultimate ROM. That definitely should be the default setting of a board, unless you want the 41 Translator substituted...
Mapping with MATH and JPC entries swapped Remember kids, "In a democracy, you get the government you deserve." |
|||
01-23-2021, 02:10 AM
Post: #17
|
|||
|
|||
RE: HP-71B MultiMod ROM Emulator User Manual
Mark, great mapping diagram, visually translate the configuration table perfectly.
|
|||
« Next Oldest | Next Newest »
|
User(s) browsing this thread: 3 Guest(s)