For the start, little about why I did this TOS mods, changes, and what are benefits of them:
Floppies and drives for them became obsolete, problematic, hard to
find, and even prices go up now. While Flash cards, SD cards becoming
cheaper and cheaper. Atari ST has good for it's time mass storage
support - ACSI port. It is fast enough, diverse adapters where made
for, and today can buy some too, brand new. Or DIY. Because ST is ROM
OS computer, with not so much RAM, main part of hard disk support is in
TOS ROM. It is called FAT16 filesystem. And it could be done better -
yes, I say it, I know it for many years, and exactly why. Limitations
of it - max 512 MB partitions, max 14 partitions (C-P), need for extra
buffers + some extra tasks on hard disk driver SW, which should be
rather in TOS self. Surely, 512 MB was extremely good (and expensive)
capacity for 1989, but that changed fast. Actually, TOS FAT16 is good
really only up to 32 MB partition (logical drive size). Over it it
needs so called BigDOS or BigGEM partitions, and that is what is not
done as should be. Most likely because DRI C compiler (Alcyon)
limitations.
All in all, my FAT16 mod, improving of TOS results in: max 1 GB
partitions, 30 is max what TOS can handle (we are out of drive letters
with it). And all it at 'price' of less RAM needed for it - actually no
need for extra buffers. 2 KB what TOS provides by default is enough.
Normally, min 32 KB buffer space is needed for partitions up to 512 MB.
Some may say that it is not much, but sometimes that makes a
difference, and work is more efficient, because minimal block size for
disk access is 512 bytes versus 8 KB in case of regular TOS. And I
added integrated driver, so even less RAM usage.
And maybe most useful benefit: full DOS compatibility - you can
access disks, cards partitioned with PC, Linux with Atari now. Or vs. -
access you Atari SD card with Windows, MAC, Linux, without extra SW.
That is possible with TOS/DOS compatible partitioning too, but this is
better. Technical details about improved FAT16
Because Atari ST SW is mostly floppy based, I added powerful Virtual Floppy feature. See below for more details.
There are some features for easier usage, easier settings of diverse things.
And all it fits (even partitioner) in 192 KB TOS 1.04 space - without
removing anything. How is it possible ? Optimisation of original code.
Packing some things. Doing all new code in assembler.
Which TOS versions are improved ?
1. TOS 1.04 - latest TOS for ST machines.
2. TOS 1.62 - That's actually latest TOS for STE machines.
3. TOS 2.06 Desktop combined with improved 1.04 GEMDOS - what gives advanced Desktop of 2.06 and better compatibility of 1.04 - ST*
marked as TOS 2.14 .
4. TOS 2.06 Desktop combined with improved 1.62 - what gives advanced Desktop of 2.06 and better compatibility of 1.62 - STE
marked as TOS 2.16 .
5. TOS 1.04 and 1.62 with large stackframe support - what means work with CPUs 68010-68030 . Good for some accelerators.
Compatibility with diverse Atari HW: as visible
above. However, all it can work on Atari Mega STE . Even TOS 1.04i .
There is added code what inits. extra Mega STE HW if runs on them.
* TOS 2.06 needs little HW logic in ST (so Mega ST) machines - and some
people have it already - for instance it goes with some IDE adapters. This is not some kind of TOS "patch" . Several
changes are performed, including serious optimisations of code, lot of it is added. Without reassembling complete code with
optimizations + some data packing it just wouldn't fit in 192 KB ROM
space of Atari ST .
TV test pic :
May call it after boot, when logo appears. It is in res. 320x240 px . Shots done with camera.
Above is case of RGB lines overdrive - common problem with modern TVs, monitors.
Look that grey scale at lower third of circle.
How it should look. Now grey scale is good. Solution is quite simple -
adding resistors of about 200 ohm in 3 RGB lines, best in Scart
connector.
Of course, test pic helps in other settings too - geometry. Checking
colors. Because 16 color limitation of Atari some colors are not same
as on regular test pictures. This needs to be well packable to fit in
TOS ROM space.
Final test pic:
Integrated partitioner:
This is integrated partitioner in TOS self. And it is something
unusual. I was thinking about to add another test pic, with horizontal
overscan, but that would need different code and size for ST and STE,
and is no real need for another test pic.
Partitioner program without GEM, AES can be really short, especially if there is already low level disk access code in TOS.
So, this works in textual mode, and I decided to add mouse - that will
make usage easier and faster - better than navigating with cursor keys,
and there is even click :-)
With this, user don't need any floppy, or even SD card with any PRG,
data, partitions on it. Can make it work with brand new, empty card in
couple minutes. Create partitions by own desires, according to
available space. Then just activate integrated driver, and it is ready
to use, with practically 0 + RAM need - no extra buffers needed with
true Big FAT16.
Exit from this is with 'button' Reset - from 2 reasons: 1: reset is
needed to make it boot, now with partitioned disk. 2: this txt. mode
with active mouse is not really something after what can start AES and
Desktop, not without some longer extra code.
Yes, simple is sometime the best :-)
Multiple TOS versions in Atari, switchable It becomes more and more popular. Solves some compatibility problems, and is really easy to add in Atari ST(E) machines.
Because that EPROMs 27C512 are available at practically same price as
27C256 (what goes in STs when set for 6 TOS ROM chips) I will send for
people with STs, who want 6 TOS ROM chips them - and that means 2 TOS
versions at once in machine, active one is switchable with simple
circuit:
This is for early STs without soldering pads for setting it for 6 or 2
TOS ROM chips. Need to bend pins 1 of EPROMs, so not go in socket, and
solder there point between 1K resistor and switch. In case of newer,
where are soldering pads for that setting, like Mega ST, no need to
bend pins, need to connect it to middle of W3, and remove connection to
left or right pad. In case of 1040 STFM need to remove connection
at soldering pads marked with A16, and solder point between
resistor and switch to pad closer to ROM sockets - stays for rev.
C103175 REV 1.1 . The whole thing is to put GND or +5V to pins 1 of
EPROMS, which are highest address line, so it selects which half of
EPROM content will be accessed. Resistor is just for safety here.
Then can have 2 TOS versions in machine - like 1.04i and 1.02, or 1.04
regular. Or even some game adapted for TOS ROM space - I done some
popular titles: GoldRunner, Backlash, Black Lamp, Time Bandit, Great
Giana Sisters (with blitter scroll if present), Eliminator, Nebulus,
Moon Patrol, Jimmy White Snooker, Quartz, Star Wars ...
Why I made it ? I seen some limitations of TOS long time ago. Even had
idea how to fix some of them, but that needed lot of time. Got many
ideas what is worth to add during years, and some are suggested by
Atari people in forums. Base is still original Atari TOS, and RAM
requirements of TOS did not increase, compatibility with SW is same as
in regular versions.
Main improvements in short:
More efficient work with mass storage-
Flash cards, hard disks. Larger partitions (up to 1 GB) and max 30
partitions accessible. Direct support for DOS type FAT16 partitions,
which are accessible directly with modern OS-es like Windows, Linux,
MAC-OS . And can use even less RAM as TOS type
partitions. Added long filename (LFN) filtering in code (it's currently
in my hard disk drivers). With integrated driver there is no extra RAM
usage - same as when using only floppies .
New partitioner program under work:
Partitioning in Windows: it is possible. For instance with this: MiniTool Partition Wizard .
Must create FAT16 (sometimes indicated just as FAT) partitions, max 1023 MB size, with default Cluster size.
Virtual Floppy
- much better than Floppy Image Runner (my creation too) - needs less
RAM, faster work, possible to use very large pseudo floppy image files
. More and more problems with floppy disks and drives. Who needs them in
2019, when we can do almost everything from mass storage ? Including
playing old games.
Logo at startup, followed with short delay, when can perform some settings, integrated boot manager
What can order right now ?
UK & US, De versions with new icons, or with original icons. Doing it with other
language TOS versions is possible of course, but it is lot of extra
work, so all depend from interest.
TOS 1.04i UK or US, De, Es, Fr, Sg OI - original icons - 50 Euros + shipping. 6
EPROMs of double capacity. 40 Euros for 2 chips variant - see below for
details
TOS 1.04i UK, US, De, Es, Fr, Sg NI - new icons - 50 Euros + shipping.
TOS 1.62i UK, US, Fr, De, Es, Se, Sg OI - original icons - 40 Euros + shipping.
TOS 1.62i UK, US, Fr, De, Es, Se, Sg NI - new icons - 40 Euros + shipping.
TOS 2.14 UK, US, Es OI - original icons - 40 Euros + shipping.
TOS 2.14 UK, US, Es NI - 40 Euros + shipping.
TOS 2.16 UK, US, Fr, De, Se OI - 40 Euros + shipping.
TOS 2.16 UK, US, Fr, De, Se NI - 40 Euros + shipping.
6 ROM version price is 50 Euros + shipping. Only 1.04i .
All it is tested very thoroughly, I work on this over 4 years.
Above goes in 2x 1Mbit EPROMs, like 27C010 , 32 pins. Fits directly in STE, Mega STE.
Or 6x 28 pin EPROMs for ST, Mega ST . But it is now 27C512, double capacity - see above.
Note about 2 or 6 chip TOS for ST, Mega ST:
2 chip variant needs 32 pin EPROMs (what you see in case of 2 chip
original TOS 1.04 are mask programmed ROMs, and they can have less
pins). So, to use 2 chip variant for 1.04 need socket expanders and
some soldering.
Older STs even don't have logic for 2 chip TOS (74LS11), so there can go only 6 chip variant without extra work and logic.
This is with 6x 27C512 . I added short wires to ROM version setting
soldering pads. W3 middle pad is here connected not left or right (+5V
there), but to GND - and that selects other half of 27C512, so other
TOS version. Of course, users need to add there simple switch solution,
accessible from outside - 1 switch (must be not alternative) and 1x 1K
resistor.
TOS switch is of course possible with
32-pin EPROMs too - like 4 TOS versions with 27C4xx or 29F040 . Please
contact me in e-mail (petari@8bitchip.info) for arranging it.
All orders in e-mail too. Please write your HW details, especially mass
storage type. Some features need special code for specific adapter -
Virtual Floppy, state saves/restores. At moment UltraSatan is most
popular by my knowledge. And it is what I can test well.
Solution for TOS 2.14 or original 2.06 with 4x 28 pin EPROM chips - no need for intermediate socket, so will remain low.
TOS 2.06 is longer and on different address space than TOS 1.00-1.04
(ST TOS-es) . But it works fine with ST, Mega ST, because it is coded
to work on them. Just needs extra logic chip for accessing different
address space. Usually it goes then in 2x 32 pin EPROMs. That can be
problem for some people because space needed for it.
Well, it is possible to solve TOS 2.06 (or 2.14i) for ST, Mega STE with
28-pin EPROMs, which go direct in original sockets. 4x 27C512, what
means 4x 64 KB = 256 KB (size of 2.06) . Chips go direct in sockets
except pins 20 of 2 chips in middle socket - LO1 and HI1 on pic. Need
to bend them, and solder on them line from GAL (with address decoding
logic). Some special setting of W soldering pads is needed too. And
soldering wires - most go on CPU . Those who order it will get detailed
instructions and programmed GAL, EPROMs.
You will get EPROMs via post. Instructions in e-mail, support in e-mail.
Sending TOS image files is possible too, but that needs talk via e-mail.
petari@8bitchip.info
Logo at startup, followed with short delay, when can perform some settings:
50/60 Hz refresh rate, disable AUTO run. Switch black and white colors.
Most interesting is environment setting, like with boot managers, just without need to install and bother with them:
When pressing some of keys 1-9 right after logo appears, it will not
load AUTO run PRG file(s), DESKTOP.INF and ACCessories from their
regular locations (AUTO dir and ROOT of boot partition). but from
special directory BT, what must be in ROOT of C partition (works from
floppy too, but there is not so useful), and in it can have 9
subdirectories 1-9, in which need to place files what want to be
automatically loaded during boot and AES start, res. change.
So, for instance if place SOME.PRG (for auto run), DESKTOP.INF
and SOME.ACC in BT\3\ - it will activate them when pressing
key 3 after logo appears. With it, very easy to start with desired resident SW, Desktop layout, ACCessories.
If nothing is pressed, it will load from usual locations. Desktop
save will go too in proper subdirectory. AUTO run and ACC needs to be
copied in proper folder.
Saving GEM SW states and quick restore of them:
Something better than hybernate. May save state of computer, running
GEM program by key combination press, practically in any moment (except
disk operation periods) . And later can restore that state with key
comb. press in couple seconds.
Time depends from RAM amount in machine and disk speed. Of course, only
for hard disks, Flash card. Time may be under 1 sec with 512 KB RAM,
and about 3-6 secs with 4 MB RAM (stays not for slow Satandisk).
10 diverse states can be saved in 10 slots by holding down left
shift+Ctrl and pressing 1-9 or 0. Restore by holding down left
shift+Ctrl and pressing F1-F10 .
This will work only with SW what uses TOS functions for peripheral access and other things. And GEM SW is mostly such.
This, and Virtual Floppy must use very low level mass storage access
(normal filesystem is not good for), so there is special driver in ROM
TOS. And it is for specific adapter - so basic ACSI (Internal
MSTE adapter, old ACSI-SCSI adapters ...), ICD extended ACSI
(UltraSatan, better ICD adapters ...), IDE adapters. May be for
some custom adapers too in future.
And that low level driver may serve for regular hard disk driver - then
can autoboot it even faster, with very low RAM usage (combined with
improved FAT16).
Short demo of state saves and restore:
Here is speed test I made some months ago:
Done on Mega STE, with same UltraSatan,
with 2 SD cards with practically same speed.
Test is just copying SUBDIR with 80 very short files to some other SUBDIR on partition.
Regular TOS 2.06 :
Note: it needs min 32 KB for buffers for 500 MB partition.
Almost empty 500 MB partition: At 8 MHz: 39 sec , at 16 MHz 27 sec
Regular TOS 1.04, 8 MHz for same as above: 38 sec - marginally faster.
Improved TOS 1.04 (without large sectors), DOS FAT16 partition of 1000 MB, almost empty:
No added buffers, only base 2 KB, what TOS creates after boot.
At 8 MHz: 26 sec , at 16 MHz: 17 sec
With 32 KB added buffers:
8 MHz - 25 sec, 16 MHz - 17 sec - marginal improvement, or just in range of test error.
Wasted space on hard disk/Flash card :
Because of FAT16 nature, there is minimal space what some very short file takes on disk.
FAT16 means 16-bit file allocation table. So, it can have 2 POWER 16 records max - about 65000.
And that's max count of files too. Now, calculate how long is space on disk for 1 FAT record in case of 256-512 MB partition:
512 millions per 65536 = 512x16 = 8192 bytes, or 8 KB . That
means that even very short file of 10 bytes will take 8 KB on disk. Or
if file is 8193 bytes, it will take 2 records, called clusters in terminology, so 16 KB. That wasted space is called slack.
Unfortunately, in case of TOS and AHDI partitions it is worse. Max count of FAT records, files is 2 POW 15 instead 16.
Probably because used C compiler limitations. And that means that in
case of 256-512 MB partition cluster size is 16 KB instead 8. So, more
wasted space (slack).
Here are concrete test results:
Regular TOS, 512 MB AHDI compatible partition. Free space before adding
files is 535609344 bytes. Adding DIR with 80 very short files, all
below 100 bytes. After that free space is 534282240 bytes. So 1327104
bytes less. And that's exactly 81x16384 .
81 because DIR takes 1 cluster too.
Improved TOS, 512 MB real FAT16 partition (DOS type): Free space
before adding files is 535519232 bytes. After adding 80 short files
with DIR containing them free space is 534855680 bytes. 663552 bytes
less - or 2 times less as above.
Cluster size is 8 KB instead 16 KB in case of same partition size. And that means better space usage. Less wasted space.
It may be pretty much in case of many short files.