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