NKC Forum
Registrieren | FAQ | Suche | Wer ist online? | Mitgliederliste | Heutige Beiträge | Einloggen



Autor Thema: Fehler in Z80 Programmen
DerInder
Voll in Gange
Seitenadmins
***
ID # 2


  Erstellt am 01. April 2016 13:48 (#1)  |  Zitat Zitat   PN PN   E-Mail E-Mail
Moin Moin,

da ich mich z.Zt. etwas um ein Z80 System kümmere, ist mir aufgefallen, dass das Grundprogramm, Gosi und Basic nen Bug haben.

Und zwar leseen alle Drei den Port 60h (Seitenregister der GDP) aus. Bei der GDP-64 ist Der aber nur schreibbar, bei der GDP-HS und der GSP-FPGA ist dieser Port auch lesbar, liefert dann aber Pixels zurück.
Von daher sind diese Routinen Müll.
Das macht sich bei der GDP-FPGA durch fehlende Pixel bemerkbar, da auch der XOR-Modus über den Port 60h (Bit 0) gesteuert wird.

Ich hab daher mal alle Drei gepatcht.

Für Leute die es selbermachen wollen:
Einfach nur nach DB 60 (IN A,(60h)) suchen und durch 3E 00 (LD A,0) ersetzen.

-----------------------
Gruß
-=jens=-

Beiträge: 774 | Mitglied seit: Juni 2004 | IP-Adresse: gespeichert
m.haardt
Fühlt sich wie zu Hause
***
ID # 93


  Erstellt am 01. April 2016 19:15 (#2)  |  Zitat Zitat   PN PN   E-Mail E-Mail
Meinst Du sowas wie in flomon?

in a,(page)
and 00001111b
or b
out (page),a

Steht im Datenblatt, dass der nur schreibbar ist, und ist das auch wirklich so? In Datenblaettern steht ja auch schon mal Unsinn.

Michael

Beiträge: 406 | Mitglied seit: April 2008 | IP-Adresse: gespeichert
DerInder
Voll in Gange
Seitenadmins
***
ID # 2


  Erstellt am 01. April 2016 19:41 (#3)  |  Zitat Zitat   PN PN   E-Mail E-Mail
Moin Moin,

also ist der FLOMON auch betroffen ;)
Das Page-Register ist bei der GDP-64 definitiv nur schreibbar, aber wie gesagt bei der GDP-HS und GDP-FPGA wird darüber der Video-Speicher ausgelesen.

-----------------------
Gruß
-=jens=-

Beiträge: 774 | Mitglied seit: Juni 2004 | IP-Adresse: gespeichert
m.haardt
Fühlt sich wie zu Hause
***
ID # 93


  Erstellt am 01. April 2016 21:53 (#4)  |  Zitat Zitat   PN PN   E-Mail E-Mail
Ich kenne den Grafikchip gar nicht. Wenn Du einen Patch hast, nehme ich den aber gerne auf, weil ich sowieso an flomon arbeiten werde. Der betroffene Code sieht so aus:

clear:: ;bildschirm loeschen eine page
;akku = pageadresse
;loeschen ist flickernd
push af
call wait ;warten bis cmd fertig von frueher
pop af
and 11110000b ;
ld b,a
in a,(page)
and 00001111b
or b
out (page),a

Aktuell habe ich flomon 4 erstmal so geändert, dass man es ohne Fehlermeldungen bauen kann.

Wenn die bestellten Teile angekommen wären, würde ich den Pullup auf das CPU Board löten und danach ergibt ein IN, was niemand dekodiert, hoffentlich auch 0xff und die Funktion zur Erkennung der KEY würde funktionieren, damit in dem Fall die SER mit 9600 8N1 benutzt wird.

Langfristig möchte ich von sdcard booten können.

Michael

Beiträge: 406 | Mitglied seit: April 2008 | IP-Adresse: gespeichert
DerInder
Voll in Gange
Seitenadmins
***
ID # 2


  Erstellt am 01. April 2016 22:17 (#5)  |  Zitat Zitat   PN PN   E-Mail E-Mail
Moin,

wenn du direkt mit den Sourcen arbeitest, kannst du die Sequenz auf:

clear:: ;bildschirm loeschen eine page
;akku = pageadresse
;loeschen ist flickernd
push af
call wait ;warten bis cmd fertig von frueher
pop af
and 11110000b ;
out (page),a

eindampfen.
Ich hatte nur am Hexcode gepatcht.

Übrigens ist das die Setpage Routine, die ist im Grundprogramm, Gosi und Basic identisch.
Copy and paste error und das vor 30 Jahren :D

-----------------------
Gruß
-=jens=-

Beiträge: 774 | Mitglied seit: Juni 2004 | IP-Adresse: gespeichert
m.haardt
Fühlt sich wie zu Hause
***
ID # 93


  Erstellt am 02. April 2016 10:59 (#6)  |  Zitat Zitat   PN PN   E-Mail E-Mail
Klar, copy & paste war damals schon so beliebt wie heute. :)

Die Änderung in flomon ist also:

@@ -657,10 +667,6 @@ clear:: ;bildschirm loeschen eine page
call wait ;warten bis cmd fertig von frueher
pop af
and 11110000b ;
- ld b,a
- in a,(page)
- and 00001111b
- or b
out (page),a
clear1:
ld a,00000111b ;blank of sonst fehler beim clear

Ja, ich benutze den Source, dafür gibt's den ja. Es kostete Hans Werner und mich etwas Mühe, herauszufinden, wie genau man das baut, aber nun gibt es ein SUB File.

Da ich git benutze, sind alle Änderungen nachvollziehbar. Ich habe allerdings noch kein öffentliches Repository, kann aber bei Interesse Snapshots und ROM Images ins Web stellen.

Michael

Beiträge: 406 | Mitglied seit: April 2008 | IP-Adresse: gespeichert
DerInder
Voll in Gange
Seitenadmins
***
ID # 2


  Erstellt am 03. April 2016 18:28 (#7)  |  Zitat Zitat   PN PN   E-Mail E-Mail
Moin Michael,

genau so wie du es beschrieben hast, ist es in Ordnung.

Wie kommt es, das du auf dem FLOMON4 aufbaust? Der FLOMONCG ist doch wesentlich übersichtlicher und dazu noch sehr gut dokumentiert.

-----------------------
Gruß
-=jens=-

Beiträge: 774 | Mitglied seit: Juni 2004 | IP-Adresse: gespeichert
hschuetz
Administrator
Seitenadmins
******
ID # 3


  Erstellt am 03. April 2016 20:45 (#8)  |  Zitat Zitat   PN PN   E-Mail E-Mail   HP HP
Hallo Jens,
FlomonCG macht dir richtig Stress, deine VGA kannste knicken, macht nur Müll, läuft ohne Grafikkarte nicht, und Michael möchte den NKC nur mit der SER bedienen...
Ich hatte verschiedenes ausprobiert... und die Quellen vom Flomon 4 ist auch vorhanden... und für Zeat ist auch Platz.
Wir haben uns auf Flomon 4 geeinigt...da könnten noch einige bauen!!

-----------------------
Ob 8bit oder 16 oder 32 ist doch egal, Haupsache selbstgebaut!

Beiträge: 794 | Mitglied seit: Juni 2004 | IP-Adresse: gespeichert
m.haardt
Fühlt sich wie zu Hause
***
ID # 93


  Erstellt am 03. April 2016 21:08 (#9)  |  Zitat Zitat   PN PN   E-Mail E-Mail
So ist es. Drum nehme ich git, damit hat man alle Änderungen einzeln und kommentiert, falls doch mal jemand auf flomoncg aufbauen möchte.

Michael

Beiträge: 406 | Mitglied seit: April 2008 | IP-Adresse: gespeichert
DerInder
Voll in Gange
Seitenadmins
***
ID # 2


  Erstellt am 14. April 2016 21:19 (#10)  |  Zitat Zitat   PN PN   E-Mail E-Mail
Nochmal zu den Fehler.

FLOMON bietet ja seit der 1.x Version auch die Unterstützung für den XOR-Modus (RMW-Modus). Von daher müsste der Code für die Seitenumschaltung korrkt lauten:

call wait ;warten bis cmd fertig von frueher
pop af
and 11110000b ;
ld b,a
ld a,(RMW)
and 00000001b - zu Sicherheit
or b
out (page),a

Das setzt allerdings vorraus, dass der Zustand des RMW-Modus in einem Byte gespeichert wird (hier RMW).
Das muss dann mit den Befehlen: "r CR" bzw. "r rmw CR" gesetzt/gelöscht werden.
Ach ja der Befehl "F n1 n2 n3 rmw CR" ist davon auch direkt betroffen.

-----------------------
Gruß
-=jens=-

Beiträge: 774 | Mitglied seit: Juni 2004 | IP-Adresse: gespeichert
m.haardt
Fühlt sich wie zu Hause
***
ID # 93


  Erstellt am 24. April 2016 19:54 (#11)  |  Zitat Zitat   PN PN   E-Mail E-Mail
Da ich keine GDP habe: Du sprichst von einem page Register. Im Datenblatt des 9366 ist Register 0 beim Schreiben "cmd", beim Lesen "status". Ein page Register finde ich nicht.

Wenn Du einen fertigen Patch fuer flomon 4 hast, waere mir das sehr lieb, weil ich es nicht selbst testen kann.

Da ich mit dem 9366 nicht vertraut bin: Gibt es ein Register, was man beim Start von flomon setzen und zuruecklesen kann (idealerweise mit 0x55 oder 0xaa), um die Anwesenheit der GDP zu erkennen, ohne was kaputtzumachen? Da die KEY das nicht erlaubt und das mit dem Pullup nicht geht, sehe ich keinen sonstigen Weg.

Michael

Beiträge: 406 | Mitglied seit: April 2008 | IP-Adresse: gespeichert
DerInder
Voll in Gange
Seitenadmins
***
ID # 2


  Erstellt am 24. April 2016 20:23 (#12)  |  Zitat Zitat   PN PN   E-Mail E-Mail
Moin,

das page-Register ist nicht vom 9366 sondern ist ein '273er auf der GDP-Karte (Adr.: 60h).

Als Register zur Erkennung kann man z.B. X LSB (Adr.: 79h) nehmen, wenn man die Erkennung gleich zum Anfang macht, spielt es keine Rolle wenns verändert wird.

Das Gleiche würde ich auch mit der SER machen, da kann man das Command oder Control-Register dafür nehmen.

Mein Vorschlag wäre: Erkennung der beiden Karten, wenn nur eine davon vorhanden ist, wird die Ein- und Ausgabe darüber abgewickelt.
Für den Fall, dass beides Vorhanden ist (wäre bei mir der Fall), könnte man den Startschirm über GDP und SER ausgeben und je nachdem ob ein gültiges Zeichen über die SER oder KEY empfangen wird, wird der jeweilige IO-Kanal genutzt.

Übrigens noch ein Problem, das Auftritt wenn man über die SER arbeitet: Der FLOMON stellt ein MT950.. Terminal dar. Z.B. Wordstar benutzt diese Schnittstelle. Mir ist leider keine Terminalemulation unter Windoofs/Linux bekannt, die dieses Terminal kann. Deshalb sollte man den FLOMON vielleicht auf VT100 umschreiben (Wordstar lässt sich auch daran anpassen). Dadurch wüder die Grafikbefehle wegfallen und man bekämme einiges an Platz z.B. für SD-Card Anbindung.

-----------------------
Gruß
-=jens=-

Beiträge: 774 | Mitglied seit: Juni 2004 | IP-Adresse: gespeichert
m.haardt
Fühlt sich wie zu Hause
***
ID # 93


  Erstellt am 24. April 2016 21:39 (#13)  |  Zitat Zitat   PN PN   E-Mail E-Mail
Ah, jetzt verstehe ich das. Es geht um ein nicht lesbares Latch!

Wenn beides vorhanden ist, dann hat man vermutlich doch auch eine KEY mit den Schaltern, oder?

VT100 ist durchaus aufwaendig. Vielleicht waere VT52 eine Loesung. Ich habe auch schon ueberlegt, die Grafikfunktionen zu entfernen. CP/M Programme sollten GSX benutzen oder von mir aus selbst die GDP ansprechen, so wie Basic und Gosi. Das wird durch die Terminalemulation im Flomon nicht schneller.

Danke fuer die neue Version. Ich habe sie eingepflegt, aber ich probiere das heute nicht mehr aus. Bei naechster Gelegenheit versuche ich erstmal den GDP Test, um ohne GDP dann SER zu benutzen.

Michael

Beiträge: 406 | Mitglied seit: April 2008 | IP-Adresse: gespeichert
DerInder
Voll in Gange
Seitenadmins
***
ID # 2


  Erstellt am 24. April 2016 21:47 (#14)  |  Zitat Zitat   PN PN   E-Mail E-Mail
Nun, ich gehe einfach mal davon aus, dass wenn man die GDP hat auch eine KEY da ist. Ich sehe also GDP/KEY als eine Einheit, die SER wäre die Andere.

VT52 wäre auch ne Möglichkeit ;)

-----------------------
Gruß
-=jens=-

Beiträge: 774 | Mitglied seit: Juni 2004 | IP-Adresse: gespeichert



| NDR Computer | Boardregeln


Tritanium Bulletin Board 1.6
© 2010–2016 Tritanium Scripts


Seite in 0,971523 Sekunden erstellt
19 Dateien verarbeitet
gzip Komprimierung ausgeschaltet
1318,23 KiB Speichernutzung