evas@euraiv1.UUCP (Eelco van Asperen) (10/02/87)
Here is part 5 of 9: Eelco van Asperen. # This is a shar archive. Extract with sh, not csh. # This archive ends with exit, so do not worry about trailing junk. # --------------------------- cut here -------------------------- PATH=/bin:/usr/bin if test -f test then echo Removing test rm test fi if test -d test then : else echo Creating test mkdir test fi echo Extracting test/test9.dif sed 's/^X//' > test/test9.dif << '+ END-OF-FILE 'test/test9.dif X6a7,10 X> #ifdef TURBO X> # define register X> #endif X> X57c61 X< register p; X--- X> register int p; X66c70 X< register p,q; X--- X> register int p,q; X76c80 X< register p,q,r; X--- X> register int p,q,r; X131c135 X< register i,j,k; X--- X> register int i,j,k; X192c196 X< register i; X--- X> register int i; X203c207 X< register i; X--- X> register int i; X213c217 X< register i; X--- X> register int i; X228,231c232,243 X< signal(SIGHUP,catch); X< for(p = buf;p <= &buf[511]; p++) *p = 025; X< kill(getpid(),SIGHUP); X< } X--- X> #ifdef DOS X> ssignal(1,catch); X> #else X> signal(SIGHUP,catch); X> #endif X> for(p = buf;p <= &buf[511]; p++) *p = 025; X> #ifdef DOS X> gsignal(1); X> #else X> kill(getpid(),SIGHUP); X> #endif X> } + END-OF-FILE test/test9.dif chmod u=rw,g=r,o=r test/test9.dif set `sum test/test9.dif` sum=$1 case $sum in 51121) :;; *) echo 'Bad sum in 'test/test9.dif >&2 esac if test -f tools then echo Removing tools rm tools fi if test -d tools then : else echo Creating tools mkdir tools fi echo Extracting tools/bootblok.dif sed 's/^X//' > tools/bootblok.dif << '+ END-OF-FILE 'tools/bootblok.dif X59,60c59,60 X< mov ss,ax ; set ss to 0 X< mov sp,1024 ; initialize sp (top of vector table) X--- X> mov ss,dx ; set ss to cs i.e., stack in high core X> mov sp,1536 ; initialize sp to high core X122,123c122,124 X< cli X< mov bx,tracksiz ; fsck expects # sectors/track in bx X--- X> X> cli X> mov bx,tracksiz ; fsck expects # sectors/track in bx X192a194,219 X> prhexbyte: X> mov ah,al X> shr al,1 X> shr al,1 X> shr al,1 X> shr al,1 X> call printhex X> mov al,ah X> and al,0Fh X> call printhex X> ret X> X> printhex: ; print string (bx) X> push ax X> mov ah,00Fh X> cmp al,010d X> jae d1 X> add al,'0' X> jmp prh1 X> d1: add al,'A'-010d X> X> prh1: mov word ptr es:[di],ax X> inc di X> inc di X> pop ax X> ret X209d235 X< X216,217c242 X< greet DB "Booting Minix 1.1",0Dh,0Ah,0 X< X--- X> greet DB 0Dh,"Booting MINIX 1.2. Copyright 1987 Prentice-Hall, Inc.",0Dh,0Ah,0 + END-OF-FILE tools/bootblok.dif chmod u=rw,g=r,o=r tools/bootblok.dif set `sum tools/bootblok.dif` sum=$1 case $sum in 2054) :;; *) echo 'Bad sum in 'tools/bootblok.dif >&2 esac echo Extracting tools/build.dif sed 's/^X//' > tools/build.dif << '+ END-OF-FILE 'tools/build.dif X43a44,50 X> #ifdef DOS X> # define MSDOS X> # include <dos.h> X> # include <fcntl.h> X> # include <sys\stat.h> X> # include <stdio.h> X> #endif X70c77 X< # define BREAD 4 /* value 0 means ASCII read */ X--- X> # define BREAD (O_RDONLY|O_BINARY) X117,118c124,125 X< printf("Operating system size %29D %5X\n", cum_size, cum_size); X< printf("\nTotal size including fsck is %D.\n", all_size); X--- X> printf("Operating system size %29ld %5lX\n", cum_size, cum_size); X> printf("\nTotal size including fsck is %ld.\n", all_size); X169c176 X< X--- X> X177c184 X< pexit("separate I & D but text size not multiple of 16 bytes. File: ", X--- X> pexit("separate I & D but text size not multiple of 16 bytes. File: ", X227c234 X< /* Read the header and check the magic number. The standard Monix header X--- X> /* Read the header and check the magic number. The standard Monix header X248,250c255,259 X< if ((n = read(fd, hd, 8)) != 8) pexit("file header too short: ", file_name); X< header_len = hd[HDR_LEN]; X< if (header_len != HEADER1 && header_len != HEADER2) X--- X> if ((n = read(fd, hd, 8)) != 8) X> pexit("file header too short: ", file_name); X> X> header_len = hd[HDR_LEN]; X> if (header_len != HEADER1 && header_len != HEADER2) X257,258c266,269 X< if ((n = read(fd, head, header_len - 8)) != header_len - 8) X< pexit("header too short: ", file_name); X--- X> if ((n = read(fd, head, header_len - 8)) != header_len - 8) { X> printf("expected %d, got %d\n",header_len - 8,n); X> pexit("header too short: ", file_name); X> } X350a362,363 X> X> printf("fsck starts at %4.4X:%4.4X\n",cs,ip); X379c392 X< X--- X> X501a515 X> X529a544 X> X543c558,563 X< if (DMAoverrun(buff1)) X--- X> if (/* X> DMAoverrun(buff1) X> in the 1.1 distribution, this was a dummy routine in X> diskio.asm; always returned 0. X> */ X> 0) X558,560c578,587 X< retries = MAX_RETRIES; X< do X< err = absread (drive, blocknr, buff); X--- X> if (drive == -1) { X> lseek(image, (long)SECTOR_SIZE * (long) blocknr, 0); X> if (read(image, user, SECTOR_SIZE) != SECTOR_SIZE) X> pexit("block read error", ""); X> return; X> } X> X> retries = MAX_RETRIES; X> do X> err = absread (drive, 1, blocknr, buff); X579a607,613 X> if (drive == -1) { X> lseek(image, (long)SECTOR_SIZE * (long) blocknr, 0); X> if (write(image, user, SECTOR_SIZE) != SECTOR_SIZE) X> pexit("block write error", ""); X> return; X> } X> X585c619 X< err = abswrite (drive, blocknr, buff); X--- X> err = abswrite (drive, 1, blocknr, buff); X597c631,633 X< { extern char *derrtab[]; X--- X> { X> extern char *derrtab[]; X> X608,613c644,657 X< if (s[1] != ':') pexit ("wrong drive name (dos): ",s); X< drive = (s[0] & ~32) - 'A'; X< if (drive<0 || drive>32) pexit ("no such drive: ",s); X< printf("Put a blank, formatted diskette in drive %s\nHit return when ready",s); X< gets (kbstr,10); X< puts(""); X--- X> X> if (s[1] != ':') /*pexit("wrong drive name (dos): ",s);*/ { X> drive = -1; X> image = open(s,O_RDWR|O_BINARY|O_CREAT,S_IREAD|S_IWRITE); X> if (image == -1) X> pexit("error opening image-file: ",s); X> } X> else { X> drive = (s[0] & ~32) - 'A'; X> if (drive<0 || drive>32) pexit ("no such drive: ",s); X> printf("Put a blank, formatted diskette in drive %s\nHit return when ready",s); X> fgets (kbstr,10,stdin); X> puts(""); X> } + END-OF-FILE tools/build.dif chmod u=rw,g=r,o=r tools/build.dif set `sum tools/build.dif` sum=$1 case $sum in 49670) :;; *) echo 'Bad sum in 'tools/build.dif >&2 esac echo Extracting tools/changeme sed 's/^X//' > tools/changeme << '+ END-OF-FILE 'tools/changeme X: Increase default stack size from 2K. Xb=../commands/bin Xt=../test Xchmem =30000 $b/asld Xchmem =2000 $b/cc Xchmem =52000 $b/cem Xchmem =30000 $b/cg Xchmem =32000 $b/cpdir Xchmem =40000 $b/cpp Xchmem =40000 $b/dd Xchmem =50000 $b/diff Xchmem =8000 $b/df Xchmem =32000 $b/dosread Xchmem =50000 $b/find Xchmem =50000 $b/fix Xchmem =8000 $b/grep Xchmem =8000 $b/gres Xchmem =64000 $b/libpack Xchmem =64000 $b/libupack Xchmem =20000 $b/make Xchmem =64000 $b/mined Xchmem =8000 $b/mkdir Xchmem =16000 $b/mkfs Xchmem =8000 $b/mv Xchmem =20000 $b/opt Xchmem =8000 $b/pr Xchmem =50000 $b/readfs Xchmem =8000 $b/rm Xchmem =8000 $b/rmdir Xchmem =8000 $b/sh Xchmem =30000 $b/sort Xchmem =2000 $b/tail Xchmem =2000 $b/time Xchmem =8000 $t/t10a Xchmem =8000 $t/t11a Xchmem =8000 $t/t11b Xfor i in 1 2 3 4 5 6 7 8 9 10 Xdo chmem =8000 ../test/test$i Xdone + END-OF-FILE tools/changeme chmod u=rw,g=r,o=r tools/changeme set `sum tools/changeme` sum=$1 case $sum in 58907) :;; *) echo 'Bad sum in 'tools/changeme >&2 esac echo Extracting tools/dos2out.dif sed 's/^X//' > tools/dos2out.dif << '+ END-OF-FILE 'tools/dos2out.dif X100c100,102 X< #include "/lib/C86/stdio.h" X--- X> #include <stdio.h> X> #include <fcntl.h> X> #include <sys\stat.h> X180c182 X< if ((inf=open(in_name,BREAD)) <0) { X--- X> if ((inf=open(in_name,O_RDONLY|O_BINARY)) <0) { X210c212 X< if ((outf=creat(out_name,BWRITE)) <0) { X--- X> if ((outf=open(out_name,O_WRONLY|O_CREAT|O_TRUNC|O_BINARY,S_IREAD|S_IWRITE)) <0) { X240c242 X< inf=open(in_name,BREAD); X--- X> inf=open(in_name,O_RDONLY|O_BINARY); X303a306 X> exit(0); + END-OF-FILE tools/dos2out.dif chmod u=rw,g=r,o=r tools/dos2out.dif set `sum tools/dos2out.dif` sum=$1 case $sum in 34456) :;; *) echo 'Bad sum in 'tools/dos2out.dif >&2 esac echo Extracting tools/fsck.dif sed 's/^X//' > tools/fsck.dif << '+ END-OF-FILE 'tools/fsck.dif X6,9c6,10 X< #include "../fs/type.h" X< X< /* #define DOS /* compile to run under MS-DOS */ X< #define STANDALONE /* compile for the boot-diskette */ X--- X> X> #undef printf /* ../fs/const.h redefines printf as printk !! */ X> X> #include "../fs/type.h" X> X90a92,93 X> X> #ifndef TURBO X94a98 X> #endif X176c180,182 X< #define atol(s) atoi(s) /* kludge for C86 (no atol(s) in library) */ X--- X> # ifdef C86 X> # define atol(s) atoi(s) /* kludge for C86 (no atol(s) in library) */ X> # endif X199a206,207 X> #ifndef TURBO X> X208,210c216,240 X< #ifndef STANDALONE X< # ifdef DOS X< # include "/lib/c86/stdio.h" X--- X> #endif X> X> #ifndef STANDALONE X> # ifdef DOS X> # ifdef TURBO X> X> /* Print the given character. */ X> putchar(c){ X> if (c == '\n') X> putc('\r'); X> putc(c); X> } X> X> /* Get a character from the user and echo it. */ X> getchar(){ X> register c; X> X> if ((c = getc() & 0xFF) == '\r') X> c = '\n'; X> putchar(c); X> return(c); X> } X> # else X> # include <stdio.h> X> # endif X214,215c244,248 X< /* Print the given character. */ X< putchar(c){ X--- X> extern void putc(char); X> extern int getc(void); X> X> /* Print the given character. */ X> putchar(int c){ X222,223c255,256 X< getchar(){ X< register c; X--- X> int getchar(void){ X> register int c; X237,238d269 X< int base, sign; X< int width, pad; X276c307,308 X< printchar(c, mode){ X--- X> printchar(c, mode) X> { X297a330,331 X> #ifndef TURBO X> X357,372c391,453 X< X< /* Initialize the variables used by this program. X< */ X< initvars(){ X< register level; X< X< #ifdef STANDALONE X< brk = &end; X< #endif X< nregular = ndirectory = nblkspec = ncharspec = nbadinode = 0; X< for (level = 0; level < NLEVEL; level++) X< ztype[level] = 0; X< changed = 0; X< firstlist = 1; X< firstcnterr = 1; X< thisblk = NO_BLOCK; X--- X> #else /*TURBO*/ X> X> /* we have to use an explicit path since we use Turbo C to X> * do Minix development and normally only want to use the Minix X> * header files; X> */ X> #include "\tc\include\stdarg.h" X> X> #define prn(t,b,s) { printnum((long)va_arg(argptr,t),b,s,width,pad); width = 0; } X> #define prc(c) { width -= printchar(c, mode); } X> X> X> /* Print the arguments according to format. X> */ X> printf(char *format, ...) X> { X> register char *fmt, *s; X> register short width, pad, mode; X> va_list argptr; X> X> va_start(argptr,format); X> X> for (fmt = format; *fmt != 0; fmt++) X> switch(*fmt) { X> case '\n': putchar('\r'); X> default: putchar(*fmt); X> break; X> case '%': X> if (*++fmt == '-') X> fmt++; X> pad = *fmt == '0' ? '0' : ' '; X> width = 0; X> while (isdigit(*fmt)) { X> width *= 10; X> width += *fmt++ - '0'; X> } X> if (*fmt == 'l' && islower(*++fmt)) X> *fmt = toupper(*fmt); X> mode = isupper(*fmt); X> switch (*fmt) { X> case 'c': X> case 'C': prc(va_arg(argptr,char)); break; X> case 'b': prn(unsigned, 2, 0); break; X> case 'B': prn(long, 2, 0); break; X> case 'o': prn(unsigned, 8, 0); break; X> case 'O': prn(long, 8, 0); break; X> case 'd': prn(int, 10, 1); break; X> case 'D': prn(long, 10, 1); break; X> case 'u': prn(unsigned, 10, 0); break; X> case 'U': prn(long, 10, 0); break; X> case 'x': prn(unsigned, 16, 0); break; X> case 'X': prn(long, 16, 0); break; X> case 's': X> case 'S': s = va_arg(argptr,char *); X> while (*s) prc(*s++); break; X> case '\0': break; X> default: putchar(*fmt); X> } X> while (width-- > 0) X> putchar(pad); X> } X> X> va_end(argptr); X376,385c457,474 X< X< /* Copy n bytes. X< */ X< copy(p, q, n) X< register char *p, *q; X< register int n; X< { X< do X< *q++ = *p++; X< while (--n); X--- X> #endif X> X> /* Initialize the variables used by this program. X> */ X> initvars() X> { X> register level; X> X> #ifdef STANDALONE X> brk = &end; X> #endif X> nregular = ndirectory = nblkspec = ncharspec = nbadinode = 0; X> for (level = 0; level < NLEVEL; level++) X> ztype[level] = 0; X> changed = 0; X> firstlist = 1; X> firstcnterr = 1; X> thisblk = NO_BLOCK; X389,396c478,487 X< /* Print the string `s' and exit. X< */ X< fatal(s) X< char *s; X< { X< printf("%s\n", s); X< printf("fatal\n"); X< exit(-1); X--- X> X> /* Copy n bytes. X> */ X> copy(p, q, n) X> register char *p, *q; X> register int n; X> { X> do X> *q++ = *p++; X> while (--n); X400,404c491,498 X< /* Test for end of line. X< */ X< eoln(c) X< { X< return(c < 0 || c == '\n' || c == '\r'); X--- X> /* Print the string `s' and exit. X> */ X> fatal(s) X> char *s; X> { X> printf("%s\n", s); X> printf("fatal\n"); X> exit(-1); X407a502,509 X> /* Test for end of line. X> */ X> eoln(c) X> { X> return(c < 0 || c == '\n' || c == '\r'); X> } X> X> X475c577 X< unsigned nelem, elsize; X--- X> unsigned int nelem, elsize; X479c581 X< register *r; X--- X> register int *r; X537c639,640 X< printpath(mode, nlcr){ X--- X> printpath(mode, nlcr) X> { X584,585c687,689 X< #ifdef STANDALONE X< disktype() X--- X> X> #ifdef STANDALONE X> disktype(void) X761c865,866 X< lsuper(){ X--- X> lsuper() X> { X798c903,904 X< makedev(){ X--- X> makedev() X> { X827c933,934 X< mkfs(){ X--- X> mkfs() X> { X866c973,974 X< getsuper(){ X--- X> getsuper() X> { X894c1002,1003 X< chksuper(){ X--- X> chksuper() X> { X980c1089,1090 X< unsigned *allocbitmap(nblk){ X--- X> unsigned *allocbitmap(nblk) X> { X992c1102 X< unsigned *bitmap; X--- X> unsigned int *bitmap; X1077c1187,1188 X< getbitmaps(){ X--- X> getbitmaps() X> { X1101,1103c1212,1214 X< unsigned w1, w2; X< char *type; X< bit_nr bit; X--- X> unsigned int w1, w2; X> bit_nr bit; X> char *type; X1122c1233 X< unsigned *cmap, *dmap; X--- X> unsigned int *cmap, *dmap; X1153c1264,1265 X< chkilist(){ X--- X> chkilist() X> { X1177c1289,1290 X< getcount(){ X--- X> getcount() X> { X1215c1328,1329 X< chkcount(){ X--- X> chkcount() X> { X1508c1622,1623 X< errzone("found", ino, zno, level, pos, bit); X--- X> errzone("found", /*ino,*/ zno, level, pos /*, bit*/); X> /* the ino and bit-parameters should not be there I think */ X1538c1653,1654 X< file_pos jump(level){ X--- X> file_pos jump(level) X> { X1738c1854,1855 X< chktree(){ X--- X> chktree() X> { X1753c1870,1871 X< printtotal(){ X--- X> printtotal() X> { X1819,1820c1937,1942 X< main(argc, argv) X< char **argv; X--- X> #ifdef STANDALONE X> main() X> #else X> main(argc, argv) X> char **argv; X> #endif X1900c2022 X< disktype() /* init tracksiz & cylsize for disk in A: */ X--- X> disktype(); /* init tracksiz & cylsize for disk in A: */ X1956a2079 X> + END-OF-FILE tools/fsck.dif chmod u=rw,g=r,o=r tools/fsck.dif set `sum tools/fsck.dif` sum=$1 case $sum in 58623) :;; *) echo 'Bad sum in 'tools/fsck.dif >&2 esac echo Extracting tools/fsck1.dif sed 's/^X//' > tools/fsck1.dif << '+ END-OF-FILE 'tools/fsck1.dif X4,5c4,7 X< X< INCLUDE ..\lib\prologue.h X--- X> TURBO equ 1 X> XDEBUG equ 0 X> X> INCLUDE ..\lib\prologue.h X13,18c15,20 X< PUBLIC $main, @end, edata, exit, kerstack,_prt X< EXTRN main:near X< ;EXTRN cinit:near, debug:near X< ENDIF X< PUBLIC reset_di, diskio, getc, putc, dmaoverr X< EXTRN cylsiz:word, tracksiz:word, drive:byte X--- X> PUBLIC $main, _end, _exit ;NOTUSED??: , edata, kerstack, _prt X> EXTRN _main:near X> ;EXTRN cinit:near, debug:near X> ENDIF X> PUBLIC _reset_diskette, _diskio, _getc, _putc, _dmaoverrun X> EXTRN _cylsiz:word, _tracksiz:word, _drive:word X25,26c27,28 X< @CODE SEGMENT X< assume cs:@code,ds:dgroup X--- X> _TEXT SEGMENT X> assume cs:_TEXT,ds:dgroup X33c35 X< mov cx,offset dgroup:@end X--- X> mov cx,offset dgroup:_end X40,51c42,46 X< mov dgroup:tracksiz,dx ; dx (was bx) is # sectors/track X< add dx,dx X< mov dgroup:cylsiz,dx ; # sectors/cylinder X< mov sp,offset dgroup:kerstack+STACKSIZE X< X< ; call cinit X< ; mov ax,offset fsckmsg X< ; push ax X< ; call debug X< ; pop ax X< X< call main X--- X> mov dgroup:_tracksiz,dx ; dx (was bx) is # sectors/track X> add dx,dx X> mov dgroup:_cylsiz,dx ; # sectors/cylinder X> mov sp,offset dgroup:kerstack+STACKSIZE X> call _main X61c56 X< exit: mov bx,dgroup:tracksiz X--- X> _exit: mov bx,dgroup:_tracksiz X92,95c87,97 X< putc: X< xor ax,ax X< call csv X< mov al,4[bp] ; al contains char to be printed X--- X> _putc: X> ifdef TURBO X> push bp X> mov bp,sp X> xor ax,ax X> else X> xor ax,ax X> call csv X> endif X> X> mov ax,4[bp] ; al contains char to be printed X101,103c103,110 X< jmp cret X< X< getc: X--- X> ifdef TURBO X> pop bp X> ret X> else X> jmp cret X> endif X> X> _getc: X108,110c115,119 X< reset_di: ; reset_diskette X< xor ax,ax X< call csv X--- X> _reset_diskette: ; reset_diskette X> xor ax,ax X> ifndef TURBO X> call csv X> endif X114c123,127 X< jmp cret X--- X> ifdef TURBO X> ret X> else X> jmp cret X> endif X118,120c131,140 X< diskio: X< xor ax,ax X< call csv X--- X> _diskio: X> xor ax,ax X> ifdef TURBO X> push bp X> mov bp,sp X> push si X> push di X> else X> call csv X> endif X126c146 X< div dgroup:cylsiz ; ax = cylinder, dx = sector within cylinder X--- X> div dgroup:_cylsiz ; ax = cylinder, dx = sector within cylinder X133c153 X< div dgroup:tracksiz ; ax = head, dx = sector X--- X> div dgroup:_tracksiz ; ax = head, dx = sector X137c157,163 X< mov dl,dgroup:drive ; dl = drive code (0-3 or 0x80 - 0x81) X--- X> X> ; _drive used to be declared as a byte here but as an int in fsck.c X> ; so now we have to use the int-declaration from fsck.c: X> ; X> ; mov dl,dgroup:_drive X> X> mov dl,byte ptr dgroup:_drive ; dl = drive code (0-3 or 0x80 - 0x81) X142c168 X< cmp al,byte ptr dgroup:tracksiz ; see if last sector is on next track X--- X> cmp al,byte ptr dgroup:_tracksiz ; see if last sector is on next track X163,166c189,200 X< d2: jmp cret X< X< X< dmaoverr: ; test if &buffer causes a DMA overrun X--- X> d2: X> ifdef TURBO X> pop di X> pop si X> pop bp X> ret X> else X> jmp cret X> endif X> X> X> _dmaoverrun: ; test if &buffer causes a DMA overrun X186a221 X> ifndef TURBO X202,207c237,242 X< X< X< @CODE ENDS X< X< X< @DATAI SEGMENT X--- X> endif X> X> _TEXT ENDS X> X> X> _DATA SEGMENT X211,212c246 X< fsckmsg DB "arrived at fsck1",0 X< @DATAI ENDS X--- X> _DATA ENDS X231,241c265,275 X< @DATAT SEGMENT ; DATAT holds nothing. The label tells us X< edata label byte ; where .data ends. X< @DATAT ENDS X< X< @DATAU SEGMENT ; allocate the stack in .bss X< kerstack DB STACKSIZE dup(?) X< @DATAU ENDS X< X< @DATAV SEGMENT ; DATAV holds nothing. The label tells us X< @end label byte ; where .data+.bss ends (first free memory) X< @DATAV ENDS X--- X> _DATAEND SEGMENT ; DATAEND holds nothing. The label tells us X> edata label byte ; where .data ends. X> _DATAEND ENDS X> X> _BSS SEGMENT ; allocate the stack in .bss X> kerstack DB STACKSIZE dup(?) X> _BSS ENDS X> X> _BSSEND SEGMENT ; DATAV holds nothing. The label tells us X> _end label byte ; where .data+.bss ends (first free memory) X> _BSSEND ENDS X248,249c282,283 X< END ; end of assembly-file X< X--- X> END $main ; end of assembly-file X> + END-OF-FILE tools/fsck1.dif chmod u=rw,g=r,o=r tools/fsck1.dif set `sum tools/fsck1.dif` sum=$1 case $sum in 60374) :;; *) echo 'Bad sum in 'tools/fsck1.dif >&2 esac echo Extracting tools/makefile sed 's/^X//' > tools/makefile << '+ END-OF-FILE 'tools/makefile X# X# Makefile for tools directory. (C) 1987 Eelco van Asperen. X# XTCINCLUDE=\tc\include XINCLUDE=..\include XCC=tcc XCCOPTS=-Di8088 -DTURBO -DSTANDALONE X# X# these are to make mkfs under DOS: X# XMKFSOPTS=-Di8088 -DTURBO -DSTANDALONE -DDOS XTCLIB=\tc\lib XLN=tlink XLNOPTS=/x/d/c XFORMATTER=c:\etc\format X X.c.obj: X $(CC) -A -mt -I$(INCLUDE) $(CCOPTS) -c $< X X.asm.obj: X masm /mx $<,,nul,nul X X.obj.exe: X $(LN) $(LNOPTS) ..\mlib\head $<,$*,$*,..\mlib\minix X X.exe.out: X dos2out -d $* X X# X# create a boot-disk; X# Xminix: bootblok.bin ..\kernel\kernel.out ..\mm\mm.out ..\fs\fs.out init.out fsck.out build.exe X build bootblok.bin ..\kernel\kernel.out ..\mm\mm.out ..\fs\fs.out init.out fsck.out a: X X# X# idem, but format the disk first; X# X# (the @*#*&!!?@#$!% DOS-formatter doesn't return a proper error-code !!) X# Ximage: bootblok.bin ..\kernel\kernel.out ..\mm\mm.out ..\fs\fs.out init.out fsck.out build.exe X - $(FORMATTER) a: X build bootblok.bin ..\kernel\kernel.out ..\mm\mm.out ..\fs\fs.out init.out fsck.out a: X X# X# create the bootblok; X# Xbootblok.bin: bootblok.asm X masm /mx bootblok,,nul,nul X link bootblok,,nul,nul X exe2bin bootblok.exe bootblok.bin X del bootblok.exe X del bootblok.obj X X# X# make 'fsck'; does not use crtso.obj nor head.obj. X# Xfsck.out: fsck1.obj fsck.obj X $(LN) $(LNOPTS) fsck1 fsck,fsck,fsck,..\mlib\minix X dos2out -d fsck.exe X X# X# make 'init'; uses special startup module head.obj. X# Xinit.out: init.obj X $(LN) $(LNOPTS) ..\mlib\head init,init,init,..\mlib\minix X dos2out -d init.exe X X# X# build 'build' for use under MS-DOS; X# Xbuild.exe: build.obj X $(LN) $(LNOPTS) $(TCLIB)\c0s build,build,build,$(TCLIB)\cs X Xbuild.obj: build.c X $(CC) -ms -I$(TCINCLUDE) -Di8088 -DTURBO -DSTANDALONE -DDOS -c $* X X# X# make for version of 'mkfs' for use under MS-DOS; X# (a complicated 'minixwrite') X# Xdos_mkfs: mkfs.c X $(CC) $(MKFSOPTS) mkfs.c X $(LN) $(LNOPTS) $(TCLIB)\c0s mkfs,mkfs,mkfs,$(TCLIB)\cs X + END-OF-FILE tools/makefile chmod u=rw,g=r,o=r tools/makefile set `sum tools/makefile` sum=$1 case $sum in 19291) :;; *) echo 'Bad sum in 'tools/makefile >&2 esac echo Extracting tools/message.txt sed 's/^X//' > tools/message.txt << '+ END-OF-FILE 'tools/message.txt X X This is Minix, a Unix (tm) V7 clone, created by Andy Tanenbaum. X X Adapted for Turbo C by Eelco van Asperen. X + END-OF-FILE tools/message.txt chmod u=rw,g=r,o=r tools/message.txt set `sum tools/message.txt` sum=$1 case $sum in 9096) :;; *) echo 'Bad sum in 'tools/message.txt >&2 esac echo Extracting tools/passwd.txt sed 's/^X//' > tools/passwd.txt << '+ END-OF-FILE 'tools/passwd.txt Xroot::0:0::/: Xdaemon:*:1:1::/etc: Xbin:*:2:2::/bin: Xast::8:3::/usr/ast: + END-OF-FILE tools/passwd.txt chmod u=rw,g=r,o=r tools/passwd.txt set `sum tools/passwd.txt` sum=$1 case $sum in 5176) :;; *) echo 'Bad sum in 'tools/passwd.txt >&2 esac echo Extracting tools/rc-hdu.txt sed 's/^X//' > tools/rc-hdu.txt << '+ END-OF-FILE 'tools/rc-hdu.txt X/etc/mount /dev/hd1 /usr X/usr/bin/date -q </dev/tty Xcat /etc/message X/etc/update & + END-OF-FILE tools/rc-hdu.txt chmod u=rw,g=r,o=r tools/rc-hdu.txt set `sum tools/rc-hdu.txt` sum=$1 case $sum in 7016) :;; *) echo 'Bad sum in 'tools/rc-hdu.txt >&2 esac echo Extracting tools/rc.txt sed 's/^X//' > tools/rc.txt << '+ END-OF-FILE 'tools/rc.txt X/bin/getlf "Please insert /usr diskette in drive 0. Then hit RETURN." X/etc/mount /dev/fd0 /usr X/usr/bin/date -q </dev/tty Xcat /etc/message X/etc/update & + END-OF-FILE tools/rc.txt chmod u=rw,g=r,o=r tools/rc.txt set `sum tools/rc.txt` sum=$1 case $sum in 13026) :;; *) echo 'Bad sum in 'tools/rc.txt >&2 esac echo Extracting tools/strip-cr.pas sed 's/^X//' > tools/strip-cr.pas << '+ END-OF-FILE 'tools/strip-cr.pas X{$R+,C+,U+,G128,P128} Xprogram strip; Xvar c:char; Xbegin X while (not eof) do X begin X read(c); X if (c <> #$0D) X then write(c); X end; Xend. + END-OF-FILE tools/strip-cr.pas chmod u=rw,g=r,o=r tools/strip-cr.pas set `sum tools/strip-cr.pas` sum=$1 case $sum in 10571) :;; *) echo 'Bad sum in 'tools/strip-cr.pas >&2 esac echo Extracting tools/ttys.txt sed 's/^X//' > tools/ttys.txt << '+ END-OF-FILE 'tools/ttys.txt X100 + END-OF-FILE tools/ttys.txt chmod u=rw,g=r,o=r tools/ttys.txt set `sum tools/ttys.txt` sum=$1 case $sum in 155) :;; *) echo 'Bad sum in 'tools/ttys.txt >&2 esac erendpt