Welcome, Guest. Please login or register.

Author Topic: Os 3.1.4 - List of bug fixes and changes by component  (Read 84929 times)

Description:

0 Members and 1 Guest are viewing this topic.

guest11527

  • Guest
Re: Os 3.1.4 - List of bug fixes and changes by component
« Reply #14 on: October 13, 2018, 06:27:59 AM »
More new components. The FFS, fast file system. This is still the Amiga FFS, based on the same assembly code we had before, with a couple of bugs fixed here and there, and with a couple of new features. First, some bug fixes: The computation of the size of the bitmap contained an off-by-one error, which triggered in rare cases a run of the disk-validator every time the FFS was booted. There are now additional size checks for the size of the volume name.

Concerning file name sizes: The FFS supports now two new "flavours", namely DOS\06 and DOS\07, which support "long file names" using the same layout as in AOS 4. File names can now be 106 characters long. This means in worst case that the FFS needs to allocate an extra block for holding the comment as well, which required additional logic.

Another new feature is that the FFS speaks TD64, NSD and SCSI natively, there is no longer the need for NSDPatch as the FFS is in most cases capable to figure out the command set itself. Hence, if you run a hostadapter based on the omniscsi, or the oktagon, or phase5 boards, large partitions and large harddrives are no longer a problem. Just a small warning: If you make your partitions large, it is advisable to also enlarge the block size - I suggest 4K blocks for flash based media - as otherwise the bitmap grows too large and thus slows booting the system down as it first goes through a minimal validation step that requires to hold the entire bitmap in memory. Furthermore, 4K blocks also help wear-leveling of the flash disk as they organize their internal memory also in larger pages than the usual 512 byte size.

SCSI transfer need to be enabled manually, but the HDToolbox can do that for you. Or the mount option "DirectSCSI=1" if you mount manually.

Concerning mount options, there are two new: "EnableNSD" enables usage of the NSD command set, which is "on" by default, but can be turned off in case the firmware of the hostadapter has problems with it, and "Superfloppy", which allows automatic sizing on removable media. Say, if you have a ZIP drive that supports both 100MB and 250MB media, *do not* put an RDB on it, mount it with "Superfloppy=1" and the FFS will figure out the drive geometry itself, and will resize the drive geometry itself, same as it does when switching between HD and DD disks.

Last but not least, there is one "hidden" feature we do not support officially, and this is DOS\08. Nobody remembers how, but Os 3.9 already supported it, albeit incompletely. It is an FFS variant that supports long file names limited to 54 characters, but that is backwards compatible to the older flavours of the FFS such that you can easily upgrade from DOS\03 to DOS\08, gain additional length, but do not need to reformat. Unlike the Os 3.9 variant, this version works, however. We still do not support it officially as diskdoctor (another story for another article) does not support it, but it is otherwise in fine working condition.
 

Offline stx

  • Newbie
  • *
  • Join Date: Oct 2018
  • Posts: 7
  • Country: ca
    • Show only replies by stx
Re: Os 3.1.4 - List of bug fixes and changes by component
« Reply #15 on: October 15, 2018, 12:41:54 PM »
Now for my contributions: This is not really that much. One thing is that you can drag windows out of the screen. This is actually less than it may look because it is primarily a job layers has to do, and layers was already modified quite a while ago to support this service. Intuition was only modified to make use of this service, and its "window movement" functions where adjusted for testing the window bounds differently if the feature is enabled. This is by default on the workbench, but not on custom screens, but every constom screen can request it by a flag or a tag.

What is the best way to detect if this feature is enabled or not? Using the library version or checking this flag?

Is there any documentation or updated include files on this?

Steve

 

guest11527

  • Guest
Re: Os 3.1.4 - List of bug fixes and changes by component
« Reply #16 on: October 15, 2018, 02:05:58 PM »
What is the best way to detect if this feature is enabled or not? Using the library version or checking this flag?
The flag is enabled by default for the workbench, and disabled for all custom or public screens. You can set it in OpenScreen() and friends. Yes, we need to publish an SDK on this. The flag is the same flag and the same name as in Os 4, so you can also check there right now.

Otherwise, there should be no need to check this after the screen has been opened. What do you need this information for?
 

Offline HammerD

Re: Os 3.1.4 - List of bug fixes and changes by component
« Reply #17 on: October 15, 2018, 02:22:04 PM »

For P96, it is known which parameters it expects where, so a "kludge" function in assembler just provides the missing data. "It is known" here means that there is a common subset of people that have access to P96 *and* the Os. For CGFx, this is not the case, so it remains completely unclear what exactly CGFx expects, which interfaces it needs and how we could provide them. We contacted Frank Mariak on the problem, and would be happy to provide intuition V45 to him to integrate CGfx into this release, and/or provide similar kludge functions or interfaces to make it work. Unfortunately, at this time not much happened yet, but we all hope that 3.1.4 will become successful enough to make it an attractive development target.

Hi Thomas, is it safe to say then at present CGFx is not compatible with OS 3.1.4 and should not be used until a fix is released?

Darren
AmigaOS 4.x Beta Tester - Classic Amiga enthusiast - http://www.hd-zone.com is my Amiga Blog, check it out!
 

Offline stx

  • Newbie
  • *
  • Join Date: Oct 2018
  • Posts: 7
  • Country: ca
    • Show only replies by stx
Re: Os 3.1.4 - List of bug fixes and changes by component
« Reply #18 on: October 15, 2018, 02:25:08 PM »
What is the best way to detect if this feature is enabled or not? Using the library version or checking this flag?
The flag is enabled by default for the workbench, and disabled for all custom or public screens. You can set it in OpenScreen() and friends. Yes, we need to publish an SDK on this. The flag is the same flag and the same name as in Os 4, so you can also check there right now.

Otherwise, there should be no need to check this after the screen has been opened. What do you need this information for?

I'm updating the DragIt tool (see on Aminet) after a pause of 25 years! Currently I use the library version in order to detect out of screen window. I was just wondering if there was a better way to detect this feature and act accordingly.

 

guest11527

  • Guest
Re: Os 3.1.4 - List of bug fixes and changes by component
« Reply #19 on: October 15, 2018, 04:47:06 PM »
Hi Thomas, is it safe to say then at present CGFx is not compatible with OS 3.1.4 and should not be used until a fix is released?
No. CGfx is compatible to 3.1.4, but not to intuition V45. Intuition V45 is a bonus feature you have to install separately. It is not in the official ROM.
 

guest11527

  • Guest
Re: Os 3.1.4 - List of bug fixes and changes by component
« Reply #20 on: October 15, 2018, 05:04:45 PM »
One of my favourite play grounds is of course the shell. Since I bumped the version number, there must be something new. The new feature is that pipes are built-in, you no longer need support from external commands. This sounds like a minor change, but the big advantage is that any such external command does not have to repeat parsing the rather obscure shell syntax. The shell does it all itself. In particular, this goes for all the strange rules on backticks, asterisks and quotes that are easy to get wrong.

The pipes require support from the Queue-Handler, which is included in 3.1.4 as a handler that need to go to L: and that has to be mounted on startup. Be aware that you need to use this particular pipe handler, and not any of the alternatives you find in Aminet. The Queue-Handler in 3.1.4 is completely new from scratch and in no relation to the CBM implementation or any of the versions on Aminet that all have their little problems. The most prominent problem is handling of "break", i.e. if you abort one of the ends of a pipe. Queue-Handlers typically forget to also terminate the other end of the pipe then, causing CPU hogs or other problems. So make sure you get the right handler.

The syntax is as it used to be: A "|" connects the output of the left program to the input of the right program, such that for example
Code: [Select]
list | more
pipes the output of list through the pager. Additionally, we have "||" as command, which concatenates the output of the programs to the left of the double-bar to the program on the right, creating a new common stream.

Last but not least, there is one new built-in command, and that is (. No, no typo, the name of the command is really an opening bracket. It takes ) as last argument and executes all commands within brackets in a sub-shell. This sounds curious, but has its use in combinations such as
Code: [Select]
(list || dir) | more
which concatenates the output of list and dir, and then sends it to the pager.

Pipes have other uses, of course. For example, the commands "sort" and "search" also operate in pipes, such that
Code: [Select]
list | sort
gives a sorted output of list. There is no new option required for list for doing it - the existing commands are sufficient. Similarly, "search" in a pipe looks for a particular string coming through the pipe, and if so, prints it.

A couple of features had to wait as they came in too late. In my private experimental version, there is also a variant of the execute command that can also read its input from the pipe, such that
Code: [Select]
list lformat="...." | execute
executes a command sequence constructed by "list" without requring a temporary file.

Also, TAB expansion had to wait. There is a little bit of experimental code around, here and there, and a design as well that works very different from the currently existing hacks. In particular, I dislike the idea that the console has to do the expansion, because it (again) has to parse the pesky shell syntax - and getting this parsing right is non-trivial. So the shell shall do it, and this is precisely the idea. One way or another, it does require modifications to the console and also the shell, and we run out of time.
 
The following users thanked this post: Tygre

Offline NinjaCyborg

Re: Os 3.1.4 - List of bug fixes and changes by component
« Reply #21 on: October 15, 2018, 05:35:56 PM »
Does SuperFloppy mode also work with FAT formatted USB sticks, ZIP drives, memory cards and so on (assuming one has a USB stack or whatever)?
 

guest11527

  • Guest
Re: Os 3.1.4 - List of bug fixes and changes by component
« Reply #22 on: October 15, 2018, 06:25:21 PM »
Does SuperFloppy mode also work with FAT formatted USB sticks, ZIP drives, memory cards and so on (assuming one has a USB stack or whatever)?
Yes, but in a sense CrossDOS never had this issue to begin with. FAT formatted media always carry a boot block around that supplies this information, or a partition table. For this, CrossDOS supports two "flavours". One is the DosType "MSD\0" which identifies "super floppies" where the boot block is used to determine the size of the medium. You can also enable this mode with "SuperFloppy=1". The other one is the "partition mode" where the DosType is set to "MSH\0" and the last character of the mount name determines the partition. If the last character is a "C" it is the first partition, "D" is the second partition and so on.

So while "SuperFloppy" is supported, tthere was never really a need to for CrossDos.
 

Offline nbache

Re: Os 3.1.4 - List of bug fixes and changes by component
« Reply #23 on: October 15, 2018, 08:32:38 PM »
@ThomasRichter:

Quote
A couple of features had to wait as they came in too late. In my private experimental version, there is also a variant of the execute command that can also read its input from the pipe, such that
Code: [Select]
list lformat="...." | executeexecutes a command sequence constructed by "list" without requring a temporary file.
Neat!

In OS4, I can do the same with
Code: [Select]
list lformat="..." | execute IN: - can the 3,1,4 (non-experimental) one also do that?

(I don't run any 3.x systems any more, so I'm just asking out of academic interest).

Best regards,

Niels
 

Offline NinjaCyborg

Re: Os 3.1.4 - List of bug fixes and changes by component
« Reply #24 on: October 15, 2018, 10:13:50 PM »
I'n a bit rusty on my shell power usage but I recall IN: and OUT: being options I used to use in OS2 and 3, not sure if they were part of WShell or provided by the Andy Finkel Pipe implementation, or one of the other shell alternatives.
 

guest11527

  • Guest
Re: Os 3.1.4 - List of bug fixes and changes by component
« Reply #25 on: October 15, 2018, 10:37:02 PM »
In OS4, I can do the same with
Code: [Select]
list lformat="..." | execute IN: - can the 3,1,4 (non-experimental) one also do that?
There is no "IN:", but there is no need doing that in first place, at least for this version of execute. It reads more naturally without that. "Type" would be another command where piping would help but which I have not really looked into. It is a straight foreward modification.

To make "IN:" and "OUT:" work, you would only need to write a handler for it or have the queue-handler handle it. This is not rocket science either, but I rather believe that a better approach is to modify commands such that they support piping in a more natural way in first place as "sort" and "search" already do nowadays.
 

Offline kolla

Re: Os 3.1.4 - List of bug fixes and changes by component
« Reply #26 on: October 16, 2018, 10:22:22 AM »
Intuition was only modified to make use of this service, and its "window movement" functions where adjusted for testing the window bounds differently if the feature is enabled. This is by default on the workbench

So how does one turn it off?

Without being able to resize windows to become larger than screen (for example stretch a console wider to make sure C:Ed isn't hiding linefeeds), I see zero use in moving windows off-screen.
I have yet to see any description of how one can possibly move&resize a window in a way so that control gadgets become unavailable, and I find it rather frustrating to be limited by some made up use-case that only affects Windows users (as windows is the only earlier system I have ever heard of, or used, that suffers from this limitation.)
B5D6A1D019D5D45BCC56F4782AC220D8B3E2A6CC
---
A3000/060CSPPC+CVPPC/128MB + 256MB BigRAM/Deneb USB
A4000/CS060/Mediator4000Di/Voodoo5/128MB
A1200/Blz1260/IndyAGA/192MB
A1200/Blz1260/64MB
A1200/Blz1230III/32MB
A1200/ACA1221
A600/V600v2/Subway USB
A600/Apollo630/32MB
A600/A6095
CD32/SX32/32MB/Plipbox
CD32/TF328
A500/V500v2
A500/MTec520
CDTV
MiSTer, MiST, FleaFPGAs and original Minimig
Peg1, SAM440 and Mac minis with MorphOS
 

Offline NinjaCyborg

Re: Os 3.1.4 - List of bug fixes and changes by component
« Reply #27 on: October 16, 2018, 10:28:28 AM »
If you can't move the mouse off the screen, then there's no way you can ever move a window's title bar gadget completely off the screen, so it's not an issue, unless using that chap's app where he lets you drag from anywhere in the window then it could be. On Windows you have windows that can be dragged and resized in many different ways like keyboard shortcuts and resizable borders.
 

Offline kolla

Re: Os 3.1.4 - List of bug fixes and changes by component
« Reply #28 on: October 16, 2018, 10:34:43 AM »
Code: [Select]
list lformat="...." | execute
executes a command sequence constructed by "list" without requring a temporary file.

So these are (will/would be) equivalent then?
Code: [Select]
type s:user-startup | execute
and
Code: [Select]
execute s:user-startup

I find it a little non-intuitive though, I would have expected this to work
Code: [Select]
list s:myscripts/#?.script lformat "%p%n" | execute

but from what I gather, it must be like this...
Code: [Select]
list s:myscripts/#?.script lformat "execute %p%n" | execute
B5D6A1D019D5D45BCC56F4782AC220D8B3E2A6CC
---
A3000/060CSPPC+CVPPC/128MB + 256MB BigRAM/Deneb USB
A4000/CS060/Mediator4000Di/Voodoo5/128MB
A1200/Blz1260/IndyAGA/192MB
A1200/Blz1260/64MB
A1200/Blz1230III/32MB
A1200/ACA1221
A600/V600v2/Subway USB
A600/Apollo630/32MB
A600/A6095
CD32/SX32/32MB/Plipbox
CD32/TF328
A500/V500v2
A500/MTec520
CDTV
MiSTer, MiST, FleaFPGAs and original Minimig
Peg1, SAM440 and Mac minis with MorphOS
 

Offline NinjaCyborg

Re: Os 3.1.4 - List of bug fixes and changes by component
« Reply #29 from previous page: October 16, 2018, 10:35:47 AM »
if the +s bit is set on those scripts then the execute is implicit, no?