| char bits; |
char bits; |
| /* static char bits[8]={0x80,0x40,0x20,0x10,0x08,0x04,0x02,0x01};*/ |
/* static char bits[8]={0x80,0x40,0x20,0x10,0x08,0x04,0x02,0x01};*/ |
| |
|
| |
/* printf("relocating %x[%x]\n", image, size); */ |
| |
|
| for(k=0; k<=steps; k++) |
for(k=0; k<=steps; k++) |
| for(j=0, bits=bitstring[k]; j<8; j++, i++, bits<<=1) |
for(j=0, bits=bitstring[k]; j<8; j++, i++, bits<<=1) |
| if(bits & 0x80) |
if(bits & 0x80) |
| case CF(DODOES) : MAKE_DOES_CF(image+i,image[i+1]+((Cell)image)); |
case CF(DODOES) : MAKE_DOES_CF(image+i,image[i+1]+((Cell)image)); |
| break; |
break; |
| case CF(DOESJUMP): MAKE_DOES_HANDLER(image+i); break; |
case CF(DOESJUMP): MAKE_DOES_HANDLER(image+i); break; |
| default : image[i]=(Cell)CA(CF(image[i])); |
default : |
| |
/* printf("Code field generation image[%x]:=CA(%x)\n", |
| |
i, CF(image[i])); |
| |
*/ image[i]=(Cell)CA(CF(image[i])); |
| } |
} |
| else |
else |
| image[i]+=(Cell)image; |
image[i]+=(Cell)image; |