home *** CD-ROM | disk | FTP | other *** search
/ minnie.tuhs.org / unixen.tar / unixen / PDP-11 / Distributions / ucb / spencer_2bsd.tar.gz / 2bsd.tar / src / px / 34fun.s < prev    next >
Text File  |  1980-02-17  |  3KB  |  301 lines

  1. /
  2. / BUILT IN FUNCTIONS
  3. /
  4. _LLIMIT:
  5.     add    $4.,sp
  6.     return
  7. _ARGC:
  8.     mov    _argc,-(sp)
  9.     sxt    -(sp)
  10.     return
  11. _ARGV:
  12.     bne    1f
  13.     mov    (lc)+,r3
  14. 1:
  15.     mov    (sp)+,r1
  16.     mov    (sp)+,r0
  17.     blt    9f
  18.     cmp    r0,_argc
  19.     bge    9f
  20.     add    r0,r0
  21.     add    _argv,r0
  22.     mov    (r0),r0
  23.     inc    r3
  24.     br    3f
  25. 1:
  26.     movb    (r0)+,r2
  27.     bne    2f
  28.     dec    r0
  29.     mov    $' ,r2
  30. 2:
  31.     movb    r2,(r1)+
  32. 3:
  33.     sob    r3,1b
  34.     return
  35. 9:
  36.     mov    $EARGV,_perrno
  37.     error    EARGV
  38. _SCLCK:
  39.     mov    $2,-(sp)
  40.     br    1f
  41. _CLCK:
  42.     clr    -(sp)
  43. 1:
  44.     sub    $12.,sp
  45.     mov    sp,0f
  46.     sys    indir; 1f
  47.     mov    sp,r0
  48.     add    12.(sp),r0
  49.     mov    (r0),r0
  50.     add    $14.,sp
  51.     mul    $1000.,r0
  52.     mov    r1,-(sp)
  53.     mov    r0,-(sp)
  54.     movif    (sp)+,fr0
  55.     mov    $HZ,-(sp)
  56.     sxt    -(sp)
  57.     movif    (sp)+,fr1
  58.     divf    fr1,fr0
  59.     movfi    fr0,-(sp)
  60.     return
  61. .data
  62. 1:
  63.     sys    times; 0:..
  64. .text
  65. _DATE:
  66. _TIME:
  67.     asr    r0
  68.     bic    $!377,r0
  69.     mov    r0,-(sp)
  70.     jsr    pc,_pdattim
  71.     cmp    (sp)+,(sp)+
  72.     return
  73. _SEED:
  74.     mov    (sp)+,r0
  75.     mov    (sp)+,r1
  76.     mov    _seed+2,-(sp)
  77.     mov    _seed,-(sp)
  78.     mov    r0,_seed
  79.     mov    r1,_seed+2
  80.     return
  81. _RANDOM:
  82.     movif    _seed,fr0
  83.     mulf    _randa,fr0
  84.     addf    _randc,fr0
  85.     movf    fr0,fr2
  86.     modf    _randim,fr2
  87.     movf    fr2,(sp)
  88.     mulf    _randm,fr2
  89.     movfi    fr2,_seed
  90.     return
  91. _DISPOSE:
  92.     tst    (sp)
  93.     beq    1f
  94.     jsr    pc,_free
  95. 1:
  96.     tst    (sp)+
  97.     return
  98. _NEW:
  99.     bne    1f
  100.     mov    (lc)+,r3
  101. 1:
  102.     mov    r3,-(sp)
  103.     jsr    pc,_alloc
  104.     tst    (sp)+
  105.     mov    r0,*(sp)+
  106.     return
  107. _EXPO:
  108.     movf    (sp)+,fr0
  109.     movei    fr0,-(sp)
  110.     sxt    -(sp)
  111.     return
  112. _ATAN:
  113.     movf    (sp)+,fr0
  114.     jsr    pc,atan
  115.     movf    fr0,-(sp)
  116.     return
  117. _COS:
  118.     movf    (sp)+,fr0
  119.     jsr    pc,cos
  120.     movf    fr0,-(sp)
  121.     return
  122. _EXP:
  123.     movf    (sp)+,fr0
  124.     jsr    pc,exp
  125.     movf    fr0,-(sp)
  126.     return
  127. _LN:
  128.     movf    (sp)+,fr0
  129.     cfcc
  130.     ble    9f
  131.     jsr    pc,log
  132.     movf    fr0,-(sp)
  133.     return
  134. 9:
  135.     mov    $ELN,_perrno
  136.     error    ELN
  137. _SIN:
  138.     movf    (sp)+,fr0
  139.     jsr    pc,sin
  140.     movf    fr0,-(sp)
  141.     return
  142. _SQRT:
  143.     movf    (sp)+,fr0
  144.     cfcc
  145.     bmi    9f
  146.     jsr    pc,sqrt
  147.     movf    fr0,-(sp)
  148.     return
  149. 9:
  150.     mov    $ESQRT,_perrno
  151.     error    ESQRT
  152. _CHR4:
  153.     tst    (sp)+
  154.     bne    1f
  155. _CHR2:
  156.     cmp    (sp),$177
  157.     bhi    1f
  158.     return
  159. 1:
  160.     mov    $ECHR,_perrno
  161.     error    ECHR
  162. _ODD4:
  163.     tst    (sp)+
  164. _ODD2:
  165.     bic    $!1,(sp)
  166.     return
  167. _PRED2:
  168.     dec    (sp)
  169.     return
  170. _PRED4:
  171.     sub    $1,2(sp)
  172.     sbc    (sp)
  173.     return
  174. _PRED24:
  175.     sub    $1,(sp)
  176.     sxt    -(sp)
  177.     return
  178. _STLIM:
  179.     mov    (sp)+,r0
  180.     bge    1f
  181.     tst    (sp)+
  182.     return
  183. 1:
  184.     mov    (sp)+,r1
  185.     sub    _stcnt+2,r1
  186.     sbc    r0
  187.     sub    _stcnt,r0
  188.     ashc    $0,r0
  189.     bge    1f
  190.     mov    $ESTLIM,_perrno
  191.     error    ESTLIM
  192. 1:
  193.     mov    r0,_stlim
  194.     mov    r1,_stlim+2
  195.     return
  196. _SUCC2:
  197.     inc    (sp)
  198.     return
  199. _SUCC4:
  200.     add    $1,2(sp)
  201.     adc    (sp)
  202.     return
  203. _SUCC24:
  204.     add    $1,(sp)
  205.     sxt    -(sp)
  206.     return
  207. _ROUND:
  208.     movf    (sp)+,fr0
  209.     cfcc
  210.     bmi    1f
  211.     addf    $HALF,fr0
  212.     br    2f
  213. 1:
  214.     subf    $HALF,fr0
  215. 2:
  216.     movfi    fr0,-(sp)
  217.     return
  218. _TRUNC:
  219.     movf    (sp)+,fr0
  220.     movfi    fr0,-(sp)
  221.     return
  222. _UNDEF:
  223.     add    $8,sp
  224.     clr    -(sp)
  225.     return
  226. /
  227. / pack(a,i,z)
  228. /
  229. / with:    a: array[m..n] of t
  230. /    z: packed array[u..v] of t
  231. /
  232. / semantics:    for j := u to v do
  233. /            z[j] := a[j-u+i];
  234. /
  235. / need to check:
  236. /    1. i >= m
  237. /    2. i+(v-u) <= n        (i.e. i-m <= (n-m)-(v-u))
  238. /
  239. / on stack:    lv(z), lv(a), rv(i) (len 2)
  240. /
  241. / move w(t)*(v-u+1) bytes from lv(a)+w(t)*(i-m) to lv(z)
  242. /
  243. _PACK:
  244.     bne    1f
  245.     mov    (lc)+,r3
  246. 1:
  247.     mov    $pack,reta
  248. /
  249. / check conditions 1 and 2
  250. /
  251. pakunp:
  252.     mov    4(sp),r1
  253.     sub    (lc)+,r1        / m
  254.     blt    9f
  255.     cmp    r1,(lc)+        / (n-m)-(u-v)
  256.     bgt    9f
  257.     mul    r3,r1
  258.     mov    (sp)+,r0
  259.     add    (sp)+,r1
  260.     tst    (sp)+
  261.     mov    (lc)+,r3
  262.     inc    r3
  263.     jmp    *reta
  264. unpack:
  265.     mov    r0,r2
  266.     mov    r1,r0
  267.     mov    r2,r1
  268.     br    pack
  269. 1:
  270.     movb    (r1)+,(r0)+
  271. pack:
  272.     sob    r3,1b
  273.     return
  274. /
  275. / unpack(z,a,i)
  276. /
  277. / with:    z and a as in pack
  278. /
  279. / semantics:    for j := u to v do
  280. /            a[j-u+i] := z[j]
  281. /
  282. _UNPACK:
  283.     bne    1f
  284.     mov    (lc)+,r3
  285. 1:
  286.     mov    $unpack,reta
  287.     br    pakunp
  288. 9:
  289.     cmp    reta,$pack
  290.     beq    1f
  291.     mov    $EUNPACK,_perrno
  292.     error    EUNPACK
  293. 1:
  294.     mov    $EPACK,_perrno
  295.     error    EPACK
  296. _WCLCK:
  297.     sys    time
  298.     mov    r1,-(sp)
  299.     mov    r0,-(sp)
  300.     return
  301.