2023年5月20日土曜日

コンパイラ作成の試み その1「ハイクラスC言語」のリストを入力



 コンパイラを作ってみたくて「ハイクラスC言語」のリストを入力してみました

昔からコンパイラの自作に憧れていまして、入手した書籍は十数冊になると思いますが、本をいくら読んでも(もちろん、完全に理解できるまで読み込めていないのですが)、コンパイラ(あるいはインタプリタ)の構造についてはおぼろげには理解できたような気がしても、実際のプログラムをどのように構成すればよいのかが良く分かりませんでした。

目標は6809用の整数型のコンパイラの自作なので、特に具体的なコード生成手法を知りたいのですが、何しろコンパイラの本というのは理論的な本が多くて、、、


今までに読んだ本で印象に残っている本を挙げると、


・明解入門 コンパイラ・インタプリタ開発 (林晴比古 SoftBank社)
 分かりやすかったのですが、変数の使える電卓プログラムまででめげました。

・Go言語でつくるインタプリタ (Thorsten Ball著、設楽洋爾訳 技術評論社)
 段階ごとにテストで確認しながら進む手法に感心しましたが、使ったことがないGo言語に戸惑いながらでしたので、途中で力尽きました。

・コンパイラ 作りながら学ぶ (中田育男 オーム社)
 言わずと知れた中田先生の本です。この本で扱われているPL/0をFLEX9上のMicroCコンパイラを使用して6809に移植しようと試みたのですが、私には無理でした。

・Z80CPU対応 新言語作成の技法 (大貫広幸著 MIA社)
 ほとんど使用経験のないZ80の本ですが、この本で初めてコード生成の具体的手法を知りました。後半はPC-8801とCP/M-80で動作するコンパイラ言語Stellarのアセンブルリストが掲載されています。(いつかCP/M-80版を入力してみたいです。120ページ以上ありますが

・ハイクラスC言語 (末石吾朗、小林優 技術評論社)
 具体的なコード生成に重点を置いているので読みやすいです。仮想マシンの命令コードを設定して、それに対応するコンパイラと、生成された仮想コードを解釈・実行するインタプリタのソースリストが掲載されています。

何冊読んでもなかなか進めないので、思い切って作り始めようと考えたのですが、実は今までにも始めながら途中で投げ出したことが数回ありますので、ゼロから作り始めるのは無理だと考えて、大昔に購入して本棚に入れたままになっていた「ハイクラスC言語」中のリストをまず入力して、その仮想マシンの部分を6809に置き換えるという方針で始めることにしました。




何とプログラムリストの一部が欠落していた


コンパイラプログラムmccとインタプリタプログラムmaiを入力してみました。
入力してみて初めて分かったのですが、何とmccの8個のファイルのうちの c_dec.c のリストが抜け落ちているのです。。。(誤植にしてはヒドイ...)
ただ、その中に3つの関数があることは分かっていて、それらの処理内容も本文中に書かれているので、既に他のファイルは入力してしまったこともあり、何とか自分で記述するしかないと覚悟をしました。
(ちなみに、所有しているのは平成5年の初版で誤植が非常に多いのですが、30年前のものなので、出版社のサイトを見ても関連する資料が見つかりません...)

作成しなければならない関数は、変数宣言を処理する vardec()、関数を処理する function()、文をコンパイルする statement()の3つです。
その仕様についての解説です。

vardec関数の仕様

function関数の仕様

statement関数の仕様


四苦八苦しながら2週間近くかかって何とかエラーが出ない状態にすることができましたが、その過程でプログラムの構造について結構理解が進んだような気がしますので、結果的には良かったと考えることにします。


30年も前の書籍ですし、今更リストを入力しようとする方もおられないとは思いますが、私が書いた c_dec.c を下に示しておきます。(書籍中のリストにこれを追加することで、一応、正常に動作すると思います。)

  1. /*********************************************************************** ****                               **** **** c_dec.c Micro C Compiler declaration procedure file <span>    </span>**** ****                               **** ***********************************************************************/#include <stdio.h>#include <stdlib.h>#include <string.h>#include <ctype.h>#include "c_mcc.h" /*************************************************************** *    vardec()    変数宣言の処理 *      戻り値:  なし *      引数:   なし ***************************************************************/void vardec(void){  do {    getsym();    if (sym != IDENT)      puterr("Variable ID expected.");    getsym();    if (sym != LBRCKT) {  /* 単純変数 */      enter(VAR_SMPL);      gen(VAR_SMPL, lblcnt++);    }    else {          /* 配列変数 */      getsym();      if (isdigit(sym) != 0)        puterr("Number expected.");      enter(VAR_ARY);      gen(VAR_ARY, lblcnt++);             getsym();      if (sym != RBRCKT)        puterr("']' expected.");      getsym();    }  } while(sym == COMMA);     if (sym != SEMICOL)    puterr("';' expected.");  getsym();} /*************************************************************** *    function()    関数処理 *      戻り値:  なし *      引数:   なし ***************************************************************/void function(void){  int i, mflag;  int j;     source_f();  if ((i = position()) < 0) {    label(lblcnt++, fp);//    enter(FUNCID);    enter(UNDEFID);  }  else {    if (strcmp(id, "main") == 0) {    /* if "main" */      j = 0;      while (strcmp(idtbl[j].name, id) != 0 && j <= idcnt) {        j++;      }      if (j < idcnt) {       /* already exist */        if (idtbl[j].kind != UNDEFID) {          puterr("Symbol redeclarated.");        }        else {          mflag = ON;          label(0, fp);//          enter(BLTFUNC);          idtbl[j].kind = BLTFUNC;          idtbl[j].addr = j;        }      }    }    else if (idtbl[i].kind == UNDEFID) {      label(idtbl[i].addr, fp);//      enter(FUNCID);      idtbl[i].kind = FUNCID;//      idtbl[i].addr = lblcnt;    }    else      puterr("Symbol redeclarated.");  }     getsym();  if (sym == LBRACE) {//    i = 0;//    while (strcmp(id, idtbl[i].name) != 0 && i < idcnt)//      i++;//    label(idtbl[i].addr, fp);    getsym();    while (sym != RBRACE) {      statement();      if (sym == EOFSYM)        puterr("'}' expected.");    }//      if (strcmp(id, "main") == 0 && mflag == ON) { /* if "main" */      if (mflag == ON) {  /* if "main" */        gen(JUMP, 1);        mflag = OFF;      } else        gen(RET, DUMY);//    }  }  else    puterr("'{' expected.");     getsym();} /*************************************************************** *    statement()   文処理 *      戻り値:  なし *      引数:   なし ***************************************************************/void statement(void){  switch (sym) {    case IDENT:          assign();          break;    case IFSYM:          if_proc();          break;    case WHILESYM:          while_proc();          break;    case DOSYM:          do_while();          break;    case CALLSYM:          call_proc();          break;    case INPUTSYM:          input_proc();          break;    case PRINTSYM:          print_proc();          break;    case PRTLNSYM:          print_proc();          gen(NEW_LINE, 0);          break;    case LBRACE:          lbrace();          break;    case SEMICOL:          getsym();          break;    default:      puterr("statement expected.");  }}
c_dec.c
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160

わずか160行ほどのプログラムの作成に2週間もかかってしまって情けないですが、他の関数の動作を推測・確認しながらでしたので、こんなものかなと、、、

入力して出来上がった言語mcコンパイラ・アセンブラの仕様ですが、2バイトの整数型のもので、次に示したhit & blowの例で大体の雰囲気が分かってもらえるかと思います。

var i, j, inp, cnt;
var ans[4], in[4];
var hit, blow;
var flag[10], endflag, once_more;

main
{
println "*** Hit & Blow ***";
println "Guess 4 digit number (Miunus to abort)";
do {
call game;
print "Once more ( YES: 1, NO: other ) ? ";
input once_more;
} while (once_more == 1);
println "See you again !";
}

game
{
call init;
cnt = 1;
endflag = 0;
do {
call inpnum;
if (inp < 0)
endflag = 1;
else
call compare;
cnt = cnt + 1;
} while (endflag == 0);
}

init
{
i = 0;
while (i < 10) {
flag[i] = 0;
i = i + 1;
}
i = 0;
while (i < 4) {
ans[i] = rnd % 10;
while (flag[ans[i]] != 0)
ans[i] = rnd % 10;
flag[ans[i]] = 1;
i = i + 1;
}
}

inpnum
{
do {
print "Guess ? ";
input inp;
if (inp >= 10000)
println "Too Big. Re-enter!";
} while (inp >= 10000);
in[0] = inp / 1000;
in[1] = (inp % 1000) / 100;
in[2] = (inp % 100) / 10;
in[3] = inp % 10;
}

compare
{
hit = 0;
blow = 0;
i = 0;
while (i < 4) {
j = 0;
while (j < 4) {
if (ans[j] == in[i]) blow = blow + 1;
if (j == 1) if (ans[j] == in[i]) hit = hit + 1;
j = j + 1;
}
i = i + 1;
}
blow = blow - hit;
print cnt, " times.  ";
if (hit == 4) {
println "Match !!";
endflag = 1;
}
else println "Hit=", hit, " Blow=", blow;
}

このコンパイラの拡張例として、言語仕様の拡張(関数の引数、戻り値、ローカル変数の追加)や、特定CPUのコードを生成するための手順が解説されていますので、これをベースにして、仮想マシンのコードを生成している部分を6809の命令に置き換えることができれば6809のコンパイラができるはずですので、ぜひ実現させたいと思っています。

以上、書籍「ハイクラスC言語」中のコンパイラ・インタプリタのリストを入力してみたという紹介でした。




2023年5月19日金曜日

FM-7にRTCとSDを接続する試み(SDカード編 その5 修正版です)

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にする必要があることも指摘していただきました。


  1. 0001        *0002        *  SDRWFM.TXT0003        *0004        *  SD Read/Write for FM-70005        *0006        *    use RTC & SD Card0007        *0008        *    6821(PIA) Port A -- RTC (I2C Mode)0009        *0010        *        SBC     RTC                 Ext IO0011        *    CA2  2  --       --  HV4 LV4 --   IO10012        *    PA0  3  --  SCL  --  HV1 LV1 --   IO40013        *    PA1  4  --       --  HV2 LV2 --   IO30014        *    PA7 10  --  SDA  --  HV3 LV3 --   IO20015        *    GND     --       --          --   GND0016        *            --       --          --   3V30017        *0018        *                     0019        *    6821(PIA) Port B -- SD (SPI Mode)0020        *0021        *        SBC                  SD0022        *    CB2 12  --  HV4 LV4 --   SCK0023        *    PB0 13  --  HV1 LV1 --   CS0024        *    PB1 14  --  HV2 LV2 --   MISO0025        *    PB7 20  --  HV3 LV3 --   MOSI0026        *    GND 31  --          --   GND0027        *    VCC 33  --          --   VCC0028        *0029        *    cf. all data line use level converter0030        *0031        *    PB  output mode0032        *    CB2 1bit output0033        *0034        *    READ/WRITE BUFFER  $5E00 - 5FFF0035        *0036        *    Ascii program readable '2023.04.180037        *    Fix date routine       '2023.04.120038        *    Implement write cmd    '2023.04.070039        *    Add command            '2023.03.140040        *    Change use Port B      '2023.03.070041        *    Original version       '2022.06.110042        *         Copyright by Y.Yamamoto0043        *0044  6000      STTADR  EQU     $6000       0045        0046  FBB8      INCHA   EQU     $FBB8       for FM-70047  FBBB      OUTCHA  EQU     $FBBB       for FM-70048  FBF7      CSRON   EQU     $FBF7       for FM-70049  D807      LININP  EQU     $D807       for FM-7 (to $043D- )0050        *DEVNO EQU $BF for FM-70051  043D      LINBUF  EQU     $043D       1 line input buffer for F-BASIC0052  033C      TXTBUF  EQU     $033C       text buffer after conversion for F-BASIC0053  9162      RDLINO  EQU     $9162       read line number for F-BASIC0054  FBF1      LININT  EQU     $FBF1       (=C28C) one line translation for F-BASIC0055  C730      FIXPTR  EQU     $C730       fix link pointer of binary saved file for F-BASIC0056  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-70066  FD9E      PBDAT   EQU     $FD9E       for FM-70067  FD9F      PBCTL   EQU     PBDAT+1     0068  0033      BASADP  EQU     $33         (33,34) pointer for F-BASIC0069  0035      BASAEP  EQU     $35         (35,36) pointer for F-BASIC0070  2000      TXTADR  EQU     $2000       load adr for TEXT0071  00E5      DELMK   EQU     $E5         delete mark0072        0073  6000              ORG     STTADR      0074        0075  6000  16  00A0  START   LBRA    MAIN        0076  6003  01    VN      FCB     1           version no0077  6004  00    SCTN0   FCB     0           top adrs of sct0078  6005  00    SCTN1   FCB     0           0079  6006  00    SCTN2   FCB     0           0080  6007  00    SCTN3   FCB     0           0081  6008  00    RESDAT  FCB     0           response data0082  6009  00    SDHC    FCB     0           sd:0,sdhc:10083        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:#30094  601E  00    SCTPCL  FCB     0           sct per cluster0095  601F  FF    DIRENT  RMB     32          directory entry0096  603F  FF    WMDY    RMB     3           mon,day,year0097  6042  FF    WFSIZ   RMB     4           file size(4bytes)0098  6046  FF    FILSIZ  RMB     2           file size0099  6048  0000    CLSTH   FDB     00          cluster High0100  604A  0000    CLSTL   FDB     00          cluster Low0101  604C  00    CNT     FCB     0           0102  604D  00    MCFLG   FCB     0           0:machine code, $FF,$FE:binary save 1:else0103  604E  00    TPGFLG  FCB     0           1:top page 0:else0104  604F  FF    FNAME   RMB     11          file name(8+3)0105  605A  00    DPGNO   FCB     0           page no of empty dir entry0106  605B  0000    DIROFS  FDB     00          offset of empty dir entry0107  605D  0000    BASEXP  FDB     00          basic exe adr0108  605F  0000    MCADP   FDB     00          machine code start adr0109  6061  0000    MCAEP   FDB     00          machine code end adr0110  6063  0000    MCEXP   FDB     00          machine dode exec adr0111  6065  0000    EXSTFL  FDB     00          ofset of exist dir entry0112  6067  0000    CVTLEN  FDB     00          length of converted text0113  6069  0000    RDTOP   FDB     00          adr of read point0114  606B  0000    SVTOP   FDB     00          adr of saved point0115  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:output0128  60A3  86  30          LDA     #$30        0129  60A5  B7  FD9F          STA     PBCTL       select ddra, cb2:00130  60A8  86  FD          LDA     #$FD        pb0,7:out,pb1:in0131  60AA  B7  FD9E          STA     PBDAT       set output mode0132  60AD  86  34          LDA     #$34        0133  60AF  B7  FD9F          STA     PBCTL       select peripheral,cb2:00134         0135        *for pia exist check0136  60B2  86  55          LDA     #$55        test data0137  60B4  B7  FD9E          STA     PBDAT       0138  60B7  B6  FD9E          LDA     PBDAT       0139  60BA  84  FD          ANDA    #$FD        pb1=00140  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-BASIC0145        0146  60C7      INIT    EQU     *           0147  60C7  17  0094          LBSR    SDINIT      0148        0149        ****************************************0150        * MAIN MENU0151        ****************************************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 on0158  60D6  BD  6F12          JSR     INOUTC      0159  60D9  84  DF          ANDA    #$DF        to upper0160        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-BASIC0193        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-BASIC0229        0230        ****************************************0231        * SD Initialize routine0232        ****************************************0233  615E      SDINIT  EQU     *           0234        *---------- start ----------0235  615E  8E  7064          LDX     #MSINIT     0236  6161  17  0CBF          LBSR    PSTRNG      0237        * cs:1,di:1,sck>74ms0238  6164  86  FF          LDA     #$FF        mosi:b7=H,miso:b1=H(for PIA),cs:b0=H0239  6166  B7  FD9E          STA     PBDAT       0240  6169  C6  50          LDB     #80         80times0241  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 response0256  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 cmd0269  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 response0277  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 cmd0295  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 response0303  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 cmd0318  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 response0326        * CLRB0327  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 cmd0337  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 response0345  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 cmd0357  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 response0365  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 10376  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 BPB0389  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#10399  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 & SDHC0406  629E  17  0B51          LBSR    ADD42       0407         0408        *set sct no of DIR0409  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 SD0414  62B0  7D  6009          TST     SDHC        0:SD,1:SDHC0415  62B3  27  03          BEQ     SKP1        0416  62B5  C6  0E          LDB     #$24-$16    0417  62B7  3A            ABX           for SDHC0418  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#20422         0423        *save no of directory0424  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 cluster0430  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#20435  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 SD0444  62ED  7D  6009          TST     SDHC        0445  62F0  27  03          BEQ     SKP2        0446  62F2  B6  601E          LDA     SCTPCL      for SDHC0447  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 ROUTINE0454        * use CMD90455        ****************************************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 response0466  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,ff0473  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#20480  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 ROUTINE0515        * use CMD170516        * set sctno to SCTN2,SCTN30517        * read data set to RWBUF0518        ****************************************0519  637B      RDSCT   EQU     *           0520  637B  17  09EA          LBSR    PCRLF       0521  637E  17  096A          LBSR    INSCT       input sct no0522  6381  17  08DD          LBSR    RD1SCT      read 1 sct0523        0524        *disp data0525  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 BPB0532        ****************************************0533  638E      DSPMBR  EQU     *           0534  638E  17  09D7          LBSR    PCRLF       0535  6391  8D  19          BSR     GETMBR      0536        0537        *disp BPB0538  6393  17  09D2          LBSR    PCRLF       0539  6396  8E  5FBE          LDX     #RWBUF+446    1st BPB point0540  6399  C6  10  GET1    LDB     #16         0541  639B  A6  80  GET2    LDA     ,X+         0542  639D  17  0995          LBSR    DSPBIN      disp data0543  63A0  5A            DECB          0544  63A1  26  F8          BNE     GET2        0545  63A3  17  09C2          LBSR    PCRLF       0546  63A6  8C  5FFE          CMPX    #RWBUF+510    446+16*40547  63A9  25  EE          BLO     GET1        0548  63AB  39            RTS           0549        0550        *----------------------------------------0551        *read MBR0552  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 00557  63B5  17  093C          LBSR    SETSCT      0558  63B8  17  08A6          LBSR    RD1SCT      read 1 sct0559  63BB  39            RTS           0560        0561        *----------------------------------------0562        *set sector no to SCTN00563        *from X,X+1,X+2,X+3 to SCTN0-SCTN30564  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 BPB0573  63C9      GETBPB  EQU     *           0574  63C9  8D  E1          BSR     GETMBR      0575        *set sct no of BPB0576  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 sct0585  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 sct0594         0595        *disp BPB0596  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#10603        ****************************************0604  63F4      DSPFAT  EQU     *           0605  63F4  8E  600E          LDX     #SCTFAT     0606  63F7  8D  C3          BSR     SETSNO      0607  63F9  17  0865          LBSR    RD1SCT      read 1 sct0608         0609        *disp FAT0610  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 Directory0617        ****************************************0618  6406      DSPDIR  EQU     *           0619        *return no of DIR0620  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 sct0627         0628        *disp FILE name0629  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 end0635  6429  81  E5          CMPA    #$E5        delete mark?0636  642B  27  06          BEQ     DSPCKE      0637  642D  A6  0B          LDA     11,X        attr0638        * CMPA #$0F long file name?0639        * BEQ DSPCKE0640        * CMPA #$10 directory?0641        * BEQ DSPCKE0642  642F  81  20          CMPA    #$20        0643  6431  27  0A          BEQ     DSPFL2      archive file only0644  6433  30  88 20 DSPCKE  LEAX    32,X        next directory entry0645  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 filename0651  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 ext0657  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 data0666  6456  30  07          LEAX    7,X         0667  6458  EC  81          LDD     ,X++        0668  645A  FD  606D          STD     WK1         0669        0670        *get CLUSTER(H) data0671  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 data0680  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 size0688  647A  BD  6D73          JSR     OUTSPC      0689  647D  17  0A12          LBSR    DSPSIZ      disp FILE size0690        0691        *disp FILE time0692  6480  FC  606D          LDD     WK1         0693  6483  17  09AD          LBSR    DSPYMD      disp MM-DD-YY0694        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 +10703  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 FILE0713        ****************************************0714  64AA      LDFILE  EQU     *           0715  64AA  17  0241          LBSR    GETFDT      0716  64AD  BE  6065          LDX     EXSTFL      if 0 not exist0717  64B0  1027  0125          LBEQ    LDNEND      0718         0719        *get cluster no0720  64B4  EC  88 14         LDD     $14,X       0721  64B7  1E  89          EXG     A,B         0722  64B9  FD  6048          STD     CLSTH       high cluster no0723  64BC  EC  88 1A         LDD     $1A,X       0724  64BF  1E  89          EXG     A,B         0725  64C1  FD  604A          STD     CLSTL       low cluster no0726        *sub start cluster no (SD:2,SDHC:3)0727  64C4  83  0002          SUBD    #2          0728  64C7  7D  6009          TST     SDHC        SD:0,SDHC:10729  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 no0735  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 file0741        *(B)x40h0742  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 size0748  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 size0759  6500  1E  89          EXG     A,B         0760  6502  44            LSRA          0761  6503  56            RORB          0762  6504  C3  0001          ADDD    #1          wfsiz/$200+10763         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 counter0769  6510  F7  604E          STB     TPGFLG      set top page0770         0771        *set start sct no of file0772  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 data0785         0786  6534  7D  604E          TST     TPGFLG      top sector page?0787  6537  27  71          BEQ     LD9         0788         0789        *at top sector, ini set0790        *offset 00 data is0791        *  $00    :machine code0792        *  $0D    :BASIC PROGRAM (ascii save)0793        *  $FF,$FE:BASIC PROGRAM (binary save)0794        *  else   :general text0795  6539  10BE  6044          LDY     WFSIZ+2     0796  653D  10BF  6046          STY     FILSIZ      set file size0797         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 code0802  654B  2A  4B          BPL     LD81        ascii saved basic or else0803  654D  2B  45          BMI     LD80        binary saved basic0804        *at machine code, read header0805  654F  10AE  01  LD8     LDY     1,X         get file size0806  6552  10BF  6046          STY     FILSIZ      0807  6556  EE  03          LDU     3,X         get store addr0808        *disp store adr, size0809  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 offset0834  6592  20  16          BRA     LD9         0835         0836  6594  DE  33  LD80    LDU     BASADP      basic file0837  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 file0843  659F  20  09          BRA     LD9         0844         0845  65A1      LD82          0846  65A1  DE  33          LDU     BASADP      0847  65A3  FF  606B          STU     SVTOP       set save adr0848  65A6  8D  69          BSR     MEMSET2     for ascii saved BASIC0849  65A8  20  02          BRA     LD10        0850         0851  65AA      LD9           0852  65AA  8D  35          BSR     MEMSET      expand memory from rwbuf0853         0854  65AC      LD10          0855  65AC  7F  604E          CLR     TPGFLG      end of top page0856  65AF  8E  606D          LDX     #WK1        0857  65B2  17  0678          LBSR    INCX4       sct no +10858  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 pointer0866  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 adrs0872  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 rwbuf0882        *X:rwbuf, U:memory adr, Y:filesize0883  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),etc0890  65F2  27  04          BEQ     MS0         0891  65F4  2A  08          BPL     MSLOP       etc0892  65F6  2B  04          BMI     MS1         basic file0893        * machine code0894  65F8  30  05  MS0     LEAX    5,X         skip header0895  65FA  20  02          BRA     MSLOP       0896  65FC  30  03  MS1     LEAX    3,X         skip 3 FFs0897        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 rwbuf0909        *X:rwbuf, U:memory adr, Y:filesize0910  6611      MEMSET2 EQU     *           0911  6611  34  30          PSHS    X,Y         0912  6613  A6  80          LDA     ,X+         0913  6615  81  0D          CMPA    #$0D        skip top CR0914  6617  26  0D          BNE     MEM2ED      0915  6619  A6  84          LDA     ,X          0916  661B  81  0A          CMPA    #$0A        skip top LF0917  661D  26  02          BNE     MM21        0918  661F  30  01          LEAX    1,X         0919  6621      MM21          0920  6621  BF  6069          STX     RDTOP       start rwbuf+20921  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 000932        *X:rdtop0933  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 +10955  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 data0960  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 point0972  667A  6F  3F          CLR     -1,Y        set terminate 000973  667C  6F  A4          CLR     ,Y          0974  667E  6F  21          CLR     1,Y         0975        0976        *convert0977  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 number0984  6690  9E  4B          LDX     $4B         0985  6692  BF  033A          STX     $33A        0986  6695  0F  BF          CLR     $BF         assume keyin0987  6697  BD  FBF1          JSR     LININT      (=C28C) one line translation0988  669A  35  40          PULS    U           0989  669C  DF  D9          STU     $D9         0990         0991  669E  FD  6067          STD     CVTLEN      store len+10992  66A1  10BE  6067          LDY     CVTLEN      0993         0994        *trans from TXTBUF to BASIC PROGRAM0995  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 buf1002  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 pointer1011  66C4  FD  606B          STD     SVTOP       save next point1012         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 NAME1020        *return C=1:match,C=0:not match1021  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=11033  66E8  20  02          BRA     CMPEND      1034  66EA  1C  FE  NOTM    ANDCC   #$FE        C=01035  66EC  35  90  CMPEND  PULS    X,PC        1036        1037        *------------------------------1038        *input filename1039        *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 DIR1047  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 name1060         1061        *set filename1062  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 sct1068         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 end1072  672C  81  E5          CMPA    #$E5        delete mark?1073  672E  26  10          BNE     LD1         1074  6730  A6  0B          LDA     11,X        attr1075  6732  81  20          CMPA    #$20        archive file only1076  6734  27  0A          BEQ     LD1         1077  6736  30  88 20         LEAX    32,X        next directory entry1078  6739  8C  6000          CMPX    #RWBUF+512    over buf?1079  673C  24  0E          BHS     LDFL5       1080  673E  20  E8          BRA     LDFL1       1081        1082        *check file name1083  6740      LD1           1084  6740  8D  8F          BSR     CMPFN       C=1:match1085  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 +11093  6752  20  C8          BRA     LDFL0       1094         1095        *hit file, get dirctory entry1096  6754  BF  6065  LD2     STX     EXSTFL      adr of dir entry1097  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 FILE1106        ****************************************1107  6764      KILFILE EQU     *           1108  6764  8D  88          BSR     GETFDT      1109  6766  BE  6065          LDX     EXSTFL      if 0 not exist1110  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 dir1124  677D  BE  6065          LDX     EXSTFL      top adr of dir entry1125  6780  EC  88 1A         LDD     $1A,X       get clstlD 1126  6783  1E  89          EXG     A,B         B:cluster1127  6785  FD  604A          STD     CLSTL       1128  6788  86  E5          LDA     #$E5        delete mark1129  678A  A7  84          STA     ,X          1130  678C  17  03C4          LBSR    WRTSD1      1131         1132        *get fat sct & write1133  678F  8E  600E          LDX     #SCTFAT     1134  6792  17  FC27          LBSR    SETSNO      1135  6795  17  04C9          LBSR    RD1SCT      read 1 sct1136         1137  6798  FC  604A          LDD     CLSTL       B:cluster1138  679B  58            LSLB          1139  679C  7D  6009          TST     SDHC        sd:0,sdhc:11140  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:11146  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 FILE1158        ****************************************1159  67B9      WRBFILE EQU     *           1160        *basic file exist check1161  67B9  DC  35          LDD     BASAEP      1162  67BB  93  33          SUBD    BASADP      1163  67BD  1083  0002          CMPD    #2          1164  67C1  22  0A          BHI     WRB0        exist1165  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 file1173        *input file name1174  67D2  17  FF19          LBSR    GETFDT      1175  67D5  BE  6065          LDX     EXSTFL      if 0 not exist1176  67D8  27  11          BEQ     WRB1        1177        1178        *confirm over write1179  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 file1186  67E9  8D  92          BSR     KILSUB      1187        1188  67EB      WRB1          1189        *set filename1190  67EB  8E  6083          LDX     #FILBUF     1191  67EE  8D  15          BSR     SETFNM      1192         1193        *adrs1194        * BASADP start adr1195        * BASAEP end adr1196        * BASEXP exec adr1197        1198        *main of write routine1199        *clear dir entry1200  67F0  8D  2F          BSR     CLRDIR      1201        1202  67F2  17  0104          LBSR    SRCFAT      search empty cluster on FAT1203  67F5  17  0159          LBSR    SRCDIR      search empty DIR entry1204  67F8  17  0195          LBSR    MKFLDT      make file data1205  67FB  17  021B          LBSR    WRTFIL      write file1206  67FE  17  03AF          LBSR    WRTDIR      write DIR entry1207  6801  17  03D9          LBSR    WRTFAT      set FAT1208  6804      WRBEND        1209  6804  39            RTS           1210        1211        *------------------------------1212        *set filename1213  6805      SETFNM  EQU     *           1214        *clear buf1215  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 filename1223  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 delimiter1228  681C  A7  A0  WRFL11  STA     ,Y+         1229  681E  20  F2          BRA     WRFL1       1230  6820      WRFL2         1231  6820  39            RTS           1232        1233        *------------------------------1234        *clear dir entry1235  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 attr1241  682C  A7  0B          STA     $0B,X       1242  682E  39            RTS           1243        1244        *1245        ****************************************1246        * Write MACHINE FILE1247        ****************************************1248  682F      WRMFILE EQU     *           1249        *save machine code1250        *filename,topadr,endadr,exeadr ...machine file1251  682F  17  FEBC          LBSR    GETFDT      1252  6832  BE  6065          LDX     EXSTFL      if 0 not exist1253  6835  27  12          BEQ     WRM1        1254         1255        *confirm over write1256  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 file1263  6846  17  FF34          LBSR    KILSUB      1264         1265  6849      WRM1          1266  6849  7F  604D          CLR     MCFLG       set machine code(set 0)1267         1268        *set filename1269  684C  8E  6083          LDX     #FILBUF     1270  684F  8D  B4          BSR     SETFNM      1271         1272        *set top adr1273  6851  8D  43          BSR     ASC2BIN     1274  6853  10BF  605F          STY     MCADP       start adr1275  6857  8D  30          BSR     SRCDLM      1276  6859  8D  3B          BSR     ASC2BIN     1277  685B  10BF  6061          STY     MCAEP       end adr1278  685F  8D  28          BSR     SRCDLM      1279  6861  8D  33          BSR     ASC2BIN     1280  6863  10BF  6063          STY     MCEXP       exec adr1281         1282        *main of write routine1283        *clear dir entry1284  6867  8D  B8          BSR     CLRDIR      1285        1286  6869  17  008D          LBSR    SRCFAT      search empty cluster on FAT1287  686C  17  00E2          LBSR    SRCDIR      search empty DIR entry1288  686F  17  011E          LBSR    MKFLDT      make file data1289  6872  17  01A4          LBSR    WRTFIL      write file1290  6875  17  0338          LBSR    WRTDIR      write DIR entry1291  6878  17  0362          LBSR    WRTFAT      set FAT1292  687B      WRMEND        1293  687B  39            RTS           1294        1295        *--------------------1296        *input filename & parameter to filbuf1297  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 delimiter1306        *delimiter:less than $30, excluding '-'($2D)1307        *return X:point next char of delimiter1308  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 Y1319  6896      ASC2BIN EQU     *           1320        *clr buf1321  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 delimiter1329        *return B:char count1330  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 $301335  68AC  24  F9          BHS     SRLOP1      1336  68AE  5A            DECB          1337  68AF  35  10          PULS    X           1338         1339        *trans1340  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 bin1352  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 sub1366        *return A1367  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 FAT1387  68F9      SRCFAT  EQU     *           1388  68F9  8E  600E          LDX     #SCTFAT     1389  68FC  17  FABD          LBSR    SETSNO      1390  68FF  17  035F          LBSR    RD1SCT      read 1 sct1391         1392  6902  8E  5E00          LDX     #RWBUF      1393        *search $001394  6905      SRC0          1395  6905  C6  02          LDB     #2          SD1396  6907  7D  6009          TST     SDHC        0:SD,1:SDHC1397  690A  27  02          BEQ     SRCLOP      1398  690C  C6  04          LDB     #4          SDHC1399  690E  8D  32  SRCLOP  BSR     SRC00       search 1st 00 ...1st 001400  6910  24  2F          BCC     SFATED      not exist empty area1401  6912  A6  80          LDA     ,X+         next is 00? ..2nd 001402  6914  26  EF          BNE     SRC0        restart1403  6916  7D  6009          TST     SDHC        0:SD,1:SDHC1404  6919  27  0A          BEQ     SETX        1405  691B  A6  80          LDA     ,X+         next is 00? ..3rd 001406  691D  26  E6          BNE     SRC0        restart1407  691F  A6  80          LDA     ,X+         next is 00? ..4th 001408  6921  26  E2          BNE     SRC0        restart1409  6923  30  1E          LEAX    -2,X        1410  6925      SETX          1411  6925  30  1E          LEAX    -2,X        pos in RWBUF1412  6927  3089  A200          LEAX    -RWBUF,X    relative pos1413  692B  1F  10          TFR     X,D         1414  692D  44            LSRA          1415  692E  56            RORB          1/21416  692F  7D  6009          TST     SDHC        0:SD,1:SDHC1417  6932  27  02          BEQ     SETCL       1418  6934  44            LSRA          1419  6935  56            RORB          1/21420  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 dirent1424  6941  39    SFATED  RTS           1425         1426        *search 00 in FAT1427  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 C1432  694D  39            RTS           1433  694E  1C  FE  NOEXST  ANDCC   #$FE        reset C1434  6950  39            RTS           1435        1436        *--------------------1437        * search empty DIR entry1438        * return:DPGNO,DIROFS1439  6951      SRCDIR  EQU     *           1440  6951  7F  605A          CLR     DPGNO       1441        *return no of DIR1442  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 sct1449         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 +11463  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 set1474        *file name input&set1475  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 name1479         1480        *cal file size1481  699C  7D  604D          TST     MCFLG       00,FF(FE),else1482  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,B1494        * LDX #DIRENT1495        * STD $1C,X1496        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,day1503  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 SD1511        *retuen WMDY,WMDY+11512  69CA      STDATE  EQU     *           1513  69CA  8E  02FA          LDX     #FMDAT      date of FM-71514  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        *year1523  69DF  B6  603F          LDA     WMDY        1524  69E2  8B  14          ADDA    #20         ---2000-19801525  69E4  48            LSLA          1526  69E5  B7  603F          STA     WMDY        1527        *month1528  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 C1537  69F8  F7  603F          STB     WMDY        1538        *day1539  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+B1546  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:data1556  6A17  35  90          PULS    X,PC        1557        *1558        *--------------------1559  6A19      WRTFIL  EQU     *           1560        *calc file size for write to sd1561  6A19  FC  6075          LDD     WK0         1562  6A1C  7D  604D          TST     MCFLG       0,FF(FE),else1563  6A1F  27  04          BEQ     WRTF0       machine code1564  6A21  2B  07          BMI     WRTF1       basic(binary)1565  6A23  2A  08          BPL     WRTF2       else1566  6A25  C3  000A  WRTF0   ADDD    #10         add header(&footer)1567  6A28  20  03          BRA     WRTF2       1568  6A2A  C3  0003  WRTF1   ADDD    #3          add header1569  6A2D      WRTF2         1570  6A2D  FD  6075          STD     WK0         number of bytes actually written1571  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 page1583        1584  6A4A  7D  604D          TST     MCFLG       0,FF(FE),else1585  6A4D  2B  05          BMI     WRTF3       1586  6A4F  BE  605F          LDX     MCADP       saved top adr1587  6A52  20  02          BRA     WRTF4       1588  6A54  9E  33  WRTF3   LDX     BASADP      saved top adr1589  6A56  BF  606D  WRTF4   STX     WK1         src topadr1590  6A59  CE  5E00          LDU     #RWBUF      1591         1592        *get clusterL1593  6A5C  8E  601F          LDX     #DIRENT     1594  6A5F  EC  88 1A         LDD     $1A,X       1595  6A62  1E  89          EXG     A,B         B:clusterL1596         1597  6A64  BE  601A          LDX     SCTCLT      sct no of top cluster1598  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 SD1603  6A72  7D  6009          TST     SDHC        0:SD,1:SDHC1604  6A75  27  01          BEQ     WR2         1605  6A77  5A            DECB          1606  6A78      WR2           1607        1608        *(X)..(X+3)+(B)x40h1609  6A78  8E  606F          LDX     #WK2        1610  6A7B  17  01BE          LBSR    ADD40H      cal of sct no1611         1612        *set start sct no of file1613  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 rwbuf1631        * (X)->(U:RWBUF)1632        * (Y):SIZE 512bytes or Less1633  6AA2  BE  606D          LDX     WK1         1634  6AA5  CE  5E00          LDU     #RWBUF      1635  6AA8  8D  44          BSR     WRSUB       1636         1637        *set to sctn0-31638  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 sd1646  6ABA  17  0093          LBSR    WRTSD       ...not wrtsd11647        1648        *inc sctn0-31649  6ABD  8E  606F          LDX     #WK2        1650  6AC0  17  016A          LBSR    INCX4       1651  6AC3  BE  606D          LDX     WK1         src topadr1652  6AC6  3089  0200          LEAX    512,X       1653        *check top page1654  6ACA  7D  604E          TST     TPGFLG      top page?1655  6ACD  27  0D          BEQ     WR6         no1656  6ACF  7D  604D          TST     MCFLG       1657  6AD2  27  04          BEQ     WR4         machine code1658  6AD4  2B  04          BMI     WR5         basic(binary)1659  6AD6  2A  04          BPL     WR6         1660  6AD8  30  1E  WR4     LEAX    -2,X        rewind 3or51661  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 rwbuf1674        * (X)->(U:RWBUF)1675        * (Y):SIZE 512bytes or Less1676        *clear rwbuf1677  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 rwbuf1688  6B00  CE  5E00          LDU     #RWBUF      1689         1690  6B03  7D  604E          TST     TPGFLG      1:top page,0:else1691  6B06  27  16          BEQ     WRS01       no1692  6B08  7D  604D          TST     MCFLG       0,$FF($FE),etc1693  6B0B  2B  32          BMI     WRS1        1694        1695        *add header of machine code1696  6B0D  34  10          PSHS    X           1697  6B0F  4F            CLRA          1698  6B10  A7  C0          STA     ,U+         $001699  6B12  BE  6046          LDX     FILSIZ      1700  6B15  AF  C1          STX     ,U++        file size1701  6B17  BE  605F          LDX     MCADP       1702  6B1A  AF  C1          STX     ,U++        save adr1703  6B1C  35  10          PULS    X           1704        1705  6B1E      WRS01         1706        *check last page1707  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 data1712  6B27  8D  1E  WRS2    BSR     WRDSET      1713        *check last page1714  6B29  B6  604C          LDA     CNT         1715  6B2C  81  01          CMPA    #1          1716  6B2E  26  0E          BNE     WRS3        1717        1718        *add footer1719  6B30      WRS211        1720        * CMPU #RWBUF+512-51721        * BLS WRS211722        * RTS1723  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 file1734  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 set1740  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 sd1747  6B50      WRTSD   EQU     *           1748  6B50  17  01A1          LBSR    SETSCT      *set SCT No1749        *copy sct no to cmd param1750  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 cmd1755  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 response1763  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 skip1769  6B79  86  FF          LDA     #$FF        1770  6B7B  17  0137          LBSR    SNDDAT      1byte skip1771         1772        *send data packet1773  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="">C1999  6CE1  79  6008          ROL     RESDAT      C->b02000  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 No2007  6CEB      INSCT   EQU     *           2008  6CEB  8E  7046          LDX     #MSSCT      2009  6CEE  17  0132          LBSR    PSTRNG      2010  6CF1  17  0085          LBSR    GET8CH      get 8chr, convert 4bin2011         2012  6CF4      SETSCT  EQU     *           2013  6CF4  34  32          PSHS    A,X,Y       2014  6CF6  7D  6009          TST     SDHC        0:SD,1:SDHC2015  6CF9  26  1A          BNE     CALCHC      2016        *SD card2017  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 sct2023  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 card2030        *calc top adrs of sct2031  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:L2040  6D23      SETCKL  EQU     *           2041  6D23  34  02          PSHS    A           2042  6D25  86  34          LDA     #$34        ca2=L2043  6D27  B7  FD9F          STA     PBCTL       2044  6D2A  35  82          PULS    A,PC        2045        2046        *set sck:H2047  6D2C      SETCKH  EQU     *           2048  6D2C  34  02          PSHS    A           2049  6D2E  86  3C          LDA     #$3C        ca2=H2050  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        *crlf2090  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 spc2098  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 chr2106  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        *shift2118  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        *clr2129  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 bin2140  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 -> bin2168  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 C2180  6DEE  39            RTS           2181  6DEF  1A  01  CVERR   ORCC    #$01        set C2182  6DF1  39            RTS           2183        2184        *--------------------2185        *add 2bytes to 4bytes2186        * X,X+1,X+2,X+3 + Y,Y+12187        * data X is big endian2188        * data Y is little endian2189  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        * pstring2222  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-YY2234        *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        MM2249  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      DD2253  6E51  35  04          PULS    B           2254         2255  6E53  44            LSRA          2256        * ASLB2257        * BCC DYMD22258        * INCA2259  6E54      DYMD2         2260  6E54  80  14          SUBA    #20         A+1980-20002261  6E56  B7  6041          STA     WMDY+2      YY2262         2263        *disp MM-DD-YY2264  6E59  BD  6D73          JSR     OUTSPC      2265  6E5C  8E  603F          LDX     #WMDY       2266  6E5F  A6  80          LDA     ,X+         2267  6E61  8D  14          BSR     DB2ASC      MM2268  6E63  86  2D          LDA     #'-         2269  6E65  BD  FBBB          JSR     OUTCHA      2270  6E68  A6  80          LDA     ,X+         2271  6E6A  8D  0B          BSR     DB2ASC      DD2272  6E6C  86  2D          LDA     #'-         2273  6E6E  BD  FBBB          JSR     OUTCHA      2274  6E71  A6  80          LDA     ,X+         2275  6E73  8D  02          BSR     DB2ASC      YY2276  6E75  35  90          PULS    X,PC        2277        *2278        *----------2279        *convert decimal value to ascii code2280        *(A:BIN)->ASCII2281  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 size2297  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 64k2308  6EA3  44            LSRA          2309  6EA4  44            LSRA          2310        *disp dec2311  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 1002324  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 place2337        *under 102338  6ED2  1F  98  DSS21   TFR     B,A         2339  6ED4  8B  31          ADDA    #$31        '12340  6ED6  BD  FBBB  DSS3    JSR     OUTCHA      1's place2341  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 cluster2348        *return:clusterL2349  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 buf2363  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 in2371  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 input2387        * input: B:count, Y:buf2388        * output: FILBUF (terminate $00)2389        * temp buf $043D - $053C2390  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 addressABLOP   69D3  ACMD41  6F56  AD1     6DF8  AD2     6E09  AD3     6E13AD4     6E19  ADD0    6C3E  ADD1    6C4C  ADD2    6C54  ADD3    6C5CADD40H  6C3C  ADD42   6DF2  ADX0    6C2D  ADX1    6C33  ADX2    6C37ADX3    6C3B  APLUSB  6A07  ASC2BIN 6896  ASC411  6218  ASCMD41 620BBASADP  0033  BASAEP  0035  BASEXP  605D  BI21    6D4F  BI22    6D55BUSY    6BA5  CALCHC  6D15  CALCSD  6D0A  CALLOP  6A3D  CEND    66D0CKRS    6B9B  CL1     6D9F  CLEND   6DAF  CLLOP   6DAA  CLOP    6D7DCLRDIR  6821  CLSTH   6048  CLSTL   604A  CMD0    6F2C  CMD1    6F32CMD17   6F38  CMD24   6F3E  CMD55   6F50  CMD58   6F4A  CMD8    6F44CMD9    6F5C  CMPEND  66EC  CMPFN   66D1  CMPLOP  66D9  CNT     604CCNV1    68E6  CNV2    68F2  CNVBUF  607F  CNVINT  6631  CNVLOP  6631CNVSUB  68DE  CR      000D  CSRON   FBF7  CVBEND  6DEC  CVBIN   6DDACVERR   6DEF  CVT1    6DB8  CVTLEN  6067  DB2     6E86  DB2ASC  6E77DBLOP   6E7D  DCLOP1  6EED  DELMK   00E5  DIRENT  601F  DIRGET  698ADIROFS  605B  DLOP1   696C  DPGNO   605A  DSEND   6EDE  DSLOP1  6EADDSLOP2  6EC6  DSPB1   6CA1  DSPB2   6CA3  DSPB3   6CB4  DSPBI0  6D3BDSPBI2  6D5F  DSPBIN  6D35  DSPBPB  63E2  DSPBUF  6C97  DSPC1   6473DSPCKE  6433  DSPCLS  6EE3  DSPDIR  6406  DSPED   6989  DSPEND  64A9DSPFAT  63F4  DSPFL0  6412  DSPFL1  6423  DSPFL2  643D  DSPFL3  643FDSPFL4  644E  DSPFL5  6491  DSPFL6  649D  DSPMBR  638E  DSPSDDAT  62FEDSPSIZ  6E92  DSPYMD  6E33  DSS1    6EA0  DSS12   6EB6  DSS13   6EBBDSS14   6EC4  DSS2    6ECF  DSS21   6ED2  DSS3    6ED6  DYMD1   6E45DYMD2   6E54  EEND    6DD9  EREND0  6DD2  EREND1  6DD4  ESC     001BEXIST   694B  EXSTFL  6065  FILBUF  6083  FILL    6C24  FILOP   6C26FILSIZ  6046  FIXPTR  C730  FMDAT   02FA  FNAME   604F  FNIN0   6EFDFNMIN   6EF6  GET1    6399  GET2    639B  GET8CH  6D79  GETBPB  63C9GETD1   6CD5  GETDAT  6CD1  GETFDT  66EE  GETMBR  63AC  GR00    6185GR2580  6245  GR2581  625C  GR2582  625E  GR410   6220  GR550   6201GR580   61D7  GR581   61E1  GR582   61E3  GR80    61A7  GR81    61B9GR90    6311  GR91    631D  GTBLOP  63D4  GTF1    670D  GTF2    6710ILOP1   6281  INCHA   FBB8  INCX4   6C2D  INEND   6D8B  INIT    60C7INL10   6647  INL11   666B  INL12   66B2  INL2    6677  INLOP   6638INOUTC  6F12  INPBUF  6077  INPFLDAT  687C  INSCT   6CEB  ISTT    616BKILEND  67B8  KILFILE 6764  KILSUB  677D  KL1     67A2  KL2     67B0LD1     6740  LD10    65AC  LD2     6754  LD3     64CF  LD41    64F4LD5     650D  LD8     654F  LD80    6594  LD81    6598  LD82    65A1LD9     65AA  LDE0    65CF  LDE1    65D5  LDEND   65BC  LDFILE  64AALDFL0   671C  LDFL1   6728  LDFL5   674C  LDFLE   6763  LDLOP   651DLDNEND  65D9  LEND    6F2B  LF      000A  LINBUF  043D  LININ   6F19LININP  D807  LININT  FBF1  LINLOP  6F21  LINO1   004B  LINO2   033AMAIN    60A3  MATCH   66E6  MCADP   605F  MCAEP   6061  MCEXP   6063MCFLG   604D  MCMD0   6F62  MCMD41  6F80  MCMD55  6F78  MCMD58  6F70MCMD8   6F69  MCMD9   6F89  MEM2ED  6626  MEMSET  65E1  MEMSET2 6611MENU    60CA  MENU1   60E4  MENU2   60ED  MENU3   60F6  MENU4   60FFMENU5   6108  MENU6   6110  MENU7   6118  MERR    707B  MKF1    69A9MKF2    69AD  MKFLDT  6990  MM21    6621  MS0     65F8  MS1     65FCMS3     660B  MSBPB   70AB  MSCL2   70C6  MSDIR   70BD  MSERR   708CMSEXST  716F  MSFAT   70B4  MSINFN  70D6  MSINIT  7064  MSKILL  715CMSLDED  7116  MSLDNG  70FE  MSLOP   65FE  MSMCAS  71A5  MSMCOF  718CMSMENU1 6F90  MSMENU2 6FE9  MSMSV   70E6  MSNOFL  7131  MSNXTP  713FMSOFS   709B  MSOVR   7157  MSSCT   7046  MSSD0   704E  MSSD1   7058MSWTED  7123  MSWTNG  710A  NOEXST  694E  NOFEND  67C6  NOTM    66EAOPMEN10 614F  OPMEN6  612F  OPMEN7  6137  OPMEN8  613F  OPMEN9  6147OPMENU  6120  OUTCHA  FBBB  OUTSPC  6D73  PBCTL   FD9F  PBDAT   FD9EPCRLF   6D68  PSEND   6E30  PSLOP   6E25  PSTRNG  6E23  RD1     6C74RD1SCT  6C61  RD2     6C7B  RD3     6C8B  RDLINO  9162  RDSCT   637BRDTOP   6069  RESDAT  6008  RPT41   61EC  RWBUF   5E00  SC01    617CSC2581  623D  SC551   61F9  SC581   61CF  SC80    619F  SC91    6309SCMD0   6174  SCMD258 6230  SCMD55  61EC  SCMD58  61C2  SCMD8   6192SCTBPB  600A  SCTCLT  601A  SCTDIR  6012  SCTDSV  6016  SCTFAT  600ESCTN0   6004  SCTN1   6005  SCTN2   6006  SCTN3   6007  SCTPCL  601ESD1     6272  SDERR   6157  SDHC    6009  SDINIT  615E  SDW1    6B67SDW2    6B6F  SETCKH  6D2C  SETCKL  6D23  SETCL   6936  SETFNM  6805SETSCT  6CF4  SETSNO  63BC  SETX    6925  SFATED  6941  SFLOP   6D98SKP1    62B8  SKP2    62F5  SNDD1   6CBC  SNDDAT  6CB5  SNDDT1  6B8ASPC     0020  SRC0    6905  SRC00   6942  SRCDIR  6951  SRCDLM  6889SRCFAT  68F9  SRCFL0  6960  SRCFL1  6963  SRCFL5  697E  SRCLOP  690ESRDLM1  688B  SRLOP1  68A7  SRLOP2  68BF  START   6000  STDATE  69CASTTADR  6000  SVTOP   606B  TPGFLG  604E  TRANS   6C19  TRLOP   6C1BTXTADR  2000  TXTBUF  033C  VN      6003  WFSIZ   6042  WK0     6075WK1     606D  WK2     606F  WK3     6071  WK4     6073  WMDY    603FWR2     6A78  WR3     6AA2  WR4     6AD8  WR5     6ADA  WR6     6ADCWRB0    67CD  WRB1    67EB  WRBEND  6804  WRBFILE 67B9  WRDLOP  6BC3WRDSET  6B47  WRDSKP  6BC8  WREND   6AE7  WRF1    6BFC  WRF2    6BFFWRF3    6C15  WRFL1   6812  WRFL11  681C  WRFL2   6820  WRFLP2  680DWRLOP   6A88  WRM1    6849  WRMEND  687B  WRMFILE 682F  WRS01   6B1EWRS1    6B3F  WRS2    6B27  WRS21   6B30  WRS211  6B30  WRS3    6B3EWRSUB   6AEE  WRTDIR  6BB0  WRTF0   6A25  WRTF1   6A2A  WRTF2   6A2DWRTF3   6A54  WRTF4   6A56  WRTFAT  6BDD  WRTFIL  6A19  WRTSD   6B50WRTSD1  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-->
SDRWFM
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
612
613
614
615
616
617
618
619
620
621
622
623
624
625
626
627
628
629
630
631
632
633
634
635
636
637
638
639
640
641
642
643
644
645
646
647
648
649
650
651
652
653
654
655
656
657
658
659
660
661
662
663
664
665
666
667
668
669
670
671
672
673
674
675
676
677
678
679
680
681
682
683
684
685
686
687
688
689
690
691
692
693
694
695
696
697
698
699
700
701
702
703
704
705
706
707
708
709
710
711
712
713
714
715
716
717
718
719
720
721
722
723
724
725
726
727
728
729
730
731
732
733
734
735
736
737
738
739
740
741
742
743
744
745
746
747
748
749
750
751
752
753
754
755
756
757
758
759
760
761
762
763
764
765
766
767
768
769
770
771
772
773
774
775
776
777
778
779
780
781
782
783
784
785
786
787
788
789
790
791
792
793
794
795
796
797
798
799
800
801
802
803
804
805
806
807
808
809
810
811
812
813
814
815
816
817
818
819
820
821
822
823
824
825
826
827
828
829
830
831
832
833
834
835
836
837
838
839
840
841
842
843
844
845
846
847
848
849
850
851
852
853
854
855
856
857
858
859
860
861
862
863
864
865
866
867
868
869
870
871
872
873
874
875
876
877
878
879
880
881
882
883
884
885
886
887
888
889
890
891
892
893
894
895
896
897
898
899
900
901
902
903
904
905
906
907
908
909
910
911
912
913
914
915
916
917
918
919
920
921
922
923
924
925
926
927
928
929
930
931
932
933
934
935
936
937
938
939
940
941
942
943
944
945
946
947
948
949
950
951
952
953
954
955
956
957
958
959
960
961
962
963
964
965
966
967
968
969
970
971
972
973
974
975
976
977
978
979
980
981
982
983
984
985
986
987
988
989
990
991
992
993
994
995
996
997
998
999
1000
1001
1002
1003
1004
1005
1006
1007
1008
1009
1010
1011
1012
1013
1014
1015
1016
1017
1018
1019
1020
1021
1022
1023
1024
1025
1026
1027
1028
1029
1030
1031
1032
1033
1034
1035
1036
1037
1038
1039
1040
1041
1042
1043
1044
1045
1046
1047
1048
1049
1050
1051
1052
1053
1054
1055
1056
1057
1058
1059
1060
1061
1062
1063
1064
1065
1066
1067
1068
1069
1070
1071
1072
1073
1074
1075
1076
1077
1078
1079
1080
1081
1082
1083
1084
1085
1086
1087
1088
1089
1090
1091
1092
1093
1094
1095
1096
1097
1098
1099
1100
1101
1102
1103
1104
1105
1106
1107
1108
1109
1110
1111
1112
1113
1114
1115
1116
1117
1118
1119
1120
1121
1122
1123
1124
1125
1126
1127
1128
1129
1130
1131
1132
1133
1134
1135
1136
1137
1138
1139
1140
1141
1142
1143
1144
1145
1146
1147
1148
1149
1150
1151
1152
1153
1154
1155
1156
1157
1158
1159
1160
1161
1162
1163
1164
1165
1166
1167
1168
1169
1170
1171
1172
1173
1174
1175
1176
1177
1178
1179
1180
1181
1182
1183
1184
1185
1186
1187
1188
1189
1190
1191
1192
1193
1194
1195
1196
1197
1198
1199
1200
1201
1202
1203
1204
1205
1206
1207
1208
1209
1210
1211
1212
1213
1214
1215
1216
1217
1218
1219
1220
1221
1222
1223
1224
1225
1226
1227
1228
1229
1230
1231
1232
1233
1234
1235
1236
1237
1238
1239
1240
1241
1242
1243
1244
1245
1246
1247
1248
1249
1250
1251
1252
1253
1254
1255
1256
1257
1258
1259
1260
1261
1262
1263
1264
1265
1266
1267
1268
1269
1270
1271
1272
1273
1274
1275
1276
1277
1278
1279
1280
1281
1282
1283
1284
1285
1286
1287
1288
1289
1290
1291
1292
1293
1294
1295
1296
1297
1298
1299
1300
1301
1302
1303
1304
1305
1306
1307
1308
1309
1310
1311
1312
1313
1314
1315
1316
1317
1318
1319
1320
1321
1322
1323
1324
1325
1326
1327
1328
1329
1330
1331
1332
1333
1334
1335
1336
1337
1338
1339
1340
1341
1342
1343
1344
1345
1346
1347
1348
1349
1350
1351
1352
1353
1354
1355
1356
1357
1358
1359
1360
1361
1362
1363
1364
1365
1366
1367
1368
1369
1370
1371
1372
1373
1374
1375
1376
1377
1378
1379
1380
1381
1382
1383
1384
1385
1386
1387
1388
1389
1390
1391
1392
1393
1394
1395
1396
1397
1398
1399
1400
1401
1402
1403
1404
1405
1406
1407
1408
1409
1410
1411
1412
1413
1414
1415
1416
1417
1418
1419
1420
1421
1422
1423
1424
1425
1426
1427
1428
1429
1430
1431
1432
1433
1434
1435
1436
1437
1438
1439
1440
1441
1442
1443
1444
1445
1446
1447
1448
1449
1450
1451
1452
1453
1454
1455
1456
1457
1458
1459
1460
1461
1462
1463
1464
1465
1466
1467
1468
1469
1470
1471
1472
1473
1474
1475
1476
1477
1478
1479
1480
1481
1482
1483
1484
1485
1486
1487
1488
1489
1490
1491
1492
1493
1494
1495
1496
1497
1498
1499
1500
1501
1502
1503
1504
1505
1506
1507
1508
1509
1510
1511
1512
1513
1514
1515
1516
1517
1518
1519
1520
1521
1522
1523
1524
1525
1526
1527
1528
1529
1530
1531
1532
1533
1534
1535
1536
1537
1538
1539
1540
1541
1542
1543
1544
1545
1546
1547
1548
1549
1550
1551
1552
1553
1554
1555
1556
1557
1558
1559
1560
1561
1562
1563
1564
1565
1566
1567
1568
1569
1570
1571
1572
1573
1574
1575
1576
1577
1578
1579
1580
1581
1582
1583
1584
1585
1586
1587
1588
1589
1590
1591
1592
1593
1594
1595
1596
1597
1598
1599
1600
1601
1602
1603
1604
1605
1606
1607
1608
1609
1610
1611
1612
1613
1614
1615
1616
1617
1618
1619
1620
1621
1622
1623
1624
1625
1626
1627
1628
1629
1630
1631
1632
1633
1634
1635
1636
1637
1638
1639
1640
1641
1642
1643
1644
1645
1646
1647
1648
1649
1650
1651
1652
1653
1654
1655
1656
1657
1658
1659
1660
1661
1662
1663
1664
1665
1666
1667
1668
1669
1670
1671
1672
1673
1674
1675
1676
1677
1678
1679
1680
1681
1682
1683
1684
1685
1686
1687
1688
1689
1690
1691
1692
1693
1694
1695
1696
1697
1698
1699
1700
1701
1702
1703
1704
1705
1706
1707
1708
1709
1710
1711
1712
1713
1714
1715
1716
1717
1718
1719
1720
1721
1722
1723
1724
1725
1726
1727
1728
1729
1730
1731
1732
1733
1734
1735
1736
1737
1738
1739
1740
1741
1742
1743
1744
1745
1746
1747
1748
1749
1750
1751
1752
1753
1754
1755
1756
1757
1758
1759
1760
1761
1762
1763
1764
1765
1766
1767
1768
1769
1770
1771
1772
1773
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
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
1999
2000
2001
2002
2003
2004
2005
2006
2007
2008
2009
2010
2011
2012
2013
2014
2015
2016
2017
2018
2019
2020
2021
2022
2023
2024
2025
2026
2027
2028
2029
2030
2031
2032
2033
2034
2035
2036
2037
2038
2039
2040
2041
2042
2043
2044
2045
2046
2047
2048
2049
2050
2051
2052
2053
2054
2055
2056
2057
2058
2059
2060
2061
2062
2063
2064
2065
2066
2067
2068
2069
2070
2071
2072
2073
2074
2075
2076
2077
2078
2079
2080
2081
2082
2083
2084
2085
2086
2087
2088
2089
2090
2091
2092
2093
2094
2095
2096
2097
2098
2099
2100
2101
2102
2103
2104
2105
2106
2107
2108
2109
2110
2111
2112
2113
2114
2115
2116
2117
2118
2119
2120
2121
2122
2123
2124
2125
2126
2127
2128
2129
2130
2131
2132
2133
2134
2135
2136
2137
2138
2139
2140
2141
2142
2143
2144
2145
2146
2147
2148
2149
2150
2151
2152
2153
2154
2155
2156
2157
2158
2159
2160
2161
2162
2163
2164
2165
2166
2167
2168
2169
2170
2171
2172
2173
2174
2175
2176
2177
2178
2179
2180
2181
2182
2183
2184
2185
2186
2187
2188
2189
2190
2191
2192
2193
2194
2195
2196
2197
2198
2199
2200
2201
2202
2203
2204
2205
2206
2207
2208
2209
2210
2211
2212
2213
2214
2215
2216
2217
2218
2219
2220
2221
2222
2223
2224
2225
2226
2227
2228
2229
2230
2231
2232
2233
2234
2235
2236
2237
2238
2239
2240
2241
2242
2243
2244
2245
2246
2247
2248
2249
2250
2251
2252
2253
2254
2255
2256
2257
2258
2259
2260
2261
2262
2263
2264
2265
2266
2267
2268
2269
2270
2271
2272
2273
2274
2275
2276
2277
2278
2279
2280
2281
2282
2283
2284
2285
2286
2287
2288
2289
2290
2291
2292
2293
2294
2295
2296
2297
2298
2299
2300
2301
2302
2303
2304
2305
2306
2307
2308
2309
2310
2311
2312
2313
2314
2315
2316
2317
2318
2319
2320
2321
2322
2323
2324
2325
2326
2327
2328
2329
2330
2331
2332
2333
2334
2335
2336
2337
2338
2339
2340
2341
2342
2343
2344
2345
2346
2347


私はこのカードを、FM-7用のプログラムを使い慣れたWindowsPC上のエディタで作成してFM-7に転送したり、逆に、FM-7上で動作しているプログラムをWindowsPCに保存したりするのに利用していますが、それなりに使えるツールではないかと感じています。
また、テストしてくださった知人のアイディアですが、SD上にフォルダがあってもFM-7では見えないのですが、逆にそれを利用して、フォルダ中にFM-7用のファイルを複数入れて(隠して)おき、必要な時にその中から必要なフィルをフォルダの外に出してFM-7で使用するという使い方も便利そうです。

使用法についての文章も修正しましたので、それらをまとめてOneDriveに上げておきます。