Ah, ok, so the sprites will also stay with a ratio of 1:1? Meaning, that a pixel pixel is like 2 screen pixels?
Hope that it will be ok for a mouse pointer in mode 6.
yes, it is correct
in screen 5 / 8 is 1:1 ratio
in screen 6 / 7 is 2:1 ratio
Hm, I couldn't stop. Logical Copy made it to about 2500 4x8 blocks (this is the average size of a char in SymbOS) in one second (I hope I didn't make a mistake). This is about 1,7 times faster than on the CPC! I hope the final routine won't be much slower, but as the Z80 and the VDP can work parallel I don't see a big problem here.
A fast copy of 8x8 consume about 702 z80 cycles, so you can do a lot of things while you are waiting vdp command ending. Unique problem for real pararell process is non end of command feature in v9938. I was thinking in this trouble long time ago, and unique solution allowing this can be using line interrupt to generate interrupts to measure time waste in the 8x8 copy. I know that is a nasty solution, but this workaround could save a lot of time and free z80 to realize other tasks.
Again a quick question:
Currently I am loading and executing the binary with a basic program (autoexec.bas). The binary would be limited to less than 32K I think.
Someone already wrote in another thread, that I can move the basic memory to #c000 and do bankswitching for page 2 (#8000-#bfff). In this case I could load several 16K binaries in the extended memory before executing the code.
So how can I move the basic memory to #c000 (while the basic program is running)?
You can't do it for a running program directly, but you can start a new loader after you changed the address from autoxec.bas. (or the same loader if you do the move/run inside an if)
You can do more than this
if you move the basic program at C000h
using the pagemapper at 8000h you can
access to the full ram.
the steps are
run the autoexec.bas
your autoexec.bas move the basi at c000h
and load a loader.bas
the loader is loaded and executed at c000h
during its execution the loader load and swap
each page at 8000 untill alla the ram is full
So how can I move the basic memory to #c000 (while the basic program is running)?
There's a system variable which indicates the starting address of BASIC. IIRC, it's at address #F676. So you could create a loader with a starting line like this:
5 ' Autoexec.bas 10 IF PEEK(&HF677)=&HC0 THEN 40 20 POKE &HC000,0: POKE &HC001,0: POKE&HF677,&HC0 ' Move BASIC to page 3 30 RUN"Autoexec.bas" ' reload and run myself at new BASIC start address 40 ' ...rest of program goes here...
You can of course combine lnes 10-30 into one oneliner.
This format gave me the opportuniy to include some useful (?) comments
Thank you very much!
Again a question regarding basic: If I use Auroras program, what is the maximum amount of bytes I can load with BLOAD (starting from #8000)? Seems that 31KB is too much.
...and is there any chance to load data in basic somewhere between #0000 and #7fff??