|
|
DataMuseum.dkPresents historical artifacts from the history of: Rational R1000/400 Tapes |
This is an automatic "excavation" of a thematic subset of
See our Wiki for more about Rational R1000/400 Tapes Excavated with: AutoArchaeologist - Free & Open Source Software. |
top - metrics - downloadIndex: 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.