09.17.90 01.01.80 ================================================================================ ..zu4 POKEs zum Listschutz ..4t ^^FWas bewirken die POKE-Werte in Speicherstelle 808 zur Frage >>Listschutz<< aus der 64'er 9/90, Seite 57? Gibt es Listen, in denen alle POKE-Befehle des C 64 vermerkt sind? ^^LSMichael Hafen, Wehingen^^N ..4t In den Speicherstellen $0328 (808) und $0329 (809) steht in Form von Low-/Highbyte die Anfangsadresse der Betriebssystem-Routine zur Abfrage der STOP-Taste $F6ED (63213). Wenn man nun das Lowbyte in Adresse 808 in >>225<< ändert, weisen die Zeiger auf folgende Anfangsadresse: $F6E1 (63201). Dort findet der C 64 folgenden Assemblercode: ..li ,F6E1 A1 A4 LDA ($A4,X) ,F6E3 A0 78 LDY #$78 ,F6E5 85 A2 STA $A2 ,F6E7 86 A1 STX $A1 ,F6E9 84 A0 STY $A0 ,F6EB 58 CLI ,F6EC 60 RTS ..4t Das Maschinenprogramm liest und beschreibt lediglich Zähler und Merkadressen in der Zeropage, die u.a. der interne Timer verwendet. Für den korrekten Programmablauf Ihres Basic-Programms sind diese ohne Bedeutung. Wichtig sind allein die beiden Assemblerbefehle am Routinenende: CLI (hebt Interruptsperre auf) und RTS (Rücksprung zum laufenden Basic-Programm). Durch diesen Trick umgeht man nicht nur die Abfrage der STOP-Taste, sondern verurteilt auch die gemeinsame Wirkung von zur Wirkungslosigkeit: Ein aktiviertes Programm kann nicht mehr unterbrochen werden (es hilft nur noch der Resetknopf oder Ausschalten). In der Vergangenheit wurden in vielen Ausgaben des 64'er-Magazins und der 64'er-Sonderhefte interessante POKE-Adressen und deren Wirkung vorgestellt. Für weitere Informationen zu Systemadressen des C 64 empfehlen wir Literatur über Assembler und Maschinensprache, z.B. ein Buch mit einem ROM-Listing. ^^LSDie Redaktion^^N ..zu4 Syntax Error als Listschutz ..4t ^^F64'er 9/90, Seite 57, >>Listschutz gesucht<<:^^N ..4t Eine verbreitete Methode, sein Listing zu schützen, besteht im Einfügen einer REM-Zeile ziemlich am Programmanfang. Unmittelbar hinter der REM-Anweisung muß ein geSHIFTetes >>L<< stehen. Nach der Eingabe von LIST bricht der Computer exakt an der bewußten Zeile mit einem >>Syntax Error<< ab. Weitere Tips zum Listschutz findet man in der 64'er 12/89, in den >>100 besten Tips & Tricks<< als Trick 6, 8 und 94. ^^LSMarkus Grospietsch, Hürtgenwald-Gey^^N ..zu4 Hochnäsig ..4t ^^FBitte nicht so hochnäsig, meine Herren Maschinenprogrammierer! Es ist durchaus möglich, einen Autostart auch in Basic zu entwickeln, im Gegensatz zur Bemerkung Ihrer Redaktion in der 64'er 9/90, Seite 57, >>Listschutz gesucht<<. Wie's geht, steht ausführlich im >>Anti-Cracker-Buch<< von Data Becker. Ich bin gern bereit, Michael Hafen darüber aufzuklären. Ich selbst benutze (sehr zum Ärger mancher Spione) den Listschutz mit Autostart, gesperrter STOP-Taste und, falls diese Hindernisse überwunden werden, Listings ohne Zeilennummern.^^N ^^LSNorbert May, Grömitz^^N ..4t Falls Sie unseren Hinweis, ein effektiver Listschutz sei nur mit einem in Assembler programmierten Autostart zu erreichen, als Überheblichkeit gegenüber Basic-Programmierern verstanden haben, so dürfen wir Ihnen versichern: dies ist ganz und gar nicht der Fall. Trotzdem >>beißt die Maus keinen Faden ab<<: eine Autostart-Routine für ein Basic- oder Maschinenprogramm, das die Tastenkombination sperrt, den simulierten Modulstart >>CBM80<< bei $8000 initialisiert und zusätzlich noch die Vektoren der LIST-Routine $0306/$0307 ändern kann, läßt sich tatsächlich nur in Assembler programmieren. Nur bei einem Assemblerprogramm kann man die in diesem Fall erforderliche Ladeadresse von $0300 (768, Tabelle der Betriebssystem-Vektoren) oder darunter einstellen, eine Routine in Basic dagegen besitzt als Startadresse immer $0801 (2049). Auch diese Autostart-Methode in Maschinensprache, die die meisten kommerziellen Spiele und andere Software-Produkte für den C 64 benutzen, ist in dem von Ihnen genannten >>Anti-Cracker<<-Buch ausführlich beschrieben. Der >>ASG<< aus dem 64'er-Sonderheft 57 (Tips & Tricks) z.B. arbeitet exakt nach diesem Assembler-Prinzip. ^^LSDie Redaktion^^N ..zu4 Grafikausdruck bei Simon's Basic ..4t Wie kann man eine Grafik ausdrucken, die mit Simon's Basic und der Anweisung HIRES konstruiert wurde? Welcher Befehl gibt z.B. einen Kreis auf dem Papier aus?^^N ^^LSMichael Hafen, Wehingen^^N ..4t Ein mit Simon's Basic erzeugter HIRES-Bildschirm wird mit dem Befehl COPY auf dem Drucker ausgegeben. Folgende Drucker, über den seriellen Port und einem Interface mit dem C 64 verbunden, werden unterstützt: Epson FX-80 und kompatible, Seikosha GP 100 VC und MPS 801. Die Auswahl dieser >>betagten<< Druckertypen erklärt sich aus dem Umstand, daß Simon's Basic ebenfalls nicht mehr der >>letzte Schrei<< für den C 64 ist. Folgendes Listing erzeugt in Simon's Basic einen hochauflösenden Bildschirm, zeichnet einen Kreis und gibt diesen nach Tastendruck auf Papier aus: ..li 100 HIRES 0,1 110 CIRCLE 160,100,50,50,1 120 POKE 198,0: WAIT 198,1 130 COPY ..4t Leider haben wir festgestellt, daß vor allem Simon's Basic-Steckmodule älterern Datums die Anweisung COPY nicht kennen (das gilt auch für die meisten Diskettenversionen). Hier besteht die Möglichkeit, mit dem Utility >>simon-save.obj<< (64'er 4/90, Seite 71) diese Grafik ins Hi-Eddi-Format zu konvertieren, um sie dann mit einem Hardcopy-Programm für Hires-Grafiken problemlos ausdrucken zu können (z.B. >>Superprint<< oder >>Hardmaker<<). ^^LSDie Redaktion^^N ..zu4 Trickreicher EPROM-Tausch ..4t ^^FFrage von Uwe Scheidner aus der 64'er 9/90, Seite 56: Wie kann man die Probleme beseitigen, die beim Tausch des DOS-EPROMs der Floppy OC-118-N mit dem der 1541-C auftreten?^^N ..4t Das in der Diskettenstation OC-118-N (baugleich sind die Typen >>Turbo 9900<<, >>KY-1000 H<< und >>Westfalia Nr. 188193<<) installierte ROM kann nicht ohne weiteres gegen ein 1541-EPROM getauscht werden. Dies liegt an der unterschiedlichen Anschlußbelegung der Datenleitungen D3 und D4: sie sind im ROM der OC-118-N vertauscht. D3 (Pin 15 m EPROM) liegt am Prozessor und an den 6522'ern am Pin 29, D4 (Pin 16 am EPROM) entsprechend an Pin 30. Sie haben zwei Möglichkeiten: 1. Die >>Vertauschung<< wird rückgängig gemacht. Dazu muß man den EPROM-Sockel auslöten, um an die entsprechenden Leitungen heranzukommen. Sie verlaufen unter dem Sockel auf der Platinenoberseite. Liegen die Leitungen frei, sollte man die an Pin 15 und 16 des EPROMs liegenden unterbrechen und >>über Kreuz<< wieder miteinander verbinden. Anschließend wird ein neuer Sockel eingelötet. 2. Bedeutend unkomplizierter ist eine >>gemischte<< Soft-/Hardware-Lösung. Dazu müssen Sie das 1541-ROM mit einem EPROM-Brenner auslesen, z.B. nach dem Speicherbereich $1000 bis $4FFF. Durch folgendes Assemblerprogramm werden die bewußten Bit 3 und 4 vertauscht: ..li START LDY #$00 STY $0F LDA #$10 LABEL 0: LDA ($0F),Y STA $02 STA $03 AND #$E7 STA $02 LDA $03 AND #$08 BEQ LABEL 1 LDA $02 ORA #$10 STA $02 LABEL 1: LDA $03 AND #$10 BEQ LABEL 2 LDA $02 ORA #$08 STA $02 LABEL 2: LDA $02 STA ($0F),Y INY BNE LABEL 0 INC $10 LDA $10 CMP #$50 BNE LABEL 0 RTS ..4t Das Programm läßt sich mit jedem Maschinensprache-Monitor (z.B. SMON) oder Assembler (z.B. Hypra-Ass) ab einer beliebigen Adresse eingeben. Gestartet wird es nach dem Laden des 1541-ROM, das als Anfangsadresse $1000 besitzen muß. Das so geänderte ROM kann man nun ab $1000 auf ein 27128-EPROM brennen und ins Laufwerk OC-118-N einsetzen. Diese Floppy ist jetzt voll kompatibel zur 1541-C. Nahezu alle gängigen Programme, auch Exos V3 und FC III, arbeiten problemlos mit dem neuen Floppy-ROM zusammen. ^^LSLutz Spieker, Velbert-Neviges^^N ^^LSEckhard Ludwig, Halle/Saale^^N ..zu4 Zuviel auf einmal? ..4t ^^Ich besitze verschiedene Module, u.a. Action Cartridge MK V und Final Cartridge III. Dazu habe ich eine 1 MB-EPROM-Karte. Diese gesamte Konfiguration würde ich gerne gleichzeitig auf meiner Dreifach-Expansionserweiterung unterbringen. Sobald jedoch diese beiden Module gleichzeitig eingesteckt sind (oder in Verbindung mit der EPROM-Karte), gibt die Anlage den Geist auf. Wie kann ich die genannten drei Erweiterungen gleichzeitig in die Expansionsport-Erweiterung stecken und einzeln nutzen, ohne daß der Computer immer wieder abstürzt?^^N ^^LSHeiko Hoppen, Wittgert^^N ..zu4 >>Tour de Computer<< ..4t ^^FFrage von G.H. Braun aus der 64'er 9/90, Seite 56: Wer kann mir für meine täglichen Übungen auf einem stationären Fahrrad eine Landschaftssimulation programmieren, sodaß ich mir vorstellen kann, ich würde auf einem echten Rad sitzen und auf einer wirklichen Straße fahren?^^N ..4t In der Zeitschrift >>tour<<, einem Fachblatt für Radpsortler, findet man häufig Anzeigen über ein Computerprogramm, in dem u.a. die >>Tour de France<< simuliert wird. Über handelsübliche elektronische Fahrradtachos und ein Interface läßt sich das Bildschirm-Scrollen der Landschaft an die gefahrene Geschwindigkeit anpassen. Den Vertrieb oder Hersteller solcher Simulationsprogramme erfährt man über die Anzeigenabteilung des Magazins >>tour<<. ^^LSKarsten Horn, Kiel^^N ..zu4 Inverse >>Stolpersteine<< ..4t ^^FEs gibt eine Menge interessanter C 64-Programme, die ich in GW-Basic (Anm. d. Red.: Basic-Dialekt für IBM-kompatible PCs, XTs und ATs) umsetzen möchte. Leider exisieren da in den Listings zum C 64 zahlreiche eigenartige Sonderzeichen, wie: inverser Kreis, reveres >>Q<< usw. Was bedeuten diese Zeichen und wo gibt es eine Übersicht bzw. Literatur darüber? Weiß jemand, wer die Übersetzung kompletter C 64-Listings in GW-Basic für mich übernimmt?^^N ^^LSWilli J. Mayer, Oberteuringen^^N ..4t Die Übertragung eines >>waschechten<< Basic-Programms vom Commodore-eigenen Basic 2.0 in GW-Basic dürfte keine Schwierigkeiten bereiten, sofern keine Systemadressen des C 64 darin angesprochen werden (POKE, PEEK und SYS). Bei den bewußten inversen Zeichen handelt es sich zum größten Teil um sog. >>Steuerzeichen<<, die sich vornehmlich um die Bildschirmausgabe kümmern (Cursorposition, Farbgebung oder Löschen des Screens usw.). Diese Funktionen sind bei GW-Basic ebenso vorhanden, allerdings mit komfortableren Befehlen. Wenn Sie beim C 64 mit der Anweisung PRINT und der Tastenkombination ein reverses >>Herz<< ausgeben, wird der aktuelle Bildschirm gelöscht. Bei GW-Basic genügt die Anweisung CLS. Ein inverses >>Q<< bewirkt in Basic 2.0, daß der Cursor eine Zeile tiefer erscheint. Soll er weiter links oder rechts stehen, muß man z.B. reverse eckige Klammern bemühen. In GW-Basic läßt sich mit einer einfachen Anweisung und den entsprechenden Koordinaten für die X- und Y-Richtung der Cursor an gewünschter Stelle positionieren: PRINT AT X,Y. Eine vollständige Liste der inversen Steuerzeichen des C 64 und deren Funktionen an dieser Stelle zu veröffentlichen, würden den Rahmen des Leserforums sprengen. Dazu verweisen wir auf entsprechende Literatur zum C 64 oder das 64'er-Sonderheft 2/86, Seite 39. Wer gerne C 64-Programme in GW-Basic >>übersetzt<<, soll uns schreiben. Wir werden seine Adresse an Herrn Mayer weitergeben. ^^LSDie Redaktion^^N ..zu4 Aus >>1764<< mach >>1750<>Nullmodem<< geschaltet, DTR und DSR in den Steckern des Kabels gebrückt. ^^FSoftware:^^N -- Der Atari Portfolio benötigt ein Kommunikationsprogramm mit X-Modem-Protokoll (z.B. F-Modem von HOCO, Düsseldorf), -- für den C 64 ist z.B. das DFÜ-Programm >>Proterm V6.0<< bestens geeignet. ASCII-Texte lassen sich mit dieser Konfiguration problemlos austauschen. Damit kann man z.B. den C 64 als Datenspeicher für die Adreßdatei, den Zeitplaner und das Kalkulationsprogramm des Portfolio verwenden. ^^LSGerd Lutze, Solingen^^N ..zu4 C 128 und Geo-Basic ..4t ^^FIn der 64'er 9/90 berichten Sie über die neue Geos-Applikation Geo-Basic. Der Autor schreibt, daß Geo-Basic nicht unter Geos 128 läuft. Dem ist nicht so. Ich verwende diese Geos-Erweiterung mit Geos 128 V2.0, ohne daß bisher ein einziger Fehler aufgetreten ist.^^N ^^LSKlaus Schöner, Stein b. Nürnberg^^N ..4t Sie haben recht, soweit dies die 40-Zeichen-Bidschirmdarstellung des C 128 betrifft. Lediglich im 80-Zeichen-Modus kann Geo-Basic unter Geos 128 nicht gestartet werden. Trotzdem ist ein wenig Vorsicht geboten: Geos 128 benutzt ein erweitertes Kernel, das mit dem Originalbetriebssystem des C 128 nicht mehr viel gemeinsam hat. Ebenso bestehen Unterschiede zu Geos 64. Geo-Basic ist eine sehr komplexe Applikation mit großem Speicherplatzbedarf. So kann es passieren, daß bei eigenen Geo-Basic-Programmen auf einen Bereich zugegriffen wird, den Geos 128 mit anderen Bytes belegt als Geos 64 oder das C 128-Originalkernel. Ein Absturz ist dann unvermeidlich. ^^LSDie Redaktion^^N ..zu4 Kein Museumsstück ..4t ^^FIch bin 14 Jahre alt und habe mir vor kurzem sehr preisgünstig einen VC 20 ohne Netzteil und Handbuch gekauft. 1. Kann ich das Netzteil eines >>normalen<< C 64 anschließen? 2. Falls nein, an welche Pins der Netzteilbuchse müssen welche Spannungen gelegt werden? 3. Ist die AV-Buchse des VC 20 identisch mit der eines C 64? 4. Kann mir ein Leser die Anschlußbelegungen des User-, Joystick- und Expansionsports nennen?^^N ^^LSMarkus Rudolf, Bingen^^N ..zu4 Projekt über Schnittstellen geplant ..4t ^^FIch suche Kontakt zu Computer-Fans, die mir mit Rat und Tat zur Seite stehen, ein C 64-Projekt aufzubauen. Ich beschäftige mich vor allem mit Schnittstellen (Centronics, RS232 usw.)^^N ^^LSVolkmar Knoblauch, Thüringer Str. 2, O-4803 Bad Kösen^^N ..zu4