From 25894a99f02ce61b0a3655d8b55a2ddb74b22dcd Mon Sep 17 00:00:00 2001 From: Oliver Lehmann Date: Fri, 28 Aug 2009 18:29:11 +0000 Subject: [PATCH] more work --- WEGA/src/lib/libc/TODO | 4 -- WEGA/src/lib/libc/TODO.done | 4 ++ WEGA/src/lib/libc/gen/TODO | 1 + WEGA/src/lib/libc/gen/decimal.s | 80 +++++++++++++++++++++++++++++++ WEGA/src/lib/libc/gen/goodmagic.c | 39 +++++++++++++++ WEGA/src/lib/libc/gen/readsym.c | 28 +++++++++++ WEGA/src/lib/libc/gen/setret.s | 29 +++++++++++ 7 files changed, 181 insertions(+), 4 deletions(-) create mode 100644 WEGA/src/lib/libc/gen/decimal.s create mode 100644 WEGA/src/lib/libc/gen/goodmagic.c create mode 100644 WEGA/src/lib/libc/gen/readsym.c create mode 100644 WEGA/src/lib/libc/gen/setret.s diff --git a/WEGA/src/lib/libc/TODO b/WEGA/src/lib/libc/TODO index 234cfa1..ef056b0 100644 --- a/WEGA/src/lib/libc/TODO +++ b/WEGA/src/lib/libc/TODO @@ -1,13 +1,9 @@ atof.o atof.s ASM cnvt.o cnvt.c C -decimal.o decimal.s ASM doprnt.o doprnt.c C ecvt.o ecvt.s ASM fltioc.o fltioc.c C -goodmagic.o goodmagic.c C pow10.o pow10.s ASM -readsym.o readsym.c C -setret.o setret.s ASM stfl.o ??? swap.o swap.c C symscan.o symscan.c C diff --git a/WEGA/src/lib/libc/TODO.done b/WEGA/src/lib/libc/TODO.done index 9c093a9..5daee48 100644 --- a/WEGA/src/lib/libc/TODO.done +++ b/WEGA/src/lib/libc/TODO.done @@ -165,3 +165,7 @@ toupper.o toupper.c C ffltioc.o ffltioc.c C length.o length.c C __callex.o __callex.c C +setret.o setret.s ASM +decimal.o decimal.s ASM +readsym.o readsym.c C +goodmagic.o goodmagic.c C diff --git a/WEGA/src/lib/libc/gen/TODO b/WEGA/src/lib/libc/gen/TODO index b374349..00b1afc 100644 --- a/WEGA/src/lib/libc/gen/TODO +++ b/WEGA/src/lib/libc/gen/TODO @@ -2,3 +2,4 @@ execvp.o /z/src/libc/orig_obj/execvp.o differ: char 6, line 1 malloc.o /z/src/libc/orig_obj/malloc.o differ: char 5, line 1 nlist.o /z/src/libc/orig_obj/nlist.o differ: char 5, line 1 length.o +readsym.o diff --git a/WEGA/src/lib/libc/gen/decimal.s b/WEGA/src/lib/libc/gen/decimal.s new file mode 100644 index 0000000..c5322a6 --- /dev/null +++ b/WEGA/src/lib/libc/gen/decimal.s @@ -0,0 +1,80 @@ +! @[$] decimal.s 2.1 09/12/83 11:22:59 - 87wega3.2 ! + +decimal module + + global + __deciml procedure + entry + ldl rr0,rr4 + subl rr2,rr2 + ldl rr4,rr2 + ldk r6,#1 + testl rr0 + jr z,L3 +L1: + srll rr0,#1 + jr nc,L2 + addb rh4,rl6 + dab rh4 + adcb rl3,rh6 + dab rl3 + adcb rh3,rl5 + dab rh3 + adcb rl2,rh5 + dab rl2 + adcb rh2,rl4 + dab rh2 + testl rr0 + jr z,L3 +L2: + addb rl6,rl6 + dab rl6 + adcb rh6,rh6 + dab rh6 + adcb rl5,rl5 + dab rl5 + adcb rh5,rh5 + dab rh5 + adcb rl4,rl4 + dab rl4 + jr L1 +L3: + ld r6,r7 + ldb rl0,#%30 + rrdb rl0,rh4 + ldb @r6,rl0 + rrdb rl0,rh4 + dec r6,#1 + ldb @r6,rl0 + rrdb rl0,rl3 + dec r6,#1 + ldb @r6,rl0 + rrdb rl0,rl3 + dec r6,#1 + ldb @r6,rl0 + rrdb rl0,rh3 + dec r6,#1 + ldb @r6,rl0 + rrdb rl0,rh3 + dec r6,#1 + ldb @r6,rl0 + rrdb rl0,rl2 + dec r6,#1 + ldb @r6,rl0 + rrdb rl0,rl2 + dec r6,#1 + ldb @r6,rl0 + rrdb rl0,rh2 + dec r6,#1 + ldb @r6,rl0 + rrdb rl0,rh2 + dec r6,#1 + ldb @r6,rl0 + ldb rl0,#%30 + ldk r1,#10 + cpirb rl0,@r6,r1,nz + dec r6,#1 + ld r2,r6 + ret + end __deciml +end decimal diff --git a/WEGA/src/lib/libc/gen/goodmagic.c b/WEGA/src/lib/libc/gen/goodmagic.c new file mode 100644 index 0000000..8369b09 --- /dev/null +++ b/WEGA/src/lib/libc/gen/goodmagic.c @@ -0,0 +1,39 @@ +/* @[$] goodmagic.c 2.1 09/12/83 11:24:52 - 87wega3.2 */ + +#include + +int swap_flg; +int magics[10] = { + 0x0000, + N_MAGIC1,N_MAGIC3,N_MAGIC4, + S_MAGIC1,S_MAGIC3,S_MAGIC4, + X_MAGIC1,X_MAGIC3,X_MAGIC4 +}; + +int +goodmagic(magic) +int magic; +{ + register int i; + + swap_flg=0x0000; +foo0: + magics[0]=(unsigned)magic; + + i=10; +foo1: + i--; + if(magic!=magics[i]) + goto foo1; + if(i) + goto foo2; + magic=swap(magic); + if(!swap_flg++) + goto foo0; +foo2: + if(i) + goto foo3; + swap_flg=0x0000; +foo3: + return(i); +} diff --git a/WEGA/src/lib/libc/gen/readsym.c b/WEGA/src/lib/libc/gen/readsym.c new file mode 100644 index 0000000..723c2e9 --- /dev/null +++ b/WEGA/src/lib/libc/gen/readsym.c @@ -0,0 +1,28 @@ +/* @[$] readsym.c 2.2 09/12/83 11:29:50 - 87wega3.2 */ + +#include +#include + +readsym(sym, stream) +struct { + struct s_nlist bol; + char extra[128]; +} *sym; +FILE *stream; +{ + register long foo1; + register int foo2; + + if(fread(sym,14,1,stream)!=1) + return(0xffff); + + if((*sym->bol.sn_name)&128) + return(0); + + foo1 = ((*sym->bol.sn_name)&127)-8; + + if(fread(sym,14,foo1,stream) == foo1) + return(foo1); + + return(); +} diff --git a/WEGA/src/lib/libc/gen/setret.s b/WEGA/src/lib/libc/gen/setret.s new file mode 100644 index 0000000..18c21fd --- /dev/null +++ b/WEGA/src/lib/libc/gen/setret.s @@ -0,0 +1,29 @@ +! @[$] setret.s 2.1 09/12/83 11:30:27 - 87wega3.2 ! + +setret module + + global + _setret procedure + entry + ld r2,r7 + ld r7,@r15 + ldm @r2,r7,#9 + clr r2 + ret + end _setret + + _saveret procedure + entry + ldm %0002(r7),r8,#6 + ret + end _saveret + + _longret procedure + entry + ld r3,r7 + ld r2,r6 + ldm r7,@r3,#9 + ld @r15,r7 + ret + end _longret +end setret