Forum: Mikrocontroller und Digitale Elektronik CP/M auf ATmega88


von Joe G. (feinmechaniker) Benutzerseite


Angehängte Dateien:

Lesenswert?

Ich bin die Tage auf ein nettes Tool von Josh Bensadon gestoßen, den 
„CP/M Disk Explorer“. Mit diesem können unter Windows CP/M Images 
gelesen oder geschrieben/erzeugt werden. Weiterhin enthält er ein Tool, 
um gleich den DPB Block zu erzeugen oder auch eigene Formate zu 
kreieren. Für unsere Formate, AVRCPM und SIMHD habe ich mal in die 
Diskdefinitionen eingetragen, um die Images zu bearbeiten. Das Tool 
verzeiht jedoch keine Fehler. So muss das AVRCPM-Format exakt 256.256 
Byte lang sein, ansonsten gibt’s „mecker“. In der ZIP-Datei gibt es als 
Laufwerk G gleich die aktuellen BIOS und CP/M Quellen.

von Martin H. (therealmartin)


Lesenswert?

Über Weihnachten ist mir aufgefallen, dass der Busy Test in der 
I2C_GPIO_out Routine NACH Ausgabe des Zeichens erfolgt. Das funktioniert 
auch, d.h. die Routine wartet sauber, bis der Drucker das Zeichen 
ausgegeben hat.

Wenn der Druckvorgang allerdings schon ohne Papier oder Off-Line 
startet, wird das erste Datenbyte ins Nirvana ausgegeben und danach 
gewartet.

Es wäre also besser die Testschleife
1
GPIO_busy:
2
  in  a,(I2C_GPIO_DATB)
3
  bit  0,a  ; test bit 0
4
  jp  nz,GPIO_busy  ; wait while B[0] = 1
an den Anfang unmittelbar vor dem laden des Zeichens von (C) nach (A) zu 
verschieben. Ist nur eine Kleinigkeit.

Der CPM-Disk-Explorer klingt ganz interessant - werde ich mal 
ausprobieren.
Bislang habe ich mit dem cpmtools auf der Kommandozeile gearbeitet, 
funktioniert gut, man muss aber halt immer die Syntax im Kopf haben oder 
Skripte schreiben.

Was ich aber noch mehr vermisse, sind Tools um die CP/M typischen 
Archive wie .LBR oder komprimierte Dateien (SQU, ARC, ZOO, ...) direkt 
unter Windows zu öffnen. Wenn ich so durch diverse CP/M Sammlungen gehe, 
wimmelt es da ja von solchen Dateien.
Dazu kenne ich nur MS-DOS Tools, von denen es leider meistens keinen 
Quellcode gibt.

Gibt es da eigentlich etwas, das wie ein Datei-Explorer unter Windows 
arbeitet?

Ich wünschte mir da so einen Allesfresser, habe ihn aber nicht zu 
Weihnachten bekommen...

Ich hatte schon mal angefangen, mir einen LBR-Leser und erste DeARCer 
und UnSQUeezer zu schreiben, das ist aber recht mühsam, wegen der vielen 
Kompressionsformate und Optionen.

Die klassischen ZIP Dateien kann man ja gut mit diversen Tools 
inspizieren, aber für die älteren gibt es wohl keine "modernen" Tools 
mehr?

von Joe G. (feinmechaniker) Benutzerseite


Lesenswert?

Martin H. schrieb:
> Es wäre also besser die Testschleife...

Das scheint mir eine sinvolle Änderung :-)

> Gibt es da eigentlich etwas, das wie ein Datei-Explorer unter Windows
> arbeitet?

Ja, der TotalCommander mit einer entsprechenden Erweiterung [1]. Diese 
Erweiterung bindet quasi die CP/M Tools in den TC ein. Über Skripte [2] 
könnten nun die unterschiedlichen Packer für CP/M integriert werden.

[1] https://hc-ddr.hucki.net/wiki/doku.php/cpm/disketten_xp2
[2] http://totalcmd.net/plugring/ScriptWFX.html

von Martin H. (therealmartin)


Lesenswert?

In den letzten Tagen habe ich noch eine RTC mit dem PCF 8563T 
implementiert, da ich kein fertiges breakout board mit dem 8583 bekommen 
habe.
Der 8563 ist ähnlich aber nicht gleich wie der 8583.
Der chip zählt Jahre von 0...99. Ich habe mich für 1970 als Basis 
entschieden und addiere bzw. subtrahiere dann 1970 um auf die aktuelle 
Jahreszahl zu kommen. Damit kann ich also 1970 bis 2069 abdecken, was 
für meine Lebenserwartung ausreichend ist. Ein RAM hat der chip nicht, 
wird auch nicht gebraucht.

Ich habe das im Augenblick noch mit #if I2C_PCF8563 wie bei den anderen 
I2C Devices in meinem code stehen, werde aber noch die bisherige 
Variante für den 8583 ebenso klammern. Ich denke I2C_SUPPORT sollte 
nicht unbedingt automatisch die RTC einbinden - das ist ja auch nur eine 
Option, zumindest bei den älteren AVR-CPM-Stick boards.

rtc_get funktioniert (z.B. beim booten), wo rtc_set verwendet wird, habe 
ich noch nicht herausgefunden...

Martin

von Joe G. (feinmechaniker) Benutzerseite


Angehängte Dateien:

Lesenswert?

Ich denke es wird Zeit, mal eine Teildokumentation zu den I2C 
Komponenten nachzuliefern. Schließlich soll es ja keine Zweimannshow 
bleiben ;-) Im Anhang also die derzeit vom AVR-CP/M unterstützen I2C 
Komponenten mit ihrer Beschaltung. Deine RTC würde ich noch mit 
aufnehmen.

von Martin H. (therealmartin)


Lesenswert?

Ah sehr schön übersichtlich - gut auch, dass Du konsequent die 
sogenannten "7-bit" I2C Adressen angegeben hast - im Quellcode habe ich 
da auch immer so angepasst (beim PCF8583 stehen noch die "8-bit" 
Adressen drin, die sollten gelegentlich noch in (ADDR<<1) geändert 
werden, damit alles einheitlich ist).

Der 8563 ist fast gleich wie der 8583, hat aber eine unveränderliche I2C 
Adresse von 0x51.

von Joe G. (feinmechaniker) Benutzerseite


Angehängte Dateien:

Lesenswert?

Hat jemand Interesse als Beta-Tester mitzuwirken?

Geplant ist ein Bausatz für ein AVR-CP/M System mit heute verfügbaren 
Bauelementen. Dazu wurde der bisherige DRAM durch eine Schaltung mit 
einem SRAM ersetzt und getestet [1]. Die Software bleibt kompatibel. Um 
die Nachbausicherheit zu erhöhen und möglichst auch Anfängern den Aufbau 
zu erleichtern, wurde weitgehend auf SMD-Bauelemente verzichtet. Der 
Aufbau und die Inbetriebnahme soll dabei Schritt für Schritt, anhand 
einer Baumappe erfolgen. Dazu wurde die USB-Schnittstelle als 
Debug-Schnittstelle implementiert. Die folgenden Funktionen sind 
realisiert:

1 x RS232 (CP/M)
1 x LPT-Port (CP/M)
1 x PS2 Keyboard (VT100-Terminal)
1 x VGA (VT100 Terminal)
1 x RTC
1 x 8-Bit GPIO (3.3V)
1 x I2C-Bus (3.3V und 5V)
1 x SD-Card
1 x USB-Port

Der USB-Port kann über DIP-Switch zur Inbetriebnahme wahlweise auf das 
AVR-CP/M oder das VT100-Terminal geschaltet werden. Im Normalmoduls ist 
dann das CP/M mit dem VT100 verbunden. Weiterhin kann zu Testzwecken der 
RS232-Port auf die USB-Schnittstelle umgelenkt werden.

Gesucht sind zwei Beta-Tester (Aufbauerfahrung sollte vorhanden sein), 
die schrittweise nach Baumappe, das System aufbauen und ihren Aufbau 
bzw. Fehler dokumentieren. Weiterhin soll dabei gleichzeitig der 
Reichelt Warenkorb aktualisiert werden. Die gleiche Vorgehensweise gilt 
für die Softwareimplementierung. Ziel der ganzen Aktion ist ein freier 
robuster Bausatz für das AVR CP/M, ganz ohne kommerzielle Interessen.

Beide Beta-Tester würden von mir je eine Leiterplatte (ohne Bauelemente) 
zur Verfügung gestellt bekommen. Interessenten melden sich bitte einfach 
per PN.

[1] Beitrag "Re: CP/M auf ATmega88"

: Bearbeitet durch User
von Joachim W. (Gast)


Lesenswert?

Kannst du bitte den Schaltplan posten?

von Joachim W. (Gast)


Lesenswert?

Alles auf einer Seite?

von Joe G. (feinmechaniker) Benutzerseite


Angehängte Dateien:

Lesenswert?

Joachim W. schrieb:
> Kannst du bitte den Schaltplan posten?

Bitteschön. Die Schaltungen sind alle einzeln und zum Teil auch 
innerhalb des CP/M, aber noch nicht in diesem Layout getestet.

> Alles auf einer Seite?
Ja, alle Bauelemente befinden sich auf der Bestückungsseite.

von Joachim W. (Gast)


Lesenswert?

Joe G. schrieb:
> Joachim W. schrieb:
>> Kannst du bitte den Schaltplan posten?
>
> Bitteschön. Die Schaltungen sind alle einzeln und zum Teil auch
> innerhalb des CP/M, aber noch nicht in diesem Layout getestet.
>
>> Alles auf einer Seite?
> Ja, alle Bauelemente befinden sich auf der Bestückungsseite.

Vielen Dank :)

von S. R. (svenska)


Angehängte Dateien:

Lesenswert?

Mal so als Frage... wäre für eine Neuentwicklung mit SRAM vielleicht ein 
Atmega8515 sinnvoll (wegen XMEM)?

Vor längerer Zeit habe ich für den einen i8080-Emulator umgesetzt. Der 
braucht 3 KB Flash, braucht selbst keinen RAM und besteht die Testsuite. 
Im Gegensatz zum AVR CP/M (der als Vorlage diente), habe ich das aber 
für avr-as geschrieben, weil mir C mehr Spaß macht als Assembler.

Den Code habe ich mal angehängt. Weil avr-as keine halben Pointer mag, 
generiert das Perlscript aus i8080.o eine i8080_tables.S, die man zum 
Projekt dazulinken muss.

Der i8080 wird mit emu_start() aufgerufen und ruft folgende Funktionen 
auf:
1
// wenn EMULATE_IO aktiviert:
2
uint8_t emu_io_read(uint8_t port);
3
void    emu_io_write(uint8_t port, uint8_t data);
4
5
// wenn BDOS aktiviert (für CONOUT und PRINTSTR):
6
void    uart_putc_raw(uint8_t);
7
8
// wenn TRACE aktiviert:
9
int     printf_P(const char *fmt, ...);

Mit MEMBASE lässt sich die Basisadresse des i8080-Adressraums im 
AVR-Adressraum in 256 Byte-Schritten einstellen. Die CPU startet bei 
0x0000 oder bei aktiviertem BDOS bei 0x0100.

Der i8080 lebt im und hat vollen Zugriff auf den AVR-Adressraum, 
inklusive der SFRs und CPU-Register. Auf einem Atmega8515 ließe sich 
also maximal ein 63 KB CP/M bauen (mein Testsystem hat aber nur 32 KB), 
dafür kann man den Emulator auch direkt im internen RAM laufen lassen.

Die Performance habe ich nicht gemessen, aber wenn ich mich beim 
Taktezählen nicht vertan habe, braucht ein NOP nur 32 Takte. Viel 
Optimierpotential sehe ich da nicht.

von Joe G. (feinmechaniker) Benutzerseite


Lesenswert?

S. R. schrieb:
> Mal so als Frage... wäre für eine Neuentwicklung mit SRAM vielleicht ein
> Atmega8515 sinnvoll (wegen XMEM)?

Es ist ja keine Neuentwicklung, sondern ich habe einfach die Baugruppen 
und Software, welche so nach und nach entstanden sind, auf eine 
Leiterplatte gebracht. Der Wechsel von DRAM auf SRAM ist nur meinem 
persönlichen Spieltrieb geschuldet ;-) interessanter ist die Frage nach 
der Sinnhaftigkeit eines solchen Projektes.

Stein des Anstoßes waren Studenten des 7. Semesters, welche wahllos 5V 
Systeme mit 3.3V Systemen zusammenschalten, keinen Bus debuggen können, 
weder SMD noch THT ordentlich löten können, nur rudimentär programmieren 
können, keine systematische Fehlersuche durchführen können… Die 
Aufzählung kann noch beliebig erweitert werden.
Zukünftig sollen interessierte Studenten des ersten Semesters einen 
Bausatz in die Hand gedrückt bekommen und ihn unter fachkundiger 
Begleitung in Betrieb nehmen. Mal sehen, was sich dann daraus 
entwickelt.

von Peter S. (petersieg)


Lesenswert?

Wirklich schön, wie sich das alles so weiter entwickelt hat!
Insbesondere die I2c Unterstützung.
Kann auch sein, das hier alles inkl VT100 Terminal genau die richtige 
Lösung ist für den skizzierten Einsatzzweck.
Aber ich bin kein Freund von dem VT100 mit auf der Platine. Dazu kann 
man besser jedes Terminal Programm und USB-TTL Schnittstelle nehmen - 
ist aber nur meine Meinung. Ich mag halt keine Propeller Chip da drauf, 
nur fürs Terminal ;-)

Peter

von Martin H. (therealmartin)


Lesenswert?

Holla, das ist ja schon ein richtiger Großrechner mit allem Drum und 
Dran!
Wenn man das noch mit einer kleinen Tastatur (gibt es so etwas wie die 
Cherry Kassentastaturen G84-4100 auch mit PS/2?) und einem kleinen TFT 
Display kombiniert, könnte man einen schicken kleinen CP/M Laptop bauen. 
Onkel Osborne lässt grüßen.

Zum VT100 Emulator habe ich noch eine Idee/Frage: Beim Programmieren 
kommt sehr schnell der Wunsch nach Grafik auf. CP/M bietet da per 
Definition nichts (GSX ist etwas hoch gegriffen und schluckt Speicher), 
aber man kann einfache, aber durchaus ansprechende Vektorgrafik leicht 
mit jeder Programmiersprache realisieren, wenn das Terminal passende 
Escapesequenzen unterstützt.
Wenn ich z.B. Teraterm als Soft-Terminal verwende, versteht dies auch 
Tektronix Befehle und macht sogar ein extra Grafikfenster auf. Dann kann 
ich von meinem AVR-Stick Text und Grafik sogar "gleichzeitig" ausgeben. 
Ich mag Tektronix, aber wenn es moderner sein soll, wären auch Regis 
(DEC) oder HPGL (Plotterbefehle in ASCII) mögliche Alternativprotokolle.

Deshalb die Frage: kann der Propeller-Code erweitert werden, sodass er 
auch einen Grafikbildschirm (als Alternative zum Textmodus) anzeigen 
könnte? Oder reicht da der Speicher nicht für z.B. 640x400 monochrome 
Pixel (=32 KB).

Eventuell wäre da eine separate, optional andockbare Terminalplatine 
sinnvoll.

: Bearbeitet durch User
von Apollo M. (Firma: @home) (majortom)


Lesenswert?

hi, frage ... warum wurde der ram nicht via spi interface integriert, 
wäre auch nicht langsamer als parallel und mit addr latch und so?


mt

von Hans-Werner Schütz (Gast)


Lesenswert?

Hallo Joe,
ich finde die Idee richtig gut... und ich wäre auch wieder dabei.
Gruß
Hans-Werner

von Joe G. (feinmechaniker) Benutzerseite


Lesenswert?

Apollo M. schrieb:
> hi, frage ... warum wurde der ram nicht via spi interface integriert,
> wäre auch nicht langsamer als parallel und mit addr latch und so?

Schau mal hier:
Beitrag "Re: CP/M auf ATmega88"

Martin H. schrieb:
> Zum VT100 Emulator habe ich noch eine Idee/Frage:

Ich schreib morgen mal was dazu...

von Matti (Gast)


Lesenswert?

Apollo M. schrieb:

> hi, frage ... warum wurde der ram nicht via spi interface integriert,
> wäre auch nicht langsamer als parallel und mit addr latch und so?

Kannst du das einmal vorrechnen, wie viel Zeit nach der einen bzw. nach 
der anderen Anbindung gebraucht wird.

von Joe G. (feinmechaniker) Benutzerseite


Lesenswert?

Martin H. schrieb:
> Zum VT100 Emulator habe ich noch eine Idee/Frage:

Die RAM-Größe des Propellers beträgt nur 32KB. Für eine Pixelgrafik also 
zu wenig. Ich denke, eine TEK4010 Emulation wird nicht möglich sein. Um 
dennoch mit unterschiedlichen Zeichensätzen und Grafikelementen zu 
arbeiten, können verschiedene Character Sets [1] umgeschaltet werden. 
Für eine Weiterentwicklung würde ich den Propeller verlassen und ein 
anderes Konzept favorisieren (RaspberryPI / Bare Metal [2]). Zumal HDMI 
und USB bzw. Bluetooth-Tastaturen heute üblicher als VGA und PS2 sind. 
Das ist jedoch eine andere Baustelle ;-)


[1] Beitrag "Re: VT100-Terminal (VGA+PS2)"
[2] https://ultibo.org/

von Joe G. (feinmechaniker) Benutzerseite


Angehängte Dateien:

Lesenswert?

Die ersten Platinensätze sind eingetroffen. Ich baue nun ein Startmuster 
auf, um jeden einzelnen Inbetriebnahmeschritt zu dokumentieren bzw. 
Fehler auszumerzen. Im nächsten Schritt dürfen dann die Betatester ran 
;-)

von Horst S. (h3aau)


Lesenswert?

moin,
spiele gerade RunCPM auf einem TeenSy3.6 rum.
echt beeindruckend.
beim 180MHz CPU-takt geht da schon einiges los.
gab es hier nicht mal einen benchmark um das ganze mal etws einordnen zu 
können?
als terminal habe ich hier tera-term als vt100.
laufwerke sind auf einer sd-card.

von Joe G. (feinmechaniker) Benutzerseite


Lesenswert?

Horst S. schrieb:
> gab es hier nicht mal einen benchmark um das ganze mal etws einordnen zu
> können?

Ja, wie ein Z80 mit etwa 3.2 MHz.

von Horst S. (h3aau)


Lesenswert?

moin,
wo gibt es den test?
würde den gern mal bei mir laufen lassen.

von Joe G. (feinmechaniker) Benutzerseite


Lesenswert?

Wir haben immer ein eigenes Testtool (ACT) laufen lassen. Dieses findest 
du hier: 
https://www.mikrocontroller.net/svnbrowser/avr-cp-m/avrcpm/trunk/cpm/utils/

von Joe G. (feinmechaniker) Benutzerseite


Angehängte Dateien:

Lesenswert?

Der erste Schritt ist getan. Das System läuft und das Layout bzw. die 
Leiterplatte sind (fast) fehlerfrei. An zwei Stellen ist der 
Bestückungsaufdruck um 180 Grad gedreht. Die Aufbaudokumentation wird an 
diesem WE auch fertig werden, so dass Interessenten loslegen können. Da 
der LP-Hersteller überliefert hat, kann ich in Summe noch 5 Platinen zum 
Testen abgeben. Hans-Werner und Marcel sind schon berücksichtigt;-) Die 
Dokumente zum Aufbau und die komplette Software wird vollständig in 
Github [1] abgelegt.

[1] https://github.com/Feinmechaniker/AVRCPM

von Leo C. (rapid)


Lesenswert?


von Horst S. (h3aau)


Lesenswert?

Leo C. schrieb:
> Horst S. schrieb:
>> wo gibt es den test?
>
> Beitrag "Re: CP/M auf ATmega88"

danke, aber wie bekomme ich das image auseinander?

von Leo C. (rapid)


Lesenswert?

Horst S. schrieb:
> danke, aber wie bekomme ich das image auseinander?

Mit den CP/M tools? Die Images sind (wie meistens) im simhd Format.

Aber warum überhaupt? Warum nicht einfach auf eine SD-Karte kopieren?

von Joe G. (feinmechaniker) Benutzerseite


Angehängte Dateien:

Lesenswert?

Ich habe gerade mal beide Benchmarks auf dem neuen System 
(abgeschalteter Refreshzyklus) laufen lassen. Mit dem Hi-Tech C liegt 
der Test recht stabil bei 27 bis 28 Sekunden.


                 DHRYSTONE 1.1 BENCHMARK SUMMARY
                     SORTED BY PERFORMANCE

 MANUF      MODEL      PROC     CLOCK NOREG   REG OS,COMPILER,NOTES
 -----      -----      ----     ----- -----   --- -----------------
 Commodore  64         6510      1.00    19    34 C64 ROM ,C Power 2.9 
trim,
 Apple      IIe        65C02     1.02    37    37 DOS 3.3,Aztec CII 
v1.05i ,
 Home Brew             Z80       4.00    53    53 CPM-80 ,Hisoft C++  ,
 Commodore  128        8502      2.00    43    68 C128 ROM ,C Power 128 
trim,
 Home Brew             Z80       2.50    91    91 CPM-80 2.2,Aztec CII 
1.05g,
 Cromemco   Z2         Z80       4.00   127   127 Cromix 11.26,ccc  ,
 NCR        Decision M 8088      4.77   166   166 MS-DOS 2.11,Lattice 
2.14
*Aeternum   AVRCPM     Z80emul  ~3.     172   185 CPM-80 2.2,HI-TECH C 
V3.09
 Home Brew             8086      8.00   197   203 iRMX-86 V6,Intel C-86 
2.0
 NCR        PC4        8088      0.00   212   212 MS-DOS 2.11,Lattice 
2.14

: Bearbeitet durch User
von Joe G. (feinmechaniker) Benutzerseite


Lesenswert?

Leo C. schrieb:
> Warum nicht einfach auf eine SD-Karte kopieren?

RunCPM verwendet nur noch das FAT-Filesystem, es gibt kein Image mehr.

von Horst S. (h3aau)


Lesenswert?

TeenSy 3.6

H>drynr
Dhrystone(1.1) time for 5000 passes = 0
This machine benchmarks at 0 dhrystones/second

RunCPM Version 3.7 (CP/M 2.2 60K)

von Leo C. (rapid)


Angehängte Dateien:

Lesenswert?

Joe G. schrieb:
> RunCPM verwendet nur noch das FAT-Filesystem, es gibt kein Image mehr.

Ach ja, darum gings ja.
Aber wie man auf dem PC Dateien aus einem Image heraus oder 
hineinkopiert, wurde hier ja schon öfters beschrieben.

Horst S. schrieb:
> Dhrystone(1.1) time for 5000 passes = 0

Du mußt die Funktion time() für das RunCPM-System anpassen, oder das 
Dhrystone-Programm so kompilieren, daß Du mit einer Stoppuhr messen 
kannst. Die Anzahl Loops muß evtl. auf 50000 oder 500000 hochgesetzt 
werden. Die Anleitung dazu ist im Sourcecode "dry.c" enthalten. Im 
Anhang Benchmark und Hi Tech C Compiler ohne Image.

von David R. (retrogadgets)


Angehängte Dateien:

Lesenswert?

Martin H. schrieb:
> @ David R.
> Did you use an SD card (not SD-HC)?
> The boot messages look like the card is not recognized.
> Try with a plain old SD card (2 GB or so).

@ Martin H.
im using a samsung 4G card and toshiba 2GB FAT formatted under windows

von S. R. (svenska)


Lesenswert?

David R. schrieb:
> im using a samsung 4G card and toshiba 2GB FAT formatted under windows

Any 4G SD card is SD-HC (there are very few exceptions).

Your screenshot is surprisingly bad. Please do not capture more than 
needed (no white areas), and upload screenshots as PNG. See the rules 
listed above the response field.

Also, you seem to have other problems as well:
See the line about the C: drive, it is not shown correctly.
Try to test your board without CP/M. I think something else is fishy.

von Horst S. (h3aau)


Lesenswert?

1.8sec
find ich schon nicht schlecht.

von Joe G. (feinmechaniker) Benutzerseite


Angehängte Dateien:

Lesenswert?

Anbei ein XMODEM für das System mit I2C-UART über RDR: und PUN: Ich habe 
die Config-Datei gleich angepaßt. Damit geht das Kopieren von Datein 
zwischen CP/M und PC auch ohne Kermit recht fix.

von Martin H. (therealmartin)


Angehängte Dateien:

Lesenswert?

Hallo zusammen,

nur als Appetizer - was man so mit einem CP/M-AVR System (in diesem Fall 
der gute, alte CP/M-Stick) so machen kann.

Das MultiTel-D zeigt 80x24 Zeichen und hat eine serielle Schnittstelle 
sodass man es als Terminal benutzen kann.
Der CP/M-AVR Stick pass in den Raum für den integrierbaren Drucker - 
dann hätte ich einen kompakten, portablen CP/M Rechner ;-)

Habe nur noch nicht herausgefunden, auf welche Escape-Sequenzen es 
reagiert (CTRL-L löscht schon mal den Bildschirm).

Martin

PS: wenn die aktuelle Platine die serielle Schnittstelle für das 
Terminal auf zusätzlich herausführen würde (einfache Steckerleiste mit 
oder ohne MAX232 reicht), könnte man eventuell auch für die Puristen 
eine Alternative ohne Propeller-Chip und PS/2 mit der gleichen Platine 
aufbauen.

von Joe G. (feinmechaniker) Benutzerseite


Angehängte Dateien:

Lesenswert?

Schöner Aufbau Martin :-)

Die Bestückung des Propellers ist für das CP/M nicht zwingend notwendig 
(siehe Übersicht). Es können
1. per USB alle seriellen Schnittstellen (AVR, Propeller, RS232) 
angesprochen werden
2. direkt RS232 (9 polig D-SUB) benutzt werden
3. RS232 auf USB umgelenkt werden
Man kann also auch CON: auf CRT: legen und CRT: auf USB ;-)

Anbei noch zwei Tools um das VT100-Terminal im CP/M besser zu bedienen.
CSET.COM schaltet zwischen den beiden Character Sets um. Der erste 
Parameter ist für G0 und der zweite Parameter für G1. Möglich sind US, 
UK, DE, DE, DEC und SUP.
CSET US DE
lädt also das US Set nach G0 und DE nach G1.
Mit PSCS.COM kann sich dann der verfügbare Zeichenvorrad angezeigt 
werden.
Den Quelltext gibt’s hier [1].

[1] https://github.com/Feinmechaniker/AVRCPM

von Joe G. (feinmechaniker) Benutzerseite


Angehängte Dateien:

Lesenswert?

Zu jedem Projekt gehört auch ein ordenliches Gehäuse :-)

von Rene K. (xdraconix)


Lesenswert?

Wäre da noch eine Platine übrig? ?

von Joe G. (feinmechaniker) Benutzerseite


Lesenswert?

Rene K. schrieb:
> Wäre da noch eine Platine übrig? ?

Ja, sende mir mal eine PN mit deiner E-Mail.

Alle anderen Platinen habe ich heute, da nun alles ins Gehäuse paßt, in 
die Post gegeben. Sie sollten also nächste Woche eintreffen.

von Rene K. (xdraconix)


Lesenswert?

Joe G. schrieb:
> Rene K. schrieb:
> Wäre da noch eine Platine übrig? ?
>
> Ja, sende mir mal eine PN mit deiner E-Mail.
> Alle anderen Platinen habe ich heute, da nun alles ins Gehäuse paßt, in
> die Post gegeben. Sie sollten also nächste Woche eintreffen.

Danke, habe dir eine PN geschickt ?

von Rene K. (xdraconix)


Lesenswert?

Ich bin gerade am Bestellen der BOM. Bei dir im GIT gibt es jetzt zwei 
verschiedene Versionen der Part-List. Ich gehe davon aus das die 1.0 
aktuell ist und nicht 1.2? Platine ist ja 1.0.

Der Reichelt Warenkorb ist auf die 1.0 ausgelegt? So mal fix drüber 
geschaut... Ist da der Propeller schon dabei oder muss ich den Extern 
organisieren?

von Joe G. (feinmechaniker) Benutzerseite


Lesenswert?

Die Schaltung hat sich von der Version 1.0 auf die Version 1.2 nicht 
geändert. Die Änderungen betreffen ausschließlich Das Layout und den 
Bestückungsaufdruck (siehe Errata).

Es ist also günstig die BOM und die Partlist der Version 1.2 zu nutzen 
bis auf C21 (100n), der ist in der Version 1.0 noch ein SMD 100n 
Baugröße 0805. Speziell C17 und C18 (18p) sollten in 0603 für die V1.0 
bestückt werden. Es ist sonst eine arge Fummelei.

Der Reichelt Warenkorb ist nicht vollständig (!) Ich habe zwar versucht 
alles zu erfassen, aber eine Kontrolle ist besser. Ob man die IC’s 
sockelt, muß zudem jeder selbst entscheiden. Ich hatte s im meinem 
Muster getan, um bei Fehlern eingreifen zu können. Prinzipiell halte ich 
es beim 8-Bit GPIO (PCF8574), RS232 Treiber (MAX3222) und dem 16-Bit 
GPIO (MCP23017) für sinnvoll.

Weiterhin muss beim PCF8574 (8-Bit GPIO) darauf geachtet werden, welche 
Version man mag. Der PCF8574 hat die Adresse 0x20 und der PCF8574A die 
Adresse 0x38. Das muss bei den Einstellungen im Softwareteil des AVR 
„config.inc“ beachtet werden. Default ist der PCF8574.

Der Propeller ist nicht mit im Reicheltkorb, den gibt es dort nicht. 
Weiterhin fehlt dort die Fassung für die SD-Card (Würth 693063010911).

Ich freue mich über jede Ergänzung und Berichtigung.

von Rene K. (xdraconix)


Lesenswert?

Super, danke... Da setze ich mich heute Abend mal dran und Ergänze / 
Berichtige die Liste.

An die SD-Card Fassung komme ich durch Vitamin B zu WE. Und kann hier 
welche zum Selbstkostenpreis anbieten.

von Rene K. (xdraconix)


Lesenswert?

Platine kam heute wohlbehalten bei mir an. Mensch hätte ich gewusst das 
du quasi "Um die Ecke" kommst, hätte man sich ja auch mal treffen können 
:-D

P.s.: Ich habe nun den gesamten Thread nicht verfolgt (alle 100 Seiten). 
Aber ist es nicht möglich die VT100 Terminal Abfrage nicht auch auf ein 
Atmel der AtmegaX8 Reihe auszulagern? Die 4KB Ram dürften doch, rein 
theoretisch, für ein 80x24 Terminal völlig ausreichend sein. Gut, das 
VGA Timing müsste dann etwas "neben der Spezifikation" laufen. Aber 
dürfte machbar sein.

Was sprach da für den Propeller?

: Bearbeitet durch User
von Joe G. (feinmechaniker) Benutzerseite


Lesenswert?

Rene K. schrieb:
> Mensch hätte ich gewusst das
> du quasi "Um die Ecke" kommst, hätte man sich ja auch mal treffen können

Das können wir ja immer noch :-)

> Was sprach da für den Propeller?

Es gibt sogar eine Variante mit einem AVR als Terminal [1]. Es geht 
jedoch arg eng mit dem Timing um und viel Luft ist für eine farbige 
Darstellung auch nicht. Der Propeller hat deutlich mehr Geschwindigkeit 
und außerdem läuft noch ein AY-3-8910/YM2149 mit.

[1] Beitrag "Re: CP/M auf ATmega88"

von Rene K. (xdraconix)


Angehängte Dateien:

Lesenswert?

Joe G. schrieb:
> Das können wir ja immer noch :-)

Sehr gerne :-)


Mir fällt gerade die nächste Frage ins Auge:

Sie dazu Bild 1. Der AtmegaXX8-PU oder auch P-PU läuft unter 3V3 doch 
garnicht auf 20Mhz sondern laut DB bloß 0-10Mhz unter 2.7-5.5V und 
0-20Mhz unter 4.5-5.5V.

Gibt es vom AtmegaXX8 auch ein Derivat welcher mit 20Mhz unter 3V3 
spezifiziert ist?

von Joe G. (feinmechaniker) Benutzerseite


Lesenswert?

Rene K. schrieb:

> Gibt es vom AtmegaXX8 auch ein Derivat welcher mit 20Mhz unter 3V3
> spezifiziert ist?

Nein, gibt es nicht. Bisher laufen aber alle von mir (und auch 
anderen)eingesetzten IC's ohne Probleme. Damit sie ordentlich 
anschwingen, ist das Fuse Bit auf "Full Swing Crystal" gestellt.

: Bearbeitet durch User
von Hans-Werner Schütz (Gast)


Lesenswert?

Hallo,
gestern endlich angefangen zu bauen, ich habe schon einige Fehler 
gefunden und auch einige Verbesserungsvorschläge. Ich bin jetzt 3 Wochen 
auf Reha... da finde sicherlich Zeit alles nieder zuschreiben (geht zu 
Joe per Mail).
Mein Problem ist im Moment der SC16IS740, wo bekommt man das Teil 
günstig her? (ich würde auch mehrere nehmen). Zu dem Quarz sag ich mal 
nichts...
Gruß
Hans-Werner

von Joe G. (feinmechaniker) Benutzerseite


Lesenswert?


von Marcel (Gast)


Lesenswert?

Was sagt ihr zu einer Sammelbestellung der "komplizerten Teile"?

von CPM und Arduino DUE ? (Gast)


Lesenswert?

Vielleicht sollte man auf eine Arduino DUE umsteigen.

Gruss

von Hans-Werner Schütz (Gast)


Lesenswert?

Hallo,
erstmal 10 bestellt...
Gruß
Hans-Werner

von Mathias S. (mathias_s)


Lesenswert?

Rene K. schrieb:
> Super, danke... Da setze ich mich heute Abend mal dran und Ergänze /
> Berichtige die Liste.
>
> An die SD-Card Fassung komme ich durch Vitamin B zu WE. Und kann hier
> welche zum Selbstkostenpreis anbieten.


Hallo René,

hast Du schon die Liste ergänzen können? Sprich: welche Teile sind im 
Reichelt Warenkorb nicht enthalten?
An der SD-Card Fassung hätte ich Interesse, sofern Du noch eine abtreten 
möchtest.

Beste Grüße,
Mathias

P.S.: wieder einmal ein tolles Projekt von Joe G. mit einer sehr 
sauberen Doku! Ich habe bereits den AX81b und den CP/M-Stick aufgebaut - 
funktioniert beides klasse. Herzlichen Dank dafür!

von Peter Z. (flexopete)


Lesenswert?

Hallo,
habe meine Platine soweit aufgebaut. VT100 geht, i2cscan findet
die I2C Bauteile. Was mir beim Bestücken aufgefallen ist:
Thermal-Pads lassen sich schlecht löten.
Habe zwar kein Problem 0603 zu löten, aber es ist ja Platz für
z.B. 0805.
Den Quarz für den SI16... könnte man besser löten, wenn die Pads
größer wären (hallo Hans-Werner), oder gleich HC-49.

Ein Problem habe ich noch mit der RTC: im Reichelt Warenkorb
steht das Ding als PCF 8583T DIP8, aber T ist SMD. Also habe
das Chip erstmal auf einen 8er Dip-Sockel geprokelt.
Solange das Board extern versorgt wird, ist die Abweichung nur
minimal. Läuft die RTC auf der CR2032, ist die Abweichung einige
Minuten in Plus. Schon ein CPM Hardware-Reset bringt die RTC
einige Sekunden ins Plus.
Kann man den RTC-Treiber permanent laden?

Gruss
Peter

von Joe G. (feinmechaniker) Benutzerseite


Lesenswert?

Vielen Dank für deine Hinweise! Die Beschaltung um den SI16.. stelle ich 
auf „freundliche“ Bauelemente um. PCF8583T ist natürlich nicht korrekt, 
auch wenn Reichelt DIP8 dazu schreibt. Hier muss der PCF8583P in den 
Warenkorb.
Das Problem mit der Uhr kann ich bei mir nicht nachvollziehen. Die Uhr 
läuft bei mir seit einem Monat korrekt (egal ob bei externer Versorgung 
oder der CR2032) auch ein CP/M-Reset ändert die Uhrzeit nicht. Mal 
sehen, was die anderen dazu sagen...

von Joe G. (feinmechaniker) Benutzerseite


Lesenswert?

Hans-Werner vielen Dank für deine Anmerkungen und Korrekturen! Eine neue 
Doku liegt nun unter Github. Die Schalterstellungen sollten jetzt auch 
der Schaltung entsprechen und der VT100 Teil ist auch ergänzt.

von Hans- w. S. (hschuetz)


Lesenswert?

Hallo Joe,
jetzt fehlt nur noch ein Gehäuse... hast du das schon in der Produktion?
:-)
Das kann nicht jeder produzieren, und würde mich interessieren.
Gruß
Hans-Werner

von Joe G. (feinmechaniker) Benutzerseite


Lesenswert?

Das Gehäuse ist schon als Muster fertig.
Beitrag "Re: CP/M auf ATmega88"
Ich hoffe bei erner entsprechenden Menge auf einen akzeptablen Preis.

von Peter Z. (flexopete)


Lesenswert?

Hallo Joe,

mal ne Frage zum Trimmer C12 am PCF8583P. Ein Ende geht an Pin 1 und
das andere an 3,3V. Sollte das nicht an D1,D2 bzw. Pin8 gehen?
Wenn die 3,3V nicht da sind, hängt er ja in der Luft. Könnte ja mein
Problem sein.

Gruss
Peter

von Peter Z. (flexopete)


Lesenswert?

Habe jetzt mal den C12 an Pin8 gehängt,
jetzt läuft die RTC mit richtiger Uhrzeit
im Batterie Betrieb.

Die Änderung ist einfach durchzuführen:
C12 von 3,3V trennen und mit Pin8 verbinden.

@Joe
Es wundert mich, daß Du da kein Problem hast.

ps: melde mich für ein Gehäuse an.

Gruss
Peter

: Bearbeitet durch User
von Joe G. (feinmechaniker) Benutzerseite


Lesenswert?

Peter Z. schrieb:
> Die Änderung ist einfach durchzuführen:
> C12 von 3,3V trennen und mit Pin8 verbinden.

Das ist ja ein dicker Hund ;-) Natürlich muss C12 an Pin8. 
Offensichtlich läuft meine Uhr auch ohne C12 genau. Die Gehäusewünsche 
sammle ich mal...

von Marcel (Gast)


Lesenswert?

Gehäuse wäre gut :-) Danke.

von Hans- w. S. (hschuetz)


Lesenswert?

Hallo,
Hiobsbotschaften... das mit den UARTS SC16IS740 hat nicht geklappt, der 
Lieferant kann nicht liefern aliexpress hat das Geld erstattet..?? Hab 
es dann bei E... versucht..und bis jetzt nichts erhalten. Hat da einer 
noch eine Quelle wo die Dinger auch bezahlbar sind?

@Joe soll da noch etwas mit dem Gehäuse kommen?

Gruß
Hans-Werner

von Joe G. (feinmechaniker) Benutzerseite


Lesenswert?

Da das Projekt in Richtung Bausatz läuft, beschaffe ich die Bauelemente 
in der Losgröße 10. Bei Mouser ist das IC für 2.47€ + Steuer verfügbar. 
Ich würde einfach für dich (vielleicht noch weitere Interessenten) 
mitbestellen. Auch das Gehäuse ist noch aktuell. Hier warte ich noch auf 
die Rückkopplung der Betatester bzw. final auf das endgültige Angebot in 
der Losgröße 10.

von Marcel (Gast)


Lesenswert?

Bin dabeo :-)

von Peter S. (petersieg)


Lesenswert?

Hallo liebe (AVR)CP/M Freunde.

Ich werde mir die nächsten Wochen mal wieder ein AVR CP/M Stick 
aufbauen.
Da mein Stand inzwischen 'etwas' veraltet ist, würde ich nach 
erfolgreichem Aufbau dann den Stand von Martin flashen wollen:
https://www.mikrocontroller.net/attachment/379658/AVRCPM-SER-PAR.zip
(Danke für die tolle Beschreibung und fertiges HEX!)

Frage zum I2C Uart. Wäre so etwas verwendbar (ohne SW Anpassungen):
https://www.ebay.de/itm/SC16IS750-CJMCU-750-Single-UART-w-I2C-Bus-SPI-Interface-For-Industrial-Control/163595853069?ssPageName=STRK%3AMEBIDX%3AIT&_trksid=p2060353.m1438.l2649

--

Ich habe mir dann noch mal den Stand des Artikels angeschaut.
Der ist - hmm.. leider inzwischen völlig veraltet - und eher verwirrend!

Gibt es da Bestrebungen, die älteren Optionen (z.B. Partitionen) auch 
unter "Historische/Alte Optionen" zu stellen und den aktuellen Stand 
evtl. auch nach oben, neu einzufügen? Ist finde es etwas 'blöd' wenn man 
sich erst durch alle historischen Versionen liest, evtl. schon anfängt.. 
und erst danach feststellt, das ein Atmega88 oder 168 eben nicht mehr 
ausreicht für die aktuelle Version, sondern ein Atmega328p der 
'richtige' Chip ist.
Gleiches gilt für FAT16/SD-Karte und Disk-Images..

Peter

von Joe G. (feinmechaniker) Benutzerseite


Lesenswert?

Hallo Peter,

den derzeit aktuellen Stand (incl. I2C und IO-Byte von Martin), findest 
du hier [1]. Dort sind dann auch die Quellen für den AVR das CP/M sowie 
schon übersetzte HEX-Files.

> Frage zum I2C Uart. Wäre so etwas verwendbar (ohne SW Anpassungen):

Der von dir verlinke EBAY-Artikel ist zum Softwarestand kompatibel.

Mit dem Artikel hast du Recht. Hier würde etwas Überarbeitung guttun. 
Ich versuche es mal…


[1]   https://github.com/Feinmechaniker/AVRCPM

von Peter S. (petersieg)


Lesenswert?

Hallo Joe.

Ich habe mir mal erlaubt den Artikel etwas aufzubereiten.
Evtl. bietet sich nun die Aufnahme der jetzt aktuellen Hardwareversion 
mit VT100 und I2C inkl. Gehäuse an?

Und ggf. die Software Rubrik müsste sicher auch aktualisiert werden ;-)

Peter

von Martin Hepperle (Gast)


Lesenswert?

Peter S. schrieb:
> ...
> Frage zum I2C Uart. Wäre so etwas verwendbar (ohne SW Anpassungen):
> Ebay-Artikel Nr. 163595853069
> ...

Hallo Peter,
genau so ein Board habe ich mit meinem CP/M-Stick verwendet (Platine kam 
damals von Dir). Wenn Du vom gleichen Anbieter noch 162722531579 mit 
bestellst, kannst Du auch den parallelen Centronics-Port anbauen.
Braucht dann noch zwei 3.3->5V level converter für I2C und einen 5V 
Stromversorgung.

PS: Ich habe mir dann noch eine 5V Powerbank dazu gebaut. Die 
kommerziellen Powerbanks schalten leider ab, wenn nicht genügend Strom 
gezogen wird. Deshalb habe ich mir eine selbst gebaut mit 
USB-LiPo-Ladeplatine (z.B. 162764857644), einer Pollin 3.6V LiPo 
Telefonzelle und 3.6V auf 5V Converter. Dann hat man ein portables CP/M 
System, das man schnell an jedes Terminal anschließen kann. Das teuerste 
war das 2.5 Zoll Aluminium Festplattengehäuse für die Powerbank.

Martin

von Hans- w. S. (hschuetz)


Lesenswert?

Hallo Joe,
endlich den Uart bekommen....
wie sieht es mit Gehäuse aus?
Gruß
Hans- Werner

von Peter S. (petersieg)


Lesenswert?

Hallo Joe.

Ich habe nun viele Stunden Fehlersuche hinter mir, weil nach einiger 
Zeit das System sich mit Dump 76 76 weghängte. Habe mit dram_waitstate 
und dram_refresh Angaben in config.inc gespielt - bis ich heute auf die 
Idee kam, mir mal dram-refresh.asm anzuschauen:
1
; ------------------- DRAM Refresh Interrupt --------------------
2
3
  .cseg
4
  
5
  INTERRUPT OC2Aaddr
6
  reti          ; only for SRAM  
7
8
  sbis  P_RAS,ram_ras  ;2
9
        ...

Das oberste reti gehört wohl erst einmal auskommentiert im Repo :-(
Und zukünftig eher als define in config.inc und entsprechend dann 
darüber aktiviert, wenn SRAM definiert wurde.

;-)

Peter

: Bearbeitet durch User
von Joe G. (feinmechaniker) Benutzerseite


Lesenswert?

Oh, sorry!

Da ich unter Github nur die Daten für die DRAM Version bearbeitet hatte, 
ist mir das nicht aufgefallen bzw. ich hatte es nach dem damaligen 
erfolgreichen Hardwaretest ganz vergessen in der config.inc zu 
implementieren. :-(

Hans- w. S. schrieb:
> wie sieht es mit Gehäuse aus?

Der letzte Betatester hatte mir erst letzte Woche alle 
Wünsche/Probleme/Änderungen zukommen lassen, so dass ich nun erst dazu 
komme auch diese Änderungen einfließen zu lassen. Letztlich kommt es 
dann noch auf die Stückzahl an. Ein Einzelmuster ist derzeit wirklich 
sehr teuer.

von hschuetz (Gast)


Lesenswert?

Hallo Joe,
ich nehme ein Bausatz mit Gehäuse und ein Gehäuse für den Prototyp.
Gruß
Hans-Werner

von Horst S. (h3aau)


Lesenswert?

moin,
ich suche für den alten c't Prommer-80 die software.
gab es die auch als quelle?

von Günther S. (guenther_sch)


Lesenswert?

Da kann ich weiterhelfen, es gab Pascal und Assembler Versionen, kann 
aber erst heute abend danach schauen.

von Horst S. (h3aau)


Lesenswert?

moin,
dann hatte ich wohl die pascal-version.
beim umstieg von cp/m auf den ersten pc hatte ich alles auf disk's im 
ibm-format abgespeichert und eingelagert. leider haben einige davon die 
lagerdauer nicht überstanden.
ich hatte damals mit einem freund einen universal formatierer für cp/m 
gebaut. der konnte das disk-format für einzelne drives beliebig 
anpassen. so haben wir damals das formatchaos etwas in den grief 
bekommen.

von Christian D. (toast_r)


Lesenswert?

In der c't 03/1985 ab Seite 76 ist das Pscal-Programm abgedruckt.
Sollte also kein Datenträger auftauchen, kann man das notfalls noch 
abtippen.

von Horst S. (h3aau)


Lesenswert?

moin,
das hätte ich gern mal als pdf.

von Horst S. (h3aau)


Lesenswert?

moin,
Danke an alle.
@günter leider sind die sourcen der tp routinen beschädigt.
da hängen unvollständige textteile drinn.

ich habe hier noch die sourcen in asm vom "Z80 BASIC Ver 4.7c" von MS.
leider sind auch da fehler drinn, diese habe ich begradigt. zudem sind 
einige befehle wie Cload und Csave nicht realisiert.

hat da noch jemand was vollständiges?

: Bearbeitet durch User
von Günther S. (guenther_sch)


Lesenswert?

Ich schau mal nach, ob ich irgendwo noch eine andere Version habe.

von Horst S. (h3aau)


Lesenswert?

moin,
öhmmm..... watte im kopf.
habe mal statt z80asm die m80/l80 kombi genommen.
m80 =test/L/N
alle ok, prn-file bestens.
l80 test,test/N/E
es wird eine test.com erstellt. läuft aber nicht.
also ddtz test.com

DDTZ v2.7M by CB Falconer. CPU=Z80
Next  PC  Save
0380 0100 3
-d
0100 00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00 ................
0110 00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00 ................
0120 00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00 ................
0130 00 00 00 00 00 CD 29 0B  FE 29 C4 9D 04 C3 40 0B ......)..)....@.
0140 3E 01 32 2F 3D C3 59 2B  AF 32 2F 3D C3 59 2B AF >.2/=.Y+.2/=.Y+.
0150 32 2D 3D C3 59 2B CD 55  0B C2 47 2B 0C 0D CA 47 2-=.Y+.U..G+...G
0160 2B F5 CD 0E 0C C4 24 0C  C2 3A 2B 7E F6 40 77 F1 +.....$..:+~.@w.
0170 FE 2C C0 CD 55 0B C2 C1  04 C3 2C 2B 3E 01 32 2D .,..U.....,+>.2-
0180 3D C9 3E FF 32 2E 3D C3  59 2B AF 32 2E 3D C3 40 =.>.2.=.Y+.2.=.@
0190 0B 3E 01 32 2E 3D C3 59  2B AF C3 7D 2B 3E FF C3 .>.2.=.Y+..}+>..
01A0 7D 2B 3A 8D 40 2F 6F 3A  EC 3C B7 CA 59 2B 7D 32 }+:.@/o:.<..Y+}2
01B0 8D 40 32 2A 3D C3 59 2B  3E 01 32 EA 3C C3 59 2B .@2*=.Y+>.2.<.Y+
-

das schaut nicht nach dem aus was im prn steht......

 0000                          boot    equ  0000h     ; system reboot
  0005                          bdos    equ  0005h     ; bdos entry 
point
  005C                          fcb1    equ  005ch     ; first file name
  005C                          sfcb    equ  fcb1      ; source fcb
  006C                          fcb2    equ  006ch     ; second file 
name
  0080                          dbuff   equ  0080h     ; default buffer
  0100                          tpa     equ  0100h     ; beginning of 
tpa
                                               ;
  0009                          printf  equ  9         ; print buffer 
func#
  000F                          openf   equ  15        ; open file func#
  0010                          closef  equ  16        ; close file 
func#
  0013                          deletef equ  19        ; delete file 
func#
  0014                          readf   equ  20        ; sequential read 
func#
  0015                          writef  equ  21        ; sequential 
write
  0016                          makef   equ  22        ; make file func#
                                               ;
                                        org tpa       ; beginning of tpa
  0100'   31 0239'                      lxi  sp,stack  ; set local stack
  0103'   0E 10                         mvi  c,16      ; half an fcb
  0105'   11 006C                       lxi  d,fcb2    ; source of move
  0108'   21 01D9'                      lxi  h,dfcb    ; destination fcb
  010B'   1A                    mfcb:   ldax d         ; source fcb
  010C'   13                            inx  d         ; ready next
  010D'   77                            mov  m,a       ; dest fcb
  010E'   23                            inx  h         ; ready next
  010F'   0D                            dcr  c         ; count 16...0
  0110'   C2 010B'                      jnz  mfcb      ; loop 16 times
                                               ;
                                               ;
was mache ich da falsch???????????????

von Horst S. (h3aau)


Lesenswert?

ok, gefunden........
das /P:0100 ist wohl nicht default und muss vor dem laden des files 
pasieren.

L80 /P:0100,DEMO,DEMO/N/E

von Horst S. (h3aau)


Lesenswert?

ne, doch nich....
irgendwie habe ich beim linken immer noch einen offset von 0100h drinn.
in der com-datei liegt der code erst ab 0200h.

von Leo C. (rapid)


Lesenswert?

Hallo Horst,

entweder Du assemblierst absolut:
1
        ASEG
2
        ORG 100H
oder Codesegment-relativ (CSEG bzw. default) und läßt ORG dann weg, und 
sagst dem Linker mit /P:, wohin geladen werden soll.

von Horst S. (h3aau)


Lesenswert?

DANKE!!!!!!!!!!!!!!!!!!!!!!

man oh man.... peinlicher fehler.

ich habe den fehler im linker gesucht.
im m80 prn sah das doch alles ok aus.

: Bearbeitet durch User
von Horst S. (h3aau)


Lesenswert?

moin,
hat wer den VDE.COM auf VT100 konfiguriert?

von Martin H. (therealmartin)


Angehängte Dateien:

Lesenswert?

Weil ich in letzter Zeit viel mit meinem AVR-CP/M Stick gearbeitet habe 
(GSX-80 Grafik mit Fortran und CBASIC), habe ich mir zwei Windows 
Befehlszeilen-Skripte geschrieben, um ein Backup von den 8 MB 
Festplattendateien zu erzeugen.
Dieses Backup erfolgt dateiweise, d.h. ich habe dann alle Einzeldateien 
in einem Verzeichnisbaum unter Windows liegen.
Ein Skript kopiert mit Hilfe der CPMTOOLS alle Dateien in 
User-Unterverzeichnisse und das andere Skript kopiert alles wieder 
zurück in Image Dateien.
Damit kann ich jetzt bequem Einzeldateien unter Windows ansehen, 
austauschen oder ändern und später wieder alles zurückspielen ohne 
jedesmal manuell CPMTOOLS Befehle eingeben zu müssen.
Nur die SD-Karte muss ich natürlich noch umstecken.
Für das Zurückkopieren werden komplett neue Image Dateien angelegt, 
wofür noch ein leeres Image als Vorlage benötigt wird.
Ausserdem CPMCP aus den CPMTOOLS und natürlich die passende DISKDEFS 
Datei mit einer Definition für "avr8M".

Ist vielleicht auch für andere Nutzer interessant.

Martin

von Guido D. (gdampf)


Lesenswert?

Hallo zusammen,
ich habe über die Tage mal einen Emulator auf Breadboard aufgebaut und 
bin sowohl von der simplen Konstruktion als auch von der Performance mit 
einem atmega328p begeistert.
Gar nicht so einfach, sich durch die 10-jährige Historie zu wühlen - 
trotz der Bemühungen Eurerseits, die Sache immer wieder zusammen zu 
fassen.
Ich habe vor über 30 Jahren auch so meine Erfahrungen mit CP/M machen 
dürfen, erst mit einem Apple II + Z80-Karte, dann auf Epson QX-10 und 
PX-4.
Letzterer ist mir vor einigen Wochen beim Aufräumen im Keller mal wieder 
in die Hände gefallen und hat meine Neugierde wieder geweckt.
Das Ding läuft noch! Basic im Rom und Turbo-Pascal auf Mini-Kasette - 
ewige Ladezeiten, aber es geht.
Dann fand ich ein tolles Stück Software für den ESP32 (www.fabgl.com - 
siehe Examples). Es emuliert einen Altair8800 recht performant mit VGA 
und Tastatur über PS/2. CP/M läuft super. Ich mag diesen 
minimalistischen Ansatz.
Das hat mich dann auch hierher geführt. Toll finde ich die Versionen des 
AVRCPM-Projektes ohne Propeller etc., weil mir bei letzterem schon der 
Einsatz von Rechenpower zuviel ist. Da könnte man auch den ESP32 
vorziehen.
Also erst einmal ein großes Kompliment an die Community - tolle Arbeit!

Leider ist es in diesem Threat inzwischen recht ruhig geworden, doch 
hoffe ich dennoch auf ein wenig Unterstützung, da ich noch ein wenig mit 
der Umgebung hadere.
Als Umgebung verwende ich das aktuelle Microchip Studio 7.0.2542. Wenn 
ich damit die Sourcen (Version aus 
https://www.mikrocontroller.net/svnbrowser/avr-cp-m/avrcpm/tags/3.5/) in 
der Voreinstellung der Config.inc übersetze, findet der Linker zwei 
Symbole nicht: adc_read8 und avr_read_vcc (beide aus virt_ports.asm - 
Zeile 183 und 187).
Schalte ich den ADC-Support in der Config.inc aus, läuft alles und CP/M 
startet.
Eine Suche nach diesen Symbolen in allen *.inc und *.asm bringt keinen 
Treffer.
Auch wenn ich den ADC sicher nicht so schnell brauchen werde, wüsste ich 
gerne, woran das liegt. Kennt einer die Antwort auf die Fragen
a) wo sind die beiden Symbole definiert
und
b) warum sind sie in meiner Umgebung nicht definiert
und
c) bzw. ist der Code für den ADC möglicherweise veraltet und nicht mehr 
compilierbar?
Im Fall c) sollte man evtl. die Default-Einstellungen der Config.inc mal 
überarbeiten, oder?

Gruß
Guido

von Leo C. (rapid)


Lesenswert?

Hallo Guido,

der erste Prototyp vom ADC-Code war nicht so doll. Es hatte aber auch 
niemand Interesse daran. Deshalb hatte ich den Code nie ins SVN 
eingecheckt.

Guido D. schrieb:
> a) wo sind die beiden Symbole definiert

in adc.asm. Die Datei ist hier im Anhang:
Beitrag "Re: CP/M auf ATmega88"
Sie muß in avrcpm.asm included und im Makefile zu ASRC0 zugefügt werden.

Hier gibts auch eine ältere Version des Gesamtprogramms:
Beitrag "Re: CP/M auf ATmega88"

> und
> b) warum sind sie in meiner Umgebung nicht definiert

weil adc.asm fehlt.

> und
> c) bzw. ist der Code für den ADC möglicherweise veraltet und nicht mehr
> compilierbar?

Ich vermute mal, das er noch funktioniert.

> Im Fall c) sollte man evtl. die Default-Einstellungen der Config.inc mal
> überarbeiten, oder?

Ja, das hatte ich wohl beim Entfernen von adc.asm vergessen.

von Joe G. (feinmechaniker) Benutzerseite


Lesenswert?

Hallo Guido,

die letzte Version mit Unterstützung von RTC, GPIO, UART, LPT usw. 
findest du hier [1] in der Version von AVR-Studio 7.

[1] https://github.com/Feinmechaniker/AVRCPM

von Bernd (Gast)


Lesenswert?

Guido D. schrieb:
> Das hat mich dann auch hierher geführt. Toll finde ich die Versionen des
> AVRCPM-Projektes ohne Propeller etc., weil mir bei letzterem schon der
> Einsatz von Rechenpower zuviel ist.
Der Propeller dient nur als VGA-Terminal. Da gibt es auch ein separates 
Projekt dazu:
Beitrag "VT100-Terminal (VGA+PS2)"

> Da könnte man auch den ESP32
> vorziehen.
Den gab es vor zehn Jahren noch nicht...

von Rapper B (Gast)


Lesenswert?

ähmm..also meine Frage wurde hier sicher schon tausendfach 
gestellt..daher reicht mir eine kurze Zusammenfassung als Antwort aus, 
wollte den Threat nicht kapern..
Wenn hier einige nach Z80 Projekten Fragen, wird immer die Sinnfrage 
gestellt...und warum man sich heute noch damit beschäftigen sollte etc.
Wieso ist ein AVR CP/M Projekt offenbar etwas völlig anderes:-)
Wenn ich das hier so sehe, würde ich doch besser gleich einen Z80 
verwenden

Wie gesagt..hatte mir jetzt die restlichen 10 Seiten nicht alle 
durchgelesen...

von Joe G. (feinmechaniker) Benutzerseite


Lesenswert?

Die kurze Antwort lautet:
Weil es möglich ist, mit 2 IC’s (AVR+DRAM) und einer SD-Card ein 
komplettes CP/M System zu realisieren.

von W.S. (Gast)


Lesenswert?

Joe G. schrieb:
> Die kurze Antwort lautet:
> Weil es möglich ist, mit 2 IC’s (AVR+DRAM) und einer SD-Card ein
> komplettes CP/M System zu realisieren.

Ähem... und das ist ein ausreichender Grund?

Ich sehe das ganz anders:

1. Es ist für einen Programmierer lehrreich, einen Z80 in Assembler 
programmieren zu lernen, weil der Z80 einen recht guten und 
überschaubaren Befehlssatz hat und man es deshalb leicht hat, die für 
Assembler nötige "Denke" zu erlernen.

2. Es ist für den Hardwerker lehrreich, mit einem Z80 ein funktionables 
System zu konstruieren, weil man damit Digitalelektronik recht gut 
lernen und üben kann.

3. Es ist für den Systemarchitekten lehrreich, CP/M zu begreifen, weil 
man damit lernen kann, wie man ein durchaus leistungsfähiges DOS mit nur 
wenigen kByte an Gesamtumfang konstruieren kann.

4. Natürlich könnte man auch einen ZX-Spectrum emuliert bauen, Frank hat 
das ja vorgemacht, aber das läuft dann zu fast 100% auf das Spielen mit 
den damaligen Spielprogrammen hinaus - und nicht auf die genannten 
lehrreichen Ziele. Kann man machen, ist aber eine völlig andere Kiste.

So.

In beiden Fällen (AVR oder echter Z80) ist das damit erzeugte System für 
die heutige Praxis deutlich zu klein. Mit Wordstar (oder beim Spectrum 
mit TLW) schreibt man heutzutage keine Briefe an die Omi mehr. Punkt.

Was bleibt, ist zum einen der damit erzielbare Lerneffekt. Den sehe ich 
allerdings bei einem interpretierten System wie per AVR oder ESP32 nicht 
gegeben, weil man dort ja doch wieder mehr mit dem interpretierenen 
System als mit dem eigentlichen Z80 bzw. CP/M zu tun hat.

Was zum anderen bleibt, ist die Möglichkeit, einen kleinen Rechner zu 
haben, der binnen 2 Sekunden bootet, wo man ein paar digitale und 
analoge Ein- und Ausgänge haben kann, für die man sich per Turbopascal 
mal eben irgendwelche kleinen Testprogramme schreiben kann und wo man 
damit irgend etwas auf dem Basteltisch tun kann, einschließlich 
Langzeit-Logging auf Disk - und das alles, ohne den PC benutzen zu 
müssen.

Ich würde das ganze Thema anders sehen, wenn man die Idee des CP/M 
weiter entwickeln würde, das Ganze dann tatsächlich auf einen passenden 
32 bittigen µC portieren würde und damit ein kleines, aber benutzbares 
System abseits von Windows, Linux, QNX und Ähnlichem schaffen würde.

So etwas wäre eine bessere Bastel-Idee.

W.S.

von Robert K. (Firma: Zombieland) (rko)


Lesenswert?

W.S. schrieb:
> 4. Natürlich könnte man auch einen ZX-Spectrum emuliert bauen, Frank hat
> das ja vorgemacht, aber das läuft dann zu fast 100% auf das Spielen mit
> den damaligen Spielprogrammen hinaus - und nicht auf die genannten
> lehrreichen Ziele. Kann man machen, ist aber eine völlig andere Kiste.
gegen Spiele-Emulation ist auch nichts einzuwenden, weil eine Soft-Emu 
nicht dasselbe ist.
Was jetzt die 'lehrreichen Ziele' anbelangt, kann man genauso 
argumentieren - nicht notwendig, da mittels PC-Software-emu sowieso 
alles möglich ist?!
Und damit sind die lehrreichen Ziele genauso obsolet, Hardware-Nachbau 
sinnlos so gesehen.

Wollte mal auf diese Projekt aufmerksam machen:
http://spritesmods.com/?art=avrcpm
Interessantes Projekt, leider schweigen sie sich darüber aus wie der 
Einbau in das Gameboy-Gehäuse aussieht - hier spart man an Fotos, etc. 
... oder eben doch nur ein Fake.
Das ist leider das Defizit dieser ganzen Projekte - die Macher gehen von 
sich aus.

: Bearbeitet durch User
von W.S. (Gast)


Lesenswert?

Robert K. schrieb:
> Was jetzt die 'lehrreichen Ziele' anbelangt, kann man genauso
> argumentieren - nicht notwendig, da mittels PC-Software-emu sowieso
> alles möglich ist?!
> Und damit sind die lehrreichen Ziele genauso obsolet

OK, wer sich als Verbraucher sieht, der benötigt keine Kenntnisse von 
Hardwaredesign und Programmierung und Betriebssystemen und 
Dateisystemen. Der muß bloß wissen, wie er/sie über das Display des 
Mobiltelefones wischen muß, um dann auf das gewünschte Icon zu tippen.

W.S.

von Robert K. (Firma: Zombieland) (rko)


Lesenswert?

W.S. schrieb:
> OK, wer sich als Verbraucher sieht, der benötigt keine Kenntnisse von
> Hardwaredesign und Programmierung und Betriebssystemen und
> Dateisystemen. Der muß bloß wissen, wie er/sie über das Display des
> Mobiltelefones wischen muß, um dann auf das gewünschte Icon zu tippen.
>
> W.S.

darum geht es doch gar nicht!
Wenn ich schon ein Projekt ins Netz stelle, dann sollte das für jeden 
Interessierten nachbaubar sein. Dieses Ziel ist schon mal verfehlt.
Für Programmierung, Hardwaredesign, Betriebssysteme, etc. kann man auch 
Bücher kaufen und lesen bzw. im Selbstkurs lernen oder an der Uni das 
entsprechende Fach studieren.
Ein Projekt muß aber einen anderen Anspruch haben - und der ist aufgrund 
der Arroganz definitiv nicht erfüllt!

von Joe G. (feinmechaniker) Benutzerseite


Lesenswert?

Robert K. schrieb:
> Wollte mal auf diese Projekt aufmerksam machen:
> http://spritesmods.com/?art=avrcpm

Mußt du nicht, es reicht:
Beitrag "CP/M auf ATmega88"
zu lesen ;-)

von Robert K. (Firma: Zombieland) (rko)


Lesenswert?

Joe G. schrieb:
> Mußt du nicht, es reicht:
> Beitrag "CP/M auf ATmega88"
> zu lesen ;-)

ah okay, Du leidest offenbar an Alzheimer - bitte nicht falsche Zitate 
unterschieben :-)
Originalzitat ist von Peter Sieg:
Peter Sieg schrieb:
> Hi.
>
> Wollte mal auf diese Projekt aufmerksam machen:
> http://spritesmods.com/?art=avrcpm

Ich habe das Zitat von Peter dann ebenfalls nochmal verwendet, aber 
irgendwas ist mit der 'Kommentierfunktion' hier schiefgelaufen  (sehe 
ich gerade) ... leider kann man das nicht mehr ändern, wenn anschließend 
jemand anders postet - Fehler bzw. Websiteproblem, bei anderen Foren 
geht sowas.

: Bearbeitet durch User
von W.S. (Gast)


Lesenswert?

Robert K. schrieb:
> darum geht es doch gar nicht!

Oh doch. Es geht um das Können und das Selbstverständnis. Da ist ein 
großer Unteschied zwischen dem Elektroniker, der etwas machen will oder 
soll und deshalb Fachkenntnisse braucht - und dem Verbraucher, der 
lediglich auf ergonomische benutzbarkeit achtet, egal ob da drinnen nun 
ein Mikrocontroller oder ein grünes Marsmännchen werkelt.

> Wenn ich schon ein Projekt ins Netz stelle, dann sollte das für jeden
> Interessierten nachbaubar sein. Dieses Ziel ist schon mal verfehlt.

Das kommt sowohl auf die Güte der hoffentlich vorhandenen Dokumentation 
als auch auf die Ausführung des Projektes an. Wäre im Einzelfall zu 
prüfen - mal abgesehen davon, daß nicht jeder elektronik-affin ist. Hier 
lese ich viel zu häufig sowas: "ich will was ganz dolles bauen aber ich 
verstehe von Elektronik garnichts..."

> Für Programmierung, Hardwaredesign, Betriebssysteme, etc. kann man auch
> Bücher kaufen

Ja, in diesem Falle den Lampe-Jorke-Wengel, aber bloß kaufen nützt 
nichts, man muß es auch selbst praktizieren, damit man es tatsächlich 
lernt.

W.S.

von Frank M. (ukw) (Moderator) Benutzerseite


Lesenswert?

W.S. schrieb:
> Natürlich könnte man auch einen ZX-Spectrum emuliert bauen, Frank hat
> das ja vorgemacht, aber das läuft dann zu fast 100% auf das Spielen mit
> den damaligen Spielprogrammen hinaus - und nicht auf die genannten
> lehrreichen Ziele.

Es gibt Z80-Cross-Assembler, mit denen man TAP-files für den Spectrum 
erzeugen kann.

Hier auch ein Online-Z80-Assemler: https://clrhome.org/asm/

Dieser kann ebenso direkt ZX Spectrum TAP-Files erzeugen, welche man mit 
STECCY direkt per
1
LOAD "" CODE
2
RANDOMIZE USR address
ausführen kann. Es muss ja nicht immer ein Spiel sein.

Ich habe früher mit dem ZX Spectrum Assembler gelernt und kann nur 
bestätigen, dass Z80-Code ideal ist, um Assembler zu lernen.

Ich habe in den letzten Wochen auch mal z88dk als 
Cross-C-Compiler-Umgebung ausprobiert - läuft mit sccz80 (original 
z88dk's compiler) oder auch sdcc. Hier kann man ebenso direkt 
ZX-Spectrum-TAP files erzeugen, die auf dem STECCY reibungslos 
laufen.

: Bearbeitet durch Moderator
von W.S. (Gast)


Lesenswert?

Zuerst mal mein Wunsch:
Dieses Jahr 2021 möge uns allen ein gutes und gesundes Jahr werden!

Frank M. schrieb:
> Es gibt Z80-Cross-Assembler, mit denen man TAP-files für den Spectrum
> erzeugen kann.

Ja, weiß ich. Aber man muß es tun wollen - und da sehe ich bei 
Nachbauern doch weitaus eher das Verlangen, alte Spiele laufen zu 
lassen.

Ich kann Assembler, du auch, einige andere hier auch (noch) - aber ich 
lese gerade hier in diesem Forum immer wieder geradezu militante 
Beiträge, die jegliche Assembler-Kenntnisse als komplett obsolet abtun.

W.S.

von Robert K. (Firma: Zombieland) (rko)


Lesenswert?

W.S. schrieb:
> Zuerst mal mein Wunsch:
> Dieses Jahr 2021 möge uns allen ein gutes und gesundes Jahr werden!
dem Neujahrswunsch schließe ich mich an :-)

W.S. schrieb:
> Ja, weiß ich. Aber man muß es tun wollen - und da sehe ich bei
> Nachbauern doch weitaus eher das Verlangen, alte Spiele laufen zu
> lassen.
In der Beziehung ist Deine Haltung leider falsch - daran ist nichts 
verkehrt sich der reinen Anwendung zu erfreuen oder eben nur für Spiele 
zu nutzen?
Die Original-Retro-Computer sind zu teuer und Software-Emu auf einen PC 
ist nur ein schwacher Ersatz.
Warum also nicht - genau dasselbe hast Du in etlichen anderen Bereichen 
doch auch?

von Robert K. (Firma: Zombieland) (rko)


Lesenswert?

W.S. schrieb:
> Ich kann Assembler, du auch, einige andere hier auch (noch) - aber ich
> lese gerade hier in diesem Forum immer wieder geradezu militante
> Beiträge, die jegliche Assembler-Kenntnisse als komplett obsolet abtun.
Tja, das ist leider so und Du darfst davon ausgehen, daß Beiträge dieser 
Art noch zunehmen werden.

von Robert K. (Firma: Zombieland) (rko)


Lesenswert?

W.S. schrieb:
> Oh doch. Es geht um das Können und das Selbstverständnis. Da ist ein
> großer Unteschied zwischen dem Elektroniker, der etwas machen will oder
> soll und deshalb Fachkenntnisse braucht - und dem Verbraucher, der
> lediglich auf ergonomische benutzbarkeit achtet, egal ob da drinnen nun
> ein Mikrocontroller oder ein grünes Marsmännchen werkelt.
learning by doing - vielleicht animiert es ja den ein oder anderen 
Anwender oder Verbraucher sich näher damit zu beschäftigen.
Nur von vornherein den Anspruch zu erheben, daß sich nur die technische 
Elite damit beschäftigen darf, ist der falsche Weg.

>> Wenn ich schon ein Projekt ins Netz stelle, dann sollte das für jeden
>> Interessierten nachbaubar sein. Dieses Ziel ist schon mal verfehlt.
>
> Das kommt sowohl auf die Güte der hoffentlich vorhandenen Dokumentation
> als auch auf die Ausführung des Projektes an. Wäre im Einzelfall zu
> prüfen - mal abgesehen davon, daß nicht jeder elektronik-affin ist.
Richtig, und die Anwender- bzw. Verbraucherseite wird von den Machern 
der Projekte völlig vergessen.
Somit sind viele gute Projekte leider völlig obsolet.

> Hier
> lese ich viel zu häufig sowas: "ich will was ganz dolles bauen aber ich
> verstehe von Elektronik garnichts..."
ist doch okay - aber dann muß man dem Verbraucher auch sagen können:
hier, Link xy kannst Du fertig kaufen oder Link yz kannst Du basteln, 
wenn Du löten kannst.
Und beides kann man eben nicht sagen, weil die Links nicht existieren 
bzw. die ganze Doku saumäßig schlecht ist.
Sowas ist dann leider sehr schade und Dialog mit dem Projektbetreiber 
hat leider auch wenig Sinn, weil der u.a. Deine Einstellung hat und auf 
einem anderen Level schwebt.

>> Für Programmierung, Hardwaredesign, Betriebssysteme, etc. kann man auch
>> Bücher kaufen
>
> Ja, in diesem Falle den Lampe-Jorke-Wengel, aber bloß kaufen nützt
> nichts, man muß es auch selbst praktizieren, damit man es tatsächlich
> lernt.
Reparierst Du Dein Auto selbst, wenn es z.B. einen Getriebeschaden hat?
Baust Du Dein Haus eigenhändig?
Muß man das könnnen? ... in einer arbeitsteiligen Gesellschaft nicht 
mehr!
Du kannst Dir auch Wissen aneignen ohne es zu praktizieren - ist 
manchmal auch sinnvoller, oder findest Du jeden Job/Tätigkeit toll?
So manchen Job bzw. Tätigkeit möchte ich nicht unbedingt machen.

: Bearbeitet durch User
von Joe G. (feinmechaniker) Benutzerseite


Lesenswert?

Ich möchte nicht unhöflich sein, dennoch darum bitten Eure Diskussion 
anderweitig fortzuführen. Etwa 1900 Beiträge lang, war die Diskussion 
auf „CP/M auf AVR“ ausgerichtet. Ich würde mich freuen, wenn das 
zukünftig auch so bleibt.
Danke!

von W.S. (Gast)


Lesenswert?

Robert K. schrieb:
> In der Beziehung ist Deine Haltung leider falsch

Hä?
Hab ich etwa Franks Projekt geschmäht? Nein, natürlich nicht. Aber ein 
ZX-Spectrum-Emulator per Cortex-M ist rein sachlich etwas ganz anderes 
als ein CP/M auf ATmega88. Der Spectrum reizt zum Nachbauen eben WEGEN 
der Spiele, der ATmega nicht. Unterscheide mal die unterschiedlichen 
Kisten.

Robert K. schrieb:
> Die Original-Retro-Computer sind zu teuer und Software-Emu auf einen PC
> ist nur ein schwacher Ersatz.

Rede nur weiter, dann reizt mich das so, daß ich mal versuche, so einen 
Universal-Retro-Z80-Computer tatsächlich zu konzipieren - mit einem 
richtigen Z80. Sowas wäre durchaus mal ein reizvolles Projekt. Beides 
einzeln hab ich schon, kenne ich schon, hab ich schon selber entwickelt 
und eines davon war vor Urzeiten auch mal in ner Gazette abgedruckt.

Robert K. schrieb:
> Nur von vornherein den Anspruch zu erheben, daß sich nur die technische
> Elite damit beschäftigen darf, ist der falsche Weg.

Wir alle haben mal angefangen, barfuß das Laufen zu lernen. Gilt auch 
hier und bedarf der eigenen Bemühungen, es zu verstehen. Wenn man es 
dann kann, dann darf man sich auch "technische Elite" nennen - wenn man 
derart eitel ist.

Aber hier ging es vorrangig um die Frage, wozu - also zu welchem 
letztendlichen Zwecke - die hier besprochene Emulation eines Z80 und 
CP/M auf einem Atmel-IC gedacht ist. Und die Antwort war: weil es geht 
und nur 2 Schaltkreise braucht. Das ist mir ein bissel arg dünn. Dinge 
zu tun, nur weil es möglich ist, läßt mich an die Atombombe denken. Ich 
halte das für eine falsche, weil zu unbedachte Sinneshaltung.

W.S.

von Robert K. (Firma: Zombieland) (rko)


Lesenswert?

Joe G. schrieb:
> Ich möchte nicht unhöflich sein, dennoch darum bitten Eure Diskussion
> anderweitig fortzuführen. Etwa 1900 Beiträge lang, war die Diskussion
> auf „CP/M auf AVR“ ausgerichtet. Ich würde mich freuen, wenn das
> zukünftig auch so bleibt.
> Danke!
kommt von den anderen denn noch was Neues? Kann ich nicht erkennen.
Richtig, CP/M auf AVR ... auch für CP/M gibt es Spiele.
Fakt ist auch, daß das Projekt wohl als Einbau in den Gameboy gedacht 
war, wenn man den Link von Peter weiter verfolgt wo das gleich auf der 
Eingangseite abgebildet wird ... nur da hört es dann auch schon auf - 
insofern bleiben leider Fragen offen.

von Robert K. (Firma: Zombieland) (rko)


Lesenswert?

W.S. schrieb:
> Hä?
> Hab ich etwa Franks Projekt geschmäht? Nein, natürlich nicht. Aber ein
> ZX-Spectrum-Emulator per Cortex-M ist rein sachlich etwas ganz anderes
> als ein CP/M auf ATmega88. Der Spectrum reizt zum Nachbauen eben WEGEN
> der Spiele, der ATmega nicht. Unterscheide mal die unterschiedlichen
> Kisten.
Es geht ja nicht allein um Spiele - das ist nur eine Anwendung; bei CP/M 
weniger als bei Spectrum, aber auch das geht.
Fakt ist leider, daß ein Spectrum Nachbau etwas aufwendiger wird als 
CP/M auf Atmega mit ein paar Bauteilen - das geht wesentlich schneller.
Wer jetzt Spielefreak ist und mehr braucht, kann ja anfangen selbst 
welche nach zu programmieren auf CP/M ... und damit lernt er dann auch 
was Unnötiges.

> Rede nur weiter, dann reizt mich das so, daß ich mal versuche, so einen
> Universal-Retro-Z80-Computer tatsächlich zu konzipieren - mit einem
> richtigen Z80.
gibt es doch schon alles, nur meistens viel zu teuer.

> Sowas wäre durchaus mal ein reizvolles Projekt. Beides
> einzeln hab ich schon, kenne ich schon, hab ich schon selber entwickelt
> und eines davon war vor Urzeiten auch mal in ner Gazette abgedruckt.
Hast Du noch den Schaltplan?

> Wir alle haben mal angefangen, barfuß das Laufen zu lernen. Gilt auch
> hier und bedarf der eigenen Bemühungen, es zu verstehen. Wenn man es
> dann kann, dann darf man sich auch "technische Elite" nennen - wenn man
> derart eitel ist.
take it easy - das Hauptproblem ist, daß bei vielen das Interesse auch 
abgewürgt wird wegen Kommerz, wegen zuviel Aufwand, usw.

> Aber hier ging es vorrangig um die Frage, wozu - also zu welchem
> letztendlichen Zwecke - die hier besprochene Emulation eines Z80 und
> CP/M auf einem Atmel-IC gedacht ist. Und die Antwort war: weil es geht
> und nur 2 Schaltkreise braucht. Das ist mir ein bissel arg dünn.
und genau das ist die richtige Antwort - sehr wenig Aufwand, geht sogar 
auf Lochraster, kein Platinen ätzen & sonstiger Kommerz notwendig.

> Dinge
> zu tun, nur weil es möglich ist, läßt mich an die Atombombe denken. Ich
> halte das für eine falsche, weil zu unbedachte Sinneshaltung.
das hast Du nun wirklich überall - z.B. 80% aller Sportarten sind 
unsinnig und passiver Sport sogar schädlich wegen Bewegungsmangel ... es 
wird aber gemacht aus Spaß & Amüsement.

von Rapper B (Gast)


Lesenswert?

https://www.youtube.com/watch?v=F2SvMctec9M
So ein richtiges Z80 Projekt hat wenigstens Potential :-)

von Guido D. (gdampf)


Lesenswert?

Nach dieser doch eher weltanschaulichen Diskussion, noch einmal was 
recht bodenständiges:
In allen Schaltungsentwürfen zu AVRCPM ist immer ein ISCP-Anschluss 
vorhanden. Gleichzeitig ist der Reset über 100nF gegen Masse gepuffert.
Bei meinen Billig-China-Adaptern vom Typ USBASP hat das zur Folge, dass 
der Reset noch nicht wieder zurückgesetzt wurde, da fängt AVRDude schon 
an zu programmieren, was natürlich fehl schlägt.
Die Dokumentation von AVR sagt nur aus, dass der Kondensator Sinn macht, 
wenn es bzgl. Störungen recht rauh zugeht, aber bei DEBUGwire nicht 
Verwendung finden darf. Ich deutete das als Hinweis auf besagtes Problem 
mit meinen USBASPs und habe ihn probehalber entfernt - und schon spielt 
AVRDude mit.
Um beidem gerecht zu werden, habe ich den Kondensator nun gejumpert.
Ohne eine neue weltanschauliche Diskussion lostreten zu wollen bzgl. 
Direktkauf in China und ob Firma R*, die hier gerne referenziert wird, 
keine Apotheke ist und ob die Finanzierung deutscher Zwischenhändler 
wirklich eine Sache von Hobbyisten sein sollte, meine Frage an die 
Gemeinde:
Welche ISP-Programmer verwenden denn die Väter des Projektes - oder 
arbeitet Ihr nur noch mit Bootloadern?

Und nun doch noch ein paar Sätze zu vorgenannter Diskussion:
Es gefällt, was den Beteiligten Spaß macht. Die Sinnfrage stellt sich 
vlt. in der Kirche, beim Umweltschutz oder bei kommerziellen Projekten. 
Wer keinen Sinn in einem Vorschlag sieht, braucht ihn doch nicht 
anzunehmen. Deshalb muss man den anderen den Spaß doch nicht vermiesen, 
oder?

Gruß
Guido

von Jörg W. (dl8dtl) (Moderator) Benutzerseite


Lesenswert?

Guido D. schrieb:
> Bei meinen Billig-China-Adaptern vom Typ USBASP hat das zur Folge, dass
> der Reset noch nicht wieder zurückgesetzt wurde, da fängt AVRDude schon
> an zu programmieren, was natürlich fehl schlägt.

Das hat als Aussage keinen rechten Sinn: die ISP-Programmierung erfolgt 
während eines aktiven Resets.

Einzige Erklärung wäre, dass der Treiber in deinem Billigadapter zu 
schwachbrüstig ist und den C nicht rechtzeitig genug entladen hat, bevor 
die Programmierung startet. Aber eigentlich wird die 
Initialisierungssequenz einige Male wiederholt. Insofern würde ich ein 
anderes Problem vermuten.

von W.S. (Gast)


Lesenswert?

Robert K. schrieb:
> Hast Du noch den Schaltplan?

Ja, irgendwo tief in der Bastelkiste schmort auch noch die ganze 
Zeitschrift. Aber das war alles mit BE der 80er Jahre gemacht: TTL, 2K 
RAM usw. Ein heutiger Ansatz sähe ganz anders aus.

W.S.

von Robert K. (Firma: Zombieland) (rko)


Lesenswert?

W.S. schrieb:
> Ja, irgendwo tief in der Bastelkiste schmort auch noch die ganze
> Zeitschrift. Aber das war alles mit BE der 80er Jahre gemacht: TTL, 2K
> RAM usw. Ein heutiger Ansatz sähe ganz anders aus.
>
> W.S.

Nicht schlecht ... ist schon klar, heute sind die Möglichkeiten besser.
Das Projekt, das Peter gefunden hat, ist ja nicht schlecht - nur leider 
geht vieles unter und das ist wirklich schade gerade wegen des minimalen 
Bauteil-Aufwands.
Na ja, es gibt noch andere Projekte mit AVR - die sind etwas aufwändiger 
und dafür dann besser durchdacht.

von Joe G. (feinmechaniker) Benutzerseite


Lesenswert?

Guido D. schrieb:
> Welche ISP-Programmer verwenden denn die Väter des Projektes
einen AVR MKII

von Marcel A. (dl1ekm)


Lesenswert?

Hallo,
ich habe mir jetzt in den Sommerferien den Aeternum vorgenommen (Platine 
V1.0, Doku V1.2 aus dem Repo). Ein paar Kleinigkeiten neben den 
bekannten Errata sind mir noch aufgefallen (R7 wird nirgends 
beschrieben, die Fixes von V1.3 sind noch nicht in den Layouts, einige 
Bilder für den Bestückungsplatz fehlen). Aber bisher sieht es gut aus 
(VT100 fehlt noch).

Hat sich jemand schon die Mühe gemacht, ein Gehäuse per 3D-Druck zu 
entwerfen?

Besten Gruß
Marcel

von Joe G. (feinmechaniker) Benutzerseite


Lesenswert?

Super, wenn das Projekt noch Freunde findet :-)
R7 kann unbestückt bleiben und war nur zur Lastanpassung vorgesehen.
Ich hatte die Version 1.3 selber nicht mehr aufgebaut, bin jedoch an 
Aufbauberichten interessiert um sie einzupflegen.

Ein Gehäuse hatte ich nur in Alu entworfen und realisiert. Da die 
CAD-Daten vorliegen, kann es sicherlich auch in 3D-Druck überführt 
werden.

Gruß Jörg

von Marcel A. (dl1ekm)


Lesenswert?

Hallo Jörg,
na klar - ich bin in den letzten Monaten (Jahren?) allerdings wie 
Hans-Werner etwas mehr beim NKC-Projekt (NDR Klein Computer) unterwegs 
gewesen - da gibts immer wieder neue Platinen - zuletzt auch 8080 und 
6502-CPU :-)

Gehäuse - muss mir mal die DXF-Dateien ansehen :-)

Da scheint aber die Datei für "vorne" zu fehlen. Würden die Frontblenden 
auch auf ein Standardgehäuse passen?

Gruß
Marcel

von Marcel A. (dl1ekm)


Lesenswert?

Die Seitenteile scheinen auch zu fehlen, ansonsten klappt ein Neuexport 
aus dem FTD in STEP und dann Konvertierung zu STL :-)

von Joe G. (feinmechaniker) Benutzerseite


Angehängte Dateien:

Lesenswert?

Ich habe mal die Daten für die Front- und Rückplatte angehangen. Die 
Seitenteile sind aus Alu-Strangprofil wo die Boden- und Deckplatte 
eingeschoben werden. Tatsächlich hatte ich die Gehäusemaße genau nach 
der Leiterplattengröße ausgelegt, ein Standardgehäuse wird wohl nicht 
passen :-(

von dl1ekm (Gast)


Lesenswert?

Hi,
so, läuft alles prima! Jetzt fehlt nur noch der VT100 Teil.

Ein paar Fragen (ist alles schon wieder so lange her...)
- kriegt man auf der RS233 auch mehr als 9k6 hin? FÜr die Stamp hatte 
Leo doch mal den STAT-Befehl um "schnelle" Varianten erweitert?
- Doku zu ZSDOS habe ich gefunden - aber gibts auch noch was spezielles 
für den Aeternum? So als Nachschlagewerk wie bei der Z180 Stamp?

Gruß
Marcel

von dl1ekm (Gast)


Lesenswert?

z.B. auch - wie programmiert man die "Soundausgabe"? Oder Hinweise zu 
dem Thema BDOS-Aufruf in Sample bei Turbo Pascal usw.?

von Joe G. (feinmechaniker) Benutzerseite


Angehängte Dateien:

Lesenswert?

dl1ekm schrieb:
> - kriegt man auf der RS233 auch mehr als 9k6 hin?

Ja, bekommt man. Im Anhang mal einige Tools von Martin, Leo C. und mir 
um die RS232, RTC und VT100 zu bedienen. Ein Turbo Pascal Demo für die 
BDOS Aufrufe muß ich mal suchen, ist schon wieder etwas her, dass ich 
sowas programmiert habe. Die Soundausgabe auf dem Propeller ist noch 
nicht implementiert. Ich habe zwar ein Spin-Code, der den AY3891X / 
YM2149F Chip emuliert und auf das Audiointerface ausgibt, doch dazu 
müßte noch ein Befehlssatz im VT100 Protokoll implementiert werden.

: Bearbeitet durch User
von Joe G. (feinmechaniker) Benutzerseite


Angehängte Dateien:

Lesenswert?

Hier der Spin-Code für ein Sounddemo sowie ein ganz kurzes Demo für BDOS 
und BIOS Aufrufe.

von Marcel A. (dl1ekm)


Lesenswert?

So - auch VT100 geht! Tolles Projekt!
Gerade in der Anbindung von "echter" Hardware sehe ich deutliche 
Vorteile gegenüber anderen Emulationen z.B. auf dem ESP32 - auch wenn 
die HW langsam in die Jahre gekommen ist :-)

Mir scheint es, dass das Projekt so bei 90% steht? Die Implementierung 
des Soundchips auf dem Propeller finde ich toll - "müsste man mal fertig 
machen" :-). Auch denke ich, dass eine erweitere Doku ähnlich dem 
STAMP-Projekt das Potential der Lösung deutlich stärker zeigen würde. 
Aber vielleicht kriegen wir das ja als Community noch gewuppt.

Zum Thema RS232 Speed: Ich schau mir die samples mal an. Meine Idee war 
nur, daran direkt mein VT420 Terminal anzuschließen, und da wären 115200 
besser als 9600 :-) Bei dem CPM für die Z180-Stamp hatte Leo dazu ich 
glaube den STAT Befehl verwendet und einige langsame Baudraten dann auf 
der AVR-Seite mit Highspeed versorgt.

Mein kleiner Beitrag: Im Rahmen des Aufbaus sind mir in der Anleitung 
noch folgende Unklarheiten in der Doku aufgefallen:
- Die Jumper für MODE 2 (6er) sind spiegelverkehrt dargestellt - sowohl 
in der Anleitung als auch im Anhang. Alle anderen Darstellungen sind 
dagegen korrekt.
- Propeller: Es wäre gut, wenn man ERST die Bauteile für die Reset-Logik 
aufbaut und DANN erst den Propeller / Speaker. Denn so konnte ich den 
SMD BC817 kaum noch einlöten.
- Ein Hinweis zu R7 (optional) wäre gut
- Seite 15: Fehler bei den Widerständen. R16+R17 sind 150 Ohm, nicht R18 
und R17
- Ein Tipp zur Ausrichtung des I2C Pegelwandler-IC wäre schön, da nichts 
auf der Platine erkennbar ist
- Die Bestückung von C20 ist nicht in der Anleitung
- Die Bestückung von C21 fehlt
- JP1 wird nicht erwähnt

Besten Dank für das Projekt!
Marcel

von Joe G. (feinmechaniker) Benutzerseite


Lesenswert?

Vielen Dank für die zahlreichen Anmerkungen! Ich werde sie nach meinen 
Urlaub einpflegen.
Da die Änderung der Baudrate bei CP/M 2.2 nicht so elegant wie bei CP/M 
3.0 gelöst ist, außerdem die Kommunikation eigentlich über I2C to 
seriell läuft, gibt es ja das kleine Tool, welches ich beigefügt habe. 
Wie schnell der I2C/Seriell Chip ist, und ob er 115K kann, mußt du mal 
dem Datenblatt entnehmen.
Ja, eine erweiterte Doku ist schon wünschenswert – vielleicht findet 
sich ja noch ein Mitstreiter.

von Thomas N. (tonevi)


Angehängte Dateien:

Lesenswert?

hat schon mal jemand versucht, das AVR CP/M mit einem solchen MicroSD 
Cardreader zu betreiben? Dieser ist ja mit Pegelwandlern ausgestattet, 
so dass die ganze Schaltung mit 5V gespeist werden kann. Hierzu habe ich 
eine vorhandene Micro SDHC Karte mit FAT16 formatiert und die 
Imagedateien darauf kopiert. Dann habe ich diese MicroSD Karte zunächst 
in einen MMC/MicroSD Adapter gesteckt und mit dem vorhandenen CP/M Stick 
(Hardware Variante 3) gebootet, was problemlos funktioniert hat.

Wenn ich nun aber den Cardreader statt des MMC Slots am SPI des 
ATmega328P bei Vcc=5V betreibe, lande ich nach dem RAM Test in einer 
Endlosschleife mit Bootversuchen von der SDHC Karte. Hat jemand eine 
Idee woran das liegen könnte?

Beitrag #7023546 wurde vom Autor gelöscht.
von Guido D. (gdampf)


Angehängte Dateien:

Lesenswert?

Hallo Thomas,
klar - und das funkt ganz hervorragend.
Auf dem Foto ist eine 5V-Schaltung aufgebaut. Mit Uhr und GPIO.
Ich weiß nicht, welche RAMs Du verwendest, aber meine KM44C256CP-7 
kommen gut mit den 5 Volt klar. Vieleicht zieht aber irgend etwas zu 
viel Strom?

Gruß
Guido

von Thomas N. (tonevi)


Angehängte Dateien:

Lesenswert?

Vermutlich hast Du recht. Ich hatte zur Bestückung des ursprünglichen 
CP/M Sticks Siemens RAMs bestellt, die bei 3,3V nicht funktionierten. Um 
sie trotzdem zu nutzen, habe ich ein ganz minimalistisches Redesign zum 
Betrieb an 5V erstellt mit den beschriebenen Bootproblemen an dem 
"Arduino" MicroSD Adapter. Um das Problem zu lösen habe ich die MicroSD 
Karte u. a. über einfache Spannungsteiler zur 5V zu 3,3V Pegelanpassung 
der SPI Signale angeschlossen. Das hat perfekt funktioniert, so dass ich 
auf die Schnelle einen eigenen Adapter gebaut habe, der sogar noch etwas 
kleiner als das Kaufteil ist.

- Thomas

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.