http://www.mikrocontroller.net/articles/AVR_CP/M
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)
s.a. http://www.retro-compi.de/index.php/avrcpm-projekte/cpm-stick
Erfinder dieses System ist © 2010 Sprite_tm (Jeroen Domburg) http://spritesmods.com/?art=avrcpm
Von ihm stammen die grundlegende Minimal-Schaltung, die 8080-CPU-Emulation sowie viele tolle Ideen in der Software (z.B. die DRAM-Ansteuerung und die Nutzung von Ports zur Kommunikation mit dem AVR). 1)
2010-2013 wurden im mikrocontroller.net vor allem die komplette Z80-Emulation, die Verwendung des FAT16-Filesystems anstelle 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!
die ehemals einzelnen Disketten stecken alle im 8MB-Image CPMDSK_D.IMG als USER:
0 ASM, System 1 SPL 2 TURBO 3 Spiele 4 WS 5 MP 6 ALGOL 7 FORTRAN 8 PLI 9 C 10 HITECHC 11 MUMATH 12 AZTEC C
Den Sourcecode vom mikrocontroller.net findet man hier: http://www.mikrocontroller.net/svnbrowser/avr-cp-m/avrcpm/?sortdir=down
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.
Hardwarevariante 3, als 8-Bit Version in USB-Stick Form ausgelegt
Version 3.1 vom Marcel A. (dl1ekm), Datum: 27.12.2014
http://www.retro-compi.de/index.php/avrcpm-projekte/cpm-stick
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. I. Allg. müssen RxD und TxD über Kreuz verbunden 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 \-------/
Es werden verschiedene Abbildformate unterstützt:
für die CPMTOOLS sind folgende diskdefs für die beiden üblichen Formate (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
Es gibt eine Reihe Portadressen, über die die virtuelle CPU mit der AVR-Umgebung kommuniziert. s. config.inc, Z80-seitig virt_ports.asm
Einschaltvorgang
Nach dem Reset wird die „Hardware“ initialisiert (RAM-Test, Suche der Laufwerke, …) Abschließend wird der erste Sektor des ersten Laufwerks gelesen. In diesem Sektor befindet sich ein 8080-Programm namens IPL (initial program loader, Urlader). Dieses Programm lädt CCP+BDOS+BIOS vom Laufwerk und startet 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)
System auf Spur 0 schreiben:
A>power A0=load cpm.bin 4000 Last Address:59FFH 52 sectors A0=write 0 1 4000 52