home *** CD-ROM | disk | FTP | other *** search
/ OS/2 Shareware BBS: 8 Other / 08-Other.zip / CPM.ZIP / CPMV2.GER < prev    next >
Text File  |  1990-05-28  |  12KB  |  336 lines

  1. Dokumentation zur Version 2.0 des Z80-Emulators
  2. ===============================================
  3.  
  4. 1. CCP (Console Command Processor)
  5. ----------------------------------
  6.  
  7. Der CCP befindet sich nicht im 64k-Byte Bereich des Z80. Er ist komplett
  8. im 80286-Code geschrieben (läuft auch auf V20/V30 *NICHT* auf 8088/86)
  9. und beeinflußt den TPA-Bereich des Z80 nur bei der COPY-Operation.
  10. (Nicht in der OS/2-Version!)
  11.  
  12. Daher hat der Emulator einen großen TPA-Bereich von FD00H Byte
  13. (jeweils 100H Byte für BDOS, BIOS und Page 0).
  14.  
  15. Es folgt eine Aufstellung aller CCP-Befehle, die in der OS/2-Version
  16. implementiert sind. Sind diese in der MS-DOS-Version nicht verfügbar, ist
  17. dies vermerkt. Obwohl der Emulator ein CP/M-System emulieren soll, wurde
  18. die Syntax der Instruktionen vollständig an MS-DOS bzw. OS/2 angelehnt,
  19. damit sich der Benutzer eines Rechners nicht an zwei Schreibweisen gewöhnen
  20. muß.
  21. In den folgenden Syntaxdarstellungen stehen als Trennzeichen immer Leerzeichen.
  22. Entsprechend der MS-DOS-Konvention sind an dieser Stelle jedoch auch
  23. Tabulatorzeichen, Komma, Semikolon und Zeilenvorschub (LF = Ctrl+Return)
  24. zugelassen.
  25.  
  26. Als Abkürzungen wurden eingeführt:
  27. lw:   =>  Laufwerksbuchstabe (z.B. A:)
  28. path  =>  vollständiger Pfad wie unter MS-DOS bzw. OS/2 (max. 63 Zeichen ab
  29.       Hauptverzeichnis)
  30. fname =>  Dateiname (8+3 Zeichen)
  31. Namen in eckigen Klammern [] sind optional.
  32.  
  33.  
  34. 1.1 TYPE
  35. --------
  36. Syntax:  TYPE [lw:][path]fname
  37.  
  38. Gibt eine Datei auf der Konsole aus. Wildcards im Dateinamen sind nicht
  39. zugelassen.
  40.  
  41.  
  42. 1.2 COPY
  43. --------
  44. Syntax:  COPY [lw:][path]fname [lw:][path]fname
  45.  
  46. Kopiert eine oder mehrere Dateien. Als Wildcard-Zeichen im Dateinamen
  47. sind wie unter CP/M und MS-DOS '?' bzw. '*' zugelassen. Sie haben
  48. dieselbe Bedeutung.
  49.  
  50. Der Zieldateiname muß jedoch (im Gegensatz zu MS-DOS) immer angegeben
  51. werden. Außerdem ist '.' hier als Dateiname nicht erlaubt.
  52.  
  53. Das Kopieren von Zeicheneinheiten (z.B. COPY CON: datei) ist nur in der
  54. OS/2-Version verfügbar.
  55.  
  56. 1.3 REN
  57. -------
  58. Syntax:  REN [lw:][path]fname [path]fname
  59.  
  60. Dieser Befehl hat 2 Funktionen. Zum einen kann damit eine Datei umbenannt
  61. werden. Außerdem ist er dafür geeignet, einen Verzeichniseintrag einer
  62. Datei in ein anderes Verzeichnis zu übertragen (MOVE).
  63.  
  64. Die Funktion hängt von der Angabe eines Pfades im Zieldateinamen ab:
  65. Wird dort ebenfalls ein Pfad angegeben, so wird der Verzeichniseintrag
  66. übertragen.
  67.  
  68. Oft muß eine Datei in ein anderes Verzeichnis kopiert und anschließend
  69. gelöscht werden. Dafür ist diese Funktion MOVE vorgesehen.
  70.  
  71. Beispiele:
  72. REN *.ASM *.OLD         (umbenennen von Dateien)
  73. REN \WORK\*.TXT *.BAK        (umbenennen in einem anderen Verzeichnis)
  74. REN *.ASM \WORK\*.ASM        (Dateien nach WORK verschieben (MOVE-Operation))
  75. REN \A.DAT \VERZ\B.DAT        (Datei nach VERZ verschieben und umbenennen)
  76.  
  77.  
  78. 1.4 CLS
  79. -------
  80. Syntax:  CLS
  81.  
  82. Bildschirm löschen. Dies geschieht über eine ANSI-Sequenz; dazu muß
  83. natürlich der ANSI-Treiber installiert sein (DOS und Comp.-Box) oder
  84. ANSI muß eingeschaltet sein (bei OS/2).
  85.  
  86.  
  87. 1.5 DIR
  88. -------
  89. Syntax:  DIR [lw:][path]fname
  90.  
  91. Verzeichnis ausgeben. In fname können ebenfalls die Wildcards '?' und
  92. '*' verwendet werden. Als Abkürzung für '*.*' ist '.' erlaubt.
  93. Steuerparameter '/w' bwz. '/p' werden noch nicht unterstützt.
  94.  
  95.  
  96. 1.6 CHDIR / MKDIR / RMDIR
  97. -------------------------
  98.  
  99. Syntax:  CHDIR [lw:][path]
  100.      MKDIR [lw:]path
  101.      RMDIR [lw:]path
  102.  
  103. Ändern des Standardverzeichnisses, anlegen bzw. Löschen eines Verzeichnisses.
  104. Es können auch die Kurzformen CD/MD/RD verwendet werden.
  105.  
  106. CD bzw. CHDIR ohne Argument zeigt das Standardverzeichnis an.
  107. Nach CD muß ein Trennzeichen stehen (im Gegensatz zu MSDOS)!
  108.  
  109.  
  110. 1.7 ERA/DEL
  111. -----------
  112. Syntax:  ERA [lw:][path]fname
  113.      DEL [lw:][path]fname
  114.  
  115. Löschen einer/mehrerer Dateien. Wildcards '?' und '*' sind zugelassen.
  116. Die MS-DOS Abfrage 'Sind Sie sicher (J/N)?' bei DEL *.* erfolgt NICHT!!!
  117.  
  118. 1.8 EXIT
  119. --------
  120. Syntax:  EXIT
  121.  
  122. Zurück in den Parent-Prozeß. Unter MS-DOS ist dies der COMMAND.COM,
  123. unter OS/2 ist dies je nach Installation der CMD.EXE, Session Manager
  124. oder Presentation Manager.
  125. Errorlevel ist 0. Erfolgt ein Rücksprung ins MS-DOS
  126. bzw. OS/2 aus einem anderen Grund (Probleme bei Speicherallokierung durch
  127. Systemfehler), ist der Errorlevel ungleich 0.
  128.  
  129. 1.9 SAVE
  130. --------
  131. Syntax:  SAVE block [lw:][path]fname
  132.  
  133. Legt den Speicherbereich ab 100H in der Datei 'fname' ab. Die Länge ist
  134. 256Byte * block. Wird 'block' zu groß angegeben, wird eine Fehlermeldung
  135. ausgegeben. Da Nicht-CP/M-Programme unterstützt werden, darf 256 * block
  136. die TPA-Größe überschreiten. Der Offset von 100H kann jedoch (noch) nicht
  137. verändert werden.
  138.  
  139. Achtung: 'block' ist eine Dezimalzahl.
  140.  
  141. 1.10 RUN
  142. --------
  143. Syntax:  RUN [lw:][path]fname [loffset [roffset]]
  144.  
  145. Startet ein Nicht-CP/M-Programm im Z80-Modus. Das Programm wird nach
  146. 'loffset' geladen und bei 'roffset' gestartet.
  147. Der Default-Wert für 'loffset' ist 100H, für 'roffset' ist er 'loffset'.
  148. Siehe auch Kap. 2 für die Benutzung von Betriebssystem-Aufrufen.
  149.  
  150. 1.11 SET
  151. --------
  152. Syntax:  SET [variable=[string]]
  153.  
  154. Die Behandlung einer Environment ist sowohl in der OS/2 als auch in der
  155. MS-DOS-Version verfügbar. In der MS-DOS-Version ist die Maximalgröße jedoch
  156. durch die Größe der Environment beim Aufruf des Programmes festgelegt.
  157.  
  158. Enthält die Umgebung z.B. 20 Zeichen, so wird beim Start auf die nächste
  159. Paragraphengröße (2*16=32 Byte) aufgerundet; dies ist eine Eigenschaft des
  160. DOS. Um Platzprobleme zu umgehen, sollte man vor dem Aufruf des Emulators
  161. genügend Platz anlegen durch Eingabe von z.B.:
  162.  
  163. SET a=00000000000000000000000000000000000000000000000000000000000000000000
  164.  
  165. Diese Variable a kann dann im Emulator wieder gelöscht werden und steht als
  166. freier Platz zur Verfügung.
  167.  
  168.  
  169. Strings, die im System eine besondere Bedeutung haben sind folgende:
  170.  
  171. DEBUG=on|off - Ist Debug on, geht der Emulator nach dem Start eines Programmes
  172.            sofort in den integrierten Debugger. Default ist 'off'
  173.  
  174. BREAK=on|off - Ist Break off, wird die ^Break bzw. ^C Tastenkombination nur
  175.            in den unter CP/M-vorgesehenen BDOS-Aufrufen untersucht und
  176.            bearbeitet. Ist Break on, kann diese Tastenkombination auch
  177.            eine Endlosschleife unterbrechen. Dies kann jedoch bei
  178.            Programmen wie MBASIC zu Problemen führen, da ein Rücksprung
  179.            zum CCP erfolgt. Soll im BREAK=on Zustand dort ein Break
  180.            eingegeben werden, der nur das BASIC-Programm abbricht, wird
  181.            als Alternative die Kombination Alt+PgDn vorgeschlagen.
  182.            Default ist 'off'.
  183.  
  184. ASCII_SIZE=8_bit|7_bit
  185.          - Bei allen Konsolausgaben über BIOS oder BDOS werden ASCII-
  186.            zeichen auf die angegebene Länge angepaßt (d.h. bei der
  187.            Angabe '7_bit' wird Bit 7 maskiert).
  188.  
  189. CCP-PROMPT   - Prompt des CCP. Darstellung durch eine ANSI-Zeichenkette wie
  190.            unter OS/2. $I ist ebenfalls verfügbar.
  191.  
  192. DEB-PROMPT   - Prompt des Z80-Debuggers. Darstellung wie unter OS/2. Als
  193.            Info-Zeile wird hier $J angeboten.
  194.  
  195. 1.12 SHELL
  196. ----------
  197. Syntax:  SHELL [command]
  198.  
  199. Dieser Befehl startet einen neuen Befehlsinterpreter CMD.EXE bzw. COMMAND.COM.
  200. Wird command angegeben, wird dieser Befehl ausgeführt. Der Rücksprung erfolgt
  201. mit EXIT.
  202.  
  203.  
  204.  
  205. 2. Weitere Einzelheiten zum CCP
  206. -------------------------------
  207.  
  208. Der Emulator wird gestartet mit
  209.  
  210. CPMZ80 [/C|/K [string]]
  211.  
  212. Wird kein Argument angegeben, gibt der Emulator den Prompt aus und geht in
  213. den Eingabemodus. Dies bewirkt auch die '/K'-Option, die nur angegeben werden
  214. muß, falls dahinter ein 'string' folgt. '/C' bewirkt, daß der Emulator nach
  215. Abarbeitung eines Befehles die Kontrolle sofort wieder dem 'Parent-Prozeß'
  216. übergibt (siehe Erläuterungen zu EXIT). Diese Option ist daher nur sinnvoll
  217. in Zusammenhang mit einem Befehlsstring dahinter, zum Beispiel einer
  218. Submitdatei. Beispiele:
  219. CPMZ80 /C MAKE.SUB   - Start einer Stapeldatei, die zum Beispiel den Aufruf
  220.                eines C-Compilers, eines Makroassemblers und Linkers
  221.                enthält. Anschließend Rücksprung ins DOS.
  222. CPMZ80 /K CPMINIT    - Start einer 'CP/M-Autoexec'. Dies ist vor allem
  223.                deshalb sinnvoll, da damit die Umgebungsvariablen
  224.                auf die gewünschten Werte eingestellt werden können.
  225.                Eine CPMINIT.SUB-Datei könnte beispielsweise so
  226.                aussehen:
  227.     SET CCP-PROMPT=($I$P)
  228.     SET DEB-PROMPT=$J->
  229.     SET BREAK=ON
  230.     SET DEBUG=OFF
  231.     CLS
  232.  
  233.  
  234. 3. Z80-Emulation
  235. ----------------
  236.  
  237. Das Programm emuliert alle dokumentierten Z80-Befehl mit einem Unterschied:
  238. Alle Interrupt-Anweisungen werden wie NOPs behandelt. Die Rücksprünge von
  239. Interruptroutinen RETN u. RETI werden wie RET behandelt.
  240.  
  241. OUT und IN-Anweisungen enden vorläufig in einer Ausnahmebehandlung und
  242. können nicht ausgeführt werden.
  243.  
  244. Die Anweisung HLT läuft in eine TRAP-Behandlung und kann für Diagnose-
  245. Zwecke benutzt werden. Außerdem laufen alle nichtdokumentierten
  246. Z80-Befehle dorthin.
  247.  
  248. Für CP/M-Programme gelten alle Konventionen, die für normale Z80-Rechner
  249. auch gelten:
  250. BDOS-Einsprung ist    CALL 5
  251. WARMBOOT-Einsprung ist    CALL 0
  252.  
  253. Vom BIOS können direkt nur die Routinen für Konsol-Ein-/Ausgabe verwendet
  254. werden. Die Routinen für Disk-I/O sind nicht implementiert, da sie für
  255. OS/2 nur mit Einschränkungen verwendbar wären.
  256.  
  257. Für CP/M-Programme steht die TPA von 100H ... FDFFH (64768 Byte) zur
  258. Verfügung.
  259.  
  260. Nicht-CP/M-Programme:
  261.  
  262. Als Nicht-CP/M-Programme werden solche bezeichnet, die Speicher außer-
  263. halb des TPA-Bereiches benutzen.
  264. Diese Programme können grundsätzlich den gesamten Speicher von 64kByte
  265. verwenden. Außerdem können sie ebenfalls das BDOS bzw. das BIOS nutzen.
  266. Falls sie jedoch den Bereich unter 100h oder über FE00h benutzen, geschieht
  267. dies jedoch auf eine andere Art und Weise, als dies unter CP/M der Fall ist.
  268.  
  269. Als Schnittstelle zum Betriebssystem dient ein beim Z80 nicht vorhandener
  270. Befehl mit dem Opcode EDEDnn. nn ist ein Byte, das die Art des Aufrufes
  271. festlegt. Die zur Verfügung stehenden Funktionen sind nachfolgend
  272. aufgeführt:
  273.  
  274. nn = 0: BDOS
  275. nn = 1: BOSI (spezielle OS/2-Services wie Timer, Bildschirmzugriff; nur OS/2)
  276. nn = 2: BOOT
  277. nn = 3: WARMBOOT    (identisch mit BOOT)
  278. nn = 4: CONSTATUS
  279. nn = 5: CONIN
  280. nn = 6: CONOUT
  281. nn = 7: LIST   (führt auf Dummy-Operation)
  282. nn = 8: AUXOUT (führt auf Dummy-Operation)
  283. nn = 9: AUXIN  (führt auf Dummy-Operation)
  284.  
  285. Beispiele für Nicht-CP/M-Programme
  286.  
  287. BDOS-Aufrufe:
  288. Die Register sind wie unter CP/M belegt. Der Aufruf erfolgt jedoch nicht
  289. mit einem CALL 5, sondern mit EDED00.
  290.  
  291.     .Z80
  292. START:    LD    E,char        ;Zeichen laden
  293.     LD    C,2        ;BDOS-Funktion: CONSOLE OUTPUT
  294.     DB    0EDH,0EDH,0
  295.     LD    C,0        ;BDOS-Funktion: SYSTEM RESET
  296.     DB    0EDH,0EDH,0    ;(zurück zur CCP-Emulation)
  297.     end    START
  298.  
  299.  
  300.  
  301. BIOS-Aufrufe:
  302. Die Register sind wie im CP/M-Bios belegt.
  303. Das folgende Programm macht dasselbe wie das Vorhergehende, mit dem Unterschied,
  304. daß BIOS-Aufrufe benützt werden.
  305.  
  306.     .Z80
  307. START:    LD    A,char        ;Zeichen laden
  308.     DB    0EDH,0EDH,6    ;BIOS-Funktion CONOUT
  309.     DB    0EDH,0EDH,2    ;BIOS-Funktion BOOT
  310.     end    START
  311.  
  312.  
  313.  
  314. 4. In Vorbereitung nächste Version
  315. ----------------------------------
  316.  
  317. - Behandlung von OUT/IN-Instruktionen
  318. - Assembler im Debugger
  319.  
  320. Keine Software ist fehlerfrei. Falls Sie Fehler finden, sind wir dankbar, wenn
  321. Sie uns diese mitteilen. Auch Verbesserungsvorschläge sind willkommen.
  322.  
  323. Die Autoren
  324.     Klaus Breining; Markus Noller
  325.  
  326.     Erreichbar unter
  327.  
  328.     "Markus Noller"
  329.     in der CCWN-Box
  330.     Brett:    "OS/2-Pin"
  331.       Telefon:    07151/68434
  332.  
  333. oder über den deutschen OS/2-Fido Pin "OS2.GER"
  334.  
  335. 
  336.