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: ┃ S T

⟦f0d8cf092⟧ TextFile

    Length: 10161 (0x27b1)
    Types: TextFile
    Names: »SCG_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, 1989, 1990 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, 1989, 1990.  ALL RIGHTS RESERVED.
;
;
                        
    .case_sensitive
    .module "CALL_ASM"

        .sect   ada_runtime_data,DATA,READONLY,RELOCATABLE,ALIGNMENT:=4
        .sect   ada_runtime_code,CODE,RELOCATABLE,ALIGNMENT:=2

;
;  Entry points 
;
        .gbl.a  __CALL_VALUE_SIZE         
        .gbl.a  __CALL_INIT
        .gbl.a  __CALL_INIT_WITH_TASKS
        .gbl.a  __CALL_ALLOCATE
        .gbl.a  __CALL_ALLOCATE_WITH_TASKS
        .gbl.a  __CALL_DSCRMT_RECORD_ASSIGN
        .gbl.a  __CALL_DSCRMT_RECORD_SATISFIES

        .sect   ada_runtime_code
        
;---------------------------------------------------------------
; function   CALL_VALUE_SIZE  (Subp         : Subprogram_Variable;
;                              Type_Desc    : Type_Descriptor;
;                              Exp          : Expression;
;                              Exp_kind     : Expression_Kind) return Integer;
;
;
;    subprogram sp_rt,sp.internal,linkage.frame+2#00000001_00010000#
    .align      2
__CALL_VALUE_SIZE:            
        clr.l   -(a7)
        link    A6,#0                   ; Build empty frame 
        movea.l ([12,a6],4),a1          ; Pass static link thru A1
        move.l  (24,a6),-(a7)           ; Push Expression_Kind            
        move.l  (20,a6),-(a7)           ; Push Expression
        move.l  (16,a6),-(a7)           ; Push Type Descriptor
        movea.l ([12,a6]),a0            ; Load subprogram address
        jsr.l   (a0)                    ; Call subp 
        unlk    A6                      ; Remove frame
        addq.l  #4,A7                   
        rtd     #16                     ; Exit with parameter pop

;---------------------------------------
; procedure  CALL_INIT (Subp         : Subprogram_Variable;
;                       Type_Desc    : Type_Descriptor;
;                       Dest_Address : System.Address);
;
;
;    subprogram sp_rt,sp.internal,linkage.frame+2#00000001_00010000#
    .local
        $locals'size            equ     0
    .align      2
__CALL_INIT:            
        clr.l   -(a7)                   ; Dummy exception handler
        link    A6,#0                   ; Build empty frame
        movea.l ([12,a6],4),a1          ; Pass static link thru A1
        move.l  (20,a6),-(a7)           ; Push Dest_address
        move.l  (16,a6),-(a7)           ; Push Type_Descriptor
        movea.l ([12,a6]),a0            ; Load subprogram address 
        jsr.l   (a0)                    ; Call subp 
        unlk    A6                      ; Remove frame
        addq.l  #4,A7                   ; Pop exception handler
        rtd     #12                     ; Exit with parameter pop

;---------------------------------------
; procedure  CALL_INIT_WITH_TASKS (Subp             : Subprogram_Variable;
;                                  Type_Desc        : Type_Descriptor;
;                                  Dest_Address     : System.Address;
;                                  Master_Layer     : System.Address;
;                                  Activation_Group : System.Address);
;
;
;    subprogram sp_rt,sp.internal,linkage.frame+2#00000001_00010000#
    .local
        $locals'size            equ     0
    .align      2
__CALL_INIT_WITH_TASKS:            
        clr.l   -(a7)                   ; Dummy exception handler
        link    A6,#0                   ; Build empty frame
        movea.l ([12,a6],4),a1          ; Pass static link thru A1
        move.l  (28,a6),-(a7)           ; Push Activation_Group
        move.l  (24,a6),-(a7)           ; Push Master_Layer
        move.l  (20,a6),-(a7)           ; Push Dest_Address
        move.l  (16,a6),-(a7)           ; Push Type_Descriptor
        movea.l ([12,a6]),a0            ; Load subprogram address 
        jsr.l   (a0)                    ; Call subp 
        unlk    A6                      ; Remove frame
        addq.l  #4,A7                   ; Pop exception handler
        rtd     #20                     ; Exit with parameter pop

;---------------------------------------------------------------
; function   CALL_ALLOCATE (Subp              : Subprogram_Variable;
;                           Type_Desc         : Type_Descriptor;
;                           Collection_Or_Heap: System.Address;
;                           Is_Collection     : Boolean;
;                           Is_Homogeneous    : Boolean)
;                        return System.Address;
;
;    subprogram sp_rt,sp.internal,linkage.frame+2#00000001_00010000#
    .align      2
__CALL_ALLOCATE:            
        clr.l   -(a7)
        link    A6,#0                   ; Build empty frame 
        movea.l ([12,a6],4),a1          ; Pass static link thru A1
        move.l  (28,a6),-(a7)           ; Push Is_Homogeneous flag
        move.l  (24,a6),-(a7)           ; Push Is_Collection flag
        move.l  (20,a6),-(a7)           ; Push Collection_Or_Heap
        move.l  (16,a6),-(a7)           ; Push Type_Descriptor
        movea.l ([12,a6]),a0            ; Load subprogram address
        jsr.l   (a0)                    ; Call subp 
        unlk    A6                      ; Remove frame
        addq.l  #4,A7                   
        rtd     #20                     ; Exit and pop parameters

        
;---------------------------------------------------------------
; function   CALL_ALLOCATE_WITH_TASKS
;                          (Subp               : Subprogram_Variable;
;                           Type_Desc          : Type_Descriptor;
;                           Collection_Or_Heap : System.Address;
;                           Is_Collection      : Boolean;
;                           Is_Homogeneous     : Boolean;
;                           Master_Layer       : System.Address;
;                           Activation_Group   : System.Address)
;                        return System.Address;
;
;    subprogram sp_rt,sp.internal,linkage.frame+2#00000001_00010000#
    .align      2
__CALL_ALLOCATE_WITH_TASKS:            
        clr.l   -(a7)
        link    A6,#0                   ; Build empty frame 
        movea.l ([12,a6],4),a1          ; Pass static link thru A1
        move.l  (36,a6),-(a7)           ; Push Activation_Group
        move.l  (32,a6),-(a7)           ; Push Master_Layer
        move.l  (28,a6),-(a7)           ; Push Is_Homogeneous flag
        move.l  (24,a6),-(a7)           ; Push Is_Collection flag
        move.l  (20,a6),-(a7)           ; Push Collection_Or_Heap
        move.l  (16,a6),-(a7)           ; Push Type_Descriptor
        movea.l ([12,a6]),a0            ; Load subprogram address
        jsr.l   (a0)                    ; Call subp 
        unlk    A6                      ; Remove frame
        addq.l  #4,A7                   
        rtd     #28                     ; Exit and pop parameters

        
;---------------------------------------------------------------
; procedure  CALL_DSCRMT_RECORD_ASSIGN (Subp           : Subprogram_variable;
;                                       Type_Desc      : Type_Descriptor;
;                                       Source         : Expression;
;                                       Source_Kind    : Expression_Kind;
;                                       Dest           : Expression;
;                                       Dest_Kind      : Expression_kind)
;
;    subprogram sp_rt,sp.internal,linkage.frame+2#00000001_00010000#
    .align      2
__CALL_DSCRMT_RECORD_ASSIGN:            
        clr.l   -(a7)
        link    A6,#0                   ; Build empty frame 
        movea.l ([12,a6],4),a1          ; Pass static link thru A1   
        move.l  (32,a6),-(a7)           ; Push Dest_Kind
        move.l  (28,a6),-(a7)           ; Push Dest
        move.l  (24,a6),-(a7)           ; Push Source_Kind
        move.l  (20,a6),-(a7)           ; Push Source
        move.l  (16,a6),-(a7)           ; Push Type_Descriptor
        movea.l ([12,a6]),a0            ; Load subprogram address
        jsr.l   (a0)                    ; Call subp with dest_address
        unlk    A6                      ; Remove frame
        addq.l  #4,A7                   
        rtd     #24                     ; Exit and pop parameters

;---------------------------------------------------------------
; function CALL_DSCRMT_RECORD_SATISFIES 
;                            (Subp           : Subprogram_Variable;
;                             Type_Desc      : Type_Descriptor;
;                             Exp            : Expression;
;                             Exp_Kind       : Expression_Kind)
;             return Boolean;
;
;    subprogram sp_rt,sp.internal,linkage.frame+2#00000001_00010000#
    .align      2
__CALL_DSCRMT_RECORD_SATISFIES:            
        clr.l   -(a7)
        link    A6,#0                   ; Build empty frame 
        movea.l ([12,a6],4),a1          ; Pass static link thru A1   
        move.l  (24,a6),-(a7)           ; Push Expression_Kind
        move.l  (20,a6),-(a7)           ; Push Exp
        move.l  (16,a6),-(a7)           ; Push Type_Descriptor
        movea.l ([12,a6]),a0            ; Load subprogram address
        jsr.l   (a0)                    ; Call subp 
        unlk    A6                      ; Remove frame
        addq.l  #4,A7                   
        rtd     #16                     ; Exit and pop parameters

          

        .end