Last update:
16 IX 2017




== Extensions ==
* Information
* Downloads
== Fixes ==
* Downloads
== 65C816 XL OS ==
* Information
* Change log
* Compatibility list
* Download
== U-BASIC ==
* Information
* Downloads
== IDE Plus ==
* Information
* Download
== MultiBASIC ==
* Information
* Change log
* Download
== SysInfo ==
* Information
* Download
== Other stuff ==
* Downloads
== VBXE ==
* Information
* Downloads


















 

OS change log

27.V.2015.

  • Given up most hardware references to F7 and Rapidus registers (a dedicated PBI device will take care of that). The MCR will only get set when a cartridge is detected during RAM sizing.
  • A minor fix in the routine counting extended RAM banks.
  • Given up automatic searching for a bootable disk when the selected one does not respond.
  • Given up the pointers HITOP and HIBOT on the 2nd page; new location LOSEGM $024d
  • ATRMSK is now $FF by default.
  • Added sanity check for the high RAM allocation table to prevent problems with warm start when the table got somehow destroyed or the high RAM is present, but malfunctioning.
  • Death screens moved to RAM (Rapidus Fast ROM is not visible to ANTIC).
  • Ctrl/F2 will now swap DMACTLS and DMASAV (switching the ANTIC display off and on, respectively).

20.III.2007.

  • The base RAM sizing routine now stops at $C000. This prevents flash ROMs from being overwritten at startup, if the write-protection is not active by accident.

3.III.2007.

  • A fix in the SIO: CRC errors occurring occasionally in turbo mode should be gone now.

28.II.2007.

  • A fix in the fast RAM testing routines.
  • Further corrections in the automatic SIO speed detection (related to LDW drive alone).
  • Release 2.22

26.II.2007.

  • Small fixes in the routine initializing the first 64k of RAM.
  • The fast RAM sizing routine (on Warp and F7 accelerators) now scans the address space searching for the begin of the actual memory, as in the F7 the fast RAM doesn't necessarily begin at $010000.
  • At reset time, the F7 board is now configured by default so that it can boot in "Fast" mode, and still be compatible with cartridges (such as SpartaDOS X or Atari BASIC). Also HPU gets reset (if it exists).
  • Fixes in the automatic SIO speed detection (LDW and CA-2001 had problems when Synchromesh was not loaded).
  • kfreeall() is removed.
  • The fast RAM sizer skips the last 64k segment in the address space (in the F7 and HyperSpeed accelerator boards there are I/O registers there), and so on the Warp board, even if equipped with full 16 MB, the OS won't see the last 64k.
  • JMP LOADER, forgotten by Atari programmers, added to the jump table at the address $E483. This makes the internal XL OS loader and relocator available to user programs (trub's idea).

5.VI.2006.

29-30.V.2006.

  • Fixes in the routine initializing the RAM past the first 64k (HMS).
  • Fixed the "last slot problem" in kmalloc(): when the last slot of the memory allocation table was being taken, the information about all remaining memory was lost, thus even after all the memory was released, the OS was able to "see" only the amount of memory that had been previously allocated.
  • Fixed similar problem in kfree(): releasing a block of memory, when the last slot of the memory allocation table was assigned to that block, caused garbage to be written into that slot instead of zeroing it. As a consequence, the allocation table information got corrupt.
  • A fix in the routine handling fatal errors: now the ROM CRC error causes the appropriate message to be displayed properly.
  • Bugfix in the memory initialization routine: the hibot pointer ($0296-$0298) was not initialized properly at warm start.
  • The memory allocation table format changed. As a result the number of available slots (= blocks of memory possible to allocate) increased to 64 on the same size of the table.
  • The table moved to the top of the RAM detected past the first 64k.

13.V.2006.

  • Release 2.10 along with the MultiBASIC v.0.3 (still being in a beta stage)

2.III.2006.

  • The 24-bit SIO extension's internal operation changed so that DOS 2.0 works now; this makes work all software that boots DOS 2.0, e.g. the game "Crusade in Europe".
  • SETVBLV changed to operate in more conservative way (it doesn't now switch to the native mode and back).

21.II.2006.

  • Fixed problems appearing under DOS 3.0 i 4.0.

12.II.2006.

  • CLRSCR reverted to (almost) original XL OS code, and PAINT 256 works again.

29.I.2006.

  • Two new error codes: -74 (can't alloc more memory with kmalloc) and -75 (attempt to kfree memory not previously allocated with kmalloc).

21.XII.2005.

  • The "N:" (null) device now accepts all XIO codes.

1.XII.2005.

  • minor changes in the RESET and SYSVBL service routines
  • a bit of unused code in the Self-Test ROM commented out
  • JMP JTESTROM (JMP $E471) now forces the CPU into emulation mode
  • international charset (Charset 2) modified: last three character shapes (ASCII 125, 126, 127) changed into tilde, left brace, right brace respectively.

25.IX.2005.

  • minor change in the FP routines (a JSR/RTS sequence changed to JMP)
  • a fix in US SIO: the '?' command sent by user program will now always be transmitted at 19200 baud.

8.IV.2005.

  • Release 2.09.

6.IV.2005.

  • the bootmenu now allows to manually switch off the fast serial I/O that was enabled automatically.

27.III.2005.

  • the loop that reads the keyboard data, instead of looping infinitely and busy-waiting for keyboard input, stops the CPU for that time; this modification has been made as an effect of a discuss done on #atari8 about Atari 8-bit power consumption and possibilities of supplying the power from batteries.
  • the same thing is now done inside the loop that waits for Ctrl/1 (start/stop display).

12.III.2005.

  • corrections in the screen editor code: an error occurring while opening the editor now causes margins to be reset to default positions.
  • an attempt to enable pixel mode in 32- or 48-column mode causes the screen to switch automatically to 40 columns (an error occurred previously).
  • the "disk interface" routine now recognizes additional commands: read/write PERCOM and IDENTIFY DRIVE.

10.III.2005.

  • release.

8.III.2005.

  • SIO extension which allows to read/write data directly to and from the high-memory (past the first 64k).

7.III.2005.

  • keyboard "scanning" mode implemented experimentally;
  • the definition of the XIO functions for keyboard changed in incompatible way; the way it works now will most probably go to final version;

6.III.2005.

  • fixes in kmemory routines
  • slight modifications in the screen editor

4.III.2005.

  • support for externally loaded cassette handler: jump table functions JCASOPIN and JCASRDBL get converted into "C:" XIO 16 and XIO 17, respectively.
  • added wrappers around most jumptable entries, which (the wrappers) save the B and D registers on the stack, reset them before the actual call, and restore upon exit.

1.III.2005.

  • SIO i CIO saves the D register on the stack and zeroes it for internal use;
  • at the occasion, an old Atari bug has been fixed: the PRPLNK routine was called with JSR from within CIO, and it returned with direct JMP - this in turn caused the CIORET routine to be called twice at the return from CIO.
  • calling RESET via the jump table causes the CPU to be explicitly switched to the emulation mode;

20.II.2005.

  • preliminary implementation of the fast SIO protocol used in XF-551/CA-2001 and LDW 2000 Super/Indus GT disk drives.
  • BOOT routine extension: if the drive's sector size is greater than 256 bytes, the bootsector size is assumed to be the same as in each other sector of this drive; and traditionally 128 bytes otherwise.
  • the serial routines set and reset registers AUDF3/4 and AUDC3/4 only (the coupled register 3/4 is a frequency generator for serial I/O), and the registers AUDF1/2 and AUDC1/2 are left unmodified.

17.II.2005.

  • release.

7.II.2005.

  • presence of additional 130XE-style memory banks is now tested on every reset, the number of banks detected is stored at $00029F.
  • depending on the value of this byte the keyboard interrupt treats the PORTB register in different manner: on machines without a 130XE memory expansion the PORTB register is assumed to control the console LEDs on 1200XL computer, so the keyboard interrupt routine toggles the PORTB bits appropriate for each LED. On machines equipped with a 130XE-style memory expansion the PORTB register controls the memory, so the keyboard interrupt routine does not touch it. This solution allows to have F1-F4 function keys and 130XE memory without conflicts between these two.

6.II.2005.

  • the boot menu now allows selections using cursor keys ("-" up, "=" down), and despite that, now it is not redrawn on every keypress (however, it still uses "E:" device only);

5.II.2005.

  • if the default or selected boot drive is not available during cold reset, the system tries to find the first bootable drive and gives up not sooner than after all possible drives are checked out and responded negatively.

31.I.2005.

  • eventhough the cassette handler is removed, the cassette initiation vector value must be used at reset time, because some programs start this way;

29.I.2005.

26.I.2005.

  • the boot menu displays information whether the drive supports Ultra Speed
  • bugfixed release

24.I.2005.

  • a fix in the US Doubler SIO, boot from floppy should always succeed now.

21.I.2005.

  • bugfixed release

19.I.2005.

  • boot menu opens now before cartridge initialization;

11.I.2005.

  • a new bug made while optimizing E: routines, which resulted in logical lines being calculated improperly, has been fixed;
  • US SIO activated for drives 5-8 too, apart of the 1-4;
  • an attempt to fix an old Atari bug: although the device handler reports an error while opening a file, and the operating system returns the error code to the calling program, nevertheless the IOCB remains open then. The fix is to close the channel directly after the device handler returns an error (even if programs contain workaround against this and close such a channel, closing a closed channel doesn't hurt, so this is not a problem).
  • cleanup in "K:" XIO and the "@:" handler;

10.I.2005.

  • the bug causing boot menu to report "DRIVE DOES NOT RESPOND" for all drives has been fixed;
  • the new channel lookup feature of the CIO was impossible to use, fixed as well;
  • OSS MAC/65 4.20 compatibility issue regarding FP routines has been detected and fixed;

7.I.2005.

  • Some changes imported from 1450XLD temporarily cancelled, specifically the $D1CF and NEWINI registers handling.
  • release

15.XII.2004.

  • memory allocation development: a 64-k alignment can be requested for allocated block;

13.XII.2004.

  • a menu added for boot disk selection;
  • preliminary implementation of US Doubler SIO.

12.XII.2004.

  • SELF TEST removed; this releases a bit of place for test/config program;
  • chaning cartridge at runtime causes some message to be displayed (to avoid suggestion that the system crashes because of that, as I read somewhere);
  • "@:" device defined, tested and added;
  • printer buffer moved to the place where there was the casette buffer previously; this releases 40 bytes on page 3;

11.XII.2004.

  • fix of an old Atari bug: if a bad IOCB number is given to the CIO, the system returns with error through the CIORET routine, which in this case destroys a part of the memory in range $0340-$043F overwriting it with rubbish. The fix is to replace the CIORET call with a simple RTS.
  • a function added to CIO, which automatically searches for a free (closed) IOCB channel and returns its number to the user; see specification

8.XII.2004.

  • ROM version number changed to BB 02.04 (because Atari's changes to the system have been imported from their ROM version marked BB 02.03);
  • IRQ source recognition code for a PBI device, imported yesterday from the 1450XLD ROM, has been slightly optimized (now there are 3 instructions instead of 6 and no temporary variable in RAM is engaged);
  • slight shortenings here and there;
  • cassette recorder handler removed (both CIO's "C:" and SIO's $60); this releases quite a bit of ROM space and about 20 bytes of RAM;
  • "C:" vectors in ROM (at $E440) replaced with "N:" vectors for compatibility ;-)

7.XII.2004.

  • added device "N:" operating similarly to the /dev/null, /dev/zero and /dev/random in Unix;

Some routines have been changed according to Atari code picked up from the XL OS version BB 02.03 (this is the Atari 1450XLD ROM dated 21.VI.1984., which was sent to me by voy). Changes are:

  • the IRQ source recognition routine takes into account that the new device can indicate an interrupt not only in $D1FF, but also (alternatively) in $D1CF;
  • some internal variables of the COP handler have been moved because of that (the variables used by the 1450XLD code took the addresses over);
  • new RAM location NEWINI $03ED, reserved to be the begin of the warm initialization routine for a parallel device handler loaded previously;
  • the RESET routine initializes the address;
  • and the IOPORTINI takes an advantage of that;
  • the same IOPORTINI now resets the parallel device selection register PDVREG, which wasn't done before (calling RESET from within PBI device driver used to cause ROM checksum error and executing the SELF TEST);
  • RAM sizing routine assumes minimum amount of RAM to be 16kB (10kB previously);
  • the text "BOOT ERROR" has been changed to "Boot Error" ;-)
  • the CIO should now accept device numbers in range 0-9 (for example from "D0:" to "D9:") and not 1-9 like in 800XL.
  • the CIO handler table shortened from 12 to 11 entries;

6.XII.2004.

  • the E: routine responsible for inserting lines made yet a bit faster;
  • yet another part of specification converted to Polish;

4.XII.2004.

  • version number changed to BB 01.93;
  • COP handler cleanup, the code has been simplified and shortened;
  • correction in the Atari code: setting CRITIC to 1 in the SIO routine is superfluous, as it has been already set by SIOINT;

3.XII.2004.

  • release

30.XI.2004.

  • memory allocation routines added (written and tested separately);
  • changes in specification;

29.XI.2004.

  • there was still one place where DUNIT was forced to 1 when booting from disk;
  • no possibility to boot from Cassette Recorder anymore; however, the C: handler remains for now;
  • inserting a line in the E: should be somehow faster now;

27.XI.2004.

  • yet a part of specification translated to Polish;
  • fixed possible bug in the main IRQ routine;
  • the RAM area at $03EF-$03F4 and $03F9 must be free, it is reserved for new devices; thus HIBOT and HITOP are now moved to $0296-$0298, $0299-$029B respectively, and the CASFLG variable goes to $029F.

26.XI.2004.

  • specification partially translated into Polish;
  • enlarging free ROM space;

25.XI.2004.

  • Polish translation of the changelog

23.XI.2004.

  • change in COMLOG cancelled;

22.XI.2004.

  • the ROM checksum at $FFDE removed, from now on there's only one checksum at $C000;
  • minor change in COMLOG (use stack for storing local variable instead of using page 0 location)

20.XI.2004.

  • version number bumped to BB 01.92
  • jump through VCOP0 vector in native mode and with 16-bit registers (like all other VCOPx vectors), switch this in the routine pointed to.

19.XI.2004.

  • release

18.XI.2004.

  • previously defined interrupt vectors defined anew; this renders previous specifications obsolete; see details;
  • COP #$00 handler needs to setup the I bit properly before calling the system;

17.XI.2004.

  • free ROM space "compressed", i.e. taken together to one area; this involves moving most of the ROM routines to different addresses; illegal OS calls won't work anymore;
  • SELECT/RESET should now cause cold reboot;
  • interrupt routines rewritten once again;
  • defined new interrupt vectors, VNMIN and VIRQN, which catch NMI and IRQ before the system routines are entered;

16.XI.2004.

  • define new memory pointers: HIBOT $03EF i HITOP $03F2;
  • move INTIM1 $030C-$030D to $022D-E;
  • move CASFLG $030F to $03F9; both changes made to make place for future DCB extensions;
  • few routines used by E: and S: handlers (COMADR, CLRSCR and CONVRT actually) rewritten in 16-bit code; this speedups screen operations a little bit and saves some ROM space at the same time;

15.XI.2004.

  • speed improvement in OUTPLT;
  • optimizations in SIO and CIO routines with new instructions and addressing modes;
  • the COP #$00 handler now switches to emulation mode before calling the specified address;
  • SIO does not use TSX/TXS anymore, TSC/TCS is used instead; this matters if someone calls JSIOINT in native mode;

14.XI.2004.

  • speed improvement in OUTCH;

13.XI.2004.

  • OS version number changed to BB 01.91;
  • fixed a bug in the COP handler;
  • interrupt routines shifted a bit towards $C000;
  • changing the cartridge state will now cause the STP instruction to be executed;
  • SETVBLV written anew; INTEMP $022D-$022E released;

12.XI.2004.

  • FMUL/FDIV routines speeded up a little bit;
  • prepare the first ROM based version;
  • public release

11.XI.2004.

  • OS version number changed to BB 01.90;
  • completed the COP handler;
  • fixed minor bug in NMIENBL; the NMI should not be enabled before setting GINTLK ($03FA);
  • setting the boot drive number moved from BOOT (after the PBI devices initialization) to the DISKINIT (before the PBI devices initialization);
  • slight optimizations in the NMI/SYSVBL/EXITVBL (ca 32 cycles gain);
  • newly defined ABORT and COP vectors are now initialized at reset;
  • slight size optimizations here and there across the OS code;
  • wrote a large part of this document;
  • added a routine that tests the availability of the additional RAM (taken from the SI, with slight modifications);
  • a call to this test inserted into SYSINIT;
  • further optimizations in the interrupt routines;
  • optimizations in the OUTPLT routine;
  • optimizations in the C: handler;

10.XI.2004.

  • the P: handler optimized with new 65C816 instructions, so that the native interrupt vectors could fit well at the end of the ROM. Serial number etc. removed on the same purpose;
  • implemented NMI and IRQ pre-handler for native mode;
  • SYSVBL modified (stack access);
  • wrote most of the COP handler;
  • wrote most of this document;

http://drac030.atari8.info © KMK
free counters