From 4dd65428240cca38f1f195818bd91ca2728c0cb6 Mon Sep 17 00:00:00 2001 From: Oliver Lehmann Date: Mon, 26 Mar 1990 14:55:42 +0000 Subject: [PATCH] add LCC - a better C-Compiler for WEGA --- WEGA/contrib/lcc/lib/libc/u8k/crt/fix.s | 213 +++++++ WEGA/contrib/lcc/lib/libc/u8k/crt/sing.s | 772 +++++++++++++++++++++++ 2 files changed, 985 insertions(+) create mode 100644 WEGA/contrib/lcc/lib/libc/u8k/crt/fix.s create mode 100644 WEGA/contrib/lcc/lib/libc/u8k/crt/sing.s diff --git a/WEGA/contrib/lcc/lib/libc/u8k/crt/fix.s b/WEGA/contrib/lcc/lib/libc/u8k/crt/fix.s new file mode 100644 index 0000000..75d689b --- /dev/null +++ b/WEGA/contrib/lcc/lib/libc/u8k/crt/fix.s @@ -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 + } diff --git a/WEGA/contrib/lcc/lib/libc/u8k/crt/sing.s b/WEGA/contrib/lcc/lib/libc/u8k/crt/sing.s new file mode 100644 index 0000000..57986de --- /dev/null +++ b/WEGA/contrib/lcc/lib/libc/u8k/crt/sing.s @@ -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