07-Dec-2002  (1.5.2)
-----------

kernel:
  - added code to determine the amount of available RAM at startup and
    to calculate the maximum number of processes accordingly. That way
    a bootable floppy could be used in a variety of boards without
    having to recompile the kernel. Note that now PTABSIZE in unix.h
    should be left set to 15, regardless of the amount of physical
    memory.

06-Feb-2002  (1.5.1)
-----------

kernel:
  - changed the order of the arguments passed to the application on the
    stack. Before it was *argv, argc, *envp; and the crt.asz module
    included a few instructions to swap the first two arguments.
    Now the order was changed to argc, *argv, *envp; which follows more
    closely the standard C convention; the crt.asz module was also
    modified accordingly.

    Note that this change introduces incompatibilities with existing
    UZI180 applications (are there any?), but these can easily patched.
    A patching program (patchold.c) is provided.

15-Jun-2001
-----------

kernel:
  - corrected a bug in devtty: trying to read from the tty device in raw
    mode caused the application to sleep forever.
  - corrected which signals are generated by ^C and ^\ (^C generates
    SIGINT, ^\ generates SIGQUIT).

07-Jun-2001
-----------

kernel:
  - corrected a bug in pipe(): descriptors are in user space.
  - added version and build date to the startup banner.

25-May-2001
-----------

kernel:
  - the boot device number can now be passed to the kernel in the CP/M
    command line buffer in order to skip the boot prompt.

15-May-2001
-----------

kernel (emu):
  - reworked the file R/W operations: in order to avoid file descriptor
    leaks with applications that open a considerable number of FCBs for
    read and do not close them, I'm forced to open/close the UZI file
    every time a read or write operation is performed. This causes, of
    course, a *huge* loss of performance, but is the only way I could
    get the Hi-Tech compiler to compile (and even link!) a program. In
    order to speed-up things I'm caching the fd of the latest used file,
    and only close it when a different file is accessed. That way I was
    able to compile (with optimization) a "Hello world" C program in about
    one minute from a floppy, without the fd cache it took nearly 20 min!

14-May-2001
-----------

kernel:
  - corrected a bug in readi(), now seeking past end of file will not
    cause the system to crash.

06-May-2001
-----------

kernel:
  - devflop.c: pass the device minor number to fdread0() and fdwrite0(),
    so the proper floppy drive could be selected.

kernel (emu):
  - issue a CALL (and not a JMP!) to the CP/M application, as many programs
    save the SP and later return to CCP.
  - fixed a bug in ChkDir

05-May-2001
-----------

apps:
  - added a boot loader and installer utility

25-Oct-1999
-----------

kernel (emu):
  - use 16-bit record numbers in sequential R/W operations, otherwise
    the file size will be limited to 32k.
  - emu base moved from E800 to E700 to accommodate larger code.
  - Fcn13 resets DMA address to 80h

24-Oct-1999
-----------

kernel (emu):
  - corrected Fcn36
  - corrected a bug in BRead, CY was not always set on error return.
  - implemented separate stack for BDOS
  - close and reopen the file after creating it, so it could be used
    for write and read.

23-Oct-1999
-----------

kernel (emu):
  - Fcn11 calls BConSt
  - corrected bug in Fcn10
  - compile emu.asz without jump optimization to keep the integrity of
    the bios jump table

14-Oct-1999
-----------

kernel:
  - swapout() now saves the current process context before calling getproc()

09-Oct-1999
-----------

kernel:
  - changed unconditional 'ei' in _ugets to 'call _ei', same in getproc()
  - corrected a bug in clkint2(): di was used instead of di().
  - corrected rdtod(), it was unconditionally enabling interrupts on exit;
    also, the month was reported with base 0 instead of 1.
  - signal handling: the calltrap() routine was being called while still
    in kernel space.
  - make sure inint=1 until we return from the timer_int handler, otherwise
    the handler may be reentered and the previous SP value at ISTACK-2 will
    be lost.

08-Oct-1999
-----------

kernel:
  - corrected a bug in the access() function (must test for !ugetc(path)
    instead of !*path, since path is in user space)

03-Oct-1999
-----------

kernel:
  - corrected a bug (caused by a typo) in process.c newproc()

02-Oct-1999
-----------

kernel:
  - added /dev/zero, /dev/proc
  - added uzero to machasm.asz
  - corrected mem_write, must use uget instead of uput.

29-Sep-1999
-----------

kernel:
  - utils.asz: bcopy() made reentrant.

28-Sep-1999
-----------

kernel:
  - kill() returns ESRCH if process was not found.


26-Sep-1999
-----------

libs:
  - created a C interface library for kernel calls (to be used by
    application programs)
  - modified stdio and libc to make they work properly under uzi. 


25-Sep-1999
-----------

kernel:
  - corrected a bug in _initsys (machasm.asz), the low address of the
    interrupt table was not being set correctly.

utils:
  - applied the bug correction from kernel/filesys.c to i_deref() in xfs2.c

21-Sep-1999
-----------

utils:
  - corrected fsck: 
      daread() - release the block immediately after reading it, to avoid
                 those 'wants busy block' messages.
      ckdir()  - there are 32 directory entries per block, and not 8. That
                 actually caused fsck to corrupt a correct filesystem (the
                 bug was present also in both the otiginal uzi and uzi280).
      ckdir()  - inodes with link count of zero are removed.
      readdir(), writedir() - second block of directories was not managed
                 correctly.

  - xdevflop.asz now resets the FDC controller on errors, as usually CP/M
    reprograms it in a different DMA mode.


Hector Peraza <peraza@uia.ua.ac.be>
