avatar_SOS

CubeMDOS / FAT16+FAT32-OS - for XMASS, Symbiface_2+3,HXC/FlashFloppy

Started by SOS, 00:18, 23 March 18

Previous topic - Next topic

0 Members and 1 Guest are viewing this topic.

beb

Ok, FAT16 is working... successful formatting. I don't touch anything anymore.

Trouble with Orgams, until I patch the rom with "config".
Maybe someone want to write a doc ??? :)

thanks
>> Oldskool Rules // Asic Suxx <<

SOS

Quote from: beb on 20:19, 23 April 20
Ok, FAT16 is working...

successful formatting. I don't touch anything anymore.
Nice to hear   :)

Quote from: beb on 20:19, 23 April 20
.. until I patch the rom with "config".
Maybe someone want to write a doc ??? :)
See "CubeMDOS120120b.txt"

(ok, i move the CONFIG.BAS-Information in the TXT also to the beginning of the TXT-Doc)

m_dr_m

Compatibility: Fear enough! I use my CPC octo-daily to code, so I'm biased towards fast and convenient facilities, not game launching :)
I appreciate the fact you offer the choice (v1 vs v2). Nit: the config message isn't very clear. Suggestion:
"Default to v1? It improves game launching compatibility, but requires to type |v2 to use Orgams and Symbos (Y/N)".



Crackers don't have much thing to crack anymore. They could use their retirement time and insane amount of money to patch their sloppy floppy loaders. Some of them don't even work on B: drive!


Glob: having an helper ROM doing the proper thing for globs would actually increase compatibility!
By the way, it would be great to follow unix behavior ("*" means everything regardless of extension) rather that the crappy msdos one.
Never in my life I have used "*" to match "*.   ".




United we stand: This is nice that both CubeMDos and M4 provides the same UDIR RSX than AcmeDos. I'm curious why Syx chose this callback approach rather than providing DIR_OPEN + DIR_GET_NEXT which doesn't require to poke in memory and deal with ROM re-connection.


I'd like to know: which issues did you encounter with Orgams handling of headerless files? Or: what did I do wrong?


Meta: What's with this spurious [size] markup everywhere?[/size]

SOS


Compatibillity is for me an very big goal (Games & Syntax)
It doesnt matter, if i like the actual AMSDOS-Handling-Syntax or not.
(e.g. you will see a little side-project of me "Duke's Telnet-Client" working on both WIFI-Cards with an
driver-like structure ("RSX"  :D ) - compatibillity, compatibillity, compatibillity....)
(maybe later i will start a second side project like that)

Quote from: m_dr_m on 10:55, 24 April 20
Helper ROM doing the proper thing for globs would actually increase compatibility.
Hmm, IMHO no, because Games will init ROM7, which is the main Mass-Storage OS - and then? The Helper-ROM must handle this and init the correct MassOS, with the correct parameters. (a lot todo)
The memory-handling inside a Game-Program is terrible enough, you can't imagine how difficult it could be, to find free RAM, which you can use and what to do, when a game thinks the same  :o ???


Quote from: m_dr_m on 10:55, 24 April 20
United we stand: This is nice that both CubeMDos and M4 provides the same UDIR RSX than AcmeDos. I'm curious why Syx chose this callback approach rather than providing DIR_OPEN + DIR_GET_NEXT which doesn't require to poke in memory and deal with ROM re-connection.
What do you think, long long time ago, in a long forgotten century who has working together with Syx for this part and why this RSX was programmed?  ;D
And with Duke for the same RSX  ;D
And with SOS for the same RSX  ;D
(you can get an tip inside http://www.spinpoint.org/cpc/m4info.txt)

(This callback approach was at that time the best idea and for compatibillity reasons the best choice for M4DOS+CubeMDOS)


Quote from: m_dr_m on 10:55, 24 April 20
I'd like to know: which issues did you encounter with Orgams handling of headerless files? Or: what did I do wrong?
I do not use Orgams.
When there is an error, please report it here in an separate post. I will take sometimes a closer look (actual i work on the next release and can't include more things , else i will never be finished)

m_dr_m

Quote from: SOS on 11:54, 24 April 20
Compatibillity is for me an very big goal (Games & Syntax)


I am also all for compatibility and uniformisation, when it empowers interoperability.
Compatibility with legacy crap, I'm less enthusiast :)


Quote
(e.g. you will see a little side-project of me "Duke's Telnet-Client" working on both WIFI-Cards with an
driver-like structure ("RSX"  :D ) - compatibillity, compatibillity, compatibillity....)


Sweet! Tell us more!


Quote
Hmm, IMHO no, because Games will init ROM7, which is the main Mass-Storage OS - and then? The Helper-ROM must handle this and init the correct MassOS, with the correct parameters. (a lot todo)


Well, I'm not sure to understand the issue.

       
  • Virtually no games use RSX, so it doesn't matter.
  • Helper ROM and MassDos ROMs: same battle anyway, they have to transparently replace previous DOS.
Orgams & 1A: I was referring to your doc:


Quote
improved 1A-Handling (Orgams)


What was wrong?



Also in the doc:


Quote
Only with HXC-Firmware (at the moment FlashFloppy is not supported!).


Why is that? What is missing with FF?


BTW, when I load something in |HA mode, the device displays 'W' as if it were writing. Troubling!
(Gotek + Firmware FF v0.9.19a).


Thanks again for the great work,
Take care!

m_dr_m

Today's requests:

       
  • mdr067: Display directories in lowercase. Or Titlecase, like in SymbOS!
  • mdr069: Display free MiB along with "Drive D:"  to save one display line. And/or only when < 1 MiB.
  • mdr070: Handle paths: run"/tool/dirscan" (like in ImpDos!).
  • mdr071: Switch to D when using |CD (I have one strong case why one should do that).
Thanks & Cheers!

m_dr_m

Today's bug report:

       
  • mdr073: First &80 bytes of a header-less file on |HA are consumed as a header. (*)
To reproduce: DISC_IN_OPEN, then DISC_IN_CHAR: 129th byte is read instead of first one.


(*) It can happen by coïncidence that the &80 first bytes looks like a valid header (witch correct checksum etc), but it's extremely rare and wouldn't occur on 4 files  in a row (Symbos ROMs for that matter) I guess.


Don't forget to drink!

GUNHED

Files starting with more than &43 Bytes of &00 provide a "wrong-valid" header, because the checksum it 0. Under FutureOS I catch that problem by checking if the checksum (of bytes 0 to &42) equals 0. If yes, it's not a header, rather a picture.  :)
http://futureos.de --> Get the revolutionary FutureOS (Update: 2023.11.30)
http://futureos.cpc-live.com/files/LambdaSpeak_RSX_by_TFM.zip --> Get the RSX-ROM for LambdaSpeak :-) (Updated: 2021.12.26)

m_dr_m

Why not checking all the bytes are 00?
Your heuristic might be wrong 1 times every other 256!

GUNHED

Quote from: m_dr_m on 21:45, 27 April 20
Why not checking all the bytes are 00?
Your heuristic might be wrong 1 times every other 256!
Not needed, a header contains file name, file length. Both are non-zero. So the checksum can't be 0. I guess I tested thousands of files (during decades), never had a problem.  :)


EDIT: Even if not, headers always contain some bytes being greater than zero, so the checksum is too. Thrust me.


EDIT2: I offer eight bits (Bitburger pils beer) to eveybody being able to send me a file with a zero-header - but please not something being purely constructed for the purpose.  :) :) :)
http://futureos.de --> Get the revolutionary FutureOS (Update: 2023.11.30)
http://futureos.cpc-live.com/files/LambdaSpeak_RSX_by_TFM.zip --> Get the RSX-ROM for LambdaSpeak :-) (Updated: 2021.12.26)

m_dr_m

Oh you're right, that's a 16-bit checksum which is just a sum.
I agree that if it's 0 it implies previous bytes are 0!


I encountered once an headerless file with "wrong-valid header", it took me some times to figure it out.


m_dr_m

Quote from: m_dr_m on 21:19, 27 April 20

       
  • mdr073: First &80 bytes of a header-less file on |HA are consumed as a header. (*)


I don't know if it"s related, but I get some "Drive Missing" and i must (R)etry.

SOS

Quote from: m_dr_m on 21:19, 27 April 20
Today's bug report:

       
  • mdr073: First &80 bytes of a header-less file on |HA are consumed as a header. (*)
To reproduce: DISC_IN_OPEN, then DISC_IN_CHAR: 129th byte is read instead of first one.


(*) It can happen by coïncidence that the &80 first bytes looks like a valid header (witch correct checksum etc), but it's extremely rare and wouldn't occur on 4 files  in a row (Symbos ROMs for that matter) I guess.


Don't forget to drink!

Okay, a lot  :o to read & check from you - but big thanks!!!  :D


First answers (yes, some are open):

- "Duke's Telnet-Client" working on both WIFI-Cards
  https://www.cpcwiki.eu/forum/programming/wifi-compatibility-between-the-m4-symbiface-3-using-telnet-as-an-example/
  My vision of compatibillity.
  Maybe, depends on the Progress of the SF3-Firmware and my joy/fun (what to do next), Maybe i will make an second project like that.

- Helper ROM:
  Yes, normally (nearly) everything is solveable (but with amount efforts which could be uninteresting).
  In your Example you must cascade up to three ROM's: Helper, Cube, AMSDOS (dont forget to start games from floppies)
  And this during an ROM-Init7

- improved 1A-Handling (Orgams)  "What was wrong?"
  Sorry, cant remember  :-[

- "at the moment FlashFloppy is not supported"
  Bug in the documentation   :D
  (will be removed)

- "BTW, when I load something in |HA mode, the device displays 'W' as if it were writing. Troubling!"
  Yes, Correct, that's the way of communicate with the HXC/FF  ;)

- mdr067: Display directories in lowercase. Or Titlecase, like in SymbOS!
  I Change this, to get Windows compatibillity.
  You can use |DIR to get the longnames of the Dir's.

- mdr069: Display free MiB along with "Drive D:"  to save one display line. And/or only when < 1 MiB.
  Hmm, i take a look later

- mdr070: Handle paths: run"/tool/dirscan" (like in ImpDos!).
  Hmm, i take a look later

- mdr071: Switch to D when using |CD (I have one strong case why one should do that).
  Why?  (because my ROM is full and with this function i have Control both mode (normal Storage & HXC))

- mdr073: First &80 bytes of a header-less file on |HA are consumed as a header. (*)
  That's new  :( , yes Maybe a bug - i will compare this to AMSDOS

- I don't know if it"s related, but I get some "Drive Missing" and i must (R)etry.
  Yes, i know this. I hope the next Version will be solve that.
  I found an bug & fixed (why HA had ever even worked before??)
  => should be more stable

m_dr_m


Thank you for addressing each point!

Quote from: SOS on 08:44, 28 April 20
- Helper ROM:
  Yes, normally (nearly) everything is solveable (but with amount efforts which could be uninteresting).
  In your Example you must cascade up to three ROM's: Helper, Cube, AMSDOS (dont forget to start games from floppies)
  And this during an ROM-Init7
That's true! Good thing the Z80 is pretty fast :)

Quote
- mdr067: Display directories in lowercase. Or Titlecase, like in SymbOS!
  I Change this, to get Windows compatibillity.
  You can use |DIR to get the longnames of the Dir's.
I understand that. I was just taking about the display. Since it's case insensitive anyway, that would be nice.


Quote
- mdr071: Switch to D when using |CD (I have one strong case why one should do that).
  Why?  (because my ROM is full and with this function i have Control both mode (normal Storage & HXC))
Actually, that might give you some space (no check, no error message!).
That's basic UX! When you want to get into a directory, obviously you want to go the device that supports directories.
Before (3 steps):

       
  • |cd,"/toto"
  • Error message. Damn!
  • |d
  • |cd,"/toto"
After (1 step):

       
  • |cd,"/toto"


Quote
- I don't know if it"s related, but I get some "Drive Missing" and i must (R)etry.
  Yes, i know this. I hope the next Version will be solve that.
  I found an bug & fixed (why HA had ever even worked before??)
  => should be more stable
Great to hear that. Since your doc (.txt) is the reference point, it would be sweet to be up-to-date with the latest known issues!


New requests :)



       
  • Having a fast format option for FAT32 128MiB. (Popular request by the way!)
  • Having some diagnostic tool, when an externally formatted/populated device isn't recognized. What was expected and not found?

TotO

Quote from: m_dr_m on 11:57, 28 April 20

       
  • Having a fast format option for FAT32 128MiB. (Popular request by the way!)
The main problem of any programs called "DOS or OS" on CPC ... Not able to do the first required task: detect the capacity and format a drive.
"You make one mistake in your life and the internet will never let you live it down" (Keith Goodyer)

m_dr_m

I agree heartfully, especially when you don't do use your mass storage to do any transfert!

m_dr_m

Quote
- "at the moment FlashFloppy is not supported"
  Bug in the documentation   :D
  (will be removed)
It might still be true:



       
  • mdr074: |hsl wrongly show empty slots (or FF characters).

TotO

Quote from: m_dr_m on 10:55, 24 April 20I'm curious why SyX chose this callback approach
It was a fast hack made to allow SOS to do tests for his Norton Commander Clone project.
"You make one mistake in your life and the internet will never let you live it down" (Keith Goodyer)

SyX

Quote from: m_dr_m on 10:55, 24 April 20
I'm curious why Syx chose this callback approach rather than providing DIR_OPEN + DIR_GET_NEXT which doesn't require to poke in memory and deal with ROM re-connection.
The reason was because one of the main testers in the real machine, SOS,  was working in a "norton commander clone" and he needed that functionality.

SOS helped me a lot with his tests, without his help and the other test guys, it would have been impossible to release AcmeDOS at all. Mainly, because in those days my X-Mass prototype was lost in the brazillian postal service... I only received it 6 months after AcmeDOS was published. And WinApe hard disk support it didn't work at all, Richard only fixed it after my reports of a few bugs that I found in the emulation. Then AcmeDOS was coded without being able to make any tests at all, I was not totally blind because I built a tool for building memory snapshots where I inserted in the RAM the disk sectors that I needed in that moment... yes, I always have been that crazy :P

Maybe |UDIR was not the most sensible thing to do, but this 5 minutes hack for getting file/dir entries was enough for SOS and gave enough flexibility for with a 3 bytes patch anybody could process the information that this function produce for adjusting at their necessities. Even if the patch is ugly, it is using an RSX for adding extra functionality; this is the Amsdos way of adding extra functionality. And that always was important for me, AcmeDOS main goal was/is/will to be Amsdos and firmware compatible and because that try to use the small amount of RAM possible for its internal variables (there is not an ARM microcontroller rocket launcher where I can put those variables in the X-Mass board :P); and those variables live in the only place that you can steal from the OS without producing compatibility problems (well, every old bad crack crunched with cheesecruncher is going to fuck that, but it is always possible to get a better file version of the software that you want to install).
Internally my api has the usual functions:
1.- Goto to the first file/dir entry in the folder that is not . or ..
2.- Get the actual file/dir entry.
3.- Get the next file/dir entry.
Infact the main code for this RSX is:
;----------------------------------------------------------------------------------
; |udir (DEPRECIATED); This temporary hack it will disappear with the publication of
; the Posix interface in the 1.0 release.
;----------------------------------------------------------------------------------
xmass_cmd_udir
    ; Initialise the buffer used for formatting a catalog entry
    LD   DE,AMSDOS_RECORD_NAME_BUFFER + 2
    CALL add_de_iy
    LD   A,' '
    LD   (DE),A                             ; Mark as not valid name

.dir_no_args
    CALL fs_goto_first_dir_entry
    RET  NC                                 ; Hardware Error
    OR   A
    JR   NZ,.exit_udir
   
.loop_get_dir_entry
    CALL fs_get_dir_entry                   ; line list loop starts here
    RET  NC                                 ; Hardware Error
    OR   A
    JR   NZ,.exit_udir                      ; end of dir?

    ; Process catalog entry
    ; HL = Location of null terminated filename string
    ;  B = File flag (1 = directory, 0 = file)
    CALL CAT_HANDLER
   
.continue
    CALL fs_goto_next_dir_entry
    RET  NC
    OR   A
    JR   Z,.loop_get_dir_entry
.exit_udir   
    SCF
    RET
And as you can see in the code, this function was going to be depreciated with the release of the version 1.0. And I am practically sure that
I told that to SOS in the email where I explained how to use UDIR.

This unpublished version 1.0, called SOS (SyX Operating System) those days includes a LOT of extra things (you will even need to flash the basic rom for my patched one), but I am not going to fill this post with vaporware... specially because there is not publishing date at all. My priority those days should be to finish our racing game and being a father of a newborn during this pandemia, it doesn't let time for coding too much cpc things.

SOS

Quote from: m_dr_m on 11:57, 28 April 20
I understand that. I was just taking about the display. Since it's case insensitive anyway, that would be nice.

Handling of Longnames on an 64KB (only a few Bytes avail for Cube)-4MHZ-8Bit-CPU-16KB ROM-Computer is a torture.
Yes, this Point will be nice (Display on CAT + CD into), but sorry, no  :(

Quote from: m_dr_m on 11:57, 28 April 20
That's basic UX! When you want to get into a directory, obviously you want to go the device that supports directories.
Before (3 steps):

       
  • |cd,"/toto"
  • Error message. Damn!
  • |d
  • |cd,"/toto"
After (1 step):

       
  • |cd,"/toto"
Hmmm.... I must think about that

Quote from: m_dr_m on 11:57, 28 April 20
Great to hear that. Since your doc (.txt) is the reference point, it would be sweet to be up-to-date with the latest known issues!

Yes, correct, i should upload an WIP.TXT.
At the Moment, which should work:
- DSK: 464 without Floppy
- DSK: Support of "Parados80", "Vortex" (do you need more formats?)
- DSK: |DIR displays the DSK-Content
- Remove the Booting-Message, to increase the Game-Compatibillity (Super Skweek)
- HXC detection bugfix (should be more reliable), Slot-Handling (|HSL, ...) now works
- Code-Restructure of HXC-Interface (now needed the 2nd DSK-ROM for operate)
todo:
- Added SF3-Features for higher Game-Compatibillty



Quote from: m_dr_m on 11:57, 28 April 20

       
  • Having a fast format option for FAT32 128MiB. (Popular request by the way!)
  • Having some diagnostic tool, when an externally formatted/populated device isn't recognized. What was expected and not found?
1)
I know, that this was often requested. My general concept is, that you have great format-Tools in Windows, Linux, MacOS, ....
(much more better then i can program)
The only Point which i think to change, is to implement more presets of formats.
But i need an image of an previously formatted DOM to do that.
(someone can send me an Image)
2)
No, too much complicated. CubeMDOS should detect all(!) first partitions (if not i like to check it). When it's not detected, then you have an bigger Problem, which will not easy to fix. It doesnt have an Benefit, when the user know's what's going wrong - and the but: all 1st partitions will be detected, so there is no case in "not recognizing"  ;D

SOS

Hey SyX!!!!!!!!

nice to see you  :D

Quote from: SyX on 00:29, 29 April 20
Maybe |UDIR was not the most sensible thing to do, but this 5 minutes hack for getting file/dir entries was enough for SOS and gave enough flexibility for with a 3 bytes patch anybody could process the information that this function produce for adjusting at their necessities.
Yes, "Keep-it-short-and-simple" is a good strategy on 8Bit-Machines  ;D

Quote from: SyX on 00:29, 29 April 20
called SOS (SyX Operating System)
:o 
hahahahahha  ;D ;D ;D ;D ;D

Quote from: SyX on 00:29, 29 April 20
being a father of a newborn during this pandemia, it doesn't let time for coding too much cpc things.
Great news! My congratulations and all the best for you (I hope you are all healthy).

m_dr_m

Quote from: SOS on 08:22, 29 April 20
Handling of Longnames on an 64KB (only a few Bytes avail for Cube)-4MHZ-8Bit-CPU-16KB ROM-Computer is a torture.


I'm just talking about lowering the shortnames. And / or:

       
  • mdr076: Display all directories first, like in Impdos!
Also, size-coding tip: for routines called from a lot places, use RST mechanism. E.g. call toto:word tata  ; Pass tata as parameter.

Quote
Yes, correct, i should upload an WIP.TXT.
At the Moment, which should work:
[...]
Sounds great! Is it available for testing yet?
BTW, when a bug is discovered and confirmed, the main doc.txt should be updated too!


Quote
I know, that this was often requested. My general concept is, that you have great format-Tools in Windows, Linux, MacOS, ....
(much more better then i can program)
Well, i cannot plug the DOM on the PC I have access to!
Also, it's very convenient to be able to do that from the CPC. A (d)os should operate (disks)!




Hey SyX, good to see you here!
Thank you very much for the explanation. It's good to know the legacy. I agree that pragmatism is useful.
Congrats for the kido, have fun!


Looking forward to SOS. And SOS!


Maybe we should name a project "Super Yummy Xplorer".

GUNHED

Quote from: SOS on 08:22, 29 April 20
- DSK: Support of "Parados80", "Vortex" (do you need more formats?)
Thanks a lot for the great Vortex standard format. :) :) :)
http://futureos.de --> Get the revolutionary FutureOS (Update: 2023.11.30)
http://futureos.cpc-live.com/files/LambdaSpeak_RSX_by_TFM.zip --> Get the RSX-ROM for LambdaSpeak :-) (Updated: 2021.12.26)

beb

Ok, You have to format your device FAT32 with 1kb cluster... And it work well...


Until I tried to copy a 110kb Ascii file.. and it doesn't load... :(
>> Oldskool Rules // Asic Suxx <<

m_dr_m

Thanks Bob for the update.


There is an open issue (see "Known issues" in the doc):
Quote
- ASCII-Files >64KB are truncated   


Also, the YANCC copier used to truncate files > 32KiB

Powered by SMFPacks Menu Editor Mod