Umbauten am ZX81NU

ZX-Team Forum

Umbauten am ZX81NU

Beitragvon siggi » 29.01.2017, 17:29

Nachdem ich schon einen Umbau des NU zur Verwendung eines EEPROM statt EPROM beschrieben habe (siehe hier: viewtopic.php?f=2&t=1029&start=350#p26911) starte ich nun einen neuen Thread, weil ich noch mehr umgebaut habe (damit es im Haupt-NU-Thread zum "Original"-NU nicht zu unübersichtlich wird).

Nun habe ich einen meiner NUs (mit Mini-Mefisdos-Platinchen drin) als Mefisdos-Maschinchen umgebaut. D. h.
- Umbau des Rom-Pagings (2x16KB statt 4x8KB)
- Umbau für Paging von RAM/EEPROM im 8 K Bereich

Damit kann ich nun bei 0K mein für MEFISDOS gepatches ZX81-ROM unterbringen und ab 8K das Mini-Mefisdos (wie es bisher ins Ram geladen wurde). LOAD/SAVE blenden nun automatisch das EEPROM bei 8K ein und gehen ins MEFISDOS.

Über POKE 0,4 kann ich von BASIC aus das RAM bei 8K wieder einblenden (z. B. fürs ZeddyNetteln), mit POKE 0,0 wieder ausblenden und MEFISDOS dann manuell oder per Programm starten (USR 8192/8195/8198).

Zudem kann ich über REM, SCROLL und RAND (im Kommandosmodus, nicht im Programm) den MEFISDOS-Editor aufrufen. Außerdem sind in diesem ROM der Druckroutinen gepatcht: sie erwarten einen "Druckertreiber" im hohen RAM, der dort hin geladen werden kann (wodurch verschiedene Drucker, auch der ZeddyNet-Druckertreiber verwendet werden können). Aber das ist eine andere Baustelle ....

Der Umbau ist relativ einfach, da nur wenige Leiterbahnen auf der Lötseite des NU getrennt/neu verdrahtet werden müssen.
Betroffen sind:
Signal "ROM_BANK0": das kommt von IC 21 Pin 16 (nicht 5 wie lt. "Schaltplan") und geht zum E(E)PROM IC3 Pin 26.
Das wird direkt beim IC21 Pin 16 unterbrochen und IC3 PIN 26 wird mit A13 an der CPU verbunden (IC1 Pin 3). Dadurch kann nun die CPU auf E(E)PROM bei 8K zugreifen.

Signal A13 an IC 19 Pin 8 wird direkt an IC19 abgetrennt. A13 wird dann zusammen mit einen Ausgang der MiniMefisdos-Platine durch ein Dioden-AND-Gatter verknüpft und das Ergebis geht wieder an IC19 Pin 8.
Dadurch kann die Mini-Mefisdos-Platine (per POKE 0,4) Ram bei 8K ein/ausblenden.

Das Dioden-AND habe ich so realisiert: 10K-Pullup-Widerstand zwischen IC19 Pin 8 und +5V (IC19 PIN 14). 2 Schottky-Dioden an IC19 PIN8 angelötet (Anoden). An eine Diode (ans Kathodendende) kommt dann A13 dran (von der unterbrochenen Leiterbahn abgegriffen), an die andere Diode (Kathodenende) kommt ein Draht zur MIni-Mefisdos-Platine (geht dort zu IC2, PIN 6 = Q2, direkt am IC). Es wird das nicht-invertierte Signal direkt am IC verwendet, nicht das invertierte Signal nach dem Transistor!

Und so sieht mein NU derzeit von unten aus: etwa in Bildmitte das Dioden-AND, links oben Brücke zwischen E(E)Prom zur CPU (A13): weißer Draht. Der andere weiße Draht geht zum MiniMefisdos-Platinchen.

P1110766_640x480.JPG
P1110766_640x480.JPG (141.12 KiB) 300-mal betrachtet


Hier sind die ROM-Images, die ins E(E)PROM gebrannt werden:
ZX81NUMEFI.zip
(11.74 KiB) 7-mal heruntergeladen


"ZX81MEFI.BIN" wird auf Adresse 0 geladen
"MEFI64K.BIN wird auf Adress $2000 geladen
Die 2. Hälfte im 32KB E(E)PROM wird (noch) nicht benutzt

Da nun Ollis Treiber nicht mehr mit dabei sind, kann man auf den USB-Stick nur über UFM bzw. Toms für NU angepassten USB-Treiber zugreifen (siehe hier: viewtopic.php?f=2&t=1029&start=350#p26905).
Microdisk und Display sind (derzeit) nicht nutzbar. Aber das kann ja noch kommen ...

Gruß
Siggi

Nachtrag: Details zum LOAD/SAVE-Patch des ZX81 Roms zum direkten Start von MEFISDOS kann man im TM nachlesen (ab Seite 24):
http://forum.tlienhard.com/magazin/2005/magazin_505.pdf

Edit am 12.2.17: Fehler in Pin Nummerierung korrigiert.
Zuletzt geändert von siggi am 12.02.2017, 20:29, insgesamt 3-mal geändert.
Mein ZX81-Web-Server: online seit 2007
http://zx81-siggi.endoftheinternet.org/index.html
Benutzeravatar
siggi
User
 
Beiträge: 1658
Registriert: 06.12.2005, 08:34
Wohnort: D, Hessen, Ranstadt-Dauernheim

Re: Umbauten am ZX81NU

Beitragvon siggi » 29.01.2017, 18:25

Und so sieht das Dioden-AND im Schaltplan aus:

nu-mefi_640x338.jpg
nu-mefi_640x338.jpg (41.67 KiB) 295-mal betrachtet


Gruß
Siggi
Mein ZX81-Web-Server: online seit 2007
http://zx81-siggi.endoftheinternet.org/index.html
Benutzeravatar
siggi
User
 
Beiträge: 1658
Registriert: 06.12.2005, 08:34
Wohnort: D, Hessen, Ranstadt-Dauernheim

Re: Umbauten am ZX81NU

Beitragvon Joachim » 29.01.2017, 19:08

Hallo Siggi,
schätze, da werde ich mich dranhängen.
Heißt das, dass die restlichen Schaltungsteile (zweites Latch) auf der Mini-Mefisdos-Platine auch getestet sind oder hat sich das auf deinen Lochrasteraufbau bezogen?
Schade, dass das Display nicht angesteuert werden kann. Ich habe doch extra selbiges in die Frontplatte bzw. ZX81-Gehäuse eingebaut, damit man es sieht. Besteht Hoffnung, dass man die Routinen wieder implementieren kann?
Viele Grüße!
Joachim
Benutzeravatar
Joachim
User
 
Beiträge: 690
Registriert: 06.11.2004, 20:21

Re: Umbauten am ZX81NU

Beitragvon siggi » 29.01.2017, 19:50

Hallo Joachim
ja, Deine Mini-Mefisdos-Platine funktioniert vollständig.

Bezüglich anderer Hardware im NU: man könnte Ollis Treiber-Sourcen (nachdem man sie verstanden hat :wink: ) ja in ASDIS-Treiber umbauen. Alternativ kann man Ollis-Treiber (m. W. in Page 3 des Orignal-Roms) auf $4000 im neuen Rom (und damit auf $0 in der 2. Page) laden. Dann muß man m.E. "nur" noch den Einsprung vom Basic ins Treiber-Rom neu implementieren (Paging machen und Aufruf-Umgebung aus Ollis Software nachbilden).

Kommt Zeit, kommt Mahlerts :wink:

Gruß
Siggi
Mein ZX81-Web-Server: online seit 2007
http://zx81-siggi.endoftheinternet.org/index.html
Benutzeravatar
siggi
User
 
Beiträge: 1658
Registriert: 06.12.2005, 08:34
Wohnort: D, Hessen, Ranstadt-Dauernheim

Re: Umbauten am ZX81NU

Beitragvon siggi » 01.02.2017, 18:57

So, ich habe mir jetzt mal ein Treiberinterface zu Ollis Treibern für die Ansteuerung des Mini-Displays von Basic aus gebastelt, das auch ohne Ollis andere Software auf meinem Mefisdos-NU läuft. Dazu habe ich mir Ollis Treiber in der 4. Bank seines NU-Roms (also ab Adresse $6000) ins Mefisdos-NU-Rom auf die 2. 16K Bank ab Adresse 0 (also Adresse $4000 im 32K EEPROM) gebrannt. Dies wird dann durch den IN-Befehl eingeblendet auf Adresse 0.

Ausgehend von Ollis Code im Treiber-ROM, wo mit SAVE "&TEXT" aufs Display geschrieben wird:
Code: Alles auswählen
org     03ABH   ;(3A8+3)
    ; This is the patch in the ZX81 ROM:
   ; IN NAME (starting AT 3AB) 6 Bytes
            ;PUSH BC
    LD A,(4001H)      ;LD BC, 256*(L_DRIV81) + PORT_LATCH    ; SWITCH TO SHADOW ROM
    ADD A,A      ;IN B,(C)
    NOP
    NOP
   ; Here we are
    POP BC         ; Back to old SP



habe ich mit ASDIS ein MC erstellt, mit dem per PRINT USR 16520,"&TEXT" das gleiche passiert.
Code: Alles auswählen
          4082LOAD LD BC,$0340    014003 
          4085        JR GONU        1804   
          4087        NOP               00     
          4088SAVE LD BC,$02F6     01F602 
          408BGONU PUSH BC        C5     
          408C       RST 20             E7     
          408D       CALL $0F55       CD550F 
          4090       PUSH BC          C5     
          4091       LD BC,$EC5F     015FEC 
          4094       IN B,(C)           ED40   
          4096      JP $03AF          C3AF03 


Das MC liegt in der REM-Zeile ab 16514, Einsprung für SAVE ist 16520. Das Programm kann auch auf beliebiger anderer Adresse laufen. Source ist in A$
nudrv.p
(1.04 KiB) 4-mal heruntergeladen


Und hier ist ein kleines Test-Programm (müßte auch auf dem "normalen" NU laufen)
nudrtest.p
(1.09 KiB) 5-mal heruntergeladen


Achtung: das habe ich nur fürs Mini-Display vorgesehen und getestet (ich brauche bei Mefisdos die Microdisk nicht und benutze UFM für USB). Microdisk und VDRIVE könnte man darüber auch erreichen, aber das funktioniert nicht richtig. Also lieber bleiben lassen ...

Gruß
Siggi
Mein ZX81-Web-Server: online seit 2007
http://zx81-siggi.endoftheinternet.org/index.html
Benutzeravatar
siggi
User
 
Beiträge: 1658
Registriert: 06.12.2005, 08:34
Wohnort: D, Hessen, Ranstadt-Dauernheim

Re: Umbauten am ZX81NU

Beitragvon siggi » 03.02.2017, 18:08

Kaum macht man's richtig, schon geht's :D

In Ollis Treibersoftware ermittelt Olli ja anhand der Ret-Adresse auf dem Stack, ob sein Treiber von LOAD oder SAVE aufgerufen wird. Im Code sieht das so aus:
Code: Alles auswählen
; Check LOAD OR SAVE
    POP HL    ; Fetch return addr, do not use this later on
    LD A,L
    CP 043H    ; from LOAD?
    JR NZ, NOLOAD
    ; LOAD function
    CALL HW_NU_DISP_LED
    db        "V-LD"
    JP VD_LOAD
NOLOAD:
    CP 0F9H    ; from SAVE?
    JR NZ, NOSAVE
    CALL HW_NU_DISP_LED
    db        "V-SV"
    JP VD_SAVE
NOSAVE:


Dies habe ich in meinem Treiberinterface zwar berücksichtigt, habe aber die Adressen der LOAD/SAVE-Routine im ROM übergeben, während Olli eine um 3 Byte höhere Adresse erwartet, von wo der Call der NAME Routine im Rom abgesetzt wurde.

Nachdem ich das nun korrigiert habe, kann ich mich über mein Treiberinterface nun auf allen Olli-NU-Laufwerken (Display, USB, Microdisk) herumtreiben, auch wenn der NU mit MEFISDOS-Rom läuft :mrgreen:

Hier ist das Treiberinterface (samt Source in A$):
NUDRV2.P
(1.04 KiB) 5-mal heruntergeladen


Gruß
Siggi

PS: Im Mefisdos-ROM ist ja auch ein Druckertreiber-Patch drin. Man könnte nun auch einen Druckertreiber schreiben, der ins hohe Ram geladen wird und der mit LPRINT "HUHU" direkt aufs Mini-Display schreibt ...
Mein ZX81-Web-Server: online seit 2007
http://zx81-siggi.endoftheinternet.org/index.html
Benutzeravatar
siggi
User
 
Beiträge: 1658
Registriert: 06.12.2005, 08:34
Wohnort: D, Hessen, Ranstadt-Dauernheim

Re: Umbauten am ZX81NU: Anschluß Backplane

Beitragvon siggi » 19.02.2017, 14:11

Noch ein paar Umbauten, wenn man den NU wie ich nutzen will:
wie schon meinen alten ZX81-Laptop (aufgebaut mit Original ZX81) wollte ich auch meine beiden NUs ("Mefisdos-NU" und "Standard-NU") an der Lego-Dockingstation betreiben, die eine kleine Backplane mit 4 Slots (ungepuffert) enthält.
Mein alter Laptop lief damit problemlos, aber meine NUs nicht :(

Schon der Anschluß der unbestückten 4-Slot-Backplane brachte sie meist zum Absturz (besonders bei HIRES-Programmen (IRC-Chat) hatte ich satte Abstürze). So habe in Ollis Schaltplan mal nachgeguckt, was anders zum ZX81 ist, was sich Richtung Backplane auswirken könnte: es sind hochohmigere Widerstände an vielen Stellen verbaut, die bei höherer Buslast (durch die Backplane) einen Timingunterschied bewirken können (verschliffene Flanken). Also habe ich mal wieder den Lötkolben gegriffen und Richtung Original ZX81 zurückgebaut ...

Zuerst habe ich ein bekanntes Timing-Problem bei HRG im RAM entschärft (wie auch Wilf schon mal geschrieben hat: "The RAM ENABLE signal uses both RFSH and MREQ because the RFRSH signal is asserted before MREQ, which is important for fetching hires patters from RAM.", siehe http://www.user.dccnet.com/wrigter/inde ... mories.htm )

Also habe ich bei IC16 (Pin 15 aus der Fassung gebogen) statt nur den Signals "/MREQ" eine (über ein Dioden-AND-Gatter realisierte) AND-Verknüfung von /MREQ AND /RFSH zugeführt. Das hat die HIRES-Geschichte schon mal entspannt, aber beim Hochlauf des NU hatte ich immer noch sichtbare Probleme:

P1110847_640x480.JPG
P1110847_640x480.JPG (79.67 KiB) 117-mal betrachtet


Also habe ich weitere Rückbauten am "Standard-NU" durchgeführt:
- Änderung der Widerstände im Datenbus (R2-R9: 820 Ohm) auf ca. 450 Ohm (statt 470 beim ZX81) durch Parallelschalen von 1K Widerständen: kein sichtbarer Erfolg
- Änderung der Widerstände im Adressbus (R11-R18,R20: 1,5 KOhm) auf 1KOhm durch Tausch der Widerstände: kein sichtbarer Erfolg
- Änderung der Widerstände R19 und R10 (/RAMCS, /ROMCS)von 1KOhm auf 500 Ohm durch Paralleschalten 1K: kein sichtbarer Erfolg
- Änderung des Widerstandes R27 (/WAIT, 3K3) auf 1K (wie beim ZX81): kein sichtbarer Erfolg
- Kurzschließen des Widerstandes R26 (/NMI,3K3) (wie beim ZX81: direkt): BINGO! :mrgreen:

Die letzte Änderung (sowie die erste Timing-Sache) habe ich auch an meinen Mefisdos-NU durchgeführt: beide laufen nun sauber an meiner 4-Slot-Backplane (wie mein alter Laptop) :mrgreen:

Diese Änderung wird man auch durchführen müssen, wenn man die Backplane über Treiber anschließt, denn das /NMI-Signal geht da ja auch dort ungepuffert weiter und wird durch die Buslast und den Widerstand so verzerrt, daß das Bild gestört wird!

Gruß
Siggi

Edit: Nachtrag: ach ja, ich habe auch ein paar kurze, dicke Drähte zwischen 9V/+5V/GND am Spannungsregler zu den Anschlüssen am Bus-Stecker gelegt, damit bei Stromversorgung vom/zum Bus nicht alle Spannungshäcker über die Leiterplatte müssen und dort die Bits durcheinanderwirbeln :wink:
Mein ZX81-Web-Server: online seit 2007
http://zx81-siggi.endoftheinternet.org/index.html
Benutzeravatar
siggi
User
 
Beiträge: 1658
Registriert: 06.12.2005, 08:34
Wohnort: D, Hessen, Ranstadt-Dauernheim

Re: Umbauten am ZX81NU

Beitragvon tokabln » 19.02.2017, 15:01

Ich kann die /NMI Leitung noch puffern. Ein Ein-/Ausgang ist noch frei. Da ich gerade ein paar Tage im Urlaub bin kann ich das aber erst Mitte der kommenden Woche machen. Wenn das zielführend ist mach ich das gerne. Bin eh noch am Handrouting und habe da so meine Probleme.
Lieben Gruß Torsten
BMZ MFA, ZX80Core, AX81, ZX81, ZX81NU, Spectrum+, Harlequin, Amstrad NC100, Cambridge Z88, C64, C128D, Amiga 500, Amiga 1200, Atari Portfolio, HP200LX, IBM PC 5155, TP755c, T41, PS/2 (Model 40SX), PS/2E, Accura 101, Apple //e
Benutzeravatar
tokabln
User
 
Beiträge: 739
Registriert: 10.11.2013, 00:24
Wohnort: D, Berlin (Mariendorf)

Re: Umbauten am ZX81NU

Beitragvon siggi » 19.02.2017, 15:14

Die /NMI-Leitung ist ein Eingang zur CPU, die als Ausgang zu puffern also erstmal falsch.
Andererseits kann man sie als Eingang beim Zeddy nicht benutzen, denn der wird von der ULA direkt getrieben (beim NU könnte man es von aussen übersteuern, aber wozu).
Eine beim Zeddy sinnvolle Anwendung kenne ich nicht. Allerdings kann es sein, daß externe Schaltungen da "mithören", was im Zeddy so passiert (Chroma? ZxBlast?). Also sehe ich erstmal keinen Änderungsbedarf an der Treiberplatine.

Gruß
Siggi
Mein ZX81-Web-Server: online seit 2007
http://zx81-siggi.endoftheinternet.org/index.html
Benutzeravatar
siggi
User
 
Beiträge: 1658
Registriert: 06.12.2005, 08:34
Wohnort: D, Hessen, Ranstadt-Dauernheim

Re: Umbauten am ZX81NU

Beitragvon Joachim » 22.02.2017, 11:22

Hallo Siggi,
meine Baustelle sieht im Moment so aus:

P1050302.jpg
P1050302.jpg (114.77 KiB) 78-mal betrachtet


Auf dem Bus steckt oben die Mefisdos-Platine und unten die PIO.

Dazu habe mir eine mini-backplane gefräst.


P1050301.jpg
P1050301.jpg (99.47 KiB) 78-mal betrachtet


P1050304.jpg
P1050304.jpg (78.07 KiB) 78-mal betrachtet


Es geht vorwärts!
Viele Grüße!
Joachim
Benutzeravatar
Joachim
User
 
Beiträge: 690
Registriert: 06.11.2004, 20:21

Re: Umbauten am ZX81NU

Beitragvon PokeMon » 22.02.2017, 20:06

Sieht chic aus, die selbstgefräste Backplane. :wink:
Wer seinen Computer ehrt, lebt nicht verkehrt.
Benutzeravatar
PokeMon
User
 
Beiträge: 3894
Registriert: 31.08.2011, 22:41


Zurück zu Sinclair ZX81

Wer ist online?

Mitglieder in diesem Forum: Bing [Bot], Google [Bot] und 1 Gast