Index: /loader.c
===================================================================
--- /loader.c	(revision 4)
+++ /loader.c	(revision 5)
@@ -1,2 +1,4 @@
+
+
 #asm
 (main)test.asm
@@ -78,4 +80,5 @@
 	unsigned int f_cfgh;
 	unsigned int f_cfgl;
+    unsigned int idx;
 
 	int page,select,maxpage;
@@ -176,14 +179,15 @@
 			
 		for (i=0;i<16;i++) {
-			if ((buf[i<<5]&0xFF)==0x00) {
+            idx=i<<5;
+			if ((buf[idx]&0xFF)==0x00) {
 				dirEnd=1;
 				 break;
 			}
-			if ((buf[(i<<5)+11]&0x0F)==0x0F) {
-				longIdx=buf[i<<5]&0xF;
+			if ((buf[idx+11]&0x0F)==0x0F) {
+				longIdx=buf[idx]&0xF;
 				longOff=(longIdx-1)*13;
 				for (j=0;j<5;j++) {
 					if (longOff+j<17) {
-						k=(i<<5)+(j<<1)+1;
+						k=(idx)+(j<<1)+1;
 						longname[longOff+j]=buf[k];
 					}
@@ -191,5 +195,5 @@
 				for (j=0;j<6;j++) {
 					if (longOff+j+5<17) {
-						k=(i<<5)+(j<<1)+0xE;
+						k=(idx)+(j<<1)+0xE;
 						longname[longOff+j+5]=buf[k];
 					}
@@ -197,5 +201,5 @@
 				for (j=0;j<2;j++) {
 					if (longOff+j+11<17) {
-						k=(i<<5)+(j<<1)+0x1C;
+						k=(idx)+(j<<1)+0x1C;
 						longname[longOff+j+11]=buf[k];
 					}
@@ -204,5 +208,5 @@
 			}
 
-			if ((buf[i<<5]&0xFF)!=0xE5) {
+			if ((buf[idx]&0xFF)!=0xE5) {
 				for (j=0;j<8;j++) {
 					buf2[(nfic<<5)+j]=buf[(i<<5)+j];
@@ -211,5 +215,5 @@
 					buf2[(nfic<<5)+j+8]=buf[(i<<5)+j+8];
 				}	
-				for (j=0;j<17;j++) {
+				for (j=0;j<14;j++) {
 					buf2[(nfic<<5)+11+j]=longname[j];
 				}
@@ -222,4 +226,11 @@
 				buf2[(nfic<<5)+29]=buf[(i<<5)+0x14];
 				buf2[(nfic<<5)+28]=buf[(i<<5)+0x15];
+                
+                
+				/* also copy 3 bytes of size */
+				buf2[(nfic<<5)+27]=buf[(i<<5)+0x1C];
+				buf2[(nfic<<5)+26]=buf[(i<<5)+0x1D];
+				buf2[(nfic<<5)+25]=buf[(i<<5)+0x1E];
+                
 				nfic++;
 				if (nfic>126) {
@@ -356,5 +367,5 @@
 				string(0,6,"CFG SECTOR1",11);
 				rd_lba(f_tmph,f_tmpl);
-				string(0,7,&buf[0],11);string(12,7,&buf[21],16);
+				string(0,7,&buf[0],11);string(12,7,&buf[21],14);
 
 				for (ii=0;ii<11;ii++) {
@@ -373,5 +384,5 @@
 				buf[19]=0x1E;
 				buf[20]=0x00;										
-				for (ii=0;ii<16;ii++) {
+				for (ii=0;ii<14;ii++) {
 					buf[21+ii]=buf2[(j<<5)+ii+11];
 				}
@@ -385,5 +396,5 @@
 				dump16b(0,24,ret);
 				string(0,8,"WRT SECTOR1",11);
-				string(0,9,&buf[0],11);string(12,9,&buf[21],16);
+				string(0,9,&buf[0],11);string(12,9,&buf[21],14);
 
 				/* just write back sector (LBA is still correct) */
@@ -391,5 +402,5 @@
 				dump16b(0,24,ret);
 				string(0,10,"READ BACK SECTOR1",17);
-				string(0,11,&buf[0],11);string(12,11,&buf[21],16);
+				string(0,11,&buf[0],11);string(12,11,&buf[21],14);
 
 
@@ -408,9 +419,9 @@
 
 				/* fixed size for HFE thomson */
-				buf[17+0x80]=0x00;
-				buf[18+0x80]=0xA4;
-				buf[19+0x80]=0x1E;
+				buf[17+0x80]=buf2[(j<<5)+27];
+				buf[18+0x80]=buf2[(j<<5)+26];
+				buf[19+0x80]=buf2[(j<<5)+25];
 				buf[20+0x80]=0x00;										
-				for (ii=0;ii<16;ii++) {
+				for (ii=0;ii<14;ii++) {
 					buf[21+ii+0x80]=buf2[(j<<5)+ii+11];
 				}
@@ -479,4 +490,5 @@
 {
 	int i,j;
+    int idx;
 	int start;
 	int line;
@@ -489,4 +501,5 @@
 	line=0;
 	for (i=start;i<(start+16);i++) {
+        idx=i<<5;
 		if (i>=nfic) {
 			string(1,line+4,"                                       ",39);
@@ -495,12 +508,12 @@
 		}
 
-		string(1,line+4,&buf2[i<<5],8);
+		string(1,line+4,&buf2[idx],8);
 		charxy(9,line+4,'.');
-		string(10,line+4,&buf2[(i<<5)+8],3);
-
-		string(14,line+4,&buf2[(i<<5)+11],17);
+		string(10,line+4,&buf2[(idx)+8],3);
+
+		string(14,line+4,&buf2[(idx)+11],14);
 		
-		dump16b(32,line+4,mk_16(buf2[(i<<5)+28],buf2[(i<<5)+29]));
-		dump16b(36,line+4,mk_16(buf2[(i<<5)+30],buf2[(i<<5)+31]));
+		dump16b(32,line+4,mk_16(0,buf2[(idx)+25]));
+		dump16b(36,line+4,mk_16(buf2[(idx)+26],buf2[(idx)+27]));
 		line++;
 	}
