FreeMiNT 1.17.0

@mikrosk mikrosk released this Jan 28, 2017 · 1670 commits to master since this release

==============================================================================
 ==                                                                        ==
    ==                     FreeMiNT 1.17.0 release                      ==
    ==              Dedicated to the memory of Frank Naumann            ==
 ==                                                                        ==
==============================================================================


It has been a very long time since the last official FreeMiNT kernel release.
1.16 was only ever released in a BETA form and the 1.15 release dates back over
10 years. The new 1.17.0 release is a culmination of 1.16 over the years with
some notable new items and bug fixes.

One thing that this release really lacks is Frank Naumann. Frank passed
away on the 12th March 2010. He will be sorely missed from the Atari community
and this release is dedicated to him and the efforts he made during his life.

Alan Hourihane <alanh@freemint.org>
------------------------------------
December 29th, 2010


XAAES Changes:
--------------

- Updated documentation
- Improved Task manager
  ( Detailed process info, also list application-windows, Load Graph )
- Single Tasking mode
- File Selector: improved case sensitive pattern matching,
  if the first char in pattern is the pipe-sysmbol (|) the
  pattern-list is caseinsensitive,
  concatenation of patterns with |
- launchpath config variable (previously "launcher"):
  Extended pattern matching, example:
  launchpath=<somepath>\*.prg|*.app|*.tos|*.ttp|*.acc|!*.*
- new config-variable: snapshot (can lunch internal & external snapshot app)
- Adjustable default font size (config-variable standard_font_point)
  for each app (app_options).
- New global config-variable "infoline_point" for size of window-infoline
- Support for "extended textures"
- Improved compatibility with EmuTos
- Manages a list of processes which shouldn't be killed shutdown
 (CTLALTA_SURVIVORS)
- Implement text-effects for list-text:
   Italic:<i>text</i>
   Bold:<b>text</b>
   Underlined:<u>text</u>
- New ctrl-alt key-shortcuts (look into XaAES about Dialog for a list)
- It is now possible to run XaAES from atari-desktop.
- Content of about-window is read at runtime from xa_help.txt.

XAAES Bugfixes:
---------------
 - Fixed many redraw issues ( like drawing of transparent RSC Elements )
 - Several bugfixes for Resource File loading
 - Various other Bugfixes of "small bugs" ( not so interesting for users )
 - Corrected the font-selector: List all fonts, style and family only 
   valid for outline-fonts.

Kernel Changes:
---------------

 - FAT fs: Renaming of files in-use is allowed
 - Single Tasking mode

Kernel Bugfixes:
----------------

 - fixed load of keyboard tables when memory protection is turned on
 - Shutdown procedure fixed
 - TCP connect sequence fixed
 - Various other Bugfixes of "small bugs" ( not so interesting for users )

FreeMint 1.16.2b

@mikrosk mikrosk released this Jan 28, 2017 · 2263 commits to master since this release

beta-1_16_2

Added ChangeLog of 1.16.2 beta release.

FreeMiNT 1.16.1b

@mikrosk mikrosk released this Jan 28, 2017 · 2364 commits to master since this release

==============================================================================
 ==                                                                        ==
    ==                  FreeMiNT 1.16.1 beta release                    ==
 ==                                                                        ==
==============================================================================


Index
=====

1 Preface
  1.1 Notes on the 1.16.1 beta release

2 Contributors

3 Installation
  3.1 Overview
      3.1.1 Boot menu & basic settings
      3.1.2 The new sysdir strategy
  3.2 Simple installation
  3.3 Special installations
      3.3.1 Upgrading EasyMiNT
      3.3.2 KGMD
  3.4 Configuration
      3.4.1 xdd/xfs modules
      3.4.2 Important changes
      3.4.3 New options
  3.5 Tips & tricks

4 Getting in contact

5 Problems
  5.1 Known problems
  5.2 How to report a bug

6 Changes in FreeMiNT 
  6.1 FreeMiNT Kernel
      6.1.1 New system calls
      6.1.2 New modules
      6.1.3 Internal changes
      6.1.4 New debug facilities
  6.2 XaAES
      6.2.1 The XaAES kernel module
      6.2.1 The XaAES loader
  6.3 System tools
      6.3.1 COPS
      6.3.2 sysctl

7 Development
  7.1 Application development
  7.2 Kernel development


==============================================================================

1 Preface
---------

It has been a very long time since the last official FreeMiNT kernel release.
For the 1.16 kernel line I wanted to do so many things that require lots of 
time and while all of the planned changes have not yet been made, I decided to
make a new beta release available. The reason for this was that the current
state of things seems very stable to me and all alpha testers. Furthermore,
there are lots of new and nice features. Perhaps the most exciting news
recently is the integration of XaAES, the multitasking AES for FreeMiNT. Many
thanks to Henk Robbers for his XaAES development in the last few years. In the
beginning of 2003 he handed over responsibility for maintaining XaAES to the
FreeMiNT project and I then started to integrate it into the FreeMiNT CVS
repository.

An overview of the most important changes and additions is available in
section 6 of this document. Section 3 hopefully covers all aspects of the
FreeMiNT installation. As the installation and booting process of the kernel
differs significantly from previous releases it's recommended you read through
section 3 carefully!

Do keep in mind that I'm not a native speaker of the English language, so
please excuse any typing errors and grammatical errors. I'd be grateful for
corrections and feedback. Don't hesitate to contact me or write to the MiNT
mailing list. Please see section 4 for more details on how to contact me or
write to the MiNT mailing list.

1.1 Notes on the 1.16.1 beta release
------------------------------------

This is mainly a bugfix release compared to the 1.16.0 beta release. I thank
all those who tested and tried out the 1.16.0 beta release and send back
bug reports, suggestions and notes. We concentrated us on correcting bugs
and stability improvements. This 1.16.1 beta release is the result of
this process. Especially the XaAES kernel module is improved a lot. It's now
much more compatible and stable. There are also a lot more configuration
options for XaAES to customize behaviour and look & feel to your own
preferences. See the example xaaes.cnf for the documentation about these new
options.

As before this is a public beta release and everyone is welcome to test
it out and send critics, bug reports and suggestions to me or the MiNT
mailing list. Please see in chapter 4 and chapter 5.2 how to contact us
or how to reporting a bug.

Frank Naumann <fnaumann@freemint.de>
------------------------------------
Magdeburg, October 11, 2004

==============================================================================

2 Contributors
--------------

I'm grateful to everyone still supporting FreeMiNT and would especially like
to thank Odd Skancke for his great improvements of the new XaAES kernel
module. Without him it wouldn't be useable and stable yet. Many thanks also to
Konrad M. Kokoszkiewicz for his great development on the kernel and his
constructive criticism and discussions about kernel development. And many,
many thanks to everyone else contributing to the FreeMiNT project as well.

My thanks also go to all the ones who are using FreeMiNT and helping out with
alpha/beta tests and bug reports, and to all application developers supporting
FreeMiNT. It's nice that so many people still are interested in FreeMiNT and
actively using it.

Special thanks goes to Rob Mahlert who contributes server capacity to run the
Sparemint webpage, the FreeMiNT CVS repository and the FreeMiNT bugtracker.
This is a great donation to the FreeMiNT project!

Many thanks also to Joakim Hoegberg who tries to contact developers of dead
ATARI software. One result of his efforts is the contribution of COPS to the
FreeMiNT project. And he always has a helpful comment ready.


Contributors of the 1.16.1 beta (according to the cvs generated ChangeLog):
---------------------------------------------------------------------------
- Adam Klobukowski <atari@gabo.pl>
- Arnaud BERCEGEAY <arnaud.bercegeay@free.fr>
- Daniel Pralle <pralle@gdv.uni-hannover.de>
- Frank Naumann <fnaumann@freemint.de>
- Gerhard Stoll <Gerhard_Stoll@b.maus.de>
- Guido Flohr <guido@freemint.de>
- Ingo Schmidt <ich@der-ingo.de>
- Jens Heitmann <jheitmann@debitel.net>
- Konrad M. Kokoszkiewicz <draco@obta.uw.edu.pl>
- Matthias Alles <alles@rhrk.uni-kl.de>
- Michael Schwingen <rincewind@a-tuin.dascon.de>
- Odd Skancke <ozk@atari.org>
- Petr Stehlik <joy@sophics.cz>
- Ralph Lowinski <altf4@freemint.de>
- Standa Opichal <opichals@seznam.cz>
- Thomas Binder <gryf@hrzpub.tu-darmstadt.de>


==============================================================================

3 Installation
--------------

3.1 Overview
------------
Compared to the previous kernel release there are some significant changes in
the installation and booting process of the kernel. All these changes were
done in an attempt to address the most common problem of FreeMiNT: an
installation procedure that is too difficult for inexperienced users. Even the
experienced users will hopefully enjoy and benefit from the new features. It's
recommended that you read through this section carefully.

3.1.1 Boot menu and basic settings
----------------------------------
From now on the name of the kernel doesn't matter at all. While it's no longer
important under what name you store the kernel in the AUTO folder you are
however recommended to use the name MINT.PRG so you can identify it easier.

The kernel now has a built-in boot menu that controls the basic boot up
configuration. When the kernel is being loaded it will display its version
and identification message and then wait 4 seconds for any of the shift keys
to be pressed. If a shift key is pressed then the boot menu is entered,
otherwise the normal boot sequence will continue.

If the boot menu is entered you can enable/disable the desired option by
pressing the corresponding number on the keyboard. You can enable/disable the
memory protection, loading of xdd and xfs modules and single step booting. The
settings you select here will take effect once you leave the boot menu, and
are remembered in MINT.INI which is stored in your <sysdir> (see the next
subchapter for more details). The chosen settings will thus be used when
booting up in future sessions.

3.1.2 The new sysdir strategy
-----------------------------
To simplify installation and configuration FreeMiNT now has a so-called
'system directory', or in short <sysdir>. The kernel will now exclusively load
xdd/xfs modules and the configuration files (MINT.CNF and MINT.INI) from the
<sysdir>. 

The <sysdir> defaults to "<bootdrive>/mint/<VERSION>" or, if this directory
doesn't exist, "<bootdrive>/mint".

NOTE: If no <sysdir> is found FreeMiNT will stop the booting procedure,
      display an error message and then return to TOS.

The <VERSION> is the kernel version coded as 8+3 directory name. For example,
the FreeMiNT 1.16.1 beta release will have a <VERSION> of 1-16-1. This
strategy allows you to keep parallel installations of different kernel
versions from now on.

Example 1:

Your boot drive is C:. You create a folder on C:\ called "MINT" where you
place the xdd/xfs modules you use and the configuration file MINT.CNF.

   ==> Your <sysdir> is: "C:\MINT"

Example 2:

Your boot drive is C:. You create a folder on C:\ called "MINT". Inside this
folder you create a folder "1-16-1" where you place the xdd/xfs modules you
use and the configuration file MINT.CNF.

   ==> Your <sysdir> is: "C:\MINT\1-16-1"

If you choose the latter option (recommended) you can install a future
FreeMiNT 1.16.1 release in parallel. Just create a 1-16-1 folder inside
"C:\MINT" and copy the xdd/xfs modules and MINT.CNF from the FreeMiNT 1.16.1
release to this directory. On the next boot just enable the kernel release you
want to boot. I hope this option is especially useful to all the helpful alpha
and beta testers who now can test new versions without complicated
installation changes. 

After the kernel has booted you can also lookup what your <sysdir> is. The
<sysdir> setting is available through the environment variable $SYSDIR, under
/kern/sysdir or through 'sysctl kern.sysdir'.

3.2 Simple installation
-----------------------
Like with previous installations you need to place the FreeMiNT kernel in the
AUTO folder of your boot drive. If you choose the wrong kernel for your
hardware the kernel will detect this, display an error message and not enter
the boot sequence (e.g. return to TOS). The next step is to copy the MINT
folder from the distribution archive to your boot drive (rename or delete
any already existing MINT folder).

In summary (if your boot drive is C:):

Step 1: - copy the appropriate kernel for your hardware to C:\AUTO
        - deactivate any existing FreeMiNT kernel
        - sort FreeMiNT as last kernel; take a look at section 3.4, Tips &
          Tricks

Step 2: - Copy the MINT folder from the distribution archive to C:\.

        If there exists a MINT folder on C: you can do 2 things:

        1. Remove/rename the existing MINT folder thus deactivating your
           existing FreeMiNT installation.

        2. Copy the 1-16-1 folder from the distribution archive to C:\MINT
           and install FreeMiNT 1.16.1 in parallel. You can switch back
           to your old FreeMiNT installation by booting the old kernel.

Step 3: - Edit C:\MINT\1-16-1\MINT.CNF; take a look at section 3.3.

          The distribution archive is setup to boot XaAES; if you don't want
          this, change the INIT configuration directive to your choice.

          If you want to boot XaAES, edit C:\MINT\1-16-1\XAAES\XAAES.CNF
          and adjust the settings for the desktop.

Step 4: - Reboot; the new kernel and XaAES is booted

          NOTE: If you want to disable memory protection press the shift
                key while the FreeMiNT message appears on screen. You will
            then enter the boot menu and can select whether or not to
                use the memory protection.

                You can also activate step-by-step initialization, which might
                be useful if you encounter problems with your boot sequence.
                If this setting is enabled, the kernel will wait for a
                key press after each initialization step.

3.3 Special installations
-------------------------

3.3.1 Upgrading EasyMiNT
------------------------
When upgrading EasyMiNT you can follow the steps from the 'Simple
Installation'. The only thing that differs is that you need to copy your
existing MINT.CNF from the EasyMiNT installation to your <sysdir> after you
installed the new kernel components. As the MINT.CNF from your EasyMiNT
installation is required to boot your EasyMiNT setup, you are advised to
backup this file before upgrading to the new 1.16.1 beta release!

If you want to use XaAES you can run xaloader.prg from commandline after login
or add xaloader.prg to /etc/ttytab in order to launch XaAES automatically.

3.3.2 KGMD
----------
KGMD is no longer supported. I recommend you to install EasyMiNT and upgrade
the EasyMiNT installation to FreeMiNT 1.16.1 beta release.

3.4 Configuration
-----------------
The distribution archive includes an example MINT.CNF that is ready to use for
the 'Simple Installation'. This setup is normally sufficient. Depending on
your main memory you may want to increase the buffer cache. This is the CACHE
directive in the MINT.CNF file. Increasing the buffer cache will significantly
speed-up file system operations. Useful settings are 5% - 10% of your main
memory (if you have enough RAM).

More details about the configuration directives used in the MINT.CNF are
explained in the file 'cnf.txt'.

3.4.1 xdd/xfs modules
---------------------
There are internal kernel changes that also affects some xdd and xfs modules.
The kernel enhancements of the new socket system call interface required
incompatible changes in network related modules too. The previous sockdev.xdd
module is gone and have been replaced by inet4.xdd, which provides the TCP/IP
stack. As a consequence of this, nfs.xfs has become incompatible due to a
different kernel interface.

Conclusion: don't use kernel modules from previous FreeMiNT releases with
the new kernel. Use only the provided ones or bugfixed versions that are
compiled for FreeMiNT 1.16.1.

3.4.2 Important changes
-----------------------
FreeMiNT 1.16.1 doesn't use the underlying TOS for file system access anymore.
The kernel will only use it's own (V)FAT(32) file system driver. The old TOSFS
is removed, the NEWFATFS directive in the MINT.CNF file will be ignored if
present.

3.4.3 New options
-----------------
- loadable keyboard tables

  The kernel is now able to load and use keyboard translation tables.
  If there exists a file called KEYBOARD.TBL in the <sysdir> of your FreeMiNT
  setup, it will be loaded at boot time and used for the keyboard mapping.
  If no such file exists, the TOS-BIOS translation table is used instead. If
  Your TOS-BIOS supports the right keyboard mapping there is no need to
  install a KEYBOARD.TBL file.

- loadable unicode translation tables

  This translation table is used by the (V)FAT(32) file system driver for
  ASCII <-> Unicode conversion of filenames. As the ASCII set above number 127
  is locale dependant, the kernel will use the translation table in order to
  obtain correct Unicode mapping. This option is rarely needed (dependant on
  your locale setting and whether you use VFAT and want to exchange data with
  Microsoft Windows).

3.5 Tips & tricks
-----------------
- FreeMiNT doesn't require patch programs at all!

- In general, be restrictive with resident programs (TSR) and system
  enhancements; If you really need them, start them BEFORE FreeMiNT.

- If you use NVDI, always start it BEFORE FreeMiNT.

- On Hades/Milan you need to run FPU_2M.PRG; don't run it before FreeMiNT,
  this will have no effect. It's recommended to start it from MINT.CNF
  (look at the example file, there is an commented out exec directive about
  it).

- Please remove or disable all things related to serial ports! FreeMiNT has
  much better serial drivers for mfp/scc/uart (as loadable xdd modules).
  These drivers are HSMODEM compatible too.

- To save memory, reduce the caches of HDDriver to a minimum. FreeMiNT has
  it's own, much better, unified cache management. The HDDriver caches are
  not used at all under FreeMiNT. To increase the FreeMiNT buffer cache use
  the MiNT.CNF directive 'CACHE'.

- Don't ever use wdialog.prg; wdialog is only TOS compatible;
  XaAES has wdialog routines built-in, for N.AES you can use the wdialog
  replacement N.DIALOG.

- Don't use Freedom; Freedom is only TOS/MagiC compatible.

- Don't use vcons; This is a dirty hack and will not work on 1.16.x kernels! 
  This will be looked into when time allows -- anyone?

==============================================================================

4 Getting in contact
--------------------

You can contact me directly by e-mail or subscribe to the MiNT mailing list.
This mailing list is the central discussion list for all topics related to
FreeMiNT (development, bugs, programming questions, tools). It's read by the
kernel developers, application developers and lots of FreeMiNT users.

My e-mail address is: Frank Naumann <fnaumann@freemint.de>

Information about the MiNT mailing list and the mailing list archive are
available here:

http://sparemint.atariforge.net/mailinglist/

==============================================================================

5 Problems
----------

This is a beta test release. Please don't expect everything to work perfectly.
In the past, most problems reported by FreeMiNT users were more or less
related to the setup and configuration procedure. The new 1.16 kernel tries to
address these problems by using a more logical and strict configuration. For
example using of the <sysdir> to read modules and configuration (and only
<sysdir>), the mint.ini file to control elementary settings like memory
protection on/off. Neither the location of the kernel nor its filename will be
used to determine a configuration setting anymore. I hope that these changes
made the installation and configuration of the kernel clearer and easier.

5.1 Known problems
------------------
There still exist some problems that are already reported and known. Most of
them are minor problems and mainly related to the brand new XaAES. As XaAES
was developed very intensively the last months and it's perfectly normal that
there still are some things to do. The problems that are already known are
listed in the file PROBLEMS. Please don't report them again! Do note that the
PROBLEMS file constitutes a short summary of the most important issues. The
FreeMiNT project uses a bugtracker for bug reporting and tracing. If possible,
please consider utilizing the bugtracker if you encounter problems. See the
next subchapter for more details regarding the bugtracker and bug reporting in
general.

5.2 How to report a bug
-----------------------
For some time the FreeMiNT project uses a bugtracker to keep track of bugs
and problems. If you think you found a new bug or a bug that is not yet
reported, the best way to report the bug is through the bugtracker. The
bugtracker is available at:

http://sparemint.atariforge.net/bugtracker/login_page.php

Please include a detailed description of the problem and, if possible, specify
how the problem can be reproduced. In the bugtracker you can also see any
other reported problems and bugs, search them and follow their status. When
discussing bugs on the MiNT mailing list you should include the bug number as
a reference to others. This enables them to scan the bugtracker for additional
information.


==============================================================================

6 Changes in FreeMiNT
---------------------

There have been so many changes that I'm sure I will forget to mention half of
them. I'll try to collect them here though.

6.1 FreeMiNT Kernel
-------------------

6.1.1 New system calls
----------------------
The 1.16. kernel has been supplied with several new system calls to reflect
the development enhancements. Most importantly the kernel itself now has a
socket interface. The sockets are thus integrated into the file system layer
and now behave exactly like the BSD defined socket interface. You can use
any BSD manual regarding the socket interface as reference. All new system
calls have a corresponding binding in the mintlib (include/mint/mintbind.h)
for reference. The mintlib socket library will automatically use the new
socket system calls if they are available (and fall back to the old interface
under old kernels or under magicnet).


The new system calls in detail:

- Fwritev(), Opcode 0x15b
- Freadv(), Opcode 0x15c
  - vector read/write

- Fstat(), Opcode 0x15d
  - Fxattr() replacement; use UTC timestamps and is 64bit prepared

- Fchown16(), Opcode 0x180
  - Like Fchown() but with additional argument wether to follow symbolic links
    or not

The socket extensions:

- Fsocket(), Opcode 0x160
- Fsocketpair(), Opcode 0x161
- Faccept(), Opcode 0x162
- Fconnect(), Opcode 0x163
- Fbind(), Opcode 0x164
- Flisten(), Opcode 0x165
- Frecvmsg(), Opcode 0x166
- Fsendmsg(), Opcode 0x167
- Frecvfrom(), Opcode 0x168
- Fsendto(), Opcode 0x169
- Fsetsockopt(), Opcode 0x16a
- Fgetsockopt(), Opcode 0x16b
- Fgetpeername(), Opcode 0x16c
- Fgetsockname(), Opcode 0x16d
- Fshutdown(), Opcode 0x16e

NOTE: Psigintr() is no longer supported in 1.16 kernels.

6.1.2 New modules
-----------------
Two new modules are imported into the source tree:

dsp56k - a driver for the Falcon DSP. It's cleaned up and synchronized with
         FreeMiNT headers and build system.

lp - an interrupt driven driver for the parallel port on original ATARI
     hardware. You can use it for interrupt triggered printing if you
     output to this device.

6.1.3 Internal changes
----------------------
The internal changes are not visible on the surface but are hidden much deeper
and are highly important for the future.

I restructured the proc context structure and sorted out the relevant things
into shareable substructures. This required adding and rewriting large parts
that are involved in managing these resources. Shareable resources in this
context means resources that can be used by several processes at the same
time. This is for example the address room, e.g. all memory of a process. The
open file handles, signal handlers and such things. If two processes share as
much as possible they can be seen as two threads of one process. They just
differ in pid (that is unique for each context). As a side effect there is now
an internal interface to create kernel threads, e.g. threads that run in the
same context as the kernel (pid 0). In the future it's planned to create a new
system call to export this feature to user processes as well so that they can
create threads too. There are also plans to support the MagiC AES thread
interface in XaAES.

The second big internal addition is the new socket interface. The file
descriptor handling is extended to work together with the new system calls.
There is a new internal interface to access the socket interface directly
(used by the nfs.xfs). Every socket is now a real file descriptor and now
behaves like on a unix system. This improves compatibility with network
related tools ported from unix. Also, the existing socket.xdd is gone and
replaced by inet4.xdd. The file inet4.xdd now only contains the TCP/IPv4
functionality. All other things, like file descriptor handling and the unix
domain sockets, are now part of the kernel. Anonymous pipes are now using the
unix domain sockets, thus improving the speed of the pipes. Also local
networking through unix domain sockets is now always possible as base kernel
functionality. If someone doesn't need TCP/IP protocol one can leave this
module out and save some memory.

For XaAES a complete new kernel interface was developed. This was necessary
since XaAES as a central component of the operating system needs much more
control and access to kernel functions and resources than is needed for xdd
and xfs modules. For the future it is planned that all modules should switch
to the new interface as well, thus removing the old interface completely.

There are also tons of bug fixes and minor modifications and optimizations.
For example CT60 power off support on system shutdown, aranym interface,
support for modules. FreeMiNT now also catches the keyboard vector, most
noticeably ctrl-alt-del is now handled by the kernel (entering shutdown
sequence).

New start-up strategy, new mint.ini config file for elementary configurations
like memory protection, xfs/xdd loading, single step boot process.

The kernel now also hosts a minimal internal shell to fix problems on failed
start-up or if the INIT program is not found.

6.1.4 New debug facilities
--------------------------
Especially for developers and intensive alpha/beta testers there are some
interesting extensions to make debugging easier:

- It's now possible to trace system calls of a process through the Ptrace()
  debug system call. A command line tool that behaves similiar to the strace
  tool, known from the Linux world, is in development (if you want to help
  please contact me; the prototype is working and needs some nice pretty
  printing of the system calls).

- Under aranym debug messages are output through the aranym host interface
  to the host system. These messages can be caught and analyzed easily. If
  you compile and boot a debug kernel you will see the debug messages (on
  debug level 2 and above) in the console where you started aranym.

- If you have an MFP port you can use the new direct MFP debug output. To use
  this you need to deactivate mfp.xdd and compile a kernel with this option
  enabled (just look into sys/KERNELDEFS). You are then able to see all debug
  output with a terminal program from any other computer connected to the MFP
  serial port. Default settings are 19200 and 8N1. You can also control the
  ATARI through the terminal program. Pressing a key will stop the machine
  AFTER the next debug message is printed. Pressing a key again continues. If
  the machine is stopped you can press key 1-9 to call the appropriate debug
  feature like it's done on the original machine with ctr-alt-F? key
  combination.

- You can enable kernel debug output for a specific process. Unlike the global
  debug level you can set a process private debug level which will behave like
  the global debug level but is restricted to this process. You can manipulate
  this per process debug level through the sysctl tool (the relevant option
  is proc.curproc.<pid>.debug).

6.2 XaAES
---------
From now on XaAES is integrated into the kernel. Theoretically it now falls
under the category 'kernel modules' but I made a separate subchapter for it.

6.2.1 The XaAES kernel module
-----------------------------
XaAES is now integrated into the kernel. Please note that this doesn't mean
it's linked together with the kernel into one binary. Lots of people are
mixing these two things up. XaAES is a loadable kernel module and is loaded if
required. If you still want to use N.AES or any other AES, just ignore all
configuration things regarding XaAES. The kernel will behave as before for
another AES.

The main reason for the kernel integration was to make XaAES much more
useable. The previous design violated several rules and was not very fast
either. The new kernel module addresses mainly these two problems. One major
difference is that the old XaAES was an application that ran in user mode.
However, being an operating system component it handled system calls and also
needed full access to the resources of an AES client. This required some dirty
tricks, and most noticeably XaAES required the F_OSPECIAL kernel hack that
gives XaAES ultimate access to all processes. As a kernel component the new
XaAES module no longer needs such dirty hacks. It's much cleaner now, and as
an operating system component it has legal access to the client resources (and
only to AES clients where XaAES is servicing a system call). In addition to
this XaAES' code is now even smaller as it can reuse lots of things from the
kernel (the library functions).

The severely complex synchronization mechanism is not needed anymore either.
This mechanism was a permanent source of bugs and failures in XaAES in the
past. Previously XaAES also used a time consuming communication scheme, which
relied on message pipes. This has now been removed and replaced by an internal
kernel event queue which is a lot faster. All in all, these improvements
results in a much shorter response times, allowing far better user interaction
and a snappier feeling to XaAES. Just try it out and compare it with the old
XaAES!

6.2.1 The XaAES loader
----------------------
As XaAES is now a kernel module, and unlike before, it can't be started as a
program. Instead, there is now a loader for XaAES, called xaloader.prg. This
loader starts and initializes the XaAES kernel module. The loader program is
blocked until XaAES is finished (either due to return to login or on
reboot/shutdown). I tried to write the loader as failsafe as possible. If
started without any arguments, the loader will look in the FreeMiNT
<sysdir>/xaaes for an XaAES kernel module. If found, it's started. The loader
can also take an argument, the module name to load (either as filename or as
a complete, absolute path). If only a filename is given, the loader will look
in <sysdir>/xaaes for this name and start it if found. If an absolute path is
given, the loader will look up the path and start the module if found.

NOTE: In all cases, XaAES system directory is the directory where the kernel
      module is located. XaAES loads its rsc and cnf file ONLY from the XaAES
      system directory.


6.3 System tools
----------------

6.3.1 COPS
----------
COPS is a new surprising addition to the tools section. Many thanks to Joakim
Hoegberg and Sascha Uhlig who were able to retrieve the sources of COPS.
COPS is published under the GPL license. I have converted them to GCC,
removed most of the assembler stuff and adapted it to gemlib. COPS is now part
of the FreeMiNT CVS repository. It's not tested much yet but should work in
the same way as the previous COPS version.


6.3.2 sysctl
------------
Updated to reflect all enhancements of the Psysctl() system call.


==============================================================================

7 Development
-------------

7.1 Application development
---------------------------
The FreeMiNT documentation was and is a cause for criticism. It's far from
perfect and especially the newly added things are not documented very well.
Please excuse that, I'm working hard to update the documentation. The
programmers documentation is located in the subdirectory doc/programmer. Just
take a look. If you have any questions regarding system calls, behavior or
such things, please, please ask me.

7.2 Kernel development
----------------------
There are always so many things to do. If you want to help or if you have
a patch or want to contribute something (source code, documentation updates)
you are VERY welcome! The FreeMiNT project uses cvs for source management
system and everybody can thus follow the current development. As a developer
you get write access and are then able to directly submit your changes. The
kernel development is a teamwork. We help each other. It's not necessary to
know or understand each line of the kernels source code. If something is not
clear, just ask. Developers with more knowledge on that particular issue can
then help you understand the required things, hence making development a
whole lot easier. 

It's only your inner temptation that you need to defeat in order to help out a
little bit :-)

FreeMiNT 1.16.0b

@mikrosk mikrosk released this Jan 28, 2017 · 2556 commits to master since this release

==============================================================================
 ==                                                                        ==
    ==                  FreeMiNT 1.16.0 beta release                    ==
 ==                                                                        ==
==============================================================================


Index
=====

1 Preface

2 Contributors

3 Installation
  3.1 Overview
      3.1.1 Boot menu & basic settings
      3.1.2 The new sysdir strategy
  3.2 Simple installation
  3.3 Special installations
      3.3.1 Upgrading EasyMiNT
      3.3.2 KGMD
  3.4 Configuration
      3.4.1 xdd/xfs modules
      3.4.2 Important changes
      3.4.3 New options
  3.5 Tips & tricks

4 Getting in contact

5 Problems
  5.1 Known problems
  5.2 How to report a bug

6 Changes in FreeMiNT 
  6.1 FreeMiNT Kernel
      6.1.1 New system calls
      6.1.2 New modules
      6.1.3 Internal changes
      6.1.4 New debug facilities
  6.2 XaAES
      6.2.1 The XaAES kernel module
      6.2.1 The XaAES loader
  6.3 System tools
      6.3.1 COPS
      6.3.2 sysctl

7 Development
  7.1 Application development
  7.2 Kernel development


==============================================================================

1 Preface
---------

It has been a very long time since the last official FreeMiNT kernel release.
For the 1.16 kernel line I wanted to do so many things that require lots of 
time and while all of the planned changes have not yet been made, I decided to
make a new beta release available. The reason for this was that the current
state of things seems very stable to me and all alpha testers. Furthermore,
there are lots of new and nice features. Perhaps the most exciting news
recently is the integration of XaAES, the multitasking AES for FreeMiNT. Many
thanks to Henk Robbers for his XaAES development in the last few years. In the
beginning of 2003 he handed over responsibility for maintaining XaAES to the
FreeMiNT project and I then started to integrate it into the FreeMiNT CVS
repository.

An overview of the most important changes and additions is available in
section 6 of this document. Section 3 hopefully covers all aspects of the
FreeMiNT installation. As the installation and booting process of the kernel
differs significantly from previous releases it's recommended you read through
section 3 carefully!

Do keep in mind that I'm not a native speaker of the English language, so
please excuse any typing errors and grammatical errors. I'd be grateful for
corrections and feedback. Don't hesitate to contact me or write to the MiNT
mailing list. Please see section 4 for more details on how to contact me or
write to the MiNT mailing list.


Frank Naumann <fnaumann@freemint.de>
------------------------------------
Magdeburg, July 18, 2004

==============================================================================

2 Contributors
--------------

I'm grateful to everyone still supporting FreeMiNT and would especially like
to thank Odd Skancke for his great improvements of the new XaAES kernel
module. Without him it wouldn't be useable and stable yet. Many thanks also to
Konrad M. Kokoszkiewicz for his great development on the kernel and his
constructive criticism and discussions about kernel development. And many,
many thanks to everyone else contributing to the FreeMiNT project as well.

My thanks also go to all the ones who are using FreeMiNT and helping out with
alpha/beta tests and bug reports, and to all application developers supporting
FreeMiNT. It's nice that so many people still are interested in FreeMiNT and
actively using it.

Special thanks goes to Rob Mahlert who contributes server capacity to run the
Sparemint webpage, the FreeMiNT CVS repository and the FreeMiNT bugtracker.
This is a great donation to the FreeMiNT project!

Many thanks also to Joakim Hoegberg who tries to contact developers of dead
ATARI software. One result of his efforts is the contribution of COPS to the
FreeMiNT project. And he always has a helpful comment ready.


Contributors of the 1.16.0 beta (according to the cvs generated ChangeLog):
---------------------------------------------------------------------------
- Adam Klobukowski <atari@gabo.pl>
- Arnaud BERCEGEAY <arnaud.bercegeay@free.fr>
- Daniel Pralle <pralle@gdv.uni-hannover.de>
- Frank Naumann <fnaumann@freemint.de>
- Gerhard Stoll <Gerhard_Stoll@b.maus.de>
- Guido Flohr <guido@freemint.de>
- Ingo Schmidt <ich@der-ingo.de>
- Jens Heitmann <jheitmann@debitel.net>
- Konrad M. Kokoszkiewicz <draco@obta.uw.edu.pl>
- Matthias Alles <alles@rhrk.uni-kl.de>
- Michael Schwingen <rincewind@a-tuin.dascon.de>
- Odd Skancke <ozk@atari.org>
- Petr Stehlik <joy@sophics.cz>
- Ralph Lowinski <altf4@freemint.de>
- Standa Opichal <opichals@seznam.cz>
- Thomas Binder <gryf@hrzpub.tu-darmstadt.de>


==============================================================================

3 Installation
--------------

3.1 Overview
------------
Compared to the previous kernel release there are some significant changes in
the installation and booting process of the kernel. All these changes were
done in an attempt to address the most common problem of FreeMiNT: an
installation procedure that is too difficult for inexperienced users. Even the
experienced users will hopefully enjoy and benefit from the new features. It's
recommended that you read through this section carefully.

3.1.1 Boot menu and basic settings
----------------------------------
From now on the name of the kernel doesn't matter at all. While it's no longer
important under what name you store the kernel in the AUTO folder you are
however recommended to use the name MINT.PRG so you can identify it easier.

The kernel now has a built-in boot menu that controls the basic boot up
configuration. When the kernel is being loaded it will display its version
and identification message and then wait 4 seconds for any of the shift keys
to be pressed. If a shift key is pressed then the boot menu is entered,
otherwise the normal boot sequence will continue.

If the boot menu is entered you can enable/disable the desired option by
pressing the corresponding number on the keyboard. You can enable/disable the
memory protection, loading of xdd and xfs modules and single step booting. The
settings you select here will take effect once you leave the boot menu, and
are remembered in MINT.INI which is stored in your <sysdir> (see the next
subchapter for more details). The chosen settings will thus be used when
booting up in future sessions.

3.1.2 The new sysdir strategy
-----------------------------
To simplify installation and configuration FreeMiNT now has a so-called
'system directory', or in short <sysdir>. The kernel will now exclusively load
xdd/xfs modules and the configuration files (MINT.CNF and MINT.INI) from the
<sysdir>. 

The <sysdir> defaults to "<bootdrive>/mint/<VERSION>" or, if this directory
doesn't exist, "<bootdrive>/mint".

NOTE: If no <sysdir> is found FreeMiNT will stop the booting procedure,
      display an error message and then return to TOS.

The <VERSION> is the kernel version coded as 8+3 directory name. For example,
the FreeMiNT 1.16.0 beta release will have a <VERSION> of 1-16-0. This
strategy allows you to keep parallel installations of different kernel
versions from now on.

Example 1:

Your boot drive is C:. You create a folder on C:\ called "MINT" where you
place the xdd/xfs modules you use and the configuration file MINT.CNF.

   ==> Your <sysdir> is: "C:\MINT"

Example 2:

Your boot drive is C:. You create a folder on C:\ called "MINT". Inside this
folder you create a folder "1-16-0" where you place the xdd/xfs modules you
use and the configuration file MINT.CNF.

   ==> Your <sysdir> is: "C:\MINT\1-16-0"

If you choose the latter option (recommended) you can install a future
FreeMiNT 1.16.1 release in parallel. Just create a 1-16-1 folder inside
"C:\MINT" and copy the xdd/xfs modules and MINT.CNF from the FreeMiNT 1.16.1
release to this directory. On the next boot just enable the kernel release you
want to boot. I hope this option is especially useful to all the helpful alpha
and beta testers who now can test new versions without complicated
installation changes. 

After the kernel has booted you can also lookup what your <sysdir> is. The
<sysdir> setting is available through the environment variable $SYSDIR, under
/kern/sysdir or through 'sysctl kern.sysdir'.

3.2 Simple installation
-----------------------
Like with previous installations you need to place the FreeMiNT kernel in the
AUTO folder of your boot drive. If you choose the wrong kernel for your
hardware the kernel will detect this, display an error message and not enter
the boot sequence (e.g. return to TOS). The next step is to copy the MINT
folder from the distribution archive to your boot drive (rename or delete
any already existing MINT folder).

In summary (if your boot drive is C:):

Step 1: - copy the appropriate kernel for your hardware to C:\AUTO
        - deactivate any existing FreeMiNT kernel
        - sort FreeMiNT as last kernel; take a look at section 3.4, Tips &
          Tricks

Step 2: - Copy the MINT folder from the distribution archive to C:\.

        If there exists a MINT folder on C: you can do 2 things:

        1. Remove/rename the existing MINT folder thus deactivating your
           existing FreeMiNT installation.

        2. Copy the 1-16-0 folder from the distribution archive to C:\MINT
           and install FreeMiNT 1.16.0 in parallel. You can switch back
           to your old FreeMiNT installation by booting the old kernel.

Step 3: - Edit C:\MINT\1-16-0\MINT.CNF; take a look at section 3.3.

          The distribution archive is setup to boot XaAES; if you don't want
          this, change the INIT configuration directive to your choice.

          If you want to boot XaAES, edit C:\MINT\1-16-0\XAAES\XAAES.CNF
          and adjust the settings for the desktop.

Step 4: - Reboot; the new kernel and XaAES is booted

          NOTE: If you want to disable memory protection press the shift
                key while the FreeMiNT message appears on screen. You will
            then enter the boot menu and can select whether or not to
                use the memory protection.

                You can also activate step-by-step initialization, which might
                be useful if you encounter problems with your boot sequence.
                If this setting is enabled, the kernel will wait for a
                key press after each initialization step.

3.3 Special installations
-------------------------

3.3.1 Upgrading EasyMiNT
------------------------
When upgrading EasyMiNT you can follow the steps from the 'Simple
Installation'. The only thing that differs is that you need to copy your
existing MINT.CNF from the EasyMiNT installation to your <sysdir> after you
installed the new kernel components. As the MINT.CNF from your EasyMiNT
installation is required to boot your EasyMiNT setup, you are advised to
backup this file before upgrading to the new 1.16.0 beta release!

If you want to use XaAES you can run xaloader.prg from commandline after login
or add xaloader.prg to /etc/ttytab in order to launch XaAES automatically.

3.3.2 KGMD
----------
KGMD is no longer supported. I recommend you to install EasyMiNT and upgrade
the EasyMiNT installation to FreeMiNT 1.16.0 beta release.

3.4 Configuration
-----------------
The distribution archive includes an example MINT.CNF that is ready to use for
the 'Simple Installation'. This setup is normally sufficient. Depending on
your main memory you may want to increase the buffer cache. This is the CACHE
directive in the MINT.CNF file. Increasing the buffer cache will significantly
speed-up file system operations. Useful settings are 5% - 10% of your main
memory (if you have enough RAM).

More details about the configuration directives used in the MINT.CNF are
explained in the file 'cnf.txt'.

3.4.1 xdd/xfs modules
---------------------
There are internal kernel changes that also affects some xdd and xfs modules.
The kernel enhancements of the new socket system call interface required
incompatible changes in network related modules too. The previous sockdev.xdd
module is gone and have been replaced by inet4.xdd, which provides the TCP/IP
stack. As a consequence of this, nfs.xfs has become incompatible due to a
different kernel interface.

Conclusion: don't use kernel modules from previous FreeMiNT releases with
the new kernel. Use only the provided ones or bugfixed versions that are
compiled for FreeMiNT 1.16.0.

3.4.2 Important changes
-----------------------
FreeMiNT 1.16.0 doesn't use the underlying TOS for file system access anymore.
The kernel will only use it's own (V)FAT(32) file system driver. The old TOSFS
is removed, the NEWFATFS directive in the MINT.CNF file will be ignored if
present.

3.4.3 New options
-----------------
- loadable keyboard tables

  The kernel is now able to load and use keyboard translation tables.
  If there exists a file called KEYBOARD.TBL in the <sysdir> of your FreeMiNT
  setup, it will be loaded at boot time and used for the keyboard mapping.
  If no such file exists, the TOS-BIOS translation table is used instead. If
  your TOS-BIOS supports the right keyboard mapping there is no need to
  install a KEYBOARD.TBL file. Take a look in the folder "TBL" in MINT/1-16-0
  in the distribution archive.

- loadable unicode translation tables

  This translation table is used by the (V)FAT(32) file system driver for
  ASCII <-> Unicode conversion of filenames. As the ASCII set above number 127
  is locale dependant, the kernel will use the translation table in order to
  obtain correct Unicode mapping. This option is rarely needed (dependant on
  your locale setting and whether you use VFAT and want to exchange data with
  Microsoft Windows).

3.5 Tips & tricks
-----------------
- FreeMiNT doesn't require patch programs at all!

- In general, be restrictive with resident programs (TSR) and system
  enhancements; If you really need them, start them BEFORE FreeMiNT.

- If you use NVDI, always start it BEFORE FreeMiNT.

- On Hades/Milan you need to run FPU_2M.PRG; don't run it before FreeMiNT,
  this will have no effect. It's recommended to start it from MINT.CNF
  (look at the example file, there is an commented out exec directive about
  it).

- Please remove or disable all things related to serial ports! FreeMiNT has
  much better serial drivers for mfp/scc/uart (as loadable xdd modules).
  These drivers are HSMODEM compatible too.

- To save memory, reduce the caches of HDDriver to a minimum. FreeMiNT has
  it's own, much better, unified cache management. The HDDriver caches are
  not used at all under FreeMiNT. To increase the FreeMiNT buffer cache use
  the MiNT.CNF directive 'CACHE'.

- Don't ever use wdialog.prg; wdialog is only TOS compatible;
  XaAES has wdialog routines built-in, for N.AES you can use the wdialog
  replacement N.DIALOG.

- Don't use Freedom; Freedom is only TOS/MagiC compatible.

- Don't use vcons; This is a dirty hack and will not work on 1.16.x kernels! 
  This will be looked into when time allows -- anyone?

==============================================================================

4 Getting in contact
--------------------

You can contact me directly by e-mail or subscribe to the MiNT mailing list.
This mailing list is the central discussion list for all topics related to
FreeMiNT (development, bugs, programming questions, tools). It's read by the
kernel developers, application developers and lots of FreeMiNT users.

My e-mail address is: Frank Naumann <fnaumann@freemint.de>

Information about the MiNT mailing list and the mailing list archive are
available here:

http://sparemint.atariforge.net/mailinglist/

==============================================================================

5 Problems
----------

This is a beta test release. Please don't expect everything to work perfectly.
In the past, most problems reported by FreeMiNT users were more or less
related to the setup and configuration procedure. The new 1.16 kernel tries to
address these problems by using a more logical and strict configuration. For
example using of the <sysdir> to read modules and configuration (and only
<sysdir>), the mint.ini file to control elementary settings like memory
protection on/off. Neither the location of the kernel nor its filename will be
used to determine a configuration setting anymore. I hope that these changes
made the installation and configuration of the kernel clearer and easier.

5.1 Known problems
------------------
There still exist some problems that are already reported and known. Most of
them are minor problems and mainly related to the brand new XaAES. As XaAES
was developed very intensively the last months and it's perfectly normal that
there still are some things to do. The problems that are already known are
listed in the file PROBLEMS. Please don't report them again! Do note that the
PROBLEMS file constitutes a short summary of the most important issues. The
FreeMiNT project uses a bugtracker for bug reporting and tracing. If possible,
please consider utilizing the bugtracker if you encounter problems. See the
next subchapter for more details regarding the bugtracker and bug reporting in
general.

5.2 How to report a bug
-----------------------
For some time the FreeMiNT project uses a bugtracker to keep track of bugs
and problems. If you think you found a new bug or a bug that is not yet
reported, the best way to report the bug is through the bugtracker. The
bugtracker is available at:

http://sparemint.atariforge.net/bugtracker/login_page.php

Please include a detailed description of the problem and, if possible, specify
how the problem can be reproduced. In the bugtracker you can also see any
other reported problems and bugs, search them and follow their status. When
discussing bugs on the MiNT mailing list you should include the bug number as
a reference to others. This enables them to scan the bugtracker for additional
information.


==============================================================================

6 Changes in FreeMiNT
---------------------

There have been so many changes that I'm sure I will forget to mention half of
them. I'll try to collect them here though.

6.1 FreeMiNT Kernel
-------------------

6.1.1 New system calls
----------------------
The 1.16. kernel has been supplied with several new system calls to reflect
the development enhancements. Most importantly the kernel itself now has a
socket interface. The sockets are thus integrated into the file system layer
and now behave exactly like the BSD defined socket interface. You can use
any BSD manual regarding the socket interface as reference. All new system
calls have a corresponding binding in the mintlib (include/mint/mintbind.h)
for reference. The mintlib socket library will automatically use the new
socket system calls if they are available (and fall back to the old interface
under old kernels or under magicnet).


The new system calls in detail:

- Fwritev(), Opcode 0x15b
- Freadv(), Opcode 0x15c
  - vector read/write

- Fstat(), Opcode 0x15d
  - Fxattr() replacement; use UTC timestamps and is 64bit prepared

- Fchown16(), Opcode 0x180
  - Like Fchown() but with additional argument wether to follow symbolic links
    or not

The socket extensions:

- Fsocket(), Opcode 0x160
- Fsocketpair(), Opcode 0x161
- Faccept(), Opcode 0x162
- Fconnect(), Opcode 0x163
- Fbind(), Opcode 0x164
- Flisten(), Opcode 0x165
- Frecvmsg(), Opcode 0x166
- Fsendmsg(), Opcode 0x167
- Frecvfrom(), Opcode 0x168
- Fsendto(), Opcode 0x169
- Fsetsockopt(), Opcode 0x16a
- Fgetsockopt(), Opcode 0x16b
- Fgetpeername(), Opcode 0x16c
- Fgetsockname(), Opcode 0x16d
- Fshutdown(), Opcode 0x16e

NOTE: Psigintr() is no longer supported in 1.16 kernels.

6.1.2 New modules
-----------------
Two new modules are imported into the source tree:

dsp56k - a driver for the Falcon DSP. It's cleaned up and synchronized with
         FreeMiNT headers and build system.

lp - an interrupt driven driver for the parallel port on original ATARI
     hardware. You can use it for interrupt triggered printing if you
     output to this device.

6.1.3 Internal changes
----------------------
The internal changes are not visible on the surface but are hidden much deeper
and are highly important for the future.

I restructured the proc context structure and sorted out the relevant things
into shareable substructures. This required adding and rewriting large parts
that are involved in managing these resources. Shareable resources in this
context means resources that can be used by several processes at the same
time. This is for example the address room, e.g. all memory of a process. The
open file handles, signal handlers and such things. If two processes share as
much as possible they can be seen as two threads of one process. They just
differ in pid (that is unique for each context). As a side effect there is now
an internal interface to create kernel threads, e.g. threads that run in the
same context as the kernel (pid 0). In the future it's planned to create a new
system call to export this feature to user processes as well so that they can
create threads too. There are also plans to support the MagiC AES thread
interface in XaAES.

The second big internal addition is the new socket interface. The file
descriptor handling is extended to work together with the new system calls.
There is a new internal interface to access the socket interface directly
(used by the nfs.xfs). Every socket is now a real file descriptor and now
behaves like on a unix system. This improves compatibility with network
related tools ported from unix. Also, the existing socket.xdd is gone and
replaced by inet4.xdd. The file inet4.xdd now only contains the TCP/IPv4
functionality. All other things, like file descriptor handling and the unix
domain sockets, are now part of the kernel. Anonymous pipes are now using the
unix domain sockets, thus improving the speed of the pipes. Also local
networking through unix domain sockets is now always possible as base kernel
functionality. If someone doesn't need TCP/IP protocol one can leave this
module out and save some memory.

For XaAES a complete new kernel interface was developed. This was necessary
since XaAES as a central component of the operating system needs much more
control and access to kernel functions and resources than is needed for xdd
and xfs modules. For the future it is planned that all modules should switch
to the new interface as well, thus removing the old interface completely.

There are also tons of bug fixes and minor modifications and optimizations.
For example CT60 power off support on system shutdown, aranym interface,
support for modules. FreeMiNT now also catches the keyboard vector, most
noticeably ctrl-alt-del is now handled by the kernel (entering shutdown
sequence).

New start-up strategy, new mint.ini config file for elementary configurations
like memory protection, xfs/xdd loading, single step boot process.

The kernel now also hosts a minimal internal shell to fix problems on failed
start-up or if the INIT program is not found.

6.1.4 New debug facilities
--------------------------
Especially for developers and intensive alpha/beta testers there are some
interesting extensions to make debugging easier:

- It's now possible to trace system calls of a process through the Ptrace()
  debug system call. A command line tool that behaves similiar to the strace
  tool, known from the Linux world, is in development (if you want to help
  please contact me; the prototype is working and needs some nice pretty
  printing of the system calls).

- Under aranym debug messages are output through the aranym host interface
  to the host system. These messages can be caught and analyzed easily. If
  you compile and boot a debug kernel you will see the debug messages (on
  debug level 2 and above) in the console where you started aranym.

- If you have an MFP port you can use the new direct MFP debug output. To use
  this you need to deactivate mfp.xdd and compile a kernel with this option
  enabled (just look into sys/KERNELDEFS). You are then able to see all debug
  output with a terminal program from any other computer connected to the MFP
  serial port. Default settings are 19200 and 8N1. You can also control the
  ATARI through the terminal program. Pressing a key will stop the machine
  AFTER the next debug message is printed. Pressing a key again continues. If
  the machine is stopped you can press key 1-9 to call the appropriate debug
  feature like it's done on the original machine with ctr-alt-F? key
  combination.

- You can enable kernel debug output for a specific process. Unlike the global
  debug level you can set a process private debug level which will behave like
  the global debug level but is restricted to this process. You can manipulate
  this per process debug level through the sysctl tool (the relevant option
  is proc.curproc.<pid>.debug).

6.2 XaAES
---------
From now on XaAES is integrated into the kernel. Theoretically it now falls
under the category 'kernel modules' but I made a separate subchapter for it.

6.2.1 The XaAES kernel module
-----------------------------
XaAES is now integrated into the kernel. Please note that this doesn't mean
it's linked together with the kernel into one binary. Lots of people are
mixing these two things up. XaAES is a loadable kernel module and is loaded if
required. If you still want to use N.AES or any other AES, just ignore all
configuration things regarding XaAES. The kernel will behave as before for
another AES.

The main reason for the kernel integration was to make XaAES much more
useable. The previous design violated several rules and was not very fast
either. The new kernel module addresses mainly these two problems. One major
difference is that the old XaAES was an application that ran in user mode.
However, being an operating system component it handled system calls and also
needed full access to the resources of an AES client. This required some dirty
tricks, and most noticeably XaAES required the F_OSPECIAL kernel hack that
gives XaAES ultimate access to all processes. As a kernel component the new
XaAES module no longer needs such dirty hacks. It's much cleaner now, and as
an operating system component it has legal access to the client resources (and
only to AES clients where XaAES is servicing a system call). In addition to
this XaAES' code is now even smaller as it can reuse lots of things from the
kernel (the library functions).

The severely complex synchronization mechanism is not needed anymore either.
This mechanism was a permanent source of bugs and failures in XaAES in the
past. Previously XaAES also used a time consuming communication scheme, which
relied on message pipes. This has now been removed and replaced by an internal
kernel event queue which is a lot faster. All in all, these improvements
results in a much shorter response times, allowing far better user interaction
and a snappier feeling to XaAES. Just try it out and compare it with the old
XaAES!

6.2.1 The XaAES loader
----------------------
As XaAES is now a kernel module, and unlike before, it can't be started as a
program. Instead, there is now a loader for XaAES, called xaloader.prg. This
loader starts and initializes the XaAES kernel module. The loader program is
blocked until XaAES is finished (either due to return to login or on
reboot/shutdown). I tried to write the loader as failsafe as possible. If
started without any arguments, the loader will look in the FreeMiNT
<sysdir>/xaaes for an XaAES kernel module. If found, it's started. The loader
can also take an argument, the module name to load (either as filename or as
a complete, absolute path). If only a filename is given, the loader will look
in <sysdir>/xaaes for this name and start it if found. If an absolute path is
given, the loader will look up the path and start the module if found.

NOTE: In all cases, XaAES system directory is the directory where the kernel
      module is located. XaAES loads its rsc and cnf file ONLY from the XaAES
      system directory.


6.3 System tools
----------------

6.3.1 COPS
----------
COPS is a new surprising addition to the tools section. Many thanks to Joakim
Hoegberg and Sascha Uhlig who were able to retrieve the sources of COPS.
COPS is published under the GPL license. I have converted them to GCC,
removed most of the assembler stuff and adapted it to gemlib. COPS is now part
of the FreeMiNT CVS repository. It's not tested much yet but should work in
the same way as the previous COPS version.


6.3.2 sysctl
------------
Updated to reflect all enhancements of the Psysctl() system call.


==============================================================================

7 Development
-------------

7.1 Application development
---------------------------
The FreeMiNT documentation was and is a cause for criticism. It's far from
perfect and especially the newly added things are not documented very well.
Please excuse that, I'm working hard to update the documentation. The
programmers documentation is located in the subdirectory doc/programmer. Just
take a look. If you have any questions regarding system calls, behavior or
such things, please, please ask me.

7.2 Kernel development
----------------------
There are always so many things to do. If you want to help or if you have
a patch or want to contribute something (source code, documentation updates)
you are VERY welcome! The FreeMiNT project uses cvs for source management
system and everybody can thus follow the current development. As a developer
you get write access and are then able to directly submit your changes. The
kernel development is a teamwork. We help each other. It's not necessary to
know or understand each line of the kernels source code. If something is not
clear, just ask. Developers with more knowledge on that particular issue can
then help you understand the required things, hence making development a
whole lot easier. 

It's only your inner temptation that you need to defeat in order to help out a
little bit :-)

FreeMiNT 1.15.12

@mikrosk mikrosk released this Jan 28, 2017 · 3933 commits to master since this release

This is FreeMiNT 1.15.12, official release
==========================================

Fourth release of FreeMiNT 1.15
-------------------------------

This is an improved and bugfixed version of the 1.15.5 release.

Thanks to all betatesters who tested intensivly the beta versions
and helped me and all other FreeMiNT contributors with suggestions
and constructive critic or interesting discussions.

This FreeMiNT version is dedicated to the MiNT community. Without the
contributions of the community members there would be nothing todo.

The most important changes:

- new system calls: Pvalidate()/Maccess()/Ptrace()/Psysctl()/Fpoll()/
  Fseek64()/emulation()
- improvements in the memory management
- improvements in the module handling and kernel interface
- bugfixes of some bad bugs
- finalized cvs integration of all kernel modules
- updates and enhancements of the kernel modules

Very important:

The kernel modules are no longer maintained seperatly!
This implies too that there are no seperate packages for each of the
modules. If you ever maintained/packed/shipped 10 modules and the FreeMiNT
kernel and lot of kernel related tools you understand that this is a pure
waste of time. With CVS it's possible to reduce this overhead dramatically.
I'm sure you understand this. The archives are a little bit bigger but
all modules are consistent to the kernel version.

See in ChangeLog.#1.15.12 for more details.


Contributors:

  - Thomas Binder <gryf@hrzpub.tu-darmstadt.de>
  - Konrad M. Kokoszkiewicz <draco@mi.com.pl>
  - Guido Flohr <guido@freemint.de>
  - Michael Schwingen <rincewind@tubul.dascon.de>
  - Ralph Lowinski <ralph@aquaplan.de>
  - Jens Heitmann <jheitmann@debitel.net>
  - Odd Skancke <oskancke@online.no>
  - and me


Frank Naumann
<fnaumann@freemint.de>

2000-07-31, Magdeburg

==============================================================================
******************************************************************************
==============================================================================


This is FreeMiNT 1.15.5, official release
=========================================

Third public release of the new FreeMiNT 1.15
---------------------------------------------

This is an improved and bugfixed version of the 1.15.1 release.

Thanks to all betatesters who tested intensivly the beta versions
and helped me and all other FreeMiNT contributors with suggestions
and constructive critic or interesting discussions.

This FreeMiNT version is dedicated to the MiNT community. Without the
contributions of the community members there would be nothing todo.

The most important changes:

- new system calls: Ffchown(), Ffchmod(), Dchroot(), Fstat64()
- optional native UTC mode for filesystems
- better shutdown, FreeMiNT never returns to TOS now
- new INITIALMEM configuration option (config file/run time)
- support MagiC style shared libraries
- support program header flag F_SMALLTPA (introduced by MagiC)
- and lot of bugfixes and other improvements

See in ChangeLog.#1.13-1.15.9 for more details.


Contributors:

  - Thomas Binder <gryf@hrzpub.tu-darmstadt.de>
  - Konrad M. Kokoszkiewicz <draco@mi.com.pl>
  - Guido Flohr <guido@freemint.de>
  - Andreas Baer <asbaer@asrael.franken.de>
  - Michael Schwingen <rincewind@tubul.dascon.de>
  - Ralph Lowinski <ralph@aquaplan.de>
  - Joerg Westheide <Joerg_Westheide@su.maus.de>
  - and I


Frank Naumann
<fnaumann@cs.uni-magdeburg.de>

Magdeburg, 16.11.1999

==============================================================================
******************************************************************************
==============================================================================


This is FreeMiNT 1.15.1, official release
=========================================

Second public release of the new FreeMiNT 1.15.
----------------------------------------------

This is mostly a bugfixed and speed optimized version of the 1.15.0 release.

Thanks to all betatesters who tested intensivly the beta versions
and helped me and all other FreeMiNT contributors with suggestions
and constructive critic or interesting discussions.

This FreeMiNT version is dedicated to the MiNT community. Without the
contributions of the community members there would be nothing todo.

The most important changes:

- 040/060 MMU (memory protection) support
- fix bug in 030 memory protection code (working now)
- complete new and much faster kernel internal memory management
  - efficient 3 way algorithm
- new Ssystem information and configuration options
  - processor cache information & handling
  - extended kernel informations
  - extended debug settings
- new Dcntl supported (DP_VOLNAMEMAX)
- fixes and improvements in the NEWFATFS:
  - software configurable writeprotect mode on filesystem level
  - more sanity checks and verifications
  - enhanced FAT32 support
  - better shell support, x-bit emulation
  - complete working lookup
  - fix some other minor bugs related to directory handling,
  - fix floppy disk bug
  - pseudo permission support
- fixes and improvements in the buffer cache:
  - resident caching (interface enhancement)
  - remove redundant code
  - large read caching
  - writeback optimziation
  - signed - unsigned bugfixes
  - bugfixes in mapping routines
- rewritten syscall entry strategie
- lot of speed optimizations in periodically tasks
- complete new enhanced CNF parser
- rewritten Psigintr(), working now much better
- own processor detection
- automatic cpush adaption
- updates for the TOSFS
- fix 14 partition problem
- fix for CENTEK II users (TOS version detection)
- better Milan support
- and lot of other minor fixes and cleanups

See in ChangeLog.#1.13-1.15.9 for more details.


Contributors:

  - Thomas Binder <gryf@hrzpub.tu-darmstadt.de>
  - Konrad M. Kokoszkiewicz <draco@mi.com.pl>
  - Guido Flohr <guido@freemint.de>
  - Michael Schwingen <rincewind@tubul.dascon.de>
  - Julian F. Reschke <fjr010@email.mot.com>
  - Ralph Lowinski <ralph@aquaplan.de>
  - Katherine L. Ellis <kellis@primenet.com>
  - Christian Felsch <felsch@tu-harburg.de>
  - Rainer Seitel <Rainer_Seitel@ka.maus.de>
  - and I


Frank Naumann
<fnaumann@cs.uni-magdeburg.de>

Magdeburg, 08.05.1999

==============================================================================
******************************************************************************
==============================================================================


This is FreeMiNT 1.15.0, official release
=========================================

First public release of the new FreeMiNT 1.15.
----------------------------------------------

Thanks to all the people who've helped me, all betatesters and
all who've send patches, bug reports or suggestions.

Special thanks to Katherine L. Ellis for her great
MiNT-Setter and the permission to include this program
in the distribution. It's freeware, copyright by Kellis.
Also Katherine L. Ellis checked my english documentation.

Special thanks to Christian Felsch for his great
FSetter and the permission to include this program
also in the distribution. Also freeware, copyright by Christian.

Thanks to Konrad M. Kokoszkiewicz, Rainer Seitel, Thomas Binder,
Julian F. Reschke, Mikko Larjava, Daniel Petersson, Petr Strehlik
and Jo Even Jarkstein for betatests, suggestions and patches.

Thanks to all betatesters that I'm not mentionning here.

-------------------------------------------------------------------------

Here's a list of extensions relative to FreeMiNT 1.14.7:

1) new FAT filesystem has been added. You can activate it for selected
   disks using MINT.CNF command NEWFATFS followed by a list of drives. For
   example:

   NEWFATFS=D,E,F,H

   will activate the new FAT filesystem on drives D:, E:, F and H:
   respectively. The rest of FAT filesystems will be handled by the old
   TOS filesystem.

   NOTICE: it is planned for the future to remove the old TOS FS from the
   MiNT kernel; all FAT drives will be handled by the MiNT FAT filesystem
   driver. This time the keyword NEWFATFS will also be removed as it won't
   be necessary anymore.

   The new filesystem features VFAT extension supporting long filenames.
   The FAT extension may be activated using VFAT cnf keyword:

   VFAT=D,F,H

   will activate VFAT extension for drives D:, F: and H: respectively. It
   is NOT recommended to use VFAT extension for your BOOT drive.

The new FAT/FAT32/VFAT filesystem makes now possible to have long
filenames and large partitions under MultiTOS without the Minix filesystem
driver (MINIX.XFS). However, we still recommend using Minix XFS to run
multiuser environments and Unix software.

There are no limits in the new FAT/FAT32/VFAT filesystem. It can handle
large DOS partitions and GEM/BGM partitions of any size. For FAT32 you need at
least HDDriver 7.55 (older version doesn't handle the different partition ID).
The new partition ID 'F32' (like GEM, BGM) is for ATARI compatible
partitions reserved and also featured by HDDriver 7.55.

A tool to create FAT32 partitions has been created (mkfatfs 0.2 beta). It's
included in this distribution in util\.

2) filesystem caching is now handled internally by the kernel. The size of
   the cache may be controlled using CACHE keyword in MINT.CNF, for
   example:

   CACHE=500

   allocates 500 kilobytes for disk caches.

   The cache supports the write-back feature that can be enabled or disabled for
   each drive. The write-back feature is disabled on all drives as default.
   On startup you can enable it using WB_ENABLE keyword in the MINT.CNF file:

   WB_ENABLE=D,E,F,H

   enables the write-back cache for drives D:, E:, F and H: respectively.

With the nice tool MiNTSetter by Katherine L. Ellis <kellis@primenet.com> you
can change a lot of options from 1) and 2) on the fly.
The latest version of MiNTSetter is on: http://www.primenet.com/~kellis/

With FSetter from Christian Felsch <felsch@tu-harburg.de> you can
control all settings of NEWFATFS on the fly.
The latest version from FSetter is on: http://www.tu-harburg.de/~smcf1605/

3) fastload mode can be now forced for all programs using FASTLOAD=YES
   command in the CNF file.

4) VM extension has been disabled.

5) The kernel has now a new time package. Please refer to the file
   doc/minttime.doc and doc/timezone.doc for details and use.

6) The XBIOS is now fully protected from an unprivileged access. All XBIOS
   functions need root euid at SECURELEVEL > 0. Supexec() needs root euid
   at SECURELEVEL > 1. Only Random() and Cursconf() are accessible for
   users at any security level.

7) Behaviour of the protection code is changed once more (I hope this was
   the last time). When a program calls what it should not, the call is
   ignored and EACCDN (-36) is returned. For Super() and Supexec() this
   means that the calling program will most likely die very soon due to
   bus error or privilege violation. Id est: no kills are made when a
   program is calling a protected function, but it is expected that
   the forbidden action will later raise a signal, that will most probably
   kill the faulty program.

   If the returned value (-36) confused the calling application (because
   it expected a pointer as a response, for example), it can go
   vegetables. In this case the usual hardware protection as well as the
   memory protection mechanism should prevent it from destroying the
   system.

   NOTICE: the protection means, that you probably will not be able to
   run common GEM software or GEM itself without root privileges at
   SECURELEVEL > 0 !

8) DSP related XBIOS functions on Falcon should work OK now. It mainly
   refers to the Dsp_LodToBinary() and Dsp_LoadProg().

9) add some provisional MILAN support

10) new MiNT.CNF keyword 'HIDE_B=' to disable completly drive B:


Contributors:

- the new time keeping functions have been developed and applied, as well
  as a bunch of doc files, manpages and other supplementary files have
  been written, and collected by Guido Flohr <gufl0000@stud.uni-sb.de>.

- ST ESCC support has been developed by Harald Denker
  <harry@hal.westfalen.de> and applied to the kernel with all necessary
  modifications by Konrad M. Kokoszkiewicz <draco@mi.com.pl>

- new FAT/FAT32/VFAT filesystem and new global buffer cache management
  by me.

- other changes, bugfixes and supplementary programs have been contributed by:
  - Thomas Binder <gryf@hrzpub.tu-darmstadt.de>
  - Katherine L. Ellis <kellis@primenet.com>
  - Christian Felsch <felsch@tu-harburg.de>
  - Konrad M. Kokoszkiewicz <draco@mi.com.pl>
  - Mikko Larjava <mitala@nic.funet.fi>, 68060 cache patch (once more)
  - Daniel Petersson <tam@dataphone.se>
  - Julian F. Reschke <fjr010@email.mot.com>
  - Rainer Seitel <Rainer_Seitel@ka.maus.de>

Refer to the ChangeLog.#1.13-1.15.9 for the detailed list of changes.


Frank Naumann
<fnaumann@cs.uni-magdeburg.de>

Magdeburg, 08.10.1998

FreeMiNT 1.15.10b

@mikrosk mikrosk released this Jan 28, 2017 · 3933 commits to master since this release

FreeMiNT 1.15.10, beta release
==============================

Please read this whole README from top to bottom. Doing so helps to
avoid confusion.

This is a beta version with important bugfixes compared to the official
FreeMiNT 1.15.9 beta release. Please refer to the ChangeLog for a detailed
list of all changes.


Attention
=========

From the last beta release until now many things have happened. We now
use the CVS version control system for source integrity and source
management. That's why several things are now handled in a new way.

First of all, most of the kernel modules are now part of the CVS
tree and no longer maintained seperately. There will be no seperate
releases of those modules in the future.

The same also applies to FreeMiNT related tools that are part of the CVS
tree.


kernel:
=======

Here is a short summary of the most important kernel changes:

- new boot menu that comes up if you hold the SHIFT key during loading
  of the kernel
- slightly optimized memory management
- integrated ramdisk with much more accurate Dfree()
- new high precision delay routines (added to kerinfo too)
- totally new module loading routines
- profiling support for the kernel itself
- fix of the (f->links <= 0) problem
- many other bugfixes
- due to CVS, total redesign of the source tree
  completely new Makefile framework
  removed much redundant code from module


modules:
========

sockets/       - MiNTNet
  xif/         - the driver modules for MiNTNet

xdd/
  flop_raw/    - floppy /dev/fxx driver
  mfp/         - serial driver for mfp like in every ATARI
  scc/         - serial driver for scc like Falcon/TT
  uart/        - serial driver for pc16550 like in Milan
  xconout2/    - TosWin2 console driver

xfs/
  ext2fs/      - ext2 filesystem driver (bugfixed version)
  minixfs/     - minix filesystem driver (bugfixed version)
  nfs/         - network filesystem driver (heavily updated version)


tools:
======

crypto/        - tool for the new crypto xfs layer (new)
fsetter/       - xfs configuration tool (heavily updated)
gluestik/      - stik emulation
mgw/           - draconis emulation
minix/         - minix tools (checker, initializer, config)
mkfatfs        - FAT filesystem initalizer
nfs/           - mount tool


Documentation
=============

This archive doesn't include any documentation! It's only a beta
version for testing.

The complete documentation can be found in the FreeMiNT 1.15.5 archive!
If you don't have the documentation, please download this archive and read
it carefully. You can find it under:

http://www.cs.uni-magdeburg.de/~fnaumann/

freemint-1.15.5-bin.tar.gz
freemint-1.15.5.tar.gz


Frank Naumann
<fnaumann@freemint.de>

Magdeburg, 29.10.2000