ZX81-Kompatibler aus Standardbauteilen: ZX81NU

ZX-Team Forum
Benutzeravatar
ZX-Heinz
User
Beiträge: 1576
Registriert: 05.12.2011, 14:45

Re: ZX81-Kompatibler aus Standardbauteilen: ZX81NU

Beitrag von ZX-Heinz » 25.04.2018, 09:59

Hallo,
es gibt ein neues 32k-ROM für den ZX81NU. Es beruht auf holmatics ROM von 2017 (S/L von Code-Pgmen), einer Modifikation des H4TH ROMs von bokje mit Einbindung des Vdrives von mir. Viel Spaß damit.

Das funktionierende 32k-ROM (suffix .txt entfernen):
Dateianhänge
NU5_Oli17.ROM.txt
(32 KiB) 38-mal heruntergeladen
Zuletzt geändert von ZX-Heinz am 24.05.2018, 13:38, insgesamt 9-mal geändert.

Benutzeravatar
Jens
User
Beiträge: 1149
Registriert: 23.08.2005, 13:31
Wohnort: D-31582 Nienburg/Weser

Re: ZX81-Kompatibler aus Standardbauteilen: ZX81NU

Beitrag von Jens » 25.04.2018, 10:47

Hallo Heinz.

Ganz wunderbar. Das funktioniert prima!!!

Danke dafür.

Gruß
Jens
Der ZX81 rechnet mit allem, nur nicht mit seinem Besitzer...
Neues aus der KI-Welt... Die Automate kann sich selbst essen.

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

Re: ZX81-Kompatibler aus Standardbauteilen: ZX81NU

Beitrag von Paul » 25.04.2018, 13:19

Wie macht ihr das mit dem mehr an Speicher den der NU hat?
Funktioniert diese Version auch mit dem Peter RAM?
Theoretisch ist zwischen Theorie und Praxis kein Unterschied.
Praktisch allerdings wohl.

Benutzeravatar
ZX-Heinz
User
Beiträge: 1576
Registriert: 05.12.2011, 14:45

Re: ZX81-Kompatibler aus Standardbauteilen: ZX81NU

Beitrag von ZX-Heinz » 25.04.2018, 14:55

Hallo Paul,
dieses neue ROM ist für den originalen ZX81NU mit 128k RAM-chip, der dann zu 80k Memory führt. (Peter-RAM kenne ich nicht). Bisher musste man am NU den 128k-chip durch einen 32k-chip (62256) ersetzen. Für den ZX81-Modus ist das aber weniger schön.
ABER: Ich musste nun feststellen, das das ROM doch noch Probleme macht. Möglicherweise gibt es noch Interferenzen mit dem upper RAM. Jedenfalls läuft der Befehl VLIST nicht so, wie er sollte. Alle anderen, die ich probiert habe, laufen aber.
Mit einem 62256 geht VLIST.
Gruß, Heinz


Lies auch: viewtopic.php?f=2&t=1029&p=36233#p36233

Benutzeravatar
ZX-Heinz
User
Beiträge: 1576
Registriert: 05.12.2011, 14:45

Re: ZX81-Kompatibler aus Standardbauteilen: ZX81NU

Beitrag von ZX-Heinz » 02.05.2018, 21:38

Heureka! :D :D :D
Das in viewtopic.php?f=2&t=1029&start=450#p36233 noch genannte Problem ist gelöst! Jetzt läuft H4TH auf dem NU mit vollem Speicherausbau. Und MrX geht nun auch!
Sowie der letzte Schliff am neuen ROM gemacht ist, stelle ich das ROM hier ein. Den entscheidenden Durchbruch fand bokje! Ihm gilt mein besonderer Dank.

Benutzeravatar
ZX-Heinz
User
Beiträge: 1576
Registriert: 05.12.2011, 14:45

Re: ZX81-Kompatibler aus Standardbauteilen: ZX81NU

Beitrag von ZX-Heinz » 04.05.2018, 10:14

Das angekündigte NU-ZX81-H4TH-VDRIVE-ROM ist da und funtktioniert perfekt im NU mit 128k-RAM chip! Bokje hatte Mitte April eine neue H4TH-Quelltext-Version erstellt, in der alle Systemvariablen vom Bereich #FXXX in den Bereich #7XXX verjagt wurden. Anschließend wurde neu assembliert.

" bokje: The reason is that with full RAM available, the display file is located at #BD00, which doesn't work with M1NOT. The alternative #FD00 doesn't work either because character data will be loaded with A15=0."

In dieses ROM hatte ich meinen Vdrive-Treiber eingebettet, und alles schien zu funktionieren. Wenn aber Zeilen mit mehr als 32 Zeichen auf dem Bildschirm geschrieben wurden, kam es zum Rebooten des Systems. Bokje schlug daher vor, die gleiche Änderung wie für den Zxmore auch hier vorzunehmen, nämlich den Interrupt-Modus von IM0 auf IM1 zu ändern. Das erwies sich als Durchbruch!

bokje: Actually, H4TH doesn't set the INT mode; the default is IM 0, which the NU also uses.

Zeitgleich bat ich siggi, das bis dato vorliegende ROM auf seinem ZX81 mit vollem RAM-Ausbau zu testen um zu sehen, ob nicht noch ein versteckter #FXXX-CALL vorhanden sei. Siggi stellte fest, dass auf seinem Rechner alles funktionierte. Gleichzeitig empfahl er zu prüfen, welcher Interrupt-Modus (1 oder 2) verwendet würde.

Inzwischen war das auf IM1 umgestellte H4TH-ROM fertig und funktionierte perfekt. Und das Beste ist, dass nun auch die Reboots bei angestecktem MrX verschwunden sind! Plapperchip unter H4TH ist also jetzt auch auf dem NU möglich! Meinen besten Dank an bokje und siggi!

Zwei weitere Schmankerl:

bokje: Two additional changes were the "+-" bug fix, and bases higher than 16 are possible, so that HEX 0019 952A 24 TO BASE D. prints the correct answer!

Versucht einmal den obigen BASE-Befehl und freut Euch über die Antwort. (D. = double precision)
Und hier ist das neue ROM mit ZX81&H4TH, gleich als 32k Version zum Brennen für den NU (txt-Endung natürlich streichen) :
NU5_Oli17.ROM.txt
(32 KiB) 56-mal heruntergeladen
-----------------------------------------------

Benutzeravatar
Jens
User
Beiträge: 1149
Registriert: 23.08.2005, 13:31
Wohnort: D-31582 Nienburg/Weser

Re: ZX81-Kompatibler aus Standardbauteilen: ZX81NU

Beitrag von Jens » 04.05.2018, 23:27

Hallo Heinz, hallo bokje!

Das habt Ihr super gemacht - funktioniert tadellos... ach, wenn ich doch nur programmieren könnte :-)

Vielen Dank und Gruß
Jens
Der ZX81 rechnet mit allem, nur nicht mit seinem Besitzer...
Neues aus der KI-Welt... Die Automate kann sich selbst essen.

Benutzeravatar
ZX-Heinz
User
Beiträge: 1576
Registriert: 05.12.2011, 14:45

Re: ZX81-Kompatibler aus Standardbauteilen: ZX81NU

Beitrag von ZX-Heinz » 05.05.2018, 09:43

Jens hat geschrieben:
04.05.2018, 23:27
Das habt Ihr super gemacht - funktioniert tadellos... ach, wenn ich doch nur programmieren könnte :-)
Hallo Jens,
danke für das Lob! Zum Programmieren lernen empfehle ich Dir das Programm PHASOR
viewtopic.php?f=2&t=2338&p=29761#p29761
oder
PHASOR.TXT
(512 Bytes) 53-mal heruntergeladen
Da Du ja gerade mit dem MrX spielst, passt es vielleicht. Erfreu Dich dran und versuche dann, die Zeilen zuverstehen und zu modifizieren.
Falls Fragen entstehen, antworte ich gern.
Falls Du weitgehend damit klar kommst, schicke ich Dir gern mein Sprachausgabeprogramm ("Wir sind die Roboter..."). Das ist auf Grund seiner Länge (7 Seiten) etwas empfindlicher.

Technische Hilfe für PHASOR: MrX anstecken (#DF/#1F, wie üblich). Das Programm PHASOR.TXT auf einen Stick kopieren, den Namen auf PHASOR ändern (d.h. .TXT streichen), Stick an Vdrive, ggf INIT am NU.
Nun Splitscreen (Shift&1) öffnen. Der Kursor steht dann oben rechts im "Editorscreen". Mit nochmaligem Shift&1 Kursor in die untere Hälfte (=Execute-screen) wechseln und " PHASOR" VLOAD <CR> eingeben. (Leerzeichen zwischen " und P beachten! Das Leerzeichen gehört in Forth zum " - Kommando).
Nun sollte der Programmtext automatisch in den Editorscreen geladen werden, im unteren Schirm kommt zum Schluss das Prompt: D:\> OK.
Schließlich CPL <CR> und PHASOR <CR>. Falls sich das Vdrive verschluckt, hilft PRT. Für BREAK nur kurz Shift&Space drücken (Warmstart), langes Halten führt bei H4TH zum Kaltstart.


Gruß, Heinz

Benutzeravatar
Jens
User
Beiträge: 1149
Registriert: 23.08.2005, 13:31
Wohnort: D-31582 Nienburg/Weser

Re: ZX81-Kompatibler aus Standardbauteilen: ZX81NU

Beitrag von Jens » 05.05.2018, 10:44

Guten Morgen Heinz.

Vielen Dank für das Programm. Das klappt prima!

Was das Programm macht, kann ich ja hören :mrgreen: Aber ich bin in Forth so gut wie überhaupt nicht bewandert, aber ich versuche das mal aus dem Bauch heraus:

: MRX ( DATA LATCH MRX ) CODE D7 7D D3 DF D7 7D D3 1F C9 ;C ; hier generierst Du den neuen Befehl MRX und setzt die Tonhöhe
: PAUSE 100 0 DO LOOP ; eine kurze Pause
: SILENCE 0 0 MRX ; Ruhe vor dem Sturm
: INI HEX 0F 8 MRX FE 7 MRX 0 0 MRX 0 1 MRX ; In kleinen Schritten wird die Tonhöhe verringert
: PHASOR INI FE 60 DO I 0 MRX PAUSE 5 +LOOP SILENCE ; die 60 Schritte werden durchlaufen - sind sie um, ist wieder Ruhe

Ich hoffe, das war grob richtig. Die Chance steht genau fifty/fifty :lol:

Gruß
Jens
Der ZX81 rechnet mit allem, nur nicht mit seinem Besitzer...
Neues aus der KI-Welt... Die Automate kann sich selbst essen.

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

Re: ZX81-Kompatibler aus Standardbauteilen: ZX81NU

Beitrag von siggi » 05.05.2018, 12:29

Hallo Heinz
kannst Du das Forth-Rom alleine hier einstellen? Ich wollte es mal mit dem ZxMore ausprobieren, da nützt mir das NU-Image nichts.

Und es gab hier ja mal einen, der wollte unbedingt den Source von Forth sehen. Ist denn der Sourcecode verfügbar oder wegen Copyright unter Verschluß?

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

Datenkraken bitte nicht füttern!

Benutzeravatar
ZX-Heinz
User
Beiträge: 1576
Registriert: 05.12.2011, 14:45

Re: ZX81-Kompatibler aus Standardbauteilen: ZX81NU

Beitrag von ZX-Heinz » 05.05.2018, 12:36

siggi hat geschrieben:
05.05.2018, 12:29
Hallo Heinz
kannst Du das Forth-Rom alleine hier einstellen? Ich wollte es mal mit dem ZxMore ausprobieren, da nützt mir das NU-Image nichts.

Und es gab hier ja mal einen, der wollte unbedingt den Source von Forth sehen. Ist denn der Sourcecode verfügbar oder wegen Copyright unter Verschluß?

Gruß
Siggi
Hallo siggi,
das Forth-ROM liegt auf der dritten 8k-Bank des NU, aber hier ist es solitär (.txt streichen):
H4VDNU5.ROM.txt
(8 KiB) 43-mal heruntergeladen
Der VDRIVE-Treiber benutzt die Adressen und Routinen, wie sie T0m für den NU (und ZX81) geschrieben hat. Insbesondere eine vereinheitlichte RD/WR-Routine abhängig vom Inhalt des E-Registers.
Bzgl. Quelltext müsste bokje sich äußern.
Gruß, Heinz

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

Re: ZX81-Kompatibler aus Standardbauteilen: ZX81NU

Beitrag von siggi » 05.05.2018, 13:06

Hallo Heinz
am ZxMore ist das Rom leider nicht brauchbar. Zwar stürzt ZxMore nicht ab, aber der Bildschirm rollt durch und es ist nur ein schwarzes Quadrat (Cursor) sichtbar, aber keine eingetippten oder ausgebenen Zeichen (Verhalten also wie bei meinen ersten Tests auch).

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

Datenkraken bitte nicht füttern!

bokje
User
Beiträge: 107
Registriert: 02.05.2015, 15:38

Re: ZX81-Kompatibler aus Standardbauteilen: ZX81NU

Beitrag von bokje » 05.05.2018, 13:54

Die Quelle ist im Anhang. Mit meinem ZXmore und CPLD, HALTs im DFILE sind unverzichtbar...
Dateianhänge
h4thl.zip
(23.36 KiB) 43-mal heruntergeladen

Benutzeravatar
ZX-Heinz
User
Beiträge: 1576
Registriert: 05.12.2011, 14:45

Re: ZX81-Kompatibler aus Standardbauteilen: ZX81NU

Beitrag von ZX-Heinz » 05.05.2018, 15:39

siggi hat geschrieben:
05.05.2018, 13:06
Hallo Heinz
am ZxMore ist das Rom leider nicht brauchbar.
Für den ZXmore hat bokje schon vor mehr als einem Jahr einen ROM erstellt, falls ich mich nicht irre. Die Unterschiede zum NU-ROM kenne ich nicht, da ich keinen ZXmore habe.
Heinz

Benutzeravatar
ZX-Heinz
User
Beiträge: 1576
Registriert: 05.12.2011, 14:45

Re: ZX81-Kompatibler aus Standardbauteilen: ZX81NU

Beitrag von ZX-Heinz » 05.05.2018, 16:28

Jens hat geschrieben:
05.05.2018, 10:44
Guten Morgen Heinz.
Vielen Dank für das Programm. Das klappt prima!
Was das Programm macht, kann ich ja hören :mrgreen: Aber ich bin in Forth so gut wie überhaupt nicht bewandert, aber ich versuche das mal aus dem Bauch heraus:

: MRX ( DATA LATCH MRX ) CODE D7 7D D3 DF D7 7D D3 1F C9 ;C ; hier generierst Du den neuen Befehl MRX und setzt die Tonhöhe
: PAUSE 100 0 DO LOOP ; eine kurze Pause
: SILENCE 0 0 MRX ; Ruhe vor dem Sturm
: INI HEX 0F 8 MRX FE 7 MRX 0 0 MRX 0 1 MRX ; In kleinen Schritten wird die Tonhöhe verringert
: PHASOR INI FE 60 DO I 0 MRX PAUSE 5 +LOOP SILENCE ; die 60 Schritte werden durchlaufen - sind sie um, ist wieder Ruhe

Ich hoffe, das war grob richtig. Die Chance steht genau fifty/fifty :lol:
Gruß Jens
Hallo Jens,
es freut mich sehr, dass Du die Herausforderung angenommen hast, und 50/50 ist ungefähr richtig. Also PAUSE ist ganz richtig. SILENCE ist eher Ruhe nach dem Sturm, denn solange der AY nicht mit 0 gefüllt wird, piepst er mit dem letzten Ton, den er hatte, weiter. Um die anderen Teile zu verstehen, braucht man Kenntnisse zum AY und etwas Assembler-Programmierung. Der AY hat 16 Register (16 Latches). Über die wird er gesteuert. Will man etwas in ein Register schreiben/lesen, so muss man ZWEI Zahlen senden: Die Registernummer und den gewünschten Inhalt. Das passiert mit dem reinen Codepgm (Z80-code zwischen CODE ... ;C in MRX):
MRX: D7 liest die oberste Zahl aus dem Forth-Stack in das Z80-Register HL
7D lädt L auf das Z80-Register A
D3 DF ist OUT A,(#DF), sendet also die Latchnummer an den AY.
D7 7D D3 1F holt zweiten Wert vom Stack und sendet ihn als Inhalt für das ausgewählte Register als OUT A,(#1F).
C9 = RETURN zum Forth-Programm.
MRX kurz gesagt: Koppelt das Forth-Programm mit der Hardware und schickt dazu zwei Zahlen (Latch-Nr und Latch-Inhalt) zu MrX. Und weil im Stack FILO (first in, last out) gilt, muss zuerst der Latchinhalt, dann die Lath-Nr auf den Stack gelegt werden. M N MRX schickt also den Wert M an Latch N.
SILENCE: Hier siehst Du die Verwendung von MRX: Zuerst zwei Zahlen (zweimal 0 ) auf den Stack, und dann MRX. Schaltet den AY auf Schweigen.
INI: Der Forth-Befehl HEX erwartet alle nachfolgenden Zahleingaben als Hexadezimal:
#0F #08 MRX, #FE #07 MRX 0 0 MRX 0 1 MRX schickt diverse Zahlen zu MRX,
dadurch wird MRX programmiert auf Tonausgabe, Lautstärke usw.
Alles das, was in PHASOR.P für den ZX81 in der REM-Zeile steht.
PHASOR: Zuerst die Initialisierung des AY (s.o.), dann die Schleife (HEX-Zahlen!!): Von #60 bis #FE (also 96-254decimal) wiederhole alles zwischen DO und LOOP: Lade die Laufvariable I auf den Stack (=Tonhöhe, wie Du vermutet hast), dann die Null als Registernummer, und schicke diese beiden Zahlen zu MrX, mache eine Pause (=Tonlänge) und 5 +LOOP heißt : wiederhole gleich 5mal mit demselben I zur Zeitverlängerung (Schleife in der Schleife) Stattdessen hätte ich auch eine 5mal solange Pause definieren können. Schließlich auf Ruhe schalten.

Wenn ich das so sehe, ist es doch nicht das beste Beispiel zum Lernen, weil man viel vom AY-Code kennen muss. Aber in FORTH doch viel besser und übersichtlicher, als die REM-Zeilen in BASIC-Programmen.
Gruß Heinz

bokje
User
Beiträge: 107
Registriert: 02.05.2015, 15:38

Re: ZX81-Kompatibler aus Standardbauteilen: ZX81NU

Beitrag von bokje » 06.05.2018, 14:38

ZXNU neu starten mit Forth (warum nicht ;)):

Code: Alles auswählen

: NU CODE 1 5F C 0ED 78 C7 ;C ;
Und dann zurück mit F?

Benutzeravatar
ZX-Heinz
User
Beiträge: 1576
Registriert: 05.12.2011, 14:45

Re: ZX81-Kompatibler aus Standardbauteilen: ZX81NU

Beitrag von ZX-Heinz » 09.05.2018, 12:29

@bokje: Funktioniert sehr gut!

bokje
User
Beiträge: 107
Registriert: 02.05.2015, 15:38

Re: ZX81-Kompatibler aus Standardbauteilen: ZX81NU

Beitrag von bokje » 10.05.2018, 17:24

Und auch zum ZX81 und zurück :)

Code: Alles auswählen

        ld      bc,0x8c5f
        in      a,(c)
        rst     0h

Code: Alles auswählen

        ld      hl,0x6000; keep H4TH system variables intact
        ld      (0x4004),hl
        ld      bc,0x4c5f
        in      a,(c)
        jp      0x03e5; setup ZX81 environment which perhaps may be called later from H4TH...

Code: Alles auswählen

: H4TH CODE 1 5F 8C 0ED 78 C7 ;C ;
: ZX81 CODE 21 0 60 22 4 40 1 5F 4C 0ED 78 C3 E5 3 ;C ;
Und da:

Code: Alles auswählen

RAND USR 8215

Benutzeravatar
ZX-Heinz
User
Beiträge: 1576
Registriert: 05.12.2011, 14:45

Re: ZX81-Kompatibler aus Standardbauteilen: ZX81NU

Beitrag von ZX-Heinz » 10.05.2018, 18:39

@bokje: Ich schlage zu diesem Thema einen neuen Thread vor:
viewtopic.php?f=2&t=2766&p=36416#p36416

Benutzeravatar
ZX-Heinz
User
Beiträge: 1576
Registriert: 05.12.2011, 14:45

Re: ZX81-Kompatibler aus Standardbauteilen: ZX81NU - mit ZX81x2-ROM

Beitrag von ZX-Heinz » 20.10.2018, 19:23

Hier ein neues ROM für den NU: ZX81x2 (und H4TH statt ZX80) ist integriert! Ich hoffe, dass es fehlerfrei ist, bisher habe ich keine Fehler gefunden.
ZX81x2NU.ROM.TXT
(32 KiB) 42-mal heruntergeladen

Antworten