Add original unix v6
This commit is contained in:
@@ -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
|
||||
@@ -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
|
||||
@@ -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
|
||||
@@ -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
|
||||
@@ -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
|
||||
@@ -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
|
||||
@@ -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
|
||||
@@ -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
|
||||
@@ -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
|
||||
@@ -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
|
||||
@@ -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
|
||||
@@ -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
|
||||
@@ -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
|
||||
@@ -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
|
||||
@@ -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.
|
||||
@@ -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
|
||||
@@ -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.
|
||||
@@ -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
|
||||
@@ -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
|
||||
@@ -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
|
||||
@@ -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
|
||||
@@ -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
|
||||
@@ -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
|
||||
@@ -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
|
||||
@@ -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
|
||||
@@ -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
|
||||
@@ -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.
|
||||
@@ -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
|
||||
@@ -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.
|
||||
@@ -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
|
||||
@@ -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
|
||||
@@ -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.
|
||||
@@ -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
|
||||
@@ -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:
|
||||
@@ -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
|
||||
@@ -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.
|
||||
@@ -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.
|
||||
@@ -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
|
||||
@@ -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.
|
||||
@@ -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
|
||||
@@ -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
|
||||
@@ -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.
|
||||
@@ -0,0 +1,7 @@
|
||||
function tanh(a)
|
||||
|
||||
b = exp(a)
|
||||
c = 1.0/b
|
||||
tanh = (b-c)/(b+c)
|
||||
return
|
||||
end
|
||||
Reference in New Issue
Block a user