You are not logged in.

1

Thursday, May 29th 2008, 11:55pm

8032 char rom --- ram hardware

Für den 8032 gibt es fast keine Spiele, weil der Zeichensatz fix programmiert ist. Es gibt zwar diese Grafik Hardware, aber die ist zuwenig verbreitet und zu teuer gewesen. Außerdem hätte der 8 Bit 6502 seine Probleme mit den Datenmengen.


Mich wundert es, dass noch kein findiger Hardware Experte Verbesserungen an diesem Missstand gemacht hat.



Es gibt ja diese Kernelrom Umschalter wo einfach das Chip Select per Schalter auf ein anderes ROM geschaltet wird oder ein Adresspin in einen anderen Eprom Bereich geschaltet hat.

Könnte man nicht so den Charakter rom auf ein zusätzliches RAM umschalten? Zuvor müsste man das RAM allerdings irgendwie beschreiben. Also ideal wäre wenn man den Character RAM erst irgendwo im Adressraum einblenden und dann statt dem charakter ROM verwenden könnte.

Damit hätte man die Grafik am 8032 in der Hand und könnte diverse Spiele umsetzen, zwar nur monochrom aber naja besser als jetzt.

2

Saturday, May 31st 2008, 4:03pm

Diese Idee hatte ich schon mal im Form fallen lassen. Zum Einen braucht man passendes I/O um auch in diesen Bereich schreiben zu können, dazu möglichst eine Umschalt-Möglichkeit per Software, letztlich wird das niemand für ein Programm einbauen.

Wenn man so etwas macht, ist das reiner Zeitvertreib oder Proof of Concept. Die geputzten Sammlerstücke sind meistens technisch sowieso in einem desolaten Zustand. Da könnte jeder Eingriff das Ende nur noch schneller herbei bringen.

Michael
If we're evil or divine - we're the last in line. - Ronnie James Dio (1984) -

Posts: 1,791

Date of registration: Aug 28th 2005

Location: Leverkusen

  • Send private message

member since 90 month member since 90 month member since 90 month member since 90 month member since 90 month

3

Saturday, May 31st 2008, 6:17pm

Was der 8032 für ein Char-ROM verwendet, weiß ich nicht. Bei meinem 8296 ist der Sockel für einen 2532 vorgesehen, ausgeliefert wurde er allerdings mit einem 2732, bei dem am Chip einige Beinchen angepasst waren - in Handarbeit gelötet!

Irgend wann hatte ich mich genug geärgert, daß die wenigen Spiele mit dem deutschen Zeichensatz des DIN-Char-ROMs teilweise bis zur Unkenntlichkeit verändert dargestellt werden (z.B. Schach) und mich etwas mit der Sache beschäftigt.
Ich wusste von dem POKE 59468, 12 oder 14 und dem Umschalten mit PRINT CHR$(14) oder CHR$(142), also müssen ja schon mal zwei Zeichensätze vorhanden sein.
Im Schaltplan habe ich dann gefunden, dass dabei /GRAPHIC an A10 des Char-ROMs umgeschaltet wird. Bei einem 2532 gibt es aber noch A11 (/CS2 beim 2516), und das geht an MA13 des 6545 - wunderbar! dachte ich: ich habe nicht zwei, sondern VIER Zeichensätze zur Verfügung!
Damit könnte ich in einer Seite die DIN-Belegung, und in der anderen 2K-Seite die Belegung für die Spiele unterbringen (weiss nicht, wie die üblcherweise benannt wird).
Den POKE zur Umschaltung von MA13 weiss ich leider nicht mehr, ich habe ihn dummerweise nicht notiert.
Jedenfalls habe ich ein 2532 mit entsprechendem Inhalt gebrannt und konnte damit zwischen VIER Zeichensätzen umschalten.
Für meine Spiele ist das aber immer noch keine Lösung, da MA13 wieder rückgesetzt wird, wenn das Spiel versucht, sich seinen "passenden" Zeichensatz mit oben beschriebenen Methoden auszuwählen.
Jetzt habe ich noch den Gedanken im Kopf, per speicher-residentem Programm ständig im Hintergrund den "richtigen" Modus eingestellt zu lassen. Dann kann das Spiel einstellen, was es will, es wird 50 mal pro Sekunde wieder mit den "tatsächlich richtigen Werten" überschrieben. Aber ein Assembler-Programm, das im Hintergrund läuft, kann ich leider nicht aus dem Handgelenk schütteln... gibt es einen Quelltext irgendwo? z.B. vom cbmlink-server?

Diddl, natürlich kann man das Char-ROM durch ein RAM überlagern - diesen Gedanken hatte ich aber auch schon. Da dabei aber an die 24 Leitungen (12 Adressleitungen, 8 Datenleitungen + CS) umgeschaltet werden müssen, ist das mit entsprechendem Aufwand verbunden:
24 Leitungen entspricht 6 Stück 74x157 oder 6 Stück 74x541, zzgl. weiterer Logik, um das RAM beschreiben und irgendwo einblenden oder byte-weise beschreibbar zu machen.
Dual-Port-RAM wäre eine weitere Lösung, aber ich habe nur 1 KB bekommen (und das wären zwei Riesen-Käfer zu je 48? Beinchen) - ich fand den zu betreibenden Aufwand bislang zu hoch für eine Lösung, die praktisch nur eigene Software unterstützen würde.

Irgendwann möchte ich eine CP/M-Karte in meinem 8296 haben und dann werde ich das vermutlich mit in Angriff nehmen. Der CBM hat nämlich auch keine geschweifte Klammer in seinem Zeichensatz, und ein veränderbarer Zeichensatz würde es erlauben, den Zeichensatz anderer CP/M-Rechner oder Terminals zu implementieren. Für den Kaypro gibt es z.B. einen Flugsimulator(!), der mit Grafik-Zeichen arbeitet.

Michael, ist das wirklich so? Geputzte Sammlerstücke sind in meist technisch desolatem Zustand? Ist es den meisten Leuten wichtiger, die Sachen sehen gut als, als daß sie funktionieren??

4

Saturday, May 31st 2008, 7:45pm


24 Leitungen entspricht 6 Stück 74x157 oder 6 Stück 74x541, zzgl. weiterer Logik, um das RAM beschreiben und irgendwo einblenden oder byte-weise beschreibbar zu machen.


Du musst eigentlich erst mal eine Adresse zum Beschreiben des SRAM haben. Bei den alten 3000/4000er-CBMs könnte man das Loch hinter dem Bildschirm-Speicher nutzen. Beim 8000er müsste man mal den I/O-Bereich prüfen. Da wird sicher irgendwo gespiegelt.
Das wäre dann ein Dekoder, evtl. ein 74138 oder etwas selbst programmiertes (GAL). Dazu kommt ein Bustreiber und evtl. noch "etwas" zum Dekodieren der passenden Signale zum Lesen aus dem SRAM. Letzteres ist aber wahrscheinlich nicht umbedingt notwendig.
Das fehlende Bauteil ist nun noch ein Dekoder + Latch zum Schalten der passenden Bänke : 138er + 74573/74 (Bezeichnung habe ich im Moment nicht wirklich im Kopf, jedenfalls würde ich ein Latch mit FlipFlops nehmen).
Ich würde mit SRAM + 4 weitere ICs auskommen.
Du würdest sicher die Daten- und Adressleitungen isolieren wollen ? - Das ist nicht notwendig. Solange das aufgesetzte RAM kein /CS hat, geht da auch nichts rein oder raus.


Quoted


Michael, ist das wirklich so? Geputzte Sammlerstücke sind in meist technisch desolatem Zustand? Ist es den meisten Leuten wichtiger, die Sachen sehen gut als, als daß sie funktionieren??


Ich möchte nicht wieder die Predigt über 25-30 Jahre alte Elkos halten. ;) - Was man da so an alten Netzteilen sieht und Ideen von irgendwelchen Elektrolyt-Esoteriker mitbekommt, ist wirklich manchmal schon sehr erstaunlich. :)

Michael
If we're evil or divine - we're the last in line. - Ronnie James Dio (1984) -

Posts: 1,791

Date of registration: Aug 28th 2005

Location: Leverkusen

  • Send private message

member since 90 month member since 90 month member since 90 month member since 90 month member since 90 month

5

Sunday, June 1st 2008, 6:37am

Ich würde mit SRAM + 4 weitere ICs auskommen.
Du würdest sicher die Daten- und Adressleitungen isolieren wollen ? - Das ist nicht notwendig. Solange das aufgesetzte RAM kein /CS hat, geht da auch nichts rein oder raus.
Das würde ich wirklich gerne verstehen, wie das funktionieren soll. Bei der Erzeugung des Bildes wird das Char-ROM bzw. das SRAM ja durch den 6545 adressiert. Wenn ich das SRAM beschreiben möchte, kommen Adress- und Datenleitungen (über welche Bänke, Dekoder, I/O-Ports auch immer) dagegen vom CPU-Bus.

Möchtest Du die Adressen über den 6545 liefern?
Wenn man den vorrübergehend so programmiert, daß man sagt: diese Adresse ist die erste und die letzte, die du darstellen sollst, würde nur besagte Adresse adressiert werden. Ob und inwieweit das Auswirkungen auf HSYNC und VSYNC hat und ob das der Festfrequenzmonitor verträgt, kann ich jetzt noch nicht sagen.

Also Adressen vom 6545, original-Char-ROM mit /CS=1 deaktivieren, SRAM mit /CS=0 aktivieren, R//W=0 zum Schreiben des SRAMs und Daten über ein 8-Bit-Latch irgendwo im I/O-Bereich?

6

Sunday, June 1st 2008, 9:16am

Ich bin mal davon ausgegangen, dass man einen Adapter zum Einstecken in den Char-ROM Steckplatz baut. Da hat man dann gleich die passenden Leitungen. Die Signale für den eingezeichneten Dekoder und evtl. ein paar andere Kleinigkeiten müsste man an passender Stelle abgreifen.
Da sollte dann so funktionieren : Der eingezeichnete Adress-Dekoder generiert Adressen für die Register und das Datenlatch am SRAM. Mit den Registern, die per D0-6 (D7 ist noch frei) konfiguriert werden, können verschiedene Konfigurationen geschaltet werden.
Man kann z.B. das ROM abschalten, eine Bank am SRAM auswählen und über das Latch (evtl. auch Bus-Treiber), Daten ins SRAM schreiben. Die per Hand gezeichnete Plan ist nach Ansehen der CBM 8296-Schaltungsunterlagen entstanden. Ich habe es mal auf die wesentlichen Teile reduziert.

So braucht man : 1 SRAM, 1 Dekoder (7413x o. GAL), 74125, 74373 (eher 74245) und einen 74574 (Register). Kann sicher noch etwas optimiert werden. Ist nebenbei beim Käffchen und Wachwerden entstanden. ;)

http://www.cbmhardware.de/self/cbm8296_charram.jpg

Michael

Edit: Da fehlt noch etwas : Das eingezeichnete Latch müsste die Datenleitungen von UC4 isolieren. Zum Beschreiben des SRAMs braucht man dann noch zusätzlich einen 74245er Bus-Treiber. Dann kann man auch die D0-7 Leitungen vom CPU-Bus beim "Normal-Betrieb" isolieren, dazu noch SRAM lesen und schreiben.
Damit wäre dann das letzte freie Register (D7) belegt. Gesamt ist das schon ein ziemlicher Aufwand.
If we're evil or divine - we're the last in line. - Ronnie James Dio (1984) -

This post has been edited 1 times, last edit by "cbmhardware" (Jun 1st 2008, 10:41am)


7

Sunday, June 1st 2008, 1:53pm

Das geht so doch nicht. A0-10 müssen auch gepuffert werden. :/
Das würde am Ende ein unglaubliches Bauteil-Grab werden. Das lohnt auf keinen Fall.

Michael
If we're evil or divine - we're the last in line. - Ronnie James Dio (1984) -

Posts: 1,791

Date of registration: Aug 28th 2005

Location: Leverkusen

  • Send private message

member since 90 month member since 90 month member since 90 month member since 90 month member since 90 month

8

Sunday, June 1st 2008, 7:20pm

Na, sag' ich doch! Schade eigentlich...
Vielleicht mit einem CPLD? Ja... bin ja schon wieder ruhig! :wacko:

9

Sunday, June 1st 2008, 10:44pm

Also mein 8296 ist in tadellosen Zustand und läuft wie ein Glöckchen. Allerdings macht mir auch das Alter der Elkos Kopfzerbrechen. Kann man da jeden Elko mit gleicher Kapazität verwenden oder müssen das solche Topfdinger sein? Gibt es da eine gute Quelle für Ersatznetzteile und/oder passende Elkos?


Zu dem Charakter RAM Problem:

Mir würde es langen, wenn ich das RAM an den Videocontroller schalten kann und davon weg.

Die Programmierung des statischen RAM würde ich ganz einfach mit einem Atmega 8 machen. Der Mega 8 kann über zwei Userportleitungen mit dem CBM kommunizieren oder auch über IEEE488 als Gerät 12.

Wenn der Atmega nicht gerade das RAM programmiert, dann schalte ich alle Ports als Eingänge und gut.



@cbmhardware

ein grösseres Eprom würde nicht langen, denn ich will natürlich das charset frei definieren können!

10

Sunday, June 1st 2008, 11:35pm

Ha, eben kam mir eine Idee. Es geht doch !

Die Lösung sind die Steckplätze für die Erweiterungs-ROMs ($a000,$b000). Einer dieser Steckplätze wird beschreibbar gemacht ( http://www.itsm.uni-stuttgart.de/staff/s…ad/8kzusatz.jpg ) .
Das mit dem Dekoder und den Registern kann dann auch so bleiben. Die Datenleitungen, die an das SRAM gelegt werden, müssten dann aber jeweils isolierbar sein. Ein Latch zwischen CPU-Datenleitungen und noch eines zwischen UC4 und SRAM.
Abgesehen vom Schaltungsaufwand ist das dann eine komfortable Sache. Man kann dann per Register die passende Bank auswählen und die SRAM-Bank einfach von Disk befüllen : L"mychar",08,$a000 und schon kann der neue Zeichensatz per Registerumschaltung genutzt werden.

Vielleicht werde ich mir mal so etwas "eaglen".

Diddl: Du musst auf Spannung und Kapazität achten. Diese Becher-Elkos mit Verschraubung an den Polen sind noch kaufbar.

Michael
If we're evil or divine - we're the last in line. - Ronnie James Dio (1984) -

11

Sunday, June 1st 2008, 11:56pm

Vielleicht werde ich mir mal so etwas "eaglen".


Solltest du so etwas auf Print rausbringen oder gar als Bausatz, - dürfte ich mich da als Abnehmer registrieren? So eine Erweiterung würde ich sehr gerne in meinen 8296 einbauen.

Würde das auf einem 8096 laufen, in dem Speicherbereich liegt bei mir sowieso schon RAM bzw. ist einblendbar.

Diddl: Du musst auf Spannung und Kapazität achten. Diese Becher-Elkos mit Verschraubung an den Polen sind noch kaufbar.

Michael


Danke. Weisst du eine Quelle? Ebay? oder irgendein Shop?

12

Monday, June 2nd 2008, 3:45pm

Quoted


Solltest du so etwas auf Print rausbringen oder gar als Bausatz, - dürfte ich mich da als Abnehmer registrieren? So eine Erweiterung würde ich sehr gerne in meinen 8296 einbauen.
Würde das auf einem 8096 laufen, in dem Speicherbereich liegt bei mir sowieso schon RAM bzw. ist einblendbar.


Ich werde mal im Laufe der Zeit einen Schaltplan ohne Gewähr machen. Vielleicht werfe ich mal 30 Euro in den Bach und lasse einen Prototypen anfertigen. Danach gibt es dann evtl. noch einen endgültigen Schaltplan. Ein Bausatz wird sich wohl kaum lohnen.


Quoted


Danke. Weisst du eine Quelle? Ebay? oder irgendein Shop?


Naja, die üblichen Verdächtigen : Reichelt oder Conrads. Bei Ebay würde ich darauf achten, wann die Dinger gestempelt wurden. Da wird gelegentlich Lagerware verramscht. Wenn die schon 20 Jahre irgendwo in der Ecke lagen, kann man besser ein paar Euro mehr beim Händler investieren.

Michael
If we're evil or divine - we're the last in line. - Ronnie James Dio (1984) -

13

Monday, June 2nd 2008, 3:56pm

Vielleicht werfe ich mal 30 Euro in den Bach und lasse einen Prototypen anfertigen. Danach gibt es dann evtl. noch einen endgültigen Schaltplan. Ein Bausatz wird sich wohl kaum lohnen.


schade ... :(

Aber vielleicht lassen sich zwei Prototypen billiger anfertigen als einer?

14

Monday, June 2nd 2008, 5:24pm

Quoted from "Diddl"


Aber vielleicht lassen sich zwei Prototypen billiger anfertigen als einer?


Wenn aus einem Nutzen zwei Platinen rauskommen, werde ich mich melden. Das könnte drin sein.

Noch so nebenbei: Die Erweiterung könnte ebenfalls mit der erwähnten Beschaltung als Mehrfach-Option-ROM oder auch als kleine RAM-Erweiterung verwendet werden. Gesamt wäre noch eine kleine Batterie zur Erhaltung des Inhalts sinnvoll. Demnächst mal sehen ...

In nächster Zeit bin ich aber erstmal beschäftigt. Ich warte im Moment auf einen Schwung 30000mcd- 10mm LEDs. Mir schwebt eine extrem stromsparende Lampe (<5W) mit wirklich brauchbaren Licht vor ("gefühlte" 50-60 Watt Lichtleistung). http://www.clicksmilies.com/s1106/natur/…-smiley-008.gif
Manchmal ist es sicher nicht schlecht, wenn man auch mal etwas wirklich nützliches baut. :)

Michael
If we're evil or divine - we're the last in line. - Ronnie James Dio (1984) -

15

Monday, June 2nd 2008, 7:09pm

Fein, wäre schön es klappen würde mit dem Char RAM!


Viel Erfolg mit deinem LED Lichtquellen Projekt. Das scheint ja der große Schlager zu sein im Moment. Nur mit der Regelung der LED scheint es nicht so einfach zu sein? Konstantstromquelle für die LED's, und Power FET die PWM machen mit dem Konstantstrom?

16

Wednesday, June 4th 2008, 10:00pm

Also die Lösung mit dem Atmega stelle ich mir so vor:

Normal ist das Charakter ROM aktiv.

Über den Userport kann der CBM dem Atmega Befehle erteilen: ROM, RAM aktiv, RAM Bank1, 2, 3, ... 16, RAM schreiben.

+ Umschalten RAM/ROM: der Atmega setzt die CS der Speicher (eventuell spendiert man noch einen Inverter)

+ RAM schreiben: der Atmega trennt das RAM vom Videocontroller, setzt die Adresse und Daten und WR. .... danach alle Adressbits auf hochohmig.


Dadurch spart man sich vier weitere 74LS244 und hält den ROM Bereich frei für Exbasic Level II


.

17

Thursday, June 5th 2008, 10:25am

Das wird so aber leider nicht funktionieren. Der ATMega lauscht mit maximal 250Khz bei 16 Mhz Takt am Bus. Das wäre so das theoretische Maximum, das man aber nicht erreichen wird. Die RISC-CPU ist noch mit Weiterreichen der Daten beschäftigt und muss die Adressleitungen des SRAM beschalten.
Btw /OE sollte man einfach auf GND legen. Nebenbei weis der Prozessor gar nicht, wann er auf den Bus des CBM greifen soll, da scheinbar R/W (oder sogar etwas mehr) fehlt. Der würde wahllos Daten vom Bus ziehen und das SRAM mit "Grütze" befüllen.
Wenn man mal davon ausgeht, dass mit den 4 Leitungen vom Userport ein serielles Interface realisierbar ist, mit dem man dem Mega ein paar Befehle mitteilen kann, wird es dennoch an den schon genannten Punkten scheitern. So einfach ist das leider nicht.

Zur LED: Ich habe die leider noch nicht da. Im Moment denke ich noch über ein passendes Netzteil nach, damit die Vorwiderstände erst gar nicht notwendig werden. Finde ich bei diesen kaufbaren Lampen etwas merkwürdig, dass die eigentlich zum Stromsparen gedacht sind, aber immer wieder Widerstände darin zu finden sind. Das sind immerhin 48% unnötiger Energieverbrauch.
Das mit der Taktung muss ich auch erstmal ein bisschen testen. Da wird wohl ein Mega etwas Hilfe leisten dürfen.

Michael
If we're evil or divine - we're the last in line. - Ronnie James Dio (1984) -

This post has been edited 1 times, last edit by "cbmhardware" (Jun 5th 2008, 3:41pm)


18

Thursday, June 5th 2008, 1:23pm

Jetzt moment mal, korrigiert mich wenn ich irre. Ich gehe von folgenden Fakten aus (bitte korrigiert mich wenn ich falsch liege):
  • Der CHAR Rom ist im normalen Adressbereich NICHT sichtbar.

    Also handelt es sich um einen eigenen Adressbus und Datenbus des Videocontrollers der nix mit der 6502 CPU zu tun hat.

  • Ich möchte sowohl das originale Char ROM als auch alternativ ein Char RAM betreiben. Das ist der Grund warum ich die CS steuere, damit kann der Atmega entweder RAM oder ROM für den Videocontroller sichtbar machen.

  • Der Datenbus zwischen Videocontroller, Char ROM und RAM:

    Der Videocontroller schreibt nix ist also hochohmig. Im normalen Betrieb legt das ROM die Daten am Bus an. Durch CS Umschaltung kann das RAM diesen Job übernehmen.

    Während der ATmega das RAM beschreibt, ist das ROM deaktiviert (CS) und das RAM über die WR Leitung als Eingang konfiguriert. Also in dem Fall (und NUR in dem Fall) kontrolliert der ATmega den Datenbus. Natürlich zeigt der Videocontroller in der Zeit wirre Zeichen an, ist ja egal. Schlimmstenfalls kann man ihn ja dunkel tasten.

  • Der Takt bzw. die Geschwindigkeit des ATmega hat nix damit zu tun.

    Die 74LS244 schalten den RAM weg vom Adressbus, sodass der ATmega in aller Ruhe ohne Timing Probleme Adressen anlegen kann die er will. Der Datenbus wird wird für die Zeit der RAM programmierung vom ATmega kontrolliert.

19

Thursday, June 5th 2008, 1:33pm

The so-called 'Fat40' is a 4032 model that has a 12" screen and a "universal board" - a board that can be used for the 8032 or the 4032. Thus it uses the CRTC as video chip. A separate static memory separate from main memory is used as video RAM.

PET 4032 CRTC usage block diagram
---------------------------------

Source code

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
                |               CRTC                                                      |
                ---------------------------------------------------------------------------
           MA0-9  |                              RA0-2 |    -------                   DE|
                  |                                    |    |     |                     |
                  |  -----      -------                -----|A0-2 |      -----          |  ---
                  |  |   |      |     |       -----         |     |D0-7  |   |     ---  +--| | Video
                  +--|   | A0-9 |     | D0-7  |   |    D0-6 |     |------|   |-----| |     |>|---
                     | > |------| RAM |---+---|   |---+-----|A3-8 |      |   |     | |-----| |
 CPU A0-9 -----------|   |      |     |   |   |   |   |     |     |      -----   +-| |     ---
                     |   |      |     |   |   -----   |     -------      shift   | ---      AND
                     -----      -------   |   Latch   |     Charrom     register |  XOR
                   Mux 2-to-1             |           |D7                        |
                                          |           +--------------------------+
                     -----                |
                     |   |                |
 CPU D0-7 -----------|   |----------------+
                     |   |
                     -----
                    Buffer



During Phi2 low (Processor does not use the bus) the Mux chip selects the MA0-9 address lines from the CRTC. The video RAM then outputs the character value and it is saved in the latch. The latch output is then used as input for the Charrom. The output of which is given to the shift register that makes a pixel stream rather than a byte stream.

20

Thursday, June 5th 2008, 1:39pm

Ein Fehler ist schon drin, - der interne "Adressbus" des Char-Rom hat 9 Bit nicht 12. Kleiner Denkfehler von mir ...