DataMuseum.dk

Presents historical artifacts from the history of:

RC4000/8000/9000

This is an automatic "excavation" of a thematic subset of
artifacts from Datamuseum.dk's BitArchive.

See our Wiki for more about RC4000/8000/9000

Excavated with: AutoArchaeologist - Free & Open Source Software.


top - metrics - download

⟦d007be6c7⟧ TextFile

    Length: 6912 (0x1b00)
    Types: TextFile
    Names: »xepasclib«

Derivation

└─⟦2c55ea56f⟧ Bits:30001844 SW-save af projekt 1000, Alarm-system
    └─⟦6b41451d2⟧ 
        └─⟦this⟧ »xepasclib« 

TextFile

nntpasclib = edit ntpascallib
; code for time meassurements


l./b.a20,b30,d50,f10,/, r/p10/p15/,

l./d46=20;additional errorinf/, l1, i/
d47 = 24 ; double word for time stamps
/,

l./p8=8/, l1, i/
p10 = 16  ; length of procedure table entries
p12 = 12  ; double word containing processing time
p14 = 14  ; activation counter
/,

l./m68:h68/, l1, i/
m51: h51     ; mode bits
/,



l./g1: ; init:/,
l./rlw2 66/, i/

; time stamp main program !!
     dl  w1     110   ; current time
     ss  w1  x3+d47   ;    - old time
     rl. w2     b0.   ;  address( proc table )
     aa  w1  x2+p12   ;  add delta
     ds  w1  x2+p12
     al  w0     1
     rs  w0  x2+p14   ; # calls := 1 !!!!

/,



l./a10: ; terminate:/, 
l./;outchar(newline);/, l1, i?

     rl. w0     (m51.) ; get mode bits
     so  w0     1<8    ; skip if mode listing
     jl.        a14.

 b. c15  , q10 w.

; print heading
     al. w0     c9.   ;
     jl. w3     (m31.) ; outtext( 'performance meassurement ... ')
     jl. w3     q8.    ; print  ( '----------------------------' )

     rl. w2     b0.    ; get start of procedure table
 
; compute total run time and total number of calls
     al  w3     0
     dl. w1     c0.
q1:  aa  w1  x2+p12   ; add time
     wa  w3  x2+p14   ; add # calls
     al  w2  x2+p10
     se. w2     (b2.) ; until top of procedures
     jl.        q1.
     ds. w1     c0.   ; save sum
     rs. w3     c1.


; print table

     rl. w1     b0.

q2:  rs. w1     b22.  ; repeat

     rl  w0  x1+p8    ; start of routine error table
     rs. w0     b24.

     jl. w3     m1.   ; get start line
     rs. w0     b12.

     al. w2     b16.  ; get routine name
q3:  jl. w3     m1.
     lo. w0     b17.
     rs  w0  x2
     al  w2  x2+2
     se. w2     b16.+8
     jl.        q3.

     al. w0     b16.  ; outtext(routinename)
     jl. w3     (m31.)

     rl. w0     b12.   ; get start line
     jl. w3     (m32.) ; outinteger( start line )
         32<12 + 5


     rl. w2     b22.  ; current proc table entry
     rl  w0  x2+p14   ;
     jl. w3     (m32.); outinteger( # calls )
         32<12 + 10

     rl  w0  x2+p14   ; # calls
     wm. w0     c3.   ;   * 100000
     wd. w0     c1.   ;   div  sum of calls
     al  w3     0
     wd. w0     c4.   ;   div  1000
     rs. w3     c2.   ; temp :=  fraction part
     jl. w3     (m32.); outinteger( call % )
        1<23+ 32<12 + 8

     al  w2     46
     jl. w3     (m26.); outchar( . )

     rl. w0     c2.
     jl. w3     (m32.) ; outinteger(%-fraction)
        48<12 + 3      ;   

     rl. w2     b22.
     rl  w3  x2+p14    ; average per call
     se  w3     0
     jl.        q4.

     al. w0     c6.    ; outtext('     ------')
     jl. w3     (m31.)
     jl.        q5.    ; skip 

q4:  dl  w1  x2+p12    ; time
     wd  w1     6      ;  div  # calls
     al  w0     0      ; nb: time per call < 13 min
     wd. w1     c8.    ; div  10000
     rs. w0     c2.    ;  save fraction
     al  w0  x1
     jl. w3     (m32.) ; outinteger
         32<12 + 9

     al  w2     46
     jl. w3     (m26.) ; outchar( . )
   
     rl. w0     c2.
     jl. w3     (m32.) ; outinteger( fraction )
         48<12 + 4

q5:  rl. w2     b22.   ;  module total
     dl  w0  x2+p12
     wd. w0     c8.    ;  div 10000
     rs. w3     c2.    ; save fraction

     jl. w3     (m32.) ; outinteger( time in seconds )
         32<12 + 8

     al  w2     46
     jl. w3     (m26.)

     rl. w0     c2.
     jl. w3     (m32.) ; outinteger( fraction )
         48<12 + 4

; percent of total
     dl. w1     c0.    ; total time
     wd. w1     c11.   ; div 10
     rs. w1     c2.    ; units of ms

     rl. w2     b22.
     rl  w0     x2+p12 ; only low bits
     wm. w0     c8.    ;   * 10000
     wd. w0     c2.
     al  w3     0
     wd. w0     c4.    ; div 1000
     rs. w3     c2.    ; save fraction
     jl. w3     (m32.) ; outintger( % of total )
         32<12 + 10

     al  w2     46
     jl. w3     (m26.) ; outchar ( . )

     rl. w0     c2.
     jl. w3     (m32.) ; outinteger( fraction )
         48<12 + 3


     al  w2     10     ; nl
     jl. w3     (m26.) ; writeln

     rl. w1     b22.
     al  w1  x1+p10
     se. w1     (b2.)  ; until top of procedures
     jl.        q2.

; output totals

     jl. w3     q8.    ; ---------------------
     al. w0 c10.
     jl. w3     (m31.) ; outtext('<nl>Totals')

     rl. w0     c1.
     jl. w3     (m32.) ; outinteger( total calls )
         32<12 + 17

     dl. w0     c0.     ; total time
     wd. w0     c1.     ;   div # calls
     al  w3     0
     wd. w0     c8.     ; div 10000, convert to seconds
     rs. w3     c2.
     jl. w3     (m32.)  ; outinteger( average per call )
        32<12 + 21

     al  w2     46
     jl. w3     (m26.)  ; outchar ( . )

     rl. w0     c2.
     jl. w3     (m32.) ; outinteger( fraction )
         48<12 + 4

     dl. w0     c0.    ; total time
     wd. w0     c8.    ;  div 10000
     rs. w3     c2.
     jl. w3     (m32.) ; outinteger( time in seconds )
         32<12 + 8

     al  w2     46
     jl. w3     (m26.) ; outchar( . )

     rl. w0     c2.
     jl. w3     (m32.) ; outinteger(fraction)
         48<12 + 4

     al  w2     10
     jl. w3     (m26.) ; outnl




     jl.        a14.    ; pass the constants


; procedure printline , destroy all regs
q8:  rs. w3     c2.    ; save return
     al  w1     81     ; line length
q9:  rs. w1     c7.    ; save counter
     al  w2     45     ; '-'
     jl. w3     (m26.) ; repeat  outchar('-')
     rl. w1     c7.
     al  w1  x1-1
     se  w1     0      ; until w1 = 0
     jl.        q9.

     al  w2     10
     jl. w3     (m26.) ; outnl
     jl.        (c2.)  ; return


; constants and variables
0
c0: 0      ; total time
c1: 0      ; total number of calls
c2: 0-0-0  ; work
c7: 0-0-0  ; work
c3: 100000
c4:   1000
c5:    100
c11:    10
c6: <:        ------<0>:>
c8:  10000
c9: <:<12><10>Performance meassurement summary for PASCAL program :<10><10>:>
<:    Name     Line      Called  % of calls  Average (sec)  Total (sec)   % of time<10><10><0>:>
c10: <:<10>   Totals:<0>:>


e.
a14:



?,


f

clear temp ntpascallib
rename nntpasclib . ntpascallib
end
▶EOF◀