Hallo Besucher, der Thread wurde 8,7k mal aufgerufen und enthält 32 Antworten

letzter Beitrag von detlef am

Abacus Tiny Pascal von 1980, für C64 und PET/CBM

  • Hallo!


    Ich beschäftige mich mit dem P-Code Compiler / Interpreter „Tiny Pascal“ von Abacus Software. Es war 1982 eines der ersten Pascal-Systeme für den C64.
    Womöglich war es sogar das erste Pascal-System. Es ist von 1980 – und somit älter als der C64 selber.


    Bitte jetzt keine Hinweise, dass es Moderneres gibt :D Ich interessiere mich nur aus historischen Gründen dafür. Die Entstehungegeschichte ist ziemlich interessant:


    Es beginnt im Jahr 1978. Da wurde im „Byte“-Magazin ein Pascal-Compiler in Basic abgedruckt („Tiny Pascal“). Verteilt auf drei Ausgaben. Ursprünglich war das Programm nur für den Radioshack TRS-80 gedacht. Verschiedene Software-Firmen haben das System dann aber kommerziell weiterentwickelt. Abacus hatte 1980 Versionen für Commodore PET und Apple II herausgebracht. Ab 1982 gab es auch eine C64-Version davon. In den üblichen Download-Archiven findet man sie als „Abacus P-Code Compiler / Interpreter“.


    Das war eines der ersten Produkte der damals noch jungen Firma Abacus. Wer die nicht kennt: Das ist ein amerikanischer Buch- und Softwareverlag. Die hatten in den 80er und 90er Jahren eng mit Data Becker zusammengearbeitet. Zum Teil hatten beide Firmen sogar die gleichen Commodore-Bücher im Programm, nur in anderer Sprache.


    Aber zurück zu Tiny Pascal. Ich habe mich in der Commodore-Suchmaschine bei cbm8bit.com dumm und dämlich gesucht. Es gibt offenbar kein original Disketten-Image dieser Software. Die Version für PET / CBM ist wohl komplett verschollen. Für den C64 findet man Tiny Pascal aber noch. Leider als Einzelprogramme verstreut über mehrere Disks. Zum Teil sind die Dateien auch kaputt.


    Ich habe nun ein D64-Image angelegt, mit allen heilen Dateien, die ich davon finden konnte, siehe Anhang.
    Und: Es funktioniert … bis auf den Interpreter ;(


    Schaut es euch mal an. Der Ablauf ist folgender:


    - Man schreibt mit dem Editor ein Pascal-Programm und speichert es ab. Load/Save geht im Menü mit der Funktion „F“ für Filter. Ein kleines Testprogramm habe ich beigelegt.


    - Anschließend lädt man diese Datei in den Compiler. Der übersetzt den Quellcode dann in P-Code. Angeblich hat man sich an UCSD Pascal orientiert, stand in einer Uralt-Zeitschrift.
    Bis hierhin funktioniert noch alles!


    - Danach soll man den „P-Code Interpreter“ aufrufen, der den Code dann direkt ausführt. Es gibt auch eine Trace-Funktion, mit der man Befehl für Befehl abarbeiten kann.


    Soweit die Theorie. Aber leider funktioniert der Interpreter nicht! Er stürzt einfach nur ab.
    Vielleicht ist die Programmdatei kaputt. Es könnte aber auch sein, dass noch irgendeine Maschinensprache-Routine benötigt wird, die man vorher laden muss. I don't know!


    Jetzt die Frage in die Runde:
    Wer kennt dieses Pascal-System und kann es zum Laufen bringen?
    Hat vielleicht jemand von Euch das Original noch in der Sammlung oder zumindest eine funktionsfähige Kopie? Die verschollene CBM-Version wäre auch interessant.


    Tiny Pascal für den C64 wurde wohl nur sehr kurz verkauft. Schon 1983 / 84 kamen bessere Compiler auf den Markt, wie G-Pascal, Pascal 64 und diverse andere.


    Viele Grüße


    Gree

  • In dieser alten Commodore-Zeitschrift wird Tiny Pascal für den PET/CBM kurz erwähnt:


    Torpet Juli 1981


    Auf Seite 20, unten rechts.


    Demnach gab es Versionen auf Kassette und Diskette. Tape kostete 40 Dollar, auf Disk war es 5 Dollar günstiger.
    Im Vergleich zu TCL Pascal war es nur ein Zehntel des Preises.


    Dafür war es eben ein sehr alter Compiler, größtenteils in Basic.
    Konnte dadurch aber leicht angepasst werden.

  • Hab auf Planetemu das hier gefunden:


    http://www.planetemu.net/roms/commodore-c64-applications-t64


    Kannst ja mal ausprobieren.

  • Hab auf Planetemu das hier gefunden:


    http://www.planetemu.net/roms/commodore-c64-applications-t64


    Kannst ja mal ausprobieren.

    Danke, habe ich gleich mal ausprobiert.


    Der Compiler funktioniert. Das Testprogramm von meiner D64-Datei wird damit in P-Code übersetzt.
    Aber der Interpreter ist leider auch kaputt.


    Hier bricht er sogar schon in Zeile 10 im Basic ab. Da sind zwei Bytes bei 2057 und 2058 falsch. Da sollte wohl beim Print-Befehl SPC(9) stehen, anstelle des Kauderwelsch.
    Womöglich hat das jemand von einer ausgeleierten Kassette mit Lesefehler kopiert.


    Ich habe die beiden Bytes mal per Monitor repariert. Jetzt startet der Interpreter und liest die Code-Datei ein. So wie bei meinem D64-Image.
    Danach stürzt der Interpreter beim Ausführen aber leider auch wieder ab. Der eigentliche Interpreter-Vorgang wird von einem Maschinenspracheprogramm übernommen.
    Vielleicht sind da in der Programmdatei noch mehr kaputte Bytes. Dann funktioniert es natürlich nicht.


    Interessanterweise ist Dein Interpreter etwas länger als meiner. Die Version in meiner D64-Datei ist 29 Blöcke lang, Deiner hat 30 Blöcke.

  • gerade gesehen. Wurde das vielleicht gesucht?


    Das ist teilweise von 1980.


    Man, waren das noch zeiten.

    Ja genau das ist es. Tiny Pascal von Abacus.


    Es sind die gleichen Dateien wie bei mir auf der Disk.
    Leider auch mit dem gleichen Fehler: Der Interpreter funktioniert nicht.
    Anstatt den P-Code auszuführen stürzt das ganze ab.


    Ich habe Deine Disk nochmal um mein Testprogramm in Pascal ergänzt.


    Der Ablauf bei Tiny-Pascal war folgendermaßen:


    1. Man schreibt mit dem Editor ein Pascal-Programm und speichert es ab.
    Das ist testweise die Datei test.source


    2. Man lädt das Pascal-Programm in den Compiler. Der wandelt es in P-Code um.
    Das ist testweise hier die Datei test.code


    3. Man startet den Interpreter und lädt den P-Code. Der Interpreter soll dann das Programm ausführen. So wie ein Interpreter es überall macht.
    Aber leider, leider, stürzt das ganze beim Interpretieren einfach nur ab. Man kann zwar den P-Code laden. Einfach im Interpreter mal "TEST" eingeben. Beim Ausführen ist dann aber Schluss.


    Hmmm ... was ist da los?
    Oder war das Ding womöglich mal mit einem Dongle geschützt?


    Testprogramm siehe Anhang.

  • Also, ich habe in dem code des interpreters sprunge nach


    $c389
    $ca1c


    gefunden. gibt es ein commodore computer der dort vielleicht den kernal hat

  • Beim Basic 2 des CBM 3032 sind das gültige Einsprung-Adressen (READY und STROUT).
    Ich werde den morgen mal auf dem 3032 testen.


    EDIT: Ne, Quatsch. Der Interpreter ist ein C64-Programm (Startadresse $0801).

  • Ja, aber wie gesagt. Startadresse $0801. Das läuft nicht auf dem 3032.

  • so, das wird etwas schwieriger



    schau dir mal den code an

  • Das ist ja alles Basic (bis auf den Interpreter). Das war mir vorher gar nicht aufgefallen.
    Und ein grausamer Zeileneditor. :D


    Die POKEs in den Basic-Programmen sprechen für C64.
    Ich werde mir morgen mal den Interpreter anschauen. Vielleicht hat jemand versucht, das Ding auf C64 umzubauen und dabei das Assembler-Programm verschoben.
    Das wird man schnell sehen.

  • Auf die Ladeadresse kann man nix geben- einmal am 64er geladen und wieder gespeichert (anstatt ein Filecopy benutzt) und schon steht da 0801 drin. Dann läufts aber nicht mehr auf den PET/CBM, weil die nur absolut laden können- ändert mal die Ladeadresse auf 0401 und versucht es auf dem PET zu starten.


    Der Bereich Cxxx wäre auch beim VC20 Teil des BASIC-Interpreters- oder beim 64er, wenn man eine BASIC-Erweiterung lädt. Letzteres fällt hier aber wohl aus?