Posts by pgeorgi

    Dann habe ich meinen Augen aber nicht getraut: gestartet, lief los. Bis dann am ersten Screen die Meldung kam "Taste für weiter" dauerte es doch recht lang. Also mal Run/Stop gedrückt - BREAK IN XXX. :hae: List eingegeben...: es ist das Basic-Programm - sogar noch mit allen REM-Zeilen!

    Das nicht unüblich. Viele BASIC-Compiler aus der Zeit waren selber in BASIC geschrieben, dann aber üblicherweise mit sich selber compiliert. Auf die Art hat man auch gleich einen umfassenden Test dafür.

    Ich glaube, ich habe mich nicht ganz deutlich ausgedrückt... ich redete vom Compilat! Das angebliche Compilat lässt sich mit RUN/STOP unterbrechen und ist dann ein ganz normales Basic-Listing mit allen REM-Zeilen! Wie gesagt, ich rede da von meinem Lieblings-Monolithen, Monopoly!

    Ich hab dein "test2out" mal durch nen Disassembler geschickt. print "hallo" liegt als Basic Code vor, der auch tatsächlich an den Basic Interpreter übergeben wird (und der dann auch RUN/STOP auswertet), während die äußere Schleife (10 ... :GOTO 10) zu Assembler optimiert wurde.

    Dass das Ding so groß ist, scheint vor allem daran zu liegen, dass über 2KB Library-Routinen reinkopiert wurden, die - auf den ersten Blick - nie ausgeführt werden.


    Die "Optimierung" eines solchen Systems wäre, dass das Ergebnisprogramm nicht jede Zeile linear im Basicprogramm sucht, sondern jeweils die richtige Startadresse geladen und die Zeile ausgeführt wird (wobei irgendwelche Sprünge "weg" vom Compiler abgefangen wurden, damit das Programm die Kontrolle vom Basic-Interpreter zurückbekommt), und dann die nächste Zeile (mit bekannter Adresse) geladen und angesprungen wird. Man spart sich also Teile des Basicinterpreters (und der lineare Scan ist bei großen Programmen tatsächlich nicht zu vernachlässigen)


    In dem Fall sollte das Basic-Listing etwas anders aussehen als das Original, insbesondere keine GOTOs und so weiter.


    Ich weiß nicht, ob _ich_ sowas einen Compiler nennen würde, aber das Ding scheint schon etwas zu tun, was prinzipiell einen Effekt haben dürfte.

    ECDSA mit 256 bit, SHA-256 fürs Hashing

    RSA-2048 mit SHA-256 fürs Hashing als Fallback (den man sich erstmal sparen könnte, wenn ECDSA während der Pandemie gebrochen wird, haben wir andere Sorgen)

    DEFLATE für die Kompression

    Base45 kodiert

    Daten in JSON verpackt


    (Quelle: https://eur-lex.europa.eu/lega…TML/?uri=CELEX:32021D1073)


    Also bis auf JSON sieht das alles machbar aus 8)

    Naja, und der QR Code muss noch irgendwie ins System, aber vielleicht hilft da ja der andere Thread mit dem Scanntronik-kompatiblen Video-Digitizer ;-)

    Die setzen vermutlich zumindest das Label ein. Das ist das eigentliche Problem, finde ich. Das Extra-Byte statt dem BIT ist ja dann das Sahnehäubchen.

    Na ja, aber wie willst du das Label einsetzen, wenn du den Bit-Befehl zusammenlässt? Da bleibt IMO nichts anderes übrig als den Wert $2C als separaten Bytewert anzuzeigen.

    Code
    1. bne foo+1
    2. lda #$01
    3. foo bit #$02a9

    Man spart sich damit den Sprung nach lda #$01, führt aber dafür nen unnützen Befehl aus (oder mehrere, wenn da einige Fälle zusammenkommen).

    Zu den Extras: Die Diskettenversion enthält angeblich folgende Dateien:


    T/EX 154 BLOCKS

    TUTORIAL T 116 BLOCKS

    DEMO < 60 BLOCKS


    Wer sich also schon immer gefragt hat, was die T/EX Datei in seiner Sammlung macht (die ja angeblich das Modul braucht, also ohne eher funktionsarm sein dürfte), hier wäre möglicherweise ihr großer Auftritt.

    Oh, in der Beschreibung zu "sound" steht etwas mehr zum Notenformat, ich vermute, das lässt sich auf mdata übertragen:

    Die "Zahl mit ' ' vorangestellt" muss zwischen 0 und 32767 sein, was mir schwer nach SID Register (und damit nach Frequenzwert) klingt.

    Oktaven gehen von 1 bis 8, Noten von 1 bis 12, je Halbton (C, Cis, D, Dis, E, F, ...)


    Natürlich ist auch die Doku wieder offensichtlich falsch: "sound 2, 0" spielt natürlich _keine_ Pause in der 2. Oktave (wie soll das auch gehen?), sondern auf der zweiten Stimme (immerhin steht weiter oben, dass der erste Wert die SID Stimme angibt)


    Damit ist "irgendwas0" wirklich als Pause zu verstehen.

    Das geht wunderbar auf:

    Oktave 5, Note 8, 10/60 sek

    ß0, 2 - 2/60 sek Pause?

    Oktave 5, Note 8, 10/60 sek

    ß0, ... - Pause


    Der "Trick" ist, dass die das weiter oben darstellen als Note,Dauer,Note,Dauer, um dann eins der Formate der Note als "Oktave und Note durch Komma getrennt" zu definieren (während das andere Format vermutlich das ß0 Dingens ist)


    Aber die wissen in der Definition von "voice" auch nicht, wofür das D in Attack-Decay-Sustain-Release steht (wie es jedes C64 Handbuch erklärt, WIMRE), von daher wer weiß, was für Leute das Handbuch geschrieben haben...

    Ich kann nicht mehr schlafen, wenn ich nicht weiß, was dieses "ß0" in dem Listing macht.

    Es gibt eine mögliche Stelle in der Doku zu mdata, an denen das was-auch-immer-ß-eigentlich-heißen-soll (Vorschlag weiter oben war dazu ein Pfeil nach oben).


    Ich probier mich mal an ner Übersetzung der Doku zu mdata (ET Manual_FR.pdf, Seite 16):


    MDATA hinterlegt die Notenwerte die dafür bestimmt sind, später gespielt zu werden.

    Syntax: MDATA NO1, DU1, NO2, DU2, NO3, DU3, etc...


    NO1 repräsentiert den Notenwert, der gespielt werden soll.

    Es gibt zwei mögliche Darstellungen:

    - Eine Zahl nach einem " " [Anm.: unklar, ob da zum Beispiel ein Pfeil nach oben rein sollte, den die Druckerei nicht zur Hand hatte.]

    - Die Zahl der Oktave und die Zahl der Note, getrennt durch ein Komma.


    DU1 repräsentiert die Spieldauer in 60tel-Sekunden.


    Anmerkung 1: Um Musik mit mehreren Stimmen spielen zu können, reicht es, die Partitur in separate Abschnitte zu teilen, wobei jeder Abschnitt von einer Stimme gespielt wird. Damit EXTRA-TOOL die Abschnitte unterscheiden kann, muss das Ende eines Abschnitts mit einem '#' bezeichnet sein.


    Anmerkung 2: Jede MDATA-Instruktion muss in einer Zeile beginnen. Keine Instruktion darf auf zwei Zeilen desselben Stücks aufgeteilt sein. Andernfalls betrachtet EXTRA-TOOL das Stück als beendet. [Anm.: Ein Chaos...]


    Anmerkung 3: MDATA-Instruktionen sollen vom Programm wie REM übergangen werden. Sie werden ausschließlich von MCOPY gelesen.


    --

    mcopy kopiert eine Partitur im MDATA-Format in einen Bereich am Ende des Speichers


    --

    play spielt die Partitur, die per MCOPY in den Spezialbereich kopiert wurde. Während des Abspielens kann der Nutzer weiter arbeiten (und zum Beispiel BASIC Programme ausführen)


    [edit: das "#" ist gefunden: Zeilen 16168 und 16268.]


    Es gibt also drei lange Kolonnen von Note/Zeit-Werten in zwei Kodierungen:

    • Oktave,Note,zeit und
    • ß0,zeit (ne andere Ziffer nach ß hab ich nicht gesehen).

    ß0, zeit würde ich als eine Art Pause interpretieren. Es ist nicht definiert, was mit der Zahl in dieser Notation passieren soll, aber nehmen wir mal an, es seien Hertz: bei 0 Hertz passiert nicht viel.

    Das Modul gibts auch nicht als "Extra", der Zusatzkram wurde auf Diskette oder Kassette verkauft. Von daher wird "TOOL 64" genau das Ding da sein, nur halt ggf. mit oder ohne Handic-Logo.

    Das Handbuch (aber soweit ich das sehe, nicht das Programm selbst) für den "Extra"-Teil findet sich auf commodore.software (aber nicht, dass ich nach der Lektüre sehr viel schlauer wäre, die mdata nun zu interpretieren ist)

    Also wenn ich das Angebot nicht mißverstehe, verkauft hier jemand eine "Tool 64"-Cartridge und ein "K7 Extra Tool 64", jeweils mit "digitaler Anleitung" in einem Set für nur 190 Tacken ;)

    https://fr.clasf.com/commodore…t-en-france-26416944/?p=1

    Was mich allerdings stutzig macht, ist daß ich auf dem Foto beim besten Willen weder ein Modul noch eine Diskette oder sonst irgendwas in Richtung Speichermedium sehe.

    Und für den abgebildeten Kram wären 190€ selbst bei hiesigen Mondpreisen etwas arg sportlich.

    Aber wenn jemand ein riesiges Interesse an dieser Basic-Erweiterung hat, könnte er den Verkäufer ja anhauen, zumindest mal Bilder reinzustellen oder so.

    Der schwedische Ableger vom Modul ist hier beschrieben: https://commodore.software/dow…es-roms/15676-the-tool-64, von daher kann man sich schon mal die Cartridge in ihrer vollen Pracht ansehen. https://github.com/dirkwhoffmann/virtualc64/issues/430 diskutiert das noch bissel weiter, Freezer und ähnliches hatte das Teil wohl alles nicht.

    Dafür gibts unter dem Link auch ne Anleitung auf Englisch, in der auch klar wird, dass es dasselbe Produkt von Micro-Application ist.


    [edit:] Oh, unter dem ersten Link gibts auch ein Archiv, das u.A. das Handbuch zum "Extra" enthält - mal schauen, wie mdata funktioniert.

    Cool wäre, das "Tool" Modul nachzubauen.

    Und gleich den "Extra Tool" Code mit in dem Modul integrieren.

    Das "Tool" gäbe es ja sogar, wobei es sicher netter wäre, wenn es keinen Basic-Speicher klaut. Dafür gibt's sogar ein Handbuch, auf Italienisch aber hey...


    Das "Extra" ist noch nicht gefunden und die Semantik einiger Befehle ist zumindest mir nicht auf den ersten Blick einleuchtend.

    Das war irgendeine Kombination mit "Tools 64" und eben diesem "Extra Tools 64" als Erweiterung. War glaube ich ein Modul oder zu einem Modul und das für die Franzosen sowas in der Art wie für uns Deutsche das Simons BASIC. Das war dort relativ bekannt (deshalb wohl keine extra Erwähnung in dem Heft beim Listing) und bei uns kennt das auch heute noch "keine Sau". ;)

    Das Modul hat sich auch noch in andere Regionen verirrt (außer eben Deutschland), es gibt zB ein schön ausführliches italienisches Handbuch auf https://archive.org/details/tool64/. Nur dieses "Extra" scheint partout nicht aufzutreiben zu sein.


    https://www.oric.org/ftp/ceo/c…e/LaCommode10mai84ocr.pdf Seite 39 vergleicht es mit Simon's Basic: Direkt im ersten Satz ein Hinweis, dass es ein französisches Produkt ist, Lokalpatriotismus funktioniert halt. Dass es nur die Hälfte kostete, hat vermutlich auch nicht geschadet.


    Dein Schneider CPC Buch ist übrigens vom gleichen Verlag (der die französischen Übersetzungen für Data Becker gemacht hat), daher wohl das Crossover zu nem C64-Produkt.

    Eine Erweiterung auf Diskette oder Kassette für eine Cartridge-Erweiterung. Muss man auch erstmal drauf kommen... Für das Intro des Spiels hätte man also das Modul drin haben müssen, die Erweiterung laden, dann das Intro, das wiederum das Spiel lädt? Sinnvoll...


    Damit finden sich aber ein paar weitere Hinweise: Vor 5 Jahren wollte das noch wer für 35€ verticken, Modul (Cartouche) + Kassette (K7 = ka-sept = cassette)

    https://www.befr.ebay.be/itm/322159591285?oid=322159591285


    Wow, das ist aber dann wirklich sehr obskur und anscheinend mehr oder weniger verschollen.

    Es gibt zwar auf CSDB ein "Tool 64" aber das scheint es nicht zu sein.

    Das könnte das Basismodul sein (laut Kommentar auf der csdb wars ursprünglich ein Modul). Laut Screenshot ist das von "Micro-Application", während die Werbung, die Snoopy ausgegraben hat, ein "MA Software" Logo und ne "MA 346" Produktnummer auflistet. Das Logo passt von der Idee her zu dem von https://fr.wikipedia.org/wiki/Micro_Application

    Die Beschreibung des Spiels im ersten Listing passt schon grob zum Konzept des zweiten (soweit sich das mit einmal überfliegen erkennen lässt).

    Möglicherweise hat der Autor des Spiels zur Redaktion gehört, jedenfalls taucht er auch in anderen Magazinen im Impressum auf, ohne sonst nochmal Erwähnung zu finden. Das könnte, bei einer eh schon etwas dünnhäutigen Redaktion, vielleicht auch erklären, warum Probleme mit dem ersten Teil des Listings unter den Tisch fielen.

    hey, very cool!


    Geh, richt ihm doch bitte aus, ich bin der größte Fan vom Crazy Jumpman bin - seit 37 Jahren! Das freut ihn sicher!


    Ich bin noch immer happy, dass Du mit Deinen exzellenten Kenntnissen helfen kannst, ein großartiges Spiel noch großartiger zu machen!!


    Gibts eigentlich schon was neues? :)

    https://codeberg.org/pgeorgi/crazy-jumpman ist jetzt erstmal der Code, zusammen mit zwei Releases (Original von 1984 und was es bisher an Verbesserungen gab).

    Ansonsten habe ich die offenen Themen in den Issue Tracker geschrieben, damit sie nicht verloren gehen.


    Viel getan hat sich in den letzten Wochen nicht, es gab zu viel anderes zu tun...

    Ich hab Peter Menke ausfindig gemacht, er ist mittlerweile bei Siemens Energy tätig. Auf meine Frage, was mit unserer Weiterentwicklung ist (inkl. Veröffentlichung des reverse engineerten Assemblercodes), antwortete er:

    Quote

    Selbstverständlich dürfen sie das Spiel gerne weiterentwicklen!

    Allerdings nur unter einen kleinen Bedingung:

    Sie schicken mir einen Link, damit ich die neuen Versionen auch ausprobieren kann! 😉

    Ich denke, das kriegen wir hin :-)


    Von daher räume ich demnächst mal etwas auf und veröffentliche, was es bislang gibt "offiziell".

    Weil es nicht so ganz offensichtlich ist (oder war, als ich gefragt habe), welche Teile wie lizenziert sind und es eh schon zu viel laissez-faire gibt (und zum Beispiel Sachen gern mal als PD bezeichnet werden, die es nicht sind).

    Nachdem ich suchen musste, wollte ich a) mich vergewissern, ob ich das richtig ausgegraben haben und b) die Situation gerne mal am Stück beschrieben sehen.

    Zu viel Laissez-faire? Wie meinst Du das? Und MIT fällt darunter, GPL aber nicht?

    Ich meinte nicht Transwarp, ich meinte die Nutzung von Software im Retrobereich: Wenn man nicht sehr plakativ draufschreibt, unter welchen Bedingungen was veröffentlicht ist, wird gern mal "PD" vermutet.

    Da die Lizenzbedingungen bei Transwarp relativ schlecht zu finden waren, würde ich mich nicht wundern, wenn das irgendwann irgendwo auftaucht, ohne dass dort ein Gedanke auf die GPL verwendet wurde.

    Weil es nicht so ganz offensichtlich ist (oder war, als ich gefragt habe), welche Teile wie lizenziert sind und es eh schon zu viel laissez-faire gibt (und zum Beispiel Sachen gern mal als PD bezeichnet werden, die es nicht sind).

    Nachdem ich suchen musste, wollte ich a) mich vergewissern, ob ich das richtig ausgegraben haben und b) die Situation gerne mal am Stück beschrieben sehen.

    Dürfte an Fertigungstoleranzen liegen: https://www.lemon64.com/forum/…ecebf05dd31e2ee94dbf1c50b zitiert dazu Ben Daglish: "As far as I'm aware, it was just to do with the quality of the components - accurate frequency filtering just wasn't viable on such a small cheap (and early!) chip, so Commodore made do with what they had. Basically, one could apply (say) a band-pass filter centered around X Hz, but X would vary by a fair percentage from chip to chip."