Forum: Mikrocontroller und Digitale Elektronik CP/M auf ATmega88


von Andreas H. (andreas_h35)


Angehängte Dateien:

Lesenswert?

Hallo Peter,

kannst Du mir bei Gelegenheit das SURVEY.COM (im Archiv) auf dem AVRcpm 
ausführen ?! und den Output schicken. Die wichtigen Adressen stehen zwar 
im BIOS.ASM, aber sicher ist sicher.

Danke, Andreas

von Peter Sieg (Gast)


Angehängte Dateien:

Lesenswert?

Hier die Ausgabe von survey:

Peter

von Peter Sieg (Gast)


Lesenswert?

Ich denke, wenn die fat16 Version auch für 8-bit ok ist, sollten wir 
diese
als Basis für die weitere Entwicklung nehmen.

Evtl. mal ein Diff gegen V2/trunc fahren..

Meines Wissens hatte Leo C. das Diskettenformat vergrößert und evtl. ist 
der Z80 Emulationscode in dieser Versionen schon weiter 
fortgeschritten??

@Leo C: Liest du noch mit..?

Peter

von Joe G. (feinmechaniker) Benutzerseite


Lesenswert?

Ich bekomme derzeit die 8-Bit Variante nicht hin.
- RAM-Test OK
- MMC lesen von Fat 16 OK
- Reboot ???
muß weiter suchen...
Joe

von Joe G. (feinmechaniker) Benutzerseite


Lesenswert?

Nachtrag.

Die 4-Bit Variante läuft auch bei mir mit Fat16. Allerdings reagieren 
einige MMC's giftig. Die MC-Routine ist nicht wirkllich für alle Karten 
sicher.
Joe

von Leo C. (rapid)


Lesenswert?

Ja Peter, ich lese noch mit.
Inzwischen habe ich auch wieder etwas Zeit  für das Projekt, aber wohl 
nicht mehr so viel wie letzten Sommer.

Am Samstag habe ich endlich mal meinen letzten Softwarestand in das 
SVN-Repository eingecheckt. Die Software funktioniert bei mir, ist aber 
nicht besonders gut getestet. Wegen der Features (FAT16, Disk Formate) 
bitte nach meinen letzten Beiträgen hier im Forum suchen. Danach hier 
fragen.

Die aktuelle Software ist für gewöhnlich hier zu finden:
http://cloudbase.homelinux.net/viewvc/avr-cpm/avrcpm/trunk/

Oder besser, mit einem SVN-Client:
http://cloudbase.homelinux.net/svn/avr-cpm

Als Client für Windows ist tortoisesvn zu empfehlen:
http://tortoisesvn.tigris.org/

Übrigens Peter, bei SVN steht trunk für Stamm, nicht etwa für Kofferraum 
oder Rüssel. :)
In trunk ist üblicherweise die Hauptentwicklungslinie.

Wegen Z80 Unterstützung könnte ja mal jemand bei "Horst S. (h3aau)" 
nachfragen. (Beitrag "Re: CP/M auf ATmega88")

Joe, wenn Du mit den SD-Karten-Problemen nicht weiterkommst, kann ich 
versuchen, zu helfen.

von Peter Sieg (Gast)


Lesenswert?

@Joe: hast du mal probiert mit dem Debugschalter:
FAT16_DEBUG = 1
mehr Informationen zu bekommen?

Zur SD Card Initialisierung gibts ja einige Projekte zum 
vergleichen/kopieren: Z.B www.sd2iec.de und sicher auch hier im Forum..
Beitrag "MMC/SD-Karte mit FAT16 an AVR"
Beitrag "MMC SD library FAT16 FAT32 read write"

---

@Leo C: Prima! D.h. der trunk enthält jetzt die neueste Version?
Das Problem, was ich whrscheinlich damit habe ist, das es sich weit von 
Win$ entfernt hat..? D.h mein ipl+bios etc. und Diskformate muß ich 
anpassen/ändern, oder kann ich die orig. Formate+Bios beibehalten 
(vorerst)?
Ist den da neuerer Z80 code von Horst S. (h3aau) schon drin, oder noch 
nicht?

Peter

von Joe G. (feinmechaniker) Benutzerseite


Lesenswert?

Leo C. schrieb:
> Joe, wenn Du mit den SD-Karten-Problemen nicht weiterkommst, kann ich
> versuchen, zu helfen.

Super Angebot Leo.
Das MMC Problem bei der 4-Bit Variante kann über dden SPI Takt behoben 
werden, der der 8-Bit Variante bin ich derzeit ratlos. Der Ramtest läuft 
durch, MMC wird erkannt und gelesen, der Sprung auf Adr. 2000H erfolgt 
UND dort steht nur "Mist", meißt 00 00 00. Na und dann wars das. Ich 
habe noch nicht rausbekommen ob der Ram seinen Inhalt vergißt, oder von 
der MMC falsch gelesen wird. Ich denke aber zweiteres, da einige Karten 
mit der Meldung "kein System" antworten.

von Joe G. (feinmechaniker) Benutzerseite


Lesenswert?

Es sieht in etwa immer so aus:

CPM on an AVR, v2.0
Initing mmc...

mmcInit
mmcCMD: 00 00000000 .. 95 CMDRes: 01
mmcCMD: 08 000001AA .. 87 CMDRes: 01
mmcCMD: 37 00000000 .. 01 CMDRes: 01 mmcCMD: 29 40000000 .. 01 CMDRes: 
01
mmcCMD: 37 00000000 .. 01 CMDRes: 01 mmcCMD: 29 40000000 .. 01 CMDRes: 
01
mmcCMD: 37 00000000 .. 01 CMDRes: 01 mmcCMD: 29 40000000 .. 01 CMDRes: 
00
mmcCMD: 3A 00000000 .. 01 CMDRes: 00
 CT: 04 InitRes: 00
mmcCMD: 11 00000000 .. 01 CMDRes: 00
mmcCMD: 11 00FF4400 .. 01 CMDRes: 00

...

mmcCMD: 11 01011200 .. 01 CMDRes: 00
mmcCMD: 11 01011400 .. 01 CMDRes: 00
A:CP/M partition at: 8097, size: 4144KB.
B:CP/M partition at: 16385, size: 7808KB.
Partinit done.
mmcCMD: 11 003F4200 .. 01 CMDRes: 00
Ok, CPU is live!

PC=2000
        A =20 BC =0000 DE =0000 HL =

IPL müßte jedoch mit 31 00 10 beginnen

Joe

von Peter Sieg (Gast)


Lesenswert?

Ich habe mir trunk gerade mal gezogen. Konnte ich für m168, 30MHz, 4-bit 
Dram und fat16 ohne Fehler übersetzen.

Frage: Kann ich das mit den 'alten' Bios+ipl Diskimages (243kb) nutzen?

Um die Assemblierung der bios.mac +ipl.mac möchte ich mich dann erst 
später kümmern...

Peter

von Peter Sieg (Gast)


Lesenswert?

Bios assemblieren:
zxcc habe ich für Dos/Win$ nicht gefunden.
m80l80.zip habe ich probiert:
*BIOS,TTY:=BIOS wirft 38 fatale Fehler aus.

Das ist so für mich natürlich keine akzepable 'Lösung'..
Ich brauche etwas, womit ich die unter Win$ assemblieren kann..
@Leo C: Kannst du die *.mac nicht wieder per awk? script in asm zurück 
wandeln?

Peter

von Leo C. (rapid)


Angehängte Dateien:

Lesenswert?

Im Anhang ist jetzt mal ein aktuelles System.

Zum Rest schreibe ich später nochmal mehr. Jetzt mal auf die Schnelle...

Peter Sieg schrieb:
> Bios assemblieren:
> zxcc habe ich für Dos/Win$ nicht gefunden.

Beitrag "Re: CP/M auf ATmega88"
Beitrag "Re: CP/M auf ATmega88"

Darüber, und auch sonst, sollte es kein Problem sein,
http://www.seasip.demon.co.uk/Unix/Zxcc/
zu finden.

Das Archiv der 0.4 Version enthält auch Windows Binaries.
http://www.seasip.demon.co.uk/Unix/Zxcc/zxcc-0.4.0.tar.gz

> m80l80.zip habe ich probiert:
> *BIOS,TTY:=BIOS wirft 38 fatale Fehler aus.

Ich meine mich zu erinnern, daß ich das mal kurz ausprobiert hatte, in 
dem ich alle benötigten Dateien in ein Verzeichnis kopiert hatte. Um das 
alles richtig unter Windows zu installieren, fehlt mir die Zeit, 
vernünftiges Gerät und die Motivation. Hier wird es doch den ein oder 
anderen Windowsprogrammierer geben, der das mal richtig installieren und 
das Makefile ggf. anpassen kann. Mein Provisorium hat sicher 
funktioniert, sonst hätte ich diese Möglichkeit hier garnicht erwähnt.

> Das ist so für mich natürlich keine akzepable 'Lösung'..

Das ist natürlich schlimm für Dich.

> Ich brauche etwas, womit ich die unter Win$ assemblieren kann..
> @Leo C: Kannst du die *.mac nicht wieder per awk? script in asm zurück
> wandeln?

nein.

von Peter Sieg (Gast)


Lesenswert?

Ja nun habe ich auch gelesen, das in der 4.0 Version Dos/Win Programme 
enthalten sind. In der 5er aber nicht. Habe ich getestet (alles in 1 
Verzeichnis), bekommen auch hier mit: zxcc m80 -=bios.mac 38 fatale 
Fehler??
---
Hier:
http://hc-ddr.hucki.net/wiki/doku.php/cpm:windows
habe ich auch den cpm player getestet.
Dort bekomme ich mit cpm m80.com =bios.mac 41 fatale Fehler?
bios.rel wird aber erzeugt.
G:\temp>cpm  l80.com bios.rel,bios.bin/N/E

Link-80  3.44  09-Dec-81  Copyright (c) 1981 Microsoft

Data    0100    0328    <  552>

53266 Bytes Free
[0000   0328        3]

G:\temp>
---
@Leo C. Ja ich weiß.. mal sehen.. aber wenn alle Stricke reißen bleibe 
ich eben bei dem Code den ich aktuell habe.. das war auch ein Grund, 
damals ersteinmal nicht mehr weiter 'mitzumachen' - ist halt (für mich!) 
blöd, wenn das nach Linux Only abwandert und ich/Windows außen vor 
bleiben.

Nun, evtl. findet ja jemand noch woran es liegt bzw. eine 
funktionierende Lösung..

Kann ich denn den AVR Code aus trunk mit dem 'alten' Bios verwendet,
oder ist zwingend auch das aktuelle Bios tz verwenden?

Peter

von Joe G. (feinmechaniker) Benutzerseite


Lesenswert?

Peter Sieg schrieb:
> Kann ich denn den AVR Code aus trunk mit dem 'alten' Bios verwendet,
> oder ist zwingend auch das aktuelle Bios tz verwenden?

Nein geht nicht.
Joe

von Peter Sieg (Gast)


Lesenswert?

Jup. Geht nicht.. habe ich gerade probiert..
Leider noch eine schlechte Nachricht. FAT16 scheint noch Probleme 
zumindest beim schreiben zu haben.. BDSC (C-Compiler) meldet bei der 
trunk Version:
BDos Err on C..
Und die fat16-test meldet bei clink mmind - No main defined - aborted.
Wenn ich mit Partitionen arbeite geht fat16-test einwandfrei.. trunk 
muss
ich noch testen..

:-(

Peter

von Peter Sieg (Gast)


Lesenswert?

arg. Muss mich mal anmelden, damit ich editieren kann..
---
fat16-test und trunk lassen sich nicht mehr für atmega88 übersetzen
- auch ohne fat16support!
Das kann der atmega88 nicht ab:
  call  uartputc

Peter

von Andreas H. (andreas_h35)


Angehängte Dateien:

Lesenswert?

Hallo Peter und Leo,

ich habe hier mal das ALIADOS im Cygwin übersetzt. Es ist eine 
einigermassen lauffähige CPM-Emulation - eigentlich für Linux - die aber 
auch unter Windows spielt (hier bei mir unter Win7)

Nach dem Start landet man auf Drive A: und das aktuelle Verzeichnis ist 
dann auch im CPM auf A: zu sehen. Wenn dort M80 und L80 liegen, kann man 
sogar mit:

aliados M80.COM =blafasel.asm ..

aus der DOS-Shell assemblieren.

Hier habe ich das gefunden: http://www.arrakis.es/~ninsesabe/aliados/

Im Ziparchiv liegt das aliados.exe und die notwendigen Cygwin-DLLs. 
Bitte die DDLs im gleichen Verzeichnis wie das .exe legen.

Wer es braucht, kann es ja mal checken, evtl. hilft das den 
Win$-Freunden bei der BIOS Assemblierung.
Gruss,
Andreas

von Peter Sieg (Gast)


Lesenswert?

@andreas: Danke. Arbeitet aber genauso wie oben cpmplayer etc. m80 
meldet wieder 38 fatal errors..

Ich denke die haben ein Problem mit der Quelldatei..?

Peter

von Peter Sieg (Gast)


Lesenswert?

Ich habe gerade mal bios.mac in die AltairSIMH cpm2.2 disk geladen und 
dort m80 =bios.mac aufgrufen.. auch 38 fatal errors..??

Kann es sein, das ich nicht das richtige m80.com + l80.com habe..??

Bitte mal die richtigen Versionen hier anhängen.. dann solltes das ggf. 
mit
einige hier weiter oben aufgeführten Tools gehen.. denn die Meldung 38 
fatal errors hatte ich schon mehrere Male mit unterschiedlichen Tools..

Peter

von Andreas H. (andreas_h35)


Angehängte Dateien:

Lesenswert?

@Peter: ich kommte mit M80 und L80 das bios.mac aus dem SVN/trunk prima 
assemblieren und linken (habe das aliados unter macosx verwendet):

lunatix:cpm hein$ aliados m80.com =bios.mac

No Fatal error(s)

lunatix:cpm hein$ aliados l80.com bios,bios/n/e

Link-80  3.44  09-Dec-81  Copyright (c) 1981 Microsoft

Data    0100    0518    < 1048>

52514 Bytes Free
[0000   0518        5]

hier meine eingesetzten Tools.

Andreas

von Leo C. (rapid)


Lesenswert?

Peter Sieg schrieb:
> Ich habe gerade mal bios.mac in die AltairSIMH cpm2.2 disk geladen und
> dort m80 =bios.mac aufgrufen.. auch 38 fatal errors..??

Kann es sein, daß Dein M80 die Includedateien 'avrcpm.lib' und 
'cfgacpm.lib' nicht findet?

von Peter Sieg (Gast)


Lesenswert?

Ja, so ist/war es ;-)
aliados geht!! Habe inzwischen das cpm.bin komplett neu erstellen 
können.
Nun auch neue diskimages erzeugt und unter Knoppix auf cp/m Partitionen 
mit
dd geschrieben..

=> Bin jetzt auf neuestem trunk level ;-)

Trotzdem gibt es leider unter fat16 ein Schreibproblem!

@Andreas: kannst du bitte mal versuchen auch die cpmtools unter deiner 
cygwin Umgebung zu compilieren? Dann haben wir die cygwin dll's 
gemeinsam um
brauchen nicht ggf. 2 Versionen. Dazu haben die cpmtools unter Windows 
noch
2 Unschönheiten:
1. diskdefs wird FEST unter x.\cpmtools gesucht.
2. diskdefs muss nach Unix Konvention nur mit LF als Zeilenende versehen 
sein
(kein CR+LF wie unter Dos/Win üblich)

http://www.moria.de/~michael/cpmtools/

bei zxcc und cpm (cpmplayer) scheinen die lib's/includes von m80/l80 
nicht
gefunden zu werden.. schaue ich mir noch mal an.. ob man das nicht noch 
hinbekommt..

Fazit: Man kann alles unter Windows assemblieren!

Peter

von Peter Sieg (Gast)


Angehängte Dateien:

Lesenswert?

Hmm.. m80l80pc geht nun auch.. vielleicht hatte ich wirklich nur die 
includes nicht im Verzeichnis..

Ich hänge das m80l80pc.zip inkl. aller benötigten Dateien hier an.

zxcc+cpmplayer schaue ich mir jetzt auch noch mal an..

Peter

von Andreas H. (andreas_h35)


Lesenswert?

@Peter: Du brauchst cpmtools unter cygwin ? Habe ich eben compiliert, 
aber wie möchstest Du es mit dem diskdefs File ?
Andreas

von Andreas H. (andreas_h35)


Angehängte Dateien:

Lesenswert?

@Peter:

hier das cpmtools als cygwin-binary, ohne MAN-Pages und Sourcecode.
Das diskdefs File wird im aktuellen Verzeichnis gesucht.
Andreas

von Peter Sieg (Gast)


Lesenswert?

Super! Danke!
Damit läuft cpmtools+aliados mit denselben dll's.

Peter

von Peter Sieg (Gast)


Angehängte Dateien:

Lesenswert?

Ich hänge jetzt hier mal an: avrcpm_fat16.zip = neueste trunk Quellen 
inkl. AVR Studio 4 Projekt und avrcpm_aliados.zip = alles zum bilden von 
Bios+Ipl,CPM.BIN und Disk Images mit cpmtools.

Das sind außer der Hardware alles was es unter Windows braucht..
Auf 4-bit läuft es prima mit Partitionen.
fat16 lesend ok; schreibend Problem.
8-bit habe ich (noch) nicht. Bei Leo C. sollte es aber laufen (Part.?) 
und bei Joe gibts Probleme (fat16?)..
Z80 Stand?

Peter

von Leo C. (rapid)


Lesenswert?

Joe G. schrieb:
> Es sieht in etwa immer so aus:
>
> CPM on an AVR, v2.0
> Initing mmc...

...

> mmcCMD: 11 003F4200 .. 01 CMDRes: 00
> Ok, CPU is live!

Das sieht geigentlich alles ganz gut und plausibel aus.

> PC=2000
>         A =20 BC =0000 DE =0000 HL =
>
> IPL müßte jedoch mit 31 00 10 beginnen

Das der mmc-Treiber ohne Fehlermeldung falsche Daten liefert, will ich 
noch nicht so ganz glauben. Deshalb würde ich den Fehler erst mal an 
anderer Stelle vermuten.

Hast Du inzwischen mal mit aktueller Software (trunk) getestet?

von Joe G. (feinmechaniker) Benutzerseite


Lesenswert?

@Peter, Leo C.
die 4-Bitv Variante aus trunc funktioniert (eingeschränkt). Die 8-Bit 
Variante hat immer noch die gleichen Probleme. Ich vermute tatsächlich 
MMC Probleme weil: (nun einige Logauszüge)

4 Bit Version
Test 1, MMC_1 128MB, MMCSPI2X =1 (CLK/2)

CPM on an AVR, v2.1
Testing RAM: fill...wait...reread...
Initing mmc...

A:FAT16 File-Image at: 8598, size: 208KB.
B:FAT16 File-Image at: 8510, size: 175KB.
C:FAT16 File-Image at: 8450, size: 118KB.
Partinit done.
Ok, CPU is live!

ipl
S       A =A8 BC =280C DE =0080 HL =E180 SP =2000 PC =202F       28 A8 
02 Invalid opcode!

bootet also komplet durch, führt IPL aus und dann gibt es Fehler

Test 2, MMC_1 128MB, MMCSPI2X =0 (CLK/4)

CPM on an AVR, v2.1
Testing RAM: fill...wait...reread...
Initing mmc...

A:FAT16 File-Image at: 8598, size: 208KB.
B:FAT16 File-Image at: 8510, size: 175KB.
C:FAT16 File-Image at: 8450, size: 118KB.
Partinit done.
Ok, CPU is live!

ipl
62k cp/m vers 2.2

A>

FEHLERFREI

Test 3, MMC_2 1GB, MMCSPI2X =0 (CLK/4), identisches Immage

CPM on an AVR, v2.1
Testing RAM: fill...wait...reread...
Initing mmc...

A:CP/M partition at: 8097, size: 4144KB.
B:CP/M partition at: 16385, size: 7808KB.
Partinit done.
Ok, CPU is live!
ipl
DISK I/O: Invalid Function code: 01



8 Bit Version

Test 4, MMC_1 128MB, MMCSPI2X =0 (CLK/4), gleiche Image, ohne MMC Debug

CPM on an AVR, v2.1
Testing RAM: fill...wait...reread...
Initing mmc...

A:FAT16 File-Image at: 8598, size:

NEUSTART

CPM on an AVR, v2.1
Testing RAM: fill...wait...reread...
Initing mmc...

Test 5, MMC_1 128MB, MMCSPI2X =0 (CLK/4), gleiche Image, mit MMC Debug

CPM on an AVR, v2.0
Testing RAM: fill...wait...reread...
Initing mmc...

mmcInit
mmcCMD: 00 00000000 .. 95 CMDRes: 01
mmcCMD: 08 000001AA .. 87 CMDRes: 05
...
A:FAT16 File-Image at: 002, size: 081KB.
Partinit done.
mmcCMD: 11 00017C00 .. 01 CMDRes: 00

NEUSTART

CPM on an AVR, v2.0
Testing RAM: fill...wait...reread...
Initing mmc...

d.h. wenn das MMC Debug eingeschaltet ist, wird die Karte etwas besser 
gelesen jedoch auch nicht fehlerfrei. Übrigens sind die 4-Bit und die 
8-Bit Varianten auf unterschiedlicher Hardware aufgebaut.

Joe

von Leo C. (rapid)


Lesenswert?

@Peter,

bitte vergrößere Deine FAT16-Imagedateien mal auf (mindestens) 256 
KByte.
Unser Treiber kann das leider nicht selbst.

Vergrößern geht z.B. durch anhängen von Bytes mit dd, oder mit makeimage 
von Frank Zoll, das im SVN in trunk/tools/makeimage zu finden ist. Wenn 
man bei makeimage die Größe wegläßt, wird die Datei "zufällig" auf 256 
KB vergrößert.

Neue, frisch formatierte Images kann man auch folgendermaßen erzeugen, 
damit sie von Anfang an die richtige Größe haben:
1
$ makeimage /dev/null CPMDSK_x.IMG

mkfs.cpm kann man sich dann sparen.
Unter Windows muß man /dev/null evtl. durch etwas anderes ersetzen.

von Peter Sieg (Gast)


Lesenswert?

Hmm. Was mir aufgefallen ist. Test 4 = V2.1, ab Test5 V2.0?
Alle Test sind mit fat16 Fileimages gemacht.
Kannst du bitte auch mal 8-bit testen, ohne fat16 Images auf die SD 
Karte zu tun, sondern anstatt dessen mal Partitionen zu verwenden?

Ich verwende ürigens auch 2 128Mb SD Karten: Noname + Kingston.

@Leo C: bei dir läuft aber die trunk in 8-bit?
Es sind doch mind. 10 Platinen mit der 8-bit 4MB + VGA Teil in Betrieb..
welche Version wird denn dort eingesetzt..?

Peter

von Peter Sieg (Gast)


Lesenswert?

@Leo C: Du meinst/vermutest, das beim schreiben über die aktuelle Größe 
hinausgegangen wird und dann gibts Probleme.. weshalb diese Mindestgröße 
sein muß?

makeimage - liegt nur als c Source vor. Ich habe keinen Compiler 
installiert z.Z :-(

Und wenn sich jemand findet (@Andreas?) der das unter Windows / Cygwin 
kompiliert, dann bitte auch evtl. Unix Spezifika (/dev/null) entsprechen 
für uns Win$ User händelbar machen..

Peter

von Leo C. (rapid)


Lesenswert?

Peter Sieg schrieb:

> @Leo C: bei dir läuft aber die trunk in 8-bit?

Logo. 4Bit ist (glaube ich) noch auf meinem Steckbrett, und habe ich 
schon lange nicht mehr getestet.

> Es sind doch mind. 10 Platinen mit der 8-bit 4MB + VGA Teil in Betrieb..
> welche Version wird denn dort eingesetzt..?

Keine Ahnung. Ich habe hier meinen eigenen Lochrasteraufbau.
Hier gibts ein Bild:
Beitrag "Re: CP/M auf ATmega88"

von Leo C. (rapid)


Lesenswert?

Peter Sieg schrieb:
> @Leo C: Du meinst/vermutest, das beim schreiben über die aktuelle Größe
> hinausgegangen wird und dann gibts Probleme.. weshalb diese Mindestgröße
> sein muß?

Nein, ich weiß, daß der Treiber auf das Dateiende testet, und nicht 
darüber hinaus schreibt. Stattdessen meldet er einen Fehler zurück. Der 
Treiber könnte an der Stelle auch die Datei vergrößern (sofern Platz auf 
dem Datenträger), aber der Aufwand dafür ist nach Franks und meiner 
Meinung nach unverhältnismäßig groß.

> makeimage - liegt nur als c Source vor. Ich habe keinen Compiler
> installiert z.Z :-(

Das Programm ist in anspruchlosestem ANSI-C geschrieben, und kann mit 
jedem Compiler auf wahrscheinlich jeder Plattform übersetzt werden.

> Und wenn sich jemand findet (@Andreas?) der das unter Windows / Cygwin
> kompiliert, dann bitte auch evtl. Unix Spezifika (/dev/null) entsprechen
> für uns Win$ User händelbar machen..

Andreas wird das sicher machen können. Cygwin braucht man dafür nicht, 
und das Programm hat keine Unix Spezifika.

von Andreas H. (andreas_h35)


Lesenswert?

wo kommt das makeimage her ? (URL!! dann übersetzte ich das euch wieder 
für cygwin
Andreas

von Peter Sieg (Gast)


Angehängte Dateien:

Lesenswert?

@Leo C. das Schreibproblem ist gelöst! Danke!

Ich habe die _C.IMG Datei mit dd (in avrcpm_aliados.zip) so auf 256k
gebracht:
dd if=CPMDSK_C.IMG of=CPMDSK_D.IMG ibs=256k conv=sync

Dann auf SD Karte..
d:
D>cc mmind.c
BD Software C Compiler v1.60  (part I)
  35K elbowroom
BD Software C Compiler v1.60 (part II)
  32K to spare
D>clink mmind
BD Software C Linker   v1.60

Last code address: 1B4D
Externals start at 1B4E, occupy 0000 bytes, last byte at 1B4E
Top of memory: E405
Stack space: C8B8
Writing output...
  42K link space remaining
D>mmind
Random seed generation.. wait.. hit a key.
Guess my 4-digit number...(****); 0000 to abort.

Guess 1:0000

You gave up..
Press return to exit.
D>

Funktioniert also!
Ich habe das mal in meinem 'make_disk.bat' eingebaut.. bitte entzippen 
und
die alte Version damit ersetzen..

Peter

von Peter Sieg (Gast)


Lesenswert?

Leo C. schrieb:
> Nein, ich weiß, daß der Treiber auf das Dateiende testet, und nicht
> darüber hinaus schreibt. Stattdessen meldet er einen Fehler zurück. Der
> Treiber könnte an der Stelle auch die Datei vergrößern (sofern Platz auf
> dem Datenträger), aber der Aufwand dafür ist nach Franks und meiner
> Meinung nach unverhältnismäßig groß.

ok. Denke ich auch. Wenn man es weiß, ist es leichter die diskimage 
mind.
so groß zu machen, wie diskdefs es definiert. Aktuell wären das ca. 243k
gewesen.. richtig?

(Bei Gelegenheit muß ich dann mal schauen, was du da schon an 
Unterstützung von größeren Diskimagesgezauberst hast.. und wie ich das 
nutzen kann..)

Aber ersteinmal die 8-bit Version haben und am laufen haben..
Dann Z80..

Peter

von Leo C. (rapid)


Lesenswert?

Hallo Andreas,

Andreas H. schrieb:
> wo kommt das makeimage her ? (URL!! dann übersetzte ich das euch wieder
> für cygwin

Die Software liegt auf meinem kleinen SVN-Server (Kopie von oben):

Die aktuelle Software ist für gewöhnlich hier zu finden:
http://cloudbase.homelinux.net/viewvc/avr-cpm/avrcpm/trunk/

Oder besser, mit einem SVN-Client:
http://cloudbase.homelinux.net/svn/avr-cpm

Als Client für Windows ist tortoisesvn zu empfehlen:
http://tortoisesvn.tigris.org/

Wer Verbesserungen und/oder Erweiterungen beisteuern will, kann von mir 
gerne einen Schreibzugriff bekommen.

von Andreas H. (andreas_h35)


Angehängte Dateien:

Lesenswert?

hier das makeimage.exe, lauffähig mit den Cygwin.DLLs die Ihr schon 
habt. /dev/null geht wie unter Linux auch, da die Argumente ja in der 
Cygwin-Runtime ausgewertet werden.
Andreas

von Andreas H. (andreas_h35)


Lesenswert?

Hat jemand schon einen fertigen Schaltplan für die 8bit AVR-Maschine ? 
Ich würde mir das dann schonmal auf dem Breadboard zusammenstecken 
wollen und könnte noch vor dem Release der Leiterplatte mit den Tests zu 
den CCP+BDOS.ASM Quellen beginnen.
Andreas

von Leo C. (rapid)


Lesenswert?

Peter Sieg schrieb:
> so groß zu machen, wie diskdefs es definiert. Aktuell wären das ca. 243k
> gewesen.. richtig?

Fast. Die System-Tracks müssen ja auch noch reinpassen.

>
> (Bei Gelegenheit muß ich dann mal schauen, was du da schon an
> Unterstützung von größeren Diskimagesgezauberst hast.. und wie ich das
> nutzen kann..)

Folgende sollten gehen:
simhd, simh altair 8800 hard disk format
MyZ80
YAZE

Siehe auch hier:
Beitrag "Re: CP/M auf ATmega88"
Beitrag "Re: CP/M auf ATmega88"


> Dann Z80..

Dazu habe ich vor 2 Tagen etwas geschrieben.

von Peter Sieg (Gast)


Angehängte Dateien:

Lesenswert?

@Andreas: ich wollte mir das auch schon mal auf LR aufbauen. bin aber 
zeitlich nicht dazu gekommen.. Basis wäre die 4-bit Skizze.
Aber Achtung! Völlig geänderte Pinzuordnungen bei 8-bit!
D0..D3 des 2ten Drams ist dann D4..D7.
Uart ändert sich ebenfalls (HW-Uart -> SW-Uart).
1
Hi. Ich möchte eine 8-bit Version auf LR aufbauen.
2
Wie genau muß ich was verdrahten? Ich gehe im Moment davon
3
aus:
4
5
1. 2ten Dram Chip 1:1 mit dem ersten verbinden (Huckepack) - bis auf D0-D3!
6
2. Dann nach Port Declarations aus config.inc gehen:
7
;-----------------------------------------------------------------------
8
; Port declarations
9
10
#if DRAM_8BIT  /* Implies software uart */
11
12
;Port D
13
.equ RAM_D0  = 0
14
.equ RAM_D1  = 1
15
.equ RAM_D2  = 2
16
.equ RAM_D3  = 3
17
.equ RAM_D4  = 4
18
.equ RAM_D5  = 5
19
.equ RAM_D6  = 6
20
.equ RAM_D7  = 7
21
.equ RAM_A0  = 0
22
.equ RAM_A1  = 1
23
.equ RAM_A2  = 2
24
.equ RAM_A3  = 3
25
.equ RAM_A4  = 4
26
.equ RAM_A5  = 5
27
.equ RAM_A6  = 6
28
.equ RAM_A7  = 7
29
30
;Port B
31
.equ MMC_MOSI  = 3
32
.equ MMC_MISO  = 4
33
.equ MMC_SCK  = 5
34
.equ RAM_A8  = 3
35
.equ RAM_A9  = 4
36
.equ RAM_A10  = 5
37
38
.equ RXD  = 0
39
.equ TXD  = 1
40
.equ MMC_CS  = 2
41
42
.equ P_MMC_CS  = PORTB
43
.equ P_A8  = PORTB
44
.equ P_RXD  = PORTB
45
46
;Port C
47
.equ RAM_RAS  = 0
48
.equ RAM_CAS  = 1
49
.equ RAM_OE  = 2
50
.equ RAM_W  = 3
51
52
.equ P_RAS  = PORTC
53
.equ P_CAS  = PORTC
54
.equ P_OE  = PORTC
55
.equ P_W  = PORTC
56
57
#else  /* 4 bit RAM, hardware uart */

Irgendwo hatte ich die anderen Pin's zum Dram auch mal in einer 
Zeichnung drin gehabt.. finde die aber so schnell nicht mehr..

Peter

von Joe G. (feinmechaniker) Benutzerseite


Angehängte Dateien:

Lesenswert?

Andreas H. schrieb:
> Hat jemand schon einen fertigen Schaltplan für die 8bit AVR-Maschine

Hier die 8-Bit Variante mit 4 MB x 4 RAM's.

@Peter
Ja, deine Portzuweisungen sind korrekt. Bei den Chips 4256 existieren 
dann A9 und A10 halt nicht, ansonsten alles so wie auf der Schaltung. 
Wenn alles mit 3.3V versorgt wird kann IC2 entfallen, dann aber 
unbedingt die MMC ziehen wenn über ISP und 5V programmiert wird.

Zwei Baustellen, Softwaretest und Hardwareüberarbeitung waren zu viel. 
Deshalb noch etws Geduld mit der neuen LP.

Joe

von Peter Sieg (Gast)


Lesenswert?

@Joe: Ich denke wir haben für uns schon ganz schön was geschafft.. Ich 
bin jetzt endlich mal wieder auf dem aktuelle SW-Stand.. und fat16 sieht 
gut aus.. bleibt noch das mmc/8-bit Problem.. wenn wir mehr Hardware 
draußen haben.. gibts auch wieder etwas mehr Mitstreiter..

Also immer mit der Ruhe.. Gut Ding will Weile haben..

Peter

von Hans- w. S. (hschuetz)


Lesenswert?

Hallo Leute,
meine Hardware läuft noch mit einer sehr alten 8bit Version. Interessant 
wäre die Z80 Implemention und die Ausnutzung der MMC/SD Karte, am besten 
alles mit dem Windows PC ladbar. Leider bin ich nicht der 
Softwarespezialist...CPM 2.2 behersche ich gerade ein bischen...mit 
echtem Z80. Aber ich lese hier weiter mit... mal sehen was noch wird.
Gruß
Hans-Werner

von Leo (Gast)


Lesenswert?

Hans- w. Schütz schrieb:
> meine Hardware läuft noch mit einer sehr alten 8bit Version. Interessant
> wäre die Z80 Implemention und die Ausnutzung der MMC/SD Karte, am besten
> alles mit dem Windows PC ladbar.

Wenn Du mit "Ausnutzung der MMC/SD Karte" größere CP/M-Diskimages 
meinst, kannst Du auf die Schnelle mal folgendes ausprobieren:

- Software (avr und BIOS) auf neuesten Stand bringen
  http://cloudbase.homelinux.net/viewvc/avr-cpm/avrcpm/trunk/

- Bootbare SD-Karte herstellen. Entweder mit System in CP/M-Partition
  oder als CPMDSK_A.IMG auf einer FAT16-Partition

- Das MyZ80-Image aus dem folgenden Beitrag runterladen und als
  CPMDSK_B.IMG auf die FAT16-Partition kopieren:
  Beitrag "Re: CP/M auf ATmega88"

Das Ergebnis sollte ein 8 MB großes Laufwerk B: uter CP/M sein.
Wenn Deine cpmtools mit libdsk compiliert sind, kann das Image auch auf 
dem PC mit Dateien gefüllt werden.
> cpmcp -f myz80 ...

von Joe G. (feinmechaniker) Benutzerseite


Angehängte Dateien:

Lesenswert?

Hallo,

hier der Entwurf der 8-Bit Minimalvariante.

Optionen:
- FTDI durch Peters Platine ersetzen
- ISP Buchse einsparen (Programmierung über Bootloader)

Bitte Vorschläge, Änderungswünsche, Kritik....

Joe

von Peter Sieg (Gast)


Lesenswert?

@Joe: GND / Pin 8 am AVR ist auch mit GND verbunden..?

Peter

von Nils E. (yetanotheruser)


Lesenswert?

Ich würde den FTDI nicht ersetzen, sondern zusätzlich eine Stiftleiste 
vorsehen, damit man wahlweise den FTDI oder Peters Adapterplatine oder 
meinen MAX232 verwenden kann.
Ich kenne jetzt die Belegung der Stiftleiste nicht, aber wenn dort TxD, 
RxD, GND und 3V3 drauf wären, wäre ich schon sehr zufrieden.

Auf die ISP-Buchse würde ich nicht verzichten. Das habe ich bei einem 
anderen Projekt (notgedrungen) und vermisse die Möglichkeit, direkt über 
ISP programmieren zu können, doch sehr.

von Joe G. (feinmechaniker) Benutzerseite


Lesenswert?

Peter Sieg schrieb:
> GND / Pin 8 am AVR ist auch mit GND verbunden

Danke, die nicht mehr vorhandene Verbindung war dem Löschen geschuldet.

Ich würde den FTDI sozusagen an den Kopf der Platine setzen, dann eine 
Stiftleiste um mit Peters Adapter kompatibel zu sein und dann den Rest.
Die bisherige USB Buchse würde ich gerne durch einen Stecker ersetzen, 
siehe hier:
http://www.reichelt.de/USB-FireWire-Stecker/USB-AWF/index.html?;ACTION=3;LA=444;GROUP=C126;GROUPID=3213;ARTICLE=51993;START=0;SORT=artnr;OFFSET=16;SID=13Tagj738AAAIAAE1pNGY20e735febd5684b463a3fad7e4579eb3
Die derzeitige Kabelverbindung ist immer so schwer, dass alles vom 
Schreibtisch fliegt :-(

ISP lasse ich drauf.

Joe

von Joe G. (feinmechaniker) Benutzerseite


Angehängte Dateien:

Lesenswert?

Hier die die Version mit USB-Type A Stecker und Adapter zur 
"Peterplatine"
Peter, bitte mal schauen, ob die Anschlußbelegung korrekt ist. Gerade 
bei TXD und RXD bin ich mir nicht sicher weil ich nicht weiß wo diese 
Pins am IC liegen.
Joe

von Peter Sieg (Gast)


Angehängte Dateien:

Lesenswert?

@Joe: Sieht für mich ok aus.

Peter

von Hans- w. S. (hschuetz)


Lesenswert?

Hallo Peter,
gibt es das Modul auch in Deutschland zu kaufen? Oder nur in Hongkong..
habe da sehr schlechte Erinnerungen....
Anmerkung zur Schaltung... Wo bleiben diejenigen welche noch eine 
serielle Schnittstelle haben... mir fehlt da ein Spannungsregler 3,3V...
Gruß
Hans-Werner

von Peter Sieg (Gast)


Lesenswert?

Ob es das Modul noch - zu diesem Preis - woanders gibt könnte google 
klären.
Ich habe da mit der Bestellung sehr gute Erfahrungen gemacht!
Ansonsten bleibst ja noch FT232RL + USB Buchse. Der FT232 stellt 
ebenfalls
3,3V zur Verfügung. Und wenn das immer noch nicht reicht.. 3,3V 
Netzteile gibt es bei Pollin + ungebautes Handydatenkabel = TTL<->USB 
Schnittstelle.

Peter

von Peter Sieg (Gast)


Lesenswert?

@Joe: Wenn du dann bei Eagle und dem layouten bist.. kannst du bitte die 
4-bit Platine auch noch mal anpassen.. Da war ja Pin 24 - /WE und Pin 27 
- IO3 getauscht worden.. ich bekomme das irgendwie in eagle nicht hin.. 
dann hat man, falls man noch mal die 4-bit Version fertigen will gleich 
die richtige Platine..

Danke, Peter

von Joe G. (feinmechaniker) Benutzerseite


Angehängte Dateien:

Lesenswert?

Peter Sieg schrieb:
> kannst du bitte die 4-bit Platine auch noch mal anpassen

Bitteschön
Joe

von Peter Sieg (Gast)


Lesenswert?

Dankeschön! ;-)

Für die kommende Easy-8-bit Platine bitte hinter dem CP2102 Adapter vor 
der Versorgung der IC's+SD etc. in der +3.3V Leitung einen Jumper 
vorsehen für
einen Ein-/Ausschalter.. so kann man schon einstecken und die USB 
Schnittstelle wird erreichbar.. Terminalprogramm kann gestartet werden 
und
dann erst kann man dem Gerät seinen Strom geben und kann so die 
Bootmeldungen
auch im Terminalprogramm verfolgen.. ohne diese Schaltmöglichkeit sieht 
man nach <Return> nur noch den A> Prompt..

Peter

von Andreas H. (andreas_h35)


Lesenswert?

@Peter: und ich dachte, dazu ist der RESET-Taster, oder reseted der auch 
den USB-UART ?
Andreas

von Joe G. (feinmechaniker) Benutzerseite


Lesenswert?

Ich kann die 3.3V trennen, jedoch kann der Bootvorgang wie von Andreas 
beschrieben über den RESET Taster am AVR ausgelöst werden, was RESET auf 
der CP2102 Platine macht kann ich nicht sagen, da ich die Schaltung 
nicht kenne. Möglicherweise sollte hier der Jumper rein.
Joe

von Peter Sieg (Gast)


Angehängte Dateien:

Lesenswert?

@Andreas+Joe: Ihr habt Recht. An den Resetschalter hatte ich gar nicht 
mehr gedacht (fehlt auf meinem LR Aufbau). Das reicht..

Habe auch mal das myz80 8MB Image probiert. Klappt wunderbar.. 8MB große 
Disketten.. wie bekommen wir die nur gefüllt.. ;-)
Muß mir jatzt mal die diskdefs Einträge für myz80 heraussuchen..

Wer hat denn ggf. noch andere Anwendungen, die jetzt schon mit 
emulierter 8080 CPU laufen..? Gibts da schon Turbo Pascal für?
Ich habe mal ein Wordstar Diskimage mit dem aktuellem Bios angehangen.

Hier noch ein eagle3D Bild der 4-bit V1 Platine..

Peter

von Leo C. (rapid)


Lesenswert?

Peter Sieg schrieb:
> Wer hat denn ggf. noch andere Anwendungen, die jetzt schon mit
> emulierter 8080 CPU laufen..? Gibts da schon Turbo Pascal für?

Beitrag "Re: CP/M auf ATmega88"

von Leo (Gast)


Lesenswert?

Inzwischen habe ich auf meinem Netbook unter Windows den CP/M Emulator 
aliados[1] installiert. Funtioniert ganz gut, und scheint etwas 
einfacher zu sein als zxcc.

Mit dem aktuellen Makefile im cpm-Zweig[3] kann jetzt auch unter Windows 
ein Disk-Image mit IPL+CPM+BIOS etc. erstellt werden. Dazu müssen make, 
cpmtools[4], aliados und das ein oder andere Kommandozeilenprogramm im 
PATH gefunden werden. Wer nicht gleich ein komplettes Cygwin oder mingw 
installieren möchte, kann es ja mal mit den UnixUtils[5] versuchen. Sehr 
einfach zu installieren. und funtioniert bei mir wunderbar.

Das Ganze ist sicher noch Verbesserungsfähig. Ich würde mich freuen, 
wenn das mal jemand ausprobieren würde.

Außerdem habe habe ich mal die Diskimages (*.ydsk Dateien), die bei dem 
CP/M-Emulator YAZE-AG[6] "mitgeliefert" werden, getestet. Es können alle 
gelesen werden.
Leider sind nur wenige davon für uns interessant, da entweder zu 
speziell oder nur für Z80. Am interessantesten dürften der Hi-Tech C 
Compiler und vielleicht die Unixlike Tools sein.

Damit die Image-Dateien von unserem System gelesen werden können, habe 
ich sie CPMDSK_A.IMG .. CPM_M.IMG umbenannt und jeweils eine Hand voll 
auf eine FAT16 Partition auf der Speicherkarte kopiert. Damit die mit 
den "höheren" Buchstaben auch gelesen werden können, war leider ein 
kleiner Bugfix notwendig. Im avr-Zweig des SVN-Archives gibt es also 
auch ein Update.

[1] http://www.arrakis.es/~ninsesabe/aliados/
[3] http://cloudbase.homelinux.net/viewvc/avr-cpm/avrcpm/trunk/cpm/
[4] http://www.cpm8680.com/cpmtools/
[5] http://unxutils.sourceforge.net/
[6] http://www.mathematik.uni-ulm.de/users/ag/yaze/

von Peter Sieg (Gast)


Lesenswert?

Prima! Da ich kein SVN inst. habe.. welche Datei(en) muß ich mir 
herunterladen..?

Peter

von Leo C. (rapid)


Angehängte Dateien:

Lesenswert?

Peter Sieg schrieb:
> Prima! Da ich kein SVN inst. habe.. welche Datei(en) muß ich mir
> herunterladen..?


Um alles herunter zu laden, begebe man sich z.B. hier her:
http://cloudbase.homelinux.net/viewvc/avr-cpm/avrcpm/trunk/

Dann klicke man rechts oben auf "Download Tarball".

Wenn man nur einen Teil (z.B. den CP/M-Teil) haben will, steige man in 
das entsprechende Directory hinab, und klicke eben da auf "Download 
Tarball".

Wenn man nur eine einzelne Datei herunter laden will, klicke man auf den 
Namen der Datei oder auf die Revisionsnr. Anschließend findet man rechts 
oben "Download File" (Imho umständlich und nicht empfehlenswert).

Wenn man aber öfters mal nur die geänderte(n) Datei(en) laden will, 
installiert man (unter Windows) am Besten TortoiseSVN 
(http://tortoisesvn.tigris.org/).
Das ist einfach eine Erweiterung des Windows Filemanagers um die 
SVN-Client-Funktionen (Siehe Anhang).

von Leo C. (rapid)


Angehängte Dateien:

Lesenswert?

Peter Sieg schrieb:
> Muß mir jatzt mal die diskdefs Einträge für myz80 heraussuchen..

In meiner diskdefs ist folgender Eintrag
1
# MYZ80 hard drive (only works with libdsk, because it has a 256-byte header)
2
diskdef myz80
3
  seclen 1024
4
  tracks 64
5
  sectrk 128
6
  blocksize 4096
7
  maxdir 1024
8
  skew 1
9
  boottrk 0
10
  os 3
11
end
Der war wahrscheinlich in der Original-Datei, bin mir aber nicht sicher.


> Wer hat denn ggf. noch andere Anwendungen, die jetzt schon mit
> emulierter 8080 CPU laufen..?

Ich hatte ja schonmal die die Diskimages vom simh Altair 8800 Emulator 
emphohlen:
Beitrag "Re: CP/M auf ATmega88"

Für die Spielkinder unter uns habe ich mal das Basic- und das 
Games-Image auf HD-Format umkopiert und als Zip hier angehängt. Viel 
Spaß damit.

von Leo C. (rapid)


Angehängte Dateien:

Lesenswert?

Von simhd kann jetzt auch gebootet werden. Um ein solches Bootimage zu 
erkennen, muß im 1. Sektor (ipl) eine Marke vorhanden sein. Das 
cpm/Makefile kann diese Marke erzeugen. Z.B. so:
1
$ make clean
2
$ make diskimage IMGFORMAT=simhd
Oder das Makefile entsprechend anpassen.

Ein fertiges Image habe ich hier mal angehängt.

von Peter S. (petersieg)


Lesenswert?

Na.. ein bißchen ruhig geworden hier..?

@Joe: Stand 8-bit Simple Platinen?

Ich hatte hh3au (oder so  ähnlich) mal per Mail kontaktiert, ob er die 
Z80 Emulation nicht noch abschließen könnte.. ohne jede Antwort.. :-(

Gruß Peter

von Joe G. (feinmechaniker) Benutzerseite


Lesenswert?

Peter Sieg schrieb:
> @Joe: Stand 8-bit Simple Platinen?

Ich mußte erst noch ein anderes Projekt abschließen. Der Schaltplan 
steht ja, das Layout auch in den Grundzügen, es muß nur noch "schön" 
gemacht werden.

Gruß Joe

von Horst S. (h3aau)


Lesenswert?

moin moin,

z80 liegt gerade aus gesundheits gründen auf eis.......
will wer anders das beschleunigen?

g. Horst

von Peter Sieg (Gast)


Lesenswert?

Ah. Hallo Horst. Schön wieder von Dir zu hören.
Ich zumindest nicht aktuell.. Gut Ding will Weile haben.
Freue mich das du noch mit im Boot bist!

Gesundheit geht vor! Alles Gute derweil!

Falls du aber irgendwann schon einen lauffähigen Zwischenstand
hättest, würde wir den gerne schon mal im Code mit aufnehmen.

Gruß Peter

von Rene B. (themason) Benutzerseite


Lesenswert?

Ich hab mal eine Frage ...

Ich weiß nicht ob die in dem Thread hier schon gestellt worden ist oder 
nicht, aber ich würd gerne wissen ob es vom Timing her möglich ist die 
Ansteuerung des DRAMs in C zu machen.
Ich stelle mir das so vor das ich 3 Routinen habe. Eine liest ein Byte, 
eine zweite schreibt ein Byte und eine dritte macht den Refresh.
Damit der Refreh immer regelmäßig kommt wird die Refresh-Routine in 
einen Timer-Interrupt gepackt der schneller ist als die notwendige 
Refresh-Zeit. Die Lese und Schreib-Routine kann den Interrupt sperren 
damit die Ansteuerung nicht verfusselt wird, daher wird der Refresh auch 
öfter ausgeführt als notwendig, so die Idee.
Ich selbst habe das CP/M noch nicht ausprobiert da mich in erster Linie 
die Hardware (DRAM, SD-Karte und der FTDI) als kompakte Platform für 
Bastelzwecke interessiert.
Wäre mein "Vorhaben" so realisierbar, oder ist das Timing des DRAMs zu 
kritisch, alsdass es in C umsetzbar wäre zw ist ?

von f.e.sch (Gast)


Lesenswert?

ein Hallo an alle!

Ich habe seinerzeit auch mit dem legendären Z80 (bzw. U880) gearbitet 
und mir so manchen SBC damit gebaut. Das letzte war der Mugler-PC mit 
CPM 2.2, danach habe ich den Z80 und CPM aus den Augen verloren. Hatte 
neben Arbeit und Familie nicht mehr genug Zeit für ein solch 
Zeitintensives Hobby und nach einem Arbeitstag am PC auch keine rechte 
Lust mehr.

Mit großem Interesse habe ich diesen Tread gelesen. Leider scheint er 
aber einzuschlafen.

Ich hätte Interesse an 2 Platinen der "großen" Version mit 168'er, zwei 
4Mx4 dRAM und Header für Micro VGA sowie Peter's USB<->Seriell Wandler. 
Gibt es hierzu schon ein EAGLE - Project?

Wie weit ist der Arbeitsstand bei der Z80 - Emulation, kann mann diesen 
irgendwo einsehen? Ich könnte mir vorstellen, dass ich mich an dieser 
Stelle einklinke. Da die 8080 Codes ja offensichtlich funktionieren, 
sollte die Einbindung der zusätzlichen Z80 spezifischen OP-Codes ja 
reine Fleißarbeit sein - oder sehe ich das falsch?

Gruss Edgar

von Horst S. (h3aau)


Lesenswert?

moin moin,

sende mir doch bitte mal deine i-mehl addr. edgar.
horst

von Edgar S. (fesch)


Lesenswert?

Horst S. schrieb:
> moin moin,
>
> sende mir doch bitte mal deine i-mehl addr. edgar.
> horst

Ist unterwegs...

Gruß Edgar

von Leo C. (rapid)


Angehängte Dateien:

Lesenswert?

Rene B. schrieb:
> Wäre mein "Vorhaben" so realisierbar, oder ist das Timing des DRAMs zu
> kritisch, alsdass es in C umsetzbar wäre zw ist ?

Hallo Rene,
kritisch ist da nix, nur deutlich langsamer.
Zum Anfangen könntest Du mal die angehängten Dateien versuchen. 
Compiliert fehlerfrei, ist aber nicht getestet.

Für den Refresh kann man auch die ASM-Datei verwenden. Die Routine
verändert keine Register. Man kann sie notfalls auch in ein C 
Inline-Statement setzen.

Leo

von Rene B. (themason) Benutzerseite


Lesenswert?

@leo

Danke schön. Die Geschwiondigkeit ist erstmal nicht so wichtig. 
Hauptsache ich weiß das es da nichts superkritisches vom Timing her 
gibt.
Das die DRAMs ja eig. "dumm" und recht einfach gehalten sind denke ich 
auch das es nicht so kritisch ist, aber wollte nochmal andere Meinungen 
dazu hören. Testen werd ich es dann mal. Mit dem ASM in C hatte ich auch 
schon überlegt, wollte aber erstmal alles in C machen.
Vielen Dank noch.

von Leo C. (rapid)


Lesenswert?

Hier ist noch der Refresh:
1
#define RAM_RAS  0
2
#define RAM_CAS  1
3
#define RAM_OE  2
4
#define RAM_W  3
5
6
#define P_RAS  PORTC
7
#define P_CAS  PORTC
8
#define P_OE  PORTC
9
#define P_W  PORTC
10
11
12
ISR(TIMER2_COMPA_vect, ISR_NAKED)
13
{
14
  P_CAS &= ~_BV(RAM_CAS);
15
  P_RAS &= ~_BV(RAM_RAS);
16
  P_RAS &= ~_BV(RAM_RAS);    /* delay */
17
  P_RAS |= _BV(RAM_RAS);
18
  P_RAS |= _BV(RAM_RAS);    /* delay */
19
  P_RAS |= _BV(RAM_RAS);    /* delay */
20
  P_RAS &= ~_BV(RAM_RAS);
21
  P_CAS |= _BV(RAM_CAS);
22
  P_RAS |= _BV(RAM_RAS);
23
  reti();
24
}

Die #define packt man sinnvollerweise in die Headerdatei.

Außerdem hatte ich vergessen zu erwähnen, daß die C-Routinen nur mit der 
8-Bit Version funktionieren, und nur 64 kByte adressieren können. Beides 
kann man natürlich ändern und ich überlasse es dem geneigten Leser gerne 
zur Übung. ;)

von Joe G. (feinmechaniker) Benutzerseite


Lesenswert?

f.e.sch schrieb:
> Gibt es hierzu schon ein EAGLE - Project?

Ja, gibt es. Ich habe es mal hier aktualisiert.
http://www.mikrocontroller.net/articles/AVR_CP/M

von Edgar S. (fesch)


Lesenswert?

Joe G. schrieb:
> Ja, gibt es. Ich habe es mal hier aktualisiert.
> http://www.mikrocontroller.net/articles/AVR_CP/M

Hallo Joe G.,
das sieht ja echt gut aus - Respekt!
Wird es eine Sammelbestellung für diese 2.(grosse) Variante geben?
Wenn ja, dann melde ich schon einmal 2 Platinen für mich an. Mit welchem 
Preis pro Platine müsste man rechnen?

Gruss Edgar

von Joe G. (feinmechaniker) Benutzerseite


Angehängte Dateien:

Lesenswert?

Hat etwas gedauert...
Hier nun die 8-Bit Variante 3.0 als "CP/M-Stick". Bitte wie immer 
kritisch durchsehen.
Joe

von Hans- w. S. (hschuetz)


Lesenswert?

Hallo Joe,
wird bei dieser Variante die Platine vom USB mit Strom versorgt?
dann hätte ich Interesse an 2 Platinen...vorausgesetzt es wird mal etwas 
mit der Implementierung des Z80 Codes und mit dem Datenaustausch unter 
Windows.
Gruß
Hans-Werner

von Joe G. (feinmechaniker) Benutzerseite


Lesenswert?

@Hans-Werner
Diese Variante kann über USB mit 5V versorgt werden oder mit 3.3V über 
den Steckverbinder für Peters Adapter. Die interne 3.3V Versorgung wird 
bei der Bestückung mit dem FT232 wieder über den internen Regler 
realisiert. Ansosnten entspricht die Schaltung fast der ursprünglichen 
Version bis auf die Datenbreite von 8-Bit.

Der Datenaustausch unter Windows sollte mit der FAT-Version kein Problem 
sein. Die MMC-Karten können damit nur über Windows beschrieben werden. 
Linux ist nicht notwendig.
Joe

von Hans- w. S. (hschuetz)


Lesenswert?

@Joe...also betrachte 2 Bausätze bestellt...
Gruß
Hans-Werner

von Peter Sieg (Gast)


Lesenswert?

@Joe: Na, das sieht doch prima aus!
ich hätte gerne auch 2 Platinen.

Gruß Peter

von Andreas H. (ahein)


Lesenswert?

@Joe: auch ich würde gern 2 Platinen haben wollen

@Peter: handelt es sich hier um die AVRCPM-Platine, für die seinerzeit 
ein Aufruf (auch im robotronforum) gestartet wurde ?! Ich habe in Sachen 
Hardware ja schon seit einigerzeit nichts mehr gelesen.

Gruss,
Andreas

von Joe G. (feinmechaniker) Benutzerseite


Lesenswert?

na dann...
2 x Hans-Werner
2 x Peter
2 x Andreas
2 x Joe

Wer noch? Ab 10 geht es los.

von GPS'ler (Gast)


Lesenswert?

Hallo,

ich bin zufällig über dieses Projekt gestolpert. Meine Hochachtung! Ich 
habe früher auch mal mit CPM gespielt. Ich habe mit dem CPM nichts vor 
finde aber die Platine für etwas anderes interressant. Um eventuell das 
noch zu unterstützen würde ich auch eventuell Platinen nehmen. Gibt es 
da einen aktuellen Schaltplan und Eagle-Files bzw. SD-Kartenslotbauform? 
Was kostet die Platine?
MfG
Achim

von Joe G. (feinmechaniker) Benutzerseite


Lesenswert?

GPS'ler schrieb:
> Gibt es
> da einen aktuellen Schaltplan und Eagle-Files bzw. SD-Kartenslotbauform?
> Was kostet die Platine?

Einen Schaltplan bzw. die Eagle-Files gibt es etwas weiter oben unter 
avr_cpm.zip
Die Platine kostet ca. 10€-12€. Das kommt noch auf die Gesamtmenge an.

von Günter J. (gjung)


Lesenswert?

Hallo,

der Stick gefällt mir gut.

Damit die 10 Stück voll werden bin ich mit zwei dabei.

Gruß,
Günter

von Frank M. (ukw) (Moderator) Benutzerseite


Lesenswert?

Ich schließe mich dem an. Nehme auch 2 Stück.

Gruß,

Frank

von GPS'ler (Gast)


Lesenswert?

Hallo @Joe,

vielen Dank für Deine Info. Für mich wäre wünschenswert, dass man die 
3,3V von extern einspeisen könnte. Jumper/Pfosten an R2 würde ohne 
grossen Aufawand gehen. Für mich ist die interne 3,3V Versorgung etwas 
wenig (50mA). Ist das nicht auch für eure Anwendung grenzwertig 
(SD_Karte,IC5,IC6,IC1). Habe das aber nicht explizit geprüft.  Besser 
wäre natürlich ein eigener LowDropRegler von den 5V als Zusatz.
Nur zum Hintergrund:
Aber das hat mit dem eigentlichen Projekt nichts zu tun.Ich würde IC5 
und IC6 nicht bestücken und da einen GPS Empfänger dranhängen bzw. die 
ADC Eingänge und könnte dann einfach einen Logger daraus machen.

MfG
Achim

Ps.: Sorry für das abschweifen vom eigentlichen Threadthema

von Peter T. (pitt)


Lesenswert?

Hallo, ich bin von dem Projekt begeistert. Seit einem halben Jahr 
verfolge ich die Beiträge. Nun habe ich Blut geleckt und will mit einem 
Freund die Platine aufbauen. Ich bestelle vier Platinen.
Gruß Peter

von Joe G. (feinmechaniker) Benutzerseite


Angehängte Dateien:

Lesenswert?

GPS'ler schrieb:
> Für mich wäre wünschenswert, dass man die
> 3,3V von extern einspeisen könnte.

Wenn der FT232 nicht bestückt wird, können die 3.3V auch über JP3 Pin 1 
eingespeist werden. Das ist für alle Anwendungen, die einen anderen USB 
Adapter verwenden wollen. Wird der FT232 selbst bestückt und man möchte 
die 3.3V über JP3 Pin 1 einspeisen muß die Verbindung zum Regler des 
FT232 aufgetrennt werden. Das habe ich nun mit JP1 realisiert. Erfolgt 
die Stromversorgung über USB, kann statt JP1 eine Brücke eingelötet 
werden. Dank Leo C. haben wir ja immernoch die beiden I2C Leitungen des 
AVR frei. Auch wenn es noch keine Anwendung dazu gibt, habe ich sie nun 
auf JP5 gelegt. Paltz war ja noch auf der Leiterplatte.
Joe

von GPS'ler (Gast)


Lesenswert?

Hallo

das ist ne feine Sache, So kann man das auch für andere Zwecke nutzen. 
Kann ich noch den Hintergrund erfahren, warum RX/TX vom Atmega nicht für 
die USB Komminikation benutzt wird? Wird das da Software mäßig gemacht?
In meinem Fall ist das gut, da kann man dann ein GPS-Modul dranhängen.

MfG
Achim

von Joe G. (feinmechaniker) Benutzerseite


Lesenswert?

Port D des AVR liegt vollständig am 8-Bit Datenbus des RAM. Damit müssen 
die Daten nicht umständlich zusammengestückelt werden wie in der 
Urversion. Kein Vorteil ohne Nachteil. Die V24 Schnittstelle läuft nun 
über andere Pins und wird per Software nachbgebildet (siehe Quelltext 
von Leo C.).

von GPS'ler (Gast)


Lesenswert?

Hallo

in der Ecke bei R2 oder C10  würde noch gut eine LowDrop 3,3V 
Spannungsregler als als Bestückungsoption für externe 5V bzw. USB 5V 
passen......

MfG
Achim

Ps: Ich bin mit 3 Platinen dabei...

von GPS'ler (Gast)


Angehängte Dateien:

Lesenswert?

Hallo @Joe,

vorneweg, ich habe noch nie eine Leiterplatte mit Eagle entworfen und 
dadurch keinerlei Erfahrung in dieser Richtung!

....aber kann es sein, dass die SD-Karte Spiegelverkehrt ist und würde 
nur passen, wenn das auf der Unterseite wäre. Ich habe mehrere 
SD-Kartenhalter und wollte testen ob diese in etwa passen. Aber leider 
nein. Dabei ist mir aufgefallen,dass die SCDA... falsch angeschlossen 
sein müßte.Im Manual von denen steht "Viewed from the mounting face 
side". Ich habe dein Layout ausgedruckt und ne SD Karte draufgelegt. CS 
ist der  erste  bzw. 2. Pin nach der Abschrägung....

Eventuell liege ich voll daneben.....deshalb prüfen....

MfG
Achim

Ps: Eventuell kannst du die Pads nach recht verlängern (Falls das bei 
euererKarte nicht stört) , dann würde es auch für meine passen...
Anbei die LIB

von Joe G. (feinmechaniker) Benutzerseite


Lesenswert?

Ein 3.3V Regler mit T092 Gehäuse ist nun integriert. Muß ja nicht 
bestückt werden.

Die SD-Card ist korrekt. Schau mal hier:
http://www.mikrocontroller.net/articles/AVR_CP/M
Die Karte wird immer so gesteckt, dass die Kontakte oben liegen, d.h. 
die Schräge ist auf der linken Seite.
Joe

von GPS'ler (Gast)


Lesenswert?

Hallo

@Joe danke für die Aufklärung. Da wird die Karte mit den Kontakten nach 
oben reingesteckt. Kannte ich bisher nicht. Also Sorry...

Ich brauche das nicht, aber ist die Taktleitung vom FT... über den 
Jumper zum Atmega nicht relative lang...

>Ein 3.3V Regler mit T092 Gehäuse ist nun integriert. Muß ja nicht
>bestückt werden.

..super an welchen hast du da gedacht (Verfügbarkeit CSD hat da nur 
TO-220)


Wann geht da die Bestellung los?


MfG
Achim

von Siggi M. (Gast)


Lesenswert?

Hallo,

die Version 3.0 macht wirklich einen hervorragenden Eindruck. Ich nehme 
auch 2 Stück von den Platinen.
Wie macht ihr das mit der Verrechnung?

siggi

von Joe G. (feinmechaniker) Benutzerseite


Lesenswert?

GPS'ler schrieb:
> ..super an welchen hast du da gedacht

LP2950 z.B. beim großen C


@Siggi und GPS'ler, bitte eine Mail mit eurer Versandadresse an mich.

von Joe G. (feinmechaniker) Benutzerseite


Lesenswert?

Bei einer derzeitigen Abnahmemenge von 20 Stück würde eine Platine 9,80 
€ + Porto kosten.
Ich warte noch die kommende Woche auf Interessenten bzw. die 
Kontaktdaten. Am Freitag würde ich dann eine Mail an alle Interessenten 
in meiner Kontaktliste senden. Übers Wochenende sind dann noch 
Korrekturen möglich und am 25.07. würde ich dann die Bestellung 
auslösen.
Joe

von GPS'ler (Gast)


Lesenswert?

Hallo

@Joe von Reichelt gibts den LE 33 CZ der müßte doch auch gehen oder?

Hast du da auch die entsprechenden C's vorgesehen?

MfG
Achim

Ps: Ist E-Mail an dich nur mit Anmeldung möglich?

von Joe G. (feinmechaniker) Benutzerseite


Lesenswert?

GPS'ler schrieb:
> @Joe von Reichelt gibts den LE 33 CZ der müßte doch auch gehen oder?

JA

> Hast du da auch die entsprechenden C's vorgesehen?

JA

> Ps: Ist E-Mail an dich nur mit Anmeldung möglich?

JA

von MatthiasM (Gast)


Lesenswert?

Dieses Projekt ist EINFACH - NUR - GEIL!

Ich hätte damals(tm) meinen rechten Arm für eine CP/M Maschine gegeben. 
Hab gelötet und gefrickelt wie ein Wilder, aber am Ende wurde es dann 
doch ein ZX80 :-)

Ich würde auch eine Platine (USB Stick) abnehmen.

von Andreas J. (antibyte)


Lesenswert?

Grad gefunden.
DRAM´s für 99 cent, leider nur SMD.

http://www.lantronic-et.de/index.php/cat/c511_D-RAM-xxK-x-4.html

von Rene B. (themason) Benutzerseite


Lesenswert?

Ich reihe mich auch mal in die Riege der Leute ein die dieses Projekt 
Klasse finden :-)
Die neue Version hat echt was. Kann mit der alten Version ja noch bis 
zum Sankt-Nimmerleins-Tag spielen (ohne die ursprüngliche CP/M-Version 
wirklich zu nutzen :-))))
Was ich bei der neuen Version echt witzig finde ist das I2C 
herausgeführt ist. Freut mich.
Echt gelungen.

von Andreas J. (antibyte)


Lesenswert?

MatthiasM schrieb:
> aber am Ende wurde es dann
> doch ein ZX80 :-)

ZX80 revival :-)

http://home.micros.users.btopenworld.com/zx80/zx80.html

von Bernd B. (mainhattan)


Lesenswert?

Als erstes ein Danke für das Design und die Organisation der Platine.
Ich nehme natürlich auch eine, auch wenn es für mich eine 
Herausforderung sein wird, den FT232 auf die Platine zu löten.

von Andreas J. (antibyte)


Lesenswert?

Der hier ist deutlich billiger und einfacher zu löten als der FT232 :

http://www.reichelt.de/ICs-M-MN-/MCP-2200-I-SO/index.html?;ACTION=3;LA=444;GROUP=A217;GROUPID=2914;ARTICLE=109740;

Benötigt aber noch einen 12MHz Quarz.
Das ist ein vorprogrammierter PIC18F14K50.
Den PIC18F14K50 gibts auch in DIP für ein paar Cent mehr,
aber da müsste man halt noch die USB->UART Firmware aufspielen.

von Joe G. (feinmechaniker) Benutzerseite


Lesenswert?

Andreas Jakob schrieb:
> Grad gefunden.
> DRAM´s für 99 cent, leider nur SMD.

Ist ja echt witzig, was ihr so findet. Allerdings lassen sich diese SOJ 
Teile noch schlechter löten als der FT232 (siehe Variante 2). Die 4C4256 
RAM's sind oft noch als Amiga Ramerweiterung in der Bucht aufzutreiben.

von Joe G. (feinmechaniker) Benutzerseite


Lesenswert?

@ alle Interessenten der Version 3.0

Alle die sich bei mir per Mail wegen einer leiterplatte der Version 3.0 
gemeldet haben, haben eine Mail mit ihrer Menge, dem Preis und weiteren 
Informationen erhalten. Wer KEINE Mail erhalten hat, der ist bei mir 
nicht erfaßt, Sorry. Entweder habe ich es dann verträumt oder ihr habt 
euch noch nicht gemeldet. Bitte dann schnellstens nachholen.

Joe

von Peter S. (petersieg)


Lesenswert?

@Joe: Prima, das du das wieder organisiert- Danke!
Evtl. wäre es sinnvoll (wenn du dir das 'aufbürden' willst), die SD 
Slots von CSD gleich mitzubestellen. Ab 25 Stück kosten die <2€ / 
Stück..?

Ansonsten müßte die wohl jeder selbst bestellen. Dann kostet einer 3€ + 
Versand. Zeit wäre ja noch..

Kannst du bitte die aktuellen Eagle Dateien hier einhängen?

Ich bin noch an einer 'Quelle' von einigen DRams 4x256 DIP dran aud dem 
F64.
Leider liest er zur Zeit keine Nachrichten..

Gruß Peter

von Joe G. (feinmechaniker) Benutzerseite


Lesenswert?

In der Tat, 2,06 € incl. Versand bei einer Abnahmemenge von 25 Stück.
Ich lass mich breitschlagen. Wer möchte? Ab 25 bestelle ich.

Joe

von Peter S. (petersieg)


Lesenswert?

Ich nehme gerne 2. Falls noch welche an den 25 fehlen auch gerne mehr, 
da ich die auch noch für andere Projekt verwenden kann..

Peter

von Frank M. (ukw) (Moderator) Benutzerseite


Lesenswert?

Joe G. schrieb:
> In der Tat, 2,06 € incl. Versand bei einer Abnahmemenge von 25 Stück.
> Ich lass mich breitschlagen. Wer möchte? Ab 25 bestelle ich.

Ich nehme dann zu meinen 2 Platinen auch gerne die 2 SD-Adapter.

Gruß und Dank,

Frank

von Andreas H. (ahein)


Lesenswert?

Ich würde 5 SD-Adapter abnehmen.

Danke und Gruss,
Andreas

von Bernd B. (mainhattan)


Lesenswert?

Ich nehme 3 SD-Slots.
Danke für die Mühe.

von Günter J. (gjung)


Lesenswert?

dann nehme ich mal 5 SD-Slots zu meinen Platinen

Gruß,
Günter

von Ole R. (olereinhardt)


Angehängte Dateien:

Lesenswert?

Hi Leute,

Das Projekt ist einsame Spitze! Faszinierend, was man mit einem AVR 
alles anstellen kann.

Ich wollt Euch bei dieser Gelegenheit ein ähnliches Projekt vorstellen, 
welches ich gerade umgesetzt habe.

Beitrag "Intel 8080 CP/M Emulator für Mikrocontroller (ARM7, ARM9, CortexM3, AVR32)"

In diesem Fall laufen sogar zwei Betriebssysteme auf dem 
Mikrocontroller. Nut/OS (kleines Mikrocontroller Echtzeit 
Betriebssystem) und CP/M.

Nut/OS dient dabei lediglich als "Wirtsplattform" um z.B. Zugriffe auf 
die SD Karte zu ermöglichen.

Das ganze läuft auf allen von Nut/OS unterstützten Platformen mit mind. 
80 KByte RAM (ARM7, ARM9, Cortex M3, AVR32, ...)

Viele Grüße,

Ole

PS: Anbei ein screenshot des laufenden CP/M Systems mit WordStar 
Startscreen.
(Ausgaben über serielle Schnittstelle im minicom dargestellt.)

von Joe G. (feinmechaniker) Benutzerseite


Lesenswert?

Die derzeitige Interessentenliste ist an alle per Mail raus. Bitte 
nochmals überprüfen und gegebenenfalls korrigieren. Wünsche nehme ich 
noch bis Sonntag entgegen, dann ist Wunschende für die Version 3.0. Am 
Montag bestelle ich.
Joe

von Frischling (Gast)


Lesenswert?

Hallo CPM/AVR Experten,

ich habe mich da jetzt mal warmgelesen und Geschmack gefunden. Ich habe 
nun  mit SVN das Projekt runtergeladen und zuerst mal versucht den AVR 
Assemblerteil zu übersetzen.
Das Runteladen ist kein Problem (klar!) aber das Übersetzen schon.
zB:
AVRASM: AVR macro assembler 2.1.42 (build 1796 Sep 15 2009 10:48:36)
Copyright (C) 1995-2009 ATMEL Corporation

D:\www\Atmel\UsbStick\SVN_Source\avr-cpm\avrcpm\trunk\avr\8080int.asm(55 
):  error: printnewline: Unknown instruction or macro
D:\www\Atmel\UsbStick\SVN_Source\avr-cpm\avrcpm\trunk\avr\8080int.asm(56 
):  error: printstring: Unknown instruction or macro
D:\www\Atmel\UsbStick\SVN_Source\avr-cpm\avrcpm\trunk\avr\8080int.asm(56 
):  error: syntax error, unexpected STRING

Assembly failed, 3 errors, 0 warnings




Bevor man da jetzt anfängt zu suchen die Frage:

-Gibt es einen AVR-Studio-Projektfile?

Das Ganze soll unter Windows XP erstellt werden. Einige haben das ja 
auch unter Windows gemacht und man muß ja das Rad nicht neu erfinden....

Um diesen Thread nicht mit solchen Problemen zu "belasten" sollte man 
eventuell einen eigenen Thread "Software CP/M Klinik" aufmachen.
Es geht nicht darum, dass jemand Fehler sucht, sondern da scheint doch 
was "generelles" bei Windows zu fehlen (Includes..etc)

von Peter S. (petersieg)


Angehängte Dateien:

Lesenswert?

Hi. Arbeite auch unter Windows und hänge mal mein ganzes AVR CPM 
Verzeichnis hier ein. Kann ggf. nicht unbedingt der letzte SVN Stand 
sein und aktuell habe ich nur 4-bit Hardware.

Peter

von Christian B. (casandro)


Lesenswert?

Hmm, also ich persönlich würde da ja persönlich einen PS/2 Anschluss und 
einen Monitoranschluss dran bauen, oder das ganze in ein möglichst 
kleines Gehäuse zu packen. So als Art Uhrencomputer.

von Frischling (Gast)


Lesenswert?

Hallo @Peter

vielen Dank für das Projekt. Das ist zunächst mal auch nicht 
übersetzbar, da viele spezielle absolute Path Angaben im BAT file sind.
Was mich aber zunächst sehr wundert ist zum Beispiel, dass in dem 
"8080int.asm" kein "#include "macros.inc" drin ist. Sowohl bei dir,  als 
auch im runtergeladenen Projekt und das dann bei euch übersetzbar sein 
soll.

...aber ich muß da zuerst mal wieder ASM Grundlagen lernen. Ich habe vor 
ca. 30 Jahren das letzte mal Assembler (8008/8080/8086) gemacht.

Ich werde versuchen da ein gültiges AvrStudioProjekt zu basteln, so wie 
wenn man was vom Radig etc,,, runteläd und problemlos übersetzen kann. 
Ich habe eine gehende Windows XP AVR Studio 4 Installation ,it der ich 
bisher problemlos Projekte übersetzen konnte. Ausserdem eine 
WINAVR-20100110 Standardinstallation

Müssen wir aber hier wirklich nicht vertiefen. Ich versuche mich da 
durchzukämpfen.

Vielen Dank
Achim

Ps. Problem ist noch die Beschaffung der DRAMS für die V 3 (für mich)

von Leo C. (rapid)


Lesenswert?

Frischling schrieb:
> Was mich aber zunächst sehr wundert ist zum Beispiel, dass in dem
> "8080int.asm" kein "#include "macros.inc" drin ist. Sowohl bei dir,  als
> auch im runtergeladenen Projekt und das dann bei euch übersetzbar sein
> soll.

Hallo,
nur die Datei "avrcpm.asm" sollte durch den Assembler geschickt werden.
Alles andere wird included.

Leider habe ich keine Zeit, auf Details einzugehen. Ab Dienstag wirds 
wieder besser.

von Frischling (Gast)


Lesenswert?

Hallo Leo,

vielen Dank.Soweit war ich noch nicht vorgedrungen.....Ich hab halt mal 
alle genommen.

>>>Assembly complete, 0 errors. 0 warnings

Super! Hat mir für den Einstieg sehr geholfen! Dachte ich mirs doch, 
dass es "einfach" gehen muß. Sorry für die "verfrühte" Nachfrage.

Vielen Dank
Achim

von Joe G. (feinmechaniker) Benutzerseite


Lesenswert?

Für alle, die sich schon mal im Vorfeld mit der Software befassen 
wollen. Unter dem Punkt Downloads
http://www.mikrocontroller.net/articles/AVR_CP/M
habe ich drei CP/M Images reingestellt die unter Windows nur auf eine 
SD-Card kopiert werden müssen. Um selbst ein Image zu erstellen, sollten 
wir eine kleine Anleitung mit den notwendigen Tools verfassen, was 
meinst du Peter?

von Peter S. (petersieg)


Lesenswert?

@Achim: Mein AVR Studio Projekt ist doch im ZIP drin..?
Ich nutze die BAT Datei gar nicht..

Peter

von Frischling (Gast)


Lesenswert?

Hallo

@Peter ALLES klar, jetzt wo du es sagst.....she ich das auch. Mein 
Urproblem war, dass ich "avrcpm.asm" als "Entry File" gestzt habe.   Wie 
oben schon geschrieben ich habe zu früh gefragt! Man sollte eben erst 
den Verstand einschalten, denken und dann fragen.......

Nochmals vielen Dank @Leo und @Peter für eure Hilfe. Jetzt scheine ich 
in der Spur zu sein. Man wird halt älter....

Sorry
Achim

von Joe G. (feinmechaniker) Benutzerseite


Angehängte Dateien:

Lesenswert?

Aufbauhinweise V3

Die Leiterplatten sollten bald bei euch eintreffen. Deshalb für alle, 
die neu dabei sind und natürlich auch für alle anderen, einige 
Aufbauhinweise.

1. Wenn die 5V aus der USB-Schnittstelle bezogen werden dann muss JP1 
gesteckt sein. Dabei wird der interne 3.3V Regler des FT232 genutzt.

2. Wenn die 5V über JP3 zugeführt werden, JP1 offen lassen.

3. Wird der AVR über einen externen Quarz getaktet, Pin2 und Pin3 bei 
JP2 brücken.

4. Erhält der AVR seinen Takt über den FT232, dann Pin1 und Pin2 bei JP2 
brücken. Der FT232 muss jedoch vorher über ein Tool, welches von der 
FTDI Webseite bezogen werden kann, programmiert werden. CBUS0 muss dann 
auf Taktausgabe geschaltet werden.

5. ACHTUNG! Wer den AVR über die ISP Schnittstelle mit externen 5V 
programmiert MUSS vorher die SD-Card ziehen, sonst liegen die 5V an der 
SD-Card! Das übersteht sie nicht.

Viel Spaß beim Aufbau!
Joe

von Nils E. (yetanotheruser)


Lesenswert?

Platine ist angekommen - vielen Dank!
Gibt's die Eagle-Files irgendwo? Sonst wird das Bestücken was schwierig 
:-)

von Joe G. (feinmechaniker) Benutzerseite


Angehängte Dateien:

Lesenswert?

Ja, hier.

von womisa (Gast)


Lesenswert?

Hallo

meine Platinen sind auch angekommen. Vielen Dank.

FRAGE: Kann mir noch jemand passende RAMS abgeben?


MfG
Achim

von Peter S. (petersieg)


Angehängte Dateien:

Lesenswert?

So hier Bilder meiner ersten Platine.

Läuft alles!

Was ich festgestellt habe:
Das größte Problem sitzt meistens vor dem Rechner ;-) Hatte TTL-USB 
Adapter falsch herum angeschlossen. ;-)
Die FAT16 Routinen sind wählerisch was die Karten angehen. 3 gehen 
nicht; 2 gehen (1GB Platinen; Noname). Hier gibt es einige 
Parallelprojekte (sd2iec) wo man ggf. schauen kann, ob man Code hierzu 
übernehmen kann..
Ach ja.. Speed = 2,623 bei 8-bit und 30MHz (5,293 bei 30MHz und 4-bit).

Peter

von Peter S. (petersieg)


Lesenswert?

@Achim: Kann dir 2 getestete Rams zusenden für 5€ unversichert. Wenn 
Interesse = Mail senden.

@alle: Leider hat sich mein vermutlicher Ramlieferant aus dem Forum64 
seit Wochen/Monaten nicht mehr gemeldet.. von daher sind meine Rams auch 
begrenzt. Ich kann max. noch 2x2 Rams abgeben.

Peter

von Siggi M. (siggim)


Lesenswert?

@alle: Ich habe gerade gesehen, bei Kessler-electronic gibt es die 
RAM-Speicher für 3,89 Euro das Stück zu kaufen.

Siggi

von Nils E. (yetanotheruser)


Lesenswert?

Kessler hat das RAM aber offenbar nur im SOJ- bzw. ZIP-Gehäuse, nicht 
aber in DIP.
Mir fehlen leider auch noch RAM-Chips.

Nils

von Joe G. (feinmechaniker) Benutzerseite


Lesenswert?

Peter Sieg schrieb:
> Läuft alles!

Prima!
Nett auch eine Wahl der Quarzfrequenz. Natürlich muß die Version CP/M 
V3.0 mit 30 MHz laufen!

@alle
Ich bin auch noch an einer Quelle für RAM's. Ansosnten muß ein Adapter 
von SOJ auf DIP her.

von Hans- w. S. (hschuetz)


Lesenswert?

Hallo,
meine Platinen sind heil angekommen, danke
nun erstmal löten...
Gruß
Hans-Werner

von Peter S. (petersieg)


Lesenswert?

Meine extra Rams sind alle vergeben.
Hier gibts noch 4 Stück zum Preis von 1,50€/Stück - Bestell-Nr.: 
100155--:
info@Hefner-Electronic.de
Sehr geehrter Herr Sieg,

wir haben noch 4x Siemens HYB 514256A-70 DIP 20

Mit freundlichen Grüßen

Hefner-Electronic
Gunther Hefner
---
Der 30MHz SMD-Quarz ist von Pollin: Bestell-Nr.: 230079
Wie gesagt, 30MHz ist bereits grenzwertig. Ab 32Mhz lief es nicht mehr.
Wer das Letzte rausholen will.. ansonsten sollten 25MHz (alte Lan-Karte)
sicherer sein..

Peter

von Peter S. (petersieg)


Lesenswert?


von Joe G. (feinmechaniker) Benutzerseite


Lesenswert?

1. Gibt es eigentlich schon weitere Aufbauerfolge?
2. Habe noch 2 x 4C256-8 abzugeben, wer hat Interesse?
3. Es gibt neue Platineninteressenten, wer möchte noch und sollte etwas 
geändert werden?

Gruß Joe

von Peter Sieg (Gast)


Lesenswert?

@Joe: 1 Änderungswunsch: Die RST Leitung des CP2102 Adapters NICHT mit 
RESET des AVR verbinden. Sonst wird bei einem Reset des AVR's auch der 
Adapter resettet und das macht wenig Sinn.

Peter

von Siggi M. (siggim)


Lesenswert?

@Joe: Ich habe Interesse an den 2 Chips. Wenn Du auch noch einen SD-Slot 
übrig hättest, wäre das fein!

Gruß  Siggi

von Nils E. (yetanotheruser)


Lesenswert?

Mein mega168 ist jetzt auch eingetroffen, da wollte ich mich jetzt an 
den Aufbau machen. Ich möchte das allerdings nicht als USB-Stick bauen, 
sondern mit einem MAX232 Pegelwandler und externer 5V-Versorgung an ein 
Lear Siegler ADM-3A-Terminal hängen.

Dazu habe ich mir gerade einen Wolf gesucht, wo ich wie welche Jumper 
setzen muss - und schließlich wurde mir klar, dass die Eagle Dateien des 
Postings vom 8.8. nicht mit der ausgelieferten Platine übereinstimmen. 
Unter anderem fehlt der 3V-Spannungsregler.

Kann ich bitte die Eagle-Dateien bekommen, die der Platine entsprechen?

von Joe G. (feinmechaniker) Benutzerseite


Angehängte Dateien:

Lesenswert?

Ich bin verwirrt, die Zip-Datei vom 08.08. enthält den Stand vom 
25.07.2011. Das ist der aktuelle Stand mit 3.3V Regler

Welche Jumper sind unklar?

Gruße Joe

von Nils E. (yetanotheruser)


Lesenswert?

Sorry, mein Fehler. Ich hatte offenbar noch eine veraltete Fassung auf 
der Festplatte (was mir nicht bewußt war) und habe die beiden 
vertauscht. Es ist alles in Ordnung.

Was mir gestern unklar war, habe ich mit dem Durchgangsprüfer geklärt 
und die Platine soweit aufgebaut. Ich habe dabei einen anderen 
3,3V-Spannungsregler verwendet, den ich noch zur Hand hatte: MCP1702. 
Die verbauten 100nF-Kerkos sehen nicht ganz so schön aus, weil ich nur 
welche mit Rastermaß 7,5mm zur Hand hatte. Ich habe einen 25 MHz 
Grundton-Quarz verwendet mit 18pF-Kondensatoren daran. Gestern habe ich 
noch die Fuses auf den Quarzbetrieb umgestellt - zu mehr war leider 
keine Zeit mehr.

Bis jetzt sieht alles gut aus :-)

von Siggi M. (siggim)


Angehängte Dateien:

Lesenswert?

So, die Hardware ist fertig, jetzt werde ich mich der Software widmen.

@Peter: Ist Dein Zip-File noch aktuell?

Siggi

von Peter S. (petersieg)


Lesenswert?

Jup. ZIP sollte noch aktuell sein. Kann nur sein, das im thrunk von Leo 
etwas neuere Versionen sind! Am besten schaust du da mal.. letzte 
Änderung
war glaube ich, das CP/M / Bios auch von einer 8MB Diskimage geladen 
werden konnte..

Peter

von Nils E. (yetanotheruser)


Lesenswert?

Ich habe die AVR-Firmware aus dem trunk assembliert und bekomme jetzt 
die Ausgabe:

CPM on an AVR, v2.1
Testing RAM: fill...wait...reread...
Initing mmc...
No bootable CP/M disk found! Please change MMC/SD-Card.

Initing mmc...
No bootable CP/M disk found! Please change MMC/SD-Card.

Wenn ich das richtig verstanden habe, kann diese Version von einer 
FAT-16-formatierten SD-Karte aus einer Image-Datei booten? Ich habe aber 
nicht verstanden, wie man das bewerkstelligt bzw. fertige Dateien dazu.
Gibt es eine Anleitung dazu? Aus dem Abschnitt dazu aus 
http://avr.cwsurf.de/?AVR_CP%2FM bin ich nicht recht schlau geworden.
Oder kann hier jemand eine bootfähige Image-Datei hochladen, die ich 
dann nur noch in das Hauptverzeichnis legen muss?

von Nils E. (yetanotheruser)


Lesenswert?

...hat sich erledigt, habe den Eintrag vom 21.4. entdeckt. Super, es 
läuft!!

von Nils E. (yetanotheruser)


Angehängte Dateien:

Lesenswert?

Screenshot vom ADM-3A

von Peter Sieg (Gast)


Lesenswert?

Sehr schön!
Und mit ADM3 Terminal ist dann auch stilecht ;-)

Im avrcpm_aliados.zip sind eigentlich schon disk images anthalten und 
alle nötigen Batchdateien um sie zu bilden..

Peter

von Joe G. (feinmechaniker) Benutzerseite


Lesenswert?

Interessant sind eure Bestückungsvarianten. Merkwürdigerweise schreibt 
die Literatur immer etwas von Abblock C’s möglichst dicht am IC, ja 
einen Elko an der SD Card, Pull Up und Pull Downs, …
Ich kann ja bei der nächsten Variante all diesen „überflüssigen“ Kram 
weg lassen :-)

Übrigens hier
http://www.mikrocontroller.net/articles/AVR_CP/M
gibt es auch ein Diskimage.
Joe

von Nils E. (yetanotheruser)


Lesenswert?

Danke, die Disk-Images werde ich noch ausprobieren. Erst mal muss ich 
aber noch die Pegelwandlung von RS-232 auf 3.3V in den Griff bekommen: 
ich habe nicht bedacht, dass ein MAX232 5V-Pegel ausgibt, die für den 
bei 3.3V betriebenen AVR zu hoch sind.

Was anderes: ich habe gesehen, wird ein BREAK auf der seriellen 
Schnittstelle derzeit noch nicht behandelt. Das ADM-3A hat eine extra 
Break-Taste und Terminalprogramme bieten üblicherweise die Funktion, ein 
Break zu senden. Das würde die Möglichkeit eröffnen, bei Empfang eines 
Breaks einen Kalt- oder Warmstart auszuführen, oder einen Debugger 
aufzurufen.

von Joe G. (feinmechaniker) Benutzerseite


Lesenswert?

Nils Eilers schrieb:
> Pegelwandlung von RS-232 auf 3.3V

Ein 74HVCT08 (siehe Schaltung der AVR CP/M Variante 2) sollte das tun. 
Dort hatte ich die Pegelwandlung für die SD Karte so vorgenommen.

Das mit dem Break habe ich nicht verstanden. Wer erzeugt es, wer nutzt 
es, was macht es?

Gruß Joe

von Nils E. (yetanotheruser)


Lesenswert?

Die Pegelwandlung probiere ich mal auf dem Steckbrett. Evtl. reicht 
schon Spannungsteiler aus zwei Widerständen, ansonsten hätte ich noch 
74HC4050 hier.

Break wird leider nur im englischen Text der Wikipedia etwas näher 
erklärt: 
http://en.wikipedia.org/wiki/Universal_asynchronous_receiver/transmitter#Break_condition

Kurz gesagt ist ein Break ein gesendetes Startbit, dem keine Daten 
folgen (0x00) und das auch für die Zeit halten wird, wo eigentlich das 
logisch inverse Stop-Bit folgen müsste. Also wie das Senden eines 0x00 
mit fehlendem Stop-Bit, was einen framing error ergibt.

Erzeugt wird das durch den Sender, in diesem Fall also ein 
angeschlossenes Terminal(programm).

Was es bewirkt, ist nicht allgemeingültig definiert - es hängt ganz vom 
Anwendungsfall bzw. der tatsächlichen Hardware ab. Allgemein benutzt man 
es dazu, die Aufmerksamkeit des Empfängers zu erregen. Übliche 
Anwendungen sind Wechsel der Baudrate oder Reset.

Beim AVRCPM wäre es nützlich, um aus jedem Programm aussteigen zu können 
ohne Reset drücken zu müssen - insbesondere deswegen, weil der Speicher 
erhalten bleibt.

Ich habe zwar schon Z80 und 6502-Assembler programmiert, aber noch nie 
AVR. Die Implementierung sollte aber nicht sonderlich schwierig sein. Im 
Grunde nur framing error erkennen (was sowieso der Fall sein sollte), 
und wenn die empfangen Daten 0x00 sind, dann haben wir ein Break. Und 
dann z.B. ein Reset oder Warmstart auslösen - fertig.

von Leo C. (rapid)


Lesenswert?

Der ATmega-U(S)ART kann diesen Zustand erkennen (Framing Error + 
empfangenes Zeichen = 0).

Unser Software-UART (sw-uart.asm) könnte um diese Funktion erweitert 
werden.

Freiwillige vor.

von Nils E. (yetanotheruser)


Lesenswert?

Wenn ich meine Hardware fertig habe, würde ich das gerne probieren. Ich 
kann aber nur die soft-uart-Version testen, da ich keine 4-bit-Hardware 
mit hw-uart besitze.

von Günter J. (gjung)


Lesenswert?

So ich habe nun auch eine Platine fertig bestückt.

Auf dem ersten Bild von der bestückten Platine von
Joe (Beitrag "Re: CP/M auf ATmega88")
ist eine USB-A Buchse zu erkennen. Ich habe nun ohne
das groß zu überprüfen auch eine USB-A Buchse eingelötet und
erst nachdem ich sofort einen 'Overcurrent' Fehler am USB
erhalten habe gemerkt daß das Layout für einen USB-A Stecker ist.
Hat mich dann etwas Zeit gekostet die Buchse wieder auszulöten und
auf der Unterseite einzulöten, aber jetzt gehts.

Foto gibts dann Morgen.

Gruß,
Günter

von Joe G. (feinmechaniker) Benutzerseite


Lesenswert?

Oh, tut mir leid!
Ich hätte das bei den Aufbauhinweisen mit erwähnen sollen. Irgendwann 
früher, weiter oben hatte ich das mal getätigt, jedoch später nicht noch 
mal explizit erwähnt.

von Günter J. (gjung)


Angehängte Dateien:

Lesenswert?

So, hier die versprochenen Fotos.

Wie gesagt habe ich eine USB Buchse auf der Rückseite,
die Kratzer am USB Anschluß kommen vom Entlöten.

Aktuell rennt hier ein ATMega168 bei 20MHz.

Gruß,
Günter

von Joe G. (feinmechaniker) Benutzerseite


Lesenswert?

Toll Günther!
Ich sehe irgendwann schon das Turbo Pascal laufen.
Joe

von Thomas H. (thommel)


Lesenswert?

Ein Dankeschön an alle Beteiligten für das tolle Projekt auch von mir. 
Ich bin heute dazu gekommen, die Platine zu bestücken. Funktioniert 
alles bestens!

Viele Grüße, Thomas

von Peter S. (petersieg)


Lesenswert?

Wer möchte, der 'Erfinder' des Ganzen = sprite tm hat einen PayPal 
Spendenbutton auf seiner Seite (Tip Jar):

http://spritesmods.com/?art=avrcpm

Peter

von Joe G. (feinmechaniker) Benutzerseite


Lesenswert?

Unter: http://www.mikrocontroller.net/articles/AVR_CP/M
stehen nun die aktuellen Layout Daten, eine Hexdatei zum Soforttest, 
CP/M Immage zum Testen, sowie der Link zur aktuellen Software (Dank an 
Leo C.)

Offene Baustellen im Projekt:

1. Z80 Emulation
2. Breakfunktion (Wunsch von Nils)
3. SD-Card Funktion verbessern (es gibt einige Karten, die nicht korrekt 
funktionieren)

Überraschenderweise waren die knapp 30 Platinen sofort weg. Es gibt 
schon wieder Anfragen nach neuen Leiterplatten. Ich würde ab sofort 
wieder Interessenten sammeln. Natürlich sind jederzeit Wünsche, 
Änderungen, Erweiterungen willkommen (Peter Resettrennung ist 
vorgemerkt)

Joe

von Günter J. (gjung)


Lesenswert?

Hallo,

Ich würde gerne dem Thema Z80 Emulation ein bisschen Leben einhauchen.

Horst hat, wenn ich es richtig mitbekommen habe, das Thema an den Edgar
weitergegeben.

@Edgar, falls Du hier noch Hilfe benötigst würde ich mich gerne 
anbieten.

Gruß,
Günter

von Nils E. (yetanotheruser)


Angehängte Dateien:

Lesenswert?

So, Hardware ist jetzt erst mal fertig und in ein preiswertes Gehäuse 
eingebaut (Reichelt SD 10 SW).

Die Pegelwandlung am MAX232 von 5V nach 3V funktioniert prima mit einem 
simplen Spannungsteiler aus einem 1,8K und 3,3K Widerstand. Die 
Stromversorgung erfolgt über ein 5V-Steckernetzteil und 1N5818 
Schottky-Diode als Verpolschutz. Neben der Reset-Taste gibt's noch eine 
LED für den SD-Kartenzugriff. Den Vorwiderstand habe ich auf 55 Ohm 
verkleinert, damit sie gut hell leuchtet. Prima wäre noch, die Power-LED 
und die Zugriffs-LED in einer Dual-LED zu kombinieren, aber da ich nur 
eine Dual-LED mit gemeinsamer Kathode hatte, hätte das einen Transistor 
als Inverter erfordert - vielleicht flicke ich den ja mal noch ein ;-)

An den I2C-Bus habe ich noch eine batteriegepufferte Echtzeituhr PCF8583 
gehangen - mal sehen, ob und wann die Software das unterstützen kann. 
Das wäre eine weitere Baustelle: den I2C-Bus dem emulierten 8080 als 
I/O-Ports zur Verfügung stellen: vielleicht so, dass man in eine 
I/O-Zelle die Adresse des I2C-Busses schreibt und dann über eine andere 
den tatsächlichen Zugriff vornimmt.

von Winfried S. (wede)


Lesenswert?

Hallo,
bin hier zufällig rein geraten.
Falls benötigt, habe in meiner Chip-Kiste 8+1 Dram gefunden.
Vielleicht sinds ja die Richtigen:
TMS 44C256-80N und 1 M514256B-70R, jeweils 20-polig.
Gruß
W.Schwede

von Peter S. (petersieg)


Lesenswert?

@Winfried: Die TMS 44C256-80N sollten die richtigen sein.
Wenn du sie entbehren kannst -> Mail an peter.sieg1 (at) gmx.de

(oder evtl. auch an Joe, dann können sie mit einer nächsten 
Platinenbestellung verteilt werden)

Peter

von Joe G. (feinmechaniker) Benutzerseite


Lesenswert?

Thema Echtzeituhr:

Von CP/M 2.2 wohl nicht unterstützt, könnte man sich vielleicht trotzdem 
an die BDOS Funktionen 104 und 105 halten.

BDOS Funktion 104 - Datum und Uhrzeit stellen
Aufruf mit C=68h, DE=Adresse des Zeitstempels.
Der Zeitstempel hat folgendes Format:
DW      Tag     ;Tag 1 ist 1.Januar 1978
DB      Stunde  ;gepacktes BCD
DB      Minute  ;gepacktes BCD

BDOS Funktion 105 - Datum und Uhrzeit holen
Aufruf mit C=69h, DE=Adresse des Zeitstempels. Rückgabe A=Sekunden 
(gepacktes BCD).
Der Zeitstempel hat folgendes Format:
DW      Tag     ;Tag 1 ist 1.Januar 1978
DB      Stunde  ;Gepacktes BCD
DB      Minute  ;Gepacktes BCD

von Hans- w. S. (hschuetz)


Lesenswert?

Hallo Leute,
wer die Augen aufmacht kann klarer sehen...
meine Platine rennt nun auch mit 20 Mhz...
Interessant wäre jetzt die Z80 Implementierung und IO Ports über I2C
Gruß
Hans-Werner

von Joe G. (feinmechaniker) Benutzerseite


Lesenswert?

RAM'S

dank Winfried S. gibt es nochmal 9 x DRAMS für das Projekt. Wer 
Interesse hat melde sich bitte bei mir. Stückpreis 0,55€ + Porto (0,70€ 
Warensendung)
Gruß Joe

von Bernd B. (mainhattan)


Lesenswert?

Hallo Joe,

ich benötige noch 2 DRAMs.

Gruß,
Bernd

von Joe G. (feinmechaniker) Benutzerseite


Lesenswert?

Es gibt bei genügend Interessenten (noch mindestens 2) nochmals die 
Möglichkeit Platinen von der letzten Version zu bestellen.
Wer hat noch Interesse?
Gruß Joe

von Holger B. (ambrosius)


Lesenswert?

Hallo Joe,

ich könnte auch noch 2 Stck DRAM's gebrauchen, falls noch welche zu 
haben sind.

Vielen Dank

Holger

von Peter S. (petersieg)


Lesenswert?

@alle:

Ich habe mich nun durchgerungen nochmals Platinen in China zu bestellen.
Um den Preis von 10€/Platine halten zu können, mußte ich allerdings 
einige mehr abnehmen, sodaß wir wahrscheinlich auch noch Weihnachten
genug davon haben ;-) Reset zwischen USB TTL Wandler + AVR habe ich 
entfernt.

Als Abwechslung habe ich die Platinen mit weißem Lötstoplack und 
schwarzer Beschriftung gewählt. Das sollte ganz nett (nerd) mit den 
schwarzen IC's und dem roten TTL-USB Wandler aussehen ;-)

Sollten so in 14 Tagen da sein. SD Slots würde ich dann auch besorgen,
sodaß 1 Platine mit Slot dann 12,50€ und Versand dann 2,50€ wären.

Wer welche möchte, schicke mir eine Mail mit Anzahl und Lieferadresse 
und derjenige bekommt dann meine Bankverbindung zur Vorkasse.

Peter

von Joe G. (feinmechaniker) Benutzerseite


Lesenswert?

@alle:

Wie ihr lesen könnt, kümmert sich Peter gerade um die Neubestellung der 
nächsten Serie. Die Daten von Bobby und Wahe habe ich schon 
weitergeleitet.
Dank Bobby gibt es nochmal 16 DRAM's für das Projekt. Bei Interesse 
gleich eine Info an Peter, der tütet sie dann mit ein.
Joe

von Peter S. (petersieg)


Angehängte Dateien:

Lesenswert?

Platinen sind heute angekommen.. und erste läuft schon ;-)
Bestellte Platinen+Slots gehen morgen zur Post..

Wer übrigens Lust hat.. am 1+2 Okt. findet die Classic Computing in 
37603 Holzminden statt (Infos: www.classic-computing.de). Ich werde mit 
dem Stick
auch dort sein..

Peter

von Peter S. (petersieg)


Lesenswert?

Hier scheint es auch noch Rams zu geben:

http://www.demotronic.net/

1,50€/Stück ist ok.

---

Ansonsten. Ist ein wenig ruhig geworden..?
Was macht die Z80 Implementierfraktion..?

Aber auch ohne Programmierkenntnisse, kann man z.B weitere Programme aus 
CP/M Archiven ausprobieren und in einem neuen Diskimage zusammen 
stellen..

Peter

von Joerg W. (joergwolfram)


Lesenswert?

Einen Z80 Emulator könnte ich demnächst zur Verfügung stellen. 
Allerdings braucht der mindestens ca. 17K Flash, so dass nur der Mega328 
in Frage käme. Dafür ist er aber recht flott. Für "Leos Schleife" 
braucht er im FAST Mode (ZX81 Emulator bei 20MHz AVR-Takt und 12 Takten 
für einen Speicherzugriff) ca. 0,8 Sekunden, was etwa 3,6 MHz Z80 Takt 
entsprechen würde. Eine auf Speed optimierte Variante (braucht ca. 24K) 
kommt sogar auf 0,7s was dann etwa 4,1MHz Z80-Takt wären (falls ich mich 
da jetzt nicht verrechnet habe).

Jörg

von Nils S. (kruemeltee) Benutzerseite


Lesenswert?

Joerg, schön wär's mal, wenn ein EMU für AVRs wie den mega162 kommen 
würde, an den man extern ganz "normale" RAMs über das Memory-Interface 
dranbekommt.

So würde z.B. ein 62256/62512 mit 32k/64k RAM gehen. Auch Banking mit 
grösseren Chips wäre drin. So dann (glaube ich) in CPM bis 512kb RAM.

von Peter S. (petersieg)


Lesenswert?

@Jörg: Hört sich gut an! Bei den bisherigen Arbeiten zur Z80 Erweiterung 
hatte ich den Eindruck, das das aber erheblich kleiner geht mit dem 
Tabellenansatz.. so in Richtung +5-8kb.. arbeitet da z.Z eigentlich noch
jemand hier daran..?

Ein 328 hatte ich mal versuchsweise geflasht.. der schien aber mit den 
3,3V an Spannungsversorgung nicht zurecht zu kommen..?

BTW: Es sind noch Platinen+SD Slots zu haben! -> Mail.

Peter

von Joe G. (feinmechaniker) Benutzerseite


Lesenswert?

Peter Sieg schrieb:
> Ein 328 hatte ich mal versuchsweise geflasht.. der schien aber mit den
> 3,3V an Spannungsversorgung nicht zurecht zu kommen..?

Peter, ich versuche es heute auch mal mit einem 328 und 3.3V. Ich 
berichte...

von Joerg W. (joergwolfram)


Lesenswert?

Über 5K belegen bei mir schon allein die Sprungtabellen:

Ohne Prefix:     512 Bytes
CB Prefix  :     512 Bytes
ED Prefix:       512 Bytes
DD Prefix:      1024 Bytes
DD CB Prefix:   1024 Bytes
FD Prefix:      1024 Bytes
FD CB Prefix:   1024 Bytes

Was viel gegenüber meiner "alten Version" an Geschwindigkeit gebracht 
hat, ist zum einen die vollständige Ausdekodierung aller Befehle und die
Nutzung des AVR Statusregisters. Außerdem habe ich es aufgegeben das 
originale Befehlstiming möglichst genau nachzubilden. Bei vielen 
Befehlen ist das Verhalten von AVR und Z80 gleich, da reicht nach der 
Operation ein

IN   reg_f,SREG

aus, für logische und Schiebeopertionen nutze ich Tabellen. Manchmal muß
man das C Flag über die Operation mittels des T-Flags "retten". Und das
N-Flag habe ich nach GPIOR0.0 verlegt. Bei bedingten Sprüngen etc.
nutze ich dann die Positionen der AVR Flags. Bei den meisten Programmen 
sollte das auch keine Probleme bereiten.

Am AVR-CP/M Projekt selbst werde ich mich nicht direkt beteiligen, dafür 
habe ich zu viele andere "Baustellen". Aber das "AX81"-Projekt wird 
hoffentlich nächste Woche online gehen und damit auch der Sourcecode vom 
Z80 Emulator.

Gruß Jörg

von Peter S. (petersieg)


Lesenswert?

@Jörg: Ein ZX81 auf AVR Basis.. freue mich schon!

Peter

von Joe G. (feinmechaniker) Benutzerseite


Lesenswert?

So, habe die Tests durchgeführt. Meine Mega328P laufen alle unter 3.3V 
bis 20 MHz stabil. Einige auch bis 24 MHz.

Joe

von Nils S. (kruemeltee) Benutzerseite


Lesenswert?

Ich habe erst einen mega328p mit 25mhz @ 5V mit Frequenzgenerator ohne 
Probleme aufm Steckbrett laufen gehabt. Bei 25.2 fing er an zu 
spinnen...

von do9brx (Gast)


Lesenswert?

Hallo!
Ich hab hier noch ein Problem.
Hab das Projekt entsprechend kompiliert und auf den AVR gebracht, Images 
kopiert und das Ganze startet erstmal auch, aber dann

"A: FAT16 File-Image at:255 size"

und Neustart in der Schleife.
Wo kann das Problem liegen?

Andre

von Joe G. (feinmechaniker) Benutzerseite


Lesenswert?

Läuft der RAM Test korrekt durch?

Ansonsten sieht mir das ganz nach Kartenunverträglichkeit aus. Einige 
SD-Karten laufen nicht richtig.
Nun gibt es mehrere Möglichkeiten.

1. SPI Takt runter setzen.
in der config.inc
#define MMC_SPI2X  1 auf   (CLK/2)
#define MMC_SPI2X  0 setzen  (CLK/4)

2.  debuggen
In der config.inc
.equ MMC_DEBUG     = 1
Damit wird über die Schnittstelle der MMC Inhalt ausgegeben. Du erkennst 
also ob die Daten von der Karte richtig gelesen werden.

Beim Schalter
.equ MMC_DEBUG     = 2 oder größer (siehe mmc.asm) wird der SPI Takt auf 
clk/128 gesetzt. Dann sollte es wirklich gehen.


Einige Karten laufen leider nicht. Hier hilft nur Kartentausch oder die 
MMC Routine noch mal anfassen.

von do9brx (Gast)


Lesenswert?

Der Ram test ist einwandfrei.
Danke für die Hinweise, das werde ich dann morgen mal ausprobieren.
Hab auch noch ein paar andere Karten da :-\

von do9brx (Gast)


Lesenswert?

Geht leider immer noch nicht.

Mit Debug sehe ich, das die Laufwerke erkannt und gelistet werden, dann
"Partinit done.; flags: 30"
Dann kommt noch ein Lesevorgang und wieder Neustart

Hab jetzt 3 Karten verschiedener Hesteller durch, (16/128/256MB), 
fertiges Hex-File,  selbstcompiliertes HEX, fertige Boot-Images als auch 
neucompilierte. Keine Besserung. Hardware ist auch ok, Rams habe ich mal 
mit zwei anderen gewechselt. Hmmm ..

von Joe G. (feinmechaniker) Benutzerseite


Lesenswert?

Schalte mal MMC_DEBUG = 4

Dann siehst du was von der Karte nach der korrekten (inkorrekten? ) 
Initialisierung gelesen wird.

Ich habe mal die Ausgabe für die Initialisierung und das lesen des 
ersten Blocks beigefügt.

CPM on an AVR, v2.1
Testing RAM: fill...wait...reread...
Initing mmc...

mmcInit SPI_CLK_SLOW <FF <FF <FF <FF <FF <FF <FF <FF <FF <FF
mmcCMD: 00 00000000 <FF <FF <FF >40 .. 95>95 <FF <01  CMDRes: 01
mmcCMD: 08 000001AA <FF <FF <FF >48 .. 87>87 <FF <05  CMDRes: 05
mmcCMD: 37 00000000 <FF <FF <FF >77 .. 01>01 <FF <01  CMDRes: 01 mmcCMD: 
2                9 00000000 <FF <FF <FF >69 .. 01>01 <FF <00  CMDRes: 00
mmcCMD: 37 00000000 <FF <FF <FF >77 .. 01>01 <FF <00  CMDRes: 00 mmcCMD: 
2                9 00000000 <FF <FF <FF >69 .. 01>01 <FF <00  CMDRes: 00
mmcCMD: 10 00000200 <FF <FF <FF >50 .. 01>01 <FF <00  CMDRes: 00 <FF
 CT: 02 InitRes: 00 SPI_DISABLE
mmcRdSect SPI_CLK_FAST
mmcCMD: 11 00000000 <FF <FF <FF >51 .. 01>01 <FF <00  CMDRes: 00 <FF <FF 
<                FE <00
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 
00                 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 
00 00 00 00 00 00 0                0 00 00 00 00 00 00 00 00 00 00 00 00 
00 00 00 00 00 00 00 00 00 00 00 00                 00 00 00 00 00 00 00 
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00                 00 
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 0 
0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 
00                 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 
00 00 00 00 00 00 00                 00 00 00 00 00 00 00 00 00 00 00 00 
00 00 00 00 00 00 00 00 00 00 00 00 0                0 00 00 00 00 00 00 
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00                 00 
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 
0                0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 
00 00 00 00 00 00                 00 00 00 00 00 00 00 00 00 00 00 00 00 
00 00 00 00 00 00 00 00 00 00 00 00                 00 00 00 00 00 00 00 
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 0                0 00 
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 
00                 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 
00 00 00 00 00 00 0                0 00 00 00 00 00 00 00 00 00 00 00 00 
00 00 00 00 00 00 00 00 00 00 00 00                 00 00 00 04 02 00 06 
08 C8 D0 FD 00 00 00 03 07 1E 00 00 00 00 00 00 00 00                 00 
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 0 
0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 55 AA
<46 <FF SPI_DISABLE RdSectRes: 00

von Joe G. (feinmechaniker) Benutzerseite


Lesenswert?

Einen wichtigen Hinweis noch:
Die Imagefiles sollten immer 256k groß sein.

von do9brx (Gast)


Lesenswert?

Also bei mir sieht das so aus:
(Steuerzeichen wegdenken, kommt vom Term)
...

mmcCMD: 11 0000EE00 <FF <FF <FF >51 .. 01>01 <FF <FF <00  CMDRes: 00 <FF 
<FF <FF <FF <FF <FF <FF <FF <FF <FF <FF <FF <FF <FF <FF <FF <FF <FF <FF 
<FE <31 <23 <FF SPI_DISABLE RdSectRes: 00 <\r>
<\n>mmcRdSect SPI_CLK_FAST <\r>
<\n>mmcCMD: 11 0006FE00 <FF <FF <FF >51 .. 01>01 <FF <FF <00  CMDRes: 00 
<FF <FF <FF <FF <FF <FF <FF <FF <FF <FF <FF <FF <FF <FF <FF <FF <FF <FF 
<FF <FE <31 <23 <FF SPI_DISABLE RdSectRes: 00 <\r>
<\n>A:FAT16 File-Image at: 046, size: 208KB.<\r>
<\n>B:FAT16 File-Image at: 002, size: 175KB.<\r>
<\n>C:FAT16 File-Image at: 099, size: 118KB.<\r>
<\n>Partinit done.<\r>
<\n>mmcRdSect SPI_CLK_FAST <\r>
<\n>mmcCMD: 11 0003AE00 <FF <FF <FF >51 .. 01>01 <FF <FF <00  CMDRes: 00 
<FF <FF <?<\r>
<\n><\r>
<\n>CPM on an AVR, v2.1<\r>
<\n>Testing RAM: fill...wait...

...

Von 256k war in den letzten Wochen nicht die Rede. Oder hab ich was 
überlesen? Die hier verwendeten Dateien sind die, die Peter auf seiner 
Seite veröffentlicht hat.

Gruß, Andre

von Joe G. (feinmechaniker) Benutzerseite


Angehängte Dateien:

Lesenswert?

@Andre
Die 256K großen Images findest du hier:
http://www.mikrocontroller.net/articles/AVR_CP/M

Welche Hardware verwendest du?

Wird deine MMc richtig initialisiert?
Schau mal bitte nach dem ersten Teil deiner Initialisierung.

CPM on an AVR, v2.1
Testing RAM: fill...wait...reread...
Initing mmc...

mmcInit SPI_CLK_SLOW <FF <FF <FF <FF <FF <FF <FF <FF <FF <FF
mmcCMD: 00 00000000 <FF <FF <FF >40 .. 95>95 <FF <01  CMDRes: 01
mmcCMD: 08 000001AA <FF <FF <FF >48 .. 87>87 <FF <05  CMDRes: 05

Es sieht so aus, ob etwas von der Karte gelesen wird, aber falsche 
Daten. Nun kann das Image fehlerhaft sein oder die gelesenen 
Kartendaten.
Wenn du INS_DEBUG = 1 setzt, kannst du die Codes und Befehle mitlesen 
die ausgeführt werden. PRINT_PC = 1 zeigt dir zusätzlich den 
Programcounter (hilfreich bei Sprüngen) an. In der derzeitigen 
8080int-jmp.asm Lib stehen noch zwei Relativsprünge, entweder durch 
"Call" ersetzen oder die neue Lib (siehe Anhang) benutzen.

Der prinzipielle Bootvorgang sollte so aussehen:
ipl.asm wird ausgeführt (läd das CP/M in den Speicher)
Die ersten bBefehle sind:
org $2000
ld sp,$1000
ld hl,"ipl"
call prmsg

Das bedeutet, PC steht auf 2000 und führt den ersten Befehl LD SP, $2000 
aus. (31 00 20). Dann kommt der Befehl LD HL, "IPL" usw. Der Debugmodus 
sollte also folgendes anzeigen.

Partinit done.
Ok, CPU is live!

PC=2000
  C  A =00 BC =0000 DE =0000 HL =0000 SP =E737 PC =2000       31 00 20
PC=2003
  C  A =00 BC =0000 DE =0000 HL =0000 SP =2000 PC =2003       21 37 20
PC=2006
  C  A =00 BC =0000 DE =0000 HL =2037 SP =2000 PC =2006       CD 2E 20
PC=202E
  C  A =00 BC =0000 DE =0000 HL =2037 SP =1FFE PC =202E       7E B7 C8

Viel Erfolg!
Joe

von Peter Sieg (Gast)


Lesenswert?

do9brx schrieb:
> Von 256k war in den letzten Wochen nicht die Rede. Oder hab ich was
> überlesen?

Die Images dürfen nicht kleiner sein als 256k soweit ich das 
verstanden habe. Daher fülle ich die bei der Erzeugung mit Nullen auf. 
Inzwischen werden aber dank Leo C. auch weitere Formate unterstützt. 
(z.B 8MB Images).
Nur wenn man eine solches 8MB Image auch als Bootimage verwenden möchte,
muss man die aller neueste Firmware flashen!

Peter

von do9brx (Gast)


Lesenswert?

HW ist die aktuelle Platine von Peter, gelötet nach bestem Wissen und 
Gewissen und auch wirklich ALLES nochmal nachgeprüft bis auf die Rams, 
denen ich halt blind vertrauen muss.

Na gut, hab jetzt mal darauf geachtet, die 256er Beispiel-Files zu 
nehmen, nochmal mit den Debug Schaltern compiliert (ich hoffe die 
Quellen vom 11.4. sind die aktuellen), die Karte wird auch nach obigem 
Beispiel korrekt initialisiert, am Schluss "mitten im Satz" wieder 
Neustart:

CPM on an AVR, v2.1<\r>
<\n>Testing RAM: fill...wait...reread...<\r>
<\n>Initing mmc...<\r>
<\n><\r>
<\n>mmcInit SPI_CLK_SLOW <FF <FF <FF <FF <FF <FF <FF <FF <FF <FF <\r>
<\n>mmcCMD: 00 00000000 <FF <FF <FF >40 .. 95>95 <FF <01  CMDRes: 01 
<\r>
<\n>mmcCMD: 08 000001AA <FF <FF <FF >48 .. 87>87 <FF <05  CMDRes: 05 
<\r>
<\n>mmcCMD: 37 00000000 <FF <FF <FF >77 .. 01>01 <FF <01  CMDRes: 01 
mmcCMD: 29 00000000 <FF <FF <FF >69 .. 01>01 <FF <01  CMDRes: 01 <\r>
<\n>mmcCMD: 37 00000000 <FF <FF <FF >77 .. 01>01 <FF <01  CMDRes: 01 
mmcCMD: 29 00000000 <FF <FF <FF >69 .. 01>01 <FF <01  CMDRes: 01

....usw....

A:FAT16 File-Image at: 511, size: 256KB.<\r>
<\n>B:FAT16 File-Image at: 255, size: 256KB.<\r>
<\n>C:FAT16 File-Image at: 383, size: 256KB.<\r>
<\n>Partinit done.<\r>
<\n>mmcRdSect SPI_CLK_FAST <\r>
<\n>mmcCMD: 11 00148600 <FF <FF <FF >51 .. 01>01 <FF <FF <00  CMDRes: 00 
<FF <FF <FF <FF <FF <FF <FF <FF <FF <FF <FF <FF <FF <FF <FF <FF <FF <FF 
<FF <FE <31 <23 <FF SPI_DISABLE RdSectRes: 00 <\r>
<\n>Ok, CPU is live!<\r>
<\n><\r>
<\n>PC=2000 <\r>
<\n>        A =00 BC =0000 DE =0000 HL =0000 SP =0000 PC =2000       31 
00 20 <\r>
<\n>PC=2003 <\r>
<\n>        A =00 BC =0000 DE =0000 <\0><\r>
<\n><\r>
<\n>CPM on an AVR, v2.1<\r>
<\n>Testing RAM: fill...wait...

von Matze (Gast)


Lesenswert?

Wie ist den die Geschwindigkeit des Emulators ? laueft Turbo Pascal 
drauf ?
Denke drüber nach das ganze auch mal aufzubauen, scheint echt lustig zu 
sein.

Ciao Matze

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
Noch kein Account? Hier anmelden.