CP/M auf ATmega88

Gast #2140486
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
#2141488
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.
Gast #2141645
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
Persönliche Seite #2141647
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.
Persönliche Seite #2141656
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
Gast #2141842
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
Gast #2141890
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
#2141930
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.
Angehängte Dateien:
Gast #2141980
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
Gast #2142225
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
Gast #2142254
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
#2142274
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
Angehängte Dateien:
Gast #2142398
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
#2142435
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
Angehängte Dateien:
Gast #2142636
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
Gast #2142669
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
Angehängte Dateien:
Gast #2143450
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
Angehängte Dateien:
#2143698
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?
Persönliche Seite #2143942
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
#2143951
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.
Gast #2143966
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
Gast #2143987
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
#2144001
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"
#2144022
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.
Gast #2144033
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
Angehängte Dateien:
Gast #2144048
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
#2144055
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.
#2144093
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.
Gast #2144213
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
Angehängte Dateien:
Persönliche Seite #2144650
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
Angehängte Dateien:
Gast #2145264
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
#2145534
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
Gast #2146009
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 ...
#2147380
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.
Persönliche Seite #2147571
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
Gast #2148583
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
Gast #2150188
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
Gast #2150654
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
Gast #2151130
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
Angehängte Dateien:
Gast #2152590
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/
#2152732
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).
Angehängte Dateien:
#2153360
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.
Angehängte Dateien:
#2154752
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.
Angehängte Dateien:
Gast #2183198
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
Persönliche Seite #2221412
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 ?
Gast #2223199
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
#2227126
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
Angehängte Dateien:
Persönliche Seite #2227310
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.
#2230359
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. ;)
Persönliche Seite #2260440
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
Gast #2266159
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
Gast #2266498
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
Persönliche Seite #2267247
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
Angehängte Dateien:
Gast #2267404
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
Gast #2268133
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...
Gast #2268206
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
Angehängte Dateien:
Gast #2268295
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
Persönliche Seite #2268410
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
Gast #2269188
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.
Persönliche Seite #2270499
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.
#2270660
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.
Persönliche Seite #2270955
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
#2273466
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
#2274519
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.)
Angehängte Dateien:
Gast #2277181
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)
Gast #2277314
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)
#2277336
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.
Gast #2277410
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
Persönliche Seite #2277624
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?
Gast #2277736
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
Persönliche Seite #2294814
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
Angehängte Dateien:
#2297327
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
Angehängte Dateien:
#2297409
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
#2298457
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
#2309661
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?
#2310709
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 :-)
#2311261
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?
Persönliche Seite #2311446
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
#2312135
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.
#2312212
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.
#2313408
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
Persönliche Seite #2317842
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
#2318587
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.
Angehängte Dateien:
Persönliche Seite #2319870
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
#2342132
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
#2377158
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
#2377463
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
#2377546
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
Gast #2390230
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
Persönliche Seite #2390424
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.
Gast #2392256
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 ..
Persönliche Seite #2392295
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
Gast #2392452
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
Persönliche Seite #2393071
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
Angehängte Dateien:
Gast #2393280
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
Gast #2393499
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...

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren