57 lines
		
	
	
	
		
			707 B
		
	
	
	
		
			ArmAsm
		
	
	
	
	
	
			
		
		
	
	
			57 lines
		
	
	
	
		
			707 B
		
	
	
	
		
			ArmAsm
		
	
	
	
	
	
| .define _signal
 | |
| .sect .text
 | |
| .sect .rom
 | |
| .sect .data
 | |
| .sect .bss
 | |
| .sect .text
 | |
| .extern _signal
 | |
| NSIG=32
 | |
| _signal:
 | |
| 	move.l	4(sp), d0
 | |
| 	cmp.l	#NSIG,d0
 | |
| 	bcc	1f
 | |
| 	move.l	8(sp),d1
 | |
| 	move.l	d0,a0
 | |
| 	add.l	a0,a0
 | |
| 	add.l	a0,a0
 | |
| 	add.l	#dvect,a0
 | |
| 	move.l	(a0),a1
 | |
| 	move.l	d1,(a0)
 | |
| 	beq	2f
 | |
| 	btst	#0,d1
 | |
| 	bne	2f
 | |
| 	move.l	#enter,d1
 | |
| 2:
 | |
| 	move.l	d1,-(sp)
 | |
| 	move.l	d0,-(sp)
 | |
| 	clr.l	-(sp)
 | |
| 	trap #0
 | |
| .data2 	48
 | |
| 	add.l	#12,sp
 | |
| 	bcs	3f
 | |
| 	btst	#0,d0
 | |
| 	bne	4f
 | |
| 	move.l	a1,d0
 | |
| 4:
 | |
| 	clr.l	d1
 | |
| 	rts
 | |
| 1:
 | |
| 	move.l	#22,d0
 | |
| 3:
 | |
| 	jmp	cerror
 | |
| 
 | |
| enter:
 | |
| 	movem.l	d0/d1/a0/a1,-(sp)
 | |
| 	move.l	16(sp),a0
 | |
| 	move.l	a0,-(sp)
 | |
| 	add.l	a0,a0
 | |
| 	add.l	a0,a0
 | |
| 	add.l	#dvect,a0
 | |
| 	move.l	(a0),a0
 | |
| 	jsr	(a0)
 | |
| 	add.l	#4,sp
 | |
| 	movem.l	(sp)+,d0/d1/a0/a1
 | |
| 	add.l	#4,sp
 | |
| 	rtr
 | |
| .sect .bss
 | |
| dvect: .space 4*NSIG
 |