30 lines
		
	
	
	
		
			493 B
		
	
	
	
		
			ArmAsm
		
	
	
	
	
	
			
		
		
	
	
			30 lines
		
	
	
	
		
			493 B
		
	
	
	
		
			ArmAsm
		
	
	
	
	
	
| .sect .text; .sect .rom; .sect .data; .sect .bss
 | |
| .define .csa4
 | |
| 
 | |
| .sect .text
 | |
| .csa4:
 | |
| 				! bx, descriptor address
 | |
| 				! ax, dx: index
 | |
| 	mov	cx,(bx)         ! default
 | |
| 	sub     ax,2(bx)
 | |
| 				! ignore high order word; if non-zero, the
 | |
| 				! case descriptor would not fit anyway
 | |
| 	cmp	ax,6(bx)
 | |
| 	ja	1f
 | |
| 2:
 | |
| 	sal     ax,1
 | |
| 	add	bx,ax
 | |
| 	mov     bx,10(bx)
 | |
| 	test    bx,bx
 | |
| 	jnz     2f
 | |
| 1:
 | |
| 	mov	bx,cx
 | |
| 	test    bx,bx
 | |
| 	jnz     2f
 | |
| .extern ECASE
 | |
| .extern .fat
 | |
| 	mov     ax,ECASE
 | |
| 	push    ax
 | |
| 	jmp     .fat
 | |
| 2:
 | |
| 	jmp     bx
 |