On Tue, 23 Mar 1999, shevek wrote:

> On Mon, 22 Mar 1999, Marco Antonio Simon dal Poz wrote:
> 
> > On Mon, 22 Mar 1999, shevek wrote:
> > 
> > > On Mon, 22 Mar 1999, Marco Antonio Simon dal Poz wrote:
> > > 
> > > > For the most part of diskroms, DMA can be in page 1, because they have
> > > > access to FDC through addresses 7FF8h-7FFCh and also BFF8h-BFFCh, and they
> > > > transfer a small routine to F1BFh (or something like that) that allows a
> > > > disk transfer to happen in page 1.

I don't think this is true. The DISKIO(#4010) can transfer data in page 1
through the following mechanism: when data is transferred in page 2 or 3,
no slotswitching is needed. (bit 15 of the startaddress=1) When bit 15 of
the startaddress=0: transfer to page 0 or 1: (also special slotswitching
in page1 is needed when begin of transfer is in page 0 because transfer
can be partially in page 1 too! example: from #100 to #6000)
In that case: DISKIO gets sector bufferaddress in page3: pointer at
address #F34D/E. This seems to be the standard address, both in DOS1 and
DOS2. (It has to be, otherwise a floppydrive (DOS1) diskrom would not
function anymore when running DOS2) This is a 512 bytes buffer, large
enough to fit 1 sector.
So when reading from device: data is transferred to the sectorbuffer. Then
the registers are filled with values like for a normal LDIR (from
sectorbuffer to final destination in memory) and a call is made
to address #F36E (also standard for DOS1 and DOS2 kernels).
Here a routine is provided to make the main ramslot active in page 1. Before
making the ram active, the diskromslotcode is fetched by calling a
'where_am_i' routine in the diskrom (#402D I believe). When ram is
selected in page1 an LDIR instruction is executed and the diskrom is
reselected in page1.

But this routine is only provided in MSX-DOS(2) environment; when in
BASIC, a RET instruction is placed at #F36E.  So: disktransfer in page1 in
BASIC is probably not possible (or perhaps the F37D entry temporarily
changes the #F36E hook; didn't test it); This is logical: BASIC ROM is
normally selected in page 1.

> > > 
> > > Is that MSX-standard or just the case on many MSXs?
> > 
> > The standard doesn't say anything about the method that the diskrom should
> > use. So, it's just the case on many MSXs. The standard only says that the
> > interface should use memory addresses to transfer data between CPU and
> > FDC.
> 
> Ok, but this means that using DMA in page 1 is against MSX standard, or
> not?

don't know; I only noticed the following:
*diskrom DISKIO supports it
*F36E routines provided by DOS1/DOS2
*when you make a diskrom with no support for page1 disktransfer, all
things work fine. I don't think DOS2 uses it; don't know about DOS1.

Can you all confirm this information?

jon



****
MSX Mailinglist. To unsubscribe, send an email to [EMAIL PROTECTED] and put
in the body (not subject) "unsubscribe msx [EMAIL PROTECTED]" (without the
quotes :-) Problems? contact [EMAIL PROTECTED] (www.stack.nl/~wiebe/mailinglist/)
****

Reply via email to