>I read (nearly) all the messages from the last time...
>- Oh my god! I really miss  mails refering to (program-) technical
thingies...
>
>So - lets start a "serious" thread...   ;cP

**Great**


>DOS 2 & memory
>--------------
>I found out that the DOS2 page-switch routines are
>kinda slow. Does anybody know a simple, "legal", and
>compatible way to speed up those bottlenecks?
>
>Compatible, because I dunno how many different versions
>of DOS2 are in use. - And I want it to work with every
>kind of DOS2.

The segment number Dos2 returns is the same as the MemMap page-number.
Therefor, you can use the number you get if you allocate a page with OUT
(#FC-#FF). It is illegal (ofcourse), but it works. This way you an also
switch away page 3. But beware: If you set pages this way and you want to
read from disk to that page the Bdos sets the old page he's got in his
table. Really, these routines are made as fast as possible, so don't worry
about speed. And if you do use the thing stated above, take care...


>Oh - another question comes in mind:
>In DOS1 you are not allowed to "ask" the outs (#fe...) about
>the page number which they may contain.

You can't. Just use the pages starting with 0. So if you need 96k then use
pages 0-5...


>-> How will I know which ones are selected?
>-> Is there a _STANDARD_ definition which
>   memmaps are selected after the bootstrap?

In dos1, the following table is valid:
0000-3FFF: page 3
4000-7FFF: page 2
8000-BFFF: page 1
C000-FFFF: page 0


In Dos2 you should request the segment-nrs. using Get_Seg.


>DOS2 and Interrupts:
>--------------------
>I want to redirect the standard-interrupt (with use of
>IMx). Will I get troubles if there is NO(!) ROM selected
>in page0/1 the whole time? - I dont wanna load in this
>situation, only wanna switch mem...

You probably won't get problems.
However, in Dos it is easiest to replace the bytes at adress #38, for
example putting a JP Interrupt there. In Basic, it is -to my opinion- better
if you swith away the ROM, however you could also set the other interrupt
mode (mode 2?) in which the high byte of the adress of a jumptable is set in
the I-register and the low byte of the adress is determined by the devie.
For example, set I to #C0, and then fill adresses #C000-#C0FF with words of
the adress the interrupt should jump to (yes, indeed, the device can only
set odd adresses) (there are no devices delivering this lower byte of the
adress on the MSX. So #C000 can be assumed as the set adress. However, it is
still safe to fill the omplete 128 words with the right value, just in
case...)


****
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