Changeset 5 in HXC_thomson_filesel


Ignore:
Timestamp:
03/03/19 16:04:03 (6 years ago)
Author:
svn
Message:

handle size in slot

Files:
2 edited

Legend:

Unmodified
Added
Removed
  • loader.c

    r4 r5  
     1
     2
    13#asm
    24(main)test.asm
     
    7880        unsigned int f_cfgh;
    7981        unsigned int f_cfgl;
     82    unsigned int idx;
    8083
    8184        int page,select,maxpage;
     
    176179                       
    177180                for (i=0;i<16;i++) {
    178                         if ((buf[i<<5]&0xFF)==0x00) {
     181            idx=i<<5;
     182                        if ((buf[idx]&0xFF)==0x00) {
    179183                                dirEnd=1;
    180184                                 break;
    181185                        }
    182                         if ((buf[(i<<5)+11]&0x0F)==0x0F) {
    183                                 longIdx=buf[i<<5]&0xF;
     186                        if ((buf[idx+11]&0x0F)==0x0F) {
     187                                longIdx=buf[idx]&0xF;
    184188                                longOff=(longIdx-1)*13;
    185189                                for (j=0;j<5;j++) {
    186190                                        if (longOff+j<17) {
    187                                                 k=(i<<5)+(j<<1)+1;
     191                                                k=(idx)+(j<<1)+1;
    188192                                                longname[longOff+j]=buf[k];
    189193                                        }
     
    191195                                for (j=0;j<6;j++) {
    192196                                        if (longOff+j+5<17) {
    193                                                 k=(i<<5)+(j<<1)+0xE;
     197                                                k=(idx)+(j<<1)+0xE;
    194198                                                longname[longOff+j+5]=buf[k];
    195199                                        }
     
    197201                                for (j=0;j<2;j++) {
    198202                                        if (longOff+j+11<17) {
    199                                                 k=(i<<5)+(j<<1)+0x1C;
     203                                                k=(idx)+(j<<1)+0x1C;
    200204                                                longname[longOff+j+11]=buf[k];
    201205                                        }
     
    204208                        }
    205209
    206                         if ((buf[i<<5]&0xFF)!=0xE5) {
     210                        if ((buf[idx]&0xFF)!=0xE5) {
    207211                                for (j=0;j<8;j++) {
    208212                                        buf2[(nfic<<5)+j]=buf[(i<<5)+j];
     
    211215                                        buf2[(nfic<<5)+j+8]=buf[(i<<5)+j+8];
    212216                                }       
    213                                 for (j=0;j<17;j++) {
     217                                for (j=0;j<14;j++) {
    214218                                        buf2[(nfic<<5)+11+j]=longname[j];
    215219                                }
     
    222226                                buf2[(nfic<<5)+29]=buf[(i<<5)+0x14];
    223227                                buf2[(nfic<<5)+28]=buf[(i<<5)+0x15];
     228               
     229               
     230                                /* also copy 3 bytes of size */
     231                                buf2[(nfic<<5)+27]=buf[(i<<5)+0x1C];
     232                                buf2[(nfic<<5)+26]=buf[(i<<5)+0x1D];
     233                                buf2[(nfic<<5)+25]=buf[(i<<5)+0x1E];
     234               
    224235                                nfic++;
    225236                                if (nfic>126) {
     
    356367                                string(0,6,"CFG SECTOR1",11);
    357368                                rd_lba(f_tmph,f_tmpl);
    358                                 string(0,7,&buf[0],11);string(12,7,&buf[21],16);
     369                                string(0,7,&buf[0],11);string(12,7,&buf[21],14);
    359370
    360371                                for (ii=0;ii<11;ii++) {
     
    373384                                buf[19]=0x1E;
    374385                                buf[20]=0x00;                                                                           
    375                                 for (ii=0;ii<16;ii++) {
     386                                for (ii=0;ii<14;ii++) {
    376387                                        buf[21+ii]=buf2[(j<<5)+ii+11];
    377388                                }
     
    385396                                dump16b(0,24,ret);
    386397                                string(0,8,"WRT SECTOR1",11);
    387                                 string(0,9,&buf[0],11);string(12,9,&buf[21],16);
     398                                string(0,9,&buf[0],11);string(12,9,&buf[21],14);
    388399
    389400                                /* just write back sector (LBA is still correct) */
     
    391402                                dump16b(0,24,ret);
    392403                                string(0,10,"READ BACK SECTOR1",17);
    393                                 string(0,11,&buf[0],11);string(12,11,&buf[21],16);
     404                                string(0,11,&buf[0],11);string(12,11,&buf[21],14);
    394405
    395406
     
    408419
    409420                                /* fixed size for HFE thomson */
    410                                 buf[17+0x80]=0x00;
    411                                 buf[18+0x80]=0xA4;
    412                                 buf[19+0x80]=0x1E;
     421                                buf[17+0x80]=buf2[(j<<5)+27];
     422                                buf[18+0x80]=buf2[(j<<5)+26];
     423                                buf[19+0x80]=buf2[(j<<5)+25];
    413424                                buf[20+0x80]=0x00;                                                                             
    414                                 for (ii=0;ii<16;ii++) {
     425                                for (ii=0;ii<14;ii++) {
    415426                                        buf[21+ii+0x80]=buf2[(j<<5)+ii+11];
    416427                                }
     
    479490{
    480491        int i,j;
     492    int idx;
    481493        int start;
    482494        int line;
     
    489501        line=0;
    490502        for (i=start;i<(start+16);i++) {
     503        idx=i<<5;
    491504                if (i>=nfic) {
    492505                        string(1,line+4,"                                       ",39);
     
    495508                }
    496509
    497                 string(1,line+4,&buf2[i<<5],8);
     510                string(1,line+4,&buf2[idx],8);
    498511                charxy(9,line+4,'.');
    499                 string(10,line+4,&buf2[(i<<5)+8],3);
    500 
    501                 string(14,line+4,&buf2[(i<<5)+11],17);
     512                string(10,line+4,&buf2[(idx)+8],3);
     513
     514                string(14,line+4,&buf2[(idx)+11],14);
    502515               
    503                 dump16b(32,line+4,mk_16(buf2[(i<<5)+28],buf2[(i<<5)+29]));
    504                 dump16b(36,line+4,mk_16(buf2[(i<<5)+30],buf2[(i<<5)+31]));
     516                dump16b(32,line+4,mk_16(0,buf2[(idx)+25]));
     517                dump16b(36,line+4,mk_16(buf2[(idx)+26],buf2[(idx)+27]));
    505518                line++;
    506519        }
Note: See TracChangeset for help on using the changeset viewer.