Die Freunde von obfuscated code mögen bitte um Himmels Willen eigene Threads machen und nicht ausgerechnet Threads mit klar verständlichen, hilfreichen Tipps unterwandern. (-;
Beiträge von Hobbyist
-
-
(-; statt
Gegen
kleine gelbe Monstergrafische Smileys habe ich seit jeher eine Abneigung (dabei spielte ich nie Pac-Man); wo ich sie nicht abschalten kann (fand ich hier nicht in den Einstellungen), da drehe ich sie halt um, damit sie nicht auto-umgewandelt werden. (-; -
@ SprintC128: Ja, auf die Vergangenheit und kommerzielle Bereiche bezogen ergeben Deine Ausführungen einen gewissen Sinn, wobei das mit den mitverkauften Simons'-Basic-Modulen auf mich recht exotisch wirkt.
Dass die von mir heraufbeschworenen und mit Smileys versehenen seelischen Abgründe als humoristische Übertreibungen erkannt werden können, hoffte ich annehmen zu dürfen.
Heutzutage würde ich nichts in BASIC v2 machen
Ich schon. Ich komme erst seit einigen Monaten dazu, mich bisweilen intensiver (als in den 80ern) mit dem C64 zu beschäftigen, und es macht mir mehr Spaß als vorher das Programmieren in C, JavaScript und PHP.
Ich habe auch schon mehrere Ideen für Programme, die sich problemlos in C64-Basic realisieren lassen sollten, z. B. kleine Spezial-Editoren oder einen Entscheidungsrechner gemäß dem von mir vertretenen moralphilosophischen Konzept. Eine im Emulatorfenster laufende Uhr mit mir besser zusagender Funktionalität im Vergleich zur Standard-Windows-Uhr ist in den schwierigeren Teilen fertig und bedarf wohl nur noch Fleißarbeit (in dem Stadium laufe ich immer gefahr, den Rest auf die lange Bank zu schieben).
Die Verzahnung von Basic und Assembler (lerne ich gerade) finde ich auch faszinierend, und warum solche Kombi-Programme schlecht sein sollen, leuchtet mir nicht ein; nicht Zeitkritisches wie Mernüstrukturen, wenige Fließkommaberechnungen oder String-Operationen in Basic zu machen scheint mir naheliegend, also ich wüsste nicht, warum es ein Programm verbessern sollte, wenn auch solche Teile mit der Kneifzange in Assembler programmiert sind.
Und ehrlich, wer würde heute ein Programm kaufen, dass in BASIC v2 geschrieben ist
Mit Verkaufen habe ich nichts im Sinn, siehe meinen Namen. Selbst wenn mir mal ein gutes Spiel (mit oder ohne Assembler-Anteilen) gelingen sollte, würde ich das irgendwo für die Allgemeinheit hochladen und gut.
Ich finde es reizvoll und die Kreativität anstachelnd, auf einer wegen des Alters der Hardware oder der suboptimalen Garbage Collection der Sprache belächelten Plattform etwas dennoch (jedenfalls für mich) Brauchbares hinzufummeln.
-
Wobei das 4 KB-CharROM halb verschwendet ist. 2 KB davon sind nur redundante, inverse Zeichenmuster, die man mit weiteren Romroutinen belegen könnte.
Mir ist nicht klar, ob dass so gemeint ist, dass die inversen Zeichenmuster besser bei Bedarf algorithmisch erzeugt werden sollten als im Speicher zu liegen, oder so, dass die reversen Zeichen überhaupt überflüssig seien; im ersten Fall würde ich mich fragen, ob das denn bei Verwendung vieler reverser Zeichen zügig genug ginge, im zweiten würde ich vehement widersprechen: Die Grafikzeichen sind sehr clever so konzipiert, dass sich die normale und die reverse Darstellung auf verblüffende Weise ergänzen, etwa für Abstufungen, oder bei den Zeichen für Einrahmungen, die revers zu Doppelrahmen werden.
Überhaupt werden die Commodore-Grafikzeichen unterschätzt und zu wenig gewürdigt - und werden beim C64 auch selten in ihrem Potential ausgeschöpft - wohl anders als beim PET, der (ohne extreme Hacks) keine Hires- oder Sprite-Grafik hat.
fehlenden lokalen Variablen
Nicht wirklich, die Variable, die in einer selbstdefinierten Funktion den Parameter aufnimmt, ist lokal. Sie kann also genau so heißen wie eine globale Variable und die beiden kommen sich nicht ins Gehege.
ein extrem wichtiges Element fehlt, die Funktionen mit Parameterübergabe und Rückgabe
Nicht wirklich, DEF FN macht genau das. Gut, nur ein und nur numerischer Parameter und die Funktionsdefinition muss in eine Zeile passen, aber immerhin. (Und wenn es nicht in eine Zeile passt, lassen sich Funktionen verschachteln.)
Ich wäre wohl bei Simon's Basic gelandet
Solche BASIC-Erweiterungen transformieren den C64 in einen anderen, mit der eigentlichen Plattform nicht mehr kompatiblen Computer. Mit der Hoffnung, mal ein Programm hinzubekommen, das vielleicht auch andere interessant finden und verwenden möchten (die ja nur höchst zufällig dieselbe Erweiterung zur Verfügung haben), ist das nicht vereinbar.
Die Verwendung von Simons' Basic ist also Ausdruck einer tieftraurigen Hoffnungslosigkeit. In diesem abgründigen Stadium der Depression bin ich zum Glück noch nicht ganz angelangt. (-;
Da muss man dann beim Kunden eben das Modul und das Programm abliefern.
Ach so, da ist also die Hoffnung im Gegenteil so groß, dass mal ein Programm gelingt, das andere so dringend haben wollen, dass sich denen zumuten lässt, sich dafür derart in Unkosten zu stürzen - wobei die Module inzwischen wohl Sammlerwert haben dürften.
In diesem abgründigen Stadium von Größenwahn bin ich zum Glück auch noch nicht ganz angelangt. (-;
-
Stand der SYS für den VC-20 in einen 64 Tips & Tricks? Oder hattest ein VC-20 Tips & Tricks in der Hand?`
Da stand der selbe SYS 58640 für den C64, findet sich auch im im Eintrag zu SYS auf c64-wiki.de bei den Beispielen.
-
Also bis vor drei Wochen, als ich die 3. Auflage von "64 Tips & Tricks" ergatterte, kannte ich SYS 58640 auch nicht. Leute zu ernierdrigen, weil sie Adresse und Funktion einer im Handbuch nirgends erwähnten Betriebssystem-Routine nicht kennen, dürfte auf potentielle neue Foren-User wenig einladend wirken.
Wie kann man bitte Reihe und Spalte festlegen für ein Print?
Die naheliegendtse Antwort gab bisher niemand:
The 8-Bit-Guy erklärt es am PET
(-:
-
Millimeter nach Zoll lässt sich ja umrechnen. Ich finde im Netz aber kein einziges Angebot für Endlospapier, wo dabei steht, ob sich die Angabe auf die Breite MIT oder OHNE Traktorrand bezieht.
Bei diesem "12 Zoll-hohen" oder "Din A4-hohen" Papier steht als Breite 24 cm. Das wären 9,44 Zoll, also im Rahmen, wenn das MIT Traktorrand bedeutet. Kommt der aber noch dazu, wäre es für den MPS-801 gemäß Anleitung zu breit.
Was für Papier kauft Ihr MPS-801-Nutzer denn?
-
Danke für die bisherigen Antworten, das ging ja wieder fix.
Bitte keine alternativen Drucker vorschlagen - dass der MPS-801 kein technisch hochwertiges Gerät ist, weiß ich, aber ich halte ihn für den am besten designten Drucker aller Zeiten - und das Retrocomputing dient bei mir ja nicht zuletzt der gehobenen Wohnkultur. Also wenn der nur halbwegs lesbar druckt, was er auch nur recht selten wird tun müssen, bin ich glücklich. Das Geräusch kenne ich aus einem Youtube-Video und finde ich, wenn es in real von der Lautstärke her nicht gerade die Trommelfelle perforiert, ziemlich cool.
Aha, also der Farbtank der Originalkassetten enthält ein Vlies, das zerbröselt sein kann - aber nicht muss, so dass man es manchmal doch noch mit Tinte reaktivieren kann? Oder kann man vielleicht zerbröseltes Vlies durch etwas anderes ersetzen?
Beim Papier hätte ich dann gern welches mit der Maximalbreite 10 Zoll - im Netz finde ich aber nur Endlospapier mit 8 oder 12 Zoll. Kennt jemand eine Bezugsquelle für 10-Zoll-Papier?
-
Ich erwäge die Anschaffung eines MPS-801, aber vorher hätte ich gern die Themenkomplexe Papier und Tinte halbwegs geklärt.
Da ich noch nie so einen Nadeldrucker für Endlospapier hatte, stehe ich zum einen bezüglich des Papierformats auf dem Schlauch. In der im Netz auffindbaren englischen Anleitung steht dazu:
"Paper width: 4.5 to 10" width (including tractor feed holes), 8 1/2" width (after tractor hole removed)"
Da verknotet sich mein Hirn: Der Drucker hat doch einen festen Abstand zwischen den beiden Traktorwalzen (heißen die so?), die in die Lochstreifen greifen, wie kann denn da die Papierbreite variabel sein?
Dann findet sich bei Endlospapier manchmal noch eine Höhenangabe - das meint die Höhe bis zum Knick bzw. zur Perforation, wo es gefaltet ist, richtig?
Dann zu den Farbbändern. Dazu findet sich der Anleitung unter der Überschrift "Replacing of the Inker":
"Turn over the ribbon cassette, remove the inker by pulling it out. Insert a new inker."
Das klingt für mich so, als hätten die ursprünglichen Farbbandkassetten eine Art Tintentank gehabt, den man aus der Kassette herausnehmen und separat ersetzen (gar auffüllen?) konnte. Im Netz finde ich dazu aber keine weiteren Informationen. (In diesem alten Thread hat das mal jemand erwähnt, es ist aber niemand darauf eingegangen.)
Bei Amazon gibt es offenbar noch passende, aber knackig bepreiste Farbbandkassetten - da steht nichts von separat ersetzbarer oder nachfüllbarer Tinte.
Ging das also nur bei den alten Farbbandkassetten? Die gibt es ja noch manchmal bei Ebay, allerdings wohl meist eingetrocknet. Lassen sich die mit irgendwelcher Tinte für diesen offenbar vorhandenen separaten Tintenbehälter wieder reaktivieren?
Danke im Voraus.
-
Wenn Dein Basic-Programm die Uhrzeit eh schon gezielt verändern kann, könntest Du in das Programm auch noch eine Tastaturabfrage einbauen, so dass man die Uhr zur Laufzeit durch Druck auf z.B. "+" und "-" schrittweise verstellen kann.
Interessanter Vorschlag, aber anderseits ist der Clou ja, dass sich die Uhr arbeitssparend selbst stellt. Mit 1-2 Sekunden Ungenauigkeit kann ich gut leben, aber ich behalte die Möglichkeit im Hinterkopf. (Für Ebay-Versteigerungen oder die Kaffepause im Atomkraftwerk sollte man die Uhr bis dahin freilich nicht nehmen - oha, ich brauche einen Haftungsausschluss.)Ich muss jetzt erst mal die mir vorschwebenden Hauptfunktionalitäten angehen - es droht Feature creep!
Vorsicht, in diesen Zeilen versteckt sich eine klassische race condition
Danke, die Korrektur lässt sich ja ruckzuck umsetzen. Mir war tatsächlich etwas mulmig, über mehrere Zeilen an TI$ rumzudrehen, aber als es dann beim Testen rund lief, habe ich die Bedenken wohl verdrängt. -
Mittlerweile habe ich festgestellt, dass die Uhr mal mehr und mal weniger nach geht - wohl abhängig davon, was gerade für Hintergrundprozesse laufen, während man die Batchdatei startet. Wahrscheinlich ist das auch von PC zu PC unterschiedlich je nach Systemleistung. Bei mir habe ich nun die Uhr im BASIC-Programm drei Sekunden vorgestellt, damit geht sie meist 1-2 Sekunden vor (das ist mir lieber, als wenn sie nach geht).
Wenn ich damit die Uhr mehrmals hintereinander starte, erwische ich meist spätestens beim 3. oder 4. Versuch eine, die genau oder nur eine halbe Sekunde falsch geht.
Hier noch mal das Einlesen der PC-Zeit und anschließend der Vorstell-Algorithmus (String nach numerisch, vorstellen, wieder als String zusammenbasteln für TI$):
Code- 20 open1,8,2,"zeit,s,r"
- 22 input#1,z$:ti$=left$(z$,6)
- 24 close1
- 26 h$=left$(ti$,2):h=val(h$)
- 28 m$=mid$(ti$,3,2):m=val(m$):mu=0
- 30 s$=right$(ti$,2):s=val(s$):su=0
- 31 rem mu = minuten-ueberlauf, su = sekunden-ueberlauf
- 32 s=s+3:ifs>59 then s=s-60:su=1
- 34 if s>9 then s$=right$(str$(s),2)
- 36 if s<10 then s$="0"+right$(str$(s),1)
- 38 ifsu=1 then m=m+1:ifm>59 then m=m-60:mu=1
- 40 if m>9 then m$=right$(str$(m),2)
- 42 if m<10 then m$="0"+right$(str$(m),1)
- 44 ifmu=1 then h=h+1:ifh>23 then h=h-24
- 46 if h>9 then h$=right$(str$(h),2)
- 48 if h<10 then h$="0"+right$(str$(h),1)
- 50 ti$=h$+m$+s$
-
Danke.
-
Jetzt nach 0 Uhr merke ich, dass in der ersten Zeile der Batch-Datei (hatte ich im Netz geklaut) ein Fehler sein muss, da wird für die ersten beiden Stellen nicht "00" generiert, sondern " 0", also "LeerstelleNull".
Ich pausiere jetzt wohl bis Freitag.
-
Danke.
Durch wildes Rumprobieren hatte ich irgendwann eine funktionierende Lösung, dann habe ich die Parameter nach und nach wieder weggelassen, und nun geht es wieder nur mit dem Aufruf der .prg-Datei wie am Anfang schon mal.
Also bei mir funktioniert nun Folgendes: Die Batchdatei liegt im selben Verzeichnis wie das BASIC-Programm; das Verzeichnis ist auch in Vice unter Peripheral settings / Drive 8 / Directory eingetragen - jetzt merkt er sich das komischerweise wieder.
Batchdatei:
Zuweisung in uhr.prg:
TI$ läuft damit synchron zur PC-Uhr. Aber etwas versetzt: Der Emulator geht 3-4 Sekunden nach; die Zeit brauchen wohl die Batch-Datei zum erstellen der Datei "zeit" und zum Starten von Vice sowie Vice zum Lesen der Datei. Nun brüte ich an einem Algorithmus, um die Uhr 4 Sekunden vorzustellen - gar nicht so leicht, da man Überläufe bedenken muss.Was ich auch noch feststellte: Wenn man das Emulatorfentser verschiebt, ist die Uhr in der Zeit eingefroren und geht dann um die Zeitspanne des Verschiebens zusätzlich nach - also nach dem Start sollte man das Fenster tunlichst nicht mehr anfassen.
-
Vielen Dank, der String war tatsächlich unsichtbar 7 Zeichen lang, mit der Kürzung auf 6 Zeichen funktioniert die Zuweisung an TI$.
Wenn ich Vice (x64.exe) in der Windows-7-Eingabeaufforderung mit -h, -help oder -? starten will, passiert gar nichts, es kommt in der nächsten Zeile nur wieder der Prompt. Ohne Parameter startet der Emulator.
-
Ich meine, vorhin hätte das funktioniert, aber nun geht es doch nicht mehr. Zwar kann ich mit ...
... den Wert, den die Batchdatei in die Datei "zeit" (ohne Dateiendung) geschrieben hat, der Variablen z$ zuweisen - print zeigt es korrekt sechsstellig an - aber wenn ich dann im Programm "ti$=z$" zuweisen will, bricht es ab mit ILLEGAL QUANTITY ERROR.
Das andere Problem wollte ich umgehen, indem ich an das BASIC-Programm manuell ".prg" anhängte und einfach dessen Dateinamen in die Batch-Datei schrieb, um den Emulatior damit zu starten (Vice ist Standardprogramm für die Endung) - aber wenn ich Vice so starte, hat er die Einstellung bei "Peripheral settings" - "Drive 8" vergessen, dass er nicht ein Image File als Floppy ansehen soll, sondern ein normales Verzeichnis (wo die Datei "zeit" liegt).
-
Ich wähne mich fast am Ziel - mein BASIC-Programm kann jetzt die vom Windows-Batch-Programm erzeugte Datei mit der aktuellen Zeit einlesen.
Wonach ich mir gerade erfolglos die Finger wundgoogelte: Wie kann ich Vice in der Batchdatei mit einem Parameter so starten, dass er gleich das BASIC-Programm mitstartet? Möglichst ohne Verwendung von Image-Files, einfach die BASIC-Programmdatei?
-
Zitat von Mac Bacon
Eine Alternative wäre: Man startet den Emu über ein Wrapper-Skript, das die aktuelle Uhrzeit in eine Datei auf dem Hostsystem schreibt. Das C64-Programm versucht diese Datei zu öffnen und zu parsen.
Interessanter Ansatz! Nachdem ich etwas zur Windows-Batch-Programmierung gegoogelt habe, bin ich nun so weit:
in der erzeugten txt-Datei steht dann (um 10 Uhr 50 und 51 Sekunden generiert): 105051Nun müsste man da von BASIC aus drankommen. Datei-Operationen in BASIC habe ich aber noch nicht repetiert.
-
Zitat
Abgesehen von den hier bereits vorgestellten Lösungen
Kurze Intervention: Zu meinem Ziel (Uhr mit Gedächtnis für BASIC im Emulator) sehe ich bisher keine Lösung. GEOS lässt mich völlig kalt.Zitatvielleicht ganz gut so, daß VICE und andere Emulatoren die Anfrage im OP nicht so umsetzen wie gewünscht - es dürfte genügend Programme geben,
Wäre ja kein Problem als Option.
-
Ja, wäre nett; als erste Fingerübung in BASIC seit etwa 20 Jahren versuche ich mich zur Zeit an einer großformatigen Digitaluhr (in meinem Avatarbild werden schon ein paar Zahlen auf den Bildschirm gemalt) mit Alarm, Zeitzonen und Countdown - als Killerfunktion inklusive Presets für Ziehzeiten meiner Lieblingsteesorten. Wäre halt fein, die Uhr im Emulator nicht immer neu stellen zu müssen.