ZX81-Kompatibler aus Standardbauteilen: ZX81NU
Re: ZX81-Kompatibler aus Standardbauteilen: ZX81NU
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):
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) 61-mal heruntergeladen
Zuletzt geändert von ZX-Heinz am 24.05.2018, 13:38, insgesamt 9-mal geändert.
Re: ZX81-Kompatibler aus Standardbauteilen: ZX81NU
Hallo Heinz.
Ganz wunderbar. Das funktioniert prima!!!
Danke dafür.
Gruß
Jens
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.
Neues aus der KI-Welt... Die Automate kann sich selbst essen.
Re: ZX81-Kompatibler aus Standardbauteilen: ZX81NU
Wie macht ihr das mit dem mehr an Speicher den der NU hat?
Funktioniert diese Version auch mit dem Peter RAM?
Funktioniert diese Version auch mit dem Peter RAM?
Theoretisch ist zwischen Theorie und Praxis kein Unterschied.
Praktisch allerdings wohl.
Praktisch allerdings wohl.
Re: ZX81-Kompatibler aus Standardbauteilen: ZX81NU
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
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
Re: ZX81-Kompatibler aus Standardbauteilen: ZX81NU
Heureka!
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.



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.
Re: ZX81-Kompatibler aus Standardbauteilen: ZX81NU
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) : -----------------------------------------------
" 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) : -----------------------------------------------
Re: ZX81-Kompatibler aus Standardbauteilen: ZX81NU
Hallo Heinz, hallo bokje!
Das habt Ihr super gemacht - funktioniert tadellos... ach, wenn ich doch nur programmieren könnte
Vielen Dank und Gruß
Jens
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.
Neues aus der KI-Welt... Die Automate kann sich selbst essen.
Re: ZX81-Kompatibler aus Standardbauteilen: ZX81NU
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 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
Re: ZX81-Kompatibler aus Standardbauteilen: ZX81NU
Guten Morgen Heinz.
Vielen Dank für das Programm. Das klappt prima!
Was das Programm macht, kann ich ja hören
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
Gruß
Jens
Vielen Dank für das Programm. Das klappt prima!
Was das Programm macht, kann ich ja hören

: 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

Gruß
Jens
Der ZX81 rechnet mit allem, nur nicht mit seinem Besitzer...
Neues aus der KI-Welt... Die Automate kann sich selbst essen.
Neues aus der KI-Welt... Die Automate kann sich selbst essen.
- siggi
- User
- Beiträge: 2471
- Registriert: 06.12.2005, 08:34
- Wohnort: D, Hessen, tiefste Werreraa
- Kontaktdaten:
Re: ZX81-Kompatibler aus Standardbauteilen: ZX81NU
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
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!
http://zx81-siggi.endoftheinternet.org/index.html
Datenkraken bitte nicht füttern!
Re: ZX81-Kompatibler aus Standardbauteilen: ZX81NU
Hallo siggi,siggi hat geschrieben: ↑05.05.2018, 12:29Hallo 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
das Forth-ROM liegt auf der dritten 8k-Bank des NU, aber hier ist es solitär (.txt streichen): 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
- siggi
- User
- Beiträge: 2471
- Registriert: 06.12.2005, 08:34
- Wohnort: D, Hessen, tiefste Werreraa
- Kontaktdaten:
Re: ZX81-Kompatibler aus Standardbauteilen: ZX81NU
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
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!
http://zx81-siggi.endoftheinternet.org/index.html
Datenkraken bitte nicht füttern!
Re: ZX81-Kompatibler aus Standardbauteilen: ZX81NU
Die Quelle ist im Anhang. Mit meinem ZXmore und CPLD, HALTs im DFILE sind unverzichtbar...
- Dateianhänge
-
h4thl.zip
- (23.36 KiB) 67-mal heruntergeladen
Re: ZX81-Kompatibler aus Standardbauteilen: ZX81NU
Hallo Jens,Jens hat geschrieben: ↑05.05.2018, 10:44Guten Morgen Heinz.
Vielen Dank für das Programm. Das klappt prima!
Was das Programm macht, kann ich ja hörenAber 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![]()
Gruß 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
Re: ZX81-Kompatibler aus Standardbauteilen: ZX81NU
ZXNU neu starten mit Forth (warum nicht
):
Und dann zurück mit F?

Code: Alles auswählen
: NU CODE 1 5F C 0ED 78 C7 ;C ;
Re: ZX81-Kompatibler aus Standardbauteilen: ZX81NU
@bokje: Funktioniert sehr gut!
Re: ZX81-Kompatibler aus Standardbauteilen: ZX81NU
Und auch zum ZX81 und zurück
Und da:

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 ;
Code: Alles auswählen
RAND USR 8215
Re: ZX81-Kompatibler aus Standardbauteilen: ZX81NU
@bokje: Ich schlage zu diesem Thema einen neuen Thread vor:
viewtopic.php?f=2&t=2766&p=36416#p36416
viewtopic.php?f=2&t=2766&p=36416#p36416
Re: ZX81-Kompatibler aus Standardbauteilen: ZX81NU - mit ZX81x2-ROM
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.