Forum: Projekte & Code ZX81 plus38 Clone


Announcement: there is an English version of this forum on EmbDev.net. Posts you create there will be displayed on Mikrocontroller.net and EmbDev.net.
von chris_ (Gast)


Bewertung
3 lesenswert
nicht 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 A. K. (prx)


Bewertung
1 lesenswert
nicht lesenswert
Der ZX80 ist dahingehend noch interessanter, weil er ohne Custom-Chip 
auskommt.

von chris_ (Gast)


Angehängte Dateien:

Bewertung
1 lesenswert
nicht 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:

Bewertung
2 lesenswert
nicht lesenswert
Hier das Bild der Platine.

von chris_ (Gast)


Angehängte Dateien:

Bewertung
0 lesenswert
nicht 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 A. K. (prx)


Bewertung
0 lesenswert
nicht 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 A. K. (prx)


Bewertung
1 lesenswert
nicht 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)


Bewertung
0 lesenswert
nicht 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)


Bewertung
0 lesenswert
nicht 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 A. K. (prx)


Bewertung
0 lesenswert
nicht 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 A. K. (prx)


Bewertung
0 lesenswert
nicht 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:

Bewertung
0 lesenswert
nicht 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)


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

Damals heißt 1984.

von A. K. (prx)


Bewertung
0 lesenswert
nicht 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:

Bewertung
1 lesenswert
nicht 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
K
Prompt war leider nicht sichtbar, vielleicht war es außerhalb des weißen 
Bildschirms.

von Soul E. (souleye) Benutzerseite


Bewertung
0 lesenswert
nicht 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.

: Bearbeitet durch User
von chris_ (Gast)


Angehängte Dateien:

Bewertung
0 lesenswert
nicht 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)


Bewertung
0 lesenswert
nicht 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)


Bewertung
0 lesenswert
nicht 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:

Bewertung
0 lesenswert
nicht 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)


Bewertung
-1 lesenswert
nicht 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)


Bewertung
0 lesenswert
nicht lesenswert
Interessierter schrieb:
> Benutzt ihr ein EEPROM oder ein OTP EPROM?

Wo bekommt man OTP EPROM???

von Interessierter (Gast)


Bewertung
1 lesenswert
nicht 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)


Bewertung
0 lesenswert
nicht lesenswert

von chris_ (Gast)


Angehängte Dateien:

Bewertung
0 lesenswert
nicht lesenswert
Das sind die Speicherchips, die ich bekommen habe.

von chris_ (Gast)


Bewertung
0 lesenswert
nicht 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:

Bewertung
0 lesenswert
nicht 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)


Bewertung
-1 lesenswert
nicht 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)


Bewertung
0 lesenswert
nicht 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)


Bewertung
1 lesenswert
nicht 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:

Bewertung
1 lesenswert
nicht 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:

Bewertung
0 lesenswert
nicht 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)


Bewertung
0 lesenswert
nicht 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)


Bewertung
0 lesenswert
nicht 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:

Bewertung
0 lesenswert
nicht 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)


Bewertung
1 lesenswert
nicht 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)


Bewertung
0 lesenswert
nicht 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)


Bewertung
0 lesenswert
nicht lesenswert

von chris_ (Gast)


Bewertung
0 lesenswert
nicht 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
...
; I/O locations:
;
IO_PORT_TAPE    equ  $FF  ; write
IO_PORT_SCREEN    equ  $FF  ; write

IO_PORT_KEYBOARD_RD  equ  $FE  ; A0 low
IO_PORT_NMI_GEN_ON  equ  $FE  ; A0 low
IO_PORT_NMI_GEN_OFF  equ  $FD  ; A1 low
IO_PORT_PRINTER    equ  $FB  ; A2 low

....

; THE 'OUT_BYTE' SUBROUTINE

; This subroutine outputs a byte a bit at a time to a domestic tape recorder.

mark_031E:
OUT_BYTE:
  LD  E,(HL)    ; fetch byte to be saved.
  SCF      ; set carry flag - as a marker.

mark_0320:
EACH_BIT:
  RL  E    ; C < 76543210 < C
  RET  Z    ; return when the marker bit has passed 
        ; right through.      >>

  SBC  A,A    ; $FF if set bit or $00 with no carry.
  AND  $05    ; $05 "  "   "   "  $00
  ADD  A,$04    ; $09 "  "   "   "  $04
  LD  C,A    ; transfer timer to C. a set bit has a longer
        ; pulse than a reset bit.

mark_0329:
PULSES:
  OUT  (IO_PORT_TAPE),A  ; pulse to cassette.
  LD  B,$23    ; set timing constant

mark_032D:
DELAY_2:
  DJNZ  DELAY_2    ; self-loop

  CALL  BREAK_1    ; test for BREAK key.

mark_0332:
BREAK_2:
  JR  NC,REPORT_D  ; forward with break to REPORT_D

  LD  B,$1E    ; set timing value.

mark_0336:
DELAY_3:

  DJNZ  DELAY_3    ; self-loop

  DEC  C    ; decrement counter
  JR  NZ,PULSES  ; loop back

mark_033B:
DELAY_4:
  AND  A    ; clear carry for next bit test.
  DJNZ  DELAY_4    ; self loop (B is zero - 256)

  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
  OUT  (IO_PORT_TAPE),A  ; pulse to cassette.

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

von Soul E. (souleye) Benutzerseite


Bewertung
0 lesenswert
nicht 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:

Bewertung
0 lesenswert
nicht 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)


Angehängte Dateien:

Bewertung
0 lesenswert
nicht lesenswert
Hier ist der aktuelle Testaufbau und die Firmware, mit der ich die 
Signale stimuliere.

Das Schreiben alleine scheint VSYNC noch nicht zu beeinflussen.
void loop()
{
/*
> 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.
*/
  Z80_out(0xFE,0);// data lines are not used
  
  delay(VERZ);
  
  Z80_out(0xFF,0);// data lines are not used
  
  delay(VERZ);

}

von Soul E. (souleye) Benutzerseite


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

von chris_ (Gast)


Angehängte Dateien:

Bewertung
0 lesenswert
nicht 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)


Bewertung
-1 lesenswert
nicht 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)


Bewertung
1 lesenswert
nicht lesenswert
>Was machst du da so lange?

Ich analysiere die Funktionsweise des Systems sehr genau.

von Alex P. (ra_p)


Bewertung
0 lesenswert
nicht lesenswert
In einer Stunde Bestückt ? Die Zeit vergeht für jeden anders...

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.