Forum: Projekte & Code ZX81 plus38 Clone


von chris_ (Gast)


Lesenswert?

Nachdem ich vor knapp 40 Jahren einen ZX81 hatte, wurde mir nun von 
einem Freund eine Leerplatine diese Clones zugetragen:

https://revspace.nl/ZX81plus38_simple_to_build_ZX-81_clone

Die Platine sieht sehr schön aus und an sich habe ich gar keine Zeit, 
daran herum zu basteln, aber jetzt liegt sie nun einmal da und will 
bearbeitet werden.

Das Interessante am ZX81 war sein minimalistisches Design, das mit Hilfe 
des Prozessors und einem relativ einfachen Custom-Logik-Chip das 
Bildsignal erzeugt hat. Im Clone wird dieser Chip mit diskreten 
Logikbauteilen nach gebaut.

von (prx) A. K. (prx)


Lesenswert?

Der ZX80 ist dahingehend noch interessanter, weil er ohne Custom-Chip 
auskommt.

von chris_ (Gast)


Angehängte Dateien:

Lesenswert?

Die Platine möchte ich Schrittweise aufbauen und die einzelnen 
Komponenten nach und nach testen.

Auf dem Bild ist der Taktgenerator, die Reset-Schaltung und der 
Prozessor bestückt.
Leider hab eich nicht alle passenden Bauteile, deshalb ist vorerst ein 
14Mhz statt ein 13Mhz Quarz drinnen und die Kondensatoren am 
Schwingquarz fehlen. Der Oszillator läuft aber trotzdem.

Die Platine zieht in dieser Konfiguration 140mA. Der Prozessor zeigt 
aber an seinen Adressleitungen erst einmal keine weitere Reaktion.

von chris_ (Gast)


Angehängte Dateien:

Lesenswert?

Hier das Bild der Platine.

von chris_ (Gast)


Angehängte Dateien:

Lesenswert?

von A. K. (prx)
>Der ZX80 ist dahingehend noch interessanter, weil er ohne Custom-Chip
>auskommt.

Danke für Deinen Hinweis. Ich weiß Deine Kommentare üblicherweise zu 
schätzen.
Das schöne an dem Clone ist, dass er ebenfalls ohne ULA auskommt. 
Insofern kann man hier versuchen, die Details des Videogenerators zu 
verstehen.

von (prx) A. K. (prx)


Lesenswert?

chris_ schrieb:
> Das schöne an dem Clone ist, dass er ebenfalls ohne ULA auskommt.
> Insofern kann man hier versuchen, die Details des Videogenerators zu
> verstehen.

Will darauf raus, dass der ZX80 deshalb noch ein deutliches Stück 
minimalistischer war. Ich hatte damals die Arbeitsweise von dessen 
Videoerzeugung analysiert und fand es ziemlich clever, wie die 
Eigenheiten der Z80 CPU genutzt wurden.

von (prx) A. K. (prx)


Lesenswert?

Du solltest mindestens dafür sorgen, dass kritische Eingänge auf 
definiertem Pegel liegen. Bei Reset ist das bestückt, aber bei anderen 
wie NMI, WAIT, ... sehe ich das auf den ersten Blick nicht.

: Bearbeitet durch User
von chris_ (Gast)


Lesenswert?

>Du solltest mindestens dafür sorgen, dass kritische Eingänge auf
>definiertem Pegel liegen. Bei Reset ist das bestückt, aber bei anderen
>wie NMI, WAIT, ... sehe ich das auf den ersten Blick nicht.

Danke für die Hinweise. Ich habe auch schon daran gedacht, aber aus 
Ungeduld die Schaltung einfach mal mit Strom versorgt und gemessen.

Was mir gerade beim Überfliegen des Wikipedia Artikels

https://de.wikipedia.org/wiki/Zilog_Z80

zum Z80 auffällt: Die Schreiben dort, dass erst der Z80A für 4MHz 
ausgelegt war, wenn ich es auf meinem Foto richtig sehe, scheint der 
Prozessor aber ein nicht-A-Typ zu sein.

von chris_ (Gast)


Lesenswert?

Das Schöne an der heutigen Zeit im Vergleicht zur Zeit vor 40 Jahren 
ist, dass man im Internet so viele vorbereitete Informationen findet.

Hier eine Auflistung der Signalrichtungen des Z80:
https://wiki.pcbotaku.com/wiki/Z80

Wenn ich es richtig sehe, sollten die Eingänge

nInt
nNMI
nWait
nBUSREQ

für den Addresszählertest alle auf HIGH liegen.

von (prx) A. K. (prx)


Lesenswert?

chris_ schrieb:
> wenn ich es auf meinem Foto richtig sehe, scheint der
> Prozessor aber ein nicht-A-Typ zu sein.

Stimmt irgendwie. Die bestückte Z84C0020 ist nicht NMOS und 4MHz, 
sondern CMOS und 20 MHz.

von (prx) A. K. (prx)


Lesenswert?

chris_ schrieb:
> Die Platine zieht in dieser Konfiguration 140mA

Da ausser Oszillator und CPU nichts drauf ist, was Dauerstrom 
verbraucht, ist das angesichts der CMOS Version viel zu viel.

von chris_ (Gast)


Angehängte Dateien:

Lesenswert?

>Da ausser Oszillator und CPU nichts drauf ist, was Dauerstrom
>verbraucht, ist das angesichts der CMOS Version viel zu viel.

Das ist ein guter Hinweis dem man noch einmal nachgehen sollte.
Gerade eben haben wir versucht, die Platine des Freundes zu testen. 
Diese ist schon voll bestückt und braucht ähnlich viel Strom.

Wir haben einen kleinen Test gemacht und die CPU aus der oben gezeigten 
Platine eingesetzt. Mit dieser CPU sank der Stromverbrauch auf 90mA.

Die Platine ist das Mainboard meines Computers, den ich damals mit Hilfe 
des ZX81 entwickelt habe und auf der noch die original 1kx4Bit RAMS 
meines ZX81 sitzen, da ich dort statt dessen ein 2kx8Bit RAM eingebaut 
hatte.

von chris_ (Gast)


Lesenswert?

>Die Platine ist das Mainboard meines Computers, den ich damals mit Hilfe
>des ZX81 entwickelt habe

Damals heißt 1984.

von (prx) A. K. (prx)


Lesenswert?

chris_ schrieb:
> Mit dieser CPU sank der Stromverbrauch auf 90mA.

Mit NMOS Z80A wäre man damit in normalem Fahrwasser.

von chris_ (Gast)


Angehängte Dateien:

Lesenswert?

>Mit NMOS Z80A wäre man damit in normalem Fahrwasser.

Dann muss ich den mal auf meiner Platine probieren.

Heute morgen haben wir zu zweit an der voll bestückten Platine des 
Kollegen gemessen und experimentiert.
Dort blieb der Prozessor auch die ganze Zeit hängen, weil er nicht mehr 
durch den NMI aufgeweckt wurde.
So wie es aussieht ist die Platine falsch geroutet. Der Eingang von U19B 
( Pin4 ) muss nicht am NAND des FlipFlop U13D sondern an U13C pin8 
angeschlossen werden, sonst kommen die HSYNC Pulse nicht.
Nachdem wir das geändert hatten und mittels eines Frequenzgenerators die 
Systemfrequenz auf 12.8MHz statt der 13MHz des Quarz gestellt hatte, 
konnte auch der Fernseher synchronisieren und wir hatten ein weises 
Bild. Das ersehnte
1
K
Prompt war leider nicht sichtbar, vielleicht war es außerhalb des weißen 
Bildschirms.

von Soul E. (Gast)


Lesenswert?

chris_ schrieb:

> Das Interessante am ZX81 war sein minimalistisches Design, das mit Hilfe
> des Prozessors und einem relativ einfachen Custom-Logik-Chip das
> Bildsignal erzeugt hat. Im Clone wird dieser Chip mit diskreten
> Logikbauteilen nach gebaut.

Damit ist es kein Clone, sondern ein Kompatibler. Für ein Plagiat weicht 
es zu sehr vom Original ab und es steckt auch eine Menge Gehirnschmalz 
des Erfinders, also eigene Leistung, drin.

Ein Clone wäre ein einfacher 1:1 Nachbau, wie in Fernost üblich.

von chris_ (Gast)


Angehängte Dateien:

Lesenswert?

>Damit ist es kein Clone, sondern ein Kompatibler.

Wie ich gehört habe, gab es zu jener Zeit in Südamerika ZX81 Nachbauten 
mit diskreten Logik ICs, also vermutlich dem hier gezeigten recht 
ähnlich.

Zum weiteren Verlauf:

Die Platine des Freundes ist schon weiter, aber der Bildschirm zieht 
noch Streifen.

von chris_ (Gast)


Lesenswert?

Der ZX81 gab es teilweise auch als Bausatz.
Hier gibt es die Bauanleitungen, Schaltplan und Manuals:

https://k1.spdns.de/Vintage/Sinclair/80/Sinclair%20ZX81/Service%20and%20Assembly%20Manual/

von Interessierter (Gast)


Lesenswert?

Das Projekt gefällt mir sehr gut, aber das ROM bereitet mir Probleme.

Sind die ZX81 ROM Daten frei verfügbar?

Falls ja, könnte mir jemand eines brennen, da ich keine Hardware dafür 
habe.

von chris_ (Gast)


Angehängte Dateien:

Lesenswert?

>Sind die ZX81 ROM Daten frei verfügbar?

>Falls ja, könnte mir jemand eines brennen, da ich keine Hardware dafür
>habe.

Mein Bastlerfreund hatte mir die Platine und das fertig programmierte 
EEPROM gegeben.
Die Images verschiedener Retro-Computer gibt es wohl hier:

http://www.8bit-wiki.de/index.php?id=3&filt=Sinclair/ZX81/rom-binary

Leider hat er aber kein EEPROM mehr.

Ansonsten müsste man sich vielleicht überlegen, ob man einen einfachen 
EEPROM Programmer mit einem Arduino Mega baut.

Ich könnte mir vorstellen, dass hier noch mehr auf den ZX81-Zug 
aufspringen wollen. Dann wäre es sinnvoll, wenn einer gleich mehrere 
Platinen bei irgend einem der Chinesischen PCB-Hersteller machen lässt.

von Interessierter (Gast)


Lesenswert?

Super, danke.
Notfalls lässt sich das bestimmt per Arduino machen, da scheint es ja 
viele Projekte zu geben.

Benutzt ihr ein EEPROM oder ein OTP EPROM?

Habt ihr das System denn schon richtig zum laufen bekommen?

von Route_66 H. (route_66)


Lesenswert?

Interessierter schrieb:
> Benutzt ihr ein EEPROM oder ein OTP EPROM?

Wo bekommt man OTP EPROM???

von Interessierter (Gast)


Lesenswert?

Zum Beispiel bei digikey:

https://www.digikey.de/products/de?keywords=AT27C256R-70PU-ND

Auszug aus dem Datenblatt:
"The Atmel® AT27C256R is a low-power, high-performance, 262,144-bit, 
one-time programmable, read-only memory (OTP EPROM) organized as 32K by 
8 bits. It requires only
one 5V power supply in normal read mode operation. Any byte can be 
accessed in less than
45ns, eliminating the need for speed reducing WAIT states on 
high-performance microprocessor systems"

von Percy N. (vox_bovi)


Lesenswert?


von chris_ (Gast)


Angehängte Dateien:

Lesenswert?

Das sind die Speicherchips, die ich bekommen habe.

von chris_ (Gast)


Lesenswert?

Lustigerweise ist auf der Seite von MicroChip zum EEPROM

https://www.microchip.com/wwwproducts/en/AT28C256

gleich ein Video mit dem Titel "Customer Driven Obsolescence" 
angehängt....

von chris_ (Gast)


Angehängte Dateien:

Lesenswert?

Das EEPROM scheint sehr leicht zu programmieren:
Man kann einfach wie in ein RAM schreiben und muss dann einen Polling 
Zyklus starten.
Ich würde vermuten, wenn man einfach 10ms nach dem Schreiben einer Page 
wartet, sind die Daten auch sicher geschrieben.

von Verbesserer (Gast)


Lesenswert?

Zur PCB ganz oben: Stehender Quarz auf der Ecke ist eine blöde Idee. 
Masseflächen an PCB Rändern nicht geschlossen. Leiterbahnen unnötig 
dünn/fein. Jumper unter(?) Ram/Rom ...
Aber sonst ... :D

von chris_ (Gast)


Lesenswert?

>Zur PCB ganz oben: Stehender Quarz auf der Ecke ist eine blöde Idee.
>Masseflächen an PCB Rändern nicht geschlossen. Leiterbahnen unnötig
>dünn/fein.

Das ist wahrscheinlich ein guter Hinweis, auch wenn vermutlich keiner 
eine EMV-Messung mit dem Ding machen wird.

Man könnte einen issue im github-Directory schreiben:

https://github.com/mahjongg2/ZX81plus38

>Jumper unter(?) Ram/Rom ...
Das ist tatsächlich schlecht. Mein Kollege hat es dadurch gelöst, dass 
die Jumper unter der Platine sind, was aber Abstandsbolzen in der 
Platine erforderlich macht.

von chris_ (Gast)


Lesenswert?

Um die Spannung vorweg zu nehmen ... es gibt tatsächlich einen 
Javasscript Emulator:
http://www.zx81stuff.org.uk/zx81/jtyone.html

von chris_ (Gast)


Angehängte Dateien:

Lesenswert?

Im Originalschaltplan des ZX81 haben die Widerstände in den 
Datenleitungen 470Ohm. Im Nachbau sind die mit 1K angegeben. Der 
kleinere Wert scheint mir sinnvoller, weil dann der Pegel über gegenüber 
den 10k PullUps besser nach unten gezogen wird.

von chris_ (Gast)


Angehängte Dateien:

Lesenswert?

Hier der Aufbau, um die Funktion des Z80 ohne Peripherie zu testen.

Der Prozessor wird mit 1MHz Takt versorgt.
Die Eingänge /NMI, /INT, /RESET, /BUSRQ, und /WAIT sind über Widerstände 
auf VCC gelegt.
Die Datenleitungen sind über 10K auf 0, sodass NOPs ausgeführt werden 
sollten.

Beobachtungen:
Der Maschinenzyklus /M1 läuft mit 250kHz, was einem Befehlszyklus von 4 
Takten entspricht. Die NOPs sollten also mit 250kHz ausgeführt werden.
Die Stromaufnahme beträgt für die gesammte Schaltung 117mA, was mir für 
eine CMOS Z80 CPU immer noch hoch erscheint.
Die Adressleitung zeigen folgendes Verhalten:
A0:125kHz
A1:62.5kHz
...
A6: 1.953kHz
A7: seltsames Verhalten, Signalpulse sind paketartig

von Ale (Gast)


Lesenswert?

Mit dem Emulator kann man schon was machen, z.B. Mazogs spielen :)
Ich hab auch einen ZX81 gebaut, meinem Fernseher kann die Signal aber 
nicht darstellen, es zieht so aus wie das Bild oben, aber es zappelt ein 
bisschen.
Ich muss mit dem AV-Receiver probieren, der kann Composite auf HDMI 
umwandeln. Einen Elgato Eye TV habe ich auch, es funktioniert in w10 
nicht mehr, und in linux habe ich keinen Erfolg mit vlc gehabt...
Einen ZX81 mit VGA Ausgang hätte ich gerne, nein ohne FPGA.

von chris_ (Gast)


Lesenswert?

Wenn den guten 38 Jahre alten NMOS Z80A aus dem obigen Bild ( 
https://www.mikrocontroller.net/attachment/472355/CH1_ComputerMainBoad.png 
) einsetze, zeigt sich das paketartige Verhalten auch, aber die 
Gesamtschaltung verbraucht nur ca. 60mA.

Die Grundfrequenz der Pakete beträgt 250kHz, also gleich wie M1.
Wahrscheinlich werden die oberen Adressleitungen ab A7 nicht statisch 
gezogen wie die unteren Adressleitungen A0-A6.

von chris_ (Gast)


Angehängte Dateien:

Lesenswert?

Mittlerweile tendiere ich dazu, mehr Zeit in einen soliden Laboraufbau 
zu stecken.

Jetzt ist die ZX81 Platine so weit bestückt, dass über die gezeigten 
Widerstände der NOP-Generator statisch auf den Bus geschaltet wird.
Damit verhält sich der Prozessor dann so wie auf dem BreadBoard-Aufbau.

von Mario M. (thelonging)


Lesenswert?

chris_ schrieb:
> A7: seltsames Verhalten, Signalpulse sind

chris_ schrieb:
> Wahrscheinlich werden die oberen Adressleitungen ab A7 nicht statisch
> gezogen wie die unteren Adressleitungen A0-A6.

Das liegt am Refresh-Zyklus, also völlig normal.

von chris_ (Gast)


Lesenswert?

>Das liegt am Refresh-Zyklus, also völlig normal.

Danke für den Hinweis. Mit dem Refresh-Zyklus habe ich mich nie 
beschäftigt, weil ich damals schon die statischen RAMs aus dem ZX81 
hatte.

Im Moment überlege ich, einen Debugger für den ZX81 zu bauen.
Hier gibt es einen Z80-Computer, bei dem ein Atmega32 als 
Debug-Interface benutzt wird:
https://hackaday.io/project/159973-z80-mbc2-a-4-ics-homebrew-z80-computer/details

Das Problem hier: es werden nur die unteren 8 Adressleitungen benutzt, 
weil der Atmega32 zu wenig Pins hat.

Einfacher wäre ein ArduinoMega2560, der hätte genügend PINs.

Das Code-Prinzip des Atmega-Debuggers findet sich hier:
https://github.com/WestfW/4chipZ80/tree/master/Firmware/Z80_test1

von bullatrulla (Gast)


Lesenswert?


von chris_ (Gast)


Lesenswert?

>ICE? Nimm den: http://www.tauntek.com/Z80-In-Circuit-Emulator.htm
Wahrscheinlich wäre es eine gute Idee, eine fertigen Debugger zu nehmen. 
Aber der Aufwand, diesen nach zu bauen, scheint mir ein eigenes Projekt.
Einen Arduino Mega habe ich hier rumliegen, kann als gleich damit 
spielen.

Im Moment versuche ich gerade heraus zu finden, wie das Tape-Signal 
erzeugt wird.

Hier gibt es das Assembler Listing des ROMS:
https://cdn.hackaday.io/files/289631239152992/ZX81_dual_2018-02-09.htm
1
...
2
; I/O locations:
3
;
4
IO_PORT_TAPE    equ  $FF  ; write
5
IO_PORT_SCREEN    equ  $FF  ; write
6
7
IO_PORT_KEYBOARD_RD  equ  $FE  ; A0 low
8
IO_PORT_NMI_GEN_ON  equ  $FE  ; A0 low
9
IO_PORT_NMI_GEN_OFF  equ  $FD  ; A1 low
10
IO_PORT_PRINTER    equ  $FB  ; A2 low
11
12
....
13
14
; THE 'OUT_BYTE' SUBROUTINE
15
16
; This subroutine outputs a byte a bit at a time to a domestic tape recorder.
17
18
mark_031E:
19
OUT_BYTE:
20
  LD  E,(HL)    ; fetch byte to be saved.
21
  SCF      ; set carry flag - as a marker.
22
23
mark_0320:
24
EACH_BIT:
25
  RL  E    ; C < 76543210 < C
26
  RET  Z    ; return when the marker bit has passed 
27
        ; right through.      >>
28
29
  SBC  A,A    ; $FF if set bit or $00 with no carry.
30
  AND  $05    ; $05 "  "   "   "  $00
31
  ADD  A,$04    ; $09 "  "   "   "  $04
32
  LD  C,A    ; transfer timer to C. a set bit has a longer
33
        ; pulse than a reset bit.
34
35
mark_0329:
36
PULSES:
37
  OUT  (IO_PORT_TAPE),A  ; pulse to cassette.
38
  LD  B,$23    ; set timing constant
39
40
mark_032D:
41
DELAY_2:
42
  DJNZ  DELAY_2    ; self-loop
43
44
  CALL  BREAK_1    ; test for BREAK key.
45
46
mark_0332:
47
BREAK_2:
48
  JR  NC,REPORT_D  ; forward with break to REPORT_D
49
50
  LD  B,$1E    ; set timing value.
51
52
mark_0336:
53
DELAY_3:
54
55
  DJNZ  DELAY_3    ; self-loop
56
57
  DEC  C    ; decrement counter
58
  JR  NZ,PULSES  ; loop back
59
60
mark_033B:
61
DELAY_4:
62
  AND  A    ; clear carry for next bit test.
63
  DJNZ  DELAY_4    ; self loop (B is zero - 256)
64
65
  JR  EACH_BIT  ; loop back

Wenn ich mir die Schaltung so ansehe, sieht es so aus, als wenn die 
Datenleitungen im IO-Bereich ignoriert werden, weil sie nicht 
angeschlossen sind.

Das setzen der Leitung sehe ich
1
  OUT  (IO_PORT_TAPE),A  ; pulse to cassette.

Die Frage ist: kann man die auch aktiv zurück setzen?

von Soul E. (Gast)


Lesenswert?

chris_ schrieb:

> Im Moment versuche ich gerade heraus zu finden, wie das Tape-Signal
> erzeugt wird.

Mit dem ZX81 hast Du Dir nicht gerade den trivialsten Homecomputer 
ausgesucht. Der bei Sinclair gepflegte Minimalismus erforderte so einige 
Tricks.

Lies Dir die Artikel von Wilf Righter durch, da ist einiges gut erklärt: 
http://www.user.dccnet.com/wrigter/

Einen ZX97lite habe ich mir auch mal gebaut.


> Die Frage ist: kann man die auch aktiv zurück setzen?

OUT 0FEh startet VSync und setzt CAS low. IN 0FEh auch, aber dabei liest 
man auch noch die Tastatur ein. OUT 0FFh beendet VSync und setzt CAS 
high.

von chris_ (Gast)


Angehängte Dateien:

Lesenswert?

>> Die Frage ist: kann man die auch aktiv zurück setzen?

>OUT 0FEh startet VSync und setzt CAS low. IN 0FEh auch, aber dabei liest
>man auch noch die Tastatur ein. OUT 0FFh beendet VSync und setzt CAS
>high.

Danke für die Hinweise.
Für mich sieht der Schaltplan so aus, als wenn man "IN 0FEH" auf jeden 
Fall nutzen muss, um U19D (Anschluss 11) auf 0 setzen zu können, um den 
FlipFlop für VSYNC zu beeinflussen.

von chris_ (Gast)



Lesenswert?

Hier ist der aktuelle Testaufbau und die Firmware, mit der ich die 
Signale stimuliere.

Das Schreiben alleine scheint VSYNC noch nicht zu beeinflussen.
1
void loop()
2
{
3
/*
4
> Die Frage ist: kann man die auch aktiv zurück setzen?
5
6
OUT 0FEh startet VSync und setzt CAS low. IN 0FEh auch, aber dabei liest 
7
man auch noch die Tastatur ein. OUT 0FFh beendet VSync und setzt CAS 
8
high.
9
*/
10
  Z80_out(0xFE,0);// data lines are not used
11
  
12
  delay(VERZ);
13
  
14
  Z80_out(0xFF,0);// data lines are not used
15
  
16
  delay(VERZ);
17
18
}

von Soul E. (Gast)


Lesenswert?

Hast recht, OUT wirkt nur auf den NMI-Generator (HSync). VSync (und 
Tastatur lesen) läuft über IN.
1
  xxFBh.R   Sinclair Printer Status
2
            xxxxx0xx   (decoding scheme, A2 only used)
3
  xxFBh.W   Sinclair Printer Output
4
            xxxxxx0x   (decoding scheme, A2 only used)
5
  xxFDh.W   Disable NMI (ZX81 only)
6
            xxxxxx0x   (decoding scheme, A1 only used)
7
  xxFEh.W   Enable NMI (ZX81 only)
8
            xxxxxxx0   (decoding scheme, A0 only used)
9
  NNFEh.R   Keyboard read, when NMI=Off: also enter VSYNC and set CAS.OUT=Low
10
            xxxxxxx0   (decoding scheme, A0 only used)
11
  xxFFh.W   Terminate Vsync and restart LINECNTR and set CAS.OUT=High
12
            xxxxxxxx   (every out performs this action)

von chris_ (Gast)



Lesenswert?

>Hast recht, OUT wirkt nur auf den NMI-Generator (HSync). VSync (und
>Tastatur lesen) läuft über IN.

Danke für die Auflistung. Das hat sehr geholfen.

Leider hatte ich  auf  Grund der schlecht leserlichen Beschriftung einen 
74HC08 für U13 gesteckt, sodass das FlipFlop nicht funktionieren konnte. 
Das hat etwas gedauert, bis ich alles mit der Arduino Signalstimulation 
durchgemessen hatte.

Jetzt funktioniert der Ausgang. Der Signalpegel scheint mir mit 200mVpp 
etwas niedrig. Den 47pF Kondenstor C8 habe ich nicht eingebaut, weil ich 
keinen hatte. Der kleine Wert dürfte meiner Meinung nach aber auch 
keinen großen Einfluss auf die Signalqualität haben.

Anbei die über Microphon der Webcam aufgenommen, geliebten Tape-Signale 
aus meinem Debugging-Aufbau.
Durch die Microphonübertragung werden die Signalformen nicht ganz so 
sauber sein, wie bei direktem Line-Recording.

von ??? (Gast)


Lesenswert?

Was machst du da so lange? Das Board ist doch in einer Stunde fertig 
bestückt. Warum nicht Fehler suchen, wenns fertig ist?

von chris_ (Gast)


Lesenswert?

>Was machst du da so lange?

Ich analysiere die Funktionsweise des Systems sehr genau.

von Alex P. (ra_p)


Lesenswert?

In einer Stunde Bestückt ? Die Zeit vergeht für jeden anders...

von Dirk S. (fusebit)


Lesenswert?

Ein Z80 Systemwunsch ist bei mir auch noch so ein Überbleibsel aus der 
Jugend ;-) Bevor sämtliche Komponenten nur noch zu Museumspreisen 
erhältlich sind, habe ich mich entschlossen den ZX81+38 zu bauen.

Die Platine habe ich jetzt erhalten und auch die meisten Bauteile habe 
ich zusammen.

Aber der RCA-Verbinder ist doch verkehrt herum platziert, oder?
Ich finde nur Print-Chinch-Buchsen mit zwei Lötpins hinten und einem 
vorne. Selbst das Farnell Teil aus der BOM ist so. Habe ich etwas 
übersehen?
Kennt jemand einen Print Chinch der passen würde?

von Dirk S. (fusebit)


Lesenswert?

Der Oszillator ist aufgebaut, er läuft aber mit den angegebenen 15p 
Kondensator nicht auf 13 MHz, sondern nur mit 1,4 MHz.
Ganz ohne Kondensator, oder mit 4.7p läuft er sauber mit 13 MHz.

von Ale (Gast)


Lesenswert?

Ich hab 10 pF für 13 MHz benutzt. Mit 20 pF waren sowas wie 30 kHz.
Ich würde sagen daß so was wie 12.8 oder 12.9 MHz besser als 13 sind, 
dann läuft der Sync ein bisschen besser, mindestens wird von meinem 
Ferns. erkannt. Ein Bild habe ich trotzdem noch nicht gekriegt.
Eine Cinch Buschse habe ich mit der Zange modifiziert, sonst passt es 
nicht in die Löcher.

von chris_ (Gast)


Lesenswert?

>Ein Z80 Systemwunsch ist bei mir auch noch so ein Überbleibsel aus der
>Jugend ;-)

Das Problem mit der Cinch-Buchse habe ich auch, die passt vom Pining her 
nicht. Ich werde sie aber vielleicht einfach irgend wie einpassen.

>Aber der RCA-Verbinder ist doch verkehrt herum platziert, oder?
>Ich finde nur Print-Chinch-Buchsen mit zwei Lötpins hinten und einem
>vorne. Selbst das Farnell Teil aus der BOM ist so. Habe ich etwas
>übersehen?
>Kennt jemand einen Print Chinch der passen würde?

Willkommen im Club ;-) Ich hätte ja nicht gedacht, dass sich hier noch 
jemand findet, der das Projekt auch nachbaut.

Das Problem mit der Cinch-Buchse habe ich auch, die passt vom Pining her 
nicht. Ich werde sie aber vielleicht einfach irgend wie einpassen.

Noch ein kleiner Tipp beim Zusammenbau: Ich habe bei meiner Platine erst 
spät gemerkt, dass die Jumper auf der Platine vorverdrahtet sind. Man 
braucht die Jumper als erst mal nicht, wenn man die eine 
Standardkonfiguration hat.

von Dirk S. (fusebit)


Angehängte Dateien:

Lesenswert?

Etwas mehr als eine Stunde braucht es schon :-)

Die CPU scheint zu laufen, ich kann Signale auf den Adressleitungen 
messen, aber ich bekomme gar kein Bild.

Chris, könntest Du die Modifikation zwischen U13 und U19 bitte etwas 
genauer beschreiben?
Pin 4 von U19B ist ja laut Schaltplan mit U13C Pin 10 und U13D Pin 11 
verbunden.

Was muss ich dort auftrennen und wie verbinden?

von Dirk S. (fusebit)


Angehängte Dateien:

Lesenswert?

Ist das so richtig?

Das mit den Jumpern hatte ich zum Glück auf der Homepage gelesen :-)

: Bearbeitet durch User
von chris_ (Gast)


Lesenswert?

>Ist das so richtig?

Ja, genau so. Mit dieser Änderung hatten wir die Sync-Signale bekommen, 
aber noch kein sichtbares "K". Deshalb ist es wahrscheinlich gut, die 
Leiterbahnen erst einmal nicht aufzutrennen, sondern die entsprechenden 
Pins der ICs vom Sockel wegzubiegen und dort die Kabel anzulöten.

Die große Kunst bei dem Projekt ist vermutlich das Debugging. Deshalb 
gehe ich so langsame vor und versuche, die Schaltung mit externen 
Signalen zu stimulieren und so die korrekte Funktion der Einzelteile zu 
testen.

Der Assemblercode des Zx81 ist ziemlich schwierig zu verstehen, aus 
diesem Grund wird es auch nicht einfach werden, die richtigen Testpunkte 
im Code zu identifizieren.

von Dirk S. (fusebit)


Angehängte Dateien:

Lesenswert?

Moin,

ich habe den Pin 4 hochgebogen und mit einem Draht an U13 angelötet, 
aber leider trotzdem keinerlei Videosignal.

Bis ich die Funktionsweise des Videogenerators so weit verstanden habe, 
dass ich weiss wo ich messen muss, wird wohl noch etwas Zeit vergehen.

Beim "video combiner" habe ich bei U11A Pin 3 ein vielversprechendes 
Signal, aber es kommt nicht durch. Es wird von D13 soweit runtergezogen, 
dass Q8 nicht aufsteuert. Liegt das möglicherweise an den Werten der 
Bauteile rund um Q8 (Beim Vorgänger ist eine 1N4148 und andere 
Widerstandswerte verbaut) oder bei U11B und dessen Ansteuerung?

von Ale (Gast)


Lesenswert?

Dank ein defektes '74 (kacke Kinabauteile) hatte ich am Ausgang des U18B 
(9) nichts außer High Pegel. Jetzt sieht man was.
So-wie-so habe ich mich zu früh gefreut, meinem Fernseher hacht einfach 
nicht mit.

von Dirk S. (fusebit)


Lesenswert?

Ale schrieb:
> Dank ein defektes '74 (kacke Kinabauteile) hatte ich am Ausgang des U18B
> (9) nichts außer High Pegel. Jetzt sieht man was.
> So-wie-so habe ich mich zu früh gefreut, meinem Fernseher hacht einfach
> nicht mit.

Bekommst Du das Bild mit oder ohne die Modifikation am U19B Pin 4?

von Dirk S. (fusebit)



Lesenswert?

Ich habe mal an ein paar Stellen gemessen, jeweils mit und ohne die 
Modifikation.

Vielleicht kann mir ja jemand so einen Tipp geben wo der Fehler sein 
könnte, oder wo ich messen sollte.

Ausser für RCA out hänge ich nur dann beide screenshots an, wenn sie 
sich unterscheiden.

von Soul E. (Gast)


Lesenswert?

Der ZX81 macht die Bildschirmausgabe in Echtzeit. Die Videodaten stehen 
im RAM und der Prozessor führt sie als "Programm" aus. Da er naturgemäß 
mit dem Bildschirminhalt nichts anfangen kann werden seine 
Datenleitungen nach Masse kurzgeschlossen. Er führt dann 00h = NOP aus, 
inkrementiert also den Adresszähler, während die Videologik den 
RAM-Inhalt verwurstet.

Wenn der Prozessor Bild macht, also als Luxus-Adresszähler fungiert, 
kann er nicht rechnen. Deshalb fällt beim ZX80 die Videoausgabe aus wenn 
ein Programm läuft. Da das nicht wirklich praktisch war wurde dem ZX81 
dann ein FAST und ein SLOW-Mode spendiert. Im FAST-Mode verhält er sich 
wie ein ZX80. Im Slow-Mode wird die Programmausführung 192x pro Halbbild 
angehalten um jeweils eine Videozeile rauszugeben. So kommt der 
NMI-Generator ins Spiel.

Am Netz /HSYNC siehst Du den HSYNC. Periode 63,7 µs, davon 4,6 µs low. 
U13C, U13D bilden ein Flipflop, darüber wird ein Freigabesignal erzeugt. 
Wenn das Low ist löst jeder /HSYNC einen /NMI aus. Ist es High schaltet 
das OR-Gatter auf High und der NMI bleibt aus.

Wir erinnern uns,
1
  xxFDh.W   Disable NMI (ZX81 only)
2
            xxxxxx0x   (decoding scheme, A1 only used)
3
  xxFEh.W   Enable NMI (ZX81 only)
4
            xxxxxxx0   (decoding scheme, A0 only used)

Also muss nach dem Ansprechen der IO-Adresse FDh der NMI inaktiv sein 
und nach dem Ansprechen von FEh aktiv. Wenn das umgekehrt ist, dann muss 
die Modifikation rein bzw raus.


Wenn wir davon ausgehen, dass das ROM ordnungsgemäß ausgeführt wird, 
dann sollte der NMI aktiv sein. U19_Pin_6_ohne.png wäre also der 
richtige Zustand. Wenn Du mit dem Oszi rauszoomst solltest Du sehen, 
dass 192 Pulse erzeugt werden und danach eine Weile High-Pegel ist. Das 
ist die vertikale Austastlücke wo /VSYNC aktiv ist.

von (prx) A. K. (prx)


Lesenswert?

Soul E. schrieb:
> Er führt dann 00h = NOP aus,
> inkrementiert also den Adresszähler, während die Videologik den
> RAM-Inhalt verwurstet.

Mit der Besonderheit, dass der Prozessor am vorzeitigen Zeilenende statt 
der NOPs den dann durchkommenden HALT Befehl ausführt, der 
zufälligerweise exakt das gleiche Timing hat wie eine Sequenz von NOPs. 
Das echte Zeilenende gibts über die eigentlich für DRAMs gedacht 
Refresh-Adresse.

von Soul E. (Gast)


Lesenswert?

Richtig. Man kann da durchaus noch tiefer ins Detail einsteigen, aber im 
ersten Schritt ging es erstmal darum zu verstehen wie das NMI-Signal 
aussehen muss und wofür das gut ist.

Dem interessierten Leser empfehle ich die Artikel von Wilf Rigter, hier 
insbesondere 
http://www.user.dccnet.com/wrigter/index_files/ZX%20Video%20Tutorial.htm


Die Freunde des Türstoppers haben übrigens auch ein eigenes Forum: 
https://forum.tlienhard.com/phpBB3/viewforum.php?f=2&f=2

von Dirk S. (fusebit)


Angehängte Dateien:

Lesenswert?

Vielen Dank für die ausführliche Antwort!

Ich komme der Sache näher. Nun habe ich zumindest nicht synchronisierte 
schwarze Flecken auf weißem Grund :-)

Den Grund warum es jetzt funktioniert kann ich nicht verraten, weil es 
peinlich wäre zu erwähnen, dass ich Jumper 5 und 6 weggelassen hatte. 
Ich hatte die Angaben auf der revspace Seite so verstanden, dass alle 
Jumper eine Standardverbindung haben...

Das Bild bekomme ich in der originalen Verschaltung und mit Jumper 5 
kann ich es invertieren. Die Schaltung und die CPU scheinen zu laufen, 
nur die Synchronisation passt nicht.

Wenn ich ein leeres ROM einsetze bekomme ich ein komplett weißen 
Bildschirm.
Allerdings zeigt mein China-Composite-HDMI Wandler in beiden Fällen an 
das er ein NTSC Eingangssignal bekommt.

: Bearbeitet durch User
von Soul E. (Gast)


Lesenswert?

Dirk S. schrieb:

> Das Bild bekomme ich in der originalen Verschaltung und mit Jumper 5
> kann ich es invertieren. Die Schaltung und die CPU scheinen zu laufen,
> nur die Synchronisation passt nicht.

Was sagt denn Dein Oszi? /HSYNC da, 15,7 kHz? /VSYNC da, 60 Hz? NMI da?

Das Flachbildschirme auf Zeddies nicht gut zu sprechen sind ist bekannt, 
denen ist das Videosignal zu räudig. Am besten funktioniert immer noch 
ein möglichst primitiver Röhrenfernseher. Wobei Dein Kompatibler 
zumindest eine Austastung (Blanking) vor und nach dem HSync macht. Das 
Original springt direkt von Sync auf Weiss.

Allerdings gefällt mir Dein Bildinhalt nicht. Ausser dem "K" unten links 
sollte das Bild einfarbig sein. Wäre durchaus möglich dass die CPU in 
den Wald läuft, dann ist die Synchronisation ebenfalls dahin.

von Dirk S. (fusebit)


Angehängte Dateien:

Lesenswert?

Die nächste Feststellung. Im Bastelkeller hat sich die Schaltung 
komplett geweigert ein Bild zu erzeugen und dann hatte ich eine Idee. Am 
anderen Monitor hatte ich, als Notlösung, die Schaltung über eine 
Powerbank versorgt. Und siehe da, wenn ich statt dem Labornetzteil die 
Powerbank nehme, dann kommt (meistens) ein Bild.

Am U8 messe ich auch ein HSYNC, aber an U13 Pin_3 liegt kein VSYNC an.


Leider geht mein Frequenzgenerator nur bis 5 MHz, daher kann ich auch 
keinen alternativen Takt einspeisen.

Ich habe die Signale etwas weiterverfolgt und Pin 20 vom Z80 ist 
beständig auf high und wenn ich es richtig sehe, dann kann somit kein 
VSYNC Signal generiert werden.

: Bearbeitet durch User
von chris_ (Gast)


Lesenswert?

>Ich komme der Sache näher. Nun habe ich zumindest nicht synchronisierte
>schwarze Flecken auf weißem Grund :-)

Das Bild sieht gar nicht schlecht aus. Es erinnert mich ein wenig an die 
Muster meines Zx81 vor 37 Jahren, als ich versucht haben, das RAM in den 
ROM Zeichensatzbereich zu legen.
Was ich in das Bild interpretiere: Deine Synchronisation funktioniert, 
die Videosignale werden korrekt ausgegeben. Das gleichmäßige Muster 
deutet darauf hin, dass der Zeichensatzadressbereich nicht stimmt. 
Vielleicht sind irgendwelche Jumper für das ROM nicht richtig gesteckt.

von chris_ (Gast)


Lesenswert?

Was mir gerade noch eingefallen ist: Vielleicht wäre es gut, wenn man 
sich ein "Inbetriebnahme-ROM" machen würde, mit dem man nach und nach 
die Peripherie testen kann. Man könnte ein Signal aus der 
Line-Out-Buchse ausgeben.

von Dirk S. (fusebit)


Lesenswert?

Nur die Jumper 4 (NTSC/PAL), 5+6 (Bildschirm invertieren) sind "aktiv".
Alle anderen habe eine vorgegebene Verbindung die erst auf der Platine 
durchtrennt werden müsste. Die sind auch alle vorhanden und damit sollte 
es für 16k RAM und ein 27C256 EPROM passen.
Ich habe auch extra die ROM Daten 4x hintereinander gebrannt, damit auch 
bei geänderten Adressjumpern immer das ZX81 ROM vorliegt.

Hier die Angaben von revspace:

The jumpers are:
JP1, select ROM size, default = 8K alternative = 16K
JP4, place to select 50Hz, open = 60Hz
JP5, Invert video, default = black text alternative = white text
JP6, first pixel fill, default = white, alternative = black
JP8, U5 pin 23, default = A11, alternative = A12
JP9, U5 pin 26, default = A13, alternative = +5V
JP10, U5 pin 20, default = nROMCS, alternative = A11
JP12, U3 PIN 1, default= GND (16K), alternative A14 (32K)

Obendrei kann ich kein VSYNC Signal bei U13 Pin_3 messen und das müsste 
ja vorhanden sein, oder?

von Soul E. (Gast)


Lesenswert?

VSync kommt aus der Software. Wenn Du von Hand die entsprechenden 
I/O-Adressen ansteuerst und das Flipflop toggelt, dann läuft  die CPU 
irgendwo in den Wald.

Wird denn der NMI 60x pro Sekunde für eine Weile ausgeschaltet?

Dein Z80 bekommt ja einen vernünftigen Takt? TTL-High reicht nicht, da 
müssen echte 5 V anliegen.

von Dirk S. (fusebit)


Angehängte Dateien:

Lesenswert?

So sieht der Takt direkt an der CPU aus.

Auffällig ist auch das ich nur nach mehrmaligen Ein- und Ausschalten das 
Bild bekomme. Meistens klappt es nicht sofort...

U19 Pin_6 läuft mit 63,6 µs stabil durch.

Vielleicht von Bedeutung: Das Muster ist, soweit ich es sehe, bei jedem 
Start immer etwas anders, bleibt aber im Betrieb gleich. Es läuft halt 
immer durch.

: Bearbeitet durch User
von Soul E. (Gast)


Lesenswert?

Das Muster ist der RAM-Inhalt nach dem Einschalten. Wenn der NMI stetig 
durchläuft macht die CPU irgendwas, aber keine Bildausgabe. D.h. Dein 
ROM-Code läuft nicht.

HSync kommt aus der Hardware und scheint ja in Ordnung zu sein.Kein Bild 
bekommst Du wenn nach dem Einschalten das VSync-Flipflop gesetzt ist.

D.h. jetzt müsstest Du den Logikanalyzer auf die CPU schnallen und mal 
schauen was die nach dem Reset so treibt.

von Dirk S. (fusebit)


Lesenswert?

Wo wir in der Gegend sind.
Mir ist gerade aufgefallen, dass im Schaltplan ein 8x10k 
Widerstandsnetzwerk als Pull-Up für die Datenleitung eingezeichnet ist.

In der BOM und daher auch verbaut ist aber 8x22k. Könnte das zu knapp 
sein?

von Dirk S. (fusebit)


Lesenswert?

Ich muss mir bald einen neuen Nutzernamen zulegen.

Bei Aufbau habe ich die BOM abgehakt, ich habe nun hunderte Male auf die 
Platine geschaut und nach Kurzschlüssen gesucht, aber das ich R12, R14 
und R15 an den Datenleitungen nicht bestückt hatte habe ich erst jetzt 
gemerkt.

Nun hat sich das Verhalten deutlich geändert. Es tut sich (fast) nichts 
mehr.
Nach dem Einschalten kann ich etwas 700ms Signale auf D0 messen, aber 
danach schaltet sich die CPU ab und alles ist ruhig. Der Takt liegt an, 
aber die Adress- und Datenleitungen sind 0V. Ich habe CPU und ROM mal 
getauscht, keine Änderung.

von Dirk S. (fusebit)


Angehängte Dateien:

Lesenswert?

Leider habe ich keinen Logikanalyser. Ich habe mal D0 bis D3 auf das 
Oszilloskop gelegt, anbei die erwähnte Startsequenz, nach der sich 
nichts mehr tut.

Dazu ein willkürlicher Zoom in diese Sequenz. Die Signale sehen für mich 
nicht gerade sauber aus. Ist das normal beim Z80?

von Dirk S. (fusebit)


Angehängte Dateien:

Lesenswert?

Ich glaube alles wird gut (irgendwann).

Mit der Modifikation U10 Pin_4 direkt auf U13 Pin_8 bekomme ich ein 
stabiles weißes Bild.

Als ich dann mit dem Oszilloskop an D0 gemessen habe, hatte ich nicht 
nur Signale, sondern nun läuft eine einzelne "Punktzeile" durch das 
Bild. Ist das vielleicht das ersehnte und nicht synchronisierte "K"

von chris_ (Gast)


Lesenswert?

>Ist das vielleicht das ersehnte und nicht synchronisierte "K"

Das könnte es sein. Ich weiß nur nicht mehr, ob das "K" am Programmstart 
oben oder unten auf dem Bildschirm steht ( Ich glaube unten ).
Vielleicht würde eine Änderung der Quarzfrequenz wie von Ale weiter oben 
vorgeschlagen, helfen.

>Leider habe ich keinen Logikanalyser.

Früher hatte ich auch keinen, aber mittlerweile gibt es ziemlich 
günstige, die sehr hilfreich sind:
https://www.ebay.de/itm/USB-Logic-Analyzer-Device-Set-Compatible-to-Saleae-24MHz-8CH-for-ARM-FPGA-M100/184390574978?hash=item2aee88e382:g:3twAAOSwmThfKnCJ

von Ale (Gast)


Lesenswert?

Ich werde mit dem Jumper JP4 probieren. Melde mich gleich.
Ich hab noch 3 Platinen übrig, falls jemand noch was bauen will :).

von Ale (Gast)


Lesenswert?

Jetzt ist VSYNC nicht mehr da.
NMIs sind nicht da. Ich hab alle jumpers entfernt, geht es nicht mehr, 
langsam geht es mir die Puste aus!

von Soul E. (Gast)


Angehängte Dateien:

Lesenswert?

chris_ schrieb:

> Das könnte es sein. Ich weiß nur nicht mehr, ob das "K" am Programmstart
> oben oder unten auf dem Bildschirm steht ( Ich glaube unten ).

Das "K" ist unten links.


> Früher hatte ich auch keinen, aber mittlerweile gibt es ziemlich
> günstige, die sehr hilfreich sind: https://www.ebay.de/itm//184390574978

Mit acht Kanälen? Schon Dein Z80 hat 40 Pins. Du brauchst acht 
Datenleitungen, zumindest die unteren acht Adressleitungen, und die 
CPU-Statussignale. Da sollten es schon 32 oder besser 80 Kanäle sein. 
Und externer Takt, kein USB-Clock. Üblicherweise taktet man den LA mit 
der doppelten oder vierfachen Taktrate des Zielsystems, und das Ziel 
bekommt den selben Takt dann über 1-2 Flipflops runtergeteilt. So bleibt 
die Abtastung synchron.

Im Anhang zu sehen sind einmal die ersten Befehle nach Reset (aus dem 
ZX81 ROM), und einmal ein Videobild. Man erkennt gut, dass der NMI 
teilweise dem Hsync folgt und teilweise abgeschaltet wird.


Sinclair hat die I/O-Funktionen sehr sparsam decodiert. Meist wird nur 
eine einzige Adressleitung verwendet. Um die Hardware zu testen (NMI 
an/aus, VSync an/aus) reichen bei gezogener CPU also relativ wenige 
Drähte, oder meinetwegen auch Arduino-Pins.

von Dirk S. (fusebit)


Lesenswert?

Vielen Dank für die Logikplots (oder Diagramme, oder wie nennt man die 
genau?).

Wäre ein LA1010 von Kingst vielleicht eine Option?
http://www.qdkingst.com/en/products/LA1010

Für AVR und Z80 sollte der doch ausreichen, oder?

Irgendwie will ich das Teil jetzt auch zum laufen bekommen.
Bin gerade dabei die Tastatur zu bauen :-)

von Soul E. (Gast)


Lesenswert?

Dirk S. schrieb:

> Wäre ein LA1010 von Kingst vielleicht eine Option?
> http://www.qdkingst.com/en/products/LA1010

Das ist doch auch so ein USB-Protokollanalyzer, der die Daten direkt in 
den PC schaufelt? Bei 16 Kanälen schafft der 16 MHz, was grundsätzlich 
reichen würde. Leider hängen diese 16 MHz aber am USB-Takt und kommen 
nicht von Deinem Zielsystem. 16 Kanäle sind auch reichlich knapp für ein 
8 bit-System. Da müsstest Du den Datenbus in zwei Durchgängen 
analysieren, erst bit 0..3 und dann 4..7.

Ich habe sowas: 
https://www.mikrocontroller.net/articles/Minila_Version_MockUp . Der hat 
32 Kanäle, speichert 256k Datensätze, und das mit externem Takt bis 100 
MHz. Ein HP 16700 wäre natürlich noch schöner, braucht aber ordentlich 
Platz im Labor.

von Joe G. (feinmechaniker) Benutzerseite


Lesenswert?

Natürlich ist ein LA mit 32 Kanälen eine feine Sache. Doch wir haben vor 
35 Jahren die Z80 Systeme, dabei auch diverse ZX-Spektrum Nachbauten, 
auch ohne LA in Betrieb genommen. Das Mittel der Wahl war ein 
TTL-Prüfstift und eine einfache Single-Step-Logik [1]. Mit dieser Logik 
kann mindestens die korrekte Arbeitsweise des Bussystems und der 
Programmabarbeitung getestet werden. Funktioniert dieser Teil, lassen 
sich die restlichen Fehler auch finden. Heutzutage machen kleine 
Testroutinen auch keine großen Umstände mehr wie EPROM mit UV Löschen, 
wieder Brennen und erneut testen.

[1] 
http://zed80.com/Z80-RETRO/Resources/Schematics/CPU%20Single-Step%20Clock.jpg

von Dirk S. (fusebit)


Angehängte Dateien:

Lesenswert?

Ich vermute das wir mit der Änderung zwischen U19 und U13 auf dem 
falschen Weg sind. Damit entsteht dann zwar ein Videosignal, aber es 
kommt nichts Sinnvolles von der CPU. Bis mein LA1010 ankommt muss ich 
mit 4 Kanälen auskommen. Ich habe mal nHALT, Hsync, nNMI und U16 Pin 11 
gemessen.

Wenn ich die Signal richtig verstehe, dann sieht man das die CPU etwa 
600 ms läuft, dann kommt ein HALT aus dem die CPU mit einem NMI geweckt 
wird. Nach einem Puls auf U16 Pin_11 (notwendig für VSYNC) kommt wieder 
ein HALT, aber es kommt kein NMI zum wecken mehr und es ist Schluss...

Ich habe jetzt mein altes Buch "Mikrocomputer selbstgebaut und 
programmiert" rausgesucht und werde mich mal in den Z80 einlesen. Das 
Buch war damals alles was ich mir rund um einen Z80 leisten konnte :-)

von chris_ (Gast)


Lesenswert?

Joe G.
>Natürlich ist ein LA mit 32 Kanälen eine feine Sache. Doch wir haben vor
>35 Jahren die Z80 Systeme, dabei auch diverse ZX-Spektrum Nachbauten,
>auch ohne LA in Betrieb genommen. Das Mittel der Wahl war ein
>TTL-Prüfstift und eine einfache Single-Step-Logik [1]. Mit dieser Logik
>kann mindestens die korrekte Arbeitsweise des Bussystems und der
>Programmabarbeitung getestet werden. Funktioniert dieser Teil, lassen
>sich die restlichen Fehler auch finden. Heutzutage machen kleine
>Testroutinen auch keine großen Umstände mehr wie EPROM mit UV Löschen,
>wieder Brennen und erneut testen.
Genau so sehe ich das auch. Das mit den Testroutinen habe ich weiter 
oben schon mal vorgeschlagen. Im Moment kann ich leider noch kein EEPROM 
programmieren, das kommt aber demnächst.
Gibt es rigendwo einen Z80 Online Assembler oder einen für Linux? Früher 
hatte ich das von Hand übersetzt.

von sulla80 (Gast)


Lesenswert?

1 Sekunde googeln bringt:

https://www.asm80.com/

von Ale (Gast)


Lesenswert?

Ich hab einen LA mit 34 Kanäle, ein Intronix LogicProbe. Ich muss nur 
einen Adaptor für den Z80 so es kann auf alle Adress/Data Pins greifen.

Wegen der Änderung des NMI Flipflops: es soll fukntionieren wie 
gezeichnet. Die Änderung soll nicht nötig sein. Verstehe noch nicht 
warum es nicht geht.
@Dirk: wenn ich mich richtig errinere, haben wir gedacht daß das NMI 
Flipflop irgendwie falsh verdrahtet ist.

von Dirk S. (fusebit)


Lesenswert?

Ale schrieb:
> Ich werde mit dem Jumper JP4 probieren. Melde mich gleich.
> Ich hab noch 3 Platinen übrig, falls jemand noch was bauen will :).

Vielleicht kannst Du ja dem Konstrukteur eine zur Verfügung stellen.
So wie ich es auf der revspace Seite lese hat er selber den ZX81+38 noch 
nicht aufgebaut.

https://revspace.nl/ZX81PLUS34_ZX81_clone
Unter Punkt 51 ist seine E-Mail-Adresse.

von chris_ (Gast)


Angehängte Dateien:

Lesenswert?

Gerade versuche ich mit dem ArduinoMega zu debuggen.

Es sieht stark danach aus, dass die Addressleitungen A13/A14 gegenüber 
dem Original vertauscht sind.

von Dirk S. (fusebit)


Lesenswert?

Da hast Du Recht, damit ist der Port ohne bodge wire nicht richtig 
nutzbar.
Allerdings ist das Problem ja erst relevant, wenn der ZX81+38 läuft :-D

von chris_ (Gast)


Lesenswert?

>Allerdings ist das Problem ja erst relevant, wenn der ZX81+38 läuft :-D

Hast Du überprüft, ob die Addressleitungen von der CPU zu den Speichern 
eventuell auch vertauscht ist?

von Soul E. (Gast)


Lesenswert?

chris_ schrieb:

> Es sieht stark danach aus, dass die Addressleitungen A13/A14 gegenüber
> dem Original vertauscht sind.

Wenn die Vertauschung nur den Erweiterungsstecker betrifft, dürfte sie 
für Euer jetziges Problem nicht relevant sein.

Wenn Du Deinen Arduino anstelle der Z80-CPU anschliesst, kannst Du 
zumindest die Adressdecodierung durchtesten.

* geht der /CS-Pin am RAM auf low zumindest im Bereich 0x4000 - 07FF? 
Mit 32k RAM sollten 0x4000 - 0xBFFF aktiv sein.

* geht der /CS-Pin am EPROM auf Low im Bereich 0x0000 - 0x1FFF?

* wenn /M1 low ist, wird im Bereich 0xC000 - 0xFFFF RAM angesprochen, 
und zwar das bei 0x4000 liegende.


Und dann I/O:

* schreiben auf 0xFD schaltet den NMI aus

* schreiben auf 0xFE schaltet den NMI ein

* lesen von 0xFE während der NMI aus ist selektiert den Tastaturport 
(bei Euch U22) und schaltet VSync ein

* schreiben auf 0xFF schaltet VSync aus und setzt den Videozeilenzähler 
zurück.

Das lässt sich alles statisch und ohne Logikanalyzer testen. 
Drahtbrücken am CPU-Sockel reichen, mit Arduino als Signalgenerator ist 
es natürlich komfortabler.

von Dirk S. (fusebit)


Lesenswert?

Ich habe mal MREQ, IORQ, RD und WR beim starten gemessen und mir ist 
aufgefallen, dass die so früh aktiv werden, dass die Versorgungsspannung 
noch nicht voll da ist. Dadurch erreichen sie anfangs nur etwa 2,5V bei 
high.

Ich habe dann das alte Fenster-EPROM (das vermutlich nicht so glücklich 
über so geringe Pegel ist) durch ein aktuelles OTP-EPROM (was vielleicht 
etwas toleranter ist) getauscht und nun läuft das System über die 600ms 
hinaus und ich bekomme einen weißen Bildschirm.

Die Adressleitungen zum RAM und ROM habe ich gemessen, die scheinen 
richtig verdrahtet.

von Soul E. (Gast)


Lesenswert?

Dirk S. schrieb:
> Ich habe mal MREQ, IORQ, RD und WR beim starten gemessen und mir ist
> aufgefallen, dass die so früh aktiv werden, dass die Versorgungsspannung
> noch nicht voll da ist. Dadurch erreichen sie anfangs nur etwa 2,5V bei
> high.

Dann halte den Reset-Taster so lange fest bis die Betriebsspannung 
komplett hochgelaufen ist. Alternativ, vergrößer C5 auf 10 oder 22 µF. 
Clock muss sauber da sein bevor /Reset loslässt.

> Ich habe dann das alte Fenster-EPROM (das vermutlich nicht so glücklich
> über so geringe Pegel ist) durch ein aktuelles OTP-EPROM (was vielleicht
> etwas toleranter ist) getauscht und nun läuft das System über die 600ms
> hinaus und ich bekomme einen weißen Bildschirm.

Nun, 2,5 V High-Pegel sind grundsätzlich in Ordnung für TTL. Auch für 
EPROMs. CMOS erwartet grundsätzlich höhere High-Pegel, da sollten es 
schon 80% der Betriebsspannung sein. Es gibt aber CMOS-Serien, wie die 
hier verwendeten 74HCT, die mit TTL-Pegeln zufrieden sind, also >2,4 V 
als High akzeptieren.

74HC ohne T funktioniert nicht an einem NMOS-Z80. Alles was der Z80 
treibt muss 74HCT oder 74LS sein.


> Die Adressleitungen zum RAM und ROM habe ich gemessen, die scheinen
> richtig verdrahtet.

Werden die Chipselect für RAM und ROM in den richtigen Adressbereichen 
erzeugt? Schalten alle IO-Funktionen, also NMI-Freigabe, VSync und 
H-Counter-Reset wie sie sollen?

von Dirk S. (fusebit)


Lesenswert?

Das mit dem Reset hatte ich mir auch gedacht und habe ihn mit einer 
Drahtbrücke auf Masse gezogen, eingeschaltet und dann wieder geöffnet.
Aber dann passiert auf den Leitungen nichts.

Ich werde mir mal einen Taster anlöten und es noch einmal in Ruhe 
durchtesten...

Der Z80 ist ein aktueller CMOS Chip Z84C0010PEG

von chris_ (Gast)



Lesenswert?

Eigentlich wollte ich den ArduinoMega über Jumperkabel verbinden.
Aber die Steckleiste ist so eng, dass ich die Kabel nicht nebeneinander 
einstecken konnte. Deshalb habe ich jetzt eine Adapterplatine gelötet 
und die schöne Optik ist dahin ...
Man kann sich das Flachbandkabel eigentlich sparen und die 
Adapterplatine direkt als Verbinder nehmen.

Das Testprogramm für die RAM und ROM CS-Leitungen sieht folgendermaßen 
aus und die CS-Leitungen reagieren wie sie sollen.

Am Dekoder wäre auch noch nM1 und nRFSH angeschlossen. Die müsste man 
noch mal gesondert testen.
1
void testMemoryCsLines()
2
{
3
  set_nRFSH(HIGH);
4
  set_nMREQ(HIGH);
5
  set_nM1(HIGH);
6
7
  setDebugBusActive();
8
  setAddressbusActive();
9
10
  while (1)
11
  {
12
    Z80_writeAddrBus(ROM_ADR);
13
    set_nMREQ(LOW);
14
    delay(VERZ);
15
    delay(VERZ); // double delay to distinguish ROM from RAM on Oszi
16
    set_nMREQ(HIGH);
17
    delay(VERZ);
18
19
    Z80_writeAddrBus(RAM_ADR);
20
    set_nMREQ(LOW);
21
    delay(VERZ);
22
    set_nMREQ(HIGH);
23
    delay(VERZ);
24
  }
25
26
}

Heute morgen hatte ich den Sound Output Test noch mal laufen lassen, 
aber er ging nicht mehr.
Grund: Man muss den NMI-FlipFlop erst definiert mit
1
  Z80_out(0xFD, 0); // turn NMI off
zurücksetzen, sonst ist der Zustand undefiniert und der Sound Output 
funktioniert eventuell nicht.
So was könnte auch ein Unterschied zum echten Zx81 sein: Dass die ULA 
den FlipFlop am Anfang auf einen definierten Zustand setzt.

von Ale (Gast)


Lesenswert?

Meinem Z80 gibt so um die 3,3 V für Signalen die auf "1" stehen (Es ist 
angeblich eine CMOS Variante, aber frisst um die 100 mA). Und ich habe 
wie im Stromlaufplan HC Bauteilen genommen. Das Könnte auch so ein 
Problem sein. Mit einem NMOS Z80 ist auch nichts passiert. Ich frage 
mich auch warum HC bauteile anstatt HCT, die HCT sind genau so schnell 
and stromsparend.
Ich hab den Author kontaktiert und auf diese Seite aufmerksam gemacht, 
und gefragt wegen NMI Flipflop und HC Bauteile. Vielleicht kriegen wir 
eine Antwork und ein paar Ratschläge :)

von Dirk S. (fusebit)


Lesenswert?

So etwas in der Art werde ich wohl auch bauen müssen :-/

Ich kann jetzt drei Startverhalten immer reproduzieren.
Zur Kontrolle habe ich die Adressleitung A0, A1 und A2 auf dem Oszi.

1) Strom einfach an. Ich bekomme ein weißes Bild und permanente 
Aktivität auf den Adressleitungen.

2) Strom an, mit Resetschalter gedrückt. Sobald ich loslasse habe ich 
wieder für 600ms Aktivität auf den Adressleitungen und dann ist es 
vorbei. Dazu kein Signal am RCA.

3) Ausgehend von 1 oder 2 drücke ich Reset und lasse los. Nun würde ich 
erwarten das die CPU wieder startet, aber die Adressleitungen bleiben 
still. Dafür bekomme ich das Weisssignal auf dem RCA.

Jetzt muss ich wohl oder übel entweder auf den Logikanalysator warten, 
oder mir mit DIP-Schaltern und einer 40er IC-Fassung einen 
"Signalgenerator" basteln...

von Soul E. (Gast)


Lesenswert?

chris_ schrieb:

> Am Dekoder wäre auch noch nM1 und nRFSH angeschlossen. Die müsste man
> noch mal gesondert testen.

Die sind wichtig wenn es dann an die Videoausgabe geht. Über /M1 = Low 
wird ja das RAM mit DFILE von 0x4000 nach 0xC000 gespiegelt.


> So was könnte auch ein Unterschied zum echten Zx81 sein: Dass die ULA
> den FlipFlop am Anfang auf einen definierten Zustand setzt.

Genau deshalb lautet der allererste Befehl im ZX81-ROM "OUT ($FD),A ".


Ale schrieb:

> (...) Ich frage
> mich auch warum HC bauteile anstatt HCT, die HCT sind genau so schnell
> and stromsparend.

Statt HCT kannst Du auch HC nehmen, wenn die gerade herumliegen. Aber 
nur an Stellen wo die Eingänge von HC oder HCT getrieben werden. 
HC-Eingänge funktionieren nicht an NMOS-Ausgängen (Z80, EPROM ohne "C" 
im Namen) und theoretisch nicht (praktisch aber oft) an TTL-Ausgängen 
(74, 74LS).

HC braucht >3,3 V als High und <1,6 V als Low. LS und HCT brauchen >2,4 
V als High und <0,8V als Low.



Dirk S. schrieb:

> Jetzt muss ich wohl oder übel entweder auf den Logikanalysator warten,
> oder mir mit DIP-Schaltern und einer 40er IC-Fassung einen
> "Signalgenerator" basteln...

Oder mit dem Arduino, die Idee ist gar nicht so schlecht.

Euren ZX-Kompatiblen gibt es auch als ZX81+35 in SMD. In dieser Form 
funktioniert er, im ZX-Forum haben das Ding einige Leute. Du könntest 
also mal Deinen Schaltplan mit der SMD-Variante vergleichen, ob da ggf 
Fehler beim Übertragen passiert sind. Leiterplatte und Schaltplan 
sollten ja CAD sei Dank konsistent sein.

von chris_ (Gast)


Lesenswert?

>Jetzt muss ich wohl oder übel entweder auf den Logikanalysator warten,
>oder mir mit DIP-Schaltern und einer 40er IC-Fassung einen
>"Signalgenerator" basteln...

Oder einen Arduino Due bestellen

https://www.amazon.de/SunFounder-ATmega2560-16AU-Board-compatible-Arduino/dp/B00D9NA4CY/ref=sr_1_3?__mk_de_DE=%C3%85M%C3%85%C5%BD%C3%95%C3%91&dchild=1&keywords=arduino+mega&qid=1601124028&quartzVehicle=1480-1518&replacementKeywords=arduino&sr=8-3
und am Montag eine Adapterplatine dazu löten ...

von Dirk S. (fusebit)


Lesenswert?

Ich klingel gerade alle möglichen Signale durch und da ist mir etwas 
aufgefallen:

Sollte ich nicht zwischen den Data-Pins der CPU und den Data-Pins von 
ROM und RAM 1k messen? Da ist gar keine Verbindung!
Soweit ich es im Schaltplan mit den ganzen Bussen lesen kann ist da aber 
doch nichts ausser der 1k dazwischen?

von Soul E. (Gast)


Lesenswert?

Dirk S. schrieb:

> Sollte ich nicht zwischen den Data-Pins der CPU und den Data-Pins von
> ROM und RAM 1k messen? Da ist gar keine Verbindung!
> Soweit ich es im Schaltplan mit den ganzen Bussen lesen kann ist da aber
> doch nichts ausser der 1k dazwischen?

Das Video-Tutorial hast Du gelesen?

Der Z80 wird als Adresszähler für den Videospeicher missbraucht. Dazu 
führt er quasi den Bildschirmspeicher als "Programm" aus. Weil er damit 
natürlich nichts anfangen kann, wird sein Datenbus nach Masse 
kurzgeschlossen. Er sieht dann 0x00, also NOP, und inkrementiert seinen 
Adresszähler. Die 1k entkoppeln die Daten vom RAM (die ja für das 
Videobild gebraucht werden) von eben diesem NOP an der CPU.

Also ja, Du solltest von jedem CPU-Datenpin 10k nach VDD messen und 
zwischen CPU und RAM 1k.

von Dirk S. (fusebit)


Lesenswert?

Tutorial habe ich noch nicht gelesen, aber die 1k Verbindung ist 
vorhanden.
Mir war bisher nicht bewusst, dass mein Multimeter beim Einschalten des 
Piepser den Messbereich auf 600R feststellt :-D

Langsam macht mich das Teil Wahnsinnig.

von Soul E. (Gast)


Lesenswert?

Ok, Fehlalarm. Die PNGs von der Leiterplatte sahen dahingehend auch 
unverdächtig aus.

von chris_ (Gast)


Angehängte Dateien:

Lesenswert?

Hurra, ein Mini-Erfolg: Ich kann mit dem Mega das RAM lesen und 
schreiben ;-)

Wer einen besseren RAM-Test hat, kann ihn gerne zeigen.

von Dirk S. (fusebit)


Angehängte Dateien:

Lesenswert?

Ich habe ja ein 28C256 zur Verfügung, damit sollte ich ja einfache 
Testroutinen schreiben können. Eigentlich wollte ich mich mit Assembler 
vertraut machen, wenn das System funktioniert, aber nun brauche ich es 
wohl vorher. Im Buch von Klein sind ja einige Testroutinen für den 
Selbstbau und die versuche ich jetzt anzupassen.

In der normalen Bestückung des ZX81+38 sind ja dies die 
Speicherbereiche:
0x0000 - 0x3FF für das ROM
0x4000 - 0x7FF für das RAM

Hier das leicht angepasste Listing von Seite 103
ld a,(1000h)   Lese ROM
ld a,0         Lade 0
ld (4000h),a   0 ins RAM
ld a,(4000h)   Lade RAM
ld a,0ffh      Lade FF
ld (4000h),a   FF ins RAM
ld a,(4000h)   Lade RAM
jp start       Wiederhole

Anbei der hex-Code, stimmt der so?

von Dirk S. (fusebit)


Angehängte Dateien:

Lesenswert?

Ich glaube ich freue mich :-)

Anbei vier Signale:
- gelb         CLK
- hellbau      CS ROM
- pink         CS RAM
- dunkelblau   nWR

Damit scheint die Adresslogik und die Speicheranbindung zu 
funktionieren, oder übersehe ich mal wieder etwas?

von Dirk S. (fusebit)


Lesenswert?

Wie aufwändig wäre ein Assemblerprogramm, welches auf dieser Hardware 
zum Beispiel schwarze und weiße Streifen oder ein anderes Testmuster 
ausgibt?
Dann könnte man sich auf die Problemlösung beim Videogenerator 
konzentrieren.

: Bearbeitet durch User
von chris_ (Gast)


Lesenswert?

>Wie aufwändig wäre ein Assemblerprogramm, welches auf dieser Hardware
>zum Beispiel schwarze und weiße Streifen oder ein anderes Testmuster
>ausgibt?

Ich denke, das sollte möglich sein.
Ich habe gerade versucht, deinen Assemblercode oben hier zu compilieren

https://www.asm80.com/?nfname=test&nftype=a80#

aber irgendwie bringt er einen Fehler

"Unrecognized ASM type"

von Soul E. (Gast)


Lesenswert?

Dirk S. schrieb:
> Wie aufwändig wäre ein Assemblerprogramm, welches auf dieser Hardware
> zum Beispiel schwarze und weiße Streifen oder ein anderes Testmuster
> ausgibt?

Sehr. Wie Du im Video-Tutorial gelesen hast wird das Videobild von der 
CPU erzeugt. Diese muss also exakt das passende Programm ausführen. Die 
Hardware, also Line Counter, HALT und NMI-Generator, unterstützen nur 
beim Timing. Das ist ein ziemlich abgefahrenes Konzept, was Mr Sinclair 
sich da ausgedacht hat, und um da richtig durchzusteigen braucht es eine 
Weile.

Daher muss als erstes sichergestellt sein dass die Peripherie arbeitet. 
NMI an/aus, VSync an/aus, RAM-Shadow bei /M1 low, etc. Den Ansatz, mit 
einem Arduino Testvektoren zu generieren, finde ich gar nich so 
verkehrt.

von chris_ (Gast)


Lesenswert?

Ein kleines Stück bin ich weiter.

https://www.asm80.com/

Im Emulator muss man das File mit der Endung *.z80 abspeichern.
Die Syntax ist ähnlich der hier
Vor allen Dingen muss man das File erst im Browser speichern, erst dann 
wird der Compilierknopf freigegeben. Will man den Debugger nutzen, muss 
immer zuerst compiliert werden.

https://github.com/skx/z80-examples/blob/master/ram-increment.z80

Dieser Code compiliert, bis auf den Befehl
1
 xor a,a

Doof, dass es so viele unterschiedliche Syntaxe für den Z80 zu geben 
scheint.

von (prx) A. K. (prx)


Lesenswert?

Verschiedene Hirne denken verschieden. Einer meint, weil es
  sbc a,e
gibt, müsse es auch
  xor a,e
geben, Andere wenden ein, dass es sbc nur deshalb mit 2 anzugebenden 
Operanden gibt, weil es auch
  sbc hl,bc
gibt. Was bei xor nicht der Fall ist. Also hat xor nur einen 
anzugebenden Operand.

von chris_ (Gast)


Lesenswert?

>Was bei xor nicht der Fall ist. Also hat xor nur einen
>anzugebenden Operand.

Naja, das mag ja schon sein. Es muss aber mindestens einen Assembler 
geben, der das Konstruct xor a,a versteht, was auch immer daraus gemacht 
wird. Oder der Code von hier hat nie compiliert:

https://github.com/skx/z80-examples/blob/master/ram-increment.z80

Wie auch immer, es wäre sehr nützlich, wenn man für den Online-Assembler 
eine Befehlsreferenz finden könnte.

von Soul E. (Gast)


Lesenswert?

chris_ schrieb:

> Wie auch immer, es wäre sehr nützlich, wenn man für den Online-Assembler
> eine Befehlsreferenz finden könnte.

Sonst nimm doch einen Offline-Assembler: 
http://john.ccac.rwth-aachen.de:8000/as/

von chris_ (Gast)


Lesenswert?

>Sonst nimm doch einen Offline-Assembler:

Danke für den Link.
Mittlerweile schaffe ich es, einfach Dinke im Online-Compiler zu 
kompilieren.

Hier der Test für den Line-Out-Ausgang:
1
; Zx81plus38
2
; toogle the line out with maximum speed
3
4
    out ($FC),a     ; NMI off
5
loop:
6
    in a,($FE)      
7
    out ($FF),a     
8
    jp loop

Dirk, vielleicht kannst Du das mal in Dein EEPROM brennen und laufen 
lassen. Ich kann leider das EEPROM noch nicht schreiben.

von (prx) A. K. (prx)


Lesenswert?

Eigentlich sollte man bei solchen Boards das EEPROM durch RAM und einen 
AVR als Bootloader und Debugger ersetzen. ;-)

: Bearbeitet durch User
von chris_ (Gast)


Lesenswert?

>Eigentlich sollte man bei solchen Boards das EEPROM durch RAM und einen
>AVR als Bootloader und Debugger ersetzen. ;-)

Witzigerweise machen das sogar einige. Ja, mit der Sinnhaftigkeit ist es 
so eine Sache ...
Eigentlich interssierte mich der Zx81 vor ein paar Jahren, heute ist er 
obsolet. Was ich beim Basteln am Projekt aber feststelle: Es macht 
tatsächlich Spaß wie früher. Man kommt immer ein kleines Stückchen 
weiter.

Ich kann dem Projekt aber vielleicht doch noch etwas mehr abgewinnen: 
Dieser Z80 ist wahrscheinlich mehr als 20 mal langsamer als ein AVR mit 
16MHz ( den Multiplier noch nicht mitbetrachtet ).
Die Frage ist aber: Die Hardware ist heute rasant schneller und die Zx81 
Hardware kann da nicht mithalten. Was ist aber mit den veränderten 
Softwaremethoden? Kann man mit dem heutigen Wissen etwas mehr machen, 
als die Ideen, die man vor 40 Jahren hatte? Das wäre dann der Anspruch: 
Etwas Neues auf alter Hardware, was es bis jetzt noch nicht gab.

Ahh ... jetzt kommen meine Erinnerungen wieder ...
1
; Zx81plus38
2
; toogle the line out 
3
4
    out ($FC),a     ; NMI off
5
loop:
6
    in a,($FE) 
7
    call delay
8
    out ($FF),a
9
    call delay
10
    jp loop
11
12
delay:
13
    ld b,$2         ; time constant for deley loop
14
delayLoop:
15
    djnz delayLoop
16
    ret

Das wird wahrscheinlich nicht laufen ... was machen wir mit dem 
Stackpointer?

von chris_ (Gast)


Lesenswert?

>von A. K. (prx)
>Eigentlich sollte man bei solchen Boards das EEPROM durch RAM und einen
>AVR als Bootloader und Debugger ersetzen. ;-)

Hier ist so ein Beispiel, bei dem genau das gemacht wird:

https://gitlab.com/8bitforce/retroshield-hw

von Dirk S. (fusebit)


Lesenswert?

Nächster Versuch dem Problem näher zu kommen :-)

Ich habe das ROM am Anfang um D3 FD ergänzt, damit sollte ja der NMI 
Generator abgeschaltet werden. Wird er aber nicht.

chris_ warum hast Du $FC? Das original ROM beginnt doch auch mit D3 FD

: Bearbeitet durch User
von Dirk S. (fusebit)


Lesenswert?

Wieder zu früh gefreut :-(

Auch wenn das Muster zu dem passt, was ich bei dem einfachen 
Speichertest erwartet hätte. Ich bekomme die gleichen Signale auch ohne 
eingesetztes ROM und/oder RAM.

Ohne CPU ist es aber weg.

von chris_ (Gast)


Lesenswert?

>chris_ warum hast Du $FC? Das original ROM beginnt doch auch mit D3 FD

Du hast recht, es muss FD sein. Tja, so spät Abends macht man viele 
Fehler.
Hast Du den Code mal ausprobiert und das Signal am Line-Out angeschaut?

von Dirk S. (fusebit)


Lesenswert?

Ich habe das gerade mal getestet, aber ohne Erfolg. Gleiches Ergebnis 
wie ohne ROM, oder mit meinem RAM-Test.

Den teste ich gleich nochmal, weil der Maschinencode falsch war. Ich mus 
ja low-byte und dann high byte setzen.

Da ich das händisch übersetze hier mal der Maschinencode zum 
gegenprüfen:

D3 FD DB FE D3 FF C3 02 00

Am Pin 1 des Cassette Output ist low.

von Dirk S. (fusebit)


Lesenswert?

Ich mache nichts mehr ohne meinen Logikanalysator.
Der soll morgen ankommen.

Irgendwie scheint es als würde gar nicht, oder zumindest nicht richtig 
auf das ROM zugegriffen. Egal ob ich keines, ein leeres oder eines mit 
einem der Testroutinen einsetze, das Verhalten ist, soweit ich es mit 
dem Oszi erkennen kann immer gleich.

Nur beim ZX81 ROM sieht es anders aus. Da habe ich aber auch 4-mal das 
gleiche Abbild gebrannt. Daher ist es komplett voll.


Jetzt habe ich das EEPROM mal mit Zufallszahlen gefüllt und siehe da, es 
passieren andere Dinge. Ist vielleicht doch etwas an der Adresslogik 
und/oder Verdrahtung faul?

: Bearbeitet durch User
von chris_ (Gast)



Lesenswert?

Bei mir klappen mittlerweile die ersten Schritte.
Ich habe den Adressdecoder überbrückt und die nMREQ Leitung wie im Bild 
direct als RAM-CS verwendet.

Mit diesem Code
1
; Zx81plus38
2
; toogle the line out 
3
4
    out ($FD),a     ; NMI off
5
loop:
6
    in a,($FE)   
7
8
    ld b,$ff         ; time constant for deley loop
9
l1:
10
    djnz l1
11
    out ($FF),a     
12
13
    ld b,$ff         ; time constant for deley loop
14
l2:
15
    djnz l2
16
17
    jp loop

kann ich einen Rechteckton am angeschlossenen Lautsprecher mit ~500Hz 
erzeugen.

Der AtmegaDebugger hat mittlerweile ein kleines Menue. Ich kann den 
Inhalt des RAMs editieren. Das geschieht, indem ich nBUSREQ auf 0 ziehe, 
10ms warte und dann einfach mit dem Atmega direkt in das RAM schreibe. 
Danach kann ich nBUSREQ und die anderen Leitungen freigeben und dann 
direkt einen Reset auslösen, um das Programm zu starten.

Den ArduinoMega muss ich mit einem externen Netzteil versorgen, damit 
der Z80 echte 5V bekommt und nicht die reduzierten 4.3V durch USB.
Auf den Spannungsregler des ArduinoMega habe ich einen kleine Kühlkörper 
eines Schrittmotortreibers geklebt, da die ganze Schaltung 460mA zieht 
und der Spannungsregler bei 8V Versorgung ziemlich heiß wird.

von chris_ (Gast)


Lesenswert?

Im anderen Thread wird gezeigt, wie man eine Tastatur für den Zx81 baut:

Beitrag "Re: STECCY - ZX-Spectrum-Emulator mit STM32"

Bilder zu einem Keyboardbau gibt es auch schon beim Zx81plus34:

https://revspace.nl/ZX81PLUS34_ZX81_clone

Allerdings ist dort nicht so schön, dass die Tasten aus der Folie heraus 
schauen.

von Dirk S. (fusebit)


Angehängte Dateien:

Lesenswert?

Die Tastatur ist schon fertig und wartet auf den ZX81 :-)

Die Platine ist gefräst, Layout kann ich bei Bedarf hier reinstellen.
Für die Tastenbezeichnung habe ich einen Ausdruck unter 25g/m² 
Glasgewebe auf Sperrholz laminiert und anschließend gefräst. Mit 
Distanzbolzen schauen die Tasten nur 1 mm oben raus und die 
GfK-Beschichtung ist wiederstandsfähig.

von Soul E. (Gast)


Lesenswert?

Gute Idee mit den Microtastern.

Sowas ist dann richtig schick, mit Cherry MX und individuell bedruckten 
Tastenkappen: 
https://forum.tlienhard.com/phpBB3/viewtopic.php?p=36449#p36449

von Dirk S. (fusebit)


Lesenswert?

Ziemlich schick die Cherry, aber wohl ganz ein kleines bisschen (zu) 
teuer :-D
Obendrein ja absolut nicht stilecht, im Vergleich zur recht bescheidenen 
original Tastatur.

von Dirk S. (fusebit)


Angehängte Dateien:

Lesenswert?

Ich habe noch ein paar Änderungen gemacht und rumgespielt.
C5 hat jetzt 10 µF und so startet der Z80 auch erst wenn die Versorgung 
wirklich gut ist. Damit startet das System nun immer exakt gleich (mit 
der nach 600 ms ist Schluss-Sequenz). R42 und 43 habe ich mal testweise 
deutlich verkleinert um saubere CS-Signale zu bekommen. Wenn ich es 
richtig verstehe sind sie ja ohnehin nur dazu vorhanden, das der 
Erweiterungsport CS überschreiben kann und das liegt wohl noch in weiter 
Ferne.

Anbei nochmal die 600ms Sequenz, diesmal mit NMI, VSYNC, sowie RAM und 
ROM CS. Die CPU scheint NMI doch zu deaktivieren, dann erfolgen 
Speicherzugriffe und kurz vorm Ende gibt es tatsächlich einen VSYNC 
Impuls und dann ist es vorbei...

von chris_ (Gast)


Lesenswert?

>Die Tastatur ist schon fertig und wartet auf den ZX81 :-)

Die sieht ja sehr interessant aus. Kannst Du auch Bilder vom Innenleben 
posten? Mit Glasgewebe habe ich noch nie gearbeitet und weiß leider 
nicht, wo man das passende her bekommt.

Gibt es jemand, der schon mal ein passende Gehäuse gemacht hat? 
Vielleicht könnte man eines mit dem 3D-Drucker erstellen und mit der 
Methode etwas verfeinern:
https://hackaday.com/2020/09/23/reforming-3d-prints-with-salt-and-heat/

von chris_ (Gast)


Lesenswert?

Der Grund, warum ich so langsam mit dem Debugger voran gehe, ist, dass 
ich so die Fehler viel besser finde.

Bis jetzt ist mir zum Zx81plus38 folgendes aufgefallen:

1. Die Addressleitungen A13 und A14 am Anschlussstecker sind vertauscht

2. Die Spannungsversorgungspins beim Original Zx81 sind 5V und 9V. Beim 
Zx81plus38 sind sie hinten kurzgeschlossen.

3. Der Wait Anschluss des Z80 ist hart an ein FlipFlop angeschlossen, so 
dass man mit einem externen Debugger kein Single-Step machen kann.

Meiner Meinung nach sollten die Punkte alle bei einem Redesign besser 
gelöst werden.

von Jesus (Gast)


Lesenswert?

Meine Güte mit diesen Fehlern ist die PCB Schrott. Eine Unverschämtheit 
sowas anzubieten.

von Dirk S. (fusebit)


Angehängte Dateien:

Lesenswert?

chris_ schrieb:
>
> Die sieht ja sehr interessant aus. Kannst Du auch Bilder vom Innenleben
> posten?

Da gibt es nicht viel Innenleben. Das sind einfach 6x6mm Taster mit 10mm 
Höhe.

von chris_ (Gast)


Lesenswert?

>Da gibt es nicht viel Innenleben. Das sind einfach 6x6mm Taster mit 10mm
>Höhe.

Danke für das Bild :-)

>Meine Güte mit diesen Fehlern ist die PCB Schrott. Eine Unverschämtheit
>sowas anzubieten.

Nein, sie nicht. Die Platine ist ganz nett und für die erste Version so 
schlecht nicht. Wenn wir den letzten Fehler gefunden haben, wird sie mit 
einem Patch auch funktionieren.
Außerdem wird sie nicht angeboten, sondern man muss sie selber bei einem 
PCB-Hersteller machen lassen. Man kann aber die Layoutdaten 
herunterladen.

von Soul E. (Gast)


Lesenswert?

chris_ schrieb:

> 3. Der Wait Anschluss des Z80 ist hart an ein FlipFlop angeschlossen, so
> dass man mit einem externen Debugger kein Single-Step machen kann.

"The WAIT line is used to finely synchronize the Z80 with NMI timing 
twice during each video frame with the NMI_CONT service routine at ROM 
address 02A9." Im originalen ZX81 wird Wait über einen Transistor 
angesteuert. Da kann man einen externen Low-Pegel drüberlegen.

Du könntest den Flipflop-Ausgang mit einem Serienwiderstand entkoppeln.

von Dirk S. (fusebit)


Angehängte Dateien:

Lesenswert?

Der LA1010 ist da und ich musste ihn gleich einmal ausprobieren. Mein 
RAM/ROM-Test hat irgendwie keine sinnvollen Werte ergeben, daher habe 
ich ein noch einfacheres "Programm" geschrieben und auf der 
vollbestückten Platine getestet.

D3 FD      Out (FD),a
D3 23      Out (23),a
C3 00 00   wiederhole

Und siehe da, die CPU macht wie ihr befohlen!

Solange ich nur das ROM anspreche scheint es also zu funktionieren. Die 
nächsten Tage habe ich leider kaum Zeit um weiter zu machen, auch wenn 
es natürlich sehr reizt :-)


PS: 32 Kanäle wären echt super praktisch ;-D

: Bearbeitet durch User
von Ale (Gast)


Lesenswert?

Ich hab HCT chips bestellt für die die ich mit HC besückt habe, wenn die 
kommen werde ich weiter testen. Mir ist noch was eingefallen: Wenn ich 
ein Powerbank zur Versorgung nutze, nach dem ersten HALT Befehl der 
Processor macht nichts weiter weil WAIT = 0. Und wenn ich ein Netzteil 
als Versorgung anschliesse geht es. Aber ohne vernünftige Bauteile (HC) 
wird wenig...

von olibert (Gast)


Lesenswert?

Dirk S. schrieb:
> Jetzt habe ich das EEPROM mal mit Zufallszahlen gefüllt und siehe da, es
> passieren andere Dinge. Ist vielleicht doch etwas an der Adresslogik
> und/oder Verdrahtung faul?

Ich hatte ein aehnliches Problem vor 2 Jahren mit einem einfachen 
Z80-Einplatinenrechner auf Lochraster mit Faedeldraht (laueft mit 
modifizierten MS Basic von 1979 und UART-Ausgabe): Zwei der oberen 
Addressleitungen waren vertauscht mit lustigen Effekten.

von chris_ (Gast)


Lesenswert?

>Solange ich nur das ROM anspreche scheint es also zu funktionieren. Die
>nächsten Tage habe ich leider kaum Zeit um weiter zu machen, auch wenn
>es natürlich sehr reizt :-)

So geht's mir auch, es ist eher ein Wochenendprojekt.

Wenn das ROM funktioniert, könntest Du das Rechtecktonprogramm ( 
Beitrag "Re: ZX81 plus38 Clone" ) ins ROM flashen 
und die Signale mit dem LA ansehen.

Weil ich mein EEPROM nicht programmieren kann, habe ich das RAM 
verwendet, das ROM sollte aber genauso funktionieren, falls nicht die 
zusätzliche Peripherie ( ich hatte ja nur ein Teil gesteckt ) 
irgendwelche Interrupts oder Waits verursacht.

von Dirk S. (fusebit)


Angehängte Dateien:

Lesenswert?

Moin,

der Rechteckgenerator funktioniert auch.

von Erich (Gast)


Lesenswert?

Dirk S. schrieb:
> PS: 32 Kanäle wären echt super praktisch ;-D

Ja,
und ein Disassembler dazu.
So hat das früher ausgesehen:
http://lc64.blogspot.com/2018/03/gould-k115d-watch-z80-working-live.html

Gruss

von Dirk S. (fusebit)


Angehängte Dateien:

Lesenswert?

Langsam kommen wir der Sache näher, glaube ich (mal wieder).
Das Rechteckprogramm läuft, der ROM-Test auch. Dann habe ich einen RAM 
Test gemacht. Der läuft auch, solange ich Zeile 9 und 10 nicht einbaue, 
wo ich zusätzlich wieder Line Out toggle.

Wenn OUT ($FD),a gesendet wird, kommt eigentlich immer noch ein NMI 
Signal durch und das verursacht dann totales Chaos und die CPU hängt 
sich auf. (Bisher habe ich noch nicht getestet einen Rücksprung in 
0x0066 zu schreiben.)

Die Bedeutung des Timings habe ich aber geprüft. Nachdem ich einige 
zusätzliche "NMI aus" eingefügt habe, erreicht die CPU den PIN toggle 
Bereich erst nach dem letzten NMI und alles funktioniert (Ich sehe das 
0xAA auf dem halben Adressbus und ein hochfrequentes Signal auf dem Line 
Out).

von Soul E. (Gast)


Lesenswert?

Dirk S. schrieb:

> PS: 32 Kanäle wären echt super praktisch ;-D

Auch da wirst Du irgendwann das Bedürfnis nach einem word recognizer 
haben, um auf Adresse $4711 triggern zu können und troztdem nur vier 
Kanäle für die Adressbits zu vergeuden :-)

Merk Dir schonmal den 74HCT688 vor.


Erich schrieb:

> So hat das früher ausgesehen:
> http://lc64.blogspot.com/2018/03/gould-k115d-watch-z80-working-live.html

Ja, mit so einer Kiste bist Du ganz vorne dabei. Auch HP 16xxx, ab und 
zu werden die recht günstig angeboten. Wenn nur der Platzbedarf nicht 
wäre...

Und nein, ein USB-Protokollanalyzer ist kein Ersatz für einen echten LA 
mit internem Speicher und externem Takteingang. Saleae & Co sind genial 
zum Debuggen von SW auf bekannt funktionierender HW und zum Analysieren 
von SPI, CAN, I2C etc. Aber nicht für Anwendungen, wo die Abtastung mit 
einem externen Systemtakt synchronisiert sein muss, wie bei diesen alten 
TTL-Gräbern. Wer nicht synchronisieren kann, der muss ordentlich 
überabtasten, und dann bist Du schnell bei >100 MHz Samplerate.

von Dirk S. (fusebit)


Angehängte Dateien:

Lesenswert?

:-)

von Dirk S. (fusebit)


Lesenswert?

Was habe ich gemacht?
Den Pin_06 von U19 hochgebogen, damit ist der NMI Ausgang nicht mehr 
verbunden. Nun gibt es ein, logischerweise unsauberes Bild. Es bleibt 
aber synchron, wenn ich es als NTSC ausgebe. Meine Konverterkiste von 
e... kann zum Glück beides.

Die Tastatur funktioniert auch zum Teil. Allerdings reagiert sie als 
wäre immer "shift" gedrückt.

Könnte es sinnvoll sein die 74LS32 und 74HC00 gegen HCT Typen zu 
tauschen?
Die müsste ich aber erst bestellen...

: Bearbeitet durch User
von Martin D. (mahjongg)


Lesenswert?

chris_ schrieb:

>>Jumper unter(?) Ram/Rom ...
> Das ist tatsächlich schlecht. Mein Kollege hat es dadurch gelöst, dass
> die Jumper unter der Platine sind, was aber Abstandsbolzen in der
> Platine erforderlich macht.

Forgive me for writing this in English, as you might know I'm Dutch, and 
my english is much better than my german, although I can perfectly read 
german, so I will write in English and use a translator to convert it to 
german. see below.

By the way, I'm indeed the designer of the ZX-81+38, and was invited to 
come here to help out builders of my clone.

chris_ schrieb:

>>Jumper unter(?) Ram/Rom ...
> Das ist tatsächlich schlecht. Mein Kollege hat es dadurch gelöst, dass
> die Jumper unter der Platine sind, was aber Abstandsbolzen in der
> Platine erforderlich macht.

these are not really meant to be jumpers, but wire links, with the 
default link already present as copper traces, so if you use the default 
configuration you don't have to place anything, if you need to change 
the configuration you just scratch the default copper trace though and 
use a thin wire (cut from a resistor, for example) to bridge the two 
holes.

Due to corona, and me consequently being fired from my old job, I have 
been in total self quarantine since the start of the COVID-19 crisis.
And have not been able to build my own copy of the ZX-81plus38 yet.
I would be grateful if someone could donate me a PCB, so I can built a 
prototype.
My makerspace is also in (partial) quarantaine, it can accept just ten 
persons, they have to wear a mask, and can stay just four hours.
So I took my laptop I used to design the ZX-81plus38 home, and I used it 
to create the bill of materials with. It contains two errors, firstly 
the RCA-jack I listed is of the wrong type, the PSG01546 it doesn't fit 
the PCB, you should instead use the much simpler FC68391.
A second discrepancy is the Pullup resistor pack, the schematic says it 
contains 4K7 resistors, but the BOM lists 10K resistors, either value 
would work, but originally the value should be 10K, same as the previous 
clone that was designed with SMT (surface mount components).

As for the question whether there are design errors in the ZX-81plus38, 
I'm quite sure there should not be, but I'm not a super-human, and the 
ZX-81plus38 was a complete redesign, using a new OS (Linux instead of 
windows) and a new CAD system (KiCad instead of Orcad), so it has been a 
manual conversion, not an automatic (copy-paste) conversion. And many 
footprints were hand made.
But unless I made a mistake in the conversion, the clone SHOULD work, as 
the old clone definitely DID work. If you doubt if I made a mistake in 
the schematic, please compare the part you are doubting with the older 
schematic of the ZX-81plus35.

now the translation for those who cannot read english:

-----------------------------------------------------

Verzeihen Sie mir, dass ich dies auf Englisch schreibe, da Sie 
vielleicht wissen, dass ich Niederländisch bin und mein Englisch viel 
besser ist als mein Deutsch, obwohl ich Deutsch perfekt lesen kann. 
Deshalb werde ich auf Englisch schreiben und einen Übersetzer verwenden, 
um es in Deutsch umzuwandeln.

Übrigens bin ich in der Tat der Designer des ZX-81 + 38 und wurde 
eingeladen, hierher zu kommen, um den Bauherren meines Klons zu helfen.

chris_ schrieb im Beitrag # 6408709:

>> Jumper unter (?) Ram / Rom ...
> Das ist schlecht. Mein Kollege hat es organisiert, dass
> die Jumper unter der Platine sind, war aber Abstandsbolzen in der
> Platine macht macht.

Dies sind eigentlich keine Jumper, sondern Drahtverbindungen, wobei die 
Standardverbindung bereits als Kupferspuren vorhanden ist. Wenn Sie also 
die Standardkonfiguration verwenden, müssen Sie nichts platzieren. Wenn 
Sie die Konfiguration ändern müssen, kratzen Sie einfach die 
Standard-Kupferspur und verwenden Sie einen dünnen Draht (z. B. von 
einem Widerstand abgeschnitten), um die beiden Löcher zu überbrücken.

Aufgrund der Korona und der Tatsache, dass ich von meinem alten Job 
entlassen wurde, befand ich mich seit Beginn der COVID-19-Krise in 
völliger Selbstquarantäne. und mein Gesundheit hat sich verschlechtert 
(aber ich habe keine Covid!).
Und konnte noch keine eigene Kopie des ZX-81plus38 erstellen.
Ich wäre dankbar, wenn mir jemand eine Leiterplatte spenden könnte, 
damit ich einen Prototyp bauen kann.
Mein Makerspace befindet sich ebenfalls in (Teil-) Quarantäne, er kann 
nur zehn Personen aufnehmen, sie müssen eine Maske tragen und kann nur 
vier Stunden bleiben.
Also nahm ich meinen Laptop mit, mit dem ich den ZX-81plus38 entworfen 
hatte, und erstellte damit die Stückliste. Es enthält zwei Fehler: 
Erstens ist die von mir aufgeführte Cinch-Buchse vom falschen Typ, die 
PSG01546 passt nicht auf die Platine, stattdessen sollten Sie den viel 
einfacheren FC68391 verwenden.
Eine zweite Diskrepanz ist das Pullup-Widerstandspaket, das laut 
Schaltplan 4K7-Widerstände enthält. In der Stückliste sind jedoch 
10K-Widerstände aufgeführt. Beide Werte würden funktionieren, aber 
ursprünglich sollte der Wert 10K betragen, genau wie beim vorherigen 
Klon, der mit SMT (Surface Mount) entworfen wurde Komponenten).

Was die Frage betrifft, ob es Designfehler im ZX-81plus38 gibt, bin ich 
mir ziemlich sicher, dass dies nicht der Fall sein sollte, aber ich bin 
kein Übermensch, und der ZX-81plus38 war ein komplettes Redesign unter 
Verwendung eines neuen Betriebssystems ( Linux anstelle von Windows) und 
ein neues CAD-System (KiCad anstelle von Orcad). Es handelt sich also um 
eine manuelle Konvertierung, nicht um eine automatische Konvertierung 
(Kopieren und Einfügen). Und viele Fußabdrücke wurden von Hand gemacht.
Aber wenn ich bei der Konvertierung keinen Fehler gemacht habe, SOLLTE 
der Klon funktionieren, da der alte Klon definitiv funktioniert hat. 
Wenn Sie Zweifel haben, ob ich im Schaltplan einen Fehler gemacht habe, 
vergleichen Sie bitte den Teil, an dem Sie zweifeln, mit dem älteren 
Schaltplan des ZX-81plus35.

von Dirk S. (fusebit)


Lesenswert?

Hi Martin,

great to have you here!
As you can see from my previous post the ZX81+38 is mostly working.
But there is something wrong with the NMI Generator and/or the NMI 
deactivation mechanism. The system only runs with U19 Pin 6 bended away 
to disconnect the NMI. But then the picture can't be right...

My keyboard now works, there was a solder bridge activating the "shift" 
all the time.

von Alex P. (ra_p)


Lesenswert?

Hello Martin, great hat you could join. Let me know where should I send 
a board, you also have my email address.

I got some LS chips, I'll try this evening.

von Martin D. (mahjongg)


Lesenswert?

Dirk S. schrieb:
> The system only runs with U19 Pin 6 bended away
> to disconnect the NMI. But then the picture can't be right...

Did you try to run basic in fast mode? Just like a Z80?

von Dirk S. (fusebit)



Lesenswert?

No difference between FAST and SLOW mode.

I've attached some more logic diagramms. I tried two things.
1) NMI bended away, connected to the LA and the NMI line pulled to GND. 
This way the system operates, but the picture is nearly impossible to 
read. There are no NMI generated at all. So it not the presence of the 
NMI causing issues, it's the absence!

2) Normal configuration. As before after 600 ms the system halts.

With NMI bended away I can use the ZX81, the lowest row of the screen is 
barely readable and it executes commands.


Just let me know if I should measure a specific signal and/or time. I'm 
just trying, as I'm not familiar with the ZX81 yet.

: Bearbeitet durch User
von Dirk S. (fusebit)


Lesenswert?

I had a closer look into the diagramms and got confused, but figured it 
out.
The Signal labelled as nHSYNY is in fact HSYNC. I probed the wrong pin!

von Dirk S. (fusebit)


Angehängte Dateien:

Lesenswert?

Ich bekomme nun ein recht gutes Bild hin.
Dazu muss ich den Pin_6 von U19 hochbiegen und die nNMI Leitung am 
Erweiterungsport über einen langen Draht und 100k auf Masse ziehen.
Wenn ich dann die Pinleiste anfasse ist das Bild fast perfekt :-D

Scheinbar koppeln da 50 Hz ein, allerdings synchronisiert das Display 
nur NTSC Modus.

von chris_ (Gast)


Lesenswert?

>Ich bekomme nun ein recht gutes Bild hin.

Gratulation zu Deinem Erfolg :-)
Jetzt wird die Suche nach der elektrischen Ursache interessant.

@alle
Ich finde, man müsste mal ein Blockschaltbild des Systems zeichnen, bei 
dem die wichtigsten Signale beschrieben sind. Was meint Ihr?

von Dirk S. (fusebit)


Angehängte Dateien:

Lesenswert?

Das Problem liegt beim nNMI Geberator.
Er lässt nach dem Start genau einen nHSYNC durch und danach kommen nWR 
und nIORQ nicht mehr zeitgleich, dadurch gibt es kein nNMI mehr.
Und dort wo sie zeitgleich auftreten, da blocken A0/A1 das der nHSYNC 
durchkommt.

: Bearbeitet durch User
von Martin D. (mahjongg)


Angehängte Dateien:

Lesenswert?

Ich würde das Schema des ZX-81plus35 mit dem Schema des ZX-81plus38 
vergleichen. Wenn es einen Fehler in der NMI-Behandlung gibt, muss es 
einen Unterschied zwischen den beiden Schemata geben, leider habe ich zu 
Hause keine Papierdiagramme zum Vergleich, und ich habe keinen Drucker. 
Deshalb muss ich auf dem Bildschirm meines Computers nach dem 
Unterschied suchen, aber das ist fast unmöglich. Ich könnte meinen 
Laptop neben den Bildschirm meines Desktop-Computers halten, aber auf 
den Fotos sehe ich, dass Dirk einen Zeitplan für Papier hat. Ich schlage 
daher vor, dass Dirk auch den Schaltplan des ZX-81plus35 druckt und die 
DMA-Schaltung beider Computer vergleicht.
Natürlich werde ich diesen Unterschied auch selbst suchen, aber wie 
gesagt bin ich heute nich 100% geistig klar.

Aber Ich sage noch einmal, der ZX-81plus35 funktioniert zu 100%, sehe 
oben, wo ich mit ein kleines program die Zeichensatz zeige.

Viel Glück.

: Bearbeitet durch User
von Dirk S. (fusebit)


Angehängte Dateien:

Lesenswert?

Hello,

so far I can see there comes a 0xFF on the lower address byte instead of 
the 0xFE to enable the nNMI. Now I saw that in the column counter area 
the 74LS125 U6 (Pin 1 + 2) can force the A0´to high.

I checked this with the LA, but it seems to be okay.

I also compared the NMI generator and column counter with the ZX97 
schematic and they are identical.

If I'm right there is no other possibility to force A0 high, beside the 
CPU and the U6.

The second picture is the correct one.

: Bearbeitet durch User
von Dirk S. (fusebit)


Lesenswert?

Da ich ja etwas erkennen kann und einfache Befehle wir PRINT ausgeführt 
werden, habe ich mal getestet ob das System, abgesehen von der Anzeige, 
funktioniert.
Tut es leider nicht.

Dieser Speichertest endet mit 1/20:

10 FOR N=16640 TO 65536 STEP 256
20 POKE N,0
30 IF PEEK N<>0 THEN GOTO 50
40 NEXT N
50 PRINT "MEMORY SIZE ";(N/1024)-16;"K"

Im Emulator http://www.zx81stuff.org.uk/zx81/jtyone.html läuft er.

Und das hier, aus dem Druckerhandbuch, führt zum Absturz. Im Emulator 
funktioniert es aber auch.

10 FOR J=1 to 10
20 FOR I=0 to J*12
30 PLOT 32+J*2*SIN(I/(J*6)*PI), 22+J*2*COS(I/(J*6)*PI)
40 NEST I
50 NEXT J

Ich komme nicht mehr wirklich weiter, da ich nicht mehr weiß wo ich 
suchen soll :-(

Edit: Es kann sein das er beim zweiten Programm gar nicht abstürzt. Die 
Synchronisation zum Bildschirm geht verloren. Das passiert aber auch bei
10 PRINT RND
20 GOTO 10

Da geht das Bild weg und kommt nach einiger Zeit mit dem richtigen 
Ergebnis wieder.

: Bearbeitet durch User
von Dirk S. (fusebit)


Lesenswert?

Das der Bildschirm weggeht und das untere Adressbyte auf 0xFF geht ist 
ja vermutlich genau richtig.
Die CPU arbeitet die ganze Zeit im FAST-Mode. Für den SLOW-Mode braucht 
sie ja den nNMI und daher stoppt sie mit komplett verdrahtetem U19 wohl 
auch nach 600ms. Sie wartet auf nNMI, nur warum kommt er nicht?

Beitrag #6423524 wurde vom Autor gelöscht.
Beitrag #6423535 wurde vom Autor gelöscht.
von Dirk S. (fusebit)


Angehängte Dateien:

Lesenswert?

So, erstmal eine gute Nacht :-)

Man beachte das grüne, dünne, lange Laborkabel zwischen dem 100k an GND 
und dem nNMI-Pin. Nur so und im NTSC-Mode gibt es ein Bild. Wenn ich den 
kurzen grauen Draht direkt an den Widerstand löte, dann geht es nicht.

von Frank M. (ukw) (Moderator) Benutzerseite


Lesenswert?

Dirk S. schrieb:
> Dieser Speichertest endet mit 1/20:
>
> 10 FOR N=16640 TO 65536 STEP 256
> 20 POKE N,0
> 30 IF PEEK N<>0 THEN GOTO 50
> 40 NEXT N
> 50 PRINT "MEMORY SIZE ";(N/1024)-16;"K"

Fragen:

1. Wieviel RAM hast Du, bei welcher Adresse beginnt es, wo endet es?
2. In welchem Adressbereich im RAM liegt das Basic-Programm selbst?

Ich habe zwar wenig Ahnung vom ZX81 (mehr vom ZX-Spectrum), könnte mir 
aber gut vorstellen, dass die POKEs das Basic-Programm selbst 
kaputthauen. Oder liegt das unterhalb von 16640? Wo liegt der 
Z80-Stackpointer?

> Im Emulator http://www.zx81stuff.org.uk/zx81/jtyone.html läuft er.

Vielleicht, weil der Emulator mehr RAM besitzt?

von Ale (Gast)


Lesenswert?

One difference is that the nWAIT signal is in the +34 not connected to 
the Q output of the '74. When NMIs are disabled after the memory test, 
as the traces show see above, the Flip-Flop U18A never gets set because 
NMIs are disabled. If one pulls nWAIT high, I did with a 6k8 resistor, 
then the code runs, I get VSYNC, I have to see it in the TV...

von Ale (Gast)


Lesenswert?

We only have 16 kBytes, from 16384 to 32767.

von Ale (Gast)


Angehängte Dateien:

Lesenswert?

So, it works, kind of. The shifted lines at the top are much more 
pronounced that they where with the TK-85 I had as a kid, and the 
jumpers are in some arbitrary position. I wonder about the black line on 
every char.

What I did: I pulled nWAIT high and disconnected it from the flip-flop. 
I can try to pull the NMI low to see the difference.

Somehow not all power banks I used to supply the board seem to give 200 
mA reliably.

@Martin: I'm shipping you today a board together with some chips.

Now for the next logical step: I want VGA output !

von Dirk S. (fusebit)


Lesenswert?

You found the root cause!!!!!

I just bended U18 Pin_05 away, without pull-up, just to try it.
And now it works with the nNMI connected, the circle drawing program 
from above is currently drawing :-)

But it only works in NTSC, because the relative frequency deviation is 
less for the 60 HZ then for the 50 Hz. So a PAL system most probably 
won't synchronise.

But there is still an issue. The picture is still disorted. The lower 
lines are very clear but line 1 to 2 are unreadable.

von Dirk S. (fusebit)


Angehängte Dateien:

Lesenswert?

Funktioniert :-)

Mal sehen ob es auch funktioniert ein Video hochzuladen.

von Dirk S. (fusebit)


Angehängte Dateien:

Lesenswert?

Ob ein 12,75 MHz Quarz das Problem mit dem Bild beheben könnte?

von Ale (Gast)


Lesenswert?

Something related to shifting the bits is wrong, because one white or 
black line, jumper dependent, is always there at the end of the char and 
the first line is always missing :/
Dirk's picture shows the same effect.

von Ale (Gast)


Lesenswert?

Yes a 12.75 MHz could help, I think Chris mentioned using a Function 
Generator with a lower frequency for better sync.
Regarding the first lines: My TK-85 (also a ZX81 clone but without an 
ULA) had the same effect, but I don't remember it being that pronounced.

von Soul E. (Gast)


Lesenswert?

Dirk S. schrieb:

> But there is still an issue. The picture is still disorted. The lower
> lines are very clear but line 1 to 2 are unreadable.

Same applies to the original ZX81. Use an old CRT television, not a 
flatscreen with digital signal processing.

HSync and VSync are ORed together, therefore the HSync pulses during 
VSync are missing. This makes it difficult for the DSP to syncronize on 
the first lines after start of frame. For a redesign, XOR HSync into 
VSync.

von Dirk S. (fusebit)


Lesenswert?

Wenn ich jetzt noch einen alten Röhrenfernseher bei e... besorge, dann 
schmeisst meine Frau mich raus :-D

von Soul E. (Gast)


Lesenswert?

Die HSync-Pulse im VSync machen den TFTs das Leben deutlich leichter. Es 
gibt von TI so schöne kleine Single-Gates. Da könnte man ein 74ACT1G86 
nehmen und unter U11B verstecken. Dann sieht's keiner...

Einen der größten Böcke von Sinclair hat Mahjongg ja schon abgestellt: 
dem originalen ZX81 fehlt der back porch hinter dem Sync. Keine Ahnung 
wie das auf Deutsch heisst, aber nach HSync (0,0 V) kommt erstmal ein 
bisschen Schwarz (0,3 V) bevor die eigentliche Zeile losgeht. Bei Farbe 
sitzt hier der Color Burst. Mit diesem Schwarzpegel stellt der Fernseher 
seine Verstärkung ein. Der ZX81 geht hier direkt von HSync (0,0 V) auf 
Weisspegel (0,7 V), was viele AGCs ziemlich durcheinanderbringt. Da hast 
Du dann ein in der Helligkeit waberndes Bild, was besser wird wenn die 
oberen Zeilen mehr Schwarz enthalten. Erst die letzten Versionen der ZX 
ULA hatten das Problem nicht mehr. Und der ZX81+35/38 hat es auch nicht.


BTW: Euer Problem scheint ja die nicht funktionierende WAIT-Schaltung zu 
sein. Die hat aber durchaus einen Sinn, d.h. Debuggen lohnt sich: 
http://www.user.dccnet.com/wrigter/index_files/ZX81WAIT.htm

von Sinus T. (micha_micha)


Lesenswert?

Soul E. schrieb:
> fehlt der back porch hinter dem Sync. Keine Ahnung
> wie das auf Deutsch heisst,

Schwarzschulter nannte man es "damals"

von Dirk S. (fusebit)


Angehängte Dateien:

Lesenswert?

Hi souleye,

Du meinst ich sollte U11B deaktivieren und dessen Signale auf so ein 
Einzelgate XOR legen?
Mit ein bischen biegen, abknipsen und zusammenlöten, müsste sich ja 
eigentlich ein XOR DIP so auf das U11 AND DIP löten lassen, dass ich nur 
Pin 4,5 und 6 am XOR habe (und natürlich VCC+GND).

EDIT: U11 ist kein ODER, sondern ein UND. Die Signale sind also 
gekoppelt.


Für die WAIT-Schaltung bastel ich mal die Schaltung von Wilf Ritger.

: Bearbeitet durch User
von Martin D. (mahjongg)


Lesenswert?

Ale schrieb:
> Something related to shifting the bits is wrong, because one white or
> black line, jumper dependent, is always there at the end of the char and
> the first line is always missing :/
> Dirk's picture shows the same effect.

That could be just a wrong setting of J6, which determines if the first 
pixel is either black, or white, and J5 which determines if the whole 
visible field is either black or white.

also, if you have not installed the logic for the cassette input logic, 
the signal CAS_IN could be wrong, and this would invert the picture. 
This logic is there so that if you input a cassette signal, the signal 
will invert the video, so you will see the same "loading bars" as an 
original ZX-81. On a real ZX-81 those bars are just a consequence of the 
fact that the cassette signal simply uses the same pin as the video 
output pin of the ULA. in my clone the same effect is tricked by 
inverting the video when there is an audio signal, but for that to work 
all of the cassette logic must be present.

As for my clone generating NTSC timings, that is because the NTSC (60 
Hz) jumper is set, for 50HZ (PAL) just pull the jumper (JP4)

For the wait generator the D-flip/flop U18A was used, instead of some 
transistor circuit. The ZX-81plus35 had both circuits, but the 
D-Flip/Flop was not used. Both circuits should work though.

------ translation ---------------
Das könnte nur eine falsche Einstellung von J6 sein, die bestimmt, ob 
die erste Pixel entweder schwarz oder weiß ist. Und J5, bestimmt, ob das 
Ganze das sichtbare Feld ist entweder schwarz oder weiß ist.

Wenn Sie die Logik für die Kassetteneingangslogik nicht installiert 
haben, kann das Signal CAS_IN falsch sein, und dies würde das Bild 
invertieren.
Diese Logik ist vorhanden, damit bei Eingabe eines Kassettensignals das 
Signal wird das Video invertieren, so dass Sie die gleichen 
"Ladeleisten" wie im orginal sehen

Bei einem echten ZX-81 sind diese Balken nur eine Folge der
Tatsache, dass das Kassettensignal einfach den gleichen Pin des ULA wie 
das Video verwendet. In meinem Klon wird der gleiche Effekt ausgetrickst 
durch Invertieren des Videos, wenn ein Audiosignal vorhanden ist, aber 
damit dies funktioniert muss Die gesamte Kassettenlogik vorhanden sein.

Dass mein Klon, NTSC-Timings generiert, liegt daran, dass der NTSC 
(60Hz) Jumper ist gesetzt, für 50 Hz (PAL) ziehen Sie einfach den Jumper 
(JP4).

Für den Wartegenerator wurde der D-Flip / Flop U18A verwendet anstelle 
die Transistorschaltung. Der ZX-81plus35 hatte beide Schaltkreise, aber 
die D-Flip / Flop wurde nicht verwendet. Beide Schaltungen sollten 
jedoch funktionieren.

: Bearbeitet durch User
von Dirk S. (fusebit)


Angehängte Dateien:

Lesenswert?

Funktioniert mit dem WAIT Fix!

von Martin D. (mahjongg)


Lesenswert?

Genial!
Ich gebe zu, dass sich die Wartelogik mit dem Flip-Flop von der 
Transistorlogik des ZX-81plus35 unterscheidet, der (alternativ) auch ein 
Flip-Flop hatte, aber ich habe es nie getestet.
Aufgrund des Platzmangels auf der Leiterplatte habe ich mich für die 
Flip-Flop-Lösung für den ZX-81 + 38 entschieden. Natürlich hätte ich 
testen sollen, ob sie zuerst funktioniert.

Möglicherweise habe ich auch selbst einen Fehler gefunden (oder 
tatsächlich zwei), da ich beim Betrachten des Datenblattes des SPC21348 
(3,5-mm-Buchse) den Schluss ziehen kann, dass ich mich geirrt habe und 
die Audio-Ein- und Ausgangssignale falsch sind. Pin aus. Aber ich muss 
das sorgfältig herausfinden, das ist der Grund, zuerst einen Prototyp zu 
bauen.

von Dirk S. (fusebit)


Lesenswert?

Notfalls zwei SOT-23 Transistoren, die lassen sich doch noch gut mit der 
Hand löten.

von Martin D. (mahjongg)


Lesenswert?

Sie haben Recht, aber SOT92-Transistoren haben einen relativ geringen 
Platzbedarf, und ich habe mich bewusst dafür entschieden, SMT nicht zu 
verwenden, da dies die Bauherren abschreckt. Ich werde diese Schaltung 
mit PTH-Komponenten hinzufügen können. Ich werde das Unmögliche 
innerhalb von 24 Stunden tun , Wunder dauern nur wenig länger ... :-)

von Alex P. (ra_p)


Lesenswert?

Dirk S. schrieb:
> Funktioniert mit dem WAIT Fix!

Super ! I'll build tomorrow the 2 transistor circuit, too, and the 
keyboard. I have to send a new board to manufacturing, I want to use 
Cherry keys in my keyboard.

von chris_ (Gast)


Lesenswert?

Dirk, woher hast Du das kleine Display mit Video Eingang? Es scheint mir 
sehr praktisch, für den Zx81 ein eigenes Display zu haben und ich hätte 
auch gerne eines.

von chris_ (Gast)


Lesenswert?

Weiß jemand, wo man eine Platinenstecker für das Board des Zx81 bekommen 
kann?
Ich haben einen 44pol gefunden, aber durch die Lücke am Anschluss des 
Zx81 braucht man wahrscheinlich eher 45pol doppelreihig.

https://picclick.de/2x-Amphenol-225-22231-101-Kontakt-Leiste-f-Platinen-Stecker-44-polig-vergoldet-322931436964.html

von Ale (Gast)


Lesenswert?

Der Link führt doch zur Bucht: https://www.ebay.de/itm/322931436964, es 
kostet auch 15 Teuronen, es kommt aus Hamburg. Wahrscheinlich bei Ali 
gibt es auch...
Aber mit 2x23 Pins ? nööö. 2x22 oder 2x28, 3 Stück kosten ~3 €.
Das Problem ist das man den Stecker nicht befestigen kann weil die 
Schrauben, Mutter usw. fehlen von ZX81 Seite... Man Könnte ein DB-50 
nutzen aber dann, muss man die Platine neu machen, würde ich so-wie-so, 
ein bisschen mehr Fläche für VSup, einen anderen Stecker dafür.... ein 
paar Sachen :)

von Ale (Gast)


Lesenswert?

Ich werde die 2 Gatterschaltung des ZX97 bauen, ich hab keine PNP 
Transistoren.
Ich hab noch einen Composite->VGA Wandler gekauft, soll Heute 
auftauchen...

von Dirk S. (fusebit)


Angehängte Dateien:

Lesenswert?

chris_ schrieb:
> Dirk, woher hast Du das kleine Display mit Video Eingang? Es scheint mir
> sehr praktisch, für den Zx81 ein eigenes Display zu haben und ich hätte
> auch gerne eines.

Das Display ist von Ama...
"7 Zoll IPS Touchscreen kapazitiver 1024x600 HDMI Display Game Monitor 
für Raspberry Pi 4"

Dazu habe ich diesen Wandler von eb..

1080P 3 RCA CVBS Composite AV to HDMI Converter Konverter Mini Video 
Adapter DE

Über Nacht ist der kleine fast fertig geworden :-)
Die Grafik hat allerdings noch diese zusätzlichen Striche.

von Soul E. (Gast)


Lesenswert?

chris_ schrieb:

> Weiß jemand, wo man eine Platinenstecker für das Board des Zx81 bekommen
> kann?

Ich habe immer ISA-Slots aus alten Mainboards auf die passende Breite 
zugeschnitten. Die sind ja bei Sinclair seitlich offen.

von Ale (Gast)


Lesenswert?

Mit den 2 Gatter wie im ZX97 kriege ich ein stabilen Bild so wie Dirk.

von Dirk S. (fusebit)


Lesenswert?

Dann sollte sich das doch auch mit den verbliebenen U6C und U12C lösen 
lassen. Den LS125 kann man ja auch als Inverter beschalten wie beim 
Kassetteneingang.

Da braucht man dann "nur" einen Weg für die Leiterbahnen finden ;-)

von Martin D. (mahjongg)


Lesenswert?

Thanks for the tip!

Danke vielmals.

von Martin D. (mahjongg)


Lesenswert?

If I understand correctly the wait circuit you are talking about 
consists of the two gates in this picture:

http://www.user.dccnet.com/wrigter/index_files/ZX97lite_files/image004.jpg

specifically the OR gate and inverter in the top left.

By the way, a Dutch hobbyist who is also building my ZX-81plus38 was 
kind enough to donate to me two PCB's, and a 13MHz crystal, so I can 
also start building my own prototype.
But first I will design PCB revision 1.5 with the corrections we have 
found. so far.

------

Wenn ich das richtig verstehe, besteht die Warteschaltung, von der Sie 
sprechen, aus den beiden Logikgattern in diesem Bild:

http://www.user.dccnet.com/wrigter/index_files/ZX97lite_files/image004.jpg

speziell das ODER-Gatter und der logische Inverter oben links.

Übrigens war ein niederländischer Bastler, der auch meinen ZX-81plus38 
baut, so freundlich, mir zwei Leiterplatten und einen 13-MHz-Kristall zu 
spenden, damit ich auch mit dem Bau meines eigenen Prototyps beginnen 
kann.
Aber zuerst werde ich PCB Revision 1.5 mit den bisher gefunden 
Korrekturen entwerfen.

: Bearbeitet durch User
von Martin D. (mahjongg)


Lesenswert?

chris_ schrieb:
> Weiß jemand, wo man eine Platinenstecker für das Board des Zx81 bekommen
> kann?
> Ich haben einen 44pol gefunden, aber durch die Lücke am Anschluss des
> Zx81 braucht man wahrscheinlich eher 45pol doppelreihig.
>
> 
https://picclick.de/2x-Amphenol-225-22231-101-Kontakt-Leiste-f-Platinen-Stecker-44-polig-vergoldet-322931436964.html

Eigentlich wollte ich das "Wobble" -Problem nicht auf diese Weise lösen.
Ich wollte nur den Kantenverbinder durch einen um 90 Grad gebogenen 
Stiftkopf ersetzen, dann können Sie neue Designs mit einer um 90 Grad 
gebogenen Buchse ausstatten und eine Verbindung mit vergoldeten 
Kontakten herstellen. Sie können ältere Geräte weiterhin an den 
Edge-Anschluss anschließen.

Anstelle eines Buchsensteckers ist es besser, einen Stecker mit 
vergoldeten Kontakten zu verwenden, wenn Sie diesen entfernen.
Bitte beachten Sie, dass zwischen der oberen und unteren Kontaktreihe 
kein Austausch stattfindet.

von chris_ (Gast)


Angehängte Dateien:

Lesenswert?

>If I understand correctly the wait circuit you are talking about
>consists of the two gates in this picture:
>http://www.user.dccnet.com/wrigter/index_files/ZX97lite_files/image004.jpg
>specifically the OR gate and inverter in the top left.

You mean this part of the circuit ( picture )?

>Aber zuerst werde ich PCB Revision 1.5 mit den bisher gefunden
>Korrekturen entwerfen.

The original circuit of the Zx81 is done with transistors and the 
ability to pull down the pin externally. I strongly recommend to have 
the same feature because than it is possible to attach a single step 
debugger ( which needs to pull down nWait ).

von Ale (Gast)


Lesenswert?

Another improvement to the board could be to make the distance between 
J2 and J3 (Keyboard connectors) a multiple of 2.54 mm. The mounting hole 
above the legend "ZX81+38" is a bit smaller than the other holes, there 
is a bit of clearance around.

von Dirk S. (fusebit)


Lesenswert?

Das stimmt! Beide Pinreihen auf das richtige Raster zu bringen ist eine 
gute Idee.

Ich habe nun erfolgreich ein Listing auf einen MP3-Player exportiert und 
wieder geladen. Aber ich bekomme keine Spiele geladen :-(
Ich habe mir ein paar p-files bei zx81stuff.org heruntergeladen, in WAV 
knvertiert und dann in MP3 (Mein MP3 Spieler mag kein WAV).

Ich sehe beim LOAD "" ganz saubere Signale bei U6 Pin_11 und der 
Bildschirm verhält sich auch so wie bei meinem einfachen Listing, aber 
am Ende des Ladevorgangs springt der ZX81 direkt zum "K" zurück, ohne 
0/0.

Woran könnte das liegen?

von Sinus T. (micha_micha)


Lesenswert?

MP3 ist wahrscheinlich nicht das beste Format für in Töne verwandelte 
digitale Daten. Es ist ja eine verlustbehaftete Komprimierung, wobei das 
Verfahren auf die Eigenheiten des menschlichen Ohr-Gehirn-Systems 
abgestimmt ist. Da können durchaus entscheidende Informationen im 
Nirvana verschwinden.

von Dirk S. (fusebit)


Angehängte Dateien:

Lesenswert?

Das stimmt vermutlich :-/

Allerdings funktioniert es mit dem Listing, wenn ich es mit dem MP3 
Player aufzeichne und wiedergebe.

Ich habe gerade ein p-file mit dem "Tape Converter" am PC abgespielt und 
dann funktioniert es...

: Bearbeitet durch User
von Ale (Gast)


Lesenswert?

Aber das Problem mit der fehlenden Linie am Ende jedes Char hast du 
immer noch, ich frage mich woher es kommt. Das mit dem p Dateien will 
ich auch probieren, ich will endlich Mazogs spielen ! :)

von chris_ (Gast)



Lesenswert?

Heute habe ich die Platine auch mal voll bestückt.
Für nWait habe ich die Transistor Schaltung von Wrigter ( 
Beitrag "Re: ZX81 plus38 Clone" ) als 
Huckepackplatine auf U18 gesetzt.

Ich vermute in dem Bild ein "K", nur leider ist es ziemlich 
verschwommen.
Ich habe als Diode eine 1N5819 und als Transistor einen BC547 genommen. 
Könnte es daran liegen?

Mit dem ArduinoMegaDebugger kann ich jetzt per mcurses die Speicherdaten 
direkt im VT100 Terminal anschauen.

So wie es aussieht, sind die Daten im RAM korrekt initialisiert.

von chris_ (Gast)


Lesenswert?

Nachtrag: Ich habe das Widerstandnetzwerk auf den Datenleitungen RN1 
nicht eingelötet, weil ich davon ausging, dass es nur für den Drucker 
gebraucht wird. Ist das vielleicht ein Fehler?

von Martin D. (mahjongg)


Lesenswert?

chris_ schrieb:
> Nachtrag: Ich habe das Widerstandnetzwerk auf den Datenleitungen RN1
> nicht eingelötet, weil ich davon ausging, dass es nur für den Drucker
> gebraucht wird. Ist das vielleicht ein Fehler?

Ja, ein BC547 ist für Niederfrequenzanwendungen gedacht. Deshalb 
verwende ich einen 2N3905. Ein 1N5819 ist eine Diode, die 1A verarbeiten 
kann. Sie ist also etwas zu groß, aber an sich ist das kein großes 
Problem.

und nein, das Nichteinsetzen der Pullups-Widerstände verhindert nicht 
den normalen Betrieb, nur wenn Sie versuchen, den ZX-81plus38 zu 
drucken, wird möglicherweise nicht erkannt, dass kein Drucker 
angeschlossen ist.

In der Tat können verlustfreie Audiokompressoren zu Fehlfunktionen des 
ZX-81 führen. Es ist also besser, mit WAV-Dateien zu arbeiten. Oder mit 
einem Player, der .P-Dateien in Audio konvertieren kann, gibt es mehrere 
solcher Programme.
Ich habe mich bemüht, die Zuverlässigkeit beim Laden von Kassetten oder 
Audio, die über einen Laptop abgespielt werden, zu verbessern. Daher 
sollte das Laden von Bändern im Vergleich zu einem "echten" ZX-81 viel 
einfacher sein, und mein Klon kann auch weichere Signale verarbeiten . 
Die alten Kassettenrekorder erzeugten ein viel lauteres Signal, und der 
ZX-81 war ziemlich unempfindlich und erforderte ein sehr lautes Signal.

Ich frage mich, ob Sie beim Laden auch schwarze "Ladesignalbalken" auf 
Ihrem Bildschirm sehen. Die meisten Klone können diese Balken nicht 
anzeigen, aber ich habe mir einen Trick ausgedacht, um sie anzuzeigen.
Ich frage mich, ob das funktioniert und wie naturgetreu es aussieht.

: Bearbeitet durch User
von Martin D. (mahjongg)


Lesenswert?

chris_ schrieb:
>>If I understand correctly the wait circuit you are talking about
>>consists of the two gates in this picture:
>>http://www.user.dccnet.com/wrigter/index_files/ZX97lite_files/image004.jpg
>>specifically the OR gate and inverter in the top left.
>
> You mean this part of the circuit ( picture )?
>
>>Aber zuerst werde ich PCB Revision 1.5 mit den bisher gefunden
>>Korrekturen entwerfen.
>
> The original circuit of the Zx81 is done with transistors and the
> ability to pull down the pin externally. I strongly recommend to have
> the same feature because than it is possible to attach a single step
> debugger ( which needs to pull down nWait ).
Ich möchte lieber nicht zwei Transistoren, drei Widerstände und einen 
Kondensator hinzufügen, wenn dies nicht wirklich notwendig ist.
Ich habe eine andere Idee: Wenn ich einen 470-Ohm-Vorwiderstand in den 
Ausgang des ODER-Gatters stecke, können Sie immer noch eine externe 
Wartezeit für Ihren Debugger erzeugen. Dann werden nur zwei Widerstände 
im Design hinzugefügt (einer für den Wechselrichter, und eine für das 
ODER-Gatter)

von Martin D. (mahjongg)


Lesenswert?

Ale schrieb:
> Another improvement to the board could be to make the distance between
> J2 and J3 (Keyboard connectors) a multiple of 2.54 mm. The mounting hole
> above the legend "ZX81+38" is a bit smaller than the other holes, there
> is a bit of clearance around.
Ich denke, der Abstand zwischen J2 und J3 ist genau auf die pin-headers 
meiner Tastatur (ZX-81plus35) eingestellt, aber ich werde sehen, was ich 
tun kann.

Was das Montageloch betrifft, möchte ich versuchen, die Leiterplatten, 
die ich jetzt habe, in einer echten Box eines echten ZX-81 zu montieren. 
Möglicherweise müssen geringfügige Korrekturen an der Position und Größe 
der Montagelöcher vorgenommen werden.

dafür muss ich allerdings in den unter Quarantäne gestellten Revspace 
gehen. Ich weiß nicht wann ich kann.

von chris_ (Gast)


Angehängte Dateien:

Lesenswert?

>>Ich vermute in dem Bild ein "K", nur leider ist es ziemlich verschwommen.
>Ja, ein BC547 ist für Niederfrequenzanwendungen gedacht. Deshalb verwende ich 
einen 2N3905.

Im Schaltplan steht aber 2N3904.
Es wäre interessant zu wissen, welche Stelle im Datenblatt der 
Transistoren für die Geschwindigkeit relevant sind.

Das Current-Gain-Bandwidth Produkt ist für beide Transistoren ähnlich 
und liegt bei 300MHz.

von Martin D. (mahjongg)


Lesenswert?

chris_ schrieb:
>>>Ich vermute in dem Bild ein "K", nur leider ist es ziemlich verschwommen.
>>Ja, ein BC547 ist für Niederfrequenzanwendungen gedacht. Deshalb verwende ich
> einen 2N3905.
>
> Im Schaltplan steht aber 2N3904.
Stimmt, ein 2N3904 muss es sein, 2N3905 ist ein tipp Fehler.

> Es wäre interessant zu wissen, welche Stelle im Datenblatt der
> Transistoren für die Geschwindigkeit relevant sind.
Die Transistoren in der Joystick-Schnittstelle sind ebenfalls sehr 
kritisch, wurden jedoch mit (der SMT-Version von) dem 2N3904 getestet.
Der Transistor in der Vorverstärkerschaltung des Kassetteneingangs ist 
weniger kritisch, aber es ist logistisch klüger, auch für diesen 
Transistor einen 2N3904 zu verwenden.
>
> Das Current-Gain-Bandwidth Produkt ist für beide Transistoren ähnlich
> und liegt bei 300MHz.
kan sein, aber ich hab es mit ein BC547 zuerst probiert, Mit einem 
ähnlichen Ergebnis, deshalb ich zu einem anderen Transistor aus meinem 
Lager, dem 2N3905, wechselte. danach wurde das Bild viel schärfer,

wie man in england sagt "the proof of de pudding is in the eating".

: Bearbeitet durch User
von Alex P. (ra_p)


Lesenswert?

@Martin: Ohh, the crystal, I forgot to send you a crystal ! :(

Ok this machine works, I have to get the cassete interface working i.e. 
finding the jacks to solder to the board and the corresponding cable in 
my (messy basement) cache of cables :D

Now I want an MSX ! :)

von chris_ (Gast)


Lesenswert?

Bei mir funktioniert die Darstellung auf dem Bildschirm leider immer 
nocht nicht.

Zuerst musste ich feststellen, dass die Jumper für die Bildgenerierung 
gesetzt werden müssen, da diese auf der Platine entgegen den anderen 
Jumper keine Default-Verbindung haben. Das sollte in einer Doku ganz 
oben stehen.

Also:
JP5: nach unten
JP6: nach oben

Ich kann mit meinem Debugger sehen, dass der Zx81 die Variblen richtig 
initialisiert und bei Tastendruck der Speicherbereich E-Line gefüllt 
wird und dass der Bildspeicher richtig initalisiert ist.

Was scheinbar nicht funktioniert ist das Ansprechen des Pixel-ROMs. Es 
werden nur weise Kästchen auf dem Bildschirm angezeigt.

Das EEPROM ist nur auf 8kByte initialisiert, also müsste ich wohl 8KB 
einstellen:

JP1, 16K/8K ROM select gegen GND
JP9 unterbrochen und A13 hart gegen GND
JP10 ist an meinem EEPROM eigentlich A14 und habe ich hart auf GND 
gelegt
JP8, A11 habe ich auf A11 gelassen
JP11, ROMCS habe ich auf Default gelassen


Eigentlich sollte das funktionieren, nur die Zeichesatztpixel werden 
eben scheinbar nicht selektiert.

von Dirk S. (fusebit)


Lesenswert?

Moin,

vielleicht hängt das mit dem Bug zusammen, den ich gerade gefunden habe.
Bisher hatte ich ein 27C256 EPROM mit 4 ROM Kopien hintereinander im 
Einsatz.

Dann wollte ich ein 27C64 verwenden und das geht nicht. Dann habe ich 
ein 28C256 mit einer ROM Kopie ab 0x0000 versucht. Geht nicht.

Kurz gesagt: Die ROM Daten müssen bei 0x4000 startend abgelegt werden 
damit es funktioniert. Scheinbar läuft in der Adresslogik etwas falsch. 
(Oder das gehört so und ich habe es nicht verstanden.)


Das mit den Pixelselect-Jumpern hatte ich weiter oben auch schon 
geschrieben :-) Das verwirrt ganz klar, dass dies die einzigen Jumper 
ohne Voreinstellung sind.

Hast Du bei JP1 denn auch erst unterbrochen und dann gewechselt? Bei den 
anderen erwähnst Du es ja extra und bei dem nicht.

: Bearbeitet durch User
von Soul E. (Gast)


Lesenswert?

chris_ schrieb:

> Das Current-Gain-Bandwidth Produkt ist für beide Transistoren ähnlich
> und liegt bei 300MHz.

Kein Wunder, da ist ja auch der gleiche Chip drin. 2N3904 ist die JEDEC 
Bezeichnung, BC547 die europäische. In Japan heisst er 2SC1815.

Der Videopuffer ist als Emitterfolger geschaltet, mit Verstärkungsfaktor 
1. Da wird sich bei 6,5 MHz Pixeltakt kein Transistor überanstrengen.


Wenn das Bild überstrahlt, prüf die Videopegel. Weiss sollte bei 0,7 V 
liegen (mit angeschlossenem Monitor), schwarz bei 0,3 V und Sync bei 0,0 
V. Falls der Monitor (bzw Konverter) hochohmige Eingänge hat statt 75 
Ohm, könnte ein 75 Ohm (100 Ohm)-Widerstand parallel zum Eingang helfen.

von chris_ (Gast)


Angehängte Dateien:

Lesenswert?

>Kein Wunder, da ist ja auch der gleiche Chip drin. 2N3904 ist die JEDEC
>Bezeichnung, BC547 die europäische. In Japan heisst er 2SC1815.

Danke für die Klarstellung. Das wiederspricht ein wenig der Aussage von 
Martin, der meinte, dass es praktisch einen Unterschied macht.

>Dann wollte ich ein 27C64 verwenden und das geht nicht. Dann habe ich
>ein 28C256 mit einer ROM Kopie ab 0x0000 versucht. Geht nicht.

>Kurz gesagt: Die ROM Daten müssen bei 0x4000 startend abgelegt werden
>damit es funktioniert. Scheinbar läuft in der Adresslogik etwas falsch.
>(Oder das gehört so und ich habe es nicht verstanden.)

Ich glaube, das Layout und der Schaltplan stimmen nicht ganz überein ( 
siehe Bild ). Mit P27/J10 kann man WE des EEPROM dauerhaft auf 
GND(default) oder VCC legen, was meiner Meinung nach gar keinen Sinn 
macht.

Das ROM des ZX81 ist nur 8kB groß und so weit ich weiss wird der 
Zeichensatzt normalerweise in den gespiegelten zweiten 8kB von 16kB 
angesprochen. Deshalb konnte man dort auch eine Art Hi-Res Graphik 
machen, wenn man statt des ROM das RAM an die Adressen von 0x4000-0x7FFF 
gelegt hat.
Der Adressbereich des Zeichensatzes geht eigentlich von

0x1E00-0x1FFF

von Alex P. (ra_p)


Lesenswert?

Ich hab immer den 28C256 mit 4 Kopien des ROMs gebrannt, damit geht es 
gut. Ich hab aber P27 auf +5V fest gelgt, die Leiterbahn auf Masse 
durchgetrennt. Sowieso wird kein Schreibvorgang stattfinden solange ~OE 
nicht auf 1 gezogen wird.
@Chris: Könnte es sein daß bei dir irgend ein Problem, Kurzschluß usw. 
in der nähe des '165 gibt ? Vielleicht ist es gar nicht das ROM.
Der original BC547/8 usw. hatte laut das Dattenblatt von Philips nur 100 
mA Collector Strom und den 2N3904 200 mA, die sind evtl. Äquivalent in 
bestimmte Schaltungen aber sind (waren) nicht das gleiche Transistor.

von Martin D. (mahjongg)


Lesenswert?

Alex P. schrieb:
> @Martin: Ohh, the crystal, I forgot to send you a crystal ! :(
>
Macht nichts, ich habe bereits eine
> Ok this machine works, I have to get the cassete interface working i.e.
> finding the jacks to solder to the board and the corresponding cable in
> my (messy basement) cache of cables :D
>
> Now I want an MSX ! :)
Nachbau MSX systems gibts es bereits, namens GR8BIT, Es gibt auch einen 
Raspberry PI HAT, der Ihren PI in einen MSX-1-Computer verwandelt
https://www.msx.org/news/hardware/en/raspberry-pi-msx-clone-first-test-and-groupbuy-initiative

von Martin D. (mahjongg)


Lesenswert?

Soul E. schrieb:
> chris_ schrieb:
>
>> Das Current-Gain-Bandwidth Produkt ist für beide Transistoren ähnlich
>> und liegt bei 300MHz.
>
> Kein Wunder, da ist ja auch der gleiche Chip drin. 2N3904 ist die JEDEC
> Bezeichnung, BC547 die europäische. In Japan heisst er 2SC1815.
>
Woher haben Sie die Information, dass es "den gleichen Chip" enthält? 
Alle Informationen, die ich jemals darüber gelesen habe, besagen, dass 
es sich um "ähnliche" Transistoren handelt, nicht um eindeutigen 
gleiche, und es tut mir leid, aber ich bin nicht sicher, ob das, was Sie 
sagen, richtig ist. Dies ist also ein Fall von "Citation needed".

von Dirk S. (fusebit)


Lesenswert?

chris_ schrieb:

> Ich glaube, das Layout und der Schaltplan stimmen nicht ganz überein (
> siehe Bild ). Mit P27/J10 kann man WE des EEPROM dauerhaft auf
> GND(default) oder VCC legen, was meiner Meinung nach gar keinen Sinn
> macht.


Jupp, ich habe das gerade mal gegengeprüft.
Das sollte vermutlich WE auf VCC gelegt sein und A14, bei Bedarf, für 
32k ROMs bereitgestellt werden.

Da werde ich die Tage mal etwas an der Platine kratzen und zwei 
Schummeldrähte einlöten.

Eventuell sollten wir mal eine Fehlerliste führen, damit nichts 
vergessen wird.

- A13/A14 am Erweiterungport vertauscht
- RCA Stecker 180° verdreht
- A14 und WE am ROM falsch verdrahtet
- WAIT Logik muss ersetzt werden
- Pinabstand zwischen J2 und J3 auf "Normmaß" bringen
- Pixelselect Jumper auch mit default Brücken versehen

von Martin D. (mahjongg)


Angehängte Dateien:

Lesenswert?

Dirk S. schrieb:
> chris_ schrieb:
>
>> Ich glaube, das Layout und der Schaltplan stimmen nicht ganz überein (
>> siehe Bild ). Mit P27/J10 kann man WE des EEPROM dauerhaft auf
>> GND(default) oder VCC legen, was meiner Meinung nach gar keinen Sinn
>> macht.
>
>
> Jupp, ich habe das gerade mal gegengeprüft.
> Das sollte vermutlich WE auf VCC gelegt sein und A14, bei Bedarf, für
> 32k ROMs bereitgestellt werden.
>
Stimmt, ein CAT28C256 hat NICHT den gleichen pinout wie ein 27C256 OTP.
Ein 27C256 OTP hat App auf pin 1, und A14 auf pin 27 und es gibt gar 
kein write unable (/WE) pin.

sehe 27C256.GIF


> Da werde ich die Tage mal etwas an der Platine kratzen und zwei
> Schummeldrähte einlöten.
>
> Eventuell sollten wir mal eine Fehlerliste führen, damit nichts
> vergessen wird.
>
> - A13/A14 am Erweiterungport vertauscht
> - RCA Stecker 180° verdreht
> - A14 und WE am ROM falsch verdrahtet
> - WAIT Logik muss ersetzt werden
> - Pinabstand zwischen J2 und J3 auf "Normmaß" bringen
> - Pixelselect Jumper auch mit default Brücken versehen

gerne, aber ich bekämpfe das 14 und /WE falsch beträtet sein fur ein 
AT27C256R.
Ein CAT28C256 ist kein OTP, aber ein EEPROM, ein AT27C256 kostet nur 
euro 1.77, und Farnell verkauft die CAT28C256 eben nicht, aber bei AVNET 
kostet er euro 9.25, so wenn Sie also nicht glauben, dass Sie das ROM 
mindestes etwa sechs Mal neu programmieren müssen, wählen Sie besser das 
27C256 OTP.

Ich habe den ZX-81plus38 als Maschine mit 8K-ROM entworfen. 16K-ROM ist 
nur durch Konvertieren von JP1 in 16K-ROM-Decodierung möglich.

Ich wollte, dass der Benutzer die Möglichkeit hat, zwischen schwarzen 
Buchstaben auf einem weißen Bildschirm (ZX-81-Standard) oder weißen 
Buchstaben auf einem schwarzen Bildschirm (normal für die meisten 
anderen Computer) und einer einfachen Möglichkeit zum Umschalten 
zwischen beiden zu wählen.
Deshalb habe ich normale Jumper anstelle von "Scratch and Wire" 
-Optionen verwendet. Ebenfalls auch die jumper fur Pal (50Hz) oder NTSC 
(60Hz) betrieb is ein normale jumper.

: Bearbeitet durch User
von Dirk S. (fusebit)


Lesenswert?

Ich finde die Optionen auch total gut, aber die Version mit einem 
default finde ich noch besser:-) Aus meiner Sicht ist es nur verwirrend 
wenn es gemischte default und nicht default Jumper gibt.

Die Sache mit den unterschiedlichen pinout für OTP, EEPROM und Fenster 
EPROM ist natürlich ärgerlich. Jetzt ist der Grund für mich klar.

von Martin D. (mahjongg)


Angehängte Dateien:

Lesenswert?

chris_ schrieb:
> The original circuit of the Zx81 is done with transistors and the
> ability to pull down the pin externally. I strongly recommend to have
> the same feature because than it is possible to attach a single step
> debugger ( which needs to pull down nWait ).

Wie ich bereits sagte, möchte ich die ZX97Lite-Schaltung für / WAIT 
verwenden und sie mit einem 470-Ohm-Widerstand übersteuerbar machen, so 
wie die RAM- und ROM-Chipauswahlsignale über den Erweiterungsanschluss 
übersteuert werden können.

Bitte senden Sie eine Nachricht, wenn Sie ein unüberwindbares Problem 
damit haben.

: Bearbeitet durch User
von Dirk S. (fusebit)


Lesenswert?

Just another thought about the ROM options.
I fully got your point that OTPs are much easier and cheaper to get, but 
if you go with OTP, would you require all the different ROM jumper 
options? If you have no intention to change the ROM content you might go 
for a straight ZX81 compatible design.

So maybe it would make sense to design either a simplified OTP layout or 
a multi ROM size jumper option for EEPROM/UV-EPROM.

Another option would be to extend the jumper options to have the full 
selection available, but that would require another two jumper :-D

I just love the window EPROMs and got some from ebay, therefore I'll mod 
the PCB to fit their pinout.

But obviously this is not a critical bug like the WAIT circuit is. So 
far the WAIT circuit seems to be the only critical bug at all, which I 
find quite remarkable for such a complex layout.

von Alex P. (ra_p)


Lesenswert?

I'm using the nWAIT circuit from the ZX97, it works well. An extra 
resistor to be able to pull nWAIT low seems to match the rest of the 
design.
The ROM options are also Ok.
The board works and I'm happy wit that !

von chris_ (Gast)


Lesenswert?

>Wie ich bereits sagte, möchte ich die ZX97Lite-Schaltung für / WAIT
>verwenden und sie mit einem 470-Ohm-Widerstand übersteuerbar machen, so
>wie die RAM- und ROM-Chipauswahlsignale über den Erweiterungsanschluss
>übersteuert werden können.

>Bitte senden Sie eine Nachricht, wenn Sie ein unüberwindbares Problem
>damit haben.

Der Serienwiderstand ist OK, es muss keine Transistorschaltung sein. Es 
ist nur wichtig, dass man nWait extern bedienen kann. Im Moment macht 
das mein ArduinoMegaDebugger. Ich kann z.B. das Programm anhalten, eine 
paar Werte im Bildschirmspeicher verändern und mir dann das Ergebnis auf 
dem Zx81 Bildschirm anschauen ( Im Moment leider immer noch Zeichen mit 
undefiniertem Aussehen ).

Noch einen kleine Hinweis zum EEPROM 28C256: Man könnte es vom Zx81 aus 
beschreibbar machen, dann könnte man einige Programme vom Zx81 selbst 
dort speichern.

Apropos: Falls jemand den Debugger nachbauen will, kann ich nächste 
Woche mal die Sourcen reinstellen. Die Schaltung ist ziemlich einfach, 
man muss eigentlich nur die Pins vom ArduinoMega mit dem Zx81 Bus 
verbinden. Ich überlege, noch ein RS-FF einzubauen, dann kann man 
Single-Step machen.

von chris_ (Gast)


Lesenswert?

Hier noch eine Seite zum Kasetteninterface:
http://michaelminn.com/linux/mmzx81/

von Martin D. (mahjongg)


Lesenswert?

Dirk S. schrieb:
> Just another thought about the ROM options.
> I fully got your point that OTPs are much easier and cheaper to get, but
> if you go with OTP, would you require all the different ROM jumper
> options? If you have no intention to change the ROM content you might go
> for a straight ZX81 compatible design.
>
> So maybe it would make sense to design either a simplified OTP layout or
> a multi ROM size jumper option for EEPROM/UV-EPROM.
>
> Another option would be to extend the jumper options to have the full
> selection available, but that would require another two jumper :-D
In fact the jumper options for the ROM socket are ONLY meant to replace 
the 27C256 with the original Sinclair ROM.

>
> I just love the window EPROMs and got some from ebay, therefore I'll mod
> the PCB to fit their pinout.
No need for that as 27C256 OTP ROMs ARE simply windows EPROMS without 
the glass window. That is why they are so cheap and easy to get. I have 
sought long for EPROMS but it seems the erasability of them with UV 
light no longer makes sense, so they simply started making OTP's by not 
adding the glass window. So you can use your ebay EPROMS as is, without 
needing jumper changes!

>
> But obviously this is not a critical bug like the WAIT circuit is. So
> far the WAIT circuit seems to be the only critical bug at all, which I
> find quite remarkable for such a complex layout.
thanks. :-) I had hoped for "one time right" design, but yeah, this 
isn't too bad. Ill start the redesign (revision 1.5) soon.

Ill publish the new schematic here before starting on the layout.

: Bearbeitet durch User
von Dirk S. (fusebit)


Lesenswert?

Now I figured it out too.
The A14 problem is only valid for the EEPROM.

The window EPROM and OTPs have identical pinout, but a 27C64 has no need 
for A13 and A14. On Pin 27 is nP and for read operation this must be 
high, so for the use of a small EPROM I have to change J10.

von Ale (Gast)


Lesenswert?

Trying to understand the shifting issue I pointed out before, a 
difference between the +34 and the +38 is that in the +34 the clock 
inhibit of the '165 is pulled high and in the +38 it is tied to the 6.5 
MHz clock.
@Martin: could you please feed me on the idea behind the change ?

von Ale (Gast)


Lesenswert?

Tied to GND, I mean.

von Jürgen (Gast)


Lesenswert?

Hallo:

chris:

> Apropos: Falls jemand den Debugger nachbauen will, kann ich nächste
> Woche mal die Sourcen reinstellen. Die Schaltung ist ziemlich einfach,
> man muss eigentlich nur die Pins vom ArduinoMega mit dem Zx81 Bus
> verbinden. Ich überlege, noch ein RS-FF einzubauen, dann kann man
> Single-Step machen.

das würde mich schon einmal interessieren. Vor allem die Version mit dem 
RS-Flip-Flop für Single-Step (bin mit dem Z80 nicht so bewandert).

Ciao

von Ale (Gast)


Angehängte Dateien:

Lesenswert?

On the issue of the missing first shifted bit (D7)
CH1 Pixel output (JP5 1-2)
CH2 D7'
CH3 SH/nLD (pin 8 U29)
CH4 6.5 MHz Clock (pin 2 U9)

I would think that the peak of D7 seems a bit short, seen at trigger 
point.
I'll make another capture with the pixel after the flip-flops, such a 
peak will be missed because the '74 U18 is clocked with the inverted 6.5 
Mhz, in the +34 it is clocked with the normal 6.5 MHz clock.

von Ale (Gast)


Angehängte Dateien:

Lesenswert?

On the issue of the missing first shifted bit (D7)
CH1 Pixel output (JP5 1-2)
CH2 D7'
CH3 SH/nLD (pin 8 U29)
CH4 Pixel output after the '74 (U18), on pin 4 of U10 (Pin 9 of U18)

One see that the think peak of D7 (at trigger point) is completely 
missing in the green trace (CH4).

The clock for U18 (pin 11) should be 6.5 MHz and not the inverted clock.

Yes, that's the problem !

von Dirk S. (fusebit)


Angehängte Dateien:

Lesenswert?

Super!

Genau da liegt das Problem :-)

Ich habe mal einen Schummeldraht von U9 verlegt um den nichtinvertierten 
Takt zu bekommen und jetzt ist das Bild fehlerfrei.

Wenn ich es richtig sehe, dann wird n6.5M nirgendwo anders gebraucht. 
Damit kann U21D ausser Betrieb gehen und es steht ein Inverter für die 
WAIT Schaltung zur Verfügung.

: Bearbeitet durch User
von Ale (Gast)


Angehängte Dateien:

Lesenswert?

Ich hab "Schumeldrähte" :D

von Ale (Gast)


Angehängte Dateien:

Lesenswert?

The missing trace showing how the serial pixel stream gets clocked 
properly when the 6.5 MHz clock is used (U18B).

von chris_ (Gast)


Lesenswert?

>> Apropos: Falls jemand den Debugger nachbauen will, kann ich nächste
>> Woche mal die Sourcen reinstellen. Die Schaltung ist ziemlich einfach,
>> man muss eigentlich nur die Pins vom ArduinoMega mit dem Zx81 Bus
>> verbinden. Ich überlege, noch ein RS-FF einzubauen, dann kann man
>> Single-Step machen.
Jürgen schrieb:
>das würde mich schon einmal interessieren. Vor allem die Version mit dem
>RS-Flip-Flop für Single-Step (bin mit dem Z80 nicht so bewandert).

Baust Du auch einen Zx81?

von Dirk S. (fusebit)


Lesenswert?

Der Quellcode für den Debugger wäre schon super. Ich habe heute von 
Segor die passenden Klinkenbuchsen bekommen und gleich so einen 
Ardu-Mega-Dingens mitbestellt.

Mal etwas anderes. Ich habe Jumper 12 jetzt auf 32k umgestellt, da ja 
ein 32k RAM verbaut ist. Aber das original ROM geht mit seinem RAM-Check 
ja nur von 32767 rüchwärts. Dadurch wird RAMTOP niemals >7FFF, für 16k 
RAM. Macht es Sinn das ROM so zu ändern, so dass die 48k als Obergrenze 
geprüft werden, oder wie machen das die großen Speichererweiterungen?

von Martin D. (mahjongg)


Lesenswert?

Dirk S. schrieb:
> Mal etwas anderes. Ich habe Jumper JP12 jetzt auf 32k umgestellt, da ja
> ein 32k RAM verbaut ist. Aber das original ROM geht mit seinem RAM-Check
> ja nur von 32767 rüchwärts. Dadurch wird RAMTOP niemals >7FFF, für 16k
> RAM. Macht es Sinn das ROM so zu ändern, so dass die 48k als Obergrenze
> geprüft werden, oder wie machen das die großen Speichererweiterungen?
Dirk,
Ja, es stimmt, dass ich die Option hinzugefügt habe, die gesamten 32 KB 
des RAM-Chips zu verwenden, aber warum sollten Sie das wollen?
Es gibt keine Software, die mehr als 16 KB verwendet!
Um mehr als 16 KB in BASIC verwenden zu können, muss die BASIC-Firmware 
angepasst werden.
Nur weil etwas getan werden kann, ist dies kein Grund, es zu wollen. 
Wenn Sie nicht ein wenig masochistisch sind, würde ich davon abraten 32K 
zu verwenden. Aber ich werde Sie nicht aufhalten und habe mir sogar die 
Mühe gemacht, dies zumindest von der Hardwareseite aus zu ermöglichen.

Der einzige Grund, warum ich einen 32K-RAM-Chip verwende, ist, dass 
16K-RAM-Chips einfach fast nicht verfügbar und sicherlich nicht billiger 
sind. weil sie selten sind.

von Martin D. (mahjongg)


Lesenswert?

Dirk S. schrieb:
> Super!
>
> Genau da liegt das Problem :-)
>
> Ich habe mal einen Schummeldraht von U9 verlegt um den nichtinvertierten
> Takt zu bekommen und jetzt ist das Bild fehlerfrei.
>
> Wenn ich es richtig sehe, dann wird n6.5M nirgendwo anders gebraucht.
> Damit kann U21D ausser Betrieb gehen und es steht ein Inverter für die
> WAIT Schaltung zur Verfügung.
Bravo, großartig!

Ich war schon ein bisschen besorgt, ich erinnere mich, dass ich tagelang 
mit dem ZX-81 + 35 gesucht habe, weil ich zuerst ein ahnliches 
Schieberegisterproblem hatte, und dann war es auch die Phase des 
Taktsignals, die mir die Lösung brachte . Ich verstehe nicht ganz, warum 
sich dieser Fehler wieder in die Konvertierung auf den ZX-81 + 38 
eingeschlichen hat, aber ich bin sehr froh, dass das Problem gefunden 
wurde.

Ich werde jetzt in Kürze mit Revision 1.5 beginnen.

: Bearbeitet durch User
von chris_ (Gast)


Lesenswert?

Dirk schrieb
>Eventuell sollten wir mal eine Fehlerliste führen, damit nichts
>vergessen wird.
>- A13/A14 am Erweiterungport vertauscht
>- RCA Stecker 180° verdreht
>- A14 und WE am ROM falsch verdrahtet
>- WAIT Logik muss ersetzt werden
>- Pinabstand zwischen J2 und J3 auf "Normmaß" bringen
>- Pixelselect Jumper auch mit default Brücken versehen


Eine Fehlerliste finde ich gut.

- A13/A14 am Erweiterungport vertauscht
- RCA Stecker 180° verdreht
- A14 und WE am ROM falsch verdrahtet
- WAIT Logik muss ersetzt werden
- Pinabstand zwischen J2 und J3 auf "Normmaß" bringen
- Pixelselect Jumper auch mit default Brücken versehen
- Spannungsanschluss 5V/9V an der Platine eventuell mit Brücke trennbar
- Schiftregisterclock invertieren

von chris_ (Gast)


Lesenswert?

>Der Quellcode für den Debugger wäre schon super. Ich habe heute von
>Segor die passenden Klinkenbuchsen bekommen und gleich so einen
>Ardu-Mega-Dingens mitbestellt.

Es freut mich, wenn jemand den Debugger nachbaut. Den Quellcode kann ich 
erste gegen Ende der Woche reinstellen, weil ich gerade keinen Zugriff 
auf meinen Bastelrechner habe.

Das Single-Step-Debugging mit dem FlipFlop habe ich noch nicht 
implementiert. Eventuell könnte man auch einen Zähler im Atmega dazu 
verwenden:
1. Zähleingang die M1 Pulse des Z80 zählen
2. Ein Compare Match Ausgang des Zählers an die Wait-Leitung anschliesen

Wer kennt sich gut genug mit dem Atmega aus, um die Konfiguration des 
Zählers zu machen?

von Michael W. (Gast)


Lesenswert?

Hmm, was ist eigentlich der Reiz dabei, ein Projekt nachzubauen, das so 
viel Debugging und Fixes und Interpretationskunst benötigt, dass man das 
Teil in der benötigten Zeit selbst hätte entwerfen können? Wäre das 
nicht interessanter und lehrreicher als sich tage- und wochenlang mit 
dem vermurksten Design eines anderen auseinanderzusetzen? Da hätte ich 
ja keinen Nerv zu - die Zeit wende ich lieber für meine eigenen Projekte 
auf.

Re-Engineering des Roswell-Ufos scheint ja vergleichsweise einfach zu 
sein im Vergleich mit dem Ding!

von Alex P. (ra_p)


Lesenswert?

@Michael: und wann sehen wir deinen funktionierenden entwurf ? noch halb 
stunde ?

von Dirk S. (fusebit)


Lesenswert?

Schön für Dich das Du so ein großartiger Designer bist. Wann 
veröffentlichts Du Deinen Entwurf? Bis dahin kannst Du Dich bitte voll 
auf das Design konzentrieren und uns in Ruhe lassen.

von Michael W. (Gast)


Lesenswert?

Alex P. schrieb:
> @Michael: und wann sehen wir deinen funktionierenden entwurf ? noch halb
> stunde ?

Die ULA nachzubauen ist sicherlich nicht so einfach - aber alles gut 
dokumentiert, und es gibt auch vL81 ULAs etc. In einer halben Stunde 
geht das sicher nicht.

Der Rest vom ZX81 / ZX80 ist auch gut dokumentiert,jeder Hardware-Trick 
(geniales Keyboard Matrix Decoding über die Addressleitungen, NMI 
Transistor, blah blah blah) alles ausführlich beschrieben in vielen 
vielen Büchern aus den 80ern.

Sicherlich lernt man viel dabei, das Ding zum Laufen zu bringen, aber so 
viel Aufwand wie das hier - das ist schon ein bißchen übel. Wie gesagt, 
ICH hätte da keinen Nerv zu, die Zeit würde ich lieber in eigene Projekt 
investieren (oder einen ZX81 für ein paar EUR bei Ebay kaufen und 
restaurieren ;-)) . Aber jeder wie er mag!

von Michael W. (Gast)


Lesenswert?

Dirk S. schrieb:
> Schön für Dich das Du so ein großartiger Designer bist. Wann
> veröffentlichts Du Deinen Entwurf? Bis dahin kannst Du Dich bitte voll
> auf das Design konzentrieren und uns in Ruhe lassen.

Kannst DU mal bei der Sache bleiben, Strawman? Mein Aussage ist - das 
Ding ist zu vermurkst für meinen Geschmack und ich möchte verstehen, 
warum jemand wochenlang mit dem Teil rumhühnert statt sich lieber selbst 
was zu entwerfen.

von Michael W. (Gast)


Lesenswert?

PS Neulich wollte mir einer so einen Pentagon MSX  CPC  Spectrum Clone 
andrehen (Platine geschenkt) - alles in Russisch mit fehlenden Werten 
für 20 Kondensatoren und anderen Bauteile, russisches EEPROM und 
Schaltplan und so weiter. Habe dankend abgelehnt! :-) Wie wäre es damit 
als nächster Time Killer?

von chris_ (Gast)


Lesenswert?

Michael W. (michael_w738)
>Hmm, was ist eigentlich der Reiz dabei, ein Projekt nachzubauen, das so
>viel Debugging und Fixes und Interpretationskunst benötigt, dass man das
>Teil in der benötigten Zeit selbst hätte entwerfen können? Wäre das
>nicht interessanter und lehrreicher als sich tage- und wochenlang mit
>dem vermurksten Design eines anderen auseinanderzusetzen? Da hätte ich
>ja keinen Nerv zu - die Zeit wende ich lieber für meine eigenen Projekte
>auf.

Eigentlich würde ich auch keinen Zx81 nachbauen, aber nachdem ich die 
Bauteile geschenkt bekommen habe, baue ich das Teil. Ich muss sagen, es 
macht sogar wieder erstaunlich viel Spaß. Es ist wie Rätsel lösen, man 
kommt immer wieder ein kleines Stückchen weiter.
Ich halte das Design auch nicht für vermurkst. Es ist in der Entwicklung 
ganz normal, dass Fehler passieren und dass diese behoben werden müssen. 
Das hier ist kein Anfängerprojekt und eher was für Leute mit viel 
Hardwareerfahrung. Außerdem kann ein Community auch immer gute Tipps 
beisteuern.
Ich finde im Moment gerade Spaß daran, mit minimalistischen Mitteln 
einen vollwertigen Debugger für den Zx81 zu entwickeln. Das ist auch aus 
dem Grunde interessant, die Strukturunterschiede gegenüber heutigen 
Prozessoren genauer zu verstehen.
Danach werde ich mich mit der Frage beschäftigen, ob man mit heutigen 
Softwaremethoden Dinge auf dem Zx81 erreichen kann, die damals noch 
nicht möglich waren.

von Alex P. (ra_p)


Lesenswert?

Einen Пентагон?  Spitze ! Ich muss noch meinem BK0010 bauen ! einer MK90 
habe ich schon auf einem FPGA

von Martin D. (mahjongg)


Lesenswert?

Ein Пентагон-Computer war einer der vielen russischen Klone des 
Sinclair-Spektrums, oder ?! Die Russian Spectrum-Klone waren eine meiner 
Inspirationen für die Entwicklung meines "Rhococo", eines anderen von 
mir entworfenen Z80-basierten Computers, jedoch mit 64 Farben und VGA, 
basierend auf einem Z80- und einem Propeller-Chip. Ich habe auch an 
diesem Retro Home Color Computer (Rhococo) gearbeitet und bereits einen 
ersten Prototyp gebaut, aber ich habe ihn eine Weile beiseite gelegt, um 
am ZX81 + 38 arbeiten zu können. Siehe: 
https://revspace.nl/Designing_the_RhoCoCo_Retro_Home_COlor_COmputer_hardware
Ich habe auch überlegt, die Galaksija aus dem ehemaligen Jugoslawien 
wieder aufzubauen, aber ich habe verstanden, dass dies nicht mehr 
möglich ist, und es gibt nur sehr wenige Informationen über neuere 
Varianten, aber was ich finden konnte, habe ich hier beschrieben: 
https://revspace.nl/Galaksija vielleicht jemand anderes, den man sich 
ansehen sollte. Es ist eigentlich eine Kreuzung zwischen einem TRS-80 
Modell 1 und einem ZX80.

Ich bin ein bisschen enttäuscht von mir selbst, dass der erste Prototyp 
so viele Mängel aufweist, aber ich begann ein bisschen mit der Idee, 
Versionen davon früh und oft zu veröffentlichen.
Man weiß nie mit dieser Korona-Epedemie ....

Die Liste mit "Fehlern" ist nett, ich muss mich nicht noch einmal an 
alles erinnern, aber ich sehe mindestens die Hälfte der Liste als eine 
Liste, die keine Fehler enthält, aber Verbesserungswünsche, wie die 
Pinheaders für die Tastatur, weiß ich nicht wirklich, ob das wirklich 
eine Verbesserung ist. Und Jumper, damit Sie ein EEEPROM anstelle eines 
OTP verwenden können, sehe ich auch als Aufforderung, eine neue Funktion 
hinzuzufügen, nicht als Fehler.
Ich sehe nur zwei echte Fehler: Tauschen Sie A13 und A14 am 
Erweiterungsstecker aus, und der / WAIT-Generator funktioniert nicht. 
Die anderen Dinge sind nett zu haben, keine Designfehler.
Ich werde mich wirklich nicht von kritischen Replikatoren entmutigen 
lassen.
Schon der erste IBM PC war voller Patches.

: Bearbeitet durch User
von chris_ (Gast)


Lesenswert?

Hier gibt's eine sehr schöne Doku über den Zx80/Zx81:
https://www.youtube.com/watch?v=1Jr7Q1yJOUM

von Michael W. (Gast)


Lesenswert?

Martin D. schrieb:

> Ich werde mich wirklich nicht von kritischen Replikatoren entmutigen
> lassen.

Würde ich auch nicht. Allerdings würde ich etwas vorsichtiger sein, was 
ich auf die Menschheit "loslasse"... solange damit kein Geld verdient 
wird, die Fehler dokumentiert sind, ist ja alles OK, wenn es noch nicht 
ausgereift ist. Verkaufen geht so natürlich nciht. Muss ja jeder selbst 
wissen, auf was er sich einlässt wenn er es nachbaut - sofern er denn 
weiß, auf was er sich einlässt... Das ist ja eben das Schöne am Basteln 
- man lernt was, und es ist ein Hobby.

> Schon der erste IBM PC war voller Patches.

Ja, allerdings war das kein Nachbau-Projekt... insofern egal.
Ist ja alles schön und gut, warum auch nicht.

Wie gesagt, für mich wäre es nichts - aber alle Achtung vor der 
Ingenieurs-Leistung!

von Dirk S. (fusebit)


Lesenswert?

Das mit der Wunschliste stimmt schon und egal wie Du es machst, 
irgendjemanden wird es nicht gefallen.

Aber es sind drei kritische Fehler.

- Adressleitungen vertauscht

- WAIT Schaltung

- Der invertierte Takt am Pixelshiftregister

: Bearbeitet durch User
von Michael W. (Gast)


Lesenswert?

chris_ schrieb:
> Eigentlich würde ich auch keinen Zx81 nachbauen, aber nachdem ich die
> Bauteile geschenkt bekommen habe, baue ich das Teil. Ich muss sagen, es
> macht sogar wieder erstaunlich viel Spaß. Es ist wie Rätsel lösen, man
> kommt immer wieder ein kleines Stückchen weiter.

Ja, den Pentagon wollte ich allerdings nicht mal geschenkt bekommen, 
soviel Zeit habe ich nicht... ich lerne dabei zwar etwas Russisch und 
welche 74xxx Chips den russischen Plagiaten entsprechen, aber mehr auch 
nicht. Da lese ich lieber ein Buch wo ich was Neues lerne, oder arbeite 
an einem eigenen Projekt.

von Martin D. (mahjongg)


Lesenswert?

Nun, ich weiß, dass nicht jeder ein Fan von "The 8-bit guy" ist, aber 
ich muss zugeben, dass ich gerne seine Vlogs schaue, nur dass er sich so 
sehr auf die Commodore-Computer konzentriert das gefällt mir nicht sehr 
gut

von Martin D. (mahjongg)


Lesenswert?

Dirk S. schrieb:
> Das mit der Wunschliste stimmt schon und egal wie Du es machst,
> irgendjemanden wird es nicht gefallen.
>
> Aber es sind drei kritische Fehler.
>
> - Adressleitungen vertauscht
>
> - WAIT Schaltung
>
> - Der invertierte Takt am Pixelshiftregister

du hast recht, "ich muss mich nicht noch einmal an
alles erinnern" :-)

von Martin D. (mahjongg)


Lesenswert?

Michael W. schrieb:
> Martin D. schrieb:
>
>> Ich werde mich wirklich nicht von kritischen Replikatoren entmutigen
>> lassen.
>
> Würde ich auch nicht. Allerdings würde ich etwas vorsichtiger sein, was
> ich auf die Menschheit "loslasse"... solange damit kein Geld verdient
> wird, die Fehler dokumentiert sind, ist ja alles OK, wenn es noch nicht
> ausgereift ist.

Eigentlich wollte ich zuerst meine eigenen Prototypen bauen, da ich auch 
wusste, dass es fast unmöglich ist, ein völlig fehlerfreies Design von 
Grund auf neu zu erstellen. Ich habe insgesamt meinen ersten ZX81-Klon 
(ZX-81plus35). drei Prototypen gebasteld und veröffentlichte nur die 
endgültige Version davon. Ich dokumentierte explizit die ganze 
Geschichte über das schrittweise Entwerfen meines ersten Klons (hier 
https://revspace.nl/ZX81PLUS34_ZX81_clone) und veröffentlichte das 
Design erst danach Druck von Dritten, Es war nie beabsichtigt, damit 
Geld zu verdienen. Außer vielleicht als Bausatz. aber dann hätte das 
Design perfekt sein sollen, und ich hätte gerne dabei ein umfangreiches 
Build- und Benutzerhandbuch zur Verfügung gestellt. Die ZX-81plus38 
Version kam erst, nachdem ich wiederholt aufgefordert wurde, eine 
Version ohne SMT zu erstellen, da SMT zu schwierig wäre, und der erste 
Prototyp des ZX-81+38 erschien im April 2020, kurz vor der Koronakrise. 
Ich hatte nicht die Zeit, das Geld und die Fähigkeit (Revspace wurde 
aufgrund von Korona sofort geschlossen, und ich werde entlassen ), 
diesen Prototyp zuerst selbst zu bauen, also veröffentlichte ich das 
Design drei Jahre zuvor, genau wie beim ZX-81plus35 als "open hardware" 
auf GitHub.

Da ich wirklich Angst vor Korona hatte, weil ich stark in einer 
Risikogruppe bin, da ich sowohl chronical bronchitis als auch Apnoe habe 
und 64 Jahre alt bin, hielt ich es für ratsam, nicht zu lange zu warten. 
Am Ende war ich mir auch nicht sicher, ob das Design massive 
Aufmerksamkeit erhalten würde, von meinem früheren ZX-81 + 35-Design 
begann nur 1 oder 2 Personen tatsächlich damit, es zu bauen, und es 
funktionierte bei beide fast sofort.

Ich war angenehm überrascht, als ich dieses Forum entdeckte und die 
massive technische Aufmerksamkeit die mein Design gegeben wurden. Es ist 
meine Geisteskind, und es ist immer schön, wenn es Aufmerksamkeit dafür 
gibt. Deshalb bemühe ich mich, ein voll funktionsfähiges Design zu 
schaffen, das einfach zu bauen ist. Ich habe begonnen, die 
Verbesserungen in Schaltplan und Layout vorzunehmen, und werde nicht 
aufhören, bis ich selbst damit zufrieden bin.

>
> Wie gesagt, für mich wäre es nichts - aber alle Achtung vor der
> Ingenieurs-Leistung!

danke das ist schön zu hören

von chris_ (Gast)


Lesenswert?

Michael W. (michael_w738)
>Würde ich auch nicht. Allerdings würde ich etwas vorsichtiger sein, was
>ich auf die Menschheit "loslasse"...

Das sehe ich anders: Die Arbeit von Martin passiert aus freien Stücken 
ohne finanzielle Gegenleistung. Wir in diesem Thread haben Spaß daran, 
die Fehler und Verbesserungen zu finden. Wer das anders haben will, muss 
etwas anderes machen.

>Da lese ich lieber ein Buch wo ich was Neues lerne, oder arbeite
>an einem eigenen Projekt.

Ja, mach das jetzt und suche dir einen Thread, indem du diese Bedürfnis 
ausleben kannst. Hier geht es um den Zx81plus38 Nachbau.

von chris_ (Gast)


Lesenswert?

>Hier gibt's eine sehr schöne Doku über den Zx80/Zx81:
>https://www.youtube.com/watch?v=1Jr7Q1yJOUM

Im Video behauptet der 8-Bit Guy, die Schaltung des ZX80 und die ULA 
seien in ihrer Funktion gleich. Der Zx81 hat aber 8KROM.

Hier gibt es einen Bildvergleich der beiden Motherboards:
http://www.primrosebank.net/computers/zx80/zx80_and_zx81_boards.jpg

Auf dem Motherboard des Zx80 sind 21 ICs zu sehen, 3 davon Speicher und 
eine CPU, bleiben also 17 Logik ICs. Der Zx81plus38 hat 22.

Ist die Schaltung des Zx81plus38 vom Zx80 inspieriert?

Was mir in dem Video de 8Bit-Guy noch auffällt: Dort gibt es High-Res 
Graphik zu sehen, die eigentlich  erst ab 2kB RAM und einer Modifikation 
des  Addressdekoders möglich war. Hat der Timex TS1000 das schon 
automatisch mit drinn?

von Soul E. (Gast)


Lesenswert?

chris_ schrieb:

> Im Video behauptet der 8-Bit Guy, die Schaltung des ZX80 und die ULA
> seien in ihrer Funktion gleich. Der Zx81 hat aber 8KROM.

Der ZX81 hat zusätzlich einen NMI-Generator. Damit kann er ein Videobild 
anzeigen während ein Programm ausgeführt wird (slow mode). Der ZX80 
konnte nur entweder/oder (fast mode).

Die wesentliche Änderung ist natürlich die ULA. Ein ASIC von Ferranti, 
der sämtliche 74er Logik durch einen einzigen Baustein ersetzt. Das 
reduzierte die Herstellkosten drastisch.


> Ist die Schaltung des Zx81plus38 vom Zx80 inspieriert?

Alle ZX-Kompatiblen müssen die ULA diskret nachbilden. Daher sind sie 
alle im Konzept ähnlich. In der Implementierung macht es natürlich jeder 
ein bisschen anders. ZX97, ZX97lite, Grant Searle, ZX80NU, core, ...

Auch den Spektrum gibt es als diskrete Nachbildung. Ein bekanntes 
modeneres Beispiel ist der Harlequin.

> Was mir in dem Video de 8Bit-Guy noch auffällt: Dort gibt es High-Res
> Graphik zu sehen, die eigentlich  erst ab 2kB RAM und einer Modifikation
> des  Addressdekoders möglich war. Hat der Timex TS1000 das schon
> automatisch mit drinn?

Ja. Beim ZX81 war der 6116 eine Bestückoption und zwei 2114 Serie. Der 
Timex TS1000 hatte immer den 6116.

Richtig benutzen konnte man die Kiste ohnehin nur mit der 16k 
Erweiterung.

von Weltbester FPGA-Pongo (Gast)


Lesenswert?

chris_ schrieb:
> Nachdem ich vor knapp 40 Jahren einen ZX81 hatte,

Wie kann man 1980 einen ZX81 gehabt haben? :-)

Was man mal bräuchte wäre einen EMU für einen Sinclair Spektrum. Das war 
ein geiles Teil,

von Soul E. (Gast)


Lesenswert?

Weltbester FPGA-Pongo schrieb im Beitrag #6431299:
> chris_ schrieb:
>> Nachdem ich vor knapp 40 Jahren einen ZX81 hatte,
>
> Wie kann man 1980 einen ZX81 gehabt haben? :-)

Markteinführung war 1981. Also vor knapp 40 Jahren, nicht vor 40 Jahren.

> Was man mal bräuchte wäre einen EMU für einen Sinclair Spektrum. Das war
> ein geiles Teil,

Fuse, Speccy, Spectaculator, usw. EightyOne unterstützt auch den 
Spectrum. Wer nur einen Emulator ausprobieren will, der sowohl Z80, ZX81 
unterstützt als auch die gängigen Kompatiblen und Bastelprojekte (Timex, 
ZX97, ZX80NU, ...), der sollte mit EightyOne anfangen: 
https://sourceforge.net/projects/eightyone-sinclair-emulator/files/

Spectrum-Nachbauten in Hardware (also die ULA als TTL nachgebaut) gab es 
Dutzende im Ostblock. Selbst in Schlenzings "Schaltungssammlung für den 
Amateur" war ein "international kompatibler Kleinrechner" beschrieben. 
Ein moderner Klassiker ist der Harlequin. Aber die Liste ist lang: 
https://en.wikipedia.org/wiki/List_of_ZX_Spectrum_clones

von Frank M. (ukw) (Moderator) Benutzerseite


Lesenswert?

Weltbester FPGA-Pongo schrieb im Beitrag #6431299:
> Was man mal bräuchte wäre einen EMU für einen Sinclair Spektrum. Das war
> ein geiles Teil,

Es gibt hier auch direkt einen "um die Ecke":

Beitrag "STECCY - ZX-Spectrum-Emulator mit STM32"

Läuft auf STM32F407VET6-China-Board. Aber auch auf Linux (Framebuffer 
und/oder X11) und Windows (QT).

von Soul E. (Gast)


Lesenswert?

Martin D. schrieb:

> Ja, es stimmt, dass ich die Option hinzugefügt habe, die gesamten 32 KB
> des RAM-Chips zu verwenden, aber warum sollten Sie das wollen?
> Es gibt keine Software, die mehr als 16 KB verwendet!

Es ist möglich mehr als 16 kB zu verwenden. Aber nur mit Tricks.

Zunächst muss beim Refresh-Zugriff (/M1 = low) statt 0xC000-FFFF der 
Bereich 0x4000-7FFF eingeblendet werden. Der ZX81 führt sein als 
Programmcode getarntes Videobild  bei [DFILE]+0x8000 aus, real liegt der 
Bildspeicher aber bei [DFILE]. Üblicherweise zieht man A15 am RAM auf 
LOW, wenn gilt: A15 = 1, A14 = 1, /M1 = 0. Beim ZX81 ergibt sich das 
automatisch durch die unvollständige Adressdecodierung -- da erscheint 
das RAM mehrfach im Adressbereich.

Zusätzlich prüft das ZX-BASIC nur den Bereich bis 0x7FFF auf das 
Vorhandensein von RAM. Um 32k (von 0x4000-BFFF) für BASIC nutzen zu 
können muss man die Systemvariable RAMTOP (0x4004/5) manuell auf BF FF 
setzen und dann NEW eingeben. Theoretisch liesse sich das durch einen 
Patch des ROMs beheben.

Im Bereich 0xC000-FFFF kann wegen der "A15 low wenn /M1 low"-Geschichte 
kein Maschinencode ausgeführt werden. Man kann da aber RAM hinlegen und 
Daten speichern. Oft liegen in dem Bereich RAM-Disks oder ähnliche 
Erweiterungen.

32k einbauen und mit M1NOT-Modifikation in den Bereich 0x4000-BFFF legen 
ist heute eigentlich Standard

> Der einzige Grund, warum ich einen 32K-RAM-Chip verwende, ist, dass
> 16K-RAM-Chips einfach fast nicht verfügbar und sicherlich nicht billiger
> sind. weil sie selten sind.

Ein guter Grund, aber nicht der einzige :-)

von chris_ (Gast)


Lesenswert?

Soul E. (souleye) Benutzerseite
>Richtig benutzen konnte man die Kiste ohnehin nur mit der 16k
>Erweiterung.

Danke für die vielen Hinweise.
Ich hatte recht bald die 2KRam 6116 eingelötet. Das Ergebnis in der 
Benutzbarkeit war aber viel besser als nur eine Verdoppelung des RAMs.
Da der Zx81 bei vollem Bildaufbau 768Byte RAM und zusätzlich noch ein 
paar Byte für das System gebraucht hat, blieben keine 200Byte für das 
eigentlich Basic-Programm. Das Einlöten des 2K RAMs brachte also in etwa 
die 6fache nutzbare Speichergröße gegenüber dem 1K Ram.

von Alex P. (ra_p)


Lesenswert?

Ich bastle an einen 25 MHz Ozillator, ich sollte fertige Oszillatoren 
kaufen :(.

Ich erzähle was ich gedacht/vor habe:  12.5 MHz als Pixel clock, 6.25 
MHz als CPU clock, der blank line Zähler auf 163 vergrössern und dann 
VGA Ausgang, kleines Bild in der Mitte aber es soll gehen. Man könnte 
auch die 192 linien duplizieren aber dafür muss man mehr verbasteln, den 
393 soll bis 16 zählen, und mehr im Code ändern, weiß aber noch nicht 
genau ob es wirklig geht, teoretisch schon praktisch... gibt es 
vielleicht nicht genug zeit oder speicher für extra Code.

von chris_ (Gast)


Lesenswert?

>Die wesentliche Änderung ist natürlich die ULA. Ein ASIC von Ferranti,
>der sämtliche 74er Logik durch einen einzigen Baustein ersetzt. Das
>reduzierte die Herstellkosten drastisch.

Hier findet sich das Bild eines Motherboard des Microdigital TK85
( https://en.wikipedia.org/wiki/TK85 ), ein Clone es Zx81 aus der 
damaligen Zeit:

http://zx81.eu5.org/imagens/hard/ay03.jpg

Das sind aber deutlich mehr als 17 ICs.

von Soul E. (Gast)


Lesenswert?

chris_ schrieb:

> http://zx81.eu5.org/imagens/hard/ay03.jpg
>
> Das sind aber deutlich mehr als 17 ICs.

Da sind 8 dynamische RAMs (4116) zu sehen, und ein Soundchip. Also ein 
bisschen mehr Ausstattung als ein normaler ZX81. Da steckt also das 16 
K-Modul mit drin und der ZONX.

von Dirk S. (fusebit)


Lesenswert?

Boah, das nervt!
Nun läuft der ZX81+38 stabil mit 50 Hz an einem Mini-Display, aber ich 
schaffe nicht einmal das erste Level von Invaders :-(

War das schon immer so schwierig?

Im NTSC Modus geht es gar nicht, dann ist die Tastaturabfrage so 
langsam, dass ich kaum feuern kann.

von Michael W. (Gast)


Angehängte Dateien:

Lesenswert?

Dirk S. schrieb:
> Boah, das nervt!
> Nun läuft der ZX81+38 stabil mit 50 Hz an einem Mini-Display, aber ich
> schaffe nicht einmal das erste Level von Invaders :-(
>
> War das schon immer so schwierig?

Ja! Und dabei hast Du einen Joystick (oder?) Versuche das mal mit der 
Folientastatur des Originals... aarrrggg!

von Rosengarten (Gast)


Lesenswert?

Hallöchen.
Eventuell könnte ich helfen. Eprom´s und Brenner ( Galep ) sind 
vorhanden.
Es würden nur die Selbstkosten entstehen. ( Eprom und Porto ).
Ich habe fast alle Eprom Speicherbausteine.
mfG
Dieter

von Martin D. (mahjongg)


Angehängte Dateien:

Lesenswert?

Michael W. schrieb:
> Dirk S. schrieb:
>> Boah, das nervt!
>> Nun läuft der ZX81+38 stabil mit 50 Hz an einem Mini-Display, aber ich
>> schaffe nicht einmal das erste Level von Invaders :-(
>>
>> War das schon immer so schwierig?
>
> Ja! Und dabei hast Du einen Joystick (oder?) Versuche das mal mit der
> Folientastatur des Originals... aarrrggg!
Der ZX-81plus38 (und plus35) verfügt über einen einzigartigen 
DB9-Joystick-Anschluss, der Joystick-Bewegungen in "Tastendrücke", "5", 
"6", "7" und "8" umwandelt. Der Feuerknopf erzeugt den Tastendruck "0". 
. das ist kompatibel mit den meisten Action-Spielen.
Ich würde gerne hören, ob es richtig funktioniert. In jedem Fall 
funktioniert es auf dem ZX-81plus35.
Ich bin aber auch gespannt, ob es besser spielt als mit der Tastatur.

: Bearbeitet durch User
von Dirk S. (fusebit)


Lesenswert?

Ich habe mir dazu passend ein kleines Gamepad gebaut, aber leider nutzt 
gerade Invaders und alle weiteren Spiele die ich testweise geladen habe 
(nur 3-4 Stück) immer eine andere Tastenbelegung.

Bei Invaders habe ich zwei Versionen AGS und Forward, die eine hätte die 
richtige Tastenzuordnung, aber das p-file scheint nicht vollständig zu 
sein.

Einen Joystick habe ich nicht. Vielleicht sollte ich mir einen 
Competition Pro USB besorgen und die ganze Elektronik rausschmeißen :-) 
Sofern der tatsächlich noch vier schöne Mikroschalter hat.

von Michael W. (Gast)


Lesenswert?

Dirk S. schrieb:
> Ich habe mir dazu passend ein kleines Gamepad gebaut, aber leider nutzt
> gerade Invaders und alle weiteren Spiele die ich testweise geladen habe
> (nur 3-4 Stück) immer eine andere Tastenbelegung.
>
> Bei Invaders habe ich zwei Versionen AGS und Forward, die eine hätte die
> richtige Tastenzuordnung, aber das p-file scheint nicht vollständig zu
> sein.
>
> Einen Joystick habe ich nicht. Vielleicht sollte ich mir einen
> Competition Pro USB besorgen und die ganze Elektronik rausschmeißen :-)
> Sofern der tatsächlich noch vier schöne Mikroschalter hat.

Ja, aus diesem Grund haben Joysticks auf dem ZX81 nie wirklich Fuß 
gefasst - zu viele Spiele hatten unterschiedlich Tastenbelegungen.

von Soul E. (Gast)


Lesenswert?

Dirk S. schrieb:

> Bei Invaders habe ich zwei Versionen AGS und Forward, die eine hätte die
> richtige Tastenzuordnung, aber das p-file scheint nicht vollständig zu
> sein.

Mir hat immer die Version von OdysseyComputing am besten gefallen. 
http://www.fruitcake.plus.com/Sinclair/ZX81/Archive/OdysseyComputing.htm

An der HGR kann man gut erkennen wie kompatibel der ULA-Nachbau 
tatsächlich ist. Ich erinnere mich daran, dass ich sogar am 
ZX97lite-Design von Godfather Wilf Rigter was ändern musste, weil bei 
einigen Spielen der Zeilenzähler nicht zurückgesetzt wurde, sondern frei 
durchlief. Und dieses freie Durchlaufen passt nur wenn er taktgenau der 
Implementierung in der ULA entspricht.


(HGR, High Resolution Graphics, hat übrigens nichts mit HDMI und 4k zu 
tun, sondern bedeutet nur dass man auf dem Bildschirm jedes Pixel 
einzeln ansprechen kann. Heute ist das normal und jedes Pixel hat seinen 
eigenen Shader auf der Graphikkarte, aber in den '80er war Blockgraphik 
mit hartverdrahteten Zeichengeneratoren üblich.)

von Dirk S. (fusebit)


Lesenswert?

Leider läuft die Odyssey Variante nicht auf dem ZX81+38. Geladen habe 
ich es direkt über den Tape Converter und die Signalqualität per Oszi 
überwacht, aber sobald alle Daten im Zeddy sind hängt er sich auf.

Dafür läuft "Against the Elements". Mit etwas geflacker an den Kanten, 
aber die Grafik ist schon nicht schlecht für den ZX81.

von Martin D. (mahjongg)


Lesenswert?

Ja, leider war es nicht möglich, die Tasten auszuwählen, die "gedrückt" 
wurden, also musste ich Tasten auswählen, die Sinn machten, und nach 
einigen Recherchen waren dies die Pfeile und die "Null" -Taste.

Aber hoffentlich kann ich an Ihren Worten erkennen, dass meine Schaltung 
funktioniert und dass der Joystick tatsächlich die erwarteten 
Tastenanschläge erzeugt?

In der Zwischenzeit habe ich den neuen Schaltplan und das neue Layout 
(Revision 1.5) fast fertiggestellt. Ich werde alles erneut überprüfen 
und dann den verbesserten Schaltplan hier veröffentlichen.

von Martin D. (mahjongg)


Lesenswert?

Ich habe die Kompatibilität mit verschiedenen "hochauflösenden" Lösungen 
auf dem ZX-81 + 35 getestet und alles, was ich versucht habe, hat 
funktioniert.
Zum Beispiel lief die ZX-81-Version von Manic Miner.
Die meisten "hochauflösenden" Lösungen verwenden einzelne Pixelzeilen, 
die im Zeichensatz erscheinen und der Reihe von acht Pixeln mit der 
gewünschten Form am ähnlichsten sind.

von Martin D. (mahjongg)


Lesenswert?

Dirk S. schrieb:
> Leider läuft die Odyssey Variante nicht auf dem ZX81+38. Geladen habe
> ich es direkt über den Tape Converter und die Signalqualität per Oszi
> überwacht, aber sobald alle Daten im Zeddy sind hängt er sich auf.
>
Wahrscheinlich benötigt diese "Demo" eine programmierbare 
Zeichensatzerweiterung

> Dafür läuft "Against the Elements". Mit etwas geflacker an den Kanten,
> aber die Grafik ist schon nicht schlecht für den ZX81.

Ich kannte dieses Spiel noch nicht, aber es ist brillant

Kann mir jemand sagen, ob die nachgeahmten schwarzen Ladestangen 
funktionieren? Wie hier zu sehen is (ab 6:00) 
https://www.youtube.com/watch?v=clmjQrG-UPg&t=440s

von chris_ (Gast)


Lesenswert?

Hier gibt es eine ziemlich interessante Webseite über alte Computer:
http://bitsavers.informatik.uni-stuttgart.de/

Der Zx81 ist leider nicht drinnen, dafür aber einige Unterlagen über 
Zilog:
http://bitsavers.informatik.uni-stuttgart.de/components/zilog/

von chris_ (Gast)


Lesenswert?

Leider funktioniert mein Zx81plus38 immer noch nicht und ich bin noch 
auf der Fehlersuche.
Einen habe ich noch gefunden: Der Mittelanschluss am Jumper JP1 ist 
nicht am Pin1 des U23A angeschlossen.
Es scheint der selbe Fehler wie schon beim EEPROM: die Pins 1 und 2 des 
Jumpers sind verdreht.

von Dirk S. (fusebit)


Lesenswert?

Also bei mir funktioniert der +38 und der JP1 ist auch korrekt 
verbunden.
Ich habe mir die Rev 1.4 Platine fertigen lassen.

Bei EPROM ist nichts falsch. Die Beschaltung ist für OTP oder 
Fenster-EPROMs ausgelegt. Die EEPROMs haben ein abweichendes Pinout.

von Martin D. (mahjongg)


Lesenswert?

chris_ schrieb:

> Einen habe ich noch gefunden: Der Mittelanschluss am Jumper JP1 ist
> nicht am Pin1 des U23A angeschlossen.
> Es scheint der selbe Fehler wie schon beim EEPROM: die Pins 1 und 2 des
> Jumpers sind verdreht.

Ich sehe den Fehler mit JP1, aber es sei denn, Sie möchten Pin 1 von 
U23A anstelle von A13 auf GND setzen, spielt es keine Rolle. Ich würde 
nichts kratzen und es einfach so lassen, wie es ist.
Ich habe diesen Fehler bereits in Version 1.5 behoben, der bald 
verfügbar sein wird. Wenn Sie es also nicht eilig haben, eine 
Leiterplatte in die Hände zu bekommen, würde ich eine Weile auf Version 
1.5 warten.

von Martin D. (mahjongg)


Lesenswert?

Dirk S. schrieb:
> Also bei mir funktioniert der +38 und der JP1 ist auch korrekt
> verbunden.
> Ich habe mir die Rev 1.4 Platine fertigen lassen.
>
> Bei EPROM ist nichts falsch. Die Beschaltung ist für OTP oder
> Fenster-EPROMs ausgelegt. Die EEPROMs haben ein abweichendes Pinout.

Stimmt, die 27C256 un 28C256 sind nahezu gleich.
Im version 1.5 hab ich est möglich gemacht pin 1 von +5V zu 
unterbrechen, aber notwendig is das nicht. Es ist bereits möglich pin-27 
auf +5V zu legen mit JP10.

Aber er stimmt das ich mijn klon nicht entworfen habe fur EEPROM's, 
(electrically erasable electrically programmable ROM's) da OTP's (EPROMS 
ohne glass Fenster)(27C256) viel preisgünstiger sind.
Auf Anfrage habe ich es nur möglich gemacht ein original-ROM zu 
benutzen.

: Bearbeitet durch User
von Dirk S. (fusebit)


Lesenswert?

Hmm, der ist doch falsch?
Ich habe das doch eben durchgemessen. Allerdings Pin1 zu A13. Man sollte 
halt nicht mal eben zwischendurch in den Keller, sondern in Ruhe machen 
:-)
Der nächste Schritt ist eine PIO Platine und eine mit Relais.

von Martin D. (mahjongg)


Lesenswert?

Soul E. schrieb:
> Heute ist das normal und jedes Pixel hat seinen
> eigenen Shader auf der Graphikkarte, aber in den '80er war Blockgraphik
> mit hartverdrahteten Zeichengeneratoren üblich.)
Richtig, ich habe den Artikel Semigraphics darüber im Februar 2011 in 
Wikipedia geschrieben. Die kanonische Version davon ist das TRS-80 
Model-1 mit seinen 2x3-Blockgrafiken.
Da der ZX-81 fast alles mit Software macht, kann ein intelligenter 
Programmierer immer noch Tricks anwenden, um darüber hinwegzukommen.

: Bearbeitet durch User
von Martin D. (mahjongg)


Lesenswert?

Dirk S. schrieb:
> Hmm, der ist doch falsch?
> Ich habe das doch eben durchgemessen. Allerdings Pin1 zu A13. Man sollte
> halt nicht mal eben zwischendurch in den Keller, sondern in Ruhe machen
> :-)
Pin 1 befindet sich auf A13, wie es sein sollte, aber JP1 ist falsch 
herum verdrahtet, es sei denn, Sie möchten JP1 konvertieren, was kein 
Problem ist.
Das Lustige ist, dass ich diesen Fehler vor langer Zeit gesehen habe, 
aber anscheinend habe ich vergessen, ihn zu beheben.

Mein nächster Schritt ist wahrscheinlich eine externe AY-3-8912 PSG. 
Einige Programme erzeugen Sound mit einer ZON-kompatiblen PSG. wie die 
"dancing demon".

Ich habe bereits ein PSG-Expander-Board für den ZX-81plus35 hergestellt. 
(https://revspace.nl/Zon_ZX-81_Programmable_Sound_Generator_expansion_for_ZX81PLUS35).

Gestern habe ich festgestellt, dass das Umdrehen von A13 und A14 auch 
beim ZX-81plus35 aufgetreten ist und daher ebenfalls korrigiert werden 
muss.

In Version 1.5 habe ich den 9-V-Pin des Erweiterungssteckers nicht mehr 
fest mit 5 V verknotet, sondern einen Jumper dazwischen gelegt. Sie 
können diesen Jumper schließen, wenn 5 V am 9-V-Pin ausreichen, aber Sie 
können auch ein externes 9-V-Netzteil anschließen . Keine Ahnung, für 
welche Erweiterung dies benötigt wird, aber Sie wissen nie, wofür es gut 
ist.

: Bearbeitet durch User
von Ale (Gast)


Lesenswert?

@chris: I removed all Jumpers (well except for JP5 and 6). Pin 27 of the 
ROM is now connected to +5 V because I'm using, like you, a 28C256 with 
4 copies of the ROM inside (I wasn't sure in the beginning about all 
these jumpers). I'm pretty sure that it should work, in this 
configuration with just one copy: it doesn't. Just one copy on the 
lowest 8 k and it doesn't turn on, so no K. No nothing.

At least my programmer locks the EEPROMs after writing. Maybe you make 
sure that it has 4 copies and that they are still intact.
Maybe you check around the '165 because the data comes there, just check 
that after LD/nSH you see a train of pulses at pin 7 (or 9). That way I 
found that the clock for the '74 was reversed. Follow the pixel line 
somehow it gets corrupted.

I was able to load the Mazogs, I used the output of the computer and it 
worked very well, I had to disconnect the video because the computer and 
the monitor I use are on different wall sockets, (I already blew the USB 
ports of my main computer this way...)

von chris_ (Gast)



Lesenswert?

Hier ist wie versprochen der Debugger-Code.

Der Code ist noch etwas unaufgeräumt, weil in der Entwicklung. Es gibt 
noch viele Ideen, die man darin umsetzen kann ...

Ich habe mal die Zeichnung von den Connektoren des ArduinoMegas und des 
Zx81, die ich zum Löten benutzt habe.

von Martin D. (mahjongg)


Angehängte Dateien:

Lesenswert?

I finished revision 1.5,The following changes were made:

schema als .PDF hier: https://revspace.nl/File:ZX81plus38rev1,5.png

(german translation below)

C1 and C2 of the crystal oscillator were lowered to 4.7pF
the signal n6.5M was removed, and flip/flop U18B was clocked with the 
non inverted clock 6.5M
the removed inverter U21D was used to build a new WAIT generator circuit 
in place of U18A, together with OR port U12B. the previous version did 
not work mainly because of the flip/flop not working as a WAIT 
generator. To be able to externally for the /WAIT signal low a resistor 
R20 was placed in series with the nWAIT output.
The RCA PSG01546 plug had a wrong footprint, and so could only be place 
180 degrees rotated (not that it would work if you did). I found a 
replacement RCA plug that could be inserted, the CLIFF FC68391, and 
updated the footprint for a perfect fit
on the expansion connector I had swapped A13 and A14, so I corrected it
also on the expansion connector JB1 pin 2 was tied to +5V, but this pin 
was meant for +9V, so I put a jumper between +5V and this pin, so the 
pin can be jumpered to +5V or tied to an external +9V source
The ROM socket was designed for an OTP (one time programmable, an EEPROM 
without its glass erase window) and with wire links on the bottom you 
could (re-jumper) by scratching a track and wiring between the other 
pads the socket for the original ZX-81 ROM.
Some users asked if I could also support EEEPROMS, and although this was 
already possible pin 1 (A14 on an EEEPROM) was tied permanently high, so 
I made it that you could disconnect Pin 1, and tie it to something else, 
like a switch.

i had created the option to invert the video with two jumpers JP5 and 
JP6, but got the complaint that if you forgot to place these two jumpers 
you would get no video, so I also pre-connected these two jumpers for 
default white screen with black letters.
Its still possible to get a black screen with white letters, but you 
have to scratch through the default pre-connects, and add a wire link

I got asked why the keyboard wires were not simply one strip of holes 
with a 2.54mm pitch,but was deliberate, the previous version has three 
extra holes for a power LED, and a reset button, ad I had removed these. 
So I added three holes, and put all holes in the same raster. Its 
possible to have a power LED on the keyboard now.

Jumper JP1 was wired "in reverse", but as A13 was correctly connected to 
pin-1 of U23A that wasn't a problem

I enlarged the mounting hole bottom left, above the text "ZX81+38"two as 
requested.
If you have a revision 1.4 PCB, you can get it working by doing three 
things:

Use OTP's, not EEEPROMS (which are six times more expensive) and fill 
the 32K rom with four copies of the ZX-81 BASIC.
Remove the output of the flip flop U28A, so that /WAIT is not driven,
and replace the WAIT circuit with either the two transistor improved 
wait circuit from wilf ritger, or the wait circuit of revision 1.5 with 
an inverter and OR port
disconnect U18B pin 11 (clk) from the inverted 6.5MHz clock, and tie it 
to the non inverted 6.5MHz clock, closest point to connect to is pin 2 
of the shift register 74LS165 (U9).
Now the clone should work.

auf deutsch:
Folgende Änderungen wurden vorgenommen:

C1 und C2 des Kristalloszillators wurden auf 4,7 pF abgesenkt
Das Signal n6.5M wurde entfernt und Flip / Flop U18B wurde mit dem nicht 
invertierten Takt 6.5M getaktet
Der entfernte Wechselrichter U21D wurde verwendet, um anstelle von U18A 
zusammen mit dem ODER-Anschluss U12B eine neue WAIT-Generatorschaltung 
aufzubauen. Die vorherige Version funktionierte hauptsächlich nicht, 
weil das Flip / Flop nicht als WAIT-Generator funktionierte. Um extern 
für das / WAIT-Signal niedrig zu sein, wurde ein Widerstand R20 in Reihe 
mit dem nWAIT-Ausgang geschaltet.
Der RCA PSG01546-Stecker hatte eine falsche Grundfläche und konnte daher 
nur um 180 Grad gedreht platziert werden (nicht, dass dies funktionieren 
würde, wenn Sie dies tun würden). Ich fand einen Ersatz-Cinch-Stecker, 
der eingesteckt werden konnte, den CLIFF FC68391, und aktualisierte den 
Platzbedarf für eine perfekte Passform
Am Erweiterungsstecker hatte ich A13 und A14 vertauscht, also habe ich 
es korrigiert
Auch am Erweiterungsstecker war JB1 Pin 2 an + 5V gebunden, aber dieser 
Pin war für + 9V gedacht, also habe ich einen Jumper zwischen + 5V und 
diesen Pin gelegt, damit der Pin auf + 5V überbrückt oder an ein 
externes + gebunden werden kann 9V Quelle
Der ROM-Sockel wurde für ein OTP (einmal programmierbar, ein EEPROM ohne 
Glaslöschfenster) entwickelt. Mit Kabelverbindungen an der Unterseite 
können Sie (neu überbrücken), indem Sie eine Spur zerkratzen und 
zwischen den anderen Pads den Sockel für das Original verkabeln ZX-81 
ROM.
Einige Benutzer fragten, ob ich auch EEEPROMS unterstützen könnte, und 
obwohl dies bereits möglich war, war Pin 1 (A14 auf einem EEEPROM) 
dauerhaft hoch gebunden, sodass ich Pin 1 trennen und an etwas anderes, 
wie einen Schalter, binden konnte .

Ich hatte die Option erstellt, das Video mit zwei Jumpern JP5 und JP6 zu 
invertieren, bekam aber die Beschwerde, dass Sie kein Video erhalten 
würden, wenn Sie vergessen würden, diese beiden Jumper zu platzieren. 
Deshalb habe ich diese beiden Jumper für den weißen Standardbildschirm 
mit Schwarz vorab angeschlossen Briefe.
Es ist immer noch möglich, einen schwarzen Bildschirm mit weißen 
Buchstaben zu erhalten, aber Sie müssen die Standardvorverbindungen 
durchkratzen und eine Kabelverbindung hinzufügen

Ich wurde gefragt, warum die Tastaturkabel nicht einfach ein 
Lochstreifen mit einem Abstand von 2,54 mm waren, sondern absichtlich, 
die vorherige Version hat drei zusätzliche Löcher für eine Power-LED und 
einen Reset-Knopf, und ich hatte diese entfernt. Also habe ich drei 
Löcher hinzugefügt und alle Löcher in dasselbe Raster gesteckt. Es ist 
jetzt möglich, eine Power-LED auf der Tastatur zu haben.
Ich habe das Befestigungsloch unten links über dem Text "ZX81 + 38" wie 
gewünscht vergrößert.
Wenn Sie eine Revision 1.4-Platine haben, können Sie diese zum Laufen 
bringen, indem Sie drei Dinge tun:

Verwenden Sie OTPs, nicht EEEPROMS (die sechsmal teurer sind) und füllen 
Sie die 32K-ROM mit vier Kopien des ZX-81 BASIC.
Entfernen Sie den Ausgang des Flip-Flops U28A, damit / WAIT nicht 
angesteuert wird.
und ersetzen Sie die WAIT-Schaltung entweder durch die mit zwei 
Transistoren verbesserte Warteschaltung von Wilf Ritger oder durch die 
Warteschaltung von Revision 1.5 mit einem Wechselrichter und einem 
ODER-Anschluss
Trennen Sie U18B Pin 11 (clk) vom invertierten 6,5-MHz-Takt und binden 
Sie ihn an den nicht invertierten 6,5-MHz-Takt. Der nächstgelegene 
Verbindungspunkt ist Pin 2 des Schieberegisters 74LS165 (U9).
Der Jumper JP1 wurde "in umgekehrter Richtung" verdrahtet, aber da A13 
korrekt an Pin-1 von U23A angeschlossen war, war dies kein Problem

Jetzt sollte der Klon funktionieren.

schematic als  .pdf hier:
https://revspace.nl/File:ZX81plus38rev1,5.png

Habe ich an alles gedacht???

: Bearbeitet durch User
von Dirk S. (fusebit)


Lesenswert?

Nochmal zurück zu den Platinenverbindern um den originalen Slot 
verwenden zu können.

Hat irgendjemand eine sinnvolle Quelle für passende Buchsen?

Ich habe gerade bei e... nach alten Mainboards geschaut um ISA-Slots 
auszulöten, aber die kosten alle richtig viel Geld. Eigentlich brauche 
ich nur einen um mir dann eine Busplatine anzufertigen.

Alternativ mache ich das über den Pinheader und Flachbandkabel.

von Soul E. (Gast)


Lesenswert?

Dirk S. schrieb:

> Alternativ mache ich das über den Pinheader und Flachbandkabel.

Wenn Du nicht historische Originalhardware anschließen willst oder mit 
dem Platz im originalen ZX81-Gehäuse auskommen musst, dann mach das so. 
Diesen Direktstecker tat man sich damals(tm) nur an weil es nichts 
anderes gab.

RAMpak wobble, also der Absturz des Rechners beim Anstupsen der 
16k-Erweiterung, wird ja von EightyOne sogar mit emuliert :-)

von Martin D. (mahjongg)


Lesenswert?

@Rap
Lieber Alex,
Als Antwort auf Ihre E-Mail-Anfrage, bearbeitbare Schaltplan- und 
Layoutdateien (d. h. die ursprünglichen KiCad-Dateien) wie bei 
ZX-81plus35 auf github abzulegen, gilt Folgendes:
Ich bin fast fertig mit der verbesserten Version 1.5, möchte aber 
trotzdem das Layout (auf Layoutverletzungen) testen, indem ich es auf 
einen Leiterplattenhersteller hochlade. Sie können den .PDF-Schaltplan 
bereits unter revspace.nl herunterladen, aber ich möchte KiCad-Dateien 
(Schaltplan und Layout) nur freigeben, wenn ich weiß, dass das Design 
wie erwartet funktioniert, und daher hat jemand eine rev1.5-Platine und 
erstellt geprüft. Ich gebe Gerber-Dateien frei, wenn eine andere Person 
als ich den Schaltplan überprüft hat und sagt, dass meine hier 
beschriebenen Korrekturen korrekt sind. Ich möchte nicht, dass 
fehlerhafte KiCad-Dateien in Umlauf gebracht werden.

von Martin D. (mahjongg)


Lesenswert?

https://revspace.nl/ZX81plus38_simple_to_build_ZX-81_clone#Revision_1.5_with_various_corrections_is_now_working

is the place where you can find the latest schematics in .png and .pdf 
plus comments about progress.

unfortunately the wiki does not allow uploading .ZIP files, so 
gerberfiles, and KiCad files will only be available from GitHub.

: Bearbeitet durch User
von Martin D. (mahjongg)


Lesenswert?

Dirk S. schrieb:
> Nochmal zurück zu den Platinenverbindern um den originalen Slot
> verwenden zu können.
>
> Hat irgendjemand eine sinnvolle Quelle für passende Buchsen?
>
> Ich habe gerade bei e... nach alten Mainboards geschaut um ISA-Slots
> auszulöten, aber die kosten alle richtig viel Geld. Eigentlich brauche
> ich nur einen um mir dann eine Busplatine anzufertigen.
>
> Alternativ mache ich das über den Pinheader und Flachbandkabel.

perhaps here?
https://nl.farnell.com/amp-te-connectivity/5530843-5/card-edge-conn-dual-side-50pos/dp/2668415

von Ale (Gast)


Angehängte Dateien:

Lesenswert?

Wie früher gesagt, das Spiel Mazogs geht ganz gut.
Ich hab ein Alloy Composite -> VGA Wandler gekauft (~ 23 €), das Bild 
ist so grau und unscharf. Auf dem Vernseher ist das Bild viel besser, 
weiss ist weiss und die Konturen sind scharf. So mit der Wandler sieht 
enlich wie damals :)

von Ale (Gast)


Lesenswert?

Ich bin von dem ZX81+38 sehr begeistert. Ich muss diese fliegende Drähte 
schön machen und dann die CHerry Tastatur, mir ist "autentizität" 
Wurscht. Es ist so-wie-so nicht ein "Original", habe kein Rohr TV mehr, 
bin nicht mehr 10 und wir sind nicht mehr in der 80s.... Ich will noch 
daß es Programmen von einer SD-Karte oder CF laden kann, ich werde 
nehmen was einfacher ist.

von Soul E. (Gast)


Lesenswert?

Ein gängiger Weg wäre ein USB VDrive. Im Forum vom ZX-Team findet man 
einiges dazu. Das Interface kannst Du Dir auch bem ZX81NU abgucken: 
https://forum.tlienhard.com/phpBB3/viewtopic.php?t=1029&t=1029

von Genau (Gast)


Lesenswert?

Ich sah schon beim NES dass kein ESD-Schutz am FBAS-Ausgang verwendet 
wurde. Sind die Ausgangs-Transistoren so robust an ihrem Emitter dass 
ihnen eine Entladung nichts ausmacht ?

von Soul E. (Gast)


Lesenswert?

Bei 75 Ohm Ausgangsimpedanz dürfte nicht allzuviel passieren.

von chris_ (Gast)


Angehängte Dateien:

Lesenswert?

Hier der Testaufbau mit Tastatur. Mittlerweile läuft er endlich.
Die Fehersuche war ziemlich mühselig und der Fehler fast schon einfach: 
Das Und-Gatter U24 war ein HC Typ statt ein HCT.
Die Tastatur zu löten hat auch etwas Zeit in Anspruch genommen: Ich 
schätze so zwischen 2-3 Stunden.

von chris_ (Gast)


Lesenswert?

>Ein gängiger Weg wäre ein USB VDrive. Im Forum vom ZX-Team findet man
>einiges dazu. Das Interface kannst Du Dir auch bem ZX81NU abgucken:
>https://forum.tlienhard.com/phpBB3/viewtopic.php?t=1029&t=1029

Ich schaue mir gerade das Bild der ZX81NU Platine an:
https://forum.tlienhard.com/phpBB3/download/file.php?id=2751
Erstaunlich, wie ähnlich sie dem ZX81plus38 ist.

Scheinbar kann der ZX81NU auch HiRes Graphik. Ich habe vergessen, wie 
das gemacht wird. Weiß jemand einen Link?

von Martin D. (mahjongg)


Lesenswert?

chris_ schrieb:
> Hier der Testaufbau mit Tastatur. Mittlerweile läuft er endlich.
> Die Fehersuche war ziemlich mühselig und der Fehler fast schon einfach:
> Das Und-Gatter U24 war ein HC Typ statt ein HCT.
> Die Tastatur zu löten hat auch etwas Zeit in Anspruch genommen: Ich
> schätze so zwischen 2-3 Stunden.
schön zu hören, dass es funktioniert.

U24 im Schaltplan und in der Teileliste gibt einen 74LS08 an, aber 
tatsächlich wird wahrscheinlich auch ein HCT08 funktionieren.

Sie können die Tastatur an die Lochplatine anschließen, aber im 
Abschnitt ZX-81 + 35 befindet sich jedoch auch eine Tastatur 
Leiterplatte, die mit dem ZX-81 + 38 kompatibel ist.

Sie finden auch eine Papierauflage mit Löchern, die genau über die 
Griffbrettenden passen.

: Bearbeitet durch User
von Ale (Gast)


Angehängte Dateien:

Lesenswert?

@Chris ! Fantastisch zu lesen daß es mit deinem ZX81+39 auch geklappt 
hat !

Hier die Cherry Tastatur, ich werde 5 Platinen fertigen lassen. Muss 
zuerst es drucken und gucken ob die Spacebar wirklig passt...

von Dirk S. (fusebit)


Angehängte Dateien:

Lesenswert?

Welche Tasten benutzt ihr denn für die Cherry-Tastatur?
Schlachtet ihr dafür irgendein bestimmtes Keyboard, oder gibt es die 
Tasten einzeln zu vernünftigen Preisen?

Anbei die Tastatur, passend für Martin's "Tastenfeld", als Eagle 
Dateien. Ich habe mir dafür eine Platine gefräst.

Den Schaltplan 1.5 habe ich mir ausgedruckt, aber noch nicht 
zusammengeklebt und geprüft.

von chris_ (Gast)


Angehängte Dateien:

Lesenswert?

Ale
>Hier die Cherry Tastatur, ich werde 5 Platinen fertigen lassen. Muss
>zuerst es drucken und gucken ob die Spacebar wirklig passt...

Kann es sein, dass das Layout auf dem Kopf steht? Müssten die Anschlüsse 
nicht gegenüber der Space-Bar sein?

Dirk S. (fusebit)
>Ich habe mir dafür eine Platine gefräst.
Da hätte ich mir die 3 Stunden Arbeit vielleicht sparen können. Ich habe 
eine kleine CNC3020, die ich noch nie wirklich benutzt habe. Könnte ich 
vielleicht damit die Platine mit Deinen G-Code Daten fräsen?

Mittlerweile bastle ich noch ein wenig an der Debuggersoftware und habe 
den Zeichencode von Ascii auf den Zx81 Code angepasst.
Man sieht im Sreenshot den Dump des E-Line Bereichs und der untersten 
Zeile im Bildschirm. Die unterste Zeile im Schirm zeigt schon den vom 
Basic-Interpreter interpretierten Code.

Eigentlich wollte ich mir das Laden über den Soundanschluss sparen und 
einfach das RAM direkt beschreiben. Dazu habe ich mir die Save-Routine 
des Zx81 angesehen. Ich meine, dass dort einfach der Bereich von 0x4009 
( Version Number ) bis zu E-Line gespeichert wird. Das ist inclusive des 
Bildspeichers. Dies ist von Nachteil bei großem RAM weil dann die 
Soundfiles immer 768 Bytes Bildspeicherlänge beinhalten.

Leider funktioniert die Routine unten nicht ganz. Man kann zwar den 
Speicher lesen und später wieder 'laden' und das Programm wird auch 
korrekt auf dem Schirm angezeigt, aber das Basic scheint abzustürzen.

Hat jemand eine Idee, wie ich per direktem Speicher schreiben das 
Programm da rein kriege?
1
        if (c == 's') // save
2
        {
3
          uint16_t versn = 0x4009; // VERSN ( Version Number of Zx81 Software )
4
          uint16_t eline = Zx81_readMemory_u16(0x4014);// pointer to E_line line beeing typed
5
          uint16_t saveLength = eline - versn;
6
          if (saveLength > 1024 - 2)
7
          {
8
            Serial.print("memory size error");
9
          } else
10
          {
11
            uint16_t adr = 0;
12
            Serial.print("save len:"); Serial.println(saveLength);
13
            BasicProgMem[adr++] = saveLength >> 8;
14
            BasicProgMem[adr++] = saveLength & 0xFF;
15
       
16
            for (uint16_t n = 0; n < saveLength; n++)BasicProgMem[adr++] = Zx81_readMemory(versn + n);
17
          }
18
        }
19
        if (c == 'l') // load
20
        {
21
          uint16_t versn = 0x4009; // VERSN ( Version Number of Zx81 Software )
22
          uint16_t saveLength;
23
          uint16_t adr = 0;
24
          saveLength = (uint16_t)BasicProgMem[adr++] << 8;
25
          saveLength += BasicProgMem[adr++];
26
27
          Serial.print("save len:"); Serial.println(saveLength);
28
          for (uint16_t n = 0; n < saveLength; n++)
29
          {
30
            Zx81_writeMemory(versn + n,BasicProgMem[adr++]); 
31
          }
32
33
        }

von Dirk S. (fusebit)



Lesenswert?

Ich kann Dir gerne die nc-files zur Verfügung stellen.
Aber die sind natürlich an die Parameterformate meiner Stepcraft 
angepasst und daher kann es sein, dass Deine Fräse dann sehr merkwürdige 
Dinge macht (z.B. sind die Einheiten für den Vorschub und Vorzeichen der 
Achsenrichtung nicht Bestandteil der G-Code Dateien).

Ich habe weiter oben die falsche Revision angehängt!
Hier ist die Rev B, da passt das Layout.

von Zeno (Gast)


Lesenswert?

chris_ schrieb:
> Leider hat er aber kein EEPROM mehr.

Wenn's ein klassischer EPROM tut könnte ich aushelfen.

von Ale (Gast)


Angehängte Dateien:

Lesenswert?

I'll do a kind of breakout for the debugger using that ATMega2560 board, 
as proposed by Chris. I'll add a couple extra components to connect a CF 
card in 8 bit mode, too. Like in the picture.

Key can be had from ali:

https://de.aliexpress.com/item/4000810151652.html?spm=a2g0o.productlist.0.0.3e5146cbRR2QME&algo_pvid=e59f2bd1-823a-4bd9-bed7-0e8de594461a&algo_expid=e59f2bd1-823a-4bd9-bed7-0e8de594461a-11&btsid=0b0a01f816024086961615172e183a&ws_ab_test=searchweb0_0,searchweb201602_,searchweb201603_

Ich glaube meine Tasten waren billiger...

von Ale (Gast)


Lesenswert?

Regarding the "LOAD" routine, in the ROM the return address gets eaten 
and the program continues at 0x0207:
1
; ------------------------------
2
; THE 'LOAD-SAVE UPDATE' ROUTINE
3
; ------------------------------
4
;
5
;
6
7
;; LOAD/SAVE
8
L01FC:  INC     HL              ;
9
        EX      DE,HL           ;
10
        LD      HL,($4014)      ; system variable edit line E_LINE.
11
        SCF                     ; set carry flag
12
        SBC     HL,DE           ;
13
        EX      DE,HL           ;
14
        RET     NC              ; return if more bytes to load/save.
15
16
        POP     HL              ; else drop return address
17
18
; ----------------------
19
; THE 'DISPLAY' ROUTINES
20
; ----------------------
21
;
22
;
23
24
;; SLOW/FAST
25
L0207:  LD      HL,$403B        ; Address the system variable CDFLAG.
26
        LD      A,(HL)          ; Load value to the accumulator.
27
        RLA                     ; rotate bit 6 to position 7.
28
        XOR     (HL)            ; exclusive or with original bit 7.
29
        RLA                     ; rotate result out to carry.
30
        RET     NC              ; return if both bits were the same.

von chris_ (Gast)


Angehängte Dateien:

Lesenswert?

Dirk S. (fusebit)
>Ich kann Dir gerne die nc-files zur Verfügung stellen.

Danke für die Files. Die Positionen im G-Code müssten eigentlich passen 
und die Geschwindigkeit kann ich ändern. Ich weiß nur nicht, ob meine 
billige CNC3020 für so was geeignet ist. Ich werde es wahrscheinlich 
nächstes Wochenende mal ausprobieren.

Ale
>I'll do a kind of breakout for the debugger using that ATMega2560 board,
>as proposed by Chris. I'll add a couple extra components to connect a CF
>card in 8 bit mode, too. Like in the picture.
Im Bild oben sieht man, wie die Wait-Schaltung für's Debugging beim 
4ChipZ80 realisiert ist. Dort gibt es auch ein paar Leuchtdioden, die 
den Betriebszustand anzeigen, was auch sehr nützlich sein kann.
https://github.com/WestfW/4chipZ80

von Andreas R. (daybyter)


Lesenswert?

Dirk S. schrieb:
> Welche Tasten benutzt ihr denn für die Cherry-Tastatur?
> Schlachtet ihr dafür irgendein bestimmtes Keyboard, oder gibt es die
> Tasten einzeln zu vernünftigen Preisen?

Ihr wollt doch nicht wirklich die schönen Cherry-Tastaturen schlachten?

Ich hab mal gesucht und hier gibt es z.B. Einzeltasten:

https://www.getdigital.de/Tasten-fuer-Mechanische-Tastaturen-Einzeltasten.html?variant=7083&gclid=Cj0KCQjw2or8BRCNARIsAC_ppyaf0d_3EEYSb2B5M5ctUylbwnsUqBh4it12kihLM36nMyLRorL4Q54aAo9hEALw_wcB

Vielleicht wäre es eine Option, solche Tasten selbst mit dem 3D Drucker 
zu produzieren? Das müsste doch deutlich billiger sein?

von chris_ (Gast)


Lesenswert?

Hier gibt es einen C-Compiler und Assembler, der wohl für relativ viele 
Z80 Systeme geeignet ist.
Ein paar wenige Codebeispiele für den Zx81 sind auch dabei.

https://github.com/z88dk/z88dk

von Dirk S. (fusebit)


Lesenswert?

Moin,

ich bin mal den Rev 1.5 Schaltplan durchgegangen und soweit ich das sehe 
sind alle Änderungen umgesetzt. Nun bin ich auf das neue Layout gespannt 
:-)

von Martin D. (mahjongg)


Angehängte Dateien:

Lesenswert?

I have uploaded gerber and drill files for revision 1.5 to my GitHub 
page

also see the attached layout pictures.

the BOM has not changed, except that the Video connector is now a CLIFF 
FC68391.

: Bearbeitet durch User
von Dirk S. (fusebit)


Lesenswert?

Besteht Interesse ein paar Rev 1.5 Platinen gemeinsam zu bestellen, oder 
sind alle mit den modifizierten Rev 1.4 zufrieden?

von Alex P. (ra_p)


Lesenswert?

Ich hätte gerne einen Debug Port :)
Ich hätte gerne eine Platine v 1.5. Wir können gemainsam Bestellen. Ich 
werde zwischem WE und anfang nächste Woche Platinen bestellen, könnte 
auch diese....
@Martin: has du die Platine+Chips gekriegt?

von Martin D. (mahjongg)


Lesenswert?

Alex P. schrieb:
> @Martin: has du die Platine+Chips gekriegt?
Ja! eine schöne rote Platine. Nochmals vielen Dank.
Ich habe auch eine Tasche mit DIP-ICs erhalten, was sehr schön ist.
Es ist eine Schade, dass sich Revspace im Quarantänemodus befindet, und 
ich fühle mich auch nicht so stark, aber ich werde bald anfangen, 
vielleicht schon an diesem Wochenende. Ich habe jetzt zwei grüne 
Leiterplatten und Ihre rote, einen 13-MHz-Kristall und einige ICs, ich 
werde sehen, was ich hier habe, ich habe definitiv einen Z80 und 
hoffentlich auch einige OTPs, und auf RevSpace haben wir einen Minipro 
EPROM-Programmierer (Ich muss noch sehen, ob ich Minipro-Software auf 
meinem Laptop habe) und wahrscheinlich genug IC-Sockel.

Ich glaube auch, dass ich Audioanschlüsse aus einem früheren Projekt und 
möglicherweise einen verwendbaren Videoanschluss (RCA) habe.

Ich werde damit arbeiten, eine kleine Bewegung ist genau das, was ich 
brauche.

: Bearbeitet durch User
von Dirk S. (fusebit)


Lesenswert?

Alex P. schrieb:
> Ich hätte gerne einen Debug Port :)
> Ich hätte gerne eine Platine v 1.5. Wir können gemainsam Bestellen. Ich
> werde zwischem WE und anfang nächste Woche Platinen bestellen, könnte
> auch diese....

Hast eine PN.

von chris_ (Gast)


Angehängte Dateien:

Lesenswert?

>Besteht Interesse ein paar Rev 1.5 Platinen gemeinsam zu bestellen,

Grundsätzlich eine gute Idee, aber auf der Platine sind ja keine so 
großen Änderungen gegenüber der 1.4.

Meiner Meinung nach fehlen eher ein paar Erweiterungen auf dem 
Zx81puls38:

1. Das EEPROM sollte voll addressiert ( alle 32K ) werden können
2. Das EEPROM sollte auch geschrieben werden können ( zur Not mit einem 
Schutz für den Systembereich ). Dann könnte man den Zx81 auch als 
Stand-Alone Geräte nutzen und könnte die Software ( e.g. Spiele ) aus 
dem Speicher starten.

Heute Morgen habe ich mir eine Tasturbeschriftung gedruckt, in eine 
Klarsichthülle gesteckt und mit Tesa angeklebt. Das Funktioniert gar 
nicht schlecht. Der Druckpunkt fühlt sich damit besser an, als wenn man 
direkt auf die kleinen Tastenkappen drückt. Leider ist die Tastatur 
etwas nach oben verbogen, weil sie sich durch das Löten auf der 
Billig-Lochrasterplatine eine Art Bauch nach oben gebildet hat.

Das Drucken war nicht so einfach, weil die Größe der Keyboard-Vorlage
https://revspace.nl/File:Nieuw_keyboard_ZX14.pdf
einfach nicht mit den richtigen Maßen aus meinem Drucker kam.  Außerdem 
hat die Vorlage angedeutet Kreise für die Tastendurchbohrungen, was ich 
bei meinem Klarsichtüllenverfahren ja nicht brauche.

von Dirk S. (fusebit)


Lesenswert?

Ich habe eventuell noch einen Fehler gefunden.

Bei mir trat sporadisch das Problem auf, dass ich kein Semikolon tippen 
konnte. Da ich für die Pull-ups RP1 10k statt 4,7k eingelötet hatte 
(steht so in der BOM, die 4,7k stehen im Plan) habe ich die getasucht um 
zu sehen ob es besser wird. Allerdings funktionierten dann die linken 
unteren Tasten überhaupt nicht mehr. Beim weiteren prüfen ist mir dann 
aufgefallen, dass dieser Block auf A8' geht. Alle anderen gehen direkt 
auf die Adresspins, da es nur bis A8 die 1k (R1 bis R9) Widerstände 
gibt.

Also habe ich mal von der Diode zum A8 (CPU Pin 38) gebrückt und schon 
funktioniert die Tastatur ohne Probleme.

von Genau (Gast)


Lesenswert?

Man sollte wohl alles bombenfest machen, denn bei meinem Bastelrechner 
fing nach einiger Zeit das Display an zu flackern weil so ein 
Steckverbinder wackelte wenn ich eine Taste drückte.

von chris_ (Gast)


Lesenswert?

>Also habe ich mal von der Diode zum A8 (CPU Pin 38) gebrückt und schon
>funktioniert die Tastatur ohne Probleme.

Damit wirst Du dann vermutlich einen Kurzschluss erzeugen können wenn Du 
zwei Tasten gleichzeitig drückst, A8 High und einige der anderen 
Adresspins Low sind.

von Dirk S. (fusebit)


Lesenswert?

Da habe ich mich wohl missverständlich ausgedrückt.
Ich habe nicht die Diode überbrückt, sondern auf der Kathodenseite der 
D6 die Leiterbahn unterbrochen und mit einem Draht an CPU Pin 38 
gelötet. Also nur den R1 für die Tastatur überbrückt.

von chris_ (Gast)


Lesenswert?

>Da habe ich mich wohl missverständlich ausgedrückt.

Da habe ich Dich missverstanden.
Kann es sein, dass die Adressleitungswiderstände R1-R9 dazu da sind, 
dass das Video-Adressgenerator-Latch die Adressleitungen des Prozessors 
überschreiben kann, um den Zeichensatz im ROM zu adressieren?
Wenn man den Widerstand R1 überbrückt, wird wahrscheinlich die 
Adressleitung A8 der CPU vom Latch beim Videozugriff etwas gequält. Es 
könnte aber sein, dass das sonst nirgends sichtbar ist.

von Dirk S. (fusebit)


Lesenswert?

Deshalb habe ich auch nicht einfach den Widerstand raus genommen, 
sondern nur den Pin 6 der Tastatur direkt an die CPU gehängt. Jedenfalls 
funktioniert bei mir nur so die Tastatur ohne Aussetzer.

von chris_ (Gast)



Lesenswert?

>Deshalb habe ich auch nicht einfach den Widerstand raus genommen,
>sondern nur den Pin 6 der Tastatur direkt an die CPU gehängt.

Hmm ... OK. Bei mir habe ich noch kein Problem mit der Tastatur 
festgestellt, aber ich habe das Semikolon auch noch nicht gebraucht.

Ich habe einen IntelHexFile Interpreter in den Debugger eingebaut, so 
dass man das Hex-File aus dem Online-Assembler per Copy und Paste ins 
serielle Terminal posten kann.

Ich kompiliere den Code auf die Adresse 18000, so dass ich den Code im 
Zx81 durch eintippen von

RAND USR 18000

starten kann.

Eigentlich sollte die Routine einen kurzen Beep erzeugen, aber es ergibt 
sich ein Dauerton und die Routine wird scheinbar nicht beendet.
Liegt es an meinem Code oder am Debugger?
1
; Zx81plus38
2
; create a short sound
3
4
; to run program in Zx81 type
5
; RAND USR 18000
6
7
8
    org 4650H ;18000 dec
9
    
10
    out ($FD),a     ; NMI off
11
12
loop:
13
    ld b,$ff
14
    ld h,b
15
    
16
    call pulse
17
    ld b,h
18
    djnz loop
19
    out ($FE),a        ; turn NMI on again
20
    ret
21
    
22
pulse:
23
    in a,($FE)   
24
25
    ld b,$FF         ; time constant for delay loop
26
l1:
27
    djnz l1
28
    out ($FF),a     
29
30
    ld b,$ff         ; time constant for delay loop
31
l2:
32
    djnz l2
33
    
34
    ret

von chris_ (Gast)


Lesenswert?

>Deshalb habe ich auch nicht einfach den Widerstand raus genommen,
>sondern nur den Pin 6 der Tastatur direkt an die CPU gehängt. Jedenfalls
>funktioniert bei mir nur so die Tastatur ohne Aussetzer.

Ich denke, Du hast Recht. Die Diode D6 muss nicht an A8' sondern an A8 
angeschlossen sein.

von Martin D. (mahjongg)


Lesenswert?

Ich stimme zu! Auch im ZX-81 Originalschema ist die Tastatur nicht mit 
A8', sondern mit A8 verbunden.
Bei meinem älteren ZX-81+35 ist es auch falsch.
Es ist sinnvoll, dass die A8-Tastaturleitung nicht durch einen 
10K-Widerstand verläuft, da sonst das Kyboard-Signal nur um etwa die 
Hälfte abfallen kann.
Ich werde es in Version 1.6 korrigieren.
Danke für den Tipp!

: Bearbeitet durch User
von chris_ (Gast)


Lesenswert?

>Ich stimme zu!

Der Fehler scheint tatsächlich schwerwiegend.
Ich wollte gerade ein wenig BASIC programmieren. Sobald man zwei Tasten 
im linken unteren Tastenfeld ( Shift,Z,X,C,V ) gleichzeitig drückt, 
stürzt der Zx81 ab.

von Martin D. (mahjongg)


Lesenswert?

Der Fehler wurde bereits in Version 1.6 behoben.
Die Gerber- und Drill-Dateien sowie der Schaltplan sind bereits auf 
github zu finden.
Siehe Revision 1.6

Der Zeitplan befindet sich auch im Revspace sowie in Screenshots der 
oberen und unteren Vorschau.

Es ist wahr, dass dieser Fehler diese tasten betrifft (sehe ZX-81 
shaltplan). Aufgrund der 10 KB zwischen der ZX80-Adressleitung können 
kleine Leckströme bereits das beeinflussen, was der ROM als A8 "sieht". 
Sie können dies beheben, indem Sie die Oberseite der Diode A6 entfernen 
und sie mit einem Patchkabel an der linken Seite von R1 (oder dem 
entsprechenden Z80-Pin) anschließen.

oder mithilfe der PCB-Version 1.6.

Ich denke, in der Vergangenheit wurde dieser Fehler nicht bemerkt, weil 
ich 4,7K Widerstände für die Vorwiderstände und damit für R1 verwendet 
habe.

in jedem Fall ich habe noch nie einen Absturz mit dem ZX-81 + 35 erlebt

: Bearbeitet durch User
von Dirk S. (fusebit)


Lesenswert?

Jetzt bin ich langsam etwas verwirrt, welche Werte die Widerstände nun 
haben sollen.

Die Adressleitungs-R sind mit 1k im Plan und auf der Platine angegeben, 
nun schreibst Du etwas von 10k.

Am Tastaturanschluss sind 4k7 im Plan und 10k in der (1.4) BOM.


Bei mir habe ich für R1-R8 1000R und RP1 war zuerst 10k. In der 
Konfiguration funktionierte der ZX81 weitgehend. Nur klappte es nicht 
immer mit dem Semikolon, weil dann zwei Tasten im unteren, linken Block 
gedrückt werden.

Nachdem ich RP1 auf 4,7k geändert hatte, ergab sich das Verhalten wie 
chris_ es beschreibt. Bei zwei Tasten gleichzeitig stürzt der ZX81 ab.

Mit den gleichen R-Werten, aber einer direkten Verbindung von D6 zu Pin 
38 der CPU funktioniert es einwandfrei.

von chris_ (Gast)


Lesenswert?

Nachdem ich den Tastaturfehler ( D6,A8 ) behoben habe, funktioniert der 
Zx81plus38' einwandfrei ;-)

Ich kann auf dem Gerät programmieren und bin erstaunt, wie gut sich mit 
dem Basic Editor arbeiten lässt. Ich habe damit ja 35 Jahre lang nicht 
mehr gemacht und es vergessen.
Eigentlich hätte ich das Gerät ja nicht gebaut, wenn ich die Bauteile 
nicht geschenkt bekommen hätte. Jetzt stelle ich aber fest, dass es 
einen deutlichen Unterschied macht, ob man einen Zx81 bedient oder einen 
Emulator am PC. Das Bediengefühl ist einfach nicht das Gleiche, alleine 
schon aus dem Grund, weil die PC-Tastatur keine Zx81 Tastatur ist.

Es ist aber auch erstaunlich, wie langsam das Basic des Zx81 ist. Ich 
habe ein Testprogramm gemacht, dass zufällig Sternchen auf dem 
Bildschirm zeichnet:
1
10 LET X=RND*21                                                              
2
20 LET Y=RND*31                                                              
3
30 PRINT AT X,Y;"*"                                                          
4
40 GOTO 10

Die Rate Print-Rate dürfte so bei 2Hz liegen ...

( Der Code ist ein direkter ScreenShot mit dem Debugger )


In der Zx81 Zeit habe ich ein Spiel programmiert "MonsterCrash", das auf 
dem 2KByte Zx81 lief. Leider finde ich die Kassette dazu nicht mehr und 
muss es deshalb aus dem Gedächtnis nachprogrammieren. Mal sehen ... wenn 
ich Zeit finde :-)

von chris_ (Gast)


Lesenswert?

Nachtrag: Die Addresswiderstände sind bei mir 1K und die 
Tastaturwiderstände 4k7

von Martin D. (mahjongg)


Lesenswert?

chris_ schrieb:
> Nachtrag: Die Addresswiderstände sind bei mir 1K und die
> Tastaturwiderstände 4k7
Okay, ich habe alles noch einmal überprüft und mit der ursprünglichen 
ZX-81-Situation verglichen, und meine Variante ist fast die gleiche wie 
die ursprüngliche, nur bei mir sind die Vorwiderstände des Datenbusses 
die gleichen wie der Adressbus, nämlich 1K, während die Widerstände in 
der Der Datenbus mit dem ursprünglichen ZX-81 beträgt 470 Ohm.
Die Tastaturmatrix-Pullups sind bei mir original 4K7, aber beim Original 
sind die Tastatur-Pullups nicht 4K7, sondern 10K, was für die Logikpegel 
etwas besser ist, aber 4K7 ist anscheinend gut genug. das erklart warum 
möglicherweise nicht A8, sondern tatsächlich A8' verwendet wurde. Das 
war NICHT falsch! Nur ein 1K- und 10K-Widerstandsteiler hat keine 
schwerwiegenden Auswirkungen auf die Logikpegel, und das gleichzeitige 
Drücken von zwei Tasten führt bei A8' nicht zu einem ungültigen 
Logikpegel.


Fazit:
Die Verbindung von A8' zu D6 war NICHT falsch, da sie im Original auch 
so verbunden war, aber ich werde meine Korrektur nicht rückgängig 
machen.

Die Widerstände der Address-Serie müssen 1K betragen, genau wie beim 
ZX-81-Original, also ist das richtig.

Die Tastatur-Pullup-Widerstände müssen 10K betragen, was nicht auf der 
Leiterplatte angegeben ist, aber der Schaltplan gibt fälschlicherweise 
4K7 und die Stückliste korrekt 10K an. Ich werde den Schaltplan 
korrigieren. Obwohl bei Verwendung von A8 anstelle von A8' die Tastatur 
keine Rolle spielt (da keine Widerstandsteilung stattfindet)


Wenn Sie eine Revision 1.4-Platine verwenden, müssen Sie KEIN Patchkabel 
verwenden, um A8 mit D6 zu verbinden. Sie müssen nur 10K-Pullups für 
RP1- und 1K-Adresswiderstände verwenden.

: Bearbeitet durch User
von Dirk S. (fusebit)


Lesenswert?

Meine Erfahrung ist etwas anders:

Ich hatte zu Beginn die Rev 1.4 mit 10k RP1 und 1k R1 - R9 aufgebaut und 
die Tastatur hat sporadische Fehler verursacht. So funktionierten die 
über shift zugänglichen Zeichen im unteren, linken Block nicht 
zuverlässig und es gab gelegentlich ein Absturz bei der Verwendung der 
shift-Taste. Möglicherweise wurde dies durch das etwa 20 cm lange 
Flachbandkabel zum Anschluss der Tastatur begünstigt, aber mit der 
Änderung auf A8 funktioniert es nun ganz ohne Störungen.

Daher finde ich es gut, dass Du die Änderung in der Rev 1.6 beibehältst. 
Das scheint für ein Bastelsystem die stabilere Version zu sein.

von Ale (Gast)


Lesenswert?

Muss mir das ganze mit dem Tastatur anschauen bevor ich die Platinen 
bestelle. Ich bestelle dann nur 5 Platinen, sind wir alle bedeckt :).

von Ale (Gast)


Lesenswert?

Ich hab die Platinen zur Fertigung geschuckt. Eine "Debug" Platine wie 
Chris vorgestellt hat habe ich auch geschickt, zusammen mit eine 
Tastaturplatine für Cherry MX Tasten, oder änlich. Gucken wir. Ich 
wollte es nicht verlangsamen und habe alle in Grün bestellt.

von Ale (Gast)


Angehängte Dateien:

Lesenswert?

Ich hab vergessen die Bilder der Platinen hier zu posten, und die KiCad 
Dateien. Die Gerbers sind die ich benutzt habe für JLC.

von Dirk S. (fusebit)


Angehängte Dateien:

Lesenswert?

Ich habe meinen ZX81+38 mit einem ZX-WESPI erweitert.
Echt praktisch, damit ist das zentrale Problem des fehlenden 
Massenspeichers gelöst :-D

von chris_ (Gast)


Lesenswert?

>Ich habe meinen ZX81+38 mit einem ZX-WESPI erweitert.

Sieht gut aus :-)

http://zx81.tlienhard.com/phpBB3/viewtopic.php?f=2&t=3360

von Dirk S. (fusebit)


Lesenswert?

Was mir an dem ZX-WESPI besonders gefällt ist das keine Modifikationen 
an dem ZX-81 erforderlich ist. Man verwendet nur die originalen LOAD und 
SAVE.

von chris_ (Gast)


Angehängte Dateien:

Lesenswert?

Tja, ich will es mit einem echten Audiosignal probieren.
Leider scheinen die Pegel nicht zu stimmen.
Das Signal an U6 Pin13 ist viel zu hoch.

Als Audioquelle nehme ich das Signal von Audacity welches ich vorher mit 
dem Zx81plus38 aufgenommen habe.

Zugegebenermaßen habe ich einen BC547C als Transistor, aber eigentlich 
sollten die Spannungsteiler das ausgleichen, meine ich.

von chris_ (Gast)


Angehängte Dateien:

Lesenswert?

.. hier das Signal U6 Pin13.

von Martin D. (mahjongg)


Lesenswert?

Ich habe den Vorverstärkertransistor über den analogen Simulator LTSpice 
konfiguriert. Sie können hier 
(https://revspace.nl/ZX81PLUS34_ZX81_clone#March_27_2016_designed_a_reasonably_well_working_cassette_input_port) 
sehen, wie ich das gemacht habe. und welche Art von Eingangssignalen ich 
erwarte.

von chris_ (Gast)


Angehängte Dateien:

Lesenswert?

Danke Martin.
Es sieht wohl so aus, als wenn der R59 im Schaltplan des Zx81plus falsch 
ist ( 47k statt 4.7k ).

von chris_ (Gast)


Lesenswert?

Das nächste Projekt könnte ein Relay-Computer werden.

MERCIA ... Wahnsinn, ein unglaublich schönes Design:
http://www.relaiscomputer.nl/index.php

von chris_ (Gast)


Angehängte Dateien:

Lesenswert?

Tja, leider scheint die Signalerkennung doch nicht so gut zu 
funktionieren.

Vielleich kann jeman von auch mein Testprogramm laden.

load "t"

von Mein Passwort nicht dabei (Gast)


Lesenswert?

Am Anfang habe ich die Audiofunktion zum Laden und Speichern mit einem 
MP3 Diktiergerät benutzt. Das hat einwandfrei funktioniert, nachdem ich 
einen kleinen Vorverstärker eingeschleift hatte.

Dirk

von Ale (Gast)


Lesenswert?

Tolle Idee !!!

Ich werde es auch probieren. Eine ESP32 habe ich zufällig da :)... schon 
programmiert, muss ich es jetzt verkabeln!!! jupiiii

von Ale (Gast)


Lesenswert?

Kein Relays Computer, ein Apfel ][ !

von chris_ (Gast)


Angehängte Dateien:

Lesenswert?

So sehen die Audio-Input-Signale im Moment aus.
R59: 4k7
Q9: BC547C

von chris_ (Gast)


Angehängte Dateien:

Lesenswert?

Das blaue Signal ist dann auf der digitalen Seite. Ich würde sagen, es 
ist viel zu kurz.

von chris_ (Gast)



Lesenswert?

Da den Reihenwiderstand R59 verkleinert habe, habe ich in diesem Versuch 
den Koppelkondensator C3 von 4.7 mit einem parallegeschalteten 22nF 
Kondensator versehen. Die Idee: die Ladung sollte jetzt für längere 
Digitalpulse reichen.

Aber leider haut das nicht hin: Der erste Puls eines Impulszuges kommt 
gut durch und danach ist der Kondensator zu leer.

@Majong: In Deinem Blog schreibst Du, dass der Zx81 4 Pulse für LOW und 
8 Pulse für HIGH verwendet. Wie man in den Bildern sieht, ist das 
falsch. Richtig ist:

LOW: 4 Pulse
HIGH: 9 Pulse

von Dirk S. (fusebit)


Lesenswert?

Hi chris,

ich verstehe Dein Problem nicht.
Funktioniert das Laden und Speichern bei Dir nicht?
Bei mir klappt das einwandfrei, solange die Pegel hoch genug sind und 
das schaffe ich nicht mit Kopfhörerausgängen alleine. Aber die 
Signalerkennung klappt prima, der ZX-WESPI arbeitet ja auch komplett mit 
der Audio-Schnittstelle.

von Ale (Gast)


Lesenswert?

Die t.wav Datei lädt bei mir gut:
1
5 PRINT "TEST"
2
10 LET X=RND*21
3
20 LET Y=RND*31
4
30 PRINT AT X,Y;"▓"
5
40 GOTO 10

von chris_ (Gast)



Lesenswert?

>Die t.wav Datei lädt bei mir gut:

Super, ich bin begeister. Endlich jemand, der es probiert hat :-)

>ich verstehe Dein Problem nicht.
>Funktioniert das Laden und Speichern bei Dir nicht?

Damit hat Ale die Frage beantwortet, ob das Speichern bei mir 
funktioniert.

Das Speichern von Audiodaten hat bei mir eine längere Historie. In 
meiner Zx81 Zeit ( 1982-1984 ) hat das Speichern eigentlich nur auf 
einem der Kassettenrecorder gut funktioniert. Es war ein flacher, auf 
dem Tisch liegender Kassettenrecorder, wie er heute noch in manchen 
Schulen verwendet wird ( Ich meine, es war ein Universum, so ähnlich wie 
in dem Bild ).

Mit meinem Zx81 hatte ich einen eigenen kleine Z80 Computer entwickelt, 
dessen Bild ich hier schon gezeigt hatte:

https://www.mikrocontroller.net/attachment/472355/CH1_ComputerMainBoad.png

Weil ich dort auch Daten speichern können wollte, habe ich ein serielles 
Interface ( 6850 ACIA chip MC6850 Asynchronous Communications Interface 
Adapter (ACIA) (24pin) ) und ein Z80CTC gebaut um damit die 
Audio-Interface-Schaltung ansteuern zu können. Die Schaltung des 
Interfaces war vermutlich irgendwo in der Zeitschrift ELRAD beschrieben, 
die es heute ja leider nicht mehr gibt.

Da ich mir als Schüler kein Oszilloskop leisten konnte, muss ich immer 
versuchen, aus den Ausgaben der Software, die ich auf dem Blatt in 
Assembler geschrieben und den handübersetzten Hex-Code dann in den 
Computer  eingegeben hatte, auf die Funktion der Schnittstelle zu 
schließen.

Leider ist es mir damals nie gelungen, Daten zuverlässig auf die 
Kassetten zu speichern. Deshalb möchte ich das jetzt knapp 40 Jahre 
später mal genauer untersuchen.

von Ale (Gast)


Angehängte Dateien:

Lesenswert?

Der ZXWespi ist genial, ich muss es nur doppel versorgen, diese USB Zeug 
gibt zu wenig Strom.

Beide Verbindungen, EAR und nVSYNC sind nötig, sonst geht nicht.

von Ale (Gast)


Lesenswert?

Chris schrieb:
> Das Speichern von Audiodaten hat bei mir eine längere Historie. In
> meiner Zx81 Zeit ( 1982-1984 ) hat das Speichern eigentlich nur auf
> einem der Kassettenrecorder gut funktioniert. Es war ein flacher, auf
> dem Tisch liegender Kassettenrecorder, wie er heute noch in manchen
> Schulen verwendet wird ( Ich meine, es war ein Universum, so ähnlich wie
> in dem Bild ).

So enen Kassetenrekorder habe ich auch gehabt, meine war eine der Marke 
"Vitatone", wenn ich mich nicht irre. Nur mit der hat es funktioniert, 
wir hatten damals nur die, später hatten wir einen anderen mit mehr 
"Funktionen" ging aber nicht mehr.

Der ZXWespi hat "fast load", genial !

von chris_ (Gast)


Lesenswert?


von Dirk S. (fusebit)


Lesenswert?

Hi Ale,

es ist sehr wichtig am ESP noch einen Elko zu haben um den pulsierenden 
Strombedarf zu glätten. Ich habe da einen 100µF und mein ZX81+38 braucht 
mit ZX-WESPI und PIO-Karte keine 250 mA und wird nur über die USB-Buchse 
versorgt.

von Martin D. (mahjongg)


Lesenswert?

chris_ schrieb:
> So sehen die Audio-Input-Signale im Moment aus.
> R59: 4k7
> Q9: BC547C
Ich habe mir das Schema meines ursprünglichen Klons ZX-81+35 angesehen 
und es gibt R59 10K, also habe ich damit die besten Ergebnisse erzielt. 
Wie viele Impulse erzeugt werden, ist für den ZX-81 nicht sehr relevant, 
da es anscheinend keine Rolle spielt.

von chris_ (Gast)


Lesenswert?

>Ich habe mir das Schema meines ursprünglichen Klons ZX-81+35 angesehen
>und es gibt R59 10K,

Mittlerweile konnte ich das Testprogramm "t.wav" zum ersten mal laden 
und ausführen.

Meine Beobachtungen:
Wenn man nicht "load" eingetippt hat, zeigt der Zx81plus38 die 
gewünschten Streifen auf dem Bildschirm, wenn Audiodaten vorhanden sind. 
Wenn man aber "load" eingetippt hat, werden keine Streifen mehr gezeigt, 
man sieht nicht was passiert und muss warten, bis das Programm wirklich 
fertig geladen ist. Wenn alles geklappt hat, steht auf dem Bildschirm 
rechts unten 0/0 . Man kann dan mit "list" das Programm anschauen und 
mit "run" laufen lassen.

Meine Schaltung hat jetzt einen Eingangswiderstand von 4.7k und einen 
2N3904.
Der BC547 hat scheinbar einen defekt. Der Transistortester zeigt 
HFE=639, was mir extrem hoch erscheint. Der Ausgang der Schaltung war im 
Grundzustand auf HIGH ( Anschluss nCAS_IN ), was bei der Zx81 Software 
dazu führt, dass sie hängen bleibt und die Break-Taste nicht abgefragt 
wird. Diese wird nur abgefragt, wenn nCAS_IN auf LOW ist.
Das Ganze konnte ich mit dem ArduinoMega-Debugger raus finden, weil ich 
das SingleStep-FlipFlop eingebaut habe und so in Einzelschritten sehen 
konnte, wo der Prozessor gerade steht.

von Martin D. (mahjongg)


Lesenswert?

Die Kassettenleseroutine des ZX-81 erwartet, dass während der Leerlauf 
nCAS_IN niedrig ist und die Impulse hoch gehen.
Dies so sollte die Funktion der Transistorschaltung sein, die im 
Leerlauf niedrig ist und hohe Impulse mit aktivem Signal liefert. Nach 
dem, was ich gelesen habe, zählt der Z80 nicht die Anzahl der hoch 
laufenden Impulse, sondern bestimmt, ob eine Impulsfolge ein '0'- oder 
ein' 1'-Bit ist, indem er die gesamte Hochzeit einer Impulsfolge 
bestimmt, und Damit bestimmt er, ob es sich um eine kurze oder eine 
lange Impulsfolge handelt.

Ich sehe eine weitere Abweichung von den Komponentenwerten im 
Eingangsverstärker ZX-81 + 38, nämlich dass der Kondensator C7 über dem 
Eingang (parallel zum 1K-Widerstand R58) beim ZX81+38 47 nF und beim 
Original nur 47 pF beträgt.
Ich würde versuchen, ob das einen Unterschied macht.

Es ist schade, dass ich noch keine Leiterplatte aufgebaut habe. Ich habe 
jetzt verstanden, dass Sie mir auch eine Leiterplatte der Version 1.5 
geben wollten. Ich habe deshalb nicht begonnen, die Leiterplatte der 
Version 1.4 zu bauen, die ich bereits habe.
Wenn ich eine funktionierende Leiterplatte habe, kann ich selbst 
Messungen vornehmen und so weiter.

Ich vermute, dass der Z80 mit einem "Lade" -Befehl das Bild ständig auf 
Schwarz setzt. Wenn ja, muss ich meinen Balkengenerator anpassen (ich 
glaube, ich habe angenommen, dass das Bild auf Schwarz eingestellt ist), 
aber ich muss das experimentell tun. Ich denke, ich brauche einen EXOR, 
um das Bild zu erhalten. invertieren, wenn das Signal nCAS_IN hoch ist.

Übrigens denke ich, dass die Anzahl der Impulse, die der Z80 von der 
Kassette sieht, variieren kann, wenn der Rekorder das Audiosignal 
invertiert, (oder nicht) was möglicherweise erklärt, warum es 8 oder 9 
Impulse geben kann. Aber für die Software denke ich nicht, dass das 
wichtig ist.

Ich glaube nicht, dass die Wahl des Transistors so wichtig ist, da das, 
was passiert, wirklich nur von den Widerstandsverhältnissen abhängt. 
Deshalb habe ich im ZX-81+38 einen 2N3904 verwendet (alle 
NPN-Transistoren sind im ZX-81+38 vom gleichen Typ).
Aber im ZX-81+35 hatte ich einen BC847B verwendet.

: Bearbeitet durch User
von chris_ (Gast)


Angehängte Dateien:

Lesenswert?

>Ich sehe eine weitere Abweichung von den Komponentenwerten im
>Eingangsverstärker ZX-81 + 38, nämlich dass der Kondensator C7 über dem
>Eingang (parallel zum 1K-Widerstand R58) beim ZX81+38 47 nF und beim
>Original nur 47 pF beträgt.

Oben im Bild ist das Orignal-Interface abgebildet.
Wenn ich es richtig verstehe, ist MIC das Signal zum Kassettenrekorder 
und mit den gezeigten Komponenten muss es ziemlich schwach sein: 47pf in 
Reihe mit 1MOhm auf 1K Last. Das wären bei 5V und hohen Frequenzen 
gerade mal 5mV Signal. Soll das reichen?

Der Eingang müsste dann EAR sein und mit einem Hochpass bestehend aus 
10nF und 4k7 und dem Eingang 20 der ULA.

von Soul E. (Gast)


Lesenswert?

chris_ schrieb:

> Wenn ich es richtig verstehe, ist MIC das Signal zum Kassettenrekorder
> und mit den gezeigten Komponenten muss es ziemlich schwach sein: 47pf in
> Reihe mit 1MOhm auf 1K Last. Das wären bei 5V und hohen Frequenzen
> gerade mal 5mV Signal. Soll das reichen?

Nein. Damals empfahl jede zweite Bastlerzeitschrift 100 k bzw 470 pF 
parallel zu schalten.

Und mit Leseverstärkern ("Impulsputzer") wurde auch viel Umsatz gemacht.

von Dirk S. (fusebit)


Angehängte Dateien:

Lesenswert?

Jetzt hat der ZX81+38 auch noch eine PIO-Karte bekommen. Eine passende 
Relais-Karte werde ich nun in Angriff nehmen und dann muss ich mir 
überlegen, ob man damit irgendetwas sinnvolles machen kann ;-)

Auf der ZX-WESPI-Adapterplatine habe ich noch einen Kippschalter 
untergebracht, um nach dem Elko die Versorgungsspannung abschalten zu 
können. Wenn der eingeschaltet ist, dann kann man nicht programmieren, 
weil bei jeder eingetragenen Zeile der WESPI lustige Streifenmuster 
einblendet. So lässt er sich im Betrieb einfach ein- und ausschalten.

: Bearbeitet durch User
von chris_ (Gast)


Lesenswert?

>Jetzt hat der ZX81+38 auch noch eine PIO-Karte bekommen.

Unter künstlerischen Aspekten macht das farbige Bild auf jeden Fall 
etwas her ;-)


>chris_ schrieb:
>> Wenn ich es richtig verstehe, ist MIC das Signal zum Kassettenrekorder
>> und mit den gezeigten Komponenten muss es ziemlich schwach sein: 47pf in
>> Reihe mit 1MOhm auf 1K Last. Das wären bei 5V und hohen Frequenzen
>> gerade mal 5mV Signal. Soll das reichen?
Soul E. schrieb:
>Nein. Damals empfahl jede zweite Bastlerzeitschrift 100 k bzw 470 pF
>parallel zu schalten.
>Und mit Leseverstärkern ("Impulsputzer") wurde auch viel Umsatz gemacht.

Mikrofonsignale sind ziemlich schwach und ich gehe davon aus, dass die 
Kassttenrecorder so einen Eingang hatten.

Ich nehme mal die Werte aus der Wikipedia
https://de.wikipedia.org/wiki/Mikrofonsignal

 1/4-Zoll-Kapseln 5 bis 10 mV/Pa

und für die Lautstärke

https://de.wikipedia.org/wiki/Lautst%C3%A4rke

und für die Lautstärke daraus die eines Fersehers mit 0.02Pa

Daraus lässt sich die Spannung berechnen:

V = 5mV/Pa * 0.02Pa = 0.1mV = 100uV

Da wäre das errechnete Signal des Zx81 mit 5mV schon ordentlich darüber.

Die Frage ist, wie es sich mit den Audioeingängen am PC oder Laptop 
verhält.
Line Out sollte sich im Bereich um 1VSS bewegen:

https://en.wikipedia.org/wiki/Line_level

Sind die Audioeingänge heutzutage Line-Level oder Mikrofon-Level?

von Dirk S. (fusebit)


Lesenswert?

Nach meiner Erfahrung ist es in der Regel line-level.

von Soul E. (Gast)


Lesenswert?

Der Zeddy erwartet Mikrofon und Kopfhörer. Line In ist zu unempfindlich, 
Line Out zu leise.

von Martin D. (mahjongg)


Lesenswert?

Entsprechend den Audioeingängen eines PCs können Sie dann über den 
Line-Level-Eingang die Farbe des Anschlusses des Mikrofonpegels 
ermitteln.
Die Mikrofonpegeleingänge sind rosa und die Linepegeleingänge hellblau.

von chris_ (Gast)


Lesenswert?

>Die Mikrofonpegeleingänge sind rosa und die Linepegeleingänge hellblau.

Danke, sehr gut. Jetzt habe ich wieder mal was Neues gelernt.

von chris_ (Gast)


Angehängte Dateien:

Lesenswert?

Ich habe meinen alten Joystick aus der Homecomputer-Aera wieder 
gefunden.
Im Anhang ein kleines Testprogramm in ZX81 Basic.

von chris_ (Gast)


Angehängte Dateien:

Lesenswert?

@Moderator: Beim Bild im vorigen Post fehlt die Dateiendung, so dass man 
die Vorschau nicht sehen kann. Vielleicht kannst Du das ändern ....

von chris_ (Gast)


Angehängte Dateien:

Lesenswert?

Um das Jahr 1984 herum hatte ich ein Spiel in Basic programmiert. Es 
nannte sich "MonsterCrash". Leider habe ich die Kassette von damals 
nicht mehr gefunden. Deshalb habe ich mal versucht, das Spiel aus dem 
Gedächtnis heraus  "nachzuprogrammieren".
Es lief auf meinem 2K RAM ZX81 und war quasi ein in BASIC geschriebenes 
Echtzeitspiel, wobei "Echtzeit" hier eine etwas langsame Echtzeit ist.
Man muss in dem Spiel vor immer wieder neu auftauchenden Monstern 
weglaufen und sich hinter Steinen verstecken. Die Langsamkeit mach hier 
einen Teil des Reizes des Spiels aus: Man kann nämlich nicht schneller 
als die Monster laufen und muss sich während der Bewegung schon genau 
die nächsten Schritte überlegen.
Das Spiel habe ich jetzt auf der Tastatur des ZX81plus38 programmiert 
und es kommt tatsächlich das Retro-Feeling auf: Die Anzahl der Zeichen 
auf dem Bildschirm ist klein und Kommentare sollte man wegen des 
Speicherverbrauchs keine verwenden. Außerdem bin ich es nicht mehr 
gewohnt, dass es keine lokalen Variablen in den Funktionen gibt und zum 
"IF" sehe ich nirgends ein "ELSE".

von Alex P. (ra_p)



Lesenswert?

Ich hab version 1.6 gebaut.


!!!!!!!! Es funktioniert !!!!!!!!


Ich hab die Chips direkt gelötet ohne Sockel. Der schwarze Hintergrund 
muss ich ändern, ich mag die schwarze Buchstaben auf weisse Hintergrund.

Gleich schliße ich noch die neuen Tastatur.

von Dirk S. (fusebit)


Lesenswert?

Sehr gut, aber sollte schwarz auf weiß nicht eigentlich voreingestellt 
sein?

Hast Du die Schaltung ohne RP2 in Betrieb, oder waren die Pull-ups für 
die Datenleitung nur beim Foto noch nicht bestückt?

: Bearbeitet durch User
von Alex P. (ra_p)



Lesenswert?

Mit angeschloßener Tastatur.

Ich hab es nicht bestückt, ich wollte es schnell probieren. 
Vorinstalliert scheint weiße Buchstaben auf schwarzes Bild.

U11 ist irgendwie zu nah am U23 und U24 auf U14, ich hab die Chips ein 
bisschen friessiert, nicht so super schön, aber geht es.

Frisst keine 50 mA mit nur HC und HCT typen.

Eine interessante effekte war als ich einen 150 ns EEPROM benutzt habe, 
die Buchstaben hatten einen "Schatten"  oder so, mit dem 200 ns EEPROM 
geht gut, warscheinlich liegt an hold time.

Hast du die Platinen schon ?

: Bearbeitet durch User
von Mahjongg (Gast)


Lesenswert?

meinst du mich? (martin).

Nein, noch nicht, aber ich kann durch die letzte Sperre auch nicht zu 
Revspac gehen. Nur im Notfall und nur 5 Personen können anwesend sein.
Vielleicht kann ich mir einen Lötkolben und ein paar fehlende Sachen 
(Steckdosen und Audioanschlüsse) ausleihen. und zu Hause anfangen zu 
bauen. Wenn Sie einen weißen Bildschirm wünschen, müssen Sie die beiden 
Jumper konvertieren, die dafür dienen. Ich denke, Sie müssen Spuren 
zwischen den Jumpern JP5 und JP6 schneiden. Anscheinend habe ich die 
falsche Einstellung als Standardeinstellung gewählt.

von Dirk S. (fusebit)


Lesenswert?

Habe gerade die Platinen erhalten.
Sehen super aus, vielen Dank.

Welche Taster hast Du für die Tastatur vorgesehen?

von chris_ (Gast)


Angehängte Dateien:

Lesenswert?

Praktischerweise habe ich meinen ZX81 noch, den ich 1982 gekauft habe.

Im Moment läuft er nicht mehr, weil er über die ersten Jahre etwas 
gelitten hat. Erst habe ich einen Reset-Taster und eine DIN-Buchse als 
Joystickanschluss in das Gehäuse gebaut. Dann habe ich einen 74LS138 auf 
den Z80 als Adressdecoder für die HiRes Graphik gelötet. Später ist er 
dann zum EPROM-Brenner mutiert ( das große, rechteckige Loch im Gehäuse 
und die Schalter oben).

von chris_ (Gast)


Lesenswert?

Hier mal was für Software-Interessierte: Ein Emulator-Generator, mit 
auch schon ein Zx81 Emulator generiert wurde:

https://hackaday.com/2020/11/06/procedurally-generated-retrocomputer-emulators/#more-445064

von chris_ (Gast)


Lesenswert?


von chris_ (Gast)



Lesenswert?

Im Moment experimentiere ich gerade mit dem Debugger. Mit der Taste "w" 
kann man die Wait-Leitung ziehen und die Adressen und die Daten 
auslesen, also "Single-Step" machen.
Im Schaltplan von Ale muss man den Inverter U3D durch eine Diode 
zwischen PIN 12 ( Kathode ) und Pin 11 ( Anode ) ersetzen.

Der Debug-Log ist interessant: An den Adressen 0xCxxx sollte kein Code 
sein. Ich vermute, dass da der Videogenerator übernommen hat.
Im Bereich von 0x38 .. 0x44 befindet sich der Prozessor im 
Video-Interrupt. Wenn man debugged, sieht man, dass der Prozessor die 
meiste Zeit in diesen Regionen seine Zeit verbräht.

https://cdn.hackaday.io/files/289631239152992/ZX81_dual_2018-02-09.htm
1
MARK_0038:
2
INTERRUPT:
3
  DEC  C    ; (4)  decrement C - the scan line counter.
4
  JP  NZ,SCAN_LINE  ; (10/10) JUMP forward if not zero to SCAN_LINE
5
6
  POP  HL    ; (10) point to start of next row in display 
7
        ;  file.
8
9
  DEC  B    ; (4)  decrement the row counter. (4)
10
  RET  Z    ; (11/5) return when picture complete to R_IX_1_LAST_NEWLINE
11
        ;  with interrupts disabled.
12
13
  SET  3,C    ; (8)  Load the scan line counter with eight.
14
        ;  Note. LD C,$08 is 7 clock cycles which 
15
        ;  is way too fast.
16
17
; ->
18
19
mark_0041:
20
WAIT_INT:
21
;
22
; NB $DD is for 32-column display
23
;
24
  LD  R,A    ; (9) Load R with initial rising value $DD.
25
26
  EI      ; (4) Enable Interrupts.  [ R is now $DE ].
27
28
  JP  (HL)    ; (4) jump to the echo display file in upper
29
        ;  memory and execute characters $00 - $3F 
30
        ;  as NOP instructions.  The video hardware 
31
        ;  is able to read these characters and, 
32
        ;  with the I register is able to convert 
33
        ;  the character bitmaps in this ROM into a 
34
        ;  line of bytes. Eventually the NEWLINE/HALT
35
        ;  will be encountered before R reaches $FF. 
36
        ;  It is however the transition from $FF to 
37
        ;  $80 that triggers the next interrupt.
38
        ;  [ The Refresh register is now $DF ]

von Soul E. (Gast)


Lesenswert?

chris_ schrieb:

> Der Debug-Log ist interessant: An den Adressen 0xCxxx sollte kein Code
> sein. Ich vermute, dass da der Videogenerator übernommen hat.

Richtig. Guck Dir mal an wie der ZX81 sein Videobild erzeugt. Die CPU 
wird als Adresszähler missbraucht und führt den Bildschirmspeicher 
+0x8000 als Programmcode aus. Da die Videodaten natürlich keinen 
sinnvollen Code ergeben schließt man die Datenleitungen im Fetch-State 
einfach gegen Masse kurz. Der Prozessor sieht dann 0x00, also NOP, 
während das echte Byte aus dem RAM bei 0xC... (in Wahrheit 0x4... 
unvollständig auscodiert) von der Videologik genutzt wird.

Eine Zeile endet immer mit 0x76, dass ist der HALT-Befehl. Der wird 
nicht kurzgeschlossen, sondern gelang zum Z80. Dieser bleibt stehen, 
aber sein Refresh-Zähler läuft weiter und gibt regelmäßig neue Adressen 
aus. Wenn der Adresszähler weitergelaufen ist bis A6 = 0 wird gibt es 
einen /INTerrupt und die nächste Zeile beginnt

> Im Bereich von 0x38 .. 0x44 befindet sich der Prozessor im
> Video-Interrupt. Wenn man debugged, sieht man, dass der Prozessor die
> meiste Zeit in diesen Regionen seine Zeit verbräht.

Der Geschwindigkeitsunterschied zwischen dem SLOW-Mode mit Bilderzeugung 
und dem FAST-Mode ohne diese ist gewaltig. Der klassische ZX81-Benchmark 
war eine FOR-NEXT-Schleife bis 5000, die kann man mit einer Stoppuhr 
vermessen.


Wenn Du nicht gerade die Bilderzeugung selber debuggen willst, dann 
würde ich die überspringen. Dein Debugger weiss ja wo der Prozessor 
gerade rumrennt.

von chris_ (Gast)


Lesenswert?

Soul E. (souleye)
>Eine Zeile endet immer mit 0x76, dass ist der HALT-Befehl. Der wird
>nicht kurzgeschlossen, sondern gelang zum Z80. Dieser bleibt stehen,
>aber sein Refresh-Zähler läuft weiter und gibt regelmäßig neue Adressen
>aus. Wenn der Adresszähler weitergelaufen ist bis A6 = 0 wird gibt es
>einen /INTerrupt und die nächste Zeile beginnt

Danke für Deine ausführliche Erklärung.
Im Dump sieht man bei 0xC1E8 den Zeilenenden-Code 0x76.
Was mir da unklar ist: Wie merkt der NOP-Generator, dass er die 
Datenleitung nicht auf 0 ziehen soll, sondern den Halt-Befehl 
durchlassen?

>Wenn Du nicht gerade die Bilderzeugung selber debuggen willst, dann
>würde ich die überspringen. Dein Debugger weiss ja wo der Prozessor
>gerade rumrennt.

Das ist eine gute Idee, ich habe auch schon dran gedacht. Vielleicht 
sollte man einen Disassembler einbauen, damit man den Hex-Code nicht 
selbst interpretieren muss.

von chris_ (Gast)


Angehängte Dateien:

Lesenswert?

Mittlerweile habe ich einen Disassembler mit eingebaut. Sieht optisch 
schon mal nicht schlecht aus.

Das "Skippen" der ungewollten Bereiche funktioniert leider noch nicht 
ganz ( Ich sehe leider den Fehler gerade nicht ... ).

Noch einen kleine Hinweis zum Debugger-Layout von ALE: Das ist noch auf 
die ZX81plus38 Version 1.4 mit vertauschten Adressleitungen ausgelegt. 
Es muss also auf jeden Fall angepasst werden, wenn man die Version 1.6 
hat.

von Soul E. (Gast)


Lesenswert?

chris_ schrieb:

> Was mir da unklar ist: Wie merkt der NOP-Generator, dass er die
> Datenleitung nicht auf 0 ziehen soll, sondern den Halt-Befehl
> durchlassen?

Bei Deinem ZX81plus38 macht das U27, beim ZX97lite U19. Eigentlich wird 
nur D6 ausgewertet, das Bit muss High sein.

von chris_ (Gast)


Angehängte Dateien:

Lesenswert?

Danke für die Erklärung. D7' hängt aber auch am 74LS138 Decoder.

Q6 oder Q7 sind 0 wenn

nHalt=1
D6'=0
D7'=0 oder 1
nM1=0
A14=1
A15=1

von Alex P. (ra_p)


Lesenswert?

Ich glaube daß D7 wird nur für die invertierte Chars benutzt. In 0x76 
ist bit 7 null.

von Soul E. (Gast)


Lesenswert?

Richtig, der Abgriff geht nach oben ans Flipflop. In Bezug auf D7 macht 
der '138 nur ein Nebenjob als Luxus-UND-Gatter. IIRC ist der Trick von 
Wilf, im ZX80 gab es das so noch nicht.

von chris_ (Gast)


Lesenswert?

Ok, vielleicht sollte man die Sache so zusammenfassen:

Der NOP-Generator erzeugt bei den normalen Zeichen mit dem Code 0 bis 
0x3F und und den invertierten Zeichen 0x80-0BF die NOPs .

https://www.mikrocontroller.net/attachment/479214/ZX81_Dissassambly_Interrupt.png

Interessanterweise sieht man bei dem von mir erwischten 
Programmausschnitt nach dem HALT-Befehl im Dump ein 0x80, was ein 
invertiertes Space wäre und direkt nach dem Interrupt Code das Zeichen 
0xB0, welches das invertierte "K" darstellt.

Das war wohl wirklich ein Zufallstreffer, weil normalerweise an der 
Stelle auch Nullen sind.

Mich würde mal ein einfaches Codebeispiel für eine High-Res Graphik 
interessieren.

Gefunden habe ich einen eher unübersichtlichen Code hier:
https://github.com/chancanasta/zx81HiresTest

von chris_ (Gast)


Angehängte Dateien:

Lesenswert?

Die alte Platine meines ZX81 hat eine ganz ähnliche Größe wie die 
Platine des ZX81plus38.
Auf der alten Platine sieht man das 2K RAM, welches ich damals 
eingelötet hatte, weil vorher nur 2 1Kx4Bit RAMs drinnen waren.
Später habe ich dann den 74ls138 als zusätzlichen Adressdecoder für die 
High-Res-Graphik auf den Prozessor gelötet.
Woher ich die Informationen damals dazu hatte, weiß ich nicht mehr. Aber 
vielleicht war es aus der Zeitschrift "MC" die damals für hardwarenahe 
Bastler am besten war.

von chris_ (Gast)


Angehängte Dateien:

Lesenswert?

Wie sich die Zeiten doch nicht geändert haben ;-)

https://www.kultboy.com/MC-Zeitschrift/46/

von chris_ (Gast)


Angehängte Dateien:

Lesenswert?

Heute Morgen habe ich mal den Debugger auf der Platine von Ale 
aufgebaut.

Um sie in Betrieb zu nehmen, müssen ein paar "Patches" gemacht werden.

Pin 11 vom 74LS125 muss hoch gebogen werden und ein Diode nach Pin 5 ( 
Anode ) gelegt werden.
Die nIRQ Leitung ist nicht angeschlossen. Sie wird aber gebraucht, um 
den Kontrollbus auf eine definierten Pegel zu ziehen.

Die LEDs sollten low-aktiv sein.

von Thomas S. (Gast)


Lesenswert?

ES gäbe da noch den Z80-H. Dieser macht glaub ich 8MHz. Der abgebildete 
Z80 ist die erste Generation. Denke dass der nur 4 MHz macht, oder sogar 
nur 2. Korrigiert mich. Ist schon lange, lange her. Hab auch noch nen 
ZX81 mit gigantischen 16K Arbeitsspeicher und für damals großer 
Tastatur.
Freut mich, dass solche Teile noch heute interessant sind.

von chris_ (Gast)


Lesenswert?

>ES gäbe da noch den Z80-H. Dieser macht glaub ich 8MHz. Der abgebildete
>Z80 ist die erste Generation. Denke dass der nur 4 MHz macht, oder sogar
>nur 2. Korrigiert mich.

Hallo Thomas,
danke für den Hinweis. Auf der Wikipedia Seite sind ziemlich viele 
Varianten aufgeführt ( C-MOS Version bis 20MHz ):
https://de.wikipedia.org/wiki/Zilog_Z80

Scheinbar sollte mein Prozessor die C-MOS Variante mit 20MHz sein.

https://www.mikrocontroller.net/attachment/472315/Zx81_plus38_1.png

Die Stromaufnahme ist aber so hoch, dass im Moment im Raum steht, dass 
es möglicherweise eine gefakte China NMOS-Version ist.


>Ist schon lange, lange her. Hab auch noch nen
>ZX81 mit gigantischen 16K Arbeitsspeicher und für damals großer
>Tastatur.
>Freut mich, dass solche Teile noch heute interessant sind.

Mach doch mal ein Bild und stelle es hier rein, das interessiert 
bestimmt einige.

von chris_ (Gast)


Lesenswert?

Hier gibt es ein Forum mit schönen ZX81 Bildern:
https://www.videospielgeschichten.de/?s=zx81

von Soul E. (Gast)


Lesenswert?

Da kannst Du auch direkt ins ZX81-Forum gehen: 
https://forum.tlienhard.com/phpBB3/viewforum.php?f=2

von Alex P. (ra_p)


Lesenswert?

Meine Z84C0020 sind auch NMOS varianten: haben nur ~3.5 HI Pegel und 
fressen um die 100 mA um 5 V.  Die CMOS Variante, was ich bei Reichelt 
gekauft habe, frisst fast nichts und hat ~5 V HI Pegel.

Die Tasten die ich für die Tastatur Platine vergesehen habe sind z.B. 
diese:

https://de.aliexpress.com/item/1005001437819067.html?spm=a2g0o.productlist.0.0.52aa73da1e4oq7&algo_pvid=91e144a5-f47d-4d9c-a01d-3543a728e98d&algo_expid=91e144a5-f47d-4d9c-a01d-3543a728e98d-45&btsid=2100bdca16055444291261913e0f86&ws_ab_test=searchweb0_0,searchweb201602_,searchweb201603_

Ich hab irgend ein Angebot gekriegt 110 Stk. für 26 €.

von Sascha I. (s_ittner)



Lesenswert?

Hallo zusammen,

der letzte Beitrag ist schon etwas länger her, aber vielleicht ist das 
hier ja dennoch interessant. Ich habe die Rev 1.6 der Platine gebaut. 
Erst mal vielen dank an Martin für die tolle Arbeit. Genau so eine 
Platine stand schon lange auf meiner Wunschliste. Einige Dinge sind mir 
dabei aufgefallen.

Zwei kleine Bugs betreffen die Tape-Buchsen CO2/CO3 und den 
Tastaturanschluss J3. Bei den Klinkenbuchsen ist die Leiterbahn zum 
Anschluss des Rings geführt, nicht zu der Spitze (wie im Schaltplan). 
Und J3 sitzt im Vergleich zum ZX81 180 Grad verdreht. Ich habe das mit 
einer ZX81-Tastatur getestet.

Das andere Thema ist etwas komplizierter. Nach dem Zusammenbau habe ich 
gemerkt, dass zwar so etwas wie Zeichen an der richtigen Position 
erscheinen, allerdings nur irgendwelche Bitmuster. Es sieht so aus, als 
ob die Zeichen-Pattern während des Refresh-Zyklus nicht richtig im 
Schieberegister ankommen. Bei der Messung (scope-cpuclk-notinv.png) habe 
ich dann gesehen, dass der Ladeimpuls nur 21ns nach nRFSH=0 kommt. Das 
kann mit schnellem ROM funktionieren, allerdings habe ich 100ns EPROMs 
verwendet. Für die ist das zu schnell. Nach dem Invertieren des CPU-Takt 
sieht die Sache viel besser aus (siehe scope-cpuclk-inv.png) und 
funktioniert auch wie erwartet. Für den Fix braucht es einen Inverter, 
nur leider ist keiner mehr frei. Allerdings lässt sich U18A als Inverter 
benutzen (siehe fix-cpu-clk.png). Bitte gebt mal Info, wenn ich bei der 
Sache auf dem Holzweg bin.

Mechanisch gibt es noch ein Punkt mit der Position der Löcher und der 
Buchsen. Nicht dramatisch, aber vielleicht für die nächste Version eine 
Betrachtung wert. Ich habe mir mal die Mühe gemacht eine Originalplatine 
auszumessen und das Ergebnis als DXF-File angehangen. Messgenauigkeit im 
Rahmen des für mich möglichen mit Brille und analogem Messschieber :-)

Zu guter Letzt hätte ich noch ein Vorschlag/Wunsch zum Adressdecoding, 
um 32k ROM und 32k RAM nutzen zu können. Dabei springen sogar zwei 
Spare-Gates raus:
U24A.3 auf A14 des RAMs
A14 an U23D.12/U21F.13
A15 an A14 des EPROMs
U23A und U23B entfallen.

Das Layout wäre dann:
1
$0000 - $3ffff : untere Hälfte EPROM
2
$4000 - $7ffff : untere Hälfte RAM
3
$8000 - $Bffff : obere Hälfte EPROM (nur Daten, kein Code)
4
$C000 - $Fffff : obere Hälfte RAM (nur Daten, kein Code)

Hat echt nochmal Spass gemacht, sich mit dem Rechner so intensiv zu 
beschäftigen, mit dem für mich alles mal angefangen hat. Noch mal 
herzlichen Dank an Martin.

Schöne Grüsse
Sascha

von Alex (Gast)


Lesenswert?

Ich hab mit schnellen EEPROMs (150 ns, 28C256 bei Reichelt gekauft) 
probleme bei der darstellung des Bilds gehabt, mit 200 ns EEPROMs 
(aliexpress wer weiß was original war) ging gut, aber ich musste die 
beide messen um zu wiessen welche Zugriffszeit es in wirklichkeit...

von Hobby I. (nitro2)


Angehängte Dateien:

Lesenswert?

Erstens mal danke an alle die mitarbeitet haben !!
Tolles projekt .
aber jetzt ;


Hilfe notwendig ,

alles aufgebaut , version 1.6 platine und nur ein eigenartiges bild auf 
dem bildschirm ( 1839) .

Nach 10-15 sekunden ändert sich dass bild langsam
und sieht folgend aus (1852) und bleibt unverändert solange den klon 
eingeschaltet ist.

er reagiert auf die tastatur , aber nur mit dieser art von "graphik"

: Bearbeitet durch User
von chris_ (Gast)


Lesenswert?

>Nach 10-15 sekunden ändert sich dass bild langsam

Heißt das, dass es am Anfang korrekt funktioniert?
Ich versucht mal das Bild zu interpretieren: Es wird auf jeden Fall ein 
Speicher ausgelesen, da sich die Pixel über die Zeilen wiederholen. Ob 
das RAM oder ROM ausgelesen wird, kann man nicht sagen. Die Zeilen sind 
immer gleich, möglicherweise funktioniert der Zeilenaddressgenerator 
nicht richtig.
Vielleicht hilft das für die Suche weiter ...

von Hobby I. (nitro2)


Lesenswert?

Heißt das, dass es am Anfang korrekt funktioniert?

nein ,

bild ist immer dass gleiche ( position stimmt mit dem K )  1839 aber est 
ist eine art von grafic-character darstellung dis sich einmalich ändert 
1852 und dan stabil bleibt für stunden .

so sieht recht aus als die info im beitrag vom Sascha hier oben.

wass brauch ich um ein cat28c256 laufen zu lassen ??

denn dass ist mir nicht ganz klar ;
auf dem pcb verbindung nach pin1 durcg-ziehen , dann pin 27 mit 1 
verbinden , aber wass muss ich mit j10 anfangen ??

von Hobby I. (nitro2)


Angehängte Dateien:

Lesenswert?

Ok , jetzt bin ich recht "lost " .

laut die schematik ;

"cut trace to disconnect pin 1 for 28c256 if you want to connect a14 to 
pin 1 with patch wire " und weiter ,  "also switch over JP10 ".

pin1 is vpp so mit vss verbunden , dann trennen,  und pin 1 mit 27 
verbinden - der liegt an masse - , und dann JP10 umsetzen - so dann ist 
wieder 5 volt auf pin 1

wass verstehe ich hier nicht ??

: Bearbeitet durch User
von chris_ (Gast)


Lesenswert?

Meiner Erinnerung nach hatte ich auch Probleme mit dem Adressdekoder.
Wenn das Zeichensatz ROM nicht detektiert wird, wenn darauf zugegriffen 
wird, kann man das feststellen, wenn man die Prozessorpins anfasst und 
sich das Zeichen im Bild ändert. Das Muster, welches man sieht, kann 
noch von den vorigen Zugriffen auf andere Bereiche stammen, deren 
Überreste noch kapazitiv auf den Leitungen hängen.

von Hobby I. (nitro2)


Lesenswert?

Danke Chris ,

inzwischen auch den cat28c256 laufend bekommen .

leider ändert sich nichts im bild .

hoffentlich kann Sascha alle verbindungen der er gemacht hat mit dem 
reverse-clock mal veroffentlichen , dann versuche ich die option auch 
mal .

von Hobby I. (nitro2)


Lesenswert?

@  Sascha I. (s_ittner)


wenn möglich ,

bitte mal die umbau vom clock-signal in text veröffentlichen .

ich weis nicht welche punkte ich isolieren muss


gruss ,

nitro2

von Sascha I. (s_ittner)


Lesenswert?

Ich habe den Takteingang der CPU (PIN 6) invertiert. Die Schaltung dazu 
ist hier gezeigt: 
https://www.mikrocontroller.net/attachment/539815/fix-cpu-clk.png

von Hobby I. (nitro2)


Lesenswert?

möchte gern wissen welche pins du fur dieser modification alle isoliert 
haben , und welche pins miteinander verbunden sind .

denn ich sehe auch verbindungen zum  , U5 und U3 , buchse und U24 ?

leider ist dass photo nicht deutlich genug ( muss mein alter sein ) .

danke

hobby i

: Bearbeitet durch User
von Hobby I. (nitro2)


Lesenswert?

@  Sascha I. (s_ittner)


Hast du nur pin 6 des z80 beidseitig isoliert ( u24 und buchse )  ,

damit dass invertierte signal nur an pin 6 weitergegeben werden kann ?


Hobby I.

von Hobby I. (nitro2)


Angehängte Dateien:

Lesenswert?

die anpassung von Sascha I.  mbz. rom funktioniert tatsächlich ohne 
probleme .
ich verwende ein -10 eprom .
den clone functioniert wieder ,

Danke !!

: Bearbeitet durch User
von chris_ (Gast)


Lesenswert?

Super, Gratulation zum funktionierenden Zx81 Clone :-)

von Patrick L. (Firma: S-C-I DATA GbR) (pali64)


Lesenswert?

Gibt es ein Zusammengefasstes Schema mit den Änderungen?

Ich möchte das gerne in ein Altera EPLD zusammenfassen, um die Bauteile 
wieder auf ein Minimum zu reduzieren.
Z80, RAM, ROM, EPLD, & Hühnerfutter,
DANKE

73 55

: Bearbeitet durch User
von Hobby I. (nitro2)


Lesenswert?

chris_ schrieb:
> Super, Gratulation zum funktionierenden Zx81 Clone :-)


ist aber nicht einfach weil mein platine schon komplett bestückt war , 
mann muss ein fassung wieder entfernen un einer der pins isolieren zu 
können
und beim processor hatte ich in ein strich 3 winziger 
"tracks"durchgeschnitten , wass dann wieder repariert werden müsste .

aber alles functioniert , jetzt muss ich noch irgendwo 2 billig keypads 
finden .

von chris_ (Gast)


Lesenswert?

>aber alles functioniert , jetzt muss ich noch irgendwo 2 billig keypads
>finden .

Du meinst die Tastatur? Man kann sie auch selber bauen und das Layout 
drucken. Wenn Du einen Farbdrucker und ein Laminiergerät hast, geht es 
wahrscheinlich auch noch schöner als meine Version in der 
Klarsichthülle:

Beitrag "Re: ZX81 plus38 Clone"

Das "Feeling" beim Tippen ist mit der Version gar nicht so schlecht.

von Ale (Gast)


Lesenswert?

Oder eine mit Cherry Tasten bauen wie ich gemacht habe... nicht alles 
war früher besser :), und der wiz loader mit dem esp32 ist genial

von Hobby I. (nitro2)


Lesenswert?

Da bin ich wieder ;-)

jetzt eine neue phase ,

2 dieser clonen gebaut , mod von Sascha I. verwendet ABER ;

wenn ich  load "  "  typ sturzt den clon völlich ab .

weisst jemandem ursache , und lösung ??????

von Sascha I. (s_ittner)


Lesenswert?

Hobby I. schrieb:
> @  Sascha I. (s_ittner)
>
>
> Hast du nur pin 6 des z80 beidseitig isoliert ( u24 und buchse )  ,
>
> damit dass invertierte signal nur an pin 6 weitergegeben werden kann ?
>
>
> Hobby I.

Ja, genau das ist die Änderung. Sorry für die späte Antwort. Du scheinst 
ja schon erfolgreich gewesen zu sein :-).

von Sascha I. (s_ittner)


Angehängte Dateien:

Lesenswert?

Patrick L. schrieb:
> Gibt es ein Zusammengefasstes Schema mit den Änderungen?

Weil ich die rev1.6-Platine mechanisch nicht sauber in des ZX81-Gehäuse 
bekommen habe, habe ich das Board mit den Korrekturen mal nachgezeichnet 
(https://github.com/sittner/zx81sharp).

Zusätzlich zu den oben erwähnten Änderungen hat sich noch gezeigt, dass 
die Position des Video-Out Latches falsch war (Geisterlinie am linken 
Bilschirmrand). Das ist jetzt auch korrigiert.

Den aktualisierten Plan findet ihr auch als PDF im Repos.

von Patrick L. (Firma: S-C-I DATA GbR) (pali64)


Lesenswert?

Sascha I. schrieb:
> Weil ich die rev1.6-Platine mechanisch nicht sauber in des ZX81-Gehäuse
> bekommen habe, habe ich das Board mit den Korrekturen mal nachgezeichnet
> (https://github.com/sittner/zx81sharp).

Danke für den Link :-)

von Tom T. (tom_t593)


Lesenswert?

Hallo zusammen,

ich habe die Rev 1.6 aufgebaut und bin jetzt recht ratlos.

Ich habe einen weissen Screen und unten links an der Stelle des "K" ist 
ein schwarzes Quadrat ohne Inhalt. Tippe ich etwas auf der Tastatur, 
dann wandert zwar das schwarze Kästchen, aber es werden keine Zeichen 
auf dem Bildschirm dargestellt.

HSYNC und VSYNC passen, NMI wird kontinuierlich erzeugt - mir scheint 
jedoch, die CPU schreibt keine Zeichen ins Schieberegister oder macht 
wirres Zeug?.

Ich habe schon 8K EPROM und 32K EPROM mit 4 x hintereinander 8K ROM 
gebrannt, jedoch als 16K ROM gejumpert ausprobiert - kein Erfolg.

Was mache ich falsch bzw. habe ich übersehen?

Gruß

Thomas

von Patrick L. (Firma: S-C-I DATA GbR) (pali64)


Lesenswert?

Frage Führt er den Befehl aus oder kommen nur Blank an?

Mit anderen Worten, liegt der Fehler in der Eingabe oder Ausgabe 
(Bildgenerator)?

: Bearbeitet durch User
von Tom T. (tom_t593)


Lesenswert?

Patrick L. schrieb:
> Frage Führt er den Befehl aus oder kommen nur Blank an?
>
> Mit anderen Worten, liegt der Fehler in der Eingabe oder Ausgabe
> (Bildgenerator)?

Nach einem Tastendruck wandert nur das schwarze Kästchen nach rechts. 
Ich sehe keine Zeichen und weiss nicht, ob irgendein Befehl ausgeführt 
wird.

Seltsamerweise springt der "Cursor" (Kästchen) nicht in die neue Zeile, 
wenn ein RETURN gedrückt wird.

Ich habe nun schon verschiedene ROMs ausprobiert - beim ZX81 
Original-ROM bleibt der ganze Bildschirm dunkel.

Hinzufügen muss ich, das ich einen DELL LCD Monitor mit u.a. Composite 
Eingang nutze. Das denke ich ist aber hier nicht das Problem.

von Patrick L. (Firma: S-C-I DATA GbR) (pali64)


Lesenswert?

Tom T. schrieb:
> Seltsamerweise springt der "Cursor" (Kästchen) nicht in die neue Zeile,
> wenn ein RETURN gedrückt wird.

Dan liegt der Fehler offensichtlich bei der Tastatureingabe.
Entweder in der Soft oder beim Eingangsregister(74HCT541).
Entweder wird er von der Software nicht eingelesen ($FF Code) oder der 
IC selber hat ein Timing Problem ich würde mal da suchen(U22)
https://github.com/mahjongg2/ZX81plus38/blob/master/ZX81plus38rev1%2C6.pdf

In der unteren Rechten Ecke vom Schema ;-)

: Bearbeitet durch User
von Tom T. (tom_t593)


Lesenswert?

Patrick L. schrieb:
> Tom T. schrieb:
>> Seltsamerweise springt der "Cursor" (Kästchen) nicht in die neue Zeile,
>> wenn ein RETURN gedrückt wird.
>
> Dan liegt der Fehler offensichtlich bei der Tastatureingabe.
> Entweder in der Soft oder beim Eingangsregister(74HCT541).
> Entweder wird er von der Software nicht eingelesen ($FF Code) oder der
> IC selber hat ein Timing Problem ich würde mal da suchen(U22)
> https://github.com/mahjongg2/ZX81plus38/blob/master/ZX81plus38rev1%2C6.pdf
>
> In der unteren Rechten Ecke vom Schema ;-)

Ok, danke, schau ich mal.

Jedoch habe ich dann noch immer das leere Kästchen als „Cursor“.

von chris_ (Gast)


Lesenswert?

Wenn man auf die Taste drückt und das Zeichen nach rechts springt, liegt 
die Vermutung sehr nahe, dass die Software korrekt funktioniert aber die 
Zeichendarstellung nicht.
Das kann u.a. an der falschen Adressierung des Zeichenroms liegen, oder 
dass das Schieberegister seinen Takt nicht bekommt.

von Patrick L. (Firma: S-C-I DATA GbR) (pali64)


Lesenswert?

chris_ schrieb:
> die Vermutung sehr nahe, dass die Software korrekt funktioniert aber die
> Zeichendarstellung nicht.

Nein dann würde er nach[ENTER]mindestens auf die nächste Zeile Springen 
oder mindestens den Befehl ausführen.
Aber das tut er scheinbar nicht.

Also liegt der Fehler schon in der Eingabe oder der Verarbeitung der 
Eingabe.

von chris_ (Gast)


Lesenswert?

>von Patrick L. (Firma: S-C-I DATA GbR) (pali64)
>18.02.2022 07:58

>chris_ schrieb:
>> die Vermutung sehr nahe, dass die Software korrekt funktioniert aber die
>> Zeichendarstellung nicht.

>Nein dann würde er nach[ENTER]mindestens auf die nächste Zeile Springen
>oder mindestens den Befehl ausführen.
>Aber das tut er scheinbar nicht.

>Also liegt der Fehler schon in der Eingabe oder der Verarbeitung der
>Eingabe.

Der ZX81 springt nie in die nächste Zeile, weil er nur eine Zeile hat:

Außerdem hängt das Verhalten von der Eingabe ab: Wenn man z.B. "10 Goto" 
tippt und die Zieladresse weglässt, bleibt die alte Zeile mit 
Fehlermeldung stehen.

Du kannst das direkt hier ausprobieren:
https://www.zx81stuff.org.uk/zx81/jtyone.html

von Dirk S. (fusebit)


Lesenswert?

Ein
10 PRINT "Hallo"
20 GOTO 10
RUN 10

könnte es klären :-)
Das sollte sich ja noch "blind" eintippen lassen.

: Bearbeitet durch User
von Patrick L. (Firma: S-C-I DATA GbR) (pali64)


Lesenswert?

Dirk S. schrieb:
> Ein
> 10 PRINT "Hallo"
> 20 GOTO 10
> RUN 10
>
> könnte es klären :-)
> Das sollte sich ja noch "blind" eintippen lassen.

Gute Idee +1

: Bearbeitet durch User
von Tom T. (tom_t593)


Lesenswert?

Hallo zusammen,

danke für die Tips :)

Jedoch muss der Cursor nach einem RETURN doch nach links springen - was 
er nicht macht.

Was mich wundert - wie kann die REV 1.6 bei Usern funktionieren, wenn 
Sascha in seinem "Fix" so viel ändern musste, um ihn zum Laufen zu 
bekommen...

von Patrick L. (Firma: S-C-I DATA GbR) (pali64)


Lesenswert?

Tom T. schrieb:
> Was mich wundert - wie kann die REV 1.6 bei Usern funktionieren, wenn
> Sascha in seinem "Fix" so viel ändern musste, um ihn zum Laufen zu
> bekommen..

Tja da bleibt die Frage, Laufen oder Hinken?

Ne ich denke dass die einfach Stillschweigend dran gebastelt haben biss 
es Lief.
Sascha hat einfach "Berichtet", dass die anderen auch was davon haben.
Ich binn ja auch dabei das ganze in ein FPGA zu packen, aber habe auch 
Probleme wo ich noch nicht weis ist es HW oder SW ;-)

Kann aber leider nur wenig zeit dafür aufwenden, weil ich ja im 
Arbeitsprozess bin ;-)

von Asdf Q. (Gast)


Lesenswert?

Dirk S. schrieb:

> Das sollte sich ja noch "blind" eintippen lassen.

Dazu muss man aber den ZX81 kennen :-)

Nicht etwa "1" "0" "P" "R" "I" ...  drücken, sondern "1" "0" "p" 
"shift-p" "shift-h" "a" usw. Und nach dem Drücken von "NEW LINE" bleibt 
der Cursor entweder da wo er war (dann haben wir einen Eingabefehler, 
also "shift-0" bis die Zeile leer ist und neu anfangen), oder die 
eingetippte Zeile springt an den oberen Rand des Bildschirms und die 
untere Zeile ist wieder leer.

von Tom T. (tom_t593)


Lesenswert?

Ich komme leider nicht weiter :(

Auch den Clock-Phasen "Patch" habe ich umgebaut - ändert nichts.

Ich nutze ein 27C256-200 EPROM und ein 62256-100 RAM. Ich habe auch 
schnellere RAM/ROM versucht - kein Unterschied.

Welche RAM/ROM Kombi verwendet ihr und welches ROM-Image?

: Bearbeitet durch User
von Asdf Q. (Gast)


Lesenswert?

Tom T. schrieb:

> Ich nutze ein 27C256-200 EPROM und ein 62256-100 RAM.

Ein altes RAM, oder etwas aus moderner chinesischer Produktion? Falls 
letzteres, dann steck mal testweise einen alten Chip aus den '80ern 
rein.

von Tom T. (tom_t593)


Lesenswert?

Soul E. schrieb:
> Tom T. schrieb:
>
>> Ich nutze ein 27C256-200 EPROM und ein 62256-100 RAM.
>
> Ein altes RAM, oder etwas aus moderner chinesischer Produktion? Falls
> letzteres, dann steck mal testweise einen alten Chip aus den '80ern
> rein.

Markenware, fast so alt wie ich :D :D - also locker 80er Jahre.

Welches ROM Image nutzt du?

von Dirk S. (fusebit)


Angehängte Dateien:

Lesenswert?

Mit dieser Kombination funktioniert es bei mir (Rev. 1.4 Platine auf 1.6 
gepatched)

von Thomas Schilling (Gast)


Lesenswert?

Soul E. schrieb:
> Die Freunde des Türstoppers haben übrigens auch ein eigenes Forum:
> https://forum.tlienhard.com/phpBB3/viewforum.php?f=2&f=2

Jetzt hab ich mir vor Lachen fast in die Hose gemacht, genial.
Also diese Version mit DIL müßte eigentlich ohne die Modifikation gehen.
Ich habe den ZX-81plus35 mit PSG von Mahjongg gebaut und verschiedene 
Monitore ausprobiert bis ich ein Bild bekam.

von tommi (Gast)


Angehängte Dateien:

Lesenswert?

You are definetely right Martin.
I wrote the PSG asm for reading SD with SPI (bit banging) via AY chip
and it does work. I use the ROM 2000h - 4000h for the program. After
programming the EEprom it is started with RAND USR 8200.
Basically it was necessary to use the memory above 32k to show the FAT
content with the possibility to choose the desired file to be loaded.

von rallik (Gast)


Angehängte Dateien:

Lesenswert?

Hi,

ich hab mir den ZX81+38 Rev 1.6 gebaut.

leider bekomme ich kein ordentlichen Bild zustande.


Der Takt sieht gut aus.

Habe ein  OT-Eprom mit 32kB = 4xZX81-ROM gebrannt.

Speicher ist auch 32kB..

Die Adresssignale zeigen Aktivität und sehen in Ordnung aus.

Die Datenleitungen sehen aber eher bescheiden aus! Woran kann das 
liegen?

Muß ich noch irgendwelche Jumper setzten?

Leider sind die Jumper nicht wirklich gut beschrieben, ich habe 
zumindest nichts gefunden.

Danke

von Apollo M. (Firma: @home) (majortom)


Lesenswert?

rallik schrieb:
> Die Datenleitungen sehen aber eher bescheiden aus! Woran kann das
> liegen?

Die sehen eher ganz normal aus, weil die Data Port lines nur gültig zu 
den entspr. RD/WR Timing sein müssen. Du musst also parallel die RD/WR 
Signale mit anzeigen um das sicher beurteilen zu können.

Zu undefininierten Zeiten sind die Data Port Lines (wie auch die Address 
Lines) im floating Zustand und das sieht dann genau so aus, wie gezeigt.

von Burkhard T. (mikro-tiger)


Lesenswert?

@tom_t593 - hast Du schon eine Lösung gefunden?
Bei meinem Zusammenbau habe ich exakt das gleiche Problem: schwarzes 
Quadrat statt eines Grafikzeichens und das bewegt sich bei der 
Tastatureingabe. Statt der jeweiligen Zeichen (Zahl, Buchstabe pp.) wird 
als nur dieser kleine schwarze Klotz angezeigt :(
Ich habe auch fast den Verdacht, dass es am ROM oder einer falschen 
Adressierung liegt. In welchen Speicherbereich muss das ZX81-ROM geladen 
werden? Ab Adresse 0 oder 4000? Muss der Bereich bis 4000 frei bleiben 
oder muss das ROM in alle Bereiche kopiert werden?
Die Invertierung an Pin 6 der CPU (der Vorschlag von @s-ittner) hat 
leider auch nichts gebracht ...

von martin de jong (Gast)


Lesenswert?

probiere mal fur U21 ein 74HC04 oder 74HCU04 zu benutzen
Ein 74HC14 is eigentlich nicht nutzbar fur ein xtal generator

Ich werde ein neues BOM fur zx81+38 revision 1.6 aufloaden.

von Andreas Rückert (Gast)


Lesenswert?

Im forum64 gibt es auch einen Thread zum Thema, wo einige Fehler 
gefunden wurden:

https://www.forum64.de/index.php?thread/126399-first-run-zx81-38-replika-l%C3%A4uft-nicht/&postID=1851371#post1851371

von Burkhard T. (mikro-tiger)


Lesenswert?

Hallo,
hatte schon gar nicht mehr mit einer Antwort gerechnet ...
Mit dem 74HC04 habe ich den gleichen Effekt (Cursor ohne Zeichen, also 
nur ein schwarzes Quadrat).
Der "forum64"-Thread endet leider auch mit genau der gleichen 
Fehlerbeschreibung, ohne das dafür eine Lösung zu erkennen ist.
Ich werde am Wochenende mal versuchen die Widerstandswerte R20, R29 und 
Kondensator C7 zu ändern ...

von Andreas Rückert (Gast)


Lesenswert?

Aber dort wurde der Fehler doch durch den gedrehten Takt behoben. 
Manfred hat so ja seine 5 zx81 ans Laufen bekommen.

von Burkhard T. (mikro-tiger)


Lesenswert?

Andreas, Du hast recht - ich bin beim "rumklicken" auf diesem Thread 
gelandet:
https://www.forum64.de/index.php?thread/120295-zx81-38-und-tastaturma%C3%9Fe/&pageNo=4
Den "gedrehten Takt" hatte ich bereits versucht - ich werde aber alles 
nochmal genau nachprüfen. Allerdings hat mich das Board bisher dermaßen 
frustriert, dass es mich schon etwas Überwindung kostet hier wieder Zeit 
zu investieren ...
Ich habe gerade ein ZX81NU-Board kurz vor der Fertigstellung (warte noch 
auf den Quarz) und lasse mich überraschen, wie das Teil funktionieren 
wird.

von Tom T. (tom_t593)


Lesenswert?

Burkhard T. schrieb:
> Ich habe gerade ein ZX81NU-Board kurz vor der Fertigstellung (warte noch
> auf den Quarz) und lasse mich überraschen, wie das Teil funktionieren
> wird.

Das ZX81NU Board funktioniert auf Anhieb. Unbedingt jedoch darauf 
achten, das die jeweiligen IC den erforderlichen Logik-Typen 
entsprechen!!

von Burkhard T. (mikro-tiger)


Lesenswert?

Habe mittlerweile auch noch einmal alle Verbindungen der 
Inverterschaltung am ZX81+38 überprüft. Das Ergebnis ist nur, dass das 
Cursorquadrat jetzt eher einem Rechteck entspricht. Ich habe deshalb 
beschlossen, mich nicht weiter mit dem ZX81+38 zu beschäftigen :(

Gerade kam der Quarz und der PIC-IC vom chinesischen "ali" - eingelötet 
und das ZX81NU Board meldet nach dem Einschalten sofort 32KB ROM und 
80KB RAM !! Selbst das LED-Display (zeigt ZXNU an) hatte ich verbaut. Da 
hat sich die Bastelzeit tatsächlich gelohnt! :)

: Bearbeitet durch User
von chris_ (Gast)


Lesenswert?

>Ich habe deshalb beschlossen, mich nicht weiter mit dem ZX81+38 zu beschäftigen 
:(

Ja, das Projekt ist ziemlich herausfordernd. Abgesehen von den bekannten 
Fehlern der Vorgängerversion (die in diesem Thread auch dokumentiert 
sind), war bei mir das größte Problem unterschiedlicher Logiktypen. Ich 
hatte die Bauteile von einem Freund bekommen und nicht bemerkt, dass es 
verschiedene Logikfamilien waren (HC und LS passen nicht zusammen).
Nach langer hier im Thread dokumentierter Arbeit lief es dann aber.
Auch eine Fehlerquelle kann die Addressdekodierung sein. Bei mir sind 
die 8K ROM Bereiche dupliziert.

von Burkhard T. (mikro-tiger)


Angehängte Dateien:

Lesenswert?

chris_ Du hast meinen Nerv getroffen: Herausforderungen sind genau das, 
was ich suche. Habe alle IC's aus den Fassungen gezogen (eigentlich nur 
um diese zu retten, bevor das Board in die "Tonne" kommt) und da sah ich 
etwas seltsames: der Kontakt für PIN 2 der IC-Fassung U12 ragte aus der 
Fassung heraus! Irgendwie muss der Kontakt beim Einlöten irgendwie 
"verrutscht" sein. Dadurch war der "Federdruck" für Pin2 beim Einsetzen 
des IC nicht gegeben. Die Fassung also nochmal nachgelötet und den 
Kontakt dabei hineingedrückt. Danach alle IC wieder eingesetzt - das 
wird doch wohl nicht der Fehler gewesen sein?
Also Monitor angeschlossen und USB-Power ON --- Cursor zeigt nun in 
aller Deutlichkeit das vertraute K !!! Tja, manche Herausforderungen 
sind wirklich sehr speziell ...
- Das Bild von der defekten Fassung ist leider doppelt - ich wollte das 
eine durch das andere ersetzen, da die Bezeichnung falsch war :(

[Mod: Doppeltes Bild gelöscht]

: Bearbeitet durch Moderator
von Andreas Rückert (Gast)


Lesenswert?

Super! Der kleine zx81 ist doch aller Mühen wert!!!

von chris_ (Gast)


Lesenswert?

>Also Monitor angeschlossen und USB-Power ON --- Cursor zeigt nun in
>aller Deutlichkeit das vertraute K !!! Tja, manche Herausforderungen
>sind wirklich sehr speziell ...

Herzlichen Glückwunsch zum funktionierenden Zx81 Clone :-)
Was die Fassungen anbelangt: Aus diesem Grund verwende ich seit Jahren 
nur noch Fassungen mit 'gedrehten' Pins.

von Martin D. (mahjongg)


Lesenswert?

Ich möchte berichten, dass ich kürzlich Version 1.7 meines 
ZX81+38-Designs auf GitHub hochgeladen habe.
Die Änderungen gegenüber Revision 1.6 sind minimal, aber die wichtigste 
Änderung in der Praxis ist der Austausch von U21, dem für den 
Quarzoszillator verwendeten Inverter, davor war ein 74HC14 vorgesehen, 
das war leider ein blöder Fehler, da es sich um einen 
Schmitt-Trigger-Inverter handelt also irgendwie der schlechteste 
Inverter, den man für einen Quarzoszillator wählen kann! Stattdessen ist 
es viel besser, sich für einen normalen 74HC04 oder noch besser für den 
ungepufferten 74HCU04 zu entscheiden. Ich habe auch den 
Rückkopplungswiderstand, der den Wechselrichter zwingt, sich wie ein 
linearer Wechselrichter zu verhalten, von 2M2 auf 1M gesenkt.
Weitere kleinere Änderungen sind, dass ich den ROM-Speicherplatz (für 
das ROM reservierter Adressraum) von 8 KB auf 16 KB erhöht habe, um das 
ROM von einem 8-KB-ROM auf ein 16-KB-ROM zu erweitern, dies für die 
zukünftige Option, Firmware für a Zukünftiges Erweiterungsboard mit 
einem AY-3-8912 PSG-Board (ZONX81-kompatibel) mit einer 
SD-Kartenschnittstelle, die über den GPIO-Port des PSG-Chips gesteuert 
wird. Mit der Firmware können Sie dann einfach aus einem Bildschirmmenü 
aus bis zu 26 verschiedenen .ROM-Dateien diejenige auswählen, die viel 
schneller geladen wird als über eine Kassette (bis zu 10-mal schneller). 
Auf diesem Board fange ich mal schnell an, eine Version für meinen 
älteren ZX-81 Klon, den ZX81+35 ist schon fertig.
Abschließend habe ich den Stecker für die 5 Datenleitungen der Tastatur 
um 180 Grad gedreht, da sich die Ausrichtung dieses Steckers als falsch 
herausstellte. jetzt ist das Tastaturinterface für die originale 
Tastaturfolie eines ZX-81 geeignet (eine passende Tastaturplatine kommt 
später).
Lesen Sie mehr darüber auf meinen Seiten in www.revspace.nl und im 
Offtopic-Bereich des Raspberry PI-Forums. Über Revision 1.6 höre ich von 
verschiedenen Seiten, dass mein ZX81+38 (abgesehen vom Quarzoszillator) 
damit zufriedenstellend arbeitet.
Ich habe jetzt meine eigene Kopie davon gebaut (mit IC-Sockeln) und 
jetzt, da ich den Kristallsozillator zum Laufen gebracht habe, werde ich 
das Board bald bauen und testen.
Also habe ich in der Zwischenzeit die Gerber-/Bohrdateien auf GitHub 
hochgeladen, sowie eine Tabelle der neuesten (Rev 1.7) BOM (Stückliste) 
mit mehr Quellen, wo diese Teile gekauft werden können, als nur bei 
Farnell. Und endlich habe ich eine korrigierte Bauzeichnung 
veröffentlicht, um den Bau zu erleichtern.

Mit freundlichen Grüßen, Martin de Jong (alias Mahjongg), der Designer 
des ZX81+38.

von Martin D. (mahjongg)


Lesenswert?

Ich versuche, mich beim anderen Forum "forum64" zu registrieren, um 
Kommentare im Thread "First Run ZX81+38 Replika läuft nicht" zu 
beurteilen, aber leider schlägt die Registrierung fehl. Auf die 
Sicherheitsfrage, wer den 6502 erfunden hat, antworte ich "Chuck 
Peddle", aber diese Antwort wird als ungültig zurückgewiesen.
Ich erhalte auch keine Registrierungs-E-Mail.
Vielleicht verstehe ich nicht richtig.

Ich denke nicht, dass das Invertieren der CPU-Uhr wirklich notwendig 
ist, und verstehe nicht, warum die Audioanschlüsse falsch verdrahtet 
sein sollten. Genau aus diesem Grund möchte ich meinen ZX81+38 selbst 
umbauen, damit ich meine eigenen Messungen und Schlüsse ziehen kann.

Leider leide ich immer noch unter "long covid"-Phänomenen, dies und die 
Schließung meines Makerspace Revspace.nl wegen covid erklärt, warum ich 
dies nach fast zwei Jahren immer noch nicht konnte.
Hoffentlich habe ich bald mein eigenes Exemplar.

Wenn wirklich weitere Verbesserungen notwendig sind, werde ich sie 
sicherlich implementieren, ich habe einen echten ZX-81, um die 
mechanischen Einstellungen zu überprüfen und mit einer echten 
ZX-81-Tastatur zu testen. Eine korrigierte Tastaturplatine ist noch in 
Planung.

von chris_ (Gast)


Lesenswert?

Meiner Ansicht nach wäre es sehr gut, wenn man für den diesen Zx81 Clone 
ein Inbetriebnahme ROM hätte, mit dem man die Schaltung schrittweise in 
Betrieb nehmen kann.
Das große Problem ist, dass die Grafikausgabe des Zx81 den Prozessor 
sehr stark einbindet und man nie weis, welche Komponente den Fehler hat.

von Burkhard T. (mikro-tiger)


Lesenswert?

Hallo Martin,
habe bei meiner Platine die "Invertierung" zurückgenommen und damit 
funktioniert sie genauso. Bei mir war es also nur der Pin von der 
IC-Fassung, der die Zeichen nicht darstellen ließ. Ich habe den 74HC04 
und den 1M Widerstand übernommen.

von Martin D. (mahjongg)


Lesenswert?

Burkhard T. schrieb:
> Hallo Martin,
> habe bei meiner Platine die "Invertierung" zurückgenommen und damit
> funktioniert sie genauso. Bei mir war es also nur der Pin von der
> IC-Fassung, der die Zeichen nicht darstellen ließ. Ich habe den 74HC04
> und den 1M Widerstand übernommen.

danke, aber heist das das die invertieren (des clock signal) wirklich 
nicht nötig ist?
es scheint mir zu dass einige der C64 forum damit Probleme hatten.
wenn es wirklich ein Besserung ist bin ich gerne bereit zie über zu 
nehmen, aber nicht wenn es sich nur über ein Missverständnis handelt.

Martin.

von Patrick L. (Firma: S-C-I DATA GbR) (pali64)


Lesenswert?

Martin D. schrieb:
> wenn es wirklich ein Besserung ist bin ich gerne bereit zie über zu
> nehmen,

Wen mann die Signale der Daten und Selektleitungen, mit dem 
Logicanalyser anschaut, macht das Invertieren tatsächlich etwas aus, die 
zeitkritische Konstante, zwischen den "Stabielzustand der Signale" bis 
zur Übernahme wird etwas grösser, somit kann das Invertieren tatsächlich 
als "Verbesserung zur Stabilität" angesehen werden...

73 55

von Martin D. (mahjongg)


Lesenswert?

well I just finished and uploaded to GitHub a new BOM (rev 1.8) where I 
replaced all logic with 74HC logic, and all sockets to dual wipe 
sockets.
I checked if all logic I used was available in 74HCxx and DIP, and 
listed all of the order numbers in the BOM.

: Bearbeitet durch User
von Martin D. (mahjongg)


Lesenswert?

I finished the schematic and layout of revision 1.8 yesterday, and after 
some checking I will upload them to GitHub.

This version has all logic consolidated to 74HCxx logic, and uses U18A 
to invert the CPU (and expansion port) clock signal, relative to the two 
other inputs for the non-inverted 3.25M clock.
The extra traces needed to route to and from U18A were difficult to add, 
but I managed it.
I also moved U13 (74HC00) so that it no so close to another IC.

I also want to check the position of the non-plated holes, and whether 
the audio connectors are correctly wired (which I think they are but 
will check anyway) and after that I will upload both schematics and 
gerber/drill files to GitHub, so if there are any other issues anyone 
has, now is the time to speak out!

also I will change the component placement drawing by removing all 
references to logic families from the drawing.

von Martin D. (mahjongg)


Lesenswert?

I checked, with calliper and ruler and the original case and PCB, the 
position of all the 3mm screw holes in the PCB of the ZX81+38, and made 
some corrections. I also moved the USB connector slightly "up" (towards 
the back) so hopefully you can insert the relatively small USB-B 
connector into the PCB without needing to cut away plastic.

von Martin D. (mahjongg)


Angehängte Dateien:

Lesenswert?

I am happy to report that I finally have my copy of my ZX81+38 clone 
working.
My copy is based on the revision 1.6 PCB
I had to do the following to get a revision 1.6 working (patch it to 
nearly the level of revision 1.8):

1) Change the clock driver from an 74HC14 to a 74HC04
2) Change all logic from a mix of 74LSxx and 74HCxx logic to all 74HCxx 
logic
3) do the CPU clock inverter patch with half of U18, see the white wires 
in the picture above. Note wired without cutting any traces, by bending 
out pins of U18, and the Z80, one problem is the the expansion port 
clock signal is not inverted.
4) probably need to swap the orientation of the 5-pin keyboard data 
connector, meaning swapping the dupont wires. I still have to puzzle out 
which prototype keyboard pins I need to connect to which, not only for 
the swapped data wires, but some address wires could be swapped too, and 
my prototype keyboard (built for the ZX81+35) also has reset and LED 
connections.

Note that with my EEPROM a winbond W27C512 no jumperchanges were needed, 
just eight copies of the ZX81 filling the ROM. This ROM is FAST with 
45nS access time, but still needed the clock inverter patch.

See the picture of first power up with the first three corrections, but 
without a keyboard, I used a DuPoint wire between the "address" and 
"data" wire connectors to "press" some random keys to see if the clone 
was "alive", and that worked, as you can see above:

I want to thank everybody who helped!

I now have also published the KiCad files, for the world and the future 
of the ZX-81 may this help keeping the ZX-81 alive forever!

: Bearbeitet durch User
von Alex P. (ra_p)


Lesenswert?

Hey Martin, I glad you got it working in the End. I may do this clock 
inversion thing, but my ZX81+38 worked quite well, loading programs and 
playing with the keyboard never was a problem and did not produce any 
resets... I may have been very lucky by my random choice of TTL chips 
:), even a 'HC14 worked as oscillator, ali express chips, probably all 
repainted anyways.
Ale

: Bearbeitet durch User
von Martin D. (mahjongg)


Lesenswert?

Well, it has been a long time since my last post, but I have been busy 
with my ZX81+38 clone.
My latest (and hopefully now permanent) version is revision 1.9, and 
actually the only fix from revision 1.8 worth mentioning is that I added 
pulldown resistors on the bases of all the transistors in the joystick 
to keyboard presses logic. And a change in the current limiting resistor 
for the base current of these transistors now the joystick works 
"einwandfrei" LOL. Oh, and did I mention the reversal of the keyboard 
data connector?

I finally ordered 10 pieces of the ZX81+38 revision 1.9 PCB and ten 
pieces of the keyboard PCB. But I still have not built up even one of 
the PCB's, I am still hesitating to order components from reichelt, 
although I fixed my version of the BOM, so that for reichelt I could 
find out the total price of all components, and came out at about 40 
euro.
I had planned to order 5 sets of all components, but as for all good 
plans, something came alone and stopped it! :-(

Partly its the fact that my long-covid limited my energy and 
"wanderlust" so I have only seen my maker space a few times, and another 
factor was that the "national computer games museum" in my hometown of 
zoetermeer, where I'm a volunteer, wanted a simple way to load their 
spectrum 48K each morning with a game. So on my advise they ordered a 
TZXDuino which I built up and programmed, that worked fine, but after 
some time I offered the idea that I could create a "TZXDuino" that would 
fit INSIDE of the spectrum, which was received with much glee, as the 
person that had to bring the TZXDuino each morning load a game, wait for 
the game to be loaded, and then remove the TZXDuino found that task a 
bit "cumbersome".

So I went ahead and designed my "TZXDuino pico" PCB, and it worked (I 
did find out that I had inadvertently mixed up the side the sd-card went 
in, but that was fixable, and has also been fixed on my GitHub project 
for it) but that was the beginning of a long tract of tribulations,
initially I only had one external button, the "start" button, other 
buttons I had from the museum that looked the same were off the normally 
closed type, and unusable. After new year (2023) I added a "next button" 
and added more games, only some of them did not work. long story why, 
but has to do with windows not automatically unpacking .ZIP files.....

In any case I still only have my patched revision 1.6 board, and didn't 
have a lot of urge ("drang") to order parts and build up revision 1.9. 
Sorry for that, I know some want to buy a kit from me.....

Anyway, I have not been very busy with my ZX81+38 design, except for 
soldering the buttons to one keyboard PCB, but lately some action has 
begon, as there was someone who made a video (or two video's now) about 
"how you can build a ZX-81 in 1922", and also there is now an article on 
HACKADAY about it. 
https://hackaday.com/2022/11/10/building-a-sinclair-zx81-in-2022-with-all-new-parts/#comment-6584307

Also I was asked why Wilf Rigter's WRX16 highresolution driver doesn't 
work on my clone. specifically a ZX81+38 builder asked why 
ZX-TERMINAL*80 doesn't work (which uses WRX16 to get 80 column text).
So I did some internet flat footing (investigating) found Wilf's 
original software release from 1986 and much more, and my conclusion is 
that WRX16 needs a Z80 that supports 8-bit refresh, (and a patched 16K 
adapter) but more importantly it needs 8K of ram extra on $2000 to 
$2FFF, and the latter is not something my ZX81+38 can support, yes it 
can configure 8K RAM there but that ram is mirrored in the 16K working 
RAM, so writing graphic data in the extra 8K ram (as the WRX16 software 
does) will also overwrite program data, Not much I can easily do about 
that. or can someone figure out how to do that? I sure cannot :-)
All this is written about on the GitHub page in the issues section.

I also tried to contact Wilf Rigter but my initial e-mail address was no 
longer working and another a later address (at dccnet.com ) did not 
bounce, but Wilf has not replied (yet).

Does anyone know what happened to the greater ZX-81 hobbyists ever?
is he still alive?
I owe much to wilf rigters designs.

I never spoke or mailed with him, but I want to thank him for his work, 
and ask if he supports my conclusion.

: Bearbeitet durch User
von Martin K. (Gast)


Lesenswert?

Hinweise für V1.6:

Ich hatte einen nicht funktionierenden plus38 Clone V 1.6 bei ebay 
gekauft und ihn folgendermaßen zum Laufen bekommen:

Als erstes hatte ich alle LS-Typen nachbestellt als HC Typen und einzeln 
ausgetauscht, um zu schauen ob eines der Signale nicht richtig 
durchkommt. (Das Signal für das Schieberegister sieht zum Beispiel sehr 
komisch aus und hat nur etwa 10ns lange Pulse, weil die Schaltung davor 
rückgekoppelt arbeitet und sich das Signal daher selbst zurücksetzt).

Folgende ICs mussten HC sein:
74LS165 -> 74HC165 (sonst scharzes Quadrat)
74LS08 -> 74HC08 (sonst Invertierfehler)

Dann war noch das Problem mit dem Flimmern der Darstellung in 
Abhängigkeit von Statischen Aufladungen. Das konnte ich Beseitigen 
durch:

2.2K Pull-Up für A14

Ich vermute, dass die Dekodierung für RAM/ROM nicht ganz korrekt ist, 
weil ja immer ein CS aktiv ist, sobald entweder mREQ oder mRFSH auf Low 
geht. Bei mRFSH wird aber anscheinend A14 hochohmig und muss deshalb auf 
5V gezogen werden damit die Dekodierung noch funktioniert.

Ansonsten habe ich noch keine Patches gemacht, also weder das 
Invertieren des CPU Takts noch den Austausch der anderen LS Chips gegen 
HC. Auch den Schmitttrigger für die Takterzeugung ist noch aktiv.

Der Zx81 Clone funktioniert nun stablil bei mir.

von Martin K. (Gast)


Lesenswert?

Ich habe noch eine Ergänzung zu meinen Hinweisen für Revision V1.6:

Es ist tatsächlich so, dass A13, A14 und A15 einen Pullup-Up benötigen 
um den Clone stabil zum Laufen zu bringen (also nicht nur A14).

Nach der Anpassung kann man die Platine mit den Fingern auf der Platine 
fast überall berühren (außer dem Taktgeber), ohne dass der Z80 abstürzt 
(was nicht einmal beim Original ZX81 ging).

Ich habe keine Bestätigung in der Spezifikation des Z80 für meine These 
gefunden, dass A8-A15 Tristate gehen während der Ausführung eines 
Refresh, aber es sieht ganz danach aus.

von Thomas (Firma: Exotek) (tomascent)


Angehängte Dateien:

Lesenswert?

Hi, this is Thomas
The time is passing and I started back with ZX-81 projects from 
MartinDeJongg.
Martin, I made your ZX-81V38 new, see attached picture and it works with 
no problems, so you made a great job.
We can continue if you want to know changes or something about the PSG.
Greetings
Thomas

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.