Annotation of MiNT/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 1.04
        !             8: 
        !             9: 
        !            10: 
        !            11: bios.c:
        !            12: 
        !            13:        Changed the way timeout worked for Bconout() stuff.
        !            14: 
        !            15: proc.h:
        !            16: 
        !            17:        Increased the number of Fsfirst searches that can happen
        !            18: 
        !            19:        simultaneously to 10 from 6 (this is a per-process
        !            20: 
        !            21:        limit, not system wide).
        !            22: 
        !            23: 
        !            24: 
        !            25: version 1.03
        !            26: 
        !            27: 
        !            28: 
        !            29: xbios.c: [email protected]
        !            30: 
        !            31:        In old versions of TOS
        !            32: 
        !            33: dos.c:
        !            34: 
        !            35:        Changed Psetpgrp so that passing a pgrp of -1 makes it into
        !            36: 
        !            37:        an inquiry call.
        !            38: 
        !            39: filesys.c: [email protected]
        !            40: 
        !            41:        Fixed a bug in Flock (regions were being locked 1 byte too far).
        !            42: 
        !            43: mem.h:
        !            44: 
        !            45:        Changed the memory allocation quantum to 256 bytes, so that
        !            46: 
        !            47:        Srealloc will always work right on ST's.
        !            48: 
        !            49: 
        !            50: 
        !            51: version 1.02
        !            52: 
        !            53: 
        !            54: 
        !            55: main.c:
        !            56: 
        !            57:        Run any AUTO folder programs appearing after MINTNP.PRG
        !            58: 
        !            59:        as well as just plain MINT.PRG.
        !            60: 
        !            61: syscall.spp:
        !            62: 
        !            63:        Pop more stuff off the stack in sig_return, since we
        !            64: 
        !            65:        did push more onto it in handle_sig. (It really shouldn't
        !            66: 
        !            67:        matter, restore_context will restore the stack pointer
        !            68: 
        !            69:        anyway, but better safe than sorry.)
        !            70: 
        !            71: filesys.c,mem.c:
        !            72: 
        !            73:        Made the open file associated with shared text memory
        !            74: 
        !            75:        regions be closed automatically when a media change occurs.
        !            76: 
        !            77: xbios.c:
        !            78: 
        !            79:        Changed the do_usrcall function into an assembly language
        !            80: 
        !            81:        routine which preserves all registers. Apparently some
        !            82: 
        !            83:        programs rely on being able to pass parameters to Supexec
        !            84: 
        !            85:        in registers. We only used to kill register A0, which was
        !            86: 
        !            87:        reserved for BIOS use anyway, but obviously some programmers
        !            88: 
        !            89:        choose not to read the f'ing manual.
        !            90: 
        !            91: dosdir.c: [email protected]
        !            92: 
        !            93:        Fixed a typo (PATH_MAX where ERANGE should have been).
        !            94: 
        !            95: biosfs.c: [email protected]
        !            96: 
        !            97:        Check control keys on every newline, so users get quick response
        !            98: 
        !            99:        to their key hits.
        !           100: 
        !           101: tty.c: [email protected]
        !           102: 
        !           103:        Fixed a typo (t_startc is the character to use to resume terminal
        !           104: 
        !           105:        output, not t_stopc!)
        !           106: 
        !           107: dosdir.c,dosmem.c,filesys.c,tosfs.c: [email protected]
        !           108: 
        !           109:        Fixed many dup_cookie and release_cookie bugs; the code should be much
        !           110: 
        !           111:        more usable now.
        !           112: 
        !           113: main.c:
        !           114: 
        !           115:        Corrected a flaw in the 68030 only version -- it assumed that
        !           116: 
        !           117:        68030 was synonymous with memory protection. Also: set
        !           118: 
        !           119:        mcpu correctly.
        !           120: 
        !           121: main.c:
        !           122: 
        !           123:        Checked to see if we're called "MINTNP.PRG"; if so, turn off
        !           124: 
        !           125:        memory protection automatically. Commented out the code
        !           126: 
        !           127:        for automatically turning MP off on 1 meg machines.
        !           128: 
        !           129: 
        !           130: 
        !           131: version 1.01
        !           132: 
        !           133: 
        !           134: 
        !           135: main.c,intr.spp:
        !           136: 
        !           137:        Use init_tail for the temporary stack (saves us 128 bytes of bss,
        !           138: 
        !           139:        oh boy).
        !           140: 
        !           141: main.c:
        !           142: 
        !           143:        If less than 1 megabyte is free, turn off memory protection
        !           144: 
        !           145:        automatically.
        !           146: 
        !           147: mem.h:
        !           148: 
        !           149:        If there's no memory protection, do all ROUNDing etc. to
        !           150: 
        !           151:        16 byte boundaries rather than 8K page boundaries.
        !           152: 
        !           153: mem.c:
        !           154: 
        !           155:        Added a check for the ability to move screen RAM; evidently
        !           156: 
        !           157:        some boards use ST RAM but still don't allow Setscreen()
        !           158: 
        !           159:        to work.
        !           160: 
        !           161: all over the place: [email protected]
        !           162: 
        !           163:        Cleaned up the code for PureC compatibility.
        !           164: 
        !           165: all over the place: [email protected]
        !           166: 
        !           167:        Cleaned up the code for Lattice compatibility.
        !           168: 
        !           169: fasttext.c: [email protected]
        !           170: 
        !           171:        Sped up by special casing some of the gotoxy() calls, and
        !           172: 
        !           173:        also allowed 8 pixel high characters in monochrome mode.
        !           174: 
        !           175: dosdir.c: [email protected]
        !           176: 
        !           177:        Allow Frename() to succeed on symbolic links.
        !           178: 
        !           179: signal.c: [email protected]
        !           180: 
        !           181:        Save processor context stuf in the reserved BIOS area even for
        !           182: 
        !           183:        bus errors with memory protection on.
        !           184: 
        !           185: dosfile.c: [email protected]
        !           186: 
        !           187:        Initialize the exception file descriptors to 0, in anticipation
        !           188: 
        !           189:        of future use of this Fselect feature.
        !           190: 
        !           191: dosfile.c: [email protected]
        !           192: 
        !           193:        Allow pipes to be opened and written to with O_APPEND mode.
        !           194: 
        !           195: version.h:
        !           196: 
        !           197:        Got rid of the PATCHLEVEL define. Now that I've finally
        !           198: 
        !           199:        checked everything into RCS, it's much easier to just bump
        !           200: 
        !           201:        up the version numbers on each release.
        !           202: 
        !           203: 
        !           204: 
        !           205: version 1.00
        !           206: 
        !           207: 
        !           208: 
        !           209: welcome.c,version.h:
        !           210: 
        !           211:        Sigh. This is MultiTOS 1.0's MiNT, so even though I don't
        !           212: 
        !           213:        consider it "finished", I'm changing the version number to
        !           214: 
        !           215:        1.0. At least it's no worse than TOS 1.0 :-).
        !           216: 
        !           217: memprot.c:
        !           218: 
        !           219:        We want to flush the ATC cache, *not* the CPU cache. Thanks
        !           220: 
        !           221:        for pointing this out, Alex.
        !           222: 
        !           223: bios.c:
        !           224: 
        !           225:        Fixed a problem with Speedo GDOS; if the printer's buffer was
        !           226: 
        !           227:        full, Bconout(2,...) would do a context switch, which is not
        !           228: 
        !           229:        a good thing for Speedo.
        !           230: 
        !           231: 
        !           232: 
        !           233: version 0.99
        !           234: 
        !           235: 
        !           236: 
        !           237: PATCHLEVEL 2::
        !           238: 
        !           239: 
        !           240: 
        !           241: main.c:
        !           242: 
        !           243:        Big bug fix -- the do_exec_os routine was being called with a
        !           244: 
        !           245:        basepage that occupied all of memory, so that the Pexec(200) it
        !           246: 
        !           247:        did was failing due to insufficient memory. Now we Mshrink the
        !           248: 
        !           249:        basepage; this also necessitates fixing up the stack pointer.
        !           250: 
        !           251: main.c:
        !           252: 
        !           253:        Handle mint.cnf files that don't end in a carriage return/line feed
        !           254: 
        !           255:        combination.
        !           256: 
        !           257: filesys.c:
        !           258: 
        !           259:        New path parsing code to correct a bug in the way symbolic
        !           260: 
        !           261:        links were being handled on loadable file systems.
        !           262: 
        !           263: 
        !           264: 
        !           265: PATCHLEVEL 1::
        !           266: 
        !           267: 
        !           268: 
        !           269: debug.c:
        !           270: 
        !           271:        Made the default debugging level give ALERT messages.
        !           272: 
        !           273: dosfile.c:
        !           274: 
        !           275:        Corrected a bug in the way global file handles are closed.
        !           276: 
        !           277: 
        !           278: 
        !           279: PATCHLEVEL 0::
        !           280: 
        !           281: 
        !           282: 
        !           283: dosmem.c:
        !           284: 
        !           285:        Made it so that overlay Pexec modes (e.g. 200) set up
        !           286: 
        !           287:        the basepage to preserve the same "parent".
        !           288: 
        !           289: main.c:
        !           290: 
        !           291:        Added in a kludge so that if we're starting GEM from a file
        !           292: 
        !           293:        (e.g. gem.sys) then we do it via the exec_os vector. I hope
        !           294: 
        !           295:        this makes the Codeheads happy :-).
        !           296: 
        !           297: dosmem.c,tty.c:
        !           298: 
        !           299:        Backed out entropy's and schwab's changes. Random programs
        !           300: 
        !           301:        were getting stopped under MultiTOS because of them; I can't
        !           302: 
        !           303:        find the cause, so let's go back to something that worked
        !           304: 
        !           305:        (if suboptimally).
        !           306: 
        !           307: main.c:
        !           308: 
        !           309:        Fixed a silly initialization error: we should not
        !           310: 
        !           311:        assume a default language, we should get it from
        !           312: 
        !           313:        the ROMs.
        !           314: 
        !           315: dosdir.c: [email protected]
        !           316: 
        !           317:        Extended Dlock: if bit 1 of the mode is set, then the
        !           318: 
        !           319:        process id of the process using the drive is returned
        !           320: 
        !           321:        instead of ELOCKED or EACCDN; this allows for more
        !           322: 
        !           323:        informative error messages.
        !           324: 
        !           325: welcome.c:
        !           326: 
        !           327:        Updated the copyright notice.
        !           328: 
        !           329: 
        !           330: 
        !           331: version 0.98
        !           332: 
        !           333: 
        !           334: 
        !           335: PATCHLEVEL 4::
        !           336: 
        !           337: 
        !           338: 
        !           339: dosmem.c,tty.c: [email protected]
        !           340: 
        !           341:        Corrected some silliness in the job control code.
        !           342: 
        !           343: 
        !           344: 
        !           345: PATCHLEVEL 3::
        !           346: 
        !           347: 
        !           348: 
        !           349: xbios.c:
        !           350: 
        !           351:        Took out the ONLY030 optimization; it didn't work correctly
        !           352: 
        !           353:        (I can't see any reason why it shouldn't have worked, but
        !           354: 
        !           355:        it didn't; perhaps a compiler bug bit us?)
        !           356: 
        !           357: 
        !           358: 
        !           359: PATCHLEVEL 2::
        !           360: 
        !           361: 
        !           362: 
        !           363: main.c:
        !           364: 
        !           365:        Changed magic shift key to LEFT shift key.
        !           366: 
        !           367: filesys.c:
        !           368: 
        !           369:        Make loaded .XFS files go into supervisor accessible
        !           370: 
        !           371:        memory.
        !           372: 
        !           373: welcome.c,main.c:
        !           374: 
        !           375:        Ask user in her own language whether or not to boot if the
        !           376: 
        !           377:        kernel is a MultiTOS one and she held down the shift key.
        !           378: 
        !           379: filesys.c:
        !           380: 
        !           381:        Relax O_COMPAT mode opens somewhat so that any
        !           382: 
        !           383:        number of processes can open the file for reading,
        !           384: 
        !           385:        as long as no more than 1 has it open for writing.
        !           386: 
        !           387:        ALSO: make sure O_EXEC gets treated the same as O_RDONLY.
        !           388: 
        !           389: dosfile.c:
        !           390: 
        !           391:        Change TRACE() to TRACELOW() on Fread and Fwrite.
        !           392: 
        !           393: tosfs.c:
        !           394: 
        !           395:        Went back to old method of doing tosfs.c; this is
        !           396: 
        !           397:        better tested and safer.
        !           398: 
        !           399: dos.c:
        !           400: 
        !           401:        New system call, Salert(msg), for doing an alert message.
        !           402: 
        !           403: debug.c:
        !           404: 
        !           405:        Terminate messages written to the alert pipe with a 0.
        !           406: 
        !           407:        Also: pour them into alert boxes so that programs like
        !           408: 
        !           409:        sysalert don't have so much to do.
        !           410: 
        !           411: 
        !           412: 
        !           413: PATCHLEVEL 1::
        !           414: 
        !           415: 
        !           416: 
        !           417: fasttext.c: ++shenson
        !           418: 
        !           419:        Corrected the quote_putch function.
        !           420: 
        !           421: dosdir.c:
        !           422: 
        !           423:        Allow Dfree(n) to work if "n" is a big number (e.g. BIOSDRV)
        !           424: 
        !           425:        and the corresponding pseudo-drive is a current or root directory
        !           426: 
        !           427:        of the current process.
        !           428: 
        !           429: pipefs.c: [email protected]
        !           430: 
        !           431:        Return a new error number, EPIPE, for writes to broken pipes.
        !           432: 
        !           433: tty.c: [email protected]
        !           434: 
        !           435:        If a tty loses its owner, the next process to do i/o to it
        !           436: 
        !           437:        will become the owner.
        !           438: 
        !           439: dosfile.c: [email protected]
        !           440: 
        !           441:        FA_RDONLY doesn't mean "read only" on the process file system,
        !           442: 
        !           443:        so allow such processes to be opened for writing.
        !           444: 
        !           445: 
        !           446: 
        !           447: PATCHLEVEL 0::
        !           448: 
        !           449: 
        !           450: 
        !           451: xbios.c:
        !           452: 
        !           453:        Fixed Supexec to pass the function pointer on the stack, too
        !           454: 
        !           455:        (just as TOS does). This is still undocumented behaviour,
        !           456: 
        !           457:        so you rely on it at your own risk.
        !           458: 
        !           459: xbios.c: [email protected]
        !           460: 
        !           461:        Applied a fix for Rsconf() with TOS 1.04, and made the
        !           462: 
        !           463:        old TOS Rsconf stuff #ifndef ONLY030.
        !           464: 
        !           465: proc.c,dosmem.c:
        !           466: 
        !           467:        Wrap all calls to add_q/rm_q in spl7(), so that the
        !           468: 
        !           469:        wakeselect() function truly can be called from
        !           470: 
        !           471:        interrupt code.
        !           472: 
        !           473: makefile,*.spp:
        !           474: 
        !           475:        Make provisions for compiling an 030/040 only version
        !           476: 
        !           477:        of MiNT; this should be faster and smaller than the
        !           478: 
        !           479:        generic version.
        !           480: 
        !           481: version.h:
        !           482: 
        !           483:        The file system interface changes warrant a new version
        !           484: 
        !           485:        number, so here it is.
        !           486: 
        !           487: 
        !           488: 
        !           489: version 0.97
        !           490: 
        !           491: 
        !           492: 
        !           493: PATCHLEVEL 3::
        !           494: 
        !           495: 
        !           496: 
        !           497: dosdir.c,proc.c:
        !           498: 
        !           499:        Keep a chain of open directories, so that if a program
        !           500: 
        !           501:        terminates without calling closedir() we can still clean
        !           502: 
        !           503:        up after it. Also: allocate directory structures from
        !           504: 
        !           505:        kernel memory rather than user memory, so that we don't
        !           506: 
        !           507:        take an 8K hit on each one. PROBLEM: a bug in the mntlib
        !           508: 
        !           509:        readdir() function causes bus errors if memory protection
        !           510: 
        !           511:        is on. This is a library bug that needs to be fixed
        !           512: 
        !           513:        real soon now.
        !           514: 
        !           515: dosmem.c:
        !           516: 
        !           517:        TSRs now get forced into global memory if they were running
        !           518: 
        !           519:        privately; this should make things easier for users who
        !           520: 
        !           521:        forgot to change prgflags on their TSR programs.
        !           522: 
        !           523: filesys.c:
        !           524: 
        !           525:        New meaning for O_COMPAT mode: deny write access to all other
        !           526: 
        !           527:        processes.
        !           528: 
        !           529: tosfs.c:
        !           530: 
        !           531:        Added a define to turn on/off the RO_FASCISM code. Personally,
        !           532: 
        !           533:        I think it should always be on.
        !           534: 
        !           535: dosdir.c,filesys.c,file.h,*fs.c:
        !           536: 
        !           537:        New file system functions, release() and dupcookie(), so that
        !           538: 
        !           539:        the kernel can inform file systems when it is finished
        !           540: 
        !           541:        with a file cookie; networked file systems will be very
        !           542: 
        !           543:        happy about this.
        !           544: 
        !           545: 
        !           546: 
        !           547: PATCHLEVEL 2::
        !           548: 
        !           549: 
        !           550: 
        !           551: procfs.c:
        !           552: 
        !           553:        Moved the memory protection checks for proc_read and
        !           554: 
        !           555:        proc_write to a separate function in memprot.c.
        !           556: 
        !           557: dosfile.c:
        !           558: 
        !           559:        Remove the old compatibility code for Fcntl(F_SETFL,...).
        !           560: 
        !           561:        (Actually, it's commented out, so we can put it back in
        !           562: 
        !           563:        if we need to.)
        !           564: 
        !           565: signal.c:
        !           566: 
        !           567:        Change default behaviour for SIGFPE (which is raised
        !           568: 
        !           569:        by division by 0) to "ignore", same as TOS.
        !           570: 
        !           571: dosdir.c:
        !           572: 
        !           573:        Made Dgetcwd() use the new size parameter, so that it
        !           574: 
        !           575:        works as advertised.
        !           576: 
        !           577: file.h, *fs.c:
        !           578: 
        !           579:        Provide a "size" parameter for the getname() file system
        !           580: 
        !           581:        function, so that we can do Dgetpath() of arbitrary length
        !           582: 
        !           583:        paths.
        !           584: 
        !           585: util.c:
        !           586: 
        !           587:        BIG_MEM_DUMP is a nasty thing for users to get;
        !           588: 
        !           589:        so we shouldn't do it on all failed mallocs!
        !           590: 
        !           591: 
        !           592: 
        !           593: PATCHLEVEL 1::
        !           594: 
        !           595: 
        !           596: 
        !           597: proc.c:
        !           598: 
        !           599:        Plugged a memory leak (dispose_proc was failing to
        !           600: 
        !           601:        free the process table memory, because fork_proc
        !           602: 
        !           603:        was zeroing that field in the PROC structure).
        !           604: 
        !           605: main.c:
        !           606: 
        !           607:        Fixed MAXMEM= (it was setting the maximum CPU time,
        !           608: 
        !           609:        not the maximum memory -- I thought I tested this!)
        !           610: 
        !           611: 
        !           612: 
        !           613: PATCHLEVEL 0::
        !           614: 
        !           615: 
        !           616: 
        !           617: main.c:
        !           618: 
        !           619:        Added MAXMEM= and SLICES= variables for mint.cnf.
        !           620: 
        !           621: bios.c:
        !           622: 
        !           623:        Fixed Setexc so that if the new vector is in a global
        !           624: 
        !           625:        region, the region is re-marked to be super.
        !           626: 
        !           627: dosmem.c:
        !           628: 
        !           629:        Fixed a race condition with memory protection and
        !           630: 
        !           631:        Pexec(100,...) (if the new process exited early,
        !           632: 
        !           633:        the old process might still try to access it).
        !           634: 
        !           635: realloc.c:
        !           636: 
        !           637:        New file, for doing the Srealloc system call (for
        !           638: 
        !           639:        Falcon TOS).
        !           640: 
        !           641: *.*:
        !           642: 
        !           643:        Merged in Allan's memory protection and debugging
        !           644: 
        !           645:        code. New files: memprot.c, nalloc2.c, welcome.c.
        !           646: 
        !           647: 
        !           648: 
        !           649: version 0.96
        !           650: 
        !           651: 
        !           652: 
        !           653: PATCHLEVEL 14::
        !           654: 
        !           655: 
        !           656: 
        !           657: tosfs.c:
        !           658: 
        !           659:        Aaargh! Just after cutting this patch I discovered
        !           660: 
        !           661:        that I had the test backwards.
        !           662: 
        !           663: 
        !           664: 
        !           665: PATCHLEVEL 13::
        !           666: 
        !           667: 
        !           668: 
        !           669: tosfs.c:
        !           670: 
        !           671:        Changed so that Fsfirst()/Fsnext() always return
        !           672: 
        !           673:        upper case, regardless of domain. (MiNT aware
        !           674: 
        !           675:        programs should use the new directory functions.)
        !           676: 
        !           677: dosdir.c: ++akiernan
        !           678: 
        !           679:        Got rid of the special hack for drive x:, since
        !           680: 
        !           681:        drive x: no longer exists.
        !           682: 
        !           683: asm.y: ++akiernan
        !           684: 
        !           685:        Cleaned up a bit.
        !           686: 
        !           687: *.c: ++julian
        !           688: 
        !           689:        Some minor patches for PureC.
        !           690: 
        !           691: dosdir.c: ++julian
        !           692: 
        !           693:        New system call, Dgetcwd(), with a 'size' parameter;
        !           694: 
        !           695:        this doesn't do anything different from Dgetpath
        !           696: 
        !           697:        now, but it's there for future expansion.
        !           698: 
        !           699: 
        !           700: 
        !           701: PATCHLEVEL 12::
        !           702: 
        !           703: 
        !           704: 
        !           705: version.h:
        !           706: 
        !           707:        Update the patchlevel correctly.
        !           708: 
        !           709: pipefs.c,dosfile.c:
        !           710: 
        !           711:        Keep the Unix style semantics for pipes created with
        !           712: 
        !           713:        Fpipe, but not for other fifo's (which by default will
        !           714: 
        !           715:        continue to read the number of bytes requested).
        !           716: 
        !           717: 
        !           718: 
        !           719: PATCHLEVEL 11::
        !           720: 
        !           721: 
        !           722: 
        !           723: tty.c: ++schwab
        !           724: 
        !           725:        Support word-erase and quote-next-char.
        !           726: 
        !           727: fasttext.c: ++schwab
        !           728: 
        !           729:        support fgcol/bgcol
        !           730: 
        !           731:        (screen_ioctl): tty_ioctl is now called by parent by default if
        !           732: 
        !           733:        EINVFN
        !           734: 
        !           735: signal.c (check_sigs): ++schwab
        !           736: 
        !           737:        Use an int to index signals, not a long
        !           738: 
        !           739: biosfs.c (bios_getxattr): ++schwab
        !           740: 
        !           741:        u:\dev\stdin, etc., get the attributes of
        !           742: 
        !           743:        the associated files
        !           744: 
        !           745: dos.c (p_setuid, p_setgid): ++schwab
        !           746: 
        !           747:        Allow setting to the current real [gu]id
        !           748: 
        !           749: bios.c (checkkeys): [email protected]
        !           750: 
        !           751:        Keys read by do_func_key should not be
        !           752: 
        !           753:        interpreted (esp. UNDO -> SIGQUIT). also recheck shift status
        !           754: 
        !           755:        since do_func_key may take some time
        !           756: 
        !           757: xbios.c: [email protected]
        !           758: 
        !           759:        Added code to support old (tos < 1.4) Rsconf()
        !           760: 
        !           761:        semantics.
        !           762: 
        !           763: mem.c:
        !           764: 
        !           765:        Changed so that attempts to execute a shared text program
        !           766: 
        !           767:        which has data/bss references in the text segment will
        !           768: 
        !           769:        get an ENOEXEC error instead of ENSMEM.
        !           770: 
        !           771: *.c: [email protected]
        !           772: 
        !           773:        Applied Julian's purec patches.
        !           774: 
        !           775: 
        !           776: 
        !           777: PATCHLEVEL 10::
        !           778: 
        !           779: 
        !           780: 
        !           781: pipefs.c:
        !           782: 
        !           783:        Changed so that read() on a pipe will return as
        !           784: 
        !           785:        soon as some data is available; this is how
        !           786: 
        !           787:        all Unixes work.
        !           788: 
        !           789: *.c:
        !           790: 
        !           791:        Applied Julian's patches to allow compilation with
        !           792: 
        !           793:        PureC.
        !           794: 
        !           795: main.c:
        !           796: 
        !           797:        New variable, MAXMEM=, for setting maximum memory
        !           798: 
        !           799:        size (in K).
        !           800: 
        !           801: main.c:
        !           802: 
        !           803:        Removed PSEUDODRIVES= command, since "alias" has
        !           804: 
        !           805:        replaced it.
        !           806: 
        !           807: util.c:
        !           808: 
        !           809:        Changed atoi to atol; it's more generally useful.
        !           810: 
        !           811: asmtrans:
        !           812: 
        !           813:        Applied Howard's patches; in particular, made %ifdef
        !           814: 
        !           815:        apply to other commands (like %define) as well as to
        !           816: 
        !           817:        code generation.
        !           818: 
        !           819:        
        !           820: 
        !           821: PATCHLEVEL 9::
        !           822: 
        !           823: 
        !           824: 
        !           825: asmtrans:
        !           826: 
        !           827:        Cleaned up a bit more for cross-compilation.
        !           828: 
        !           829: intr.spp:
        !           830: 
        !           831:        in_kernel can be set while the process is in user mode
        !           832: 
        !           833:        (if the critical error handler calls GEM)
        !           834: 
        !           835: syscall.spp:
        !           836: 
        !           837:        Get rid of some more magic numbers.
        !           838: 
        !           839: bios.c:
        !           840: 
        !           841:        While fixing the mtt bug, a new bug was introduced. So,
        !           842: 
        !           843:        let's try again :-).
        !           844: 
        !           845: 
        !           846: 
        !           847: PATCHLEVEL 8::
        !           848: 
        !           849: 
        !           850: 
        !           851: bios.c:
        !           852: 
        !           853:        Fixed a particularly silly bug in bios.c: in do_bconin(),
        !           854: 
        !           855:        r was being returned without being initialized. Why didn't
        !           856: 
        !           857:        gcc catch this?
        !           858: 
        !           859: *.c:
        !           860: 
        !           861:        Applied Alex's patches for Lattice, and Julian's patches for
        !           862: 
        !           863:        Pure C.
        !           864: 
        !           865: signal.c:
        !           866: 
        !           867:        Kill programs with p_term() instead of terminate() (except for
        !           868: 
        !           869:        signal SIGKILL) so as to allow them a chance to clean up via
        !           870: 
        !           871:        the term_vec vector.
        !           872: 
        !           873: shmfs.c:
        !           874: 
        !           875:        Allow Fattrib() call to change the read-only
        !           876: 
        !           877:        bit. Made Fxattr() return the correct mode
        !           878: 
        !           879:        for shared memory files.
        !           880: 
        !           881: main.c, fasttext.c:
        !           882: 
        !           883:        Allowed HARDSCROLL=AUTO to set the number of
        !           884: 
        !           885:        lines of scrolling to the current screen size.
        !           886: 
        !           887: syscall.spp, inline.h:
        !           888: 
        !           889:        New functions, callout2() and callout1(), with
        !           890: 
        !           891:        less overhead; used by bios.c to call the
        !           892: 
        !           893:        Bconxxx functions.
        !           894: 
        !           895: bios.c:
        !           896: 
        !           897:        Changed calls to Bconxxx functions into
        !           898: 
        !           899:        jumps through the defined vector table in
        !           900: 
        !           901:        low memory, when this is possible (TOS 1.0
        !           902: 
        !           903:        doesn't have the table).
        !           904: 
        !           905: asmtrans, *.spp:
        !           906: 
        !           907:        Added %ifdef, %else, and %endif commands (for
        !           908: 
        !           909:        future expansion). Removed the requirement that
        !           910: 
        !           911:        macros to be expanded be delimited by % signs,
        !           912: 
        !           913:        and cleaned up the definitions. Changed
        !           914: 
        !           915:        "SECTION FOO" to "FOO". Added -purec compilation
        !           916: 
        !           917:        option.
        !           918: 
        !           919: filesys.c:
        !           920: 
        !           921:        Fixed a bug in changedrv (there was no
        !           922: 
        !           923:        check to see if "d" was a BIOS drive before
        !           924: 
        !           925:        aliasdrv[d] was tested).
        !           926: 
        !           927: 
        !           928: 
        !           929: PATCHLEVEL 7::
        !           930: 
        !           931: 
        !           932: 
        !           933: biosfs.c,fasttext.c:
        !           934: 
        !           935:        Fixed incorrect code that assumed TCURSON
        !           936: 
        !           937:        was 0.
        !           938: 
        !           939: makefile:
        !           940: 
        !           941:        Fixed Makefile to work with older versions
        !           942: 
        !           943:        of gmake, as well as generic make programs.
        !           944: 
        !           945: 
        !           946: 
        !           947: PATCHLEVEL 6::
        !           948: 
        !           949: 
        !           950: 
        !           951: *.s:
        !           952: 
        !           953:        Radical overhaul of how assembly language is
        !           954: 
        !           955:        handled. We now provide 2 utility programs,
        !           956: 
        !           957:        "genmagic" (for producing symbolic names for
        !           958: 
        !           959:        various offsets into structures) and "asmtrans"
        !           960: 
        !           961:        (for processing .spp files, replacing macros
        !           962: 
        !           963:        defined by "genmagic" and optionally translating
        !           964: 
        !           965:        Motorola to MIT syntax). Now we only have to
        !           966: 
        !           967:        maintain the .spp files; the Lattice and gcc
        !           968: 
        !           969:        versions of the .s files are generated automatically,
        !           970: 
        !           971:        and as a side benefit we can get rid of magic
        !           972: 
        !           973:        numbers in the .s files and be sure that if we
        !           974: 
        !           975:        change proc.h, the assembly language will be
        !           976: 
        !           977:        updated properly.
        !           978: 
        !           979: main.c,filesys.c,file.h:
        !           980: 
        !           981:        Added a new command to mint.cnf, "alias", to
        !           982: 
        !           983:        enable aliases for pseudo (and other) drives
        !           984: 
        !           985:        to be created. Also, deleted drives q:, v:, and
        !           986: 
        !           987:        x:. Programs should no longer be using these;
        !           988: 
        !           989:        if they are, users can put things like
        !           990: 
        !           991:        "alias q: u:\pipe" into mint.cnf.
        !           992: 
        !           993: file.h:
        !           994: 
        !           995:        Fixed the definitions for TCURSON and TCURSOFF.
        !           996: 
        !           997: console.c:
        !           998: 
        !           999:        Moved the handle checks in file_* functions into
        !          1000: 
        !          1001:        separate functions, since for example we *know*
        !          1002: 
        !          1003:        that handle 0 falls within the legal range; this
        !          1004: 
        !          1005:        should remove a bit of overhead on BIOS and
        !          1006: 
        !          1007:        single character GEMDOS I/O.
        !          1008: 
        !          1009: main.c:
        !          1010: 
        !          1011:        Got rid of the zeroexit() code; since we now
        !          1012: 
        !          1013:        allow the whole boot process to be aborted by
        !          1014: 
        !          1015:        right shift.
        !          1016: 
        !          1017: pipefs.c:
        !          1018: 
        !          1019:        Allow Cursconf() to work on TOSWIN pipes.
        !          1020: 
        !          1021: mem.c:
        !          1022: 
        !          1023:        Check the date and time of shared text regions
        !          1024: 
        !          1025:        before re-using them.
        !          1026: 
        !          1027: bios.c,syscall.s:
        !          1028: 
        !          1029:        Changed the trap #13 entry point to allow quick
        !          1030: 
        !          1031:        evaluation of BIOS functions that don't need
        !          1032: 
        !          1033:        the full context save/restore done.
        !          1034: 
        !          1035: everywhere:
        !          1036: 
        !          1037:        Macro-ize TRACE and DEBUG so that it's possible
        !          1038: 
        !          1039:        to produce a smaller version of MiNT without
        !          1040: 
        !          1041:        them.
        !          1042: 
        !          1043: biosfs.c:
        !          1044: 
        !          1045:        Don't check for keyboard presses after every
        !          1046: 
        !          1047:        BIOS write, it's too time consuming.
        !          1048: 
        !          1049: 
        !          1050: 
        !          1051: PATCHLEVEL 5::
        !          1052: 
        !          1053: 
        !          1054: 
        !          1055: mem.c:
        !          1056: 
        !          1057:        Another bug: we shouldn't do the dLibs Pexec
        !          1058: 
        !          1059:        hack on the first process we start up, because
        !          1060: 
        !          1061:        it means messing with the MiNT basepage (which
        !          1062: 
        !          1063:        is not ours to mess with, it's TOS's).
        !          1064: 
        !          1065: main.c:
        !          1066: 
        !          1067:        Fixed bug in enter_kernel (rootproc->base is no
        !          1068: 
        !          1069:        longer necessarily MiNT's basepage).
        !          1070: 
        !          1071: various places:
        !          1072: 
        !          1073:        Tried to remove gcc warnings about constant
        !          1074: 
        !          1075:        expression overflow.
        !          1076: 
        !          1077: syscall.s:
        !          1078: 
        !          1079:        Applied Alex's patch to allow trace mode to work
        !          1080: 
        !          1081:        with non-MiNT debuggers.
        !          1082: 
        !          1083: various places:
        !          1084: 
        !          1085:        Applied Alex's patches to get rid of Lattice warnings
        !          1086: 
        !          1087:        about unneeded assignments.
        !          1088: 
        !          1089: mem.c:
        !          1090: 
        !          1091:        Added extra traces to exec_region() in an effort to
        !          1092: 
        !          1093:        track down the mysterious crash problems that others
        !          1094: 
        !          1095:        have had.
        !          1096: 
        !          1097: 
        !          1098: 
        !          1099: PATCHLEVEL 4::
        !          1100: 
        !          1101: 
        !          1102: 
        !          1103: dosmem.c:
        !          1104: 
        !          1105:        Made do_vfork not bother to save shared text regions.
        !          1106: 
        !          1107: bios.c:
        !          1108: 
        !          1109:        Made Rwabs respect Dlock.
        !          1110: 
        !          1111: tosfs.c:
        !          1112: 
        !          1113:        Made the TOS media change routines lazier (actual
        !          1114: 
        !          1115:        disk access is deferred until the disk is next
        !          1116: 
        !          1117:        needed).
        !          1118: 
        !          1119: main.c:
        !          1120: 
        !          1121:        Applied Alex's patches for setenv.
        !          1122: 
        !          1123: everywhere:
        !          1124: 
        !          1125:        Applied Julian's patches for Pure/Turbo C. The
        !          1126: 
        !          1127:        resulting kernel doesn't actually work yet, but
        !          1128: 
        !          1129:        at least we don't get so many error messages when
        !          1130: 
        !          1131:        compiling. (Who needs lint when you have three
        !          1132: 
        !          1133:        fussy ANSI compilers?)
        !          1134: 
        !          1135: mint.h:
        !          1136: 
        !          1137:        Oops; we should have had #include "inline.h" here.
        !          1138: 
        !          1139: inline.h:
        !          1140: 
        !          1141:        Applied jrb's GCC patches, and Alex's Lattice patches.
        !          1142: 
        !          1143: 
        !          1144: 
        !          1145: PATCHLEVEL 3::
        !          1146: 
        !          1147: 
        !          1148: 
        !          1149: bios.c:
        !          1150: 
        !          1151:        Some optimizations in bflush(). I tried something like
        !          1152: 
        !          1153:        this before, but messed up the terminal output modes.
        !          1154: 
        !          1155:        Let's hope I got it right this time. Also:
        !          1156: 
        !          1157:        removed some dependencies on sizeof(int).
        !          1158: 
        !          1159: makefile:
        !          1160: 
        !          1161:        Tried -O2 instead of -O. It seems to work, so let's
        !          1162: 
        !          1163:        leave it on for now.
        !          1164: 
        !          1165: inline.h:
        !          1166: 
        !          1167:        New file to keep short, inlined versions of frequently
        !          1168: 
        !          1169:        called functions.
        !          1170: 
        !          1171: intr.s:
        !          1172: 
        !          1173:        Check the floppy disk locking flag before doing a
        !          1174: 
        !          1175:        pre-emption. Not really necessary now, but it doesn't
        !          1176: 
        !          1177:        hurt to be careful.
        !          1178: 
        !          1179: dosfile.c,*fs.c:
        !          1180: 
        !          1181:        Applied Alex's F_SETLKW patches. If Alex isn't careful,
        !          1182: 
        !          1183:        he's going to make MiNT Posix compliant on us :-).
        !          1184: 
        !          1185: dosmem.c:
        !          1186: 
        !          1187:        Applied Alex's patches to add a Pwaitpid system call.
        !          1188: 
        !          1189: main.c:
        !          1190: 
        !          1191:        If running from the AUTO folder, adjust the basepage
        !          1192: 
        !          1193:        chains so that MiNT is invisible to programs that
        !          1194: 
        !          1195:        (incorrectly!) make assumptions about basepages.
        !          1196: 
        !          1197: proc.c:
        !          1198: 
        !          1199:        Some optimizations in do_wakeup.
        !          1200: 
        !          1201: filesys.c:
        !          1202: 
        !          1203:        Don't call (*fs->dskchng)() twice when a disk
        !          1204: 
        !          1205:        change is detected.
        !          1206: 
        !          1207: main.c:
        !          1208: 
        !          1209:        Make sure the _resvalid system variable has the
        !          1210: 
        !          1211:        correct magic number in it for indicating that
        !          1212: 
        !          1213:        we want to catch the reset.
        !          1214: 
        !          1215: 
        !          1216: 
        !          1217: PATCHLEVEL 2::
        !          1218: 
        !          1219: 
        !          1220: 
        !          1221: dosdir.c:
        !          1222: 
        !          1223:        Really forbid deleting other process' current
        !          1224: 
        !          1225:        directories (the actual "return EACCDN" was missing!)
        !          1226: 
        !          1227: proc.c:
        !          1228: 
        !          1229:        Inlined the check_time() function, and re-arranged
        !          1230: 
        !          1231:        do_wakeup_things a bit to be more efficient.
        !          1232: 
        !          1233: syscall.s:
        !          1234: 
        !          1235:        Streamlined a bit; things are now kept in registers
        !          1236: 
        !          1237:        where possible.
        !          1238: 
        !          1239: filesys.c:
        !          1240: 
        !          1241:        When loading file systems at startup time, don't
        !          1242: 
        !          1243:        check the \MINT directory if that's the current one.
        !          1244: 
        !          1245: filesys.c:
        !          1246: 
        !          1247:        After a media change, instead of throwing away all
        !          1248: 
        !          1249:        handles that pointed to the changed drive, make
        !          1250: 
        !          1251:        them point to /dev/null instead, so that they
        !          1252: 
        !          1253:        won't be re-used until the user explicitly closes
        !          1254: 
        !          1255:        them.
        !          1256: 
        !          1257: dosdir.c:
        !          1258: 
        !          1259:        Allow Dlock() to succeed even if there is an
        !          1260: 
        !          1261:        unfinished Fsfirst/Fsnext sequence on the drive.
        !          1262: 
        !          1263: mem.c:
        !          1264: 
        !          1265:        Allow relocations outside of the program load area;
        !          1266: 
        !          1267:        apparently, some programs actually need these.
        !          1268: 
        !          1269: mem.c:
        !          1270: 
        !          1271:        Insert some sanity checks on memory addresses.
        !          1272: 
        !          1273: signal.c:
        !          1274: 
        !          1275:        Restart check_sigs if the process stopped because of
        !          1276: 
        !          1277:        a signal, since the parent may reset the set of
        !          1278: 
        !          1279:        pending signals.
        !          1280: 
        !          1281: cpu.s:
        !          1282: 
        !          1283:        New file from Alex, to control caching &c.
        !          1284: 
        !          1285: various places:
        !          1286: 
        !          1287:        More debugging patches from Alex, to make attaching
        !          1288: 
        !          1289:        to existing processes work correctly.
        !          1290: 
        !          1291: 
        !          1292: 
        !          1293: PATCHLEVEL 1::
        !          1294: 
        !          1295: 
        !          1296: 
        !          1297: various places:
        !          1298: 
        !          1299:        Cleaned up the debugging stuff a bit. For example, if a
        !          1300: 
        !          1301:        process does PTRACESFLAGS on itself, it's the same
        !          1302: 
        !          1303:        as if the parent did; also, if the process does a
        !          1304: 
        !          1305:        Pexec with overlay (i.e. Unix exec()) then it stops
        !          1306: 
        !          1307:        before its first instruction. This makes emulating
        !          1308: 
        !          1309:        the Unix ptrace() system call much easier.
        !          1310: 
        !          1311: 
        !          1312: 
        !          1313: PATCHLEVEL 0::
        !          1314: 
        !          1315: 
        !          1316: 
        !          1317: biosfs.c:
        !          1318: 
        !          1319:        Changed Fcntl TIOCISPEED/TIOCOSPEED to return the
        !          1320: 
        !          1321:        next lowest legal baud rate if an illegal one is
        !          1322: 
        !          1323:        specified.
        !          1324: 
        !          1325: filesys.c:
        !          1326: 
        !          1327:        Fix a bug that would cause an infinite loop if a
        !          1328: 
        !          1329:        bad .XFS format is encountered.
        !          1330: 
        !          1331: mem.c,mem.h,dosmem.c:
        !          1332: 
        !          1333:        Implemented shared text; if the appropriate bit
        !          1334: 
        !          1335:        (for now, 0x800) in the program header is set, then
        !          1336: 
        !          1337:        the loader will set up a shared text region for
        !          1338: 
        !          1339:        the program, and subsequent executions of it will
        !          1340: 
        !          1341:        run out of the same text segment. Note that this
        !          1342: 
        !          1343:        does require appropriate compiler support!
        !          1344: 
        !          1345: filesys.c:
        !          1346: 
        !          1347:        Fixed bug in the way directory searches are closed
        !          1348: 
        !          1349:        after a media change.
        !          1350: 
        !          1351: biosfs.c,intr.s:
        !          1352: 
        !          1353:        Applied Julian's third mouse button patch for
        !          1354: 
        !          1355:        /dev/mouse.
        !          1356: 
        !          1357: *.s:
        !          1358: 
        !          1359:        Applied Alex's debugging patches. Also: wrote a
        !          1360: 
        !          1361:        Motorola->MIT syntax converter, so that we only
        !          1362: 
        !          1363:        have to maintain the stuff in the "asm" directory.
        !          1364: 
        !          1365: signal.c,proc.h,procfs.c,etc.:
        !          1366: 
        !          1367:        Applied Alex's debugging patches, with a few
        !          1368: 
        !          1369:        slight modifications.
        !          1370: 
        !          1371: 
        !          1372: 
        !          1373: version 0.95
        !          1374: 
        !          1375: 
        !          1376: 
        !          1377: PATCHLEVEL14::
        !          1378: 
        !          1379: 
        !          1380: 
        !          1381: 
        !          1382: 
        !          1383: filesys.c:
        !          1384: 
        !          1385:        Check for the existence of the \MINT directory before
        !          1386: 
        !          1387:        trying to load .XFS files from there.
        !          1388: 
        !          1389: 
        !          1390: 
        !          1391: --- patchlevel 13 released to the public ---
        !          1392: 
        !          1393: 
        !          1394: 
        !          1395: PATCHLEVEL13::
        !          1396: 
        !          1397: 
        !          1398: 
        !          1399: proto.h,filesys.c:
        !          1400: 
        !          1401:        Added Alex's patches for Lattice.
        !          1402: 
        !          1403: 
        !          1404: 
        !          1405: PATCHLEVEL12::
        !          1406: 
        !          1407: 
        !          1408: 
        !          1409: dosdir.c:
        !          1410: 
        !          1411:        Fsnext() on symbolic links was broken, because
        !          1412: 
        !          1413:        relpath2cookie no longer checks drive letters
        !          1414: 
        !          1415:        unless "depth" is > 0. Fixed this. (why did
        !          1416: 
        !          1417:        we change relpath2cookie that way?? this is
        !          1418: 
        !          1419:        changed back in 0.99pl2)
        !          1420: 
        !          1421: main.c,filesys.c:
        !          1422: 
        !          1423:        Added support for putting the mint.cnf file
        !          1424: 
        !          1425:        and any *.XFS files into the directory \mint.
        !          1426: 
        !          1427: dos.c:
        !          1428: 
        !          1429:        Added Pgeteuid() and Pgetegid() system calls.
        !          1430: 
        !          1431: main.c:
        !          1432: 
        !          1433:        Fixed the "set current directory" code to
        !          1434: 
        !          1435:        work properly.
        !          1436: 
        !          1437: main.c:
        !          1438: 
        !          1439:        Added a sanity check; if GEM is already running,
        !          1440: 
        !          1441:        don't try to run it again.
        !          1442: 
        !          1443: procfs.c:
        !          1444: 
        !          1445:        Added FIONWRITE and FIONREAD ioctl calls.
        !          1446: 
        !          1447: proc.c,bios.c:
        !          1448: 
        !          1449:        Fixed the type of the critical error handler.
        !          1450: 
        !          1451: dosfile.c,file.h,proc.c:
        !          1452: 
        !          1453:        Added Alex's patches for O_APPEND and O_NOINHERIT.
        !          1454: 
        !          1455: shmfs.c:
        !          1456: 
        !          1457:        Fixed lseek() on shared memory segments, and added
        !          1458: 
        !          1459:        FIONWRITE and FIONREAD ioctl calls.
        !          1460: 
        !          1461: fasttext.c:
        !          1462: 
        !          1463:        Tried once again to tame the wild cursor.
        !          1464: 
        !          1465: dosmem.c,proc.c:
        !          1466: 
        !          1467:        Modified process startup code so that PROC structures are no
        !          1468: 
        !          1469:        longer kept forever by the kernel (which should help alleviate
        !          1470: 
        !          1471:        memory fragmentation problems a bit).
        !          1472: 
        !          1473: 
        !          1474: 
        !          1475: PATCHLEVEL11::
        !          1476: 
        !          1477: 
        !          1478: 
        !          1479: dosmem.c:
        !          1480: 
        !          1481:        Applied Alex Kiernan's SIGTRAP bug fix (and kicked myself for
        !          1482: 
        !          1483:        forgetting C's precedence rules; thanks, Alex!).
        !          1484: 
        !          1485: filesys.c:
        !          1486: 
        !          1487:        Fixed relpath2cookie so that names like "C:\Z:" aren't
        !          1488: 
        !          1489:        interpreted as referring to drive Z:.
        !          1490: 
        !          1491: fasttext.c:
        !          1492: 
        !          1493:        Restored the "turn on cursor when opening()" code, because
        !          1494: 
        !          1495:        without it the fasttext driver and BIOS aren't in sync.
        !          1496: 
        !          1497: main.c:
        !          1498: 
        !          1499:        Moved the check for the presence of an already existing MiNT
        !          1500: 
        !          1501:        cookie to earlier in the initialization process, so that
        !          1502: 
        !          1503:        the error message can be printed properly.
        !          1504: 
        !          1505: shmfs.c:
        !          1506: 
        !          1507:        Fixed Dpathconf() on U:\SHM (filenames are truncated automatically
        !          1508: 
        !          1509:        on that file system) and corrected the comment there.
        !          1510: 
        !          1511: syscall.s:
        !          1512: 
        !          1513:        New function, call_aes, used to check for the presence of GEM
        !          1514: 
        !          1515:        (so we can tell whether or not we're running from the AUTO folder).
        !          1516: 
        !          1517: main.c:
        !          1518: 
        !          1519:        Run any programs which come after mint.prg in the AUTO
        !          1520: 
        !          1521:        folder.
        !          1522: 
        !          1523: version.h:
        !          1524: 
        !          1525:        Changed so that the patchlevel is always printed on boot-up.
        !          1526: 
        !          1527: 
        !          1528: 
        !          1529: PATCHLEVEL10::
        !          1530: 
        !          1531: 
        !          1532: 
        !          1533: unifs.c:
        !          1534: 
        !          1535:        Add U:\SHM as an interface for shared memory.
        !          1536: 
        !          1537: shmfs.c:
        !          1538: 
        !          1539:        New file system for doing shared memory.
        !          1540: 
        !          1541: xbios.c:
        !          1542: 
        !          1543:        Fixed Bconmap() to always return an error if the underlying
        !          1544: 
        !          1545:        TOS doesn't support Bconmap.
        !          1546: 
        !          1547: main.c:
        !          1548: 
        !          1549:        Fixed a bug in the argument parsing code for the "exec"
        !          1550: 
        !          1551:        command in mint.cnf.
        !          1552: 
        !          1553: dosdir.c:
        !          1554: 
        !          1555:        Changed Dlock() to return ELOCKED if an attempt is made to
        !          1556: 
        !          1557:        lock a drive that's already locked, and ENSLOCK if an attempt
        !          1558: 
        !          1559:        is made to remove a non-existent lock.
        !          1560: 
        !          1561: version.h:
        !          1562: 
        !          1563:        I forgot again to update this. Aargh!
        !          1564: 
        !          1565: 
        !          1566: 
        !          1567: PATCHLEVEL9::
        !          1568: 
        !          1569: 
        !          1570: 
        !          1571: mem.c,mem.h:
        !          1572: 
        !          1573:        Align everything on 16 byte boundaries.
        !          1574: 
        !          1575: mem.c,dosmem.c:
        !          1576: 
        !          1577:        Actually fix the "memory being allocated twice" bug.
        !          1578: 
        !          1579:        The problem was that setting m->links to 0 before calling
        !          1580: 
        !          1581:        attach_region was a no-no.
        !          1582: 
        !          1583: 
        !          1584: 
        !          1585: PATCHLEVEL8::
        !          1586: 
        !          1587: 
        !          1588: 
        !          1589: mem.c:
        !          1590: 
        !          1591:        Attempt to fix the strange "memory being allocated
        !          1592: 
        !          1593:        twice" bug.
        !          1594: 
        !          1595: tosfs.c:
        !          1596: 
        !          1597:        Truncating names at 14 characters came *before* the
        !          1598: 
        !          1599:        8.3 kludge, which meant that long names were being
        !          1600: 
        !          1601:        interpreted incorrectly (e.g. gcc-cc1plus.ttp was
        !          1602: 
        !          1603:        becoming "gcc-cc1p.tt"). Temporary kludge: only
        !          1604: 
        !          1605:        truncate at 32 characters. Long term solution:
        !          1606: 
        !          1607:        re-write this code to do the 8.3 truncation at the
        !          1608: 
        !          1609:        same time as the truncation.
        !          1610: 
        !          1611: main.c, proc.h:
        !          1612: 
        !          1613:        Provide a more explicit type for criticerr.
        !          1614: 
        !          1615: proc.c:
        !          1616: 
        !          1617:        Don't make _logbase per-process if hardware scrolling
        !          1618: 
        !          1619:        is active, since this makes for all kinds of weirdness!
        !          1620: 
        !          1621: mem.c:
        !          1622: 
        !          1623:        Allow NULL commandline to be the same as an empty
        !          1624: 
        !          1625:        string. (It was acting this way before, due to the MiNT
        !          1626: 
        !          1627:        library strncpy; now that we use our own strncpy some
        !          1628: 
        !          1629:        programs were passing funny arguments.)
        !          1630: 
        !          1631: dosmem.c:
        !          1632: 
        !          1633:        Provide a more detailed trace of Pexec activity.
        !          1634: 
        !          1635: mem.c:
        !          1636: 
        !          1637:        Added a sanity check in get_region().
        !          1638: 
        !          1639: proc.c:
        !          1640: 
        !          1641:        Set the time/date stamp of process 0 to the
        !          1642: 
        !          1643:        date & time when the system was booted.
        !          1644: 
        !          1645: fasttext.c:
        !          1646: 
        !          1647:        Commented out the code that turns the cursor
        !          1648: 
        !          1649:        on when u:\dev\fasttext is opened.
        !          1650: 
        !          1651: tty.c:
        !          1652: 
        !          1653:        Unsigned characters are always >= 0, so we
        !          1654: 
        !          1655:        don't need to check this.
        !          1656: 
        !          1657: 
        !          1658: 
        !          1659: PATCHLEVEL7::
        !          1660: 
        !          1661: 
        !          1662: 
        !          1663: makefile.lcc,mintlc.prj:
        !          1664: 
        !          1665:        Added Alex's patches.
        !          1666: 
        !          1667: assert.h:
        !          1668: 
        !          1669:        Added Alex's patch to cast the result to void.
        !          1670: 
        !          1671: filesys.c:
        !          1672: 
        !          1673:        Make sure the file system media change routine
        !          1674: 
        !          1675:        is called every time a disk change is forced;
        !          1676: 
        !          1677:        this corrects the Dlock() bug (it wasn't forcing
        !          1678: 
        !          1679:        media change as it should have).
        !          1680: 
        !          1681: version.h:
        !          1682: 
        !          1683:        Oops! I forgot to increment this for pl6, so
        !          1684: 
        !          1685:        it jumps by 2 this time.
        !          1686: 
        !          1687: 
        !          1688: 
        !          1689: PATCHLEVEL6::
        !          1690: 
        !          1691: 
        !          1692: 
        !          1693: biosfs.c,pipefs.c,tty.c:
        !          1694: 
        !          1695:        New Fcntl calls for controlling terminal baud
        !          1696: 
        !          1697:        rates and flags such as parity and stop bits.
        !          1698: 
        !          1699:        These have been integrated with the old TIOC*
        !          1700: 
        !          1701:        calls where applicable.
        !          1702: 
        !          1703: dosfile.c:
        !          1704: 
        !          1705:        Changed Fcntl to make a call to tty_ioctl be the
        !          1706: 
        !          1707:        default if the device is a terminal and the device
        !          1708: 
        !          1709:        ioctl routine returns EINVFN.
        !          1710: 
        !          1711: procfs.c, proc.c:
        !          1712: 
        !          1713:        The date/time stamp of a process now shows when the
        !          1714: 
        !          1715:        process was started, rather than being the number
        !          1716: 
        !          1717:        of seconds of CPU time used.
        !          1718: 
        !          1719: tosfs.c:
        !          1720: 
        !          1721:        Degrade an ALERT to a TRACE; there is a circumstance
        !          1722: 
        !          1723:        in which a root directory can apparently be changed,
        !          1724: 
        !          1725:        and that's when a program tries to open an empty
        !          1726: 
        !          1727:        file name. We don't need to warn the user that
        !          1728: 
        !          1729:        something is wrong in this case; we can just fail
        !          1730: 
        !          1731:        silently.
        !          1732: 
        !          1733: proc.c:
        !          1734: 
        !          1735:        Save the logical screen base for each process.
        !          1736: 
        !          1737: main.c,bios.c,proc.h:
        !          1738: 
        !          1739:        Made the critical error handler per-process.
        !          1740: 
        !          1741: bios.c,syscall.s:
        !          1742: 
        !          1743:        A cleaner way of saving registers when calling
        !          1744: 
        !          1745:        functions... this wasn't really necessary, but I
        !          1746: 
        !          1747:        did it to make tracking a bug down easier.
        !          1748: 
        !          1749: tty.c:
        !          1750: 
        !          1751:        New terminal flag, T_NOFLUSH, to suppress flushing of
        !          1752: 
        !          1753:        input when SIGINT or SIGQUIT is received.
        !          1754: 
        !          1755: *fs.c, file.h:
        !          1756: 
        !          1757:        Added a new Dpathconf() option that tells whether or
        !          1758: 
        !          1759:        not a file system is case sensitive.
        !          1760: 
        !          1761: dos.c:
        !          1762: 
        !          1763:        Forbid Prenice() on processes that you don't own.
        !          1764: 
        !          1765: dosmem.c:
        !          1766: 
        !          1767:        Correct a typo that was causing terminal process groups
        !          1768: 
        !          1769:        to be incorrectly set.
        !          1770: 
        !          1771: 
        !          1772: 
        !          1773: PATCHLEVEL5::
        !          1774: 
        !          1775: 
        !          1776: 
        !          1777: makefile:
        !          1778: 
        !          1779:        The -DOWN_LIB declaration should have been on (actually,
        !          1780: 
        !          1781:        it was, in my copy... sorry for the mix-up).
        !          1782: 
        !          1783: fasttext.c:
        !          1784: 
        !          1785:        Applied Alex's patch for the disappearing cursor bug.
        !          1786: 
        !          1787: everywhere:
        !          1788: 
        !          1789:        Applied Alex's patches to add "const" declarations where
        !          1790: 
        !          1791:        appropriate, and to get rid of size_t (since if OWN_LIB
        !          1792: 
        !          1793:        is defined we use "int" instead).
        !          1794: 
        !          1795: dosmem.c:
        !          1796: 
        !          1797:        Fixed M_KEEP to attach memory to rootproc *only* at
        !          1798: 
        !          1799:        process termination.
        !          1800: 
        !          1801: 
        !          1802: 
        !          1803: 
        !          1804: 
        !          1805: PATCHLEVEL4::
        !          1806: 
        !          1807: 
        !          1808: 
        !          1809: proto.h:
        !          1810: 
        !          1811:        Added prototype for do_func_key().
        !          1812: 
        !          1813: everywhere:
        !          1814: 
        !          1815:        Applied apratt's debugging/trace patches.
        !          1816: 
        !          1817: 
        !          1818: 
        !          1819: PATCHLEVEL3::
        !          1820: 
        !          1821: 
        !          1822: 
        !          1823: xbios.c, biosfs.c:
        !          1824: 
        !          1825:        Change Bconmap to actually do the equivalent of an
        !          1826: 
        !          1827:        Fforce(-2, foo) call; this way, we don't need the
        !          1828: 
        !          1829:        ugly DFLTMODM kludge. (On the other hand, we introduce
        !          1830: 
        !          1831:        some new ugly kludges :-)).
        !          1832: 
        !          1833: main.c,proc.c:
        !          1834: 
        !          1835:        Wait until everything is initialized before opening
        !          1836: 
        !          1837:        devices; this avoids bogus critical error messages from
        !          1838: 
        !          1839:        AHDI.
        !          1840: 
        !          1841: util.c, mint.h, ctype.h:
        !          1842: 
        !          1843:        Add all sorts of utility routines (for string processing,
        !          1844: 
        !          1845:        character type recognition, and the like). This is
        !          1846: 
        !          1847:        designed to make sure that MiNT works the same regardless
        !          1848: 
        !          1849:        of what library is used to compile it. We're not quite
        !          1850: 
        !          1851:        totally independent of library yet (the startup code and
        !          1852: 
        !          1853:        <osbind.h> aren't replaced) but we're pretty close.
        !          1854: 
        !          1855: main.c, proc.c:
        !          1856: 
        !          1857:        Initialize the current directory for the root
        !          1858: 
        !          1859:        process *after* file systems have been loaded, since
        !          1860: 
        !          1861:        otherwise the info is nuked when a new fs is loaded in.
        !          1862: 
        !          1863: bios.c:
        !          1864: 
        !          1865:        Allow output to BIOS device 5 to be redirected along
        !          1866: 
        !          1867:        with BIOS device 2; we do this by using the MW
        !          1868: 
        !          1869:        ESC-Q control sequence to quote characters. A bit of
        !          1870: 
        !          1871:        a hack, but then, not many people use device 5.
        !          1872: 
        !          1873: quickmov.s:
        !          1874: 
        !          1875:        Fixed two bugs in quickmove: (1) it didn't work for
        !          1876: 
        !          1877:        regions bigger than 0x00fffe00 bytes in length,
        !          1878: 
        !          1879:        and (2) it assumed the length was a multiple of 4
        !          1880: 
        !          1881:        bytes.
        !          1882: 
        !          1883: fasttext.c:
        !          1884: 
        !          1885:        Re-arrange things a bit to get rid of a gcc 2.1 warning.
        !          1886: 
        !          1887: dosmem.c:
        !          1888: 
        !          1889:        Change flag 0x4000 to mean "don't free the memory
        !          1890: 
        !          1891:        automatically on process termination"; explicit
        !          1892: 
        !          1893:        Mfree requests are still allowed, and after
        !          1894: 
        !          1895:        termination *any* process may Mfree the memory.
        !          1896: 
        !          1897: 
        !          1898: 
        !          1899: PATCHLEVEL2::
        !          1900: 
        !          1901: 
        !          1902: 
        !          1903: makefile:
        !          1904: 
        !          1905:        Remove -fcombine-regs from CFLAGS, since gcc 2.1
        !          1906: 
        !          1907:        doesn't understand it.
        !          1908: 
        !          1909: bios.c:
        !          1910: 
        !          1911:        Ignore value returned by Bconout for the screen
        !          1912: 
        !          1913:        (many text accelerators get this wrong :-( ).
        !          1914: 
        !          1915: dossig.c, signal.h:
        !          1916: 
        !          1917:        New system call, Psigaction(), by AGK. 
        !          1918: 
        !          1919: xbios.c:
        !          1920: 
        !          1921:        Added support for Bconmap.
        !          1922: 
        !          1923: bios.c, biosfs.c:
        !          1924: 
        !          1925:        Rationalized the way biosfs and bios interact;
        !          1926: 
        !          1927:        no more funny device numbers are needed. Also:
        !          1928: 
        !          1929:        added support for Bconmap, and a new default
        !          1930: 
        !          1931:        modem device.
        !          1932: 
        !          1933: pipefs.c:
        !          1934: 
        !          1935:        Applied Michael Hohmuth's patch for pipe_close (thanks,
        !          1936: 
        !          1937:        Michael!)
        !          1938: 
        !          1939: filesys.c:
        !          1940: 
        !          1941:        Don't try to initialize all the drives at boot time; path2cookie
        !          1942: 
        !          1943:        is quite capable of initializing, and it saves having
        !          1944: 
        !          1945:        to access drive B: (for example) while booting is going
        !          1946: 
        !          1947:        on.
        !          1948: 
        !          1949: main.c:
        !          1950: 
        !          1951:        Allow the user to avoid booting MiNT if the right shift key
        !          1952: 
        !          1953:        is held down.
        !          1954: 
        !          1955: main.c:
        !          1956: 
        !          1957:        Added safety checking, as suggested by AKP.
        !          1958: 
        !          1959: dosmem.c:
        !          1960: 
        !          1961:        In Mxalloc, if (mode & 0x4000) is nonzero then allocate non-freeable
        !          1962: 
        !          1963:        memory (we do this by attaching the memory to the root process).
        !          1964: 
        !          1965: fasttext.c:
        !          1966: 
        !          1967:        Tabs should be non-destructive on the ST!
        !          1968: 
        !          1969: proc.h:
        !          1970: 
        !          1971:        Re-arranged some things. Note that "slices" was never supposed
        !          1972: 
        !          1973:        to be visible to users! Also, added a "bconmap" variable to
        !          1974: 
        !          1975:        give the current Bconmap mapping for the process.
        !          1976: 
        !          1977: dosdir.c:
        !          1978: 
        !          1979:        Fail Ddelete of current directories only on the current
        !          1980: 
        !          1981:        drive; for other drives, reset the current directory
        !          1982: 
        !          1983:        to the root directory. NOTE: Ddelete of a current directory
        !          1984: 
        !          1985:        is forbidden only if the directory is someone else's
        !          1986: 
        !          1987:        current directory; if it's only your current dir., you
        !          1988: 
        !          1989:        can delete it (and get automatically bumped back to
        !          1990: 
        !          1991:        root).
        !          1992: 
        !          1993: 
        !          1994: 
        !          1995: PATCHLEVEL1::
        !          1996: 
        !          1997: 
        !          1998: 
        !          1999: dosmem.c:
        !          2000: 
        !          2001:        Fixed a bug that caused processes with no '.' in their names
        !          2002: 
        !          2003:        to have the wrong process name.
        !          2004: 
        !          2005: dosmem.c:
        !          2006: 
        !          2007:        In Pexec, make sure we yield to the new process so that
        !          2008: 
        !          2009:        it gets at least one timeslice to do an Mshrink().
        !          2010: 
        !          2011: proc.c:
        !          2012: 
        !          2013:        In preempt(), don't punish processes that have buffered
        !          2014: 
        !          2015:        BIOS output and are preempted; the process of flushing the
        !          2016: 
        !          2017:        buffer may very well put them to sleep, and in any event
        !          2018: 
        !          2019:        processes doing I/O should not be considered "hogs".
        !          2020: 
        !          2021: tosfs.c:
        !          2022: 
        !          2023:        Don't look for volume labels in opendir/readdir/lookup etc.
        !          2024: 
        !          2025: main.c:
        !          2026: 
        !          2027:        AGK: added DEBUG_LEVEL and DEBUG_DEVNO options to mint.cnf.
        !          2028: 
        !          2029: dossig.c:
        !          2030: 
        !          2031:        New system call (Psigpause()) courtesy of Alex Kiernan.
        !          2032: 
        !          2033: dosmem.c:
        !          2034: 
        !          2035:        In Pexec(200,...), don't reset base->p_parent, since the
        !          2036: 
        !          2037:        "parent" in an overlay exec is oneself.
        !          2038: 
        !          2039: tty.c:
        !          2040: 
        !          2041:        Fixed so that RAW mode reads will return all of an
        !          2042: 
        !          2043:        extended escape sequence at once, rather than waiting
        !          2044: 
        !          2045:        for the next read.
        !          2046: 
        !          2047: dosmem.c:
        !          2048: 
        !          2049:        When terminating a process, make sure that it's "number of
        !          2050: 
        !          2051:        memory regions" is set to 0; otherwise, calls to memused()
        !          2052: 
        !          2053:        on the process (e.g. by procfs) can crash the system.
        !          2054: 
        !          2055: dosdir.c:
        !          2056: 
        !          2057:        When removing directories, make sure that the directory
        !          2058: 
        !          2059:        isn't in use as someone's current directory (so that
        !          2060: 
        !          2061:        they don't get left in limbo).
        !          2062: 
        !          2063: fasttext.c:
        !          2064: 
        !          2065:        Screen memory must come from ST RAM -- otherwise hardware
        !          2066: 
        !          2067:        scrolling crashes and burns. Fixed thanks to AGK.
        !          2068: 
        !          2069: xbios.c:
        !          2070: 
        !          2071:        Moved the prototype for midiws to proto.h, and corrected the
        !          2072: 
        !          2073:        type of its argument (it should have been "int", not "short").
        !          2074: 
        !          2075: 
        !          2076: 
        !          2077: PATCHLEVEL0::
        !          2078: 
        !          2079: 
        !          2080: 
        !          2081: bios.c:
        !          2082: 
        !          2083:        Terminal modes weren't being set correctly in Bconout, and also
        !          2084: 
        !          2085:        weren't being set in bflush (which should have employed RAW
        !          2086: 
        !          2087:        mode output, but didn't).
        !          2088: 
        !          2089: everywhere:
        !          2090: 
        !          2091:        Merged in Alex Kiernan's latest Lattice C patches.
        !          2092: 
        !          2093: 
        !          2094: 
        !          2095: 
        !          2096: 
        !          2097: version 0.94
        !          2098: 
        !          2099: 
        !          2100: 
        !          2101: PATCHLEVEL4::
        !          2102: 
        !          2103: 
        !          2104: 
        !          2105: filesys.c:
        !          2106: 
        !          2107:        Use U:\DEV\CON for CON:, instead of V:\CON, since we're
        !          2108: 
        !          2109:        going to make drive V: go away soon.
        !          2110: 
        !          2111: unifs.c:
        !          2112: 
        !          2113:        When looking up a drive, make sure that it has a valid file
        !          2114: 
        !          2115:        system attached to it -- otherwise, newly installed ramdisks
        !          2116: 
        !          2117:        can cause system crashes :-(.
        !          2118: 
        !          2119: fasttext.c:
        !          2120: 
        !          2121:        Patches to make the fast text device work correctly on a TT,
        !          2122: 
        !          2123:        courtesy of Erling Henanger.
        !          2124: 
        !          2125: main.c:
        !          2126: 
        !          2127:        Install 16 extra cookies, instead of 8, just to be friendly.
        !          2128: 
        !          2129: 
        !          2130: 
        !          2131: PATCHLEVEL3::
        !          2132: 
        !          2133: 
        !          2134: 
        !          2135: main.c:
        !          2136: 
        !          2137:        Allow PSEUDODRIVES=MAP to put the extra drives in
        !          2138: 
        !          2139:        _drvbits without installing new drivers for them.
        !          2140: 
        !          2141: unifs.c:
        !          2142: 
        !          2143:        Don't rely on drvmap() to figure out what drives exist;
        !          2144: 
        !          2145:        it isn't accurate if PSEUDODRIVES=NO.
        !          2146: 
        !          2147: 
        !          2148: 
        !          2149: PATCHLEVEL2::
        !          2150: 
        !          2151: 
        !          2152: 
        !          2153: main.c:
        !          2154: 
        !          2155:        Added an option for turning off the BIOS routines for the
        !          2156: 
        !          2157:        pseudo-drives.
        !          2158: 
        !          2159: filesys.c:
        !          2160: 
        !          2161:        Moved the vector set/restore code to main.c (where all the
        !          2162: 
        !          2163:        other vector stuff is).
        !          2164: 
        !          2165: tosfs.c:
        !          2166: 
        !          2167:        If the _FLK cookie was already set when MiNT started, we
        !          2168: 
        !          2169:        pass file sharing and locking requests through to GEMDOS.
        !          2170: 
        !          2171: main.c:
        !          2172: 
        !          2173:        Turn the cursor off when leaving, if we were started from
        !          2174: 
        !          2175:        the desktop.
        !          2176: 
        !          2177: tosfs.c:
        !          2178: 
        !          2179:        Fixed a bug in which tos_chmode was returning an incorrect
        !          2180: 
        !          2181:        value.
        !          2182: 
        !          2183: debug.c:
        !          2184: 
        !          2185:        Added code for octal output to sprintf().
        !          2186: 
        !          2187: dosdir.c:
        !          2188: 
        !          2189:        Make Fsfirst() with the FA_LABEL bit set work on non-TOS
        !          2190: 
        !          2191:        file systems (via the file system readlabel function).
        !          2192: 
        !          2193:        (This used to work only when the search was restricted to
        !          2194: 
        !          2195:        labels only.)
        !          2196: 
        !          2197: various places:
        !          2198: 
        !          2199:        Get rid of gcc 2.0 warnings.
        !          2200: 
        !          2201: 
        !          2202: 
        !          2203: PATCHLEVEL1::
        !          2204: 
        !          2205: 
        !          2206: 
        !          2207: file.h:
        !          2208: 
        !          2209:        Because Fmidipipe and the disk change code can close
        !          2210: 
        !          2211:        files other than the files of the current process,
        !          2212: 
        !          2213:        the device driver "close" function needs another
        !          2214: 
        !          2215:        parameter, namely the process id being closed; this
        !          2216: 
        !          2217:        allows device drivers to remove locks properly.
        !          2218: 
        !          2219: tosfs.c:
        !          2220: 
        !          2221:        Volume labels shouldn't be found by Dreaddir().
        !          2222: 
        !          2223: tosfs.c:
        !          2224: 
        !          2225:        Added file locking.
        !          2226: 
        !          2227: filesys.c, main.c, file.h:
        !          2228: 
        !          2229:        New utility routine (denylock) to make implementing file
        !          2230: 
        !          2231:        locking easier for file systems.
        !          2232: 
        !          2233: 
        !          2234: 
        !          2235: PATCHLEVEL0::
        !          2236: 
        !          2237: 
        !          2238: 
        !          2239: tosfs.c:
        !          2240: 
        !          2241:        Canonicalize file names (i.e. convert to 8.3 format).
        !          2242: 
        !          2243:        Also, keep track of the value returned from the last
        !          2244: 
        !          2245:        readdir() call, so that a subsequent Fxattr() will take
        !          2246: 
        !          2247:        place quickly.
        !          2248: 
        !          2249: proc.c:
        !          2250: 
        !          2251:        In sleep(), make sure interrupts are disabled while queue
        !          2252: 
        !          2253:        manipulations are occuring.
        !          2254: 
        !          2255: bios.c:
        !          2256: 
        !          2257:        Correct a stuttering problem for ^C and similar interrupts.
        !          2258: 
        !          2259: dosmem.c:
        !          2260: 
        !          2261:        8 character process names weren't terminated properly.
        !          2262: 
        !          2263: tty.c:
        !          2264: 
        !          2265:        Aaargh! Shift+cursor keys were being interpreted even when
        !          2266: 
        !          2267:        they shouldn't have been.
        !          2268: 
        !          2269: 
        !          2270: 
        !          2271: version 0.93
        !          2272: 
        !          2273: 
        !          2274: 
        !          2275: PATCHLEVEL6::
        !          2276: 
        !          2277: 
        !          2278: 
        !          2279: filesys.c:
        !          2280: 
        !          2281:        Check for newly installed drives when parsing an
        !          2282: 
        !          2283:        absolute path without an explicit drive letter, as
        !          2284: 
        !          2285:        well as when looking at ones with drive letters.
        !          2286: 
        !          2287: 
        !          2288: 
        !          2289: PATCHLEVEL5::
        !          2290: 
        !          2291: 
        !          2292: 
        !          2293: biosfs.c, fasttext.c:
        !          2294: 
        !          2295:        Allow TIOCGWINSZ calls on the console (we use the line A
        !          2296: 
        !          2297:        variables to get the number or rows and columns).
        !          2298: 
        !          2299: filesys.c:
        !          2300: 
        !          2301:        Fix a typo in the file system initialization checking.
        !          2302: 
        !          2303: pipefs.c:
        !          2304: 
        !          2305:        Make "VIRGIN_PIPE" more obviously a magic value, and
        !          2306: 
        !          2307:        document it.
        !          2308: 
        !          2309: pipefs.c:
        !          2310: 
        !          2311:        Make u:\pipe have a sensible date/time; also, make
        !          2312: 
        !          2313:        Dfree on u:\pipe return some useful statistics about
        !          2314: 
        !          2315:        the number of pipes in the system.
        !          2316: 
        !          2317: procfs.c:
        !          2318: 
        !          2319:        u:\proc has a sensible time and date now, namely the
        !          2320: 
        !          2321:        time/date of the last process creation or destruction.
        !          2322: 
        !          2323: dosfile.c:
        !          2324: 
        !          2325:        Fcreate() of a volume label now returns a handle to
        !          2326: 
        !          2327:        u:\dev\null.
        !          2328: 
        !          2329: dosmem.c:
        !          2330: 
        !          2331:        Make sure the BIOSBUF buffer is flushed when terminating.
        !          2332: 
        !          2333: main.c:
        !          2334: 
        !          2335:        There's a bug in TOS 1.4: GEM seems to assume that all
        !          2336: 
        !          2337:        memory is zero initially, and if it isn't (e.g. if a large
        !          2338: 
        !          2339:        AUTO folder program like MiNT terminates and leaves behind
        !          2340: 
        !          2341:        dirty memory) then having too many (or the wrong kind of)
        !          2342: 
        !          2343:        desk accessories can lead to a crash. This was a real bear
        !          2344: 
        !          2345:        to track down, and the work-around is very ugly; before
        !          2346: 
        !          2347:        MiNT exits we copy a short machine language subroutine into
        !          2348: 
        !          2349:        the command line, and then execute it; the routine zeros
        !          2350: 
        !          2351:        all of the TPA and then does a Pterm0().
        !          2352: 
        !          2353: rendez.c:
        !          2354: 
        !          2355:        Change a "short" to "int" for the benefit of gcc 2.0.
        !          2356: 
        !          2357: bios.c:
        !          2358: 
        !          2359:        Stop process dumps from stuttering.
        !          2360: 
        !          2361: console.c:
        !          2362: 
        !          2363:        Added support for global file handles.
        !          2364: 
        !          2365: 
        !          2366: 
        !          2367: PATCHLEVEL4::
        !          2368: 
        !          2369: 
        !          2370: 
        !          2371: dosfile.c:
        !          2372: 
        !          2373:        In Fselect(), we have to re-validate file handles after
        !          2374: 
        !          2375:        a sleep() call, since signal handlers may close files.
        !          2376: 
        !          2377: proc.c:
        !          2378: 
        !          2379:        Pre-allocate more PROC structures (this should help
        !          2380: 
        !          2381:        reduce memory fragmentation).
        !          2382: 
        !          2383: tty.c, file.h:
        !          2384: 
        !          2385:        Allow cursor/function keys to send escape sequences.
        !          2386: 
        !          2387: dosdir.c:
        !          2388: 
        !          2389:        As suggested by S. Henson: Dsetpath through a symbolic link
        !          2390: 
        !          2391:        may also require changing the current drive as well.
        !          2392: 
        !          2393: proc.c,dos.c,timeout.c:
        !          2394: 
        !          2395:        New process scheduling algorithm, as suggested by A. Pratt.
        !          2396: 
        !          2397: dosdir.c:
        !          2398: 
        !          2399:        Make only the low bit of Dlock() significant, for future
        !          2400: 
        !          2401:        expansion.
        !          2402: 
        !          2403: dosfile.c:
        !          2404: 
        !          2405:        Allow Fcreate() to create a global file handle.
        !          2406: 
        !          2407: 
        !          2408: 
        !          2409: PATCHLEVEL3::
        !          2410: 
        !          2411: 
        !          2412: 
        !          2413: debug.c:
        !          2414: 
        !          2415:        Changed TRACE mode output so that not just any keys will
        !          2416: 
        !          2417:        start/stop output, but only Help and Undo.
        !          2418: 
        !          2419: dosdir.c, filesys.c:
        !          2420: 
        !          2421:        Add a Dlock() system call to lock/unlock drives.
        !          2422: 
        !          2423: filesys.c:
        !          2424: 
        !          2425:        Only initialize drives if the BIOS drive map says that
        !          2426: 
        !          2427:        they exist.
        !          2428: 
        !          2429: dosmem.c:
        !          2430: 
        !          2431:        In Pexec, make a copy of any name we're going to use
        !          2432: 
        !          2433:        before freeing memory for overlayed programs; the old
        !          2434: 
        !          2435:        way was decidedly incorrect!
        !          2436: 
        !          2437: dosfile.c:
        !          2438: 
        !          2439:        Allow for global file handles, so that shared libraries
        !          2440: 
        !          2441:        can use file handles that are the same for all processes.
        !          2442: 
        !          2443: dosmem.c:
        !          2444: 
        !          2445:        In Mxalloc, ignore bits that we don't understand, to
        !          2446: 
        !          2447:        allow for future expansion.
        !          2448: 
        !          2449: syscall.s:
        !          2450: 
        !          2451:        Fix a bug that could cause the wrong system call to be
        !          2452: 
        !          2453:        made if BIOS buffering is on (!).
        !          2454: 
        !          2455: bios.c:
        !          2456: 
        !          2457:        Streamline the BIOS buffering mechanism, and make it
        !          2458: 
        !          2459:        more conservative about multiple processes doing Bconout
        !          2460: 
        !          2461:        output.
        !          2462: 
        !          2463: procfs.c:
        !          2464: 
        !          2465:        Allow "foo.-1" to stand for the current process, and
        !          2466: 
        !          2467:        "foo.-2" to stand for our parent. Also, add new
        !          2468: 
        !          2469:        Fcntls for getting/setting memory flags.
        !          2470: 
        !          2471: bios.c:
        !          2472: 
        !          2473:        In Setexc(), don't actually change any vectors, let the BIOS
        !          2474: 
        !          2475:        do it -- some TSR's install trap handlers that look for
        !          2476: 
        !          2477:        certain Setexc functions...
        !          2478: 
        !          2479: signal.c:
        !          2480: 
        !          2481:        Allow nested Supexec() calls, or Supexec()'s from a terminate
        !          2482: 
        !          2483:        vector.
        !          2484: 
        !          2485: procfs.c:
        !          2486: 
        !          2487:        Change the definition of PPROCADDR and add a new Fcntl,
        !          2488: 
        !          2489:        PCTXTSIZE.
        !          2490: 
        !          2491: mem.c:
        !          2492: 
        !          2493:        In exec_region, set the stack based on the value of p_hitpa
        !          2494: 
        !          2495:        from the basepage, instead of the size of the memory
        !          2496: 
        !          2497:        region -- some programs rely on being able to set the initial
        !          2498: 
        !          2499:        stack pointer for a Pexec(4,...) this way.
        !          2500: 
        !          2501: main.c, context.s:
        !          2502: 
        !          2503:        Avoid using 68020 instructions if we're on a 68010.
        !          2504: 
        !          2505: 
        !          2506: 
        !          2507: PATCHLEVEL2::
        !          2508: 
        !          2509: 
        !          2510: 
        !          2511: dos.c,proc.c:
        !          2512: 
        !          2513:        More tweaking of the priority code.
        !          2514: 
        !          2515: main.c:
        !          2516: 
        !          2517:        Change the type of "tosbp" from char ** to BASEPAGE **,
        !          2518: 
        !          2519:        since that's what it really is.
        !          2520: 
        !          2521: main.c:
        !          2522: 
        !          2523:        Add a special case for the Spanish TOS 1.0 act_pd variable.
        !          2524: 
        !          2525: pipefs.c:
        !          2526: 
        !          2527:        When a writer is waiting to write a small amount of data
        !          2528: 
        !          2529:        atomically, remember to wake up readers so that they
        !          2530: 
        !          2531:        can clear the pipe!
        !          2532: 
        !          2533: debug.c:
        !          2534: 
        !          2535:        Add the %u flag to ksprintf() (Fselect uses it, maybe others
        !          2536: 
        !          2537:        do too...)
        !          2538: 
        !          2539: dosmem.c:
        !          2540: 
        !          2541:        In Pterm(), put the exit code onto the stack when calling
        !          2542: 
        !          2543:        etv_term. It won't be in the same place as it was for TOS,
        !          2544: 
        !          2545:        but c'est la vie. (People asked for this feature...)
        !          2546: 
        !          2547: xbios.c:
        !          2548: 
        !          2549:        Provide a way to pass arguments to Supexec(). Note that Atari
        !          2550: 
        !          2551:        never documented that this was possible, but some people were
        !          2552: 
        !          2553:        relying on it anyway :-(. (Don't use this feature, it's only
        !          2554: 
        !          2555:        there as a compatibility hack.)
        !          2556: 
        !          2557: main.c:
        !          2558: 
        !          2559:        In shutdown(), don't bother waiting a second for processes
        !          2560: 
        !          2561:        to finish if there are no other processes.
        !          2562: 
        !          2563: filesys.c:
        !          2564: 
        !          2565:        Make sure that path names are null terminated after strncpy.
        !          2566: 
        !          2567: mem.c:
        !          2568: 
        !          2569:        Fix the code to zero process registers so that it *only* zeros
        !          2570: 
        !          2571:        process registers.
        !          2572: 
        !          2573: dosmem.c:
        !          2574: 
        !          2575:        Eliminate some redundant code.
        !          2576: 
        !          2577: dosfile.c:
        !          2578: 
        !          2579:        Open u:\pipe\sys$pipe.xxx rather than q:\sys$pipe.xxx.
        !          2580: 
        !          2581: main.c:
        !          2582: 
        !          2583:        Change a "malloc" into "kmalloc", and restore the #include
        !          2584: 
        !          2585:        of <minimal.h> that was inadvertently deleted.
        !          2586: 
        !          2587: main.c:
        !          2588: 
        !          2589:        Allow parameters to be passed to the initial program specified
        !          2590: 
        !          2591:        by the INIT= string.
        !          2592: 
        !          2593: 
        !          2594: 
        !          2595: PATCHLEVEL1::
        !          2596: 
        !          2597: 
        !          2598: 
        !          2599: main.c:
        !          2600: 
        !          2601:        Fix a typo in shutdown() that was causing problems when
        !          2602: 
        !          2603:        MiNT was shut down while processes were active.
        !          2604: 
        !          2605: tosfs.c:
        !          2606: 
        !          2607:        Make sure that tfullpath() returns a string less than
        !          2608: 
        !          2609:        PATH_MAX characters long.
        !          2610: 
        !          2611: everywhere:
        !          2612: 
        !          2613:        Replace "sprintf" with "ksprintf".
        !          2614: 
        !          2615: debug.c:
        !          2616: 
        !          2617:        Add a "ksprintf" function that's like sprintf(), but
        !          2618: 
        !          2619:        (a) doesn't have so many features (making it smaller),
        !          2620: 
        !          2621:        and more importantly (b) won't try to write more than
        !          2622: 
        !          2623:        SPRINTF_MAX characters into a buffer.
        !          2624: 
        !          2625: filesys.c:
        !          2626: 
        !          2627:        In path2cookie, make sure we don't try to copy more than
        !          2628: 
        !          2629:        PATH_MAX characters into the fixed size buffers.
        !          2630: 
        !          2631: dosmem.c:
        !          2632: 
        !          2633:        The "sleep if no memory available during Malloc" code
        !          2634: 
        !          2635:        was causing more problems than it solved, so it was
        !          2636: 
        !          2637:        removed. To compensate, we increase the priority of
        !          2638: 
        !          2639:        newly Pexec'd processes to make sure that they get
        !          2640: 
        !          2641:        to run.
        !          2642: 
        !          2643: dosmem.c:
        !          2644: 
        !          2645:        Aaaargh! A very serious screw-up in terminate() was
        !          2646: 
        !          2647:        causing us to wake up processes sleeping in vfork()
        !          2648: 
        !          2649:        even when their children were still using the address
        !          2650: 
        !          2651:        space; needless to say, horrible (and mysterious)
        !          2652: 
        !          2653:        crashes could ensue. Fix: only force the parent awake
        !          2654: 
        !          2655:        if wait_q == WAIT_Q && wait_cond matches the terminating
        !          2656: 
        !          2657:        process, otherwise let post_sig() handle waking.
        !          2658: 
        !          2659:        While fixing this bug, re-arrange the terminate code
        !          2660: 
        !          2661:        to do the waking up at the very end, just in case some
        !          2662: 
        !          2663:        of the other code may cause a sleep() temporarily.
        !          2664: 
        !          2665: bios.c:
        !          2666: 
        !          2667:        Fix the scan code for the UNDO key.
        !          2668: 
        !          2669: fasttext.c:
        !          2670: 
        !          2671:        Use Setscreen() to set the hardware screen base, since setting
        !          2672: 
        !          2673:        the variable at 0x45e causes TOS to keep setting the screen base
        !          2674: 
        !          2675:        ad infinitum.
        !          2676: 
        !          2677: 
        !          2678: 
        !          2679: PATCHLEVEL0::
        !          2680: 
        !          2681: 
        !          2682: 
        !          2683: rendez.c:
        !          2684: 
        !          2685:        When waking a process up from a semaphore, check to see
        !          2686: 
        !          2687:        if it's on the WAIT_Q before trying to remove it from
        !          2688: 
        !          2689:        that queue (it might have been moved off the wait queue
        !          2690: 
        !          2691:        by a signal).
        !          2692: 
        !          2693: bios.c:
        !          2694: 
        !          2695:        Make sure that Bconout(2,c) always succeeds, to compensate
        !          2696: 
        !          2697:        for text accelerators and other programs that don't return
        !          2698: 
        !          2699:        sensible values from Bconout. Also, ignore the Bconout
        !          2700: 
        !          2701:        return value when flushing the text output buffer.
        !          2702: 
        !          2703: 
        !          2704: 
        !          2705: version 0.92
        !          2706: 
        !          2707: 
        !          2708: 
        !          2709: PATCHLEVEL4::
        !          2710: 
        !          2711: 
        !          2712: 
        !          2713: biosfs.c:
        !          2714: 
        !          2715:        Provide devices for the extra Mega STe serial ports.
        !          2716: 
        !          2717: biosfs.c:
        !          2718: 
        !          2719:        Make the kernel info structure available to device drivers
        !          2720: 
        !          2721:        loaded with Dcntl.
        !          2722: 
        !          2723: xbios.c:
        !          2724: 
        !          2725:        Provide a modified Midiws function so that this is also
        !          2726: 
        !          2727:        affected by Fmidipipe and Fforce.
        !          2728: 
        !          2729: biosfs.c:
        !          2730: 
        !          2731:        Split bios_device into two device drivers; one for
        !          2732: 
        !          2733:        terminal devices, and one for plain character devices
        !          2734: 
        !          2735:        (the printer and IKBD port fall into this category).
        !          2736: 
        !          2737:        Also: provide a new Dcntl call to install plain BIOS
        !          2738: 
        !          2739:        devices in U:\DEV.
        !          2740: 
        !          2741: tty.c:
        !          2742: 
        !          2743:        Check for terminal start/stop keys while reading.
        !          2744: 
        !          2745: bios.c:
        !          2746: 
        !          2747:        In checkkeys, loop through all keys received since our last
        !          2748: 
        !          2749:        interrupt, rather than just checking the last thing in the
        !          2750: 
        !          2751:        buffer (as A. Pratt suggested).
        !          2752: 
        !          2753: bios.c, tty.c:
        !          2754: 
        !          2755:        Made the "disable" character for special terminal functions
        !          2756: 
        !          2757:        (e.g. the EOF key) be 0 instead of -1; this matches System V,
        !          2758: 
        !          2759:        is more POSIX friendly, and also makes confusing function keys
        !          2760: 
        !          2761:        and ^@ less likely. (Thanks to Scott Willingham for this
        !          2762: 
        !          2763:        suggestion.)
        !          2764: 
        !          2765: file.h, elsewhere as needed:
        !          2766: 
        !          2767:        Renamed the O_BIOS flag O_TTY (since that's what it really
        !          2768: 
        !          2769:        represents) and renamed the is_bios macro is_terminal.
        !          2770: 
        !          2771: dosmem.c:
        !          2772: 
        !          2773:        Make Pexec mode 106 cause the child to be truly independent
        !          2774: 
        !          2775:        of the parent (i.e. it doesn't get the parent's address space,
        !          2776: 
        !          2777:        nor does the parent get the child's).
        !          2778: 
        !          2779: biosfs.c:
        !          2780: 
        !          2781:        Allow symbolic links from U:\DEV; this lets us do things like
        !          2782: 
        !          2783:        Fsymlink("U:\PIPE\SERVERFIFO", "U:\DEV\SERVERDEV").
        !          2784: 
        !          2785: main.c:
        !          2786: 
        !          2787:        When PRN=d:\foo is specified, create the file foo instead of
        !          2788: 
        !          2789:        just trying to open it; this makes no difference to devices,
        !          2790: 
        !          2791:        but makes redirecting printer output to a file much more
        !          2792: 
        !          2793:        convenient.
        !          2794: 
        !          2795: unifs.c:
        !          2796: 
        !          2797:        Fix a bug that was causing Dgetpath() to return incorrect
        !          2798: 
        !          2799:        information for U:\A.
        !          2800: 
        !          2801: timeout.c:
        !          2802: 
        !          2803:        Make sure "searchtime" is up-to-date; bconout uses this for
        !          2804: 
        !          2805:        the time out.
        !          2806: 
        !          2807: biosfs.c:
        !          2808: 
        !          2809:        Fix bios_write so that if bconout fails, so does the write.
        !          2810: 
        !          2811: bios.c:
        !          2812: 
        !          2813:        Fix bconout so that it doesn't hang forever if the device isn't
        !          2814: 
        !          2815:        going to be ready (e.g. the printer is off); instead, there's
        !          2816: 
        !          2817:        a 10 second timeout.
        !          2818: 
        !          2819: main.c:
        !          2820: 
        !          2821:        Send all processes SIGTERM when we're shutting down, so that
        !          2822: 
        !          2823:        they have a chance to clean up after themselves.
        !          2824: 
        !          2825: mint.h:
        !          2826: 
        !          2827:        The KBDVEC structure was missing the "clockvec" element (!).
        !          2828: 
        !          2829: 
        !          2830: 
        !          2831: PATCHLEVEL3::
        !          2832: 
        !          2833: 
        !          2834: 
        !          2835: biosfs.c:
        !          2836: 
        !          2837:        Revised to allow support for loading/removing device drivers
        !          2838: 
        !          2839:        dynamically, via a Dcntl() call.
        !          2840: 
        !          2841: dosmem.c,mem.c,dosfile.c,file.h:
        !          2842: 
        !          2843:        Added support for setuid/setgid. These bits are only checked
        !          2844: 
        !          2845:        in Pexec modes 0, 100, and 200, i.e. the "load and go" modes.
        !          2846: 
        !          2847: rendez.c:
        !          2848: 
        !          2849:        Added new semaphore code from Allan Pratt.
        !          2850: 
        !          2851: main.c:
        !          2852: 
        !          2853:        New command for mint.cnf: "exec foo.prg bar" runs the program
        !          2854: 
        !          2855:        "foo" with argument(s) "bar".
        !          2856: 
        !          2857: main.c:
        !          2858: 
        !          2859:        Use the XBRA protocol for all interrupt routines that we grab.
        !          2860: 
        !          2861: filesys.c:
        !          2862: 
        !          2863:        When terminating MiNT, close all open files to make sure data
        !          2864: 
        !          2865:        is flushed and devices are nicely shut down.
        !          2866: 
        !          2867: main.c:
        !          2868: 
        !          2869:        Add some more variables, such as CON and PRN for redirecting
        !          2870: 
        !          2871:        those handles, and HARDSCROLL for controlling the fast text
        !          2872: 
        !          2873:        output.
        !          2874: 
        !          2875: proc.c:
        !          2876: 
        !          2877:        Make sure the "links" field for the prn and aux handles is
        !          2878: 
        !          2879:        correct.
        !          2880: 
        !          2881: syscall.s, bios.c:
        !          2882: 
        !          2883:        Special case the BIOS Bconout code to try to speed it up
        !          2884: 
        !          2885:        a bit. We allow for buffering of Bconout output; the buffer
        !          2886: 
        !          2887:        is flushed on the next non-Bconout system call or context
        !          2888: 
        !          2889:        switch. This should usually work OK, but as a precaution
        !          2890: 
        !          2891:        we provide for a way to turn it off (BIOSBUF=NO in mint.cnf).
        !          2892: 
        !          2893: fasttext.c.fasttext.h:
        !          2894: 
        !          2895:        New files for a faster text output device; changes were
        !          2896: 
        !          2897:        made to biosfs.c to support this, too.
        !          2898: 
        !          2899: tty.c:
        !          2900: 
        !          2901:        Streamline writes to terminals by sending data to the
        !          2902: 
        !          2903:        tty device in chunks instead of 1 character at a time.
        !          2904: 
        !          2905: dosfile.c:
        !          2906: 
        !          2907:        In do_open, always return EFILNF, never EPTHNF.
        !          2908: 
        !          2909: dosmem.c:
        !          2910: 
        !          2911:        Use supexec() to execute the terminate vector code, to
        !          2912: 
        !          2913:        avoid duplication of signal 0 faking.
        !          2914: 
        !          2915: xbios.c:
        !          2916: 
        !          2917:        In Supexec() does leave the kernel, so we have to make
        !          2918: 
        !          2919:        appropriate adjustments. We do this by faking a signal
        !          2920: 
        !          2921:        (signal 0) and installing the user's function as a signal
        !          2922: 
        !          2923:        handler.
        !          2924: 
        !          2925: dosdir.c:
        !          2926: 
        !          2927:        Make Dfree(x) actually look at free space on the drive which
        !          2928: 
        !          2929:        corresponds to the current directory on <x>; this should make
        !          2930: 
        !          2931:        Dfree on drive U: much more useful.
        !          2932: 
        !          2933: proc.h:
        !          2934: 
        !          2935:        Make the "base" field of the PROC structure have type BASEPAGE *
        !          2936: 
        !          2937:        (since that's what it is!)
        !          2938: 
        !          2939: basepage.h, dosdir.c, dosmem.c:
        !          2940: 
        !          2941:        Support some undocumented fields in the basepage a little bit
        !          2942: 
        !          2943:        (i.e. they're read only). Programs that try to write to these
        !          2944: 
        !          2945:        fields break. Surprise, surprise.
        !          2946: 
        !          2947: 
        !          2948: 
        !          2949: PATCHLEVEL2::
        !          2950: 
        !          2951: 
        !          2952: 
        !          2953: dosmem.c, mem.c:
        !          2954: 
        !          2955:        The docs say that children started with Pexec(104,...) or
        !          2956: 
        !          2957:        Pexec(106,...) share the parent's memory. This was unfortunately
        !          2958: 
        !          2959:        not the case; if the parent exited and the child was running
        !          2960: 
        !          2961:        in the parent's address space (e.g. see tfork() in mntlib)
        !          2962: 
        !          2963:        the child died very soon thereafter (like when the next program
        !          2964: 
        !          2965:        comes along and clears the memory the child was running out of).
        !          2966: 
        !          2967:        This is now fixed.
        !          2968: 
        !          2969: dos.c, proc.c, timeout.c:
        !          2970: 
        !          2971:        More tuning of the process scheduler.
        !          2972: 
        !          2973: main.c:
        !          2974: 
        !          2975:        Added "setenv" function for mint.cnf.
        !          2976: 
        !          2977: 
        !          2978: 
        !          2979: PATCHLEVEL1::
        !          2980: 
        !          2981: 
        !          2982: 
        !          2983: filesys.c:
        !          2984: 
        !          2985:        In some circumstances, AHDI will keep telling us that a drive
        !          2986: 
        !          2987:        has changed, ad infinitum. To avoid this, we stop trying after
        !          2988: 
        !          2989:        8 media changes occur in a row.
        !          2990: 
        !          2991: util.c:
        !          2992: 
        !          2993:        Tuned the kmalloc() strategy to reduce memory fragmentation
        !          2994: 
        !          2995:        (every process will be allocating 264 bytes for its
        !          2996: 
        !          2997:        memory region maps right after creation, and this should
        !          2998: 
        !          2999:        come from kernel memory).
        !          3000: 
        !          3001: tty.c:
        !          3002: 
        !          3003:        Under TOS, 1 byte writes should always be in raw mode.
        !          3004: 
        !          3005: dos.c:
        !          3006: 
        !          3007:        In Syield(), we should call sleep() even if no other processes
        !          3008: 
        !          3009:        are waiting, just to make sure that signals, alarms, etc.
        !          3010: 
        !          3011:        are properly dealt with.
        !          3012: 
        !          3013: filesys.c, dosfile.c:
        !          3014: 
        !          3015:        The media change code was wedged (actually, the fault was in
        !          3016: 
        !          3017:        do_pclose, which sometimes neglected to check to see whether
        !          3018: 
        !          3019:        or not the file had a still-valid device driver).
        !          3020: 
        !          3021: dosmem.c:
        !          3022: 
        !          3023:        In the termination code, close "files" referring to a process
        !          3024: 
        !          3025:        *before* freeing all the process memory; that way, we don't
        !          3026: 
        !          3027:        have to worry in do_pclose() and other places about what
        !          3028: 
        !          3029:        kind of state the process is in.
        !          3030: 
        !          3031: mem.h:
        !          3032: 
        !          3033:        Round off memory regions only to a word boundary for better
        !          3034: 
        !          3035:        TOS compatibility.
        !          3036: 
        !          3037: 
        !          3038: 
        !          3039: PATCHLEVEL0::
        !          3040: 
        !          3041: dos.c,intr.s,syscall.s:
        !          3042: 
        !          3043:        Changed s_yield() to actually give up the processor if
        !          3044: 
        !          3045:        another process is waiting for it; this means that processes
        !          3046: 
        !          3047:        that call Syield() won't be penalized by the priority code.
        !          3048: 
        !          3049:        Also: added a new kernel function, preempt(), which does
        !          3050: 
        !          3051:        what the old s_yield() did (and hence penalizes CPU hogs).
        !          3052: 
        !          3053: makefile:
        !          3054: 
        !          3055:        Cleaned up a bit, per suggestions from A. Pratt and D. Gymer.
        !          3056: 
        !          3057: 
        !          3058: 
        !          3059: 
        !          3060: 
        !          3061: version 0.91
        !          3062: 
        !          3063: 
        !          3064: 
        !          3065: dosmem.c:
        !          3066: 
        !          3067:        Only the high 4 bits of the program load flags give memory
        !          3068: 
        !          3069:        requirements (we were using 8 bits).
        !          3070: 
        !          3071: dosdir.c:
        !          3072: 
        !          3073:        Add a hack so that ksh still works (it was using '/' in a
        !          3074: 
        !          3075:        path name). THIS HACK WILL GO AWAY SOMEDAY!
        !          3076: 
        !          3077: tty.c:
        !          3078: 
        !          3079:        CBREAK mode shouldn't do erase, kill, or EOF processing.
        !          3080: 
        !          3081: dosdir.c:
        !          3082: 
        !          3083:        Freadlink should check first to make sure the file really
        !          3084: 
        !          3085:        is a link!
        !          3086: 
        !          3087: file.h,tty.c:
        !          3088: 
        !          3089:        Change the name "struct winsiz" to "struct winsize" to match
        !          3090: 
        !          3091:        what Unix calls it (cosmetic change only).
        !          3092: 
        !          3093: unifs.c:
        !          3094: 
        !          3095:        Allow renaming of the drives, and allow rmdir() to work
        !          3096: 
        !          3097:        like unlink() for symbolic links (since we fake the return
        !          3098: 
        !          3099:        value from Fsfirst to look like a directory if the link
        !          3100: 
        !          3101:        points to a directory).
        !          3102: 
        !          3103: biosfs.c:
        !          3104: 
        !          3105:        lseek() on the null device should not return 0 always;
        !          3106: 
        !          3107:        otherwise, it will look like a terminal to many programs!
        !          3108: 
        !          3109: dosfile.c:
        !          3110: 
        !          3111:        If a MiNT domain process closes stdin or stdout, they
        !          3112: 
        !          3113:        really do want them closed (for compatibility with
        !          3114: 
        !          3115:        MiNT 0.8).
        !          3116: 
        !          3117: syscall.s:
        !          3118: 
        !          3119:        When returning from traps, don't pre-empt the current process
        !          3120: 
        !          3121:        if it's in supervisor mode.
        !          3122: 
        !          3123: mem.c:
        !          3124: 
        !          3125:        Fake some stuff in the basepage so that programs compiled
        !          3126: 
        !          3127:        with dLibs will work some of the time.
        !          3128: 
        !          3129: tosfs.c:
        !          3130: 
        !          3131:        Make the value returned from Dgetpath() lower case in the MiNT
        !          3132: 
        !          3133:        domain. Also, make tosfs a little less verbose when debugging
        !          3134: 
        !          3135:        or tracing is on.
        !          3136: 
        !          3137: dosmem.c:
        !          3138: 
        !          3139:        Try to allocate space for saved fork() memory in the alternate (TT)
        !          3140: 
        !          3141:        memory map first, as well as in core (ST) memory.
        !          3142: 
        !          3143: mem.h:
        !          3144: 
        !          3145:        Round allocation requests up to multiples of 8 bytes instead
        !          3146: 
        !          3147:        of 4; this automatically gives us a bit of slush for ill
        !          3148: 
        !          3149:        behaved programs, and also means that requests will always
        !          3150: 
        !          3151:        be for a multiple of sizeof(double) bytes.
        !          3152: 
        !          3153: util.c:
        !          3154: 
        !          3155:        Get rid of the extra slush around kmalloc'd regions (which
        !          3156: 
        !          3157:        was a lot bigger than originally intended anyway!)
        !          3158: 
        !          3159: 
        !          3160: 
        !          3161: 
        !          3162: 
        !          3163: version 0.9
        !          3164: 
        !          3165: 
        !          3166: 
        !          3167: PATCHLEVEL21:: released version
        !          3168: 
        !          3169: 
        !          3170: 
        !          3171: dosmem.c:
        !          3172: 
        !          3173:        Make Malloc and Mxalloc try again if there isn't enough memory;
        !          3174: 
        !          3175:        maybe the situation is temporary.
        !          3176: 
        !          3177: mem.c:
        !          3178: 
        !          3179:        Plug a memory leak in load_region(); also make load_region try again
        !          3180: 
        !          3181:        if there isn't enough memory to load the program (just in case the
        !          3182: 
        !          3183:        situation is temporary).
        !          3184: 
        !          3185: dosdir.c:
        !          3186: 
        !          3187:        Add a check to Fattrib to make sure that attributes of directories
        !          3188: 
        !          3189:        are never changed.
        !          3190: 
        !          3191: 
        !          3192: 
        !          3193: PATCHLEVEL20::
        !          3194: 
        !          3195: 
        !          3196: 
        !          3197: dosdir.c:
        !          3198: 
        !          3199:        Allow Frenames of processes and other special kinds of files even
        !          3200: 
        !          3201:        if they do have the FA_RDONLY bit set.
        !          3202: 
        !          3203: dosfile.c:
        !          3204: 
        !          3205:        Allow creation of files with the read-only attribute.
        !          3206: 
        !          3207: tosfs.c:
        !          3208: 
        !          3209:        Change the file deletion code so that an attempt to delete an
        !          3210: 
        !          3211:        open file no longer fails, but rather marks the file to be
        !          3212: 
        !          3213:        deleted when it is closed.
        !          3214: 
        !          3215: file.h:
        !          3216: 
        !          3217:        Add some extra space to the tty struct, for future expansion.
        !          3218: 
        !          3219: filesys.c,main.c:
        !          3220: 
        !          3221:        Make sure the fake BIOS disk routines are available before
        !          3222: 
        !          3223:        any of the pseudo-drives are used, by having them set up
        !          3224: 
        !          3225:        in init_filesys() instead of init_intr().
        !          3226: 
        !          3227: tosfs.c:
        !          3228: 
        !          3229:        Remove some debugging output that isn't needed anymore.
        !          3230: 
        !          3231: 
        !          3232: 
        !          3233: PATCHLEVEL19::
        !          3234: 
        !          3235: Beta release.
        !          3236: 
        !          3237: 
        !          3238: 
        !          3239: intr.s,main.c:
        !          3240: 
        !          3241:        provide some fake BIOS disk routines for the pseudo-drives,
        !          3242: 
        !          3243:        in hopes of avoiding "drive U: is not responding" types of
        !          3244: 
        !          3245:        messages that some have reported
        !          3246: 
        !          3247: pipefs.c:
        !          3248: 
        !          3249:        half.ttp was failing under mgr, because of a race condition:
        !          3250: 
        !          3251:        our select() returns "ready" for a pipe if nobody exists to
        !          3252: 
        !          3253:        write to it (since then a read will return immediately). half
        !          3254: 
        !          3255:        would make a pipe that would end up being destroyed immediately
        !          3256: 
        !          3257:        by mgr before it got attached to a process. Solution: pipes that
        !          3258: 
        !          3259:        have *never* been opened yet for writing get a special marker
        !          3260: 
        !          3261:        and select doesn't worry about them, only about ones that were
        !          3262: 
        !          3263:        once written to.
        !          3264: 
        !          3265: pipefs.c:
        !          3266: 
        !          3267:        Fixed FIONWRITE to return the correct value.
        !          3268: 
        !          3269: dosdir.c:
        !          3270: 
        !          3271:        Refuse to Frename a file with the FA_RDONLY attribute.
        !          3272: 
        !          3273: biosfs.c:
        !          3274: 
        !          3275:        Fixed bios_write to return the number of bytes successfully
        !          3276: 
        !          3277:        written.
        !          3278: 
        !          3279: bios.c:
        !          3280: 
        !          3281:        LAST_DEVICE was inaccurate. This could happen again, so I'm simply
        !          3282: 
        !          3283:        getting rid of it and leaving all errors to the BIOS.
        !          3284: 
        !          3285: pipefs.c:
        !          3286: 
        !          3287:        Make sure the FA_RDONLY attribute is sensible (i.e. unidirectional
        !          3288: 
        !          3289:        pipes that don't have a writer can still be written to).
        !          3290: 
        !          3291: filesys.c:
        !          3292: 
        !          3293:        Fixed relpath2cookie so that it doesn't *always* follow symlinks
        !          3294: 
        !          3295:        (it only should when lastname == follow_links)
        !          3296: 
        !          3297: dosfile.c:
        !          3298: 
        !          3299:        If the FA_RDONLY bit is set on the file, even the superuser should
        !          3300: 
        !          3301:        be denied access for writing.
        !          3302: 
        !          3303: dosfile.c:
        !          3304: 
        !          3305:        Requiring write permission for Fdatime is a Bad Idea, since GEMDOS
        !          3306: 
        !          3307:        doesn't; so now MiNT doesn't either.
        !          3308: 
        !          3309: tosfs.c, filesys.c:
        !          3310: 
        !          3311:        Fixed a bug with media changes (Fsfirst would sometimes try to close a
        !          3312: 
        !          3313:        directory that had already been automatically closed by a media change).
        !          3314: 
        !          3315: 
        !          3316: 
        !          3317: PATCHLEVEL18::
        !          3318: 
        !          3319: 
        !          3320: 
        !          3321: main.c:
        !          3322: 
        !          3323:        Fixed the machine type detection code; it needs to run before
        !          3324: 
        !          3325:        biosfs is initialized, i.e. before init_filesys().
        !          3326: 
        !          3327: main.c:
        !          3328: 
        !          3329:        Provide a configuration file so that users can automatically
        !          3330: 
        !          3331:        setup symbolic links and can change their init program.
        !          3332: 
        !          3333: biosfs.c:
        !          3334: 
        !          3335:        Allow rename on bios devices, so people who want terminals called
        !          3336: 
        !          3337:        "ttyX" instead of "modemX" can do so.
        !          3338: 
        !          3339: dosdir.c:
        !          3340: 
        !          3341:        Flink shouldn't need write permission on the destination
        !          3342: 
        !          3343:        directory, only the source.
        !          3344: 
        !          3345: dosfile.c:
        !          3346: 
        !          3347:        Added FSTAT function for Fcntl, to allow a better version of
        !          3348: 
        !          3349:        fstat() for the library.
        !          3350: 
        !          3351: dosfile.c:
        !          3352: 
        !          3353:        Add code to fcntl to automatically convert MiNT 0.8 O_NDELAY
        !          3354: 
        !          3355:        into MiNT 0.9 O_NDELAY. This is a temporary measure only,
        !          3356: 
        !          3357:        to let older versions of mgr continue to work for a while.
        !          3358: 
        !          3359: filesys.c:
        !          3360: 
        !          3361:        Symbolic links with relative paths were always failing with
        !          3362: 
        !          3363:        ELOOP. Oops! (Thanks to Stephen Henson for catching this.)
        !          3364: 
        !          3365: file.h, tosfs.c, dosfile.c:
        !          3366: 
        !          3367:        Added a new flag, FS_NOXBIT, to control whether or not the
        !          3368: 
        !          3369:        file system has a sensible notion of execute permission.
        !          3370: 
        !          3371:        This removes an ugly check for &tos_filesys.
        !          3372: 
        !          3373: mint.h,util.c,mem.c:
        !          3374: 
        !          3375:        Added a compile time option, JUNK_MEM, to deliberately fill
        !          3376: 
        !          3377:        the memory MiNT acquires with garbage; this is for debugging
        !          3378: 
        !          3379:        (to help track down silly failures to initialize memory) and
        !          3380: 
        !          3381:        not for production code.
        !          3382: 
        !          3383: proc.c:
        !          3384: 
        !          3385:        Fixed a typo in init_proc() that was causing memory not to
        !          3386: 
        !          3387:        be initialized to 0 correctly. (Thanks are due to Stephen
        !          3388: 
        !          3389:        Usher for catching this one.)
        !          3390: 
        !          3391: tosfs.c:
        !          3392: 
        !          3393:        Added a tos_rewinddir that works.
        !          3394: 
        !          3395: file.h:
        !          3396: 
        !          3397:        Added blocks and blksize fields to the XATTR structure, and
        !          3398: 
        !          3399:        provided a few extra reserved fields for future expansion.
        !          3400: 
        !          3401:        (Also: re-arranged some fields to match what the gcc library
        !          3402: 
        !          3403:        already has.)
        !          3404: 
        !          3405: file.h, main.c:
        !          3406: 
        !          3407:        Add sleep, wake, and wakeselect to the kernel info structure;
        !          3408: 
        !          3409:        some device drivers will need these.
        !          3410: 
        !          3411: biosfs.c:
        !          3412: 
        !          3413:        Make nodskchng do a Getbpb on the (non-existent) device; the officially
        !          3414: 
        !          3415:        documented way of forcing a disk change requires this.
        !          3416: 
        !          3417: file.h,filesys.c,*fs.c:
        !          3418: 
        !          3419:        Remove the "flag" argument from the dskchng function, and
        !          3420: 
        !          3421:        have the kernel check Rwabs for E_CHNG; this should save
        !          3422: 
        !          3423:        a lot of duplication in user file systems, since everyone
        !          3424: 
        !          3425:        really has to do this anyways.
        !          3426: 
        !          3427: dosdir.c:
        !          3428: 
        !          3429:        Make sure that Fsfirst names can be null-terminated.
        !          3430: 
        !          3431: filesys.c:
        !          3432: 
        !          3433:        Oops: a misplaced bracket in disk_changed was causing
        !          3434: 
        !          3435:        write-protected disks to always appear to have changed!
        !          3436: 
        !          3437: tosfs.c:
        !          3438: 
        !          3439:        Made it illegal to delete or truncate an open file.
        !          3440: 
        !          3441: 
        !          3442: 
        !          3443: PATCHLEVEL17::
        !          3444: 
        !          3445: 
        !          3446: 
        !          3447: version.h:
        !          3448: 
        !          3449:        I think we can call this version an "alpha" one, now. No more
        !          3450: 
        !          3451:        major features remain to be added (fingers crossed, here).
        !          3452: 
        !          3453: filesys.c,dosdir.c,*fs.c,file.h:
        !          3454: 
        !          3455:        Media change detection code; this is now the kernel's
        !          3456: 
        !          3457:        responsibility. This necessitated an additional function
        !          3458: 
        !          3459:        for file systems; I hope this is the last one.
        !          3460: 
        !          3461: main.c,biosfs.c:
        !          3462: 
        !          3463:        Check what kind of machine we're on, and adjust what devices are
        !          3464: 
        !          3465:        present accordingly. The rs232 file has been renamed to "modem1".
        !          3466: 
        !          3467:        WARNING: This will break existing code that uses the name "rs232".
        !          3468: 
        !          3469: filesys.c:
        !          3470: 
        !          3471:        Code for loading file systems (finally!)
        !          3472: 
        !          3473: bios.c,context.s:
        !          3474: 
        !          3475:        Made Rwabs, Getbpb, and Mediach save registers (since device
        !          3476: 
        !          3477:        drivers often don't, and loadable file systems will be calling
        !          3478: 
        !          3479:        these directly).
        !          3480: 
        !          3481: main.c:
        !          3482: 
        !          3483:        Implemented the "struct kerinfo" to pass information to loadable
        !          3484: 
        !          3485:        file systems.
        !          3486: 
        !          3487: filesys.c:
        !          3488: 
        !          3489:        Re-wrote path2cookie to provide for symbolic links; a new routine
        !          3490: 
        !          3491:        (relpath2cookie) helps us out.
        !          3492: 
        !          3493: unifs.c:
        !          3494: 
        !          3495:        Code for creating, reading, and deleting symbolic links.
        !          3496: 
        !          3497: *fs.c, dosfile.c, file.h:
        !          3498: 
        !          3499:        Changed the way file opens and creates are done; the former
        !          3500: 
        !          3501:        (*getdev) routine for file systems has been split into
        !          3502: 
        !          3503:        (*creat) and (*getdev), both of which are quite a bit simpler.
        !          3504: 
        !          3505:        This whole scheme is clearer, less work for the file system,
        !          3506: 
        !          3507:        and will support symbolic links much better.
        !          3508: 
        !          3509: various places:
        !          3510: 
        !          3511:        Add security checks. This is still pretty sad, but at least it
        !          3512: 
        !          3513:        can provide one with a modicum of protection against silly
        !          3514: 
        !          3515:        mistakes.
        !          3516: 
        !          3517: dosfile.c:
        !          3518: 
        !          3519:        Require write permission on a file before changing its date via
        !          3520: 
        !          3521:        Fdatime.
        !          3522: 
        !          3523: tosfs.c:
        !          3524: 
        !          3525:        Cleaned up and streamlined a bit, and fixed tos_readlabel.
        !          3526: 
        !          3527: *fs.c,dosdir.c,file.h:
        !          3528: 
        !          3529:        Changed the file system "getxattr", "chmode", "chown", and
        !          3530: 
        !          3531:        "chattr" functions to take a single file cookie instead of a
        !          3532: 
        !          3533:        (directory, name) pair. This should make most uses of these
        !          3534: 
        !          3535:        functions (e.g. in name lookups) more efficient. Also,
        !          3536: 
        !          3537:        changed the readdir() function to return a file cookie to go
        !          3538: 
        !          3539:        along with the newly read file name.
        !          3540: 
        !          3541: main.c:
        !          3542: 
        !          3543:        If "init.prg" isn't found, try starting GEM instead.
        !          3544: 
        !          3545: unifs.c:
        !          3546: 
        !          3547:        Re-arranged to allow for symbolic links.
        !          3548: 
        !          3549: filesys.c:
        !          3550: 
        !          3551:        Implemented some media change routines.
        !          3552: 
        !          3553: dosdir.c:
        !          3554: 
        !          3555:        Added Fchown and Fchmod system calls.
        !          3556: 
        !          3557: dosdir.c:
        !          3558: 
        !          3559:        Added security check for Fattrib().
        !          3560: 
        !          3561: 
        !          3562: 
        !          3563: PATCHLEVEL16::
        !          3564: 
        !          3565: 
        !          3566: 
        !          3567: lots of places:
        !          3568: 
        !          3569:        Try to make TRACE() and DEBUG() messages more useful for people
        !          3570: 
        !          3571:        who don't know the internals of the kernel, and who just want to
        !          3572: 
        !          3573:        debug their own programs.
        !          3574: 
        !          3575: dosdir.c:
        !          3576: 
        !          3577:        Added Flink, Fsymlink, Freadlink, and Dcntl system calls.
        !          3578: 
        !          3579: *fs.c,file.h:
        !          3580: 
        !          3581:        Added a new mode to Dpathconf() to determine whether the
        !          3582: 
        !          3583:        file system uses DOS type file naming conventions, ordinary
        !          3584: 
        !          3585:        Unix type, or _POSIX_NO_TRUNC type.
        !          3586: 
        !          3587: file.h:
        !          3588: 
        !          3589:        Add an "fscntl" field to the file system structure.
        !          3590: 
        !          3591: tosfs.c:
        !          3592: 
        !          3593:        Fix the mode values returned from getxattr() (regular files
        !          3594: 
        !          3595:        have type S_IFREG, not S_IFMT).
        !          3596: 
        !          3597: proc.c:
        !          3598: 
        !          3599:        Zero the child's srchdta field after fork_proc(); otherwise,
        !          3600: 
        !          3601:        the accounting for Fsfirst/Fsnext can get messed up. Thanks
        !          3602: 
        !          3603:        again to S. Henson.
        !          3604: 
        !          3605: mem.c:
        !          3606: 
        !          3607:        As Steve Henson pointed out, resetting the effective user and
        !          3608: 
        !          3609:        group id's in exec_region is probably a Bad Idea.
        !          3610: 
        !          3611: dosdir.c:
        !          3612: 
        !          3613:        Change Dopendir/Dclosedir to use umalloc and ufree instead of
        !          3614: 
        !          3615:        kmalloc and kfree.
        !          3616: 
        !          3617: 
        !          3618: 
        !          3619: PATCHLEVEL15::
        !          3620: 
        !          3621: 
        !          3622: 
        !          3623: dosdir.c:
        !          3624: 
        !          3625:        When terminating, clean up after any Fsfirst/Fsnext sequences that
        !          3626: 
        !          3627:        didn't go to completion.
        !          3628: 
        !          3629: tosfs.c:
        !          3630: 
        !          3631:        Streamlined garbage collection code, and also corrected a bug in
        !          3632: 
        !          3633:        which file indices used in directory searches could be garbage
        !          3634: 
        !          3635:        collected.
        !          3636: 
        !          3637: file.h, *fs.c:
        !          3638: 
        !          3639:        Add symlink and hard link functions.
        !          3640: 
        !          3641: pipefs.c:
        !          3642: 
        !          3643:        Make FIONWRITE work again (a line was accidentally deleted).
        !          3644: 
        !          3645:        Make sure that Fselect() will select any pipes that have been
        !          3646: 
        !          3647:        closed.
        !          3648: 
        !          3649: dossig.c:
        !          3650: 
        !          3651:        Put back the user id check in Pkill.
        !          3652: 
        !          3653: dos.c, proc.c:
        !          3654: 
        !          3655:        Make sure that the "euid" and "egid" fields are set with
        !          3656: 
        !          3657:        the Psetuid and Psetgid calls. Also, make sure the fields
        !          3658: 
        !          3659:        are reset after an exec.
        !          3660: 
        !          3661: mem.c:
        !          3662: 
        !          3663:        Make exec_region shrink the process 'mem' and 'addr' tables
        !          3664: 
        !          3665:        to the default again if extra regions had been allocated.
        !          3666: 
        !          3667: dosmem.c:
        !          3668: 
        !          3669:        Get rid of the magic number "100", and introduce a maximum user
        !          3670: 
        !          3671:        settable priority MAX_NICE so that the kernel can make sure
        !          3672: 
        !          3673:        that a process that needs to run (e.g. an aborted vfork) will
        !          3674: 
        !          3675:        run first by setting its priority to MAX_NICE+1.
        !          3676: 
        !          3677: proc.c:
        !          3678: 
        !          3679:        Make sure the initial process memory tables are zeroed.
        !          3680: 
        !          3681: proc.c:
        !          3682: 
        !          3683:        Adjust the process scheduling algorithm (yet again!). Also,
        !          3684: 
        !          3685:        rename "nice_count" to "curpri".
        !          3686: 
        !          3687: dosdir.c,dos.c:
        !          3688: 
        !          3689:        Added Dopendir, Dreaddir, Drewinddir, Dclosedir system calls.
        !          3690: 
        !          3691: *fs.c:
        !          3692: 
        !          3693:        Made readdir return a file index (inode number) if it's not
        !          3694: 
        !          3695:        doing a TOS mode search.
        !          3696: 
        !          3697: biosfs.c:
        !          3698: 
        !          3699:        PHYSCONS is such an ugly name; CONSOLE makes more sense.
        !          3700: 
        !          3701: 
        !          3702: 
        !          3703: PATCHLEVEL14::
        !          3704: 
        !          3705: 
        !          3706: 
        !          3707: mem.c:
        !          3708: 
        !          3709:        Allow the kernel to dynamically allocate memory region
        !          3710: 
        !          3711:        descriptors if it runs out; also, increase the number that
        !          3712: 
        !          3713:        it starts with by default.
        !          3714: 
        !          3715: util.c:
        !          3716: 
        !          3717:        Made it harmless to call kfree with a NULL argument.
        !          3718: 
        !          3719: proc.h,mem.c,dosmem.c,proc.c:
        !          3720: 
        !          3721:        Eliminate the 64 region per process limit, by making the "mem"
        !          3722: 
        !          3723:        and "addr" arrays dynamically allocated.
        !          3724: 
        !          3725: proc.c:
        !          3726: 
        !          3727:        Change the code for selecting which process to run next; if more
        !          3728: 
        !          3729:        than one process is on the ready queue, we use a per-process
        !          3730: 
        !          3731:        counter to prevent high priority processes from hogging all the
        !          3732: 
        !          3733:        time.
        !          3734: 
        !          3735: dosmem.c:
        !          3736: 
        !          3737:        Release a process' controlling terminal (by setting it's process
        !          3738: 
        !          3739:        group back to 0) if the process is a process group leader and
        !          3740: 
        !          3741:        is exiting.
        !          3742: 
        !          3743: dosfile.c,tty.c,*fs.c:
        !          3744: 
        !          3745:        Made do_open set terminals up correctly on open/close, and
        !          3746: 
        !          3747:        handle assigning process groups to them. Also, made the terminal's
        !          3748: 
        !          3749:        process group be set automatically on Fforce(-1,...).
        !          3750: 
        !          3751: main.c,timeout.c:
        !          3752: 
        !          3753:        Added AKP's code for better resolution of time usage.
        !          3754: 
        !          3755: DELETED FILES:
        !          3756: 
        !          3757:        xlate.c, xlate32.s, newdisk.s
        !          3758: 
        !          3759: everywhere:
        !          3760: 
        !          3761:        Removed all references to NEED_TRANSLATION. This is getting to be a
        !          3762: 
        !          3763:        pain to maintain, and nobody seems to actually use it.
        !          3764: 
        !          3765: *fs.c:
        !          3766: 
        !          3767:        Fixed the ENAMETOOLONG detection code in readdir (thanks, Steve!).
        !          3768: 
        !          3769: timeout.c:
        !          3770: 
        !          3771:        New function, nap, for processes that are in busy loops waiting for
        !          3772: 
        !          3773:        an event that probably won't happen for a while (e.g. waiting for
        !          3774: 
        !          3775:        the user to hit a key); use e.g. nap(60) to sleep for 60 milliseconds
        !          3776: 
        !          3777:        instead of yield().
        !          3778: 
        !          3779: mem.c:
        !          3780: 
        !          3781:        create_env() should use the value from the current process' basepage,
        !          3782: 
        !          3783:        since this may *not* be the same as the environment the process
        !          3784: 
        !          3785:        was actually started with
        !          3786: 
        !          3787: dosfile.c:
        !          3788: 
        !          3789:        Make Fcntl(fh, arg, F_SETFL) leave the file sharing mode alone as well
        !          3790: 
        !          3791:        as the read/write mode.
        !          3792: 
        !          3793: unifs.c:
        !          3794: 
        !          3795:        Change the name "fifo" to "pipe"; change "drva", "drvb" etc. into just
        !          3796: 
        !          3797:        "a", "b" etc.
        !          3798: 
        !          3799: dosmem.c:
        !          3800: 
        !          3801:        Make it possible to provide a name with Pexec mode 104. Provide a new
        !          3802: 
        !          3803:        mode 106 that starts a process in the background and automatically
        !          3804: 
        !          3805:        detaches the process TPA from the parent's memory.
        !          3806: 
        !          3807: 
        !          3808: 
        !          3809: PATCHLEVEL13::
        !          3810: 
        !          3811: 
        !          3812: 
        !          3813: biosfs.c:
        !          3814: 
        !          3815:        Made sure that tty_getchar() won't see (long) negative values
        !          3816: 
        !          3817:        returned from a successful read, by clearing the high bit
        !          3818: 
        !          3819:        of read values.
        !          3820: 
        !          3821: *fs.c,atarierr.h:
        !          3822: 
        !          3823:        Made file systems responsible for dealing with "." and "..";
        !          3824: 
        !          3825:        introduced a new (fake) EMOUNT error to indicate when ".." is
        !          3826: 
        !          3827:        found in a root directory (this is for the benefit of the
        !          3828: 
        !          3829:        unified file system code)
        !          3830: 
        !          3831: dosdir.c,filesys.c:
        !          3832: 
        !          3833:        Changes to allow for the unified file system.
        !          3834: 
        !          3835: unifs.c, makefile:
        !          3836: 
        !          3837:        New file, for a "unified" file system.
        !          3838: 
        !          3839: filesys.c, *fs.c:
        !          3840: 
        !          3841:        Renamed denyaccess() to denyshare().
        !          3842: 
        !          3843: dosdir.c:
        !          3844: 
        !          3845:        Changed getname() to work from the root down instead of from
        !          3846: 
        !          3847:        the directory up; this should work better for mounting and
        !          3848: 
        !          3849:        symbolic links.
        !          3850: 
        !          3851: dosdir.c:
        !          3852: 
        !          3853:        Moved the check for a drive specifier (A:\FOO) in Dsetpath to
        !          3854: 
        !          3855:        where it should have been, namely before any use of the drive.
        !          3856: 
        !          3857: biosfs.c,pipefs.c:
        !          3858: 
        !          3859:        In opendir, make sure the directory structure is properly
        !          3860: 
        !          3861:        initialized.
        !          3862: 
        !          3863: dos.c:
        !          3864: 
        !          3865:        Changed snice and srenice to pnice and prenice; also modified the
        !          3866: 
        !          3867:        return values to be 16 bit (for the normal case), and 32 bit
        !          3868: 
        !          3869:        negative for errors, so that low priority processes can be
        !          3870: 
        !          3871:        distinguished from errors.
        !          3872: 
        !          3873: debug*.c:
        !          3874: 
        !          3875:        The Bconstat() check for the printer should be applied to device
        !          3876: 
        !          3877:        0, not 1.
        !          3878: 
        !          3879: 
        !          3880: 
        !          3881: PATCHLEVEL12::
        !          3882: 
        !          3883: 
        !          3884: 
        !          3885: dosdir.c,filesys.c:
        !          3886: 
        !          3887:        Re-wrote Fsfirst/next to use opendir/readdir/closedir. Re-wrote
        !          3888: 
        !          3889:        the pat_match function to work correctly (at least, according
        !          3890: 
        !          3891:        to the TOS rules :-).
        !          3892: 
        !          3893: *fs.c, file.h:
        !          3894: 
        !          3895:        Added opendir/readdir/closedir calls to file systems to allow
        !          3896: 
        !          3897:        more general file systems; also changed getattr into getxattr
        !          3898: 
        !          3899:        (again, to allow file systems with extra goodies), setattr into
        !          3900: 
        !          3901:        chattr, and added chown and chmod calls. Deleted sfirst/snext
        !          3902: 
        !          3903:        file system entry points, and the Xsfirst/Xsnext system calls.
        !          3904: 
        !          3905: *fs.c,file.h,dosfile.c,dosdir.c:
        !          3906: 
        !          3907:        Changed file systems to have separate calls for reading/writing
        !          3908: 
        !          3909:        volume labels. Added checks to Fattrib and Fcreate to avoid creating
        !          3910: 
        !          3911:        files with bad attributes (e.g. FA_LABEL or FA_DIR and anything
        !          3912: 
        !          3913:        else).
        !          3914: 
        !          3915: main.c:
        !          3916: 
        !          3917:        Change the definition of tosvers so that TOS 1.0 corresponds
        !          3918: 
        !          3919:        to tosvers == 0x100, not tosvers == 0. Also, clean up the
        !          3920: 
        !          3921:        code for testing TOS versions.
        !          3922: 
        !          3923:        WARNING: This may break RAM TOS versions. I doubt it matters.
        !          3924: 
        !          3925: bios.c,main.c:
        !          3926: 
        !          3927:        Always set the kbshft variable, so that kbshift is more
        !          3928: 
        !          3929:        efficient.
        !          3930: 
        !          3931: dos.c:
        !          3932: 
        !          3933:        Eliminated the old code that allowed Super(-1L) to work (GEMDOS
        !          3934: 
        !          3935:        doesn't support this, so why should MiNT?)
        !          3936: 
        !          3937: dos.c:
        !          3938: 
        !          3939:        Added GEMDOS date and time routines, and made sure that
        !          3940: 
        !          3941:        datestamp and timestamp are initialized properly when
        !          3942: 
        !          3943:        MiNT is started.
        !          3944: 
        !          3945: mem.c:
        !          3946: 
        !          3947:        Increased the size of the buffer used for reading relocation
        !          3948: 
        !          3949:        information in load_region.
        !          3950: 
        !          3951: *fs.c, dosfile.c:
        !          3952: 
        !          3953:        Changed the filesystem getdev call to return a file cookie
        !          3954: 
        !          3955:        (this saves a call to lookup on every open).
        !          3956: 
        !          3957: *fs.c, filesys.c:
        !          3958: 
        !          3959:        Eliminated static variables, changed all routines that used to
        !          3960: 
        !          3961:        return pointers to cookies to take an extra argument (a pointer
        !          3962: 
        !          3963:        to the place to put the result).
        !          3964: 
        !          3965: tosfs.c:
        !          3966: 
        !          3967:        Turn O_COMPAT sharing mode into O_DENYNONE (after making other
        !          3968: 
        !          3969:        appropriate changes to the access modes).
        !          3970: 
        !          3971: debugold.c:
        !          3972: 
        !          3973:        Updated to reflect changes in debug.c.
        !          3974: 
        !          3975: debug.c:
        !          3976: 
        !          3977:        Added calls to va_end where appropriate.
        !          3978: 
        !          3979: debug.c:
        !          3980: 
        !          3981:        Before, hitting a key paused debugging output; now, debug_ws
        !          3982: 
        !          3983:        checks the device that output is going to, so that e.g. if it's
        !          3984: 
        !          3985:        going to the MIDI port, the output is paused when a character
        !          3986: 
        !          3987:        arrives on the MIDI port.
        !          3988: 
        !          3989: mem.c:
        !          3990: 
        !          3991:        Made exec_region use O_DENYNONE sharing mode instead of O_DENYW
        !          3992: 
        !          3993: 
        !          3994: 
        !          3995: PATCHLEVEL11::
        !          3996: 
        !          3997: 
        !          3998: 
        !          3999: dosfile.c:
        !          4000: 
        !          4001:        Forbid closing file handles < 0; this will prevent accidental
        !          4002: 
        !          4003:        destruction of the BIOS handles.
        !          4004: 
        !          4005: dosfile.c:
        !          4006: 
        !          4007:        Change Fbiosdev to be MIDI specific, rename it to Fmidipipe, and
        !          4008: 
        !          4009:        move it to dosfile.c. The semantics are a bit different, too;
        !          4010: 
        !          4011:        see the comments in dosfile.c.
        !          4012: 
        !          4013: bios.c:
        !          4014: 
        !          4015:        Really fix the MIDI output routines, this time. (sigh)
        !          4016: 
        !          4017: 
        !          4018: 
        !          4019: PATCHLEVEL10::
        !          4020: 
        !          4021: 
        !          4022: 
        !          4023: signal.c:
        !          4024: 
        !          4025:        Fixed a typo in the message printed when bombs occur. Also,
        !          4026: 
        !          4027:        removed the copying of data from the supervisor stack to the
        !          4028: 
        !          4029:        BIOS area -- this was causing very strange problems, and it's
        !          4030: 
        !          4031:        not clear that the info would be useful under MiNT anyway.
        !          4032: 
        !          4033:        Finally, all this is only supposed to happen for certain
        !          4034: 
        !          4035:        signals, not for any random killings.
        !          4036: 
        !          4037: 
        !          4038: 
        !          4039: PATCHLEVEL9::
        !          4040: 
        !          4041: 
        !          4042: 
        !          4043: file.h, *fs.c:
        !          4044: 
        !          4045:        Changed the definition of the DTA buffer to free up space for
        !          4046: 
        !          4047:        user/group id fields and an extended attributes field. Made
        !          4048: 
        !          4049:        sfirst/snext use the 'aux' field of the directory cookie
        !          4050: 
        !          4051:        as an index.
        !          4052: 
        !          4053: dos.c:
        !          4054: 
        !          4055:        Fixed Talarm() to return the number of seconds left before an
        !          4056: 
        !          4057:        alarm, not the number of milliseconds.
        !          4058: 
        !          4059: dosdir.c:
        !          4060: 
        !          4061:        New system calls, Xsfirst/Xsnext, for accessing file systems
        !          4062: 
        !          4063:        with long (>12 character) names.
        !          4064: 
        !          4065: signal.c:
        !          4066: 
        !          4067:        Fill in the BIOS post-mortem dump error correctly after
        !          4068: 
        !          4069:        bus errors, address errors, etc. Also, made the "bomb" replacement
        !          4070: 
        !          4071:        routine give the process basepage address and program counter,
        !          4072: 
        !          4073:        as suggested by AKP.
        !          4074: 
        !          4075: tosfs.c:
        !          4076: 
        !          4077:        Fixed the tos_lookup bug that was causing bus errors during file
        !          4078: 
        !          4079:        opens.
        !          4080: 
        !          4081: 
        !          4082: 
        !          4083: PATCHLEVEL8::
        !          4084: 
        !          4085: 
        !          4086: 
        !          4087: tosfs.c:
        !          4088: 
        !          4089:        Made opens with O_COMPAT sharing mode always open for both reading
        !          4090: 
        !          4091:        and writing; this is so broken TOS programs that write to read-only
        !          4092: 
        !          4093:        handles will continue to work.
        !          4094: 
        !          4095: file.h, tty.c:
        !          4096: 
        !          4097:        Added TIOCGWINSZ/TIOCSWINSZ and the appropriate window size
        !          4098: 
        !          4099:        fields to the tty structure to support them.
        !          4100: 
        !          4101: dossig.c:
        !          4102: 
        !          4103:        Remove user id checks (for now). Make it impossible to catch
        !          4104: 
        !          4105:        SIGSTOP.
        !          4106: 
        !          4107: bios.c:
        !          4108: 
        !          4109:        Fix so Bconout returns a value (it really should, at least for
        !          4110: 
        !          4111:        the printer).
        !          4112: 
        !          4113: mem.c:
        !          4114: 
        !          4115:        Don't context switch and retry alloc_region; file systems and some
        !          4116: 
        !          4117:        parts of the kernel aren't expecting the context switch, and besides
        !          4118: 
        !          4119:        the previous change makes this tactic less likely to be helpful.
        !          4120: 
        !          4121: mem.c:
        !          4122: 
        !          4123:        Don't allocate *all* of the memory to the basepage, leave some for
        !          4124: 
        !          4125:        the kernel and other programs.
        !          4126: 
        !          4127: pipefs.c:
        !          4128: 
        !          4129:        Add a check for broken pipes when a program is trying to write
        !          4130: 
        !          4131:        atomically.
        !          4132: 
        !          4133: dosmem.c:
        !          4134: 
        !          4135:        Block job control signals during a vfork instead of ignoring
        !          4136: 
        !          4137:        them; this will result in the "right" thing happening after
        !          4138: 
        !          4139:        the exec (since the blocked signals will then be unblocked).
        !          4140: 
        !          4141: tosfs.c:
        !          4142: 
        !          4143:        Eeek! Fixed a very serious bug in the garbage collection
        !          4144: 
        !          4145:        routines ("i" was used where "j" should have been in a loop:
        !          4146: 
        !          4147:        result: things could be garbage collected that shouldn't
        !          4148: 
        !          4149:        have been!)
        !          4150: 
        !          4151: procfs.c:
        !          4152: 
        !          4153:        changed the return value from "dfree" to more accurately indicate
        !          4154: 
        !          4155:        the free memory in the system, and to also provide information
        !          4156: 
        !          4157:        about the smallest unit of allocable memory (currently a longword)
        !          4158: 
        !          4159: *fs.c,dosfile.c,dosdir.c,filesys.c:
        !          4160: 
        !          4161:        instead of passing fcookies to file systems, pass pointers to
        !          4162: 
        !          4163:        them; this should slightly improve efficiency, and greatly
        !          4164: 
        !          4165:        improve portability (otherwise, compilers used to make
        !          4166: 
        !          4167:        installable file systems would have to have the same structure
        !          4168: 
        !          4169:        passing/return conventions as the one that compiled the kernel)
        !          4170: 
        !          4171: dos.c:
        !          4172: 
        !          4173:        new system call, Srenice(), to change priority of a different
        !          4174: 
        !          4175:        process
        !          4176: 
        !          4177: dos.c:
        !          4178: 
        !          4179:        change Fbiosdev() system call to take a pid argument
        !          4180: 
        !          4181: proc.h, dosfile.c:
        !          4182: 
        !          4183:        add per-file descriptor flags for things like "close on exec"
        !          4184: 
        !          4185: file.h, mem.c, *fs.c:
        !          4186: 
        !          4187:        new file open mode, O_EXEC, for the kernel to use in Pexec
        !          4188: 
        !          4189: rendez.c, dos.c:
        !          4190: 
        !          4191:        new file from AKP to implement a simple and fast message based
        !          4192: 
        !          4193:        IPC; the new system call is Pmsg. Also note that the syscall number
        !          4194: 
        !          4195:        of Pmsg is 0x125, which used to be used by Fbiosdev; Fbiosdev has
        !          4196: 
        !          4197:        been moved to 0x126.
        !          4198: 
        !          4199: filesys.c:
        !          4200: 
        !          4201:        applied Steve Henson's patches to improve path2cookie's handling of
        !          4202: 
        !          4203:        repeated slashes
        !          4204: 
        !          4205: proc.h:
        !          4206: 
        !          4207:        MAX_OPEN should be 32, not 20!
        !          4208: 
        !          4209: mem.c:
        !          4210: 
        !          4211:        Ignore "close on exec" flag for the standard handles (for some
        !          4212: 
        !          4213:        reason, bash manages to set these for 0,1,2; this is probably a bug
        !          4214: 
        !          4215:        in the port of bash, but on the other hand it's unlikely that
        !          4216: 
        !          4217:        anyone would really want to close the standard handles when doing
        !          4218: 
        !          4219:        an exec, anyway)
        !          4220: 
        !          4221: tty.c:
        !          4222: 
        !          4223:        Fixed RAW mode reads on terminals so that they're no longer
        !          4224: 
        !          4225:        terminated by '\r' or '\n' (and so that pty slaves aren't forced
        !          4226: 
        !          4227:        to read just 1 character at a time). Thanks to AKP for catching
        !          4228: 
        !          4229:        this.
        !          4230: 
        !          4231: 
        !          4232: 
        !          4233: PATCHLEVEL7::
        !          4234: 
        !          4235: 
        !          4236: 
        !          4237: *fs.c:
        !          4238: 
        !          4239:        Cleaned up the Dpathconf() return values to better reflect
        !          4240: 
        !          4241:        reality, and made the code a little easier to understand.
        !          4242: 
        !          4243: bios.c:
        !          4244: 
        !          4245:        Adjust bcostat() parameters so that V:\MIDI and V:\KBD call
        !          4246: 
        !          4247:        the right (wrong) device (BIOS devices 3 and 4 are mixed
        !          4248: 
        !          4249:        up for Bcostat).
        !          4250: 
        !          4251: dosmem.c:
        !          4252: 
        !          4253:        Made sure that Malloc(0L) always returns a NULL pointer.
        !          4254: 
        !          4255: dosfile.c:
        !          4256: 
        !          4257:        Made Fclose() of handles 0, 1, 2, and 3 restore the default
        !          4258: 
        !          4259:        mappings. (Apparently TOS _does_ do this, after all.)
        !          4260: 
        !          4261: bios.c:
        !          4262: 
        !          4263:        AHDI 3.1 added a new parameter to Rwabs; we now pass that
        !          4264: 
        !          4265:        along too.
        !          4266: 
        !          4267: timeout.c:
        !          4268: 
        !          4269:        Make canceltimeout() free the memory used by the time out
        !          4270: 
        !          4271:        descriptor. (another Fselect bug)
        !          4272: 
        !          4273: signal.h:
        !          4274: 
        !          4275:        Removed ABORT and ALARM from list of signals that are reported
        !          4276: 
        !          4277:        by the kernel.
        !          4278: 
        !          4279: proc.c:
        !          4280: 
        !          4281:        Moved checkalarms() to do_wakeup_things() so that short time outs
        !          4282: 
        !          4283:        will be properly recognized; this fixes a nasty bug in Fselect.
        !          4284: 
        !          4285: 
        !          4286: 
        !          4287: PATCHLEVEL6::
        !          4288: 
        !          4289: 
        !          4290: 
        !          4291: pipefs.c:
        !          4292: 
        !          4293:        Make writes of 1024 or fewer bytes atomic. Also, increase pipe
        !          4294: 
        !          4295:        buffer size to 4096.
        !          4296: 
        !          4297: tosfs.c:
        !          4298: 
        !          4299:        Make O_EXCL and O_TRUNC bits useful.
        !          4300: 
        !          4301: tosfs.c,pipefs.c,filesys.c:
        !          4302: 
        !          4303:        Fully implement file sharing modes for tosfs and pipefs. A new
        !          4304: 
        !          4305:        routine (denyaccess) is provided in filesys.c for checking
        !          4306: 
        !          4307:        file open modes and determining conflicts (if any).
        !          4308: 
        !          4309: pipefs.c:
        !          4310: 
        !          4311:        If a process writes on a broken pipe while ignoring SIGPIPE,
        !          4312: 
        !          4313:        the write now returns -1. (Thanks, Stephen)
        !          4314: 
        !          4315: debug.c, bios.c:
        !          4316: 
        !          4317:        Applied bammi's patches to PATCHLEVEL 5 to fix some typos.
        !          4318: 
        !          4319: 
        !          4320: 
        !          4321: PATCHLEVEL5::
        !          4322: 
        !          4323: 
        !          4324: 
        !          4325: debug.c, bios.c:
        !          4326: 
        !          4327:        Applied AKP's debugging output patches, to allow TRACE and
        !          4328: 
        !          4329:        DEBUG output to go to serial ports as well as the printer.
        !          4330: 
        !          4331: 
        !          4332: 
        !          4333: PATCHLEVEL4::
        !          4334: 
        !          4335: 
        !          4336: 
        !          4337: dos.c:
        !          4338: 
        !          4339:        NEW SYSTEM CALL: Fbiosdev() to control redirection of BIOS
        !          4340: 
        !          4341:        devices.
        !          4342: 
        !          4343: bios.c, proc.h:
        !          4344: 
        !          4345:        Added binput and boutput arrays to allow for per-process redirection
        !          4346: 
        !          4347:        of BIOS device input and output to GEMDOS file handles.
        !          4348: 
        !          4349: biosfs.c:
        !          4350: 
        !          4351:        Changed "mdi" to "midi".
        !          4352: 
        !          4353:        WARNING: this change could (I suppose) break existing code.
        !          4354: 
        !          4355: util.c:
        !          4356: 
        !          4357:        Added a umalloc() function to allocate memory in user space,
        !          4358: 
        !          4359:        and modified the various sfirst routines to use this to
        !          4360: 
        !          4361:        allocate space for patterns instead of kmalloc.
        !          4362: 
        !          4363: dosdir.c,file.h:
        !          4364: 
        !          4365:        Added an FS_CASESENSITIVE flag to control conversion of file
        !          4366: 
        !          4367:        names to upper case for TOS domain processes.
        !          4368: 
        !          4369: dosdir.c, *fs.c:
        !          4370: 
        !          4371:        Made sfirst/snext functions take an extra argument, the length
        !          4372: 
        !          4373:        of the file name field in the DTA buffer (so that we can provide
        !          4374: 
        !          4375:        Xsfirst/Xsnext functions that can work with longer names)
        !          4376: 
        !          4377: mem.c:
        !          4378: 
        !          4379:        Fixed exec_region so that the close-on-exec flag works.
        !          4380: 
        !          4381: filesys.c:
        !          4382: 
        !          4383:        Made path2cookie take the name of the place to store the last
        !          4384: 
        !          4385:        component of the path name as an argument (instead of always
        !          4386: 
        !          4387:        storing it in the global variable temp1).
        !          4388: 
        !          4389: biosfs.c:
        !          4390: 
        !          4391:        Added code for O_NDELAY on bios devices.
        !          4392: 
        !          4393: tosfs.c:
        !          4394: 
        !          4395:        Cleaned up garbage collection a bit -- I hope this fixes the
        !          4396: 
        !          4397:        problems with running out of indices.
        !          4398: 
        !          4399: filesys.c:
        !          4400: 
        !          4401:        Returned the special parsing code for CON:, AUX:, etc.
        !          4402: 
        !          4403: file.h:
        !          4404: 
        !          4405:        OOPS! The flock structure was missing an element (l_whence). It
        !          4406: 
        !          4407:        was added.
        !          4408: 
        !          4409:        WARNING: This change may break existing code.
        !          4410: 
        !          4411: util.c:
        !          4412: 
        !          4413:        Made kmalloc take a long parameter, just in case installable
        !          4414: 
        !          4415:        file systems need lots of memory.
        !          4416: 
        !          4417: file.h, atarierr.h, pipefs.c:
        !          4418: 
        !          4419:        Made file modes compatible with _FLK specification. Also
        !          4420: 
        !          4421:        added the ELOCKED and ENSLOCK errors to atarierr.h, and made
        !          4422: 
        !          4423:        pipefs.c use ELOCKED instead of EACCDN.
        !          4424: 
        !          4425:        WARNING: this *will* break existing programs. In particular, mgr
        !          4426: 
        !          4427:        no longer works :-( because O_NDELAY has changed. (this was
        !          4428: 
        !          4429:        temporarily patched)
        !          4430: 
        !          4431: dos.c,dosfile.c:
        !          4432: 
        !          4433:        Added Flock() system call.
        !          4434: 
        !          4435: mem.c:
        !          4436: 
        !          4437:        Made the initial user stack pointer low enough so that syscall.s
        !          4438: 
        !          4439:        won't run into the end of memory if the user makes a system call
        !          4440: 
        !          4441:        right away and doesn't push many parameters (the code in syscall
        !          4442: 
        !          4443:        always tries to copy a large chunk of the caller's stack).
        !          4444: 
        !          4445: dosmem.c:
        !          4446: 
        !          4447:        Made vfork'd processes ignore job control signals (thanks to
        !          4448: 
        !          4449:        Stephen for pointing out how some shells rely on BSD's similar
        !          4450: 
        !          4451:        behaviour).
        !          4452: 
        !          4453: 
        !          4454: 
        !          4455: PATCHLEVEL3::
        !          4456: 
        !          4457: 
        !          4458: 
        !          4459: dosfile.c, file.h, *fs.c, bios.c:
        !          4460: 
        !          4461:        Changed f_select to use the new timeout mechanism, and provided
        !          4462: 
        !          4463:        routines in device drivers to wake up selecting processes.
        !          4464: 
        !          4465: proc.h:
        !          4466: 
        !          4467:        New queue, SELECT_Q, for processes doing "select", to match above
        !          4468: 
        !          4469:        changes
        !          4470: 
        !          4471: dos.c:
        !          4472: 
        !          4473:        Changed t_alarm to use the new timeout mechanism.
        !          4474: 
        !          4475: timeout.c,proc.h:
        !          4476: 
        !          4477:        Added a new "timeout" mechanism, so that processes can specify
        !          4478: 
        !          4479:        an action to be taken when a counter expires.
        !          4480: 
        !          4481: various places:
        !          4482: 
        !          4483:        Cleaned up TRACE and DEBUG output
        !          4484: 
        !          4485: proc.c:
        !          4486: 
        !          4487:        Set current directory based on the TOS current directory
        !          4488: 
        !          4489:        when MiNT is starting up.
        !          4490: 
        !          4491: debug.c:
        !          4492: 
        !          4493:        Added AKP's "trace" mode patch
        !          4494: 
        !          4495: filesys.c:
        !          4496: 
        !          4497:        Replaced strcmp() for . and .. with direct comparisons, again
        !          4498: 
        !          4499:        per AKP.
        !          4500: 
        !          4501: tosfs.c:
        !          4502: 
        !          4503:        Improved search performance a bit (indicies are now allocated
        !          4504: 
        !          4505:        at the beginning of the list, instead of at the end)
        !          4506: 
        !          4507: main.c, version.h:
        !          4508: 
        !          4509:        Introduced PATCHLEVEL for alpha and beta test versions  
        !          4510: 
        !          4511: util.c:
        !          4512: 
        !          4513:        Made kmalloc() try the kernel memory region first for small
        !          4514: 
        !          4515:        regions, to cut down fragmentation of the user's memory space
        !          4516: 
        !          4517: proc.h:
        !          4518: 
        !          4519:        Made the system stacks bigger, to compensate for the bigger
        !          4520: 
        !          4521:        contexts now that there's FPU support
        !          4522: 
        !          4523: dosmem.c:
        !          4524: 
        !          4525:        Fixed bug with Pexec mode 6 (thanks again, AKP)
        !          4526: 
        !          4527: biosfs.c:
        !          4528: 
        !          4529:        Changed FD0 to STDIN, FD1 to STDOUT, etc.
        !          4530: 
        !          4531:        WARNING: this change could break existing code
        !          4532: 
        !          4533: filesys.c:
        !          4534: 
        !          4535:        '/' is no longer a directory separator for MiNT domain processes
        !          4536: 
        !          4537:        (few were using it, and it simplifies things to be able to
        !          4538: 
        !          4539:        assume '\' is the only such separator).
        !          4540: 
        !          4541:        WARNING: this change could break existing code
        !          4542: 
        !          4543: all over the place:
        !          4544: 
        !          4545:        Changed the way directories/files are stored. We now have
        !          4546: 
        !          4547:        "file cookies" for directories, instead of strings. We
        !          4548: 
        !          4549:        also now have two directories per drive per process
        !          4550: 
        !          4551:        (a root and current).
        !          4552: 
        !          4553: minixfs.c:
        !          4554: 
        !          4555:        Removed from the main compile, and MINIX_FS symbol was also
        !          4556: 
        !          4557:        removed -- this will be a loadable file system someday
        !          4558: 
        !          4559:        (soon, I hope).
        !          4560: 
        !          4561: various places:
        !          4562: 
        !          4563:        Added Alex Kiernan's patches to support compilation under
        !          4564: 
        !          4565:        Lattice C v5
        !          4566: 
        !          4567: proc.h, context.s:
        !          4568: 
        !          4569:        Added Alex Kiernan's FPU co-processor patches. WARNING: this
        !          4570: 
        !          4571:        changes the layout of the proc structure in memory, and so
        !          4572: 
        !          4573:        breaks "ps" and similar programs.
        !          4574: 
        !          4575: proc.c:
        !          4576: 
        !          4577:        Changed sleep() to take the wait condition as an argument; this
        !          4578: 
        !          4579:        means that fewer things need to know the internals of the
        !          4580: 
        !          4581:        PROC structure
        !          4582: 
        !          4583: various places:
        !          4584: 
        !          4585:        Added AKP's T_TOSTOP flag changes
        !          4586: 
        !          4587: minixfs.c:
        !          4588: 
        !          4589:        Changed the 8K buffer in do_change to a static variable; our
        !          4590: 
        !          4591:        stacks aren't *that* big!
        !          4592: 
        !          4593: intr.s:
        !          4594: 
        !          4595:        Fixed a typo that was causing serious problems with the bus
        !          4596: 
        !          4597:        error and other exception codes on the TT (thanks for
        !          4598: 
        !          4599:        catching this, Allan).
        !          4600: 
        !          4601: dosmem.c,signal.c:
        !          4602: 
        !          4603:        Corrected the GEMDOS termination vector code (the system stack
        !          4604: 
        !          4605:        was being corrupted if the user's code returned). Thanks to
        !          4606: 
        !          4607:        Julian Reschke for catching this error.
        !          4608: 
        !          4609: ===========================================================================
        !          4610: 
        !          4611: version 0.8
        !          4612: 
        !          4613: 
        !          4614: 
        !          4615: biosfs.c, pipefs.c:
        !          4616: 
        !          4617:        fix ^C and ^Y to send the signals to the whole process group,
        !          4618: 
        !          4619:        and also to make sure processes don't read these keys if
        !          4620: 
        !          4621:        they're turned into signals
        !          4622: 
        !          4623: intr.s,dossig.c:
        !          4624: 
        !          4625:        fix exception handlers to be more careful about the distinction
        !          4626: 
        !          4627:        between being in or out of the kernel
        !          4628: 
        !          4629: intr.s, syscall.s, main.c:
        !          4630: 
        !          4631:        make sure interrupts are off before changing any vectors
        !          4632: 
        !          4633: bios.c:
        !          4634: 
        !          4635:        fixed the annoying problems with CTRL-ALT-Fx sometimes leaving
        !          4636: 
        !          4637:        keys in the buffer
        !          4638: 
        !          4639: signal.c:
        !          4640: 
        !          4641:        forced p_sigreturn() with no signal pending to unwind the
        !          4642: 
        !          4643:        *whole* signal stack, in case there were multiple signals
        !          4644: 
        !          4645:        pending at the time the user did a longjmp() (or whatever
        !          4646: 
        !          4647:        prompted the Psigreturn())
        !          4648: 
        !          4649: dosmem.c:
        !          4650: 
        !          4651:        p_wait3 now supports the WUNTRACED bit; if this isn't set,
        !          4652: 
        !          4653:        processes stopped due to job control are *not* returned
        !          4654: 
        !          4655: dosmem.c:
        !          4656: 
        !          4657:        removed dLibs kludge -- some programs rely on p_parent being
        !          4658: 
        !          4659:        non-zero to tell them that they're not accessories
        !          4660: 
        !          4661: various places:
        !          4662: 
        !          4663:        cleaned up job control stuff to be more Unix like
        !          4664: 
        !          4665: mem.c,util.c:
        !          4666: 
        !          4667:        added a new memory map for the kernel -- this should ease
        !          4668: 
        !          4669:        the problems with programs grabbing all of available memory
        !          4670: 
        !          4671: mem.c,dosmem.c:
        !          4672: 
        !          4673:        incorporated Allan's bugfixes; alternative RAM should work now
        !          4674: 
        !          4675: signal.c, main.c, intr.s:
        !          4676: 
        !          4677:        integrated signals with normal exceptions, so that e.g.
        !          4678: 
        !          4679:        a bus error raises SIGBUS. This improves the survivability
        !          4680: 
        !          4681:        of the kernel, so that a bus error resulting from a bad
        !          4682: 
        !          4683:        system call parameter won't kill MiNT, just the offending
        !          4684: 
        !          4685:        process.
        !          4686: 
        !          4687: proc.c:
        !          4688: 
        !          4689:        kludge to let low priority processes run every so often, even
        !          4690: 
        !          4691:        in the presence of a high priority process that is ready to run
        !          4692: 
        !          4693: atarierr.h:
        !          4694: 
        !          4695:        ENMFIL is -49, not -47 -- so much for Abacus' docs :-)
        !          4696: 
        !          4697: procfs.c:
        !          4698: 
        !          4699:        changes to allow read/write from process space
        !          4700: 
        !          4701: minixfs.[ch]:
        !          4702: 
        !          4703:        changed lots of function parameter types to avoid promotion and
        !          4704: 
        !          4705:        prototype problems with 32 bit code
        !          4706: 
        !          4707: bios.c:
        !          4708: 
        !          4709:        changed IOREC to IOREC_T to avoid name conflicts with some osbind.h
        !          4710: 
        !          4711: biosfs.c:
        !          4712: 
        !          4713:        made mouse driver change the line A mouse position variables, so MGR
        !          4714: 
        !          4715:        will work with bigscrn and similar large screen emulators
        !          4716: 
        !          4717: minixfs.c:
        !          4718: 
        !          4719:        new version from Stephen, now supports floppies and other removable
        !          4720: 
        !          4721:        media
        !          4722: 
        !          4723: mem.c, dosmem.c, dos.c:
        !          4724: 
        !          4725:        added code to support new TT TOS calls Mxalloc and Maddalt, plus
        !          4726: 
        !          4727:        program flags for loading/mallocing in alternate memory
        !          4728: 
        !          4729: bios.c,biosfs.c,dosfile.c:
        !          4730: 
        !          4731:        changed so that bios handles 0 and 1 can be redirected just like
        !          4732: 
        !          4733:        handle 2 (via the new file handles -3 and -2 respectively; AUX:
        !          4734: 
        !          4735:        and PRN: now refer to these files, and RS232 and CENTR to the
        !          4736: 
        !          4737:        physical devices)
        !          4738: 
        !          4739: dosdir.c:
        !          4740: 
        !          4741:        Dsetdrv() fixed to return an error indication when one happens
        !          4742: 
        !          4743: dos.c:
        !          4744: 
        !          4745:        fixed Super() bug (thanks Stephen)
        !          4746: 
        !          4747: minixfs.c:
        !          4748: 
        !          4749:        incorporated changes to handle 1K sector sizes
        !          4750: 
        !          4751: 
        !          4752: 
        !          4753: =============================================================================
        !          4754: 
        !          4755: version 0.7
        !          4756: 
        !          4757: 
        !          4758: 
        !          4759: minixfs.c:
        !          4760: 
        !          4761:        new file, courtesy of Stephen N. Henson ([email protected])
        !          4762: 
        !          4763:        this is still "under construction"; see minixfs.doc for more details
        !          4764: 
        !          4765: bios.c:
        !          4766: 
        !          4767:        CTRL-ALT-UNDO now raises SIGQUIT, for the benefit of people with
        !          4768: 
        !          4769:        foreign ROMs (some have trouble with ^\)
        !          4770: 
        !          4771: filesys.c:
        !          4772: 
        !          4773:        changed pathname resolution code so that multiple slashes in a file
        !          4774: 
        !          4775:        name have the same effect as single slashes. POSIX mandates this,
        !          4776: 
        !          4777:        and some Unix programs expect it, too
        !          4778: 
        !          4779: dosmem.c:
        !          4780: 
        !          4781:        changed do_vfork() code so that the text segment of processes is
        !          4782: 
        !          4783:        *not* saved in a fork() if the process has separate text, data, and
        !          4784: 
        !          4785:        bss segments; this saves a fair bit of memory
        !          4786: 
        !          4787: proc.c:
        !          4788: 
        !          4789:        changed the process initialization code to better deal with job
        !          4790: 
        !          4791:        control; also changed handle 2 to be AUX: (as under TOS) rather
        !          4792: 
        !          4793:        than PRN:
        !          4794: 
        !          4795: bios.c:
        !          4796: 
        !          4797:        added CTRL-ALT-F5 (show memory usage) and CTRL-ALT-F6
        !          4798: 
        !          4799:        (show processes)
        !          4800: 
        !          4801: filesys.c:
        !          4802: 
        !          4803:        make explicit the fact the individual file names are limited to
        !          4804: 
        !          4805:        14 characters
        !          4806: 
        !          4807: everywhere:
        !          4808: 
        !          4809:        change FILENAME_MAX to PATH_MAX
        !          4810: 
        !          4811: mem.c:
        !          4812: 
        !          4813:        fixed up comments and debugging/trace info for load_region
        !          4814: 
        !          4815: dossig.c:
        !          4816: 
        !          4817:        NEW SYSTEM CALL: Psigpending() returns the set of signals that
        !          4818: 
        !          4819:        have been sent to the process, but not yet delivered.
        !          4820: 
        !          4821: dos.c, dosdir.c:
        !          4822: 
        !          4823:        NEW SYSTEM CALLS:
        !          4824: 
        !          4825:        Sysconf(n) returns information about the global limits of the
        !          4826: 
        !          4827:        currently running version of MiNT
        !          4828: 
        !          4829:        Dpathconf(name, n) returns information about the file system that
        !          4830: 
        !          4831:        the file "name" is located on
        !          4832: 
        !          4833: bios.c:
        !          4834: 
        !          4835:        allow CTRL-ALT-C, CTRL-ALT-\, and CTRL-ALT-Z to force a SIGINT,
        !          4836: 
        !          4837:        SIGQUIT, or SIGTSTP, respectively, even if the terminal is in raw
        !          4838: 
        !          4839:        mode
        !          4840: 
        !          4841: various places:
        !          4842: 
        !          4843:        call zero() instead of bzero()
        !          4844: 
        !          4845: context.s,intr.s:
        !          4846: 
        !          4847:        changes to make MiNT TT compatible. Thanks to Allan Pratt for this!
        !          4848: 
        !          4849: biosfs.c, tosfs.c, pipefs.c, procfs.c:
        !          4850: 
        !          4851:        fsfirst/fsnext return all upper case in TOS domain now, but
        !          4852: 
        !          4853:        lower case (or mixed) in MiNT domain; this is to try to wean
        !          4854: 
        !          4855:        programmers off of the habit of assuming everything is upper case
        !          4856: 
        !          4857:        (and converting accordingly)
        !          4858: 
        !          4859: biosfs.c:
        !          4860: 
        !          4861:        made mouse compatible with TOS ALT-cursor keys (the Y direction was
        !          4862: 
        !          4863:        wrong before)
        !          4864: 
        !          4865: intr.s:
        !          4866: 
        !          4867:        IPL 7 before reboot (thanks, Allan)
        !          4868: 
        !          4869: version.h, main.c:
        !          4870: 
        !          4871:        made version numbering a bit easier (big deal)
        !          4872: 
        !          4873: main.c:
        !          4874: 
        !          4875:        AARGH! The cookie jar stuff was plain wrong (the last cookie should
        !          4876: 
        !          4877:        have the total number of slots, not just the ones that are free).
        !          4878: 
        !          4879: main.c:
        !          4880: 
        !          4881:        pass current environment along to init.prg, instead of forcing an
        !          4882: 
        !          4883:        empty environment
        !          4884: 
        !          4885: signal.c:
        !          4886: 
        !          4887:        corrected killpg() bug (wasn't checking signals, so the current
        !          4888: 
        !          4889:        process didn't get the signal until later)
        !          4890: 
        !          4891: mem.c, dosmem.c:
        !          4892: 
        !          4893:        made sure that all sizes would always be rounded to the nearest
        !          4894: 
        !          4895:        longword. Just in case they aren't, Malloc(-1L) rounds down to the
        !          4896: 
        !          4897:         next smallest longword.
        !          4898: 
        !          4899: lots of places:
        !          4900: 
        !          4901:        memory handling was overhauled completely; kmalloc now allocates
        !          4902: 
        !          4903:        memory from the same space as do m_alloc and p_exec, so there is
        !          4904: 
        !          4905:        no artificial constraint on the number of processes
        !          4906: 
        !          4907: ===========================================================================
        !          4908: 
        !          4909: version 0.6
        !          4910: 
        !          4911: 
        !          4912: 
        !          4913: dos.c:
        !          4914: 
        !          4915:        added Talarm() and Pause() system calls
        !          4916: 
        !          4917: bios.c, tty.c, pipefs.c:
        !          4918: 
        !          4919:        added real tty structures that programs can manipulate
        !          4920: 
        !          4921: proc.c:
        !          4922: 
        !          4923:        added some sanity checks for things like stack overflow
        !          4924: 
        !          4925: signal.c:
        !          4926: 
        !          4927:        revamped signal handling so that Psigreturn() no longer needs an
        !          4928: 
        !          4929:        argument.
        !          4930: 
        !          4931: dosmem.c:
        !          4932: 
        !          4933:        made Pexec'ing processes immune to SIGINT, SIGHUP, and SIGTSTP
        !          4934: 
        !          4935: intr.s:
        !          4936: 
        !          4937:        fixed the Psigreturn race condition bug
        !          4938: 
        !          4939: biosfs.c, pipefs.c, filesys.c, util.c:
        !          4940: 
        !          4941:        added case-insensitive string comparison routine, and modified the
        !          4942: 
        !          4943:        file systems to use it
        !          4944: 
        !          4945: bios.c, console.c:
        !          4946: 
        !          4947:        changed return values of status calls from 1 to -1, to be TOS
        !          4948: 
        !          4949:        compatible
        !          4950: 
        !          4951: dos.c:
        !          4952: 
        !          4953:        added new calls to get resource usage, and set resource limits
        !          4954: 
        !          4955: dosfile.c:
        !          4956: 
        !          4957:        added new call, f_select
        !          4958: 
        !          4959: signal.c:
        !          4960: 
        !          4961:        changed so stopped processes always have a return code of 0177
        !          4962: 
        !          4963: biosfs.c:
        !          4964: 
        !          4965:        added a fake "third button" on the mouse (you get it by holding down
        !          4966: 
        !          4967:        a shift key and a mouse button)
        !          4968: 
        !          4969:        made mouse_read return at least 1 byte
        !          4970: 
        !          4971: bios.c, proc.c, biosfs.c:
        !          4972: 
        !          4973:        added code to check for CTRL-ALT-key combinations on every
        !          4974: 
        !          4975:        process switch; thus, debugging, rebooting, etc. do not require
        !          4976: 
        !          4977:        waiting for a read from the keyboard. Also, ^C sends a SIGINT
        !          4978: 
        !          4979:        immediately, and ^Z (SIGTSTP) and ^\ (SIGQUIT) take effect
        !          4980: 
        !          4981:        right away, too.
        !          4982: 
        !          4983:        CTRL-ALT-DEL supported for TOS < 1.4
        !          4984: 
        !          4985: 
        !          4986: 
        !          4987: =========================================================================
        !          4988: 
        !          4989: version 0.5
        !          4990: 
        !          4991: 
        !          4992: 
        !          4993: First publically released version (made available for FTP as a beta test)
        !          4994: 
        !          4995: 
        !          4996: 

unix.superglobalmegacorp.com

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