|
|
DataMuseum.dkPresents historical artifacts from the history of: Rational R1000/400 Tapes |
This is an automatic "excavation" of a thematic subset of
See our Wiki for more about Rational R1000/400 Tapes Excavated with: AutoArchaeologist - Free & Open Source Software. |
top - metrics - downloadIndex: S T
Length: 10161 (0x27b1)
Types: TextFile
Names: »SCG_ASM«
└─⟦afbc8121e⟧ Bits:30000532 8mm tape, Rational 1000, MC68020_OS2000 7_2_2
└─⟦77aa8350c⟧ »DATA«
└─⟦f794ecd1d⟧
└─⟦24d1ddd49⟧
└─⟦this⟧
; 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