VDP memory organization

Posts about programming the Coleco Adam in Machine Language
Post Reply
User avatar
Wmaalouli
Posts: 61
Joined: Sat Jul 20, 2019 2:09 pm

VDP memory organization

Post by Wmaalouli » Mon Aug 05, 2019 9:41 am

This is a repost of Milli's excellent breakdown of the VDP memory organization table for those interested in accessing graphics via assembly language (form the AtariAge forum). I thought it would be easier to find and more relevant here. I just clarified the titles of each section based on the TI nomenclature.

-------------------------------------------------------------------------------------

Notes: CPM breaks the screen up into thirds: TOP, MID, BOT
CPM uses a sprite for the cursor

0000h - 07FFh Font patterns for the top 8 lines of screen (Pattern Descriptor Table)

0800h - 0FFFh Font patterns for the middle 8 lines of screen

1000h - 17FFh Font patterns for the bottom 8 lines of screen

1800h - 18FFh Characters for the top 8 lines (Screen Image Table)

1900h - 19FFh Characters for the middle 8 lines

1A00h - 1AFFh Characters for the bottom 8 lines

1B00h - 1FFFh Unused, CP/M may use for scratch RAM

2000h - 27FFh Colors for the top 8 lines of the screen (Color Table)

2800h - 3FFFh Colors for the middle 8 lines of the screen

3000h - 37FFh Colors for the bottom 8 lines of the screen

3800h - 387Fh (Sprite Descriptor Table)

3880h - 38FFh (Sprite Attribute List)

3900h - 3FFFh Unused, CP/M may use for scratch RAM
Milli

User avatar
Wmaalouli
Posts: 61
Joined: Sat Jul 20, 2019 2:09 pm

Re: VDP memory organization

Post by Wmaalouli » Fri Aug 16, 2019 12:52 pm

I thought this might be useful for anyone trying to understand how the VDP is organized and how to use it. It's an excerpt for the TI 99/4A computer Editor/Assembler manual, and it goes into great detail not otherwise easily available for the Adam.
Attachments
VDP graphics instructions PDF.zip
(8.75 MiB) Downloaded 7 times

User avatar
Milli
Site Admin
Posts: 52
Joined: Fri Jul 19, 2019 3:13 pm
Location: Beaver Falls PA
Contact:

Re: VDP memory organization

Post by Milli » Sat Aug 17, 2019 7:22 am

Thank you for posting this - once I get back in to coding in a week or 2 this will come in handy.
Milli

User avatar
Wmaalouli
Posts: 61
Joined: Sat Jul 20, 2019 2:09 pm

Re: VDP memory organization

Post by Wmaalouli » Sat Aug 17, 2019 4:06 pm

One important difference between the set up of the VDP on the ADAM compared to the TI 99/4A is that the bitmap display on the ADAM disables interrupts in VDP register 1 whereas on the TI they are enabled. Therefore, the standard content of VR1 for the ADAM for the bitmap mode is $C0. It took me a while to figure this out while ripping my hair trying to understand why the screen was getting corrupted! :mrgreen:

User avatar
Milli
Site Admin
Posts: 52
Joined: Fri Jul 19, 2019 3:13 pm
Location: Beaver Falls PA
Contact:

Re: VDP memory organization

Post by Milli » Sun Aug 18, 2019 8:29 am

Wmaalouli wrote:
Sat Aug 17, 2019 4:06 pm
One important difference between the set up of the VDP on the ADAM compared to the TI 99/4A is that the bitmap display on the ADAM disables interrupts in VDP register 1 whereas on the TI they are enabled. Therefore, the standard content of VR1 for the ADAM for the bitmap mode is $C0. It took me a while to figure this out while ripping my hair trying to understand why the screen was getting corrupted! :mrgreen:
I bet this is my problem too! It works fine in the Emulator but on real hardware garbage
Milli

Post Reply