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

⟦84b24898e⟧ TextFile

    Length: 4083 (0xff3)
    Types: TextFile
    Names: »ADA_TASK_MODULE_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  "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