HRCPM12
Von Ralph Hänsel gibt es umfangreiche Software für den AC1-2010. Neben seinem usb-komfort-monitor_v110 stammt aus seiner Feder auch eine Gruppe von CP/M-Systemen.
Es gibt vier unterschiedliche Varianten der Version 1.2:
- HRCPM12-AC2010_D000_FEFF_E600.BIN
- HRCPM12-SCCH_D000_FEFF_E600.BIN
- HRDOS12-AC2010_D000_FEFF_E600.BIN
- HRDOS12-SCCH_D000_FEFF_E600.BIN
HRDOS ist ein ZSDOS kompatibles CP/M 2.2 Betriebssystem für den AC1. Es basiert auf dem KC85/x-CP/M-System MLDOS.
HRCPM ist ebenfalls ein ZSDOS kompatibles CP/M 2.2 Betriebssystem für den AC1, welches aber auf dem CPA CCP/BDOS vom 24.08.86 basiert und damit im Befehlssatz kompatibel ist. CCP und BDOS sind bis auf Seriennummer und Datumskennung identisch mit der beim FA-CP/M genutzten CP/A-Version (incl. Zusatzkommandos LOAD und EXIT).
Die obigen Versionen unterscheiden sich in ihrer unterstützten Hardware (AC1-2010 vs. SCCH) und in ihren residenten Kommandos (CPA vs. MLDOS)
Downloads
Ich habe 2023-2024 die Software reassembliert und basierend auf den genutzten Original-Quellen für MLDOS, CPA etc. Quellen für HRDOS/HRCPM rückentwickelt. Vorteil ist die leichte Konfigurierbarkeit mit Diskettenformaten/verschiedenen Festplatten u.a. (OPTIONEN.INC, Ports etc. in HRBIOS12.ASM)
- BIN's, orig. Doku, Quellcodes
- deutsche Beschreibung ZSDOS RedNil 1994
- MLDOS v.1.5 Quelldateien
Programme
Check+CPM-Umgebung_2000_25FF.BIN Testprogramm, ob der AC1 eine korrekt funktionierende Speicherumschaltung besitzt. Start des Testprogramms mit „t“.
ZSHELP.COM CP/M-Programm zur Anzeige einer kleinen Hilfe
FORMATAC.COM CP/M-Programm zum Formatieren von Disketten und Festplatten
Hardware
AC1-2010 / FA-Mode
- Monitor V8 oder 1088
- RAM-Floppy nach präcitronic mit 1024 KByte
- Floppy-Platine nach FA, FDC-Controller Port 40h, /WAIT Monoflop Port 43h, Latch 74LS175 Port 45h
- Abschaltung Monitor via Port 1Eh, Bit 0
- Farb-BWS, der einfache BWS funktioniert natürlich auch
- GIDE mit 256K-DOM-Modul
- keine GIDE-RTC-Nutzung
SCCH
- Monitor V8 oder 1088
- RAM-Floppy nach präcitronic mit 1024 KByte
- Floppy-Platine nach SCCH, FDC-Controller Port 40h, /WAIT Monoflop Port 50h, Latch 74LS175 Port 48h
- Abschaltung Monitor via Port 14h, Bit 2
- Farb-BWS, der einfache BWS funktioniert natürlich auch
- GIDE mit 256K-DOM-Modul
- GIDE-RTC-Nutzung bei ZSDOS
Dokumentation
HRDOS12 / HRCPM12
Vers. 1.2 Stand 03.12.2011
HRDOS12 ist ein ZSDOS kompatibles CP/M 2.2 Betriebssystem für den AC1. Es basiert auf einem
KC 85x ähnlichen CCP, dem ZSDOS BDOS und dem AC1 Bios.
HRCPM12 ist ebenfalls ein ZSDOS kompatibles CP/M 2.2 Betriebssystem für den AC1 welches aber
auf dem CPA CCP/BDOS vom 24.08.86 basiert und damit im Befehlssatz kompatibel ist.
HRDOS / HRCPM wurde von R.Hänsel auf der Basis von Mario Leubners MLDOS für den AC1 komplett neu entwickelt und stellt für den AC1 User, die aktuell fortschrittlichste Basis zur Arbeit mit dem Betriebssystem CP/M 2.2 dar.
Wie jedes CP/M, setzen sich sowohl HRDOS als auch HRCPM aus 3 prinzipiell beliebig austauschbaren Bestandteilen zusammen:
CCP D000H-D7FFH CommandControlProzessor = Kommandointerpreter BDOS D800H-E5FFH BasicDiskOperationSystem BIOS E600H..FCFFH Bios
Der CCP steuert die Kommunikation des BDOS mit der realen AC1 Peripherie, die im BIOS an die CCP/BDOS Schnittstellen angepasst werden. Im BIOS wird auch entschieden, welche Hardware das CP/M nutzen kann. Im HRDOS/HRCPM sind das unter anderem HD und Diskette, aber auch die Uhr und versch. RAM-Floppy s sowie Tastaturtreiber.
HRDOS und HRCPM sind im BIOS fast identisch und unterscheiden sich nach außen nur im Befehlssatz des CCP und Einsprungadressen. Die wesentlichen Routinen sind identisch. Die Einzelheiten zur Programmierung und Nutzung von CP/M sollen hier nicht erläutert werden, sondern vielmehr die spezifischen BIOS Eckdaten und Eigenheiten.
Eckdaten zum BIOS:
- Unterstützung HD's am GIDE, sowohl MASTER als auch SLAVE,
- mit Adapter am GIDE funktionieren auch Flash-Speichermedien,
- Unterstützung 3,5 & 5¼ Zoll Laufwerke mit 40/80 Spuren,
- am FDC sind alle 4 Laufwerke !! (LW-Nr. 00..03) unterstützt,
- Unterstützung vieler Diskettenformate, Standard 800K und 640k,
- Diskette in Laufwerk B: 100% KC kompatibles Dateiformat!,
- Interruptgesteuerter Tastaturtreiber,
- Unterstützung COLOR-BWS durch CONOUT Routine mit FARBE,
- Unterstützung RAM-Disk bis 4 MB,
- Unterstützung Echtzeituhr im GIDE,
- HRDOS und HRCPM starten und funktionieren auch ohne installiertes GIDE und/oder FDC-Controller!!,
- KEINE automatische Formaterkennung!
Voraussetzungen für HRDOS/HRCPM:
- CP/M tauglicher AC1,
- RAMFloppy nach Präcitronic / Modul 3 mit mind. 256k,
- für Diskette: FDC Controller (FDC Port 40/41) nach SCCH oder ACC (AC1 2010),
- für HD: GIDE Modul an Port 80H,
- für Farbe: COLOR-BWS, der einfache BWS funktioniert natürlich auch !,
- AC1 SCCH Monitor ab V8.x aufwärts,
Gestartet werden HRDOS und HRCPM mit einem Sprung auf Adresse E600H, also
J E600H CR
direkt aus dem Monitor.
Nach dem Programmstart löscht das BIOS den Bildschirm und schreibt in der oberen Statuszeile,
seine Versionsnummer, die Art des installierten BDOS (ZSDOS oder CPA), die Art des
Tastaturtreibers (ConIn INT oder ConIn V3) und den Stand der letzten Änderung.
In den nächsten Zeilen folgen die installierten Parameter von GIDE und den HD s mit den
festgelegten Laufwerksbuchstaben, sowie eine Zeile tiefer die FDC-Controllerparameter nebst
Diskettenlaufwerke, die installiert sind.
Hierbei bedeuten die Zahlen nach den Laufwerksbuchstaben bei Diskette NUR die PHYSISCHE
Laufwerksnummer. AC1 2010 User nutzen meist nur LW 0, also B0, F0, G0
Wieder eine Zeile tiefer steht die installierte RAM Floppy und deren Größe.
Achtung !! Um den Programmcode klein zu halten, sind das alles statische Anzeigen, die bei Änderungen ggf. nicht stimmen müssen !
In der gleichen Zeile wie die RAM Floppy Größe erfolgt beim Start die Frage, Format A: (J)? , also ob die RAM Floppy formatiert werden soll. Das ist beim 1. Start zwingend, andernfalls stürzt CP/M beim ersten WBOOT ab, weil der CCP/BDOS Code nicht aus den Systemspuren der RamDisk geladen werden kann !!
Nach erfolgreichem Init..OK sollte sich dann der CP/M Prompt mit A:> melden und der Cursor blinken. Nun kann's schon mit der Arbeit losgehen.
Die verfügbaren CCP Kommandos, immer mit CR = Enter abgeschlossen:
HRDOS | HRCPM | Bedeutung |
---|---|---|
0 | EXIT | CP/M verlassen und zum Monitor zurück |
1 | CLS | Bildschirm löschen und Kursor an Bildanfang |
D | DIR | DIR=Inhalt vom aktuellen Laufwerk anzeigen |
E | ERA Filname | ERA=löschen, Datei löschen |
nicht unterst. | REN | REN=umbenennen, Datei umbenennen |
L | LOAD | File mit Turbo in RAM laden |
C | nicht unterstützt | TPA von 2000H nach 0100H umladen |
G | GO | GO Programm ab 0100H starten |
H | nicht unterstützt | Help zeigt Liste der CCP Befehle |
T | nicht unterstützt | Anzeige und Uhrzeit stellen |
S xx FileNam | SAVE xx FileName | Speichert xx CPM Seite als Datei ab |
Z | nicht unterstützt | schaltet den Zeichengeneratur um (PIO B3 Port) |
4 | nicht unterstützt | schaltet AC1 zwischen 2/4Mhz Takt um (IO Port F0H Bit0=1) |
Files laden und speichern:
A:>LOAD CR lädt ein File im TurboMode zunächst nach Adresse 2000H und kopiert es nach dem
erfolgreichen Laden an Adresse 0100H.
Hier kann es gleich mit dem Befehl A:>GO CR gestartet werden. Besser ist es jedoch, das File
sofort auf Disk zu speichern.
A:>SAVE xx Filename CR kann genau das tun. Hier kommt nun auch die nach dem Laden angezeigte Anzahl der 100H Blöcke: ins Spiel, denn sie sind die Anzahl der CP/M Blöcke die beim Speichern (als xx) eingegeben werden müssen. Das SAVE Kommando speichert immer xx 100H Blöcke beginnend ab 0100H als Filename auf der Disk ab, und zwar unabhängig davon was grad im Speicher steht.
Ein File von Disk wird durch Eingabe des Namens geladen und anschließend auch sofort gestartet.
Zeitanzeige und RTC Uhr stellen:
A:>t CR zeigt die aktuelle Uhrzeit und das Datum an, sofern GIDE mit RTC
A:>t s CR setzt das Datum und Uhrzeit in der RTC
Spezialkommando C (HRDOS)
A:>C CR kopiert den RAM von 2000H..CFFFH nach 0100H..BEFFH. Dieses Kommando eignet sich hervorragend für die Arbeit am EMU, um ein Programm direkt an 2000H zu laden und dann sofort mit C nach 0100H zu kopieren.
Spezialkommando 4 (HRDOS)
A:>4 CR schaltet den CPU-Takt wechselseitig zwischen 2/4Mhz Takt um, (IO-Adr. F0H Bit 0=0/1), Umschaltung ist im COLOR-BWS enthalten
Spezialkommando Z (HRDOS)
A:>Z CR schaltet den ZG wechselseitig um (PIO1 Port B3)
Der CCP ist für das Auswerten der eingegebenen Kommandos zuständig. Findet er kein internes Kommando, so interpretiert der CCP Kommando als Filename.COM und versucht das File vom aktuellen Laufwerk zu laden. Findet er das File wird es an Adresse 100H geladen und gestartet.
A:>POWER startet POWER aus A:
A:>C:POWER startet POWER aus Laufwerk C:
A:>C:POWER Test startet POWER aus Laufwerk C: und startet den Test auf A:
Das Programm POWER.COM ist für das komfortable Kopieren und Bearbeiten von Files im CP/M zuständig. HRDOS und HRCPM selbst bieten KEINE Kopierfunktion an.
Auf eine normale Eigenheit des HRDOS möchte ich hinweisen. Beim Laden von COM-Files darf die Dateiendung COM nicht angegeben werden, weil sonst die Datei nicht gefunden wird. A:>POWER.COM würde im HRDOS eine Fehlermeldung erzeugen, im jedoch HRCPM nicht !
Einige wichtige Hinweise und Besonderheiten:
- In CP/M sind ausschließlich GROSSBUCHSTABEN in Filenamen erlaubt. Das BIOS wandelt diese ggf. aber um !
- Damit CP/M funktioniert, muss die RAM Floppy zwingend zuverlässig funktionieren !
- Beim Schreiben auf die RAM Floppy findet automatisch ein Vergleichslesen statt. Das macht zwar den Zugriff etwas langsamer, ist aber beim Einsatz von dRAM für die RamDisk notwendig.
- Die NMI Taste ist im CP/M tabu !! und führt zwingend zum Absturz ! Leider liegt der wichtige FCB1 genau auf der NMI Startadresse. Das kann leider auch nicht verändert werden.
- Sollte CP/M abstürzen, springt es meist in die Registeranzeige (Monitor 10/88), daraus kann man Rückschlüsse über die Absturzursache ziehen.
- Wenn CP/M mal hängen sollte, bitte mit RESET raus und Disk NICHT rausnehmen, sondern SOFORT CP/M wieder starten. So könnte ein ggf. noch nicht geschriebenes File doch noch gespeichert werden, weil das BIOS einen ungeschriebenen Puffer erkennt und schreibt !
- Ein CSAVE Kommando ist zur Zeit nicht vorgesehen, weil keine Notwendigkeit mehr besteht. Zum Speichern existieren genügend Alternativen.
- Die Zahl im Dateinamen HRDOS12 bzw. HRCPM12 stellt die Versionsnummer dar.
Weitere Hinweise:
1. Bei sämtlichen CPM-Bios'n ist jeweils der FDC und das GIDE bereits mit drin, aber so gestaltet, das erst beim realen Zugriff auf die Routinen wirklich zugegriffen wird.
Solange nur mit A: gearbeitet wird, wird es keine Fehlermeldung geben, wenn KEIN FDC oder GIDE gesteckt ist.
Beim FDC sind dabei prinziell alle 4 Laufwerks-ID ansprechbar. Das ist auch in der Startausschrift zu erkennen, welche ID genutzt wird.
Beim GIDE sind 3 Laufwerke eingestellt, die auf der HD physikalisch ab Spur 10 (dez.) beginnen. Ich nutze die Spur 1 im Monitor (V10/88) und die Spuren Spuren 4..9 für DiskVerHD und zum Booten versch. BootLader.
Konkret sind die Laufwerke wie folgt im Bios fest verdrahtet !
; DeLock SSD 256MB je Track 256KB, 984 Tracks ; 1.Partition beginnt ab Spur 10, damit stehen die Spuren 0..9 ; zusätzliche als Bootspuren PART C, 10, 64,2048 ; C: mit 64 Spuren ab Spur 10 (16 MB) HR PART D,150, 64,4096 ; D: mit 64 Spuren ab Spur 150 (16 MB) HR PART E,300, 64,4096 ; E: mit 64 Spuren ab Spur 300 (16 MB) HR ;PART E,300,128,4096 ; E: mit 128 Spuren ab Spur 300 (32 MB) HR Als Festplatte nutze ich eine Delock 256MB SSD ; Master = DELOCK SSD (256 MByte) CYLS0 EQU 984 ; Anzahl Zylinder HEAD0 EQU 16 ; Anzahl Koepfe SECS0 EQU 32 ; Anzahl Sektoren
Diese Anleitung ist noch nicht ganz fertig !
Viel Spaß damit wünscht
Ralph Hänsel
Details
CONSOLE die Bildschirm-Steuerzeichen sind SCP-kompatibel
Code | Gültig | Taste | Beschreibung |
---|---|---|---|
00h | NOP (keine Wirkung) | ||
01h | ^A | Cursor links oben (home) | |
07h | ^G | akustisches Zeichen an Tastatur | |
08h | ^H | Cursor links | |
0ah | ^J | Linefeed (neue Zeile) | |
0ch | ^L | Bildschirm loeschen, Cursor links oben | |
0dh | ^M | Carriage Return (an Zeilenanfang) | |
14h | ^T | Rest des Bildschirms loeschen | |
15h | ^U | Cursor nach rechts | |
16h | ^V | Rest der Zeile loeschen | |
18h | ^X | Zeile loeschen, Cursor an Zeilenanfang | |
1ah | ^Z | Cursor eine Zeile hoch | |
1bh yyh xxh | nur cpm320 | ESC Spalte Zeile | Cursorpositionierung, Spalte/Zeile +00h oder +80h möglich |
7fh | nur cpm320 | Delete (streichen Zeichen links vom Kursor) | |
1bh 5Dh xxh | ESC 5Dh farbbyte | Setzen Farbe (bei Color-BWS | |
1bh 5Fh xxh | nur hrdos | ESC 5Fh Zeichen | direkte Zeichenausgabe (Grafik >= 80h und < 20h) |
1bh yyh+80h xxh | nur hrdos | ESC Spalte+80h Zeile+80h | Cursorpositionierung, Spalte+80h! Zeile kann +80h |
02h | nur hrdos | Kursor ein | |
03h | nur hrdos | Kursor aus | |
82h | nur hrdos | Kursor ein | |
83h | nur hrdos | Kursor aus | |
84h | nur hrdos | normale Darstellung | |
85h | nur hrdos | invers | |
86h | nur hrdos | intensiv (HighLight) | |
87h | nur hrdos | intensiv + invers |
Turbo Pascal - Patch
Anpassung von Turbo Pascal - Programmen an HRCPM12 (s.a. TINST.COM)
125 0153 TermTypStr: 16,AC1-2010 (64x32) 0168 Width: 64 0169 Height: 32 016A ???: 0 016B InitialStr: 01,82 017B ResetStr: 00 018B CursorStr: 03,1B,00,00 019B BinaryAddr: 1 019C ColumnOff: 128 019D LineOff: 128 019E XPosition: 3 019F YPosition: 2 01A0 DelayCursor: 0 01A2 ClearScrStr: 01,0C 01A8 HomeStr: 00 01AE InsLineStr: 00 01B4 DelLineStr: 00 01BA DelayLine: 0 01BC EraToEolStr: 01,16 01C2 HLStartStr: 01,86 01C8 HLEndStr: 01,84 01CE DelayHL: 0