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
+50
View File
@@ -0,0 +1,50 @@
/
/
.globl main
.globl temp
.globl rerr
.globl fptrap
.comm erret,2
.comm argp,2
ldfps = 170100^tst
sys signal; 4; fptrap
ldfps $5400
mov sp,argp
mov $main,r4
jmp *(r4)+
rerr:
mov (r5)+,r1
tst erret
beq 1f
jsr pc,erret
1:
mov $temp,r2
jsr r5,1f
movb $'\n,(r2)+
sub $mesg,r2
mov r2,0f
mov $2,r0
sys write; mesg; 0:..
sys exit
1:
clr r0
div $10.,r0
mov r1,-(sp)
mov r0,r1
beq 1f
jsr r5,1b
1:
mov (sp)+,r0
add $'0,r0
movb r0,(r2)+
rts r5
mesg:
<Runtime error >
temp: .=.+16.
+147
View File
@@ -0,0 +1,147 @@
/
/
/ r1 -- fortran runtime
.globl gas1
.globl gas2
.globl gas4
.globl gas8
.globl stop
.globl lval
.globl rval4
.globl rval8
.globl do1
.globl do12
.globl do14
.globl do2
.globl do22
.globl do24
.globl goto
.globl cgoto
.globl cagoto
.globl agoto
.globl rerr
gas8:
mov 8.(sp),r0
mov (sp)+,(r0)+
mov (sp)+,(r0)+
br 1f
gas1:
movb (sp)+,*(sp)+
jmp *(r4)+
gas2:
mov (sp)+,*(sp)+
jmp *(r4)+
gas4:
mov 4(sp),r0
1:
mov (sp)+,(r0)+
mov (sp)+,(r0)
tst (sp)+
jmp *(r4)+
stop:
sys exit
lval:
mov (r4)+,-(sp)
jmp *(r4)+
rval8:
mov (r4)+,r0
add $8.,r0
mov -(r0),-(sp)
mov -(r0),-(sp)
mov -(r0),-(sp)
mov -(r0),-(sp)
jmp *(r4)+
rval4:
mov (r4)+,r0
mov 2(r0),-(sp)
mov (r0),-(sp)
jmp *(r4)+
do22:
mov (sp)+,r1
br 1f
do12:
mov $1,r1
1:
mov (sp)+,r2
mov (sp)+,r0
add r1,(r0)
cmp (r0),r2
bgt goto
tst (r4)+
jmp *(r4)+
do24:
do2:
mov (sp)+,r2
mov (sp)+,r1
br 1f
do14:
do1:
clr r2
mov $1,r1
1:
mov 4(sp),r0
add r1,2(r0)
adc r2
add r2,(r0)
cmp (r0)+,(sp)+
bgt 1f
blt 2f
cmp (r0),(sp)
bhi 1f
2:
cmp (sp)+,(sp)+
tst (r4)+
jmp *(r4)+
1:
cmp (sp)+,(sp)+
goto:
mov (r4),r4
jmp *(r4)+
cgoto:
tst (sp)+
mov (sp)+,r0
asl r0
add r4,r0
1:
tst (r4)+
beq gotoe
cmp r0,r4
bne 1b
mov -(r0),r4
jmp *(r4)+
cagoto:
tst (sp)+
mov (sp)+,r0
1:
tst (r4)
beq gotoe
cmp r0,(r4)+
bne 1b
mov r0,r4
jmp *(r4)+
agoto:
tst (sp)+
mov (sp)+,r4
jmp *(r4)+
gotoe:
jsr r5,rerr; 14.
+143
View File
@@ -0,0 +1,143 @@
/
/
/ r2 -- comparison of 4-byte integers
.globl ilt4
.globl ile4
.globl ieq4
.globl ine4
.globl ige4
.globl igt4
.globl lan2
.globl lor2
.globl lnt2
.globl ieq2
.globl ile2
.globl igt2
.globl ige2
.globl leq2
.globl ine2
.globl ilt2
.globl lne2
.globl leq1
.globl lne1
ilt4:
jsr pc,compar
blt one
br zero
blo one
br zero
ile4:
jsr pc,compar
ble one
br zero
blos one
br zero
ieq4:
jsr pc,compar
beq one
br zero
beq one
br zero
ine4:
jsr pc,compar
bne one
br zero
bne one
br zero
ige4:
jsr pc,compar
bge one
br zero
bhis one
br zero
igt4:
jsr pc,compar
bgt one
br zero
bhi one
br zero
one:
mov $1,(sp)
jmp *(r4)+
zero:
clr (sp)
jmp *(r4)+
compar:
mov (sp)+,r0
mov (sp)+,r1
mov (sp)+,r2
cmp (sp)+,r1
beq 1f
jmp (r0)
1:
cmp (sp),r2
jmp 4(r0)
lor2:
bis (sp)+,(sp)
jmp *(r4)+
lan2:
tst (sp)+
bne 1f
clr (sp)
1:
jmp *(r4)+
lnt2:
tst (sp)
beq one
br zero
ieq2:
leq2:
cmp (sp)+,(sp)
beq one
br zero
ilt2: cmp (sp)+,(sp)
bgt one
br zero
ile2:
cmp (sp)+,(sp)
bge one
br zero
igt2:
cmp (sp)+,(sp)
blt one
br zero
ige2:
cmp (sp)+,(sp)
ble one
br zero
ine2:
lne2:
cmp (sp)+,(sp)
bne one
br zero
leq1:
cmpb (sp)+,(sp)
beq one
br zero
lne1:
cmpb (sp)+,(sp)
bne one
br zero
+50
View File
@@ -0,0 +1,50 @@
/
/
/ r3 -- comparisons
.globl lif2
.globl lif1
.globl rif4
.globl iif2
.globl iif4
.globl rif8
lif2:
lif1:
tst (sp)+
bne 1f
mov (r4),r4
jmp *(r4)+
1:
tst (r4)+
jmp *(r4)+
rif8:
setd
tstf (sp)+
cfcc
br 2f
iif4:
rif4:
mov (sp)+,r0
mov (sp)+,r1
tst r0
bne 2f
tst r1
cln
br 2f
iif2:
tst (sp)+
2:
bmi 1f
beq 2f
tst (r4)+
2:
tst (r4)+
1:
mov (r4),r4
jmp *(r4)+
+65
View File
@@ -0,0 +1,65 @@
/
/
/ r4 -- short integer arithmetic
.globl iad2
.globl isb2
.globl imp2
.globl idv2
.globl i2i4
.globl i1i4
.globl i4i2
.globl i4i1
.globl ing2
.globl rval2
.globl rval1
.globl l2l1
iad2:
add (sp)+,(sp)
jmp *(r4)+
isb2:
sub (sp)+,(sp)
jmp *(r4)+
imp2:
mov (sp)+,r1
mul (sp)+,r1
mov r1,-(sp)
jmp *(r4)+
idv2:
mov 2(sp),r1
sxt r0
div (sp)+,r0
mov r0,(sp)
jmp *(r4)+
i4i2:
i4i1:
tst (sp)+
jmp *(r4)+
i2i4:
i1i4:
tst (sp)
sxt -(sp)
jmp *(r4)+
ing2:
neg (sp)
jmp *(r4)+
rval2:
mov *(r4)+,-(sp)
jmp *(r4)+
rval1:
movb *(r4)+,r0
mov r0,-(sp)
l2l1:
jmp *(r4)+
+49
View File
@@ -0,0 +1,49 @@
/
/
/ r5 -- long integer arithmetic
.globl iad4
.globl isb4
.globl imp4
.globl idv4
.globl ing4
.globl rerr
iad4:
jsr pc,load
addf fr0,fr1
br store
isb4:
jsr pc,load
subf fr0,fr1
br store
imp4:
jsr pc,load
mulf fr0,fr1
br store
idv4:
jsr pc,load
divf fr0,fr1
store:
movfi fr1,-(sp)
jmp *(r4)+
load:
mov (sp)+,r0
setd
setl
movif (sp)+,fr0
movif (sp)+,fr1
jmp (r0)
ing4:
neg (sp)
neg 2(sp)
sbc (sp)
jmp *(r4)+
+137
View File
@@ -0,0 +1,137 @@
/
/
/ r6 -- real arithmetic
.globl rad4
.globl rad8
.globl rsb4
.globl rsb8
.globl rmp4
.globl rmp8
.globl rdv4
.globl rdv8
.globl rng4
.globl rng8
.globl r4r8
.globl r8r4
.globl i4r4
.globl i2r4
.globl r4i4
.globl r8i2
.globl i2r8
.globl r4i2
.globl i4r8
.globl r8i4
.globl rerr
rad8:
setd
br 1f
rad4:
setf
1:
movf (sp)+,fr0
addf (sp)+,fr0
br store
rsb8:
setd
br 1f
rsb4:
setf
1:
movf (sp)+,fr0
negf fr0
addf (sp)+,fr0
br store
rmp8:
setd
br 1f
rmp4:
setf
1:
movf (sp)+,fr0
mulf (sp)+,fr0
br store
rdv8:
setd
br 1f
rdv4:
setf
1:
movf (sp)+,fr1
movf (sp)+,fr0
divf fr1,fr0
store:
movf fr0,-(sp)
jmp *(r4)+
rng8:
setd
br 1f
rng4:
setf
1:
negf (sp)
jmp *(r4)+
r8r4:
setd
br 1f
r4r8:
setf
1:
movf (sp)+,fr0
movfo fr0,-(sp)
jmp *(r4)+
i2r8:
seti
br 1f
i4r8:
setl
1:
setd
br 2f
i2r4:
seti
br 1f
i4r4:
setl
1:
setf
2:
movif (sp)+,fr0
movf fr0,-(sp)
jmp *(r4)+
r8i2:
seti
br 1f
r8i4:
setl
1:
setd
br 2f
r4i2:
seti
br 1f
r4i4:
setl
1:
setf
2:
movf (sp)+,fr0
movfi fr0,-(sp)
jmp *(r4)+
+124
View File
@@ -0,0 +1,124 @@
/
/
/ r7 -- fortran runtime
achk = 1 / 1 to check array bounds
.globl lvalp
.globl rval1p
.globl rval2p
.globl rval4p
.globl rval8p
.globl alval
.globl alvalp
.globl arval
.globl arvalp
.globl rerr
lvalp:
mov r3,r0
add (r4)+,r0
mov (r0)+,-(sp)
jmp *(r4)+
rval1p:
mov r3,r0
add (r4)+,r0
movb *(r0)+,-(sp)
jmp *(r4)+
rval2p:
mov r3,r0
add (r4)+,r0
mov *(r0)+,-(sp)
jmp *(r4)+
rval4p:
mov r3,r0
add (r4)+,r0
mov (r0),r0
cmp (r0)+,(r0)+
mov -(r0),-(sp)
mov -(r0),-(sp)
jmp *(r4)+
rval8p:
setd
mov r3,r0
add (r4)+,r0
movf *(r0)+,fr0
movf fr0,-(sp)
jmp *(r4)+
alval:
jsr r5,getsub; 1
mov (r4)+,-(sp)
add r1,(sp)
jmp *(r4)+
arvalp:
jsr r5,getsub; 0
mov r3,r2
add (r4)+,r2
mov (r2),r2
br 1f
arval:
jsr r5,getsub; 1
mov (r4)+,r2
1:
add r2,r1
mov -(r0),r2
asr r2
bcc 1f
movb (r1),-(sp)
jmp *(r4)+
1:
add (r0),r1
1:
mov -(r1),-(sp)
sob r2,1b
jmp *(r4)+
getsub:
tst (sp)+
mov (r4)+,r0
mov (r0)+,r2
clr r1
tst (r0)+
1:
tst (sp)+
dec (sp)
add (sp)+,r1
mpy (r0)+,r1
sob r2,1b
tst (r5)+
beq 2f
mov r1,-(sp)
mov -2(r4),r0
mov (r0)+,r2
inc r2
mov $1,r1
1:
mpy (r0)+,r1
sob r2,1b
.if achk
cmp r1,(sp)
bhi 1f
jsr r5,rerr; 15.
.endif
1:
mov (sp)+,r1
2:
jmp (r5)
alvalp:
jsr r5,getsub; 0
mov r3,r0
add (r4)+,r0
mov (r0),-(sp)
add r1,(sp)
jmp *(r4)+
+32
View File
@@ -0,0 +1,32 @@
/
/
/ r8 - fortran runtime -- powers of integers
.globl ipi2
ipi2:
tst (sp)+
mov (sp)+,r0
bge 1f
clr (sp)
jmp *(r4)+
1:
mov (sp)+,r1
mov r3,-(sp)
mov $1,r3
1:
tst r0
beq 1f
asr r0
bcc 2f
mpy r1,r3
2:
mpy r1,r1
br 1b
1:
mov r3,r1
mov (sp)+,r3
mov r1,-(sp)
jmp *(r4)+
+61
View File
@@ -0,0 +1,61 @@
/
/
one = 40200
/ r9 -- fortran runtime -- real**integer
.globl ipi4
.globl rpi4
.globl rpi8
.globl rerr
ipi4:
setf
setl
movif 4(sp),fr0
movf fr0,4(sp)
jsr r5,1f
movfi fr1,-(sp)
jmp *(r4)+
rpi4:
setf
br 2f
rpi8:
setd
2:
jsr r5,1f
movf fr1,-(sp)
jmp *(r4)+
1:
cmp (sp)+,(sp)+ / jsr + msp of i4
mov (sp)+,r0
movf $one,fr1
movf (sp)+,fr0
tst r0
bgt 1f
cfcc
beq 9f
tst r0
beq 3f
divf fr0,fr1
movf fr1,fr0
neg r0
movf $one,fr1
1:
asr r0
bcc 2f
mulf fr0,fr1
2:
tst r0
beq 3f
mulf fr0,fr0
br 1b
3:
jmp (r5)
9:
jsr r5, rerr; 17.
+43
View File
@@ -0,0 +1,43 @@
/
/
/ ra -- fortran runtime -- real ** real
.globl rpr4
.globl rpr8
.globl log
.globl exp
.globl rerr
rpr8:
setd
br 1f
rpr4:
setf
1:
seti
movf (sp)+,fr1
movf (sp)+,fr0
cfcc
beq 3f / 0**x
movf fr1,-(sp)
jsr pc,log
bes error
mulf (sp)+,fr0
jsr pc,exp
bes error
2:
movf fr0,-(sp)
jmp *(r4)+
3:
tstf r1
cfcc
bgt 2b
error:
jsr r5,rerr; 17.
+49
View File
@@ -0,0 +1,49 @@
/
/
/ rb -- funct/subr stuff
.globl call
.globl callp
.globl retrn
.globl stsp
callp:
mov (r4)+,r0
add r3,r0
mov (r0),r0
br 1f
call:
mov (r4)+,r0
1:
mov r3,-(sp)
mov (r4)+,r3
mov r4,-(sp)
mov r0,r4
mov (r4)+,-(sp) / lv of funct
jmp *(r4)+
retrn:
mov r3,r0
mov (sp)+,r1 / lv of funct
mov (sp)+,r4
mov (sp)+,r3
mov (r0),sp
tst (r4)+ / arg count
mov (r4)+,r0 / return byte count
inc r0
bic $1,r0
add r0,r1
1:
sub $2,r0
blt 1f
mov -(r1),-(sp)
br 1b
1:
jmp *(r4)+
stsp:
mov sp,*(r4)+
jmp *(r4)+
+320
View File
@@ -0,0 +1,320 @@
/
/
/ rc -- complex arithmetic
.globl c8c16
.globl c16c8
.globl i4c8
.globl r4c8
.globl r8c8
.globl i4c16
.globl r4c16
.globl r8c16
.globl cad8
.globl csb8
.globl cmp8
.globl cdv8
.globl cng8
.globl cad16
.globl csb16
.globl cmp16
.globl cdv16
.globl cng16
.globl rval16
.globl rval16p
.globl gas16
.globl ceq8
.globl cne8
.globl ceq16
.globl cne16
.globl cpi8
.globl cpi16
one = 040200
a = r2
b = r3
c = r4
d = r5
e = r0
f = r1
gas16:
mov 16.(sp),r0
setd
movf (sp)+,a
movf (sp)+,b
tst (sp)+
movf a,(r0)+
movf b,(r0)+
jmp *(r4)+
rval16p:
mov r3,r0
add (r4)+,r0
mov (r0),r0
br 1f
rval16:
mov (r4)+,r0
1:
setd
movf (r0)+,a
movf (r0)+,b
movf b,-(sp)
movf a,-(sp)
jmp *(r4)+
cad16:
setd
br 1f
cad8:
setf
1:
jsr pc,garg
addf a,e
addf b,f
br sarg
csb16:
setd
br 1f
csb8:
setf
1:
jsr pc,garg
subf a,e
negf e
subf b,f
negf f
br sarg
cmp16:
setd
br 1f
cmp8:
setf
1:
jsr pc,garg
mulf a,e
mulf b,f
subf f,e
mulf d,a
mulf c,b
movf a,f
addf b,f
sarg:
movf f,-(sp)
movf e,-(sp)
jmp *(r4)+
cdv16:
setd
br 1f
cdv8:
setf
1:
divide:
jsr pc,garg
absf e
absf f
cmpf e,f
cfcc
blt 1f
/ algorithm #1 |c| > |d|
movf d,e
divf c,e / r = d/c
movf d,f
mulf e,f
addf c,f / x = c+rd
movf f,c
movf a,f
mulf e,f
negf f
addf b,f
mulf b,e
addf a,e
divf c,e
divf c,f
br sarg
/ algorithm #2 |c| < |d|
1:
movf c,e
divf d,e / r = c/d
movf c,f
mulf e,f
addf d,f / x = d+rc
movf f,c
movf b,f
mulf e,f
subf a,f
mulf a,e
addf b,e
divf c,e
divf c,f
br sarg
cng16:
setd
br 1f
cng8:
setf
1:
movf (sp)+,a
negf a
negf (sp)
movf a,-(sp)
jmp *(r4)+
/ setup the following registers
/ (a,bi) +o (c,di) -> (e+fi)
/ a,b,c,d are input
/ e,f are output and also contain
/ c,d on input
garg:
mov (sp)+,r0
movf (sp)+,e
movf e,c
movf (sp)+,f
movf f,d
movf (sp)+,a
movf (sp)+,b
jmp (r0)
i4c8:
setf
br 1f
i4c16:
setd
1:
setl
movif (sp)+,fr0
br 2f
r4c8:
setf
br 1f
r8c16:
setd
1:
movf (sp)+,fr0
br 2f
r4c16:
setd
br 1f
r8c8:
setf
1:
movof (sp)+,fr0
2:
clrf -(sp)
movf fr0,-(sp)
jmp *(r4)+
c16c8:
setd
br 1f
c8c16:
setf
1:
movf (sp)+,r0
movf (sp)+,r1
movfo r1,-(sp)
movfo r0,-(sp)
jmp *(r4)+
ceq16:
setd
br 1f
ceq8:
setf
1:
mov $1,r1
br 2f
cne16:
setd
br 1f
cne8:
setf
1:
clr r1
2:
jsr pc,garg
cmpf c,a
cfcc
bne 1f
cmpf d,b
cfcc
beq 2f
1:
inc r1
bic $2,r1
2:
mov r1,-(sp)
jmp *(r4)+
cpi8:
setf
br 1f
cpi16:
setd
1:
clr r0
tst (sp)+
mov (sp)+,r1
bge 1f
inc r0
neg r1
1:
movf (sp)+,fr0
movf fr0,fr4
movf (sp)+,fr0
movf fr0,fr5
movf $one,fr0
clrf fr1
1:
dec r1
bmi 1f
movf fr0,fr2
movf fr1,fr3
mulf fr4,fr0
mulf fr4,fr1
mulf fr5,fr2
mulf fr5,fr3
subf fr3,fr0
addf fr2,fr1
br 1b
1:
tst r0
beq 1f
clrf -(sp)
movf $one,fr2
movf fr2,-(sp)
movf fr1,-(sp)
movf fr0,-(sp)
jmp divide
1:
movf fr1,-(sp)
movf fr0,-(sp)
jmp *(r4)+
+38
View File
@@ -0,0 +1,38 @@
/
/
/ rd -- short list I/O do loop
.globl slist1
.globl slist2
.globl slist3
.globl temp
slist1:
mov (r4)+,r0
mov (r0)+,r2
mov $1,r1
1:
mpy (r0)+,r1
sob r2,1b
mov $temp,r2
mov r1,(r2)+
clr (r2)+
mov (r0)+,(r2)+
jmp *(r4)+
slist2:
mov (r4)+,r0
dec temp
ble 1f
mov r0,r4
1:
jmp *(r4)+
slist3:
mov $temp+2,r0
add (r0)+,(sp)
add (r0),-(r0)
jmp *(r4)+
+57
View File
@@ -0,0 +1,57 @@
/
/
/ re -- comparison of 8-byte quantities
.globl rle8
.globl rlt8
.globl req8
.globl rne8
.globl rge8
.globl rgt8
rlt8:
jsr pc,compar
blt one
br zero
rle8:
jsr pc,compar
ble one
br zero
req8:
jsr pc,compar
beq one
br zero
rne8:
jsr pc,compar
bne one
br zero
rge8:
jsr pc,compar
bge one
br zero
rgt8:
jsr pc,compar
bgt one
br zero
one:
mov $1,-(sp)
jmp *(r4)+
zero:
clr -(sp)
jmp *(r4)+
compar:
setd
mov (sp)+,r0
movf (sp)+,fr0
cmpf (sp)+,fr0
cfcc
jmp (r0)
+58
View File
@@ -0,0 +1,58 @@
/
/
/ rf -- real comparisons
.globl rlt4
.globl rle4
.globl req4
.globl rne4
.globl rge4
.globl rgt4
rlt4:
jsr pc,compar
blt one
br zero
rle4:
jsr pc,compar
ble one
br zero
req4:
jsr pc,compar
beq one
br zero
rne4:
jsr pc,compar
bne one
br zero
rge4:
jsr pc,compar
bge one
br zero
rgt4:
jsr pc,compar
bgt one
br zero
one:
mov $1,-(sp)
jmp *(r4)+
zero:
clr -(sp)
jmp *(r4)+
compar:
mov (sp)+,r0
setf
movf (sp)+,r0
cmpf (sp)+,r0
cfcc
jmp (r0)
+87
View File
@@ -0,0 +1,87 @@
/
/
/ rg -- assignments
.globl gmv1
.globl gmv2
.globl gmv4
.globl gmv8
.globl gmv16
.globl stst
gmv1:
movb (sp)+,*(r4)+
jmp *(r4)+
gmv2:
stst:
mov (sp)+,*(r4)+
jmp *(r4)+
gmv4:
mov (r4)+,r0
mov (sp)+,(r0)+
mov (sp)+,(r0)+
jmp *(r4)+
gmv8:
setd
movf (sp)+,fr0
movf fr0,*(r4)+
jmp *(r4)+
gmv16:
setd
mov (r4)+,r0
movf (sp)+,fr0
movf fr0,(r0)+
movf (sp)+,fr0
movf fr0,(r0)+
jmp *(r4)+
.globl gmv1p
.globl gmv2p
.globl gmv4p
.globl gmv8p
.globl gmv16p
gmv1p:
mov (r4)+,r0
add r3,r0
movb (sp)+,*(r0)+
jmp *(r4)+
gmv2p:
mov (r4)+,r0
add r3,r0
mov (sp)+,*(r0)+
jmp *(r4)+
gmv4p:
mov (r4)+,r0
add r3,r0
mov (r0),r0
mov (sp)+,(r0)+
mov (sp)+,(r0)+
jmp *(r4)+
gmv8p:
setd
mov (r4)+,r0
add r3,r0
movf (sp)+,fr0
movf fr0,*(r0)+
jmp *(r4)+
gmv16p:
setd
mov (r4)+,r0
add r3,r0
mov (r0),r0
movf (sp)+,fr0
movf fr0,(r0)+
movf (sp)+,fr0
movf fr0,(r0)+
jmp *(r4)+
+141
View File
@@ -0,0 +1,141 @@
/
/
/ rh -- simple array l/r values
achk = 1 / 1 to check array bounds
.globl gal1
.globl gal2
.globl gal4
.globl gal8
.globl gal16
.globl gar1
.globl gar2
.globl gar4
.globl gar8
.globl gar16
.globl rerr
gal1:
tst (sp)+
dec (sp)
br 1f
gal2:
tst (sp)+
dec (sp)
asl (sp)
br 1f
gal4:
tst (sp)+
dec (sp)
asl (sp)
asl (sp)
br 1f
gal8:
tst (sp)+
dec (sp)
asl (sp)
asl (sp)
asl (sp)
br 1f
gal16:
tst (sp)+
dec (sp)
asl (sp)
asl (sp)
asl (sp)
asl (sp)
1:
cmp (sp),(r4)+
.if achk
bhis 9f
.endif
add (r4)+,(sp)
jmp *(r4)+
9:
jsr r5,rerr; 15.
4
gar1:
tst (sp)+
dec (sp)
cmp (sp),(r4)+
.if achk
bhis 9b
.endif
add (r4)+,(sp)
movb *(sp)+,r0
mov r0,-(sp)
jmp *(r4)+
gar2:
tst (sp)+
dec (sp)
asl (sp)
cmp (sp),(r4)+
.if achk
bhis 9b
.endif
add (r4)+,(sp)
mov *(sp)+,-(sp)
jmp *(r4)+
gar4:
tst (sp)+
dec (sp)
mov (sp)+,r0
asl r0
asl r0
cmp r0,(r4)+
.if achk
bhis 9b
.endif
add (r4)+,r0
cmp (r0)+,(r0)+
mov -(r0),-(sp)
mov -(r0),-(sp)
jmp *(r4)+
gar8:
setd
tst (sp)+
dec (sp)
asl (sp)
asl (sp)
asl (sp)
cmp (sp),(r4)+
.if achk
bhis 9b
.endif
add (r4)+,(sp)
movf *(sp)+,fr0
movf fr0,-(sp)
jmp *(r4)+
gar16:
setd
tst (sp)+
dec (sp)
mov (sp)+,r0
asl r0
asl r0
asl r0
asl r0
cmp r0,(r4)+
.if achk
bhis 9b
.endif
add (r4)+,r0
movf (r0)+,fr0
movf (r0)+,fr1
movf fr1,-(sp)
movf fr0,-(sp)
jmp *(r4)+
+10
View File
@@ -0,0 +1,10 @@
/
/
/ rtx -- last routine
.globl ecore
.bss
ecore: