summaryrefslogtreecommitdiff
path: root/doc/ddtz-ref-short.txt
blob: e44450f6632b3b1b0becf0a7c6f5c5e0e6d853bd (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
ANLEITUNG zum DDTZ
Development Debugging Tool for Z80 microcomputers

Zusammenfassung der Befehle:

> @				examine [and substitute]
				the displacement register @
> A [startadresse]		Assemble
> B				display all Breakpoints
  B breakp [breakp..] [:count]	set Breakpoints
  BX				clear all Breakpoints
  BX adresse [adresse..]	clear Breakpoints
>>C[N][J] [befehlsanzahl]	trace over Calls [no list] [jumps only]
  C[N][J] W ausdruck		..while..
  C[N][J] U ausdruck		..until..
>>D [startadr] [endadr] 	Display memory in hex and ascii
> F kommandozeile		specify Filename and command line
> G [startadr] [;breakp..]	Go [to start] [temporary breakpoints]
> H				display High and maximal size of files
> H ausdruck			compute Hex and other expressions
  H ausdruck ausdruck		Hex and other sum and difference
>>I [port]			Input a byte from port
>>L [startadr] [endadr] 	List disassembled code
> M[V] startadr endadr zieladr	Move memory [and verify]
>>O [byte] [port]		Output a byte to port
> Q[J] startadr endadr bytes	Qery memory for byte string [justified]
> R [displacement]		Read binary or hex file [add displacemt]
> S startadr			Substitute memory
>>T[N][J] [befehlsanzahl]	Trace [no list] [Jumps only]
  T[N][J] W ausdruck		..while..
  T[N][J] U ausdruck		..until..
> V startadr endadr zieladr	Verify (compare) two memory areas
> W startadr endadr		Write a file to disk
> X				eXamine all cpu registers
  X register			eXamine [and substitute] a register
> Y				eXamine all Y variables
  Yziffer0bis9			eXamine [and substitute] an Y variable
> Z startadr endadr bytes	Zap (fill) memory with a byte string



Registernamen:

A , F , B , C , D , E , H , L ,BC , DE , HL
A', F', B', C', D', E', H', L',BC', DE', HL'
IX oder X , IY oder Y , SP oder S , PC oder P , I

Flags des F- und des F'-Registers:

S    Sign		  Vorzeichen
Z    Zero		  Null
H    Half carry 	  Uebertrag von bit 3 nach bit 4
V    oVerflow/parity	  Ueberlauf/gerade Paritaet
N    Negation		  NEG, DEC, SUB o.ae. ausgefuehrt
C    Carry		  Uebertrag von bit 7
E    interrupt Enabled	  das Interrupt flag wird im DDTZ wie
			  ein Flag des F-Registers behandelt.

Variablen und Konstanten:

L    Low		  Benutzerspeicher-Anfang. Festwert 100H
H    High		  Hoechste Adresse der letzten gelesenen File
M    Max		  Maximale Adresse aller gelesenen Files
T    Top		  Oberes Ende des Benutzerspeichers
@			  Displacement Register
$			  beim Assemblieren Anfangsadresse des Befehls
			  sonst = PC
Y0..Y9			  frei verwendbare Variablen
^register		  Inhalt eines Registers
(adresse)		  Inhalt eines Speicherplatzes (Byte)
(adresse).		  Inhalt eines Speicherplatzes (Wort)

Aufruf des DDTZ:

	DDTZ
  oder	DDTZ d:filename.ext

Bei beiden Aufrufen laedt das Disk Operating System das DDTZ bei
Adresse 100H beginnend in den Speicher. Das DDTZ verlagert sich
danach direkt vor das BDOS und ueberschreibt dabei den CCP. Der
Adressteil des Befehls JP BDOS auf Adresse 5 wird erniedrigt,
um dem Anwenderprogramm die durch das DDTZ verringerte Speichergroesse
mitzuteilen. Der urspruenglich vom DDTZ belegte Speicher wird daraufhin
mit Nullen geloescht.
Wurde im Aufruf ein Filename angegeben, so laedt das DDTZ die File
in den Speicher. Nach Ausgabe des Prompt-Zeichens '>' ist das DDTZ
betriebsbereit.


Allgemeines zum Gebrauch des DDTZ:

Ausdruecke:

In allen Situationen, in denen Zahlen eingegeben werden koennen, ist
auch die Eingabe von Ausdruecken erlaubt.
Ausdruecke haben die Form
	arithmetischerausdruck
  oder	arithmetischerausdruck relationsoperator arithmetischerausdruck
Die relationsoperatoren sind
=  <>  >  >=  <=  <
Der Ausdruck hat den Wert -1, wenn die Relation wahr ist, sonst 0.
z.B:	der Ausdruck 1+2=3 hat den Wert -1, und 'A'<'B' den Wert 0
Ein arithmetischer Ausdruck hat die allgemeine Form
	faktor arithmetikoperator faktor arith... faktor
Die Arithmetikoperatoren sind
+ - * / %	     Plus, Minus, Multiplikation, Division, Modulo
& ! #		     bitweise AND, OR, XOR

Ein Faktor hat die Form
[ausdruck]	     geklammerter Ausdruck
+faktor
-faktor 	     Negation
~faktor 	     bitweise NOT
'a'		     Wert eines ASCII-Zeichens
'a'.		     mit gesetztem Bit 7
'ab'		     Wert zweier ASCII-Zeichen
'ab'.		     das niederwertige mit gesetztem bit 7
(ausdruck)	     ein Byte im Speicher
(ausdruck).	     ein Wort im Speicher
variable	     eine der oben aufgezaehlten Variablen
hhhh[H] 	     Hex-Zahl
ddddd.		     Dezimal-Zahl
bbbbbbbb"bbbbbbbb"   Binaer-Zahl (beliebig mit '"' unterteilt)

Enthaelt ein Ausdruck einen Relationsoperator, so werden erst die
beiden arithmetischen Ausdruecke berechnet und dann die Relation.
Ein arithmetischer Ausdruck wird von links nach rechts berechnet,
also ohne Beachtung 'Punktrechnung vor Strichrechnung', die Reihenfolge
kann jedoch mit Klammern '[' und ']' geaendert werden.
Ausdruecke duerfen keine Blanks enthalten.

Befehle:

Befehle beginnen mit einem der Zeichen '@' bis 'Z', eventuell gefolgt
von weiteren optionalen Buchstaben, sowie Argumenten. Wird eine
optionale Anfangsadresse weggelassen, so wird die Adresse benutzt,
bei der Befehl zuletzt beendet wurde. Wird eine optionale Endadresse
weggelassen, so wird der Befehl (z.B. L oder D) so lange ausgefuehrt,
bis etwa ein Bildschirm vollgeschrieben ist. Ein weggelassenes
optionales Argument, hinter dem weitere Argumente angegeben werden
sollen, muss durch ein Komma ersetzt werden. Zwischen zwei Argumenten
muss ein Blank, ein Tab (^I) oder ein Komma stehen.


Bei Befehlen, die eine Start- und eine Endadresse erfordern, kann
anstelle der Endadresse auch der Buchstabe 'S', gefolgt von einer
Laengenangabe verwendet werden.
  z.B. bedeutet   D 1000 S 100	oder D1000S100
	 das selbe wie	 D 1000 10FF oder D1000,10FF