Unterschiede

Hier werden die Unterschiede zwischen zwei Versionen angezeigt.

Link zu dieser Vergleichsansicht

Nächste Überarbeitung
Vorhergehende Überarbeitung
cpm:cpa [2011/02/14 18:16] – CP/A-BDOS-Quellcode und Analyse volkerpcpm:cpa [2024/03/05 10:24] (aktuell) – [Downloads] volkerp
Zeile 1: Zeile 1:
 ====== CP/A ====== ====== CP/A ======
  
-CP/A ist eine CP/M-kompatibles Betriebssystem der Akademie der Wissenschaften der DDR.+CP/A ist ein CP/M-2.2-kompatibles Betriebssystem der **Akademie der Wissenschaften der DDR**, der Hauptentwickler war  **Hans Willy Dames**. 
 + 
 +CP/A setzt einen Z80-Prozessor voraus. Die Bestandteile CCP, BDOS und BIOS sind in sich abgeschlossene Programmteile und unabhängig voneinander. Sie können einzeln oder gemeinsam gegen die entsprechenden Programmteile des originalen CP/M 2.2 ausgetauscht werden. Alle CP/M-Programme laufen weiter unverändert. 
 + 
 +Vorteile des CP/A gegenüber CP/M 2.2. sind erweiterte Funktionalitäten. Diese sind in einem ständig erweiterten Handbuch CPA.DOK nachzulesen. Herausragend sind 
 + 
 +  * Urladen des Systems aus einer Datei @OS.COM. Das System musste nicht in speziellen Systemspuren gespeichert werden. 
 +  * automatische Erkennung von Diskettenformaten 
 +  * eingebauter Systemmonitor 
 + 
 +Das CP/A wurde für Bürocomputer A5120, A5130 und den PC1715 ausgeliefert. Es gab BIOS-Quelltexte und REL-Dateien von CCP und BDOS, mit denen individuelle Systeme generiert werden konnten. 
 + 
 + 
 +s.a. http://www.robotrontechnik.de/html/software/scp.htm#cpa 
 + 
 + 
 +===== Downloads ===== 
 + 
 +  * {{:cpm:cpa_src.zip|}} Assembler-Quellcode von CCP und BDOS, 3 Versionen, incl. Quellen von CP/M 2.2 zum direkten Vergleichen 
 +  * {{:cpm:cpa.zip|}} komplettes CPA-Archiv aller mir bekannten Versionen (s.u.) 
 + 
 + 
 +===== Versionen ===== 
 + 
 +  * cpa biop 861106.zip 
 +  * cpa biop 861125.zip 
 +  * cpa biop 890103.zip 
 +  * cpa bios 880531.zip 
 +  * cpa bios 880531.zip 2. Variante 
 +  * cpa bios 890925.zip 
 +  * Verschiedene Beschreibungen 
 + 
 +===== CCP ===== 
 + 
 +Das CCP von CP/A ist ziemlich sicher ursprünglich aus einem reassemblierten CP/M-2.2-CCP entstanden; wurde aber konsequent auf Z80-Befehle umgearbeitet und vielfach verändert und erweitert. 
 + 
 +2014: Ich habe das CCP, welche im CP/A für den PC1715 und dem des Z9001 enthalten sind, reassembliert und mit den Originalmarkennamen und -kommentaren des originalen CP/M-2.2 CCP von Digital Research versehen. Ein Textvergleich aller Varianten offenbart die Unterschiede. 
 + 
 +Die Version für den Z9001 und PC1715 (neuer?) unterscheiden sich in ein paar Punkten: 
 + 
 +  * der Z9001 benutzt eine andere Adresse für die User-und Laufwerks-Speicheradresse 
 +  * die Copyrightmeldung ist geändert 
 +  * das DIR-Kommando zeigt die Dateien in 2 statt 4 Spalten an 
 +  * Meldungstexte liegen am Ende des CCP 
 +  * der Buffer fürs CLK-Kommando liegt an einer anderen Adresse, außerdem werden nur 3 Byte genutzt 
 +  * kleine Unterschiede in der Implementierung, besonders bei den CP/A-spezifischen Kommandos EXT, SWAP, CLK 
 + 
 +**Besonderheiten des CCP** 
 +                
 +Das CCP enthält gegenüber der Version CP/M 2.2 einige Erweiterungen  (bei 
 +gleichem Hauptspeicherbedarf von  800h  Bytes). Sie  betreffen vor allem die 
 +Arbeit mit verschiedenen  Nutzerbereichen, wie sie sich bei 800k-Disketten als 
 +sinnvoll erweisen kann. 
 +                
 +Bei  einem eingestellten Nutzerbereich größer als  0  lautet die Prompt-Meldung 
 +du> statt nur d> (d für Default-Laufwerk, u für  dezimale Nutzernummer). 
 +Hierdurch hat der Anwender  bei der  Aufteilung einer Diskette in mehrere 
 +Nutzerbereiche einen leichteren Überblick,  in welchem Bereich er sich  z.Zt. 
 +bewegt. 
 +                
 +Kommandofiles  werden  bei USER>0 auch unter USER 0  und  wenn dort erfolglos 
 +auf der Systemdiskette (im Kaltstart-LW)  unter USER 0 gesucht (gilt nicht für 
 +nachgeladene Files!). 
 +                
 +Weiterhin existieren zusätzliche residente Kommandos: 
 +                
 +**CLK** hh:mm:ss tt.mm.jj 
 + 
 +Durch  dieses  Kommando  können Uhrzeit  und  Datum (beide Angaben ab 50h in 
 +BCD-Form vom Kaltstart bzw. von  ACCOUNT hinterlegt) neu gestellt  werden. 
 +                          
 +**GO** <beliebige Parameter> 
 +                          
 +Das  letzte  geladene Programm wird   ohne  Neuladen aktiviert,  Parameter 
 +können wie beim  Direktaufruf angegeben werden,  Nutzerbereich beliebig (d.h. 
 +das Programm  kann  zuvor über einen anderen  Nutzerbereich in den 
 +Hauptspeicher gebracht worden sein), 
 +                  
 +**EXT** [d:]<filename> 
 +                          
 +Das  angegeben  COM-File  wird zu  einem  residenten Kommando erklärt,  indem 
 +es vor BDOS,  CCP und  vor evtl.  schon  residenten zusätzlichen Kommandos  im 
 +Hauptspeicher abgelegt wird, um bei Aufruf statt von Diskette von dort nach 100h 
 +geladen zu werden. Hierdurch  verringert sich jedoch der TPA  entsprechend. 
 + 
 +Da  residente  Kommandos nur maximal 4 Zeichen  lang sein dürfen, trifft dies 
 +auch auf <filename> zu. 
 +                
 +**RES** 
 + 
 +Streichen aller zusätzlich residenten Kommandos 
 + 
 +**HELP** 
 + 
 +Ausgabe einer Liste aller z.Zt. residenten Kommandos 
 +                
 +Bei  jedem  Warmstart prüft das BIOS,  ob das über  das  CCP definierte 
 +Standard-Laufwerk im System definiert ist. Im negativen  Fall (z.B. 
 +Tippfehler) wird auf das Kaltstart-Laufwerk umgeschaltet, der Nutzerbereich 
 +bleibt erhalten.
  
 ===== BDOS ===== ===== BDOS =====
  
-Vom BDOS lag mir leider kein Quelltext vor. Ich habe deshalb das BDOS, was im CP/A für den Z9001 enthalten ist, reassembliert und mit den Originalmarkennamen und -kommentaren des Originalen CP/M-2.2 BDOS von Digital Research versehen. Ein Textvergleich beider Varianten (bdos_cpa.asm und bdos22.asm) mittel DIFF offenbart die Unterschiede:+Vom BDOS lag mir leider kein Quelltext vor. Ich habe deshalb das BDOS, welche im CP/A für den für den PC1715 und dem des Z9001 enthalten sind, reassembliert und mit den Originalmarkennamen und -kommentaren des originalen CP/M-2.2 BDOS von Digital Research versehen. Ein Textvergleich beider Varianten (bdos_cpa.asm und bdos22.asm) mittels DIFF offenbart die Unterschiede:
  
   * Das CP/A-BDOS wurde im Prinzip komplett und fast 1:1 aus dem DR-BDOS abgekupfert   * Das CP/A-BDOS wurde im Prinzip komplett und fast 1:1 aus dem DR-BDOS abgekupfert
Zeile 15: Zeile 114:
   * DSKWR2 hat einen Patch am Anfang   * DSKWR2 hat einen Patch am Anfang
   * READ beachtet zusätzlich 13H (Ctrl-S)   * READ beachtet zusätzlich 13H (Ctrl-S)
 +
 +Die Version vom PC1715, datiert 11.1.89, enthält eine kürzere Meldung bei "bad sector", ist ansonsten identisch mit der vom Z9001.
 +
 +2014/08: Aus den Quelltexten des BIC A5105 geht hervor, dass W. Dames das originale BDOS reassembliert und hat. Das dort verwendete BDOS stammt direkt vom BDOS des CP/A ab ("//modifizierungen gegenueber original cp/m 2.2: (Original Dames//") Viele Marken heißen auch noch "i<hexadr>"
 +
 +**Besonderheiten des BDOS**
 +               
 +CP/A unterscheidet sich durch folgende inhaltlichen  Veränderungen
 +im  BDOS vom Betriebssystem  CP/M,  Version  2.2  (bei  gleichem
 +Hauptspeicherbedarf von E00h Bytes):
 +               
 +- Beschleunigung der Arbeit mit Nicht-Default-Laufwerken.  Ist im    FCB  ein
 +anderes als das  Default-Laufwerk  angegeben (FCB[0]<>0) und dies ist nicht
 +ausgewählt, so wird vom BDOS auf  dieses umgeschaltet (SELDSK) und beim
 +Verlassen  nicht zurückgeschaltet,  sondern  nur eine hängende  Umschaltung
 +vermerkt.
 +Dadurch  wird eine ständige Übernahme  der  Disk-Parameter durch  das BDOS
 +vermieden,  so dass auch in diesem Fall  die gleiche  Geschwindigkeit  wie  bei
 +der Arbeit  mit  Default- Disketten erreicht wird.
 +               
 +- Wegfall der ^S-Funktion.
 +
 +Das  Stoppen  von Konsolausgaben kann  als  Spezialfall  der allgemeinen Stop-
 +Funktion im BIOS (s.5.1.3) erreicht werden. Verbunden  mit  dem Wegfall der ^S-
 +Funktion konnte  auf  die Pufferung von Konsoleingaben im BDOS völlig
 +verzichtet werden,  d.h. es werden keine Zeichen vertauscht, wenn zwischen
 +BDOS und direkter BIOS-Tastatureingabe gewechselt wird.
 +               
 +- ^S  und DEL wirken bei der Stringeingabe über das BDOS  wie ^H.
 +               
 +- Um eine Arbeit ohne LW A (weil es gerade defekt ist und  die Laufwerke nicht
 +umgesteckt werden können) zu erlauben, wird statt Laufwerk A:  dasjenige
 +Laufwerk, von dem aus der Kaltstart  erfolgte  bei der BDOS-Funktion "Disk-Reset"
 +selektiert.  Da mit dieser BDOS-Funktion auch die Abarbeitung von
 +SUBMIT-Strömen  verbunden ist,  muss daher beim Aufruf  von SUBMIT das
 +Kaltstart-Laufwerk als Standardlaufwerk  zugewiesen sein, damit der
 +Kommandostrom dort abgelegt wird!
 +Erfolgte  der Kaltstart von Laufwerk A,  so hat diese  BDOS-Änderung keine
 +Auswirkungen.
 +               
 +- IX  und  IY werden durch das BDOS (und daraus  resultierende BIOS-Aufrufe)
 +nicht zerstört.
 +               
 +- Es  wurde  ein Kopierschutz  integriert,  das  Kopieren  geschützter Dateien
 +führt zu der Fehlermeldung  'File R/O' (unabhängig vom evtl.  R/O-Status der
 +Dateien).  Wie dieser Schutz funktioniert, wird hier <del>nicht</del> verraten.
 +
 +<code>
 +; - Kopierschutz durch Kommando:
 +;     POWER SET [-X]
 +;     alle zu schuetzenden Files auswaehlen.
 +;     Vor "[" kann ein Laufwerk, z.B. "B:[-X]" angegeben werden.
 +; Beim Kopier-Versuch erfolgt die Ausschrift 'File R/O'
 +; und Abbruch. Geschuetzte Files sind anderweitig nicht er-
 +; kennbar, insbesondere liefern DIR und DIR in POWER keinen
 +; Hinweis.
 +; Die Kopierfunktion im FORMAT[P]-Programm wird im Menuetext
 +; und als Menueantwort nur bei der Aufrufform 'FORMATP CPA'
 +; zugelassen, im normalen Aufruf 'FORMATP' ohne oder mit fal-
 +; schem Parameter ist sie verboten.
 +; Diese Schutzfunktionen sollten nur vom Systemverantwortlichen
 +; genutzt werden und auch nur diesem bekannt sein!
 +</code>
 +
 +aus den BIC-Quellen:
 +<code>
 +;; modifizierungen gegenueber original cp/m 2.2: (Original Dames)
 +; -  um eine arbeit ohne lw a zu erlauben, wird das erste
 +;    default-lw nach kaltstart als $$$.sub-lw bei disk-reset
 +;    benutzt. dem anwenderprogramm wird dazu nach disk-reset
 +;    in h die kaltstart-lw-nr (a=0, b=1,..) und in l und a
 +;    ff bei vorhandener $-datei, 00 sonst uebergeben.
 +; -  um fuer pc1715 im directory "sauber" die loader-informa-
 +;    tionen unterzubringen, werden zu uebergehende dir-ein-
 +;    traege bei login nicht nur an USER=e5h, sondern auch
 +;    an filename[1] =00h oder >=f0h erkannt.
 +; -  einfuehrung eines kopierschutzes:
 +;    eine $$$-datei kann nicht in eine datei mit gesetztem
 +;    bit 7 im 3. typ-byte umbenannt werden (file r/o -meldung)
 +;    die $$$-eintragung im directory wird unkenntlich gemacht.
 +; -  ix und iy werden vom BDOS gerettet und wiederhergestellt
 +; -  einsparung von bytes durch einfuehrung von jr-spruengen
 +;    und streichen von steuerzeichen fuer nicht-bildschirm-
 +;    konsolen.
 +; -  beschleunigung der arbeit mit fcb(0)=0 indem nicht sofort
 +;    wieder auf current-laufwerk zurueckgeschaltet wird
 +; -  das puffern von zeichen im BDOS entfaellt zusammen mit der
 +;    ^s-funktion (nur dafuer noetig), da im BIOS ein allgemei-
 +;    nes stop des rechners implementiert ist (ci-taste).
 +; -  ^s wirkt wie ^h (falls ^h-taste zu ^s umdefiniert wurde)
 +; -  verlegung des sprungverteilers fuer die BDOS-funktionen
 +;    nach vorn, damit speicherschutz von BDOS+40h moeglich ist.
 +; -  fehlerkorrektur bei selektivem lw-reset (fkt. 25h), funktionierte
 +;    nur bei zwischenzeitlichem lw-wechsel 
 +</code>
 +
 +
 +===== Kompilieren =====
 +
 +s. CPA.DOK
 +
 +a) fuer Buerocomputer
 +     (( Modifikation des BIOS-Quelltextes BIOS.MAC))
 +     t:
 +     s:M80 s:BIOS.ERL=BIOS
 +     s:
 +     LINKMT @OS=CPABAS,CCP,BDOS,BIOS/P:xxxx
 +     ((Kaltstart))
 +
 +b) fuer PC1715
 +     (( Modifikation des BIOS-Quelltextes BIOP.MAC))
 +     t:
 +     s:M80 s:BIOP.ERL=BIOP
 +     s:
 +     LINKMT @OS=CPPBAS,CCP,BDOS,BIOP/P:xxxx
 +     ((Kaltstart))
 +
 +handschriftlich vom einem Listing PC1715 BIOP 02.11.87:
 +
 +<code>
 +m80 =biop/x/c
 +ref lst:=biop ( statt lst auch datei PRN )
 +linkmt @os=ccpbas,ccp,bdos,x:biop/p:0ba80
 +</code>
 +
 +
 +
  • cpm/cpa.1297707386.txt.gz
  • Zuletzt geändert: 2011/02/14 17:16
  • (Externe Bearbeitung)