FoenixMCP/src/fatfs/diskio.lst
Peter Weingartner 1da613be94 Added FatFS
2021-09-14 18:23:33 -04:00

797 lines
32 KiB
Plaintext
Raw Blame History

This file contains invisible Unicode characters

This file contains invisible Unicode characters that are indistinguishable to humans but may be processed differently by a computer. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

Thu May 20 2021 21:34 Page 1
***************************************
** WDC 65C816 Macro Assembler **
** **
** Version 3.49.1- Feb 6 2006 **
***************************************
1 ;:ts=8
2 00000001 R0 equ 1
3 00000005 R1 equ 5
4 00000009 R2 equ 9
5 0000000D R3 equ 13
6 ;/*-----------------------------------------------
------------------------*/
7 ;/* Low level disk I/O module SKELETON for FatFs
(C)ChaN, 2019 */
8 ;/*-----------------------------------------------
------------------------*/
9 ;/* If a working storage control module is availab
le, it should be */
10 ;/* attached to the FatFs via a glue function rath
er than modifying it. */
11 ;/* This is an example of glue functions to attach
various exsisting */
12 ;/* storage control modules to the FatFs module wi
th a defined API. */
13 ;/*-----------------------------------------------
------------------------*/
14 ;
15 ;#include "ff.h" /* Obtains integ
er types */
16 ;#include "diskio.h" /* Declarations
of disk functions */
17 ;
18 ;/* Definitions of physical drive number for each
drive */
19 ;#define DEV_SDC 0 /* Example: Map
Ramdisk to physical drive 0 */
20 ;
21 ;
22 ;/*-----------------------------------------------
------------------------*/
23 ;/* Get Drive Status
*/
24 ;/*-----------------------------------------------
------------------------*/
25 ;
26 ;DSTATUS disk_status (
27 ; BYTE pdrv /* Physical drive nmuber
to identify the drive */
28 ;)
29 ;{
30 code
31 xdef ~~disk_status
32 func
33 ~~disk_status:
34 longa on
35 longi on
36 00:0000: 3B tsc
Thu May 20 2021 21:34 Page 2
37 00:0001: 38 sec
38 00:0002: E9 03 00 sbc #L2
39 00:0005: 1B tcs
40 00:0006: 0B phd
41 00:0007: 5B tcd
42 00000004 pdrv_0 set 4
43 ; DSTATUS stat;
44 ; int result;
45 ;
46 ; k_prints("disk_status\r");
47 00000000 stat_1 set 0
48 00000001 result_1 set 1
49 00:0008: F4 xx xx pea #^L1
50 00:000B: F4 xx xx pea #<L1
51 00:000E: 22 xx xx xx jsl ~~k_prints
52 ;
53 ; switch (pdrv) {
54 00:0012: A5 07 lda <L2+pdrv_0
55 00:0014: 29 FF 00 and #$ff
56 00:0017: 82 15 00 brl L10001
57 ; case DEV_SDC:
58 L10003:
59 ;
60 ; // translate the reslut code here
61 ;
62 ; return 0;
63 00:001A: A9 00 00 lda #$0
64 L4:
65 00:001D: A8 tay
66 00:001E: A5 05 lda <L2+2
67 00:0020: 85 07 sta <L2+2+2
68 00:0022: A5 04 lda <L2+1
69 00:0024: 85 06 sta <L2+1+2
70 00:0026: 2B pld
71 00:0027: 3B tsc
72 00:0028: 18 clc
73 00:0029: 69 05 00 adc #L2+2
74 00:002C: 1B tcs
75 00:002D: 98 tya
76 00:002E: 6B rtl
77 ;
78 ; }
79 L10001:
80 xref ~~~swt
81 00:002F: 22 xx xx xx jsl ~~~swt
82 00:0033: 01 00 dw 1
83 00:0035: 00 00 dw 0
84 00:0037: xx xx dw L10003-1
85 00:0039: xx xx dw L10002-1
86 L10002:
87 ; return STA_NOINIT;
88 00:003B: A9 01 00 lda #$1
89 00:003E: 82 DC FF brl L4
90 ;}
91 00000003 L2 equ 3
92 00000001 L3 equ 1
93 ends
94 efunc
Thu May 20 2021 21:34 Page 3
95 data
96 L1:
97 00:0000: 64 69 73 6B db $64,$69,$73,$6B,$5F,$73,$74,$61,$74,$75,
$73,$0D,$00
00:0004: 5F 73 74 61
00:0008: 74 75 73 0D
00:000C: 00
98 00:000D: ends
99 ;
100 ;
101 ;
102 ;/*-----------------------------------------------
------------------------*/
103 ;/* Inidialize a Drive
*/
104 ;/*-----------------------------------------------
------------------------*/
105 ;
106 ;DSTATUS disk_initialize (
107 ; BYTE pdrv /* Physi
cal drive nmuber to identify the drive */
108 ;)
109 ;{
110 code
111 xdef ~~disk_initialize
112 func
113 ~~disk_initialize:
114 longa on
115 longi on
116 00:0041: 3B tsc
117 00:0042: 38 sec
118 00:0043: E9 03 00 sbc #L6
119 00:0046: 1B tcs
120 00:0047: 0B phd
121 00:0048: 5B tcd
122 00000004 pdrv_0 set 4
123 ; DSTATUS stat;
124 ; int result;
125 ;
126 ; k_prints("disk_initialize\r");
127 00000000 stat_1 set 0
128 00000001 result_1 set 1
129 00:0049: F4 xx xx pea #^L5
130 00:004C: F4 xx xx pea #<L5
131 00:004F: 22 xx xx xx jsl ~~k_prints
132 ;
133 ; switch (pdrv) {
134 00:0053: A5 07 lda <L6+pdrv_0
135 00:0055: 29 FF 00 and #$ff
136 00:0058: 82 28 00 brl L10004
137 ; case DEV_SDC :
138 L10006:
139 ; if (bios_mount(2)) {
140 00:005B: F4 02 00 pea #<$2
141 00:005E: 22 xx xx xx jsl ~~bios_mount
142 00:0062: AA tax
143 00:0063: D0 03 bne L8
144 00:0065: 82 15 00 brl L10007
Thu May 20 2021 21:34 Page 4
145 L8:
146 ; return STA_NOINIT;
147 00:0068: A9 01 00 lda #$1
148 L9:
149 00:006B: A8 tay
150 00:006C: A5 05 lda <L6+2
151 00:006E: 85 07 sta <L6+2+2
152 00:0070: A5 04 lda <L6+1
153 00:0072: 85 06 sta <L6+1+2
154 00:0074: 2B pld
155 00:0075: 3B tsc
156 00:0076: 18 clc
157 00:0077: 69 05 00 adc #L6+2
158 00:007A: 1B tcs
159 00:007B: 98 tya
160 00:007C: 6B rtl
161 ; } else {
162 L10007:
163 ; return 0;
164 00:007D: A9 00 00 lda #$0
165 00:0080: 82 E8 FF brl L9
166 ; }
167 ; }
168 L10004:
169 xref ~~~swt
170 00:0083: 22 xx xx xx jsl ~~~swt
171 00:0087: 01 00 dw 1
172 00:0089: 00 00 dw 0
173 00:008B: xx xx dw L10006-1
174 00:008D: xx xx dw L10005-1
175 L10005:
176 ; return STA_NOINIT;
177 00:008F: A9 01 00 lda #$1
178 00:0092: 82 D6 FF brl L9
179 ;}
180 00000003 L6 equ 3
181 00000001 L7 equ 1
182 ends
183 efunc
184 data
185 L5:
186 00:000D: 64 69 73 6B db $64,$69,$73,$6B,$5F,$69,$6E,$69,$74,$69,
$61,$6C,$69,$7A,$65
00:0011: 5F 69 6E 69
00:0015: 74 69 61 6C
00:0019: 69 7A 65
187 00:001C: 0D 00 db $0D,$00
188 00:001E: ends
189 ;
190 ;
191 ;
192 ;/*-----------------------------------------------
------------------------*/
193 ;/* Read Sector(s)
*/
194 ;/*-----------------------------------------------
------------------------*/
195 ;
Thu May 20 2021 21:34 Page 5
196 ;DRESULT disk_read (
197 ; BYTE pdrv, /* Physical drive nmuber
to identify the drive */
198 ; BYTE *buff, /* Data buffer to store
read data */
199 ; LBA_t sector, /* Start sector in LBA */
200 ; UINT count /* Number of sectors to
read */
201 ;)
202 ;{
203 code
204 xdef ~~disk_read
205 func
206 ~~disk_read:
207 longa on
208 longi on
209 00:0095: 3B tsc
210 00:0096: 38 sec
211 00:0097: E9 04 00 sbc #L11
212 00:009A: 1B tcs
213 00:009B: 0B phd
214 00:009C: 5B tcd
215 00000004 pdrv_0 set 4
216 00000006 buff_0 set 6
217 0000000A sector_0 set 10
218 0000000E count_0 set 14
219 ; DRESULT res;
220 ; int result;
221 ;
222 ; k_prints("disk_read\r");
223 00000000 res_1 set 0
224 00000002 result_1 set 2
225 00:009D: F4 xx xx pea #^L10
226 00:00A0: F4 xx xx pea #<L10
227 00:00A3: 22 xx xx xx jsl ~~k_prints
228 ;
229 ; switch (pdrv) {
230 00:00A7: A5 08 lda <L11+pdrv_0
231 00:00A9: 29 FF 00 and #$ff
232 00:00AC: 82 21 00 brl L10008
233 ; case DEV_SDC:
234 L10010:
235 ; // translate the arguments here
236 ;
237 ; return bios_getblock(2, sector, buff);
238 00:00AF: D4 0C pei <L11+buff_0+2
239 00:00B1: D4 0A pei <L11+buff_0
240 00:00B3: D4 10 pei <L11+sector_0+2
241 00:00B5: D4 0E pei <L11+sector_0
242 00:00B7: F4 02 00 pea #<$2
243 00:00BA: 22 xx xx xx jsl ~~bios_getblock
244 L13:
245 00:00BE: A8 tay
246 00:00BF: A5 06 lda <L11+2
247 00:00C1: 85 12 sta <L11+2+12
248 00:00C3: A5 05 lda <L11+1
249 00:00C5: 85 11 sta <L11+1+12
250 00:00C7: 2B pld
Thu May 20 2021 21:34 Page 6
251 00:00C8: 3B tsc
252 00:00C9: 18 clc
253 00:00CA: 69 10 00 adc #L11+12
254 00:00CD: 1B tcs
255 00:00CE: 98 tya
256 00:00CF: 6B rtl
257 ; }
258 L10008:
259 xref ~~~swt
260 00:00D0: 22 xx xx xx jsl ~~~swt
261 00:00D4: 01 00 dw 1
262 00:00D6: 00 00 dw 0
263 00:00D8: xx xx dw L10010-1
264 00:00DA: xx xx dw L10009-1
265 L10009:
266 ;
267 ; return RES_PARERR;
268 00:00DC: A9 04 00 lda #$4
269 00:00DF: 82 DC FF brl L13
270 ;}
271 00000004 L11 equ 4
272 00000001 L12 equ 1
273 ends
274 efunc
275 data
276 L10:
277 00:001E: 64 69 73 6B db $64,$69,$73,$6B,$5F,$72,$65,$61,$64,$0D,
$00
00:0022: 5F 72 65 61
00:0026: 64 0D 00
278 00:0029: ends
279 ;
280 ;
281 ;
282 ;/*-----------------------------------------------
------------------------*/
283 ;/* Write Sector(s)
*/
284 ;/*-----------------------------------------------
------------------------*/
285 ;
286 ;#if FF_FS_READONLY == 0
287 ;
288 ;DRESULT disk_write (
289 ; BYTE pdrv, /* Physical driv
e nmuber to identify the drive */
290 ; const BYTE *buff, /* Data to be written */
291 ; LBA_t sector, /* Start sector in LBA *
/
292 ; UINT count /* Number of sec
tors to write */
293 ;)
294 ;{
295 code
296 xdef ~~disk_write
297 func
298 ~~disk_write:
299 longa on
Thu May 20 2021 21:34 Page 7
300 longi on
301 00:00E2: 3B tsc
302 00:00E3: 38 sec
303 00:00E4: E9 04 00 sbc #L15
304 00:00E7: 1B tcs
305 00:00E8: 0B phd
306 00:00E9: 5B tcd
307 00000004 pdrv_0 set 4
308 00000006 buff_0 set 6
309 0000000A sector_0 set 10
310 0000000E count_0 set 14
311 ; DRESULT res;
312 ; int result;
313 ;
314 ; k_prints("disk_write\r");
315 00000000 res_1 set 0
316 00000002 result_1 set 2
317 00:00EA: F4 xx xx pea #^L14
318 00:00ED: F4 xx xx pea #<L14
319 00:00F0: 22 xx xx xx jsl ~~k_prints
320 ;
321 ; switch (pdrv) {
322 00:00F4: A5 08 lda <L15+pdrv_0
323 00:00F6: 29 FF 00 and #$ff
324 00:00F9: 82 15 00 brl L10011
325 ; case DEV_SDC:
326 L10013:
327 ; // translate the arguments here
328 ;
329 ;
330 ; // translate the reslut code here
331 ;
332 ; return 0;
333 00:00FC: A9 00 00 lda #$0
334 L17:
335 00:00FF: A8 tay
336 00:0100: A5 06 lda <L15+2
337 00:0102: 85 12 sta <L15+2+12
338 00:0104: A5 05 lda <L15+1
339 00:0106: 85 11 sta <L15+1+12
340 00:0108: 2B pld
341 00:0109: 3B tsc
342 00:010A: 18 clc
343 00:010B: 69 10 00 adc #L15+12
344 00:010E: 1B tcs
345 00:010F: 98 tya
346 00:0110: 6B rtl
347 ; }
348 L10011:
349 xref ~~~swt
350 00:0111: 22 xx xx xx jsl ~~~swt
351 00:0115: 01 00 dw 1
352 00:0117: 00 00 dw 0
353 00:0119: xx xx dw L10013-1
354 00:011B: xx xx dw L10012-1
355 L10012:
356 ;
357 ; return RES_PARERR;
Thu May 20 2021 21:34 Page 8
358 00:011D: A9 04 00 lda #$4
359 00:0120: 82 DC FF brl L17
360 ;}
361 00000004 L15 equ 4
362 00000001 L16 equ 1
363 ends
364 efunc
365 data
366 L14:
367 00:0029: 64 69 73 6B db $64,$69,$73,$6B,$5F,$77,$72,$69,$74,$65,
$0D,$00
00:002D: 5F 77 72 69
00:0031: 74 65 0D 00
368 00:0035: ends
369 ;
370 ;#endif
371 ;
372 ;
373 ;/*-----------------------------------------------
------------------------*/
374 ;/* Miscellaneous Functions
*/
375 ;/*-----------------------------------------------
------------------------*/
376 ;
377 ;DRESULT disk_ioctl (
378 ; BYTE pdrv, /* Physical drive nmuber
(0..) */
379 ; BYTE cmd, /* Control code */
380 ; void *buff /* Buffer to send/receiv
e control data */
381 ;)
382 ;{
383 code
384 xdef ~~disk_ioctl
385 func
386 ~~disk_ioctl:
387 longa on
388 longi on
389 00:0123: 3B tsc
390 00:0124: 38 sec
391 00:0125: E9 04 00 sbc #L19
392 00:0128: 1B tcs
393 00:0129: 0B phd
394 00:012A: 5B tcd
395 00000004 pdrv_0 set 4
396 00000006 cmd_0 set 6
397 00000008 buff_0 set 8
398 ; DRESULT res;
399 ; int result;
400 ;
401 ; k_prints("disk_ioctl\r");
402 00000000 res_1 set 0
403 00000002 result_1 set 2
404 00:012B: F4 xx xx pea #^L18
405 00:012E: F4 xx xx pea #<L18
406 00:0131: 22 xx xx xx jsl ~~k_prints
407 ;
Thu May 20 2021 21:34 Page 9
408 ; switch (pdrv) {
409 00:0135: A5 08 lda <L19+pdrv_0
410 00:0137: 29 FF 00 and #$ff
411 00:013A: 82 15 00 brl L10014
412 ; case DEV_SDC:
413 L10016:
414 ;
415 ; // Process of the command for the RAM dr
ive
416 ;
417 ; return 0;
418 00:013D: A9 00 00 lda #$0
419 L21:
420 00:0140: A8 tay
421 00:0141: A5 06 lda <L19+2
422 00:0143: 85 0E sta <L19+2+8
423 00:0145: A5 05 lda <L19+1
424 00:0147: 85 0D sta <L19+1+8
425 00:0149: 2B pld
426 00:014A: 3B tsc
427 00:014B: 18 clc
428 00:014C: 69 0C 00 adc #L19+8
429 00:014F: 1B tcs
430 00:0150: 98 tya
431 00:0151: 6B rtl
432 ; }
433 L10014:
434 xref ~~~swt
435 00:0152: 22 xx xx xx jsl ~~~swt
436 00:0156: 01 00 dw 1
437 00:0158: 00 00 dw 0
438 00:015A: xx xx dw L10016-1
439 00:015C: xx xx dw L10015-1
440 L10015:
441 ;
442 ; return RES_PARERR;
443 00:015E: A9 04 00 lda #$4
444 00:0161: 82 DC FF brl L21
445 ;}
446 00000004 L19 equ 4
447 00000001 L20 equ 1
448 ends
449 efunc
450 data
451 L18:
452 00:0035: 64 69 73 6B db $64,$69,$73,$6B,$5F,$69,$6F,$63,$74,$6C,
$0D,$00
00:0039: 5F 69 6F 63
00:003D: 74 6C 0D 00
453 00:0041: ends
454 ;
455 ;#define BIOS_STATUS ((volatile char *)0x000320)
456 ;#define BIOS_DEV ((volatile char *)0x000321)
457 ;#define BIOS_LBA ((volatile long *)0x000322)
458 ;#define BIOS_BUFFER ((volatile long *)0x000326)
459 ;
460 ;/**
461 ; * Call the C256 F_MOUNT kernel routine
Thu May 20 2021 21:34 Page 10
462 ; */
463 ;int bios_mount(char dev) {
464 code
465 xdef ~~bios_mount
466 func
467 ~~bios_mount:
468 longa on
469 longi on
470 00:0164: 3B tsc
471 00:0165: 38 sec
472 00:0166: E9 00 00 sbc #L23
473 00:0169: 1B tcs
474 00:016A: 0B phd
475 00:016B: 5B tcd
476 00000004 dev_0 set 4
477 ; asm {
478 ; LDA %%dev
479 ; jsl $001128
480 ; }
481 asmstart
482 00:016C: A5 04 LDA <L23+dev_0
483 00:016E: 22 28 11 00 jsl $001128
484 asmend
485 ;
486 ; if ((*BIOS_STATUS & 0x80) != 0) {
487 00:0172: E2 20 sep #$20
488 longa off
489 00:0174: AF 20 03 00 lda >800 ; volatile
490 00:0178: 29 80 and #<$80
491 00:017A: C2 20 rep #$20
492 longa on
493 00:017C: D0 03 bne L25
494 00:017E: 82 15 00 brl L10017
495 L25:
496 ; return RES_ERROR;
497 00:0181: A9 01 00 lda #$1
498 L26:
499 00:0184: A8 tay
500 00:0185: A5 02 lda <L23+2
501 00:0187: 85 04 sta <L23+2+2
502 00:0189: A5 01 lda <L23+1
503 00:018B: 85 03 sta <L23+1+2
504 00:018D: 2B pld
505 00:018E: 3B tsc
506 00:018F: 18 clc
507 00:0190: 69 02 00 adc #L23+2
508 00:0193: 1B tcs
509 00:0194: 98 tya
510 00:0195: 6B rtl
511 ; } else {
512 L10017:
513 ; return RES_OK;
514 00:0196: A9 00 00 lda #$0
515 00:0199: 82 E8 FF brl L26
516 ; }
517 ;}
518 00000000 L23 equ 0
519 00000001 L24 equ 1
Thu May 20 2021 21:34 Page 11
520 ends
521 efunc
522 ;
523 ;/**
524 ; * Call the C256 GETBLOCK kernel routine
525 ; */
526 ;int bios_getblock(char dev, long lba, char * buff
er) {
527 code
528 xdef ~~bios_getblock
529 func
530 ~~bios_getblock:
531 longa on
532 longi on
533 00:019C: 3B tsc
534 00:019D: 38 sec
535 00:019E: E9 04 00 sbc #L27
536 00:01A1: 1B tcs
537 00:01A2: 0B phd
538 00:01A3: 5B tcd
539 00000004 dev_0 set 4
540 00000006 lba_0 set 6
541 0000000A buffer_0 set 10
542 ; *BIOS_DEV = dev;
543 00:01A4: E2 20 sep #$20
544 longa off
545 00:01A6: A5 08 lda <L27+dev_0
546 00:01A8: 8F 21 03 00 sta >801 ; volatile
547 00:01AC: C2 20 rep #$20
548 longa on
549 ; *BIOS_LBA = lba;
550 00:01AE: A5 0A lda <L27+lba_0
551 00:01B0: 8F 22 03 00 sta >802 ; volatile
552 00:01B4: A5 0C lda <L27+lba_0+2
553 00:01B6: 8F 24 03 00 sta >802+2 ; volatile
554 ; *BIOS_BUFFER = (long)buffer;
555 00:01BA: A5 0E lda <L27+buffer_0
556 00:01BC: 8F 26 03 00 sta >806 ; volatile
557 00:01C0: A5 10 lda <L27+buffer_0+2
558 00:01C2: 8F 28 03 00 sta >806+2 ; volatile
559 ; k_prints("getblock: ");
560 00:01C6: F4 xx xx pea #^L22
561 00:01C9: F4 xx xx pea #<L22
562 00:01CC: 22 xx xx xx jsl ~~k_prints
563 ; k_printh(dev);
564 00:01D0: A5 08 lda <L27+dev_0
565 00:01D2: 29 FF 00 and #$ff
566 00:01D5: 48 pha
567 00:01D6: 22 xx xx xx jsl ~~k_printh
568 ; k_prints(" ");
569 00:01DA: F4 xx xx pea #^L22+11
570 00:01DD: F4 xx xx pea #<L22+11
571 00:01E0: 22 xx xx xx jsl ~~k_prints
572 ; k_printh(lba >> 16);
573 00:01E4: D4 0C pei <L27+lba_0+2
574 00:01E6: D4 0A pei <L27+lba_0
575 00:01E8: A9 10 00 lda #$10
576 xref ~~~lasr
Thu May 20 2021 21:34 Page 12
577 00:01EB: 22 xx xx xx jsl ~~~lasr
578 00:01EF: 85 01 sta <R0
579 00:01F1: 86 03 stx <R0+2
580 00:01F3: D4 03 pei <R0+2
581 00:01F5: D4 01 pei <R0
582 00:01F7: 22 xx xx xx jsl ~~k_printh
583 ; k_printh(lba & 0xffff);
584 00:01FB: A5 0A lda <L27+lba_0
585 00:01FD: 85 01 sta <R0
586 00:01FF: 64 03 stz <R0+2
587 00:0201: D4 03 pei <R0+2
588 00:0203: D4 01 pei <R0
589 00:0205: 22 xx xx xx jsl ~~k_printh
590 ; asm {
591 ; jsl $001044
592 ; };
593 asmstart
594 00:0209: 22 44 10 00 jsl $001044
595 asmend
596 ;
597 ; if ((*BIOS_STATUS & 0x80) != 0) {
598 00:020D: E2 20 sep #$20
599 longa off
600 00:020F: AF 20 03 00 lda >800 ; volatile
601 00:0213: 29 80 and #<$80
602 00:0215: C2 20 rep #$20
603 longa on
604 00:0217: D0 03 bne L29
605 00:0219: 82 36 00 brl L10018
606 L29:
607 ; k_prints(" Error: ");
608 00:021C: F4 xx xx pea #^L22+13
609 00:021F: F4 xx xx pea #<L22+13
610 00:0222: 22 xx xx xx jsl ~~k_prints
611 ; k_printh(*BIOS_STATUS);
612 00:0226: E2 20 sep #$20
613 longa off
614 00:0228: AF 20 03 00 lda >800 ; volatile
615 00:022C: C2 20 rep #$20
616 longa on
617 00:022E: 29 FF 00 and #$ff
618 00:0231: 48 pha
619 00:0232: 22 xx xx xx jsl ~~k_printh
620 ; k_putc('\r');
621 00:0236: F4 0D 00 pea #<$d
622 00:0239: 22 xx xx xx jsl ~~k_putc
623 ; return RES_ERROR;
624 00:023D: A9 01 00 lda #$1
625 L30:
626 00:0240: A8 tay
627 00:0241: A5 06 lda <L27+2
628 00:0243: 85 10 sta <L27+2+10
629 00:0245: A5 05 lda <L27+1
630 00:0247: 85 0F sta <L27+1+10
631 00:0249: 2B pld
632 00:024A: 3B tsc
633 00:024B: 18 clc
634 00:024C: 69 0E 00 adc #L27+10
Thu May 20 2021 21:34 Page 13
635 00:024F: 1B tcs
636 00:0250: 98 tya
637 00:0251: 6B rtl
638 ; } else {
639 L10018:
640 ; k_prints(" OK\r");
641 00:0252: F4 xx xx pea #^L22+22
642 00:0255: F4 xx xx pea #<L22+22
643 00:0258: 22 xx xx xx jsl ~~k_prints
644 ; return RES_OK;
645 00:025C: A9 00 00 lda #$0
646 00:025F: 82 DE FF brl L30
647 ; }
648 ;}
649 00000004 L27 equ 4
650 00000005 L28 equ 5
651 ends
652 efunc
653 data
654 L22:
655 00:0041: 67 65 74 62 db $67,$65,$74,$62,$6C,$6F,$63,$6B,$3A,$20,
$00,$20,$00,$20,$45
00:0045: 6C 6F 63 6B
00:0049: 3A 20 00 20
00:004D: 00 20 45
656 00:0050: 72 72 6F 72 db $72,$72,$6F,$72,$3A,$20,$00,$20,$4F,$4B,
$0D,$00
00:0054: 3A 20 00 20
00:0058: 4F 4B 0D 00
657 00:005C: ends
658 ;
659 ;/**
660 ; * Call the C256 PUTBLOCK kernel routine
661 ; */
662 ;// int bios_putblock(char dev, long lba, char * b
uffer) {
663 ;// *BIOS_DEV = dev;
664 ;// *BIOS_LBA = lba;
665 ;// *BIOS_BUFFER = (long)buffer;
666 ;// asm {
667 ;// jsl $001024
668 ;// };
669 ;
670 ;// if (*BIOS_STATUS != 0) {
671 ;// return RES_ERROR;
672 ;// } else {
673 ;// return RES_OK;
674 ;// }
675 ;// }
676 ;
677 xref ~~k_putc
678 xref ~~k_printh
679 xref ~~k_prints
680 end
Lines assembled: 680
Errors: 0
Thu May 20 2021 21:34 Page 14