Dies ist eine alte Version des Dokuments!
AVRCPM
Ein kleines CP/M-System mit minimaler Hardware (AVR-CPU + Speicher). Das CP/M-System kommuniziert über eine serielle Schnittstelle mit einem Terminal (z.B. einem PC)
http://www.mikrocontroller.net/articles/AVR_CP/M
Erfinder dieses System ist © 2010 Sprite_tm http://spritesmods.com/?art=avrcpm
Von ihm stammen die grundlegende Schaltung und die 8080-CPU-Emulation sowie viele tolle Ideen in der Software.
2010-2013 wurden im mikrocontroller.net vor allem die komplette Z80-Emulation, die Verwendung des FAT16-Filesystems anatelle spezieller CP/M-Partitionen und viele Verbesserungen in der Software und auch in der Hardware vorgenommen, die zu einem ca. fünffachen Tempo gegenüber der ursprünglichen Variante führten!
Bedienung
Die SD-Karte wird mit FAT16 formatiert. Auf der SD-Karte müssen Images als „Disketten“-Abbilder abgelegt sein (Name CPMDSK_x.IMG).
Der Stick wird mit einem USB-Port des PCs verbunden. Danach sollte der Treiber (siehe unten) für den USB2TTL-Chip installiert werden – anschließend steht ein weiterer COM-Port zur Verfügung. Nun ist ein Terminalprogramm (z.B. Hyperterminal, Putty oder TeraTerm) zu starten, der Port auszuwählen und eine Übertragsrate von 115200,N,8,1 einzutragen. Nach einem Reset (Taster auf Platine) erscheint dann die Startmeldung.
Aufbau
Hardwarevariante 3, als 8-Bit Version in USB-Stick Form ausgelegt
Version 3.1 vom Marcel A. (dl1ekm), Datum: 27.12.2014
http://www.mikrocontroller.net/topic/177481?page=4#3941030
Die beiden benötigten 256k x 4bit-DRAMs habe ich von einer alten ISA-VGA-Grafikkarte abgelötet.
Der AVR ATMEGA328P wird mit folgenden Aufruf programmiert:
avrdude -c usbasp -p m328p -U flash:w:avrcpm.hex avrdude -p m328p -c usbasp -U lfuse:w:0xf7:m -U hfuse:w:0xdf:m
Die SD-Karte wird mit FAT16 formatiert. Auf der SD-Karte werden die Dateien CPMDSK_A.IMG, CPMDSK_B.IMG, … gespeichert. Diese Dateien („Disketten“-Abbilder) sind die Laufwerke unter CP/M.
mein Adapter
Es ist zu beachten, dass bei den „China“-USB/Seriell-Adaptern die Beschriftung für TX und RX nicht immer eindeutig ist. Bei machen Adaptern muss das vertauscht werden.
USBTTL CP/M-Stick 5V n.c. n.c. 5V 3.3V gelb --------- ------- braun GND GND braun --------- ------- rot RX RxD orange ---------------------- orange TX TxD rot --------- ------- gelb 3.3V
Disketten-Abbilder
Es werden verschiedene Abbildformate unterstützt:
- YAZE Format: alle Varianten
DPB wird aus Disk ausgelesen und übernommen - simhd 8MB Format: simh altair 8800 hard disk Format, 8 MByte Disk, s. dpbdat_simhd
- MyZ80 8MB Format: 8192KB + 256 Byte Header, s. dpbdat_myz80
- reine 256K-Images, s. dpbdat_avrcpm
für die CPMTOOLS sind folgende diskdefs für die übliche Format (256K und 8MB) geeignet.
# AVR CP/M diskdef avr256 seclen 128 tracks 77 sectrk 26 blocksize 1024 maxdir 64 skew 1 boottrk 2 os p2dos end # SIMH AltairZ80 Harddisk # AVR CP/M diskdef avr8M seclen 128 tracks 2048 sectrk 32 blocksize 4096 maxdir 1024 skew 0 boottrk 6 os 2.2 end
simulierte Hardware
- ~ 3 MHz Z80 CPU
- ca. 64K RAM, 62K TPA !!
- Kommunikation über serielle Verbindung mit einem Terminal, 115200 Baud
- ggf. 192K-RAM-Disk oder Banking für CP/M 3 möglich
- 16 virtuelle Laufwerke
Es gibt eine Reihe Portadressen, über die die virtuelle CP/U mit der AVR-Umgebung kommuniziert. s. config.inc, Z80-seitig virt_ports.asm
BIOS
CP/M
bei Zugriff auf falsches Laufwerk - keine Chance, auf anderes LW zu kommen?
Turbo Pascal TINST vt100 Umstellung highlight von invers (ESC [ 7 m) auf fett (ESC [ 1 m)