Spätestens seit Erscheinen des neuen ATARI-Profibuchs für ST/STE/TT-Computer sind alle Geheimnisse um die neuen Rechner gelüftet. Alle? Nicht alle, ein paar von unbeugsamen Software-Tüftlern gut behütete Eigenschaften sind bis zum heutigen Tage der Öffentlichkeit verborgen geblieben. Eines dieser Geheimnisse im tiefen Innern der TT-Hardware wollen wir jetzt lüften.
Interlace-Modus? Jeder kennt den altbekannten Streit zwischen ATARI- und Amiga-Usern. (Zitat: Ein ATARI-User fragt: Warum flimmert das denn so? Ein Amiga-User fragt: Wo ist denn die Farbe?) Nun, im allgemeinen Zuge der Entspannungpolitik wollen wir hier nicht den Kalten Krieg neu anfachen, sondern eher zur Beilegung des Zwists beitragen. Denn geradezu sensationell ist die Mitteilung, die uns kurz vor Redaktionsschluß von einem nimmermüden Programmierer erreicht hat. Im ATARI-TT befindet sich ein nicht dokumentiertes Register, das den Betrieb von allen Grafikauflösungen im sogenannten Interlace-Modus gestattet. Bisher ist dieser Grafikmodus nur den Amiga-Usern gut bekannt. Im Interlace-Modus verdoppelt sich die vertikale Auflösung bei gleichzeitiger Halbierung der Bildwechselfrequenz (dadurch flimmert es). Der TT arbeitet bekanntlich mit sechs verschiedenen Auflösungsstufen:
ST-gering : | 320x200 | in 16 Farben |
ST-mittel : | 640x200 | in 4 Farben |
ST-hoch : | 640x400 | in 2 Farben |
TT-gering : | 320x480 | in 256 |
TT-mittel : | 640x480 | in 16 Farben |
TT-hoch : | 1280x960 | in 2 Farben |
Bis auf die TT-hoch-Auflösung werden alle Darstellungen mit 60Hz Bildwechselfrequenz betrieben. Der Interlace-Modus verdoppelt nun in allen Auflösungen die vertikale Anzahl der Pixel-Zeilen, also:
ST-gering : | 320x400 | in 16 Farben |
ST-mittel : | 640x400 | in 4 Farben |
ST-hoch : | 640x800 | in 2 Farben |
TT-gering : | 320x960 | in 256 |
TT-mittel : | 640x960 | in 16 Farben |
TT-hoch : | 1280x1920 | in 2 Farben |
Die Bildwechselfrequenz sinkt dabei allerdings auf 30Hz (TT-hoch: 36Hz). Doch damit läßt sich's leben; besonders, wenn man einen nachleuchtenden Monitor verwendet (z.B. NEC-G2 oder Siemens C791-45-A3047-A3-Z). Da das Betriebssystem TOS auflösungsunabhängig geschrieben ist, bereitet es sauberen GEM-Programmen zudem keine Probleme, mit diesen Auflösungen zu arbeiten.
Wie kann man nun in den Interlace-Modus schalten? ATARI hat im TT einen völlig neu entwickelten Baustein eingesetzt, der für die Erzeugung der Video-Modi zuständig ist. Der TT-Shifter ist über verschiedene Register, die direkt in den Adreßraum des Prozessors eingeblendet sind, programmierbar. Bekannt aus dem Profibuch ist das Register „shift-TT“ (HEX: FFFF8262). Hiermit werden die Auflösungsstufen festgelegt. ATARI hat aber die Existenz eines weiteren Registers verschwiegen (warum, folgt später). Wir haben das Register „lace-TT“ getauft. Es befindet sich an der Adresse HEX: FFFF8264, also direkt nachfolgend zum „shift-TT“-Register. In diesem Register ist nur das Bit 5 relevant. Im Normalfall ist dieses Bit 0, wird es auf 1 gesetzt, schaltet der Shifter im nächsten HBLANK (horizontal Blank Interrupt) auf Interlace-Modus um. Und hier kommt der Knackpunkt. Im Shifter befindet sich offensichtlich ein Design-Fehler, der dafür sorgt, daß im darauffolgenden HBLANK das Bit 5 wieder auf Null gesetzt wird. Das führt dazu, daß nach Ausgabe einer einzigen Zeile im Interlace-Modus wieder auf Normalmodus zurückgeschaltet wird. Wohl aus diesem Grund hat ATARI die Existenz des „lace-TT“-Registers nicht dokumentiert. Selbst bei einer direkten Anfrage beim Entwickler-Support wurde uns mitgeteilt, daß ein solches Register nicht bekannt sei. Man kann aber davon ausgehen, daß in den nächsten Generationen von TT-Computern der Fehler im TT-Shifter behoben sein wird und die Interlace-Modi von ATARI offiziell dokumentiert und dadurch voll nutzbar werden.
Keine Hürde, die sich nicht umschiffen läßt. Auch mit dem Shifter-Fehler lassen sich die Interlace-Auflösungen nutzen. Dazu dient unser kleines Programm. Es klinkt sich einfach in den HBLANK-Interrupt und macht nichts anderes, als ständig Bit 5 im „lace-TT“-Register zu setzen. Dadurch wird eine dauerhafte Umschaltung in den Interlace-Modus doch noch möglich. Allerdings wird dies mit einer gewissen Einbuße an Rechenzeit erkauft. Der HBLANK-Interrupt tritt alle 64 Mikrosekunden auf; auch wenn unsere HBLANK-Routine quasi nur aus einem einzigen move-Befehl besteht, nimmt dieser doch einen gewissen Grad Geschwindigkeit des TT in Anspruch.
Aus Platzgründen haben wir das Programm in einen BASIC-Lader verfrachtet. Dieser erzeugt ein Programm namens LACE_TT.PRG. Es muß vor der Initialisierung des AES, also im AUTO-Ordner ausgeführt werden, damit das AES die geänderte Auflösung korrekt installieren kann. Nun wünschen wir viel Spaß mit den neuen Auflösungen des Atari-TTs.
Literatur:
Jankowski/Reschke/Rabich, ATARI-Profibuch ST-STE-TT, Sybex
1: ' 2: ' BASIC-Loader für LACE_TT.PRG 3: ' (c)1991 by MAXON-Computer 4: ' 5: OPEN "o",#1,"LACE_TT.PRG" 6: RESTORE lace_data 7: zeile%=35 8: CLS 9: PRINT " Programm wird erzeugt..." 10: PRINT 11: DO 12: PRINT " Zeile: ";zeile%;"->"; 13: DO 14: READ a$ 15: EXIT IF a$="***" 16: EXIT IF LEN(a$)=5 17: wort%=VAL("&H"+a$) 18: ADD sum%,wort% 19: OUT #1,wort% DIV 256 20: OUT #1,wort% MOD 256 21: LOOP 22: EXIT IF a$="***" 23: IF a$<>HEX$(sum%,5) 24: ALERT 0, "Fehler in Zeile: " +STR$(zeile%)+ "¦falsche Checksumme: "+HEX$(sum%,5)+ " ",1 "AHA",dummy% 25: CLOSE #1 26: EDIT 27: ELSE 28: PRINT " OK!" 29: ENDIF 30: CLR sum% 31: INC zeile% 32: LOOP 33: CLOSE #1 34: lace_data: 35: DATA 601A,0000,013E,0000,00E8,0000,06240 36: DATA 0000,0000,0000,0000,0000,0000,00000 37: DATA 0000,0000,206F,0004,203C,0000,040AF 38: DATA 0100,D0A8,000C,D0A8,0014,D0A8,27318 39: DATA 001C,2F00,23C0,0000,0140,2F08,08324 40: DATA 4267,3F3C,004A,4E41,4FEF,000C,12029 41: DATA 6100,00E6,6104,615C,6040,487A,1CD00 42: DATA 000C,3F3C,0026,4E4E,5C8F,4E75,138C0 43: DATA 3838,0454,E54C,2878,0456,7A04,1C8AA 44: DATA 4AB4,5000,6710,5845,BA44,66F4,27B41 45: DATA 13FC,00FF,0000,013E,4E75,29BC,08E6A 46: DATA 0000,00B8,5000,4239,0000,013E,0942F 47: DATA 4E75,4A39,0000,013E,6704,4267,14357 48: DATA 4E41,4267,2F39,0000,0140,3F3C,1005D 49: DATA 0031,4E41,487A,00B6,3F3C,0009,0D6E7 50: DATA 4E41,5C8F,4A39,0000,013E,6706,15D4D 51: DATA 487A,013E,6004,487A,00F7,3F3C,13269 52: DATA 0009,4E41,5C8F,4E75,0C39,0000,10587 53: DATA 0000,013F,671A,0C39,0001,0000,07493 54: DATA 013F,672C,5239,0000,013F,0239,0BE1C 55: DATA 0001,0000,013F,4E75,06B9,0000,0566E 56: DATA 0280,0000,0144,614A,5239,0000,0B747 57: DATA 013F,0239,0001,0000,013F,4E75,0532D 58: DATA 04B9,0000,0280,0000,0144,612E,069AB 59: DATA 5239,0000,013F,0239,0001,0000,055B2 60: DATA 013F,4E75,3F3C,0002,4E4E,548F,131CF 61: DATA 23C0,0000,0144,4E75,487A,000C,0BBFF 62: DATA 3F3C,0026,4E4E,5C8F,4E75,23F9,15CAD 63: DATA 0000,0144,0000,045E,4E75,FF00,15317 64: DATA 0000,0000,0000,0000,0A0D,2D2D,0373A 65: DATA 2D5F,5F5F,2D2D,2D5F,5F5F,2D2D,173D6 66: DATA 2D5F,5F5F,2D2D,2D5F,5F5F,2D2D,173D6 67: DATA 2D5F,5F5F,0A0D,2020,2020,2020,0F72B 68: DATA 5454,2049,6E74,6572,6C61,6365,21849 69: DATA 2D4D,6F64,7573,0A0D,2020,2028,15C79 70: DATA 6329,3139,3932,2062,7920,4D41,1B457 71: DATA 584F,4E2D,436F,6D70,7574,6572,23241 72: DATA 0A0D,0020,2020,496E,7374,616C,1489B 73: DATA 6C61,7469,6F6E,2065,7266,6F6C,2526F 74: DATA 6772,6569,6368,210A,0D2D,2D2D,18BA7 75: DATA 5F5F,5F2D,2D2D,5F5F,5F2D,2D2D,1D772 76: DATA 5F5F,5F2D,2D2D,5F5F,5F2D,2D2D,1D772 77: DATA 5F5F,5F0A,0D0A,0D00,2020,2049,118DC 78: DATA 6E73,7461,6C6C,6174,696F,6E20,28843 79: DATA 6D69,9E67,6C81,636B,742E,2E2E,27E18 80: DATA 2E0A,0D2D,2D2D,5F5F,5F2D,2D2D,1541D 81: DATA 5F5F,5F2D,2D2D,5F5F,5F2D,2D2D,1D772 82: DATA 5F5F,5F2D,2D2D,5F5F,5F0A,0D0A,1B72C 83: DATA 0D00,0000,001A,4608,0808,0E18,06942 84: DATA 1E0A,0808,0C08,080C,0808,1016,05244 85: DATA 0000,00000 86: DATA ***