Hallo! Ich möchte mir einen Z80 SBC bauen und befinde mich zur Zeit in der Designphase für die Hardware. Aus diesem Grund kann ich auch noch keinen Schaltplan präsentieren. Dies ist mein erstes größeres Projekt, das ich selbst umsetzen möchte. Ich habe natürlich schon ausgiebig Schaltpläne und Datenblätter studiert... An Erfahrung mangelt es halt ein wenig. Aus diesem Grund wäre ich für Vorschläge, Verbesserungen und Meinungen dankbar. Aber bitte schenkt euch die Kommentare warum ich das mache... Zu meinem Design: - Grundsystem bestehend aus CPU, CTC, PIO und SIO. - Getaktet von einem Clockgenerator mit 9,8304 MHz Quarz eventuell mit Einzelschritt-Schaltung. - Stromversorgung mit 5V-Low Dropout-Regler (mir schwebt zB ein LM2940 oder LM1085 vor). - Supervisor-Schaltung mit MAX691 oder ADM697. - Bezüglich der Speicherbestückung bin ich mir am unsichersten, wie ich das am besten löse: * 8kx8 oder 32kx8 EEPROM und Rest SRAM * 128kx8 FLASH (über DIP-Switch aufgeteilt in 4 32k-Seiten oder 16 8k-Seiten) und Rest SRAM * NVRAM-Bausteine (8kx8 oder 32kx8) und SRAM * SRAM mit NVRAM-Controller (BQ2201) und SRAM * oder wie vorher mit NVRAM-Controller und Reset-Schaltung kombiniert in Form eines DS1321 Ich würde die FLASH-Variante präferieren... - Zusätzlich vlt eine NVRAM-Karte als Laufwerk zum Einbinden (mit obigen Mitteln nur halt nicht im "normalen" Speicherbereich) - Ferner möchte ich die Schaltung zum Programmieren des jeweiligen EEPROM/FLASH/NVRAM mit Hilfe eines ATMEGAs (welcher weiss ich noch nicht) direkt auf der Platine unterbringen. Laut meinen Recherchen sollte es reichen, die CPU auf Reset zu halten damit sie nicht dazwischenquatscht. Das ganze möchte ich auf Lochraster mit Fädeldraht löten (ich weiss, viel Arbeit, aber ich hoffe es zahlt sich am Ende aus...). Denkt ihr das ist so machbar bzw was könnte ich besser machen? Danke und LG
Vergiss den Z80, der war von 30 Jahren noch gut. Nimm was Moderneres. Man kann auch bei Modernerem noch Peripherie verbauen. ADC, RTC, USB ..
:
Bearbeitet durch User
Warum mit einem ATMega Eprom und Co programmieren? Das kann der Z80 doch selbst erledigen.
Nichtsdestotrotz gibt es das Henne Ei Problem. Damit der Z80 das kann braucht er doch auch mal einen Monitor der ihm sagt wie. Ausserdem fände ichs elegant...
So macht man das heute: http://noplabs.com/cpm50/cpm50.html http://www.zilog.com/index.php?option=com_product&task=product&businessLine=1&id=77&parent_id=77&Itemid=57 fchk
Ich will aber mein System nicht mit einem Zilog-Controller aufbauen... Die hätte ich auch hier herumliegen. Und wenn schon dann ZNEO!
Ich hab mal einen 8085-EPC gefädelt, aber bei 3 MHz war da Schluss.
Meinst du dass Signale übersprechen... Das wäre natürlich nicht so gut. Ich dachte wenn man schön kreuz und quer fädelt mindert sich dieser Effekt. Und das muss ich sowieso da die Zilog ICs alle PLCC sind.
Crazy H. schrieb: > Ich hab mal einen 8085-EPC gefädelt, aber bei 3 MHz war da Schluss. Das ist eine Designfrage, genauer eine Frage des Aufbaus der Spannungsversorgung. Wenn man die nicht fädelt, sondern mit dickerem Kupferdraht (verzinnt/versilbert) aufbaut und SMD-Abblockkondensatoren an den richtigen Stellen verbaut, dann kann man auch erheblich schnellere Systeme auf Lochrasterplatinen fädeln. Man sollte dann aber auch auf "Fädelkämme" verzichten. Ich habe mal einen 68020-SBC mit 25 MHz Taktfrequenz gefädelt, mit 2 MByte SRAM ohne Waitstates. Die einzigen SMD-Bauteile waren die bereits erwähnten Abblockkondensatoren.
Harald Nagy schrieb: > Nichtsdestotrotz gibt es das Henne Ei Problem. Es soll - so geht das Gerücht - Leute geben, die anderen helfen. Ein Monitor Flash Eprom mit der Möglichkeit, sich selbst zu modifizieren, ist in 15 Minuten gemacht. Man muss nur die Basisadresse der SIO, die gewünschte Baudrate und Lage und Größe des RAM wissen. Und noch ein Tipp: KISS, sonst kommst du nie in die Strümpfe. Ein gängiger Flash Baustein, Seitenwahl per DIL-Schalter und ein gängiges SRAM, am besten 64k oder 128k, Seitenwahl per Software (Latch im IO), und ganz wichtig, eine Reset Logik, die es dir erlaubt, auf 64k RAM um zu schalten.
Vor rund 25 Jahren hab ich mich damit abgefunden, daß es so ist. Messmöglichkeiten hatte ich damals nicht. Das war der Rechner, der bei der Kommunikationselektroniker-Ausbildung verwendet wird, auf einer Eurokarte :oD
Crazy H. schrieb: > bei 3 MHz war da Schluss Mein Z80-CP/M System ist zu 50% gefädelt und rennt problemlos mit 10MHz.
Rufus Τ. Firefly schrieb: > Crazy H. schrieb: > Ich hab mal einen 8085-EPC gefädelt, aber bei 3 MHz war da Schluss. > > Das ist eine Designfrage, genauer eine Frage des Aufbaus der > Spannungsversorgung. Wenn man die nicht fädelt, sondern mit dickerem > Kupferdraht (verzinnt/versilbert) aufbaut und SMD-Abblockkondensatoren > an den richtigen Stellen verbaut, dann kann man auch erheblich > schnellere Systeme auf Lochrasterplatinen fädeln. Man sollte dann aber > auch auf "Fädelkämme" verzichten. > > Ich habe mal einen 68020-SBC mit 25 MHz Taktfrequenz gefädelt, mit 2 > MByte SRAM ohne Waitstates. Die einzigen SMD-Bauteile waren die bereits > erwähnten Abblockkondensatoren. keine Ahnung mehr, wie der aufgebaut war, aber ich glaube der liegt noch irgendwo rum. Mal suchen .....
Georg G. schrieb: > Harald Nagy schrieb: >> Nichtsdestotrotz gibt es das Henne Ei Problem. > > Es soll - so geht das Gerücht - Leute geben, die anderen helfen. Ein > Monitor Flash Eprom mit der Möglichkeit, sich selbst zu modifizieren, > ist in 15 Minuten gemacht. Man muss nur die Basisadresse der SIO, die > gewünschte Baudrate und Lage und Größe des RAM wissen. > > Und noch ein Tipp: KISS, sonst kommst du nie in die Strümpfe. Ein > gängiger Flash Baustein, Seitenwahl per DIL-Schalter und ein gängiges > SRAM, am besten 64k oder 128k, Seitenwahl per Software (Latch im IO), > und ganz wichtig, eine Reset Logik, die es dir erlaubt, auf 64k RAM um > zu schalten. Dafür bin ich wohl noch zu 'dumm'. Vielleicht in Version 2 dann...? Was ich aber eigentlich wissen wollte: denkt ihr dass funktioniert so wie ich mir das vorstelle?
Sicher. Es gibt hier ja noch andere Leute in diesem Forum, die das schon gemacht haben. Schau mal in diesen Thread: Beitrag "Z180-Stamp Modul" fchk
Danke. Kenn ich und hab ich. Ist allerdings ein ganz anderes Design. Wenn das so ist und anscheinend keine Beschwerden kommen werde ich mich am Wochenende mal an einen Schaltplan setzen...
Harald Nagy schrieb: > Dafür bin ich wohl noch zu 'dumm' Was hast du an dem Hilfsangebot nicht verstanden?
Harald Nagy schrieb: > Ich will aber mein System nicht mit einem Zilog-Controller aufbauen... > Die hätte ich auch hier herumliegen. Und wenn schon dann ZNEO! ZNEO ist nicht Z80-binärkompatibel. Der eZ80 schon. Nun ja, wer es gerne umständlich mag... fchk PS: Hier hast Du Gleichgesinnte: http://www.z80.info/homebrew.htm
Hallo kennst du diese HP: http://www.ndr-nkc.de/compo/index.htm mit der ECB-BUS Variante als mc-CP/M habe ich in den 80ern meine Erfahrungen gesammelt. War gut dokumentiert.
Georg G. schrieb: > Harald Nagy schrieb: >> Dafür bin ich wohl noch zu 'dumm' > > Was hast du an dem Hilfsangebot nicht verstanden? Das schon, aber der zweite Absatz war mir etwas unlogisch. Oder meintest du ohnehin meine Idee mit der Flash Aufteilung in Seiten? Im Kopf hätte ich da zb den SST39SF010. Hättest du denn evtl ein paar Codeschnipsel zu deinem Vorschlag?
Harald Nagy schrieb: > Hättest du denn evtl ein paar Codeschnipsel zu deinem Vorschlag? Ich mach morgen mal ein Paket fertig, kommt per Email.
Super danke! Dann werd ich mich dann mal hinsetzen und weiterplanen...
Harald Nagy schrieb: >> Was hast du an dem Hilfsangebot nicht verstanden? > > Das schon, aber der zweite Absatz war mir etwas unlogisch. Oder meintest > du ohnehin meine Idee mit der Flash Aufteilung in Seiten? Am flexibelsten bist du, wenn du 64K RAM vorsiehst. Und eine Logik, die nach dem Reset die ersten z.B. 8K mit einem EPROM/EEPROM/FLASH überlagert. Aus dem dahinterliegenden RAM kann man dann nicht lesen, wohl aber rein schreiben. Und dann eine per I/O schaltbare Mimik, die das überlagerte ROM wieder abschaltet und/oder bankswitched. In den ROM legst du dann ab 0000H (Reset-Einsprung) ein kurzes Programm, das deinen eigentlichen Monitor/BIOS ins RAM kopiert, im RAM anspringt und dort dann das ROM abschaltet. Anschließend kannst du im RAM nach Belieben schalten und walten und auch deinen Monitor überschreiben. Und prinzipiell spricht auch nichts dagegen, im Monitor eine Routine zu haben, die ihn zurück ins Flash kopiert. Am besten siehst du gleich einen größeren Flash vor in dem mehrere Versionen des Monitors liegen können. Dann kannst du immer eine "gute" Version behalten. Das Thema hatten wir vor gar nicht langer Zeit schon mal: Beitrag "Retro Fieber: Z80 oder 68000 ?"
[Stänkermode] Nimm ja nicht den komplizierten Z80, ein 8080 reicht für Dich! [/Stänkermode] Gruß, Holm
Nim eine Z180 Harald, das spart Dir einigen Fitz. Der hat auch eine MMU on Board und kann 1Mbyte adressieren. Habe ich Dir keinen ins Paket gelegt? Vorsicht, bei den schnelleren Z80 CPUs gibts üble Fälschungen auf Ebay.. ...und "Nee" ist sächsisch, da darfst Du gar nicht. Gruß, Holm
Z180 hab ich auch hier - kommt erst danach. Ich will auch das Original ausprobieren... Hätte auch eine KIO hier -wird auch ein eigenes Board... was Fälschungen betrifft. Sind alles ICs direkt von Zilog. Mir geht es ja nur um den Lerneffekt und da gehört halt auch das alles dazu. Blöd halt als absoluter Neuling. Aber es stresst ja nicht. Ein System nach dem anderen.
Georg G. schrieb: > Crazy H. schrieb: >> bei 3 MHz war da Schluss > > Mein Z80-CP/M System ist zu 50% gefädelt und rennt problemlos mit 10MHz. Ich biete einen 100% gefädelten TMS320C25 mit 40Mhz/2 = 20MHz in Fädeltechnik :-) Boardcontroller ist ein Mega32.
Auch auf die Gefahr hin beschimpft zu werden: ich habe viele Jahre mit Z80/Z8S180 und ähnlichen Prozessoren eigene Boards in vielen Varianten antwickelt und in Assembler und C programmiert. Die Hürden, die ich aus meiner wirklich jahrelangen Erfahrung heutzutage sehe sehe, ist der Aufwand an Hilfsmitteln ( Assembler/Compiler) EPROM-oder Flash-Programmer, die in der Summe heutzutage deutlich teuerer sind als moderne µC-Entwicklungssysteme. Wenn du wirklich Hardware entwickeln willst, vernünftige Messgeräte hast (DSO/Logicanalyzer), ist so ein System sicher interessant zum Lernen, aber dir muss klar sein: die Technik ist von 1975, meinen ersten Z80 Einplatinenrechner habe ich während des Studiums 1977 gebaut .... Falls du Fragen hast, ich gebe meine Erfahrung gerne weiter, wenns der guten Sache dient, meine Komponenten habe ich allerdings vor Jahren schon alle verkauft ... Gruß Thomas
Eine Frage zur praktischen Ausführung: Da ich die Busleitungen auch auf eine Stiftleiste herausführen will. Ist es sinnvoll, alle Busleitungen auf einen Punkt zusammenzuführen und von dort aus die einzelnen Bausteine zu verbinden oder ist es besser, die Leitungen nach der Reihe herzustellen? Ab wann sind eigentlich Bustreiber bzw Latches notwendig?
Harald Nagy schrieb: > Ab wann sind eigentlich Bustreiber bzw Latches notwendig? Die traditionellen Z80 funktionieren auch noch mit einer Rückwandverdrahtung und einigen dort eingesteckten Platinen, wenn diese ordentlich gebuffert sind, z.B. mit HCT245 am Datenbus und entsprechenden Treibern für Adressen usw. Eine Busverdrahtung mit der CPU an einem Ende ist am besten, dann kannst du auch an den Enden Pullup-Widerstände mit z.B. 10 kOhm verwenden, das ist kein Hispeed-Abschluss, aber besser als nichts. Georg
Frank K. schrieb: > So macht man das heute: > > http://noplabs.com/cpm50/cpm50.html > > http://www.zilog.com/index.php?option=com_product&task=product&businessLine=1&id=77&parent_id=77&Itemid=57 Oder so: http://www.ecstaticlyrics.com/electronics/Z80/EEPROM_programmer/
Georg schrieb: > Harald Nagy schrieb: >> Ab wann sind eigentlich Bustreiber bzw Latches notwendig? > > Die traditionellen Z80 funktionieren auch noch mit einer > Rückwandverdrahtung und einigen dort eingesteckten Platinen, wenn diese > ordentlich gebuffert sind, z.B. mit HCT245 am Datenbus und > entsprechenden Treibern für Adressen usw. > > Eine Busverdrahtung mit der CPU an einem Ende ist am besten, dann kannst > du auch an den Enden Pullup-Widerstände mit z.B. 10 kOhm verwenden, das > ist kein Hispeed-Abschluss, aber besser als nichts. > > Georg Ganz so traditionell wird's ja nicht. Sind ja die "moderneren" CMOS-Varianten. Aber ich denke mir auch, dass Bustreiber/Latches (ich würde HC-Logik verwenden, die habe ich hier) nicht schaden können.
Harald Nagy schrieb: > Aber ich denke mir auch, dass Bustreiber/Latches (ich > würde HC-Logik verwenden, die habe ich hier) nicht schaden können. Ich habe mich noch etwas ungenau ausgedrückt: meine CPU hat keine Treiber, aber alle eingesteckten Karten (belasten also den Bus bloss mit 1x HCT). Georg
Hallo Harald, wenn Du Dich mit Z80 beschäftigen willst, schaue bitte hier rein: http://www.robotrontechnik.de/html/forum/thwb/index.php Da gibt es eine Menge von Menschen, die sich damit beschäftigen. Die Fragen die sich mir stellen: - wie willst Du etwas sehen ohne Bildschirm (PIOs mit LEDs?) - zur Programmentwicklung und EPROM brennen: was hast Du zur Verfügung - neben RESET-Schaltung würde ich NMI-Schaltung empfehlen mit entsprechendem Kontrollprogramm zur Fehlersuche mfg ralph
:
Bearbeitet durch User
Ralph Müller schrieb: > > Die Fragen die sich mir stellen: > > - wie willst Du etwas sehen ohne Bildschirm (PIOs mit LEDs?) serielle Konsole zum PC ist Interface genug > - zur Programmentwicklung und EPROM brennen: was hast Du zur Verfügung Bitte lies meinen Eingangspost. Kein EPROM. EEPROM, FLASH, NVRAM oder SRAM mit NVRAM-Controller. Und Programmiersoftware für einen Microcontroller dafür zu schreiben ist jetzt nicht der große Aufwand. > - neben RESET-Schaltung würde ich NMI-Schaltung empfehlen mit > entsprechendem Kontrollprogramm zur Fehlersuche > Ist eine Idee. Danke. > mfg ralph gglg Harald
Harald Nagy schrieb: >> - zur Programmentwicklung und EPROM brennen: was hast Du zur Verfügung > > Bitte lies meinen Eingangspost. Kein EPROM. EEPROM, FLASH, NVRAM oder > SRAM mit NVRAM-Controller. Und Programmiersoftware für einen > Microcontroller dafür zu schreiben ist jetzt nicht der große Aufwand. Du brauchst einen Urlader auf Adresse 0000H. Ob das EPROM, EEPROM oder was auch immer ist, ist egal. Nach Power-On-Reset liest die CPU ab 0000H. Axel Schwenke hat das schon beschrieben. mfg ralph
:
Bearbeitet durch User
Ja und was spricht dagegen zb einen Flash mit einem atmega zu programmieren und auf adresse 0 zu legen? Georg du meinst also die Bustreiber sind nicht notwendig? Das mit dem Speicherbanking erscheint mir etwas kompliziert. Das ROM auf 0000h kann ich ja nicht so leicht ausblenden. Dort in der nähe sind ja auch die Interruptroutinen....
Ralph Müller schrieb: > Du brauchst einen Urlader auf Adresse 0000H Das hatte so gut wie kein reales Z80-System, nur die für CP/M-Rechner. Normalerweise steht das Programm in einem Eprom und das fängt bei der Adresse 0 an - ganz einfach. "Geladen" wird, indem man das geeignete EProm reinsteckt. Das kann man heute natürlich anders lösen, wenn man Flash verwendet und im System programmiert, aber das gabs zu Z80-Zeiten garnicht. Dafür gabs zum Entwickeln EProm-Simulatoren oder InCircuit-Emulatoren oder ganz primitiv Monitorprogramme. Georg
Nachtrag: Das System des TO mit Atmega zum Programmieren ist praktisch genau ein traditionelles Z80-System mit fest eingebautem Epromsimulator. Georg
Hallo Harald, Speicherbanking muß nicht zwangsläufig 64 K sein. Es gibt Z80-Systeme in denen 8, 16 oder 32 K RAM- oder ROM-Segmente jeweils über PIO-Signal eingeblendet werden. Du mußt auch festlegen wo der SP-Bereich sein soll, die SIO mit Pegelanpassung an PC-Interface muß auch stimmen (Kontroll-LEDs für senden und empfangen?). mfg ralph
Ralph Müller schrieb: > Speicherbanking muß nicht zwangsläufig 64 K sein Das kann es garnicht, man braucht ja einen Speicherbereich, der in beiden Bänken gültig ist für das gemeinsame Programm - z.B. das Programm, das zwischen den Bänken umschaltet. Nur so kann man Unterprogramme in verschiedenen Bänken aufrufen und so Programme mit mehr als 64k realisieren. Georg
Mir geht es ums Banking damit der Monitor-Code bearbeitbar wird. In der Art wie Georg und Axel es gestern angesprochen hatten.
Harald Nagy schrieb: > Ja und was spricht dagegen zb einen Flash mit einem atmega zu > programmieren und auf adresse 0 zu legen? > > Georg du meinst also die Bustreiber sind nicht notwendig? > > Das mit dem Speicherbanking erscheint mir etwas kompliziert. Das ROM auf > 0000h kann ich ja nicht so leicht ausblenden. Dort in der nähe sind ja > auch die Interruptroutinen.... Harald Du hast promoviert und solltest eigentlich in der Lage sein rauszubekommen wan irgendwas "an sich Scheiße ist". Klar kannst Du da einen Atmega drauf frickeln der den RAM für den Z80 lädt. Da es aber schon Z80 emulierende Software für die Atmels gibt, läge es nahe den Z80 einfach im Design weg zu lassen, denn er behindert mit seiner Anforderung nach Reset den RAM geladen haben zu wollen den Atmel am werkeln. Das Design ist in diesem Sinne genauso wie diese Stamp eigentlich Stuß. Das Dir das mit dem Laderom kompliziert erscheint bedeutet eigentlich nur das Du das Prinzip nicht verstanden hast. Es ist überhaupt nicht kompliziert und die Sache existiert in den verschiedensten Inkarnationen. Es ist Nichts weiter nötig als ein D-FF als Ausgaberegister zu beschalten und mit dessen Ausgängen die Selektion von ROM und RAM wechselweise zu sperren. Ob da Interruptvektoren liegen ist irrelevant, zur Zeit des Umladens müssen keine Interrupts bedient werden und die werden simpel gesperrt bzw. sind es nach dem Reset noch. Stelle Dir RAM und ROM auf dem selben Adreßbereich ab 0 vor, die Chipselektlogik bewerkstelligt das nach Reset das ROM gelesen wird, aber Schreibzugriffe auf dem RAM laden. mit LD HL,0 LD DE,0 LD BC,ROMLEN, LDIR schaufelst Du am Stück unmittelbar nach Reset den Speichernhalt um, danach ein Ausgabebefehl auf das oben angesprochene Flipflop und der ROM wird gesperrt und die Lesezugriffe landen auch auf dem RAM, das wars. Statt Fliplop tut es auch ein Pio-Bein oder auch ein "DTR" Ausgang einer Sio.. Wenn Du mit alten Mikroprozessoren basteln willst, akzeptiere auch deren Einsatzbedingungen wie z.B externe Programmspeicher. Nochmal zu den Atmels: Wenn das einzige Werkzeug das man hat ein Hammer ist, beginnt Alles um einen herum auszusehen wie ein Nagel... Wenn Du was Sinvolles mit dem Atmel machen willst, baue einen einfachen Epromer für Eproms EEProms oder Flashroms, so lange man sich auf einen Typ beschränkt ist das verhältnismäßig easy. eine 32K Type ist eine vernünftige Größe für Z80 Sachen, da bekommt, man schon ein Vielfaches von dem unter was man braucht, inklusive CP/M vom Rom.. Die Speicherumlademimik läßt sich beliebig aufbohren, es gibt Lösungen mit einem kleinen TTL RAM als MMU, mit dem dann auch solche Sachen wie programmierbarer Schreibschutz und RAM Paging (RAMfloppy) möglich sind. Sinnvollerweise sollte dieser TTL RAM auch über E/A Befehle geladen werden. Gruß, Holm
Harald Nagy schrieb: > Georg du meinst also die Bustreiber sind nicht notwendig? Nicht für den Betrieb als Z80, aber es kommt drauf an wie du den Atmel reinbasteln willst, entweder du baust Treiber für Daten, Adresse, Control ein und schaltest sie bei Atmel-Zugriff ab, oder du verwendest Z80 BUSREQ (= mehr Knowhow aber weniger Hardware). Georg
Holm Tiffe schrieb: > Wenn Du was Sinvolles mit dem Atmel machen willst, baue einen einfachen > Epromer für Eproms EEProms oder Flashroms, so lange man sich auf einen > Typ beschränkt ist das verhältnismäßig easy. eine 32K Type ist eine > vernünftige Größe für Z80 Sachen, da bekommt, man schon ein Vielfaches > von dem unter was man braucht, inklusive CP/M vom Rom.. Genau das war ja meine erste Idee, nur halt on-board. Was spricht denn dagegen? Alles andere hat sich in dieser Diskussion ergeben... Und ja, ich tue mich noch schwer mit den Konzepten, was das Design betrifft. Das sehe ich ja als Herausforderung und will es hinbekommen. Am Ende soll halt schon ein Board herauskommen, das auch funktioniert. Und genau deswegen lese ich, frage ich hier und überlege mir verschiedene Herangehensweisen. Ich bin leider nicht in der glücklichen Lage MIT diesen Konzepten aufgewachsen zu sein...
Georg schrieb: > Ralph Müller schrieb: >> Speicherbanking muß nicht zwangsläufig 64 K sein > > Das kann es garnicht, man braucht ja einen Speicherbereich, der in > beiden Bänken gültig ist für das gemeinsame Programm - z.B. das > Programm, das zwischen den Bänken umschaltet. Quarks. Man braucht nur in jeder 64k-Bank die Bank-Switching-Routine an der genau gleiche Adresse haben. Aber ein Speichermodell mit 16k oder 8k Bänke oder Pages ist schon flexibeler. Der MSX Homecomputer hatte überigens ein 16k-Page Speichermodell. Die 64k sind verteilt in 4 16-k Pages, die über ein Register im PPI geschaltet wurden. Für jeder Page kann man aus 4 "Slots" einen wählen.
1 | Bank-> 0 1 2 3 |
2 | 0xFFFF +---+---+---+---+ |
3 | | | | |[R]| Hier ist zB. für Page 3 (0xC000-0xFFF) |
4 | 0xC000 +---+---+---+---+ Slot 3 geschaltet. Es ist immer in jeder |
5 | | | | |[R]| Page (Reihe) genau 1 Slot (Spalte) aktiv. |
6 | 0x8000 +---+---+---+---+ |
7 | |[B]| | | | B = BIOS & BASIC |
8 | 0x4000 +---+---+---+---+ R = RAM |
9 | |[B]| | | | [x] = Slot/page aktiv |
10 | 0x0000 +---+---+---+---+ |
Standardmässig ist in slot 0, page 0 (0x0000-0x3FFF) immer das BIOS, und in page 1 (aber nicht zwangsläufig slot 0!) der BASIC ROM. In Page 3 muss RAM geschaltet sein, wegen System-variabelen und Stack. Die obige Tabelle ist Beispielhaft für eine MSX-Maschine mit 32k RAM. Der MSX hat auch physikalische "Slots" wo man ein ROM (oder RAM) Modul einstecken kann. So ein Modul nimmt dann ein Slot im Speichermodell in Anspruch. zB so:
1 | Bank-> 0 1 2 3 |
2 | 0xFFFF +---+---+---+---+ |
3 | | | | |[R] | Hier is in Slot 1 ein 48k ROM (M) |
4 | 0xC000 +---+---+---+---+ eingesteckt. Die geschaltete Pages sind |
5 | | |[M]| | R | mit [.] gekennzeichnet. Merke wie in |
6 | 0x8000 +---+---+---+---+ diesem Fall das BIOS, der BASIC ROM und |
7 | | B |[M]| | | die untere 16k vom RAM nicht 'sichtbar' |
8 | 0x4000 +---+---+---+---+ sind. |
9 | | B |[M]| | | |
10 | 0x0000 +---+---+---+---+ |
Irgendwo im Wiki auf http://www.msx.org/ sollte das alles genauer beschrieben sein, aber ich finde es so auf der schnelle nicht.
Harald Nagy schrieb: > Genau das war ja meine erste Idee, nur halt on-board. Was spricht denn > dagegen? Nichts, ausser vielleicht dass man dazu nicht unbedingt einen Atmel oder überhaupt einen 2. Prozessor braucht, man kann ja auch einen Bootloader für den Z80 schreiben - was man realisieren muss ist ein Protokoll zur Datenübertragung und ein Algorithmus zur Flash-Programmierung (egal auf welchem Prozessortyp). Es ergibt sich nur ein Henne-Ei-Problem, denn solange man den Bootloader nicht am laufen hat stochert man ziemlich im Nebel herum. Grundsätzlich sehe ich nicht warum das mit Z80 schwieriger sein soll als mit einem Atmel, aber das hängt natürlich von der persönlichen Erfahrung ab. Wenn du Atmel Software mit links aus dem Ärmel schüttelst, warum nicht. Georg
Eric B. schrieb: > Quarks. Man braucht nur in jeder 64k-Bank die Bank-Switching-Routine an > der genau gleiche Adresse haben. Aha - und wie rufst du ein Unterprogramm in einer Hochsprache, die die Parameter wie üblich auf dem Stack übergibt, in einer anderen Bank auf? Überhaupt, hast du in jeder Bank einen Stack oder wie? Georg
Georg schrieb: > Eric B. schrieb: >> Quarks. Man braucht nur in jeder 64k-Bank die Bank-Switching-Routine an >> der genau gleiche Adresse haben. > > Aha - und wie rufst du ein Unterprogramm in einer Hochsprache, die die > Parameter wie üblich auf dem Stack übergibt, in einer anderen Bank auf? > Überhaupt, hast du in jeder Bank einen Stack oder wie? (forehead slap) Klar, hast du Recht. Ich hatte das mit den 2 64k Bänken mal in einem 8051-Projekt. Der hatte aber getrennte Addressbereichen für RAM und ROM :-) Das Prinzip bleibt aber stehen, man braucht nur irgendwo (ein paar kB im obersten Addressbereich bietet sich an) ein bisschen RAM für Stack und co. Danach gilt mein Kommentar unverändert. EDIT: Ich meine natürlich, dass der RAM dann nicht gebankt werden soll.
:
Bearbeitet durch User
Georg schrieb: > Harald Nagy schrieb: >> Genau das war ja meine erste Idee, nur halt on-board. Was spricht denn >> dagegen? > > Nichts, ausser vielleicht dass man dazu nicht unbedingt einen Atmel oder > überhaupt einen 2. Prozessor braucht, man kann ja auch einen Bootloader > für den Z80 schreiben - was man realisieren muss ist ein Protokoll zur > Datenübertragung und ein Algorithmus zur Flash-Programmierung (egal auf > welchem Prozessortyp). Es ergibt sich nur ein Henne-Ei-Problem, denn > solange man den Bootloader nicht am laufen hat stochert man ziemlich im > Nebel herum. Grundsätzlich sehe ich nicht warum das mit Z80 schwieriger > sein soll als mit einem Atmel, aber das hängt natürlich von der > persönlichen Erfahrung ab. Wenn du Atmel Software mit links aus dem > Ärmel schüttelst, warum nicht. > > Georg Und so hat sich die Diskussion hier ergeben ;-) Der Atmega kam mir nur deshalb in den Sinn, weil ich da die meiste Erfahrung habe und der Meinung bin, dass ich das schnell und unkompliziert hinbekommen würde. Natürlich ist jeder andere genausogut geeignet. Auch ein EPROM-Simulator wäre eine Idee. Nur leider habe ich bis jetzt noch kein Selbstbau-Modell gefunden, dass keinen Parallel-Port braucht... Bis das Ur-ROM steht ist es halt etwas umständlich. Aber sobald das geschafft ist scheint es mir ein ziemlich optimales System. Du wolltest mir ja ein paar Codebeispiele und Schnipsel schicken zum Studieren.
Harald Nagy schrieb: > Das ganze möchte ich auf Lochraster mit Fädeldraht löten (ich weiss, > viel Arbeit, aber ich hoffe es zahlt sich am Ende aus...). Lies dir unbedingt mal den durch, besonders hinsichtlich Fädeltechnik: Beitrag "Retro Fieber: Z80 oder 68000 ?" Christian wirkte jedenfalls anschliessend von Fädeltechnik kuriert.
:
Bearbeitet durch User
Ich weiss. Habe den Thread damals mitgelesen... Aber versuchen will ich es trotzdem.
Harald Nagy schrieb: > Holm Tiffe schrieb: >> Wenn Du was Sinvolles mit dem Atmel machen willst, baue einen einfachen >> Epromer für Eproms EEProms oder Flashroms, so lange man sich auf einen >> Typ beschränkt ist das verhältnismäßig easy. eine 32K Type ist eine >> vernünftige Größe für Z80 Sachen, da bekommt, man schon ein Vielfaches >> von dem unter was man braucht, inklusive CP/M vom Rom.. > > Genau das war ja meine erste Idee, nur halt on-board. Was spricht denn > dagegen? Alles andere hat sich in dieser Diskussion ergeben... Das Problem ist hier das halt recht viele Leute was wissen und jeder das nach seiner eigenen Fasson durchziehen würde. Die Atmel/Arduino Fraktion ist halt völlig von der Rolle wenn es um ein Rechnerboard geht auf dem keiner drauf ist.. Ich halte es aber für völlig bebirnt einen moderneren schnelleren Prozessor als Aushilfe für einen Historischen einzusetzen.. > > Und ja, ich tue mich noch schwer mit den Konzepten, was das Design > betrifft. Das sehe ich ja als Herausforderung und will es hinbekommen. > Am Ende soll halt schon ein Board herauskommen, das auch funktioniert. > Und genau deswegen lese ich, frage ich hier und überlege mir > verschiedene Herangehensweisen. Ich bin leider nicht in der glücklichen > Lage MIT diesen Konzepten aufgewachsen zu sein... Dur sollest nochmal drüber nachdenken was Du wirklich möchtest. IMHO reicht Dir eine Platine auf der in einem 29er ROM, von mir aus mit Dipschaltern im Bereich umschaltbar, ein Bootloader steckt, der in der Lage ist irgendwas von PC in den RAM zu fädeln und dort an zu springen. Wenn das geht, kannst Du Alles andere mit Onboard mitteln machen. Nimm aber bitte eine Z80-SIO, wegen dem IM2, diese wird üblicherweise von einem CTC getaktet. Du kannst auch dieses KIO Zeuchs nehmen, kenne ich aber nicht und braucht man auch nicht. Eine Platine dieser Komplexität ist ohne Weiteres in Fädeltechnik zu machen, Kämme habe ich aber niemals benutzt und über 8Mhz habe ich auch nicht probiert was allerdings reicht. Textverarbeitung unter CP/M mit Wordstar geht damit schneller als Word mit Windows und ein paar Ghz :-) wenn wundert das? Gruß, Holm
Meine Rede. Ich will mir doch nur die Monitor-Entwicklung erleichtern. Der Atmel soll dem Z80 auch nicht helfen sondern nur mein ROM programmieren. Anstatt mein EEPROM, FLASH, whatever andauernd ein und auszustöpseln würde ich halt einen Controller opfern. Die Computerkonfiguration selbst soll nur CPU, CTC, PIO und SIO/4 (weil PLCC) umfassen. Speicher natürlich auch. KIO ist ohnehin das selbe nur halt in einem Chip inklusive Clockgenerator... Nach dem Wochenende hab ich mehr Zeit mir Gedanken zu machen. Dann wirds vlt nal konkret.
Harald Nagy schrieb: > Meine Rede. Ich will mir doch nur die Monitor-Entwicklung erleichtern. > Der Atmel soll dem Z80 auch nicht helfen sondern nur mein ROM > programmieren. Anstatt mein EEPROM, FLASH, whatever andauernd ein und > auszustöpseln würde ich halt einen Controller opfern. Das ist relativ, wenn Du die 2. Version mit einem 8080 oder whatever baust hast Du wieder das selbe Problem. Ich hatte auch nicht umsonst 29xx gemeint (28 geht auch), damit kannst Du später den Lader erweitern so das die Kiste sich selber programmieren und updaten kann. Gruß, Holm
Harald Nagy schrieb: > Meine Rede. Ich will mir doch nur die Monitor-Entwicklung erleichtern. > Der Atmel soll dem Z80 auch nicht helfen sondern nur mein ROM > programmieren. Anstatt mein EEPROM, FLASH, whatever andauernd ein und > auszustöpseln würde ich halt einen Controller opfern. Das geht wohl einfacher mit einem FT2232D: http://www.ftdichip.com/Support/Documents/DataSheets/ICs/DS_FT2232D.pdf Lies Seite 44 Abschnitt 8.6 "MCU Host Bus Emulation Mode Signal Descriptions and Interface Configuration". Du hast damit einen 8051-kompatiblen Adress-Daten-Bus, der mit einem HC573 demultiplext wird. fchk
Eine Möglichkeit wäre es. Aber erstens liegt so einer gerade nicht bei mir herum und zweitens habe ich keine Lust auf SMD auf einer Lochrasterplatine - weder frei verdrahtet noch auf DIP-Adapter.
Harald Nagy schrieb: > keine Lust auf SMD auf einer > Lochrasterplatine Oder sowas: http://www.elv.de/elv-highspeed-mini-usb-modul-um-ft2232h-komplettbausatz.html
So. Nun hab ich mal die Stromversorgung, Reset-Schaltung (MAX690) und Clock Generator auf Breadboard aufgebaut und mal getestet. Funktioniert alles soweit. Allerdings zeigt mir das Oszilloskop nur eine Frequenz von ca 1.2 MHz am Clock-Ausgang an. Leider besitze ich nur ein Billig-USB-Oszi aus China... Kann es daran liegen? Oder liegt es am Breadboard-Aufbau? Was sagt ihr zu der Clock-Generator-Schaltung im Anhang (übrigens in JPG weil das PNG doppelt so groß ist ;-) )? Die Stützkondensatoren sind alle vorhanden auch wenn nicht eingezeichnet... Ich hab nämlich sämtliche Quarze durchprobiert die ich herumliegen habe (1 bis 16 MHz) und das Ergebnis ist immer dasselbe. Aus Neugierde hab ich auch einen 32kHz Uhrenquarz versucht, der schwingt allerdings nicht. Weiters habe ich noch versucht: - verändern der Kondensatoren und Widerstände - verändern und weglassen des Pullups - 74HC14 statt 74HC04 - weglassen jeweils eines Kondensators Zusätzlich habe ich versucht, die Frequenz mit einem 74HC93 herunterzuteilen. Ging auch, aber hochgerechnet kommen halt immer die ca 1.2 MHz heraus. Nachdem die Schaltung schwingt, soll ich einfach davon ausgehen, dass wenn alles nett verdrahtet auf der Platine ist, die Frequenz schon passen wird?
Die 100pF sind deutlich zu viel, 20pF maximal würde ich nehmen. Ansonsten ist es eine Standardschaltung, MUSS funktionieren.
Danke. Dann wird tatsächlich das Oszi schuld sein. Schwingen tuts ja.
Besser ist es, eine billige Platine aus'm Internet zu kaufen, wo schon bewährte Schaltung drauf ist. Gruss
Erich schrieb: > Besser ist es, eine billige Platine aus'm Internet zu kaufen Nein, das ist es nicht, denn davon lernt man ... nichts, vor allem nichts, was den Hardwareaufbau angeht.
Rufus Τ. Firefly schrieb: > Erich schrieb: >> Besser ist es, eine billige Platine aus'm Internet zu kaufen > > Nein, das ist es nicht, denn davon lernt man ... nichts, vor allem > nichts, was den Hardwareaufbau angeht. Ganz genau so seh ich das auch. Der Weg ist das Ziel. Auch wenn er sehr steinig ist ;-) Und nachdem hier keine größeren Einsprüche kommen nehme ich an dass ich auf dem richtigen Weg bin.
Keine Ahnung. Aber es sind genug Schaltungen mit den beiden anderen beschrieben. Und die Schaltung schwingt ja auch. Allein die gemessene Frequenz kann ich mir nicht erklären.
Hallo der Aufbau ist manchmal schwierig. Mit der Schaltung hatte ich schon Probleme weil die Kapazität des Quarzes die Schaltung schwingen lässt, aber nicht auf der Frequenz des Quarzes. 74HC4060 mit Quarz und Teilung durch 2 gibt sicher einen sauberen Rechteck mit der richtigen Frequenz.
> Nein, das ist es nicht, denn davon lernt man ... nichts, vor allem > nichts, was den Hardwareaufbau angeht. Ist theoretisch was dran an der Aussage. ABER: Mit der Geschwindigkeit wie ihr hier dazulernt, da ist der Z80 ruckzuck bald 75 Jahre alt... http://www.greensmilies.com/smile/smiley_emoticons_my2cents.gif Gruss
Erich schrieb: >> Nein, das ist es nicht, denn davon lernt man ... nichts, vor allem >> nichts, was den Hardwareaufbau angeht. > > Ist theoretisch was dran an der Aussage. > > ABER: > Mit der Geschwindigkeit wie ihr hier dazulernt, da ist der Z80 ruckzuck > bald 75 Jahre alt... > > http://www.greensmilies.com/smile/smiley_emoticons_my2cents.gif > > Gruss Ja und? Ich hab keinen Stress was mein Hobby betrifft.
karadur schrieb: > Hallo > > der Aufbau ist manchmal schwierig. Mit der Schaltung hatte ich schon > Probleme weil die Kapazität des Quarzes die Schaltung schwingen lässt, > aber nicht auf der Frequenz des Quarzes. 74HC4060 mit Quarz und Teilung > durch 2 gibt sicher einen sauberen Rechteck mit der richtigen Frequenz. Hab ein wenig gegoogelt... Verstehe ich das richtig dass ich beim 74hc4060 mindestens eine Teilung der Frequenz durch 4 habe? Sprich bei meinem Quarz höchstens ca 2 Mhz schaffe?
@ Harald Nagy (haraldn) >Hab ein wenig gegoogelt... Verstehe ich das richtig dass ich beim >74hc4060 mindestens eine Teilung der Frequenz durch 4 habe? Nö, 2^4=16 !
Ok vertan aber das machts nicht besser. Edit: wir waren beide falsch. Es gibt Q3, also Teiler 8.
@ Harald Nagy (haraldn)
>Edit: wir waren beide falsch. Es gibt Q3, also Teiler 8.
Nö. Schau mal genau hin. Nach 8 Takten kommt der erste Pegelwechsel auf
Q3, nach 16 eine volle Periode.
Harald Nagy schrieb: > - 74HC14 statt 74HC04 Das funktioniert nicht. Dieser Quarzoszillator benötigt in den analogen Bereich vorgespannte Gatter, was mit einem Schmitt-Trigger nicht funktionieren kann. Wenn du schon diesen als Quarzmörder verschrienen Oszillator nimmst, tun es am besten 74LS04. Und reduziere mal die 47k - in den meisten Schaltungen, die man im Netz findet, sind diese Widerstände in der Grössenordnung von 560R-2k2.
:
Bearbeitet durch User
Da hast du unrecht. Bei Schaltungen im Netz is es entweder LS plus ca 4k oder HC plus ca 40k. Wenn es so etwas grundlegendes wäre würde das ganze gar nicht schwingen oder? aber ich kann ja mal schauen ob ich noch einen LS herumliegen habe.
Harald Nagy schrieb: > Das ganze möchte ich auf Lochraster mit Fädeldraht löten (ich weiss, > viel Arbeit, aber ich hoffe es zahlt sich am Ende aus...). Da ich das alles schon hinter mir habe ..... wo soll der Zug hinfahren? Z80 = CP/M? Was will man mit CP/M? Irgendwelche angestaubten Programme einladen, auf einer Textkonsole herumklimpern? Für CP/M wird eine bestimmte Hardware mit ROM/RAM Umschaltung verlangt, unterschätze nicht die Arbeit ein CPM zu modifizieren, damit es läuft. Welche Debugmöglichkeit soll es geben? Source Level Debuggung? Blinki-LED? Oder eigener Monitor? Es gibt fertige Lösung wie den N8VEM die man nachbauen kann. Ich habe heute NVRAM drin, als ROM und als RAM. Alles ferngesteuert über die RS232. EPROMs sehen zwar cooler aus aber die Brennerei nervt schon. Plan schonmal sowas mit ein, ersetzt Tastatur und Monitor Hardware: http://geoffg.net/terminal.html
Christian J. schrieb: > Da ich das alles schon hinter mir habe ..... wo soll der Zug hinfahren? > Z80 = CP/M? Was will man mit CP/M? Irgendwelche angestaubten Programme > einladen, auf einer Textkonsole herumklimpern? Für CP/M wird eine > bestimmte Hardware mit ROM/RAM Umschaltung verlangt, unterschätze nicht > die Arbeit ein CPM zu modifizieren, damit es läuft. Welche > Debugmöglichkeit soll es geben? Source Level Debuggung? Blinki-LED? Oder > eigener Monitor? > > Es gibt fertige Lösung wie den N8VEM die man nachbauen kann. > > Ich habe heute NVRAM drin, als ROM und als RAM. Alles ferngesteuert über > die RS232. EPROMs sehen zwar cooler aus aber die Brennerei nervt schon. > > Plan schonmal sowas mit ein, ersetzt Tastatur und Monitor Hardware: > http://geoffg.net/terminal.html Kein CP/M. Keine Tastatur. Kein Monitor. Nur serielles Interface mit eigenem Monitor und PIO zum Anschließend von Peripherie. Fertig. Vor allem keine fertigen Lösungen...
Harald Nagy schrieb: > Kein CP/M. Keine Tastatur. Kein Monitor. Nur serielles Interface mit > eigenem Monitor und PIO zum Anschließend von Peripherie. Fertig. Vor > allem keine fertigen Lösungen... Tja... gibt es auch schon .... sind aber so rund 500 Einzeldrähtchen die man verlöten muss... Meinen kennste ja sicher: https://www.youtube.com/watch?v=gSVBFNCqYeQ
Jup. Und wird zu schaffen sein. Muss ja nix neues sein. Will ja kein patent anmelden...
Dann viel Spass. Die Schaltungen hier geprüft und funktionieren, auch der Taktgenerator.
Danke. Werd ich mir mal ansehen. Dein Projekt geht voran?
Harald Nagy schrieb: > Danke. Werd ich mir mal ansehen. Dein Projekt geht voran? Ist fertig .... (bis auf die LED Matrix Ansteueurung) und deswegen mache ich auch nix mehr dran. Der STM32F4 ist einfach .... besser :-)
Hier mal Fottos.... Bzgl Bank Switching mit 512 kRAM: http://www.zcontrol.narod.ru/diagrams/ZramBankSwitch.pdf
Cooles System. Die Appnote hab ich schon in meiner Projektmappe...
Harald Nagy schrieb: > Cooles System. > Die Appnote hab ich schon in meiner Projektmappe.. Ok. Wollte mich hier auch nicht weiter reinhängen. Habe mein System hier auch nach meinem Wunsch aufgebaut und mich dafür als lernresistent beschimpfen lassen. Nen paar Eckdaten sind allerdings hilfreich um nicht das Rad neu zu erfinden. - SDCC Compiler + Makefile statt verkrampftes Assembler Geschwurbel. Der SDCC ist nicht "einfach" aber wenn man mit ihm umgehen kann das beste Werkzeug. Ich spiele das Program im RAM ein, nutze in diesem aber ROM Routinen als "Library", zb printf was viel Codesize erspart. - mcurses lib von Frank M. als Kommunikationsinterface zum PC (minicom) Läuft out of the box, sogar Kommandozeile und Hex Editor sind da. - Ob man die CTC, SIO, PIO von Zilog verwendet sei frei, die meisten Designs aber nehmen andere Bausteine wie 8255, 8254 und 68B50 als Interface. - Frühzeitig Gedanken übers Debugging machen! Ich nutze nur printf und einen Hex Uploader + Bash Script, was mir das voll automtisiert und die geany IDE unter Linux. Ein Kopfdruck und das Kompilat wird hochgeladen und ausgeführt, man sieht sofort was auf dem Terminal passiert. Auch das habe ich in einem Video beschrieben. https://www.youtube.com/watch?v=PpTISqDCT0c Viel Spass!
Christian J. schrieb: > Harald Nagy schrieb: >> Cooles System. >> Die Appnote hab ich schon in meiner Projektmappe.. > > Ok. Wollte mich hier auch nicht weiter reinhängen. Habe mein System hier > auch nach meinem Wunsch aufgebaut und mich dafür als lernresistent > beschimpfen lassen. ...und es bereut nicht auf die Ratschläge gehört zu haben. :-) > > Nen paar Eckdaten sind allerdings hilfreich um nicht das Rad neu zu > erfinden. > > - SDCC Compiler + Makefile statt verkrampftes Assembler Geschwurbel. > Der SDCC ist nicht "einfach" aber wenn man mit ihm umgehen kann das > beste Werkzeug. Ich spiele das Program im RAM ein, nutze in diesem > aber ROM Routinen als "Libryry", was viel Codesize erspart. Christian das ist wieder ziemlicher Dünnschiß. Der ganze Compiler und auch ie Bibliotheken bestehen aus Assemblergeschwurbel, die Tatsache das Dir das zu kompliziert erscheint macht das noch nicht zu Geschwurbel, schreib einfach das Du zu dumm oder zu faul bist, das trifft es wohl besser. > > - mcurses lib von Frank M. als Kommunikationsinterface zum PC (minicom) > Läuft out of the box, sogar Kommandozeile und Hex Editor sind da. > > - Ob man die CTC, SIO, PIO von Zilog verwendet sei frei, die meisten > Designs aber nehmen andere Bausteine wie 8255, 8254 und 68B50 als > Interface. Totaler Unfug, genau andersherum wird ein Schuh draus. Deine Strukturgurke ist weit entfernt von "die meisten" und die Meisten Leute bekommen die Funktionalität die Du implmentiert hast auch in Assembler in weitaus kleineren Programmen gebacken. Bitte halte Dich mit Deinen Ansichten die schon Dir selbst Probleme gemacht haben zurück wenn Du sie jetzt auch noch als Ratschlag verteilst. Sorry, mußte sein. Holm
Naja ich finde Assembler ist Pflicht. Ebenso die Verwendung der Zilog Bausteine, vor allem weil vorhanden und dafür gemacht. Debugging über serial ist ok. Welcher Art ist offen und wird im Monitor implementiert welcher wiederum nicht starr ist sondern optimiert werden kann. Ich finde es sehr schade dass in diesem Thread wenig konstruktives kommt. Aber ich werds schon selbst lösen... Aber danke für die konstruktiven Beiträge und Denkanstöße.
Holm Tiffe schrieb: > Der ganze Compiler und auch ie Bibliotheken bestehen aus > Assemblergeschwurbel, die Tatsache das Dir das zu kompliziert erscheint > macht das noch nicht zu Geschwurbel, schreib einfach das Du zu dumm oder > zu faul bist, das trifft es wohl besser. Komm... fang mir nicht wieder mit diesem "Früher-war-alles-besser-Assembler Geschwafel" an. Bring damit deine LED zum blinken, freu Dich zwei 16 Bit Zahlen multipliziert zu haben (Braucht der Zaks 10 Seiten für das zu erklären wofuer ein Zeichen brauchen...nämlich "*"), brauch 5 Tage für etwas wofür ich nicht mal einen 1/2 brauche und gut ist es. Die meisten Designs verzichten auf Zilog Bausteine, das ist einfach so. Punkt. >>Bitte halte Dich mit Deinen Ansichten die schon Dir selbst Probleme >>gemacht haben zurück wenn Du sie jetzt auch noch als Ratschlag >>verteilst. Ich nehme mir das Recht eine eigene Meinung zu dem Thema zu haben. Auch wenn Dir das nicht passt :-) Amen.
Harald Nagy schrieb: > * 128kx8 FLASH (über DIP-Switch aufgeteilt in 4 32k-Seiten oder 16 > 8k-Seiten) und Rest SRAM Wo du eine Mindestform von MMU offenbar auf der Rechnung hast, schau dir mal den 74HC670 an. Gibt frei wählbare 16KB Pages für einen 256KB Gesamtadressraum. Die weit und breit einfachste MMU unterhalb CPLD.
Christian J. schrieb: > Die meisten Designs verzichten auf Zilog Bausteine, das ist einfach so. > Punkt. Herrje, ich bin bei deinem Thread das erste Mal in 35 Jahren überhaupt auf ein 8080/Z80 Design gestossen, das den 6850 verwendet. Der einzige 68xx Baustein, der sich grosser Beliebtheit erfreute, war der 6845. Du warst bisher auch der einzige, der den Z80-SIO als zu komplex aussortierte, jeder andere fand den bisher knorke. Wenn es heute, 35 Jahre nach der grossen Zeit des Z80, wirklich etliche Leute geben sollte, die den SIO zu kompliziert finden, dann spräche das nicht gegen den SIO, sondern gegen die Zeit.
A. K. schrieb: > Wo du eine Mindestform von MMU offenbar auf der Rechnung hast, schau dir > mal den 74HC670 an. Gibt frei wählbare 16KB Pages für einen 256KB > Gesamtadressraum. Die weit und breit einfachste MMU unterhalb CPLD. Ich würde sagen, der TS ist noch in der Phase der Planung. Und da empfiehlt es sich zuerst eine Spezifikation zu schreiben, schön als Word Text mit Bildchen wohin er eigentlich will, denn nachher lässt sich nichts mehr ändern in einem Fädelaufbau. Wenn es "nur" ein Demo Rechner sein soll, der nachher an der Wand hängt, so wie meiner und irgendwas leuchtet dann ist das etwas anderes als wenn er nachher wirklich CPM laufen lassen will oder ein erweiterbares System haben will. Und als "Steuerrechner", der ein paar Relais klimpert ist das schon zu aufgebohrt.
A. K. schrieb: > Wenn es heute, 35 Jahre nach der grossen Zeit des Z80, wirklich etliche > Leute geben sollte, die den SIO zu kompliziert finden, dann spräche das > nicht gegen den SIO, sondern gegen die Zeit. Es gibt durchaus Lernerfolge, einer daovn war dass ich den MK3801 hätte weglassen sollen und lieber eine SIO und dass das ROM wegwschaltbar hätte sein sollen.... und kompliziert ist die nicht.... da gibt der M4 Cortex schon mehr her.
Harald Nagy schrieb: > Allerdings zeigt mir das Oszilloskop nur eine Frequenz von ca 1.2 MHz am > Clock-Ausgang an. Leider besitze ich nur ein Billig-USB-Oszi aus > China... Kann es daran liegen? Oder liegt es am Breadboard-Aufbau? Was > sagt ihr zu der Clock-Generator-Schaltung im Anhang Wo ist in Deiner Schaltung die zweite Lastkapazität? Der Eingang eines 74HC04 dürfte da zu wenig sein. http://www.elektronik-magazin.de/res/images/entry/3/image/quarz-oszil-schaltung.gif Mit freundlichen Grüßen - Martin
Rufus Τ. Firefly schrieb: > O nein. "Fädelkämme". Du fährst ja auch auf einer Autobahn nach München und nicht querfeldein durch die Pampa. Alles schön seine preussische Ordung ... im Gleichschritt Marsch meine Bits, rechts um.... links....
Ich sagt Design nicht Schaltplan. Ausserdem bin ich jetzt über eine Woche familienmässig ausgenockt. Leider. ..
Christian J. schrieb: > Du fährst ja auch auf einer Autobahn nach München und nicht querfeldein > durch die Pampa. Das HF-Verhalten von gefädelten Schaltungen, die auf diese Dinger verzichten, ist erfahrungsgemäß erheblich besser. Ich muss wohl doch meine alte 68020-Platine mal 'rauskramen und ablichten.
Christian J. schrieb: > denn nachher lässt sich > nichts mehr ändern in einem Fädelaufbau. Bei Deiner Webtechnik mit Fädelkämmen vielleicht. Ansonsten ist das gerade der größte Vorteil von Fädeltechnik, daß man alles leicht ändern und erweitern kann.
Was wird es denn letzlich? Eine Demo Geschichte für den Schrank oder eine echte Steuerung? Diese RAM bank Geschichte ist nicht ganz ohne, bei einem Compiler würde es Ärger geben, weil der damit nicht umgehen kann. Es gibt aber auch ein Linux System von Alan Cox, der braucht Banking.
Martin Schlüter schrieb: > Harald Nagy schrieb: >> Allerdings zeigt mir das Oszilloskop nur eine Frequenz von ca 1.2 MHz am >> Clock-Ausgang an. Leider besitze ich nur ein Billig-USB-Oszi aus >> China... Kann es daran liegen? Oder liegt es am Breadboard-Aufbau? Was >> sagt ihr zu der Clock-Generator-Schaltung im Anhang > > Wo ist in Deiner Schaltung die zweite Lastkapazität? Der Eingang eines > 74HC04 dürfte da zu wenig sein. > > http://www.elektronik-magazin.de/res/images/entry/3/image/quarz-oszil-schaltung.gif > > Mit freundlichen Grüßen - Martin Das sehe ich auch als Problem an. Der Oszillator schwingt als RC Oszillator mit der Kapazität über dem Quarz. an den Eingang gehört ein 2. C als Spannungsteiler. Gruß, Holm
Christian J. schrieb: > A. K. schrieb: > >> Wenn es heute, 35 Jahre nach der grossen Zeit des Z80, wirklich etliche >> Leute geben sollte, die den SIO zu kompliziert finden, dann spräche das >> nicht gegen den SIO, sondern gegen die Zeit. > > Es gibt durchaus Lernerfolge, einer daovn war dass ich den MK3801 hätte > weglassen sollen und lieber eine SIO und dass das ROM wegwschaltbar > hätte sein sollen.... und kompliziert ist die nicht.... da gibt der M4 > Cortex schon mehr her. Soso. Christian, falls Du es noch nicht bemerkt hast: Hier redet niemand über ARM Prozessoren, auch nicht über Mips oder Power. Deine Aussage das die SIO nicht zu kompliziert ist kann ich problemlos widerlegen, durch ein Zitat eines Deiner eigenen Postings übrigens, bist Du so nett uns suchst es selbst? WasDu bei Deinen Experimenten nicht bemerkt hast ist di Tatsache das man deutlich weniger Hardware benötigt als Du da zusammengestrickt hast umd ein CP/M laufen zu lassen. Da Einzige was dazu notwendig ist ist die Überlegung vor dem Bau. Ich schrieb auch nicht das früher Alles besser war, ich schrieb das Du verschiedene Sachen nicht begriffen hast aber nun darüber Vorträge hältst. Wie viele Z80 Syseme hast Du in Nartura erlebt um darüber entscheiden zu können ob die meisten die Zilog Systembausteine verwenden oder nicht? Ich denke mal du reflektierst auf Grants Webseite, der ist aber nicht "die Meisten". Gruß, Holm
Christian J. schrieb: > Rufus Τ. Firefly schrieb: > >> O nein. "Fädelkämme". > > Du fährst ja auch auf einer Autobahn nach München und nicht querfeldein > durch die Pampa. Alles schön seine preussische Ordung ... im > Gleichschritt Marsch meine Bits, rechts um.... links.... Hmm. Da hast also eine Z80 Autobahn gebaut? Die Fädelkämme wurden schon in "Deinem Thread" abgehandelt, die sehen ordentlich aus, aber haben sonst nur Nachteile wie hohe parqasitäre Kapazitäten und fast ausgeschlossene Änderungen .. wie Du schon feststellen durftest. Gruß, Holm
Harald Nagy schrieb: > Naja ausser dem Speicher steht mein Design. .. Mach mal langsam Harald. Wir reden vorher drüber. Hier gibts genug Leute die Z80 Systeme aus dem FF kennen, Du must ja Christians Fehler nicht unbedingt wiederholen. Gruß, Holm
Ähm, könntet ihr bitte die Kampfdiskussionen außen vor lassen? Es wäre mir sehr recht wenn dieser Thread nicht durch Glaubensfragen aufgeblasen wird. Jedemfalls hab ich jetzt mehr oder weniger eine Woche nur zeit für Theorie...
Hallo soweit ich mich erinnere brauchst du einen Teiler nach dem Oszillator um ein Tastverhältnis von 50% zu bekommen. Ich würde einen fertigen Oszillator nehmen dann passt auch das Tastverhältnis.
Nachdem ich die schaltung von einem funktionierem System abgekupfert habe gehe ich davon aus dass sie funktionieren sollte. Aber ich werde eure Vorschläge ausprobieren.
Harald Nagy schrieb: > Ähm, könntet ihr bitte die Kampfdiskussionen außen vor lassen? Nun ja...... jedesmal wenn in einem Betreff "Z80" auftaucht springen rote Lampen bei einigen hier an. Bedenke, dass Du hier einen heiligen Gral anrührst, es ist nicht eine CPU, es ist "DIE CPU". Aber ok..... ich knuddel den Holm dann mal und halte mich hier ganz zurück :-) >>aber haben sonst nur Nachteile wie hohe parqasitäre >>Kapazitäten und fast ausgeschlossene Änderungen .. wie Du schon >>feststellen durftest. Haben sie, haben sie..... aber das Auge isst mit. Eigentlich haben sie gar keine technischen Vorteile.
Christian J. schrieb: > Diese RAM bank Geschichte ist nicht ganz ohne, > bei einem Compiler würde es Ärger geben, weil der damit nicht umgehen > kann. Gilt nur für Leute, die nicht selber programmieren können und alles dem Compiler überlassen (müssen). Georg
karadur schrieb: > fertigen Oszillator Eine gute Alternative ist ein HC4060 mit einem passend ungeradem Quarz (9.83MHz als Beispiel). Der wirft dann auch gleich den Baudraten Takt für die SIO aus.
Warum wird Christian hier so niedergemacht? Er hat ja immerhin ein funktionierendes System mit der Z80 CPU und auch einige Peripherie hinbekommen. Ich dachte auch mal, dass ich es hinbekomme, so ein System selbst zu bauen, habe es aber leider nie wirklich durchgezogen bzw fertig gebracht. Vermutlich hatte ich auch nicht die Geduld und Ausdauer dazu. Wenn man sich die Reaktionen durchliest, traut man sich ja wirklich keinen eigenen Thread auf zu machen, um mal was vorzustellen.
Harald Nagy schrieb: > Aber bitte schenkt euch die Kommentare warum ich das mache... Dabei wäre das das einzig spannende... Der Rest ist völlig uninteressant, trivial und, last but not least, völlig irrelevant im Jahr 2015.
Es macht aber Spaß. Ich habe jedenfalls die Grundlagen damit gut verstanden. Und damals hat mein Z80 mit 8MHz, Epromfloppy und Ramfloppy jeden PC abgehängt. Was ich immer noch vermisse: der Eingabeprompt wartete schon ungeduldig bevor die Bildröhre warm war. Toll waren auch die 8" Laufwerke mit 243 KB.
c-hater schrieb: > Harald Nagy schrieb: > >> Aber bitte schenkt euch die Kommentare warum ich das mache... > > Dabei wäre das das einzig spannende... > > Der Rest ist völlig uninteressant, trivial und, last but not least, > völlig irrelevant im Jahr 2015. Nicht du schon wieder....
c-hater schrieb: > Der Rest ist völlig uninteressant, trivial und, last but not least, > völlig irrelevant im Jahr 2015. Warum kannst du dann nicht einfach mal ... deinen Senf für dich behalten?
Benjamin K. schrieb: > Warum wird Christian hier so niedergemacht? > Er hat ja immerhin ein funktionierendes System mit der Z80 CPU und auch > einige Peripherie hinbekommen. Ich dachte auch mal, dass ich es > hinbekomme, so ein System selbst zu bauen, habe es aber leider nie > wirklich durchgezogen bzw fertig gebracht. Vermutlich hatte ich auch > nicht die Geduld und Ausdauer dazu. Wenn man sich die Reaktionen > durchliest, traut man sich ja wirklich keinen eigenen Thread auf zu > machen, um mal was vorzustellen. Ich will Christian nicht niedermachen. Wenn das so rübergekommen ist dann sorry...
Benjamin K. schrieb: > Warum wird Christian hier so niedergemacht? > Er hat ja immerhin ein funktionierendes System mit der Z80 CPU und auch > einige Peripherie hinbekommen. Weil er jeden Fehler im Buch gemacht hat, Ratschläge erstmal grundsätzlich ignoriert hat, und sich danach beschwert hat, dass alles so kompliziert ist (und das jetzt zum Besten gibt). Lies dir mal seinen Thread durch und achte insbesondere auf die Zeitabstände zwischen dem "ich will XX machen"/"das ist eine doofe Idee, mach lieber YY", und der Einsicht "herrje, ist YY kompliziert, hätte ich mal XX gemacht". Dann verstehst du die Reaktionen (auch seine) hier. Das ist ähnlich wie bei Moby oder c-hater. Selbst, wenn sie recht hätten (was sogar vorkommt), glaubt ihnen niemand mehr, weil sie sich durch ihre Trollerei selbst so dermaßen ins Aus geschossen haben. Ist mit Christian und Z80 ähnlich. "Wer einmal lügt..." Aber erst Unsinn zu erzählen und dann Popcorn bereitzustellen ist irgendwie schon die Definition von Troll. Nungut, mach' dir selbst ein Bild. > Wenn man sich die Reaktionen durchliest, traut man sich ja wirklich > keinen eigenen Thread auf zu machen, um mal was vorzustellen. Wenn man entweder zeigt, dass man entweder seine Hausaufgaben gemacht hat, oder zumindest zuhören, verstehen und lernen will, dann funktioniert das hier ganz wunderbar. Die Threads driften zwar trotzdem ab, aber damit muss man leben können. Der Z80 ist nun doch nicht mehr ganz taufrisch und die meisten Hinweise kommen aus den staubigen Erinnerungskisten - da kommen auch Anekdoten und falsche Hinweise bei raus. Aber die wichtigen Antworten, Tipps und Ideen bekommt man. Darauf kommt es an. Ich habe hier für mein Z80-Projekt kompetente Hilfe (und auch Ermunterung!, neben dem Getrolle) bekommen. Das System, wie ich es (u.a. nach den Hinweisen von hier) aufgebaut hatte, funktioniert prima. Es war im Prinzip so aufgebaut wie das, was Harald vor hat (also mit AVR als Boardcontroller, der erst den RAM befüllt und danach den Z80 loslaufen lässt). Und mit den Erfahrungen davon baue ich als nächsten Schritt die finale Version, die etwas "klassischer" aussieht und ohne AVR auskommt. Dumme Entscheidungen treffen ist leicht (ich habe den AVR per I2C angebunden - der Bootvorgang war nicht besonders schnell). Es trotzdem zum Laufen zu kriegen ist trotzdem schön. Aber daraus zu lernen und es dann nochmal richtig zu machen, ist die wirkliche Kür. Mit STM32 und SAM3X habe ich so schon genug zu tun.
Ich klink mich hier dann auch mal aus. Die üblichen Prediger und Inhaber der Foren Lufthoheit haben sich ja schon aufs Stichwort eingefunden. Die werden Dir schon sagen wie Du es nach ihren Vorstellungen zu machen hast. Hauptsache es funktioniert bei mir alles, alles andere kann mir auch egal sein.
Christian J. schrieb: > Ich klink mich hier dann auch mal aus. Die üblichen Prediger und > Inhaber > der Foren Lufthoheit haben sich ja schon aufs Stichwort eingefunden. Die > werden Dir schon sagen wie Du es nach ihren Vorstellungen zu machen > hast. Hauptsache es funktioniert bei mir alles, alles andere kann mir > auch egal sein. Du bist schon ziemlich frech und undankbar.
Der Vorteil derartiger Foren ist ja zum Glück dass man das für sich Sinnvolle extrahieren und den Rest ignorieren kann... Der Ton einiger Teilnehmer hier im Forum ist ja hinlänglich bekannt ;-)
Hallo Freunde, hier mal eine Platine aus den frühen 1990ern. Lithium-Batterie fehlt. Ram ist abgesteckt damit man druntersehen kann. 1488 / 1489 sind gebrückt ; weil TTL und externe Iso-Übertragung. HD61830 + Ram war für LCD Grafikdisplays, z.B. 128x240 Pixel (einfarbig). Ja, es stimmt: Christian J. (hobel) ist beratungsresistent. Gruss
Ich habe eine Platine mit 4Mhz U880 auf der eine "MMU" mit einem TTL RAM eingetzt wird wie ich es schon mal beschrieben hatte. Hersteller war VEB Elektronik Gera. Auf der Platine 170x215mm gibts 1xCPU,1xPIO,1xCTC,1xSIO, 4x8KROM und 64K DRAM. IMHO läßt sich der Speicher 4 Kilobyteweise verwalten. Der RAM ist ein 7489, ein S-Typ wäre für höhere Geschwindigkeiten sicher besser, allerdings sind auch die Speicher deutlich schneller als früher. Ich denke nicht das es solche RAMs als CMOS gibt..gibts die? (16*4 Bit) Interessiert die die Schaltung der MMU aka Speicherverwaltung Harald? Dann zeichne ich die mal raus, Unterlagen habe ich aber das ist dunkelbraun auf hellbraun, eine Lichtpause. Erfahrungsgemäß ist da Kopie oder Scanner eher schwierig.. Gruß, Holm
Hi Holm! ja das wäre echt nett von dir! Ich will mir möglichst viele Designs ansehen um dann das Richtige für mich herauszufinden. Lg Harald
und nicht eher ist frech sondern einige anderen offenbar etwas wirr im Kopf, sonst würden solche Diskussionen nicht immer so aus dem ruder laufen
Harald Nagy schrieb: > Ich will mir möglichst viele Designs > ansehen um dann das Richtige für mich herauszufinden. http://www.pci-card.com/euro-z80.html
http://www.jupiter-ace.co.uk/ace_schematic.html Das ist ein sehr reduzierter Ansatz. Der Jupiter Ace war Anfang der 80er Jahre ein sehr exotischer Homecomputer und verschwand auch sehr schnell wieder vom Markt. Seinem Zeitgenossen, dem ZX81 gegenüber hatte er den Vorzug der etwas besseren (Gummi-)Tastatur und der Bildschirmansteuerung komplett in Hardware. Exotisch war er, weil er einen Forth-Interpreter im ROM hatte, also nicht wie andere Homecomputer mit einem Basic-Dialekt daherkam. Dafür war im (ziemlich kompakten) Handbuch fast alles relevante zum Gerät dokumentiert, natürlich fehlten Schaltpläne und das ROM-Listing, aber alles andere, der Forthinterpreter und die Hardwareschnittstellen waren ausreichend gut beschrieben.
Hi, > ja das wäre echt nett von dir! Ich will mir möglichst viele Designs > ansehen um dann das Richtige für mich herauszufinden. dann hänge ich auch mal meine Pläne an. Das erste System habe ich so wie im Schaltplan aufgebaut. Der AVR dient als Board-Controller und übernimmt zuerst die Buskontrolle, um dem Z80 gültige Daten in den RAM zu legen. Außerdem dient er als serielle Schnittstelle zur Außenwelt, als ziemlich langsame (wegen I²C) ROM-Floppy und stellt den Takt (einstellbar) für den Z80 bereit. CP/M läuft. Als RAM dient ein 32k-SRAM, welches direkt am Bus hängt (aber via Steckkarte). Der Interruptlogik fehlt ein Latch; wenn mehrere IRQs quasi-gleichzeitig feuern, wird u.U. ein falscher Interrupt gemeldet. Das zweite System ist meine derzeitige Planung, und noch nicht aufgebaut. Eine MMU auf Basis des 74LS612 stellt 1 MB Adressraum in 4 KB-Pages bereit, gefüllt mit 256 KB Flash und 768 KB DRAM in 3 Bänken. Interrupt- und Adressierungslogik für den Bus wird dann auf eine zweite Steckkarte ausgelagert. Eine vorherige Planung enthielt eine MMU auf Basis vom 74LS189, ähnlich wie die von Holm gezeigte. Allerdings sind beide Chips nur schwer zu bekommen, und ein 74LS612 vereinfacht das Design deutlich (nur 2 ICs für die MMU). Gruß, Svenska
Die SIO ist nicht kompliziert. Anbei ein Monitor, wie er bei mir läuft. XTAL ist 2 MHz, die beiden SIOs sind über den CTC mit Takt versorgt und laufen auf 9600. Wenn man den Quarz auf 8MHz austauscht, bekommt man also 38400 Baud; die CMOS-Versionen von Z80 und Peripherie können das ab. Programmspeicher ist 29F-EEprom mit 128kB, über einen BCD-Schalter sind die Programme auswählbar. Das gehört noch zum echten Stil, behaupte ich einfach mal, weil Eprom-Löschen wirklich blöd ist. Das Projekt hatte ich vor 1.5 Jahren angefangen, weil ich noch eine Rechnung mit der SIO aus dem Jahr 198x offen hatte. Inzwischen habe ich das meiste wieder vergessen, was die Hardware auf dem Board von 198x und diesem neuen Board angeht. Was eventuell zu denken geben könnte. Bei mir war es allerdings von vornherein ein Projekt für die Schublade ... Hauptsache, es läuft g Den Crossassembler von Mnemonics auf Maschinensprache habe ich selbst geschrieben, von daher werden die Steuerzeichen nicht für andere Assembler passen. Das LCD wird im 4-bit-Modus angesteuert.
1 | ' BOOTLOADER |
2 | '-------------------------------------------------------------------------- |
3 | ' ANSCHLUSSBELEGUNGEN FÜR Z80-TERMINAL |
4 | '-------------------------------------------------------------------------- |
5 | ' XTAL 2MHz |
6 | ' SIO PORT $00,$01,$02,$03 |
7 | ' PIO PORT $04,$05,$06,$07 |
8 | ' PIOA bidirektional |
9 | ' PIOB bit control |
10 | ' PIOB7 I/O, BCD-Schalter 8 |
11 | ' PIOB6 I/O, BCD-Schalter 4, EEPROM A17 |
12 | ' PIOB5 I/O, BCD-Schalter 2, EEPROM A16 |
13 | ' PIOB4 I/O, BCD-Schalter 1, EEPROM A15 |
14 | ' PIOB3 O, LED weiss |
15 | ' PIOB2 O, LED purple |
16 | ' PIOB1 O, LED gelb |
17 | ' PIOB0 O, LED grün |
18 | ' CTC PORT $08,$09,$0A,$0B |
19 | ' CTC0 verbunden mit SIOA-CLK |
20 | ' CTC1 verbunden mit SIOB-CLK |
21 | ' CTC2 NC |
22 | ' CTC3 NC |
23 | ' LCDEN PIOA, Bit6 |
24 | ' LCDWR PIOA, Bit5 |
25 | ' LCDRS PIOA, Bit4 |
26 | ' LCDD7 PIOA, Bit3 |
27 | ' LCDD6 PIOA, Bit2 |
28 | ' LCDD5 PIOA, Bit1 |
29 | ' LCDD4 PIOA, Bit0 |
30 | '-------------------------------------------------------------------------- |
31 | ' KONSTANTENDEFINITIONEN |
32 | '-------------------------------------------------------------------------- |
33 | ' *************** |
34 | ' * I/O-BEREICH * |
35 | ' *************** |
36 | D SIOA=$00 |
37 | D SIOB=$01 |
38 | D CTR_SIOA=$02 |
39 | D CTR_SIOB=$03 |
40 | D PIOA=$04 |
41 | D PIOB=$05 |
42 | D CTR_PIOA=$06 |
43 | D CTR_PIOB=$07 |
44 | D CTC0=$08 |
45 | D CTC1=$09 |
46 | D CTC2=$0A |
47 | D CTC3=$0B |
48 | 'D BAUD=!52 '8MHZ / 13 /16 ~ 38400 Baud für SIO |
49 | ' ************ |
50 | ' * SPEICHER * |
51 | ' ************ |
52 | D MBANK=$FFFF 'Memorybank für EEPROM, enthält Adresse A15, A16, A17 in Bit 0-2, BCD-Schalter 8 in Bit 3 |
53 | '-------------------------------------------------------------------------- |
54 | ' PROGRAMMBEGINN |
55 | '-------------------------------------------------------------------------- |
56 | $0000 JP $0100 |
57 | $0038 JP $F800 '*** INT-Routine bei $F800 |
58 | $0066 JP $FA00 '*** NMI-Routine bei $FA00 |
59 | $0100 LD SP,$FFFE |
60 | CALL PIO_INIT |
61 | CALL LCD_INIT |
62 | CALL CTC_INIT '38400 Baud |
63 | CALL SIOA_INIT |
64 | CALL SIOB_INIT |
65 | '-------------------------------------------------------------------------- |
66 | ' Ausgabe StartScreen auf LCD |
67 | LD BC,T_SYS |
68 | CALL LCD_PUTS |
69 | ' Ausgabe StartScreen auf SIOA |
70 | LD DE,T_Z80 |
71 | CALL SIOA_PUTS |
72 | CALL LINEFEED |
73 | LD DE,T_BANK |
74 | CALL SIOA_PUTS |
75 | IN A,(PIOB) |
76 | AND %11110000 |
77 | CALL PUT_HEX |
78 | CALL LINEFEED |
79 | LD DE,T_EEPR |
80 | CALL SIOA_PUTS |
81 | LD DE,T_NO |
82 | IN A,(PIOB) |
83 | BIT 7,A |
84 | JR Z,PEYESNO |
85 | LD DE,T_YES |
86 | PEYESNO CALL SIOA_PUTS |
87 | CALL LINEFEED |
88 | LD DE,T_SELMEM |
89 | CALL SIOA_PUTS |
90 | CALL LINEFEED |
91 | LD DE,T_DUMPA |
92 | CALL SIOA_PUTS |
93 | CALL LINEFEED |
94 | LD DE,T_DUMPB |
95 | CALL SIOA_PUTS |
96 | CALL LINEFEED |
97 | LD DE,T_DUMPM |
98 | CALL SIOA_PUTS |
99 | CALL LINEFEED |
100 | LD DE,T_RES |
101 | CALL SIOA_PUTS |
102 | '-------------------------------------------------------------------------- |
103 | ' Warten auf Eingabe von SIOB |
104 | NEXTCHR CALL SIOB_GET |
105 | LD C,A |
106 | IN A,(PIOB) |
107 | OR %00001000 |
108 | OUT (PIOB),A |
109 | LD A,C |
110 | CP !112 '*** "p", programmieren |
111 | JR NZ,CP_D |
112 | JP SRAMPROG |
113 | CP_D CP !100 '*** "d", memory dump |
114 | JR NZ,CP_A |
115 | CALL DUMPMEM |
116 | JP CP_ENDE |
117 | CP_A CP !97 '*** "a" |
118 | JR NZ,CP_B |
119 | CALL LINEFEED |
120 | IN A,(PIOA) |
121 | CALL PUT_HEX |
122 | JP CP_ENDE |
123 | CP_B CP !98 '*** "b" |
124 | JR NZ,CP_R |
125 | CALL LINEFEED |
126 | IN A,(PIOB) |
127 | CALL PUT_HEX |
128 | JP CP_ENDE |
129 | CP_R CP !114 '*** "r" |
130 | JR NZ,CP_ENDE |
131 | JP $8000 |
132 | CP_ENDE IN A,(PIOB) |
133 | AND %11110111 |
134 | OUT (PIOB),A |
135 | JP NEXTCHR |
136 | '-------------------------------------------------------------------------- |
137 | ' SRAM programmieren über SIOB |
138 | SRAMPROG IN A,(PIOB) |
139 | OR %00000100 'purple LED ein |
140 | OUT (PIOB),A |
141 | GET_PROG CALL SIOB_GET |
142 | LD H,A |
143 | CALL SIOB_GET |
144 | LD L,A |
145 | CALL SIOB_GET |
146 | LD D,A |
147 | LD A,$FF |
148 | AND H |
149 | AND L |
150 | AND D |
151 | CP $FF |
152 | JR NZ,PROG |
153 | IN A,(PIOB) |
154 | AND %11111011 'purple LED aus |
155 | OUT (PIOB),A |
156 | JP $8000 |
157 | PROG LD (HL),D 'Byte programmieren |
158 | JR GET_PROG |
159 | '-------------------------------------------------------------------------- |
160 | ' gibt EEPROM-Speicher auf SIOA aus |
161 | DUMPMEM LD HL,$0000 |
162 | DUMPLINE CALL LINEFEED |
163 | LD A,H |
164 | CALL PUT_HEX |
165 | LD A,L |
166 | CALL PUT_HEX |
167 | LD A,!58 '*** Doppelpunkt hinterherschicken |
168 | CALL SIOA_PUTC |
169 | CALL VERZ |
170 | LD C,!64 |
171 | DUMPNEXT LD A,!32 '*** Leerzeichen hinterherschicken |
172 | CALL SIOA_PUTC |
173 | LD A,(HL) |
174 | CALL PUT_HEX |
175 | INC HL |
176 | DEC C |
177 | JP NZ,DUMPNEXT |
178 | LD A,H |
179 | CP $80 |
180 | JP NZ,DUMPLINE |
181 | LD A,L |
182 | CP $00 |
183 | RET Z |
184 | JR DUMPLINE |
185 | '-------------------------------------------------------------------------- |
186 | ' PIO |
187 | '-------------------------------------------------------------------------- |
188 | PIO_INIT LD A,$CF 'PORTA Mode 2, bidirectional |
189 | OUT (CTR_PIOA),A |
190 | LD A,$00 'alles auf output |
191 | OUT (CTR_PIOA),A |
192 | LD A,$CF 'PORTB Mode 3, bit control |
193 | OUT (CTR_PIOB),A |
194 | LD A,$F0 'Bit 7-4 Inputs for Memory-Bank EEPROM/BCD-Switch |
195 | OUT (CTR_PIOB),A |
196 | IN A,(PIOA) 'Dummy-Lesung |
197 | IN A,(PIOB) 'Dummy-Lesung |
198 | LD A,$0F |
199 | OUT (PIOB),A 'LEDs kurz aufleuchten lassen, Speicherbank auf 0 |
200 | LD A,$00 |
201 | LD (MBANK),A |
202 | CALL VERZ |
203 | OUT (PIOB),A 'OUT Pins auf 0 setzen |
204 | RET |
205 | '-------------------------------------------------------------------------- |
206 | ' LCD |
207 | '-------------------------------------------------------------------------- |
208 | LCD_INIT LD B,$02 |
209 | FUNCSET CALL VERZ |
210 | LD A,$00 'function set |
211 | OUT (PIOA),A |
212 | NOP |
213 | LD A,$43 'LCD_EN=1 |
214 | OUT (PIOA),A |
215 | NOP |
216 | LD A,$03 'LCD_EN=0 |
217 | OUT (PIOA),A |
218 | DJNZ FUNCSET |
219 | ' |
220 | LD A,$00 'function set |
221 | OUT (PIOA),A |
222 | NOP |
223 | LD A,$42 'LCD_EN=1 |
224 | OUT (PIOA),A |
225 | NOP |
226 | LD A,$02 'LCD_EN=0 |
227 | OUT (PIOA),A |
228 | ' |
229 | CALL VERZ |
230 | LD A,$28 |
231 | CALL LCD_CMD |
232 | LD A,$08 'lcd off |
233 | CALL LCD_CMD |
234 | LD A,$01 'clear lcd |
235 | CALL LCD_CMD |
236 | CALL VERZ |
237 | LD A,$0E 'lcd on |
238 | CALL LCD_CMD |
239 | LD A,$02 'cursor home |
240 | CALL LCD_CMD |
241 | CALL VERZ |
242 | LD A,$06 'entry mode set |
243 | CALL LCD_CMD |
244 | RET |
245 | '-------------------------------------------------------------------------- |
246 | LCD_PUTC LD D,A 'data steht im Akku |
247 | AND %00001111 |
248 | LD E,A 'lowbyte |
249 | LD A,D |
250 | CALL AKKUUKKA |
251 | AND %00001111 |
252 | LD D,A 'highbyte |
253 | ' |
254 | LD A,$10 'RS=1 |
255 | OUT (PIOA),A |
256 | NOP |
257 | LD A,$50 'RS=1,EN=1 |
258 | OUT (PIOA),A |
259 | NOP |
260 | OR D |
261 | OUT (PIOA),A |
262 | NOP |
263 | AND %10111111 'EN=0 |
264 | OUT (PIOA),A |
265 | NOP |
266 | ' |
267 | LD A,$10 'RS=1 |
268 | OUT (PIOA),A |
269 | NOP |
270 | LD A,$50 'RS=1,EN=1 |
271 | OUT (PIOA),A |
272 | NOP |
273 | OR E |
274 | OUT (PIOA),A |
275 | NOP |
276 | AND %10111111 'EN=0 |
277 | OUT (PIOA),A |
278 | NOP |
279 | RET |
280 | '-------------------------------------------------------------------------- |
281 | LCD_PUTS LD A,(BC) |
282 | CP !0 |
283 | RET Z |
284 | CALL LCD_PUTC |
285 | INC BC |
286 | JR LCD_PUTS |
287 | '-------------------------------------------------------------------------- |
288 | LCD_CMD LD D,A 'data steht im Akku |
289 | AND %00001111 |
290 | LD E,A 'lowbyte |
291 | LD A,D |
292 | CALL AKKUUKKA |
293 | AND %00001111 |
294 | LD D,A 'highbyte |
295 | ' |
296 | LD A,$00 'RS=0 |
297 | OUT (PIOA),A |
298 | NOP |
299 | LD A,$40 'RS=0,EN=1 |
300 | OUT (PIOA),A |
301 | NOP |
302 | OR D |
303 | OUT (PIOA),A |
304 | NOP |
305 | AND %10111111 'EN=0 |
306 | OUT (PIOA),A |
307 | NOP |
308 | ' |
309 | LD A,$00 'RS=1 |
310 | OUT (PIOA),A |
311 | NOP |
312 | LD A,$40 'RS=1,EN=1 |
313 | OUT (PIOA),A |
314 | NOP |
315 | OR E |
316 | OUT (PIOA),A |
317 | NOP |
318 | AND %10111111 'EN=0 |
319 | OUT (PIOA),A |
320 | NOP |
321 | RET |
322 | '-------------------------------------------------------------------------- |
323 | ' CTC |
324 | '-------------------------------------------------------------------------- |
325 | CTC_INIT LD A,$05 '*** Timer Mode, Prescaler 16, Control Word |
326 | OUT (CTC0),A |
327 | LD A,!13 '2MHZ / 13 /16 ~ 9600 Baud für SIOA |
328 | OUT (CTC0),A |
329 | LD A,$05 '*** Timer Mode, Prescaler 16, Control Word |
330 | OUT (CTC1),A |
331 | LD A,!13 '2MHZ / 13 /16 ~ 9600 Baud für SIOB |
332 | OUT (CTC1),A |
333 | LD A,$05 '*** Timer Mode, Prescaler 16, Control Word |
334 | OUT (CTC2),A |
335 | LD A,!125 '2MHZ / 125 /16 ~ 1000 Hz |
336 | OUT (CTC2),A |
337 | RET |
338 | '-------------------------------------------------------------------------- |
339 | ' SIO A |
340 | '-------------------------------------------------------------------------- |
341 | SIOA_INIT LD A,%00011000 '*** CMD 3 CHANNEL-RESET |
342 | OUT (CTR_SIOA),A |
343 | NOP |
344 | NOP |
345 | NOP |
346 | NOP |
347 | LD A,$04 '*** write to register $04 |
348 | OUT (CTR_SIOA),A |
349 | LD A,%00000100 '*** x1 Clock Mode, 1 Stop Bit |
350 | OUT (CTR_SIOA),A |
351 | LD A,$03 '*** write to register $03 |
352 | OUT (CTR_SIOA),A |
353 | LD A,%11000001 '*** 8 BIT, EMPFÄNGER EIN |
354 | OUT (CTR_SIOA),A |
355 | LD A,$05 '*** write to register $05 |
356 | OUT (CTR_SIOA),A |
357 | LD A,%01101000 '*** 8 BIT, SENDER EIN |
358 | OUT (CTR_SIOA),A |
359 | LD A,$01 |
360 | OUT (CTR_SIOA),A |
361 | LD A,$00 |
362 | OUT (CTR_SIOA),A |
363 | RET |
364 | '-------------------------------------------------------------------------- |
365 | ' get char from uart |
366 | SIOA_GET IN A,(CTR_SIOA) |
367 | AND %00000001 |
368 | JR Z,SIOA_GET |
369 | IN A,(SIOA) |
370 | RET |
371 | '-------------------------------------------------------------------------- |
372 | ' put char to uart |
373 | SIOA_PUTC PUSH AF |
374 | SIOA_WAIT IN A,(CTR_SIOA) |
375 | BIT 2,A |
376 | JR Z,SIOA_WAIT |
377 | POP AF |
378 | OUT (SIOA),A |
379 | RET |
380 | '-------------------------------------------------------------------------- |
381 | ' put string to uart |
382 | SIOA_PUTS LD A,(DE) |
383 | CP !0 |
384 | RET Z |
385 | CALL SIOA_PUTC |
386 | INC DE |
387 | JR SIOA_PUTS |
388 | '-------------------------------------------------------------------------- |
389 | ' SIO B |
390 | '-------------------------------------------------------------------------- |
391 | SIOB_INIT LD A,%00011000 '*** CMD 3 CHANNEL-RESET |
392 | OUT (CTR_SIOB),A |
393 | NOP |
394 | NOP |
395 | NOP |
396 | NOP |
397 | LD A,$04 '*** write to register $04 |
398 | OUT (CTR_SIOB),A |
399 | LD A,%00000100 '*** x1 Clock Mode, 1 Stop Bit |
400 | OUT (CTR_SIOB),A |
401 | LD A,$03 '*** write to register $03 |
402 | OUT (CTR_SIOB),A |
403 | LD A,%11000001 '*** 8 BIT, EMPFÄNGER EIN |
404 | OUT (CTR_SIOB),A |
405 | LD A,$05 '*** write to register $05 |
406 | OUT (CTR_SIOB),A |
407 | LD A,%01101000 '*** 8 BIT, SENDER EIN |
408 | OUT (CTR_SIOB),A |
409 | LD A,$01 |
410 | OUT (CTR_SIOB),A |
411 | LD A,$00 |
412 | OUT (CTR_SIOB),A |
413 | RET |
414 | '-------------------------------------------------------------------------- |
415 | ' get char from uart |
416 | SIOB_GET IN A,(CTR_SIOB) |
417 | AND %00000001 |
418 | JR Z,SIOB_GET |
419 | IN A,(SIOB) |
420 | RET |
421 | '-------------------------------------------------------------------------- |
422 | ' put char to uart |
423 | SIOB_PUTC PUSH AF |
424 | SIOB_WAIT IN A,(CTR_SIOB) |
425 | BIT 2,A |
426 | JR Z,SIOB_WAIT |
427 | POP AF |
428 | OUT (SIOB),A |
429 | RET |
430 | '-------------------------------------------------------------------------- |
431 | ' put string to uart |
432 | SIOB_PUTS LD A,(DE) |
433 | CP !0 |
434 | RET Z |
435 | CALL SIOB_PUTC |
436 | INC DE |
437 | JR SIOB_PUTS |
438 | '-------------------------------------------------------------------------- |
439 | LINEFEED PUSH AF |
440 | LD A,$0A '*** CHR$(10) = LF |
441 | CALL SIOA_PUTC |
442 | LD A,$0D '*** CHR$(13) = CR |
443 | CALL SIOA_PUTC |
444 | POP AF |
445 | RET |
446 | '-------------------------------------------------------------------------- |
447 | 'SIO_ERR LD A,$01 |
448 | ' OUT (CTR_SIOB),A |
449 | ' IN A,(CTR_SIOB) '*** LESE RR1 |
450 | ' AND $70 '*** NUR D6, D5, D4 |
451 | ' RET Z |
452 | ' LD A,%00001110 '*** BEI FEHLER DIFFUSE LED EIN UND HALT |
453 | ' OUT (PC1),A |
454 | ' HALT |
455 | ' LD A,$30 '*** FEHLER-RESET |
456 | ' OUT (CTR_SIOB),A |
457 | ' RET |
458 | '-------------------------------------------------------------------------- |
459 | PUT_HEX PUSH AF '*** 8-BIT-ZAHL ALS HEX-ZAHL DARSTELLEN |
460 | CALL AKKUUKKA |
461 | AND %00001111 |
462 | CALL BYTE_HEX |
463 | POP AF |
464 | AND %00001111 |
465 | CALL BYTE_HEX |
466 | RET |
467 | BYTE_HEX CP !10 |
468 | JR C,ZEIGEN |
469 | ADD A,!7 |
470 | ZEIGEN ADD A,!48 |
471 | CALL SIOA_PUTC |
472 | RET |
473 | AKKUUKKA RRCA |
474 | RRCA |
475 | RRCA |
476 | RRCA |
477 | RET |
478 | '-------------------------------------------------------------------------- |
479 | VERZ LD D,$80 |
480 | LD E,$00 |
481 | VERZ1 DEC E |
482 | JR NZ,VERZ1 |
483 | DEC D |
484 | JR NZ,VERZ1 |
485 | RET |
486 | '-------------------------------------------------------------------------- |
487 | T_SYS "** Z80-Systemstart **" |
488 | T_Z80 "Z80-System" '*** im Assembler wird hinter den Text eine 0 = Stringende angefügt |
489 | T_BANK "Memory Bank: " |
490 | T_EEPR "EEPROM programming enabled: " |
491 | T_SELMEM "0-7 - select memory bank" |
492 | T_DUMPA "a - dump PIOA port" |
493 | T_DUMPB "b - dump PIOB port" |
494 | T_DUMPM "d - dump program memory" |
495 | T_RES "r - reset" |
496 | T_YES "yes" |
497 | T_NO "no" |
498 | TEMP NOP |
499 | END |
avus schrieb: > Anbei ein Monitor, wie er bei mir läuft. Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang
:
Bearbeitet durch User
Dann auch von mir ein Beispiel. Es ist ein System mit Flash, 64k RAM, SIO und einem IDE Interface (32MB Flash Modul für € 2.- von Pollin). CP/M läuft darauf. Der Aufbau ist etwas abenteuerlich, weil alles so historisch gewachsen ist. Ursprünglich war es eine Platine mit 32k Eprom, 32k RAM und einem 1200Bd Modem (für die Experten: TNC2C). Als hier die Diskussion los ging, habe ich die Platine mal an einem Wochenende modifiziert, just for fun. Es ist erstaunlich, wie fix diese Hardware aus der Steinzeit ist. Falls es jemand möchte: Den Schaltplan gibt es auch als Eagle-4 File, alle Quelltexte für die CP/M Anpassung gibt es auch. Email genügt. Die Cross Software (C-Compiler, Assembler, Linker, Locater, Librarian) gibt es für Windows. Für CP/M findet man alles reichlich im Netz.
@avus: Die SIO ist schon kompliziert, sie ist komplexer als die CPU, allerdings wird es erst kompliziert wenn man mehr als simple asynchrone Übertragung von ihr will.. :-) Ok, Ich hebele mal ein Bisschen Text aus der Doku zur oben angegebenen MMU ab, schade das das indessen so weit hoch gerutscht ist. U2 gehört im engeren Sinne gar nicht dazu sondern ist der IO-Adreßdecoder den man in irgend einer Form sowieso braucht, der hing aber halt "mit dran". U9 (74LS540) wird nur benötigt wenn man den 7489 zurücklesen möchte, funktionsrelevant ist er nicht. Allerdings können über die freien 4 Bits noch irgendwelche Baudratenschalter etc. eingelesen werden. Zitat: Zur teuerung der Arbeit der Speicher auf der Karte sowie evtl. externer Speichereinheiten, wie RAM-Disk, EPROM-Disks u.ä. ist es notwendig, den Speicherraum durch entsprechende Steuervorgänge zu verwalten. Die CPU U880 ist in der Lage, ,aximal 64KByte Speiher direkt anzusteuern.Allein auf der Karte GRE stehen aber 64Kbyte RAM und je nach verwendetem EPROM Typ 8,16,32, oder 64KByte EPROM zur Verfügung. Nach Power On Reset bzw. externem Reset wird über L Pegel an U4/1 der Grundzustand auf der Karte erreicht. Dies bedeutet das die Ausgänge des negierenden IC U5 alle auf H Pegel liegen und somit durch en TTL Prom (dieser Decoder ist nicht auf dem Bild) die Speicherarbeit so gesteuert wird, das im Gesamtadressraum gilt: "EPROM lesen, RAM schreiben". Dies bietet die Möglichkeit z.B. den Inhalt der EPROMs in RAM Zellen der gleichen Adresse um zu laden. Nach jedem Programmanlauf muß nun der adressierbare Speicherraum von 64K in 16 Segmenten zu je 4K-Byte in der Arbeitsweise definiert werden. Für jedes Segment ist festzulegen ob hier GRE-RAM, GRE-ROM oder kein GRE-interner Speicher aktiv sein soll. Weiterhin werden im gleicher Programmiervorgang die Signale MEMDI1 und MEMDI2 (Speichersperrsignale für Karten-Externen Memory) für jedes Segment festgelegt. Das Einschreiben der 16 Segmentinformationen erfolgt über einen IO-Befehl auf eine 16 Bit Adresse. Die Steuerinformation ist nun folgendermaßen zu bilden:
1 | A15 A14 A13 A12 A11 A10 A9 A8 |
2 | ----------------------------------------------------------------- |
3 | 0 0 0 0 | 1 GRE RAM aktiv |
4 | . . . . | 0 GRE RAM passiv |
5 | . . . . |------------------------------------------ |
6 | . . . . | 1 GRE ROM aktiv |
7 | 1 1 1 1 | 0 GRE ROM passiv |
8 | --------------------- |------------------------------------------ |
9 | 0 ... Fh | 1 MEMDI1 aktiv |
10 | Segment Nr. zugleich | 0 MEMDI1 passiv |
11 | Speicherbereichs- |------------------------------------------ |
12 | anfangsadresse | 1 MEMDI2 aktiv |
13 | | 0 MEMDI2 passiv |
14 | ----------------------------------------------------------------- |
Zur Ausgabe der Steuerinformation kann mit 2 Befehlstypen gearbeitet werden. Steuerinformation -> Akku OUT (8CH) -> Akku oder Steuerinformation -> Register B 8CH -> Register C OUT (C),r Weiterhin ist es möglich, durch folgende E/A Befehle die Arbeit der MMU zu beeinflussen: E/A Befehl an 8CH: Einschreiben in Segmentregister 8DH: Freigabe der SEG-Register Informationen 8EH: Sperren der SEG-Register Informationen 8FH: Rücklesen der SEG- Register Informationen sowie der 4 frei benutzbaren Leitungen U9, 6,7,8,9. IO-Decoder: 80..83H CTC 84..87H PIO 88..8BH SIO 8C..8FH MMU ...so, keinen Bock mehr zum abhebeln.. Wenn Dich der Inhalt des TTL ROMs als Decoder auch noch interessiert dann gib Bescheid. Gruß, Holm
Holm Tiffe schrieb: > Die SIO ist schon kompliziert Wenn du die SIO als komplex einstufst, wie ist es dann mit dem SCC Z8530? DA kann man sich die Ohren brechen.
Georg G. schrieb: > Der Aufbau ist etwas abenteuerlich, weil alles so historisch gewachsen > ist. Ursprünglich war es eine Platine mit 32k Eprom, 32k RAM und einem > 1200Bd Modem Wirklich nette Idee den TNC einer Weiterverwendung zuzuführen. @Harald Aus meiner Sicht ein wirklich guter Ansatz um mit geringem Aufwand einen Einstieg zu finden.
Der grafische Taschenrechner TI85 hat einen Z80 Kern. Den hatten wir als Studenten mal gehackt. Da hast du gleich eine Tastatur und ein Display. Grobeinstieg: http://www.ticalc.org/basics/calculators/ti-85.html
@Georg: Die Einstufung stammte nicht von mir, und das sie mehr Transistoren enthält als die CPU ist bekannt. @Svenska: Bin das nur ich der auf Deinem Bilder gar Nix erkennen kann? Bei der Besorgung dieser TTL RAMs ist es manchmal hilfreich über den Tellerrand zu gucken und z.B. einen K155RU2 aus russischer Produktion zu verwenden. Das Ding gibts für 23 Cent, Harald weiß wo. Ich habe aber falls Jemand Bedarf für Sowas haben sollte auch noch einige TESLA MH7489 da.. Gruß, Holm
Georg G. schrieb: > wie ist es dann mit dem SCC Z8530? DA kann man sich die Ohren brechen. Damals sah man das auch grad andersrum. Nicht Simplizität war angesagt, sondern Komplexität. Der Z8036/8536 Parallelport/Timer war die sprichwörtliche Eierlegende Wollmilchsau. Und wo Intel mit den Slave-µC 8042 (als PC-Tastaturcontroller berühmt geworden) grad mal ein simples bidirektionales Register für Kommunikation zwischen Host und µC hinrotzte erfand Zilog beim Z809x sorgfältig kontrollierte Dual-Port-Register, DMA-Zugriff und Software-Bootloading. Ich kenne auch niemanden, der das damals kritisierte. Im Gegenteil. Nach deutlich zu simpel geratenen Bausteinen wie dem 8255 war man froh über die gewonnenen Möglichkeiten.
:
Bearbeitet durch User
S. R. schrieb: > und ein 74LS612 vereinfacht das Design deutlich Einen habe ich noch 'rumliegen. Den könnte ich dir anbieten.
Hallo! War gerade kurz zuhause. Bauteilecheck.... Hab leider keinen 74Hc4060 da. Nachdem ich für dieses Projekt nichts bestellen will, kennt jemand alternativen?
Wir wissen ja nicht, was Du an Bauteilen vorrätig hast ... Ich würd' ja einfach einen fertigen Quarzoszillator verwenden, so etwas sollte sich irgendwo ausschlachten lassen.
Harald Nagy schrieb: > Hab leider keinen 74Hc4060 > da. Nachdem ich für dieses Projekt nichts bestellen will, kennt jemand > alternativen? Wenn du dir zutraust, den Oszillator selber zu bauen, sind der 4020 und der 4040 auch lange Ripple Zähler. Wenn du in der Exotenkiste einen 74AS867 findest, das ist ein 8-Bit Synchronzähler. Oder CD4520...
:
Bearbeitet durch User
Holm Tiffe schrieb: > @Svenska: Bin das nur ich der auf Deinem Bilder gar Nix erkennen kann? Ich finde die eigentlich ganz gut lesbar, wenn ich sie mir in Normalgröße anschaue. Also im neuen Tab öffne, per Mittelklick. > Bei der Besorgung dieser TTL RAMs ist es manchmal hilfreich über den > Tellerrand zu gucken und z.B. einen K155RU2 aus russischer Produktion zu > verwenden. Das Ding gibts für 23 Cent, Harald weiß wo. Das war mir bei der Planung nicht bewusst. Ich war bei Segor im Laden und die hatten die nicht mehr da, weder 'LS89, 'LS189 noch 'LS289. Daraufhin hatte ich die Idee dann verworfen und mir später einen 74LS612 für 3,50$ plus Versand bei eBay geschossen (und gleich noch 16C550 und TMS9929 dazu). Konrad S. schrieb: > S. R. schrieb: >> und ein 74LS612 vereinfacht das Design deutlich > Einen habe ich noch 'rumliegen. Den könnte ich dir anbieten. Ach verdammt, zu spät. ;-) Ich komme darauf zurück, wenn meiner nicht funktioniert. Gruß, Svenska
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.