# 2.11BSD#431 - /usr/src/ucb/pascal/px/34fun.s

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

#### Defined functions

_ARGC defined in line 7; never used
_ARGV defined in line 11; never used
_ATAN defined in line 107; never used
_CHR2 defined in line 158; never used
_CHR4 defined in line 155; never used
_CLCK defined in line 41; never used
_COS defined in line 113; never used
_DATE defined in line 60; never used
_DISPOSE defined in line 86; never used
_EXP defined in line 119; never used
_EXPO defined in line 102; never used
_LLIMIT defined in line 4; never used
_LN defined in line 125; never used
_NEW defined in line 93; never used
_ODD2 defined in line 167; never used
_ODD4 defined in line 165; never used
_PACK defined in line 246; never used
_PRED2 defined in line 170; never used
_PRED24 defined in line 177; never used
_PRED4 defined in line 173; never used
_RANDOM defined in line 76; never used
_ROUND defined in line 210; never used
_SCLCK defined in line 38; never used
_SEED defined in line 68; never used
_SIN defined in line 137; never used
_SQRT defined in line 143; never used
_STLIM defined in line 181; never used
_SUCC2 defined in line 199; never used
_SUCC24 defined in line 206; never used
_SUCC4 defined in line 202; never used
_TIME defined in line 61; never used
_TRUNC defined in line 221; never used
_UNDEF defined in line 225; never used
_UNPACK defined in line 285; never used
_WCLCK defined in line 299; never used
pack defined in line 274; used 3 times

- in line 250, 271, 292

pakunp defined in line 254; used 1 times

- in line 290

unpack defined in line 267; used 1 times

- in line 289

Last modified: 1990-01-03 Generated: 2016-12-26 | Generated by src2html V0.67 page hit count: 1252 |