Viewing Issue Advanced Details
ID Category [?] Severity [?] Reproducibility Date Submitted Last Update
05783 Misc. Minor Always Nov 27, 2014, 14:48 Jun 15, 2016, 08:50
Tester demotester View Status Public Platform MESS (Official Binary)
Assigned To Robbbert Resolution Fixed OS Windows XP
Status [?] Resolved Driver
Version 0.156 Fixed in Version 0.175 Build Normal
Fixed in Git Commit Github Pull Request #
Summary MESS-specific 05783: sol20: SVT format differs from Solace emu!
Description I have made 2 files: one that works on solace emulator but not in MESS, and the other one that works in MESS but produce loading error in Solace emulator. (test files attached below)

Note: The 1st one is almost same as metron in softlist, the other one is made with replacing the D data with those from "tinyc.ent" file.


I noticed that Solace emu report loading error just a few second after start loading the other one file, and that is around address 0100. (see on attched picture)

If you compare two files, you will notice that after a block of zeros in Solace file the 1st byte is 3C and on the other file the 1st byte is 2A ?!


If you load the file that works in Solace emu with "GET" command and dump the mem with "DU 0100", you will see that there is no 3C on 0100 address than 2A.

If you load the Solace version of file in MESS emu, on addres 0100 will be 3C ?!


Thus the 3C must be some of code known to Solace emu loader that is not implemented in MESS emulator.
(Probably that is why a lot of SVT files have a problem to start when loaded in MESS.)


I found something mentioned on the folowing link -> http://www.sol20.org/solace/solace_tape.html

quote:
"Finally, there is the "magic hex" values MM, which represents one character time of carrier. This is used to model fine-scale timing; the C command models time on the scale of tenths of seconds. The MM value may not be preceded by the error flags."

... and probably this is what is not emulated in MESS!


Link to latest version of Solace emu -> http://www.sol20.org/solace/solace3_2.zip

Solace emu is free according to "building.txt" found in "build" folder of Solace emu ...

quote:
"CODE OWNERSHIP:

 If you want to take pieces of code out of Solace, feel free. If you
 take large parts of code, I'd like to be given a bit of credit for my
 work; including it in a comment in the code itself would be nice.
 Please drop me a line if you make use of my code; I'd get a kick out
  of knowing that somebody found it useful."

There is also "src" folder with "vtape.c" and "vtape.h" that should explain all.
Steps To Reproduce
Additional Information 0.153: Added partial support for SVT format (used in Solace emulator) [Robbbert].
Github Commit
Flags
Regression Version
Affected Sets / Systems sol20
Attached Files
zip file icon SVT_test.zip (23,222 bytes) Nov 27, 2014, 14:48 Uploaded by demotester
png file icon SVT_test.png (14,490 bytes) Nov 27, 2014, 14:49 Uploaded by demotester
demotester
png file icon SVT_test_solace.png (13,216 bytes) Nov 29, 2014, 13:59 Uploaded by demotester
demotester
zip file icon Another example.zip (6,167 bytes) Jun 3, 2016, 18:08 Uploaded by demotester
Another test case example files !
Relationships
There are no relationship linked to this issue.
Notes
10
User avatar
No.11269
Robbbert
Senior Tester
Nov 27, 2014, 21:47
The only SVT files we could support are those created by Solace and not edited afterward. If you're modifying the file by hand who knows what will happen.

The 3C byte is a data byte and not preceeded by any error flag, there is nothing to say it should be omitted.

Please supply a SVT file that has come directly from Solace without modification.
User avatar
No.11270
demotester
Tester
Nov 28, 2014, 12:42
edited on: Nov 29, 2014, 14:00
tinyc-work-in-Solace.svt == same as metron.zip from softlist (only the 1st file -> the TC file)

tinyc-work-in-MESS.svt == above file modified with data from tc.ent (http://www.sol20.org/tapes/tinyc/tinyc.zip)

Note: Hope you know the .ent file is dump of memory, right?


Now do following ... in Solace emu and then in MESS emu:

1) attach metron.zip file in emu
2) load the 1st TC file into memory with command ... GET TC
3) dump the memory locations ... DU 0000 010F (do you see 3C on 0100 location?)
4) start the file in emu ... EX 0 (does it work?)

5) Compare the metron.zip file with tc.ent file in an text editor:

metron.zip == D 3C2A4605F9C30605C304C0CD0E01C9C5

tc.ent == 0100: 2A 46 05 F9 C3 06 05 C3 04 C0 CD 0E 01 C9 C5 47


Is your findings same as mine?

The byte 3C exist in metron.zip but not in memory dump when loaded in Solace emu, right? (see on attached SVT_test_solace.png)
User avatar
No.12746
demotester
Tester
Jun 3, 2016, 18:11
edited on: Jun 3, 2016, 18:26
Here's another example (see Attached Files), this time recorded directly from Solace emulator.

Of course, in Solace emulator it will work after has been loaded, but not in MESS emulator !?

Analyzing / comparing the data in the memory of Solace emulator, after loading from the .svt file, can come to the conclusion
that after each 256-byte in .svt file is sort of control byte and the same is not present in the memory of Solace emu after loading.

As for the MESS emulator, situation is that MESS all bytes from .svt file treated as data, and the same also are there in memory
of MESS emulator after loading.

After this it turns out, if the MESS emulator dropped every 256-th+1 byte, it seems then data could have been properly loaded into memory.

So it is now all together a little clearer, but still have not managed to find a formula that Solace emu use to calculate each 256 byte in next control byte.
User avatar
No.12749
Haze
Senior Tester
Jun 5, 2016, 12:32
sounds like one version of the file format has a checksum byte every 256 bytes or similar?

who is breaking the spec, MAME, or the other emulator?
User avatar
No.12750
demotester
Tester
Jun 5, 2016, 12:51
edited on: Jun 6, 2016, 14:33
Well, the .svt tape format is 1st made for Solace emu, so MAME should support the same spec if want to be compatible with the Solace, right?

EDIT:
Seems the Solace is doing it right; so find the needed infos in the Music System User Manual -> see last 2 pages !!! ( http://www.sol20.org/manuals/music.pdf )
If after this someone still not clear what is the problem, I give up :-).
User avatar
No.12757
Robbbert
Senior Tester
Jun 11, 2016, 14:03
Extra byte was a checksum byte.
User avatar
No.12758
demotester
Tester
Jun 11, 2016, 14:39
We finally figured out what was the problem, excellent ! :)
Thanks for the repair.
User avatar
No.12760
demotester
Tester
Jun 12, 2016, 14:59
edited on: Jun 13, 2016, 08:48
Thanks for the new Bleeding-edge release of MESSUI ! :)

So, I checked it today and found a possible new problem: if in a .svt file program header name is 2 letters, the MESS has a problem to load it !

F.e. if check above "attached" tinyC, it has 2 letters but more than one space in header name between TC and 43 - so it works fine in MESS and Solace,
but the tinyC from SW-list has only one space between header name TC and 43 so it fail in MESS - but works fine in Solace !

Hope this could be fixed easy ! (thx)

EDIT: it seems that this problem with a header name exists since before , so it's not new !
User avatar
No.12766
Robbbert
Senior Tester
Jun 15, 2016, 05:09
Since it's an unrelated problem, can you make a new bug for it?
User avatar
No.12767
demotester
Tester
Jun 15, 2016, 08:50
New MT bug opened! :-)