-
Notifications
You must be signed in to change notification settings - Fork 0
/
dsp_asm.doc
265 lines (172 loc) · 6.29 KB
/
dsp_asm.doc
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
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
-- Quick DSP assembler -- v0.06 (21.10.1995)
by Audoly Gilles
This program was done because the assembler given by ATARI is too slow.
As nobody else tried to make one in assembly, I did.
(well, the first version was avaible in november 1993 ...)
This assembler is nearly 30 times faster than ASM56000.TTP+DSPLNK+CLD2LOD.
It is 20 times smaller too, and my version isn't really 20 times lower.
Who said that assembly is useless, because C can do as good ?
The speed test was done with a complete 3000 lines source.
This program is not supposed to replace ASM56000.TTP coded in C by Motorola.
I don't know perfectly the DSP. You must sometime assemble your program
with ASM56000, to check if mine didn't miss a bugg.
Please remember, that I'm not payed to do this job. I'm coding it anytime
I'm bored with my main programs (the serious ones). Then, you must excuse
the low quality of this program, and the time to wait for a new version.
This program was specially made for me, and my big dsp routine (3000 lines)
I'm working on. (Do you know what 5 minutes waiting means ?)
-- example --
_how to assemble:
open "qdsp_asm.ttp"
command line: "file.asm"
_how to use it:
...
...
...
Dsp_ExecProg: MACRO ;#codeptr.L,#codesize.L,#ability.W
move.w \3,-(sp)
move.l \2,-(sp)
move.l \1,-(sp)
move.w #$6d,-(sp)
trap #14
lea.l 12(sp),sp
ENDM
...
...
...
Dsp_ExecProg #buff,#(ebuff-bbuff)/3,#ability
...
...
...
bbuff: incbin "file.p56"
ebuff:
...
...
in C: load it somewhere, get the file size, and execute Dsp_ExecProg.
You can use the ".lod" too, but I think the ".p56" is better, because it
is smaller, and it will remain less time to execute. I think you should
include in your programs, the possibility of loading ".dsp". For example:
in dsp sound effects programs.
".lod" can be translated to ".p56" with the Dsp_LodToBinary function.
command line syntax:
[n] [l] [w] [oFILE.P56] [pFILE] FILE.ASM
example:
l otest.p56 test.asm
n: won't create '.P56' output file
l: make a LOD output file too
oFILE.P56 define an other name for output file (don't forget the extention)
w: wait for additional keypress
restrictions:
_ warnings are not reported. (not even counted).
_ few assembling directives.
_ no optimisation directives.
_ ALL THE RESTRICTIONS WRITTEN IN THE DSP MANUAL ARE NOT SEEN BY THE
ASSEMBLER !! (ex1: short jsr at LA adress ex2:rti after rep
EX3: use of Rn after move ??,Rn ...).
_ please don't make mistake on command line.
If you find a bugg I didn't register, it would be nice to report it.
notes:
_ "_label" is a local label.
_ labels may be defined many times. (main reason of hard debugging !)
**** v0.02 improvements:
_ double parallel move.
_ L: memory move is now allowed.
_ brackets in arithmetic.
_ MACROs without parameters.
"__label" is a macro local label.
ex:
mac1: MACRO
cmp a,b
jeq __lab0
not a
jmp __lab1
__lab0:
not b
__lab1:
ENDM
mac1
...
mac1
...
...
**** v0.03 improvement:
_ some buggs have been fixed.
**** v0.04 improvements:
_ ".P56" extension is now use instead of ".DSP", as devpac dsp (and maybe
others) created this normalisation.
_ bugg about use of recursive brackets is fixed. (and others, I haven't
enumerated, too.)
_ assembling directives.
IF,IFNE,IFEQ,IFLE,IFLT,IFGE,IFGT,ELSE/ELSEIF,ENDC/ENDIF
_ macro WITH parameters
ex:
...
...
test: MACRO
add \2,\1
movep \1,X:<<HTX
ENDM
...
...
test a,b
**** v0.05 improvement:
_ some buggs have been fixed.
**** v0.06 improvements:
_ some buggs have been fixed.
_ PRINTVAL value
will print a value, while assembling, on pass 1 and pass 2. The value can
be a any kind of arithmetix expression, with numbers and variables.
_ PASS1VAL value
PASS2VAL value
will do the same as PRINTVAL, but only on pass1 or pass2
_ FAIL [message]
will display unconditionaly an error message. (you should use it with IFxx)
_ <<, >>
logical shift in arithmetic.
eg: 5<<6 = 5*2^6 = 320
40>>3 = 40/2^3 = 5
_ fractional in arithmetic.
convert your fractionnal in the dsp format. your number is a fractionnal
if it starts with "0." or ".".
warning: you can't multiply 2 fractionals.
eg: 0.5*0.5<>0.25 0.5*0.5=$400000*$400000= ?
if you want to do so, you'll have to divide by $800000 (+1.0, but not
reconized under this form by the assembler)
eg: to multiply 0.5 by 0.5, you'll have to do: 0.5*0.5/$80000
waring 2: you can't divide 2 fractionals.
if you want to do so, you'll have to multiply by $800000
eg: to divide 0.1 by 0.5, you'll have to do: 0.1*$800000/0.5
Note about "<" and ">":
Please always use ">" and "<" each time you use a constant.
When you don't put it, the program take it for immediate short ("<") if the
value is lower than the address where you put it (for jumps), and lower than
$1000. It would be considered as absolute immediate (">"), if the adress is
greater. Then, you should always use "<", and change it to ">" if the value
is too big.
I ask you to always use them, because, I'm not sure if I solved all the
problems that may appen.
If you're ATARI developper, you can get the source of this stuff.
The price : any nice source coded by you.
For this job, I only expect gratitude, or donation IF YOU HAVE MONEY TO
WASTE.
To copy this program, you should keep those points:
_ Nothing can be modified (text file, text in the program, ...)
_ This text file must be given with the program.
_ No kind of profit allowed. (If you wish to, you'll have to deal with me.)
to contact me:
AUDOLY GILLES
C/O Chantal REMY
10, rue Saint Gaetan
06300 Nice
FRANCE
IF YOU WANT TO GET SOMETHING BACK, PLEASE SEND A STAMPED ENVELOPPE, AND A
DISK FOR (LEGAL) FILES.
email:
CRAC@gen4.pressimage.fr
crac@rtel.fr
(I usually use others, but I can't tell when I'll lose them.
Those two ones should last a long time.)
BBS:
Gilles Audoly on BRAZIL or Zyllius
small advertising:
Get MoonGames and Cloe