88 lines
		
	
	
	
		
			1 KiB
		
	
	
	
		
			ArmAsm
		
	
	
	
	
	
			
		
		
	
	
			88 lines
		
	
	
	
		
			1 KiB
		
	
	
	
		
			ArmAsm
		
	
	
	
	
	
| .define EARRAY,ERANGE,EILLINS,EILLSIZE,ECASE,EMON,EHEAP
 | |
| .define hol0,trapproc,trpim,argv,hp,.reghp,envp,begbss,ignmask
 | |
| .define savebc,savede,savehl,saveix,saveaf,saveiy,ebadmon
 | |
| .define WRITE,EXIT
 | |
| .sect .text
 | |
| .sect .rom
 | |
| .sect .data
 | |
| .sect .bss
 | |
| .sect .text
 | |
|    EARRAY = 0
 | |
|    ERANGE = 1
 | |
|    EHEAP = 17
 | |
|    EILLINS=18
 | |
|    EILLSIZE=19
 | |
|    ECASE=20
 | |
|    EMON=25
 | |
|    ebadmon=25
 | |
| 
 | |
| 
 | |
| .sect .text
 | |
| 
 | |
| 				! clear .sect .bss
 | |
| 	ld sp,0x7ffe		!address of fbase
 | |
| 	ld de,endbss
 | |
| 	ld h,d
 | |
| 	ld l,e
 | |
| 	ld bc,begbss
 | |
| 	xor a			! to clear carry
 | |
| 	sbc hl,bc
 | |
| 	ld a,h
 | |
| 	or l
 | |
| 	jr z,1f
 | |
| 2:
 | |
| 	xor a
 | |
| 	ld (de),a
 | |
| 	dec de
 | |
| 	dec hl
 | |
| 	ld a,h
 | |
| 	or l
 | |
| 	jr nz,2b
 | |
| 1:				! hl == 0
 | |
| 
 | |
| 	ld bc,envp
 | |
| 	push bc
 | |
| 	ld bc,argv
 | |
| 	push bc
 | |
| 	ld bc,1
 | |
| 	push bc
 | |
| 	call __m_a_i_n
 | |
| EXIT:
 | |
| 	jp 0x20
 | |
| WRITE:
 | |
| 	jp __write
 | |
| 
 | |
| .sect .bss
 | |
| begbss:
 | |
| .sect .data
 | |
| hol0:
 | |
| 	.data2 0,0
 | |
| 	.data2 0,0
 | |
| saveaf:
 | |
| 	.data2 0
 | |
| savebc:
 | |
| 	.data2 0
 | |
| savede:
 | |
| 	.data2 0
 | |
| savehl:
 | |
| 	.data2 0
 | |
| saveix:
 | |
| 	.data2 0
 | |
| saveiy:
 | |
| 	.data2 0
 | |
| ignmask:
 | |
| 	.data2 0
 | |
| hp:
 | |
| 	.data2 0
 | |
| trapproc:
 | |
| 	.data2 0
 | |
| trpim:
 | |
| 	.data2 0
 | |
| argv:
 | |
| 	.data2 3f
 | |
| envp:
 | |
| 	.data2 0
 | |
| 3:
 | |
| 	.asciz 'PROGRAM'
 | |
| .reghp:
 | |
| 	.data2 endbss
 |