Drives and partitions First of all, I read the instruction and initialized the card with INSTALL.BAT. I got a 22M partition, and a lot of unpartitioned space (1G minus 22M). Later I discovered that DISKMAN.COM tool can add new partitions, 360K to 22M in size, one of which I can choose to be mapped as A: drive. All these additional partitions (up to 256M in total, as diskman tool permits, so I still cannot use the whole card) are not visible if I insert SD card into PC, and can be accessed only via DiskMan.exe tool. DiskMan.exe (Windows tool) can choose disk image, create a partition for it on a card and copy the image into the card. The last added disk image becomes the active one, but the tool won't let you select the active partition by it's number. DISKMAN.COM tool on MSX can create new partition for a disk image, but cannot copy the image into the partition (how can I do that on MSX ?). The advantage of DISKMAN.COM over DiskMan.exe is the ability to select the active partition. After mapping a partition with disk image to A:, if you have there software that autostarts on boot, you may loose ability to boot into DOS on your system partition again. In this case I eject the card - this reboots into built-in flash drive, then re-insert the card and run UTILS\XCHGMMC.COM to map A:,B: and C: back to the card, and then run DISKMAN.COM to map system partition to A: . All this sequence seems too long IMHO, am I doing anything wrong ? If I will have a big number of disk images placed as partitions on a card, this switching may become a pain in the butt. Running software. Floppy images: The only way I discovered is, as I wrote above, use DiskMan.exe Windows to create a image-sized partition and put disk image into it. Small ROMs: I couldn't make the built-in on the flash drive ROMLOAD.COM tool to run anything, even smallest ROMs. I downloaded EXECROM and it worked OK. MegaROMs: it seems there is no tool that can use the cartidge's mapping abilities to run a MegaROM. The only way I found is to use a cracked versions - COM for DOS or sets of BIN files for Basic. Here comes my lack of knowledge in DOS2. I tried to use some games that on regular MSX with floppy drive (and DOS1) required to press CTRL at boot time to be able to run them. With DOS2 and CTRL pressed they don't want to run (why ?) I had to press SHIFT to disable DOS2 and other drives to run the games, but this means I have to put each game on it's own DOS1 image/partition and activate with DISKMAN.COM each time I need them, and switch to system or other partition after usage. Not too convenient IMHO. You can flash roms into the flashrom but: 1) you must use other medium then SD card for flashing the rom. As accessing the SD card requires the ROM you want to flash over ... 2) use ROMLOAD.exe to flash any rom into the AT29c040A Flashrom. 3) it must use SCC mapping otherwise it will not work. There is no patching done by romload (as far as I know) to SCC rom mapping. I have a partition of 22M with DOS1 and it works fine. You cannot use sub directories however. You need the numpad in combination with the stop key. So if you span disks across one partition then you can select with the numpad keys between disks. You can allways email sharksym if he can update his rom to support other numeric keys ... How do you get the system disk to work during startup? You need to press the 0 then -------------------------------------------------------------------------------- How do you get the system disk to work during startup? You need to press the 0 then -------------------------------------------------------------------------------- I told you - I have to eject + reboot + insert + run XCHGMMC.COM DISKEXE.COM tool, which permits to select one of 9 disks inside a partition (analog of STOP + numpad number). It could be a perfect solution for the switching problem, but it works only under MSXDOS2 How to start: 1 put in the SD drive with no SD card in it in the MSX into a primary slot. Expanded does not work 2 after machine is started type: install and hit enter key 3 insert SD card which you want to initialize (warning all previous data gets lost 4 choose the size of the system disk. If you want to put a lot of files on it choose 23 Mb especialy if you will use DOS2. Other wise you can choose a smaller size This system disk is accessible by windows as a normal partition. 5 After choosing the size hit A key and press any key 6 initialization is done 7 enter diskman and press enter key 8 enter the size of your SD card. Note you can only use 256 Mb of a 512Mb, 1Gb or 2Gb card. 9 press the 9 key to exit and save the initialization now you can start loading disk images using the windows utility. That will be the next part Q:I bought a SD/MMC drive and got 3 ROM files with it. What should I do with them ? Usually you shouldn't do anything. The SD drive firmware (or maybe you call it "drive BIOS ROM" as sharksym calls) delivered in your drive's flash is the appropriate one. I can think of 3 reasons to re-flash it: - You've erased by mistake some important files on the built-in flash drive (the one that mounts as A: if no card inserted or mounts as B: if you have a card in the drive) Note: flash disk is writable, if your drive is built using some specific flash chip, which means you can damage it. By re-flashing original firmware ROM you will get the original set of files on the flash drive. - You've flashed a MegaROM over SD/MMC's drive ROM to play a game. This converts your drive into a game cartridge, and now you want to make it a SD/MMC's drive again. - sharksym released a new firmware with features you really need Q:So which one of 3 ROMs found in zip should I flash ? Always flash the ROM appropriate for your hardware. Flashing higher version of ROM won't bring new features to the older hardware, as it lacks components of the newer hardware Flashing lower version of ROM may only downgrade your drive, and you don't need that - e.g. if you have V2 H/W and want to switch to a slower I/O speeds of V1 H/W, all you need is to press [Z] at the boot time. There are 3 types of SD/MMC drive hardware, as Erikie said in the previous message, and each one has it's own ROM to flash. Q:Which version of hardware my SD drive has ? 2 slots - 2.2 1 slot - ? (is it V1 or V2 ? Shown at boot time ?) But still you can safely use the V2.2 ROM on a V1 MMC/SD, right? The only difference in the ROM's is the flashdisk (MMCDISK1.ROM -> DOS1 files no directory) (MMCDISK2.ROM -> DOS2 files with directories) Docs also state: BIOS support both Hardware of V1 & V2. Arent all verions using the same BIOS? AFAIK I flashed MMCDISK3.ROM on my V1 MMC/SD You cannot use the v2.2 rom on a v1 hardware. It will not work. V2.x hardware looks is completely different from 1.0 and is incompatible. You can try it on your own device and you will see a FAIL message when starting with SD card. "Docs also state: BIOS support both Hardware of V1 & V2. Arent all verions using the same BIOS?" the new 3.10 BIOS from sharksym is made in 3 versions as mentioned earlier in this thread. It depends on the hardware which version you need to use. E.g. I have a 2.2 version hardware with MMCDISK3.rom loaded into it. Then I can use 2 SD cards.. When I flash MMCDISK2.rom into it, it will only see 1 SD card. (as V2.0 and 2.2 are very simular in hw design this works.) WHen I flash MMCDISK1.rom into the V2.2 hardware it will simply not work. The system disk is always mapped to C: when a SD is inserted. So you could use the system disk as a transfer medium for PC<->MSX exchange (as it is directly accessable on PC). And copy the data on the systemdisk to the other images (mapped at A: ). with the v2.2 the 2nd card is initialized as one big storage device I believe. So you can format it with fat16 and 2Gb max size. So you can put on all the files. Note you need DOS2 to make any use of it ... After mapping a non-system partition with disk image to A: (using DISKMAN.COM), if you have there software that autostarts on boot, you may loose ability to boot into DOS on your system partition again. In this case eject the card - this reboots into built-in flash drive, then re-insert the card and run UTILS\XCHGMMC.COM. It will ask you to press Enter - do that. This will move flash disk from A: to B:, and map A: (problematic non-system partition) and C: (system partition) back to the card. Now you can either fix the problematic partition in A: (format it, write over it other disk image, etc.), or run C:\DISKMAN.COM and select there to map other (e.g. system partition) to A: MMCDISK1.ROM -> DOS1 content in the Flash drive. MMCDISK2.ROM -> DOS2 contact in the Flash drive. MMCDISK3.ROM -> ??? I do not see any difference with MCCDISK2.ROM MMCDISK1 is used on V1 hardware. The one you got from me. MMCDISK2 is used on V2.x hardware and only supports 1 SD interface MMCDISK3 support 2 SD interfaces Use DISKMAN.COM ONLY from the system partition (0). DISKMAN stores the info localy (DISKMAN.DAT) That got me confused for a while too when I started using the DISKMAN stored on the flash-disk (B: ) and the one on the system disk *Diffrences between HW version. V1.0 -> First version V2.0 -> Enhanced SPI I/O for better R/W speed V2.1 -> Support SCC Banking protection V2.2 -> Support Two MMC/SD Card slot Higher version contains lower version's functionality *Functions Multi-disk emulation for Drive A: and rewritable internal flashrom disk for Drive B: System Disk(First partition) is always mounted as Drive C: Support FAT16 via Okei's FAT16 driver. Second card slot does not support Multi-disk emulation. (It is mounted as Drive D: and mostly used as big FAT16 disk or exchanging file between two cards.) Internal SCC is also useful for music player, which supports SCC sound. *BIOS MMCDISK1.ROM -> For one card slot HW. Internal flashrom disk is formatted as DOS1. MMCDISK2.ROM -> For one card slot HW. Internal flashrom disk is formatted as DOS2. MMCDISK3.ROM -> For two card slot HW. Internal flashrom disk is formatted as DOS2. It is fully compatible with older HW version. (Eg: MMCDISK3.ROM can be used for HW 1.0) It contains DOS1 and DOS2 kernel. If you have enough memory, DOS2 will boot normaly. But you can disable DOS2 via 'INS' key. 'Z' key will disable V2.x SPI I/O and use V1 SPI I/O. (V2.x HW itself is fully compatible with V1 HW) 'TAB' key will disable SCC banking mapper, will protect unintentional memory banking. *FAT16 It is supported as external sw, Okei's FAT16 driver. If slot1's memory card is FAT16, internal flashrom disk is mounted as Drive A: (boot disk) and memory card is mounted as Drive C: So you can easily add FAT16 driver installation in AUTOEXEC.BAT of flashrom disk. Once I tried to run DISKMAN.COM while being inside a subdir - it created .DAT-file in the subdir ! So, while running DISKMAN.COM your current directory should be A:\ (the root of A: ) DISKMAN.COM itself can be anywhere (e.g. in the example above I suggest to run C:\DISKMAN.COM) BTW, can we consider this "feature" as a bug and ask you, sharksym, to fix it ? And, if you are reading this: can you update DISKEXE.COM so it will work in DOS1 ? This should solve most problems with DOS1-mode-only software. I have a rom file for your MMC interface that is modified a bit by me so you can use the other number keys on your MSX instead of the numpad keys. I just tested it with XAK 2 and it works for at least the numbers 0-7. If you want a copy shoot me an email: evanson (a) quicknet . nl At the moment I only have MMCDISK2.ROM patched but if you want to have MMCDISK3.rom patched too let me know. Small update I think I have now all numbers working 0-9 but have no way of testing it. And all 3 roms are patched. Any one who is interested in it just shoot an email I have patched my patched rom again and changed the STOP key into the cursor-left key and it works. ATLOAD.COM uses page 0 for data buffer (4KBytes) & program code itself, and uses page 1 & 2 for cartridge slot due to flashrom access, and uses page 3 for usual way(stack & system variables). Your disassembled code is correct as my source code. Here's some explanation. Current code uses the SDP function of AT29C040A. When this feature is enabled once, all flash sector is protected by SDP sequence. This feature prevent unintended writes on flashrom. Becuse any sector cannot be rewritten without SDP sequence. Below code is correct SDP sequnce as your code. ld a,$AA ld ($9555),a ld a,$55 ld ($6AAA),a ld a,$A0 ld ($9555),a If you really want to disable SDP, you have to send SDP-disable command once. After then, you can write any 256bytes sector without SDP sequence. In every sector writing sequence, flashrom needs some time to flash sector for internal process. It can be detected by reading data. An address is not important but address should be same during check. During internal flash process, AT29C040A asserts Toggle-bit signal on data pins. BIT6 will be toggled in every read. In my source code, I just compare two bytes of last written data & read Toggle-bit code. When flash process is over, it asserts correct written byte, instead of Toggle-bit code. This process is normally over within 10ms. You may exchange this code with simple delay code. But in this case, you cannot see whether writing was success or not. Anyway if some HW or any kind of error occured, you may see hangup. (as RetroTechi mentioned). Hmmm, I want to suggest, before digging flash-write routines, please check first your diskrom and memory usage, and be noticed that ATLOAD.COM uses DOS variables of $f343,$f342 and ENASLT. I don't know why you have trouble with ATLOAD.COM. When I tested ATLOAD.COM on MSX1/2/2+/tR with DOS1/2, and RAMDISK of DOS2 also, I couldn't see any problem. I'm not sure, but I think there is no HW problem, if hangup occurs after 8KBytes flashing. It means software wrote 32 sectors succefully.