DOS 2.20: How exactly does the mapper work ? (Hardware MSX Forum)MSX Resource Center MSX Info Update - Finnish MSX madness at its best              
              
English Nederlands Español Português Russian         
 News
   Frontpage
  News archive
  News topics

 Resources
   MSX Forum
  Articles
  Reviews
  Fair reports
  Photo shoots
  Fairs and meetings
  Polls
  Links
  Search

 Software
   Downloads
  Webshop

 MRC
   Who we are
  Join our team
  Donate
  Policies
  Contact us
  Link to Us
  Statistics

 Search
 
  

  

 Login
 

Username

Password




Don't you have an account yet? Become an MSX-friend and register an account now!.


 Statistics
 

There are 140 guests and 4 MSX friends online

You are an anonymous user.
 

MSX Forum


MSX Forum

Hardware - DOS 2.20: How exactly does the mapper work ?

Author

DOS 2.20: How exactly does the mapper work ?

foske
msx novice
Posts: 27
Posted: February 19 2007, 14:58   
Hi,

I've seen many schematics of a DOS 2.20 hardware mod, but I'm trying to find out whether it's possible to put DOS2.20 in a subslot which already contains another ROM (in a different bank). I know DOS 2.20 is 64 kB, but memory mapped. So, how exactly does the memory mapper work: which bank is used for DOS 2.20 and which address should be used by the memory map register ? Most implementations use only the upper 4 address bits to select the register...

Does anybody know whether it should be at all possible to put two different roms in one subslot when they do not use the same banks ?


foske
msx novice
Posts: 27
Posted: February 19 2007, 15:30   
Ok, I overlooked the CS1 input signal... So, the CS1 line indicates that the ROM is mapped in bank 1, right ? However, the address decoder takes part of bank 1 too (0x6XXX). Now that looks inefficient to me ?
zeilemaker54
msx lover
Posts: 97
Posted: February 19 2007, 15:46   
the DOS2 kernel is indeed in page 1 (04000H-07FFFH), but has 4 'segments' which can be selected by writing the segmentnummer in the 'segmentregister'. This is generally (but not always) at address 06000H. In order to keep the hardware design simple (and cheap), the complete decoding of address 06000H is not performed but only the decoding of 6XXX.

segment 0 = dos2 environment (including diskbasic)
segment 1 = support routines + (error) messages
segment 2 = dos2 kernel (bdos)
segment 3 = MSX KANJI (standalone) or dos1 kernel (MSX Turbo-R)

foske
msx novice
Posts: 27
Posted: February 19 2007, 16:50   
Thanks for your excellent explanation, but it still doesn't explain why a 64 kB ROM is reduced to a 48 kB ROM by using the address range of 0x6000-0x6FFF for the mapper register. Or is the trick that you can only write into the mapper register and only read from the ROM ?
HansO
msx addict
Posts: 375
Posted: February 19 2007, 18:40   
Quote:

Thanks for your excellent explanation, but it still doesn't explain why a 64 kB ROM is reduced to a 48 kB ROM by using the address range of 0x6000-0x6FFF for the mapper register. Or is the trick that you can only write into the mapper register and only read from the ROM ?



The 64K rom is divided in 4 segments, each 16K in size. The mapper maps in one of those 4 segments at the 16K window 4000H - 7FFFH. So nothing is spilled.
The mapper register is a write only memory location, so reading the same location gives ROM content, writing does load the register. In fact, writing to ROM does not make sense!
And giving it the name register is a lot of honour for two flipflops in a row..


foske
msx novice
Posts: 27
Posted: February 20 2007, 09:40   
Thanks Hans !

I got the picture now. I am aware that writing to EPROMs doesn't really make sense unless you got programming logic and voltages applied :-) Then the next question of course is why an address decoder is used at all, and not simply /CS1 is OR-ed with /WR. Or does /CS1 contain /RD? Any recommendations about a good MSX Engine (the Philips one) manual ? Oh man what a questions...

So. What I am trying to find out is whether I can put MSXDOS 2.20 in Slot 30, bank 1. The MSX2 Extension ROM is in bank 0. Now I have to find out what exactly SLT3/30 from the Engine does, if it only gets low in bank 0 I need to copy the slot select logic. Why I want to do it ? Because everybody uses slot 3.1 for this and IMHO it is a waste of slot 3.0 :-). I like turning left when the obvious way is right...
 
 







(c) 1994 - 2008 MSX Resource Center Foundation. MSX is a trademark of MSX Licensing Corporation.