Initial revision
This commit is contained in:
parent
8defe7ce53
commit
d5aa088876
39
mach/pdp/libem/Makefile
Normal file
39
mach/pdp/libem/Makefile
Normal file
|
@ -0,0 +1,39 @@
|
||||||
|
l=../lib
|
||||||
|
|
||||||
|
install: cp
|
||||||
|
|
||||||
|
cp: all
|
||||||
|
cp head_em $l/head_em
|
||||||
|
cp tail_em $l/tail_em
|
||||||
|
rm -f head_em tail_em
|
||||||
|
|
||||||
|
cmp: all
|
||||||
|
cmp head_em $l/head_em
|
||||||
|
cmp tail_em $l/tail_em
|
||||||
|
rm -f head_em tail_em
|
||||||
|
|
||||||
|
all: head_em tail_em
|
||||||
|
|
||||||
|
head_em: head_em.s
|
||||||
|
pdp -c head_em.s ; mv head_em.o head_em
|
||||||
|
|
||||||
|
tail_em: tail_em.s.a
|
||||||
|
mkdir tmp; \
|
||||||
|
cd tmp; \
|
||||||
|
ar x ../tail_em.s.a; \
|
||||||
|
for i in *.s; \
|
||||||
|
do \
|
||||||
|
pdp -c $$i; \
|
||||||
|
done; \
|
||||||
|
ar cr tail.a `lorder *.o | tsort`; \
|
||||||
|
cp tail.a ../tail_em; \
|
||||||
|
cd ..; \
|
||||||
|
rm -r tmp
|
||||||
|
|
||||||
|
clean:
|
||||||
|
-rm -f `ar t tail_em.s.a` ; rm -rf temp ; rm -f *.o
|
||||||
|
opr:
|
||||||
|
make pr | opr
|
||||||
|
pr:
|
||||||
|
@pr `pwd`/Makefile `pwd`/head_em.s
|
||||||
|
@ar pv tail_em.s.a | pr -h `pwd`/tail_em.s.a
|
10
mach/pdp/libem/RT.s
Normal file
10
mach/pdp/libem/RT.s
Normal file
|
@ -0,0 +1,10 @@
|
||||||
|
.globl RT,RTr2,RTr2r4
|
||||||
|
|
||||||
|
RTr2r4:
|
||||||
|
mov (sp)+,r4
|
||||||
|
RTr2:
|
||||||
|
mov (sp)+,r2
|
||||||
|
RT:
|
||||||
|
mov r5,sp
|
||||||
|
mov (sp)+,r5
|
||||||
|
rts pc
|
12
mach/pdp/libem/aar.s
Normal file
12
mach/pdp/libem/aar.s
Normal file
|
@ -0,0 +1,12 @@
|
||||||
|
.text
|
||||||
|
.globl aar~
|
||||||
|
|
||||||
|
/r0 : description address
|
||||||
|
/r1 : element number
|
||||||
|
/base address is on stack
|
||||||
|
aar~:
|
||||||
|
sub (r0),r1
|
||||||
|
mov 04(r0),r0
|
||||||
|
mul r0,r1
|
||||||
|
add r1,02(sp)
|
||||||
|
rts pc
|
13
mach/pdp/libem/adf.s
Normal file
13
mach/pdp/libem/adf.s
Normal file
|
@ -0,0 +1,13 @@
|
||||||
|
.text
|
||||||
|
.globl adf~
|
||||||
|
.globl setfloat~
|
||||||
|
|
||||||
|
/size in r0
|
||||||
|
adf~:
|
||||||
|
mov (sp)+,r1
|
||||||
|
jsr pc,setfloat~
|
||||||
|
movf (sp)+,r0
|
||||||
|
addf (sp)+,r0
|
||||||
|
movf r0,-(sp)
|
||||||
|
setl
|
||||||
|
jmp (r1)
|
19
mach/pdp/libem/adi.s
Normal file
19
mach/pdp/libem/adi.s
Normal file
|
@ -0,0 +1,19 @@
|
||||||
|
.text
|
||||||
|
.globl adi~
|
||||||
|
.globl unknown~
|
||||||
|
|
||||||
|
/size in r0
|
||||||
|
adi~:
|
||||||
|
mov (sp)+,r1
|
||||||
|
cmp r0,$04
|
||||||
|
bgt 1f
|
||||||
|
cmp r0,$02
|
||||||
|
bgt 2f
|
||||||
|
add (sp)+,(sp)
|
||||||
|
jmp (r1)
|
||||||
|
2: add (sp)+,02(sp)
|
||||||
|
add (sp)+,02(sp)
|
||||||
|
adc (sp)
|
||||||
|
jmp (r1)
|
||||||
|
1:
|
||||||
|
jmp unknown~
|
13
mach/pdp/libem/and.s
Normal file
13
mach/pdp/libem/and.s
Normal file
|
@ -0,0 +1,13 @@
|
||||||
|
.text
|
||||||
|
.globl and~
|
||||||
|
.globl save1~
|
||||||
|
|
||||||
|
and~:
|
||||||
|
mov (sp)+,save1~
|
||||||
|
mov sp,r1
|
||||||
|
add r0,r1
|
||||||
|
asr r0
|
||||||
|
1: com (sp)
|
||||||
|
bic (sp)+,(r1)+
|
||||||
|
sob r0,1b
|
||||||
|
jmp *save1~
|
28
mach/pdp/libem/blm.s
Normal file
28
mach/pdp/libem/blm.s
Normal file
|
@ -0,0 +1,28 @@
|
||||||
|
.globl blm~
|
||||||
|
.globl save~,retu~
|
||||||
|
|
||||||
|
/ Size in r0
|
||||||
|
blm~:
|
||||||
|
jsr pc,save~
|
||||||
|
mov (sp)+,r2
|
||||||
|
mov (sp)+,r3
|
||||||
|
mov r0,r1
|
||||||
|
asr r0
|
||||||
|
beq 2f
|
||||||
|
/ Now avoid wrong copy.
|
||||||
|
/ The pieces may overlap !
|
||||||
|
cmp r3,r2
|
||||||
|
beq 2f
|
||||||
|
blt 3f
|
||||||
|
1:
|
||||||
|
mov (r3)+,(r2)+
|
||||||
|
sob r0,1b
|
||||||
|
2:
|
||||||
|
jmp retu~
|
||||||
|
3:
|
||||||
|
add r1,r3
|
||||||
|
add r1,r2
|
||||||
|
4:
|
||||||
|
mov -(r3),-(r2)
|
||||||
|
sob r0,4b
|
||||||
|
br 2b
|
14
mach/pdp/libem/cff.s
Normal file
14
mach/pdp/libem/cff.s
Normal file
|
@ -0,0 +1,14 @@
|
||||||
|
.text
|
||||||
|
.globl cff~
|
||||||
|
.globl setfloat~
|
||||||
|
|
||||||
|
cff~:
|
||||||
|
mov (sp)+,r1
|
||||||
|
mov (sp)+,r0
|
||||||
|
cmp (sp)+,r0
|
||||||
|
beq 1f
|
||||||
|
jsr pc,setfloat~
|
||||||
|
movof (sp)+,r0
|
||||||
|
movf r0,-(sp)
|
||||||
|
setl
|
||||||
|
1: jmp (r1)
|
14
mach/pdp/libem/cfi.s
Normal file
14
mach/pdp/libem/cfi.s
Normal file
|
@ -0,0 +1,14 @@
|
||||||
|
.text
|
||||||
|
.globl cfi~
|
||||||
|
.globl setfloat~,setint~
|
||||||
|
|
||||||
|
cfi~:
|
||||||
|
mov (sp)+,r1
|
||||||
|
mov (sp)+,r0
|
||||||
|
jsr pc,setint~
|
||||||
|
mov (sp)+,r0
|
||||||
|
jsr pc,setfloat~
|
||||||
|
movf (sp)+,r0
|
||||||
|
movfi r0,-(sp)
|
||||||
|
setl;seti
|
||||||
|
jmp (r1)
|
24
mach/pdp/libem/cif.s
Normal file
24
mach/pdp/libem/cif.s
Normal file
|
@ -0,0 +1,24 @@
|
||||||
|
.text
|
||||||
|
.globl cif~,cuf~
|
||||||
|
.globl setint~,setfloat~
|
||||||
|
|
||||||
|
cif~:
|
||||||
|
mov (sp)+,r1
|
||||||
|
mov (sp)+,r0
|
||||||
|
jsr pc,setfloat~
|
||||||
|
mov (sp)+,r0
|
||||||
|
1: jsr pc,setint~
|
||||||
|
movif (sp)+,r0
|
||||||
|
movf r0,-(sp)
|
||||||
|
setl;seti
|
||||||
|
jmp (r1)
|
||||||
|
cuf~:
|
||||||
|
mov (sp)+,r1
|
||||||
|
mov (sp)+,r0
|
||||||
|
jsr pc,setfloat~
|
||||||
|
mov (sp)+,r0
|
||||||
|
cmp r0,$02
|
||||||
|
bne 1b
|
||||||
|
clr -(sp)
|
||||||
|
mov $04,r0
|
||||||
|
br 1b
|
23
mach/pdp/libem/cii.s
Normal file
23
mach/pdp/libem/cii.s
Normal file
|
@ -0,0 +1,23 @@
|
||||||
|
.text
|
||||||
|
.globl cii~
|
||||||
|
.globl save1~
|
||||||
|
|
||||||
|
/convert int to int
|
||||||
|
/ 1 byte -> ? : sign extension
|
||||||
|
cii~:
|
||||||
|
mov (sp)+,save1~
|
||||||
|
mov (sp)+,r0
|
||||||
|
sub (sp)+,r0
|
||||||
|
ble 1f
|
||||||
|
asr r0
|
||||||
|
bcc 2f
|
||||||
|
movb (sp),r1
|
||||||
|
mov r1,(sp)
|
||||||
|
2: tst r0
|
||||||
|
beq 3f
|
||||||
|
tst (sp)
|
||||||
|
4: sxt -(sp)
|
||||||
|
sob r0,4b
|
||||||
|
3: jmp *save1~
|
||||||
|
1: sub r0,sp
|
||||||
|
jmp *save1~
|
13
mach/pdp/libem/ciu.s
Normal file
13
mach/pdp/libem/ciu.s
Normal file
|
@ -0,0 +1,13 @@
|
||||||
|
.text
|
||||||
|
.globl cuu~
|
||||||
|
cuu~:
|
||||||
|
mov (sp)+,r1
|
||||||
|
mov (sp)+,r0
|
||||||
|
sub (sp)+,r0
|
||||||
|
ble 1f
|
||||||
|
asr r0
|
||||||
|
2: clr -(sp)
|
||||||
|
sob r0,2b
|
||||||
|
jmp (r1)
|
||||||
|
1: sub r0,sp
|
||||||
|
jmp (r1)
|
19
mach/pdp/libem/cmf.s
Normal file
19
mach/pdp/libem/cmf.s
Normal file
|
@ -0,0 +1,19 @@
|
||||||
|
.text
|
||||||
|
.globl cmf~
|
||||||
|
.globl setfloat~
|
||||||
|
|
||||||
|
cmf~:
|
||||||
|
jsr pc,setfloat~
|
||||||
|
mov (sp)+,r1
|
||||||
|
movf (sp)+,r0
|
||||||
|
movf (sp)+,r1
|
||||||
|
clr r0
|
||||||
|
cmpf r0,r1
|
||||||
|
setl
|
||||||
|
cfcc
|
||||||
|
beq 1f
|
||||||
|
blt 2f
|
||||||
|
dec r0
|
||||||
|
jmp (r1)
|
||||||
|
2: inc r0
|
||||||
|
1: jmp (r1)
|
17
mach/pdp/libem/cmi.s
Normal file
17
mach/pdp/libem/cmi.s
Normal file
|
@ -0,0 +1,17 @@
|
||||||
|
.text
|
||||||
|
.globl cmi~
|
||||||
|
.globl cmi4~,unknown~
|
||||||
|
|
||||||
|
/ Size in r0
|
||||||
|
cmi~:
|
||||||
|
cmp r0,$02
|
||||||
|
bne 1f
|
||||||
|
mov (sp)+,r1
|
||||||
|
mov (sp)+,r0
|
||||||
|
sub (sp)+,r0
|
||||||
|
neg r0
|
||||||
|
jmp (r1)
|
||||||
|
1: cmp r0,$04
|
||||||
|
bne 2f
|
||||||
|
jmp cmi4~
|
||||||
|
2: jmp unknown~
|
21
mach/pdp/libem/cmi4.s
Normal file
21
mach/pdp/libem/cmi4.s
Normal file
|
@ -0,0 +1,21 @@
|
||||||
|
.text
|
||||||
|
.globl cmi4~
|
||||||
|
.globl save1~
|
||||||
|
|
||||||
|
cmi4~:
|
||||||
|
mov (sp)+,r1
|
||||||
|
clr r0
|
||||||
|
cmp (sp),4(sp)
|
||||||
|
bgt 1f
|
||||||
|
blt 2f
|
||||||
|
cmp 2(sp),6(sp)
|
||||||
|
bhi 1f
|
||||||
|
beq 3f
|
||||||
|
2:
|
||||||
|
inc r0
|
||||||
|
br 3f
|
||||||
|
1:
|
||||||
|
dec r0
|
||||||
|
3:
|
||||||
|
add $10,sp
|
||||||
|
jmp (r1)
|
16
mach/pdp/libem/cms.s
Normal file
16
mach/pdp/libem/cms.s
Normal file
|
@ -0,0 +1,16 @@
|
||||||
|
.text
|
||||||
|
.globl cms~
|
||||||
|
.globl save~,retu~
|
||||||
|
|
||||||
|
cms~:
|
||||||
|
jsr pc,save~
|
||||||
|
mov r0,r2
|
||||||
|
add sp,r2
|
||||||
|
mov r2,r4
|
||||||
|
add r0,r4
|
||||||
|
asr r0
|
||||||
|
2: cmp (sp)+,(r2)+
|
||||||
|
bne 1f
|
||||||
|
sob r0,2b
|
||||||
|
1: mov r4,sp
|
||||||
|
jmp retu~
|
22
mach/pdp/libem/cmu.s
Normal file
22
mach/pdp/libem/cmu.s
Normal file
|
@ -0,0 +1,22 @@
|
||||||
|
.text
|
||||||
|
.globl cmu~
|
||||||
|
.globl unknown~,cmu4~
|
||||||
|
|
||||||
|
cmu~:
|
||||||
|
cmp r0,$02
|
||||||
|
bne 3f
|
||||||
|
mov (sp)+,r1
|
||||||
|
clr r0
|
||||||
|
cmp (sp)+,(sp)+
|
||||||
|
beq 2f
|
||||||
|
bhi 1f
|
||||||
|
inc r0
|
||||||
|
br 2f
|
||||||
|
1:
|
||||||
|
dec r0
|
||||||
|
2:
|
||||||
|
jmp (r1)
|
||||||
|
3: cmp r0,$04
|
||||||
|
bne 2f
|
||||||
|
jmp cmu4~
|
||||||
|
2: jmp unknown~
|
20
mach/pdp/libem/cmu4.s
Normal file
20
mach/pdp/libem/cmu4.s
Normal file
|
@ -0,0 +1,20 @@
|
||||||
|
.text
|
||||||
|
.globl cmu4~
|
||||||
|
.globl save~,retu~
|
||||||
|
cmu4~:
|
||||||
|
mov (sp)+,r1
|
||||||
|
clr r0
|
||||||
|
cmp (sp),4(sp)
|
||||||
|
bhi 1f
|
||||||
|
blo 2f
|
||||||
|
cmp 2(sp),6(sp)
|
||||||
|
bhi 1f
|
||||||
|
beq 3f
|
||||||
|
2:
|
||||||
|
inc r0
|
||||||
|
br 3f
|
||||||
|
1:
|
||||||
|
dec r0
|
||||||
|
3:
|
||||||
|
add $10,sp
|
||||||
|
jmp (r1)
|
21
mach/pdp/libem/csa.s
Normal file
21
mach/pdp/libem/csa.s
Normal file
|
@ -0,0 +1,21 @@
|
||||||
|
.text
|
||||||
|
.globl csa~
|
||||||
|
.globl fat~
|
||||||
|
|
||||||
|
ECASE = 20.
|
||||||
|
|
||||||
|
csa~:
|
||||||
|
sub 02(r0),r1
|
||||||
|
blt 1f
|
||||||
|
cmp 04(r0),r1
|
||||||
|
blo 1f
|
||||||
|
asl r1
|
||||||
|
add r1,r0
|
||||||
|
mov 06(r0),r1
|
||||||
|
beq 2f
|
||||||
|
jmp (r1)
|
||||||
|
1: mov (r0),r0
|
||||||
|
beq 2f
|
||||||
|
jmp (r0)
|
||||||
|
2: mov $ECASE,-(sp)
|
||||||
|
jmp fat~
|
25
mach/pdp/libem/csb.s
Normal file
25
mach/pdp/libem/csb.s
Normal file
|
@ -0,0 +1,25 @@
|
||||||
|
.text
|
||||||
|
.globl csb~
|
||||||
|
.globl fat~
|
||||||
|
|
||||||
|
ECASE = 20.
|
||||||
|
|
||||||
|
csb~:
|
||||||
|
mov r3,-(sp)
|
||||||
|
mov (r0)+,-(sp)
|
||||||
|
mov (r0)+,r3
|
||||||
|
beq 1f
|
||||||
|
3: cmp (r0)+,r1
|
||||||
|
beq 2f
|
||||||
|
tst (r0)+
|
||||||
|
sob r3,3b
|
||||||
|
1: mov (sp)+,r1
|
||||||
|
br 4f
|
||||||
|
2: tst (sp)+
|
||||||
|
mov (r0),r1
|
||||||
|
4: beq 5f
|
||||||
|
mov (sp)+,r3
|
||||||
|
jmp (r1)
|
||||||
|
5: mov (sp)+,r3
|
||||||
|
mov $ECASE,-(sp)
|
||||||
|
jmp fat~
|
12
mach/pdp/libem/dup.s
Normal file
12
mach/pdp/libem/dup.s
Normal file
|
@ -0,0 +1,12 @@
|
||||||
|
.text
|
||||||
|
.globl dup~
|
||||||
|
.globl save1~
|
||||||
|
|
||||||
|
dup~:
|
||||||
|
mov (sp)+,save1~
|
||||||
|
mov sp,r1
|
||||||
|
add r0,r1
|
||||||
|
asr r0
|
||||||
|
1: mov -(r1),-(sp)
|
||||||
|
sob r0,1b
|
||||||
|
jmp *save1~
|
13
mach/pdp/libem/dvf.s
Normal file
13
mach/pdp/libem/dvf.s
Normal file
|
@ -0,0 +1,13 @@
|
||||||
|
.text
|
||||||
|
.globl dvf~
|
||||||
|
.globl setfloat~
|
||||||
|
|
||||||
|
dvf~:
|
||||||
|
mov (sp)+,r1
|
||||||
|
jsr pc,setfloat~
|
||||||
|
movf (sp)+,r0
|
||||||
|
movf (sp)+,r1
|
||||||
|
divf r0,r1
|
||||||
|
movf r1,-(sp)
|
||||||
|
setl
|
||||||
|
jmp (r1)
|
19
mach/pdp/libem/dvi.s
Normal file
19
mach/pdp/libem/dvi.s
Normal file
|
@ -0,0 +1,19 @@
|
||||||
|
.text
|
||||||
|
.globl dvi~
|
||||||
|
.globl save1~,unknown~,dvi4~
|
||||||
|
|
||||||
|
dvi~:
|
||||||
|
mov (sp)+,save1~
|
||||||
|
cmp r0,$04
|
||||||
|
bgt 1f
|
||||||
|
beq 2f
|
||||||
|
mov 02(sp),r1
|
||||||
|
sxt r0
|
||||||
|
div (sp)+,r0
|
||||||
|
mov r0,(sp)
|
||||||
|
br 3f
|
||||||
|
2: jsr pc,dvi4~
|
||||||
|
mov r1,-(sp)
|
||||||
|
mov r0,-(sp)
|
||||||
|
3: jmp *save1~
|
||||||
|
1: jmp unknown~
|
81
mach/pdp/libem/dvi4.s
Normal file
81
mach/pdp/libem/dvi4.s
Normal file
|
@ -0,0 +1,81 @@
|
||||||
|
.text
|
||||||
|
.globl dvi4~
|
||||||
|
.globl save~,retu~
|
||||||
|
|
||||||
|
dvi4~:
|
||||||
|
jsr pc,save~
|
||||||
|
mov 02(sp),r3
|
||||||
|
sxt r4
|
||||||
|
bpl 1f
|
||||||
|
neg r3
|
||||||
|
1: cmp r4,(sp)
|
||||||
|
bne hardldiv
|
||||||
|
mov 06(sp),r2
|
||||||
|
mov 04(sp),r1
|
||||||
|
bge 2f
|
||||||
|
neg r1
|
||||||
|
neg r2
|
||||||
|
sbc r1
|
||||||
|
com r4
|
||||||
|
2: mov r4,-(sp)
|
||||||
|
clr r0
|
||||||
|
div r3,r0
|
||||||
|
mov r0,-(sp)
|
||||||
|
mov r1,r0
|
||||||
|
mov r1,r4
|
||||||
|
mov r2,r1
|
||||||
|
div r3,r0
|
||||||
|
bvc 3f
|
||||||
|
mov r2,r1
|
||||||
|
mov r4,r0
|
||||||
|
sub r3,r0
|
||||||
|
div r3,r0
|
||||||
|
tst r1
|
||||||
|
sxt r1
|
||||||
|
add r1,r0
|
||||||
|
3: mov r0,r1
|
||||||
|
mov (sp)+,r0
|
||||||
|
br 4f
|
||||||
|
hardldiv:
|
||||||
|
clr -(sp)
|
||||||
|
mov 010(sp),r2
|
||||||
|
mov 06(sp),r1
|
||||||
|
bpl 5f
|
||||||
|
com (sp)
|
||||||
|
neg r1
|
||||||
|
neg r2
|
||||||
|
sbc r1
|
||||||
|
5: clr r0
|
||||||
|
mov 02(sp),r3
|
||||||
|
bge 6f
|
||||||
|
neg r3
|
||||||
|
neg 04(sp)
|
||||||
|
sbc r3
|
||||||
|
com (sp)
|
||||||
|
6: mov $16.,r4
|
||||||
|
9: clc
|
||||||
|
rol r2
|
||||||
|
rol r1
|
||||||
|
rol r0
|
||||||
|
cmp r3,r0
|
||||||
|
bhi 7f
|
||||||
|
bcs 8f
|
||||||
|
cmp 04(sp),r1
|
||||||
|
blos 8f
|
||||||
|
7: sob r4,9b
|
||||||
|
br 1f
|
||||||
|
8: sub 04(sp),r1
|
||||||
|
sbc r0
|
||||||
|
sub r3,r0
|
||||||
|
inc r2
|
||||||
|
sob r4,9b
|
||||||
|
1:
|
||||||
|
mov r2,r1
|
||||||
|
clr r0
|
||||||
|
4: tst (sp)+
|
||||||
|
beq 1f
|
||||||
|
neg r0
|
||||||
|
neg r1
|
||||||
|
sbc r0
|
||||||
|
1: add $010,sp
|
||||||
|
jmp retu~
|
17
mach/pdp/libem/dvu.s
Normal file
17
mach/pdp/libem/dvu.s
Normal file
|
@ -0,0 +1,17 @@
|
||||||
|
.text
|
||||||
|
.globl dvu~
|
||||||
|
.globl save1~,unknown~,dvu4~,dvu2~
|
||||||
|
|
||||||
|
dvu~:
|
||||||
|
mov (sp)+,save1~
|
||||||
|
cmp r0,$04
|
||||||
|
bgt 1f
|
||||||
|
beq 2f
|
||||||
|
jsr pc,dvu2~
|
||||||
|
mov r0,-(sp)
|
||||||
|
br 3f
|
||||||
|
2: jsr pc,dvu4~
|
||||||
|
mov r1,-(sp)
|
||||||
|
mov r0,-(sp)
|
||||||
|
3: jmp *save1~
|
||||||
|
1: jmp unknown~
|
15
mach/pdp/libem/dvu2.s
Normal file
15
mach/pdp/libem/dvu2.s
Normal file
|
@ -0,0 +1,15 @@
|
||||||
|
.text
|
||||||
|
.globl dvu2~
|
||||||
|
dvu2~:
|
||||||
|
clr r0
|
||||||
|
mov 04(sp),r1
|
||||||
|
tst 02(sp)
|
||||||
|
blt 1f
|
||||||
|
div 02(sp),r0
|
||||||
|
2: mov (sp)+,r1
|
||||||
|
add $04,sp
|
||||||
|
jmp (r1)
|
||||||
|
1: cmp 02(sp),r1
|
||||||
|
bhi 2b
|
||||||
|
inc r0
|
||||||
|
br 2b
|
61
mach/pdp/libem/dvu4.s
Normal file
61
mach/pdp/libem/dvu4.s
Normal file
|
@ -0,0 +1,61 @@
|
||||||
|
.text
|
||||||
|
.globl dvu4~
|
||||||
|
.globl save~,retu~
|
||||||
|
|
||||||
|
dvu4~:
|
||||||
|
jsr pc,save~
|
||||||
|
clr r0
|
||||||
|
tst (sp)
|
||||||
|
bne harddvu4
|
||||||
|
tst 02(sp)
|
||||||
|
blt harddvu4
|
||||||
|
mov 06(sp),r2
|
||||||
|
mov 04(sp),r1
|
||||||
|
mov 02(sp),r3
|
||||||
|
div r3,r0
|
||||||
|
mov r0,-(sp)
|
||||||
|
mov r1,r0
|
||||||
|
mov r1,r4
|
||||||
|
mov r2,r1
|
||||||
|
div r3,r0
|
||||||
|
bvc 1f
|
||||||
|
mov r2,r1
|
||||||
|
mov r4,r0
|
||||||
|
sub r3,r0
|
||||||
|
div r3,r0
|
||||||
|
tst r1
|
||||||
|
sxt r1
|
||||||
|
add r1,r0
|
||||||
|
1: mov r0,r1
|
||||||
|
mov (sp)+,r0
|
||||||
|
br 2f
|
||||||
|
harddvu4:
|
||||||
|
mov 06(sp),r2
|
||||||
|
mov 04(sp),r1
|
||||||
|
mov (sp),r3
|
||||||
|
mov $17.,r4
|
||||||
|
br 3f
|
||||||
|
6: rol r2
|
||||||
|
rol r1
|
||||||
|
rol r0
|
||||||
|
3: cmp r3,r0
|
||||||
|
bhi 4f
|
||||||
|
blo 5f
|
||||||
|
cmp 02(sp),r1
|
||||||
|
blos 5f
|
||||||
|
4: clc
|
||||||
|
sob r4,6b
|
||||||
|
br 7f
|
||||||
|
5: sub 02(sp),r1
|
||||||
|
sbc r0
|
||||||
|
sub r3,r0
|
||||||
|
sec
|
||||||
|
sob r4,6b
|
||||||
|
7: rol r2
|
||||||
|
bcc 8f
|
||||||
|
mov $01,r0
|
||||||
|
br 9f
|
||||||
|
8: clr r0
|
||||||
|
9: mov r2,r1
|
||||||
|
2: add $010,sp
|
||||||
|
jmp retu~
|
8
mach/pdp/libem/eret.s
Normal file
8
mach/pdp/libem/eret.s
Normal file
|
@ -0,0 +1,8 @@
|
||||||
|
.globl eret
|
||||||
|
|
||||||
|
eret:
|
||||||
|
mov r5,sp
|
||||||
|
mov (sp)+,r5
|
||||||
|
mov (sp)+,r4
|
||||||
|
mov (sp)+,r2
|
||||||
|
rts pc
|
18
mach/pdp/libem/exg.s
Normal file
18
mach/pdp/libem/exg.s
Normal file
|
@ -0,0 +1,18 @@
|
||||||
|
.text
|
||||||
|
.globl exg~
|
||||||
|
exg~: jsr pc,save~
|
||||||
|
mov sp,r4
|
||||||
|
sub r0,sp
|
||||||
|
mov sp,r3
|
||||||
|
mov r0,r1
|
||||||
|
1:
|
||||||
|
mov (r4)+,(r3)+
|
||||||
|
sob r0,1b
|
||||||
|
asr r1
|
||||||
|
mov sp,r4
|
||||||
|
1:
|
||||||
|
mov (r4)+,(r3)+
|
||||||
|
sob r1,1b
|
||||||
|
mov r4,sp
|
||||||
|
jmp retu~
|
||||||
|
|
13
mach/pdp/libem/fef.s
Normal file
13
mach/pdp/libem/fef.s
Normal file
|
@ -0,0 +1,13 @@
|
||||||
|
.text
|
||||||
|
.globl fef~
|
||||||
|
.globl setfloat~
|
||||||
|
|
||||||
|
fef~:
|
||||||
|
mov (sp)+,r1
|
||||||
|
jsr pc,setfloat~
|
||||||
|
movf (sp),r0
|
||||||
|
movei r0,-(sp)
|
||||||
|
movie $0,r0
|
||||||
|
movf r0,02(sp)
|
||||||
|
setl
|
||||||
|
jmp (r1)
|
13
mach/pdp/libem/fif.s
Normal file
13
mach/pdp/libem/fif.s
Normal file
|
@ -0,0 +1,13 @@
|
||||||
|
.text
|
||||||
|
.globl fif~
|
||||||
|
.globl setfloat~
|
||||||
|
|
||||||
|
fif~:
|
||||||
|
mov (sp)+,r1
|
||||||
|
jsr pc,setfloat~
|
||||||
|
movf (sp)+,r0
|
||||||
|
modf (sp)+,r0
|
||||||
|
movf r0,-(sp)
|
||||||
|
movf r1,-(sp)
|
||||||
|
setl
|
||||||
|
jmp (r1)
|
17
mach/pdp/libem/gto.s
Normal file
17
mach/pdp/libem/gto.s
Normal file
|
@ -0,0 +1,17 @@
|
||||||
|
.text
|
||||||
|
.globl gto~
|
||||||
|
|
||||||
|
gto~:
|
||||||
|
; mov (sp)+,r4
|
||||||
|
; mov 4(r4),r5
|
||||||
|
; mov 2(r4),sp
|
||||||
|
; jmp *(r4)
|
||||||
|
|
||||||
|
mov (sp)+,r3
|
||||||
|
1: cmp 4(r3),r5
|
||||||
|
jeq 2f
|
||||||
|
mov 2(r5),r4
|
||||||
|
mov 4(r5),r2
|
||||||
|
br 1b
|
||||||
|
2: mov 2(r3),sp
|
||||||
|
jmp *(r3)
|
75
mach/pdp/libem/head_em.s
Normal file
75
mach/pdp/libem/head_em.s
Normal file
|
@ -0,0 +1,75 @@
|
||||||
|
.globl LINO_AD,FILN_AD
|
||||||
|
.globl ERANGE,ESET,EHEAP,EILLINS,ECASE
|
||||||
|
.globl hol0,trppc~,trpim~,reghp~
|
||||||
|
|
||||||
|
rti = 2
|
||||||
|
stst = 170300 ^ tst
|
||||||
|
|
||||||
|
.float = 1 / this should be parameterized somehow
|
||||||
|
.hardfp = 1 / only relevant if .float on
|
||||||
|
|
||||||
|
LINO_AD = 0.
|
||||||
|
FILN_AD = 4.
|
||||||
|
|
||||||
|
ERANGE = 1.
|
||||||
|
ESET = 2.
|
||||||
|
EFOVFL = 4.
|
||||||
|
EFUNFL = 5.
|
||||||
|
EFDIVZ = 7.
|
||||||
|
EFUND = 9.
|
||||||
|
ECONV = 10.
|
||||||
|
EHEAP = 17.
|
||||||
|
EILLINS = 18.
|
||||||
|
ECASE = 20.
|
||||||
|
|
||||||
|
.if .float
|
||||||
|
/ .globl fltused; fltused:
|
||||||
|
.if 1 - .hardfp
|
||||||
|
/ sys 48.;4.;fptrap / if not commented it will appear as undefined
|
||||||
|
.endif
|
||||||
|
sys 48.;8.;sig8
|
||||||
|
ldfps $7600
|
||||||
|
.endif
|
||||||
|
mov 2(sp),r0
|
||||||
|
clr -2(r0)
|
||||||
|
mov sp,r0
|
||||||
|
sub $4,sp
|
||||||
|
mov 4(sp),(sp)
|
||||||
|
tst (r0)+
|
||||||
|
mov r0,2(sp)
|
||||||
|
1:
|
||||||
|
tst (r0)+
|
||||||
|
bne 1b
|
||||||
|
cmp r0,*2(sp)
|
||||||
|
blo 1f
|
||||||
|
tst -(r0)
|
||||||
|
1:
|
||||||
|
mov r0,4(sp)
|
||||||
|
jsr pc,_m_a_i_n
|
||||||
|
/ next two lines for as long as tail needs printf
|
||||||
|
/ mov r0,-(sp)
|
||||||
|
/ jsr pc,*$_exit
|
||||||
|
sys 1.
|
||||||
|
|
||||||
|
.data
|
||||||
|
hol0: 0;0 / line no
|
||||||
|
0;0 / file
|
||||||
|
trppc~: 0
|
||||||
|
trpim~: 0
|
||||||
|
reghp~: _end
|
||||||
|
|
||||||
|
.text
|
||||||
|
sig8:
|
||||||
|
.if .float
|
||||||
|
mov r0,-(sp)
|
||||||
|
stst r0
|
||||||
|
mov 1f(r0),-(sp)
|
||||||
|
jsr pc,trp~
|
||||||
|
sys 48.;8.;sig8
|
||||||
|
mov (sp)+,r0
|
||||||
|
rti
|
||||||
|
|
||||||
|
.data
|
||||||
|
1: EILLINS; EILLINS; EFDIVZ; ECONV; EFOVFL; EFUNFL; EFUND; EILLINS
|
||||||
|
.text
|
||||||
|
.endif
|
10
mach/pdp/libem/hlt.s
Normal file
10
mach/pdp/libem/hlt.s
Normal file
|
@ -0,0 +1,10 @@
|
||||||
|
.text
|
||||||
|
.globl hlt~
|
||||||
|
|
||||||
|
exit = 1
|
||||||
|
|
||||||
|
hlt~:
|
||||||
|
mov (sp)+,r0
|
||||||
|
bne 1f
|
||||||
|
sys exit
|
||||||
|
1: 4
|
18
mach/pdp/libem/iaar.s
Normal file
18
mach/pdp/libem/iaar.s
Normal file
|
@ -0,0 +1,18 @@
|
||||||
|
.text
|
||||||
|
.globl iaar~
|
||||||
|
.globl aar~,trp~
|
||||||
|
|
||||||
|
EILLINS = 18.
|
||||||
|
|
||||||
|
iaar~:
|
||||||
|
mov (sp)+,r0
|
||||||
|
cmp (sp)+,$02
|
||||||
|
bne 1f
|
||||||
|
mov 02(sp),r1
|
||||||
|
mov r0,02(sp)
|
||||||
|
mov (sp)+,r0
|
||||||
|
jmp aar~
|
||||||
|
1: mov $EILLINS,-(sp)
|
||||||
|
jsr pc,trp~
|
||||||
|
add $06,sp
|
||||||
|
jmp (r0)
|
18
mach/pdp/libem/ilar.s
Normal file
18
mach/pdp/libem/ilar.s
Normal file
|
@ -0,0 +1,18 @@
|
||||||
|
.text
|
||||||
|
.globl ilar~
|
||||||
|
.globl lar~,trp~
|
||||||
|
|
||||||
|
EILLINS = 18.
|
||||||
|
|
||||||
|
ilar~:
|
||||||
|
mov (sp)+,r0
|
||||||
|
cmp (sp)+,$02
|
||||||
|
bne 1f
|
||||||
|
mov 02(sp),r1
|
||||||
|
mov r0,02(sp)
|
||||||
|
mov (sp)+,r0
|
||||||
|
jmp lar~
|
||||||
|
1: mov $EILLINS,-(sp)
|
||||||
|
jsr pc,trp~
|
||||||
|
add $06,sp
|
||||||
|
jmp (r0)
|
22
mach/pdp/libem/inn.s
Normal file
22
mach/pdp/libem/inn.s
Normal file
|
@ -0,0 +1,22 @@
|
||||||
|
.text
|
||||||
|
.globl inn~
|
||||||
|
|
||||||
|
inn~:
|
||||||
|
mov r0,-(sp)
|
||||||
|
clr r0
|
||||||
|
div $010,r0
|
||||||
|
cmp r0,(sp)
|
||||||
|
bcc 1f
|
||||||
|
add sp,r0
|
||||||
|
add $4,r0
|
||||||
|
bitb bits(r1),(r0)
|
||||||
|
beq 1f
|
||||||
|
mov $01,r0
|
||||||
|
br 2f
|
||||||
|
1: clr r0
|
||||||
|
2: mov 02(sp),r1
|
||||||
|
add (sp)+,sp
|
||||||
|
tst (sp)+
|
||||||
|
jmp (r1)
|
||||||
|
.data
|
||||||
|
bits: .byte 1,2,4,10,20,40,100,200
|
18
mach/pdp/libem/isar.s
Normal file
18
mach/pdp/libem/isar.s
Normal file
|
@ -0,0 +1,18 @@
|
||||||
|
.text
|
||||||
|
.globl isar~
|
||||||
|
.globl sar~,trp~
|
||||||
|
|
||||||
|
EILLINS = 18.
|
||||||
|
|
||||||
|
isar~:
|
||||||
|
mov (sp)+,r0
|
||||||
|
cmp (sp)+,$02
|
||||||
|
bne 1f
|
||||||
|
mov 02(sp),r1
|
||||||
|
mov r0,02(sp)
|
||||||
|
mov (sp)+,r0
|
||||||
|
jmp sar~
|
||||||
|
1: mov $EILLINS,-(sp)
|
||||||
|
jsr pc,trp~
|
||||||
|
add $06,sp
|
||||||
|
jmp (r0)
|
20
mach/pdp/libem/lar.s
Normal file
20
mach/pdp/libem/lar.s
Normal file
|
@ -0,0 +1,20 @@
|
||||||
|
.text
|
||||||
|
.globl lar~
|
||||||
|
.globl save1~
|
||||||
|
|
||||||
|
lar~:
|
||||||
|
mov (sp)+,save1~
|
||||||
|
sub (r0),r1
|
||||||
|
mov 04(r0),r0
|
||||||
|
mul r0,r1
|
||||||
|
add (sp)+,r1
|
||||||
|
add r0,r1
|
||||||
|
asr r0
|
||||||
|
beq 1f
|
||||||
|
2: mov -(r1),-(sp)
|
||||||
|
sob r0,2b
|
||||||
|
jmp *save1~
|
||||||
|
1: clr r0
|
||||||
|
bisb -(r1),r0
|
||||||
|
mov r0,-(sp)
|
||||||
|
jmp *save1~
|
16
mach/pdp/libem/los2.s
Normal file
16
mach/pdp/libem/los2.s
Normal file
|
@ -0,0 +1,16 @@
|
||||||
|
.text
|
||||||
|
.globl los2~
|
||||||
|
.globl save1~
|
||||||
|
|
||||||
|
los2~:
|
||||||
|
mov (sp)+,save1~
|
||||||
|
cmp r0,$01
|
||||||
|
bne 1f
|
||||||
|
clr -(sp)
|
||||||
|
bisb (r1),(sp)
|
||||||
|
jmp *save1~
|
||||||
|
1: add r0,r1
|
||||||
|
asr r0
|
||||||
|
2: mov -(r1),-(sp)
|
||||||
|
sob r0,2b
|
||||||
|
jmp *save1~
|
12
mach/pdp/libem/mlf.s
Normal file
12
mach/pdp/libem/mlf.s
Normal file
|
@ -0,0 +1,12 @@
|
||||||
|
.text
|
||||||
|
.globl mlf~
|
||||||
|
.globl setfloat~
|
||||||
|
|
||||||
|
mlf~:
|
||||||
|
mov (sp)+,r1
|
||||||
|
jsr pc,setfloat~
|
||||||
|
movf (sp)+,r0
|
||||||
|
mulf (sp)+,r0
|
||||||
|
movf r0,-(sp)
|
||||||
|
setl
|
||||||
|
jmp (r1)
|
19
mach/pdp/libem/mli.s
Normal file
19
mach/pdp/libem/mli.s
Normal file
|
@ -0,0 +1,19 @@
|
||||||
|
.text
|
||||||
|
.globl mli~
|
||||||
|
.globl save1~,unknown~,mli4~
|
||||||
|
|
||||||
|
mli~:
|
||||||
|
cmp r0,$04
|
||||||
|
bgt 1f
|
||||||
|
beq 2f
|
||||||
|
mov (sp)+,r0
|
||||||
|
mov (sp)+,r1
|
||||||
|
mul (sp)+,r1
|
||||||
|
mov r1,-(sp)
|
||||||
|
jmp (r0)
|
||||||
|
2: mov (sp)+,save1~
|
||||||
|
jsr pc,mli4~
|
||||||
|
mov r1,-(sp)
|
||||||
|
mov r0,-(sp)
|
||||||
|
jmp *save1~
|
||||||
|
1: jmp unknown~
|
19
mach/pdp/libem/mli4.s
Normal file
19
mach/pdp/libem/mli4.s
Normal file
|
@ -0,0 +1,19 @@
|
||||||
|
.text
|
||||||
|
.globl mli4~
|
||||||
|
.globl save~,retu~
|
||||||
|
|
||||||
|
mli4~:
|
||||||
|
jsr pc,save~
|
||||||
|
mov 02(sp),r2
|
||||||
|
sxt r1
|
||||||
|
sub (sp),r1
|
||||||
|
mov 06(sp),r0
|
||||||
|
sxt r3
|
||||||
|
sub 04(sp),r3
|
||||||
|
mul r0,r1
|
||||||
|
mul r2,r3
|
||||||
|
add r1,r3
|
||||||
|
mul r2,r0
|
||||||
|
sub r3,r0
|
||||||
|
add $010,sp
|
||||||
|
jmp retu~
|
19
mach/pdp/libem/mlu.s
Normal file
19
mach/pdp/libem/mlu.s
Normal file
|
@ -0,0 +1,19 @@
|
||||||
|
.text
|
||||||
|
.globl mlu~
|
||||||
|
.globl save1~,unknown~,mlu4~
|
||||||
|
|
||||||
|
mlu~:
|
||||||
|
cmp r0,$04
|
||||||
|
bgt 1f
|
||||||
|
beq 2f
|
||||||
|
mov (sp)+,r0
|
||||||
|
mov (sp)+,r1
|
||||||
|
mul (sp)+,r1
|
||||||
|
mov r1,-(sp)
|
||||||
|
jmp (r0)
|
||||||
|
2: mov (sp)+,save1~
|
||||||
|
jsr pc,mlu4~
|
||||||
|
mov r1,-(sp)
|
||||||
|
mov r0,-(sp)
|
||||||
|
jmp *save1~
|
||||||
|
1: jmp unknown~
|
23
mach/pdp/libem/mlu4.s
Normal file
23
mach/pdp/libem/mlu4.s
Normal file
|
@ -0,0 +1,23 @@
|
||||||
|
.text
|
||||||
|
.globl mlu4~
|
||||||
|
.globl save~,retu~
|
||||||
|
|
||||||
|
mlu4~:
|
||||||
|
jsr pc,save~
|
||||||
|
clr r0
|
||||||
|
mov 02(sp),r1
|
||||||
|
mov 06(sp),r3
|
||||||
|
mul r3,r0
|
||||||
|
tst r3
|
||||||
|
bge 1f
|
||||||
|
ashc $15.,r0
|
||||||
|
1: mov 02(sp),r3
|
||||||
|
clr r2
|
||||||
|
mul 04(sp),r2
|
||||||
|
add r3,r0
|
||||||
|
mov 06(sp),r3
|
||||||
|
clr r2
|
||||||
|
mul (sp),r2
|
||||||
|
add r3,r0
|
||||||
|
add $010,sp
|
||||||
|
jmp retu~
|
145
mach/pdp/libem/mon.s
Normal file
145
mach/pdp/libem/mon.s
Normal file
|
@ -0,0 +1,145 @@
|
||||||
|
.text
|
||||||
|
.globl mon~
|
||||||
|
.globl sigtrp~,save~,retu~,save1~
|
||||||
|
|
||||||
|
indir = 0
|
||||||
|
fork = 2
|
||||||
|
getpid = 20.
|
||||||
|
sigtrp = 48.
|
||||||
|
EBADMON = 25.
|
||||||
|
|
||||||
|
HBMASK = 0177400
|
||||||
|
REG01M = 030
|
||||||
|
REG1M = 020
|
||||||
|
ERRMASK = 040
|
||||||
|
|
||||||
|
/ Associated with every monitor call is a descriptor.
|
||||||
|
/ The low order three bits describe how values are returned,
|
||||||
|
/ the next two bits specify if arguments are expected in
|
||||||
|
/ r0 and/or r1, the next bit is not used, and the next
|
||||||
|
/ three bits specify the number of arguments disregarding
|
||||||
|
/ arguments in registers.
|
||||||
|
|
||||||
|
mon~:
|
||||||
|
cmp 02(sp),$sigtrp
|
||||||
|
bne 1f
|
||||||
|
jmp sigtrp~
|
||||||
|
1: jsr pc,save~
|
||||||
|
mov (sp)+,r4
|
||||||
|
mov r4,r2
|
||||||
|
asl r4
|
||||||
|
mov args(r4),r3
|
||||||
|
mov r3,r4
|
||||||
|
bit $ERRMASK,r4
|
||||||
|
bne err
|
||||||
|
cmp r2,$fork
|
||||||
|
bne 2f
|
||||||
|
jbr fork~
|
||||||
|
2: bic $HBMASK,r2
|
||||||
|
bis $sys,r2
|
||||||
|
mov r2,9f
|
||||||
|
bit $REG01M,r3
|
||||||
|
beq 1f
|
||||||
|
mov (sp)+,r0
|
||||||
|
bit $REG1M,r3
|
||||||
|
beq 1f
|
||||||
|
mov (sp)+,r1
|
||||||
|
1: ash $-6,r3
|
||||||
|
beq 2f
|
||||||
|
mov $[9f+2],r2
|
||||||
|
1: mov (sp)+,(r2)+
|
||||||
|
sob r3,1b
|
||||||
|
2: sys indir ; 9f
|
||||||
|
bcs 2f
|
||||||
|
clr r3
|
||||||
|
4: asr r4
|
||||||
|
bcc 1f
|
||||||
|
mov r0,-(sp)
|
||||||
|
1: asr r4
|
||||||
|
bcc 1f
|
||||||
|
mov r1,-(sp)
|
||||||
|
1: asr r4
|
||||||
|
bcc 1f
|
||||||
|
clr -(sp)
|
||||||
|
1: jmp retu~
|
||||||
|
2: mov r0,-(sp)
|
||||||
|
mov r0,-(sp)
|
||||||
|
jmp retu~
|
||||||
|
fork~:
|
||||||
|
sys fork
|
||||||
|
br 1f
|
||||||
|
bcs 2b
|
||||||
|
clr r1
|
||||||
|
br 4b
|
||||||
|
1: mov $1,r1
|
||||||
|
br 4b
|
||||||
|
err:
|
||||||
|
mov $EBADMON,-(sp)
|
||||||
|
jsr pc,trp~
|
||||||
|
tst (sp)+
|
||||||
|
jmp retu~
|
||||||
|
.data
|
||||||
|
.even
|
||||||
|
9: .=.+12.
|
||||||
|
args: ERRMASK / 0 : error
|
||||||
|
010 / 1 : exit(st); ---
|
||||||
|
07 / 2 : fork(); e10
|
||||||
|
0215 / 3 : read(addr,nb,fild); e-0
|
||||||
|
0215 / 4 : write(addr,nb,fild); e-0
|
||||||
|
0205 / 5 : open(str,flag); e-0
|
||||||
|
014 / 6 : close(fild); e--
|
||||||
|
07 / 7 : wait(); e10
|
||||||
|
0205 / 8 : creat(str,mode); e-0
|
||||||
|
0204 / 9 : link(str1,str2); e--
|
||||||
|
0104 /10 : unlink(str); e--
|
||||||
|
ERRMASK /11 : error
|
||||||
|
0104 /12 : chdir(str); e--
|
||||||
|
03 /13 : time(); -10
|
||||||
|
0304 /14 : mknod(str,mode,addr); e--
|
||||||
|
0204 /15 : chmod(str,mode); e--
|
||||||
|
0304 /16 : chown(str,owner,grp); e--
|
||||||
|
ERRMASK /17 : error
|
||||||
|
0204 /18 : stat(str,buf); e--
|
||||||
|
0217 /19 : lseek(high,low,fild); e10
|
||||||
|
01 /20 : getpid(); --0
|
||||||
|
0304 /21 : mount(str1,str2,fl); e--
|
||||||
|
0104 /22 : umount(str); e--
|
||||||
|
014 /23 : setuid(uid); e--
|
||||||
|
03 /24 : getuid(); -01
|
||||||
|
024 /25 : stime(high,low); e--
|
||||||
|
0315 /26 : ptrace(pid,addr,req,d); e-0
|
||||||
|
011 /27 : alarm(sec); --0
|
||||||
|
0114 /28 : fstat(buf,fild); e--
|
||||||
|
0 /29 : pause(); ---
|
||||||
|
0204 /30 : utime(str,timep); e--
|
||||||
|
ERRMASK /31 : error
|
||||||
|
ERRMASK /32 : error
|
||||||
|
0204 /33 : access(str,mode): e--
|
||||||
|
010 /34 : nice(incr); ---
|
||||||
|
0100 /35 : ftime(bufp); ---
|
||||||
|
0 /36 : sync(); ---
|
||||||
|
0114 /37 : kill(sig,pid); e--
|
||||||
|
ERRMASK /38 : error
|
||||||
|
ERRMASK /39 : error
|
||||||
|
ERRMASK /40 : error
|
||||||
|
025 /41 : dup(fild,newfild); e-0
|
||||||
|
07 /42 : pipe(); e10
|
||||||
|
0100 /43 : times(buf); ---
|
||||||
|
0400 /44 : profil(buff,siz,off,sc); ---
|
||||||
|
ERRMASK /45 : error
|
||||||
|
014 /46 : setgid(gid); e--
|
||||||
|
03 /47 : getgid(); -01
|
||||||
|
0 /48 : sigtrp(trap,sig); e-0; SPECIAL TREATMENT
|
||||||
|
ERRMASK /49 : error
|
||||||
|
ERRMASK /50 : error
|
||||||
|
0104 /51 : acct(file); e--
|
||||||
|
0304 /52 : phys(seg,siz,phaddr); e--
|
||||||
|
0104 /53 : lock(flag); e--
|
||||||
|
0304 /54 : ioctl(fild,req,argp); e--
|
||||||
|
ERRMASK /55 : error
|
||||||
|
0204 /56 : mpxcall(cmd,vec); e--
|
||||||
|
ERRMASK /57 : error
|
||||||
|
ERRMASK /58 : error
|
||||||
|
0304 /59 : exece(name,argv,envp); e--
|
||||||
|
0104 /60 : umask(complmode); e--
|
||||||
|
0104 /61 : chroot(str); e--
|
10
mach/pdp/libem/ngf.s
Normal file
10
mach/pdp/libem/ngf.s
Normal file
|
@ -0,0 +1,10 @@
|
||||||
|
.text
|
||||||
|
.globl ngf~
|
||||||
|
.globl setfloat~
|
||||||
|
|
||||||
|
ngf~:
|
||||||
|
mov (sp)+,r1
|
||||||
|
jsr pc,setfloat~
|
||||||
|
negf (sp)
|
||||||
|
setl
|
||||||
|
jmp (r1)
|
17
mach/pdp/libem/ngi.s
Normal file
17
mach/pdp/libem/ngi.s
Normal file
|
@ -0,0 +1,17 @@
|
||||||
|
.text
|
||||||
|
.globl ngi~
|
||||||
|
.globl unknown~
|
||||||
|
|
||||||
|
ngi~:
|
||||||
|
mov (sp)+,r1
|
||||||
|
cmp r0,$02
|
||||||
|
bgt 1f
|
||||||
|
neg (sp)
|
||||||
|
jmp (r1)
|
||||||
|
1: cmp r0,$04
|
||||||
|
bgt 2f
|
||||||
|
neg (sp)
|
||||||
|
neg 02(sp)
|
||||||
|
sbc (sp)
|
||||||
|
jmp (r1)
|
||||||
|
2: jmp unknown~
|
12
mach/pdp/libem/nop.s
Normal file
12
mach/pdp/libem/nop.s
Normal file
|
@ -0,0 +1,12 @@
|
||||||
|
.text
|
||||||
|
.globl nop~
|
||||||
|
.globl hol0,prf~
|
||||||
|
|
||||||
|
nop~:
|
||||||
|
mov hol0,-(sp)
|
||||||
|
mov $fmt,-(sp)
|
||||||
|
jsr pc,prf~
|
||||||
|
add $04,sp
|
||||||
|
rts pc
|
||||||
|
.data
|
||||||
|
fmt: <test %d\n\0>
|
33
mach/pdp/libem/prf.s
Normal file
33
mach/pdp/libem/prf.s
Normal file
|
@ -0,0 +1,33 @@
|
||||||
|
.text
|
||||||
|
.globl prf~
|
||||||
|
.globl save~,retu~,hol0,_printf
|
||||||
|
|
||||||
|
prf~:
|
||||||
|
jsr pc,save~
|
||||||
|
mov hol0,-(sp)
|
||||||
|
mov hol0+4,r0
|
||||||
|
beq 1f
|
||||||
|
mov r0,r2
|
||||||
|
mov $40.,r1
|
||||||
|
3: movb (r2)+,r3
|
||||||
|
beq 2f
|
||||||
|
cmpb r3,$0177
|
||||||
|
bge 1f
|
||||||
|
cmpb r3,$040
|
||||||
|
blt 1f
|
||||||
|
sob r1,3b
|
||||||
|
clrb (r2)
|
||||||
|
2: mov sp,r1
|
||||||
|
mov r1,-(sp)
|
||||||
|
mov r0,-(sp)
|
||||||
|
mov $fmt,-(sp)
|
||||||
|
jsr pc,_printf
|
||||||
|
add $010,sp
|
||||||
|
jsr pc,_printf
|
||||||
|
jmp retu~
|
||||||
|
1: mov $name,r0
|
||||||
|
br 2b
|
||||||
|
|
||||||
|
.data
|
||||||
|
fmt: <"%s", sp = %d, line %d: \0>
|
||||||
|
name: <_unknown file_\0>
|
62
mach/pdp/libem/printf.s
Normal file
62
mach/pdp/libem/printf.s
Normal file
|
@ -0,0 +1,62 @@
|
||||||
|
.text
|
||||||
|
.globl _printf
|
||||||
|
|
||||||
|
write = 4
|
||||||
|
|
||||||
|
_printf:
|
||||||
|
mov r2,-(sp)
|
||||||
|
mov r3,-(sp)
|
||||||
|
mov r4,-(sp)
|
||||||
|
mov sp,r3
|
||||||
|
mov $buff,r4
|
||||||
|
add $010,r3
|
||||||
|
mov (r3)+,r2
|
||||||
|
prloop:
|
||||||
|
movb (r2)+,r0
|
||||||
|
beq ready
|
||||||
|
cmpb r0,$045
|
||||||
|
bne 1f
|
||||||
|
movb (r2)+,r0
|
||||||
|
cmpb r0,$0144
|
||||||
|
beq 2f
|
||||||
|
cmpb r0,$0163
|
||||||
|
beq 3f
|
||||||
|
1: movb r0,(r4)+
|
||||||
|
br prloop
|
||||||
|
2: mov (r3)+,r1
|
||||||
|
bge 4f
|
||||||
|
movb $055,(r4)+
|
||||||
|
neg r1
|
||||||
|
4: jsr pc,printn
|
||||||
|
br prloop
|
||||||
|
printn:
|
||||||
|
clr r0
|
||||||
|
div $010,r0
|
||||||
|
beq 5f
|
||||||
|
mov r1,-(sp)
|
||||||
|
mov r0,r1
|
||||||
|
jsr pc,printn
|
||||||
|
mov (sp)+,r1
|
||||||
|
5: add $060,r1
|
||||||
|
movb r1,(r4)+
|
||||||
|
rts pc
|
||||||
|
3: mov (r3)+,r1
|
||||||
|
7: movb (r1)+,r0
|
||||||
|
bne 6f
|
||||||
|
br prloop
|
||||||
|
6: movb r0,(r4)+
|
||||||
|
br 7b
|
||||||
|
ready:
|
||||||
|
movb r0,(r4)+
|
||||||
|
sub $buff,r4
|
||||||
|
mov $01,r0
|
||||||
|
mov $buff,9f
|
||||||
|
mov r4,9f+2
|
||||||
|
sys write
|
||||||
|
9: 0; 0
|
||||||
|
mov (sp)+,r4
|
||||||
|
mov (sp)+,r3
|
||||||
|
mov (sp)+,r2
|
||||||
|
rts pc
|
||||||
|
.data
|
||||||
|
buff: .=.+256.
|
15
mach/pdp/libem/rck.s
Normal file
15
mach/pdp/libem/rck.s
Normal file
|
@ -0,0 +1,15 @@
|
||||||
|
.text
|
||||||
|
.globl rck~
|
||||||
|
.globl trp~
|
||||||
|
|
||||||
|
ERANGE = 1
|
||||||
|
|
||||||
|
rck~:
|
||||||
|
mov (sp)+,r1
|
||||||
|
cmp (sp),(r0)
|
||||||
|
blt 1f
|
||||||
|
cmp (sp),02(r0)
|
||||||
|
ble 2f
|
||||||
|
1: mov $ERANGE,-(sp)
|
||||||
|
jsr pc,trp~
|
||||||
|
2: jmp (r1)
|
31
mach/pdp/libem/ret.s
Normal file
31
mach/pdp/libem/ret.s
Normal file
|
@ -0,0 +1,31 @@
|
||||||
|
.text
|
||||||
|
.globl ret~,lfr~,retar
|
||||||
|
.globl save1~
|
||||||
|
.globl unknown~
|
||||||
|
|
||||||
|
/ Size in r0
|
||||||
|
ret~:
|
||||||
|
mov r0,r1
|
||||||
|
beq 1f
|
||||||
|
asr r1
|
||||||
|
add $retar,r0
|
||||||
|
cmp r0,$retend
|
||||||
|
bhi 9f
|
||||||
|
3: mov (sp)+,-(r0)
|
||||||
|
sob r1,3b
|
||||||
|
1: mov r5,sp
|
||||||
|
mov (sp)+,r5
|
||||||
|
rts pc
|
||||||
|
9: jmp unknown~
|
||||||
|
lfr~:
|
||||||
|
mov (sp)+,save1~
|
||||||
|
asr r0
|
||||||
|
beq 4f
|
||||||
|
mov $retar,r1
|
||||||
|
5: mov (r1)+,-(sp)
|
||||||
|
sob r0,5b
|
||||||
|
4: jmp *save1~
|
||||||
|
|
||||||
|
.data
|
||||||
|
retar: .=.+16.
|
||||||
|
retend:
|
19
mach/pdp/libem/rmi.s
Normal file
19
mach/pdp/libem/rmi.s
Normal file
|
@ -0,0 +1,19 @@
|
||||||
|
.text
|
||||||
|
.globl rmi~
|
||||||
|
.globl save1~,unknown~,rmi4~
|
||||||
|
|
||||||
|
rmi~:
|
||||||
|
mov (sp)+,save1~
|
||||||
|
cmp r0,$04
|
||||||
|
bgt 1f
|
||||||
|
beq 2f
|
||||||
|
mov 02(sp),r1
|
||||||
|
sxt r0
|
||||||
|
div (sp)+,r0
|
||||||
|
mov r1,(sp)
|
||||||
|
br 3f
|
||||||
|
2: jsr pc,rmi4~
|
||||||
|
mov r1,-(sp)
|
||||||
|
mov r0,-(sp)
|
||||||
|
3: jmp *save1~
|
||||||
|
1: jmp unknown~
|
75
mach/pdp/libem/rmi4.s
Normal file
75
mach/pdp/libem/rmi4.s
Normal file
|
@ -0,0 +1,75 @@
|
||||||
|
.text
|
||||||
|
.globl rmi4~
|
||||||
|
.globl save~,retu~
|
||||||
|
|
||||||
|
rmi4~:
|
||||||
|
jsr pc,save~
|
||||||
|
mov 02(sp),r3
|
||||||
|
sxt r4
|
||||||
|
bpl 1f
|
||||||
|
neg r3
|
||||||
|
1: cmp r4,(sp)
|
||||||
|
bne hardrmi4
|
||||||
|
mov 06(sp),r2
|
||||||
|
mov 04(sp),r1
|
||||||
|
mov r1,r4
|
||||||
|
bge 2f
|
||||||
|
neg r1
|
||||||
|
neg r2
|
||||||
|
sbc r1
|
||||||
|
2: mov r4,-(sp)
|
||||||
|
clr r0
|
||||||
|
div r3,r0
|
||||||
|
mov r1,r0
|
||||||
|
mov r1,r4
|
||||||
|
mov r2,r1
|
||||||
|
div r3,r0
|
||||||
|
bvc 3f
|
||||||
|
mov r2,r1
|
||||||
|
mov r4,r0
|
||||||
|
sub r3,r0
|
||||||
|
div r3,r0
|
||||||
|
tst r1
|
||||||
|
beq 3f
|
||||||
|
add r3,r1
|
||||||
|
3: tst (sp)+
|
||||||
|
bpl 4f
|
||||||
|
neg r1
|
||||||
|
4: sxt r0
|
||||||
|
br 9f
|
||||||
|
hardrmi4:
|
||||||
|
mov 06(sp),r2
|
||||||
|
mov 04(sp),r1
|
||||||
|
bpl 5f
|
||||||
|
neg r1
|
||||||
|
neg r2
|
||||||
|
sbc r1
|
||||||
|
5: clr r0
|
||||||
|
mov (sp),r3
|
||||||
|
bge 6f
|
||||||
|
neg r3
|
||||||
|
neg 02(sp)
|
||||||
|
sbc r3
|
||||||
|
6: mov $16.,r4
|
||||||
|
1: clc
|
||||||
|
rol r2
|
||||||
|
rol r1
|
||||||
|
rol r0
|
||||||
|
cmp r3,r0
|
||||||
|
bhi 7f
|
||||||
|
bcs 8f
|
||||||
|
cmp 02(sp),r1
|
||||||
|
blos 8f
|
||||||
|
7: sob r4,1b
|
||||||
|
br 2f
|
||||||
|
8: sub 02(sp),r1
|
||||||
|
sbc r0
|
||||||
|
sub r3,r0
|
||||||
|
sob r4,1b
|
||||||
|
2: tst 04(sp)
|
||||||
|
bge 9f
|
||||||
|
neg r0
|
||||||
|
neg r1
|
||||||
|
sbc r0
|
||||||
|
9: add $010,sp
|
||||||
|
jmp retu~
|
19
mach/pdp/libem/rmu.s
Normal file
19
mach/pdp/libem/rmu.s
Normal file
|
@ -0,0 +1,19 @@
|
||||||
|
.text
|
||||||
|
.globl rmu~
|
||||||
|
.globl save1~,rmu2~,rmu4~,unknown~
|
||||||
|
|
||||||
|
rmu~:
|
||||||
|
mov (sp)+,save1~
|
||||||
|
cmp r0,$04
|
||||||
|
bgt 1f
|
||||||
|
beq 2f
|
||||||
|
cmp r0,$02
|
||||||
|
bne 1f
|
||||||
|
jsr pc,rmu2~
|
||||||
|
mov r1,-(sp)
|
||||||
|
jmp *save1~
|
||||||
|
2: jsr pc,rmu4~
|
||||||
|
mov r1,-(sp)
|
||||||
|
mov r0,-(sp)
|
||||||
|
jmp *save1~
|
||||||
|
1: jmp unknown~
|
16
mach/pdp/libem/rmu2.s
Normal file
16
mach/pdp/libem/rmu2.s
Normal file
|
@ -0,0 +1,16 @@
|
||||||
|
.text
|
||||||
|
.globl rmu2~
|
||||||
|
|
||||||
|
rmu2~:
|
||||||
|
mov 04(sp),r1
|
||||||
|
tst 02(sp)
|
||||||
|
blt 1f
|
||||||
|
clr r0
|
||||||
|
div 02(sp),r0
|
||||||
|
2: mov (sp)+,r0
|
||||||
|
add $04,sp
|
||||||
|
jmp (r0)
|
||||||
|
1: cmp 02(sp),r1
|
||||||
|
bhi 2b
|
||||||
|
sub 02(sp),r1
|
||||||
|
br 2b
|
52
mach/pdp/libem/rmu4.s
Normal file
52
mach/pdp/libem/rmu4.s
Normal file
|
@ -0,0 +1,52 @@
|
||||||
|
.text
|
||||||
|
.globl rmu4~
|
||||||
|
.globl save~,retu~
|
||||||
|
|
||||||
|
rmu4~:
|
||||||
|
jsr pc,save~
|
||||||
|
clr r0
|
||||||
|
tst (sp)
|
||||||
|
bne hardrmu4
|
||||||
|
tst 02(sp)
|
||||||
|
blt hardrmu4
|
||||||
|
mov 06(sp),r2
|
||||||
|
mov 04(sp),r1
|
||||||
|
mov 02(sp),r3
|
||||||
|
div r3,r0
|
||||||
|
mov r1,r0
|
||||||
|
mov r1,r4
|
||||||
|
mov r2,r1
|
||||||
|
div r3,r0
|
||||||
|
bvc 1f
|
||||||
|
mov r2,r1
|
||||||
|
mov r4,r0
|
||||||
|
sub r3,r0
|
||||||
|
div r3,r0
|
||||||
|
tst r1
|
||||||
|
beq 1f
|
||||||
|
add r3,r1
|
||||||
|
1: clr r0
|
||||||
|
br 2f
|
||||||
|
hardrmu4:
|
||||||
|
mov 06(sp),r2
|
||||||
|
mov 04(sp),r1
|
||||||
|
mov (sp),r3
|
||||||
|
mov $17.,r4
|
||||||
|
br 3f
|
||||||
|
6: clc
|
||||||
|
rol r2
|
||||||
|
rol r1
|
||||||
|
rol r0
|
||||||
|
3: cmp r3,r0
|
||||||
|
bhi 4f
|
||||||
|
bcs 5f
|
||||||
|
cmp 02(sp),r1
|
||||||
|
blos 5f
|
||||||
|
4: sob r4,6b
|
||||||
|
br 2f
|
||||||
|
5: sub 02(sp),r1
|
||||||
|
sbc r0
|
||||||
|
sub r3,r0
|
||||||
|
sob r4,6b
|
||||||
|
2: add $010,sp
|
||||||
|
jmp retu~
|
19
mach/pdp/libem/rol.s
Normal file
19
mach/pdp/libem/rol.s
Normal file
|
@ -0,0 +1,19 @@
|
||||||
|
.text
|
||||||
|
.globl rol~
|
||||||
|
.globl save~,retu~
|
||||||
|
|
||||||
|
rol~:
|
||||||
|
jsr pc,save~
|
||||||
|
mov (sp)+,r3
|
||||||
|
3: add r0,sp
|
||||||
|
mov r0,r1
|
||||||
|
asr r1
|
||||||
|
clc
|
||||||
|
1: rol -(sp)
|
||||||
|
sob r1,1b
|
||||||
|
bcc 2f
|
||||||
|
mov sp,r1
|
||||||
|
add r0,r1
|
||||||
|
bis $01,-(r1)
|
||||||
|
2: sob r3,3b
|
||||||
|
jmp retu~
|
18
mach/pdp/libem/ror.s
Normal file
18
mach/pdp/libem/ror.s
Normal file
|
@ -0,0 +1,18 @@
|
||||||
|
.text
|
||||||
|
.globl ror~
|
||||||
|
.globl save~,retu~
|
||||||
|
|
||||||
|
ror~:
|
||||||
|
asr r0
|
||||||
|
jsr pc,save~
|
||||||
|
mov (sp)+,r3
|
||||||
|
3: mov sp,r1
|
||||||
|
mov r0,-(sp)
|
||||||
|
clc
|
||||||
|
1: ror (r1)+
|
||||||
|
sob r0,1b
|
||||||
|
bcc 2f
|
||||||
|
bis $0100000,02(sp)
|
||||||
|
2: mov (sp)+,r0
|
||||||
|
sob r3,3b
|
||||||
|
jmp retu~
|
17
mach/pdp/libem/sar.s
Normal file
17
mach/pdp/libem/sar.s
Normal file
|
@ -0,0 +1,17 @@
|
||||||
|
.text
|
||||||
|
.globl sar~
|
||||||
|
.globl save1~
|
||||||
|
|
||||||
|
sar~:
|
||||||
|
mov (sp)+,save1~
|
||||||
|
sub (r0),r1
|
||||||
|
mov 04(r0),r0
|
||||||
|
mul r0,r1
|
||||||
|
add (sp)+,r1
|
||||||
|
asr r0
|
||||||
|
beq 1f
|
||||||
|
2: mov (sp)+,(r1)+
|
||||||
|
sob r0,2b
|
||||||
|
jmp *save1~
|
||||||
|
1: movb (sp)+,(r1)
|
||||||
|
jmp *save1~
|
25
mach/pdp/libem/save.s
Normal file
25
mach/pdp/libem/save.s
Normal file
|
@ -0,0 +1,25 @@
|
||||||
|
.text
|
||||||
|
.globl save~,retu~,save1~
|
||||||
|
|
||||||
|
save~:
|
||||||
|
mov r5,savearea
|
||||||
|
mov $[savearea+2],r5
|
||||||
|
mov r4,(r5)+
|
||||||
|
mov r3,(r5)+
|
||||||
|
mov r2,(r5)+
|
||||||
|
mov (sp)+,r2
|
||||||
|
mov (sp)+,(r5)+
|
||||||
|
jmp (r2)
|
||||||
|
retu~:
|
||||||
|
mov -(r5),-(sp)
|
||||||
|
mov -(r5),r2
|
||||||
|
mov -(r5),r3
|
||||||
|
mov -(r5),r4
|
||||||
|
mov -(r5),r5
|
||||||
|
rts pc
|
||||||
|
|
||||||
|
.data
|
||||||
|
.even
|
||||||
|
savearea:
|
||||||
|
.=.+12.
|
||||||
|
save1~: 0
|
13
mach/pdp/libem/sbf.s
Normal file
13
mach/pdp/libem/sbf.s
Normal file
|
@ -0,0 +1,13 @@
|
||||||
|
.text
|
||||||
|
.globl sbf~
|
||||||
|
.globl setfloat~
|
||||||
|
|
||||||
|
sbf~:
|
||||||
|
mov (sp)+,r1
|
||||||
|
jsr pc,setfloat~
|
||||||
|
movf (sp)+,r0
|
||||||
|
subf (sp)+,r0
|
||||||
|
negf r0
|
||||||
|
movf r0,-(sp)
|
||||||
|
setl
|
||||||
|
jmp (r1)
|
18
mach/pdp/libem/sbi.s
Normal file
18
mach/pdp/libem/sbi.s
Normal file
|
@ -0,0 +1,18 @@
|
||||||
|
.text
|
||||||
|
.globl sbi~
|
||||||
|
.globl unknown~
|
||||||
|
|
||||||
|
sbi~:
|
||||||
|
mov (sp)+,r1
|
||||||
|
cmp r0,$04
|
||||||
|
bgt 1f
|
||||||
|
cmp r0,$02
|
||||||
|
bgt 2f
|
||||||
|
sub (sp)+,(sp)
|
||||||
|
jmp (r1)
|
||||||
|
2: sub (sp)+,02(sp)
|
||||||
|
sub (sp)+,02(sp)
|
||||||
|
sbc (sp)
|
||||||
|
jmp (r1)
|
||||||
|
1:
|
||||||
|
jmp unknown~
|
24
mach/pdp/libem/set.s
Normal file
24
mach/pdp/libem/set.s
Normal file
|
@ -0,0 +1,24 @@
|
||||||
|
.text
|
||||||
|
.globl set~
|
||||||
|
.globl save~,retu~,trp~
|
||||||
|
|
||||||
|
ESET = 2
|
||||||
|
|
||||||
|
set~:
|
||||||
|
jsr pc,save~
|
||||||
|
mov r0,r2
|
||||||
|
asr r0
|
||||||
|
1: clr -(sp)
|
||||||
|
sob r0,1b
|
||||||
|
div $8.,r0
|
||||||
|
cmp r0,r2
|
||||||
|
blo 2f
|
||||||
|
mov $ESET,-(sp)
|
||||||
|
jsr pc,trp~
|
||||||
|
jmp retu~
|
||||||
|
2: add sp,r0
|
||||||
|
bisb bits(r1),(r0)
|
||||||
|
jmp retu~
|
||||||
|
|
||||||
|
.data
|
||||||
|
bits: .byte 1,2,4,10,20,40,100,200
|
21
mach/pdp/libem/setfl.s
Normal file
21
mach/pdp/libem/setfl.s
Normal file
|
@ -0,0 +1,21 @@
|
||||||
|
.text
|
||||||
|
.globl setfloat~,setint~
|
||||||
|
.globl unknown~
|
||||||
|
|
||||||
|
setfloat~:
|
||||||
|
cmp r0,$8.
|
||||||
|
bne 1f
|
||||||
|
rts pc
|
||||||
|
1: cmp r0,$04
|
||||||
|
bne 3f
|
||||||
|
setf
|
||||||
|
2: rts pc
|
||||||
|
3: jmp unknown~
|
||||||
|
setint~:
|
||||||
|
cmp r0,$04
|
||||||
|
bne 4f
|
||||||
|
setl
|
||||||
|
rts pc
|
||||||
|
4: cmp r0,$02
|
||||||
|
bne 3b
|
||||||
|
5: rts pc
|
92
mach/pdp/libem/sigtrp.s
Normal file
92
mach/pdp/libem/sigtrp.s
Normal file
|
@ -0,0 +1,92 @@
|
||||||
|
.text
|
||||||
|
.globl sigtrp~
|
||||||
|
.globl trp~,save~,retu~
|
||||||
|
|
||||||
|
indir = 0
|
||||||
|
signal = 48.
|
||||||
|
|
||||||
|
rti = 2
|
||||||
|
|
||||||
|
sig1: mov sig.trp+0.,-(sp)
|
||||||
|
br 1f
|
||||||
|
sig2: mov sig.trp+2.,-(sp)
|
||||||
|
br 1f
|
||||||
|
sig3: mov sig.trp+4.,-(sp)
|
||||||
|
br 1f
|
||||||
|
sig4: mov sig.trp+6.,-(sp)
|
||||||
|
br 1f
|
||||||
|
sig5: mov sig.trp+8.,-(sp)
|
||||||
|
br 1f
|
||||||
|
sig6: mov sig.trp+10.,-(sp)
|
||||||
|
br 1f
|
||||||
|
sig7: mov sig.trp+12.,-(sp)
|
||||||
|
br 1f
|
||||||
|
sig10: mov sig.trp+18.,-(sp)
|
||||||
|
br 1f
|
||||||
|
sig11: mov sig.trp+20.,-(sp)
|
||||||
|
br 1f
|
||||||
|
sig12: mov sig.trp+22.,-(sp)
|
||||||
|
br 1f
|
||||||
|
sig13: mov sig.trp+24.,-(sp)
|
||||||
|
br 1f
|
||||||
|
sig14: mov sig.trp+026.,-(sp)
|
||||||
|
br 1f
|
||||||
|
sig15: mov sig.trp+028.,-(sp)
|
||||||
|
br 1f
|
||||||
|
sig16: mov sig.trp+030.,-(sp)
|
||||||
|
br 1f
|
||||||
|
1:
|
||||||
|
jsr pc,trp~
|
||||||
|
rti
|
||||||
|
|
||||||
|
sigtrp~:
|
||||||
|
jsr pc,save~
|
||||||
|
tst (sp)+
|
||||||
|
mov (sp)+,r1
|
||||||
|
mov (sp)+,r0
|
||||||
|
ble sig.bad
|
||||||
|
cmp r0,$16.
|
||||||
|
bhi sig.bad
|
||||||
|
mov r0,call+02
|
||||||
|
asl r0
|
||||||
|
mov sig.trp-2(r0),r3
|
||||||
|
cmp r1,$256.
|
||||||
|
bhis 1f
|
||||||
|
mov sig.adr-2(r0),r2
|
||||||
|
bne 2f
|
||||||
|
sig.bad:
|
||||||
|
mov $-1,r0
|
||||||
|
sigbad:
|
||||||
|
mov r0,-(sp)
|
||||||
|
mov r0,-(sp)
|
||||||
|
jmp retu~
|
||||||
|
1: cmp r1,$-3
|
||||||
|
blo sig.bad
|
||||||
|
mov r1,r2
|
||||||
|
inc r2
|
||||||
|
inc r2
|
||||||
|
2: mov r1,sig.trp-2(r0)
|
||||||
|
mov r2,call+04
|
||||||
|
sys indir ; call
|
||||||
|
bcs sigbad
|
||||||
|
asr r0
|
||||||
|
bcc 1f
|
||||||
|
mov $-3,-(sp)
|
||||||
|
clr -(sp)
|
||||||
|
jmp retu~
|
||||||
|
1: mov r3,-(sp)
|
||||||
|
clr -(sp)
|
||||||
|
jmp retu~
|
||||||
|
|
||||||
|
.data
|
||||||
|
call: sys signal; 0; 0
|
||||||
|
sig.trp:
|
||||||
|
-2; -2; -2; -2
|
||||||
|
-2; -2; -2; -2
|
||||||
|
-2; -2; -2; -2
|
||||||
|
-2; -2; -2; -2
|
||||||
|
sig.adr:
|
||||||
|
sig1; sig2; sig3; sig4
|
||||||
|
sig5; sig6; sig7; 0
|
||||||
|
0; sig10; sig11; sig12
|
||||||
|
sig13; sig14; sig15; sig16
|
28
mach/pdp/libem/sim.s
Normal file
28
mach/pdp/libem/sim.s
Normal file
|
@ -0,0 +1,28 @@
|
||||||
|
.text
|
||||||
|
.globl sim~
|
||||||
|
.globl trpim~,save1~
|
||||||
|
|
||||||
|
.float = 1
|
||||||
|
|
||||||
|
sim~:
|
||||||
|
mov (sp)+,save1~
|
||||||
|
mov (sp)+,r0
|
||||||
|
mov r0,trpim~
|
||||||
|
.if .float
|
||||||
|
stfps r1
|
||||||
|
bis $07400,r1
|
||||||
|
bit $020,r0
|
||||||
|
beq 0f
|
||||||
|
bic $01000,r1
|
||||||
|
0: bit $040,r0
|
||||||
|
beq 0f
|
||||||
|
bic $02000,r1
|
||||||
|
0: bit $01000,r0
|
||||||
|
beq 0f
|
||||||
|
bic $04000,r1
|
||||||
|
0: bit $02000,r0
|
||||||
|
beq 0f
|
||||||
|
bic $0400,r1
|
||||||
|
0: ldfps r1
|
||||||
|
.endif
|
||||||
|
jmp *save1~
|
22
mach/pdp/libem/sli.s
Normal file
22
mach/pdp/libem/sli.s
Normal file
|
@ -0,0 +1,22 @@
|
||||||
|
.text
|
||||||
|
.globl sli~
|
||||||
|
.globl save1~,unknown~
|
||||||
|
|
||||||
|
sli~:
|
||||||
|
mov (sp)+,save1~
|
||||||
|
cmp r0,$02
|
||||||
|
bgt 1f
|
||||||
|
mov (sp)+,r1
|
||||||
|
mov (sp)+,r0
|
||||||
|
ash r1,r0
|
||||||
|
mov r0,-(sp)
|
||||||
|
jmp *save1~
|
||||||
|
1: cmp r0,$04
|
||||||
|
bgt 2f
|
||||||
|
mov 02(sp),r0
|
||||||
|
mov 04(sp),r1
|
||||||
|
ashc (sp)+,r0
|
||||||
|
mov r0,(sp)
|
||||||
|
mov r1,02(sp)
|
||||||
|
jmp *save1~
|
||||||
|
2: jmp unknown~
|
25
mach/pdp/libem/sri.s
Normal file
25
mach/pdp/libem/sri.s
Normal file
|
@ -0,0 +1,25 @@
|
||||||
|
.text
|
||||||
|
.globl sri~
|
||||||
|
.globl unknown~,save1~
|
||||||
|
|
||||||
|
/ Size in r0
|
||||||
|
sri~:
|
||||||
|
mov (sp)+,save1~
|
||||||
|
cmp r0,$02
|
||||||
|
bgt 1f
|
||||||
|
mov (sp)+,r1
|
||||||
|
mov (sp)+,r0
|
||||||
|
neg r1
|
||||||
|
ash r1,r0
|
||||||
|
mov r0,-(sp)
|
||||||
|
jmp *save1~
|
||||||
|
1: cmp r0,$04
|
||||||
|
bgt 2f
|
||||||
|
mov 02(sp),r0
|
||||||
|
mov 04(sp),r1
|
||||||
|
neg (sp)
|
||||||
|
ashc (sp)+,r0
|
||||||
|
mov r0,(sp)
|
||||||
|
mov r1,02(sp)
|
||||||
|
jmp *save1~
|
||||||
|
2: jmp unknown~
|
30
mach/pdp/libem/sru.s
Normal file
30
mach/pdp/libem/sru.s
Normal file
|
@ -0,0 +1,30 @@
|
||||||
|
.text
|
||||||
|
.globl sru~,slu~
|
||||||
|
.globl save1~,unknown~
|
||||||
|
|
||||||
|
sru~:
|
||||||
|
neg 2(sp)
|
||||||
|
slu~:
|
||||||
|
mov (sp)+,save1~
|
||||||
|
cmp r0,$02
|
||||||
|
bgt 1f
|
||||||
|
mov 2(sp),r1
|
||||||
|
clr r0
|
||||||
|
ashc (sp)+,r0
|
||||||
|
2: mov r1,-(sp)
|
||||||
|
jmp *save1~
|
||||||
|
1: cmp r0,$04
|
||||||
|
bgt 3f
|
||||||
|
mov 02(sp),r0
|
||||||
|
mov 04(sp),r1
|
||||||
|
tst (sp)
|
||||||
|
beq 4f
|
||||||
|
ashc $-1,r0
|
||||||
|
bic $0100000,r0
|
||||||
|
inc (sp)
|
||||||
|
beq 4f
|
||||||
|
ashc (sp)+,r0
|
||||||
|
4: mov r0,(sp)
|
||||||
|
mov r1,02(sp)
|
||||||
|
jmp *save1~
|
||||||
|
3: jmp unknown~
|
15
mach/pdp/libem/sto2.s
Normal file
15
mach/pdp/libem/sto2.s
Normal file
|
@ -0,0 +1,15 @@
|
||||||
|
.text
|
||||||
|
.globl sto2~
|
||||||
|
.globl save1~
|
||||||
|
|
||||||
|
sto2~:
|
||||||
|
mov (sp)+,save1~
|
||||||
|
cmp r0,$01
|
||||||
|
bne 1f
|
||||||
|
movb (sp),(r1)
|
||||||
|
tst (sp)+
|
||||||
|
jmp *save1~
|
||||||
|
1: asr r0
|
||||||
|
2: mov (sp)+,(r1)+
|
||||||
|
sob r0,2b
|
||||||
|
jmp *save1~
|
24
mach/pdp/libem/strhp.s
Normal file
24
mach/pdp/libem/strhp.s
Normal file
|
@ -0,0 +1,24 @@
|
||||||
|
.text
|
||||||
|
.globl strhp~
|
||||||
|
.globl fat~,reghp~,_end
|
||||||
|
indir = 0
|
||||||
|
|
||||||
|
break = 17.
|
||||||
|
EHEAP = 17.
|
||||||
|
|
||||||
|
strhp~:
|
||||||
|
mov (sp)+,r0
|
||||||
|
mov (sp)+,r1
|
||||||
|
mov r1,reghp~
|
||||||
|
cmp r1,2f+2
|
||||||
|
blos 1f
|
||||||
|
add $01777,r1
|
||||||
|
bic $01777,r1
|
||||||
|
mov r1,2f+2
|
||||||
|
sys indir ; 2f
|
||||||
|
bcs 3f
|
||||||
|
1: jmp (r0)
|
||||||
|
3: mov $EHEAP,-(sp)
|
||||||
|
jmp fat~
|
||||||
|
.data
|
||||||
|
2: sys break; _end
|
60
mach/pdp/libem/trp.s
Normal file
60
mach/pdp/libem/trp.s
Normal file
|
@ -0,0 +1,60 @@
|
||||||
|
.text
|
||||||
|
.globl trp~,fat~
|
||||||
|
.globl trppc~,trpim~
|
||||||
|
write=4.
|
||||||
|
|
||||||
|
fat~:
|
||||||
|
jsr pc,trp~
|
||||||
|
4
|
||||||
|
|
||||||
|
trp~:
|
||||||
|
mov r0,-(sp)
|
||||||
|
mov 04(sp),r0
|
||||||
|
mov 02(sp),04(sp)
|
||||||
|
mov (sp),02(sp)
|
||||||
|
mov r1,(sp)
|
||||||
|
cmp r0,$16.
|
||||||
|
jhis 0f
|
||||||
|
mov $01,r1
|
||||||
|
ashc r0,r1
|
||||||
|
bit r1,trpim~
|
||||||
|
bne 8f
|
||||||
|
0: mov r2,-(sp)
|
||||||
|
mov r3,-(sp)
|
||||||
|
mov r4,-(sp)
|
||||||
|
movf r0,-(sp)
|
||||||
|
movf r1,-(sp)
|
||||||
|
movf r2,-(sp)
|
||||||
|
movf r3,-(sp)
|
||||||
|
stfps -(sp)
|
||||||
|
mov r0,-(sp)
|
||||||
|
mov trppc~,r0
|
||||||
|
beq 9f
|
||||||
|
clr trppc~
|
||||||
|
jsr pc,(r0)
|
||||||
|
tst (sp)+
|
||||||
|
ldfps (sp)+
|
||||||
|
movf (sp)+,r3
|
||||||
|
movf (sp)+,r2
|
||||||
|
movf (sp)+,r1
|
||||||
|
movf (sp)+,r0
|
||||||
|
mov (sp)+,r4
|
||||||
|
mov (sp)+,r3
|
||||||
|
mov (sp)+,r2
|
||||||
|
8: mov (sp)+,r1
|
||||||
|
mov (sp)+,r0
|
||||||
|
rts pc
|
||||||
|
9: mov (sp)+,r0
|
||||||
|
mov $buf+11,r1
|
||||||
|
mov $4,r2
|
||||||
|
1: mov r0,r3
|
||||||
|
bic $177770,r3
|
||||||
|
bisb r3,-(r1)
|
||||||
|
ash $-3,r0
|
||||||
|
sob r2,1b
|
||||||
|
mov $2,r0
|
||||||
|
sys write;buf;11.
|
||||||
|
4
|
||||||
|
|
||||||
|
.data
|
||||||
|
buf: <err 00000\n>
|
9
mach/pdp/libem/unknown.s
Normal file
9
mach/pdp/libem/unknown.s
Normal file
|
@ -0,0 +1,9 @@
|
||||||
|
.text
|
||||||
|
.globl unknown~
|
||||||
|
.globl fat~
|
||||||
|
|
||||||
|
EILLSIZ = 19.
|
||||||
|
|
||||||
|
unknown~:
|
||||||
|
mov $EILLSIZ,-(sp)
|
||||||
|
jmp fat~
|
13
mach/pdp/libem/xor.s
Normal file
13
mach/pdp/libem/xor.s
Normal file
|
@ -0,0 +1,13 @@
|
||||||
|
.globl xor~
|
||||||
|
.globl save~,retu~
|
||||||
|
|
||||||
|
xor~:
|
||||||
|
jsr pc,save~
|
||||||
|
mov sp,r1
|
||||||
|
add r0,r1
|
||||||
|
asr r0
|
||||||
|
1:
|
||||||
|
mov (sp)+,r2
|
||||||
|
xor r2,(r1)+
|
||||||
|
sob r0,1b
|
||||||
|
jmp retu~
|
Loading…
Reference in a new issue