Re: [Freedos-user] Re : Support for 4k byte sectors

2012-01-18 Thread Bret Johnson
 I am saying that for gaining speed on modern disks, in particular
 flash disk ands large sector disks, you should already make a big
 difference with a small pooling cache and a short delay,

That's true -- but I don't think either LBACACHE or UIDE actually do that.  I 
could be wrong, but I think they are very simple write-through caches that 
don't delay or try to pool/combine any of the writes at all.  If they did, and 
also added support for non-INT 13h disks, it could indeed make a HUGE 
difference.

 which is both simpler and less risky than large, long delay caches
 where a lot of hooks try to find out when a good moment to write
 is and a last safe moment to write, e.g. before reboot, before
 crash? or  before you return to the prompt, as many users assume it
 is safe to switch off a DOS PC while it is idle at the prompt.

Less risky, at least if the system is unstable.  Actually only a little 
simpler, though, since any kind of delay at all, no matter how small, requires 
monitoring reboots and prompts.

In all cases, it should be OK to shut off the system at a prompt.  All caches, 
including SMARTDRV, must commit their write-delay caches before the DOS prompt 
returns.  I personally have an OFF.BAT file to shut down my computers instead 
of using the power switch, anyway, and it makes sure everything is flushed and 
committed.  Handling crashes is another story -- no way to handle those in any 
OS unless you use a journaling file system.


--
Keep Your Developer Skills Current with LearnDevNow!
The most comprehensive online learning library for Microsoft developers
is just $99.99! Visual Studio, SharePoint, SQL - plus HTML5, CSS3, MVC3,
Metro Style Apps, more. Free future releases when you subscribe now!
http://p.sf.net/sfu/learndevnow-d2d
___
Freedos-user mailing list
Freedos-user@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/freedos-user


Re: [Freedos-user] Re : Support for 4k byte sectors

2012-01-17 Thread Bret Johnson
 ...
 No cache will ever compete with a RAM disk.   RAM is always faster
 than disks with their seek/rotational latencies and their much
 slower transfer rates.

I knew this would provoke a comment from you, Jack.

The purpose of a cache is to put as much data in RAM as it can, so that the 
disk is accessed as little as possible.  It's true that the cached data does 
eventually get written to disk, and that part is slow.  From a speed 
perspective, though, a well-designed cache can be competitive with a RAM disk.

The advantage of a write-delay cache is that that the writing can be done when 
the system is idle (a simple form of multi-tasking).  The end result is that 
even though disk writes actually take the same amount of time they always did, 
the SYSTEM actually runs much faster.  In my experience and opinion (and it is 
only an opinion), write-through caches don't provide enough speed benefit to be 
very helpful, and I don't use them.

 ...
 There is a REASON why Write Back caches are all so large -- they
 demand MANY hooks of a non-generic type into a DOS system, to
 handle Ctrl/Alt/DEL and other events that require a flush of
 sectors not-yet written to disk.

Yes, write-delay caches are MUCH more complicated than write-through caches.  
But, they also provide MUCH more practical benefit, IMO.  Even with that being 
said, I don't use SMARTDRV all the time.  I only use it in certain situations 
when it provides noticeable benefit, and in those particular situations a 
write-through cache doesn't help.

Also, FWIW, you can disable write-delay caching in SMARTDRV if you want, in 
which case it works sort of like UIDE or LBACACHE (except that it will also 
_natively_ work with non-INT 13h disks like USB and SCSI), but at the expense 
of requiring more memory.


--
Keep Your Developer Skills Current with LearnDevNow!
The most comprehensive online learning library for Microsoft developers
is just $99.99! Visual Studio, SharePoint, SQL - plus HTML5, CSS3, MVC3,
Metro Style Apps, more. Free future releases when you subscribe now!
http://p.sf.net/sfu/learndevnow-d2d
___
Freedos-user mailing list
Freedos-user@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/freedos-user


Re: [Freedos-user] Re : Support for 4k byte sectors

2012-01-16 Thread Bret Johnson
 yes you would see a problematic mismatch if you were to talk raw
 SCSI or CHS to a disk while being inconsistent about whether you use
 512 byte or rather 4096 bytes per sector...

That's precisely the problem.  Depending on which DOS programs you use, some 
simply call DOS, some may use INT 25h/26h, some may use INT 13h, others may use 
raw SCSI/ASPI, and there are also other possibilities.  If you could force all 
calls through the DOS device driver, you could eliminate any potential problems 
with DOS.  But DOS doesn't force programs to do that, and there are certain 
kinds of programs (FDISK, FORMAT, SYS, CHKDSK, SCANDISK, ...) that require 
low-level access and can't go through the DOS Device Driver.  And that doesn't 
even address the potential issues of using that same device on another OS or 
BIOS.

The potential compatibility problems are just too great for me to even want to 
attempt this.  FYI, my driver provides an INT 13h interface (and I think it's 
the only one that does).  That allows you to use standard DOS utilities to 
partition and format and create bootable disks, without needing to resort (at 
least in some cases) to the special Windows and Linux utilities.

 However, when DOS mounts a partition with help of a loadable block
 device driver, nothing would access the raw view of the disk. In any
 case the kernel will not, it will only talk to the block device
 driver. Anything beyond that is of course evil, but so is
 dosfsck-ing a partition in Linux while it is mounted at the same
 time.

It actually isn't evil in DOS to do low-level maintenance on a mounted 
partition.  You just need to make sure you flush any buffers and caches, and 
re-mount if anything that DOS may care about (sector size, number of sectors, 
cluster size, ...) is changed.  In the case of removable media (like USB and 
floppies), that shouldn't even require a reboot.

 Can you recommend any free int 13 or block device based delayed / 
 pooled write caching software? As far as I can remember, all
 modern (LBA compatible, given disk sizes on current PCs)
 implementations of this are commercial.

I don't know of any, but there's definitely a need for one.  I normally don't 
use caches at all, but when I need one it needs to be a write-delay cache and I 
use MS SMARTDRV.  I actually don't like SMARTDRV very much (it uses too much 
memory and requires a reboot to uninstall), but I have it and it works OK.

I don't find write-through caches like LBACACHE and UIDE to provide enough 
speed benefit to be very helpful (though they might increase disk life to some 
degree).  In addition, LBACACHE and UIDE are INT 13h caches instead of INT 21h 
caches (like SMARTDRV is), so they don't work with all disks (including USB and 
SCSI).  When I really need to increase disk access speed (a big problem in some 
VM's), I copy my commonly-used utilities and batch files to a RAM disk.

 Thanks, but can you benchmark it? ;-)

I've already done a simple benchmark, though I don't think it's exactly what 
you're looking for.  It's discussed on pages 158 and 159 of USBINTRO.DOC (in 
the Sector Transfer Size discussion of the USBDRIVE section).  Basically, the 
speed increases when you pool large numbers of contiguous sectors and send 
them at the same time.  A true, valid benchmark would require all sorts of 
external parameter variability elimination, which I probably won't ever do.

 Only if you can look beyond the virtualization in a bad way... For
 example the same issue existed with ontrack ezdrive drivers
 installed in the master boot record:
 ...

There are lots of examples of this in the past.  I also remember when there 
were some programs that used incorrect formulas in the CHS - LBA translations 
that created all sorts of compatibility problems.  That's why I think it's 
dangerous to do anything unique that no other OS or BIOS does.


--
Keep Your Developer Skills Current with LearnDevNow!
The most comprehensive online learning library for Microsoft developers
is just $99.99! Visual Studio, SharePoint, SQL - plus HTML5, CSS3, MVC3,
Metro Style Apps, more. Free future releases when you subscribe now!
http://p.sf.net/sfu/learndevnow-d2d
___
Freedos-user mailing list
Freedos-user@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/freedos-user


Re: [Freedos-user] Re : Support for 4k byte sectors

2012-01-15 Thread Bret Johnson
FWIW:

In my USB disk driver (USBDRIVE), here's what I've done.

USBDRIVE does not try to virtualize the sector sizes as others are suggesting 
here as a possibility -- I figure doing that has the potential to cause as many 
problems as the alternative (using defective utilities/programs that are 
hard-coded for 512-byte sectors).

USBDRIVE will only assign drive letters to disks/partitions that it believes 
DOS can handle properly.  E.g., USBDRIVE will ignore partitions that aren't 
formatted properly (NTFS, HPFS, FAT32 in certain cases, etc.).

Likewise, it will ignore disks with sector sizes larger than what DOS says it 
can handle (this particular detail is part of the easily accessible DOS List 
of Lists).  In the source code for USBDRIVE (starting at line 289 in the 
latest official release of USBDRIVE.A36), I have a comment that shows you how 
you can modify MS-DOS and IBM-DOS to handle sector sizes larger than 512 bytes. 
 It involves using DEBUG (or something similar) to modify the DOS kernel 
(MSDOS.SYS or IBMDOS.COM).  I don't know if the same method will work with 
FreeDOS or not.  With the modification, DOS itself can supposedly handle sector 
sizes up to 8192 bytes, which means you can read/write to the disk using 
standard DOS internal calls.  Programs and utilities that do not let DOS do 
the work for them may have problems.

Booting from such a device is another level of complexity, and I'm not sure 
which versions of DOS (if any) can boot from a disk with sector sizes larger 
than 512 bytes.


--
RSA(R) Conference 2012
Mar 27 - Feb 2
Save $400 by Jan. 27
Register now!
http://p.sf.net/sfu/rsa-sfdev2dev2
___
Freedos-user mailing list
Freedos-user@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/freedos-user


Re: [Freedos-user] Re : Support for 4k byte sectors

2012-01-15 Thread Bret Johnson
 USBDRIVE does not try to virtualize the sector sizes as others are
 suggesting here as a possibility -- I figure doing that has the
 potential to cause as many problems as the alternative...

 Maybe you could make that configurable, so people can experiment
 with virtual 512 byte sectors at their own risk? Might be useful
 for people who want to make their disk oriented tools 4k-wrapped-
 to-512-sane :-)

Possible, but a REALLY BAD IDEA if you ask me.  The most obvious problem is 
that the disk will instantly become non-portable, and can't be used with other 
OS's or even other DOS drivers that don't virtualize the sectors.

Internally, there are lots of technical issues with things like DMA and 
buffering that will probably cause at least as many, if not more, problems than 
trying to use hard-coded-512-byte programs with disks that aren't 512-bytes.  
There is also a significant speed and memory usage problem -- all disk 
transfers will need to be double-buffered (the driver will need to internally 
store the entire large sector and then transfer only the part that was 
requested).  Again, possible, but NOT a good idea, IMHO.

 Can you send the URL of that MS DOS patching instruction?

Go to my web site:

http://bretjohnson.us

and download the source code for the USB drivers (USBSOURC.ZIP -- the link is 
near the bottom of the first section).  Inside the zip file is USBDRIVE.A36, 
and the comment that shows how to do it is around line 300.

 I am wondering how much it could tell us about how to patch FreeDOS
 but of course FreeDOS already is known to have a bit more hard
 coded 512 byte ish ness. On the other hand, FreeDOS sources
 are easily available and easy to read... :-)

From what I understand, in MS-DOS and IBM-DOS, the maximum sector size is 
stored in only one place (part of the List of Lists).  This value is 
adjusted while booting to match the largest sector size of any disk that the 
kernel finds and assigns drive letters to.  In the kernel code, it always uses 
the value stored there in its various calculations, and never uses any 
hard-coded values.  That's the way FreeDOS _should_ be as well, though I don't 
know if it actually is.

 Interesting. Any known side effects?

Not that I know of.  I've been using a 2048-byte sector size in MS-DOS for a 
long time now (since USBDRIVE came out), and haven't had any problems.  I 
should point out that I don't actually have any disks with other than 512-byte 
sectors, so my testing is not very complete.  But this trick has been around 
for a LONG time, and I've never seen any mentions of problems.

 Of course it will not help tools like FORMAT or CHKDSK unless they
 already are sector-size flexible.

In my opinion, there's no legitimate reason for programs like FORMAT and CHKDSK 
to disallow non-512-byte sectors.  Other sector sizes have been around since 
before MS-DOS was created, and MS has always stated that programs should never 
assume 512 bytes.  I can't say this for sure, but I don't think any MS 
utilities ever had problems with other sector sizes.


--
RSA(R) Conference 2012
Mar 27 - Feb 2
Save $400 by Jan. 27
Register now!
http://p.sf.net/sfu/rsa-sfdev2dev2
___
Freedos-user mailing list
Freedos-user@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/freedos-user


Re: [Freedos-user] Re : Support for 4k byte sectors

2012-01-15 Thread Bret Johnson
 maybe virtual 512 byte sectors are actually not that evil:
 Imagine a NORMAL 4096 byte sector based FAT32 filesystem.
 ...

Actually they are, or at least potentially are, at least from a compatibility 
perspective.  In the case of USB, the SCSI protocol is normally used.  The 
sector size is not simply stored on the disk (in the BPB's).  It is also stored 
outside the disk in the SCSI overhead that is part of the initialization 
process, and those can't be virtualized (there's more than one of them).  The 
sector size that the SCSI overhead tells you and what's stored on the disk 
itself need to be exactly the same, or you'll likely to run into problems 
somewhere that will either prevent a disk from being recognized, or contaminate 
the data.

 BPB CHS geometry differs - but does a disk with 4096 byte
 sectors allow CHS based access at all? I hope it does not.

Already answered by Bertho -- of course it does.  CHS addressing and 512-byte 
sectors aren't synonymous.

 ...
 Other operating systems would gain performance by pooling writes to
 MULTIPLE sectors which makes a very noticeable difference on flash
 based disks such as SSD or USB flash sticks.

Some DOS programs already do that, though usually only the ones that use 
low-level INT 13h access.  I don't think DOS itself ever does.

 ...
 This is why I suggest to first grow such a file to the final size,
 putting all FAT writes into ONE access and then writing the file's
 contents in large N kB chunks.

Excellent idea, especially with USB.

 Then I expect the side effect to be that the kernel inflates all
 sector-sized areas to 4096 bytes, to be prepared to handle 4096 byte
 sized sectors in SOME disks. For all old disks with classic 512 byte
 sectors, this means a lot of wasted space in RAM for each such
 buffer in memory. Unless I misunderstood the details, MS DOS would
 not adjust sizes on a per-buffer basis.

That is correct -- the buffers are all the same size, big enough for the 
largest sector of any disk.  It does indeed waste memory, especially if you set 
BUFFERS to a large number.  If somebody was ambitious enough, they might be 
able to implement dynamic buffer sizes, I suppose (I don't know what the 
required data structures for DOS Buffers, if there are any, are supposed to 
look like).

...
 You mean you know any sort of USB storage device which has native
 2048 byte sectors? I thought that for flash and large disk formats,
 only 4096 was popular and 512?

No, I personally don't have anything except 512-byte sectors.  I just did 2048 
as an experiment to see if there were problems, while still keeping the size 
small enough that I didn't waste too much memory.

 So you actually do the virtual trick the other way around?  As
 mentioned above, that only works when all relevant structures on the
 actually-512-byte-per-sec disk are aligned to and sized in 2 kB
 boundaries, not counting the global offset of the partition, though.

Unless I'm misunderstanding what you're saying, it's not the other way 
around.  If a buffer is 2048 and the sectors are only 512, the last 1536 bytes 
of the buffer are simply never used.  There aren't any cluster alignment issues.

 ...
 if we can mount a 4096 byte per sector disk in DOS, no matter what
 tool and operating system formatted / fdisked it then we can already
 enjoy using those disks :-)

Yes.  But for reasons already discussed, this should not be done by 
virtualizing the sector size -- that is asking for problems, IMHO.

 ...
 By the way, is the 55aa boot sector thing and similar flags for
 fsinfo and 2nd stage boot sectors on FAT32 always at the end of the
 sector or rather just at the end of the first 512 bytes of the
 sector?

Also already answered by Bertho.  It's always at offset 510 in the sector, not 
necessarily the end of the sector (the MBR and VBR's still need to fit in 512 
bytes even if the sector is larger).  If the sector size is larger than 512, 
you can use the rest of the sector to store other things if you want, though.


--
RSA(R) Conference 2012
Mar 27 - Feb 2
Save $400 by Jan. 27
Register now!
http://p.sf.net/sfu/rsa-sfdev2dev2
___
Freedos-user mailing list
Freedos-user@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/freedos-user


Re: [Freedos-user] VMSMOUNT 0.5: Now with (partial) long file names su pport

2011-11-07 Thread Bret Johnson
 This is unavoidable. When you intercept system interrupts, you only
 can safely uninstall when the nobody else has trapped the same
 interrupt or, in other words, you can only uninstall when the
 interrupt vector is pointing to the TSR you are trying to uninstall.

This is an opportunity to jump on my AMIS soap box again, so I will.  This 
actually IS avoidable when the involved programs (in this case, SHSUCDX, 
VMSMOUNT, and any other programs that may be installed after those) implement 
AMIS.  IMO, all modern TSR's and device drivers should implement AMIS.


--
RSA(R) Conference 2012
Save $700 by Nov 18
Register now
http://p.sf.net/sfu/rsa-sfdev2dev1
___
Freedos-user mailing list
Freedos-user@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/freedos-user


Re: [Freedos-user] VMSMOUNT 0.5: Now with (partial) long file names su pport

2011-11-07 Thread Bret Johnson
 I'm aware of AMIS. I could implement it in vmsmount. Then you'll only
 have to convince the maintainers of shsucdx, doslfn and some more or
 less popular proprietary tsrs like ntfs4dos... :)

 Please, don't get me wrong. I think AMIS is a great idea, maybe just
 a bit too late, and I'm open to consider it for a future release if
 it is worth the effort.

I know that not all programs, even new ones, will implement it, even if they 
should.  However, I don't think the fact that many/most others don't do it is 
a valid reason for me not to do it.  It's a VERY good idea, and ultimately 
helps the user.  As far as I'm concerned, it is almost always worth the effort 
when it helps the user.

I'm going to implement AMIS it on all of my new/updated programs, whether 
anybody else decides to follow suit or not.  Also, FWIW, all of my new/updated 
programs will support DPMS and EMS (and possibly later other environments 
like JLM) to reduce conventional/upper memory requirements, at least where it 
makes sense (it doesn't necessarily make sense on VERY small TSR's that use 
only a couple kB of RAM).


--
RSA(R) Conference 2012
Save $700 by Nov 18
Register now
http://p.sf.net/sfu/rsa-sfdev2dev1
___
Freedos-user mailing list
Freedos-user@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/freedos-user


Re: [Freedos-user] FreeDos4Kids (and Kids-at-heart)

2011-11-03 Thread Bret Johnson
 On the topic of wear leveling I would go with the DOM products, as
 they are designed as hard drive replacements.  It's pretty easy to
 burn up FLASH so wear leveling is important.

FWIW, they claim that FLASH has unlimited read capability, but is limited in 
the number of writes.  So, at least theoretically, wear-leveling should only 
come into play when writing to disk.  To extend the life of the system, you 
should try to do as much as you can in RAM (like using RAM disks for temporary 
files, etc.) and minimize writes as much as possible.  This is true for 
regular hard drives as well.


--
RSA(R) Conference 2012
Save $700 by Nov 18
Register now
http://p.sf.net/sfu/rsa-sfdev2dev1
___
Freedos-user mailing list
Freedos-user@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/freedos-user


Re: [Freedos-user] sys.com not executable on Windows 7 64bit

2011-10-13 Thread Bret Johnson
 I'm retired and I fool around with lots of hardware, some of which
 is nothing more then a motherboard, a keyboard and a lcd. Virtually
 all motherboards come with a USB. Also when I have to deal with a
 broken disk Spinrite is great but not if you can't boot it. Some
 claim it will run great from a fob, but I have not been able to
 figure out a way to boot it on a fob. Gone are the happy days when I
 could key a bootloader into the console of a PDP-11, actually to
 read a paper tape in and boot something else :))

 Spinrite has an option to create a bootable floppy but it won't work
 on a device it thinks is not removable and for whatever reason it
 thinks all fobs are not removable, haven't looked into that. I
 figure if I can boot freedos I should be able to turn around and run
 Spinrite from that.

Using my USB drivers, it is possible to make a bootable USB disk or manipulate 
partitions just using standard DOS tools (FORMAT, FDISK, SYS, etc.).  You don't 
necessarily need Windows or *nix to do that.  The drivers still have a long 
ways to go before they're really good, but can be useful even in their 
current limited state.


--
All the data continuously generated in your IT infrastructure contains a
definitive record of customers, application performance, security
threats, fraudulent activity and more. Splunk takes this data and makes
sense of it. Business sense. IT sense. Common sense.
http://p.sf.net/sfu/splunk-d2d-oct
___
Freedos-user mailing list
Freedos-user@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/freedos-user


Re: [Freedos-user] sys.com not executable on Windows 7 64bit

2011-10-13 Thread Bret Johnson
The USB drivers make a flash drive look like a removable hard drive, not a 
floppy drive (though the drivers will also work with a USB floppy drive).  You 
can't start with a floppy image.

If the BIOS will correctly boot from an external USB hard drive or flash drive, 
you can simply use the standard DOS tools and the disk should be directly 
bootable.  You don't need to use a multi-stage process that involves booting 
another program, creating a RAMDISK and copying a floppy image, and booting 
from it (which is the way a lot of *nix-based software works).  You can copy 
and delete and move files all you want to directly on the disk, without needing 
to manipulate an image.

The problem you'll run into is that not all BIOS's work like they're supposed 
to, and won't boot correctly.  Some will and some won't.

Also, even if a flash drive comes formatted as a super-floppy (no MBR), you 
can re-partition it (with FDISK or Ranish Partition Manager or some other DOS 
utility) so that it does have an MBR if that's what you want.  The drivers 
should work correctly whether it has an MBR or not. 


--
All the data continuously generated in your IT infrastructure contains a
definitive record of customers, application performance, security
threats, fraudulent activity and more. Splunk takes this data and makes
sense of it. Business sense. IT sense. Common sense.
http://p.sf.net/sfu/splunk-d2d-oct
___
Freedos-user mailing list
Freedos-user@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/freedos-user


Re: [Freedos-user] batch programming language

2011-09-21 Thread Bret Johnson
With some limited exceptions (like 4DOS), the expansion of batch 
functionality has generally been provided by external utilities, rather than 
being integrated into the kernel.  E.g., once in awhile I use the old PC 
Magazine utility called STRINGS, and I know there are other similar utilities 
available as well.  There's also REXX, which already comes with FreeDOS.

It's debatable to me whether this should be an integrated function or not, 
since it will require more memory.


--
All the data continuously generated in your IT infrastructure contains a
definitive record of customers, application performance, security
threats, fraudulent activity and more. Splunk takes this data and makes
sense of it. Business sense. IT sense. Common sense.
http://p.sf.net/sfu/splunk-d2dcopy1
___
Freedos-user mailing list
Freedos-user@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/freedos-user


Re: [Freedos-user] New release of DOSUTILS package

2011-08-09 Thread Bret Johnson
 Yes, do! I'd be curious to see it. 

I realize this is many weeks late, but I finally have the new version of PRTSCR 
ready to go.  The documentation was in far worse shape than I remembered, so 
that's what took most of my time.  It's available from my web site:

  http://bretjohnson.us


--
uberSVN's rich system and user administration capabilities and model 
configuration take the hassle out of deploying and managing Subversion and 
the tools developers use with it. Learn more about uberSVN and get a free 
download at:  http://p.sf.net/sfu/wandisco-dev2dev
___
Freedos-user mailing list
Freedos-user@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/freedos-user


Re: [Freedos-user] Can't Install; FreeDOS 1.1 test release #2

2011-07-20 Thread Bret Johnson
 They works when I DEVLOAD them post boot-up, but the USB flash drive
 steals the DVD-RW drive's letter (E:\ in my case). USBUHCI, and
 USBDRIVE don't work at all for me. It not only wont load my USB
 drives, it doesn't even find them. Strangely enough if I load them
 before USBASPI/NJ32DISK, my flash drive is assigned M:\ instead.

Send me an e-mail (bretjohn at juno.com) and we can try to get your USB disks 
to work.  I don't think this Forum isn't the correct place to do it, though.  
It may be pretty simple to fix.  I'm guessing that you are simply running 
USBUHCIL with no options, which will only install the driver for the first 
USB host controller, and you may not be plugging your disks into the first one. 
 The M:\ thing also makes sense if you are installing USBDRIVE with no options, 
since USBDRIVE reserves drive letters that will be used when you do plug in 
some disks.


--
10 Tips for Better Web Security
Learn 10 ways to better secure your business today. Topics covered include:
Web security, SSL, hacker attacks  Denial of Service (DoS), private keys,
security Microsoft Exchange, secure Instant Messaging, and much more.
http://www.accelacomm.com/jaw/sfnl/114/51426210/
___
Freedos-user mailing list
Freedos-user@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/freedos-user


Re: [Freedos-user] Unicode (It was 'Problem with USB keyboard in some computers')

2011-07-10 Thread Bret Johnson
 Appart from turning DISPLAY into a DOS device driver and override
 kernel's CON, but not only IOCTL, but also write.

FWIW, you don't actually need to turn DISPLAY into a device driver in order to 
replace/enhance CON.  You can do that with a TSR also.  See my USBPRINT if you 
want an example of how -- it replaces the default LPT1-LPT3, adds LPT4-LPT9, 
and even passes calls through to the old LPTx in situations where that is 
needed.

IMHO, TSR's have a lot of advantages over device drivers, and can still be 
installed in CONFIG.SYS if you actually want/need to do that (with the INSTALL= 
option).


--
All of the data generated in your IT infrastructure is seriously valuable.
Why? It contains a definitive record of application performance, security 
threats, fraudulent activity, and more. Splunk takes this data and makes 
sense of it. IT sense. And common sense.
http://p.sf.net/sfu/splunk-d2d-c2
___
Freedos-user mailing list
Freedos-user@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/freedos-user


Re: [Freedos-user] Unicode (It was 'Problem with USB keyboard in some computers')

2011-07-10 Thread Bret Johnson
 Ok, sorry, that's what I meant. That you find the chain at the List
 of Lists, right?

Yes.  The first Device Driver header (NUL) is in the LoL.  From there, you can 
follow the chain (a linked list of pointers) as far as you want, and can 
insert/remove new headers wherever you want.


--
All of the data generated in your IT infrastructure is seriously valuable.
Why? It contains a definitive record of application performance, security 
threats, fraudulent activity, and more. Splunk takes this data and makes 
sense of it. IT sense. And common sense.
http://p.sf.net/sfu/splunk-d2d-c2
___
Freedos-user mailing list
Freedos-user@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/freedos-user


Re: [Freedos-user] Unicode (It was 'Problem with USB keyboard insome c omputers')

2011-07-10 Thread Bret Johnson
 Most programs could already be loaded earlier in CONFIG.SYS if they
 were adjusted in that way, though some of the DOS structures aren't
 available yet in that case.

That's one of the big advantages of TSR's, in my opinion.  While CONFIG.SYS is 
being processed, DOS is not yet all there.  As a result, there are certain 
advanced DOS support functions you can't (or at least shouldn't) try to use, 
because they may not actually exist yet.


--
All of the data generated in your IT infrastructure is seriously valuable.
Why? It contains a definitive record of application performance, security 
threats, fraudulent activity, and more. Splunk takes this data and makes 
sense of it. IT sense. And common sense.
http://p.sf.net/sfu/splunk-d2d-c2
___
Freedos-user mailing list
Freedos-user@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/freedos-user


Re: [Freedos-user] Problem with USB keyboard in some computers

2011-07-07 Thread Bret Johnson
 use the 8042 keyboard controller command 0xd2 to simulate scancode
 received.  that's documented (again in the IBM technical reference)

 this will simulate a scancode all the way through interrupt handler,
 int15.4f, ...

That is exactly what I call Method 1 does.  The problem is, function D2h 
doesn't exist in all keyboard controllers, even modern ones.  Nor is it always 
100% reliable -- I have at least one computer where it is flaky (sometimes 
works OK and sometimes doesn't).

On that particular computer, I have to use Method 3, since Method 2 doesn't 
work reliably, either.  And, on top of that, I must load MS KEYB because the 
regular BIOS itself is incompatible (again, flaky) with my Method 3.  I 
cannot use MKEYB (or FD-KEYB) on that computer even if I would want to, because 
they use INT 15.4F and do not actually replace the entire BIOS INT 9 handler 
like MS KEYB does.


--
All of the data generated in your IT infrastructure is seriously valuable.
Why? It contains a definitive record of application performance, security 
threats, fraudulent activity, and more. Splunk takes this data and makes 
sense of it. IT sense. And common sense.
http://p.sf.net/sfu/splunk-d2d-c2
___
Freedos-user mailing list
Freedos-user@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/freedos-user


Re: [Freedos-user] Problem with USB keyboard in some computers

2011-07-07 Thread Bret Johnson
 Returning ignore this scancode or returning the scancode
 untranslated would not crash anything, at most drop a key.

That's true, as long as the INT 15.4F code could do that re-entrantly (i.e., 
not crash when it received the re-entrant request).  INT 15.4F handlers are 
usually pretty simple, so they most (if not all) may be able to do this anyway 
without any special code.  In general, however, TSR and device driver writers 
must at least be cognizant of re-entrancy issues and how to handle them, since 
it is nearly impossible to guarantee that re-entrancies can NEVER happen.  Many 
programs (especially simple programs) are lucky in that they are re-entrant 
without the programmer ever even thinking about it.

 As far as I remember, power keys could be handled by the BIOS int 9

Could be, but usually aren't.  Power keys are normally ignored by the BIOS, and 
don't do anything at all (at least on any of my computers).

 pause

Normal processing of Pause does indeed use part of the BDA, but also involves 
pretty severe manipulation of the hardware.  Pause processing involves issuing 
EOI to the PIC and resetting the keyboard controller, but not actually exiting 
the INT 09 code.  Essentially, you are trapped inside a semi-permanent INT 09 
code loop, but interrupts are enabled and processed.  However, because you 
have never actually exited the INT 09 handler (issued the appropriate IRET), 
foreground operations are never resumed.

The INT 09 handler must then wait for at least two more IRQ's to occur (a key 
press and a key release) before exiting the semi-permanent loop (BTW, all of 
this requires re-entrancy in the INT 09 handler).  Appropriate handling of the 
Pause key from INT 15.4F would be problematic, though it might be possible.

All of that, of course, assumes the the Pause key is not redirected in some 
fashion (e.g., my SCANCODE program will let you turn the Pause key, or any 
other key, into a type of macro key, if you want).

 windows / multimedia keys could just be stored in 40:xx as normal
 ASCII 0, scancode X function keys.

Could be, but there actually is no universally accepted standard for which 
scancodes go with which multimedia keys -- different manufacturers do it 
differently.  Microsoft supposedly has a standard way they do it on their 
keyboards, though.  So, merely throwing them into the keyboard buffer (which 
you could also do with the power keys, BTW) probably won't do anything useful, 
and could actually cause problems.

With my virtual keyboard programs, I leave try to leave this totally flexible, 
even though I know that almost no DOS programs (at least today) use any of the 
special keys.  My programs will still type them, and let the INT 09 handler 
decide whether or not they are useful.  I fully expect the standard 
definition of what keys are considered useful in DOS to change (increase) as 
time goes by.  As mentioned earlier, my SCANCODE program can already take 
literally any keystroke, including the multimedia ones, and turn it into a type 
of macro key.

 Of course writing to 40:xx (after asking 15.4f) would be cleaner
 and easier, but as noted, MS KEYB does not follow standards here.

Actually, most everybody is following the standards, including MS KEYB (I 
didn't think the INT 15.4F programs were following the standards, but they 
actually are).  MS KEYB is not in defiance of the standards any more than any 
program that provides its own INT 09 handler is.  MS KEYB merely replaces the 
BIOS-level INT 09 handler (which, e.g., doesn't understand anything about 
alternative code pages or keyboard languages, or could have compatibility 
problems) with an OS-level INT 09 handler.

The problem is, the standards are sometimes merely precedents instead of 
standards, are not always coherent or complete and can be interpreted 
ambiguously, and as a result sometimes unintentionally conflict with each 
other.  I personally think that the invention of INT 15.4F was a mistake, 
though I'm sure IBM thought it was a really good idea, at least at the time.


--
All of the data generated in your IT infrastructure is seriously valuable.
Why? It contains a definitive record of application performance, security 
threats, fraudulent activity, and more. Splunk takes this data and makes 
sense of it. IT sense. And common sense.
http://p.sf.net/sfu/splunk-d2d-c2
___
Freedos-user mailing list
Freedos-user@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/freedos-user


Re: [Freedos-user] Problem with USB keyboard in some computers

2011-07-07 Thread Bret Johnson
 I believe you that you tried almost everything; I still think that
 0x shouldn't hurt, and CLI is even a bug

Tried both of those -- didn't help.  Came to a reasonable value of 200, which 
was far more long enough to work on any computer I had for testing, but did not 
take too long (and slow everything down to a crawl) when it failed.  I don't 
think CLI is a bug, since I don't want an INT 08 interrupting me during this 
process (though I have tried that, too).

 btw: while USB keyboards are nice, USB disks are even more popular.
 and then 'full speed' hurts big time (OHCI/UHCI disks are almost
 useless). whats happening with EHCI/XHCI ?

In the pipeline.  Just takes a long time with all of the distractions and 
minimal time I can spend on it.  I don't know about almost useless, but they 
are definitely less than optimal.  Even at the minimum speeds, they are still 
faster and more reliable than floppies.


--
All of the data generated in your IT infrastructure is seriously valuable.
Why? It contains a definitive record of application performance, security 
threats, fraudulent activity, and more. Splunk takes this data and makes 
sense of it. IT sense. And common sense.
http://p.sf.net/sfu/splunk-d2d-c2
___
Freedos-user mailing list
Freedos-user@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/freedos-user


Re: [Freedos-user] Problem with USB keyboard in some computers

2011-07-06 Thread Bret Johnson
We (well, at least I) have a severe dilemma going on here.

 int 15.4f is supposed to be called from the BIOS from the INT 09
 handler, and NOBODY else.

I've done some more research regarding this, and it is never stated anywhere 
that this function can ONLY be called from the INT 09 handler.  That is merely 
an assumption on your part.  As a general rule, BIOS functions are allowed to 
be called by any program (including IRQ handlers) at any time, and as a result 
must be re-entrant.

Obviously, MS believes that INT 15.4F can be called from outside INT 09, based 
on what they've published on their web site.  If INT 15.4F is not re-entrant, 
and the user happens to press (or release) a key on the keyboard while the MS 
code is in process, the computer may hang, or do something far worse, instead 
of rebooting.  You can find various references to similar variations of this 
same reboot code in multiple places on the Internet.

However, IBM seems to have a different perspective.  They explicitly say in 
some of their documentation (comments in the PC/AT BIOS source code, as well as 
the PS/2 Technical Reference Manuals) that INT 15.4F is allowed to process the 
scancodes (something which up until now, I never thought was allowed).  None of 
the documentation I've found outside of IBM actually says this, though.  The 
reference I was referring to earlier that I mistakenly thought came from IBM 
actually came from somewhere else.

So, based on IBM, INT 15.4F shouldn't be called from outside INT 09, not 
because they explicitly say so anywhere, but rather because of the potential 
damage that could be caused if INT 15.4F actually processes the unreal 
scancode.  MS apparently disagrees.

**

Now comes the real dilemma.  RBIL states that IBM classifies INT 15.4F as 
required.  I don't know where that statement came from (I didn't find it in 
any of the documentation I came across), but I do believe IBM actually stated 
this somewhere.

The problem with this is when you have a program that provides its own INT 09 
handler, and doesn't use even use the BDA to keep track of things (Windows, 
GEM?, GEOS?, many games, ...).  If these programs call INT 15.4F as is 
required, and INT 15.4F actually processes the scancode (modifies the BDA, 
puts keystrokes in the keyboard buffer, toggles the LEDs on the keyboard, etc.) 
and then tells the INT 09 handler to ignore the scancode, there is a big 
problem.  At a minimum, the BDA will be all screwed up when the program exits 
(if you can even find a way to exit the program, because you may not be able to 
use the keyboard properly).

I think most (if not all) of these programs ignore INT 15.4F for this reason, 
though technically (at least according to RBIL) they are in violation of the 
standards.

The other issue with an INT 15.4F handler, of course, is that it won't directly 
work with the BIOS on PC's and early-model XT's and AT's.  Most people don't 
care about that kind of compatibility any more, though, and FD-KEYB has an 
option that fixes that problem.

 no single DOS or BIOS call is 'fully' reentrant

Actually, all DOS and BIOS functions must be re-entrant in a general sense, 
though you're correct that they don't necessarily need to be fully 
re-entrant.  Any resident function (BIOS, DOS, or anything else) that can 
potentially be called from both inside and outside an IRQ handler (and there 
are very few that can't be), or anything that can conceivably be called 
recursively (INT 16h calling INT 10h calling INT 16h), must be able to handle 
the possibility of re-entrancy.

Common ways of handling re-entrancy issues are to return an I'm busy -- go 
away error (like the InDOS Flag), provide some sort of context-switching 
mechanism (like the DOS Swappable Data Area), queue up the requests (which 
requires a stack and call-back mechanism of some sort), and full, 
unadulterated re-entrancy (where the old process is temporarily halted, the 
new one is handled, and then the old one is resumed).  The INT 14h handlers 
in my DOS USB Host Drivers are, in fact, fully re-entrant.

INT 15.4F is problematic right now regarding that (at least from what I see), 
because IBM indirectly says it doesn't need to be re-entrant, while MS 
indirectly says it does.  Even though IBM is technically correct here, MS 
actually has more clout in the industry.  INT 15.4F must in fact worry about 
the possibility of re-entrancy, at least in the case of Ctl-Alt-Del.

 that's why it was created in the first place: to free the KEYB
 implementation from the burden of supporting micro channel machines,
 where it's not as easy as 'handling INT 09'

What exactly would you do differently in the INT 09 handler for an MCA machine 
than you would on an ISA machine?  AFAIK, there is no difference -- you can 
install MS KEYB or any of the early KEYB clones (which all used INT 09 instead 
of INT 15.4F, BTW) on a PS/2 just like you can on an ISA machine, even if they 
were written before MCA even 

Re: [Freedos-user] Problem with USB keyboard in some computers

2011-07-06 Thread Bret Johnson
 I disagree here. You would only need reentrant handling if it could
 happen that int 15.4f is called while int 15.4f already is busy.
 This is unlikely for two reasons ...

Agreed: Unlikely, but absolutely not impossible.  Drivers should be designed to 
handle even unlikely events without crashing the machine.  The fact that the 
machine is about to reboot isn't a valid reason to let it possibly crash, IMHO.

 Int 15.4f is not supposed to do anything else than keyboard layout
 translations so there is no far worse.

Far worse includes a potential loss or corruption of data.  Though, as you 
stated, the caches and buffers _should_ already be flushed.

 It is not the job of int 15.4f to toggle LEDs etc. The standard way
 to do that is to manipulate the bits at 40:17 and then call int 16.1
 to give the BIOS a chance to sync with that. Neither int 9 nor int
 15 manipulate the LED in that context, it seems.

At least in MS KEYB, it is part of the INT 9 handler.  In perusing the PC/AT 
BIOS source code, I don't see where INT 16.01 issues any I/O to the keyboard 
controller to manipulate the LED's, so I'm not sure how the LED's would get 
changed that way.  Maybe I'm missing something, though.

 To create fake keystrokes, use int 16.5, again avoiding direct I/O
 manipulation and staying on the 40:xx keyboard buffer level.

There are a couple of problems with that approach.  The first is that not all 
keys on the keyboard end up in the BDA/keyboard buffer (Pause, PrintScreen, 
SysReq, Left/Right Windows/GUI, Power/Sleep/Wakeup, multimedia keys, etc.).  If 
these keys are to be simulated, it must happen at the scancode level, not the 
BDA level.  The second problem is that some programs provide their own INT 9 
handler, and don't even use the BDA at all.  For these kinds of programs, the 
simulation must also happen at the scancode level.

Particularly in the case of USB, where the USB keyboard may be the only one the 
computer has, simulation at the scancode level is the only viable option.  
Simulation at the BDA level would almost be pointless.


--
All of the data generated in your IT infrastructure is seriously valuable.
Why? It contains a definitive record of application performance, security 
threats, fraudulent activity, and more. Splunk takes this data and makes 
sense of it. IT sense. And common sense.
http://p.sf.net/sfu/splunk-d2d-c2
___
Freedos-user mailing list
Freedos-user@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/freedos-user


Re: [Freedos-user] Problem with USB keyboard in some computers

2011-07-03 Thread Bret Johnson
 I think it could bounce off attempts to use it recursively but
 I do agree that it should not do I/O, so it can only be used in
 combination with something else which does the I/O and/or buffers.

Not true.  It does not ONLY need to be used in combination with something that 
does the I/O.  In my programs, I use it to test the keyboard configuration to 
make sure it is correct or if a keystroke (scancode) should even be typed at 
all.

In addition to not doing I/O, INT 15.4F cannot modify the BDA, put ASCII codes 
into the keyboard buffer, or anything else that the INT 09 handler proper does. 
 In short, it cannot replace the INT 09 handler in whole or in part -- that 
is not its purpose.

From a purely practical perspective, turning an INT 15.4F handler into a 
proper INT 09 handler is pretty trivial, and only requires a small amount of 
extra code (issuing the EOI and sending some I/O to clean up the keyboard 
controller).  Small price to pay to ensure 100% compliance with the standards 
and compatibility with other programs.

? As discussed earlier, there could be a DISPLAY which processes UTF8
 instead of ASCII, but it will confuse programs which assume that all
 string lengths are equal to their byte lengths for the layouting...

I was thinking of something different, yet a separate function (which could be 
part of DISPLAY).  The input would be a Unicode character, and the output would 
be a code page character (either for the current code page, or possibly for any 
requested code page if there was sufficient memory).  Actually displaying (or 
in the case of KEYB, typing) the character is unrelated to this.


--
All of the data generated in your IT infrastructure is seriously valuable.
Why? It contains a definitive record of application performance, security 
threats, fraudulent activity, and more. Splunk takes this data and makes 
sense of it. IT sense. And common sense.
http://p.sf.net/sfu/splunk-d2d-c2
___
Freedos-user mailing list
Freedos-user@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/freedos-user


Re: [Freedos-user] New release of DOSUTILS package

2011-06-20 Thread Bret Johnson
 I meant that support for controlling PRTSCR in this way could be a part of 
 the PRTSCR
 program, without requiring the detour via SCANCODE.
I can see where that might be desirable is some circumstances, though I 
purposely decided to go with a more modular design.  Having separate programs 
is actually more flexible, even though it may be a little more cumbersome to 
implement.
In terms of timing, I still need a few more days before I can upload it.  I'm 
making some last minute additions to the program, and still need to update 
the documentation, before it's ready for publication.
--
EditLive Enterprise is the world's most technically advanced content
authoring tool. Experience the power of Track Changes, Inline Image
Editing and ensure content is compliant with Accessibility Checking.
http://p.sf.net/sfu/ephox-dev2dev___
Freedos-user mailing list
Freedos-user@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/freedos-user


Re: [Freedos-user] New release of DOSUTILS package

2011-06-17 Thread Bret Johnson
 But isn't it the advantage of a free operating system that there are
 several alternative approaches available (often more or less
 different) and the user has the freedom to pick the one that fits
 best his special requirements? But before someone can make a choice
 one has to know that there is one.

Indeed.  Another interesting thing, though, is that in combination with my 
SCANCODE utility, it is actually possible to automate PRTSCR.

SCANCODE is able to simulate keystrokes (including the PrintScreen key) into 
almost any other program, including PRTSCR.  SCANCODE can be programmed to do 
this based on various input parameters, such as absolute or relative timing, 
some type of message appearing on or disappearing from the screen, or other 
criteria.  SCANCODE is actually an _extremely_ powerful tool that can automate 
all sorts of keyboard-related tasks, though it can take some effort to 
program it to do what you want.

Depending on what you're actually trying to accomplish, though, your program 
may be a better choice than even the combination of PRTSCR and SCANCODE.


--
EditLive Enterprise is the world's most technically advanced content
authoring tool. Experience the power of Track Changes, Inline Image
Editing and ensure content is compliant with Accessibility Checking.
http://p.sf.net/sfu/ephox-dev2dev
___
Freedos-user mailing list
Freedos-user@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/freedos-user


Re: [Freedos-user] New release of DOSUTILS package

2011-06-17 Thread Bret Johnson
 Points for creativity, but you have to admit that actual support
 for command-line (or environment variable, script) driven operation
 of PRTSCR would be simpler, and would suffice in at least most cases.

I'm not exactly sure what you mean here.  I think you can usually do what 
you're talking about with simple output redirection, so I have a feeling I'm 
missing something.


--
EditLive Enterprise is the world's most technically advanced content
authoring tool. Experience the power of Track Changes, Inline Image
Editing and ensure content is compliant with Accessibility Checking.
http://p.sf.net/sfu/ephox-dev2dev
___
Freedos-user mailing list
Freedos-user@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/freedos-user


Re: [Freedos-user] New release of DOSUTILS package

2011-06-15 Thread Bret Johnson
 SCRDUMP - a utility to dump parts of the screen to a file
 
 With a hotkey as TSR, I assume?
 
 Nope. Again this utility is most useful within batch files (e.g.
 autoexec.bat). Typically it is called twice, once before and a second
 time right after the command whichs output is to be copied to a file

 A hotkey / TSR print screen to file tool would be nice, though.
 Maybe somebody on this list can recommend a nice tool for this?

You can look at my PRTSCR utility which works with the PrintScreen key, 
available on my web site:

http://bretjohnson.us

It has quite a few options to let you filter the output to some degree (like 
skipping menu lines at the top or bottom of the screen, or skipping blank 
lines in the middle of the screen).  It also lets you redirect the PrintScreen 
output to a device (like NUL or LPT3), instead of to a file.  If you do 
multiple PrintScreens, it keeps appending the output to the same file instead 
of creating a separate file each time.


--
EditLive Enterprise is the world's most technically advanced content
authoring tool. Experience the power of Track Changes, Inline Image
Editing and ensure content is compliant with Accessibility Checking.
http://p.sf.net/sfu/ephox-dev2dev
___
Freedos-user mailing list
Freedos-user@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/freedos-user


Re: [Freedos-user] New release of DOSUTILS package

2011-06-15 Thread Bret Johnson
 You can look at my PRTSCR utility which works with the PrintScreen
 key, available on my web site:

 http://bretjohnson.us

Oops!

There is indeed a PRTSCR utility there, but it is an older, simpler version 
that doesn't have all of the features I mentioned.  The version with all of the 
new features is still in beta on my computer.  I will try to clean it up and 
get it onto the web site in the next few days.


--
EditLive Enterprise is the world's most technically advanced content
authoring tool. Experience the power of Track Changes, Inline Image
Editing and ensure content is compliant with Accessibility Checking.
http://p.sf.net/sfu/ephox-dev2dev
___
Freedos-user mailing list
Freedos-user@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/freedos-user


Re: [Freedos-user] Unloading TSRs

2011-06-10 Thread Bret Johnson
Google up TSRCOM35 and download it.  It's a package that's been around for a 
LONG time, and has two programs called MARK and RELEASE that are specifically 
designed to remove a TSR from memory.  They don't work with all TSR's, but they 
do work with many.  Also included in the package are MARKNET and RELNET, which 
are more advanced versions of MARK and RELEASE that are intended to allow 
removal of even network drivers.  Network drivers usually manipulate all sorts 
of things in the DOS internals that the simple MARK and RELEASE programs 
can't undo properly.

The package includes several other TSR- and device driver-related utilities.  
The one I personally use all the time is MAPMEM, which displays a memory map 
(similar in concept to MS-DOS's MEM).  I find the format of MAPMEM's output 
more useful than any other similar program I have tested.


--
EditLive Enterprise is the world's most technically advanced content
authoring tool. Experience the power of Track Changes, Inline Image
Editing and ensure content is compliant with Accessibility Checking.
http://p.sf.net/sfu/ephox-dev2dev
___
Freedos-user mailing list
Freedos-user@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/freedos-user


Re: [Freedos-user] Code pages in dot-matrix printers

2011-05-05 Thread Bret Johnson
FWIW, I still have and occasionally use a 9-pin dot-matrix printer.  It's a 
Panasonic, and to print graphics (like from a DOS CAD program I used to use all 
the time) I have to tell the program I have an IBM Graphics Printer, not any 
kind of Epson.  You should also at least consider the implications for 
different versions of PCL and PostScript.  There may be other 
manufacturer-specific protocols you may want/need to support as well.

Messing with printer protocols is a MAJOR headache, and this project could 
easily turn into a black hole for your time.  I'm not saying this wouldn't be a 
worthwhile project, just be forewarned that it's not as simple as it may seem 
at first.


--
WhatsUp Gold - Download Free Network Management Software
The most intuitive, comprehensive, and cost-effective network 
management toolset available today.  Delivers lowest initial 
acquisition cost and overall TCO of any competing solution.
http://p.sf.net/sfu/whatsupgold-sd
___
Freedos-user mailing list
Freedos-user@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/freedos-user


Re: [Freedos-user] Problem with USB keyboard in some computers

2011-04-18 Thread Bret Johnson
 Maybe on some machines USB has IRQ uses which are not reliably
 enabled during HLT? Maybe even NMI/SMI?

Hard to say exactly what the problem might be, though I don't suspect it has 
anything to do with HLT, NMI, or SMI.  It is interesting (and encouraging, at 
least to me), though, that it only seems to affect USBKEYB and not any of the 
other USB programs, including the host controller driver.

 Also interesting that some BIOSes are not fully compatible with DOS
 keyboard (layout drivers).

The incompatibilities aren't related to the keyboard layout drivers as such.  
They are related to the way my programs simulate keystrokes (the way the my 
programs insert a value in AL when the BIOS issues an IN AL,60h to request a 
scancode from the keyboard hardware).  What my programs do, in SOME cases, is 
call the INT 09 code stored in the IVT with the CPU's trap flag set.  When the 
INT 09 code issues an IN AL,60h OpCode, my programs skip over the OpCode and 
instead insert the scancode they're trying to simulate into AL.  You can 
download the source code for USBKEYB and review exactly how this works.  For 
some reason, this doesn't work with all BIOS's.

 If I had to guess, I would say MKEYB uses int 15 and KEYB uses 40:xx.

I think a lot of KEYB programs use INT 15.4Fh.  I personally don't know of any 
that use the BDA.  BTW, INT 15.4Fh will only work properly for certain keys 
(the letter and number keys).  It usually won't work properly for things like 
Ctrl, Alt, Shift, PrintScreen, Pause, number pad keys, etc., if anybody ever 
wanted those keys to work differently than they normally do.

MS KEYB doesn't use either INT 15.4Fh or the BDA.  It COMPLETELY REPLACES the 
BIOS INT 09 handler with a new one, that process all possible keystrokes 
(including things like Pause, SysReq, PrintScreen, and Ctrl-Alt-Del).  It 
doesn't simply process the keys that are different than the default BIOS 
handler for a particular keyboard language layout, which is what the other KEYB 
programs do.  The other KEYB programs are not, in any way, equivalents of MS 
KEYB.

 When reading about the wish to map the mouse wheel to keystrokes on
 BTTR forum, I immediately thought about MOUSKEYS and was happy to see
 in the docs that it is actually by you (many many years ago). Maybe
 you could still add wheel support to it in 2011? :-)

I saw that on the BTTR forum as well.  I do intend to add support for wheels in 
the next version of MOUSKEYS, though I doubt that it will happen this year. 
BTW, I would also like to see CTMOUSE expanded to support the IntelliMouse2 
protocol (two wheels and five buttons).  If CTMOUSE did that, the next version 
of MOUSKEYS would support the extra buttons and wheels as well.  USBMOUSE 
already supports the extra wheels and buttons for USB mice that have them.

 So in short, you have my vote for the idea to add QPI... I/O traps
 int 67.1axx or RM386 int 67.5dex I/O trapping or (preferred by me
 AND imho the easiest variant) MS EMM386 int 2f.4a15 I/O
 virtualization to JEMMEX.

The last is I think is the only reasonable one to implement, since it is 
already supported by both the MS and Qualitas EMM's.  This could be implemented 
as an optional JLM by Japheth instead of including it natively in the EMM the 
way MS did, though I think the control interface should still be INT 2F.4A15h.  
Qualitas made some expansions to the original MS standard, and I think it could 
be expanded even more to make it even more useful.  E.g., right now the 
standard will only support I/O port numbers = 100h, and I think that 
limitation should be eliminated.  Doing so would allow yet another method of 
simulating keystrokes in my programs.

 See RBIL Intlist part 2F4A15BX Install I/O virtualization
 handler.

I've already implemented this in the USB joystick driver (USBJSTIK), and it 
seems to work pretty well, though I've only tested with MS EMM386.  The one 
problem it does have, though, is that the I/O virtualization does not work with 
applications that access the I/O ports while in protected mode (e.g., DPMI).  
That could bring up a long debate about DOS DPMI applications and their general 
lack of concern for compatibility with modern (i.e., virtualized) hardware like 
USB, but I won't go there from here.

See the following link, where you can download a paper and some sample code 
from written by Bob Smith, one of the founders of Qualitas, regarding the INT 
2F.4A15 interface:

http://www.programmersheaven.com/mb/x86_asm/376018/376018/virtualize-io-in-dos/?S=B2

 PS: For the KEYB issue, as probably only few BIOSes are affected,
 some separate proper int16 and int 15.4f implementation driver
 would be a good idea, I would not suggest to put that into a default
 KEYB itself.

It would certainly be possible to create a separate INT 09 BIOS Replacement 
program, rather than including it in KEYB.  I do think the appropriate place 
for it is probably in the KEYB program, though, just like the MS 

Re: [Freedos-user] byggy usb keyboard.

2011-04-18 Thread Bret Johnson
 ... usb keyboard; slow and not properly responsive.

It is this way both with the BIOS and with my programs?  Note that I can't 
guarantee that USBKEYB will work with Windows -- it will probably work on some 
computers and not on others, depending on the BIOS.  USBMOUSE definitely won't 
work with Windows.  Windows is even worse than DPMI it comes to not liking 
hardware virtualized by DOS.


--
Benefiting from Server Virtualization: Beyond Initial Workload 
Consolidation -- Increasing the use of server virtualization is a top
priority.Virtualization can reduce costs, simplify management, and improve 
application availability and disaster protection. Learn more about boosting 
the value of server virtualization. http://p.sf.net/sfu/vmware-sfdev2dev
___
Freedos-user mailing list
Freedos-user@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/freedos-user


Re: [Freedos-user] Problem with USB keyboard in some computers

2011-04-17 Thread Bret Johnson
Marcos has already responded to some of this, but I will as well.

 Bret's USB keyboard driver worked perfectly for my two notebooks
 (Compaq and IBM, both year 1999) and one desktop (Pentium 166).

 It is unusual that the BIOS did not already do the keyboard for you.

I'm not surprised at all by this, considering the ages of Marcos' hardware.  
BIOS's only support some subset of USB keyboards, mice, and mass storage 
devices (flash drives, CD-ROM's, etc.).  Even modern BIOS's do not necessarily 
support all of these, and even if they do, the support is not always complete 
(they may not boot from USB disks, may not support hot-plugging, etc.).  In the 
early days, especially with laptops, the BIOS's many times didn't support USB 
keyboards at all (since laptops always have a built-in keyboard).  Even modern 
BIOS's still don't (and probably never will) support USB printers, joysticks, 
audio, video, serial, Ethernet, etc.

 There is an incompatibility with FDAPM. I forgot the details,
 but if FDAPM is loaded, the USB keyboard does not work properly.

 Did you try FDAPM ADV:REG instead of FDAPM APMDOS? That makes the
 power saving a bit less heavy and might reduce some side effects.

In my experiments, the ADV:REG option didn't make any difference.  On my 
computer, loading FDAPM after USBKEYB seemed to fix the problem, but apparently 
that didn't work for Marcos.  I will investigate this further and hopefully 
figure out exactly what the problem is before I release the next version of 
USBKEYB (still several months down the road, I'm afraid).

 - MS-DOS keyb.com should be used instead of FreeDOS keyb.exe.

 Of course we cannot do that because we have no license for that.
 Can you be more specific? Are there any particular problems with
 FreeDOS KEYB? Are you using the current version? I myself like
 MKEYB by Tom Ehlert - fewer layouts and features but very small.

The problem is that none of the KEYB replicas are fully functional 
replacements for MS KEYB.  MS KEYB actually does two things.  The first is to 
provide alternative keyboard layouts (e.g., the Brazilian layout that Marcos 
uses and the German layout that Eric uses).  All of the KEYB replicas that I'm 
aware of do this.

The other thing that MS KEYB does is replace the hardware/firmware keyboard 
BIOS with a new software keyboard BIOS.  NONE of the KEYB replicas (at least 
none that I'm aware of) do this.

I actually have several programs that simulate keystrokes (MOUSKEYS, JOYKEYS, 
SCANCODE, and USBKEYB).  However, in order to simulate keystrokes properly, the 
BIOS must be compatible with the keyboard simulation as provided by the 
programs.  Some hardware/firmware BIOS's are compatible, while others aren't.  
If you don't ever use these programs, or if your BIOS is compatible, MS KEYB is 
not needed.  However, if you use any of these programs, and your BIOS is 
incompatible, you need to replace the keyboard BIOS with a new one that is 
compatible.  MS KEYB does this, and is the only program I'm aware of that does.

 USB driver by Bret would also work there, I think. However MS DOS
 has not had any updates for ca 15 years, many parts are outdated.

That may be true, but there are some parts of MS-DOS that still have not been 
replicated by FreeDOS or any other alternative DOS.  Two significant and 
critical ones (at least concerning USB) that I'm aware of are the KEYB issue 
discussed above, and the I/O Virtualization API provided by MS EMM386.  FWIW, 
I/O Virtualization is essential for USB emulation of things like joysticks, 
serial ports, and audio.


--
Benefiting from Server Virtualization: Beyond Initial Workload 
Consolidation -- Increasing the use of server virtualization is a top
priority.Virtualization can reduce costs, simplify management, and improve 
application availability and disaster protection. Learn more about boosting 
the value of server virtualization. http://p.sf.net/sfu/vmware-sfdev2dev
___
Freedos-user mailing list
Freedos-user@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/freedos-user


Re: [Freedos-user] Problem w/ CONFIG.SYS INSTALL

2010-10-28 Thread Bret Johnson
Hi Bret,

 I checked the system's state with INSTALL=DEBUG.COM on a boot disk
 (Rugxulo's bare DOS disk, with a 2008-03-08 kernel, build 2038) and
 it appears fine to me. Memory that belongs to the
 configuration/initialization program is allocated to a PSP at
 segment 60h (!) which is properly set up except there's no MCB in
 front of it. (This means programs that display a process's name
 display garbage instead.)
 Some simple tests, including resident installation of a TSR that
 uses process relocation and the new Int21.4C method, passed.

 Tell us the programs that are used and their versions, that might
 help.

The TSR I'm working on can't be published just yet, so that's not an option 
right now.  It's also _really_ complicated, so I'm not sure anyone would want 
to mess with it anyway.

I'm using an older version of the kernel -- I'm not sure exactly which one 
right now, but it's one from right after FreeDOS version 1 was released.  I'm 
working with some other programmers who are using the latest versions of the 
kernel.  I can find out exact details if it might help.
  
 Can you reproduce the crash with a minimal (dummy) TSR? Could you
 make a TSR available that causes this crash?

I don't know -- I'll see if I can create a simple TSR that still has the 
problem.

--
Bret


--
Nokia and ATT present the 2010 Calling All Innovators-North America contest
Create new apps  games for the Nokia N8 for consumers in  U.S. and Canada
$10 million total in prizes - $4M cash, 500 devices, nearly $6M in marketing
Develop with Nokia Qt SDK, Web Runtime, or Java and Publish to Ovi Store 
http://p.sf.net/sfu/nokia-dev2dev
___
Freedos-user mailing list
Freedos-user@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/freedos-user


Re: [Freedos-user] Problem w/ CONFIG.SYS INSTALL

2010-10-28 Thread Bret Johnson
I was using kernel 2036.  Just tried 2038 -- no effective difference.  The JEMM 
error is different now (Error 06 at a seemingly random CS:EIP, near the top of 
conventional memory but where there is no associated PSP).

--
Bret


--
Nokia and ATT present the 2010 Calling All Innovators-North America contest
Create new apps  games for the Nokia N8 for consumers in  U.S. and Canada
$10 million total in prizes - $4M cash, 500 devices, nearly $6M in marketing
Develop with Nokia Qt SDK, Web Runtime, or Java and Publish to Ovi Store 
http://p.sf.net/sfu/nokia-dev2dev
___
Freedos-user mailing list
Freedos-user@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/freedos-user


Re: [Freedos-user] Processor overheating under DOS

2010-09-12 Thread Bret Johnson
I normally don't use FDAPM or POWER, but did a little bit of testing after 
reading this.  If you load FDAPM first and then load my USB drivers, there is 
indeed a problem and the keyboard doesn't work properly.  If you load the USB 
drivers first and then load FDAPM afterwards, everything seems to work just 
fine.

I also tried using MS POWER (installed in CONFIG.SYS), and everything works 
fine with my USB drivers installed afterwards.

So, as an alternative to what you're doing now, either use POWER instead of 
FDAPM, or install FDAPM after installing the USB drivers instead of before.  In 
either case, though, you still seem to have a hardware problem -- there's no 
legitimate reason the CPU should get hot enough to start causing data 
corruption.  The purpose of programs like FDAPM  POWER is to extend battery 
life, component life, and reduce overall power consumption, not to keep the 
computer from overheating and destroying data.

I'll try to investigate this before the next release of the USB drivers and see 
if I can figure out exactly what the problem is.


--
Start uncovering the many advantages of virtual appliances
and start using them to simplify application deployment and
accelerate your shift to cloud computing
http://p.sf.net/sfu/novell-sfdev2dev
___
Freedos-user mailing list
Freedos-user@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/freedos-user


Re: [Freedos-user] Liam Proven comment

2010-05-20 Thread Bret Johnson
 LFNs on FAT was a very clever hack! It's now generally forgotten that
 it was Windows NT 3.5 that introduced the system, long before Windows
 95.

I personally don't think LFN on FAT was clever at all.  It broke many 
programs that worked just fine before that, including Microsoft's own SCANDISK 
and DEFRAG.  In fact, I would venture to say that if anybody other than 
Microsoft had come up with the hack they would have been laughed right out of 
the market.

Up to that point, DESCRIPT.ION files were becoming something of a standard that 
essentially accomplished the same thing, and didn't destroy the accepted FAT 
structure.  I'm not suggesting that DESCRIPT.ION files are a panacea, but I 
think they are a MUCH better idea than what Microsoft did.


--

___
Freedos-user mailing list
Freedos-user@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/freedos-user


Re: [Freedos-user] Call for volunteers (Re: Concerns about topics on t his mailing list...)

2009-08-22 Thread Bret Johnson
 Since it seems that there is much interest in producing version 1.1,
 I'm putting out a call for volunteers.  Please reply with what
 features and/or utilities you will be working on.

I assume that people will want my USB drivers to be part of the utilities 
released with version 1.1, even though the distribution requirements are not 
GPL-compatible.  I will be continuing to work on those, and could use help with 
them if anybody is interested (documentation, testing, additional device 
drivers, etc.).

--
Bret Johnson

The only things you get to keep forever are the ones you give away.



--
Let Crystal Reports handle the reporting - Free Crystal Reports 2008 30-Day 
trial. Simplify your report design, integration and deployment - and focus on 
what you do best, core application coding. Discover what's new with 
Crystal Reports now.  http://p.sf.net/sfu/bobj-july
___
Freedos-user mailing list
Freedos-user@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/freedos-user


Re: [Freedos-user] USB for FreeDos

2009-08-14 Thread Bret Johnson
 Hi JVP, thanks for testing the Bret Johnson USB drivers :-)

{snip}

 cd\usb
 usbuhci IRQ 11 DisableLegacySupport

 I assume the IRQ can also be set automatically?

Yes, the IRQ is normally set automatically, either by the BIOS or by 
USBUHCI{L}.  The reason JVP needed to change it was because the BIOS configured 
the USB Host Controller to use IRQ 12, which conflicts with the PS2 mouse 
software.  IRQ 12 is supposed to be dedicated to the PS2 mouse, and is never 
supposed to be used for anything else.

 usbprint
 usbmouse
 C:\Dos32\ctmouse

 Cute :-) Does it support more advanced PS/2 commands
 as well, in other words, can things like third button
 and wheel be enabled by the ctmouse usbmouse combo?

USBMOUSE supports three different mouse protocols: the regular PS2 protocol 
(max 3 buttons, no wheels), the IntelliMouse protocol (max 3 buttons, 1 wheel), 
and the IntelliMouse2 protocol (max 5 buttons, 2 wheels).  CTMOUSE currently 
supports the first two protocols, so if your USB mouse has a wheel it will work 
just fine with CTMOUSE and USBMOUSE.  If CTMOUSE is ever upgraded to support 
the IntelliMouse2 protocol, and your mouse has 5 buttons and/or 2 wheels, 
USBMOUSE already supports it and everything will work just fine.

USBMOUSE also supports multiple mice at the same time, including a real PS2 
mouse.  So, you can have a right-handed USB mouse, a left-handed USB mouse, a 
USB trackball, and a real PS2 mouse of some sort on the same computer and 
switch back and forth between them (or even use them all at the same time) if 
you want.  It also supports plug-and-play for the USB mice, so if you have 
more than one USB mouse but don't have enough hub ports to plug them all in at 
the same time, you can simply unplug and swap them around any time you want 
without needing to reboot.

USBPRINT allows you to print to USB printers from real DOS, without needing 
to do it from a DOS box underneath Windows (which is the normal way everybody 
does it now).  USBPRINT also allows two-way communication to both USB and 
parallel printers, so you can download configuration data (such as printer 
identification and ink level information) from the printers.  This would also 
allow someone to create a DOS application to use the scanner and fax functions 
on a multi-function printer (such an applications has not yet been developed, 
but it is very possible to do).  USBPRINT also has several other features that 
should make printing better in DOS, both for USB printers and parallel 
printers.  You don't actually need a USB printer for USBPRINT to be useful to 
you.

 ... 10 Micro Sec on a 533Mhz Industrial Board, with
 a FreeBasic / CGUI app.
 Previously I used a 2 button mouse pad on ps2.
 Using the usb mouse driver with a Microsoft mouse didnt change the 
 timing at all, which I am very pleased about.

 Great news :-) I remember running something with 1 msec
 TSC based time measurements on a classic Athlon a few
 years ago - there the BIOS USB driver did cause delays
 big enough to make me switch to real PS/2 mice again.

 Eric


--
Let Crystal Reports handle the reporting - Free Crystal Reports 2008 30-Day 
trial. Simplify your report design, integration and deployment - and focus on 
what you do best, core application coding. Discover what's new with 
Crystal Reports now.  http://p.sf.net/sfu/bobj-july
___
Freedos-user mailing list
Freedos-user@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/freedos-user


Re: [Freedos-user] Over 4-GB for FreeDOS, Etc.

2009-08-14 Thread Bret Johnson
I pretty much agree.  I actually don't really need or even want access to even 
the full 4GB that a 32-bit CPU allows, but would like what's there to work 
correctly no matter how much memory there actually is.  My newest computer came 
with 6GB (64-bit Vista), which I multi-boot to DOS.  I had to take 4GB out of 
the computer (leaving it with 2GB) to get DOS to recognize any extended memory 
at all, thereby leaving Vista in a less-than-optimum configuration.  I should 
also point out that some of my programs require I/O virtualization, which is 
only available in MS EMM386 or Qualitas 386MAX -- none of the other memory 
managers are complete enough to work properly.

It should also be noted that a 32-bit Windows OS (including XP-32 and Vista-32) 
are limited to about 3.5 GB.  The absolute maximum for 32-bits is 4GB, but you 
have to leave room for things like video RAM and shadow RAM that don't use 
real memory.


--
Let Crystal Reports handle the reporting - Free Crystal Reports 2008 30-Day 
trial. Simplify your report design, integration and deployment - and focus on 
what you do best, core application coding. Discover what's new with 
Crystal Reports now.  http://p.sf.net/sfu/bobj-july
___
Freedos-user mailing list
Freedos-user@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/freedos-user


Re: [Freedos-user] DOS-C and GPL (was Re: Whatever happened to freedos -32?)

2009-08-13 Thread Bret Johnson
Pat is correct.

A device driver is no different than any other executable, it just normally 
gets loaded via CONFIG.SYS instead of AUTOEXEC.BAT or at the command line.  If 
a GPL OS only allowed GPL applications to run on it, it would be useless.  In 
the DOS world, almost no programs are GPL, especially the ones you want to keep 
DOS around for (WordPerfect, Procomm Plus, all sorts of games, etc.).  It would 
also have to work the other way as well -- a GPL application would not be 
allowed to run on a non-GPL OS (like MS-Windows).  This is a ridiculous 
discussion, frankly.

 With respects to DOS-C, if loading non GPL drivers really did violate
 GPL, then it would have never been released under GPL.  The comparison
 of drivers to OSLib is an apples and oranges comparison.  A DOS
 loadable device driver is simply an executable that is loaded into
 memory that follows a certain calling convention.

 FreeDOS, or any GPLed MS-DOS alternative, would be totally useless if
 it disallowed non GPL device drivers, since the vast majority of
 device drivers are non GPL.  Besides, Richard Stallman is well aware
 of our project and would have contacted us if he felt we were doing
 something wrong.

Pat


--
Let Crystal Reports handle the reporting - Free Crystal Reports 2008 30-Day 
trial. Simplify your report design, integration and deployment - and focus on 
what you do best, core application coding. Discover what's new with 
Crystal Reports now.  http://p.sf.net/sfu/bobj-july
___
Freedos-user mailing list
Freedos-user@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/freedos-user


[Freedos-user] USB Driver Comparison

2009-07-24 Thread Bret Johnson
There has been some discussion lately on the FreeDOS mailing list about the 
comparison between the DOS USB drivers made by me (Bret Johnson, 
http://bretjohnson.us), and those made by Georg Potthast 
(http://georgpotthast.de/usb).  The discussion has been around three major 
points, and I would like to comment about those points from my perspective.

1) The licensing arrangements.

The licensing arrangements for my programs are stated pretty clearly on page 6 
(the Copyrighted Freeware section) of USBINTRO.DOC.  The license is not 
simply a copy of some other canned license (GPL, Artistic License, etc.), and 
never will be.  Rather than inserting a bunch of legal jargon for lawyers to 
fight over, I simply state my intent.  Read it and see if you still have 
questions.

2) The possibility of placing a wrapper around one or both of the drivers so 
that in the end they have the same API, and the user will have a choice as to 
which one they use.

At a very basic level, the two architectures are completely different from each 
other and incompatible.  The difference is so fundamental that it actually goes 
right over most people's heads, and they don't grasp what it really means.  A 
quote from Georg's documentation:

Using the URB you can only schedule a transaction to a single device specified 
by the device address. So you can send and receive data from a mass storage 
device or send data to a printer. If you have a camera, which sends a constant 
stream of data or a mouse, DosUSB will not be able to retrieve that data while 
it is executing a transaction to e.g. a printer.

In other words, Georg's architecture allows only one thing to happen at a time. 
 For example, under Georg's architecture, it would be impossible to be 
listening to some background music from a USB-attached CR-ROM, playing on a 
USB-attached sound system, while typing on a USB-attached keyboard at the DOS 
command prompt.  It would also be impossible, for example, to be using Arachne 
to access browse the internet across a USB-to-Ethernet converter, while using a 
USB-attached keyboard and a USB-attached mouse to control the Arachne program.  
Of course, all of these things are possible in today's world when you're not 
using USB, and should be possible when you start using USB hardware as well.

Now a quote from my documentation:

These DOS USB Drivers are specifically designed to be run in the background.  
That is, when you tell the Driver to send some data to a particular Logical 
Device, the Driver essentially says, OK -- now go do something else and I'll 
let you know when it's done.  The Driver takes care of sending the data 
ENTIRELY in the background, while the computer is busy doing other things in 
the foreground.  As you might imagine, running a process in the background is 
much more complicated (requires more memory) than doing it in the foreground.  
However, the advantages it provides (such as the ability to support mice and 
keyboards) generally makes it worth the extra complexity.  In addition, a 
background process can very easily simulate a foreground process in 
situations where that is required, while it is impossible for a foreground 
process to simulate a background process.

The examples stated above are all completely possible under my architecture, 
even though drivers for USB CD-ROMs, sound systems, and USB-to-Ethernet 
converters have not been written yet.  The point is, under Georg's 
architecture, it is impossible to write drivers that could do all of those 
things, and do them AT THE SAME TIME.  It's also impossible under Georg's 
architecture to implement plug-and-play.

There are also very fundamental differences in the API's.  Georg's API is 
limited to scheduling packets across the USB bus (what he calls a URB, or USB 
Request Block).  My API allows almost complete management of the bus, not 
simply the scheduling of packets.  In fact, it would be possible to build an 
application (even a GUI) that almost completely monitored and controlled the 
USB busses and all the USB devices attached thereto, using only calls to the 
API.  I should point out that I have no intention of writing such an 
application, but somebody else certainly could.

3) The code is complicated and hard to understand.

Of course it's complicated.  A host driver is capable of managing dozens of 
devices at the same time, scheduling thousands of USB packets every second, 
managing plug-and-play of the devices, and doing it all in the background 
without any interference to the normal stuff you're doing in the foreground.  
How could you possibly expect it to NOT be complicated?

The code is heavily commented, so someone else could understand it if they took 
the time.  The problem is, it's not just the code that's complicated.  It's 
understanding all of the details and nuances and interactions between DOS, USB, 
IRQ's, the BIOS, legacy hardware, etc.  There's way more to it than just trying 
to understand the code.

--
Bret

<    1   2   3