First Run ZX81+38 Replika läuft nicht

Es gibt 123 Antworten in diesem Thema, welches 17.191 mal aufgerufen wurde. Der letzte Beitrag (27. Januar 2023 um 01:14) ist von manfred.moser.

  • Bitte melde dich an, um diesen Link zu sehen.

    Der Board Entwickler würde hier gerne seine Änderungen an der Platine erklären, aber die Registrierung klappt nicht.

  • Aber das Timingproblem, das hier im Thread so viel Probleme machte und das in der Bitte melde dich an, um diesen Link zu sehen.-Platine behoben ist, hat er nicht gefixt? Seltsam.

    So I wasn't aware of this forum, but I have registered now. Also ich kannte dieses Forum noch nicht, habe mich aber jetzt angemeldet.

    never heard of this problem, and there are many people that have their ZX81+38 working fine, perhaps they used a suitably fast ROM, characters that come out as black boxes seems to me to point to the fact the the CPU cycle that drives character font data is too slow, in that case the pullup resistors pull the databus high, resulting in a full black character.

    I'm still not sure I will add this change to my schematic (which should end up in a revision 1.8 layout), also I will do my own measurements of the correct location of non plated holes, and might also make changes to a revision 1.8. Another thought is that I might move the USB-B connector inwards, so that there will be no need to remove plastic around the USB plug.

    Ich habe noch nie von diesem Problem gehört, und es gibt viele Leute, bei denen ihr ZX81 + 38 gut funktioniert, vielleicht haben sie ein angemessen schnelles ROM verwendet, Zeichen, die als schwarze Kästchen erscheinen, scheinen mir auf die Tatsache hinzudeuten, dass der CPU-Zyklus den Charakter antreibt Schriftdaten sind zu langsam, in diesem Fall ziehen die Pullup-Widerstände den Datenbus hoch, was zu einem vollständig schwarzen Zeichen führt.

    Ich bin mir immer noch nicht sicher, ob ich diese Änderung meinem Schaltplan hinzufügen werde (der in einem Layout der Revision 1.8 enden sollte), außerdem werde ich meine eigenen Messungen der korrekten Position von nicht plattierten Löchern durchführen und möglicherweise auch Änderungen an einer Revision vornehmen 1.8. Ein weiterer Gedanke ist, dass ich den USB-B-Anschluss nach innen versetzen könnte, damit der Kunststoff um den USB-Stecker herum nicht entfernt werden muss.

  • So, I read though the forum, and saw a few questions I want to answer.

    My main tip is to NOT use a 74HC14 for the crystal oscillator inverters, also don't use a LS logic chip, instead use a 74HC04 or 74HCT04 or even better an unbuffered 74HCU04.

    The reason I mixed 74HC and 74HCT logic my reasoning is that with a 5V supply these logic families are largely compatible. and some logic chips are easier to obtain, so that has influenced my choice , especially as I tried to find the cheapest useable logic that I could obtain from Farnell, but the latest BOM also contains other sources. Feel free to choose the logic family IC you can obtain, as it really doesn't matter. I learned from one builder that used military 54LSxx logic with success. Except for U21 which MUST be a CMOS family as it needs to be a logic family with high impedance inputs. For LS logic the 1M feedback and 1K series must be far lower for the oscillator to work. I also used one CD4000 series logic, as the function isn't available in 74HC(T) logic. and again when powered with 5V all the HC(t) and CD4000 are quite input/output compatible.

    the second tip is that the keyboard 5 data lines section must be swapped, otherwise the keyboard matrix will not be correct. This is repaired in revision 1.7

    I tried to make my ZX81+38 compatible with various ROM's and EEPROM's and even with the original ZX-81 ROM, where changes in the pinout is necessary (especially the original ZX-81 ROM) there are jumpers on the underside of the board (to reduce the necessary board space needed). For the use of a 27C256 type of OTP no changes are needed in the jumping, if you need to use a 28C256 EEPROM (reprogrammable PROM) some re-jumpering is needed, but note that there are versions of the 27C256 that can be electrically erased!

    I made the memory mapping space twice as large, so an extra 8K ROM-space is available, if you don't want this (you want to use four 8K ROM's between which you can switch with two switches) then you can reduce the ROM space back to 8K with another jumper (see schematic).


    Also habe ich das Forum gelesen und ein paar Fragen gesehen, die ich beantworten möchte.

    Mein Haupttipp ist, KEINEN 74HC14 für die Quarzoszillator-Wechselrichter zu verwenden, auch keinen LS-Logikchip zu verwenden, stattdessen einen 74HC04 oder 74HCT04 oder noch besser einen ungepufferten 74HCU04 zu verwenden.

    Der Grund, warum ich 74HC- und 74HCT-Logik gemischt habe, ist, dass diese Logikfamilien mit einer 5-V-Versorgung weitgehend kompatibel sind. und einige Logikchips sind einfacher zu beschaffen, was meine Wahl beeinflusst hat, zumal ich versucht habe, die billigste verwendbare Logik zu finden, die ich von Farnell erhalten konnte, aber die neueste BOM enthält auch andere Quellen. Fühlen Sie sich frei, den Logikfamilien-IC zu wählen, den Sie erhalten können, da es wirklich keine Rolle spielt. Ich habe von einem Baumeister gelernt, der erfolgreich militärische 54LSxx-Logik verwendet hat. Mit Ausnahme von U21, das eine CMOS-Familie sein MUSS, da es sich um eine Logikfamilie mit hochohmigen Eingängen handeln muss. Für die LS-Logik müssen das 1M-Feedback und die 1K-Serie viel niedriger sein, damit der Oszillator funktioniert. Ich habe auch eine Logik der CD4000-Serie verwendet, da die Funktion in der 74HC(T)-Logik nicht verfügbar ist. und wieder, wenn sie mit 5 V versorgt werden, sind alle HC(t) und CD4000 recht eingangs-/ausgangskompatibel.

    Der zweite Tipp ist, dass die 5 keyboard Datenleitungen vertauscht werden müssen, sonst stimmt die Tastaturmatrix nicht. Dies wurde in Revision 1.7 behoben

    Ich habe versucht meinen ZX81+38 mit diversen ROM's und EEPROM's kompatibel zu machen und sogar mit dem original ZX-81 ROM, wo Änderungen in der Pinbelegung notwendig sind (insbesondere beim original ZX-81 ROM) gibt es Jumper auf der Unterseite der Platine ( um den erforderlichen Platinenplatz zu reduzieren). Für die Verwendung eines 27C256-OTP-Typs sind keine Änderungen beim Springen erforderlich. Wenn Sie ein 28C256-EEPROM (reprogrammable PROM) verwenden müssen, ist ein gewisses Neujumpern erforderlich. Beachten Sie jedoch, dass es Versionen des 27C256 gibt, die elektrisch gelöscht werden können !

    Ich habe den Memory Mapping Space doppelt so groß gemacht, damit ein zusätzlicher 8K ROM-Space zur Verfügung steht, wenn Sie das nicht möchten (Sie möchten vier 8K ROMs verwenden, zwischen denen Sie mit zwei Schaltern wechseln können), dann können Sie das ROM verkleinern Platz zurück auf 8K mit einem anderen Jumper (siehe Schema).

  • mahjongg : welcome to the forum.

    You don't need to post in two languages.

    Just write in English, that is totally okay. :)

    Arroganz ist die Kunst, auf seine eigene Dummheit stolz zu sein.
    Gruß - cp2

    Bitte melde dich an, um diesen Link zu sehen.

  • mahjongg : welcome to the forum.

    You don't need to post in two languages.

    Just write in English, that is totally okay. :)

    okay fine.

    I have one question, one poster here remarked that he had to file down one IC because the distance between two IC's "somewhere" was too close, please can you indicate which two IC's you were talking about?

    Thanks in advance!

  • I have one question, one poster here remarked that he had to file down one IC because the distance between two IC's "somewhere" was too close, please can you indicate which two IC's you were talking about?

    Thanks in advance!

    That was me, I'll take photos later and upload them here.

  • mahjongg : Welcome to the Forum64, and many thanks you to your great Project ZX81+38.

    In this Thread I reported about my experiences in building this awesome RetroComputer.

    I built 5 PCBs and all needed the CPUClockFix. Without it I had no Characters or Squares instead of Characters. With the Fix all 5 PCBs work fine.

    Elektronikbastler:thumbsup:

    Bitte melde dich an, um diesen Link zu sehen. ; Bitte melde dich an, um diesen Link zu sehen. ; Bitte melde dich an, um diesen Link zu sehen. ; Bitte melde dich an, um diesen Link zu sehen.

  • mahjongg : Welcome to the Forum64, and many thanks you to your great Project ZX81+38.

    In this Thread I reported about my experiences in building this awesome RetroComputer.

    I built 5 PCBs and all needed the CPUClockFix. Without it I had no Characters or Squares instead of Characters. With the Fix all 5 PCBs work fine.

    Okay, then I will implement the CPU clock inverter logic in my next version (which shall be 1.8)

    I the mean time I have finished building up my own copy, but have not tested it yes, but while I was building it up I noticed two things, the first is just a tip, don't use the "professional" IC sockets with round pins, they don't tolerate any device in the position of the IC pins when trying to insert the IC into them, the pins MUST be exactly straight, any slight bend and you cannot insert the IC into these sockets. I tried to insert an IC that had some pins that were slightly bent in transport, and it took half an hour to get all pins correctly aligned before I could insert the IC!

    Instead I want to recommend using the dual wipe IC sockets, which tolerate non perfectly straight IC pins, and are as I recently learned much better when trying to insert older re-used IC's that have a millimeter of their pins shaved off. Their single wipe older sockets have a bad reputation for unreliability in 40 year old computers (the venerable commodore 64 is one example where you can find single wipe sockets that have failed) but this is NOT TRUE for dual wipe sockets that have metal that touches the pins from the outside as well as from the inside of the pin. So I would urge you to use the dual wipe sockets, not the round pin "professional" sockets! My copy had a mix of both types of sockets, and I had a hard time using the round pin types. But dial wipe sockets are much easier and even make better contact.

    Then I made a (for me) stunning discovery, as I said earlier I derived the ZX81+38 clone from my fully working ZX81+35 clone, which was built up from SMT (surface mount) IC's and in it I exclusively had used 74HC logic, even for the dual four input NOR gate the 74HC4002 which is actually a CD4000 family chip. And certainly the crystal oscillator should not be the wrong kind of logic, initially it was a single-gate CMOS logic unbuffered inverter the SN74LVC1GU04 why I replaced it with a 74HC14 I will never know. So when I read complaints that I had "mixed up logic families" I was initially unconcerned and thought that maybe I had replaced some 74HC ic's with 74HCT ic's, because a DIP version of some IC's were easier to get in 74HCT logic than in 74HC logic, and in my mind not a single 74LS family chip was used. But that illusion was shattered when I was building up the board using my self made component placement drawings and I saw many IC's being listed as LS logic! That is one reason why you will normally not release a design before you build up and test it successfully, as in that stage you are bound to find silly mistakes like that.

    Shock-horror how could this be, and why didn't I noticed that before, I checked the BOM, and indeed there too I noted that LS logic, not HC logic was often used!

    Now I have no doubt that mixing HC(T) and LS logic CAN BE MIXED, in a 5V powered design, but as I said I did not deliberately changed any HC logic family IC to an LS IC'!

    Somewhere something must have gone wrong for this to have happened!

    I assume the fault occurred because I re-drew the schematic in KiCad, for my original (paper) ZX81+35 schematic and I remembered from that conversion project that not all IC's I needed where in the KiCad library in the form of DIP 74HC logic IC's, so sometimes I was forced to use to use the 74LS DIP library, and change the logic type (IC label) to 74HC from the original 74LS logic label, in that process something must have gone wrong! All the places where I deviated from the 74HC family and the labeling was changed back to 74LS that is in error!

    As the BOM was derived from the schematic, and the build up diagram was derived from the silk screen diagram and the BOM it contains the same errors.

    But again, this doen't mean it won't work, it should work, only drawing a bit more current than it should. But this explains why observant copyists of my design noticed the mix of logic, which I completely failed to detect.

    I'm dreadfully sorry, and yes I will make new schematics, a new BOM and a corrected component built up drawing.

    I want to be my design to be perfect, not a potpourri of logic families. ;(:X

    :D

  • I the mean time I have finished building up my own copy, but have not tested it yes, but while I was building it up I noticed two things, the first is just a tip, don't use the "professional" IC sockets with round pins, they don't tolerate any device in the position of the IC pins when trying to insert the IC into them, the pins MUST be exactly straight, any slight bend and you cannot insert the IC into these sockets. I tried to insert an IC that had some pins that were slightly bent in transport, and it took half an hour to get all pins correctly aligned before I could insert the IC!

    Yes, these "precise" IC sockets are a PITA. Really. I hate them. They are OK if you build a shining new PCB with shining new ICs, put it together exactly one time and never change a single component except in case of failures.

    Now I have no doubt that mixing HC(T) and LS logic CAN BE MIXED, in a 5V powered design, but as I said I did not deliberately changed any HC logic family IC to an LS IC'!

    Driving HC inputs with LS outputs is an absolutely NO-GO. This is why HCT was developed - all advantages from the HC series plus a 100 % compatible input for LS outputs.

    HC inputs (@5V) have a minimum HIGH voltage level of 3.5 V (70% of Vcc), while LS outputs may - 100% spec compatible! - drive the output as low as 2.4 V for HIGH signals. LS inputs recognize signals down to 2.0 V as "HIGH" signal, again 100% spec compatible. (So do HCT, btw.)

    Driving HC with HCT and vice versa is safe, however.

  • kinzi you are absolutly right with your statements about the different Versions of Logic ICs.

    I found a good Documentation about the specifications in the Bitte melde dich an, um diesen Link zu sehen..

    But in practise I've tried different versions of HC/HCT and LS Logic-IC in the Design of mahjongg and all of them worked.

    As you can see: It can work, but it doesn't have to. So in Development it's surely better not to mix up the different Versions.

    And the "precise" Sockets... I don't like them and I don't use them in Retro-Projects :)

    Elektronikbastler:thumbsup:

    Bitte melde dich an, um diesen Link zu sehen. ; Bitte melde dich an, um diesen Link zu sehen. ; Bitte melde dich an, um diesen Link zu sehen. ; Bitte melde dich an, um diesen Link zu sehen.

  • HC inputs (@5V) have a minimum HIGH voltage level of 3.5 V (70% of Vcc), while LS outputs may - 100% spec compatible! - drive the output as low as 2.4 V for HIGH signals. LS inputs recognize signals down to 2.0 V as "HIGH" signal, again 100% spec compatible. (So do HCT, btw.)

    Driving HC with HCT and vice versa is safe, however.

    You are right, you should not try to drive a HC input with a LS output. unfortunately the schematic now has many cases where this is the case, this means that currently the zx81+38 stands a big chance of not working right. Thats a big bummer!

    I will immediately change the text of my GitHub page, and add a warning that you should either use all LS (or HCT) logic or (better IMHO) use only HC logic, no matter what the schematic says.

  • I will immediately change the text of my GitHub page, and add a warning that you should either use all LS (or HCT) logic or (better IMHO) use only HC logic, no matter what the schematic says.

    The Z80 might be of NMOS type, too (not CMOS), since it is only clocked with 3,25 MHz. Using a NMOS device with all HC ICs might again result in problems.

    When using all HC parts, ensure the CPU is a Z80 CMOS version, as well as a 27Cxxx-EPROM.

    Better use only HCT parts, except for the 74HC4002 which isn't available in HCT IIRC.

  • I have just uploaded to GitHub a new revision 1.8 BOM, in which I have changed all logic to HC logic, as that is what I used in my original ZX-81 clone, my ZX81+35.

    Yes, I listed the z80 as a Z84C0008PEG, I'm fairly sure the eprom is CMOS, as its a 27C256.

    Tomorrow I will create an updated schematic, and perhaps also the component placement drawing with only HC logic.

  • By the way, I read someone asking whether the databus pullup resistors should be 10K x 8 or 22K x 8.

    In principle both will work, but with 10K x 8 there is a slight chance that with the resistor divider formed by the 10K pullup, and the pulldown from the keyboard matrix that 10K is too "strong" to reliably pull the databus signal below the ViLow limit of the CPU, especially if the contact resistance of the keyboard rises, so it is better to make the pullup a bit "weaker", therefore the change to 22K x 8.

  • I'm busy inserting the inverter formed by half of U18 for the clock signal, but too make the layout a bit simpler I also inverted the clock signal going to the expansion bus. This should have no negative influence, indeed peripherals and memory connected to the expansion bus should then have better timing as well.

  • I have to say that U18 might be the only possible choice for an extra inverter, but from a layout point of view its a bad choice. I have to add extra tracks through a very busy part of the layout, and its proving to be difficult! Not that I'm giving up on it, I'm not its just harder than I had hoped.

  • I finished with the revision 1.8 Schematic, and layout. After a final check tomorrow I will upload both to GitHub, then I only have to do the placement drawing.

    I had to guess which IC it was that was too close to another IC, I chose U13 as the most likely candidate, and gave it a bit more room (moved it down a very small amount)

    If there are other things I should look at, now is the time!