Robotrontechnik-Forum

Registrieren || Einloggen || Hilfe/FAQ || Suche || Mitglieder || Home || Statistik || Kalender || Admins Willkommen Gast! RSS

Robotrontechnik-Forum » Technische Diskussionen » MCS80... » Themenansicht

Autor Thread - Seiten: -1-
000
09.01.2013, 19:46 Uhr
holm

Avatar von holm

Leute ich habe schon mal davon erzählt, ein Telefonat mit AE hat mich vorhin wieder draufgestubst.
In der Zeit bevor ich an der Uni gearbeitet hatte, also Mitte/Ende der 80er haben ein Kumpel und ich damals den MC80.20 softwaremäßig auseinander genommen und das Ganze für zu Hause angepaßt. Den größten Teil der Software hatte mein Freund "geschrieben oder modifiziert, damals noch auf dem MRES der nur mit KMBG ausgestattet war.

Ich hatte meinen Freund mal nach den Quellen gefragt und er hatte mir 2 Lochstreifen in die Hand gedrückt, ich habe einen Atmel an eine Lesermechanik gebastelt, das Ganze ausgelesen und ambrosius hat sich die Mühe gemacht die MEOS Assembler Quellen so umzuarbeiten das sie ein "gewöhnlicher" Z80 Assembler frisst..

Das Ergebnis dieser Bemühungen liegt hier:

http://www.tiffe.de/Robotron/MCS80

Ich halte das deswegen noch nicht für überholt, da das Ganze ein aus meiner Sicht gutes
Debugging System für K1520 Hardware ist. Es funktioniert mit einer 16x64 Displaykarte
(die wohl oft noch unbeachtet herumliegt) und einer "gewöhnlichen" CPU Karte wie der K2521 z.B. Notwendig ist noch eine ROM Karte für die Software.
Nicht mit dabei sind die Quellen für die Lochstreifen Ein- und Ausgabe, den Epromer
sowie das Kassetteninterface. (Weil die erstens bei uns beiden unterschiedlich waren und weil die nicht auf Lochstreifen vorlagen, ich glaube mein Freund hat da noch MEOS Kassetten) Das originale MC80 4K Basic sollte nach "plug in" auf 0x4000)
auch damit laufen. Mich hat an diesem System immer der Zeilenassembler mit dem Testsystem fasziniert, man hat ruckzuck irgendwas zusammengeschrieben um irgendeine Hardware zu testen, dabei ist das System wegen der normalen Bildschirmsteuerung nicht so empfindlich wie der MC80 der ja ohne Interrupt sofort den Fernseher ausmacht.
Die Tastatureingabe war auch was selbst gebasteltes mit der 400 Mark K7659 die es im Amateurbedarf mal gab...hier wird man sich sicher was Anderes einfallen lassen müssen.
Am praktischsten wäre wohl heute eine V.24 Schnittstelle parallel zur ursprünglichen Bildschirmsteuerung, da aus dem BWS bei diesem MC80 System Zeichen zurückgelesen werden, allerdings könnte das auch für die dynamische RAM Anzeige zu langsam sein...dann halt ein Ding mit PS/2 Tastatur oder so..

Da mich teilweise die Leutchen hier mit kaputten Platinen wegen Rep. zugeschüttet haben
und mir die Zeit fehlt das Ganze wiedermal aus zu graben, halt hier die Quellen, eventuell findet es ja ein Anderer brauchbar.

Gruß,

Holm
--
float R,y=1.5,x,r,A,P,B;int u,h=80,n=80,s;main(c,v)int c;char **v;
{s=(c>1?(h=atoi(v[1])):h)*h/2;for(R=6./h;s%h||(y-=R,x=-2),s;4<(P=B*B)+
(r=A*A)|++u==n&&putchar(*(((--s%h)?(u<n?--u%6:6):7)+"World! \n"))&&
(A=B=P=u=r=0,x+=R/2))A=B*2*A+y,B=P+x-r;}
Seitenanfang Seitenende
Profil || Private Nachricht || Suche Zitatantwort || Editieren || Löschen
001
10.01.2013, 10:36 Uhr
felge1966
Default Group and Edit


Ich habe mir mal die Quellen kurz angesehen. ABS (K7023) ist ja ab FC00h mit der üblichen Einstellung, ZVE ist ja auch klar (K2521).

Da stellten sich doch ein paar Fragen:
- Ist da noch eine RAM Karte erforderlich oder reicht der 1K RAM auf der ZVE?
- wie sah die Anschaltung der K7659 aus (als Ersatz könnte ja eventuell auch die K7652 dienen)?
- Welchen Adressbereich hatte die ROM Karte?

Gruß Jörg
--
http://felgentreu.spdns.org/bilder/jacob120.gif
Seitenanfang Seitenende
Profil || Private Nachricht || Suche Zitatantwort || Editieren || Löschen
002
10.01.2013, 18:04 Uhr
holm

Avatar von holm

Wir hatten wohl 16K ROM und 48K DRAM in der Kiste. Frage mich aber nicht nach irgendwelchen MEMDI Geschichten, das ist ein Bisschen lange her. Im Prinzip sollte
das nicht deutlich anders sein als beim MC80 selber. ROM ab 0, ich galube aber wir haben das später in den RAM umgeladen und den ROM abgeschaltet, das müßte sich aber im Code finden lassen wenn das hier schon aktuell war.

Die Tastatur hing an einer PIO, ich weiß aber nicht genau, ob da noch ein Decoder für mehr Spalten dran war (Nachtrag: doch war). Auf alle Fälle mußten da noch Dioden rein weil sonst bei mehreren gedrückten Tasten u.U Kurzschlüsse auftraten. Meiner Meinung nach war das eine Matrix die zyklisch durchlaufen wurde, wir hatten aber auch mal eine Variante (kann auch sein das war vorher) bei der im Ruhezustand sämtliche Zeilenleitungen mit L Signal belegt waren und erst beim Drücker einer Taste ein Scanzyklus ablief. (Nachtrag: Widerstandsnetzerk an Decoder, das sieht so aus!) Ich weiß ja nicht mal mehr wie die Geometrie der K7659 aussah (als Matrix und deren Belegung) aber das war durch die Tastaturbelegungstabelle im ROM wohl frei anpaßbar. Notfalls kann ich nochmal meinen Kumpel fragen was dem noch so einfällt..Nach gucken in die Quelle:


Quellcode:
LD      A ,00FH      ;SPALTE 0
        OUT     (IOTAPIO),A ;SPALTENWERT AUSGEBEN
        IN      A,(IOTBPIO) ;ZEILE ABFRAGEN
        BIT     7,A         ;TEST: FESTSTELLTASTE ?

weißt Du schonmal, das am Pio Port A die Spalten ausgegeben werden, und das auf Zeile 0
Spalte 7 die Caps Lock Taste liegen müßte..
Ein paar Zeilen weiter Bit 6 für Umschalttaste (Shift).


Quellcode:
M3029:  INC     A           ;SPALTENWERT ERHOEHEN
        LD      L,A         ;UND IN L RETTEN
        CP      00FH        ;TEST: ALLE SPALTEN ABGEFRAGT ?
        JP      NC,MA4      ;JA

...macht klar, das wir wohl 15 Spalten hatten die über einen Decoder liefen (74154?)
Ich denke mal an dessen Ausgänge die Dioden ran (Kathode zum Decoder, Anoden zur Matrix) und die Zeilen der Matrix mit Pullups an PIO Kanal B.

Im LED Programm sieht man, das da noch mehr war, nämlich das da 2 D195 waren die die Information von PIOA[3..0] jeweils mit PIOA[5] und PIOA[6] zwischengespeichert haben, daran hingen wohl die LEDs (noch irgendwelcher Kram?). LPU heißt Leuchtdiodenpuffer, man müßte mal die Kommentare lesen welches Bit da wann gesetzt/rückgesetzt wurde..
Hmm... das Widerstandsnetzwerk für PIO Kanal B hing offensichtlich am Ausgang 3 des decoders, keine Ahnung wozu das jetzt gut war, ich glaube Klaus (der Kumpel) hatte da noch was mit Rollover gebastelt...


Hat Jemand die Schaltung der K7659 ... oder sogar eine übrig?

Über diese Widerstandsnetzwerkgeschichte muß ich nochmal nachdenken, es ist offensichtlich so, das die Tastatur keine Rechenzeit brauchte und ein L auf irgend einem Pin von PIOB einen Int auslöste, der seinerseits einen Scanzyklus abarbeitete. In Ruhe war der Kram also statisch...


Gruß,

Holm
--
float R,y=1.5,x,r,A,P,B;int u,h=80,n=80,s;main(c,v)int c;char **v;
{s=(c>1?(h=atoi(v[1])):h)*h/2;for(R=6./h;s%h||(y-=R,x=-2),s;4<(P=B*B)+
(r=A*A)|++u==n&&putchar(*(((--s%h)?(u<n?--u%6:6):7)+"World! \n"))&&
(A=B=P=u=r=0,x+=R/2))A=B*2*A+y,B=P+x-r;}

Dieser Beitrag wurde am 10.01.2013 um 18:16 Uhr von holm editiert.
Seitenanfang Seitenende
Profil || Private Nachricht || Suche Zitatantwort || Editieren || Löschen
003
01.02.2013, 12:49 Uhr
DL
Default Group and Edit


Hab mir das gerade mal angesehen, gab es irgend ein exclude Schalter, mit dem man Speicherbereiche für den Assembler ausschliessen kann? Der Bereich von C00h-1000h müsste ja ausgeklammert werden, da nur die ersten 3K in den RAM verschoben werden und bei 1000h der Stack liegt. Oder sehe ich hier irgendwas völlig falsch??
Seitenanfang Seitenende
Profil || Private Nachricht || Suche Zitatantwort || Editieren || Löschen
004
01.02.2013, 18:36 Uhr
holm

Avatar von holm

Du kannst im Absolutmodus mit ORG Anweisungen festlegen wo was hin kommt, im Relativ Modus müßte dort ein Segment reserviert werden damit es der Assembler/Linker frei läßt. . Mein Freund Klaus hat das damals wie schon beschrieben auf dem MEOS Assembler gemacht, bei dem das sicher anders als 2heute" üblich lief (ASM oder M80).
Die Sprungverteiler hatten feste Adressen, in sofern waren das wahrscheinlich mehrere absolut assemblierte Module die einfach nebeneinander gebrannt wurden. Das Basic ist IMHO auch so ein Teil, 4KByte ab 4000hex und es läuft... Möglicherweise wurde da aber die Bildschirmsteuerung angepaßt.
Müßte nachfragen..

Gruß,

Holm
--
float R,y=1.5,x,r,A,P,B;int u,h=80,n=80,s;main(c,v)int c;char **v;
{s=(c>1?(h=atoi(v[1])):h)*h/2;for(R=6./h;s%h||(y-=R,x=-2),s;4<(P=B*B)+
(r=A*A)|++u==n&&putchar(*(((--s%h)?(u<n?--u%6:6):7)+"World! \n"))&&
(A=B=P=u=r=0,x+=R/2))A=B*2*A+y,B=P+x-r;}
Seitenanfang Seitenende
Profil || Private Nachricht || Suche Zitatantwort || Editieren || Löschen
005
02.02.2013, 13:47 Uhr
DL
Default Group and Edit


Weil da ja schon alles in der main "included" ist, machte das den Eindruck so im Ganzen durchgejagt worden zu sein, deshalb die Frage nach einer externen Möglichkeit. Hatte wohl angenommen das ist irgend ein Fertigprodukt, was nur aufgebacken werden muss.
Seitenanfang Seitenende
Profil || Private Nachricht || Suche Zitatantwort || Editieren || Löschen
006
02.02.2013, 15:13 Uhr
holm

Avatar von holm

Das hat ambrosius auf einer seiner langen Schiffsreisen von MEOS Assembler nach verständlich übersetzt. Ich habe Dir mal den Inhalt der originalen Lochbänder als tape1.tar und tape2.tar mit auf http://www.tiffe.de/Robotron/MCS80 gelegt. In den tar files befinden sich die MEOS Assembler Module.

Gruß,

Holm
--
float R,y=1.5,x,r,A,P,B;int u,h=80,n=80,s;main(c,v)int c;char **v;
{s=(c>1?(h=atoi(v[1])):h)*h/2;for(R=6./h;s%h||(y-=R,x=-2),s;4<(P=B*B)+
(r=A*A)|++u==n&&putchar(*(((--s%h)?(u<n?--u%6:6):7)+"World! \n"))&&
(A=B=P=u=r=0,x+=R/2))A=B*2*A+y,B=P+x-r;}

Dieser Beitrag wurde am 02.02.2013 um 15:13 Uhr von holm editiert.
Seitenanfang Seitenende
Profil || Private Nachricht || Suche Zitatantwort || Editieren || Löschen
Seiten: -1-     [ Technische Diskussionen ]  



Robotrontechnik-Forum

powered by ThWboard 3 Beta 2.84-php5
© by Paul Baecher & Felix Gonschorek