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: ┃ O T ┃
Length: 75043 (0x12523) Types: TextFile Names: »OS2000_IO_LIST«
└─⟦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_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.