RAM Mapper Back Notation

Page 1/2
| 2

By blackmsx

Expert (76)

blackmsx's picture

31-03-2016, 02:02

Hello again,

Sometime ago I was inquiry about how to build a memory mapper in this thread:
https://www.msx.org/forum/msx-talk/hardware/msx1-memory-mapper

Thanks to all the info I was able to build the mapper and also added back notation feature to it.
The question is now how to test back notation. Which program does use it so I can check is working fine?

Thanks!

Login or register to post comments

By tvalenca

Paladin (728)

tvalenca's picture

31-03-2016, 05:17

you can test it yourself on BASIC.

using BASIC's immediate mode, you can, for example:
OUT &HFE,0 and then: PRINT INP(&HFE)
You can also change &HFE (page 2) register on BASIC, and enter different programs on each Mapper Page, just don't forget to type "NEW" and hit Return key BEFORE or inserting or loading any BASIC program for the first time you use that mapper page or BASIC. So if you type:

OUT &HFE,0
NEW
10 PRINT "THIS IS THE PROGRAM ON PAGE 0"
OUT &HFE,1
NEW
10 PRINT "THIS IS THE PROGRAM ON PAGE 1"

and then you type:

OUT&HFE,0
RUN

the result will be:
THIS IS THE PROGRAM ON PAGE 0

And since it is mapper, you can have (you Memory Mapped RAM size)/8k different programs at the same time loaded on RAM. (but you can't "GOTO" from one to another, you have to OUT to the mapper control register from the immediate mode)

Remember:

  • Don't mess with &HFF (page 3) register from BASIC or the computer will hang.

By blackmsx

Expert (76)

blackmsx's picture

31-03-2016, 11:35

Thanks, I'll try that.

Then, "PRINT INP(&HFE)" is reading the value stored on &HFE?

By Manuel

Ascended (15359)

Manuel's picture

31-03-2016, 11:59

By tvalenca

Paladin (728)

tvalenca's picture

31-03-2016, 20:39

blackmsx wrote:

Thanks, I'll try that.

Then, "PRINT INP(&HFE)" is reading the value stored on &HFE?

It depends. If you made a 5-bit register (256kB) mapper, it will return the lower 5 bits the way you set, and "1"s for the other bits (7, 6 and 5). So if you OUT&HFE,0:PRINT INP(&HFE) on this mapper, you should get 224 (&B11100000) instead of 0.

By madscient

Master (179)

madscient's picture

15-04-2016, 08:46

Note that reading mapper register may cause hardware crash on multiple mapper environment.

By RetroTechie

Paragon (1534)

RetroTechie's picture

17-04-2016, 11:19

Reading a mapper register may produce unreliable or garbage result in some setups. That's why you shouldn't. Evil

But the simple act of reading a mapper register WILL NOT hang an MSX, ever. At the very worst, cause a hardware conflict that lasts a few tenths of a usec, and produces garbage result - see above. If anyone disagrees: provide an example, and proof on real hardware.

By madscient

Master (179)

madscient's picture

17-04-2016, 16:47

"hardware crash" I mentioned doesn't mean "hang", but literally "crash".
Of course hardware conflict may cause hardware crash.
Is there any hardware never crash even if it conflicts?

By blackmsx

Expert (76)

blackmsx's picture

20-04-2016, 11:03

Thank you ppl for your answers. I'v not had time yet to test reading the registers on my mapper but as soon as I do I'll post my impressions.

Just a question, why would one want back notation when it crashes the computer when you use it?...

By Grauw

Enlighted (8012)

Grauw's picture

20-04-2016, 11:26

One doesn’t want to, and shouldn’t, but some software does, and it does work in a lot of cases, even with multiple mappers. But in certain configurations and computers it doesn’t work, which is why it’s a nonstandard and incompatible practice.

But it’s good to have on mapper hardware nevertheless, e.g. the MAP2.COM hack uses it to run some DOS1 software in DOS2 (IMO the most practical and justifiable reason for mapper readback), as well as some software which was not programmed according to guidelines.

By madscient

Master (179)

madscient's picture

21-04-2016, 12:19

If reading mapper register never cause hardware fault, I don't mind even it violates standard.
Multiple mapper registers reflect a value in reading concurrently, power current should reverse on transistor cell of register ICs.
You can learn in college of electronics detailed reason why does it cause crash.

Page 1/2
| 2