ABBUC Magazin 078


IMPRESSUM
© 2004 Atari Bit Byter User Club e.V.
C/O Wolfgang Burger, Wieschenbeck 45
D-45699 Herten ???? +49 2366 39623
Mail wolfgang@abbuc.de
Eingetragen beim Amtsgericht Recklinghausen unter Nr.: VR 1421
Kreissparkasse Recklinghausen, Konto Nr.: 54 000 468
(BLZ 426 501 50)
Das Atari Bit Byter User Club Magazin erscheint ¼Jährlich. Jeweils
½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

Inhalt

Seite 3 Damals vor 20 Jahren
Seite 5 ATARI Sound Erweiterungen Vol. 3
Seite 7 Come Back der 8- Bitter in Elmshorn
Seite 8 Atari Classic Games
Seite 9 Was der Atarianer schon immer.. (Teil 1)
Seite 15 Stimmzettel zum ABBUC Programmierwettbewerb
Seite 19 Was der Atarianer schon immer.. (Teil 2)
Seite 24 Spieletest Beef Drop
Seite 27 Die ABBUC Bundesliga
Seite 29 High Score Chat
Seite 31 Pong ohne Joystick
Seite 32 Die PD-Ecke

Damals vor 20 Jahren

Wer erinnert sich heute noch an die XII Olympiade 1984 in L. A., da war doch was?

Richtig, Atari hatte im Jahr 1984 die Olympiade in L. A. gesponsert. Man konnte im Antic bzw. Analog Berichte über erfolgreiche Sportler oder Mannschaften wie im Volleyball lesen. Atari war eine berühmte Firma.

Atari entwickelte sogar das Olympia Lexikon, wie die Screenshoots belegen. le Konsolen und Computer verkaufte, wurde auch gleich an die Versoftung gedacht. Atari lizenzierte damals von Konami Track and Field und vermarktete es als L. A. Games auf Modul.

Man konnte nun mit Atari die Olympiade nachspielen, wobei Atari sich auf die Leichtathletik konzentrierte. Man konnte wie die Athleten leiden, wenn man das 400m Rennen nachspielte. Manch ein Joystick hat bei Decathlon, Summer-/Winter Game, Olympia Challenge und L.A Games seine Mikroschalter ausgehaucht.

Die Klötzchengrafik begeisterte, der Sound riss mit und die Siegerehrung oder ein Welt-/Olympia Rekord wurde frenetisch mit/unter Freunden gefeiert. Der AMC Verlag von Armin Stürmer mit seinen Programmieren, entwickelte ab dieser Zeit erfolgreich Spiele für den Atari 8 Bit und versorgte uns bis in die heutige Zeit mit guten Spielen via ABBUC.

Glorreiche Zeiten die nun wieder aufleben können, so greift zu den alten Joysticks, holt die Freunde herbei und erfreut Euch an Atari Olympics.

Spaß/Freude kann so einfach und billig sein. PS: Die Bilder entstammen den aus dem AMC Fundus
Thorsten Schall

Atari Sound-Erweiterungen
Volume 3: Midi-Erweiterungen und Software

Midi ist der Musik-Standard auf den Atari ST Computern, denn schließlich ist die dafür benötigte Hardware schon in diesen Rechnern eingebaut. Man braucht nur noch ein Keyboard oder Synthesizer anschließen und schon kann man soundmäßig voll loslegen. Allerdings gab es Midi schon lange vor den ST-Computern und demzufolge ist es keine allzu große Überraschung, dass man auch auf den kleinen 8bit Ataris Hardware + Software dafür findet. Neben dem kleinen Atari Computer und einem Keyboard benötigt man aber noch ein spezielles Midi-Interface und passende Software dazu. In der Vergangenheit haben das aber schon einige Firmen oder Bastler für den A8 bereitgestellt. Folgende Sachen sind mir bekannt:

1. „Midi-Mate“ und „Midi-Track“ von Hybrid Arts (USA), beinhalten Hardware + Software, siehe auch Vorstellungen und Tests in Antic, Analog und anderen Magazinen. MidiTrack benötigt 48k RAM, MidiTrack II schon 64k RAM und MidiTrack III sogar 128k RAM (XE kompatibel). MidiMate verfügt über MIDI IN+OUT und SYNC IN+OUT Ports, jedoch fehlt ein zweiter SIO Port (oder Stecker). MMS (MIDI Music System) ist eine MIDI Version von AMS, die ebenfalls von Hybrid Arts verkauft wird und beinhaltet unter anderem AMS to MMS Konverter Software.

2. „MIDI Master“ von 2-Bit Software (UK), beinhaltet Hardware + Software. Die Hardware verfügt über MIDI IN+OUT Ports, einen extra SIO Port (oder Stecker), jedoch keinerlei SYNC Ports. Siehe auch die Vorstellung(en) und Werbe- Anzeige(n) in (New) Atari User.

3. „MIDI Interface“ von DIGICOMM (UK), beinhaltet Hardware und einige ‚Beispiel-Programme‘. Die Hardware verfügt über MIDI IN, THRU und OUT Ports. Es wird leider mit keinem Wort erwähnt, ob ein zweiter SIO Port (oder Stecker) oder irgendwelche SYNC Ports vorhanden sind. Siehe auch die Vorstellung(en) und Werbe-Anzeige(n) in (New) Atari User.

4. „MIDIMAX“ von Wizztronics (UK), beinhaltet Hardware und Software. Die Hardware verfügt über MIDI IN+OUT Ports und einen zweiten SIO Port (oder Stecker). Die MMS Software, welche mit MidiMax geliefert wird, benötigt 48k RAM und ist voll kompatibel zur Hybrid Arts Hardware+Software. Das bedeutet, man kann die Software mit beiden Interfaces benutzen oder umgekehrt jedes Interface mit der Software beider Hersteller…

(Anmerkung: Die Informationen von 1) bis 4) wurden mir freundlicherweise von Mathy van Nisselroy zur Verfügung gestellt. An dieser Stelle nochmals herzlichen Dank dafür, Mathy!)

5. Atari-Midi-Interface von Karlheinz Metscher (erschienen in Computer Kontakt Juni/Juli 1986, Seite 69-75, komplett mit Anleitung, Bauplan und dem ersten Programm namens „Midi- Receiver“);

6. in Computer Kontakt Oktober/ November 1986 erschien ein weiteres Midi Programm von Karlheinz Metscher (genannt „Midi-Disk“ – ein Midi Recorder und Player Programm);

7. Midi-Interface für Atari XL/XE von Ireneusz Kuczek (erschienen im ABBUC Magazin 65, Seite 3-6). Das Papier- Magazin beinhaltet einen Bauplan für das Midi-Interface und einige übersetzte Beschreibungen für die Software, wohingegen das Diskmagazin die Midi- Programme „Midiplay Version 1.3“ von I. Kuczek, „Midi-Recorder Version 1.2“ von I. Kuczek, „Rec to Mid“ von I. Kuczek (ein Konverter-Program für den IBM-PC!), „Midi-Sequencer V.1.15“ von Maciej Sygit und „Midi-Pattern-Edito
r MPE V.2.3“ von Radek Sterba enthält.

8. Und last not least gibt es in der ABBUCPD- Bibliothek zahlreiche PD`s zum Thema Midi (PD-Nummern 625-633). Weitere Software läßt sich wohl auch im Internet und auf anderen Rechnern (wie z.B. auf dem Atari-ST oder halt dem PC) finden. Also kann man sich zumindest nicht über einen Software-Mangel für die Midi-Hardware beschweren. Inwieweit die Software aber mittels der 8Bit Midi- Hardware abgespielt werden kann und welche Extras oder Konverter man eventuell noch benötigt steht auf einem anderen Blatt und ist von mir mangels vorhandener Hardware auch nicht testbar.

Vermutlich gibt es auch noch viele weitere (zumeist selbst gemachte) Midi-Interfaces und Midi-Software für den kleinen Atari. Leider benötigt man neben dem Computer ja wie erwähnt noch das Interface, die Software und ein Keyboard, so dass man hier schon etwas tiefer in die Tasche greifen muss. Es hat bisher noch niemand einen Midi-Player Programm (oder einen Midi-Konverter) programmiert, mit dem man die Midi-Sounds auch über den eingebauten Pokey-Soundchip wiedergeben könnte… So, das war erstmal alles für heute. Auf Baupläne will ich diesmal verzichten, denn diese kann man aus der alten CK besorgen (z.B. online über die ABBUC-Literatur Bibliothek downloaden!) oder im ABBUC-Mag. 65 nachschlagen (ist ja noch gar nicht so lange her). Die Skizze soll nur die Funktionsweise zeigen. Wenn mir jemand beim updaten dieser Liste(n) helfen will, dann einfach eine E-Mail an AMP@ABBUC.DE schicken. Wer will, kann die Infos auch bereits im A8FAQ von Michael Current nachlesen.

Allerdings sind sie dort alle in Englisch verfasst.
Bis demnext
dann,
Charlie Chaplin
/ Andreas Magenheimer

Come Back der 8-Bitter in Elmshorn

Nachdem die ABBUC (Atari Bit Byter User Club) Regionalgruppe Elmshorn (kurz ARE) sich Ende 2001 „schlafen gelegt hat“, scheint sich nun das come Back der kleinen Ataris anzukündigen. Rückblick: Mit der Teilnahme an den letzten Elmshorner Computertagen vor vier Jahren war die ARE sozusagen auf dem Höhepunkt ihrer Tätigkeit angelangt. Zwei Tage lang wurden unzähligen Besuchern die „guten alten Zeiten“ näher gebracht, bestens unterstützt von Walter, der zu diesem Zeitpunkt nur wenige Kilometer entfernt wohnte und Wolfgang, der extra während seines Urlaubes bei uns vorbei kam. Näheres zu dieser Veranstaltung könnt Ihr im ABBUC Magazin #63 nachlesen. Dort sind zwei Artikel von Willi und mir drin. Nun aber zurück zum eigentlichen Thema. Kurz nach den Computertagen fielen die Aktivitäten rund um Atari bei uns immer geringer aus – ich selbst mache da leider keine Ausnahme. Beruf, Familie Fortbildung und vor allem (ja – ich oute mich) die PCs forderten ihre Zeit. Trotzdem blieb mein 800XL immer aufgebaut im Arbeitszimmer stehen. Walter musste dann beruflich umziehen, so dass wieder eine sehr engagierte Stütze „wegbrach“.

Bei der 20Jahr Feier des Computer Club
Die ARE inkl. Wolfgang Ende 2000

In Elmshorn wurde aber (endlich) wieder in Nostalgie geschwärmt. Nils, eines der ehemaligen Mitglieder der ARE hatte einige Ataris in Betrieb und präsentierte diese und den ABBUC den Besuchern. Auch hierzu existiert ein Artikel im ABBUC Magazin #73. Ich selbst konnte durch Flohmärkte und ebay einige Atari Geräte erstehen, die ich heute auch nicht mehr hergeben möchte. Unter anderem ein 600XL, ein VCS 7800, ein VCS 2600jr. , eine 1010 und ein D r u c k e r 1027. Sagte ich schon, dass Ataris sammeln ein schönes Hobby ist ? (grins) Kommen wir nun in die Gegenwart, genauer gesagt Sommer 2004. Zwei Aktionen des Computer Club Elmshorn werfen ihre Schatten voraus. Zum einen das Elmshorner Hafenfest, an dem wir wie in jedem Jahr mit einem Tag der offenen Tür teilnehmen werden und zum anderen die sog. Elbmarschenschau. Eine Messe, vergleichbar mit der „Du und Deine Welt“ – nur etwas kleiner. Der Tag der offenen Tür beim Hafenfest steht im Zeichen der „Oldies“. Atari, C64, Amiga und alte Spielekonsolen werden wieder zum Leben erwachen.

Zu diesem Zweck habe ich mir vor wenigen Tagen einen Atari Lynx II mit Zubehör gekauft (Neuware). Wir werden den ABBUC mit mindestens drei Personen vor Ort vertreten. Nils, Markus und ich werden unter anderem einen 800XL, einen 800XE, ein VCS 2600jr., zwei Portfolio, drei Lynx Konsolen und einiges an Zubehör aufbauen und präsentieren. Auf der Elbmarschenschau werde ich auf jeden Fall ein VCS aufbauen, um insbesondere jüngere Besucher anzusprechen.

Fazit: Es gibt zwar keine direkte ARE mehr (mit regelmäßigen Treffen) aber dafür wieder verstärkte Aktivitäten rund um Atari. Wer von Euch mit uns in Kontakt treten will, der kann das tun unter s.johnigk@cce-elmshorn.de
Wir freuen uns über jeden Mitstreiter. Es lebe das come Back.
Stefan Johnigk

Atari 80 Classics in One

Hätte damals einer behauptet, dass irgendwann einmal all die teuren Atari-2600-Spiele auf einer kleinen Scheibe Platz haben würden, und dass diese nur ein paar Euro kosten würde – man hätte ihn für verrückt erklärt. Jetzt ist sie da, die CD mit Klassikern wie „Pong“, „Asteroids“ oder „Centipede“.

„Atari – 80 Classic Games in One!“ heißt die neue CD-ROM von Atari, die neben 80 Atari- Spielen noch viel Bonusmaterial zur Firmengeschichte Ataris enthält. Neben einem Video mit einem Interview des Firmengründers Nolan Bushnell enthält die CD-ROM beispielsweise Bedienungsanleitungen zur Spielekonsole 2600 sowie Fotos von Verpackungen und auch Werbebilder. Mindestanforderungen: Pentium-II-PC mit 200- Megahertz-Prozessor, Windows 98, 16 Megabyte (MB) Arbeitsspeicher (RAM), DirectX 7.0- kompatible Grafikkarte mit 2 MB RAM, 4-fach- CD-ROM-Laufwerk.
www.atari.de

Was der Atarianer schon immer über ATARI-8-Bit Cartridges wissen wollte…

Diese Sammlung von Info-Texten befasst sich mit den im ATARI 8-Bit System verwendeten Cartridges und wurde von Nir Dary zusammengestellt. Insgesamt handelt es sich um verschiedene Texte, aufgeteilt in vier Kapitel. Behandelt werden Basisinformationen (RAM/ ROM-Kontrolle), detailliertere Informationen (Cartridge- Steuerung) bis hin zu Programmierhinweisen ( und Listings); z.B. wie man Spiele-Files zu Cartridges umwandeln kann.

Kapitel 1
RAM/ROM-Kontrolle beim XL/XE Compu
ter von John Picken PROGRAMMIERBARE ROM STEUERUNG Die Softwaresteuerung von ATARI BASIC (BAS), OSS Super Cartridges (OSS-Cart), R-Time 8 Uhr-Cartridge (RT8), und eingeschränkt von SpartaDOS X (SDX) ist relativ einfach. Leider gibt es darüber so gut wie keine Dokumentation. Die hier präsentierten Details habe ich teilweise mit Hilfe eines Disassemblers und durch reichliche Experimente herausgefunden (nette Umschreibung für „probier’s, solange er dabei nicht abstürzt“). Hinweise: Alle folgenden Angaben zu einer „aktiven“ Cartridge (Cart) gehen davon aus, dass sie eingesteckt und eingeschaltet ist. Sollte sie eingesteckt aber abgeschaltet sein, gilt sie als inaktiv. So kann die RT8 generell als inaktiv betrachtet werden, solange nicht tatsächlich auf sie zugegriffen wird. Lasst uns deshalb zuerst einmal einen Blick auf die Adressen werfen, die für die oder in Verbindung mit der RAM/ROM-Kontrolle benutzt werden. Die Funktionen von PORTB sind bekannt; aber bitte die Funktion des für BASIC zuständigen Bits im Hinterkopf behalten.

BASICF ist ein Flag im unteren Speicherbereich, das bei System Reset dem OS mitteilt wie das Bit 1 in PORTB gesetzt werden muss. Enthält das Flag einen anderen Wert als null, wird das BASIC ROM abgeschaltet.

TRIG3 ist eine Adresse des GTIA Chips, die für den Knopf des Joysticks #3 beim 400/800 benutzt wurde. Beim XL/XE dient es als Statusindicator für die Cart; ist eine Cart aktiv enthält die Adresse eine 1, andernfalls 0. Andere Optionen stehen an dieser Adresse nicht zur Verfügung.

GINTLK wird beim Booten vom OS gesetzt und ist eine Kopie von TRIG3. Das OS vergleicht GINTLK mit TRIG3 während des verzögerten Vertical Blank Interrupt (VBI) und führt, falls die zwei Werte nicht übereinstimmen, zu einer „weichen Sperrung“ des Systems (z.B. führt ein Reset zum Re-Boot).

CARTCK enthält eine Prüfsumme, die beim Booten vom OS ermittelt wird. Wird bei einem Reset eine aktive Cart durch TRIG3 signalisiert, errechnet das OS eine neue Prüfsumme und vergleicht sie mit CARTCK. Sollten die beiden Prüfsummen nicht übereinstimmen, schließt das OS daraus, dass eine Cart herausgezogen oder eingesteckt worden ist und leitet unmittelbar einen Re-Boot ein. Das trifft auf alle XL/XE zu, auch wenn Quellen wie z.B. „Mapping the ATARI“ das nicht gerade präzise darstellen.

CARTCK, TRIG3 und GINTLK gelten für alle Carts mit teilweiser Ausnahme bei der RT8. Weiterhin wichtig ist die Tatsache, dass der Vergleich von TRIG3 und GINTLK nur während des verzögerten VBI stattfindet. Das bedeutet, dass man nach belieben mit der Cartridge experimentieren kann, solange kein Stufe 2 VBI ausgeführt wird und man nicht RESET drückt. Der VBI2 lässt sich auf drei Arten vermeiden: Abschalten aller Non Masked Interrupts (NMI), CRITIC auf einen Wert verschieden von null setzen oder, am einfachsten, man verwendet einen SEI Opcode. Der Hardware-Adressbereich für die Steuerung von Carts ist $D500-$D5FF. Innerhalb dieser Page werden nachfolgende Adressen benutzt: OSS-Carts
$D500-$D50F, CSS MUX OS $D570-$D57F, RT8
$D5B8-$D5B9, SDX $D5E0-$D5EF.

Das klingt unkompliziert, ist es aber leider gar nicht. ATARI- Cartridges Die ATARI-Carts habe ich deswegen bei den Adressbereichen nicht erwähnt, weil sie sich so ohne weiteres nicht steuern lassen. Ausnahme: EIN/AUS-Schalter vom XL/XE oder SDX.

Eine ATARI-Cart kann nicht per Software gesteuert werden, es sei denn SDX ist eingesteckt (auch wenn es abgeschaltet ist). SDX kann so eine Cart elektronisch steuern, da es zwischen Computer und ATARI-Cart sitzt. Trotzdem, die vorherige Erläuterungen zu TRIG3 und GINTLK gelten auch hier.

OSS Super Cartridges
Obwohl der Adressbereich von $D500 bis D50F geht, ist die Addressdekodierlogik der OSS-Carts nur auf vier Bit angelegt. Das bedeutet, dass jeder Zugriff (schreiben, lesen etc.) auf eine Adresse $D5xy die OSS-Cart beeinflusst; diese aber das „x“ ignoriert. Basierend auf den untersten vier Bit reagieren OSS-Carts auf alle Adressen in der Page $D500.

Zum Einblenden einer Bank in der OSS-Cart addiert man die Nummer der Bank zur Adresse $D500 und greift dann auf diese Adresse zu (z.B. auf Bank n, STA $D50n, LDA $D50n, STA $D500,X, wobei n im XRegister abgelegt wird, usw.). Theoretisch gesehen sollte ein OSS-Cart bis zu sechzehn 8K-Bänke enthalten können und immer noch per Software abschaltbar sein. Die bekannten OSS-Carts enthalten zwei oder drei umschaltbare 4K-Bänke und eine 4K-Masterbank.
(Anmerkumg des Übersetzers: inzwischen gibt es ja auch einige wenige 128K-Carts für XL/XE. Die ROM-Bank-Nummer für OSS-Carts findet ihr an der Adresse $AFFF. Gültige Werte für $AFFF wären 0, 3 und 4 für ACTION! und 0, 1 und 9 for MAC/65. Andere Bank-Werte führen zu unterschiedlichen Ergebnissen. MAC/65 ignoriert die Bits 1 und 2, weshalb jeder Wert von 0 bis 7 zur Auswahl einer geraden oder ungeraden Bank führt. Mit ACTION! führt der Versuch andere Banknummern auszuwählen, zu der Auswahl von einer der tatsächlich vorhandenen Bänke oder zu keinem sinnvollen Ergebnis. Z.B. sieht man auf dem Monitor jede Menge $AF, wenn die $AF Page selektiert wird, oder wenn du die Page $D7 anwählst, bekommst du $D7 an allen Adressen. BASIC XE (BXE) benutzt die Bänke 0, 1 und 9 wobei Bank 9 RAM ist. In Bank 9 ist die BXE-Cart abgeschaltet, aber TRIG3 bleibt auf HIGH gesetzt.; ein guter Trick sich nicht um GINTLK kümmern zu müssen, während man das RAM unter der Cart anspricht.

Für OSS-Carts gibt es zwei Konstanten: Verwendet man Bit 3 allein, wird die OSS-Cart abgeschaltet. Bank 0 ist die Bank, in der die OSS-Cart gebootet und initialisiert wird. Es folgen Übersichten über die Bänke zweier OSS-Carts:

MAC/65 0123456789ABCDEF: Bank Auswahl rrrrrrrr r r r r: r=rom, leer=ram 01010101 9 9 9 9: bank # 01 9 : gültige rom Bänke  Action! 0123456789ABCDEF: Bank Auswahl rrrrrr r : r=rom, leer =ram 000340 3 : bank # 0 34 : gültige rom Bänke  OSS-Cart Beispiele

Es folgen verschiedene Beispiele für die Steuerung von OSS-Carts und BASIC bei nicht eingesteckter SDX-Cart. Zuerst die Speicheradressen (Equates) für alle Beispiele aus Mapping the Atari (XL edition):

WARMST = $08 BOOT? = $09 CRITIC = $42 RAMTOP = $6A COLDST = $0244 CARTCK = $03E8 BASICF = $03F8 GINTLK = $03FA TRIG3 = $D013 PORTB = $D301 NMIEN = $D40E EDITRV = $E400 

Das einfachste: OSS-Cart abschalten und BASIC einschalten, vorausgesetzt beide sind tatsächlich vorhanden.

SEI vbi2 abschalten STA $D508 alle carts abschalten LDA PORTB AND #$FD basic bit löschen STA PORTB LDA TRIG3 sollte 0 sein STA BASICF flag setzen und STA GINTLK cart vergleich neu setzen CLI vbi2 einschalten Nun greifen wir auf RAM unter der Cart zu: SEI vbi2 abschalten LDA PORTB PHA portb speichern ORA #$02 basic rom abschalten STA PORTB LDA #$08 vermutung keine cart LDX TRIG3 check vermutung BEQ GOTBNK Go falls keine oder abgeschaltet, LDA $AFFF ansonsten bank einschalten GOTBNK PHA cart bank speichern STA $D508 alle OSS carts abschalten LDA TRIG3 für cart vergleich zuerst setzen STA GINTLK cart vergleich neu setzen CLI vbi2 einschalten Beliebige RAM-Benutzung, anschließend vorherigen Status wiederherstellen: SEI vbi2 abschalten PLA cart bank zurückholen TAX und cart einschalten STA $D500,X im vorherigen status LDA TRIG3 Gintlk auf STA GINTLK korrekten status setzen PLA vorherigen Basic STA PORTB rom status setzen CLI vbi2 einschalten Eine Cart nur abschalten: SEI vbi2 abschalten STA $D508 LDA TRIG3 cart abschalten STA GINTLK und flag setzen CLI vbi2 einschalten Der Kaltstart einer OSS-Cart ist ein wenig komplexer: SEI vbi2 abschalten STA $D500 cart bank 0 auswählen LDA TRIG3 Abgleich korrekt STA GINTLK setzen LDA PORTB PHA ORA #$01 STA PORTB OS einschalten CLC Prüfsumme LDX #0 ermitteln TXA für RESET. CSLOOP ADC $BFF0,X beachte Prüfsumme INX enthält die BNE CSLOOP ersten 240 bytes STA CARTCK des OS ROM PLA RAM wieder herstellen STA PORTB OS (oder SDX) CLI vbi2 einschalten

Nach dem Kaltstart einer OSS-Cart oder von BASIC
sollte WARMST auf 0 gesetzt werden, um einen Bootvorgang anzuzeigen. Dadurch werden die Pufferzeiger gelöscht (passiert das nicht, kann man z.B. zum BASIC springen und mit LIST unendliche viele nullen angezeigt bekommen oder in einem Systemabsturz enden). Als nächstes wird das ROM initialisiert. Für ACTION! und BASIC hat das keine Bedeutung, da die Initialisierungsroutine nur RTS ist; bei BXE bin ich nicht sicher; für MAC/65 ist es ein Muss. Initialisierung einer beliebigen OSS-Cart:

LDX #$FF wir booten und STX COLDST sicherstellen, dass alle INX Flags das richtig anzeigen STX WARMST INX STX BOOT? JSR INIT mach es einfach LDX #$FF nun zurück zum STX WARMST normalen Status, z.b. INX was passiert beim RESET STX COLDST beachte die Carts INX benutzen einige STX BOOT? von diesen Flags! RTS INIT JMP ($BFFE) Initialsierungsvektor für Carts

Nach einschalten oder ausschalten einer OSS-Cart bzw. von BASIC muss außerdem sichergestellt werden, dass die Speicherobergrenze (RAMTOP) und die Bildschirmzeiger (screen pointer) Korrekt gesetzt sind. Das lässt sich mit einem „GRAPHICS 0“ erledigen. In Maschinesprache ausgedrückt, setze RAMTOP und schließe und öffne danach den Kanal 0 zum „E: „- Händler. Das lässt sich auf traditionelle Weise über CIOV oder noch einfacher durch Aufruf der nachfolgenden Subroutine lösen. Dabei speichert der Akkumulator $C0, wenn das ROM ab- und $A0,wenn das ROM eingeschaltet wird.

GRAPH0
STA RAMTOP entweder $A0 oder $C0
LDX #0 zeige auf Kanal 0
LDY #2 zeige auf den Vektor zum
schliessen
JSR EDO
LDY #0 und nun auf den Vektor zum öffnen
EDO
LDA EDITRV+1,Y
PHA
LDA EDITRV,Y
PHA
RTS

Beachte, dass durch Abschalten von BASIC XE das RAM unter der Cart nicht freigegeben wird, falls du später die Cart wieder aktivieren willst. BXE benutzt dieses RAM ebenso wie das unter den OSFließkommaroutinen und setzt außerdem (nirgendwo dokumentiert) einen Interruptvektor in der letzten RAMpage ($FFFx).

Schlussanmerkung zum Ein-Ausschalten vom ROM: Nach Graphics 0 blockt normalerweise ein RTS unter SpartaDOS die Tastatur, was zwangsweise zu einem Neustart führt. SpartaDOS installiert einen eigenen „E: „-Händler. Nutzt man nun den OS-Händler zum erneuten öffnen von „E: „, sind die Vektoren von SpartaDOS ungültig. Das lässt sich einfach umgehen durch den Ausstieg mit einem JMP (DOSVEC). Sicherlich eine gute Idee für die Arbeit mit FMS-Command- Processoren, bei denen man ein Batchfile anstelle eines AUTORUN.SYS zum Einrichten des Systems verwenden kann.

Die SpartaDOS X Cartridge
Normalerweise bootet SDX in Bank 0 und werkelt dann in Bank 1. Dabei verwendet es eine Subroutine im unteren Speicherbereich, um Bank 0 wieder aufrufen zu können. Vermutlich ist das nötig, um Files von CAR: laden zu können. Die Cart enthält acht verschiedene ROM-Bänke (0 to 7), aber ich habe keine einzige Speicherstelle finden können, die eine Kennung für eine bestimmte Bank enthält. Und ich bezweifle, dass es eine gibt, weil deren Existenz bedeuten würde, dass es ein „Loch“ mitten in jeder ROMdisk-Bank gäbe. Die Steueradresse für die SDX-Cart ist $D5E0 und wird so verwendet wie $D500 für die OSS-Carts.

Das folgende Beispiel speichert die momentan aktive ROMdisk-Bank im Y-Register. Dies gilt für die SDXVersion 4.20! Mit anderen Versionen müsst ihr es selber herausfinden.
LDA $A004
LDY #7
LOOP
CMP XBANK,Y
BEQ GOTIT
DEY
BPL LOOP
LDY #$01 kann’s nicht finden, setzen auf 1
GOTIT
RTS
XBANK
.BYTE $32,$1F,$02,$1D
.BYTE $D4,$1C,$61,$56

Die ROMdisk Directory befindet sich am Anfang von Bank 2 und folgt dem normalen Sparta-Format mit der Ausnahme, dass die Adresse der ersten Sector Map die tatsächliche Startadresse des im ROM gespeicherten Programms ist. Die ersten zwei Einträge sehen so aus:
.BYTE $08 Status: In Benutzung
.WORD 16384 Start: Bank 2 Offset 0
.WORD 598 Länge
.BYTE 0 Länge (höherwertiges Byte)
.BYTE „MAIN“
.BYTE 1,1,70 Date
.BYTE 251,0,0 Time
;
.BYTE $08 Status: In Benutzung
.WORD 16982 Start: Bank 2 Offset 598
.WORD 7288 Länge
.BYTE 0 Länge (höherwertiges Byte)
.BYTE „SPARTA SYS“
.BYTE 6,2,89 Date
.BYTE 15,28,40 Time
;
So konvertiert man die Startadresse in Bank und Offset in derselben Bank:
bank = int(address/$2000) und
offset = address-$2000*bank

CAR.COM verwendet die nachfolgenden Kombinationen, um alle drei ROMs im Cartridge-Bereich des ATARI steuern zu können. Die Werte unter „SDX“ und „OSS“ sind Offsets von $D5E0 beziehungsweise $D500 und diejenigen unter BAS sind die Werte in Bit 1 von PORTB. Das „on“ in der OSS-Spalte ist der in $AFFF gespeicherte Wert, bevor die Cart das letzte Mal ausgeschaltet wurde und wird benutzt, um sie wieder einzuschalten. Der Wert $0C für SDX bewirkt das Ausklinken jeder beliebigen Cart (??? what causes it to latch any cartridge off) und $08 macht sie sichtbar, so dass auf das Cart-ROM zugegriffen werden kann.

SDX OSS BAS OPERATING CONDITION
$01 $08 1 in DOS or low RAM
$0C $08 1 in high RAM (X.COM)
$0C $08 0 in BASIC
$08 on 1 in cartridge

Wenn du mit den SDX-Bänken experimentierst, vergiss nicht, dass jeder Schreib- oder Lesezugriff auf eine Adresse im Bereich $D5Ex Auswirkungen auf eine OSS-Cart und TRIG3 hat. Da TRIG3 betroffen ist, kommen außerdem GINTLK und CARTCK ins Spiel. So muss das angegebene Beispiel für den Zugriff auf das RAM unter der Cart entsprechend geändert werden, wenn SDX im System vorhanden ist. Lasst uns mal ein Unterprogramm anschauen mit dem RAM im Cart-Bereich erreicht und angesprochen werden kann, wobei die Möglichkeiten eines vorhandenen BASIC, SDX oder einer OSS-Cart berücksichtigt werden.

ROMCTL
LDA PORTB
PHA
ORA #$02 Alle BASIC ROMs aus
STA PORTB
LDA RAMTOP Das ist einfach …
CMP #$A0+1
BCC NOLUCK Doch nicht.
PLA Siehe a. für
STA BASICF eine Erklärung.
JMP DOSTUFF
NOLUCK
LDA TRIG3 Ist eine Cart aktiv?
BNE CART Ja, hau rein.
JSR DOSTUFF Noch ziemlich einfach
PLA
STA PORTB
RTS
CART
PLA Siehe a. für
STA BASICF eine Erklärung.
SEI VBI2 abschalten
LDA $AFFF Hole OSS Bank Nummer
PHA Speichere sie
STA $D5E8 Schalte beide Carts ab
JSR DOSTUFF
Wir wissen, dass eine Cart eingeschaltet war. Nun
müssen wir sie korrekt reaktivieren.
PLA Hole gespeicherte Bank Nummer
CMP #$10 Gilt sie fuer OSS? (siehe c.)
BCS SDX Nein, dann muss es SDX sein
TAY
STA $D500,Y Reaktiviere OSS Cart Bank
BCC CARXIT Immer weiter
SDX
STA $D5E1 Schalte SDX auf normale Bank
STA $D508 Schalte OSS cart ab (note b.)
CARXIT
CLI
RTS

a. Der Grund für das Verwerfen des Startwertes in PORTB ist das Zulassen von RAM-Erweiterungen von 512KB und mehr. Wie bereits ausgeführt (??? Wo) weiß das OS nichts über extra RAM (von mehr als 64KB – XL bzw. 128KB – XE) und verfügt über keine Option um festzustellen, dass BASIC nicht eingeschaltet sein darf, wenn große RAMErweiterungen vorhanden sind. Daher setzt das OS beim Booten PORTB und BASICF ausschließlich in Abhängigkeit von <OPTION> und benutzt BASICF um festzustellen, welcher Status nach einem Reset wiederhergestellt werden soll. Bei großen RAMErweiterungen führt das zu einem schwerwiegenden Problem für Programme, die das extra RAM verwenden, denn sie könnten auf eine falsche 256KB-Bank zugreifen. Solange BASIC nicht wirklich eingeschaltet sein muss, ist es ratsam, es als abgeschaltet zu markieren und sein Bit in PORTB auf high zu setzen.

b. Wir wissen das eine Cart eingeschaltet war, da wir andererseits niemals in diesen Teil des Unterprogramms gelandet. Da es nicht die OOS-Cart war, muss es die SDX-Cart sein. Da aber die dumme OSS-Cart auf
den Zugriff auf Adresse $D5E1 reagiert, müssen wir sie noch mal abschalten, nachdem SDX eingeschaltet wurde. Aus dem gleichen Grund reicht ein einziger Zugriff auf $D5E8, um beide Carts abzuschalten.

c. Der Vergleich der Bank Nummer mit 16, um festzustellen, ob es sich um eine gültige OSS-Bank Nummer handelt, wird von ICD im Code des RT8- Handlers verwendet. Ich vermute, dass dieser Test auf der Annahme fußt, dass die SDX-Cart in Bank 1 aktiv ist, wobei der Wert in Speicherstelle $AFFF für die SDX Version 4.20 87 beträgt. Es gibt zwei SDX Bänke, die einen Wert von weniger als 16 aufweisen in Speicherstelle $AFFF, nämlich 0 (Wert 7) und 4 (Wert 3).

Die R-Time 8
Die Steuerung der RT8 ist seit Version 3.2 in alle SpartaDOS-Versionen implementiert. Soweit ich weiß, bietet die RT8 nur die Optionen zum Auslesen und Stellen von Zeit und Datumsinformationen. Das einzige Problem dabei ist die Beeinflussung von OSSCarts durch den Zugriff auf die Register der RT8. Daher hat die RT8 zwei identische Register, auf die der Anwender zugreifen kann, nämlich $D5B8 und $D5B9. Gemäß den Angaben zur RT8 schaltet der Zugriff auf $D5B8 eine OSS-Cart aus und auf $D5B9 ein.

Die RT8 verfügt über sieben interne Register, die im BCD-Mode arbeiten (binary coded decimal). Beginnend mit#0 sind sie wie folgt belegt: Sekunde, Minute, Stunde, Tag des Monats, Monat, Jahr und Tag der Woche. Sekunden und Minuten reichen von 0-59, Stunden von 0-23, Tage von 1-31, Monate von 1-12, Jahre von 0-99, Tag der Woche von 0 (Samstag) bis 6 (Freitag). Die Reihenfolge beim Lesen oder Schreiben der Register ist immer gleich:
1. Warte bis die RT8 frei ist.
2. Schreibe einen Wert von 0 bis 6 in $D5B8 oder $D5B9, womit angezeigt wird, auf welches der 7 RT8-Register zugegriffen werden soll.
3. Lese-/Schreib-Zugriff auf die gleiche Adresse zum Lesen/Schreiben der höherwertigen BCD-Ziffer (die untern vier Bits enthalten die gültigen Daten).
4. Lese-/Schreib-Zugriff auf die gleiche Adresse zum Lesen/Schreiben der niederwertigen BCD-Ziffer (die untern vier Bits enthalten die gültigen Daten).

Im von ICD veröffentlichten Quellcode wird darauf hingewiesen, dass der Lesezugriff auf ein Register bis zu dreimal wiederholt werden sollte, wobei zwei glei- che Werte akzeptiert werden sollten. Für den Fall, dass alle Werte verschieden sind, sollte der erste gelesene Wert übernommen werden. Beim Schreiben in ein Register wird empfohlen, unmittelbar nach der Übergabe des Wertes mit Lesezugriff bis zu zehn Mal zu prüfen, ob der gesetzte Wert auch wirklich übernommen wurde.

Nachfolgend zeige ich eine Möglichkeit auf, Schreib-/ Lesezugriffe auf die RT8-Register zu tätigen, ohne sich Gedanken über eine OSS-Cart machen zu müssen. Das Meiste dazu stammt aus der Veröffentlichung von ICD. In dem Beispiel wird der Puffer in der gleichen Reihenfolge eingerichtet wie RT8-Register. Unter SpartaDOS ist noch ein Querverweis auf die Reihenfolge notwendig, in der das DOS Zeit und Datum speichert und ein extra Byte für den Tag der Woche.

*= $F0 Floating point zero page
TEMP1
*= *+1
TEMP2
*= *+1
RETRY
*= *+1
BUFFER
*= *+1 Seconds
*= *+1 Minutes
*= *+1 Hours
*= *+1 Day of month
*= *+1 Month
*= *+1 Year
*= *+1 Day of week
*= WHEREVER
SEI Kill vblank2
LDA $AFFF Get any cart bank
CMP #$10 Is it valid?
BCC SAVBNK Yes go, else use
LDA #$08 the „off“ value.
SAVBNK
PHA Save cart bank
Verify rt8 present and working
JSR READ Get seconds
CMP #60
BCS GLITCH if >59 then error
STA TEMP1
LDA RTCLOK+2
ADC #90
WAIT
CMP RTCLOK+2 Wait about 1.5″
BNE WAIT
JSR READ Read again
CMP TEMP1 Same as last?
BEQ GLITCH Yes, not working
SEC
SBC TEMP1 Ensure <3
BCS CHECK3 It is
ADC #60 else did it roll over?
CHECK3
CMP #3
BCC RT8OK Yes, rt8 is ok
GLITCH
LDA # <RT8ERR Set for error message
LDX # >RT8ERR
EXIT
STA ICBAL
STX ICBAH
LDA #9 Print to eol
STA ICCOM
STA ICBLH Plenty of length
PLA
TAX Restore cart bank
STA $D500,X
CLI restore vblank2
LDX #0 Select channel 0
JMP CIOV Exit with message
First read the clock regs into the buffer
RT8OK
LDX #6 Point to day of week
RCLOOP
JSR READ
DEX
BPL RCLOOP
Change values you want in the buffer and
then write it back to the clock
LDX #6
RCLOOP
JSR WRITE
BNE GLITCH Exit if write failed
DEX
BPL RCLOOP else do all 7
LDA # <RT8SET Set success message
LDX # >RT8SET
BNE EXIT Branch always
RT8ERR
.BYTE „RT8 Error“,155
RT8ERR
.BYTE „RT8 Set“,155
; Subroutine: wait til clock is
; not busy or exit on time out.
; Enter: x=clock reg to access (0-6)
; Exit: x unchanged, clock ready,
; and clock register selected
WAITCL
LDY #$FF Timeout value
WAITC
LDA $D5B8
AND #$0F If low nybble=0
BEQ READY clock not busy
DEY
BNE WAITC Else time out
READY
STX $D5B8 Set reg #x to read/wrt
RTS
; Subroutine: read rt8 reg once
; In x=reg#
; Out a=byte x=reg#
READ1
JSR WAITCL
LDA $D5B8 Get high byte
LDY $D5B8 Get low byte
AND #$0F Convert bcd to hex
STA TEMP1
ASL A Clears carry
ASL A
ADC TEMP1
ASL A
STA TEMP1 Temp1=(high*10)
TYA Add in low byte
AND #$0F
ADC TEMP1 Return byte in a
RTS Note c=0 x=x y=trig3
; Subroutine: read a clock register
; and accept best 2 of 3 readings
; or the first if none match.
; in: x=reg#
; out: a=value(}
READ
JSR READ1
STA TEMP1
JSR READ1
CMP TEMP1
BEQ REXIT
STA TEMP2
JSR READ1
CMP TEMP2
BEQ REXIT
LDA TEMP1
REXIT
RTS
; Subroutine: write clock register
; with value stored in buffer offset
; by x. Allow 10 tries.
; in: x=reg#
; out: x=reg#, z flag set if ok
WRITE
LDA #9
STA RETRY
WRT2
LDA BUFFER,X
LDY #$FF Convert to bcd
SEC
SUB10
INY
SBC #10
BCS SUB10
ADC #10
PHA low byte
TYA
PHA high byte
JSR WAITCL y=trig3
PLA High byte
STA $D5B8
PLA
STA $D5B8 Low byte
JSR READ Verify it set
CMP BUFFER,X correctly
BEQ WRTXIT It did!
DEC RETRY
BPL WRT2 Never 0 if failed
WRTXIT
RTS

Das Multiplexer! Operating System (MUX)
Das MUX OS greift regelmäßig auf die Register im Bereich $D57x zu. Ein schneller Blick in das ROM enthüllt: Die Register 1, 6 and 7 werden nur gelesen, Register 2, 3, B, C and E werden nur beschrieben und Register 0 wird sowohl als auch benutzt. Alle diese Adressen wirken sich auf OSS-Carts aus. Im MUXCode habe ich keinen Hinweis darauf gefunden, dass versucht wird Carts, GINTLK oder TRIG3 einzubinden. Obwohl ich mich eine ganze Weile damit befasst habe, SDX, RT8, BASIC, OSS-cartridges und sogar ATARI-Carts (mit aktivem SDX) zu steuern, sehe ich keinerlei Möglichkeit etwas derartiges unter dem MUX OS zu tun. Meine Vermutung geht dahin, dass das MUX OS, sobald aktiviert, die Benutzung einer Cartridge gar nicht vorsieht. Das ist so etwas von schade, weil es damit die Nutzung einer Cartridge und den Zugriff auf den eingebauten Monitor nicht zulässt. Da ich kein MUX OS zum experimentieren habe, überlasse ich das anderen.

Kalt- und Warmstart sowie Geräte am Parallelbusinterface (PBI)
Schaltet man eine OSS-Cart ab und re-bootet dann unter SpartaDOS, wird man mit den meisten Sparta- DOS-Versionen eine „weiche“ Systemsperre erhalten, weil SpartaDOS als einen Teil des Bootprozesses eine eingesteckte Cartridge einschaltet, um sie auf BASIC XE hin zu überprüfen. In diesem Fall d
rückt man einfach auf <RESET> und der Computer bootet erneut und schaltet die Cartrige ein. Will man SDX einschalten, nachdem man es mit dem Kommando COLD abgeschaltet hat, sollte die Methode dafür nun jedem klar sein (Anmerkung des Übersetzers: Im Handbuch von SDX steht, dass dazu der Computer aus und wieder eingeschaltet werden muss!). Was dagegen nicht jedem klar ist, sind ein paar andere Adressen und Tricks bei Warm- und Kaltstarts.

Beim Booten berechnet das OS ROM-Prüfsummen und vergleicht sie mit den im OS selbst gespeicherten Werten. Ist das Ergebnis des Vergleichs negativ, wird der Bootvorgang nicht beendet und stattdessen zum Selbsttest verzweigt, wo dann ein roter Balken unter „ROM“ erscheint. Das kann in einem System mit PBIGerät sehr schnell passieren, weil ein programmierter Kaltstart des Computers nicht auch das PBI-Gerät neu initialisiert, wie es bei einer Cart der Fall ist. Ist das PBI-Gerät eingeschaltet, (z.B. ein Modem-Interface für ein BBS) und wird ein Kaltstart ausgelöst, führt das zwangsläufig zum Selbsttest, weil der Prüfsummenvergleich mit dem ROM negativ ausgeht. Dieser sollte nämlich das Floating Point ROM bei $D800 mit bein- halten, bekommt aber stattdessen eine Bank des ROMs vom PBI-Gerät serviert.

Abschließend zum Warmstart, wo man ja entscheiden kann, ob man eine gedrückte <RESET>-Taste emulieren will oder nicht. Der Einsprung in den Warmstart- Vektor $E474 ist nicht gleichwertig zum <RESET>; der Vektor verweist auf eine Adresse hinter den Initialisierungsroutinen für die Hardware. Deshalb empfiehlt es sich den Chip Reset Vector zu nutzen, um alle Überbleibsel wie Player Missiles, Tastenkombinationen etc. aus dem Speicher zu löschen. Die folgende Routine führt in Abhängigkeit vom Einstiegspunkt zu unterschiedlichen Ergebnissen. Zum Einschalten von SDX starte mit XCART. Um allein eine OSS-Cart einzuschalten, beginne mit CART. Für einen Kaltstart ohne Auswirkung auf vorhandene Carts ist der Einstieg COLD. Für die Simulation einer gedrückten <RESET>-Taste schließlich geht es bei WARM los.

XCART
SEI Always before $D5xx access
STA $D5E0 Enable SDX
CART
SEI Again, dependant on entry
STA $D500 Enable OSS cart
COLD
DEC COLDST Force a boot
WARM
SEI Just in case
LDX #0
STX NMIEN Ditto
STX $D1FF Enable floating point
STX $D1E2 Kill MIO RAM (this and
DEX following just in case)
STX $D1BC turn off BlackBox RAM
STX PORTB Ensure ROM OS is on to go
JMP ($FFFC) through chip reset vector

Tiefer will ich nicht in diese Materie einsteigen, da im Gegensatz zu ATARI- und OSS-Produkten die Black Box und das MIO ziemlich gut dokumentiert sind. Wow, als ich mit dieser Beschreibung angefangen habe, hätte ich nie gedacht, dass sich daraus ein derartiges Monster entwickeln würde und dass es so viel Zeit brauchen würde, all die vielen Details sorgfältig zu dokumentieren. Nachdem der Leser jetzt weiß wie einfach es ist, RAM-Speicher unter Carts, unterm OS sowie Erweiterungsspeicher zu verwenden, erwarte ich ein paar nützliche Utilities. Hier ein paar Vorschläge:

– „Pop-Up“ Hilfefenster für MAC/65, ACTION! oder BASIC.
– Einen 8Kbit RAM Cache.
– Einen „Pop-Up“ Taschenrechner.
– Ein im Speicher verbleibendes DUP.SYS.
– etc.

Nachtrag
Als ich vor kurzem in ein paar alten Computermagazinen stöberte, wurde ich auf einen Artikel von Bill Wilkinson aufmerksam, der sich mit der Steuerung des RAM beim 130XE beschäftigte. Darin schrieb er, dass 16K ATARI-Carts wie z.B. ATARI Writer Plus den Adressbereich von $8000 bis $BFFF belegen, anstatt Bank Switching zu nutzen. Abschließend sein noch angemerkt, dass ich an Teil 4 einen MAC/65 Source Code angehängt habe, der zwei einfache COM-Files generiert. Damit lässt sich der Inhalt einer Cart auf Disk kopieren, so dass man ihn untersuchen kann. Es sind keine hoch entwickelten Programme, aber sie machen das was sie sollen. Revision vom 16 Februar 1996

Ergänzung
Eine von Bill Wilkinson auf comp.sys.atari.8bit gepostete Nachricht vom 12 August 1995 belegt, dass das Meiste bisher gesagte zutreffend ist und enthüllt mehr über den Aufbau einer Cart. Bei den Adressbereichen waren seine Informationen nicht ganz akkurat, aber seine Hinweise über das Umschalten der 4KBänke stimmt haargenau. Ich habe MAC/65 und ACTION! ausgelesen und auf Disk kopiert und kann hier bestätigen, dass in jeder Cart der Programmcode von $B000 bis $BFFF in allen drei Bänken absolut identisch ist. Unter dem Strich bedeutet das folgendes Mapping (MAC/65 als Beispiel):

Addr: $D500 $D501 $D509 $D508
$A000
c0 c1 c9 RAM
$AFFF
$B000
cc cc cc RAM
$BFFF

Dabei ist „Addr“ die Adresse, auf die zum Aktivieren der Konfiguration zugegriffen werden muss.“c0″ etc. ist die umschaltbare 4k-Bank und „cc“ ist die normale 4k-Bank. Einsetzen von „3“ and „4“ anstelle von „1“ and „9“ im obigen Beispiel ergäbe eine Übersicht über die ACTION! Cartridge.
.OPT NO LIST,NO EJECT
; SAVE #D1:CARTDUMP.M65
;
;
; ASM ,,#D1:CARTDUMP.COM
;
; Copy OSS cartridge banks to
; D1:CARTIMAGE.CBx where x is bank
;
ICCOM = $0342
ICBAL = $0344
ICBLL = $0348
ICAX1 = $034A
CIOV = $E456
PORTB = $D301
DMACTL = $D400
SDMCTL = $022F
GINTLK = $03FA
TRIG3 = $D013
;
*= $2F00
;
; The first 64 bytes are dumped to
; the CARIMAGE.MAP file
;
RAMROM
*= *+16 0=rom $FF=ram
BANKNO
*= *+16 byte at $AFFF
BARRAY
*= *+16 0=valid rom bank
TRIG3A
*= *+16 trig3 reading for bank
CURBNK
*= *+1 Base test bank
TESTBK
*= *+1 Bank being tested vs base
CBSAVE
*= *+1 Entry cart status
PBSAVE
*= *+1 Entry portb status
;
*= $3000
START
LDA #$60
STA START
LDX #0
TXA
ZLOOP
STA $2F00,X Clear data page
INX
BNE ZLOOP
;
LDA PORTB
STA PBSAVE
DEX
STX PORTB
LDY #$08
LDA GINTLK
BEQ HAVBNK
LDY $AFFF
HAVBNK
STY CBSAVE
;
SEI Kill vblank 2 before
LDX #15 playing with cart
LOOP0
STA $D500,X First test
LDA TRIG3 if rom or ram
STA TRIG3A,X
LDA $AFFF Get any bank number
STA BANKNO,X
INC $AFFF Check ram
CMP $AFFF
BEQ ISROM No, it’s rom
STA $AFFF
DEC RAMROM,X Set rom/ram map to ram
DEC BARRAY,X Show no rom to test
ISROM
DEX
BPL LOOP0
;
STA $D500,Y Cartridge normal
CLI vblank now ok
;
STX CURBNK Start base at -1
LDY #$FF
LOOP1
INY
CPY #16 All higher ones tested?
BCS NEXTBASE Yes, bump test base
LDA BARRAY,Y Unique rom this bank?
BMI LOOP1 No, ram or a dup
TYA
TAX
LOOP2
INX Test all higher
CPX #16 banks for duplicate
BCS LOOP1 All higher tested.
LDA BANKNO,X Was there a valid
CMP #16 bank number?
BCS FAIL No
EOR BANKNO,Y Same as current?
BNE LOOP2 No
FAIL
DEC BARRAY,X Yes, flag a duplicate
BMI LOOP2 Go always
NEXTBASE
INC CURBNK If at bank 15 there’s
LDX CURBNK none higher to compare
CPX #15 with
BCS MAPWRT So go finish up
;
LDA BARRAY,X Check if bank valid
BMI NEXTBASE No, ram or duplicate
STA $D500,X Enable it
LDY #0 Copy it to $6000
LDA #$A0
STA CLOOP+2
LDA #$60
STA CLOOP+5
CLOOP
LDA $A000,Y
STA $6000,Y
INY
BNE CLOOP
INC CLOOP+2
INC CLOOP+5
BPL CLOOP
JSR WRITE Write it to disk
JMP NEXTBASE
MAPWRT
LDX CBSAVE
STA $D500,X
LDA PBSAVE
STA PORTB
LDX #$10
LDA # <MSPEC
STA ICBAL,X
LDA # >MSPEC
STA ICBAL+1,X
LDA #3
JSR GOCIO
BMI CLOSE
LDA # <RAMROM
STA ICBAL,X
LDA # >RAMROM
STA ICBAL+1,X
LDA #48
STA ICBLL,X
LDA #0
BEQ BPUT
WRITE
TXA
CLC
ADC #’0
CMP #’9+1
BCC ISHEX
ADC #6
ISHEX
STA BANKID
LDX #$10
JSR CLOSE
LDA # <FSPEC
STA ICBAL,X
LDA # >FSPEC
STA ICBAL+1,X
LDA #8
STA ICAX1,X
LDA #0
STA ICAX1+1,X
LDA #3
JSR GOCIO
BMI CLOSE
LDA # <$6000
STA ICBAL,X address
STA ICBLL,X length
LDA # >$6000
STA ICBAL+1,X address
LDA # >$2000
BPUT
STA ICBLL+1,X length
LDA #11 bput
JSR GOCIO
CLOSE
LDA #12
GOCIO
STA ICCOM,X
JMP CIOV
;
; Copy cartridge bank to $4000
;
BCOPY
SEI
STA $D500,X
LDA # >$A000
STA LOOP4+2
LDA # >$4000
STA LOOP4+5
LDX #32
LDY #0
LOOP4
LDA $A000,Y
STA $4000,Y
INY
BNE LOOP4
INC LOOP4+2
INC LOOP4+5
DEX
BNE LOOP4
LDX CBSAVE
STA $D500,X
RTS
;
FSPEC
.BYTE „D1:CARIMAGE.CB“
BANKID
.BYTE „0“,155
MSPEC
.BYTE „D1:CARIMAGE.MAP“,155
.OPT NO LIST
.END
.OPT NO LIST,NO EJECT
; SAVE #D1:SDXDUMP.M65
;
;
; ASM ,,#D1:SDXDUMP.COM
;
; Copy SDX cartridge banks to
; D1:SDXIMAGE.CBx where x is bank
;
ICCOM = $0342
ICBAL = $0344
ICBLL = $0348
ICAX1 = $034A
CIOV = $E456
PORTB = $D301
DMACTL = $D400
SDMCTL = $022F
GINTLK = $03FA
TRIG3 = $D013
;
; First 64 bytes to SDX.MAP file
;
*= $2F00
RAMROM
*= *+16 0=rom $FF=ram
BNUMBR
*= *+16 Value at $AFFF
BARRAY
*= *+16 0=valid, unique rom bank
TRIG3A
*= *+16 trig3 reading for bank
;
CURBNK
*= *+1 Base test bank
CBSAVE
*= *+1 Entry cart status
PBSAVE
*= *+1 Entry portb status
*= $3000
START
LDA #$60
STA START
LDX #0
TXA
ZLOOP
STA $2F00,X Clear data page
INX
BNE ZLOOP
LDA PORTB
STA PBSAVE
DEX
STX PORTB Basic rom off
;
; SDX OSS BAS OPERATING CONDITION
; $0C $08 1 in high ram (x.com)
; $0C $08 0 in basic
; $08 on 1 in oss cartridge
; $01 $08 1 in dos or low ram
;
LDA #$08 a=$08=oss off
LDX #$0C x=$0C=sdx off
LDY TRIG3 Is this valid?
BEQ SAVEOX Yes both are off
TAX x=$08=sdx xprnt
LDA $AFFF a=ossbnk
CMP #$10 Valid?
BCC SAVEOX x=$08=sdx xprnt a=oss on
TXA a=$08=oss off
LDX #$01 x=$01=sdx on
SAVEOX
STA CBSAVE
STX XCSAVE
SEI Kill vblank2 before
LDX #$0F playing with carts
LOOP0
STA $D5E0,X Select SDX bank
STA $D508 Kill any OSS bank
LDA TRIG3 Save trigger value
STA TRIG3A,X
LDA $AFFF Also bank id value
STA BNUMBR,X
INC $AFFF Check ram
CMP $AFFF
BEQ ISROM No, it’s rom
STA $AFFF
DEC RAMROM,X Set rom/ram map to ram
DEC BARRAY,X Show no rom to test
ISROM
DEX
BPL LOOP0
STX CURBNK
;
TEST1
INC CURBNK Start sdx bank=0
LDX CURBNK
CPX #$10
BCS TESTED
LDA BARRAY,X Unique ROM to test?
BMI TEST1 No, ram or duplicate
JSR BCOPY Copy to ram
JSR WRITE Write to disk
LDX CURBNK
NXTTST
INX Next higher bank
CPX #$10
BCS TEST1 All done, bump base
LDA BARRAY,X Ram or a duplicate?
BMI NXTTST Yes, skip it
JSR BTEST Go test it and set
JMP NXTTST array if applicable.
;
TESTED
LDX XCSAVE
STA $D5E0,X
LDX CBSAVE
STA $D500,X
LDA PBSAVE
STA PORTB
LDX #$10
LDA # <MSPEC
STA ICBAL,X
LDA # >MSPEC
STA ICBAL+1,X
LDA #3
JSR GOCIO
BMI CLOSE
LDA # <RAMROM
STA ICBAL,X
LDA # >RAMROM
STA ICBAL+1,X
LDA #64
STA ICBLL,X
LDA #0
JSR BPUT
CLI
RTS
;
WRITE
TXA
CLC
ADC #’0
CMP #’9+1
BCC ISHEX
ADC #6
ISHEX
STA BANKID
LDX #$10
JSR CLOSE
LDA # <FSPEC
STA ICBAL,X
LDA # >FSPEC
STA ICBAL+1,X
LDA #8
STA ICAX1,X
LDA #0
STA ICAX1+1,X
LDA #3
JSR GOCIO
BMI CLOSE
LDA # <$6000
STA ICBAL,X address
STA ICBLL,X length
LDA # >$6000
STA ICBAL+1,X address
LDA # >$2000
BPUT
STA ICBLL+1,X length
LDA #11 bput
JSR GOCIO
CLOSE
LDA #12
GOCIO
STA ICCOM,X
CLI
JSR CIOV
SEI
RTS
;
BCOPY
STA $D5E0,X
STA $D508
LDA #$A0
STA BCLOOP+2
LDA #$60
STA BCLOOP+5
LDY #0
BCLOOP
LDA $A000,Y
STA $6000,Y
INY
BNE BCLOOP
INC BCLOOP+2
INC BCLOOP+5
BPL BCLOOP
RESTOR
LDY XCSAVE
STA $D5E0,Y
LDY CBSAVE
STA $D500,Y
RTS
;
BTEST
STA $D5E0,X Enable bank
STA $D508
LDA #$A0
STA TLOOP+2
LDA #$60
STA TLOOP+5
LDY #0
TLOOP
LDA $A000,Y
EOR $6000,Y
BNE DIFFER Skip array change
INY
BNE TLOOP
INC TLOOP+2
INC TLOOP+5
BPL TLOOP
DEC BARRAY,X Flag duplicate
DIFFER
RTS
;
FSPEC
.BYTE „D1:SDXBANK.“
BANKID
.BYTE „0“,155
MSPEC
.BYTE „D1:SDX.MAP“,155
.OPT NO LIST
.END
– J.K. Picken (EOF) –

Stimmzettel zum ABBUC Softwarewettbewerb 2004

Liebe Bit Byter, um ein möglichst objektives Abstimmungsergebnis zu erhalten, bitte ich Euch dieses mittlere Doppelblatt aus der Textbeilage auszuheften und eure Punkte für die Programme zu vergeben. Bitte markiert deutlich unter dem jeweiligen Programm die Punkte, die ihr vergeben möchtet. Dabei ist 1 das schlechteste und 10 das beste Ergebnis. Natürlich könnt Ihr auch mehrfach die gleiche Punktzahl vergeben. Einsendeschluss ist der 20. Oktober 2004. Der Stimmzettel kann auch zur Jahreshauptversammlung am 23. Oktober 2004 mitgebracht und dort abgegeben werden.

Unter den Einsendern. Die den Stimmzettel per Post an die Clubzentrale schicken werden drei Preise ausgelost. Die Gewinner werden im nächsten Magazin bekannt gegeben. Die Programme findet Ihr auf Magazin 77, auf der Diskette, die dieser Textbeilage beiliegt und der beiliegenden Sondermagazindiskette. Auf rege Teilnahme hoffend, verbleibe ich mit herzlichen Grüßen
Euer Wolfgang

Dieter Gretzschel Gross-DIVIDIX, Sprache: Basic
1 2 3 4 5 6 7 8 9 10
Florian Dingler Hardwaretester für Peripheriegeräte.
1 2 3 4 5 6 7 8 9 10
Action! Winfried Piegsda & Carsten Strotmann Atari Greed Zahlenspiel
1 2 3 4 5 6 7 8 9 10
Carsten Strotmann Spiel ‚Hit the mole‘
1 2 3 4 5 6 7 8 9 10
Mirko Sobe BS BOSS X V10.33
1 2 3 4 5 6 7 8 9 10
Winfried Fiedler Spiel ‚Zahlenraten‘
1 2 3 4 5 6 7 8 9 10
Domenik Vary Dragonsfield, Turbobasic, Strategiespiel,Besonderheit 2 Audiofiles auf CD
1 2 3 4 5 6 7 8 9 10
Matthias Reichl MyPicoDos 4.0, Game DOS
1 2 3 4 5 6 7 8 9 10
Radek Sterba (Raster/c.p.u.) RMTplayer 1.04
1 2 3 4 5 6 7 8 9 10
Tomasz Biela Dyna Blaster, unterstützt
optional 2 Pokey-Stereo
1 2 3 4 5 6 7 8 9 10
Markus Römer, Marc Brings,Füßchen & Lady Kelly; Atari Road Map; Wissensspiel rund um den Atari
1 2 3 4 5 6 7 8 9 10
Chris Martin JellyBeans;
1 2 3 4 5 6 7 8 9 10
Thorsten Helbing Bürotypen
1 2 3 4 5 6 7 8 9 10

Absender:
Name:
Vorname:
ABBUC Mitgliedsnummer:

Einzusenden an:
Atari Bit Byter User Club e.V.
c/o Wolfgang Burger
Wieschenbeck 45
45699 Herten

Spieletest

Beef Drop – (k)ein Aprilscherz
Das heute vorgestellte Spiel basiert ähnlich wie das in Magazin 77 vorgestellte Spiel „Castle Crisis“ auf einem Automatenspiel. Sowohl für „Warlords“ als auch für „Burger Time“ gab es seinerzeit nur eine wenig ansprechende Automatenumsetzung. Diese Lücke wurde jetzt gefüllt: neben „Castle Crisis“ (Warlords) gibt es auch für „Burger Time“ eine tolle Umsetzung für den Atari: „Beef Drop“. Der Auto „kenfused“ Ken Siders wählte eine wirklich Aufsehen erregende Form des Releases. Die Geschichte soll hier kurz nacherzählt werden. Am 1. April diesen Jahres meldete sich kenfused im AtariAge-Forum für das VCS 5200. Er habe ein Eprom mit der Aufschrift „Burger Time 5200 5/4/83“ erhalten. Es sei in einem gebrochenem und unbeschriftetem 5200er Modulgehäuse gewesen.

Die ersten fünf Reaktionen auf diesen Thread waren (gespielt ?) euphorisch, bis jemand auf das Datum des Posts hinwies. Ziemlich schnell war man sich dann im Forum einig, dass es sich um einen Aprilscherz handeln müsse. Solange bis kenfused das „gedumpte“ ROM im Forum postete. Es ließ sich im Emulator hervorragend spielen. Er stiftete damit große Verwirrung, einige blieben misstrauisch, bei anderen zeigte sich wieder die anfängliche Euphorie. Von dem staunendem und streitendem Publikum wurde dem Spiel mehrfach vorzügliche Spielbarkeit und große Nähe zum Arkade-Vorbild attestiert. In den ganzen Spekulationen warf kenfused auf einmal und nur mit den Worten „Atari 8-bit computer conversion“ eine XLVersion ins Forum. Kurz vor Mitternacht kam dann die Auflösung von kenfused. Nur konnte mit “ 4 0 1 on the 5200″ kaum einer etwas anfangen.

Er musste noch sagen, dass das der Code ist, der im Titelscreen einzugeben ist. Gesagt – getan, danach konnte es dann jeder weiß auf schwarz lesen: „April fools by Kenfused“. Am folgenden Tag gratulierten dann viele zum erfolgreichen und unterhaltsamen April-Scherz und natürlich zu dem hervorragendem Spiel. In den folgenden Tagen und Wochen verbesserte kenfused das Spiel mit Hilfe der zahlreichen Hinweise von Lesern des Forums und fand nach einigen lustigen Vorschlägen auch einen passenden Namen für das Spiel: Beef Drop.

Die derzeit aktuelle Version ist die Version vom 11.08.04. Ihr findet sie auf der A-Seite der Magazin- Diskette Nach den neuesten Versionen könnt ihr jeweils immer im AtariAge-Forum Ausschau halten (http://www.atariage.com/forums/viewtopic.php?t=47232) oder auch auf der Homepage des Autors (http://atari.ksiders.tzo.com/a8games.html). Dieser Thread im Forum wurde mittlerweile mit 278 Antworten und 8700 Aufrufen der erfolgreichste im 5200er Forum und einer der meistbesuchten überhaupt in den AtariAge- Foren. Aber nun zum Spiel:

Deine Spielfigur namens Pepper hat die Aufgabe Hamburger zu belegen. Dies macht er, indem er auf einem Gerüst herumklettert und auf den Bestandteilen der Burger herumtrampelt, die auf den verschiedenen Ebenen des Gerüstes verteilt sind. Bei jedem Überlaufen wird das Teil des Burgers auf eine darunter liegende Ebene befördert. Sind alle Teile auf der unte r s ten Ebene angelangt, sind die Burger belegt und es geht in den nächsten Level.

Natürlich, wie es bei einem guten Spiel üblich ist, versucht jemand das zu verhindern. Ein Spiegelei, ein Wiener Würstchen und eine Gewürzgurke (?) jagen dich. Bei Berührung mit ihnen verlierst du einen Pepper (d.h. ein Leben). Natürlich kannst du dich auch wehren: Immer, wenn ein Teil des Burgers herunterfällt und ein Gegner wird davon getroffen, ist es um ihn geschehen und dein Punktekonto vergrößert sich. Kurzfristig lähmen kannst du deinen Gegner mit der Sprühpistole, indem du kurz vor ihnen auf den Feuerknopf drückst.

Gute Automatenumsetzungen waren schon immer eine Stärke des Atari. In dieser Tradition steht auch dieses Spiel. Es ist doch schön, dass auch heute noch so tolle Spiele für unseren A8 erscheinen.
WGL-Wertung: * * * * (8 von 10 Punkten)
Bezugsquelle: Die freie Demo vom 11.08.04 findet ihr
auf der aktuellen Magazin-Diskette.
Viel Spaß beim Spielen!
Euer Wiesbaden Gaming Lab
Text: Gunnar Kanold alias Bunsen/WGL

Notwendige Korrekturen zu einem Magazin-Artikel und zu einem Programm

Liebe Freunde Marc Brings und Markus Römer, die Ihr den Bericht über Schreiersgrün 2OO4 verfasst habt, – nehmt mir’s nicht übel, wenn ich Euren Kommentar zu meinem „Messe-Vortrag“ ein wenig korrigiere! Folgendes ist richtig:
A) Mein Programm heißt GROSS-DIVIDIX.
B) Das Programm kann Divisionen mit großen Zahlen durchführen, d.h. Brüche Z/N ausrechnen. Dabei können die Zähler Z 2O Stellen (mit Demo) oder auch 36 Stellen (ohne Demo) haben. Die Nenner N sind jedoch stets auf 8 Stellen begrenzt, was eine „bedauerliche Einschränkung“ bedeutet.
C) Um den genannten Mangel etwas zu kompensieren, habe ich in einer weiteren Variante die Berechnung der sog. Stammbrüche von 1/2 bis 1/99 mit Ausrechnung aller dabei auftretenden Perioden angefügt.
D) Die Berechnung der Kreiszahl PI ist nicht Bestandteil von GROSS-DIVIDIX. Dieses Programm stammt nicht von mir. Ich habe es nur für unseren ATARI adaptiert, und es soll noch veröffentlicht werden.

Es hat sich vor kurzem herausgestellt, dass in meinem Divisions-Programm leider ein (kleiner) Fehler vorhanden ist. Im Teilprogramm 1 (Menü-Pkt. 2) wird eine mögliche Fehler-Meldung („Zähler zu klein!“) nicht korrekt behandelt. Jeder von Euch kann dies aber auf seiner Magazin-Diskette ganz einfach berichtigen!

Die Anleitung dazu:
1) GROSS-DIVIDIX von Mag-Disk/Seite-B- einladen,
2) Break-Taste drücken,
3) Zeile Nr. 115O listen: 1150 IF VAL ( Z $ ) < = V A L ( N$) THEN K=O:L1=1:L2=2:POSITION 1O,8:GOSUB 580:GOTO 1020
4) Nun den POS.-Befehl ändern! Richtig ist: POSITION 10,5. Danach RETURN drücken. Anschließend das geänderte Programm unter demselben Namen speichern:
5) Zeile Nr. 10 listen: 10 REM SAVE „D:GRODIVID.BAS“
6) „10 REM“ weglöschen, RETURN drücken, das korrigierte Programm wird gespeichert.
Das
war’s. Macht’s gut (bonne chance)!
Euer Dieter Gretzschel (Old Man Tower)

Die ABBUC Bundesliga

Seit Juli 2002 schon treffen wir uns in Wiesbaden und Umgebung monatlich um ATARI-Spiele zu spielen. Die Treffen zu viert (und mehr, oft haben wir Gäste) machen immer viel Spaß und wir zocken schon mal bis an die 10 Stunden (!). Aber selbst das wurde uns zu wenig. Nach ziemlich genau einem Jahr sannen wir, wie man mehr Mitspieler gewinnen könnte. Die neu gestaltete ABBUC-Homepage mit dem ABBUC-Chat brachte Mad Butscher auf die Idee, während unseres Treffens unsere erzielten Scores in den Chat zu schreiben. Das kündigte er dann auch im User Forum an und wählte als Spiel FLAK aus. Interessierte Mitspieler sollten am 23.07.03 von 21.00 Uhr bis 23.00 Uhr ebenfalls ihre Scores in den ABBUC-Chat schreiben. Die Resonanz war gigantisch: außer uns vieren spielten noch sechs andere Leute mit. Sieger bei diesem „1. ABBUC Highscore Chat“ wurde Dietrich mit einem Fabel-Score. Dietrichs erste Mitteilung über seine Punktzahl konnten wir kaum glauben: über 300.000 Punkte!! Wir übrigen eierten meistens bei 10.000 bis 20.000 Punkten herum. Wir kamen auch nach zwei Stunden nicht viel weiter, aber Dietrich hatte seinen unglaublichen Score noch mal fast verdoppelt. Sieger- Highscore: 539.100.

Auf Grund der guten Resonanz starteten wir im nächsten Monat wieder einen Highscore-Chat. Das zu spielende Spiel hatten wir jedoch nicht vorgegeben, sondern im Forum Vorschläge gesammelt und über diese Vorschläge dann abgestimmt. Das Rennen machte das Spiel Gyruss. Während bei der Spielsuche die Beteiligung noch ziemlich gut war, war sie am eigentlichen Highscore- Chat mit sieben Spielern enttäuschend. Fünf der Spieler waren allein schon auf unserem WGL-Treffen, also befanden sich nur zwei zusätzliche Spieler im Chat. Sieger des 2. ABBUC-Highscore- Chats wurde Mad Butscher mit 285.500 Punkten.

Am 3. Highscore-Chat war die Anzahl der Mitspieler wieder auf zehn angewachsen – der HSC hatte sich etabliert! Gespielt wurde Dropzone und Schmutzpuppe ließ die anderen Spieler hinter sich. Nach diesem Spieltag hatten wir erstmals die Idee, die drei bisher gespielten HSCs zu einer Wertung zusammenzufassen und zwar unter dem Namen „ABBUC Game League“. Erster Tabellenführer dieser Gesamtwertung war Schmutzpuppe knapp vor Mad Butscher und MK. Mad Butscher schlug für diese Gesamtwertung den Namen „ABBUC Bundesliga“ vor, in Erinnerung an den AMC und Armin Stürmer, der schon in den 80er Jahren die „ATARI Bundesliga“ ins Leben rief. Die „ABBUC Bundesliga“ war geboren! Von da an wurden für die Spieltage sowohl der Name „Highscore-Chat“ als auch „ABBUC Bundesliga- Spieltag“ benutzt.

Am vierten Spieltag wurde Bilbo gespielt, Gewinner wurde zum zweiten Mal Mad Butscher, der damit auch die Führung in der Gesamtwertung übernahm. Am fünften Spieltag sind wir vom User Forum ins Offene Forum umgezogen. Das Offene Forum war bis dahin ziemlich verwaist. Wir wollten es damit ein wenig pushen und zum Ausdruck bringen, dass die ABBUC Bundesliga für jeden offen steht.. Bei der Spielwahl stießen wir auf folgendes Problem: zwei Spiele hatten exakt die gleiche Punktzahl. Es gab zwei Gewinner. Sollten wir jetzt zwei Spiele spielen? Wir entschieden uns, dem Spiel den Vorzug zu geben, das zuerst die 38 Punkte hatte. Also spielten wir Rainbow Walker und nicht Attack of the Mutant Camels. Schmutzpuppe siegte und übernahm die Führung in der Bundesligatabelle. Ein ähnliches Problem wie am fünften Spieltag hatten wir am sechsten: diesmal hatten die beiden erstplatzierten Spieler im Spiel die gleiche Punktzahl. Dietrich und pps erreichten beide 66.500 Punkte bei Pole Position. Wir erklärten Dietrich zum Sieger, da er zuerst den Sieger-Score erreichte. Wir hatten noch ein Problem: die verschiedenen Versionen von Pole Position . Die Spieleinstellungen sollten auf „Malibu 4 Laps“ gestellt werden. Schwierig für einige, z.B. für Schmutzpuppe: „Spannend, meine Poleposition Version hat die Strecke Malibu gar nicht, nur Monaco, Namco und Datasoft!?“

Wizard durfte sich am 7.Spieltag zum ersten Mal in die Siegerliste eintragen. Mit 52.800 Punkten bei AE lag er knapp vor Dietrich. Er zog damit auch mit dem bisherigen Tabellenführer Schmutzpuppe gleich. Der 7. Spieltag bescherte uns eine Rekordbeteiligung von 12 Mitspielern. Centipede war das Spiel des 8. Spieltages. Es brachte ein Versions- Chaos mit sich – schlimmer als bei Pole Position. Und: wir hatten ein „unendlich-Spiel“. Nach einiger Übungszeit ging man einfach nicht mehr tot. Mehrere Spiele liefen noch als wir dann um 23.00 Uhr abbrachen. Zu dieser Zeit hatte Dietrich die beste Punktzahl. Wir hatten aus dem Versions-Chaos gelernt. Ab dem 9. Spieltag stellten wir immer auf der WGL-Homepage das zu spielende Spiel zum Download bereit. Gespielt wurde Time Runner . Gewonnen hat wie so oft: Dietrich.

Als nächstes spielten wir eines meiner Lieblingsspiele: Arkanoid. Es war jedoch ähnlich wie Centipede schlecht für den Highscore-Chat geeignet. Es entpuppte sich ebenfalls als „endlos-Spiel“. So gewann derjenige, der zur richtigen Zeit (23.00 Uhr) die höchste Punktzahl hatte: ich – ? – mein erster Erfolg in der ABBUC Bundesliga. Am 11. Spieltag bei Moon Patrol hatte mal wieder Dietrich die Nase vorn. Durch Schmutzpuppes Fehlen setzte sich jedoch Wizard alleine an der Tabellenspitze fest.

Der letzte Spieltag war ein echtes Finale. Ein Zweikampf zwischen Wizard und Dietrich. Wizard zeichnete sich während der Saison durch Konstanz aus: er war bis auf ein Mal jedes Mal dabei und hatte dabei keine Aussetzer.

1 Wizard Wiesbaden Gaming Lab 71 Punkte
2 Dietrich 67 Punkte
3 Schmutzpuppe 60 Punkte
4 Bunsen Wiesbaden Gaming Lab 58 Punkte
5 MK 54 Punkte
6 Mad Butscher Foundation Two 32 Punkte
7 Sleepy ABBUC 27 Punkte
8 R.I.K. of Kaisersoft Foundation Two 25 Punkte
9 Grisu Wiesbaden Gaming Lab 24 Punkte
10 pps Starsoft Berlin 23 Punkte
11 twh Foundation Two 14 Punkte
12 cmc 2 Punkte
13 Bernd/BB HAR 11 Punkte
14 atarixle 5 Punkte
15 Uncle Harry RAF 3 Punkte
16 Evelin 2 Punkte
17 Melvin 1 Punkt
17 andreas HAR 1 Punkt
19 Nicole 0 Punkte
19 Sage 0 Punkte
19 Füßchen 0 Punkte

Dietrich hatte mit Abstand die höchste Anzahl von Tagessiegen, konnte an drei Spieltagen jedoch nicht teilnehmen und hatte bei Rainbow Walker einen miserablen Score. Es ging hin und her bei dem ausgewählten Ardy the Aardvark. Eine Minute vor Schluss sah Dietrich noch wie der sichere Gewinner aus – auch in der Gesamtwertung. Er lag auf dem ersten Platz und Wizard nur auf dem vierten. Aber in der letzten Minute übertrumpfte erst Schmutzpuppe seinen Score und kurz darauf Wizard auch noch den Score von Schmutzpuppe. Wizard hatte es geschafft. Gratulation zum Titel „ABBUC Meister für ATARI 8-Bit Spiele der Saison 2003/04“. In der Gruppenwertung liegt das Wiesbaden Gaming Lab (Wizard, Grisu und Bunsen) klar vor Foundation Two (Mad Butscher, twh und R.I.K.), sowie der HAR (Bernd und andreasb).

Die ABBUC Bundesliga hat sich im vergangenen Jahr zu einer tollen Veranstaltung entwickelt. Jeder Spieltag ist eine Party. Man trifft gute Bekannte und spielt miteinander. Anfänglich waren wir ein bunt zusammen gewürfelter Haufen – wir wussten z. T. nicht, wer sich hinter den Pseudonymen versteckte. Das änderte sich mit der Zeit. Im Chat hinterließ man ja nicht nur die Score, sondern chattete auch so miteinander und lernte sic
h kennen. Man knüpfte z. T. auch über den HSC hinaus gehend Kontakte. Zum Beispiel waren 10 Personen aus der ABBUC Bundesliga auf dem ATARI-Treffen im Hunsrück (HATZ).

Für Kenner der Bundesliga war dieser Artikel vielleicht eine nette Erinnerung an die vergangenen Spieltage. Neulinge mögen sich animiert fühlen, auch mal vorbeizuschauen. Ihr werdet sehen: es macht total viel Spaß. Euer Wiesbaden Gaming Lab http://wiesbadengaminglab.atari.org

Hier ein kleiner Ausschnitt von einem HSC:
20.47 Uhr
Wizard hi ! schon jemand da ??
pps jepp…
MK action im ABBUC Chat 🙂
MK gnabend
andreasb huh! ists schon 21 uhr. irgendeine uhr geht vor
Wizard die Uhr hier spinnt ! es ist erst 20.48
andreasb wir leben mit atari halt doch in der zukunft 🙂
Wizard Time Runner ist aber wirklich nicht einfach !
Wizard Gibt es eigentlich auch das Original ( Armida ) für den Atari 8bit ?
andreasb @wizzard: hab im moment keinen atari aufgebaut
Wizard @andreas : du hast noch 7 Minuten Zeit !
Sleepy Gut´n abend allezusammen!
Wizard nach meiner Uhr ist es jetzt 21.00 Uhr. dann laßt uns mal anfangen
Sleepy Ich hätte da noch die obligatorische Frage nach der Adresse der „Punkteseite“…
Wizard Die Punkteseite ist noch offline. Wir sollten also erst mal den Chat dafür nutzen
Dietrich Hi Leute, es kann losgehen 🙂
Sleepy 5400
Bunsen Tach!
Dietrich Hmm, komme nicht auf die Hiscore-Seite ?!?
Bunsen Grisu kann heute leider nicht, Hiscore-Seite ist damit heute leider nicht verfügbar!
Sleepy „Schade. 6449 wie aktiviere ich denn einen der
die drei „“jumps““ unten rechts?“
Bunsen Sleepy: Knopfdruck
Dietrich Score 7908
Sleepy „Time runner“ unten rechts steht „“jumps““ mit
drei ixksen dahinter.“
Bunsen @Sleepy: Wenn du auf den Knopf drückst, sind
die Gegner kurze Zeit gelähmt.
pps 1660
MK 6681
Wizard 17824
Dietrich Ganz schön schwer, 8196
andreasb ich versuchs grad. 2850 und tot. 🙁
Sleepy Tatsächlich; da hat mein guter alter Competition
doch noch mal ne Macke…
andreasb geht nur über tastatur
Bunsen @Andreas: wie wär’s den Hiscorechat mal
komplett im ABBUC Magazin abzudrucken?
Sleepy @pps: yo, ist mit 6 mikroschaltern ausgestattet.
andreasb @bunsen: können wir wolfgang vorschlagen
pps deshalb sind das ja auch die besten sticks, und
wegen dem metall im joy…
Bunsen Schmutzpuppe hat sich für heute abgemeldet.
Wo ist Kaisersoft?
Dietrich Score 12364, hmm , gibts in Level 3 keinen
Sound ?
Wizard nein, hab ich auch schon vermißt
pps wer notiert mit?
andreasb der chat geht als log an bunsen
Sleepy „@wizzard: wenn man kaputt geht schon…
arghh.. keine highscoreanzeige?!?“
pps hauptsache die database wird nicht gesprengt 🙂
Sleepy 4673
Bunsen Also, ich hab auch mitnotiert
MK 7232
Bunsen 7222
pps 2540
Sleepy 5515
MK 7527
Sleepy 2240
Bunsen 6663
Dietrich 26218
pps 5215
Wizard 25827
Sleepy 7142
Bunsen 8604
Sleepy 2440
Bunsen @Sleepy: Zeit fuer Zielwasser…
Dietrich Ähem nur 13828, das Spiel finde ich echt schwer
Sleepy „Bier is alle. aber ich hab´ noch amaretto…
das funzt bestimmt auch;-) Meine Frau hat außer konkurez 2240.“
Bunsen Also endlich ein Spiel, dass fuer Dietrich schwer ist;-)
Sleepy „2280 prost!“
Bunsen Die Frauen von Mad Butscher und Wizard haben auch
schon mal mitgespielt! Ich gönn mir jetzt auch ein Bier – macht locker…
Dietrich @bunsen: Tja, diesmal werde ich wohl keinen Super-
Highscore erreichen, ich finde Time Runner aber ganz nett gemacht.
atarixle ’nabend, Freunde! Was spielt Ihr grad?
pps heute ist time runner drann…
Bunsen Hallo!
Sleepy gibt´s eigentlich eine pause-taste?
pps gibt´s bei der wgl zu saugen…
Sleepy Hi!
atarixle Timerunner sagt mir was. Ach nein, das war Spacerunner
oder so auf dem Amiga…
Bunsen Time Runner ist ein Amidar Clone. Ziemlich schwierig,
aber nett gemacht. ich werde noch zum FUNSOFT-Fan!
Sleepy 5266
Bunsen wenn die Gesichter nach hinten schauen, kann man sie
plattmachen!
Sleepy AHA!
Sleepy 4328
atarixle Welches davon ist der Punktestand? Ich habe rechts mehr
Bonus dazustehen als links.
pps das kleinere sind dann die punkte 🙂
Dietrich dieser Tipp ist aber unfair
pps nei im ernst links sind deine punkte
pps *n
atarixle Irgendwie lustig das Game…
Sleepy Yo!
Bernd nabend zusammen, bin was zu spät
Sleepy Hi!
Bunsen Hallo Bernd!
Wizard man ist das schwer. macht aber super spaß
Bunsen @atarixle: wo bleibt dein score?
Sleepy also, ich poste z.Z. keine score unter 2000… * g *
atarixle 5361
atarixle Musste mich mal warmspielen, das sollte mein erster
Score sein…
pps also bei mir klappt es irgendwie nicht… komme von 20
Spielen vielleicht ein mal in Level 2…
Bunsen „Zwischenstand für Bernd:
26218 Dietrich 25827 Wizard 11182 MK 10855 Sleepy
8814 Bunsen 7391 pps 5361 atarixle 2850 andreasb
2240 F.“
Sleepy 4720
pps aber keine punktverbesserung…
pps da verliert man jede lust 🙁
atarixle @pps: mir geht’s auch nicht besser 🙂
Bunsen @pps: mir geht es ähnlich. War noch nie in level 3
Bernd 3310
Sleepy In 3 war ich jetzt erst einmal… aber das game macht echt
spaß!
Dietrich aber nur wenn man den Dreh raus hat
Dietrich Noch ein Tipp: Es ist gefährlich in die gleiche Richtung wie
die Monster zu laufen (dann hilft nur noch springen)
atarixle Ja, man kann die Bahnen der Viecher voraussagen…
atarixle 4679
Schmutzpuppe moin
Bunsen „Moin Moin!
Hau rein: Time Runner“
Sleepy Hi!
MK moin
Schmutzpuppe nur bedingt sinnvoll, zuviel bier aber mal schauen
Bernd hallodilo
MK Ich krieg die Krise bei dem Spiel…
Sleepy Kann ich nachvollziehen!
Bunsen @Schmutzpuppe: Dann heben wir jedenfalls ne
Chance;-)
Bernd 5560 ole
Dietrich Jau: Neuer Hiscore 28920, aber Level 6 wieder ganz
knapp nicht geschafft
Wizard @bunsen: das wäre schön. ich krieg hier noch die
Kriese. über 20.000 geht ja noch. aber dann ist ganz schnell ende
andreasb @kaise: über 2800 komm ich nicht hinaus
Bunsen 2290
Schmutzpuppe 9652
Bunsen @KS: die Ehre F2s ist gerettet
Kaisersoft @Bunsen: Mit DEM Score?
MK KS: Das Game ist echt schwer
andreasb @bernd: wie iszt dein highscore?
Bunsen @KS: naja, besser als gar nicht da zu sein
pps bunsen, mach soch mal einen zwischenstand…
Bunsen ok
Kaisersoft Manchmal ist einer der Gegner in einem Karo
„gefangen“ – wie geht das?
atarixle 8335
Schmutzpuppe wie hoch ist denn der highscore?
Bernd @andreasb: noch immer 5560
andreasb ich? im score? huh?
Sleepy „11500
und noch mal level drei erreicht!“
andreasb wer issn F.?
Bunsen F. ist die Frau von Sleepy.
andreasb :-)))))))
Schmutzpuppe 12605
Dietrich So nochmal 23372 geschafft, mehr ist nicht diesmal
einfach nicht drin
Schmutzpuppe wie wäre es eigentlich mal mit einem live highscore
chat?
Wizard 26822
Schmutzpuppe der wizard geht gar nicht….
pps fahr doch zum nächsten wgl-treffen…
MK genau wir spielen alle in einem Raum und unterhaten
uns per chat 😉
Schmutzpuppe ist nicht um die ecke irgendwie…. (leider)
Sleepy * gg*
pps die besten drei ergebnisse werden doch immer gestrichen,
ODER?!?
andreasb @pps: JAAAA
Schmutzpuppe @pps: hey
Schmutzpuppe 🙂
MK ja… wär ich für
Bunsen was meinst du mit live? wie waers auf der jhv?
Schmutzpuppe jhv i
st gut
Schmutzpuppe aber noch so lange hin…
Bunsen Schreiersgruen, Uncon
Sleepy Und schluss mit daddeln…
Dietrich 27113, irgendwann verliert man die Geduld beim
spielen und dann geht man ganz schnell tot
pps immer zu…
Sleepy so is dat…
Schmutzpuppe spielen geht nicht mehr….
Dietrich Bin ich der einzige, der noch spielt ?
Bunsen ich spiel noch mal
Sleepy um die uhrzeit zählen rehtzschreibfähler eh nit mehr…
Schmutzpuppe spiel mal noch ne runde
pps mach nur… wizzard auch noch, oder?
Dietrich Ja, letztes Spiel jetzt
Sleepy ich auch…
pps … habe ein z zuviel, wer will´s?!?
Schmutzpuppe wo zum liegt denn der hundsrück?
Kaisersoft 6715
Schmutzpuppe jojo, hau rein
23:28 Uhr

Pong ohne Joystick

Neurowissenschaftler der Universität von Maastricht haben laut einem Bericht von Nature eine spezielle Version des Spieleklassikers „Pong“ entwickelt, in der zwei Spieler allein durch das Gehirn die Kontrolle der Strich-Schläger übernehmen können und damit den Pixel-Ball durch das Feld jagen. Die Wissenschaftler haben dazu die Spieler in ein magnetisches Resonanzfeld gelegt, die normalerweise für medizinische Zwecke genutzt werden. Nach einiger Zeit, so der Bericht, hatten die Spieler gelernt, den Schläger mittels der Konzentration auf spezifische Gedanken zu steuern. Eine ausgeklügelte Analyse- Software versetzt die Spieler dabei in die Lage, in Echtzeit gegeneinander anzutreten. „Es ist aufregend, dass wir zum ersten Mal zwei Subjekte haben, deren Gehirne auf diese Art und Weise miteinander agieren“, so Rainer Goebel, Neurowissenschaftler an der Universität Maastricht. Bisher war es Wissenschaftler nur gelungen, dass eine Person per Gehirnsteuerung und der daraus resultierenden elektrischen Signale einen Cursor auf einem Computer-Bildschirm bewegen konnten. Bei der neuen, magnetischen Methode werden die Gehirnaktivitäten von zwei Personen analysiert.

Zudem soll die Beherrschung der neue Methode auch leichter von den Probanden erlernbar sein. Die Technik soll irgendwann in der Zukunft dazu verwendet werden, damit behinderte Menschen beispielsweise einen Rollstuhl lenken können. Für uns alte Atarianer ist das natürlich keine Neuigkeit. Bereits auf der Sommer CES 1983 wurde das ATARI MINDLINK vorgestellt, mit dem es möglich war Spiele per Gehirn auf Atari Computern, VCS und 7800 zu steuern.
Weitere Infos dazu unter:
http://www.atarihq.com/museum/2678/mindlink.html

ABBUC e.V. PD-Neuheiten

0695 Serie Disk-Mag: COMPY-SHOP-MAGAZIN Mai 1989 2S/ED

Fortsetzung der Serie in Richtung Komplettierung. Interessant nicht nur aus historischer Sicht ist der Bericht von der HobbyTronic!!! Weitere Artikel: Basteleien an der M1-Maus, 6502-Programmierung Teil 10, Fraktale Teil 2, PASCAL Ecke und rekursive Programme, Speedy Teil 5, In den Tiefen des OS Teil 6, eine Fraktal-Bilder-Show. Game: Superball (ein guter Breakout Clone).

0696 Serie Disk-Mag: COMPY-SHOP-MAGAZIN Juni 1989 2S/ED

Fraktale Teil 3, Festplatte am XL – eine interessante Variante, Basteltipp für LED-Anzeige eines aktiven BASIC, 6502-Programmierung Teil 11, Speedy Teil 6, In den Tiefen des OS Teil 7, Level-Editor zum Spiel Superball aus CSM Mai 1989 und vieles andere mehr. Wie immer ein lohnendes Stück ATARI-Geschichte, das auch heute noch Spaß macht.

0697 The Brundles Joystick 4S/SD&ED

Auf vier Disketten findet ihr hier die Umsetzung des bekannten Spieles Lemminge inklusive eines Level-Editors. Dieser bei KE-Soft erschiene Süchtigmacher lässt sich außer mit dem Joystick auch noch mit Maus und CX-85 spielen. Und vielleicht finden sich ja ein paar Lemminge-Fans, die mit dem Level-Editor weitere Herausforderungen erstellen und als PD freigeben?!

0698 TurboBASIC 1.4 800-OS 2S/SD

TurboBASIC für den ATARI 400/800. Damit kommen auch User mit den Klassikern von ATARI dazu, TBS-Programme zu verwenden. Da die Hardware-Resourcen nicht ganz so groß sind, gibt es natürlich angefangen beim freibleibenden Speicher Einschränkungen in der Verwendung. Die Dokumentation in Englisch befindet sich auf der Rückseite.

ABBUC e. V. – Public Domain Software-Bibliothek
c/o Walter Lojek – Willem de Zwijgerstraat 20 – NL-6021 HM Budel
PD@ABBUC.DE

 

Umsetzung des Print-Magazins zu Text/HTML
Scannen, Layout, HTML Andreas Bertelmann
Rohdaten als PDF, Grafik Wolfgang Burger