Hallo Besucher, der Thread wurde 14k mal aufgerufen und enthält 95 Antworten

letzter Beitrag von BlondMammuth am

FORTH für den Commodore ? !

  • Habe das (orginal) Data Becker FORTH für den C64. Habe es mir damals... kleinen Moment... hier ist die Rechnung... am 19.11.1985 für DM99 gekauft, da wir FORTH als Programmiersprache im Informatikuntericht hatten. Man konnte ganz gut damit programmieren, ist aber glaube ich schon fast ausgestorben.
    Das Data Becker Forth beinhaltet:
    -FIG-Standard ist vollständig berücksichtigt
    -komfortable Sound-Programmierung
    -Befehle zur HIRES- und Block-Grafik
    -spezieller FORTH-Assembler
    -komfortabler Editor
    -Programmierhilfen wie DUMP, HELP und TRACE
    -SCREEN-FILE mit 137 Screens zu 16 Zeilen zur Verwaltung selbstdefinierter Wörter
    Soweit die Produktbeschreibung.


    Einfach zu erlernen? Naja, das muss jeder für sich selbst entscheiden. Die UPN-Notation ist ziemlich gewöhnungsbedürftig...
    Effizient? Kommt darauf an was man machen will! Schnell allemal da Compilersprache.


    Ciao maibus

  • @compudiri


    Ja ja, meine sprachliche Entwicklung ist halt bei CBM V2 stehengeblieben. =)


    Auch wenn ich zu 75% richtig lag, was in jeder Prüfung ausreicht. Der Computer urteilt "Syntax Error". Obwohl auch das bei Forth, wenn überhaupt, und garantiert anders, wohl dramatisch kürzer getadelt wird.


    fröhlicher gruss
    Filou

  • Ich habe das FIG-Forth vom C64 auf dem CBM portiert.
    Dabei sind aber nur Tastatur- und Schirmausgaben fertig, noch keine Disk-I/O.


    Ich lese immer wieder von "schnell da Compilersprache"... So etwas schreiben nur Leute, die nicht wissen, wie "threaded code" "compiliert" wird - das ist bei weitem nicht so schnell, wie ein klassisches Compilat, wie z.B. durch den cc65.
    Tatsächlich war ich von der Geschwidigkeit so enttäuscht, dass ich es nicht weiter verfolgt habe.
    Schneller als interpretiertes BASIC ist es aber allemal.

  • Wo ihr "gerade" bei Forth seid (eh nur 11 1/2 Jahre her):

    Weiß zufällig jemand, wo ich "freesoft forth" herkriegen könnte? Meine Suchen haben bisher nichts erbracht. Ich suche danach, weil ich sehen will, wie die Multitasking verwirklicht haben (es wird so kolportiert im 64er-Sonderheft 12 Seite 50).

  • Wo ihr "gerade" bei Forth seid (eh nur 11 1/2 Jahre her):

    Weiß zufällig jemand, wo ich "freesoft forth" herkriegen könnte? Meine Suchen haben bisher nichts erbracht. Ich suche danach, weil ich sehen will, wie die Multitasking verwirklicht haben (es wird so kolportiert im 64er-Sonderheft 12 Seite 50).

    Wenn ich mich richtig erinnere, ist "Freesoft-Forth" der Name für die PD-Veröffentlichung von "ultraFORTH 83" gewesen. Letzeres findest du z.B. hier.

  • Wo ihr "gerade" bei Forth seid (eh nur 11 1/2 Jahre her):

    Weiß zufällig jemand, wo ich "freesoft forth" herkriegen könnte? Meine Suchen haben bisher nichts erbracht. Ich suche danach, weil ich sehen will, wie die Multitasking verwirklicht haben (es wird so kolportiert im 64er-Sonderheft 12 Seite 50).

    Wenn ich mich richtig erinnere, ist "Freesoft-Forth" der Name für die PD-Veröffentlichung von "ultraFORTH 83" gewesen. Letzeres findest du z.B. hier.

    He super, vielen Dank für die prompte Antwort! :thnks:

  • Ich suche danach, weil ich sehen will, wie die Multitasking verwirklicht haben

    Ich kenn es dort nicht konkret. Ich fand auch interessant, wie im Buch "Die Programmiersprache Forth" von Zech vorgestellt (2. Auflage, Kapitel 7.7, S. 262, siehe C64 Wolke). Dort ist der Taskswitcher zwar in 8080 Assembler, aber sicher keine Problem das auf 6502 zu übertragen oder zu erfassen, wie das geht.

  • Ich suche danach, weil ich sehen will, wie die Multitasking verwirklicht haben

    Ich kenn es dort nicht konkret. Ich fand auch interessant, wie im Buch "Die Programmiersprache Forth" von Zech vorgestellt (2. Auflage, Kapitel 7.7, S. 262, siehe C64 Wolke). Dort ist der Taskswitcher zwar in 8080 Assembler, aber sicher keine Problem das auf 6502 zu übertragen oder zu erfassen, wie das geht.

    Irgendwie müssen sie ja den call stack jedesmal umkopieren, oder sie haben den von vorn herein ausgelagert (was die Sache langsamer machen würde). Ich würde eher auf eine Kopier-Session tippen, die zwar teurer ist, aber insgesamt trotzdem effizienter.

    Ich habe unlängst ein paar Versuche mit durex-Forth gemacht, das vermutlich (weil genug Zeit vergangen) effizienter sein wird. Aber dieses Feature bietet es nicht.


    Ich habe mich einmal gefragt, warum die meisten Home-Computer-Hersteller nicht gleich Forth mitgeliefert haben. Das wäre im Vergleich zu Basic mehrfach schneller und platzsparender gewesen, und zudem hats enorme Vorteile in der Erweiterbarkeit. Allerdings bin ich dann draufgekommen, was die wahrscheinliche Ursache gewesen ist: Basic ist (angefangen vom Dartmouth College, an dem es entstanden ist, bereits von vielen Time-Sharing-Systemen in den späten 60ern und frühen 70ern gewesen, und viele haben es auf Universitäten benutzt. Es sind damals schon viele Millionen User gewesen, die es gekannt und genutzt haben. so ist es einfach viel bekannter und begehrter gewesen, und das ist vom Marketing-Stanpunkt natürlich ein gewaltiger Faktor.

    Ein Forth auf dem C64 hätte Erweiterungen aber sowas von viel einfacher gemacht. :sabber:

    Update: Da kommt mir fast die Idee für ein FORTH-Rom statt eines BASIC-Roms für den C64, nur um zu sehen, wie sich das beim Einschalten und Feeling machen würde.

  • Ich habe mich einmal gefragt, warum die meisten Home-Computer-Hersteller nicht gleich Forth mitgeliefert haben. Das wäre im Vergleich zu Basic mehrfach schneller und platzsparender gewesen, und zudem hats enorme Vorteile in der Erweiterbarkeit. Allerdings bin ich dann draufgekommen, was die wahrscheinliche Ursache gewesen ist: Basic ist (angefangen vom Dartmouth College, an dem es entstanden ist, bereits von vielen Time-Sharing-Systemen in den späten 60ern und frühen 70ern gewesen, und viele haben es auf Universitäten benutzt. Es sind damals schon viele Millionen User gewesen, die es gekannt und genutzt haben. so ist es einfach viel bekannter und begehrter gewesen, und das ist vom Marketing-Stanpunkt natürlich ein gewaltiger Faktor.

    Gut, dass du damals kein Produktverantwortlicher bei Commodore warst.

    Das wäre wohl das schnelle Ende von Commodore oder zumindest der Commodore-Computer gewesen. :D


    Wie gut läuft Forth eigentlich mit 8K RAM?


    Ich hatte damals für dem CBM3032 einen LISP-Interpreter. Das wäre auch nicht schlecht gewesen. So für die breite Masse der Anwender. ;)

  • Gut, dass du damals kein Produktverantwortlicher bei Commodore warst.

    Das wäre wohl das schnelle Ende von Commodore oder zumindest der Commodore-Computer gewesen. :D

    Das ist zwar hundsgemein aber auch wahr. :roll2:


    Wie gut läuft Forth eigentlich mit 8K RAM?

    Du meinst im ROM? OK, ich hab grade ein paar angeschaut, und da kommen die meisten mit 8kb aus. VIC-Forth für den VC20 hat z.B. 8kb, das C64-Pendant 12kb. Also ja, wenn man nicht wer weiß was für welche vorbereiteten Erweiterungen erwartet, sollte das schon ganz gut gehen.


    Nachtrag: Der riesige Vorteil von Forth ist ja echt, dass es extrem wenig Speicher braucht, aber das machts natürlich langsamer (im Vergleich zu Maschinensprache).

  • Ich hatte damals für dem CBM3032 einen LISP-Interpreter. Das wäre auch nicht schlecht gewesen. So für die breite Masse der Anwender.

    Ja, klingt echt gut für Anfänger, und ist auch leichter zu verstehen als Forth. Nur glaube ich, dass es erheblich langsamer ist. Aber so, von der Größe her, dürfts auch nicht ausufern. Kommt halt auch drauf an, wieviele Funktionen vordefiniert sind.

  • Irgendwie müssen sie ja den call stack jedesmal umkopieren, oder sie haben den von vorn herein ausgelagert (was die Sache langsamer machen würde). Ich würde eher auf eine Kopier-Session tippen, die zwar teurer ist, aber insgesamt trotzdem effizienter.

    Du meinst den Parameter-Stack und Return-Stack.

    Aber für einen Task-Switch wäre das Umkopieren der Stack-Inhalte mit massiven Leistungs- und Effizienzeinbußen verbunden. Üblicherweise macht man das nur durch Umsetzen des jeweiligen Stack-Pointers auf einen jeweils für den Stack zugewiesenen Bereichs.

    Beides muss jeder Task separat haben. Nun, da geht es natürlich beim 6502 schon recht beengt zu. In der Zero-Page den bestehenden Parameter-Stack dann z.B. für 4 Tasks noch mal 4-teilen, da müssen die Tasks dann vermutlich schon recht aufpassen, was man am Parameter-Stack so tut. Am Return-Stack, also der Hardware-Stack des 6502 hat zwar mehr Platz, aber man ist auch auf deutlich weniger als 256 Bytes für alle beschränkt.