Execute a basic program without "run" (Development MSX Fora)MSX Resource Center MSXdev 2008 - MSX1 development bonanza!           
            
English Nederlands Español Português Russian         
 Nieuws
   Voorpagina
  Nieuws archief
  Nieuws onderwerpen

 Informatie
   MSX Fora
  Artikelen
  Recensies
  Beursverslagen
  Fotoreportages
  Beurzen en meetings
  Enquêtes
  Links
  Zoek

 Software
   Downloads
  Webshop

 MRC
   Wie we zijn
  Kom bij ons team
  Doneren
  Policies
  Contact met het MRC
  Link naar Ons
  Statistieken

 Zoek
 
  

  

 Login
 

Gebruikersnaam

Wachtwoord




Ben je nog niet lid? Klik hier en word MSX vriend!


 Statistieken
 

Er zijn 127 gasten en 6 MSX vrienden online

Je bent een anonieme bezoeker.
 

MSX Fora


MSX Fora

Development - Execute a basic program without "run"

Schrijver

Execute a basic program without "run"

Ada
msx novice
Berichten: 29
Geplaatst: 05 Mei 2005, 17:22   
Hi!

I want to know how to execute a basic listing without using the "run" command. I've tried to change CURLIN system variable but nothing changed. I suppose there must be a system variable that indicates the interpreter that the basic program is running, but can't find that. The goal is to launch a basic program from an assembler program.

Btw, I've seen basic listings are stored in 32769, but what is the function for address 32768? If I poke anything else than a zero there, I can't execute the program with "run".

Many thanks!
flyguille
msx master
Berichten: 1183
Geplaatst: 05 Mei 2005, 19:15   
first, which is the previous basic's status.

i only can imagine one scenary... and it is a BASIC's listing switcher.

How is that?...

it consists in writing an assembler program (at page 3) that handling the PAGE 2 it switch the current basic's listing.

But in that case, normaly that piece of assembler code is loaded from an Basic's listing like a loader... So, de BASIC's interpreter is already runing a listing.

there is no only CURLIN, also the pointers to that line, because CURLIN iirc stores only the current line number like 10 or 20, but it is only for GOSUB/RETURN/errors message/CONT/ONxxxGOSUB purposes.

There is others several pointers to the start/end position of that line number at memory.

And if you switch listings, also is needed to upgrade the start/end pointers of the variable's area (both), end program pointer. etc. etc. etc.

flyguille
msx master
Berichten: 1183
Geplaatst: 05 Mei 2005, 19:17   
now, if you means, about, THE basic is in DIRECT MODE, and i WANT to ORDER THAT BASIC's executes a program.... i thinks the only one way is to call to a internal function or something..

A trick, is to insert in the keyboard buffer

[CL] + RUN"XXXX" * [RETURN].

If the assembler code is in background like hooked to the interrupt.

Guillian
msx professional
Berichten: 620
Geplaatst: 05 Mei 2005, 22:40   
perhaps a DEFUSR=&h73AC:?USR(0)
flyguille
msx master
Berichten: 1183
Geplaatst: 05 Mei 2005, 22:43   
is that address standarized?
Guillian
msx professional
Berichten: 620
Geplaatst: 05 Mei 2005, 22:48   
I don't think so, since it is not a BIOS entry or similar. But seems to work ok.
Ada
msx novice
Berichten: 29
Geplaatst: 05 Mei 2005, 22:54   
Thx, flyguille, I'm going to test your trick right now. In fact, I'm trying to make a hybrid asm-basic 32 kb rom (asm in page 1 and basic in page 2).

Cheers!
Ada
msx novice
Berichten: 29
Geplaatst: 05 Mei 2005, 23:02   
Thx to Guillian too! I'm testing right now, mounting the rom... I'll tell soon
Ada
msx novice
Berichten: 29
Geplaatst: 05 Mei 2005, 23:23   
Cool! Both your tricks combined worked! Guillian, that address is supposed to be inside the basic interpreter. Do you know where is it from? What does it call?

Thanks!
Guillian
msx professional
Berichten: 620
Geplaatst: 05 Mei 2005, 23:35   
Yep, it is called when you use the ',R' in LOAD stament. So it just execute the loaded BASIC program
 
 







(c) 1994 - 2008 Stichting MSX Resource Center. MSX is een trademark van MSX Licensing Corporation.