Die Fundgrube - Tips & Tricks für ATARI 400 und ATARI 800

  • Upload
    djaybee

  • View
    471

  • Download
    4

Embed Size (px)

Citation preview

'MW

MIO

MI71: 1133 iim MIM

BIM L-

iTil nnnn1

1-1 ITTI.1 IT1 1 1".1 I1I1 1 tnl1, ITITI 1 I1T1

111TI 111T, 1hlT1 ITIrrI

II 1-1 1-1 n 1-1 in 117T1 IlTrl 11E1 1-1 1-1 1-1 1-1 1-1 1-1 1-1 1-1 1-1 ITTrl ITIT1 IIILJIIIII 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1111 1 I 1IT1 ITIT1 1-1 11E11

I 11TTI 1-1 1-1 i BV

1:1 IIIII -

IllaeALD

ALLEN ATARI 400/800 - BESITZERN, DIE MIT IHREN COMPUTERN MEHR TUN, ALS NUR ZU SPIELEN...

IMPRESSUM

H. Zoschke: DIE FUNDGRUBE. TIPS UND TRICKS FR ATARI 400 UND ATARI 800 (C) 1982 by Ing.-Bro fr technische Dokumentation Dipl.-Ing. Harald Zoschke Kleinhartpenning 7a D-8150 Holzkirchen 2

Smtliche Rechte (auch die des auszugsweisen Nachdrucks, der Fotokopie, der bersetzung und der Speicherung auf magnetischen und sonstigen Trgern) vorbehalten. Die in diesem Buch wiedergegebenen Verfahren und Programme werden ohne Rcksicht auf die Patentlage mitgeteilt; sie sind nicht ausschlielich fr Amateur- und Lehrzwecke bestimmt und drfen auf fehlerhafte Angaben gewerblich genutzt ,werden. Fr Folgen, die juristische noch die zurckzufhren sind, kann weder eine Garantie Verantwortung oder irgendeine Haftung bernommen werden. Dies gilt ebenfalls fr smtliche Nachteile wie Garantieverlust, Beschdigungen etc. die durch ffnen von Originalgerten und deren unautorisierter Manipulation entstehen. Fr eine Mitteilung eventueller Fehler sowie Anregungen ist der Autor jederzeit dankbar (Anschrift s.o.)

eingetragene ATARI, ATARI 400, -410, -800, .-810, -830 und -850 sind Warenzeichen von ATARI Inc., Sunnyvale, CA 94086 (BRD: Bebelalle 10, D-2000 Hamburg 60), einer Gesellschaft der Warner Communications.

1. Auflage 1982

INHALT

VORWORT TEIL I: DATENSEPARATOR FR ATARI 810 Nachtrglicher Einbau eines Datenseparators DISK TEIL 2: ROMNDERUNGEN IN DER ATARI 810 Der Einbau neuer ROMs und EPROMs DISK TEIL 3: DAS INNENLEBEN DER DISKETTENSTATION ATARI 810 ATARI 810 Ein Diskettenlaufwerk mit eigenem Computer Blockschaltung des 810Systems Memory Map fr ATARI 810 Schaltplanauszug Hardwarezusatz zum Beschreiben der DiskettenRckseiten Netzteilprobleme bei ATARI 810 Tips zum Thema Stromversorgung DISK TEIL 4: WARTUNG DER DISKETTENSTATION ATARI 810 Schmierung KopfReinigung FederdruckKontrolle Drehzahleinstellung per Software KopfEntmagnetisierung Vorbeugende Wartung 8 9 10 11 12 13 14 15 15 16 16 17 18 19 20 24 3 4 6 6

SCHNITTSTELLENPROGRAMMIERUNG TEIL 1: DIE STEUERKNUPPELPORTS SCHNITTSTELLENPROGRAMMIERUNG TEIL 2: DIE DREHREGLERANSCHLSSE WISSENSWERTES BER EPROMS Grundstzliches Wie wird ein EPROM programmiert? Wie lscht man ein EPROM? Tips zum Umgang mit EPROMs bersicht: Anschlubelegung von ROMs und EPROMs Umbau eines ATARIROMModuls zur Aufnahme von EPROMs ZAHLENWANDLUNG TEIL 1: DIE TABELLE ZAHLENWANDLUNG TEIL 2: PROGRAMMBEISPIELE IN BASIC 'ZU FU DISASSEMBLIEREN MIT DER OPERATIONSCODETABELLE' MONKEY WRENCH (tm) BEFEHLSBERSICHT DOSTIPS STECKVERBINDER FR ATARI: TYPENBEZEICHNUNGEN

26 28 29 30 31 32

3637 38 40 41 43

INHALT

STECKVERBINDER FR ATARI: ANSCHLUSSBELEGUNGEN UND -KABEL Anschlu von Drucker, Modem etc. Anschlu des ATARI 800 an Video-Monitor und Stereo-Anlage SOFTWARE-SCHUTZ List- und Kopierschutz-Tricks Schlsselwort-Routinen DIE MEMORY MAP ODER 'WAS LIEGT WO IM ATARI?' Graphische Darstellung mit Speicherkarten Hex-Dump in BASIC DIE MEMORY MAP ODER WAS LIEGT WO IM ATARI TEIL 2: Alle wichtigen Peek- und Poke-Adressen BEISPIEL FR DIE PROGRAMMIERUNG DER DREHREGLERANSCHLSSE: HELLIGKEITSSTEUERUNG Problemlsung in BASIC und Maschinensprache Interruptgesteuerte Helligkeitssteuerung - zugleich Beispiel fr die Benutzung von Timern und Interrupts ROM-MODULE SELBERMACHEN! Grundlagen: Vektoren und alles, was dazugehrt Ein konkretes Beispiel DISK TEIL 5: DER AUTORUN.SYS-GENERATOR ERROR 144 ETC.: FEHLER SCHNELL GEFUNDEN UND BESEITIGT' 78 79 82 83 74 76 53 49 52 46 47 44 45

Teil 1: Allgemeine Tips zum Umgang mit Fehlern 84 85 Teil 2: Fehlerliste und Erklrungen Teil 3: Hilfsprogramm zur Ausgabe von Klartext-Fehlermeldungen . 103 Fehlerbehandlung in Maschinensprache 103 BASIC-PROGRAMME AUFPOLIEREN: EINBAUFERTIGE SOUND-ROUTINEN FACHBCHER UND ZEITSCHRIFTEN FR ATARI-COMPUTER SCHNITTSTELLENPROGRAMMIERUNG TEIL 3 Die serielle System-Schnittstelle Die TRIG-Eingnge SAMMELSURIUM - BUNT GEMIXTES FR IHREN ATARI 107 108 109 105 106

VORWORT

Dieses Buch, lieber ATARI-Besitzer, hat einen etwas unkonventionellen Charakter. Es ist weder im Fotosatz gedruckt, noch ist es suberlich in Kapitel unterteilt. Beides hat seine Grnde. Um den Preis fr Sie niedrig zu halten, erfolgte der Ausdruck mit einem Typenraddrucker. Und um Ihnen die hier prsentierten Tips und Tricks unabhngig von Interessen Dritter mitteilen zu knnen, geschah die gesamte Herstellung unter 'eigener Regie'. Zum anderen handelt es sich hier nicht um ein Lehrbuch, sondern eben um eine FUNDGRUBE. Beim Stbern werden Sie viele interessante Dinge finden, die bislang nur wenigen Insidern bekannt waren. Vieles wurde erst durch Nachforschungen vor Ort in USA zutage gefrdert. Einiges wird bei Ihnen wahrscheinlich schnell zum hufig benutzten Nachschlagewerk werden: zum Beispiel die ausfhrlichen Erklrungen der - leider nicht immer vermeidbaren - Fehlermeldungen. Oder die Memory Map mit (hoffentlich) allen wichtigen Adressen im ATARI-System. Es hindert Sie brigens niemand daran, eigene Ergnzungen vorzunehmen! Abschlieend noch ein paar Hinweise: 1) Einige Vorschlge in diesem Buch sind mit Eingriffen, z.B. in die Disketten-Station, verbunden. Neben dem Verlust der Garantie (sofern noch welche besteht) knnen unsachgem durchgefhrte Arbeiten natrlich mehr Schaden anrichten als Verbesserungen bringen. Es sei daher nochmals ausdrcklich auf den Haftungsausschlu im Impressum hingewiesen. Aber keine Angst: Alles wurde in unserem Labor erprobt! 2) Entgegen ihrem Mitteilungszweck sind einige Informationen in diesem Buch daeu geeignet, unerlaubte Programm-Kopien anzufertigen. Bitte bedenken Sie, welche unvorstellbaren Kettenreaktionen damit ausgelst werden knnen. Und es drfte sicherlich im Interesse keines ATARI-Anwenders liegen, da sich Produzenten hervorragender Software - egal ob hier oder in den USA - aus diesem Grund aus dem Geschft zurckziehen. 3) Alle DRUCKFEHLER sind beabsichtigt. Denn die FUNDGRUBE soll ja fr jeden etwas bieten - auch fr die Leute, die nur nach Fehlern suchen.

DIE MGLICHKEITEN DES ATARI-SYSTEMS SIND NOCH LNGST NICHT AUSGESCHPFT. DIE FUNDGRUBE SOLL IHNEN DABEI HELFEN, NOCH MEHR AUS IHREM COMPUTER HERAUSZUHOLEN.

Holzkirchen Herbst 1982

Harald Zoschke

DIS( TEILl: DATENSEPARATOR FR ATARI 810

ATARI-Freunde, die schon lnger in Besitz einer Diskettenstation waren und stlh im Winter '81 oder spter ein zweites Laufwerk anschafften, waren lib:7r1E3cht: nicht nur, da sich Disketten schneller formatieren und laden lie0en Auch die Rate der Lesefehler, gerade bei fremden Disketten, ging mit dem neuen Gert praktisch auf Null zurck. Besonders Neugierige schraubten ihre Diskettenstationen unter dem Risiko des Garantie-Verlustes auf, um das Innenleben zu vergleichen. Auf den ersten Blick nichts Neues. Das Geheimnis lftet sich erst mit dem ffnen der Blech-Abschirmung auf der Seitenplatine. Hier hat sich einiges getan: 1. Ein neues Betriebssystem-ROM fr den 6507, inzwischen bekannt als 'Fast Formatting Chip' (siehe 'DISK TEIL2'). 2. Eine kleine Platine, die in Sandwich-Bauweise auf dem Sockel des 40-poligen Steuerungs-ICs 1771 steckt. Obwohl nirgendwo erwhnt oder vermerkt, lie sich schnell feststellen, da es sich bei dieser kleinen Zusatzschaltung um einen DATENSEPARATOR handelte. Alle Gerte, die diese beiden nderungen enthielten, waren ohne weitere Erluterungen mit zwei Aufklebern in ihrem Inneren gekennzeichnet: 'DS' (fr Datenseparator) und 'C' (fr Revision C). Alle ab 1982 produzierten Gerte sollten eigentlich so ausgestattet sein. Durch Zwischenlagerung bei der deutschen ATARI-Tochter und/oder beim Fachhndler bedingt sind jedoch auch noch 'alte' Gerte in Umlauf. WELCHE VERBESSERUNGEN BRINGT DER DATENSEPARATOR? Von allen Verbesserungen, die der Disk 810 im Laufe ihres Daseins widerfahren sind, drfte der Einbau eines Datenseparators die wirksamste sein. Selbst auf den bisher besonders kritischen inneren Diskettenspuren gibt es kaum noch Lese-Fehler. Auch lassen sich auf anderen Laufwerken bzw. mit zu hoher oder zu niedriger Drehzahl bespielte Disketten endlich problemlos laden. Ebenso ist das Schreiben sicherer geworden, und das Tbrmatieren einer Diskette klappt nun meist beim ersten Versuch. Darberhinaus erhht sich die Zahl der Disketten, die sich auch auf der Rckseite bespielen lt (siehe 'DISK TEIL 3'). WIE STELLE ICH FEST, DATENSEPARATOR BESITZE? OB ICH BEREITS EINE DISKETTENSTATION MIT

(3anz einfach: Sie nehmen einen Kreuzschlitzschraubenzieher und ffnen das Gehuse Ihrer ATARI 810. Sie finden keine Schrauben? Kein Wunder, sie sind nmlich zur Tarnung mit Kunststoffaufklebern verdeckt die Sie zunchst mit einem Messer vorsichtig entfernen mssen (siehe Abb.12).

Abdeckungen

Abbildung 0

3

Finden Sie nach Herausdrehen der Schrauben und Abnehmen des Deckels irgendwo im Inneren Ihres Laufwerkes die besagten Aufkeber 'DS' und 'C', ist der Fall klar. Sie knnen das Gert wieder zuschrauben. Wenn nicht, hilft nur weitersuchen! Machen Sie dazu alle Schrauben ausfindig, die Sie zum Herausnehmen der Seitenplatine lsen mssen. Nochmals sei daran erinnert, da durch derartige Eingriffe die Garantie erlischt, sofern sie nicht sowieso schon abgelaufen ist. Bevor Sie die Seitenplatine herausnehmen, ziehen Sie die beiden Stecker ab und merken sich deren Position. Ziehen Sie das Board von seinem Stecksockel auf der Grundplatine und entfernen Sie die Metallabschirmung, indem Sie die zwei Schrauben lsen und vorsichtig alle Blechlaschen hochbiegen. Steckt das 40-polige IC '1771' direkt in seinem Sockel auf der Platine, sind Sie tatschlich noch kein glcklicher Besitzer eines Datenseparators. Also alles wieder zusammenbauen und weitermachen wie bisher, bis Sie einen haben. WOHER BEKOMME ICH EINEN DATENSEPARATOR? In den USA ist bereits eine entsprechende ATARI-Platine als Nachrstsatz zu haben. Aber auch dort gab es Beschaffungsschwierigkeiten, die zur Entdeckung einer zudem noch preiswerteren Alternative fhrten: Bereits seit mehreren Jahren gibt es von PERCOM einen Datenseparator fr die TRS-80-Disk, der sich auch im ATARI-810-Laufwerk einsetzen lt. PERCOM bietet inzwischen sogar eine entsprechende Einbauanleitung an. In den US-Computershops wird dieser Zusatz z.Zt. fr knapp 30 Dollar verkauft. Aber auch ohne die Anleitung ist der Einbau denkbar einfach, soda man bei den heimischen TRS-80-Hndlern nachfragen sollte, bevor man sich zu einer kosten- und zeitaufwendigen Bestellung in USA entschliet. EINBAU DES PERCOM-DATENSEPARATORS 1. Bauen Sie die Seitenplatine auf die bereits beschriebene Weise aus und entfernen Sie die Blechabschirmumg. 2. Hebeln Sie das 40-polige IC '1771' mit einem Schraubenzieher von beiden Seiten vorsichtig aus seinem Sockel. ACHTUNG: Da es sich um einen elektrostatisch empfindlichen MOS-Baustein handelt, sollte man die IC-Anschlsse mglichst nicht mit den Fingern berhren. 3. Stecken Sie das IC in die 40-polige Fassung auf der Datenseparator-Platine. Achten Sie dabei auf die Kerbe, damit dies nicht falsch herum geschieht. 4. Aus mechanischen Grnden mu der Quarz auf der Seitenplatine liegend montiert werden. Lten Sie ihn dazu aus, lten Sie zur Verlngerung der Anschlsse etwas Draht an und bauen Sie ihn wie in Abbildung gezeigt wieder ein. ---..; Gehuse-Rand ---------:::::111 . Neue Lage des Quarzes ..."/)11 Alte Lage des Quarzes/ Seitenplatine I1.sss

Abbildung

4

kerteil

Ausschnitt fr den Quarz Abbildung

(7)

im ein kleiner Ausschnitt .5. Wegen der Umlegung des Quarzes ist Abschirmungsgehuse erforderlich. Nehmen Sie mit der oberen Abdeckung des Blechgehuses Ma, machen Sie mit einer Schere zwei senkrechte ca. 8 mm tiefe Einschnitte und biegen Sie das Blech wie in Abbildung G gezeigt iJzocK Stecken Sie das Datenseparator-Board richtig herum in die Seitenplatine. zu - ACHTUNG: Um ungewnschten Kontakt zwischen den beiden Platinen vermeiden, sollte man deren Abstand mit Hilfe eines 40-poligen Zwischensockels vergrern. Verwenden Sie dazu mglichst eine Fassung mit gedrehten Kontakten (sog. Kelchfederkontakte). 7.Setzen Sie alles wieder so zusammen, Ulrigbleiben!! da mglichst keine Teile

Falls Sie bei TRS-80-Hndlern keinen Erfolg haben sollten, hier Anschrift von PERCOM: PERCOM DATA COMPANY INC. 11220 Pagemill Rd. Dallas/Texas 75243 Tel (214)340-7081

die

Sollten Sie keine Bezugsquelle fr Datenseparatoren ausfindig machen, hilft Ihnen der Autor gerne weiter.

Ubrigens: PERCOM bietet seit Kurzem ein eigenes Disketten-System an, und zwar unter der Bezeichnung RFD. Ein Kurzsteckbrief des RFD-Disketten-Systems: C Ein Hauptlaufwerk mit der Steuerlogik, bis zu drei (billigere) Zusatz-Laufwerke O Mit ATATRI 810 kombinierbar O Kompatibel zu DOS2.0S O Einfache und doppelte Aufzeichnungsdichte (umschaltbar) O 40 Spuren, 184 kByte formatierte Speicherkapazitt O 24 kByte RAM erforderlich ca. 800 Dollar O Preis (10/82): Hauptlaufwerk Zusatzlaufwerke ca. 460 Dollar Nicht uninteressant!

5

DISK TEIL2: ROM-NDERUNGEN IN DER DISKETTENSTATION ATARI 810

Als zweite wichtige Verbesserung der Disk 810 wurde ab Herbst '81 die Installation des 'ROM C', inzwischen auch als 'Fast Formatting Chip' bekannt, vorgenommen. Es scheint so, als ob alle neu ausgelieferten Laufwerke grundstzlich beide Neuerungen enthielten. WELCHE VERBESSERUNGEN BRINGEN DIE NEUEN ROMS? Der Name sagt es bereits: die Disketten werden mit diesem ROM derart formatiert, da sie schneller beschrieben und gelesen werden knnen. Entscheidend scheint dabei allein der Formatierungsproze zu sein, denn Disketten, die auf einer 'schnellen' Maschine formatiert wurden, lassen sich auch auf 'alten' Laufwerken mit gesteigerter Geschwindigkeit lesen und beschreiben. Grobe Messungen mit der Stopuhr ergaben ein ca. zwei bis dreimal schnelleres Laden von Disketten-Daten!-

WOHER BEKOMME ICH DIE NEUEN ROMS? Wie Sie sehen, ist gleich von mehreren neuen ROMs die Rede. Da ATARI zunchst alle neuen 'ROM C'-Bausteine intern . fr die laufende 810-Produktion bentigte, waren sie als Ersatzteile lange nicht vefgbar. Da man nun aber gesehen hatte, das die Disk auch schneller kann, wenn sie entsprechend programmiert wird, entwickelten findige Tftler in amerikanischen ATARI-Clubs ihre eigenen 'Fast Formatting Chips', die eine mindestens genauso groe Geschwindigkeitssteigerung bewirken. Wer weder bei einem der US-Clubs noch bei seinem heimischen ATARI-Hndler Erfolg hat, bekommt fr ca. 45 Dollar ein schnelles ROM unter der Bezeichnung 'FAST-CHIP' bei: BINARY Corp., 3237 Woodward Ave., Berkley, MI 48072, Tel. (313)548-0533. WIE BAUE ICH EIN NEUES ROM EIN? Wer ein original ATARI-ROM (2316) bekommt, braucht lediglich das auf der Seitenplatine mit A102 gekennzeichnete 24-polige IC gegen den neuen Baustein auszutauschen. Achten Sie auf die Kerbe! ffnen des Gehuses und Freilegen der Seitenplatine siehe 'DISK TEIL1'. Viele Anbieter liefern ihr neues Disk-Betriebssystem jedoch in EPROMs vom Typ 2516/2716. Und wer ein Erstgert mit langsamem und ein Zweitlaufwerk mit schnellem ROM besitzt, darf fr seinen privaten Bedarf natrlich ohne weiteres eine EPROM-Kopie vom neuen Baustein erstellen, um die 'alte' Diskettenstation damit aufzursten. Wer ber ein EPROM-Programmiergert verfgt, kann das 2 kByte groe Betriebssystem der Disketten-Elektronik auch disassemblieren und ndern, um als Programmschutz-Manahme bereits beim Formatieren Sektoren auszulassen ('Bad Sectoring'), etc.!!! Interessant ist also auch die Frage: WIE BAUE ICH EIN EPROM EIN? Aufgrund der geringfgig differierenden Anschlubelegung des EPROM 2516(2716) gegenber dem Masken-ROM 2316 wren eigentlich einige Modifikationen auf der Seitenplatine erforderlich. Ein kleiner Trick macht es jedoch mglich, da auf der Platine nur ein einziger Draht angeltet bzw. angesteckt werden mu (siehe nchste Seite).

6

Gehen Sie zum Einsatz eines Eproms vom Typ 2516/2716 in Ihrer ATARI 810 wie folgt vor: 1. Programmieren Sie Ihr EPROM mit dem gewnschten Inhalt. 2. Zwicken Sie mit Hilfe eines kleinen Seitenschneiders die Anschlubeinchen von Pin 18,20 und 21 ab, soda sie beim Einstecken des ICs in den Sockel dort keinen Kontakt mehr bekommen (siehe Abbildung ). 3. Lten Sie ein Stck dnnen Draht von Pin 18 zu Pin 12, sowie von Pin 21 zu Pin 24. 4. Lten Sie einen ca. 70 mm langen dnnen isolierten Draht an Pin 20 und isolieren Sie auch das andere Ende ab (ca. 3 mm.) WICHTIG: Verwenden Sie fr ALLE Ltarbeiten einen Niedervolt-Ltkolben! Andernfalls knnen die empfindlichen MOS-IC beschdigt werden. 5. Entfernen Sie das original ATARI-ROM (Bezeichnung auf der Platine: A102) aus seinem Sockel und setzen Sie das modifizierte EPROM ein. 6. Verbinden Sie den an Pin 20 angeschlossenen Draht mit Pin 2 von Z103 (siehe Abbildung (i)). Dies kann entweder durch Anlten geschehen, oder durch Einstecken in den Sockelkontakt (Z103 dazu vorher herausnehmen). Sicherer ist natrlich die Ltverbindung. 7. Das wrs. Bevor Sie mechanisch alles wieder montieren, sollten Sie zuerst eine Probe machen, indem Sie die Platine wieder in ihren Sockel stecken, die beiden Steckverbinder aufstecken und das Laufwerk ausprobieren. Soll das modifizierte EPROM einmal neu programmiert werden, bedient man am Besten eines Zwischensockels, mit dessen Hilfe die 'normalen' Anschluverhltnisse vorrbergehend wieder hergestellt werden.

Pin 12 .

...... . .... ...

24 zu Pin 2 von Z103 (All) Abbildung Modifiziertes EPROM als ROM-Ersatz in ATARI 810

111

A102* Z103 1/1 Seitenplatine

Abbildung Installation des modifizierten EPROMs auf der Seitenplatine

7

DISK TEIL3: DAS INNENLEBEN DER DISKETTENSTATION ATARI 810

Diesem Abschnitt mu vorrausgeschickt werden, da es extrem schwierig ist, technische Informationen ber das Innenleben der ATARI 810 zu bekommen. Die hier mitgeteilten Erkenntnisse beruhen daher hauptschlich auf dem Studium der Leiterplatte, des ROM-Betriebssystems und der Datenbltter zu den verwendeten LSI-Chips. Umsomehr gilt hier daher der Hinweis zu Beginn dieses Buches, da fr die Richtigkeit der Information und fr eventuelle Folgeschden durch Falschinformation keine Verantwortung bernommen wird. Desweiteren beschrnken wir uns bei der Hardware-Darstellung auf jene Details, die zur Modifikation des Betriebssystems ntig sind. Solange ATARI kein Hardware-Manual fr die Disk 810 verffentlicht, mge Ihnen die folgende Information von Nutzen sein. ATARI 810 - Ein Diskettenlaufwerk mit eigenem Computer Whrend die meisten anderen Personal-Computer fr die Disketten-Handhabung eine ganze Menge Rechenzeit abzweigen mssen, besitzt die ATARI 810 ihren eigenen kompletten Computer, der den Hauptrechner krftig entlastet. Natrlich handelt es sich hier um eine Minimalkonfiguration, also um einen 'abgemagerten' Computer, der ganz speziell auf seine Aufgaben zugeschnitten ist: die Steuerung aller Laufwerk-Funktionen sowie die Datenbertragung vom und zum Hauptrechner. Das Herz des Systems bildet ein 'kleiner Bruder' des im ATARI 400/800 verwendeten 6502-Mikroprozessors: der 6507. In einem kleineren Gehuse untergebracht, hat er nur 13 Adreleitungen, mit denen er lediglich 8 kByte adressieren kann (6502: 16 Leitungen/64 kByte). Aber das ist sowieso schon mehr Speicherplatz, als das System bentigt. Auerdem fehlen ihm die beim 6502 vorhandenen Interrupt-Leitungen. Aber auch auf die kann in diesem Fall verzichtet werden. Im System finden sich einige LSI-Bausteine, die dem 6507 viel Arbeit abnehmen, an erster Stelle der Floppy-Disk-Controller 1771 von Western Digital. Fast schon selbst ein Mikroprozessor, versteht er eine Reihe von Befehlen, die ihn zur Ausfhrung ganzer Ketten von Operationen befhigen. So bernimmt er z.B. die Formatierung, das Lesen und Schreiben der Sektoren etc. Als Schreib-Lese-Speicher bentigt das System lediglich 256 Bytes RAM. Davon enthlt der RAM-Baustein 6810 (Motorola u.a.) 128 Bytes und der Multifunktions-Chip 6532 (Synertek u. a.) weitere 128 Bytes. Darberhinaus stellt der 6532 zwei programmierbare Timer und - hnlich wie in der PIA 6520 - 16 Schnittstellen-Leitungen zur Verfgung, die wahlweise als Ein- oder Ausgnge programmmiert werden knnen. Das Betriebssystem steht, wie wir ja schon wissen, in einem 2716-kompatiblen ROM. Ein Blick ins Gehuse-Innere zeigt, da die Elektronik der ATARI 810 auf zwei Platinen verteilt ist. Auf der Bodenplatine befinden sich das Netzteil (+/-5V,+12V), die Tacho-Regelung fr den Spindelmotor, die Ansteuerlogik fr Lschkopf und Schreib Lese Kopf, die Laufwerkauswahl Schaltung mit den Kodierschaltern und alle Anschlubuchsen. - Auf der Seitenplatine, befindet sich grtenteils mit einem Blechgehuse abgeschirmt, der Computerteil der Steuerung, bestehend aus CPU, Floppy-Controller, RAM, ROM, E/A-Chip, Taktgenerator und etwas CMOS-Logik zur Adrekodierung. Vom E/A-Chip fhren Leitungen zur Vierphasen-Steuerung des Schrittmotors fr die-

Kopf Positionierung,-

zum

Floppy Controller lc-

und

zu

den

parallelgeschalteten Anschlubuchsen fr die serielle System-Schnittstelle.

8

Grob vereinfacht ergibt sich fr die ATARI 810 das folgende Blockschaltbild:

Spindelmotor

Abbildung Vereinfachtes PrinzipSchaltbild der Disk ATARI 810

9

Speicherkarte (Memory Mop) der Diskettenstation ATARI 810

FFFF

NICHT ADRESSIERBAR

2000

UNBENUTZT*

OFFF

BETRIEBSSYSTEM-ROM

0800 0398 EIN/AUSGABE 0380 0200 128 BYTE RAM (6532) - STACK 01800100

128 BYTE RAM (6810) - ZERO PAGE 0080 FLOPPY-CONTROLLER 1771 0000 Abbildung@

* Denkansto

fr

Hardware/Maschninensprache-Freaks,

die

ihr

Disk-Betriebssystem erweitern wollen: Durch Verbindung der bisher

unbenutzten Adreleitung Al2 der 6507-CPU (siehe 'x' im Schaltplan) mit dem entsprechenden Anschlu eines 2532-EPROMs mte es mglich sein, durch Einsatz eines 4k-EPROMs 2 kByte zustzliche Programmspeicherkapazitt zu bekommen. Man sollte jedoch die etwas unterschiedliche Anschlubelegung vom 2532 gegenber dem 2516 beachten (siehe Abschnitt 'Anschlubelegung von ROMs und EPROMs').

10

SCHALTPLANAUSZUG: DER COMPUTER IN DER DISKETTENSTATION ATARI 810 * 10 140

1 (SIEHE TEXT)

04J

o

-1

1",

1-4

ob. OV it. IV u ZV E N,

n

in il irf

0 1 C -1 2

t

u en 0 1-4 KI,

cn1-1

to

sID

0 st

0

IV

....,

0

cz

III

OG 1 IG t ZG co X 4) EG oo 4 CV 1+IQ ..-%

.

s

* SG

1 aeo o

,

-- .1.

.

' SV ii 9V ' II' ISO il

5

, I 9a a LG

5

OSD

g.' > 0 401, ^A.-''''N\-

ere,; .- - - -"'"'"ii.4.

4;7

s1 ` 4I I P ,

doe

-

'3';:eMip*,,,e,,,.;:, -''. A, ''. 4e','.,.--,01e,, .,,\ s , \ s\Vh

,,,

0

Abbildung(3des Schmierbedrftig sind auch die Lager der Spindelfhrung (E) und Sie diese beiden Stellen mit einem Spindelmotors 0. Versorgen k-l-e-i-n-e-n Trpfchen l. Alle anderen mechanischen Teile sollten Sie ungeschmiert belassen. Lsen Sie auf keinen Fall irgendwelche Schrauben, die direkt mit der Mechanik zu tun haben. Vieles ist hier werkseitig genauestens justiert! Bewegen Sie den Kopf-Mechanismus einige Male hin und

15

her, um den Schmierstoff zu verteilen und entfernen Sie berschssiges Schmiermittel mit einem Wattestbchen. Wenn Sie Ihre Diskettenstation nun ausprobieren, werden Sie staunen: selbst bei geffnetem Gehuse sind Formatieren, Kopfverschiebung und Spindelrotation akustisch kaum noch wahrnehmbar!

2. KOPF-REINIGUNG Wie Sie inzwischen bereits gesehen haben, ist die in Abbildung gezeigte Kombination aus Kopf und Andruckfilz auf zwei Rundschienen gelagert. Mit Hilfe eines flexiblen Metallbandes kann sie vom rechts daneben befindlichen Schrittmotor in 40 genau festgelegten Schritten verschoben werden. Die Steuer-Elektronik zhlt stets mit, auf welcher Spur sich der Kopf befindet und bentigt nur Millisekunden, um ihn zu irgendeiner anderen Spur zu fahren. Der Kopf hat dabei fortwhrend Kontakt mit der Disketten-Oberflche und neigt aufgrund der Reibung genau wie der Andruckfilz zur Verschmutzung. Beide Teile bedrfen je nach Benutzungshufigkeit alle drei bis sechs Monate einer grndlichen Suberung. Auch dafr bentigen Sie ein paar Wattestbchen, auerdem etwas denaturierten Alkohol aus der Apotheke. Trnken Sie ein Stbchen mit Alkohol und reinigen Sie vorsichtig den Filz. Nehmen Sie dann ein frisches Wattestbchen und tupfen Sie den Filz wieder trocken. Filz-Halterung Andruckarm Andruckfilz Andruckfeder

Abbildung Schreib/Lese- und Lschkop

(g)

Lager f. Fhrungsschiene BRIGENS... Bei Formatierungsproblemen kann es unter Umstnden aus der unerfindlichem Grund hilfreich sein, wenn man die Orientierung Filzfasern etwas ndert. Verdrehen Sie dazu mit inem Schraubenzieher den Schlitz in der Filz-Halterung (in Abbildung IL ). Durch Ausprobieren findet man oft eine gnstigere Stellung. Notieren Sie sich aber am Besten zuvor die Ausgangsstellung. Auch der Kopf selbst wird mit Wattestbchen und (wenig) Alkohol gereinigt. Seine Oberflche sollte mglichst nicht mit den Fingern berhrt werden. WICHTIG: Achten Sie bei Ihrer Reinigungsaktion darauf, da Sie beim Anheben des Andruckarms die Feder nicht berdehnen. Damit wren wir auch schon beim nchsten Punkt:

3. FEDERDRUCK-KONTROLLE Wer eine feine Federwaage sein eigen nennt, kann auch die Einstellung des Andruckarms berprfen. Bei geschlossenem Diskettenfach sollte der Filz mit 20 bis 30 Gramm gegen den Kopf drcken. Andernfalls mu die Andruckfeder korrigiert werden. Whrend ein zu hoher Federdruck Kopf und Diskette frhzeitig verschleien lt, fhrt eine zu schwach eingestellte Feder zu Fehlern beim Lesen, Schreiben und Formatieren. Siehe auch '6. VORBEUGENDE WARTUNG'.

4. DREHZAHL-EINSTELLUNG Auch wenn Ihre Diskettenstation bereits ber einen Datenseparator verfgt, der ja die Datensicherheit von Geschwindigkeitsabweichungen weitgehend unabhngig macht, sollte die Nenndrehzahl von 288 Umdrehungen pro Minute (Upm) zumindest einigermaen genau eingehalten werden (ca. +1-3 Upm). Dafr gibt es gute Grnde: 1. Wenn die Drehzahl zu hoch ist: Dreht sich die Spindel zu schnell, ist dies eine hufige Ursache fr Formatierungsfehler. Denn bevor der letzte (also der 18.) Sektor einer Spur fertiggeschrieben wurde, hat die Diskette bereits eine vollstndige Umdrehung absoviert, soda der Anfang des ersten Sektors berschrieben wird. Meistens erscheint dann nach einigen vergeblichen Anlufen die Fehlermeldung 'ERROR173' (Formatierungsfehler). Sollte das Formatieren gerade noch mglich sein, haben die Besitzer anderer Diskettenstationen mit Sicherheit Schwierigkeiten beim Lesen Ihrer Disketten. Und wenn Sie Disketten bekommen, die auf einer langsameren Maschine formatiert wurden, haben Sie wiederum Schwierigkeiten beim Abspeichern, da Sie ber das tatschliche Ende der Sektoren hinausschreiben. 2. Wenn die Drehzahl zu niedrig ist: Dreht sich die Spindel zu langsam, werden die Daten so eng gepackt, da sie schwierig oder berhaupt nicht gelesen werden knnen, insbesondere von schnelleren (normal eingestellten) Laufwerken. Da man mit zu langsamen Diskettenstationen zwar mhelos zu schnell bespielte Disketten laden kann, aber nicht umgekehrt, kommt man diesem Fehler kaum auf die Schliche. Besonders die inneren Spuren mit den hheren Sektor-Nummern sorgen immer wieder fr Verdru, da die Daten hier enger gepackt sind als auen. Dies macht sich um so mehr bemerkbar, je niedriger die Drehzahl eingestellt ist. durch dies geschieht Ist eine Korrektur der Drehzahl erforderlich, Einstellen am Trimm-Potentiometer da sich auf der Bodenplatine hinten rechts befindet (Siehe Abbildunge ). Drehen Sie dieses Poti mit einem Schraubenzieher nach links, erhht sich die Drehzahl. Drehen Sie nach rechts, wird der Motor lansamer.

Poti zur Drehzahleinstellung

i

0

s eme

I .. IIIIII IM ......1..

. .

_.

04.au.00

1r

.

1

,. II .-----4 -., ...,.,.,v4.., . ,>ei="Wil.f.......

Schnellert

langsamer

-.Abbildung (3,

,

_.

11

Wie aber knnen wir die Drehzahl selber ermitteln, um sie gegebenenfalls zu korrigieren? Schnell und komfortabel geht's mit dem nachfolgenden BASIC-Programm, da Ihnen auf +1-1 Upm genau sagt, wie schnell bzw. langsam Ihr Laufwerk ist. Alles, was Sie tun mssen, ist: 1. Das Programm eintippen (und abspeichern) 2. Eine formatierte Diskette einlegen 3. RUN eingeben. Alles andere sagt Ihnen das Programm selbst.

100 REM DREHZAHL-TEST 110 FOR A=0 TO 74:READ B:POKE 1536+A,B:NEXT A 120 ? "":SETCOLOR 2,2,10:SETCOLOR 1,0,0:POKE 752,1:POSITION 4,10:? "LAUFWERK-NUMMER ? "; 130 OPEN 1,4,0,"K:":GET 1,LN:CLOSE 1:? LN-48:POKE 1617,LN-48 140 ? :? " BITTE ETWAS GEDULD ...":X=USR(1536) 150 Z1=PEEK(1618):Z2=PEEK(1619) 160 MIN=(256 Z2+Z1)/3600 170 UPM=INT((100/MIN+0.5) 5/6) 180 ? :? :? " DREHZAHL = ";UPM;" UPM" 190 IF UPM>284 AND UPM>292 THEN ? :? "DAS IST OK!":END 200 IF UPM291 THEN ? :? " DAS IST ZU HOCH!":? :? " POTI NACH RECHTS DREHEN!":END 220 DATA 104,169,1,141,10,3,169,0,141,11,3,169,128,141,4,3,169,6 230 DATA 141,5,3,173,81,6,141,1,3,169,82,141,2,3,169,5,141,80 240 DATA 6,32,83,228,206,80,6,208,248,169,100,141,80,6,169,0,133,19 250 DATA 133,20,32,83,228,206,80,6,208,248,165,20,164,19,141,82,6,140,83,6,96

5. KOPF-ENTMAGNETISIERUNG Je nach Benutzungshufigkeit sollte der Schreib- Lesekopf in viertel- bis halbjhrlichen Intervallen entmagnetisiert werden, da sich im Laufe der Zeit ein Magnetfeld aufbaut, was zu Lesefehlern fhren kann. Sehr gut eignen sich dazu Entmagnetisier-Drosseln, wie sie fr ca. DM 20,- zur Behandlung von Tonband- und Cassettenrecorder-Tonkpfen angeboten werden. Wichtig ist, da Sie die Drossel ganz langsam und in groem Bogen wieder vom Kopf entfernen, damit nicht eines der 50-mal pro Sekunde wechselnden Magnetfelder zurckbleibt. Meistens wird diese Prozedur auch in der Gebrauchsanleitung der Drossel eingehend erlutert. - Vorteilhaft, wenn auch nicht unbedingt erforderlich ist es brigens auch, wenn Sie fr alle Arbeiten an Ihrem Laufwerk nichtmagnetische Schraubenzieher verwenden.

ee18

6. VORBEUGENDE WARTUNG: Ein paar gutgemeinte Tips zum Umgang mit Disketten und Laufwerk 1. Was die Handhabung der Disketten betrifft, drfen Sie damit alles Mgliche machen, z.B. das Diskettenfach ffnen, obwohl die BUSY-Lampe leuchtet, Diskette rein/Diskette raus, Disk ausschalten etc., NUR DAS EINE NICHT: das Laufwerk EINschalten, wenn eine Diskette drinsteckt. Andernfalls ist die Chance, da dann ein paar Bits draufgeschrieben werden, bevor alle angenommen Logikpegel in der Steuer-Elektronik einen stabilen Zustand haben, recht gro. 2. Lassen Sie das Diskettenfach nicht auf Knopfdruck aufspringen, sondern ab. den Fingern mit beremsen Sie die Aufwrtsbewegung der Klappe Andernfalls kann es mit der Zeit zu einer berdehnung der Feder kommen,

soda der Andruckfilz dann nicht mehr stark genug gegen Diskette und Kopf drckt. Ein hufiger Grund fr Formatierungs- Schreib- und Lesefehler.3. Wer seine 'nackten' Disketten mit dem Etikett nach oben auf den Tisch legt, ist sich anscheinend nicht darber im Klaren, da der Kopf von unten zugefhrt wird. Man riskiert also eine Gefhrdung der wichtigen Datenseite durch Staub, Schmutz und Kratzer. Nach Benutzung sollten Sie Ihre Disketten stets sofort in die dazugehrigen Papiertaschen zurckstecken (Merke: man mu auch mal zurckstecken knnen!). 4. Eine Diskette ist schnell 'gestorben', wenn sie auf dem versehentlich auf Scheren, Kugelschreiber, Schraubenzieher wird. Alle diese Gegenstnde knnen magnetisch sein und die Datenstrukturen auf der Diskette zerstren. Meistens liest noch ERROR144 oder ERROR164. Arbeitstisch gelegt o.. empfindlichen man dann nur

5. Machen Sie von allen wichtigen Disketten SOFORT nach Erhalt bzw. Fertigstellung Sicherheitskopien (auf neudeutsch: Back-Ups) !!! Das ist in jedem Falle billiger als neu kaufen oder neu tippen. Auto im Diskettenstation Sie Ihre Wenn Transportsicherung: 6. transportieren, sollten Sie stets die Pappscheibe in den Diskettenschacht stecken, die sich bei Lieferung Ihres Laufwerks darin befand. Andernfalls kann es durch Erschtterungen zu Beschdigungen oder zum Verstellen der Justierung des Kopfes kommen. Sollte die Pappe bereits im Mll gelandet sein, knnen Sie stattdessen auch eine (alte) Diskette verwenden. - Auch wenn Sie normalerweise alle Kartons wegwerfen: die 810-Originalverpackung sollten Sie unbedingt aufheben, da sie bei greren Transporten optimalen Schutz vor Erschtterungen bietet. 7. Auer pfleglicher Behandlung bedrfen die Disketten selbst brigens herstellerseitig keiner Wartung. Ihren Reinigungsmechanismus haben sie bereits eingebaut bekommen: er besteht aus der weichen Ftterung des sogenannten Jacketts und dem Gleitmittel, mit dem die Auskleidung getrnkt ist.

19

SCHNITTSTELLEN-PROGRAMMIERUNG TEIL 1: DIE STEUERKNPPEL-ANSCHLSSE Die verschiedenen Zusatzgerte, die es mittlerweile fr den ATARI gibt, lassen schon ahnen: an die vier Buchsen vorne unter der Tastatur lassen sich weit Dinge mehr anschlieen als nur Steuerknppel! und Mittlerweile DruckerEPROM-Programmiergerte, So werden Harddiskschnittstellen, Antennenrotor-Steuerungen etc. angeboten, die ber die Steuerknppel-Buchsen mit dem Computer verbunden werden und deren wichtigste Eigenschaft ausnutzen: die PROGRAMMIERBARKEIT. Jede der vier Buchsen ist (unter anderem) mit vier Schnittstellenleitungen belegt, die sich in beliebiger Kombination einzeln wahlweise als TTL-kompatibler Eingang oder Ausgang programmieren lassen. Zur Steuerung dieser 16 Leitungen befindet sich im ATARI der Schnittstellenbaustein 6520 ('PIA', Peripheral Interface Adapter). Er enthlt neben zwei programmierbaren bidirektionalen 8Bit-Ports auch noch vier Steuerleitungen, die jedoch nur intern Verwendung finden. Da sich mit Hilfe der BASIC-Befehle STRIG, STICK(0) usw. die vier Buchsen nur als Eingange abfragen lassen, ist eine individuelle Programmierung der beiden Ports nur mit PEEKs und POKEs bzw. in Maschinensprache mglich. Dazu ist es wichtig, den Aufbau der PIA 6520 zu kennen (Abb.).

ADRESSLEITIINGEN

1 DATENBUS

STEUERREGISTER A rill, illiSTEUERREGISTER B ( CRB ) ( CRA )

DATENRICHTUNGSREGISTER A (DDRA)

l.1:1DATENRICHTUNGS iREGISTER B (DDRB)

PORT A (DRA)

I#kJ 1-4LA4P0RT B (DRB)

7 6 5 4 3 2 1 0 Ein-/Ausgangsbits - Port A-

7 6 5 4 3 2 1 0 Ein-/Ausgangsbits - Port B -

Wie Abb.. zeigt, besteht der PIA-Baustein aus zwei identischen Blcken, von denen sich jeder aus drei Registern zusammensetzt: 1. Steuerregister CR 2. Datenrichtungsregister DDR 3. Ein-/Ausgabe-Datenregister (Port) DR

20

Wie oben erwhnt lt sich bitweise festlegen, welche Leitungen der beiden Ports als Ausgang und welche als Eingang arbeiten sollen. Dies geschieht mit Hilfe der Datenrichtungsregisters (DDRA bzw. DDRB). Nullen legen in diesem Register fest, da die entsprechende Bits der Ports (DRA bzw. DRB) als Eingnge geschaltet sind. Dies ist z.B. bei der Abfrage der Steuerknppel der Fall. Demgegenber sind alle PortLeitungen als Ausgnge programmiert, deren zugehrige SteuerregisterBits Einsen enthalten. Noch unklar? Hier ein Beispiel: Bit Nr. DDRA 7 6 5 4 3 2 1 0 0 0 0 0 1 1 1 1

Indem wir in das Datenrichtungsregister von Port A den Wert OF (=0000 1111) schreiben, haben wir die vier hherwertigen Bits als Eingnge und die vier niederwertigen Bits als Ausgnge definiert. Dieser Zustand bleibt solange erhalten, bis das Programm bzw. ein PokeBefehl eine Umdefinition vornimmt (oder jemand unseren ATARI ausschaltet). Die Datenrichtungsregister sind also ber Adressen zu erreichen. Die Ports und Steuerregister auch. Doch nun zu einer Besonderheit der PIA 6520: um Adreleitungen und Speicherplatz zu sparen, HAT DER PORT JEWEILS DIESELBE ADRESSE WIE SEIN DATENRICHTUNGSREGISTER! Wie das mglich ist? Durch einfaches Umschalten. Der 'Schalter' dazu befindet sich im jeweiligen Steuerregister (CR): Bit 2 (das dritte Bit von rechts) gibt an, auf welches Register die Weiche gestellt ist. Enthlt dieses Bit den Wert 0, wird das Richtungsregister angesprochen. Enthlt es eine Eins, erreicht man unter derselben Adresse den Port. Dazu wieder ein Beispiel: Bit Nr. 7 6 5 4 3 2 1 0 0 0 0 0 OX00 CRB X=0 : $D301 ist die Adresse von DDRB X=1 : $D301 ist die Adresse von DRB -

Wie aus Tabelle .. zu entnehmen, hat das Steuerregister A die Adresse $D303 und das Datenrichtungsregister A bzw. Port A die Adresse $D301. Weist man $D303 den Wert $00 zu, erreicht man unter $D301 das Datenrichtungsregister B und kann dort bitweise die Eingnge bzw. Ausgnge festlegen. Schreibt man dann in die Zelle $D303 den Wert $04 (= 0000 0100), spricht man unter der Adresse D301 an Port B angelegte Signale einlesen bzw. Bitmuster dorthin aussenden. In BASIC sieht das folgendermaen aus: 10 20 30 40 50 10 20 30 40 50 REM PORT B ALS EINGANG POKE 54019,48:REM DDRB ANWAEHLEN POKE 54017,0:REM ALLE BITS = EING. POKE 54019,52:REM PORT B ANWAEHLEN PRINT PEEK(54017): REM PORT B LESEN REM PORT B ALS AUSGANGPOKE 54019,48:REM DDRB ANWAEHLEN

POKE 54017,255:REM ALLE BITS = AUSG. POKE 54019,52:REM PORT B ANWAEHLEN POKE 54017,N:REM BITMUSTER N AUSGEBEN

WICHTIG: Es gilt zu beachten, da beim Setzen der Steuerregister anstelle von $00 und $04 die Werte $30 bzw. $34 zu verwenden sind (dezimal 48 bzw. 52). Der Grund dafr liegt darin, da andere SteuerregisterBits fr die

21

intern verwendeten PIA-Steuerleitungen zustndig sind. Um die korrekte Arbeitsweise des Betriebssystems sicherzustellen, mu der Zustand dieser Bits erhalten bleiben.

Dasselbe Beispiel in ASSEMBLER: 05 *40600 10 DDRB=$D301 15 CRB =$D303 20 ; 25 ;PORT B ALS EINGANG 30 LDA $30 35 STA CRB; DDRB ANWAEHLEN 40 LDA $00 45 STA DDRB; ALLE BITS = EING. 50 LDA $34 55 STA CRB; PORT B ANWAEHLEN 60 LDA DDRB;PORT LESEN 65 ; 70 ;PORT B ALS AUSGANG 75 LDA $30 80 STA CRB; DDRB ANWAEHLEN 85 LDA $FF 90 STA DDRB; ALLE BITS = AUSG. 95 LDA $34 96 STA CRB; PORT B ANWAEHLEN 97 LDA $AA 98 STA DDRB; Z.B. DAS BITMUSTER $AA AUSSENDEN 99 .END ( Bei Maschinen-Unterprogrammen, die von BASIC aufgerufen werden sollen: PLA und RTS nicht vergessen !!! - Siehe ATARI BASIC Reference Manual) Die Programmierung kann natrlich auch mit gemischten Ein- und Ausgngen erfolgen. Zum Lesen bzw. Schreiben der Ports mu dann softwaremig eine entsprechende Maskierung der Bytes vorgenommen werden. Zum LESEN der Ports lt sich die Maskierung verwenden, die im Betriebssystem fr die Abfrage der Steuerknppel vorgesehen ist. So kann man z.B.in BASIC mit STICK(3) den Zustand der vier hherwertigen Bits von Port B ($D301) abfragen. Die entsprechenden Adressen finden Sie im Kapitel "DIE MEMORY MAP oder WAS LIEGT WO?". Nachdem wir nun wissen, wie die Ports zu programmieren sind, interessiert uns deren Verdrahtung mit den Anschlubuchsen: siehe Abb. 0

Ute 8ir4(1 11 41 2

fli

6444 4 51 3

OtT4. B4TS 131T6 8177 \1114 o114146 1 2 3 4 56 7 8 9

7 8 9 6 0000

4 riolt Grid. (t1cts2-)-

+Svott

1 I

Port A: Buchse 1 u. 2 Port B: Buchse 3 u. 4

Geitet

BUCHSE 1 (3)

BUCHSE 2 (4)

22

Die Adressen der PIA-Register: Hex. 1 Dez. DRA/DDRA DRB/DDRB CRA CRB D300 D301 D302 D303 54016 54017 54018 54019

Bauanleitungen fr in diesem Buch Sie An anderer Stelle finden Schnittstellen, die natrlich auch als Beispiele fr eigene Entwicklungen dienen knnen. BRIGENS.... Die passenden Stecker finden Sie in diesem Buch unter 'STECKER UND KABEL'.

!!! WICHTIG !!!

!!! WICHTIG !!!

Fr den Anschlu eigener Hardwarezustze an die Steuerknppel-Buchsen ist unbedingt zu beachten, da die interne 5 Volt-Stromversorgung des ATARI-Computers hchstens mit 50 mA belastet werden darf " 1 "" 1 Desweiteren unterscheiden sich Port A und Port B in ihrer internen und externen Beschaltung (intern: siehe Datenblatt 6520 v. Commodore, Synertek oder Rockwell - extern: siehe unten).

6520 Port A.

220 Ohm i'

1

0 Buchse 4

1+2

I 3....5Vo lt mem& 10,001F Masse 4,7 k 6520 Port B4

220 Ohm t o 8 :5001gF Masse Buchse 3+4

23

SCHNITTSTELLEN-PROGRAMMIERUNG TEIL 2: DIE DREHREGLER-ANSCHLSSE

Was die Besitzer der meisten anderen Computer teuer zukaufen mssen, ist im ATARI bereits eingebaut: eine Analog-Schnittstelle nebst ab Werk dazugehriger Software! Neben den 16 digitalen Ein-/Ausgabeleitungen befinden sich an den Anschlubuchsen auch die acht A/D-Wandler-Eingnge zur Abfrage der Drehregler (Paddles). Eigentlich zu deren Digitalisierung gedacht, damit Sie bei diversen Spielen einen flotten Schlger schwingen knnen, eignen sie sich auch fr zahlreiche andere Anwendungen. Siehe unser Beispiel 'Helligkeitsregelung'. Um die Paddle-Ports optimal nutzen zu knnen, hier eine kurze Funktionsbeschreibung, gefolgt von ein paar kleinen Beispielen. Als Eingangsgre werden Widerstnde gemessen. Denn in den Drehreglern steckt natrlich nichts anderes als ein regelbarer Widerstand (Potentiometer) von jeweils 1 MOhm. Im Inneren des ATARI ist mit jedem angeschlossenen Drehregler-Widerstand ein Kondensator in Serie geschaltet. Nach vorheriger Entladung ber einen Transistor wird er im 50Hz-Takt aufgeladen - wie schnell dies passiert, hngt von der Gre des eingestellten Widerstands ab. Der in das entsprechende POT-Register geschriebene Wert zeigt an, wieviele Bildschirmzeilen es gedauert hat, den Kondensator bis zur vorgegebenen Schwellenspannung aufzuladen. Dieser Wert liegt - je nach Einstellung des Drehreglers - zwischen Null (Regler ganz nach rechts gedreht) und 228 (Regler am linken Anschlag). Aufgrund von Fertigungstoleranzen der Paddles kann der tatschlich einstellbare Maximalwert jedoch auch unterhalb von 228 liegen. Je hher der Widerstand, desto grer ist die Zahl, die wir im dazugehrigen POT-Register finden.

Abb.eg: Innenleben eines Drehreglers

1\I 6\0

15019

+nen Pot eDie Abfrage der Zahlenwerte erfolgt entweder mit Hilfe der BASIC-Funktionen PADDLE(0) - PADDLE(7) oder durch direktes Lesen der Adressen von POTO bis POT7: Hex. POTO POT1 POTZ POT3 POT4 POT5 POT6 POT7 $D200 $D201 $D202 eD203 D204 $D205 $D206 $D207 Dez. 53760 53761 53762 53763 53764 53765 53766 53767

Bei der Verwendung von Player/Missile-Objekten sollte man brigens darauf achten, da die POT-Werte nicht kleiner als 40 und nicht grer als 200 werden knnen, da sie andernfalls nicht mehr auf dem Bildschirm zu liegen kommen.

24

An den Anschlubuchsen liegen die Paddle-Eingnge von links nach rechts in aufsteigender Reihenfolge (Abbe):

PADDLE Nr.., 10 0 0

0A

ellr

. . 4

1 .11 . . . .1.0 0 0

2,3

4, s

6?4 4 .0 0 0

11

8000 2 s .

ei)

(D

(g)

(!)

e

auflsende und hher genauere wesentlich gibt es Natrlich Analog/Digital-Wandlungsvefahren, als das im ATARI verwendete Methode. Aber ganz abgesehen von Kosten/Nutzen-berlegungen halte man sich vor Augen, da Versa (Hersteller: beispielsweise auch das Grafik-Tablett VERSAWRITER Computing/USA) an die Drehregler-Eingnge angeschlossen wird. Dennoch bietet dieses einfache Gert (2 Potentiometer/etwas Kunststoff - der Rest ist Software) eine erstaunliche Genauigkeit in der Reproduktion von Abbildungen aller Art. bei es wenn lernen kann: Was man vom Design des VERSAWRITER Eigenentwicklungen ebenfalls auf Genauigkeit ankommt, ist wegen der relativ groen Toleranzen der Paddle-Eingnge unbedingt die Mglichkeit des Abgleichs auf einen Bezugspunkt vorzusehen.

25

WISSENSWERTES BER EPROMS

WARUM BRAUCHE ICH EPROMS?

Fr den Fall, da Unklarheit darber bestehen sollte, warum die EPROMs so ntzliche Bausteine fr Ihren ATARI-Computer sind, hier eine kurze Erluterung. Grundstzlich unterscheidet man in einem Computer-System ja zwischen zwei Arten von Speichern: 1. R A M Der Schreib- Lesespeicher (RAM) dient zur Aufnahme von Daten,. die sich ,whrend des Programmablaufs ndern. Einen Teil des RAM verwaltet das System selbst, um fr den Betrieb wichtige Daten abzulegen, wie z.B. Graphik-Modus, Timer, Tabellen, Stapelregister etc. Der Rest steht dem Anwender zur Verfgung, um alle mglichen daten abzulegen: Programmbefehle, Tabellen, Bildpunkte fr graphische Darstellung auf dem Bildschirm etc. Eines haben alle RAM - Speicherzellen gemeinsam: beim Ausschalten des Computers geht ihr Inhalt verloren. Um sich das mhsame Neu-Eintippen von Programmen zu ersparen, wurde daher die Mglichkeit der Speicherung auf Cassette bzw. Diskette vorgesehen. 2. R 0 M Der zweite Speicher-Typ zeichnet sich dadurch aus, da seine Daten bei Ausschalten des Computers nicht verloren gehen: das ROM ist ein nichtflchtiger Nur-Lese-Speicher (Read Only Memory). Sein Inhalt enes ROMs kann whrend des Betriebes nicht gendert werden; dafr steht er jedoch beim Einschalten des Computers sofort zur Verfgung. Als ROM ist z.B. das Betriebssytem (OS) Ihres ATARI-Computers gespeichert, und natrlich die zahlreichen Steckmodule mit BASIC, PILOT und den vielen spannenden Spielen. Wir sind es gewohnt, diese Module einfach in unseren Rechner hineinzustecken, einzuschalten und das jeweils enthaltene Programm sofort bertriebsbereit vor uns zu haben - ohne lange Ladezeiten. WAS STECKT NUN IN SO EINEM ROM-MODUL ? Sie sich die Mhe machen, ein Zum besseren Verstndnis sollten ROM-Steckmodul aufzuschrauben. Sie brauchen nur die Kreuzschlitz-Schraube zu entfernen und die Blechkappe abzunehmen: Sie sehen nun eine kleine Platine. Neben einem Kondensator befinden sich darauf ein. oder zwei 24-polige IC-Bausteine. Dies sind die ROMs. Ihre Anschlsse teilen sich folgendermaen auf: 1. 2. 3. 4. Zwei Stromversorgungsleitungen Acht Datenleitungen 10 bzw. 11 Adressleitungen (je nach Speichergre) Der Rest wird fr Auswahlleitungen verwendet

26

A 0

DO

Al0 (All)CS

D7

Abbildung@ Funktionsprinzip eines ROMs

= Mit Hilfe der 10 bzw. 11 Adressleitungen lassen sich im Binrsytem 2 2096 bzw. 2 = 4192 speicherzellen adressieren, also 2 kByte bzw. 4 kByte (1 kbyte = 1024 Bytes). Da z.B. das ATARI-BASIC-ROM zwei 4 kByte-ROMs beinhaltet, belegt es 8 kByte vom adressierbaren Speicherbereich. Da die Adress- und Datenleitungen der einzelnen Speicherbausteine (sowohl RAM als auch ROM) parallelgeschaltet sind, mu der jeweilige Baustein mit Hilfe von Auswahlleitungen aktiviert werden - andernfalls wrden alle RAMund ROM-Bausteine ihre Daten auf den Datenbus legen, was 1. zu einem undefiniertem Signal und 2. zur berlasung der Bustreiber fhren wrde. Die Auswahl kann mit Hilfe einer einzigen Leitung oder durch eine bestimmte Bit-Kombination mehrerer Leitungen erfolgen. Die beiden ATARI-BASIC-ROMs besitzen z.B. jeweils zwei Auswahlleitungen, die mit CS bezeichnet werden. Mit zwei Leitungen lassen sich 2 = 4 verschiedene Bausteine auswhlen die Dekodierung erfolgt intern in den ROMs; daher sind alle anderen Leitungen der ROMs ausnahmslos parallelgeschaltet. Da die EPROMs nur ber eine einzige Auswahlleitung verfgen, mu man fr eine externe Dekodierung sorgen. Zu diesem Zweck bekommen Sie bei dem Hndler, bei dem Sie Ihr EPROM-Programmiergert gekauft haben, spezielle EPROM-Steckmodule mit einem entsprechenden Dekodierbaustein.

ROMS ODER EPROMS? Die ROM-Bausteine Ihres ATARI-Systems lieen sich auch durch kompatible EPROMs ersetzen. Warum hat ATARI ROMs anstatt EPROMs verwendet? Dafr gibt es zwei Grnde: 1. In greren Stckzahlen (schon ab ca. 1000 Stck.) sind ROMs billiger als fest EPROMs. Ihr Inhalt wird bereits bei der Herstellung als Maske einprogrammiert. 2. Bei der Mehrzahl der Anwender drfte wohl kaum der Wunsch bestehen, das Bertriebssytem, BASIC oder irgendwelche Spiele zu lschen, um sie neu zu IST DIE programmieren, z.B. in modifizierter Form. ABER GENAU DIES CHARAKTRERISTISCHE EIGENSCHAFT DER EPROMS: ihr Inhalt lt sich mit Hilfe von speziellem UV-Licht LSCHEN (EPROM heit: Erasable Programmable ROM). Anschlieend kann man sie mit anderen Daten beschreiben. Da dies auf eine vollkommen andere Weise geschieht als z.B. bei den RAM-Bausteinen, bentigt man dazu ein spezielles Programmiergert. Mittlerweile gibt es solche Gerte ('EPROM-Burner') bereits auch speziell fr die ATARI-Computer; der Anschlu erfolgt meist ber die Steuerknppel-Buchsen.

27

WIE WIRD EIN EPROM PROGRAMMIERT? Es sei vorausgeschickt, da sich die folgenden Betrachtungen auf die EPROMs TMS2516/32 von Texas Instruments beziehen; grundstzlich gelten sie jedoch auch fr Fabrikate anderer Hersteller. Wenn Sie ein EPROM kaufen, ist es unprogrammiert. Alle Bits befinden sich im Zustand log.l. Schaut man sich mit dem EPROM-Programmiergert ein leeres EPROM an, findet man daher in allen Worten den Hexadezimalwert 'FF'. Aus diesem Grunde macht der LEERTEST (L) der Betriebssoftware nichts anderes, als alle Speicherzellen daraufhin zu berprfen, ob sie den Wert 'FF' enthalten. Fr jedes Bit enthlt ein EPROM eine Feldeffekt-Transistor-Zelle, deren Gate-Anschlu 'in der Luft hngt' (floating). Im Normalen (unprogrammierten Zustand wird damit eine log.1 reprsentiert. Bringt man mit Hilfe der Programmierung eine Ladung auf das Gate einer Bit-Zelle, schaltet der Transistor durch; es wird eine log.9( dargestellt. Um ein EPROM mit der gewnschten Information zu versehen, mssen also die entsprechenden Bits der angesprochenen Bytes auf log' programmiert werden. Dies geschieht folgenderman: 1. Im EPROM, da sich auf dem Stecksockel des EPROM-Programmiergertes befindet, wird ein Wort adressiert. 2. Die Chip-Auswahlleitung CS (nur 2616) wird auf log.g( gesetzt, die Programmierspannung Vpp (25 Volt) wird durchgeschaltet. 3. Die zu programmierenden Daten werden ber die Schnittstelle parallel auf die Datenleitungen des EPROMs gelegt. wird ein 50 4. Nach Stabilisierung der Daten- und Adressensignale Millisekunden langer TTL-Impuls (log.1 fr 2516, log.0 fr 2532) zum Programmieranschlu PGM gesendet. Alle Bits, die log.1 beibehalten sollen, bleiben unverndert; alle brigen Bits werden durch diesen Vorgang auf log.0 programmiert. Um den gesamten Detailablauf der Programmierung brauchen Sie sich in der Regel nicht zu kmmern, da dies die Steuersoftware Ihres EPROM-Programmiergertes fr Sie bernimmt. Auch hardwaremig werden Sie weitgehend entlastet: die Programmierspannung wird meist mit Hilfe eines DC/DC-WAndlers erzeugt. Die Schritte 1 bis 4 lassen sich fr smtliche Adressen des EPROMs durchfhren. Bei der Programmierung von Blcken bzw. kompletten EPROMs wird die Adresse durch einen Adress-Zhler a atomatisch erhht. Nach vollendeter Programmierung nehmen die meisten EROM-Burner automatisch einen Vergleichstest zwischen der Vorlage und dem frisch programmierten EPROM vor (Verify). An anderer Stelle in diesem Buch finden Sie eine Beschreibung des EPROM-Programmiergertes PROGRAMMER 400/800 und der Mglichkeiten, die sein Betriebssystem bietet.

28

WIE LSCHT MAN EIN PROGRAMMIERTES EPROM?

Die bei manchen Programmiergerten mgliche Einzelbyte-Programmierung kann auch dazu benutzt werden, ein bereits programmiertes Byte zu korrigieren. Wie bereits erlutert, knnen jedoch nur Einsen auf log.0 programmiert werden, jedoch nicht umgekehrt. Einsen lassen sich nur durch Bestrahlung mit UV-Licht erzeugen. Dies lt sich natrlich nicht bitweise, sondern nur fr ein KOMPLETTES EPROM durchfhren. der in von EPROMs Vorteil der liegt erwhnt Wie bereits mit Quarzfensters des Bestrahlung Durch Wiederverwendbarkeit. ultraviolettem Licht fliet die Ladung der auf log.0 programmierten Transistorzellen wieder ab, soda alle Bits wieder den Wert log.1 annehmen (alle Worte = hex FF). Hierzu ist ein ozonfreier Strahler mit einer bestimmten Wellenlnge (ca. 253 nm) erforderlich. 'Heimsonnen' eignen sich nicht !!! Die minimale Strahlendosis ergibt sich aus (UV-Strahlungsdichte x Lschzeit) und betrgt laut Texas Instruments 15 Wattsekunden/cm . Mit einer typischen filterlosen UV-Lampe lscht man ein EPROM daher in ca. 21 Minuten: / /( 1 x mW 12 cm 60 = 20,8 Min. /

mWs 15000 ----cm

loh

Fr Lschlampen mit anderer Strahlungsdichte sowie andere EPROM-Fabrikate ergeben sich entsprechend andere Zeitwerte. Angaben dazu finden Sie in den Datenblttern der EPROM- bzw. Lschlampenhersteller. Im Zweifelsfalle ist es sinnvoller, lieber etwas lnger als zu kurz zu belichten - andernfalls kann es zu Programmierungsfehlern oder erst spter auftretenden Bit-Fehlern kommen. Grundstzlich gilt: je strker die Leistung der Lschlampe, desto krzer die Lschzeit. Es ist jedoch zu beachten, da eine zu starke Strahlung das EPROM aufgrund der Hitzeentwicklung schdigen kann. Beim (nicht zu empfehlenden) Selbstbau sollte weiterhin darauf geachtet werden, da der Abstand zwischen EPROM und Lampe ca. zwei bis drei cm betrgt. ACHTUNG: Haut und Augen sind vor der UV-Strahlung der Lschlampe zu schtzen. Vor ffnen das Lschgert ausschalten bzw. ein Modell mit automatischer Abschaltung bei ffnung des Deckels benutzen!

29

EIN PAAR TIPS ZUM UMGANG MIT EPROMS

1. Bitte denken Sie daran, da EPROMs als MOS-Bauelemente empfindlich gegen elektrostatische Aufladung sind. Vermeiden Sie es mglichst, die Anschlsse der EPROMs mit den Fingern zu berhren, da auch der menschliche Krper stets einer mehr oder weniger groen statischen Aufladung unterliegt. Dies hngt weitgehend von Umgebungseinflssen ab (Luftfeuchte, Teppich- und Schuhsohlenmaterial, Kleidung etc.) Unbenutzte EPROMs vewahrt man entweder in einer antistatischen .Rhre oder steckt sie auf antistatischen Schaumstoff (nicht Styropor!) auf. Ist beides nicht zur Hand, hilft eine Blechschachtel oder Alu-Folie. 2. Kleben sie die Quarzfenster Ihrer programmierten EPROMs mit einem lichtundurchlssigen Aufkleber (Papierwarengeschft) zu. whrend ein auf diese Weise geschtztes EPROM seine Daten ber viele Jahre hinaus behlt, kann direkte Sonnenstrahlung bereits nach einer Woche zu Datenverlust fhren. Um Verwechslungen zu vermeiden ist es sinnvoll, den Aufkleber mit einer Programmbezeichnung zu kennzeichnen. 3. Die Zuverlssigkeit lt sich erheblich steigern, wenn man alle EPROMs auch vor der Erstprogrammierung lscht. 4. Lassen Sie Ihre EPROMs nach der UV-Lschung erst abkhlen, bevor Sie mit der Neuprogrammierung beginnen. 5. Sorgen Sie beim Betrieb der EPROMs fr ausreichende Khlung, da bei niedriger Betriebstemperatur der Leckstrom klein bleibt. Auch die offene Bauweise der lieferbaren EPROM-Steckmodule kommt dieser Forderung entgegen. des Sockel EPROMs in den Einstecken der 6. Achten beim Sie EPROM-Programmiergertes bzw. in die Leer-Platinen darauf, da dies richtig herum geschieht. Bei vielen EPROMs ist Pin 1 gekennzeichnet. Andernfalls richten Sie sich nach der Kerbe an einer der Schmalseiten: //ellemlsme -

(5

7. Programmieren Sie mit Ihrem EPROM-Programmiergert nur solche EPROMs, fr die es entwickelt wurde.

30

ANSCHLUBELEGUNG VON ROMS UND EPROMS

A7 124, A6 2 A5 3 A4 4 A3 5 TMS2516JL A2 6 7 Al AO 8 D1 9 D2 D3 11 GND 12, A7 1 A6 2 AS 3 A4 4 A3 5 A2 6 Al 7 AO 8 D1 9 D2 10 D3 11 GND 12

24 23 22 21 20 19 18 17 16 15 14 13 24 23 22 21 20 19 18 17 16 15 14 13

VCC A8 A9 Vpp Eg A10 PD/PGM D8 D7 D6 D5 D4 VCC A8 A9 Vpp PD/PGM A10 All D8 D7 D6 D5 D4

A7 A6 2 A5 3 A4 4 A3 5 A2 6 Al 7 AO 8 D1 9 D2 D3 L 1 GND 12 A7 1 A6 2 A5 3 A4 4 A3 5 A2 6 Al 7 AO 8 Dl 9 D2 10 D3 11 GND 12

2316B (z.B. in ATARI 810)

24 23 22 21 20 19 18 17 16 15 14 13 24 23 22 21 20 19 18 17 16 15 14 13

VCC A8 A9 CS3/Uff CS1/ter A10 CS2/Z3/ D8 D7 D6 D5 D4

TMS2532JL

ATARI-ROM 4KBYTE (IM MODUL)

VCC A8 A9 CS/CS CS/CS A10 All D8 D7 D6 D5 D4

Erklrung der Abkrzungen: A(N): ADRESSEN-EINGNGE D(N): DATEN-AUSGNGE,BEI EPROMS AUCH EINGNGE BEIM PROGRAMMIEREN PD/PGM: POWER DOWN/PROGRAM Vcc: VERSORGUNGSSPANNUNG ( +5 VOLT) Vpp: PROGRAMMIERSPANNUNG (+25 VOLT) GND: GROUND (MASSE) CS: CHIP-SELECT (AUSWAHL), AKTIV LOG.1 rg: CHIP-SELECT (AUSWAHL), AKTIV LOG.0 CSx/CSx:CHIP-SELECT, PROGRAMMIERBAR (d.h. bei der Herstellung des ROMs wird festgelegt, ob der Anschlu aktiv 0 oder 1 ist) B VERGLEICHSTYPEN (Auszugsweise, o. Gewhr) 1. FR TMS2516JL: HN462716 2716 MKB2716 MBM2716 uPD2716 SY2716HITACHI INTEL MOSTEK FUJITSU NEC SYNERTEC

2. FR TMS2532JL:TMS2532 MCM2532 NMC2532 HN462532 MSM2532 INTEL MOTOROLA NATIONAL SEMICONDUCTOR HITACHI OKI

31

UMBAU EINES ATARI-ROMMODULS ZUR AUFNAHME VON EPROMS Wer fr seinen ATARI ber ein EPROM-Programmiergert verfgt, mchte die 'selbstgebrannten' Speicherbausteine natrlich auch in seinem Computer arbeiten lassen. Sollten keine speziellen EPROM-Le ermodule aufzutreiben sein, bietet es sich an, zu diesem Zweck ein ATARI-ROM-Modul zu 'schlachten'. Bestimmt findet sich dazu irgendein Spiel, das nach hundertmaligem Gebrauch etwas langweilig geworden ist. Also: ATARI-ROMs raus, EPROMs rein. Allerdings mu auf der Platine zuvor noch eine kleine nderung vorgenommen werden. Wie an anderer Stelle bereits erwhnt, verfgen die von ATARI verwendeten ROMs ber interne Chip-Auswahlleitungen und die EPROMs nicht. Daher mssen wir dafr sorgen, da extern erkannt wird, welcher der beiden Bausteine angesprochen werden soll. (Will man nur ein einziges EPROM 2532 einsetzen, ist keinerlei Modifikation notwendig auch ist es egal, in welchen der beiden Sockel es gesteckt wird).-

Somit besteht die nderung darin, da wir die zu den Sockeln fhrenden Auswahlleitungen CS1 und CS3 an geeigneter Stelle unterbrechen und einen Dekoder zwischenschalten. Dazu eignet sich z.B. der 2-Bit-Binrdekoder 74LS139 (siehe Abb(D).

Anschlubelegung des 74LS139 (Texas Instruments u.a.):

Auswahl

Ausgnge

G = Freigabesignal

1G

1A

1B

1Yo

1Y4

1Y1

1Y3

Masse

Auswahl

Ausgnge

32

Wegen des geringen Preises soll es uns nicht weiter stren, da wir nur die eine Hlfte des Bausteins benutzen. Die beiden Leitungen, auf die es ankommt, fhren zu den ROM-Anschlssen 20 und 21 (siehe Abb.):

- VOR DEM UMBAU -

f.1 CS ROM (A601)

I1 1 Mutterplatine

ICS'/I > cs cs

1 1 1

10

ROM (A602) ROM-MODUL

+5 Volt (Vcc)

- NACH DEM UMBAU 1

1=S11 CS lt . 20 S' EPROM 2532 (A601)

Mutterplatine

HeAG1 1 1

I

B

74LS139

1

/0 ---ii CS '

EPROM 2532 (A602) ROM-MODUL

Abbildung Blockschaltbild des Modul-Umbaus

Das EPROM 2532 verfgt ber nur eine Chipauswahlleitung; der Dekoder sorgt dafr, da jeweils nur eines der beiden EPROMs angewhlt werden kann, je nach Pegel der beiden Auswahlleitungen von der Mutterplatine. Der mitgigekennzeichnete Anschlu 21 ist beim 2532 die PD/PGM-Leitung; sie mu zum Lesen der Bausteine auf log.1 liegen und wird daher fest mit +5 Volt verbunden. Alles, was Sie zur Umrstung Ihres ROM-Moduls brauchen: Schraubenzieher, Seitenschneider, scharfes Messer, Ltkolben und etwas Ltzinn. Oder einen Freund der dies alles hat. Wenn Sie sich genau an die nun folgenden Schritte halten, kann eigentlich garnichts schiefgehen.

33

Beginnen wir also mit dem Umbau des ROM-Moduls: 1. Schrauben Sie das Modul-Gehuse auf und nehmen Sie die Platine heraus (Achtung, nichts zerbrechen!). 2. Hebeln Sie die beiden ROMs mit dem Schraubenzieher aus ihren Fassungen. Sollte es sich um ein Spiel mit nur einem ROM handeln, lten Sie einen zweiten Sockel ein. 3. nderungen auf der Vorderseite (Bestckungsseite, Abb.): 3.1. Trennen Sie mit dem Messer bei vorsichtig die Leiterbahn auf, die Pin 20 von A601 mit Pin 20 von A602 verbindet. 3.2. Verbinden Sie Pin 21 von A602 mit Vcc, indem Sie mit dem Messer auf der ueren breiten Leiterbahn bei etwas Ltstoplack entfernen und von dort eine Ltbrcke zur Ltstelle von Pin 21 flieen lassen.

: .". .... ..... s

.

-.0, / ..

- ..... 1tO 0 0

O

10

Mag

0 . 4

A6o1

Bes t ck u ngs sei te

Abbildung@

Abbildung

4. nderungen auf der Rckseite (Ltseite, Abbe:4.1 Unterbrechen Sie die gezeigten Leiterbahnen beiOund0

4.2. Bereiten SieObis0 als Ltstellen vor, indem Sie etwas frisches Ltzinn auftragen (ggf. vorher mit dem Messer Ltstoplack entfernen).

34

5. Schneiden Sie sich nun sechs ca. 60 mm lange Stcke dnner isolierter Litze zurecht. Lten Sie je eines an die in Abb.egezeigten Anschlsse des 74LS139. Die Pins 1 und 2 mssen verbunden werden. 6.Auf der ROM-Platine ist zwischen den beiden 24-poligen Sockeln genug Platz, da Sie dort das IC mit der beschrifteten Seite nach unten auf die Platine kleben knnen. Ein Tropfen Alleskleber gengt. Die Kerbe des ICs soll dabei zur oberen Kante der Platine zeigen. Die genaue Positionierung geht aus Abb.le hervor.

1.60 wi tt,

Abbildung(gp

Abbildung

7. Nun mssen Sie noch die Litzen 0 bis mit den gleichlautend gekennzeichneten Ltpunkten auf der Platinen-Rckseite verbinden, also mit usw. Dazu werd en die Litzen zuerst nach Augenma auf die jeweils passende Lnge gekrzt, am Ende ca. 2 mm abisoliert und mit Ltzinn benetzt. Die Dr ate lassen sich dann ohne langes 'Schmoren' mit der Platine verlten.

0

omit

0

8. Nachdem Sie alle Verbindungen (und Unterbrechungen) nochmals sorgfltig berprft haben, knnen Sie Ihre EPROMs einsetzen und die Platine testen. DAS EPROM MIT DEM HHEREN ADRESSBEREICH KOMMT IN DEN SOCKEL A601. Bei Betrieb ohne Gehuse ist unbedingt darauf zu achten, da die Platine mit der Ltseite nach vorne (zur Tastatur zeigend) in den Modulschacht des Computers gesteckt wird. 9. Zum Schutz vor mechanischen Beschdigungen kann die Platine wieder in ihrem Gehuse montiert werden. Man sollte darauf achten, dabei keine Drhte abgerissen werden. Sicherheitshalber sollte man auch etwas Isolierband auf die Innenseite des Modul-Deckels kleben, um Kontakt mit den Anschlssen des 74LS139 zu vermeiden.

35

ZAHLENUMWANDLUNG TEILl: DIE TABELLE

,

dez. hex. dez. hex. dez. hex. dez. hex 4096 8192 12288 16384 20480 24576 28672 32768 36864 40960 45056 49152 53248 57344 61440 1 2 3 4 5 6 7 8 9 A B C D E F 256 512 768 1024 1280 1536 1792 2048 2304 2560 2816 3072 3328 3584 3840 1 2 3 4 5 6 7 8 9 A B C D E F 16 32 48 64 80 96 112 128 144 160 176 192 208 224 240 1 2 3 4 5 6 7 8 9 A B C D E F 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 1 2 3 4 5 6 7 8 9 A B C D E F

Umwandlungstabelle Beispiele: *** Umwandlung hexadez. -- dezimal *** 0090 E45F = E 4 5 F I15 80 1024 57344 Summe = 58463 dez. 00 $A9 = A ' I 9 160 169

dez.

*** Umwandlung dezimal -- hexadez. *** 58493 = hex.? 57344 (nchstkleinerer Wert in(4)) E

,

71743- 1014 (nchstkleinerer Wert in(p) ; 4 = 125 112 (nchstkleinerer Wert in(2)) 7 13 (Rest steht in(r)) D

r

$E47D

hexadez.

e.

36

ZAHLENUMWANDLUNG TEIL2: PROGRAMMBEISPIELE IN BASIC Einige Zahlenwandlungs-Anwendungen in BASIC: 10 REM DARSTELLUNG DER ZWEI BCD-WERTE EINES BYTES 20 A=INT(PEEK(1536)/16):REM BCD HIGH 30 B=PEEK(1536)-16*A:REM BCD LOW

** ****** *** ***10 REM BCD - DARSTELLUNG EINER ZWEISTELLIGEN 20 DEZIMALZAHL (Z.B. DATUM) IN ZWEI BYTES 30 POKE 1537,INT(DD/10):POKE 1536,DD-(INT(DD/10)*10)

********* **** *10 REM DEZIMAL-DARSTELLUNG EINES ZWEI-BYTE-WERTES (z.B. ADRESSE) 20 DEZ=PEEK(L0)+256*PEEK(HI)

***** *** ******10 REM UMWANDLUNG EINER DEZIMALZAHL IN EINE ZWEI-BYTE-ADRESSE 15 REM Z.B. DEZ=1536 20 HI=INT(DEZ/256):L0=DEZ-HI*256

**************10 REM RUNDUNG AUF 2 NACHKOMMA-STELLEN (DM UND - PFG.) 20 A=INT((A+5.0E-03)*100)/100

* ********* * ***10 REM DIE UMRECHNUNG IN DEZIMALZAHLEN SPAREN: 20 REM ROUTINE ZUM LADEN VON HEX-DATEN 30 REM FUER MASCHINENPROGRAMME U.A. 40 DIM HEX$(3) 50 MLPROG=1536:REM ANFANGSADRESSE Z.B. $0600 60 GRAPHICS 0:POKE 752,1 70 ? "ES WIRD MASCHINEN-CODE GELADEN":? 80 FOR ADDR=MLPROG TO MLPROG+13:REM HIER ANZAHL DER HEX-BYTES ANGEBEN 90 REM AKUSTISCHE ANZEIGE DES LADEVORGANGS 100 READ HEX$:SOUND 0,ADDR-MLPROG,10,10 110 HI=ASC(HEX$(1,1))-48 120 IF HI>9 THEN HI=HI-7 130 L0=ASC(HEX$(2,2))-48 140 IF LO>9 THEN LO=L0-7 150 POKE ADDR,HI*16+L0:NEXT ADDR 160 ? "FERTIG GELADEN.":? :POKE 752,0 170 ? "START DES MASCHINENPROGRAMMS MIT" 180 ? :? "X=USR(";MLPROG;")" 190 REM HIER DIE DATEN DIREKT IN HEX ANGEBEN 200 DATA 68,A9,FF,4C,00,06,60,A5,14 210 DATA 85,15,20,A0,06

37

'ZU FU' DISASSEMBLIEREN MIT DER OPERATIONSCODE-TABELLE Beim Assemblieren eines Programms werden bekanntlich die leicht zu merkenden (mnemonischen) Kurzbefehle in Operations-Codes umgewandelt, die von der CPU verstanden werden. Je nach Adressierungsart setzt sich ein Befehl aus ein bis drei solcher Codes zusammen. Hier ein paar Beispiele: Assembler-Code Operationscodes ROR A 6A Ein-Byte-Befehl LDA FF A9 FF Zwei-Byte-Befehl JMP 06A0 4C AO 06 Drei-Byte-Befehl Ein Disassembler tut genau das Gegenteil: er setzt die Binr-Codes, die selbst in hexadezimaler Schreibweise kaum verstndlich sind, wieder in verstndliche Assembler-Befehle um. Auch die Art der Adressierung (absolut, indirekt etc.) geht aus der zurckgewonnenen Assembler-Darstellung hervor; so gibt der rckbersetzte Befehl STA (FE),Y z.B. indirekt indizierte Adressierung unter Verwendung des Y-Registers an. Nheres dazu finden Sie in den zahlreichen Handbchern, die sich mit der 6502-Programmierung in Maschinensprache beschftigen (siehe Literaturhinweise). Fr die Untersuchung nur weniger Bytes oder oder eines gedruckten Hexdump-Listings ist ein Disassembler uninteressant. Hier hilft uns die 65o2-OPERATIONSCODE-TABELLE auf der folgenden Seite. Sozusagen ein 'Zu-Fu-Disassembler'. Das Lesen der Tabelle ist einfach: man zerlege das (hexadezimale) Byte in sein nieder- und hherwertiges Halb-Byte und schaue nach, welcher Befehl sich im Schnittpunkt der beiden Koordinaten findet. Beispiel: Fr das Byte A9 finden wir JMP 44--Assemmbler-Befehl abs 4---Adressierungsart Die Erklrung der in der Tabelle verwendeten Abkrzungen geht aus der untenstehenden bersicht hervor. Das Operanden-Format zeigt uns auch an, wieviele Bytes zum Befehl noch hinzukommen (im Falle unseres Beispiels '4C' gibt $bbaa an, da aufgrund der absoluten Adressierung noch zwei Bytes folgen).

Krzel imm abs zer imp ind abx aby zpx zpyi,x

Adressierungsart Immediate Absolut Zero-Page Impliziert Indirekt-absolut Absolut-indiziert,X Absolut-indiziert,Y Zero-Page-indiziert,X Zero-Page-indiziert,YIndiziert indirekt,X-

Operanden-Format 3e$aa $aabb $aa ($aabb) $aabb,X $aabb,Y $aa,X $aa,Y($aa,X)

i,y rel akk -_

Indirekt-indiziert,Y ($aa,Y) Relativ $aa Akkumulator A Nicht als Operationscode verwendet

38

6502 OPERATIONSCODE TABELLE

Niederwertiges HalbByte 00 BRK imp ORA i,x_

ss

.-Hherwertiges HalbBytee9BCCrel

1BPLrel

2JSRabs

3BMIrel

4RTI imp EOR i,x_

5BVCrel

6RTS imp

78BVSrel

ALDY imm

BCDBCSrel CPY imm

ECPX imm SBC i,x

-

BNErel

HUrel SBC i,y

1

ORA i,y_

AND i,x_

AND i,y_

EOR i,y_

ADC i,x_

ADC i,y_

STA i,x_

STA i,y_

LDA i,x

IDA i,y

CMP i,x

CMP i,y

2

umimm

__

__

__

__

__

34

_ -

_

_

_

_

_

_

_

_

_

BIT

-

-

-

-

-

STYzer

STYzpx

LOYzer

zer

LDY zpx LDA zpx LDX zpy

CPYzer

-

CPXzer

SBC zpx INC zpx

5

ORAzer

ORA zpx ASL zpx

AND AND zer zpx ROLzer

EORzer

EOR zpx LSR zpx

ADCzer

ADC zpx

STAzer

STA zpxSTXzpy

LDAzer

CMPzer

CMPzpx

SBCzer

6

ASLzer

ROL zpx

LSRzer

ROR ROR STX zer zpx zer

LDXzer

DECzer

DEC zpx

INCzer

8

PHP imp

CLC imp

PLP imp

SEC imp

PHA imp

CLIimp

PLA imp

SEI imp

DEY imp-

TYA imp

TAY imp

CLVimp

INY imp

CLDimp

INXimp

SEDimpSBCaby

9A

ORA immASLakk

ORAaby

AND ANDimmaby

EOR immLSRakk

EORaby

ADC imm RORakk

ADCaby-

STAaby

IDA imm TAX imp

LDAaby

CMP imm DEX imp

CMPaby

SBC

imm

-

ROLakk

-

-

TXA imp

TXS imp

TSX imp

NOP imp_

-

_

c

-

-

BIT abs

-

JMPabs

-

JMP ind . ADCabs ROR

-

STY abs STA abs STX

-

LDYabs

LDYabx

CPY abs

-

CPX abs

. 1SK abx INC

ORAabs E ASL

ORAabx ASL

ANDabs ROL

ANDabx ROL

EORabs LSR

EORabx LSR

ADCabx ROR

STAabx

IDAabs LDX

LDAabx LDX

CMPabs DEC

CMP abx DEC

SBC abs INC

-

abs

abx

abs

abx

abs

abx

abs

abx

abs

abs

aby

abs

abx

abs

abx

...

_

_

_

_

_ ..

_

_

_

_

_

39

I MONKEY WRENCH (tm) 1 * BEFEHLSBERSICHT * 1

-2CO

43 CT. A in C41 4.- CO

C C 2 CU Q1 W 4 4 -0 PCI ..4 ,-1 1:1 /... W W 4-1 ..- . < cN 14 1-1 Z I

1 ....-.. 34 0 W (1.1 4 .0 4-1 C C1 M :C , w < 03 PP in CliCU34w

4 4 4

00 ..2 Z C m

Q1 3- 414-

wx

o E .,-i .c.00

cv

.4 Q.) U--1 0 Z W

cri Ln in .0(1) 4

0 0 .0 .0 CO 0 Z

0 in w0

X

-43.1W 04 ' C4)

IC0.0

Z

4

W 0...0

..-4 E.0

00 >

Z 0 in Z in g... --i in C.T...

2X

U

0 _2 .0 GL.

03.s

u

C 00 0) C r- C W ..1- -,-1

Z. Z

C W - ,-1 0 0 0 --- 0000:z 1 tu 3.4 34 X

G cu 3-i ,....4 4 4 (I) ...I 7 0 GJ 3-4 .z cri C...1 1-1 4 -0 W U (1) 0 :0 :0 00 ,-1 4-1 E 643 .1-1 0 >t, E 4 in 34 3-1 ..2 .--1 4 N PP G 00 .0 Z W Z no 3-. C 60. 60+

U in

0 in

0.) .1

4 Z

0

cu. >

W

E cv ---- >W

IC X < Z 03 ,-1 C 4-3

1

14-1w PP3-1 0 .0 0 0

I

-0 0

3-4 W 'V C C

CU

0

0

0 UZ

4

,4

44W Z W

4 tx

- 4 00.010.0 ,-4 0 3.4 .-44 (-Ni c.1 U 0 . .-1 0 0

W W gq

4

290 THEN 32000 REM HIER STARTET IHR WERTVOLLES PROGRAMM

32000 NEW Die Funktionsweise dieser Routine: Unser BeispielSchlsselwort lautet 'SICHER'. Nachdem in Zeile 20 ein Wort

eingegeben wurde, wird zunchst die Zahl der Buchstaben kontrolliert. Hierwerden bereits alle Wrter ausgesiebt, die nicht die korrekte Lnge aufweisen. Anschlieend werden die ASCIIWerte der eingegebenen Buchstaben addiert. Stimmt die Summe nicht mit der Vorgabe (290) berein, erfolgt sptestens hier ein Sprung zu Zeile 32000. Das harmloseste, was man dort hineinschreiben kann, ist 'NEW'. Mit XIO 254,=1,0,0,"D1:" lt sich die Programmdiskette auch frisch formatieren! (Um zu verhindern, da gewitzte Leute den WriteProtectSchlitz berkleben, lt man in diesem Falle zunchst mit OPEN"Dl... berprfen, ob sich die Diskette beschreiben lt und sieht fr ERROR144 einen Absturz des Programms vor...). So tckisch knnen Programmierer sein! Wichtig ist es natrlich, da das Programm darberhinaus mit dem bereits vorgestellten List und/oder Ladeschutz versehen wird. Aus diesem Grunde ist in unserem Beispiel in Zeile 40 auch nicht die Zahl 6, sondern eine Variable verwendet worden. Falls sich jemand die Mhe machen will, Ihr Schlsselwort durch Probieren zu finden, mu er die Diskette bzw. Cassette wahrscheinlich so oft laden, bis er durch die Magnetschicht hindurchschauen kann!

DEFEKTE SEKTOREN? Fr die Besitzer der Diskettenstation ATARI 810 bietet sich darberhinaus noch eine zustzliche Mglichkeit, sich vor dem 'SoftwareKlau' zu schtzen: siehe Abschnitt 'DISK': 'SektorKiller'.

"Er hat jetzt einen ATARI. Darum lscht er seine

1

DIE MEMORY MAP ODER 'WAS LIEGT WO IM ATARI?' IFFFF

IOS - ROM (Betriebssystem) riebssystem) E000 FLOATING-POINT-ROM D800 EIN-/AUSGABE-CHIPS D000 UNBENUTZT ! A000 8 kByte RAM oder linkes ROM-Modul A000 8 kByte RAM oder rechtes ROM-Modul (nur ATARI 800) 8000

8 kByte RAM

6000

8 kByte RAM * siehe Extra-Karte Abbildung4000

** siehe Extra-Karte Abbildung

8 kByte RAM

2000

8 kByte RAM fr OS, BASIC etc.0 0 00

Abbildung: Speicher-Karte ('Memory Map') des ATARI-Computers

49

0800 ANWENDER-BOOT-BEREICH 0700 ANWENDER-RAM 0480 CASSETTEN-PUFFER 0400 RESERVE 03E2 DRUCKER-PUFFER 03C0 IOCB 7 03B0 IOCB 6 03A0 IOCB 5 , 0390 IOCB 4 0380 IOCB 3 0370 IOCB 2 0360 IOCB 1 0350 10GB.0 0340 HANDLER-ADR.-TABELLE 031A VERSCHIEDENES 030C DISKETTEN-PARAMETER 0300 VERSCHIEDENES 02E0 RESERVE 02C9 FARBWERTE 02C0 BILDSCHIRM-PARAMETER 0290 VERSCHIEDENES 0288 PARALLEL-PORTS 0270 DIVERSE OS-DATEN (Timer, DMA etc.) 0218 INTERRUPT-VEKTOREN1 ,

Abbildung Speicherkarten-Auszug von 0000 bis 0800

0200 0100

6502-STACK ZERO-PAGE F. ANWEND. 0080 ZERO-PAGE FR OS 0000

50

FFFF ANZEIGE- UND TASTATUR-HANDLER F3E4 MONITOR FOE3 CASSETTEN-HANDLER EF41 DRUCKER-HANDLER EE78 DISKETTEN-HANDLER EDEC SIO ECOO INTERRUPT-HANDLER E605 CIO E4A6 INIT.-RAM-VEKTOREN E480 SPRUNG-VEKTOREN E450 CASSETTEN-VEKTOREN E440 ' DRUCKER-VEKTOREN E430 TASTATUR-VEKTOREN E420 BILDSCHIRM-VEKTOREN E41000000 - DOFF D100 - D1FF 0200 - D2FF D300- D3FF 0400 - D4FF D500 - D5FF GTIA Reserviert POKEY PIA ANTIC Jeder Zugriff auf eine dieser Adressen bergibt die ROM-Modul-Kontrolle an das ROM-Modul Interface Reserviert OS oder RAM 53248 - 53503 53504 -53759 53760- 54015 54016- 54271 54272 - 54527 54528 - 54783 A000 - BFFF C000- CFFF RAM- oder ROM-Modul OS oder RAM 40960 - 49151 49152- 53247 5800 - 7FFF 8000 - 9FFF RAM RAM- oder ROM-Modul 22528 - 32767 32768 - 409590000 - 4FFF

Speie.herasActo W-RAM RAM- oder Selbsttest --

00000 - 20479 20480 - 22527

5000- 57FF

UNBENUTZT INIT SPECIAL H 1-+ PUT GET CLOSE OPEN E400 ZEICHENSATZ E000

0600- D7FF 0800 - FFFF

54784 - 55295

55296 - 65535

FLOATING-POINT-ROM D800 006enu +,4 ANTIC PIA D300 POKEY D200 UNBENUTZT D100 CTIA D000 von D000 bis FFFF Speicherkarten-Auszug b600

D400

Abbildung@

51

BASIC HEXDUMPSPEICHER ANSCHAUEN

ABER BERSICHTLICH!

100 REN HEXDUMP ** ABBRECHEN MIT LEERTASTE / ANHALTEN MIT CTRL-1 *** 110 DIN BYT8(10),68$(4),C0(40):60TO 290 120 8B=ASCUOM1-48 130 IF 88>9 THEN 81348-7:IF BB)15 THEN 60T0 150 140 RETURN 150 ? :? :? ** UNZULAESSIRE EIN6ABE ** 1 :? ** NUR H E X - ZAHLEN **':FOR NAIT=1 TO 500:NEXT NAIT:RUN 160 IF 00>0 THEN 60TO 150:IF RR>7 THEN 60T0 150 170 RETURN 180 IF 00>0 THEN BOTO 150 190 RETURN 200 FOR I=1 TO 4 210 OPEN #1,4,0,"KO:RET 11,AA:CLOSE 111 220 BYT$(1)=CHRt(AA): 7 CHRt(AA); 230 IF ASC(CHRt(AA))018 THEN 60TO 150:IF ASC(CHRt(AA))>57 THEN IF ASC(CHMAA1)(65 THEN 150 240 IF ASC(CHRt(AA))>70 THEN 150 250 NEXT 1:? 260 1111$=BYT$(1):60SUB 120:W=013:88$=BYT$(2):60SUB 120:RR=BB 270 814=BYT8(3):60SUB 120:DD=BB:8118=BYT$(4):60SUB 120:HH=BB 280 CC=0Q*16+RR:FF=DD*16+HH:RETURN 290 PR=0:6RAPHICS 0: 1 ' LISTE DES SPEICHERINHALTS:':? :? 'VON(HEX, VIERSTELLIG): "P8OSUB 200 300 AB=CC*256+FF:? :? IBIS(HEX, VIERSTELLIG); ';:60SUB 200 310 BC=CC*256+FF: 7 :X=0 320 FOR L=AB TO BC:X=X+1 330 C=PEEK(L):60SUB 560 340 IF 1=1 THEN 608118 400 350 605118 470 360 IF X=8 THEN X=0:609U8 600 370 60SUB 540 380 NEXT L 390 PRINT :PRINT 'FERTI6 1 :END 400 H=INT(L/4096):I=INTOL-H*40961/2561 410 K=INT((L-H*4096-1*256)116) 420 M=L-H*4096-1*256-K*16 430 0=H:60SUB 450:0=1:60SU8 450:0=K:609U8 450:0=M:605UB 450 440 ? "PRETURN 450 IF 09 THEN ? CHR$(0+55);:RETURN 470 IF C=0 THEN 7 '00';' ';:RETURN 480 D=INT(C/16):E=C-(D*16) 490 IF 09 THEN 7 CHRt(D+55); 510 IF E9 THEN ? CHREE+55); 530 ? ';:RETURN 540 IF PEEK(764)=255 THEN RETURN 550 PRINT :PRINT "ABREBROCHENI:END 560 IK=C:IF XK>154 AND XK 40 Port Status (53775) zurck. Rcksetzen des Status der seriellen Schnittstelle in SKCTL (53775).

61

+S+ POTGO D2OB 53771 Starte die POT-SCAN-Sequenz. (Siehe Abschnitt: 'Schnittstellenprogrammierung Teil 2' auf Seite24) +S+ SEROUT D2OD 53773 Serielle Schnittstelle, Ausgabe. +L+ SERIN D2OD 53773 Serielle Schnittstelle, Eingabe. 4 1 + /R.42 5Yor

/Re- - kthei-.100- 3 e4s +S+ IRQEN 53774 D2OE Ermglichen von Interrupt Request. Wird hier ausgeschaltet, arbeiten alle Tasten nicht mehr, die sonst einen Interrupt auslsen knnen (BREAK, SYSTEM RESET,...). 0 schaltet aus, 16 ein. +L+ SKCTL D2OF 53775 (562) Steuerung und Status der seriellen Schnittstelle. +L+ SKSTAT D2OF 53775 Lesen des Status der seriellen Schnittstelle. +++ Fr 53776-54015 wie 53760-53775 +++ +SL PORTA 54016 D300 Liest oder schreibt Daten von/an Steuerknppel-Buchsen 1 und 2 wenn das Bit 2 von PACTL =1. Wenn das Bit 2 =0 werden Daten geschrieben. (632 fr Buchse 1, 633 fr Buchse 2, siehe weiter vorn) +SL PORTB 54017 D301 Liest oder schreibt Daten von/an Steuerknppel-Buchsen 3 und 4. (Wie oben). (634 fr Buchse 3, 635 fr Buchse 4) +S+ PACTL 54018 D302 PORT-A-Steuerung: ----deo-60 Schaltet Kassettenmotor aus 52 Schaltet Kassettenmotor an Wird benutzt, um Musik oder Sprache vom Cassettenrecorder auf den Lautsprecher des Fernsehers zu bertragen. +S+ PBCTL 54019 PORT-B-Steuerung: D303

+++ 54020-54271 wie 54016-54019 +++

70

D400 54272 +S+ DMACTL (559) Direkter Speicherzugriff (DMA). Schaltet DMA ein, setzt ein- bzw. zweizeilige Auflsung fr PLAYER-Objekte,'schaltet P/M-Graphik ein. Aus den folgenden Mglichkeiten mssen die entsprechenden Werte addiert und dann in 559 geschrieben werden: nur m, ;4G24c1- 4 3 Weites Spielfeld 2 Standard-Spielfeld 1 Nur eins auswhlen 1) Schmales Spielfeld 0 Kein Spielfeld 4 Ermgliche Missile-DMA 8 Ermgliche Player-DMA uiuut 0 2 Zeilen breite PLAYER 16 1 Zeilen breite PLAYER briir Einschaltung von Instruction- 32 Fetch DMA D401 54273 CHACTL (755) Zeichenkontrolle: 4 = Zeichen in Spiegelschrift 2 = Wie mit Atari-Taste 1 = Leere Zeichen

In geg

eie 941

3

D402/3 DLISTL/H 54274/5 (560/1) Zeiger fr die Display-Liste. Diese Adresse gibt an, wo das Betriebssystem die Anweisungen abgelegt hat, die den Modus und die Art der Daten festlegen, die auf den Bildschirm geschrieben werden. D404 HSCROL 54276 Horizontales Verschieben von Bildern (Scrolling) wird ermglicht. D405 VSCROL 54277 Vertikales Scrolling wird ermglichen. 54279/80 D407/8 PMBASE Player/Missile-Basisadresse. D409 CHBASE 54281 (756) Zeichensatz-Basisadresse. Man kann damit seinen EIGENEN ZEICHENSATZ programmieren ! Z.B. deutsche Umlaute! D40A WSYNC 54282 Warten auf horizontale Syncronisation. D4OB VCOUNT 54283 Vertikaler Zeilenzhler. D40C 54284 PENH (564) Horizontle Position des Lichtgriffels. D4OD PENV 54285 Vertikale Position des Lichtgriffels. D4OE NMIEN 54286 Freigabe des nichtmaskierbaren Interrupts (NMI). Die Eingabe von 192 lt den Display-Listen-Interrupt zu.

71

+S+ NMIRES 54287 Setze NMIST zurck. +L+ NMIST NMI-Status. 54287

D4OF

D4OF

+++ 54288-54277 wie 54272-54287 +++

D800 AFP 55296 Umwandlung ASCII -*Floating Point. D8E6 FASC 55526 Umwandlung Floating Point - s Ascii. D9AA IFP 55722 Umwandlung Integer (ganzzahlig) -Abiloating Point (= Gleitkomma-Arithmetik). FPI D9D2 55760 Umwandlung Floating Point 9. Integer. ZFRO Lsche FRO 55876 DA44 .

ZFI DA46 55878 Lsche Floating-Point-Wert. DA60 FSUB 55904 Floating Point Subtraktion. FADD 55910 DA66 Floating Point Addition. DADB FMUL 56027 Floating Point Multiplikation. DB28 56104 FDIV Floating Point Division.

CD

4412 0 eile

47

DD40 PLYEVL 56640 Floating Point Polynom Entwicklung. DD89 FLDOR 56713 Lade Floating Point-Wert. DD8D FLDOP 56718 Lade Floating-Point-Wert. FLD1R DD98 56728 Lade Floating-Point-Wert.FLD1P DD9C 56732 Lade Floating-Point-Wert. FSTOR DDA7 56743 Speichere Floating-Point-Wert.

72

DDAB 56747 FSTOP Speichere Floating-Point-Wert. DDB6 56758 FMOVE Verschiebe Floating-Point-Wert. DDCO EXP 56768 Bilde den Floating-Point-Exponenten zur Basis e. DDCC EXP10 56780 Bilde den Floating-Point-Exponenten zur Basis 10. DECD 57037 LOG Bilde den Floating-Point-Logarithmus zur Basis e. DED1 LOG10 57041 Bilde den Floating-Point-Logarithmus zur Basis 10. Plhal

qb....)

f-I W n0 10

+++++++++++

Basis-Adressen fr HANDLER-VEKTOREN fr die residenten Handler-Routinen. SCREEN-EDITOR (E) DISPLAY-HANDLER (S) KEYBOARD-HANDLER (K) PRINTER-HANDLER (P) CASSETTEN-HANDLER (C)->

E400 -> E410 -4111.E420 -* E430 -4>E440

0

es

+++++++++++

BETRIEBSSYSTEM-EINSPRUNGADRESSEN E450 58448 " DISKIV Disk-Handler-Initialisierung. E453 DISKINV 58451 Disk-Handler-Einsprung. E456 CIOV 58454 CIO-Utility-Einsprung (wird oft gebraucht!) E459 58457 SIOV SIO-Utility-Einsprung. E45C 58460 SETVBV Routine, zum gefahrlosen Setzen der Timer. E45F SYSVBV 58463 VBI-Einsprung Stufel (immediate, kritisch) E462 XITVBV 58466 Einsprung zum Verlassen von Vertical Blank. E465 SIOINV 58469 Einsprung zur SIO-Utility. SENDEV 58472 Send-enable-Routine. E468

E46B INTINV 58475 Interrupt-Handler-Initialisierung. E4E6 CIOINV 58478 CIO-Utility-Initialisierung. E471 BLKBDV 58481 Blackboard-Modus-Einsprung. E474 WARMSV 58484 Warmstart-Einsprung (RESET). COLDSV E477 58487 Kaltstart-Einsprung (Einschalten).

73

BEISPIEL FR DIE PROGRAMMIERUNG DER DREHREGLERANSCHLSSE: HELLIGKEITSSTEUERUNG

Wie im Abschnitt 'SCHNITTSTELLEN-PROGRAMMIERUNG TEIL 2' schon erlutert, verfgt der ATARI-Computer im Gegensatz zu vielen Mitstreitern bereits von Haus aus ber acht eingebaute A/D-Wandler. Hier lassen sich natrlich nicht nur die Drehregler (Paddles) anschlieen, sondern auch alle anderen Bauelemente und Schaltungen, deren Wirkungsprinzip auf der nderung des elektrischen Widerstandes beruht. Der Widerstandsbereich sollte etwa dem der Drehregler-Potis entsprechen und wird gegebenenfalls mit Hilfe von Serien- oder Parallel-Widerstnden in den gewnschten Wirkungsbereich gerckt. Einige Anwendungsbeispiele wren z.B.: Widerstandsart NTC (wrmeabh. Widerstand) Anwendungsbeispiel Temperaturmessung, z.B. mit Statistik und/oder Grenzwertmeldung Winkelmessung Helligkeitsmessung/steuerung Lichtorgel Fllstandsberwachung

Potentiometer LDR (Photowiderstand)

Me-Sonden + Flssigkeit

Da die Unterprogramme zur Abfrage der acht Analog-Eingnge und deren Digitalisierung bereits Bestandteil des Betriebssystems sind, gestaltet sich die Programmierung derartiger Anwendungen uerst einfach. Als Beispiel wollen wir uns einmal die HELLIGKEITSSTEUERUNG vornehmen. In Bro- oder Laborrumen mit wechselnder Helligkeit (Sonneneinstrahlung etc.) wre es wnschenswert, wenn sich die Bildschirmhelligkeit unseres Computersystems automatisch an das Umgebungslicht anpassen wrde. Dies lt sich durch den Anschlu eines Photowiderstands an einen der Drehregler-Eingnge erreichen (siehe Abb. Abhngig von der Belichtung ndert der Widerstand seinen Wert, der wiederum zur programmgesteuerten Einstellung der Bildschirmhelligkeit verwendet wird. Jede der 16 Farben lt sich ja bekanntlich in acht Helligkeitsstufen darstellen, was auch in diesem Fall vllig ausreicht. Solange Sie keinen LDR zur Hand haben, knnen Sie zur Simulation natrlich auch einen Drehregler benutzen.

IgID ).

(+5 Volt) Pin 7 Pin 9 (PADDLE 0)

4 4.Abbildungjg7

A/

LDR

74

Sehen Sie sich dazu das nachfolgende kleine BASICProgramm an. Wollen wir die Helligkeit der Buchstaben in der Grundstufe (GRAPHICS 0) ndern, mssen wir den Wert vom Farbregister COLOR 1 variieren. Dies geschieht in Zeile 40, und zwar mit dem fr DrehreglerEingang PADDLE(0) gefundenen Wert, der mittels Division durch 16 in den mit SETCOLOR nutzbaren Bereich von 0 bis 14 gebracht wird. 10 20 30 40 50 REM HELLIGKEITSSTEUERUNG REM MIT LDR AN PADDLE 0 SETCOLOR 2,2,0:SETCOLOR 4,2,0 SETCOLOR 1,1,INT(PADDLE(0)/16) GOTO 40

Am sinnvollsten bringen Sie Zeile 40 in einem Unterprogramm unter, das die Bildschirmhelligkeit ausreichend oft aktualisiert. Die Programmierung der Widerstandsabfrage und der daraus abgeleiteten Helligkeits(oder Farb)nderung kann natrlich auch in Maschinensprache erfolgen. Dies ist in den folgenden zwei Anwendungsfllen sinnvoll: 1. Die Verarbeitung mu sehr schnell geschehen (z.B. fr LichtorgelEffekte) 2. Die Routine soll interruptgesteuert im Hintergrund laufen. Ein gleichwertiges Maschinenprogramm, das von BASIC aufgerufen werden kann, sieht folgendermaen aus: 0100 ;HELLIGKEITSSTEUERUNG IN MASCHINENSPRACHE 0110 * = $06A0 ; =dezimal 1696 68 PLA 0120 AD7002 0130 LDA $0270 PADDLE() LESEN 6A 0140 ROR A DURCH 16 TEILEN 6A 0150 ROR A 6A 0160 ROR A 6A 0170 ROR A 8DC502 0180 STA $02C5 IN COLOR1 ABSPEICHERN 60 0190 RTS ZURUECK INS HAUPTPROGRAMM 0200 .END

0000 06A0 06A1 06A4 06A5 06A6 06A7 06A8 06AB 06AC

Auch hier wird PADDLE(0) abgefragt, durch 16 geteilt und als Helligkeitswert in COLOR1 eingesetzt. Der MaschinenCode lt sich natrlich aus BASIC heraus generieren, wenn man ihn in eine DATAZeile schreibt: 10 20 30 40 50 60 70 FOR 1=1696 TO 1696+11 READ A POKE I,A NEXT I DATA 104,173,112,2,106,106,106,106,141,197,2,96 X=USR(1696) GOTO 60 des

Auch in diesem Fall lt sich Zeile 60 nach einmaligem Aufbau Maschinenprogramms (READ/DATA) als Unterprogramm verwenden.

75

Glhbirne einer BRIGENS: Belichtet man den 'Photowiderstand mit der (einkanaligen) Lichtorgel, lassen sich Musikstcke programmgesteuert durch einzigartige Licht- und Farbenspiele untermalen. Wer daran interessiert ist, sollte ausgiebig mit der widerstandsabhngigen nderung der diversen Helligkeits- und Farbregister experimentieren. Wenn die Helligkeitssteuerung unabhngig von bestimmten Programmen oder Programmiersprachen arbeiten soll, lt man sie am Besten interruptgesteuert im Hintergrund laufen (siehe Abbildung ). 2

HAUPTPROGRAMM INTERRUPT (z. B. Vertical Blank UNTERPROGRAMM

Abbildung

WEITER IM HAUPTPROGRAMM

Im Beispiel dazu benutzen wir den Timer 2. Wie auch beim Timer 1 handelt es sich um einen Zwei-Byte-Zhler, der sich auf einen bestimmten Wert setzen lt, von dem aus er heruntergezhlt wird. Das Dekrementieren geschieht jeweils im Vertical Blank Interrupt, also im 50-Hz-Rythmus. Den beiden Timern (es gibt auch noch drei weitere, jedoch mit anderen Funktionen) ist jeweils eine Vektor-Adresse zugeordnet. Hier kann man die Adressen von Unterprogrammen hineinschreiben, die immer dann angesprungen werden, wenn der jeweilige Timerden Wert Null erreicht. Die Hufigkeit der Unterprogrammausfhrung richtet sich also nach dem Wert, von dem aus man den Timer herunterzhlen lt. In unserem Beispiel auf der folgenden Seite passiert folgendes: 1. Zeile 170-200: Das Unterprogramm wird einmalig initialisiert, indem die Vektor-Bytes von Timer 2 ($228,229) auf die UP-Startadresse (206B0) gesetzt werden. 2. Zeile 210-220: Timer 1 wird als Ausgangswert auf 1 gesetzt. 3. Timer 2 wird im VBI herabgezhlt. Bereits beim ersten Mal erreicht er den Wert Null, soda ber seinen Vektor das eigentliche LDR-Unterprogramm angesprungen wird. 4. Zeile 250-300: Auf bereits bekannte Weise erfolgt nun Messung des Widerstands, Teilung durch 16 und Setzen von COLOR 1. 5. Zeile 310-330: Timer 2 wird wieder auf 1 gesetzt. Anschlieend geht es im Hauptprogramm weiter. Bei Auftreten des nchsten Vertical Blank Interrupt wird wieder unser Unterprogramm ab Zeile 250 (06B0) abgearbeitet.

76

0000 021A 0228 0270 02C5 06A0 06A2 06A5 06A7 06AA 06AC 06AF 06B0 06B3 06B4 06B5 06B6 06B7 06BA 06BC 06BF 06C0 A9B0 8D2802 A906 8D2902 A901 8D1A02 60 AD7002 6A 6A 6A 6A 8DC502 A901 8D1A02 60

0100 0110 0120 0130 0140 0150 0160 0170 0180 0190 0200 0210 0220 0230 0240 0250 0260 0270 0280 0290 0300 0310 0320 0330 0340

;HELLIGKEITSSTEUERUNG IM VERTICAL BLANK INTERRUPT * = $6A0 $21A CDTMV2 = $228 CDTMA2 = $270 PADDLO = $2C5 COLOR1 = ; INITIALISIERUNG $B0 LDA STA CDTMA2 LDA 4406 STA CDTMA2+1 LDA 4401 STA CDTMV2 RTS ;UNSER LDR-UNTERPROGRAMM LDA PADDLO ROR A ROR A ROR A ROR A STA COLOR1 LDA =401 STA CDTMV2 RTS .END

Als Anfangsadresse wurde bewut $06A0 anstelle von $0600 gewhlt, um Konflikte mit Hilfsprogrammen wie Monkey Wrench (tm) etc., die ebenfalls den Anfangsbereich von Page-6 benutzen, zu vermeiden. Das gezeigte Unterprogramm-Prinzip lt sich natrlich auch fr zahlreiche andere Anwendungsflle, z.B. fr die Klangerzeugung einsetzen. - Um z.B. bei BASIC, EDITOR/ASSEMBLER, DOS etc. stets von vornherein die Helligkeitsregelung vorzusehen, kann man das gezeigte Programm auf den verwendeten Disketten als AUTORUN.SYS-Datei speichern. Nach dem 'Booten' des DOS wird es dann automatisch geladen und installiert. Assemblieren Sie dazu das gezeigte Programm oder lassen Sie es nach Eingabe der Hex-Codes vom BASIC generieren (Siehe Hilfsprogramm auf Seite 37). Gehen Sie dann ins DOS und speichern Sie den Maschinen-Code mit 'K' wie folgt ab: D1:AUTORUN.SYS,06A0,06BF06A0 (return)

Wichtig!

Anmerkung: ) Zur optimalen Anpassung empfiehlt sich, den grten Teil der Oberflche des Photowiderstandes mit lichtundurchlssigem Lack bzw. Isolierband abzudecken. eAusprobieren!

77

ROM-MODULE SELBERMACHEN !

Die berschrift sollte nicht falsch verstanden werden: in diesem Abschnitt soll nicht erklrt werden, wie man sich eine Billig-Kopie von STAR RAIDER (tm Atari) brennt, sondern wie man seine eigenen Programme so aufbereitet, da sie in ROMs bzw. EPROMs lauffhig sind. Vielleicht gelingt Ihnen ja eines Tages der groe Wurf mit einem selbsterdachten Spiel auf ROM-Basis! Die Grundlagen der EPROM-Programmier