AVR CP/M

CP/M Mini-System auf AVR ATmega88/168/328 Basis

(p)Neueste Dateien jeweils weiter unten! Aktuell wird ein ATmega328P benoetigt!

Grundidee und Entwicklung by: sprite_tm

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

It really works!! Unglaublich!
8080 Emulator und CP/M mit einem ATmega88, 256kx4 DRam und SD Karte.
Noch nicht ausgereift, mehr ein Proof-of-concept. Terminal auf 38400 8N1 einstellen. Die diskimage mit dd direkt auf eine SD Karte schreiben.
Zip-Archiv mit allen Dateien: avr-cpm.zip

Hier cpmtools fuer win32 und ein erweitertes diskimage. Enthaelt eine ersteinmal lauffaehige mbasic.com, allerdings sind die Sprungziele 00000? Aber das
othello Spiel laeuft: cpmtools.zip
Muss zwingend im Wurzelverzeichnis entpackt werden, sodass \cpmtools entsteht.
Aufrufbeispiele:
cpmls -f avrcpm diskimage - zeigt Inhaltsverzeichnis an
cpmcp -f avrcpm diskimage datei.com 0:datei.com - kopiert datei.com in das image
cpmcp -f avrcpm diskimage 0:datei.com datei.com - kopiert datei.com aus dem image
cpmrm -f avrcpm datei.com - loescht datei.com aus dem image

ipl.asm + bios.asm lassen sich hiermit assemblieren: http://www.tni.nl/products/tniasm.html - wenn man das end Statement auskommentiert.

Links:

http://spritesmods.com/?art=avrcpm - zur sprite_tm Seite
http://www.mikrocontroller.net/topic/177481 - zum Forum
http://www.mikrocontroller.net/articles/AVR_CP/M - zum Artikel
http://cloudbase.homelinux.net/viewvc/avr-cpm/avrcpm/trunk/ - zum CVS

 

Lochrasteraufbau:




Bildschirmmeldung:


Schaltplanskizze (Quelle: sprite_tm):


Bauteile Pinouts:

ATmega88/168/328:


Dram 256x4 / Einige DRAM's laufen nicht mit3,3V, aber mit etwas hoeherer Spannung(3,6-3.8V):


SD Karte:



Eagle Schematic + Layout: avrcpm eagle.zip


Aus Diskussionen im Mikrocontroller Forum wurde von Prof. Dr.-Ing. habil. Joerg Grabow eine erweiterte Platine (USB, FT232RL) entworfen:
avrcp_m.tar.gz

 


Update

Hier der aktuelle Entwicklungstand der Software: avrcpm_upd.zip

* Warmstart (behoben im Bios; in den 2 diskimages enthalten)

* 8080 Opcodes fehlerbereinigt (MBASIC l?uft jetzt!)

* Unterstuetzung fuer ATmega8, 88, 168

* 2 Diskimages mit neuem Bios enthalten

Achtung: 2 Leitungen sind zu tauschen (Beschleunigung DRAM Zugriffe):

Pin 24 - PC1 - /WE

Pin 27 - PC4 - IO3

 


Update 2

Hier der neueste Stand (2010-08-01): avrcpm_upd2.zip

* Es werden jetzt bis zu 4 Partitionen (Typ: CP/M = 52) als Laufwerke A:-D: eingebunden

* 3 Diskimages enthalten (Basis, Spiele, BDS C-Compiler)

Ich habe bisher noch keinen direkten Weg gefunden, diese Partitionen unter Windows zu erstellen und zu befuellen. Mit einer Linux-Live-CD geht das aber z.B mit cfdisk und dann mit z.B dd if=diskimage of=/dev/sdh4 bs=512 etc.

Inhaltsverzeichnis der 3 Diskimages:


Hier ein paar Bilder der Platine mit MicroVGA als Terminal:

 

Erreichte Geschwindigkeiten durch Optimierungen und Uebertakten:

 

-------------------------------------------------------
           |  Peters  |        Leos        |
           | Schleife |      Schleife      |
-----------+----------+--------------------+-----------
AVR   MHz  | Zeit [s] | Zeit [s]   "Speed" | HW    SW   
-----------+----------+---------+----------+-----------
 88   20     35.999                           original hardware
-------------------------------------------------------
 88   20     21.380                           4     (unoptimized code)
 168  24     17.620                           4     (unoptimized code)
 88   25     16.871                           4     (unoptimized code)
 8    20     12.180                           4     0
 8    20     12.453      3.488     827 KHz    4     1
 8    20     11.500      3.488     827 KHz    4     3
 88   30      7.573                           4     ?
-------------------------------------------------------
 8    20      7.599      2.039    1380 KHz    8     2
 8    20      6.680      2.039    1380 KHz    8     3
-------------------------------------------------------
 8    20      6.418      1.958    1470 KHz    8     4
-------------------------------------------------------
 *** Hochrechnung ***
 88   40      5.6                ~1600 KHz    4     ?
 X8   30      4.3                ~1800 KHz    8
 X8   40      3.25               ~2000 KHz    8
"HW 4" ist die jetzt aktuelle 4-bit Verdrahtung und "HW 8" die bald neu kommende 8-Bit Dram-Access Variante.


Update: 25.03.2011


Ich habe bei ebay einen USB-TTL Adapter gesehen, der nicht nur eine
serielle TTL/3V Schnittstelle über USB enthält, sondern auch 3,3V und 5V zur Versorgung bereitstellt.
Ideal für dieses Projekt.

Bild des Adapters:


Pinout:


Lochrasteraufbau mit Adapter:





Update: 11.04.2011 - Achtung neue Tools; BIOS inkompatibel zu vorherigen Versionen!


FAT16 Unterstützung: avrcpm_fat16.zip

Damit entfällt das lästige Partitionieren und füllen das Partitionen mittels dd.
Die Diskimages werden einfach ins Wurzelverzeichnis eines mit FAT16 formattierten SD Karte in der Form:
CPMDSK_A.DSK
kopiert. _A ist der Laufwerksbuchstabe: A,B,C,D..
Im ZIP Archive ist der Quelltext für den AVR. Hex Datei für m168, 30MHz, 4-bit Dram.
Da in den Diskimages das Bios, Bdos, CCP (CP/M System 2.2) schon enthalten ist, reicht es den AVR je nach AVR Typ und Quarz passen zu flashen und mind. ein A Diskimage auf die SD Karte zu kopieren.
Partitionen werden nach wie vor unterstützt.
Die Disk Images müssen mind. so groß wie in diskdefs definiert sein, sonst
gibt es beim schreiben Probleme, weil der Treiber die Datei nicht vergrößert!
Das wird in make_disk mittels dd ibs=256k conv=sync sicher gestellt.

Aliados wird genutzt, um das Bios+ipl zu assemblieren (CP/M Emulation die M80+L80 nutzen). Außerdem enthält das Verzeichnis auch die cpmtools um
die Diskimages zu bilden (make_disk.bat)

avrcpm_aliados.zip

BIOS assemblieren:
Im aliados Verzeichnis ist bios.asm+ipl.asm, m80+l80 zum assemblieren und make_bios.bat zum übersetzen von ipl+bios:
aliados m80.com =bios.mac
aliados l80.com bios.rel,bios.bin/n/e
aliados m80.com =ipl.mac
aliados l80.com ipl.rel,ipl.bin/n/e

CPM.BIN bilden:
make_cpm.bat zum bilden von cpm.bin (nutzt dd.exe, was auch enthalten ist)
dd conv=sync bs=128 count=1 if=ipl.bin > cpm.bin
dd conv=sync bs=128 count=44 if=CPM.SYS >> cpm.bin
dd conv=sync bs=128 count=7 if=bios.bin >> cpm.bin

Erstellen von Diskimages:
Das Resultat cpm.bin wird dann zum bilden von diskimages mit den cpmtools verwendet:
mkfs.cpm.exe -f avrcpm -b cpm.bin -L test CPMDSK_A.IMG

und füllen mit z.B:
cpmcp -f avrcpm CPMDSK_A.IMG cpmdsk/MBASIC.COM 0:MBASIC.COM



Neue Platinenversion: CP/M Stick
Eagle Dateien: avr-cpm-stick.zip

Bestueckung


Fertige Platine mit CP2102 TTL-USB Wandler


Verbindungen TTL-Wandler - Platine (Top):

X
- GND
- Rx
- Tx
X
+ 3.3V

Einschaltmeldung mit 'Benchmark-Loop' (4-bit = 5,293)



Update April 2012
Hurra! Endlich läuft auch Z80 Emulation und z.B Tubo Pascal. Dank an Leo C. aus dem mikrocontroller Forum.

avpcpm_upd3.zip - Aktuelle AVR Firmware +
avrcpm_disks.zip - diskimages


Update Oktober 2012
Habe mich nochmal entschlossen neue Platinen zu bestellen.
Diesmal in blau mit schwarzem Bestueckungsaufdruck:


Als SD Slot passen bei allen Varianten:
SCDA5A0201
SCDA6A0101 (gab es bei mouser.com)

Geeignete Dram's:
KM44C256
LC324256
M514256
HY534256
V53C104P10L (nur 20MHz und 2 Waitstates!)


Da es zunehmend schwierig wird, die SD Slots zu bekommen, hier ein Umbau mit 'normaleren' SD Slots.
Typ: 115-101-07 Attend 451147 von Pollin

Top:

Bottom:

SD Slot mit Sekundenkleber fixieren.

Folgende Verbindungen herstellen (+3,3V + GND am Kondensator abgreifen):

Slot - AVR PIN

8
7 - 18

6
5 - 19
4 - +3,3V
3 - GND
2 - 17
1 - 16
9



Neue Möglichkeit das CPM.BIN innerhalb Altair SIMH Emulator zu erstellen:

1. AltairSIMH.zip entpacken
2. AltairAll.bat starten
3. auf Laufwerk I: wechseln
4. mit "do avrcpm.sub" das Übersetzen und Linken starten
5. Im Verzeichnis von Altair steht die fertige CPM.BIN

Enthalten ist auch eine (fast) Leerdisk zum Erstellen eigener Images:

1. neu.dsk im altairSIMH als HD anlegen; zsdos editieren:

d tracks[0-7] 254
attach dsk zsdos.dsk
;attach hdsk i.dsk
attach hdsk neu.dsk
set cpu 64k
set cpu itrap
set cpu z80
set cpu altairrom
set cpu nonbanked
reset cpu
boot dsk

2. HD mit Programmen füllen
3. SIMH beenden
4. neu.dsk in CPMDSK_X.IMG umbenennen; (X) ist der Laufwerksbuchstabe deiner HD
5. auf SD-Card kopieren

Hier noch ein ZIP mit Diskimages: cpmdisk.zip
256k A: Bootlaufwerk
8M B: Verschiedenes in User 0/1/2/3/4/5/6
8M C: Turbo Pascal 3


Hier noch ein ZIP mit MuMATH Package (bisher nur im Altair Emu getestet) und eine deutsche PDF Anleitung dazu.

From:http://www.retroarchive.org/cpm/misc/misc.htm

This package was originally issued for the OSBORNE 1.
The MUSIMP.COM file contains my patch to make it useable
under generic cp/m.  The original osborne version of this
executable is enclosed as MUSIMP.OBJ

The CLES?.* files are a tutorial in using the calculation
parts of MUMATH.  The PLES?.* comprise a programming tutorial
for MUSIMP.

rwd
06/09/98
---
Schnellstart
Zum Kennenlernen von Musimp:
Starte Musimp am CP/M prompt: MUSIMP ALL
Setze „PAUSE“ für die nachfolgende Demo durch folgende Eingabe am “?“ Prompt: PAUSE:100;
(Altair Emulator: PAUSE:1000;)
Starte die Demo durch folgende Eingabe am “?“ Prompt: RDS(DEMO,ALL);
Beende Musimp


Rote Edition mit SMD Hühnerfutter anstatt bedrahteten Bauteilen und 25MHz:

Minimale Bestückung bei Nutzung eines USB TTL Dongles:




Marcel A. aus dem Mikrocontroller Forum hat die minimale Bestückung inkl. leichter erhältlichen SD Slot in einen neue Platinen gegossen.

Link:
http://www.retro-compi.de/index.php/cpm-z80-projekte/cpm-stick/cpmstick-hardware

Bild:


RAR-Archiv:
avr_cpm.rar