DataMuseum.dk

Presents historical artifacts from the history of:

Rational R1000/400 Tapes

This is an automatic "excavation" of a thematic subset of
artifacts from Datamuseum.dk's BitArchive.

See our Wiki for more about Rational R1000/400 Tapes

Excavated with: AutoArchaeologist - Free & Open Source Software.


top - download
Index: ┃ R T

⟦8f8c0da83⟧ TextFile

    Length: 3689 (0xe69)
    Types: TextFile
    Names: »RAISING_ASM«

Derivation

└─⟦afbc8121e⟧ Bits:30000532 8mm tape, Rational 1000, MC68020_OS2000 7_2_2
    └─ ⟦77aa8350c⟧ »DATA« 
        └─⟦f794ecd1d⟧ 
            └─⟦24d1ddd49⟧ 
                └─⟦this⟧ 

TextFile

;    The use of this system is subject to the software license terms and
;    conditions agreed upon between Rational and the Customer.
;
;                Copyright 1988 by Rational.
;
;                          RESTRICTED RIGHTS LEGEND
;
;    Use, duplication, or disclosure by the Government is subject to
;    restrictions as set forth in subdivision (b)(3)(ii) of the Rights in
;    Technical Data and Computer Software clause at 52.227-7013.
;
;
;                Rational
;                3320 Scott Boulevard
;                Santa Clara, California 95054-3197
;
;   PROPRIETARY AND CONFIDENTIAL INFORMATION OF RATIONAL;
;   USE OR COPYING WITHOUT EXPRESS WRITTEN AUTHORIZATION
;   IS STRICTLY PROHIBITED.  THIS MATERIAL IS PROTECTED AS
;   AN UNPUBLISHED WORK UNDER THE U.S. COPYRIGHT ACT OF
;   1976.  CREATED 1988.  ALL RIGHTS RESERVED.
;
;

        .module "RAISING"
;
;
;

        .include    "^^standard_assembler_include_file"
        .include    "^^common.runtime_definitions"
        .include    "^^common.os2000_definitions"

        comp_unit  runtime_compunit

        .sect   ada_runtime_code,code,relocatable,alignment:=2

        .gbl.l  __raising_elab

        .gbl.l  __raise_exception
        .gbl.l  __propagate_exception

        .gbl.l  __raise_constraint_error
        .gbl.l  __raise_storage_error
        .gbl.l  __unelaborated_subprogram
    
        .ext.l  __propagate_exception_branch
        .ext.l  __get_exception_indirect
        .ext.l  __set_exception_indirect

        .ext.l  __trace_exception
        .ext.l  __error_path

        .ext.l  __constraint_error
        .ext.l  __storage_error
        .ext.l  __program_error
        .ext.l  __tasking_error
        .ext.l  __numeric_error

        .ext.l  __tasking_error_var

        subprogram sp_rt,sp.internal,linkage.simple
__raise_storage_error:
        lea     (__storage_error:16,a5),A0
        bra.b   $move_exception_and_raise

        subprogram sp_rt,sp.internal,linkage.simple
__unelaborated_subprogram:
__raise_program_error:
        lea     (__program_error:16,a5),a0
        bra.b   $move_exception_and_raise

        subprogram sp_rt,sp.internal,linkage.simple
__raise_constraint_error:
        lea     (__constraint_error:16,a5),a0
$move_exception_and_raise:
        move.l  a0,D0
        bra.w   __raise_exception

        subprogram sp_rt,sp.internal,linkage.simple
__raise_exception:
        move.l  (a7),-(a7)                      ; Save copy of raise pc
        statement  0,0,1 
        move.l  d0,-(a7)                        ; push exception id 
        statement 0,0,2
        move.l  d0,-(a7)                        ; push exception id 
        statement 0,0,3
        jsr     ([__set_exception_indirect,a5]) ; call set Exception_Id
        statement 0,0,2
        bsr.l   __trace_exception               ; go to tracing routine   
        statement 0,0,1

propagate:
        jmp     ([__propagate_exception_branch,a5]) ; return to user code
;
;       procedure Propagate_Exception;
;
        subprogram sp_rt,sp.internal,linkage.simple
__propagate_exception:    
        jsr     ([__get_exception_indirect,a5]) ; get Exception_Id 
        tst.l   d0                              ; is is abortion?
        beq.b   propagate                       ; if so don't trace

        move.l  d0,-(sp)
        statement 0,0,1
        bsr.l   __trace_exception               ; go to tracing routine
        statement 0,0,0
        bra.s   propagate
;
;       Elaboration
;
        subprogram sp_rt,sp.internal,linkage.simple
__raising_elab:
        lea     (__tasking_error:16,a5),a0
        move.l  a0,(__tasking_error_var:16,a5)
        rts

        end_subprograms

        .end