https://youtu.be/2IWSLU0uK8w (https://youtu.be/2IWSLU0uK8w)
Hi all, the 3" dsk image is attached here ;D
Cpm+ is included. Tu run the program :
|cpm
Readme
EDIT : It's better with the good attached file ;D
Pretty cool stuff for good old Turbo Pascal. :) :) :)
I did not measure it but I have the curious impression that moving a memory block between two 2 banks is faster than moving the same amount of data within the same bank ... I use the XMOVE command of CPM + for interbank transfert.
How does moving a memory block between two ram banks work in practice? What do the Z80 for this ?
If both banks can be present in address space simultaneously, you just page them in and do the copy directly.
More generally, you copy some data into a buffer, switch pages, copy it back, switch pages and repeat as necessary.
Move data from bank to bank (*) is a Bios command in CPM+, so it's very easy to use but it's a black box for me. I guess it use a buffer somewhere?
[And in fact my impression was wrong. With Turbo Pascal / CPM+:
Copy 16kB from bank 1 to bank 1 takes ~ 0.116 sec
Copy 16kB from bank 0 to bank 1 (or 1 to 0) takes ~ 0.245 sec, just the double of time, not bad I think...
In my Pascal program I use a lot of this because the screen is not in the same bank aera than the program.
(*) Bank in CPM is a different definition than in Amsdos. On the CPC6128 there is 3 banks of memory in the CPM point of view. Bank 0 and 1 share 16ko in common. I dont understand what is the use for Bank 3. I suspect its for buffers. With a personalised CPM I think it would be possible to use overlays in a very interesting way. I tried some things but I get only crashes ;D Create your own CPM§ package seems possible but very complex and not so much documented.