ようやくSDカード(SDHCカードも)のセクタの読み書きができました
まだ完成途上なのですが、一応、必要なセクタを読み書きできるようになりました。
任意のセクタの読み書きに加えて、MBR(マスタブートレコード)、BPB(ブートパラメータブロック)、FAT(ファイルアロケーションテーブル)、DIR(ディレクトリ)と指定したファイルの最初のセクタを読むことができます。もちろん、SDカードのみでなくSDHCカードもOKです。
まずはFM-7との接続の様子です。前回の報告ではFM-7本体に装着していましたが、今回は拡張基板上に装着しています。後ろにFDCカードとFT245カードが並んでおり、50Pフラットケーブルで本体の拡張コネクタに接続しています。
設置状態 |
SDカードでの起動画面です。
SDカードの初期化とカード種別の判別の終了後にメニューが表示されます。
SDカードの起動画面 |
SDHCカードでの起動画面です。
SDHCカードの起動画面 |
メニュー項目は
1.指定したセクタのリード
2.指定したセクタのライト
3.SDカードのデータ取得・表示
3.SDカードのデータ取得・表示
4.SDカードの初期化
5.MBR(Master Boot Record)内容の表示
6.BPB(Boot Parameter Block)内容の表示
7.FAT(File Allocation Table)内容の表示
8.DIR(Directory)内容の表示...(先頭セクタのみです)
9.ファイル内容の表示...(先頭セクタのみです)
です。
です。
メニュー実行の例として、DIR内容を表示させてみます。
ファイル名、サイズ、作成日、クラスタ上位、クラスタ下位を表示させています。
先頭の番号は、9.ファイル内容の表示で使用します。
SDカードのディレクトリ表示 |
メニュー9です。
ファイル番号を入力するとそのファイルの内容が表示されます。(現在はテストプログラムですので、先頭セクタのみの表示です。)
この画面はSDHCカードの場合で、3行目のような意味不明の表示がありますが、これは4行目のファイル名中に小文字が使用されているためです。(拡張子が.Lstでした)
ということで、FAT32も使用できますが、ファイル名に小文字は使用できないという制限があります。
ファイル番号入力待ち |
FM-7では一行が80文字までという制限があるために1セクタのデータの512バイトがうまく一画面に収まらないので、表示結果の画像はありません。代わりに、開発に使用しているFLEX9上での画面を示します。
以上、現在実現できていることのうち、読み込み機能について紹介しました。
ファイル名に小文字が使えませんし、もちろんフォルダも使用できませんが、目的がFM-7への実装ですので、どちらも問題にはなりません。
問題は、WindowsPC等でSDカードに保存したテキスト等のデータをFM-7で読み出せたとして、それをFM-7のシステムでどのようにして利用するかです。
最も簡単な方法としては、読み込んだデータをメモリ上に展開しておいてF-BASICからそれを読み込んでファイル化するという方法が考えられます。小さなデータならこれでも間に合いそうですが...
SDカードをドライブ2に割り付けることができて、FILES, LOAD, SAVEなどが使用できればベストなのですが、実現するにはなかなか敷居が高そうです...
また、プログラムサイズも結構大きくなりそうですので、どう組み込むかも課題です。
まだまだ完成には遠いですが、今回作成したサブルーチン等をベースにして仕上げていくことになると思いますので、雑な作りのものですが、作成したプログラムを紹介しておきます。
0001 * 0002 * SDHC8FM.TXT 0003 * 0004 * SD Read/Write on SBC 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 --- --- HV2 LV2 --- IO3 0014 * PA7 10 --- 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 --- HV2 LV2 --- MISO 0025 * PB7 20 --- 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 $6E00 - 6FFF 0035 * 0036 * Add command '2023.03.14 0037 * Change use Port B '2023.03.07 0038 * Original version '2022.06.11 0039 * Copyright by Y.Yamamoto 0040 * 0041 6000 STTADR EQU $6000 0042 FBB8 INCHA EQU $FBB8 0043 FBBB OUTCHA EQU $FBBB 0044 0045 6E00 RWBUF EQU STTADR+$E00 0046 0047 FD9E PBDAT EQU $FD9E 0048 FD9F PBCTL EQU PBDAT+1 0049 0050 6000 ORG STTADR 0051 0052 6000 20 27 START BRA MAIN 0053 6002 01 VN FCB 1 0054 6003 00 SCTN0 FCB 0 top adrs of sct 0055 6004 00 SCTN1 FCB 0 0056 6005 00 SCTN2 FCB 0 0057 6006 00 SCTN3 FCB 0 0058 6007 00 RESDAT FCB 0 response data 0059 6008 00 SDHC FCB 0 sd:0,sdhc:1 0060 0061 6009 0000 SCTBPB FDB 00 sct no of BPB(4bytes) 0062 600B 0000 FDB 00 0063 600D 0000 SCTFAT FDB 00 sct no of FAT#1(4bytes) 0064 600F 0000 FDB 00 0065 6011 0000 SCTDIR FDB 00 sct no of DIR(4bytes) 0066 6013 0000 FDB 00 0067 6015 0000 SCTCLT FDB 00 sct no of top CLUSTER(4bytes) 0068 6017 0000 FDB 00 if SD:#2, SDHC:#3 0069 6019 00 SCTPCL FCB 0 sct per cluster 0070 601A FF WMDY RMB 3 0071 601D FF WFSIZ RMB 4 0072 6021 0000 CLSTH FDB 00 0073 6023 0000 CLSTL FDB 00 0074 6025 0000 WK1 FDB 00 0075 6027 0000 WK2 FDB 00 0076 0077 6029 MAIN EQU * 0078 *=====reset pia===== 0079 *portB:output 0080 6029 86 30 LDA #$30 0081 602B B7 FD9F STA PBCTL select ddra, cb2:0 0082 602E 86 FD LDA #$FD pb0,7:out,pb1:in 0083 6030 B7 FD9E STA PBDAT set output mode 0084 6033 86 34 LDA #$34 0085 6035 B7 FD9F STA PBCTL select peripheral,cb2:0 0086 0087 *for pia exist check 0088 6038 86 55 LDA #$55 test data 0089 603A B7 FD9E STA PBDAT 0090 603D B6 FD9E LDA PBDAT 0091 6040 84 FD ANDA #$FD pb1=0 0092 6042 81 55 CMPA #$55 0093 6044 27 07 BEQ INIT 0094 6046 8E 68DF LDX #MERR 0095 6049 17 067B LBSR PSTRNG 0096 604C 39 RTS return FM-7 0097 0098 604D INIT EQU * 0099 604D 8D 5E BSR SDINIT 0100 0101 **************************************** 0102 * MAIN MENU 0103 **************************************** 0104 604F MENU EQU * 0105 604F 8E 6817 LDX #MSMENU1 0106 6052 17 0672 LBSR PSTRNG 0107 6055 8E 6859 LDX #MSMENU2 0108 6058 17 066C LBSR PSTRNG 0109 0110 605B BD FBB8 JSR INCHA 0111 605E 80 30 SUBA #$30 0112 6060 26 04 BNE MEN1 0? 0113 6062 BD 6612 JSR CRLF 0114 6065 39 RTS return FM-7 0115 6066 4A MEN1 DECA 0116 6067 26 05 BNE MEN2 1? 0117 6069 17 0271 LBSR SDRD 0118 606C 20 E1 BRA MENU 0119 606E 4A MEN2 DECA 0120 606F 26 05 BNE MEN3 2? 0121 6071 17 0416 LBSR SDWRT 0122 6074 20 D9 BRA MENU 0123 6076 4A MEN3 DECA 0124 6077 26 05 BNE MEN4 3? 0125 6079 17 01D3 LBSR GETSD 0126 607C 20 D1 BRA MENU 0127 607E 4A MEN4 DECA 0128 607F 26 04 BNE MEN5 4? 0129 6081 8D 2A BSR SDINIT 0130 6083 20 CA BRA MENU 0131 6085 4A MEN5 DECA 5? 0132 6086 26 05 BNE MEN6 0133 6088 17 0265 LBSR DSPMBR 0134 608B 20 C2 BRA MENU 0135 608D 4A MEN6 DECA 6? 0136 608E 26 05 BNE MEN7 0137 6090 17 02B7 LBSR DSPBPB 0138 6093 20 BA BRA MENU 0139 6095 4A MEN7 DECA 7? 0140 6096 26 05 BNE MEN8 0141 6098 17 02C1 LBSR DSPFAT 0142 609B 20 B2 BRA MENU 0143 609D 4A MEN8 DECA 8? 0144 609E 26 05 BNE MEN9 0145 60A0 17 02CB LBSR DSPDIR 0146 60A3 20 AA BRA MENU 0147 60A5 4A MEN9 DECA 9? 0148 60A6 26 A7 BNE MENU 0149 60A8 17 0349 LBSR LDFILE 0150 60AB 20 A2 BRA MENU 0151 * 0152 **************************************** 0153 * SD Initialize routine 0154 **************************************** 0155 60AD SDINIT EQU * 0156 *---------- start ---------- 0157 60AD 8E 68C3 LDX #MSINIT 0158 60B0 BD 66C7 JSR PSTRNG 0159 * cs:1,di:1,sck-74ms 0160 60B3 86 FF LDA #$FF mosi:b7=H,miso:b1=H(for PIA),cs:b0=H 0161 60B5 B7 FD9E STA PBDAT 0162 60B8 C6 50 LDB #80 80times 0163 60BA 17 051A ISTT LBSR SETCKL 0164 60BD 17 0520 LBSR SETCKH 0165 60C0 5A DECB 0166 60C1 26 F7 BNE ISTT 0167 * 0168 *---------- cmd 0 ---------- 0169 60C3 SCMD0 EQU * 0170 * LDX #MCMD0 0171 * LBSR PSTRNG 0172 0173 60C3 17 0511 LBSR SETCKL 0174 60C6 C6 06 LDB #6 0175 60C8 8E 67B3 LDX #CMD0 0176 60CB A6 80 SC01 LDA ,X+ 0177 60CD 17 0496 LBSR SNDDAT 0178 60D0 5A DECB 0179 60D1 26 F8 BNE SC01 0180 *get response 0181 60D3 5F CLRB 0182 60D4 GR00 0183 60D4 5A DECB 0184 60D5 1027 01FD LBEQ SDERR 0185 60D9 17 04A6 LBSR GETDAT 0186 60DC B6 6007 LDA RESDAT 0187 * LBSR DSPBIN disp response 0188 60DF 81 01 CMPA #$01 0189 60E1 26 F1 BNE GR00 0190 * JSR CRLF 0191 * 0192 *---------- cmd 8 ---------- 0193 60E3 SCMD8 EQU * 0194 * LDX #MCMD8 0195 * LBSR PSTRNG 0196 0197 60E3 17 04F1 LBSR SETCKL 0198 60E6 86 FF LDA #$FF dummy cmd 0199 60E8 17 047B LBSR SNDDAT 0200 60EB C6 06 LDB #6 0201 60ED 8E 67CB LDX #CMD8 0202 60F0 A6 80 SC80 LDA ,X+ 0203 60F2 17 0471 LBSR SNDDAT 0204 60F5 5A DECB 0205 60F6 26 F8 BNE SC80 0206 *get response 0207 60F8 GR80 0208 60F8 17 0487 LBSR GETDAT 0209 60FB B6 6007 LDA RESDAT 0210 0211 60FE 17 0481 LBSR GETDAT 0212 6101 B6 6007 LDA RESDAT 0213 * LBSR DSPBIN disp response 0214 6104 81 01 CMPA #$01 0215 6106 26 F0 BNE GR80 0216 6108 C6 04 LDB #4 0217 610A 17 0475 GR81 LBSR GETDAT 0218 610D B6 6007 LDA RESDAT 0219 * LBSR DSPBIN disp response 0220 6110 5A DECB 0221 6111 26 F7 BNE GR81 0222 * JSR CRLF 0223 * 0224 *---------- cmd 58 ---------- 0225 6113 SCMD58 EQU * 0226 * LDX #MCMD58 0227 * LBSR PSTRNG 0228 0229 6113 17 04C1 LBSR SETCKL 0230 6116 86 FF LDA #$FF dummy cmd 0231 6118 17 044B LBSR SNDDAT 0232 611B C6 06 LDB #6 0233 611D 8E 67D1 LDX #CMD58 0234 6120 A6 80 SC581 LDA ,X+ 0235 6122 17 0441 LBSR SNDDAT 0236 6125 5A DECB 0237 6126 26 F8 BNE SC581 0238 *get response 0239 6128 GR580 0240 6128 17 0457 LBSR GETDAT 0241 612B B6 6007 LDA RESDAT 0242 * LBSR DSPBIN disp response 0243 612E 81 01 CMPA #$01 0244 6130 26 F6 BNE GR580 0245 6132 C6 04 GR581 LDB #4 0246 6134 17 044B GR582 LBSR GETDAT 0247 6137 B6 6007 LDA RESDAT 0248 * LBSR DSPBIN disp response 0249 613A 5A DECB 0250 613B 26 F7 BNE GR582 0251 613D RPT41 EQU * 0252 *---------- cmd 55 ---------- 0253 613D SCMD55 EQU * 0254 * LDX #MCMD55 0255 * LBSR PSTRNG 0256 0257 613D 17 0497 LBSR SETCKL 0258 6140 86 FF LDA #$FF dummy cmd 0259 6142 17 0421 LBSR SNDDAT 0260 6145 C6 06 LDB #6 0261 6147 8E 67D7 LDX #CMD55 0262 614A A6 80 SC551 LDA ,X+ 0263 614C 17 0417 LBSR SNDDAT 0264 614F 5A DECB 0265 6150 26 F8 BNE SC551 0266 *get response 0267 * CLRB 0268 6152 GR550 0269 * DECB 0270 * BEQ SDERR 0271 6152 17 042D LBSR GETDAT 0272 6155 B6 6007 LDA RESDAT 0273 * LBSR DSPBIN disp response 0274 6158 81 01 CMPA #$01 0275 615A 26 F6 BNE GR550 0276 0277 * JSR CRLF 0278 *---------- acmd 41 ---------- 0279 615C ASCMD41 EQU * 0280 * LDX #MCMD41 0281 * LBSR PSTRNG 0282 0283 615C 17 0478 LBSR SETCKL 0284 615F 86 FF LDA #$FF dummy cmd 0285 6161 17 0402 LBSR SNDDAT 0286 6164 C6 06 LDB #6 0287 6166 8E 67DD LDX #ACMD41 0288 6169 A6 80 ASC411 LDA ,X+ 0289 616B 17 03F8 LBSR SNDDAT 0290 616E 5A DECB 0291 616F 26 F8 BNE ASC411 0292 *get response 0293 6171 GR410 0294 6171 17 040E LBSR GETDAT 0295 6174 B6 6007 LDA RESDAT 0296 * LBSR DSPBIN disp response 0297 6177 17 0408 LBSR GETDAT 0298 617A B6 6007 LDA RESDAT 0299 * LBSR DSPBIN disp response 0300 617D 81 00 CMPA #$00 0301 617F 26 BC BNE RPT41 0302 * JSR CRLF 0303 0304 *---------- second cmd 58 ---------- 0305 6181 SCMD258 EQU * 0306 * LDX #MCMD58 0307 * LBSR PSTRNG 0308 0309 6181 17 0453 LBSR SETCKL 0310 6184 86 FF LDA #$FF dummy cmd 0311 6186 17 03DD LBSR SNDDAT 0312 6189 C6 06 LDB #6 0313 618B 8E 67D1 LDX #CMD58 0314 618E A6 80 SC2581 LDA ,X+ 0315 6190 17 03D3 LBSR SNDDAT 0316 6193 5A DECB 0317 6194 26 F8 BNE SC2581 0318 *get response 0319 6196 GR2580 0320 6196 17 03E9 LBSR GETDAT 0321 6199 B6 6007 LDA RESDAT 0322 * LBSR DSPBIN disp response 0323 619C 81 00 CMPA #$00 0324 619E 26 F6 BNE GR2580 0325 61A0 17 03DF LBSR GETDAT 0326 61A3 B6 6007 LDA RESDAT 0327 * LBSR DSPBIN disp response 0328 61A6 48 LSLA 0329 61A7 48 LSLA 0330 61A8 24 03 BCC GR2581 0331 61AA 7C 6008 INC SDHC if sdhc then 1 0332 61AD C6 03 GR2581 LDB #3 0333 61AF 17 03D0 GR2582 LBSR GETDAT 0334 61B2 B6 6007 LDA RESDAT 0335 * LBSR DSPBIN disp response 0336 61B5 5A DECB 0337 61B6 26 F7 BNE GR2582 0338 0339 61B8 8E 68A9 LDX #MSSD0 0340 61BB B6 6008 LDA SDHC 0341 61BE 27 03 BEQ SD1 0342 61C0 8E 68B5 LDX #MSSD1 0343 61C3 17 0501 SD1 LBSR PSTRNG 0344 0345 *---------- 0346 *set sct no of BPB 0347 61C6 17 0145 LBSR GETMBR 0348 61C9 8E 6FCA LDX #RWBUF+446+8+4 0349 61CC 108E 6009 LDY #SCTBPB 0350 61D0 C6 04 LDB #4 0351 61D2 A6 82 ILOP1 LDA ,-X 0352 61D4 A7 A0 STA ,Y+ 0353 61D6 5A DECB 0354 61D7 26 F9 BNE ILOP1 0355 0356 *set sct no of FAT#1 0357 61D9 17 0155 LBSR GETBPB 0358 61DC 8E 6009 LDX #SCTBPB 0359 61DF 108E 600D LDY #SCTFAT 0360 61E3 C6 04 LDB #4 0361 61E5 A6 80 ILOP2 LDA ,X+ 0362 61E7 A7 A0 STA ,Y+ 0363 61E9 5A DECB 0364 61EA 26 F9 BNE ILOP2 0365 0366 61EC 8E 600D LDX #SCTFAT 0367 61EF 108E 6E0E LDY #RWBUF+$0E for SD & SDHC 0368 61F3 17 04A0 LBSR ADD42 0369 0370 *set sct no of DIR 0371 61F6 8E 600D LDX #SCTFAT 0372 61F9 108E 6011 LDY #SCTDIR 0373 61FD C6 04 LDB #4 0374 61FF A6 80 ILOP3 LDA ,X+ 0375 6201 A7 A0 STA ,Y+ 0376 6203 5A DECB 0377 6204 26 F9 BNE ILOP3 0378 0379 6206 8E 6E16 LDX #RWBUF+$16 for SD 0380 6209 7D 6008 TST SDHC 0381 620C 27 03 BEQ SKP1 0382 620E C6 0E LDB #$24-$16 0383 6210 3A ABX for SDHC 0384 6211 1F 12 SKP1 TFR X,Y 0385 6213 8E 6011 LDX #SCTDIR 0386 6216 17 047D LBSR ADD42 0387 6219 17 047A LBSR ADD42 skip for FAT#2 0388 0389 *set sct per cluster 0390 621C 8E 6E0D LDX #RWBUF+$0D 0391 621F A6 84 LDA ,X 0392 6221 B7 6019 STA SCTPCL 0393 0394 *set sct no of CLUSTER#2 0395 6224 8E 6011 LDX #SCTDIR 0396 6227 108E 6015 LDY #SCTCLT 0397 622B C6 04 LDB #4 0398 622D A6 80 ILOP4 LDA ,X+ 0399 622F A7 A0 STA ,Y+ 0400 6231 5A DECB 0401 6232 26 F9 BNE ILOP4 0402 0403 6234 108E 6027 LDY #WK1+2 0404 6238 86 00 LDA #$00 0405 623A A7 A2 STA ,-Y 0406 623C 86 20 LDA #$20 for SD 0407 623E 7D 6008 TST SDHC 0408 6241 27 03 BEQ SKP2 0409 6243 B6 6019 LDA SCTPCL for SDHC 0410 6246 A7 A2 SKP2 STA ,-Y 0411 6248 8E 6015 LDX #SCTCLT 0412 624B 17 0448 LBSR ADD42 0413 *---------- 0414 624E 39 RTS 0415 0416 **************************************** 0417 * GET SD DATA ROUTINE 0418 * use CMD9 0419 **************************************** 0420 624F GETSD EQU * 0421 624F BD 6612 JSR CRLF 0422 6252 17 0382 LBSR SETCKL 0423 6255 C6 06 LDB #6 0424 6257 8E 67E3 LDX #CMD9 0425 625A A6 80 SC91 LDA ,X+ 0426 625C 17 0307 LBSR SNDDAT 0427 625F 5A DECB 0428 6260 26 F8 BNE SC91 0429 * JSR CRLF 0430 *get response 0431 6262 GR90 0432 6262 17 031D LBSR GETDAT 0433 6265 B6 6007 LDA RESDAT 0434 * LBSR DSPBIN disp response 0435 6268 81 00 CMPA #$00 0436 626A 26 F6 BNE GR90 0437 0438 * JSR CRLF 0439 626C BD 6612 JSR CRLF 0440 626F C6 14 LDB #16+1+2+1 fe,crcH,crcL,ff 0441 6271 17 030E GR91 LBSR GETDAT 0442 6274 B6 6007 LDA RESDAT 0443 6277 17 036F LBSR DSPBIN disp response 0444 627A 5A DECB 0445 627B 26 F4 BNE GR91 0446 627D BD 6612 JSR CRLF 0447 0448 *disp offset of MBR,FAT#1,DIR,CLUSTER#2 0449 6280 8E 6905 LDX #MSOFS 0450 6283 BD 66C7 JSR PSTRNG 0451 6286 8E 6917 LDX #MSBPB 0452 6289 BD 66C7 JSR PSTRNG 0453 628C 8E 6009 LDX #SCTBPB 0454 628F C6 04 LDB #4 0455 6291 A6 80 SCLOP1 LDA ,X+ 0456 6293 17 0353 LBSR DSPBIN 0457 6296 5A DECB 0458 6297 26 F8 BNE SCLOP1 0459 0460 6299 8E 6920 LDX #MSFAT 0461 629C BD 66C7 JSR PSTRNG 0462 629F 8E 600D LDX #SCTFAT 0463 62A2 C6 04 LDB #4 0464 62A4 A6 80 SCLOP2 LDA ,X+ 0465 62A6 17 0340 LBSR DSPBIN 0466 62A9 5A DECB 0467 62AA 26 F8 BNE SCLOP2 0468 0469 62AC 8E 6929 LDX #MSDIR 0470 62AF BD 66C7 JSR PSTRNG 0471 62B2 8E 6011 LDX #SCTDIR 0472 62B5 C6 04 LDB #4 0473 62B7 A6 80 SCLOP3 LDA ,X+ 0474 62B9 17 032D LBSR DSPBIN 0475 62BC 5A DECB 0476 62BD 26 F8 BNE SCLOP3 0477 0478 62BF 8E 6932 LDX #MSCL2 0479 62C2 BD 66C7 JSR PSTRNG 0480 62C5 8E 6015 LDX #SCTCLT 0481 62C8 C6 04 LDB #4 0482 62CA A6 80 SCLOP4 LDA ,X+ 0483 62CC 17 031A LBSR DSPBIN 0484 62CF 5A DECB 0485 62D0 26 F8 BNE SCLOP4 0486 62D2 BD 6612 JSR CRLF 0487 62D5 39 RTS 0488 0489 * 0490 62D6 SDERR EQU * 0491 62D6 8E 68DF LDX #MERR 0492 62D9 17 03EB LBSR PSTRNG 0493 62DC OKEND 0494 62DC 39 RTS return FM-7 0495 * 0496 **************************************** 0497 * READ ROUTINE 0498 * use CMD17 0499 * set sctno to $6005,6006 0500 * read data set to $6800-69FF 0501 **************************************** 0502 62DD SDRD EQU * 0503 62DD BD 6612 JSR CRLF 0504 62E0 17 02B9 LBSR INSCT 0505 62E3 17 0227 LBSR RD1SCT read 1 sct 0506 0507 *disp data 0508 62E6 BD 6612 JSR CRLF 0509 62E9 17 025C LBSR DSPBUF 0510 62EC BD 6612 JSR CRLF 0511 62EF 39 RTS 0512 0513 **************************************** 0514 * Read MBR & Disp parameter of BPB 0515 **************************************** 0516 62F0 DSPMBR EQU * 0517 62F0 BD 6612 JSR CRLF 0518 62F3 8D 19 BSR GETMBR 0519 0520 *disp BPB 0521 62F5 BD 6612 JSR CRLF 0522 62F8 8E 6FBE LDX #RWBUF+446 0523 62FB C6 10 GET1 LDB #16 0524 62FD A6 80 GET2 LDA ,X+ 0525 62FF 17 02E7 LBSR DSPBIN disp data 0526 6302 5A DECB 0527 6303 26 F8 BNE GET2 0528 6305 BD 6612 JSR CRLF 0529 6308 8C 6FFE CMPX #RWBUF+510 446+16*4 0530 630B 25 EE BLO GET1 0531 630D 39 RTS 0532 0533 *---------------------------------------- 0534 *read MBR 0535 630E GETMBR EQU * 0536 630E 8E 6003 LDX #SCTN0 0537 6311 C6 04 LDB #4 0538 6313 4F CLRA 0539 6314 A7 80 GPLOP STA ,X+ 0540 6316 5A DECB 0541 6317 26 FB BNE GPLOP 0542 6319 17 0288 LBSR SETSCT 0543 0544 631C 17 01EE LBSR RD1SCT read 1 sct 0545 631F 39 RTS 0546 0547 *---------------------------------------- 0548 *set sector no to SCTN0 0549 *from X,X+1,X+2,X+3 to SCTN0-SCTN3 0550 6320 SETSNO EQU * 0551 6320 108E 6003 LDY #SCTN0 0552 6324 C6 04 LDB #4 0553 6326 A6 80 SELOP LDA ,X+ 0554 6328 A7 A0 STA ,Y+ 0555 632A 5A DECB 0556 632B 26 F9 BNE SELOP 0557 632D 17 0274 LBSR SETSCT 0558 6330 39 RTS 0559 0560 *---------------------------------------- 0561 *read BPB 0562 6331 GETBPB EQU * 0563 6331 8D DB BSR GETMBR 0564 *set sct no of BPB 0565 6333 8E 6FCA LDX #RWBUF+446+8+4 0566 6336 108E 6003 LDY #SCTN0 0567 633A C6 04 LDB #4 0568 633C A6 82 GPLOP2 LDA ,-X 0569 633E A7 A0 STA ,Y+ 0570 6340 5A DECB 0571 6341 26 F9 BNE GPLOP2 0572 6343 17 025E LBSR SETSCT 0573 0574 6346 17 01C4 LBSR RD1SCT read 1 sct 0575 6349 39 RTS 0576 0577 **************************************** 0578 * Disp BPB(Bios Parameter Block) 0579 **************************************** 0580 634A DSPBPB EQU * 0581 634A 8E 6009 LDX #SCTBPB 0582 634D 8D D1 BSR SETSNO 0583 634F 17 01BB LBSR RD1SCT read 1 sct 0584 0585 *disp BPB 0586 6352 BD 6612 JSR CRLF 0587 6355 17 01F0 LBSR DSPBUF 0588 6358 BD 6612 JSR CRLF 0589 635B 39 RTS 0590 0591 **************************************** 0592 * Disp FAT#1 0593 **************************************** 0594 635C DSPFAT EQU * 0595 635C 8E 600D LDX #SCTFAT 0596 635F 8D BF BSR SETSNO 0597 6361 17 01A9 LBSR RD1SCT read 1 sct 0598 0599 *disp FAT 0600 6364 BD 6612 JSR CRLF 0601 6367 17 01DE LBSR DSPBUF 0602 636A BD 6612 JSR CRLF 0603 636D 39 RTS 0604 0605 **************************************** 0606 * Disp Directory 0607 **************************************** 0608 636E DSPDIR EQU * 0609 636E 8E 6011 LDX #SCTDIR 0610 6371 8D AD BSR SETSNO 0611 6373 17 0197 LBSR RD1SCT read 1 sct 0612 0613 **disp DIR 0614 * JSR CRLF 0615 * LBSR DSPBUF 0616 * JSR CRLF 0617 * 0618 *disp FILE name 0619 6376 BD 6612 JSR CRLF 0620 6379 BD 6612 JSR CRLF 0621 637C 8E 6E60 LDX #RWBUF+96 skip top data 0622 637F 7F 6027 CLR WK2 counter 0623 6382 A6 84 DSPFL1 LDA ,X 0624 6384 27 6D BEQ DSPEND 0625 6386 81 E5 CMPA #$E5 delete mark? 0626 6388 26 05 BNE DSPFL2 0627 638A 30 88 20 LEAX 32,X 0628 638D 20 F3 BRA DSPFL1 0629 0630 638F 7C 6027 DSPFL2 INC WK2 0631 6392 B6 6027 LDA WK2 0632 6395 17 0251 LBSR DSPBIN disp counter 0633 6398 C6 08 LDB #8 0634 639A A6 80 DSPFL3 LDA ,X+ 0635 639C BD FBBB JSR OUTCHA 0636 639F 5A DECB 0637 63A0 26 F8 BNE DSPFL3 0638 63A2 86 2E LDA #'. 0639 63A4 BD FBBB JSR OUTCHA 0640 63A7 C6 03 LDB #3 0641 63A9 A6 80 DSPFL4 LDA ,X+ 0642 63AB BD FBBB JSR OUTCHA 0643 63AE 5A DECB 0644 63AF 26 F8 BNE DSPFL4 0645 63B1 86 20 LDA #' 0646 63B3 BD FBBB JSR OUTCHA 0647 63B6 BD FBBB JSR OUTCHA 0648 0649 *get FILE time data 0650 63B9 30 07 LEAX 7,X 0651 63BB EC 81 LDD ,X++ 0652 63BD FD 6025 STD WK1 0653 0654 *get CLUSTER(H) data 0655 63C0 EC 81 LDD ,X++ 0656 63C2 1E 89 EXG A,B 0657 63C4 FD 6021 STD CLSTH 0658 63C7 30 04 LEAX 4,X 0659 63C9 EC 81 LDD ,X++ 0660 63CB 1E 89 EXG A,B 0661 63CD FD 6023 STD CLSTL 0662 0663 *get FILE size data 0664 63D0 108E 6021 LDY #WFSIZ+4 0665 63D4 C6 04 LDB #4 0666 63D6 A6 80 DSPC1 LDA ,X+ 0667 63D8 A7 A2 STA ,-Y 0668 63DA 5A DECB 0669 63DB 26 F9 BNE DSPC1 0670 0671 *disp FILE size 0672 63DD 86 20 LDA #' 0673 63DF BD FBBB JSR OUTCHA 0674 63E2 17 0353 LBSR DSPSIZ disp FILE size 0675 0676 0677 *disp FILE time 0678 63E5 FC 6025 LDD WK1 0679 63E8 17 02EC LBSR DSPYMD disp MM-DD-YY 0680 0681 *disp CLUSTER(H,L) 0682 63EB 17 03A0 LBSR DSPCLS 0683 0684 63EE BD 6612 JSR CRLF 0685 63F1 20 8F BRA DSPFL1 0686 * 0687 63F3 39 DSPEND RTS 0688 0689 **************************************** 0690 * Load FILE 0691 **************************************** 0692 63F4 LDFILE EQU * 0693 63F4 17 FF77 LBSR DSPDIR 0694 63F7 8E 6942 LDX #MSINFL 0695 63FA BD 66C7 JSR PSTRNG 0696 63FD BD FBB8 JSR INCHA file no 0697 6400 80 30 SUBA #$30 to binary 0698 0699 6402 8E 6E60 LDX #RWBUF+96 skip top data 0700 6405 1F 89 TFR A,B 0701 0702 6407 A6 84 LDLOP LDA ,X 0703 6409 81 E5 CMPA #$E5 delete mark? 0704 640B 26 05 BNE LD1 0705 640D 30 88 20 LEAX 32,X skip 0706 6410 20 F5 BRA LDLOP 0707 6412 5A LD1 DECB 0708 6413 27 05 BEQ LD2 0709 6415 30 88 20 LEAX 32,X 0710 6418 20 ED BRA LDLOP 0711 *hit file, get cluster no 0712 641A EC 88 14 LD2 LDD $14,X 0713 641D 1E 89 EXG A,B 0714 641F FD 6021 STD CLSTH 0715 6422 EC 88 1A LDD $1A,X 0716 6425 1E 89 EXG A,B 0717 6427 FD 6023 STD CLSTL 0718 *get sct no 0719 642A C0 02 SUBB #2 sub top cluseter no 0720 642C 7D 6008 TST SDHC SD:0,SDHC:1 0721 642F 27 01 BEQ LD3 0722 6431 5A DECB 0723 0724 6432 34 04 LD3 PSHS B 0725 6434 8E 6015 LDX #SCTCLT 0726 6437 108E 6025 LDY #WK1 0727 643B C6 04 LDB #4 0728 643D A6 80 LD4 LDA ,X+ 0729 643F A7 A0 STA ,Y+ 0730 6441 5A DECB 0731 6442 26 F9 BNE LD4 0732 6444 35 04 PULS B 0733 0734 6446 8E 6025 LDX #WK1 0735 6449 A6 03 LD5 LDA 3,X 0736 644B 8B 40 ADDA #$40 0737 644D A7 03 STA 3,X 0738 644F 24 06 BCC LD51 0739 6451 A6 02 LDA 2,X 0740 6453 8B 01 ADDA #1 0741 6455 A7 02 STA 2,X 0742 6457 24 06 LD51 BCC LD52 0743 6459 A6 01 LDA 1,X 0744 645B 8B 01 ADDA #1 0745 645D A7 01 STA 1,X 0746 645F 24 06 LD52 BCC LD53 0747 6461 A6 84 LDA ,X 0748 6463 8B 01 ADDA #1 0749 6465 A7 84 STA ,X 0750 6467 5A LD53 DECB 0751 6468 26 DF BNE LD5 0752 0753 646A 8E 6025 LDX #WK1 0754 646D 108E 6003 LDY #SCTN0 0755 6471 C6 04 LDB #4 0756 6473 A6 80 LD6 LDA ,X+ 0757 6475 A7 A0 STA ,Y+ 0758 6477 5A DECB 0759 6478 26 F9 BNE LD6 0760 647A 17 0127 LBSR SETSCT 0761 647D 17 008D LBSR RD1SCT read 1 sct 0762 0763 * LDX #SCTCLT 0764 * LBSR SETSNO 0765 * LBSR RD1SCT read 1 sct 0766 * 0767 **disp CLUSTER#2 0768 6480 BD 6612 JSR CRLF 0769 6483 17 00C2 LBSR DSPBUF 0770 6486 BD 6612 JSR CRLF 0771 6489 39 RTS 0772 0773 **************************************** 0774 * WRITE ROUTINE 0775 * use CMD24 0776 * set sctno to $6005,6006 0777 * write data from $6A00-6BFF 0778 **************************************** 0779 648A SDWRT EQU * 0780 648A 8E 689D LDX #MSWROK 0781 648D 17 0237 LBSR PSTRNG 0782 6490 BD FBB8 JSR INCHA 0783 6493 84 DF ANDA #$DF 0784 6495 81 59 CMPA #'Y 0785 6497 27 01 BEQ SDWR1 0786 6499 39 RTS 0787 649A BD 6612 SDWR1 JSR CRLF 0788 649D 17 00FC LBSR INSCT *input SCT No 0789 *copy sct no to cmd param 0790 64A0 8E 6003 LDX #SCTN0 0791 64A3 108E 67C6 LDY #CMD24+1 0792 64A7 C6 04 LDB #4 0793 64A9 A6 80 CPY2 LDA ,X+ 0794 64AB A7 A0 STA ,Y+ 0795 64AD 5A DECB 0796 64AE 26 F9 BNE CPY2 0797 *send cmd 0798 64B0 17 0124 LBSR SETCKL 0799 64B3 C6 06 LDB #6 0800 64B5 8E 67C5 LDX #CMD24 0801 64B8 A6 80 SDW1 LDA ,X+ 0802 64BA 17 012C LBSR DSPBIN disp response 0803 64BD 17 00A6 LBSR SNDDAT 0804 64C0 5A DECB 0805 64C1 26 F5 BNE SDW1 0806 *get cmd response 0807 64C3 SDW2 0808 64C3 17 00BC LBSR GETDAT 0809 64C6 B6 6007 LDA RESDAT 0810 64C9 17 011D LBSR DSPBIN disp response 0811 64CC 81 00 CMPA #$00 0812 64CE 26 F3 BNE SDW2 0813 *1byte skip 0814 64D0 86 FF LDA #$FF 0815 64D2 17 0091 LBSR SNDDAT 1byte skip 0816 64D5 BD 6612 JSR CRLF 0817 0818 *send data packet 0819 64D8 8E 6E00 LDX #RWBUF --temp buf 0820 64DB 108E 0200 LDY #512 0821 *send data token 0822 64DF 86 FE LDA #$FE 0823 64E1 17 0082 LBSR SNDDAT data token 0824 64E4 A6 80 SNDDT1 LDA ,X+ 0825 64E6 8D 7E BSR SNDDAT 0826 64E8 31 3F LEAY -1,Y 0827 64EA 26 F8 BNE SNDDT1 0828 0829 64EC 86 FF LDA #$FF 0830 64EE 8D 76 BSR SNDDAT crcH 0831 64F0 8D 74 BSR SNDDAT crcL 0832 *get data response 0833 64F2 CKRS 0834 64F2 17 008D LBSR GETDAT 0835 64F5 B6 6007 LDA RESDAT 0836 64F8 17 00EE LBSR DSPBIN disp response 0837 64FB 81 E5 CMPA #$E5 data response? 0838 64FD 26 F3 BNE CKRS 0839 *wait until busy 0840 64FF BUSY 0841 64FF 17 0080 LBSR GETDAT 0842 6502 B6 6007 LDA RESDAT 0843 6505 17 00E1 LBSR DSPBIN disp response 0844 6508 81 FF CMPA #$FF 0845 650A 26 F3 BNE BUSY 0846 650C 39 RTS 0847 0848 *------------------------------ 0849 *read 1 sct 0850 *------------------------------ 0851 650D RD1SCT EQU * 0852 *copy sct no to cmd param 0853 650D 8E 6003 LDX #SCTN0 0854 6510 108E 67C0 LDY #CMD17+1 0855 6514 C6 04 LDB #4 0856 6516 A6 80 CPY1 LDA ,X+ 0857 6518 A7 A0 STA ,Y+ 0858 651A 5A DECB 0859 651B 26 F9 BNE CPY1 0860 *send cmd 0861 651D 17 00B7 LBSR SETCKL 0862 6520 C6 06 LDB #6 0863 6522 8E 67BF LDX #CMD17 0864 6525 A6 80 RD1 LDA ,X+ 0865 6527 8D 3D BSR SNDDAT 0866 6529 5A DECB 0867 652A 26 F9 BNE RD1 0868 *get response 0869 652C RD2 0870 652C 8D 54 BSR GETDAT 0871 652E B6 6007 LDA RESDAT 0872 6531 81 FE CMPA #$FE token? 0873 6533 26 F7 BNE RD2 0874 0875 *get data 0876 * JSR CRLF 0877 6535 8E 6E00 LDX #RWBUF --temp buf 0878 6538 108E 0200 LDY #512 0879 653C RD3 0880 653C 8D 44 BSR GETDAT 0881 653E B6 6007 LDA RESDAT 0882 6541 A7 80 STA ,X+ save buf 0883 6543 31 3F LEAY -1,Y 0884 6545 26 F5 BNE RD3 0885 6547 39 RTS 0886 0887 *------------------------------ 0888 *disp data 0889 6548 DSPBUF EQU * 0890 6548 BD 6612 JSR CRLF 0891 654B 8E 6E00 LDX #RWBUF --temp buf 0892 654E 108E 0200 LDY #512 0893 6552 C6 20 DSPB1 LDB #32 0894 6554 DSPB2 0895 6554 A6 80 LDA ,X+ save buf 0896 6556 17 0090 LBSR DSPBIN disp data 0897 6559 31 3F LEAY -1,Y 0898 655B 27 08 BEQ DSPB3 0899 655D 5A DECB 0900 655E 26 F4 BNE DSPB2 0901 6560 BD 6612 JSR CRLF 0902 6563 20 ED BRA DSPB1 0903 6565 39 DSPB3 RTS 0904 0905 *------------------------------ 0906 *send data 0907 6566 SNDDAT EQU * 0908 6566 34 06 PSHS A,B 0909 6568 7F 6007 CLR RESDAT 0910 656B C6 08 LDB #8 0911 656D 34 02 SNDD1 PSHS A 0912 656F 84 FC ANDA #$FC 0913 6571 8A 02 ORA #$02 miso:b1=H(for PIA),cs:b0=L 0914 6573 B7 FD9E STA PBDAT send data 0915 6576 8D 5F BSR SETCKL 0916 6578 35 02 PULS A 0917 657A 48 LSLA 0918 657B 8D 63 BSR SETCKH 0919 657D 5A DECB 0920 657E 26 ED BNE SNDD1 0921 6580 35 86 PULS A,B,PC 0922 0923 *get data 0924 6582 GETDAT EQU * 0925 6582 34 06 PSHS A,B 0926 6584 C6 08 LDB #8 0927 6586 8D 4F GETD1 BSR SETCKL 0928 6588 12 NOP 0929 6589 12 NOP 0930 658A 12 NOP 0931 658B 8D 53 BSR SETCKH 0932 658D B6 FD9E LDA PBDAT get response 0933 6590 44 LSRA 0934 6591 44 LSRA b1--C 0935 6592 79 6007 ROL RESDAT C--b0 0936 6595 5A DECB 0937 6596 26 EE BNE GETD1 0938 6598 8D 3D BSR SETCKL 0939 659A 35 86 PULS A,B,PC 0940 * 0941 *------------------------------ 0942 *input SCT No 0943 659C INSCT EQU * 0944 659C 8E 6895 LDX #MSSCT 0945 659F 17 0125 LBSR PSTRNG 0946 65A2 8D 79 BSR GET8CH get 8chr, convert 4bin 0947 0948 65A4 SETSCT EQU * 0949 65A4 7D 6008 TST SDHC 0950 65A7 26 1D BNE CALCHC 0951 *SD card 0952 65A9 C6 03 LDB #3 0953 65AB 8E 6004 LDX #SCTN1 0954 65AE 108E 6003 LDY #SCTN0 0955 65B2 A6 80 SFT1 LDA ,X+ 0956 65B4 A7 A0 STA ,Y+ 0957 65B6 5A DECB 0958 65B7 26 F9 BNE SFT1 0959 65B9 7F 6006 CLR SCTN3 0960 *calc top adrs of sct 0961 65BC CALCSD EQU * 0962 65BC 78 6006 LSL SCTN3 0963 65BF 79 6005 ROL SCTN2 0964 65C2 79 6004 ROL SCTN1 0965 65C5 39 RTS 0966 0967 *SDHC card 0968 *calc top adrs of sct 0969 65C6 CALCHC EQU * 0970 65C6 8E 6003 LDX #SCTN0 0971 65C9 108E 67C0 LDY #CMD17+1 0972 65CD C6 04 LDB #4 0973 65CF A6 80 CALCH1 LDA ,X+ 0974 65D1 A7 A0 STA ,Y+ 0975 65D3 5A DECB 0976 65D4 26 F9 BNE CALCH1 0977 65D6 39 RTS 0978 0979 * 0980 *set sck:L 0981 65D7 SETCKL EQU * 0982 65D7 34 02 PSHS A 0983 65D9 86 34 LDA #$34 ca2=L 0984 65DB B7 FD9F STA PBCTL 0985 65DE 35 82 PULS A,PC 0986 0987 *set sck:H 0988 65E0 SETCKH EQU * 0989 65E0 34 02 PSHS A 0990 65E2 86 3C LDA #$3C ca2=H 0991 65E4 B7 FD9F STA PBCTL 0992 65E7 35 82 PULS A,PC 0993 0994 *binary(A)--ascii(A)(B) 0995 65E9 DSPBIN EQU * 0996 65E9 34 06 PSHS A,B 0997 65EB 1F 89 TFR A,B 0998 65ED 44 LSRA 0999 65EE 44 LSRA 1000 65EF 44 LSRA 1001 65F0 44 LSRA 1002 65F1 8A 30 ORA #$30 1003 65F3 C4 0F ANDB #$0F 1004 65F5 CA 30 ORB #$30 1005 65F7 81 39 CMPA #$39 1006 65F9 23 02 BLS BI21 1007 65FB 8B 07 ADDA #$07 1008 65FD C1 39 BI21 CMPB #$39 1009 65FF 23 02 BLS BI22 1010 6601 CB 07 ADDB #$07 1011 6603 BD FBBB BI22 JSR OUTCHA 1012 6606 1F 98 TFR B,A 1013 6608 BD FBBB JSR OUTCHA 1014 660B 86 20 LDA #$20 1015 660D BD FBBB JSR OUTCHA 1016 6610 35 86 PULS A,B,PC 1017 1018 *crlf 1019 6612 CRLF EQU * 1020 6612 86 0D LDA #$0D 1021 6614 BD FBBB JSR OUTCHA 1022 6617 86 0A LDA #$0A 1023 6619 BD FBBB JSR OUTCHA 1024 661C 39 RTS 1025 1026 * 1027 661D GET8CH EQU * 1028 *input chr 1029 661D 8E 6956 LDX #INPBUF 1030 6620 5F CLRB 1031 6621 BD FBB8 CLOP JSR INCHA 1032 6624 81 0D CMPA #$0D 1033 6626 27 07 BEQ INEND 1034 6628 A7 85 STA B,X 1035 662A 5C INCB 1036 662B C1 08 CMPB #8 1037 662D 25 F2 BLO CLOP 1038 1039 662F INEND 1040 *shift 1041 662F 5D TSTB 1042 6630 27 11 BEQ CL1 1043 6632 8E 6956 LDX #INPBUF 1044 6635 3A ABX 1045 6636 108E 695E LDY #INPBUF+8 1046 663A 34 04 PSHS B 1047 663C A6 82 SFLOP LDA ,-X 1048 663E A7 A2 STA ,-Y 1049 6640 5A DECB 1050 6641 26 F9 BNE SFLOP 1051 *clr 1052 6643 C6 08 CL1 LDB #8 1053 6645 E0 E0 SUBB ,S+ 1054 6647 27 0A BEQ CLEND 1055 6649 8E 6956 LDX #INPBUF 1056 664C 86 30 LDA #'0 1057 664E A7 80 CLLOP STA ,X+ 1058 6650 5A DECB 1059 6651 26 FB BNE CLLOP 1060 6653 CLEND 1061 1062 *convert to bin 1063 6653 C6 04 LDB #4 1064 6655 8E 6956 LDX #INPBUF 1065 6658 108E 6003 LDY #SCTN0 1066 665C CVT1 1067 665C A6 80 LDA ,X+ 1068 665E 8D 1E BSR CVBIN 1069 6660 25 16 BCS EREND1 1070 6662 48 LSLA 1071 6663 48 LSLA 1072 6664 48 LSLA 1073 6665 48 LSLA 1074 6666 34 02 PSHS A 1075 6668 A6 80 LDA ,X+ 1076 666A 8D 12 BSR CVBIN 1077 666C 25 08 BCS EREND0 1078 666E AB E0 ADDA ,S+ 1079 6670 A7 A0 STA ,Y+ 1080 6672 5A DECB 1081 6673 26 E7 BNE CVT1 1082 6675 39 RTS 1083 1084 6676 35 02 EREND0 PULS A 1085 6678 8E 68F6 EREND1 LDX #MSERR 1086 667B 8D 4A BSR PSTRNG 1087 667D 39 EEND RTS 1088 1089 *-------------------- 1090 *ascii -- bin 1091 667E CVBIN EQU * 1092 667E 80 30 SUBA #'0 1093 6680 2B 11 BMI CVERR 1094 6682 81 09 CMPA #9 1095 6684 23 0A BLS CVBEND 1096 6686 81 11 CMPA #$11 1097 6688 25 09 BLO CVERR 1098 668A 81 16 CMPA #$16 1099 668C 22 05 BHI CVERR 1100 668E 80 07 SUBA #7 1101 6690 CVBEND 1102 6690 1C FE ANDCC #$FE reset C 1103 6692 39 RTS 1104 6693 1A 01 CVERR ORCC #$01 set C 1105 6695 39 RTS 1106 1107 *-------------------- 1108 *add 2bytes to 4bytes 1109 * X,X+1,X+2,X+3 + Y,Y+1 1110 * data X is big endian 1111 * data Y is little endian 1112 6696 ADD42 EQU * 1113 6696 34 36 PSHS A,B,X,Y 1114 6698 32 7C LEAS -4,S 1115 669A C6 04 LDB #4 1116 669C A6 80 AD1 LDA ,X+ 1117 669E A7 E0 STA ,S+ 1118 66A0 5A DECB 1119 66A1 26 F9 BNE AD1 1120 1121 *add (lower) 1122 66A3 A6 A0 LDA ,Y+ 1123 66A5 AB E2 ADDA ,-S 1124 66A7 A7 E4 STA ,S 1125 66A9 24 02 BCC AD2 1126 66AB 6C 7F INC -1,S 1127 *add (upper) 1128 66AD A6 A4 AD2 LDA ,Y 1129 66AF AB E2 ADDA ,-S 1130 66B1 A7 E4 STA ,S 1131 66B3 24 02 BCC AD3 1132 66B5 6C 7F INC -1,S 1133 66B7 30 1C AD3 LEAX -4,X 1134 66B9 32 7E LEAS -2,S 1135 66BB C6 04 LDB #4 1136 66BD A6 E0 AD4 LDA ,S+ 1137 66BF A7 80 STA ,X+ 1138 66C1 5A DECB 1139 66C2 26 F9 BNE AD4 1140 66C4 35 36 PULS A,B,X,Y 1141 66C6 39 RTS 1142 1143 *-------------------- 1144 * pstring 1145 66C7 PSTRNG EQU * 1146 66C7 34 02 PSHS A 1147 66C9 A6 80 PSLOP LDA ,X+ 1148 66CB 81 04 CMPA #4 1149 66CD 27 05 BEQ PSEND 1150 66CF BD FBBB JSR OUTCHA 1151 66D2 20 F5 BRA PSLOP 1152 66D4 35 02 PSEND PULS A 1153 66D6 39 RTS 1154 1155 *-------------------- 1156 *disp MM-DD-YY 1157 *indata A(Low),B(High) 1158 66D7 DSPYMD EQU * 1159 66D7 1E 89 EXG A,B 1160 66D9 34 10 PSHS X 1161 66DB 34 06 PSHS A,B 1162 66DD C4 E0 ANDB #$E0 1163 66DF 54 LSRB 1164 66E0 54 LSRB 1165 66E1 54 LSRB 1166 66E2 54 LSRB 1167 66E3 54 LSRB 1168 66E4 47 ASRA 1169 66E5 24 02 BCC DYMD1 1170 66E7 CB 08 ADDB #8 1171 66E9 F7 601A DYMD1 STB WMDY MM 1172 66EC 35 06 PULS A,B 1173 66EE 34 04 PSHS B 1174 66F0 C4 1F ANDB #$1F 1175 66F2 F7 601B STB WMDY+1 DD 1176 66F5 35 04 PULS B 1177 1178 66F7 44 LSRA 1179 * ASLB 1180 * BCC DYMD2 1181 * INCA 1182 66F8 DYMD2 1183 66F8 80 14 SUBA #20 A+1980-2000 1184 66FA B7 601C STA WMDY+2 YY 1185 1186 *disp MM-DD-YY 1187 66FD 86 20 LDA #' 1188 66FF BD FBBB JSR OUTCHA 1189 6702 8E 601A LDX #WMDY 1190 6705 A6 80 LDA ,X+ 1191 6707 8D 14 BSR DB2ASC MM 1192 6709 86 2D LDA #'- 1193 670B BD FBBB JSR OUTCHA 1194 670E A6 80 LDA ,X+ 1195 6710 8D 0B BSR DB2ASC DD 1196 6712 86 2D LDA #'- 1197 6714 BD FBBB JSR OUTCHA 1198 6717 A6 80 LDA ,X+ 1199 6719 8D 02 BSR DB2ASC YY 1200 671B 35 90 PULS X,PC 1201 1202 * 1203 *---------- 1204 *(A:BIN)--ASCII 1205 671D DB2ASC EQU * 1206 671D 34 06 PSHS A,B 1207 671F 1F 89 TFR A,B 1208 6721 86 30 LDA #$30 1209 6723 C1 0A DBLOP CMPB #10 1210 6725 25 05 BLO DB2 1211 6727 C0 0A SUBB #10 1212 6729 4C INCA 1213 672A 20 F7 BRA DBLOP 1214 672C BD FBBB DB2 JSR OUTCHA 1215 672F 1F 98 TFR B,A 1216 6731 8B 30 ADDA #$30 1217 6733 BD FBBB JSR OUTCHA 1218 6736 35 86 PULS A,B,PC 1219 1220 *disp FILE size 1221 6738 DSPSIZ EQU * 1222 6738 34 10 PSHS X 1223 673A BE 601D LDX WFSIZ 1224 673D 27 12 BEQ DSS1 if 64k over? 1225 673F 86 2D LDA #'- 1226 6741 BD FBBB JSR OUTCHA 1227 6744 BD FBBB JSR OUTCHA 1228 6747 BD FBBB JSR OUTCHA 1229 674A 86 6B LDA #'k 1230 674C BD FBBB JSR OUTCHA 1231 674F 20 3B BRA DSEND 1232 6751 DSS1 1233 6751 B6 601F LDA WFSIZ+2 1234 6754 81 64 CMPA #100 1235 6756 23 12 BLS DSS13 1236 6758 1F 89 TFR A,B 1237 675A 86 30 LDA #$30 1238 675C C1 64 DSLOP1 CMPB #100 1239 675E 25 05 BLO DSS12 1240 6760 C0 64 SUBB #100 1241 6762 4C INCA 1242 6763 20 F7 BRA DSLOP1 1243 6765 BD FBBB DSS12 JSR OUTCHA 1244 6768 20 05 BRA DSS14 1245 1246 676A 86 20 DSS13 LDA #' 1247 676C BD FBBB JSR OUTCHA 1248 676F 86 30 DSS14 LDA #$30 1249 6771 C1 0A DSLOP2 CMPB #10 1250 6773 25 05 BLO DSS2 1251 6775 C0 0A SUBB #10 1252 6777 4C INCA 1253 6778 20 F7 BRA DSLOP2 1254 677A 81 30 DSS2 CMPA #$30 1255 677C 26 01 BNE DSS3 1256 677E 4C INCA 1257 677F BD FBBB DSS3 JSR OUTCHA 1258 6782 86 6B LDA #'k 1259 6784 BD FBBB JSR OUTCHA 1260 6787 86 20 LDA #' 1261 6789 BD FBBB JSR OUTCHA 1262 678C 35 90 DSEND PULS X,PC 1263 1264 *---------- 1265 678E DSPCLS EQU * 1266 678E 34 10 PSHS X 1267 6790 86 20 LDA #' 1268 6792 BD FBBB JSR OUTCHA 1269 6795 8E 6021 LDX #CLSTH 1270 6798 C6 02 LDB #2 1271 679A A6 80 DCLOP1 LDA ,X+ 1272 679C 17 FF7E LBSR DB2ASC 1273 679F 5A DECB 1274 67A0 26 F8 BNE DCLOP1 1275 67A2 86 20 LDA #' 1276 67A4 BD FBBB JSR OUTCHA 1277 67A7 C6 02 LDB #2 1278 67A9 A6 80 DCLOP2 LDA ,X+ 1279 67AB 17 FF6F LBSR DB2ASC 1280 67AE 5A DECB 1281 67AF 26 F8 BNE DCLOP2 1282 67B1 35 90 PULS X,PC 1283 1284 ************************************************** 1285 *========== parameter ========== 1286 67B3 40 CMD0 FCB $40,$00,$00,$00,$00,$95 '@ 1287 67B9 41 CMD1 FCB $41,$00,$00,$00,$00,$FF 'A 1288 67BF 51 CMD17 FCB $51,$00,$00,$00,$00,$FF 'Q 1289 67C5 58 CMD24 FCB $58,$00,$00,$00,$00,$FF 'X 1290 67CB 48 CMD8 FCB $48,$00,$00,$01,$AA,$87 'H 1291 67D1 7A CMD58 FCB $7A,$00,$00,$00,$00,$FF 'z 1292 67D7 77 CMD55 FCB $77,$00,$00,$00,$00,$FF 'w 1293 67DD 69 ACMD41 FCB $69,$40,$FF,$80,$00,$FF 'i 1294 67E3 49 CMD9 FCB $49,$00,$00,$00,$00,$FF 'I 1295 * 1296 67E9 43 MCMD0 FCC /CMD0/,$D,$A 1297 67EF 04 FCB 4 1298 67F0 43 MCMD8 FCC /CMD8/,$D,$A 1299 67F6 04 FCB 4 1300 67F7 43 MCMD58 FCC /CMD58/,$D,$A 1301 67FE 04 FCB 4 1302 67FF 43 MCMD55 FCC /CMD55/,$D,$A 1303 6806 04 FCB 4 1304 6807 41 MCMD41 FCC /ACMD41/,$D,$A 1305 680F 04 FCB 4 1306 6810 43 MCMD9 FCC /CMD9/,$D,$A 1307 6816 04 FCB 4 1308 * 1309 6817 0D MSMENU1 FCC $0D,$0A,/1:Read Sct, 2:Write Sct, 3:Get SD data, 4:SD Init, 5:Disp MBR, / 1310 6858 04 FCB 4 1311 6859 0D MSMENU2 FCC $0D,$0A,/6:Disp BPB, 7:Disp FAT, 8:Disp DIR, 9:Load FILE, 0:End : / 1312 6894 04 FCB 4 1313 6895 53 MSSCT FCC /SctNo: / 1314 689C 04 FCB 4 1315 689D 57 MSWROK FCC /Write OK?: / 1316 68A8 04 FCB 4 1317 68A9 0D MSSD0 FCC $0D,$0A,/SD Card/,$0D,$0A 1318 68B4 04 FCB 4 1319 68B5 0D MSSD1 FCC $0D,$0A,/SDHC Card/,$0D,$0A 1320 68C2 04 FCB 4 1321 68C3 0D MSINIT FCC $0D,$0A,$0D,$0A,/SD Card initializing.../ 1322 68DE 04 FCB 4 1323 68DF 53 MERR FCC /SD Initialize error!/,$0D,$0A 1324 68F5 04 FCB 4 1325 68F6 49 MSERR FCC /Input error!/,$0D,$0A 1326 6904 04 FCB 4 1327 6905 0D MSOFS FCC $0D,$0A,/Sector no is:/,$0D,$0A 1328 6916 04 FCB 4 1329 6917 0D MSBPB FCC $0D,$0A,/ BPB: / 1330 691F 04 FCB 4 1331 6920 0D MSFAT FCC $0D,$0A,/ FAT: / 1332 6928 04 FCB 4 1333 6929 0D MSDIR FCC $0D,$0A,/ DIR: / 1334 6931 04 FCB 4 1335 6932 0D MSCL2 FCC $0D,$0A,/ 1stCLUSTER: / 1336 6941 04 FCB 4 1337 6942 0D MSINFL FCC $0D,$0A,/Select File No : / 1338 6955 04 FCB 4 1339 1340 ************************************************** 1341 6956 FF INPBUF RMB 8 1342 1343 END START 0 error(s), 0 warning(s) is detected. Label address ACMD41 67DD AD1 669C AD2 66AD AD3 66B7 AD4 66BD ADD42 6696 ASC411 6169 ASCMD41 615C BI21 65FD BI22 6603 BUSY 64FF CALCH1 65CF CALCHC 65C6 CALCSD 65BC CKRS 64F2 CL1 6643 CLEND 6653 CLLOP 664E CLOP 6621 CLSTH 6021 CLSTL 6023 CMD0 67B3 CMD1 67B9 CMD17 67BF CMD24 67C5 CMD55 67D7 CMD58 67D1 CMD8 67CB CMD9 67E3 CPY1 6516 CPY2 64A9 CRLF 6612 CVBEND 6690 CVBIN 667E CVERR 6693 CVT1 665C DB2 672C DB2ASC 671D DBLOP 6723 DCLOP1 679A DCLOP2 67A9 DSEND 678C DSLOP1 675C DSLOP2 6771 DSPB1 6552 DSPB2 6554 DSPB3 6565 DSPBIN 65E9 DSPBPB 634A DSPBUF 6548 DSPC1 63D6 DSPCLS 678E DSPDIR 636E DSPEND 63F3 DSPFAT 635C DSPFL1 6382 DSPFL2 638F DSPFL3 639A DSPFL4 63A9 DSPMBR 62F0 DSPSIZ 6738 DSPYMD 66D7 DSS1 6751 DSS12 6765 DSS13 676A DSS14 676F DSS2 677A DSS3 677F DYMD1 66E9 DYMD2 66F8 EEND 667D EREND0 6676 EREND1 6678 GET1 62FB GET2 62FD GET8CH 661D GETBPB 6331 GETD1 6586 GETDAT 6582 GETMBR 630E GETSD 624F GPLOP 6314 GPLOP2 633C GR00 60D4 GR2580 6196 GR2581 61AD GR2582 61AF GR410 6171 GR550 6152 GR580 6128 GR581 6132 GR582 6134 GR80 60F8 GR81 610A GR90 6262 GR91 6271 ILOP1 61D2 ILOP2 61E5 ILOP3 61FF ILOP4 622D INCHA FBB8 INEND 662F INIT 604D INPBUF 6956 INSCT 659C ISTT 60BA LD1 6412 LD2 641A LD3 6432 LD4 643D LD5 6449 LD51 6457 LD52 645F LD53 6467 LD6 6473 LDFILE 63F4 LDLOP 6407 MAIN 6029 MCMD0 67E9 MCMD41 6807 MCMD55 67FF MCMD58 67F7 MCMD8 67F0 MCMD9 6810 MEN1 6066 MEN2 606E MEN3 6076 MEN4 607E MEN5 6085 MEN6 608D MEN7 6095 MEN8 609D MEN9 60A5 MENU 604F MERR 68DF MSBPB 6917 MSCL2 6932 MSDIR 6929 MSERR 68F6 MSFAT 6920 MSINFL 6942 MSINIT 68C3 MSMENU1 6817 MSMENU2 6859 MSOFS 6905 MSSCT 6895 MSSD0 68A9 MSSD1 68B5 MSWROK 689D OKEND 62DC OUTCHA FBBB PBCTL FD9F PBDAT FD9E PSEND 66D4 PSLOP 66C9 PSTRNG 66C7 RD1 6525 RD1SCT 650D RD2 652C RD3 653C RESDAT 6007 RPT41 613D RWBUF 6E00 SC01 60CB SC2581 618E SC551 614A SC581 6120 SC80 60F0 SC91 625A SCLOP1 6291 SCLOP2 62A4 SCLOP3 62B7 SCLOP4 62CA SCMD0 60C3 SCMD258 6181 SCMD55 613D SCMD58 6113 SCMD8 60E3 SCTBPB 6009 SCTCLT 6015 SCTDIR 6011 SCTFAT 600D SCTN0 6003 SCTN1 6004 SCTN2 6005 SCTN3 6006 SCTPCL 6019 SD1 61C3 SDERR 62D6 SDHC 6008 SDINIT 60AD SDRD 62DD SDW1 64B8 SDW2 64C3 SDWR1 649A SDWRT 648A SELOP 6326 SETCKH 65E0 SETCKL 65D7 SETSCT 65A4 SETSNO 6320 SFLOP 663C SFT1 65B2 SKP1 6211 SKP2 6246 SNDD1 656D SNDDAT 6566 SNDDT1 64E4 START 6000 STTADR 6000 VN 6002 WFSIZ 601D WK1 6025 WK2 6027 WMDY 601A
リストが長いので今回は縦スクロール付きにしてみました。「全選択」ボタンがありませんが、リスト中でダブルクリックしておいてCtrl-Cでコピーできます。
0 件のコメント:
コメントを投稿