skiselev / 8088_bios

BIOS for Intel 8088 based computers
GNU General Public License v3.0
513 stars 61 forks source link

How to create a new bootable image for CF card for BOOK 8088 #59

Open Romfos opened 8 months ago

Romfos commented 8 months ago

Hi,

I know that you are not book 8088 support, but you are very experienced guys that probably could help

goal: Make bootable CF card (1GB) with fresh msdos 6.22

When I'm try to create empty image with MSDOS 6.22 - book 8088 is not able to boot on it. My modern notebook book is able to boot from this image I know that old system uses CHS system and probably this is source of the problem, but how can I configure it for my new CF card? I don't see any setup menu i bios for CHS config

Ranish Partition Manager show me that CHS is 933,33,63, but how can I check - what values are in bios? (CHS of original card (500mb) RPM show me as 933,16,63)

1) When I create new image in dosbox: IMGMAKE 8086_cga.img -t hd -nofs -force -chs 993,16,63 2) mount it IMGMOUNT 2 8086_cga.img -size 512,63,16,993 -t hdd -fs none 3) Boot from msdos 6.22 install disk BOOT disk1.img disk2.img disk3.img 4) Install msdos, next-next-next 5) burn image to CF card 6) copy additional software via default windows explorer ... boot failure

Thank you

TzOk83 commented 8 months ago

Clean the card (fill with 0x00) on a modern Windows or Linux PC, and put it in the target computer. Boot it from a floppy, make a primary bootable partition on it, and format the card with the system transfer (/s) option.

I have a 2GB CF card in my micro 8088 and it works fine, although having such a big partition on an XT class system is not the best idea (calculating free space takes forever).

Romfos commented 8 months ago

Sorry, but I cannot boot from floppy on target computer, because i don't have floppy for book 8088 I need to make it somehow from my pc

I've also tried to use VMware Workstation 17 Player, connected cf (next my card, 128gb) as pysical hdd and setup dos from here. but as the result - missing os. looks like it was abto to find boot sector, but not dos kernel

Romfos commented 8 months ago

I have a progress with my 128 GB card: I was able to find different datasheet with CHS data for CF cards of different sizes. One of them - works for my 128GB card: CHS 980,8,32 Now my 128gb card works correctly: boot successful, scandisk 0 error, no any problems with disk during the work

But 1gb card is still doesn't work For card with 1gb+ some datasheets have values with number of cylinders more then 1024. I think this is a source of problem. old bios just cannot correct recognize it. Actually i was able to boot from this card to msdos, but i had a lot of random disk errors later and system is not usable

maybe someone had this issue?

8 MB 2 32 245 16 MB 2 32 490 32 MB 3 4 32 490 64 MB 8 32 490 128 MB 1 8 32 980 256 MB 16 32 980 512 MB 16 63 993 1024 MB 63 1,986 2048 MB 16 63 3,970 4096 MB 16 63 7,964

TzOk83 commented 8 months ago

Try to write this image on your card (this image is 512MB, but may be written to a bigger CF card. Preferably use DD (under Linux) or HDD Raw Copy (under Windows) to write this image. cf_dos_5.zip

Romfos commented 8 months ago

@TzOk83 this image is bootable, but later it has disk errors for example if after boot open edit and then exit from edit, i see this error

20231211_193007

TzOk83 commented 8 months ago

It is not a disk error, it is a lack of properly set environment variables. This disk is bootable but doesn't have a complete installation of DOS. Before using it, you must set up a DOS or any other period-correct operating system. Setting up a DOS system is not a point-and-click task...

You may hook this disk to VMware or VirtualBox to set up MS-DOS from floppy images. If you want a "clean start" you may format the C: partition, but the one thing you should not do is alter partitions. So do not use FDISK or any other partition editing software.

Romfos commented 8 months ago

I think that it is not not correct conclusion, see

20231211_233855

1) dir 2) edit config.sys no changes, exit from editor 3) edit autoexec.bat error: system halted

I think this is happens because wrong CHS geometry and some sectors are wrong addressed, then i catch this error

when i did: 1) format c: /s 2) upload program to this partition

result: the same. random disk errors

Yrouel commented 8 months ago

I ended up using an external ISA controller and a Gotek. My go to solution would be to use Rufus to make the disk bootable (it can make actual MS-DOS disks now) but it uses as a source a floppy image meant for Windows Me so DOS 7.1 which I don't think would boot on a 8088.

There is a fork of this repo which has floppy emulation as an extra feature which would be nice if it got merged here, that would solve this issue

tingtron commented 8 months ago

I am having a similar issue with Book 8088: the provided 512Mb card has too big partition and every dir or file operation takes forever (10+ seconds). So trying to use a 32Mb card.

But getting "Missing operating system" on boot. This exact error is from the MBR. (I know because I had a German card and it showed a German message from the MBR.) So the card is read, but the it cannot find the Partition correctly.

In general, anyone should be able to recreate a CF card in case one is corrupted. But it's a mystery what is expected for the card partitioning and how such a CF card can be created.

I don't have a floppy for Book 8088. (It has USB storage, but the driver is on the CF card, which cannot boot. Chicken and egg.) So I used VirtualBox with a flat VMDK to install MS-DOS 5 from a floppy image on it.

Then I wiped the CF card with zeros:

dd if=/dev/zero of=\\?\Device\Harddisk1\Partition0 bs=100k --size --progress

Then transferred the flat VMDK to the raw CF card device:

dd if=Book8088_30.6-flat.vmdk of=\\?\Device\Harddisk1\Partition0 bs=100k --size --progress

The resulting disk is booting to VirtualBox, and is read/written normally by the host Windows. But getting "Missing operating system" on boot in Book 8088.

I am suspecting that the CHS geometry resulting from such method may not map correctly to the CF card. Or is the CHS geometry is somehow in the CMOS or is it expecting something fixed?

@TzOk83 - What is so magical about cf_dos_5? And how can it be produced for 32Mb?

tingtron commented 8 months ago

Here's a diff in MBR/PAT between the disk image created in VirtualBox and cf_dos_5. image

tingtron commented 8 months ago

And there's the info with the CHS geometry: 62,16,63. Maybe that's what could be selected differently with VBoxManage.

Something along these lines: Geometry of imported disk images

# Disk DescriptorFile
version=1
CID=2797ad9c
parentCID=ffffffff
createType="monolithicFlat"

# Extent description
RW 62668 FLAT "Book8088_30.6-flat.vmdk" 0

# The disk Data Base 
#DDB

ddb.virtualHWVersion = "4"
ddb.adapterType="ide"
ddb.uuid.image="d641ac7d-1d47-4a19-bdaf-d6477fee36a3"
ddb.uuid.parent="00000000-0000-0000-0000-000000000000"
ddb.uuid.modification="1c6e70fe-0095-429b-bfa3-f3632e163d78"
ddb.uuid.parentmodification="00000000-0000-0000-0000-000000000000"
ddb.geometry.cylinders="62"
ddb.geometry.heads="16"
ddb.geometry.sectors="63"
ddb.geometry.biosCylinders="62"
ddb.geometry.biosHeads="16"
ddb.geometry.biosSectors="63"
TzOk83 commented 8 months ago

I think this is happens because wrong CHS geometry and some sectors are wrong addressed, then i catch this error

I remember having similar troubles, until I locked new drives from mounting in Windows, zeroed the CF card using DMDE, put it into Micro8088, booted from MS-DOS 5 floppy, and used FDISK, FORMAT, and SYS to create the partitions, format them, and transfer system files to the first one.

Just create an MBR and partition table using FDISK from MS-DOS 5.0 (or earlier) boot disk.

I have noticed a different partition ID (01BE+04) on my and your image (06h vs. 04h).

My Image has the following PTE for the 1st partition: 80 01 01 00 06 0F 3F F7 3F 00 00 00 41 D0 03

Which means: 80: Partition is active (bootable) 01: First Head = 1 01: First Sector = 1 00: First Cylinder = 0 06: FAT16b partition table 0F: Last Head = 16 3F: Last Sector = 63 F7: Last Cylinder = 247 3F: First LBA = 63 00: " 00: " 00: " 41: Total sectors = 249921 (x 512 B = 122 MB) D0: " 03: "

tingtron commented 8 months ago

@TzOk83 - When you "locked new drives from mounting in Windows" -- How do you insert the CF to Windows (as CF or via an IDE adapter)?

If I use a USB CF card reader (like SD reader), it's recognized as a Removable device, and it cannot be Off-lined. Earlier for a different old laptop, I used a CF-IDE adaptor inserted into an IDE-USB adaptor, which allowed Off-lining and creating a Physical virtual drive for VirtualBox. I am wondering if I should to that here too.

tingtron commented 8 months ago

So next I used this CF-IDE enclosure with IDE-USB interface, and created a virtual physical drive for VirtualBox and did fdisk and installed MS-DOS 5.

Still getting "Missing operating system".

Could it be CF card model compatibility?

image

tingtron commented 8 months ago

Note this card is read and booted from in HP 200LX. Although it's treated like a removable drive (not hard drive)

(There are config errors, but it boots and runs config.sys)

image

tingtron commented 8 months ago

@TzOk83 I have noticed a different partition ID (01BE+04) on my and your image (06h vs. 04h).

The Partition Type at 01BE+04:

So it makes sense for my 32Mb card. But it's something that 8088 might get confused with.

So it is worth trying a 64Mb card.

tingtron commented 8 months ago

A few additional failed experiments: In these cases the card was zero'd, and raw copied raw disk (starting with MBR) using DD.

Also tried copying the larger known 512Mb cards to 64Mb:

Attached diff between cf_dos_5.img and the original 512Mb CF "TEST_IDEDOM"

lpsantil commented 8 months ago

I got my Book8088 but haven’t taken the time to clone the drive yet. Have you tried that?

For the free space/dir issue, consider https://github.com/ChartreuseK/FREESP

On my HB8088, I just live with the long dir pause.

tingtron commented 8 months ago

to clone the drive yet. Have you tried that?

I don't have another 512Mb card. Cloning to 64Mb failed (see above) I can also try to clone to a larger CF card.

I wonder if using the latest BIOS ROM from here or jinshin/8088_bios would resolve these CF issues.

TzOk83 commented 8 months ago
  • the amount of code in MBR is twice as large

This will have something to do with the apparent two versions ("classic" and "modern") of the MBR mentioned there: https://en.wikipedia.org/wiki/Master_boot_record

The long pause after DIR seems to happen only once, after first using this command.

I remember finding one particular MBR that wouldn't boot on i8088.

My image holds 4 122MB primary partitions, so the card needs to be at least 128MB to fit the first (boot) partition.

TzOk83 commented 8 months ago

When you "locked new drives from mounting in Windows" -- How do you insert the CF to Windows (as CF or via an IDE adapter)?

In an elevated command prompt type "mountvol /n" to disable the automatic mounting of newly recognized volumes (if it was mounted before, it still will be mounted, unless you manually remove its mounting point). DMDE which I used to blank out the card, doesn't require a volume to be mounted. I'm using a USB CF card reader.

lpsantil commented 8 months ago

to clone the drive yet. Have you tried that?

I don't have another 512Mb card. Cloning to 64Mb failed (see above) I can also try to clone to a larger CF card.

Of course cloning a 512MB card to a 64MB card would fail. I don’t see evidence of you cloning the Book8088 card to a file and inspecting that or booting that in Virtual Box.

What I’m suggesting is dd if=/dev/<512MB CF in adapter> of=512MB.img bs=512

fdisk 512MB.img

tingtron commented 8 months ago

@lpsantil, @TzOk83 - Thank you for responding and ideas. Here's the fdisk details.

One strange observation: why the OEM CF has End-C/H/S=61/254/63. So it has 255 heads? The other CFs have end heads as 15. So 16 heads as in VMDK above.

Is this head geometry configured somewhere in BIOS or CMOS - can it be changed?

The Book 8088 OEM card "TEST_IDEDOM":

$ fdisk -l --bytes -o +Start-C/H/S,End-C/H/S Book8088_512.dsk
Disk Book8088_512.dsk: 488.76 MiB, 512483328 bytes, 1000944 sectors
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disklabel type: dos
Disk identifier: 0x00000000

Device            Boot Start    End Sectors      Size Id Type  Start-C/H/S End-C/H/S
Book8088_512.dsk1 *       63 996029  995967 509935104  6 FAT16       0/1/1 61/254/63

@TzOk83 card with 4 partitions:

$ fdisk -l --bytes -o +Start-C/H/S,End-C/H/S /h/2/cf_dos_5.img
Disk /h/2/cf_dos_5.img: 502.3 MiB, 526417920 bytes, 1028160 sectors
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disklabel type: dos
Disk identifier: 0x2719abc2

Device             Boot  Start     End Sectors      Size Id Type  Start-C/H/S  End-C/H/S
/h/2/cf_dos_5.img1 *        63  256031  255969 131056128  6 FAT16       0/1/1  253/15/63
/h/2/cf_dos_5.img2      256032  512063  256032 131088384  6 FAT16     254/0/1  507/15/63
/h/2/cf_dos_5.img3      512064  770111  258048 132120576  6 FAT16     508/0/1  763/15/63
/h/2/cf_dos_5.img4      770112 1027151  257040 131604480  6 FAT16     764/0/1 1018/15/63

My 64 Mb CF card created in VirtualBox and installed MS-DOS 5:

$ fdisk -l --bytes -o +Start-C/H/S,End-C/H/S CF64_disk.dsk
Disk CF64_disk.dsk: 61.51 MiB, 64487424 bytes, 125952 sectors
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disklabel type: dos
Disk identifier: 0x00000000

Device         Boot Start    End Sectors     Size Id Type  Start-C/H/S End-C/H/S
CF64_disk.dsk1 *       63 124991  124929 63963648  6 FAT16       0/1/1 123/15/63
TzOk83 commented 8 months ago

The responsibility of recognizing the disk geometry is in the XTIDE Universal BIOS (XUB).

The original IDE specification does not support a 16-bit cylinder count (max cylinder should be 0FFh/255). A greater number of cylinders is only possible with a 28-bit IDE (EIDE), but it doesn't seem to be an issue with the XUB.

tingtron commented 8 months ago

@TzOk83

does not support a 16-bit cylinder count (max cylinder should be 0FFh/255)

So that may explain why the OEM CF card has 255 heads to lower the cylinder count.

But in the cf_dos_5.img, the cylinders go up to 1018. Or as long as the first partition is up to 255, it may still be OK?

TzOk83 commented 8 months ago

This is a partition table of a card I normally use in my Micro8088: obraz An this is its MBR: obraz

tingtron commented 8 months ago

I have a 2GB card, which has a partition with 1014 cylinders and 63 heads.

$ fdisk -l --bytes -o +Start-C/H/S,End-C/H/S CF_2GB.dsk
Disk CF_2GB.dsk: 1.98 GiB, 2097930240 bytes, 4097520 sectors
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disklabel type: dos
Disk identifier: 0x00000000

Device      Boot Start     End Sectors       Size Id Type      Start-C/H/S  End-C/H/S
CF_2GB.dsk1 *       63 4092479 4092417 2095317504  b W95 FAT32       0/1/1 1014/63/63

If it's a blank disk, there's no partition info

$ fdisk -l --bytes -o +Start-C/H/S,End-C/H/S SanDisk32b_zero.dsk
Disk SanDisk32b_zero.dsk: 30.64 MiB, 32112640 bytes, 62720 sectors
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes

which I assume, mean wiping a CF card with zeros, and DD a new image would result in new geometry regardless of the target CF card (as long it fits it or larger.

TzOk83 commented 8 months ago

Erasing a card before writing an image has no point. You need to partition it on a target system if its BIOS, for whatever reason, is incompatible with the addressing scheme used on the image. What version of XUD (XTIDE Universal BIOS) are you using?

tingtron commented 8 months ago

The XTIDE BIOS screenshot shows version as:

XTIDE @ F000h
r625 (2023-02-19)

Copying the OEM CF card (512Mb) to a 2GB card, which works fine on the host Windows, gives very strange errors when booting on Book 8088:

Master at 300h: not found
Booting C>C
Error 1h!

The resulting 2GB card has fdisk:

$ fdisk -l --bytes -o +Start-C/H/S,End-C/H/S CF_2GBb.dsk
Disk CF_2GBb.dsk: 1.98 GiB, 2097930240 bytes, 4097520 sectors
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disklabel type: dos
Disk identifier: 0x00000000

Device       Boot Start    End Sectors      Size Id Type  Start-C/H/S End-C/H/S
CF_2GBb.dsk1 *       63 996029  995967 509935104  6 FAT16       0/1/1 61/254/63

Compared with the original OEM 512 Mb CF - the partition looks the same (except the parent disk size):

$ fdisk -l --bytes -o +Start-C/H/S,End-C/H/S Book8088_512.dsk
Disk Book8088_512.dsk: 488.76 MiB, 512483328 bytes, 1000944 sectors
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disklabel type: dos
Disk identifier: 0x00000000

Device            Boot Start    End Sectors      Size Id Type  Start-C/H/S End-C/H/S
Book8088_512.dsk1 *       63 996029  995967 509935104  6 FAT16       0/1/1 61/254/63
tingtron commented 8 months ago

Error booting 2GB CF copied from the OEM disk:

image

TzOk83 commented 8 months ago

Maybe this will help: obraz

explit7 commented 8 months ago

As i know, the CF Card need to be created on XT, to be readable in XT. My 2GB CF card, which i use on my 386sx PC can't boot on Micro8088.

I have another 1GB CF Card in my Micro8088 with MS-DOS 6.22, if it would help, i can upload the image somewhere.

TzOk83 commented 8 months ago

It would work as long as the CF card was partitioned using the same XT-IDE adapter, or at least using XUD running on a 386. BTW I'm using Monotech XT-CF-Mini ISA adapter.

explit7 commented 8 months ago

Well, that can be the case. In my Micro8088 i have Lo-tech XTIDE Lite, in the 386sx i use OnBoard IDE-Controller and XTIDE BIOS on the 3c509B ISA LAN Card.

tingtron commented 8 months ago

@explit7 Thank you for offering the image. If it's zipped, it should be a couple of Megs, just like the cf_dos_5.zip above. If you drag it into this message, it will automatically attach like a picture.

tingtron commented 8 months ago

Is it possible to boot the Book 8088 v2 from the USB? Such as using DD (raw copy) with a 1.44 floppy image to the top of it?

tingtron commented 8 months ago

For the record, here's a partition created by Windows, which would be most likely unusable by XTIDE.

$ fdisk -l --bytes -o +Start-C/H/S,End-C/H/S CF_2GBc.dsk
Disk CF_2GBc.dsk: 1.98 GiB, 2097930240 bytes, 4097520 sectors
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disklabel type: dos
Disk identifier: 0x00000001

Device       Boot Start    End Sectors      Size Id Type            Start-C/H/S End-C/H/S
CF_2GBc.dsk1        128 262271  262144 134217728  e W95 FAT16 (LBA)       0/2/3   16/83/3
explit7 commented 8 months ago

@explit7 Thank you for offering the image. If it's zipped, it should be a couple of Megs, just like the cf_dos_5.zip above. If you drag it into this message, it will automatically attach like a picture.

It to big to attach it here, but i put the compressed 1GB Micro8088 CF Image on DropBox. Here is the link: https://www.dropbox.com/scl/fi/63mzamn3lg8jbo3hd0dca/Micro8088_1GB.zip?rlkey=1mcs3qlrx5pevkviudlpxhnkw&dl=0

tingtron commented 8 months ago

Thank you. The exercise well worth the effort. It worked: copied with DD onto a 4Gb card. Note; Windows detected disk issue and recommended disk scan, and fixed it.

The partition info for the 1Gb drive:

$ fdisk -l --bytes -o +Start-C/H/S,End-C/H/S Micro8088_CF1G.img
Disk Micro8088_CF1G.img: 977.5 MiB, 1024966656 bytes, 2001888 sectors
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disklabel type: dos
Disk identifier: 0xaed85e7f

Device                   Boot Start     End Sectors       Size Id Type  Start-C/H/S  End-C/H/S
/h/2/Micro8088_CF1G.img1 *       63 1999871 1999809 1023902208  6 FAT16       0/1/1 123/254/63

Compared with the original OEM 512 Mb CF - the geometry looks similar (except cylinder count and the parent disk size):

$ fdisk -l --bytes -o +Start-C/H/S,End-C/H/S Book8088_512.dsk
Disk Book8088_512.dsk: 488.76 MiB, 512483328 bytes, 1000944 sectors
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disklabel type: dos
Disk identifier: 0x00000000

Device            Boot Start    End Sectors      Size Id Type  Start-C/H/S End-C/H/S
Book8088_512.dsk1 *       63 996029  995967 509935104  6 FAT16       0/1/1 61/254/63
lpsantil commented 8 months ago

Error 1h from XTIDE [0] means drive is plugged into wrong connector on cable, OR ,you have the CF card(s) set to the wrong Master/Slave/Cable Select setting for the Book8088. If you can't adjust it, then maybe the CF card is not compatible. You likely need a CF card set to Master, or if you're lucky, Cable Select.

[0] https://forum.vcfed.org/index.php?threads/xt-ide-lo-tech-and-error-1h.74922/

tingtron commented 8 months ago

@lpsantil

Error 1h from XTIDE [0] means drive is plugged into wrong connector on cable, OR ,you have the CF card(s) set to the wrong Master/Slave/Cable Select setting for the Book8088

The insight about the Error 1h! and the CF card Master/Slave compatibility is a very useful bit of information. Book 8088 does not expose a physical IDE connector, and the CF probably has an internal CF-IDE interface, which apparently expects a Master CF card.

I looked up various threads about using CF cards in period PCs and CF-IDE adapters, and there are many issues esp. with no-name brands. And those problem cards would present themselves as Slave and not Master.

To verify this point, I copied the OEM 512 Mb CF image into this 4Gb card that worked with the 1Gb image above, and it worked as well. So my 4Gb Transcend happens to a a good card. (Too bad to waste its 4Gb, and though it's fast, it has speed drops, and reported low seek read and write times.)

And the previously tested 2Gb Onefavor card is not compatible.

lpsantil commented 8 months ago

Error 1h from XTIDE [0] means drive is plugged into wrong connector on cable, OR ,you have the CF card(s) set to the wrong Master/Slave/Cable Select setting for the Book8088

The insight about the Error 1h! and the CF card Master/Slave compatibility is a very useful bit of information. Book 8088 does not expose an IDE connector, and the CF probably has an internal CD-IDE interface, which apparently expects a Master CF card.

Wrong. The Book8088 exposes IDE interface because CF cards are IDE devices just like a regular hard drive (and are pin compatible but obviously not form factor compatible). CF to IDE adapters are pass through (even possibly completely passive) boards passing the IDE 40 Pin & either Molex or Berg Power connector. Also, it uses XT-IDE BIOS ROM which is another giveaway.

I'm not sure what you mean by a "CD-IDE" interface.

CF cards are not like the Flash on SD cards. There is a little controller in each (https://youtu.be/RvTEh9FhSz4).

I looked up various threads about using CF cards in period PCs and CF-IDE adapters, and there are many issues esp. with no-name brands. And those problem cards would present themselves as Slave and not Master.

In the old days, many "name" brands were less compatible than others. I like PhilsComputerLab's recommendation here to stick with Industrial marked CF (https://www.vogons.org/viewtopic.php?t=40380). My guess is that Industrial CF assumes the least about the host machine and forces itself into the most compatible mode.

To verify this point, I copied the OEM 512 Mb CF image into this 4Gb card that worked with the 1Gb image above, and it worked as well. So my 4Gb Transcend happens to a a good card. (Too bad to waste its 4Gb, and though it's fast, it has speed drops, and reported low seek read and write times.)

And the previously tested 2Gb Onefavor card is not compatible.

Glad to see you got it to work. My guess here is that the 2GB is missing some compatibility mode. I have the same issue with some SD to CF adapters I bought. The SD-CF Adapter works fine in chain of CF-IDE adapter, IDE-USB adapter on Fedora 38. But, my XT-IDE adapter card does not like the SD-CF Adapter as it is missing some compatibility mode.

tingtron commented 8 months ago

Wrong. The Book8088 exposes IDE interface

I specifically said "IDE connector" not "IDE interface". I now edited to say "physical IDE connector". This is to say that there is no way to use a CF-IDE adapter and select a Master jumper, like in some laptops to replace a spindle PATA drive.

tingtron commented 8 months ago

It's fascinating how it's completely random which cards would work.

Finally also the cf_dos_5 512 Mb image with 4 128 Mb partitions worked on both those OK cards above. Note: cf_dos_5 CHS geometry is 253/15/63 (15 heads), while both OEM and the 1 Gb CF have C/254/63 (254 heads).

Also with 15 heads was my previous 64 Mb drive created in VirtualBox. So copying it onto the 128 Mb no-name "Car" ... And ... it freakin' WORKS! (as in Digital Basement)

So, No - you don't need to partition the card on the physical machine, it can be imaged from a disk file made in VirtualBox. But, Yes - you need a compatible CF card.

Thank you, @TzOk83, @explit7 and @lpsantil for collectively contributing to this effort.

TzOk83 commented 8 months ago

Ok, I never thought about that. I'm mostly using SanDisk Extreme cards (1GB-4GB), but I also have some industrial CF cards, namely Pretec, and Wintec (both 512MB).

This is to say that there is no way to use a CF-IDE adapter and select a Master jumper

True, but you could set XUB to look also for a SLAVE drive @ 300h.

tingtron commented 8 months ago

@TzOk83 Your cf_dos_5 image was very instrumental in chasing the issues with the CF cards. It has four 128 MB Primary partitions on a 512 MB disk.

I was trying to re-create a similar setup of 4 Primary partitions on a 128 MB card (32 MB each). But so far no luck:

Could you shed some light on the magic of creating recognizable 4 Primary partitions?

Note: I wasn't aware of the 1M boundary (1024x1024 bytes or 2048 sectors), so I padded them side by side, and the first one wasn't ending on the 1M either. Not sure if that plays a role. E.g. for the 2nd Start-Sector I selected 63504, whereas the next 1M boundary is 65536.

Here's the 128 MB resulting layout:

Disk CF_128-flat.dsk: 123.51 MiB, 129499136 bytes, 252928 sectors

Device           Boot  Start    End Sectors     Size Id Type
CF_128-flat.dsk1 *        63  63503   63441 32481792  4 FAT16 <32M
CF_128-flat.dsk2       63504 126944   63441 32481792  4 FAT16 <32M
CF_128-flat.dsk3      126945 190385   63441 32481792  4 FAT16 <32M
CF_128-flat.dsk4      190386 252927   62542 32021504  4 FAT16 <32M

cf_dos_5 acting normal

image

CF_128-flat.dsk very strange with the first partition moved to the 4th place. The first partition still boots and works. But the other partitions are inaccessible.

image

image

tingtron commented 8 months ago

Sometimes partitioning issues are resolved in MS-DOS 6.22 with fdisk /mbr. I remembered that the new Primary partitions were actually formatted as "FAT" in Windows, and were usable in Windows normally. And I wanted to experiment with different cluster sizes (1k, 2k, 4k).

After fdisk /mbr and reboot. And after formatting drive D: in MS-DOS 6.22 - it recognizes the formatted partition as FAT16.

image

TzOk83 commented 8 months ago

All I remember, is that: a) I had to use a card not "initialized" under Windows. b) I needed to do the partitioning on the target system (or at least under a XUB controlled CF ISA adapter). c) I needed to use a FDISK version without FAT32 support (so, not a Windows 95 boot disk).

FDISK will not overwrite the partition table if it has a correct signature.

The first partition on the list is the one which is set ACTIVE.

tingtron commented 8 months ago

Thank you for sharing the steps. Do you remember what tool was used for partitioning? The MS-DOS FDSIK (both 5 and 6.22) does not allow creating multiple Primary partitions.

Another odd observation, while trying to match the recommended 1MB (1024x1024) boundary for flash cards (see those numbers below, which are multiples of 2048 512-byte sectors),

2048 x  31 = 63488

2048 x      32     63     94
     =   65536 129024 192512

The CHS geometry is now all over the place.

Disk CF_128-flat.dsk: 123.51 MiB, 129499136 bytes, 252928 sectors

Device           Boot  Start    End Sectors     Size Id Type       Start-C/H/S End-C/H/S
CF_128-flat.dsk1 *        63  65535   65473 33522176  4 FAT16 <32M       0/1/1   4/20/16
CF_128-flat.dsk2       65536 129023   63488 32505856  4 FAT16 <32M     4/20/17    8/7/63
CF_128-flat.dsk3      129024 192511   63488 32505856  4 FAT16 <32M       8/8/1 11/250/47
CF_128-flat.dsk4      192512 252927   60416 30932992  4 FAT16 <32M   11/250/48 15/189/46

Where as in cf_dos_5 each partition aligns at the CHS geometry at the cylinder boundary C/15/63. This corresponds to 16 heads and 63 sectors.

Disk cf_dos_5.img: 502.3 MiB, 526417920 bytes, 1028160 sectors

Device             Boot  Start     End Sectors      Size Id Type  Start-C/H/S  End-C/H/S
/h/2/cf_dos_5.img1 *        63  256031  255969 131056128  6 FAT16       0/1/1  253/15/63
/h/2/cf_dos_5.img2      256032  512063  256032 131088384  6 FAT16     254/0/1  507/15/63
/h/2/cf_dos_5.img3      512064  770111  258048 132120576  6 FAT16     508/0/1  763/15/63
/h/2/cf_dos_5.img4      770112 1027151  257040 131604480  6 FAT16     764/0/1 1018/15/63

Apparently the Linux fdisk did not infer the heads count (to be originally 16) and used the 255 heads value.

There is a command-line parameter to specify heads for the CHS geometry.

And Linux fdisk has a very useful feature to save, edit and re-apply an "fdisk script", which only records linear sectors. So after specifying the heads of 16, the resulting CHS looks more reasonable, still with 1MB boundaries

Disk CF_128-flat.dsk: 123.51 MiB, 129499136 bytes, 252928 sectors

Device           Boot  Start    End Sectors     Size Id Type       Start-C/H/S End-C/H/S
CF_128-flat.dsk1 *        63  65535   65473 33522176  4 FAT16 <32M       0/1/1   65/0/16
CF_128-flat.dsk2       65536 129023   63488 32505856  4 FAT16 <32M     65/0/17 127/15/63
CF_128-flat.dsk3      129024 192511   63488 32505856  4 FAT16 <32M     128/0/1 190/15/47
CF_128-flat.dsk4      192512 252927   60416 30932992  4 FAT16 <32M   190/15/48 250/14/46
lpsantil commented 8 months ago

IIRC, you want to honor 1MB boundaries on partition starts sectors. I think it is expected that the geometry will look unnatural when compared to hard drives.