add LCC - a better C-Compiler for WEGA
This commit is contained in:
parent
e9c0c12576
commit
4dd6542824
|
|
@ -0,0 +1,213 @@
|
||||||
|
|
||||||
|
.seg
|
||||||
|
fp := r13
|
||||||
|
FP := rr12
|
||||||
|
sp := r15
|
||||||
|
SP := rr14
|
||||||
|
.psec data
|
||||||
|
.data
|
||||||
|
.psec
|
||||||
|
.code
|
||||||
|
divg::
|
||||||
|
dec sp,#12
|
||||||
|
ldm @SP,r8,#6
|
||||||
|
ld fp,sp
|
||||||
|
inc fp,#8
|
||||||
|
sub sp,#~L2-12
|
||||||
|
ld _stkseg+%fff6(fp),#%20
|
||||||
|
L47:
|
||||||
|
ld r2,_stkseg+%fff6(fp)
|
||||||
|
dec _stkseg+%fff6(fp),#%1
|
||||||
|
cp r2,#0
|
||||||
|
jpr eq,L48
|
||||||
|
ldl rr2,_stkseg+%8(fp)
|
||||||
|
addl rr2,rr2
|
||||||
|
ldl _stkseg+%8(fp),rr2
|
||||||
|
ldl rr2,_stkseg+%8(fp)
|
||||||
|
subl rr2,_stkseg+%c(fp)
|
||||||
|
ldl _stkseg+%8(fp),rr2
|
||||||
|
callr carry
|
||||||
|
cp r2,#0
|
||||||
|
jpr eq,L49
|
||||||
|
ldl rr2,_stkseg+%8(fp)
|
||||||
|
addl rr2,_stkseg+%c(fp)
|
||||||
|
ldl _stkseg+%8(fp),rr2
|
||||||
|
ldl rr2,_stkseg+%fff2(fp)
|
||||||
|
addl rr2,rr2
|
||||||
|
ldl _stkseg+%fff2(fp),rr2
|
||||||
|
jpr L50
|
||||||
|
L49:
|
||||||
|
ldl rr2,_stkseg+%fff2(fp)
|
||||||
|
addl rr2,rr2
|
||||||
|
ldl rr4,#%1
|
||||||
|
or r2,r4
|
||||||
|
or r3,r5
|
||||||
|
ldl _stkseg+%fff2(fp),rr2
|
||||||
|
L50:
|
||||||
|
jpr L47
|
||||||
|
L48:
|
||||||
|
ldl rr2,FP(#%fff2)
|
||||||
|
jpr L46
|
||||||
|
L46:
|
||||||
|
ld sp,fp
|
||||||
|
ldm r8,_stkseg-8(sp),#6
|
||||||
|
inc sp,#4
|
||||||
|
ret
|
||||||
|
~L1 := 14
|
||||||
|
~L2 := 18
|
||||||
|
}
|
||||||
|
|
||||||
|
.psec data
|
||||||
|
.data
|
||||||
|
.psec
|
||||||
|
.code
|
||||||
|
divgdd::
|
||||||
|
dec sp,#12
|
||||||
|
ldm @SP,r8,#6
|
||||||
|
ld fp,sp
|
||||||
|
inc fp,#8
|
||||||
|
sub sp,#~L2-12
|
||||||
|
.psec data
|
||||||
|
.data
|
||||||
|
.comm 8, ___StRet;
|
||||||
|
.psec
|
||||||
|
.code
|
||||||
|
ldl rr2,#%80000000
|
||||||
|
ldl _stkseg+%ffec(fp),rr2
|
||||||
|
ld _stkseg+%ffea(fp),#%40
|
||||||
|
L61:
|
||||||
|
ld r2,_stkseg+%ffea(fp)
|
||||||
|
dec _stkseg+%ffea(fp),#%1
|
||||||
|
cp r2,#0
|
||||||
|
jpr eq,L62
|
||||||
|
ldl rr2,_stkseg+%ffec(fp)
|
||||||
|
and r2,_stkseg+%c(fp)
|
||||||
|
and r3,_stkseg+%e(fp)
|
||||||
|
srll rr2,#%1f
|
||||||
|
ldl rr4,_stkseg+%8(fp)
|
||||||
|
addl rr4,rr4
|
||||||
|
or r2,r4
|
||||||
|
or r3,r5
|
||||||
|
ldl _stkseg+%8(fp),rr2
|
||||||
|
ldl rr2,_stkseg+%c(fp)
|
||||||
|
addl rr2,rr2
|
||||||
|
ldl _stkseg+%c(fp),rr2
|
||||||
|
ldl rr2,_stkseg+%c(fp)
|
||||||
|
subl rr2,_stkseg+%14(fp)
|
||||||
|
ldl _stkseg+%c(fp),rr2
|
||||||
|
callr carry
|
||||||
|
ld r5,r2
|
||||||
|
exts rr4
|
||||||
|
ldl _stkseg+%ffe6(fp),rr4
|
||||||
|
ldl rr2,_stkseg+%ffe6(fp)
|
||||||
|
addl rr2,_stkseg+%10(fp)
|
||||||
|
ldl _stkseg+%ffe6(fp),rr2
|
||||||
|
ldl rr2,_stkseg+%8(fp)
|
||||||
|
subl rr2,_stkseg+%ffe6(fp)
|
||||||
|
ldl _stkseg+%8(fp),rr2
|
||||||
|
callr carry
|
||||||
|
cp r2,#0
|
||||||
|
jpr eq,L63
|
||||||
|
ldl rr2,_stkseg+%c(fp)
|
||||||
|
addl rr2,_stkseg+%14(fp)
|
||||||
|
ldl _stkseg+%c(fp),rr2
|
||||||
|
callr carry
|
||||||
|
ld _stkseg+%ffe8(fp),r2
|
||||||
|
ld r3,_stkseg+%ffe8(fp)
|
||||||
|
exts rr2
|
||||||
|
addl rr2,_stkseg+%8(fp)
|
||||||
|
addl rr2,_stkseg+%10(fp)
|
||||||
|
ldl _stkseg+%8(fp),rr2
|
||||||
|
ldl rr2,_stkseg+%ffec(fp)
|
||||||
|
and r2,_stkseg+%fff4(fp)
|
||||||
|
and r3,_stkseg+%fff6(fp)
|
||||||
|
srll rr2,#%1f
|
||||||
|
ldl rr4,_stkseg+%fff0(fp)
|
||||||
|
addl rr4,rr4
|
||||||
|
or r2,r4
|
||||||
|
or r3,r5
|
||||||
|
ldl _stkseg+%fff0(fp),rr2
|
||||||
|
ldl rr2,_stkseg+%fff4(fp)
|
||||||
|
addl rr2,rr2
|
||||||
|
ldl _stkseg+%fff4(fp),rr2
|
||||||
|
jpr L64
|
||||||
|
L63:
|
||||||
|
ldl rr2,_stkseg+%ffec(fp)
|
||||||
|
and r2,_stkseg+%fff4(fp)
|
||||||
|
and r3,_stkseg+%fff6(fp)
|
||||||
|
srll rr2,#%1f
|
||||||
|
ldl rr4,_stkseg+%fff0(fp)
|
||||||
|
addl rr4,rr4
|
||||||
|
or r2,r4
|
||||||
|
or r3,r5
|
||||||
|
ldl _stkseg+%fff0(fp),rr2
|
||||||
|
ldl rr2,_stkseg+%fff4(fp)
|
||||||
|
addl rr2,rr2
|
||||||
|
ldl _stkseg+%fff4(fp),rr2
|
||||||
|
ldl rr2,#%1
|
||||||
|
or r2,_stkseg+%fff4(fp)
|
||||||
|
or r3,_stkseg+%fff6(fp)
|
||||||
|
ldl _stkseg+%fff4(fp),rr2
|
||||||
|
L64:
|
||||||
|
jpr L61
|
||||||
|
L62:
|
||||||
|
ldl rr2,#___StRet
|
||||||
|
ldl rr4,FP
|
||||||
|
add r5,#%fff0
|
||||||
|
ld r6,#%4
|
||||||
|
ldir @rr2,@rr4,r6
|
||||||
|
jpr L60
|
||||||
|
L60:
|
||||||
|
ldl rr2,#___StRet
|
||||||
|
ld sp,fp
|
||||||
|
ldm r8,_stkseg-8(sp),#6
|
||||||
|
inc sp,#4
|
||||||
|
ret
|
||||||
|
~L1 := 26
|
||||||
|
~L2 := 30
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
.psec data
|
||||||
|
.data
|
||||||
|
.psec
|
||||||
|
.code
|
||||||
|
mul::
|
||||||
|
dec sp,#12
|
||||||
|
ldm @SP,r8,#6
|
||||||
|
ld fp,sp
|
||||||
|
inc fp,#8
|
||||||
|
sub sp,#~L2-12
|
||||||
|
ldl rr2,_stkseg+%8(fp)
|
||||||
|
ldl rr6,rr2
|
||||||
|
multl rq4,_stkseg+%c(fp)
|
||||||
|
ldl rr2,rr6
|
||||||
|
jpr L69
|
||||||
|
L69:
|
||||||
|
ld sp,fp
|
||||||
|
ldm r8,_stkseg-8(sp),#6
|
||||||
|
inc sp,#4
|
||||||
|
ret
|
||||||
|
~L1 := 8
|
||||||
|
~L2 := 12
|
||||||
|
}
|
||||||
|
|
||||||
|
.psec data
|
||||||
|
.data
|
||||||
|
.seg
|
||||||
|
.psec
|
||||||
|
.code
|
||||||
|
carry::
|
||||||
|
{
|
||||||
|
ldk r2,#0
|
||||||
|
ret nc
|
||||||
|
inc r2,#1
|
||||||
|
ret
|
||||||
|
}
|
||||||
|
notcarry::
|
||||||
|
{
|
||||||
|
ldk r2,#0
|
||||||
|
ret c
|
||||||
|
inc r2,#1
|
||||||
|
ret
|
||||||
|
}
|
||||||
|
|
@ -0,0 +1,772 @@
|
||||||
|
.line 1 ""
|
||||||
|
.seg
|
||||||
|
fp := r13
|
||||||
|
FP := rr12
|
||||||
|
sp := r15
|
||||||
|
SP := rr14
|
||||||
|
.psec data
|
||||||
|
.data
|
||||||
|
.psec
|
||||||
|
.code
|
||||||
|
subs::
|
||||||
|
{
|
||||||
|
dec sp,#12
|
||||||
|
ldm @SP,r8,#6
|
||||||
|
ld fp,sp
|
||||||
|
inc fp,#8
|
||||||
|
sub sp,#~L2-12
|
||||||
|
ldl rr2,_stkseg+%8(fp)
|
||||||
|
ldl FP(#%fff4),rr2
|
||||||
|
ldl rr2,_stkseg+%c(fp)
|
||||||
|
ldl FP(#%fff0),rr2
|
||||||
|
ldl rr2,#%80000000
|
||||||
|
ldl _stkseg+%ffec(fp),rr2
|
||||||
|
ldl rr2,_stkseg+%fff0(fp)
|
||||||
|
cpl rr2,#0
|
||||||
|
jpr ne,L27
|
||||||
|
ldl rr2,FP(#%fff4)
|
||||||
|
jpr L26
|
||||||
|
L27:
|
||||||
|
ldl rr2,_stkseg+%ffec(fp)
|
||||||
|
ldl rr2,rr2
|
||||||
|
com r2
|
||||||
|
com r3
|
||||||
|
and r2,_stkseg+%fff0(fp)
|
||||||
|
and r3,_stkseg+%fff2(fp)
|
||||||
|
ldl rr4,_stkseg+%fff0(fp)
|
||||||
|
ldl rr4,rr4
|
||||||
|
com r4
|
||||||
|
com r5
|
||||||
|
and r4,_stkseg+%ffec(fp)
|
||||||
|
and r5,_stkseg+%ffee(fp)
|
||||||
|
or r2,r4
|
||||||
|
or r3,r5
|
||||||
|
pushl @SP,rr2
|
||||||
|
pushl @SP,_stkseg+%fff4(fp)
|
||||||
|
callr adds
|
||||||
|
inc sp,#%8
|
||||||
|
ldl rr2,rr2
|
||||||
|
jpr L26
|
||||||
|
L26:
|
||||||
|
ld sp,fp
|
||||||
|
dec sp,#8
|
||||||
|
ldm r8,@SP,#6
|
||||||
|
inc sp,#12
|
||||||
|
ret
|
||||||
|
~L1 := 20
|
||||||
|
~L2 := 24
|
||||||
|
}
|
||||||
|
|
||||||
|
.psec data
|
||||||
|
.data
|
||||||
|
.psec
|
||||||
|
.code
|
||||||
|
negs::
|
||||||
|
{
|
||||||
|
dec sp,#12
|
||||||
|
ldm @SP,r8,#6
|
||||||
|
ld fp,sp
|
||||||
|
inc fp,#8
|
||||||
|
sub sp,#~L2-12
|
||||||
|
ldl rr2,_stkseg+%8(fp)
|
||||||
|
ldl FP(#%fff4),rr2
|
||||||
|
ldl rr2,#%80000000
|
||||||
|
ldl _stkseg+%fff0(fp),rr2
|
||||||
|
ldl rr2,_stkseg+%fff0(fp)
|
||||||
|
ldl rr2,rr2
|
||||||
|
com r2
|
||||||
|
com r3
|
||||||
|
and r2,_stkseg+%fff4(fp)
|
||||||
|
and r3,_stkseg+%fff6(fp)
|
||||||
|
ldl rr4,_stkseg+%fff4(fp)
|
||||||
|
ldl rr4,rr4
|
||||||
|
com r4
|
||||||
|
com r5
|
||||||
|
and r4,_stkseg+%fff0(fp)
|
||||||
|
and r5,_stkseg+%fff2(fp)
|
||||||
|
or r2,r4
|
||||||
|
or r3,r5
|
||||||
|
ldl rr2,rr2
|
||||||
|
jpr L29
|
||||||
|
L29:
|
||||||
|
ld sp,fp
|
||||||
|
dec sp,#8
|
||||||
|
ldm r8,@SP,#6
|
||||||
|
inc sp,#12
|
||||||
|
ret
|
||||||
|
~L1 := 16
|
||||||
|
~L2 := 20
|
||||||
|
}
|
||||||
|
|
||||||
|
.psec data
|
||||||
|
.data
|
||||||
|
.psec
|
||||||
|
.code
|
||||||
|
adds::
|
||||||
|
{
|
||||||
|
dec sp,#12
|
||||||
|
ldm @SP,r8,#6
|
||||||
|
ld fp,sp
|
||||||
|
inc fp,#8
|
||||||
|
sub sp,#~L2-12
|
||||||
|
ldl rr2,_stkseg+%8(fp)
|
||||||
|
ldl FP(#%fff4),rr2
|
||||||
|
ldl rr2,_stkseg+%c(fp)
|
||||||
|
ldl FP(#%fff0),rr2
|
||||||
|
ldl rr2,#%80000000
|
||||||
|
ldl _stkseg+%ffc4(fp),rr2
|
||||||
|
ldl rr2,_stkseg+%fff4(fp)
|
||||||
|
cpl rr2,#0
|
||||||
|
jpr ne,L31
|
||||||
|
ldl rr2,FP(#%fff0)
|
||||||
|
jpr L30
|
||||||
|
L31:
|
||||||
|
ldl rr2,_stkseg+%fff0(fp)
|
||||||
|
cpl rr2,#0
|
||||||
|
jpr ne,L32
|
||||||
|
ldl rr2,FP(#%fff4)
|
||||||
|
jpr L30
|
||||||
|
L32:
|
||||||
|
ldl rr2,#%7ff00000
|
||||||
|
and r2,_stkseg+%fff4(fp)
|
||||||
|
and r3,_stkseg+%fff6(fp)
|
||||||
|
ldl rr4,#%7ff00000
|
||||||
|
and r4,_stkseg+%fff0(fp)
|
||||||
|
and r5,_stkseg+%fff2(fp)
|
||||||
|
subl rr2,rr4
|
||||||
|
sral rr2,#%14
|
||||||
|
ldl FP(#%ffdc),rr2
|
||||||
|
ldl rr2,_stkseg+%ffdc(fp)
|
||||||
|
cpl rr2,#0
|
||||||
|
jpr ge,L33
|
||||||
|
ldl rr2,_stkseg+%fff4(fp)
|
||||||
|
ldl FP(#%ffd8),rr2
|
||||||
|
ldl rr2,_stkseg+%fff0(fp)
|
||||||
|
ldl FP(#%fff4),rr2
|
||||||
|
ldl rr2,_stkseg+%ffd8(fp)
|
||||||
|
ldl FP(#%fff0),rr2
|
||||||
|
ldl rr2,_stkseg+%ffdc(fp)
|
||||||
|
ldl rr2,rr2
|
||||||
|
com r2
|
||||||
|
com r3
|
||||||
|
addl rr2,#1
|
||||||
|
ldl FP(#%ffdc),rr2
|
||||||
|
L33:
|
||||||
|
ldl rr2,_stkseg+%ffc4(fp)
|
||||||
|
and r2,_stkseg+%fff0(fp)
|
||||||
|
and r3,_stkseg+%fff2(fp)
|
||||||
|
ldl FP(#%ffd0),rr2
|
||||||
|
ldl rr2,#%fffff
|
||||||
|
and r2,_stkseg+%fff0(fp)
|
||||||
|
and r3,_stkseg+%fff2(fp)
|
||||||
|
slal rr2,#%9
|
||||||
|
ldl rr4,#%20000000
|
||||||
|
or r2,r4
|
||||||
|
or r3,r5
|
||||||
|
ldl FP(#%ffc8),rr2
|
||||||
|
ldl rr2,_stkseg+%ffd0(fp)
|
||||||
|
cpl rr2,#0
|
||||||
|
jpr eq,L34
|
||||||
|
ldl rr2,_stkseg+%ffc8(fp)
|
||||||
|
ldl rr2,rr2
|
||||||
|
com r2
|
||||||
|
com r3
|
||||||
|
addl rr2,#1
|
||||||
|
ldl FP(#%ffc8),rr2
|
||||||
|
L34:
|
||||||
|
ldl rr2,_stkseg+%ffdc(fp)
|
||||||
|
cpl rr2,#0
|
||||||
|
jpr eq,L35
|
||||||
|
ldl rr2,_stkseg+%ffc8(fp)
|
||||||
|
ldl rr4,_stkseg+%ffdc(fp)
|
||||||
|
ldl rr4,rr4
|
||||||
|
com r4
|
||||||
|
com r5
|
||||||
|
addl rr4,#1
|
||||||
|
sdal rr2,r5
|
||||||
|
ldl FP(#%ffc8),rr2
|
||||||
|
L35:
|
||||||
|
ldl rr2,#%7ff00000
|
||||||
|
and r2,_stkseg+%fff4(fp)
|
||||||
|
and r3,_stkseg+%fff6(fp)
|
||||||
|
sral rr2,#%14
|
||||||
|
ldl FP(#%ffe8),rr2
|
||||||
|
ldl rr2,_stkseg+%ffc4(fp)
|
||||||
|
and r2,_stkseg+%fff4(fp)
|
||||||
|
and r3,_stkseg+%fff6(fp)
|
||||||
|
ldl FP(#%ffd4),rr2
|
||||||
|
ldl rr2,#%fffff
|
||||||
|
and r2,_stkseg+%fff4(fp)
|
||||||
|
and r3,_stkseg+%fff6(fp)
|
||||||
|
slal rr2,#%9
|
||||||
|
ldl rr4,#%20000000
|
||||||
|
or r2,r4
|
||||||
|
or r3,r5
|
||||||
|
ldl FP(#%ffcc),rr2
|
||||||
|
ldl rr2,_stkseg+%ffd4(fp)
|
||||||
|
cpl rr2,#0
|
||||||
|
jpr eq,L36
|
||||||
|
ldl rr2,_stkseg+%ffcc(fp)
|
||||||
|
ldl rr2,rr2
|
||||||
|
com r2
|
||||||
|
com r3
|
||||||
|
addl rr2,#1
|
||||||
|
ldl FP(#%ffcc),rr2
|
||||||
|
L36:
|
||||||
|
ldl rr2,_stkseg+%ffcc(fp)
|
||||||
|
addl rr2,_stkseg+%ffc8(fp)
|
||||||
|
ldl FP(#%ffe4),rr2
|
||||||
|
ldl rr2,_stkseg+%ffdc(fp)
|
||||||
|
cpl rr2,#0
|
||||||
|
jpr ne,L37
|
||||||
|
ldl rr2,_stkseg+%ffe4(fp)
|
||||||
|
cpl rr2,#0
|
||||||
|
jpr ne,L37
|
||||||
|
subl rr2,rr2
|
||||||
|
jpr L30
|
||||||
|
L37:
|
||||||
|
ldl rr2,_stkseg+%ffc4(fp)
|
||||||
|
and r2,_stkseg+%ffe4(fp)
|
||||||
|
and r3,_stkseg+%ffe6(fp)
|
||||||
|
ldl FP(#%ffec),rr2
|
||||||
|
ldl rr2,_stkseg+%ffec(fp)
|
||||||
|
cpl rr2,#0
|
||||||
|
jpr eq,L38
|
||||||
|
ldl rr2,_stkseg+%ffe4(fp)
|
||||||
|
ldl rr2,rr2
|
||||||
|
com r2
|
||||||
|
com r3
|
||||||
|
addl rr2,#1
|
||||||
|
ldl FP(#%ffe4),rr2
|
||||||
|
L38:
|
||||||
|
pushl @SP,_stkseg+%ffe4(fp)
|
||||||
|
pushl @SP,_stkseg+%ffe8(fp)
|
||||||
|
callr normf
|
||||||
|
inc sp,#%8
|
||||||
|
or r2,_stkseg+%ffec(fp)
|
||||||
|
or r3,_stkseg+%ffee(fp)
|
||||||
|
ldl FP(#%ffe0),rr2
|
||||||
|
ldl rr2,FP(#%ffe0)
|
||||||
|
jpr L30
|
||||||
|
L30:
|
||||||
|
ld sp,fp
|
||||||
|
dec sp,#8
|
||||||
|
ldm r8,@SP,#6
|
||||||
|
inc sp,#12
|
||||||
|
ret
|
||||||
|
~L1 := 60
|
||||||
|
~L2 := 64
|
||||||
|
}
|
||||||
|
|
||||||
|
.psec data
|
||||||
|
.data
|
||||||
|
.psec
|
||||||
|
.code
|
||||||
|
normf::
|
||||||
|
{
|
||||||
|
dec sp,#12
|
||||||
|
ldm @SP,r8,#6
|
||||||
|
ld fp,sp
|
||||||
|
inc fp,#8
|
||||||
|
sub sp,#~L2-12
|
||||||
|
ldl rr2,#%40000000
|
||||||
|
ldl _stkseg+%fff4(fp),rr2
|
||||||
|
ldl rr2,#%20000000
|
||||||
|
ldl _stkseg+%fff0(fp),rr2
|
||||||
|
ldl rr2,_stkseg+%c(fp)
|
||||||
|
cpl rr2,#0
|
||||||
|
jpr ne,L40
|
||||||
|
ldl rr2,#%1
|
||||||
|
ldl _stkseg+%8(fp),rr2
|
||||||
|
jpr L41
|
||||||
|
L40:
|
||||||
|
ldl rr2,_stkseg+%c(fp)
|
||||||
|
and r2,_stkseg+%fff4(fp)
|
||||||
|
and r3,_stkseg+%fff6(fp)
|
||||||
|
cpl rr2,#0
|
||||||
|
jpr eq,L42
|
||||||
|
jpr L43
|
||||||
|
L42:
|
||||||
|
L44:
|
||||||
|
ldl rr2,_stkseg+%c(fp)
|
||||||
|
and r2,_stkseg+%fff0(fp)
|
||||||
|
and r3,_stkseg+%fff2(fp)
|
||||||
|
cpl rr2,#0
|
||||||
|
jpr eq,L45
|
||||||
|
jpr L46
|
||||||
|
L45:
|
||||||
|
L47:
|
||||||
|
ldl rr2,_stkseg+%c(fp)
|
||||||
|
addl rr2,rr2
|
||||||
|
ldl FP(#%c),rr2
|
||||||
|
ldl rr2,_stkseg+%8(fp)
|
||||||
|
subl rr2,#%1
|
||||||
|
ldl FP(#%8),rr2
|
||||||
|
jpr L44
|
||||||
|
L43:
|
||||||
|
ldl rr2,_stkseg+%c(fp)
|
||||||
|
sral rr2,#%1
|
||||||
|
ldl FP(#%c),rr2
|
||||||
|
ldl rr2,_stkseg+%8(fp)
|
||||||
|
addl rr2,#%1
|
||||||
|
ldl FP(#%8),rr2
|
||||||
|
L46:
|
||||||
|
ldl rr2,_stkseg+%c(fp)
|
||||||
|
addl rr2,#%100
|
||||||
|
ldl FP(#%c),rr2
|
||||||
|
ldl rr2,_stkseg+%c(fp)
|
||||||
|
and r2,_stkseg+%fff4(fp)
|
||||||
|
and r3,_stkseg+%fff6(fp)
|
||||||
|
cpl rr2,#0
|
||||||
|
jpr eq,L48
|
||||||
|
jpr L43
|
||||||
|
L48:
|
||||||
|
ldl rr2,_stkseg+%8(fp)
|
||||||
|
cpl rr2,#0
|
||||||
|
jpr ge,L49
|
||||||
|
ldl rr2,#%1
|
||||||
|
ldl _stkseg+%8(fp),rr2
|
||||||
|
ld _errno,#%22
|
||||||
|
.psec strdata
|
||||||
|
.data
|
||||||
|
L51:
|
||||||
|
.byte %65,%78,%70,%6f,%6e,%65,%6e,%74
|
||||||
|
.byte %20,%75,%6e,%64,%65,%72,%66,%6c
|
||||||
|
.byte %6f,%77,%a,%0
|
||||||
|
.psec
|
||||||
|
.code
|
||||||
|
ldl rr2,#L51
|
||||||
|
pushl @SP,rr2
|
||||||
|
callr _perror
|
||||||
|
inc sp,#%4
|
||||||
|
L49:
|
||||||
|
ldl rr2,_stkseg+%8(fp)
|
||||||
|
cpl rr2,#%7ff
|
||||||
|
jpr le,L52
|
||||||
|
ldl rr2,#%7ff
|
||||||
|
ldl _stkseg+%8(fp),rr2
|
||||||
|
ld _errno,#%22
|
||||||
|
.psec strdata
|
||||||
|
.data
|
||||||
|
L53:
|
||||||
|
.byte %65,%78,%70,%6f,%6e,%65,%6e,%74
|
||||||
|
.byte %20,%6f,%76,%65,%72,%66,%6c,%6f
|
||||||
|
.byte %77,%a,%0
|
||||||
|
.psec
|
||||||
|
.code
|
||||||
|
ldl rr2,#L53
|
||||||
|
pushl @SP,rr2
|
||||||
|
callr _perror
|
||||||
|
inc sp,#%4
|
||||||
|
L52:
|
||||||
|
L41:
|
||||||
|
ldl rr2,_stkseg+%8(fp)
|
||||||
|
slal rr2,#%14
|
||||||
|
ldl rr4,_stkseg+%c(fp)
|
||||||
|
sral rr4,#%9
|
||||||
|
ldl rr6,#%fffff
|
||||||
|
and r4,r6
|
||||||
|
and r5,r7
|
||||||
|
or r2,r4
|
||||||
|
or r3,r5
|
||||||
|
ldl rr2,rr2
|
||||||
|
jpr L39
|
||||||
|
L39:
|
||||||
|
ld sp,fp
|
||||||
|
dec sp,#8
|
||||||
|
ldm r8,@SP,#6
|
||||||
|
inc sp,#12
|
||||||
|
ret
|
||||||
|
~L1 := 16
|
||||||
|
~L2 := 20
|
||||||
|
}
|
||||||
|
|
||||||
|
.psec data
|
||||||
|
.data
|
||||||
|
.psec
|
||||||
|
.code
|
||||||
|
mults::
|
||||||
|
{
|
||||||
|
dec sp,#12
|
||||||
|
ldm @SP,r8,#6
|
||||||
|
ld fp,sp
|
||||||
|
inc fp,#8
|
||||||
|
sub sp,#~L2-12
|
||||||
|
ldl rr2,_stkseg+%8(fp)
|
||||||
|
ldl FP(#%fff4),rr2
|
||||||
|
ldl rr2,_stkseg+%c(fp)
|
||||||
|
ldl FP(#%fff0),rr2
|
||||||
|
ldl rr2,#%80000000
|
||||||
|
ldl _stkseg+%ffcc(fp),rr2
|
||||||
|
ldl rr2,_stkseg+%fff4(fp)
|
||||||
|
cpl rr2,#0
|
||||||
|
jpr eq,L57
|
||||||
|
ldl rr2,_stkseg+%fff0(fp)
|
||||||
|
cpl rr2,#0
|
||||||
|
jpr ne,L56
|
||||||
|
L57:
|
||||||
|
subl rr2,rr2
|
||||||
|
jpr L55
|
||||||
|
L56:
|
||||||
|
ldl rr2,#%7ff00000
|
||||||
|
and r2,_stkseg+%fff4(fp)
|
||||||
|
and r3,_stkseg+%fff6(fp)
|
||||||
|
ldl rr4,#%7ff00000
|
||||||
|
and r4,_stkseg+%fff0(fp)
|
||||||
|
and r5,_stkseg+%fff2(fp)
|
||||||
|
addl rr2,rr4
|
||||||
|
srll rr2,#%14
|
||||||
|
subl rr2,#%3fe
|
||||||
|
ldl FP(#%ffe8),rr2
|
||||||
|
ldl rr2,_stkseg+%ffcc(fp)
|
||||||
|
and r2,_stkseg+%fff0(fp)
|
||||||
|
and r3,_stkseg+%fff2(fp)
|
||||||
|
ldl FP(#%ffd8),rr2
|
||||||
|
ldl rr2,#%fffff
|
||||||
|
and r2,_stkseg+%fff0(fp)
|
||||||
|
and r3,_stkseg+%fff2(fp)
|
||||||
|
slal rr2,#%9
|
||||||
|
ldl rr4,#%20000000
|
||||||
|
or r2,r4
|
||||||
|
or r3,r5
|
||||||
|
ldl FP(#%ffd0),rr2
|
||||||
|
ldl rr2,_stkseg+%ffd8(fp)
|
||||||
|
cpl rr2,#0
|
||||||
|
jpr eq,L58
|
||||||
|
ldl rr2,_stkseg+%ffd0(fp)
|
||||||
|
ldl rr2,rr2
|
||||||
|
com r2
|
||||||
|
com r3
|
||||||
|
addl rr2,#1
|
||||||
|
ldl FP(#%ffd0),rr2
|
||||||
|
L58:
|
||||||
|
ldl rr2,_stkseg+%ffcc(fp)
|
||||||
|
and r2,_stkseg+%fff4(fp)
|
||||||
|
and r3,_stkseg+%fff6(fp)
|
||||||
|
ldl FP(#%ffdc),rr2
|
||||||
|
ldl rr2,#%fffff
|
||||||
|
and r2,_stkseg+%fff4(fp)
|
||||||
|
and r3,_stkseg+%fff6(fp)
|
||||||
|
slal rr2,#%9
|
||||||
|
ldl rr4,#%20000000
|
||||||
|
or r2,r4
|
||||||
|
or r3,r5
|
||||||
|
ldl FP(#%ffd4),rr2
|
||||||
|
ldl rr2,_stkseg+%ffdc(fp)
|
||||||
|
cpl rr2,#0
|
||||||
|
jpr eq,L59
|
||||||
|
ldl rr2,_stkseg+%ffd4(fp)
|
||||||
|
ldl rr2,rr2
|
||||||
|
com r2
|
||||||
|
com r3
|
||||||
|
addl rr2,#1
|
||||||
|
ldl FP(#%ffd4),rr2
|
||||||
|
L59:
|
||||||
|
pushl @SP,_stkseg+%ffd0(fp)
|
||||||
|
pushl @SP,_stkseg+%ffd4(fp)
|
||||||
|
callr mul_hwt
|
||||||
|
inc sp,#%8
|
||||||
|
slal rr2,#%2
|
||||||
|
ldl FP(#%ffe4),rr2
|
||||||
|
ldl rr2,_stkseg+%ffcc(fp)
|
||||||
|
and r2,_stkseg+%ffe4(fp)
|
||||||
|
and r3,_stkseg+%ffe6(fp)
|
||||||
|
ldl FP(#%ffec),rr2
|
||||||
|
ldl rr2,_stkseg+%ffec(fp)
|
||||||
|
cpl rr2,#0
|
||||||
|
jpr eq,L60
|
||||||
|
ldl rr2,_stkseg+%ffe4(fp)
|
||||||
|
ldl rr2,rr2
|
||||||
|
com r2
|
||||||
|
com r3
|
||||||
|
addl rr2,#1
|
||||||
|
ldl FP(#%ffe4),rr2
|
||||||
|
L60:
|
||||||
|
pushl @SP,_stkseg+%ffe4(fp)
|
||||||
|
pushl @SP,_stkseg+%ffe8(fp)
|
||||||
|
callr normf
|
||||||
|
inc sp,#%8
|
||||||
|
or r2,_stkseg+%ffec(fp)
|
||||||
|
or r3,_stkseg+%ffee(fp)
|
||||||
|
ldl FP(#%ffe0),rr2
|
||||||
|
ldl rr2,FP(#%ffe0)
|
||||||
|
jpr L55
|
||||||
|
L55:
|
||||||
|
ld sp,fp
|
||||||
|
dec sp,#8
|
||||||
|
ldm r8,@SP,#6
|
||||||
|
inc sp,#12
|
||||||
|
ret
|
||||||
|
~L1 := 52
|
||||||
|
~L2 := 56
|
||||||
|
}
|
||||||
|
|
||||||
|
.psec data
|
||||||
|
.data
|
||||||
|
.psec
|
||||||
|
.code
|
||||||
|
divs::
|
||||||
|
{
|
||||||
|
dec sp,#12
|
||||||
|
ldm @SP,r8,#6
|
||||||
|
ld fp,sp
|
||||||
|
inc fp,#8
|
||||||
|
sub sp,#~L2-12
|
||||||
|
ldl rr2,_stkseg+%8(fp)
|
||||||
|
ldl FP(#%fff4),rr2
|
||||||
|
ldl rr2,_stkseg+%c(fp)
|
||||||
|
ldl FP(#%fff0),rr2
|
||||||
|
ldl rr2,#%80000000
|
||||||
|
ldl _stkseg+%ffcc(fp),rr2
|
||||||
|
ldl rr2,_stkseg+%fff4(fp)
|
||||||
|
cpl rr2,#0
|
||||||
|
jpr ne,L63
|
||||||
|
subl rr2,rr2
|
||||||
|
jpr L62
|
||||||
|
L63:
|
||||||
|
ldl rr2,_stkseg+%fff0(fp)
|
||||||
|
cpl rr2,#0
|
||||||
|
jpr ne,L64
|
||||||
|
ld _errno,#%22
|
||||||
|
.psec strdata
|
||||||
|
.data
|
||||||
|
L65:
|
||||||
|
.byte %64,%69,%76,%69,%73,%69,%6f,%6e
|
||||||
|
.byte %20,%62,%79,%20,%7a,%65,%72,%6f
|
||||||
|
.byte %0
|
||||||
|
.psec
|
||||||
|
.code
|
||||||
|
ldl rr2,#L65
|
||||||
|
pushl @SP,rr2
|
||||||
|
callr _perror
|
||||||
|
inc sp,#%4
|
||||||
|
ldl rr2,FP(#%fff4)
|
||||||
|
jpr L62
|
||||||
|
L64:
|
||||||
|
ldl rr2,#%7ff00000
|
||||||
|
and r2,_stkseg+%fff4(fp)
|
||||||
|
and r3,_stkseg+%fff6(fp)
|
||||||
|
sral rr2,#%14
|
||||||
|
ldl rr4,#%7ff00000
|
||||||
|
and r4,_stkseg+%fff0(fp)
|
||||||
|
and r5,_stkseg+%fff2(fp)
|
||||||
|
sral rr4,#%14
|
||||||
|
subl rr2,rr4
|
||||||
|
addl rr2,#%3ff
|
||||||
|
ldl FP(#%ffe8),rr2
|
||||||
|
ldl rr2,_stkseg+%ffcc(fp)
|
||||||
|
and r2,_stkseg+%fff4(fp)
|
||||||
|
and r3,_stkseg+%fff6(fp)
|
||||||
|
ldl rr4,_stkseg+%ffcc(fp)
|
||||||
|
and r4,_stkseg+%fff0(fp)
|
||||||
|
and r5,_stkseg+%fff2(fp)
|
||||||
|
xor r2,r4
|
||||||
|
xor r3,r5
|
||||||
|
ldl FP(#%ffec),rr2
|
||||||
|
ldl rr2,#%fffff
|
||||||
|
and r2,_stkseg+%fff4(fp)
|
||||||
|
and r3,_stkseg+%fff6(fp)
|
||||||
|
slal rr2,#%9
|
||||||
|
ldl rr4,#%20000000
|
||||||
|
or r2,r4
|
||||||
|
or r3,r5
|
||||||
|
ldl FP(#%ffd4),rr2
|
||||||
|
ldl rr2,_stkseg+%ffd4(fp)
|
||||||
|
sral rr2,#%1
|
||||||
|
ldl FP(#%ffd4),rr2
|
||||||
|
ldl rr2,#%fffff
|
||||||
|
and r2,_stkseg+%fff0(fp)
|
||||||
|
and r3,_stkseg+%fff2(fp)
|
||||||
|
slal rr2,#%9
|
||||||
|
ldl rr4,#%20000000
|
||||||
|
or r2,r4
|
||||||
|
or r3,r5
|
||||||
|
ldl FP(#%ffd0),rr2
|
||||||
|
pushl @SP,_stkseg+%ffd0(fp)
|
||||||
|
pushl @SP,_stkseg+%ffd4(fp)
|
||||||
|
callr divg
|
||||||
|
inc sp,#%8
|
||||||
|
srll rr2,#%2
|
||||||
|
ldl FP(#%ffe4),rr2
|
||||||
|
pushl @SP,_stkseg+%ffe4(fp)
|
||||||
|
pushl @SP,_stkseg+%ffe8(fp)
|
||||||
|
callr normf
|
||||||
|
inc sp,#%8
|
||||||
|
or r2,_stkseg+%ffec(fp)
|
||||||
|
or r3,_stkseg+%ffee(fp)
|
||||||
|
ldl FP(#%ffe0),rr2
|
||||||
|
ldl rr2,FP(#%ffe0)
|
||||||
|
jpr L62
|
||||||
|
L62:
|
||||||
|
ld sp,fp
|
||||||
|
dec sp,#8
|
||||||
|
ldm r8,@SP,#6
|
||||||
|
inc sp,#12
|
||||||
|
ret
|
||||||
|
~L1 := 52
|
||||||
|
~L2 := 56
|
||||||
|
}
|
||||||
|
|
||||||
|
.psec data
|
||||||
|
.data
|
||||||
|
.psec
|
||||||
|
.code
|
||||||
|
ftol::
|
||||||
|
{
|
||||||
|
dec sp,#12
|
||||||
|
ldm @SP,r8,#6
|
||||||
|
ld fp,sp
|
||||||
|
inc fp,#8
|
||||||
|
sub sp,#~L2-12
|
||||||
|
ldl rr2,_stkseg+%8(fp)
|
||||||
|
ldl FP(#%fff4),rr2
|
||||||
|
ldl rr2,#%80000000
|
||||||
|
ldl _stkseg+%fff0(fp),rr2
|
||||||
|
ldl rr2,_stkseg+%fff4(fp)
|
||||||
|
cpl rr2,#0
|
||||||
|
jpr ne,L68
|
||||||
|
subl rr2,rr2
|
||||||
|
jpr L67
|
||||||
|
L68:
|
||||||
|
ldl rr2,#%7ff00000
|
||||||
|
and r2,_stkseg+%fff4(fp)
|
||||||
|
and r3,_stkseg+%fff6(fp)
|
||||||
|
sral rr2,#%14
|
||||||
|
ldl FP(#%ffec),rr2
|
||||||
|
ldl rr2,_stkseg+%fff0(fp)
|
||||||
|
and r2,_stkseg+%fff4(fp)
|
||||||
|
and r3,_stkseg+%fff6(fp)
|
||||||
|
ldl FP(#%fff0),rr2
|
||||||
|
ldl rr2,#%fffff
|
||||||
|
and r2,_stkseg+%fff4(fp)
|
||||||
|
and r3,_stkseg+%fff6(fp)
|
||||||
|
ldl FP(#%ffe8),rr2
|
||||||
|
ldl rr2,#%100000
|
||||||
|
or r2,_stkseg+%ffe8(fp)
|
||||||
|
or r3,_stkseg+%ffea(fp)
|
||||||
|
ldl FP(#%ffe8),rr2
|
||||||
|
ldl rr2,_stkseg+%ffec(fp)
|
||||||
|
cpl rr2,#%413
|
||||||
|
jpr ne,L69
|
||||||
|
ldl rr2,FP(#%ffe8)
|
||||||
|
jpr L67
|
||||||
|
L69:
|
||||||
|
ldl rr2,_stkseg+%ffec(fp)
|
||||||
|
cpl rr2,#%413
|
||||||
|
jpr le,L70
|
||||||
|
ldl rr2,_stkseg+%ffe8(fp)
|
||||||
|
ldl rr4,_stkseg+%ffec(fp)
|
||||||
|
subl rr4,#%413
|
||||||
|
sdal rr2,r5
|
||||||
|
ldl FP(#%ffe8),rr2
|
||||||
|
L70:
|
||||||
|
ldl rr2,_stkseg+%ffec(fp)
|
||||||
|
cpl rr2,#%413
|
||||||
|
jpr ge,L71
|
||||||
|
ldl rr2,_stkseg+%ffe8(fp)
|
||||||
|
ldl rr4,#%413
|
||||||
|
subl rr4,_stkseg+%ffec(fp)
|
||||||
|
ldl rr4,rr4
|
||||||
|
com r4
|
||||||
|
com r5
|
||||||
|
addl rr4,#1
|
||||||
|
sdal rr2,r5
|
||||||
|
ldl FP(#%ffe8),rr2
|
||||||
|
L71:
|
||||||
|
ldl rr2,_stkseg+%ffec(fp)
|
||||||
|
cpl rr2,#%41d
|
||||||
|
jpr le,L72
|
||||||
|
ld _errno,#%22
|
||||||
|
.psec strdata
|
||||||
|
.data
|
||||||
|
L73:
|
||||||
|
.byte %63,%76,%74,%66,%6c,%3a,%20,%69
|
||||||
|
.byte %6e,%74,%65,%67,%65,%72,%20,%6f
|
||||||
|
.byte %76,%65,%72,%66,%6c,%6f,%77,%0
|
||||||
|
.psec
|
||||||
|
.code
|
||||||
|
ldl rr2,#L73
|
||||||
|
pushl @SP,rr2
|
||||||
|
callr _perror
|
||||||
|
inc sp,#%4
|
||||||
|
L72:
|
||||||
|
ldl rr2,_stkseg+%fff0(fp)
|
||||||
|
cpl rr2,#0
|
||||||
|
jpr eq,L74
|
||||||
|
ldl rr2,_stkseg+%ffe8(fp)
|
||||||
|
ldl rr2,rr2
|
||||||
|
com r2
|
||||||
|
com r3
|
||||||
|
addl rr2,#1
|
||||||
|
ldl rr2,rr2
|
||||||
|
jpr L67
|
||||||
|
L74:
|
||||||
|
ldl rr2,FP(#%ffe8)
|
||||||
|
jpr L67
|
||||||
|
L67:
|
||||||
|
ld sp,fp
|
||||||
|
dec sp,#8
|
||||||
|
ldm r8,@SP,#6
|
||||||
|
inc sp,#12
|
||||||
|
ret
|
||||||
|
~L1 := 24
|
||||||
|
~L2 := 28
|
||||||
|
}
|
||||||
|
|
||||||
|
.psec data
|
||||||
|
.data
|
||||||
|
.psec
|
||||||
|
.code
|
||||||
|
ltof::
|
||||||
|
{
|
||||||
|
dec sp,#12
|
||||||
|
ldm @SP,r8,#6
|
||||||
|
ld fp,sp
|
||||||
|
inc fp,#8
|
||||||
|
sub sp,#~L2-12
|
||||||
|
ldl rr2,_stkseg+%8(fp)
|
||||||
|
ldl FP(#%fff4),rr2
|
||||||
|
ldl rr2,#%80000000
|
||||||
|
ldl _stkseg+%fff0(fp),rr2
|
||||||
|
ldl rr2,_stkseg+%fff4(fp)
|
||||||
|
cpl rr2,#0
|
||||||
|
jpr ne,L77
|
||||||
|
subl rr2,rr2
|
||||||
|
jpr L76
|
||||||
|
L77:
|
||||||
|
ldl rr2,_stkseg+%fff0(fp)
|
||||||
|
and r2,_stkseg+%fff4(fp)
|
||||||
|
and r3,_stkseg+%fff6(fp)
|
||||||
|
ldl FP(#%fff0),rr2
|
||||||
|
ldl rr2,_stkseg+%fff0(fp)
|
||||||
|
cpl rr2,#0
|
||||||
|
jpr eq,L78
|
||||||
|
ldl rr2,_stkseg+%fff4(fp)
|
||||||
|
ldl rr2,rr2
|
||||||
|
com r2
|
||||||
|
com r3
|
||||||
|
addl rr2,#1
|
||||||
|
ldl FP(#%fff4),rr2
|
||||||
|
L78:
|
||||||
|
pushl @SP,_stkseg+%fff4(fp)
|
||||||
|
ldl rr2,#%41c
|
||||||
|
pushl @SP,rr2
|
||||||
|
callr normf
|
||||||
|
inc sp,#%8
|
||||||
|
or r2,_stkseg+%fff0(fp)
|
||||||
|
or r3,_stkseg+%fff2(fp)
|
||||||
|
ldl FP(#%fff4),rr2
|
||||||
|
ldl rr2,FP(#%fff4)
|
||||||
|
jpr L76
|
||||||
|
L76:
|
||||||
|
ld sp,fp
|
||||||
|
dec sp,#8
|
||||||
|
ldm r8,@SP,#6
|
||||||
|
inc sp,#12
|
||||||
|
ret
|
||||||
|
~L1 := 16
|
||||||
|
~L2 := 20
|
||||||
|
}
|
||||||
|
|
||||||
|
.psec data
|
||||||
|
.data
|
||||||
Loading…
Reference in New Issue