• Please review our updated Terms and Rules here

ISA USB board

Quick first look at what I've been working on - dual socket USB based storage adapter. One internal, one external. The component count is quite high and this might make it a little expensive to produce, but I will also run a rev2 of the single-socket board as well (with the port mapping corrected).
 

Attachments

  • Lo-tech-USB-Storage-Adapter.jpg
    Lo-tech-USB-Storage-Adapter.jpg
    472.5 KB · Views: 30
Okay, by popular demand, the deluxe 6Kb-footprint version.


Includes shadowing to RAM! Turns out after methodically calculating exactly where the top of memory was, I blew it away and started writing at some ridiculously low sector like 1000, guaranteed to explode after you started to read stuff.

To enable this you need both the SHADOW option and the INJECT_INT19_HANDLER enabled. This is because the shadowing is done as part of the boot-loader, because at least on my system, the memory test happens AFTER option ROM initialization, so we can't really trust anything we write at that point will be safe.

This version also tries to unroll the 8086 read/write loops, replacing a loop of 64 "read byte and store"/"read and store byte" operations with literally 64 copies of each. These features together push the current size to around 4868 bytes. I sized it to 6k because I recalled claims some BIOSes tend to handle options only in 2k increments.

Updated: I tried to add the double-wide support for 8086 mode, replacing the 64 unrolled operations with 32. The first time I tried it, I got a strange crash mid-boot, but it didn't repeat. I got a couple other weird behaviours, but those may have been because of trying to load CTMOUSE at the end of my AUTOEXEC.BAT, which usually freezes. I would be unsurprised if there's some marginality to the hardware-- pulling out the passive-backplane CPU card repeatedly can't be good for it. You should be able to use it without the shadowing or double-wide if you want to compare the different options for a good performance-stability tradeoff.
 
Last edited:
You should be able to use it without the shadowing or double-wide if you want to compare the different options for a good performance-stability tradeoff.
I just tried it with everything enabled ( Stock 8088 ) and it seemed to work fine until i rebooted, CTR-ALT-DEL, and i got the " Non system disk or disk error ", My flash drive was totally corrupted, I had to wipe the drive in another computer and start again, I setup the drive and it booted into DOS fine, Ran DISKTEST it reported about 105 KB/s, I rebooted and same error again and corrupted drive. i will try without shadowing and double-wide later.
 
i will try without shadowing and double-wide later.
Tried and no joy, I can not set up a flash drive on my XT with this version of the bios, FDISK goes through the motions of creating a partition but upon reboot no partition has been created.

If i use another computer to set up the flash drive it works on the XT until i reboot and then i get the error and corrupted drive again.
 
I found one possible issue: when the write loop got unrolled, it left in an unwanted increment before it started-- so instead of writing, say, 0-512, it was trying to write bytes 1-513 to disc, which all but guarantees corruption. With this change, I was able to write files and power off and on with normal looking results.

I am having one issue personally-- seemingly only on very cold starts, it will sometimes crash loading DOSMAX and/or USE!UMBS... writing some garbage to the screen. It seems to not do it on a reboot or power cycle once the machine's warm, and didn't do it with the V40, so I wonder if there's a cold solder joint somewhere in my 8088 card.
 
I found one possible issue: when the write loop got unrolled, it left in an unwanted increment before it started-- so instead of writing, say, 0-512, it was trying to write bytes 1-513 to disc, which all but guarantees corruption. With this change, I was able to write files and power off and on with normal looking results.
Working fine now, Tried with everything enabled in the bios, I can set up flash drive in the XT now and multiple re-boots later NO more corruption, I copied a 4 Mb binary and it took 63 seconds ( stock 8088 ), I ran disktest:
H.jpg
I also ran MediaTest with no problems, Copied a couple of DOS programs over and they ran fine.
I am having one issue personally-- seemingly only on very cold starts, it will sometimes crash loading DOSMAX and/or USE!UMBS... writing some garbage to the screen. It seems to not do it on a reboot or power cycle once the machine's warm, and didn't do it with the V40, so I wonder if there's a cold solder joint somewhere in my 8088 card.
I have never used DOSMAX or USE!UMBS.
 
I had a little play with IBM DOS 3.30, Installed on a 1 GB flash drive (32 Mb partition) and had no problems installing or running DiskTest and MediaTest on the XT, Though that was the extent of my testing.
 
Quick first look at what I've been working on - dual socket USB based storage adapter. One internal, one external. The component count is quite high and this might make it a little expensive to produce, but I will also run a rev2 of the single-socket board as well (with the port mapping corrected).
Are these 4 layer PCB's same as before ?
 
Both the single socket and the new two socket version will be 4 layer boards and entirely SMD based. Bare PCBs account for a tiny minority of demand now so these are being designed for short run production.
 
Has anyone had problems with the CH375 boards being finicky about flash drives?

I had been using a particular no-name 2Gb unit for testing, mostly because it has a huge bright LED underneath thin plastic casing, so it's easy to tell if it's active. I finally got in a CH375B module (same pinout as the CH376S one I had been using), and it simply doesn't want to initialize. It starts the initialization dance, lights up like normal, then starts returning a status code of 24 or 1F after DISK_INIT. I'm not sure it's a timing thing, because if I step through the commands one-at-a-time in DEBUG, it dies in the same way. The various things like the R_SENSE command or trying some of the 'clear stall' or 'flush buffer' commands don't get any further along, sometimes it goes back to 24 instead of 1F.

Other drives (some random 16Gb PNY and Sandisk units) proceed fine on the CH375, but I didn't have them partitioned and formatted how I want.

I suppose it's possible that these drives (really sketchy ones that I can recall my Win10 machine not hugely liking either) are outside the 375's compatibility but within the 376, but up to now I had been able to hammer pretty much anything I threw at the 376 into detecting at least.
 
Both the single socket and the new two socket version will be 4 layer boards and entirely SMD based. Bare PCBs account for a tiny minority of demand now so these are being designed for short run production.
Sounds like they are going to be expensive, Especially so for folk not in the US
 
Has anyone had problems with the CH375 boards being finicky about flash drives?
Most of my Flash drives, USB adapters, Multi card reader are many years old now and i have had no problems with any of them with my CH375 ISA-USB board.

My more recent buy's within the last 18 months have been a 32Gb Kingston data traveler which dropped stone dead just outside of the 12 month warranty, And a triple pack of V7 branded 4Gb flash drives, One V7 drive was DOA, One worked for about 2 months then died and the other is now very intermittent.

I ran "ChipGenius" and "USBDriveInfo" on the Kingston and V7 drives when i bought them and neither could identify the controller, That to me was a red flag, Anyway i destroyed the drives getting them apart and the chips had no markings on them, It looked like the markings had been removed / skimmed off.

Try running chipgenius and usbdriveinfo and see what they report for your flash drive.
 
Sounds like they are going to be expensive, Especially so for folk not in the US

I've not costed these yet as the 1st draft designs are only just complete. The intention is to run a short batch of engineering samples in the first instance to test the market.

Has anyone had problems with the CH375 boards being finicky about flash drives?

I purchased two CH376S based boards (several years apart) and, perhaps interestingly, both only return 08h regardless of input - this is when directly connected to a CMOS machine.
 
Something that might be interesting to those you playing with a card like this in a PC/XT system: FreeDOS 1.3 added support for FAT32 file systems in the 8086 version of its kernel. (Previous versions of FreeDOS supported FAT32 only on 386 systems or better, and MS-DOS 7 requires a 386 as well.)

So if you use FreeDOS 1.3 or higher, you should be able to use a FAT32-formatted USB stick in your old machine, without having to create smaller partitions and/or using FAT16. Theoretically, it should work with partition sizes up to 137GB.

I'm curious about people's real-world experiences with this, though. :)
 
In my view it would be interesting to look at the file system capabilities of these chips themselves, since regardless of how tiny and weak these MCUs are, they surely must be faster, probably significantly faster, than an 8088.
 
Something that might be interesting to those you playing with a card like this in a PC/XT system: FreeDOS 1.3 added support for FAT32 file systems in the 8086 version of its kernel. (Previous versions of FreeDOS supported FAT32 only on 386 systems or better, and MS-DOS 7 requires a 386 as well.)

So if you use FreeDOS 1.3 or higher, you should be able to use a FAT32-formatted USB stick in your old machine, without having to create smaller partitions and/or using FAT16. Theoretically, it should work with partition sizes up to 137GB.

I'm curious about people's real-world experiences with this, though. :)
It was done on a youtube vidéo and it worked. With the original driver, mine should work as well.
The LBA advanced bios support need to be added in the BIOS for this.
 
In my view it would be interesting to look at the file system capabilities of these chips themselves, since regardless of how tiny and weak these MCUs are, they surely must be faster, probably significantly faster, than an 8088.

Hopefully, but I definitely wouldn't count that chicken until it's been hatched and benchmarked. You can implement FAT32 on incredibly pipsqueaky MCUs, after all. (Thinking of some of what you might find embedded in things like MP3 player chips.) There's also the question of whether it's sufficiently feature complete for DOSes requirements for a "network filesystem" redirector. (Which I have course have no idea of myself.)
 
You should be able to use it without the shadowing or double-wide if you want to compare the different options for a good performance-stability tradeoff.
I have done more testing and comparing the different options, I have turned off 'Shadow' because i can see zero performance gain with it enabled on my XT with stock 8088, The Options are now:
DISPLAY_CH376S_ERRORS 1
INJECT_INT19_HANDLER 1
ALLOW_INTS 1
DOUBLE_WIDE 1
SHADOW 0
WAIT_LEVEL 6

Also i have now set MAX_HPC to 255, I can now setup my 4Gb flash drive with a 2Gb partition, FDISK see's the whole 4Gb and i can partition / Format and install DOS with no problems, Though i do now see a red 'DANGER' flag during detection:
I.jpg
But i'm currently ignoring that because my XT is stable and working fine, I'm getting about 137 KB/s :)
 
The shadow function can potentially improve performance only on machines with 16-bit memory bus - 8086, v30, and 286 machines basically.
 
Back
Top