8000 Releases · retro16/acsi2stm · GitHub
[go: up one dir, main page]
More Web Proxy on the site http://driver.im/
Skip to content

Releases: retro16/acsi2stm

5.1b: Program loading fix, Dockerfile build container

24 Mar 18:59
Compare
Choose a tag to compare

Super Compact PCB and Compact PCB 1.1 have been fully tested.

Changes since 5.1a

  • Added Dockerfile for the 100% automated build container. This is now the official way to generate a build
  • Updated documentation again
  • Fixed program loading in GemDrive (clear BSS in FASTLOAD mode, clear whole TPA in normal mode)
  • Fixed GemDrive with Alt-RAM (respect real phystop value)

Changes since 5.00

  • Fixed date/time handling in GemDrive mode
    • Fixes file date/time on non-GemDrive drivesd such as floppy or ACSI
  • Reworked components of the Compact PCB to improve stability
  • Use bigger components on the PCB to ease hand soldering
  • Added the Super Compact PCB

5.1a: Super Compact PCB, hardware revision, date set fix

14 Jan 13:07
Compare
Choose a tag to compare

Changes since 5.00

UPDATE: New PCB design has been slightly altered since this release. Please be patient and do not build, unless you absolutely know what you do and you are ready to lose money. Prototype units should be delivered and tested before the end of february 2025.

WARNING: New PCBs from this beta release haven't been tested.

  • Fixed date/time handling in GemDrive mode
    • Fixes file date/time on non-GemDrive drivesd such as floppy or ACSI
  • Reworked components of the Compact PCB to improve stability
  • Use bigger components on the PCB to ease hand soldering
  • Added the Super Compact PCB

5.00: Professionally assembled PCB, EmuTOS, PIO mode, multiple devices and fixes

11 Nov 10:53
Compare
Choose a tag to compare

5.00 is the final version of this project. Development is officially stopped.

This is a new major version because the project shifted direction: it's not
officially based on the Blue Pill anymore, but a custom PCB based on the exact
same microcontroller: the STM32F103C8T6.

Don't worry, your existing hardware is still supported with zero changes and is
perfectly fine. Don't feel bad if you don't have the new PCB design.

New Compact PCB

This release adds a new PCB with less features, but that can be built entirely
by JLCPCB's assembly services. It does not require a Blue Pill as it integrates
the STM32 directly.

Total cost is around $50 for 5 units (this is the minimum amount you can buy).
Prices are of 07/2023 and may vary.

Sources for EasyEda, Gerber, BOM and component placement are included.

This PCB can also be connected using UltraSatan cables (IDC20 format), both for
sharing the port to other devices or being connected using an IDC20 cable.

Note that buying from JLCPCB does not imply any warranty of any form from
ACSI2STM authors. ACSI2STM authors don't receive any money from this.

It also includes a 3D printable enclosure to have a finished product.

This is now the official design, all Blue Pill based units are still supported
(and will be in the future) but it is discouraged to build new designs based on
blue pill boards because of clone/bad chip issues found on too many Blue Pill
boards available for sale. You will lose money buying these.

GemDrive loader program

GemDrive can now be loaded as a TOS program. The main reason to do that is
EmuTOS support since EmuTOS does not boot hard disk boot sectors.

EmuTOS loader

GemDrive can now boot EMUTOS.SYS from the 1st SD card slot. It needs a special
setup to reload GemDrive from within EmuTOS, described in
gemdrive.md.

PIO firmware

Many Atari ST's have a broken DMA chip. The PIO firmware uses a protocol that
does not use DMA transfers at all. The price to pay is speed: it is 10x slower
and it does not support ACSI at all nor auto booting. It requires a special
driver GEMDRPIO.PRG provided in the release package.

Multiple devices support

A lot of improvements and testing has been done to make sure ACSI2STM plays well
with other devices on the DMA port. This includes other ACSI2STM units in any
mode.

Changes since 4.12

Compatibility:

  • Fixed SD card frequencies to 50MHz, 25MHz and 1MHz to match the actual
  • Changed debug output speed to 1Mbps: helps with laggy USB-UART converters
    standard speeds
  • Removed self-modifying code in GemDrive: it should now work with CPU cache
  • Added support for TT-RAM in GemDrive
  • Added support for up to 6 ACSI2STM units in GEMDRIVE.PRG
  • Added support for PIO mode in HDDFLASH.TOS
  • Verbose firmware is now less than 64k allowing to flash it with HDDFLASH.TOS
  • Improved ACSI performance of some commands. Fixes multi device with GemDrive

Bug fixes:

  • Found and fixed the root cause for memory corruptions with ACSI_FAST_DMA = 5
  • Fixed GemDrive boot when ACSI id 0 is not an ACSI2STM unit
  • Fixed a lot of issues when multiple hard drives and ACSI2STM units are used at
    the same time
  • Introduced GemDrive command 0x09 to avoid crashes when reading boot sector
  • Fixed GemDrive drive letter allocation
  • Improved SD card hot swapping a lot
  • Fixed and added GEMDRIVE.PRG to load GemDrive from desktop and AUTO
  • Removed timeout in GemDrive boot program as it is useless
  • Fixed command byte timeout handling
  • Fixed fast CS/IRQ protocol implementation
  • Code cleanup pass (dead code removal, code formating, comments review, ...)

Features:

  • Boot EMUTOS.SYS on startup if present on the SD card
  • Added PIO mode to GemDrive to work on broken DMA chips

Hardware:

  • Added the Compact PCB
  • Swapped ID_SHIFT jumper positions in software to match the actual Compact PCB
    configuration.
  • Removed "full-featured" PCB as it's not really safe nor easy to build

Build chain:

  • Arduino 2.x is now the official IDE
  • arduino-cli is now the official build platform for release packages

Release package:

  • Added back the whole history for 4.x in release_notes.md, as it should be
  • Provide a ready to use GemDrive boot image for EmuTOS, both hard drive and
    floppy disk formats
  • Reworked documentation to put more emphasis on the new PCB design
  • Simplified documentation

4.12: Date handling fix

12 Aug 08:28
Compare
Choose a tag to compare

Fix a stupid bug that breaks dates with months between august and december.

Backported from upcoming 4.20.

4.11: Clock fix

18 Jul 20:55
Compare
Choose a tag to compare

Very small bug fix for the realtime clock that didn't run correctly.
No other change since 4.10.

4.10: Clock support and unicode for GemDrive

06 Jun 21:57
Compare
Choose a tag to compare

Clock support

Adding clock support for GemDrive was easier than anticipated. One more reason
to add a backup cell to your ACSI2STM !

Here is what it does:

  • Hooks all system clock functions into the STM32.
  • No need to load any utility: the ST is simply always on time.
  • Use CONTROL.ACC/XCONTROL.ACC or any other standard time setting tools to
    set time and date.
  • Sets date/time correctly on created files and folders.

Note: for users of machines with an internal clock, ACSI2STM reads the time from
the Atari clock at boot if its internal clock is not already set.

Unicode support

Now GemDrive properly translates all file names to unicode. Converting back and
forth is 100% guaranteed. Importing files from other systems might be more
difficult, though. Anyway, the system replaces unknown characters with a macron
so you can spot them easily. A few characters such as the euro sign are
transliterated to visually near-equivalent characters.

Changes since 4.01

  • Implemented clock for Tgettime / Tsettime / Tgetdate / Tsetdate.
  • Use clock to set file date correctly.
  • Improved performance of Fsnext when some SD slots are empty.
  • Added proper unicode translation for special Atari characters.
  • Fix for unsupported characters in names.
  • Added CHARGEN.TOS to produce test file names with unicode characters.

4.01: Small fixes in GemDrive and more tests

05 Jun 12:30
Compare
Choose a tag to compare

Some small bugs prevented GemDrive from working correctly under TOS 2.06. It may
have impacts in some software too.

Changes since 4.00

Changes in GemDrive:

  • Fixed a buffer overwrite in GemDrive that impacted Fsfirst with absolute
    paths.
  • Fixed Fsfirst return value when the path is on an ejected drive.

Changes in tests:

  • Added some tests for absolute paths.

Other changes:

  • Fixed the stack canary that took too much RAM.

4.00: A giant leap for ST-kind

04 Jun 10:22
Compare
Choose a tag to compare

Why version 4.0 ?

The project was in a semi-dead state until recently. Not enough spare time.

I wanted to return on the project because I made a lot of decisive observations
lately on the ST, the STM32 and my project:

  • The ST operating system (TOS+GEM) is a huge pile of ... well, you get it.
  • TOS filesystem is full of bugs. Nothing can be trusted. Anything beyond 32MB
    will break sooner or later if you don't accumulate a lot of patches or 3rd
    party software that eat up your precious RAM and have their own issues.
  • TOS 2.06 is barely acceptable, but breaks compatibility with some programs.
    Also, upgrading TOS is not an easy operation.
  • The STM32 has a hardware glitch when accessing its GPIO ports. That's why many
    of us had unexplainable data corruptions. I still don't understand it
    completely, but I have a few workarounds in place.
  • As fun as it was to write them, my driver and setup tool aren't (and will
    never be) production quality. It was a dead end, these needed to go away.

The ultimate solution

I found enough spare time for the huge folly I envisioned a while ago:
reproduce the GEMDOS drive feature of Hatari that hooks a PC filesystem at
GEMDOS level, and not at BIOS level.

Let me introduce GemDrive: a copycat of Hatari's GEMDOS drive, 100% in hardware.

And ... this actually works !

The whole GEMDOS is hooked into the STM32 ! Each and every GEMDOS call will
transit through a STM32 routine, then the STM32 decides if it should pass the
call back to the TOS, or implement the call with its 72MHz 32-bit CPU !

This means that the ST now benefits Bill Greiman's SdFat library in all its
goodness. Speed, compatibility, robustness, no size limitations, you name it;
everything turned to 11.

What GemDrive does

You can use FAT16, FAT32, and ExFAT, up to 2TB standard SD cards.

SD cards are mounted on the STM32 and directly exposed on the Atari.

The driver is just a shim that implements a few remote-control commands. It uses
only 512 bytes of RAM on the ST for maximum software compatibility.

Hot swapping SD cards is supported, with a lot of checks to make sure SD cards
aren't corrupted if programs try to access files from the old SD card.

The only limitation is that BIOS calls are unimplemented. The rule of thumb is:
everything that works on Hatari's GEMDOS drives should work with the new
GemDrive driver. And even more, since GemDrive mimics the weirdness of TOS
much more closely than Hatari.

A BIOS and XBIOS-level floppy emulator could be developed, but in these days of
cheap hardware-level floppy emulators, I don't think it's worth the effort. I
rarely play games on my ST anyway, and if I do I just use a real floppy.

A TOS loader could also be implemented, based on TOS relocation efforts
available online. Would require 128k of STM32 flash though, to store relocation
patches. Support for EmuTOS is also doable, but only if it brings more benefits
than simply putting EMUTOS.PRG in the AUTO folder.

ACSI hard drives aren't forgotten

Besides the new GemDrive feature, a few fixes and logic changes were made to the
ACSI block device emulation (i.e. "normal" Atari hard disk). This proved to be a
very useful use case for most users, so I won't ditch it like that.

Depending on your ACSI driver, it is possible to mix GemDrive and Atari SD
cards if you have multiple SD card slots ...

GemDrive uses a heuristic to try to select the best mode (GemDrive or ACSI),
but if all you want is good old ACSI only, just turn on strict mode using the
second jumper on the STM32.

Also, a "clean" (at least, as clean as possible) workaround has been implemented
for drivers that retrigger the A1 line mid-command, among them the TOS 1.00
bootloader.

Your hardware is safe

The ACSI2STM hardware is now 100% final. No hardware changes were made since
3.0. A legacy firmware is also provided for owners of 2.x versions that were
not 100% compatible, keeping the necessity to power cycle the STM32 on each ST
reboot (because no reset line :( ).

Future-proof for end-users

The ACSI2STM firmware can now be updated from the Atari itself. This means that
people buying units won't need fancy serial-USB adapters or fiddly Dupont wires
to do a firmware upgrade procedure. Just provide the files and voilà, firmware
updated.

The tool uses generic ACSI commands from the Seagate specification to update the
firmware, so it may work for other hard drives as well.

Documentation revisited

The documentation was entirely verified and updated. In fact, the whole ACSI2STM
project exists mainly for its documentation.

Changes since 3.01

  • Reworked DMA to try to work around some rare STM32 quirks
  • Reworked the whole ACSI layer, especially error handling
  • Removed the integrated block driver
    • Removed the setup tool
    • Removed the image creation tool
  • Added GemDrive mode (TOS >= 1.04 "rainbow TOS" recommended)
  • Added ACSI_A1_WORKAROUND to increase compatibility with TOS 1.0 and the
    2008 PP driver.
  • Added support for flashing firmware.
  • Added TOSTEST.TOS to test TOS filesystem functions.
    • Uses TOS 2.06 floppy access as a reference implementation
    • Hatari is currently not fully compliant
  • Added ACSITEST.TOS to stress test ACSI drives.
  • Added the HDDFLASH.TOS utility to flash ACSI devices, including ACSI2STM.
  • Added the SWAPTEST.TOS to stress test GemDrive swapping.

Pushed back for a later release

  • Cleanup redundent tests because of test matrix
  • Implement date/time functions with RTC in GemDrive mode
  • Set date/time correctly on all created files
  • Test/fix Pexec command-line that seems to be broken (1 / 2 extra bytes)
  • Fix top RAM allocation. I missed something. Need help.
  • Fix the GEMDRIVE.TOS loader that releases its hooks memory !
    • Need to use Pexec / Ptermres instead of Malloc.
  • Support for using GemDrive from within EmuTOS.
  • Support for unicode file names. (may not fit in flash)
  • Work around long delay on boot (long timeout on ACSI id 1 by TOS)

Features that can't be implemented / unfixable bugs

  • Closing file descriptors on Ctrl-C: no GEMDOS callback for Ctrl-C.
  • Adding more fancy features: not enough flash memory.
    • Floppy emulator
    • RAM TOS loader and relocator
  • Implement filesystem label in Fsfirst/Fsnext: SdFat doesn't expose this.
  • The SdFat library has issues with 8.3 long file names. For example, lower case
    file names aren't correctly handled.
  • SYS file loader: not enough room in the boot sector.

3.01 - Improved documentation

28 Jun 21:15
Compare
Choose a tag to compare

This is the final major release of this project. It is now entering maintenance mode.
Pull requests and bug reports are welcome.
Feature requests will be considered, but with very low priority.

Changes since 3.00:

  • Documentation improvements.
  • No firmware changes except version number change.

Known issues in the ACSI2STM firmware:

  • Creating big images and formating from the setup tool is painfully slow. It's probably impossible to fix.

Known issues in the integrated driver:

  • Hot swapping SD cards messes drive letters in some cases. May be impossible to fix.
  • Unaligned Rwabs BIOS operations are untested.
  • Does not support extended GEM partition tables (more than 4 partitions). This is very unlikely to be fixed anytime soon.
  • Does not support XHCI. No plan to implement that though: something similar to Hatari's GEMDOS drive is a better approach.
  • The setup tool sometimes messes transitions between screens.

Known issues with the setup tool:

  • The partitioning tool cannot handle extended/logical partitions. Not blocker for 3.0.

3.00 - With an official driver and PCB

26 Jun 17:49
Compare
Choose a tag to compare

A huge breakthrough: Since 2.3 I can inject code in the boot sector, so I can inject programs to run at startup.
If I can inject a program, I can inject a hard drive driver !!!

This 3.00 version is 100% plug'n'play, 4850 no extra software needed.

WARNING: ACSI_DEBUG now requires a 128k flash chip. Most blue pills are 128k anyway. Make sure to set 128k flash size in the Arduino tools/variant menu. Non-debug will be kept under 64k even if compromises have to be done.

Changes since 2.44:

  • Support the RST signal on PA15. Fixes #25.
  • Supports the SD card "LOCK" switch for write protect.
  • Redone (again) the DMA port handling logic. Previously it was correct, now it is robust.
  • Added an integrated driver. Just boot with a non-bootable SD card and the driver will inject itself in the boot sector at runtime.
  • Added A2STBOOT.EXE to install the ACSI2STM driver or the setup tool onto an image to use with Hatari, UltraSatan or ACSI2STM strict mode.
  • Changed debug serial speed to 2MBPS. Change your settings on the serial monitor ! You can go back to the old speed in acsi2stm.h.
  • Added an empty image for use with the integrated driver in doc/hd0.zip.
  • Added an ACSI command to create hd images (used by the setup tool).
  • Added a setup tool: Press Shift+S at boot to enter the setup menu. The setup tool is also available as a TOS executable: A2SETUP.TOS.
  • The driver is also available as a TOS executable: A2STDRV.TOS so you can run it from a floppy in the AUTO directory or start it from GEM.
  • Moved ACSITEST to the setup tool.
  • The driver sets the date and time from the RTC clock of the ACSI2STM at startup.
  • You can offset ACSI ids by putting a jumper on the 4 debug pins of the blue pill. Allows chaining devices.
  • Improved error and media change logic on the STM32 side.
  • The integrated driver now fully supports hot plugging. Drive letters are added or removed as you insert SD cards.
  • The setup tool can work over the serial port: send any character during boot to enter setup. Use a VT100 terminal.
  • Added an official PCB with 4 SD card slots, clock battery, a 34-pin PC floppy adapter and various power options.

Changes since 3.0g:

  • The official PCB has been tested and improved.
  • Documentation is now complete.

Known issues in the ACSI2STM firmware:

  • The watchdog timer is broken.
  • Creating big images and formating from the setup tool is painfully slow. It's probably impossible to fix.

Known issues in the integrated driver:

  • Hot swapping SD cards messes drive letters in some cases. May be impossible to fix.
  • Unaligned Rwabs BIOS operations are untested.
  • Does not support extended GEM partition tables (more than 4 partitions). This is very unlikely to be fixed anytime soon.
  • Does not support XHCI. No plan to implement that though: something similar to Hatari's GEMDOS drive is a better approach.

Known issues with the setup tool:

  • The partitioning tool cannot handle extended/logical partitions. Not blocker for 3.0.
0