Research V5 development
authorKen Thompson <ken@research.uucp>
Tue, 26 Nov 1974 23:13:21 +0000 (18:13 -0500)
committerKen Thompson <ken@research.uucp>
Tue, 26 Nov 1974 23:13:21 +0000 (18:13 -0500)
Work on file usr/source/s4/rsave.s
Work on file usr/source/s4/atof.s
Work on file usr/source/s3/atan.s
Work on file usr/source/s3/atoi.s
Work on file usr/source/s1/ldx.s
Work on file usr/pub/greek

Co-Authored-By: Dennis Ritchie <dmr@research.uucp>
Synthesized-from: v5

usr/pub/greek [new file with mode: 0644]
usr/source/s1/ldx.s [new file with mode: 0644]
usr/source/s3/atan.s [new file with mode: 0644]
usr/source/s3/atoi.s [new file with mode: 0644]
usr/source/s4/atof.s [new file with mode: 0644]
usr/source/s4/rsave.s [new file with mode: 0644]

diff --git a/usr/pub/greek b/usr/pub/greek
new file mode 100644 (file)
index 0000000..fb1ba84
--- /dev/null
@@ -0,0 +1,11 @@
+alpha  \ eA\ f  A  |  beta \ eB\ f  B  |  gamma        \ e\\ f  \
+GAMMA  \ eG\ f  G  |  delta        \ eD\ f  D  |  DELTA        \ eW\ f  W
+epsilon        \ eS\ f  S  |  zeta \ eQ\ f  Q  |  eta  \ eN\ f  N
+THETA  \ eT\ f  T  |  theta        \ eO\ f  O  |  lambda       \ eL\ f  L
+LAMBDA \ eE\ f  E  |  mu   \ eM\ f  M  |  nu   \ e@\ f  @
+xi     \ eX\ f  X  |  pi   \ eJ\ f  J  |  PI   \ eP\ f  P
+rho    \ eK\ f  K  |  sigma        \ eY\ f  Y  |  SIGMA        \ eR\ f  R
+tau    \ eI\ f  I  |  phi  \ eU\ f  U  |  PHI  \ eF\ f  F
+psi    \ eV\ f  V  |  PSI  \ eH\ f  H  |  omega        \ eC\ f  C
+OMEGA  \ eZ\ f  Z  |  nabla        \ e[\ f  [  |  not  \ e_\ f  _
+partial        \ e]\ f  ]  |  integral  \ e^\ f  ^
diff --git a/usr/source/s1/ldx.s b/usr/source/s1/ldx.s
new file mode 100644 (file)
index 0000000..999c7f1
--- /dev/null
@@ -0,0 +1,141 @@
+/ ldx -- link editor
+
+a.out:
+       <a.out\0>
+l.out:
+       <l.out\0>
+undmes:
+       <un: \0>
+movemes:
+       <Can't move output file\0>
+/comconfl:
+/      <Common/text conflict: \0>
+norel:
+       <No relocation bits: \0>
+toomany:
+       <Too many routines loaded at: \0>
+multi:
+       <Multiply defined: \0>
+locovflo:
+       <Too many symbols in: \0>
+relerr:
+       <Relocation error in: \0>
+premeof:
+       <Premature EOF on: \0>
+outfile:
+       <ld: can't create l.out\n\0>
+fnotfound:
+       <File not found: \0>
+format:
+       <Format error: \0>
+snotfound:
+       <Symbol not found: \0>
+mulent:
+       <Multiple entry point:\0>
+
+libfil:
+       </lib/lib>
+wlib:
+       <a>
+       <.a\0>
+qnl:
+       <\n>
+qsemi:
+       <;>
+
+       .even
+_etext:        <_etext\0\0>
+_edata:        <_edata\0\0>
+_end:  <_end\0\0\0\0>
+
+dotdot:        ..
+zero:  0
+rlistp:        rlist
+esymp: symtab
+
+reltab:
+       zero
+       txtorg
+       datorg
+       bssorg
+
+arcmagic:
+       -147.
+
+magic:
+       br      .+20
+txtsiz:        .=.+2
+datsiz:        .=.+2
+bsssiz:        .=.+2
+symsiz:        .=.+2
+stksiz:        .=.+2
+exorig:        .=.+2
+relflg:        1
+clrelflg: .=.+2
+
+       .bss
+
+errcnt:        .=.+2
+libflg:        .=.+2
+sqflg: .=.+2
+dcom:  .=.+2
+nflg:  .=.+2
+datoffs:.=.+2
+entptr:        .=.+2
+entry: .=.+2
+xtflg: .=.+2
+txtorg:        .=.+2
+datorg:        .=.+2
+bssorg:        .=.+2
+fdatorg: .=.+2
+fbssorg: .=.+2
+
+ctxtorg:.=.+2
+ctxtsiz:.=.+2
+cdatorg:.=.+2
+cdatsiz:.=.+2
+cbsssiz: .=.+2
+ctrelorg:.=.+2
+ctrelsiz:.=.+2
+cdrelorg:.=.+2
+cdrelsiz:.=.+2
+csymorg: .=.+2
+csymsiz: .=.+2
+
+arcmag:        .=.+42
+
+argc:  .=.+2
+argp:  .=.+2
+oattpt:        .=.+2
+locp:  .=.+2
+locsymsiz:.=.+2
+fout:  .=.+2
+fin:   .=.+2
+reopened:.=.+2
+ndef:  .=.+2
+ch:    .=.+2
+filnam:        .=.+2
+relbas:        .=.+2
+libnxt:        .=.+2
+symbol:        .=.+14
+
+txtp:  .=.+10+512.
+relp:  .=.+10+512.
+otxtp: .=.+6+512.
+odatp: .=.+6+512.
+osymp: .=.+6+512.
+otrelp:        .=.+6+512.
+odrelp:        .=.+6+512.
+
+rlist: .=.+512.
+rliste:
+
+local: .=.+1024.
+elocal:
+
+hshsiz = 1000.
+hshtab:        .=2*hshsiz+.
+
+symtab:
+esymtab = orig+16384.-300.
+
diff --git a/usr/source/s3/atan.s b/usr/source/s3/atan.s
new file mode 100644 (file)
index 0000000..c78bc3b
--- /dev/null
@@ -0,0 +1,193 @@
+ldfps = 170100^tst
+stfps = 170200^tst
+/
+.globl atan
+.globl atan2
+/
+/      floating-point arctangent
+/
+/      atan replaces the value in fr0 by its arctangent
+/      in the range [-pi/2,pi/2].
+/
+/      atan2 places in fr0 the arctangent of fr0/fr1
+/      in the range [-pi,pi].
+/
+/      there are no error exits
+/
+/      coefficients are #5076 from Hart & Cheney.
+/
+/
+atan:
+       jsr     r0,save
+       tstf    fr0
+       cfcc
+       blt     1f
+       jsr     r5,satan
+       br      ret
+1:
+       negf    fr0
+       jsr     r5,satan
+       negf    fr0
+       br      ret
+/
+atan2:
+       jsr     r0,save
+       clr     -(sp)
+       tstf    fr0
+       cfcc
+       bge     1f
+       inc     (sp)
+       negf    fr0
+1:
+       tstf    fr1
+       cfcc
+       beq     2f
+       bgt     1f
+       add     $2,(sp)
+       negf    fr1
+1:
+       divf    fr1,fr0
+       jsr     r5,satan
+       br      1f
+2:
+       movf    pi2,fr0
+1:
+       bit     $2,(sp)
+       beq     1f
+       negf    fr0
+       addf    pi2,fr0
+       addf    pi2,fr0
+1:
+       bit     $1,(sp)+
+       beq     1f
+       negf    fr0
+1:
+
+ret:
+       ldfps   (sp)+
+       movf    (sp)+,fr3
+       movf    (sp)+,fr2
+       movf    (sp)+,fr1
+       mov     (sp)+,r0
+       rts     r5
+
+save:
+       movf    fr1,-(sp)
+       movf    fr2,-(sp)
+       movf    fr3,-(sp)
+       stfps   -(sp)
+       ldfps   $40200          / DP, no interrupt
+       jmp     (r0)
+
+satan:
+       cmpf    sq2m1,fr0
+       cfcc
+       bge     arctan
+       cmpf    sq2p1,fr0
+       cfcc
+       bgt     1f
+       movf    one,fr1
+       divf    fr0,fr1
+       movf    fr1,fr0
+       jsr     r5,arctan
+       negf    fr0
+       addf    pi2,fr0
+       rts     r5
+1:
+       movf    fr0,fr1
+       subf    one,fr0
+       addf    one,fr1
+       divf    fr1,fr0
+       jsr     r5,arctan
+       addf    pi4,fr0
+       rts     r5
+arctan:
+       mov     $p4p,r0
+       mov     $4,-(sp)
+       movf    fr0,fr3
+       mulf    fr3,fr3
+       movf    *(r0)+,fr1
+1:
+       mulf    fr3,fr1
+       addf    *(r0)+,fr1
+       dec     (sp)
+       bne     1b
+       mov     $4,(sp)
+       movf    fr3,fr2
+       br      2f
+1:
+       mulf    fr3,fr2
+2:
+       addf    *(r0)+,fr2
+       dec     (sp)
+       bne     1b
+       tst     (sp)+
+       divf    fr2,fr1
+       mulf    fr1,fr0
+       rts     r5
+/
+p4p:
+       p4;p3;p2;p1;p0
+       q3;q2;q1;p0
+
+one:   40200;0;0;0
+pi2:   40311;7732;121041;64302
+pi4:   40111;7732;121041;64302
+
+sq2p1: 40432
+       101171
+       114774
+       167461
+
+sq2m1: 37724
+       11714
+       147747
+       74621
+
+p4:    37442
+       145026
+       75504
+       15621
+p3:    40725
+       21566
+       115517
+       50305
+p2:    41443
+       160206
+       172714
+       25441
+p1:    41632
+       172223
+       76027
+       56645
+p0:    41462
+       25125
+       6152
+       126064
+q3:    41170
+       10112
+       141724
+       64324
+q2:    41573
+       53776
+       25372
+       71522
+q1:    41670
+       123114
+       51576
+       75020
+
+/      one = 1.00000 00000 00000 00000 d0
+/      sq2p1=2.41421 35623 73095 04880 d0
+/      sq2m1= .41421 35623 73095 04880 d0
+/      pi2 = 1.57079 63267 94896 61923  d0
+/      p4 = .15897 40288 48230 7048 d0
+/      p3 = .66605 79017 00926 2658 d1
+/      p2 = .40969 26483 21022 5637 d2
+/      p1 = .77477 68771 92042 0862 d2
+/      p0 = .44541 34005 92906 8032 d2
+/      q4 = .10000 00000 00000 0000 d1
+/      q3 = .15503 97755 14219 8753 d2
+/      q2 = .62835 93051 10323 7683 d2
+/      q1 = .92324 80107 23009 7484 d2
+/      q0 = .44541 34005 92906 8044 d2
diff --git a/usr/source/s3/atoi.s b/usr/source/s3/atoi.s
new file mode 100644 (file)
index 0000000..9e48481
--- /dev/null
@@ -0,0 +1,32 @@
+/ atoi
+/ ascii to integer input conversion
+/      jsr     r5,atoi; getc
+
+.globl atoi
+
+
+atoi:
+       clr     r1
+       jsr     r5,*(r5)
+       clr     -(sp)
+       cmp     r0,$'-
+       bne     2f
+       inc     (sp)
+1:
+       jsr     r5,*(r5)
+2:
+       sub     $'0,r0
+       cmp     r0,$9
+       bhi     1f
+       mpy     $10.,r1
+       add     r0,r1
+       br      1b
+1:
+       add     $'0,r0
+       tst     (sp)+
+       beq     1f
+       neg     r1
+1:
+       tst     (r5)+
+       rts     r5
+
diff --git a/usr/source/s4/atof.s b/usr/source/s4/atof.s
new file mode 100644 (file)
index 0000000..a512376
--- /dev/null
@@ -0,0 +1,24 @@
+/ C library -- atof
+
+/ a = atof(string);
+
+/ returns a floating-point number in a\b_ corresponding to
+/ the ascii string\b\b\b\b\b\b______.  See ATOF(III).
+
+.globl atof,_atof,a_tof,retrn,savr5
+
+_atof:
+       mov     r5,-(sp)
+       mov     sp,r5
+       mov     4(r5),ptr
+       jsr     r5,atof; a_tof
+       clr     savr5
+       jmp     retrn
+
+a_tof:
+       movb    *ptr,r0
+       inc     ptr
+       rts     r5
+
+.bss
+ptr:   .=.+2
diff --git a/usr/source/s4/rsave.s b/usr/source/s4/rsave.s
new file mode 100644 (file)
index 0000000..95f6bc6
--- /dev/null
@@ -0,0 +1,26 @@
+/ C register save and restore
+
+.globl rsave
+.globl mrsave
+.globl rretrn
+
+mrsave:
+       tst     (r5)+
+
+rsave:
+       mov     r5,r0
+       mov     sp,r5
+       mov     r4,-(sp)
+       mov     r3,-(sp)
+       mov     r2,-(sp)
+       sub     (r0)+,sp
+       jmp     (r0)
+
+rretrn:
+       sub     $6,r5
+       mov     r5,sp
+       mov     (sp)+,r2
+       mov     (sp)+,r3
+       mov     (sp)+,r4
+       mov     (sp)+,r5
+       rts     pc