Ok, here's what I have of the jump table so far: L9000 jmp initialize 9003 jmp graphicsOff 9006 jmp clearScreen 9009 jmp noninvertedScreen 900c jmp invertScreen 900f jmp ?graphicsOff 2? 9012 jmp ?toggle bank? 9015 jmp setWindow ; minx, maxx, miny, maxy 9018 jmp setPan ; dx, dy 901b jmp setScale ; x, y 901e jmp drawPoint ; x, y 9021 jmp erasePoint ; x, y 9024 jmp movePen ; x, y 9027 jmp lineTo ; destx, desty 902a jmp eraseTo ; destx, desty 902d jmp drawLine ; srcx, srcy, destx, desty 9030 jmp eraseLine ; srcx, srcy, destx, desty ; These enable clipping the 4 borders of the window independently 9033 jmp enableLeftClip 9036 jmp disableLeftClip 9039 jmp enableRightClip 903c jmp disableRightClip 903f jmp enableBottomClip 9042 jmp disableBottomClip 9045 jmp enableTopClip 9048 jmp disableTopClip ; Some interactive crosshair-drawing mode 904b jmp L97ca 904e jmp L97f5 9051 jmp L99a7 9054 jmp L9805 ; Stuff that hits the IEEE bus 9057 jmp L9d68 905a jmp L9d7d 905d jmp L9d9c 9060 jmp L9dc5 9063 jmp L9d62 9066 jmp drawLineAgain ; no parameters, presumably to flash the last line If clipping is disabled, the coordinates will wrap around the window. The suspected block characters actually are the key codes from $97, dispatching to movement commands. The biggest thing that I don't know is how it receives its parameters. What it does is bump up the Start Of BASIC Variables pointer at $2a by 12, and reads two 6-byte floating point numbers from that area (doing that twice for routines that take 4 inputs). I don't know how BASIC feeds into that. The location at $e882 is the low byte of the port address, $e888 is the high byte, and $e88a reads/writes from that configured address. The top two bits of e888 are somehow special. Bit 6 determines invert/noninvert screen, bit 7 is set to 0 when doing graphicsOff/?graphicsOff2?, and bit 7 is toggled in ?toggle bank?. Message was sent through the cbm-hackers mailing listReceived on 2017-09-05 22:00:03
Archive generated by hypermail 2.2.0.