|
|
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.