CPM22/SAVE - Konverter Beschreibung ****************************************************************** ****************************************************************** ******************** ********************* ******************** CPM22 - KONVERTER ********************* ******************** ********************* ****************************************************************** ****************************************************************** ******** ********** ****** Beschreibung ****** ***** ***** ****************************************************************** ****************************************************************** ****************************************************************** **** **** **** Copyright (C) 1984, 1985 by **** **** **** **** DATENTECHNIK oettle & reichler GmbH **** **** Schie@grabenstra@e 28 a **** **** D - 8900 Augsburg 1 **** **** Tel.: 0821/154632 **** **** **** ****************************************************************** **** **** **** CP/M is a registered trademark of Digital Research. **** **** **** ****************************************************************** Kein Teil dieser Ver|ffentlichung darf reproduziert, vervielf{l- tigt, gespeichert oder }bersetzt werden, ohne die ausdr}ckliche schriftliche Zustimmung von DATENTECHNIK oettle & reichler. Wir behalten uns das Recht vor, [nderungen, die einer Verbesserung einer Schaltung oder unserer Produkte dienen, ohne besondere Hin- weise vorzunehmen. F}r die Richtigkeit der hier gegebenen Daten, Schaltpl{ne, Programme und Beschreibungen wird keine Haftung }bernommen. Copyright (C) 1984 by Datentechnik oettle + reichler - 1 - CPM22/SAVE - Konverter Beschreibung ********************* *** ]berblick: *** ********************* Der CPM22-Konverter gestattet es Programme, die auf Grund direkter BIOS-Zugriffe nur unter CP/M 2.2 ablaufen auch unter dem neuem Betriebssystem CP/M 3.0 Plus einsetzen zu k|nnen. ****************************************************************** * Problem der Inkompatibilit{t zwischen CP/M 3.0 und CP/M 2.2: * ****************************************************************** Der Hauptgrund f}r die Schwierigkeit alle urspr}nglich f}r CP/M 2.2 konzipierte Programme auch unter CP/M 3.0 ablaufen lassen zu k|nnen liegt in der ge{nderten Struktur des BIOS des neuen Betriebssystems. In der Regel gibt es nur mit jenen Programmen Probleme, die das BDOS des CP/M-Systems umgehen und dirket auf das BIOS zugreifen um spezielle Funktionen verwirklichen zu k|nnen. Die BIOS-Funktionen unterscheiden sich teilweise erheblich von denen unter CP/M 2.2, zus{tzlich kommt das Problem des Bankings bestimmter Funktionen hinzu, die bei Aufruf ohne besondere Vorkehrungen das System mit Sicherheit abst}rzen lassen. ************************************************** **** Funktionsweise des CPM22-Konverter: **** ************************************************** Nach der Installation des CPM22-Konverters auf einem Zielprogramm f{ngt der Konverter alle BIOS-Aufrufe des Programms ab und wandelt diese in CP/M 2.2-Norm erfolgten Aufrufe in CP/M 3.0-Norm BIOS- Funktionen um. D.h. das Zielprogramm kann alle dirketen BIOS- Aufrufe in gewohnter CP/M 2.2 - Norm t{tigen. Folgende Schwierigkeiten werden dadurch vom CPM22-Konverter gel|st: Dirketer BIOS-Zugriff gebankter Funktionen: ------------------------------------------- Um den TPA-Bereich m|glichst gro@ zu halten, befindet sich eine gro@e Zahl der BIOS-Funktionen unter CP/M Plus nicht in der TPA-Bank sondern in Bank 0. Daher ist ihr direkter Zugriff nur noch dem BDOS gestattet, das vor dem BIOS-Aufruf auf die entsprechende Speicherbank umschaltet. Ohne diese Umschaltung f}hrt ein dirketer BIOS-Aufruf einer gebankten Funktion unbedingt zum Absturz des Systems. Der CPM22- Konverter f{ngt daher jeden dirketen BIOS-Aufruf des Zielprogramms ab und schaltet vor dem Aufruf der eigentlichen BIOS-Funktion auf die entsprechende Speicherbank um. Copyright (C) 1984 by Datentechnik oettle + reichler - 2 - CPM22/SAVE - Konverter Beschreibung Sektor Blocking-Deblocking: --------------------------- Die Disk-Read und -Write Funktionen des CP/M-Plus-BIOS kennen kein Sector 'Blocking-Deblocking' wie unter fr}heren CP/M- Versionen. Unter CP/M 2.2 war f}r das Deblocking noch das BIOS verantwortlich, d.h. zwischen BIOS und aufrufendem Programm werden nur jeweils 128 Byte Sektoren ausgetauscht. Das BIOS des CP/M-Plus }bertr{gt jedoch die physikalische Sektoren, die ein Vielfaches der }blichen 128-Byte Sektoren betragen k|nnen. Verlangt ein Programm einen Sektor }ber das BIOS zu }bertragen, so konnte es unter CP/M 2.2 noch sicher sein, nur 128-Byte Sektoren }bermittelt zu bekommen. Unter CP/M-Plus kann es sehr leicht passieren, bei entsprechend modernen Disk-Formaten 1024-Bytes vom BIOS }bermittelt zu bekommen, die mit Sicherheit gro@e Teile (1024 - 128 Bytes) des aufrufenden Programms }berschreiben werden. Beim Schreiben auf Diskette kommt es umgekehrt dazu, da@ v|llig falsche File-Teile auf Diskette niedergeschrieben werden. Der CPM22-Konverter besitzt eine eigene Blocking-Deblocking Prozedur die Sektorgr|@en von 128 bis 1024 Bytes unterst}tzt. Ge{nderte File-Control-Struktur: -------------------------------- Neben dem Blocking-Deblocking-Problem besteht ein weitere gro@er Unterschied zwischen dem CP/M 2.2 und dem CP/M 3.0 File Handling: Das Bios des neuen Betriebssystems stellt ge{nderte Disk-Parameter-Header zur Verf}gung, die ein 2.2- Programm nicht 'verstehen' kann. Daher legt der CPM22- Konverter f}r jedes der acht m|glichen Laufwerke einen eigenen Diks-Parameter-Header mit entsprechenden Buffer- Pl{tzen zur Verf}gung, der in gewohnter CP/M 2.2 - Norm ausgelegt ist. Daneben ist ein 3.0-BIOS in der Lage, von jeder beliebigen Speicherbank Files zu lesen oder zu schreiben. Dazu existiert eine spezielle Bios-Funktion, die die Disk-Speicherbank spezifiziert. Unterbleibt die Angabe, so kann es ebenfalls zu v|llig unkontrollierten Disk- Transfers kommen. Z-80 Register-Satz: ------------------ Die meisten modernen CP/M-Plus-System sind mit einem Z(_- Rechner ausger}stet. Daher bietet es sih nat}rlich an, im Betriebssystem die F{higkeiten des Z-80 Prozessors auch voll auszun}tzen. Dazu geh|ren neben leistungsf{higen neuen Befeh- len auch ein kompletter zweiter Registersatz und die beiden Index-Register. Daneben existieren auch schon viele CP/M- Programme die ebenfalls f}r einen Z-80-Prozessors geschrieben wurden. Auch diese Programme n}tzen die F{higkeiten des Z80 aus. Doch leider werden bei manchen Programmen eben diese Nicht-8080-Register beim Sprung ins Betriebssystem nicht gerettet. Ein Programmabsturz ist die Folge. Dies betrifft vor allem die beiden Index-Register IX und IY. Der CPM22- Konverter l|st dieses Problem durch konsequentes Sichern des kompletten zweiten Registersatzes und der Indexregister beim Einsprung ins BDOS oder BIOS des Systems. Copyright (C) 1984 by Datentechnik oettle + reichler - 3 - CPM22/SAVE - Konverter Beschreibung ***************************************************************** *** Einsatz des Konverters auf einem Ziel-Programm: **** ***************************************************************** Die Handhabung des Konverters ist sehr einfach. Er ist als RSX (Resident System Extension) aufgebaut, die das CP/M-Plus System in hervorragender Weise unterst}tzt. Mit Hilfe des Programms GENCOM (im Lieferumfang des CP/M-Plus Systems bereits enthalten) wird der Konverter auf dem Zielprogramm installiert. Das Zielprogramm verl{ngert sich nach der CPM22-Installation um ca. 5 kBytes, d.h. um die L{nge des Konverters. Der CPM22-Konverter ist nur auf Programmen vom Typ 'COM' einsetzbar, d.h. auf dirket ausf}hrbaren Anwender-Files. Folgende Anweisung veranla@t das Programm GENCOM den CPM22-Konverter auf den imagin{ren COM-File 'PROGRAMM' zu installieren. A> GENCOM PROGRAMM CPM22 Die Installation des CPM22-Konverters ist nun dauerhaft auf das Zielprogramm 'PROGRAMM' installiert worden. Nun kann das Programm gestartet werden: A>PROGRAMM Das mitgelieferte SAVE.RSX ist eine kleinere Version des CPM22.RSX, das nur die Registers{tze des Z80-Prozessors bei Be- triebssystemaufrufen sichert. Daneben werden alle BIOS-Funktionen abgefangen und umgesetzt. Dieses sehr kleine RSX-Modul (1/2 k) reicht bei vielen Programmen schon aus um sie lauff{hig zu be- kommen. Ein Blocking-Deblocking bei Disk-Zugriffen auf das Bios findet jedoch nicht statt (VORSICHT)! D.h. die durch diese RSX geschaffen Betriebssystemumgebung ist noch lange nicht dem des CPM 2.2 identisch, es werden nur bestimmte Inkompatibilit{ts Probleme gel|st. Die Handhabung ist identisch mit dem CPM22-RSX. A> GENCOM PROGRAMM SAVE Erst nach dem Laden des Anwender-Programms in die TPA wird der CPM22-Konverter aktiv. Er lagert sich selbstst{ndig unterhalb des BDOS ein und verk}rzt die verf}gbare TPA um ca. 4 kByte. Alle dirketen Bios-Aufrufe des Zielprogramms werden nun von dem Konverter abgefangen und von der CP/M 2.2 - Norm in die entsprechende CP/M 3.0 - Norm umgewandelt. Nach dem Beenden des Zielprogramms l|scht sich der CPM22-Konverter automatisch aus der TPA und es steht wieder das urspr}ngliche CP/M-Plus-System mit voller TPA zur Verf}gung. Um die Installation des CPM22-Konverters wieder r}ckg{ngig zu machen dient folgende Anweisung: A>GENCOM PROGRAMM Nach dieser Anweisung steht wieder das urspr}ngliche Zielprogramm 'PROGRAMM' zur Verf}gung. Copyright (C) 1984 by Datentechnik oettle + reichler - 4 - CPM22/SAVE - Konverter Beschreibung ******************************************************* **** Voraussetzungen an das Zielsystem: **** ******************************************************* Folgende Voraussetzungen sind zum Einsatz des Konverters auf dem Zielsystem n|tig: 1. Eine Z-80-Maschiene, da der Konverter in Z-80-Code geschrieben wurde. 2. Ein gebanktes CP/M-Plus System, d.h. die TPA-Bank ist Bank 1, die CP/M-Systembank ist Bank 0. 3. Ein BIOS das die Inter-Bank-Move-Funktion XMOVE ohne Einschr{nkungen unterst}tzt. 4. Ein korrekt implementiertes BIOS, das den Regeln der Aufteilung in gebankte und nichtgebankte BIOS-Teile genau befolgt. Digital Research schreibt in seinem CP/M Plus System Guide Manual genau vor, welche Bios-Funktionen gebankt werden d}rfen. Folgende BIOS-Funktionen m}ssen von der TPA-Bank 1 aus erreichbar sein: Funktion 01: WBOOT Funktion 02: CONST Funktion 03: CONIN Funktion 04: CONOUT Funktion 05: LIST Funktion 06: AUXOUT Funktion 07: AUXIN Funktion 15: LISTST Funktion 17: CONOST Funktion 18: AUXIST Funktion 19: AUXOST Funktion 20: DEVTBL Funktion 21: DEVINI Funktion 25: MOVE Funktion 26: TIME Funktion 27: BNKSEL Alle restlichen BIOS-Funktionen d}rfen sich in der CP/M-System- Bank 0 oder in der TPA-Bank 1 befinden. 5. Gewisse Einschr{nkungen hinsichtlich der Disk-Funktionen sind beim Einsatz des Konverters gegeben: * Unterst}tzt werden 8 Laufwerke von A - H * Unterst}tzt werden physikalische Sektorgr|@en von 128- Bytes 256- Bytes 512- Bytes 1024- Bytes Der Einsatz noch gr|@erer Sektoren ist nicht mehr m|glich. Dies stellt jedoch keine Einschr{nkung dar da gr|@ere Sektoren in der Praxis nicht anzufinden sind. Copyright (C) 1984 by Datentechnik oettle + reichler - 5 - CPM22/SAVE - Konverter Beschreibung * Hinsichtlich der maximalen Directory-Eintr{ge pro Laufwerk besteht keine Einschr{nkung, da alle Laufwerke vom Konverter als 'permanent mounted' angesehen werden, d.h. es werden keine Checksum-Vektoren angelegt (Vorsicht bei MEDIA-Wechsel) * F}r jedes Laufwerk, das der Konverter unterst}tzt, mu@ ein 'Allocation Bit Vector' angelegt werden, dessen Gr|@e nat}rlich begrenzt ist. Die maximale Gr|@e des Allocation Bit Vectors bestimmt die Maximal-Kapazit{t der Laufwerke in Abh{ngigkeit von der gew{hlten Blockgr|@e. Laufwerk C - H: --------------- Die maximale Blockgr|@e die der Konverter unterst}tzt sind f}r Laufwerk C - H 616 Bl|cke. Daraus ergibt sich eine maximal Kapazit{t f}r diese Laufwerke: Blockgr|@e: Kapazit{t max.: 1024 Bytes 616 kByte 2048 Bytes 1232 kByte 4096 Bytes 2464 kByte 8192 Bytes 4928 kByte 16384 Bytes 9856 kByte Laufwerk A - B: --------------- F}r die Laufwerke A und B werden gr|@ere Allocation Bit Vectoren eingerichtet, dies kostet jedoch entsprechenden Speicherplatz. Es werden 1232 Bl|cke unterst}tzt, daraus ergeben sich folgende maximal-Kapazi{ten: Blockgr|@e: Kapazit{t max.: 1024 Bytes 1232 kByte 2048 Bytes 2464 kByte 4096 Bytes 4928 kByte 8192 Bytes 9856 kByte 16384 Bytes 19712 kByte Copyright (C) 1984 by Datentechnik oettle + reichler - 6 -