2023年3月25日土曜日

FM-7にRTCとSDを接続する試み(SDカード編 その2)

SDカード中のBASICプログラムファイルと機械語ファイルを読み込んで実行することができました

SDカードへの書き込みはまだ実現していませんが、とりあえず、読み込みはできるようになりました。

F-BASICのコマンド(FILES, LOAD, LOADM)でフロッピィディスクと同様にSDカードを扱えるのが理想なのでしょうが、1セクタのサイズが512バイトであることもあり実現するのは私には難しいようです。

とりあえず、SDカードを用いてWindowsPCからFM-7へファイルを移動させるツールとして使用する前提で、常駐ソフトではなくその都度起動してSDカードを読むという形の専用プログラムにしました。

使用法のイメージは下図のようです。


使用イメージ

通常使用しているFT245高速通信カードでは、ディスクイメージを丸ごとコピーするのですが、このSDカード使用の場合は特定のファイルを選択してFM-7に移すことができます。

プログラムの起動画面です


起動画面

メニュー項目は

1.指定したセクタのリード
2.SDカードのデータ取得・表示
3.SDカードの初期化
4.MBR(Master Boot Record)内容の表示
5.BPB(Boot Parameter Block)内容の表示
6.FAT(File Allocation Table)内容の表示
7.DIR(Directory)内容の表示
8.指定ファイルの読み込み
で、前回との違いは、
・セクタへの書き込みを省いた。
・ディレクトリの表示形式を変更したことと、全ページを表示できるようにした。
・ファイルの読み込みを画面表示ではなく、メモリに展開してF-BASICと連携した。
の3つです。

その様子を下に示します。
ファイルのロードは前回のような番号ではなく、ファイル名の入力で選択します。


ディレクトリ表示とファイルのロード


メモリにロードしたBASICのプログラムは、下画面のように普通に表示できて実行もできます。


ロードしたBASICファイルをリスト表示

ここには示しませんでしたが、機械語ファイルも指定したアドレスに読み込まれます。


現在までに実現できた機能をまとめると

1.SDカードとSDHCカードに対応している。

2.普通にWindows上でSDカードに書き込んだファイルが読み込める。

3.F-BASICのプログラムファイルと機械語ファイルが扱える。


制限事項は

1.FM-7で使用することを前提としているので、32KBを超えるような大きなファイルには対応していない。

2.ファイル名には拡張子をつけてはいけない。(拡張子はチェックしていない)

3.ファイル名に小文字は使えない。(大文字に変換されてしまう)

4.F-BASICのプログラムファイルは中間言語に変換されたもののみで、アスキーセーブされたファイルは扱えない。(テキストエリアに直接書き込んでいるため)

5.機械語ファイルはF-BASICのディスク保存形式であること。


制約事項も多々ありますが、とりあえず、Windows上に保存してあったBASICプログラムファイルや機械語ファイルを、SDカードを介してFM-7に持ち込むツールとして使用できるのではと考えています。


さらに実現したいこと

残る課題は、当然、FM-7上でSDカードにプログラムなどを書き込んで、それをWindows上で読み込むという機能を実現することです。これができれば完成といえます。

しかし、これはFATを書き換えるということになりますので、FMS(ファイルマネージメントシステム)が絡んできますし、プログラムサイズも既に3KB近くになっていますので、さらに大きくなるとどこに配置するかも問題になってきます。

以上、6809のアセンブラでSDカードからのファイルの読み込みまで実現できたという報告でした。なお、使用しているFM-7本体のルーチンはINCHA, OUTCHA, CSRONの3つのみです。

作成したプログラムを下に示しておきます。



SDHC9FM
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
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
612
613
614
615
616
617
618
619
620
621
622
623
624
625
626
627
628
629
630
631
632
633
634
635
636
637
638
639
640
641
642
643
644
645
646
647
648
649
650
651
652
653
654
655
656
657
658
659
660
661
662
663
664
665
666
667
668
669
670
671
672
673
674
675
676
677
678
679
680
681
682
683
684
685
686
687
688
689
690
691
692
693
694
695
696
697
698
699
700
701
702
703
704
705
706
707
708
709
710
711
712
713
714
715
716
717
718
719
720
721
722
723
724
725
726
727
728
729
730
731
732
733
734
735
736
737
738
739
740
741
742
743
744
745
746
747
748
749
750
751
752
753
754
755
756
757
758
759
760
761
762
763
764
765
766
767
768
769
770
771
772
773
774
775
776
777
778
779
780
781
782
783
784
785
786
787
788
789
790
791
792
793
794
795
796
797
798
799
800
801
802
803
804
805
806
807
808
809
810
811
812
813
814
815
816
817
818
819
820
821
822
823
824
825
826
827
828
829
830
831
832
833
834
835
836
837
838
839
840
841
842
843
844
845
846
847
848
849
850
851
852
853
854
855
856
857
858
859
860
861
862
863
864
865
866
867
868
869
870
871
872
873
874
875
876
877
878
879
880
881
882
883
884
885
886
887
888
889
890
891
892
893
894
895
896
897
898
899
900
901
902
903
904
905
906
907
908
909
910
911
912
913
914
915
916
917
918
919
920
921
922
923
924
925
926
927
928
929
930
931
932
933
934
935
936
937
938
939
940
941
942
943
944
945
946
947
948
949
950
951
952
953
954
955
956
957
958
959
960
961
962
963
964
965
966
967
968
969
970
971
972
973
974
975
976
977
978
979
980
981
982
983
984
985
986
987
988
989
990
991
992
993
994
995
996
997
998
999
1000
1001
1002
1003
1004
1005
1006
1007
1008
1009
1010
1011
1012
1013
1014
1015
1016
1017
1018
1019
1020
1021
1022
1023
1024
1025
1026
1027
1028
1029
1030
1031
1032
1033
1034
1035
1036
1037
1038
1039
1040
1041
1042
1043
1044
1045
1046
1047
1048
1049
1050
1051
1052
1053
1054
1055
1056
1057
1058
1059
1060
1061
1062
1063
1064
1065
1066
1067
1068
1069
1070
1071
1072
1073
1074
1075
1076
1077
1078
1079
1080
1081
1082
1083
1084
1085
1086
1087
1088
1089
1090
1091
1092
1093
1094
1095
1096
1097
1098
1099
1100
1101
1102
1103
1104
1105
1106
1107
1108
1109
1110
1111
1112
1113
1114
1115
1116
1117
1118
1119
1120
1121
1122
1123
1124
1125
1126
1127
1128
1129
1130
1131
1132
1133
1134
1135
1136
1137
1138
1139
1140
1141
1142
1143
1144
1145
1146
1147
1148
1149
1150
1151
1152
1153
1154
1155
1156
1157
1158
1159
1160
1161
1162
1163
1164
1165
1166
1167
1168
1169
1170
1171
1172
1173
1174
1175
1176
1177
1178
1179
1180
1181
1182
1183
1184
1185
1186
1187
1188
1189
1190
1191
1192
1193
1194
1195
1196
1197
1198
1199
1200
1201
1202
1203
1204
1205
1206
1207
1208
1209
1210
1211
1212
1213
1214
1215
1216
1217
1218
1219
1220
1221
1222
1223
1224
1225
1226
1227
1228
1229
1230
1231
1232
1233
1234
1235
1236
1237
1238
1239
1240
1241
1242
1243
1244
1245
1246
1247
1248
1249
1250
1251
1252
1253
1254
1255
1256
1257
1258
1259
1260
1261
1262
1263
1264
1265
1266
1267
1268
1269
1270
1271
1272
1273
1274
1275
1276
1277
1278
1279
1280
1281
1282
1283
1284
1285
1286
1287
1288
1289
1290
1291
1292
1293
1294
1295
1296
1297
1298
1299
1300
1301
1302
1303
1304
1305
1306
1307
1308
1309
1310
1311
1312
1313
1314
1315
1316
1317
1318
1319
1320
1321
1322
1323
1324
1325
1326
1327
1328
1329
1330
1331
1332
1333
1334
1335
1336
1337
1338
1339
1340
1341
1342
1343
1344
1345
1346
1347
1348
1349
1350
1351
1352
1353
1354
1355
1356
1357
1358
1359
1360
1361
1362
1363
1364
1365
1366
1367
1368
1369
1370
1371
1372
1373
1374
1375
1376
1377
1378
1379
1380
1381
1382
1383
1384
1385
1386
1387
1388
1389
1390
1391
1392
1393
1394
1395
1396
1397
1398
1399
1400
1401
1402
1403
1404
1405
1406
1407
1408
1409
1410
1411
1412
1413
1414
1415
1416
1417
1418
1419
1420
1421
1422
1423
1424
1425
1426
1427
1428
1429
1430
1431
1432
1433
1434
1435
1436
1437
1438
1439
1440
1441
1442
1443
1444
1445
1446
1447
1448
1449
1450
1451
1452
1453
1454
1455
1456
1457
1458
1459
1460
1461
1462
1463
1464
1465
1466
1467
1468
1469
1470
1471
1472
1473
1474
1475
1476
1477
1478
1479
1480
1481
1482
1483
1484
1485
1486
1487
1488
1489
1490
1491
1492
1493
1494
1495
1496
1497
1498
1499
1500
1501
1502
1503
1504
1505
1506
1507
1508
1509
1510
1511
1512
1513
1514
1515
1516
1517
1518
1519
1520
1521
1522
1523
1524
1525
0001        *
0002        *  SDHC9.TXT
0003        *
0004        *  SD Read/Write for FM-7
0005        *
0006        *    use RTC & SD Card
0007        *
0008        *    6821(PIA) Port A <--> RTC (I2C Mode)
0009        *
0010        *        SBC      RTC                    Ext IO
0011        *    CA2  2  -->       -->  HV4 LV4 -->  IO1
0012        *    PA0  3  -->  SCL  -->  HV1 LV1 -->  IO4
0013        *    PA1  4  <-- --="" 0014="" 10="" hv2="" io3="" lv2="" pa7="">  SDA  -->  HV3 LV3 -->  IO2
0015        *    GND     --        --           --   GND
0016        *            --        --           --   3V3
0017        *
0018        *
0019        *    6821(PIA) Port B <--> SD (SPI Mode)
0020        *
0021        *        SBC                   SD
0022        *    CB2 12  -->  HV4 LV4 -->  SCK
0023        *    PB0 13  -->  HV1 LV1 -->  CS
0024        *    PB1 14  <-- --="" 0025="" 20="" hv2="" lv2="" miso="" pb7="">  HV3 LV3 -->  MOSI
0026        *    GND 31  --           --   GND
0027        *    VCC 33  --           --   VCC
0028        *
0029        *    cf. all data line use level converter
0030        *
0031        *    PB  output mode
0032        *    CB2 1bit output
0033        *
0034        *    READ/WRITE BUFFER  $6D00 - 6EFF
0035        *
0036        *    Load data to F-BASIC '2023.03.23
0037        *    Add command          '2023.03.14
0038        *    Change use Port B    '2023.03.07
0039        *    Original version     '2022.06.11
0040        *         Copyright by Y.Yamamoto
0041        *
0042  6000      STTADR  EQU     $6000      
0043       
0044  FBB8      INCHA   EQU     $FBB8      
0045  FBBB      OUTCHA  EQU     $FBBB      
0046  FBF7      CSRON   EQU     $FBF7      
0047       
0048  6D00      RWBUF   EQU     STTADR+$0D00   
0049       
0050  FD9E      PBDAT   EQU     $FD9E      
0051  FD9F      PBCTL   EQU     PBDAT+1    
0052  0033      BASADRP EQU     $33         pointer of adrs for F-BASIC
0053  2000      TXTADR  EQU     $2000       for TEXT
0054       
0055  6000              ORG     STTADR     
0056       
0057  6000  20  58  START   BRA     MAIN       
0058  6002  01    VN      FCB     1          
0059  6003  00    SCTN0   FCB     0           top adrs of sct
0060  6004  00    SCTN1   FCB     0          
0061  6005  00    SCTN2   FCB     0          
0062  6006  00    SCTN3   FCB     0          
0063  6007  00    RESDAT  FCB     0           response data
0064  6008  00    SDHC    FCB     0           sd:0,sdhc:1
0065       
0066  6009  0000    SCTBPB  FDB     00          sct no of BPB(4bytes)
0067  600B  0000            FDB     00         
0068  600D  0000    SCTFAT  FDB     00          sct no of FAT#1(4bytes)
0069  600F  0000            FDB     00         
0070  6011  0000    SCTDIR  FDB     00          sct no of DIR(4bytes)
0071  6013  0000            FDB     00         
0072  6015  0000    SCTDSV  FDB     00          save sct no of DIR
0073  6017  0000            FDB     00         
0074  6019  0000    SCTCLT  FDB     00          sct no of top CLUSTER(4bytes)
0075  601B  0000            FDB     00          if SD:#2, SDHC:#3
0076  601D  00    SCTPCL  FCB     0           sct per cluster
0077  601E  FF    DIRENT  RMB     32         
0078  603E  FF    WMDY    RMB     3          
0079  6041  FF    WFSIZ   RMB     4          
0080  6045  FF    FILSIZ  RMB     2          
0081  6047  0000    CLSTH   FDB     00         
0082  6049  0000    CLSTL   FDB     00         
0083  604B  00    CNT     FCB     0          
0084  604C  00    CNTSV   FCB     0          
0085  604D  00    MCFLG   FCB     0           1:machine code, 0:else
0086  604E  00    DPGFLG  FCB     0           1:1st page of DIR, 0:else
0087  604F  FF    FNAME   RMB     9          
0088  6058  0000    WK1     FDB     00         
0089       
0090  605A      MAIN    EQU     *          
0091        *=====reset pia=====
0092        *portB:output
0093  605A  86  30          LDA     #$30       
0094  605C  B7  FD9F          STA     PBCTL       select ddra, cb2:0
0095  605F  86  FD          LDA     #$FD        pb0,7:out,pb1:in
0096  6061  B7  FD9E          STA     PBDAT       set output mode
0097  6064  86  34          LDA     #$34       
0098  6066  B7  FD9F          STA     PBCTL       select peripheral,cb2:0
0099        
0100        *for pia exist check
0101  6069  86  55          LDA     #$55        test data
0102  606B  B7  FD9E          STA     PBDAT      
0103  606E  B6  FD9E          LDA     PBDAT      
0104  6071  84  FD          ANDA    #$FD        pb1=0
0105  6073  81  55          CMPA    #$55       
0106  6075  27  07          BEQ     INIT       
0107  6077  8E  6A30          LDX     #MERR      
0108  607A  17  075F          LBSR    PSTRNG     
0109  607D  39            RTS           return to BASIC
0110       
0111  607E      INIT    EQU     *          
0112  607E  8D  59          BSR     SDINIT     
0113       
0114        ****************************************
0115        * MAIN MENU
0116        ****************************************
0117  6080      MENU    EQU     *          
0118  6080  8E  6976          LDX     #MSMENU1   
0119  6083  17  0756          LBSR    PSTRNG     
0120  6086  8E  69B6          LDX     #MSMENU2   
0121  6089  17  0750          LBSR    PSTRNG     
0122  608C  17  9B68          LBSR    CSRON       cursor on
0123       
0124  608F  BD  690B          JSR     INOUTC     
0125  6092  80  30          SUBA    #$30       
0126  6094  26  04          BNE     MEN1        0?
0127  6096  17  068E          LBSR    CRLF       
0128  6099  39            RTS           return to BASIC
0129       
0130  609A  4A    MEN1    DECA          1?
0131  609B  26  05          BNE     MEN2       
0132  609D  17  0279          LBSR    SDRD       
0133  60A0  20  DE          BRA     MENU       
0134  60A2  4A    MEN2    DECA          2?
0135  60A3  26  05          BNE     MEN3       
0136  60A5  17  01E3          LBSR    GETSD      
0137  60A8  20  D6          BRA     MENU       
0138  60AA  4A    MEN3    DECA          3?
0139  60AB  26  04          BNE     MEN4       
0140  60AD  8D  2A          BSR     SDINIT     
0141  60AF  20  CF          BRA     MENU       
0142  60B1  4A    MEN4    DECA          4?
0143  60B2  26  05          BNE     MEN5       
0144  60B4  17  0275          LBSR    DSPMBR     
0145  60B7  20  C7          BRA     MENU       
0146  60B9  4A    MEN5    DECA          5?
0147  60BA  26  05          BNE     MEN6       
0148  60BC  17  02C7          LBSR    DSPBPB     
0149  60BF  20  BF          BRA     MENU       
0150  60C1  4A    MEN6    DECA          6?
0151  60C2  26  05          BNE     MEN7       
0152  60C4  17  02D1          LBSR    DSPFAT     
0153  60C7  20  B7          BRA     MENU       
0154  60C9  4A    MEN7    DECA          7?
0155  60CA  26  05          BNE     MEN8       
0156  60CC  17  02DB          LBSR    DSPDIR     
0157  60CF  20  AF          BRA     MENU       
0158  60D1  4A    MEN8    DECA          8?
0159  60D2  26  AC          BNE     MENU       
0160  60D4  17  0398          LBSR    LDFILE     
0161  60D7  20  A7          BRA     MENU       
0162        *
0163        ****************************************
0164        * SD Initialize routine
0165        ****************************************
0166  60D9      SDINIT  EQU     *          
0167        *---------- start ----------
0168  60D9  8E  6A14          LDX     #MSINIT    
0169  60DC  17  06FD          LBSR    PSTRNG     
0170        * cs:1,di:1,sck>74ms
0171  60DF  86  FF          LDA     #$FF        mosi:b7=H,miso:b1=H(for PIA),cs:b0=H
0172  60E1  B7  FD9E          STA     PBDAT      
0173  60E4  C6  50          LDB     #80         80times
0174  60E6  17  0603  ISTT    LBSR    SETCKL     
0175  60E9  17  0609          LBSR    SETCKH     
0176  60EC  5A            DECB         
0177  60ED  26  F7          BNE     ISTT       
0178        *
0179        *---------- cmd 0 ----------
0180  60EF      SCMD0   EQU     *          
0181        * LDX #MCMD0
0182        * LBSR PSTRNG
0183        
0184  60EF  17  05FA          LBSR    SETCKL     
0185  60F2  C6  06          LDB     #6         
0186  60F4  8E  6912          LDX     #CMD0      
0187  60F7  A6  80  SC01    LDA     ,X+        
0188  60F9  17  057B          LBSR    SNDDAT     
0189  60FC  5A            DECB         
0190  60FD  26  F8          BNE     SC01       
0191        *get response
0192  60FF  5F            CLRB         
0193  6100      GR00         
0194  6100  5A            DECB         
0195  6101  1027  020D          LBEQ    SDERR      
0196  6105  17  058B          LBSR    GETDAT     
0197  6108  B6  6007          LDA     RESDAT     
0198        * LBSR DSPBIN disp response
0199  610B  81  01          CMPA    #$01       
0200  610D  26  F1          BNE     GR00       
0201        * LBSR CRLF
0202        *
0203        *---------- cmd 8 ----------
0204  610F      SCMD8   EQU     *          
0205        * LDX #MCMD8
0206        * LBSR PSTRNG
0207        
0208  610F  17  05DA          LBSR    SETCKL     
0209  6112  86  FF          LDA     #$FF        dummy cmd
0210  6114  17  0560          LBSR    SNDDAT     
0211  6117  C6  06          LDB     #6         
0212  6119  8E  692A          LDX     #CMD8      
0213  611C  A6  80  SC80    LDA     ,X+        
0214  611E  17  0556          LBSR    SNDDAT     
0215  6121  5A            DECB         
0216  6122  26  F8          BNE     SC80       
0217        *get response
0218  6124      GR80         
0219  6124  17  056C          LBSR    GETDAT     
0220  6127  B6  6007          LDA     RESDAT     
0221        
0222  612A  17  0566          LBSR    GETDAT     
0223  612D  B6  6007          LDA     RESDAT     
0224        * LBSR DSPBIN disp response
0225  6130  81  01          CMPA    #$01       
0226  6132  26  F0          BNE     GR80       
0227  6134  C6  04          LDB     #4         
0228  6136  17  055A  GR81    LBSR    GETDAT     
0229  6139  B6  6007          LDA     RESDAT     
0230        * LBSR DSPBIN disp response
0231  613C  5A            DECB         
0232  613D  26  F7          BNE     GR81       
0233        * LBSR CRLF
0234        *
0235        *---------- cmd 58 ----------
0236  613F      SCMD58  EQU     *          
0237        * LDX #MCMD58
0238        * LBSR PSTRNG
0239        
0240  613F  17  05AA          LBSR    SETCKL     
0241  6142  86  FF          LDA     #$FF        dummy cmd
0242  6144  17  0530          LBSR    SNDDAT     
0243  6147  C6  06          LDB     #6         
0244  6149  8E  6930          LDX     #CMD58     
0245  614C  A6  80  SC581   LDA     ,X+        
0246  614E  17  0526          LBSR    SNDDAT     
0247  6151  5A            DECB         
0248  6152  26  F8          BNE     SC581      
0249        *get response
0250  6154      GR580        
0251  6154  17  053C          LBSR    GETDAT     
0252  6157  B6  6007          LDA     RESDAT     
0253        * LBSR DSPBIN disp response
0254  615A  81  01          CMPA    #$01       
0255  615C  26  F6          BNE     GR580      
0256  615E  C6  04  GR581   LDB     #4         
0257  6160  17  0530  GR582   LBSR    GETDAT     
0258  6163  B6  6007          LDA     RESDAT     
0259        * LBSR DSPBIN disp response
0260  6166  5A            DECB         
0261  6167  26  F7          BNE     GR582      
0262  6169      RPT41   EQU     *          
0263        *---------- cmd 55 ----------
0264  6169      SCMD55  EQU     *          
0265        * LDX #MCMD55
0266        * LBSR PSTRNG
0267        
0268  6169  17  0580          LBSR    SETCKL     
0269  616C  86  FF          LDA     #$FF        dummy cmd
0270  616E  17  0506          LBSR    SNDDAT     
0271  6171  C6  06          LDB     #6         
0272  6173  8E  6936          LDX     #CMD55     
0273  6176  A6  80  SC551   LDA     ,X+        
0274  6178  17  04FC          LBSR    SNDDAT     
0275  617B  5A            DECB         
0276  617C  26  F8          BNE     SC551      
0277        *get response
0278        * CLRB
0279  617E      GR550        
0280        * DECB
0281        * BEQ SDERR
0282  617E  17  0512          LBSR    GETDAT     
0283  6181  B6  6007          LDA     RESDAT     
0284        * LBSR DSPBIN disp response
0285  6184  81  01          CMPA    #$01       
0286  6186  26  F6          BNE     GR550      
0287        
0288        * LBSR CRLF
0289        *---------- acmd 41 ----------
0290  6188      ASCMD41 EQU     *          
0291        * LDX #MCMD41
0292        * LBSR PSTRNG
0293        
0294  6188  17  0561          LBSR    SETCKL     
0295  618B  86  FF          LDA     #$FF        dummy cmd
0296  618D  17  04E7          LBSR    SNDDAT     
0297  6190  C6  06          LDB     #6         
0298  6192  8E  693C          LDX     #ACMD41    
0299  6195  A6  80  ASC411  LDA     ,X+        
0300  6197  17  04DD          LBSR    SNDDAT     
0301  619A  5A            DECB         
0302  619B  26  F8          BNE     ASC411     
0303        *get response
0304  619D      GR410        
0305  619D  17  04F3          LBSR    GETDAT     
0306  61A0  B6  6007          LDA     RESDAT     
0307        * LBSR DSPBIN disp response
0308  61A3  17  04ED          LBSR    GETDAT     
0309  61A6  B6  6007          LDA     RESDAT     
0310        * LBSR DSPBIN disp response
0311  61A9  81  00          CMPA    #$00       
0312  61AB  26  BC          BNE     RPT41      
0313        * LBSR CRLF
0314        
0315        *---------- second cmd 58 ----------
0316  61AD      SCMD258 EQU     *          
0317        * LDX #MCMD58
0318        * LBSR PSTRNG
0319        
0320  61AD  17  053C          LBSR    SETCKL     
0321  61B0  86  FF          LDA     #$FF        dummy cmd
0322  61B2  17  04C2          LBSR    SNDDAT     
0323  61B5  C6  06          LDB     #6         
0324  61B7  8E  6930          LDX     #CMD58     
0325  61BA  A6  80  SC2581  LDA     ,X+        
0326  61BC  17  04B8          LBSR    SNDDAT     
0327  61BF  5A            DECB         
0328  61C0  26  F8          BNE     SC2581     
0329        *get response
0330  61C2      GR2580       
0331  61C2  17  04CE          LBSR    GETDAT     
0332  61C5  B6  6007          LDA     RESDAT     
0333        * LBSR DSPBIN disp response
0334  61C8  81  00          CMPA    #$00       
0335  61CA  26  F6          BNE     GR2580     
0336  61CC  17  04C4          LBSR    GETDAT     
0337  61CF  B6  6007          LDA     RESDAT     
0338        * LBSR DSPBIN disp response
0339  61D2  48            LSLA         
0340  61D3  48            LSLA         
0341  61D4  24  03          BCC     GR2581     
0342  61D6  7C  6008          INC     SDHC        if sdhc then 1
0343  61D9  C6  03  GR2581  LDB     #3         
0344  61DB  17  04B5  GR2582  LBSR    GETDAT     
0345  61DE  B6  6007          LDA     RESDAT     
0346        * LBSR DSPBIN disp response
0347  61E1  5A            DECB         
0348  61E2  26  F7          BNE     GR2582     
0349        
0350  61E4  8E  69FA          LDX     #MSSD0     
0351  61E7  B6  6008          LDA     SDHC       
0352  61EA  27  03          BEQ     SD1        
0353  61EC  8E  6A06          LDX     #MSSD1     
0354  61EF  17  05EA  SD1     LBSR    PSTRNG     
0355        *----------
0356        *set sct no of BPB
0357  61F2  17  0155          LBSR    GETMBR     
0358  61F5  8E  6ECA          LDX     #RWBUF+446+8+4   
0359  61F8  108E  6009          LDY     #SCTBPB    
0360  61FC  C6  04          LDB     #4         
0361  61FE  A6  82  ILOP1   LDA     ,-X        
0362  6200  A7  A0          STA     ,Y+        
0363  6202  5A            DECB         
0364  6203  26  F9          BNE     ILOP1      
0365        
0366        *set sct no of FAT#1
0367  6205  17  0165          LBSR    GETBPB     
0368  6208  8E  6009          LDX     #SCTBPB    
0369  620B  108E  600D          LDY     #SCTFAT    
0370  620F  C6  04          LDB     #4         
0371  6211  A6  80  ILOP2   LDA     ,X+        
0372  6213  A7  A0          STA     ,Y+        
0373  6215  5A            DECB         
0374  6216  26  F9          BNE     ILOP2      
0375        
0376  6218  8E  600D          LDX     #SCTFAT    
0377  621B  108E  6D0E          LDY     #RWBUF+$0E    for SD & SDHC
0378  621F  17  0589          LBSR    ADD42      
0379        
0380        *set sct no of DIR
0381  6222  8E  600D          LDX     #SCTFAT    
0382  6225  108E  6011          LDY     #SCTDIR    
0383  6229  C6  04          LDB     #4         
0384  622B  A6  80  ILOP3   LDA     ,X+        
0385  622D  A7  A0          STA     ,Y+        
0386  622F  5A            DECB         
0387  6230  26  F9          BNE     ILOP3      
0388        
0389  6232  8E  6D16          LDX     #RWBUF+$16    for SD
0390  6235  7D  6008          TST     SDHC       
0391  6238  27  03          BEQ     SKP1       
0392  623A  C6  0E          LDB     #$24-$16   
0393  623C  3A            ABX           for SDHC
0394  623D  1F  12  SKP1    TFR     X,Y        
0395  623F  8E  6011          LDX     #SCTDIR    
0396  6242  17  0566          LBSR    ADD42      
0397  6245  17  0563          LBSR    ADD42       skip for FAT#2
0398        
0399        *save no of directory
0400  6248  8E  6011          LDX     #SCTDIR    
0401  624B  108E  6015          LDY     #SCTDSV    
0402  624F  C6  04          LDB     #4         
0403  6251  A6  80  SCPY1   LDA     ,X+        
0404  6253  A7  A0          STA     ,Y+        
0405  6255  5A            DECB         
0406  6256  26  F9          BNE     SCPY1      
0407       
0408        *set sct per cluster
0409  6258  8E  6D0D          LDX     #RWBUF+$0D   
0410  625B  A6  84          LDA     ,X         
0411  625D  B7  601D          STA     SCTPCL     
0412        
0413        *set sct no of CLUSTER#2
0414  6260  8E  6011          LDX     #SCTDIR    
0415  6263  108E  6019          LDY     #SCTCLT    
0416  6267  C6  04          LDB     #4         
0417  6269  A6  80  ILOP4   LDA     ,X+        
0418  626B  A7  A0          STA     ,Y+        
0419  626D  5A            DECB         
0420  626E  26  F9          BNE     ILOP4      
0421        
0422  6270  108E  605A          LDY     #WK1+2     
0423  6274  86  00          LDA     #$00       
0424  6276  A7  A2          STA     ,-Y        
0425  6278  86  20          LDA     #$20        for SD
0426  627A  7D  6008          TST     SDHC       
0427  627D  27  03          BEQ     SKP2       
0428  627F  B6  601D          LDA     SCTPCL      for SDHC
0429  6282  A7  A2  SKP2    STA     ,-Y        
0430  6284  8E  6019          LDX     #SCTCLT    
0431  6287  17  0521          LBSR    ADD42      
0432        *----------
0433  628A  39            RTS          
0434       
0435        ****************************************
0436        * GET SD DATA ROUTINE
0437        * use CMD9
0438        ****************************************
0439  628B      GETSD   EQU     *          
0440  628B  17  0499          LBSR    CRLF       
0441  628E  17  045B          LBSR    SETCKL     
0442  6291  C6  06          LDB     #6         
0443  6293  8E  6942          LDX     #CMD9      
0444  6296  A6  80  SC91    LDA     ,X+        
0445  6298  17  03DC          LBSR    SNDDAT     
0446  629B  5A            DECB         
0447  629C  26  F8          BNE     SC91       
0448        * LBSR CRLF
0449        *get response
0450  629E      GR90         
0451  629E  17  03F2          LBSR    GETDAT     
0452  62A1  B6  6007          LDA     RESDAT     
0453        * LBSR DSPBIN disp response
0454  62A4  81  00          CMPA    #$00       
0455  62A6  26  F6          BNE     GR90       
0456        
0457        * LBSR CRLF
0458  62A8  17  047C          LBSR    CRLF       
0459  62AB  C6  14          LDB     #16+1+2+1   fe,crcH,crcL,ff
0460  62AD  17  03E3  GR91    LBSR    GETDAT     
0461  62B0  B6  6007          LDA     RESDAT     
0462  62B3  17  0448          LBSR    DSPBIN      disp response
0463  62B6  5A            DECB         
0464  62B7  26  F4          BNE     GR91       
0465  62B9  17  046B          LBSR    CRLF       
0466       
0467        *disp offset of MBR,FAT#1,DIR,CLUSTER#2
0468  62BC  8E  6A56          LDX     #MSOFS     
0469  62BF  17  051A          LBSR    PSTRNG     
0470  62C2  8E  6A66          LDX     #MSBPB     
0471  62C5  17  0514          LBSR    PSTRNG     
0472  62C8  8E  6009          LDX     #SCTBPB    
0473  62CB  C6  04          LDB     #4         
0474  62CD  A6  80  SCLOP1  LDA     ,X+        
0475  62CF  17  042C          LBSR    DSPBIN     
0476  62D2  5A            DECB         
0477  62D3  26  F8          BNE     SCLOP1     
0478       
0479  62D5  8E  6A6F          LDX     #MSFAT     
0480  62D8  17  0501          LBSR    PSTRNG     
0481  62DB  8E  600D          LDX     #SCTFAT    
0482  62DE  C6  04          LDB     #4         
0483  62E0  A6  80  SCLOP2  LDA     ,X+        
0484  62E2  17  0419          LBSR    DSPBIN     
0485  62E5  5A            DECB         
0486  62E6  26  F8          BNE     SCLOP2     
0487       
0488  62E8  8E  6A78          LDX     #MSDIR     
0489  62EB  17  04EE          LBSR    PSTRNG     
0490  62EE  8E  6011          LDX     #SCTDIR    
0491  62F1  C6  04          LDB     #4         
0492  62F3  A6  80  SCLOP3  LDA     ,X+        
0493  62F5  17  0406          LBSR    DSPBIN     
0494  62F8  5A            DECB         
0495  62F9  26  F8          BNE     SCLOP3     
0496       
0497  62FB  8E  6A81          LDX     #MSCL2     
0498  62FE  17  04DB          LBSR    PSTRNG     
0499  6301  8E  6019          LDX     #SCTCLT    
0500  6304  C6  04          LDB     #4         
0501  6306  A6  80  SCLOP4  LDA     ,X+        
0502  6308  17  03F3          LBSR    DSPBIN     
0503  630B  5A            DECB         
0504  630C  26  F8          BNE     SCLOP4     
0505  630E  17  0416          LBSR    CRLF       
0506  6311  39            RTS          
0507       
0508        *
0509  6312      SDERR   EQU     *          
0510  6312  8E  6A30          LDX     #MERR      
0511  6315  17  04C4          LBSR    PSTRNG     
0512  6318      OKEND        
0513  6318  39            RTS           return to BASIC
0514        *
0515        ****************************************
0516        * READ ROUTINE
0517        * use CMD17
0518        * set sctno to $6005,6006
0519        * read data set to $6800-69FF
0520        ****************************************
0521  6319      SDRD    EQU     *          
0522  6319  17  040B          LBSR    CRLF       
0523  631C  17  038E          LBSR    INSCT      
0524  631F  17  02FC          LBSR    RD1SCT      read 1 sct
0525       
0526        *disp data
0527  6322  17  0402          LBSR    CRLF       
0528  6325  17  0331          LBSR    DSPBUF     
0529  6328  17  03FC          LBSR    CRLF       
0530  632B  39            RTS          
0531       
0532        ****************************************
0533        * Read MBR & Disp parameter of BPB
0534        ****************************************
0535  632C      DSPMBR  EQU     *          
0536  632C  17  03F8          LBSR    CRLF       
0537  632F  8D  19          BSR     GETMBR     
0538       
0539        *disp BPB
0540  6331  17  03F3          LBSR    CRLF       
0541  6334  8E  6EBE          LDX     #RWBUF+446   
0542  6337  C6  10  GET1    LDB     #16        
0543  6339  A6  80  GET2    LDA     ,X+        
0544  633B  17  03C0          LBSR    DSPBIN      disp data
0545  633E  5A            DECB         
0546  633F  26  F8          BNE     GET2       
0547  6341  17  03E3          LBSR    CRLF       
0548  6344  8C  6EFE          CMPX    #RWBUF+510    446+16*4
0549  6347  25  EE          BLO     GET1       
0550  6349  39            RTS          
0551       
0552        *----------------------------------------
0553        *read MBR
0554  634A      GETMBR  EQU     *          
0555  634A  8E  6003          LDX     #SCTN0     
0556  634D  C6  04          LDB     #4         
0557  634F  4F            CLRA         
0558  6350  A7  80  GPLOP   STA     ,X+        
0559  6352  5A            DECB         
0560  6353  26  FB          BNE     GPLOP      
0561  6355  17  035D          LBSR    SETSCT     
0562        
0563  6358  17  02C3          LBSR    RD1SCT      read 1 sct
0564  635B  39            RTS          
0565       
0566        *----------------------------------------
0567        *set sector no to SCTN0
0568        *from X,X+1,X+2,X+3 to SCTN0-SCTN3
0569  635C      SETSNO  EQU     *          
0570  635C  108E  6003          LDY     #SCTN0     
0571  6360  C6  04          LDB     #4         
0572  6362  A6  80  SELOP   LDA     ,X+        
0573  6364  A7  A0          STA     ,Y+        
0574  6366  5A            DECB         
0575  6367  26  F9          BNE     SELOP      
0576  6369  17  0349          LBSR    SETSCT     
0577  636C  39            RTS          
0578       
0579        *----------------------------------------
0580        *read BPB
0581  636D      GETBPB  EQU     *          
0582  636D  8D  DB          BSR     GETMBR     
0583        *set sct no of BPB
0584  636F  8E  6ECA          LDX     #RWBUF+446+8+4   
0585  6372  108E  6003          LDY     #SCTN0     
0586  6376  C6  04          LDB     #4         
0587  6378  A6  82  GPLOP2  LDA     ,-X        
0588  637A  A7  A0          STA     ,Y+        
0589  637C  5A            DECB         
0590  637D  26  F9          BNE     GPLOP2     
0591  637F  17  0333          LBSR    SETSCT     
0592        
0593  6382  17  0299          LBSR    RD1SCT      read 1 sct
0594  6385  39            RTS          
0595       
0596        ****************************************
0597        * Disp BPB(Bios Parameter Block)
0598        ****************************************
0599  6386      DSPBPB  EQU     *          
0600  6386  8E  6009          LDX     #SCTBPB    
0601  6389  8D  D1          BSR     SETSNO     
0602  638B  17  0290          LBSR    RD1SCT      read 1 sct
0603        
0604        *disp BPB
0605  638E  17  0396          LBSR    CRLF       
0606  6391  17  02C5          LBSR    DSPBUF     
0607  6394  17  0390          LBSR    CRLF       
0608  6397  39            RTS          
0609       
0610        ****************************************
0611        * Disp FAT#1
0612        ****************************************
0613  6398      DSPFAT  EQU     *          
0614  6398  8E  600D          LDX     #SCTFAT    
0615  639B  8D  BF          BSR     SETSNO     
0616  639D  17  027E          LBSR    RD1SCT      read 1 sct
0617        
0618        *disp FAT
0619  63A0  17  0384          LBSR    CRLF       
0620  63A3  17  02B3          LBSR    DSPBUF     
0621  63A6  17  037E          LBSR    CRLF       
0622  63A9  39            RTS          
0623       
0624        ****************************************
0625        * Disp Directory
0626        ****************************************
0627  63AA      DSPDIR  EQU     *          
0628  63AA  7C  604E          INC     DPGFLG      set 1st page of DIR flag
0629        *return no of DIR
0630  63AD  108E  6019          LDY     #SCTDSV+4  
0631  63B1  8E  6015          LDX     #SCTDIR+4  
0632  63B4  C6  04          LDB     #4         
0633  63B6  A6  A2  DRET0   LDA     ,-Y        
0634  63B8  A7  82          STA     ,-X        
0635  63BA  5A            DECB         
0636  63BB  26  F9          BNE     DRET0      
0637        
0638  63BD  8E  6011  DSPFL0  LDX     #SCTDIR    
0639  63C0  8D  9A          BSR     SETSNO     
0640  63C2  17  0259          LBSR    RD1SCT      read 1 sct
0641        
0642        *disp FILE name
0643  63C5  17  035F          LBSR    CRLF       
0644  63C8  17  035C          LBSR    CRLF       
0645  63CB  8E  6D00          LDX     #RWBUF     
0646  63CE  7D  604E          TST     DPGFLG      1st page of DIR?
0647  63D1  27  03          BEQ     DSKP1      
0648  63D3  30  88 60         LEAX    96,X        skip top data
0649  63D6      DSKP1        
0650       
0651  63D6  A6  84  DSPFL1  LDA     ,X         
0652  63D8  1027  008F          LBEQ    DSPEND      if top of filename is 0 then end
0653  63DC  81  E5          CMPA    #$E5        delete mark?
0654  63DE  27  0A          BEQ     DSPCKE     
0655  63E0  A6  0B          LDA     11,X        attr
0656  63E2  81  0F          CMPA    #$0F        long file name?
0657  63E4  27  04          BEQ     DSPCKE     
0658  63E6  81  10          CMPA    #$10        directory?
0659  63E8  26  0A          BNE     DSPFL2     
0660  63EA  30  88 20 DSPCKE  LEAX    32,X        next directory entry
0661  63ED  8C  6EE0          CMPX    #RWBUF+512-32  
0662  63F0  24  60          BHS     DSPFL5     
0663  63F2  20  E2          BRA     DSPFL1     
0664        
0665  63F4      DSPFL2       
0666        *disp filename
0667  63F4  C6  08          LDB     #8         
0668  63F6  A6  80  DSPFL3  LDA     ,X+        
0669  63F8  BD  FBBB          JSR     OUTCHA     
0670  63FB  5A            DECB         
0671  63FC  26  F8          BNE     DSPFL3     
0672        *disp ext
0673  63FE  86  2E          LDA     #'.        
0674  6400  BD  FBBB          JSR     OUTCHA     
0675  6403  C6  03          LDB     #3         
0676  6405  A6  80  DSPFL4  LDA     ,X+        
0677  6407  BD  FBBB          JSR     OUTCHA     
0678  640A  5A            DECB         
0679  640B  26  F8          BNE     DSPFL4     
0680  640D  86  20          LDA     #'         
0681  640F  BD  FBBB          JSR     OUTCHA     
0682  6412  BD  FBBB          JSR     OUTCHA     
0683       
0684        *get FILE time data
0685  6415  30  07          LEAX    7,X        
0686  6417  EC  81          LDD     ,X++       
0687  6419  FD  6058          STD     WK1        
0688       
0689        *get CLUSTER(H) data
0690  641C  EC  81          LDD     ,X++       
0691  641E  1E  89          EXG     A,B        
0692  6420  FD  6047          STD     CLSTH      
0693  6423  30  04          LEAX    4,X        
0694  6425  EC  81          LDD     ,X++       
0695  6427  1E  89          EXG     A,B        
0696  6429  FD  6049          STD     CLSTL      
0697        
0698        *get FILE size data
0699  642C  108E  6045          LDY     #WFSIZ+4   
0700  6430  C6  04          LDB     #4         
0701  6432  A6  80  DSPC1   LDA     ,X+        
0702  6434  A7  A2          STA     ,-Y        
0703  6436  5A            DECB         
0704  6437  26  F9          BNE     DSPC1      
0705       
0706        *disp FILE size
0707  6439  86  20          LDA     #'         
0708  643B  BD  FBBB          JSR     OUTCHA     
0709  643E  17  040C          LBSR    DSPSIZ      disp FILE size
0710       
0711        *disp FILE time
0712  6441  FC  6058          LDD     WK1        
0713  6444  17  03A5          LBSR    DSPYMD      disp MM-DD-YY
0714       
0715        *disp CLUSTER(H,L)
0716  6447  17  0462          LBSR    DSPCLS     
0717  644A  17  02DA          LBSR    CRLF       
0718        
0719  644D  8C  6F00          CMPX    #RWBUF+512   
0720  6450  25  84          BLO     DSPFL1     
0721  6452  8E  6011  DSPFL5  LDX     #SCTDIR    
0722  6455  17  0192          LBSR    INCX4       sct no +1
0723  6458  7F  604E          CLR     DPGFLG      clear 1st page of DIR
0724  645B  8E  6AC1          LDX     #MSNXTP    
0725  645E  17  037B          LBSR    PSTRNG     
0726  6461  BD  690B          JSR     INOUTC     
0727  6464  81  20          CMPA    #'         
0728  6466  26  03          BNE     DSPEND     
0729  6468  16  FF52          LBRA    DSPFL0     
0730  646B  17  02B9  DSPEND  LBSR    CRLF       
0731  646E  39            RTS          
0732       
0733        ****************************************
0734        * Load FILE
0735        ****************************************
0736  646F      LDFILE  EQU     *          
0737        * LBSR DSPDIR
0738  646F  7C  604E          INC     DPGFLG      set 1st page of DIR flag
0739        *return no of DIR
0740  6472  108E  6019          LDY     #SCTDSV+4  
0741  6476  8E  6015          LDX     #SCTDIR+4  
0742  6479  C6  04          LDB     #4         
0743  647B  A6  A2  DRET1   LDA     ,-Y        
0744  647D  A7  82          STA     ,-X        
0745  647F  5A            DECB         
0746  6480  26  F9          BNE     DRET1      
0747        
0748  6482  8E  6A91          LDX     #MSINFN    
0749  6485  17  0354          LBSR    PSTRNG     
0750  6488  17  0467          LBSR    FNMIN      
0751        
0752  648B  8E  6011  LDFL0   LDX     #SCTDIR    
0753  648E  17  FECB          LBSR    SETSNO     
0754  6491  17  018A          LBSR    RD1SCT      read 1 sct
0755       
0756  6494  8E  6D00          LDX     #RWBUF     
0757  6497  7D  604E          TST     DPGFLG      1st page of DIR?
0758  649A  27  03          BEQ     LDFL1      
0759  649C  30  88 60         LEAX    96,X        skip top data
0760       
0761  649F  A6  84  LDFL1   LDA     ,X         
0762  64A1  1027  00FA          LBEQ    LDNEND      if top of filename is 0 then end
0763  64A5  81  E5          CMPA    #$E5        delete mark?
0764  64A7  26  0A          BNE     LD1        
0765  64A9  30  88 20         LEAX    32,X        next directory entry
0766  64AC  8C  6F00          CMPX    #RWBUF+512    over buf?
0767  64AF  24  0F          BHS     LDFL5      
0768  64B1  20  EC          BRA     LDFL1      
0769       
0770        *check file name
0771  64B3      LD1          
0772  64B3  17  041B          LBSR    CMPFN       C=1:match
0773  64B6  25  13          BCS     LD2        
0774  64B8  30  88 20         LEAX    32,X       
0775  64BB  8C  6F00          CMPX    #RWBUF+512   
0776  64BE  25  DF          BLO     LDFL1      
0777        
0778  64C0      LDFL5        
0779  64C0  8E  6011          LDX     #SCTDIR    
0780  64C3  17  0124          LBSR    INCX4       sct no +1
0781  64C6  7F  604E          CLR     DPGFLG      clear 1st page of DIR
0782  64C9  20  C0          BRA     LDFL0      
0783        
0784        *hit file, get dirctory entry
0785  64CB  C6  20  LD2     LDB     #32        
0786  64CD  108E  601E          LDY     #DIRENT    
0787  64D1  A6  80  DCPY    LDA     ,X+        
0788  64D3  A7  A0          STA     ,Y+        
0789  64D5  5A            DECB         
0790  64D6  26  F9          BNE     DCPY       
0791  64D8  8E  601E          LDX     #DIRENT    
0792        
0793        *get cluster no
0794  64DB  EC  88 14         LDD     $14,X      
0795  64DE  1E  89          EXG     A,B        
0796  64E0  FD  6047          STD     CLSTH       high cluster no
0797  64E3  EC  88 1A         LDD     $1A,X      
0798  64E6  1E  89          EXG     A,B        
0799  64E8  FD  6049          STD     CLSTL       low cluster no
0800        *sub start cluster no (SD:2,SDHC:3)
0801  64EB  83  0002          SUBD    #2         
0802  64EE  7D  6008          TST     SDHC        SD:0,SDHC:1
0803  64F1  27  03          BEQ     LD3        
0804  64F3  83  0001          SUBD    #1          D:cluster no (start 0)
0805        
0806  64F6  34  36  LD3     PSHS    A,B,X,Y    
0807  64F8  8E  6019          LDX     #SCTCLT    
0808  64FB  108E  6058          LDY     #WK1       
0809  64FF  C6  04          LDB     #4         
0810  6501  A6  80  LD4     LDA     ,X+        
0811  6503  A7  A0          STA     ,Y+        
0812  6505  5A            DECB         
0813  6506  26  F9          BNE     LD4        
0814  6508  35  36          PULS    A,B,X,Y    
0815       
0816        *(B)x40h
0817  650A  34  30          PSHS    X,Y        
0818  650C  8E  6058          LDX     #WK1       
0819  650F  17  00E7          LBSR    ADD40H     
0820  6512  35  30          PULS    X,Y        
0821        
0822        *get file size
0823  6514  34  30          PSHS    X,Y        
0824  6516  30  88 20         LEAX    32,X       
0825  6519  108E  6041          LDY     #WFSIZ     
0826  651D  C6  04          LDB     #4         
0827  651F  A6  82  LD41    LDA     ,-X        
0828  6521  A7  A0          STA     ,Y+        
0829  6523  5A            DECB         
0830  6524  26  F9          BNE     LD41       
0831  6526  35  30          PULS    X,Y        
0832        
0833  6528  EC  88 1D         LDD     $1D,X       upper of file size
0834  652B  1E  89          EXG     A,B        
0835  652D  44            LSRA          wfsiz/$200+1
0836  652E  56            RORB         
0837  652F  C3  0001          ADDD    #1         
0838        
0839  6532  C1  40          CMPB    #$40        40h page?
0840  6534  23  02          BLS     LD5        
0841  6536  C6  40          LDB     #$40       
0842  6538  F7  604B  LD5     STB     CNT         sct counter
0843  653B  F7  604C          STB     CNTSV      
0844        
0845        *set start sct no
0846  653E      LD6          
0847  653E  34  30          PSHS    X,Y        
0848  6540  8E  6058          LDX     #WK1       
0849  6543  108E  6003          LDY     #SCTN0     
0850  6547  C6  04          LDB     #4         
0851  6549  A6  80  LD7     LDA     ,X+        
0852  654B  A7  A0          STA     ,Y+        
0853  654D  5A            DECB         
0854  654E  26  F9          BNE     LD7        
0855  6550  35  30          PULS    X,Y        
0856        
0857  6552  17  0160          LBSR    SETSCT     
0858  6555  17  00C6          LBSR    RD1SCT      read 1 file data
0859        
0860  6558  7F  604D          CLR     MCFLG       set not machine code
0861  655B  B6  604C          LDA     CNTSV      
0862  655E  B1  604B          CMPA    CNT         top sector read?
0863  6561  26  1B          BNE     LD8        
0864        
0865        *at top sector, ini set
0866        *offset 00 data is
0867        *  $00    :machine code (MCFLG=0)
0868        *  $FF,$FE:BASIC PROGRAM (binary save) (MCFLG=$FF,$FE)
0869        *  else   :general text (MCFLG=1)
0870  6563  10BE  6043          LDY     WFSIZ+2    
0871  6567  10BF  6045          STY     FILSIZ      set file size
0872        
0873  656B  8E  6D00          LDX     #RWBUF     
0874  656E  A6  84          LDA     ,X          00?(machine code?)
0875  6570  B7  604D          STA     MCFLG      
0876  6573  26  09          BNE     LD8        
0877        *at machine code, read header
0878        * INC MCFLG set machine code
0879  6575  10AE  01          LDY     1,X         get file size
0880  6578  10BF  6045          STY     FILSIZ     
0881  657C  EE  03          LDU     3,X         get store addr
0882        
0883  657E  DE  33  LD8     LDU     BASADRP     get text buffer adr
0884  6580  4D            TSTA         
0885  6581  2B  03          BMI     LD9         $FFor$FE (basic code?)
0886  6583  CE  2000          LDU     #TXTADR     (else)
0887  6586      LD9          
0888  6586  8D  1F          BSR     MEMSET     
0889       
0890  6588  8E  6058          LDX     #WK1       
0891  658B  8D  5D          BSR     INCX4       sct no +1
0892  658D  7F  604E          CLR     DPGFLG      clear 1st page of DIR
0893  6590  7A  604B          DEC     CNT        
0894  6593  26  A9          BNE     LD6        
0895        
0896  6595  8E  6AA7  LDEND   LDX     #MSLDED    
0897  6598  17  0241          LBSR    PSTRNG     
0898  659B  17  0189  LDE1    LBSR    CRLF       
0899  659E  39            RTS          
0900  659F  8E  6AB3  LDNEND  LDX     #MSNOFL    
0901  65A2  17  0237          LBSR    PSTRNG     
0902  65A5  20  F4          BRA     LDE1       
0903       
0904        *
0905        *data to memory
0906        *U:memory adr
0907       
0908  65A7      MEMSET  EQU     *          
0909  65A7  34  30          PSHS    X,Y        
0910  65A9  8E  6D00          LDX     #RWBUF     
0911  65AC  B6  604D          LDA     MCFLG       0,1,$FF($FE)
0912  65AF  27  07          BEQ     MS1        
0913  65B1  2B  12          BMI     MS2        
0914        *text file
0915  65B3  CE  2000          LDU     #TXTADR     (else)
0916  65B6  20  1B          BRA     MSLOP0     
0917        *machine code
0918  65B8      MS1           
0919  65B8  10AE  01          LDY     1,X         get file size
0920  65BB  10BF  6045          STY     FILSIZ     
0921  65BF  EE  03          LDU     3,X         get store addr
0922  65C1  30  05          LEAX    5,X         skip header
0923  65C3  20  0E          BRA     MSLOP0     
0924        *basic program(binary save)
0925  65C5      MS2           
0926  65C5  30  03          LEAX    3,X         skip 3 $FFs
0927  65C7  10BE  6045          LDY     FILSIZ     
0928  65CB  31  3D          LEAY    -3,Y       
0929  65CD  10BF  6045          STY     FILSIZ     
0930  65D1  DE  33          LDU     BASADRP     get text buffer adrs
0931        
0932  65D3  10BE  6045  MSLOP0  LDY     FILSIZ     
0933  65D7  A6  80  MSLOP   LDA     ,X+        
0934  65D9  A7  C0          STA     ,U+        
0935  65DB  31  3F          LEAY    -1,Y       
0936  65DD  27  05          BEQ     MS3        
0937  65DF  8C  6F00          CMPX    #RWBUF+512   
0938  65E2  25  F3          BLO     MSLOP      
0939  65E4  10BF  6045  MS3     STY     FILSIZ     
0940  65E8  35  B0          PULS    X,Y,PC     
0941       
0942        *--------------------
0943        *(X)..(X+3)+1
0944  65EA      INCX4   EQU     *          
0945  65EA  6C  03  ADX0    INC     3,X        
0946  65EC  24  02          BCC     ADX1       
0947  65EE  6C  02          INC     2,X        
0948  65F0  24  02  ADX1    BCC     ADX2       
0949  65F2  6C  01          INC     1,X        
0950  65F4  24  02  ADX2    BCC     ADX3       
0951  65F6  6C  84          INC     ,X         
0952  65F8  39    ADX3    RTS          
0953        *
0954        *(X)..(X+3)+(B)x40h
0955  65F9      ADD40H  EQU     *          
0956  65F9  34  06          PSHS    A,B        
0957  65FB  A6  03  ADD0    LDA     3,X        
0958  65FD  8B  40          ADDA    #$40       
0959  65FF  A7  03          STA     3,X        
0960  6601  24  06          BCC     ADD1       
0961  6603  A6  02          LDA     2,X        
0962  6605  8B  01          ADDA    #1         
0963  6607  A7  02          STA     2,X        
0964  6609  24  06  ADD1    BCC     ADD2       
0965  660B  A6  01          LDA     1,X        
0966  660D  8B  01          ADDA    #1         
0967  660F  A7  01          STA     1,X        
0968  6611  24  06  ADD2    BCC     ADD3       
0969  6613  A6  84          LDA     ,X         
0970  6615  8B  01          ADDA    #1         
0971  6617  A7  84          STA     ,X         
0972  6619  5A    ADD3    DECB         
0973  661A  26  DF          BNE     ADD0       
0974  661C  35  86          PULS    A,B,PC     
0975       
0976        *
0977        *------------------------------
0978        *read 1 sct
0979        *------------------------------
0980  661E      RD1SCT  EQU     *          
0981        *copy sct no to cmd param
0982  661E  8E  6003          LDX     #SCTN0     
0983  6621  108E  691F          LDY     #CMD17+1   
0984  6625  C6  04          LDB     #4         
0985  6627  A6  80  CPY1    LDA     ,X+        
0986  6629  A7  A0          STA     ,Y+        
0987  662B  5A            DECB         
0988  662C  26  F9          BNE     CPY1       
0989        *send cmd
0990  662E  17  00BB          LBSR    SETCKL     
0991  6631  C6  06          LDB     #6         
0992  6633  8E  691E          LDX     #CMD17     
0993  6636  A6  80  RD1     LDA     ,X+        
0994  6638  8D  3D          BSR     SNDDAT     
0995  663A  5A            DECB         
0996  663B  26  F9          BNE     RD1        
0997        *get response
0998  663D      RD2          
0999  663D  8D  54          BSR     GETDAT     
1000  663F  B6  6007          LDA     RESDAT     
1001  6642  81  FE          CMPA    #$FE        token?
1002  6644  26  F7          BNE     RD2        
1003       
1004        *get data
1005        * LBSR CRLF
1006  6646  8E  6D00          LDX     #RWBUF      <-temp -1="" 0094="" 00b3="" 00cb="" 0200="" 02="" 06="" 08="" 1007="" 1008="" 1009="" 1010="" 1011="" 1012="" 1013="" 1014="" 1015="" 1016="" 1017="" 1018="" 1019="" 1020="" 1021="" 1022="" 1023="" 1024="" 1025="" 1026="" 1027="" 1028="" 1029="" 1030="" 1031="" 1032="" 1033="" 1034="" 1035="" 1036="" 1037="" 1038="" 1039="" 1040="" 1041="" 1042="" 1043="" 1044="" 1045="" 1046="" 1047="" 1048="" 1049="" 1050="" 1051="" 1052="" 1053="" 1054="" 1055="" 1056="" 1057="" 1058="" 1059="" 1060="" 1061="" 1062="" 1063="" 108e="" 12="" 17="" 20="" 26="" 27="" 31="" 34="" 35="" 39="" 3f="" 44="" 48="" 53="" 57="" 5a="" 6007="" 63="" 6649="" 664d="" 664f="" 6652="" 6654="" 6656="" 6658="" 6659="" 665c="" 665f="" 6663="" 6665="" 6667="" 666a="" 666c="" 666e="" 666f="" 6671="" 6674="" 6676="" 6677="" 6679="" 667c="" 667e="" 6680="" 6682="" 6684="" 6687="" 6689="" 668b="" 668c="" 668e="" 668f="" 6691="" 6693="" 6695="" 6697="" 6699="" 669a="" 669b="" 669c="" 669e="" 66a1="" 66a2="" 67="" 6d00="" 7f="" 80="" 84="" 86="" 8a="" 8d="" 8e="" a6="" a7="" a="" anda="" b1-="" b6="" b7="" beq="" bne="" bra="" bsr="" buf="" c6="" clr="" crlf="" cs:b0="L" data="" decb="" disp="" dspb1="" dspb2="" dspb3="" dspbin="" dspbuf="" ed="" equ="" f4="" f5="" fc="" fd9e="" get="" getd1="" getdat="" lbsr="" lda="" ldb="" ldx="" ldy="" leay="" lsla="" lsra="" miso:b1="H(for" nop="" ora="" pbdat="" pia="" pshs="" puls="" rd3="" resdat="" response="" rts="" save="" send="" setckh="" setckl="" sndd1="" snddat="" sta="" temp="">C
1064  66A3  79  6007          ROL     RESDAT      C->b0
1065  66A6  5A            DECB         
1066  66A7  26  EE          BNE     GETD1      
1067  66A9  8D  41          BSR     SETCKL     
1068  66AB  35  86          PULS    A,B,PC     
1069        *
1070        *------------------------------
1071        *input SCT No
1072  66AD      INSCT   EQU     *          
1073  66AD  8E  69E6          LDX     #MSSCT     
1074  66B0  17  0129          LBSR    PSTRNG     
1075  66B3  8D  7D          BSR     GET8CH      get 8chr, convert 4bin
1076        
1077  66B5      SETSCT  EQU     *          
1078  66B5  34  32          PSHS    A,X,Y      
1079  66B7  7D  6008          TST     SDHC       
1080  66BA  26  1E          BNE     CALCHC     
1081        *SD card
1082  66BC  C6  03          LDB     #3         
1083  66BE  8E  6004          LDX     #SCTN1     
1084  66C1  108E  6003          LDY     #SCTN0     
1085  66C5  A6  80  SFT1    LDA     ,X+        
1086  66C7  A7  A0          STA     ,Y+        
1087  66C9  5A            DECB         
1088  66CA  26  F9          BNE     SFT1       
1089  66CC  7F  6006          CLR     SCTN3      
1090        *calc top adrs of sct
1091  66CF      CALCSD  EQU     *          
1092  66CF  78  6006          LSL     SCTN3      
1093  66D2  79  6005          ROL     SCTN2      
1094  66D5  79  6004          ROL     SCTN1      
1095  66D8  35  B2          PULS    A,X,Y,PC   
1096       
1097        *SDHC card
1098        *calc top adrs of sct
1099  66DA      CALCHC  EQU     *          
1100  66DA  8E  6003          LDX     #SCTN0     
1101  66DD  108E  691F          LDY     #CMD17+1   
1102  66E1  C6  04          LDB     #4         
1103  66E3  A6  80  CALCH1  LDA     ,X+        
1104  66E5  A7  A0          STA     ,Y+        
1105  66E7  5A            DECB         
1106  66E8  26  F9          BNE     CALCH1     
1107  66EA  35  B2          PULS    A,X,Y,PC   
1108       
1109        *
1110        *set sck:L
1111  66EC      SETCKL  EQU     *          
1112  66EC  34  02          PSHS    A          
1113  66EE  86  34          LDA     #$34        ca2=L
1114  66F0  B7  FD9F          STA     PBCTL      
1115  66F3  35  82          PULS    A,PC       
1116       
1117        *set sck:H
1118  66F5      SETCKH  EQU     *          
1119  66F5  34  02          PSHS    A          
1120  66F7  86  3C          LDA     #$3C        ca2=H
1121  66F9  B7  FD9F          STA     PBCTL      
1122  66FC  35  82          PULS    A,PC       
1123       
1124        *binary(A)->ascii(A)(B)
1125  66FE      DSPBIN  EQU     *          
1126  66FE  34  06          PSHS    A,B        
1127  6700  1F  89          TFR     A,B        
1128  6702  44            LSRA         
1129  6703  44            LSRA         
1130  6704  44            LSRA         
1131  6705  44            LSRA         
1132  6706  8A  30          ORA     #$30       
1133  6708  C4  0F          ANDB    #$0F       
1134  670A  CA  30          ORB     #$30       
1135  670C  81  39          CMPA    #$39       
1136  670E  23  02          BLS     BI21       
1137  6710  8B  07          ADDA    #$07       
1138  6712  C1  39  BI21    CMPB    #$39       
1139  6714  23  02          BLS     BI22       
1140  6716  CB  07          ADDB    #$07       
1141  6718  BD  FBBB  BI22    JSR     OUTCHA     
1142  671B  1F  98          TFR     B,A        
1143  671D  BD  FBBB          JSR     OUTCHA     
1144  6720  86  20          LDA     #$20       
1145  6722  BD  FBBB          JSR     OUTCHA     
1146  6725  35  86          PULS    A,B,PC     
1147       
1148        *crlf
1149  6727      CRLF    EQU     *          
1150  6727  86  0D          LDA     #$0D       
1151  6729  BD  FBBB          JSR     OUTCHA     
1152  672C  86  0A          LDA     #$0A       
1153  672E  BD  FBBB          JSR     OUTCHA     
1154  6731  39            RTS          
1155       
1156        *
1157  6732      GET8CH  EQU     *          
1158        *input chr
1159  6732  8E  6ADA          LDX     #INPBUF    
1160  6735  5F            CLRB         
1161  6736  BD  690B  CLOP    JSR     INOUTC     
1162  6739  81  0D          CMPA    #$0D       
1163  673B  27  07          BEQ     INEND      
1164  673D  A7  85          STA     B,X        
1165  673F  5C            INCB         
1166  6740  C1  08          CMPB    #8         
1167  6742  25  F2          BLO     CLOP       
1168       
1169  6744      INEND         
1170        *shift
1171  6744  5D            TSTB         
1172  6745  27  11          BEQ     CL1        
1173  6747  8E  6ADA          LDX     #INPBUF    
1174  674A  3A            ABX          
1175  674B  108E  6AE2          LDY     #INPBUF+8  
1176  674F  34  04          PSHS    B          
1177  6751  A6  82  SFLOP   LDA     ,-X        
1178  6753  A7  A2          STA     ,-Y        
1179  6755  5A            DECB         
1180  6756  26  F9          BNE     SFLOP      
1181        *clr
1182  6758  C6  08  CL1     LDB     #8         
1183  675A  E0  E0          SUBB    ,S+        
1184  675C  27  0A          BEQ     CLEND      
1185  675E  8E  6ADA          LDX     #INPBUF    
1186  6761  86  30          LDA     #'0        
1187  6763  A7  80  CLLOP   STA     ,X+        
1188  6765  5A            DECB         
1189  6766  26  FB          BNE     CLLOP      
1190  6768      CLEND        
1191       
1192        *convert to bin
1193  6768  C6  04          LDB     #4         
1194  676A  8E  6ADA          LDX     #INPBUF    
1195  676D  108E  6003          LDY     #SCTN0     
1196  6771      CVT1         
1197  6771  A6  80          LDA     ,X+        
1198  6773  8D  1E          BSR     CVBIN      
1199  6775  25  16          BCS     EREND1     
1200  6777  48            LSLA         
1201  6778  48            LSLA         
1202  6779  48            LSLA         
1203  677A  48            LSLA         
1204  677B  34  02          PSHS    A          
1205  677D  A6  80          LDA     ,X+        
1206  677F  8D  12          BSR     CVBIN      
1207  6781  25  08          BCS     EREND0     
1208  6783  AB  E0          ADDA    ,S+        
1209  6785  A7  A0          STA     ,Y+        
1210  6787  5A            DECB         
1211  6788  26  E7          BNE     CVT1       
1212  678A  39            RTS          
1213        
1214  678B  35  02  EREND0  PULS    A          
1215  678D  8E  6A47  EREND1  LDX     #MSERR     
1216  6790  8D  4A          BSR     PSTRNG     
1217  6792  39    EEND    RTS          
1218       
1219        *--------------------
1220        *ascii -> bin
1221  6793      CVBIN   EQU     *          
1222  6793  80  30          SUBA    #'0        
1223  6795  2B  11          BMI     CVERR      
1224  6797  81  09          CMPA    #9         
1225  6799  23  0A          BLS     CVBEND     
1226  679B  81  11          CMPA    #$11       
1227  679D  25  09          BLO     CVERR      
1228  679F  81  16          CMPA    #$16       
1229  67A1  22  05          BHI     CVERR      
1230  67A3  80  07          SUBA    #7         
1231  67A5      CVBEND       
1232  67A5  1C  FE          ANDCC   #$FE        reset C
1233  67A7  39            RTS          
1234  67A8  1A  01  CVERR   ORCC    #$01        set C
1235  67AA  39            RTS          
1236       
1237        *--------------------
1238        *add 2bytes to 4bytes
1239        * X,X+1,X+2,X+3 + Y,Y+1
1240        * data X is big endian
1241        * data Y is little endian
1242  67AB      ADD42   EQU     *          
1243  67AB  34  36          PSHS    A,B,X,Y    
1244  67AD  32  7C          LEAS    -4,S       
1245  67AF  C6  04          LDB     #4         
1246  67B1  A6  80  AD1     LDA     ,X+        
1247  67B3  A7  E0          STA     ,S+        
1248  67B5  5A            DECB         
1249  67B6  26  F9          BNE     AD1        
1250        
1251        *add (lower)
1252  67B8  A6  A0          LDA     ,Y+        
1253  67BA  AB  E2          ADDA    ,-S        
1254  67BC  A7  E4          STA     ,S         
1255  67BE  24  02          BCC     AD2        
1256  67C0  6C  7F          INC     -1,S       
1257        *add (upper)
1258  67C2  A6  A4  AD2     LDA     ,Y         
1259  67C4  AB  E2          ADDA    ,-S        
1260  67C6  A7  E4          STA     ,S         
1261  67C8  24  02          BCC     AD3        
1262  67CA  6C  7F          INC     -1,S       
1263  67CC  30  1C  AD3     LEAX    -4,X       
1264  67CE  32  7E          LEAS    -2,S       
1265  67D0  C6  04          LDB     #4         
1266  67D2  A6  E0  AD4     LDA     ,S+        
1267  67D4  A7  80          STA     ,X+        
1268  67D6  5A            DECB         
1269  67D7  26  F9          BNE     AD4        
1270  67D9  35  36          PULS    A,B,X,Y    
1271  67DB  39            RTS          
1272       
1273        *--------------------
1274        * pstring
1275  67DC      PSTRNG  EQU     *          
1276  67DC  34  02          PSHS    A          
1277  67DE  A6  80  PSLOP   LDA     ,X+        
1278  67E0  81  04          CMPA    #4         
1279  67E2  27  05          BEQ     PSEND      
1280  67E4  BD  FBBB          JSR     OUTCHA     
1281  67E7  20  F5          BRA     PSLOP      
1282  67E9  35  02  PSEND   PULS    A          
1283  67EB  39            RTS          
1284       
1285        *--------------------
1286        *disp MM-DD-YY
1287        *indata A(Low),B(High)
1288  67EC      DSPYMD  EQU     *          
1289  67EC  1E  89          EXG     A,B        
1290  67EE  34  10          PSHS    X          
1291  67F0  34  06          PSHS    A,B        
1292  67F2  C4  E0          ANDB    #$E0       
1293  67F4  54            LSRB         
1294  67F5  54            LSRB         
1295  67F6  54            LSRB         
1296  67F7  54            LSRB         
1297  67F8  54            LSRB         
1298  67F9  47            ASRA         
1299  67FA  24  02          BCC     DYMD1      
1300  67FC  CB  08          ADDB    #8         
1301  67FE  F7  603E  DYMD1   STB     WMDY        MM
1302  6801  35  06          PULS    A,B        
1303  6803  34  04          PSHS    B          
1304  6805  C4  1F          ANDB    #$1F       
1305  6807  F7  603F          STB     WMDY+1      DD
1306  680A  35  04          PULS    B          
1307        
1308  680C  44            LSRA         
1309        * ASLB
1310        * BCC DYMD2
1311        * INCA
1312  680D      DYMD2        
1313  680D  80  14          SUBA    #20         A+1980-2000
1314  680F  B7  6040          STA     WMDY+2      YY
1315        
1316        *disp MM-DD-YY
1317  6812  86  20          LDA     #'         
1318  6814  BD  FBBB          JSR     OUTCHA     
1319  6817  8E  603E          LDX     #WMDY      
1320  681A  A6  80          LDA     ,X+        
1321  681C  8D  14          BSR     DB2ASC      MM
1322  681E  86  2D          LDA     #'-        
1323  6820  BD  FBBB          JSR     OUTCHA     
1324  6823  A6  80          LDA     ,X+        
1325  6825  8D  0B          BSR     DB2ASC      DD
1326  6827  86  2D          LDA     #'-        
1327  6829  BD  FBBB          JSR     OUTCHA     
1328  682C  A6  80          LDA     ,X+        
1329  682E  8D  02          BSR     DB2ASC      YY
1330  6830  35  90          PULS    X,PC       
1331        *
1332        *----------
1333        *(A:BIN)->ASCII
1334  6832      DB2ASC  EQU     *          
1335  6832  34  06          PSHS    A,B        
1336  6834  1F  89          TFR     A,B        
1337  6836  86  30          LDA     #$30       
1338  6838  C1  0A  DBLOP   CMPB    #10        
1339  683A  25  05          BLO     DB2        
1340  683C  C0  0A          SUBB    #10        
1341  683E  4C            INCA         
1342  683F  20  F7          BRA     DBLOP      
1343  6841  BD  FBBB  DB2     JSR     OUTCHA     
1344  6844  1F  98          TFR     B,A        
1345  6846  8B  30          ADDA    #$30       
1346  6848  BD  FBBB          JSR     OUTCHA     
1347  684B  35  86          PULS    A,B,PC     
1348       
1349        *disp FILE size
1350  684D      DSPSIZ  EQU     *          
1351  684D  34  10          PSHS    X          
1352  684F  BE  6041          LDX     WFSIZ      
1353  6852  27  16          BEQ     DSS1        if 64k over?
1354  6854  86  3E          LDA     #'>       
1355  6856  BD  FBBB          JSR     OUTCHA     
1356  6859  86  36          LDA     #'6        
1357  685B  BD  FBBB          JSR     OUTCHA     
1358  685E  86  34          LDA     #'4        
1359  6860  BD  FBBB          JSR     OUTCHA     
1360  6863  86  6B          LDA     #'k        
1361  6865  BD  FBBB          JSR     OUTCHA     
1362  6868  20  3B          BRA     DSEND      
1363  686A  86  20  DSS1    LDA     #'         
1364  686C  BD  FBBB          JSR     OUTCHA     
1365  686F  B6  6043          LDA     WFSIZ+2     under 64k
1366        *disp dec
1367  6872  81  64          CMPA    #100       
1368  6874  23  12          BLS     DSS13      
1369  6876  1F  89          TFR     A,B        
1370  6878  86  30          LDA     #$30       
1371  687A  C1  64  DSLOP1  CMPB    #100       
1372  687C  25  05          BLO     DSS12      
1373  687E  C0  64          SUBB    #100       
1374  6880  4C            INCA         
1375  6881  20  F7          BRA     DSLOP1     
1376  6883  BD  FBBB  DSS12   JSR     OUTCHA     
1377  6886  20  05          BRA     DSS14      
1378        *under 100
1379  6888  86  20  DSS13   LDA     #'         
1380  688A  BD  FBBB          JSR     OUTCHA     
1381  688D  86  30  DSS14   LDA     #$30       
1382  688F  C1  0A  DSLOP2  CMPB    #10        
1383  6891  25  05          BLO     DSS2       
1384  6893  C0  0A          SUBB    #10        
1385  6895  4C            INCA         
1386  6896  20  F7          BRA     DSLOP2     
1387  6898  81  30  DSS2    CMPA    #$30       
1388  689A  26  01          BNE     DSS3       
1389  689C  4C            INCA         
1390  689D  BD  FBBB  DSS3    JSR     OUTCHA     
1391  68A0  86  6B          LDA     #'k        
1392  68A2  BD  FBBB          JSR     OUTCHA     
1393  68A5  86  20  DSEND   LDA     #'         
1394  68A7  BD  FBBB          JSR     OUTCHA     
1395  68AA  35  90          PULS    X,PC       
1396       
1397        *----------
1398  68AC      DSPCLS  EQU     *          
1399  68AC  34  10          PSHS    X          
1400  68AE  86  20          LDA     #'         
1401  68B0  BD  FBBB          JSR     OUTCHA     
1402  68B3  8E  6047          LDX     #CLSTH     
1403  68B6  C6  02          LDB     #2         
1404  68B8  A6  80  DCLOP1  LDA     ,X+        
1405  68BA  17  FF75          LBSR    DB2ASC     
1406  68BD  5A            DECB         
1407  68BE  26  F8          BNE     DCLOP1     
1408  68C0  86  20          LDA     #'         
1409  68C2  BD  FBBB          JSR     OUTCHA     
1410  68C5  C6  02          LDB     #2         
1411  68C7  A6  80  DCLOP2  LDA     ,X+        
1412  68C9  17  FF66          LBSR    DB2ASC     
1413  68CC  5A            DECB         
1414  68CD  26  F8          BNE     DCLOP2     
1415  68CF  35  90          PULS    X,PC       
1416       
1417        *----------
1418        *X:top of FILE NAME
1419        *return C=1:match,C=0:not match
1420  68D1      CMPFN   EQU     *          
1421  68D1  34  10          PSHS    X          
1422  68D3  108E  604F          LDY     #FNAME     
1423  68D7  C6  08          LDB     #8         
1424  68D9  A6  80  CMPLOP  LDA     ,X+        
1425  68DB  81  E5          CMPA    #$E5        delete mark?
1426  68DD  27  0F          BEQ     NOTM       
1427  68DF  81  20          CMPA    #'         
1428  68E1  27  07          BEQ     MATCH      
1429  68E3  A1  A0          CMPA    ,Y+        
1430  68E5  26  07          BNE     NOTM       
1431  68E7  5A            DECB         
1432  68E8  26  EF          BNE     CMPLOP     
1433  68EA  1A  01  MATCH   ORCC    #$01        C=1
1434  68EC  20  02          BRA     CMPEND     
1435  68EE  1C  FE  NOTM    ANDCC   #$FE        C=0
1436  68F0  35  90  CMPEND  PULS    X,PC       
1437       
1438        *----------
1439  68F2      FNMIN   EQU     *          
1440        *clr buf
1441  68F2  8E  605A          LDX     #FNAME+11  
1442  68F5  C6  0B          LDB     #8+3       
1443  68F7  86  20          LDA     #'         
1444  68F9  A7  82  FNIN0   STA     ,-X        
1445  68FB  5A            DECB         
1446  68FC  26  FB          BNE     FNIN0      
1447        *fname in
1448  68FE  BD  690B  FNIN1   JSR     INOUTC     
1449  6901  A7  80          STA     ,X+        
1450  6903  81  0D          CMPA    #$0D       
1451  6905  27  03          BEQ     FNIEND     
1452  6907  5A            DECB         
1453  6908  26  F4          BNE     FNIN1      
1454  690A  39    FNIEND  RTS          
1455       
1456  690B  BD  FBB8  INOUTC  JSR     INCHA      
1457  690E  BD  FBBB          JSR     OUTCHA     
1458  6911  39            RTS          
1459       
1460        **************************************************
1461        *========== parameter ==========
1462  6912  40    CMD0    FCB     $40,$00,$00,$00,$00,$95 '@   
1463  6918  41    CMD1    FCB     $41,$00,$00,$00,$00,$FF 'A   
1464  691E  51    CMD17   FCB     $51,$00,$00,$00,$00,$FF 'Q   
1465  6924  58    CMD24   FCB     $58,$00,$00,$00,$00,$FF 'X   
1466  692A  48    CMD8    FCB     $48,$00,$00,$01,$AA,$87 'H   
1467  6930  7A    CMD58   FCB     $7A,$00,$00,$00,$00,$FF 'z   
1468  6936  77    CMD55   FCB     $77,$00,$00,$00,$00,$FF 'w   
1469  693C  69    ACMD41  FCB     $69,$40,$FF,$80,$00,$FF 'i   
1470  6942  49    CMD9    FCB     $49,$00,$00,$00,$00,$FF 'I   
1471        *
1472  6948  43      MCMD0   FCC     /CMD0/,$D,$A   
1473  694E  04            FCB     4          
1474  694F  43      MCMD8   FCC     /CMD8/,$D,$A   
1475  6955  04            FCB     4          
1476  6956  43      MCMD58  FCC     /CMD58/,$D,$A  
1477  695D  04            FCB     4          
1478  695E  43      MCMD55  FCC     /CMD55/,$D,$A  
1479  6965  04            FCB     4          
1480  6966  41      MCMD41  FCC     /ACMD41/,$D,$A   
1481  696E  04            FCB     4          
1482  696F  43      MCMD9   FCC     /CMD9/,$D,$A   
1483  6975  04            FCB     4          
1484        *
1485  6976  0D      MSMENU1 FCC     $0D,$0A,/1:Read Sct, 2:Get SD data, 3:SD Init, 4:Disp MBR, 5:Disp BPB,/  
1486  69B5  04            FCB     4          
1487  69B6  0D      MSMENU2 FCC     $0D,$0A,/6:Disp FAT, 7:Disp DIR, 8:Load FILE, 0:End : /  
1488  69E5  04            FCB     4          
1489  69E6  53      MSSCT   FCC     /SctNo: /  
1490  69ED  04            FCB     4          
1491  69EE  57      MSWROK  FCC     /Write OK?: /  
1492  69F9  04            FCB     4          
1493  69FA  0D      MSSD0   FCC     $0D,$0A,/SD Card/,$0D,$0A  
1494  6A05  04            FCB     4          
1495  6A06  0D      MSSD1   FCC     $0D,$0A,/SDHC Card/,$0D,$0A  
1496  6A13  04            FCB     4          
1497  6A14  0D      MSINIT  FCC     $0D,$0A,$0D,$0A,/SD Card initializing.../  
1498  6A2F  04            FCB     4          
1499  6A30  53      MERR    FCC     /SD Initialize error!/,$0D,$0A   
1500  6A46  04            FCB     4          
1501  6A47  49      MSERR   FCC     /Input error!/,$0D,$0A   
1502  6A55  04            FCB     4          
1503  6A56  0D      MSOFS   FCC     $0D,$0A,/Sector no is:/  
1504  6A65  04            FCB     4          
1505  6A66  0D      MSBPB   FCC     $0D,$0A,/ BPB: /   
1506  6A6E  04            FCB     4          
1507  6A6F  0D      MSFAT   FCC     $0D,$0A,/ FAT: /   
1508  6A77  04            FCB     4          
1509  6A78  0D      MSDIR   FCC     $0D,$0A,/ DIR: /   
1510  6A80  04            FCB     4          
1511  6A81  0D      MSCL2   FCC     $0D,$0A,/ 1stCLUSTER: /  
1512  6A90  04            FCB     4          
1513  6A91  0D      MSINFN  FCC     $0D,$0A,$0D,$0A,/Input File Name: /  
1514  6AA6  04            FCB     4          
1515  6AA7  0D      MSLDED  FCC     $0D,$0A,/ Load end/  
1516  6AB2  04            FCB     4          
1517  6AB3  0D      MSNOFL  FCC     $0D,$0A,/ Not exist!/  
1518  6AC0  04            FCB     4          
1519  6AC1  0D      MSNXTP  FCC     $0D,$0A,"Next page (SPC/else): "   
1520  6AD9  04            FCB     4          
1521       
1522        **************************************************
1523  6ADA  FF    INPBUF  RMB     8          
1524       
1525          END     START      
 
0 error(s),  0 warning(s) is detected.
 
Label address
ACMD41  693C  AD1     67B1  AD2     67C2  AD3     67CC  AD4     67D2
ADD0    65FB  ADD1    6609  ADD2    6611  ADD3    6619  ADD40H  65F9
ADD42   67AB  ADX0    65EA  ADX1    65F0  ADX2    65F4  ADX3    65F8
ASC411  6195  ASCMD41 6188  BASADRP 0033  BI21    6712  BI22    6718
CALCH1  66E3  CALCHC  66DA  CALCSD  66CF  CL1     6758  CLEND   6768
CLLOP   6763  CLOP    6736  CLSTH   6047  CLSTL   6049  CMD0    6912
CMD1    6918  CMD17   691E  CMD24   6924  CMD55   6936  CMD58   6930
CMD8    692A  CMD9    6942  CMPEND  68F0  CMPFN   68D1  CMPLOP  68D9
CNT     604B  CNTSV   604C  CPY1    6627  CRLF    6727  CSRON   FBF7
CVBEND  67A5  CVBIN   6793  CVERR   67A8  CVT1    6771  DB2     6841
DB2ASC  6832  DBLOP   6838  DCLOP1  68B8  DCLOP2  68C7  DCPY    64D1
DIRENT  601E  DPGFLG  604E  DRET0   63B6  DRET1   647B  DSEND   68A5
DSKP1   63D6  DSLOP1  687A  DSLOP2  688F  DSPB1   6663  DSPB2   6665
DSPB3   6676  DSPBIN  66FE  DSPBPB  6386  DSPBUF  6659  DSPC1   6432
DSPCKE  63EA  DSPCLS  68AC  DSPDIR  63AA  DSPEND  646B  DSPFAT  6398
DSPFL0  63BD  DSPFL1  63D6  DSPFL2  63F4  DSPFL3  63F6  DSPFL4  6405
DSPFL5  6452  DSPMBR  632C  DSPSIZ  684D  DSPYMD  67EC  DSS1    686A
DSS12   6883  DSS13   6888  DSS14   688D  DSS2    6898  DSS3    689D
DYMD1   67FE  DYMD2   680D  EEND    6792  EREND0  678B  EREND1  678D
FILSIZ  6045  FNAME   604F  FNIEND  690A  FNIN0   68F9  FNIN1   68FE
FNMIN   68F2  GET1    6337  GET2    6339  GET8CH  6732  GETBPB  636D
GETD1   6697  GETDAT  6693  GETMBR  634A  GETSD   628B  GPLOP   6350
GPLOP2  6378  GR00    6100  GR2580  61C2  GR2581  61D9  GR2582  61DB
GR410   619D  GR550   617E  GR580   6154  GR581   615E  GR582   6160
GR80    6124  GR81    6136  GR90    629E  GR91    62AD  ILOP1   61FE
ILOP2   6211  ILOP3   622B  ILOP4   6269  INCHA   FBB8  INCX4   65EA
INEND   6744  INIT    607E  INOUTC  690B  INPBUF  6ADA  INSCT   66AD
ISTT    60E6  LD1     64B3  LD2     64CB  LD3     64F6  LD4     6501
LD41    651F  LD5     6538  LD6     653E  LD7     6549  LD8     657E
LD9     6586  LDE1    659B  LDEND   6595  LDFILE  646F  LDFL0   648B
LDFL1   649F  LDFL5   64C0  LDNEND  659F  MAIN    605A  MATCH   68EA
MCFLG   604D  MCMD0   6948  MCMD41  6966  MCMD55  695E  MCMD58  6956
MCMD8   694F  MCMD9   696F  MEMSET  65A7  MEN1    609A  MEN2    60A2
MEN3    60AA  MEN4    60B1  MEN5    60B9  MEN6    60C1  MEN7    60C9
MEN8    60D1  MENU    6080  MERR    6A30  MS1     65B8  MS2     65C5
MS3     65E4  MSBPB   6A66  MSCL2   6A81  MSDIR   6A78  MSERR   6A47
MSFAT   6A6F  MSINFN  6A91  MSINIT  6A14  MSLDED  6AA7  MSLOP   65D7
MSLOP0  65D3  MSMENU1 6976  MSMENU2 69B6  MSNOFL  6AB3  MSNXTP  6AC1
MSOFS   6A56  MSSCT   69E6  MSSD0   69FA  MSSD1   6A06  MSWROK  69EE
NOTM    68EE  OKEND   6318  OUTCHA  FBBB  PBCTL   FD9F  PBDAT   FD9E
PSEND   67E9  PSLOP   67DE  PSTRNG  67DC  RD1     6636  RD1SCT  661E
RD2     663D  RD3     664D  RESDAT  6007  RPT41   6169  RWBUF   6D00
SC01    60F7  SC2581  61BA  SC551   6176  SC581   614C  SC80    611C
SC91    6296  SCLOP1  62CD  SCLOP2  62E0  SCLOP3  62F3  SCLOP4  6306
SCMD0   60EF  SCMD258 61AD  SCMD55  6169  SCMD58  613F  SCMD8   610F
SCPY1   6251  SCTBPB  6009  SCTCLT  6019  SCTDIR  6011  SCTDSV  6015
SCTFAT  600D  SCTN0   6003  SCTN1   6004  SCTN2   6005  SCTN3   6006
SCTPCL  601D  SD1     61EF  SDERR   6312  SDHC    6008  SDINIT  60D9
SDRD    6319  SELOP   6362  SETCKH  66F5  SETCKL  66EC  SETSCT  66B5
SETSNO  635C  SFLOP   6751  SFT1    66C5  SKP1    623D  SKP2    6282
SNDD1   667E  SNDDAT  6677  START   6000  STTADR  6000  TXTADR  2000
VN      6002  WFSIZ   6041  WK1     6058  WMDY    603E 
 
 
<!---temp--><!------><!------><!------><!------>


前々回の報告「FM-7にRTCとSDを接続する試み(RTC編)(2023年3月9日)」で回路図も公開してありますが、FM-7に6821PIAを1個追加するだけでRTCやSDカードが使用できるのはそれなりにお値打ち(!)なのではないでしょうか。



0 件のコメント:

コメントを投稿