CubeIOS (Programmed by SOS in 2017-2018)
------------------------------------------------------------------------------
           (Ask me for support in the www.cpcwiki.eu-community)

Tested: XMASS with some DOM's + CF-Cards (e.g. "HAMA 2GB")


General
-------
An IDE-Driver for all CPC-Models.
The ROM must be placed below AMSDOS and (if used) M4DOS, PARADOS
Not compatible with ACMEDOS at the same time.

Partition
---------
Two partition-Types allowed (FAT16 or FAT32):
1) Supperfloppy-Format (like ACMEDOS, WinXP-Format)
2) A primary-partition as the first available partition - "normal" partion-setup from Windows. (PartitionID's #06, #0b, #0c and #0e allowed)
(So every first partition should be detected correctly.)

FAT32 is recommended, should be faster than FAT16 in write-transactions (the save would be boring slow).
FAT16-Save: You can speed up a little bit, when you first copy a large file (e.g. 200MB) after a format, then fill the media normal with
your Windows-PC and after that, delete the large file.

CubeIOS supports 28Bit-LBA, so you the maximum capacity is 268435455 Sectors (=approx 128GB).


When you boot your CPC, the partition MUST be correctly detect like
"CubeIOS 281217b - 7650MB # D:TEST"
The correct size:  7650MB
The correct label: TEST
If it's FAT32 you will see: #   (FAT16: No char displayed)
ELSE something's goes wrong...



Use with other MassOS-ROMs
--------------------------
ACMEDOS:There can only be one ;-)
You have to decide which MassOS do you want to use.
M4DOS: You can install it, in a ROM-Number below M4DOS.
When M4DOS is active, CubeIOS sleeps,
after |M4ROMOFF: M4DOS sleeps, CubeIOS is active



Format.bin
----------
Format your IDE-Media, so that it can be used (or format it with Windows).
All data will be deleted during format. This can not be undone.

Three presets of formats you can choose
Format 1:
Original ACEMDOS, with the Identifier "X-MASS" at #2B of LBA 0, 128MB Volume
Format 2:
First Primary Partition FAT16, 400MB partition Table (Type #06, 8192 Bytes/Cluster)
Format 3:
First Primary Partition FAT32, 450MB partition Table (Type #0B, 4096 Bytes/Cluster)

(When you insert an unformatted Media in your CPC, during boot, CubeIOS shows you
"unexpected format". So ignore it and run directly "format.bin" from your floppy.)


RSX
---
CD: Change Directory
MD: Make New Directory
MKDIR: Same as "MD"
RD: Remove empty Directory
REN: Rename File/Directory
GETPATH: Get actual Path
ERA: Delete File or Directory
D: Select IDE
UDIR: Internal RSX, needed for YANCC,...
LONGNAME: Shows longnames
DIR: Alternative Catalog
DRIVE: Same as in AMSDOS
FREE: Shows the free-space. (needful for FAT16-Format, where the freemem is not shown with the CAT-Command)


|REN
----
e.g.
|REN,"destinat.bas","source.bas"


|CD
---
e.g.
|CD,"GALACT~3"  goes to this directory
|CD,".." goes one level lower
|CD,"F/Feud"  goes from the actual(!) directory into "F-Dir" and then into "Feud"-Dir
|CD,"../F16"  goes from the actual(!) Feud-directory into lower-dir and then into "F16"-Dir
|CD,"/F/Feud" goes from the root(!) directory into "F-Dir" and then into "Feud"-Dir

Wildcards allowed, e.g.
|CD,"/F/Fe?d" goes from the root(!) directory into "F-Dir" and then into the first dir, which mathes "Fe?d"
|CD,"/F/Fe*" goes from the root(!) directory into "F-Dir" and then into the first dir, which mathes "Fe*"

Going to root:
|CD,"\" or |CD,"/" 




|DRIVE
------
|DRIVE,"a" => Selects A-Drive
|DRIVE,"b" => Selects B-Drive
|DRIVE,"d" => Selects D-Drive



CAT
--------
Short-Directory Listing.
Pause the Directory-Listing with <SPACE> and stop with <ESC>
Free-Memory only shown at FAT32, with FAT16, you can use the |FREE-RSX.


|DIR
--------
Long listing, with longnames (if exist, and only in Mode 1+2).
Pause the Directory-Listing with <SPACE> and stop with <ESC>
Wildcards allowed, e.g.
|DIR,"GA?E*" shows
GAMEOF~1
GAMEOV~1
GAMES~1 .SUM
GATEST~1





|GETPATH
--------
From ASM, you can use the getpath-function with the register:
A=255 and DE=Buffferaddress for Path
Then the RSX has no screen-output, the actual path is written to the memory-address, which DE points to.



|LONGNAME
---------
e.g.
|LONGNAME,"GALACT~3"
Galactic Invaders

From ASM, you can call the longname-function with the register:
- A=255 and DE=Buffferaddress for file/dirname and IX=normal RSX-Pointer
- A=254 no output, see (#BE7D)+#163 backwards
Then the RSX has no screen-output, the longname is written to the memory-address, which DE points to.



|UDIR
-----
This functions makes a "CAT" and, after one directory-entry is read from the SD-Card, call an ASM-Program from the user,
until the last entry is read.  With your own function you can build the CAS_CATALOG_BUFFER.
It will be called with:
- HL = Location of null terminated file/folder name string
-  B = File flag (1 = directory, 0 = file)
The length of the file is witten to:
Low-Word:         &AD86
High-Word:        &AD88
 
You can patch the addresses &bea3, &bea4,&bea5 with a jump to your own function (e.g. "JP &A000")
When the memory address &bea3 is "0" the function does nothing.
The M4-ROM initialized this address with "0" during hard-reset.
This function is similar to the same function of ACME-DOS, with the main difference, that directory-names
could have more than 11 Bytes length (max. 16 Bytes).



WINAPE
------
It's compatible.
I'm using the Windows-Program "Roadkil's DiskImage Version 1.6" to create images from USB-Sticks and CF-Cards for Winape.
(Source is "Physical Disc", not a Driver-Letter-Volume)
You can mount such Image (incl. ACMEDOS-Format) in Windows with e.g. OSFMount and change the content.



ASCII-Files/Orgams and the #1A-problem
--------------------------------------
When you examine a saved ASCII-File from a factory-CPC, then you will see an added #1A char at the end of the file.
When you do the same, with an added file with Winape to an DSK-File, you will see the same effect.
The #1A is the flag "End of file" reached.
When you add an file to e.g. with Windows to an CF-Card, than you dont have the same effect - no #1A is added.
So some programs has problems with that (e.g. Orgams) and other not (e.g. Maxam).
Maybe, sometimes i will do a workaround (or not).




Planned Features (maybe) / Known Issues
---------------------------------------
- CAS_TEST_EOF: Maybe a bug present (see YANCC - F3-Display of ASCII-Files)
- Move-Command
- autoexec.bas
- OPENOUT"w":MEMORY &1ff:CLOSEOUT
  => dont create the trashfile
- Maybe: Standalone-Version without AMSDOS
- |FREE on FAT16 partitions - The free-mem-value is slightly too high 
   (e.g. after ACMEDOS-Format, you have a partition of 122MB, with 123MB free space)
- Patched Lower-ROM to increase the compatibility.


Credits
-------
My thanks goes to:
* norecess for Phactory, Executioner, Syx, TotO, Alan M. Sugar and his team
* www.cpcwiki.eu & the community, HAL6128 for tool-support and Audronic &  00WReX & xesrjb for beta-testing
* Prodaton for LBA-Functions



Changelog of Versions
---------------------
xxxxxx
- Partition-Types #0C+#0E allowed
- Booting-Screen-Optimizations

180318b
- Release-Version

250218b
- First RC-Version, Start of closed-beta-test

281217b
- First Preview-Version, todo-List for the RC-Version: FAT32-Support, more testing