forum.txt 07.02.90 01.01.80 ================================================================================ ..zu4 Druckertip zu Amica Paint ..4t Mit diesem Tip möchte ich allen Lesern helfen, die den Drucker Epson LX-800 mit einem Görlitz-Interface 8422 besitzen und Schwierigkeiten haben, damit Grafikbilder aus dem Malprogramm ^^KAmica Paint^^N zu Papier zu bringen. In der Druckerroutine >>[W]Hardcopy<< muß die Sekundäradresse auf >>4<< geändert werden (statt >>0<<). Man findet diese mit einem Maschinensprache-Monitor in Adresse $4133 (16691). ^^LSJoachim Feigl, Crailsheim^^N ..zu4 Basic-Variablen erzeugen ..4t ^^FFrage von Michael Vorburger aus der 64'er 3/90, Seite 77: Ich habe mit meinem C 128 eine komfortable Input-Routine in Assembler programmiert. Doch dies nützt alles nichts, wenn die Eingabe nicht auch als String an eine Variable für ein Basic-Programm zurückgegeben werden kann. Gibt es irgendeine Betriebssystem-Routine, die dies erledigt?^^N ..4t Ab Adresse $7AAF (31407) im Basic-ROM des C 128 finden Sie die Routine >>Variable suchen/anlegen<<. Leider kann diese nicht problemlos in Ihr Assemblerprogramm eingebaut werden, da sie von der Hauptschleife des Basic-Interpreters ($4A9F) aufgerufen wird, die den umzuwandelnden String im Eingabepuffer ab $0200 (512) sucht. Folgendes Beispiel kopiert einen Eingabestring (ab $1500) mit vorangestelltem Variablennamen (ab $1400) in den Eingabepuffer. Dort wird er automatisch vom Basic-Interpreter an die richtige Stelle im Variablenspeicher des C 128 (Bank 1) gebracht und kann in einem Basic-Programm wie gewohnt verwendet werden. Als Startadresse haben wir $1300 gewählt: ..li A 1300 LDX #$00 ;Eingabepuffer 1302 TXA ;ab $0200 - 1 1303 STA $01FF,X ;löschen 1306 INX ;(160 Nullbytes 1307 CPX #$A1 ;(eintragen) 1309 BNE $1303 130B TAX 130C LDA $1400,X ;Variablennamen 130F STA $0200,X ;in Eingabepuffer 1312 INX ;(4 Zeichen: 1313 CPX #$04 ;A$=") 1315 BNE $130C 1317 LDY #$00 ;Eingabestring 1319 LDA $1500,Y ;anfügen 131C STA $0200,X 131F INX 1320 INY 1321 CMP #$00 1323 BNE $1319 1325 LDA #$FF ;CHRGET-Routine 1327 STA $3D ;ab $0380 1329 LDA #$01 ;an Pufferanfang 132B STA $3E ;setzen ($0200 - 1) 132D JSR $4A9F ;Interpreterschleife 1330 RTS > 1400 41 24 B2 22 00 > 1500 36 34 27 45 52 2D 4D 41 1508 5A 49 4E 00 00 00 00 00 ..4t Bei der >>Übersetzung<< der Eingabe springt die Interpreterschleife zur Routine LET ($53C6), die nach $7AAF verzweigt. Durch diesen Vorgang wird die Variable so angelegt, als wäre diese direkt eingegeben worden. Bei der Definition der Variablennamen ist zu beachten, daß das Ist-Gleich-Zeichen (=) bereits als Token angegeben werden muß ($B2, nicht $3D). Außerdem muß hinter den Textbytes ab $1400 und $1500 ein Nullbyte stehen ($00). Starten Sie dieses Beispiel mit >>SYS 4864<<. Mit dem Befehl >>PRINT A$<< wird der String >>64'ER-MAGAZIN<< ausgegeben. ^^LSDie Redaktion^^N ..zu4 Urheberrecht beachten ..4t ^^FDie beiden Grafik-Adventures Zak Mc Kracken und Maniac Mansion von Lucasfilm Games kennt bestimmt jeder. Diese Spiele benutzen ein spezielles Eingabesystem für Befehle: Man klickt die Verben, Objekte und Gegenstände mit dem Mauszeiger an. Darf man dieses Eingabesystem in eigenen Programmen verwenden und diese zur Veröffentlichung anbieten?^^N ^^LSAndreas Nagele, Waidhofen/Th. (Österreich)^^N ..4t Die Programmiertechnik, nach der diese Eingaberoutine arbeitet, stammt nicht von Lucasfilm Games, sondern wird in unzähligen anderen C 64-Programmen angewandt. Falls Sie entsprechende Kenntnisse in Assembler besitzen und eine gleichartige Routine selbst programmieren, wird niemand etwas gegen eine Veröffentlichung einwenden. Anders sieht es dagegen aus, wenn man die von Lucasfilm Games entworfene Routine Byte für Byte aus einem der genannten Adventures >>klaut<<, in eigene Spiele übernimmt und solche Programme ohne Zustimmung des Urhebers weitergibt, veröffentlicht oder vermarktet. In diesem Fall dürfte ein klarer Verstoß gegen das Copyright-Gesetz vorliegen. ^^LSDie Redaktion^^N ..zu4 Neue Farben für den Hexer ..4t ^^FEines der besten Kopierprogramme für den C 128 ist der ^^KHexer^^N. Leider sind die Farben des Arbeitsmenüs nicht sehr glücklich gewählt. Bei meinem Farbmonitor kann ich die gelben Zeichen der Eingabehinweise auf dem hellgrauen Hintergrund äußerst schlecht entziffern. Wo können im Programm die Bildschirmfarben anders eingestellt werden?^^N ^^LSManfred Knödelseder, Hauzenberg^^N ..4t Das Ändern der Farben für die Textausgaben ist leider aufwendig. Durchsuchen Sie mit dem eingebauten Maschinensprache-Monitor des C 128 und der Anweisung >>M<< (Memory-Dump) das für Ihre Gerätekonfiguration entsprechende Programm des ^^KHexer^^N im Speicherbereich von $1C01 (7169) bis $4374 (17268). Meist steht der auszugebende Anweisungstext nach einem PRIMM-Befehl (JSR $FF7D) und beginnt mit dem Farbcode für die folgenden Textbytes. Finden Sie an dieser Stelle z.B. den Hexadezimalwert $9E (158), wird der Text in gelber Farbe ausgegeben. Dieses Byte können Sie in einen anderen Wert ändern (z.B. $90 für >>schwarz<<). Der einfachere Weg ist, die Textfarben zu belassen, wie sie sind, und nur die Hintergrundfarbe des Bildschirms zu ändern. Das entsprechende Byte finden Sie in Speicherstelle $2008 (8200). Der Originalwert ist $0E (14), der VDC-Chip interpretiert diesen Wert als >>Hellgrau<<. Gute Alternativfarben für einen zufriedenstellenden Kontrast mit den Farben der Schriftzeichen sind die Werte $02 (blau), $04 (grün) oder $08 (rot). ^^LSDie Redaktion^^N ..zu4 Kann's der C 64 mit dem Atari? ..4t ^^FIch bin Besitzer eines C 64 und eines Atari Portofolios. Ich möchte zwischen beiden Computern ASCII-Dateien austauschen. Welche Hard- und Software benötige ich, um die Kommunikation in beiden Richtungen zu bewerkstelligen?^^N ^^LSStefan Weber, Berlin^^N ..zu4 Pop-Hits speichern ..4t ^^F64'er 6/90, Seite 67, >>Bayern 3 aus dem C 64<<: Wie kann man Musik aus dem Radio, Walkman, CD-Player usw. auf Diskette speichern?^^N ^^LSTorsten Thöndel, Brühl^^N ..4t Hier hilft nur, den Sound des entsprechenden Audiogerätes zu digitalisieren und die aus diesem Vorgang erzeugten Daten auf Diskette zu speichern. Eine der bekanntesten Hard- und Software-Erweiterungen für den C 64 zu diesem Zweck ist das ^^KD.A.I.SY.-Sound-System^^N, erhältlich bei ^^KComputertechnik Rosenplänter, Stresemannstr. 26, 3400 Göttingen^^N. Mehr zu diesem Thema finden Sie in der 64'er 2/90, Seite 85. ^^LSDie Redaktion^^N ..zu4 Listschutz gesucht ..4t ^^FWie kann ich ein Basic-Programm für den C 64 schützen, damit niemand an das Listing herankommt? Welchen Code muß ich dazu eingeben? ^^N ^^LSMichael Hafen, Wehingen^N ..4t Die gebräuchlichste Methode unter C 64-Programmierern ist das Sperren der Tastenkombination . Dazu muß das Lowbyte in Adresse $0328 (808) des Zeigers auf die STOP-Routine $F6ED im Betriebssystem in den Wert $E1 (225) geändert werden. In Basic lautet die Anweisung: POKE 808,225. Rückgängig machen Sie die Tastensperre mit POKE 808,237. Allerdings wird ein derartiger LISTschutz erst nach dem Starten des Programms aktiviert. Nur wenn das Programm nach dem Laden noch zusätzlich automatisch startet, ist ein relativ sicherer Schutz gegeben. Eine derartige Routine läßt sich allerdings nur in Assembler realisieren. ^^LSDie Redaktion^^N ^^FIch programmiere in Comal (Version 2.01). Seit geraumer Zeit bin ich auf der Suche nach einem einfachen, aber wirkungsvollen LISTschutz für meine selbst entwickelten Programme. Kann mir jemand weiterhelfen?^^N ^^LSFlorian Pulkowski, Leutershausen^^N ..zu4 Floppy->>Exoten<< ..4t ^^FWer kann mir Informationen zur sehr preiswerten Floppystation OC-118-M geben? Laut Hersteller soll diese nach einem Austausch des Betriebssystems durch ein EPROM voll kompatibel sein. Ich versuchte es zunächst mit dem DOS der 1541-C, jedoch wird nicht einmal die Initialisierung vollständig ausgeführt. Andere DOS-Versionen brachten ebensowenig Erfolg. Außerdem laufen weder ^^KExos V3^^N noch ^^KFinal Cartridge III^^N mit dieser Diskettenstation.^^N ^^LSUwe Scheidner, Querfurt (DDR)^^N ^^FIch besitze die Floppy RF-501-C für den C 64. Vergeblich habe ich bisher nach einem Floppyspeeder gesucht, der speziell mit diesem Laufwerk zusammenarbeitet. Welchen Speeder kann ich verwenden, was kostet dieser und woher bekomme ich ihn?^^N ^^LSJörg Friebe, Ragun^^N ..zu4 Noch nicht ganz verloren ..4t ^^FAus Versehen habe ich eine Diskette >>weich<< formatiert (ohne Angabe einer ID-Kennung) und dabei ein wichtiges Programm gelöscht. Gibt es eine Möglichkeit, dieses wieder zurückzuholen?^^N ^^LSJörg Giraud, Stutensee^^N ..4t Trotz dieses Mißgeschicks bleibt ein kleiner Hoffnungsschimmer. Beim Formatieren ohne ID wird zwar das Directory einer Diskette total gelöscht, die einzelnen Datenblöcke des >>ehemaligen<< Programms auf der Diskette sind jedoch unversehrt. Diese wären beim >>harten<< Formatieren mit der ID unwiederbringlich verloren. Der Floppy fehlen durch das gelöschte Directory lediglich die Adressen von Spur und Sektor, bei denen der erste Datenblock des >>verlorenen<< Programms auf Diskette gespeichert ist. Verschiedene Disk-Utilities sowie Diskettenmonitore besitzen eine >>intelligente<< Funktion zum Wiederherstellen des gelöschten Inhaltsverzeichnisses der Diskette. Die Blockverbindungsadressen der noch bestehenden Datenblöcke werden zurückverfolgt, der gelöschte Eintrag im Directory und die BAM rekonstruiert. ^^LSDie Redaktion^^N ..zu4 Wer programmiert Landschaften? ..4t ^^FDurch einen Unfall bin ich teilweise gelähmt. Zu den täglichen Bewegungsübungen verwende ich ein stationäres Übungsfahrrad sowie eine Rudermaschine. Zusätzlich halte ich mich mit meinem C 64 und dem Joystick mit Hilfe von Spielen >>in Bewegung<<. Was ich mir wünsche, ist ein Programm mit guter Grafik, das mich auf einer Straße durch eine abwechslungsreiche Landschaft führt (ähnlich wie bei manchen Spielen, die ein Autorennen darstellen). Ich sitze dabei auf meinem Übungsrad vor dem Monitor und stelle mir vor, daß ich auf einer >>echten<< Straße fahre. Damit würde das monotone Pedaltreten einen Sinn erhalten und die anstrengenden Übungen mir und anderen Leidensgenossen viel leichter fallen. Wenn dann noch einige Ruhepausen auf der Strecke zum Verschnaufen eingelegt sind, bliebe nicht mehr viel zu wünschen übrig.^^N ^^LSG.H. Braun, Walmer-Pt.Elizabeth (Südafrika)^^N ..zu4 Tips zur Erbschaft ..4t ^^FFrage von Jörg Finger aus der 64'er 6/90, Seite 53, zum Adventure >>Die Erbschaft<<: Nachdem ich mit dem Taxi zum Flughafen gefahren bin und gemäß Anweisung die Taste drücke, steht ein Code auf dem Bildschirm. Was soll ich damit anfangen?^^N Notieren Sie sich den Code. Laden und starten Sie das Programm neu (nach dem Ausschalten oder einem Reset des C 64) und wählen Sie dann den Punkt 2 (Am Flughafen). Geben Sie nach dem Nachladen durch die Floppy den vorher notierten Code >>blind<< ein, da der Bildschirm nach wie vor schwarz bleibt. Anschließend baut sich der zweite Level auf (Flughafen). Vergessen Sie nicht, etwas zu essen und die grüne Zeitung zu kaufen. Beides ist lebenswichtig. Der Code für Teil 2 lautet >>AAAAHAJB<<, für den dritten Teil >>EFJDN<<. ^^LSChristian Muschiol, Peißenberg^^N ^^LSDirk Hein, St. Augustin^^N ..zu4 Komfortablere Assembler ..4t ^^FFrage von Alper Köker aus der 64'er 6/90, Seite 52, >>Assemblerprogrammierung<<: Ich habe Probleme damit, wie der von mir benutzte Assembler den Speicher im C 64 benützt. Beim Programmstart werden die Anfangsbereiche des Assemblers und des zu programmierenden Quelltextes ab $0800 belegt. Wenn nun mein geplantes Maschinenprogramm ebenfalls ab diesen Adressen (z.B. $0801) im Speicher liegen soll, muß ich bei einem Testlauf des Objektcodes jedesmal befürchten, daß dieser den Quelltext oder gar das Assemblerprogramm selbst zerstört. Es muß doch noch andere Möglichkeiten geben, als den Quelltext zu speichern, den Assembler zu verlassen, den Objektcode zum Testen zu laden, danach Assemblerprogramm und Quelltext für Verbesserungen erneut zu laden usw. usw.^^N ..4t Nachdem ich anfangs ähnliche Probleme hatte, programmiere ich jetzt hauptsächlich mit Turbo Ass. Dieser Assembler besitzt einen Full-Screen-Editor und befindet sich im Speicherbereich von $9000 bis $CF01. Der eigentliche Quelltext wird vor dem Assemblerprogramm, ab $8FFF rückwärts, im Speicher abgelegt. Damit dürften bei einem Testdurchlauf eines Maschinenprogramms, das z.B. bei $0801 beginnt, keine Schwierigkeiten auftreten. Außerdem hat man die Möglichkeit, den assemblierten Code direkt als Objektfile auf Diskette schreiben zu lassen. Beim Assembler Profi Ass kann man einstellen, in welchem Speicherbereich der Quelltext liegen soll. Als weitere Alternative bleibt noch, mit dem eingebauten Assembler von ^^KMagic Formel^^N zu arbeiten. Dieser benutzt den moduleigenen Speicher. ^^LSStephan Neumann, Brachttal^^N ..zu4 Parameter zu Umweltdateien ..4t ^^FWir sind eine Gruppe von 12jährigen Schülern und haben einen Naturschutzclub gegründet. Wir programmieren auch sog. >>Umweltdisks<<. Unsere Fragen: 1. Wir möchten in unseren Basic-Programmen einige Parameter einstellen (Schrift-, Hintergrund- und Rahmenfarbe, Geräteadresse und Laufwerksnummer). Diese Daten sollen in einer sequentiellen Datei gespeichert und bei erneutem Programmstart geladen werden. Obwohl ich alle Anweisungen laut Handbuch genau beachtet habe, hat der C 64 nach dem Neustart zwar die Parameterdatei geladen, dann aber wurde der Bildschirm schwarz und der Computer ist abgestürzt. Haben Sie eine Basic-Routine für dieses Problem? 2. Woher bekomme ich eine Programmroutine in Basic, die bestimmte Zeichen der Tastatur in deutsche Umlaute (Groß-/Kleinschrift) und das scharfe >>S<< umwandelt?^^N ^^LSSebastian Stoppe, Helmstedt^N ..4t 1. Folgende Programmzeilen mußt Du in Dein Basic-Programm einbauen. Die Zeilennummern kannst Du selbst bestimmen: ..li 10 FOR I=0 TO 4: READ EG$(I): PRINT EG$(I);: INPUT PM$(I): NEXT 20 OPEN 2,8,2,"@0:PARAMETER,S,W" 30 FOR I=0 TO 4: PRINT#2,EG$(I): PRINT#2,PM$(I): NEXT 40 PRINT#2: CLOSE 2 100 DATA VORDERGRUND, HINTERGRUND, RAHMENFARBE, GERAETEADRESSE, LAUFWERKSNR. ..4t Damit werden die eingegebenen Paremterzahlen als sequentielles File auf Diskette gespeichert. Zum Einlesen der Daten kannst Du folgendes Programmbeispiel verwenden: ..li 10 PRINTCHR$(147)"DATEI EINLESEN = TASTE!" 20 POKE 198,0: WAIT 198,1 30 OPEN 2,8,2,"PARAMETER,S,R" 40 FOR I=0 TO 4: INPUT#2,EG$(I): INPUT#2, PM$(I): NEXT: CLOSE 2 50 PRINT "TESTLAUF:" 60 POKE 646,VAL(PM$(0)): POKE 53281,VAL(PM$(1)): POKE 53280,VAL(PM$(2)) 70 PRINT EG$(3)PM$(3): PRINT EG$(4)PM$(4) ..4t 2. Um deutsche Umlaute oder andere Sonderzeichen zu definieren und auf dem Bildschirm darstellen zu können, müssen der Originalzeichensatz des C 64 in das RAM kopiert und die gewünschten Zeichenmuster geändert werden. Dazu kannst Du z.B. das 20-Zeiler-Siegerprogramm Zeichen-Edi aus der 64'er 2/90, Seite 44, verwenden. In den >>Tips und Tricks für Einsteiger<< (64'er 3/90, Seite 82) findest Du außerdem eine Menge Informationen zum Thema >>Zeichensatz<<. ^^LSDie Redaktion^^N ..zu4 Fragen zu Hypra-Speed (64'er 9/89) ..4t ^^FIch besitze den C 64 und eine Floppy 1541. Beide Geräte stammen noch aus der ersten Baureihe. Nach dem Brennen in ein EPROM wollte ich den Floppy-Speeder testen. Neue Einschaltmeldung des C 64 und Funktionstastenbelegung waren o.k. Das Betriebssystem des Laufwerks wurde entsprechend der Anleitung in der 64'er 9/89, Seite 35, geändert. Nach dem Einschalten der Floppy ist mir jedoch aufgefallen, daß die rote LED viel kürzer aufblinkt als in der Normalkonfiguration. Handelt es sich hier um einen Fehler? Auch das geforderte Parallelkabel habe ich nach der Bauanleitung auf Seite 38 problemlos entwickelt und ordnungsgemäß angeschlossen. Trotzdem erhielt nach Druck auf die Taste einen >>DEVICE NOT PRESENT ERROR<<. Stecke ich noch zusätzlich das serielle Kabel an, klappt alles einwandfrei, allerdings nur in der Normalgeschwindigkeit der Floppy 1541. Was habe ich falsch gemacht?^^N ^^LSRalf Hartl, Bad Leonfelden^^N ..4t Das kürzere Aufleuchten der roten LED an Ihrer Floppy ist durch das neue Betriebssytem ^^KHypra-Speed^^N bedingt und völlig normal. Bei Ihrem Parallelkabel kann ein Fehler in der Verdrahtung vorliegen. Vergleichen Sie die Verbindungen Ihres Kabel noch einmal mit der Tabelle 2 in der 64'er 9/89, Seite 38. ^^LSDie Redaktion^^N ..zu4 Mehr Datensätze bei Datec 3.1 ..4t ^^FFrage von Franz Kropf aus der 64'er 7/90, Seite 95: Die komfortable Dateiverwaltung Datec 3.1 arbeitet einwandfrei mit der Floppy 1581 zusammen. Trotz der großen Speicherkapazität dieser Diskettenstation kann Datec 3.1 nur maximal 1024 Datensätze verwalten, obwohl sogar 3840 möglich wären. Wie kann ich das Programm auf diese Datenmenge erweitern?^^N ..4t Laden Sie ^^KDatec 3.1^^N wie gewohnt von der Diskette, starten Sie das Programm aber noch nicht mit RUN. Geben Sie im Direktmodus ein: ..li POKE 2191,15 ..4t In Adresse $088F (2191) ist das High-Byte der maximalen Anzahl der Datensätze ($0400) abgelegt, nach dem Programmstart wird es allerdings nach $8063 (32867) verschoben. Das höherwertige Byte der gewünschten Zahl >>3840<< ($0F00) lautet >>15<<. Speichern Sie nach dieser POKE-Anweisung das Programm erneut, so steht Ihnen die erweiterte Datensatzmenge künftig automatisch zur Verfügung. ^^LSDie Redaktion^^N