![]() |
HP-71B: fastest memory copy? - Printable Version +- HP Forums (https://archived.hpcalc.org/museumforum) +-- Forum: HP Museum Forums (https://archived.hpcalc.org/museumforum/forum-1.html) +--- Forum: Old HP Forum Archives (https://archived.hpcalc.org/museumforum/forum-2.html) +--- Thread: HP-71B: fastest memory copy? (/thread-210880.html) |
HP-71B: fastest memory copy? - Hans Brueggemann - 02-05-2012 gents,
Edited: 5 Feb 2012, 10:53 a.m. after one or more responses were posted
Re: HP-71B: fastest memory copy? - Garth Wilson - 02-05-2012 Use CMOVE in Forth?
Re: HP-71B: fastest memory copy? - Raymond Del Tondo - 02-05-2012 Hi,
you could use a small copy routine using Saturn machine language.
To call the routines from Basic, you may have to write a small BIN file,
However I'm sure someone already wrote s.t. like this back then, HTH
Ray Edited: 5 Feb 2012, 5:04 p.m.
Re: HP-71B: fastest memory copy? - Paul Berger (Canada) - 02-05-2012 I am pretty sure you will need to resort to assembler for this. It is possible that if the peek and poke commands make good use of the processor peeking and poking multiple, up to 16 nibbles at a time may be faster than a single peek and poke. However it can never be as efficient as something written in assembler. Peek would read the target memory into a variable you assigned and then poke would read the data from that variable and write it out to your target address, so your data is handled twice. With a solution written in assembler you could go directly from your source location to you target location.
Memory moving is one where the simplified bus structure of the Saturn processor bites you. The design has all memory devices keeping a local copy of both the program counter and data pointer, and before reading or writing, the CPU sends out a command to tell memory devices load a one of these registers and then 5 more bus cycles to clock out the 5 nibbles of the 20 bit address then the read or write command at which point on the strobe you may read or write data, however the architecture allows for up to 16 data strobes following sending out an address and bus command with each strobe the memory device are supposed to increment their local copy of the address in use (program counter or data pointer). So it would seem to me that the most efficient way to do this would be read 16 nibbles into a register and then write them out to the target. I am sure that it is not coincidence that the working registers in the Saturn are 16 nibbles in size, briefly looking at the instructions available there seems to be instructions to load and save a register in one shot. There are also two data pointer registers that could hold the source and target addresses which should be pretty efficient.
Re: HP-71B: fastest memory copy? - Craig Ruff - 02-06-2012 If you get your FRAM module into production, I would be certainly be interested in acquiring one!
Re: HP-71B: fastest memory copy? - Hans Brueggemann - 02-07-2012 craig, Edited: 7 Feb 2012, 5:19 a.m.
|