Subversion Repositories pentevo

Rev

Rev 312 | Details | Compare with Previous | Last modification | View Log | RSS feed

Rev Author Line No. Line
277 ddp 1
;
2
;--------------------------------------
3
;
4
MSG_TSD_OUT:
5
        .DB     $0D,$0A,"out ",0,0
6
MSG_TSD_IN:
7
        .DB     ", in ",0
8
 
9
MSG_TSD_CMD:
10
        .DB     $0D,$0A,$3B,"CMD",0,0
11
 
12
MSG_TSD_ACMD41:
13
        .DB     $0D,$0A,$3B,"ACMD41",0
14
 
15
MSG_TSD_CSUP:
16
        .DB     $0D,$0A,"CS up",0
17
MSG_TSD_CSDOWN:
18
        .DB     $0D,$0A,"CS down",0
19
 
20
MSG_TSD_MMC:
21
        .DB     "MMC",0
22
MSG_TSD_SDV1:
23
        .DB     "SD v1",0
24
MSG_TSD_SDSC:
25
        .DB     "SD v2+ Standard Capacity",0,0
26
MSG_TSD_SDHC:
27
        .DB     "SD v2+ High Capacity",0,0
28
 
29
MSG_TSD_OCR:
30
        .DB     "OCR: ",0
31
MSG_TSD_CSD:
32
        .DB     "CSD: ",0
33
MSG_TSD_CID0:
34
        .DB     "CID: ",0
35
MSG_TSD_CID1:
36
        .DB     "Manufacturer ID    ",0
37
MSG_TSD_CID2:
38
        .DB     "OEM/Application ID ",0
39
MSG_TSD_CID3:
40
        .DB     "Product name       ",0
41
MSG_TSD_CID4:
42
        .DB     "Product revision   ",0
43
MSG_TSD_CID5:
44
        .DB     "Product serial #   ",0
45
MSG_TSD_CID6:
46
        .DB     "Manufacturing date ",0
47
MSG_TSD_CID6B:
48
        .DB     ".20",0
49
MSG_TSD_CID6C:
50
        .DB     ".19",0
51
MSG_TSD_CRC:
52
        .DB     "CRC=",0,0
53
MSG_TSD_READSECTOR:
54
        .DB     $0D,$0A,$3B,"Read sector ",0
55
MSG_TSD_SKIP:
56
        .DB     $0D,$0A,$3B,"512 operations is skiped",0
57
 
58
WIND_TSD1:
59
        .DB     10,10,32,4,$9F,$01
60
WIND_TSD2:
61
        .DB     0,2,53,22,$DF,$00
62
;
63
;--------------------------------------
64
;
65
.EQU    TSD_BLS0        =4
66
.EQU    TSD_BLS1        =5
551 ddp 67
.EQU    TSD_ARG_ACMD41  =18
68
.EQU    TSD_CARDTYPE    =19
69
.EQU    TSD_Y           =20
277 ddp 70
;
71
;--------------------------------------
72
;
551 ddp 73
TESTSD: GETMEM  21
277 ddp 74
;
75
T_SD00: CBR     FLAGS1,0B00000011
76
        SBR     FLAGS1,0B00000100
77
 
78
        CALL    SCR_FADE
79
        LDI     XL,0
80
        LDI     XH,1
81
        CALL    SCR_SET_CURSOR
82
        LDI     DATA,$20
83
        LDI     TEMP,$7F
84
        LDI     COUNT,53
85
        CALL    SCR_FILL_CHAR_ATTR
86
 
87
        LDIZ    WIND_TSD1*2
88
        CALL    WINDOW
89
        LDIZ    MLMSG_TSD_MENU*2
90
        CALL    SCR_PRINTMLSTR
91
 
92
T_SD02: STH     TSD_Y,NULL
93
T_SD04: RCALL   T_SD_PUTCURSOR
94
T_SD01: RCALL   T_SD_SENSORS
95
        CALL    INKEY
96
        BREQ    T_SD01
97
        CPI     DATA,KEY_UP
98
        BREQ    T_SD02
99
        CPI     DATA,KEY_DOWN
100
        BREQ    T_SD03
101
        CPI     DATA,KEY_ENTER
102
        BREQ    T_SD0E
103
        SBRC    TEMP,PS2K_BIT_EXTKEY
104
        RJMP    T_SD01
105
        CPI     DATA,KEY_ESC
106
        BRNE    T_SD01
107
        CBR     FLAGS1,0B00001000
551 ddp 108
        FREEMEM 21
277 ddp 109
        RET
110
;
111
T_SD03: STH     TSD_Y,ONE
112
        RJMP    T_SD04
113
;
114
T_SD0E: LDH     DATA,TSD_Y
115
        TST     DATA
116
        BREQ    T_SD10
117
        LDI     DATA,0B00001000
118
        EOR     FLAGS1,DATA
119
        RJMP    T_SD04
120
; - - - - - - - - - - - - - - - - - - -
121
T_SD10:
122
        CBR     FLAGS1,0B00000101
123
        SBR     FLAGS1,0B00000010
124
        RCALL   T_SD_CRLF_DC
125
        RCALL   T_SD_CRLF_DC
290 ddp 126
        LDIZ    MSG_TITLE1*2
127
        CALL    PRINTSTRZ
277 ddp 128
        CALL    PRINT_SHORT_VERS
129
        RCALL   T_SD_CRLF_DC
130
        SBR     FLAGS1,0B00000110
131
        RCALL   T_SD_SENSORS
132
 
133
        LDIZ    WIND_TSD2*2
134
        CALL    WINDOW
135
        LDI     XL,1
136
        LDI     XH,3
137
        STH     TSD_Y,XH
138
        CALL    SCR_SET_CURSOR
139
        RCALL   T_SD_CRLF_DC
140
        LDIZ    MLMSG_TSD_INIT*2
141
        CALL    PRINTMLSTR
142
 
143
        STS     SD_CARDTYPE,NULL
144
        STH     TSD_CARDTYPE,NULL
145
 
146
        RCALL   T_SD_CSUP
147
        LDI     TEMP,SD_CS1
148
        SER     DATA
149
        CALL    FPGA_REG
150
        LDI     TEMP,32
151
        CALL    SD_RD_DUMMY
152
 
153
        RCALL   T_SD_CSDOWN
154
        LDI     TEMP,SD_CS0
155
        SER     DATA
156
        CALL    FPGA_REG
157
        SER     COUNT
158
T_SD11:
159
        LDI     DATA,0
160
        RCALL   T_SD_CMDXX
161
        LDIZ    CMD00*2     ;CMD0 (go_idle_state)
162
        CALL    SD_WR_PGM_6
163
        DEC     COUNT
164
        BRNE    T_SD12
165
 
166
        RCALL   T_SD_SCR_CRLF_DC
167
        LDIZ    MLMSG_TSD_NOCARD*2
168
        CALL    PRINTMLSTR
169
        RJMP    T_SD90
170
T_SD12:
171
        CPI     DATA,$01
172
        BRNE    T_SD11
173
 
174
        LDI     DATA,8
175
        RCALL   T_SD_CMDXX
176
        LDIZ    CMD08*2     ;CMD8 (send_if_cond)
177
        CALL    SD_WR_PGM_6
178
        LDI     WL,$00
179
        SBRS    DATA,2
180
        LDI     WL,$40
181
        STH     TSD_ARG_ACMD41,WL
182
        LDI     TEMP,4
183
        CALL    SD_RD_DUMMY
184
 
185
T_SD13: RCALL   T_SD_ACMD41
186
        LDI     DATA,$40|55 ;CMD55
187
        CALL    SD_WR_CMD
188
        LDI     TEMP,2
189
        CALL    SD_RD_DUMMY
190
        LDI     DATA,$40|41 ;ACMD41 (sd_send_op_cond)
191
        CALL    SD_EXCHANGE
192
        LDH     DATA,TSD_ARG_ACMD41
193
        CALL    SD_EXCHANGE
194
        CALL    SD_WR_CMX4
195
        TST     DATA
196
        BREQ    T_SD15
197
        SBRS    DATA,2
198
        RJMP    T_SD13
199
 
200
T_SD14: LDI     DATA,1
201
        RCALL   T_SD_CMDXX
202
        LDI     DATA,$40|1  ;CMD1 (send_op_cond)
203
        CALL    SD_WR_CMD
204
        TST     DATA
205
        BRNE    T_SD14
206
        RCALL   T_SD_CRC_OFF
207
        RCALL   T_SD_SETBLKLEN
208
        LDI     TEMP,0B00010000
209
        LDIZ    MSG_TSD_MMC*2
210
        RJMP    T_SD18
211
 
212
T_SD15: RCALL   T_SD_CRC_OFF
213
        RCALL   T_SD_SETBLKLEN
214
 
215
        LDI     TEMP,0B00000001
216
        LDIZ    MSG_TSD_SDV1*2
217
        LDH     DATA,TSD_ARG_ACMD41
218
        TST     DATA
219
        BREQ    T_SD18
220
        LDI     DATA,58
221
        RCALL   T_SD_CMDXX
222
        LDI     DATA,$40|58 ;CMD58 (read_ocr)
223
        CALL    SD_WR_CMD
224
        MOVW    XL,YL
225
        LDI     COUNT,6
226
T_SD16: CALL    SD_RECEIVE
227
        ST      X+,DATA
228
        DEC     COUNT
229
        BRNE    T_SD16
230
 
231
        LDI     TEMP,0B00000010
232
        LDIZ    MSG_TSD_SDSC*2
233
        LDH     DATA,0
234
        SBRS    DATA,6
235
        RJMP    T_SD18
236
        LDI     TEMP,0B00000110
237
        LDIZ    MSG_TSD_SDHC*2
238
 
239
T_SD18: STS     SD_CARDTYPE,TEMP
240
        STH     TSD_CARDTYPE,TEMP
241
        PUSHZ
242
        RCALL   T_SD_SCR_CRLF_DC
243
        LDIZ    MLMSG_TSD_FOUNDCARD*2
244
        CALL    PRINTMLSTR
245
        POPZ
246
        CALL    PRINTSTRZ
247
 
248
        LDH     TEMP,TSD_CARDTYPE
249
        SBRS    TEMP,1
250
        RJMP    T_SD20
251
        RCALL   T_SD_SCR_CRLF_DC
252
        LDIZ    MSG_TSD_OCR*2
253
        CALL    PRINTSTRZ
254
        MOVW    XL,YL
255
        LDI     COUNT,4
256
T_SD19: LD      DATA,X+
257
        CALL    HEXBYTE_FOR_DUMP
258
        DEC     COUNT
259
        BRNE    T_SD19
260
;
261
T_SD20: LDI     TEMP,SD_CS0
262
        SER     DATA
263
        CALL    FPGA_REG
264
        LDI     DATA,9
265
        RCALL   T_SD_CMDXX
266
        LDI     DATA,$40|9  ;CMD9 (send_csd)
267
        CALL    SD_WR_CMD
268
        TST     DATA
269
        BRNE    T_SD30
270
        CALL    SD_WAIT_NOTFF
271
        CPI     DATA,$FF
272
        BREQ    T_SD30
273
        MOVW    XL,YL
551 ddp 274
        LDI     COUNT,18
277 ddp 275
T_SD21: CALL    SD_RECEIVE
276
        ST      X+,DATA
277
        DEC     COUNT
278
        BRNE    T_SD21
279
 
280
        RCALL   T_SD_SCR_CRLF_DC
281
        LDIZ    MSG_TSD_CSD*2
282
        CALL    PRINTSTRZ
283
        MOVW    XL,YL
284
        LDI     COUNT,15
285
T_SD22: LD      DATA,X+
286
        CALL    HEXBYTE_FOR_DUMP
287
        DEC     COUNT
288
        BRNE    T_SD22
289
 
290
T_SD30: LDI     TEMP,SD_CS0
291
        SER     DATA
292
        CALL    FPGA_REG
293
        LDI     DATA,10
294
        RCALL   T_SD_CMDXX
295
        LDI     DATA,$40|10 ;CMD10 (send_cid)
296
        CALL    SD_WR_CMD
297
        TST     DATA
298
        BRNE    T_SD39
299
        CALL    SD_WAIT_NOTFF
300
        CPI     DATA,$FF
301
        BRNE    T_SD31
302
T_SD39: RJMP    T_SD90
303
T_SD31: MOVW    XL,YL
551 ddp 304
        LDI     COUNT,18
277 ddp 305
T_SD32: CALL    SD_RECEIVE
306
        ST      X+,DATA
307
        DEC     COUNT
308
        BRNE    T_SD32
309
 
310
        RCALL   T_SD_SCR_CRLF_DC
311
        LDIZ    MSG_TSD_CID0*2
312
        CALL    PRINTSTRZ
313
        MOVW    XL,YL
314
        LDI     COUNT,15
315
T_SD33: LD      DATA,X+
316
        CALL    HEXBYTE_FOR_DUMP
317
        DEC     COUNT
318
        BRNE    T_SD33
319
 
320
        RCALL   T_SD_SCR_CRLF_DC
321
        LDIZ    MSG_TSD_CID1*2
322
        CALL    PRINTSTRZ
323
        LDH     DATA,0
324
        CALL    HEXBYTE
325
        RCALL   T_SD_SCR_CRLF_DC
326
        LDIZ    MSG_TSD_CID2*2
327
        CALL    PRINTSTRZ
328
        LDH     BITS,TSD_CARDTYPE
329
        LDH     DATA,1
330
        SBRS    BITS,4
331
        CALL    PUTCHAR_FOR_DUMP
332
        SBRC    BITS,4
333
        CALL    HEXBYTE
334
        LDH     DATA,2
335
        SBRS    BITS,4
336
        CALL    PUTCHAR_FOR_DUMP
337
        SBRC    BITS,4
338
        CALL    HEXBYTE
339
        RCALL   T_SD_SCR_CRLF_DC
340
        LDIZ    MSG_TSD_CID3*2
341
        CALL    PRINTSTRZ
342
        MOVW    XL,YL
343
        ADIW    XL,3
344
        LDI     COUNT,5
345
        SBRC    BITS,4
346
        LDI     COUNT,6
347
T_SD34: LD      DATA,X+
348
        CALL    PUTCHAR
349
        DEC     COUNT
350
        BRNE    T_SD34
351
        RCALL   T_SD_SCR_CRLF_DC
352
        LDIZ    MSG_TSD_CID4*2
353
        CALL    PRINTSTRZ
354
        LDH     DATA,8
355
        SBRC    BITS,4
356
        LDH     DATA,9
357
        SWAP    DATA
358
        CALL    HEXHALF
359
        LDI     DATA,$2E ;"."
360
        CALL    PUTCHAR
361
        LDH     DATA,8
362
        SBRC    BITS,4
363
        LDH     DATA,9
364
        CALL    HEXHALF
365
        RCALL   T_SD_SCR_CRLF_DC
366
        LDIZ    MSG_TSD_CID5*2
367
        CALL    PRINTSTRZ
368
        MOVW    XL,YL
369
        ADIW    XL,9
370
        SBRC    BITS,4
371
        ADIW    XL,1
372
        LDI     COUNT,4
373
T_SD35: LD      DATA,X+
374
        CALL    HEXBYTE
375
        DEC     COUNT
376
        BRNE    T_SD35
377
        RCALL   T_SD_SCR_CRLF_DC
378
        LDIZ    MSG_TSD_CID6*2
379
        CALL    PRINTSTRZ
380
        LDH     DATA,14
381
        SBRC    BITS,4
382
        SWAP    DATA
383
        ANDI    DATA,$0F
384
        CALL    DECBYTE
385
        LDIZ    MSG_TSD_CID6B*2
386
        LDH     DATA,14
387
        SBRC    BITS,4
388
        RJMP    T_SD36
389
        LDH     TEMP,13
390
        ANDI    DATA,$F0
391
        ANDI    TEMP,$0F
392
        OR      DATA,TEMP
393
        SWAP    DATA
394
        PUSH    DATA
395
        CALL    PRINTSTRZ
396
        POP     DATA
312 ddp 397
        CALL    DECBYTE
277 ddp 398
        RJMP    T_SD38
399
T_SD36: ANDI    DATA,$0F
400
        SUBI    DATA,3
401
        BRCC    T_SD37
402
        ADDI    DATA,100
403
        LDIZ    MSG_TSD_CID6C*2
404
T_SD37: PUSH    DATA
405
        CALL    PRINTSTRZ
406
        POP     DATA
407
        CALL    DECBYTE
408
T_SD38:
409
; - - - - - - - - - - - - - - - - - - -
410
        RCALL   T_SD_SCR_CRLF_DC
411
        LDIZ    MLMSG_TSD_DETECT*2
412
        CALL    PRINTMLSTR
413
 
414
        IN      TEMP,SPL
415
        STS     GLB_STACK+0,TEMP
416
        IN      TEMP,SPH
417
        STS     GLB_STACK+1,TEMP
418
        STS     GLB_Y+0,YL
419
        STS     GLB_Y+1,YH
420
        LDIZ    T_SD_ERRORHANDL
421
        STSZ    FAT_ERRHANDLER
422
        LDI     TEMP,SD_CS0
423
        SER     DATA
424
        CALL    FPGA_REG
425
        CALL    WC_FAT
426
 
427
        PUSHX
428
        PUSHW
429
        RCALL   T_SD_SCR_CRLF_DC
430
        LDIZ    MLMSG_TSD_FOUNDFAT*2
431
        CALL    PRINTMLSTR
432
        LDS     TEMP,FAT_CAL_FAT
433
        LDI     DATA,$12
434
        TST     TEMP
435
        BREQ    T_SDF01
436
        LDI     DATA,$16
437
        DEC     TEMP
438
        BREQ    T_SDF01
439
        LDI     DATA,$32
440
T_SDF01:CALL    HEXBYTE
441
        POPW
442
        POPX
443
; - - - - - - - - - - - - - - - - - - -
444
; 䠩  ४ਨ
445
        LDIW    0               ; ⥫ 䠩
446
        CALL    RDDIRSC
447
        RJMP    T_SD_FNDF_2
448
T_SD_FNDF_1:
449
        ADIW    WL,1            ;ய⥫++
450
        ADIW    ZL,$20          ;᫥騩 ⥫
451
        CPI     ZH,HIGH(BUF4FAT+512);
452
                                ;뫥  ᥪ?
453
        BRNE    T_SD_FNDF_2     ; 
454
        CALL    RDDIRSC         ;뢠 ᫥騩
455
        BRNE    T_SD_FNDF_E     ;稫 ᥪ  ४ਨ
456
T_SD_FNDF_2:
457
        LD      TEMP,Z          ; ᨬ
458
        CPI     TEMP,$E5        ;㤠?
459
        BREQ    T_SD_FNDF_1
460
        TST     TEMP            ;⮩ ⥫? ( ᯨ᪠)
461
        BREQ    T_SD_FNDF_E
462
        LDD     DATA,Z+$0B      ;ਡ
463
        ANDI    DATA,0B11011000
464
        BRNE    T_SD_FNDF_1
465
        PUSH    ZL
466
        MOVW    XL,ZL
467
        LDIZ    T_SD_FILENAME*2
468
T_SD_DALSHE:
469
        LPM     DATA,Z+
470
        TST     DATA
471
        BREQ    T_SD_NASHEL
472
        LD      TEMP,X+
473
        CP      DATA,TEMP
474
        BREQ    T_SD_DALSHE
475
        MOV     ZH,XH
476
        POP     ZL
477
        RJMP    T_SD_FNDF_1
478
T_SD_NASHEL:
479
        MOV     ZH,XH
480
        POP     ZL
481
        LDD     WL,Z+$1C
482
        LDD     WH,Z+$1D
483
        LDD     XL,Z+$1E
484
        LDD     XH,Z+$1F
485
        MOV     DATA,WL
486
        OR      DATA,WH
487
        OR      DATA,XL
488
        OR      DATA,XH
489
        BRNE    T_SD_FNDF_9     ;⮩ 䠩
490
T_SD_FNDF_E:
491
        RJMP    T_SD90
492
T_SD_FILENAME:
493
        .DB     "TESTFILEBIN",0
494
T_SD_FNDF_9:
495
        LDI     TMP2,LOW(511)
496
        LDI     TMP3,HIGH(511)
497
        CALL    HLDEPBC
498
        STH     TSD_BLS0,WL
499
        STH     TSD_BLS1,WH
500
        CALL    BCDE200         ;- ᥪ஢
501
        SBIW    WL,1
502
        SBC     XL,NULL
503
        SBC     XH,NULL
504
        LDS     DATA,FAT_BYTSSEC
505
        DEC     DATA
506
        AND     DATA,WL
507
        INC     DATA
508
        STS     FAT_MPHWOST,DATA    ;- ᥪ஢  ᫥ 
509
        LDS     DATA,FAT_BYTSSEC
510
        CALL    BCDE_A
511
        STSW    FAT_KOL_CLS+0
512
        STSX    FAT_KOL_CLS+2
513
        STS     FAT_NUMSECK,NULL
514
        LDD     WL,Z+$1A
515
        LDD     WH,Z+$1B
516
        LDD     XL,Z+$14
517
        LDD     XH,Z+$15        ; ࢮ  䠩
518
        STSW    FAT_TFILCLS+0
519
        STSX    FAT_TFILCLS+2
520
; - - - - - - - - - - - - - - - - - - -
521
        RCALL   T_SD_SCR_CRLF_DC
522
        LDIZ    MLMSG_TSD_READFILE*2
523
        CALL    PRINTMLSTR
524
 
525
        STS     NEWFRAME,NULL
526
        LDI     DATA,0B00000010
527
        MOV     INT6VECT,DATA
528
        LDI     TEMP,INT_CONTROL
529
        CALL    FPGA_REG
530
 
531
        CALL    CRC32_INIT
532
T_SD_RDFILE1:
533
        CALL    NEXTSEC
534
        TST     DATA
535
        BREQ    T_SD_RDFILE2
536
        LDIZ    BUFSECT
537
        LDIX    512
538
        CALL    RAM_CRC32_UPDATE
539
        LDS     DATA,NEWFRAME
540
        TST     DATA
541
        BREQ    T_SD_RDFILE1
542
        STS     NEWFRAME,NULL
543
        LDI     XL,30
544
        LDH     XH,TSD_Y
545
        STH     TSD_Y,XH
546
        CALL    SCR_SET_CURSOR
547
        PUSH    FLAGS1
548
        CBR     FLAGS1,0B00000011
549
        SBR     FLAGS1,0B00000100
550
        LDS     DATA,FAT_KOL_CLS+3
551
        CALL    HEXBYTE
552
        LDS     DATA,FAT_KOL_CLS+2
553
        CALL    HEXBYTE
554
        LDS     DATA,FAT_KOL_CLS+1
555
        CALL    HEXBYTE
556
        LDS     DATA,FAT_KOL_CLS+0
557
        CALL    HEXBYTE
558
        POP     FLAGS1
559
        RJMP    T_SD_RDFILE1
560
 
561
T_SD_RDFILE2:
562
        LDIZ    BUFSECT
563
        LDH     XL,TSD_BLS0
564
        LDH     XH,TSD_BLS1
565
        ANDI    XH,$01
566
        ADIW    XL,1
567
        CALL    RAM_CRC32_UPDATE
568
        CALL    CRC32_RELEASE
569
        CLR     INT6VECT
570
        CLR     DATA
571
        LDI     TEMP,INT_CONTROL
572
        CALL    FPGA_REG
573
        LDI     XL,30
574
        LDH     XH,TSD_Y
575
        STH     TSD_Y,XH
576
        CALL    SCR_SET_CURSOR
577
        LDI     DATA,$20
578
        LDI     COUNT,8
579
        CALL    SCR_FILL_CHAR
580
        RCALL   T_SD_SCR_CRLF_DC
581
        LDIZ    MSG_TSD_CRC*2
582
        CALL    PRINTSTRZ
583
        LDH     DATA,3
584
        CALL    HEXBYTE
585
        LDH     DATA,2
586
        CALL    HEXBYTE
587
        LDH     DATA,1
588
        CALL    HEXBYTE
589
        LDH     DATA,0
590
        CALL    HEXBYTE
591
 
592
        RJMP    T_SD90
593
; - - - - - - - - - - - - - - - - - - -
594
T_SD_ERRORHANDL:
595
        CLI
596
        LDS     TEMP,GLB_STACK+0
597
        OUT     SPL,TEMP
598
        LDS     TEMP,GLB_STACK+1
599
        OUT     SPH,TEMP
600
        LDS     YL,GLB_Y+0
601
        LDS     YH,GLB_Y+1
602
        SEI
603
        PUSH    DATA
604
        RCALL   T_SD_SCR_CRLF_DC
605
        POP     DATA
606
        LDIZ    MLMSG_FL_SDERROR1*2
607
        CPI     DATA,1
608
        BREQ    T_SD_ERRHNDL1
609
        LDIZ    MLMSG_FL_SDERROR2*2
610
        CPI     DATA,2
611
        BREQ    T_SD_ERRHNDL1
612
        LDIZ    MLMSG_FL_SDERROR3*2
613
        CPI     DATA,3
614
        BREQ    T_SD_ERRHNDL1
615
        LDIZ    MLMSG_FL_SDERROR4*2
616
        CPI     DATA,4
617
        BREQ    T_SD_ERRHNDL1
618
        LDIZ    MLMSG_FL_SDERRORX*2
619
T_SD_ERRHNDL1:
620
        CALL    PRINTMLSTR
621
; - - - - - - - - - - - - - - - - - - -
622
T_SD90: RCALL   T_SD_SCR_CRLF_DC
623
        LDIZ    MLMSG_TSD_COMPLETE*2
624
        CALL    PRINTMLSTR
625
        CBR     FLAGS1,0B00000011
626
        SBR     FLAGS1,0B00000100
627
T_SD99: RCALL   T_SD_SENSORS
628
        CALL    INKEY
629
        BREQ    T_SD99
630
        RJMP    T_SD00
631
;
632
;--------------------------------------
633
;
634
T_SD_PUTCURSOR:
635
        CLR     COUNT
636
TSD_PC2:MOV     XH,COUNT
637
        ADDI    XH,11
638
        LDI     XL,11
639
        CALL    SCR_SET_CURSOR
640
        PUSH    COUNT
641
        LDH     DATA,TSD_Y
642
        LDI     TEMP,$9F
643
        CP      COUNT,DATA
644
        BRNE    TSD_PC1
645
        LDI     TEMP,$F0
646
TSD_PC1:LDI     COUNT,30
647
        CALL    SCR_FILL_ATTR
648
        POP     COUNT
649
        INC     COUNT
650
        CPI     COUNT,2
651
        BRNE    TSD_PC2
652
 
653
        LDI     XL,13
654
        LDI     XH,12
655
        CALL    SCR_SET_CURSOR
656
        LDI     DATA,$20 ;" "
657
        SBRC    FLAGS1,3
658
        LDI     DATA,$FB ;""
659
        CALL    SCR_PUTCHAR
660
        RET
661
;
662
;--------------------------------------
663
;
664
T_SD_SETBLKLEN:
665
        LDI     DATA,16
666
        RCALL   T_SD_CMDXX
667
        LDIZ    CMD16*2     ;CMD16 (set_blocklen)
668
        CALL    SD_WR_PGM_6
669
        TST     DATA
670
        BRNE    T_SD_SETBLKLEN
671
        RET
672
;
673
;--------------------------------------
674
;
675
T_SD_CRC_OFF:
676
        LDI     DATA,59
677
        RCALL   T_SD_CMDXX
678
        LDI     DATA,$40|59 ;CMD59 (crc_on_off)
679
        CALL    SD_WR_CMD
680
        TST     DATA
681
        BRNE    T_SD_CRC_OFF
682
        RET
683
;
684
;--------------------------------------
685
;
686
T_SD_CMDXX:
687
        SBRS    FLAGS1,3
688
        RET
689
        PUSH    FLAGS1
690
        CBR     FLAGS1,0B00000101
691
        SBR     FLAGS1,0B00000010
692
        PUSH    DATA
693
        LDIZ    MSG_TSD_CMD*2
694
        CALL    PRINTSTRZ
695
        POP     DATA
696
        CALL    DECBYTE
697
        POP     FLAGS1
698
        RET
699
;
700
;--------------------------------------
701
;
702
T_SD_ACMD41:
703
        SBRS    FLAGS1,3
704
        RET
705
        PUSH    FLAGS1
706
        CBR     FLAGS1,0B00000101
707
        SBR     FLAGS1,0B00000010
708
        LDIZ    MSG_TSD_ACMD41*2
709
        CALL    PRINTSTRZ
710
        POP     FLAGS1
711
        RET
712
;
713
;--------------------------------------
714
;
715
T_SD_CSUP:
716
        SBRS    FLAGS1,3
717
        RET
718
        PUSH    FLAGS1
719
        CBR     FLAGS1,0B00000101
720
        SBR     FLAGS1,0B00000010
721
        LDIZ    MSG_TSD_CSUP*2
722
        CALL    PRINTSTRZ
723
        POP     FLAGS1
724
        RET
725
;
726
;--------------------------------------
727
;
728
T_SD_CSDOWN:
729
        SBRS    FLAGS1,3
730
        RET
731
        PUSH    FLAGS1
732
        CBR     FLAGS1,0B00000101
733
        SBR     FLAGS1,0B00000010
734
        LDIZ    MSG_TSD_CSDOWN*2
735
        CALL    PRINTSTRZ
736
        POP     FLAGS1
737
        RET
738
;
739
;--------------------------------------
740
;
741
T_SD_CRLF_DC:
742
        RCALL   UART_CRLF
743
        SBRS    FLAGS1,3
744
        RET
745
        LDI     DATA,$3B ;";"
746
        RJMP    UART_PUTCHAR
747
;
748
;--------------------------------------
749
;
750
T_SD_SCR_CRLF_DC:
751
        LDI     XL,1
752
        LDH     XH,TSD_Y
753
        INC     XH
754
        STH     TSD_Y,XH
755
        CALL    SCR_SET_CURSOR
756
        RCALL   UART_CRLF
757
        SBRS    FLAGS1,3
758
        RET
759
        LDI     DATA,$3B ;";"
760
        RJMP    UART_PUTCHAR
761
;
762
;--------------------------------------
763
;
764
T_SD_SENSORS:
765
        LDI     XL,0
766
        LDI     XH,1
767
        CALL    SCR_SET_CURSOR
768
        LDI     TEMP,$7F
769
        CALL    SCR_SET_ATTR
770
        LDIZ    MLMSG_SENSORS*2
771
        CALL    PRINTMLSTR
772
        LDI     TEMP,$7A
773
        LDIZ    MLMSG_S_NOCARD*2
774
        SBIC    PINB,5
775
        RJMP    T_SDSENS1
776
        LDI     TEMP,$7C
777
        LDIZ    MLMSG_S_INSERTED*2
778
T_SDSENS1:
779
        CALL    SCR_SET_ATTR
780
        CALL    PRINTMLSTR
781
        LDI     TEMP,$7A
782
        LDIZ    MLMSG_S_READONLY*2
783
        SBIC    PINB,4
784
        RJMP    T_SDSENS2
785
        LDI     TEMP,$7C
786
        LDIZ    MLMSG_S_WRITEEN*2
787
T_SDSENS2:
788
        CALL    SCR_SET_ATTR
789
        CALL    PRINTMLSTR
790
        RET
791
;
792
;--------------------------------------
793
;