42 lines
		
	
	
	
		
			523 B
		
	
	
	
		
			ArmAsm
		
	
	
	
	
	
			
		
		
	
	
			42 lines
		
	
	
	
		
			523 B
		
	
	
	
		
			ArmAsm
		
	
	
	
	
	
| .sect .text; .sect .rom; .sect .data; .sect .bss
 | |
| .define .error
 | |
| .define .Xtrp
 | |
| 
 | |
| 	! ax is trap number
 | |
| 	! all registers must be saved
 | |
| 	! because return is possible
 | |
| 	! May only be called with error no's <16
 | |
| .sect .text
 | |
| .error:
 | |
| 	push bp
 | |
| 	push si
 | |
| 	push di
 | |
| 	push dx
 | |
| 	push cx
 | |
| 	push bx
 | |
| 	push ax
 | |
| 	mov  cx,ax
 | |
| 	mov  bx,1
 | |
| 	sal  bx,cl
 | |
| .extern .ignmask
 | |
| .extern .trp
 | |
| 	test bx,(.ignmask)
 | |
| 	jne  2f
 | |
| 	call    .trp
 | |
| 2:
 | |
| 	pop  ax
 | |
| 	pop  bx
 | |
| 	pop  cx
 | |
| 	pop  dx
 | |
| 	pop  di
 | |
| 	pop  si
 | |
| 	pop  bp
 | |
| 	ret
 | |
| 
 | |
| .Xtrp:
 | |
| 	cmp	ax,16
 | |
| 	jge	1f
 | |
| 	call	.error
 | |
| 	ret
 | |
| 1:
 | |
| 	jmp	.trp
 |