Hello Mike,
Sorry it took so long coming back, I had to test something I had seen 4 years ago on the NoV module before going back to your configuration.
Before going through your configurations, we must review the baseline.
The NUT CPU can address 64K of 10-bit words made of ROM/EPROM/Flash/RAM/etc memory.
That address space is divided into 16 pages of 4K.
The first 8 pages are reserved for the system and the last 8 pages are given to the external modules.
Pages mapping table (41CV include 41C)
Code:
Page 41CV 41CX Note
---- ------ ------ -----------------------------
Code:
0: 0 CVOS CXOS Reserved for Operating System
1: 1 CVOS CXOS Reserved for Operating System
2: 2 CVOS CXOS Reserved for Operating System
3: 3 CXXF CX built-in X-Functions ROM
4: 4 Reserved for Takeover ROM (Diagnostic ROM, 82160A IL printer [disabled], Library 4, etc)
5: 5 TIME TIME Reserved for Time ROM (CX built-in & C/CV Time module)
6: 6 PRNT PRNT Reserved for Printer ROM (82143A Printer, 82160A IL Module [enabled], 82242A IR Module, etc)
7: 7 HPIL HPIL Reserved for HP-IL ROM (82160A IL module)
Code:
8: 8 Port #1 - lower page
9: 9 Port #1 - upper page
A:10 Port #2 - lower page
B:11 Port #2 - upper page
C:12 Port #3 - lower page
D:13 Port #3 - upper page
E:14 Port #4 - lower page (82104A magnetic card reader)
F:15 Port #4 - upper page
The concept of page switching in the HP-41 world was introduced with the 41CX.
HP used two intructions that was not defined in the CPU (NOP) and added the decoding logic to the CX time ROM chip to switch between page 5 bank 1 and bank 5 bank 2.
Unfortunately these instructions and behavior were not standardized so 3rd party hardware provider implemented their own instructions and logic to handle the number of pages and the switching behavior.
Anyway, just to summarize things, it you insert a CMT-10-16KB module in port 1 and ZEPROM module in port 3, each module is reponsible to handle how many pages there are and how to switch between them, while the NUT CPU has no understanding that page bank and page switching even exist.
My (unfinished) article, try to list these behaviors ->
HP-41C Bank Switching Schemes
NoV-64(d) provide the following:
- 64K 10-bit FRAM divided into 4 x 16K slot that can be used as HEPAX RAM or as QROM (Quasi-ROM, used to hold ROM images)
- 48K 10-bit Flash divided into 12 x 4K slot that can hold ROM images
- each 4K Flash slot has a individual page and bank configuration mapping
- support for HEPAX ROM bank switching instructions (4x NUT CPU NOP instructions but understood by HEPAX and NoV modules)
- support for HEPAX ROM relocalisation instruction (1x NUT CPU NOP instruction but understood by HEPAX and NoV modules)
- special NoV QROM configuration word at address 4100 (control NoV-64 module QROM mapping, Flash mapping and some other functionalities)
NoV-64(d) 64K FRAM allocation:
- 4x 16K slot mapped as follow:
- 4x 16K mapped from page 8 to page 12 as HEPAX RAM and/or QROM
- 2x 32K mapped from page 8 to page 15 as HEPAX RAM and/or QROM
- slot selection is done through the special QROM configuration word at address 4100
NoV-64(d) 48K Flash allocation when HEPAX 1D is selected:
- 4x 4K slot are reserved for HEPAX ROM images
- 8x 4K slot are free to hold other ROM images, configured as:
- 1x block of 8x 4K slot
or
- 2x blocks of
- 4x 4K slot for block 1
- 4x 4K slot for block 2
- block deactivation, activation and/or selection is done through the special QROM configuration word at address 4100
NoV-64(d) 48K Flash allocation when HEPAX 4H is selected:
- 4x 4K slot are reserved for HEPAX ROM images
- 1x 4K slot is reserved for Library 4 ROM image
- 7x 4K slot are free to hold other ROM images, configured as:
- 1x block of 7x 4K slot
or
- 2x blocks of
- 3x 4K slot for block 1
- 4x 4K slot for block 2
- block deactivation, activation and/or selection is done through the special QROM configuration word at address 4100
Next post will cover your first configuration.
Sylvain
edit: link to "HP-41C Bank Switching Schemes" article updated, thank you Thomas.