davidgiven / cpm65

CP/M for the 6502
BSD 2-Clause "Simplified" License
267 stars 23 forks source link

tty80/screen80 for the Atari #68

Closed ivop closed 1 year ago

ivop commented 1 year ago

Hi,

Here's the finished implementation of the software 80 columns driver for the Atari 400/800 and XL/XE. It has a full screen implementation, too.

atari000 atari001

Works on all models, and uses exactly 7kB of TPA for the driver code, font data, Antic display list and screen memory.

Regards, Ivo

davidgiven commented 1 year ago

That's impressive --- the display list stuff lets you avoid having to store bitmap data for the top and bottom line of each row, right?

Merged.

ivop commented 1 year ago

Right. The display processor Antic just shows empty scan lines. The downside is that the cursor is also only 6 lines high, but the upside is 24240 bytes less screen memory, smaller font, and because I make every row start at a page boundary I never stumble upon Antic limitations like screen memory cannot cross a 4k boundary and display lists cannot cross 1k boundaries. Scrolling is merely a matter of updating LMS (load memory scan) pointers and clearing the top or bottom row. Here's an image with the background color of mode 15 set to blue so you can see where the black lines are:

atari004

The BIOS driver also has a custom display list with single black lines between the character mode rows to make sure 7x8 glyphs' ascenders and descenders don't touch each other.