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

⟦a87044503⟧ TextFile

    Length: 75043 (0x12523)
    Types: TextFile
    Names: »OS2000_IO_LIST«

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_IO"
                                                
                                                ;
                                                ;    Implements the body of the Ada package Os2000_Io which
                                                ;    provides the services needed for Os_Dependent_Io.       
                                                ;    
                                                        .include "^standard_assembler_include_file"
        00000000                                        .push_list
        00000000                                        .pop_list
        00000000                                        .list macro_expansion = none
                                                        .include "^common.runtime_definitions"
                                                ;
                                                ;   This number is used to check the compatibility
                                                ;   of the program and the loaded shared runtime.
                                                ;   The value must be incremented whenever an execution
                                                ;   incompatible change is made in the runtime.
                                                ;
                                                ;       Version         Incompatible changes in this version
                                                ;       -------         ------------------------------------
                                                ;           0           Initial release of shared runtime
                                                ;
                                                ;           1           Changed Os2000_Process_Defs to use
                                                ;                       special Ada work area rather than
                                                ;                       user accounting area.
                                                ;
                                                ;           2           Added 12 long words of spare storage
                                                ;                       in Runtime_Data; this will permit
                                                ;                       some addition of data in the shared
                                                ;                       runtime to be compatible. 
                                                ;
                                                ;           3           1.) Rev 6 compiler
                                                ;                       2.) Runtime entry point table now 16-bit
                                                ;                           offset from table to entry in words.
                                                ;                       3.) Deleted some unnecessary shared data items.
                                                ;                       4.) General cleanup
                                                        compatibility_version   equ 3
                                                ;
                                                ;   Amount of stack space reserved for the runtime in bytes
                                                ;
                                                        runtime$stack$cushion  equ 1024  
                                                ;
                                                ;   Values for certain runtime error messages and warnings.
                                                ;
                                                        error$code                      equ     16#8000#    
                                                        warning$code                    equ     16#8100#
                                                
                                                        elaboration$ferror              equ     1
                                                        finalization$ferror             equ     2
                                                        unhandled$main$trap$ferror      equ     3
                                                        lib$exception$ferror            equ     5
                                                        main$exception$ferror           equ     6
                                                        init$trap$handler$ferror        equ     37
                                                        insufficient$stack$ferror       equ     44
                                                        no$runtime$ferror               equ     45
                                                        rt$incompatible$ferror          equ     46
                                                
                                                        task$exception$warning          equ     1
                                                        heap$create$warning             equ     2       
                                                        stack$request$warning           equ     4
                                                
                                                ;
                                                ;   Values used in exit system call
                                                ;
                                                
                                                        No$Error                        equ     0
                                                        Some$Error                      equ     1
                                                ;
                                                ;   Comp Unit id for all runtime units except predefined exceptions 
                                                ;
                                                        runtime_compunit                equ     17      
                                                ;
                                                ;   Comp Unit id for predefined exception
                                                ;
                                                        exception_compunit              equ     1
                                                ;
                                                ;   Subprogram kind for runtime suprograms
                                                ;
                                                        sp_rt                           equ     1
                                                ;
                                                ;   Special statement numbers
                                                ;
                                                        stmt.end_prolog                 equ     1
                                                        stmt.begin_epilog               equ     16#7FFF#
                                                ;
                                                ;   Subprogram ids for debug directives within runtime
                                                ;   entry points.
                                                ;
                                                        sp.internal                             equ     16#0_00#
                                                
                                                        sp.enum_image                           equ     16#1_00#
                                                        sp.enum_pos                             equ     16#1_01#
                                                        sp.enum_pred                            equ     16#1_02#
                                                        sp.enum_succ                            equ     16#1_03#
                                                        sp.enum_value                           equ     16#1_04#
                                                        sp.enum_width                           equ     16#1_05#
                                                        sp.int_image                            equ     16#1_06#
                                                        sp.int_value                            equ     16#1_07#
                                                        sp.int_width                            equ     16#1_08#
                                                
                                                        sp.allocate_collection                  equ     16#2_00#
                                                        sp.allocate_fixed_cell                  equ     16#2_01#
                                                        sp.deallocate_collection                equ     16#2_02#
                                                        sp.deallocate_fixed_cell                equ     16#2_03#
                                                        sp.collection_size                      equ     16#2_04#
                                                   
                                                        sp.initialize_master                    equ     16#3_00#
                                                        sp.create_task                          equ     16#3_01#
                                                        sp.activate_offspring                   equ     16#3_02#
                                                        sp.notify_parent                        equ     16#3_03#
                                                        sp.task_end                             equ     16#3_04#
                                                        sp.await_dependents                     equ     16#3_05#
                                                        sp.task_completion                      equ     16#3_06#
                                                        sp.terminate_allocated_offspring        equ     16#3_07#
                                                        sp.terminate_dependent_offspring        equ     16#3_08#
                                                        sp.entry_call                           equ     16#3_09#
                                                        sp.conditional_entry_call               equ     16#3_0A#
                                                        sp.timed_entry_call                     equ     16#3_0B#
                                                        sp.begin_accept                         equ     16#3_0C#
                                                        sp.end_accept                           equ     16#3_0D#
                                                        sp.quick_accept                         equ     16#3_0E#
                                                        sp.close_alternatives                   equ     16#3_0F#
                                                        sp.open_delay                           equ     16#3_10#
                                                        sp.open_entry                           equ     16#3_11#
                                                        sp.open_terminate                       equ     16#3_12#
                                                        sp.select_rendezvous                    equ     16#3_13#
                                                        sp.abort_multiple_tasks                 equ     16#3_14#
                                                        sp.check_return_task                    equ     16#3_15#
                                                        sp.delay_statement                      equ     16#3_16#
                                                        sp.entry_count                          equ     16#3_17#
                                                        sp.task_callable                        equ     16#3_18#
                                                        sp.task_stack_size                      equ     16#3_19#
                                                        sp.task_terminated                      equ     16#3_1A#
                                                
                                                        sp.raise_exception                      equ     16#4_00#
                                                        sp.raise_constraint_error               equ     16#4_01#
                                                        sp.propagate_exception                  equ     16#4_02#
                                                        sp.stack_check                          equ     16#4_03#
                                                
                                                        sp.mantissa                             equ     16#5_00#
                                                        sp.large                                equ     16#5_01#
                                                        sp.fixed_multiply                       equ     16#5_02#
                                                        sp.compare_8_bit_unsigned               equ     16#5_03#
                                                        sp.compare_8_bit_signed                 equ     16#5_04#
                                                        sp.compare_16_bit_unsigned              equ     16#5_05#
                                                        sp.compare_16_bit_signed                equ     16#5_06#
                                                        sp.compare_32_bit_unsigned              equ     16#5_07#
                                                        sp.compare_32_bit_signed                equ     16#5_08#
                                                ;
                                                ;   Linkage mechanisms used in assembly routines.
                                                ;
                                                ;       Identification of the mechanism in a .subprogram directive
                                                ;       and information provided in .statement directives enable
                                                ;       the debugger to find the return pc.
                                                ;
                                                        linkage.frame   equ 16#00_00_00_00#     ; return pc may be found at
                                                                                                ; offset from frame pointer
                                                
                                                        linkage.simple  equ 16#10_00_00_00#     ; return pc may be found at
                                                                                                ; offset from stack pointer
                                                
                                                        linkage.none    equ 16#50_00_00_00#     ; no return pc exists,
                                                                                                ; in bottom routine
                                                
                                                        linkage.trap    equ 16#60_00_00_00#     ; in trap handling code
                                                ;
                                                ;       Definitions for locking primitives
                                                ;
                                                
                                                                .offset 0       ;  type Q_Element is
                                                                                ;      record
        00000008                                element'size:                   ;      end record;
                                                ;
                                                ;       Ada task control block (TCB) definitions
                                                ;
                                                                                .offset 0
                                                
                                                                                
                                                
        00000050                                tcb'size:
                                                
                                                b.action_state.exception_pending        equ     3
                                                
                                                        .include "^common.os2000_definitions"
                                                ;
                                                ;       Definitions for CCT (Communication Control Table)
                                                ;
                                                
                                                cct_start       equ     1024     ; CCT offset from window start
                                                pi_cpt          equ     88       ; Offset for pointer to CPT
                                                ;
                                                ;       HSI addressing conventions
                                                ;
                                                a32_size        equ     16#02000000#;
                                                ;
                                                ;       Offsets in the Configuration Parameter Table.
                                                ;
                                                CPT_System_Time         equ     0       ; Offset to system time HW pointer
                                                
                                                CPT_Political_Time      equ     4       ; Offset to political time offset
                                                
                                                CPT_Current_Proc        equ     64      ; Offset to Os9 current process pointer 
                                                 
                                                
                                                CPT_MsgQ_Pointer        equ     144     ; Offset to Message_Queues pointer
                                                                                        ; points to MqGlobals control block
                                                
                                                CPT_Ada_Runtime_Ptr     equ     152     ; Offset in CPT to Ada Runtime pointer
                                                                                        ; points to beginning of table of
                                                                                        ; runtime entry points
                                                ;
                                                ;       OS9 system call definitions
                                                ;
                                                        os9_call        equ     0
                                                ;
                                                ;       An OS9 system call is perform with the following sequence:
                                                ;               trap    #OS9_Call
                                                ;               .dc.w   call_code
                                                ;
                                                ;       where call code is one of the following user mode calls
                                                ;       or I/O calls
                                                ;    
                                                ;       User mode system call definitions
                                                ;
                                                        F$Exit          equ     16#006#
                                                        F$Fork          equ     16#003#
                                                        F$Icpt          equ     16#009#
                                                        F$Julian        equ     16#020#
                                                        F$Link          equ     16#000#
                                                        F$PEAB          equ     16#0FA#
                                                        F$PErr          equ     16#00F#
                                                        F$RTE           equ     16#01E#
                                                        F$SPrior        equ     16#00D#
                                                        F$SRqMem        equ     16#028#
                                                        F$STime         equ     16#016#
                                                        F$STrap         equ     16#00E#
                                                        F$Send          equ     16#008#
                                                        F$Sleep         equ     16#00A#
                                                        F$Time          equ     16#015#
                                                ;
                                                ;       OS9 I/O system call definitions
                                                ;
                                                        I$Close         equ     16#08F#
                                                        I$Create        equ     16#083#
                                                        I$Delete        equ     16#087#
                                                        I$GetStt        equ     16#08D#
                                                        I$Last          equ     16#093#
                                                        I$Open          equ     16#084#
                                                        I$Read          equ     16#089#
                                                        I$ReadLn        equ     16#08B#
                                                        I$SGetSt        equ     16#092#
                                                        I$Seek          equ     16#088#
                                                        I$SetStt        equ     16#08E#
                                                        I$WritLn        equ     16#08C#
                                                        I$Write         equ     16#08A#;
                                                ;
                                                ;       Access mode for Open
                                                ;
                                                        Read_Mode       equ     1
                                                        Write_Mode      equ     2
                                                        Execute         equ     4
                                                ;
                                                ;       Function codes for the I$GetStt call
                                                ;
                                                        SS_Opt          equ     16#0000#
                                                        SS_Size         equ     16#0002#
                                                        SS_Pos          equ     16#0005#
                                                        SS_EOF          equ     16#0006#
                                                        SS_DevNm        equ     16#000E#
                                                ;
                                                ;       Standard paths
                                                ;
                                                        Standard_Input  equ     0
                                                        Standard_Output equ     1
                                                        Standard_Error  equ     2
                                                ;
                                                ;       I/O Error Codes
                                                ;
                                                        E$BPNum         equ     16#00C9#        ; bad path number
                                                ;
                                                ;       OS9 trap definitions
                                                ;
                                                        T_AddErr        equ     16#000C#
                                                        T_BusErr        equ     16#0008#
                                                        T_IllIns        equ     16#0010#
                                                        T_CHK           equ     16#0018#
                                                        T_TRAPV         equ     16#001C#
                                                        T_FPDivZer      equ     16#00C8#
                                                        T_FPInxact      equ     16#00C4#
                                                        T_FPNotNum      equ     16#00D8#
                                                        T_FPOprErr      equ     16#00D0#
                                                        T_FPOverFl      equ     16#00D4#
                                                        T_FPUndrFl      equ     16#00CC#
                                                        T_FPUnordC      equ     16#00C0#
                                                        T_ZerDiv        equ     16#0014#
                                                ;
                                                ;       OS2000 process descriptor definitions
                                                ;
                                                P$DefIOSiz      equ 32          ; Default I/O data area size
                                                P$NumPaths      equ 32          ; Number of local paths            
                                                P$MemBlks       equ 32          ; Number of separate memory blocks per process
                                                
                                                                .offset 0       ; Process descriptor
        00000398                                p$JobCon:
        000003A8                                P$AdaWrk:
        000003E8                                P$Last:                         ; Size of a process header
        00000800                                P$Stack:                        ; Top of system stack for process
        00000800                                P$Size:                         ; Size of process descriptor
                                                ;
                                                ;       Values for process state (P$STATE)
                                                ;
                                                P$SysState      equ     16#80#  ; Executing system state routine
                                                P$TimSleep      equ     16#40#  ; Timed sleep
                                                P$TimOut        equ     16#20#  ; time slice has expired
                                                P$ImgChg        equ     16#10#  ; SPU/MMU protection map has changed
                                                P$Condemn       equ     16#02#  ; process is condemned
                                                P$Dead          equ     16#01#  ; Process has terminated
                                                ;
                                                ;       Values for process queue id (P$QUEUID
                                                ;
                                                P$QActive       equ     'a'     ; active process queue
                                                P$QSleep        equ     's'     ; sleep queue
                                                P$QWait         equ     'w'     ; Waiting queue
                                                P$QEvent        equ     'e'     ; Event queue
                                                P$QCurrnt       equ     '*'     ; No queue, currently running
                                                P$QDebug        equ     'd'     ; No queue, inactively debugging
                                                P$QDead         equ     '-'     ; No queue, dead process
                                                ;
                                                ; User register stack image
                                                ;
                                                                .offset 0
        00000048                                R$Size:                         ; Size of register package
                                                
                                                ;
                                                ; Status register equates
                                                ;
                                                R$TraceBit      equ     16#8000#    ; Trace bit in SR word
                                                R$SupvrBit      equ     16#2000#    ; Supervisor bit in SR word
                                                R$IntMask       equ     16#0700#    ; Interrupt mask in SR word
                                                R$Extend        equ     16#0010#    ; Extend bit
                                                R$Negative      equ     16#0008#    ; Negative bit
                                                R$Zero          equ     16#0004#    ; Zero bit
                                                R$Ov            equ     16#0002#    ; Overflow
                                                R$Carry         equ     16#0001#    ; Carry 
                                                
                                                ; 68881 FPU context save area
                                                                .offset 0
                                                
                                                        comp_unit runtime_compunit
                                                 
                                                
                                                        .sect   predefined_code,relocatable,code,readonly,alignment:=2
                                                ;    
                                                        .ext.l   __Process_Descriptor_Pointer
                                                
                                                        .gbl.l  __OS9_I$Create
                                                        .gbl.l  __OS9_I$Open
                                                        .gbl.l  __OS9_I$Close
                                                        .gbl.l  __OS9_I$Delete
                                                        .gbl.l  __OS9_I$Read
                                                        .gbl.l  __OS9_I$Readln
                                                        .gbl.l  __OS9_I$Write
                                                        .gbl.l  __OS9_I$Seek
                                                        .gbl.l  __OS9_I$GetStt_Pos
                                                        .gbl.l  __OS9_I$GetStt_EOF
                                                        .gbl.l  __OS9_I$GetStt_Size
                                                        .gbl.l  __OS9_I$GetStt_Opt
                                                        .gbl.l  __OS9_I$GetStt_DevNm
                                                        .gbl.l  __OS9_I$SetStt_Opt
                                                        .gbl.l  __OS9_I$SetStt_Size
                                                    
                                                        .gbl.l  __Get_Unique_Task_Key
                                                        .gbl.l  _ART_F$Time
                                                        .gbl.l  __Get_Time_Of_Day
                                                ;
                                                ;   procedure Create (Name       :     System.Address;
                                                ;                     Mode       :     Natural;
                                                ;                     Attributes :     Natural;
                                                ;                     New_Path   : out Path_Number;
                                                ;                     Result     : out Stratus);
                                                ;
                                                        subprogram sp_rt,sp.internal,linkage.simple
                                                 
        00000000                                __os9_i$create:                                 
                                                        .local
                                                
                                                        $name'offset            equ 4
                                                        $mode'offset            equ 8
                                                        $attrs'offset           equ 12
                                                        $new_path'offset        equ 16
                                                        $result'offset          equ 20
                                                
        00000000   206F0004                             movea.l ($name'offset,sp),a0           ; pathname pointer
        00000004   202F0008                             move.l  ($mode'offset,sp),d0           ; file access mode
        00000008   222F000C                             move.l  ($attrs'offset,sp),d1          ; file attributes
        0000000C   42AF0010                             clr.l   ($new_path'offset,sp)
        00000010   42AF0014                             clr.l   ($result'offset,sp)
                                                
        00000014   4E40                                 trap    #os9_call
        00000016   0083                                 .dc.w   i$create                        ; make create call
                                                
        00000018   6400                                 bcc.b   $exit
                                                
        0000001A   3F410016                     $error: move.w  d1,($result'offset+2,sp)
        0000001E   7000                                 moveq.l #0,d0
                                                
        00000020   3F400012                     $exit:  move.w  d0,($new_path'offset+2,sp)      ; store path number 
        00000024   4E75                                 rts
                                                ;
                                                ;   procedure Open (Name     :     System.Address;
                                                ;                   Mode     :     Natural;
                                                ;                   New_Path : out Path_Number;
                                                ;                   Result   : out Stratus);
                                                ;
                                                        subprogram sp_rt,sp.internal,linkage.simple
                                                 
        00000026                                __OS9_I$Open:
                                                        .local
                                                        
                                                        $name'offset            equ 4
                                                        $mode'offset            equ 8
                                                        $new_path'offset        equ 12
                                                        $result'offset          equ 16
                                                
        00000026   206F0004                             movea.l ($name'offset,sp),a0            ; pathname pointer
        0000002A   202F0008                             move.l  ($mode'offset,sp),d0            ; file access mode
        0000002E   42AF000C                             clr.l   ($new_path'offset,SP)           ; New_Path := null
        00000032   42AF0010                             clr.l   ($result'offset,sp)             ; result := successful
                                                
        00000036   4E40                                 trap    #os9_call
        00000038   0084                                 .dc.w   i$open                          ; make open call
                                                
        0000003A   6400                                 bcc.b   $exit
                                                        
        0000003C   3F410012                     $error: move.w  d1,($result'offset+2,sp)        ; store statue
        00000040   7000                                 moveq.l #0,d0                           ; new_path := 0
                                                
        00000042   3F40000E                     $exit:  move.w  d0,($new_path'offset+2,sp)      ; store path number 
        00000046   4E75                                 rts
                                                ;
                                                ;   procedure Close (Path : Path_Number; Result : out Stratus);
                                                ;
                                                        subprogram sp_rt,sp.internal,linkage.simple
                                                 
        00000048                                __os9_i$close:                                  
                                                        .local
                                                        
                                                        $path'offset    equ 4
                                                        $result'offset  equ 8
                                                
        00000048   202F0004                             move.l  ($path'offset,sp),d0            ; path number
        0000004C   42AF0008                             clr.l   ($result'offset,sp)             ; result := successful
                                                
        00000050   4E40                                 trap    #os9_call
        00000052   008F                                 .dc.w   i$close                         ; make close call
                                                
        00000054   6400                                 bcc.b   $exit
                                                
        00000056   3F41000A                     $error: move.w  d1,($result'offset+2,sp)
                                                
        0000005A   4E75                         $exit:  rts
                                                ;
                                                ;   procedure Delete (Name : System.Address; Result : out Stratus);
                                                ;
                                                        subprogram sp_rt,sp.internal,linkage.simple
                                                 
        0000005C                                __os9_i$delete:                                 
                                                        .local
                                                        
                                                        $name'offset    equ 4
                                                        $result'offset  equ 8
                                                
        0000005C   42AF0008                             clr.l   ($result'offset,sp)             ; result := successful
        00000060   7003                                 moveq.l #3,d0                           ; use data directory 
        00000062   206F0004                             movea.l ($name'offset,sp),a0            ; pathname pointer
                                                
        00000066   4E40                                 trap    #os9_call
        00000068   0087                                 .dc.w   i$delete
                                                
        0000006A   6400                                 bcc.b   $exit
                                                
        0000006C   3F41000A                     $error: move.w  d1,($result'offset+2,sp)
                                                
        00000070   4E75                         $exit:  rts
                                                ;
                                                ;   procedure Read (Path       :     Path_Number;
                                                ;                   Count      :     Natural;
                                                ;                   Buffer     :     System.Address;
                                                ;                   Bytes_Read : out Natural;
                                                ;                   Result     : out Stratus);
                                                ;
                                                        subprogram sp_rt,sp.internal,linkage.simple
                                                 
        00000072                                __os9_i$read:
                                                        .local
                                                
                                                        $path'offset            equ 4
                                                        $count'offset           equ 8
                                                        $buffer'offset          equ 12
                                                        $bytes_read'offset      equ 16
                                                        $result'offset          equ 20
                                                
        00000072   202F0004                             move.l  ($path'offset,sp),d0            ; path number
        00000076   222F0008                             move.l  ($count'offset,sp),d1           ; max byte count
        0000007A   206F000C                             movea.l ($buffer'offset,sp),a0          ; buffer address
        0000007E   42AF0014                             clr.l   ($result'offset,sp)             ; result := successful
                                                
        00000082   4E40                                 trap    #os9_call
        00000084   0089                                 .dc.w   i$read                          ; make read call
                                                
        00000086   6400                                 bcc.b   $exit
                                                
        00000088   3F410016                             move.w  d1,($result'offset+2,sp)
        0000008C   7200                                 moveq.l #0,d1
                                                
        0000008E   2F410010                     $exit:  move.l  d1,($bytes_read'offset,sp)             ; store bytes_read
        00000092   4E75                                 rts
                                                ;
                                                ;    procedure Readln (Path       :     Path_Number;
                                                ;                      Count      :     Natural;
                                                ;                      Buffer     :     System.Address;
                                                ;                      Bytes_Read : out Natural;
                                                ;                      Result     : out Stratus);
                                                ;
                                                        subprogram sp_rt,sp.internal,linkage.simple
                                                 
        00000094                                __os9_i$readln:
                                                        .local
                                                
                                                        $path'offset            equ 4
                                                        $count'offset           equ 8
                                                        $buffer'offset          equ 12
                                                        $bytes_read'offset      equ 16
                                                        $result'offset          equ 20
                                                
        00000094   202F0004                             move.l  ($path'offset,sp),d0            ; path number
        00000098   222F0008                             move.l  ($count'offset,sp),d1           ; max byte count
        0000009C   206F000C                             movea.l ($buffer'offset,sp),a0          ; buffer address
        000000A0   42AF0014                             clr.l   ($result'offset,sp)             ; result := successful
                                                
        000000A4   4E40                                 trap     #os9_call
        000000A6   008B                                 .dc.w    i$readln
                                                
        000000A8   6400                                 bcc.b    $exit
                                                
        000000AA   3F410016                     $error: move.w  d1,($result'offset+2,sp)
        000000AE   7200                                 moveq.l #0,d1
                                                
        000000B0   2F410010                     $exit:  move.l   d1,($bytes_read'offset,sp)     ; store bytes_read
        000000B4   4E75                                 rts
                                                ;
                                                ;   procedure Write (Path : Path_Number;
                                                ;                    Count : Natural;
                                                ;                    Buffer : System.Address;
                                                ;                    Bytes_Written : out Natural;
                                                ;                    Result : out Stratus);
                                                ;
                                                        subprogram sp_rt,sp.internal,linkage.simple
                                                 
        000000B6                                __OS9_I$Write:
                                                        .local
                                                        
                                                        $path'offset            equ 4
                                                        $count'offset           equ 8
                                                        $buffer'offset          equ 12
                                                        $bytes_written'offset   equ 16
                                                        $result'offset          equ 20
                                                
        000000B6   202F0004                             move.l  ($path'offset,sp),d0            ; path number
        000000BA   222F0008                             move.l  ($count'offset,sp),d1           ; byte count
        000000BE   206F000C                             movea.l ($buffer'offset,sp),a0          ; buffer address
        000000C2   42AF0014                             clr.l   ($result'offset,sp)             ; result := successful
                                                
        000000C6   4E40                                 trap    #os9_call
        000000C8   008A                                 .dc.w   i$write
                                                
        000000CA   6400                                 bcc.b   $exit
                                                
        000000CC   3F410016                     $error: move.w  d1,($result'offset+2,sp)        ; result := error code
        000000D0   7200                                 moveq.l #0,d1
                                                
        000000D2   2F410010                     $exit:  move.l  d1,($bytes_written'offset,sp)   ; store Bytes_Written
        000000D6   4E75                                 rts
                                                ;
                                                ;   procedure Seek (Path     :     Path_Number;
                                                ;                   Position :     Natural;
                                                ;                   Result   : out Stratus);
                                                ;
                                                        subprogram sp_rt,sp.internal,linkage.simple
                                                 
        000000D8                                __os9_i$seek:
                                                        .local
                                                
                                                        $path'offset            equ 4
                                                        $position'offset        equ 8
                                                        $result'offset          equ 12
                                                
        000000D8   202F0004                             move.l  ($path'offset,sp),d0            ; path number
        000000DC   222F0008                             move.l  ($position'offset,sp),d1        ; new position
        000000E0   42AF000C                             clr.l   ($result'offset,sp)             ; result := successful
        000000E4   4E40                                 trap    #os9_call
        000000E6   0088                                 .dc.w   i$seek                          ; make seek call                
                                                      
                                                
        000000E8   6400                                 bcc.b   $exit
        000000EA   3F41000E                     $error: move.w  d1,($result'offset+2,sp)
        000000EE   4E75                         $exit:  rts
                                                ;
                                                ;   procedure Current_Position (Path     :     Path_Number;
                                                ;                               Position : out File_Position;
                                                ;                               Result   : out Stratus);
                                                ;
                                                        subprogram sp_rt,sp.internal,linkage.simple
                                                 
        000000F0                                __os9_i$getstt_pos:
                                                        .local
                                                        
                                                        $path'offset            equ 4+4
                                                        $position'offset        equ 8+4
                                                        $result'offset          equ 12+4
                                                
        000000F0   2F02                                 move.l  d2,-(sp)
                                                        statement 0,0,1
                                                 
        000000F2   202F0008                             move.l  ($path'offset,sp),d0            ; path number
        000000F6   42AF0010                             clr.l   ($result'offset,sp)             ; result := successful
        000000FA   223C00000005                         move.l  #ss_pos,d1                      ; Pos function code
                                                
        00000100   4E40                                 trap    #os9_call
        00000102   008D                                 .dc.w   i$getstt
                                                
        00000104   6400                                 bcc.b   $exit
                                                
        00000106   3F410012                     $error: move.w  d1,($result'offset+2,sp)        ; result := error code
        0000010A   7400                                 moveq.l #0,d2
                                                
        0000010C   2F42000C                     $exit:  move.l  d2,($position'offset,sp)        ; Position := Current_Position
                                                
        00000110   241F                                 move.l  (sp)+,d2
                                                        statement 0,0,0
                                                 
        00000112   4E75                                 rts
                                                ;
                                                ;   procedure End_Of_File (Path   :     Path_Number;
                                                ;                          At_End : out Boolean;
                                                ;                          Result : out Stratus);
                                                ;
                                                        subprogram sp_rt,sp.internal,linkage.simple
                                                 
        00000114                                __os9_i$getstt_eof:
                                                        .local
                                                        
                                                        $path'offset    equ 4
                                                        $at_end'offset  equ 8
                                                        $result'offset  equ 12
                                                
        00000114   202F0004                             move.l  ($path'offset,sp),d0            ; path number
        00000118   42AF000C                             clr.l   ($result'offset,sp)             ; result := successful
        0000011C   223C00000006                         move.l  #ss_eof,d1                      ; EOF function code
                                                
        00000122   4E40                                 trap    #OS9_Call
        00000124   008D                                 .dc.w   I$GetStt                        ; make status call              
                                                        
                                                
        00000126   6500                                 bcs.b   $error
                                                
        00000128   42AF0008                             clr.l   ($at_end'offset,sp)             ; not End_Of_File
        0000012C   4E75                                 rts
                                                
        0000012E   7001                         $error: moveq.l #1,d0                           ; d0 := true
        00000130   2F400008                             move.l  d0,($at_end'offset,sp)          ; set End_Of_File
        00000134   3F41000E                             move.w  d1,($result'offset+2,sp)        ; result := error code
        00000138   4E75                                 rts
                                                ;
                                                ;   procedure File_Size (Path   :     Path_Number;
                                                ;                        Size   : out Natural;
                                                ;                        Result : out Stratus);
                                                ;
                                                        subprogram sp_rt,sp.internal,linkage.simple
                                                 
        0000013A                                __os9_i$getstt_size:
                                                        .local
                                                        
                                                        $path'offset    equ 4+4
                                                        $size'offset    equ 8+4
                                                        $result'offset  equ 12+4
                                                
        0000013A   2F02                                 move.l   d2,-(sp)
                                                        statement 0,0,1
                                                 
        0000013C   202F0008                             move.l  ($path'offset,sp),d0            ; path number
        00000140   42AF0010                             clr.l   ($result'offset,sp)             ; result := successful
        00000144   223C00000002                         move.l  #SS_Size,d1                     ; Size function code
                                                
        0000014A   4E40                                 trap    #OS9_Call
        0000014C   008D                                 .dc.w   I$GetStt                        ; make status call              
                                                        
                                                
        0000014E   6400                                 bcc.b   $exit
                                                
        00000150   3F410012                     $error: move.w  d1,($result'offset+2,sp)        ; result := error code
        00000154   7400                                 moveq.l #0,d2
                                                
        00000156   2F42000C                     $exit:  move.l  d2,($size'offset,sp)            ; size   := current file size
                                                
        0000015A   241F                                 move.l  (sp)+,d2
                                                        statement 0,0,0
                                                 
        0000015C   4E75                                 rts
                                                
                                                
                                                ;
                                                ;
                                                ;   procedure Set_File_Size (Path    :     Path_Number;
                                                ;                            To_Size :     Natural;
                                                ;                            Result  : out Stratus);
                                                ;
                                                        subprogram sp_rt,sp.internal,linkage.simple
                                                 
        0000015E                                __os9_i$setstt_size:
                                                        .local
                                                        
                                                        $path'offset    equ 4+4
                                                        $to_size'offset equ 8+4
                                                        $result'offset  equ 12+4
                                                
        0000015E   2F02                                 move.l   d2,-(sp)
                                                        statement 0,0,1
                                                 
        00000160   202F0008                             move.l  ($path'offset,sp),d0            ; path number
        00000164   42AF0010                             clr.l   ($result'offset,sp)             ; result := successful
        00000168   223C00000002                         move.l  #ss_size,d1                     ; Size function code
        0000016E   242F000C                             move.l  ($to_size'offset,sp),d2         ; get new size
                                                
        00000172   4E40                                 trap    #os9_call
        00000174   008E                                 .dc.w   i$setstt                        ; make status call              
                                                        
                                                
        00000176   6400                                 bcc.b   $exit
                                                
        00000178   3F410012                     $error: move.w  d1,($result'offset+2,sp)        ; result := error code
                                                
        0000017C   241F                         $exit:  move.l  (sp)+,d2
                                                        statement 0,0,0
                                                 
        0000017E   4E75                                 rts
                                                ;
                                                ;    procedure Get_Options (Path          :     Path_Number;
                                                ;                           Option_Buffer :     System.Address;
                                                ;                           Result        : out Stratus);
                                                ;
                                                        subprogram sp_rt,sp.internal,linkage.simple
                                                 
        00000180                                __os9_i$setstt_opt:
                                                        .local
                                                        
                                                        $path'offset    equ 4
                                                        $option'offset  equ 8
                                                        $result'offset  equ 12
                                                
        00000180   202F0004                             move.l  ($path'offset,sp),d0            ; path number
        00000184   206F0008                             movea.l ($option'offset,sp),a0          ; buffer address
        00000188   42AF000C                             clr.l   ($result'offset,sp)
        0000018C   223C00000000                         move.l  #ss_opt,d1                      ; Read_Option function code
                                                
        00000192   4E40                                 trap    #os9_call
        00000194   008E                                 .dc.w   i$setstt
                                                
        00000196   6400                                 bcc.b   $exit
                                                        
        00000198   3F41000E                             move.w  d1,($result'offset+2,sp)
                                                
        0000019C   4E75                         $exit:  rts
                                                ;
                                                ;    procedure Set_Options (Path          :     Path_Number;
                                                ;                           Option_Buffer :     System.Address;
                                                ;                           Result        : out Stratus);
                                                ;
                                                        subprogram sp_rt,sp.internal,linkage.simple
                                                 
        0000019E                                __OS9_I$GetStt_Opt:
                                                        .local
                                                        
                                                        $path'offset    equ 4
                                                        $option'offset  equ 8
                                                        $result'offset  equ 12
                                                
        0000019E   202F0004                             move.l  ($path'offset,sp),d0            ; path number
        000001A2   206F0008                             movea.l ($option'offset,sp),a0          ; buffer address
        000001A6   42AF000C                             clr.l   ($result'offset,sp)             ; status := successful
        000001AA   223C00000000                         move.l  #ss_opt,d1                      ; Read_Option function code
                                                
        000001B0   4E40                                 trap    #os9_call
        000001B2   008D                                 .dc.w   i$getstt
                                                
        000001B4   6400                                 bcc.b   $exit
                                                
        000001B6   3F41000E                             move.w  d1,($result'offset+2,sp)        ; result := error code
                                                
        000001BA   4E75                         $exit:  rts
                                                ;
                                                ;    procedure Get_Device_Name (Path        :     Path_Number;
                                                ;                               Name_Buffer :     System.Address;
                                                ;                               Result      : out Status);
                                                ;
                                                        subprogram sp_rt,sp.internal,linkage.simple
                                                 
        000001BC                                __os9_i$getstt_devnm:
                                                        .local
                                                
                                                        $path'offset    equ 4
                                                        $name'offset    equ 8
                                                        $result'offset  equ 12
                                                
        000001BC   202F0004                             move.l  ($path'offset,sp),d0            ; path number
        000001C0   206F0008                             movea.l ($name'offset,sp),a0            ; buffer address
        000001C4   42AF000C                             clr.l   ($result'offset,sp)             ; result := successful
        000001C8   223C0000000E                         move.l  #ss_devnm,d1                    ; Device Name function code
        000001CE   4E40                                 trap    #os9_call
        000001D0   008D                                 .dc.w   i$getstt
                                                
        000001D2   6400                                 bcc.b   $done
                                                        
        000001D4   3F41000E                             move.w  d1,($result'offset+2,sp)        ; return status
                                                
        000001D8   4E75                         $done:  rts
                                                ;
                                                ;   procedure Get_Time (Day    : out Integer;
                                                ;                       Second : out Integer;
                                                ;                       Tick   : out Integer;
                                                ;                       Status : out Integer);
                                                ;                       
                                                        subprogram sp_rt,sp.internal,linkage.simple
                                                 
        000001DA                                _art_f$time:
        000001DA                                __get_time_of_day:
                                                        .local
                                                
                                                        $day'offset     equ 12
                                                        $sec'offset     equ 16
                                                        $tick'offset    equ 20
                                                        $status'offset  equ 24
                                                
                                                        Julian$With$Ticks    equ 3
                                                
        000001DA   48E73000                             movem.l d2-d3,-(sp)             ; save the nonvolatile
                                                        statement      0,0,2
                                                 
                                                
        000001DE   203C00000003                         move.l  #julian$with$ticks,d0   ; set the format code
        000001E4   4E40                                 trap    #os9_call               ; trap to get time
        000001E6   0015                                 .dc.w   f$time
                                                
        000001E8   6400                                 bcc.b    $store
                                                
        000001EA   2F410018                     $error: move.l  d1,($status'offset,sp)
        000001EE   6000                                 bra.s   $return
                                                
        000001F0   2F41000C                     $store: move.l  d1,($day'offset,sp)     ; store Julian day
        000001F4   2F400010                             move.l  d0,($sec'offset,sp)     ; store seconds since midnight 
        000001F8   4843                                 swap.w  d3                      ; get current tick into D0 high word
        000001FA   4243                                 clr.w   d3                      ; clear D0 low word
        000001FC   4843                                 swap.w  d3                      ; restore current tick into D0 low word
        000001FE   2F430014                             move.l  d3,($tick'offset,sp)    ; store current tick
        00000202   42AF0018                             clr.l   ($status'offset,sp)     ; successful status
                                                   
        00000206   4CDF000C                     $return:movem.l (sp)+,d2-d3
                                                        statement    0,0,0
                                                 
        0000020A   4E75                                 rts
                                                ;
                                                ;   procedure Get_Unique_Task_Key (Value1 : out Integer;
                                                ;                                  Value2 : out Integer;
                                                ;                                  Value3 : out Integer);
                                                ;
                                                        subprogram sp_rt,sp.internal,linkage.simple
                                                 
        0000020C                                __get_unique_task_key:
                                                        .local
                                                        
                                                        $v1'offset      equ 4
                                                        $v2'offset      equ 8
                                                        $v3'offset      equ 12
                                                
        0000020C   2075017000000000                     movea.l (__process_descriptor_pointer,a5),a0
        00000214   2050                                 movea.l (a0),a0
        00000216   2F6803A80004                         move.l  (art$tsk_id,a0),($v1'offset,sp)
        0000021C   2F6802BC0008                         move.l  (p$datbeg,a0),($v2'offset,sp)
        00000222   2F6802C0000C                         move.l  (p$timbeg,a0),($v3'offset,sp)
        00000228   4E75                                 rts
                                                
                                                        end_subprograms
                                                 
                                                
                                                       .end


      Program Section Name       Kind   Length   Patches Fixups
-------------------------------- ---- ---------- ------- -------
PREDEFINED_CODE                   Rel        554      17      18
DEBUG_BODY                        Rel        361      42      17
DEBUG_HDR_CU                      Rel         64       2       0


Standard include file: <none>
Object module version: 11

        Assembled 6001 lines in 45.874 elapsed, 36.454 CPU.
         7849 lines per elapsed minute.
         9877 lines per CPU minute.
         152 disk waits for this job.
         1527604 bytes of heap used by this job.