Groups | Search | Server Info | Keyboard shortcuts | Login | Register [http] [https] [nntp] [nntps]


Groups > comp.sys.acorn.programmer > #6177

Re: Weird BASIC problem

Subject Re: Weird BASIC problem
Newsgroups comp.sys.acorn.programmer
From Alan Adams <alan@adamshome.org.uk>
Date 2020-07-30 13:54 +0100
Message-ID <159f2d9858.Alan.Adams@ArmX6.adamshome.org.uk> (permalink)
References <9695209858.Alan.Adams@ArmX6.adamshome.org.uk>
Organization Orpheus Internet Services

Show all headers | View raw


[Posted and mailed]

Hi

In message <9695209858.Alan.Adams@ArmX6.adamshome.org.uk>
          Alan Adams <alan@adamshome.org.uk> wrote:

> [Posted and mailed]

> I have a weird problem. A routine which is called successfully hundreds of
> times, always from the same place in the code, fails when one of the
> passed parameters is not defined. However a call to *reporrtstack from
> within the failing routine shows that the variable is being passed in.

> My initial reaction was to increase the wimp slot, because this occurs
> when a variable in increased, so I have a pretty strong suspicion that
> memory is being corrupted somewhere. I don't know where to look though.
> What can undefine a variable in this way?

I've now fixed it. The problem was caused by an incorrectly sized buffer.

The bit that still puzzles me is how *reportstack within the routine 
showed a parameter being passed in, yet immediately before and still 
within the routine *report showed one of the parameters as not defined.

> The called function:

> DEF PROCFD_SET(n%,p%)
>   IF DEBUG%AND1 THEN
>     *report SL: fd_set: n% p% (n% DIV 32) (n% MOD 32)
>     *REPORTSTACK
>   ENDIF
>   p%!((n% DIV 32)*4) = p%!((n% DIV 32)*4) OR (1<<(n% MOD 32))
> ENDPROC

> The reporter result

> SL: fd_set: n%=14 p% (n% DIV 32)=0 (n% MOD 32)=14
> BASIC Stack
>    315 REPEAT
>    326 PROCreturn13(&00074AC0)
>    813 PROCnull(&00074AC0)
>    582 PROCcheckincoming
>    737 FOR Integer=0 [TO 28 STEP 1]
>    794 PROCdespatch(0)
>   1081 WHILE dataend%(client%*2)<>datastart%(client%*2)
>   1137 PROCsavegates_exec(0)
>   3122 PROCsendmessage("",0)
>   3886 PROCsendbuffer(1)
>    661 PROCFD_SET(14,&00092390) [in "Libraries.Slalom_Comms_Lib"]
> 11:23:43.17 ** BASICError ** ERR=4 Mistake ERL=435 [in
> "Libraries.SocketLib"]
> Memory: Prog=153,797 Vars=973,436 Free=146,820 Stack=56 Undefined=0
> Slot=1248K




-- 
Alan Adams, from Northamptonshire
alan@adamshome.org.uk
http://www.nckc.org.uk/

Back to comp.sys.acorn.programmer | Previous | NextPrevious in thread | Next in thread | Find similar | Unroll thread


Thread

Weird BASIC problem Alan Adams <alan@adamshome.org.uk> - 2020-07-30 11:32 +0100
  Re: Weird BASIC problem Alan Adams <alan@adamshome.org.uk> - 2020-07-30 13:54 +0100
    Weird BASIC problem Martin <News03@avisoft.f9.co.uk> - 2020-07-31 12:39 +0100

csiph-web