cube: add const qualifier
hercules: add 80x58 text mode and testcase

This is less usable than I initially hoped.  Only 4K of video memory can be
used in text mode, limiting us to 2048 characters before the text starts
repeating what was at the beginning of the screen.

I suspect that with careful timing (probably using the light pen registers
to determine the position currently being scanned out) it should be
possible to rewrite video memory before it starts wrapping.