Annotation of researchv10dc/cmd/pascal/libpc/GOTO.s, revision 1.1

1.1     ! root        1: # Copyright (c) 1979 Regents of the University of California
        !             2: #
        !             3: # sccsid[] = "@(#)GOTO.s 1.3 6/10/81";
        !             4: #
        !             5:        .set    EGOTO,13        #this is dependent upon errdata
        !             6:        .set    PC,16
        !             7: 
        !             8:        .data
        !             9: jmplbl:
        !            10:        .long   0
        !            11: frame:
        !            12:        .long   0
        !            13:        .text
        !            14: 
        !            15:        .globl  _GOTO
        !            16:        .align  1
        !            17: _GOTO:
        !            18:        .word   0
        !            19:        movl    *4(ap),frame    #save parameters
        !            20:        movl    PC(fp),jmplbl
        !            21:        moval   unwind,PC(fp)   #begin unwinding
        !            22:        ret
        !            23: unwind:
        !            24:        tstl    (fp)            #check for exception vector
        !            25:        bneq    L1
        !            26:        cmpl    ap,__disply+8   #check for past global procedure
        !            27:        bgequ   egoto
        !            28:        moval   unwind,PC(fp)   #blow away this stack frame
        !            29:        ret
        !            30: L1:
        !            31:        cmpl    ap,frame        #check for requested frame
        !            32:        bgtru   egoto           #lost it somewhere
        !            33:        blssu   L2              #not there yet
        !            34:        jmp     *jmplbl         #proceed in this section
        !            35: L2:
        !            36:        pushl   -4(fp)          #level of this frame
        !            37:        calls   $1,*(fp)        #call the exception handler
        !            38:        movq    -12(fp),*-4(fp) #restore the display
        !            39:        moval   unwind,PC(fp)   #blow away this stack frame
        !            40:        ret
        !            41: egoto:
        !            42:        pushl   $0
        !            43:        pushal  L3
        !            44:        calls   $2,_ERROR
        !            45:        ret
        !            46: L3:
        !            47:        .asciz  "Active frame not found in non-local goto\n"

unix.superglobalmegacorp.com

This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.