36 lines
		
	
	
	
		
			676 B
		
	
	
	
		
			ArmAsm
		
	
	
	
	
	
			
		
		
	
	
			36 lines
		
	
	
	
		
			676 B
		
	
	
	
		
			ArmAsm
		
	
	
	
	
	
| .define Aar
 | |
| .sect .text
 | |
| .sect .rom
 | |
| .sect .data
 | |
| .sect .bss
 | |
| .sect .text
 | |
| 
 | |
| ! This subroutine gets the address of the array element
 | |
| 
 | |
| 
 | |
| Aar:
 | |
| 	stx ADDR	! address of descriptor (lowbyte)
 | |
| 	sta ADDR+1	! address of descriptor (highbyte)
 | |
| 	ldy #0
 | |
| 	lda (ADDR),y	! lowerbound (lowbyte)
 | |
| 	tax
 | |
| 	iny
 | |
| 	lda (ADDR),y	! lowerbound (highbyte)
 | |
| 	jsr Sbi2	! index - lowerbound
 | |
| 	jsr Push
 | |
|     2:	ldy #4
 | |
| 	lda (ADDR),y	! objectsize (lowbyte)
 | |
| 	sta NBYTES
 | |
| 	tax
 | |
| 	iny
 | |
| 	lda (ADDR),y	! objectsize (highbyte)
 | |
| 	sta NBYTES+1
 | |
| 	bne 5f
 | |
| 	cpx #1		! objectsize = 1 then return 
 | |
| 	bne 5f		! arrayaddress + index
 | |
| 	jsr Pop
 | |
| 	jmp Adi2
 | |
|     5:	jsr Mli2	! objectsize > 1 then return 
 | |
| 	jmp Adi2	! arrayaddress + index * objectsize
 | |
| 
 | |
| 
 |