ROM starting in page 0 or 3?

Page 2/2
1 |

By aoineko

Hero (532)

aoineko's picture

05-01-2022, 00:15

Thank you for the clarification.

This is just my opinion, but in a game cartridge that will never return to the system, it doesn't seem illegitimate to replace the BIOS with game-specific code. Anyway, some original games do this... it becomes de facto "standard".

Coming back to the topic, 8/16K ROMs can only work on page #0 if their content is mirrored on pages #1 and/or #2.

This leads me to other questions: Was mirroring standard on such cartridges?
If not, what happened when accessing an area of the cartridge slot where the ROM was not plugged in?
For example, on a 8/16K ROM located on page #0 and without mirroring, what happens if I do a LD A, (#0x4000)?

By gdx

Enlighted (5700)

gdx's picture

05-01-2022, 09:40

Manuel wrote:
Jipe wrote:

i checked two roms 8k that i know
Sparkie: 41.42.CF.00
Juno First: 41.42.0D.03
code AB and adress 0002h

There are many more, for instance from GoodMSX1:
.
.
.

Jipe talks about 8kB ROMs that don't boot between 4000h and BFFFh, so use mirror to work.

Crazy train starts at 0160h
Juno First at 030Dh
Sparkie at 00CFh

These games use their own interrupt routine.

Aoineko wrote:

This leads me to other questions: Was mirroring standard on such cartridges?

One thing is certain is that it was intentional.

Aoineko wrote:

Par exemple, sur une ROM 8/16K située à la page #0 et sans mirroring, que se passe-t-il si je fais un LD A, (#0x4000) ?

ROMs are only executed when there is the "AB" code at 4000h or 8000h, or then "CD" at 0000h on MSX2 and MSX2+. Haven't you read my posts above?

https://www.msx.org/wiki/MegaROM_Mappers

Konami Megaroms have mirrors but they have not been used. By cons, you can do it. Otherwise, you can bypass the interrupt routine by using the hook at 0FD9Ah. This has been done in several games.

By aoineko

Hero (532)

aoineko's picture

05-01-2022, 09:32

gdx wrote:
Aoineko wrote:

For example, on a 8/16K ROM located on page #0 and without mirroring, what happens if I do a LD A, (#0x4000)?

ROMs are only executed when there is the "AB" code at 4000h or 8000h, or then "CD" at 0000h on MSX2 and MSX2+. Haven't you read my posts above?

I read carefully the answers you give me and the content of the links you provide.

My example about mirroring was only a conceptual one. I can restate it:

For example, on a 8/16K ROM located on page #1 and without mirroring, what happens if I do a: LD A, (#0x8000)?

By gdx

Enlighted (5700)

gdx's picture

05-01-2022, 09:54

aoineko wrote:

on a 8/16K ROM located on page #1 and without mirroring, what happens if I do a: LD A, (#0x8000)?

The same as if you read an address from 8000h to BFFFh on an MSX with 16K RAM, You get an undetermined value. This value will depend on the hardware. (Typically FFh)

By Jipe

Paragon (1559)

Jipe's picture

05-01-2022, 13:07

i checked all 8K rom and only 3 start in 0000h Crazy Train,Juno Firtst and Sparkie i think /SLTSL is used only
the other are in 4000h or 8000h and use /CS1 or /CS2
Start Cartridge
8010 Balance (1984) (Hal) (J) [a1].rom
8010 Balance (1984) (Hal) (J).rom
8010 Battle Ship Clapton 2 (1983) (T&E Soft) (J).rom
829d Boggy\84 (1984) (Nippon Columbia) (J).rom
4004 Bomber Man (1983) (Hudson) (J).rom
4010 Butamaru Pants (1983) (Hal) (J).rom
4004 Cannon Ball (1983) (Hudson) (J).rom
4790 Captain Chef (1984) (Nippon Columbia) (J).rom
4010 Car Race (1983) (Ample) (J).rom
4004 Color Ball (1983) (Hudson) (J).rom
4064 Computer Billiards (1983) (Sony) (J).rom
4010 Con-dori (1983) (Raison) (J).rom
4010 Dragon Attack (1983) (Hal) (J).rom
8010 Flash Sprash (1984) (Toshiba Emi) (J).rom
41b4 Frogger (1983) (Konami) (J).rom
4010 Fruit Search (1983) (Hal) (J).rom
4010 Galaxian (1984) (Namcot) (J) [a1].rom
4010 Galaxian (1984) (Namcot) (J).rom
8010 Harapeko Pakkun (1984) (Ascii) (J).rom
4010 Heavy Boxing (1983) (Hal) (J).rom
4004 Hitsuji Yai - Preety Sheep (1984) (Hudson) (J).rom
8010 Jump Coaster (1984) (Nippon Columbia) (J).rom
8010 Mr. Chin (1984) (Hal) (J).rom
4010 Mr. Do (1984) (Nippon Columbia) (J).rom
8010 Oyoide Tango (1984) (Hal) (J).rom
8195 Peetan (1984) (Nippon Columbia) (J).rom
4010 Picture Puzzle (1983) (Hal) (J).rom
8010 Pyramid Warp (1983) (T&E Soft) (J).rom
4010 Real Tennis (1983) (Takara) (J).rom
4010 Scramble Eggs (1983) (Ample) (J).rom
4020 Space Maze Attack (1983) (Hal) (J).rom
4004 Space Trouble (1984) (Hal) (J).rom
4122 Step Up (1983) (Hal) (J) [a1].rom
4122 Step Up (1983) (Hal) (J).rom
Basic2Rom Super Billiards (1984) (Hal) (J).rom
407d Super Cobra (1983) (Konami) (J).rom
4025 Super Monitor 1.1 (1985) (Emiiru) (J).rom
4025 Super Monitor 1.2 (1985) (Emiiru) (J).rom
4010 Super Snake (1983) (Hal) (J).rom
4020 Tank Battalion (1984) (Namcot) (J).rom
4064 Video Hustler (1984) (Konami) (J).rom
4010 Warp Warp (1984) (Namcot) (J).rom

By gdx

Enlighted (5700)

gdx's picture

05-01-2022, 15:45

Just a little remark to avoid confusion. I speak about the ROM in its slot. Otherwise, the CPU will read what is in the current slot.

When the program of the address INIT is called on the page 1, the pages 2 and 3 contain RAM (on MSXs with 32kB RAM or more), the page 0 is the Main-ROM.
When the program of the address INIT is called on the page 2, the page 3 contains RAM, the page 0 and 1 the Main-ROM.
I do not know what is on page 1 when a ROM boots on page 0 (main-ROM?) but the pages 2 and 3 contain RAM (on MSXs with 32kB RAM or more).

Here's a link to a wiki page with additional explanations about the boot.

https://www.msx.org/wiki/The_Memory

By aoineko

Hero (532)

aoineko's picture

05-01-2022, 18:23

Yes, my question was about the cartridge slot selected in a page where no ROM is physical plugged.
The same apply for a selected empty slot/subslot.

gdx wrote:

I do not know what is on page 1 when a ROM boots on page 0 (main-ROM?) but the pages 2 and 3 contain RAM (on MSXs with 32kB RAM or more).

This is the case in Juno First (Page 0: Cartridge, Page 1: Main-ROM, Pages 2-3: RAM).

By NYYRIKKI

Enlighted (5943)

NYYRIKKI's picture

06-01-2022, 06:17

You should not really make this more mystic than it is... The start situation with cartridge is exactly same as without cartridge: First 32kB contains BIOS+BASIC and last 32kB is RAM, if available. When cartridges are checked, each slot is scanned through. First #4000 is checked for "AB"-header and if found then interslotcall is made to (#4002). If it returns then #8000 is checked for "AB"-header and if found then interslotcall is made to (#8002). If it returns then next slot is checked and if no more slots are available then BASIC is started. Rest what you can see are just side effects of this behavior.

If you compare the /CS1, /CS2, /CS12, /SLTSL issue with what I just said, it should all make sense. The thing that makes you puzzled is the interslotcall although it is very well known BIOS feature.

Page 2/2
1 |