#TIL The variable "screencolors" wasn't in #Commodore #GEOS v1.0 (& that geoAssembler crashes in v1.0). There's nothing like trying to use your test program on a black-on-black screen. I don't have a v1.1 d64, but v1.2 works as documented.
oops:
... & [if I'm not,] grab the byte at COLOR_MATRIX on startup instead.
Oh, wait, that's why. DAs don't have to preserve the color matrix if the main app tells them they don't have to.
I finally wrote a program that produced an obvious assembler error. geoAssembler saves errors to geoWrite documents and runs geoWrite directly. geoWrite also didn't repair colors until after a DA ran.