File: xtrs8.lst

package info (click to toggle)
xtrs 4.9d-3
  • links: PTS, VCS
  • area: contrib
  • in suites: sid
  • size: 5,484 kB
  • sloc: ansic: 72,545; makefile: 1,633; sh: 554; csh: 132
file content (545 lines) | stat: -rw-r--r-- 20,555 bytes parent folder | download | duplicates (3)
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
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
   1:			;*=*=*
   2:			;	xtrs8/dct
   3:			;	LDOS driver for xtrs emulation of 8" floppy
   4:			;
   5:			;	Copyright (c) 1998, Timothy Mann
   6:			;       $Id: xtrs8.z80,v 1.2 2008/06/26 04:39:56 mann Exp $
   7:			;
   8:			;	This software may be copied, modified, and used for any
   9:			;	purpose without fee, provided that (1) the above copyright
  10:			;	notice is retained, and (2) modified versions are clearly
  11:			;	marked as having been modified, with the modifier's name and
  12:			;	the date included.  
  13:			;*=*=*
  14:			
  15:			
  16:			; Number of floppy drives xtrs allows
  17:	0008          	ndrive	equ	8	
  18:			
  19:			; ASCII chars
  20:	000A          	LF      equ     10
  21:	000D          	CR	equ	13
  22:	0003          	ETX	equ	3
  23:			
  24:			; Model 4 SVC numbers
  25:	0064          	@high   equ     100
  26:	000A          	@dsply  equ     10
  27:	0065          	@flags  equ     101
  28:	000C          	@logot  equ     12
  29:	0052          	@gtdcb  equ	82 
  30:	0053          	@gtmod	equ	83
  31:	0009          	@keyin	equ	9
  32:			
  33:			; Model I/III hard addresses
  34:	0125          	m3flag$ equ	0125h	; 'I' in ROM on Model III
  35:	447B          	@logot1 equ     447bh
  36:	428A          	@logot3	equ	428ah
  37:	4467          	@dsply1	equ	4467h
  38:	4467          	@dsply3	equ	4467h
  39:	4049          	high$1  equ     4049h
  40:	4411          	high$3  equ     4411h
  41:	4758          	cflag$1 equ     4758h
  42:	4758          	cflag$3 equ     4758h
  43:	0040          	@keyin1	equ	0040h
  44:	0040          	@keyin3	equ	0040h
  45:	441F          	osver$3 equ	441fh
  46:			
  47:			; Very undocumented! ugh!
  48:	4585          	flop31	equ	4585h	;Model III LDOS 5.1.x floppy driver
  49:	4583          	flop33	equ	4583h   ;Model III LDOS 5.3.x floppy driver
  50:			
  51:			;*=*=*
  52:			;	Set origin to be safe on both LDOS 5 and 6
  53:			;*=*=*
  54:	6000          		org	6000h
  55:			
  56:			;*=*=*
  57:			; 	Relocator for disk driver
  58:			;*=*=*
  59:	6000  ED533363	instal:	ld	(dct),de	;Save DCT address
  60:	6004  3A0A00  		ld	a,(000ah)	;Determine TRS-80 model
  61:	6007  FE40    		cp	40h
  62:	6009  C2F960  		jp	nz,lsdos6	;Model 4 (or other LS-DOS, I hope)
  63:	600C  3A2501  		ld	a,(m3flag$)
  64:	600F  FE49    		cp	'I'
  65:	6011  CA8660  		jp	z,model3	;Go if Model III
  66:			;*=*=*
  67:			; 	LDOS 5 Model I - See LS-DOS 6 version for comments
  68:			;*=*=*
  69:	6014  3ECD    		ld	a,0cdh		;Insert Model I @LOGOT
  70:	6016  32E761  		ld	(logot),a
  71:	6019  217B44  		ld	hl,@logot1
  72:	601C  22E861  		ld	(logot+1),hl
  73:	601F  214762  		ld	hl,hello_
  74:	6022  CD6744  		call	@dsply1
  75:	6025  3A5847  		ld      a,(cflag$1)
  76:	6028  CB5F    		bit     3,a		;System request?
  77:	602A  CADC61  		jp      z,viaset
  78:	602D  ED5B3363		ld	de,(dct)
  79:	6031  7A      		ld	a,d		;DRIVE= must be specified
  80:	6032  B3      		or	e
  81:	6033  CAD861  		jp	z,needdr
  82:	6036  21F062  	asku1:	ld	hl,unit_	;Ask which unit number
  83:	6039  CD6744  		call	@dsply1
  84:	603C  213563  		ld	hl,unit
  85:	603F  010001  		ld	bc,100h
  86:	6042  CD4000  		call	@keyin1
  87:	6045  DAE461  		jp	c,hitbrk
  88:	6048  C2E461  		jp	nz,hitbrk
  89:	604B  3A3563  		ld	a,(unit)
  90:	604E  FE30    		cp	'0'
  91:	6050  38E4    		jr	c,asku1
  92:	6052  FE38    		cp	'0'+ndrive
  93:	6054  30E0    		jr	nc,asku1
  94:	6056  114D64  		ld	de,modnam	;Module already loaded?
  95:	6059  2A4940  		ld	hl,(high$1)
  96:	605C  CD1562  		call	xgtmod
  97:	605F  CA9761  		jp	z,setdct
  98:	6062  113F64  		ld	de,fd1		;Find fdubl driver
  99:	6065  2A4940  		ld	hl,(high$1)
 100:	6068  CD1562  		call	xgtmod
 101:	606B  C2D061  		jp	nz,needfd	;go if missing
 102:	606E  225764  		ld	(flop),hl
 103:	6071  2A4940  		ld      hl,(high$1)
 104:	6074  223163  		ld      (newend),hl
 105:	6077  112C00  		ld	de,length
 106:	607A  97      		sub	a
 107:	607B  ED52    		sbc	hl,de
 108:	607D  224940  		ld      (high$1),hl
 109:	6080  CDEE61  		call	relo
 110:	6083  C38961  		jp	move
 111:			;*=*=*
 112:			; 	LDOS 5 Model III
 113:			;*=*=*
 114:	6086          	model3:
 115:	6086  3ECD    		ld	a,0cdh		;Insert Model III @LOGOT
 116:	6088  32E761  		ld	(logot),a
 117:	608B  218A42  		ld	hl,@logot3
 118:	608E  22E861  		ld	(logot+1),hl
 119:	6091  214762  		ld	hl,hello_
 120:	6094  CD6744  		call	@dsply3
 121:	6097  3A5847  		ld      a,(cflag$3)
 122:	609A  CB5F    		bit     3,a		;System request?
 123:	609C  CADC61  		jp      z,viaset
 124:	609F  ED5B3363		ld	de,(dct)
 125:	60A3  7A      		ld	a,d		;DRIVE= must be specified
 126:	60A4  B3      		or	e
 127:	60A5  CAD861  		jp	z,needdr
 128:	60A8  21F062  	asku3:	ld	hl,unit_	;Ask which unit number
 129:	60AB  CD6744  		call	@dsply3
 130:	60AE  213563  		ld	hl,unit
 131:	60B1  010001  		ld	bc,100h
 132:	60B4  CD4000  		call	@keyin3
 133:	60B7  DAE461  		jp	c,hitbrk
 134:	60BA  C2E461  		jp	nz,hitbrk
 135:	60BD  3A3563  		ld	a,(unit)
 136:	60C0  FE30    		cp	'0'
 137:	60C2  38E4    		jr	c,asku3
 138:	60C4  FE38    		cp	'0'+ndrive
 139:	60C6  30E0    		jr	nc,asku3
 140:	60C8  114D64  		ld	de,modnam	;Module already loaded?
 141:	60CB  2A1144  		ld	hl,(high$3)
 142:	60CE  CD1562  		call	xgtmod
 143:	60D1  CA9761  		jp	z,setdct
 144:			;
 145:			; Doesn't work on Model III:
 146:			;	ld	de,fd3		;Find floppy driver
 147:			;	ld	hl,(high$3)
 148:			;	call	xgtmod
 149:			;	jp	nz,needfd	;go if missing
 150:			;
 151:			; Cheat instead:
 152:	60D4  3A1F44  		ld	a,(osver$3)
 153:	60D7  FE51    		cp	51h
 154:	60D9  218545  		ld	hl,flop31
 155:	60DC  2803    		jr	z,gotit
 156:	60DE  218345  		ld	hl,flop33
 157:	60E1          	gotit:
 158:			;
 159:	60E1  225764  		ld	(flop),hl
 160:	60E4  2A1144  		ld      hl,(high$3)
 161:	60E7  223163  		ld      (newend),hl
 162:	60EA  112C00  		ld	de,length
 163:	60ED  97      		sub	a
 164:	60EE  ED52    		sbc	hl,de
 165:	60F0  221144  		ld      (high$3),hl
 166:	60F3  CDEE61  		call	relo
 167:	60F6  C38961  		jp	move
 168:			
 169:			;*=*=*
 170:			; 	LS-DOS 6
 171:			;*=*=*
 172:	60F9  214762  	lsdos6:	ld      hl,hello_
 173:	60FC  3E0A    		ld      a,@dsply        ;Display hello
 174:	60FE  EF      		rst     40
 175:			;*=*=*
 176:			;       Check if entry from SYSTEM command.
 177:			;*=*=*
 178:	60FF  3E65    		ld      a,@flags        ;Get flags pointer into IY
 179:	6101  EF      		rst     40
 180:	6102  FD7E02  		ld      a,(iy+'C'-'A')  ;Get CFLAG$
 181:	6105  CB5F    		bit     3,a		;System request?
 182:	6107  CADC61  		jp      z,viaset
 183:	610A  ED5B3363		ld	de,(dct)
 184:	610E  7A      		ld	a,d		;DRIVE= must be specified
 185:	610F  B3      		or	e
 186:	6110  CAD861  		jp	z,needdr
 187:			;*=*=*
 188:			;	Ask which unit number
 189:			;*=*=*
 190:	6113  21F062  	asku4:	ld	hl,unit_	;Ask which unit number
 191:	6116  3E0A    		ld	a,@dsply
 192:	6118  EF      		rst	40
 193:	6119  213563  		ld	hl,unit
 194:	611C  010001  		ld	bc,100h
 195:	611F  3E09    		ld	a,@keyin
 196:	6121  EF      		rst	40
 197:	6122  DAE461  		jp	c,hitbrk
 198:	6125  C2E461  		jp	nz,hitbrk
 199:	6128  3A3563  		ld	a,(unit)
 200:	612B  FE30    		cp	'0'
 201:	612D  38E4    		jr	c,asku4
 202:	612F  FE38    		cp	'0'+ndrive
 203:	6131  30E0    		jr	nc,asku4
 204:			;*=*=*
 205:			;       Check if driver already loaded
 206:			;*=*=*
 207:	6133  114D64  		ld	de,modnam
 208:	6136  3E53    		ld	a,@gtmod
 209:	6138  EF      		rst	40
 210:	6139  CA9761  		jp	z,setdct	;Already loaded, skip loading
 211:			;*=*=*
 212:			;	Find system floppy driver
 213:			;*=*=*
 214:	613C  114464  		ld	de,fd4
 215:	613F  3E53    		ld	a,@gtmod
 216:	6141  EF      		rst	40
 217:	6142  C2D461  		jp	nz,curdl	;Fatal error if not found
 218:	6145  225764  		ld	(flop),hl
 219:			;*=*=*
 220:			;       Obtain low memory driver pointer.  Bizarre API here!
 221:			;*=*=*
 222:	6148  1E4B    	        ld      e,'K'           ;Locate pointer to *KI DCB
 223:	614A  1649    		ld	d,'I'		;  via @GTDCB SVC
 224:	614C  3E52    	        ld      a,@gtdcb        
 225:	614E  EF      	        rst     40
 226:	614F  C2D461  	        jp      nz,curdl        ;No error unless KI clobbered!
 227:	6152  2B      	        dec     hl              ;Decrement to driver pointer
 228:	6153  56      	        ld      d,(hl)          ;P/u hi-order of pointer,
 229:	6154  2B      	        dec     hl              ;  decrement to and p/u
 230:	6155  5E      	        ld      e,(hl)          ;  lo-order of pointer
 231:			;*=*=*
 232:			;       Check if driver will fit into [(LCPTR), X'12FF']
 233:			;*=*=*
 234:	6156  E5      		push	hl		;Save address of pointer
 235:	6157  212C00  	        ld      hl,length	;New pointer will be
 236:	615A  19      	        add     hl,de		;  pointer + LENGTH
 237:	615B  54      		ld	d,h		;Save a copy in DE
 238:	615C  5D      		ld	e,l
 239:	615D  010113  	        ld      bc,1301h        ;If > 1300H, driver won't fit
 240:	6160  97      	        sub     a               ;Reset carry flag
 241:	6161  ED42    	        sbc     hl,bc
 242:	6163  E1      		pop	hl		;Get back address of pointer
 243:	6164  300A    	        jr      nc,usehi        ;Go if driver won't fit
 244:	6166  73      		ld	(hl),e		;Store new value of pointer
 245:	6167  23      		inc	hl
 246:	6168  72      		ld	(hl),d
 247:	6169  1B      		dec	de		;Last byte of driver goes here
 248:	616A  ED533163		ld      (newend),de
 249:	616E  1816    		jr	dorelo
 250:			;*=*=*
 251:			;       Put in high memory instead.
 252:			;*=*=*
 253:	6170  210000  	usehi:	ld      hl,0            ;Get current HIGH$
 254:	6173  45      		ld      b,l
 255:	6174  3E64    		ld      a,@high 
 256:	6176  EF      		rst     40
 257:	6177  C2E061  		jp      nz,nomem
 258:	617A  223163  		ld      (newend),hl	;Last byte of driver goes here
 259:	617D  112C00  		ld	de,length
 260:	6180  97      		sub	a		;Reset carry flag
 261:	6181  ED52    		sbc	hl,de		;Compute new HIGH$
 262:	6183  3E64    		ld      a,@high         ;Set new HIGH$ into the system
 263:	6185  EF      		rst     40
 264:			;*=*=*
 265:			;       Relocate internal references in driver.
 266:			;	HL = address for last byte of driver.
 267:			;*=*=*
 268:	6186  CDEE61  	dorelo:	call	relo
 269:			;*=*=*
 270:			;       Move driver into low or high memory.
 271:			;*=*=*
 272:	6189          	move:
 273:	6189  ED5B3163		ld      de,(newend)     ;Destination address
 274:	618D  217364  		ld      hl,dvrend       ;Last byte of module
 275:	6190  012C00  		ld      bc,length       ;Length of filter
 276:	6193  EDB8    		lddr
 277:	6195  EB      		ex      de,hl
 278:	6196  23      		inc     hl              ;Bump to driver entry
 279:			;*=*=*
 280:			;	Setup DCT
 281:			;*=*=*
 282:	6197          	setdct:
 283:	6197  FD2A3363		ld	iy,(dct)
 284:	619B  FD7501  		ld      (iy+1),l          ;Driver address
 285:	619E  FD7402  		ld      (iy+2),h
 286:	61A1  FD360320		ld	(iy+3),00100000b  ;Flags: 8" floppy
 287:	61A5  3A3563  		ld	a,(unit)	  ;Xlate unit number to select code
 288:	61A8  E607    		and	07h
 289:	61AA  4F      		ld	c,a
 290:	61AB  0600    		ld	b,0
 291:	61AD  213764  		ld	hl,utab
 292:	61B0  09      		add	hl,bc
 293:	61B1  7E      		ld	a,(hl)
 294:	61B2  F640    		or	01000000b         ;Flags: dden capable, select code
 295:	61B4  FD7704  		ld	(iy+4),a
 296:	61B7  FD360500		ld	(iy+5),0	  ;current cylinder number
 297:	61BB  FD36064C		ld	(iy+6),76	  ;high cylinder number
 298:	61BF  FD36070F		ld	(iy+7),0fh        ;init to sden head/sec/gran config
 299:	61C3  FD360827		ld	(iy+8),27h
 300:	61C7  FD360926		ld	(iy+9),38	  ;Directory cylinder (guess)
 301:			
 302:	61CB  210000  		ld      hl,0            ;Successful completion
 303:	61CE  97      		sub	a
 304:	61CF  C9      		ret
 305:			;*=*=*
 306:	61D0  211363  	needfd:	ld	hl,needfd_
 307:	61D3  DD      		defb	0ddh
 308:	61D4  217B62  	curdl:	ld	hl,curdl_	;Other error
 309:	61D7  DD      		defb	0ddh
 310:	61D8  21D662  	needdr:	ld	hl,needdr_
 311:	61DB  DD      		defb	0ddh
 312:	61DC  21AC62  	viaset: ld      hl,viaset_
 313:	61DF  DD      		defb    0ddh
 314:	61E0  218E62  	nomem:  ld      hl,nomem_
 315:	61E3  DD      		defb    0ddh
 316:	61E4  210A63  	hitbrk:	ld	hl,hitbrk_
 317:	61E7  3E0C    	logot:	ld	a,@logot 
 318:	61E9  EF      		rst	40
 319:	61EA  21FFFF  		ld      hl,-1            ;Unuccessful completion
 320:	61ED  C9      		ret
 321:			
 322:			;*=*=*
 323:			;       Relocate internal references in driver.
 324:			;	HL = address for last byte of driver.
 325:			;*=*=*
 326:	61EE  2A3163  	relo:	ld	hl,(newend)
 327:	61F1  FD217464		ld      iy,reltab       ;Point to relocation tbl
 328:	61F5  117364  		ld      de,dvrend
 329:	61F8  97      		sub     a               ;Clear carry flag
 330:	61F9  ED52    		sbc     hl,de
 331:	61FB  44      		ld      b,h             ;Move to BC
 332:	61FC  4D      		ld      c,l
 333:	61FD  FD6E00  	rloop:  ld      l,(iy)          ;Get address to change
 334:	6200  FD6601  		ld      h,(iy+1)
 335:	6203  7C      		ld      a,h
 336:	6204  B5      		or      l
 337:	6205  C8      		ret	z
 338:	6206  5E      		ld      e,(hl)          ;P/U address
 339:	6207  23      		inc     hl
 340:	6208  56      		ld      d,(hl)
 341:	6209  EB      		ex      de,hl           ;Offset it
 342:	620A  09      		add     hl,bc
 343:	620B  EB      		ex      de,hl
 344:	620C  72      		ld      (hl),d          ;And put back
 345:	620D  2B      		dec     hl
 346:	620E  73      		ld      (hl),e
 347:	620F  FD23    		inc     iy
 348:	6211  FD23    		inc     iy
 349:	6213  18E8    		jr      rloop           ;Loop till done
 350:			
 351:			;*=*=*
 352:			;	Search for existing copy of driver.
 353:			;        Rough Model I/III emulation of Model 4 @GTMOD,
 354:			;        hardcoded with driver address.
 355:			;	Entry: HL = (HIGH$)
 356:			;              DE => module name, terminated with a character <= 0x1f
 357:			;	Exit Z: HL = driver address
 358:			;            NZ: driver not found
 359:			;*=*=*
 360:	6215  23      	xgtmod:	inc	hl
 361:	6216  7C      		ld	a,h
 362:	6217  B5      		or	l
 363:	6218  2002    		jr	nz,xgtm1
 364:	621A  3D      		dec	a		;not found
 365:	621B  C9      		ret
 366:	621C  7E      	xgtm1:	ld	a,(hl)
 367:	621D  FE18    		cp	18h		;unconditional jr?
 368:	621F  C0      		ret	nz		;not a module header
 369:	6220  D5      		push	de		;save desired name ptr
 370:	6221  E5      		push	hl		;save start address
 371:	6222  23      		inc	hl		;skip jr
 372:	6223  23      		inc	hl		;skip offset
 373:	6224  23      		inc	hl		;skip start address
 374:	6225  23      		inc	hl
 375:	6226  46      		ld	b,(hl)		;get name length
 376:	6227  23      		inc	hl
 377:	6228  1A      	xgtm2:	ld	a,(de)
 378:	6229  FE20    		cp	20h
 379:	622B  3810    		jr	c,nextmd	;desired name shorter - skip
 380:	622D  BE      		cp	(hl)
 381:	622E  200D    		jr	nz,nextmd	;character different - skip
 382:	6230  13      		inc	de
 383:	6231  23      		inc	hl
 384:	6232  10F4    		djnz	xgtm2
 385:	6234  1A      		ld	a,(de)
 386:	6235  FE20    		cp	20h
 387:	6237  3004    		jr	nc,nextmd	;desired name longer - skip
 388:	6239  E1      		pop	hl		;same - found
 389:	623A  D1      		pop	de
 390:	623B  97      		sub	a
 391:	623C  C9      		ret
 392:	623D  E1      	nextmd:	pop	hl		;get back start of module
 393:	623E  23      		inc	hl
 394:	623F  23      		inc	hl
 395:	6240  5E      		ld	e,(hl)		;pointer to last byte
 396:	6241  23      		inc	hl
 397:	6242  56      		ld	d,(hl)
 398:	6243  EB      		ex	de,hl
 399:	6244  D1      		pop	de
 400:	6245  18CE    		jr	xgtmod
 401:			
 402:			;*=*=*
 403:			;	Messages and globals
 404:			;*=*=*
 405:	6247  58545253	hello_: defb    'XTRS8 - Emulated 8" floppy driver for xtrs - 4/9/98',CR
	      38202D20
	      456D756C
	      61746564
	      20382220
	      666C6F70
	      70792064
	      72697665
	      7220666F
	      72207874
	      7273202D
	      20342F39
	      2F39380D
 406:	627B  4C532D44	curdl_:	defb	'LS-DOS is curdled!',CR
	      4F532069
	      73206375
	      72646C65
	      64210D
 407:	628E  48696768	nomem_: defb    'High memory is not available!',CR
	      206D656D
	      6F727920
	      6973206E
	      6F742061
	      7661696C
	      61626C65
	      210D
 408:	62AC  4D757374	viaset_:defb    'Must install via SYSTEM (DRIVE=,DRIVER=)!',CR
	      20696E73
	      74616C6C
	      20766961
	      20535953
	      54454D20
	      28445249
	      56453D2C
	      44524956
	      45523D29
	      210D
 409:	62D6  44524956	needdr_:defb	'DRIVE= must be specified!',CR
	      453D206D
	      75737420
	      62652073
	      70656369
	      66696564
	      210D
 410:	62F0  456E7465	unit_:	defb	'Enter unit number (4-7): ',ETX
	      7220756E
	      6974206E
	      756D6265
	      72202834
	      2D37293A
	      2003
 411:	630A  41626F72	hitbrk_:defb	'Aborted!',CR
	      74656421
	      0D
 412:	6313  46445542	needfd_:defb	'FDUBL must be loaded first!',CR
	      4C206D75
	      73742062
	      65206C6F
	      61646564
	      20666972
	      7374210D
 413:	632F  0000    	lcptr:	defw	0
 414:	6331  0000    	newend:	defw	0
 415:	6333  0000    	dct:    defw	0
 416:	6335          	unit:   defs	2
 417:	6337          	errbuf:	defs	256
 418:	6437  01020408	utab:   defb	1,2,4,8,3,5,6,7
	      03050607
 419:	643F  24464444	fd1:	defb	'$FDD',ETX
	      03
 420:	6444  24464403	fd4:	defb	'$FD',ETX
 421:			
 422:			;
 423:			; Driver - just a tiny wrapper around LDOS dden floppy driver
 424:			;
 425:			
 426:	6448  180C    	entry:  jr      begin           ;The driver starts with the
 427:	644A  7364    		defw    dvrend          ;  DOS standard header
 428:	644A          	rx00	equ	$-2
 429:	644C  05      		defb    modptr-modnam   ;Length of name
 430:	644D  78747273	modnam:	defb    'xtrs8'         ;Name for @GTMOD requests
	      38
 431:	6452  0000    	modptr: defw    0               ;These pointers are unused, but 1st byte MBZ
 432:	6454  0000    		defw    0
 433:			
 434:	6456  CD0000  	begin:	call	$-$		;call the real driver
 435:	6457          	flop	equ	$-2
 436:	6459  F5      		push 	af
 437:	645A  FDCB036E		bit 	5,(iy+3)	;8" drive?
 438:	645E  2812    		jr 	z,done		;go if not
 439:	6460  01491D  		ld	bc,1d49h	;init for dden
 440:	6463  FDCB0376		bit	6,(iy+3)	;dden?
 441:	6467  2003    		jr	nz,ldden	;go if so
 442:	6469  01270F  		ld	bc,0f27h
 443:	646C  FD7007  	ldden:	ld	(iy+7), b
 444:	646F  FD7108  		ld	(iy+8), c
 445:	6472  F1      	done:   pop	af
 446:	6473  C9      		ret
 447:			
 448:	6473          	dvrend  equ     $-1
 449:	002C          	length  equ     $-entry
 450:	6474  4A640000	reltab: defw    rx00,0
 451:	6000          		end     instal



Statistics:

    76	symbols
   886	bytes



Symbol Table:

@dsply         =   a     entry           6448     ndrive         =   8     
@dsply1        =4467     errbuf          6337+    needdr          61d8     
@dsply3        =4467     etx            =   3     needdr_         62d6     
@flags         =  65     fd1             643f     needfd          61d0     
@gtdcb         =  52     fd4             6444     needfd_         6313     
@gtmod         =  53     flop           =6457     newend          6331     
@high          =  64     flop31         =4585     nextmd          623d     
@keyin         =   9     flop33         =4583     nomem           61e0     
@keyin1        =  40     gotit           60e1     nomem_          628e     
@keyin3        =  40     hello_          6247     osver3         =441f     
@logot         =   c     high1          =4049     relo            61ee     
@logot1        =447b     high3          =4411     reltab          6474     
@logot3        =428a     hitbrk          61e4     rloop           61fd     
asku1           6036     hitbrk_         630a     rx00           =644a     
asku3           60a8     instal          6000     setdct          6197     
asku4           6113     lcptr           632f+    unit            6335     
begin           6456     ldden           646c     unit_           62f0     
cflag1         =4758     length         =  2c     usehi           6170     
cflag3         =4758     lf             =   a+    utab            6437     
cr             =   d     logot           61e7     viaset          61dc     
curdl           61d4     lsdos6          60f9     viaset_         62ac     
curdl_          627b     m3flag         = 125     xgtm1           621c     
dct             6333     model3          6086     xgtm2           6228     
done            6472     modnam          644d     xgtmod          6215     
dorelo          6186     modptr          6452     
dvrend         =6473     move            6189