Add original unix v6
This commit is contained in:
@@ -0,0 +1,194 @@
|
||||
/ fortran to UNIX IO
|
||||
/
|
||||
.globl read.
|
||||
.globl write.
|
||||
.globl seek.
|
||||
.globl seek0.
|
||||
.globl open.
|
||||
.globl creat.
|
||||
.globl close.
|
||||
.globl errno.
|
||||
|
||||
indir = 0
|
||||
|
||||
/ integer function read(f, a, n)
|
||||
/ integer f, n
|
||||
/ logical*1 a(n)
|
||||
/ same as C
|
||||
|
||||
read.:
|
||||
temp
|
||||
rval4p; 2 / f
|
||||
i4i2
|
||||
lvalp; 4 / a
|
||||
rval4p; 6 / n
|
||||
i4i2
|
||||
.+2
|
||||
mov (sp)+,9f+4
|
||||
mov (sp)+,9f+2
|
||||
mov (sp)+,r0
|
||||
sys indir; 9f
|
||||
br ret
|
||||
|
||||
.data
|
||||
9: sys read; ..; ..
|
||||
.text
|
||||
|
||||
/ integer function read(f, a, n)
|
||||
/ integer f, n
|
||||
/ logical*1 a(n)
|
||||
/ same as C
|
||||
|
||||
write.:
|
||||
temp
|
||||
rval4p; 2 / f
|
||||
i4i2
|
||||
lvalp; 4 / a
|
||||
rval4p; 6 / n
|
||||
i4i2
|
||||
.+2
|
||||
mov (sp)+,9f+4
|
||||
mov (sp)+,9f+2
|
||||
mov (sp)+,r0
|
||||
sys indir; 9f
|
||||
br ret
|
||||
|
||||
.data
|
||||
9: sys write; ..; ..
|
||||
.text
|
||||
|
||||
/ integer function seek(f, o, b)
|
||||
/ integer f, o, b
|
||||
/ same as C
|
||||
|
||||
seek.:
|
||||
temp
|
||||
rval4p; 2 / f
|
||||
i4i2
|
||||
rval4p; 4 / o
|
||||
i4i2
|
||||
rval4p; 6 / b
|
||||
i4i2
|
||||
.+2
|
||||
mov (sp)+,9f+4
|
||||
mov (sp)+,9f+2
|
||||
mov (sp)+,r0
|
||||
sys indir; 9f
|
||||
br ret
|
||||
|
||||
/ integer function seek0(f, n)
|
||||
/ integer f, n
|
||||
/ same as seek(f, n, 0)
|
||||
/ but with 24 bit `n'
|
||||
|
||||
seek0.:
|
||||
temp
|
||||
rval4p; 2 / f
|
||||
i4i2
|
||||
rval4p; 4 / n
|
||||
.+2
|
||||
mov (sp)+,r0
|
||||
mov (sp),r1
|
||||
bic $!777,(sp)
|
||||
ashc $-9.,r0
|
||||
mov r1,9f+2
|
||||
mov $3,9f+4
|
||||
mov 2(sp),r0
|
||||
sys indir; 9f / to block
|
||||
mov (sp)+,9f+2
|
||||
mov $1,9f+4
|
||||
mov (sp)+,r0
|
||||
sys indir; 9f / to byte within block
|
||||
br ret
|
||||
|
||||
.data
|
||||
9: sys seek; ..; ..
|
||||
.text
|
||||
|
||||
/ integer function open(a, m)
|
||||
/ logical*1 a(n)
|
||||
/ integer m
|
||||
/ same as C, name is ` ' terminated
|
||||
|
||||
open.:
|
||||
temp
|
||||
lvalp; 2 / a
|
||||
rval4p; 4 / m
|
||||
i4i2
|
||||
.+2
|
||||
mov (sp)+,9f+4
|
||||
mov (sp)+,r0
|
||||
mov r0,9f+2
|
||||
1:
|
||||
cmpb (r0)+,$' /
|
||||
bne 1b
|
||||
clrb -(r0)
|
||||
sys indir; 9f
|
||||
br ret
|
||||
|
||||
.data
|
||||
9: sys open; ..; ..
|
||||
.text
|
||||
|
||||
/ integer function creat(a, m)
|
||||
/ logical*1 a(n)
|
||||
/ integer m
|
||||
/ same as C, name is ` ' terminated
|
||||
|
||||
creat.:
|
||||
temp
|
||||
lvalp; 2 / a
|
||||
rval4p; 4 / m
|
||||
i4i2
|
||||
.+2
|
||||
mov (sp)+,9f+4
|
||||
mov (sp)+,r0
|
||||
mov r0,9f+2
|
||||
1:
|
||||
cmpb (r0)+,$' /
|
||||
bne 1b
|
||||
clrb -(r0)
|
||||
sys indir; 9f
|
||||
br ret
|
||||
|
||||
.data
|
||||
9: sys creat; ..; ..
|
||||
.text
|
||||
|
||||
/ integer function close(f)
|
||||
/ integer f
|
||||
/ same as C
|
||||
|
||||
close.:
|
||||
temp
|
||||
rval4p; 2 / f
|
||||
i4i2
|
||||
.+2
|
||||
mov (sp)+,r0
|
||||
sys close
|
||||
|
||||
ret:
|
||||
bec 1f
|
||||
mov r0,error
|
||||
mov $-1,r0
|
||||
1:
|
||||
mov r0,temp+2
|
||||
sxt temp
|
||||
jmp retrn
|
||||
|
||||
/ error = errno
|
||||
/ returns last error number
|
||||
|
||||
errno.:
|
||||
temp
|
||||
.+2
|
||||
mov error,r0
|
||||
br ret
|
||||
|
||||
.globl temp
|
||||
.globl retrn
|
||||
.globl rval4p
|
||||
.globl lvalp
|
||||
.globl i4i2
|
||||
.bss
|
||||
error: .=.+2
|
||||
Reference in New Issue
Block a user