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…
	
	Add table
		
		Reference in a new issue