3 ms·
I knew about segmented memory. But base/bounds was too expensive and slow. The trick was to make it work without requiring an adder -- and subsequent carry pro
by kabdib 11y ago
I knew about segmented memory. But base/bounds was too expensive and slow.
The trick was to make it work without requiring an adder -- and subsequent carry propagation delay -- in the data path. Thus, "one gate delay" and simple replacement of address lines, and a simple "all zeros or all ones" check on the bounds, rather than a numeric comparison.
- jacquesm 11y agoThe reason I call it 'segmented memory' is that that is more or less exactly the same but this does not have the addition penalty. Super neat :) I ran into a related problem, I had a need to drive a whole pile of IO and only an 8 bit centronics port to work with (on the ST as well). So I ended up making a little demultiplexer using 4 bits of the 8 as address and the remaining 4 as data. The strobe was used to latch the data. Not super but it worked well enough to let the 68K drive stepper motors in real time near their maximum working frequency (30K steps / second or so). The ST was a fascinating machine, lots of ports, relatively cheap and with all kinds of limitations that continuously drove the users to creative hacks. I loved that time. Thanks a ton for all your work. Oh, one more for the road: we had a product that was copied quite frequently and obviously wanted to make that a bit harder. There was no budget for a dongle so in the end I looped one of the 8 bits of the port back to an input. If that wire wasn't present the software would exit with an 'out of memory' error :) Threw the copyists for a loop because all I did on not finding the wire was allocate all the remaining memory which would then cause a TOS Bomb on the next memory allocation, which could happen just about anywhere. Nasty little trick.