Does CLEAR Command clear return adrress of a subroutine?


Closed Thread
Results 1 to 15 of 15

Hybrid View

  1. #1
    Join Date
    May 2004
    Location
    NW France
    Posts
    3,653


    Did you find this post helpful? Yes | No

    Default

    Hi, Sayzer

    I didn't look at it very closely ...

    but I feel you can find your solution Here :

    http://www.pbpgroup.com/modules/wfse...p?articleid=14

    and once more ...

    Thanks to Whom ????

    D.A.R.R.E.L. !!!! ..........

    Alain
    ************************************************** ***********************
    Why insist on using 32 Bits when you're not even able to deal with the first 8 ones ??? ehhhhhh ...
    ************************************************** ***********************
    IF there is the word "Problem" in your question ...
    certainly the answer is " RTFM " or " RTFDataSheet " !!!
    *****************************************

  2. #2
    Join Date
    Feb 2003
    Location
    Salt Lake City, Utah USA
    Posts
    517


    Did you find this post helpful? Yes | No

    Default

    Quote Originally Posted by Acetronics View Post
    Hi, Sayzer

    I didn't look at it very closely ...

    but I feel you can find your solution Here :

    http://www.pbpgroup.com/modules/wfse...p?articleid=14

    and once more ...

    Thanks to Whom ????

    D.A.R.R.E.L. !!!! ..........

    Alain
    Darrel's clever method for the 16F type PICs creates a software stack - the real "stack" is not in program or data space and cannot be accessed (unless there is a back door that nobody knows about as Ski suggested)

    I guess that SAYZER could create a software stack (as Alain is suggesting) and then manipulate it as needed? SAYZER, what are you trying to do and with what family of PIC?
    Paul Borgmeier
    Salt Lake City, UT
    USA
    __________________

  3. #3
    Join Date
    May 2004
    Location
    NW France
    Posts
    3,653


    Did you find this post helpful? Yes | No

    Wink

    Hi, Paul

    There's also something Doable ( depends on use ...) :


    A GOSUB loads an address you can choose in the stack ...

    if ending the SUB with a GOTO instead of a RETURN ... This address will stay as the new "return", "retfie" ... address.

    That's used with the "RESUME Label" of PbP ...

    I do not think "clearing" the stack would be really useful ... as a stack containing zeros will cause the device to reset ONLY its program on the first "return or so" met ...

    Alain
    Last edited by Acetronics2; - 9th February 2008 at 18:12.
    ************************************************** ***********************
    Why insist on using 32 Bits when you're not even able to deal with the first 8 ones ??? ehhhhhh ...
    ************************************************** ***********************
    IF there is the word "Problem" in your question ...
    certainly the answer is " RTFM " or " RTFDataSheet " !!!
    *****************************************

  4. #4
    Join Date
    Jan 2006
    Location
    Istanbul
    Posts
    1,185


    Did you find this post helpful? Yes | No

    Default

    As Alain mentioned, there are potential side effects If I start playing directly with the registers.

    Instead now, I am using flags being set to zero before going to a subroutine, and set the flags if something inside the subroutine is used.

    Then at the end of the subroutine(s), I am using a kind of select case with "GOTO".

    This way, I don't have any "return" address to care for.


    This is a little code eating though; but a lot safer.

    -------------------
    "If the Earth were a single state, Istanbul would be its capital." Napoleon Bonaparte

  5. #5
    skimask's Avatar
    skimask Guest


    Did you find this post helpful? Yes | No

    Default

    Quote Originally Posted by sayzer View Post
    As Alain mentioned, there are potential side effects If I start playing directly with the registers.
    Instead now, I am using flags being set to zero before going to a subroutine, and set the flags if something inside the subroutine is used.
    Then at the end of the subroutine(s), I am using a kind of select case with "GOTO".
    This way, I don't have any "return" address to care for.
    This is a little code eating though; but a lot safer.
    -------------------
    How about something like this:
    Code:
    main:
    code....code...code...
    addrreturn = 1
    goto subroutine
    
    return1:
    addrreturn = 2
    goto subroutine
    
    return2:
    addrreturn = 0
    goto main
    
    subroutine:
    code....code....code
    branch addrreturn , [ return1 , return2, return3.................]
    Set your branch return location parameter, jump to the generic subroutine, branch back to wherever it came from. No calls, no gosubs, and so on...

  6. #6
    Join Date
    Feb 2003
    Location
    Salt Lake City, Utah USA
    Posts
    517


    Did you find this post helpful? Yes | No

    Default

    Quote Originally Posted by sayzer View Post
    Instead now, I am using flags being set to zero before going to a subroutine, and set the flags if something inside the subroutine is used.

    Then at the end of the subroutine(s), I am using a kind of select case with "GOTO".

    This way, I don't have any "return" address to care for.

    Hi SAYZER,

    I do not get what you mean by "return" address care ... why can't you just match each "gosub" with a "return" and let PBP do the work.
    Paul Borgmeier
    Salt Lake City, UT
    USA
    __________________

  7. #7
    Join Date
    Jan 2006
    Location
    Istanbul
    Posts
    1,185


    Did you find this post helpful? Yes | No

    Default

    In the code, I jump from locations to locations really very fequently.

    I am having a lot of return addresses.
    _________________________________
    "If the Earth were a single state, Istanbul would be its capital." Napoleon Bonaparte

  8. #8
    Join Date
    Jan 2006
    Location
    Istanbul
    Posts
    1,185


    Did you find this post helpful? Yes | No

    Default

    Ok, here is a simple example good enough to explain the issue.

    Code:
    <font color="#000000">Begin:
    
    OK = <font color="#FF0000"><b>0
    
    
    </b></font>MainMenu:
    <font color="#000080"><i>'...stuff is going on here...
    
        </i><b>IF </b></font>OK = <font color="#FF0000"><b>1 </b></font><font color="#000080"><b>THEN GOSUB </b></font>PrintMemory
    
    
        <font color="#000080"><b>GOTO </b></font>MainMenu
        
        
    PrintMemory:
        <font color="#000080"><b>IF </b></font>Memory = <font color="#FF0000"><b>0 </b></font><font color="#000080"><b>THEN </b></font>Begin
        <font color="#000080"><b>RETURN    </b>
    <i>' IF this IF statement is true, then I get a useless Return address on Stack,
    and I get a lot of them.
    </i></font>
    "If the Earth were a single state, Istanbul would be its capital." Napoleon Bonaparte

Similar Threads

  1. 8x8 keypad matrix...
    By mbox in forum General
    Replies: 5
    Last Post: - 9th October 2014, 19:43
  2. Multiple RETURNS within a single subroutine
    By BrianT in forum mel PIC BASIC Pro
    Replies: 3
    Last Post: - 21st June 2009, 17:43
  3. Interruptus Frustratus
    By Byte_Butcher in forum General
    Replies: 16
    Last Post: - 17th April 2009, 21:36
  4. Replies: 14
    Last Post: - 26th September 2007, 06:41
  5. Can anyone help a beginner in a struggle?
    By douglasjam in forum mel PIC BASIC
    Replies: 1
    Last Post: - 6th May 2005, 00:29

Members who have read this thread : 1

You do not have permission to view the list of names.

Posting Permissions

  • You may not post new threads
  • You may not post replies
  • You may not post attachments
  • You may not edit your posts