Is this your MSX2 hardware configuration?

Page 1/2
| 2

By flyguille

Prophet (3029)

flyguille's picture

31-12-2003, 19:11

I need information about the FDC (floppy disk controlers) and where are mapped, for make the other versions of the same kernel for your hardware.

The MNBIOS is programmed for this. Is your hardware as it?

* V9938 or V9958 on I/O &H98 to &H9B
* PPI 8255 or compatible on I/O &HA8 to &HAB
* PSG AY3-8910 or compatible on I/O &HA0 to &HA2
* MEMORY MAPPER on I/O &HFC to &HFF
* SUB SLOT REGISTER at MEMORY ADDRESS &HFFFF
* trought AY3-8910 external i/o register connect the 2 joystics ports and a DATASET I/O.
* trought PPI connect in port A8 the SLOT selector registor. &HA9 read keyboard row. &HAA set light CAPS, sound click, and select row keyboard to be read.
* &H90 and &H91 are the printer port.
* Too support RTC, at &hB4 and &hB5

* The DISK DRIVER in my hardware are in BFB8 to BFBF memory address at slot 3 - 2 . (the Talent DPF550 diskdriver)

* The slot for expand are in SLOT 2.
* The original mapped memory are in SLOT 1 , SLOT 3-0 , SLOT 3-1 , SLOT 3-2 or SLOT 3-3. The MNBIOS support all this locations for original RAM, but if are in SLOT 2 then the MNBIOS use it as a MSX4 expand and crashed if is a original RAM.

You has a diferent hardware, what are changed?

Is your hardware popular, in what country?

I need the help of all msx fans for do the MNBIOS at world level.

Login or register to post comments

By anonymous

incognito ergo sum (109)

anonymous's picture

31-12-2003, 21:21

All of this is pretty much standard, and most of it was officially standardized in MSX2+.

However, the location and way of access (memory or I/O) of Floppy Disk Controllers differs. I don't know the details about that though.

By flyguille

Prophet (3029)

flyguille's picture

31-12-2003, 21:49

because this differs, i need make a kernel for each hardware. The most popular almost.

By NYYRIKKI

Enlighted (5358)

NYYRIKKI's picture

02-01-2004, 14:28

You probably know all this, but just in case...


* V9938 or V9958 on I/O &H98 to &H9B

MSX 2+ and up standard. MSX1 and MSX2 should read this from BIOS. Practically this works in 99% of MSX configurations. Only external MSX2 expanders use different port's
* PPI 8255 or compatible on I/O &HA8 to &HAB
* PSG AY3-8910 or compatible on I/O &HA0 to &HA2
* SUB SLOT REGISTER at MEMORY ADDRESS &HFFFF
* trought AY3-8910 external i/o register connect the 2 joystics ports and a DATASET I/O.
* trought PPI connect in port A8 the SLOT selector registor. &HA9 read keyboard row. &HAA set light CAPS, sound click, and select row keyboard to be read.
* &H90 and &H91 are the printer port.

Standard in MSX1 and up.
* MEMORY MAPPER on I/O &HFC to &HFF
* Too support RTC, at &hB4 and &hB5
standard in MSX2 and up.

* The DISK DRIVER in my hardware are in BFB8 to BFBF memory address at slot 3 - 2 . (the Talent DPF550 diskdriver)

Disk drive can be connected to any slot, it can use any disk controller and can be used trough memory (most common style) or I/O ports (eg. Gradiente models)
You may want to check out Xelasoft Fast Copy for knowledge of other controllers. Only standard way to use diskdrive is to use it trough DISK ROM. It would be nice, if you could do a general disk driver that uses the DISK ROM in some sort of emulation mode. You should not need to replace too much routines to get #4010 entry point working. Even slow access is better than no access at all. I don't know about your BIOS, but it would be nice, if you would standard some more routines, than the DISK ROM does. As an example it would be nice to have option to format for example only tracks 80-82. or it could be nice to write a music player, that can play at a same time while disk is loading.


* The slot for expand are in SLOT 2.

All slot's can be expanded and it is very typical to have all slots expanded nowadays.
* The original mapped memory are in SLOT 1 , SLOT 3-0 , SLOT 3-1 , SLOT 3-2 or SLOT 3-3.
MSX standard does not define, where the RAM is located, but these are the typical locations.

By NYYRIKKI

Enlighted (5358)

NYYRIKKI's picture

02-01-2004, 15:04

Offtopic:

As an example it would be nice to have option to format for example only tracks 80-82

BTW it seems, that reading/writing tracks 80-82 is can be done on most MSX computers, but you can not format them. I wrote a program for MSX tR that formatted 738KB disks instead of 720KB and they worked just fine also in other MSX's that I tested (at least NMS8250 and NMS8280). Only problematic machine where I tested this was Sony HP-G900P that did not read it because of physical limitations of disk drive. This could have been solved by changeing diskdrive model.

My PC did not understand this format, but what you could expect from Windows machine Crying It would be nice to test these disks with Linux, Amiga or Macintosh. I think they can follow the standard usually a bit better. This format is nice if you want to exchange DSK files between HD's as the whole image fit's to disk and you don't need any special software for read/write tracks. 8)

~NYYRIKKI

By flyguille

Prophet (3029)

flyguille's picture

02-01-2004, 15:47

all very nice, but, you not tellme where are mapped the WD chip in your hardware!!!!!!!! WD are all a family chips compatible, all WD chips work in same way!!!
MNBIOS not suport the DISK-ROM because the MNBIOS remplace the original MSX2 BIOS on loading process.

By NYYRIKKI

Enlighted (5358)

NYYRIKKI's picture

02-01-2004, 17:14

MNBIOS not suport the DISK-ROM because the MNBIOS remplace the original MSX2 BIOS on loading process.

I don't think, that you need original MSX BIOS to get basic functions of DISK ROM working, but you need to rewrite some routines & hooks on #C000-FFFF area. I must say that I'm not really sure about this, but maybe it is worth of check out. The disassembled NMS8245 DISK ROM source seems to have only 20 references to MSX BIOS and I don't think that they are used while doing just pure DISK I/O (no filesystem etc.).

If they are really used, you can select same RAM block to area #0000-3FFF and #C000-FFFF and fit the "MSX BIOS emulation code" to that space. Most of the slot I/O is done trough #F380 and #F38C so I think, you can hook the possible unwanted slot switching trough these addresses.

Anyway... this is just an idea, that could maybe work.

~NYYRIKKI

By flyguille

Prophet (3029)

flyguille's picture

02-01-2004, 19:10

The problem is, the #c000 to #FFFE havn't free bytes for that, especially F380 or upper.

The #0000 to #3FFF are the KERNEL , no more free space here.

The #4000 to #7FFF (called PRG segment) is for aplication code. Here reside the current aplication file (one page of that file at same time), because that the EXEC file can are great as 128MB.

The #8000 to #BFFF (called DAT segment) is for aplication data. Here reside the current file for data of the current aplication, can be the same EXEC file in any page o any other file in any page.

The current aplication can change in any time every with the OK of the aplication, for no interrupt any critical process.

By NYYRIKKI

Enlighted (5358)

NYYRIKKI's picture

02-01-2004, 23:18

The problem is, the #c000 to #FFFE havn't free bytes for that, especially F380 or upper.

Well... You have to load the disk interface driver to some RAM page anyway. (I remember reading that disk drive takes extra 16K.) That same space can be used to make a interface driver to standard disk ROM as well. If this seems too hard, I think, that you can reserve another page of RAM as well to get it working. This may cause, that the whole kernel and all system variables need to be removed from visible page for a while and you may need to relocate SP etc. Anyway after loading you may return to the same situation. Worst thing is, that you may loose some interrupts while loading is in progress and RAM might be chuck away from aplications.

If #C000-FFFF is in use you can safely put the data away for a while and return it back after the load. This can be proved by executing routine below from BASIC. After this the original page 0, that is typically used for #C000-#FFFF is empty and there is still no any problems. Everything works even if you use DOS2 (In DOS2 remember to reserve page first). I know, that MSX-DOS manual says, that you should newer change last page, but there is actually no reason for that as long as the data is there. In this case you don't even need all the data.

	DEFB #FE
	DEFW BEGIN
	DEFW END
	DEFW BEGIN

	ORG #D000
BEGIN:
	IN A,(#FE)
	PUSH AF
	LD A,5
	OUT (#FE),A
	LD HL,#C000
	LD DE,#8000
	LD BC,#4000
	LDIR
	OUT (#FF),A
	XOR A
	OUT (#FE),A
	LD HL,#8000
	LD DE,#8001
	LD BC,#3FFF
	LD (HL),A
	LDIR
	POP AF
	OUT (#FE),A
	RET
END:

The only problem that might get you in trouble is, that I've seen mapper, that only worked on range #4000-#BFFF This is not anyway MSX standard mapper, so I don't think that you need to worry about that. I also guess, that you don't like this kind of ugly "glue" to your BIOS, but the only reason, why I'm suggesting this is, that I would really like to see this BIOS in action on all MSX machines as fast as possible, even if the disk handling is not fully implemented.

The better machine specific DISK routines can be then implemented later, but people get possibility to start developing already before those routines. Even if this makes the original BIOS mandatory (so that you just swap the BIOS versions on the fly), i think it is ok as this is a thing that can be fixed later. There are ton's of different disk drive solutions around and implementing them one by one will take horribly lot of time.

I know, that I'm impatient as you have been working on this for 6 years, but I think, that at this point the standard definition is not changeing that much anymore and you could really give it for people to play with.

~NYYRIKKI

By NYYRIKKI

Enlighted (5358)

NYYRIKKI's picture

03-01-2004, 00:04

all very nice, but, you not tellme where are mapped the WD chip in your hardware!!!!!!!! WD are all a family chips compatible, all WD chips work in same way!!!

This info about diskdrives is from Xelasoft:


WD 2793 bios , release date: 8- 5-1991, works with:
Philips VG 8235 new version, NMS 8245, 8250, 8255 and 8280
Sony HP F550, F700 and F900
WD 1793 bios , release date: 8- 5-1991, works with:
Philips VG 8230 and VG 8235 old version
TC 8566 AF (at #7ff2) bios, release date: 21- 9-1992, works with:
Panasonic A1 ST and A1 GT
TC 8566 AF (at #7ff8) bios, release date: 5- 4-1993, works with:
Sanyo wavy 70 FD MSX 2+

Other drive types that I know are:

- SVI-738 WD 1793 #7FB8-#7FBC
- SVI-728 WD 1793 I/O #D0-#D7
- Gradiente disk drive controller (I/O based)
- The Philips PC-MSX emulation card
- Casio Quick-disk drive (Not MSX-DOS compatible)

There are probably many more... someone else can continue...

~NYYRIKKI

By NYYRIKKI

Enlighted (5358)

NYYRIKKI's picture

03-01-2004, 00:59

I found some more info from: www.work.de/nocash/portar.htm#fdcioaddresses From the list I did forget at least Panasonic A1-W(S)X that has also probabbly TC 8566 AF connected somewhere.

~NYYRIKKI

Page 1/2
| 2