mein CBM 8032 (No. 2) mit Commodore High Speed Graphik

  • Neee, ne, A3 und A4 muessen 0 sein, damit A0 bis A2 etwas sinnvolles machen.

    Waeren sie wirklich dont care stuenden die 8 Werte 4 mal hintereinander.

    ;------------------------------------
    ;----- ENABLE NMI INTERRUPTS
    (aus: IBM BIOS Source Listing)

  • Hmmm... hast Du das mal übersichtlichen Schaltplan?

    Dann würde ich das fädeln, ein GAL bruzzeln, und das direkt mit an CBM_Ba schicken, zum testen.

    Reicht dir auch die Layout Ober- und Unterseite?


    Es ist im Grunde wirklich super simpel:


    Die PROM Pins A0 bis A4 gehen an den GAL an Pin 7 bis 3

    Die PROM Pins Q7 bis Q0 gehen an den GAL an Pin 12 bis 19

    Der PROM Pin /G muss an Pin 11 des GAL 16v8


    Die überflüssigen Eingänge des GAL sind auf GND







  • Neee, ne, A3 und A4 muessen 0 sein, damit A0 bis A2 etwas sinnvolles machen.

    Waeren sie wirklich dont care stuenden die 8 Werte 4 mal hintereinander.

    Sind sie auch. A3 und A4 sind fix auf GND und nur A0 bis A2 werden genutzt - da hängen die Q1, Q2 und Q3 Ausgänge des 74LS169B Zählers dran.

    Der Zähler ist fix auf einen Startwert von 7 programmiert und zählt von 7-15, teilt also die 14mhz Eingang durch 8, sein Überlauf sind die 1.75mhz takt des Grafikchips und liegen an load, so dass er dann wieder die 7 lädt.


  • Alles klar, damit komm ich zurecht. :)

    Ist das OK, daß die unbenutzten Eingänge offen sind?

    Es wird keine Katastrophe passieren.


    Aber ich hab sie bei der Platine mal auf GND gelegt, so wie es empfohlen wird.


  • Ideen Sammlung für eine moderne Reproduktion ...



    Diese drei IC, - ein binär Zähler LS169, das PROM, das danach ist wohl ein sechsfach D-FlipFlop??, - die könnte man wahrscheinlich mit einem GAL machen.


    Oder wenn es für den GAL zuviel wäre (ich probiere das mal aus), schlimmstenfalls geht es jedenfalls mit dem CPLD ganz sicher, und der CPLD kann noch viele Dinge tun.

  • Der Zähler ist fix auf einen Startwert von 7 programmiert und zählt von 7-15, teilt also die 14mhz Eingang durch 8, sein Überlauf sind die 1.75mhz takt des Grafikchips und liegen an load, so dass er dann wieder die 7 lädt.

    M.E. teilt der Counter durch 9.

    Der Uebergang von 15 nach 7 braucht auch einen Takt.

    7->8->9->10->11->12->13->14->15->7

    Jeder -> ist ein Clock, von 7 bis 7 brauchst du 9 Clocks.

    ;------------------------------------
    ;----- ENABLE NMI INTERRUPTS
    (aus: IBM BIOS Source Listing)

  • M.E. teilt der Counter durch 9.

    Der Uebergang von 15 nach 7 braucht auch einen Takt.

    7->8->9->10->11->12->13->14->15->7

    Jeder -> ist ein Clock, von 7 bis 7 brauchst du 9 Clocks.


    Dem kann ich nicht zustimmen.

    /LOAD scheint ein statischer Eingang zu sein.


    Infolgedessen springt es nach dem $F Schritt ($f) praktisch sofort auf 7.


    Der Zähler würde ja auf $0 gehen. Aber der Überlauf setzt sofort ein LOAD in Gang.


    7->8->9->10->11->12->13->14->15->7->8->9->10->11->12 ...


    Aber es sind trotzdem natürlich 9 Zustände.

    Theoretisch ...

    Praktisch sind ja nur 3 Leitungen da zum PROM, also nur 8 Zustände.


    $F und $7 werden vom PROM immer als 1-1-1 gesehen.

    Es kommt das achte Byte (Byte 7) zum tragen.


    Wäre interessant was das Oszi zeigt ...


    eigentlich müsste die 1-1-1 Phase doppelt so lang dauern wie die anderen Schritte?

  • /LOAD scheint ein statischer Eingang zu sein.

    Nach dem Logic Diagram sind alle FF getaktet ohne Set/Reset. Und der Takt wird auch nicht vergattert.



    Im Timing Diagram bekommen die Ausgaenge das erste mal einen definierten Zustand bei LOAD=0 und CLK rising edge.



    Fuer mich ist der Counter voll synchron.


    Wäre interessant was das Oszi zeigt ...

    Bin ich bei dir.

    ;------------------------------------
    ;----- ENABLE NMI INTERRUPTS
    (aus: IBM BIOS Source Listing)

  • Im Timing Diagram bekommen die Ausgaenge das erste mal einen definierten Zustand bei LOAD=0 und CLK rising edge.

    Wenn das denn so ist, dass alles auf steigende Flanke reagiert ...



    DANN müsste eigentlich folgendes passieren:

    • CLK-to-High: Sprung auf Zählerstand $F
    • CLK-to-High: Sprung auf Zählerstand $0 ($10 - Zähler 0 plus Overflow)
    • CLK-to-High: Overflow löst /LOAD aus --> Sprung auf Zählerstand $7
    • CLK-to-High: Sprung auf Zählerstand $8


    7->8->9->10->11->12->13->14->15->0->7->8->9->10->11->12 ..


    Oder liege ich da falsch?



    Für den PROM bedeutet das:

    7->0->1->2->3->4->5->6->7->0->7->0->1->2->3->4->5->6->7->0->7->0->1->2->3->4->5->6->7->0-> ...

  • Der 74169 ist ein voll synchroner Up-/Down-Counter.

    Wenn UP und Q=15 wird RCO aktiv. RCO ist das Carry fuer die naechste Stufe.

    Wenn DOWN und Q=0 ist RCO auch aktiv, wieder das Carry.


    In diesem Fall ist RCO mit LOAD verbunden, d.h. wenn Q=15 wird der Wert an den Eingaengen beim naechsten Takt uebernommen.

    Also ... 14->15->7...

    ;------------------------------------
    ;----- ENABLE NMI INTERRUPTS
    (aus: IBM BIOS Source Listing)

  • Stimmt, du hast das mit dem zaehlen von 7 - 15 angefangen.

    Ich war gerade schon am ueberlegen, wer das gesagt hatte.

    ;)



    Aber: Nur ein gefundener Fehler ist ein guter Fehler !

    ;------------------------------------
    ;----- ENABLE NMI INTERRUPTS
    (aus: IBM BIOS Source Listing)

  • :D


    Der 74169 ist ein voll synchroner Up-/Down-Counter.

    Wenn UP und Q=15 wird RCO aktiv. RCO ist das Carry fuer die naechste Stufe.

    Wenn DOWN und Q=0 ist RCO auch aktiv, wieder das Carry.

    Trotzdem danke für die super gute Erklärung.


    Bin halt doch nur ein "Möchte-gern-Elektroniker" ...


    Aber es wird schon langsam. :)

  • Und warum nutzt man zu Zeiten des CBM 3032 noch 2708 Eproms? :grübel:

    weil die 2708 und die 2508 viel günstiger waren als die 2516 und die 2716.


    oft waren es 2516 oder 2716 deren andere hälfte einen defekt hatte,

    so verkaufte man die als xx08. so etwas wurde von den herstellern auch bei den damaligen rams gemacht.


    nicht verwechseln mit den 2708, z.b. von intel, die hatten drei spannungen.


    die halb defekten haben nur eine 5v spannung.

    die habe ich damals zu hunderten in meinen interface verarbeitet, weil ich nur 512 bytes benötigte.


    zuerst benutzte ich proms in meinen interfaces und im pet, da eproms viel zu teuer waren.

    so war mein erster programmer ein prom brenner der die proms geschossen hat.


    mein erstes eprom lag damals bei ca. 800 dm, es kostete mich mein halbes monatsgehalt.

    so war ich sehr am schwitzen gewesen, ob mein neu entwickelter eprom brenner, auch richtig funktionierte.

    da ich mir nur ein eprom zum testen leisten konnte. zuerts baute ich es für die eproms mit drei spannungen,

    dann ein paar monate später, bekam ich die eproms mit einer spannung und ich änderte meinen programmer wiederum. nur noch zum programmieren der einspannungs eprom typen.


    ich war der erste, der für den pet einen (e)prom brenner baute. weil ich als erster, in den interface,

    ein prom und später ein eprom benutzte. wegen dem umlauten usw.


    der dann sehr oft nachgebaut wurde.


    z.b. von vero = vobis, die sogar mein layout 1:1 kopierten.

    ein funkamateur hat meinen, ganz dreist als seine entwicklung, an vobis für 500 dm verkauft.

    und vobis verkaufte den V80 programmer dann für 298 dm pro stück.

    durch den eprom brenner nachbau, lernte ich die vero / vobis geschäftsführer, herrn fraling und herrn liven kennen

    und vobis wurde dann danach zu meinem größten kunden.

    so müsste ich dem funkamateur nachträglich, für die nachfolgenden millionen dm umsätze mit vobis, dankbar sein ;)


    die proms wurden damals nicht nur als speicher ic sondern auch sehr gerne als gatter schaltungs ersatz benutz.

    um z.b. speicherbereiche zu dekodieren. so auch von mir.

    wie viel später die 82s100 pla im c64 oder anderen commodore rechnern.


    so kam ich dann, ca. 1981, auch auf die idee, nachdem die eproms nun günstiger wurden,

    ein eprom als speicher und auch gleichzeitig als ein gatter ersatz zu benutzen.


    z.b. in meinem neuerem iec / ieee488 interface. zuerst wird das eprom wie eine pla benutzt.

    mit atn die deviceadresse und die sekundäradresse ausgewertet. indem das eprom als gatter

    die zustände auf dem bus in echtzeit auswertet, dann wird der zustand in einem ein bit flip flop latch gespeichert.
    falls es adressiert wurde und ab dann dient das eprom nur dazu, mit der eingetragenen umwandlungstabelle,

    um die daten vom rechner, auf das entsprechende drucker ascii, umzuwandeln.


    so benutzte ich noch vor commodore ein eprom wie eine pla.


    als dann commodore die pla erstes mal benutzte, im dem c64, kam ich dann auf die idee,

    die commodore pla (82s100), wie ein eprom auszulesen, auszuwerten und durch ein eprom zu ersetzen.


    damals gab es aber noch kein 27512 eprom und auch später war es teurer als die original commodore pla.


    so benutzte ich die original commodore pla in kombination eines kleinerem eproms für die änderungen.

    so machte ich es aber auch am anfang bei dem pet, als proms oder eproms viel zu teuer oder noch nicht

    in der entsprechenden größe lieferbar waren.


    z.b. für die umlaute. ich nahm das original rom und blendete nur in den entsprechenden speicherbereichen,

    die paar bytes, mit meinen änderungen ein.


    gruß

    helmut

    Edited once, last by axorp ().

  • …weil das hier ein richtig fertiger Haufen Verrückter ist, lasse ich Bilder sprechen:





    Ergebnis:



    Toast_r , Jogi , @allediehierimbootsindundsoherrlichunterstützen


    DANKE! :)


    Der GAL, sowie die PROMs- alles funktioniert auf Anhieb.