ABBUC Magazin 046


IMPRESSUM

(c) 1995 Atari Bit Byter User Club e.V. c/o Wolfgang Burger, Wieschenbeck 45

D­45699 Herten, Tel. +49 2366 39623 FAX +49 2366 39623

Email: 0236639623-0001@dtag.de

Das Atari Bit Byter User Club Magazin. erscheint 1/4 jährlich. Jeweils 1/2 jährlich erscheint das Atari Bit Byter User Club Sondermagazin

Eingesandte Artikel müssen frei von Rechten Dritter sein. Mit der Zusendung gibt der Autor seine Zustimmung zur Veröffentlichung.

Veröffentlichungen, auch Auszugsweise nur mit schriftlicher Genehmigung

 


Achtung!!

Nicht vergessen!!

11. Jahreshauptversammlung des ATARI BIT BYTER USER CLUB e.V.

am 26. Oktober 1996

in 45699 Herten, Bürgerhaus Herten Süd


Das Tor zur Welt
Teil 2

Oder: Das (Der) Tor im Hause. (Da steh‘ ich nun, ich armer Tor….)

Was bisher geschah
Im Magazin #43 schrieb ich über den Selbstbau von RS232 Interfaces für den 8-bitAtari sowie die Verbindung einerseits damit über Nullmodem zu unserem PC und andererseits über Modern in die weite Weit. Angefangen hatte es mit dem Interface aus dem Atari- Magazin (samt nach einigen Enttäuschungen damit) und geendet hatte es mit dem ARGS – Interface (Roland Bühler und Konsorten sei, Dank!). Und ich schrieb ?er einen Plan, den Atari (Remote durch eine Remoteverbindung) zu steuern. Darüber also jetzt mehr. Das Ganze’heckte’ich als Projekt für meineAbendschule aus. Meine Vorgabe war:

Aus der Schule von einem PC über Modem zu uns nach Hause. Dort lauert schon unser Modem und führt den Anrufer (überC0M1) zurn PC im Schlafzimmer, wo ihn ein einfaches Mallboxprogramm erwartet. Durch einen gesicherten, eingeschräkten Zugang zum DOS kann der Anrufer ein weiteres Terminalprogramrn starten, dass über COM2 und Nullmodemkabel unseren PC mit dem Atari im Wohnzimmer verbindet. Und da wartet schon der’Kleine‘ und empfängt den anrufenden Besucher mit einem erfreuten Atari (ASCII) Logo und anschließendem Auswahl-Menue um voll Stolz weitere Dienste anzubieten.

So gut, so schön. Klingt doch sehr verlockend. Ein Mitschüler- der Engelbert- war bald für diesen Plan als Partner gewonnen. Um (entsprechend dem Untertitel) klassisch zu bleiben: der Wahn ist kurz – die Reu‘ ist lang: Ich glaube, der Engelbert bereut es heute noch.

Gut, Ernst beiseite – eine so schöne Ansammlung an Problemen und Zufälligkeiten: es hatte einfach Spaße gemacht. Doch der Reihe nach.

In einem netten Wirtshaus mit gepflegtem Bier gab es die erste Lagebesprechung. Ich fungierte als Schriftführer bis zum 4. Krügel (in Wien: Krügel = 1/2 Liter Bier) – nach dem 4. Krügel war eh‘ alles klar und es mußte nichts mehr festgehalten werden):

  1. Terminalprograrnm in der Schule: TELIX
  2. 1.Terminalprogramm bei mir: TELIX
  3. Mailboxprogramm an unserem PC zu Hause: DBBS (ein auf TELIX aufsetzendes deutsches Programm. Unkompliziert, zuverl?sig und vorhanden.)
  4. Zugangsprogramm von der Mailbox zum DOS am heimischen PC mit entsprechenden Sicherheitseinrichtungen: DOORWAY
  5. 2. Terminalprogramm (von PC zu Atari): PC – KERMIT (Leser des 1. Teiles des ‚Tors zur …‘ denken richtig:“Ja, jaNachtigall ick hör Dir trapsen“)
  6. Diverse hübsche Bildschirme für die PC Mailbox (DBBS) malt der Engelbert, Ein grosser DOS- und ANSI-Spezialist vor dem Herrn.
  7. Alles Atari-mäßige programmiere ich. (Hah, endlich wieder eine Programmieraufgabe!)
  8. Das Bier zahlt diesmal der Engelbert. Der Rest des Protokolls war unleserlich (wahrscheinlich eh‘ unwichtig).

Auf geht’s

Die Unterlagen und Source-Codes des ARGS – Modules intensiv studiert, um ein kleines und einfaches ‚Mailbox und Terminalprogramm‘ in Basic zu schreiben. Offensichtlich zu intensiv: Meine Spezialplatine (siehe 1. Teil ‚Das Tor …‘) nahm durch das oftmalige Raus- Rein- und Umstecken ‚Projektschäden‘. Schöner Schaden! Die Zeit wurde knapp. Für langwierige Fehlersuche auf Lochrasterplatinen war keine Zeit mehr. Der Projekt – Vorfürtermin stand fest. Also das .problembehattete‘ Atari- Magazin Interface wieder her und weiter programmiert. Damit konnte ich aber auch Turbo-Basic vergessen. Die Beiden vertragen sich akkurat nicht. Was das bedeutet, brauche ich Atarianern nicht zu erzählen! Schauderhaft. Aber man erinnerte sich wieder an scheinbar längst vergessener Atari-Basic-Tricks. (Oder – zumindest wo diese beschrieben wurden!)

So gut, so schön. Die Sache ging gut voran und der Spaghetti – Code wurde immer läger. (Wie sagt meine liebe Frau – eine gestandene Programmiererin – immer: Hauptsache, es rennt einmal, alles andere später). Sie hat ja sicher recht, aber schön ist es nicht. Grunz!)

Was soll der Atari können:

Er soll durch die REMOTE – REMOTE Verbindung erkennbar aktiv werden und nicht, nur eine im Programmcode vorgefertigte Bildschirmfolge abspulen. Sozusagen interaktiv.

Was können wir da anbieten:

Bei erkannter (Null-) Modemverbindung wird ein (Ascii-) Atari Logo mit ‚Grüß Gott‘ uns so ausgegeben und nach einer Zeitschleife erscheint ein Auswahlmenü. Damit die Sache richtig interaktiv abläuft, sind die einzelnen Bildschirmseiten nicht im Programmcode eingebaut, sondern als einzelnen Text-Files abgespeichert. Diese werden dann je nach Menüauswahl entsprechend von der Floppy geladen und gesendet.

  • Was hätten wir für das Auswahlmenü da so:
  • Eine kurze Hardwarvorstellung des ATARI 800 für den (unbeleckten) Anrufer. Der entsprechende Bildschirm wird durch Men?uswahl von der Floppy geladen und gesendet.
  • das Directory der Dl: Damit soll der Aufruf einer anderen Betriebsystemroutine dargestellt werden.
  • Das Listing des laufenden Programmes ausgeben: Ist natürlich insofern ein bischen ‚getürkt‘, indem das Listing als ASCII-File gespeichert wurde und jetzt angezeigt wird.
    Aber-:
    Das Interaktive dabei ist: Nach jeder Bildschirmseite wartet der Atari auf ein <RETURN> für ‚Weiter‘ und stellt nachher die nächste Seite zur Verfügung, N
    atülich ein ordentlicher Schluß, der den Atari wieder in die Ausgangsposition zurücksetzt.

Gut, soweit so schön. Diese Anforderungen sind ja wirklich relativ einfach (da ja zeitunkritisch) in Basic zu verwirklichen.

Aber da schlug das etwas seltsame Treiberprogramm des Atari-Magazin-Interfaces gnadenlos zu. Mit einer geradezu verbissenen Akribie wurden die anvertrauten Daten teilweise auf das Hässlichste verunstaltet. Diverse ASCII Sequenzen veranlassen den PC zu den seltsamsten Bildschirmaufbauten. Speziell ASCII Ausgaben, die durch eine For-Next Schleife wiederholt wurden. Schauderhaft, was der PC da aufführte.

Durch eine minutiöse Überarbeitung des Programmes, Entfernung ‚tipparbeitssparender‘ Programmzeilen (dafür 5 x schreiben ? CHR$(13) und so) konnte das Ding ins Laufen gebracht werden.

Es dauerte aber eine ganze Weile, bis klar war, daß nicht die Nullmodemleitung (sie läuft bei einem Fernseheapparat und bei einer Steckdose vorbei) Schuld ist. Schuld sind auch nicht die Einstellungen PC-seitig am ‚Kermit‘ und auch der Atari selbst kann für das Schlamassel nichts. Sondern schuldig ist einzig und alleine das offensichtlich fehlerbehattete Treiberprogramm für die serielle Schnittstelle, das lustvollst die grauslichsten Daten – Deformierungen vornimmt. Und jetzt erinnerte ich mich: Roland Bühler hatte mich in einem Brief (oder einem Telefongespr?h) auf offen?ichtliche Fehler in diesem Treiberprogramm extra hingewisen.

Aber der vereinbarte Projekttermin drängte eben. Am Schlimmsten war, daß ich diesmal einer jahrelangen Tradition – Spätherbst-Klettern in den Lienzer Dolomiten – absagen mußte, da sonst der Termin (immerhin habe ich ja einen Mitschüler – den Engelbert – mit‘ hineingezogen‘) nicht zu halten gewesen wäre. Also verbrachte ich das vorgesehene Kletterwochenende statt Griffesuchend und so, mit Basteln von Uberwachungsprogrammen für die serielle Schnittstelle um den unerkl?lichen (siehe oben) Datenverwandlungen auf die Spur zu kommen.

Kurz und gut, das Ganze konnte eingegrenzt werden, das Atari Programm wurde entsprechend wasserdicht gemacht und das Projekt konnte laufen.

Dienstag, xx.xx, 17 00 nachmittags: Der Atari wurde angeworfen. das Projektterminalprogramm geladen. Gut – der Atari horcht auf der seriellen Schnittstelle und gibt ständig aus, was sich darauf tut: nämlich im Moment nix, Eh klar: Der PC wird angeworfen, Telix und das DBBS Programm wird geladen. Jetzt plaudert derAtari wenigstens ununterbrochen, dass auf der Seriellen ein Connect` besteht, aber nichts drüber kommt. Gut, so Solls ja sein!

Schnell noch einmal offline alles überprüft:

Nix geht ???

Fieberhaft gesucht: Aha, ein Kontaktproblem an einem Stecker. Schnell neu gelötet und ab in die Schule. Kurzer Vortrag an das (kleine) Auditorium worum es geht und was jetzt kommt. Ab in das PC Labor und die Maschine mit dem Modernanschluß gestartet. Unsere Telefonummer unter TELIX gewählt: Der PC im Schlafzimmer meldet sich mit der Mallbox. Gut. In der Mailbox das DOS-Zugangsprogramm als Berechtigter aufgerufen: DOS steht remote auf unserem Heimat-PC zur Verfügung. Ins Verzeichnis zu Kermit gewechselt und Kermit aufgerufen. Kermit meldete sich spröde wie immer. Nullmodemconnect zum Atari hergestellt.

Nix!

Nochmals. Nix! HimmwLrgslbcascd!!!!!.

Das Spiel noch 8 – 13 mal durchgespielt. Nebenbei die Klasse bei Laune gehalten. Nix, nix und wieder nix. Und dafür ein Kletterwochenende abgesagt, einige mehr als kurze Nächte verbracht und so fort. Frust !!! Aber es hatte doch alles funktioniert. Und es wurde mehrmals alles getestet.

Aber morgen wird es klappen! Alles verschoben.

Am späten Abend zu Hause die Choose beaugapfelt. Warum ging das nicht?. Der Atari horchte seit Stunden an der Seriellen herum und fabrizierte immer wieder die gleichen Bildschirmmeldungen: Connect ja, Datenverkehr nein. So stimmt’s auch. Und der PC? Modemschnittstelle (COMI) alles o.K. Nullmodemschnittstelle (COM2) nicht vorhanden. WAS??? Nein, nicht vorhanden. Da hatte ich doch durch mein (panikartiges) Löten an dem Steckerproblem in letzter Minute (im laufenden Geschäft) offensichtlich die COM2 ‚abgestochen‘. Etwas zu lässig gewesen, eh‘? Im laufenden Betrieb herumzulöten und dabei beim Löten einen ‚Kurzen‘ zu bauen: nichts leichter als das. Und auch eine eher robuste RS232 Schnittstelle kann das in die Knie zwingen. Selber schuld.

Die Schnittstellenkarte ist also zum schmeißen. Naja, am nächsten Tag eine neue Schnittstellenkarte besorgt und alles getestet. Guuuut. Alles O.K.

Nächster Abend in der Schule. ‚Remote-Remote‘ die Zweite! Die Erwartung der Mitschüler war etwas schaumgebremst.

Modemverbindung PC zu Hause. Klappt. (Hatten wir ja auch schon gestern).

DOS-Zugang o.K. (hatten wir auch schon!)

Kermit und Atari connect: Langsam baute sich ein ASCII Atari Logo am Bildschirm auf: Hurrrrrraaa!!

Das Auswahlmenü erschien, erweitert um einen neuen Punkt: Wo ist der Fuffy? Dieses Basicspiel hatte ich nach dem gestrigen Frust noch schnell eingebaut.

(Ein einfaches Rasterspiel, wo man mit möglichst geringer Fragenanzahl herausfinden soll, wo sich der Fuffy versteckt hält.)

Die ganze Klasse wollte „Wo ist der Fuffy“ spielen. Der Atari glühte voll Stolz. Ein voller Erfolg. (Allerdings: ohne gro?n Einsatz w?e dieser Effekt mit einer SEGA Masterdrive Konso?e auch zu erreichen gewesen!) Ist ein Hinweis an die Spiele-Hersteller: Nicht der Effekt ist auf Dauer das Wesentliche, sondern nach wir vor steht die Spielidee im Vordergrund. Und sei es auch noch so simpel wie bei diesem Spiel.

Uff und Gott sei Dank! Das war’s!

Resümee

  • Lötprobleme: Don’t touch a running machine
  • RS232 Verständigungsprobleme: Du sollst mehr auf den Roland Bühler hören!
  • Ganz egal, was Du vorführen möchtest: wenn ein Spiel dabei ist, ist es interessant!

Nebenbei: Mittlerweile habe ich mir von Joost Küp eine ARGS Platine besorgt, das Programm unter Turbo-Basic aktualisiert und mich von Herzen an einer unkomplizierten Übertragung ohne Verstümmelung erfreut!

Aber da das mit der RS232 so gut geht, geht’s auch bei mir weiter: Die ABBUC Aktion habe ich wahrgenommen und eine XEP80 bestellt. Damit mache ich den Atari zu einem LINUX Terminal über die Serielle mit Nullmodem!

Und was ich bisher damit getan habe, läßt auf einen neuen, einschlägigen Bericht befürchten. Abhalten davon kann mich nur ein entschlossenes „Nein“ von Wolfgang oder eine Leseraktion ‚Verbietet den Dieter das Veröffentlichen“

Für Einschläige (oder auch völlig a
nders geartete) Reaktionen bin ich natürlich mehr als interessiert.

Snailmail:
Dieter.Lichtenegger, Rollingergasse 6-8/1/36 A-1 120 Wien Osterreich

Email:
dieter.lichtenegger@hmv.ccc.or.at oder lichten@rohrpostfix.htlv-tex.ac.at
Fido: 2:310/1.143

Xformer Kabel im Eigenbau

Schon 1988 hat BRAsoft ein Xformer-Kabel herausgegeben, um ein 8-Bit-Laufwerk an den ATARI ST für den ST Xformer Emulator anzuschließen. Die neueste Version des PC Xformers 3.5 kann das selbe Kabel benutzen, um Ataris 8-Bit Laufwerke anzusprechen. Das Kabel kann man leicht selber herstellen, und sich so die $35 sparen, die einige Händler (in den USA) für das Kabel verlangen. BRAsoft selber produziert das Kabel nicht mehr. Um das Kabel nutzen zu können, braucht man für den PC die Version 3.5 des PC Xformer. Dieser ist einzeln erhältlich oder auf der CD-ROM „Gemulator Gold“ (zusammen mit ST-Emulatoren und massig PD Software). Natürlich für Bit-Byter, die Besitz einer Originalversion sind, für Rückporto von 3,–DM in Clubzentrale updatebar.

Als Zutaten zum selberbauen braucht man:
1 SIO-Stecker (ATARI 8-Bit „Standard“stecker, 13 Pin)
1 DB-25, männlich (wie beim PC ähnlich)
1 Widerstand 4,7 kOhm
1 Kabel, 6-fach, abgeschirmt
 
Den SIO-Stecker kann man z.B. von einem alten SIO-Kabel oder einem nicht mehr funktionierenden Druckerinterface nehmen. Ein SIO-Kabel hat den Vorteil, daß man gleich ein passendes, abgeschirmtes Kabel dabei hat. Man verbindet einfach die folgenden Pins des ATARI SIO-Steckers mit dem DB-25-PC-Stecker wie folgt. Dabei ist zu beachten, daß die Pins beim ATARI SIO-Stecker von rechts nach links nummeriert sind, im Gegensatz zu vielen anderen Steckern. Am besten im ATARI Handbuch nachschauen.

SIO-Pin DB25-Pin
2 3
5 5
7 7
10 9
3 11
4 18 (Masse/Abschirmung)

Zu guter letzt noch den 4,7 k Widerstand zwischen die Pins 2 und 11 des PC-Steckers loeten und fertig. Das Kabel ist jetzt fertig f? den Einsatz, sowohl mit dem ST Xforrner auf dem ATARI ST, als auch mit dem PC Xformer auf dem PC. Mit dem PC Xformer benutzt man die Option -X und gibt die Laufwerksbezeichnungen an, die als echte Laufwerke angesprochen werden sollen,

z.B.: XFORMER -X D1:

bootet vom echten (über das Kabel angeschlossenen) Laufwerk Dl:
Thomas Rosanski

Cracking the code
Teil 9

von Keith Mayhew und Roy Smith

für den ABBUC ins Deutsche übersetzt von Alfons Klüpfel

Die letzte Fortsetzung beendeten wir mit einem Programm, das auf einen Graphics-8-Screen zugriff, indem es die Pixel nach dem Zufallsprinzip veränderte. Diesmal wollen wir mit der Beschreibung eines fortgeschrittenen Programms beginnen, das es ermöglicht, mit einem Joystick auf einen Graphics-8-Screen zu zeichnen.

Das Programm

Den Assemblercode für das Zeichenprogramm seht Ihr in Listing 1. Der assemblierte Code kann mit Hilfe eines BASIC-Programmes geladen werden, das unter Listing 2 abgedruckt ist. Angenommen, der Code befindet sich nun im Speicher, dann kann er folgendermaßen gestartet werden. Man tippt im BASIC: GRAPHICS 24:X=USR(20480)

Bevor wir uns das Programm im Detail ansehen, habt Ihr hier erst einmal eine kurze Beschreibung, was das Programm tatsächlich tut: Auf dem Screen wird ein Cursor in Form eines Fadenkreuzes dargestellt, das per Joystick bewegt werden kann. Wird der Feuerknopf gedrückt, werden Punkte auf den Schirm gezeichnet. Vier Tasten spielen außerdem eine Rolle: Die E-Taste schaltet den Cursor auf „Löschen“ (Erase), d.h. daß bestehende Bildpunkte durch Druck auf den Feuerknopf gelöscht werden. Mit der D-Taste (Draw) schaltet man wieder zurück in den Zeichenmodus. Die Tasten „S“ und „F“ ändern die Zeichengeschwindigkeit (Slow und Fast). Bei Programmstart steht diese Einstellung auf „langsam“ (= slow). Drückt man schließlich auf eine der Konsoltasten (START, SELECT etc.), dann geht’s zurück ins BASIC. Nachdem wir nun wissen, was das Programm tut, beginnen wir, uns das Assembler-Listing anzusehen. Die ersten fünf Gleichstellungen (=-Zeichen) definieren die Systemplätze im RAM.

Die neuen Plätze hier sind: – In „STICKO“ werden die vier Hauptbewegungsrichtungen für Joystick 0 kontrolliert (auf, ab, rechts, links). – In „STRIGO“ wird der Status des Feuerknopfs von Joystick 0 abgefragt. – In „CH“ wird der Code für die zuletzt gedrückte Taste gehalten. Es folgt eine Liste der Programm-Variablen, die bei $CB beginnt. PLTMOD enthält den Wert, der festlegt, wie ein Punkt gezeichnet wird: bei Null wird der Punkt gelöscht, bei 1 wird er gezeichnet und bei jedem anderen Wert wird der Punkt invertiert (d.h. ein weißer wird dunkel und umgekehrt. A.K.) Diese Definition der Werte für den Zeichenmodus finden wir in Zeile 300 – 320 als ERA, DRW und INV (zum besseren Verständnis noch einmal: ERA = erase = löschen, DRW = draw = zeichnen, INV = invert = hell/dunkel vertauschen. Nicht zu verwechseln mit pervertieren!A.K.) COLOUR beinhaltet den Zeichenmodus und steht entweder auf „Löschen“ oder „Zeichnen“. In XPOS und YPOS steht die Position des Cursors auf dem Bildschirm (die Angaben für die X- und die Y-Koordinate. A.K.) Achtung! Die X-Position ist eine Zwei-Byte- Variable, weil wir für einen Graphics-8-Screen 320 Pixel benötigen. Die Maximalwerte für X und Y sind als XMAX und YMAX in den Zeilen 260 und 270 definiert. CURSON ist entweder auf $FF gesetzt, wenn der Cursor gezeigt wird, bzw. auf Null, wenn er „ausgeschaltet“ ist. DELVAL enthält den Verzögerungswert (Delay Value), der festlegt, wie schnell sich der Cursor bewegt. Die beiden zur Verfügung stehenden Geschwindigkeiten sind in den Zeilen 280 und 290 als SLOW und FAST definiert. Die letzten paar Variablen werden nur in Subroutinen benutzt, und ihr Zweck wird deshalb erst später erklärt.

Das Programm startet mit dem Einstellen der X- und Y-Position auf einen Mittelwert (halb so groß, wie maximal möglich ist). Die Farbeinstellung steht auf „zeichnen“ (draw) und die Geschwindigkeit auf „langsam“ (slow). Ein Cursoraufruf setzt das Fadenkreuz auf die Ausgangsposition, und anschließend wird das Cursor-Flag auf $FF gesetzt, um anzuzeigen, daß der Cursor „an“ ist. Dieser Wert wird auch in „CH“ gespeichert, was bewirkt, daß jede Tasteneingabe gelöscht wird, die evtl. dort gespeichert war.

Die Hauptschleife beginnt mit dem Nachsehen, welchen Status die Konsoltasten haben: Ist irgendeine gedrückt, endet das Programm. Ist keine gedrückt, wird der Tastencode aus „CH“ ein
gelesen und mit den Werten $3A, $2A, $3E und $38 verglichen, nämlich den Werten für die Tasten D,E, S und F (nur als Großbuchstaben!). Es handelt sich nicht um die ASCII-Werte dieser Buchstaben, sondern um einen etwas eigenartigen internen Keyboard-Code. Wird festgestellt, daß eine dieser Tasten gedrückt ist, dann wird ihr Wert in COLOUR oder DELVAL gespeichert. Ist eine der Tasten gedrückt, wird anschließend $FF wieder zurückgeschrieben, damit diese Taste beim nächsten Schleifendurchgang nicht wieder erkannt wird.

Der Wert aus STICK() wird als nächster überprüft. Ist er gleich $0F, dann wurde der Joystick nicht aus seiner Mittelstellung bewegt. Wurde er dagegen bewegt, wird der Cursor abgeschaltet, indem die Cursorroutine wieder aufgerufen wird. Die Routine, die den Cursor bewegt (move routine), wird aufgerufen, um den Cursor in die gewünschte Position zu bringen. Dann wird die Stellung des Feuerknopfs überprüft. Ist er oben, hat er den Wert 0, ist er gedrückt, den Wert 1. Wird der Feuerknopf gerade gedrückt, wird der Cursor abgeschaltet, falls er derzeit an ist. Dies geschähe, wenn der Cursor dabei nicht gleichzeitig bewegt würde. Der Zeichenmodus (plotting mode) wird dann auf den aktuellen Farbwert gesetzt und der Punkt gezeichnet. Und schließlich, falls dann der Cursor an ist und weder der Joystick bewegt, noch der Feuerknopf gedrückt wird, wird zurück zum Start der Schleife gesprungen. Ansonsten wird der Cursor wieder eingeschaltet, es wird eine Verzögerung erzeugt und zurück zum Schleifenstart gesprungen.

Wäre eine der Konsoltasten gedrückt worden, wäre das Programm zu „EXIT“ gesprungen. Dadurch wird jeder Tastencode gelöscht, der ggf. generiert worden wäre, und man kehrt ins BASIC zurück. Wir beenden die Betrachtung nun mit einer Untersuchung der vier Subroutinen, die durchs Hauptprogramm aufgerufen werden. Es sind: MOVE, CURSOR, PLOT und DELAY.

Die Subroutine „MOVE“ (BEWEGEN) besteht aus vier einander ähnlichen Abteilungen, die den Wert des Joysticks laden und entsprechend die X- und die Y-Position anpassen, entsprechend der festgelegten Richtung. Das Codiermuster für die Variable STICKO ist folgendes: Die oberen vier Bits sind nicht benutzt und stehen daher immer auf Null. Die unteren vier Bits sind normalerweise lauter Einsen, was bedeutet, daß keine Bewegung stattfindet. (Aus diesem Grund wurde der Wert $OF für das Vergleichen in Zeile 770 benutzt.) Diese unteren vier Bits, beginnend bei Bit 0, repräsentieren die vier Richtungsangaben des Joysticks, falls sie auf Null gesetzt werden: UP (auf), DOWN (runter), LEFT (links) und RIGHT (rechts). Nur eines oder zwei dieser Bits können gleichzeitig auf Null gesetzt werden, je nach dem, ob der Joystick exakt in eine der vier Richtungen oder in eine Diagonale zwischen zwei Richtungen deutet.

Die Richtung „up“ (auf) bewirkt, daß der Y-Wert heruntergezählt wird, es sei denn, er steht bereits auf Null, d.h. der Cursor befindet sich am oberen Bildschirmrand. Die „down“ (ab) – Abfrage wird in diesem Fall ausgelassen, weil nicht beide Bits gleichzeitig gesetzt sein können. (Logo, man kann nicht gleichzeitig rauf und runter gehen! A.K.) Die Richtung „down“ erhöht den Y-Wert, es sei denn, er steht bereits auf dem Maximum (Y-MAX), d.h. am unteren Bildschirmrand. Die Richtungen rechts und links werden ebenso gehandhabt; dabei werden nur statt der Y-Werte die X-Werte verändert. Anders ist dabei nur, daß wir für den X-Wert noch ein High-Byte abfragen lassen müssen. Aber auch dieses kann nur zwei Zustände haben, nämlich Eins oder Null, je nachdem, ob der X-Wert größer als 256 oder kleiner als 255 ist.

Die CURSOR-Routine verschiebt das Fadenkreuz; dieses besteht aus einem Pixel in der Mitte und vier weiteren in den vier verschiedenen Richtungen. Der Wert in CURSON kann nur zwei sich gegenseitig ausschließende Werte enthalten: Der Cursor kann nur an oder ausgeschaltet sein. Der Darstellungsmodus ist auf „Invertieren“ gesetzt, was bewirkt, daß der Wert jedes betroffenen Pixels durch sein Complement ersetzt wird. (Das Complement von hell ist dunkel. A.K.) Im „Inverse-Modus“ zieht man den Cursor auf eine Stelle, so sieht man ihn dort. Fährt man mit dem Cursor weiter, verschwindet er an dieser Stelle und erscheint anderswo. In Wirklichkeit wird das vorher veränderte Pixel lediglich in seinen ursprünglichen Ausgangszustand zurückversetzt. Dies ermöglicht, den Cursor zu verschieben, ohne daß dabei der (alte) Wert der betroffenen Pixel irgendwo festgehalten werden müßte. Das Cursor-Verschieben betrifft vier ähnliche Sektionen, diese zeichnen vier Pixel in die vier verschiedenen Richtungen (ausgehend vom Punkt an dem sich der Cursor derzeit befindet). Zuvor aber wird das betreffende Pixel complementiert (ersetzt, ergänzt) durch einen „PLOT“-Aufruf in Zeile 1420. Der erste Teil des Codes zeichnet vier Pixel aufwärts. Bevor jedes Pixel auf dem Schirm dargestellt wird, wird der Y-Wert erst noch überprüft, ob er nicht bereits den oberen Bildschirmrand erreicht hat. In diesem Fall würden keine weiteren Pixel nach oben dargestellt. Die nächste Sektion stellt vier Pixel abwärts dar; zuerst aber wird der Originalwert von Y wiederhergestellt, und zwar von der temporären Speicherstelle „TMPCRS“. Der Code für Cursor-rechts bzw. -links ist ähnlich wie der Code für auf und ab, außer daß bei der X-Position auch das High-Byte mit abgespeichert bzw. wiederhergestellt werden muß. Dies erreicht man durch die Benutzung des Stacks.

Die „PLOT“-Routine ist grundsätzlich dieselbe wie die Routine, die wir beim letzten Mal in Listing 1 benutzt haben. Der Y-Wert wird in die temporären Speicherstellen TMPLOT und TMPLOT+1 geladen. Diese Werte werden dann mit 8 multipliziert und zu den Werten in PZERO und PZER0+1 hinzuaddiert, die auf den Anfang des Bildschirmspeichers zeigen. Der temporäre Wert wird dann ein weiteres Mal mit 4 multipliziert, um „mal 32“ zu ergeben, und dann zum Pointer hinzuaddiert, so daß schließlich der Y-Wert 40mal hinzuaddiert worden ist. Die nächste Aufgabe ist, den Offset für die Zeile zu finden. Da zu jedem Byte acht Pixel gehören, müssen wir den Wert durch 8 teilen; dies geschieht in den Zeilen 2370 bis 2420. Man bemerke, daß am High-Byte von X nur eine Shift-Operation nötig ist, da nur Bit 0 benutzt wird. Dieser Byte-Offset wird dann zum Zweck des Indizierens im Y-Register abgespeichert. Nun müssen wir das passende Bit finden, das wir in diesem Byte ansprechen wollen. Dies erreichen wir, indem wir das Low-Byte des X-Wertes nehmen und es so ausmaskieren, daß nur die drei niedrigsten Bits bleiben. Diese Zahl repräsentiert nun die Bit-Zahl, auf die zugegriffen werden muß (falls wir das äußerste linke Bit als Null behandeln).

Dieser Wert wird als Zähler ins X-Register verschoben, und der Accumulator wird mit $80 geladen, so daß das äußerste linke Bit gesetzt ist. Der Accumulator wird dann so oft nach rechts verschoben, wie dies die Zahl im X-Register angibt. Der Wert von PLTMOD legt dann fest, wie wir dieses Byte auf dem Schirm plazieren. Ist er gleich „DRW“, dann wird er ganz einfach mit dem Screen-Byte „ge-OR-t“ (OR = oder! siehe 3. Teil dieser SERIE! A.K.) und wieder zurückgespeichert, wodurch die Pixel auf „an“ gestellt werden. Um Pixel zu löschen, hat PLTMOD den Wert „ERA“ (Null) und das Byte im Accumulator wird „Exclusive-ge-OR-t“ mit $FF. Dadurch wird jedes Bit invertiert, und das Bit, das gelöscht werden sollte, steht jetzt auf Null. Dieses wird „ge-AND-et‘ (AND = und), indem das Screen-Byte das passende Bit auf Null setzt und den Rest unverändert läßt. Und zum Schluß noch: Wenn wir im „Invertier“-Modus sind, wird das Byte mit dem Screen-Byte „Exclusive-ge- OR-t“, was ein Invertieren des Pixels bewirkt. Egal, welche Methode benutzt wurde, der Accumulator enthält das korrekte Byte, das in Zeile 2620 in den Bildschirmspeicher zurückgespeichert
wird.

Die letzte Routine ist “DELAY“. Sie benutzt das X- und das Y-Register, um eine veränderbare Verzögerung zu erzeugen, deren Größe von der Variablen „DELVAL“ abhängt. Die innere Schleife wird mit dem Y-Register 256 wiederholt, und dieser Vorgang wiederum wird mit der äußeren Schleife so oft wiederholt, wie dies in DELVAL angegeben wird.
Falls Ihr verstanden habt, wie dieses Programm arbeitet, dann seid Ihr vermutlich so weit, daß Ihr nun Euer eigenes Programm schreibt. Solltet Ihr Euch aber noch deutlich überfordert fühlen, dann sollten wir mit ein wenig Wiederholung beginnen.

Wie beim letzten mal versprochen, werden wir nun mit unserer detaillierten Tour durch die Atari-Hardware und das Operationssystem beginnen. Die meisten Programme, die hier angeführt werden, sind geschrieben, um zu verdeutlichen, wie ein bestimmter Teil des Rechners benutzt wird. Ihr werdet möglicherweise eine Reihe nützlicher Techniken kennenlernen, die Ihr in Euren eigenen Programmierversuchen einsetzen könnt.

The Memory Map – Die Geographie des Speichers

Wie man weiß gibt es 64 Kilobytes Speicher, die der 6502 Prozessor adressieren (ansprechen) kann. Die Aufteilung dieses Speichers auf die verschiedenen Teile des Systems wird gewöhnlich in Form einer Speicher-Karte dargestellt (Memory-Map; map heißt auf deutsch „Landkarte“, ist also nicht zu verwechseln mit einer Computer-Steckkarte, auf der man Speicherbausteine anbringen kann! Nennen wir diese „map“ also in Zukunft Speicherplan, um Verwechslungen zu vermeiden. A.K.).

Abbildung 1 zeigt den Speicherplan für alle Atari-8-BitComputer, also die Modelle 400, 800, 600XL, 800XL und 130XE (anzufügen wäre für Deutschland noch der 800XE. A.K.). Alle diese Rechner sind grundsätzlich gleich, die wesentlichen Unterschiede werden ggf. angemerkt.

Der Speicherplan gibt die Größen der wichtigen Bereiche auf der rechten Seite an, und auf der linken stehen die Adressen dieser Bereiche. Teilweise ist deren Größe in K (für Kilobyte) angegeben, um einen Überblick zu bieten. Das Operationssystem (O.S.) belegt die obersten 8K des Speichers von $E000 bis $FFFF und den 4K-Bereich von $C000 bis $CFFF. Achtung! Diese letzteren 4K sind nur bei den XL und den XE-Modellen vorhanden. Das O.S. ist- bekanntlich – dauerhaft iri einem ROM-Baustein gespeichert, so daß es immer zur Verfügung steht. Denkt daran, wollt Ihr in das ROM etwas schreiben, tut sich sich gar nichts; seinen Inhalt kann man nicht verändern. Der Grund, warum das O.S. den obersten Speicherbereich belegt, ist der, daß die obersten sechs Bytes eines Adress-Bereichs vom 6502 besonders behandelt werden. Die Speicherstellen $FFFC und $FFFD enthalten die Adressen der Routinen, die beim Einschalten des Computers als erste ausgeführt werden. Die Speicherstellen $FFFA und $ FFFB enthalten die Adressen des nicht-maskierbaren (non-maskable) Interrupts (NM I). Die Speicherstellen $FFFE und $FFFF enthalten die Adressen der Interrupt Request Routine (IRQ) (Request = Bitte, Wunsch). Die drei Adressen deuten auf eine Stelle im Bereich des O.S. Der 2K-Bereich von $D800 bis $DFFF ist ein anderer Bereich des ROM, der die Fließkomma-Software enthält, mit deren Hilfe Fließkommazahlen bearbeitet werden können. Die Fließkomma-Software kann als Teil des O.S angesehen werden. Funktionell gesehen steht sie aber für sich allein.

Die zwei 8K-Bereiche von $8000 bis $BFFF sind für die ROM-Cartridge reserviert. (Zur Information: Die alten Ataris, 400 und 800, hatten keinen ROM-Baustein eingebaut, sondern das ROM wurde extra, eben als Cartridge eingesteckt. A.K.) Die Idee, zwei separate Cartridges A und B gesondert einzustecken, stammt vom 800er Atari. Man tat das vor allem, weil es damals technisch nicht möglich war, 16K in einer einzigen Cartridge unterzubringen. Ist in einem Computer eine 8K Cartridge installiert, dann belegt diese den Bereich der A-Cartridge. Handelt es sich um eine 16KCartridge, belegt sie beide Bereiche, A und B. Anzumerken ist, daß Atari- BASIC 8K groß ist, Es wird bei den XL- und den XE-Modellen automatisch „eingeschaltet“, weil es in diesen Computern (als ROM-Chip) eingebaut ist. Nicht „eingeschaltet“ wird es entweder, well eine andere Cartridge eingesteckt wird, oder weil (beim Booten) die OPTION- Taste gedrückt wurde.

Die Größe des RAM-Speichers ist je nach Computer unterschiedlich. Er ist jedoch immer ab Speicherstelle Null vorhanden und erstreckt sich von da „nach oben“. Angenommen, man hat mehr als 32K Speicher, dann steht dieser Bereich zur Verfügung, falls keine Cartridges benutzt werden. Ansonsten kann er zwar Daten enthalten, ist aber für Programme nicht zugänglich. Das selbe Prinzip gilt für die XL- und XE-Computer, die in den oberen 16K versteckten Speicher haben, der (nur unter bestimmten Bedingungen A.K.) zugänglich gemacht werden kann.

Die Hardware

Wir beenden diese Folge mit dem Starten einer Überprüfung des 2K-Bereichs von $D000 bis $D7FF, der die Hardware enthält. Wir haben bereits zwei dieser Speicherstellen in unserem Programm benutzt, nämlich CONSOL und RANDOM. Wenn wir auf diese „Speicherstellen“ zugreifen, greifen wir in Wirklichkeit auf einen der Spezial-Chips des Atari zu.

Die Bereiche, die für die vier Spezial-Chips benutzt werden, sind folgende: Der GTIA belegt $D000 bis $DOFF, der POKEY $D200 bis $D2FF, der PIA $D300 bis $D3FF und der ANTIC $D400 bis $D4FF. Tatsächlich werden nur ganz wenige dieser Speicherstellen, die für diese Chips reserviert sind, genutzt. Die Hardware-Speicherstellen in diesen Chips werden gewöhnlich als Register bezeichnet, aber die Art und Weise, wie auf diese Register zugegriffen werden kann, ist von Register zu Register verschieden. Es handelt sich um folgende Möglichkeiten: Manche Register sind read/write Register (d.h. man kann Daten auslesen und hineinschreiben. A.K.). Sie verhalten sich also wie RAM-Speicherstellen. Aus anderen können nur Daten gelesen werden. Sie verhalten sich als wie ROMs. In wieder andere kann nur geschrieben werden, d.h. man kann das, was hineingeschrieben wurde, nicht wieder auslesen. Die Nur-Leseund die Nur-Schreib-Register belegen oft diesselbe Speicherstelle. Das bedeutet, beim Schreiben greift man nur auf das eine Register zu und beim Lesen nur auf das andere. Und schließlich gibt es noch ein paar Register, die einfach dadurch aktiviert werden, daß man in sie Daten reinschreibt., d.h. es ist egal, welche Daten dort reingeschrieben werden.

Beim nächsten Mal machen wir mit dem Untersuchen der Hardware weiter. In der Zwischenzeit empfehle ich dringend, daß Ihr Euch ATARI’s TECHNICAL REFERENCE NOTES besorgt, falls Ihr noch kein vernünftiges Handbuch über die Hardware und das O.S. besitzt. Dieses Buch enthält ein komplettes Listing des 400/800 Operations System, sowie technische Zeichnungen der Schaltungen des Atari. Es kann sein, daß diese Texte ein bißchen schwer zu lesen sind (Heavy Stuff!), aber sie sind sehr wichtig und sehr nützlich. Ein etwas praktischeres Buch, das ich hier nochmal empfehlen will, ist COMPUTE!’s MAPPING THE ATARI (XL/XE Version).

0100 SAVMSC = $58 ;Screen pointer.  0110 STICKO	= $0278	;Joystick 0 value.  0120 STRIGO	= $0284	;Joystick 0 button value. 0130 CH	= $02FC ;Key press value.  0140 CONSOL = $D01F	;Consol keys. 0150	#= $CB	;Set to page zero area. 0160 PZERO #= 4+2 ;Pointer to access screen
.  0170 TMPLOT #= 4+2 ;Temporary for screen access.  0180 PLTMOD #= #$1 ;Plotting mode.  0190 COLOUR #= #+1	;Colour value. 0200 XPOS	#. 4+2	;Current X position.  0210 YPOS #= #+1 ;Current Y position.  0220 CURSON 4= #+1 ;Cursor on/off flag.  0230 TMPCRS #= 4+1 ;Temporary to hold X or Y. 0240 DELVAL #= #+1	;Delay value. 0250 COUNT	4= #+1	;Count value. 0260 XMAX	319	;Maximum X pixel number.  0270 YMAX	= 191	;Maximum Y pixel number. 0280 SLOW	= $10	;Slow speed delay value. 0290 FAST	= 1	;Fast speed delay value. 0300 ERA	= 0	;Erase colour. 0310 DRW	1	;Drawing colour.  0320 INV	$FF	;Inverse mode. 0330	#= $5000 ;Start program at 20K. 0340 PLA	;Clean up stack. 0350 LDA	#XMAX/2	;Load half of maximum X value. 0360 STA	XPOS	;Save as start X position. 0370 LDA	#0	;Set high byte of 0380 STA	XPOS+1	; X position to zero. 0390 LDA	#YMAX/2	;Load half of maximum Y value  0400 STA	YPOS	;Save as start Y position 0410 LDA	#DRAW	;Set initial colour  0420 STA	COLOUR	; to 'draw'. 0430 LDA	#SLOW	;Set initial delay  0440 STA	DELVAL	; to 'slow'. 0450 JSR	CURSOR	;Draw the cursor.  0460 LDA	#$FF	;Set cursor flag  0470 STA	CURSON	; to 'on'. 0480 STA	CH ;Reset key code value. 0490LOOP LDA	CONSOL	;Get consol keys. 0500 CMP	#7	;lt any are down 0510 BNE	EXIT	; then exit. 0520 LDA	CH	;Get key code. 0530 CMP	#$FF	;If no key 0540 BEQ	TSTICK	; then skip key tests.  0550 CMP	#$3A	;See if it is code for 'D'  0560 BNE	TSTERA	;No, then try next. 0570 LDA	#DRW	;Set colour 0580 STA	COLOUR	; to 'draw'. 0590 JMP	RSETCH ;Skip rest of key tests. 0600 TSTERA CMP	#$2A	;See if 'E'. 0610 BNE	TSTSLW	;No, then try next. 0620 LDA	#ERA	;Set colour  0630 STA	COLOUR	; to 'erase'.  0640 JMP	RSETCH ;Skip rest. 0650 TSTSLW	CMP	#$3E	;See if 'S'. 0660 BNE	TSTFST	;No, then try next. 0670 LDA	#SLOW	;Set speed 0680 STA	DELVAL	; to 'slow'. 0690 JMP	RSETCH	;Skip last test. 0700 TSTFST CMP	#$38	;See if 'F'. 0710 BNE	RSETCH	;Skip if not. 0720 LDA	$FAST	;Set speed 0730 STA	DELVAL	; to fast. 0740 RSETCH	LDA	#5FF	;Reset key code. 0750 STA	CH 0760 TSTICK	LDA	STICK()	;Get stick value. 0770 CMP	#$OF	;lt no movement 0780 BEQ	TSTBUT	; then skip. 0790 JSR	CURSOR	;Else turn off cursor. 0800 JSR	MOVE	;Update X and Y position. 0810 TSTBUT LDA	STRIGO	;Get button value. 0820 BNE	DRWCRS	;Skip if up. 0830 LDA	CURSON	;Else see if cursor is off. 0840 BEQ	PLTPNT	; Yes, then skip. 0850 JSR	CURSOR	;Else turn it off. 0860 PLTPNT LDA	COLOUR	;Get current colour. 0870 STA	PLTMOD	;Save as plotting mode. 0880 JSR	PLOT	;Plot the current point. 0890 DRWCRS LDA	CURSON	;See if cursor is on. 0900 BNE	LOOP	;Yes then go to start. 0910 JSR	CURSOR	;Else turn cursor back on. 0920 JSR	DELAY	;Produce a delay. 0930 JMP	LOOP	;Go to start.  0940 EXIT LDA	#$FF	;Clear any 0950 STA	CH	; key code 0960 RTS	;Return. 0970 0980 Move X and Y depending on stick value. 0990 MOVE LDA	STICK()	;Get stick value. 1000 AND	#1	;Look at 'up' bit 1010 BNE	DOWN	;Skip if not down. 1020 LDA	YPOS	;Get Y value. 1030 BEQ	LEFT	;Skip if at zero. 1040 DEC	YPOS	;Else decrement Y. 1050 JMP	LEFT	;Go to 'IC' test. 1060 DOWN LDA	STICK()	;Get stick 1070 AND	#2	; 'down' bit. 1080 BNE	LEFT	;I1 not down then skip. 1090 LDA	YPOS	;Else get Y value. 1100 CMP	#YMAX	;If at maximum 1110 BEQ	LEFT	; then skip. 1120 INC	YPOS	;Else increment Y value. 1130 LEFT LDA	STICKO	;Get stick 1140 AND	#4	; left bit. 1150 BNE	RIGHT	;Skip if not down. 1160 LDA	XPOS	;Get X value. 1170 BNE	LEFT2	;If not zero then OK.	' 1180 LDA	XPOS+1	;Else if high byte is 1190 BEQ	MOVEXT	; zero then skip rest. 1200 DEC	XPOS+1	;Else decrement high byte as well. 1210 LEFT2 DEC	XPOS	;Decrement low byte of X. 1220 JMP	MOVEXT	;Skip 'right' test. 1230 RIGHT LDA	STICK()	;Get stick 1240 AND	#8	; 'right' value. 1250 BNE	MOVEXT	;Skip if not down. 1260 LDA	XPOS+1— ;Get X high byte. 1270 BEQ	RIGHT1	;If zero OK. 1280 LDA	XPOS	;Else if X low byte 1290 CMP	#XMAX&$FF ; is at maximum then 1300 BEQ	MOVEXT	; skip rest. 1310 RIGHT1 INC	XPOS	;Increment low byte. 1320 BNE	MOVEXT	;Skip if not zero. 1330 INC	XPOS+1	;Else adjust high byte. 1340 MOVEXT RTS	;Return 1350 1360 ;Draw cursor in 'inverse' mode. 1370 CURSOR LDA	CURSON	;Get cursor state. 1380 EOR	#$FF	;Flip state. 1390 STA	CURSON	;Save back 1400 LDA	#INV	;Set plot mode 1410 STA	PLTMOD	; to 'inverse' Listing 1     1420 JSR	PLOT	;Plot current point. 1430 LDA	YPOS	;Save Y value. 1440 STA	TMPCRS 1450 LDA	#4	;Set count to 4 pixels. 1460 STA	COUNT 1470 CRSUP1 LDA	YPOS	;Get Y value. 1480 BEQ	CRSDN ;If zero then skip. 1490 DEC	YPOS	;Else decrement it. 1500 JSR	PLOT	;Plot point. 1510 DEC	COUNT ;Decrement count 1520 BNE	CRSUP1 ;Continue if more. 1530 CRSDN LDA	TMPCRS ;Restore Y value. 1540 STA	YPOS 1550 LDA	#4	;Resetcount. 1560 STA	COUNT 1570 CRSDN1 LDA	YPOS	;Test Y value. 1580 CMP	#YMAX ; against maximum. 1590 BEQ	CRSLT	;Skip if equal. 1600 INC YPOS	;Else increment lt. 1610 JSR PLOT	;Plot point. 1620 DEC COUNT ;Decrement count. CRSDN1  1630 BNE ;Continue if more. 1640 CRSLT TMPCRS  LDA	;Restore Y value. YPOS 1650 STA XPOS	;Save X value. TMPCRS 1660 LDA XPOS+1 ;Save X high byte  1670 STA ; on the stack. 1680 LDA #4	;Resetcount. COUNT 1690 PHA XPOS	;See if X is zero. CRSLT2  1700 LDA ;OK if not. 1710 STA XPOS+1 ;Else if high byte CRSRT	 1720 CRSLT1	; zero then skip. LDA	XPOS+1 ;Else decrement high byte. 1730 BNE  1740 LDA XPOS	;Decrement low byte. 1750 BEQ PLOT	;Plot point. 1760 DEC COUNT  1770 CRSLT2	;Decrement count. CRSLT1  DEC	;Continue if more. 1780 JSR  1790 DEC TMPCRS ;Restore X value. 1800 BNE XPOS 1810 CRSRT	;Get high byte and save LDA	; another copy on the steck. XPOS+1  1820 STA ;Restore high byte. #4	 1830 PLA ;Resetcount. 1840 PHA COUNT 1850 STA LDA	XPOS+1  1860 LDA ;Get high byte. CRSRT2  1870 STA ;OK if zero. 1880 CRSRTI  1890 BEQ XPOS	;Else test low byte against #XMAX&SPF 1900 LDA ; Maximum value. 1910 CMP CRSEX	;If equal then skip. 1920 BEQ  1930 CRSRT2 XPOS	;Else increment low byte.  CRSRT3 INC	;Skip if not zero. 1940 BNE XPOS+1 ;Increment high byte. 1950 INC  1960 CRSRT3 PLOT	;Plot point. JSR	COUNT ;Decrement count. CRSRT1  1970 DEC ;Continue if more. 1980 BNE  1990 CRSEXT TMPCRS ;Restore X low byte. XPOS LDA	 2000 STA  2010 PLA  2020 STA ;Restore X high byte. XP0S+1 2030 RTS	;Return. 2040 ; 2050 ;Plot a point at current X and Y.  2060 PLOT	LDA	SAVMSC ;Copy screen pointer 2070 STA	PZERO	; into our pointer. 2080 LDA	SAVMSC+1 2090 STA	PZER0+1 2100 LDA	YPOS	;Get Y value. 2110 STA	TMPLOT ;Save in temporary location. 2120 LDA	#0	- ;Set high byte to zero. 2130 STA	TMPLOT+1 2140 LDX	#3	;Set for eight times  2150 MULT8	ASL	TMPLOT ;Shift left on both bytes. 2160 ROL	TMPLOT+1 2170 DEX	;Decrement count 2180 BNE	MULT8	;Loop. 2190 LDA	PZERO ;Get pointer value.  2200 CLC 2210 ADC	TMPLOT ;Add low byte. 2220 STA	PZERO ;Save back. 2230 LDA	PZER0+1 ;Same for high byte. 2240 ADC	TMPLOT+1 2250 STA	PZER0+1 2260 ASL	TMPLOT ;Shift twice more 2270 ROL	TMPLOT+1 ; to get 32 times. 2280 ASL	TMPLOT 2290 ROL	TMPLOT+1 2300 LDA	PZERO ;Add to pointer value.  2310 CLC 2320 ADC	TMPLOT 2330 STA	PZERO 2340 LDA	PZER0+1 ;And high byte 2350 ADC	TMPLOT+1 2360 STA	PZER0+1 2370 LDA	XPOS+1 ;Get high byte of X. 2380 LSR	A	;Shift low bit into carry. 2390 LDA	XPOS	;Get low byte. 2400 ROR	A	;Rotate carry in. 2410 LSR	A	;Shift twice more to 2420 LSR	A	; divide X by a total of 8. 2430 TAY	;Save in Y register as index. 2440 LDA	XPOS	;Get low byte of X. 2450 AND	#7 ;Mask to get low three bits. 2460 TAX	;Move to X register. 2470 LDA	#$80	;Load with high bit set. 2480 SHIFT	DEX	;Decrement count. 2490 BM!	PLOT1	;Skip if shifting finished. 2500 LSR	A ;Else shift. 2510 JMP	SHIFT	;Continue if more.  2520 PLOT1	LDX	PLTMOD ;Get plotting mode. 2530 BEQ	ERASE	;If zero then 'erase' mode. 2540 CPX	#DRW	;lt 'draw' mode then 2550 BEQ	DRAW	; skip to it. 2560 EOR	(PZER0),Y;'Exclucive-or for 'inverse'. 2570 JMP	PLTEXT ;Skip rest.  2580 DRAVV	ORA	(PZER0),Y; 'Or' for 'draw' mode. 2590 JMP	PLTEXT ;Skip rest. 2600 ERASE	EOR	#4$FF	;Invert bits. 2610 AND	(PZER0),Y; and 'and' for 'erase'. 2620 PLTEXT	STA	(PZER0),Y;Save value back to screen. 2630 RTS	;Return. 2640; 2650 ;Produce a small delay. 2660 DELAY	LDX	DELVAL	;Get delay value. 2670	DELAY1	 LDY .	#$FF	;Inner delay loop. 2680	DELAY2	 DEY	 2690	BNE	DELAY2	;Loop. 2700	DEX	;Decrement o
uter loop value. 2710	BNE	DELAY1	;Loop. 2720	RTS	;Return. Listing 2    QZ 10 DIM HEX$(16) TU 20 LINE=10000:TRAP 100:J=0:START=20480  VA 30 READ HEX$,CHKSUM:SUM=0 AA 40 FOR 1=1 TO 15 STEP 2 ZG 50 D1=ASC(HEX$(1,1))-48:D2=ASC(HEX$(1+1,1+1))-48  KT 60 NUM=((D1-7#(D1>16))#16+(D2-7#(D2>16))) LW 70 SUM=SUM+NUM:POKE START+J,NUM:J=J+:NEXT I  LY 80 IF SUM=CHKSUM THEN LINE=LINE+10:GOTO 30  IN 90 ? "Checksum error an this line:" VO 95 LIST LINE:END YS 100 PRINT "Data in memory." QM 10000 DATA 68A99F85D1A90085,1076  JG 10010 DATA D2A95F85D3A90185,1121  ET 10020 DATA DOA91085D620DB50,1071  WE 10030 DATA A9FF85D48DFCO2AD,1337  KO 10040 DATA 1FD0C907D062ADFC,1178  TN 10050 DATA 02C9FFF02EC93AD0,1211  KX 10060 DATA 07A90185D04C5650,760  MH 10070 DATA C92ADOO7A90085D0,968  EH 10080 DATA 4C5650C93ED007A9,889  BE 10090 DATA 1085D64C5650C938,862  NY 10100 DATA D004A90185D6A9FF,1153  IX 10110 DATA 8DFCO2AD7802C90F,906  KO 10120 DATA F00620DB50208E50,831  GJ 10130 DATA AD8402D00EA5D4F0,1146  FC 10140 DATA 0320DB50A5D0B5CF,1047  WF 10150 DATA 206151A5D4D0A020,987  FG 10160 DATA DB5020CC514C1F50,803  BB 10170 DATA A9FF8DFCO260AD78,1208  IM 10180 DATA 022901 D009A5D3F0,877  MG 10190 DATA 14C6D34CAD50AD78,1051  KD 10200 DATA 022902D008A5D3C9,838  KB 10210 DATA BFF002E6D3AD7802,1169  IS 10220 DATA 2904DOOFA5D10006,856  TP 10230 DATA A5D2F01EC6D2C6D1,1460  DT 10240 DATA 4CDA5OAD78022908,718  QY 10250 DATA D010A5D2F006A5D1,1219  WZ 10260 DATA C93FF006E6D10002,1159  TE 10270 DATA E6D260A5D449FF85,1374  BQ 10280 DATA D4A9FF85CF206151,1186  XB 10290 DATA A5D385D5A90485D7,1243  CA 10300 DATA A5D3F009C6D32061,1163  NC 10310 DATA 51C6D7D0F3A5D585,1456  OK 10320 DATA D3A90485D7A5D3C9,1309  ZO 10330 DATA BFF009E6D3206151,1091  WP 10340 DATA C6D7D0F1A5D585D3,1584  JG 10350 DATA A5D185D5A5D248A9,1336 JY 10360 DATA 0485D7A5D1D006A5,1105  YS 10370 DATA D2FOOBC6D2C6D120,1308  WT 10380 DATA 6151C6D7DOEDA5D5,1414  BM 10390 DATA 85D1684885D2A904,1034  YZ 10400 DATA 85D7A5D2F006A5D1,1343  EE 10410 DATA C93FFOODE6D1D002,1166  NK 10420 DATA E6D2206151C6D7D0,1271  RY 10430 DATA E9A5D585D16885D2,1400  RK 10440 DATA 60A55885CBA55985,1072  YU 10450 DATA CCA5D385CDA90085,1220  IM 10460 DATA CEA20306CD26CECA,1028  DA 10470 DATA D0F9A5CB1865CD85,1288  CE 10480 DATA CBA5CC65CE85CC06,1222  RR 10490 DATA CD26CEO6CD26CEA5,1069  WE 10500 DATA CB1865CD85CBA5CC,1238  GN 10510 DATA 65CE85CCA5D24AA5,1258  GM 10520 DATA D16A4A4AA8A5D129,1046  DR 10530 DATA 07AAA980CA30044A,802  CF 10540 DATA 4CAC51A6CFFOOEE0,1180  VA 10550 DATA 01F00551CB4CC951,888  FO 10560 DATA 11CB4CC95149FF31,955  LU 10570 DATA CB91CB60A6D6AOFF,1442  PT 10580 DATA 88D0FDCADOF860,1351

Bericht zur Hanau-Messe

Also, nun ist die Messe schon wieder ganze vier Wochen um, höchste Zeit also, daß mal jemand einen Bericht darüber verfaßt. Da ich mich für diesen Part habe verpflichten lassen, nichtsahnend, daß ich dafür einen Monat brauche, erfülle ich mal hierund eben meine Pflicht…

Nun denn, wer war denn alles da und was gab es zu sehen, bzw. was war neu ???

Die Messe fand glücklicherweise am 12.5.1996 statt.

Man schrieb Sonntag, ein Tag an dem nur sehr wenige arbeiten müssen und zugleich ein Monat in dem noch nicht alle im wohlverdienten 40 Stunden-Urlaub waren… Beste Voraussetzungen also, um eine schöne Atari-8-Bit Messe abzuhalten.

Ein Tag an dem auch (fast) alle kamen. Jedenfalls von den Händlern…

Wer in Hanau weilte, der traf u.a. KE-SOFT und Company, KAISERSOFT und Team, die RAF (nein, nicht die RAF, sondern die Regionalgruppe des ABBUC aus Frankfurt, sprich T.Grasel und Co.), Joost Küp (Bauplanservice!), Markus Rößner (Mr. Ex-POWERSOFT !!!), Stefan Lausberg (Ex-S.1.), die AMC Notvertretung (meinereiner selbst), den JAG und LYNX Freak (T.Schall), die RAM-Vertretung (T.Hang), sowie einen mir unbekannten VCS-Aussteller (!!!).

Im Großen und Ganzen also knapp zehn Aussteller und Händler, wobei natürlich mal wieder nur die fehlten, die halt immer fehlen (PPP) oder die, die keiner eingeladen hat (KP+UP). Aber Schwamm drüber, es war eine gute und umfangreiche Messe auf der es viel, wenn auch nicht allzuviel neues zu sehen gab.

Betrat man die kleine Messehalle (die eigentlich eine gute Kneipe ist), so traf man als erstes auf den Stand von KE-SOFT Kemal Ezcan. Hier gab es jede Menge an Software zu besonders günstigen Preisen, so z.B. Soft für 5DM, und 10DM, sowie Soft für 20DM und Restposten. Auffallend war hier neben den teilweise sehr günstigen Preisen, vor allem die neu importierten Spiele aus England, die es auf Original – Kassette nebst kostenloser CSIM-DISK zu erstehen gab. Außerdem fand man in der Restposten – Ecke jede Menge von INFOCOM und SSI – Klassikern…

Als nächstes kam der Stand von Thomas Grasel, der auf der Messe sein SIO2PC, sein Schaltnetzteil und sein digitales Voltpotentiometer ausstellte. Da ich ja leider selbst einen Stand zu betreiben hatte kann ich hierzu nichts konkretes sagen (und bin mir noch nicht mal sicher, ob die Bezeichnung der Geräte so stimmt…), denn die paar Pausen die ich hatte, nutzte ich zum Einkauf von Software. Ich denke Thomas wird (hoffentlich) in einem der nächsten Magazine seine Hardware noch mal ausführlich vorstellen (besser als ich das hier je könnte) und man wird sie wohl auch auf der ABBUC-JHV sehen.

Was ich aber noch weiß ist, daß ich hier ein paar billige Literatur – Restposten für unsere Leihbibliothek erstanden habe. Als dritter Stand präsentierte sich Joost Küp, bei dem man einige Baupläne und Anleitungen bestellen konnte, sowie ein wenig Literatur gleich an Ort und Stelle mitnehmen konnte. Dies war aber nur eine Auswahl einiger weniger Anleitungen, die Joost zur Messe mitgebracht hatte, denn schließlich wiegt das Zeug mehr, als es sich auf Messen verkauft!!

Hier habe ich mir gleich ein paar Anleitungen mitgeommen und die leider nie mitgeführte MY-DOS Anleitung bestellt (warum denn immer nur SPARTADOS ???).

Auch wurde von mir hier der Vorschlag gemacht, doch öfter mal auf Messen, besonders aber auf der JHV, die bisher erschienenen ABBUC-MAGAZINE und SONDER-MAGAZINE, sowie die JAHRESGABEN mitzuführen, denn schließlich ist nicht jedes Mitglied von Anfang an dabei.

Joost ergänzte meinen Vorschlag mit der Idee, dann auch gleich ein paar passende Softwarepakete (Anwendungen, Spiele,…) zusammenzustellen und diese den BIT-BYTERN preisgüstig anzubieten, Mal sehen, ob daraus schon bald was wird…

Direkt neben JOOST hatten sich Markus Rößner und, Stefan Lausberg einen Stand geteilt, bei den beiden gab es neben den News über POWERSOFT (Verträge mit Kay Hallies sind inzwischen abgeschlossen und dieser vertreibt nun alle Soft- und Hardware, die man von Markus her kennt), eine Menge Software-Restposten zu erstehen, die die beiden noch aus ihrer privaten Sammlung übrig hatten.

Besonders hervorstechend war, daß bei Markus wohl noch ein paar Polengames übrig sind, die er noch auf weiteren Messen anbieten möchte…

Als nächstes präsentierte sich der Chaos-Stand des AMC, an dem ein gewisser A.M. für „Ordnung“ sorgte (aber vergeblich). Meinereiner hatte sozusagen in letzter Minute erfahren, daß Armin im Krankenhaus weilte (inzwischen nach ca. vier Wochen ist er wieder daheim – und demnächst in der längst überfäligen Kur…) und so hatte ich mich entschlossen, nicht am Stand der RAM auszuhelfen (deren Stand ich hier bewußt in der Reihenfolge übergangen habe), sondern Armin so gut es nur ging zu vertreten.

Beim AMC gab es dann halt notgedrungener maßen nur die übliche AMC-Software, sowie einige Restposten und Kassetten, lediglich meine eigene Soft, die ich zum Verkauf mitgebracht hatte rundete das Angebot ab. Die oft gefragte PORTRONIC-Hardware hatte Armin aus gesundheitlichen Gründen nicht fertigstellen können.

Ich wünsche für Armin alles gute und hoffe nur, daß er zum 15-jährigem AMC-Jubiläum, auf der ABBUC-JHV wieder voll dabei ist, denn dieser `alte Hase“ hätte es redlich verdient sein Jubiläum bei guter Gesundheit zu feiern, denn wer sonst kann schon von sich sagen, daß er schon so lange dabei ist (und früher auch mal Mitarbeiter bei ATARI gewesen ist).

Zwischen dem AMC und dem Stand von R?ner/Lausberg befand sich der Stand der RAM, der durch Thobias Hang, aus besagten Gründen, alleine, vertreten wurde. Meinereiner war am AMC-Stand, Thorsten Schall befand sich am Jaguar-Stand, Markus Rößner hatte den KAISERSOFT bzw. TOP-MAG-Stand und Raimund Altmayer weilte aus privaten Gründen Zuhause bei seiner Freundin (nein, um alle Spekulationen auszuschließn: sie erwartete kein Kind, schließlich erwartet man das doch woanders … ).

Thobias nutzte die Gunst der Stunde und bot denn auch gleich ein paar selbsthergestellte Disks zum Kauf an, u.a. sog. „HOT BABES l+2“, „Startrek“ und eine „ICON-DISK“. Wer sie auch jetzt noch haben möchte kann sie bei der RAM bestellen, Außerdem führte Thobias für die RAM die Literatur-Umfrage („Was halten Sie von einer Leihbibliothek“, usw.) durch und kümmerte sich um die Infoweitergabe bezüglich unseres Vorhabens, Bücher zu verleihen.

Am Ende des Gangs angelangt fand man den JAG/LYNX-CORNER, von Thorsten Schall, der hier die neueste „Wunderkiste“ und 64-Bit Spielekonsole von Atari, nämlich den Jaguar vorstellte. Hier konnte man Jaguars + Software kaufen und jede Menge (unverkäuflicher Spiele) Probe spielen. Sound und Grafik mäßig dürfte das die meisten umgehauen haben, denn was hierzu sehen war, war teilweise besser, als die meisten PC-Games…

Ging man dann auf der anderen Seite den Weg zurück, so fand man als nächstes einen größeren Stand mit reichlich Oldie-Hard- und Software. Hier waren doch glatt ein paar mir unbekannte VCS-FREAKS am Werk und stellten die beliebteste und bis heute meistverkaufte Konsole der Welt, genannt ATARI VCS 2600, nicht nur aus, sondern boten diese und weitere OLDIE-KONSOLEN nebst Software zum Kauf an. Zu sehen gab es dabei VCS 2600+7800, ein Atari-Prototyp (Konsole mit eingebautem Rennspiel, sah aus wie ein abmontiertes Autolenkrad und gibt es garantiert nicht öfter als 10-12 Mal !!!), MATELL-INTELLIVISION, VECTREX (KULT-Konsole, bei der der Monitor gleich dabei ist!!!), sowie eine Reihe mir unbekannter Geräte. Auch fehlten hier die alten 400/800 Atari Computer und die wohlbekannten XL Typen nicht, diese gab es mit weiterem Zubehör (Floppies, Datenrekorder, Drucker, etc.) ebenfalls zu kaufen.

Wer nur mal etwas schnuppern wollte, der freute sich hier bestimmt, eine gut sortierte Hardwaresammlung vorzufinden – und das Schöne dabei: der Aussteller veraufte nicht nur, sondern gab auch jede Menge Infos zu den Geräten und ließ einem gerne Probe spielen…

Als nächste, letzte und viel zu spät (12.30 Uhr) eingetroffene Freaks, präsentierten KAISERSOFT und das TOP-MAG ihren Stand. Hier gab es jede Menge frisch importierter und meines Wissens nach neuester POLENSOFTWARE. Wer diesen Games nicht abgeneigt ist, der konnte hier zum Messepreis zugreifen. Daß das TOP-MAG hier auch zu haben war und abonniert werden konnte brauche ich wohl kaum weiter zu erwähnen. Lustig fand ich, daß auch hier die „billigen` Polengames getestet wurden – und dies nicht nur von den Käufern, sondern zeitweilig von den Verkäufern selber. Wie schön war es da, so manches, einem wohl vertrautes, Spielergeräusch („MIST, SCH…. GOIL EY, COOL MAN, BOAH EY, usw.) wahrzunehmen, in dem Bewu?sein, es geht nicht nur einem selbst so, oder so, oder so ähnlich, oder doch nicht, oder überhaupt…

Tja, und das war sie, die Hanau-Messe, na ja, fast. Begonnen hatte alles wieder mal um 9.00 Uhr mit dem aufbauen der Ausstellerstände. Da es wieder mal keine Standgebühr gab und der Eintritt auch umsonst war (irgend so ein doofer Trottel hatte die Messe gesponsert, er hat große Ähnlichkeit mit meinem Spiegelbild…), kamen neben den sonst üblichen gewerblichen Händlern auch ein paar private Aussteller, alles in allem so ca. 10 Stände mit ca. 20 Leuten.

Gegen 10.30 Uhr trafen denn auch die ersten Besucher ein („Hallo Helmut!! Hallo Diana und Jenny !!!“), bis um ca. 11.30 Uhr waren es jedoch nicht allzuviele. Erst ab dieser Uhrzeit kam die Messe einigermaßen in Schwung (nur was die Käufermasse angeht, die Stimmung war auch so gut !!!) und hielt so bis ca. 14.00 Uhr, als die ersten schon wieder vom Heimweh gepackt wurden und ihre Rückreise antraten. Gegen 15.30 Uhr begann man mit den allgemeinen Aufräumungsarbeiten und so um 16.00 Uhr war die Messe eigentlich beendet

Eigentlich, denn noch immer war ein Stand noch nicht auf – geschweige denn abgeräumt. Die Jungs von KAISERSOFT waren so sehr in ihrem Spieltrieb vertieft, daß sie die ganze Aufbruchstimmung einfach nicht bemerkten oder ganz einfach Ignorierten. Und da sage noch einer 8-BIT Spiele seien zu langweilig…

Erwähnenswert sei vielleicht noch, daß au
f dieser Messe auch ein paar (wenige) kostenlose Verlosungen stattfanden, die von einem Mitglied der HAR (Hallo Herr Volpini wunderbar und lautstark ausgelost wurden.

So konnten denn so ca. 20 der ebenfalls ca. 40-50 Anwesenden Käufer völlig umsonst ein paar 8-Bit-Preise ergattern.

Und auch die Jungs von ANG wurden f? kurze Zeit gesichtet (als sie kamen, war die Messe jedoch ? fast vorbei), sie waren jedoch nur als Besucher und Uberbringer der neuesten SIO2PC-SOFT anwesend. Aber immerhin sie waren da !!

Und wo wart ihr alle ??? – Wollen wir doch hoffen, daß ihr wenigstens zur ABBUC-JHV oder zur nächsten SCHREIERSGRÜNER-MESSE (März 97′) erscheinen werdet, denn eines ist jetzt schon sicher: ohne Besucher keine Messe !!

Aber: die nächste Messe kommt ganz bestimmt… In diesem Sinne: Greetings and bye bye,

Andreas Magenheimer (CHARLIE CHAPLIN)

 

Gewinne & Preise ?!!

(von A.Magenheinner)

Ich hatte mir in einem Artikel in Magazin # 45 gewünscht, daß möglichst viele Freaks sich an derABBUC-JHV 1996 mit einer selbstprogrammierten Demo beteiligen – und ehrlich gesagt ich hoffe das nach wie vor. Zugleich hatte ich aber auch einige Preise für die besten Demos oder die besten Democoder versprochen.

Nun, ich werde mein Versprechen halten, denn dies Versprechen ist kein Versprecher, sondern abgemacht und ausgemacht und TOP, die Wette gilt…

Gleichzeitig habe ich mir in einem anderen Artikel gewünscht, daß ein paar fleißige Magazinleser doch so nett sein sollten und einige von mir eingeschickte (aber nicht von mir programmierte) Anwendungen so zu ergänzen oder zu erweitern, daß diese dann auch problemlos unter Double – Density (180kb, 256 Bytes pro Sektor) laufen würden.

Anmerkung der Redaktion: Aufruf und Programme sind duf dem letzten Sondemagazin 

Für alle, diejenigen unter Euch, die sich nun an dem ein oder anderen Aufruf beteiligen werden, wird es dann auch eine kleine Belohnung geben. Na ja, für fast alle, denn wir (=ich) haben immerhin 20 verschiedene Preise zusammen gesammelt, die wir als Gewinne zur Verfügung stellen wollen. Darunter befinden sich unter anderem so tolle Sachen, wie ein Original THE PRINTSHOP, mitsamt allen Goodies, eine neue XEP80, die 8-Bit 80-Zeichenkarte, ein besonders ausgefallener 4-BIT-SAMPLER, mit Modul + Disk und Ramdiskunterstüzung bis 256kb, das Spiel MERCENARY auf Diskette, zwei Kassettenpakete und zahlreiche weitere (kommerzielle) Software.

Wie man also sehen kann: das mitmachen lohnt sich – und obwohl ich sonst der Meinung bin, daß Demos nicht belohnt werden sollten, so machen wir f? die JHV eineAusnahme, in der Hoffnung, daß sich recht viele beteiligen und dem Demoaufruf folgen, Gleiches gilt auch für die zu erweiternden Anwendungen, wersich hier beteiligt und f?ein entsprechend gutes (und vor allem: funktionstüchtiges) Ergebnis sorgt, dem ist ein Preis schon so gut wie sicher. Was die Preisvergabe betrifft, so will ich das folgender- maßen handhaben: die Preise für die JHV-Demos werden direkt auf dieser Messe ausgehandelt, es sollten wenn möglich die Besucher
über das beste Demo abstimmen. Dies setzt natürlich voraus, daß genügend Leute da sind (ihr kommt doch alle, oder??), die abstimmen können und das alle angefertigten Demos am Messetag zur Begutachtung vorliegen. Sollte dies irgendwie nicht der Fall sein, so werde halt ich persönlich meine rein subjektive Entscheidung treffen und entsprechend die von mir gestifteten Preise vergeben.

Bei den Anwendungen werde ich ein wenig anders verfahren, ich hoffe einfach, daß bis zum Ende dieses Jahres genügend Einsendungen beim ABBUC vorliegen, bzw. im Magazin veröffentlicht wurden und werde dann je nach Teilnehmerzahl, entweder allen Einsendern oder aber (wenn viele mitmachen) den besten Programmierern einen Gewinn überreichen.

Als Einsendeschluß für den Demoaufruf gilt also zunächst dieABBUC-JHV (im Oktober 96′), für die umzuprogrammierenden Anwendungen setze ich mal so eben den 1. November fest (bin aber durchaus bereit den Termin noch weiter vor – oder zurück zu verlegen). Alle genauen Termine werden natürlich vorher noch mal bekannt gegeben, bevor es dann zur Preisverleihung
geht. Die Gewinner werden natürlich ebenfalls im Magazin bekanntgegeben. Der Rechts- und Linksweg sind wie immer ausgeschlossen, und wer Fragen oder Beschwerden vorzubringen hat, der lese die Packungsbeilage oder konsultiere seine hübsche Ärztin und/oder Apothekerin.

Na dann, happy computing & happy programming Atari lives !!!

Good bye ANDREAS MAGENHEIMER

Floppy 2000 Error Disks:

(von A. Magenheimer)

Wie im Artikel „Floppy 2000-eine Nachbetrachtung‘, schon erwähnt, handelt es sich bei der F2000 um eine Industriefloppy, die mit 290 UPM, statt herkömmlicher 288 UPM läuft. Dies führt bei einigen kopiergeschützten Disks dazu, daß diese auch bei abgeschalteter Speedy nicht laufen, denn die Floppy läuft auch im SLOW-MODE immer noch mit 290 UPM.

Zu den Disketten die dies reichlich übelnehmen -und das mit einem ERROR quittieren gehören folgende:

1 .) INTERNATIONAL KARATE

(auch bekannt als WORLD KARATE oder KARATE INTERNATIONAL; von LEVEL 3, jenen Leuten, die auch THE LAST NINJA codeten… )

2.) OPERATION BLOOD LIGHGUN

(hierbei handelt es sich um das polnische Game, das von THE MISSING LINK für die Lighgun umgesetzt/angepaßt wurde; leider wurde hierbei, anders als bei OPERATION BLOOD, eine sehr anfällige und genaue Kopierschutzabfrage benutzt, so daß diese neue/Lighgun Version leider mit der F2000 nicht läuft … )

3.) DROP-IT.(3D-TETRIS)

(polnisches Game von der Firma SONIX, im Gegen?atz zu DEIMOS und HUMANOID wurde auch hier eine sehr genaue Kopierschutzabfrage benutzt, die zum Absturz beim Laden führt… )

4.) THOMAHAWK (Kampfhubschr.-Sim.)

(bei diesem Game von ID/DOOM, pardon, DI/FIGH?ER PILOT, hat man zwar a
uf das scheußliche LENSLOK-System verzichtet, nicht aber auf einen anfälligen Kopierschutz!!) DI steht übrigens f ür Digital INTEGRATION ; FIGHTERPILOT ist eine geniale Kampfflugzeugsimulation, ähnlich F15-STRIKE EAGLE.

LENSLOK ist ein Kopierschutzsystem, bestehend aus einem Plastik-Glas-Gebilde, daß man auf den Bildschirm halten mußte um so ein codiertes/verschlüsseltes Wort-> die Codeabfrage, lesen und eingeben zu können; Hat nur leider in der Praxis nicht funktioniert, denn a) konnte man je nach Bildschirm oder Monitor, auch mit LENSLOK nix lesen (absolut genialer Schutz!) und b) fiel es diversen Hackern nicht allzu schwer, das Programm FIGHTER PILOT zu knacken und die läßtige Codeabfrage zu entfernen.

Bei THOMAHAWK ist LENSLOK, wie erwähnt nicht mehr zum Einsatz gekommen, dafür ein besserer Kopierschutz…

5.) MONSTRUM (Wurmspiel)

(von diesem Game gibt es zwei unterschiedliche Versionen: eine, die auf keiner Atari-Floppy und somit auch auf der F2000 nicht läuft und eine zweite, die nur bei abgeschalteter Speedy läuft; nähere Infos, welche Version läuft und welche nicht kann man bei MARKUS RÖßNER erhalten; der Unterschied ist jedenfalls am Cover sichtbar – ich habe aber vergessen was es genau war…

Dies sind alle mir bekannten FLOPPY 2000-ERROR DISKS. Da laut K. P. ca. 400-500 Stück F2000 verkauft wurden, kann ich annehmen, daß wohl außer mir noch mehrLeute Probleme mit manchen Disks haben. Ich bin mir auch ziemlich sicher, daß es außer den genannten Programmen sicher noch weitere gibt, die auf einer F2000 grundsätzlich nicht laufen. Einsendungen und Ergänzungen werden dankend entgegengenommen.

Zu meinem Erstaunen konnte ich aber feststellen, daß ein Game mit dem genialsten und auch ausgefallenstem (aber nicht absolut sicherem) Kopierschutz (vgl. Interview mit einem Hacker, in einem älteren AM!), mit der F2000 einwandfrei läuft. Das Game heißt „ALTERNATE REALITY‘ und es gibt 2 bekannte Versionen davon: a) THE CITY b) THE DUNGEON. Beides sind geniale Games mit besagtem Kopierschutz (der nicht nur die Floppy, sondern auch das Betriebssystem im Atari testet !!).

Beide Games unterliegen nach wie vor dem Copyright, insbesondere der ausgefallene und spitzenmäig umgesetzte Vorspann (INTRO), ist auch heute noch nicht als PD freigegeben !

Eine mir nicht bekannte Firma hat sich extra fürdas Intro das Copyright ergattert, wer es also haben will,mußte schon die Original-Disk besitzen, denn selbst der Besitz des Intros als Fileversion ist auch jetzt noch strafbar…

Wie gesagt, wenn ihr noch mehr Games kennt, die mit der F2000 nicht laufen und dies auch bei abgeschalteter Speedy nicht, dann schreibt mir

meine Adresse lautet:

Andreas Magenheimer

Diehlgallenstr. 12

67591 Wachenheim/Zellertal

 

Geräte am parallelen Bus:

– Wie stabilisiere ich den XL/XE? –

Von: Robert Puff 11. Dezember 1995

Übersetzt von Erhard Pütz, 05. Mai 1996,

ohne Gewähr

Nachdem ich, mitwieesscheintTausendenvonAta?i8-BitRechnem,diezurReparaturinmeinemLaden waren, zu tun gehabt hatte, lernt man so einige gemeinsame Krankheiten kennen und die entsprechen

den Lösungen. Kürzlich hatte ich einige Rechner, die für sich alleine einwandfrei arbeiteten, aber wenn man eine BlackBox daran anschloß oder eine größere Speichererweiterung darin einbaute,plötzlich zu spinnen anfingen. Zufällige Abstürze, falsche Bytes auf dem Bildschirm und Buchstaben, die einige sich zufällig ändernde Pixel in sich hatten sind inige der Symptome.

 

Ich denke, daß ich jetzt eine Lösung gefunden habe, die fast in jedem Fall funktioniert. Diese Lösung stelle ich hier in der Hoffnung vor daß sie hilft, einige der Größten Fehler zu korrigieren und zu absolut zuverlässiger Funktion des Rechners verhilft. Bitte beachtet, daß KEINE der im folgenden genannten Änderungen zu Konflikten mit der Peripherie oder irgend welcher Inkompatibilität führt. Sogar wenn man kein Gerät am parallelen Bus betreibt, können sie von Nutzen sein. Mit diesem Text wird davon ausgegangen, das der User im Umgang mit dem Lötkolben sehr erfahren ist und das Wissen hat, die IC’s und die Pinnummern zu identifizieren. Wenn dem nicht so ist, sollte jemand anders diese Arbeiten machen. Auf Wunsch führt Computer Software Services die unten genannten Veränderungen für $25,- Dollar plus Versandkosten aus. Weitere Informationen unter Teleon: +716-429-5639.

Obwohl imVergleich mit heutigen Rechnern die 8-Bitter mit einer sehr langsamen Geschwindigkeit laufen, ist das Bus-Timing sehr kritisch. Es scheint, daß die Fehler von einigen, sehr geringfügigen Timingproblemen herren. Obwohl ich nicht behaupten kann, daß ich es 100%ig verstehe, möchte ich versuchen zu erklären, wo das Problem liegt.

Änderung #1

Das P2 (Phi 2) Taktsignal, das am PBI- und Modulschacht des Rechners anliegt, wird aus dem Signal, das direkt aus der CPU kommt, gepuffert. Dieses Puffern verursacht eine kleine, aber merkbare Zeitverzerung. Im weiteren Verlauf, bis das Signal am Gerät des paralelen Busses ankommt, gibt es zusätzliche Induktivit und parasite kapazitive Last, die das Signal weiter verzerren. Wenn die Verzerrung insgesamt zu groß wird, werden Schreibzugriffe zum PBI gestört, weil die Daten bei der steigenden Flanke von Phi2 keine gültigkeit mehr haben. Ich habe immer die CPU ausgewechelt, was das Problem löste. Wie auch immer, ich habe eine Lösung gefunden, die mit allen CPU’s funktioniert: Man nehme das Phi0 Taktignal, das direkt am Takteingang der CPU anliegt. Phi0 ist ungefähr gleich Phi2, nur das es in der Phase leicht vor Phi2 liegt. Zufällig ist der Phi2-Puffer ein UND-Gater und es hat einen unbenutzten Eingang. Wenn man diesen jetzt mit dem Phi0 Signal verbindet, führt dies dazu, daß die fallende Flanke wieder am rechten Zeitunkt liegt und wir ein wenig mehr Spielraum für die zusätzlichen Verzerrungen, die sich aurhalb des Rechners ergeben, haben.

Bei 600XL/800XL Rechnern:

Verbindet Pin 4 und Pin 13 des 74LS08.< /p>

Bei 65XE113OXE Rechnern:

Verbindet Pin 2 und Pin 4 des 74LS08.

Änderung #2

Diese Änderung betrifft das Timing-problem des OSROM. Es scheint, besonders bei mehreren eingebauten Betriebssystemen, daß die Ausgänge der EPROMs bis in den Anfang des nächsten Buszyklus hinein aktiv bleiben. Dies verursacht Fehler im RAM, die man am leichtesten an falschen Bytes auf dem Bildschirm erennt. Die Lösung hierzu ist nicht so einfach wie im 1. Fall. Das neu geschaffene gepufferte Phi2 Signal mußte an den „output enable“ Anschluß des OS ROM. Man könnte meinen, daß man einfach das „chip select‘,Signal mit Phi2 verknüpfen kann, aber man erhält anscheinend ein besseres Resultat, wenn man den „chip select“ Eingang des OS ROM am noralen „chip select‘ Signal, welches von der MMU kommt, lädt und das invertierte Phi2 Signal an den „output enable“ Eingang anschließt, welcher schneller als der „chip select‘ Eingang reagiert.

Bei 600XL/8OOXL Rechnern:

Verbinde Pin 6 des 74LS08 mit Pin 5 des 74LS14 (Wir benutzen das unbenutzte Gatter im Inverter.) Der einfachste Weg wäre jetzt, den Pin 22 des OS ROm entweder auszulöten oder abzuschneiden oder hochzubiegen, so daß er sonst nirgendwo mehr dran kommt. Jetzt verbindet man Pin 6 des 74LS14 mit Pin22 des OSROM.Wenn man das“UltraSpeed Plus OS` oder irgendeine andere OS ROM Erweiteung eingebaut hat, kommt man an Pin 22 nicht heran. Man müßte:

1) die Leiterbahn auf der Unterseite der Platine, die Pin 20 und Pin 22 des OS ROM verbindet, auftrennen.

2) die Leiterbahn, die Pin 16 der MMU (CO 61618) mit Pin 22 des OS ROM verbindet, auftrennen.

3)Pin 16 der MMU mit Pin 20 des OS ROM verbinden.

4) Pin6 des 74LS14 mit Pin22 des OSROM verbinden.

Bei 65XE1130XE Rechnern:

Man mußte einen 74LS14 Chip hinzufügen. Folgene Schritte sind notwendig:

1) Alle Pins des neuen 74LS14 hochbiegen, außer Pin 3, 7 und 14.

2) Diesen Chip auf den 74LS08 auflöten und die Pins 3, 7 und 14 verlöten.

3) Wie bei der Anleitung für den XL gibt es nun 2 Möglichkeiten: entweder Pin 22 des OS ROM hochheben oder die Leiterbahnen auftrennen. Wenn möglich, dann einfach den Pin 22 des OS ROM hochbiegen und mit Pin 4 des 74LSI 4 verbinden. Fertig.

4) Okay – Du willst es also auf die harte Tour! Aber eigentlich ist es gar nicht so schwer. Schau auf die Unterseite der Platine. Du siehst eine Leiterbahn die von der MMU kommt und zu Pin 20 und 22 des OS ROM geht. Trenne die Verbindung zu
Pin 22 auf, aber NICHT die zu Pin 20.

5) Nun verbinde Pin 22 des OS ROM mit Pin 4 des 74LS1 4.

(ANMERKUNG DES FLOPPYDOC Ich hasse es, wenn an Platinen rumgeschnitzt wird. Besonders, wenn sie so schwer zu ersetzen sind, wie bei unseren Raritäten. Also macht Euch die Mühe, lötet die MMU und das OS ROM, soweit nicht gesockelt, aus und lötet Präzisionssockel (ja, die teuren, für ’ne Mark-zwanzig) ein. Wenn man die MMU wieder einsteckt, biegt man vorher Pin 16 etwas hoch, so daß dieser nicht eingesteckt wird. Das Gleiche in grün mit Pin 20 und 22 des OS ROM.)
 
Änderung #3
 
Dies ist eine Änderung an der Black Box. Auch hier KANN es wegen des unsauberen Phi2 Signals notwenig sein, einen Timing-Schaltkreis anzupassen. Die Speicheradresse $D1FF benutzt ein RC-Glied um sicherzustellen, daß die Daten gelesen werden während der Bus gültig ist. Ein verzerrtes Phi2 Signal kann dieses Timing verschieben, so daß manchmal zufällige Werte gelesen werden. Die Lösung ist einfach. Suche zuerst das RC-Glied (Widerstand/Kondensator), das sich direkt unterhalb des SCSI Anschlusses der Black Box befindet. Der Widerstand sollte die Ringfarben „braun-schwarz-braun“ haben. Nun schau auf die Unterseite der Black Box. Wenn dort ein weiterer Widerstand an der gleichen Stelle eingelötet ist, dann ist keine Änderung erforderlich. Wenn Du an dieser Stelle keinen Widerstand siehst, dann löte dort einen 220 Ohm Widerstand (rot-rot-braun) an die Kontakte des anderen Widerstands.

Viel Glück
(Robert Puff)

Complicated file analyzer

COMPLICATED-FILE ANALYZER ist ein kleines Utility, mit dem man die Struktur von „.COM“-Dateien anschauen und ausdrucken kann. Es wird weiter „ANACOM“ genannt. Es gab schon einige Programme dafür, aber mit verschiedenen Mängeln (zu langsam, zu wenig Informationen, die Struktur konnte nicht ausgedruckt werden, …).

Die Bedienung von ANACOM ist sehr einfach. Es kann bei der Filename-Eingabe mit <CONTROL> – <3> oder <BREAK> oder jederzeit mit <RESET> verlassen werden. Mit ANACOM kann auch die (einfache) Struktur von unkomplizierten Dateien („.EXE“) angeschaut werden. ANACOM prüft aber nicht, ob es sich überhaupt um eine „Binary“-Datei handelt ! Ist das nicht der Fall, werden sinnlose Informationen angezeigt und es erscheint beim Lesen der Datei meistens früher oder später ein ERROR.

Einige Bemerkungen:

ANACOM benutzt den Speicherbereich $6000 ..$6BFF. Es benutzt keine Zero- Page Adressen so daß es nicht nur vom DOS, sondern auch vom TURBO-BASIC gestartet werden kann, wenn das BASIC-Programm unterhalb von $5F00 endet. Man mußte es mit BLOAD laden und dann mit „C.USR($6000)“ starten. Das `ERROR- 9 DIM“ bei der Rückehr ist normal (ein Fehler des BASIC). Vom DOS kann es mit „binary load“ oder durch das Eingeben des Namens „ANACOM.EXE“ gestartet werden. Bei‘ DOS 2.5 und ähnlichen mußte es noch mit „run at address“ gestartet werden („6000“ eintippen).

ANACOM hat eine Einheits-Fehlermeldung für alle Fehler. Wenn die untersuchte Datei eine „.COM“- oder „Binary“-Datei ist, sich auf der (weder defekten noch korrupten !) Disk befindet und der Drucker (wenn gewünscht) eingeschaltet ist, kann kein Fehler passieren. Sollte es Probleme geben, wenn die Struktur auf dem Drucker gedruckt werde und das DOS die Highspeed der SPEEDY oder XF551 benutzt, sollte die Highspeed abgeschaltet werden. Dieses Problem ist aber nicht von ANACOM verschuldet!

ANACOM.DAT‘ dient nur zum Testen von ANACOM. Wenn die Datei wie eine „.COM“-Datei untersucht wird, werden alle Arten von Informationen angezeigt, die ANACOM liefern kann.

Die Posit
ion in der Datei wird von ANACOM (im Unterschied zu OFFLOAD) nur dort angezeigt, wo eine weitere Untersuchung der Datei (zum Beispiel mit einem Disassembler oder DUMP-Programm) sinnvoll ist. In übrigen Fällen (bei RUN der INIT-Adressen, 1- oder 2-Byte Segmenten und $FF, $FF) ist es nicht nötig, da dort ANACOM bereits die vollständige Information liefert.

ANACOM ist neu programmiert worden. Bestehende Programme wurden nicht benutzt. (C) 25/04/1996, Public Domain
 
Pavel Hammerschmied
Burgernzielweg 14
3006 BERN
SCHWEIZ
 
Tel: 0041313528131

Floppy 2000
Mein Senf

(von Erhard Pütz)

Als interessierter ABBUCianer habe ich natürlich den Artikel über die Floppy 2000 im ABBUC Magazin #45 gelesen. Allerdings mußte ich da doch meinen Senf dazutun. Zum einen, weil ich teilweise die gleiche Meinung vertrete und zum anderen, weil einiges sachlich falsch ist und unbedingt der Richtigstellung bedarf. An dieser Stelle möchte ich noch einmal erwähnen, daß ich vor einigen Jahren das HDI gebaut habe, nicht um anzugeben, sondern um zu belegen, daß ich von der Sache Ahnung habe. Das HDI ist ein Interface für den XL/XE, mit dem bis zu vier 1.44 MB Laufwerke an den XL/XE angeschlossen werden können. Das HDI ist ausverkauft. Darüber hinaus habe ich mit der Black Box eine 240 MByte SCSI Festplatte an meinem Rechnen

Utilities
Nun, wenn Andreas wenigstens einige der Programme, von denen er spricht, namentlich erwähnt hätte, aber so räsele ich herum, was er wohl gemeint haben könnte.

DOS2.5
Leute, von einem Gedanken müßt ihr endlich mal weg. Auf der einen Seite jammern, weil eine 360 KByte Disk nicht voll beschrieben werden kann und dann DOS 2.5 nachweinen. Man kann nur eines von beiden haben. Ent?eder will man seinen doch so geliebten DOS 2.5 Standard beibehalten – dann braucht man weder eine Floppy 2000, noch eine XF 551, noch ein HDI und schon gar keine Festplatte. Oder man sagt ja zu Massenspeichern und damit ade zu DOS 2.5 und jener Software, die untrennbar mit DOS 2.5 verbunden ist.

BOOTDISKS
Ja, zugegebenermaßen ärgere ich mich auch, wenn noch Spiele oder Demos im Bootformat vorliegen und dann noch am SD oder MD Diskettenformat kleben, dafür dann aber über 8 Disketten gehen, wo sie doch beim HDI oder bei Festplatte locker auf eine passen würden. Allerdings lassen sich eine ganze Reihe von den schönen Spielen, die wir vor einiger Zeit aus Polen erhalten haben, in Files wandeln (mit etwas Mühe und nur wenn sie nicht nachladen), die man dann mit einem Gamedos laden kann.

GAMEDOS
Also Andreas!!! Habe ich das richtig gelesen? Du kennst kein Gamedos, das mehr als DD verträgt? Dann mußte ich Dir leider vorwerfen, daß Du Dir die ABBUC Magazindisketten wohl nicht anschaust. Denn es gibt sowohl für MyDOS als auch für BW-DOS (Sparta DOS) Gamedosse, die bis 16 MByte Kapazität gehen und auch Unterverzeichnisse unterstützen. Das Micro-Sparta-DOS ist mit der ganzen BW-DOS Software von Jiri Bemasek auf dem ABBUC Magazin veröffentlicht worden. Und fürs Atari DOS DD Format gibt es den Speed Initializer von E.Reuss.

DD-Format & PD-Disks
Leider gibt es immer noch Leute, die mit einer normalen Atari 1050 Floppy arbeiten – ohne Speedy! Diese Laufwerke können das DD Format nichtverarbeiten. Ich denke, daß es deshalb z.B. das ABBUC Magazin nicht auf DD Disks gibt, Mich würde mal interessieren, wieviel ABBUClaner noch keine Speedy haben. Aber man kann natürich niemanden zu seinem Speedy- Glück zwingen.

270, 288, 290 & 300 UPM
Also, hier stimmt so einiges nicht. Ich habe eine Floppy 2000 mit Speedy zur Reparatur gehabt und abschließend natürlich Formatiertests durchgefürrt. Die Umdrehungsgeschwindigkeit war unabhängig vom Format und konstant mit 300 UPM. Ebenso liegt die Umdrehungsgeschwindigkeit der XF 551 konstant bei 300 UPM. Das ist auch der Grund, warum sowohl die XF 551 als auch die Floppy 2000 besonders ausgefallene Systemtakte gebrauchen. Es gibt auch keine von Atari festgelegte 270 UPMs bei MD. Alle Diskettenformate erfordern bestimmte Datengeschwindigkeiten beim Beschreiben oder Lesen der Disketten. Diese sind wie folgt:

125 KBit/s bei SD
250 KBit/s bei MD, DD, QD
500 KBit/s bei HD (1.44 MB) 1000 KBit/s, bei ED (2.88 MB)

Wenn jetzt eine Atari 1050 die Disk beschreibt, tut sie das bei MD und DD mit 250 KBit/s- Wenn man diese Diskette jetzt in ein Laufwerk mit 300 UPM steckt, dann kommen die Daten da mit höherer Geschwindigkeit raus, und zwar um den Faktor 300/288=1.041666 mal schneller. Und genau um diesen Faktor wurde in der XF 551 der Systemtakt erhöht, natürlich von 8 MHz auf 8 1/3 MHz.

VT0C-Probleme
Eine zweite VTOC bei MD gibt es nur beim DOS 2.5 Standard. Wenn Andreas hier beim Schreiben oder Lesen von Disketten Probleme hat (BAD Sectors, Steppfehler), dann sind hier Laufwerke defekt.

Zum Thema Steppfehler, wenn der Kopf von einer Spur auf der Disk zu einer anderen huscht, kann ich hier mal Erfahrungen von meinem Floppyservice einbringen: Bei vielen der Laufwerke, die ich bekomme, läßt sich der Schreib-/Le?ekopf nur schwer hin und her bewegen. Ich weiß ihr meint es alle gut, wenn ihr irgendwelche Fette oder Öle auf die führungsgestänge aufbringt. Aber es müssen schon solche sein, die über einen gewissen Temperaturbereich gleichmäßig weich bleiben und die vor allem NICHT HARZEN, das heißt nach einiger Zeit verkleben. Und wenn sie verharzt sind, und das sind die meisten, dann gibt es natürlich Steppfehler.

Zum Thema BAD SECTORS gibt’s hier auch was vom Floppyservice. Dazu habe ich übrigens schon mal was hier im Magazin veröffentlicht. Und zwar geht es hierbei noch mal um die bei UPM beschriebene Datengeschwindigkeit. Bei der Atari 1050 ist das eine ganz empfindliche Sache. Wenn der Floppycontroller in der 1050 ausgetauscht wird mußte die 1050 hier immer völlig neu justiert werden. Nach einem Austausch gibt es mitunter Abweichungen bis zu 30%, was natülich einfach zu viel ist. Eine so formatierte Diskette funktioniert vielleicht auf genau diesem Laufwerk, aber auf einem anderen kann sie vielleicht nicht mal gelesen werden.

Ersatzteile
Nun, hier liegt es allerdings imArgen. für die Turbo 1050 gibt es keine GALs mehr. Ich bekomme für mein Sparta DOS X Modul, in dem das GAL kaputtgegangen ist, auch kein neues GAL. Ist auf der Floppy 2000 Speedy nicht auch ein GAL? Ich habe die Programmierung für das PAL/GAL meines HDI übrigens veröffentlicht ….

Eine Frage: Hat jemand vielleicht Erfahrungen mit der Erweiterung für die XF 551 von Computer Software Services (Roübert Puff)?

Euer Floppydoc Erhard Puetz, 10.07.1996
InterNet: erhard-puetz@w2.maus.de

XEP80 und Speichererweiterung

Günther Bartl schrieb im ABBUC Magazin Nummer 45, daß sein Rechner mit einer 192 KB Speichererweiterung immer abstürzt, wenn der Rechner einige Minuten im 80-Zeichen-Modus ist und keine Taste gedrückt wird.

Erst habe ich gar nicht mitbekommen, von weicher Speichererweiterung er redet und ich dachte sofort an die Megaram II, die ja auch Probleme mit Speicherverlust hatte. Hierbei handelte es sich um ein Refresh – Problem. Nun ja, aber wir reden ja von einer anderen Speichererweiterung. Ich habe zum Beispiel die Newell 1 MB drin und mein Rechner arbeitet damit einwandfrei, auch, wenn ich mit der XEP 80 arbeite, und das tue ich recht oft. Zum Beispiel schreibe ich diesen Text mit dem Atari Writer 80 XE. Nun, woran könnte es liegen, daß Günthers Rechner abstürzt? Könnte es vielleicht auch ein Refresh – Problem sein? Meiner Meinung nach ja, weil die Fehlerbeschreibung einfach zu genau darauf zutrifft. Gehen wir einfach mal von derAnnahme aus, es ist ein Refresh – Problem. Was ist ein Refresh und was müßte passieren?

Die Daten in einem dynamischen RAM werden in einem winzigen Kondensator gespeichert, der sich in jeder Speicherzelle (Bit) befindet. Diese sind in Reihen und Spalten angeordnet. Wegen der Leckstraße entlädt sich der Kondensator nach einer gewissen Zeit leidersamerweise. Um die Daten sicher zu behalten ist es notwendig, jede der Reihen in gewissen Zeitabständen anzusprechen. Es gibt verschiedene Methoden, dies zu tun: / RAS-Only Refresh Dies ist die gebräuchlichste Methode, einen Refresh durchzufürren. Hierbei wird mit /RAS eine Reihenadresse angesprochen, während /CAS inaktiv bleibt, Das ist die Methode, nach der unser XL/XE arbeitet. Innerhalb von 4 ms müssen alle 256 Reihen angesprochen werden. Die Reihenadressen generiert der ANTIC.

/ CAS -b e f o re – / RAS R e f re s h Hierbei wird ein Refreshzähler aktiviert, der sich mit auf dem RAM – Baustein befindet. Diese Methode findet zum Beispiel auf der Newell 1 MB Erweiterung Anwendung. Megabitchips wie zum Beispiel lMx 1 Bit(511000) oder256K x4 Bit (414256) brauchen 512 Zyklen alle 8 ms. Der ANTIC erzeugt aber nur 256 Zyklen, sprich eine 8-Bit Adresse.

Nun zu der Adresse. Eine Reihenadresse, das sind AO bis A7, sprich die unteren 8 Adreßleitungen, von denen unser Rechner16 hat, womit er 64 KByte Speicher adressiert. Ein 256K RAM hat aber 18 Adreßleitungen, sprich 9 Anschlüsse (-> multiplexen). Für einen korrekten Refresh ist es unbedingt erforderlich, daß auch wirklich die unteren 8 Adreßleitungen das Refresh – Signal bekommen. Wenn bei der Speichererweiterung zufällig nicht A8 zum Umschalten zwischen den 4 Bänken a 64 KByte benutzt wird, dann kommt der Refresh nicht durch.

Gehen wir nun auch noch davon aus, daß hier tatsächlich nicht A8 des RAM’s benutzt wurde, dann könnte folgendes passieren: Es kommen nicht alle 256 Refreshs durch, weil ja eine der 8 unteren Adreßleitungen fehlt. Im Normalbetrieb des Rechners ist aber soviel auf dem Adreßbus los (DMA Speicherzugriff für das Videobild), daß die RAM’s dadurch sooft angesprochen werden, daß sie ihren Inhalt trotzdem behalten. Wenn jetzt der XEP 80 Modus aktiviert wird, dann wird nicht nur der DMAausgeschalten, sondern auch noch viele Interrupts. Damit wird die Busaktivit? um mehr als 90% reduziert. Jetzt wird das RAM auf einmal nicht mehr oft genug angesprochen und es verliert seinen Inhalt. Da bei der 192KB Erweiterung 64KB des RAM für den Hauptspeicher des Rechners abgezwackt werden, tritt der Datenverlust auch im Hauptspeicher auf. Und wenn das dann auch gerade noch in den unteren 16, KByte passiert, dann ist auch die Page 0 davon betroffen. Wenn der Rechner dann nicht abstürzt – dann weiß ich es nicht.
 
Nun, G?ther, schau doch bitte einmal nach, ob das RAM ordnungsgemäß angeschlossen ist. A8 liegt an Pin 1. Hieran mußte die Zusatzschaltung, die die PIA Adressen einmultiplext, anliegen. Alle anderen Pins müßten original mit dem Rechner verbunden sein. Wenn das RAM doch ordnungsgemäß angeschlossen ist, könnte es immernoch sein, daß derANTIC teilweise defekt ist und das Refresh -Signal nicht mehr richtig generiert. Schreib mir also bitte mal, was los ist. Ich bin auch in der ABBUC Mailbox zu erreichen, aber bitte NICHT per PM, sondern allgemein unter Brett 2.

Euer Floppydoc 
Erhard Puetz, 09.07.1996
InterNet: erhard-puetz@w2.maus.de

A.B.B.U.C. PD-Neuheiten

Nr. 481 INTVIEWER 1.0 DD/1S
Bei INTViewer handelt es sich um ein Programm, um Bilder im InterlaceFormat zu betrachten. Die Bilder werden in Graustufen dargestellt und sehen aus einiger Entfernung betrachtet sehr gut aus (dann fällt das Flimmern nicht mehr so auf). Manche haben einen guten 3D Effekt. Auf der Disk befinden sich 11 Bilder aus allen Bereichen. Das Programm hat eine automatische Laderoutine und reagiert auf Drücken der Leertaste mit dem Laden des nächsten Bildes.

Nr. 482 GRASS SLIDESHOW ED/1S
Eine Slideshow, die durch ihre Farbvielfalt überzeugt. Wo sollte sie herkommmen? Klar, aus Polen! Natürlich mit Soundausgabe während der Show ist. Die 15 Bilder stammen überwiegend aus dem Bereich Fantasy.

Nr. 483 VOICE OF SILENCE ED/1S
Eine Sound Demo aus Polen vom TAQUART TEAM. Die 10 verschiedenen Soundstücke können aus einem Auswahlmenü einzeln angewählt werden. Unterbrechen ist mit Leertaste möglich. Durch Sprung in das Auswahlmenü kann das nächste Stück angewählt werden. Nicht nur für Hardrock-Fans.

Nr. 484 XFD-COPY (für PC) DD/2S
Diese Version des XFD-Copy ist für die Konvertierung von Atari-Disketten im Format „enhanced density“ in Xformer-Disk-Files gedacht. Die Bedienung erfolgt analog der Version 1.0 die für „double density“ ausgelegt ist.(ebenfalls auf der Disk) Leider zeigten sich beim Format 26 Sektoren pro Track Probleme mit dem 5,25″-Laufwerk am PC, d.h. es treten Lesefehler auf. Die Funktionsfähigkeit ist laufwerksabhängig und kann daher nicht garantiert werden.Von dem Bit Byter Jörg Gernreich. Wir würden uns über Meldungen von Euch zu diesem Programm freuen.

formerly known as

| || ||| |||| ANALOG RESEARCH

 

Dieses ABBUC Magazin erschien ursprünglich als Papierbeilage. Scan, OCR, Digitalisierung und Aufbereitung: Andreas Bertelmann