In article <58ca3e...@sick-of-spam.invalid>,
Bob Latham <b...@sick-of-spam.invalid> wrote:
> In article <
58ca3a4a...@avisoft.f9.co.uk>,
> Martin <
New...@avisoft.f9.co.uk> wrote:
> > In article <58ca26...@sick-of-spam.invalid>,
> > Bob Latham <b...@sick-of-spam.invalid> wrote:
> > > > Not sure what, if or how you have set workspace.
> > > It starts out as just the "next" slot 640K.
> > So how is the expression 'workspace' set to &8000+next ?
> A perfectly reasonable question when eventually I understood it. For
> some reason it didn't dawn at first.
> There is a label in the assembler right at the end.
> .workspace
> It should then sit right above the assembled code.
> So you'll now want to know O% and P% I presume?
> P%=&40000:O%=&40000
Are you saving the assembled code, then running the saved file?
Or calling the code from within the BASIC?
If the latter, then if your next slot is 640K, then &40000 is below
that. When the code is executed, if a 7MB file is loaded at the end
of the code, it will overwrite the end of the BASIC memory (as just
below &80000+640k) and so the BASIC stack will be overwritten. This
would cause problems when the called assembled code returns back to
the BASIC program - hence the abort in the BASIC module. The assembled
code will have saved the file ok.