some more changes to use VAX assembler
This commit is contained in:
parent
c9312a41da
commit
6dac59f2d4
74 changed files with 665 additions and 549 deletions
|
@ -2,3 +2,4 @@ LIST
|
|||
Makefile
|
||||
compmodule
|
||||
libem_s.a
|
||||
end.s
|
||||
|
|
|
@ -1,25 +1,28 @@
|
|||
# $Header$
|
||||
all: libem_o.a
|
||||
MACH=vax4
|
||||
all: libem_o.a end.o
|
||||
|
||||
install: cp
|
||||
|
||||
cp: all
|
||||
install: all
|
||||
../../install libem_o.a tail_em
|
||||
../../install end.o end_em
|
||||
|
||||
cmp: all
|
||||
-../../compare libem_o.a tail_em
|
||||
-../../compare end.o end_em
|
||||
|
||||
end.o: end.s
|
||||
$(MACH) -I../../../h -c end.s
|
||||
|
||||
libem_o.a: libem_s.a
|
||||
ASAR=ar ; export ASAR ;\
|
||||
RANLIB=ranlib ; export RANLIB ;\
|
||||
ASAR=aal ; export ASAR ;\
|
||||
march . libem_o.a
|
||||
|
||||
clean:
|
||||
rm -f *.o libem_o.a
|
||||
|
||||
opr:
|
||||
opr :
|
||||
make pr | opr
|
||||
|
||||
pr:
|
||||
@pr `pwd`/Makefile
|
||||
@arch pv libem_s.a | pr -h `pwd`/libem_s.a
|
||||
@pr `pwd`/end.s
|
||||
|
|
|
@ -1,10 +1,12 @@
|
|||
# $Header$
|
||||
.globl .aar4
|
||||
.sect .text; .sect .rom; .sect .data; .sect .bss; .sect .text
|
||||
.define .aar4
|
||||
|
||||
! $Header$
|
||||
|
||||
.aar4:
|
||||
movl (sp)+,r2
|
||||
movl (sp)+,r0
|
||||
movl 8(r0),r1 # elementsize in r1
|
||||
movl 8(r0),r1 ! elementsize in r1
|
||||
subl3 (r0),(sp)+,r0
|
||||
mull2 r1,r0
|
||||
addl2 (sp)+,r0
|
||||
|
|
|
@ -1,20 +1,21 @@
|
|||
#include "em_abs.h"
|
||||
.sect .text; .sect .rom; .sect .data; .sect .bss; .sect .text
|
||||
.define .adf
|
||||
|
||||
# $Header$
|
||||
! $Header$
|
||||
|
||||
.globl .adf
|
||||
|
||||
.adf:
|
||||
movl (sp)+,r1
|
||||
cmpl r0,$4
|
||||
bneq L1
|
||||
bneq 1f
|
||||
addf2 (sp)+,(sp)
|
||||
jmp (r1)
|
||||
L1:
|
||||
1:
|
||||
cmpl r0,$8
|
||||
bneq L2
|
||||
bneq 2f
|
||||
addd2 (sp)+,(sp)
|
||||
jmp (r1)
|
||||
L2:
|
||||
2:
|
||||
pushl $EILLINS
|
||||
jmp .fat
|
||||
|
|
|
@ -1,15 +1,16 @@
|
|||
#include "em_abs.h"
|
||||
.sect .text; .sect .rom; .sect .data; .sect .bss; .sect .text
|
||||
.define .adi
|
||||
|
||||
# $Header$
|
||||
! $Header$
|
||||
|
||||
.globl .adi
|
||||
|
||||
.adi:
|
||||
movl (sp)+,r1
|
||||
cmpl r0,$4
|
||||
bneq L1
|
||||
bneq 1f
|
||||
addl2 (sp)+,(sp)
|
||||
jmp (r1)
|
||||
L1:
|
||||
1:
|
||||
pushl $EILLINS
|
||||
jmp .fat
|
||||
|
|
|
@ -1,13 +1,15 @@
|
|||
# $Header$
|
||||
.globl .and
|
||||
.sect .text; .sect .rom; .sect .data; .sect .bss; .sect .text
|
||||
.define .and
|
||||
|
||||
# bytes in r0
|
||||
! $Header$
|
||||
|
||||
! bytes in r0
|
||||
.and:
|
||||
movl (sp)+,r3
|
||||
addl3 r0,sp,r1
|
||||
ashl $-2,r0,r0
|
||||
L1:
|
||||
1:
|
||||
mcoml (sp)+,r2
|
||||
bicl2 r2,(r1)+
|
||||
sobgtr r0,L1
|
||||
sobgtr r0,1b
|
||||
jmp (r3)
|
||||
|
|
|
@ -1,16 +1,17 @@
|
|||
#include "em_abs.h"
|
||||
.sect .text; .sect .rom; .sect .data; .sect .bss; .sect .text
|
||||
.define .ass
|
||||
|
||||
# $Header$
|
||||
! $Header$
|
||||
|
||||
.globl .ass
|
||||
|
||||
.ass:
|
||||
movl (sp)+,r1
|
||||
cmpl r0,$4
|
||||
bneq Lerr
|
||||
bneq 1f
|
||||
movl (sp)+,r0
|
||||
addl2 r0,sp
|
||||
jmp (r1)
|
||||
Lerr:
|
||||
1:
|
||||
pushl $EILLINS
|
||||
jmp .fat
|
||||
|
|
|
@ -1,29 +1,30 @@
|
|||
#include "em_abs.h"
|
||||
.sect .text; .sect .rom; .sect .data; .sect .bss; .sect .text
|
||||
.define .bls
|
||||
|
||||
# $Header$
|
||||
! $Header$
|
||||
|
||||
.globl .bls
|
||||
|
||||
.bls:
|
||||
movl (sp)+,r3
|
||||
cmpl r0,$4
|
||||
bneq Lerr
|
||||
movl (sp)+,r0 # number of bytes in r0
|
||||
movl (sp)+,r1 # addresses in r1, r2
|
||||
bneq 5f
|
||||
movl (sp)+,r0 ! number of bytes in r0
|
||||
movl (sp)+,r1 ! addresses in r1, r2
|
||||
movl (sp)+,r2
|
||||
blbc r0,L1
|
||||
blbc r0,1f
|
||||
movb (r2)+,(r1)+
|
||||
L1:
|
||||
bbc $1,r0,L2
|
||||
1:
|
||||
bbc $1,r0,2f
|
||||
movw (r2)+,(r1)+
|
||||
L2:
|
||||
2:
|
||||
ashl $-2,r0,r0
|
||||
beql L4
|
||||
L3:
|
||||
beql 4f
|
||||
3:
|
||||
movl (r2)+,(r1)+
|
||||
sobgtr r0,L3
|
||||
L4:
|
||||
sobgtr r0,3b
|
||||
4:
|
||||
jmp (r3)
|
||||
Lerr:
|
||||
5:
|
||||
pushl $EILLINS
|
||||
jmp .fat
|
||||
|
|
|
@ -1,33 +1,34 @@
|
|||
#include "em_abs.h"
|
||||
.sect .text; .sect .rom; .sect .data; .sect .bss; .sect .text
|
||||
.define .cff
|
||||
|
||||
# $Header$
|
||||
! $Header$
|
||||
|
||||
.globl .cff
|
||||
|
||||
.cff:
|
||||
movl (sp)+,r1
|
||||
movl (sp)+,r0
|
||||
cmpl r0,$4
|
||||
bneq Ldtd
|
||||
bneq 1f
|
||||
movl (sp)+,r0
|
||||
cmpl r0,$4
|
||||
bneq Lddf
|
||||
bneq 2f
|
||||
jmp (r1)
|
||||
Lddf:
|
||||
2:
|
||||
cmpl r0,$8
|
||||
bneq Lerr
|
||||
bneq 4f
|
||||
cvtdf (sp)+,-(sp)
|
||||
jmp (r1)
|
||||
Ldtd:
|
||||
1:
|
||||
movl (sp)+,r0
|
||||
cmpl r0,$4
|
||||
bneq Lddd
|
||||
bneq 3f
|
||||
cvtfd (sp)+,-(sp)
|
||||
jmp (r1)
|
||||
Lddd:
|
||||
3:
|
||||
cmpl r0,$8
|
||||
bneq Lerr
|
||||
bneq 4f
|
||||
jmp (r1)
|
||||
Lerr:
|
||||
4:
|
||||
pushl $EILLINS
|
||||
jmp .fat
|
||||
|
|
|
@ -1,24 +1,25 @@
|
|||
#include "em_abs.h"
|
||||
.sect .text; .sect .rom; .sect .data; .sect .bss; .sect .text
|
||||
.define .cfi
|
||||
|
||||
# $Header$
|
||||
! $Header$
|
||||
|
||||
.globl .cfi
|
||||
|
||||
.cfi:
|
||||
movl (sp)+,r1
|
||||
movl (sp)+,r0
|
||||
cmpl r0,$4
|
||||
bneq Lerr
|
||||
bneq 1f
|
||||
movl (sp)+,r0
|
||||
cmpl r0,$4
|
||||
bneq Lddl
|
||||
bneq 2f
|
||||
cvtfl (sp)+,-(sp)
|
||||
jmp (r1)
|
||||
Lddl:
|
||||
2:
|
||||
cmpl r0,$8
|
||||
bneq Lerr
|
||||
bneq 1f
|
||||
cvtdl (sp)+,-(sp)
|
||||
jmp (r1)
|
||||
Lerr:
|
||||
1:
|
||||
pushl $EILLINS
|
||||
jmp .fat
|
||||
|
|
|
@ -1,37 +1,38 @@
|
|||
#include "em_abs.h"
|
||||
.sect .text; .sect .rom; .sect .data; .sect .bss; .sect .text
|
||||
.define .cfu
|
||||
|
||||
# $Header$
|
||||
! $Header$
|
||||
|
||||
.globl .cfu
|
||||
|
||||
.cfu:
|
||||
movl (sp)+,r2
|
||||
movpsl r1
|
||||
bicl2 $~040,r1
|
||||
bicpsw $040 # integer overflow traps must be ignored
|
||||
bicpsw $040 ! integer overflow traps must be ignored
|
||||
movl (sp)+,r0
|
||||
cmpl (sp),$4
|
||||
bneq Lddt
|
||||
bneq 1f
|
||||
tstl (sp)+
|
||||
tstf (sp)
|
||||
bgeq L1
|
||||
bgeq 5f
|
||||
mnegf (sp),(sp)
|
||||
L1:
|
||||
5:
|
||||
cvtfl (sp)+,-(sp)
|
||||
L2:
|
||||
2:
|
||||
cmpl r0,$4
|
||||
bneq Lerr
|
||||
bispsw r1 # restore trap enable bit
|
||||
bneq 4f
|
||||
bispsw r1 ! restore trap enable bit
|
||||
jmp (r2)
|
||||
Lddt:
|
||||
1:
|
||||
cmpl (sp)+,$8
|
||||
bneq Lerr
|
||||
bneq 4f
|
||||
tstd (sp)
|
||||
bgeq L3
|
||||
bgeq 3f
|
||||
mnegd (sp),(sp)
|
||||
L3:
|
||||
3:
|
||||
cvtdl (sp)+,-(sp)
|
||||
brb L2
|
||||
Lerr:
|
||||
br 2b
|
||||
4:
|
||||
pushl $EILLINS
|
||||
jmp .fat
|
||||
|
|
|
@ -1,27 +1,28 @@
|
|||
#include "em_abs.h"
|
||||
.sect .text; .sect .rom; .sect .data; .sect .bss; .sect .text
|
||||
.define .cif
|
||||
|
||||
# $Header$
|
||||
! $Header$
|
||||
|
||||
.globl .cif
|
||||
|
||||
.cif:
|
||||
movl (sp)+,r1
|
||||
movl (sp)+,r0
|
||||
cmpl r0,$4
|
||||
bneq Ldbl
|
||||
bneq Idbl
|
||||
movl (sp)+,r0
|
||||
cmpl r0,$4
|
||||
bneq Lerr
|
||||
bneq Ierr
|
||||
cvtlf (sp)+,-(sp)
|
||||
jmp (r1)
|
||||
Ldbl:
|
||||
Idbl:
|
||||
cmpl r0,$8
|
||||
bneq Lerr
|
||||
bneq Ierr
|
||||
movl (sp)+,r0
|
||||
cmpl r0,$4
|
||||
bneq Lerr
|
||||
bneq Ierr
|
||||
cvtld (sp)+,-(sp)
|
||||
jmp (r1)
|
||||
Lerr:
|
||||
Ierr:
|
||||
pushl $EILLINS
|
||||
jmp .fat
|
||||
|
|
|
@ -1,25 +1,26 @@
|
|||
#include "em_abs.h"
|
||||
.sect .text; .sect .rom; .sect .data; .sect .bss; .sect .text
|
||||
.define .cii
|
||||
|
||||
# $Header$
|
||||
! $Header$
|
||||
|
||||
.globl .cii
|
||||
|
||||
.cii:
|
||||
movl (sp)+, r1
|
||||
movl (sp)+, r0
|
||||
cmpl (sp), $1
|
||||
beql Lfrom1
|
||||
beql Ifrom1
|
||||
cmpl (sp), $2
|
||||
beql Lfrom2
|
||||
beql Ifrom2
|
||||
cmpl (sp)+, $4
|
||||
bgtr Lerr
|
||||
bgtr Ierr
|
||||
jmp (r1)
|
||||
Lfrom1:
|
||||
Ifrom1:
|
||||
cvtbw 4(sp), 4(sp)
|
||||
Lfrom2:
|
||||
Ifrom2:
|
||||
tstl (sp)+
|
||||
cvtwl (sp), (sp)
|
||||
jmp (r1)
|
||||
Lerr:
|
||||
Ierr:
|
||||
pushl $EILLINS
|
||||
jmp .fat
|
||||
|
|
|
@ -1,13 +1,15 @@
|
|||
# $Header$
|
||||
.globl .cmand
|
||||
.sect .text; .sect .rom; .sect .data; .sect .bss; .sect .text
|
||||
.define .cmand
|
||||
|
||||
# bytes in r0
|
||||
! $Header$
|
||||
|
||||
! bytes in r0
|
||||
|
||||
.cmand:
|
||||
movl (sp)+,r2
|
||||
addl3 r0,sp,r1
|
||||
ashl $-2,r0,r0
|
||||
L1:
|
||||
I1:
|
||||
bicl2 (sp)+,(r1)+
|
||||
sobgtr r0,L1
|
||||
sobgtr r0,I1
|
||||
jmp (r2)
|
||||
|
|
|
@ -1,30 +1,31 @@
|
|||
#include "em_abs.h"
|
||||
.sect .text; .sect .rom; .sect .data; .sect .bss; .sect .text
|
||||
.define .cmf
|
||||
|
||||
# $Header$
|
||||
! $Header$
|
||||
|
||||
.globl .cmf
|
||||
|
||||
.cmf:
|
||||
movl (sp)+,r1
|
||||
cmpl r0,$4
|
||||
bneq L1
|
||||
bneq I1
|
||||
clrl r0
|
||||
cmpf (sp)+,(sp)+
|
||||
brb L3
|
||||
L1:
|
||||
br I3
|
||||
I1:
|
||||
cmpl r0,$8
|
||||
bneq Lerr
|
||||
bneq Ierr
|
||||
clrl r0
|
||||
cmpd (sp)+,(sp)+
|
||||
L3:
|
||||
beql L2
|
||||
bgtr L4
|
||||
I3:
|
||||
beql I2
|
||||
bgtr I4
|
||||
incl r0
|
||||
brb L2
|
||||
L4:
|
||||
br I2
|
||||
I4:
|
||||
decl r0
|
||||
L2:
|
||||
I2:
|
||||
jmp (r1)
|
||||
Lerr:
|
||||
Ierr:
|
||||
pushl $EILLINS
|
||||
jmp .fat
|
||||
|
|
|
@ -1,23 +1,23 @@
|
|||
#include "em_abs.h"
|
||||
.sect .text; .sect .rom; .sect .data; .sect .bss; .sect .text
|
||||
.define .cmi
|
||||
|
||||
# $Header$
|
||||
|
||||
.globl .cmi
|
||||
! $Header$
|
||||
|
||||
.cmi:
|
||||
movl (sp)+,r1
|
||||
cmpl r0,$4
|
||||
bneq Lerr
|
||||
bneq Ierr
|
||||
clrl r0
|
||||
cmpl (sp)+,(sp)+
|
||||
beql L1
|
||||
bgtr L2
|
||||
beql I1
|
||||
bgtr I2
|
||||
incl r0
|
||||
brb L1
|
||||
L2:
|
||||
br I1
|
||||
I2:
|
||||
decl r0
|
||||
L1:
|
||||
I1:
|
||||
jmp (r1)
|
||||
Lerr:
|
||||
Ierr:
|
||||
pushl $EILLINS
|
||||
jmp .fat
|
||||
|
|
|
@ -1,16 +1,18 @@
|
|||
# $Header$
|
||||
.globl .cms
|
||||
.sect .text; .sect .rom; .sect .data; .sect .bss; .sect .text
|
||||
.define .cms
|
||||
|
||||
# bytes in r0
|
||||
! $Header$
|
||||
|
||||
! bytes in r0
|
||||
.cms:
|
||||
movl (sp)+,r3
|
||||
addl3 sp,r0,r1
|
||||
addl3 r1,r0,r2
|
||||
ashl $-2,r0,r0
|
||||
L1:
|
||||
I1:
|
||||
cmpl (sp)+,(r1)+
|
||||
bneq L2
|
||||
sobgtr r0,L1
|
||||
L2:
|
||||
bneq I2
|
||||
sobgtr r0,I1
|
||||
I2:
|
||||
movl r2,sp
|
||||
jmp (r3)
|
||||
|
|
|
@ -1,23 +1,24 @@
|
|||
#include "em_abs.h"
|
||||
.sect .text; .sect .rom; .sect .data; .sect .bss; .sect .text
|
||||
.define .cmu
|
||||
|
||||
# $Header$
|
||||
! $Header$
|
||||
|
||||
.globl .cmu
|
||||
|
||||
.cmu:
|
||||
movl (sp)+,r1
|
||||
cmpl r0,$4
|
||||
bneq Lerr
|
||||
bneq Ierr
|
||||
clrl r0
|
||||
cmpl (sp)+,(sp)+
|
||||
beqlu L1
|
||||
bgtru L2
|
||||
beqlu I1
|
||||
bgtru I2
|
||||
incl r0
|
||||
brb L1
|
||||
L2:
|
||||
br I1
|
||||
I2:
|
||||
decl r0
|
||||
L1:
|
||||
I1:
|
||||
jmp (r1)
|
||||
Lerr:
|
||||
Ierr:
|
||||
pushl $EILLINS
|
||||
jmp .fat
|
||||
|
|
|
@ -1,12 +1,14 @@
|
|||
# $Header$
|
||||
.globl .com
|
||||
.sect .text; .sect .rom; .sect .data; .sect .bss; .sect .text
|
||||
.define .com
|
||||
|
||||
# bytes in r0
|
||||
! $Header$
|
||||
|
||||
! bytes in r0
|
||||
.com:
|
||||
movl (sp)+,r2
|
||||
movl sp,r1
|
||||
ashl $-2,r0,r0
|
||||
L1:
|
||||
I1:
|
||||
mcoml (r1),(r1)+
|
||||
sobgtr r0,L1
|
||||
sobgtr r0,I1
|
||||
jmp (r2)
|
||||
|
|
|
@ -1,22 +1,23 @@
|
|||
#include "em_abs.h"
|
||||
.sect .text; .sect .rom; .sect .data; .sect .bss; .sect .text
|
||||
.define .csa4
|
||||
|
||||
# $Header$
|
||||
! $Header$
|
||||
|
||||
.globl .csa4
|
||||
|
||||
.csa4:
|
||||
movl (sp)+,r0 # descriptor address
|
||||
movl (sp)+,r1 # index
|
||||
movl (r0)+,r2 # default
|
||||
movl (sp)+,r0 ! descriptor address
|
||||
movl (sp)+,r1 ! index
|
||||
movl (r0)+,r2 ! default
|
||||
subl2 (r0)+,r1
|
||||
cmpl (r0)+,r1
|
||||
blssu L1
|
||||
blssu I1
|
||||
movl (r0)[r1],r1
|
||||
bneq L2
|
||||
L1:
|
||||
bneq I2
|
||||
I1:
|
||||
movl r2,r1
|
||||
bneq L2
|
||||
bneq I2
|
||||
pushl $ECASE
|
||||
jmp .fat
|
||||
L2:
|
||||
I2:
|
||||
jmp (r1)
|
||||
|
|
|
@ -1,29 +1,30 @@
|
|||
#include "em_abs.h"
|
||||
.sect .text; .sect .rom; .sect .data; .sect .bss; .sect .text
|
||||
.define .csb4
|
||||
|
||||
# $Header$
|
||||
! $Header$
|
||||
|
||||
.globl .csb4
|
||||
|
||||
.csb4:
|
||||
movl (sp)+,r0 # descriptor address
|
||||
movl (sp)+,r1 # index
|
||||
pushl r4 # Save r4
|
||||
movl (r0)+,r4 # default
|
||||
movl (r0)+,r2 # number of cases
|
||||
L1:
|
||||
movl (sp)+,r0 ! descriptor address
|
||||
movl (sp)+,r1 ! index
|
||||
pushl r4 ! Save r4
|
||||
movl (r0)+,r4 ! default
|
||||
movl (r0)+,r2 ! number of cases
|
||||
I1:
|
||||
decl r2
|
||||
blss L2
|
||||
blss I2
|
||||
movl (r0)+,r3
|
||||
cmpl r1,r3
|
||||
beql Lfound
|
||||
tstl (r0)+ # useless address
|
||||
brb L1
|
||||
Lfound:
|
||||
beql Ifound
|
||||
tstl (r0)+ ! useless address
|
||||
br I1
|
||||
Ifound:
|
||||
movl (r0)+,r4
|
||||
L2:
|
||||
I2:
|
||||
movl r4,r0
|
||||
beql a3
|
||||
movl (sp)+,r4 # Restore r4
|
||||
movl (sp)+,r4 ! Restore r4
|
||||
jmp (r0)
|
||||
a3:
|
||||
pushl $ECASE
|
||||
|
|
|
@ -1,21 +1,21 @@
|
|||
#include "em_abs.h"
|
||||
.sect .text; .sect .rom; .sect .data; .sect .bss; .sect .text
|
||||
.define .csa
|
||||
.define .csb
|
||||
|
||||
# $Header$
|
||||
! $Header$
|
||||
|
||||
.globl .csa
|
||||
|
||||
.csa:
|
||||
cmpl r0,$4
|
||||
bneq Lillins
|
||||
bneq Iillins
|
||||
jmp .csa4
|
||||
|
||||
.globl .csb
|
||||
|
||||
.csb:
|
||||
cmpl r0,$4
|
||||
bneq Lillins
|
||||
bneq Iillins
|
||||
jmp .csb4
|
||||
|
||||
Lillins:
|
||||
Iillins:
|
||||
pushl $EILLINS
|
||||
jmp .fat
|
||||
|
|
|
@ -1,34 +1,35 @@
|
|||
#include "em_abs.h"
|
||||
.sect .text; .sect .rom; .sect .data; .sect .bss; .sect .text
|
||||
.define .cuf
|
||||
|
||||
# $Header$
|
||||
! $Header$
|
||||
|
||||
.globl .cuf
|
||||
|
||||
.cuf:
|
||||
movl (sp)+,r2
|
||||
movl (sp)+,r0
|
||||
movl (sp)+,r1
|
||||
cmpl r1,$4
|
||||
bneq Lerr
|
||||
bneq Ierr
|
||||
cmpl r0,$4
|
||||
bneq Ldld
|
||||
bneq Idld
|
||||
cvtlf (sp)+,-(sp)
|
||||
bgeq Lout
|
||||
addf2 Ltwo32f,(sp)
|
||||
Lout:
|
||||
bgeq Iout
|
||||
addf2 Itwo32f,(sp)
|
||||
Iout:
|
||||
jmp (r2)
|
||||
Ldld:
|
||||
Idld:
|
||||
cmpl r0,$8
|
||||
bneq Lerr
|
||||
bneq Ierr
|
||||
cvtld (sp)+,-(sp)
|
||||
bgeq Lout
|
||||
addd2 Ltwo32F,(sp)
|
||||
bgeq Iout
|
||||
addd2 Itwo32F,(sp)
|
||||
jmp (r2)
|
||||
Lerr:
|
||||
Ierr:
|
||||
pushl $EILLINS
|
||||
jmp .fat
|
||||
.data
|
||||
Ltwo32f:
|
||||
.float 0f4294967296.0
|
||||
Ltwo32F:
|
||||
.double 0f4294967296.0
|
||||
.sect .rom
|
||||
Itwo32f:
|
||||
.data1 0200,0117,00,00
|
||||
Itwo32F:
|
||||
.data1 0200,0117,00,00,00,00,00,00
|
||||
|
|
|
@ -1,18 +1,19 @@
|
|||
#include "em_abs.h"
|
||||
.sect .text; .sect .rom; .sect .data; .sect .bss; .sect .text
|
||||
.define .cui
|
||||
|
||||
# $Header$
|
||||
! $Header$
|
||||
|
||||
.globl .cui
|
||||
|
||||
.cui:
|
||||
movl (sp)+,r1
|
||||
movl (sp)+,r0
|
||||
cmpl r0,$4
|
||||
bneq Lerr
|
||||
bneq Ierr
|
||||
movl (sp)+,r0
|
||||
cmpl r0,$4
|
||||
bneq Lerr
|
||||
bneq Ierr
|
||||
jmp (r1)
|
||||
Lerr:
|
||||
Ierr:
|
||||
pushl $EILLINS
|
||||
jmp .fat
|
||||
|
|
|
@ -1,16 +1,17 @@
|
|||
#include "em_abs.h"
|
||||
.sect .text; .sect .rom; .sect .data; .sect .bss; .sect .text
|
||||
.define .cuu
|
||||
|
||||
# $Header$
|
||||
! $Header$
|
||||
|
||||
.globl .cuu
|
||||
|
||||
.cuu:
|
||||
movl (sp)+,r1
|
||||
cmpl (sp)+,$4
|
||||
bneq Lerr
|
||||
bneq Ierr
|
||||
cmpl (sp)+, $4
|
||||
bneq Lerr
|
||||
bneq Ierr
|
||||
jmp (r1)
|
||||
Lerr:
|
||||
Ierr:
|
||||
pushl $EILLINS
|
||||
jmp .fat
|
||||
|
|
|
@ -1,16 +1,17 @@
|
|||
#include "em_abs.h"
|
||||
.sect .text; .sect .rom; .sect .data; .sect .bss; .sect .text
|
||||
.define .dus
|
||||
|
||||
# $Header$
|
||||
! $Header$
|
||||
|
||||
.globl .dus
|
||||
|
||||
.dus:
|
||||
movl (sp)+,r1
|
||||
cmpl r0,$4
|
||||
bneq Lerr
|
||||
bneq Ierr
|
||||
movl (sp)+,r0
|
||||
pushl r1
|
||||
jmp .dup
|
||||
Lerr:
|
||||
Ierr:
|
||||
pushl $EILLINS
|
||||
jmp .fat
|
||||
|
|
|
@ -1,20 +1,21 @@
|
|||
#include "em_abs.h"
|
||||
.sect .text; .sect .rom; .sect .data; .sect .bss; .sect .text
|
||||
.define .dvf
|
||||
|
||||
# $Header$
|
||||
! $Header$
|
||||
|
||||
.globl .dvf
|
||||
|
||||
.dvf:
|
||||
movl (sp)+,r1
|
||||
cmpl r0,$4
|
||||
bneq L1
|
||||
bneq I1
|
||||
divf2 (sp)+,(sp)
|
||||
jmp (r1)
|
||||
L1:
|
||||
I1:
|
||||
cmpl r0,$8
|
||||
bneq L2
|
||||
bneq I2
|
||||
divd2 (sp)+,(sp)
|
||||
jmp (r1)
|
||||
L2:
|
||||
I2:
|
||||
pushl $EILLINS
|
||||
jmp .fat
|
||||
|
|
|
@ -1,15 +1,16 @@
|
|||
#include "em_abs.h"
|
||||
.sect .text; .sect .rom; .sect .data; .sect .bss; .sect .text
|
||||
.define .dvi
|
||||
|
||||
# $Header$
|
||||
! $Header$
|
||||
|
||||
.globl .dvi
|
||||
|
||||
.dvi:
|
||||
movl (sp)+,r1
|
||||
cmpl r0,$4
|
||||
bneq L1
|
||||
bneq I1
|
||||
divl2 (sp)+,(sp)
|
||||
jmp (r1)
|
||||
L1:
|
||||
I1:
|
||||
pushl $EILLINS
|
||||
jmp .fat
|
||||
|
|
|
@ -1,13 +1,14 @@
|
|||
#include "em_abs.h"
|
||||
.sect .text; .sect .rom; .sect .data; .sect .bss; .sect .text
|
||||
.define .dvu
|
||||
|
||||
# $Header$
|
||||
! $Header$
|
||||
|
||||
.globl .dvu
|
||||
|
||||
.dvu:
|
||||
cmpl r0,$4
|
||||
bneq Lerr
|
||||
bneq Ierr
|
||||
jmp .dvu4
|
||||
Lerr:
|
||||
Ierr:
|
||||
pushl $EILLINS
|
||||
jmp .fat
|
||||
|
|
|
@ -1,22 +1,23 @@
|
|||
#include "em_abs.h"
|
||||
.sect .text; .sect .rom; .sect .data; .sect .bss; .sect .text
|
||||
.define .dvu4
|
||||
|
||||
# $Header$
|
||||
! $Header$
|
||||
|
||||
.globl .dvu4
|
||||
|
||||
.dvu4:
|
||||
movl (sp)+,r3
|
||||
movl (sp)+,r2
|
||||
blss L1
|
||||
blss I1
|
||||
movl (sp)+,r0
|
||||
clrl r1
|
||||
ediv r2,r0,r0,r1
|
||||
jmp (r3)
|
||||
L1:
|
||||
I1:
|
||||
cmpl (sp)+,r2
|
||||
bgequ L2
|
||||
bgequ I2
|
||||
clrl r0
|
||||
jmp (r3)
|
||||
L2:
|
||||
I2:
|
||||
movl $1,r0
|
||||
jmp (r3)
|
||||
|
|
20
mach/vax4/libem/end.s
Normal file
20
mach/vax4/libem/end.s
Normal file
|
@ -0,0 +1,20 @@
|
|||
.define endtext,enddata,endbss,_etext,_edata,_end
|
||||
.sect .text
|
||||
.align 4
|
||||
.sect .rom
|
||||
.align 4
|
||||
.sect .data
|
||||
.align 4
|
||||
.sect .bss
|
||||
.align 4
|
||||
.sect .end ! only for declaration of _end and endbss.
|
||||
|
||||
.sect .text
|
||||
endtext:
|
||||
_etext:
|
||||
.sect .data
|
||||
enddata:
|
||||
_edata:
|
||||
.sect .end
|
||||
_end:
|
||||
endbss:
|
|
@ -1,18 +1,20 @@
|
|||
# $Header$
|
||||
.globl .exg
|
||||
.sect .text; .sect .rom; .sect .data; .sect .bss; .sect .text
|
||||
.define .exg
|
||||
|
||||
# bytes in r0
|
||||
! $Header$
|
||||
|
||||
! bytes in r0
|
||||
.exg:
|
||||
movl (sp)+,r3
|
||||
addl3 sp,r0,r2
|
||||
addl2 r0,r2
|
||||
ashl $-2,r0,r1
|
||||
L1:
|
||||
I1:
|
||||
movl -(r2),-(sp)
|
||||
sobgtr r1,L1
|
||||
sobgtr r1,I1
|
||||
addl3 r0,r2,r1
|
||||
L2:
|
||||
I2:
|
||||
movw -(r2),-(r1)
|
||||
sobgtr r0,L2
|
||||
sobgtr r0,I2
|
||||
movl r1,sp
|
||||
jmp (r3)
|
||||
|
|
|
@ -1,15 +1,17 @@
|
|||
# $Header$
|
||||
.globl .fat
|
||||
.sect .text; .sect .rom; .sect .data; .sect .bss; .sect .text
|
||||
.define .fat
|
||||
|
||||
! $Header$
|
||||
|
||||
.fat:
|
||||
pushl (sp)
|
||||
jsb .trp
|
||||
movl $L1,ap
|
||||
movl $I1,ap
|
||||
movl (sp)+,6(ap)
|
||||
chmk (ap)+
|
||||
halt
|
||||
|
||||
.data
|
||||
L1: .word 1
|
||||
.long 1
|
||||
.long 0
|
||||
.sect .rom
|
||||
I1: .data2 1
|
||||
.data4 1
|
||||
.data4 0
|
||||
|
|
|
@ -1,28 +1,29 @@
|
|||
#include "em_abs.h"
|
||||
.sect .text; .sect .rom; .sect .data; .sect .bss; .sect .text
|
||||
.define .fef
|
||||
|
||||
# $Header$
|
||||
! $Header$
|
||||
|
||||
.globl .fef
|
||||
|
||||
.fef:
|
||||
movl (sp)+,r3
|
||||
cmpl r0,$4
|
||||
bneq L1
|
||||
bneq I1
|
||||
movf (sp)+,r0
|
||||
jsb Lhulp
|
||||
jsb Ihulp
|
||||
movf r0,-(sp)
|
||||
jmp (r3)
|
||||
L1:
|
||||
I1:
|
||||
cmpl r0,$8
|
||||
bneq L2
|
||||
bneq I2
|
||||
movd (sp)+,r0
|
||||
jsb Lhulp
|
||||
jsb Ihulp
|
||||
movd r0,-(sp)
|
||||
jmp (r3)
|
||||
L2:
|
||||
I2:
|
||||
pushl $EILLINS
|
||||
jmp .fat
|
||||
Lhulp:
|
||||
Ihulp:
|
||||
extzv $7,$8,r0,r2
|
||||
subl3 $128,r2,-(sp)
|
||||
insv $128,$7,$8,r0
|
||||
|
|
|
@ -1,24 +1,27 @@
|
|||
#include "em_abs.h"
|
||||
.sect .text; .sect .rom; .sect .data; .sect .bss; .sect .text
|
||||
.define .fif
|
||||
|
||||
# $Header$
|
||||
! $Header$
|
||||
|
||||
.globl .fif
|
||||
.sect .rom
|
||||
Ione: .data1 0200, 077, 00, 00, 00, 00, 00, 00
|
||||
|
||||
.fif:
|
||||
movl (sp)+,r2
|
||||
cmpl r0,$4
|
||||
bneq L1
|
||||
bneq I1
|
||||
mulf3 (sp)+,(sp)+,r0
|
||||
emodf r0,$0,$0f1.0,r1,-(sp)
|
||||
emodf r0,$0,Ione,r1,-(sp)
|
||||
subf3 (sp),r0,-(sp)
|
||||
jmp (r2)
|
||||
L1:
|
||||
I1:
|
||||
cmpl r0,$8
|
||||
bneq L2
|
||||
bneq I2
|
||||
muld3 (sp)+,(sp)+,r0
|
||||
emodd r0,$0,$0f1.0,r0,-(sp)
|
||||
emodd r0,$0,Ione,r0,-(sp)
|
||||
subd3 (sp),r0,-(sp)
|
||||
jmp (r2)
|
||||
L2:
|
||||
I2:
|
||||
pushl $EILLINS
|
||||
jmp .fat
|
||||
|
|
|
@ -1,16 +1,17 @@
|
|||
# $Header$
|
||||
.sect .text; .sect .rom; .sect .data; .sect .bss; .sect .text
|
||||
.define .gto
|
||||
! $Header$
|
||||
|
||||
.globl .strlb
|
||||
.globl .gto
|
||||
# Nonlocal goto.
|
||||
# On the stack is a pointer to a block containing :
|
||||
# 1. the new local base (ptr+8)
|
||||
# 2. the new stack pointer (ptr+4)
|
||||
# 3. the new program counter (ptr)
|
||||
.extern .strlb
|
||||
! Nonlocal goto.
|
||||
! On the stack is a pointer to a block containing :
|
||||
! 1. the new local base (ptr+8)
|
||||
! 2. the new stack pointer (ptr+4)
|
||||
! 3. the new program counter (ptr)
|
||||
.gto:
|
||||
movl (sp)+,r2
|
||||
movl 4(r2),sp # Store new stack pointer
|
||||
pushl (r2) # Push target address
|
||||
pushl 8(r2) # Push new local base
|
||||
jsb .strlb # Store in fp, compute ap
|
||||
movl 4(r2),sp ! Store new stack pointer
|
||||
pushl (r2) ! Push target address
|
||||
pushl 8(r2) ! Push new local base
|
||||
jsb .strlb ! Store in fp, compute ap
|
||||
rsb
|
||||
|
|
|
@ -1,18 +1,20 @@
|
|||
# $Header$
|
||||
.globl .inn
|
||||
.sect .text; .sect .rom; .sect .data; .sect .bss; .sect .text
|
||||
.define .inn
|
||||
|
||||
# bytes in r0
|
||||
! $Header$
|
||||
|
||||
! bytes in r0
|
||||
.inn:
|
||||
movl (sp)+,r3
|
||||
movl (sp)+,r1
|
||||
ashl $3,r0,r2 # nr of bits in r2
|
||||
ashl $3,r0,r2 ! nr of bits in r2
|
||||
cmpl r1,r2
|
||||
bgequ L2
|
||||
bbc r1,(sp),L2
|
||||
bgequ I2
|
||||
bbc r1,(sp),I2
|
||||
movl $1,r1
|
||||
L1:
|
||||
I1:
|
||||
addl2 r0,sp
|
||||
jmp (r3)
|
||||
L2:
|
||||
I2:
|
||||
clrl r1
|
||||
brb L1
|
||||
br I1
|
||||
|
|
|
@ -1,12 +1,14 @@
|
|||
# $Header$
|
||||
.globl .ior
|
||||
.sect .text; .sect .rom; .sect .data; .sect .bss; .sect .text
|
||||
.define .ior
|
||||
|
||||
# bytes in r0
|
||||
! $Header$
|
||||
|
||||
! bytes in r0
|
||||
.ior:
|
||||
movl (sp)+,r2
|
||||
addl3 r0,sp,r1
|
||||
ashl $-2,r0,r0
|
||||
L1:
|
||||
I1:
|
||||
bisl2 (sp)+,(r1)+
|
||||
sobgtr r0,L1
|
||||
sobgtr r0,I1
|
||||
jmp (r2)
|
||||
|
|
|
@ -1,5 +1,7 @@
|
|||
# $Header$
|
||||
.globl .lar4
|
||||
.sect .text; .sect .rom; .sect .data; .sect .bss; .sect .text
|
||||
.define .lar4
|
||||
|
||||
! $Header$
|
||||
|
||||
.lar4:
|
||||
movl (sp)+,r2
|
||||
|
@ -10,17 +12,17 @@
|
|||
addl2 (sp)+,r0
|
||||
addl2 r1,r0
|
||||
cmpl r1,$1
|
||||
bgtr L3
|
||||
bgtr I3
|
||||
movzbl -(r0),-(sp)
|
||||
jmp (r2)
|
||||
L3:
|
||||
I3:
|
||||
cmpl r1,$2
|
||||
bgtr L2
|
||||
bgtr I2
|
||||
movzwl -(r0),-(sp)
|
||||
jmp (r2)
|
||||
L2:
|
||||
I2:
|
||||
ashl $-2,r1,r1
|
||||
L1:
|
||||
I1:
|
||||
movl -(r0),-(sp)
|
||||
sobgtr r1,L1
|
||||
sobgtr r1,I1
|
||||
jmp (r2)
|
||||
|
|
|
@ -1,31 +1,32 @@
|
|||
#include "em_abs.h"
|
||||
.sect .text; .sect .rom; .sect .data; .sect .bss; .sect .text
|
||||
.define .los
|
||||
|
||||
# $Header$
|
||||
! $Header$
|
||||
|
||||
.globl .los
|
||||
|
||||
.los:
|
||||
movl (sp)+,r2
|
||||
cmpl r0,$4
|
||||
beql L1
|
||||
beql I1
|
||||
pushl $EILLINS
|
||||
jmp .fat
|
||||
L1:
|
||||
movl (sp)+,r0 # nbytes in r0
|
||||
movl (sp)+,r1 # address in r1
|
||||
I1:
|
||||
movl (sp)+,r0 ! nbytes in r0
|
||||
movl (sp)+,r1 ! address in r1
|
||||
cmpl r0,$1
|
||||
beql L2
|
||||
beql I2
|
||||
cmpl r0,$2
|
||||
beql L3
|
||||
beql I3
|
||||
addl2 r0,r1
|
||||
ashl $-2,r0,r0
|
||||
L4:
|
||||
I4:
|
||||
movl -(r1),-(sp)
|
||||
sobgtr r0,L4
|
||||
sobgtr r0,I4
|
||||
jmp (r2)
|
||||
L2:
|
||||
I2:
|
||||
cvtbl (r1),-(sp)
|
||||
jmp (r2)
|
||||
L3:
|
||||
I3:
|
||||
cvtwl (r1),-(sp)
|
||||
jmp (r2)
|
||||
|
|
|
@ -1,25 +1,27 @@
|
|||
# $Header$
|
||||
# special version to work with A68S, by CHL
|
||||
.globl .lpb
|
||||
# compute AB, given LB
|
||||
.sect .text; .sect .rom; .sect .data; .sect .bss; .sect .text
|
||||
.define .lpb
|
||||
|
||||
! $Header$
|
||||
! special version to work with A68S, by CHL
|
||||
! compute AB, given LB
|
||||
.lpb:
|
||||
cmpl r0,fp
|
||||
bneq L1
|
||||
bneq I1
|
||||
moval 4(ap),r0
|
||||
rsb
|
||||
L1:
|
||||
movl 4(r0),r1 # mask for saved registers
|
||||
addl2 $24,r0 # position of AB if no registers saved
|
||||
movl $16,r2 # position of first bit to test
|
||||
L2:
|
||||
subl3 r2,$28,r3 # remaining size of mask
|
||||
ffs r2,r3,r1,r2 # find first bit set in mask
|
||||
beql L3 # no more bits set
|
||||
addl2 $4,r0 # for each saved register
|
||||
I1:
|
||||
movl 4(r0),r1 ! mask for saved registers
|
||||
addl2 $24,r0 ! position of AB if no registers saved
|
||||
movl $16,r2 ! position of first bit to test
|
||||
I2:
|
||||
subl3 r2,$28,r3 ! remaining size of mask
|
||||
ffs r2,r3,r1,r2 ! find first bit set in mask
|
||||
beql I3 ! no more bits set
|
||||
addl2 $4,r0 ! for each saved register
|
||||
incl r2
|
||||
jbr L2
|
||||
L3:
|
||||
extzv $30,$2,r1,r2 # Now find out about the stack alignment
|
||||
# between fp and ap
|
||||
addl2 r2,r0 # add alignment
|
||||
jbr I2
|
||||
I3:
|
||||
extzv $30,$2,r1,r2 ! Now find out about the stack alignment
|
||||
! between fp and ap
|
||||
addl2 r2,r0 ! add alignment
|
||||
rsb
|
||||
|
|
|
@ -1,7 +1,9 @@
|
|||
# $Header$
|
||||
.globl .lxa
|
||||
.sect .text; .sect .rom; .sect .data; .sect .bss; .sect .text
|
||||
.define .lxa
|
||||
|
||||
! $Header$
|
||||
|
||||
.lxa:
|
||||
jsb .lxl # Find local base
|
||||
jsb .lpb # Convert to argument base
|
||||
jsb .lxl ! Find local base
|
||||
jsb .lpb ! Convert to argument base
|
||||
rsb
|
||||
|
|
|
@ -1,14 +1,16 @@
|
|||
# $Header$
|
||||
.globl .lxl
|
||||
.sect .text; .sect .rom; .sect .data; .sect .bss; .sect .text
|
||||
.define .lxl
|
||||
|
||||
# nlevels in r0 (>=2)
|
||||
! $Header$
|
||||
|
||||
! nlevels in r0 (>=2)
|
||||
.lxl:
|
||||
pushl r0
|
||||
decl (sp)
|
||||
movl 4(ap),r0
|
||||
L1:
|
||||
I1:
|
||||
jsb .lpb
|
||||
movl (r0),r0
|
||||
sobgtr (sp),L1
|
||||
sobgtr (sp),I1
|
||||
tstl (sp)+
|
||||
rsb
|
||||
|
|
|
@ -1,20 +1,21 @@
|
|||
#include "em_abs.h"
|
||||
.sect .text; .sect .rom; .sect .data; .sect .bss; .sect .text
|
||||
.define .mlf
|
||||
|
||||
# $Header$
|
||||
! $Header$
|
||||
|
||||
.globl .mlf
|
||||
|
||||
.mlf:
|
||||
movl (sp)+,r1
|
||||
cmpl r0,$4
|
||||
bneq L1
|
||||
bneq I1
|
||||
mulf2 (sp)+,(sp)
|
||||
jmp (r1)
|
||||
L1:
|
||||
I1:
|
||||
cmpl r0,$8
|
||||
bneq L2
|
||||
bneq I2
|
||||
muld2 (sp)+,(sp)
|
||||
jmp (r1)
|
||||
L2:
|
||||
I2:
|
||||
pushl $EILLINS
|
||||
jmp .fat
|
||||
|
|
|
@ -1,15 +1,16 @@
|
|||
#include "em_abs.h"
|
||||
.sect .text; .sect .rom; .sect .data; .sect .bss; .sect .text
|
||||
.define .mli
|
||||
|
||||
# $Header$
|
||||
! $Header$
|
||||
|
||||
.globl .mli
|
||||
|
||||
.mli:
|
||||
movl (sp)+,r1
|
||||
cmpl r0,$4
|
||||
bneq L1
|
||||
bneq I1
|
||||
mull2 (sp)+,(sp)
|
||||
jmp (r1)
|
||||
L1:
|
||||
I1:
|
||||
pushl $EILLINS
|
||||
jmp .fat
|
||||
|
|
|
@ -1,6 +1,8 @@
|
|||
# $Header$
|
||||
.sect .text; .sect .rom; .sect .data; .sect .bss; .sect .text
|
||||
.define .mon
|
||||
|
||||
! $Header$
|
||||
|
||||
.globl .mon
|
||||
|
||||
.mon:
|
||||
pushl $EBADMON
|
||||
|
|
|
@ -1,20 +1,21 @@
|
|||
#include "em_abs.h"
|
||||
.sect .text; .sect .rom; .sect .data; .sect .bss; .sect .text
|
||||
.define .ngf
|
||||
|
||||
# $Header$
|
||||
! $Header$
|
||||
|
||||
.globl .ngf
|
||||
|
||||
.ngf:
|
||||
movl (sp)+,r1
|
||||
cmpl r0,$4
|
||||
bneq L1
|
||||
bneq I1
|
||||
mnegf (sp),(sp)
|
||||
jmp (r1)
|
||||
L1:
|
||||
I1:
|
||||
cmpl r0,$8
|
||||
bneq L2
|
||||
bneq I2
|
||||
mnegd (sp),(sp)
|
||||
jmp (r1)
|
||||
L2:
|
||||
I2:
|
||||
pushl $EILLINS
|
||||
jmp .fat
|
||||
|
|
|
@ -1,15 +1,16 @@
|
|||
#include "em_abs.h"
|
||||
.sect .text; .sect .rom; .sect .data; .sect .bss; .sect .text
|
||||
.define .ngi
|
||||
|
||||
# $Header$
|
||||
! $Header$
|
||||
|
||||
.globl .ngi
|
||||
|
||||
.ngi:
|
||||
movl (sp)+,r1
|
||||
cmpl r0,$4
|
||||
bneq L1
|
||||
bneq I1
|
||||
mnegl (sp),(sp)
|
||||
jmp (r1)
|
||||
L1:
|
||||
I1:
|
||||
pushl $EILLINS
|
||||
jmp .fat
|
||||
|
|
|
@ -1,8 +1,9 @@
|
|||
#include "em_abs.h"
|
||||
.sect .text; .sect .rom; .sect .data; .sect .bss; .sect .text
|
||||
.define .nop
|
||||
|
||||
# $Header$
|
||||
! $Header$
|
||||
|
||||
.globl .nop
|
||||
|
||||
.nop:
|
||||
movl hol0+LINO_AD,r0
|
||||
|
|
|
@ -1,29 +1,33 @@
|
|||
# $Header$
|
||||
.globl printd
|
||||
.globl printc
|
||||
.sect .text; .sect .rom; .sect .data; .sect .bss; .sect .text
|
||||
.define printd
|
||||
.define printc
|
||||
|
||||
! $Header$
|
||||
|
||||
printd:
|
||||
clrl r1
|
||||
ediv $10,r0,r0,r1
|
||||
beql L1
|
||||
beql I1
|
||||
pushl r1
|
||||
jsb printd
|
||||
movl (sp)+,r1
|
||||
L1:
|
||||
addb3 $'0,r1,r0
|
||||
I1:
|
||||
addb3 $'0',r1,r0
|
||||
|
||||
printc:
|
||||
movb r0,Lch
|
||||
movb r0,Ich
|
||||
movl ap,r2
|
||||
movl $L9,ap
|
||||
movl $I9,ap
|
||||
chmk $4
|
||||
movl r2,ap
|
||||
rsb
|
||||
|
||||
.data
|
||||
L9:
|
||||
.long 3
|
||||
.long 2
|
||||
.long Lch
|
||||
.long 1
|
||||
Lch: .word 0
|
||||
.sect .rom
|
||||
I9:
|
||||
.data4 3
|
||||
.data4 2
|
||||
.data4 Ich
|
||||
.data4 1
|
||||
|
||||
.sect .data
|
||||
Ich: .data2 0
|
||||
|
|
|
@ -1,13 +1,14 @@
|
|||
#include "em_abs.h"
|
||||
.sect .text; .sect .rom; .sect .data; .sect .bss; .sect .text
|
||||
.define .rck
|
||||
|
||||
# $Header$
|
||||
! $Header$
|
||||
|
||||
.globl .rck
|
||||
|
||||
.rck:
|
||||
cmpl r0,$4
|
||||
bneq Lerr
|
||||
bneq Ierr
|
||||
jmp .rck4
|
||||
Lerr:
|
||||
Ierr:
|
||||
pushl $EILLINS
|
||||
jmp .fat
|
||||
|
|
|
@ -1,18 +1,19 @@
|
|||
#include "em_abs.h"
|
||||
.sect .text; .sect .rom; .sect .data; .sect .bss; .sect .text
|
||||
.define .rck4
|
||||
|
||||
# $Header$
|
||||
! $Header$
|
||||
|
||||
.globl .rck4
|
||||
|
||||
.rck4:
|
||||
movl (sp)+,r1
|
||||
movl (sp)+,r0
|
||||
cmpl (sp),(r0) # compare lower bound
|
||||
blss Lerr
|
||||
cmpl (sp),4(r0) # compare upper bound
|
||||
bgtr Lerr
|
||||
cmpl (sp),(r0) ! compare lower bound
|
||||
blss Ierr
|
||||
cmpl (sp),4(r0) ! compare upper bound
|
||||
bgtr Ierr
|
||||
jmp (r1)
|
||||
Lerr:
|
||||
Ierr:
|
||||
pushl r1
|
||||
pushl $ERANGE
|
||||
jsb .trp
|
||||
|
|
|
@ -1,19 +1,20 @@
|
|||
#include "em_abs.h"
|
||||
.sect .text; .sect .rom; .sect .data; .sect .bss; .sect .text
|
||||
.define .rmi
|
||||
|
||||
# $Header$
|
||||
! $Header$
|
||||
|
||||
.globl .rmi
|
||||
|
||||
.rmi:
|
||||
movl (sp)+,r3
|
||||
cmpl r0,$4
|
||||
bneq L1
|
||||
bneq I1
|
||||
movl (sp)+,r2
|
||||
movl (sp)+,r1
|
||||
ashq $-32,r0,r0
|
||||
ediv r2,r0,r1,r0
|
||||
pushl r0
|
||||
jmp (r3)
|
||||
L1:
|
||||
I1:
|
||||
pushl $EILLINS
|
||||
jmp .fat
|
||||
|
|
|
@ -1,15 +1,16 @@
|
|||
#include "em_abs.h"
|
||||
.sect .text; .sect .rom; .sect .data; .sect .bss; .sect .text
|
||||
.define .rmu
|
||||
|
||||
# $Header$
|
||||
! $Header$
|
||||
|
||||
.globl .rmu
|
||||
|
||||
.rmu:
|
||||
cmpl r0,$4
|
||||
bneq Lerr
|
||||
bneq Ierr
|
||||
jsb .rmu4
|
||||
pushl r0
|
||||
rsb
|
||||
Lerr:
|
||||
Ierr:
|
||||
pushl $EILLINS
|
||||
jmp .fat
|
||||
|
|
|
@ -1,18 +1,20 @@
|
|||
# $Header$
|
||||
.globl .rmu4
|
||||
.sect .text; .sect .rom; .sect .data; .sect .bss; .sect .text
|
||||
.define .rmu4
|
||||
|
||||
! $Header$
|
||||
|
||||
.rmu4:
|
||||
movl (sp)+,r3
|
||||
movl (sp)+,r2
|
||||
blss L1
|
||||
blss I1
|
||||
movl (sp)+,r0
|
||||
clrl r1
|
||||
ediv r2,r0,r1,r0
|
||||
jmp (r3)
|
||||
L1:
|
||||
I1:
|
||||
movl (sp)+,r0
|
||||
cmpl r0,r2
|
||||
blssu L2
|
||||
blssu I2
|
||||
subl2 r2,r0
|
||||
L2:
|
||||
I2:
|
||||
jmp (r3)
|
||||
|
|
|
@ -1,16 +1,17 @@
|
|||
#include "em_abs.h"
|
||||
.sect .text; .sect .rom; .sect .data; .sect .bss; .sect .text
|
||||
.define .rol
|
||||
|
||||
# $Header$
|
||||
! $Header$
|
||||
|
||||
.globl .rol
|
||||
|
||||
.rol:
|
||||
movl (sp)+,r1
|
||||
cmpl r0,$4
|
||||
bneq Lerr
|
||||
bneq Ierr
|
||||
movl (sp)+,r0
|
||||
rotl r0,(sp),(sp)
|
||||
jmp (r1)
|
||||
Lerr:
|
||||
Ierr:
|
||||
pushl $EILLINS
|
||||
jmp .fat
|
||||
|
|
|
@ -1,16 +1,17 @@
|
|||
#include "em_abs.h"
|
||||
.sect .text; .sect .rom; .sect .data; .sect .bss; .sect .text
|
||||
.define .ror
|
||||
|
||||
# $Header$
|
||||
! $Header$
|
||||
|
||||
.globl .ror
|
||||
|
||||
.ror:
|
||||
movl (sp)+,r1
|
||||
cmpl r0,$4
|
||||
bneq Lerr
|
||||
bneq Ierr
|
||||
subl3 (sp)+,$32,r0
|
||||
rotl r0,(sp),(sp)
|
||||
jmp (r1)
|
||||
Lerr:
|
||||
Ierr:
|
||||
pushl $EILLINS
|
||||
jmp .fat
|
||||
|
|
|
@ -1,5 +1,7 @@
|
|||
# $Header$
|
||||
.globl .sar4
|
||||
.sect .text; .sect .rom; .sect .data; .sect .bss; .sect .text
|
||||
.define .sar4
|
||||
|
||||
! $Header$
|
||||
|
||||
.sar4:
|
||||
movl (sp)+,r2
|
||||
|
@ -10,17 +12,17 @@
|
|||
mull2 r1,r0
|
||||
addl2 (sp)+,r0
|
||||
cmpl r1,$1
|
||||
bgtr L3
|
||||
bgtr I3
|
||||
cvtlb (sp)+,(r0)
|
||||
jmp (r2)
|
||||
L3:
|
||||
I3:
|
||||
cmpl r1,$2
|
||||
bgtr L2
|
||||
bgtr I2
|
||||
cvtlw (sp)+,(r0)
|
||||
jmp (r2)
|
||||
L2:
|
||||
I2:
|
||||
ashl $-2,r1,r1
|
||||
L1:
|
||||
I1:
|
||||
movl (sp)+,(r0)+
|
||||
sobgtr r1,L1
|
||||
sobgtr r1,I1
|
||||
jmp (r2)
|
||||
|
|
|
@ -1,20 +1,21 @@
|
|||
#include "em_abs.h"
|
||||
.sect .text; .sect .rom; .sect .data; .sect .bss; .sect .text
|
||||
.define .sbf
|
||||
|
||||
# $Header$
|
||||
! $Header$
|
||||
|
||||
.globl .sbf
|
||||
|
||||
.sbf:
|
||||
movl (sp)+,r1
|
||||
cmpl r0,$4
|
||||
bneq L1
|
||||
bneq I1
|
||||
subf2 (sp)+,(sp)
|
||||
jmp (r1)
|
||||
L1:
|
||||
I1:
|
||||
cmpl r0,$8
|
||||
bneq L2
|
||||
bneq I2
|
||||
subd2 (sp)+,(sp)
|
||||
jmp (r1)
|
||||
L2:
|
||||
I2:
|
||||
pushl $EILLINS
|
||||
jmp .fat
|
||||
|
|
|
@ -1,15 +1,16 @@
|
|||
#include "em_abs.h"
|
||||
.sect .text; .sect .rom; .sect .data; .sect .bss; .sect .text
|
||||
.define .sbi
|
||||
|
||||
# $Header$
|
||||
! $Header$
|
||||
|
||||
.globl .sbi
|
||||
|
||||
.sbi:
|
||||
movl (sp)+,r1
|
||||
cmpl r0,$4
|
||||
bneq L1
|
||||
bneq I1
|
||||
subl2 (sp)+,(sp)
|
||||
jmp (r1)
|
||||
L1:
|
||||
I1:
|
||||
pushl $EILLINS
|
||||
jmp .fat
|
||||
|
|
|
@ -1,5 +1,7 @@
|
|||
# $Header$
|
||||
.globl .sbs
|
||||
.sect .text; .sect .rom; .sect .data; .sect .bss; .sect .text
|
||||
.define .sbs
|
||||
|
||||
! $Header$
|
||||
|
||||
.sbs:
|
||||
movl (sp)+,r1
|
||||
|
|
|
@ -1,25 +1,26 @@
|
|||
#include "em_abs.h"
|
||||
.sect .text; .sect .rom; .sect .data; .sect .bss; .sect .text
|
||||
.define .setx
|
||||
|
||||
# $Header$
|
||||
! $Header$
|
||||
|
||||
.globl .setx
|
||||
|
||||
# bytes in r0
|
||||
! bytes in r0
|
||||
.setx:
|
||||
movl (sp)+,r3
|
||||
movl (sp)+,r1 # bitnumber in r1
|
||||
movl (sp)+,r1 ! bitnumber in r1
|
||||
subl3 r0,sp,r2
|
||||
L1:
|
||||
I1:
|
||||
clrl -(sp)
|
||||
cmpl sp,r2
|
||||
bgtru L1
|
||||
ashl $3,r0,r2 # number of bits in r2
|
||||
bgtru I1
|
||||
ashl $3,r0,r2 ! number of bits in r2
|
||||
cmpl r1,r2
|
||||
bgequ L2
|
||||
bbcs r1,(sp),L3
|
||||
L3:
|
||||
bgequ I2
|
||||
bbcs r1,(sp),I3
|
||||
I3:
|
||||
jmp (r3)
|
||||
L2:
|
||||
I2:
|
||||
pushl $ESET
|
||||
jsb .trp
|
||||
jmp (r3)
|
||||
|
|
|
@ -1,5 +1,7 @@
|
|||
# $Header$
|
||||
.globl .sig
|
||||
.sect .text; .sect .rom; .sect .data; .sect .bss; .sect .text
|
||||
.define .sig
|
||||
|
||||
! $Header$
|
||||
|
||||
.sig:
|
||||
movl (sp)+,r1
|
||||
|
|
|
@ -1,12 +1,14 @@
|
|||
# $Header$
|
||||
.globl .sim
|
||||
.sect .text; .sect .rom; .sect .data; .sect .bss; .sect .text
|
||||
.define .sim
|
||||
|
||||
! $Header$
|
||||
|
||||
.sim:
|
||||
movl (sp)+,r0
|
||||
movl (sp)+,.trpim # store ignore mask
|
||||
bbc $5,.trpim,L3 # floating underflow to be ignored?
|
||||
movl (sp)+,.trpim ! store ignore mask
|
||||
bbc $5,.trpim,I3 ! floating underflow to be ignored?
|
||||
bicpsw $0100
|
||||
jmp (r0)
|
||||
L3:
|
||||
bispsw $0100 # enable underflow trap
|
||||
I3:
|
||||
bispsw $0100 ! enable underflow trap
|
||||
jmp (r0)
|
||||
|
|
|
@ -1,17 +1,18 @@
|
|||
#include "em_abs.h"
|
||||
.sect .text; .sect .rom; .sect .data; .sect .bss; .sect .text
|
||||
.define .sli
|
||||
|
||||
# $Header$
|
||||
! $Header$
|
||||
|
||||
.globl .sli
|
||||
|
||||
.sli:
|
||||
movl (sp)+,r2
|
||||
cmpl r0,$4
|
||||
bneq L1
|
||||
bneq I1
|
||||
movl (sp)+,r0
|
||||
movl (sp)+,r1
|
||||
ashl r0,r1,-(sp)
|
||||
jmp (r2)
|
||||
L1:
|
||||
I1:
|
||||
pushl $EILLINS
|
||||
jmp .fat
|
||||
|
|
|
@ -1,18 +1,19 @@
|
|||
#include "em_abs.h"
|
||||
.sect .text; .sect .rom; .sect .data; .sect .bss; .sect .text
|
||||
.define .sri
|
||||
|
||||
# $Header$
|
||||
! $Header$
|
||||
|
||||
.globl .sri
|
||||
|
||||
.sri:
|
||||
movl (sp)+,r2
|
||||
cmpl r0,$4
|
||||
bneq L1
|
||||
bneq I1
|
||||
movl (sp)+,r0
|
||||
mnegl r0,r0
|
||||
movl (sp)+,r1
|
||||
ashl r0,r1,-(sp)
|
||||
jmp (r2)
|
||||
L1:
|
||||
I1:
|
||||
pushl $EILLINS
|
||||
jmp .fat
|
||||
|
|
|
@ -1,8 +1,9 @@
|
|||
#include "em_abs.h"
|
||||
.sect .text; .sect .rom; .sect .data; .sect .bss; .sect .text
|
||||
.define .sru
|
||||
|
||||
# $Header$
|
||||
! $Header$
|
||||
|
||||
.globl .sru
|
||||
|
||||
.sru:
|
||||
movl (sp)+,r3
|
||||
|
|
|
@ -1,8 +1,9 @@
|
|||
#include "em_abs.h"
|
||||
.sect .text; .sect .rom; .sect .data; .sect .bss; .sect .text
|
||||
.define .strhp
|
||||
|
||||
# $Header$
|
||||
! $Header$
|
||||
|
||||
.globl .strhp
|
||||
|
||||
.strhp:
|
||||
movl (sp)+,r1
|
||||
|
@ -10,23 +11,23 @@
|
|||
pushl r1
|
||||
movl r0,.reghp
|
||||
cmpl r0,.hplim
|
||||
blssu L2
|
||||
blssu I2
|
||||
addl2 $02000,r0
|
||||
bicl2 $0777,r0
|
||||
movl r0,.hplim
|
||||
movl ap,r1
|
||||
movl $L9,ap
|
||||
movl $I9,ap
|
||||
chmk (ap)+
|
||||
bcc L1
|
||||
bcc I1
|
||||
pushl $EHEAP
|
||||
jsb .trp
|
||||
rsb
|
||||
L1:
|
||||
I1:
|
||||
movl r1,ap
|
||||
L2:
|
||||
I2:
|
||||
rsb
|
||||
|
||||
.data
|
||||
L9: .word 17
|
||||
.long 1
|
||||
.hplim: .long _end
|
||||
.sect .data
|
||||
I9: .data2 17
|
||||
.data4 1
|
||||
.hplim: .data4 _end
|
||||
|
|
|
@ -1,27 +1,29 @@
|
|||
# $Header$
|
||||
# revised version by CHL
|
||||
.globl .strlb
|
||||
# Store the value that is on the stack in fp.
|
||||
# Compute ap.
|
||||
.sect .text; .sect .rom; .sect .data; .sect .bss; .sect .text
|
||||
.define .strlb
|
||||
|
||||
! $Header$
|
||||
! revised version by CHL
|
||||
! Store the value that is on the stack in fp.
|
||||
! Compute ap.
|
||||
.strlb:
|
||||
movl (sp)+,r3
|
||||
movl (sp)+,fp
|
||||
pushl r3
|
||||
movl $20,ap # Compute argumentbase from local base.
|
||||
# Distance is 5 longwords + the number of
|
||||
# registers saved.
|
||||
movl 4(fp),r3 # mask for saved registers
|
||||
movl $16,r2 # position of first bit to test
|
||||
L4:
|
||||
subl3 r2,$28,r1 # remaining size of mask
|
||||
ffs r2,r1,r3,r2 # find first bit set in mask
|
||||
beql L5 # no more bits set
|
||||
addl2 $4,ap # for each saved register
|
||||
movl $20,ap ! Compute argumentbase from local base.
|
||||
! Distance is 5 longwords + the number of
|
||||
! registers saved.
|
||||
movl 4(fp),r3 ! mask for saved registers
|
||||
movl $16,r2 ! position of first bit to test
|
||||
I4:
|
||||
subl3 r2,$28,r1 ! remaining size of mask
|
||||
ffs r2,r1,r3,r2 ! find first bit set in mask
|
||||
beql I5 ! no more bits set
|
||||
addl2 $4,ap ! for each saved register
|
||||
incl r2
|
||||
jbr L4
|
||||
L5:
|
||||
extzv $14,$2,6(fp),r3 # Now find out about the stack alignment
|
||||
# between fp and ap
|
||||
addl2 r3,ap # add alignment
|
||||
jbr I4
|
||||
I5:
|
||||
extzv $14,$2,6(fp),r3 ! Now find out about the stack alignment
|
||||
! between fp and ap
|
||||
addl2 r3,ap ! add alignment
|
||||
addl2 fp,ap
|
||||
rsb
|
||||
|
|
|
@ -1,32 +1,33 @@
|
|||
#include "em_abs.h"
|
||||
.sect .text; .sect .rom; .sect .data; .sect .bss; .sect .text
|
||||
.define .sts
|
||||
|
||||
# $Header$
|
||||
! $Header$
|
||||
|
||||
.globl .sts
|
||||
|
||||
.sts:
|
||||
movl (sp)+,r2
|
||||
cmpl r0,$4
|
||||
beql L1
|
||||
beql I1
|
||||
pushl $EILLINS
|
||||
jmp .fat
|
||||
L1:
|
||||
movl (sp)+,r0 # number of bytes in r0
|
||||
movl (sp)+,r1 # address in r1
|
||||
I1:
|
||||
movl (sp)+,r0 ! number of bytes in r0
|
||||
movl (sp)+,r1 ! address in r1
|
||||
cmpl r0,$1
|
||||
beql L3
|
||||
beql I3
|
||||
cmpl r0,$2
|
||||
beql L4
|
||||
beql I4
|
||||
ashl $-2,r0,r0
|
||||
L2:
|
||||
I2:
|
||||
movl (sp)+,(r1)+
|
||||
sobgtr r0,L2
|
||||
sobgtr r0,I2
|
||||
jmp (r2)
|
||||
L3:
|
||||
I3:
|
||||
movl (sp)+,r0
|
||||
movb r0,(r1)
|
||||
jmp (r2)
|
||||
L4:
|
||||
I4:
|
||||
movl (sp)+,r0
|
||||
movw r0,(r1)
|
||||
jmp (r2)
|
||||
|
|
|
@ -1,5 +1,6 @@
|
|||
# $Header$
|
||||
.globl .trp
|
||||
.sect .text; .sect .rom; .sect .data; .sect .bss; .sect .text
|
||||
.define .trp
|
||||
! $Header$
|
||||
|
||||
.trp:
|
||||
pushl r0
|
||||
|
@ -7,46 +8,44 @@
|
|||
movl 4(sp),8(sp)
|
||||
movl (sp)+,(sp)
|
||||
cmpl r0,$16
|
||||
bgequ L1 # a trapnumber >= 16 cannot be ignored
|
||||
bbc r0,.trpim,L1
|
||||
bgequ I1 ! a trapnumber >= 16 cannot be ignored
|
||||
bbc r0,.trpim,I1
|
||||
movl (sp)+,r0
|
||||
rsb
|
||||
L1:
|
||||
pushr $017776 # save registers
|
||||
pushl r0 # trapnumber on stack
|
||||
I1:
|
||||
pushr $017776 ! save registers
|
||||
pushl r0 ! trapnumber on stack
|
||||
movl .trppc,r0
|
||||
beql L2 # is there a user defined traphandler?
|
||||
beql I2 ! is there a user defined traphandler?
|
||||
clrl .trppc
|
||||
calls $1,(r0) # if so, call it
|
||||
popr $017776 # restore registers
|
||||
calls $1,(r0) ! if so, call it
|
||||
popr $017776 ! restore registers
|
||||
movl (sp)+,r0
|
||||
rsb
|
||||
|
||||
.set write,4
|
||||
I2:
|
||||
! Put the (octal) trapnumber in the zeroes in Iemes[].
|
||||
|
||||
L2:
|
||||
# Put the (octal) trapnumber in the zeroes in Lemes[].
|
||||
|
||||
movl $Lemesend-9,r1 # Addres after last '0'.
|
||||
movl $5,r2 # Max number of digits.
|
||||
movl (sp),r0 # Trap number in r0.
|
||||
L3:
|
||||
bicw3 $0177770,r0,r3 # Lower 3 bits form lower octal digit.
|
||||
bisb2 r3,-(r1) # Put them in the '0'.
|
||||
ashl $-3,r0,r0 # Shift the 3 bits off.
|
||||
sobgtr r2,L3
|
||||
movl $Iemesend-9,r1 ! Addres after last '0'.
|
||||
movl $5,r2 ! Max number of digits.
|
||||
movl (sp),r0 ! Trap number in r0.
|
||||
I3:
|
||||
bicw3 $0177770,r0,r3 ! Lower 3 bits form lower octal digit.
|
||||
bisb2 r3,-(r1) ! Put them in the '0'.
|
||||
ashl $-3,r0,r0 ! Shift the 3 bits off.
|
||||
sobgtr r2,I3
|
||||
movl ap,r2
|
||||
movl $Lwr,ap
|
||||
chmk $write
|
||||
movl $Iwr,ap
|
||||
chmk $4 ! write
|
||||
movl r2,ap
|
||||
bpt
|
||||
.data
|
||||
Lemes:
|
||||
.byte 'E,'M,' ,'t,'r,'a,'p,' ,'0,'0,'0,'0,'0,' ,'(,'o,'c,'t,'a,'l,'),0xa
|
||||
Lemesend:
|
||||
.sect .data
|
||||
Iemes:
|
||||
.data1 'E','M',' ','t','r','a','p',' ','0','0','0','0','0',' ','(','o','c','t','a','l',')',0xa
|
||||
Iemesend:
|
||||
.align 2
|
||||
Lwr:
|
||||
.long 3 # 3 arguments.
|
||||
.long 2 # File descriptor 2.
|
||||
.long Lemes # Address of character buffer.
|
||||
.long Lemesend - Lemes # Number of characters to write.
|
||||
Iwr:
|
||||
.data4 3 ! 3 arguments.
|
||||
.data4 2 ! File descriptor 2.
|
||||
.data4 Iemes ! Address of character buffer.
|
||||
.data4 Iemesend - Iemes ! Number of characters to write.
|
||||
|
|
|
@ -1,13 +1,15 @@
|
|||
.globl hol0
|
||||
.globl .reghp
|
||||
.globl .trppc
|
||||
.globl .trpim
|
||||
.sect .text; .sect .rom; .sect .data; .sect .bss
|
||||
.sect .data
|
||||
.define hol0
|
||||
.define .reghp
|
||||
.define .trppc
|
||||
.define .trpim
|
||||
|
||||
hol0:
|
||||
.space 8
|
||||
.trppc:
|
||||
.space 4
|
||||
.trpim:
|
||||
.long 0
|
||||
.data4 0
|
||||
.reghp:
|
||||
.long _end
|
||||
.data4 _end
|
||||
|
|
|
@ -1,28 +1,27 @@
|
|||
#include "em_abs.h"
|
||||
.sect .text; .sect .rom; .sect .data; .sect .bss; .sect .text
|
||||
.define .lar
|
||||
.define .sar
|
||||
.define .aar
|
||||
|
||||
# $Header$
|
||||
! $Header$
|
||||
|
||||
.globl .lar
|
||||
|
||||
.lar:
|
||||
cmpl r0,$4
|
||||
bneq Lillins
|
||||
bneq Iillins
|
||||
jmp .lar4
|
||||
|
||||
.globl .sar
|
||||
|
||||
.sar:
|
||||
cmpl r0,$4
|
||||
bneq Lillins
|
||||
bneq Iillins
|
||||
jmp .sar4
|
||||
|
||||
.globl .aar
|
||||
|
||||
.aar:
|
||||
cmpl r0,$4
|
||||
bneq Lillins
|
||||
bneq Iillins
|
||||
jmp .aar4
|
||||
|
||||
Lillins:
|
||||
Iillins:
|
||||
pushl $EILLINS
|
||||
jmp .fat
|
||||
|
|
|
@ -1,12 +1,14 @@
|
|||
# $Header$
|
||||
.globl .xor
|
||||
.sect .text; .sect .rom; .sect .data; .sect .bss; .sect .text
|
||||
.define .xor
|
||||
|
||||
# bytes in r0
|
||||
! $Header$
|
||||
|
||||
! bytes in r0
|
||||
.xor:
|
||||
movl (sp)+,r2
|
||||
addl3 r0,sp,r1
|
||||
ashl $-2,r0,r0
|
||||
L1:
|
||||
I1:
|
||||
xorl2 (sp)+,(r1)+
|
||||
sobgtr r0,L1
|
||||
sobgtr r0,I1
|
||||
jmp (r2)
|
||||
|
|
Loading…
Reference in a new issue