Add original unix v6

This commit is contained in:
memnoth
2018-01-27 22:35:41 +09:00
commit 2c7099ee50
664 changed files with 106254 additions and 0 deletions
+24
View File
@@ -0,0 +1,24 @@
/
/
/ abs & dabs fortran functions
.globl abs.
.globl dabs.
.globl retrn
.globl temp
dabs.: temp
.+2
setd
br 1f
abs.: temp
.+2
setf
1:
movf *2(r3),r0
absf r0
movf r0,temp
jmp retrn
+19
View File
@@ -0,0 +1,19 @@
/
/
/ aimag fortran function
.globl aimag.
.globl rval8p
.globl retrn
.globl temp
aimag.: temp
rval8p; 2
.+2
setf
tstf (sp)+
movf (sp)+,r0
movf r0,temp
jmp retrn
+19
View File
@@ -0,0 +1,19 @@
/
/
/ aint fortran function
.globl aint.
.globl temp
one = 40200
.globl retrn
aint.: temp
.+2
setf
movf *2(r3),r0
modf $one,r0
movf r1,temp
jmp retrn
+31
View File
@@ -0,0 +1,31 @@
/
/
/ alog & log fortran functions
.globl alog.
.globl dlog.
.globl log
.globl retrn
.globl rerr
.globl temp
dlog.: temp
.+2
setd
br 1f
alog.: temp
.+2
setf
1:
seti
movf *2(r3),r0
jsr pc,log
bes 1f
movf r0,temp
jmp retrn
1:
jsr r5,rerr; 1
+33
View File
@@ -0,0 +1,33 @@
/
/
/ alog10 & dlog10 fortran functions
.globl dlog10.
.globl alog10.
.globl log
.globl retrn
.globl rerr
.globl temp
dlog10.:temp
.+2
setd
br 1f
alog10.:temp
.+2
setf
1:
movf *2(r3),r0
jsr pc,log
bes 1f
mulf const,r0
movf r0,temp
jmp retrn
1:
jsr r5,rerr; 1
const: 37736;55730;124467;24146
+44
View File
@@ -0,0 +1,44 @@
/
/
/ max0 & amax0 fortran functions
.globl amax0.
.globl max0.
.globl retrn
.globl temp
max0.: temp
.+2
mov pc,r2
br 1f
amax0.: temp
.+2
clr r2
1:
setf
setl
mov *2(sp),r0 / arg count
mov r3,r1
tst (r1)+ / argpp
movif *(r1)+,r1
br 2f
1:
movif *(r1)+,r0
cmpf r0,r1
cfcc
ble 2f
movf r0,r1
2:
dec r0
bgt 1b
tst r2
bne 1f
movf r1,temp
br 2f
1:
movfi r1,temp
2:
jmp retrn
+52
View File
@@ -0,0 +1,52 @@
/
/
/ max1, amax1 & dmax1 fortran functions
.globl amax1.
.globl dmax1.
.globl max1.
.globl retrn
.globl temp
max1.: temp
.+2
setl
setf
mov pc,r2 / integer flag
br 2f
dmax1.: temp
.+2
setd
br 1f
amax1.: temp
.+2
setf
1:
clr r2 / integer flag
2:
mov *2(sp),r0 / arg count
mov r3,r1
tst (r1)+ / argpp
movf *(r1)+,r1
br 2f
1:
movf *(r1)+,r0
cmpf r0,r1
cfcc
ble 2f
movf r0,r1
2:
dec r0
bgt 1b
tst r2
bne 1f
movf r1,temp
br 2f
1:
movfi r1,temp
2:
jmp retrn
+44
View File
@@ -0,0 +1,44 @@
/
/
/ min0 & amin0 fortran functions
.globl amin0.
.globl min0.
.globl retrn
.globl temp
min0.: temp
.+2
mov pc,r2
br 1f
amin0.: temp
.+2
clr r2
1:
setf
setl
mov *2(sp),r0 / arg count
mov r3,r1
tst (r1)+ / argpp
movif *(r1)+,r1
br 2f
1:
movif *(r1)+,r0
cmpf r0,r1
cfcc
bge 2f
movf r0,r1
2:
dec r0
bgt 1b
tst r2
bne 1f
movf r1,temp
br 2f
1:
movfi r1,temp
2:
jmp retrn
+52
View File
@@ -0,0 +1,52 @@
/
/
/ min1, amin1 & dmin1 fortran functions
.globl amin1.
.globl dmin1.
.globl min1.
.globl retrn
.globl temp
min1.: temp
.+2
setl
setf
mov pc,r2
br 2f
dmin1.: temp
.+2
setd
br 1f
amin1.: temp
.+2
setf
1:
clr r2
2:
mov *2(sp),r0 / arg count
mov r3,r1
tst (r1)+ / argpp
movf *(r1)+,r1
br 2f
1:
movf *(r1)+,r0
cmpf r0,r1
cfcc
bge 2f
movf r0,r1
2:
dec r0
bgt 1b
tst r2
bne 1f
movf r1,temp
br 2f
1:
movfi r1,temp
2:
jmp retrn
+36
View File
@@ -0,0 +1,36 @@
/
/
/ amod & dmod fortran functions
.globl amod.
.globl dmod.
.globl retrn
one = 40200
.globl temp
.globl rerr
dmod.: temp
.+2
setd
br 1f
amod.: temp
.+2
setf
1:
cmp *2(sp),$2
bne 1f
movf *2(r3),r0
movf r0,r2
movf *4(r3),r1
divf r1,r2
modf $one,r2
mulf r1,r3
subf r3,r0
movf r0,temp
jmp retrn
1:
jsr r5,rerr; 2
+25
View File
@@ -0,0 +1,25 @@
/
/
/ atan & datan fortran functions
.globl atan.
.globl datan.
.globl atan
.globl retrn
.globl temp
datan.: temp
.+2
setd
br 1f
atan.: temp
.+2
setf
1:
movf *2(r3),r0
jsr pc,atan
movf r0,temp
jmp retrn
+31
View File
@@ -0,0 +1,31 @@
/
/
/ atan2 & datan2 fortran functions
.globl atan2.
.globl datan2.
.globl retrn
.globl rerr
.globl temp
.globl atan2
datan2.: temp
.+2
setd
br 1f
atan2.: temp
.+2
setf
1:
cmp *2(sp),$2
bne 1f
movf *2(r3),r0
movf *4(r3),r1
jsr pc,atan2
movf r0,temp
jmp retrn
1:
jsr r5,rerr; 3
+57
View File
@@ -0,0 +1,57 @@
/
/
/ cabs fortran function
.globl cabs.
.globl dcabs.
.globl sqrt
.globl retrn
.globl rerr
.globl temp
dcabs.: temp
.+2
setd
br 1f
cabs.: temp
.+2
setf
1:
mov 2(r3),r1
movf (r1)+,r0
movf (r1)+,r1
jsr pc,hypot
bes 1f
movf r0,temp
jmp retrn
1:
jsr r5,rerr; 4
hypot:
movf fr1,-(sp)
absf fr0
absf fr1
cmpf fr0,fr1
cfcc
bne 1f
movf $one,fr0
br 3f
1:
blt 2f
movf fr0,-(sp)
movf fr1,fr0
movf (sp)+,fr1
2:
divf fr1,fr0
mulf fr0,fr0
3:
addf $one,fr0
jsr pc,sqrt
mulf fr1,fr0
cfcc
movf (sp)+,fr1
rts pc
one = 40200
+13
View File
@@ -0,0 +1,13 @@
function ccos(z1)
complex ccos, z1, z2
dimension dummy(2)
equivalence (a,z2,dummy(1)), (b,dummy(2))
z2 = z1
c = exp(b)
d = 1.0/c
b = sin(a)*(d-c)/2.0
a = cos(a)*(c+d)/2.0
ccos = z2
return
end
+35
View File
@@ -0,0 +1,35 @@
/
/
/ cexp fortran function
.globl cexp.
.globl rval8p
.globl retrn
.globl temp
.globl rerr
.globl exp
.globl sin
.globl cos
cexp.: temp
rval8p; 2
.+2
setf
movf (sp)+,r0
jsr pc,exp
bes 1f
movf r0,temp
movf (sp),r0
jsr pc,sin
mulf temp,r0
movf r0,temp+4
movf (sp)+,r0
jsr pc,cos
mulf temp,r0
movf r0,temp
jmp retrn
1:
jsr r5,rerr; 5.
+12
View File
@@ -0,0 +1,12 @@
function clog(z1)
complex clog, z1, z2
dimension dummy(2)
equivalence (a,z2,dummy(1)), (b,dummy(2))
z2 = z1
c = cabs(z2)
b = atan2(b, a)
a = alog(c)
clog = z2
return
end
+34
View File
@@ -0,0 +1,34 @@
/
/
/ cmplx fortran function
.globl cmplx.
.globl dcmplx.
.globl retrn
.globl temp
.globl rerr
dcmplx.:temp
.+2
setd
br 1f
cmplx.: temp
.+2
setf
1:
cmp *2(sp),$2
bne 1f
mov r3,r1
tst (r1)+
movf *(r1)+,r0
movf *(r1)+,r1
mov $temp,r1
movf r0,(r1)+
movf r1,(r1)+
jmp retrn
1:
jsr r5,rerr; 6.
+21
View File
@@ -0,0 +1,21 @@
/
/
/ conjg fortran function
.globl conjg.
.globl rval8p
.globl retrn
.globl temp
conjg.: temp
rval8p; 2
.+2
setf
movf (sp)+,r0
movf r0,temp
movf (sp)+,r0
negf r0
movf r0,temp+4
jmp retrn
+25
View File
@@ -0,0 +1,25 @@
/
/
/ cos & dcos fortran functions
.globl cos.
.globl dcos.
.globl cos
.globl retrn
.globl temp
dcos.: temp
.+2
setd
br 1f
cos.: temp
.+2
setf
1:
movf *2(r3),r0
jsr pc,cos
movf r0,temp
jmp retrn
+13
View File
@@ -0,0 +1,13 @@
function csin(z1)
complex csin, z1, z2
dimension dummy(2)
equivalence (a,z2,dummy(1)), (b,dummy(2))
z2 = z1
c = exp(b)
d = 1.0/c
b = cos(a)*(c-d)/2.0
a = sin(a)*(c+d)/2.0
csin = z2
return
end
+14
View File
@@ -0,0 +1,14 @@
function csqrt(z1)
complex csqrt, z1, z2
dimension dummy(2)
equivalence (a,z2,dummy(1)), (b,dummy(2))
z2 = z1
c = cabs(z2)
c = sqrt(c)
b = atan2(b, a)/2.0
a = c*cos(b)
b = c*sin(b)
csqrt = z2
return
end
+20
View File
@@ -0,0 +1,20 @@
/
/
/ dble fortran function
.globl dble.
.globl rval4p
.globl lval
.globl r4r8
.globl gas8
.globl retrn
.globl temp
dble.: temp
lval; temp
rval4p; 2
r4r8
gas8
retrn
+13
View File
@@ -0,0 +1,13 @@
function dccos(z1)
double complex dccos, z1, z2
double precision dummy(2), a, b, c, d
equivalence (a,z2,dummy(1)), (b,dummy(2))
z2 = z1
c = dexp(b)
d = 1.0d0/c
b = dsin(a)*(d-c)/2.0d0
a = dcos(a)*(c+d)/2.0d0
dccos = z2
return
end
+13
View File
@@ -0,0 +1,13 @@
function dclog(z1)
double complex z1, z2, dclog
double precision a,b,c
double precision dummy(2)
equivalence (a,z2,dummy(1)), (b,dummy(2))
z2=z1
c=dcabs(z2)
b=datan2(b,a)
a=dlog(c)
dclog=z2
return
end
+13
View File
@@ -0,0 +1,13 @@
function dcsin(z1)
double complex dcsin, z1, z2
double precision dummy(2), a, b, c, d
equivalence (a,z2,dummy(1)), (b,dummy(2))
z2 = z1
c = dexp(b)
d = 1.0d0/c
b = dcos(a)*(c-d)/2.0d0
a = dsin(a)*(c+d)/2.0d0
dcsin = z2
return
end
+14
View File
@@ -0,0 +1,14 @@
function dcsqrt(z1)
double complex dcsqrt, z1, z2
double precision dummy(2), a, b, c
equivalence (a,z2,dummy(1)), (b,dummy(2))
z2 = z1
c = dcabs(z2)
c = dsqrt(c)
b = datan2(b, a)/2.0d0
a = c*dcos(b)
b = c*dsin(b)
dcsqrt = z2
return
end
+27
View File
@@ -0,0 +1,27 @@
/
/
/ dim fortran function
.globl dim.
.globl retrn
.globl temp
.globl rerr
/
dim.: temp
.+2
setf
cmp *2(sp),$2
bne 2f
movf *2(r3),r0
subf *4(r3),r0
cfcc
bge 1f
clrf r0
1:
movf r0,temp
jmp retrn
2:
jsr r5,rerr; 7.
+19
View File
@@ -0,0 +1,19 @@
/
/
/ dimag fortran function
.globl dimag.
.globl rval16p
.globl retrn
.globl temp
dimag.: temp
rval16p; 2
.+2
setd
tstf (sp)+
movf (sp)+,r0
movf r0,temp
jmp retrn
+31
View File
@@ -0,0 +1,31 @@
/
/
/ exp & dexp fortran functions
.globl exp.
.globl dexp.
.globl exp
.globl retrn
.globl rerr
.globl temp
dexp.: temp
.+2
setd
br 1f
exp.: temp
.+2
setf
1:
seti
movf *2(r3),r0
jsr pc,exp
bes 1f
movf r0,temp
jmp retrn
1:
jsr r5,rerr; 8.
+20
View File
@@ -0,0 +1,20 @@
/
/
/ float fortran function
.globl float.
.globl rval4p
.globl lval
.globl gas4
.globl i4r4
.globl retrn
.globl temp
float.: temp
lval; temp
rval4p; 2
i4r4
gas4
retrn
+18
View File
@@ -0,0 +1,18 @@
/
/
/ iabs fortran function
.globl iabs.
.globl retrn
.globl temp
iabs.: temp
.+2
setl
setd
movif *2(r3),r0
absf r0
movfi r0,temp
jmp retrn
+29
View File
@@ -0,0 +1,29 @@
/
/
/ idim fortran function
.globl idim.
.globl retrn
.globl rerr
.globl temp
idim.: temp
.+2
setd
setl
cmp *2(sp),$2
bne 2f
movif *2(r3),r0
movif *4(r3),r1
subf r1,r0
cfcc
bge 1f
clrf r0
1:
movfi r0,temp
jmp retrn
2:
jsr r5,rerr; 9.
+17
View File
@@ -0,0 +1,17 @@
/
/
/ idint fortran function
.globl idint.
.globl retrn
.globl temp
idint.: temp
.+2
setd
setl
movf *2(r3),r0
movfi r0,temp
jmp retrn
+69
View File
@@ -0,0 +1,69 @@
/
/
/ catch runtime errors:
/ if (ierror(errno)) goto place
/ on call, returns 0
/ on occurrence of error, returns non-zero
.globl ierror.
.globl erret
.globl rerr
.globl retrn
ierror.:zero
.+2
mov 2(r3),r0
mov 2(r0),r1
mov $errbuf,r0
1:
cmp r0,cerrp
blo 2f
cmp cerrp,$eerbuf
blo 3f
jsr r5,rerr; 120.
3:
add $8,cerrp
br 1f
2:
cmp r1,(r0)
beq 1f
add $8,r0
br 1b
1:
mov r1,(r0)+
mov r3,(r0)+
mov 2(sp),(r0)+
mov 4(sp),(r0)+
jmp retrn
.data
erret:
jmp 9f
.text
9:
mov $errbuf,r0
cmp (r0),r1
beq 1f
add $8,r0
cmp r0,cerrp
blo 1b
rts pc
1:
add $8,r0
mov -(r0),-(sp)
mov -(r0),-(sp)
mov $one,-(sp)
mov -(r0),r3
jmp retrn
.data
one: 77777; 177777
zero: 0; 0
cerrp: errbuf
.bss
errbuf: .=.+50
eerbuf:
+22
View File
@@ -0,0 +1,22 @@
/
/
/ ifix & int fortran functions
.globl ifix.
.globl int.
.globl lval
.globl r4i4
.globl gas4
.globl rval4p
.globl retrn
.globl temp
int.:
ifix.: temp
lval; temp
rval4p; 2
r4i4
gas4
retrn
+29
View File
@@ -0,0 +1,29 @@
/
/
/ isign fortran function
.globl isign.
.globl retrn
.globl rerr
.globl temp
isign.: temp
.+2
setd
setl
cmp *2(sp),$2
bne 2f
movif *2(r3),r0
absf r0
movif *4(r3),r1
cfcc
bge 1f
negf r0
1:
movfi r0,temp
jmp retrn
2:
jsr r5,rerr; 10.
+30
View File
@@ -0,0 +1,30 @@
/
/
/ mod fortran function
.globl mod.
.globl retrn
.globl temp
one = 40200
.globl rerr
mod.: temp
.+2
setd
setl
cmp *2(sp),$2
bne 1f
movif *2(r3),r0
movf r0,r2
movif *4(r3),r1
divf r1,r2
modf $one,r2
mulf r1,r3
subf r3,r0
movfi r0,temp
jmp retrn
1:
jsr r5,rerr; 11.
+23
View File
@@ -0,0 +1,23 @@
/
/
/ real & dreal fortran function
.globl real.
.globl dreal.
.globl retrn
.globl temp
dreal.: temp
.+2
setd
br 1f
real.: temp
.+2
setf
1:
movf *2(r3),r0
movf r0,temp
jmp retrn
+35
View File
@@ -0,0 +1,35 @@
/
/
/ sign & dsign fortran functions
.globl sign.
.globl dsign.
.globl retrn
.globl temp
.globl rerr
dsign.: temp
.+2
setd
br 1f
sign.: temp
.+2
setf
1:
cmp *2(sp),$2
bne 2f
movf *2(r3),r0
absf r0
tstf *4(r3)
cfcc
bge 1f
negf r0
1:
movf r0,temp
jmp retrn
2:
jsr r5,rerr; 12.
+25
View File
@@ -0,0 +1,25 @@
/
/
/ sin & dsin fortran functions
.globl sin.
.globl dsin.
.globl sin
.globl retrn
.globl temp
dsin.: temp
.+2
setd
br 1f
sin.: temp
.+2
setf
1:
movf *2(r3),r0
jsr pc,sin
movf r0,temp
jmp retrn
+20
View File
@@ -0,0 +1,20 @@
/
/
/ sngl fortran function
.globl sngl.
.globl rval8p
.globl lval
.globl r8r4
.globl gas4
.globl retrn
.globl temp
sngl.: temp
lval; temp
rval8p; 2
r8r4
gas4
retrn
+29
View File
@@ -0,0 +1,29 @@
/
/
/ sqrt & dsqrt fortran functions
.globl sqrt.
.globl dsqrt.
.globl sqrt
.globl retrn
.globl rerr
.globl temp
dsqrt.: temp
.+2
setd
br 1f
sqrt.: temp
.+2
setf
1:
movf *2(r3),r0
jsr pc,sqrt
bes 1f
movf r0,temp
jmp retrn
1:
jsr r5,rerr; 13.
+7
View File
@@ -0,0 +1,7 @@
function tanh(a)
b = exp(a)
c = 1.0/b
tanh = (b-c)/(b+c)
return
end