Annotation of researchv10dc/cmd/pascal/libpc/GOTO.s, revision 1.1.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.