Re: DEF USR and strings?

Allen Huffman via Coco <coco-uNHYcr1XS/wmlAP/[email protected]>
Newsgroups gmane.comp.hardware.tandy.coco
Message-ID <[email protected]>
Okay, a bit trickier, but I think I figured it out:

> On Oct 31, 2025, at 4:43 PM, Sean Conner via Coco <[email protected]> wrote:
> 
>  Based on all that, I think the best method might be (completely untested):
> 
> 	mycode		cmpx	#mycode
> 			beq	called_by_exec
> 		; otherwise, assume called by USR/USRn
> 
>  Good luck.

For debugging, I had my code take X and store it in the first two bytes of the 32 column screen. Then I would load what was in the $9D (EXEC address) and store it next to that.

From looking at the pattern:

EXEC &HABCD

…$ABCD is in X, and in $9D (EXECJP)

EXEC (by itself)

…$ABAB is in X, and $ABCD is in $9D.

Else, called by USR.

How’s this?

;* lwasm whocalled.asm -fbasic -owhocalled.bas --map
;* decb copy -2 whocalled.bin drive0.dsk,WHOCALLD.BIN

ORGADDR equ     $3e00   ;* Where program loads in memory.

;* Absolute addresses of items in RAM variables.
EXECJP      equ     $9d     location of jump address for EXEC
VIDRAM      equ     $400    VIDEO DISPLAY AREA

;* Absolute addresses of ROM calls.
CHROUT      equ	    $A002

    org     ORGADDR

;* This code expects to have been called by USRx(x).
start       cmpx	#start      ;* called by "EXEC xxxx"?
            beq     fromexec    ;* if yes, goto fromexec
            cmpx    #$abab      ;* called by "EXEC"?
            bne     fromusr     ;* if no, must be USR. goto fromusr
            ldx     EXECJP      ;* get EXEC address
            cmpx	#start      ;* called by "EXEC xxxx"?
            beq     fromexec    ;* if yes, goto from exec
fromusr
            leax    usrmsg,pcr
            lbsr    print
            rts
fromexec    leax    execmsg,pcr
            lbsr    print
            rts

;* PRINT subroutine. Prints the 0-terminated string pointed to by X plus CR.
print       lda     ,x+
            beq     printdone
            jsr     [CHROUT]
            bra     print
printdone   lda     #13
            jsr     [CHROUT]
            rts

usrmsg      fcc     "FROM USR"
            fcb     0

execmsg     fcc     "FROM EXEC"
            fcb     0

            end




-- 
Coco mailing list
[email protected]
https://pairlist5.pair.net/mailman/listinfo/coco
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.