[comp.os.minix] Turbo C diff's for Minix 1.2; here they are ! Part 5 of 9

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