Products > Embedded Computing
Replacing Disk-on-chip on a PC104 board
popcalent:
Hi, all. I have a 386 based PC104 board that came with an 8MB Disk-on-chip (DOC) as unit C: with MS-DOS 6.22. It works great. I recently bought a 64MB DOC to upgrade the system. According to the manual, the PC104 supports DOCs up to 128MB. I replaced the DOC and the PC104 doesn't see it. I tried formating it from MS-DOS using "format c: /s", and it said "Invalid drive specification". I imagine the new DOC needs some firmware to tell it it should work as a MSDOS drive, but I can't find any information on the internet on how to do this. Can someone help, please?
The 8MB DOC: https://ibb.co/X2d2Jjm
The 64MB DOC on the PC104: https://ibb.co/vz9fTvL
Output of the format command: https://ibb.co/K5yyXVL
DavidAlfa:
It seems you need custom tools.
Check if these exist in your system:
--- Quote ---DFORMAT.EXE to prepare
DUPDATE.EXE to write a new bootimage (.EXB file)
DOCPMAP.EXE to read/write images
DINFO.EXE to show information
DPROTECT.EXE to make it read-only
UNMOUNT.EXE to „eject“ a DOC from system (maybe useful for handhelds?)
DDEFRAG.EXE obvious what this does
--- End quote ---
https://www.os2museum.com/wp/diskonchip/
popcalent:
Thanks. This looks promising. I used DINFO.EXE and it finds the DOC at physical address 0xC8000, and it prints some information about it (including the correct size of 64MB). Unfortunately, DFORMAT.EXE is not working and it returns a "DOC not found" message.
According to DINFO, the DOC is at physical address 0xC8000, but all examples I see of DFORMAT, they use address D000. For example: DFORMAT /WIN:D000, which is not an address the same size I'm seeing. Am I missing something, if physical address is 0xC8000, I should do "DFORMAT /WIN:C8000", correct?
Edit: Apparently, C8000 means C800. The correct command is DFORMAT /WIN:C800 /S:file.EXB.
fzabkar:
--- Quote from: popcalent on October 13, 2024, 09:47:14 pm ---Edit: Apparently, C8000 means C800. The correct command is DFORMAT /WIN:C800 /S:file.EXB.
--- End quote ---
0xC8000 is the address, 0xC800 is the segment.
0xC8000 = 0xC800:0
https://en.wikipedia.org/wiki/X86_memory_segmentation
PA0PBZ:
Segment C800 is (was) the standard address for a disk controller card in the old days, anyone remember G=C800:5? ;)
Since the address selector is outside the DOC the 8MB one should also present itself at C800, did you verify that?
I guess D000 is the segment for an additional drive.
Navigation
[0] Message Index
[#] Next page
Go to full version