Copy Link
Add to Bookmark
Report

Atari STE display hardware

atari's profile picture
Published in 
atari
 · 29 Dec 2020

OK folks, it's STE programming time again...

Data from "Atari STE Developer Information Addendum", addresses in hex, sizes in bits (in table)

  
Video Harware Modifications
===========================

Addr Access Size Use
====== ====== ==== =================================================
FF8204 R/W 6 Video address counter (high)
FF8206 R/W 8 Video address counter (middle)
FF8208 R/W 8 Video address counter (low)
The change here is that these registers are now
read and write, allowing the programmer to
update the video refresh address to any word
boundary _at any time_.

FF820C R/W 8 Video base address (low) (VBASELO) This register
didn't exist on the ST, but on the STE it allows
the positioning of the screen base address on
any _WORD_ boundary

FF820E ?? 8 Line offset (LINEWID) - the number of extra words
added to the address counter at the end of each
line, _MINUS ONE DATA FETCH_. This allows for
virtual screens that are wider than the actual
screen display. Clearing this register means the
STE acts like an ordinary ST.

FF8240 to FF825E Colour palette
There are now four bits for each of the red,
green and blue components. To give backward
compatibility with the ST, the least significant
bit is above the most significant bit. Thus the
register layout is as follows:

xxxx 0321 0321 0321; x=don't care
RED GRN BLUE

FF8264 ?? 4 Horizontal bit-wise scroll (HSCROLL). Allows the
start of each line to be delayed by 0-15 bits,
thus giving instant horizontal scrolling.

Horizontal fine scrolling isn't quite as trivial as it looks. The pixel offset is loaded into HSCROLL, and the documentation then says the following about the LINEWID register :

"If you are actively scrolling (HSCROLL<>0), this register should contain the additional width of the display line _minus one data fetch_ (in low resolution one data fetch would be four words, one word for monchrome etc.)"

The reason for the extra data fetch becomes clearer if you think about what is actually happening. If you fine scroll by n bits, then n bits are effectively missed off the left hand edge of the screen. But to get a complete line of pixels, n bits must be added to the right hand side of the screen. This constitues one extra data fetch for the display processor beyond the usual requirement.

For example, if you had three low resolution pictures side by side in memory, and you wanted to scroll across them, you would set LINEWID to 160 when HSCROLL=0 (no extra data fetch). When HSCROLL<>0, LINEWID would be set to 156 (four less due to the extra data fetch done automatically by the display processor).

Vertical scrolling is trivial - simply set the video address base to the required address at horizontal blanking time.

That's all folks - for now - more info on the new controller ports soon.
Regards,

Mathew Lodge

  
***********************************************************************
* c/o Dept. Computer Science * "Baldrick, fetch me a turkey _so *
* University of York * big_, you'd have thought its mother *
* Heslington * had been rodgered by an Omnibus" *
* York, UK * *
* YO1 5DD * JANET : SOCS18@uk.ac.york.vaxa *
***********************************************************************

← previous
next →
loading
sending ...
New to Neperos ? Sign Up for free
download Neperos App from Google Play
install Neperos as PWA

Let's discover also

Recent Articles

Recent Comments

Neperos cookies
This website uses cookies to store your preferences and improve the service. Cookies authorization will allow me and / or my partners to process personal data such as browsing behaviour.

By pressing OK you agree to the Terms of Service and acknowledge the Privacy Policy

By pressing REJECT you will be able to continue to use Neperos (like read articles or write comments) but some important cookies will not be set. This may affect certain features and functions of the platform.
OK
REJECT