Makefile
compmodule
libem_s.a
+end.s
# $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
+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
- # $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
#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
#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
- # $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)
#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
#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
#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
#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
#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
#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
#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
- # $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)
#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
#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
- # $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)
#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
- # $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)
#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)
#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
#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
#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
#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
#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
#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
#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
#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
#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
#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)
--- /dev/null
+.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:
- # $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)
- # $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
#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
#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
- # $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
- # $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
- # $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)
- # $Header$
-.globl .lar4
+.sect .text; .sect .rom; .sect .data; .sect .bss; .sect .text
+.define .lar4
+
+ ! $Header$
.lar4:
movl (sp)+,r2
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)
#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)
- # $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
- # $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
- # $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
#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
#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
- # $Header$
+.sect .text; .sect .rom; .sect .data; .sect .bss; .sect .text
+.define .mon
+
+ ! $Header$
-.globl .mon
.mon:
pushl $EBADMON
#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
#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
#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
- # $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
#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
#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
#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
#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
- # $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)
#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
#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
- # $Header$
-.globl .sar4
+.sect .text; .sect .rom; .sect .data; .sect .bss; .sect .text
+.define .sar4
+
+ ! $Header$
.sar4:
movl (sp)+,r2
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)
#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
#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
- # $Header$
-.globl .sbs
+.sect .text; .sect .rom; .sect .data; .sect .bss; .sect .text
+.define .sbs
+
+ ! $Header$
.sbs:
movl (sp)+,r1
#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)
- # $Header$
-.globl .sig
+.sect .text; .sect .rom; .sect .data; .sect .bss; .sect .text
+.define .sig
+
+ ! $Header$
.sig:
movl (sp)+,r1
- # $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)
#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
#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
#include "em_abs.h"
+.sect .text; .sect .rom; .sect .data; .sect .bss; .sect .text
+.define .sru
- # $Header$
+ ! $Header$
-.globl .sru
.sru:
movl (sp)+,r3
#include "em_abs.h"
+.sect .text; .sect .rom; .sect .data; .sect .bss; .sect .text
+.define .strhp
- # $Header$
+ ! $Header$
-.globl .strhp
.strhp:
movl (sp)+,r1
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
- # $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
#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)
- # $Header$
-.globl .trp
+.sect .text; .sect .rom; .sect .data; .sect .bss; .sect .text
+.define .trp
+ ! $Header$
.trp:
pushl r0
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.
-.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
#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
- # $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)