Trying to "simulate" a reset (or startup) on MSX1

By cr7

Supporter (3)

Аватар пользователя cr7

29-12-2020, 17:19

Hello fellow MSX admirers,

Merry Christmas to all !

As a beginning MSX programmer (more of an enthusiast and curious experimenter), I found, here, how to reset my MSX1 :
DEFUSR=&H0:A=USR(0)
It's working, displaying the startup logo and startup message. Great !

Even here or on Google, there is something I found nowhere : how to display the startup logo then the startup message "by hand" without really reseting, by calling them and only them from where they are (where, indeed ?) without wiping from memory the program doing it (which is what a reset would do).
For the startup message, PRINTing it from BASIC as character strings may do it (but that's less classy than getting it from internal memory !). But how can I "launch" the startup logo ?

Alternatively, reseting wihtout losing "the program causing the reset" from RAM would do it too, but it seems to me such a feat is impossible by definition.

All this on a simple, basic, tape-based MSX1, which is all I have.

My thanks in advance for any replies to come !

Для того, чтобы оставить комментарий, необходимо регистрация или !login

By sdsnatcher73

Prophet (2143)

Аватар пользователя sdsnatcher73

29-12-2020, 18:30

I don’t know whether it is possible to just call the logo routine (probably not). A way to automatically restart a program is to have a ROM marker (AB) in RAM memory. It is how many cracked ROMs from tape used to work, the BIOS will look for it after the reset in all subslots regardless of whether it is ROM or RAM.

By NYYRIKKI

Enlighted (5837)

Аватар пользователя NYYRIKKI

30-12-2020, 02:20

No, on MSX1 you can't really call the logo routine separately as the very same routine also automatically inits all cartridge ports and clears the BASIC program from memory... On MSX2 and up you can kind of do it with small ML-program, but I still would not recommend going that way... You will run in to troubles sooner or later.

By Manuel

Ascended (18072)

Аватар пользователя Manuel

30-12-2020, 12:57

AFAIK only the first few bytes of the program are cleared... You can restore it (OLD functionality like?), or am I not remembering correctly?

By Metalion

Paragon (1421)

Аватар пользователя Metalion

30-12-2020, 13:17

Manuel wrote:

AFAIK only the first few bytes of the program are cleared... You can restore it (OLD functionality like?), or am I not remembering correctly?

Yes I just checked in an emulator, as I remembered something like that, also.
After soft reset, the address of the next BASIC line, stored in the first line, is erased.
Therefore, there's only 2 bytes changed at $8001 and $8002.

By cr7

Supporter (3)

Аватар пользователя cr7

10-01-2021, 12:24

Hello everybody,
Thank you so much for your replies, each one educating me, and the whole giving me direction for further exploration. If I find something further interesting on this topic, I'll post it here.
Until then, happy new year to each one of you !

By Daemos

Paragon (1951)

Аватар пользователя Daemos

10-01-2021, 14:47

Just a funny idea. What if you copy the logo routine (bios source is known) and adapt it to do what you want. Then copy this code to a place in ram and call it whenever you need it?

By mcolom

Master (181)

Аватар пользователя mcolom

10-01-2021, 19:49

In the game Bounder they did it, when you activate cheating.