(2021-07-04, 04:57 PM)ytm Wrote: Here is a little update from a branch where I replace GEOS gfx routines by Beamracer and overlay whole screen using BR Programmable Bitmap Sequencer.
If you want to try this right away, here is the boot disk, compiled from beamracer-gfx branch head:
Note that it won't work in Kernal64 emulator because both DLs and bank switching are used.
Everything except strings draws to Beamracer RAM. Both ports are used - either to write into fore/backbuffer simultaneously or to use one to read and other to write data in read-modify-write setup. For line fill REP0/1 registers provide hardware acceleration.
All features provided by RAM expansion (DeskTop bufffer, drive 8 RAM shadowing) are enabled.
DeskTop runs fine. For debug purposes the display list and bitmap sequencer are enabled only for the top half of the screen.
GeoFont looks fine here but once font is loaded for editing one can see that the app writes directly to VIC bitmap at $a000-$bf40, so it will never work properly. Unfortunately most of GEOS 64 programs work this way, even main BSW apps like geoPaint.
Here in IconEdit split screen one can see what was stored in VIC bitmap directly, without referring to GEOS KERNAL:
Finally menus will look wrong sometimes because I have a strange off-by-one error somewhere:
Anyway, this is for fun. I think I will continue with this for a while just to have string drawing routines ready but it's clear that it will never be compatible with main GEOS 64 apps. It will be a good basis for hardware-accelerated TGI driver for CC65.
I will turn my focus to RAM expansion instead. Some of this work, especially with memory management, might be useful anyway.
Hi,
I fixed the DL2 logic accordingly with "Please note that there was an error in "VASYL registers" documenation - the trigger bit is NOT the MSB. It is bit #3" as reported by silverdr.
I tried to run your last .d64: the emulator crashes when you write (within a MOV) into register 0x52 that, as far as I know, doesn't exist.
I modified the code in order to ignore writings to non existing registers but at the end I got a JAM and the emulator stops to run.
I don't know if the JAM is caused by ignoring writings to 0x52.
Any ideas ?