/* prom.c -- build a file "PROM" which consists of 4 16Kb segments. The PROM file is burned in to a PROM/EPROM such that the DPU will see the first 16K segment as the initial startup PROM and the other 3 segments as PROM banks D1,D2,D3. Another way of looking at it: DPU banked memory: D0 - initial PROM D1 - first "extra PROM" segment D2 - second " D3 - third " */ #include #include #include int main() { FILE *fi,*fo; char *buf; fi = fopen("dpu.b","rb"); fo = fopen("prom","wb"); buf = (char *)malloc(4096); /* copy 16K of PROM */ fread(buf,1,4096,fi); fwrite(buf,1,4096,fo); fread(buf,1,4096,fi); fwrite(buf,1,4096,fo); fread(buf,1,4096,fi); fwrite(buf,1,4096,fo); fread(buf,1,4096,fi); fwrite(buf,1,4096,fo); fclose(fi); /* (if the input files are less than 16K, we'll copy some random memory garbage at the end) */ /* do 3 more */ fi = fopen("promd1.b","rb"); fread(buf,1,4096,fi); fwrite(buf,1,4096,fo); fread(buf,1,4096,fi); fwrite(buf,1,4096,fo); fread(buf,1,4096,fi); fwrite(buf,1,4096,fo); fread(buf,1,4096,fi); fwrite(buf,1,4096,fo); fclose(fi); fi = fopen("promd2.b","rb"); fread(buf,1,4096,fi); fwrite(buf,1,4096,fo); fread(buf,1,4096,fi); fwrite(buf,1,4096,fo); fread(buf,1,4096,fi); fwrite(buf,1,4096,fo); fread(buf,1,4096,fi); fwrite(buf,1,4096,fo); fclose(fi); fi = fopen("promd3.b","rb"); fread(buf,1,4096,fi); fwrite(buf,1,4096,fo); fread(buf,1,4096,fi); fwrite(buf,1,4096,fo); fread(buf,1,4096,fi); fwrite(buf,1,4096,fo); fread(buf,1,4096,fi); fwrite(buf,1,4096,fo); fclose(fi); fclose(fo); free(buf); return 0; }