|
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 - 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