Erkennung welcher PET / CBM

  • Es gibt ja viele verschiedene PET und CBM. Mehr oder weniger RAM, integrierte Kassette oder nicht, verschiedene Tastaturen etc., verschiedene Boards, unterschiedliche RAM Typen ...



    Aber aus Sicht der Software hat sich bis zum CBM 8032 erfreulicherweise kaum etwas an der Hardware getan:

    • IO immer an derselben Stelle und selbe Funktion
    • Bildschirm immer ab $8000
    • ROM Plätze immer gleich



    Was sich wirklich (aus Sicht der Software) geändert hat:

    • 40 / 80 Zeichen
    • 6545 CRT Controller statt TTL
    • Banking ab 8x96



    Gibt es sonst noch etwas das ich übersehen habe?




    Aus Sicht der 6502 nach dem Reset ...

    ... kann ich feststellen welcher Geräte Typ ich bin (wenn ich kein ROM lesen kann)?

    • kann man feststellen ob 40 oder 80Zeichen habe?
    • kann ich feststellen ob da ein 6545 ist (ohne was kaputt zu machen)?
    • kann ich feststellen wie ich den 6545 initialisieren muss?



    Das Banking ist einfach festzustellen, also 8296 und 8096 ist kein Thema.

  • 40/80 kann man feststellen, indem man auf 1K oder 2K Bildschirmspeicher prüft.

    Geht natürlich nicht, wenn ein 40 Zeichen Rechner trotzdem mit 2K ausgerüstet ist.

    Am sichersten ist nach dem Starten mit PRINT und PEEK.

    Wenn Du das aber direkt nach dem Reset wissen willst, weiß ich auf Anhieb erstmal nix.

    RE: Bildschirminhalt in RAM sichern (CBM4032/8032/etc)


    PRINT PEEK(213), geht auch direkt nach dem Start. :)

  • RE: Bildschirminhalt in RAM sichern (CBM4032/8032/etc)


    PRINT PEEK(213), geht auch direkt nach dem Start. :)

    Das Plan ist aber vermutlich, das in Assembler zu prüfen.

    • i-Telex 7822222 dege d

    • technikum29 in Kelkheim bei Frankfurt

    • Marburger Stammtisch

    Douglas Adams: "Everything, that is invented and exists at the time of your birth, is natural. Everything that is invented until you´re 35 is interesting, exciting and you can possibly make a career in it. Everything that is invented after you´re 35 is against the law of nature. Apply this list to movies, rock music, word processors and mobile phones to work out how old you are."

  • Das Plan ist aber vermutlich, das in Assembler zu prüfen.

    Ja genau.

    Und es sollte möglichst auch gehen, wenn kein ROM mehr lesbar ist.




    40/80 kann man feststellen, indem man auf 1K oder 2K Bildschirmspeicher prüft.

    Das mit den 1K oder 2K Bildschirm RAM hat was.

    Danke!


    Die Kisten mit 4K (8x96) können ja alle 40 und 80 soviel ich weiß.



    Kann eigentlich etwas passieren wenn man den 6545 auf 80 Zeichen initialisiert an einem 40 Zeichen CBM?

  • Die CRTC-4032 (12") und 8032 haben ja den gleichen Bildschirm, kaputtmachen kann man damit demnach nix.

    Nur die Adressierung des Bildschirmspeichers passt dann halt nicht.

    9" mit CRTC gab's gar nicht?

    • i-Telex 7822222 dege d

    • technikum29 in Kelkheim bei Frankfurt

    • Marburger Stammtisch

    Douglas Adams: "Everything, that is invented and exists at the time of your birth, is natural. Everything that is invented until you´re 35 is interesting, exciting and you can possibly make a career in it. Everything that is invented after you´re 35 is against the law of nature. Apply this list to movies, rock music, word processors and mobile phones to work out how old you are."

  • ein Unterschied ist noch die Dekodierung vom I/O Bereich und Editor ROM. Da gibt es zwei Varianten, mit 256 byte und 1kB I/O Bereich. Das wurde dann für einen erweiterten Editor genutzt, deutsche Tastatur etc.


    Bin mir jetzt nicht sicher, ob das immer mit dem CRTC einhergeht, aber ich denke mal schon?

    Zuletzt repariert:

    10.11. defektes µT RAM im Apple //e ersetzt

    10.11. defektes µT RAM im Atari 130XE ersetzt

    12.11. VC20 mit black screen: defekter Videotransistor ersetzt

  • ein Unterschied ist noch die Dekodierung vom I/O Bereich und Editor ROM.

    Wobei die IO Adressen gleich sind.


    Aber es wird feiner dekodiert, auf 256 Bytes.


    Sodass für das Editor ROM wirklich (fast) 4K zur Verfügung sind. :)

  • Wobei die IO Adressen gleich sind.


    Aber es wird feiner dekodiert, auf 256 Bytes.


    Sodass für das Editor ROM wirklich (fast) 4K zur Verfügung sind.

    ja, aber nur bei denen mit dem crt controller.

  • den crt controller immer zuerst inizialisieren.

    egal ob vorhanden oder nicht. bei den ohne geht es ins leere oder in die gespiegelten anderen 652x ics

    und nach dem crtc dann die anderen inizialisieren.

    so musst du nicht die beiden 40 zeichen typen unterscheiden.

    80 zeichen gibt es nur mit crtc.


    gruß

    helmut

  • Die crtc werden für 40 und 80 Zeichen identisch konfiguriert. Die Hardware liest dann entweder ein oder zwei chars pro Takt.


    Man kann aber identifizieren ob CRTC da ist. Und zwar über das Timing des VSYNC interrupts. Der hängt vom Timing ab.


    Man kann nach dem Reset zB auf die 16000 cycles des non-crtc prüfen und/oder den CRTC leicht unterschiedlich programmieren und die cycles zwischen den vsync ints zählen.

  • Die crtc werden für 40 und 80 Zeichen identisch konfiguriert.

    Oha, ich dachte eigentlich dass das Unterschiede sind.


    Weil es doch dieses Tool gibt, das auf 40 Zeichen umschaltet.


    Ja. Aber das Tool konfiguriert dann einfach 20 Zeichen.


    Da die Hardware dann 2 chars pro Takt liest, werden 40 Zeichen angezeigt.


    Angepasst wird nur die Anzahl der _angezeigten_ Zeichen. Die Länge der Rasterline in usec/Taktzyklen wird nicht verändert, um das Timing nicht verändern für den Monitor. Was ggf. noch passiert (ich kenne das Tool nicht selbst) ist, dass der horizontale Sync verschoben wird, um die 40 Zeichen horizontal zu zentrieren.


    André


  • Damit sollte jedem geholfen werden koennen.

    Glaub ich ;)


    http://blog.c128.net/archives/793


    Code ist NICHT von mir.(C)opy sauhund im Forum64 hat

    laut Angaben des Link Besitzers.


    Wer keine Lust auf Links hat, hier der Code :


    100 rem *** cbm checker b (wte) ***
    110 :
    120 cbm=peek(65534): c$=“commodore “
    130 if peek(1177)=63 then poke1177,62: cbm=peek(65534): poke1177,63
    140 restore
    150 rem 2001,3001,4001,p500,cbm600/700,vc20,c64,c16/p4,c128
    160 data 107, pet 2001 series, 1, 1, 0
    170 data 27, cbm 3001 series, 1, 1, 0
    180 data 66, cbm 4001 series, 1, 0, 0
    190 data 229, p500/cbm510, 0, 0, 0
    200 data 214, 600/700 series, 0, 0, 0
    210 data 114, vic20/vc20, 0, 0, 0
    220 data 72, 64, 0, 0, 0
    230 data 179, c16/c116/plus4, 0, 0, 0
    240 data 23, 128, 0, 0, 1
    250 :
    260 ix=0: for i=1 to 9
    270 read a, a$, pet, kp, c128
    280 if a=cbm then ix=i: i=9
    290 next
    300 if ix then 370
    310 :
    320 print
    330 print „not supported system!“
    340 print „dieser computer wird nicht unterstuetzt!“
    350 end
    360 :
    370 if kp then poke59458,peek(59458) or 32:rem killer poke (fast poke)
    380 if kp<>pet then if peek(224)=0 then a$=“cbm 8″+mid$(a$,6)
    390 c$=c$+a$: if c128 then graphic 0: slow
    400 :
    410 print chr$(147)chr$(142): if pet then poke 59468,12
    420 print „this program is running on a“
    430 print c$: print
    440 print „dieses programm laeuft auf einem“
    450 print c$: print: end


    Alles geht - Nichts muß

    • Offizieller Beitrag

    Bei mir lief es nur, wenn ich die Anführungsstriche geändert habe.

  • Bei mir lief es nur, wenn ich die Anführungsstriche geändert habe.

    Was meinst du genau damit ?

    Alles geht - Nichts muß

    • Offizieller Beitrag

    Vermutlich die komischen Ansführungszeichen unten.

    Das ist ein ungültiges Zeichen.


    Das Programm liest ja nur ein Byte aus dem ROM ein.

    Die Unterscheidung der PET/CBM Rechner auf die Art erkennt nur die BASIC-Version.

    Über den Rechner, in dem das steckt, sagt das nicht viel aus.

    Für den gewünschten Zweck sowieso nicht geeignet (Erekennung auch ohne ROM).

  • Ich hab nur die Adressen genommen und auf den versch.

    Rechnern ausprobiert.

    Peek lieferte mir entsprechend immer unterschiedliche Werte je

    nach Rechner. Das Listing muss ja nicht genommen werden.


    Die PEEK(xx) Adressen sind das interessante.

    Alles geht - Nichts muß

  • Ob 40 oder 80 Zeichen, kann man herausfinden, indem man überprüft, ob die Zeichen gespiegelt werden, oder nicht.


    Habe ich zum Beispiel ab Zeile 1425 (init_linelen) hier so gemacht:


    https://github.com/RhinoDevel/keyboard/blob/v1.4/main.asm


    Ich meine, es gibt noch mindestens einen (einfacheren?) Weg, habe ich aber gerade vergessen..