Jump to content
Jet Set Willy & Manic Miner Community

My game - What a Wonderful World of Willie


Jet Set Willie

Recommended Posts

Hi,

I´m back. My game is finished, it mainly needs just playtesting, JetsetDanny has kindly offered himself for that.

But it has one problem, I haven´t been able to solve it. I had to cut the BASIC loader to two parts to make it work. The first part loads and runs OK, but the second part immediately brings an error message C Nonsense in BASIC, 100:1 even there is no error on that line. But typing RUN makes it to continue loading.

I could release it without the BASIC loaders, but I want to keep it as is. Please, could somebody with enough knowledge about ZX BASIC give it a look, while keeping the game as a secret, until I can release it, thank you. 🙂

Link to comment
Share on other sites

What is on line 100

Are you merging the second Basic into the first aka MERGE or are you loading it ?

I'd expect it to fail with tape loading error if there was not enough space because ramtop was too low (technically a bug as it should say "no room" or similar iirc)

 

Another possibility is any code being loaded low down has overwritten part of the Basic too but in that case it tends to (if you can do it) make a complete mess of the listing.

 

Link to comment
Share on other sites

2 minutes ago, Spider said:

What is on line 100

Are you merging the second Basic into the first aka MERGE or are you loading it ?

I'd expect it to fail with tape loading error if there was not enough space because ramtop was too low (technically a bug as it should say "no room" or similar iirc)

G - No room for line is specifically for when adding a line via the BASIC interpreter, R - Tape loading error is correct for errors that occur during tape loading (or verification).

C - Nonsense in BASIC suggests that the code is being changed while running; if you're loading a BASIC program in two parts then each part should be saved with LINE xxxx and jump to the next loader in sequence; trying to continue the existing program when it's changed is going to be unreliable at best.

Link to comment
Share on other sites

Had added a bit while you were typing @DigitalDuck 🙂 , Wrong error I meant to say "out of memory" not "no room" , that one I saw a lot of with 16K 😄 , but yes.

The merging (if it is being merged) is usually reliable but I've not really had to ever use that "in anger" as such with a lot of Basic.

I do agree if its throwing that kind of interpreter error it might be changed while running, a good thought. Not hard to poke a value in , while in Basic but actually accidentally*** change something. As you know what is 'shown' is not always what is executed, numbers certainly, example:

not_what_list.tap

not_what_list.jpg

*** Was done a bit on some custom protection schemes iirc , much obfuscation...

But here in this case for the O.P its not intentional . I do suspect you're right in perhaps a stray POKE or similar is doing something, easily done with a typo.

Link to comment
Share on other sites

57 minutes ago, Spider said:

But here in this case for the O.P its not intentional . I do suspect you're right in perhaps a stray POKE or similar is doing something, easily done with a typo.

It can happen without POKEs too. Memory gets shifted around when loading and/or merging and it's usually fine as long as you're not relying on the program execution continuing from where it was afterwards; as I said, if you save it with LINE xxxx you force it to jump to somewhere else and avoid this issue.

Link to comment
Share on other sites

What I want is to load in the first BASIC program. It will load the second BASIC program then and the second program should over write the first one, not merge them.

Does ZX BASIC always bring an error, if two BASIC programs are loaded in like this, if they are not merged or does not have different line numbers?

 

Line 100, the first program has

100 LOAD "name"

 

The second one has

100 LOAD "name"CODE : INK 0: PAPER 0: PRINT AT 1,0: LOAD "name"CODE 32768

 

I have typed in both BASIC programs with ZX-Editor, so I haven´t SAVEd them using a BASIC command, ie not saved with SAVE "name" LINE...

What number I should use in CLEAR command to make sure the program will not bring out of memory?

Link to comment
Share on other sites

What (where is it loaded) is the piece of code in line 100 of the second program ?

You'd need CLEAR 32767 at a minimum really that will give plenty (ish) Basic space and let the main codeblock load at 32768

 

You're correct, 'load' the second one which will overwrite the first, i am thinking here -if- the second program does -not- have a LINE xyz to start it, as the original has been overwritten it -might- try to continue onwards from the program line counter instead of the start of it... if it was loaded in a new reset machine it would load and not do anything without a LINE however if something is already there...

so if you had say line 200 (example) in the first program of LOAD "" , like 200 LOAD "" (load the next bit)

and the second program did -not- have a LINE when saved...

it -might- start running at line 201 in the -new- program.

Its hugely preferable to add LINE xyz unless merging so that it won't confuse the basic interpreter.

The issue could be as simple as something like that.

 

I'm not sure how Basic will deal with a new piece of Basic without an autostart line number that is loaded (not merged) , assuming the old and new share a line number it may even start executing the 'new' Basic at the next statement in the line that was used in the old program to load it.

Link to comment
Share on other sites

3 hours ago, Spider said:

What (where is it loaded) is the piece of code in line 100 of the second program ?

It loads a loading screen, then it starts to load the actual game.

3 hours ago, Spider said:

You'd need CLEAR 32767 at a minimum really that will give plenty (ish) Basic space and let the main codeblock load at 32768

The first program has CLEAR 32767 already. The second program also starts with CLEAR 32767.


How I can SAVE with LINE in ZX BASIC? When I type  SAVE "name" LINE 10  it brings  SAVE "name" ?LINE 10

Link to comment
Share on other sites

21 hours ago, DigitalDuck said:

G - No room for line is specifically for when adding a line via the BASIC interpreter, R - Tape loading error is correct for errors that occur during tape loading (or verification).

C - Nonsense in BASIC suggests that the code is being changed while running; if you're loading a BASIC program in two parts then each part should be saved with LINE xxxx and jump to the next loader in sequence; trying to continue the existing program when it's changed is going to be unreliable at best.

Thank you, nice to learn these.

Link to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Loading...
  • Recently Browsing   0 members

    • No registered users viewing this page.
×
×
  • Create New...

Important Information

By using this site, you agree to our Terms of Use.