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