The traces on the PCB are beautiful.Do you do the tracing manually?
Just curious if you tried rearranging the address lines to the ‘259, does it simplify the routing or just screw it up on the outputs? Sometimes it simplifies the routing with decoders or multiplexers, sometimes it messes it up more on the outputs.
I've been thinking about a method to use the additional 64kB of shadow RAM which will be available in Wesley and my new Modules, and also for those that have one of Steve's SC114 boards. Those solution that have a shadow RAM toggle at 0x30 (though it could be any register as needed).
I would have liked to make 64kB copies an option, but the overhead is too much in my opinion. It is better to divide up a copy into 256 Byte chunks in C, and do it that way. That preserves performance for small structure copies, and for floating point or other smaller copies.
I've been thinking about a method to use the additional 64kB of shadow RAM which will be available in Wesley and my new Modules, and also for those that have one of Steve's SC114 boards. Those solution that have a shadow RAM toggle at 0x30 (though it could be any register as needed).As we have no RAM in a common area, the only way that I can think that this would work would be to have a code fragment stored by the bootloader in both of the RAM 64kB pages.This would allow RAM to be copied back and forward across the whole address range, except the section where the code fragment exists of course.
I've been thinking about a method to use the additional 64kB of shadow RAM which will be available in Wesley and my new Modules, and also for those that have one of Steve's SC114 boards. Those solution that have a shadow RAM toggle at 0x30 (though it could be any register as needed).As we have no RAM in a common area, the only way that I can think that this would work would be to have a code fragment stored by the bootloader in both of the RAM 64kB pages.This would allow RAM to be copied back and forward across the whole address range, except the section where the code fragment exists of course.
Fuzix on these boards uses a small piece of code in the ROM to bootstrap copying common helper code into both banks, which then works pretty much as you describe. It's a shade more complicated because it self modifies for speed and has to self modify the right bits in the right bank. There is a method in SCM for bank to bank copy, but because of the way things work out I can't actually use it directly and Fuzix ends up scanning the ROM to find it and call it directly - which works out fine.
My CP/M port for the fixed Simple80 (the original board has a bug) also supports using the second bank as a RAMdisc for CP/M in a similar way.
What mechanism did you use to hold the bank status?
Did you publish your Simple80 code?
Phillip wrote:I've been thinking about a method to use the additional 64kB of shadow RAM which will be available in Wesley and my new Modules, and also for those that have one of Steve's SC114 boards. Those solution that have a shadow RAM toggle at 0x30 (though it could be any register as needed).As we have no RAM in a common area, the only way that I can think that this would work would be to have a code fragment stored by the bootloader in both of the RAM 64kB pages.This would allow RAM to be copied back and forward across the whole address range, except the section where the code fragment exists of course.
Fuzix on these boards uses a small piece of code in the ROM to bootstrap copying common helper code into both banks, which then works pretty much as you describe. It's a shade more complicated because it self modifies for speed and has to self modify the right bits in the right bank.
There is a method in SCM for bank to bank copy, but because of the way things work out I can't actually use it directly and Fuzix ends up scanning the ROM to find it and call it directly - which works out fine.
Also, interrupts need to be stored and disabled, which can be best done in the calling C functions. Assembly programmers can look after it for themselves.
I've been thinking about a method to use the additional 64kB of shadow RAM which will be available in Wesley and my new Modules, and also for those that have one of Steve's SC114 boards. Those solution that have a shadow RAM toggle at 0x30 (though it could be any register as needed).
I think there's an issue with us using the 0x30 (or 48 in decimal) port to toggle the 64kB RAM pages because your Paged ROM Module also does something else with that port.What did you design to happen when out (48),0 or out (48),1 are issued?I might need to add a configuration to ensure that the data section asm_shadowcopy load preparation from ROM is only done if so configured.Cheers, Phillip
Phillip wrote:
I think there's an issue with us using the 0x30 (or 48 in decimal) port to toggle the 64kB RAM pages because your Paged ROM Module also does something else with that port.What did you design to happen when out (48),0 or out (48),1 are issued?
Sending an OUT (48),0 would reset the '393, and bringing you back to the ROM page - either for speed (to save cycling though all the other pages) or to come back to a known page in case you lose track.
This is fairly academic, though, as I don't think anybody has used this (previously undiscussed) feature.
As mentioned, on other threads I just finished a very simple RAM/ROM Module.I guess the main feature is that it is really simple / cheap. Just 4 chips.There are no jumpers or selectors. Super simple.
You get 32kB ROM at 0x0000, which can be paged out at address 0x38.There are 2 banks of 64kB RAM, switchable at 0x30.Basically, the design is cribbed from the SC114, but without any frills.This functionality covers most of the standard ROMs, and this is the only use case I have.
Pictures attached. Once proven I'll update this thread.
Looking good! And I see you went for a 4-layer board, very nice.
I should list my extra boards on Tindie... I have quite a collection of them at this point. How hard is it to set up a store?
I've put my excess PCBs up on Tindie as the "Memory Module". I've five rectangular PCBs that need to be filed to shape. Use "REWORK" code to get them at $3.00.As always, postage from AU is a PITA, so let me know if you'd like to make your own and I'll send the Gerber files.
As mentioned, on other threads I just finished a very simple RAM/ROM Module.I guess the main feature is that it is really simple / cheap. Just 4 chips.There are no jumpers or selectors. Super simple.You get 32kB ROM at 0x0000, which can be paged out at address 0x38.There are 2 banks of 64kB RAM, switchable at 0x30.Basically, the design is cribbed from the SC114, but without any frills.This functionality covers most of the standard ROMs, and this is the only use case I have.
The only issue was that the PCB manufacturer misunderstood my dimension instructions, and sent me rectangular PCBs.
One small advantage over separate ROM and RAM boards when using the standard Backplane 8, is that you don't need a separate flying /PAGE wire.That's very convenient.
I've put my PCBs up on Tindie as the "Memory Module".
As always, postage from AU is a PITA, so let me know if you'd like to make your own PCBs and I'll send you Gerber files.
As mentioned, on other threads I just finished a very simple RAM/ROM Module.I guess the main feature is that it is really simple / cheap. Just 4 chips.There are no jumpers or selectors. Super simple.You get 32kB ROM at 0x0000, which can be paged out at address 0x38.There are 2 banks of 64kB RAM, switchable at 0x30.Basically, the design is cribbed from the SC114, but without any frills.This functionality covers most of the standard ROMs, and this is the only use case I have.The only issue was that the PCB manufacturer misunderstood my dimension instructions, and sent me rectangular PCBs.One small advantage over separate ROM and RAM boards when using the standard Backplane 8, is that you don't need a separate flying /PAGE wire.That's very convenient.
As mentioned, on other threads I just finished a very simple RAM/ROM Module.I guess the main feature is that it is really simple / cheap. Just 4 chips.There are no jumpers or selectors.
You get 32kB ROM at 0x0000, which can be paged out at address 0x38.There are 2 banks of 64kB RAM, switchable at 0x30.Basically, the design is cribbed from the SC114, but without any frills.This functionality covers most of the standard ROMs, and this is the only use case I have.