Robotrontechnik-Forum

Registrieren || Einloggen || Hilfe/FAQ || Suche || Mitglieder || Home || Statistik || Kalender || Admins Willkommen Gast! RSS

Robotrontechnik-Forum » Technische Diskussionen » Focal auf dem KC » Themenansicht

Autor Thread - Seiten: -1-
000
03.12.2022, 23:59 Uhr
Hojoe



Es gab neulich den Schrei nach Focal auf dem KC. Dirk hat den C Quelltext für einen Focal Interpreter gefunden und ein paar Programme dazu.

Ich habe mir das mal angeschaut und angepasst damit er prototypisch auf dem KC läuft. Die angepassten Dateien liegen unter https://github.com/Hojoe42/KC-z88dk-Demos/tree/main/Focal



Da ich davon ausgehe, dass nicht jeder gleich selbst kompilieren möchte, liegt unter https://0e6hyyypseot0xdb.myfritz.net/nextcloud/index.php/s/ooadwGQmGQjxfYN für ca. 4 Wochen eine fertige KCC Datei.

Ich habe nicht alle Funktionen getestet, einfache Focal Programme funktionieren aber. Sie können manuell eingegeben werden. Laden und Speichern von Focal Programmen habe ich nicht getestet. Da ich in dieser Richtung nichts getan habe, dürfte da aber nicht viel funktionieren. Im Emulator können die Programme relativ einfach mittels <Alt> + V eingefügt werden.

Dieser Focal Interpreter ist ein Nachbau. Er ist nicht 100% kompatibel zu den Focal Beispielen die Dirk gepostet hatte. Damit die Beispiele laufen müssen sie angepasst werden. (oder der Interpreter, was deutlich aufwendiger ist). Weiterhin enthalten sie durchaus den ein oder anderen Fehler wie Bert Heute ebenfalls gepostet hatte. Zum Beispiel wird in calndr.txt Zeile 05.80 eine Variable Q verwendet, welche vorher nie definiert wurde.

Holger
Seitenanfang Seitenende
Profil || Private Nachricht || Suche Zitatantwort || Editieren || Löschen
001
04.12.2022, 01:28 Uhr
Dirk mit KC-4



Hallo Holger



Danke!! Focal auf dem KC85, es ist der Wahnsinn..

Es ist wirklich ein Stück Computergeschichte, das hier nun wieder lebendig wird..

wer übrigens noch zu Focal das Original Handbuch (in englisch) aus dem Jahr 1968 als pdf haben möchte, ich habs hier (mit den verfügbaren Focal Programmen) hochgeladen:

https://anonfiles.com/Ta25LfKby3/Focal_Handbuch_zip
https://1fichier.com/?peh8qyrcd6d5c6jufu4n
https://filehorst.de/d/ewboEEsc


Zitat:
Dieser Focal Interpreter ist ein Nachbau. Er ist nicht 100% kompatibel zu den Focal Beispielen die Dirk gepostet hatte.



Soweit ich das hier sehe ist der Compiler ok, die Fehler liegen an dem source Code Programmen. Ich habe mir gerade das Spiel Hamurabi (ham.foc) angeschaut, das ja ursprünglich in Focal geschrieben wurde. Jetzt wo das in Focal lauffähig ist, man bekommt vom Compiler einen Fehler im source von ham.foc angezeigt. Ich denke der Fehler liegt da dran, das da Stücke vom Code fehlen. Ich weiß nicht genau was, aber da fehlt was. Ich muss mir das aber mal morgen in Ruhe anschauen.
--
Ich kann 2 Dinge wirklich nur gut, zum einen war es die Fallschirmjägerei und zum anderen Computer. Fragt man, was ich nun besser kann, würden einige sagen das eine, andere würden das andere sagen. Aber im Grunde ist beides gleich: ein großes Abenteuer

Dieser Beitrag wurde am 04.12.2022 um 01:28 Uhr von Dirk mit KC-4 editiert.
Seitenanfang Seitenende
Profil || Private Nachricht || Suche Zitatantwort || Editieren || Löschen
002
04.12.2022, 14:16 Uhr
maleuma



Ich habe mir die KCC-Datei runtergeladen und war etwas überrascht, wie groß die ist. Schließlich ist die Programmiersprache über 50 Jahre alt und die Speichergrößen damals noch eher begrenzt.
Ich werde mir das Programm aber auf jeden Fall etwas ansehen.

Irgend ein Fehler scheint aber noch drin zu sein: Wenn man länger auf der Enter-Taste bleibt und diese dann loslässt, kommt nach dem Stern ein komisches Zeichen auf dem Bildschirm. Möglicherweise die 0, welche beim Loslassen der Taste in (IX+13) eingetragen wird?
--
Mario.
Seitenanfang Seitenende
Profil || Private Nachricht || Suche Zitatantwort || Editieren || Löschen
003
04.12.2022, 17:48 Uhr
Hojoe




Zitat:
maleuma schrieb
Ich habe mir die KCC-Datei runtergeladen und war etwas überrascht, wie groß die ist. Schließlich ist die Programmiersprache über 50 Jahre alt und die Speichergrößen damals noch eher begrenzt.



Das ist kein 'originaler' Focal Interpreter! Das ist nur die Anpassung eines Nachbaus.

Irgendwo im Quellcode steht 'Focal-81 is originally written by Dave Conroy'. Daraus folgere ich, das dieser Nachbau nur 40 Jahre alt ist ;-)
Mal im Ernst, da ist jetzt eine vollständige 48-Bit Mathe Implementation mit drin. Da ist noch Code zum Laden und Speichern mit enthalten, obwohl er nicht funktionieren kann. Weiterhin gibt es einen eigenen Zeichensatz und es wird ausgiebig von printf() Gebrauch gemacht. Da lässt sich noch was optimieren. Nicht zu vergessen: Fehlermeldungen. Laut dem FOCAL Programming Manual sahen die Fehlermeldungen wie folgt aus: '?02.29', die Meldung aus dem Handbuch dazu war dann 'Illegal command used'. Jetzt gibt es mehr oder weniger lesbare Fehlermeldungen.
Ursprünglich mussten in dieser Implementation die mathematischen Funktionen alle klein geschrieben werden. Das fand ich blöd und habe die Symboltabelle um die großgeschriebenen Varianten erweitert. Das geht bestimmt auch effizienter.


Zitat:

Irgend ein Fehler scheint aber noch drin zu sein: Wenn man länger auf der Enter-Taste bleibt und diese dann loslässt, kommt nach dem Stern ein komisches Zeichen auf dem Bildschirm. Möglicherweise die 0, welche beim Loslassen der Taste in (IX+13) eingetragen wird?



Du hast bestimmt auf echter Hardware getestet. :-) Ich weiß bei Backspace, BRK oder STOP kommen komische Zeichen. ... Gerade mal probiert, beim KC85/5 im Emulator kommt beim schnellen Drücken von Enter ebenfalls ein komisches Zeichen. Normalerweise können diese Zeichen mit 'Cursor Links' wieder gelöscht werden. Ich spekuliere mal, da ist der Zeichensatz nicht vollständig belegt und es wird ein Stück Programmcode angezeigt?

Falls jemand den Code mit einem aktuellem z88dk kompiliert, nicht wundern bei der Tastatureingabe. Die ist da aktuell sehr schnell. Ich habe das bei mir lokal behoben, die Änderung muss aber noch in den originalen z88dk zurück wandern.

Falls da wirklich Interesse besteht kann da viel optimiert / verbessert werden. Der Quellcode mit meinen Änderungen ist öffentlich vorhanden.

Holger
Seitenanfang Seitenende
Profil || Private Nachricht || Suche Zitatantwort || Editieren || Löschen
004
04.12.2022, 20:24 Uhr
Dirk mit KC-4



Ich habe mir mal CALNDR angeschaut, da fehlt auf jeden Fall eine Zeile, die Q Berechnung.

Ich vermute mal das die Zeile so aussehen muss:
06.50 A M,K,C;DO 1.4;D 1.5; SET Q=M*1E6+K*1E4+C; GOTO 1.3

dann startet das Programm und fragt nach dem Datum, und dann gehts los..
gebe ich 12/4/2022 ein ist das ein Fehler
gebe ich 12 return 4 return 2022 return ein, ist das ein Fehler
ersetze ich 01.30 und schreibe:
01.30 S M=12; S K=4; S C=2022

und zur Überprüfung füge ich noch ein:
01.31 T M; T K; T C

und starte dann, dann sind zumindest die Variablen M K und C gefüllt.
Dann kommt aber trotzdem noch nen Fehler in 01.50
der erste teil scheint in Ordnung, die If Abfrage in der Mitte auch, aber das Goto am Ende da hängt er..


Zitat:
Da ist noch Code zum Laden und Speichern mit enthalten, obwohl er nicht funktionieren kann.



das was man eingetippt hat speichern zu können unter [Dateiname].[foc] wäre nicht schlecht

Im Handbuch von dec steht drin der Befehl Write ist das normale List und Write@ würde auf Tape speichern
--
Ich kann 2 Dinge wirklich nur gut, zum einen war es die Fallschirmjägerei und zum anderen Computer. Fragt man, was ich nun besser kann, würden einige sagen das eine, andere würden das andere sagen. Aber im Grunde ist beides gleich: ein großes Abenteuer
Seitenanfang Seitenende
Profil || Private Nachricht || Suche Zitatantwort || Editieren || Löschen
005
04.12.2022, 21:31 Uhr
Hojoe




Zitat:
Dirk mit KC-4 schrieb
Ich habe mir mal CALNDR angeschaut, da fehlt auf jeden Fall eine Zeile, die Q Berechnung. ...



Für was ist das Q da? Ich habe es erst mal rausgeschmissen. Hattest du das Beispiel von meiner GitHub Seite oder aus dem original Archiv? Bei Sonntag bis Donnerstag fehlten noch die schließenden doppelten Hochkommas.

Mit
12<RETURN>3<RETURN>2022<RETURN>
ging es Gestern noch ;-) Mit den zusätzlichen Hochkommas geht es auch für Heute:


Holger
Seitenanfang Seitenende
Profil || Private Nachricht || Suche Zitatantwort || Editieren || Löschen
006
04.12.2022, 21:51 Uhr
Hojoe




Zitat:
Dirk mit KC-4 schrieb
...
Im Handbuch von dec steht drin der Befehl Write ist das normale List und Write@ würde auf Tape speichern



Das ist nicht das Focal von der DEC. Das ist irgendein Focal Nachbau - mehr oder weniger kompatibel. In https://github.com/Hojoe42/KC-z88dk-Demos/blob/main/Focal/focal.doc befindet sich die Beschreibung was dieser Nachbau so kann. Dort steht bei 'library':

Zitat:

library extended command.

library save <FILENAME>
save current program to <FILENAME>.
library call <FILENAME>
call(load) program from <FILENAME>.
library delete <FILENAME>
delete <FILENAME>.
library list [<DIR>]
list library at <DIR> or . if <DIR> is omitted.



Wie ich gerade festgestellt habe, kommt bei der Eingabe des richtigen Befehls nur "Library list not implemented" oder alternativ "Cannot open". Das dürfte weitestgehend der Wahrheit entsprechen ;-)

Holger
Seitenanfang Seitenende
Profil || Private Nachricht || Suche Zitatantwort || Editieren || Löschen
007
04.12.2022, 22:27 Uhr
Dirk mit KC-4



nun hab ich den fehler hier bei mir gefunden, der Compiler kann keine Hochzahlen..

T 10E2+10E3

also 10 hoch 2 plus 10 hoch 3, Ausgabe: undefinierte Variable

T (2*(2+6))
T [2*[2+6]]

beides funktioniert, warum hast du die eckigen Klammern rausgeschmissen im calendar, bzw durch rund ersetzt?

Auch noch mal die Frage, wie hast du die vier .c und die zwei .h mit dem z88dk kompeliert? Welche Zeile hast du dafür bei z88dk eingegeben?
--
Ich kann 2 Dinge wirklich nur gut, zum einen war es die Fallschirmjägerei und zum anderen Computer. Fragt man, was ich nun besser kann, würden einige sagen das eine, andere würden das andere sagen. Aber im Grunde ist beides gleich: ein großes Abenteuer
Seitenanfang Seitenende
Profil || Private Nachricht || Suche Zitatantwort || Editieren || Löschen
008
04.12.2022, 22:33 Uhr
Dirk mit KC-4



gefunden:
zcc +kc -lgenmath_iy -o focal.bin -create-app focal0.c focal1.c focal2.c focal3.c

was ich nun noch nicht verstehe, was mit den beiden .h Dateien?
erkennt z88dk beim kompelieren dass es noch 2 weitere .h Dateien gibt und fügt die automatisch mit ein?

und -lgenmath_iy was bedeutet das? Ist das eine spezielle Mathe C Dateiei oder so die beim kompelieren gebraucht wird?

"Für die Mathematik Libs wird die genmath verwendet und da wir uns auf dem KC mit speziellem IX Register befinden wird die Variante genmath_iy verwendet."

was sind IX Register?
--
Ich kann 2 Dinge wirklich nur gut, zum einen war es die Fallschirmjägerei und zum anderen Computer. Fragt man, was ich nun besser kann, würden einige sagen das eine, andere würden das andere sagen. Aber im Grunde ist beides gleich: ein großes Abenteuer

Dieser Beitrag wurde am 04.12.2022 um 22:46 Uhr von Dirk mit KC-4 editiert.
Seitenanfang Seitenende
Profil || Private Nachricht || Suche Zitatantwort || Editieren || Löschen
009
04.12.2022, 22:42 Uhr
Dirk mit KC-4



Ich sollte auch mal deine readme lesen: -sorry

In focal.doc ist der Sprachumfang dieses Focal Interpreters beschrieben. Einige besondere Eigenheiten:

Bei Sprüngen muss die vollständige Zeilennummer angegeben werden. G 5.5 funktioniert nicht, es muss G 5.50 lauten.

Das erklärt einiges an Fehler die ich hier hatte..

Formatanweisungen müssen vollständig angegeben werden. TYPE "A+B= ", %1, A+B! muss durch TYPE "A+B= ", %1.0, A+B! ersetzt werden.
Es werden nur Runde Klammern unterstützt, diese können dafür geschachtelt werden.

eckige gehen auch, siehe oben

Die Ausgabe der Symboltabelle mit TYPE $ wird nicht unterstützt.

Strings müssen am Anfang und am Ende jeweils ein doppelte Hochkommas (") besitzen.

auch gemerkt, nun verstanden.

Wenn das die einzigen "Besonderheiten" sind, damit kann man ja leben.
2 Dinge nun nur noch, Hochzeichen, also 10 hoch 3 und speichern von dem was man eingetippt hat wieder zurück auf den KC.
--
Ich kann 2 Dinge wirklich nur gut, zum einen war es die Fallschirmjägerei und zum anderen Computer. Fragt man, was ich nun besser kann, würden einige sagen das eine, andere würden das andere sagen. Aber im Grunde ist beides gleich: ein großes Abenteuer
Seitenanfang Seitenende
Profil || Private Nachricht || Suche Zitatantwort || Editieren || Löschen
010
04.12.2022, 23:02 Uhr
Dirk mit KC-4



Das Q übrigens ist für das Schaltjahr.
Dein Programm läuft, berechnet auch richtig, aber nicht bei Schaltjahren.
2020 war ein Schaltjahr, der 4 Dez. 2020 war ein Sonntag
Dein Programm ohne Q zeigt als Ergebnis an: Freitag

Darum, in den Originalquellcode müsste diese Zeile ganzen unten mit rein:
06.50 A M,K,C;DO 1.4;D 1.5; SET Q=M*1E6+K*1E4+C; GOTO 1.3

Aber der Compiler meckert wegen dem 1E6, also 10 hoch 6
--
Ich kann 2 Dinge wirklich nur gut, zum einen war es die Fallschirmjägerei und zum anderen Computer. Fragt man, was ich nun besser kann, würden einige sagen das eine, andere würden das andere sagen. Aber im Grunde ist beides gleich: ein großes Abenteuer

Dieser Beitrag wurde am 04.12.2022 um 23:04 Uhr von Dirk mit KC-4 editiert.
Seitenanfang Seitenende
Profil || Private Nachricht || Suche Zitatantwort || Editieren || Löschen
011
04.12.2022, 23:20 Uhr
Hojoe




Zitat:
Dirk mit KC-4 schrieb
nun hab ich den fehler hier bei mir gefunden, der Compiler kann keine Hochzahlen..



Das ist nicht ganz richtig. Das Format ist ebenfalls leicht anders. Was geht ist z. B.:
*T 1.0e6 <-- 1 Million
*T 10e6 <-- 10 Million

wichtig: auf die Kleinschreibung des 'e' achten.

Ich hatte in die Doku nur das aufgenommen, was mir aufgefallen und beim Schreiben der Anmerkungen wieder eingefallen ist. Die Exponentialschreibweise ist dem wohl zum Oper gefallen. Das werde ich noch ergänzen.

In der Focal.doc steht dazu auch: MANTISSA e SIGNED


Zitat:
warum hast du die eckigen Klammern rausgeschmissen im calendar, bzw durch rund ersetzt?



Also ja, so ganz grundsätzlich könnten die spitzen und eckigen Klammern funktionieren, nur nicht bei den eingebauten Funktionen, da müssen es grundsätzlich runde Klammern sein. Bei Arrays (?) vermutlich auch, wenn ich die BNF richtig interpretiere:
VARIABLE '(' EXPR ')'
BUILTIN '(' EXPR ')'

*T <3+4>*[FITR(3.141)+2]
funktioniert, ist für mich aber sehr ungewöhnlich. Vielleicht entwickel ich auch zu lange Software.


Zitat:
Auch noch mal die Frage, wie hast du die vier .c und die zwei .h mit dem z88dk kompeliert? Welche Zeile hast du dafür bei z88dk eingegeben?


:-) Ich denke das hast du jetzt ebenfalls in der Doku gesehen oder?

die restlichen Fragen / Anmerkungen schaue ich mir Morgen an. Schöner Abend noch ...

Holger
Seitenanfang Seitenende
Profil || Private Nachricht || Suche Zitatantwort || Editieren || Löschen
012
05.12.2022, 02:06 Uhr
Dirk mit KC-4




Zitat:
*T <3+4>*[FITR(3.141)+2]
funktioniert, ist für mich aber sehr ungewöhnlich. Vielleicht entwickel ich auch zu lange Software.



das ist ungewöhnlich. Aber Ende der 60er Jahre waren das alles Mathematiker. Vermutlich ist das für Mathematiker normale Schreibweise..

Im Grunde aber ist dieser Focal Compiler nen cooles Teil, außerdem wer kann schon sagen das er über source Programme rum grübelt, die in Focal geschrieben wurden.
--
Ich kann 2 Dinge wirklich nur gut, zum einen war es die Fallschirmjägerei und zum anderen Computer. Fragt man, was ich nun besser kann, würden einige sagen das eine, andere würden das andere sagen. Aber im Grunde ist beides gleich: ein großes Abenteuer
Seitenanfang Seitenende
Profil || Private Nachricht || Suche Zitatantwort || Editieren || Löschen
013
05.12.2022, 20:14 Uhr
Hojoe



Zuerst einmal, ich entwickel seit vielen Jahren in Java. Ab und zu schaue ich auch mal über den Tellerrand, um andere Sprachen kennen zu lernen. Mit C habe ich eigentlich erst letztes Jahr mal angefangen. Also alles was ich zu C sage ist mit Vorsicht zu genießen.


Zitat:
Dirk mit KC-4 schrieb
gefunden:
zcc +kc -lgenmath_iy -o focal.bin -create-app focal0.c focal1.c focal2.c focal3.c

was ich nun noch nicht verstehe, was mit den beiden .h Dateien?
erkennt z88dk beim kompelieren dass es noch 2 weitere .h Dateien gibt und fügt die automatisch mit ein?



z88dk ist ein development kit, ein Entwicklungsumgebung für Z80 Systeme. Darin enthalten sind mindestens ein Präprozessor, zwei Compiler, zwei Assembler, ein Linker und ein Appmake und eigentlich noch ein paar Tools mehr. Der zcc wird als Frontend bezeichnet der die einzelnen Tools in der richtigen Reihenfolge mit den richtigen Parametern aufruft.
Konkret läuft immer für jede aufgeführte C Datei zuerst der Präprozessor. Der liest die Datei und schaut nach so #include oder #define und ersetzt die passend. Bei #include wird z.B. der Inhalt der angegebenen Datei in die C Datei kopiert und das auch rekursiv. Daraus entsteht dann eine sehr lange C Datei die dann in einem 2. Schritt dem C Compiler übergeben wird. Der C Compiler erstellt dann aus den C Quelltexten Assembler Dateien. Die werden dann vom Assembler in Objektcode assembliert. Der Linker nimmt dann die Objektdateien und linkt sie mit den benötigten Bibliotheken zu einer Binärdatei. Daraus mach das beim z88dk enthaltene appmake eine KCC Datei.

Kurz ja, die *.h Dateien werden automagisch in die C Dateien eingefügt, falls die das includen.


Zitat:

und -lgenmath_iy was bedeutet das? Ist das eine spezielle Mathe C Dateiei oder so die beim kompelieren gebraucht wird?



Genau das geht in die richtige Richtung. Im C Quellcode steht irgendwo:

Quellcode:
#include <math.h>

Ab da ist es möglich zum Beispiel die sin() Funktion zu verwenden. Der C Compiler erzeugt dann an der Stelle eine Marke wie <und hier wird die Sinus Funktion aufgerufen>. Erst später beim Linken der ganzen Objekt Dateien muss eine konkrete Mathe Lib eingebunden werden. Mit -l wird eine library angegeben. Der z88dk bringt gleich eine ganze Sammlung von Mathe Libs mit. Auf https://github.com/z88dk/z88dk/wiki/Classic--Maths-Libraries werden die aufgeführt. Da kann man sich je nach Rechengenauigkeit, Hardware und anderen Kriterien die passende aussuchen.


Zitat:

was sind IX Register?



Der Z80 hat eine Reihe von 8 und / oder 16 Bit Registern in denen er Werte ablegen kann. Die meisten Register können beim programmieren relativ frei verwendet werden. Aber im KC Handbuch steht im Kapitel 'Spezielle Systembedingungen' der Satz:


Zitat:
Das IX-Register wird für die Adressierung der Tastatur/Kassetten-Interruptprogramme benötigt und darf bei freigegebenem Interrupt nicht verändert werden.


Das bedeutet, beim Erstellen von Programmen muss darauf geachtet werden, dass kein Code aufgenommen wird welcher das IX Register modifiziert.

Holger

Dieser Beitrag wurde am 05.12.2022 um 20:21 Uhr von Hojoe editiert.
Seitenanfang Seitenende
Profil || Private Nachricht || Suche Zitatantwort || Editieren || Löschen
014
06.12.2022, 02:24 Uhr
Dirk mit KC-4



Hallo Holger,

danke für die ausführliche Beschreibung. Ich hab das verstanden, zumindest den roten Faden. Das mit der richtigen mathelibs auswählen werd ich aber noch nicht hinbekommen. Aber ich werd dich fragen wenn was ist

Diesen z88dk finde ich übrigens sehr interessant. Man hat damit die Möglichkeit Software auf den KC85 zu bringen, bzw. Software die es für den KC85 noch nicht gibt. Klar Spiele (komplexe Strategiespiele gibts wenig für den KC85) aber interessant wären natürlich Anwenderprogramme. Es gibt zwar die Möglichkeit über CP/M auf ein fast riesiges Softwareangebot zuzugreifen, aber dazu braucht man eine Diskettenstation D004 um CPM überhaupt zu starten. Und die haben ja nicht alle.
Es gab ja auch Software speziell für den 1715 und die anderen DDR-Computer. Ich denke da an ReDaBas, das Datenbankprogramm. Gab es nur für 1715, den 51er und den 7100. Ich glaube zwar nicht das ReDaBas in C programmiert wurde, aber es wird andere Datenbankprogramme geben deren C sources verfügbar sind. Und ein Datenbanksystem, ob nun eine Vereinverwaltung oder die Briefmarkensammlung, wäre auch für den KC85 sicher interessant.
Und vielleicht gibts ja einiges an C Programmen für 1715, 5110, 7100 die einige hier im Forum vielleicht haben, die solche Computer besitzen.

Man müsste mal wirklich rumstöbern was an C sources so verfügbar ist und was man davon auf den KC85 umsetzen könnte mit dem z88dk.
Aber das nur so als Gedanke, mal sehen im nächsten Jahr mal stöbern gehen was an c sources so zu finden ist..
--
Ich kann 2 Dinge wirklich nur gut, zum einen war es die Fallschirmjägerei und zum anderen Computer. Fragt man, was ich nun besser kann, würden einige sagen das eine, andere würden das andere sagen. Aber im Grunde ist beides gleich: ein großes Abenteuer
Seitenanfang Seitenende
Profil || Private Nachricht || Suche Zitatantwort || Editieren || Löschen
015
06.12.2022, 02:36 Uhr
Dirk mit KC-4



etwas noch zu dem Focal Compiler, der läuft ja ganz gut. Die Frage wäre, kannst du da eine speicher Funktion reinprogrammieren? Wäre das überhaupt möglich?

Ein Gedanke: du hast geschrieben die .h werden automatisch eingebunden. Wenn man nun eine der Header Dateien "erweitert" um den Befehle save. Save gibt es nicht als Focal Befehl. Ich hab in der Liste der Focal Befehle aber den Befehl
LIBRARY SAVE gefunden. Der Befehl speichert das Programm, also das Listing auf Diskette. LIBRARY DELETE, Programm auf Diskette löschen brauchen wir ja nicht. LIBRARY LIST und LIBRARY CALL ja auch nicht.

Welche der beiden Möglichkeiten würde nun überhaupt funktionieren?
LIBRARY SAVE "umschreiben" das das Programm auf dem KC gespeichert wird
oder die Header Datei um einen neuen Befehl save "erweitern" damit dann mit save Dateiname das Programm gespeichert wird.
Und geht das überhaupt?
--
Ich kann 2 Dinge wirklich nur gut, zum einen war es die Fallschirmjägerei und zum anderen Computer. Fragt man, was ich nun besser kann, würden einige sagen das eine, andere würden das andere sagen. Aber im Grunde ist beides gleich: ein großes Abenteuer
Seitenanfang Seitenende
Profil || Private Nachricht || Suche Zitatantwort || Editieren || Löschen
016
06.12.2022, 17:41 Uhr
Hojoe




Zitat:
Dirk mit KC-4 schrieb
2020 war ein Schaltjahr, der 4 Dez. 2020 war ein Sonntag

Dein Programm ohne Q zeigt als Ergebnis an: Freitag



Mhm, die von mir befragten Kalender sagen der 4.12.2020 war ein Freitag, zum Beispiel: https://www.atomuhr.de/kalender-2020/

Holger
Seitenanfang Seitenende
Profil || Private Nachricht || Suche Zitatantwort || Editieren || Löschen
017
07.12.2022, 14:48 Uhr
Dirk mit KC-4



Ich weiß nicht was ich da für ein Datum rausgesucht hatte. Spät am Abend, zu viel Goldi?

Nimm den 13. April 2012, Schaltjahr und Freitag der 13.
--
Ich kann 2 Dinge wirklich nur gut, zum einen war es die Fallschirmjägerei und zum anderen Computer. Fragt man, was ich nun besser kann, würden einige sagen das eine, andere würden das andere sagen. Aber im Grunde ist beides gleich: ein großes Abenteuer
Seitenanfang Seitenende
Profil || Private Nachricht || Suche Zitatantwort || Editieren || Löschen
018
07.12.2022, 22:44 Uhr
Hojoe



Ich habe in dem Beispiel die Variablen analog dem Wikipedia Artikel zur Wochentagsberechnung umbenannt und die Berechnung etwas vereinfacht, um das Programm besser nachzuvollziehen. Dann ist mir aufgefallen dass die Zeile 05.53 eine verkappte Modulo Rechnung ist. (Focal hat kein Modulo Operator.) Ja und diese Zeile kann nur mit positiven Zahlen umgehen. Es können aber durchaus auch kleine negative Zahlen entstehen. In dem Fall wird dann der falsche Tag ausgegeben. Ich hoffe ich habe das jetzt richtig berichtigt und keinen neuen Fehler eingebaut.

Holger
Seitenanfang Seitenende
Profil || Private Nachricht || Suche Zitatantwort || Editieren || Löschen
019
08.12.2022, 01:16 Uhr
Dirk mit KC-4



funktioniert

Du hast ein Stück Programm aus dem Jahr 1971 bereinigt, das ist auf jeden Fall cool

Holger, Focal Programmierer :-)

du musst aber zugeben, die Sprache hat was, das gewisse etwas
--
Ich kann 2 Dinge wirklich nur gut, zum einen war es die Fallschirmjägerei und zum anderen Computer. Fragt man, was ich nun besser kann, würden einige sagen das eine, andere würden das andere sagen. Aber im Grunde ist beides gleich: ein großes Abenteuer
Seitenanfang Seitenende
Profil || Private Nachricht || Suche Zitatantwort || Editieren || Löschen
020
08.12.2022, 02:37 Uhr
Dirk mit KC-4



Ich wollte mir grad die weiteren Focal Programme anschauen und stelle fest da funktioniert was nicht:

Funktion fehlt, Zufallszahl:
T FRAN( )
= Ausgabe wäre eine Zufallszahl von 0.5000 bis 0.9999



diese mathematischen Funktionen funktionieren:

Quadratwurzel
T FSQT(9)
= 3

Absolute Wert:
T FABS(-66)
=66

Vorzeichen Wert, -1 oder +1 Ausgabe:
T FSGN(4-6)
=-1

Ganzzahlenwert, Nachkommawert wird weggelassen:
T FITR(55.66)
=55

Sinus:
T FSIN(14)
=0.9906

Sinus mit Kommawert:
T FSIN(14.5)
=0.9349

Cosinus:
T FCOS(45)
=0.52532

ArcTangents:
T FATN(1)
=0.7854

e Hoch Zahl in der Klammer:
T FEXP(2)
=7.3891

Logarithmen:
T FLOG(16)
= 2,7726


kann das damit zusammenhängen:

zcc +kc -lgenmath_iy -o focal.bin -create-app focal0.c focal1.c focal2.c focal3.c

liegt das an der lgenmath das dort diese Funktionen fehlen bzw. nicht ausgeführt werden?
--
Ich kann 2 Dinge wirklich nur gut, zum einen war es die Fallschirmjägerei und zum anderen Computer. Fragt man, was ich nun besser kann, würden einige sagen das eine, andere würden das andere sagen. Aber im Grunde ist beides gleich: ein großes Abenteuer

Dieser Beitrag wurde am 08.12.2022 um 12:52 Uhr von Dirk mit KC-4 editiert.
Seitenanfang Seitenende
Profil || Private Nachricht || Suche Zitatantwort || Editieren || Löschen
021
08.12.2022, 02:50 Uhr
Dirk mit KC-4



in der focal0.c steht:


#ifdef FUNCTIONS
builtin("fsin", fsin);
builtin("fcos", fcos);
builtin("fexp", fexp);
builtin("flog", flog);
builtin("fatn", fatn);
builtin("fsqt", fsqt);
builtin("fabs", fabt);
builtin("fsgn", fsgn);
builtin("fitr", fitr);
builtin("fran", fran);


und in focal1.c ist es dann als Funktion:

#ifdef FUNCTIONS
double
fsin(arg)
double arg;
{
return (sin(arg));
}

...


somit sollte er ja eigentlich Cosinus FCOS und Randomzahl FRAN kennen.
und könnte man in focal0.c nicht auch noch einfach eine Zeile einfügen:
builtin("fmod", fmod);
und dann in focal1.c:

double
fmod(arg1, arg2)
double arg1;
double arg2;
{
return (arg1 mod arg2);
}


damit er auch mod kennt? falls das in focal1.c mit der modberechnung so richtig ist..
--
Ich kann 2 Dinge wirklich nur gut, zum einen war es die Fallschirmjägerei und zum anderen Computer. Fragt man, was ich nun besser kann, würden einige sagen das eine, andere würden das andere sagen. Aber im Grunde ist beides gleich: ein großes Abenteuer

Dieser Beitrag wurde am 08.12.2022 um 02:52 Uhr von Dirk mit KC-4 editiert.
Seitenanfang Seitenende
Profil || Private Nachricht || Suche Zitatantwort || Editieren || Löschen
022
08.12.2022, 12:55 Uhr
Dirk mit KC-4




Zitat:

Funktion fehlt, Zufallszahl:
T FRAN( )
= Ausgabe wäre eine Zufallszahl von 0.5000 bis 0.9999



es funktioniert:
T FRAN (8)
= 0.0020
= 0.2539
= 0.9482

funktioniert, ich weiß aber nicht wie..
ohne eine Zahl in der Klammer erzeugt er keine Zufallszahl.
--
Ich kann 2 Dinge wirklich nur gut, zum einen war es die Fallschirmjägerei und zum anderen Computer. Fragt man, was ich nun besser kann, würden einige sagen das eine, andere würden das andere sagen. Aber im Grunde ist beides gleich: ein großes Abenteuer

Dieser Beitrag wurde am 08.12.2022 um 12:57 Uhr von Dirk mit KC-4 editiert.
Seitenanfang Seitenende
Profil || Private Nachricht || Suche Zitatantwort || Editieren || Löschen
023
08.12.2022, 14:07 Uhr
Dirk mit KC-4



Ich hab nun Hamurabi angepasst und auch in deutsch übersetzt :



du kannst das Programm gerne bei dir bei github mit einfügen:


Quellcode:

01.01 C     HAMURABI, WRITTEN BY DOUG DYMENT (1969)
01.02 C     FOR DIGITAL EQUIPMENT CORPORATION
01.03 C     angepasst an den KC85 by Dirk (2022)
01.04 C     - German Version -
01.05
01.10 S P=95;S S=2800;S H=3000;S E= 200;S Y=3;S A=1000;S I=5;S Q=1

02.10 S D=0
02.20 D 6;T !!!"Letztes Jahr"!D," verhungerten,"
02.25 T !I," wanderten zu,";S P=P+I;I (-Q)2.30
02.27 S P=FITR(P/2);T !"**PEST**"!
02.30 T !"Population ist"P,!!"Die Stadt besitzt"
02.35 T A," Hektar."!!;I (H-1)2.50;T "Wir haben geerntet"
02.40 D 3.20
02.50 T !" Ratten frassen "E," Scheffel, Du hast jetzt"
02.60 T S," Scheffel im Kornhaus."!

03.10 D 6; D 8;S Y=C+17;T "Land wird gehandelt fuer"
03.20 T Y," Scheffel pro Hektar;"!;S C=1
03.30 D 4.30;A " Kaufen?"Q;I (Q)7.20,3.80
03.40 I (Y*Q-S)3.90,3.60;D 4.60;G 3.30
03.50 D 4.50;G 3.30
03.60 D 3.90:G 4.80
03.70 S A=A+Q;S S=Y*Q;S C=0
03.80 A "zu verkaufen?"Q;I (Q)7.20,3.90;S Q=-Q;I (A+Q)3.50
03.90 S A=A+Q;S S=S-Y*Q;S C=0

04.10 T "Scheffel verwenden"
04.11 A " als Nahrung?"Q;I (Q)7.70;I (Q-S)4.20,4.70;D 4.60;G 4.10
04.20 S S=S-Q;S C=1
04.30 A "Wie viele Hektar"
04.35 A " bepflanzen mit Samen? "D
04.40 I (D)7.20;I (A-D)4.45;I (FITR(D/2)-S-1)4.65;D 4.60;G 4.30
04.45 D 4.50;G 4.30
04.50 D 7;T A," Hektar."!
04.60 D 7;D 2.60
04.65 I (D-10*P-1)5.10;D 7;T P," Einwohner."!;G 4.30
04.70 D 4.20
04.80 D 6;T ""Du hast kein Getreide zum saehen !!" !!"!S D=0

05.10 S S=S-FITR(D/2);D 8;S Y=C;S H=D*Y
05.20 D 8;S E=0;I (FITR(C/2)-C/2)5.30;S E=S/C
05.30 S S=S-E+H;D 8;S I=FITR(C*(20*A+S)/P/100+1);S C=FITR(Q/20)
05.40 S Q=FITR(10*FABS(FRAN(8)));I (P-C)2.10;S D=P-C;S P=C;G 2.20

06.10 T !!"HAMURABI:  "%5.0

07.10 I (C)7.20;S C=C-1;D 6;T "Aber du hast nur";R
07.20 D 6;T !"Auf Wiedersehen!"!!;Q

08.10 S C=FITR(5*FABS(FRAN(8)))+1



--
Ich kann 2 Dinge wirklich nur gut, zum einen war es die Fallschirmjägerei und zum anderen Computer. Fragt man, was ich nun besser kann, würden einige sagen das eine, andere würden das andere sagen. Aber im Grunde ist beides gleich: ein großes Abenteuer

Dieser Beitrag wurde am 08.12.2022 um 14:11 Uhr von Dirk mit KC-4 editiert.
Seitenanfang Seitenende
Profil || Private Nachricht || Suche Zitatantwort || Editieren || Löschen
024
08.12.2022, 20:24 Uhr
Hojoe




Zitat:
Dirk mit KC-4 schrieb
Ich hab nun Hamurabi angepasst und auch in deutsch übersetzt :



Nicht schlecht, ein paar Jahre konnte ich schon überleben.

Kannst du bitte mal schauen
- in Zeile 04.80 haut irgend etwas mit den Anführungszeichen nicht hin. Hinten das '!!"' ist auch irgendwie doppelt
- fehlt in Zeile 06.10 noch eine Variable, vielleicht für das Jahr oder so etwas?
- in Zeile 04.11 ist ein Sprung nach 7.70, das gibt es nicht
- sollte in Zeile 04.11 die eine Bedingung nicht I (Q-S)4.20,4.20;D 4.60; lauten? Die zweite 4.20 entspricht den Fall, dass ich alles vorhandene Getreide als Nahrung verwenden möchte (praktisch nicht wirklich sinnvoll :-)). Aktuell sage ich z. B. als Nahrung verwenden 500 und als Antwort bekomme ich "Aber du hast nur 500 Scheffel im Kornhaus." - ja richtig, die will ich als Nahrung verwenden ;-)

Holger
Seitenanfang Seitenende
Profil || Private Nachricht || Suche Zitatantwort || Editieren || Löschen
025
08.12.2022, 21:37 Uhr
Hojoe




Zitat:
Dirk mit KC-4 schrieb
es funktioniert:
T FRAN (8)
= 0.0020
= 0.2539
= 0.9482

funktioniert, ich weiß aber nicht wie..
ohne eine Zahl in der Klammer erzeugt er keine Zufallszahl.



:-) Der Parser ist, mhm na wie soll ich sagen, nicht besonders intelligent.
Aus https://github.com/Hojoe42/KC-z88dk-Demos/blob/667d9b02d5ba1ae21f0cc5e7c2348dcc726c4182/Focal/focal1.c#L119

Quellcode:

    if ((id[0]=='f' || id[0]=='F') && (sp=lookup(id, S_FUNC, 0))!=NULL) {
        while (c==' ' || c=='\t')
            c = *ctp++;
        if (c != '(')
            diag("Missing `(' for function");
        val = eval();
        if (getnb() != ')')
            diag("Missing `)' for function");
        return ((*sp->s_un.s_fp)(val));
    }



- Erst schaut er ob das Ding mit 'f' oder 'F' losgeht und ob der Name in der Symboltabelle existiert.
- Dann werden alle Leerzeichen und Tabs überlesen / weggeworfen.
- Dann MUSS eine öffnende runde Klammer '(' kommen.
- Alles was dann bis zur schließenden runden Klammer ')' kommt, muss ein Ausdruck sein, der sich zu genau einem Wert auswerten lässt.
- Mit diesem einen ausgewerteten Wert / Parameter wird dann die Funktion aufgerufen.

Falls eine Funktionen keinen Parameter benötigt, wie die random() Funktion, muss trotzdem einer angegeben werden. Weiter unten in der Datei ist die fran() Funktion. Der Parameter 'arg' wird da ignoriert, im Gegensatz zu den Funktionen vorher.
Eine Modulo Funktion wird da schon schwieriger, da diese 2 Parameter hat. Einfach mal hinzufügen geht da nicht.

Dann steht ja noch die bisher unbeantwortete Frage nach den Laden und Speichern im Raum. Das ist ebenfalls nicht so einfach möglich. Aus dem C Code heraus kann einfach ein Stream mit den Daten erzeugt oder wieder eingelesen werden. Der KC möchte aber lieber einen Speicherbereich abspeichern oder laden. Die Konzepte passen nicht so recht zusammen. Der Heap selbst liegt aktuell ab 6500H bis 7FFFH. Aber zusätzlich gibt es noch ein paar Verwaltungsinformationen die der Linker irgendwo abgelegt hat. Daher genügt es nicht nur den Speicher ab 6500H abzuspeichern und zu laden. Selbst wenn das Programm ab 1000H inklusive Heap bis 7FFFH abgespeichert wird, spätestens beim Einlesen wird eine andere / keine Initialisierung der Variablen benötigt.
Alles irgendwie handlebar, aber nicht mal so schnell nebenbei. Ich würde davon erst einmal Abstand nehmen. Aber der Quellcode liegt ja vor, dass kann ja auch gerne jemand anders erledigen.

Holger

Dieser Beitrag wurde am 08.12.2022 um 21:40 Uhr von Hojoe editiert.
Seitenanfang Seitenende
Profil || Private Nachricht || Suche Zitatantwort || Editieren || Löschen
026
08.12.2022, 21:55 Uhr
Dirk mit KC-4




Zitat:
in Zeile 04.80 haut irgend etwas mit den Anführungszeichen nicht hin.



Du hast Recht. Aus Zeile 04.80 :
04.80 D 6;T ""Du hast kein Getreide zum saehen !!" !!"!S D=0

würde ich das machen:
04.80 D 6;T "Du hast kein Getreide zum saehen !!"; T !; S D=0

Die doppelten Hochzeichen machen keinen Sinn.
Das ! vor dem S ist wieder so ein spezieller Fall, das ! ist eigentlich ein Returnzeichen, also springe in neue Zeile. Der Compiler mag aber kein ! vor einer Input Variabel, also:
A "Wie ist dein Name?"!,N
funktioniert nicht. So wäre es richtig:
A "Wie ist dein Name?",N
Ein einzelnes ! also meist ein Fehler, ein T ! funktioniert.
Oder hier ein T ! und dann das ; für den neuen Befehl.
Ein ! ohne ein ; und neuer Befehl und der Compiler meckert.


Zitat:
fehlt in Zeile 06.10 noch eine Variable, vielleicht für das Jahr oder so etwas?


06.10 T !!"HAMURABI: "%5.0
auch eine Besonderheit:
übersetzt heißt die Zeile:
Print Returnzeichen Returnzeichen "Hamurabi" ab hier nur ganze Zahlen auf dem Bildschirm ausgeben
ohne dieses %5.0 hat man Nachkommazahlen im Spiel


Zitat:
in Zeile 04.11 ist ein Sprung nach 7.70, das gibt es nicht



gute Frage, keine Ahnung. Einfach so lassen und drüber schweigen, easter egg
07.70 T "You found a secret room and a easter egg.."
:-)


Zitat:
sollte in Zeile 04.11 die eine Bedingung nicht I (Q-S)4.20,4.20;D 4.60; lauten?



Im Grunde hast du Recht, aber ich hab keine Ahnung. Müsste man ausprobieren im Spielverlauf.

hier nochmal der Code mit der geänderten 04.80:


Quellcode:

01.01 C     HAMURABI, WRITTEN BY DOUG DYMENT (1969)
01.02 C     FOR DIGITAL EQUIPMENT CORPORATION
01.03 C     angepasst an den KC85 by Dirk (2022)
01.04 C     - German Version -
01.05
01.10 S P=95;S S=2800;S H=3000;S E= 200;S Y=3;S A=1000;S I=5;S Q=1

02.10 S D=0
02.20 D 6;T !!!"Letztes Jahr"!D," verhungerten,"
02.25 T !I," wanderten zu,";S P=P+I;I (-Q)2.30
02.27 S P=FITR(P/2);T !"**PEST**"!
02.30 T !"Population ist"P,!!"Die Stadt besitzt"
02.35 T A," Hektar."!!;I (H-1)2.50;T "Wir haben geerntet"
02.40 D 3.20
02.50 T !" Ratten frassen "E," Scheffel, Du hast jetzt"
02.60 T S," Scheffel im Kornhaus."!

03.10 D 6; D 8;S Y=C+17;T "Land wird gehandelt fuer"
03.20 T Y," Scheffel pro Hektar;"!;S C=1
03.30 D 4.30;A " Kaufen?"Q;I (Q)7.20,3.80
03.40 I (Y*Q-S)3.90,3.60;D 4.60;G 3.30
03.50 D 4.50;G 3.30
03.60 D 3.90:G 4.80
03.70 S A=A+Q;S S=Y*Q;S C=0
03.80 A "zu verkaufen?"Q;I (Q)7.20,3.90;S Q=-Q;I (A+Q)3.50
03.90 S A=A+Q;S S=S-Y*Q;S C=0

04.10 T "Scheffel verwenden"
04.11 A " als Nahrung?"Q;I (Q)7.70;I (Q-S)4.20,4.70;D 4.60;G 4.10
04.20 S S=S-Q;S C=1
04.30 A "Wie viele Hektar"
04.35 A " bepflanzen mit Samen? "D
04.40 I (D)7.20;I (A-D)4.45;I (FITR(D/2)-S-1)4.65;D 4.60;G 4.30
04.45 D 4.50;G 4.30
04.50 D 7;T A," Hektar."!
04.60 D 7;D 2.60
04.65 I (D-10*P-1)5.10;D 7;T P," Einwohner."!;G 4.30
04.70 D 4.20
04.80 D 6;T "Du hast kein Getreide zum saehen !!"; T !; S D=0

05.10 S S=S-FITR(D/2);D 8;S Y=C;S H=D*Y
05.20 D 8;S E=0;I (FITR(C/2)-C/2)5.30;S E=S/C
05.30 S S=S-E+H;D 8;S I=FITR(C*(20*A+S)/P/100+1);S C=FITR(Q/20)
05.40 S Q=FITR(10*FABS(FRAN(8)));I (P-C)2.10;S D=P-C;S P=C;G 2.20

06.10 T !!"HAMURABI:  "%5.0

07.10 I (C)7.20;S C=C-1;D 6;T "Aber du hast nur";R
07.20 D 6;T !"Auf Wiedersehen!"!!;Q

08.10 S C=FITR(5*FABS(FRAN(8)))+1


--
Ich kann 2 Dinge wirklich nur gut, zum einen war es die Fallschirmjägerei und zum anderen Computer. Fragt man, was ich nun besser kann, würden einige sagen das eine, andere würden das andere sagen. Aber im Grunde ist beides gleich: ein großes Abenteuer

Dieser Beitrag wurde am 08.12.2022 um 22:00 Uhr von Dirk mit KC-4 editiert.
Seitenanfang Seitenende
Profil || Private Nachricht || Suche Zitatantwort || Editieren || Löschen
027
08.12.2022, 22:24 Uhr
Dirk mit KC-4




Zitat:
in Zeile 04.11 ist ein Sprung nach 7.70, das gibt es nicht



Das könnte der Staatsstreich sein. Wenn man zu zuviele verhungern lässt gibts eine Revolution. 07.70 könnte dazu der Sprung sein, also:

07.70 T "Es gab einen Staatsstreich und das Volk hat dich als Herrscher abgesetzt"; QUITE

Das würde auch erklären warum diese Zeile bei dem Focal Source Code fehlt. Ohne diese Zeile springt der Compiler zwar nach 07.70, da dort aber nix ist gehts zurück und das Spiel läuft weiter. Mit 07.70 wäre Spielende. Und das haben die entfernt. Ein antiker Cheat, vermutlich der erste Computercheat überhaupt..
--
Ich kann 2 Dinge wirklich nur gut, zum einen war es die Fallschirmjägerei und zum anderen Computer. Fragt man, was ich nun besser kann, würden einige sagen das eine, andere würden das andere sagen. Aber im Grunde ist beides gleich: ein großes Abenteuer

Dieser Beitrag wurde am 08.12.2022 um 22:34 Uhr von Dirk mit KC-4 editiert.
Seitenanfang Seitenende
Profil || Private Nachricht || Suche Zitatantwort || Editieren || Löschen
028
09.12.2022, 08:01 Uhr
Bert




Zitat:
maleuma schrieb
Ich habe mir die KCC-Datei runtergeladen und war etwas überrascht, wie groß die ist.


Das liegt in dem Fall am verwendeten C-Compiler (eigener Stack, eigene Ausgaberoutinen in der C-Runtime).

Es gab auch eine native Version, die auf dem Z80 laufen sollte:

Zitat:

Processor Technology also offered a version of 8k FOCAL, complete with Lunar Lander, for
the Intel 8080-based Altair 8800 system. This was provided for the copying charge of the
tape, while the source code was provided for free with other purchases.[5]


aus: https://en.wikipedia.org/wiki/FOCAL_(programming_language)#FOCAL

Grüße,
Bert
Seitenanfang Seitenende
Profil || Private Nachricht || Suche Zitatantwort || Editieren || Löschen
029
09.12.2022, 13:11 Uhr
volkerp
Default Group and Edit
Avatar von volkerp

Hier noch ein paar Links:

http://bashkiria-2m.narod.ru/index/files/0-11 dort emu.rar, darin: 8K-FOCAL emu\BK0010\Focal.rom


LUNAR.FO
https://groups.google.com/g/comp.os.cpm/c/wj0nK7USPWU


CPM-UG Disk 016:
57472 10. Feb 1985 focal.asm
http://www.retroarchive.org/cpm/cdrom/SIMTEL/CPMUG/CPMUG016.ARK


Viel Spaß beim Anpassen
--
VolkerP

http://hc-ddr.hucki.net
(Z9001, Z1013, LC-80, ...)
Seitenanfang Seitenende
Profil || Private Nachricht || Suche Zitatantwort || Editieren || Löschen
030
10.12.2022, 11:12 Uhr
Hojoe




Zitat:
Dirk mit KC-4 schrieb
hier nochmal der Code mit der geänderten 04.80:



Der Stand ist jetzt ebenfalls auf der GitHib Seite: https://github.com/Hojoe42/KC-z88dk-Demos/tree/main/Focal gelandet

Holger
Seitenanfang Seitenende
Profil || Private Nachricht || Suche Zitatantwort || Editieren || Löschen
Seiten: -1-     [ Technische Diskussionen ]  



Robotrontechnik-Forum

powered by ThWboard 3 Beta 2.84-php5
© by Paul Baecher & Felix Gonschorek