ABBUC Magazin 040


Impressum

Copyright 1995 by ABBUC e.V.
Atari Bit Byter User Club e. V.
c/o Wolfgang Burger
Wieschenbeck 45
D 45699 Herten
Tel./FAX +49 2366 39623

Das ABBUC Magazin erscheint 1/4 jährlich. Jeweils halbjährlich erscheint je ein Sandermagazin.

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

Hallo Bit Byter!
Ein neues Jahr, ein neues ABBUC-Magazin und ein kleines Jubiläum. 40 Magazine haben wir bisher herausbringen können. Magazin Nr. 1 erschien vor 10 Jahren ca. 10 Monate vor der offiziellen Gründung des Atari Bit Byter user Club. ob dem Verein noch weitere 10 Jahre beschieden sein werden, steht in den Sternen. Ich denke, solange die restlichen User zusammenhalten und durch ihre Beiträge, egal in welcher Form, mithelfen das Diskettenmagazin und die Textbeilage zu gestalten, wird es den ABBUC trotz PC, Pentium und Multi-Media geben.

Ich bedanke mich bei allen, die bisher dazu beigetragen haben.

Bei denjenigen, die „nur Nutznießer“ sind bedanke ich mich für die finanzielle Unterstützung durch ihre Beitragszahlung. Denn ohne den finanziellen Rückhalt wäre es nicht möglich gewesen das ABBUC-Magazin zu dem zu machen, was es ist. In der Hoffnung auf Eure Weitere Treue verbleibe ich
mit herzlichen Grüßen

Wolfgang

 

Oldie Treff
CEBIT 1995
ATARI – SINCLAIR – SHARP MZ – COMMODORE – SCHNEIDER – TEXAS INSTRUMENTS und alle noch aktiven 8-Bit User

Liebe Freunde und user der 8-Bit Computer!

In der Zeit vom 8. bis 15. März findet in Hannover wieder die CEBIT statt. Viele Freunde der 8 -Bit Rechner haben sich inzwischen einen Rechner der neueren Technologie zugelegt, ohne sich ‚ aus guten Gründen, von ihrem liebgewordenen „Alten“, der oft der erste Kontakt zur Compterwelt war, zu trennen. In vielen Clubs geht es unvermindert weiter, sei es der ABBUC für die ATARIs, der Sharp-MZ-Club für die immer noch rege Gemeinde der SHARP-User, oder die SINCLAIR-User, die noch in mehreren Clubs aktiv sind.

In früheren CEBIT-Jahren gab es auch einmal ein Computer-Camp mit reichlich Oldie-Aktivität. Ob so etwas in Zukunft wieder machbar sein wird, müßten wir mit der Messeleitung versuchen zu klären. Aber am CEBIT-Samstag und am CEBIT-Sonntag sollten wir versuchen, mit Interessierten einen zwanglosen Treffpunkt zu vereinbaren. ich lege hiermit diesen Termin auf 12.00Uhr Mittag (OLDIE-HIGH-NOON). Also am Samstag, 11.3.95, 12.00 Uhr und am Sonntag, 12.3.95, 12.00 Uhr ist der Oldie­Treff angesagt. Treffpunkt ist oben auf der Empore der Halle 2. Das ist die Nordseite in Hallenmitte am Übergang zur Halle 1. Dort ist erfahrungsgemäß immer reichlich Platz für einen kleinen Plausch. Also, wer an einem dieser beiden Tage auf der CEBIT ist, ist herzlich eingeladen, sich zwanglos mit Freunden der 8-Bit Szene zu treffen. Zum Kennenlernen, zum Kontakteknüpfen oder einfach um sich zu unterhalten und „Flagge zu zeigen…“. Wir werden ja sehen, ob Interesse an so einem Treff besteht und eventuell in der Zukunft eine echte „oldieecke“ auf der CEBIT unterbringen.

Bei Automobilausstellungen ist man auf die Oldies immer besanders stolz. Warum sollte das bei Computern anders sein?. Also bitte mitmachen!!!

Euer Willi (Manneitz)

Das TOP Magazin
von Markus Römer

Hallo, Bit Byter!

Offenbar hat es sich noch nicht überall herumgesprochen, daß es das TOP-Magazin noch gibt. Eigentlich sollte dieses allgemein bekannt sein, aber im Computer-Flohmarkt scheint es da noch Zweifel zu geben.

Deshalb mal für euch alle:
Seit Februar letzten Jahres hat das Haus „KAISER­SOFT‘ die Herausgabe des TOP-Mogozins übernommen. 1994 gab es noch einige Probleme, daher erschienen ’nur` sieben Ausgaben, aber das soll sich 1995 gewaltig ändern!

Kaisersoft besteht aus drei Mitgliedern, Manuel Weiser (alias Shooter), Oliver Römer (alles Joey Mangare) und mir (Markus Römer alias R.I.K.). Außerdem unterstützten uns mein Bruder Michael und Nicole Gutheil (alias Maid Marian), die für die sogenannten „Amateurtexte“ verantwortlich ist. Fiktiv dabei ist zudem noch Patrick Schnabel (alias Nick Slaughter) aus Saarlouis.

Das TOP-Mogazin ist zur Zeit das einzige Magazin in der XL-Szene, das sich bemüht, monatlich zu erscheinen. Wir versuchen eine, ausgewogene Mischung aus News und Infos, Tests und
Software zusammenzustellen. Bisher ist uns das im Großen und Ganzen auch gelungen (hoffe ich!).

Natürlich hat alles auch seinen Preis. Da wir keinen großen Gewinn herausschlagen wollen (wir wollen bloß keine Miesen machen), liegt der recht niedrig, und zwar bei 25 Mark Für sechs Ausgaben bzw. 20 Mark plus 6 Disketten.

Natürlich braucht niemand die Katze im Sack zu kaufen. In dieser Ausgabe des ABBUC-Magazins sind ein paar meiner Texte, an denen kann man sich meinen Stil einmal ansehen. Wer ein komplettes Magazin testen will, braucht uns bloß kurz zu schreiben oder uns anzurufen und er bekommt die aktuelle Ausgabe zugesandt. Rückporto ist bei dieser Aktion ein nette (und erwünschte) Geste.

Ja, und damit ihr nicht im Regen steht, weil ihr ein TOP-Mogazin testen wollt und nicht wißt, woher ihr es bekommt, hier noch unsere Kontaktadresse:

TOP-Magazin c/o Markus Römer
Schiefersteinstraße 10
D-55606 Kellenbach
Tel.:06765/420
Also, wir freuen uns über jede/jeden, die/der uns schreibt!

So long: Euer R.I.K.

Die RAM kommt!
von Markus Römer

Hallo, ich bin’s schon wieder! Seit ich im Oktober 1993 Mitglied im ABBUC wurde, vermisse ich irgendwie eine Regionolgruppe hier in dor Gegend. Und weil man diesem Defizit am besten mit der Gründung einer solchen begegnet, haben wir – Kaisersoft und Freunde mit der Herausgabe der Januar-Ausgabe des TOP-Magazins die RAM, also die Rheinland-Pfälzische Atari Maniacs, gegründet! Die RAM soll übrigens nichts mit dem TOP-Mogozin direkt zu tun haben, wir mußten nur einen konkreten Termin nehmen, und am 01.01.1995 waren wir leider nicht alle zusammen.

Hier jetzt der fällige Aufruf:
Alle, Atari XL/XE-Fans in Rheinland-Pfalz, die Lust haben die Arbeit mit dem XL zu unterstützen, sind hiermit aufgerufn, sich bei uns zu melden!Anforderungen? KEINE! Nur das Interesse muß vorhanden sein. Vielleicht kann man sich irgendwann, irgendwo einmal gemeinsam treffen (wäre praktisch!). Dann läßt sich eventuell das eine oder andere Projekt verwirklichen!

Also, Atarianer, Zuschriften und Meldungen gehen vorerst der Einfachheit halber noch an die Kaisersoft-Zentrale. Hier ist die Adresse:

Kaisersoft
c/o Markus Römer
Schiefersteinstiaße 10
D-55606 Kellenbach Tel.:06765/420

Also auf gehts! Die RAM wartet auf euch!

Das Multipad3 & Superski
(c) 1994 by Porttronic/AMC
getestet von Markus Römer

Nachdem in einem der letzten ABBUC Magazine ein Test über das Skirennspiel des AMC-Verlags angekündigt wurde, kommt hier nun meine Version. Aber zuvor muß ich noch auf das Multipad3 – ebenfalls von Armin Stürmer – eingehen.

Was ist denn bitte ein Multipad?
Hmmm, ‚Multi` heißt „viel“. Bei „Pod“ weiß ich’s nicht genau, aber immerhin gibt es ja genügend Joy­pads bei diversen Spiele-Konsolen. Gehen wir mal dovon aus, doß es ein Eingabemedium ist, und genau das trifft’s.

Das Multipad vereinigt eine ganze Menge Eingabemedien in sich. Eigentlich wollte ich euch erst einmal zeigen, wie so ein Teil aussieht, aber leider hab‘ ich die Sache mit dem Einbinden von Bildern wohl nicht so richtig kapiert. Also muß ich Euch erklären, wie ein Multipod aussieht:

Stellt Euch ein kleines Kästchen vor, genau 10 cm breit, 6 cm Lief und 2,5 cm hoch, aus schwarzem Plastik. Ein Stück rechts oberhalb der Mitte befindet sich ein rot/weißer Drehregler, rechts davon ist ein gelber Knopf, unter diesen beiden Teilen befinden sich zwei LEDs (rot & gelb). Auf der rechten Seite sind noch vier Knöpfe, die wie ein Kreuz angeordnet sind (oben und unten blau, links und rechts grün). Links, rechts und vorne, an den Seiten sind je zwei Schalter, hinten ist einer. Außerdem befinden sich dort noch zwei Buchsen.

So, und wozu ist dos Ganze jetzt gut? Nun, man kann die vier linken Knöpfe wie einen ganz gewöhnlichen Joystick benutzen, Das geht in den meisten Füllen ganz gut. Bei manchen Spielen zieht das Multipad gegenüber einem Joystick mit Microschaltern allerdings doch den Kürzeren.

Ok, das Teil hat für einen gewöhnlichen Joystick entschieden zu viele Knöpfe. Außerdem wäre der Preis Für einen Joystick auch etwas zu hoch. Das Multipad kann aber auch noch etwas mehr:

Da wäre der Drehregler zu erwähnen, der als Paddle genutzt werden kann. Entweder in eigenen Programmen oder in Spielen, die so etwas unterstützen. Der gelbe Knopf dient übrigens generell als Feuerknopf.

So, das Paddle hätten wir, es gibt aber noch mehr. Zum Beispiel kann man eine ST-Maus anschließen. Ok, das ist nichts Besanderes. Die Möglichkeit, das Multipad so einzustellen, daß man die rechte Maustaste ansprechen kann ohne das Tierchen operieren zu müssen, das ist wohl doch etwas Erwähnenswertes. Es gibt zwar (noch) relativ wenig Software die die rechte Maustoste, unterstützt. `Bomb Down` z.B. kann das. In eigenen Programmen macht sich so etwas doch echt gut.

Es geht ja noch weiter!

Wer hat sich nicht manchmal geärgert, daß sein Joystick kein Dauerfeuer hat, das das Dauerfeuer im falschen Rhythmus ballert oder das es entschieden zu oft feuert? Schöner wär’s doch, wenn man bei Bedarf nur einen Knopf drücken könnte, und der Com
puter DANN im richtigen Abstand schießt. Kann das Multipad!

Es ist tatsächlich möglich, ein Dauerfeuer zu programmieren, also die Frequenz einzustellen. Die kann von 1 bis 560 Impulsen/Sekunde variieren. Wie das mit den 560 klappen soll, weiß ich allerdings nicht. Die, rote LED, die normalerweise im Takt leuchtet, ist dann durchgängig an. Für alle Ballerspiele ist dies eigentlich ideal. Auch bei dem AMC­Spiel `Herbert` soll das sehr hilfreich sein, ich könnte es mir auch bei dem Spiel `Joust` vorstellen, hab’s aber noch nicht versucht.

Übrigens, was auch ganz neckisch ist: Wie vorher angesprochen, ist in manchen Situationen ein Joystick den vier Tasten des Multipods überlegen.

Anstatt dauernd am Joystickport des Computer herumzufummeln, gibt es die Möglichkeit ein weiteres Gerät, in diesem Fall seinen Lieblingsjoystick, an die zweite Buchse des Multipads anzuschließen. Damit kann man wie gewohnt arbeiten und das erwähnte Dauerfeuer nutzen wie vorne beschrieben

Was gibL’s noch? Paint-Spray

Was ist das denn schon wieder? Nicht ganz so einfach zu erklären, ausprobieren konnte ich’s wegen fehlender Maltafel auch nicht. Ich versuche zu wiederholen, was Armin mir am Telefon erklärt hat.

Also, Paint-Spray ist eine Hilfe beim Malen mit einer Maltafel. Schließt man diese an das Multipod an, kann man damit ganz nette Sächelchen machen: Nutzt man nämlich die Dauerfeuer-Funktion des Multipads, dann kann man sehr schöne Farbverläufe „sprühen“. Man kann während des Sprühens mit dem Paddle die „Fließgeschwindigkeit“ verändern. Dabei kommen dann anscheinend sehr schöne Resultate zum Vorschein. Wer sich ein Bild dovon machen möchte, kann sich das Titelbild des Spiels ‚Superski` ansehen.

Damit das Multipad nicht so endet, wie das bei verschiedenen anderen Hardwareerweiterungen für den XL der Fall war – keine Software, also Untergang -, hat der AMC-Verlag auch gleich ein Spiel für diese Erweiterung parat:

Superski

Das ist dos allerjüngste Kind aus Wiesbaden. Superski, das klingt fast noch einem Skirennspiel. Und das ist es auch, aber wie…

Unter „Nötige Konfiguration“ findet man folgendes:
Atari XL/XE oder Atari XE-Systern
Diskettenstotion
Multipad 3
3D- Brille (rot/grün)

Ja, was ist das? Der Armin wird doch nicht ?

Doch, er hat. Aus den rot/grün Demonstrationen in Hanau’93 ist ein Spiel geworden.

Aber…

Leider kann ich den Test heute nicht so schreiben, wie er sein sollte, Denn die 3D-Funktion klappt bei mir nicht. Inzwischen weiß ich, daß es an meinem Fernseher liegt, schade. Aber ich habe in Halle erlebt, daß es WIRKLICH klappt.

Netterweise kann man das Spiel auch our konven­tionelle Rrt, sprich in 2D spiefen. Das macht tierisch Spaß!!!

Man hat zu Beginn die Wahl zwischen 5 verschiedenen Strecken, je nach Austragungsort fährt man Slalom, Riesenslalom, Super-G oder Abfahrt. Im Spiel sieht man die Strecke aus der Sicht des Rennläufers, am unteren Bildschirmrand sieht man die Skispitzen.

Außerdem sieht man die Tore und das (selbst im 2D-Modus so, daß es kein Rätselraten gibt, welche Stange als nächstes dran ist. Jetzt gibt es noch einige weitere Möglichkeiten, die Fahrt zu beeinflussen.

Zum Beispiel kann man beschleunigen. Das ist noch meiner Erfahrung aber nicht nötig und auch nicht effektiv. Tempo bekommt man auch so!

Bremsen kann man auch. Das bringt dann schon eher etwas. Man sieht schön, wie vorne die Skispit zen zusammenkommen. Bremsen sollte man zumindest am Anfang – des öfteren.

Man kann auch noch einige Unebenheiten überspringen wenn man gerade keine Lust hat sie zu umfahren.

Bei der rasanten Abfahrt hat man aber nicht nur Tore vor sich, auch Bäume und Gatter stören ein wenig. Man fährt ab und zu an einem Zeitmeßgerät vorbei und kann dann seine Zwischenzeit ablesen (wozu meist keine Zeit bleibt!).

Hat man die Fahrt hinter sich gebracht, muß man noch das Ziel erwischen und kann dann seine Zeit begutachten. Sollte man es SEHR schnell geschafft haben, kann man sich in die Liste der besten fünf eintragen ( wenn man einen Kumpel namens Joey M. hat, sollte man ihn nie eine Stunde allein lassen, weil er einen sonst aus allen High-Score-Listen rausschmeißt. Achja, die High-Score-Tabellen sind übrigens abspeicherbar.

Alles in allem ist Superski ein SPITZENSPIEL!

Gesamtfazit: Das Multipad ist ein vielseitiges Gerät, das verblüffend sauber verarbeitet ist. Der Preis von knapp 50,- DM ist natürlich kein Pappenstiel, aber es eröffnen sich doch einige neue Möglichkeiten damit. Superski ist ein Bombenspiel und bietet gewiß einen weiteren Anreiz, sich das Multipad zu kaufen. Es sollte jetzt keiner sagen „So ein Blödsinn, soll er doch noch ’ne Joysticksteuerung einbauen!“, denn das Spiel wurde EXTRA Für das Multipad geschrieben.

Alles in Allem ist das Multipad eine, durchaus lohnende Anschaffung, SupeSki sowieso.

Das wars, Markus.

PS.: Im Moment erhält man beim Kauf des Multipads noch ein kurzes Kabel, das für den Betrieb auf dem Tisch durchaus ausreicht. Wer später
zugreift, oder ein längeres Kabel will, muß sich das später dazu kaufen. Das soll nur eine Information sein, kein Wink mit dem Zaunpfahl „Kauft jetzt“

 

ATARI XL/XE MESSE IN HANAU

SONNTAG 23. APRIL 1995

10.00 bis 17.00 Uhr

Jahngaststätte, Jahnstr. in 63450 HANAU (Innenstadt)

Eintritt: 5,–DM

Natürlich wird der ABBUC auf dieser Messe auch vertreten sein. Wir veranstalten auf der Messe ein großes Gewinnspiel. Die Preise:

1. Preis Zweirechnerinterface
2. Preis Originalspiel
3. Preis 4 PD Disketten Deiner Wahl
4. Preis 3 PD Disketten Deiner Wahl
5. Preis 2 PD Disketten Deiner Wahl

Wir hoffen auch auf die Teilnahme von Regionalgruppen.
Laut Messeleitung (KE), werden alle Aussteller ein Gewinnspiel auf der Messe durchführen.

Also unbedingt den Termin vormerken.

 

ABBUC-BOX
REPORT

von SysOp Heiko

Hallo Leute!

Hier spricht zum ersten Mal der neue SysOp der ABBUC Box, Heiko Bornhorst, zu Euch. Da Wolfgang gerne weiterhin einen Bericht über die aktuelle Situation in und um die Box haben möchte, werde ich das natürlich sofort erledigen. Nun folgen also einige, Neuigkeiten, die sich in der ABBUC-Box getan haben seit ich sie auf der ABBUC JHV 1994 von Wolfgang übernommen habe.

Als erstes einmal zu der Useranzahl: Momentan hat die Box 43 User, die sich fast alle regelmäßig einloggen. Aufgrund dieser geringen Anzahl sind neue User natürlich immer gerne gesehen!

Durch den Einbau der neuen Festplatte, (ist übrigens eine Quantum LPS52S) und der Überarbeitung der Box (sowohl programm- als auch hardwaremäßig), die von unserem Floppydoktor Erhard Pütz (nochmals vielen Dank für die Hilfe!) und mir durchgeführt wurde, ist die Box nun auch schneller geworden. Wir haben viele nicht benutzte Kommandos und Textfiles verlagert und auch den Dateizugriff verändert. Da ich mich nun aufgrund meines „SysOps-Jobs“ mit dem SpartaDOS-Disketteeditor „DISKFIX“ näher auseinandergesetzt habe, kann ich nun „kleinere“ Probleme selber beheben.

Beim intensiven Durcharbeiten der Menüs der (denn ohne läuft es nicht!). ABBUC-Box habe ich festgestellt, daß man als Normal-User viele der angebotenen Funktionen gar nicht benötigt, die aber in den Hilfemenüs trotzdem angezeigt wurden, was dazu führte, daß die Hilfsmenüs länger wurden, sich der Lesezugriff verlangsamte.

Ich habe nun die Menüs auf das notwendigste begrenzt und auch die einzelnen Menü-Punkte etwas logischer „aufgebaut“. Hierdurch findet man sich als User nun auch schneller zurecht. Und wenn nicht? Kein Problem, denn ich sitze fast immer in der Nähe der Box, da sich mein eigener Computer nicht einmal 50 cm davon befindet. Wenn ihr also ein Problem habt, einfach C im Hauptmenü drücken.

So, nun wollen wir aber zu einigen weiteren Neuigkeiten kommen. Die ABBUC-Box steht nun mit zwei weiteren Ländern in Kontakt. Durch die Verbindung mit Kanada sind wir nun auch an das USF-Notz angeschlossen, in dem sich auch sehr viele ATARI 8-Bit Bretter befinden.

Neu hinzugekommen ist auch Schweden, aber das erst seit Mitte Januar.

Bald wird vielleicht auch noch Italien hinzukommen, da ich momentan mit einem dortigen SysOp in Kontakt stehe.

Nun aber noch zu den eigentlichen Daten: Die Box hatte bis heute (15.2.95) 9650 Anrufe. Für den 10000sten Anrufer habe ich (SysOp Heiko) eine besandere Überraschung. Also nichts wie anrufen!

Als ich mir vor kurzem mal die alte Userlog angesehen habe (von ’92 an), habe ich dort einige Leute entdeckt die damals aktiv waren, die sich aber bis heute noch nicht einmal wieder eingeloggt haben. Also Leute, wie wär’s mal wieder mit ’nem Anruf? Ich würde mich bestimmt freuen.

But now for something completely dif.:

Da viele von Euch vermutlich nicht genau wissen auf welchem System die Box eigentlich läuft, ist hier nun mal eine kleine Liste der Komponenten, mit der die Box (und ich) arbeitet:

– ATARI 800 XL mit 1 MB Newel RAMDisk
– Black Box (ohne Erweiterungen)
– Quantum LPS 52 S (Festplatte, 52 MB)
– 1050 mit Speedy
– HDI mit 3,5″-Laufwerk (für Backups)
– Transkey und PC-Tastatur
– und ein sehr gutes GALAXY-Modem (normalerweise, obwohl gerade mein eigenes von Creatix dranhängt)

Das Wichtigste hätte ich ja beinahe vergessen: Eine RTime8-Cartridge von ICD ist auch eingebaut (denn ohne geht es nicht)

So, ich hoffe Euch nun einen kleinen Einbl
ick in und um die Box gegeben zu haben. Wenn Ihr noch Fragen haben solltet:

Heiko Bornhorst
Wüsserkomp 14a
49593 Bersenbrück
TeI.:05439-3265 (Mo.-Fr.14-18.45h)
Sa+So, 12-14.45h) oder in der Box unter SysOp Heiko

Ach ja, hier nun noch das Allerwichtigste:

MONTAG-FREITAGS: 19-7 Uhr
SAMSTAG+SONNTAG: 15-8 Uhr

Testbericht PC-Xformer 3.0

Der PC-Xformer 3.0 ist ein Programm um den 800, 800XL und 130XE (inci. RAM-Disk) auf dem PC zu emulieren. Er wurde von Branch Always Software Ende November veröffentlicht. Im Gegensatz zu der PD-Version 2.0 bietet er nun auch die erweiterten Möglichkeiten der XL und XE Reihe. Neu ist ebenfalls die Unterstützung von Modems Druckern, PC-Joysticks und Soundkarten. Der PC­Xformer wird auf einer 1,44MB 3 1/2″ Diskette und einem 36 seitigen DIN-A5 Benutzerhandbuch ausgeliefert. Ihr PC sollte die folgenden Spezifikationen erfüllen um mit dem Xformer arbeiten zu können:

PC-kompatibler Rechner mit einem 386, 486, oder Pentium-Prozessor mit min. 512k freiem RAM Speicher (kein 8086, 80186, oder 80286) MS-DOS, Windows (3.0, 3.1, 95, oder NT), OS/2 2.1 oder OS/2 Warp, VGA oder Super-VGA-Grafikkarte, 2MB freien Festplattenspeicher.

  • Weiterhin werden unterstützt:
  • Modems
  • PC-Joysticks
  • Drucker
  • Sound-Bloster kompatible Soundkarten

Wenn man die volle XL-Geschwindigkeit nutzen will, benötigt man mindestens einen 386DX mit 33MHz. Bei schnelleren Prozessoren kann man während dem Betrieb zwischen XL und maximal möglicher Geschwindigkeit umschalten.

Das 36seitige englische Benutzerhandbuch bietet viele Informationen, die man nicht unbedingt zum Betrieb des Xformers benötigt. Über Seiten hinweg werden dort alle Befehle von DOS 2.5 und MY­DOS, ATARI ERROR-Codes, Grundlagen von BASIC und der Aufbau von PC Directories erläutert Stolze 136 Seiten umfaßt ein sogenanntes Glos sar welches sich als eine Stichwortsammlung von der #-Taste bis zum ZIOCB (Zero-Page I/0 Control Block) entpuppt. Manche der Informationen, die dort über Seiten hinweg zum Besten gegeben werden, sind wohl ganz interessant, das rechtfertigt jedoch nicht wichtige Informationen über die ersten Schritte mit dem Xformer auf einer einzigen Seite zusammenzupressen!!!

So ist es auch nicht verwunderlich, daß man im „Benutzerhandbuch“ nicht erfährt wie man den PC-Joystick, Modems oder die Soundkarte aktiviert.

Nachdem ich den Xformer wie im Handbuch beschrieben auf die Festplatte kopiert haffe fiel mir auf, daß noch viel mehr Files auf der Diskette waren. Diese.werden wohl im Handbuch erwähnt, dort steht aber nicht, daß sie zum Lieferumfang gehören. Im Hauptverzeichnis der Diskette stieß ich dann auf ein File namens PCXF30.DOC. Nachdem ich es in einem Texteditor genauer unter die Lupe genommen hatte stellte ich fest, daß dieses Files viel eher den Namen „Handbuch“ verdient hat.

Hier wird dem User in gut gegliederter Form mitgeteilt was er eigentlich alles gekauft hat und wie er es benutzen muß. Hier erfährt man dann auch endlich wie man Soundkarte, Modern und Joystick aktiviert!

Dieses File enthält die Informationen, die man im Handbuch vergeblich gesucht hat. So erfährt man, daß neben der Version 3.0 auch die PD-Verslon 2.5 auf der Diskette vorhanden ist. Außerdem befindet sich ein Programmpaket namens SIO2PC zum Transfer von Files zwischen XL und PC auf der Disk. Zu diesem Programmpaket mehr am Ende meines Testberichtes unter ‚SIO2PC‘.

Wenn man den Text des DOC-Files genau durchliest bekommt auch schon den ersten Dämpfer. Obwohl in der Werbung immer von voller Soundunterstützung (mit Soundkarte) gesprochen wird kann der PC-Xforrner nur klare Töne ausgeben. D,h. es werden nur SOUND XX,10,X-Befehle (X beliebig) sowie analoge Direktpokes unterstützt! Somit fehlen meist die Drums in den Musikstücken. Weiterhin nimmt die Lautstärke bei tiefen Tönen stark ab!

Wenn man den PC-Xformer zum ersten Mal startet meldet er sich mit dem ATARI-typisch hell­blauen Bildschirm mit der READY-Meidung. Also schnell einmal ein bißchen herumgespielt. Nach ein paar PEEKs und POKEs und anderen Befehlen meint man vor einem XL/XE zu sitzen, wenn da nicht der etwas exotisch klingende Tastaturklick Ware.

Doch was ist das? Wo ist denn der Doppelpunkt, das Hochkomma, das Gleichzeichen usw. geblieben? Weil der Programmierer eigene Wege beim Einbinden der PC-Tastatur gegangen ist werden alle User mit nicht amerikanischer Tastatur mit nicht enden wollenden Suchorgien nach Tasten belohnt!

Ein Blick in das MS-DOS-Handbuch bestätigt die Vermutung – es wird trotz anderer Einstellung der DOS-Oberflüche einfach die amerikanische Tasta­tur verwendet. Würde sich dies nur auf den Tausch von Y und Z auswirken wäre es nur halb so schlimm. Aber wer sucht schon den ‚:‘ auf dem ‚~, das auf dem Ü oder die ‚( auf der‘)‘-Taste? Wenigstens eine Kopie der amerikanischen Tastatur hätte man mitliefern können – aber nein!

Gibt man nun BYE, oder genauer gesagt BZE, ein so landet man wie gewohnt im Selftest. Normaler­weise sollte eine der Zeilen im Auswahlmenü orange hinterlegt sein, doch leider ist dies, nicht nur hier, keineswegs der Fall. Lediglich die oberste Pixelreihe des Wortes ‚Memory‘ wird orange hinterlegt, Wählt man einen der weiter unten liegenden Menüpunkte an so schiebt sich die orangene Hinterlegung nicht weit genug hinter den Menüpunkt.

Verwenden Programme wie zum Beispiel das DUP von Turbo-DOS eine Display-List, die die norma
le Höhe des Bildschirmes erweitert, so kann der Xformer die neuen Zeilen nicht mehr darstellen. Man kann jedoch mit Hilfe der Tasten der’Bild hoch‘ und ‚Bild-runter‘-Tasten der XL Bildschirm ein Stück scrollen und somit den verdeckten oberen oder unteren Teil des XL-Bildschirms sichtbar machen. Wird die Bildschirmfarbe in diesen Zeilen gewechselt so kann der Xformer diese Umschaltung gelegentlich nicht darstellen.

Die Bewegung des XL-Cursors erfolgt leider über die FI bis F4-Tasten des PCs, da die eigentlichen Cursortasten des PCs zur Emulation des Joysticks verwendet werden, Sinnvoller wäre es meiner Meinung noch gewesen die Joystick-Emulation auf die Funktionstasten zu legen und die Cursortasten zur Bewegung des Cursors zu verwenden, da der Anschluß eines ‚richtigen‘ PC-Joystick möglich ist. Leider wird auch nur EIN Joystick simuliert obwohl bei angeschlossenem PC-Joystick drei Eingabemedien zur Verfügung stehen – Cursorblock, NumPad und PC-Joystick,

Natürlich darf man nicht erwarten, daß der Xformer alle Fähigkeiten des ATARls beherrscht. Wenn der Hersteller jedoch mit vollmundigen Versprechungen damit wirbt, dann muß er sich auch gefallen lassen daran gemessen zu werden.

Wer dem Xformer nicht schwierige DLIs und Grafikmischungen zumutet bekommt, einen schnellen PC und eine amerikanische Tastatur vorausgesetzt, ein akzeptables Programm geliefert.

So arbeitet der PC-Xformer 3.0 einwandfrei mit Kyan-Pascal und Turbo-Basic zusammen.

Nun aber zu einem wichtigen Punkt. Wie bekommt der PC-Xformer seine Files bzw. Disketten die er zum Betrieb benötigt?

Beim Aufruf des Xformers können ihm direkt Disketten‘ angegeben werden, mit denen er arbeiten soll. So wird zum Beispiel mit dem Befehl

XFORMER -S DOS25.XFD DEMOS.XFD

das File DOS25.XFD als Bootdiskette verwendet und DEMOSIXFD als ‚D2:‘, Der Parameter -S gibt an daß die PC-Soundkcirte verwendet werden soll. Die XL-Disketten werden also als ein File im XFD oder ATR-Formcit abgelegt vom Xformer gelesen.

Während der Xformer arbeitet kann man jederzeit über die F11 -Taste in ein Menü gelangen in dem man ‚Disketten wechseln‘ kann, Leider ist es hier nicht möglich PC-Directories anzuzeigen, so daß man seine Diskettennamen im Kopf behalten muß.

Im Lieferumfang des PC-Xformers ist neben DOS 2.5 auch MYDOS und einige Demos vorhanden. Wie schon gesagt kann der Xformer zwei unterschiedliche Typen von Diskettensimulationen lesen. Verwendet man eines der auf der ABBUC ATARI & PC Diskette (PD #346) vorhanden Proramme, so kann man, ein 5 1/4″ PC-Laufwerk und Double Density fähige XL-Floppy vorausgetzt, einzelne Files auf den PC transferieren. Sollen jedoch ganze Disketten transferiert werden, die eventuell noch bootfähig sein sollen, ist diees Verfahren nicht praktikabel.

Übrig bleibt nur eine Hardwarelösung via DFÜ-Programm, Turbo-Link oder dem mitgelieferten SIO2PC Programmpaket. Bei DFÜ-Übertragung muß auf Hardwarehandshake geachtet werden, da sonst nur ASCII-Flies übertragen werden können. Der Turbo-Link überträgt die Files zur Zeit leider noch in einem Format, das der PC-Xformer nicht lesen kann!

SIO2PC

Das letzte Verfahren bietet meiner Meinung nach das bei weitem beste Preis / Leistungsverhältnis und ist das universellste. Es wird lediglich ein wenig Hardware benötigt um die Schnittstellensignale des SIO-BUS auf die der RS-232-Schninstelle des PC umzusetzen. Die BauanIeitung ist im Lieferrumfang vorhanden (File). Der PC-Xformer kann die übertragenen Files oder Disketten direkt lesen! Das SIO22PC Progrogrammpaket umfaßt 5 Programme. Das wichtigste ist dabei das File SIO2PC.EXE die anderen Programme sind ältere Versionen von Progrommtellen des SIO2PC.EXE-Files, so daß ich mich hier auf die Beschreibung dieses Files beschränke.

Das File README.TXT erklärt das Programm gut und ausführlich. Neben diesem Textfile befinden ich im SIO2PC-VerzeichnIs noch mehrere andere Textfiles zur Erklärung der anderen Programme und die Bauanleitung für das SIO2PC-Interfcice.

Das SIO2PC-Programm bietet ein großzügig gestaltetes Menü über das alle Funktionen angewählt werden können. Neben den elementaren Funktionen wie Wahl des COM-Anschlusses und dessen Adresse, kreieren einer XL-Disk und deren Abspeicherung umfaßt es auch viele andere nützliche Funktionen wie Listen von XL und PC-Direktories und die detaillierte Einstellung des Übertragungstimings. Es können bis zu vier Diskettenstationen gleichzeitig simuliert worden. Dabei kann die Größe jeder einzelnen Station in weiten Grenzen variiert werden. Die Gesamtgröße aller ungezählten Floppies ist nicht von der Größe des vorhandenen RAM-Speichers des PCs unter DOS limitiert. Reicht der RAM-Platz nicht aus, so wird einfach ein File auf der Festplatte angelegt.

Das Programm kann zum einen zur Simulation von Diskettenstation bei XL-Betrieb eingesetzt werden wie auch zum Transfer von Files und bootbaren Disketten vom ATARI auf den PC und zurück. Die Datenübertragung betrügt wohl leider nur 19200 Baud, da aber praktisch keine Zeit zwischen einzelnen Zugriffen zum Positionieren des Schreib / Lesekopfes benötigt wird, wirkt sie viel schneller. Für User die z.B. Kyan-Pascal bis jetzt auf einem Rechner ohne RAM-Erweiterung benutzt haben wird ihr XL auf einmal rasend schnell erscheinen, Die KYAN (D1) und / oder die File-Disk (D2) kann vom PC simuliert werden und beschleunigt so das kompilleren enorm.

Das Booten des XL/XE über eine simulierte Boot­disk funktioniert genauso einfach wie die Simulation einer XL-RAMDISK (D8:).

Das Programm, die Anleitung und die -Hardware des SIO2PC-Paketes wirkt im Gegensatz zum PC­Xformer gut strukturiert und aufgeräumt. Der Autor des SIO2PC-Paketes, Nick Kennedy, liefert für ein Shareware-Programm, ein hervorragendes Ensemble, das ich nur empfehlen kann!

Beim PC-Xformer bleibt die Hoffnung, daß der Autor möglichst bald eine Revision des Programms herausbringt die zumindest die einfach zu b
ehebenden Mankos wie z.B. die Tastaturbelegung und die Unsichtbarkeit eines Teils des XL-Bildschirmes ausmerzt.

Trotzdem bin ich der Meinung, daß sich der Kauf des PC-Xformer-Paketes lohnt. Allein der SIO2PC­Teil ist sein Geld vollauf Wert.

XFormer SIO2PC
Preis/Leistung 3 1
Grafik 3+
Sound 4
Bedienung 5 2

Einige PC-Xformer-Pakete sind noch für 30 DM bei Wolfgang Burger zu beziehen. Sollte es mehr Interessenten geben wird eine neue Sammelbestellung herausgehen.

Wer sich den Aufbau des SIO2PC-Interface nicht zutraut, oder das Risiko für seinen PC beim Selbstbau zu groß ist kann das Interface auch bei mir bestellen.

Das S102PC-Interface wird auf einer geätzten Platine fertig aufgebaut in einem ca. 10x6x3cm großen Kunststoffgehäuse geliefert. Für den Anschluß in Richtung ATARI ist eine SIO-Buchse eingebaut. Die Verbindung zum PC besteht in einer 25pol. SUB-D-Buchse.

Das fertig aufgebaute S102PC-Interface kostet incl. Versand 40,- DM.

Die passenden Kabel, also 1 SIO-Kabel sowie 1 Modern-Kabel (2m, 2x25pol) kosten beim Kauf eines Interface jeweils 10 DM, Bestellungen für das Interface bitte an:

Thomas Grasel
Dillenburgerstroße 61
60439 Frankf urt / Main
Telefon: 069 / 577516
von Thomas Grasel

 

Atari 8bit Messe in Hanau
von Thomas Grasel

Bald ist es wieder soweit.
Am Sonntag den 23. April 1995 wird in Hanau von 10-17h die von KE-Soft organisierte ATARI 8­bit Messe in der Jahngaststätte stattfinden. Die jenigen die, aus welchen Gründen auch immer, noch nie auf dieser Messe waren können bei mir gegen Einsendung eines adressierten und frankierten Rückumschlags eine Wegbeschreibung und eine Kopie eines Innenstadtplanes beziehen.

Da in diesem Jahr keine Standgebühren mehr verlangt werden sandern ’nur‘ der übliche Eintritt und ein Preisausschrelben, werden wohl wieder die meisten privaten und gewerblichen Anbieter sowie Clubs vertreten sein.

Du solltest die Gelegenheit nutzen dich über Neuentwicklungen zu informieren, mit Gleichgesinnten zu debattieren sowie Soft- und Hardware ganz ohne Lieferzeit kaufen zu können.

Da die Messe in der Jahngaststätte stattfindet ist für das leibliche Wohl bestens gesorgt. Man kann sich in aller Ruhe sein Mittagessen zu günstigen Preisen schmecken lassen ohne die Messe verlassen zu müssen.

Auch in diesem Jahr werde ich den ABBUC in Hanau vertreten, da Wolfgang leider an diesem Tag in seinem wohlverdienten Urlaub ist. Ich werde mich bemühen, daß dies kein Nachteil für Dich bedeutet. So kannst Du auch Deine Abo-Gebühr entrichten, Clubmitglied werden und einen Teil der Baupläne einsehen und bestellen.

Das von mir erstellte Schaltnetztell für ATARI 8-bit (Eauplan 13514) kann genauso bestaunt werden wie das automatische 2-Rechnerinterface, SIO2PC-Interfoce (siehe Testbericht über den PC­Xformer in dieser Ausgabe) und Digitalvoltmeter. Natürlich können diese Artikel auch auf der Messe bestellt werden.

Interessierten kann ich jedoch anbieten sich noch vor der Messe mit mir in Verbindung zu setzen um die Artikel zu bestellen. Dann kann ich die Waren bei rechtzeitiger Bestellung bis zur Messe fertigstellen und auf der Messe Übergeben.

Wer die oben aufgelisteten Artikel noch nicht kennt sollte die folgenden Kurzbeschreibungen

Schaltnetzteil für Atari 8 bit

Den Bauplan zum Schaltnetztell gibt es beim ABBUC Bauplanservice unter der Nummer B514. Es ist eine 18-seitige Anleitung, die neben allen notwendigen Zeichnungen, Bildern und dem Bauplan auch eine kurze Erklärung der Hintergründe beinhaltet die zur Entwicklung des SNT geführt haben. Im folgenden kurz die wichtigsten Punkte:

-> Eine Stromversorgung für alle Geräte der Anlage (Die alten Originalnetzteile werden nicht mehr benötigt)

• Kurzschlußfeste Ausgänge

• Genügend Reserven zum Anschluß zusätzlicher Geräte

• Entspricht
den VDE Bestimmungen

• Keine heißen Orginallnetzteile mehr

• Keine heißen ATARI-Floppies mehr

• Ein Powerschalter für alle angeschlossenen Geräte -> Zwei 230V~ Steckdosen für den Anschluß von weiteren Geräten -> Nur noch eine Wandsteckdose für die komplette CompUteranlage nötig -> Platzersparnis gegenüber den Orignialnetzteilen

• Weniger Kabelwirrwarr

• Energieersparnis

Das Gerät kann auch als Fertiggerät über mich bezogen werden. Die genauen Kosten hängen von Deinen Wünschen ab. Wenn Du also Interesse an einem Fertiggerät hast dann schicke mir einen Brief in dem Du mir die Anzahl und Art der Geräte die Du an das SNT anschließen willst, mitteilst. Natürlich können dabei auch Deine Sanderwünsche berücksichtigt werden. Ich schicke Dir dann unverbindlich ein Angebot mit dem genauen Preis für Deine ganz spezielle Version zu.

Automatisches 2-Rechnerinterface

Das automatische 2-Rechnerinterface dient dazu gleichzeitig zwei Rechner über die SIO-Schnittstelle an ein oder mehrere Peripheriegeräte anzuschließen. Mit Peripheriegeräten sind alle Geräte gemeint die von ATARI zum Anschluß an den SIO-Port angeboten werden. Eine Ausnahme sind nur die Datenrecorder, sie müssen direkt an die Rechner angeschlossen werden.

Das Gerät befindet sich in einem nur 101x60x 26mm großen schwarzen Kunststoffgehäuse. Es verfügt über zwei Eingangsbuchsen und ein Ausgangskabel mit Stecker. Die zwei Rechner werden mit Hilfe von ’normalen‘ SIO-Leitungen mit den Eingangsbuchsen des Rechnerinterface verbunden. Die Ausgangsleitung wird wie üblich in das Peripheriegerät gesteckt.

Peripheriegeräte können sowohl zwischen dem jeweiligen Rechner und dem Rechnerinterface, oder dahinter angeschlossen werden. Geräte zwischen Rechner und Interface können nur von dem direkt angeschlossenen Rechner angesprochen werden. Das Peripherlegerdt arbeitet ‚Iokal‘.

Die Spannungsversorgung des Rechnerinterface erfolgt über die SIO-Schnittstelle eines der beiden angeschlossenen Rechner. Der Stromverbrauch beträgt ca. 5mA so daß selbst Rechner mit schwachen Netzteilen ohne Probleme angeschlossen werden können.

Der Betriebszustand des 2-Rechnerinterfoce wird ständig über drei Leuchtdioden angezeigt.

Das Automatische 2­Rechnerinterface kostet als Komplettbausatz für 70DM oder als Fertiggerät für 100 DM.

SIO2PC-Interface

Das SIO2PC-Interface dient in Verbindung mit der gleichnamigen PC­Software einen PC an die ATARIs anzuschließen. Genaueres über das Interface und die Software steht im Testbericht zum PC­Xformer in dieser Ausgabe.

Das fertig aufgebaute Interface kostet 40 DM.

Passendes SIO- und Modem-Kabel kosten je 10 DM

So, ich hoffe ich habe Dein Interesse geweckt und kann Dich auf der Messe in Hanau begrüßen.

Sollten irgend weiche Fragen offen geblieben sein, oder willst Du ein Gerät bestellen oder auch nur etwas darüber wissen dann schreib an:

Thomas Grasel
Dillenburgerstroße 61
60439 Frankf urt / Main
Telefon: 069 / 577516
von Thomas Grasel

 

Cracking the code
Teil 3
von Keith Mayhew und Roy Smith

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

(Zum besseren Verständnis – wenigstens hoffe ich das – werde ich auch in diesem Kapitel ein paar zusätzliche Erläuterungen einfügen.)

Die ersten beiden Teile dieser Serie haben Euch -hoffentlich – eine, solide Grundlage darüber vermittelt, wie ein Computer, insbesandere der XL/XE, funktioniert und eine knappe Einsicht in die Computermathematik mit Binär- und Hexzahlen gewährt. Auf dieser Grundlage können wir uns jetzt mit ein paar Beispielen und Erklärungen bezüglich Assembler beschäftigen. Wir gehen davon aus, daß Ihr stolze Besitzer eines Assembler-Pakets seid, etwa der Atari Assembler Editor Cartridge, für die alle unsere Listings geschrieben wurden. Besitzt Ihr nun aber ein anderes Assembler-Paket, werden wir Euch einige kurze Gedanken auf den Weg geben, wie man die paar nicht übereinstimmenden Befehle verändern kann. Habt Ihr kein Assemblerpaket, dann müßt Ihr Euch unbedingt eines zulegen. Falls Ihr ernsthaft in Asssembler programmieren wollt. Alternativ zu den kommerziellen (wie, Bibo-Rssembler, Atmas und anderen: A.K.) bieten einige Clubbibliotheken zwei Möglichkeiten (sehr zu empfehlen: USERCOMP) (ich weiß nicht, ob und was dor ABBUC anzubieten hat. A.K.) [z.B. PD-Nr.‘ 368 Macro­Assembler 2.2 die Redaktion]

Alle im folgenden abgedruckten Beispiele sind nur dann ols lauffähige Programme gedacht, wenn sie incl. der Zeilennummern abgedruckt sind, Proramme ohne diese, sollen nur Lernhilfen sein und funktionieren in der vorliegenden Form nicht.

Mnemonics/Gedächtnishilfen

Alle 6502-Instruktionen (original englisch: instructions, auf deutsch etwa: Instruktionen, Anweisungen und hier wohl auch Befehle. M.K.) sind mit Dreibuchstaben-Namen versehen die man Mnemonics nennt (Das Wort kommt aus dem AIt-Griechischen und heißt „merken“, ’sich erinnern`, davon obgeleitet wird das Fremdwort „Mnemotechnik“, das im Deutschen gewöhnlich mit ‚Eselsbrücke` wiedergegeben wird. Im Kindergarten und in der Schule lernt ,man irgendwelche netten Verse, um sich bestimmte Regeln besser zu merken, etwa den: Schau links, schau rechts, schau geradeaus, dann kommst du sicher gut nach Haus‘ – Hat im Zusammenhang mit Programmen und schon gar Assembler-Programmierung wenig Nutzen, klingt aber doch hübsch, nicht wahr? M.K.). Der Grund dafür ist ganz einrach: Mit diesen drei Buchstaben kann man sich die Befehle leichter merken, als wenn man sich jedesmal Zahlenketten einprägen müsste. (Mit ein bißchen Phantasie, kann man sich nämlich unter den drei Buchstaben ein Wort vorstellen. M.K.) Wenn man mit einem Assembler arbeitet, schreibt man tatsächlich mit Hilfswörtern (Menmonics), und erst wenn das Programm „assembliert“ wird, werden diese „Wörter“ in die entsprechenden Zahlenketten umgewandelt, die der Computer lesen kann, also den endgültigen Maschinencode. Assembler-Sprache ist also nichts anderes als Maschinencode, lediglich in einem leichter zu merkenden Format.

Getting started / Auf geht’s

Das erste dieser `Wörter`, mit dem wir uns befassen ist die, Instruktion „LDA“. Dies bedeutet LoaD (LaDe) den Accumulator. In anderen Worten: Wenn diese Instruktion ausgeführt wird, dann wird ein Zahl von 0 bis 255 in das A-Register des 6502 geschrieben. Woher diese Zahl tatsächlich kommt, wird durch das (die) Operantenbyte(s) bestimmt. Wir erinnern uns an Teil 2 dieser Serie: LDW ist ein Op-Code und die beiden folgenden Bytes sind Operandenbytes. Der Op-code „LDA“ kann in vielen verschiedenen Adressier-Modi benutzt werden: die einrachste, Möglichkeit ist die des direkten Adressierens (immediate addressing):

LDA #40

In diesem Fall haben wir die Dezimalzahl 40 ins Register 8 geladen (geschrieben). Das #-Symbol informiert den Assembler einen Op-Code mit der Bedeutung `Lade den Accumulator im Immediate Mode zu produzieren. Gebräuchlicher ist dieso Schreibweise:

LDA #$28

Das hat genau denselben Effekt wie das vorhergehende Beispiel (LDA #40) außer, daß wir die Dezimalzahl als Hex-Zahl geschrieben haben. Ausgedrückt wird dies durch das vorangestellte Zeichen ($).

Die niedrigste Zahl, die in ‚A“ geladen worden kann ist 0, die größte 255 oder $FF. (Zur Erinnerung: das A-Register ist ein 8 Bit-Register.) Wird diese Zeile, durch den Assembler (= das assemblerprogramm) assembliert, so konvertiert er unseren Mneomonic Code (hier also „LDA“) in eine einzelne Hexeadezimalzahl, so daß unsere Zeile dann so aussieht:

$39 $28

Dabei ist $39 der Op-Code und $28 das Operanden-Byte. Achtung: Die meisten Assemblerprogramme lassen das „$“-Zeichen weg. Diese beiden Zahlen, $39 und $28 werden dann in aufeinander folgende Speicherzellen (locations) geschrieben, wo sie zur Ausführung (des Programms) zur Verfügung stehen. Es lohnt sich zur Kenntnis zu nehmen, daß handelsübliche Assembler das Maschinensprache-Listing gewöhnlich im Hex-Format ausgeben. Es ist daher von grundsätzlicher Bedeutung, sich mit dem Hex-Format vertraut zu machen.

Schauen wir uns folgendes an:

WR $28
Vermutlich habt Ihr gleich erkannt, daß das 4-Zeichen fehlt. (Bit-ßyter sind klüger!) Der Grund, wir benutzen nicht länger den Immediate Mode, sandern das sog. Zero-Page- oder Kurz-Adressieren (Zero = Null), In diesem Arbeitsmodus befinden sich die Daten, die nach „A“ geschrieben werden sollen, in der Speicherzelle $28. Und da es sich um eine Zahl kleiner als 255 oder $FF handelt, fällt sie in die erste Speicher-Seite ((Doge), also Page 0. Wenn also die Speicherzelle $28 den Wert $68 enthalten hat, dann läse der Computer $68 und schriebe diesen Wert in „A“ (noch einmal: Die zu lesende Zahl kann nur zwischen 0 und 255 liegen)) Wird diese Zeile nun assembliert, ändert sich am Operanden-Byte nichts. Weil wir aber einen anderen Adressier-Modus benützen, ergibt sich auch eine anderer Op-Code:

$A5 $28

Angenommen, die gewünschten Daten, $68, befanden sich nicht in Page 0, sandern irgendwo anders im Speicher, dann bräuchten wir den Absoluten Adressier-Modus, um Zugang zu ihnen zu haben. In diesem Fall bräuchten wir zwei Operanden-Bytes, um den kompletten Speicherinholt von 0 bis $FFFF (also alle 64K) ansprechen zu können. Achtung: Der Programierer muß hier keine komplizierten „ModusUmscholtvorgänge“ vornehmen. Denn sobald die angesprochene Speicherstelle (auf Grund ihrer Größe) nicht mehr in der Page 0 liegen kann, bedient sich der Assembler automatisch des Absoluten Adressier-Modes. Nehmen wir also an, die Speicherzelle $24E5 enthält die gesuchten Daten, $68. Um diese nach „0“ zu laden, müßten wir folgendes schreiben:

LDA $24E5

Und wieder würde der Op-Code noch dem Assemblieren anders aussehen, denn zum einen wurde eine Modusänderung druchgeführt, und zum anderen muß ein zusätzliches Byte angefügt werden, weil wir einen größeren Speicherbereich (größer als 255I) ansprechen:

$AD $E5 $24
Wie man sieht, lautet der Op-Code $AD, ober die Speicheradresse wurde genau „verkehrt herum“ geschrieben, d.h. die beiden Bytes wurden vertauscht.: Das hintere Byte, das man als Low-Byte bezeichnet steht jetzt vorne, das vordere Byte, als High-Byte bezeichnet, steht hinten. Dies geschieht deshalb, weil es der 6502 in dieser Form erwartet. Freundlicherweise erlaubt es der Assembler, es in der „normalen“ Weise zu schreiben. (Übrigens, wer an dieser Stelle – Low-Byte/High-Byte – ungläubig schaut oder sich gar frustriert abwendet, die oder der möge sich erinnern, daß wir es im „Bürgerlichen Rechnen“ eigentlich ebenso machen: Wir sagen sechs- und-zwanzig, schreiben aber ZWEI SECHS. Unser Low-Byte wird auch zuerst gesprochen! A.K.)

Es lohnt sich, zu erkennen, daß der Assembler für jedes Byte immer eine zweistellige Hex-Zahl produziert. Zwar dürfen wir Hex-Zahlen auch ein- oder dreistellig eingeben, der Assembler wird aber immer die fehlenden Nullen ein
fügen. Zum Beispiel

LDA $5 wird als $A5 $05 assembliert.
LDA $B3C wird als $AD $3C $08 assembliert.

Wir haben somit gezeigt, daß der Accumulator in drei Adressier-Modi geladen werden kann. Es gibt, wie Ihr wißt, noch mehr. Aber dazu kommen wir später. Die anderen beiden Register, „X“ und „9“ werden ebenso geladen, außer daß andere Mnemonics benutzt werden, z.B. „LDX“ und „LDY“. Beispiel
LDX #$E4 (Lädt „X“ im Immediate Mode) LDY $38 (Lädt „9“ im Page-O-Mode)
LDX $6E43 (Lädt „X“ im Absoluten Mode)
Store it away/Und speichern!

Wir haben nun gesehen, wie man Daten in diese drei Register lädt. Jetzt werden wir uns ansehen, wie man diese Daten in den Arbeitsspeicher bekommt. Noch einmal: Alle drei Register hoben ihre eigenen (für sie typischen) Mnemonics, und sie lauten: „STA“, „STX“ und „STY“. Anders als bei „lood“ werden die Daten nun in eine Speicherstelle obgespeichert; daher kann der Immediate Mode nicht benutzt werden. Die folgenden Beispiele zeigen die Anweisungen dafür in den beiden anderen Adressier-Modi (Tut mir leid, aber es läßt sich langsam wohl nicht mehr umgehen, Computer-Kauderwelsch zu verwenden. Deutsche Wörter dafür sind weder sanderlich geeignet, noch irgendwie klarer. A.K.):
STR $12 (Speichere „A“ in Speicherzelle $12) STX $4C5F (Speichere „X“ in Speicherzelle $4C5F) STY. $10Eß (Speichere „Y“ in Speicherzelle $10EB)
(Zur Erklärung der Mnemonics ST… : ST = STore, d.h. speichere; STA = speichere den Inhalt von Register‘ („A“ für Accumulator) in Speicherzelle $12; entsprechend dann STX = speichere den Inhalt des X-Registers … usw. A.K.)
„A“ (den Inhalt des Accumulotors; O.K.) haben wir im Page-O-Modus gespeichert; den Inhalt von „X“ und „Y“ im Absolute Mode (im Absoluten Modus). Angenommen, wir wollen eine Zahl in einer bestimmten Speicherstelle speichern, dann würden wir diese Zahl in ein Register laden und dann den Inhalt dieses Registers in der gewünschten Speicherstelle abspeichern. Und zwar so:

LIDA #$60 STR $0400

Wir haben „A“ mit der Zahl ($60) im Immediate Mode geladen und dann diese Information in die Speicherstelle $0400 geschrieben (gespeichert). Angenommen, wir wollen nun Daten von einer Speicherstelle in eine andere verschieben, dann sähe das so aus:

LDX $7043 STX $0308

Jetzt hoben wir die Daten aus der Speicherstelle $7E43 in das Register X geladen (im Aboluten Mode) und dann in die Speicherstelle $0306 geschrieben (gespeichert). In diesen beiden Beispielen, in denen wir Daten gespeichert und Daten verschoben haben, können wir beliebig jedes der drei bisher genannten Register „8“, „X“ oder „2“ benutzen.
Logically speaking/Logisch gesagt

In die interne Struktur des 6502 sind drei logische Operatoren eingebaut, mit denen Zahlen verarbeitet werden können. Es sind dies „And“, „Or“ und „Exclusive-Or“. Die Mnemonics dazu lauten „AND“, „ORA“ und „EOR“.

Diese drei Op-Codes arbeiten nur mit dem A-Register, nicht mit dem X- und dem 2-Register. Achtung: Da alle 6502-Menomonics standardmäig drei Buchstaben haben, hat man die Funktion „Or“ „ORA“ genannt (was natürlich auf das 9-Register verweisen soll. A.K.) Zur Übersetzung: And = und; Or =- oder; Exclusive-Or = außer:).
Der Zweck der „AND“-Funktion ist, bestimmte Bits im A-Register auf 0 zu setzen. Die „AND“-Funktion hat vier mögliche Zustände:

0 AND 0 = 0 0 AND 1 = 0 1 AND 0 = 0 1 AND I = I

Man sieht, verbindet man zwei Bits per Funktion AND, so erhält man nur dann das Ergebnis 1, wenn beide Bits den Wert 1 haben. Wendet man dieses Prinzip auf 8 Bits (= 1 Byte) an, dann können wir die Ergebnisse nützen, um das Bit-Muster zu erhalten, das wir wünschen:

10110010 (Byte 1)
AND 01110100 (Byte 2)
00110000 (Ergebnis)

Wir haben hier Byte 2 mit Byte 1 per AND-Funktion verbunden, (Fachchinesisch: Byte 2 wurde mit Byte 1 geANDet.) um unser Ergebnis zu erhalten. Schauen wir uns das Beispiel an und arbeiten es von rechts nach links durch

Bit Null 0 AND 0 = 0
Bit Eins 1 AND 0 = 0
Bit Zwei 0 AND 1 = 0

usw., bis wir alle Bits durchhaben. Byte 2 wird häufig als eine „Maske‘ bezeichnet, die wie ein Sieb funktioniert, wobei der Wert „1“ die Funktion eines Lochs im Sieb hat, weil es die Bits aus Byte 1 (unverändert) durchläßt. Man kann dies an unserem Beispiel erkennen: Die Bits aus Byte 1 „rutschen“ unverändert in das Ergebnis, wenn sie über einer „1“ des Byte 2 stehen. Und umgekehrt finden wir überall da, wo in Byte 2 eine Null steht auch im Ergebnis eine 0. (Der Wert „0“ in Byte 2 bewirkt in jedem Fall, daß im Ergebnis an dieser Stelle eine 0 rauskommt. A.K.)

Angenommen, wir wollen sichergehen, daß die Bits 5 und 7 im A-Register auf Null gesetzt sind, dann würden wir die folgende Maske benutzen:

01011111

Indem wir diese AND-Maske über das A-Register legen (Das A-Register wird gef9NDet.) – und zwar ganz egal welcher Bit-Pattern (= Bit-Muster) dort steht – erhalten wir wegen der beiden Nullen in Bit 5 und Bit 7 im Ergebnis in den Bits 5 und 7 ebenfalls immer eine Null. Die restlichen Bits bleiben (wegen der Einsen) unverändert. Das Ergebnis dieses „ANDens“ wird automatisch ins A-Register eingegeben. Angenommen, das A-Register war mit dem Binär-Pattern (= Muster aus Binärzahlen) 10011010 (Hex 9A) geladen und wird dann mit unserer Maske geANDet: 01011111 (Hex 5F), so daß die Bits 5 und 7 „genullt“ werden, erhalten wir als Ergebnis: 00011010 (Hex 1 A)

LDA #$9A AND #$5F STR $0670

Wir haben hier das A-Register mit $9n geladen, dem Hex-Equivalent unseres originalen Bit-Patterns (= dem Hexadezimal-Gegenwert unseres ursprünglichen Bytes). Wir hoben es mit unserer Maske $5F geRNIDet, so daß als Ergebnis $1A herauskam, das sich nun (automatisch!) im A-Register befindet. Diesen neuen Bit-Pattern (unser neues Byte) speichern wir dann in die Speicherstelle $067D. Um das A- Register zu laden und für den AND-Vorgang, haben wir den Immediate-Mode benutzt. Wir hätten aber auch jeden anderen der bisher beschriebenen drei Adressier-Modes verwenden können.

Der zweite logische Operator „011“ wird benutzt:um bestimmte Bits im Ergebnis auf 1 zu setzen. Die „011“-Funktion hat vier mögliche Zustände:

0 OR 0 = 0 0 OR 1 = 1 1 OR 0 = 1 1 OR 1 = 1

Aus dieser Tabelle kann man ersehen, daß das Ergebnis, verbindet man zwei Bits per „OB“, immer 1 ist, es sei denn beide (Ausgangs-) Bits haben den Wert 0. Im folgenden Beispiel werden zwei Bytes per OR verbunden:

01011100 (Byte 1)
01101001 (Byte 2)
01111101 (Ergebnis)

Wie man sieht, enthalten nur Bit eins und sieben von Byte 1 und 2 zusammenpassende Nullen, so daß sich an diesen Stellen 0 ergibt. Angenommen der Accumulotor enthält das Byte 10100011 (R3 Hex), und wir wollen sicher gehen, daß die Bits 6, 5, 2 und 0 auf „1“ gesetzt sind, dann mußten wir es mit dem folgenden Byte – 011en: 01100101 (65 Hex), bei dem die Bits 6, 5, 2 und 0 eine „1“ enthalten. Im umgekehrten Fall müssen die anderen Bits auf „0“ stehen, damit das Ergebnis praktisch eine Kopie der Bits aus dem Byte 1 sind. Das Ergebnis dieses „OB“-Vorgangs mit diesen beiden Bytes ist 11100111 (E7 Hex). Dieses wird automatisch ins A- Register zurückgeschrieben.
In Assembler würden wir dies schreiben wie folgt:
LDA #$A3
ORA #$65
STA #$4BOD

Das 8-Register wird mit $A3 geladen, mit $65 ge08t, was wiederum das Ergebnis $E7 im A-Register ergbit, das dann in die Speicherstelle $4130D geschrieben wird. Der letzte der logischen Operatoren ist „ExclusiveOr“ Er wird dazu benutzt wird, bestimmte Bits des Accumulotor zwischen den beiden möglichen Zuständen, z.B. „O“ und „1“ hin- und herzuschalten. Mit anderen Worten, war das Ausgongs-Bit eine „0“, so wird es durch das Umschalten eine „1“; würde es abermals umgeschaltet, würde es wieder zur „0“. Die vier möglichen Zustände sind:

0 Ex-Oß 0 = 0 0 Ex-OR 1 = 1 1 Ex-OB 0 = 1 1 Ex-OB 1 = 0

Wie man sieht, ist in. diesem Fall das Ergebnis immer dann „0“, wenn beide Bits gleich sind, z.B. „0 Ex-OB 0“ und „1 Ex-OB I“. Die per „Ex-OB“ zu verändernden Bits werden durch eine “ 1 “ an der entsprechenden Stelle von Byte 2 umgeschaltet. Benutzen wir als Byte 2 den Wert 1 1 1 1 1 1 1 1 (FF Hex), so hat dies zur Folge, daß jedes einzelne Bit seinen Wert ändert. Dies nennt man ein „Complement“ (d.h. es ergibt die Komplementärzahl). Hier ein Beispiel:

00101110 (Byte 1)
EOR 11111111 (Byte 2)
11010001 (Ergebnis)

Man bemerke, daß das Ergebnis das exakte Gegenteil von Byte 1 darstellt. Und wiederholt man diesen „Ex-OB“-Vorgang, so kommt man wieder zurück zum Ausgangsbyte (Byte 1). Ähnlich verhält es sich, wollen. wir nur bestimmte Bits verändern, dann setzen wir nur an diesen Stellen eine „1“ im zweiten Byte. Beispiel:

00011101 (Byte])
EOR 10000000 (Byte 2)
10011101 (Ergebnis)

In diesem Beispiel wurde nur Bit 7 umgeschaltet, alle anderen blieben unverändert wie in Byte 1. Würde man das Ergebnis nochmals mit Byte 2 Ex
011en, würde Bit 7 wieder zurückgeschaltet auf „0“, so daß man wieder den Ausgangszustand erhielte. In Assembler sieht das so aus:

LDA #$ 1 D
EOR #$80
STA .
#$35E0
EOR #$80

Wir haben den Accumulator mit $1D geladen, Bit 7 umgeschaltet, das Ergebnis ($9D) in die Speicherstelle $35E0 geschrieben und schließlich Bit 7 zurückgeschaltet, so daß wir im A-Register wieder den ursprünglichen Wert -$1D haben.

More or Less/Mehr oder Weniger
In Teil 2 hoben wir an einigen Beispiele gezeigt, wie man unbezeichnete Binärzahlen (Binärzahlen ohne ausdrückliches Vorzeichen) addiert. Dabei haben wir folgendes erwähnt: Sollte das Ergebnis beim Addieren zweier 8-Bit großen Zahlen zusammen größer als 8 Stellen (8 Bits) sein, dann wird das neunte Bit in das Carry Flag plaziert. (Irgendwo muß ja festgehalten werden, daß mehr als bloß die sichtbaren 8 Bits rausgekommen sind. AK.) Der 6502 besitzt keine Instruktion („eingebaute Anweis Jng“), mit der man zwei Bytes direkt addieren kann UND dabei das Carry Flag außer acht los-sen kann. stattdessen hat der 6502 die Instruktion „ADd with Carry“ (auf deutsch etwa: Zähle beim, Addieren auch immer das Carry Flag dozul“ A.K.). Das Mnemonic-Wort dafür lautet „ADC“. Damit kann man zwei Bytes addieren und gleichtzeitig den Wert im Carry Flag zum Ergebnis dazuzählen. So wird nichts dazugezählt, wenn C=0; es wird Eins addiert, wenn C=1. Angenommen wir wollen 28 Hex und 14 Hex addieren. Dann wäre die 1. Instruktion, $14 in den Accumulotor zu laden, dann $28 mit Carry (zusammen mit dem Wert des Carry Flag) zu addieren. Natürlich hätten wir auch in umgekehrter Reihenfolge vorgehen können, also erst $28 laden und dann $14 addieren; das Ergebnis wäre dasselbe.

LOB #$14 ADE #$28

Wir erkennen, daß „ADE“ im Immechore Modus verwendet wird, und daß das Ergebnis zurück in den Accumulator gespeichert wird. Dies geschieht bei allen Accumulator-Operationen. Das Ergebnis aus diesem Addieren der beiden Zahlen kann eine von zwei Antworten sein. Der Grund dafür liegt darin, daß der Status (Zustand) des Carry Flag berücksichtigt werden muß, und wir wußten nicht, ob das Carry Flag gelöscht war, oder ob es (auf einen der beiden möglichen Zustände „0“ oder „1“) gesetzt war. Deshalb müssen wir, um sicherzugehen, daß wir das richtige Ergebnis haben, erst das Carry Flag löschen bzw. den Eintrog im Carry Flag, bevor wir die beiden Zahlen addieren. Die Instruktion dafür lautet: „CLear the Carry“ (cleor = aufräumen). Das mnemonische Wort (Menmonic) dafür lautet „CLC“. Die endgültige, richtige Version dieses kleinen Programms liest sich nun so:

CLC
LDA #$14 nix #$28

Ist das Ergebnis einer Addition kleiner als 256 (dezimal), werden nur acht Bits gebraucht (um es als Binärzahl zu schreiben), und das Carry Flag, das 9. Bit, wird wieder auf Null gesetzt. Bei einem Ergebnis größer als 255 wird das Carry Flag auf Eins gesetzt. Addieren wir mehr als acht Bits, dann muß dieser (vorige) Carry Flag Status miteinbezogen werden.

Nun wollen wir ein Programm schreiben, mit dem wir zwei 16-Bit-Zahlen zusammenzählen lassen, wobei dos Ergebnis als eine weitere 16-Bit-Zahl gespeichert wird. Achtung, das Ergebnis könnte natürlich auch 17-stellig werden (17 Bits, wobei das Carry Flag da
s 17. Bit wäre). In unserem Beispiel lassen wir diesen Fall jedoch unberücksichtigt, da unsere beiden Zahlen klein genug bleiben und sich daher kein 17. Bit (keine 17. Stelle) ergeben wird. In unserem Beispiel wird die erste 16 Bit Zahl in zwei 8-Bit-Speicherstellen geschrieben, $0600 und $0601, wobei das Low-Byte zuerst gespeichert wird. Die zweite Zahl kommt in die Speicherstellen $0602 und $0603. Die 16 Bits des Ergebnisses kommen in die Speicherstellen $0604 und $0605, das 17. Bit steht immer noch im Carry Flag. Das Programm löscht als erstes das Carry Flag, so daß dieses auf Null steht und addiert dann die beiden Low-Bytes der beiden 16-Bit-Zahlen. Der Accumulator-Inhalt wird dabei in den niedrigeren (Low) Teil des 16-Bit-Ergebnisses geschrieben. Das sieht so aus:

CLC
LDA #$0600
ADC #$0602
STR #$0604

Nun müssen wir diesen Vorgang für die beiden High-Bytes wiederholen und das Ergebnis in das High-Byte des Ergebnisses schreiben. Diesmal werden wir das Carry Flag nicht löschen, da wir wissen, daß – ganz unabhängig vom Ergebnis, egal ob es größer oder kleiner als 255 ist – der korrekte Inholt des Carry Flag in die Summe der beiden High-Bytes miteinbezogen wird. Der Rest des Programms sieht dann so aus:
LDA #$0601
ADE #$0603
STR #$0605

An dieser Stelle würde das Carry Flag den Status des 17. Bits anzeigen, normalerweise Null, falls die beiden Zahlen klein genug sind.
Nehmen wir an, daß die erste Zahl $14F9 heißt und die zweite $311A, dann sind die Inhalte der ersten vier Speicherstellen jetzt:

$0600 = $F9 $0601 = $14 $0602 = $1 A $0603 = $31

Indem wir die beiden Low-Bytes addieren, hoben wir $F9 + $1A = $113. Dabei werden die $13 in den Accumulotor geschrieben, die „1“ davor dagegen ins Carry Flag. Die beiden High-Bytes addiert ergeben $14 + $31 = $45. Da nun das Carry Flag gesetzt ist („1“), wird zum Ergebnis der beiden High-Bytes „1“ addiert, also $46. Das Carry Flag enthält nun keine Carry-Instruktion mehr. Die Speicherstellen $0604 und $605 enthalten jetzt die Werte $13 und $46. Das Endergebnis lautet also $4613.
Diesselbe Technik kann sogar Für noch größere Zahlen benutzt werden, Falls nötig, z.B. für 24-Bitoder 32-Bit-Zahlen usw. Wird bei der Addition zweier Zahlen für das höchste Bit eine Carry-Instruktion erzeugt, z.B. wenn das Ergebnis die Anzahl der zur Verfügung stehenden Stellen (Bits) überschreitet, dann könnte unser Programm nachsehen, ob dies eingetreten ist, und dann einen Overflow-Error anzeigen (Zur Erinnerung: OverFlow nennt man auf computerisch, was in der Grundschule als „Eins-gemerkt“ gelernt wurde! A.K.). Auf die dafür benötigte Instruktion werden wir später zu sprechen kommen.

Ebensowenig wie Für die Addition existiert für die Subtraktion zweier Zahlen eine Instruktion, womit man sie direkt voneinander subtrahieren könnte. Aber es gibt eine Instruktion „Sußtract with Earry“, auf deutsch: Mit carry abziehen, oder: Unter Berücksichtigung des Carry Flag abziehen. Das „Mnemonic“ dafür heißt „SBC“. Damit kann man zwei Bytes voneinander abziehen, wobei zusätzlich dos Complement des Carry Flag (sein Gegenteil.) mit abgezogen wird. (Zur Erklärung: Das Carry Flag Register hat zwei mögliche Zustände, „0“ und „1“; „0“ ist dann das Complement, oder der Komplementär-Zustand von „1“. A.K.) UJollen wir $05 von $2A abziehen, so laden wir den Accumulator mit $2A und subtrahieren dann mit Carry die $05. Aber anders als bei der Addition, wo wir zuerst das Carry Flag löschen, müssen wir jetzt .Carry auf Eins setzen. Ist das Carry Flag gesetzt, wird dessen Complement von unserem Ergebnis abgezogen, bzw. es wird Null abgezogen, (je nachdem, welchen Zustand das Carry Flag gerade hat, „0“ oder „1“) und wir erhalten das gewünschte Ergebnis.

Das Folgende Programm zieht $05 von $2A ob. Zuerst wird mit dem „SEC“-Befehl das Carry Flag gesetzt, um ein korrektes Ergebnis zu garantieren.

SEC
LDA #$2A SBC #$05
Jetzt werdet Ihr Euch Fragen, warum man nicht das Carry Flag löscht und den 6502 selbst die Subtraktion direkt durchführen läßt, anstatt Carry Flag auf Eins zu setzen und dann (doch bloß) das Complement von Eins, nämlich Null abzuziehen. Die Antwort liegt darin, daß der 6502 nur Additionen ausführen kann , und daher mit der „Two’s-ComplementMethode“ arbeiten muß, er muß also die Complement-Zahl der abzuziehenden Zohl benutzen also die negative Form dieser Zahl. Und diese wird dann zum Wert im Accumulator dazugezählt) Folgendes Beispiel .zeigt eine derartige „Subtraktion“ zweier Zahlen:

00101010 ($2A)
(+) 11111011 (-$05) das „Two’s complement“ von $05)
(1) 00100101 ($25, wobei Carry Eins – in Klam mern – ignoriert wird.)

(Hier mal ’n kurzer Einschub: Im englischen Originaltext ist mal vom „Carry Flag“, dann nur vom „Carry“ die Rede. Da ich selbst kein Assemblerprogrammierer bin – nicht einmal entferntl – kann ich immer nur versuchen, dies richtig wiederzugeben: Das Carry Flag ist offensichtlich ein „Flag“ deren es ja wohl mehrere gibt. In unserem Fall handelt es sich um ein zusätzlich zur Verfügung stehendes Bit – über die 8 oder 16 benötigten hinaus – in das, je noch Bedarf, eine „0“ oder eine „1“ geschrieben werden kann. Der Grund Für den Zustand “0″ oder „1“ ist im Text -hoffentlich klar genug – angegeben. Mit „Carry“ ist die Anweisung gemeint, den Inhalt des Carry Flag auszulesen und mitzuberücksichtigen bzw. der Zustand des Carry Flag, ob er „1“ oder „0“ enthält, also das Carry Flag gelöscht ist. A.K.)
Wir sehen, daß bei einer Subtraktion „ohne Ausleihen“ (Erinnern wir uns? Wenn wir 45 minus 37 zu rechnen hatten, dann mußten wir uns beim Abziehen von “5 minus 7″ eins „borgen, ausleihen, pumpen …“ *** Je noch Bundesland und entsprechender Lehrplan-Generation bitte das gewohnte Wort einsetzen! Die Computerfreunde aus den Neuen Bundesländern setzen hier den entsprechenden sozialistischen Begriff ein, falls sie zur älteren Generation – wie ich – zählen: also etwa „kapitalisiert“, „verwestlicht“, „organisiert“ oder was auch immer. Sollte sich einE Leserin an dieser Stelle rassistisch oder politisch verfolgt vorkommen, bin ich gern bereit, dies durch Reporotionsleistungen z.B. ein Bit oder eine Halbe einer anderen Biersorte zu kompensieren. A.K. *** also „15 minus 7“ rechnen. Dieses geborgte war dann bei der nächsten Stelle als „Eins gemerkt“ zu berücksichtigen. Dasselbe gilt auch für unsere Subtraktion hier. A.K.), wenn wir also eine kleinere Zahl von einer größeren abziehen, das Carry Flag konsequenterweise gesetzt bleibt und bei allen Folge-Subtraktionen als „Ziehe Null ob“ interpretiert wird. Wir müssen uns daher merken: Ist bei Subtraktionen das Carry Flag auf „1“ gesetzt, bedeutet das: „Ziehe Null ab“, ist es auf Null gelöscht, bedeutet das: „Ziehe Eins ab“.

Ziehen wir mal zwei 16-Bit-Zahlen voneinander ab und schauen, wie sich das Carry Flag verhält. Wir wollen $32CA von $6812 subtrahieren. Die Ausgangszahl (der Minuend, Falls uns dieser schöne Schulbegriff noch in den Ohren klingen sollte‘ RK.) wird in Speicherstelle $0400 und $0401 geschrieben, die abzuziehende Zahl (der Subtrahend) in Speicherstelle $0402 und $0403, das Ergebnis. kommt in $
0404 und $0405. Der erste Teil unseres Programms setzt *das Carry Flag, zieht dann die beiden Low-Bytes voneinander ob und schreibt die sich ergebende Zahl in den Low-Teil des Ergebnisses (der Für das Ergebnis zur Verfügung stehenden acht Bit; A.K.):

SEC
LDA $0400 SBC $0402 STA $0404

Der Accumulotor wurde also mit $12 aus Speicherstelle $0400 geladen, dann wurden $CA aus Speicherstelle $0402 vom Accumulator abgezogen und das Ergebnis – $48 – in Speicherstelle $0404 geschrieben. Da die Zahl, die wir ‚abzogen, größer war als der Inhalt des Accumulators, hoben wir uns Eins vom High-Byte geborgt/geliehen, so daß aus den $12 nun $112 geworden sind (Das Eine geborgte hat den Wert von 256 decimal oder $100 Hex). Folglich ‚ergibt sich, wenn wir $CA von $112 abziehen $48. Und um anzuzeigen, daß wir Eins geborgt hoben, wird das Carry Flag gelöscht. Der zweite Teil des Programms zieht nun die beiden High-Bytes in den Speicherstellen $0401 und $0403 voneinander ab und schreibt das Ergebnis in $0405. Und auch hier müssen wir uns nicht um den Zustand des Carry Flag kümmern, da dies der 6502 bei der nächsten Subtraktion korrekt für uns erledigt:

LDA $0401 SBC $0403 STR $0405

Der Accumulator wird mit $66 aus Speicherstelle $0401 geladen und $32 aus Speicherstelle $0403 davon abgezogen, so daß als Ergebnis $39 bleibt; es wird aber noch Eins mehr abgezogen (Wir erinnern uns: Ach ja, Eins gemerkt/geborgt!), weil ja das Carry Flag ouf Null steht (Und Eins ist das Complement/der Komplementärwert zu Null). Das Ergebnis, das nun in Speicherstelle $0405 geschrieben wird, lautet also $38. Das Endergebnis aus der Subtraktion der beiden 16-Bit-Zahlen ($6612 minus $32CA) heißt deshalb $3848.

Decimal Mode/Der Dezimal Modus
Wie bereits erwähnt kann der 6502 auch dezimal rechnen. Dieser Modus ist aktiviert, wenn das D-Flag im Prozessor-Status-Byte auf Eins gesetzt ist. Erreiche wird dies, indem man die Instruktion benutzt, für die das mnemonische Wort „SED“ steht („SEt the Decimal mode“). Um in den normalen Binären Arbeitsmodus zurückzugelongen, bedient man sich der Anweisung „CLD“ („CLear the Decimal mode“). Die „CLD“-Anweisung sollte man immer dann benutzen, wenn man sich nicht mehr sicher ist, in welchem Modus mon sich gerade befindet.

Dadurch wird sichergestellt, daß alle, Additionen und Subtraktionen im Binär-Modus ausgeführt wer-. den. Ist der Dezimal-Modus einmal ausgeschaltet, braucht man die „CLD“-Anweisung nicht mehr, es sei denn, man hat in seinem Programm mit dezimaler Arithmetik gearbeitet (dezimal gerechnet). Hier ein Beispiel Für Addieren im Dezimal-Modus:

SED
CLC
LDA #$48 ADE #$25 STA $0580 CLD

Das Programm beginnt damit, sicherzustellen, daß der Dezimal-Modus eingeschaltet ist, und daß das Carry Flag Für die Addition gelöscht ist. Der Accumulator wird mit $48 geladen, und dazu wird $25 addiert. Das Ergebnis wird in Speicherstelle $0580 geschrieben. Abschließend schalten wir den Dezimal-Modus wieder aus; so daß wir Für die weiteren Berechnungen wieder im Binär-Modus sind. Da wir im Dezimal-Modus waren, werden die beiden Zahlen $48 und $25 wie eine normale Summe einfach addiert: 5 plus 8 ergeben also 13; die 3 wird in die Low-Hälfte des Accumulators geschrieben, das Eine wird automatisch weitergereicht („gemerkt“) in den High-Teil der Summe, so daß wir nun 4 plus 2 plus „1 gemerkt“ hoben, was 7 ergibt. Das Ergebnis lautet also $73. Dieses interne Weiterreichen (internal carry) des „Eins gemerkt“ vom Low-Teil in den High-Teil hat keine Auswirkung auf das Carry Flag. Aber jedes externe Weiterreichen (externol carry), das sich aus einem dezimalen Rechenvorgang ergibt, wird ganz genauso behandelt, als wenn es sich um einen binären Rechenvorgang handeln würde und wird beim Folgenden Rechenvorgang berücksichtigt. Die dezimale Subtraktion Folgt denselben Regeln, wie sie für die binäre Subtraktion gelten, und das interne Weiterreichen von „Eins gemerkt“ erfolgt ebenfalls automatisch.

Up and Down/Auf und ab
Wollen wir bei jedem Rechenvorgang immer nur Eins dazuzählen oder abziehen, z.B. um den Computer als reine Zählmaschine zu nutzen, geht mon ein wenig anders vor. (Der Accumulator wird dann nicht jedesmal umständlich mit der „alten“ Zahl geladen, das Carry Flag jedesmal neu gesetzt bzw. gelöscht, die Eins abgezogen oder addiert und das Ergebnis obgespeichert) Stattdessen bedienen wir uns der Increment- bzw. Decrement-Anweisung. (Increment = ansteigen; man zählt „aufwärts“: 0, 1, 2, 3, 4, usw.; Decrement = absteigen; man zählt „rückwärts“ …5, 4, 3, 2, 1, 0) Diese Anweisungen Funktionieren mit dem „X“- und dem „2“-Register und allen Speicher stellen. Die Increment-Anweisung erhöht den Inhalt eines Registers oder einer Speicherstelle um Eins (d.h. sie zählt Eins dazu), die Decrement- Anweisung zieht Eins ab. Arbeitet man mit der IncrementAnweisung und das Ergebnis überschreitet $FF, dann „rutscht“ das Ergebnis wieder auf Null und der Zählvorgong beginnt von neuem. Im umgekehrten Fall „rutscht“ das Ergebnis bei der DecrementAnweisung von Null auf $FF (Wie der Kilometerzähler eines Autos bei 100 000km. A.K.).

Die drei Increment-Anweisungen („Erhöhe um Eins-Anweisungen“) heißen „INX“, „INY“ und „INC“: „Increment das X-Register“, „Increment das 2- Register“, bzw. „Increment eine Speicherstelle. Die drei DEcrement-Anweisungen („Verringere um Eins-Anweisungen“) lauten entsprechend „DEX“, „DEY“ und „DEC“ und bedeuten dann auch entsprechend (Wen wunderts?) „Decrement das X-Register“, „Decrement das 2-Register“, bzw. „Decrement eine Speicherstelle. Der Status des Carry Flag spielt beim Einbauen dieser Anweisungen (in ein Programm) keine Rolle.

Move it/Verschieb’s
Es gibt sechs Anweisungen, die uns erlauben, Daten auf die schnelle zwischen dem „A“-, dem „X“-, dem „2“- Register und dem Stock-Pointer (SP) zu übertragen. Wie wir wissen kann nur der Accumulotor für Operationen wie Addition, Subtraktion und logische Operationen benutzt werden. Es ist daher recht nützlich, daß man die Inhalte entweder des „X“- oder des „9“-Registers direkt in den Accumulator übertragen kann, um dort die nötigen Operationen damit ausführen zu lassen, anstatt sie erst in eine Speicherstelle schreiben zu müssen und dann von dort aus in das „A“-Register (den Accumulotor) zu laden. Die beiden Anweisungen, mit denen man dies durchführen kann, sind „TXA“ und „TYP“: (Transfer heißt auf deutsch übetrogen.) „Transfer das „X“-Register ins „A“-Register“ bzw. „Transfer das „9“-Register ins „A“-Register“. Weitere zwei Anweisungen transportieren die Daten zurück ins „X“- bzw „2“-Register: „TAX“ und „TAY“: „Transfer das „8“-Register ins „X“-Register“ bzw. „Transfer das „A“-Register ins „Y“-Register“.

Und schließlich gibt es da noch zwei spezielle Anweisungen, die Daten zum und vom „X“- und zum und vom „SP“-Register (Stock-Pointer) transportieren
. Die „TSX“-Anweisung transportiert die Daten des Stock-Pointers ins „X“-Register, so daß sie dort untersucht werden können. Und die „TXS“- Anweisung transportiert Daten vom „X“-Register in den Stock-Pointer, um dort einen bestimmten Wert zu setzen. Allerdings werden diese beiden Anweisungen nicht sehr oft in einem Programm benutzt, denn der Computer bedient sich dieser „TXS“- Anweisung, um den Stock-Pointer beim Einschalten auf $FF zu setzen, und dieser Wert sollte daher nicht geändert werden müssen.

Nothing To Do/Nichts zu tun
Der ungewöhnlichste Befehl der 6502-Instruktionen ist die „NOP“-Anweisung, die tatsächlich bedeutet: „No OPeration“, auf deutsch „Keine Arbeit“. Und wie reagiert der 6502 darauf? – Er legt die Füße hoch, wenn er dieses Kommando bekommt – zumindest für eine gewisse Zeit. (Ihr solltet mal nach einem solchen Befehl ganz schnell Euren XL öffnen und Euch Eure CPU anschauen) Alle Beinchen nach obenl – Hob‘ ich selbst gesehen! Kann allerdings auch sein, daß ich damals in der – verständlichen -Eile, das zu sehen, meinen XL auf den Kopf gestellt habe; denn die Platine ‚war auch auf dem Kopf. A.K.) Um wieder ernst zu werden: Dieser Befehl kann als eine Art „Debugging-Hilfe benutzt werden, um eine eine andere Anweisung, die im Speicher verblieben ist, zu ersetzen. Wenn das Programm auf (eine oder mehrere) „NOP“-Anweisung(en) trifft, wird es weiterspringen, ohne abzustürzen und/oder dabei das ganze Programm selbst zu zerstören.

Im nächsten Teil werden wir die Liste der 6502- Befehle vervollständigen und – hoffentlich – mit ein paar Programmiertechniken beginnen. Zum Schluß, nachdem Ihr so treulich bis hierher gelesen habt, schlagen wir vor, Ihr probiert jetzt mal selbst eine „NOP“-Operation und legt dann Eure Füße hoch!

Atari Programmers Group

Hallo Atari Bit Byter,
seit mehr als drei Jahren gibt es nun die ACTION! Working Group im ABBUC e.V. Die ACTION! Working Group unterstützte die ACTION! Programmierer im Club.
Bisher sind drei ACTION!-Magazin Disketten erschienen, voll mit ACTION!
Sourcecode und Programmiertips. Obwohl sich die Lage für ACTION! in den letzten Jahren gebessert hat (ACTION! ist nun wieder in Deutschland erhältlich, leider ein wenig zu teuer), ist das Interesse doch gering geblieben. Die Auswahl der professionell einsetzbaren Programmiersprachen ist für den 8-Bit Atari begrenzt, aber ACTION! ist nur eine (wenn auch sehr gute) Programmiersprache. Daher wird die ACTION! User Group in eine Atari Programmers Group umwandelt.

Nun, was soll die APG leisten?
über Neuigkeiten bei Programmiersprachen für den Atari berichten und sie testen.

Hilfen für Programmierer geben, die bestehenden Programmiersprachen und den Atari auch wirklich auszunutzen allgemeine Programmiertechnik und Grundlagen vermitteln über Trends in der Softwareentwicklung bei anderen Computern berichten, um guten Ideen vielleicht auf dem Ataxi umsetzen zu können. Sicherlich wird in diesem Aufgabenbereich ACTION! nicht zu kurz kommen, allerdings nur als eine Sprache von vielen. Ich hoffe, das wir hiermit eine größere Anzahl von ABBUC Mitgliedern ansprechen können.

Es würde mich freuen, wenn Ihr mir eure Anregungen und Ideen zur Atari Programmers Group mitteilt.

DER HIGH – SPEED ATARI

Hallo Bit Byter!
Wie einige vielleicht schon wissen, ist es nun endlich gelungen eine 65C816 CPU-Erweiterung für den ATARI zu entwickeln, mit der es jetzt möglich ist, den Prozessor mit einer höheren Taktfrequenz zu betreiben. Dabei ist eine volle Kompatibilität zum normalen ATARI gegeben. D.h. jedes Programm läuft auch mit der Erweiterung (allerdings mit der normalen Geschwindigkeit). Programme, die illegale OpCodes verwenden, laufen natürlich nicht. Aus diesem Grund möchte ich auch an dieser Stelle noch einmal an alle appellieren, niemals illegale OpCodesoder ähnliches zu verwenden! Das sollte immer eingehalten werden, egal auf welchem System man arbeitet!!!
Anbei findet Ihr einen Schaltplan und die zugehörigen GAL-Listings. Dieser Schaltplan stellt die Erweiterung dar, so wie ich sie momentan bei mir im Einsatz habe. Diese neue CPU-Platine wird auch momentan einfach gegen die alte CPU ausgetauscht. Das ganze ist eigentlich nur eine Light-Version bzw. ein Test des Grundgerüstes eines zukünftigen Mega-Projektes meinerseits.

Aber dazu später mehr. Ich möchte im folgendem nicht jedes Detail erklären, da dies sicher den Rahmendes Magazins sprengen und sicher auch viele nicht-Hardwarefreaks nur noch verwirren würde. Eine ausführlichere Dokumentation könnt Ihr aber von mir gegen Einsendung eines frankierten Rückumschlages bekommen.

Also fangen wir an: Die CPU läuft nun auf einem seperaten Bus, der auf Wunsch(bzw. automatisch) auf den ATARI-Bus durchgeschalten werden kann. Das ist erstmal eine wichtige Voraussetzung, ohne die sonst nichts laufen würde. Hier erfolgt die Ankoppelung, wenn auf den Bereich $00XXXX zugegriffen wird (/SLOWist aktiv). Außerdem wird beim Zugriff auf diesen Bereich die CPU mit 1.79MHz gefahren. In der Schaltung findet Ihr noch 128kB stat. RAM, das hier von $020000-$03FFFF im Speicher liegt. Wird darauf zugegriffen, wird der ATARI-Bus abgekoppelt und der Takt auf den schnelleren umgeschalten (hier auf 5MHz). Arbeitet die CPU auf dem neuen Bus, so hat das noch zusätzlich zur erhöhten Taktfrequenz den Vorteil, daß sie beim Graphikaufbau oder Refresh des ANTIC nicht angehalten wird. Da arbeiten praktisch beide Sachen parallel. Bei der Taktumschaltung arbeitet dann auch sozusagen das Herz der Erweiterung: Der asynchrone Taktumschalter. Das Teil arbeitet wie ein Multiplexer, nur etwas komplizierter. Ich weiß nicht, ob sich schon mal jemand über so etwas•Gedankengemacht hat, aber das ist auf jeden Fall auf meinem Mist gewachsen. Ihr findet auch noch einen sog. Automatengraphen, der die Arbeit des Umschalters zeigt.

Der Graph ist zwar relativ selbsterklärend, aber bei Fragen, wie gesagt an mich wenden. Wenn man sich mal zwei völlig unterschiedliche Takte
aufzeichnet und alles einmal durchspielt (den resultierenden CPU-Takt ermitteln), dann versteht man den Automaten sicher besser. Die gesamte Logik des Umschalters befindet sich unter anderen in GAU. Im Schaltplan findet Ihr einen OSZI, der mit 10MHz bezeichnet ist. Der Prozessor läuft aber nur mit 5MHz. Warum?

Die 10MHz werden erst mal mit dem FlipFlop IC7A geteilt. Dadurch, daß man jetzt noch genau den doppelten Systemtakt zur Verfügung hat, kann man gewisse Phasen beim Buszugriff des Prozessors genauer abpassen (siehe auch GAL-Listings). Im ATARI wird ja sogar erst mal der 8-facheTakt erzeugt und dann heruntergeteilt.

Solltet Ihr die Schaltung nachbauen wollen, dann hier noch ein paar Tips. Bei mir läuft die Erweiterung zwar einwandfrei. Aber Ihr wißt ja: ATARI ist nicht gleich ATARI. Bei Problemen sollte ein wenig mit den Geschwindigkeiten der Bustreiber für den ATARI-Bus gespielt werden. Der Bank-Latcher (IC3) und der Datenbustreiber (IC6) können evtl. auch etwas langsamer sein. Außerdem könnten evtl. die Pull-up Netzwerke für den ATARI-Adressbus entfallen. Ich weiß sowieso nicht warum die benötigt werden, aber ohne sie verliert meine RAMDisk im ATARI unter gewissen Umständen Daten. Dann sollte auch jeder Schaltkreis einen Abblockkondensator bekommen (Die habe ich im Schaltplan weggelassen). Das ‚/AV-Signal (AddressValid) ist auch noch nicht so ganz ausgereift und sollte noch nicht verwendet werden. Später soll dann das asynchrone -nur aus der Adresse gebildeteChipSelect z.Bsp. eines RAMs damit verknüpft werden, so daß man eine entsprechende Übernahmeflanke (die lt. RAM-Datenblättern eigentlich auch gebraucht wird) beim Schreiben und bei maximaler Zugriffszeitausnutzung erhält. Im Moment bilde ich bei mir das ChipSelect auch nur asynchron und es funktioniert (eigentlich fälschlicherweise). Nehme ich /AV hinzu (oder auch nur die Phil vom Prozessor), wird beim Lesen komischerweise jedesmal die Bankadr.(aus der die CPU etwas holen will) gelesen. Aber ich arbeite daran.

Einen Nachbau kann ich aber nur erfahrenen Leuten empfehlen, da es sich hier umeine etwas kompliziertere Sache handelt. Diese Veröffentlichung soll eher dazudienen, daß Ihr Ideen, Vorschläge und Kritiken zu einer Weiterentwicklung mit beisteuert. Das Endprodukt soll dann in einer gewissen Stückzahl je nach Bedarf hergestellt werden und mehr oder weniger zum Selbstkostenpreis verkauft werden. Dabei hängt der Preis zu einem Großteil von der Platine ab (je mehr, umsobilliger). Hier ein paar Punkte, die ich mir so für die zukünftige Erweiterunggedacht habe:
– die CPU soll mit 10MHz laufen- das neue Board soll 256KB Grund-RAM besitzen, auf dem die CPU mit den vollenlOMHz zugreifen kann und 64KB oder 128KB ROM mit Betriebssystem und anderer Software;
RAM-Erweiterungen werden dann im später entwickelt, und können je nach Bedarf (und Geldbeutel… 😉 ein
gesetzt werden
– mehrere WaifStep-Modi für langsamere Bauteile
– die Erweiterung soll hinten am Busadapter ansteckbar sein
– alte Erweiterungen können unter gewissen Bedingungen direkt über den neuen Bus (aber nur mit 1.79MHz) betrieben werden; die, die nicht an den neuen Bus angeschlossen werden können, müssen nach wie vor direkt über den ATARI betrieben werden. Wie gesagt, Mitarbeit ist erwünscht. Auch die Software-Experten unter Euch sind gefragt. Erstens in Bezug auf die Wünsche der Speicheraufteilung und zweitens in der Entwicklung von Software. Zum Beispiel wird ein neues (bzw. optimiertes) Betriebssystem gesucht. Ich habe mich auch schon mit Roland Bühler in Verbindung gesetzt. Er hat gesagt, daß er dann auch so etwas wie eine Universal 1/0-Platine für die Erwiterungeniwickeln könnte. Also wer Interesse an der Erweiterung hat oder ein bischen mitwirken will, der soll sich bitte bei mir melden. Sollten sich dann genügend Leute finden, wird die ganze Sache auch etwas ,preiswerter. Wenn alles gut geht, dann können so April oder Mai die ersten Erweiterungen ‚vorn Band gehen‘. Also rafft Euch mal auf!

Wenn man nämlich dann noch die neue Programmiersprache, die die ARGS evtl.entwickeln will auf das neue System portieren könnte, dann bedeutet das einen Aufbruch in eine neue Dimension. Deshalb auch noch ein Aufruf an die ARGS: Laßt Euch nicht von Euerem Projekt abhalten!!! Ach so, die schnellen CPUs werde ich wahrscheinlich in den USA kaufen müssen. Wer schon mal etwas direkt aus den USA gekauft hat, soll sich bitte auch mal bei mir melden. Ich habe so etwas nämlich noch nicht gemacht. Ich möchte an dieser Stelle noch Ingo Maindorfer grüßen. Durch Ihn bin ich erstauf die 65C816 CPU gestoßen und er war sozusagen der Auslöser des ganzen. Also dann bis irgendwann!

Tschüß, Mario

Mario Trams
An der Eiche 1
09577 Lichtenwalde
Tel.:037206/71232 Emai mariotrams@informatiktu-chemnitz.de

Dietmar’s Spielecke

Hallo Leute
Ich habe mich dazu entschlossen, die Spieleecke in diesem Magzin wieder aufleben zu lassen. Diesmal habe ich zwei Spieletips und einige Cheats zusammengestellt. Ich habe die Cheats und Tips persönlich ausprobiert. Bei den Spielen habe ich die Sektoren mit angegeben, damit man sieht, ob es die richtigen Versionen sind. Manche Spiele gibt es auch in einer gekürzten Version.
So nun geht es los:

ZEBU-LAND von KE-Soft
Hier die ersten 10 Codeworte:
1:ZEBU
2:BLAP
3:ZOFF
4:BONK
5:BAFF
6:BING
7:HOPP
8:FLAN
9:PONG
10:BANG
Die nächsten 10 Worte erscheinen in der nächsten Ausgabe

JET BOOT JACK
von The English Software 132 Sektoren
Sektor 73 Byte 17 von 05 in FF ändern = 23 Leben
Sektor 73 Byte 17 von 05 in 24 ändern = 32 Leben
Sektor 73 Byte 17 von 05 in 75 ändern = 120 Leben
Sektor 73 Byte 17 von 05 in AE ändern = 175 Leben

CRYSTAL RAIDER
von Mastertronic 92 Sektoren
Sektor 6 Byte 65 von 04 in 09 ändern = 10 Leben
Sektor 6 Byte 65 von 04 in 24 ändern = 36 Leben
Sektor 6 Byte 65 von 04 in 36 ändern = 54 Leben
Sektor 6 Byte 65 von 04 in 58 ändern = 88 Leben
Sektor 6 Byte 65 von 04 in 63 ändern = 99 Leben
Hierzu noch ein paar Spieletips:
Nach dem Einladen des Titelbildes das Spiel mit gedrücktem Feuerknopf und gedrückter START-Taste starten. Nun kann man eine Demo-Version spielen. Allerdings bekommt man in dieser Demo keine Punkte.

STACKUP
von Zeppelin Garnes LTD 190 Sektoren
Sek
tor 65 Byte 62 von 05 in 63 ändern = 99 Leben

So, das war es für heute. Ich hoffe, Ihr habt Spaß mit den Tips. Vielleicht schreibt mir der eine oder andere ja mal ein paar Cheats, damit ich sie hier für alle veröffentlichen kann.

Euer Dietmar
Dietmar Hamrot
Dorfstr. 28
03149 Klein Jamno

GAL Listing 1

GALI *IDENTIFICATION clk man; *TYPE GAL16V8; *PINS PHIlS	= 2,	%alte,langsame Phil% PHIlF	= 5,	%neue Phil% SLOW	= 6,	%/SLOW-Signal vom anderen GAL% Reset	= 7,	%/Reset zum rücksetzen des Automaten% Halt	= 8,	%vorbehandelte /Halt-Leitung vom ATARI% RDY	=N,3,	%vorbehandeltes RDY% RW_in	= 9,	%R/W von der CPU% Q0 .r	= 16, %Register für die% Q1.r	= 17, %Speicherung der Zustände% Q2./	= 15, %des Automaten% PHIl.t	= 18, %Ausgangstakt für CPU% Clock.t	= 19, %Clock-Ausgang; mit Pin 1 verbinden% Bank_L.t	= 13, %Signal zum latchen der Bankadresse% RW out.t	= 14, %R/W-Ausgang für den ATARI,-Bus% A_Bus_EN.t = 12; %Signal zum durchschalten auf den ATARI-Bus% *BOOLEAN-EQUATIONS %Automat:% %normaler Cray-Code-Counter mit Resetmöglichkeit% 95(Zustandsüberführungsfunktionen)% /Q2 = /Q1 & Q0 & Reset; /Q1 = /Q1 & Q0 & Reset + Q2 & /Q0 & Reset; /Q0 = Q2 & Q1 & Reset + /Q2 & /Q1 & Q0 & Reset; % *.e ist ein Enable für den entsprechenden Ausgang (GAL-intern)%  % Das wird in einem bestimmten GAL-Modus gebraucht, soll uns aber%  % hier nicht weiter interessieren.% %Takt für Automaten (den erzeugt sich der Automat praktisch selbst)%  %Vergleiche mit den Übergängen des Automatengraphen!!!!%  %Clock = low->high => Automat geht in nächsten Zustand über%  Clock.e = Vcc;	%wird immer getrieben% Clock = Q2 & Q1 & Q0 & SLOW & /PHI1 + Q2 & Q1 & /Q0 & PHIlF +	Q2 & /Q1 & /Q0 & /PHIlF + Q2 & /Q1 & Q0 & /SLOW & /PHI1 +	/Q2 & /Q1 & Q0 & PHIlS + /Q2 & /Q1 & /Q0 & /PHIlS +	/Reset; %Outputs% %Ausgangstakt für CPU% PHIl.e- Vcc; PHIL = Q2 & Q1 & Q0 & PHIlS + Q2 & /Q1 & Q0 & PHI1F; %Steueung der Bank-Extrahierung% Bank_L.e	Vcc; /Bank_L	/PHI1 + /RDY; %Steuerung von R/W auf den ATARI-BUS% RW out.e	Vcc; /RW_out	= Q2 & Q1 & Q0 & Halt & /RW in + /Q2 & /Qi & /Q0 & Halt & /RW in; %Steuerung der Bus-Koppler; ABusEN = High -> Busse getrennt% A Bus EN.e = Vcc; /ARusEN	= Q2 & Q1 & Q0 & Halt + /Q2 & /Q1 & /QO & Halt; *END

GAL Listing 2

Bankdecoder and AV generator (GAL2) *IDENTIFICATION bankman; *TYPE GAL16V8; *PINS %Inputs% %Bankadress-Leitungen% BA7	= 1, BA6	= 2, BA5	= 3, BA4	= 4, BA3	= 5, BA2	= 6, BA1	= 7, BAO	= 8, PHI2F = 9,	%schnelle Phi2% DCLK	= 11,	%doppelter neuer Takt (vom OSZI)% PHI2	= 17,	%PHI2 direkt vom Prozessor% ABusEN = 13, %ATARI-Adressbus-Enable vom anderen GAL% %Outputs% AV	= 12,	%Address Valid Signal% Data EN = 16, %Enable für Durchschaltung des Datenbusses zum ATARI% OE = 15,	%Output Enable für sämtliche Busschaltkreise (RAM,% %ROM etc.)% . RAM	= 18,	%Chip Select für den RAM% SLOW	= 19;	%/SLOW-Signal; aktiv, wenn auf Bank $00% %zugegriffen wird% *BOOLEAN-EQUATIONS %AV ist ab der 2.Hälfte von 'Phi2F low bis Phi2F= high->low auf low% /AV	/DCLK & /PHI2F + PHI2F; %SLOW ist low, wenn auf die Bank $00, also auf den ATARI zuge-% %griffen wird% /SLOW	 /BAO & /BA1 & /BA2 & /BA3 & /BA4 & /BA5 & /BA6 & /BA7; %Der Datenbustreiber zum ATARI wird nur durchgeschalten, wenn auch%  %der Adressbus durchgeschalten wird und(wichtig!) die Phi2 high ist%  /Data_EN	 /A_BusEN & PHI2; %Die 128kB RAM liegen im Bereich von $020000-$03FFFF !!!!% /RAM	= BA1 & /BA2 & /BA3 & /BA4 & /BA5 & /BA6 & /BA7; % & /AV%  %wie gesagt sollte '& AV' weggelassen werden, kann aber auch%  %probeweise mal mit reingenommen werden (es kann auch mal mit%  % '& PHI2' getestet werden)% %Output Enable ist die 2.Hälfte Phi2F High und die erste Hälfte% %Phi2F low aktiv% /0E	PHI2F & /DCLK + /PHI2F & DCLK; %evtl. kann auch noch die Phi2 der CPU mit 'ver0Rd' werden (+ PHI2)% *END

Auf Dein Kommando, Bewe DOS!

Mit dem Sondermogozin 416 gab es als Jahresgabe des hervorragende BEWE-DOS. BEWE-DOS ist nicht nur Sparta-Dos kompatibel, es verträgt sich auch mit der ouF dem Atari wohl am häufigsten verwendeten Programmiersprache: Turbo-Basic.
Ein weiterer Vorteil von BEWE-DOS ist die Möglichkeit, externe Befehle zu erstellen. Diese externen Befehle können die Kommandozeilenparameter des BEWE-DOS Befehlsinterpreter lesen. Doch externe, Kommandos zu erstellen war bisher eine Domäne Für Maschinensprache-Programmierer. Dabei ist es gar nicht so schwer, auch in BASIC oder Turbo BASIC die Kommandozeile auszulesen.

„COMTAB“, wo bist du?
Zu allererst muß man wissen, wo im Speicher des ATARI die BEUJE-DOS Kommandozeile abgelegt wird. Das BEWE-DOS legt im Speicher eine Tabelle mit vielen wichtigen Daten an, an deren Ende sich der Buffer der Eingabezeile wiederfindet. Diese Tabelle wird „COMTAB“-Tabelle genannt. Eine Beschreibung der „COMTAB“-Tabelle befindet sich im BEWE-DOS Handbuch.

Da sich diese Tobelle nicht immer im gleichen Speicherbereich befindet, zeigt der Vektor „DOSVEC“ (Hex: $0A / Dez: 10) auf diese Tabelle. Im TurboBasic ermittelt man die Adresse der Tabelle mit dem Befehl DPEEK($0A). Den Kommandozeilenbuffer findet man an der Stelle 63 in der COMTAB. Er hat eine Länge von 64 (Hex: $40) Zeichen (Byte).
Im BASIC definieren wir zuerst eine Variable, die den Kommandozeilenbuffer aufnahmen soll, nennen wir sie CMDLN$. Wir dimensionieren diese Variable auf 64 Stellen:
DIM CMDLN$ ( $ 4 0).

Wir werden den Speicherbereich des Kommandozeilenbuffers in diese Variable Kopieren. Damit BASIC „weis‘, wie‘ lang die Variable belegt ist, müssen wir sie initialisieren (= mit einem Wert vor-belegen). Dies geschied mit der Anweisung

CMDLN$ ( $4 0 ) -CHR$ ( 0 ) Nun können wir die Variable Füllen:
MOVE
DPEEK($0A)+$3F,ADR(CMDLN$),$40.

Die Kommandozeile, die sich nun in der Variable CMDLN$ befindet, ist in jedem Fall 64 Zeichen lang, auch wenn das eingegebene Kommando nur 10 Zeichen lang war. Daher müssen wir nach dem Zeilenendezeichen (= CHR$(155)) suchen, da
mit diesem Zeichen jede Kommandozeile abgeschlossen wird.

TURBO-BASIC Autostart: Anwendungen für Kommondozeilenparameter gibt es viele. In der MS-DOS und Unix-Welt gibt es viele Systemutilities, die auf der Kommandozeile mit Parametern aufgerufen werden.

Für diesen Artikel habe ich eine kleine Beispielanwendung geschrieben. Das Programm findet ihr unter dem Namen AUTORUN.BEW auf der Diskette. Die Idee ist folgende. Es wäre doch hilfreich, wenn man bei Aufruf von Turbo-Basic gleich angeben könnte, welches (Turbo-Basic) Programm gestartet werden soll, z.B. D:TURBO LESER.BAS
Das Beispielprogramm liest den Kommandozeilenbuffer und startet das BASIC Programm, welches im ersten Parameter angegeben wurde.
Damit Ihr das Programm benutzen könnt, müßt ihr TURBO-BASIC und das Beispielprogramm auf eine BEWE-DOS Diskette spielen und das Beispielprogramm in AUTQRUN.BAS umbenennen.

Man könnte das Programm sicher noch erweitern, z.B. einen zweiten Parameter abfragen: /L = LORD) lädt ein BASIC Programm, /R (R = RUN) lädt und startet ein BASIC Programm. Sicher Fallen euch noch mehrere Einsatzgebiete ein. Im nächsten Magazin geht’s wiederum ums BEWEDOS, dann mit einem Programm in ACTION!.

Bis dahin Ciao
Carsten Strotmann
Atari Programmeis Group
Carsten Strotmann
Lappenbrink 61
48336 Sassenberg
(02583 / 3621)

RESETSCHUTZ FÜR TURBO-BASIC PROGRAMME

Einige kurze Routinen in der Maschinensprache ermöglichen es, TURBO-BASIC Programme RESETfest zu machen. Bevor ich aber über den RESETschutz schreibe, möchte ich noch einen anderen Trick erwähnen.
Wie kann ein TURBO-BASIC Programm beendet werden, so daß sich der Computer im normalen Zustand befindet ( also das Programm ist gelöscht, der GRAPHICS 0-Bildschirm ist aktiv, BREAK ist wirksam ) ? Es geht nämlich weder so:

?USR ( $E474) :NEW

noch so:

NEW:?USR($E474)

sondern so:

POKE 202,%1:FCOLOR USR($E474)

Statt „FCOLOR“ kann auch „?“ benutzt werden. „POKE 202,%1“ bewirkt, daß das Programm gelöscht wird, sobald es unterbrochen wird, egal, ob mit RESET, wegen einem Fehler oder anders. Es empfiehlt sich nicht, „POKE 202,%1“ im Direct-mode einzugeben (das Programm wird sofort gelöscht). „POKE 202,%1“ kann auch benutzt werden, damit ein Programm gelöscht wird, wenn RESET gedrückt wird.

Nun zum RESETschutz: Die Magazindiskette enthält ein Demoprogramm, das „RESPROT.TB“ heißt. Wer nicht glaubt, daß das Programm RESETfest ist, kann mal RESET drücken. Die Zeile 1004 enthält 2 Routinen. Die erste wird auf die Adresse $100 geschrieben. Sie wird nach jedem Warmstart gestartet und startet das BASIC-Programm von der Zeile 1005 mit dem Befehl „CLR:G.1005“. Der Bildschirm wird vorher ausgeschaltet, so daß er vom BASIC-Programm mit „GRAPHICS“ oder „POKE 559,34′ eingeschaltet werden muß. Die letzte Ziffer der Nummer der Zeile, von der das Programm gestartet wird, befindet sich in der Zeile 1004,2 Zeilen unter dem „\f‘ in „MOVE“. Das Zeichen dort ist um 1 tiefer als die Ziffer. Es können dort Zeichen von „/“ bis „8“ für Zeilen 1000 bis 1009 benutzt werden. Die andere Routine in der Zeile 1004 ( die mit FCOLOR ) aktiviert den RESETschutz. Die Routine in der Zeile 1044 beseitigt den RESETschutz. Die Routine in der Zeile 1046 enthält zusätzlich die Instruktion „INC 202“, so daß das Programm nach dem Warmstart gelöscht wird.

Bemerkungen:
Man muß den RESETschutz nicht in jedem Pro gramm benutzen. Viele Programme sind besser ohne ihn, aber in gewissen Fällen ist er sehr nützlich.
In Programmen mit dem RESETschutz sollte eine Möglichkeit bestehen, sowohl einen Warmstart (Routine in der Zeile 1044 oder 1046 im Demo programm) als auch einen Kaltstart (mit „FCOLOR USR(SE477)) auszulösen.

Obwohl der RESETschutz den Befehl „CLR“ ausführt, würde ich empfehlen, es noch im Programm zu benutzen. Wenn man versehentlich ein Programm mit dem RESETschutz startet, das nicht unterbrochen wer den kann, kann man es trotzdem unterbrechen, indem man RESET und dann BREAK drückt. Nach einigen Versuchen sollte es gelingen. Dann muß man noch ESC/CTL-CLEAR drücken und „GR.0“ ein tippen. Es ist egal, in welcher Zeile sich die Befehle von der Zeile 1004 des Demoprogramms befinden. Man muß nur beachten, auf welche Zeile nach dem Warmstart gesprungen wird.

Die RESETschutzroutine befindet sich im STACK, so daß die Gefahr besteht, daß sie überschrieben wird. Mir ist es aber noch nie passiert, auch nicht mit längeren und gefährlicheren Versionen.

Diese Version ersetzt alle älteren RESETschutzver sionen von mir.
Pavel Hammerschmid

MACH’S NOCHMAL S.A.M.

Wer kennt nicht das Programm-Paket „SCREEN AIDET MANAGEMENT“ ???
Um es kurz zu sogen: Es beinholtet meine „Lieblings“-Textverarbeitung. Einfach zu bedienen,sogar mit der ST-Maus,und das Nötigste an Komfort ist auch vorhanden. Was mir besonders gefällt,ist die80-Zeichendarstellung. Somit gibt es keinen Formatierungssalot, wie mit so manchen Textverarbeitungen, die mit 40 Zeichen auf dem Bildschirm arbeiten.
Auch meine beiden kleineren Töchter schreiben gerne mit S.A.M. ihre Briefe, Schularbeiten, Terminlisten für’s Tischtennis usw. Nachdem ich mir, über Markus Kopp, vor ca. 1 Jahr das „HDI“ von Erhard Paz nachgebauthabe, versuche ich seitdem verzweifelt, über MYDOS, meine Texte mit S.A.M. auf 1,44MB-Disketten abzulegen bzw. übers „HDI“ mit S.A.M. zu arbeiten.

Nachdem ich mit dem Programmieren des 800XL so gut wie nicht’s am Hut habe (ich bin reiner HARDWARE- SCHLOSSER), hoffe ich vielleicht über den ABBUC jemanden zu Finden, der sich einmal Gedanken bzw. die Mühe macht, und diverse Programme umschreibt, damit sie (egal mit welchem DOS) mit 720kB- oder 1,44MB-Disks lauffähig werden. Ansonsten ist der ganze schöne Speicherplatz mit dem HDI auf 3,5″ Disk
etten verschenkt.

Momentan arbeite ich gemischt mit 3,5″ und 5 1/4″ Disketten, wahlweise über’s HDI mit DOS 2.5. Natürlich nur einseitig und SD formatiert (welche Platzverschwendung !I). Dann ziehe ich mir die Textfiles mit MYDOS auf die 1,44MB-Disketten in die entsprechenden Subdirectories, zum Abspeichern. Den rückwärtigen Vorgang, mit dem MYDOS wieder auf die S.A.M.-Diskette, zum LUeiterbearbeiten der Texte, Funktioniert in gleicher Weise. Übrigens funktioniert KEINE mir bekannte Textverarbeitung vernünftig mit MYDOS auf HD-Disketten. Hier ist also meiner Ansicht noch, der Ehrgeiz unserer SOFTWARE-MACHER beim ABBUC gefragt, einmal mehr zu beweisen, was mit dem 800XL noch alles zu machen ist bzw. auch einmal in Bezug auf Textverarbeitung etwas Verünftiges zu Stande zu bringen. Ich kann in diesem Artikel nur vielleicht eine kleine Hilfestellung dazu geben, wie sich S.A.M. mit verschiedenen DOS auf 3,5″-Disketten verhält bzw. was ich durch Probieren herausgefunden habe.

A) BIBO-DOS
Single-Density mit 707 Sekt. formatiert:
1. S.A.M.-Texter läßt sich laden.
2. Man kann Texte schreiben, laden, saven usw.
3. Die meisten Zugriffe uf die Menüs (oben in der Menüleiste)funktionieren.
4. Directory-Anzeige verworren und fehlerhaft.
5. Bei „EXIT“ ins DOS : ABSTURZ

B) BIBO-DOS
Double-Density mit 707 Sekt. formatiert.
1. Springt sofort noch Kaltstart ins 6180-DOSMenü.
2. Nach dem Löschen des (3DUP-SYS und erneu tem Kaltstort,s türzt Programm sofort ab.

C) BIBO-DOS
XF115 formatiert,
1. S.A.M.-Texter läßt sich laden.
2. Man kann damit schreiben.
3. Die meisten Zugriffe auf die Menüs funktio nieren.
4. Bei Diskettenzugriffen bleibt das Programm einfach stehen.
5. Bei „EXIT“ ins DOS : ABSTURZ!

D) MYDOS
HD-Formatiert auf 1,44MB
1. Stürzt sofort während dem Laden ab und
zeigt nur noch „BLAUEN BILDSCHIRM“ !

E) SPARTA-DOS
Single-Density Formatiert.
1. Bleibt im DOS noch Kaltstort.S.A.M. wird erst gar nicht gestartet.

F) SPARTA-DOS
Double-Density formatiert. 1. Wie unter E)

G) ANTIC-DOS 4.0
1. Formatiere Disk (Drive einstellen auf „E“ 2D/DD). zeigt 707 Sektoren an, jedoch in DD.
2. DOS auf Diskette schreiben und S.A.M. mit dem Konvertierungsprogramm von DOS 2.5- ormat auf DOS 4.0 konvertieren.
3. ÜBERRASCHUNG III : S.A.M. läuft so ziemlich ohne Probleme. Ich konnte bisher keine Fehl Funktion feststellen.
4. Bei „EXIT“ ins DOS steigt Programm jedoch wieder aus.

Aus meiner Sicht ist somit DOS 4.0, auch wenn veraltet, Für S.A.M., und um einigermaßen den Diskettenplotz auszunutzen bzw. mit dem HDI und 3,5″- Disketten zu arbeiten, momentan die, einzige Alternative. Oder lieber einen PC anschaffen, um allen Problemen aus dem Weg zu gehen? Also ihr SOFTWARE-SPEZIALISTEN,vielleicht packt Euch der Ehrgeiz und ihr bringt einmal eine Textverarbeitung zustande, die voll mit dem HDI, MYDOS und der Verwaltung von Subdirectories zusammenarbeitet ???
Das gleiche gilt auch für ein vernünftiges Datenbank-Programm.

Diesbezüglich bin ich noch am Austesten,wie sich DATABASE vom MINI-OFFICE II mit den verschiedenen DOS verhält. Vielleicht weiß aber auch schon jemand Abhilfe zu meinen Problemen und kennt diverse Programme, die mit 1,44MB und MYDOS laufen ?

Wenn ja,bitte bei mir melden:
Werner Hellmuth Ransbochstraße Nr.19 97711 POPPENLAUER Telefon:09733/ 1859

NEUES ZUR BLACK BOX

Vor geraumer Zeit habe ich mit StarTexter einige Briefe ausgedruckt. Ich hatte die Block Box damals gerade neu und spielte demzufolge fleißig herum. Allerdings kam es mir so vor, als dauerte die Übertragung der Daten zum Drucker auffallend lange. Und das bei meinem tollen Laserdrucker. Ich machte unter StarTexter einen Testtext fertig. Das bedeutete, genau eine Seite vollschreiben. Sprich 79 mal den Buchstaben ‚A‘ in eine Zeile und davon 66 Zeilen. Druckereinstellung: 12 cpi, linker Rand 10, Eingangspuffer 10 KByte. Also ob den Text und auf die Stoppuhr gedrückt. – Waaaasss, 14 Sekunden?1?1 Das kann ja wohl nicht sein. Erst einmal ermöglicht die Block Box ja parallele Datenübertragung, was gegenüber einer
seriellen ohnehin 10 mal schneller sein‘ sollte (Start – und Stopbit fallen weg plus 8 Datenbits gleichzeitig) und dann noch der 10 KB Drucker
spooler. Da sollten die paar Buchstaben doch in nullkommonichts zum Drucker gerotzt sein. Aber was ich auch probierte, es blieb dabei. Also brav die technische Seite des Druckerhandbuches gelesen. Da steht dann: Nachdem ein Datenwort an der Schnittstelle anliegt, muß der HOST, das ist in meinem Fall ein 130 XE, 0.5 us warten und dann das Strobe-Signal aktivieren, für ebenfalls mindestens 0.5 us. Dann braucht der Drucker ca. 10 us für die Verarbeitung, das macht zusammen 11 us. Das heißt, daß der Drucker die o.g. 5280 Zeichen in ca. 0.06 Sekunden annehmen kann. Ich fand, daß der Gegensatz zwischen 14 Sekunden und 0.06 Sekunden ein wenig kroß sei. Dann billigte ich meinem 130 XE die 20-Fache Zeit zu, schließlich wird ja Für die Ausgabe die CIO aufgerufen, die ihrerseits den Porollelen Bus aufruft und dann noch diverse Schreib – und Leseoperationen, also 1.2 Sekunden. Nun ja, werden viele denken, worum p*sst der sich wegen der 14 Sekunden so an?
Ganz einfach. Jetzt schreiben wir mal ein Briefehen mit Doisy Dot 3. Zwei Seiten Text. Das sind ungefähr 250 KByte Daten. Dann dauert die Datenübertragung schon 7 Minuten, ober auch nur die Datenübertragung. Hinzu kommt die Zeit, die DD3 zum Konvertieren braucht. Und während dem Drucken kann DD3 nicht rechnen, so daß ein langsamer Druckvorgang das System mächtig bremst. Das macht dann ’ne knappe viertel Stunde für ,’nen blöden Brief, den man in der Zeit auch mit der Hand schreiben kann. Da mein XE also rechnerisch in der Lage sein mußte, die Daten 10 mal schneller zu übertragen, blieb als offensichtliche Fehlerquelle nur der Drucker. Was mach ich Dussel also? Ich schreibe die Firma EPSON an und maule rum, warum dieser wenig billige Drucker so lahm ist. Die sind alles andere als dumm, lassen ein kleines Testprogramm unter meinen Bedingungen (Text 66 x 80) laufen und erzielen 0.14 Sekunden Ubertrogungszeit. Nun ja, das war’s denn wohl. Sollte ich mir wohl doch ’nen PC kaufen.
Eines schönen Tages kam ich auf die Idee, das Ganze mal mit meinem
alten Wiesemann Interface zu probieren. Auf und los. Gemessen: 8 Sekunden. Nanu? Wosissendos? Das Uraltinterface ist schneller als die Block Box? Also los. Robert Puff angeschrieben. Mit Rückporto. Keine Antwort. Übers InterNet. Keine Antwort. Über die ABBUC Box. Keine Antwort. Angefaxt. Auch keine Antwort. (Sauer!). Durch die Block Box blick ich nicht durch. Sieht ja unheimlich kompliziert aus. Also abfinden damit.
So, und vorgestern habe ich beschlossen, das ich mich nicht damit abfinde. Also das Betriebsystem der Block Box ein wenig durchstöbert. Wonoch? Na eine $40 Für Drucker in DDEVIC = $300. Erstaunlicherweise habe ich das dann doch relativ schnell gefunden. Das Reossemblieren hat mich dann doch wieder einiges an Zeit und Gehirn-schmolz gekostet, aber das Listing, über das ich

diskutieren will., findet Ihr auf der Diskette.
Die eigentliche Druckroutine beginnt auf Seite 4 in Zeile 2370 mit dem Label 10V. Grob gesagt wird getestet, ob der Druckerport der Block Box benutzt werden soll.
Im Falle ‚JA‘ wird später verzweigt zu entweder Daten direkt an den Drucker schicken oder die Daten in einem Druckerspooler zu speichern. Der Druckerspooler kann entweder RAM im XL/XE sein oder zusätzliches RAM auf der Block Box. Wenn der Spooler benutzt wird, werden so viele Daten hineingeschrieben, wie hineinpossen. Vorausgesetzt, es sind weniger als ca. 60 KB an Daten, dann wird der Rechner sehr schnell wieder frei und mon kann gar die Textverarbeitung oder was auch immer verlassen und andere Programme benutzten. Die Daten werden dann aus dem Spooler per Timergesteuertem Interrupt mit etwa 173 Zeichen pro Sekunde, wenn ich mich nicht verrechnet habe, zum Drucker geschickt, bis der Spooler leer ist. Aber die langsame Datenübertragung trat ja ohne Spooler auf und so ist die direkte Ausgaberoutine von Interesse. Der wichtige Teil steht auf Seite 9. Und erst nach langer Zeit ist mir aufgefallen, was da in Zeile 4940 steht. Da steht:
BNE WR_OK, und übersetzt heißt das, der Rechner soll warten, solange der Drucker fertig ist. Das ist aber Quatsch. Es müßte heißen, warte, solange wie der Drucker NICHT Fertig ist. Also muß dort hin: BEQ UJR_OK.
Ich habe das sofort ausprobiert. Und zwar einmal im Original, dann korrigierter Fehler und drittens mit verändertem STROBE-Timing (Zeile 4780 und Zeile 4840). Das Ganze einheitlich mit folgendem Testprogramm unter Turbo Basic und 8W-DOS:
10 DIM 8$(66*80)
20 A$(1)=“A“:R$(5280)=“A“:A$(2)=AS:REM fülle A$ mit ‚A’s.<br /> 30 FOR 1=80 TO 5280 STEP 80<br /> 40 (1$(1,1)=CHR$(155):REM das 80te Zeichen jeder Zeile ist EOL<br /> 50 NEXT I<br /> 60 OPEN #1,8,0,“P:“<br /> 70 TIMES=“000000″<br /> 80 ? # 1;A$;:?TIME,TIME$<br /> 90 CLOSE #1:END<br /> Und hier sind die Testergebnisse:<br /> im Originalzustand braucht die Ausgabe 664 Jif fies = ca. 13.28 Sekunden<br /> nach der ersten Änderung 18 Jiffies = ca, 2.36 Sekunden<br /> nach der ersten Änderung & DMA aus 87 Jiffies = ca. 1.74 Sekunden<br /> & neues STROBE Timing 95 Jiffies = ca. 1.9 Sekunden<br /> & neues Strobe Timing & DMA aus 71 Jiffies = ca. 1.4 Sekunden<br /> für das neue Betriebssystem der Block BOX, den BB Enhancer:<br /> – nach allen Änderungen 102 Jiffies = ca. 2.04 Sekunden<br /> – nach allen Änderungen & DMA aus 75 Jiffies = ca. 1.5 Sekunden<br /> Echt toll, wie die Daten zum Drucker sausen. Und wie überrascht ich bin, wie nah meine Schätzung von 1.2 Sekunden an die 1.4 Sekunden herankam. Freude kommt auf. Und natürlich Bedenken, denn ich hoffe, daß der gute Robert Puff sich nicht auch wo anders verhauen hat. Es gibt ja auch weniger gutmütige Fehler. Na ja, andererseits läuft die BB bei mir schon recht lange und recht gut. Nun muß ich aber auch noch einige Anmerkungen machen.<br /> Das neue STROBE- Timing liegt bei ca. 7 us und ist damit mehr als 10 mal großzügiger, als der Drucker es verlangt. Allerdings gilt das Für MEINEN Drucker. Wie das bei anderen aussieht, keine Ahnung. Und dann noch eine Sache, wo ich schon mit vielen Leuten drüber gesprochen habe. auch mit dem guten Robert Puff, der hat auch schon mal Zeit für eine Antwort. Und zwar sagte oder besser schrieb ich: Wenn Interfaces das Zeilenende-Zeichen des XL/XE, genannt EOL mit dem ASCII Wert 155 oder $96, in CR = 13 ($0D) oder CR + LF = 13 + 10 ($0D, $DA) wandeln, werden meiner Meinung nach möglicherweise Grafikdaten verändert. Wenn nämlich in einem Bild der Wert 155 vorkommt, macht das Interface daraus 13, womit das Bild nicht mehr stimmt. Schlimmer ist es, wenn zusätzlich LF erzeugt wird. Dann erhält der Drucker anstatt der im GraFikbefehl angekündigten z.B. 640 Byte plötzlich 641 Byte und dabei kann er Fürchterlich durcheinander kommen. Das Interface weiß nämlich nicht, . ob es gerade ein Bild oder Text umwandelt. Werfen wir dazu einen Blick auf Seite 6, Zeilen 3120 ff. Dort heißt es: Nimm ein Zeichen aus dem Puffer. Ist es EOL? Ja, dann mach daraus CR. Womit es schon bei einem Bild nicht mehr stimmt. Es gibt ja auch so viele Befehle Für Grafikausdrucke, daß dem Interface eine Erkennung schwer Fallen würde. Oder wenn man Download Zeichensätze an den Drucker schickt. Dabei ist mir der Fehler übrigens vor knapp 10 Jahren aufgefallen. Ich hatte damals einen Treiber geschrieben, der bei einem BASIC Listing den Ausdruck aller ATASCII Zeichen durchführte. Die Sonderzeichen wurden dabei als Grafikdaten zum Drucker geschickt. Und bei dem Buchstaben ‚A‘ (Groß A Umlaut) gab es immer Schrott. Ich habe mir dann die Grafikdaten genauer angesehen und es kam tatsächlich der Wert 155 darin vor. Ich habe den Buchstaben dann so gemocht, daß 154 oder ähnlich dabei herauskam, und schon funktionierte es.<br /> Dann noch eine Anmerkung. Die Betriebsysteme der Block Box enthalten eine Prüfsumme. Zumindest bei dem Enhancer ist die Änderung nicht ohne Folgen geblieben. Er piept nämlich immer eine Sekunde, wenn ich ein bestimmtes Menü (nicht zum Essen) aufrufe. Aber vielleicht bekommt der gute Robert ja ein ABBUC Magazin in die Hand… So, that’s it, goodbye and thanks For all the Fish<br /> Euer Floppydoc</span></p> <table style=“width: 100%;“ bgcolor=“#000000″ border=“1″>

Neue Programmiersprache

Auf der vorletzten Seite der Textbeilage zum Magazin #39 habt Ihr sicherlich die Highlights der neuen geplanten Programmiersprache gelesen. Leider haben wir den dazugehörigen Fragebogen nicht mitveröffentlicht. Wir wollen das an dieser Stelle nachholen. Bitte kopiert diesen Artikel und sendet Ihn an die Entwickler ein. Für sie ist Eure Reaktion sehr wichtig.

MAE Assembler

Hallo Leute,
vor einiger Zeit hat Wolfgang mich gebeten, einen Testbericht über den Assembler MAE zu schreiben. Nun, ich hatte nicht besonders viel Zeit, aber einiges habe ich kurz ausprobiert. Es wird also nur ein kurzer Vorbericht. Ich will auch gleich sagen, warum das so ist.

Es soll sich hierbei um einen Assembler handeln, der angeblich als einzigster mit der XEP 80 zusa
mmenarbeitet. Nun, das kann schon einmal nicht so sein. Ich habe sehr viel mit dem MAC/65 gearbeitet, und der funktioniert sehr gut mit der XEP 80. Da ich eigentlich sehr gerne mit dem MAC/65 gearbeitet habe, weil er zum einen sehr schnell assembliert und zum anderen eine recht gut konfigurierbare Druckerausgabe hat, sah • ich mal erst keinen Grund, mich mit einem anderen Assembler zu beschäftigen. Allerdings hat MAC/65 auch einige Nachteile. Was mich am meisten stört, ist daß er nur einen Teil des erweiterten 65(02 Befehlssatzes beherrscht. Außerdem kann man Editorbefehle nicht abkürzen, sprich L. für LIST usw. Vom Biboassemlber war ich mit der Funktion LIST Label verwöhnt. Und ATMAS bietet, glaub ich, den Vorteil eines bidirektional scrollbaren Editors. Außerdem hat der Biboassembler einen m. E. handlicheren Debugger. Also hab ich mir dann doch mal den MAE angeschaut und dessen Anleitung gelesen.

Als eines der ersten Merkmale stand dort, daß er mit der XEP 80 zusammenarbeitet. Nun, das konnte schon mal nicht sein. Denn der MAE belegt den Hauptspeicher von $8900 bis $BBCF. Wenn mon vorher den Treiber der XEP 80 lädt, ist der Speicher von $8600 bis $(3C1F schon besetzt. Und wenn man als erstes den MAE lädt, kann mon den XEP Treiber nicht mehr laden.

Dennoch will ich mal kurz zusammenfassen: Der MAE ist ein Assembler/Debugger mit dem 6502 und dem 65816 Befehlssatz. Er unterstützt die 24 Bit Modi, die man für de 65816 CPU benötigt. Der MAE liegt hauptsächlich in einer Bank, das heißt, mon braucht auf jeden Fall eine Speichererweiterung. Der MAE funktioniert dennoch mit der XEP 80. Er hat einen bidirektional scrollbaren Editor, sehr viele Editorbefehle und jede Menge Assemblerdirektiven. Aber darauf will ich vorerst nicht näher eingehen. Um mir in einigen Punkten Klarheit zu verschaffen, habe ich den Autor John Harris in den USA angeschrieben. John Harris hatte in der Anleitung zum MAE eine Adresse hinterlassen, wie er über eine Mailbox zu erreichen ist. Ich habe also im MausNetz eine Mail (Brief) an die angegebene InterNet Anschrift gepostet. Ich wollte es kaum glauben, aber am zweiten Tag danach war die Antwort da. Die Informationen aus diesem Briefwechsel möchte ich hier in Interviewform wiedergeben:

>Von : jharris@cup.portal.com (Do, 19,01.95 10:08) >An : Erhard Pütz @ RS
Herzlichen Dank für Dein
Interesse am MAE
Assembler. Ich habe gerade einige weitere Arbeiten daran beendet. Diese sind für eine Version, die mit der neuen 65816 Erweiterung von FTe herausgegeben wird. Ich muß noch eine 6502 kompatible Version assemblieren, die ich Dir schicken könnte, wenn Du möchtest. Je nach dem was für eine Version Du hast, hier sind einige der neueren Merkmale:
Man kann jetzt Controlzeichen mit dem Text einge ben, damit man Grafik oder internationale Zeichen zur Verfügung hat.
Die Tastatur-Makro-Eingabe wird nun mit control-3 beendet, was die Benutzung der ESC-Menue-Kommandos innerhalb des Makros gestattet. Dies war erforderlich, damit man nach Art eines Batch-Files mehrere Programmsegmente assemblieren kann, aber in Wirklichkeit ist noch ein zusätzlicher Schritt erforderlich, nämlich das Laden und Speichern der Makros auf Diskette, bevor es voll von Nutzen ist. Dies ist für die Nahe Zukunft geplant. Mit dieser Funktion kann man dann auch Konfigurationen laden.
In den Debugger wurde eine Funktion eingebaut die das Umschalten zwischen dem Programmbildschirm und dem Debuggerbildschirm ermöglicht. Dies wird dann in begrenzter Form auch für die XEP 80 gelten.

– Im Zeilenassembler des Debuggers kann man jetzt Pseudo-Opcodes eingeben.
– Verbesserte Anleitung
– Beispieldatei für Programmakros
– Verschiedene andere Verbesserung und Fehlerbesei tigungen. Bei einigen Kommandos wurden Änderun gen vorgenommen, hauptsächlich in Verbindung mit dem „?“ als Joker.

John,.der MAE läuft bei mir nicht mit der XEP 80. Gibt es dafür eine besondere Version?

Es ist erforderlich, daß der XEP E: Treiber installiert ist. Ich habe allerdings erst kürzlich bemerkt das der Originaltreiber in den oberen Speicherbereich geladen wird und deshalb nicht mit dem Assembler läuft. Ich hatte eine geänderte Version benutzt die nach MEMLO hin lädt und ich habe einfach vergessen, daß der Originaltreiber nicht auf diese Weise arbeitet. Ich weiß immer noch nicht, was ich deshalb machen soll. Vorschläge sind willkommen!

Warum unterstützt MAE nicht die zusätzlichen Befehle des 65CO2?

Die 65CO2 Instruktionen sind ein Teil der 65816 Befehle und das sollte ohne Probleme funktionieren. Was funktioniert daran nicht?
Ich hatte nirgendwo in der Anleitung etwas von 65CO2 gelesen. Aber vielleicht hätte ich ein wenig genauer lesen sollen. Warum benutzt Du Speichererweiterungen nicht direkt soweit daß man bis zu einem Megabyte (weniger ein oder Zwei Bänke) für den Editor benutzen kann? Das könnte man dann nebenbei als Textverarbeitung benutzen?

Ich habe MAE ursprünglich nur für mich geschrieben und er genügte meinem modulieren Programmieren völlig. Ich habe den zusätzlichen Speicher einfach nicht gebraucht, da ich es sowieso nicht mag, wenn die Sourcetexte so lang sind. Es gibt eine Menge Dinge, die ich verbessern möchte, aber ich habe leider keine 24 Stunden am Tag dafür Zeit: Im Moment ist es am Wichtigsten, daß der Debugger die Anwesenheit einer 65816 erkennt. Danach möchte ich mich am liebsten darum kümmern, daß der Source Code vollständig mit 24 Bit arbeitet und um die Speicherbelegung des MAE selbst. Eine Erweiterung des Editors hinsichtlich der Benutzung von Speicherbänken könnte danach kommen. Der Editor kann im Moment noch nicht die Aufgaben einer Textverarbeitung erfolgen, da er eine Zeile noch nicht an einer beliebigen Stelle teilen oder zwei Zeilen zu einer zusammenfügen kann. Allerdings werden diese Änderungen relativ einfach sein.

Gibt es eine Möglichkeit wie beim MAC/65 die Druckerausgabe zu konfigurieren?

Tut mir leid, es gibt keine konfigurierbare Druckerausgabe. Das ist eins von den Dingen, zu denen ich. noch nicht gekommen bin. Einige dieser Probleme kommen daher, daß ich keinen Speicher mehr übrig hatte. Ich weiß, es klingt seltsam, den Speicher ab $A900 zu belegen, aber das ist wirklich nur vorläufig. Der Debugger ist vollständig im Hauptspeicher. Ich habe nur das absolute Minimum der Hilfsroutinen für den Editor und den Assembler in den Hauptspeicher gelegt alles ande
re in eine Bank. Diese Bank ist jetzt bis zu dem Purkt voll, wo ich glaube, daß noch genug Platz für die Symboltabelle übrig ist. Da ich mit dem Projekt noch nicht fertig bin und noch ungefähr 4 KByte extra für den Debugger hinzukommen, habe ich beschlossen, daß das Projekt 2 Bänke erfordert. Wenn ich den Speicher dann entsprechend neu aufgeteilt habe, werden auch eine Menge in Betracht kommender Funktionen eingebaut werden.

Mit freundlichem Gruß John Harris
(Übersetzung ohne jede Gewähr, E. Pütz, den 23. Januar 1995)

ABBUC PD Neuheiten

NR. 430 MD8-FILES #5 6 S
Wieder einmal Futter für hungrige Soundplayer (wie zum Beispiel den FAMPY). Diesmal handelt es sich um 3 doppelseitig bespielte Disketten mit folgenden Soundfiles: AXENONS, JARRE, FUNFACII, GOING, ELEVEN, SPACE2, VISIONME, SPACE, KGSGAME, OLDFIELD, ZZBOSSA, SUSANNE, AWESOMET, SMOKE und BLUEBERY. Die Disketten wurden von LUTZ FRANSKY zusammengestellt.

NR. 431 MAC-ASSEMBLER/HYPER C: I S
Ein neuer Assembler von John Harris. Bitte lest dazu die Beschreibung von Erhard Pütz in diesem Heft. Auf der Rückseite haben wir einen neuen E:-Handler (HYPER E:) kopiert. Dieser verdoppelt die Geschwindigkeit der Bildschirmausgabe. Man muß es einfach sehen um es zu glauben. Beide Programme sind mit ausführlichen Textfiles (in englischer Sprache) versehen, die die Programme ausführlich erklären

NR. 432 SPRINT XL FONTS IV 4 S
Anspruchsvolle Textverarbeitung auf dem XL? Spätestens seit Print-Prozessoren wie DAISY DOT oder SPRINT XL kein Problem! Und damit der Nachschub an Schriften nicht abreißt, folgen hier zwei weitere doppeltseitig bespielte Disketten mit Zeichensätzen im E24-Format für SPRINT XL. Zusammengestellt wurden die Fonts von LUTZ FRANSKY. Auf den Disketten befinden sich die Dateien ZS92 bis ZS220, also insgesamt 128 neue Files!

NR. 433 RAY OF HOPE 1 S
Eine neue Megademo von ZELAX aus Polen.Es gibt wieder völlig verdrehte Laufschriften, gepaart mit tollen Grafiken und guter Musik, zu bestaunen. Dies ist der Beweis, daß auf dem XL noch einiges los ist. Unter anderem werden folgende Effekte gezeigt : Plasma-Grafik, Sinus-Scroller und schattierte Vektorgrafik. In einem Teil der Demo glaubt man, seinen Augen nicht trauen zu können : Vertikale Display-ListInterrupts! Mit der Leertaste wird zwischen den verschiedenen Teilen umgeschaltet. Achtung! Stereoerweiterte Rechner bekommen hier leider nur den halben Ohrenschmaus mit.

NR. 434 GRAFIK-/SOUND-DEMOS 13 1 S
SHAKE! Eine neue Demo von APC. Verschiedene Effekte (besonders erwähnenswert: Der perspektivische Scoller) werden nacheinander gezeigt und von einer populären, gut umgesetzten Melodie begleitet. JUSTFANCY: Eine kleine Demo von SOUSED TEAT. Hier wird ein Schrolltext stufenlos herangezoomt, ein Schachbrett ebenfalls, und auserdem gibt’s noch einen Krieg-der-Sterne-Text. Insgesamt können fünf verschiedene Parts betrachtet werden.Auserdem gibt’s noch ein kleines, in Assembler geschriebenes Spiel der polnischen Programmier-Gruppe SHADOWS namens HIVMANIA.

PD-BIBLIOTHEK: THEO SCHWACKE, HE1NESTR. 17, 45699 HERTEN, Tel. 02366 – 34696

 

 

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