|
|
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: A T
Length: 4083 (0xff3)
Types: TextFile
Names: »ADA_TASK_MODULE_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 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 "OS2000_TASK_MODULE"
;
; This section defines the OS-2000 module that is passed to
; the F$Fork call when an Ada task is spawned.
;
.include "^^standard_assembler_include_file"
.include "^^Common.Runtime_Definitions"
.include "^^Common.Os2000_Definitions"
comp_unit Runtime_Compunit
.sect ADA_TASK_MODULE,relocatable,code,readonly,alignment:=4
sync_bytes equ 16#4afc#
system_rev equ 1
group_id equ 5
user_id equ 0
access_rights equ 2#0000_0101_0101_0101# ; public/group/owner = er
program_type equ 1
object_code equ 1
shared_module equ 2#1000_0000#
m_id: .dc.w sync_bytes
m_sysrev: .dc.w system_rev
m_size: .dc.l endcrc + 1
m_owner:
m_owner.grp: .dc.w group_id
m_owner.usr: .dc.w user_id
m_name: .dc.l name
m_accs: .dc.w access_rights
m_type: .dc.b program_type
m_lang: .dc.b object_code
m_attr: .dc.b shared_module
m_revs: .dc.b 0
m_edit: .dc.w 0
m_usage: .dc.l name
m_symbol: .dc.l 0
m_reserved: .dc.w 0,0,0,0,0,0,0
m_parity: .dc.w 0
;
;
m_exec: .dc.l 0
m_excpt: .dc.l undefined_trap
m_mem: .dc.l 0
m_stack: .dc.l 0
m_idata: .dc.l init_data
m_irefs: .dc.l init_refs
;
; thats the end of the real header
;
;
; The following MUST resolve to locations $48 through $4F as the object
; converter manipulates these blindly. Locations $48 and $4C will be
; overwritten with the 32 bit machine id and object id respectively of
; the <EXE> file. NOTE: LOCATION $50 IS NOT RESERVED TO CONTAIN THE
; SIZE OF HEAP IN ADA_TASK AND IF YOU USE THE OBJECT CONVERTER TO
; OVERWRITE THIS VALUE, IT WILL DESTROY ADA_TASK!
;
__runtime_machine_id: .dc.l 16#0505_0505# ; Altered during conversion
__runtime_object_id: .dc.l 16#A0A0_A0A0# ; Altered during conversion
init_data: .dc.l 0,0;
init_refs: .dc.l 0,0;
.align 2
name: .asciz "ADA_TASK"
.align 2
subprogram sp_rt,sp.internal,linkage.none
start:
;; Remember Ada program parent ID.
;;
;; Get the current process pointer, move parent ID.
;; use d4 and a4, undefined by F$Fork.
;;
move.l sp,d4 ; Find address of own CCT
andi.l #(-A32_SIZE),d4
movea.l ([(CCT_START+pi_cpt),d4.l],CPT_Current_Proc),a4
movea.l (a4),a4 ; Get pointer to own process descriptor
move.w (P$PID,a4),(P$ExtPid,a4) ; Remember parent id
;;
jmp ([a7]) ; cross-module jump to _ART_Task_Code_Start
subprogram sp_rt,sp.internal,linkage.none
undefined_trap:
moveq.l #some$error,d1
trap #0
.dc.w f$exit
;
; Trailing bytes for CRC
;
.dc.b 0 ; force even module size
.dc.b 0 ; must always be 0
.dc.b 0 ; updated to valid CRC value
.dc.b 0 ; updated to valid CRC value
endcrc: .dc.b 0 ; updated to valid CRC value
end_subprograms
.end start