7103_300@uwovax.uwo.ca (Eric Smith) (03/03/89)
Firstly, I'd like to express my thanks to Howard C. Johnson for his recently posted rs232 cdiffs. I'm particularly impressed by the clean way he allows the user to select various options. I think the rs232 kernel would make a good unofficial standard, pending ST-Minix 1.2, and I'd encourage everyone to apply the patches. (In a side note, Jwahar Bammi did an incredible job in porting Minix to the GCC, but his kernel is, alas, incompatible with ACK and hence not as good a candidate for a standard). I have noticed a few bugs in the rs232 kernel (most of them in my screen and mouse drivers) and one omission -- Simon Poole's enhanced keyboard. I've fixed the bugs and added the enhanced keyboard, as well as an enhancement to the mouse driver to allow the use of the ALT key as a third mouse button. The diffs are wrapped up in the following shar file. -- Eric R. Smith email: Dept. of Mathematics 7103_300@uwovax.uwo.ca University of Western Ontario 7103_300@uwovax.bitnet London, Ont. Canada N6A 5B7 (a shared mailbox: put my name on ph: (519) 661-3638 the message, please!) ---------------------------- cut here ---------------------------- #! /bin/sh # This is a shell archive. Remove anything before this line, then unpack # it by saving it into a file and typing "sh file". To overwrite existing # files, type "sh file -c". You can also feed this as standard input via # unshar, or by typing "sh <file", e.g.. If this archive is complete, you # will see the following message at the end: # "End of shell archive." # Contents: README fs.cdiff kernel.cdiff lib.cdiff mm.cdiff # Wrapped by root@Eric's Minix/ST on Thu Mar 2 20:27:20 1989 PATH=/bin:/usr/bin:/usr/ucb ; export PATH if test -f 'README' -a "${1}" != "-c" ; then echo shar: Will not clobber existing file \"'README'\" else echo shar: Extracting \"'README'\" \(1779 characters\) sed "s/^X//" >'README' <<'END_OF_FILE' XHere are some bug fixes and enhancements to the recently posted rs232 Xkernel: X Xbug fixes: X1) changed the Makefile for mm to include trace.c X2) in connection with the above: added a sys_trace call to the ACK X library (I missed the MDB posting, so I didn't have this; I was X able to piece it together from some context diffs that came with X the GCC, and from the kernel source code. If you have the library X fixes that came with MDB, use those.) X3) applied previously posted fix to screen driver (to check for X illegal arguments) X4) fixed bug in the mouse driver (corrected the check for the number X of characters to read) X Xenhancements: X1) added Simon Poole's excellent keyboard fixes. X2) changed the mouse driver to treat the "Alt" key as a middle mouse X button, and changed the left mouse button value to be compatible with X the Sun mouse (this will make porting stuff easier). X XThis shar file contains several files with a .cdiff extension; each should Xbe applied in the appropriate directory (e.g. kernel.cdiff in the directory Xwhere you keep the kernel source). X Xfs.cdiff: just an aesthetic fix, to a comment Xmm.cdiff: fixes the Makefile; don't bother if you've already done it Xkernel.cdiff: the keyboard enhancements and the mouse/screen fixes. You X should definitely apply these, then read the comments to stkbd.c to X decide how you want to configure the keyboard. Xlib.cdiff: sys_trace call, for those who don't have it but want to be X able to compile with HAVEPTRACE == 1 X-- XEric R. Smith email: XDept. of Mathematics 7103_300@uwovax.uwo.ca XUniversity of Western Ontario 7103_300@uwovax.bitnet XLondon, Ont. Canada N6A 5B7 (a shared mailbox: put my name on Xph: (519) 661-3638 the message, please!) X END_OF_FILE if test 1779 -ne `wc -c <'README'`; then echo shar: \"'README'\" unpacked with wrong size! fi # end of 'README' fi if test -f 'fs.cdiff' -a "${1}" != "-c" ; then echo shar: Will not clobber existing file \"'fs.cdiff'\" else echo shar: Extracting \"'fs.cdiff'\" \(517 characters\) sed "s/^X//" >'fs.cdiff' <<'END_OF_FILE' X*** /tmp/,RCSt1000027 Tue Feb 28 17:12:10 1989 X--- table.c Tue Feb 28 03:31:59 1989 X*************** X*** 149,155 **** X tape_open, rw_dev, tape_close, TAPE, /* 9 = /dev/tape */ X #endif X #if HAVEMOUSE X! no_call, rw_dev, no_call, MOUSE, /* 10 = /dev/lp */ X #endif X }; X X--- 149,155 ---- X tape_open, rw_dev, tape_close, TAPE, /* 9 = /dev/tape */ X #endif X #if HAVEMOUSE X! no_call, rw_dev, no_call, MOUSE, /* 10 = /dev/mouse */ X #endif X }; X END_OF_FILE if test 517 -ne `wc -c <'fs.cdiff'`; then echo shar: \"'fs.cdiff'\" unpacked with wrong size! fi # end of 'fs.cdiff' fi if test -f 'kernel.cdiff' -a "${1}" != "-c" ; then echo shar: Will not clobber existing file \"'kernel.cdiff'\" else echo shar: Extracting \"'kernel.cdiff'\" \(14189 characters\) sed "s/^X//" >'kernel.cdiff' <<'END_OF_FILE' X*** /tmp/,RCSt1000025 Thu Mar 2 19:49:59 1989 X--- memory.c Tue Feb 28 03:50:43 1989 X*************** X*** 158,164 **** X /* Determine address where data is to go or to come from. */ X rp = proc_addr(m_ptr->PROC_NR); X user_phys = umap(rp, D, (vir_bytes) m_ptr->ADDRESS, (vir_bytes) count); X! if (user_phys == 0) return(E_BAD_ADDR); X X /* Copy the data. Origin above EM_ORIGIN means AT extended memory */ X #ifdef i8088 X--- 158,164 ---- X /* Determine address where data is to go or to come from. */ X rp = proc_addr(m_ptr->PROC_NR); X user_phys = umap(rp, D, (vir_bytes) m_ptr->ADDRESS, (vir_bytes) count); X! if (user_phys == (phys_bytes)0) return(E_BAD_ADDR); X X /* Copy the data. Origin above EM_ORIGIN means AT extended memory */ X #ifdef i8088 X*************** X*** 241,246 **** X--- 241,249 ---- X return EINVAL; X X user_buf = umap(rp,D,(vir_bytes) m_ptr->TTY_SPEK,(vir_bytes) count); X+ if (user_buf == (phys_bytes)0) X+ return(E_BAD_ADDR); X+ X if (set) X phys_copy(user_buf, our_buf, (long) count); X X*** /tmp/,RCSt1000030 Thu Mar 2 19:50:28 1989 X--- stmouse.c Wed Mar 1 00:38:28 1989 X*************** X*** 99,105 **** X } X mb.m_buttons = msg.MOUSE_BUT; X X! count = MIN(count, sizeof(mb)); X rp = proc_addr(m_ptr->PROC_NR); X user_phys = umap(rp, D, (vir_bytes) m_ptr->ADDRESS, (vir_bytes) count); X if (user_phys == 0) return(E_BAD_ADDR); X--- 99,105 ---- X } X mb.m_buttons = msg.MOUSE_BUT; X X! count = MIN((unsigned)m_ptr->COUNT, (unsigned)sizeof(mb)); X rp = proc_addr(m_ptr->PROC_NR); X user_phys = umap(rp, D, (vir_bytes) m_ptr->ADDRESS, (vir_bytes) count); X if (user_phys == 0) return(E_BAD_ADDR); X*** /tmp/,RCSt1000035 Thu Mar 2 19:51:07 1989 X--- stvdu.c Wed Mar 1 00:41:43 1989 X*************** X*** 45,50 **** X--- 45,52 ---- X X EXTERN char font16[]; X EXTERN char font8[]; X+ EXTERN int keypad; X+ EXTERN int app_mode; X X /*===========================================================================* X * start * X*************** X*** 324,331 **** X return; X case 'l': /* RM: reset mode */ X case 'h': /* SM: set mode */ X! if (v->next[0] == '?' && v->next[1] == '5' && v->mono) X! VIDEO->vd_rgb[0] = c == 'l' ? RGB_BLACK : RGB_WHITE; X return; X case '~': /* Minix-ST specific escape sequence */ X /* X--- 326,337 ---- X return; X case 'l': /* RM: reset mode */ X case 'h': /* SM: set mode */ X! if (v->next[0] == '?') { /* DEC private modes */ X! if (v->next[1] == '5' && v->mono) /* DECSCNM */ X! VIDEO->vd_rgb[0] = c == 'l' ? RGB_BLACK : RGB_WHITE; X! else if (v->next[1] == '1') /* DECCKM */ X! app_mode = c == 'l' ? TRUE : FALSE; X! } X return; X case '~': /* Minix-ST specific escape sequence */ X /* X*************** X*** 400,405 **** X--- 406,417 ---- X v->savcrow = v->crow; X v->savattr = v->attr; X return; X+ case '=': /* DECKPAM: keypad application mode */ X+ keypad = TRUE; X+ return; X+ case '>': /* DECKPNM: keypad numeric mode */ X+ keypad = FALSE; X+ return; X case 'E': /* NEL: next line */ X vductrl(015); X /* fall through */ X*************** X*** 417,422 **** X--- 429,436 ---- X case 'c': /* RIS: reset to initial state */ X vduinit(&tty_struct[CONSOLE]); X vducursor(0); X+ keypad = FALSE; X+ app_mode = FALSE; X return; X default: X return; X*************** X*** 724,730 **** X {} X X /*===========================================================================* X! * vduinit * X *===========================================================================*/ X PUBLIC vduinit() X { X--- 738,744 ---- X {} X X /*===========================================================================* X! * vduinit * X *===========================================================================*/ X PUBLIC vduinit() X { X*** /tmp/,RCSt1000051 Thu Mar 2 19:58:56 1989 X--- stkbd.c Thu Mar 2 19:54:10 1989 X*************** X*** 2,7 **** X--- 2,16 ---- X #ifdef ATARI_ST X /* X * The ACIA driver for the Atari ST, both MDI and KBD X+ * X+ * Modified the original 1.1 code to support more X+ * function keys and provide a robust way of determing X+ * which keys are function keys. X+ * Note: defining COMPAT will result in key definitions X+ * that are the same as for Minix 1.1 with the X+ * exception that <Shift><ClrHome> works and X+ * <Insert> generates ESC [I X+ * S.Poole 21.1.89 X */ X #include "../h/const.h" X #include "../h/type.h" X*************** X*** 103,108 **** X--- 112,265 ---- X /*78*/ 0, 0, 0, 0, 0, 0, 0, 0 X }; X X+ /* X+ * Flag for keypad mode X+ * this can be set by code in stvdu.c X+ */ X+ #ifdef COMPAT X+ PUBLIC int keypad = FALSE; X+ #else X+ PUBLIC int keypad = TRUE; X+ #endif X+ /* X+ * Flag for arrow key application mode X+ * this can be set by code in stvdu.c X+ */ X+ PUBLIC int app_mode = FALSE; X+ /* X+ * Map function keys to an index into the X+ * table of function key values X+ */ X+ PRIVATE unsigned char f_keys[] = { X+ /*00*/ 0, 0, 0, 0, 0, 0, 0, 0, X+ /*08*/ 0, 0, 0, 0, 0, 0, 0, 0, X+ /*10*/ 0, 0, 0, 0, 0, 0, 0, 0, X+ /*18*/ 0, 0, 0, 0, 0, 0, 0, 0, X+ /*20*/ 0, 0, 0, 0, 0, 0, 0, 0, X+ /*28*/ 0, 0, 0, 0, 0, 0, 0, 0, X+ /*30*/ 0, 0, 0, 0, 0, 0, 0, 0, X+ /*38*/ 0, 0, 0, 1, 2, 3, 4, 5, X+ /*40*/ 6, 7, 8, 9, 10, 0, 0, 17, X+ /*48*/ 16, 0, 26, 13, 0, 15, 30, 0, X+ /*50*/ 14, 0, 18, 0, 1, 2, 3, 4, X+ /*58*/ 5, 6, 7, 8, 9, 10, 0, 0, X+ /*60*/ 0, 11, 12, 19, 20, 21, 22, 23, X+ /*68*/ 24, 25, 27, 28, 29, 31, 32, 33, X+ /*70*/ 34, 35, 36, 0, 0, 0, 0, 0, X+ /*78*/ 0, 0, 0, 0, 0, 0, 0, 0 X+ }; X+ X+ /* X+ * Numbering of the function keys, this scheme was chosen X+ * so that it easy to determine which function to call to actually X+ * generate the string. X+ * X+ * Note: the <Help> and <Undo> keys are considered to be function X+ * keys 11 and 12. X+ * X+ * F-keys: ----------------------------------------- X+ * | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10| X+ * ----------------------------------------- X+ * X+ * Arrow-Keys: ------------- X+ * | 12 | 11 | X+ * ------------- X+ * | 18| 16| 17| X+ * ------------- X+ * | 13| 14| 15| X+ * ------------- X+ * X+ * Keypad: ----------------- X+ * | 19| 20| 21| 22| X+ * ----------------- X+ * | 23| 24| 25| 26| X+ * ----------------- X+ * | 27| 28| 29| 30| X+ * ----------------- X+ * | 31| 32| 33| | X+ * ------------- 36| X+ * | 34 | 35| | X+ * ----------------- X+ */ X+ X+ /* X+ * There is no problem with expanding this struct to X+ * have a field for <Control> and <Alternate> (and combinations X+ * of them), but who needs > 152 function keys? X+ */ X+ struct fkey { X+ char norm, shift; X+ }; X+ X+ PRIVATE struct fkey ftbl[] = { X+ #ifdef COMPAT X+ /* 1 = F1 */ {'P', 0}, X+ /* 2 = F2 */ {'Q', 0}, X+ /* 3 = F3 */ {'R', 0}, X+ /* 4 = F4 */ {'S', 0}, X+ /* 5 = F5 */ {'T', 0}, X+ /* 6 = F6 */ {'U', 0}, X+ /* 7 = F7 */ {'V', 0}, X+ /* 8 = F8 */ {'W', 0}, X+ /* 9 = F9 */ {'X', 0}, X+ /* 10 = F10 */ {'Y', 0}, X+ /* 11 = Undo */ { 0, 0}, X+ /* 12 = Help */ { 0, 0}, X+ #else X+ /* X+ * So that we can produce VT200 style function-key codes, X+ * the values here are integer values that are converted X+ * to a string in kbdpf(). X+ * X+ * The assignment of numbers to keys is rather chaotic, X+ * but at least all the VT200 keys are there. X+ */ X+ /* ST key */ /* VT200 key */ X+ /* 1 = F1 */ { 1, 21}, /* Find F10 */ X+ /* 2 = F2 */ { 2, 23}, /* Insert F11 */ X+ /* 3 = F3 */ { 3, 24}, /* Remove F12 */ X+ /* 4 = F4 */ { 4, 25}, /* Select F13 */ X+ /* 5 = F5 */ { 5, 26}, /* Prev. F14 */ X+ /* 6 = F6 */ { 6, 31}, /* Next F17 */ X+ /* 7 = F7 */ { 17, 32}, /* F6 F18 */ X+ /* 8 = F8 */ { 18, 33}, /* F7 F19 */ X+ /* 9 = F9 */ { 19, 34}, /* F8 F20 */ X+ /* 10 = F10 */ { 20, 35}, /* F9 */ X+ /* 11 = Undo */ { 36, 37}, /* */ X+ /* 12 = Help */ { 28, 29}, /* Help Do */ X+ #endif X+ /* X+ * The following codes are more conventional X+ */ X+ /* 13 = Left */ {'D', 0}, X+ /* 14 = Down */ {'B', 0}, X+ /* 15 = Right */ {'C', 0}, X+ /* 16 = Up */ {'A', 0}, X+ /* 17 = ClrHome */ {'H', 'J'}, X+ /* 18 = Insert */ {'I', 0}, X+ /* X+ * Keypad starts here X+ */ X+ /* 19 = ( */ {'P', 0}, X+ /* 20 = ) */ {'Q', 0}, X+ /* 21 = / */ {'R', 0}, X+ /* 22 = * */ {'S', 0}, X+ /* 23 = 7 */ {'w', 0}, X+ /* 24 = 8 */ {'x', 0}, X+ /* 25 = 9 */ {'y', 0}, X+ /* 26 = - */ {'m', 0}, X+ /* 27 = 4 */ {'t', 0}, X+ /* 28 = 5 */ {'u', 0}, X+ /* 29 = 6 */ {'v', 0}, X+ /* 30 = + */ {'l', 0}, X+ /* 31 = 1 */ {'q', 0}, X+ /* 32 = 2 */ {'w', 0}, X+ /* 33 = 3 */ {'s', 0}, X+ /* 34 = 0 */ {'p', 0}, X+ /* 35 = . */ {'n', 0}, X+ /* 36 = Enter */ {'M', 0} X+ }; X+ X PRIVATE int shift1, shift2, capslock, control, alt; X /* keep track of key statii */ X PRIVATE char kbdbuf[2*MAX_OVERRUN+2]; X*************** X*** 160,166 **** X } X if (mousekeys == 0) { /* mouse packet finished */ X kbdmes.m_type = MOUSE_INT; X! kbdmes.MOUSE_BUT = (leftmouse << 1) | rightmouse; X kbdmes.MOUSE_X = mousex; X kbdmes.MOUSE_Y = mousey; X interrupt(MOUSE, &kbdmes); X--- 317,323 ---- X } X if (mousekeys == 0) { /* mouse packet finished */ X kbdmes.m_type = MOUSE_INT; X! kbdmes.MOUSE_BUT = (leftmouse << 2) | (alt << 1) | rightmouse; X kbdmes.MOUSE_X = mousex; X kbdmes.MOUSE_Y = mousey; X interrupt(MOUSE, &kbdmes); X*************** X*** 220,227 **** X *===========================================================================*/ X PRIVATE kbdkey(code) X { X! register c; X X if (shift1 || shift2) X c = keyshft[code]; X else if (capslock) X--- 377,385 ---- X *===========================================================================*/ X PRIVATE kbdkey(code) X { X! register int c,f,fc; X X+ f = f_keys[code]; X if (shift1 || shift2) X c = keyshft[code]; X else if (capslock) X*************** X*** 228,234 **** X c = keycaps[code]; X else X c = keynorm[code]; X! if (c) { X if (alt) X c = national(code, c | 0x80); X if (control) { X--- 386,395 ---- X c = keycaps[code]; X else X c = keynorm[code]; X! /* X! * check if the key is not a function key X! */ X! if (!f) { X if (alt) X c = national(code, c | 0x80); X if (control) { X*************** X*** 256,297 **** X kbdput(code - 0x3B + 1, OPERATOR); X return; X } X! switch (code) { X! case 0x3B: /* PF1 */ X! kbdpf('P'); return; X! case 0x3C: /* PF2 */ X! kbdpf('Q'); return; X! case 0x3D: /* PF3 */ X! kbdpf('R'); return; X! case 0x3E: /* PF4 */ X! kbdpf('S'); return; X! case 0x3F: /* PF5 */ X! kbdpf('T'); return; X! case 0x40: /* PF6 */ X! kbdpf('U'); return; X! case 0x41: /* PF7 */ X! kbdpf('V'); return; X! case 0x42: /* PF8 */ X! kbdpf('W'); return; X! case 0x43: /* PF9 */ X! kbdpf('X'); return; X! case 0x44: /* PF10 */ X! kbdpf('Y'); return; X! case 0x47: /* Home/Clr */ X! kbdansi('H'); X! if (shift1 || shift2) X! kbdansi('J'); X! return; X! case 0x48: /* Up */ X! kbdansi('A'); return; X! case 0x4B: /* Left */ X! kbdansi('D'); return; X! case 0x4D: /* Right */ X! kbdansi('C'); return; X! case 0x50: /* Down */ X! kbdansi('B'); return; X! default: X! return; X } X } X X--- 417,453 ---- X kbdput(code - 0x3B + 1, OPERATOR); X return; X } X! f--; /* correct for index into ftbl */ X! if (shift1 || shift2) X! fc = ftbl[f].shift; X! else X! fc = ftbl[f].norm; X! /* X! * f naturally has to be >= 0 for this piece X! * of code to work X! */ X! if (fc) { X! if (f < 12) X! #ifdef COMPAT X! kbdkeypad(fc); X! #else X! kbdpf(fc); X! #endif X! else if (f < 18) { X! #ifndef COMPAT X! if (app_mode) X! kbdkeypad(fc); X! else X! #endif X! kbdarrow(fc); X! } X! else if (keypad) X! /* X! * keypad should be set by stvdu X! */ X! kbdkeypad(fc); X! else X! kbdput(c,CONSOLE); X } X } X X*************** X*** 375,383 **** X } X X /* X! * Input escape sequence for function keys X */ X! PRIVATE kbdpf(c) X { X kbdput('\033', CONSOLE); X kbdput('O', CONSOLE); X--- 531,539 ---- X } X X /* X! * Input escape sequence for keypad keys X */ X! PRIVATE kbdkeypad(c) X { X kbdput('\033', CONSOLE); X kbdput('O', CONSOLE); X*************** X*** 385,398 **** X } X X /* X! * Input ANSI escape sequence X */ X! PRIVATE kbdansi(c) X { X kbdput('\033', CONSOLE); X kbdput('[', CONSOLE); X kbdput(c, CONSOLE); X } X X /*===========================================================================* X * kb_timer * X--- 541,573 ---- X } X X /* X! * Input escape sequence for arrow keys X */ X! PRIVATE kbdarrow(c) X { X kbdput('\033', CONSOLE); X kbdput('[', CONSOLE); X kbdput(c, CONSOLE); X } X+ X+ #ifndef COMPAT X+ /* X+ * Input escape sequence for function keys X+ */ X+ PRIVATE kbdpf(c) X+ register char c; X+ { X+ register int t; X+ X+ kbdput('\033', CONSOLE); X+ kbdput('[', CONSOLE); X+ /* this stuff is not robust */ X+ if ((t = c / 10) > 0) X+ kbdput(t + '0', CONSOLE); X+ kbdput((c % 10) + '0', CONSOLE); X+ kbdput('~', CONSOLE); X+ } X+ #endif X X /*===========================================================================* X * kb_timer * X*** /tmp/,RCSt1000056 Thu Mar 2 19:59:36 1989 X--- mouse.h Thu Mar 2 19:51:58 1989 X*************** X*** 6,11 **** X short m_dy; /* change in y since last read */ X }; X X! #define M_LEFT_BUTTON 0x02 X #define M_RIGHT_BUTTON 0x01 X- #define M_MID_BUTTON 0x00 /* there is none! */ X--- 6,11 ---- X short m_dy; /* change in y since last read */ X }; X X! #define M_LEFT_BUTTON 0x04 X! #define M_MID_BUTTON 0x02 /* really the Alternate key on the ST */ X #define M_RIGHT_BUTTON 0x01 END_OF_FILE if test 14189 -ne `wc -c <'kernel.cdiff'`; then echo shar: \"'kernel.cdiff'\" unpacked with wrong size! fi # end of 'kernel.cdiff' fi if test -f 'lib.cdiff' -a "${1}" != "-c" ; then echo shar: Will not clobber existing file \"'lib.cdiff'\" else echo shar: Extracting \"'lib.cdiff'\" \(824 characters\) sed "s/^X//" >'lib.cdiff' <<'END_OF_FILE' X*** /tmp/,RCSt1000048 Thu Mar 2 20:25:59 1989 X--- syslib.c Tue Feb 28 23:55:00 1989 X*************** X*** 123,132 **** X ptr[3] = M.CHILD_STIME; X } X X- X- X- X- X PUBLIC sys_abort() X { X /* Something awful has happened. Abandon ship. */ X--- 123,128 ---- X*************** X*** 161,166 **** X--- 157,176 ---- X callx(SYSTASK, SYS_KILL); X } X X+ PUBLIC int sys_trace(req, procnr, addr, data_p) X+ int req, procnr; X+ long addr, *data_p; X+ { X+ int r; X+ X+ M.m2_i1 = procnr; X+ M.m2_i2 = req; X+ M.m2_l1 = addr; X+ M.m2_l2 = (long) data_p; X+ r = callx(SYSTASK, SYS_TRACE); X+ if (data_p) *data_p = M.m2_l2; X+ return r; X+ } X X PUBLIC int tell_fs(what, p1, p2, p3) X int what, p1, p2, p3; X*************** X*** 177,179 **** X--- 187,190 ---- X */ X callm1(FS, what, p1, p2, p3, NIL_PTR, NIL_PTR, NIL_PTR); X } X+ END_OF_FILE if test 824 -ne `wc -c <'lib.cdiff'`; then echo shar: \"'lib.cdiff'\" unpacked with wrong size! fi # end of 'lib.cdiff' fi if test -f 'mm.cdiff' -a "${1}" != "-c" ; then echo shar: Will not clobber existing file \"'mm.cdiff'\" else echo shar: Extracting \"'mm.cdiff'\" \(677 characters\) sed "s/^X//" >'mm.cdiff' <<'END_OF_FILE' X*** /tmp/,RCSt1000289 Wed Mar 1 00:35:20 1989 X--- Makefile Tue Feb 28 10:16:43 1989 X*************** X*** 6,12 **** X CFLAGS = -O -DATARI_ST X X OBJ = main.o forkexit.o break.o exec.o signal.o getset.o \ X! alloc.o utility.o table.o putc.o X HDR = ../h/callnr.h ../h/com.h ../h/const.h ../h/error.h \ X ../h/signal.h ../h/stat.h ../h/type.h \ X const.h glo.h mproc.h param.h X--- 6,13 ---- X CFLAGS = -O -DATARI_ST X X OBJ = main.o forkexit.o break.o exec.o signal.o getset.o \ X! alloc.o utility.o table.o putc.o trace.o X! X HDR = ../h/callnr.h ../h/com.h ../h/const.h ../h/error.h \ X ../h/signal.h ../h/stat.h ../h/type.h \ X const.h glo.h mproc.h param.h END_OF_FILE if test 677 -ne `wc -c <'mm.cdiff'`; then echo shar: \"'mm.cdiff'\" unpacked with wrong size! fi # end of 'mm.cdiff' fi echo shar: End of shell archive. exit 0