List of recent changes/comments on MagiC 6.1=>6.2 =========================================================== ###################################################################### # Translation to English by Ekkehard Flessa, 2001-09-13. ef@ektus.de # ###################################################################### 27.3.99 ------- - (X)BIOS: negative function numbers no longer cause system crash. 5.4.99 ------ - Atari: new routines for real-time clocks. Should glitches occur, please report. - Atari: When reading and setting the IKBD clock, values 0..79 should be interpreted as 2000 through 2079 now. This should only affect older STs without RTC, though. - shel_write() is capable of working with command lines in excess of 32k length now. Thus, MGCOPY copes with being passed many files at startup (later on, parameters are passed with VA_START). 9.4.99 ------ - MGEDIT: Exiting may be abandoned with the "Abbruch" button in the "Datei sichern? Ja/Nein/Abbruch" alert. (Save file? yes/no/abandon) 2.5.99 ------ - This is a test version, therefore retain your old 6.10! The extensive changes are likely to contain some errors! The entire Pexec()-handling has been re-written, plus everything to do with file handles. This version now stores the handles locally for each process, and additionally, the F_SETFD/F_GETFD-stuff as well as O_NOINHERIT are supported. P(v)fork() should work correctly with this version. - Fcntl(F_DUPFD) added. - Fdup() duplicates all handles. - Fforce() is capable of redirecting all handles. - Additionally, I've reworked the routine with the bi-directional pipes. It should work as under MiNT now and assign the "creator"-page only once, namely during creation. Any further access will open the "client" side. 10.5.99 ------- - DOS: Several error corrections around the new handle-concept (shutdown, Fcntl(F_DUPFD), process name with Pexec(200), ...). - AES (menu manager): On entering the menu with the mouse, the screen is no longer blocked up to the next mouse click if the mouse pointer has been moved over a disabled menu entry. 13.6.99 ------- - VT52: Iconify is working now. Iconified windows are displayed with an image as contents, with input, output and marking of contents disabled. If a program outputs to an iconified window, this is visible as a change in the icon image. 17.6.99 ------- - Fcntl(F_DUPFD) no longer returns garbage in the Hi-word on success. 22.6.99 ------- - When creating a pipe, the flag for "Pseudo-TTY" is evaluated at least to the extent that 0 instead of EACCDN will be returned for a "seek" on such pipes. - Long file names may be enabled permanently for U:. As U: cannot be unmounted, the long names are simply enabled "temporarily". 2.6.99 ------ - For processes in the MiNT-domain, Fclose() also closes the standard file handles 0 through 5. For processes in the TOS-domain, the corresponding BIOS-devices continue to be entered. (Don't ask me. I don't understand the german sentence, either. Ekkehard) 3.6.99 ------ - DOS Ssysconf() with sub-functions 0,1,2 implemented. 30.6.99 ------- - AES: The position of the underscore, e.g. in buttons, is coded in bits 8-11 only, as described in the documentation OBTYPES.TXT. Therefore, the high-byte of ob_state is defined as: 0x00 - 0x0f underline just one character 0x10 - 0xfe reserved 0xff underline the entire object - MAGXDESK: "Locate original" no longer leads to a bus error if the alias content is invalid. - AES, menu manager: I've removed the BEG_MCTRL so that keyboard inputs with open menus will not go to the screen manager but to the application (as it used to be before MagiC 5.1). - The redirection of boot messages should be working again. I've temporarily bent the pointer toward the current process in order to access the file handle. Not very pretty, but functional. (Don't ask me. I don't really understand the german sentence, either. Ekkehard) 11.7.99 ------- - The domain (TOS/MINT) will be inherited at Fork(). 5.8.99 ------ - The redesign of the handle-concept to use MiNT-like process-local handles, even for the standard-handles -1, -2 and -3, has the result that the old redirection of the device-handles and therefore also the standard handles 0..5 to other device drivers (e.g. "u:/dev/xyz") can and may no longer work. For this reason, I've introduced new entries similar to MiNT in the [boot] section of the MAGX.INF file, with which this redirection can be performed. In addition, I've modified the boot order and introduced the possibility to adapt the u:/dev directory better to the actual machine, e.g. the Milan. This is of interest in case there are fewer (no MIDI) or more (additional serial ports) than on original Ataris (until now, names and numbers have been machine-type-dependent, which is not sensible on Mac and Milan computers). The concept in detail: 1. On booting, all devices in U:\DEV and all handles are created normally at first, so that there are no changes for HDDRIVER, which uses DOS-calls for text input/output. 2. Then the file MAGX.INF is read. 3. All handles -4 through 5 are closed again and thus become invalid. Furthermore, all devices with exception of NULL are deleted from U:\DEV. 4. Device drivers and file system drivers are installed. Naturally, these can then not make DOS-calls to device handles. BIOS-calls have to be used. But such a driver could, for instance, be installed as U:\DEV\CON. 5. All entries from the [boot] section of the MAGX.INF with the keyword "biosdev" are evaluated. There could be, for instance, the definition of a second serial port with "biosdev=7,u:\dev\modem2". Those device will use a very basic DOS-driver, which will simply call the BIOS functions, with two exceptions: Device 2 (with line editor) and device 3 (ostat and istat are interchanged for MIDI). 6. If the device entries do not exist yet, then "u:/dev/con" with BIOS-device 2, "u:/dev/prn" with BIOS-device 0 and "u:/dev/aux" with BIOS-device 1 are created a second time. 7. All "con", "aux" or "prn" entries from the [boot] section of MAGX.INF are interpreted. It's possible to redirect keyboard input via handle -1 to another device. Or another example: "prn=u:\dev\fastprn" installs a different driver for handle -3. 8. Now, all still unassigned handles in the -3 to -1 range are linked to the usual files, e.g. handle -1 to "u:\dev\con". 9. Finally, the standard-handles of the boot process are replaced with the negative handles, e.g. handles 0 and 1 with handle -1. As without changes to the MAGX.INF some device names in u:/dev will be missing, here are some examples for various machine types: Atari ST: biosdev=3,u:\dev\midi biosdev=6,u:\dev\modem1 Atari Mega-STE: biosdev=3,u:\dev\midi biosdev=6,u:\dev\modem1 biosdev=7,u:\dev\modem2 biosdev=8,u:\dev\serial2 Atari TT: biosdev=3,u:\dev\midi biosdev=6,u:\dev\modem1 biosdev=7,u:\dev\modem2 biosdev=8,u:\dev\serial1 biosdev=9,u:\dev\serial2 Atari Falcon: biosdev=3,u:\dev\midi biosdev=6,u:\dev\modem1 biosdev=7,u:\dev\lan 26.12.99 -------- - Beta-versions no longer have an expiry date. - The size of U:\ has been enlarged from 40 to 64 entries. Nevertheless, I wonder how it is possible to use so many entries. Perhaps by writing all filenames in lower case? - For filesystems supporting strict distinction of upper/lower case, I've put all references to filenames (#include) in the *.H and *.C files belonging to the documentation in lower case. 30.12.99 -------- - Removed serious error from MagicMac OS, which resulted in inability to access the Mac filesystem. - Added Pgetuid(), Psetuid(), Pgeteuid(), Pseteuid(), Psetreuid(), Psetregid(), Pgetauid(), Psetauid(), Pgetegid(), Pgetgid(), Psetgid() calls. This means that these functions can be called and will return random values (are also inherited with Pexec()). As opposed to MiNT, there are no restrictions whatsoever regarding access to files, BIOS-calls, time set functions, processes etc., i.e. "foreign" processes can be still be killed. The User/GroupID- functions do only exist for compatibility reasons. Therefore, currently the following list of MiNT-GEMDOS-functions isn't supported (I'm sure there are even more of them by now): Pnice() Prusage() Talarm() Pmsg() Fmidipipe() Prenice() Salert() Tmalarm() And lots of Fcntl()-functions, especially for terminals. Pnice() und Prenice() would be quite easy to implement (or rather simulate, as they would have no effect). All those terminal-Fcntls() are real Sysyphos-work (an ancient Greek hero who rolled a boulder up 95% of a hill all the time only to see it roll down again. Ekkehard), and so is the not yet supported special-pipe (pseudo-TTY 0x04). The Unix-pipe (0x20) would be relatively easy to implement, but I wonder who would need it. 2.1.2000 -------- - Pnice() und Prenice() implemented. The values are just stored and limited to the interval -20..20, but have no effect on the process priority. That would also be rather pointless, as the priority is not valid for the process but for a thread, and it has to be possible to assign different priorities to different threads within one process. 9.1.2000 -------- - Repaired an uninitialized variable which on the Mac caused random crashes during deletion of device files in u:\dev after booting. On my G3 I had no problems, on the AWS the previous version crashed, but only with boot image active. - The routines for defining the device names in u:\dev should also work on Atari and PC now. (Andreas is working with Mac. Ekkehard) 20.1.2000 --------- - Talarm() und Tmalarm() implemented. 29.1.2000 --------- - Error in FAT32-filesystem removed. Dfree() would return a false number of free clusters after the disk had been changed at least once. 20.2.2000 --------- - The FSINFO-sector of FAT32-file systems is (I hope) handled correctly now. Opening of a FAT32 partition that has been inactive since the last boot should be appreciably faster now. Data in the FSINFO-sector are only written if there was actual write access. If a drive was used for reading only, invalid entries in the FSINFO sector will not be made valid and the first access after the next boot will be slow again (due to the fact that the free space is calculated by counting the free sectors in the whole FAT). 2.10.2000 --------- - wind_set(WF_ICONFIFY): If the rectangle is passed as {-1,-1-1,-1}, the AES finds some free space on the desktop by itself for the iconified window. Now, even the space occupied by the window to be iconified can be used. Due to an error, previously the window to be iconified was considered as already iconified when looking for a free place, and therefore the iconified window could not be placed there.