SDRWFMが完成したつもりでしたが、不具合がいくつか見つかりましたので修正しました。
前回と同じ画像です |
(前回と同じ画像を貼ってありますが、画像がないとアイコンが表示されないようなので、それを避けるためです。)
修正点は以下の3点です。
(1)ファイル名に「-」(ハイフン)を使えるようにしました。
パラメータ取得時に、入力文字列を区切るための文字を0x30未満の文字すべてとしていたので、ハイフンも区切り文字として扱われてしまっていました。F-BASICではファイル名にハイフンも含まれますので、区切り文字から外すように修正しました。
(2)Windows上のXM7などでバイナリ保存したファイルをSDにコピーして、それをFM-7で読み出すと正常に読み込めない場合がある点を修正しました。
バイナリ保存されたBASICプログラム中には、リンクポインタとして保存アドレスが直接書き込まれているので、同じFM-7であっても機器の条件によってBASICプログラムの保存アドレスが異なることがあるために、そのまま読み込んだのでは正常な範囲に保存されないことがあり得ます。これを解決するために、F-BASICに用意されているリンクポインタの修正をするルーチンを使用して、リンクポインタを変換しながら読み込むことにしました。
(3)FM-7上で機械語ファイルを保存する場合に、末尾の5バイトのフッタを付加していませんでした。実用上の不便はありませんが、互換性を考慮してフッタを付加することにしました。
その他、修正点ではありませんが、使用するSD(SDHCも)カードを初期化する際にはアロケーションサイズを32KBにする必要があることも指摘していただきました。
0001 * 0002 * SDRWFM.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 -- -- 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 $5E00 - 5FFF 0035 * 0036 * Ascii program readable '2023.04.18 0037 * Fix date routine '2023.04.12 0038 * Implement write cmd '2023.04.07 0039 * Add command '2023.03.14 0040 * Change use Port B '2023.03.07 0041 * Original version '2022.06.11 0042 * Copyright by Y.Yamamoto 0043 * 0044 6000 STTADR EQU $6000 0045 0046 FBB8 INCHA EQU $FBB8 for FM-7 0047 FBBB OUTCHA EQU $FBBB for FM-7 0048 FBF7 CSRON EQU $FBF7 for FM-7 0049 D807 LININP EQU $D807 for FM-7 (to $043D- ) 0050 *DEVNO EQU $BF for FM-7 0051 043D LINBUF EQU $043D 1 line input buffer for F-BASIC 0052 033C TXTBUF EQU $033C text buffer after conversion for F-BASIC 0053 9162 RDLINO EQU $9162 read line number for F-BASIC 0054 FBF1 LININT EQU $FBF1 (=C28C) one line translation for F-BASIC 0055 C730 FIXPTR EQU $C730 fix link pointer of binary saved file for F-BASIC 0056 004B LINO1 EQU $4B 0057 033A LINO2 EQU $33A 0058 000D CR EQU $0D 0059 000A LF EQU $0A 0060 0020 SPC EQU $20 0061 001B ESC EQU $1B 0062 0063 5E00 RWBUF EQU STTADR-$200 0064 0065 02FA FMDAT EQU $02FA date of FM-7 0066 FD9E PBDAT EQU $FD9E for FM-7 0067 FD9F PBCTL EQU PBDAT+1 0068 0033 BASADP EQU $33 (33,34) pointer for F-BASIC 0069 0035 BASAEP EQU $35 (35,36) pointer for F-BASIC 0070 2000 TXTADR EQU $2000 load adr for TEXT 0071 00E5 DELMK EQU $E5 delete mark 0072 0073 6000 ORG STTADR 0074 0075 6000 16 00A0 START LBRA MAIN 0076 6003 01 VN FCB 1 version no 0077 6004 00 SCTN0 FCB 0 top adrs of sct 0078 6005 00 SCTN1 FCB 0 0079 6006 00 SCTN2 FCB 0 0080 6007 00 SCTN3 FCB 0 0081 6008 00 RESDAT FCB 0 response data 0082 6009 00 SDHC FCB 0 sd:0,sdhc:1 0083 0084 600A 0000 SCTBPB FDB 00 sct no of BPB(4bytes) 0085 600C 0000 FDB 00 0086 600E 0000 SCTFAT FDB 00 sct no of FAT#1(4bytes) 0087 6010 0000 FDB 00 0088 6012 0000 SCTDIR FDB 00 sct no of DIR(4bytes) 0089 6014 0000 FDB 00 0090 6016 0000 SCTDSV FDB 00 save sct no of DIR(4bytes) 0091 6018 0000 FDB 00 0092 601A 0000 SCTCLT FDB 00 sct no of top CLUSTER(4bytes) 0093 601C 0000 FDB 00 if SD:#2, SDHC:#3 0094 601E 00 SCTPCL FCB 0 sct per cluster 0095 601F FF DIRENT RMB 32 directory entry 0096 603F FF WMDY RMB 3 mon,day,year 0097 6042 FF WFSIZ RMB 4 file size(4bytes) 0098 6046 FF FILSIZ RMB 2 file size 0099 6048 0000 CLSTH FDB 00 cluster High 0100 604A 0000 CLSTL FDB 00 cluster Low 0101 604C 00 CNT FCB 0 0102 604D 00 MCFLG FCB 0 0:machine code, $FF,$FE:binary save 1:else 0103 604E 00 TPGFLG FCB 0 1:top page 0:else 0104 604F FF FNAME RMB 11 file name(8+3) 0105 605A 00 DPGNO FCB 0 page no of empty dir entry 0106 605B 0000 DIROFS FDB 00 offset of empty dir entry 0107 605D 0000 BASEXP FDB 00 basic exe adr 0108 605F 0000 MCADP FDB 00 machine code start adr 0109 6061 0000 MCAEP FDB 00 machine code end adr 0110 6063 0000 MCEXP FDB 00 machine dode exec adr 0111 6065 0000 EXSTFL FDB 00 ofset of exist dir entry 0112 6067 0000 CVTLEN FDB 00 length of converted text 0113 6069 0000 RDTOP FDB 00 adr of read point 0114 606B 0000 SVTOP FDB 00 adr of saved point 0115 606D 0000 WK1 FDB 00 0116 606F 0000 WK2 FDB 00 0117 6071 0000 WK3 FDB 00 0118 6073 0000 WK4 FDB 00 0119 6075 0000 WK0 FDB 00 0120 0121 6077 FF INPBUF RMB 8 0122 607F FF CNVBUF RMB 4 0123 6083 FF FILBUF RMB 32 0124 0125 60A3 MAIN EQU * 0126 *=====reset pia===== 0127 *portB:output 0128 60A3 86 30 LDA #$30 0129 60A5 B7 FD9F STA PBCTL select ddra, cb2:0 0130 60A8 86 FD LDA #$FD pb0,7:out,pb1:in 0131 60AA B7 FD9E STA PBDAT set output mode 0132 60AD 86 34 LDA #$34 0133 60AF B7 FD9F STA PBCTL select peripheral,cb2:0 0134 0135 *for pia exist check 0136 60B2 86 55 LDA #$55 test data 0137 60B4 B7 FD9E STA PBDAT 0138 60B7 B6 FD9E LDA PBDAT 0139 60BA 84 FD ANDA #$FD pb1=0 0140 60BC 81 55 CMPA #$55 0141 60BE 27 07 BEQ INIT 0142 60C0 8E 707B LDX #MERR 0143 60C3 17 0D5D LBSR PSTRNG 0144 60C6 39 RTS Return F-BASIC 0145 0146 60C7 INIT EQU * 0147 60C7 17 0094 LBSR SDINIT 0148 0149 **************************************** 0150 * MAIN MENU 0151 **************************************** 0152 60CA MENU EQU * 0153 60CA 4F CLRA 0154 60CB 1F 8B TFR A,DP 0155 60CD 8E 6F90 LDX #MSMENU1 0156 60D0 17 0D50 LBSR PSTRNG 0157 60D3 BD FBF7 JSR CSRON cursor on 0158 60D6 BD 6F12 JSR INOUTC 0159 60D9 84 DF ANDA #$DF to upper 0160 0161 60DB 81 46 CMPA #'F 0162 60DD 26 05 BNE MENU1 0163 60DF 17 0324 LBSR DSPDIR 0164 60E2 20 E6 BRA MENU 0165 60E4 81 4C MENU1 CMPA #'L 0166 60E6 26 05 BNE MENU2 0167 60E8 17 03BF LBSR LDFILE 0168 60EB 20 DD BRA MENU 0169 60ED 81 42 MENU2 CMPA #'B 0170 60EF 26 05 BNE MENU3 0171 60F1 17 06C5 LBSR WRBFILE 0172 60F4 20 D4 BRA MENU 0173 60F6 81 4D MENU3 CMPA #'M 0174 60F8 26 05 BNE MENU4 0175 60FA 17 0732 LBSR WRMFILE 0176 60FD 20 CB BRA MENU 0177 60FF 81 4B MENU4 CMPA #'K 0178 6101 26 05 BNE MENU5 0179 6103 17 065E LBSR KILFILE 0180 6106 20 C2 BRA MENU 0181 6108 81 53 MENU5 CMPA #'S 0182 610A 26 04 BNE MENU6 0183 610C 8D 50 BSR SDINIT 0184 610E 20 BA BRA MENU 0185 6110 81 4F MENU6 CMPA #'O 0186 6112 26 04 BNE MENU7 0187 6114 20 0A BRA OPMENU 0188 6116 20 B2 BRA MENU 0189 6118 81 51 MENU7 CMPA #'Q 0190 611A 26 AE BNE MENU 0191 611C 17 0C49 LBSR PCRLF 0192 611F 39 RTS Return F-BASIC 0193 0194 * 0195 6120 OPMENU EQU * 0196 6120 8E 6FE9 LDX #MSMENU2 0197 6123 17 0CFD LBSR PSTRNG 0198 6126 BD 6F12 JSR INOUTC 0199 6129 80 30 SUBA #$30 0200 612B 26 02 BNE OPMEN6 0? 0201 612D 20 9B BRA MENU 0202 0203 612F 4A OPMEN6 DECA 1? 0204 6130 26 05 BNE OPMEN7 0205 6132 17 0246 LBSR RDSCT 0206 6135 20 E9 BRA OPMENU 0207 6137 4A OPMEN7 DECA 2? 0208 6138 26 05 BNE OPMEN8 0209 613A 17 01C1 LBSR DSPSDDAT 0210 613D 20 E1 BRA OPMENU 0211 613F 4A OPMEN8 DECA 3? 0212 6140 26 05 BNE OPMEN9 0213 6142 17 0249 LBSR DSPMBR 0214 6145 20 D9 BRA OPMENU 0215 6147 4A OPMEN9 DECA 4? 0216 6148 26 05 BNE OPMEN10 0217 614A 17 0295 LBSR DSPBPB 0218 614D 20 D1 BRA OPMENU 0219 614F 4A OPMEN10 DECA 5? 0220 6150 26 CE BNE OPMENU 0221 6152 17 029F LBSR DSPFAT 0222 6155 20 C9 BRA OPMENU 0223 0224 * 0225 6157 SDERR EQU * 0226 6157 8E 707B LDX #MERR 0227 615A 17 0CC6 LBSR PSTRNG 0228 615D 39 RTS Return F-BASIC 0229 0230 **************************************** 0231 * SD Initialize routine 0232 **************************************** 0233 615E SDINIT EQU * 0234 *---------- start ---------- 0235 615E 8E 7064 LDX #MSINIT 0236 6161 17 0CBF LBSR PSTRNG 0237 * cs:1,di:1,sck>74ms 0238 6164 86 FF LDA #$FF mosi:b7=H,miso:b1=H(for PIA),cs:b0=H 0239 6166 B7 FD9E STA PBDAT 0240 6169 C6 50 LDB #80 80times 0241 616B 17 0BB5 ISTT LBSR SETCKL 0242 616E 17 0BBB LBSR SETCKH 0243 6171 5A DECB 0244 6172 26 F7 BNE ISTT 0245 * 0246 *---------- cmd 0 ---------- 0247 6174 SCMD0 EQU * 0248 6174 17 0BAC LBSR SETCKL 0249 6177 C6 06 LDB #6 0250 6179 8E 6F2C LDX #CMD0 0251 617C A6 80 SC01 LDA ,X+ 0252 617E 17 0B34 LBSR SNDDAT 0253 6181 5A DECB 0254 6182 26 F8 BNE SC01 0255 *get response 0256 6184 5F CLRB 0257 6185 GR00 0258 6185 5A DECB 0259 6186 27 CF BEQ SDERR 0260 6188 17 0B46 LBSR GETDAT 0261 618B B6 6008 LDA RESDAT 0262 618E 81 01 CMPA #$01 0263 6190 26 F3 BNE GR00 0264 * 0265 *---------- cmd 8 ---------- 0266 6192 SCMD8 EQU * 0267 6192 17 0B8E LBSR SETCKL 0268 6195 86 FF LDA #$FF dummy cmd 0269 6197 17 0B1B LBSR SNDDAT 0270 619A C6 06 LDB #6 0271 619C 8E 6F44 LDX #CMD8 0272 619F A6 80 SC80 LDA ,X+ 0273 61A1 17 0B11 LBSR SNDDAT 0274 61A4 5A DECB 0275 61A5 26 F8 BNE SC80 0276 *get response 0277 61A7 GR80 0278 61A7 17 0B27 LBSR GETDAT 0279 61AA B6 6008 LDA RESDAT 0280 0281 61AD 17 0B21 LBSR GETDAT 0282 61B0 B6 6008 LDA RESDAT 0283 61B3 81 01 CMPA #$01 0284 61B5 26 F0 BNE GR80 0285 61B7 C6 04 LDB #4 0286 61B9 17 0B15 GR81 LBSR GETDAT 0287 61BC B6 6008 LDA RESDAT 0288 61BF 5A DECB 0289 61C0 26 F7 BNE GR81 0290 * 0291 *---------- cmd 58 ---------- 0292 61C2 SCMD58 EQU * 0293 61C2 17 0B5E LBSR SETCKL 0294 61C5 86 FF LDA #$FF dummy cmd 0295 61C7 17 0AEB LBSR SNDDAT 0296 61CA C6 06 LDB #6 0297 61CC 8E 6F4A LDX #CMD58 0298 61CF A6 80 SC581 LDA ,X+ 0299 61D1 17 0AE1 LBSR SNDDAT 0300 61D4 5A DECB 0301 61D5 26 F8 BNE SC581 0302 *get response 0303 61D7 GR580 0304 61D7 17 0AF7 LBSR GETDAT 0305 61DA B6 6008 LDA RESDAT 0306 61DD 81 01 CMPA #$01 0307 61DF 26 F6 BNE GR580 0308 61E1 C6 04 GR581 LDB #4 0309 61E3 17 0AEB GR582 LBSR GETDAT 0310 61E6 B6 6008 LDA RESDAT 0311 61E9 5A DECB 0312 61EA 26 F7 BNE GR582 0313 61EC RPT41 EQU * 0314 *---------- cmd 55 ---------- 0315 61EC SCMD55 EQU * 0316 61EC 17 0B34 LBSR SETCKL 0317 61EF 86 FF LDA #$FF dummy cmd 0318 61F1 17 0AC1 LBSR SNDDAT 0319 61F4 C6 06 LDB #6 0320 61F6 8E 6F50 LDX #CMD55 0321 61F9 A6 80 SC551 LDA ,X+ 0322 61FB 17 0AB7 LBSR SNDDAT 0323 61FE 5A DECB 0324 61FF 26 F8 BNE SC551 0325 *get response 0326 * CLRB 0327 6201 GR550 0328 6201 17 0ACD LBSR GETDAT 0329 6204 B6 6008 LDA RESDAT 0330 6207 81 01 CMPA #$01 0331 6209 26 F6 BNE GR550 0332 0333 *---------- acmd 41 ---------- 0334 620B ASCMD41 EQU * 0335 620B 17 0B15 LBSR SETCKL 0336 620E 86 FF LDA #$FF dummy cmd 0337 6210 17 0AA2 LBSR SNDDAT 0338 6213 C6 06 LDB #6 0339 6215 8E 6F56 LDX #ACMD41 0340 6218 A6 80 ASC411 LDA ,X+ 0341 621A 17 0A98 LBSR SNDDAT 0342 621D 5A DECB 0343 621E 26 F8 BNE ASC411 0344 *get response 0345 6220 GR410 0346 6220 17 0AAE LBSR GETDAT 0347 6223 B6 6008 LDA RESDAT 0348 6226 17 0AA8 LBSR GETDAT 0349 6229 B6 6008 LDA RESDAT 0350 622C 81 00 CMPA #$00 0351 622E 26 BC BNE RPT41 0352 0353 *---------- second cmd 58 ---------- 0354 6230 SCMD258 EQU * 0355 6230 17 0AF0 LBSR SETCKL 0356 6233 86 FF LDA #$FF dummy cmd 0357 6235 17 0A7D LBSR SNDDAT 0358 6238 C6 06 LDB #6 0359 623A 8E 6F4A LDX #CMD58 0360 623D A6 80 SC2581 LDA ,X+ 0361 623F 17 0A73 LBSR SNDDAT 0362 6242 5A DECB 0363 6243 26 F8 BNE SC2581 0364 *get response 0365 6245 GR2580 0366 6245 17 0A89 LBSR GETDAT 0367 6248 B6 6008 LDA RESDAT 0368 624B 81 00 CMPA #$00 0369 624D 26 F6 BNE GR2580 0370 624F 17 0A7F LBSR GETDAT 0371 6252 B6 6008 LDA RESDAT 0372 6255 48 LSLA 0373 6256 48 LSLA 0374 6257 24 03 BCC GR2581 0375 6259 7C 6009 INC SDHC if sdhc then 1 0376 625C C6 03 GR2581 LDB #3 0377 625E 17 0A70 GR2582 LBSR GETDAT 0378 6261 B6 6008 LDA RESDAT 0379 6264 5A DECB 0380 6265 26 F7 BNE GR2582 0381 0382 6267 8E 704E LDX #MSSD0 0383 626A B6 6009 LDA SDHC 0384 626D 27 03 BEQ SD1 0385 626F 8E 7058 LDX #MSSD1 0386 6272 17 0BAE SD1 LBSR PSTRNG 0387 * 0388 *set sct no of BPB 0389 6275 17 0134 LBSR GETMBR 0390 6278 8E 5FCA LDX #RWBUF+446+8+4 0391 627B 108E 600A LDY #SCTBPB 0392 627F C6 04 LDB #4 0393 6281 A6 82 ILOP1 LDA ,-X 0394 6283 A7 A0 STA ,Y+ 0395 6285 5A DECB 0396 6286 26 F9 BNE ILOP1 0397 0398 *set sct no of FAT#1 0399 6288 17 013E LBSR GETBPB 0400 628B 8E 600A LDX #SCTBPB 0401 628E 108E 600E LDY #SCTFAT 0402 6292 C6 04 LDB #4 0403 6294 17 0982 LBSR TRANS 0404 6297 8E 600E LDX #SCTFAT 0405 629A 108E 5E0E LDY #RWBUF+$0E for SD & SDHC 0406 629E 17 0B51 LBSR ADD42 0407 0408 *set sct no of DIR 0409 62A1 8E 600E LDX #SCTFAT 0410 62A4 108E 6012 LDY #SCTDIR 0411 62A8 C6 04 LDB #4 0412 62AA 17 096C LBSR TRANS 0413 62AD 8E 5E16 LDX #RWBUF+$16 for SD 0414 62B0 7D 6009 TST SDHC 0:SD,1:SDHC 0415 62B3 27 03 BEQ SKP1 0416 62B5 C6 0E LDB #$24-$16 0417 62B7 3A ABX for SDHC 0418 62B8 1F 12 SKP1 TFR X,Y 0419 62BA 8E 6012 LDX #SCTDIR 0420 62BD 17 0B32 LBSR ADD42 0421 62C0 17 0B2F LBSR ADD42 skip for FAT#2 0422 0423 *save no of directory 0424 62C3 8E 6012 LDX #SCTDIR 0425 62C6 108E 6016 LDY #SCTDSV 0426 62CA C6 04 LDB #4 0427 62CC 17 094A LBSR TRANS 0428 0429 *set sct per cluster 0430 62CF 8E 5E0D LDX #RWBUF+$0D 0431 62D2 A6 84 LDA ,X 0432 62D4 B7 601E STA SCTPCL 0433 0434 *set sct no of CLUSTER#2 0435 62D7 8E 6012 LDX #SCTDIR 0436 62DA 108E 601A LDY #SCTCLT 0437 62DE C6 04 LDB #4 0438 62E0 17 0936 LBSR TRANS 0439 0440 62E3 108E 606F LDY #WK1+2 0441 62E7 86 00 LDA #$00 0442 62E9 A7 A2 STA ,-Y 0443 62EB 86 20 LDA #$20 for SD 0444 62ED 7D 6009 TST SDHC 0445 62F0 27 03 BEQ SKP2 0446 62F2 B6 601E LDA SCTPCL for SDHC 0447 62F5 A7 A2 SKP2 STA ,-Y 0448 62F7 8E 601A LDX #SCTCLT 0449 62FA 17 0AF5 LBSR ADD42 0450 62FD 39 RTS 0451 0452 **************************************** 0453 * GET SD DATA ROUTINE 0454 * use CMD9 0455 **************************************** 0456 62FE DSPSDDAT EQU * 0457 62FE 17 0A67 LBSR PCRLF 0458 6301 17 0A1F LBSR SETCKL 0459 6304 C6 06 LDB #6 0460 6306 8E 6F5C LDX #CMD9 0461 6309 A6 80 SC91 LDA ,X+ 0462 630B 17 09A7 LBSR SNDDAT 0463 630E 5A DECB 0464 630F 26 F8 BNE SC91 0465 *get response 0466 6311 GR90 0467 6311 17 09BD LBSR GETDAT 0468 6314 B6 6008 LDA RESDAT 0469 6317 81 00 CMPA #$00 0470 6319 26 F6 BNE GR90 0471 0472 631B C6 14 LDB #16+1+2+1 fe,crcH,crcL,ff 0473 631D 17 09B1 GR91 LBSR GETDAT 0474 6320 B6 6008 LDA RESDAT 0475 6323 5A DECB 0476 6324 26 F7 BNE GR91 0477 6326 17 0A3F LBSR PCRLF 0478 0479 *disp offset of MBR,FAT#1,DIR,CLUSTER#2 0480 6329 8E 709B LDX #MSOFS 0481 632C 17 0AF4 LBSR PSTRNG 0482 632F 8E 70AB LDX #MSBPB 0483 6332 17 0AEE LBSR PSTRNG 0484 6335 8E 600A LDX #SCTBPB 0485 6338 17 0A24 LBSR DSPBI2 0486 633B 17 0A35 LBSR OUTSPC 0487 633E 17 0A1E LBSR DSPBI2 0488 0489 6341 8E 70B4 LDX #MSFAT 0490 6344 17 0ADC LBSR PSTRNG 0491 6347 8E 600E LDX #SCTFAT 0492 634A 17 0A12 LBSR DSPBI2 0493 634D 17 0A23 LBSR OUTSPC 0494 6350 17 0A0C LBSR DSPBI2 0495 0496 6353 8E 70BD LDX #MSDIR 0497 6356 17 0ACA LBSR PSTRNG 0498 6359 8E 6012 LDX #SCTDIR 0499 635C 17 0A00 LBSR DSPBI2 0500 635F 17 0A11 LBSR OUTSPC 0501 6362 17 09FA LBSR DSPBI2 0502 0503 6365 8E 70C6 LDX #MSCL2 0504 6368 17 0AB8 LBSR PSTRNG 0505 636B 8E 601A LDX #SCTCLT 0506 636E 17 09EE LBSR DSPBI2 0507 6371 17 09FF LBSR OUTSPC 0508 6374 17 09E8 LBSR DSPBI2 0509 6377 17 09EE LBSR PCRLF 0510 637A 39 RTS 0511 0512 * 0513 **************************************** 0514 * READ ROUTINE 0515 * use CMD17 0516 * set sctno to SCTN2,SCTN3 0517 * read data set to RWBUF 0518 **************************************** 0519 637B RDSCT EQU * 0520 637B 17 09EA LBSR PCRLF 0521 637E 17 096A LBSR INSCT input sct no 0522 6381 17 08DD LBSR RD1SCT read 1 sct 0523 0524 *disp data 0525 6384 17 09E1 LBSR PCRLF 0526 6387 17 090D LBSR DSPBUF 0527 638A 17 09DB LBSR PCRLF 0528 638D 39 RTS 0529 0530 **************************************** 0531 * Read MBR & Disp parameter of BPB 0532 **************************************** 0533 638E DSPMBR EQU * 0534 638E 17 09D7 LBSR PCRLF 0535 6391 8D 19 BSR GETMBR 0536 0537 *disp BPB 0538 6393 17 09D2 LBSR PCRLF 0539 6396 8E 5FBE LDX #RWBUF+446 1st BPB point 0540 6399 C6 10 GET1 LDB #16 0541 639B A6 80 GET2 LDA ,X+ 0542 639D 17 0995 LBSR DSPBIN disp data 0543 63A0 5A DECB 0544 63A1 26 F8 BNE GET2 0545 63A3 17 09C2 LBSR PCRLF 0546 63A6 8C 5FFE CMPX #RWBUF+510 446+16*4 0547 63A9 25 EE BLO GET1 0548 63AB 39 RTS 0549 0550 *---------------------------------------- 0551 *read MBR 0552 63AC GETMBR EQU * 0553 63AC 8E 6004 LDX #SCTN0 0554 63AF C6 04 LDB #4 0555 63B1 4F CLRA 0556 63B2 17 086F LBSR FILL set sct no is 0 0557 63B5 17 093C LBSR SETSCT 0558 63B8 17 08A6 LBSR RD1SCT read 1 sct 0559 63BB 39 RTS 0560 0561 *---------------------------------------- 0562 *set sector no to SCTN0 0563 *from X,X+1,X+2,X+3 to SCTN0-SCTN3 0564 63BC SETSNO EQU * 0565 63BC 108E 6004 LDY #SCTN0 0566 63C0 C6 04 LDB #4 0567 63C2 17 0854 LBSR TRANS 0568 63C5 17 092C LBSR SETSCT 0569 63C8 39 RTS 0570 0571 *---------------------------------------- 0572 *read BPB 0573 63C9 GETBPB EQU * 0574 63C9 8D E1 BSR GETMBR 0575 *set sct no of BPB 0576 63CB 8E 5FCA LDX #RWBUF+446+8+4 0577 63CE 108E 6004 LDY #SCTN0 0578 63D2 C6 04 LDB #4 0579 63D4 A6 82 GTBLOP LDA ,-X 0580 63D6 A7 A0 STA ,Y+ 0581 63D8 5A DECB 0582 63D9 26 F9 BNE GTBLOP 0583 63DB 17 0916 LBSR SETSCT 0584 63DE 17 0880 LBSR RD1SCT read 1 sct 0585 63E1 39 RTS 0586 0587 **************************************** 0588 * Disp BPB(Bios Parameter Block) 0589 **************************************** 0590 63E2 DSPBPB EQU * 0591 63E2 8E 600A LDX #SCTBPB 0592 63E5 8D D5 BSR SETSNO 0593 63E7 17 0877 LBSR RD1SCT read 1 sct 0594 0595 *disp BPB 0596 63EA 17 097B LBSR PCRLF 0597 63ED 17 08A7 LBSR DSPBUF 0598 63F0 17 0975 LBSR PCRLF 0599 63F3 39 RTS 0600 0601 **************************************** 0602 * Disp FAT#1 0603 **************************************** 0604 63F4 DSPFAT EQU * 0605 63F4 8E 600E LDX #SCTFAT 0606 63F7 8D C3 BSR SETSNO 0607 63F9 17 0865 LBSR RD1SCT read 1 sct 0608 0609 *disp FAT 0610 63FC 17 0969 LBSR PCRLF 0611 63FF 17 0895 LBSR DSPBUF 0612 6402 17 0963 LBSR PCRLF 0613 6405 39 RTS 0614 0615 **************************************** 0616 * Disp Directory 0617 **************************************** 0618 6406 DSPDIR EQU * 0619 *return no of DIR 0620 6406 8E 6016 LDX #SCTDSV 0621 6409 108E 6012 LDY #SCTDIR 0622 640D C6 04 LDB #4 0623 640F 17 0807 LBSR TRANS 0624 6412 8E 6012 DSPFL0 LDX #SCTDIR 0625 6415 8D A5 BSR SETSNO 0626 6417 17 0847 LBSR RD1SCT read 1 sct 0627 0628 *disp FILE name 0629 641A 17 094B LBSR PCRLF 0630 641D 17 0948 LBSR PCRLF 0631 6420 8E 5E00 LDX #RWBUF 0632 0633 6423 A6 84 DSPFL1 LDA ,X 0634 6425 1027 0080 LBEQ DSPEND if top of filename is 0 then end 0635 6429 81 E5 CMPA #$E5 delete mark? 0636 642B 27 06 BEQ DSPCKE 0637 642D A6 0B LDA 11,X attr 0638 * CMPA #$0F long file name? 0639 * BEQ DSPCKE 0640 * CMPA #$10 directory? 0641 * BEQ DSPCKE 0642 642F 81 20 CMPA #$20 0643 6431 27 0A BEQ DSPFL2 archive file only 0644 6433 30 88 20 DSPCKE LEAX 32,X next directory entry 0645 6436 8C 6000 CMPX #RWBUF+512 over buf? 0646 6439 24 56 BHS DSPFL5 0647 643B 20 E6 BRA DSPFL1 0648 0649 643D DSPFL2 0650 *disp filename 0651 643D C6 08 LDB #8 0652 643F A6 80 DSPFL3 LDA ,X+ 0653 6441 BD FBBB JSR OUTCHA 0654 6444 5A DECB 0655 6445 26 F8 BNE DSPFL3 0656 *disp ext 0657 6447 86 2E LDA #'. 0658 6449 BD FBBB JSR OUTCHA 0659 644C C6 03 LDB #3 0660 644E A6 80 DSPFL4 LDA ,X+ 0661 6450 BD FBBB JSR OUTCHA 0662 6453 5A DECB 0663 6454 26 F8 BNE DSPFL4 0664 0665 *get FILE time data 0666 6456 30 07 LEAX 7,X 0667 6458 EC 81 LDD ,X++ 0668 645A FD 606D STD WK1 0669 0670 *get CLUSTER(H) data 0671 645D EC 81 LDD ,X++ 0672 645F 1E 89 EXG A,B 0673 6461 FD 6048 STD CLSTH 0674 6464 30 04 LEAX 4,X 0675 6466 EC 81 LDD ,X++ 0676 6468 1E 89 EXG A,B 0677 646A FD 604A STD CLSTL 0678 0679 *get FILE size data 0680 646D 108E 6046 LDY #WFSIZ+4 0681 6471 C6 04 LDB #4 0682 6473 A6 80 DSPC1 LDA ,X+ 0683 6475 A7 A2 STA ,-Y 0684 6477 5A DECB 0685 6478 26 F9 BNE DSPC1 0686 0687 *disp FILE size 0688 647A BD 6D73 JSR OUTSPC 0689 647D 17 0A12 LBSR DSPSIZ disp FILE size 0690 0691 *disp FILE time 0692 6480 FC 606D LDD WK1 0693 6483 17 09AD LBSR DSPYMD disp MM-DD-YY 0694 0695 *disp CLUSTER(Lonly) 0696 6486 17 0A5A LBSR DSPCLS 0697 6489 17 08DC LBSR PCRLF 0698 0699 648C 8C 6000 CMPX #RWBUF+512 0700 648F 25 92 BLO DSPFL1 0701 6491 8E 6012 DSPFL5 LDX #SCTDIR 0702 6494 17 0796 LBSR INCX4 sct no +1 0703 6497 8E 713F LDX #MSNXTP 0704 649A 17 0986 LBSR PSTRNG 0705 649D BD FBB8 DSPFL6 JSR INCHA 0706 64A0 81 20 CMPA #SPC 0707 64A2 1027 FF6C LBEQ DSPFL0 0708 64A6 BD 6D68 JSR PCRLF 0709 64A9 39 DSPEND RTS 0710 0711 **************************************** 0712 * Load FILE 0713 **************************************** 0714 64AA LDFILE EQU * 0715 64AA 17 0241 LBSR GETFDT 0716 64AD BE 6065 LDX EXSTFL if 0 not exist 0717 64B0 1027 0125 LBEQ LDNEND 0718 0719 *get cluster no 0720 64B4 EC 88 14 LDD $14,X 0721 64B7 1E 89 EXG A,B 0722 64B9 FD 6048 STD CLSTH high cluster no 0723 64BC EC 88 1A LDD $1A,X 0724 64BF 1E 89 EXG A,B 0725 64C1 FD 604A STD CLSTL low cluster no 0726 *sub start cluster no (SD:2,SDHC:3) 0727 64C4 83 0002 SUBD #2 0728 64C7 7D 6009 TST SDHC SD:0,SDHC:1 0729 64CA 27 03 BEQ LD3 0730 64CC 83 0001 SUBD #1 D:cluster no (start 0) 0731 * (A=0,cluster no is only B) 0732 0733 64CF 34 36 LD3 PSHS A,B,X,Y 0734 64D1 8E 601A LDX #SCTCLT top of cluster no 0735 64D4 108E 606D LDY #WK1 0736 64D8 C6 04 LDB #4 0737 64DA 17 073C LBSR TRANS 0738 64DD 35 36 PULS A,B,X,Y 0739 0740 *calc start cluster no of file 0741 *(B)x40h 0742 64DF 34 30 PSHS X,Y 0743 64E1 8E 606D LDX #WK1 0744 64E4 17 0755 LBSR ADD40H 0745 64E7 35 30 PULS X,Y 0746 0747 *get file size 0748 64E9 34 30 PSHS X,Y 0749 64EB 30 88 20 LEAX 32,X 0750 64EE 108E 6042 LDY #WFSIZ 0751 64F2 C6 04 LDB #4 0752 64F4 A6 82 LD41 LDA ,-X 0753 64F6 A7 A0 STA ,Y+ 0754 64F8 5A DECB 0755 64F9 26 F9 BNE LD41 0756 64FB 35 30 PULS X,Y 0757 0758 64FD EC 88 1D LDD $1D,X upper of file size 0759 6500 1E 89 EXG A,B 0760 6502 44 LSRA 0761 6503 56 RORB 0762 6504 C3 0001 ADDD #1 wfsiz/$200+1 0763 0764 *limited to 1 cluster(40h sct) 0765 6507 C1 40 CMPB #$40 40h sct? 0766 6509 23 02 BLS LD5 0767 650B C6 40 LDB #$40 0768 650D F7 604C LD5 STB CNT sct counter 0769 6510 F7 604E STB TPGFLG set top page 0770 0771 *set start sct no of file 0772 6513 34 12 PSHS A,X 0773 6515 8E 70FE LDX #MSLDNG 0774 6518 17 0908 LBSR PSTRNG 0775 651B 35 12 PULS A,X 0776 651D LDLOP 0777 651D 86 2E LDA #'. 0778 651F BD FBBB JSR OUTCHA 0779 6522 8E 606D LDX #WK1 0780 6525 108E 6004 LDY #SCTN0 0781 6529 C6 04 LDB #4 0782 652B 17 06EB LBSR TRANS 0783 652E 17 07C3 LBSR SETSCT 0784 6531 17 072D LBSR RD1SCT read 1 file data 0785 0786 6534 7D 604E TST TPGFLG top sector page? 0787 6537 27 71 BEQ LD9 0788 0789 *at top sector, ini set 0790 *offset 00 data is 0791 * $00 :machine code 0792 * $0D :BASIC PROGRAM (ascii save) 0793 * $FF,$FE:BASIC PROGRAM (binary save) 0794 * else :general text 0795 6539 10BE 6044 LDY WFSIZ+2 0796 653D 10BF 6046 STY FILSIZ set file size 0797 0798 6541 8E 5E00 LDX #RWBUF 0799 6544 A6 84 LDA ,X 0800 6546 B7 604D STA MCFLG 0801 6549 27 04 BEQ LD8 machine code 0802 654B 2A 4B BPL LD81 ascii saved basic or else 0803 654D 2B 45 BMI LD80 binary saved basic 0804 *at machine code, read header 0805 654F 10AE 01 LD8 LDY 1,X get file size 0806 6552 10BF 6046 STY FILSIZ 0807 6556 EE 03 LDU 3,X get store addr 0808 *disp store adr, size 0809 6558 8E 71A5 LDX #MSMCAS 0810 655B 17 08C5 LBSR PSTRNG 0811 655E 1F 30 TFR U,D 0812 6560 34 04 PSHS B 0813 6562 17 07D6 LBSR DSPBI0 0814 6565 35 04 PULS B 0815 6567 1F 98 TFR B,A 0816 6569 17 07CF LBSR DSPBI0 0817 656C 86 2C LDA #', 0818 656E BD FBBB JSR OUTCHA 0819 6571 1F 20 TFR Y,D 0820 6573 34 04 PSHS B 0821 6575 17 07C3 LBSR DSPBI0 0822 6578 35 04 PULS B 0823 657A 1F 98 TFR B,A 0824 657C BD 6D3B JSR DSPBI0 0825 0826 *offset? 0827 657F 8E 718C LDX #MSMCOF 0828 6582 17 089E LBSR PSTRNG 0829 6585 BD 6F12 JSR INOUTC 0830 6588 84 DF ANDA #$DF 0831 658A 81 59 CMPA #'Y 0832 658C 26 1C BNE LD9 0833 658E 33C9 E000 LEAU -$2000,U -$2000 offset 0834 6592 20 16 BRA LD9 0835 0836 6594 DE 33 LD80 LDU BASADP basic file 0837 6596 20 12 BRA LD9 0838 0839 6598 LD81 0840 6598 81 0D CMPA #$0D ascii saved BASIC? 0841 659A 27 05 BEQ LD82 0842 659C CE 2000 LDU #TXTADR (else) not basic file 0843 659F 20 09 BRA LD9 0844 0845 65A1 LD82 0846 65A1 DE 33 LDU BASADP 0847 65A3 FF 606B STU SVTOP set save adr 0848 65A6 8D 69 BSR MEMSET2 for ascii saved BASIC 0849 65A8 20 02 BRA LD10 0850 0851 65AA LD9 0852 65AA 8D 35 BSR MEMSET expand memory from rwbuf 0853 0854 65AC LD10 0855 65AC 7F 604E CLR TPGFLG end of top page 0856 65AF 8E 606D LDX #WK1 0857 65B2 17 0678 LBSR INCX4 sct no +1 0858 65B5 7A 604C DEC CNT 0859 65B8 1026 FF61 LBNE LDLOP 0860 0861 65BC LDEND 0862 65BC 7D 604D TST MCFLG 0863 65BF 27 0E BEQ LDE0 0864 65C1 2A 0C BPL LDE0 0865 *fix link pointer 0866 65C3 9E 33 LDX BASADP 0867 65C5 BD C730 JSR FIXPTR 0868 0869 65C8 FC 6044 LDD WFSIZ+2 0870 65CB D3 33 ADDD BASADP 0871 65CD DD 35 STD BASAEP end adrs 0872 65CF 8E 7116 LDE0 LDX #MSLDED 0873 65D2 17 084E LBSR PSTRNG 0874 65D5 17 0790 LDE1 LBSR PCRLF 0875 65D8 39 RTS 0876 0877 65D9 8E 7131 LDNEND LDX #MSNOFL 0878 65DC 17 0844 LBSR PSTRNG 0879 65DF 20 F4 BRA LDE1 0880 0881 *expand in memory from rwbuf 0882 *X:rwbuf, U:memory adr, Y:filesize 0883 65E1 MEMSET EQU * 0884 65E1 34 30 PSHS X,Y 0885 65E3 8E 5E00 LDX #RWBUF 0886 65E6 10BE 6046 LDY FILSIZ 0887 65EA 7D 604E TST TPGFLG top page? 0888 65ED 27 0F BEQ MSLOP 0889 65EF 7D 604D TST MCFLG 0,$FF($FE),etc 0890 65F2 27 04 BEQ MS0 0891 65F4 2A 08 BPL MSLOP etc 0892 65F6 2B 04 BMI MS1 basic file 0893 * machine code 0894 65F8 30 05 MS0 LEAX 5,X skip header 0895 65FA 20 02 BRA MSLOP 0896 65FC 30 03 MS1 LEAX 3,X skip 3 FFs 0897 0898 65FE A6 80 MSLOP LDA ,X+ 0899 6600 A7 C0 STA ,U+ 0900 6602 31 3F LEAY -1,Y 0901 6604 27 05 BEQ MS3 0902 6606 8C 6000 CMPX #RWBUF+512 0903 6609 25 F3 BLO MSLOP 0904 660B 10BF 6046 MS3 STY FILSIZ 0905 660F 35 B0 PULS X,Y,PC 0906 * 0907 *---------- 0908 *after conversion, expand in memory from rwbuf 0909 *X:rwbuf, U:memory adr, Y:filesize 0910 6611 MEMSET2 EQU * 0911 6611 34 30 PSHS X,Y 0912 6613 A6 80 LDA ,X+ 0913 6615 81 0D CMPA #$0D skip top CR 0914 6617 26 0D BNE MEM2ED 0915 6619 A6 84 LDA ,X 0916 661B 81 0A CMPA #$0A skip top LF 0917 661D 26 02 BNE MM21 0918 661F 30 01 LEAX 1,X 0919 6621 MM21 0920 6621 BF 6069 STX RDTOP start rwbuf+2 0921 6624 8D 0B BSR CNVINT 0922 6626 MEM2ED 0923 6626 BE 606B LDX SVTOP 0924 6629 6F 80 CLR ,X+ 0925 662B 6F 80 CLR ,X+ 0926 662D 9F 35 STX BASAEP 0927 662F 35 B0 PULS X,Y,PC 0928 0929 * 0930 6631 CNVINT EQU * 0931 *trans to LINBUF with change CR,LF to 00 0932 *X:rdtop 0933 6631 CNVLOP 0934 6631 BE 6069 LDX RDTOP 0935 6634 108E 043D LDY #LINBUF 0936 0937 6638 INLOP 0938 6638 A6 80 LDA ,X+ 0939 663A A7 A0 STA ,Y+ 0940 *---------------------------- 0941 663C 8C 6000 CMPX #RWBUF+512 0942 663F 25 2A BLO INL11 0943 0944 6641 7A 604C DEC CNT 0945 6644 26 01 BNE INL10 0946 6646 39 RTS 0947 0948 6647 INL10 0949 6647 34 70 PSHS X,Y,U 0950 6649 86 2E LDA #'. 0951 664B BD FBBB JSR OUTCHA 0952 0953 664E 8E 606D LDX #WK1 0954 6651 17 05D9 LBSR INCX4 sct no +1 0955 6654 108E 6004 LDY #SCTN0 0956 6658 C6 04 LDB #4 0957 665A 17 05BC LBSR TRANS 0958 665D 17 0694 LBSR SETSCT 0959 6660 17 05FE LBSR RD1SCT read 1 file data 0960 6663 35 70 PULS X,Y,U 0961 0962 6665 8E 5E00 LDX #RWBUF 0963 6668 BF 6069 STX RDTOP 0964 *---------------------------- 0965 666B 81 0D INL11 CMPA #$0D 0966 666D 26 C9 BNE INLOP 0967 666F A6 80 LDA ,X+ 0968 6671 81 0A CMPA #$0A 0969 6673 27 02 BEQ INL2 0970 6675 30 1F LEAX -1,X 0971 6677 BF 6069 INL2 STX RDTOP next read point 0972 667A 6F 3F CLR -1,Y set terminate 00 0973 667C 6F A4 CLR ,Y 0974 667E 6F 21 CLR 1,Y 0975 0976 *convert 0977 6680 DE D9 LDU $D9 0978 6682 34 40 PSHS U 0979 6684 8E 043D LDX #LINBUF 0980 6687 9F D9 STX $D9 0981 6689 A6 84 LDA ,X 0982 668B 1A 01 ORCC #$01 0983 668D BD 9162 JSR RDLINO read line number 0984 6690 9E 4B LDX $4B 0985 6692 BF 033A STX $33A 0986 6695 0F BF CLR $BF assume keyin 0987 6697 BD FBF1 JSR LININT (=C28C) one line translation 0988 669A 35 40 PULS U 0989 669C DF D9 STU $D9 0990 0991 669E FD 6067 STD CVTLEN store len+1 0992 66A1 10BE 6067 LDY CVTLEN 0993 0994 *trans from TXTBUF to BASIC PROGRAM 0995 66A5 FE 606B LDU SVTOP 0996 66A8 33 42 LEAU 2,U 0997 66AA BE 033A LDX $33A 0998 66AD AF C1 STX ,U++ 0999 66AF 8E 033C LDX #TXTBUF 1000 1001 *save to bas buf 1002 66B2 A6 80 INL12 LDA ,X+ 1003 66B4 A7 C0 STA ,U+ 1004 66B6 31 3F LEAY -1,Y 1005 66B8 26 F8 BNE INL12 1006 1007 66BA BE 606B LDX SVTOP 1008 66BD 1F 10 TFR X,D 1009 66BF F3 6067 ADDD CVTLEN 1010 66C2 ED 84 STD ,X store next pointer 1011 66C4 FD 606B STD SVTOP save next point 1012 1013 66C7 BE 6069 LDX RDTOP 1014 66CA A6 84 LDA ,X 1015 66CC 1026 FF61 LBNE CNVLOP 1016 66D0 39 CEND RTS 1017 1018 *---------- 1019 *X:top of FILE NAME 1020 *return C=1:match,C=0:not match 1021 66D1 CMPFN EQU * 1022 66D1 34 10 PSHS X 1023 66D3 108E 604F LDY #FNAME 1024 66D7 C6 08 LDB #8 1025 66D9 A6 80 CMPLOP LDA ,X+ 1026 66DB 81 E5 CMPA #$E5 delete mark? 1027 66DD 27 0B BEQ NOTM 1028 66DF A1 A0 CMPA ,Y+ 1029 66E1 26 07 BNE NOTM 1030 66E3 5A DECB 1031 66E4 26 F3 BNE CMPLOP 1032 66E6 1A 01 MATCH ORCC #$01 C=1 1033 66E8 20 02 BRA CMPEND 1034 66EA 1C FE NOTM ANDCC #$FE C=0 1035 66EC 35 90 CMPEND PULS X,PC 1036 1037 *------------------------------ 1038 *input filename 1039 *output: 1040 * if exist EXSTFL(directory entry) 1041 * not exist EXSTFL(=0) 1042 66EE GETFDT EQU * 1043 66EE 34 02 PSHS A 1044 66F0 8E 0000 LDX #0 1045 66F3 BF 6065 STX EXSTFL 1046 *return no of DIR 1047 66F6 8E 6016 LDX #SCTDSV 1048 66F9 108E 6012 LDY #SCTDIR 1049 66FD C6 04 LDB #4 1050 66FF 17 0517 LBSR TRANS 1051 1052 6702 35 02 PULS A 1053 6704 81 4D CMPA #'M 1054 6706 26 05 BNE GTF1 1055 6708 8E 70E6 LDX #MSMSV 1056 670B 20 03 BRA GTF2 1057 670D 8E 70D6 GTF1 LDX #MSINFN 1058 6710 17 0710 GTF2 LBSR PSTRNG 1059 6713 17 0166 LBSR INPFLDAT input file name 1060 1061 *set filename 1062 6716 8E 6083 LDX #FILBUF 1063 6719 17 00E9 LBSR SETFNM 1064 1065 671C 8E 6012 LDFL0 LDX #SCTDIR 1066 671F 17 FC9A LBSR SETSNO 1067 6722 17 053C LBSR RD1SCT read 1 sct 1068 1069 6725 8E 5E00 LDX #RWBUF 1070 6728 A6 84 LDFL1 LDA ,X 1071 672A 27 37 BEQ LDFLE if top of filename is 0 then end 1072 672C 81 E5 CMPA #$E5 delete mark? 1073 672E 26 10 BNE LD1 1074 6730 A6 0B LDA 11,X attr 1075 6732 81 20 CMPA #$20 archive file only 1076 6734 27 0A BEQ LD1 1077 6736 30 88 20 LEAX 32,X next directory entry 1078 6739 8C 6000 CMPX #RWBUF+512 over buf? 1079 673C 24 0E BHS LDFL5 1080 673E 20 E8 BRA LDFL1 1081 1082 *check file name 1083 6740 LD1 1084 6740 8D 8F BSR CMPFN C=1:match 1085 6742 25 10 BCS LD2 1086 6744 30 88 20 LEAX 32,X 1087 6747 8C 6000 CMPX #RWBUF+512 1088 674A 25 DC BLO LDFL1 1089 1090 674C LDFL5 1091 674C 8E 6012 LDX #SCTDIR 1092 674F 17 04DB LBSR INCX4 sct no +1 1093 6752 20 C8 BRA LDFL0 1094 1095 *hit file, get dirctory entry 1096 6754 BF 6065 LD2 STX EXSTFL adr of dir entry 1097 6757 108E 601F LDY #DIRENT 1098 675B C6 20 LDB #32 1099 675D 17 04B9 LBSR TRANS 1100 6760 8E 601F LDX #DIRENT 1101 6763 39 LDFLE RTS 1102 1103 * 1104 **************************************** 1105 * KILL FILE 1106 **************************************** 1107 6764 KILFILE EQU * 1108 6764 8D 88 BSR GETFDT 1109 6766 BE 6065 LDX EXSTFL if 0 not exist 1110 6769 27 5B BEQ NOFEND 1111 1112 676B 8E 715C LDX #MSKILL 1113 676E 17 06B2 LBSR PSTRNG 1114 6771 BD 6F12 JSR INOUTC 1115 6774 84 DF ANDA #$DF 1116 6776 81 59 CMPA #'Y 1117 6778 26 3E BNE KILEND 1118 677A 8D 01 BSR KILSUB 1119 677C 39 RTS 1120 1121 *---------- 1122 677D KILSUB EQU * 1123 *write dir 1124 677D BE 6065 LDX EXSTFL top adr of dir entry 1125 6780 EC 88 1A LDD $1A,X get clstlD 1126 6783 1E 89 EXG A,B B:cluster 1127 6785 FD 604A STD CLSTL 1128 6788 86 E5 LDA #$E5 delete mark 1129 678A A7 84 STA ,X 1130 678C 17 03C4 LBSR WRTSD1 1131 1132 *get fat sct & write 1133 678F 8E 600E LDX #SCTFAT 1134 6792 17 FC27 LBSR SETSNO 1135 6795 17 04C9 LBSR RD1SCT read 1 sct 1136 1137 6798 FC 604A LDD CLSTL B:cluster 1138 679B 58 LSLB 1139 679C 7D 6009 TST SDHC sd:0,sdhc:1 1140 679F 27 01 BEQ KL1 1141 67A1 58 LSLB 1142 67A2 8E 5E00 KL1 LDX #RWBUF 1143 67A5 30 85 LEAX B,X 1144 67A7 C6 02 LDB #2 1145 67A9 7D 6009 TST SDHC sd:0,sdhc:1 1146 67AC 27 02 BEQ KL2 1147 67AE C6 04 LDB #4 1148 67B0 6F 80 KL2 CLR ,X+ 1149 67B2 5A DECB 1150 67B3 26 FB BNE KL2 1151 67B5 17 039B LBSR WRTSD1 1152 67B8 KILEND 1153 67B8 39 RTS 1154 1155 * 1156 **************************************** 1157 * Write BASIC FILE 1158 **************************************** 1159 67B9 WRBFILE EQU * 1160 *basic file exist check 1161 67B9 DC 35 LDD BASAEP 1162 67BB 93 33 SUBD BASADP 1163 67BD 1083 0002 CMPD #2 1164 67C1 22 0A BHI WRB0 exist 1165 67C3 17 05A2 LBSR PCRLF 1166 67C6 8E 7131 NOFEND LDX #MSNOFL 1167 67C9 17 0657 LBSR PSTRNG 1168 67CC 39 RTS 1169 1170 *save BASIC program file(binary saved) 1171 67CD 86 FF WRB0 LDA #$FF 1172 67CF B7 604D STA MCFLG set basic file 1173 *input file name 1174 67D2 17 FF19 LBSR GETFDT 1175 67D5 BE 6065 LDX EXSTFL if 0 not exist 1176 67D8 27 11 BEQ WRB1 1177 1178 *confirm over write 1179 67DA 8E 716F LDX #MSEXST 1180 67DD 17 0643 LBSR PSTRNG 1181 67E0 BD 6F12 JSR INOUTC 1182 67E3 84 DF ANDA #$DF 1183 67E5 81 59 CMPA #'Y 1184 67E7 26 1B BNE WRBEND 1185 *delete exist file 1186 67E9 8D 92 BSR KILSUB 1187 1188 67EB WRB1 1189 *set filename 1190 67EB 8E 6083 LDX #FILBUF 1191 67EE 8D 15 BSR SETFNM 1192 1193 *adrs 1194 * BASADP start adr 1195 * BASAEP end adr 1196 * BASEXP exec adr 1197 1198 *main of write routine 1199 *clear dir entry 1200 67F0 8D 2F BSR CLRDIR 1201 1202 67F2 17 0104 LBSR SRCFAT search empty cluster on FAT 1203 67F5 17 0159 LBSR SRCDIR search empty DIR entry 1204 67F8 17 0195 LBSR MKFLDT make file data 1205 67FB 17 021B LBSR WRTFIL write file 1206 67FE 17 03AF LBSR WRTDIR write DIR entry 1207 6801 17 03D9 LBSR WRTFAT set FAT 1208 6804 WRBEND 1209 6804 39 RTS 1210 1211 *------------------------------ 1212 *set filename 1213 6805 SETFNM EQU * 1214 *clear buf 1215 6805 108E 605A LDY #FNAME+11 1216 6809 C6 0B LDB #11 1217 680B 86 20 LDA #$20 1218 680D A7 A2 WRFLP2 STA ,-Y 1219 680F 5A DECB 1220 6810 26 FB BNE WRFLP2 1221 1222 *store filename 1223 6812 A6 80 WRFL1 LDA ,X+ 1224 6814 81 2D CMPA #'- 1225 6816 27 04 BEQ WRFL11 1226 6818 81 30 CMPA #$30 1227 681A 25 04 BLO WRFL2 until delimiter 1228 681C A7 A0 WRFL11 STA ,Y+ 1229 681E 20 F2 BRA WRFL1 1230 6820 WRFL2 1231 6820 39 RTS 1232 1233 *------------------------------ 1234 *clear dir entry 1235 6821 CLRDIR EQU * 1236 6821 8E 601F LDX #DIRENT 1237 6824 C6 20 LDB #32 1238 6826 4F CLRA 1239 6827 17 03FA LBSR FILL 1240 682A 86 20 LDA #$20 set attr 1241 682C A7 0B STA $0B,X 1242 682E 39 RTS 1243 1244 * 1245 **************************************** 1246 * Write MACHINE FILE 1247 **************************************** 1248 682F WRMFILE EQU * 1249 *save machine code 1250 *filename,topadr,endadr,exeadr ...machine file 1251 682F 17 FEBC LBSR GETFDT 1252 6832 BE 6065 LDX EXSTFL if 0 not exist 1253 6835 27 12 BEQ WRM1 1254 1255 *confirm over write 1256 6837 8E 716F LDX #MSEXST 1257 683A 17 05E6 LBSR PSTRNG 1258 683D BD 6F12 JSR INOUTC 1259 6840 84 DF ANDA #$DF 1260 6842 81 59 CMPA #'Y 1261 6844 26 35 BNE WRMEND 1262 *delete exist file 1263 6846 17 FF34 LBSR KILSUB 1264 1265 6849 WRM1 1266 6849 7F 604D CLR MCFLG set machine code(set 0) 1267 1268 *set filename 1269 684C 8E 6083 LDX #FILBUF 1270 684F 8D B4 BSR SETFNM 1271 1272 *set top adr 1273 6851 8D 43 BSR ASC2BIN 1274 6853 10BF 605F STY MCADP start adr 1275 6857 8D 30 BSR SRCDLM 1276 6859 8D 3B BSR ASC2BIN 1277 685B 10BF 6061 STY MCAEP end adr 1278 685F 8D 28 BSR SRCDLM 1279 6861 8D 33 BSR ASC2BIN 1280 6863 10BF 6063 STY MCEXP exec adr 1281 1282 *main of write routine 1283 *clear dir entry 1284 6867 8D B8 BSR CLRDIR 1285 1286 6869 17 008D LBSR SRCFAT search empty cluster on FAT 1287 686C 17 00E2 LBSR SRCDIR search empty DIR entry 1288 686F 17 011E LBSR MKFLDT make file data 1289 6872 17 01A4 LBSR WRTFIL write file 1290 6875 17 0338 LBSR WRTDIR write DIR entry 1291 6878 17 0362 LBSR WRTFAT set FAT 1292 687B WRMEND 1293 687B 39 RTS 1294 1295 *-------------------- 1296 *input filename & parameter to filbuf 1297 687C INPFLDAT EQU * 1298 687C 34 24 PSHS B,Y 1299 687E 108E 6083 LDY #FILBUF 1300 6882 C6 1E LDB #30 1301 6884 17 0692 LBSR LININ 1302 6887 35 A4 PULS B,Y,PC 1303 1304 *-------------------- 1305 *search delimiter 1306 *delimiter:less than $30, excluding '-'($2D) 1307 *return X:point next char of delimiter 1308 6889 SRCDLM EQU * 1309 6889 30 1F LEAX -1,X 1310 688B A6 80 SRDLM1 LDA ,X+ 1311 688D 81 2D CMPA #'- 1312 688F 27 FA BEQ SRDLM1 1313 6891 81 30 CMPA #$30 1314 6893 24 F6 BHS SRDLM1 1315 6895 39 RTS 1316 1317 *-------------------- 1318 *X - X+3, return Y 1319 6896 ASC2BIN EQU * 1320 *clr buf 1321 6896 34 10 PSHS X 1322 6898 8E 607F LDX #CNVBUF 1323 689B 86 30 LDA #$30 1324 689D C6 04 LDB #4 1325 689F 17 0382 LBSR FILL 1326 68A2 35 10 PULS X 1327 1328 *search next delimiter 1329 *return B:char count 1330 68A4 34 10 PSHS X 1331 68A6 5F CLRB 1332 68A7 5C SRLOP1 INCB 1333 68A8 A6 80 LDA ,X+ 1334 68AA 81 30 CMPA #$30 count over $30 1335 68AC 24 F9 BHS SRLOP1 1336 68AE 5A DECB 1337 68AF 35 10 PULS X 1338 1339 *trans 1340 68B1 108E 607F LDY #CNVBUF 1341 68B5 34 04 PSHS B 1342 68B7 C6 04 LDB #4 1343 68B9 E0 E4 SUBB ,S 1344 68BB 31 A5 LEAY B,Y 1345 68BD 35 04 PULS B 1346 68BF A6 80 SRLOP2 LDA ,X+ 1347 68C1 A7 A0 STA ,Y+ 1348 68C3 5A DECB 1349 68C4 26 F9 BNE SRLOP2 1350 1351 *convert to bin 1352 68C6 34 10 PSHS X 1353 68C8 8E 607F LDX #CNVBUF 1354 68CB EC 81 LDD ,X++ 1355 68CD 8D 0F BSR CNVSUB 1356 68CF 34 02 PSHS A 1357 68D1 EC 81 LDD ,X++ 1358 68D3 8D 09 BSR CNVSUB 1359 68D5 1F 89 TFR A,B 1360 68D7 35 02 PULS A 1361 68D9 1F 02 TFR D,Y 1362 68DB 35 10 PULS X 1363 68DD 39 RTS 1364 1365 *cnv sub 1366 *return A 1367 68DE CNVSUB EQU * 1368 68DE 80 30 SUBA #$30 1369 68E0 81 11 CMPA #$11 1370 68E2 25 02 BLO CNV1 1371 68E4 80 07 SUBA #7 1372 68E6 48 CNV1 LSLA 1373 68E7 48 LSLA 1374 68E8 48 LSLA 1375 68E9 48 LSLA 1376 68EA C0 30 SUBB #$30 1377 68EC C1 11 CMPB #$11 1378 68EE 25 02 BLO CNV2 1379 68F0 C0 07 SUBB #7 1380 68F2 C4 0F CNV2 ANDB #$0F 1381 68F4 34 04 PSHS B 1382 68F6 AB E0 ADDA ,S+ 1383 68F8 39 RTS 1384 1385 *-------------------- 1386 * search empty area in FAT 1387 68F9 SRCFAT EQU * 1388 68F9 8E 600E LDX #SCTFAT 1389 68FC 17 FABD LBSR SETSNO 1390 68FF 17 035F LBSR RD1SCT read 1 sct 1391 1392 6902 8E 5E00 LDX #RWBUF 1393 *search $00 1394 6905 SRC0 1395 6905 C6 02 LDB #2 SD 1396 6907 7D 6009 TST SDHC 0:SD,1:SDHC 1397 690A 27 02 BEQ SRCLOP 1398 690C C6 04 LDB #4 SDHC 1399 690E 8D 32 SRCLOP BSR SRC00 search 1st 00 ...1st 00 1400 6910 24 2F BCC SFATED not exist empty area 1401 6912 A6 80 LDA ,X+ next is 00? ..2nd 00 1402 6914 26 EF BNE SRC0 restart 1403 6916 7D 6009 TST SDHC 0:SD,1:SDHC 1404 6919 27 0A BEQ SETX 1405 691B A6 80 LDA ,X+ next is 00? ..3rd 00 1406 691D 26 E6 BNE SRC0 restart 1407 691F A6 80 LDA ,X+ next is 00? ..4th 00 1408 6921 26 E2 BNE SRC0 restart 1409 6923 30 1E LEAX -2,X 1410 6925 SETX 1411 6925 30 1E LEAX -2,X pos in RWBUF 1412 6927 3089 A200 LEAX -RWBUF,X relative pos 1413 692B 1F 10 TFR X,D 1414 692D 44 LSRA 1415 692E 56 RORB 1/2 1416 692F 7D 6009 TST SDHC 0:SD,1:SDHC 1417 6932 27 02 BEQ SETCL 1418 6934 44 LSRA 1419 6935 56 RORB 1/2 1420 6936 FD 604A SETCL STD CLSTL 1421 6939 1E 89 EXG A,B 1422 693B 8E 601F LDX #DIRENT 1423 693E ED 88 1A STD $1A,X set cluster L to dirent 1424 6941 39 SFATED RTS 1425 1426 *search 00 in FAT 1427 6942 8C 6000 SRC00 CMPX #RWBUF+512 1428 6945 24 07 BHS NOEXST 1429 6947 A6 80 LDA ,X+ 1430 6949 26 F7 BNE SRC00 1431 694B 1A 01 EXIST ORCC #$01 set C 1432 694D 39 RTS 1433 694E 1C FE NOEXST ANDCC #$FE reset C 1434 6950 39 RTS 1435 1436 *-------------------- 1437 * search empty DIR entry 1438 * return:DPGNO,DIROFS 1439 6951 SRCDIR EQU * 1440 6951 7F 605A CLR DPGNO 1441 *return no of DIR 1442 6954 8E 6016 LDX #SCTDSV 1443 6957 108E 6012 LDY #SCTDIR 1444 695B C6 04 LDB #4 1445 695D 17 02B9 LBSR TRANS 1446 6960 8E 6012 SRCFL0 LDX #SCTDIR 1447 6963 17 FA56 SRCFL1 LBSR SETSNO 1448 6966 17 02F8 LBSR RD1SCT read 1 sct 1449 1450 6969 8E 5E00 LDX #RWBUF 1451 696C 8C 6000 DLOP1 CMPX #RWBUF+512 1452 696F 24 0D BHS SRCFL5 1453 6971 A6 80 LDA ,X+ 1454 6973 27 15 BEQ DIRGET 1455 6975 81 E5 CMPA #$E5 delete mark? 1456 6977 27 11 BEQ DIRGET 1457 6979 30 88 1F LEAX 32-1,X 1458 697C 20 EE BRA DLOP1 1459 1460 697E 7C 605A SRCFL5 INC DPGNO 1461 6981 8E 6012 LDX #SCTDIR 1462 6984 17 02A6 LBSR INCX4 sct no +1 1463 6987 20 DA BRA SRCFL1 1464 6989 DSPED 1465 6989 39 RTS 1466 1467 698A 30 1F DIRGET LEAX -1,X 1468 698C BF 605B STX DIROFS 1469 698F 39 RTS 1470 1471 *-------------------- 1472 6990 MKFLDT EQU * 1473 *cluster no & attr already set 1474 *file name input&set 1475 6990 8E 604F LDX #FNAME 1476 6993 108E 601F LDY #DIRENT 1477 6997 C6 0B LDB #11 1478 6999 17 027D LBSR TRANS set file name 1479 1480 *cal file size 1481 699C 7D 604D TST MCFLG 00,FF(FE),else 1482 699F 2B 08 BMI MKF1 1483 69A1 FC 6061 LDD MCAEP 1484 69A4 B3 605F SUBD MCADP 1485 69A7 20 04 BRA MKF2 1486 69A9 MKF1 1487 69A9 DC 35 LDD BASAEP 1488 69AB 93 33 SUBD BASADP 1489 69AD MKF2 1490 69AD C3 0001 ADDD #1 1491 69B0 FD 6046 STD FILSIZ 1492 69B3 FD 6075 STD WK0 1493 * EXG A,B 1494 * LDX #DIRENT 1495 * STD $1C,X 1496 1497 *set date (for FM-7) 1498 69B6 8D 12 BSR STDATE 1499 69B8 FC 603F LDD WMDY 1500 69BB 1E 89 EXG A,B 1501 1502 *year,month,day 1503 69BD 8E 601F LDX #DIRENT 1504 69C0 ED 88 18 STD $18,X 1505 69C3 ED 88 10 STD $10,X 1506 69C6 ED 88 12 STD $12,X 1507 69C9 39 RTS 1508 1509 *---------- 1510 *FM day to SD 1511 *retuen WMDY,WMDY+1 1512 69CA STDATE EQU * 1513 69CA 8E 02FA LDX #FMDAT date of FM-7 1514 69CD 108E 603F LDY #WMDY 1515 69D1 C6 03 LDB #3 1516 69D3 34 04 ABLOP PSHS B 1517 69D5 EC 81 LDD ,X++ 1518 69D7 8D 2E BSR APLUSB 1519 69D9 A7 A0 STA ,Y+ 1520 69DB 35 04 PULS B 1521 69DD 26 F4 BNE ABLOP 1522 *year 1523 69DF B6 603F LDA WMDY 1524 69E2 8B 14 ADDA #20 ---2000-1980 1525 69E4 48 LSLA 1526 69E5 B7 603F STA WMDY 1527 *month 1528 69E8 B6 6040 LDA WMDY+1 1529 69EB 48 LSLA 1530 69EC 48 LSLA 1531 69ED 48 LSLA 1532 69EE 48 LSLA 1533 69EF 48 ASLA 1534 69F0 B7 6040 STA WMDY+1 1535 69F3 F6 603F LDB WMDY 1536 69F6 C9 00 ADCB #0 plus C 1537 69F8 F7 603F STB WMDY 1538 *day 1539 69FB B6 6041 LDA WMDY+2 1540 69FE 84 1F ANDA #$1F 1541 6A00 BB 6040 ADDA WMDY+1 1542 6A03 B7 6040 STA WMDY+1 1543 6A06 39 RTS 1544 1545 *lower nibble of A,B to A+B 1546 6A07 APLUSB EQU * 1547 6A07 34 10 PSHS X 1548 6A09 34 04 PSHS B 1549 6A0B C6 0A LDB #10 1550 6A0D 3D MUL 1551 6A0E 1F 01 TFR D,X 1552 6A10 35 04 PULS B 1553 6A12 3A ABX 1554 6A13 1F 10 TFR X,D 1555 6A15 1E 89 EXG A,B A:data 1556 6A17 35 90 PULS X,PC 1557 * 1558 *-------------------- 1559 6A19 WRTFIL EQU * 1560 *calc file size for write to sd 1561 6A19 FC 6075 LDD WK0 1562 6A1C 7D 604D TST MCFLG 0,FF(FE),else 1563 6A1F 27 04 BEQ WRTF0 machine code 1564 6A21 2B 07 BMI WRTF1 basic(binary) 1565 6A23 2A 08 BPL WRTF2 else 1566 6A25 C3 000A WRTF0 ADDD #10 add header(&footer) 1567 6A28 20 03 BRA WRTF2 1568 6A2A C3 0003 WRTF1 ADDD #3 add header 1569 6A2D WRTF2 1570 6A2D FD 6075 STD WK0 number of bytes actually written 1571 6A30 1E 89 EXG A,B 1572 6A32 8E 601F LDX #DIRENT 1573 6A35 ED 88 1C STD $1C,X 1574 6A38 1E 89 EXG A,B 1575 *calc counter (CNT:512byte units) 1576 6A3A 7F 604C CLR CNT 1577 6A3D 7C 604C CALLOP INC CNT 1578 6A40 83 0200 SUBD #512 1579 6A43 24 F8 BHS CALLOP 1580 1581 6A45 86 01 LDA #1 1582 6A47 B7 604E STA TPGFLG set top page 1583 1584 6A4A 7D 604D TST MCFLG 0,FF(FE),else 1585 6A4D 2B 05 BMI WRTF3 1586 6A4F BE 605F LDX MCADP saved top adr 1587 6A52 20 02 BRA WRTF4 1588 6A54 9E 33 WRTF3 LDX BASADP saved top adr 1589 6A56 BF 606D WRTF4 STX WK1 src topadr 1590 6A59 CE 5E00 LDU #RWBUF 1591 1592 *get clusterL 1593 6A5C 8E 601F LDX #DIRENT 1594 6A5F EC 88 1A LDD $1A,X 1595 6A62 1E 89 EXG A,B B:clusterL 1596 1597 6A64 BE 601A LDX SCTCLT sct no of top cluster 1598 6A67 BF 606F STX WK2 1599 6A6A BE 601C LDX SCTCLT+2 1600 6A6D BF 6071 STX WK2+2 1601 1602 6A70 C0 02 SUBB #2 for SD 1603 6A72 7D 6009 TST SDHC 0:SD,1:SDHC 1604 6A75 27 01 BEQ WR2 1605 6A77 5A DECB 1606 6A78 WR2 1607 1608 *(X)..(X+3)+(B)x40h 1609 6A78 8E 606F LDX #WK2 1610 6A7B 17 01BE LBSR ADD40H cal of sct no 1611 1612 *set start sct no of file 1613 6A7E 34 10 PSHS X 1614 6A80 8E 710A LDX #MSWTNG 1615 6A83 17 039D LBSR PSTRNG 1616 6A86 35 10 PULS X 1617 1618 6A88 WRLOP 1619 6A88 86 2E LDA #'. 1620 6A8A BD FBBB JSR OUTCHA 1621 6A8D FC 6075 LDD WK0 1622 6A90 1F 02 TFR D,Y 1623 6A92 1083 0200 CMPD #512 1624 6A96 23 0A BLS WR3 1625 6A98 83 0200 SUBD #512 1626 6A9B FD 6075 STD WK0 1627 6A9E 108E 0200 LDY #512 1628 6AA2 WR3 1629 1630 *write data to rwbuf 1631 * (X)->(U:RWBUF) 1632 * (Y):SIZE 512bytes or Less 1633 6AA2 BE 606D LDX WK1 1634 6AA5 CE 5E00 LDU #RWBUF 1635 6AA8 8D 44 BSR WRSUB 1636 1637 *set to sctn0-3 1638 6AAA 34 30 PSHS X,Y 1639 6AAC 8E 606F LDX #WK2 1640 6AAF 108E 6004 LDY #SCTN0 1641 6AB3 C6 04 LDB #4 1642 6AB5 17 0161 LBSR TRANS 1643 6AB8 35 30 PULS X,Y 1644 1645 *write data to sd 1646 6ABA 17 0093 LBSR WRTSD ...not wrtsd1 1647 1648 *inc sctn0-3 1649 6ABD 8E 606F LDX #WK2 1650 6AC0 17 016A LBSR INCX4 1651 6AC3 BE 606D LDX WK1 src topadr 1652 6AC6 3089 0200 LEAX 512,X 1653 *check top page 1654 6ACA 7D 604E TST TPGFLG top page? 1655 6ACD 27 0D BEQ WR6 no 1656 6ACF 7D 604D TST MCFLG 1657 6AD2 27 04 BEQ WR4 machine code 1658 6AD4 2B 04 BMI WR5 basic(binary) 1659 6AD6 2A 04 BPL WR6 1660 6AD8 30 1E WR4 LEAX -2,X rewind 3or5 1661 6ADA 30 1D WR5 LEAX -3,X 1662 6ADC WR6 1663 6ADC 7F 604E CLR TPGFLG 1664 6ADF BF 606D STX WK1 1665 6AE2 7A 604C DEC CNT 1666 6AE5 26 A1 BNE WRLOP 1667 1668 6AE7 8E 7123 WREND LDX #MSWTED 1669 6AEA 17 0336 LBSR PSTRNG 1670 6AED 39 RTS 1671 1672 *---------- 1673 *write data to rwbuf 1674 * (X)->(U:RWBUF) 1675 * (Y):SIZE 512bytes or Less 1676 *clear rwbuf 1677 6AEE WRSUB EQU * 1678 6AEE 34 30 PSHS X,Y 1679 6AF0 4F CLRA 1680 6AF1 8E 5E00 LDX #RWBUF 1681 6AF4 108E 0200 LDY #512 1682 6AF8 A7 80 WWCLOP STA ,X+ 1683 6AFA 31 3F LEAY -1,Y 1684 6AFC 26 FA BNE WWCLOP 1685 6AFE 35 30 PULS X,Y 1686 1687 *set data to rwbuf 1688 6B00 CE 5E00 LDU #RWBUF 1689 1690 6B03 7D 604E TST TPGFLG 1:top page,0:else 1691 6B06 27 16 BEQ WRS01 no 1692 6B08 7D 604D TST MCFLG 0,$FF($FE),etc 1693 6B0B 2B 32 BMI WRS1 1694 1695 *add header of machine code 1696 6B0D 34 10 PSHS X 1697 6B0F 4F CLRA 1698 6B10 A7 C0 STA ,U+ $00 1699 6B12 BE 6046 LDX FILSIZ 1700 6B15 AF C1 STX ,U++ file size 1701 6B17 BE 605F LDX MCADP 1702 6B1A AF C1 STX ,U++ save adr 1703 6B1C 35 10 PULS X 1704 1705 6B1E WRS01 1706 *check last page 1707 6B1E B6 604C LDA CNT 1708 6B21 81 01 CMPA #1 1709 6B23 26 02 BNE WRS2 1710 6B25 31 3B LEAY -5,Y 1711 *set write data 1712 6B27 8D 1E WRS2 BSR WRDSET 1713 *check last page 1714 6B29 B6 604C LDA CNT 1715 6B2C 81 01 CMPA #1 1716 6B2E 26 0E BNE WRS3 1717 1718 *add footer 1719 6B30 WRS211 1720 * CMPU #RWBUF+512-5 1721 * BLS WRS21 1722 * RTS 1723 6B30 86 FF WRS21 LDA #$FF 1724 6B32 A7 C0 STA ,U+ 1725 6B34 4F CLRA 1726 6B35 A7 C0 STA ,U+ 1727 6B37 A7 C0 STA ,U+ 1728 6B39 BE 6063 LDX MCEXP 1729 6B3C AF C1 STX ,U++ 1730 6B3E 39 WRS3 RTS 1731 1732 6B3F WRS1 1733 *add header of basic file 1734 6B3F 86 FF LDA #$FF 1735 6B41 A7 C0 STA ,U+ 1736 6B43 A7 C0 STA ,U+ 1737 6B45 A7 C0 STA ,U+ 1738 1739 *data set 1740 6B47 A6 80 WRDSET LDA ,X+ 1741 6B49 A7 C0 STA ,U+ 1742 6B4B 31 3F LEAY -1,Y 1743 6B4D 26 F8 BNE WRDSET 1744 6B4F 39 RTS 1745 1746 *write data to sd 1747 6B50 WRTSD EQU * 1748 6B50 17 01A1 LBSR SETSCT *set SCT No 1749 *copy sct no to cmd param 1750 6B53 8E 6004 WRTSD1 LDX #SCTN0 1751 6B56 108E 6F3F LDY #CMD24+1 1752 6B5A C6 04 LDB #4 1753 6B5C 17 00BA LBSR TRANS 1754 *send cmd 1755 6B5F 17 01C1 LBSR SETCKL 1756 6B62 C6 06 LDB #6 1757 6B64 8E 6F3E LDX #CMD24 1758 6B67 A6 80 SDW1 LDA ,X+ 1759 6B69 17 0149 LBSR SNDDAT 1760 6B6C 5A DECB 1761 6B6D 26 F8 BNE SDW1 1762 *get cmd response 1763 6B6F SDW2 1764 6B6F 17 015F LBSR GETDAT 1765 6B72 B6 6008 LDA RESDAT 1766 6B75 81 00 CMPA #$00 1767 6B77 26 F6 BNE SDW2 1768 *1byte skip 1769 6B79 86 FF LDA #$FF 1770 6B7B 17 0137 LBSR SNDDAT 1byte skip 1771 1772 *send data packet 1773 6B7E 8E 5E00 LDX #RWBUF <-temp -1="" 008d="" 0093="" 00b4="" 00b6="" 00ce="" 011a="" 011d="" 0126="" 0129="" 012b="" 0133="" 01="" 0200="" 02="" 03="" 04="" 05="" 06="" 08="" 0:sd="" 0f="" 108e="" 10be="" 12="" 16="" 1774="" 1775="" 1776="" 1777="" 1778="" 1779="" 1780="" 1781="" 1782="" 1783="" 1784="" 1785="" 1786="" 1787="" 1788="" 1789="" 1790="" 1791="" 1792="" 1793="" 1794="" 1795="" 1796="" 1797="" 1798="" 1799="" 17="" 1800="" 1801="" 1802="" 1803="" 1804="" 1805="" 1806="" 1807="" 1808="" 1809="" 1810="" 1811="" 1812="" 1813="" 1814="" 1815="" 1816="" 1817="" 1818="" 1819="" 1820="" 1821="" 1822="" 1823="" 1824="" 1825="" 1826="" 1827="" 1828="" 1829="" 1830="" 1831="" 1832="" 1833="" 1834="" 1835="" 1836="" 1837="" 1838="" 1839="" 1840="" 1841="" 1842="" 1843="" 1844="" 1845="" 1846="" 1847="" 1848="" 1849="" 1850="" 1851="" 1852="" 1853="" 1854="" 1855="" 1856="" 1857="" 1858="" 1859="" 1860="" 1861="" 1862="" 1863="" 1864="" 1865="" 1866="" 1867="" 1868="" 1869="" 1870="" 1871="" 1872="" 1873="" 1874="" 1875="" 1876="" 1877="" 1878="" 1879="" 1880="" 1881="" 1882="" 1883="" 1884="" 1885="" 1886="" 1887="" 1888="" 1889="" 1890="" 1891="" 1892="" 1893="" 1894="" 1895="" 1896="" 1897="" 1898="" 1899="" 1900="" 1901="" 1902="" 1903="" 1904="" 1905="" 1906="" 1907="" 1908="" 1909="" 1910="" 1911="" 1912="" 1913="" 1914="" 1915="" 1916="" 1917="" 1918="" 1919="" 1920="" 1921="" 1922="" 1923="" 1924="" 1925="" 1926="" 1927="" 1928="" 1929="" 1930="" 1931="" 1932="" 1933="" 1934="" 1935="" 1936="" 1937="" 1938="" 1939="" 1940="" 1941="" 1942="" 1943="" 1944="" 1945="" 1946="" 1947="" 1948="" 1949="" 1950="" 1951="" 1952="" 1953="" 1954="" 1955="" 1956="" 1957="" 1958="" 1959="" 1960="" 1961="" 1962="" 1963="" 1964="" 1965="" 1966="" 1967="" 1968="" 1969="" 1970="" 1971="" 1972="" 1973="" 1974="" 1975="" 1976="" 1977="" 1978="" 1979="" 1980="" 1981="" 1982="" 1983="" 1984="" 1985="" 1986="" 1987="" 1988="" 1989="" 1990="" 1991="" 1992="" 1993="" 1994="" 1995="" 1996="" 1997="" 1998="" 1="" 1a="" 1e="" 1f="" 20="" 24="" 26="" 27="" 2="" 31="" 34="" 35="" 36="" 39="" 3="" 3a="" 3d="" 3f="" 40="" 44="" 48="" 4c="" 50="" 54="" 5a="" 5c="" 5e00="" 5e="" 6004="" 6008="" 6009="" 600e="" 6012="" 6016="" 601f="" 605a="" 605b="" 60="" 68="" 6b81="" 6b85="" 6b87="" 6b8a="" 6b8c="" 6b8f="" 6b91="" 6b93="" 6b95="" 6b98="" 6b9b="" 6b9e="" 6ba1="" 6ba3="" 6ba5="" 6ba8="" 6bab="" 6bad="" 6baf="" 6bb0="" 6bb3="" 6bb7="" 6bb9="" 6bbb="" 6bbe="" 6bc1="" 6bc3="" 6bc5="" 6bc6="" 6bc8="" 6bcb="" 6bce="" 6bd1="" 6bd5="" 6bd7="" 6bd9="" 6bdc="" 6bdd="" 6be0="" 6be3="" 6be5="" 6be7="" 6be9="" 6bec="" 6bef="" 6bf1="" 6bf3="" 6bf5="" 6bf8="" 6bfa="" 6bfc="" 6bff="" 6c00="" 6c02="" 6c04="" 6c06="" 6c08="" 6c0a="" 6c0d="" 6c0f="" 6c11="" 6c13="" 6c15="" 6c18="" 6c19="" 6c1b="" 6c1d="" 6c1f="" 6c20="" 6c22="" 6c24="" 6c26="" 6c28="" 6c29="" 6c2b="" 6c2d="" 6c2f="" 6c31="" 6c33="" 6c35="" 6c37="" 6c39="" 6c3b="" 6c3c="" 6c3e="" 6c40="" 6c42="" 6c44="" 6c46="" 6c48="" 6c4a="" 6c4c="" 6c4e="" 6c50="" 6c52="" 6c54="" 6c56="" 6c58="" 6c5a="" 6c5c="" 6c5d="" 6c5f="" 6c61="" 6c64="" 6c68="" 6c6a="" 6c6c="" 6c6f="" 6c71="" 6c74="" 6c76="" 6c78="" 6c79="" 6c7b="" 6c7d="" 6c80="" 6c82="" 6c84="" 6c87="" 6c8b="" 6c8d="" 6c90="" 6c92="" 6c94="" 6c96="" 6c97="" 6c9a="" 6c9d="" 6c="" 6ca1="" 6ca3="" 6ca5="" 6ca8="" 6caa="" 6cac="" 6cad="" 6caf="" 6cb2="" 6cb4="" 6cb5="" 6cb7="" 6cba="" 6cbc="" 6cbe="" 6cc0="" 6cc2="" 6cc5="" 6cc7="" 6cc9="" 6cca="" 6ccc="" 6ccd="" 6ccf="" 6cd1="" 6cd3="" 6cd5="" 6cd7="" 6cd8="" 6cd9="" 6cda="" 6cdc="" 6cdf="" 6ce0="" 6f38="" 6f39="" 70="" 7d="" 7f="" 80="" 81="" 84="" 86="" 88="" 89="" 8a="" 8b="" 8d="" 8e="" 96="" a0="" a6="" a7="" a:fill="" a="" abx="" ad="" add0="" add1="" add2="" add3="" add40h="" adda="" addb="" adr="" adx0="" adx1="" adx2="" adx3="" anda="" b1-="" b6="" b7="" b:cnt="" bcc="" beq="" bne="" bra="" bsr="" buf="" busy="" c6="" cb="" ckrs="" clr="" cluster="" cmd="" cmpa="" copy="" crch="" crcl="" cs:b0="L" d="" data="" decb="" df="" dir="" dirofs="" disp="" dpgno="" dspb1="" dspb2="" dspb3="" dspbin="" dspbuf="" e5="" ec="" ed="" equ="" exg="" f4="" f5="" f6="" f7="" f7cd="" f7f1="" f9="" fb="" fc="" fd9e="" fe="" ff3b="" ff77="" ff="" fill="" filop="" get="" getd1="" getdat="" inc="" incx4="" lbsr="" lda="" ldb="" ldd="" ldx="" ldy="" leay="" lsla="" lsra="" miso:b1="H(for" no="" nop="" of="" ora="" param="" pbdat="" pcrlf="" pia="" pshs="" puls="" rd1="" rd1sct="" rd2="" rd3="" read="" resdat="" response="" return="" rts="" save="" sct="" sd:2="" sdhc:4="" sdhc="" send="" setckh="" setckl="" setsno="" sndd1="" snddat="" snddt1="" src="" sta="" temp="" tfr="" to="" token="" trans="" trlop="" tst="" until="" wait="" wrdlop="" wrdskp="" wrf1="" wrf2="" wrf3="" wrtdir="" wrtfat="" wrtsd1="" wspfl0="" x40h="" y:dst="" y="">C 1999 6CE1 79 6008 ROL RESDAT C->b0 2000 6CE4 5A DECB 2001 6CE5 26 EE BNE GETD1 2002 6CE7 8D 3A BSR SETCKL 2003 6CE9 35 86 PULS A,B,PC 2004 * 2005 *------------------------------ 2006 *input SCT No 2007 6CEB INSCT EQU * 2008 6CEB 8E 7046 LDX #MSSCT 2009 6CEE 17 0132 LBSR PSTRNG 2010 6CF1 17 0085 LBSR GET8CH get 8chr, convert 4bin 2011 2012 6CF4 SETSCT EQU * 2013 6CF4 34 32 PSHS A,X,Y 2014 6CF6 7D 6009 TST SDHC 0:SD,1:SDHC 2015 6CF9 26 1A BNE CALCHC 2016 *SD card 2017 6CFB 8E 6005 LDX #SCTN1 2018 6CFE 108E 6004 LDY #SCTN0 2019 6D02 C6 03 LDB #3 2020 6D04 17 FF12 LBSR TRANS 2021 6D07 7F 6007 CLR SCTN3 2022 *calc top adrs of sct 2023 6D0A CALCSD EQU * 2024 6D0A 78 6007 LSL SCTN3 2025 6D0D 79 6006 ROL SCTN2 2026 6D10 79 6005 ROL SCTN1 2027 6D13 35 B2 PULS A,X,Y,PC 2028 2029 *SDHC card 2030 *calc top adrs of sct 2031 6D15 CALCHC EQU * 2032 6D15 8E 6004 LDX #SCTN0 2033 6D18 108E 6F39 LDY #CMD17+1 2034 6D1C C6 04 LDB #4 2035 6D1E 17 FEF8 LBSR TRANS 2036 6D21 35 B2 PULS A,X,Y,PC 2037 2038 * 2039 *set sck:L 2040 6D23 SETCKL EQU * 2041 6D23 34 02 PSHS A 2042 6D25 86 34 LDA #$34 ca2=L 2043 6D27 B7 FD9F STA PBCTL 2044 6D2A 35 82 PULS A,PC 2045 2046 *set sck:H 2047 6D2C SETCKH EQU * 2048 6D2C 34 02 PSHS A 2049 6D2E 86 3C LDA #$3C ca2=H 2050 6D30 B7 FD9F STA PBCTL 2051 6D33 35 82 PULS A,PC 2052 2053 *binary(A)->ascii(A)(B) 2054 6D35 DSPBIN EQU * 2055 6D35 8D 04 BSR DSPBI0 2056 6D37 BD 6D73 JSR OUTSPC 2057 6D3A 39 RTS 2058 * 2059 6D3B DSPBI0 EQU * 2060 6D3B 34 06 PSHS A,B 2061 6D3D 1F 89 TFR A,B 2062 6D3F 44 LSRA 2063 6D40 44 LSRA 2064 6D41 44 LSRA 2065 6D42 44 LSRA 2066 6D43 8A 30 ORA #$30 2067 6D45 C4 0F ANDB #$0F 2068 6D47 CA 30 ORB #$30 2069 6D49 81 39 CMPA #$39 2070 6D4B 23 02 BLS BI21 2071 6D4D 8B 07 ADDA #$07 2072 6D4F C1 39 BI21 CMPB #$39 2073 6D51 23 02 BLS BI22 2074 6D53 CB 07 ADDB #$07 2075 6D55 BD FBBB BI22 JSR OUTCHA 2076 6D58 1F 98 TFR B,A 2077 6D5A BD FBBB JSR OUTCHA 2078 6D5D 35 86 PULS A,B,PC 2079 2080 * 2081 6D5F DSPBI2 EQU * 2082 6D5F A6 80 LDA ,X+ 2083 6D61 8D D8 BSR DSPBI0 2084 6D63 A6 80 LDA ,X+ 2085 6D65 8D D4 BSR DSPBI0 2086 6D67 39 RTS 2087 2088 * 2089 *crlf 2090 6D68 PCRLF EQU * 2091 6D68 86 0D LDA #CR 2092 6D6A BD FBBB JSR OUTCHA 2093 6D6D 86 0A LDA #LF 2094 6D6F BD FBBB JSR OUTCHA 2095 6D72 39 RTS 2096 2097 *out spc 2098 6D73 OUTSPC EQU * 2099 6D73 86 20 LDA #SPC 2100 6D75 BD FBBB JSR OUTCHA 2101 6D78 39 RTS 2102 2103 * 2104 6D79 GET8CH EQU * 2105 *input chr 2106 6D79 8E 6077 LDX #INPBUF 2107 6D7C 5F CLRB 2108 6D7D BD 6F12 CLOP JSR INOUTC 2109 6D80 81 0D CMPA #CR 2110 6D82 27 07 BEQ INEND 2111 6D84 A7 85 STA B,X 2112 6D86 5C INCB 2113 6D87 C1 08 CMPB #8 2114 6D89 25 F2 BLO CLOP 2115 2116 6D8B INEND 2117 *shift 2118 6D8B 5D TSTB 2119 6D8C 27 21 BEQ CLEND 2120 6D8E 8E 6077 LDX #INPBUF 2121 6D91 3A ABX 2122 6D92 108E 607F LDY #INPBUF+8 2123 6D96 34 04 PSHS B 2124 6D98 A6 82 SFLOP LDA ,-X 2125 6D9A A7 A2 STA ,-Y 2126 6D9C 5A DECB 2127 6D9D 26 F9 BNE SFLOP 2128 *clr 2129 6D9F C6 08 CL1 LDB #8 2130 6DA1 E0 E0 SUBB ,S+ 2131 6DA3 27 0A BEQ CLEND 2132 6DA5 8E 6077 LDX #INPBUF 2133 6DA8 86 30 LDA #'0 2134 6DAA A7 80 CLLOP STA ,X+ 2135 6DAC 5A DECB 2136 6DAD 26 FB BNE CLLOP 2137 6DAF CLEND 2138 2139 *convert to bin 2140 6DAF C6 04 LDB #4 2141 6DB1 8E 6077 LDX #INPBUF 2142 6DB4 108E 6004 LDY #SCTN0 2143 6DB8 CVT1 2144 6DB8 A6 80 LDA ,X+ 2145 6DBA 8D 1E BSR CVBIN 2146 6DBC 25 16 BCS EREND1 2147 6DBE 48 LSLA 2148 6DBF 48 LSLA 2149 6DC0 48 LSLA 2150 6DC1 48 LSLA 2151 6DC2 34 02 PSHS A 2152 6DC4 A6 80 LDA ,X+ 2153 6DC6 8D 12 BSR CVBIN 2154 6DC8 25 08 BCS EREND0 2155 6DCA AB E0 ADDA ,S+ 2156 6DCC A7 A0 STA ,Y+ 2157 6DCE 5A DECB 2158 6DCF 26 E7 BNE CVT1 2159 6DD1 39 RTS 2160 2161 6DD2 35 02 EREND0 PULS A 2162 6DD4 8E 708C EREND1 LDX #MSERR 2163 6DD7 8D 4A BSR PSTRNG 2164 6DD9 39 EEND RTS 2165 2166 *-------------------- 2167 *ascii -> bin 2168 6DDA CVBIN EQU * 2169 6DDA 80 30 SUBA #'0 2170 6DDC 2B 11 BMI CVERR 2171 6DDE 81 09 CMPA #9 2172 6DE0 23 0A BLS CVBEND 2173 6DE2 81 11 CMPA #$11 2174 6DE4 25 09 BLO CVERR 2175 6DE6 81 16 CMPA #$16 2176 6DE8 22 05 BHI CVERR 2177 6DEA 80 07 SUBA #7 2178 6DEC CVBEND 2179 6DEC 1C FE ANDCC #$FE reset C 2180 6DEE 39 RTS 2181 6DEF 1A 01 CVERR ORCC #$01 set C 2182 6DF1 39 RTS 2183 2184 *-------------------- 2185 *add 2bytes to 4bytes 2186 * X,X+1,X+2,X+3 + Y,Y+1 2187 * data X is big endian 2188 * data Y is little endian 2189 6DF2 ADD42 EQU * 2190 6DF2 34 36 PSHS A,B,X,Y 2191 6DF4 32 7C LEAS -4,S 2192 6DF6 C6 04 LDB #4 2193 6DF8 A6 80 AD1 LDA ,X+ 2194 6DFA A7 E0 STA ,S+ 2195 6DFC 5A DECB 2196 6DFD 26 F9 BNE AD1 2197 2198 *add (lower) 2199 6DFF A6 A0 LDA ,Y+ 2200 6E01 AB E2 ADDA ,-S 2201 6E03 A7 E4 STA ,S 2202 6E05 24 02 BCC AD2 2203 6E07 6C 7F INC -1,S 2204 *add (upper) 2205 6E09 A6 A4 AD2 LDA ,Y 2206 6E0B AB E2 ADDA ,-S 2207 6E0D A7 E4 STA ,S 2208 6E0F 24 02 BCC AD3 2209 6E11 6C 7F INC -1,S 2210 6E13 30 1C AD3 LEAX -4,X 2211 6E15 32 7E LEAS -2,S 2212 6E17 C6 04 LDB #4 2213 6E19 A6 E0 AD4 LDA ,S+ 2214 6E1B A7 80 STA ,X+ 2215 6E1D 5A DECB 2216 6E1E 26 F9 BNE AD4 2217 6E20 35 36 PULS A,B,X,Y 2218 6E22 39 RTS 2219 2220 *-------------------- 2221 * pstring 2222 6E23 PSTRNG EQU * 2223 6E23 34 02 PSHS A 2224 6E25 A6 80 PSLOP LDA ,X+ 2225 6E27 81 04 CMPA #4 2226 6E29 27 05 BEQ PSEND 2227 6E2B BD FBBB JSR OUTCHA 2228 6E2E 20 F5 BRA PSLOP 2229 6E30 35 02 PSEND PULS A 2230 6E32 39 RTS 2231 2232 *-------------------- 2233 *disp MM-DD-YY 2234 *indata A(Low),B(High) 2235 6E33 DSPYMD EQU * 2236 6E33 1E 89 EXG A,B 2237 6E35 34 10 PSHS X 2238 6E37 34 06 PSHS A,B 2239 6E39 C4 E0 ANDB #$E0 2240 6E3B 54 LSRB 2241 6E3C 54 LSRB 2242 6E3D 54 LSRB 2243 6E3E 54 LSRB 2244 6E3F 54 LSRB 2245 6E40 47 ASRA 2246 6E41 24 02 BCC DYMD1 2247 6E43 CB 08 ADDB #8 2248 6E45 F7 603F DYMD1 STB WMDY MM 2249 6E48 35 06 PULS A,B 2250 6E4A 34 04 PSHS B 2251 6E4C C4 1F ANDB #$1F 2252 6E4E F7 6040 STB WMDY+1 DD 2253 6E51 35 04 PULS B 2254 2255 6E53 44 LSRA 2256 * ASLB 2257 * BCC DYMD2 2258 * INCA 2259 6E54 DYMD2 2260 6E54 80 14 SUBA #20 A+1980-2000 2261 6E56 B7 6041 STA WMDY+2 YY 2262 2263 *disp MM-DD-YY 2264 6E59 BD 6D73 JSR OUTSPC 2265 6E5C 8E 603F LDX #WMDY 2266 6E5F A6 80 LDA ,X+ 2267 6E61 8D 14 BSR DB2ASC MM 2268 6E63 86 2D LDA #'- 2269 6E65 BD FBBB JSR OUTCHA 2270 6E68 A6 80 LDA ,X+ 2271 6E6A 8D 0B BSR DB2ASC DD 2272 6E6C 86 2D LDA #'- 2273 6E6E BD FBBB JSR OUTCHA 2274 6E71 A6 80 LDA ,X+ 2275 6E73 8D 02 BSR DB2ASC YY 2276 6E75 35 90 PULS X,PC 2277 * 2278 *---------- 2279 *convert decimal value to ascii code 2280 *(A:BIN)->ASCII 2281 6E77 DB2ASC EQU * 2282 6E77 34 06 PSHS A,B 2283 6E79 1F 89 TFR A,B 2284 6E7B 86 30 LDA #$30 2285 6E7D C1 0A DBLOP CMPB #10 2286 6E7F 25 05 BLO DB2 2287 6E81 C0 0A SUBB #10 2288 6E83 4C INCA 2289 6E84 20 F7 BRA DBLOP 2290 6E86 BD FBBB DB2 JSR OUTCHA 2291 6E89 1F 98 TFR B,A 2292 6E8B 8B 30 ADDA #$30 2293 6E8D BD FBBB JSR OUTCHA 2294 6E90 35 86 PULS A,B,PC 2295 2296 *disp FILE size 2297 6E92 DSPSIZ EQU * 2298 6E92 34 10 PSHS X 2299 6E94 BE 6042 LDX WFSIZ 2300 6E97 27 07 BEQ DSS1 if 64k over? 2301 6E99 8E 7157 LDX #MSOVR 2302 6E9C 8D 85 BSR PSTRNG 2303 6E9E 20 3E BRA DSEND 2304 2305 6EA0 DSS1 2306 * /1024(400h) 2307 6EA0 B6 6044 LDA WFSIZ+2 under 64k 2308 6EA3 44 LSRA 2309 6EA4 44 LSRA 2310 *disp dec 2311 6EA5 1F 89 TFR A,B 2312 6EA7 81 64 CMPA #100 2313 6EA9 23 10 BLS DSS13 2314 6EAB 86 30 LDA #'0 2315 6EAD C1 64 DSLOP1 CMPB #100 2316 6EAF 25 05 BLO DSS12 2317 6EB1 C0 64 SUBB #100 2318 6EB3 4C INCA 2319 6EB4 20 F7 BRA DSLOP1 2320 6EB6 BD FBBB DSS12 JSR OUTCHA 2321 6EB9 20 09 BRA DSS14 2322 2323 *under 100 2324 6EBB BD 6D73 DSS13 JSR OUTSPC 2325 6EBE 86 20 LDA #SPC 2326 6EC0 C1 0A CMPB #10 2327 6EC2 25 0B BLO DSS2 2328 2329 6EC4 86 30 DSS14 LDA #'0 2330 6EC6 C1 0A DSLOP2 CMPB #10 2331 6EC8 25 05 BLO DSS2 2332 6ECA C0 0A SUBB #10 2333 6ECC 4C INCA 2334 6ECD 20 F7 BRA DSLOP2 2335 2336 6ECF BD FBBB DSS2 JSR OUTCHA 10's place 2337 *under 10 2338 6ED2 1F 98 DSS21 TFR B,A 2339 6ED4 8B 31 ADDA #$31 '1 2340 6ED6 BD FBBB DSS3 JSR OUTCHA 1's place 2341 6ED9 86 6B LDA #'k 2342 6EDB BD FBBB JSR OUTCHA 2343 6EDE BD 6D73 DSEND JSR OUTSPC 2344 6EE1 35 90 PULS X,PC 2345 2346 *---------- 2347 *disp cluster 2348 *return:clusterL 2349 6EE3 DSPCLS EQU * 2350 6EE3 34 10 PSHS X 2351 6EE5 BD 6D73 JSR OUTSPC 2352 6EE8 8E 604A LDX #CLSTL 2353 6EEB C6 02 LDB #2 2354 6EED A6 80 DCLOP1 LDA ,X+ 2355 6EEF 8D 86 BSR DB2ASC 2356 6EF1 5A DECB 2357 6EF2 26 F9 BNE DCLOP1 2358 6EF4 35 90 PULS X,PC 2359 2360 *---------- 2361 6EF6 FNMIN EQU * 2362 *clr buf 2363 6EF6 8E 605A LDX #FNAME+11 2364 6EF9 C6 0B LDB #8+3 2365 6EFB 86 20 LDA #SPC 2366 6EFD A7 82 FNIN0 STA ,-X 2367 6EFF 5A DECB 2368 6F00 26 FB BNE FNIN0 2369 2370 *fname in 2371 6F02 34 24 PSHS B,Y 2372 6F04 108E 604F LDY #FNAME 2373 6F08 C6 08 LDB #8 2374 6F0A 8D 0D BSR LININ 2375 6F0C 86 20 LDA #$20 2376 6F0E A7 3F STA -1,Y 2377 6F10 35 A4 PULS B,Y,PC 2378 * 2379 *-------------------- 2380 * 2381 6F12 BD FBB8 INOUTC JSR INCHA 2382 6F15 BD FBBB JSR OUTCHA 2383 6F18 39 RTS 2384 * 2385 *-------------------- 2386 * line input 2387 * input: B:count, Y:buf 2388 * output: FILBUF (terminate $00) 2389 * temp buf $043D - $053C 2390 6F19 LININ EQU * 2391 6F19 0F BF CLR $BF 2392 6F1B BD D807 JSR LININP 2393 2394 6F1E 8E 043D LDX #$043D 2395 6F21 A6 80 LINLOP LDA ,X+ 2396 6F23 A7 A0 STA ,Y+ 2397 6F25 5A DECB 2398 6F26 27 03 BEQ LEND 2399 6F28 4D TSTA 2400 6F29 26 F6 BNE LINLOP 2401 6F2B 39 LEND RTS 2402 2403 * 2404 ************************************************** 2405 *========== parameter ========== 2406 6F2C 40 CMD0 FCB $40,$00,$00,$00,$00,$95 '@ 2407 6F32 41 CMD1 FCB $41,$00,$00,$00,$00,$FF 'A 2408 6F38 51 CMD17 FCB $51,$00,$00,$00,$00,$FF 'Q 2409 6F3E 58 CMD24 FCB $58,$00,$00,$00,$00,$FF 'X 2410 6F44 48 CMD8 FCB $48,$00,$00,$01,$AA,$87 'H 2411 6F4A 7A CMD58 FCB $7A,$00,$00,$00,$00,$FF 'z 2412 6F50 77 CMD55 FCB $77,$00,$00,$00,$00,$FF 'w 2413 6F56 69 ACMD41 FCB $69,$40,$FF,$80,$00,$FF 'i 2414 6F5C 49 CMD9 FCB $49,$00,$00,$00,$00,$FF 'I 2415 * 2416 6F62 43 MCMD0 FCC /CMD0/,CR,LF 2417 6F68 04 FCB 4 2418 6F69 43 MCMD8 FCC /CMD8/,CR,LF 2419 6F6F 04 FCB 4 2420 6F70 43 MCMD58 FCC /CMD58/,CR,LF 2421 6F77 04 FCB 4 2422 6F78 43 MCMD55 FCC /CMD55/,CR,LF 2423 6F7F 04 FCB 4 2424 6F80 41 MCMD41 FCC /ACMD41/,CR,LF 2425 6F88 04 FCB 4 2426 6F89 43 MCMD9 FCC /CMD9/,CR,LF 2427 6F8F 04 FCB 4 2428 * 2429 6F90 0D MSMENU1 FCC CR,LF,CR,LF,/Main MENU/ 2430 6F9D 0D FCC CR,LF,/F)iles, L)oad, saveB)asic, saveM)code, K)ill, reS)etSD, O)ption, Q)uit: / 2431 6FE8 04 FCB 4 2432 6FE9 0D MSMENU2 FCC CR,LF,CR,LF,/Option MENU/ 2433 6FF9 0D FCC CR,LF,/1:Read Sct, 2:Disp SD data, 3:Disp MBR, 4:Disp BPB, 5:Disp FAT, 0:Return: / 2434 7045 04 FCB 4 2435 7046 53 MSSCT FCC /SctNo: / 2436 704D 04 FCB 4 2437 704E 0D MSSD0 FCC CR,LF,/SD Card/ 2438 7057 04 FCB 4 2439 7058 0D MSSD1 FCC CR,LF,/SDHC Card/ 2440 7063 04 FCB 4 2441 7064 0D MSINIT FCC CR,LF,CR,LF,/SD Card setting.../ 2442 707A 04 FCB 4 2443 707B 53 MERR FCC /Setting error!/,CR,LF 2444 708B 04 FCB 4 2445 708C 49 MSERR FCC /Input error!/,CR,LF 2446 709A 04 FCB 4 2447 709B 0D MSOFS FCC CR,LF,/Sector no is:/ 2448 70AA 04 FCB 4 2449 70AB 0D MSBPB FCC CR,LF,/ BPB: / 2450 70B3 04 FCB 4 2451 70B4 0D MSFAT FCC CR,LF,/ FAT: / 2452 70BC 04 FCB 4 2453 70BD 0D MSDIR FCC CR,LF,/ DIR: / 2454 70C5 04 FCB 4 2455 70C6 0D MSCL2 FCC CR,LF,/ 1stCLUSTER: / 2456 70D5 04 FCB 4 2457 70D6 0D MSINFN FCC CR,LF,CR,LF,/ FileName: / 2458 70E5 04 FCB 4 2459 70E6 0D MSMSV FCC CR,LF,CR,LF,/ FileName & Param: / 2460 70FD 04 FCB 4 2461 70FE 0D MSLDNG FCC CR,LF,/ Loading / 2462 7109 04 FCB 4 2463 710A 0D MSWTNG FCC CR,LF,/ Writing / 2464 7115 04 FCB 4 2465 7116 0D MSLDED FCC CR,LF,/ Load end./ 2466 7122 04 FCB 4 2467 7123 0D MSWTED FCC CR,LF,/ Write end./ 2468 7130 04 FCB 4 2469 7131 0D MSNOFL FCC CR,LF,/ Not exist!/ 2470 713E 04 FCB 4 2471 713F 0D MSNXTP FCC CR,LF,"Next page (SP:Next): " 2472 7156 04 FCB 4 2473 7157 3E MSOVR FCC />64k/ 2474 715B 04 FCB 4 2475 715C 0D MSKILL FCC CR,LF," Kill OK?(Y/N): " 2476 716E 04 FCB 4 2477 716F 0D MSEXST FCC CR,LF," Exist! Over Write?(Y/N): " 2478 718B 04 FCB 4 2479 718C 0D MSMCOF FCC CR,LF," Offset -$2000?(Y/N): " 2480 71A4 04 FCB 4 2481 71A5 0D MSMCAS FCC CR,LF," Store ADR,SIZE: " 2482 71B8 04 FCB 4 2483 ************************************************** 2484 2485 END START 0 error(s), 0 warning(s) is detected. Label address ABLOP 69D3 ACMD41 6F56 AD1 6DF8 AD2 6E09 AD3 6E13 AD4 6E19 ADD0 6C3E ADD1 6C4C ADD2 6C54 ADD3 6C5C ADD40H 6C3C ADD42 6DF2 ADX0 6C2D ADX1 6C33 ADX2 6C37 ADX3 6C3B APLUSB 6A07 ASC2BIN 6896 ASC411 6218 ASCMD41 620B BASADP 0033 BASAEP 0035 BASEXP 605D BI21 6D4F BI22 6D55 BUSY 6BA5 CALCHC 6D15 CALCSD 6D0A CALLOP 6A3D CEND 66D0 CKRS 6B9B CL1 6D9F CLEND 6DAF CLLOP 6DAA CLOP 6D7D CLRDIR 6821 CLSTH 6048 CLSTL 604A CMD0 6F2C CMD1 6F32 CMD17 6F38 CMD24 6F3E CMD55 6F50 CMD58 6F4A CMD8 6F44 CMD9 6F5C CMPEND 66EC CMPFN 66D1 CMPLOP 66D9 CNT 604C CNV1 68E6 CNV2 68F2 CNVBUF 607F CNVINT 6631 CNVLOP 6631 CNVSUB 68DE CR 000D CSRON FBF7 CVBEND 6DEC CVBIN 6DDA CVERR 6DEF CVT1 6DB8 CVTLEN 6067 DB2 6E86 DB2ASC 6E77 DBLOP 6E7D DCLOP1 6EED DELMK 00E5 DIRENT 601F DIRGET 698A DIROFS 605B DLOP1 696C DPGNO 605A DSEND 6EDE DSLOP1 6EAD DSLOP2 6EC6 DSPB1 6CA1 DSPB2 6CA3 DSPB3 6CB4 DSPBI0 6D3B DSPBI2 6D5F DSPBIN 6D35 DSPBPB 63E2 DSPBUF 6C97 DSPC1 6473 DSPCKE 6433 DSPCLS 6EE3 DSPDIR 6406 DSPED 6989 DSPEND 64A9 DSPFAT 63F4 DSPFL0 6412 DSPFL1 6423 DSPFL2 643D DSPFL3 643F DSPFL4 644E DSPFL5 6491 DSPFL6 649D DSPMBR 638E DSPSDDAT 62FE DSPSIZ 6E92 DSPYMD 6E33 DSS1 6EA0 DSS12 6EB6 DSS13 6EBB DSS14 6EC4 DSS2 6ECF DSS21 6ED2 DSS3 6ED6 DYMD1 6E45 DYMD2 6E54 EEND 6DD9 EREND0 6DD2 EREND1 6DD4 ESC 001B EXIST 694B EXSTFL 6065 FILBUF 6083 FILL 6C24 FILOP 6C26 FILSIZ 6046 FIXPTR C730 FMDAT 02FA FNAME 604F FNIN0 6EFD FNMIN 6EF6 GET1 6399 GET2 639B GET8CH 6D79 GETBPB 63C9 GETD1 6CD5 GETDAT 6CD1 GETFDT 66EE GETMBR 63AC GR00 6185 GR2580 6245 GR2581 625C GR2582 625E GR410 6220 GR550 6201 GR580 61D7 GR581 61E1 GR582 61E3 GR80 61A7 GR81 61B9 GR90 6311 GR91 631D GTBLOP 63D4 GTF1 670D GTF2 6710 ILOP1 6281 INCHA FBB8 INCX4 6C2D INEND 6D8B INIT 60C7 INL10 6647 INL11 666B INL12 66B2 INL2 6677 INLOP 6638 INOUTC 6F12 INPBUF 6077 INPFLDAT 687C INSCT 6CEB ISTT 616B KILEND 67B8 KILFILE 6764 KILSUB 677D KL1 67A2 KL2 67B0 LD1 6740 LD10 65AC LD2 6754 LD3 64CF LD41 64F4 LD5 650D LD8 654F LD80 6594 LD81 6598 LD82 65A1 LD9 65AA LDE0 65CF LDE1 65D5 LDEND 65BC LDFILE 64AA LDFL0 671C LDFL1 6728 LDFL5 674C LDFLE 6763 LDLOP 651D LDNEND 65D9 LEND 6F2B LF 000A LINBUF 043D LININ 6F19 LININP D807 LININT FBF1 LINLOP 6F21 LINO1 004B LINO2 033A MAIN 60A3 MATCH 66E6 MCADP 605F MCAEP 6061 MCEXP 6063 MCFLG 604D MCMD0 6F62 MCMD41 6F80 MCMD55 6F78 MCMD58 6F70 MCMD8 6F69 MCMD9 6F89 MEM2ED 6626 MEMSET 65E1 MEMSET2 6611 MENU 60CA MENU1 60E4 MENU2 60ED MENU3 60F6 MENU4 60FF MENU5 6108 MENU6 6110 MENU7 6118 MERR 707B MKF1 69A9 MKF2 69AD MKFLDT 6990 MM21 6621 MS0 65F8 MS1 65FC MS3 660B MSBPB 70AB MSCL2 70C6 MSDIR 70BD MSERR 708C MSEXST 716F MSFAT 70B4 MSINFN 70D6 MSINIT 7064 MSKILL 715C MSLDED 7116 MSLDNG 70FE MSLOP 65FE MSMCAS 71A5 MSMCOF 718C MSMENU1 6F90 MSMENU2 6FE9 MSMSV 70E6 MSNOFL 7131 MSNXTP 713F MSOFS 709B MSOVR 7157 MSSCT 7046 MSSD0 704E MSSD1 7058 MSWTED 7123 MSWTNG 710A NOEXST 694E NOFEND 67C6 NOTM 66EA OPMEN10 614F OPMEN6 612F OPMEN7 6137 OPMEN8 613F OPMEN9 6147 OPMENU 6120 OUTCHA FBBB OUTSPC 6D73 PBCTL FD9F PBDAT FD9E PCRLF 6D68 PSEND 6E30 PSLOP 6E25 PSTRNG 6E23 RD1 6C74 RD1SCT 6C61 RD2 6C7B RD3 6C8B RDLINO 9162 RDSCT 637B RDTOP 6069 RESDAT 6008 RPT41 61EC RWBUF 5E00 SC01 617C SC2581 623D SC551 61F9 SC581 61CF SC80 619F SC91 6309 SCMD0 6174 SCMD258 6230 SCMD55 61EC SCMD58 61C2 SCMD8 6192 SCTBPB 600A SCTCLT 601A SCTDIR 6012 SCTDSV 6016 SCTFAT 600E SCTN0 6004 SCTN1 6005 SCTN2 6006 SCTN3 6007 SCTPCL 601E SD1 6272 SDERR 6157 SDHC 6009 SDINIT 615E SDW1 6B67 SDW2 6B6F SETCKH 6D2C SETCKL 6D23 SETCL 6936 SETFNM 6805 SETSCT 6CF4 SETSNO 63BC SETX 6925 SFATED 6941 SFLOP 6D98 SKP1 62B8 SKP2 62F5 SNDD1 6CBC SNDDAT 6CB5 SNDDT1 6B8A SPC 0020 SRC0 6905 SRC00 6942 SRCDIR 6951 SRCDLM 6889 SRCFAT 68F9 SRCFL0 6960 SRCFL1 6963 SRCFL5 697E SRCLOP 690E SRDLM1 688B SRLOP1 68A7 SRLOP2 68BF START 6000 STDATE 69CA STTADR 6000 SVTOP 606B TPGFLG 604E TRANS 6C19 TRLOP 6C1B TXTADR 2000 TXTBUF 033C VN 6003 WFSIZ 6042 WK0 6075 WK1 606D WK2 606F WK3 6071 WK4 6073 WMDY 603F WR2 6A78 WR3 6AA2 WR4 6AD8 WR5 6ADA WR6 6ADC WRB0 67CD WRB1 67EB WRBEND 6804 WRBFILE 67B9 WRDLOP 6BC3 WRDSET 6B47 WRDSKP 6BC8 WREND 6AE7 WRF1 6BFC WRF2 6BFF WRF3 6C15 WRFL1 6812 WRFL11 681C WRFL2 6820 WRFLP2 680D WRLOP 6A88 WRM1 6849 WRMEND 687B WRMFILE 682F WRS01 6B1E WRS1 6B3F WRS2 6B27 WRS21 6B30 WRS211 6B30 WRS3 6B3E WRSUB 6AEE WRTDIR 6BB0 WRTF0 6A25 WRTF1 6A2A WRTF2 6A2D WRTF3 6A54 WRTF4 6A56 WRTFAT 6BDD WRTFIL 6A19 WRTSD 6B50 WRTSD1 6B53 WSPFL0 6BBB WWCLOP 6AF8 -temp><-temp -1="" 008d="" 0093="" 00b4="" 00b6="" 00ce="" 011a="" 011d="" 0126="" 0129="" 012b="" 0133="" 01="" 0200="" 02="" 03="" 04="" 05="" 06="" 08="" 0:sd="" 0f="" 108e="" 10be="" 12="" 16="" 1774="" 1775="" 1776="" 1777="" 1778="" 1779="" 1780="" 1781="" 1782="" 1783="" 1784="" 1785="" 1786="" 1787="" 1788="" 1789="" 1790="" 1791="" 1792="" 1793="" 1794="" 1795="" 1796="" 1797="" 1798="" 1799="" 17="" 1800="" 1801="" 1802="" 1803="" 1804="" 1805="" 1806="" 1807="" 1808="" 1809="" 1810="" 1811="" 1812="" 1813="" 1814="" 1815="" 1816="" 1817="" 1818="" 1819="" 1820="" 1821="" 1822="" 1823="" 1824="" 1825="" 1826="" 1827="" 1828="" 1829="" 1830="" 1831="" 1832="" 1833="" 1834="" 1835="" 1836="" 1837="" 1838="" 1839="" 1840="" 1841="" 1842="" 1843="" 1844="" 1845="" 1846="" 1847="" 1848="" 1849="" 1850="" 1851="" 1852="" 1853="" 1854="" 1855="" 1856="" 1857="" 1858="" 1859="" 1860="" 1861="" 1862="" 1863="" 1864="" 1865="" 1866="" 1867="" 1868="" 1869="" 1870="" 1871="" 1872="" 1873="" 1874="" 1875="" 1876="" 1877="" 1878="" 1879="" 1880="" 1881="" 1882="" 1883="" 1884="" 1885="" 1886="" 1887="" 1888="" 1889="" 1890="" 1891="" 1892="" 1893="" 1894="" 1895="" 1896="" 1897="" 1898="" 1899="" 1900="" 1901="" 1902="" 1903="" 1904="" 1905="" 1906="" 1907="" 1908="" 1909="" 1910="" 1911="" 1912="" 1913="" 1914="" 1915="" 1916="" 1917="" 1918="" 1919="" 1920="" 1921="" 1922="" 1923="" 1924="" 1925="" 1926="" 1927="" 1928="" 1929="" 1930="" 1931="" 1932="" 1933="" 1934="" 1935="" 1936="" 1937="" 1938="" 1939="" 1940="" 1941="" 1942="" 1943="" 1944="" 1945="" 1946="" 1947="" 1948="" 1949="" 1950="" 1951="" 1952="" 1953="" 1954="" 1955="" 1956="" 1957="" 1958="" 1959="" 1960="" 1961="" 1962="" 1963="" 1964="" 1965="" 1966="" 1967="" 1968="" 1969="" 1970="" 1971="" 1972="" 1973="" 1974="" 1975="" 1976="" 1977="" 1978="" 1979="" 1980="" 1981="" 1982="" 1983="" 1984="" 1985="" 1986="" 1987="" 1988="" 1989="" 1990="" 1991="" 1992="" 1993="" 1994="" 1995="" 1996="" 1997="" 1998="" 1="" 1a="" 1e="" 1f="" 20="" 24="" 26="" 27="" 2="" 31="" 34="" 35="" 36="" 39="" 3="" 3a="" 3d="" 3f="" 40="" 44="" 48="" 4c="" 50="" 54="" 5a="" 5c="" 5e00="" 5e="" 6004="" 6008="" 6009="" 600e="" 6012="" 6016="" 601f="" 605a="" 605b="" 60="" 68="" 6b81="" 6b85="" 6b87="" 6b8a="" 6b8c="" 6b8f="" 6b91="" 6b93="" 6b95="" 6b98="" 6b9b="" 6b9e="" 6ba1="" 6ba3="" 6ba5="" 6ba8="" 6bab="" 6bad="" 6baf="" 6bb0="" 6bb3="" 6bb7="" 6bb9="" 6bbb="" 6bbe="" 6bc1="" 6bc3="" 6bc5="" 6bc6="" 6bc8="" 6bcb="" 6bce="" 6bd1="" 6bd5="" 6bd7="" 6bd9="" 6bdc="" 6bdd="" 6be0="" 6be3="" 6be5="" 6be7="" 6be9="" 6bec="" 6bef="" 6bf1="" 6bf3="" 6bf5="" 6bf8="" 6bfa="" 6bfc="" 6bff="" 6c00="" 6c02="" 6c04="" 6c06="" 6c08="" 6c0a="" 6c0d="" 6c0f="" 6c11="" 6c13="" 6c15="" 6c18="" 6c19="" 6c1b="" 6c1d="" 6c1f="" 6c20="" 6c22="" 6c24="" 6c26="" 6c28="" 6c29="" 6c2b="" 6c2d="" 6c2f="" 6c31="" 6c33="" 6c35="" 6c37="" 6c39="" 6c3b="" 6c3c="" 6c3e="" 6c40="" 6c42="" 6c44="" 6c46="" 6c48="" 6c4a="" 6c4c="" 6c4e="" 6c50="" 6c52="" 6c54="" 6c56="" 6c58="" 6c5a="" 6c5c="" 6c5d="" 6c5f="" 6c61="" 6c64="" 6c68="" 6c6a="" 6c6c="" 6c6f="" 6c71="" 6c74="" 6c76="" 6c78="" 6c79="" 6c7b="" 6c7d="" 6c80="" 6c82="" 6c84="" 6c87="" 6c8b="" 6c8d="" 6c90="" 6c92="" 6c94="" 6c96="" 6c97="" 6c9a="" 6c9d="" 6c="" 6ca1="" 6ca3="" 6ca5="" 6ca8="" 6caa="" 6cac="" 6cad="" 6caf="" 6cb2="" 6cb4="" 6cb5="" 6cb7="" 6cba="" 6cbc="" 6cbe="" 6cc0="" 6cc2="" 6cc5="" 6cc7="" 6cc9="" 6cca="" 6ccc="" 6ccd="" 6ccf="" 6cd1="" 6cd3="" 6cd5="" 6cd7="" 6cd8="" 6cd9="" 6cda="" 6cdc="" 6cdf="" 6ce0="" 6f38="" 6f39="" 70="" 7d="" 7f="" 80="" 81="" 84="" 86="" 88="" 89="" 8a="" 8b="" 8d="" 8e="" 96="" a0="" a6="" a7="" a:fill="" a="" abx="" ad="" add0="" add1="" add2="" add3="" add40h="" adda="" addb="" adr="" adx0="" adx1="" adx2="" adx3="" anda="" b1-="" b6="" b7="" b:cnt="" bcc="" beq="" bne="" bra="" bsr="" buf="" busy="" c6="" cb="" ckrs="" clr="" cluster="" cmd="" cmpa="" copy="" crch="" crcl="" cs:b0="L" d="" data="" decb="" df="" dir="" dirofs="" disp="" dpgno="" dspb1="" dspb2="" dspb3="" dspbin="" dspbuf="" e5="" ec="" ed="" equ="" exg="" f4="" f5="" f6="" f7="" f7cd="" f7f1="" f9="" fb="" fc="" fd9e="" fe="" ff3b="" ff77="" ff="" fill="" filop="" get="" getd1="" getdat="" inc="" incx4="" lbsr="" lda="" ldb="" ldd="" ldx="" ldy="" leay="" lsla="" lsra="" miso:b1="H(for" no="" nop="" of="" ora="" param="" pbdat="" pcrlf="" pia="" pshs="" puls="" rd1="" rd1sct="" rd2="" rd3="" read="" resdat="" response="" return="" rts="" save="" sct="" sd:2="" sdhc:4="" sdhc="" send="" setckh="" setckl="" setsno="" sndd1="" snddat="" snddt1="" src="" sta="" temp="" tfr="" to="" token="" trans="" trlop="" tst="" until="" wait="" wrdlop="" wrdskp="" wrf1="" wrf2="" wrf3="" wrtdir="" wrtfat="" wrtsd1="" wspfl0="" x40h="" y:dst="" y=""> -temp>
私はこのカードを、FM-7用のプログラムを使い慣れたWindowsPC上のエディタで作成してFM-7に転送したり、逆に、FM-7上で動作しているプログラムをWindowsPCに保存したりするのに利用していますが、それなりに使えるツールではないかと感じています。
また、テストしてくださった知人のアイディアですが、SD上にフォルダがあってもFM-7では見えないのですが、逆にそれを利用して、フォルダ中にFM-7用のファイルを複数入れて(隠して)おき、必要な時にその中から必要なフィルをフォルダの外に出してFM-7で使用するという使い方も便利そうです。
0 件のコメント:
コメントを投稿