Jump to content

True or False? USB2 + Win 98 + Intel 915 = Impossible


Recommended Posts

Guest Drew Hoffman
Posted (edited)

3 megabytes per second = 24 megabits per second = twice the theoretical 12 megabits per second maximum speed of USB 1.1 and 3x the practical speeds usually achieved for file transfers.

If the goal is copying large game files, you could try setting up a network share that Win98 can connect to and either transferring files over the network or mounting ISOs from the network share directly. Windows 98's TCP-IP stack is also not well optimized so you won't see full Gigabit speeds but you should be able to do better than 3 megabytes per second.

If you don't want to go through the hassle of setting up a file server, you could also try using an IDE to CF card or IDE to SD card adapter on the secondary IDE channel. Though these are not hot-pluggable and the Flash memory may be slower to write to than a USB 3 SSD would be, the IDE bus can use UDMA and doesn't have the WDM overhead that the 9x USB stack has and should be able to achieve the maximum 133 MB/S reads if the CF or SD card is fast enough.

You could also consider an optical drive emulator like the PicoIDE or ZuluIDE if your primary concern is game discs. 

Edited by Drew Hoffman

Posted
4 hours ago, waltah said:

It is true that a benchmark might tell me the  truth is one system is only 4.9x faster (or 6.9, or 7.2 or ...) but how would that matter?

Let me preface this with "I don't know exactly what sweetlow is aiming at".

It does create a more complete picture. Maybe it won't help.

Did you ever ask AI if incorrectly detected geometry can slow down file transfer significantly, and why?

Quote

--How Incorrect Geometry Affects Performance--

Misaligned Partitions (Read/Write Penalty): When a file system is formatted with improper alignment, a single logical read or write request from the OS may span across two physical NAND flash pages/blocks. This forces the controller to perform two physical operations for one logical request, effectively halving the potential throughput.

Increased Garbage Collection: Incorrect geometry can hinder the controller’s efficiency in managing free space, leading to more frequent garbage collection routines that slow down overall read/write speeds, especially when the drive is nearly full.

Controller Overhead: If the flash drive's controller struggles to map logical blocks to physical memory locations, it introduces latency and reduces responsiveness. 

--Key Factors Impacting Read Performance--

Partition Alignment: Ensuring the partition starts on a 4K boundary (or a multiple of the flash's native page size) is critical, particularly for modern high-capacity drives.

File System Choice: Incorrectly formatted file systems (e.g., using FAT32 instead of exFAT on a large drive) can lead to slower access speeds.

"Garbage" Translation: In some cases, poor geometry configuration makes it harder for the drive to locate data, requiring more "read" cycles to retrieve a single file.

I'm not saying it is your actual problem, or that I'm really invested into debugging geometry issues. But, all of this likely applies more to Win98 (vs WinXP) when using FAT32.

The below should be checked "before" working out what the flash drive itself is doing.

Quote

1. Cluster Size (Allocation Unit Size)

This is the primary cause of sluggishness on Win98.

Problem: Formatting a large partition (e.g., 80GB+) using modern Windows tools often defaults to large cluster sizes (32KB or 64KB) to reduce the File Allocation Table size. Windows 98 struggles to read/write these efficiently.

Sluggish Variable: 32KB or larger clusters.

Optimal Setting for Win98: Format with 4KB (4096 bytes) or 8KB clusters. Smaller clusters allow for more efficient, faster access, particularly if the disk holds many smaller files (e.g., games or application files). 

2. Partition Size Constraints

Problem: While Windows 98 can read FAT32 drives up to 2TB, it has difficulty handling partitions larger than 128GB (or specifically 137GB) efficiently due to 28-bit LBA limitations.

Sluggish Variable: Partitions > 128GB.

Optimal Setting for Win98: Keep partitions under 128GB. For maximum performance and reliability in Win98, 32GB or 64GB partitions are often recommended. 

3. Alignment Issues (Flash Drives/SSD)

Problem: Modern formatting tools align data to 1MB or 4K boundaries, which works well on modern OSs, but can confuse older FAT32 implementations, causing "read-modify-write" cycles that drastically slow down performance.

Sluggish Variable: Modern Win10/Win11 alignment.

Optimal Setting for Win98: It is highly recommended to use the format tool provided on a Windows 98 boot disk (running in DOS/format c: /u /s). This ensures that the partition aligns with Windows 98's expectation of the disk structure. 

4. Third-Party Formatting (Misconfigured)

Problem: Using tools like Rufus or modern Windows GUI, which might select a cluster size that isn't ideal for Win98 (e.g."Default" could be 64KB on a 500GB drive).

Sluggish Variable: fat32format set to a large allocation unit, or "Default" allocation.

Recommendation: Use fat32format to select a specific 4KB or 8KB cluster size rather than relying on default settings. 

Summary of Best Practice for Compatibility and Speed

To get the best performance, format the drive inside Windows 98 using its own tools, or use a third-party tool on a modern machine to create: 

File System: FAT32

Partition Size: < 128GB (ideally 32GB-64GB)

Cluster Size: 4096 or 8192 bytes

Alignment: Standard Win98 FDISK/Format

Once, you've obeyed the FAT32 format requirements "for Win98", verified that the detected geometry isn't interfering with Win98's access to the device, verified that the devices internal emulation/translation structure isn't (lowest emulation sizes too high) getting in the way of Win98's fat32 structure thresh hold, and that your BIOS isn't somehow clinging on (imposing some incorrect geometry detection), then we know your only option is the Win98 driver; or maybe some issue in the chip's USB2 support, that is incompatible with Win98.

Now you have it from an AI. :) I truly hope you get something worked out.

Posted

I've mainly tested using two drives, both FAT32 and both formatted using the Win 98 machine.  One was a 16Gb USB 2 PNY formatted 64k blocks using a Win98 tool that allowed selectiing allocation unit numbers, the other (a new 32Gb USB 3 drive) was tested once 'as from the factory' and once after formatting using default DOS.numbers.  (8k I think, though I will not swear to that)  All of these are/were in the same ballpark -- 4 Mbyte/sec -- though the USB 3 drive was 10-20% faster than the other.   All 'hard' formats -- no 'quick.'  I've tried a couple of other USB 2 drives at various times with no significant difference.

I guess it is possible that the two different software systems (Win 98 and XP) could differe in their ability to handle some oddball or inappropriate geometry.   

I wish there were tools to log USB device recognition and mounting because obviously the software knows what's wrong.  

Posted (edited)

When testing transfer speeds, are these two drives being speed-tested on one machine, or both?

ie, is thumb drive #1 only being tested on computer #A and thrumb drive #2 only being tested on computer #B?

Or is thumb drive #1 being tested on computer #A and then the same thrumb drive #1 being tested on computer #B?

And, perhaps more importantly, has thumb drive #1 been used for approximately the same number of read/writes as thumb drive #2?

I can always tell when one of my thumb drives is nearing "EOL" because it takes LONGER to write the same amount of data that used to go fairly quickly.

Thumb drives do SLOW DOWN as they get older.

https://leafybark.com/the-slowdown-saga-do-flash-drives-get-slower-over-time/

https://darwinsdata.com/do-usb-drives-wear-out/

Edited by NotHereToPlayGames
Posted
57 minutes ago, waltah said:

Win98 tool that allowed selectiing allocation unit numbers

Since this is a "Win98" tool, I'd assume that partition alignment is correct; but it might be good to make sure. If the alignment is good you could also try 4K, to verify that 4K is slower and eliminate it. Might not hurt to just use Win98 itself (My Computer and/or Fdisk style), to completely wipe that variable off the board.

 

1 hour ago, waltah said:

log USB device recognition and mounting

I've been meaning to dig up some good advice for that, or waiting for someone to suggest something to you.

I've been dealing with cross compiling a compiler tool chain, and having to debug a lot. Then the storage device started giving me input/output errors, so that SSD is toast. Backed everything up and getting the new drive ready, just today.

I think there was a USB state tool, of some kind, on the Win98 CD; could be wrong about that. HxD is a hex editor that allows you to inspect the drive, but learning the ins and outs of manually investigating partition alignment might not be your thing. There is probably a better tool, for the whole investigation anyway.

If someone knows of something, by all means share. I'll start my dig once my machine is back at churning out stage1 bootstraps.

Extra (less immediately relevant):

I've mentioned that I used Grub2, as a way to completely sever BIOS issues. Grub4Dos' USB init might do enough also, with the exception that Grub2 could actually be changing registers; this in alignment with its driver heritage coming from within the Linux kernel. Might establish that those are really gonna help anyway, but include the info for wayward netizens (or AI). Grub4Dos is easier to install, from within Win98. Grub2 is easier to install from a Linux liveusb, and requires more bootmenu/config love. I think Grub4dos just needs something like BOOTLACE.COM 0x80 with GRLDR and MENU.LST <--[ "usb --init" on line one and "chainloader (hd0,0)+1" on line two ]--no quotes--| in the root C:\. Grub2 is more involved, and I often chainload Grub4dos from it anyway. And added bonus, of Grub2, is that it has the ability to read and write MRSs (either live or as part of a boot config); is if a MSR needs some love, if can be added to you Win9x boot menu.

Posted (edited)
14 hours ago, waltah said:

I simply don't see the benefit. 

Ok. So I assume you are no less than expirienced driver developer. But why did you ask for help then?

Edited by SweetLow
Posted

@waltah Did your PNY USB drive reach higher reads, in Win98, when you used the VIA USB card?

One of my i915 laptops allows me to boot, while one of my PNY USB drives is inserted (much shorter hang time, than yours). I have the i915 USB hubs intentionally installed as Unsupported Devices, in Device manager (a tricky thing to do). Upon entering Win98, the PNY is accessible as drive D: (this is running intentionally over my BIOS' USB2 driver [legacy USB support BIOS allows this).

When I ran Roadkil's Disk Speed v2, read speeds did not reach 5 megabyte per second. It averaged at about 4.5 or lower.

I rebooted and then inserted the same drive into my VIA USB2 PCMCIA card, and could get read speeds at an average of 17.5 megabytes per second.

Booting with my Sandisk USB3.2, the same way, it reached an average read speed of 45 megabits per second, this was still over the BIOS' i915 driver, not Win98's UBS2 driver (I actually boot Win98 from this drive this way [smart drive helps here] so I can't test it under the Win98 driver [might test that drive on a different i915 machine, of the same model, with the Win98 driver]).

Nothing guaranteed here. Just wanting to verify what your VIA card read speeds were, on that drive. Haven't yet verified if it is a geometry issue, just the drive, or if the Win98 driver can be broken free from BIOS hooks (if any).

Posted
On 2/26/2026 at 1:04 AM, SweetLow said:

I always assumed that turning off EHCI controllers in Device Manager gives the same effect.

If you reread the statements of topic starter you will find this one: 150 MBytes @ 60 seconds == 2,5 MB/s. It is simply impossible on USB1 controllers (of course if it measured correctly because some OS options can highly distort usual copy procedure time).

Yes, If I remember correctly the effect is the same. However the method of the .VXD is much more multiboot friendly; don't have to change BIOS settings before switching to a different OS on the system.

It's been too long since I worked with any issues relevant to this. I never went so far as speed comparisons.

 

On 2/27/2026 at 10:39 PM, waltah said:

Other than that I've swapped USBEHCI.SYS from a current WinXP SP3 system

I don't think anyone has gotten USB 2 to go full speed on an ICH 6 machine under Win 98

Unless something has changed, WinXP USB2 driver files do not work under 9x, hence why NUSB uses Win2K files. I remember trying to substitute some XP files years ago, but I don't remember why now, just that they produced errors in the Device Manager and didn't load. (Possible exception for USBCCGP.SYS, but this is not relevant to your issue.)

If I had time I would dig out my old 915 and 925 chipset testing systems. Haven't used these since back in 2017 when rloew and I were trying to backport HD Audio drivers. :(
Work and real life have a way of always preventing me from spending time on any of my computer related projects these days.

Posted (edited)
1 hour ago, LoneCrusader said:

Work and real life have a way of always preventing me from spending time on any of my computer related projects these days.

Nice to see you're still watchin'. ;)

Edited by awkduck
Posted (edited)

@waltah Another note: I do sometimes get that long boot/post hang "like yours" if the machine has already been booted once (since the machine was plugged into the wall). After that, it is a crap-shoot; it will either boot from the USB or have a really long post time (often the later). Its easy to unplug the laptop, then without fail it can boot off of the USB drive again (issues I've not had booting this machine with Grub2, as every time something is being triggered during Grub initialization).

I do not think the geometry is wrong. I formatted the PNY from DOS (BIOS Driver) and inspected the result. The partition offset was not perfect, for a flash drive, but otherwise looked good (examined from a different system). Oddly, the partition offset being the only difference (cluster size the same as others, I've tested), it benchmarked between 5.5 and 6 megabytes a second (Windows/BIOS driver); not great, but "strangely" faster.

I'm setting up a hard drive for Win98, in that machine, to see if I can rectify the issue; more closely matching your setup (using one of the Grubs).

There are some Linux reports of i915 not relinquishing BIOS USB control (sometimes other things). They encouraged people to disable legacy support (is there a BIOS update, for this machine?). Since I have no problem using this machine in Linux, and you in XP, I think the chances (of forcing relinquished control) are good. It has worked for my Win98 USB audio, in this same machine, anyway.

Update: It "has" worked for me. 27 odd megabytes a second. Things to investigate before considering the following. BIOS may not list Legacy USB options straight forward. It could be listed as something like USB keyboard and Mouse. This is what often provides a keyboard and mouse, when the machine has no PS2 inputs. If you use the following approach, Windows would need to load at boot, and could not exit to real MsDos, as there would be no keyboard (or mouse) support. Using only the "nativedisk ehci" command ( not nativedisk uhci [ohci for AMD machines]) might preserve PS2 keyboard and mouse emulation; but I wouldn't count on it.

If you NEC/VIA USB2 device happened to be faster, it might just be easier to use it.

 

This is how you could using Grub2 to clear BIOS control. You need a USB Live Linux, that boots with Grub2 (only using it for the bootmanager and potentially Grub2 installation later).

Read the whole post, if you are actually thinking about trying this. Don't try the installation, unless you are willing to start your whole Windows 98 installation over, from scratch.

START

At boot, you would press "c" to enter the CLI:

The the following (note that, pressing up will go through an editable history of typed command)

ls

# Your looking for drives like (hd0,msdos1). You need to identify the difference between your drive and the live Linux.

ls (hd0,msdos1)/

# Once you've identified the the USB drive, you need to verify where it has Grub2 installed

# Since you should be for a folder named i386-pc, inside a folder named grub. These could be located in a folder named boot, or something.

# Once located, take note of the path chain. Examlpe: (hd1,msdos1)/boot/grub/i386-pc The folder grub will be our "prefix".

nativedisk ehci

# This cuts grub off of it's modules, and needs to be rectified ( we booted grub off of the now lost USB prefix folder ).

# But in my test, this command has removed the BIOS hooks for USB2 in Win98

set root=(usb0,msdos1)

set prefix=(usb0,msdos1)/boot/grub

ls

# If! only your USB device is listed, we need to load drivers for your Hard Drive

nativedisk pata # For IDE ( I assumes you have IDA/ATA or the BIOS mode set for compatability )

nativedisk ahci # For SATA ( !!!!This is probably no good for WIn98/Dos booting. I'm adding it for completness !!!! )

ls # Locate your Hard Drive

set root=(ata0,msdos1)

chainloader +1

boot # Or press F10, if Grub2 has that option available

END

You'll have to replace the partition label, for the one actually provided "when list the devices" for the USB. The only thing that should have changed is the devices name. Likewise, if you HardDrive partition came up as msdos5, then you would use that instead.

It will be important to remember what your device and partition names where. They will be needed to permanently install Grub2, and the fix (if the test worked)

When I tested this, I intentionally left an extra FAT32 PNY USB drive inserted, along with the Live LinuxUSB. This "ensured" my USB device was "Completely" un-relinquished from BIOS control.

Permanent Install

If everything when well (you have faster speeds for USB2, on the PNY Drive), you'll need to boot into the Linux LiveUSB and get a hold of a root Terminal.

I'm not describing things like "How to copy Linux to a PenDrive" or "How to access the Linux terminal" as that can pretty easily be discovered online (maybe a lot of this can [recursive joke]). Most LiveUSB systems allow you to run Root commands by using "sudo command". Alternatively, you could run "sudo su" and skip typing the sudo command after that.

If you only have one Hard Drive, you device label will probably be "/dev/sda1" . The "1" stands for partition "1". An issue you might run into, is many Linux Distros and LiveUSB automatically mount things (it's rather upsetting). In Linux, drives get mounted to a folder. You may have familiar desktop icons/menus that lead to your Win98 Hard Drive. But we need to know the actual folder path and name. These auto-mounted drives often end up in places like /media/sda/long UUID name/here or something like that. Another location is /mnt.

Another note, is that you need to make sure the LiveUSB doesn't just boot from Grub2; it also needs to have the Grub2 installer.

Maybe a good candidate would be Debain/Devuan i386 minimal. The newest Debian/Devuan don't support 32bit systems any more. So, as of the time of writing this, you need to use the version released prior to the current.

The following assumes you have one partition and one Hard Drive. Otherwise, you'd need to sleuth a bit and make sure you not installing things in the wrong spot. If it is a dual boot machine, this would also cause problems. This advice is for a one O.S. (Win98) and one Hard Disk
machine.

There ase the command to run, once you've gathered all the needed information. You may need to prepend everything, with the sudo command.

mkdir /win98
mount -tvfat -osync /dev/sda1 /win98
grub-install --target=i386-pc --boot-directory=/win98 /dev/sda
echo "nativedisk pata" > /win98/grub/grub.cfg # only one ">" here
echo "set root=(ata0,msdos1)" >> /win98/grub/grub.cfg # from here on out you need two ">"
echo "set prefix=(ata0,msdos1)/win98/grub" >> /win98/grub/grub.cfg
echo "nativedisk ehci" >> /win98/grub/grub.cfg
echo "chainloader +1" >> /win98/grub/grub.cfg
"boot"
umount /win98
poweroff

If the Hard Drive is already mount, the win98 designation needs to be the folder/path of where your Win98 Hard Drive is mounted. In this case, you would ignore the above command lines with "mount" and "unmount".

The drive/partition designations "ata0,msdos1" need to match the discovered designations, from your test.

The commands prepended with "echo" can be skipped, if you have access to an editor ( Debian/Devuan minimal should have nano ).

With an editor, you could just add this to a text file, named grub.cfg, placing it in the prefix folder (the same folder i386-pc is in).

nativedisk pata
set root=(ata0,msdos1)
set prefix=(ata0,msdos1)/win98/grub
nativedisk ehci
chainloader +1
boot

 

Regarding Grub4dos: If you had tried Grub4Dos, and want to revert to booting without it, you can use "C:\FDISK /MBR", but not after installing Grub2; unless you want to get rid of that too (files on disk would still remain, needing manual deletion).

Notes: I only used "nativedisk ehci" because when attempting to include "nativedisk uhci" I couldn't get my machine to chainload the root target.

Don't use "nativedisk pata" unless you have to. If during the test, loading the Grub2 "ehci" driver did not remove your Hard Drive (from the results of "ls") then you shouldn't need nativedisk pata ( this would mean your drive was still shown as hd0 and not ata0 ).

If I get time, I'll did deeper into what's actually being changed here. Maybe a Dos MSR could be used in autoexec.bat, and completely relinquish BIOS USB control. Maybe someone has already come up with a handy little program?

Sorry, if the test did not work; and your PNY drive still functions poorly.

Edited by awkduck
Posted (edited)

@waltah Updated

For any developers out there: I noticed that Roadkil's disk speed test reports the USB Cached Speed as 43.16 MB/s, when things are working well. When things are real slow, the Cached Speed reports 1.4 GB/s. If the issue @waltah is having isn't BIOS related, maybe he could test that and give results ( not necessarily using Roadlik's test ).

Edited by awkduck
Posted (edited)

A useful result yesterday:  Just for kicks I disabled EHCI.   Speed for my 150 Mbyte test file went from 40-50 seconds to 3 minutes 5 seconds -- almost a 4:1 slowdown.   Conclusion:  The problem is not USB 2 under Win 98, it is all USB.   

That suggests a different focus.  It's not a negotiation failure or fallback, it's not EHCI, it's USB itself.  AI is attempting to help me understand that but it is slow going:  You're on your own to recognize blind alleys before spending too much time on them.  Often it'll propose a test but when handed results, get the conclusion wrong.  Or explain how to change something (in the Registry for example) which turns out not to exist.

A problem in the use of AI in legal work has been its tendency to make up false citations -- cases claimed to be precedental that simply don't exist.  That's got to be in the training materials -- maybe a student paper with fabricated cites?   It's harder to see how it happens in material researched to help with my USB speed question.  But I've had a lot of it in this quest.   No 'common sense,' no 'checking your work' -- how would it even do that?  Look in the Windows Registry to see if the value it wants to change is actually there?  Or is read by anyone else?   This tool is not ready to take over middle management or any but the most grunt-level programming tasks

Awk, I'm sorry but I don't do Linux.  This is a life-decision and I won't defend it.  I'm glad Linux exists but I won't go there again.   Also I only do new speed tests for special cases (like 'EHCI disabled') that may shed new light on what's wrong.   A ratio of over 5:1 in speeds on the same physical machine with the same USB drives changing only the HDD from Win 98 to XP is the only blanket speed data I need.  This represents the kinds of thing I do and is clearly unsatisfactory:  No other measurement is going to change that.  

The speed with the VIA card was in the same ballpark but I don't recall the exact number.   Since I haven't a slot for it long-term I didn't want to spend much effort in that direction, for example by buying an NEC card.  

I don't recall a BIOS setting for USB keyboard/mouse but I'll look and if there is one, I'll see what happens when I disable it.  I never use USB k/m on these old systems because I spend too much time with things messed up and USB HID = no HID.  

There isn't a legacy USB setting on the 4700s as I seem to recall on the 4600s.  

Lone C. said:

" Work and real life have a way of always preventing me from spending time on any of my computer related projects these days."

And when you retire, 'life' expands to take up the slack.  Fixing things that were someone else's problem in working days, health and physical limitations ... I wouldn't go back, but the rules in old age are just as strictly enforced as those of a career.  

I'm just real glad to see some familar names here.  

I'm feeling more optimistic about figuring this out.  Unless we can interest some driver writer out there it may not have a solution within Win 98 but we should be able to find the cause.  

Edited by waltah
Errors
Posted
1 minute ago, waltah said:

some driver writer out there gets interested

Looks like you have near to zero observation skills :lol: That of course tells enough but not in your favor.

Posted
8 hours ago, waltah said:

Awk, I'm sorry but I don't do Linux.

That's fine, with me. I do have a post, somewhere here, where I describe a way to use the modern Windows version of Grub2. It works the same; just different installation, on a system is was never meant to support.

Plop boot manager also has it's own USB driver. But I am not sure if you can even get it to initialize, unless you are actually going to boot off the USB drive.

You could also test, using Super Grub 2, no need for Linux. But it could only serve as a test, since it can't install Grub2.

Another option would be using a LiveXP ( or newer ) I sure there as still some of those floating around; then you could use the Win32 Grub2.

8 hours ago, waltah said:

I don't recall a BIOS setting for USB keyboard/mouse

I should've also mentioned, USB boot. You BIOS may have a boot order option. If it lists USB in the order, maybe the only way to disable it is removing USB from the list.

XHCI is USB1,2,3, EHCI is USB2 and UHCI/OHCI is USB1. Anything related to USB deviced ( not the hosts themselves ) could be related to Legacy USB.

9 hours ago, waltah said:

There isn't a legacy USB setting on the 4700s as I seem to recall on the 4600s.

There looks like there might be a option to disable USB boot and/or USB wake. But that was just a brief gaze of some documentation.

----

About AI, if a you spends some money ( on the better ones ) you can see them do some amazing work. I'm not really a fan of AI, but they are getting better. Right now, its mostly the user's understanding of what to expect out of it, and how to reach those realistic expectations. For now, Law is a bad place for it. But I imagine there are just as many winning cases by hallucination, as there are people getting caught with their pant down. But that's more in the ballpark of selling used cars; you can't expect people to not fudge the line. It just a matter of how desperate they are. 

Posted
On 3/1/2026 at 3:32 AM, awkduck said:

read speed of 45 megabits per second

This was my Sandisk USB3.2 running with the BIOS driver, in windows. With the Windows driver I maxed at 20 megabits per second. If I toyed with the format, I could probably get it up to 27. Really depends on if you are using all big files, or lots of small files. I run on this drive, so it is more geared for smaller file access.

Only bringing this up, because you shouldn't let the 45 megabits convince you to run out and buy one.  

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
  • Recently Browsing   0 members

    • No registered users viewing this page.
×
×
  • Create New...