Annotation of MiNT/src/changes, revision 1.1

1.1     ! root        1: Changes are listed in *reverse* order, most recent changes being
        !             2: 
        !             3: first.
        !             4: 
        !             5: 
        !             6: 
        !             7: version 0.95
        !             8: 
        !             9: 
        !            10: 
        !            11: PATCHLEVEL13::
        !            12: 
        !            13: 
        !            14: 
        !            15: proto.h,filesys.c:
        !            16: 
        !            17:        Added Alex's patches for Lattice.
        !            18: 
        !            19: 
        !            20: 
        !            21: PATCHLEVEL12::
        !            22: 
        !            23: 
        !            24: 
        !            25: dosdir.c:
        !            26: 
        !            27:        Fsnext() on symbolic links was broken, because
        !            28: 
        !            29:        relpath2cookie no longer checks drive letters
        !            30: 
        !            31:        unless "depth" is > 0. Fixed this.
        !            32: 
        !            33: main.c,filesys.c:
        !            34: 
        !            35:        Added support for putting the mint.cnf file
        !            36: 
        !            37:        and any *.XFS files into the directory \mint.
        !            38: 
        !            39: dos.c:
        !            40: 
        !            41:        Added Pgeteuid() and Pgetegid() system calls.
        !            42: 
        !            43: main.c:
        !            44: 
        !            45:        Fixed the "set current directory" code to
        !            46: 
        !            47:        work properly.
        !            48: 
        !            49: main.c:
        !            50: 
        !            51:        Added a sanity check; if GEM is already running,
        !            52: 
        !            53:        don't try to run it again.
        !            54: 
        !            55: procfs.c:
        !            56: 
        !            57:        Added FIONWRITE and FIONREAD ioctl calls.
        !            58: 
        !            59: proc.c,bios.c:
        !            60: 
        !            61:        Fixed the type of the critical error handler.
        !            62: 
        !            63: dosfile.c,file.h,proc.c:
        !            64: 
        !            65:        Added Alex's patches for O_APPEND and O_NOINHERIT.
        !            66: 
        !            67: shmfs.c:
        !            68: 
        !            69:        Fixed lseek() on shared memory segments, and added
        !            70: 
        !            71:        FIONWRITE and FIONREAD ioctl calls.
        !            72: 
        !            73: fasttext.c:
        !            74: 
        !            75:        Tried once again to tame the wild cursor.
        !            76: 
        !            77: dosmem.c,proc.c:
        !            78: 
        !            79:        Modified process startup code so that PROC structures are no
        !            80: 
        !            81:        longer kept forever by the kernel (which should help alleviate
        !            82: 
        !            83:        memory fragmentation problems a bit).
        !            84: 
        !            85: 
        !            86: 
        !            87: PATCHLEVEL11::
        !            88: 
        !            89: 
        !            90: 
        !            91: dosmem.c:
        !            92: 
        !            93:        Applied Alex Kiernan's SIGTRAP bug fix (and kicked myself for
        !            94: 
        !            95:        forgetting C's precedence rules; thanks, Alex!).
        !            96: 
        !            97: filesys.c:
        !            98: 
        !            99:        Fixed relpath2cookie so that names like "C:\Z:" aren't
        !           100: 
        !           101:        interpreted as referring to drive Z:.
        !           102: 
        !           103: fasttext.c:
        !           104: 
        !           105:        Restored the "turn on cursor when opening()" code, because
        !           106: 
        !           107:        without it the fasttext driver and BIOS aren't in sync.
        !           108: 
        !           109: main.c:
        !           110: 
        !           111:        Moved the check for the presence of an already existing MiNT
        !           112: 
        !           113:        cookie to earlier in the initialization process, so that
        !           114: 
        !           115:        the error message can be printed properly.
        !           116: 
        !           117: shmfs.c:
        !           118: 
        !           119:        Fixed Dpathconf() on U:\SHM (filenames are truncated automatically
        !           120: 
        !           121:        on that file system) and corrected the comment there.
        !           122: 
        !           123: syscall.s:
        !           124: 
        !           125:        New function, call_aes, used to check for the presence of GEM
        !           126: 
        !           127:        (so we can tell whether or not we're running from the AUTO folder).
        !           128: 
        !           129: main.c:
        !           130: 
        !           131:        Run any programs which come after mint.prg in the AUTO
        !           132: 
        !           133:        folder.
        !           134: 
        !           135: version.h:
        !           136: 
        !           137:        Changed so that the patchlevel is always printed on boot-up.
        !           138: 
        !           139: 
        !           140: 
        !           141: PATCHLEVEL10::
        !           142: 
        !           143: 
        !           144: 
        !           145: unifs.c:
        !           146: 
        !           147:        Add U:\SHM as an interface for shared memory.
        !           148: 
        !           149: shmfs.c:
        !           150: 
        !           151:        New file system for doing shared memory.
        !           152: 
        !           153: xbios.c:
        !           154: 
        !           155:        Fixed Bconmap() to always return an error if the underlying
        !           156: 
        !           157:        TOS doesn't support Bconmap.
        !           158: 
        !           159: main.c:
        !           160: 
        !           161:        Fixed a bug in the argument parsing code for the "exec"
        !           162: 
        !           163:        command in mint.cnf.
        !           164: 
        !           165: dosdir.c:
        !           166: 
        !           167:        Changed Dlock() to return ELOCKED if an attempt is made to
        !           168: 
        !           169:        lock a drive that's already locked, and ENSLOCK if an attempt
        !           170: 
        !           171:        is made to remove a non-existent lock.
        !           172: 
        !           173: version.h:
        !           174: 
        !           175:        I forgot again to update this. Aargh!
        !           176: 
        !           177: 
        !           178: 
        !           179: PATCHLEVEL9::
        !           180: 
        !           181: 
        !           182: 
        !           183: mem.c,mem.h:
        !           184: 
        !           185:        Align everything on 16 byte boundaries.
        !           186: 
        !           187: mem.c,dosmem.c:
        !           188: 
        !           189:        Actually fix the "memory being allocated twice" bug.
        !           190: 
        !           191:        The problem was that setting m->links to 0 before calling
        !           192: 
        !           193:        attach_region was a no-no.
        !           194: 
        !           195: 
        !           196: 
        !           197: PATCHLEVEL8::
        !           198: 
        !           199: 
        !           200: 
        !           201: mem.c:
        !           202: 
        !           203:        Attempt to fix the strange "memory being allocated
        !           204: 
        !           205:        twice" bug.
        !           206: 
        !           207: tosfs.c:
        !           208: 
        !           209:        Truncating names at 14 characters came *before* the
        !           210: 
        !           211:        8.3 kludge, which meant that long names were being
        !           212: 
        !           213:        interpreted incorrectly (e.g. gcc-cc1plus.ttp was
        !           214: 
        !           215:        becoming "gcc-cc1p.tt"). Temporary kludge: only
        !           216: 
        !           217:        truncate at 32 characters. Long term solution:
        !           218: 
        !           219:        re-write this code to do the 8.3 truncation at the
        !           220: 
        !           221:        same time as the truncation.
        !           222: 
        !           223: main.c, proc.h:
        !           224: 
        !           225:        Provide a more explicit type for criticerr.
        !           226: 
        !           227: proc.c:
        !           228: 
        !           229:        Don't make _logbase per-process if hardware scrolling
        !           230: 
        !           231:        is active, since this makes for all kinds of weirdness!
        !           232: 
        !           233: mem.c:
        !           234: 
        !           235:        Allow NULL commandline to be the same as an empty
        !           236: 
        !           237:        string. (It was acting this way before, due to the MiNT
        !           238: 
        !           239:        library strncpy; now that we use our own strncpy some
        !           240: 
        !           241:        programs were passing funny arguments.)
        !           242: 
        !           243: dosmem.c:
        !           244: 
        !           245:        Provide a more detailed trace of Pexec activity.
        !           246: 
        !           247: mem.c:
        !           248: 
        !           249:        Added a sanity check in get_region().
        !           250: 
        !           251: proc.c:
        !           252: 
        !           253:        Set the time/date stamp of process 0 to the
        !           254: 
        !           255:        date & time when the system was booted.
        !           256: 
        !           257: fasttext.c:
        !           258: 
        !           259:        Commented out the code that turns the cursor
        !           260: 
        !           261:        on when u:\dev\fasttext is opened.
        !           262: 
        !           263: tty.c:
        !           264: 
        !           265:        Unsigned characters are always >= 0, so we
        !           266: 
        !           267:        don't need to check this.
        !           268: 
        !           269: 
        !           270: 
        !           271: PATCHLEVEL7::
        !           272: 
        !           273: 
        !           274: 
        !           275: makefile.lcc,mintlc.prj:
        !           276: 
        !           277:        Added Alex's patches.
        !           278: 
        !           279: assert.h:
        !           280: 
        !           281:        Added Alex's patch to cast the result to void.
        !           282: 
        !           283: filesys.c:
        !           284: 
        !           285:        Make sure the file system media change routine
        !           286: 
        !           287:        is called every time a disk change is forced;
        !           288: 
        !           289:        this corrects the Dlock() bug (it wasn't forcing
        !           290: 
        !           291:        media change as it should have).
        !           292: 
        !           293: version.h:
        !           294: 
        !           295:        Oops! I forgot to increment this for pl6, so
        !           296: 
        !           297:        it jumps by 2 this time.
        !           298: 
        !           299: 
        !           300: 
        !           301: PATCHLEVEL6::
        !           302: 
        !           303: 
        !           304: 
        !           305: biosfs.c,pipefs.c,tty.c:
        !           306: 
        !           307:        New Fcntl calls for controlling terminal baud
        !           308: 
        !           309:        rates and flags such as parity and stop bits.
        !           310: 
        !           311:        These have been integrated with the old TIOC*
        !           312: 
        !           313:        calls where applicable.
        !           314: 
        !           315: dosfile.c:
        !           316: 
        !           317:        Changed Fcntl to make a call to tty_ioctl be the
        !           318: 
        !           319:        default if the device is a terminal and the device
        !           320: 
        !           321:        ioctl routine returns EINVFN.
        !           322: 
        !           323: procfs.c, proc.c:
        !           324: 
        !           325:        The date/time stamp of a process now shows when the
        !           326: 
        !           327:        process was started, rather than being the number
        !           328: 
        !           329:        of seconds of CPU time used.
        !           330: 
        !           331: tosfs.c:
        !           332: 
        !           333:        Degrade an ALERT to a TRACE; there is a circumstance
        !           334: 
        !           335:        in which a root directory can apparently be changed,
        !           336: 
        !           337:        and that's when a program tries to open an empty
        !           338: 
        !           339:        file name. We don't need to warn the user that
        !           340: 
        !           341:        something is wrong in this case; we can just fail
        !           342: 
        !           343:        silently.
        !           344: 
        !           345: proc.c:
        !           346: 
        !           347:        Save the logical screen base for each process.
        !           348: 
        !           349: main.c,bios.c,proc.h:
        !           350: 
        !           351:        Made the critical error handler per-process.
        !           352: 
        !           353: bios.c,syscall.s:
        !           354: 
        !           355:        A cleaner way of saving registers when calling
        !           356: 
        !           357:        functions... this wasn't really necessary, but I
        !           358: 
        !           359:        did it to make tracking a bug down easier.
        !           360: 
        !           361: tty.c:
        !           362: 
        !           363:        New terminal flag, T_NOFLUSH, to suppress flushing of
        !           364: 
        !           365:        input when SIGINT or SIGQUIT is received.
        !           366: 
        !           367: *fs.c, file.h:
        !           368: 
        !           369:        Added a new Dpathconf() option that tells whether or
        !           370: 
        !           371:        not a file system is case sensitive.
        !           372: 
        !           373: dos.c:
        !           374: 
        !           375:        Forbid Prenice() on processes that you don't own.
        !           376: 
        !           377: dosmem.c:
        !           378: 
        !           379:        Correct a typo that was causing terminal process groups
        !           380: 
        !           381:        to be incorrectly set.
        !           382: 
        !           383: 
        !           384: 
        !           385: PATCHLEVEL5::
        !           386: 
        !           387: 
        !           388: 
        !           389: makefile:
        !           390: 
        !           391:        The -DOWN_LIB declaration should have been on (actually,
        !           392: 
        !           393:        it was, in my copy... sorry for the mix-up).
        !           394: 
        !           395: fasttext.c:
        !           396: 
        !           397:        Applied Alex's patch for the disappearing cursor bug.
        !           398: 
        !           399: everywhere:
        !           400: 
        !           401:        Applied Alex's patches to add "const" declarations where
        !           402: 
        !           403:        appropriate, and to get rid of size_t (since if OWN_LIB
        !           404: 
        !           405:        is defined we use "int" instead).
        !           406: 
        !           407: dosmem.c:
        !           408: 
        !           409:        Fixed M_KEEP to attach memory to rootproc *only* at
        !           410: 
        !           411:        process termination.
        !           412: 
        !           413: 
        !           414: 
        !           415: 
        !           416: 
        !           417: PATCHLEVEL4::
        !           418: 
        !           419: 
        !           420: 
        !           421: proto.h:
        !           422: 
        !           423:        Added prototype for do_func_key().
        !           424: 
        !           425: everywhere:
        !           426: 
        !           427:        Applied apratt's debugging/trace patches.
        !           428: 
        !           429: 
        !           430: 
        !           431: PATCHLEVEL3::
        !           432: 
        !           433: 
        !           434: 
        !           435: xbios.c, biosfs.c:
        !           436: 
        !           437:        Change Bconmap to actually do the equivalent of an
        !           438: 
        !           439:        Fforce(-2, foo) call; this way, we don't need the
        !           440: 
        !           441:        ugly DFLTMODM kludge. (On the other hand, we introduce
        !           442: 
        !           443:        some new ugly kludges :-)).
        !           444: 
        !           445: main.c,proc.c:
        !           446: 
        !           447:        Wait until everything is initialized before opening
        !           448: 
        !           449:        devices; this avoids bogus critical error messages from
        !           450: 
        !           451:        AHDI.
        !           452: 
        !           453: util.c, mint.h, ctype.h:
        !           454: 
        !           455:        Add all sorts of utility routines (for string processing,
        !           456: 
        !           457:        character type recognition, and the like). This is
        !           458: 
        !           459:        designed to make sure that MiNT works the same regardless
        !           460: 
        !           461:        of what library is used to compile it. We're not quite
        !           462: 
        !           463:        totally independent of library yet (the startup code and
        !           464: 
        !           465:        <osbind.h> aren't replaced) but we're pretty close.
        !           466: 
        !           467: main.c, proc.c:
        !           468: 
        !           469:        Initialize the current directory for the root
        !           470: 
        !           471:        process *after* file systems have been loaded, since
        !           472: 
        !           473:        otherwise the info is nuked when a new fs is loaded in.
        !           474: 
        !           475: bios.c:
        !           476: 
        !           477:        Allow output to BIOS device 5 to be redirected along
        !           478: 
        !           479:        with BIOS device 2; we do this by using the MW
        !           480: 
        !           481:        ESC-Q control sequence to quote characters. A bit of
        !           482: 
        !           483:        a hack, but then, not many people use device 5.
        !           484: 
        !           485: quickmov.s:
        !           486: 
        !           487:        Fixed two bugs in quickmove: (1) it didn't work for
        !           488: 
        !           489:        regions bigger than 0x00fffe00 bytes in length,
        !           490: 
        !           491:        and (2) it assumed the length was a multiple of 4
        !           492: 
        !           493:        bytes.
        !           494: 
        !           495: fasttext.c:
        !           496: 
        !           497:        Re-arrange things a bit to get rid of a gcc 2.1 warning.
        !           498: 
        !           499: dosmem.c:
        !           500: 
        !           501:        Change flag 0x4000 to mean "don't free the memory
        !           502: 
        !           503:        automatically on process termination"; explicit
        !           504: 
        !           505:        Mfree requests are still allowed, and after
        !           506: 
        !           507:        termination *any* process may Mfree the memory.
        !           508: 
        !           509: 
        !           510: 
        !           511: PATCHLEVEL2::
        !           512: 
        !           513: 
        !           514: 
        !           515: makefile:
        !           516: 
        !           517:        Remove -fcombine-regs from CFLAGS, since gcc 2.1
        !           518: 
        !           519:        doesn't understand it.
        !           520: 
        !           521: bios.c:
        !           522: 
        !           523:        Ignore value returned by Bconout for the screen
        !           524: 
        !           525:        (many text accelerators get this wrong :-( ).
        !           526: 
        !           527: dossig.c, signal.h:
        !           528: 
        !           529:        New system call, Psigaction(), by AGK. 
        !           530: 
        !           531: xbios.c:
        !           532: 
        !           533:        Added support for Bconmap.
        !           534: 
        !           535: bios.c, biosfs.c:
        !           536: 
        !           537:        Rationalized the way biosfs and bios interact;
        !           538: 
        !           539:        no more funny device numbers are needed. Also:
        !           540: 
        !           541:        added support for Bconmap, and a new default
        !           542: 
        !           543:        modem device.
        !           544: 
        !           545: pipefs.c:
        !           546: 
        !           547:        Applied Michael Hohmuth's patch for pipe_close (thanks,
        !           548: 
        !           549:        Michael!)
        !           550: 
        !           551: filesys.c:
        !           552: 
        !           553:        Don't try to initialize all the drives at boot time; path2cookie
        !           554: 
        !           555:        is quite capable of initializing, and it saves having
        !           556: 
        !           557:        to access drive B: (for example) while booting is going
        !           558: 
        !           559:        on.
        !           560: 
        !           561: main.c:
        !           562: 
        !           563:        Allow the user to avoid booting MiNT if the right shift key
        !           564: 
        !           565:        is held down.
        !           566: 
        !           567: main.c:
        !           568: 
        !           569:        Added safety checking, as suggested by AKP.
        !           570: 
        !           571: dosmem.c:
        !           572: 
        !           573:        In Mxalloc, if (mode & 0x4000) is nonzero then allocate non-freeable
        !           574: 
        !           575:        memory (we do this by attaching the memory to the root process).
        !           576: 
        !           577: fasttext.c:
        !           578: 
        !           579:        Tabs should be non-destructive on the ST!
        !           580: 
        !           581: proc.h:
        !           582: 
        !           583:        Re-arranged some things. Note that "slices" was never supposed
        !           584: 
        !           585:        to be visible to users! Also, added a "bconmap" variable to
        !           586: 
        !           587:        give the current Bconmap mapping for the process.
        !           588: 
        !           589: dosdir.c:
        !           590: 
        !           591:        Fail Ddelete of current directories only on the current
        !           592: 
        !           593:        drive; for other drives, reset the current directory
        !           594: 
        !           595:        to the root directory. NOTE: Ddelete of a current directory
        !           596: 
        !           597:        is forbidden only if the directory is someone else's
        !           598: 
        !           599:        current directory; if it's only your current dir., you
        !           600: 
        !           601:        can delete it (and get automatically bumped back to
        !           602: 
        !           603:        root).
        !           604: 
        !           605: 
        !           606: 
        !           607: PATCHLEVEL1::
        !           608: 
        !           609: 
        !           610: 
        !           611: dosmem.c:
        !           612: 
        !           613:        Fixed a bug that caused processes with no '.' in their names
        !           614: 
        !           615:        to have the wrong process name.
        !           616: 
        !           617: dosmem.c:
        !           618: 
        !           619:        In Pexec, make sure we yield to the new process so that
        !           620: 
        !           621:        it gets at least one timeslice to do an Mshrink().
        !           622: 
        !           623: proc.c:
        !           624: 
        !           625:        In preempt(), don't punish processes that have buffered
        !           626: 
        !           627:        BIOS output and are preempted; the process of flushing the
        !           628: 
        !           629:        buffer may very well put them to sleep, and in any event
        !           630: 
        !           631:        processes doing I/O should not be considered "hogs".
        !           632: 
        !           633: tosfs.c:
        !           634: 
        !           635:        Don't look for volume labels in opendir/readdir/lookup etc.
        !           636: 
        !           637: main.c:
        !           638: 
        !           639:        AGK: added DEBUG_LEVEL and DEBUG_DEVNO options to mint.cnf.
        !           640: 
        !           641: dossig.c:
        !           642: 
        !           643:        New system call (Psigpause()) courtesy of Alex Kiernan.
        !           644: 
        !           645: dosmem.c:
        !           646: 
        !           647:        In Pexec(200,...), don't reset base->p_parent, since the
        !           648: 
        !           649:        "parent" in an overlay exec is oneself.
        !           650: 
        !           651: tty.c:
        !           652: 
        !           653:        Fixed so that RAW mode reads will return all of an
        !           654: 
        !           655:        extended escape sequence at once, rather than waiting
        !           656: 
        !           657:        for the next read.
        !           658: 
        !           659: dosmem.c:
        !           660: 
        !           661:        When terminating a process, make sure that it's "number of
        !           662: 
        !           663:        memory regions" is set to 0; otherwise, calls to memused()
        !           664: 
        !           665:        on the process (e.g. by procfs) can crash the system.
        !           666: 
        !           667: dosdir.c:
        !           668: 
        !           669:        When removing directories, make sure that the directory
        !           670: 
        !           671:        isn't in use as someone's current directory (so that
        !           672: 
        !           673:        they don't get left in limbo).
        !           674: 
        !           675: fasttext.c:
        !           676: 
        !           677:        Screen memory must come from ST RAM -- otherwise hardware
        !           678: 
        !           679:        scrolling crashes and burns. Fixed thanks to AGK.
        !           680: 
        !           681: xbios.c:
        !           682: 
        !           683:        Moved the prototype for midiws to proto.h, and corrected the
        !           684: 
        !           685:        type of its argument (it should have been "int", not "short").
        !           686: 
        !           687: 
        !           688: 
        !           689: PATCHLEVEL0::
        !           690: 
        !           691: 
        !           692: 
        !           693: bios.c:
        !           694: 
        !           695:        Terminal modes weren't being set correctly in Bconout, and also
        !           696: 
        !           697:        weren't being set in bflush (which should have employed RAW
        !           698: 
        !           699:        mode output, but didn't).
        !           700: 
        !           701: everywhere:
        !           702: 
        !           703:        Merged in Alex Kiernan's latest Lattice C patches.
        !           704: 
        !           705: 
        !           706: 
        !           707: 
        !           708: 
        !           709: version 0.94
        !           710: 
        !           711: 
        !           712: 
        !           713: PATCHLEVEL4::
        !           714: 
        !           715: 
        !           716: 
        !           717: filesys.c:
        !           718: 
        !           719:        Use U:\DEV\CON for CON:, instead of V:\CON, since we're
        !           720: 
        !           721:        going to make drive V: go away soon.
        !           722: 
        !           723: unifs.c:
        !           724: 
        !           725:        When looking up a drive, make sure that it has a valid file
        !           726: 
        !           727:        system attached to it -- otherwise, newly installed ramdisks
        !           728: 
        !           729:        can cause system crashes :-(.
        !           730: 
        !           731: fasttext.c:
        !           732: 
        !           733:        Patches to make the fast text device work correctly on a TT,
        !           734: 
        !           735:        courtesy of Erling Henanger.
        !           736: 
        !           737: main.c:
        !           738: 
        !           739:        Install 16 extra cookies, instead of 8, just to be friendly.
        !           740: 
        !           741: 
        !           742: 
        !           743: PATCHLEVEL3::
        !           744: 
        !           745: 
        !           746: 
        !           747: main.c:
        !           748: 
        !           749:        Allow PSEUDODRIVES=MAP to put the extra drives in
        !           750: 
        !           751:        _drvbits without installing new drivers for them.
        !           752: 
        !           753: unifs.c:
        !           754: 
        !           755:        Don't rely on drvmap() to figure out what drives exist;
        !           756: 
        !           757:        it isn't accurate if PSEUDODRIVES=NO.
        !           758: 
        !           759: 
        !           760: 
        !           761: PATCHLEVEL2::
        !           762: 
        !           763: 
        !           764: 
        !           765: main.c:
        !           766: 
        !           767:        Added an option for turning off the BIOS routines for the
        !           768: 
        !           769:        pseudo-drives.
        !           770: 
        !           771: filesys.c:
        !           772: 
        !           773:        Moved the vector set/restore code to main.c (where all the
        !           774: 
        !           775:        other vector stuff is).
        !           776: 
        !           777: tosfs.c:
        !           778: 
        !           779:        If the _FLK cookie was already set when MiNT started, we
        !           780: 
        !           781:        pass file sharing and locking requests through to GEMDOS.
        !           782: 
        !           783: main.c:
        !           784: 
        !           785:        Turn the cursor off when leaving, if we were started from
        !           786: 
        !           787:        the desktop.
        !           788: 
        !           789: tosfs.c:
        !           790: 
        !           791:        Fixed a bug in which tos_chmode was returning an incorrect
        !           792: 
        !           793:        value.
        !           794: 
        !           795: debug.c:
        !           796: 
        !           797:        Added code for octal output to sprintf().
        !           798: 
        !           799: dosdir.c:
        !           800: 
        !           801:        Make Fsfirst() with the FA_LABEL bit set work on non-TOS
        !           802: 
        !           803:        file systems (via the file system readlabel function).
        !           804: 
        !           805:        (This used to work only when the search was restricted to
        !           806: 
        !           807:        labels only.)
        !           808: 
        !           809: various places:
        !           810: 
        !           811:        Get rid of gcc 2.0 warnings.
        !           812: 
        !           813: 
        !           814: 
        !           815: PATCHLEVEL1::
        !           816: 
        !           817: 
        !           818: 
        !           819: file.h:
        !           820: 
        !           821:        Because Fmidipipe and the disk change code can close
        !           822: 
        !           823:        files other than the files of the current process,
        !           824: 
        !           825:        the device driver "close" function needs another
        !           826: 
        !           827:        parameter, namely the process id being closed; this
        !           828: 
        !           829:        allows device drivers to remove locks properly.
        !           830: 
        !           831: tosfs.c:
        !           832: 
        !           833:        Volume labels shouldn't be found by Dreaddir().
        !           834: 
        !           835: tosfs.c:
        !           836: 
        !           837:        Added file locking.
        !           838: 
        !           839: filesys.c, main.c, file.h:
        !           840: 
        !           841:        New utility routine (denylock) to make implementing file
        !           842: 
        !           843:        locking easier for file systems.
        !           844: 
        !           845: 
        !           846: 
        !           847: PATCHLEVEL0::
        !           848: 
        !           849: 
        !           850: 
        !           851: tosfs.c:
        !           852: 
        !           853:        Canonicalize file names (i.e. convert to 8.3 format).
        !           854: 
        !           855:        Also, keep track of the value returned from the last
        !           856: 
        !           857:        readdir() call, so that a subsequent Fxattr() will take
        !           858: 
        !           859:        place quickly.
        !           860: 
        !           861: proc.c:
        !           862: 
        !           863:        In sleep(), make sure interrupts are disabled while queue
        !           864: 
        !           865:        manipulations are occuring.
        !           866: 
        !           867: bios.c:
        !           868: 
        !           869:        Correct a stuttering problem for ^C and similar interrupts.
        !           870: 
        !           871: dosmem.c:
        !           872: 
        !           873:        8 character process names weren't terminated properly.
        !           874: 
        !           875: tty.c:
        !           876: 
        !           877:        Aaargh! Shift+cursor keys were being interpreted even when
        !           878: 
        !           879:        they shouldn't have been.
        !           880: 
        !           881: 
        !           882: 
        !           883: version 0.93
        !           884: 
        !           885: 
        !           886: 
        !           887: PATCHLEVEL6::
        !           888: 
        !           889: 
        !           890: 
        !           891: filesys.c:
        !           892: 
        !           893:        Check for newly installed drives when parsing an
        !           894: 
        !           895:        absolute path without an explicit drive letter, as
        !           896: 
        !           897:        well as when looking at ones with drive letters.
        !           898: 
        !           899: 
        !           900: 
        !           901: PATCHLEVEL5::
        !           902: 
        !           903: 
        !           904: 
        !           905: biosfs.c, fasttext.c:
        !           906: 
        !           907:        Allow TIOCGWINSZ calls on the console (we use the line A
        !           908: 
        !           909:        variables to get the number or rows and columns).
        !           910: 
        !           911: filesys.c:
        !           912: 
        !           913:        Fix a typo in the file system initialization checking.
        !           914: 
        !           915: pipefs.c:
        !           916: 
        !           917:        Make "VIRGIN_PIPE" more obviously a magic value, and
        !           918: 
        !           919:        document it.
        !           920: 
        !           921: pipefs.c:
        !           922: 
        !           923:        Make u:\pipe have a sensible date/time; also, make
        !           924: 
        !           925:        Dfree on u:\pipe return some useful statistics about
        !           926: 
        !           927:        the number of pipes in the system.
        !           928: 
        !           929: procfs.c:
        !           930: 
        !           931:        u:\proc has a sensible time and date now, namely the
        !           932: 
        !           933:        time/date of the last process creation or destruction.
        !           934: 
        !           935: dosfile.c:
        !           936: 
        !           937:        Fcreate() of a volume label now returns a handle to
        !           938: 
        !           939:        u:\dev\null.
        !           940: 
        !           941: dosmem.c:
        !           942: 
        !           943:        Make sure the BIOSBUF buffer is flushed when terminating.
        !           944: 
        !           945: main.c:
        !           946: 
        !           947:        There's a bug in TOS 1.4: GEM seems to assume that all
        !           948: 
        !           949:        memory is zero initially, and if it isn't (e.g. if a large
        !           950: 
        !           951:        AUTO folder program like MiNT terminates and leaves behind
        !           952: 
        !           953:        dirty memory) then having too many (or the wrong kind of)
        !           954: 
        !           955:        desk accessories can lead to a crash. This was a real bear
        !           956: 
        !           957:        to track down, and the work-around is very ugly; before
        !           958: 
        !           959:        MiNT exits we copy a short machine language subroutine into
        !           960: 
        !           961:        the command line, and then execute it; the routine zeros
        !           962: 
        !           963:        all of the TPA and then does a Pterm0().
        !           964: 
        !           965: rendez.c:
        !           966: 
        !           967:        Change a "short" to "int" for the benefit of gcc 2.0.
        !           968: 
        !           969: bios.c:
        !           970: 
        !           971:        Stop process dumps from stuttering.
        !           972: 
        !           973: console.c:
        !           974: 
        !           975:        Added support for global file handles.
        !           976: 
        !           977: 
        !           978: 
        !           979: PATCHLEVEL4::
        !           980: 
        !           981: 
        !           982: 
        !           983: dosfile.c:
        !           984: 
        !           985:        In Fselect(), we have to re-validate file handles after
        !           986: 
        !           987:        a sleep() call, since signal handlers may close files.
        !           988: 
        !           989: proc.c:
        !           990: 
        !           991:        Pre-allocate more PROC structures (this should help
        !           992: 
        !           993:        reduce memory fragmentation).
        !           994: 
        !           995: tty.c, file.h:
        !           996: 
        !           997:        Allow cursor/function keys to send escape sequences.
        !           998: 
        !           999: dosdir.c:
        !          1000: 
        !          1001:        As suggested by S. Henson: Dsetpath through a symbolic link
        !          1002: 
        !          1003:        may also require changing the current drive as well.
        !          1004: 
        !          1005: proc.c,dos.c,timeout.c:
        !          1006: 
        !          1007:        New process scheduling algorithm, as suggested by A. Pratt.
        !          1008: 
        !          1009: dosdir.c:
        !          1010: 
        !          1011:        Make only the low bit of Dlock() significant, for future
        !          1012: 
        !          1013:        expansion.
        !          1014: 
        !          1015: dosfile.c:
        !          1016: 
        !          1017:        Allow Fcreate() to create a global file handle.
        !          1018: 
        !          1019: 
        !          1020: 
        !          1021: PATCHLEVEL3::
        !          1022: 
        !          1023: 
        !          1024: 
        !          1025: debug.c:
        !          1026: 
        !          1027:        Changed TRACE mode output so that not just any keys will
        !          1028: 
        !          1029:        start/stop output, but only Help and Undo.
        !          1030: 
        !          1031: dosdir.c, filesys.c:
        !          1032: 
        !          1033:        Add a Dlock() system call to lock/unlock drives.
        !          1034: 
        !          1035: filesys.c:
        !          1036: 
        !          1037:        Only initialize drives if the BIOS drive map says that
        !          1038: 
        !          1039:        they exist.
        !          1040: 
        !          1041: dosmem.c:
        !          1042: 
        !          1043:        In Pexec, make a copy of any name we're going to use
        !          1044: 
        !          1045:        before freeing memory for overlayed programs; the old
        !          1046: 
        !          1047:        way was decidedly incorrect!
        !          1048: 
        !          1049: dosfile.c:
        !          1050: 
        !          1051:        Allow for global file handles, so that shared libraries
        !          1052: 
        !          1053:        can use file handles that are the same for all processes.
        !          1054: 
        !          1055: dosmem.c:
        !          1056: 
        !          1057:        In Mxalloc, ignore bits that we don't understand, to
        !          1058: 
        !          1059:        allow for future expansion.
        !          1060: 
        !          1061: syscall.s:
        !          1062: 
        !          1063:        Fix a bug that could cause the wrong system call to be
        !          1064: 
        !          1065:        made if BIOS buffering is on (!).
        !          1066: 
        !          1067: bios.c:
        !          1068: 
        !          1069:        Streamline the BIOS buffering mechanism, and make it
        !          1070: 
        !          1071:        more conservative about multiple processes doing Bconout
        !          1072: 
        !          1073:        output.
        !          1074: 
        !          1075: procfs.c:
        !          1076: 
        !          1077:        Allow "foo.-1" to stand for the current process, and
        !          1078: 
        !          1079:        "foo.-2" to stand for our parent. Also, add new
        !          1080: 
        !          1081:        Fcntls for getting/setting memory flags.
        !          1082: 
        !          1083: bios.c:
        !          1084: 
        !          1085:        In Setexc(), don't actually change any vectors, let the BIOS
        !          1086: 
        !          1087:        do it -- some TSR's install trap handlers that look for
        !          1088: 
        !          1089:        certain Setexc functions...
        !          1090: 
        !          1091: signal.c:
        !          1092: 
        !          1093:        Allow nested Supexec() calls, or Supexec()'s from a terminate
        !          1094: 
        !          1095:        vector.
        !          1096: 
        !          1097: procfs.c:
        !          1098: 
        !          1099:        Change the definition of PPROCADDR and add a new Fcntl,
        !          1100: 
        !          1101:        PCTXTSIZE.
        !          1102: 
        !          1103: mem.c:
        !          1104: 
        !          1105:        In exec_region, set the stack based on the value of p_hitpa
        !          1106: 
        !          1107:        from the basepage, instead of the size of the memory
        !          1108: 
        !          1109:        region -- some programs rely on being able to set the initial
        !          1110: 
        !          1111:        stack pointer for a Pexec(4,...) this way.
        !          1112: 
        !          1113: main.c, context.s:
        !          1114: 
        !          1115:        Avoid using 68020 instructions if we're on a 68010.
        !          1116: 
        !          1117: 
        !          1118: 
        !          1119: PATCHLEVEL2::
        !          1120: 
        !          1121: 
        !          1122: 
        !          1123: dos.c,proc.c:
        !          1124: 
        !          1125:        More tweaking of the priority code.
        !          1126: 
        !          1127: main.c:
        !          1128: 
        !          1129:        Change the type of "tosbp" from char ** to BASEPAGE **,
        !          1130: 
        !          1131:        since that's what it really is.
        !          1132: 
        !          1133: main.c:
        !          1134: 
        !          1135:        Add a special case for the Spanish TOS 1.0 act_pd variable.
        !          1136: 
        !          1137: pipefs.c:
        !          1138: 
        !          1139:        When a writer is waiting to write a small amount of data
        !          1140: 
        !          1141:        atomically, remember to wake up readers so that they
        !          1142: 
        !          1143:        can clear the pipe!
        !          1144: 
        !          1145: debug.c:
        !          1146: 
        !          1147:        Add the %u flag to ksprintf() (Fselect uses it, maybe others
        !          1148: 
        !          1149:        do too...)
        !          1150: 
        !          1151: dosmem.c:
        !          1152: 
        !          1153:        In Pterm(), put the exit code onto the stack when calling
        !          1154: 
        !          1155:        etv_term. It won't be in the same place as it was for TOS,
        !          1156: 
        !          1157:        but c'est la vie. (People asked for this feature...)
        !          1158: 
        !          1159: xbios.c:
        !          1160: 
        !          1161:        Provide a way to pass arguments to Supexec(). Note that Atari
        !          1162: 
        !          1163:        never documented that this was possible, but some people were
        !          1164: 
        !          1165:        relying on it anyway :-(. (Don't use this feature, it's only
        !          1166: 
        !          1167:        there as a compatibility hack.)
        !          1168: 
        !          1169: main.c:
        !          1170: 
        !          1171:        In shutdown(), don't bother waiting a second for processes
        !          1172: 
        !          1173:        to finish if there are no other processes.
        !          1174: 
        !          1175: filesys.c:
        !          1176: 
        !          1177:        Make sure that path names are null terminated after strncpy.
        !          1178: 
        !          1179: mem.c:
        !          1180: 
        !          1181:        Fix the code to zero process registers so that it *only* zeros
        !          1182: 
        !          1183:        process registers.
        !          1184: 
        !          1185: dosmem.c:
        !          1186: 
        !          1187:        Eliminate some redundant code.
        !          1188: 
        !          1189: dosfile.c:
        !          1190: 
        !          1191:        Open u:\pipe\sys$pipe.xxx rather than q:\sys$pipe.xxx.
        !          1192: 
        !          1193: main.c:
        !          1194: 
        !          1195:        Change a "malloc" into "kmalloc", and restore the #include
        !          1196: 
        !          1197:        of <minimal.h> that was inadvertently deleted.
        !          1198: 
        !          1199: main.c:
        !          1200: 
        !          1201:        Allow parameters to be passed to the initial program specified
        !          1202: 
        !          1203:        by the INIT= string.
        !          1204: 
        !          1205: 
        !          1206: 
        !          1207: PATCHLEVEL1::
        !          1208: 
        !          1209: 
        !          1210: 
        !          1211: main.c:
        !          1212: 
        !          1213:        Fix a typo in shutdown() that was causing problems when
        !          1214: 
        !          1215:        MiNT was shut down while processes were active.
        !          1216: 
        !          1217: tosfs.c:
        !          1218: 
        !          1219:        Make sure that tfullpath() returns a string less than
        !          1220: 
        !          1221:        PATH_MAX characters long.
        !          1222: 
        !          1223: everywhere:
        !          1224: 
        !          1225:        Replace "sprintf" with "ksprintf".
        !          1226: 
        !          1227: debug.c:
        !          1228: 
        !          1229:        Add a "ksprintf" function that's like sprintf(), but
        !          1230: 
        !          1231:        (a) doesn't have so many features (making it smaller),
        !          1232: 
        !          1233:        and more importantly (b) won't try to write more than
        !          1234: 
        !          1235:        SPRINTF_MAX characters into a buffer.
        !          1236: 
        !          1237: filesys.c:
        !          1238: 
        !          1239:        In path2cookie, make sure we don't try to copy more than
        !          1240: 
        !          1241:        PATH_MAX characters into the fixed size buffers.
        !          1242: 
        !          1243: dosmem.c:
        !          1244: 
        !          1245:        The "sleep if no memory available during Malloc" code
        !          1246: 
        !          1247:        was causing more problems than it solved, so it was
        !          1248: 
        !          1249:        removed. To compensate, we increase the priority of
        !          1250: 
        !          1251:        newly Pexec'd processes to make sure that they get
        !          1252: 
        !          1253:        to run.
        !          1254: 
        !          1255: dosmem.c:
        !          1256: 
        !          1257:        Aaaargh! A very serious screw-up in terminate() was
        !          1258: 
        !          1259:        causing us to wake up processes sleeping in vfork()
        !          1260: 
        !          1261:        even when their children were still using the address
        !          1262: 
        !          1263:        space; needless to say, horrible (and mysterious)
        !          1264: 
        !          1265:        crashes could ensue. Fix: only force the parent awake
        !          1266: 
        !          1267:        if wait_q == WAIT_Q && wait_cond matches the terminating
        !          1268: 
        !          1269:        process, otherwise let post_sig() handle waking.
        !          1270: 
        !          1271:        While fixing this bug, re-arrange the terminate code
        !          1272: 
        !          1273:        to do the waking up at the very end, just in case some
        !          1274: 
        !          1275:        of the other code may cause a sleep() temporarily.
        !          1276: 
        !          1277: bios.c:
        !          1278: 
        !          1279:        Fix the scan code for the UNDO key.
        !          1280: 
        !          1281: fasttext.c:
        !          1282: 
        !          1283:        Use Setscreen() to set the hardware screen base, since setting
        !          1284: 
        !          1285:        the variable at 0x45e causes TOS to keep setting the screen base
        !          1286: 
        !          1287:        ad infinitum.
        !          1288: 
        !          1289: 
        !          1290: 
        !          1291: PATCHLEVEL0::
        !          1292: 
        !          1293: 
        !          1294: 
        !          1295: rendez.c:
        !          1296: 
        !          1297:        When waking a process up from a semaphore, check to see
        !          1298: 
        !          1299:        if it's on the WAIT_Q before trying to remove it from
        !          1300: 
        !          1301:        that queue (it might have been moved off the wait queue
        !          1302: 
        !          1303:        by a signal).
        !          1304: 
        !          1305: bios.c:
        !          1306: 
        !          1307:        Make sure that Bconout(2,c) always succeeds, to compensate
        !          1308: 
        !          1309:        for text accelerators and other programs that don't return
        !          1310: 
        !          1311:        sensible values from Bconout. Also, ignore the Bconout
        !          1312: 
        !          1313:        return value when flushing the text output buffer.
        !          1314: 
        !          1315: 
        !          1316: 
        !          1317: version 0.92
        !          1318: 
        !          1319: 
        !          1320: 
        !          1321: PATCHLEVEL4::
        !          1322: 
        !          1323: 
        !          1324: 
        !          1325: biosfs.c:
        !          1326: 
        !          1327:        Provide devices for the extra Mega STe serial ports.
        !          1328: 
        !          1329: biosfs.c:
        !          1330: 
        !          1331:        Make the kernel info structure available to device drivers
        !          1332: 
        !          1333:        loaded with Dcntl.
        !          1334: 
        !          1335: xbios.c:
        !          1336: 
        !          1337:        Provide a modified Midiws function so that this is also
        !          1338: 
        !          1339:        affected by Fmidipipe and Fforce.
        !          1340: 
        !          1341: biosfs.c:
        !          1342: 
        !          1343:        Split bios_device into two device drivers; one for
        !          1344: 
        !          1345:        terminal devices, and one for plain character devices
        !          1346: 
        !          1347:        (the printer and IKBD port fall into this category).
        !          1348: 
        !          1349:        Also: provide a new Dcntl call to install plain BIOS
        !          1350: 
        !          1351:        devices in U:\DEV.
        !          1352: 
        !          1353: tty.c:
        !          1354: 
        !          1355:        Check for terminal start/stop keys while reading.
        !          1356: 
        !          1357: bios.c:
        !          1358: 
        !          1359:        In checkkeys, loop through all keys received since our last
        !          1360: 
        !          1361:        interrupt, rather than just checking the last thing in the
        !          1362: 
        !          1363:        buffer (as A. Pratt suggested).
        !          1364: 
        !          1365: bios.c, tty.c:
        !          1366: 
        !          1367:        Made the "disable" character for special terminal functions
        !          1368: 
        !          1369:        (e.g. the EOF key) be 0 instead of -1; this matches System V,
        !          1370: 
        !          1371:        is more POSIX friendly, and also makes confusing function keys
        !          1372: 
        !          1373:        and ^@ less likely. (Thanks to Scott Willingham for this
        !          1374: 
        !          1375:        suggestion.)
        !          1376: 
        !          1377: file.h, elsewhere as needed:
        !          1378: 
        !          1379:        Renamed the O_BIOS flag O_TTY (since that's what it really
        !          1380: 
        !          1381:        represents) and renamed the is_bios macro is_terminal.
        !          1382: 
        !          1383: dosmem.c:
        !          1384: 
        !          1385:        Make Pexec mode 106 cause the child to be truly independent
        !          1386: 
        !          1387:        of the parent (i.e. it doesn't get the parent's address space,
        !          1388: 
        !          1389:        nor does the parent get the child's).
        !          1390: 
        !          1391: biosfs.c:
        !          1392: 
        !          1393:        Allow symbolic links from U:\DEV; this lets us do things like
        !          1394: 
        !          1395:        Fsymlink("U:\PIPE\SERVERFIFO", "U:\DEV\SERVERDEV").
        !          1396: 
        !          1397: main.c:
        !          1398: 
        !          1399:        When PRN=d:\foo is specified, create the file foo instead of
        !          1400: 
        !          1401:        just trying to open it; this makes no difference to devices,
        !          1402: 
        !          1403:        but makes redirecting printer output to a file much more
        !          1404: 
        !          1405:        convenient.
        !          1406: 
        !          1407: unifs.c:
        !          1408: 
        !          1409:        Fix a bug that was causing Dgetpath() to return incorrect
        !          1410: 
        !          1411:        information for U:\A.
        !          1412: 
        !          1413: timeout.c:
        !          1414: 
        !          1415:        Make sure "searchtime" is up-to-date; bconout uses this for
        !          1416: 
        !          1417:        the time out.
        !          1418: 
        !          1419: biosfs.c:
        !          1420: 
        !          1421:        Fix bios_write so that if bconout fails, so does the write.
        !          1422: 
        !          1423: bios.c:
        !          1424: 
        !          1425:        Fix bconout so that it doesn't hang forever if the device isn't
        !          1426: 
        !          1427:        going to be ready (e.g. the printer is off); instead, there's
        !          1428: 
        !          1429:        a 10 second timeout.
        !          1430: 
        !          1431: main.c:
        !          1432: 
        !          1433:        Send all processes SIGTERM when we're shutting down, so that
        !          1434: 
        !          1435:        they have a chance to clean up after themselves.
        !          1436: 
        !          1437: mint.h:
        !          1438: 
        !          1439:        The KBDVEC structure was missing the "clockvec" element (!).
        !          1440: 
        !          1441: 
        !          1442: 
        !          1443: PATCHLEVEL3::
        !          1444: 
        !          1445: 
        !          1446: 
        !          1447: biosfs.c:
        !          1448: 
        !          1449:        Revised to allow support for loading/removing device drivers
        !          1450: 
        !          1451:        dynamically, via a Dcntl() call.
        !          1452: 
        !          1453: dosmem.c,mem.c,dosfile.c,file.h:
        !          1454: 
        !          1455:        Added support for setuid/setgid. These bits are only checked
        !          1456: 
        !          1457:        in Pexec modes 0, 100, and 200, i.e. the "load and go" modes.
        !          1458: 
        !          1459: rendez.c:
        !          1460: 
        !          1461:        Added new semaphore code from Allan Pratt.
        !          1462: 
        !          1463: main.c:
        !          1464: 
        !          1465:        New command for mint.cnf: "exec foo.prg bar" runs the program
        !          1466: 
        !          1467:        "foo" with argument(s) "bar".
        !          1468: 
        !          1469: main.c:
        !          1470: 
        !          1471:        Use the XBRA protocol for all interrupt routines that we grab.
        !          1472: 
        !          1473: filesys.c:
        !          1474: 
        !          1475:        When terminating MiNT, close all open files to make sure data
        !          1476: 
        !          1477:        is flushed and devices are nicely shut down.
        !          1478: 
        !          1479: main.c:
        !          1480: 
        !          1481:        Add some more variables, such as CON and PRN for redirecting
        !          1482: 
        !          1483:        those handles, and HARDSCROLL for controlling the fast text
        !          1484: 
        !          1485:        output.
        !          1486: 
        !          1487: proc.c:
        !          1488: 
        !          1489:        Make sure the "links" field for the prn and aux handles is
        !          1490: 
        !          1491:        correct.
        !          1492: 
        !          1493: syscall.s, bios.c:
        !          1494: 
        !          1495:        Special case the BIOS Bconout code to try to speed it up
        !          1496: 
        !          1497:        a bit. We allow for buffering of Bconout output; the buffer
        !          1498: 
        !          1499:        is flushed on the next non-Bconout system call or context
        !          1500: 
        !          1501:        switch. This should usually work OK, but as a precaution
        !          1502: 
        !          1503:        we provide for a way to turn it off (BIOSBUF=NO in mint.cnf).
        !          1504: 
        !          1505: fasttext.c.fasttext.h:
        !          1506: 
        !          1507:        New files for a faster text output device; changes were
        !          1508: 
        !          1509:        made to biosfs.c to support this, too.
        !          1510: 
        !          1511: tty.c:
        !          1512: 
        !          1513:        Streamline writes to terminals by sending data to the
        !          1514: 
        !          1515:        tty device in chunks instead of 1 character at a time.
        !          1516: 
        !          1517: dosfile.c:
        !          1518: 
        !          1519:        In do_open, always return EFILNF, never EPTHNF.
        !          1520: 
        !          1521: dosmem.c:
        !          1522: 
        !          1523:        Use supexec() to execute the terminate vector code, to
        !          1524: 
        !          1525:        avoid duplication of signal 0 faking.
        !          1526: 
        !          1527: xbios.c:
        !          1528: 
        !          1529:        In Supexec() does leave the kernel, so we have to make
        !          1530: 
        !          1531:        appropriate adjustments. We do this by faking a signal
        !          1532: 
        !          1533:        (signal 0) and installing the user's function as a signal
        !          1534: 
        !          1535:        handler.
        !          1536: 
        !          1537: dosdir.c:
        !          1538: 
        !          1539:        Make Dfree(x) actually look at free space on the drive which
        !          1540: 
        !          1541:        corresponds to the current directory on <x>; this should make
        !          1542: 
        !          1543:        Dfree on drive U: much more useful.
        !          1544: 
        !          1545: proc.h:
        !          1546: 
        !          1547:        Make the "base" field of the PROC structure have type BASEPAGE *
        !          1548: 
        !          1549:        (since that's what it is!)
        !          1550: 
        !          1551: basepage.h, dosdir.c, dosmem.c:
        !          1552: 
        !          1553:        Support some undocumented fields in the basepage a little bit
        !          1554: 
        !          1555:        (i.e. they're read only). Programs that try to write to these
        !          1556: 
        !          1557:        fields break. Surprise, surprise.
        !          1558: 
        !          1559: 
        !          1560: 
        !          1561: PATCHLEVEL2::
        !          1562: 
        !          1563: 
        !          1564: 
        !          1565: dosmem.c, mem.c:
        !          1566: 
        !          1567:        The docs say that children started with Pexec(104,...) or
        !          1568: 
        !          1569:        Pexec(106,...) share the parent's memory. This was unfortunately
        !          1570: 
        !          1571:        not the case; if the parent exited and the child was running
        !          1572: 
        !          1573:        in the parent's address space (e.g. see tfork() in mntlib)
        !          1574: 
        !          1575:        the child died very soon thereafter (like when the next program
        !          1576: 
        !          1577:        comes along and clears the memory the child was running out of).
        !          1578: 
        !          1579:        This is now fixed.
        !          1580: 
        !          1581: dos.c, proc.c, timeout.c:
        !          1582: 
        !          1583:        More tuning of the process scheduler.
        !          1584: 
        !          1585: main.c:
        !          1586: 
        !          1587:        Added "setenv" function for mint.cnf.
        !          1588: 
        !          1589: 
        !          1590: 
        !          1591: PATCHLEVEL1::
        !          1592: 
        !          1593: 
        !          1594: 
        !          1595: filesys.c:
        !          1596: 
        !          1597:        In some circumstances, AHDI will keep telling us that a drive
        !          1598: 
        !          1599:        has changed, ad infinitum. To avoid this, we stop trying after
        !          1600: 
        !          1601:        8 media changes occur in a row.
        !          1602: 
        !          1603: util.c:
        !          1604: 
        !          1605:        Tuned the kmalloc() strategy to reduce memory fragmentation
        !          1606: 
        !          1607:        (every process will be allocating 264 bytes for its
        !          1608: 
        !          1609:        memory region maps right after creation, and this should
        !          1610: 
        !          1611:        come from kernel memory).
        !          1612: 
        !          1613: tty.c:
        !          1614: 
        !          1615:        Under TOS, 1 byte writes should always be in raw mode.
        !          1616: 
        !          1617: dos.c:
        !          1618: 
        !          1619:        In Syield(), we should call sleep() even if no other processes
        !          1620: 
        !          1621:        are waiting, just to make sure that signals, alarms, etc.
        !          1622: 
        !          1623:        are properly dealt with.
        !          1624: 
        !          1625: filesys.c, dosfile.c:
        !          1626: 
        !          1627:        The media change code was wedged (actually, the fault was in
        !          1628: 
        !          1629:        do_pclose, which sometimes neglected to check to see whether
        !          1630: 
        !          1631:        or not the file had a still-valid device driver).
        !          1632: 
        !          1633: dosmem.c:
        !          1634: 
        !          1635:        In the termination code, close "files" referring to a process
        !          1636: 
        !          1637:        *before* freeing all the process memory; that way, we don't
        !          1638: 
        !          1639:        have to worry in do_pclose() and other places about what
        !          1640: 
        !          1641:        kind of state the process is in.
        !          1642: 
        !          1643: mem.h:
        !          1644: 
        !          1645:        Round off memory regions only to a word boundary for better
        !          1646: 
        !          1647:        TOS compatibility.
        !          1648: 
        !          1649: 
        !          1650: 
        !          1651: PATCHLEVEL0::
        !          1652: 
        !          1653: dos.c,intr.s,syscall.s:
        !          1654: 
        !          1655:        Changed s_yield() to actually give up the processor if
        !          1656: 
        !          1657:        another process is waiting for it; this means that processes
        !          1658: 
        !          1659:        that call Syield() won't be penalized by the priority code.
        !          1660: 
        !          1661:        Also: added a new kernel function, preempt(), which does
        !          1662: 
        !          1663:        what the old s_yield() did (and hence penalizes CPU hogs).
        !          1664: 
        !          1665: makefile:
        !          1666: 
        !          1667:        Cleaned up a bit, per suggestions from A. Pratt and D. Gymer.
        !          1668: 
        !          1669: 
        !          1670: 
        !          1671: 
        !          1672: 
        !          1673: version 0.91
        !          1674: 
        !          1675: 
        !          1676: 
        !          1677: dosmem.c:
        !          1678: 
        !          1679:        Only the high 4 bits of the program load flags give memory
        !          1680: 
        !          1681:        requirements (we were using 8 bits).
        !          1682: 
        !          1683: dosdir.c:
        !          1684: 
        !          1685:        Add a hack so that ksh still works (it was using '/' in a
        !          1686: 
        !          1687:        path name). THIS HACK WILL GO AWAY SOMEDAY!
        !          1688: 
        !          1689: tty.c:
        !          1690: 
        !          1691:        CBREAK mode shouldn't do erase, kill, or EOF processing.
        !          1692: 
        !          1693: dosdir.c:
        !          1694: 
        !          1695:        Freadlink should check first to make sure the file really
        !          1696: 
        !          1697:        is a link!
        !          1698: 
        !          1699: file.h,tty.c:
        !          1700: 
        !          1701:        Change the name "struct winsiz" to "struct winsize" to match
        !          1702: 
        !          1703:        what Unix calls it (cosmetic change only).
        !          1704: 
        !          1705: unifs.c:
        !          1706: 
        !          1707:        Allow renaming of the drives, and allow rmdir() to work
        !          1708: 
        !          1709:        like unlink() for symbolic links (since we fake the return
        !          1710: 
        !          1711:        value from Fsfirst to look like a directory if the link
        !          1712: 
        !          1713:        points to a directory).
        !          1714: 
        !          1715: biosfs.c:
        !          1716: 
        !          1717:        lseek() on the null device should not return 0 always;
        !          1718: 
        !          1719:        otherwise, it will look like a terminal to many programs!
        !          1720: 
        !          1721: dosfile.c:
        !          1722: 
        !          1723:        If a MiNT domain process closes stdin or stdout, they
        !          1724: 
        !          1725:        really do want them closed (for compatibility with
        !          1726: 
        !          1727:        MiNT 0.8).
        !          1728: 
        !          1729: syscall.s:
        !          1730: 
        !          1731:        When returning from traps, don't pre-empt the current process
        !          1732: 
        !          1733:        if it's in supervisor mode.
        !          1734: 
        !          1735: mem.c:
        !          1736: 
        !          1737:        Fake some stuff in the basepage so that programs compiled
        !          1738: 
        !          1739:        with dLibs will work some of the time.
        !          1740: 
        !          1741: tosfs.c:
        !          1742: 
        !          1743:        Make the value returned from Dgetpath() lower case in the MiNT
        !          1744: 
        !          1745:        domain. Also, make tosfs a little less verbose when debugging
        !          1746: 
        !          1747:        or tracing is on.
        !          1748: 
        !          1749: dosmem.c:
        !          1750: 
        !          1751:        Try to allocate space for saved fork() memory in the alternate (TT)
        !          1752: 
        !          1753:        memory map first, as well as in core (ST) memory.
        !          1754: 
        !          1755: mem.h:
        !          1756: 
        !          1757:        Round allocation requests up to multiples of 8 bytes instead
        !          1758: 
        !          1759:        of 4; this automatically gives us a bit of slush for ill
        !          1760: 
        !          1761:        behaved programs, and also means that requests will always
        !          1762: 
        !          1763:        be for a multiple of sizeof(double) bytes.
        !          1764: 
        !          1765: util.c:
        !          1766: 
        !          1767:        Get rid of the extra slush around kmalloc'd regions (which
        !          1768: 
        !          1769:        was a lot bigger than originally intended anyway!)
        !          1770: 
        !          1771: 
        !          1772: 
        !          1773: 
        !          1774: 
        !          1775: version 0.9
        !          1776: 
        !          1777: 
        !          1778: 
        !          1779: PATCHLEVEL21:: released version
        !          1780: 
        !          1781: 
        !          1782: 
        !          1783: dosmem.c:
        !          1784: 
        !          1785:        Make Malloc and Mxalloc try again if there isn't enough memory;
        !          1786: 
        !          1787:        maybe the situation is temporary.
        !          1788: 
        !          1789: mem.c:
        !          1790: 
        !          1791:        Plug a memory leak in load_region(); also make load_region try again
        !          1792: 
        !          1793:        if there isn't enough memory to load the program (just in case the
        !          1794: 
        !          1795:        situation is temporary).
        !          1796: 
        !          1797: dosdir.c:
        !          1798: 
        !          1799:        Add a check to Fattrib to make sure that attributes of directories
        !          1800: 
        !          1801:        are never changed.
        !          1802: 
        !          1803: 
        !          1804: 
        !          1805: PATCHLEVEL20::
        !          1806: 
        !          1807: 
        !          1808: 
        !          1809: dosdir.c:
        !          1810: 
        !          1811:        Allow Frenames of processes and other special kinds of files even
        !          1812: 
        !          1813:        if they do have the FA_RDONLY bit set.
        !          1814: 
        !          1815: dosfile.c:
        !          1816: 
        !          1817:        Allow creation of files with the read-only attribute.
        !          1818: 
        !          1819: tosfs.c:
        !          1820: 
        !          1821:        Change the file deletion code so that an attempt to delete an
        !          1822: 
        !          1823:        open file no longer fails, but rather marks the file to be
        !          1824: 
        !          1825:        deleted when it is closed.
        !          1826: 
        !          1827: file.h:
        !          1828: 
        !          1829:        Add some extra space to the tty struct, for future expansion.
        !          1830: 
        !          1831: filesys.c,main.c:
        !          1832: 
        !          1833:        Make sure the fake BIOS disk routines are available before
        !          1834: 
        !          1835:        any of the pseudo-drives are used, by having them set up
        !          1836: 
        !          1837:        in init_filesys() instead of init_intr().
        !          1838: 
        !          1839: tosfs.c:
        !          1840: 
        !          1841:        Remove some debugging output that isn't needed anymore.
        !          1842: 
        !          1843: 
        !          1844: 
        !          1845: PATCHLEVEL19::
        !          1846: 
        !          1847: Beta release.
        !          1848: 
        !          1849: 
        !          1850: 
        !          1851: intr.s,main.c:
        !          1852: 
        !          1853:        provide some fake BIOS disk routines for the pseudo-drives,
        !          1854: 
        !          1855:        in hopes of avoiding "drive U: is not responding" types of
        !          1856: 
        !          1857:        messages that some have reported
        !          1858: 
        !          1859: pipefs.c:
        !          1860: 
        !          1861:        half.ttp was failing under mgr, because of a race condition:
        !          1862: 
        !          1863:        our select() returns "ready" for a pipe if nobody exists to
        !          1864: 
        !          1865:        write to it (since then a read will return immediately). half
        !          1866: 
        !          1867:        would make a pipe that would end up being destroyed immediately
        !          1868: 
        !          1869:        by mgr before it got attached to a process. Solution: pipes that
        !          1870: 
        !          1871:        have *never* been opened yet for writing get a special marker
        !          1872: 
        !          1873:        and select doesn't worry about them, only about ones that were
        !          1874: 
        !          1875:        once written to.
        !          1876: 
        !          1877: pipefs.c:
        !          1878: 
        !          1879:        Fixed FIONWRITE to return the correct value.
        !          1880: 
        !          1881: dosdir.c:
        !          1882: 
        !          1883:        Refuse to Frename a file with the FA_RDONLY attribute.
        !          1884: 
        !          1885: biosfs.c:
        !          1886: 
        !          1887:        Fixed bios_write to return the number of bytes successfully
        !          1888: 
        !          1889:        written.
        !          1890: 
        !          1891: bios.c:
        !          1892: 
        !          1893:        LAST_DEVICE was inaccurate. This could happen again, so I'm simply
        !          1894: 
        !          1895:        getting rid of it and leaving all errors to the BIOS.
        !          1896: 
        !          1897: pipefs.c:
        !          1898: 
        !          1899:        Make sure the FA_RDONLY attribute is sensible (i.e. unidirectional
        !          1900: 
        !          1901:        pipes that don't have a writer can still be written to).
        !          1902: 
        !          1903: filesys.c:
        !          1904: 
        !          1905:        Fixed relpath2cookie so that it doesn't *always* follow symlinks
        !          1906: 
        !          1907:        (it only should when lastname == follow_links)
        !          1908: 
        !          1909: dosfile.c:
        !          1910: 
        !          1911:        If the FA_RDONLY bit is set on the file, even the superuser should
        !          1912: 
        !          1913:        be denied access for writing.
        !          1914: 
        !          1915: dosfile.c:
        !          1916: 
        !          1917:        Requiring write permission for Fdatime is a Bad Idea, since GEMDOS
        !          1918: 
        !          1919:        doesn't; so now MiNT doesn't either.
        !          1920: 
        !          1921: tosfs.c, filesys.c:
        !          1922: 
        !          1923:        Fixed a bug with media changes (Fsfirst would sometimes try to close a
        !          1924: 
        !          1925:        directory that had already been automatically closed by a media change).
        !          1926: 
        !          1927: 
        !          1928: 
        !          1929: PATCHLEVEL18::
        !          1930: 
        !          1931: 
        !          1932: 
        !          1933: main.c:
        !          1934: 
        !          1935:        Fixed the machine type detection code; it needs to run before
        !          1936: 
        !          1937:        biosfs is initialized, i.e. before init_filesys().
        !          1938: 
        !          1939: main.c:
        !          1940: 
        !          1941:        Provide a configuration file so that users can automatically
        !          1942: 
        !          1943:        setup symbolic links and can change their init program.
        !          1944: 
        !          1945: biosfs.c:
        !          1946: 
        !          1947:        Allow rename on bios devices, so people who want terminals called
        !          1948: 
        !          1949:        "ttyX" instead of "modemX" can do so.
        !          1950: 
        !          1951: dosdir.c:
        !          1952: 
        !          1953:        Flink shouldn't need write permission on the destination
        !          1954: 
        !          1955:        directory, only the source.
        !          1956: 
        !          1957: dosfile.c:
        !          1958: 
        !          1959:        Added FSTAT function for Fcntl, to allow a better version of
        !          1960: 
        !          1961:        fstat() for the library.
        !          1962: 
        !          1963: dosfile.c:
        !          1964: 
        !          1965:        Add code to fcntl to automatically convert MiNT 0.8 O_NDELAY
        !          1966: 
        !          1967:        into MiNT 0.9 O_NDELAY. This is a temporary measure only,
        !          1968: 
        !          1969:        to let older versions of mgr continue to work for a while.
        !          1970: 
        !          1971: filesys.c:
        !          1972: 
        !          1973:        Symbolic links with relative paths were always failing with
        !          1974: 
        !          1975:        ELOOP. Oops! (Thanks to Stephen Henson for catching this.)
        !          1976: 
        !          1977: file.h, tosfs.c, dosfile.c:
        !          1978: 
        !          1979:        Added a new flag, FS_NOXBIT, to control whether or not the
        !          1980: 
        !          1981:        file system has a sensible notion of execute permission.
        !          1982: 
        !          1983:        This removes an ugly check for &tos_filesys.
        !          1984: 
        !          1985: mint.h,util.c,mem.c:
        !          1986: 
        !          1987:        Added a compile time option, JUNK_MEM, to deliberately fill
        !          1988: 
        !          1989:        the memory MiNT acquires with garbage; this is for debugging
        !          1990: 
        !          1991:        (to help track down silly failures to initialize memory) and
        !          1992: 
        !          1993:        not for production code.
        !          1994: 
        !          1995: proc.c:
        !          1996: 
        !          1997:        Fixed a typo in init_proc() that was causing memory not to
        !          1998: 
        !          1999:        be initialized to 0 correctly. (Thanks are due to Stephen
        !          2000: 
        !          2001:        Usher for catching this one.)
        !          2002: 
        !          2003: tosfs.c:
        !          2004: 
        !          2005:        Added a tos_rewinddir that works.
        !          2006: 
        !          2007: file.h:
        !          2008: 
        !          2009:        Added blocks and blksize fields to the XATTR structure, and
        !          2010: 
        !          2011:        provided a few extra reserved fields for future expansion.
        !          2012: 
        !          2013:        (Also: re-arranged some fields to match what the gcc library
        !          2014: 
        !          2015:        already has.)
        !          2016: 
        !          2017: file.h, main.c:
        !          2018: 
        !          2019:        Add sleep, wake, and wakeselect to the kernel info structure;
        !          2020: 
        !          2021:        some device drivers will need these.
        !          2022: 
        !          2023: biosfs.c:
        !          2024: 
        !          2025:        Make nodskchng do a Getbpb on the (non-existent) device; the officially
        !          2026: 
        !          2027:        documented way of forcing a disk change requires this.
        !          2028: 
        !          2029: file.h,filesys.c,*fs.c:
        !          2030: 
        !          2031:        Remove the "flag" argument from the dskchng function, and
        !          2032: 
        !          2033:        have the kernel check Rwabs for E_CHNG; this should save
        !          2034: 
        !          2035:        a lot of duplication in user file systems, since everyone
        !          2036: 
        !          2037:        really has to do this anyways.
        !          2038: 
        !          2039: dosdir.c:
        !          2040: 
        !          2041:        Make sure that Fsfirst names can be null-terminated.
        !          2042: 
        !          2043: filesys.c:
        !          2044: 
        !          2045:        Oops: a misplaced bracket in disk_changed was causing
        !          2046: 
        !          2047:        write-protected disks to always appear to have changed!
        !          2048: 
        !          2049: tosfs.c:
        !          2050: 
        !          2051:        Made it illegal to delete or truncate an open file.
        !          2052: 
        !          2053: 
        !          2054: 
        !          2055: PATCHLEVEL17::
        !          2056: 
        !          2057: 
        !          2058: 
        !          2059: version.h:
        !          2060: 
        !          2061:        I think we can call this version an "alpha" one, now. No more
        !          2062: 
        !          2063:        major features remain to be added (fingers crossed, here).
        !          2064: 
        !          2065: filesys.c,dosdir.c,*fs.c,file.h:
        !          2066: 
        !          2067:        Media change detection code; this is now the kernel's
        !          2068: 
        !          2069:        responsibility. This necessitated an additional function
        !          2070: 
        !          2071:        for file systems; I hope this is the last one.
        !          2072: 
        !          2073: main.c,biosfs.c:
        !          2074: 
        !          2075:        Check what kind of machine we're on, and adjust what devices are
        !          2076: 
        !          2077:        present accordingly. The rs232 file has been renamed to "modem1".
        !          2078: 
        !          2079:        WARNING: This will break existing code that uses the name "rs232".
        !          2080: 
        !          2081: filesys.c:
        !          2082: 
        !          2083:        Code for loading file systems (finally!)
        !          2084: 
        !          2085: bios.c,context.s:
        !          2086: 
        !          2087:        Made Rwabs, Getbpb, and Mediach save registers (since device
        !          2088: 
        !          2089:        drivers often don't, and loadable file systems will be calling
        !          2090: 
        !          2091:        these directly).
        !          2092: 
        !          2093: main.c:
        !          2094: 
        !          2095:        Implemented the "struct kerinfo" to pass information to loadable
        !          2096: 
        !          2097:        file systems.
        !          2098: 
        !          2099: filesys.c:
        !          2100: 
        !          2101:        Re-wrote path2cookie to provide for symbolic links; a new routine
        !          2102: 
        !          2103:        (relpath2cookie) helps us out.
        !          2104: 
        !          2105: unifs.c:
        !          2106: 
        !          2107:        Code for creating, reading, and deleting symbolic links.
        !          2108: 
        !          2109: *fs.c, dosfile.c, file.h:
        !          2110: 
        !          2111:        Changed the way file opens and creates are done; the former
        !          2112: 
        !          2113:        (*getdev) routine for file systems has been split into
        !          2114: 
        !          2115:        (*creat) and (*getdev), both of which are quite a bit simpler.
        !          2116: 
        !          2117:        This whole scheme is clearer, less work for the file system,
        !          2118: 
        !          2119:        and will support symbolic links much better.
        !          2120: 
        !          2121: various places:
        !          2122: 
        !          2123:        Add security checks. This is still pretty sad, but at least it
        !          2124: 
        !          2125:        can provide one with a modicum of protection against silly
        !          2126: 
        !          2127:        mistakes.
        !          2128: 
        !          2129: dosfile.c:
        !          2130: 
        !          2131:        Require write permission on a file before changing its date via
        !          2132: 
        !          2133:        Fdatime.
        !          2134: 
        !          2135: tosfs.c:
        !          2136: 
        !          2137:        Cleaned up and streamlined a bit, and fixed tos_readlabel.
        !          2138: 
        !          2139: *fs.c,dosdir.c,file.h:
        !          2140: 
        !          2141:        Changed the file system "getxattr", "chmode", "chown", and
        !          2142: 
        !          2143:        "chattr" functions to take a single file cookie instead of a
        !          2144: 
        !          2145:        (directory, name) pair. This should make most uses of these
        !          2146: 
        !          2147:        functions (e.g. in name lookups) more efficient. Also,
        !          2148: 
        !          2149:        changed the readdir() function to return a file cookie to go
        !          2150: 
        !          2151:        along with the newly read file name.
        !          2152: 
        !          2153: main.c:
        !          2154: 
        !          2155:        If "init.prg" isn't found, try starting GEM instead.
        !          2156: 
        !          2157: unifs.c:
        !          2158: 
        !          2159:        Re-arranged to allow for symbolic links.
        !          2160: 
        !          2161: filesys.c:
        !          2162: 
        !          2163:        Implemented some media change routines.
        !          2164: 
        !          2165: dosdir.c:
        !          2166: 
        !          2167:        Added Fchown and Fchmod system calls.
        !          2168: 
        !          2169: dosdir.c:
        !          2170: 
        !          2171:        Added security check for Fattrib().
        !          2172: 
        !          2173: 
        !          2174: 
        !          2175: PATCHLEVEL16::
        !          2176: 
        !          2177: 
        !          2178: 
        !          2179: lots of places:
        !          2180: 
        !          2181:        Try to make TRACE() and DEBUG() messages more useful for people
        !          2182: 
        !          2183:        who don't know the internals of the kernel, and who just want to
        !          2184: 
        !          2185:        debug their own programs.
        !          2186: 
        !          2187: dosdir.c:
        !          2188: 
        !          2189:        Added Flink, Fsymlink, Freadlink, and Dcntl system calls.
        !          2190: 
        !          2191: *fs.c,file.h:
        !          2192: 
        !          2193:        Added a new mode to Dpathconf() to determine whether the
        !          2194: 
        !          2195:        file system uses DOS type file naming conventions, ordinary
        !          2196: 
        !          2197:        Unix type, or _POSIX_NO_TRUNC type.
        !          2198: 
        !          2199: file.h:
        !          2200: 
        !          2201:        Add an "fscntl" field to the file system structure.
        !          2202: 
        !          2203: tosfs.c:
        !          2204: 
        !          2205:        Fix the mode values returned from getxattr() (regular files
        !          2206: 
        !          2207:        have type S_IFREG, not S_IFMT).
        !          2208: 
        !          2209: proc.c:
        !          2210: 
        !          2211:        Zero the child's srchdta field after fork_proc(); otherwise,
        !          2212: 
        !          2213:        the accounting for Fsfirst/Fsnext can get messed up. Thanks
        !          2214: 
        !          2215:        again to S. Henson.
        !          2216: 
        !          2217: mem.c:
        !          2218: 
        !          2219:        As Steve Henson pointed out, resetting the effective user and
        !          2220: 
        !          2221:        group id's in exec_region is probably a Bad Idea.
        !          2222: 
        !          2223: dosdir.c:
        !          2224: 
        !          2225:        Change Dopendir/Dclosedir to use umalloc and ufree instead of
        !          2226: 
        !          2227:        kmalloc and kfree.
        !          2228: 
        !          2229: 
        !          2230: 
        !          2231: PATCHLEVEL15::
        !          2232: 
        !          2233: 
        !          2234: 
        !          2235: dosdir.c:
        !          2236: 
        !          2237:        When terminating, clean up after any Fsfirst/Fsnext sequences that
        !          2238: 
        !          2239:        didn't go to completion.
        !          2240: 
        !          2241: tosfs.c:
        !          2242: 
        !          2243:        Streamlined garbage collection code, and also corrected a bug in
        !          2244: 
        !          2245:        which file indices used in directory searches could be garbage
        !          2246: 
        !          2247:        collected.
        !          2248: 
        !          2249: file.h, *fs.c:
        !          2250: 
        !          2251:        Add symlink and hard link functions.
        !          2252: 
        !          2253: pipefs.c:
        !          2254: 
        !          2255:        Make FIONWRITE work again (a line was accidentally deleted).
        !          2256: 
        !          2257:        Make sure that Fselect() will select any pipes that have been
        !          2258: 
        !          2259:        closed.
        !          2260: 
        !          2261: dossig.c:
        !          2262: 
        !          2263:        Put back the user id check in Pkill.
        !          2264: 
        !          2265: dos.c, proc.c:
        !          2266: 
        !          2267:        Make sure that the "euid" and "egid" fields are set with
        !          2268: 
        !          2269:        the Psetuid and Psetgid calls. Also, make sure the fields
        !          2270: 
        !          2271:        are reset after an exec.
        !          2272: 
        !          2273: mem.c:
        !          2274: 
        !          2275:        Make exec_region shrink the process 'mem' and 'addr' tables
        !          2276: 
        !          2277:        to the default again if extra regions had been allocated.
        !          2278: 
        !          2279: dosmem.c:
        !          2280: 
        !          2281:        Get rid of the magic number "100", and introduce a maximum user
        !          2282: 
        !          2283:        settable priority MAX_NICE so that the kernel can make sure
        !          2284: 
        !          2285:        that a process that needs to run (e.g. an aborted vfork) will
        !          2286: 
        !          2287:        run first by setting its priority to MAX_NICE+1.
        !          2288: 
        !          2289: proc.c:
        !          2290: 
        !          2291:        Make sure the initial process memory tables are zeroed.
        !          2292: 
        !          2293: proc.c:
        !          2294: 
        !          2295:        Adjust the process scheduling algorithm (yet again!). Also,
        !          2296: 
        !          2297:        rename "nice_count" to "curpri".
        !          2298: 
        !          2299: dosdir.c,dos.c:
        !          2300: 
        !          2301:        Added Dopendir, Dreaddir, Drewinddir, Dclosedir system calls.
        !          2302: 
        !          2303: *fs.c:
        !          2304: 
        !          2305:        Made readdir return a file index (inode number) if it's not
        !          2306: 
        !          2307:        doing a TOS mode search.
        !          2308: 
        !          2309: biosfs.c:
        !          2310: 
        !          2311:        PHYSCONS is such an ugly name; CONSOLE makes more sense.
        !          2312: 
        !          2313: 
        !          2314: 
        !          2315: PATCHLEVEL14::
        !          2316: 
        !          2317: 
        !          2318: 
        !          2319: mem.c:
        !          2320: 
        !          2321:        Allow the kernel to dynamically allocate memory region
        !          2322: 
        !          2323:        descriptors if it runs out; also, increase the number that
        !          2324: 
        !          2325:        it starts with by default.
        !          2326: 
        !          2327: util.c:
        !          2328: 
        !          2329:        Made it harmless to call kfree with a NULL argument.
        !          2330: 
        !          2331: proc.h,mem.c,dosmem.c,proc.c:
        !          2332: 
        !          2333:        Eliminate the 64 region per process limit, by making the "mem"
        !          2334: 
        !          2335:        and "addr" arrays dynamically allocated.
        !          2336: 
        !          2337: proc.c:
        !          2338: 
        !          2339:        Change the code for selecting which process to run next; if more
        !          2340: 
        !          2341:        than one process is on the ready queue, we use a per-process
        !          2342: 
        !          2343:        counter to prevent high priority processes from hogging all the
        !          2344: 
        !          2345:        time.
        !          2346: 
        !          2347: dosmem.c:
        !          2348: 
        !          2349:        Release a process' controlling terminal (by setting it's process
        !          2350: 
        !          2351:        group back to 0) if the process is a process group leader and
        !          2352: 
        !          2353:        is exiting.
        !          2354: 
        !          2355: dosfile.c,tty.c,*fs.c:
        !          2356: 
        !          2357:        Made do_open set terminals up correctly on open/close, and
        !          2358: 
        !          2359:        handle assigning process groups to them. Also, made the terminal's
        !          2360: 
        !          2361:        process group be set automatically on Fforce(-1,...).
        !          2362: 
        !          2363: main.c,timeout.c:
        !          2364: 
        !          2365:        Added AKP's code for better resolution of time usage.
        !          2366: 
        !          2367: DELETED FILES:
        !          2368: 
        !          2369:        xlate.c, xlate32.s, newdisk.s
        !          2370: 
        !          2371: everywhere:
        !          2372: 
        !          2373:        Removed all references to NEED_TRANSLATION. This is getting to be a
        !          2374: 
        !          2375:        pain to maintain, and nobody seems to actually use it.
        !          2376: 
        !          2377: *fs.c:
        !          2378: 
        !          2379:        Fixed the ENAMETOOLONG detection code in readdir (thanks, Steve!).
        !          2380: 
        !          2381: timeout.c:
        !          2382: 
        !          2383:        New function, nap, for processes that are in busy loops waiting for
        !          2384: 
        !          2385:        an event that probably won't happen for a while (e.g. waiting for
        !          2386: 
        !          2387:        the user to hit a key); use e.g. nap(60) to sleep for 60 milliseconds
        !          2388: 
        !          2389:        instead of yield().
        !          2390: 
        !          2391: mem.c:
        !          2392: 
        !          2393:        create_env() should use the value from the current process' basepage,
        !          2394: 
        !          2395:        since this may *not* be the same as the environment the process
        !          2396: 
        !          2397:        was actually started with
        !          2398: 
        !          2399: dosfile.c:
        !          2400: 
        !          2401:        Make Fcntl(fh, arg, F_SETFL) leave the file sharing mode alone as well
        !          2402: 
        !          2403:        as the read/write mode.
        !          2404: 
        !          2405: unifs.c:
        !          2406: 
        !          2407:        Change the name "fifo" to "pipe"; change "drva", "drvb" etc. into just
        !          2408: 
        !          2409:        "a", "b" etc.
        !          2410: 
        !          2411: dosmem.c:
        !          2412: 
        !          2413:        Make it possible to provide a name with Pexec mode 104. Provide a new
        !          2414: 
        !          2415:        mode 106 that starts a process in the background and automatically
        !          2416: 
        !          2417:        detaches the process TPA from the parent's memory.
        !          2418: 
        !          2419: 
        !          2420: 
        !          2421: PATCHLEVEL13::
        !          2422: 
        !          2423: 
        !          2424: 
        !          2425: biosfs.c:
        !          2426: 
        !          2427:        Made sure that tty_getchar() won't see (long) negative values
        !          2428: 
        !          2429:        returned from a successful read, by clearing the high bit
        !          2430: 
        !          2431:        of read values.
        !          2432: 
        !          2433: *fs.c,atarierr.h:
        !          2434: 
        !          2435:        Made file systems responsible for dealing with "." and "..";
        !          2436: 
        !          2437:        introduced a new (fake) EMOUNT error to indicate when ".." is
        !          2438: 
        !          2439:        found in a root directory (this is for the benefit of the
        !          2440: 
        !          2441:        unified file system code)
        !          2442: 
        !          2443: dosdir.c,filesys.c:
        !          2444: 
        !          2445:        Changes to allow for the unified file system.
        !          2446: 
        !          2447: unifs.c, makefile:
        !          2448: 
        !          2449:        New file, for a "unified" file system.
        !          2450: 
        !          2451: filesys.c, *fs.c:
        !          2452: 
        !          2453:        Renamed denyaccess() to denyshare().
        !          2454: 
        !          2455: dosdir.c:
        !          2456: 
        !          2457:        Changed getname() to work from the root down instead of from
        !          2458: 
        !          2459:        the directory up; this should work better for mounting and
        !          2460: 
        !          2461:        symbolic links.
        !          2462: 
        !          2463: dosdir.c:
        !          2464: 
        !          2465:        Moved the check for a drive specifier (A:\FOO) in Dsetpath to
        !          2466: 
        !          2467:        where it should have been, namely before any use of the drive.
        !          2468: 
        !          2469: biosfs.c,pipefs.c:
        !          2470: 
        !          2471:        In opendir, make sure the directory structure is properly
        !          2472: 
        !          2473:        initialized.
        !          2474: 
        !          2475: dos.c:
        !          2476: 
        !          2477:        Changed snice and srenice to pnice and prenice; also modified the
        !          2478: 
        !          2479:        return values to be 16 bit (for the normal case), and 32 bit
        !          2480: 
        !          2481:        negative for errors, so that low priority processes can be
        !          2482: 
        !          2483:        distinguished from errors.
        !          2484: 
        !          2485: debug*.c:
        !          2486: 
        !          2487:        The Bconstat() check for the printer should be applied to device
        !          2488: 
        !          2489:        0, not 1.
        !          2490: 
        !          2491: 
        !          2492: 
        !          2493: PATCHLEVEL12::
        !          2494: 
        !          2495: 
        !          2496: 
        !          2497: dosdir.c,filesys.c:
        !          2498: 
        !          2499:        Re-wrote Fsfirst/next to use opendir/readdir/closedir. Re-wrote
        !          2500: 
        !          2501:        the pat_match function to work correctly (at least, according
        !          2502: 
        !          2503:        to the TOS rules :-).
        !          2504: 
        !          2505: *fs.c, file.h:
        !          2506: 
        !          2507:        Added opendir/readdir/closedir calls to file systems to allow
        !          2508: 
        !          2509:        more general file systems; also changed getattr into getxattr
        !          2510: 
        !          2511:        (again, to allow file systems with extra goodies), setattr into
        !          2512: 
        !          2513:        chattr, and added chown and chmod calls. Deleted sfirst/snext
        !          2514: 
        !          2515:        file system entry points, and the Xsfirst/Xsnext system calls.
        !          2516: 
        !          2517: *fs.c,file.h,dosfile.c,dosdir.c:
        !          2518: 
        !          2519:        Changed file systems to have separate calls for reading/writing
        !          2520: 
        !          2521:        volume labels. Added checks to Fattrib and Fcreate to avoid creating
        !          2522: 
        !          2523:        files with bad attributes (e.g. FA_LABEL or FA_DIR and anything
        !          2524: 
        !          2525:        else).
        !          2526: 
        !          2527: main.c:
        !          2528: 
        !          2529:        Change the definition of tosvers so that TOS 1.0 corresponds
        !          2530: 
        !          2531:        to tosvers == 0x100, not tosvers == 0. Also, clean up the
        !          2532: 
        !          2533:        code for testing TOS versions.
        !          2534: 
        !          2535:        WARNING: This may break RAM TOS versions. I doubt it matters.
        !          2536: 
        !          2537: bios.c,main.c:
        !          2538: 
        !          2539:        Always set the kbshft variable, so that kbshift is more
        !          2540: 
        !          2541:        efficient.
        !          2542: 
        !          2543: dos.c:
        !          2544: 
        !          2545:        Eliminated the old code that allowed Super(-1L) to work (GEMDOS
        !          2546: 
        !          2547:        doesn't support this, so why should MiNT?)
        !          2548: 
        !          2549: dos.c:
        !          2550: 
        !          2551:        Added GEMDOS date and time routines, and made sure that
        !          2552: 
        !          2553:        datestamp and timestamp are initialized properly when
        !          2554: 
        !          2555:        MiNT is started.
        !          2556: 
        !          2557: mem.c:
        !          2558: 
        !          2559:        Increased the size of the buffer used for reading relocation
        !          2560: 
        !          2561:        information in load_region.
        !          2562: 
        !          2563: *fs.c, dosfile.c:
        !          2564: 
        !          2565:        Changed the filesystem getdev call to return a file cookie
        !          2566: 
        !          2567:        (this saves a call to lookup on every open).
        !          2568: 
        !          2569: *fs.c, filesys.c:
        !          2570: 
        !          2571:        Eliminated static variables, changed all routines that used to
        !          2572: 
        !          2573:        return pointers to cookies to take an extra argument (a pointer
        !          2574: 
        !          2575:        to the place to put the result).
        !          2576: 
        !          2577: tosfs.c:
        !          2578: 
        !          2579:        Turn O_COMPAT sharing mode into O_DENYNONE (after making other
        !          2580: 
        !          2581:        appropriate changes to the access modes).
        !          2582: 
        !          2583: debugold.c:
        !          2584: 
        !          2585:        Updated to reflect changes in debug.c.
        !          2586: 
        !          2587: debug.c:
        !          2588: 
        !          2589:        Added calls to va_end where appropriate.
        !          2590: 
        !          2591: debug.c:
        !          2592: 
        !          2593:        Before, hitting a key paused debugging output; now, debug_ws
        !          2594: 
        !          2595:        checks the device that output is going to, so that e.g. if it's
        !          2596: 
        !          2597:        going to the MIDI port, the output is paused when a character
        !          2598: 
        !          2599:        arrives on the MIDI port.
        !          2600: 
        !          2601: mem.c:
        !          2602: 
        !          2603:        Made exec_region use O_DENYNONE sharing mode instead of O_DENYW
        !          2604: 
        !          2605: 
        !          2606: 
        !          2607: PATCHLEVEL11::
        !          2608: 
        !          2609: 
        !          2610: 
        !          2611: dosfile.c:
        !          2612: 
        !          2613:        Forbid closing file handles < 0; this will prevent accidental
        !          2614: 
        !          2615:        destruction of the BIOS handles.
        !          2616: 
        !          2617: dosfile.c:
        !          2618: 
        !          2619:        Change Fbiosdev to be MIDI specific, rename it to Fmidipipe, and
        !          2620: 
        !          2621:        move it to dosfile.c. The semantics are a bit different, too;
        !          2622: 
        !          2623:        see the comments in dosfile.c.
        !          2624: 
        !          2625: bios.c:
        !          2626: 
        !          2627:        Really fix the MIDI output routines, this time. (sigh)
        !          2628: 
        !          2629: 
        !          2630: 
        !          2631: PATCHLEVEL10::
        !          2632: 
        !          2633: 
        !          2634: 
        !          2635: signal.c:
        !          2636: 
        !          2637:        Fixed a typo in the message printed when bombs occur. Also,
        !          2638: 
        !          2639:        removed the copying of data from the supervisor stack to the
        !          2640: 
        !          2641:        BIOS area -- this was causing very strange problems, and it's
        !          2642: 
        !          2643:        not clear that the info would be useful under MiNT anyway.
        !          2644: 
        !          2645:        Finally, all this is only supposed to happen for certain
        !          2646: 
        !          2647:        signals, not for any random killings.
        !          2648: 
        !          2649: 
        !          2650: 
        !          2651: PATCHLEVEL9::
        !          2652: 
        !          2653: 
        !          2654: 
        !          2655: file.h, *fs.c:
        !          2656: 
        !          2657:        Changed the definition of the DTA buffer to free up space for
        !          2658: 
        !          2659:        user/group id fields and an extended attributes field. Made
        !          2660: 
        !          2661:        sfirst/snext use the 'aux' field of the directory cookie
        !          2662: 
        !          2663:        as an index.
        !          2664: 
        !          2665: dos.c:
        !          2666: 
        !          2667:        Fixed Talarm() to return the number of seconds left before an
        !          2668: 
        !          2669:        alarm, not the number of milliseconds.
        !          2670: 
        !          2671: dosdir.c:
        !          2672: 
        !          2673:        New system calls, Xsfirst/Xsnext, for accessing file systems
        !          2674: 
        !          2675:        with long (>12 character) names.
        !          2676: 
        !          2677: signal.c:
        !          2678: 
        !          2679:        Fill in the BIOS post-mortem dump error correctly after
        !          2680: 
        !          2681:        bus errors, address errors, etc. Also, made the "bomb" replacement
        !          2682: 
        !          2683:        routine give the process basepage address and program counter,
        !          2684: 
        !          2685:        as suggested by AKP.
        !          2686: 
        !          2687: tosfs.c:
        !          2688: 
        !          2689:        Fixed the tos_lookup bug that was causing bus errors during file
        !          2690: 
        !          2691:        opens.
        !          2692: 
        !          2693: 
        !          2694: 
        !          2695: PATCHLEVEL8::
        !          2696: 
        !          2697: 
        !          2698: 
        !          2699: tosfs.c:
        !          2700: 
        !          2701:        Made opens with O_COMPAT sharing mode always open for both reading
        !          2702: 
        !          2703:        and writing; this is so broken TOS programs that write to read-only
        !          2704: 
        !          2705:        handles will continue to work.
        !          2706: 
        !          2707: file.h, tty.c:
        !          2708: 
        !          2709:        Added TIOCGWINSZ/TIOCSWINSZ and the appropriate window size
        !          2710: 
        !          2711:        fields to the tty structure to support them.
        !          2712: 
        !          2713: dossig.c:
        !          2714: 
        !          2715:        Remove user id checks (for now). Make it impossible to catch
        !          2716: 
        !          2717:        SIGSTOP.
        !          2718: 
        !          2719: bios.c:
        !          2720: 
        !          2721:        Fix so Bconout returns a value (it really should, at least for
        !          2722: 
        !          2723:        the printer).
        !          2724: 
        !          2725: mem.c:
        !          2726: 
        !          2727:        Don't context switch and retry alloc_region; file systems and some
        !          2728: 
        !          2729:        parts of the kernel aren't expecting the context switch, and besides
        !          2730: 
        !          2731:        the previous change makes this tactic less likely to be helpful.
        !          2732: 
        !          2733: mem.c:
        !          2734: 
        !          2735:        Don't allocate *all* of the memory to the basepage, leave some for
        !          2736: 
        !          2737:        the kernel and other programs.
        !          2738: 
        !          2739: pipefs.c:
        !          2740: 
        !          2741:        Add a check for broken pipes when a program is trying to write
        !          2742: 
        !          2743:        atomically.
        !          2744: 
        !          2745: dosmem.c:
        !          2746: 
        !          2747:        Block job control signals during a vfork instead of ignoring
        !          2748: 
        !          2749:        them; this will result in the "right" thing happening after
        !          2750: 
        !          2751:        the exec (since the blocked signals will then be unblocked).
        !          2752: 
        !          2753: tosfs.c:
        !          2754: 
        !          2755:        Eeek! Fixed a very serious bug in the garbage collection
        !          2756: 
        !          2757:        routines ("i" was used where "j" should have been in a loop:
        !          2758: 
        !          2759:        result: things could be garbage collected that shouldn't
        !          2760: 
        !          2761:        have been!)
        !          2762: 
        !          2763: procfs.c:
        !          2764: 
        !          2765:        changed the return value from "dfree" to more accurately indicate
        !          2766: 
        !          2767:        the free memory in the system, and to also provide information
        !          2768: 
        !          2769:        about the smallest unit of allocable memory (currently a longword)
        !          2770: 
        !          2771: *fs.c,dosfile.c,dosdir.c,filesys.c:
        !          2772: 
        !          2773:        instead of passing fcookies to file systems, pass pointers to
        !          2774: 
        !          2775:        them; this should slightly improve efficiency, and greatly
        !          2776: 
        !          2777:        improve portability (otherwise, compilers used to make
        !          2778: 
        !          2779:        installable file systems would have to have the same structure
        !          2780: 
        !          2781:        passing/return conventions as the one that compiled the kernel)
        !          2782: 
        !          2783: dos.c:
        !          2784: 
        !          2785:        new system call, Srenice(), to change priority of a different
        !          2786: 
        !          2787:        process
        !          2788: 
        !          2789: dos.c:
        !          2790: 
        !          2791:        change Fbiosdev() system call to take a pid argument
        !          2792: 
        !          2793: proc.h, dosfile.c:
        !          2794: 
        !          2795:        add per-file descriptor flags for things like "close on exec"
        !          2796: 
        !          2797: file.h, mem.c, *fs.c:
        !          2798: 
        !          2799:        new file open mode, O_EXEC, for the kernel to use in Pexec
        !          2800: 
        !          2801: rendez.c, dos.c:
        !          2802: 
        !          2803:        new file from AKP to implement a simple and fast message based
        !          2804: 
        !          2805:        IPC; the new system call is Pmsg. Also note that the syscall number
        !          2806: 
        !          2807:        of Pmsg is 0x125, which used to be used by Fbiosdev; Fbiosdev has
        !          2808: 
        !          2809:        been moved to 0x126.
        !          2810: 
        !          2811: filesys.c:
        !          2812: 
        !          2813:        applied Steve Henson's patches to improve path2cookie's handling of
        !          2814: 
        !          2815:        repeated slashes
        !          2816: 
        !          2817: proc.h:
        !          2818: 
        !          2819:        MAX_OPEN should be 32, not 20!
        !          2820: 
        !          2821: mem.c:
        !          2822: 
        !          2823:        Ignore "close on exec" flag for the standard handles (for some
        !          2824: 
        !          2825:        reason, bash manages to set these for 0,1,2; this is probably a bug
        !          2826: 
        !          2827:        in the port of bash, but on the other hand it's unlikely that
        !          2828: 
        !          2829:        anyone would really want to close the standard handles when doing
        !          2830: 
        !          2831:        an exec, anyway)
        !          2832: 
        !          2833: tty.c:
        !          2834: 
        !          2835:        Fixed RAW mode reads on terminals so that they're no longer
        !          2836: 
        !          2837:        terminated by '\r' or '\n' (and so that pty slaves aren't forced
        !          2838: 
        !          2839:        to read just 1 character at a time). Thanks to AKP for catching
        !          2840: 
        !          2841:        this.
        !          2842: 
        !          2843: 
        !          2844: 
        !          2845: PATCHLEVEL7::
        !          2846: 
        !          2847: 
        !          2848: 
        !          2849: *fs.c:
        !          2850: 
        !          2851:        Cleaned up the Dpathconf() return values to better reflect
        !          2852: 
        !          2853:        reality, and made the code a little easier to understand.
        !          2854: 
        !          2855: bios.c:
        !          2856: 
        !          2857:        Adjust bcostat() parameters so that V:\MIDI and V:\KBD call
        !          2858: 
        !          2859:        the right (wrong) device (BIOS devices 3 and 4 are mixed
        !          2860: 
        !          2861:        up for Bcostat).
        !          2862: 
        !          2863: dosmem.c:
        !          2864: 
        !          2865:        Made sure that Malloc(0L) always returns a NULL pointer.
        !          2866: 
        !          2867: dosfile.c:
        !          2868: 
        !          2869:        Made Fclose() of handles 0, 1, 2, and 3 restore the default
        !          2870: 
        !          2871:        mappings. (Apparently TOS _does_ do this, after all.)
        !          2872: 
        !          2873: bios.c:
        !          2874: 
        !          2875:        AHDI 3.1 added a new parameter to Rwabs; we now pass that
        !          2876: 
        !          2877:        along too.
        !          2878: 
        !          2879: timeout.c:
        !          2880: 
        !          2881:        Make canceltimeout() free the memory used by the time out
        !          2882: 
        !          2883:        descriptor. (another Fselect bug)
        !          2884: 
        !          2885: signal.h:
        !          2886: 
        !          2887:        Removed ABORT and ALARM from list of signals that are reported
        !          2888: 
        !          2889:        by the kernel.
        !          2890: 
        !          2891: proc.c:
        !          2892: 
        !          2893:        Moved checkalarms() to do_wakeup_things() so that short time outs
        !          2894: 
        !          2895:        will be properly recognized; this fixes a nasty bug in Fselect.
        !          2896: 
        !          2897: 
        !          2898: 
        !          2899: PATCHLEVEL6::
        !          2900: 
        !          2901: 
        !          2902: 
        !          2903: pipefs.c:
        !          2904: 
        !          2905:        Make writes of 1024 or fewer bytes atomic. Also, increase pipe
        !          2906: 
        !          2907:        buffer size to 4096.
        !          2908: 
        !          2909: tosfs.c:
        !          2910: 
        !          2911:        Make O_EXCL and O_TRUNC bits useful.
        !          2912: 
        !          2913: tosfs.c,pipefs.c,filesys.c:
        !          2914: 
        !          2915:        Fully implement file sharing modes for tosfs and pipefs. A new
        !          2916: 
        !          2917:        routine (denyaccess) is provided in filesys.c for checking
        !          2918: 
        !          2919:        file open modes and determining conflicts (if any).
        !          2920: 
        !          2921: pipefs.c:
        !          2922: 
        !          2923:        If a process writes on a broken pipe while ignoring SIGPIPE,
        !          2924: 
        !          2925:        the write now returns -1. (Thanks, Stephen)
        !          2926: 
        !          2927: debug.c, bios.c:
        !          2928: 
        !          2929:        Applied bammi's patches to PATCHLEVEL 5 to fix some typos.
        !          2930: 
        !          2931: 
        !          2932: 
        !          2933: PATCHLEVEL5::
        !          2934: 
        !          2935: 
        !          2936: 
        !          2937: debug.c, bios.c:
        !          2938: 
        !          2939:        Applied AKP's debugging output patches, to allow TRACE and
        !          2940: 
        !          2941:        DEBUG output to go to serial ports as well as the printer.
        !          2942: 
        !          2943: 
        !          2944: 
        !          2945: PATCHLEVEL4::
        !          2946: 
        !          2947: 
        !          2948: 
        !          2949: dos.c:
        !          2950: 
        !          2951:        NEW SYSTEM CALL: Fbiosdev() to control redirection of BIOS
        !          2952: 
        !          2953:        devices.
        !          2954: 
        !          2955: bios.c, proc.h:
        !          2956: 
        !          2957:        Added binput and boutput arrays to allow for per-process redirection
        !          2958: 
        !          2959:        of BIOS device input and output to GEMDOS file handles.
        !          2960: 
        !          2961: biosfs.c:
        !          2962: 
        !          2963:        Changed "mdi" to "midi".
        !          2964: 
        !          2965:        WARNING: this change could (I suppose) break existing code.
        !          2966: 
        !          2967: util.c:
        !          2968: 
        !          2969:        Added a umalloc() function to allocate memory in user space,
        !          2970: 
        !          2971:        and modified the various sfirst routines to use this to
        !          2972: 
        !          2973:        allocate space for patterns instead of kmalloc.
        !          2974: 
        !          2975: dosdir.c,file.h:
        !          2976: 
        !          2977:        Added an FS_CASESENSITIVE flag to control conversion of file
        !          2978: 
        !          2979:        names to upper case for TOS domain processes.
        !          2980: 
        !          2981: dosdir.c, *fs.c:
        !          2982: 
        !          2983:        Made sfirst/snext functions take an extra argument, the length
        !          2984: 
        !          2985:        of the file name field in the DTA buffer (so that we can provide
        !          2986: 
        !          2987:        Xsfirst/Xsnext functions that can work with longer names)
        !          2988: 
        !          2989: mem.c:
        !          2990: 
        !          2991:        Fixed exec_region so that the close-on-exec flag works.
        !          2992: 
        !          2993: filesys.c:
        !          2994: 
        !          2995:        Made path2cookie take the name of the place to store the last
        !          2996: 
        !          2997:        component of the path name as an argument (instead of always
        !          2998: 
        !          2999:        storing it in the global variable temp1).
        !          3000: 
        !          3001: biosfs.c:
        !          3002: 
        !          3003:        Added code for O_NDELAY on bios devices.
        !          3004: 
        !          3005: tosfs.c:
        !          3006: 
        !          3007:        Cleaned up garbage collection a bit -- I hope this fixes the
        !          3008: 
        !          3009:        problems with running out of indices.
        !          3010: 
        !          3011: filesys.c:
        !          3012: 
        !          3013:        Returned the special parsing code for CON:, AUX:, etc.
        !          3014: 
        !          3015: file.h:
        !          3016: 
        !          3017:        OOPS! The flock structure was missing an element (l_whence). It
        !          3018: 
        !          3019:        was added.
        !          3020: 
        !          3021:        WARNING: This change may break existing code.
        !          3022: 
        !          3023: util.c:
        !          3024: 
        !          3025:        Made kmalloc take a long parameter, just in case installable
        !          3026: 
        !          3027:        file systems need lots of memory.
        !          3028: 
        !          3029: file.h, atarierr.h, pipefs.c:
        !          3030: 
        !          3031:        Made file modes compatible with _FLK specification. Also
        !          3032: 
        !          3033:        added the ELOCKED and ENSLOCK errors to atarierr.h, and made
        !          3034: 
        !          3035:        pipefs.c use ELOCKED instead of EACCDN.
        !          3036: 
        !          3037:        WARNING: this *will* break existing programs. In particular, mgr
        !          3038: 
        !          3039:        no longer works :-( because O_NDELAY has changed. (this was
        !          3040: 
        !          3041:        temporarily patched)
        !          3042: 
        !          3043: dos.c,dosfile.c:
        !          3044: 
        !          3045:        Added Flock() system call.
        !          3046: 
        !          3047: mem.c:
        !          3048: 
        !          3049:        Made the initial user stack pointer low enough so that syscall.s
        !          3050: 
        !          3051:        won't run into the end of memory if the user makes a system call
        !          3052: 
        !          3053:        right away and doesn't push many parameters (the code in syscall
        !          3054: 
        !          3055:        always tries to copy a large chunk of the caller's stack).
        !          3056: 
        !          3057: dosmem.c:
        !          3058: 
        !          3059:        Made vfork'd processes ignore job control signals (thanks to
        !          3060: 
        !          3061:        Stephen for pointing out how some shells rely on BSD's similar
        !          3062: 
        !          3063:        behaviour).
        !          3064: 
        !          3065: 
        !          3066: 
        !          3067: PATCHLEVEL3::
        !          3068: 
        !          3069: 
        !          3070: 
        !          3071: dosfile.c, file.h, *fs.c, bios.c:
        !          3072: 
        !          3073:        Changed f_select to use the new timeout mechanism, and provided
        !          3074: 
        !          3075:        routines in device drivers to wake up selecting processes.
        !          3076: 
        !          3077: proc.h:
        !          3078: 
        !          3079:        New queue, SELECT_Q, for processes doing "select", to match above
        !          3080: 
        !          3081:        changes
        !          3082: 
        !          3083: dos.c:
        !          3084: 
        !          3085:        Changed t_alarm to use the new timeout mechanism.
        !          3086: 
        !          3087: timeout.c,proc.h:
        !          3088: 
        !          3089:        Added a new "timeout" mechanism, so that processes can specify
        !          3090: 
        !          3091:        an action to be taken when a counter expires.
        !          3092: 
        !          3093: various places:
        !          3094: 
        !          3095:        Cleaned up TRACE and DEBUG output
        !          3096: 
        !          3097: proc.c:
        !          3098: 
        !          3099:        Set current directory based on the TOS current directory
        !          3100: 
        !          3101:        when MiNT is starting up.
        !          3102: 
        !          3103: debug.c:
        !          3104: 
        !          3105:        Added AKP's "trace" mode patch
        !          3106: 
        !          3107: filesys.c:
        !          3108: 
        !          3109:        Replaced strcmp() for . and .. with direct comparisons, again
        !          3110: 
        !          3111:        per AKP.
        !          3112: 
        !          3113: tosfs.c:
        !          3114: 
        !          3115:        Improved search performance a bit (indicies are now allocated
        !          3116: 
        !          3117:        at the beginning of the list, instead of at the end)
        !          3118: 
        !          3119: main.c, version.h:
        !          3120: 
        !          3121:        Introduced PATCHLEVEL for alpha and beta test versions  
        !          3122: 
        !          3123: util.c:
        !          3124: 
        !          3125:        Made kmalloc() try the kernel memory region first for small
        !          3126: 
        !          3127:        regions, to cut down fragmentation of the user's memory space
        !          3128: 
        !          3129: proc.h:
        !          3130: 
        !          3131:        Made the system stacks bigger, to compensate for the bigger
        !          3132: 
        !          3133:        contexts now that there's FPU support
        !          3134: 
        !          3135: dosmem.c:
        !          3136: 
        !          3137:        Fixed bug with Pexec mode 6 (thanks again, AKP)
        !          3138: 
        !          3139: biosfs.c:
        !          3140: 
        !          3141:        Changed FD0 to STDIN, FD1 to STDOUT, etc.
        !          3142: 
        !          3143:        WARNING: this change could break existing code
        !          3144: 
        !          3145: filesys.c:
        !          3146: 
        !          3147:        '/' is no longer a directory separator for MiNT domain processes
        !          3148: 
        !          3149:        (few were using it, and it simplifies things to be able to
        !          3150: 
        !          3151:        assume '\' is the only such separator).
        !          3152: 
        !          3153:        WARNING: this change could break existing code
        !          3154: 
        !          3155: all over the place:
        !          3156: 
        !          3157:        Changed the way directories/files are stored. We now have
        !          3158: 
        !          3159:        "file cookies" for directories, instead of strings. We
        !          3160: 
        !          3161:        also now have two directories per drive per process
        !          3162: 
        !          3163:        (a root and current).
        !          3164: 
        !          3165: minixfs.c:
        !          3166: 
        !          3167:        Removed from the main compile, and MINIX_FS symbol was also
        !          3168: 
        !          3169:        removed -- this will be a loadable file system someday
        !          3170: 
        !          3171:        (soon, I hope).
        !          3172: 
        !          3173: various places:
        !          3174: 
        !          3175:        Added Alex Kiernan's patches to support compilation under
        !          3176: 
        !          3177:        Lattice C v5
        !          3178: 
        !          3179: proc.h, context.s:
        !          3180: 
        !          3181:        Added Alex Kiernan's FPU co-processor patches. WARNING: this
        !          3182: 
        !          3183:        changes the layout of the proc structure in memory, and so
        !          3184: 
        !          3185:        breaks "ps" and similar programs.
        !          3186: 
        !          3187: proc.c:
        !          3188: 
        !          3189:        Changed sleep() to take the wait condition as an argument; this
        !          3190: 
        !          3191:        means that fewer things need to know the internals of the
        !          3192: 
        !          3193:        PROC structure
        !          3194: 
        !          3195: various places:
        !          3196: 
        !          3197:        Added AKP's T_TOSTOP flag changes
        !          3198: 
        !          3199: minixfs.c:
        !          3200: 
        !          3201:        Changed the 8K buffer in do_change to a static variable; our
        !          3202: 
        !          3203:        stacks aren't *that* big!
        !          3204: 
        !          3205: intr.s:
        !          3206: 
        !          3207:        Fixed a typo that was causing serious problems with the bus
        !          3208: 
        !          3209:        error and other exception codes on the TT (thanks for
        !          3210: 
        !          3211:        catching this, Allan).
        !          3212: 
        !          3213: dosmem.c,signal.c:
        !          3214: 
        !          3215:        Corrected the GEMDOS termination vector code (the system stack
        !          3216: 
        !          3217:        was being corrupted if the user's code returned). Thanks to
        !          3218: 
        !          3219:        Julian Reschke for catching this error.
        !          3220: 
        !          3221: ===========================================================================
        !          3222: 
        !          3223: version 0.8
        !          3224: 
        !          3225: 
        !          3226: 
        !          3227: biosfs.c, pipefs.c:
        !          3228: 
        !          3229:        fix ^C and ^Y to send the signals to the whole process group,
        !          3230: 
        !          3231:        and also to make sure processes don't read these keys if
        !          3232: 
        !          3233:        they're turned into signals
        !          3234: 
        !          3235: intr.s,dossig.c:
        !          3236: 
        !          3237:        fix exception handlers to be more careful about the distinction
        !          3238: 
        !          3239:        between being in or out of the kernel
        !          3240: 
        !          3241: intr.s, syscall.s, main.c:
        !          3242: 
        !          3243:        make sure interrupts are off before changing any vectors
        !          3244: 
        !          3245: bios.c:
        !          3246: 
        !          3247:        fixed the annoying problems with CTRL-ALT-Fx sometimes leaving
        !          3248: 
        !          3249:        keys in the buffer
        !          3250: 
        !          3251: signal.c:
        !          3252: 
        !          3253:        forced p_sigreturn() with no signal pending to unwind the
        !          3254: 
        !          3255:        *whole* signal stack, in case there were multiple signals
        !          3256: 
        !          3257:        pending at the time the user did a longjmp() (or whatever
        !          3258: 
        !          3259:        prompted the Psigreturn())
        !          3260: 
        !          3261: dosmem.c:
        !          3262: 
        !          3263:        p_wait3 now supports the WUNTRACED bit; if this isn't set,
        !          3264: 
        !          3265:        processes stopped due to job control are *not* returned
        !          3266: 
        !          3267: dosmem.c:
        !          3268: 
        !          3269:        removed dLibs kludge -- some programs rely on p_parent being
        !          3270: 
        !          3271:        non-zero to tell them that they're not accessories
        !          3272: 
        !          3273: various places:
        !          3274: 
        !          3275:        cleaned up job control stuff to be more Unix like
        !          3276: 
        !          3277: mem.c,util.c:
        !          3278: 
        !          3279:        added a new memory map for the kernel -- this should ease
        !          3280: 
        !          3281:        the problems with programs grabbing all of available memory
        !          3282: 
        !          3283: mem.c,dosmem.c:
        !          3284: 
        !          3285:        incorporated Allan's bugfixes; alternative RAM should work now
        !          3286: 
        !          3287: signal.c, main.c, intr.s:
        !          3288: 
        !          3289:        integrated signals with normal exceptions, so that e.g.
        !          3290: 
        !          3291:        a bus error raises SIGBUS. This improves the survivability
        !          3292: 
        !          3293:        of the kernel, so that a bus error resulting from a bad
        !          3294: 
        !          3295:        system call parameter won't kill MiNT, just the offending
        !          3296: 
        !          3297:        process.
        !          3298: 
        !          3299: proc.c:
        !          3300: 
        !          3301:        kludge to let low priority processes run every so often, even
        !          3302: 
        !          3303:        in the presence of a high priority process that is ready to run
        !          3304: 
        !          3305: atarierr.h:
        !          3306: 
        !          3307:        ENMFIL is -49, not -47 -- so much for Abacus' docs :-)
        !          3308: 
        !          3309: procfs.c:
        !          3310: 
        !          3311:        changes to allow read/write from process space
        !          3312: 
        !          3313: minixfs.[ch]:
        !          3314: 
        !          3315:        changed lots of function parameter types to avoid promotion and
        !          3316: 
        !          3317:        prototype problems with 32 bit code
        !          3318: 
        !          3319: bios.c:
        !          3320: 
        !          3321:        changed IOREC to IOREC_T to avoid name conflicts with some osbind.h
        !          3322: 
        !          3323: biosfs.c:
        !          3324: 
        !          3325:        made mouse driver change the line A mouse position variables, so MGR
        !          3326: 
        !          3327:        will work with bigscrn and similar large screen emulators
        !          3328: 
        !          3329: minixfs.c:
        !          3330: 
        !          3331:        new version from Stephen, now supports floppies and other removable
        !          3332: 
        !          3333:        media
        !          3334: 
        !          3335: mem.c, dosmem.c, dos.c:
        !          3336: 
        !          3337:        added code to support new TT TOS calls Mxalloc and Maddalt, plus
        !          3338: 
        !          3339:        program flags for loading/mallocing in alternate memory
        !          3340: 
        !          3341: bios.c,biosfs.c,dosfile.c:
        !          3342: 
        !          3343:        changed so that bios handles 0 and 1 can be redirected just like
        !          3344: 
        !          3345:        handle 2 (via the new file handles -3 and -2 respectively; AUX:
        !          3346: 
        !          3347:        and PRN: now refer to these files, and RS232 and CENTR to the
        !          3348: 
        !          3349:        physical devices)
        !          3350: 
        !          3351: dosdir.c:
        !          3352: 
        !          3353:        Dsetdrv() fixed to return an error indication when one happens
        !          3354: 
        !          3355: dos.c:
        !          3356: 
        !          3357:        fixed Super() bug (thanks Stephen)
        !          3358: 
        !          3359: minixfs.c:
        !          3360: 
        !          3361:        incorporated changes to handle 1K sector sizes
        !          3362: 
        !          3363: 
        !          3364: 
        !          3365: =============================================================================
        !          3366: 
        !          3367: version 0.7
        !          3368: 
        !          3369: 
        !          3370: 
        !          3371: minixfs.c:
        !          3372: 
        !          3373:        new file, courtesy of Stephen N. Henson ([email protected])
        !          3374: 
        !          3375:        this is still "under construction"; see minixfs.doc for more details
        !          3376: 
        !          3377: bios.c:
        !          3378: 
        !          3379:        CTRL-ALT-UNDO now raises SIGQUIT, for the benefit of people with
        !          3380: 
        !          3381:        foreign ROMs (some have trouble with ^\)
        !          3382: 
        !          3383: filesys.c:
        !          3384: 
        !          3385:        changed pathname resolution code so that multiple slashes in a file
        !          3386: 
        !          3387:        name have the same effect as single slashes. POSIX mandates this,
        !          3388: 
        !          3389:        and some Unix programs expect it, too
        !          3390: 
        !          3391: dosmem.c:
        !          3392: 
        !          3393:        changed do_vfork() code so that the text segment of processes is
        !          3394: 
        !          3395:        *not* saved in a fork() if the process has separate text, data, and
        !          3396: 
        !          3397:        bss segments; this saves a fair bit of memory
        !          3398: 
        !          3399: proc.c:
        !          3400: 
        !          3401:        changed the process initialization code to better deal with job
        !          3402: 
        !          3403:        control; also changed handle 2 to be AUX: (as under TOS) rather
        !          3404: 
        !          3405:        than PRN:
        !          3406: 
        !          3407: bios.c:
        !          3408: 
        !          3409:        added CTRL-ALT-F5 (show memory usage) and CTRL-ALT-F6
        !          3410: 
        !          3411:        (show processes)
        !          3412: 
        !          3413: filesys.c:
        !          3414: 
        !          3415:        make explicit the fact the individual file names are limited to
        !          3416: 
        !          3417:        14 characters
        !          3418: 
        !          3419: everywhere:
        !          3420: 
        !          3421:        change FILENAME_MAX to PATH_MAX
        !          3422: 
        !          3423: mem.c:
        !          3424: 
        !          3425:        fixed up comments and debugging/trace info for load_region
        !          3426: 
        !          3427: dossig.c:
        !          3428: 
        !          3429:        NEW SYSTEM CALL: Psigpending() returns the set of signals that
        !          3430: 
        !          3431:        have been sent to the process, but not yet delivered.
        !          3432: 
        !          3433: dos.c, dosdir.c:
        !          3434: 
        !          3435:        NEW SYSTEM CALLS:
        !          3436: 
        !          3437:        Sysconf(n) returns information about the global limits of the
        !          3438: 
        !          3439:        currently running version of MiNT
        !          3440: 
        !          3441:        Dpathconf(name, n) returns information about the file system that
        !          3442: 
        !          3443:        the file "name" is located on
        !          3444: 
        !          3445: bios.c:
        !          3446: 
        !          3447:        allow CTRL-ALT-C, CTRL-ALT-\, and CTRL-ALT-Z to force a SIGINT,
        !          3448: 
        !          3449:        SIGQUIT, or SIGTSTP, respectively, even if the terminal is in raw
        !          3450: 
        !          3451:        mode
        !          3452: 
        !          3453: various places:
        !          3454: 
        !          3455:        call zero() instead of bzero()
        !          3456: 
        !          3457: context.s,intr.s:
        !          3458: 
        !          3459:        changes to make MiNT TT compatible. Thanks to Allan Pratt for this!
        !          3460: 
        !          3461: biosfs.c, tosfs.c, pipefs.c, procfs.c:
        !          3462: 
        !          3463:        fsfirst/fsnext return all upper case in TOS domain now, but
        !          3464: 
        !          3465:        lower case (or mixed) in MiNT domain; this is to try to wean
        !          3466: 
        !          3467:        programmers off of the habit of assuming everything is upper case
        !          3468: 
        !          3469:        (and converting accordingly)
        !          3470: 
        !          3471: biosfs.c:
        !          3472: 
        !          3473:        made mouse compatible with TOS ALT-cursor keys (the Y direction was
        !          3474: 
        !          3475:        wrong before)
        !          3476: 
        !          3477: intr.s:
        !          3478: 
        !          3479:        IPL 7 before reboot (thanks, Allan)
        !          3480: 
        !          3481: version.h, main.c:
        !          3482: 
        !          3483:        made version numbering a bit easier (big deal)
        !          3484: 
        !          3485: main.c:
        !          3486: 
        !          3487:        AARGH! The cookie jar stuff was plain wrong (the last cookie should
        !          3488: 
        !          3489:        have the total number of slots, not just the ones that are free).
        !          3490: 
        !          3491: main.c:
        !          3492: 
        !          3493:        pass current environment along to init.prg, instead of forcing an
        !          3494: 
        !          3495:        empty environment
        !          3496: 
        !          3497: signal.c:
        !          3498: 
        !          3499:        corrected killpg() bug (wasn't checking signals, so the current
        !          3500: 
        !          3501:        process didn't get the signal until later)
        !          3502: 
        !          3503: mem.c, dosmem.c:
        !          3504: 
        !          3505:        made sure that all sizes would always be rounded to the nearest
        !          3506: 
        !          3507:        longword. Just in case they aren't, Malloc(-1L) rounds down to the
        !          3508: 
        !          3509:         next smallest longword.
        !          3510: 
        !          3511: lots of places:
        !          3512: 
        !          3513:        memory handling was overhauled completely; kmalloc now allocates
        !          3514: 
        !          3515:        memory from the same space as do m_alloc and p_exec, so there is
        !          3516: 
        !          3517:        no artificial constraint on the number of processes
        !          3518: 
        !          3519: ===========================================================================
        !          3520: 
        !          3521: version 0.6
        !          3522: 
        !          3523: 
        !          3524: 
        !          3525: dos.c:
        !          3526: 
        !          3527:        added Talarm() and Pause() system calls
        !          3528: 
        !          3529: bios.c, tty.c, pipefs.c:
        !          3530: 
        !          3531:        added real tty structures that programs can manipulate
        !          3532: 
        !          3533: proc.c:
        !          3534: 
        !          3535:        added some sanity checks for things like stack overflow
        !          3536: 
        !          3537: signal.c:
        !          3538: 
        !          3539:        revamped signal handling so that Psigreturn() no longer needs an
        !          3540: 
        !          3541:        argument.
        !          3542: 
        !          3543: dosmem.c:
        !          3544: 
        !          3545:        made Pexec'ing processes immune to SIGINT, SIGHUP, and SIGTSTP
        !          3546: 
        !          3547: intr.s:
        !          3548: 
        !          3549:        fixed the Psigreturn race condition bug
        !          3550: 
        !          3551: biosfs.c, pipefs.c, filesys.c, util.c:
        !          3552: 
        !          3553:        added case-insensitive string comparison routine, and modified the
        !          3554: 
        !          3555:        file systems to use it
        !          3556: 
        !          3557: bios.c, console.c:
        !          3558: 
        !          3559:        changed return values of status calls from 1 to -1, to be TOS
        !          3560: 
        !          3561:        compatible
        !          3562: 
        !          3563: dos.c:
        !          3564: 
        !          3565:        added new calls to get resource usage, and set resource limits
        !          3566: 
        !          3567: dosfile.c:
        !          3568: 
        !          3569:        added new call, f_select
        !          3570: 
        !          3571: signal.c:
        !          3572: 
        !          3573:        changed so stopped processes always have a return code of 0177
        !          3574: 
        !          3575: biosfs.c:
        !          3576: 
        !          3577:        added a fake "third button" on the mouse (you get it by holding down
        !          3578: 
        !          3579:        a shift key and a mouse button)
        !          3580: 
        !          3581:        made mouse_read return at least 1 byte
        !          3582: 
        !          3583: bios.c, proc.c, biosfs.c:
        !          3584: 
        !          3585:        added code to check for CTRL-ALT-key combinations on every
        !          3586: 
        !          3587:        process switch; thus, debugging, rebooting, etc. do not require
        !          3588: 
        !          3589:        waiting for a read from the keyboard. Also, ^C sends a SIGINT
        !          3590: 
        !          3591:        immediately, and ^Z (SIGTSTP) and ^\ (SIGQUIT) take effect
        !          3592: 
        !          3593:        right away, too.
        !          3594: 
        !          3595:        CTRL-ALT-DEL supported for TOS < 1.4
        !          3596: 
        !          3597: 
        !          3598: 
        !          3599: =========================================================================
        !          3600: 
        !          3601: version 0.5
        !          3602: 
        !          3603: 
        !          3604: 
        !          3605: First publically released version (made available for FTP as a beta test)
        !          3606: 
        !          3607: 
        !          3608: 

unix.superglobalmegacorp.com

This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.