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