6 Seiten ZX81 in der aktuellen Retro Gamer

ZX-Team Forum
Benutzeravatar
siggi
User
Beiträge: 2083
Registriert: 06.12.2005, 08:34
Wohnort: D, Hessen, tiefste Werreraa
Kontaktdaten:

Re: 6 Seiten ZX81 in der aktuellen Retro Gamer

Beitrag von siggi » 02.03.2017, 11:56

PokeMon hat geschrieben:
siggi hat geschrieben: (*) Ich muß beim ZxMore und ZXBlast mit DS-L immer "händisch" Programme laden. Ich vermisse schon lange eine brauchbare Schnittstelle, daß der Compi ohne meine Hilfe neue P-Files laden und ausführen kann :mrgreen:
Sinclair's BASIC ROM, ZXNU, ZxPand, Mefisdos und Toms USB-Treiber (und Nachfolger) haben diese Programmschnittstelle schon seit Ewigkeiten .....
Naja - die Frage ist, für was es konkret gebraucht wird. Natürlich kann ich den LOAD im ROM umbiegen anstelle der manuellen Lademöglichkeiten. Dann existiert eben das normale LOAD nicht mehr.
In der ZX81-Instanz weine ich dem Sinclair Tape Load/Save keine Träne nach, darauf kann ich verzichten :D
Wenn es darum geht, aufwändige Initialisierungen zu vereinfachen (den Treiber da hin laden, hier ein paar Bytes, da was umbiegen usw.) - da bietet ZXmore und ZXblast die Möglichkeit eine speziell (manuell) präparierte Instanz als .BAK File zu speichern resp. einzufrieren und beim nächsten Mal durch einen simplen LOAD Befehl wieder herzustellen.


Das mag für die Hardware im ZxMore/ZxBlast ausreichend sein, nicht aber für externe Hardware, die nicht "eingefroren" wird.
Bsp:
- die von IPCONFIG ins Ram bei 8K geschriebene ZeddyNet-Konfiguration wird "eingefroren", aber nicht der Zustand der WIZ-Register auf der ZeddyNet-Karte. Laufen die auseinander, funzt nichts mehr. Es ist nach Restore des eingefrorenen Zustands auf jeden Fall ein neues IPCONFIG notwendig.
- die mit dem TNFS-Server ausgehandelten Verbindungsdaten mögen aus Seite des Zeddies eingefroren sein. Davon weiß der TNFS-Server aber später nichts mehr: es muß ein neuees MOUNT beim TNFS-Server erfolgen.

Wie ein (fast) automatisches Einloggen in einen TNFS-Server funktioniert (wobei BOOT IPCONFIG nachlädt und diese dann NCLI, mit dem dann vom Server geladen wird) hatte ich da ja beschrieben:
http://forum.tlienhard.com/phpBB3/viewt ... 929#p26923

Hier noch andere Beispiele für LOAD/SAVE aus Programmen:
- Spiele speichern/laden den Spielstand auf ZXpand (einige Bytes als Binärdaten, nicht komplettes P-File!)
- für den PT3-Player werden nacheinander viele PT3-Dateien (Musik) von USB-Stick(VDRIVE) oder aus Mefisdos nach 25000 geladen, um sie von dort "abzuspielen"
- gleiches wird mit DIASHOW-Programm gemacht, das HIRES-Bilder nachlädt
- TREECOPY und NETCOPY kopieren ganze Verzeichnisbäume (innerhalb Mefisdos bzw. zum TNFS-Server). Die mögen heute noch nicht benötigt werden, aber spätestestens, wenn ZXMore/ZXBlast mit Mefisdos laufen :D

Gruß
Siggi
Mein ZX81-Web-Server: online seit 2007
http://zx81-siggi.endoftheinternet.org/index.html

Benutzeravatar
mrtinb
User
Beiträge: 35
Registriert: 30.12.2016, 07:16
Wohnort: Kolding, Denmark
Kontaktdaten:

Re: 6 Seiten ZX81 in der aktuellen Retro Gamer

Beitrag von mrtinb » 02.03.2017, 12:50

PokeMon hat geschrieben:Naja - die Frage ist, für was es konkret gebraucht wird. Natürlich kann ich den LOAD im ROM umbiegen anstelle der manuellen Lademöglichkeiten. Dann existiert eben das normale LOAD nicht mehr. Wenn es darum geht, aufwändige Initialisierungen zu vereinfachen (den Treiber da hin laden, hier ein paar Bytes, da was umbiegen usw.) - da bietet ZXmore und ZXblast die Möglichkeit eine speziell (manuell) präparierte Instanz als .BAK File zu speichern resp. einzufrieren und beim nächsten Mal durch einen simplen LOAD Befehl wieder herzustellen.
I was assuming it was a feature that would be added later. Like ZXpand has the option "X" to use the modified ROM or not. A simpler implementation would be to shift between two ROMs in DS-0.
Martin
ZX81, Lambda 8300, Commodore 64, Mac G4 Cube

Benutzeravatar
Paul
User
Beiträge: 2463
Registriert: 10.03.2010, 12:01
Wohnort: Germanys west end

Re: 6 Seiten ZX81 in der aktuellen Retro Gamer

Beitrag von Paul » 02.03.2017, 13:25

msch hat geschrieben:Schade, dass dieses Forum keine Polls erlaubt, dann könnten wir abstimmen, ob der ZX81 Multitasking kann oder nicht :mrgreen:
Klar Millionen Fliegen können nicht irren: Scheisse schmeckt :mrgreen:
Theoretisch ist zwischen Theorie und Praxis kein Unterschied.
Praktisch allerdings wohl.

Benutzeravatar
PokeMon
User
Beiträge: 4404
Registriert: 31.08.2011, 23:41

Re: 6 Seiten ZX81 in der aktuellen Retro Gamer

Beitrag von PokeMon » 02.03.2017, 18:45

siggi hat geschrieben: Das mag für die Hardware im ZxMore/ZxBlast ausreichend sein, nicht aber für externe Hardware, die nicht "eingefroren" wird.
Bsp:
- die von IPCONFIG ins Ram bei 8K geschriebene ZeddyNet-Konfiguration wird "eingefroren", aber nicht der Zustand der WIZ-Register auf der ZeddyNet-Karte. Laufen die auseinander, funzt nichts mehr. Es ist nach Restore des eingefrorenen Zustands auf jeden Fall ein neues IPCONFIG notwendig.
- die mit dem TNFS-Server ausgehandelten Verbindungsdaten mögen aus Seite des Zeddies eingefroren sein. Davon weiß der TNFS-Server aber später nichts mehr: es muß ein neuees MOUNT beim TNFS-Server erfolgen.

Wie ein (fast) automatisches Einloggen in einen TNFS-Server funktioniert (wobei BOOT IPCONFIG nachlädt und diese dann NCLI, mit dem dann vom Server geladen wird) hatte ich da ja beschrieben:
http://forum.tlienhard.com/phpBB3/viewt ... 929#p26923
Ja gut - das ist ein Argument. Ich möchte aber auch keine aufwändigen Script Files programmieren. Wenn Du mit LOAD zurecht kommst, kann man das ja implementieren und sollte dann auch die anderen Sachen erschlagen. Kommt Zeit, kommt Rat. Im Moment bin ich gerade dabei die Subdirectories zu implementieren. Ist ein wenig tricky. Man kann dann aber wahlweise mit absoluten oder relativen Pfaden arbeiten und das ZXblast merkt sich das letzte Directory wenn man da reinwechselt.
Wer seinen Computer ehrt, lebt nicht verkehrt.

Benutzeravatar
PokeMon
User
Beiträge: 4404
Registriert: 31.08.2011, 23:41

Re: 6 Seiten ZX81 in der aktuellen Retro Gamer

Beitrag von PokeMon » 02.03.2017, 18:52

msch hat geschrieben:Schade, dass dieses Forum keine Polls erlaubt, dann könnten wir abstimmen, ob der ZX81 Multitasking kann oder nicht :mrgreen:
Völlig unabhängig davon, ob man Hintergrundtasks als Multitasking Feature qualifiziert oder nicht - es besteht ja nicht mal ein Task Kontext/Steuerung, geschweige denn ein Memory Management. Und da unterscheidet sich der ZX81 schon mal gewaltig von allen mir bekannten Embedded Systemen. Wenn Programme auf spezielle Zieladressen kompiliert werden müssen und damit noch nicht mal sichergestellt ist, ob verschiedene Programme von verschiedenen Benutzern auf einem System einsatzbar sind ist die Verwendung von Multitasking Harakiri. Aber es soll ja Leute geben, die auf solch einen Schmarrn resp. Herausforderungen.

Dass es selbst hier im Forum innerhalb von gut 20 Jahren nicht mal einen eigenen Memory Manager gibt, den mehrere Entwickler verwenden und sich daran halten, zeigt ja ganz deutlich die Problematik. Man stelle sich ein Windows vor, bei dem nur bestimmte Programme zur gleichen Zeit oder vielleicht noch in einer bestimmten Reihenfolge gestartet werden müssen, damit das System nicht crasht. Und mit Programme meine ich Anwendungsprogramme mit User-Interaktion. Wobei jetzt sicher gleich aus irgendeiner Ecke ein Szenario von Betriebssystem Tasks mit User-Interaktion aus dem Hut gezaubert wird. Könnte ich drauf wetten. :wink:
Wer seinen Computer ehrt, lebt nicht verkehrt.

Benutzeravatar
siggi
User
Beiträge: 2083
Registriert: 06.12.2005, 08:34
Wohnort: D, Hessen, tiefste Werreraa
Kontaktdaten:

Re: 6 Seiten ZX81 in der aktuellen Retro Gamer

Beitrag von siggi » 02.03.2017, 20:41

PokeMon hat geschrieben:Wenn Du mit LOAD zurecht kommst, kann man das ja implementieren und sollte dann auch die anderen Sachen erschlagen. Kommt Zeit, kommt Rat.
SAVE und LOAD (aber bitte auch für Binärfiles auf beliebige Adressen) sind schon mal ein guter Anfang (schneller, aber nicht komfortabler als TAPE :wink: ).
Zu dem was mit Mefisdos seit ca. Anfang des Jahrtausends möglich ist, ist dann aber noch viel Luft nach oben (außer Load/Save auch Dir, Delete, Rename, Flag, MakeDir, DelDir, Copy, Move - letztere beiden auch mit nur einem SD-Reader von einer Karte auf einen andere Karte, siehe auch http://forum.tlienhard.com/phpBB3/viewt ... 561#p27066 ). Leider wird dieser Komfort bisher von keinem anderen Massenspeichermedium des Zeddy erreicht (und den PC als "Koprozessor" des ZX81 zum Löschen oder Umbenennen von Dateien auf dem Stick zu benutzen: :roll: )

Gruß
Siggi
Mein ZX81-Web-Server: online seit 2007
http://zx81-siggi.endoftheinternet.org/index.html

Benutzeravatar
siggi
User
Beiträge: 2083
Registriert: 06.12.2005, 08:34
Wohnort: D, Hessen, tiefste Werreraa
Kontaktdaten:

Re: 6 Seiten ZX81 in der aktuellen Retro Gamer

Beitrag von siggi » 03.03.2017, 12:51

PokeMon hat geschrieben:Völlig unabhängig davon, ob man Hintergrundtasks als Multitasking Feature qualifiziert oder nicht - es besteht ja nicht mal ein Task Kontext/Steuerung, geschweige denn ein Memory Management. Und da unterscheidet sich der ZX81 schon mal gewaltig von allen mir bekannten Embedded Systemen.
Na dann kennst Du wohl nur einen Teil der real existierende Embedded Systeme. :wink:

Wie ich vorher schon geschrieben hatte: einen (von 3) Prozessoren (Siemens C167) eines embedded Systems habe ich in "nacktem" C ohne irgend ein Betriebssystem programmiert. Denn das ist billiger, als Lizenzen für ein "richtiges Multitasking OS" ( z. B. für OS-9/68K, das vorher benutzt worden war) zu zahlen. Und bei der Fertigung zählt jeder Klicker und Knopf mindestens doppelt!

Das "Memory Management" hat in diesem Falle der Linker erledigt, der dafür gesorgt hat, daß jede C-Funkton ein eigenes Plätzchen im EPROM gefunden hat.
Und die Task-Steuerung (Scheduler) hatte ich ja im C-Hauptprogramm selbst implementiert. Und den Task-Kontext hat sich jede Task selbst in ihren lokalen STATIC Variablen gemerkt und beim nächsten Aufruf da weitergemacht, wo sie am Ende ihrer letzten Aktivität die Kontrolle an den Scheduler zurückgegeben hatte ("kooperatives Multitasking"). Wenn Scheffe mit Terminen kommt, die Fertigung nix zahlen will, findet man halt Lösungen für das reale Problem ....

Gruß
Siggi
Mein ZX81-Web-Server: online seit 2007
http://zx81-siggi.endoftheinternet.org/index.html

Benutzeravatar
Joachim
User
Beiträge: 865
Registriert: 06.11.2004, 20:21

Re: 6 Seiten ZX81 in der aktuellen Retro Gamer

Beitrag von Joachim » 03.03.2017, 15:20

Mann Siggi, du hast noch die 'Switches' für Save/Load von Zeilen (unter von-bis-Angabe), Variablen, Bildschirm und Speicherblöcken vergessen - um hier mal Reklame zu machen ;)
Viele Grüße!
Joachim


ZX80, ZX81, ZX-Spectrum, ZX96, ZX2000, ZXmore, ZX81NU, Blauer Engel, AX81

Benutzeravatar
PokeMon
User
Beiträge: 4404
Registriert: 31.08.2011, 23:41

Re: 6 Seiten ZX81 in der aktuellen Retro Gamer

Beitrag von PokeMon » 03.03.2017, 17:40

siggi hat geschrieben:
PokeMon hat geschrieben:Völlig unabhängig davon, ob man Hintergrundtasks als Multitasking Feature qualifiziert oder nicht - es besteht ja nicht mal ein Task Kontext/Steuerung, geschweige denn ein Memory Management. Und da unterscheidet sich der ZX81 schon mal gewaltig von allen mir bekannten Embedded Systemen.
Na dann kennst Du wohl nur einen Teil der real existierende Embedded Systeme. :wink:
Ich rede von professionellen Anwendungen. :mrgreen:
Wenn jemand ein OS selbst programmiert weil er kein Geld hat für entsprechende Lizenzen - ja da fehlen mir fast die Worte.
Aber vielleicht arbeitest Du ja umsonst - ähm kostenlos ...
Wer seinen Computer ehrt, lebt nicht verkehrt.

Benutzeravatar
tokabln
User
Beiträge: 1069
Registriert: 10.11.2013, 00:24
Wohnort: D, Berlin (Mariendorf)

Re: 6 Seiten ZX81 in der aktuellen Retro Gamer

Beitrag von tokabln » 03.03.2017, 18:03

Naja... also kooperatives Multitasking geht auch nur solange gut, bis eine Task abgestürzt ist und somit ihre abgelaufene Rechenzeit nicht mehr zurückgeben kann, damit die nächste Task Rechenzeit bekommen kann. Dann steht das ganze Ding... siehe WIN95 als abschreckendes OS mit kooperativem Multitasking.
Lieben Gruß Torsten
BMZ MFA, ZX80Core, AX81, ZX81, ZX81NU, Spectrum+, Harlequin, Amstrad NC100, Cambridge Z88, C64, C128D, Amiga 500, Amiga 1200, Atari Portfolio, HP200LX, IBM PC 5155, TP755c, T41, PS/2 (Model 40SX), PS/2E, Accura 101, Apple //e

Benutzeravatar
siggi
User
Beiträge: 2083
Registriert: 06.12.2005, 08:34
Wohnort: D, Hessen, tiefste Werreraa
Kontaktdaten:

Re: 6 Seiten ZX81 in der aktuellen Retro Gamer

Beitrag von siggi » 03.03.2017, 18:44

PokeMon hat geschrieben: Ich rede von professionellen Anwendungen. :mrgreen:
Wenn jemand ein OS selbst programmiert weil er kein Geld hat für entsprechende Lizenzen - ja da fehlen mir fast die Worte.
Aber vielleicht arbeitest Du ja umsonst - ähm kostenlos ...
Mach Dir keine Sorgen, ich habe das in meiner Arbeitszeit getan und wurde angemessen dafür bezahlt :mrgreen:
Und die Gerätchen sind heute noch im Einsatz. Und wenn ich nicht dafür bezahlt werde, programmiere ich Zeddies :D

Siggi

PS: In der Automobilbranche ist der Preisdruck noch viel höher, weil da auch höhere Stückzahlen dahinter stehen. Die Entwicklungszeit für ein eigenes Mini-OS wird einmal gezahlt, die Lizenz für käufliches OS für jedes gefertigte Gerät. Das leistet sich ein Hersteller allenfalls für Prototypen oder Kleinstserien ....

PS/2: Seit es kostenloses Linux gibt (das nun in jedem Fernseher oder Kühlschrank drin ist), hat sich da die Lage geändert, sofern Linux für den verwendeten Microcontroller verfügbar ist und der Ressourcenoverhead vertretbar ist
Mein ZX81-Web-Server: online seit 2007
http://zx81-siggi.endoftheinternet.org/index.html

Benutzeravatar
PokeMon
User
Beiträge: 4404
Registriert: 31.08.2011, 23:41

Re: 6 Seiten ZX81 in der aktuellen Retro Gamer

Beitrag von PokeMon » 03.03.2017, 19:56

siggi hat geschrieben:In der Automobilbranche ist der Preisdruck noch viel höher, weil da auch höhere Stückzahlen dahinter stehen.
Die Automobilbranche - das ist für mich eh eine Mischung aus Jammerlappen und Halsabschneider. Es gibt doch Embedded Linux, Android aber selbst wenn man für Mikrocontroller in C programmiert, dann steht doch immer eine Entwicklungsumgebung dahinter, die auch Multitasking Strukturen zumindest rudimentär unterstützen. Wenn man mit malloc() arbeitet nutzt man ja auch schon einen Memory Manager. Alles Dinge die beim Zeddy fehlen (leider).

Meiner Meinung nach rechnen die einfach nur falsch in der Automobilbranche. Wenn die die Gehälter der Entwicklungsteams, die vielen unsäglichen Meetings, die ganzen externen Mitarbeiter und Berater bis zu den Abteilungsleitern und zum Teil Vorständen in einen Topf werfen würden, könnte man davon prima Lizenzen kaufen, da bin ich mir sicher. Aber dann wäre der Abteilungsleiter und die Projektleiter arbeitslos und so rechnen sie halt dem Vorstand vor, dass sich das rechnen würde. Reiner Selbstschutz. Wenn ich sehe wie bei Grossprojekten das Geld rausgehauen wird. Da fällt mir momentan immer BER ein - 4 Milliarden über Schätzpreis - was könnte man da alles an Lizenzen kaufen ... :mrgreen:
Wer seinen Computer ehrt, lebt nicht verkehrt.

Benutzeravatar
siggi
User
Beiträge: 2083
Registriert: 06.12.2005, 08:34
Wohnort: D, Hessen, tiefste Werreraa
Kontaktdaten:

Re: 6 Seiten ZX81 in der aktuellen Retro Gamer

Beitrag von siggi » 03.03.2017, 20:59

PokeMon hat geschrieben:Wenn man mit malloc() arbeitet nutzt man ja auch schon einen Memory Manager. Alles Dinge die beim Zeddy fehlen (leider).
Sicher? https://www.z88dk.org/wiki/doku.php?id= ... allocation :wink:
Mein ZX81-Web-Server: online seit 2007
http://zx81-siggi.endoftheinternet.org/index.html

Benutzeravatar
siggi
User
Beiträge: 2083
Registriert: 06.12.2005, 08:34
Wohnort: D, Hessen, tiefste Werreraa
Kontaktdaten:

Re: 6 Seiten ZX81 in der aktuellen Retro Gamer

Beitrag von siggi » 03.03.2017, 21:17

PokeMon hat geschrieben:Wenn die die Gehälter der Entwicklungsteams, die vielen unsäglichen Meetings, die ganzen externen Mitarbeiter und Berater bis zu den Abteilungsleitern und zum Teil Vorständen in einen Topf werfen würden, könnte man davon prima Lizenzen kaufen, da bin ich mir sicher.
Die Rechnung ist ganz einfach: mal will 10000 Geräte verkaufen, eine OS-9-Lizenz kostet (angenommene Hausnummer) 10 Teuros, dann macht das 100000 Teuros. Stattdessen kann man einen Softwareentwickler <del><del><del><del><del><del><del><del><del><del><del><del><del><del> Controller einstellen, der einem genau vorrechnen kann, daß man bei 10000 Geräten locker 100000 Teuronen sparen kann, wenn man kein OS einsetzt :mrgreen:
Mein ZX81-Web-Server: online seit 2007
http://zx81-siggi.endoftheinternet.org/index.html

Benutzeravatar
PokeMon
User
Beiträge: 4404
Registriert: 31.08.2011, 23:41

Re: 6 Seiten ZX81 in der aktuellen Retro Gamer

Beitrag von PokeMon » 04.03.2017, 00:16

Ja, sicher. z88dk ist halt eine Singletask Lösung. Das führt wieder zur Ausgangsfrage des Multitasking zurück. Wie schreibst Du mit z88dk zwei Programme, die über malloc auf einen gemeinsamen Speicher zugreifen, aber beide nichts voneinander wissen ? malloc wurde hier m.E. aus reinen Kompatibilitätsgründen eingeführt, um C Software einfacher portieren zu können.

Eine Speicherverwaltung muss sozusagen von Grund auf in einem (Multitasking) Betriebssystem implementiert werden. Sonst beißt sich der Compiler bei lückenhafter Implementierung die Zähne aus. Nur wenn malloc über eine im Betriebssystem verankerte Speicherverwaltung implementiert wurde, kann es leisten, was es soll. Den Zugriff auf den Speicher für mehrere Programme (oder Tasks) zu realisieren.

Wo wir dabei sind - verlinke doch mal den Abschnitt über Multitasking Programmierung vom z88dk Compiler ... :wink:
Wer seinen Computer ehrt, lebt nicht verkehrt.

Antworten