From: Jim Brain on
Peter Schepers wrote:

> When I re-read the original doc, as Jim saw it, I realized that except for
> some minor mention that the size really isn't fixed, it appeared to be
> fixed for 1541 at 7928.

I can vouch that is what I understood. Reasons:

o It did make a minor mention about a flexible format and flexible track
lengths, but then spent a great deal of time talking about a maximum
track size, including a sub discussion on the 3% margin added.
o If the track length was truly changeable within a drive family, I
wondered why all of the participants spent so much time figuring out how
much length was needed for a 300RPM drive writing at the fastest rate on
the longest track. It seemed like, if the number could change per X64
image, the image maker would simply dump the track data to a temp data
store, keep a tally on the maximum number of bytes read per track, and
use that value in the track-length field. That would always be correct
and would not need to worry about tacking on an experimental 3% margin.
> This maximum track size value is causing me some grief as I'm trying to
> understand why it is necessary. I can see it would be useful for a program
> to know what the max size of _any_ track is when working in a G64. I can
> see that you would need to set aside enough space in the file so that you
> can safely modify a G64 track and not worry about wrapping around over
> other data if the track's too small.
>
> But could you not have simply told people to use the track size value
> stored at the beginning of the track data stream?
Or, put the track length as part of the record pointers at the beginning:

ERRLO,ERRHI,DATALO,DATAHI,LENLO,LENHI

> Also, since you know that V-MAX tracks can exceed this value, should or
> could we not change the 1541 default up a bit, say 8100 bytes? Surely this
> would encompass all possible track sizes?
That was my question as well. If a bunch of really smart people got
their heads together to figured out 7928 (which sounds very specific,
unlike 8000, or 8192), then it must truly be an upper bound. If you
decide to bump it up, I vote for 8192, which would be eaiser to handle
math-wise.

From: Wolfgang Moser on
Hi Peter,

Peter Schepers schrieb:
> Wolfgang Moser <wn0612(a)d81.de.invalid> wrote:
>> not really, since the doc mentions:
>>
>> 000A-000B: Maximum track size in bytes in LO/HI format
>>
>> sooo, if one wants, he could make a track size of 65535
>> bytes within the image. If this would make sense ;-)
>
> When I re-read the original doc, as Jim saw it, I realized that except for
> some minor mention that the size really isn't fixed, it appeared to be
> fixed for 1541 at 7928.

well, for me, as I was into the details beginning from
the first discussions about a GCR format back in the
late 1990'ties, I really seem to have difficulties to
understand the recipient's understanding of the G64.txt
doc.

> This maximum track size value is causing me some grief as I'm trying to
> understand why it is necessary. I can see it would be useful for a program
> to know what the max size of _any_ track is when working in a G64. I can
> see that you would need to set aside enough space in the file so that you
> can safely modify a G64 track and not worry about wrapping around over
> other data if the track's too small.

Indeed it is really useful for a certain software
implementation of a G64 image reader. If someone wants
to allocate a two dimensional _array_ of tracks instead
of successively allocating a list of vectors of tracks,
he would need that maximum size value to correctly
declare dimensions (number of track stored in image and
maximum track size).

This saves for a two-step parsing of all the descriptors
of the file to find the max value. Maybe there was
another reason once, but for me it's simply some useful
redundancy.

> But could you not have simply told people to use the track size value
> stored at the beginning of the track data stream?
>
> Also, since you know that V-MAX tracks can exceed this value, should or
> could we not change the 1541 default up a bit, say 8100 bytes? Surely this
> would encompass all possible track sizes?

You don't want to mess up with the
don't-waste-my-bytes-people, do you? Once there were
big discussions, if the G64 format shoudl include
compression, single compressed tracks, smart GCR
specific encoding/compression techniques to save as
much space as possible.

> How does MNIB create it's G64's? Does it use the hard-coded 7928 byte
> track size as well?
>
>
>>> Does this make things better? I've also made a few other smaller changes.
>> I think it make things a bit betterr since now every
>> reader does clearly recognize that the track size of
>> non-fixed nature.
>
> Well, I re-worked it many more times since I posted it, so it would be
> best if you read the doc again:
>
> http://ist.uwaterloo.ca/~schepers/formats/G64.TXT

Peter, I don't know, if this sections is new, you
mention some tables with track sizes and MNib track
sizes. The is one column named "Tail GAP".

What do even and odd sectors mean here?
I never seen a disk where _every_ inter-sector GAP
is at 19 bytes, when every even inter-sector GAP is
at only 9 bytes.
In fact every inter-sector GAP is at 9 bytes, but
for the last sector, which I call the track tail GAP.

Maybe you want to have a deeper look into the MNib
dump source to verify that.


Womo
From: Kris Vorwerk on
> > (though the new BFI mode will make regular flash more usable). Actel
> > has flash based FPGA, and theActelparts are much easier to generate
> > power supply rails for. The Xilinx parts all have difficult power
> > rail requirements, and strict power sequencing that makes design
> > difficult.
>
> I think Xilinx and Altera parts are used due to their free tools being
> available.


Minor aside: Actel also makes a version of its tools available for
free download and use. (AFAIK, it comes with Modelsim, Synplify, and
supports programming up to the mid-size Flash devices.)

c.f.,

http://www.actel.com/techdocs/litrequest/default.aspx
http://www.actel.com/products/software/libero/licensing.aspx
From: Peter Schepers on
In article <fneq92$lrb$1(a)vs5413.vserver4free.de>,
Wolfgang Moser <wn0612(a)d81.de.invalid> wrote:
>Hi Peter,
>
>Peter Schepers schrieb:
>> Wolfgang Moser <wn0612(a)d81.de.invalid> wrote:
>>> not really, since the doc mentions:
>>>
>>> 000A-000B: Maximum track size in bytes in LO/HI format
>>>
>>> sooo, if one wants, he could make a track size of 65535
>>> bytes within the image. If this would make sense ;-)
>>
>> When I re-read the original doc, as Jim saw it, I realized that except for
>> some minor mention that the size really isn't fixed, it appeared to be
>> fixed for 1541 at 7928.
>
>well, for me, as I was into the details beginning from
>the first discussions about a GCR format back in the
>late 1990'ties, I really seem to have difficulties to
>understand the recipient's understanding of the G64.txt
>doc.

It's hard to make yourself an objective observer when it was subjective.
Since I wasn't involved in G64's creation I can try to be objective. even
for me it's not always easy.

>> This maximum track size value is causing me some grief as I'm trying to
>> understand why it is necessary. I can see it would be useful for a program
>> to know what the max size of _any_ track is when working in a G64. I can
>> see that you would need to set aside enough space in the file so that you
>> can safely modify a G64 track and not worry about wrapping around over
>> other data if the track's too small.
>
>Indeed it is really useful for a certain software
>implementation of a G64 image reader. If someone wants
>to allocate a two dimensional _array_ of tracks instead
>of successively allocating a list of vectors of tracks,
>he would need that maximum size value to correctly
>declare dimensions (number of track stored in image and
>maximum track size).

Now who in their right mind would hold the image in memory? In reality,
all you need to do is read the real track size preceeding each track data
stream, dynamically allocate that + small overrun buffer and you should be
fine. Like a disk drive, you are only working on a single track at a time.
You allocate memory for only one track, only when you read it, and only
the size you need.

>This saves for a two-step parsing of all the descriptors
>of the file to find the max value. Maybe there was
>another reason once, but for me it's simply some useful
>redundancy.

Why do you need to know the maximum? You should only need to know what you
are working with at that specific track. That's the point I am trying to
make. If indeed the 7928 is only a "glass ceiling" then either not use it
or bump it up a bit more to be all inclusive.

Obviously the VICE authors thought it was a hard value as someone said
images with values other than 7928 won't work. This means either their
understanding was flawed or the write-up I provided wasn't clear enough
and, like Jim, they thought it was indeed the "max" value.

>> But could you not have simply told people to use the track size value
>> stored at the beginning of the track data stream?
>>
>> Also, since you know that V-MAX tracks can exceed this value, should or
>> could we not change the 1541 default up a bit, say 8100 bytes? Surely this
>> would encompass all possible track sizes?
>
>You don't want to mess up with the
>don't-waste-my-bytes-people, do you? Once there were
>big discussions, if the G64 format shoudl include
>compression, single compressed tracks, smart GCR
>specific encoding/compression techniques to save as
>much space as possible.

Silly argument especially when G64 is not prevalent enough to worry about
unused space. I couldn't care less about those that complain about wasted
space... bring em on! Compression would only make dealing with G64,
especially interactive read/write, very difficult.

Since you brought it up, I find the max value defined _creates_ much
wasted space as most disks never reach that maximum so you end up with a
lot of extra padding bytes for each track, especially the higher tracks.
Why not deal with that loss?

>Peter, I don't know, if this sections is new, you
>mention some tables with track sizes and MNib track
>sizes. The is one column named "Tail GAP".

No, it's been there since the earliest writeups.

>What do even and odd sectors mean here?
>I never seen a disk where _every_ inter-sector GAP
>is at 19 bytes, when every even inter-sector GAP is
>at only 9 bytes.
>In fact every inter-sector GAP is at 9 bytes, but
>for the last sector, which I call the track tail GAP.
>
>Maybe you want to have a deeper look into the MNib
>dump source to verify that.

Nope. This, if I remember correctly, is taken from two sources: Inside
Commodore DOS and using MNIB on my original factory disks several years
ago while decoding F64. I'm not going to setup the Commodore equipment
just to re-verify what I originally found and wrote up.

PS.

From: Peter Schepers on
In article <fneq92$lrb$1(a)vs5413.vserver4free.de>,
Wolfgang Moser <wn0612(a)d81.de.invalid> wrote:
>
>This saves for a two-step parsing of all the descriptors
>of the file to find the max value. Maybe there was
>another reason once, but for me it's simply some useful
>redundancy.

I forgot to address this. The header max track size is not a redundant
value. The header value of 7928 is fixed and not representative of the
real tracks stored in the image. The individual track sizes are virtually
always less than the max. Thus my argument against the very need of the
header value. It seems specious at best.

PS.