HP Forums
FRAM71B - Printable Version

+- HP Forums (https://www.hpmuseum.org/forum)
+-- Forum: HP Calculators (and very old HP Computers) (/forum-3.html)
+--- Forum: General Forum (/forum-4.html)
+--- Thread: FRAM71B (/thread-6287.html)

Pages: 1 2 3 4


RE: FRAM71B - Erwin - 10-06-2016 07:43 PM

(10-06-2016 06:19 PM)Dave Frederickson Wrote:  
(10-06-2016 05:41 PM)Erwin Wrote:  I don't think in the case it's about the LEX-Files. I did the installation like Sylvain's guide and only let the ROMCOPY in the IRAM.

Hi Erwin,

I'm talking about OTF BS. ROMCOPY can't be used with OTF BS. See the Bank Switching article.

(10-06-2016 05:41 PM)Erwin Wrote:  I'm wondering that no one did bank switching in the forum, although there are some FRAM71 out in the wild :-)
Bank Switching is a feature I proposed to Hans about a year and a half ago. Shortly after that Hans extended the feature to swap banks on-the-fly. After HHC2015 I put together the FRAM71 Toolkit and wrote v1 of the Bank Switching article, but we had no idea of what the "rules" were. Consequently, the safe thing to do was to try to avoid OTF BS. Since then Bob and Sylvain have given clues that appear to define the rules for using OTF BS and those are in v2 of the bank switching article.

So when you say, "no one did bank switching in the forum", I don't know what you mean.

Regards, Dave

Hi Dave,

sorry my comment was no criticism about the feature bank switching. What I meant in my post is, that there are some FRAM71s out there and the experiences are very small - that was I'm wondering. Maybe its my bad english too. I am grateful for the initiative for the hardware and software - you all did a very good job and helps to have useful possibilities with our ancient calculator. The FRAM Toolkit, the guide from Sylvain and the good description from Hans was a great help for me otherwise it would not be able to make the configuration.
I use the HP71 with small basic-programs in my job and in my study (in my old days) and the HP3421A but not in 'deep' programming- But now with the FRAM71 it could get more practical for me instead of switching out modules and with PIL-BOX and the pyilper its easier for my to handle my files instead with the floppy disc.

I didn't, use ROMCOPY after the first basic installation. My problem is that I was not able to start initiate the other banks with the first POKE like Sylvain proposed. Maybe there is a mistake from me - don't know. So I tried to describe exactly what I did so it could be helpful to go further.
I'm ready to continue further testing - next step is like a wrote in my last reply in order to prevent a fault regarding the LEX files.

best regards
Erwin


RE: FRAM71B - Erwin - 10-06-2016 07:50 PM

(10-06-2016 07:03 PM)Sylvain Cote Wrote:  
(10-06-2016 05:41 PM)Erwin Wrote:  The problem comes with the first POKE command from Sylvain's very detailed proposal (thanks on this point).

Hello Erwin,

I will do your desired setup, document the procedure and post it here when I have free time this weekend.
FYI, Since I have not yet received my FRAM71B-1024 (HW105/FW600) module, I can only test with my FRAM71A-1024 (HW104/FW502) modules.

Sylvain

Hy Sylvain,

thank you, I am glad and grateful about every help and maybe its for others helpful too. I can do further test when there are some other ideas ... and report it in the forum.

Erwin


RE: FRAM71B - Dave Frederickson - 10-06-2016 08:14 PM

(10-06-2016 07:43 PM)Erwin Wrote:  Hi Dave,

sorry my comment was no criticism about the feature bank switching. What I meant in my post is, that there are some FRAM71s out there and the experiences are very small - that was I'm wondering. Maybe its my bad english too. I am grateful for the initiative for the hardware and software - you all did a very good job and helps to have useful possibilities with our ancient calculator. The FRAM Toolkit, the guide from Sylvain and the good description from Hans was a great help for me otherwise it would not be able to make the configuration.
I use the HP71 with small basic-programs in my job and in my study (in my old days) and the HP3421A but not in 'deep' programming- But now with the FRAM71 it could get more practical for me instead of switching out modules and with PIL-BOX and the pyilper its easier for my to handle my files instead with the floppy disc.

I didn't, use ROMCOPY after the first basic installation. My problem is that I was not able to start initiate the other banks with the first POKE like Sylvain proposed. Maybe there is a mistake from me - don't know. So I tried to describe exactly what I did so it could be helpful to go further.
I'm ready to continue further testing - next step is like a wrote in my last reply in order to prevent a fault regarding the LEX files.

best regards
Erwin

Hi Erwin,

No problem.

I agree with you that I don't think many FRAM71 users are experimenting with the more advanced features like SYSRAM and Bank Switching. For the record, there are about 20 FRAM71(A) modules out there in addition to the FRAM71B modules just being shipped and there has been very little FRAM71 activity on the forum. Sad

I don't think there's any issue with LEX files. Both the FORTH/Assembler and 41 Translator ROM's contain LEX files and the Bank Switching article demonstrates switching these two ROM's (actually two pair), arguably the most difficult thing to do with FRAM71/B.

Regards, Dave


RE: FRAM71B - Sylvain Cote - 10-07-2016 04:45 AM

Hello Erwin,

While you are waiting for the configuration setup, I am giving you some home work to do Wink

This home work will do bank switching between the Finance 16KB ROM and the CurveFit 32KB ROM.

Loading ROM images into FRAM memory
  1. POKE "2C000","00000000000000000000000000000000" [ENDLINE] // to start with a clean sheet
  2. // power cycle
  3. MEM [ENDLINE] // you should have ~16.5KB of RAM
  4. POKE "2C000","A3" [ENDLINE] // setup bank #1 -> Chip #0 with FRAM-Block #3 as 16KB RAM
  5. // power cycle
  6. CLAIM :PORT(5) [ENDLINE] // just in case the port was freed by a previous configuration
  7. MEM [ENDLINE] // you should have ~32.5KB of RAM
  8. FREE :PORT(5) [ENDLINE] // create the space to received the 16KB Finance ROM
  9. MEM [ENDLINE] // you should have ~16.5KB of RAM
  10. SHOW PORT [ENDLINE] // you should see -> Port: 5 / Size: 16384 / Type:1 IRAM
  11. // load the FRAMTK LIF image into pyILPER or ILPER
  12. COPY ROMCOPY:TAPE [ENDLINE] // load ROMCOPY LEX file into main memory
  13. // load the FINANCE LIF image into pyILPER or ILPER
  14. ROMCOPY FINANCE:TAPE TO :PORT(5) [ENDLINE] // load FINANCE 16KB ROM image into port 5
  15. CAT :PORT(5) [ENDLINE] // show port 5 Finance ROM content
  16. POKE "2C000","00" [ENDLINE] // remove Chip #0 configuration, this step prevent a computer freeze or a memory lost
  17. // power cycle
  18. POKE "2C000","94" [ENDLINE] // setup bank #2 -> Chip #0 with FRAM-Block #4 as 32KB RAM
  19. // power cycle
  20. CLAIM :PORT(5) [ENDLINE] // just in case the port was freed by a previous configuration
  21. MEM [ENDLINE] // you should have ~48.5KB of RAM
  22. FREE :PORT(5) [ENDLINE] // create the space to received the 32KB CurveFit ROM
  23. MEM [ENDLINE] // you should have ~16.5KB of RAM
  24. SHOW PORT [ENDLINE] // you should see -> Port: 5 / Size: 32768 / Type:1 IRAM
  25. // load the CURVEFIT LIF image into pyILPER or ILPER
  26. ROMCOPY CURVEFIT:TAPE TO :PORT(5) [ENDLINE] // load CURVEFIT 32KB ROM image into port 5
  27. CAT :PORT(5) [ENDLINE] // show port 5 CurveFit ROM content

Activating the 16KB Finance ROM in Bank 1 (Chip #0 with FRAM-Block #3)
  1. POKE "2C000","00" [ENDLINE] // remove Chip #0 configuration, this step prevent a computer freeze or a memory lost
  2. // power cycle
  3. POKE "2C000","A3" [ENDLINE] // activating bank #1 as IRAM
    or
    POKE "2C000","E3" [ENDLINE] // activating bank #1 as ROM
  4. // power cycle
  5. CAT :PORT(5) [ENDLINE] // show port 5 Finance ROM content

Activating the 32KB CurveFit ROM in Bank 2 (Chip #0 with FRAM-Block #4)
  1. POKE "2C000","00" [ENDLINE] // remove Chip #0 configuration, this step prevent a computer freeze or a memory lost
  2. // power cycle
  3. POKE "2C000","94" [ENDLINE] // activating bank #2 as IRAM
    or
    POKE "2C000","D4" [ENDLINE] // activating bank #2 as ROM
  4. // power cycle
  5. CAT :PORT(5) [ENDLINE] // show port 5 CurveFit ROM content

With the above steps, reading carefully (multiple times) Hans manual, Dave/Robert/me how-to's and some experiment you should be able to try other configurations by yourself.

Sylvain

edit: typo


RE: FRAM71B - Erwin - 10-07-2016 07:10 AM

(10-07-2016 04:45 AM)Sylvain Cote Wrote:  Hello Erwin,

While you are waiting for the configuration setup, I am giving you some home work to do Wink

This home work will do bank switching between the Finance 16KB ROM and the CurveFit 32KB ROM.

...

Sylvain

edit: typo

Hi Sylvain,

here is my trial :-) it is running - thank you very much for putting me deeper in this field. Essential is the POKE "2C000","00" when switching the banks, otherwise the calculator hangs. So this is very necessary. (I tested it too).

An open question is, how do I POKE the possible max RAM afterwards, cause of the different ROM sizes with every bank-switch I have to change it? Or should I take the minimum RAM when the maximal ROM (per size) are loaded? How to identify the maximum possible free RAM after bank-switching and does it destroy the mainRAM?

regards
Erwin

Code:
CLAIM :PORT(5.03) [ENDLINE] // delete my previous configuration
CLAIM :PORT(5.04) [ENDLINE] // delete my previous configuration
POKE "2C000","00000000000000000000000000000000" [ENDLINE] -> remove FRAM71 memory from the memory map
[OFF] [ON]                                              -> Activate the configuration
MEM [ENDLINE]                                             -> MEM (16.5KB)
SHOW PORT [ENDLINE]
0.05  16384  2
0      4096  0
0.01   4096  0
0.02   4096  0
0.03   4096  0

Connect to pyILPER via PIL-BOX
Code:
POKE "2C000","A3" [ENDLINE] // setup bank #1 -> Chip #0 with FRAM-Block #3 as 16KB RAM
[OFF] [ON]                                              -> Activate the configuration
MEM [ENDLINE]                                             -> MEM (32,5KB)

Prepare PORT 5 for ROM installation
Code:
FREE :PORT(5) [ENDLINE] // create the space to received the 16KB Finance ROM
MEM [ENDLINE]                                             -> MEM (16.5KB)

SHOW PORT [ENDLINE]
0.05  16384  2
5     16384  1
0      4096  0
0.01   4096  0
0.02   4096  0
0.03   4096  0

load the FRAMTK LIF image into pyILPER
Code:
COPY ROMCOPY:TAPE [ENDLINE] // load ROMCOPY LEX file into main memory

Prepare for FINANCE module - load the FINANCE LIF image into pyILPER or ILPER
Code:
ROMCOPY FINANCE:TAPE TO :PORT(5) [ENDLINE] // load FINANCE 16KB ROM image into port 5
CAT :PORT(5) [ENDLINE] // Check port 5 Finance ROM content

POKE "2C000","00" [ENDLINE] // remove Chip #0 configuration, this step prevent a computer freeze or a memory lost
[OFF] [ON]                                              -> Activate the configuration
POKE "2C000","94" [ENDLINE] // setup bank #2 -> Chip #0 with FRAM-Block #4 as 32KB RAM
[OFF] [ON]                                              -> Activate the configuration
CLAIM :PORT(5) [ENDLINE] // just in case the port was freed by a previous configuration
MEM [ENDLINE] // you should have ~48.5KB of RAM

Prepare for CURVEFIT module
Code:
FREE :PORT(5) [ENDLINE] // create the space to received the 32KB CurveFit ROM
MEM [ENDLINE] // you should have ~16.5KB of RAM

SHOW PORT [ENDLINE] // you should see -> Port: 5 / Size: 32768 / Type:1 IRAM
0.05  16384  2
5     32768  1
0      4096  0
0.01   4096  0
0.02   4096  0
0.03   4096  0

load the CURVEFIT LIF image into pyILPER or ILPER
Code:
ROMCOPY CURVEFIT:TAPE TO :PORT(5) [ENDLINE] // load CURVEFIT 32KB ROM image into port 5
CAT :PORT(5) [ENDLINE] // Check port 5 CurveFit ROM content

Activating the 16KB Finance ROM in Bank 1 as IRAM (Chip #0 with FRAM-Block #3)
Code:
POKE "2C000","00" [ENDLINE] // remove Chip #0 configuration, this step prevent a computer freeze or a memory lost
[OFF] [ON]                                              -> Activate the configuration
POKE "2C000","A3" [ENDLINE] // activating bank #1 as IRAM
[OFF] [ON]                                              -> Activate the configuration
CAT :PORT(5) [ENDLINE] // show port 5 Finance ROM content
Activating the 16KB Finance ROM in Bank 1 as ROM (Chip #0 with FRAM-Block #3)
Code:
POKE "2C000","00" [ENDLINE] // remove Chip #0 configuration, this step prevent a computer freeze or a memory lost
[OFF] [ON]                                              -> Activate the configuration
POKE "2C000","E3" [ENDLINE] // activating bank #1 as ROM
[OFF] [ON]                                              -> Activate the configuration
CAT :PORT(5) [ENDLINE] // show port 5 Finance ROM content

SHOW PORT [ENDLINE]
0.05  16384  2
5     16384  1
0      4096  0
0.01   4096  0
0.02   4096  0
0.03   4096  0

Activating the 32KB CurveFit ROM in Bank 2 as IRAM (Chip #0 with FRAM-Block #4)
Code:
POKE "2C000","00" [ENDLINE] // remove Chip #0 configuration, this step prevent a computer freeze or a memory lost
[OFF] [ON]                                              -> Activate the configuration
POKE "2C000","94" [ENDLINE] // activating bank #1 as IRAM
[OFF] [ON]                                              -> Activate the configuration
CAT :PORT(5) [ENDLINE] // show port 5 Finance ROM content
Activating the 32KB CurveFit ROM in Bank 2 as ROM (Chip #0 with FRAM-Block #4)
Code:
POKE "2C000","00" [ENDLINE] // remove Chip #0 configuration, this step prevent a computer freeze or a memory lost
[OFF] [ON]                                              -> Activate the configuration
POKE "2C000","D4" [ENDLINE] // activating bank #1 as ROM
[OFF] [ON]                                              -> Activate the configuration
CAT :PORT(5) [ENDLINE] // show port 5 Finance ROM content

SHOW PORT [ENDLINE]
0.05  16384  2
5     32768  1
0      4096  0
0.01   4096  0
0.02   4096  0
0.03   4096  0



RE: FRAM71B - rprosperi - 10-07-2016 01:22 PM

Erwin,

As a new FRAM71 user, your skills are advancing quite rapidly; it is impressive to see. Some of your questions (e.g. Max RAM info, etc.) and some other example techniques were presented at HHC in a short presentation I did to introduce FRAM71B; you can download a copy of the presentation from: http://hhuc.us/2016/files/Speakers/Bob_Prosperi/Presentation/HHC16_FRAM71B.pdf. Take a look, it may help your studies.

It's great to see you are willing to take the time to record your attempts and results here in the forum; like Sylvain and Dave's recent posts, these detailed notes help to educate other FRAM users (plus I've found that documenting like this also helps to teach yourself as well).

Keep trying new things like ROM swapping, etc. Getting scars from these experiments are the best way to learn, and eventually... it's a lot of fun.


RE: FRAM71B - Erwin - 10-07-2016 03:04 PM

(10-07-2016 01:22 PM)rprosperi Wrote:  Erwin,

As a new FRAM71 user, your skills are advancing quite rapidly; it is impressive to see. Some of your questions (e.g. Max RAM info, etc.) and some other example techniques were presented at HHC in a short presentation I did to introduce FRAM71B; you can download a copy of the presentation from: http://hhuc.us/2016/files/Speakers/Bob_Prosperi/Presentation/HHC16_FRAM71B.pdf. Take a look, it may help your studies.

It's great to see you are willing to take the time to record your attempts and results here in the forum; like Sylvain and Dave's recent posts, these detailed notes help to educate other FRAM users (plus I've found that documenting like this also helps to teach yourself as well).

Keep trying new things like ROM swapping, etc. Getting scars from these experiments are the best way to learn, and eventually... it's a lot of fun.

Thank you, got great support from all yours and makes the HP71 a lot more useable (I'm on the way). I looked at the presentation in Denver - a bit more of clearance and the example I want to do :-).
I think there should be / we should do a whole documentation on the FRAM71 with more configuration examples, tables of the ROM mapping, explanation of the syntax like you did in the presentation and Sylvain in his guide, switching different rom sizes (i.e Text, Finance...16 KB, most ROM 32KB, DataAQ...64KB) in guest RAM space ...
I thought about that automatic switching would be the next step for every day use - think as a first step it could be done by a personal small basic prog in IRAM

regards Erwin


RE: FRAM71B - Sylvain Cote - 10-07-2016 03:10 PM

(10-07-2016 07:10 AM)Erwin Wrote:  An open question is, how do I POKE the possible max RAM afterwards, cause of the different ROM sizes with every bank-switch I have to change it?
Or should I take the minimum RAM when the maximal ROM (per size) are loaded?
How to identify the maximum possible free RAM after bank-switching and does it destroy the mainRAM?

Hello Erwin,

All your questions goes back to memory map and planning.

First thing, you have to understand how memory is allocated and for that, I suggest that you read this great article
Soft Configuration Enhances Flexibility of Handheld Computer Memory by Nathan Meyers

About planning and FRAM71 configuration ...

You could put all you fixed ROM/IRAM modules at the beginning, then the System-RAM and finally two 16/32KB or one 64KB bank switched modules, like this ...
Code:
C#-F#-B# Size Port Type     Description
-------- ---- ---- -------- ---------------------
C0-F3-B0 32KB n/a  HC E0000 41 Translator 
C1-F4-B0 16KB 5.00 SC ROM   41 Translator 
C2-F5-B0 32KB 5.01 SC ROM   Math
C3-F6-B0 32KB 5.02 SC ROM   JPC
C4-F7-B0 32KB 5.03 SC IRAM  Backup
C5-F8-B0 32KB 5.04 SC RAM   Sys RAM 160KB 1 of 5
C6-F9-B0 32KB 5.04 SC RAM   Sys RAM 160KB 2 of 5
C7-FA-B0 32KB 5.04 SC RAM   Sys RAM 160KB 3 of 5
C8-FB-B0 32KB 5.04 SC RAM   Sys RAM 160KB 4 of 5
C9-FC-B0 32KB 5.04 SC RAM   Sys RAM 160KB 5 of 5
CA-F?-B? ??KB 5.05 SC ROM   Bank Switched ROM1
CB-F?-B? ??KB 5.06 SC ROM   Bank Switched ROM2

C# -> Chip #
F# -> FRAM Block # (available: D, E, F, 0, 1 on a 512KB FRAM module)
B# -> Virtual Bank # (0, 1, 2, ...)

Sylvain


RE: FRAM71B - Dave Frederickson - 10-07-2016 05:54 PM

It's so nice to see a new enthusiastic F71/B user! Some comments:

Yes, learn how the 71B memory configuration works from the link Sylvain provided and the 71 S/W IDS, Vol. 1, Chapt. 2.

Start using MEMBUF in the F71 Toolkit to examine memory, especially for those max. memory configurations.

I agree with Bob and Sylvain, you've come a long way in a short time. I think you've enough skill to understand the "advanced" bank switching example. Please give it an attempt and provide feedback.

For a whole F71 document I think that's not a bad idea. For now I use a soft copy of the entire [FRAM71] Pre-Production Batch thread. Smile

Maximum Memory Configurations

I explored this a while ago: http://www.hpmuseum.org/forum/thread-4551.html

Two points:
1. The 71B assigns memory chips to 71B memory H-Addresses by size. This explains Note 2 on p.12 of the F71B manual.
Chip-addresses as "seen" by your HP-71B will vary according to the calculator’s
memory configuration routine. For example, if you configure RAM with Chip_0 =
16 KByte and Chip_1 = 32 KByte, they may have their FRAM base addresses at
F_0x30000 and F_x40000, respectively. However, your HP-71B will configure Chip_0
at H_0x40000 and Chip_1 at H_0x30000.


2. The 71B partitions RAM chips first then the ROM's and IRAM's. This can explain a lot of strange behavior.

Here are some questions to ponder:
1. In EduCALC Tech Note #4 it states:
The HP-IL module actually needs 16K, but 32K should be allocated because the HP-71 often configures the system as 32K for HP-IL.

What??? Not exactly true. What is observed is that sometimes when the HP-IL module is installed there's 32K less memory available. Why?

2. On p.16 of the F71B manual there are a couple of examples of maximum memory configurations:
MAX RAM, FORTH
"93 E4 95 96 97 98 99 9A 9B 9C 9D AE …" (93 is HC, E4 is SC ROM for FORTH) = 320 KB RAM
MAX RAM, IL & FORTH
"93 E4 95 96 97 98 99 9A 9B 9C 9D AE …" (93 is HC, E4 is SC ROM for FORTH) = 320 KB RAM


The second configuration yields the same amount of RAM but includes the HP-IL module. Why is this?

3. Sometimes when FREEPORT is executed a configuration warning (Wrn: Configuration) occurs.
http://www.hpmuseum.org/forum/thread-2515-post-27688.html#pid27688
This doesn't change the amount of memory configured. Why the warning?

4. In this post it is pointed out that the maximum amount of memory was achieved by configuring 16K chip as an IRAM: http://www.hpmuseum.org/forum/thread-4551-post-40891.html#pid40891
This will fail if the chip is configured as RAM. Why? This is related to 3.


Any questions? Smile

Dave


RE: FRAM71B - Dave Frederickson - 10-07-2016 11:21 PM

(10-06-2016 04:53 AM)Sylvain Cote Wrote:  Assuming you have followed my guide, you should have the following configuration

PEEK$("2C000",32) -> "D3E4D5D69798191A1B1C9D0000000000"

I would suggest to modify it for the following

POKE("2C000","D3E4D5D69798991A1B1C9D0000000000") / power cycle

It appears that you've split main RAM into two modules by reconfiguring the F-Blocks. This is kind of like unplugging a module and plugging in different modules, but you didn't follow the rules for unplugging RAM modules, Para. 4.2.

Unconfiguring or “removing” a FRAM RAM module

1. When a RAM module is to be removed it is first converted to IRAM using the FREE PORT command. Some front-port modules, like the CMT 64K module, contained a battery that would maintain the IRAM contents. When it was later reinserted it would appear in the 71’s memory configuration as IRAM, complete with its contents. This happened to Forum member Mike in 2003 when CMT 64K module batteries still had a charge:
http://www.hpmuseum.org/cgi-sys/cgiwrap/hpmuseum/archv014.cgi?read=49425
Modules without a battery will lose their contents and reappear as main RAM. FRAM71/B can behave as either.
a. Battery-Backed: To unconfigure or “remove” a FRAM RAM module, first convert the module to IRAM using the FREEPORT command, then unconfigure the module by POKEing zeros into the appropriate location in the configuration string.
b. Non Battery-Backed: First, convert the module to IRAM. Determine the module’s address using MEMBUF. POKE <address>,”00000000”, which overwrites the module’s IRAM identifier, and unconfigure the module in the config string. The next time the module is configured it will be detected as unused memory and configured as RAM.

Dave


RE: FRAM71B - Sylvain Cote - 10-08-2016 01:20 AM

(10-07-2016 11:21 PM)Dave Frederickson Wrote:  It appears that you've split main RAM into two modules by reconfiguring the F-Blocks.
This is kind of like unplugging a module and plugging in different modules, but you didn't follow the rules for unplugging RAM modules, Para. 4.2.

I knew about the rule, I was careless and I should have mentioned it, sorry about that.
Thanks for the refresher! Smile
Sylvain


RE: FRAM71B - Erwin - 10-08-2016 06:59 AM

(10-07-2016 11:21 PM)Dave Frederickson Wrote:  
(10-06-2016 04:53 AM)Sylvain Cote Wrote:  Assuming you have followed my guide, you should have the following configuration

PEEK$("2C000",32) -> "D3E4D5D69798191A1B1C9D0000000000"

I would suggest to modify it for the following

POKE("2C000","D3E4D5D69798991A1B1C9D0000000000") / power cycle

It appears that you've split main RAM into two modules by reconfiguring the F-Blocks. This is kind of like unplugging a module and plugging in different modules, but you didn't follow the rules for unplugging RAM modules, Para. 4.2.

Unconfiguring or “removing” a FRAM RAM module

1. When a RAM module is to be removed it is first converted to IRAM using the FREE PORT command. Some front-port modules, like the CMT 64K module, contained a battery that would maintain the IRAM contents. When it was later reinserted it would appear in the 71’s memory configuration as IRAM, complete with its contents. This happened to Forum member Mike in 2003 when CMT 64K module batteries still had a charge:
http://www.hpmuseum.org/cgi-sys/cgiwrap/hpmuseum/archv014.cgi?read=49425
Modules without a battery will lose their contents and reappear as main RAM. FRAM71/B can behave as either.
a. Battery-Backed: To unconfigure or “remove” a FRAM RAM module, first convert the module to IRAM using the FREEPORT command, then unconfigure the module by POKEing zeros into the appropriate location in the configuration string.
b. Non Battery-Backed: First, convert the module to IRAM. Determine the module’s address using MEMBUF. POKE <address>,”00000000”, which overwrites the module’s IRAM identifier, and unconfigure the module in the config string. The next time the module is configured it will be detected as unused memory and configured as RAM.

Dave

Good morning,

I hope I understand Dave's post right. Different ROM-sizes need CLAIMPORT and FREEPORT than the new POKE and therefore should be at the end of the 'whole thing'. With the FRAM71-docu, the 'Denver' presentation and the many comments I came to the following model to avoid make the SYSRAM corrupt.
Plan: JPCROM, MATHROM, 41FORTH, CURVEFIT, AMPITSTAT, DATA-ACQ, TEXT-EDITOR (or CIRCUIT) and FINANCE in the SYSTEM with the maximum amount of SYSRAM.
To configure the guest ROM (for the 64KB module too) without touching the SYSRAM. That means 144KB of SYSRAM every time (only 'loosing' possible 32KB RAM when switched to FINANCE and TEXT-EDITOR).

Am I right with this, I'm not sure about the FRAM banks, somebody a hint? Then maybe I'll start this on this weekend.

BASIC-CONFIGURATION POKE "C2000","3E4D5D69718191A1BACDDDE" (final statement after extend Sylvains intermediate guide)
Code:

Chip_#  Addr.  Configuration  Description      of        LCIM  Type   Size  Port
------  -----  -------------  -------------------------- ----  -----  ----  ----
Chip_0  2C000  CONF     D                                                       
Chip_0  2C001  F-BLOCK  3     HC E0000 T41 ROM             1    ROM    32   n/a
------  -----  -------------  -------------------------- ----  -----  ----  ----
Chip_1  2C002  CONF     E                                                       
Chip_1  2C003  F-BLOCK  4     16KB SC T41 ROM              1    ROM    16   5.00
------  -----  -------------  -------------------------- ----  -----  ----  ----
Chip_2  2C004  CONF     D                                                       
Chip_2  2C005  F-BLOCK  5     32KB Math ROM                1    ROM    32   5.01
------  -----  -------------  -------------------------- ----  -----  ----  ----
Chip_3  2C006  CONF     D                                                       
Chip_3  2C007  F-BLOCK  6     32KB JPC ROM                 1    ROM    32   5.02
------  -----  -------------  -------------------------- ----  -----  ----  ----
Chip_4  2C008  CONF     9                                                       
Chip_4  2C009  F-BLOCK  7     32KB Backup IRAM             1    RAM    32   5.03
------  -----  -------------  -------------------------- ----  -----  ----  ----
Chip_5  2C00A  CONF     1                                                       
Chip_5  2C00B  F-BLOCK  8     System RAM 144KB 1 of 5      0    RAM    32   5.05
------  -----  -------------  -------------------------- ----  -----  ----  ----
Chip_6  2C00C  CONF     1
Chip_6  2C00D  F-BLOCK  9     System RAM 144KB 2 of 5      0    RAM    32   5.05
------  -----  -------------  -------------------------- ----  -----  ----  ----
Chip_7  2C00E  CONF     1
Chip_7  2C00F  F-BLOCK  A     System RAM 144KB 3 of 5      0    RAM    32   5.05
------  -----  -------------  -------------------------- ----  -----  ----  ----
Chip_8  2C010  CONF     1
Chip_8  2C011  F-BLOCK  B     System RAM 144KB 4 of 5      0    RAM    32   5.05
------  -----  -------------  -------------------------- ----  -----  ----  ----
Chip_9  2C012  CONF     A
Chip_9  2C013  F-BLOCK  C     System RAM 144KB 5 of 5      1    RAM    16   5.05
------  -----  -------------  -------------------------- ----  -----  ----  ----
Chip_A  2C014  CONF     D     CURVEFIT
Chip_A  2C015  F-BLOCK  D     32 KB Guest ROM              1    ROM    32   5.06
------  -----  -------------  -------------------------- ----  -----  ----  ----
Chip_A  2C016  CONF     D     AMPISTAT
Chip_A  2C017  F-BLOCK  E     32 KB Guest ROM              1    ROM    32   5.07
------  -----  -------------  -------------------------- ----  -----  ----  ----

EXTENDED 1-CONFIGURATION for the DATA-ACQ 64KB module must switched to following example, 'loosing' one port? But this should'n affect the system.
For the first time installation it is necessary to CLAIMPORT 5.06 and 5.07 (free the installation for CURVFIT and AMPISTAT) FREEPORT 5.06 and ROMCOPY (with the checksum option like the doc says but this part is not clear for me, the added comments from Joe Horn says CHECKSUM is automatic)?

POKE "C2000","3E4D5D69718191A1BAC50D0" ??? that's not clear for me

Code:
view without FRAM banks
Chip_#  Addr.  Configuration  Description      of        LCIM  Type   Size  Port
------  -----  -------------  -------------------------- ----  -----  ----  ----
Chip_A  2C014  CONF     5     DATA-ACQ
Chip_A  2C015  F-BLOCK  D     32 KB Guest ROM              0    ROM    32   5.06
------  -----  -------------  -------------------------- ----  -----  ----  ----
Chip_A  2C016  CONF     D     DATA-ACQ
Chip_A  2C017  F-BLOCK  E     32 KB Guest ROM              1    ROM    32   5.06
------  -----  -------------  -------------------------- ----  -----  ----  ----

Switching back in the same manner: CLAIMPORT 5.06 and FREEPORT 5.06 and 5.07 then the bank-switching again.

EXTENDED 2-CONFIGURATION same for the TEXT-EDITOR (or CIRCUIT) and FINANCE module

POKE "C2000","3E4D5D69718191A1BACD1E1" ??? that's not clear for me
Code:
view without FRAM banks
Chip_#  Addr.  Configuration  Description      of        LCIM  Type   Size  Port
------  -----  -------------  -------------------------- ----  -----  ----  ----
Chip_A  2C014  CONF     E     FINANCE
Chip_A  2C015  F-BLOCK  D     16 KB Guest ROM              1    ROM    16   5.06
------  -----  -------------  -------------------------- ----  -----  ----  ----
Chip_A  2C016  CONF     E     TEXT-EDITOR (CIRCUIT)
Chip_A  2C017  F-BLOCK  E     16 KB Guest ROM              1    ROM    16   5.07
------  -----  -------------  -------------------------- ----  -----  ----  ----

EDIT: the other way would be to put away 32KB from SYSRAM so there is 112KB free SYSRAM in the FRAM71 and put the TEXT-EDITOR (or CIRCUIT) and the FINANCE module in there. The sum of free memory with the 16KB base RAM would be 128KB, additional the 32KB in BACKUP IRAM. Seems to be enough to and offers the possibility to do bank switching with 3*32KB modules.

DOCU: a proposal
Theory ... mainly distributed in different threads: Docs like: Tools Some practical examples one basic to learn and one intermediate: 2 or 3 more advanced examples with FRAM bank switching, with and without TOP RAM

Program for bank-switching?

regards Erwin


RE: FRAM71B - Dave Frederickson - 10-08-2016 03:35 PM

Hi Erwin,

I only pointed out a procedural error and offered two techniques for emulating the removal of memory modules. If you follow the rules, as best as we understand them, you should be able to avoid MEMORY LOST.

Just so we don't get confused later, SYSRAM is the 64K of FRAM from 0x00000-0x1FFFF that can be loaded with an alternate O/S or the Diag ROM, replacing SYSROM. The memory you're trying to maximize should be referred to as MAIN RAM.

Speaking of maximizing memory, how are you coming with the questions I suggested you ponder? Smile

To make it easier for you to figure out your memory configuration you might try drawing memory maps or add an "H-Address" column to your configuration table. I notice that none of your logs show H-Addresses. Use MEMBUF to understand where in memory your modules are getting mapped.

Regards, Dave


RE: FRAM71B - Sylvain Cote - 10-08-2016 06:21 PM

(10-08-2016 06:59 AM)Erwin Wrote:  For the DATA-ACQ 64KB module must switched to following example, 'loosing' one port?

Yes, in my last setup proposal, I have reserved at the end a 64KB address space for bank switched modules.
In that space you can either map: (4 x 16KB ROM) or (2 x 32KB ROM) or (1 x 64KB ROM) or (2 x 16KB ROM + 1 x 32KB ROM)

(10-08-2016 06:59 AM)Erwin Wrote:  POKE "C2000","3E4D5D69718191A1BAC50D0" ??? that's not clear for me

First "C2000" should be "2C000"

Second, the configuration you are proposing is not good, the one you should propose is ...

POKE "2C000","D3E4D5D69718191A9B00000000000000" [ENDLINE] // common configuration
Code:
Cg  Chip_#  Addr.     FBlk  Bank  LCIM   Type  Size  Port  Description
--  ------  --------  ----  ----  -----  ----  ----  ----  -------------------------------
D3  Chip_0  2C000/01  3     0     1:yes  ROM   32KB  n/a   Translator-41 HC E0000
E4  Chip_1  2C002/03  4     0     1:yes  ROM   32KB  5.00  Translator-41
D5  Chip_2  2C004/05  5     0     1:yes  ROM   32KB  5.01  Math
D6  Chip_3  2C006/07  6     0     1:yes  ROM   32KB  5.02  JPC
97  Chip_4  2C008/09  7     0     1:yes  IRAM  32KB  5.03  Backup
18  Chip_5  2C00A/0B  8     0     0:no   RAM   32KB  5.04  Main-RAM 128KB Part-1
19  Chip_6  2C00C/0D  9     0     0:no   RAM   32KB  5.04  Main-RAM 128KB Part-2
1A  Chip_7  2C00E/0F  A     0     0:no   RAM   32KB  5.04  Main-RAM 128KB Part-3
9B  Chip_8  2C010/11  B     0     1:yes  RAM   32KB  5.04  Main-RAM 128KB Part-4
Note: I had to reduce the Main-RAM to 128KB because we can only use 15 FRAM Blocks on a FRAM71/B-512 and they are all used here.

Bank 0 : Curve-Fit and AMPI-Stat configuration
Enter (a) complete configuration or (b) configuration change only
a) POKE "2C000","D3E4D5D69718191A9BDCDD0000000000" [ENDLINE]
b) POKE "2C012","DCDD" [ENDLINE]
Code:
Cg  Chip_#  Addr.     FBlk  Bank  LCIM   Type  Size  Port  Description
--  ------  --------  ----  ----  -----  ----  ----  ----  -------------------------------
DC  Chip_9  2C012/13  C     0     1:yes  ROM   32KB  5.05  Curve-Fit 32KB ROM
DD  Chip_A  2C014/15  D     0     1:yes  ROM   32KB  5.06  AMPI-Stat 32KB ROM

Bank 1 : (Text-Editor or Circuit) and Finance configuration
Enter (a) complete configuration or (b) configuration change only
a) POKE "2C000","D3E4D5D69718191A9BEEEF0000000000" [ENDLINE]
b) POKE "2C012","EEEF" [ENDLINE]
Code:
Cg  Chip_#  Addr.     FBlk  Bank  LCIM   Type  Size  Port  Description
--  ------  --------  ----  ----  -----  ----  ----  ----  -------------------------------
EE  Chip_9  2C012/13  E     1     1:yes  ROM   16KB  5.05  Text-Editor or Circuit 16KB ROM
EF  Chip_A  2C014/15  F     1     1:yes  ROM   16KB  5.06  Finance 16KB ROM

Bank 2 : Data-Acq configuration
Enter (a) complete configuration or (b) configuration change only
a) POKE "2C000","D3E4D5D69718191A9B50D10000000000" [ENDLINE]
b) POKE "2C012","50D1" [ENDLINE]
Code:
Cg  Chip_#  Addr.     FBlk  Bank  LCIM   Type  Size  Port  Description
--  ------  --------  ----  ----  -----  ----  ----  ----  -------------------------------
50  Chip_9  2C012/13  0     2     0:no   ROM   32KB  5.05  Data-Acq 64KB ROM Part-1
D1  Chip_A  2C014/15  1     2     1:yes  ROM   32KB  5.05  Data-Acq 64KB ROM Part-2

Please take the time to read carefully the
FRAM71B User's Manual Page 14 section LCIM (Last Chip In Module)
and
Nathan article section "Electrical Behavior of Devices" on chips and modules

Sylvain

edit: typo


RE: FRAM71B - Erwin - 10-08-2016 08:21 PM

(10-08-2016 06:21 PM)Sylvain Cote Wrote:  [...]
Yes, in my last setup proposal, I have reserved at the end a 64KB address space for bank switched modules.
In that space you can either map: (4 x 16KB ROM) or (2 x 32KB ROM) or (1 x 64KB ROM) or (2 x 16KB ROM + 1 x 32KB ROM)

(10-08-2016 06:59 AM)Erwin Wrote:  POKE "C2000","3E4D5D69718191A1BAC50D0" ??? that's not clear for me

First "C2000" should be "2C000"

Second, the configuration you are proposing is not good, the one you should propose is ...
Please take the time to read carefully the
FRAM71B User's Manual Page 14 section LCIM (Last Chip In Module)
and
Nathan article section "Electrical Behavior of Devices" on chips and modules

Sylvain

edit: typo

Hi Sylvain,

thank you, Dave and Rob for your patience and help not only with my typos in the POKE. Yes I tried to make a plan like your last proposal but forgot the address limit so there is 128KB instead of 144KB.

I'll try to study the basics in the next days and try to configure my calculator in this manner. Looks like that it takes more time to get in the mapping theme. Yours hints and examples will help me too. I will give feedback to the forum about the result.

best regards
Erwin


RE: FRAM71B - Erwin - 10-23-2016 09:07 AM

(10-08-2016 06:21 PM)Sylvain Cote Wrote:  [...]
Please take the time to read carefully the
FRAM71B User's Manual Page 14 section LCIM (Last Chip In Module)
and
Nathan article section "Electrical Behavior of Devices" on chips and modules

Sylvain

edit: typo

Hi,

thanks for all your help I continue with my progress in configuration. Next week i can spend more time to play with different configurations. I'll make it with a detailed documentation for myself and maybe useful for others. But I think its too long for posting it direct in the forum - think it spans more than a page. I would like to share my experiences with the forum. What kind of documentation should i do? For now I wrote the first part of my configuration testing in my text editor, not easy to read - i.e the code snippets, ...

I can change it to WORD, PAGES or LATEX and convert to PDF? Should be expandable for others.
What do you think about - any hints :-) ?

best regards
Erwin


RE: FRAM71B - rprosperi - 10-23-2016 01:25 PM

(10-23-2016 09:07 AM)Erwin Wrote:  I can change it to WORD, PAGES or LATEX and convert to PDF? Should be expandable for others.
What do you think about - any hints :-) ?

I think PDF is the most convenient and universal format; everyone can read it, and code can be easily copy/pasted to an editor if needed.


RE: FRAM71B - Erwin - 11-01-2016 09:26 AM

(10-23-2016 01:25 PM)rprosperi Wrote:  
(10-23-2016 09:07 AM)Erwin Wrote:  I can change it to WORD, PAGES or LATEX and convert to PDF? Should be expandable for others.
What do you think about - any hints :-) ?

I think PDF is the most convenient and universal format; everyone can read it, and code can be easily copy/pasted to an editor if needed.

Hi,

I tried out some configurations on the FRAM71 and they are running, but I stuck on one problem I wasn't able to solve.
I want to put the DATACQ ROM (64KB) on the HP71. The documentation to ROMCOPY said, that ROMs above 32KB should have CHECKSUM, CODESIZE and ROMSIZE as parameter too. But I couldn't find those parameters for this ROM.
With ROMCOPY I got an error <ERR:Verify fail> whether I include the ROMSIZE oder not. So it seems there have be the 4 values for the CHECKSUM, but in the documentation to ROMCOPY (http://hhuc.us/2014/files/Speakers/08,09%20Joseph%20Horn/Online%20LIF%20Disk%20Project/SWAP/SWAP11/RCOPYDOC.txt) it isn't clear for me how to do this.

To bypass the error message (like the documentation said) I want to try the RCOPYLEX but there is no documentation available neither for CKSUMLEX, so I can't made use out of them.

I found the basic program R64KCOPY (chu06) but it is to get the checksum from existing ROMs in a port and needs a LEX-File "TRIM$" from STRINGLX. But in the basic program there is another LEX-file not present (XFN113004) - line 100 till 103 for the checksum - so it ends in an error. Looks like it was saved in the past without the necessary LEX present in the HP71. When the prog could be run I could get the data out of my DATCQ module.

Code:

0010 ! THIS PROGRAM COMPUTES CHECKSUMS FOR ROMCOPY FOR 64K IRAM
0020 INPUT "Port?","5";P
0021 P$=":PORT("&STR$(P)&")"
0030 DIM A$[96]
0031 I=1
0040 A$=CAT$(I,P$) @ IF A$="" THEN 100
0050 F$=TRIM$(A$[1,8]) @ B$=ADDR$(F$&P$) @ PRINT A$[1,8];" ";B$;
0051 O1=HTD(B$) @ IF I=1 THEN O=O1-8 @ PRINT ELSE PRINT USING "X,5D.D";(O1-O)/2
0052 IF O1-O>32768 AND O2=0 THEN O2=O1-O
0053 IF O1-O>32768*2 AND O3=0 THEN O3=O1-O
0060 I=I+1 @ GOTO 40
0100 PRINT USING '"csum 1: ",6d,x,8a';30;XFN113004(PEEK$(DTH$(O+8),18))
0101 PRINT USING '"csum 2: ",6d,x,8a';O2+22;XFN113004(PEEK$(DTH$(O+O2),18))
0102 PRINT USING '"csum 3: ",6d,x,8a';O3+22;XFN113004(PEEK$(DTH$(O+O3),18))
0103 PRINT USING '"csum 4: ",6d,x,8a';O1-O+22;XFN113004(PEEK$(DTH$(O1),18))
0200 POKE DTH$(O+30),"00"
0201 POKE DTH$(O+O2+22),"00"
0202 POKE DTH$(O+O3+22),"00"
0203 POKE DTH$(O1+22),"00"


Anybody experiences with loading 64KB ROMs in the HP71B or an idea?

regards Erwin


RE: FRAM71B - J-F Garnier - 11-01-2016 10:13 AM

(11-01-2016 09:26 AM)Erwin Wrote:  I want to put the DATACQ ROM (64KB) on the HP71.
...
With ROMCOPY I got an error <ERR:Verify fail> whether I include the ROMSIZE oder not.
...
Anybody experiences with loading 64KB ROMs in the HP71B or an idea?

Using the ROMSIZE parameter is the correct way:
ROMCOPY imagefile:TAPE TO :PORT(x);ROMSIZE=65536
The CODESIZE and CHECKSUM parameters are not needed.
PORT(x) must be a 64k port, of course.

Which DATAACQ ROMCOPY image file are you using? I just checked with the image from Sylvain's Compendium and it works.

J-F


RE: FRAM71B - Erwin - 11-01-2016 10:48 AM

(11-01-2016 10:13 AM)J-F Garnier Wrote:  
(11-01-2016 09:26 AM)Erwin Wrote:  I want to put the DATACQ ROM (64KB) on the HP71.
...
With ROMCOPY I got an error <ERR:Verify fail> whether I include the ROMSIZE oder not.
...
Anybody experiences with loading 64KB ROMs in the HP71B or an idea?

Using the ROMSIZE parameter is the correct way:
ROMCOPY imagefile:TAPE TO :PORT(x);ROMSIZE=65536
The CODESIZE and CHECKSUM parameters are not needed.
PORT(x) must be a 64k port, of course.

Which DATAACQ ROMCOPY image file are you using? I just checked with the image from Sylvain's Compendium and it works.

J-F

Hi, thanks for your fast response :-) I don't know the source of the image I used. But tried it with the same from your source and got the same error.

When I initialize the PORT 5.05 with 64KB (POKE "2C012"; "109100") ... my last module it is not configured as IRAM when i do the FREE PORT without an error. The SHOWPORT shows type "0" instead of "1", and I couldn't ROMCOPY (error: Device Not Found) So I configured it as ROM (POKE "2C012"; "50D100") and tried the ROMCOPY but with the "verify" error.

My whole configuration string is: D3E4D5D69718191A9B109100 for the RAM and D3E4D5D69718191A9B50D100 for the ROM.

Code:
[code] [SHOWPORT]          [RUN MEMBUF]
                        Port Dev Seq  Size Addr  Type
0.05  16384  2            0   0   0     4  90000  0
5     16384  2 FTH41      0   1   0     4  92000  0
5.01  32768  2 MATHROM    0   2   0     4  94000  0
5.02  32768  2 JPCF04     0   3   0     4  96000  0
5.03  32768  1 IRAM       5   4   0   128  30000  0 Main RAM
0      4096  0            5   5   0    64  70000  0 not alloc
0.01   4096  0            0   5   0    16  A0000  2 
0.02   4096  0            5   0   0    16  A8000  2 FTH41
0.03   4096  0            5   1   0    32  D0000  2 MATHROM   
5.04 131072  0 Main RAM   5   2   0    32  C0000  2 JPCF04
5.05  65536  0 n. alloc   5   3   0    32  B0000  1 IRAM

Maybe I did something wrong. The adressspace seems to be OK for the 64K 70000 till 8FFFF

best regards
Erwin