81 lines
1.3 KiB
ArmAsm
81 lines
1.3 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~,.limhp
|
|
.define EXIT,WRITE,BRK
|
|
! $Id$
|
|
|
|
#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
|
|
mov r0,-(sp)
|
|
EXIT:
|
|
jsr pc,__exit
|
|
sys 1
|
|
|
|
WRITE: jmp _write
|
|
|
|
BRK: jmp _brk
|
|
|
|
.sect .data
|
|
hol0: .data2 0,0 ! line no
|
|
.data2 0,0 ! file
|
|
trppc~: .data2 0
|
|
trpim~: .data2 0
|
|
reghp~: .data2 _end
|
|
.limhp: .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
|