That's a very weird and specific failure mode!
Anyone, including me, would have expected the CF support to be where things go wrong, even without considering the huge power draw making it unstable:
a) it has to detect that a card is present at all
b) it then switches to attribute memory space and parses enough of the Card Information Structure (CIS) to see it's an ATA card; I have written some rambling technical details earlier in the thread of how I first got the control port command for this to work by accident, and then gradually figured out how to do it properly
c) to actually read anything, it has to send sector number etc., and wait for a response from the card. This could time out, or return some error instead of the data we want.
For SRAM cards, step a is the same; it would then go on to attempt b, and conclude that it's probably an SRAM card when it either can't find a CIS, or it's different from what the documentation for ATA cards says it should be. The card is directly mapped into memory, and should work just like a RAM disk.
What
might have happened is that somehow, it didn't actually override the built-in driver for A:, but again I have no clue why. They should be identical! Or it's reading garbage data from the card, again no idea why.
I think I'll get started on writing some test program to get more information. That the CF card for some strange reason works seems like a really good opportunity to get a full ROM dump off the machine, I already have one for mine though it's the German language version.
***
warning, more technical rambling ahead that has no relevance to your problem. feel free to skip this!
***
I've been going through that ROM a bit, since your post somewhat rekindled my interest in figuring out more about this machine. The "slack space" at the end of files in the drive C: and D: images contains some directory entries that seem to be left-over garbage out of the disk buffers from whatever PC was used to build the ROMs. No source code, but some interesting file names:
Code:
Build environment:
attrib name .ext size date time cluster#
----D- BINARIES. / 1980-01-01 11:03:18 0849
----D- BIOS . / 1980-01-01 11:03:50 0D93
----D- BOOT . / 1980-01-01 11:04:22 13B6
----D- CMD . / 1980-01-01 11:04:24 13E7
----D- COMPRESS. / 1980-01-01 11:05:28 1F48
----D- DEV . / 1980-01-01 11:05:46 22CC
----D- DOCS . / 1980-01-01 11:06:34 2C22
----D- DOS . / 1980-01-01 11:08:24 4078
----D- LIB . / 1980-01-01 11:11:16 5A9F
----D- MESSAGES. / 1980-01-01 11:11:18 5B12
----D- MKIMAGE . / 1980-01-01 11:11:18 5B4A
----D- ROM . / 1980-01-01 11:11:20 5B9C
----D- ROMHEAD . / 1980-01-01 11:11:28 5D60
----D- ROMIMG . / 1980-01-01 11:11:28 5D74
----D- ROMLOAD . / 1980-01-01 11:14:08 794F
----D- TOOLS . / 1980-01-01 11:14:10 79A0
----D- GER . / 1992-08-20 12:54:54 61B7
----D- SPA . / 1992-08-20 12:54:56 61ED
----D- FRN . / 1992-08-20 12:54:56 6225
----D- RPP . / 1992-12-05 10:22:00 5EE4
----D- S-ICE . / 1992-07-21 15:05:26 0481 Soft-ICE?
----D- RPP .FRA / 1992-07-16 19:14:36 989F
----D- WORKS .FRA / 1992-07-16 19:14:32 989E
----D- FLOPBOOT. / 1992-05-19 22:23:28 5171
------ MAKE . 1194 1991-10-23 15:36:26 0848
------ ROMDOS .LOG 8298 1991-11-08 14:44:06 0831 log from DOS build process?
------ ROMESP3 .LOG 33857 1991-10-01 13:43:32 0837 another large log file
-----A TOMS .BAT 97 1992-01-09 17:20:12 677F To MS(-DOS)
-----A TODR .BAT 97 1992-01-09 17:20:36 6780 To DR(-DOS)
-----A MKTSTROM.BAT 842 1992-03-14 13:43:10 551E make test ROM
-----A ROMDISK .EXE 24940 1991-10-16 06:00:00 551F
-----A REBUILD .BAT 247 1991-11-22 17:08:10 52B5
-----A MK15ROM .BAT 513 1992-03-23 20:23:28 52B6
-----A APP .BAT 1268 1992-01-14 10:38:12 53F5
-----A HIGHLOW . 794 1991-08-20 11:31:40 4E23
-----A HIGHLOW .BAT 230 1991-08-20 11:31:40 4E24
-----A MAKEFILE. 1238 1992-05-01 09:36:10 4E1C
-----A MINIMUM . 864 1991-08-20 11:31:40 4E26
-----A MINIMUM .BAT 36 1991-08-20 11:31:40 4E27
-----A ROMIMG .TAG 480 1991-08-30 08:12:26 52D4
-----A ROM1 .ROM 212 1992-06-22 15:22:44 50C7
-----A ROM2 .ROM 189 1992-06-22 15:20:50 4F18
-----A ROM3 .ROM 247 1992-06-22 15:22:44 50C8
-----A ROM4 .ROM 125 1992-05-01 09:53:24 4E36
-----A ROMHEAD .LOC 71 1992-06-22 15:21:14 4F6C
-----A COMMAND .LOC 73 1992-06-22 15:21:20 4F87
-----A RESBIO .LOC 70 1992-06-22 15:21:22 4F8E
-----A ROMBIO .LOC 70 1992-06-22 15:20:58 4F2C
-----A ROMDOS .LOC 69 1992-06-22 15:20:58 4F2F
-----A ROMLOAD .LOC 72 1992-06-22 15:21:20 4F89
-----A ROMBOOT .LOC 71 1992-06-22 15:20:52 4F1B
-----A HEAD1 .LOC 64 1992-06-22 15:21:04 4F42
-----A RESCOM .LOC 67 1991-11-13 11:00:06 4F9C
-----A COPYB .BAT 37 1991-11-22 16:02:32 4F9D
-----A CHINESE .BAT 108 1992-03-18 20:00:32 4F9E
LiteOn (the company making optical drives?) keeps popping up, first seen in the special boot signature and now here:
-----A LITEON .BAT 525 1992-06-18 16:46:36 61C8
-----A LITEON .BAT 497 1992-06-22 15:38:58 6C44 another version
-----A LITEON .CHR 507 1992-06-18 14:36:42 630D
-----A LITEON . 983 1992-01-29 10:41:44 4F43
A few assembly source and object files:
-----A SPT15M .ASM 3501 1992-02-22 16:13:02 4FA0
-----A SPT512 .ASM 3510 1992-03-15 10:53:58 573F
-----A SPTCHRIS.ASM 3500 1992-06-18 13:43:08 2533
-----A SPTCHRIS.OBJ 897 1992-06-18 13:43:26 2535
-----A SPTCHRIS.EXE 2088 1992-06-18 13:56:06 2536
-----A SPTMSK .ASM 3515 1992-06-18 16:48:06 61C0
-----A SPTMSK .OBJ 808 1992-06-18 16:52:14 61C6
-----A SPTMSK .EXE 2043 1992-06-18 16:52:22 61C7
-----A SPT1MD .OBJ 802 1992-06-20 11:39:32 6669
-----A SPT1MD .EXE 2037 1992-06-20 11:39:38 666A
Various ROM images:
-----A LITEON .BIN 131072 1992-06-22 15:26:26 6127
-----A 480K .BIN 491520 1992-06-18 16:01:36 5873
-----A XT32T .BIN 32768 1992-04-21 20:10:56 52A5
-----A D000 .BIN 65536 1992-01-28 18:41:54 52D5
-----A LITE .BIN 524288 1992-05-13 15:13:28 52F5
-----A ROM2 .BIN 32768 1992-06-18 15:59:40 563A
-----A LITE .CHR 524288 1992-06-18 14:38:26 696B
-----A ROM1 .BIN 32768 1992-06-22 15:22:54 50D9
-----A TT .BIN 1048576 1992-06-20 18:03:42 7D4A
-----A WORKS3 .GER 524288 1992-06-22 12:20:56 995B
-----A WORKS1 .CHR 524288 1992-06-22 15:27:32 647F
-----A D800 .BIN 32768 1992-06-22 15:22:54 60E7 Boot loader and ROM-DOS code
-----A DOS .GER 524288 1992-06-20 18:04:38 8C35
Deleted files / directories:
----D- ?RJ . / 1992-08-21 18:08:08 0899 ARJ?
-----A ?PCGA .EXE 166347 1992-10-16 12:21:00 9448 RacePen
-----A ?PCGA .EXE 166356 1992-10-17 11:43:00 9639 another version
-----A ?SKENVIR.BAT 1068 1992-02-03 05:00:00 630C set up DiSK environment?
-----A ?OMENVIR.BAT 1014 1992-05-20 00:07:22 630D ROM environment?
-----A ?ETLANG .BAT 5580 1992-02-06 10:52:16 630E set language of ROM?
-----A ?ITEON .DR 681 1992-01-14 10:37:44 677E LITEON again
-----A ?R .NEW 524288 1992-01-10 11:45:14 6781 ROM disk image with DR-DOS?
-----A ?RIP .CHR 7241 1988-08-29 02:00:00 5419 font from Borland graphics library
-----A ?12K1 .BIN 524288 1992-03-22 15:16:12 541D ROM image
-----A ?T .BIN 524288 1992-04-21 20:22:14 552C ROM image
-----A ?12K .MS 524288 1992-01-15 17:00:26 562C ROM image, MS-DOS version
-----A ?T32T .OLD 32768 1992-01-08 14:15:32 572D BIOS?
-----A ?PT512 .OBJ 807 1992-03-15 10:54:20 5742
-----A ?OM3 .TMP 65536 1992-06-22 15:23:04 50EC
I've also found yet another way to run code from an inserted SRAM card on boot. This one doesn't even need a special boot sector, just a file that looks like an option ROM image anywhere in the first 16K. The BIOS will jump directly into it! Today such a thing would be considered a critical security issue
However when I tried it out, I could make it print a message to the screen and wait for a key to continue, but then it hung the machine. There may be some power management thing going on where it shuts off the card while waiting for the key press - would hope to figure out how to use this to make CF cards be more battery-friendly!