Erweiterter USB-Treiber + neues User Interface

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

Re: Erweiterter USB-Treiber + neues User Interface

Beitrag von siggi » 21.11.2011, 22:19

Hallo Joachim,
habe gerade festgestellt, daß L und CR nicht mehr gehen. Sch ... :cry:

Kaum hat man die Testversion als gut befunden und gibt sie weiter, schon geht nix mehr ..

Ich such nach dem Fehler ( auf C-Ebene sehe ich noch keinen) ....

Gruß
Siggi

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

Re: Erweiterter USB-Treiber + neues User Interface

Beitrag von siggi » 21.11.2011, 22:43

Habe nochmal compiliert, und nun geht's (was immer da auch schief ging):
ufm-V1.1.zip
(20.07 KiB) 148-mal heruntergeladen
Treiber:
USB133.P
(10.75 KiB) 128-mal heruntergeladen
Gruß
Siggi

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

Re: Erweiterter USB-Treiber + neues User Interface

Beitrag von Joachim » 22.11.2011, 15:13

Hallo Siggi,
sobald ich weiß, wo Murphy wohnt, fahren wir zusammen hin. Und dann ....

Ich habe die Version vor der Fehlerbereinigung ausprobiert. Dabei ist mir aufgefallen, dass wenige p-Files nicht geladen werden konnten. Ich ging davon aus, dass damals beim Speichern ein Fehler entstanden ist. Andere wiederum ließen sich einwandfrei laden. Nicht ganz bin ich bei 'M' klar gekommen. Ich dachte, dass ich nach dem Laden auf Mefisdos geleitet werde. Das war nicht der Fall. Hätte das sein sollen?

Grüße
Joachim
Viele Grüße!
Joachim


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

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

Re: Erweiterter USB-Treiber + neues User Interface

Beitrag von siggi » 22.11.2011, 16:24

Hallo Joachim
ja, mit M kommt man ins MEFISDOS wenn man sich auf einem leeren Feld befindet (also z. B. ganz oben). Das hatte ich so eingebaut, daß ein NICHT-MEFISDOSianer beim versehentliche Tastendruck auf M nicht ins Nirvana hüpft. Kann ich aber auch wieder ausbauen, wenn das zu umständlich für MEFISDOSianer ist ..
Bei mir klappt das jedenfalls. Ich habe den Code für die bei mir notwendigen OUT und die POKE 8 für den ZX96 eingebaut.

Das sieht so aus:

Code: Alles auswählen

/* assembler defines */
#define EPSEL 0x7F
#define FRET  0xF65F
#define SELRB 0x3C7A
#define MEFISDOSENTRY 8198
#define WORKPAGE 13
#define FILEPAGE 14

void exec_mefisdos(void)
{
#asm
     call restore81
     ld a,2
     out (EPSEL),a    ; enable MEFISDOS EEPROM and setup program environment
     ld a,WORKPAGE
     ld (8),a       ; POKE 8,13 for ZX96
     ld a,WORKPAGE  ; select work page
     call SELRB
     xor a
     ld (FRET),a    ; set "return to m/c"
     call MEFISDOSENTRY  ; call MEFISDOS
     ld a,4
     out (EPSEL),a
#endasm
     zx_slow();
}
Hoffe, das klappt auch so beim ZX96 und meine OUT (EPSEL) stören da nicht.

Zum Ladeproblem: was war denn das Problem genauer? Absturz beim Verlassen des UFM nach Laden eines P-Files? Da habe ich noch eine Schwachstelle gefunden, weil vom C-Compiler benutzte Register nicht restauriert wurden. Das muß ich noch austesten, dann gibt's heute Abend ein Update ..

Gruß
Siggi

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

Re: Erweiterter USB-Treiber + neues User Interface

Beitrag von Joachim » 22.11.2011, 18:23

Hallo Siggi!
Ja genau, nach dem Laden ist der ZX abgesoffen. Mit anderen P-Files bin ich nach dem einwandfreiem Laden mal zum UFM zurück gekommen und mal nicht. Aber wie gesagt, das war die Version vor der jetzigen.
Grüße
Joachim
Viele Grüße!
Joachim


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

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

Re: Erweiterter USB-Treiber + neues User Interface

Beitrag von siggi » 22.11.2011, 19:09

Hallo Joachim,
hier ein neuer Versuch. Da ist ein Problem behoben, wenn aus dem UFM ins BASIC zurückgekehrt werden sollte (durch X oder Laden eines P-Files durch CR). Da könnte es zum Fehler kommen, weil im C-Programm das IY-Register benutzt wird und bisher nicht restauriert wurde, wenn es ins BASIC zurück ging.

Wenn beim Laden des P-Files mit L schon ein Absturz passiert, dann könnte es an der Programmgröße liegen. Wenn das P-File zu groß ist, könnte es den Stack überschreiben, der ja unterhalb RAMTOP liegt und vom C-Programm benutzt wird (etwas über 100 Byte werden da schon draufgepackt).
Wenn Absturz also bei großem Programm passiert, könnte es das gewesen sein.
Dann am besten mal probieren, ob sich das Programm mit dem Treiber alleine laden läßt (da ist ja weniger Platz auf dem Stack verbraucht).

Und wenn das P-File kleiner ist und sich auch mit dem Treiber nicht laden läßt, dann schicke es mir doch mal zu, damit ich damit mal probieren kann.

UFM setzt allerdings ein expandiertes DFILE voraus und benutzt nach dem Laden ja das des eben geladenen P-Files. Wenn das kollabiert ist (durch SCROLL vor Speichern des Programmes), dann kann es da auch knallen.

Gruß
Siggi
ufm-V1.1a.zip
(19.33 KiB) 143-mal heruntergeladen

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

Re: Erweiterter USB-Treiber + neues User Interface

Beitrag von Joachim » 23.11.2011, 19:21

Hallo Siggi,
sieht gut aus - bis jetzt noch keine Bugs.
Grüße
Joachim
Viele Grüße!
Joachim


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

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

Re: Erweiterter USB-Treiber + neues User Interface

Beitrag von siggi » 23.11.2011, 19:26

Hallo Joachim und andere
ich habe noch einen Bug im UFM gefunden, der manche Abstürze beim Laden erklären könnte:
die Erkennung von P-Files beruht derzeit nur auf Prüfung des Namens, ob darin ein ".P" vorkommt.
Somit werden aber auch Datenfiles, wie z. B. .PT3-Dateien (hat ja auch ein ".P" im Namen) fälschlicherweise als P-File erkannt und in den BASIC-Bereich geladen, was dann in der Regel zum Absturz führt.
Da ist also noch eine Korrektur notwendig ...

Gruß
Siggi

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

Re: Erweiterter USB-Treiber + neues User Interface

Beitrag von siggi » 23.11.2011, 22:03

So, hier die UFM-Version 1.2.
ufm-V1.2.zip
(23.43 KiB) 132-mal heruntergeladen
Neben dem zuvor beschriebenen Fehler beim fälschlichen Laden von P-Dateien habe ich noch etwas verändert:

- es wird nun ca. 50 Byte weniger Platz auf dem Stack benötigt
- M(EFISDOS) kann man (nach Rückfrage) nun überall starten (nicht nur in leerer Zeile)
- beim Laden von Datenfiles wird die Anzahl der geladenen Bytes angezeigt.

Zusätzlich habe ich den Aufruf von MEFISDOS und das Bankswitching so geändert, daß es auch dann klappen müßte, wenn der UFM bei 8K sitzt und sich selbst beim Umschalten auf MEFISDOS ausblendet.
Damit das klappt, habe ich den Umschaltvorgang in eine Routine gepackt, die auf dem Stack abläuft, der ja unterhalb RAMTOP sitzt. Somit wird der Umschaltcode also nicht weggeschaltet und ein zurückschalten auf UFM im RAM (beim ZX96 POKE 8,5) sollte möglich sein.

Das klappt bei mir auch alles, wenn der UFM bei 32K bzw. 40K sitzt.
Aber im 8K-Bereich - da wo es also wichtig wäre - schmiert mein Zeddy ab :(

Hier ist die MEFISDOS-Umschalt-Routine, die den eigentlichen Umschalt-Teil in einen Variablenstring "cmd" kopiert, der auf dem Stack liegen müßte:

Der C-Teil sieht so aus (hier wird "cmd" lokal in main deklariert und somit auf dem Stack angelegt mit 33 Byte Länge):

Code: Alles auswählen

void main()
{
   char cmd[33];  /* also used for MEFISDOS call -> the buffer lenght must be at least 28 bytes */
Aufruf dann so:

Code: Alles auswählen

         exec_mefisdos(cmd);  /* use cmd as buffer for relocated subroutine to call MEFISDOS */
Und die Umschalterei passiert hier:

Code: Alles auswählen

/* assembler defines */
#define EPSEL 0x7F
#define FRET  0xF65F
#define SELRB 0x3C7A
#define MEFISDOSENTRY 8198
#define WORKPAGE 13
#define FILEPAGE 14

void __FASTCALL__ exec_mefisdos(char * buffer)
{
#asm
     ; this code is executed in program space
     push hl        ; save buffer address
     ex de,hl       ; load destination into DE (buffer)
     ld hl, ME_START ; load subroutine to copy
     ld bc, ME_END-ME_START ; calc length
     ldir           ; copy subroutine ME_START into buffer
     call restore81 ; prepare for ROM calls
     pop hl         ; restore subroutine address (buffer)
     call l_dcal    ; call relocated subroutine ME_START in buffer
     jp zx_slow     ; finished

     ; this code must be relocatable and is copied into a buffer on stack and executed there
     ; The buffer lenght must be at least 28 bytes
ME_START:
     ld a,2
     out (EPSEL),a    ; enable MEFISDOS EEPROM and setup program environment
     ld a,WORKPAGE
     ld (8),a       ; POKE 8,13 for ZX96
     call SELRB     ; select work page
     xor a
     ld (FRET),a    ; set "return to m/c"
     call MEFISDOSENTRY  ; call MEFISDOS
     ld a,4         ; switch to RAM at page 4
     out (EPSEL),a
     inc a          ; ZX96: switch to RAM at page 4
     ld (8),a       ; POKE 8,5 for ZX96
     ret
ME_END:
#endasm
}
Frage an die C (Z88DK)- und Assembler-Spezialisten : ist da ein Denkfehler drin und "cmd" liegt nicht auf dem Stack? Oder was sonst könnte falsch sein?

Gruß
Siggi

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

Re: Erweiterter USB-Treiber + neues User Interface

Beitrag von siggi » 24.11.2011, 11:54

Ein Problem bei der Bankumschaltung habe ich gefunden: der Zeddy ist dabei im SLOW-Modus gelaufen, wobei ja die modifizierte Display-Routine im C-Programm (nicht die im ROM) benutzt wird zur Bilderzeugung. Und die wird bei der Bankumschaltung ja auch weggeschaltet, wobei dann der Zeddy beim nächsten Bild über den Jordan hüpft statt in die Display-Routine :roll:

Es besteht also Hoffnung :D

Siggi

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

Re: Erweiterter USB-Treiber + neues User Interface

Beitrag von siggi » 24.11.2011, 18:46

Mal wieder stimmt der Satz:
"Kaum macht man's richtig, schon geht's".
Und so klappt nun auch das Bankswitching im 8K Bereich (zumindest bei mir). :mrgreen:

Beim ZX96 sollte es auch klappen, wenn der UFM bei 8K in dem Ram sitzt, das mit POKE 8,5 eingeblendet ist (darauf schaltet nämlich die Umschaltroutine nach Rückkehr aus MEFISDOS um).

Hier also die korrigierten Dateien:
ufm-V1.2a.zip
(30.4 KiB) 125-mal heruntergeladen
Aus Platzgründen habe ich noch eine kleine Änderung machen müssen: 'E' dient nun einheitlich zum Löschen von Dateien UND Verzeichnissen ('K' entfällt im UFM).

Und hier noch die korrigierte Umschaltroutine UFM <-> MEFISDOS:

Code: Alles auswählen

/* assembler defines */
#define EPSEL 0x7F
#define FRET  0xF65F
#define SELRB 0x3C7A
#define MEFISDOSENTRY 8198
#define WORKPAGE 13
#define FILEPAGE 14

void __FASTCALL__ exec_mefisdos(char * buffer)
{
#asm
     ; This code is executed in program space
     push hl        ; save buffer address
     ex de,hl       ; load destination into DE (buffer)
     ld hl, ME_START ; load subroutine to copy
     ld bc, ME_END-ME_START ; calc length
     ldir           ; copy subroutine ME_START into buffer
     call _rom_slow ; terminate C display routine, which will be paged out!!!
     pop hl         ; restore subroutine address (buffer)
     call l_dcal    ; call relocated subroutine ME_START in buffer -> MEFISDOS
     jp zx_slow     ; Finished. Enable C display routine again

     ; This code must be relocatable and is copied into a buffer on stack and executed there
     ; The buffer lenght must be at least 28 bytes
     ; IY is already restored before call!
ME_START:
     ld a,2
     out (EPSEL),a  ; enable MEFISDOS EEPROM and setup program environment
     ld a,WORKPAGE  ;
     ld (8),a       ; POKE 8,13 for ZX96
     call SELRB     ; select work page
     xor a          ;
     ld (FRET),a    ; set "return to m/c"
     call MEFISDOSENTRY  ; call MEFISDOS
     ld a,4         ; switch back to RAM at page 4
     out (EPSEL),a  ;
     inc a          ; ZX96: switch to RAM at page 5
     ld (8),a       ; POKE 8,5 for ZX96
     ret
ME_END:
#endasm
Gruß
Siggi

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

Re: Erweiterter USB-Treiber + neues User Interface

Beitrag von siggi » 25.11.2011, 20:03

siggi hat geschrieben: Aus Platzgründen habe ich noch eine kleine Änderung machen müssen: 'E' dient nun einheitlich zum Löschen von Dateien UND Verzeichnissen ('K' entfällt im UFM).
Und da habe ich gleich wieder einen Fehler eingebaut, denn ich habe vergessen, daß der Treiber ja immer noch ein "K" zum Löschen von Verzeichnissen haben will, aber ich schicke ihm da auch ein 'E' :cry:

Also mindestens ein Update kommt noch, ich willl aber erstmal noch abwarten, ob noch weitere Fehler entdeckt werden ...

Gruß
Siggi

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

Re: Erweiterter USB-Treiber + neues User Interface

Beitrag von siggi » 26.11.2011, 12:18

Und noch ein Problem (anläßlich eines UFM-Absturzes beim Laden von Bodos 25thanni.p) erkannt:
ich hatte ja schon mal geschrieben, daß der UFM ein expandiertes DFILE erwartet. Mit einem kollabierten (z. B. nach SCROLL) kann er nichts anfangen. Und das war auch das Problem bei 25thanni.p

Leider hilft ein Bildschirmlöschen nicht weiter, da die in Z88DK benutzte CLS Routine keine Expansion vornimmt und auch ein expandiertes DFILE erwartet. Falls das im Z88DK nicht geändert wird, dann könnte ich noch einen Workaroung (Call der CLS-ROM-Routine mit Expansion) einbauen, damit das DFILE so umgepfriemelt wird, daß UFM damit klar kommt ..

Nachteil ist allerdings, daß damit u. U der Startbildschirm eines Spieles gelöscht wird.

Was ist Euch lieber? Erhalt des Startbildschirms oder gelegentliche Abstürze wegen kollabiertem DFILE?
Oder ich baue einen sofortigen Ausstieg aus UFM ins BASIC ein, wenn DFILE nicht expandiert ist?

Gruß
Siggi

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

Re: Erweiterter USB-Treiber + neues User Interface

Beitrag von Paul » 26.11.2011, 17:59

Gehe ich recht in der Annahme das ein Auffüllen eines nicht expandierten D-Files statt CLS nicht realisierbar ist?
[Dummuser]
Intuitiv könnte man, so man feststellen könnte das eine Zeile nicht vollständig ist, in dieser Zeile ein PRINT AT am Zeilenende machen. So würde diese Zeile expandiert und in dem Fall ist auf dem Bildschirm ja auch Platz.
Das für alle Zeilen müsste reichen.
Jetzt ist 25thanni ja wohl eher ein 16K Programm. Da fragt man sich warum dort das D_File nicht expandiert ist.
Ist der Speicher dort so knapp?
[/Dummuser]
Theoretisch ist zwischen Theorie und Praxis kein Unterschied.
Praktisch allerdings wohl.

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

Re: Erweiterter USB-Treiber + neues User Interface

Beitrag von siggi » 26.11.2011, 18:55

Hallo Paul,
das mit PRINT_AT (ganz hinten) hört sich erstmal gut an, gibbet aber nicht in C (ist aber von mir in die Z88DK-Wunschliste schon eingegeben), zumindest wenn man sich auf die Einfach-Console (nicht ANSI-Terminalemulation, die HRG erfordert) beschränken will (muß, aus Platzgründen). Da müßte man also allenfalls die ROM-Routine direkt aufrufen. Ließe sich vermutlich machen.

In 25thanni.p ist kein Platzprobem der Grund, sondern der Code stammt direkt aus Bodos Assembler. Und im Assembler-Source tippt man sinnvollerweise ein kollabiertes D-File ein, weil man sich nicht die Finger mit vielen NOPs wundtippen will :lol:

Aber inzwischen sieht meine angedachte Lösung so aus: bei Laden mit CR geht man sowieso ins BASIC, da braucht UFM das DFILE nicht mehr und es kann kollabiert bleiben. Dann bleibt auch ein Startbildschirm erhalten.
Wenn man das Program mit "L" lädt, will man ja explizit im UFM bleiben, um das Programm ggf. zu "ent-autorunnen" oder nach MEFISDOS zu schaufeln. Dann wir durch die interaktive Bedienung der Startbildschirm eh zerhauen, also kann man ihn auch löschen und expandieren.

Gruß
Siggi

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

Re: Erweiterter USB-Treiber + neues User Interface

Beitrag von siggi » 27.11.2011, 11:13

So, ein Zwischenstand zu kommendem UFM V1.3:
UFM kann nun aus einem Programm mit kollabiertem D-FILE gestartet werden (er expandiert dann dieses erstmal). Weiterhin kann UFM nun "normale" Programme mit kollabiertem D-FILE laden. Wenn es mit "L" geladen wurde, damit man im UFM bleibt, wird das D-File wieder expandiert.

Bodos 25anni.p gehört anscheinend nicht zu den "normalen" Programmen: es läßt sich nun zwar mit "CR" laden und startet dann automatisch, aber bei "L" schmiert UFM immer noch ab (das Expandieren von Bodos D-FILE klappt anscheinend nicht).

Vielleicht kann Bodo dazu was sagen? Sind in 25thanni.p vielleicht auch Systemvariablen anders als üblich gesetzt?

Gruß
Siggi

PS: Sind sonst noch irgendwelche Probleme mit UFM 1.2a aufgetreten?

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

Re: Erweiterter USB-Treiber + neues User Interface

Beitrag von Joachim » 27.11.2011, 11:51

Hallo Siggi,
ich habe UFM 1.2a mit USB1.3.3 im Einsatz und konnte keine weiteren Probleme feststellen. Allerdings habe ich nur mit 'normalen' Programmen experimentiert.
Grüße
Joachim
Viele Grüße!
Joachim


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

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

Re: Erweiterter USB-Treiber + neues User Interface

Beitrag von siggi » 28.11.2011, 20:32

Hallo zusammen,
hier nun die UFM Version 1.3, die nun auch mit Programmen zurecht kommt, die ein "normal" kollabiertes D-FILE haben.
UFM läßt sich nun auch bei kollabiertem D-File starten. Ein mit L geladenes Programm mit kollabiertem D-FILE wird expandiert, bei Laden mit CR (und damit auch Exit) bleibt es unverändert.

Zudem habe ich noch ein paar kosmetische Verbesserungen vorgenommen.

Hoffe, daß ich nun mehr Probleme aus- als eingebaut habe :roll:
UFM-V1.3.zip
(20.65 KiB) 143-mal heruntergeladen
Und hier noch ein Programm mit schön kollabiertem D-File zum Testen:
SCROLL.P
(342 Bytes) 137-mal heruntergeladen
Gruß
Siggi

Benutzeravatar
bodo
User
Beiträge: 319
Registriert: 14.02.2007, 17:21
Kontaktdaten:

Re: Erweiterter USB-Treiber + neues User Interface

Beitrag von bodo » 29.11.2011, 20:33

25thanni hat deshalb ein kollabiertes DFILE, weil es überhaupt nicht gebraucht wird. Und die 3/4KB 00-Bytes müssen ja nicht in der Datei herumliegen, gell? :D
B0D0: Real programmers do it in hex.

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

Re: Erweiterter USB-Treiber + neues User Interface

Beitrag von siggi » 01.12.2011, 19:39

So, ich habe nochmal eine neue Version 1.4 gebastelt, bei der ich am Design noch was verändert habe: der UFM zeigt nun eine Titel- und Fußleiste, womit klarer ersichtlich ist, ob man sich im UFM oder noch im USB-Treiber befindet. Das sieht dann so aus:
UFM-V1.4_316x240.jpg
UFM-V1.4_316x240.jpg (8.04 KiB) 8636 mal betrachtet
Das Speichern von Programmen habe ich noch etwas vereinfacht: sitzt man mit dem Balken auf einem P-File, wird erstmal abgefragt, ob man das Programm überschreiben will. Verneint man das, wird ein neuer Programmname zum Speichern abgefragt. Sitzt man auf einem anderen File, entfällt die Frage nach dem Überschreiben.
Man muß also nicht erst auf ein leeres Feld navigieren, wenn man ein neues Programm abspeichern will.

Und hier ist er:
UFM-V1.4.zip
(21.06 KiB) 131-mal heruntergeladen
Gruß und viel Spaß
Siggi

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

Re: Erweiterter USB-Treiber + neues User Interface

Beitrag von siggi » 10.12.2011, 11:05

Moin,
habe noch 'ne Bug im UFM 1.4 gefunden: gibt man ein direktes Treiber-Kommando (UFM 'T') ein, das direkt auf den Bildschirm schreibt(z. B Treuber-Kommando 'H' oder 'I'), dann stimmt nach Rückkehr die vom Treiber hinterlassene Bildschirmadresse nicht mehr mit der überein, von der UFM ausgeht. Dann geht dort die Bildschirmausgabe dann an die falsche Stelle und der UMF kann auch abstürzen, weil er ja auch direkt im D-File rumpopelt.

Da sich noch keiner über den Bug beschwert hat, scheint er nicht sooo relevant zu sein. Gelegentlich (außer jemand schreit "sofort haben will") mache ich also noch mal eine neue UFM-Version ...

Gruß
Siggi

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

Re: Erweiterter USB-Treiber + neues User Interface: UFM 2.0

Beitrag von siggi » 26.05.2013, 18:12

Ich habe das schlechte Wetter ausgenutzt und mal wieder den UFM-Source angefaßt. Grund ist, daß aktuelle Z88DK-Versionen, weil sie nun auch beim Zeddy-Zeichensatz Groß/Kleinbuchstaben unterscheiden, etwas dickere Bibliotheken haben als früher. Damit UFM auch damit compiliert werden kann und immer noch (zusammen mit dem USB-Treiber) in einen 8k-Block paßt, habe ich den Code etwas optimiert, damit es wieder paßt.

Dabei habe ich gleich noch ein paar Problemchen im Z88DK festgestellt: die "Timing"-Routinen in_Pause() und in_Wait() kommen gelegentlich im UFM ins schleudern, vermutlich weil da permament zwischen SLOW und FAST bzw. der Zeddy- bzw. Z88DK-Videoroutine umgeschaltet wird. Ich habe nun einfache Warteschleifen drin und damit läuft alles problemlos.

Hier ist der Source und die compilierten Programme für 8K, 32K und 40K Laufadresse (wie gehabt). Version in nun 2.0
UFM-V2.0.zip
(28.4 KiB) 116-mal heruntergeladen
Und hier ist nochmal der Asdis-Source des letzten USB-Treibers V1.33 (für PIO)
USB133.P
(10.75 KiB) 105-mal heruntergeladen
Bitte beachten: der erste Sprung in der Sprungtabelle führt zum UFM. Dessen Marke "UFM" muß angepaßt werden, je nachdem, wo UFM liegt.

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

Datenkraken bitte nicht füttern!

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

Re: Erweiterter USB-Treiber + neues User Interface: UFM V2.3

Beitrag von siggi » 14.10.2018, 11:25

Es gibt mal wieder einen neuen UFM (V2.3)

Da habe ich nun Druckersupport eingebaut: da wo es was zu sehen gibt, das man vielleicht ausdrucken will, habe ich die Taste "Z" (passenderweise beim Zeddy mit "COPY" bedruckt) hinzugefügt (auch im Hauptmenü).

Sofern der Drucker angeschlossen ist, kann man also Screenshots machen (z. B. vom Hilfe-Screen, vor Aufruf von MEFISDOS, beim Anzeigen von Dateien im aktuellen Dir).

Beachtet werde muß, daß der Tastendruck vom UFM ausgewertet wird. Wenn man also lange Directories durchblättert, ist da noch der USB-Treiber am Ruder (der diesen Tastendruck NICHT auswertet). Wenn man also drucken will, muß man erst im UFM zurück sein: UFM-Titelzeile wieder sichtbar.

Gleich noch ein paar kleine Verbesserungen:
Beim "S" (SAVE) kann man auch direkt Binärdateien abspeichern (muß dazu also nicht in den Treiber rein), indem man Adresse und Länge mit eingibt (wo der Dateiname abgefragt wird, z. B. "rom.bin,0,8192"). Der String wird dann so zum Treiber geschickt, wie er ist (muß also der Treibersyntax entsprechen und die Zahlen müssen ggf. "verhext" worden sein).
Das ging zwar schon beim alten UFM, war aber nicht dokumentiert :(

Und wenn der Treiber beim Anzeigen der Directory ein "<CR>" auf dem Bildschirm hinterlassen hat, dann wird das nicht mehr vom UFM als Dateiname interpretiert (was dann zum Fehler führte), sondern die Zeile wird gelöscht.

Alle UFM-Versionen (für die verschiedenen Adressbereiche, außer der für 11192) fragen beim ersten Start die Adresse des Treibers ab (sind nicht mehr "fest verdrahtet"). Danach muß UFM (ggf. zusammen mit dem Treiber in einem Datenblock) abgespeichert werden, damit die Abfrage bei weiteren Starts nicht erneut erfolgt.

Beim Update meine "UFM-32K" bin ich z. B. so vorgegeangen:
Habe meinen UFM-8K und UFM-32K geladen (letzerer enthält den Treiber bei 32K und alten UFM ab 35768).
Mit UFM-8K habe ich UFM-35768.bin nach 35768 geladen und damit alten UFM überschrieben.
Dann habe ich mit USR 35768 den neuen UFM gestartet und die Adresse 32768 seines Treibers eingegeben.
Dann habe ich den UFM beendet und den Speicherbereich 32768 (8192 Bytes) abgespeichert, der Treiber und neuen UFM enthält.

Hier ist alles drin:
UFM-V2.3.zip
(41.09 KiB) 15-mal heruntergeladen


Ach ja: der UFM hat ja auch ein "O"-Kommando zum öffnen einer Datei zum "Streamen" (bei meinem Midiplayer benutzt). Das funktioniert aber nur, wenn der Treiber das auch kann. Ich hänge deshalb gleich meinen UFM-8K mit dran, der den Treiber (v2.00) ffür den ZX81NU enthält, der das kann:
UFM-8K.P
(13.48 KiB) 10-mal heruntergeladen
Und so sieht der Hilfe-Screen aus (wo man unten auch die Taste "Z" zur Auswahl hat):

UFM.jpg
UFM.jpg (73.28 KiB) 531 mal betrachtet


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

Datenkraken bitte nicht füttern!

Antworten