74 lines
		
	
	
	
		
			1.2 KiB
		
	
	
	
		
			ArmAsm
		
	
	
	
	
	
			
		
		
	
	
			74 lines
		
	
	
	
		
			1.2 KiB
		
	
	
	
		
			ArmAsm
		
	
	
	
	
	
| #
 | |
| .sect .text; .sect .rom; .sect .data; .sect .bss; .sect .text
 | |
| .define  LINO_AD,FILN_AD
 | |
| .define  ERANGE,ESET,EHEAP,EILLINS,ECASE
 | |
| .define  hol0,trppc~,trpim~,reghp~
 | |
| ! $Header$
 | |
| 
 | |
| #define float 1
 | |
| #define hardfp 1
 | |
| 
 | |
| LINO_AD = 0
 | |
| FILN_AD = 4
 | |
| 
 | |
| ERANGE  = 1
 | |
| ESET    = 2
 | |
| EFOVFL  = 4
 | |
| EFUNFL  = 5
 | |
| EFDIVZ  = 7
 | |
| EFUND   = 011
 | |
| ECONV   = 012
 | |
| EHEAP   = 021
 | |
| EILLINS = 022
 | |
| ECASE   = 024
 | |
| 
 | |
| #ifdef float
 | |
| #ifndef hardfp
 | |
| !	sys     060;.data2 4,fptrap	/ if not commented it will appear as undefined
 | |
| #endif
 | |
| 	sys     060;.data2 010,sig8
 | |
| 	ldfps   $07600
 | |
| #endif
 | |
| 	mov     2(sp),r0
 | |
| 	clr     -2(r0)
 | |
| 	mov     sp,r0
 | |
| 	sub     $4,sp
 | |
| 	mov     4(sp),(sp)
 | |
| 	tst     (r0)+
 | |
| 	mov     r0,2(sp)
 | |
| 1:
 | |
| 	tst     (r0)+
 | |
| 	bne     1b
 | |
| 	cmp     r0,*2(sp)
 | |
| 	blo     1f
 | |
| 	tst     -(r0)
 | |
| 1:
 | |
| 	mov     r0,4(sp)
 | |
| 	jsr     pc,_m_a_i_n
 | |
| ! next two lines for as long as tail needs printf
 | |
| !	mov     r0,-(sp)
 | |
| !	jsr     pc,*$_exit
 | |
| 	sys     1
 | |
| 
 | |
| 	.sect .data
 | |
| hol0:   .data2 0,0     ! line no
 | |
| 	.data2 0,0     ! file
 | |
| trppc~: .data2 0
 | |
| trpim~: .data2 0
 | |
| reghp~: .data2 _end
 | |
| 
 | |
| 	.sect .text
 | |
| sig8:
 | |
| #ifdef float
 | |
| 	mov     r0,-(sp)
 | |
| 	stst    r0
 | |
| 	mov     1f(r0),-(sp)
 | |
| 	jsr     pc,trp~
 | |
| 	sys     060;.data2 010,sig8
 | |
| 	mov     (sp)+,r0
 | |
| 	rti
 | |
| 
 | |
| 	.sect .data
 | |
| 1:      .data2 EILLINS, EILLINS, EFDIVZ, ECONV, EFOVFL, EFUNFL, EFUND, EILLINS
 | |
| 	.sect .text
 | |
| #endif
 |