Autostart mit ZXPand+

ZX-Team Forum
Antworten
Thomas F.
User
Beiträge: 82
Registriert: 03.04.2015, 10:19

Autostart mit ZXPand+

Beitrag von Thomas F. » 18.08.2019, 17:51

Grüß Euch,

kurz vorweg:

Meine Assembler Kenntnisse tendieren weiterhin gegen Null, aber immerhin habe ich es hinbekommen den/einen ZX-Assembler zu starten, ein Beispielprogramm einzutippen und dank der ersten Gehversuche mit den Funkschau Sonderheften konnte ich es sogar mit "RAND USR 16514" starten... Ich war begeistert! ;)

Dabei kam mir aber wieder eine Idee in den Sinn an der ich schon mal gescheitert mit. Die Autostartfunktion vom ZXPand+ kann ja jedes beliebige Programm starten, man muss es natürlich in "MENU.P" umbenennen. Schwieriger wird es bei den Programmen die nach dem Laden noch einen extra Aufruf benötigen wie z.B. der Assembler hier: RAND USR 3E4

Ein einfaches

Code: Alles auswählen

10 LOAD "ZXASS"
20 RAND USR 3E4
geht nicht.

Jemand eine Idee wie man das mit Basic hinbekommen könnte?

Viele Grüße,
Thomas

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

Re: Autostart mit ZXPand+

Beitrag von Paul » 18.08.2019, 18:28

Code: Alles auswählen

9900 SAVE "TEST" 
9910 RAND USR 16514

Nach dem Laden macht der Zeddy da weiter wo er aufgehört hat.
Liebe Grüße Paul
Theoretisch ist zwischen Theorie und Praxis kein Unterschied.
Praktisch allerdings wohl.

Thomas F.
User
Beiträge: 82
Registriert: 03.04.2015, 10:19

Re: Autostart mit ZXPand+

Beitrag von Thomas F. » 18.08.2019, 19:03

Hallo Paul,

war jetzt glaube ich missverständlich von mir. Was ich meinte ist ein Basicprogramm, dass ich in MENU.P umbenennen kann damit es mir diekt den ZX-Assembler nach dem einschalten lädt/startet. Einfach nur ZXASS.P in MENU.P umbennen reicht ja nicht, da der Aufruf RAND USR 3E4 immer noch nach dem Laden eingegeben werden muss. Was ja auch gar nicht so tragisch ist, aber mich würde interessieren ob es da eine Lösung für gibt.

Hatte das auch mit PowerBasic so gemacht, so hatte ich es immer direkt nach einem Reset wieder zur Verfügung.

EDIT: habe nochmal nachgesehen, da PowerBasic ja auch noch "Aufrufe" braucht, habe ich das wohl falsch in Erinnerung. Schade...

Gruß,
Thomas

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

Re: Autostart mit ZXPand+

Beitrag von siggi » 19.08.2019, 09:15

Moin
ein Programm (Menu.p), das ein anderes lädt, kann danach keine weitere Aktionen auf BASIC-Ebene (USR) ausführen, weil es ja beim LOAD sich selbst überschreibt und damit der USR-Aufruf weg ist.
Lösung: der USR-Call muß im geladenen Programm stehen, das dann nach SAVE (durch sich selbst) autostartfähig wird und nach dem SAVE weitermacht (wo dann der USR-Call ausgeführt werden kann.

Du musst also das Assembler-Pfile ergänzen und z. B. am Ende hinzufügen:

Code: Alles auswählen

9000 STOP Damit das ursprüngliche Programm da nicht reinläuft
9010 SAVE "MENU.P"
9020 RAND USR xxxxx
9030 RUN (start des "normalen" Assemler-P-Files
Diesen Code dann mit RUN 9010 starten, wodurch das Programm durch sich selbst abgespeichert wird. Wird dann das abgespeicherte Programm "Menu.p" später wieder ausgeführt, macht es bei Zeile 9020 mit dem USR-Call weiter und startet dann den Original-Assembler-Teil.

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

Datenkraken bitte nicht füttern!

Thomas F.
User
Beiträge: 82
Registriert: 03.04.2015, 10:19

Re: Autostart mit ZXPand+

Beitrag von Thomas F. » 19.08.2019, 12:00

Hallo Siggi,
ein Programm (Menu.p), das ein anderes lädt, kann danach keine weitere Aktionen auf BASIC-Ebene (USR) ausführen, weil es ja beim LOAD sich selbst überschreibt und damit der USR-Aufruf weg ist.
Klar, daran habe ich gar nicht gedacht...

Ich glaube, ich belasse es erst mal so wie es ist... ;)

Thomas

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

Re: Autostart mit ZXPand+

Beitrag von siggi » 19.08.2019, 13:27

Komplex, aber vielleicht nicht unmöglich, wäre so eine Lösung:
wenn man MEMOCALC kennt, dann weiß man, dass ein M/C (Memocalc @ 8K) direkt BASIC-Kommandos wie LOAD/SAVE ausführen kann. Memocalc speichert/lädt dann seine Tabelle als BASIC-Programm, während es selbst als M/C (das nicht überschrieben wird) die Kontrolle behält.

Man könnte also das tun:
man schreibt ein M/C, das z. B. bei 32K läuft und das ein "LOAD Assember.p" ausführen läßt und dann den USR-Call (direct als "call ...") ausführt, bevor es die Kontrolle ans neu geladene BASIC-Programm übergibt.

Dieses Programm wird in eine REM-Zeile eines BASIC-Hilfsprogrammes (Help.p) gepackt, das von Menu.p gestartet wird.
Das loslaufende Test.p kopiert dann das M/C aus der REM-zeile auf seine Laufadresse bei 32K und ruft es dort auf. Das übernimmt dann die Kontrolle und lädt die eigentliche Anwendung nach, wodurch Test.p überschrieben wird.

Offen ist nur, ob ZxPand+ nach einem LOAD die Kontrolle an sich reißt (z. B. über Kaperung des Stacks), oder die Kontrolle ans aufrufende M/C-Programm wieder korrekt zurück gibt. Das müßte man klären ....

Und man muß natürlich RAM an einer Stelle haben, die beim LOAD nicht überschrieben wird (z. B. bei 8K oder über 32K)

Es gibt fast nix, was mit dem Zeddy nicht geht :wink:

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

Datenkraken bitte nicht füttern!

Antworten