Hier gibt es über das Thema schon eine tiefgehende Diskussion mit technischem Hintergrund:
Hallo Besucher, der Thread wurde 64k mal aufgerufen und enthält 295 Antworten
letzter Beitrag von Ruudi am
CP/M für C64
- Asklia
- Erledigt
-
-
Hab mal weiter Fehler in dem Schaltplan mit dem GAL entfernt (noch 9 sind drin) und ne Platine gestartet. Aber da passt einiges noch nicht. U.a. wegen den Schaltplanfehlern. Vermutlich ist mein c64 Modulport auch noch nicht an allen Kontakten richtig benannt, so dass einige Ferritperlen noch keinen Kontakt zu ihm bekommen.
-
So..jetzt meckert Eagle schonmal nicht mehr wegen dem Schaltplan, was noch nicht heissen muss, dass da keine Fehler mehr sind. Jedenfalls konnte ich den Autorouter mal testen, aber die ICs müssen noch trickreicher verteilt werden, damit er ne Chance hat.
Dann ist die Zunge von dem Modul (die in den c64 geht) eigentlich noch zu kurz, wenn ich das recht sehe. Evtl. muss man da tricksen und paar flache Bauteile drauf setzen (Ferritperlen, die kleinen Kondis usw), die dann halt mit in die Aussparung rutschen (hoffentlich).
-
Hab mal weiter Fehler in dem Schaltplan mit dem GAL entfernt (noch 9 sind drin) und ne Platine gestartet. Aber da passt einiges noch nicht. U.a. wegen den Schaltplanfehlern. Vermutlich ist mein c64 Modulport auch noch nicht an allen Kontakten richtig benannt, so dass einige Ferritperlen noch keinen Kontakt zu ihm bekommen.
Hey !
wenn du 3 Wochen nach dem letzten Posting das Thema wieder auffrischst, wäre es toll, wenn du noch verlinken könntest um welchen Schaltplan es geht?
Wäre vielleicht für mehr Leute interessant (bisher wurde dein angehängtes File 0-mal heruntergeladen) und einige die wie ich neu zu dem Thema dazukommen, oder schonmal dabei waren aber in den drei Wochen seit dem 7. Mai vergessen haben wo genau der bewusste "Schaltplan" zum ersten Mal erwähnt wurde und worum es überhaupt geht, wären froh, wenn sie sich nicht Stecknadel-Heuhaufen-artig durch gefühlt 5 Jahre Thread wühlen müssten!Danke! !
-
Dieser Schaltplan war der Anfang.
Es klemmt aber noch an vielem. U.a. ist die Platinenform noch falsch. Und ob die Bauteile alle passen werden, muss man auch noch dann sehen.
-
Es geht immer weiter. Jogi hat wertvolle Hilfe geleistet. Danke!
Die Platinenform nähert sich weiter dem Ziel.
Die Platine wird jetzt mal zu 100% geroutet, obwohl vcc und gnd sicher noch Optimierung brauchen.
Muss die Bauform der Kondensatoren noch anpassen.
Die Ferritperlen dürften noch falsche Bauteile sein (hab damit noch nie gearbeitet).
Der ls197 in der Eagle Lib ist noch falsch und dürfte noch keine Stromversorgung haben.
-
Klingt so, als ob Du auf der Zielgeraden bist
-
Die Ferrit-Perlen (sind ja SMD) für NMI, RESET und Phi2 auf die Unterseite verlegt.
Power-Pins für 74ls197 hinzugefügt.
Grösse der 100nF Kondis geändert. Meine hier haben 3mm Pin-Abstand. Hab in der Lib nur 2,54 mm gefunden und die genommen. Hoffe, das passt trotzdem und ich hab keine übersehen...
-
Damit das mal nicht verloren geht...
Jogi hat mich gestern im Chat drauf angesprochen, ob man die Zunge, die in den c64 (Expansion Port) geht, nicht evtl. kürzen könnte.
Ich hab eben an einem offenen c64c (also nur Board im Unterteil, weil der gerade repariert wird) gemessen.
Von der Aussenkante Gehäuse bis zur Kante der Buchse hab ich mit ner digitalen Schieblehre 21,59 mm gemessen.
Von der Aussenkante Gehäuse bis zur Rückwand der Expansion Port Buchse, also dort wo die Platine anschlägt, wenn man sie ganz reinschiebt, hab ich 30,79 mm gemessen.
Ich weiss jetzt leider nicht, ob diese Abmessungen beim alten Brotkasten anders sind. Ausserdem will man ja bisserl Luft zum Gehäuse haben. Und dann käme ja evtl noch ein Gehäuse fürs Modul dazu, bzw. dessen Materialstärke.
Meiner Ansicht nach sind die 40 mm Zungenlänge schon ein ganz guter Richtwert. Viel kürzer kann sie wohl auf keinen Fall werden. Und so arg hohe Bauteil kann man auch nicht darauf platzieren, wenn da ggf noch ein Gehäuse drum rum kommt.
Ist halt schade, weil ich aktuell keine vernünftige Option sehe, einen Stecker für die 80-Zeichenkarte auf die Zunge zu packen. Wird wohl erst bei einer evtl. CPLD Version gehen.
-
Hi,
mal etwas aus meinem Fundus..eingebaut im C64 Pultgehäuse...
eine CP/M Karte aus der CT 12/87 leicht geändert und angepasst wie mir der Erbauer zusicherte.
Karte von Horst nach Vorlage aus der CT leicht abgeändert.
Gruß Jogi
-
Sehr interessant!
Ich war der Autor des Artikel in der ct und suche jemanden, der das alte Layout mit einem aktuellen Layoutprogramm noch einmal layoutet.
Wäre dein Kollege dazu - gegen angemessene Bezahlung - bereit oder in der Lage?
Gruss
Asklia -
Ich hab jetzt mal die 5V und GND Leitungen breiter gemacht und den Abstand vergrössert. Musste dazu paar Bauteil verschieben.
Hab nen Kondensator auf die Zunge verschoben. Die sollte man evtl. als SMD machen, damit sie dort flacher sind. Die Ferritperlen dort sind ja eh schon SMD.
Das Stromversorgungspad sollte man vielleicht zumindest in den Prototypen als Jumper ausführen. Darüber könnte man auch gleich schön den Stromverbrauch des Moduls messen.
-
Jogi hat vorhin eine interessante Frage aufgeworfen: wie testet man das C't cp/m Modul?
Für die C= Version gibt es ja ein Testprogramm:
http://www.baltissen.org/newhtm/c64_cpm.htm
(bischen runterscrollen bis zu dem Basic-Programm.)
Wenn ich das recht sehe, dürfte es aber mit der C't Version nicht funktionieren, weil aus Sicht des z80 ja die Umschaltadresse an einer anderen Stelle ist (statt ce00h nun ee00h).
Hat jemand ein angepasstes Testprogramm? Oder einen z80 Disassembler, um in obigem Code schnell zu schauen, wo man die Adresse anpassen muss?
-
Das 'Testprogramm' besteht grad mal aus zwei Befehlen (ld a,wert und ld bildschirm, a) wobei das High-Byte von bildschirm '244' wohl auch jeweils anzupassen wäre. Hab die Memory Translation von Asklia grad nicht im Kopf, aber die war schon arg wild...
Beim
Rücksturz zur ErdeRücksprung zum 6502 stehen die Assembler-Mnemonics sogar direkt dabei; den ld 0ce00h,a rauszufinden und abzuändern dürfte da nicht allzu schwer sein? -
Hast natürlich recht mc...
Wenn man in Zeile 1320 den Wert 206 auf 238 ändert, könnte der Rücksprung schon gehen.
Aber alles was dazwischen passiert (sind ja doch paar Byte z80 Code, wenn ich das recht sehe) könnte ja noch wichtig sein. Wenn der z80 meint in den Bildschirm zu schreiben, dabei aber gerade was ganz anderes überschreibt, wär das doch suboptimal....
-
OK, nochmal zum Mitmeißeln: Das 'Testprogramm' besteht ausschließlich aus einer Sequenz von 'ld a,immediate' und 'ld absolute,a' Befehlen, die irgend eienn Text nach 0f400h in den Bildschirmspeicher poken. Du mußt also nur die ganzen 244er-DATAs in das High-Byte jener Adresse ändern, auf der bei der c't-Karte die '02-Adresse $0400 fortfolgende gemappt wird.
Und Du kannst natürlich auch gleich den Text kürzen; drei Bytes Ausgabe mit den Bildschirm-Codes für 'Z80' sollten völlig ausreichen... das ist schließlich keine umfangreiche Test-Suite, sondern ein kurzes 'hallo welt' als Nachweis, daß sich da überhaupt was tut.
-
Danke für die Erklärung!
-
Also kann man das Testprogramm wohl deutlich verkleinern, wenn man die z80 Blockbefehle benutzt (8080 nimmt auf dem c64 eh niemand?).
das wäre dann etwa:
1000 00 nop
1001 00 nop
1002 00 nop
1003 21h 0fh 00h ld hl,<string_adr>
1006 11h 40d 244d ld de,<screen_adr> ; Adresse des Bildschirmspeichers
1009 01h 10h 00h ld bc,<string_len>
100c edh b0h ldir ; Copy string to screen
100e 62d 01h ld a,1
1010 50d 00 206d ld (ce00),a ; ee00 fur c't Karte
1003 nop
1004 nop
1005 nop
1006 195d 00 00 jmp $0000
1009 00 nop
100a 00 nop
100b 00 nop
100c 00 nop
100d 00 nop
100e 00 nop
100f string_adr: "RUUD IS THE BEST "(hab ich per Hand assembliert, also mal keine 100% Garantie)
Das wären dann folgende Datazeilen:
1010 data 48
1110 data 0,0,0
1210 data 33,15,0,17,40,244,1,16,0,237,176
1211 REM diese Zeilen fallen weg
1212
1213
1214
1215
1310 -1360 wie bei Ruud1370 data 18,21,21,4,32,9,19,32,20,8,5,32,2,5,19,20,32
Bisserl anders formatieren und dann sollte das Progrämmchen besser abzutippen sein.
Andere Frage: was könnte/sollte man ggf. noch an/mit dem Modul testen?
OS: Vielen Dank an Tale-X fürs Testen und die Hilfe beim Debuggen!
-
Die aktuelle Gesamtfassung, für Freunde des copy/paste:
Code- 10 rem this program is to be used with the z80 card
- 20 rem it first stores z80 data at $1000 (return80=$0000)
- 30 rem then it turns off the 6510 irq's and enables
- 40 rem the z80 card. lethe z80 displays a message and
- 45 rem then the z80 card must be turned off
- 50 rem to re-enable the 6510 system.
- 100 rem store z80 data
- 110 read b: rem get size of z80 code to be moved
- 120 for i=4096 to 4096+b-1:rem move code
- 130 read a:poke i,a
- 140 next i
- 200 rem run z80 code
- 205 print"{CLS}"
- 206 print"6510 in command" : print
- 210 poke 56333,127: rem turn of 6510 irq's
- 220 poke 56832,00 : rem turn on z80 card
- 230 poke 56333,129: rem turn on 6510 irq's when z80 done
- 235 print"6510 again in command" : print
- 240 end
- 1000 rem z80 machine language code data section
- 1010 data 48
- 1100 rem z80 turn on code
- 1110 data 00,00,00 : rem our z80 card requires turn on time at $0000
- 1200 rem z80 task data here
- 1210 data 33,31,0,17,40,244,1,16,0,237,176
- 1211 rem diese eilen fallen weg
- 1300 rem z80 self-turn off data here
- 1310 data 62,01 : rem ld a,n
- 1320 data 50,00,206 : rem ld (nn),a :i/o location
- 1330 data 00,00,00 : rem nop, nop, nop
- 1340 data 195,00,00 : rem jmp $0000
- 1350 data 01,02,03 : rem nop, nop, nop
- 1360 data 04,05,06 : rem nop, nop, nop
- 1370 data 18,21,21,4,32,9,19,32,20,8,5,32,2,5,19,20,32
-
Tale: Zeile 32 und 33 sollten alles Nullen sein? Also alles NOPs?