├── unix_v1 ├── src │ ├── cmd │ │ ├── as25.s │ │ ├── colon.s │ │ ├── exit.c │ │ ├── chmod.s │ │ └── ln.s │ ├── lib │ │ ├── exit.s │ │ ├── chdir.s │ │ ├── makdir.s │ │ ├── close.s │ │ ├── unlink.s │ │ ├── switch.s │ │ ├── chmod.s │ │ ├── chown.s │ │ ├── setuid.s │ │ ├── link.s │ │ ├── execl.s │ │ ├── time.s │ │ ├── getuid.s │ │ ├── crt0.s │ │ ├── open.s │ │ ├── creat.s │ │ ├── getchr.s │ │ ├── execv.s │ │ ├── seek.s │ │ ├── fork.s │ │ ├── write.s │ │ ├── read.s │ │ ├── fstat.s │ │ ├── stat.s │ │ ├── gtty.s │ │ ├── stty.s │ │ ├── ctime.s │ │ ├── wait.s │ │ ├── intr.s │ │ └── putchr.s │ └── Readme ├── pages │ ├── e04-07 │ ├── e12-04 │ ├── e03-04 │ ├── e00-10 │ ├── e09-08 │ ├── e08-09 │ ├── e00-07 │ ├── e00-08 │ ├── e10-02 │ ├── e00-06 │ └── e06-06 ├── fs │ ├── usr │ │ ├── boot │ │ │ ├── run │ │ │ └── unix.out │ │ ├── x │ │ ├── lib │ │ │ ├── c0 │ │ │ ├── c1 │ │ │ ├── bilib.a │ │ │ ├── filib.a │ │ │ ├── liba.a │ │ │ ├── libb.a │ │ │ ├── libc.a │ │ │ └── libf.a │ │ ├── fort │ │ │ ├── fc1 │ │ │ ├── fc2 │ │ │ ├── fc3 │ │ │ └── fc4 │ │ ├── sys │ │ │ ├── a.out │ │ │ └── core │ │ ├── jack │ │ │ ├── a.out │ │ │ └── x.f │ │ └── ken │ │ │ └── maki.s │ ├── new │ │ ├── usr │ │ │ └── boot │ │ │ │ ├── run │ │ │ │ └── wunix │ │ └── etc │ │ │ ├── init │ │ │ ├── uids │ │ │ └── passwd │ └── root │ │ ├── bin │ │ ├── : │ │ ├── ar │ │ ├── as │ │ ├── bas │ │ ├── cal │ │ ├── cat │ │ ├── cc │ │ ├── cmp │ │ ├── cp │ │ ├── date │ │ ├── db │ │ ├── dc │ │ ├── df │ │ ├── ds │ │ ├── dsw │ │ ├── du │ │ ├── echo │ │ ├── ed │ │ ├── exit │ │ ├── fc │ │ ├── find │ │ ├── form │ │ ├── goto │ │ ├── if │ │ ├── ld │ │ ├── ln │ │ ├── ls │ │ ├── mail │ │ ├── maki │ │ ├── mesg │ │ ├── mv │ │ ├── nm │ │ ├── od │ │ ├── pr │ │ ├── rew │ │ ├── rm │ │ ├── roff │ │ ├── sh │ │ ├── size │ │ ├── skip │ │ ├── sort │ │ ├── stat │ │ ├── stty │ │ ├── su │ │ ├── sum │ │ ├── tap │ │ ├── tm │ │ ├── tty │ │ ├── un │ │ ├── wc │ │ ├── who │ │ ├── chball │ │ ├── check │ │ ├── chmod │ │ ├── chown │ │ ├── login │ │ ├── mkdir │ │ ├── rmdir │ │ ├── strip │ │ └── write │ │ ├── etc │ │ ├── as2 │ │ ├── glob │ │ ├── init │ │ ├── msh │ │ ├── std0 │ │ ├── getty │ │ ├── suftab │ │ ├── uids │ │ └── passwd │ │ └── tmp │ │ ├── etma │ │ ├── ttmp │ │ └── utmp ├── boot │ ├── bos │ ├── m792low.load │ ├── m792uv1.load │ ├── simh.cfg │ ├── simh_cold.cfg │ ├── installboot │ ├── m792low.s │ └── m792uv1.s ├── Makefile ├── tools │ ├── disaout │ │ ├── Makefile │ │ └── README │ ├── Makefile │ ├── tap │ ├── apout │ │ └── LCLINT │ ├── rebuild-split │ ├── as │ ├── fixaout.py │ └── rebuild ├── patches │ ├── core │ │ ├── shorig.patch │ │ ├── initorig.patch │ │ ├── shell.patch │ │ ├── vec0407.patch │ │ ├── ecore.patch │ │ └── fastout.patch │ ├── cold.patch │ └── fixV7div.patch ├── Credits └── simh.cfg ├── unix_v6 ├── yacc │ ├── lib │ │ ├── zacc.c │ │ ├── zinit.c │ │ ├── main.c │ │ └── zerr.c │ ├── run │ └── source │ │ └── y5.c ├── mdec │ ├── reset.s │ ├── rrk.s │ ├── rrp.s │ ├── wrk.s │ ├── wrp.s │ ├── rhp.s │ ├── whp.s │ ├── rk.s │ ├── rp.s │ ├── rkf.s │ ├── tc.s │ ├── hp.s │ ├── tm.s │ └── mcopy.s ├── as │ ├── as25.s │ └── run ├── s2 │ ├── sync.c │ ├── tty.s │ ├── update.s │ ├── sleep.c │ ├── opr.c │ ├── rew.s │ ├── nohup.c │ ├── pfe.s │ ├── size.c │ ├── mknod.c │ ├── nice.c │ ├── tp4.s │ ├── mesg.c │ └── tee.c ├── iolib │ ├── cfree.c │ ├── relvec.c │ ├── getvec.c │ ├── calloc.c │ ├── getch.c │ ├── dummy.s │ ├── putch.c │ ├── clenf.c │ ├── tmpnam.c │ ├── iehzap.c │ ├── ciodec.c │ ├── system.c │ ├── cexit.c │ ├── cerror.c │ ├── nodig.c │ ├── wdleng.c │ ├── nexch.c │ ├── puts.c │ ├── revput.c │ ├── gets.c │ ├── unget.c │ ├── ceof.c │ ├── cflush.c │ ├── cwrd.c │ ├── maktab.c │ ├── copen.c │ ├── cclose.c │ ├── cputc.c │ ├── cgetc.c │ ├── run │ └── makbuf.c ├── s1 │ ├── exit.c │ ├── echo.c │ ├── cpall.c │ ├── chmod.c │ ├── db4.s │ └── ln.c ├── s4 │ ├── hmul.s │ ├── abort.s │ ├── ffltpr.s │ ├── ldfps.s │ ├── getcsw.s │ ├── getpid.s │ ├── getuid.s │ ├── exit.s │ ├── cerror.s │ ├── getgid.s │ ├── abs.s │ ├── close.s │ ├── dup.s │ ├── crt0.s │ ├── chdir.s │ ├── execl.s │ ├── kill.s │ ├── chmod.s │ ├── chown.s │ ├── link.s │ ├── creat.s │ ├── csv.s │ ├── atoi.c │ ├── fcrt0.s │ ├── fstat.s │ ├── gtty.s │ ├── fork.s │ ├── ltod.s │ ├── getchr.s │ ├── ladd.s │ ├── execv.s │ ├── getpw.c │ └── locv.s ├── tmg │ └── tmgb │ │ ├── end.s │ │ ├── trans.s │ │ ├── ignore.s │ │ ├── discd.s │ │ ├── shift.s │ │ ├── lvrv.s │ │ ├── params.s │ │ ├── tx.s │ │ ├── f.s │ │ ├── trace.s │ │ ├── append.s │ │ ├── any.s │ │ ├── char.s │ │ ├── putoct.s │ │ ├── octal.s │ │ ├── string.s │ │ ├── decmal.s │ │ ├── unary.s │ │ ├── table.s │ │ ├── ctest.s │ │ ├── inc.s │ │ ├── bundle.s │ │ ├── mult.s │ │ ├── putcal.s │ │ ├── push.s │ │ ├── putdec.s │ │ ├── infix.s │ │ ├── tq.s │ │ ├── px.s │ │ ├── copy.s │ │ ├── reln.s │ │ ├── jget.s │ │ ├── emit.s │ │ └── getnam.s ├── m6 │ ├── run │ └── m61.c ├── sno │ ├── run │ └── sno.h ├── s3 │ ├── savr5.s │ ├── fakfp.s │ ├── dpadd.s │ ├── ldiv.s │ ├── fmod.s │ ├── rand.s │ ├── mesg.s │ ├── fpx.s │ ├── floor.s │ ├── switch.s │ ├── run │ ├── pow.s │ └── ttyn.s ├── fort │ ├── rt │ │ ├── rx.s │ │ ├── r8.s │ │ ├── rd.s │ │ ├── ra.s │ │ ├── r3.s │ │ ├── r5.s │ │ ├── r0.s │ │ ├── rf.s │ │ ├── rb.s │ │ ├── re.s │ │ ├── r9.s │ │ └── r4.s │ ├── rt1 │ │ ├── tanh.f │ │ ├── idint.s │ │ ├── clog.f │ │ ├── iabs.s │ │ ├── aint.s │ │ ├── aimag.s │ │ ├── ccos.f │ │ ├── csin.f │ │ ├── dble.s │ │ ├── dimag.s │ │ ├── sngl.s │ │ ├── float.s │ │ ├── dclog.f │ │ ├── csqrt.f │ │ ├── conjg.s │ │ ├── dccos.f │ │ ├── dcsin.f │ │ ├── ifix.s │ │ ├── real.s │ │ ├── abs.s │ │ ├── dcsqrt.f │ │ ├── cos.s │ │ ├── sin.s │ │ ├── atan.s │ │ ├── dim.s │ │ ├── idim.s │ │ ├── isign.s │ │ ├── sqrt.s │ │ ├── alog.s │ │ ├── exp.s │ │ ├── mod.s │ │ ├── atan2.s │ │ ├── sign.s │ │ ├── alog10.s │ │ ├── cmplx.s │ │ ├── amod.s │ │ ├── cexp.s │ │ ├── amax0.s │ │ ├── amin0.s │ │ ├── amin1.s │ │ ├── amax1.s │ │ └── cabs.s │ ├── rt2 │ │ ├── nice.s │ │ ├── ctime.s │ │ ├── setfil.s │ │ ├── rand.s │ │ ├── openrw.s │ │ └── rio.s │ ├── fx │ │ ├── fxf.s │ │ ├── fxe.s │ │ ├── fx7.s │ │ ├── fx6.s │ │ ├── fxb.s │ │ ├── fxa.s │ │ ├── fxc.s │ │ ├── fx1.s │ │ ├── fx5.s │ │ ├── fxd.s │ │ └── fx3.s │ ├── f2 │ │ └── f21.s │ ├── f1 │ │ └── f16.s │ ├── f4 │ │ └── f41.s │ └── io │ │ └── iox.s ├── rat │ ├── run │ └── r.h ├── s5 │ ├── sync.s │ ├── sleep.s │ ├── times.s │ ├── stime.s │ ├── nice.s │ ├── prof.s │ ├── setuid.s │ ├── setgid.s │ ├── makdir.s │ ├── mcount.s │ ├── pipe.s │ ├── time.s │ ├── unlink.s │ ├── mdate.s │ ├── umount.s │ ├── open.s │ ├── seek.s │ ├── mount.s │ ├── mknod.s │ ├── write.s │ ├── read.s │ ├── stat.s │ ├── stty.s │ ├── ptrace.s │ ├── wait.s │ ├── rin.c │ ├── reset.s │ ├── perror.c │ ├── mon.c │ ├── sbrk.s │ └── putchr.s ├── salloc │ ├── run │ ├── zero.s │ ├── bsp.s │ ├── getch.s │ ├── length.s │ ├── bword.s │ └── rewind.s ├── s7 │ ├── run │ ├── ne5.c │ └── ne.h ├── cref │ ├── index │ │ ├── econs.h │ │ └── ind2.c │ ├── mcons.h │ └── run ├── c │ └── run └── run └── primeval-c └── Caldera-license.pdf /unix_v1/src/cmd/as25.s: -------------------------------------------------------------------------------- 1 | / as25 is empty 2 | -------------------------------------------------------------------------------- /unix_v6/yacc/lib/zacc.c: -------------------------------------------------------------------------------- 1 | yyaccpt(){} 2 | -------------------------------------------------------------------------------- /unix_v6/yacc/lib/zinit.c: -------------------------------------------------------------------------------- 1 | yyinit(){} 2 | -------------------------------------------------------------------------------- /unix_v6/mdec/reset.s: -------------------------------------------------------------------------------- 1 | / reset 2 | 5 3 | rts pc 4 | -------------------------------------------------------------------------------- /unix_v6/as/as25.s: -------------------------------------------------------------------------------- 1 | / 2 | / 3 | 4 | / as25 is empty 5 | -------------------------------------------------------------------------------- /unix_v6/s2/sync.c: -------------------------------------------------------------------------------- 1 | main() 2 | { 3 | 4 | sync(); 5 | } 6 | -------------------------------------------------------------------------------- /unix_v6/mdec/rrk.s: -------------------------------------------------------------------------------- 1 | / read rk 2 | 3 | rblk: 4 | iocom = 5 5 | -------------------------------------------------------------------------------- /unix_v6/mdec/rrp.s: -------------------------------------------------------------------------------- 1 | / read rp 2 | 3 | rblk: 4 | iocom = 5 5 | -------------------------------------------------------------------------------- /unix_v6/mdec/wrk.s: -------------------------------------------------------------------------------- 1 | / write rk 2 | 3 | wblk: 4 | iocom = 3 5 | -------------------------------------------------------------------------------- /unix_v6/mdec/wrp.s: -------------------------------------------------------------------------------- 1 | / write rp 2 | 3 | wblk: 4 | iocom = 3 5 | -------------------------------------------------------------------------------- /unix_v6/iolib/cfree.c: -------------------------------------------------------------------------------- 1 | cfree (ptr) 2 | { 3 | free(ptr); 4 | } 5 | -------------------------------------------------------------------------------- /unix_v6/iolib/relvec.c: -------------------------------------------------------------------------------- 1 | relvec (ptr) 2 | { 3 | free(ptr); 4 | } 5 | -------------------------------------------------------------------------------- /unix_v6/mdec/rhp.s: -------------------------------------------------------------------------------- 1 | / hpread 2 | 3 | rblk: 4 | 5 | iocom = 71 6 | -------------------------------------------------------------------------------- /unix_v6/mdec/whp.s: -------------------------------------------------------------------------------- 1 | / hpwrite 2 | 3 | wblk: 4 | 5 | iocom = 61 6 | -------------------------------------------------------------------------------- /unix_v1/pages/e04-07: -------------------------------------------------------------------------------- 1 | / key 2 | br 1b 3 | -------------------------------------------------------------------------------- /unix_v1/pages/e12-04: -------------------------------------------------------------------------------- 1 | 2 | offset: .=.+2 3 | zero: .=.+8; .=.+6; .=.+2 4 | -------------------------------------------------------------------------------- /unix_v1/src/cmd/colon.s: -------------------------------------------------------------------------------- 1 | / colon -- do nothing 2 | 3 | sys exit 4 | 5 | -------------------------------------------------------------------------------- /unix_v6/iolib/getvec.c: -------------------------------------------------------------------------------- 1 | getvec (n) 2 | { 3 | return (alloc(n)); 4 | } 5 | -------------------------------------------------------------------------------- /unix_v6/iolib/calloc.c: -------------------------------------------------------------------------------- 1 | calloc(n, s) 2 | { 3 | return(alloc(n*s)); 4 | } 5 | -------------------------------------------------------------------------------- /unix_v1/fs/usr/boot/run: -------------------------------------------------------------------------------- 1 | as bos.s 2 | mv a.out bos 3 | as msys2.s 4 | mv a.out msys2 5 | -------------------------------------------------------------------------------- /unix_v6/iolib/getch.c: -------------------------------------------------------------------------------- 1 | getchar() 2 | { 3 | extern cin; 4 | return (cgetc(cin)); 5 | } 6 | -------------------------------------------------------------------------------- /unix_v1/fs/new/usr/boot/run: -------------------------------------------------------------------------------- 1 | as bos.s 2 | mv a.out bos 3 | as msys.s 4 | mv a.out msys 5 | -------------------------------------------------------------------------------- /unix_v1/fs/usr/x: -------------------------------------------------------------------------------- 1 | tap x\ 2 | ./fort/fc1\ 3 | ./fort/fc2\ 4 | ./fort/fc3\ 5 | ./fort/fc4 6 | -------------------------------------------------------------------------------- /unix_v6/s1/exit.c: -------------------------------------------------------------------------------- 1 | /* exit -- end runcom */ 2 | 3 | main() { 4 | seek(0, 0, 2); 5 | } 6 | -------------------------------------------------------------------------------- /unix_v1/boot/bos: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mrquincle/ancient-c-compilers/HEAD/unix_v1/boot/bos -------------------------------------------------------------------------------- /unix_v1/src/cmd/exit.c: -------------------------------------------------------------------------------- 1 | /* exit -- end runcom */ 2 | 3 | main() { 4 | seek(0, 0, 2); 5 | } 6 | -------------------------------------------------------------------------------- /unix_v6/iolib/dummy.s: -------------------------------------------------------------------------------- 1 | .globl ndigit 2 | .globl _ieh305i 3 | ndigit: .=.+2 4 | _ieh305i: .=.+2 5 | -------------------------------------------------------------------------------- /unix_v6/iolib/putch.c: -------------------------------------------------------------------------------- 1 | putchar (c) 2 | char c; 3 | { 4 | extern cout; 5 | cputc(c,cout); 6 | } 7 | -------------------------------------------------------------------------------- /unix_v6/s4/hmul.s: -------------------------------------------------------------------------------- 1 | .globl _hmul 2 | 3 | _hmul: 4 | mov 2(sp),r0 5 | mul 4(sp),r0 6 | rts pc 7 | -------------------------------------------------------------------------------- /unix_v6/tmg/tmgb/end.s: -------------------------------------------------------------------------------- 1 | .globl end 2 | / the driving tables ended just before here 3 | end: 4 | -------------------------------------------------------------------------------- /unix_v6/m6/run: -------------------------------------------------------------------------------- 1 | cc -s -O m6?.c 2 | cmp a.out /usr/bin/m6 3 | cp a.out /usr/bin/m6 4 | rm a.out *.o 5 | -------------------------------------------------------------------------------- /unix_v1/fs/root/bin/:: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mrquincle/ancient-c-compilers/HEAD/unix_v1/fs/root/bin/: -------------------------------------------------------------------------------- /unix_v1/fs/usr/lib/c0: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mrquincle/ancient-c-compilers/HEAD/unix_v1/fs/usr/lib/c0 -------------------------------------------------------------------------------- /unix_v1/fs/usr/lib/c1: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mrquincle/ancient-c-compilers/HEAD/unix_v1/fs/usr/lib/c1 -------------------------------------------------------------------------------- /unix_v6/sno/run: -------------------------------------------------------------------------------- 1 | cc -s -O sno?.c 2 | cmp a.out /usr/bin/sno 3 | cp a.out /usr/bin/sno 4 | rm *.o a.out 5 | -------------------------------------------------------------------------------- /unix_v1/fs/new/etc/init: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mrquincle/ancient-c-compilers/HEAD/unix_v1/fs/new/etc/init -------------------------------------------------------------------------------- /unix_v1/fs/root/bin/ar: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mrquincle/ancient-c-compilers/HEAD/unix_v1/fs/root/bin/ar -------------------------------------------------------------------------------- /unix_v1/fs/root/bin/as: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mrquincle/ancient-c-compilers/HEAD/unix_v1/fs/root/bin/as -------------------------------------------------------------------------------- /unix_v1/fs/root/bin/bas: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mrquincle/ancient-c-compilers/HEAD/unix_v1/fs/root/bin/bas -------------------------------------------------------------------------------- /unix_v1/fs/root/bin/cal: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mrquincle/ancient-c-compilers/HEAD/unix_v1/fs/root/bin/cal -------------------------------------------------------------------------------- /unix_v1/fs/root/bin/cat: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mrquincle/ancient-c-compilers/HEAD/unix_v1/fs/root/bin/cat -------------------------------------------------------------------------------- /unix_v1/fs/root/bin/cc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mrquincle/ancient-c-compilers/HEAD/unix_v1/fs/root/bin/cc -------------------------------------------------------------------------------- /unix_v1/fs/root/bin/cmp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mrquincle/ancient-c-compilers/HEAD/unix_v1/fs/root/bin/cmp -------------------------------------------------------------------------------- /unix_v1/fs/root/bin/cp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mrquincle/ancient-c-compilers/HEAD/unix_v1/fs/root/bin/cp -------------------------------------------------------------------------------- /unix_v1/fs/root/bin/date: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mrquincle/ancient-c-compilers/HEAD/unix_v1/fs/root/bin/date -------------------------------------------------------------------------------- /unix_v1/fs/root/bin/db: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mrquincle/ancient-c-compilers/HEAD/unix_v1/fs/root/bin/db -------------------------------------------------------------------------------- /unix_v1/fs/root/bin/dc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mrquincle/ancient-c-compilers/HEAD/unix_v1/fs/root/bin/dc -------------------------------------------------------------------------------- /unix_v1/fs/root/bin/df: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mrquincle/ancient-c-compilers/HEAD/unix_v1/fs/root/bin/df -------------------------------------------------------------------------------- /unix_v1/fs/root/bin/ds: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mrquincle/ancient-c-compilers/HEAD/unix_v1/fs/root/bin/ds -------------------------------------------------------------------------------- /unix_v1/fs/root/bin/dsw: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mrquincle/ancient-c-compilers/HEAD/unix_v1/fs/root/bin/dsw -------------------------------------------------------------------------------- /unix_v1/fs/root/bin/du: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mrquincle/ancient-c-compilers/HEAD/unix_v1/fs/root/bin/du -------------------------------------------------------------------------------- /unix_v1/fs/root/bin/echo: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mrquincle/ancient-c-compilers/HEAD/unix_v1/fs/root/bin/echo -------------------------------------------------------------------------------- /unix_v1/fs/root/bin/ed: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mrquincle/ancient-c-compilers/HEAD/unix_v1/fs/root/bin/ed -------------------------------------------------------------------------------- /unix_v1/fs/root/bin/exit: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mrquincle/ancient-c-compilers/HEAD/unix_v1/fs/root/bin/exit -------------------------------------------------------------------------------- /unix_v1/fs/root/bin/fc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mrquincle/ancient-c-compilers/HEAD/unix_v1/fs/root/bin/fc -------------------------------------------------------------------------------- /unix_v1/fs/root/bin/find: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mrquincle/ancient-c-compilers/HEAD/unix_v1/fs/root/bin/find -------------------------------------------------------------------------------- /unix_v1/fs/root/bin/form: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mrquincle/ancient-c-compilers/HEAD/unix_v1/fs/root/bin/form -------------------------------------------------------------------------------- /unix_v1/fs/root/bin/goto: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mrquincle/ancient-c-compilers/HEAD/unix_v1/fs/root/bin/goto -------------------------------------------------------------------------------- /unix_v1/fs/root/bin/if: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mrquincle/ancient-c-compilers/HEAD/unix_v1/fs/root/bin/if -------------------------------------------------------------------------------- /unix_v1/fs/root/bin/ld: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mrquincle/ancient-c-compilers/HEAD/unix_v1/fs/root/bin/ld -------------------------------------------------------------------------------- /unix_v1/fs/root/bin/ln: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mrquincle/ancient-c-compilers/HEAD/unix_v1/fs/root/bin/ln -------------------------------------------------------------------------------- /unix_v1/fs/root/bin/ls: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mrquincle/ancient-c-compilers/HEAD/unix_v1/fs/root/bin/ls -------------------------------------------------------------------------------- /unix_v1/fs/root/bin/mail: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mrquincle/ancient-c-compilers/HEAD/unix_v1/fs/root/bin/mail -------------------------------------------------------------------------------- /unix_v1/fs/root/bin/maki: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mrquincle/ancient-c-compilers/HEAD/unix_v1/fs/root/bin/maki -------------------------------------------------------------------------------- /unix_v1/fs/root/bin/mesg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mrquincle/ancient-c-compilers/HEAD/unix_v1/fs/root/bin/mesg -------------------------------------------------------------------------------- /unix_v1/fs/root/bin/mv: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mrquincle/ancient-c-compilers/HEAD/unix_v1/fs/root/bin/mv -------------------------------------------------------------------------------- /unix_v1/fs/root/bin/nm: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mrquincle/ancient-c-compilers/HEAD/unix_v1/fs/root/bin/nm -------------------------------------------------------------------------------- /unix_v1/fs/root/bin/od: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mrquincle/ancient-c-compilers/HEAD/unix_v1/fs/root/bin/od -------------------------------------------------------------------------------- /unix_v1/fs/root/bin/pr: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mrquincle/ancient-c-compilers/HEAD/unix_v1/fs/root/bin/pr -------------------------------------------------------------------------------- /unix_v1/fs/root/bin/rew: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mrquincle/ancient-c-compilers/HEAD/unix_v1/fs/root/bin/rew -------------------------------------------------------------------------------- /unix_v1/fs/root/bin/rm: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mrquincle/ancient-c-compilers/HEAD/unix_v1/fs/root/bin/rm -------------------------------------------------------------------------------- /unix_v1/fs/root/bin/roff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mrquincle/ancient-c-compilers/HEAD/unix_v1/fs/root/bin/roff -------------------------------------------------------------------------------- /unix_v1/fs/root/bin/sh: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mrquincle/ancient-c-compilers/HEAD/unix_v1/fs/root/bin/sh -------------------------------------------------------------------------------- /unix_v1/fs/root/bin/size: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mrquincle/ancient-c-compilers/HEAD/unix_v1/fs/root/bin/size -------------------------------------------------------------------------------- /unix_v1/fs/root/bin/skip: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mrquincle/ancient-c-compilers/HEAD/unix_v1/fs/root/bin/skip -------------------------------------------------------------------------------- /unix_v1/fs/root/bin/sort: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mrquincle/ancient-c-compilers/HEAD/unix_v1/fs/root/bin/sort -------------------------------------------------------------------------------- /unix_v1/fs/root/bin/stat: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mrquincle/ancient-c-compilers/HEAD/unix_v1/fs/root/bin/stat -------------------------------------------------------------------------------- /unix_v1/fs/root/bin/stty: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mrquincle/ancient-c-compilers/HEAD/unix_v1/fs/root/bin/stty -------------------------------------------------------------------------------- /unix_v1/fs/root/bin/su: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mrquincle/ancient-c-compilers/HEAD/unix_v1/fs/root/bin/su -------------------------------------------------------------------------------- /unix_v1/fs/root/bin/sum: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mrquincle/ancient-c-compilers/HEAD/unix_v1/fs/root/bin/sum -------------------------------------------------------------------------------- /unix_v1/fs/root/bin/tap: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mrquincle/ancient-c-compilers/HEAD/unix_v1/fs/root/bin/tap -------------------------------------------------------------------------------- /unix_v1/fs/root/bin/tm: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mrquincle/ancient-c-compilers/HEAD/unix_v1/fs/root/bin/tm -------------------------------------------------------------------------------- /unix_v1/fs/root/bin/tty: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mrquincle/ancient-c-compilers/HEAD/unix_v1/fs/root/bin/tty -------------------------------------------------------------------------------- /unix_v1/fs/root/bin/un: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mrquincle/ancient-c-compilers/HEAD/unix_v1/fs/root/bin/un -------------------------------------------------------------------------------- /unix_v1/fs/root/bin/wc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mrquincle/ancient-c-compilers/HEAD/unix_v1/fs/root/bin/wc -------------------------------------------------------------------------------- /unix_v1/fs/root/bin/who: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mrquincle/ancient-c-compilers/HEAD/unix_v1/fs/root/bin/who -------------------------------------------------------------------------------- /unix_v1/fs/root/etc/as2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mrquincle/ancient-c-compilers/HEAD/unix_v1/fs/root/etc/as2 -------------------------------------------------------------------------------- /unix_v1/fs/root/etc/glob: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mrquincle/ancient-c-compilers/HEAD/unix_v1/fs/root/etc/glob -------------------------------------------------------------------------------- /unix_v1/fs/root/etc/init: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mrquincle/ancient-c-compilers/HEAD/unix_v1/fs/root/etc/init -------------------------------------------------------------------------------- /unix_v1/fs/root/etc/msh: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mrquincle/ancient-c-compilers/HEAD/unix_v1/fs/root/etc/msh -------------------------------------------------------------------------------- /unix_v1/fs/root/etc/std0: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mrquincle/ancient-c-compilers/HEAD/unix_v1/fs/root/etc/std0 -------------------------------------------------------------------------------- /unix_v1/fs/root/tmp/etma: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mrquincle/ancient-c-compilers/HEAD/unix_v1/fs/root/tmp/etma -------------------------------------------------------------------------------- /unix_v1/fs/root/tmp/ttmp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mrquincle/ancient-c-compilers/HEAD/unix_v1/fs/root/tmp/ttmp -------------------------------------------------------------------------------- /unix_v1/fs/root/tmp/utmp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mrquincle/ancient-c-compilers/HEAD/unix_v1/fs/root/tmp/utmp -------------------------------------------------------------------------------- /unix_v1/fs/usr/fort/fc1: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mrquincle/ancient-c-compilers/HEAD/unix_v1/fs/usr/fort/fc1 -------------------------------------------------------------------------------- /unix_v1/fs/usr/fort/fc2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mrquincle/ancient-c-compilers/HEAD/unix_v1/fs/usr/fort/fc2 -------------------------------------------------------------------------------- /unix_v1/fs/usr/fort/fc3: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mrquincle/ancient-c-compilers/HEAD/unix_v1/fs/usr/fort/fc3 -------------------------------------------------------------------------------- /unix_v1/fs/usr/fort/fc4: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mrquincle/ancient-c-compilers/HEAD/unix_v1/fs/usr/fort/fc4 -------------------------------------------------------------------------------- /unix_v1/fs/usr/sys/a.out: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mrquincle/ancient-c-compilers/HEAD/unix_v1/fs/usr/sys/a.out -------------------------------------------------------------------------------- /unix_v1/fs/usr/sys/core: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mrquincle/ancient-c-compilers/HEAD/unix_v1/fs/usr/sys/core -------------------------------------------------------------------------------- /unix_v1/boot/m792low.load: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mrquincle/ancient-c-compilers/HEAD/unix_v1/boot/m792low.load -------------------------------------------------------------------------------- /unix_v1/boot/m792uv1.load: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mrquincle/ancient-c-compilers/HEAD/unix_v1/boot/m792uv1.load -------------------------------------------------------------------------------- /unix_v1/fs/root/bin/chball: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mrquincle/ancient-c-compilers/HEAD/unix_v1/fs/root/bin/chball -------------------------------------------------------------------------------- /unix_v1/fs/root/bin/check: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mrquincle/ancient-c-compilers/HEAD/unix_v1/fs/root/bin/check -------------------------------------------------------------------------------- /unix_v1/fs/root/bin/chmod: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mrquincle/ancient-c-compilers/HEAD/unix_v1/fs/root/bin/chmod -------------------------------------------------------------------------------- /unix_v1/fs/root/bin/chown: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mrquincle/ancient-c-compilers/HEAD/unix_v1/fs/root/bin/chown -------------------------------------------------------------------------------- /unix_v1/fs/root/bin/login: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mrquincle/ancient-c-compilers/HEAD/unix_v1/fs/root/bin/login -------------------------------------------------------------------------------- /unix_v1/fs/root/bin/mkdir: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mrquincle/ancient-c-compilers/HEAD/unix_v1/fs/root/bin/mkdir -------------------------------------------------------------------------------- /unix_v1/fs/root/bin/rmdir: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mrquincle/ancient-c-compilers/HEAD/unix_v1/fs/root/bin/rmdir -------------------------------------------------------------------------------- /unix_v1/fs/root/bin/strip: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mrquincle/ancient-c-compilers/HEAD/unix_v1/fs/root/bin/strip -------------------------------------------------------------------------------- /unix_v1/fs/root/bin/write: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mrquincle/ancient-c-compilers/HEAD/unix_v1/fs/root/bin/write -------------------------------------------------------------------------------- /unix_v1/fs/root/etc/getty: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mrquincle/ancient-c-compilers/HEAD/unix_v1/fs/root/etc/getty -------------------------------------------------------------------------------- /unix_v1/fs/root/etc/suftab: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mrquincle/ancient-c-compilers/HEAD/unix_v1/fs/root/etc/suftab -------------------------------------------------------------------------------- /unix_v1/fs/usr/jack/a.out: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mrquincle/ancient-c-compilers/HEAD/unix_v1/fs/usr/jack/a.out -------------------------------------------------------------------------------- /unix_v1/fs/usr/lib/bilib.a: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mrquincle/ancient-c-compilers/HEAD/unix_v1/fs/usr/lib/bilib.a -------------------------------------------------------------------------------- /unix_v1/fs/usr/lib/filib.a: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mrquincle/ancient-c-compilers/HEAD/unix_v1/fs/usr/lib/filib.a -------------------------------------------------------------------------------- /unix_v1/fs/usr/lib/liba.a: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mrquincle/ancient-c-compilers/HEAD/unix_v1/fs/usr/lib/liba.a -------------------------------------------------------------------------------- /unix_v1/fs/usr/lib/libb.a: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mrquincle/ancient-c-compilers/HEAD/unix_v1/fs/usr/lib/libb.a -------------------------------------------------------------------------------- /unix_v1/fs/usr/lib/libc.a: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mrquincle/ancient-c-compilers/HEAD/unix_v1/fs/usr/lib/libc.a -------------------------------------------------------------------------------- /unix_v1/fs/usr/lib/libf.a: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mrquincle/ancient-c-compilers/HEAD/unix_v1/fs/usr/lib/libf.a -------------------------------------------------------------------------------- /unix_v1/fs/new/usr/boot/wunix: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mrquincle/ancient-c-compilers/HEAD/unix_v1/fs/new/usr/boot/wunix -------------------------------------------------------------------------------- /unix_v1/fs/usr/boot/unix.out: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mrquincle/ancient-c-compilers/HEAD/unix_v1/fs/usr/boot/unix.out -------------------------------------------------------------------------------- /unix_v6/s3/savr5.s: -------------------------------------------------------------------------------- 1 | / savr5 - for as progs that call c-callable entries 2 | 3 | .globl savr5 4 | .bss 5 | savr5: .=.+2 6 | -------------------------------------------------------------------------------- /primeval-c/Caldera-license.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mrquincle/ancient-c-compilers/HEAD/primeval-c/Caldera-license.pdf -------------------------------------------------------------------------------- /unix_v1/fs/usr/jack/x.f: -------------------------------------------------------------------------------- 1 | a = 2.3 2 | i = 10 3 | print 100, a, i 4 | 100 format(2hhi, f10.2, i5) 5 | end 6 | -------------------------------------------------------------------------------- /unix_v6/fort/rt/rx.s: -------------------------------------------------------------------------------- 1 | / 2 | / 3 | 4 | / rtx -- last routine 5 | 6 | .globl ecore 7 | 8 | .bss 9 | 10 | ecore: 11 | -------------------------------------------------------------------------------- /unix_v6/fort/rt1/tanh.f: -------------------------------------------------------------------------------- 1 | function tanh(a) 2 | 3 | b = exp(a) 4 | c = 1.0/b 5 | tanh = (b-c)/(b+c) 6 | return 7 | end 8 | -------------------------------------------------------------------------------- /unix_v6/tmg/tmgb/trans.s: -------------------------------------------------------------------------------- 1 | g = r4 2 | .globl succ,iget 3 | .globl trans 4 | 5 | trans: 6 | jsr pc,iget 7 | mov r0,(g)+ 8 | jmp succ 9 | -------------------------------------------------------------------------------- /unix_v1/fs/root/etc/uids: -------------------------------------------------------------------------------- 1 | root:0 2 | sys:1 3 | bin:3 4 | adm:3 5 | jack:10 6 | peter:11 7 | jay:12 8 | bob:13 9 | sun:14 10 | lee:15 11 | -------------------------------------------------------------------------------- /unix_v6/iolib/clenf.c: -------------------------------------------------------------------------------- 1 | _clenf (s) /* counts length of string */ 2 | char *s; 3 | { 4 | int n; 5 | for (n=0; *s++ != '\0'; n++); 6 | return (n);} 7 | -------------------------------------------------------------------------------- /unix_v6/iolib/tmpnam.c: -------------------------------------------------------------------------------- 1 | int IEH0958g 0; 2 | tmpnam(s) 3 | char *s; 4 | { 5 | printf(-1,s,"pl%d%c",getpid(),'a'+IEH0958g++); 6 | return(s); 7 | } 8 | -------------------------------------------------------------------------------- /unix_v6/rat/run: -------------------------------------------------------------------------------- 1 | yacc r.g 2 | cc -s -O r1.c r2.c lex.c -ly -lp 3 | cmp a.out /usr/lib/ratfor 4 | cp a.out /usr/lib/ratfor 5 | rm *.o a.out y.tab.c 6 | -------------------------------------------------------------------------------- /unix_v6/s5/sync.s: -------------------------------------------------------------------------------- 1 | .globl _sync 2 | sync = 36. 3 | 4 | _sync: 5 | mov r5,-(sp) 6 | mov sp,r5 7 | sys sync 8 | mov (sp)+,r5 9 | rts pc 10 | -------------------------------------------------------------------------------- /unix_v6/yacc/lib/main.c: -------------------------------------------------------------------------------- 1 | main( argc, argv ) int argc; char *argv[]; { 2 | yyinit( argc, argv ); 3 | if( yyparse() ) return; 4 | yyaccpt(); 5 | } 6 | -------------------------------------------------------------------------------- /unix_v6/iolib/iehzap.c: -------------------------------------------------------------------------------- 1 | IEHzap(s) 2 | { 3 | write(2,s,6); 4 | write(2,": argument count wrong\n",23); 5 | write(2,"That's all, folks\n",18); 6 | exit(); 7 | } 8 | -------------------------------------------------------------------------------- /unix_v6/iolib/ciodec.c: -------------------------------------------------------------------------------- 1 | struct fileps 2 | { 3 | char *buff, *bptr; 4 | int nchars, bsize; 5 | char eoferr, wrflag; 6 | }; 7 | extern struct fileps IEH3fpts[10]; 8 | -------------------------------------------------------------------------------- /unix_v6/tmg/tmgb/ignore.s: -------------------------------------------------------------------------------- 1 | f = r5 2 | .globl n 3 | .globl succ,iget 4 | .globl ignore 5 | 6 | ignore: 7 | jsr pc,iget 8 | mov (r0),n(f) 9 | jmp succ 10 | -------------------------------------------------------------------------------- /unix_v6/iolib/system.c: -------------------------------------------------------------------------------- 1 | system(str) 2 | char *str; 3 | { 4 | int status; 5 | if(fork() == 0) 6 | execl("/bin/sh", "sh", "-c", str, 0); 7 | wait(&status); 8 | } 9 | -------------------------------------------------------------------------------- /unix_v1/fs/new/etc/uids: -------------------------------------------------------------------------------- 1 | root:0 2 | sys:1 3 | bin:3 4 | adm:3 5 | jfo:4 6 | ken:6 7 | dmr:7 8 | jack:10 9 | peter:11 10 | jay:12 11 | bob:13 12 | sun:14 13 | lee:15 14 | -------------------------------------------------------------------------------- /unix_v6/s5/sleep.s: -------------------------------------------------------------------------------- 1 | .globl _sleep 2 | sleep = 35. 3 | 4 | _sleep: 5 | mov r5,-(sp) 6 | mov sp,r5 7 | mov 4(r5),r0 8 | sys sleep 9 | mov (sp)+,r5 10 | rts pc 11 | -------------------------------------------------------------------------------- /unix_v6/rat/r.h: -------------------------------------------------------------------------------- 1 | # 2 | extern int contfld; 3 | extern int dbg; 4 | extern int yyval; 5 | extern int *yypv; 6 | extern int yylval; 7 | extern int peek; 8 | extern int errorflag; 9 | -------------------------------------------------------------------------------- /unix_v6/s4/abort.s: -------------------------------------------------------------------------------- 1 | / C library -- abort 2 | 3 | .globl _abort 4 | iot = 4 5 | 6 | _abort: 7 | mov r5,-(sp) 8 | mov sp,r5 9 | iot 10 | mov (sp)+,r5 11 | rts pc 12 | -------------------------------------------------------------------------------- /unix_v6/tmg/tmgb/discd.s: -------------------------------------------------------------------------------- 1 | .globl release 2 | .globl discard 3 | .globl iget,succ 4 | 5 | discard: 6 | jsr pc,iget 7 | mov (r0),r1 8 | jsr pc,release 9 | jmp succ 10 | -------------------------------------------------------------------------------- /unix_v6/s4/ffltpr.s: -------------------------------------------------------------------------------- 1 | / C library-- fake floating output 2 | 3 | .globl pfloat 4 | .globl pscien 5 | 6 | pfloat: 7 | pscien: 8 | add $8,r4 9 | movb $'?,(r3)+ 10 | rts pc 11 | -------------------------------------------------------------------------------- /unix_v6/as/run: -------------------------------------------------------------------------------- 1 | as as1?.s 2 | ld -s -n a.out 3 | cmp a.out /bin/as 4 | cp a.out /bin/as 5 | as as2?.s 6 | ld -s -n a.out 7 | cmp a.out /lib/as2 8 | cp a.out /lib/as2 9 | rm a.out 10 | -------------------------------------------------------------------------------- /unix_v6/iolib/cexit.c: -------------------------------------------------------------------------------- 1 | cexit (rcode) 2 | { 3 | /* closes all files and exits */ 4 | int i; 5 | for (i = 0; i < 10; i++) 6 | cclose(i); 7 | exit(rcode); /* rcode courtesy of sny */ 8 | } 9 | -------------------------------------------------------------------------------- /unix_v6/s4/ldfps.s: -------------------------------------------------------------------------------- 1 | ldfps = 170100^tst 2 | / 3 | / ldfps(number); 4 | 5 | .globl _ldfps 6 | _ldfps: 7 | mov r5,-(sp) 8 | mov sp,r5 9 | ldfps 4(r5) 10 | mov (sp)+,r5 11 | rts pc 12 | -------------------------------------------------------------------------------- /unix_v6/s1/echo.c: -------------------------------------------------------------------------------- 1 | main(argc, argv) 2 | int argc; 3 | char *argv[]; 4 | { 5 | int i; 6 | 7 | argc--; 8 | for(i=1; i<=argc; i++) 9 | printf("%s%c", argv[i], i==argc? '\n': ' '); 10 | } 11 | -------------------------------------------------------------------------------- /unix_v6/s3/fakfp.s: -------------------------------------------------------------------------------- 1 | / fakefp -- fake floating point simulator 2 | 3 | .globl fptrap 4 | 5 | fptrap: 6 | sub $2,(sp) 7 | mov r0,-(sp) 8 | sys signal; 4; 0 9 | mov (sp)+,r0 10 | 2 / rti 11 | -------------------------------------------------------------------------------- /unix_v6/s4/getcsw.s: -------------------------------------------------------------------------------- 1 | / C library - getcsw 2 | 3 | / csw = getcsw(); 4 | 5 | .globl _getcsw 6 | 7 | _getcsw: 8 | mov r5,-(sp) 9 | mov sp,r5 10 | sys 38. 11 | mov (sp)+,r5 12 | rts pc 13 | -------------------------------------------------------------------------------- /unix_v6/yacc/run: -------------------------------------------------------------------------------- 1 | chdir lib 2 | cc -c -O *.c 3 | ar r /lib/liby.a *.o 4 | rm *.o 5 | chdir ../source 6 | cc -s -O y?.c 7 | cmp a.out /usr/bin/yacc 8 | cp a.out /usr/bin/yacc 9 | rm a.out *.o 10 | -------------------------------------------------------------------------------- /unix_v6/s4/getpid.s: -------------------------------------------------------------------------------- 1 | / getpid -- get process ID 2 | 3 | getpid = 20. 4 | 5 | .globl _getpid 6 | 7 | _getpid: 8 | mov r5,-(sp) 9 | mov sp,r5 10 | sys getpid 11 | mov (sp)+,r5 12 | rts pc 13 | 14 | -------------------------------------------------------------------------------- /unix_v6/s4/getuid.s: -------------------------------------------------------------------------------- 1 | / C library -- getuid 2 | 3 | / uid = getuid(); 4 | / 5 | 6 | .globl _getuid 7 | 8 | _getuid: 9 | mov r5,-(sp) 10 | mov sp,r5 11 | sys getuid 12 | mov (sp)+,r5 13 | rts pc 14 | -------------------------------------------------------------------------------- /unix_v6/tmg/tmgb/shift.s: -------------------------------------------------------------------------------- 1 | .globl .p,sprv 2 | .globl .sr,.sl 3 | 4 | / >> 5 | .sr: 6 | neg (sp) 7 | 8 | / << 9 | .sl: 10 | mov 4(sp),r1 11 | clr r0 12 | alsc (sp),r0 13 | mov r1,4(sp) 14 | jmp .p 15 | -------------------------------------------------------------------------------- /unix_v6/s4/exit.s: -------------------------------------------------------------------------------- 1 | / C library -- exit 2 | 3 | / exit(code) 4 | / code is return in r0 to system 5 | 6 | .globl _exit 7 | 8 | _exit: 9 | mov r5,-(sp) 10 | mov sp,r5 11 | mov 4(r5),r0 12 | sys exit 13 | 14 | -------------------------------------------------------------------------------- /unix_v6/tmg/tmgb/lvrv.s: -------------------------------------------------------------------------------- 1 | .globl .lv,.rv 2 | .globl succ 3 | 4 | / unary & 5 | 6 | .lv: 7 | mov 2(sp),(sp) 8 | jmp succ 9 | 10 | / * 11 | 12 | .rv: 13 | mov (sp),2(sp) 14 | mov *2(sp),(sp) 15 | jmp succ 16 | -------------------------------------------------------------------------------- /unix_v1/Makefile: -------------------------------------------------------------------------------- 1 | 2 | all : 3 | (cd tools; make) 4 | (cd build; make install) 5 | 6 | clean : 7 | (cd build; make clean) 8 | 9 | clobber : clean 10 | (cd tools; make clean) 11 | (cd build; make clobber) 12 | 13 | -------------------------------------------------------------------------------- /unix_v1/src/lib/exit.s: -------------------------------------------------------------------------------- 1 | / C library -- exit 2 | 3 | / exit(code) 4 | / code is return in r0 to system 5 | 6 | .globl _exit 7 | 8 | .data 9 | _exit: 10 | 1f 11 | .text 12 | 1: 13 | mov 2(sp),r0 14 | sys exit 15 | 16 | -------------------------------------------------------------------------------- /unix_v1/tools/disaout/Makefile: -------------------------------------------------------------------------------- 1 | CFLAGS= -g -Wall 2 | 3 | disaout: main.o aout.o magic.o opset.o syscalls.o symbols.o 4 | cc -o disaout main.o aout.o magic.o opset.o syscalls.o symbols.o 5 | 6 | clean: 7 | rm -f disaout *.o 8 | -------------------------------------------------------------------------------- /unix_v6/s4/cerror.s: -------------------------------------------------------------------------------- 1 | / C return sequence which 2 | / sets errno, returns -1. 3 | 4 | .globl cerror 5 | .comm _errno,2 6 | 7 | cerror: 8 | mov r0,_errno 9 | mov $-1,r0 10 | mov r5,sp 11 | mov (sp)+,r5 12 | rts pc 13 | -------------------------------------------------------------------------------- /unix_v6/s4/getgid.s: -------------------------------------------------------------------------------- 1 | / C library -- getgid 2 | 3 | / gid = getgid(); 4 | / 5 | 6 | getgid = 47. 7 | .globl _getgid 8 | 9 | _getgid: 10 | mov r5,-(sp) 11 | mov sp,r5 12 | sys getgid 13 | mov (sp)+,r5 14 | rts pc 15 | -------------------------------------------------------------------------------- /unix_v6/tmg/tmgb/params.s: -------------------------------------------------------------------------------- 1 | f = r5 2 | .globl iget 3 | .globl env,si 4 | .globl succ 5 | .globl params 6 | 7 | params: 8 | jsr pc,iget 9 | mov (r0),r0 10 | asl r0 11 | mov env(f),r1 12 | add r0,si(r1) 13 | jmp succ 14 | -------------------------------------------------------------------------------- /unix_v6/tmg/tmgb/tx.s: -------------------------------------------------------------------------------- 1 | i = r3 2 | .globl generate 3 | .globl obuild 4 | .globl .tx,.txs 5 | 6 | .txs: 7 | mov i,r0 8 | tst (i)+ 9 | br 1f 10 | .tx: 11 | mov (i)+,r0 12 | 1: 13 | jsr pc,obuild 14 | jmp generate 15 | -------------------------------------------------------------------------------- /unix_v6/iolib/cerror.c: -------------------------------------------------------------------------------- 1 | IEH3err (message, a, b, c, d, e) 2 | char message[]; 3 | { 4 | extern int cgoof; 5 | printf("ERROR "); 6 | printf(message, a, b, c, d, e); 7 | cputc('\n'); 8 | cexit(cgoof); 9 | } 10 | cgoof 127; 11 | -------------------------------------------------------------------------------- /unix_v6/iolib/nodig.c: -------------------------------------------------------------------------------- 1 | IEH3nodg (ch) 2 | char ch; 3 | { 4 | if (IEH3digt(ch)) return (0); 5 | switch (ch) 6 | { 7 | case 'E': 8 | case 'e': 9 | case '.': case '+': case '-': 10 | return (0); 11 | } 12 | return (1); 13 | } 14 | -------------------------------------------------------------------------------- /unix_v1/tools/Makefile: -------------------------------------------------------------------------------- 1 | CFLAGS=-g -Wall 2 | 3 | all: mkfs ml apout/apout 4 | 5 | mkfs: mkfs.c 6 | 7 | ml: ml.c 8 | 9 | apout/apout: 10 | (cd apout; make; rm *.o) 11 | 12 | clean: 13 | rm -f mkfs ml 14 | (cd apout; make clean) 15 | -------------------------------------------------------------------------------- /unix_v6/s2/tty.s: -------------------------------------------------------------------------------- 1 | / tty -- get tty number 2 | 3 | .globl ttyn 4 | 5 | clr r0 6 | jsr pc,ttyn 7 | movb r0,nam 8 | mov $1,r0 9 | sys write; name; 5 10 | sys exit 11 | 12 | .data 13 | name: 14 | 15 | nam: 16 | 17 | .even 18 | -------------------------------------------------------------------------------- /unix_v6/s5/times.s: -------------------------------------------------------------------------------- 1 | / C library -- times 2 | 3 | .globl _times 4 | times = 43. 5 | 6 | _times: 7 | mov r5,-(sp) 8 | mov sp,r5 9 | mov 4(r5),0f 10 | sys 0; 9f 11 | mov (sp)+,r5 12 | rts pc 13 | .data 14 | 9: 15 | sys times; 0:.. 16 | -------------------------------------------------------------------------------- /unix_v6/tmg/tmgb/f.s: -------------------------------------------------------------------------------- 1 | .globl .f 2 | .globl succ 3 | .globl seekchar,getword 4 | 5 | .f: 6 | mov (sp),r0 7 | mov r0,6(sp) 8 | mov 4(sp),r1 9 | jsr pc,seekchar 10 | jsr pc,getword 11 | mov r0,(sp) 12 | mov $-1,2(sp) 13 | jmp succ 14 | -------------------------------------------------------------------------------- /unix_v6/tmg/tmgb/trace.s: -------------------------------------------------------------------------------- 1 | i = r3 2 | .globl putch,putoct 3 | .globl trswitch 4 | .globl trace 5 | 6 | trace: 7 | jsr pc,putch 8 | mov i,r0 9 | jsr pc,putoct 10 | mov $'\n,r0 11 | jsr pc,putch 12 | rts pc 13 | .data 14 | trswitch: 0 15 | -------------------------------------------------------------------------------- /unix_v1/src/lib/chdir.s: -------------------------------------------------------------------------------- 1 | / C library -- chdir 2 | 3 | / error = chdir(string); 4 | 5 | .globl _chdir 6 | 7 | .data 8 | _chdir: 9 | 1f 10 | .text 11 | 1: 12 | mov 2(sp),0f 13 | clr r0 14 | sys chdir; 0:.. 15 | adc r0 16 | rts pc 17 | 18 | -------------------------------------------------------------------------------- /unix_v6/fort/rt1/idint.s: -------------------------------------------------------------------------------- 1 | / 2 | / 3 | 4 | / idint fortran function 5 | 6 | .globl idint. 7 | 8 | .globl retrn 9 | .globl temp 10 | 11 | idint.: temp 12 | .+2 13 | setd 14 | setl 15 | movf *2(r3),r0 16 | movfi r0,temp 17 | jmp retrn 18 | -------------------------------------------------------------------------------- /unix_v6/s5/stime.s: -------------------------------------------------------------------------------- 1 | .globl _stime, cerror 2 | 3 | _stime: 4 | mov r5,-(sp) 5 | mov sp,r5 6 | mov 4(sp),r1 7 | mov (r1)+,r0 8 | mov (r1),r1 9 | sys stime 10 | bec 1f 11 | jmp cerror 12 | 1: 13 | clr r0 14 | mov (sp)+,r5 15 | rts pc 16 | -------------------------------------------------------------------------------- /unix_v1/src/lib/makdir.s: -------------------------------------------------------------------------------- 1 | / C library -- makdir 2 | 3 | / error = makdir(string); 4 | 5 | .globl _makdir 6 | 7 | .data 8 | _makdir: 9 | 1f 10 | .text 11 | 1: 12 | mov 2(sp),0f 13 | clr r0 14 | sys makdir; 0:.. 15 | adc r0 16 | rts pc 17 | 18 | -------------------------------------------------------------------------------- /unix_v6/iolib/wdleng.c: -------------------------------------------------------------------------------- 1 | wdleng () 2 | /* returns number of bits in a machine integer */ 3 | /* written so kernighan can tell where he is running */ 4 | { 5 | int k, leng; 6 | k = leng = 1; 7 | while (k =<< 1) 8 | leng++; 9 | return (leng); 10 | } 11 | -------------------------------------------------------------------------------- /unix_v6/s4/abs.s: -------------------------------------------------------------------------------- 1 | / abs - int absolute value. 2 | / fabs - floating abs 3 | 4 | .globl _abs 5 | _abs: 6 | mov 2(sp),r0 7 | bge 1f 8 | neg r0 9 | 1: 10 | rts pc 11 | 12 | .globl _fabs 13 | _fabs: 14 | movf 2(sp),fr0 15 | absf fr0 16 | rts pc 17 | -------------------------------------------------------------------------------- /unix_v1/src/lib/close.s: -------------------------------------------------------------------------------- 1 | / C library -- close 2 | 3 | /error = close(file); 4 | 5 | .globl _close 6 | 7 | .data 8 | _close: 9 | 1f 10 | .text 11 | 1: 12 | mov 2(sp),r0 13 | clr r1 14 | sys close 15 | adc r1 16 | mov r1,r0 17 | rts pc 18 | 19 | -------------------------------------------------------------------------------- /unix_v6/fort/rt1/clog.f: -------------------------------------------------------------------------------- 1 | function clog(z1) 2 | complex clog, z1, z2 3 | dimension dummy(2) 4 | equivalence (a,z2,dummy(1)), (b,dummy(2)) 5 | 6 | z2 = z1 7 | c = cabs(z2) 8 | b = atan2(b, a) 9 | a = alog(c) 10 | clog = z2 11 | return 12 | end 13 | -------------------------------------------------------------------------------- /unix_v6/fort/rt1/iabs.s: -------------------------------------------------------------------------------- 1 | / 2 | / 3 | 4 | / iabs fortran function 5 | 6 | .globl iabs. 7 | 8 | .globl retrn 9 | .globl temp 10 | 11 | iabs.: temp 12 | .+2 13 | setl 14 | setd 15 | movif *2(r3),r0 16 | absf r0 17 | movfi r0,temp 18 | jmp retrn 19 | -------------------------------------------------------------------------------- /unix_v6/s2/update.s: -------------------------------------------------------------------------------- 1 | sys fork 2 | br 1f 3 | sys exit 4 | 1: 5 | clr r0 6 | sys close 7 | mov $1,r0 8 | sys close 9 | mov $2,r0 10 | sys close 11 | 1: 12 | sys sync 13 | mov $30.,r0 14 | sys sleep 15 | br 1b 16 | sleep = 35. 17 | sync = 36. 18 | -------------------------------------------------------------------------------- /unix_v1/src/lib/unlink.s: -------------------------------------------------------------------------------- 1 | / C library -- unlink 2 | 3 | / error = unlink(string); 4 | / 5 | 6 | .globl _unlink 7 | 8 | .data 9 | _unlink: 10 | 1f 11 | .text 12 | 1: 13 | mov 2(sp),0f 14 | clr r0 15 | sys unlink; 0:.. 16 | adc r0 17 | rts pc 18 | 19 | -------------------------------------------------------------------------------- /unix_v6/iolib/nexch.c: -------------------------------------------------------------------------------- 1 | IEH3nxch () 2 | /* returns next character which is not IEH3spce */ 3 | { 4 | char ch, cgetc(); 5 | extern int IEH3sfil; 6 | while ((ch = cgetc(IEH3sfil)) > 0 && IEH3spce(ch)); 7 | if (ch > 0) 8 | return (ch); 9 | return (-1); 10 | } 11 | -------------------------------------------------------------------------------- /unix_v6/tmg/tmgb/append.s: -------------------------------------------------------------------------------- 1 | .globl succ 2 | .globl putcstr,iget 3 | .globl append 4 | 5 | append: 6 | jsr pc,iget 7 | mov r0,-(sp) 8 | 1: 9 | movb *(sp),r0 10 | beq 1f 11 | jsr pc,putcstr 12 | inc (sp) 13 | br 1b 14 | 1: 15 | tst (sp)+ 16 | jmp succ 17 | -------------------------------------------------------------------------------- /unix_v1/src/lib/switch.s: -------------------------------------------------------------------------------- 1 | / C library -- switch 2 | 3 | .globl bswitch 4 | 5 | bswitch: 6 | mov *(sp)+,r1 7 | 1: 8 | cmp (r1)+,r0 9 | beq 1f 10 | tst (r1)+ 11 | bne 1b 12 | 2: 13 | mov -4(r1),pc 14 | 1: 15 | mov (r1)+,r0 16 | beq 2b 17 | mov r0,pc 18 | 19 | -------------------------------------------------------------------------------- /unix_v6/iolib/puts.c: -------------------------------------------------------------------------------- 1 | puts(str) 2 | char *str; 3 | { 4 | auto char *p,c; 5 | auto int f; 6 | extern int cout; 7 | if (nargs() != 1) 8 | IEHzap("puts "); 9 | p = str; 10 | while( (c = *p++)!= '\0') cputc(c,cout); 11 | cputc('\n',cout); 12 | return(str); 13 | } 14 | -------------------------------------------------------------------------------- /unix_v6/fort/rt1/aint.s: -------------------------------------------------------------------------------- 1 | / 2 | / 3 | 4 | / aint fortran function 5 | 6 | .globl aint. 7 | .globl temp 8 | 9 | one = 40200 10 | 11 | .globl retrn 12 | 13 | aint.: temp 14 | .+2 15 | setf 16 | movf *2(r3),r0 17 | modf $one,r0 18 | movf r1,temp 19 | jmp retrn 20 | -------------------------------------------------------------------------------- /unix_v6/iolib/revput.c: -------------------------------------------------------------------------------- 1 | # define bufflen 100 2 | IEH3revp (c) 3 | char c; 4 | { 5 | /* reversed line IEH3outputter */ 6 | extern char *IEH3outp, *IEH3outlim; 7 | *IEH3outp++ = c; 8 | if (IEH3outp > IEH3outlim+100) 9 | IEH3err("unprint producing too many chars"); 10 | } 11 | -------------------------------------------------------------------------------- /unix_v6/s5/nice.s: -------------------------------------------------------------------------------- 1 | / C library-- nice 2 | 3 | / error = nice(hownice) 4 | 5 | .globl _nice, cerror 6 | 7 | _nice: 8 | mov r5,-(sp) 9 | mov sp,r5 10 | mov 4(sp),r0 11 | sys nice 12 | bec 1f 13 | jmp cerror 14 | 1: 15 | clr r0 16 | mov (sp)+,r5 17 | rts pc 18 | -------------------------------------------------------------------------------- /unix_v1/src/lib/chmod.s: -------------------------------------------------------------------------------- 1 | / C library -- chmod 2 | 3 | / error = chmod(string, mode); 4 | 5 | .globl _chmod 6 | 7 | .data 8 | _chmod: 9 | 1f 10 | .text 11 | 1: 12 | mov 2(sp),0f 13 | mov 4(sp),0f+2 14 | clr r0 15 | sys chmod; 0:..; .. 16 | adc r0 17 | rts pc 18 | 19 | -------------------------------------------------------------------------------- /unix_v1/src/lib/chown.s: -------------------------------------------------------------------------------- 1 | / C library -- chown 2 | 3 | / error = chown(string, owner); 4 | 5 | .globl _chown 6 | 7 | .data 8 | _chown: 9 | 1f 10 | .text 11 | 1: 12 | mov 2(sp),0f 13 | mov 4(sp),0f+2 14 | clr r0 15 | sys chown; 0:..; .. 16 | adc r0 17 | rts pc 18 | 19 | -------------------------------------------------------------------------------- /unix_v6/s4/close.s: -------------------------------------------------------------------------------- 1 | / C library -- close 2 | 3 | / error = close(file); 4 | 5 | .globl _close, cerror 6 | 7 | _close: 8 | mov r5,-(sp) 9 | mov sp,r5 10 | mov 4(r5),r0 11 | sys close 12 | bec 1f 13 | jmp cerror 14 | 1: 15 | clr r0 16 | mov (sp)+,r5 17 | rts pc 18 | -------------------------------------------------------------------------------- /unix_v6/tmg/tmgb/any.s: -------------------------------------------------------------------------------- 1 | i = r3 2 | f = r5 3 | .globl x,j 4 | .globl succ,fail 5 | .globl ctest,iget 6 | .globl any 7 | 8 | any: 9 | mov j(f),-(sp) 10 | jsr pc,iget 11 | jsr pc,ctest 12 | bcs 1f 13 | mov (sp)+,j(f) 14 | jmp fail 15 | 1: 16 | tst (sp)+ 17 | jmp succ 18 | -------------------------------------------------------------------------------- /unix_v1/src/lib/setuid.s: -------------------------------------------------------------------------------- 1 | / C library -- setuid 2 | 3 | / error = setuid(uid); 4 | 5 | .globl _setuid 6 | 7 | .data 8 | _setuid: 9 | 1f 10 | .text 11 | 1: 12 | mov 2(sp),r0 13 | sys setuid 14 | bec 1f 15 | mov $1,r0 16 | rts pc 17 | 1: 18 | clr r0 19 | rts pc 20 | 21 | -------------------------------------------------------------------------------- /unix_v6/fort/rt1/aimag.s: -------------------------------------------------------------------------------- 1 | / 2 | / 3 | 4 | / aimag fortran function 5 | 6 | .globl aimag. 7 | 8 | .globl rval8p 9 | .globl retrn 10 | .globl temp 11 | 12 | aimag.: temp 13 | rval8p; 2 14 | .+2 15 | setf 16 | tstf (sp)+ 17 | movf (sp)+,r0 18 | movf r0,temp 19 | jmp retrn 20 | -------------------------------------------------------------------------------- /unix_v6/fort/rt2/nice.s: -------------------------------------------------------------------------------- 1 | / 2 | / 3 | 4 | / fortran nice subroutine 5 | 6 | .globl nice. 7 | .globl retrn, temp 8 | 9 | nice.: 10 | temp 11 | .+2 12 | mov $16.,r0 13 | tst *2(sp) 14 | beq 1f 15 | mov 2(r3),r0 16 | mov 2(r0),r0 17 | 1: 18 | sys nice 19 | jmp retrn 20 | 21 | -------------------------------------------------------------------------------- /unix_v6/s5/prof.s: -------------------------------------------------------------------------------- 1 | / profil 2 | 3 | .globl _profil 4 | _profil: 5 | mov r5,-(sp) 6 | mov sp,r5 7 | mov 4(r5),0f 8 | mov 6(r5),0f+2 9 | mov 10(r5),0f+4 10 | mov 12(r5),0f+6 11 | sys 0; 9f 12 | mov (sp)+,r5 13 | rts pc 14 | .data 15 | 9: 16 | sys 44.; 0:..; ..; ..; .. 17 | -------------------------------------------------------------------------------- /unix_v6/s5/setuid.s: -------------------------------------------------------------------------------- 1 | / C library -- setuid 2 | 3 | / error = setuid(uid); 4 | 5 | .globl _setuid, cerror 6 | 7 | _setuid: 8 | mov r5,-(sp) 9 | mov sp,r5 10 | mov 4(r5),r0 11 | sys setuid 12 | bec 1f 13 | jmp cerror 14 | 1: 15 | clr r0 16 | mov (sp)+,r5 17 | rts pc 18 | -------------------------------------------------------------------------------- /unix_v1/src/lib/link.s: -------------------------------------------------------------------------------- 1 | / C library -- link 2 | 3 | / error = link(old-file, new-file); 4 | / 5 | 6 | .globl _link 7 | 8 | .data 9 | _link: 10 | 1f 11 | .text 12 | 1: 13 | mov 2(sp),0f 14 | mov 4(sp),0f+2 15 | clr r0 16 | sys link; 0:..; .. 17 | adc r0 18 | rts pc 19 | 20 | -------------------------------------------------------------------------------- /unix_v6/fort/rt1/ccos.f: -------------------------------------------------------------------------------- 1 | function ccos(z1) 2 | complex ccos, z1, z2 3 | dimension dummy(2) 4 | equivalence (a,z2,dummy(1)), (b,dummy(2)) 5 | 6 | z2 = z1 7 | c = exp(b) 8 | d = 1.0/c 9 | b = sin(a)*(d-c)/2.0 10 | a = cos(a)*(c+d)/2.0 11 | ccos = z2 12 | return 13 | end 14 | -------------------------------------------------------------------------------- /unix_v6/fort/rt1/csin.f: -------------------------------------------------------------------------------- 1 | function csin(z1) 2 | complex csin, z1, z2 3 | dimension dummy(2) 4 | equivalence (a,z2,dummy(1)), (b,dummy(2)) 5 | 6 | z2 = z1 7 | c = exp(b) 8 | d = 1.0/c 9 | b = cos(a)*(c-d)/2.0 10 | a = sin(a)*(c+d)/2.0 11 | csin = z2 12 | return 13 | end 14 | -------------------------------------------------------------------------------- /unix_v6/fort/rt1/dble.s: -------------------------------------------------------------------------------- 1 | / 2 | / 3 | 4 | / dble fortran function 5 | 6 | .globl dble. 7 | 8 | .globl rval4p 9 | .globl lval 10 | .globl r4r8 11 | .globl gas8 12 | .globl retrn 13 | .globl temp 14 | 15 | dble.: temp 16 | lval; temp 17 | rval4p; 2 18 | r4r8 19 | gas8 20 | retrn 21 | -------------------------------------------------------------------------------- /unix_v6/fort/rt1/dimag.s: -------------------------------------------------------------------------------- 1 | / 2 | / 3 | 4 | / dimag fortran function 5 | 6 | .globl dimag. 7 | 8 | .globl rval16p 9 | .globl retrn 10 | .globl temp 11 | 12 | dimag.: temp 13 | rval16p; 2 14 | .+2 15 | setd 16 | tstf (sp)+ 17 | movf (sp)+,r0 18 | movf r0,temp 19 | jmp retrn 20 | -------------------------------------------------------------------------------- /unix_v6/fort/rt1/sngl.s: -------------------------------------------------------------------------------- 1 | / 2 | / 3 | 4 | / sngl fortran function 5 | 6 | .globl sngl. 7 | 8 | .globl rval8p 9 | .globl lval 10 | .globl r8r4 11 | .globl gas4 12 | .globl retrn 13 | .globl temp 14 | 15 | sngl.: temp 16 | lval; temp 17 | rval8p; 2 18 | r8r4 19 | gas4 20 | retrn 21 | -------------------------------------------------------------------------------- /unix_v6/fort/rt2/ctime.s: -------------------------------------------------------------------------------- 1 | .globl ctime., retrn, temp 2 | ctime.: temp 3 | .+2 4 | sys time 5 | clr temp 6 | mov r0,temp+2 7 | setd 8 | setl 9 | movif temp,fr0 10 | mulf $44200,fr0 11 | mov r1,temp+2 12 | movif temp,fr1 13 | addf fr1,fr0 14 | movf fr0,temp 15 | jmp retrn 16 | -------------------------------------------------------------------------------- /unix_v6/mdec/rk.s: -------------------------------------------------------------------------------- 1 | / rk05 disk driver 2 | 3 | rkda = 177412 4 | mov dska,r1 5 | clr r0 6 | div $12.,r0 7 | ash $4.,r0 8 | bis r1,r0 9 | mov $rkda,r1 10 | mov r0,(r1) 11 | mov ba,-(r1) 12 | mov wc,-(r1) 13 | mov $iocom,-(r1) 14 | 1: 15 | tstb (r1) 16 | bpl 1b 17 | rts pc 18 | -------------------------------------------------------------------------------- /unix_v6/s4/dup.s: -------------------------------------------------------------------------------- 1 | / C library -- dup 2 | 3 | / f = dup(of) 4 | / f == -1 for error 5 | 6 | dup = 41. 7 | 8 | .globl _dup, cerror 9 | 10 | _dup: 11 | mov r5,-(sp) 12 | mov sp,r5 13 | mov 4(r5),r0 14 | sys dup 15 | bec 1f 16 | jmp cerror 17 | 1: 18 | mov (sp)+,r5 19 | rts pc 20 | -------------------------------------------------------------------------------- /unix_v6/tmg/tmgb/char.s: -------------------------------------------------------------------------------- 1 | f = r5 2 | i = r3 3 | .globl j 4 | .globl jget,iget 5 | .globl char 6 | .globl succ,fail 7 | 8 | char: 9 | jsr pc,jget 10 | bne 1f 11 | tst (i)+ 12 | jmp fail 13 | 1: 14 | mov r0,-(sp) 15 | jsr pc,iget 16 | mov (sp)+,(r0) 17 | inc j(f) 18 | jmp succ 19 | -------------------------------------------------------------------------------- /unix_v1/src/lib/execl.s: -------------------------------------------------------------------------------- 1 | / C library -- execl 2 | 3 | / execl(file, arg1, arg2, ... , 0); 4 | / 5 | / 6 | .globl _execl 7 | 8 | .data 9 | _execl: 10 | 1f 11 | .text 12 | 1: 13 | mov 2(sp),0f 14 | mov sp,r0 15 | add $4,r0 16 | mov r0,0f+2 17 | sys exec; 0:..; .. 18 | rts pc 19 | 20 | -------------------------------------------------------------------------------- /unix_v1/src/lib/time.s: -------------------------------------------------------------------------------- 1 | / C library -- time 2 | 3 | / tvec = time(tvec); 4 | / 5 | / tvec[0], tvec[1] contain the time 6 | 7 | .globl _time 8 | 9 | .data 10 | _time: 11 | 1f 12 | .text 13 | 1: 14 | mov 2(sp),r0 15 | sys time 16 | mov ac,(r0) 17 | mov mq,2(r0) 18 | rts pc 19 | 20 | -------------------------------------------------------------------------------- /unix_v6/fort/rt1/float.s: -------------------------------------------------------------------------------- 1 | / 2 | / 3 | 4 | / float fortran function 5 | 6 | .globl float. 7 | 8 | .globl rval4p 9 | .globl lval 10 | .globl gas4 11 | .globl i4r4 12 | .globl retrn 13 | .globl temp 14 | 15 | float.: temp 16 | lval; temp 17 | rval4p; 2 18 | i4r4 19 | gas4 20 | retrn 21 | -------------------------------------------------------------------------------- /unix_v6/tmg/tmgb/putoct.s: -------------------------------------------------------------------------------- 1 | .globl putch,obuild 2 | .globl putoct 3 | 4 | 5 | putoct: mov r0,-(sp) 6 | bic $7,r0 7 | bic r0,(sp) 8 | clc 9 | ror r0 10 | ror r0 11 | ror r0 12 | beq 1f 13 | jsr pc,putoct 14 | 1: 15 | mov (sp)+,r0 16 | add $'0,r0 17 | jsr pc,putch 18 | rts pc 19 | -------------------------------------------------------------------------------- /unix_v1/src/lib/getuid.s: -------------------------------------------------------------------------------- 1 | / C library -- getuid 2 | 3 | / uid = getuid(); 4 | / 5 | / uid == -1 if error 6 | 7 | .globl _getuid 8 | 9 | .data 10 | _getuid: 11 | 1f 12 | .text 13 | 1: 14 | sys getuid 15 | bec 1f 16 | mov $-1,r0 17 | rts pc 18 | 1: 19 | bic $!377,r0 20 | rts pc 21 | 22 | -------------------------------------------------------------------------------- /unix_v6/fort/rt1/dclog.f: -------------------------------------------------------------------------------- 1 | function dclog(z1) 2 | double complex z1, z2, dclog 3 | double precision a,b,c 4 | double precision dummy(2) 5 | equivalence (a,z2,dummy(1)), (b,dummy(2)) 6 | 7 | z2=z1 8 | c=dcabs(z2) 9 | b=datan2(b,a) 10 | a=dlog(c) 11 | dclog=z2 12 | return 13 | end 14 | -------------------------------------------------------------------------------- /unix_v6/s5/setgid.s: -------------------------------------------------------------------------------- 1 | / C library -- setgid 2 | 3 | / error = setgid(uid); 4 | 5 | setgid = 46. 6 | .globl _setgid, cerror 7 | 8 | _setgid: 9 | mov r5,-(sp) 10 | mov sp,r5 11 | mov 4(r5),r0 12 | sys setgid 13 | bec 1f 14 | jmp cerror 15 | 1: 16 | clr r0 17 | mov (sp)+,r5 18 | rts pc 19 | -------------------------------------------------------------------------------- /unix_v1/fs/root/etc/passwd: -------------------------------------------------------------------------------- 1 | root::0:/: 2 | eroot::0:/:/bin/ed 3 | sys::1:/usr/sys: 4 | bin::3:/bin: 5 | adm::3:/usr/adm: 6 | s1::3:/usr/s1: 7 | s2::3:/usr/s2: 8 | jack::10:/usr/jack: 9 | peter::11:/usr/peter: 10 | jay::12:/usr/jay: 11 | bob::13:/usr/bob: 12 | sun::14:/usr/sun: 13 | lee::15:/usr/lee: 14 | -------------------------------------------------------------------------------- /unix_v1/tools/tap: -------------------------------------------------------------------------------- 1 | #!/bin/sh 2 | # 3 | # build a tape for simh containing the kernel sources 4 | # requires conv2.c to be built 5 | 6 | UNIXDIR=~/work/simh/unix-v7-4/run 7 | 8 | tools/rebuild 9 | (cd rebuilt; gtar -O -cf ../u.tar u?.s) 10 | tools/conv2 -o tape.tm u.tar 11 | cp tape.tm $UNIXDIR 12 | -------------------------------------------------------------------------------- /unix_v6/fort/rt1/csqrt.f: -------------------------------------------------------------------------------- 1 | function csqrt(z1) 2 | complex csqrt, z1, z2 3 | dimension dummy(2) 4 | equivalence (a,z2,dummy(1)), (b,dummy(2)) 5 | 6 | z2 = z1 7 | c = cabs(z2) 8 | c = sqrt(c) 9 | b = atan2(b, a)/2.0 10 | a = c*cos(b) 11 | b = c*sin(b) 12 | csqrt = z2 13 | return 14 | end 15 | -------------------------------------------------------------------------------- /unix_v6/tmg/tmgb/octal.s: -------------------------------------------------------------------------------- 1 | i = r3 2 | .globl putcall,iget,kput,putoct 3 | .globl generate,succ 4 | .globl octal 5 | 6 | octal: 7 | mov $1f+1,r0 8 | jsr pc,putcall 9 | jsr pc,iget 10 | mov (r0),r0 11 | jsr pc,kput 12 | jmp succ 13 | 1: 14 | mov (i),r0 15 | jsr pc,putoct 16 | jmp generate 17 | -------------------------------------------------------------------------------- /unix_v6/tmg/tmgb/string.s: -------------------------------------------------------------------------------- 1 | f = r5 2 | i = r3 3 | .globl j 4 | .globl succ 5 | .globl ctest,iget 6 | .globl string 7 | 8 | string: 9 | tst -(sp) 10 | jsr pc,iget 11 | 1: 12 | mov j(f),(sp) 13 | mov r0,-(sp) 14 | jsr pc,ctest 15 | mov (sp)+,r0 16 | bcs 1b 17 | mov (sp)+,j(f) 18 | jmp succ 19 | -------------------------------------------------------------------------------- /unix_v6/s4/crt0.s: -------------------------------------------------------------------------------- 1 | / C runtime startoff 2 | 3 | .globl savr5 4 | .globl _exit 5 | 6 | .globl _main 7 | 8 | start: 9 | setd 10 | mov sp,r0 11 | mov (r0),-(sp) 12 | tst (r0)+ 13 | mov r0,2(sp) 14 | jsr pc,_main 15 | mov r0,(sp) 16 | jsr pc,*$_exit 17 | sys exit 18 | 19 | .bss 20 | savr5: .=.+2 21 | -------------------------------------------------------------------------------- /unix_v6/tmg/tmgb/decmal.s: -------------------------------------------------------------------------------- 1 | i = r3 2 | .globl putcall,iget,kput,putdec 3 | .globl generate,succ 4 | .globl decimal 5 | 6 | decimal: 7 | mov $1f+1,r0 8 | jsr pc,putcall 9 | jsr pc,iget 10 | mov (r0),r0 11 | jsr pc,kput 12 | jmp succ 13 | 1: 14 | mov (i),r0 15 | jsr pc,putdec 16 | jmp generate 17 | -------------------------------------------------------------------------------- /unix_v1/src/lib/crt0.s: -------------------------------------------------------------------------------- 1 | / C runtime startoff 2 | 3 | .globl retrn 4 | 5 | .globl _main 6 | 7 | start: 8 | mov $mq,r4 9 | mov sp,r0 10 | mov (r0),-(sp) 11 | tst (r0)+ 12 | mov r0,2(sp) 13 | jsr pc,*_main 14 | clr r0 15 | sys exit 16 | 17 | retrn: 18 | mov r5,sp 19 | mov (sp)+,r5 20 | rts pc 21 | 22 | -------------------------------------------------------------------------------- /unix_v1/src/lib/open.s: -------------------------------------------------------------------------------- 1 | / C library -- open 2 | 3 | / file = open(string, mode) 4 | / 5 | / file == -1 means error 6 | 7 | .globl _open 8 | 9 | .data 10 | _open: 11 | 1f 12 | .text 13 | 1: 14 | mov 2(sp),0f 15 | mov 4(sp),0f+2 16 | sys open; 0:..; .. 17 | bec 1f 18 | mov $-1,r0 19 | 1: 20 | rts pc 21 | 22 | -------------------------------------------------------------------------------- /unix_v6/s3/dpadd.s: -------------------------------------------------------------------------------- 1 | / C library -- signed dp add 2 | 3 | / dpadd(l, i) 4 | / int l[2]; 5 | / l =+ i; 6 | 7 | .globl _dpadd 8 | 9 | _dpadd: 10 | mov r5,-(sp) 11 | mov sp,r5 12 | mov 4(r5),r0 13 | tst 6(r5) 14 | sxt r1 15 | add r1,(r0)+ 16 | add 6(r5),(r0) 17 | adc -(r0) 18 | mov (sp)+,r5 19 | rts pc 20 | -------------------------------------------------------------------------------- /unix_v6/s4/chdir.s: -------------------------------------------------------------------------------- 1 | / C library -- chdir 2 | 3 | / error = chdir(string); 4 | 5 | .globl _chdir, cerror 6 | 7 | _chdir: 8 | mov r5,-(sp) 9 | mov sp,r5 10 | mov 4(r5),0f 11 | sys 0; 9f 12 | bec 1f 13 | jmp cerror 14 | 1: 15 | clr r0 16 | mov (sp)+,r5 17 | rts pc 18 | .data 19 | 9: 20 | sys chdir; 0:.. 21 | -------------------------------------------------------------------------------- /unix_v6/tmg/tmgb/unary.s: -------------------------------------------------------------------------------- 1 | .globl succ 2 | .globl .ng,.nt,.cm 3 | 4 | / ! 5 | 6 | .nt: 7 | tst (sp) 8 | beq 1f 9 | clr (sp) 10 | br 9f 11 | 1: 12 | mov $1,(sp) 13 | br 9f 14 | 15 | /unary - 16 | 17 | .ng: 18 | neg (sp) 19 | br 9f 20 | 21 | / ~ 22 | 23 | .cm: 24 | com (sp) 25 | 26 | 9: 27 | jmp succ 28 | -------------------------------------------------------------------------------- /unix_v1/src/lib/creat.s: -------------------------------------------------------------------------------- 1 | / C library -- creat 2 | 3 | / file = creat(string, mode); 4 | / 5 | / file == -1 if error 6 | 7 | .globl _creat 8 | 9 | .data 10 | _creat: 11 | 1f 12 | .text 13 | 1: 14 | mov 2(sp),0f 15 | mov 4(sp),0f+2 16 | sys creat; 0:..; .. 17 | bec 1f 18 | mov $-1,r0 19 | 1: 20 | rts pc 21 | 22 | -------------------------------------------------------------------------------- /unix_v1/src/lib/getchr.s: -------------------------------------------------------------------------------- 1 | / C library -- getchar 2 | 3 | .globl _getchar 4 | .globl _fin 5 | 6 | .globl getc 7 | 8 | .data 9 | _getchar: 10 | 1f 11 | .text 12 | 1: 13 | jsr r5,getc; _fin 14 | bcs 1f 15 | tst r0 16 | beq 1b 17 | rts pc 18 | 1: 19 | clr r0 20 | rts pc 21 | 22 | .bss 23 | _fin: .=.+518. 24 | 25 | -------------------------------------------------------------------------------- /unix_v6/fort/rt1/conjg.s: -------------------------------------------------------------------------------- 1 | / 2 | / 3 | 4 | / conjg fortran function 5 | 6 | .globl conjg. 7 | 8 | .globl rval8p 9 | .globl retrn 10 | .globl temp 11 | 12 | conjg.: temp 13 | rval8p; 2 14 | .+2 15 | setf 16 | movf (sp)+,r0 17 | movf r0,temp 18 | movf (sp)+,r0 19 | negf r0 20 | movf r0,temp+4 21 | jmp retrn 22 | -------------------------------------------------------------------------------- /unix_v6/fort/rt1/dccos.f: -------------------------------------------------------------------------------- 1 | function dccos(z1) 2 | double complex dccos, z1, z2 3 | double precision dummy(2), a, b, c, d 4 | equivalence (a,z2,dummy(1)), (b,dummy(2)) 5 | 6 | z2 = z1 7 | c = dexp(b) 8 | d = 1.0d0/c 9 | b = dsin(a)*(d-c)/2.0d0 10 | a = dcos(a)*(c+d)/2.0d0 11 | dccos = z2 12 | return 13 | end 14 | -------------------------------------------------------------------------------- /unix_v6/fort/rt1/dcsin.f: -------------------------------------------------------------------------------- 1 | function dcsin(z1) 2 | double complex dcsin, z1, z2 3 | double precision dummy(2), a, b, c, d 4 | equivalence (a,z2,dummy(1)), (b,dummy(2)) 5 | 6 | z2 = z1 7 | c = dexp(b) 8 | d = 1.0d0/c 9 | b = dcos(a)*(c-d)/2.0d0 10 | a = dsin(a)*(c+d)/2.0d0 11 | dcsin = z2 12 | return 13 | end 14 | -------------------------------------------------------------------------------- /unix_v6/fort/rt1/ifix.s: -------------------------------------------------------------------------------- 1 | / 2 | / 3 | 4 | / ifix & int fortran functions 5 | 6 | .globl ifix. 7 | .globl int. 8 | 9 | .globl lval 10 | .globl r4i4 11 | .globl gas4 12 | .globl rval4p 13 | .globl retrn 14 | .globl temp 15 | 16 | int.: 17 | ifix.: temp 18 | lval; temp 19 | rval4p; 2 20 | r4i4 21 | gas4 22 | retrn 23 | -------------------------------------------------------------------------------- /unix_v6/fort/rt1/real.s: -------------------------------------------------------------------------------- 1 | / 2 | / 3 | 4 | / real & dreal fortran function 5 | 6 | .globl real. 7 | .globl dreal. 8 | 9 | .globl retrn 10 | .globl temp 11 | 12 | dreal.: temp 13 | .+2 14 | setd 15 | br 1f 16 | 17 | real.: temp 18 | .+2 19 | setf 20 | 1: 21 | movf *2(r3),r0 22 | movf r0,temp 23 | jmp retrn 24 | -------------------------------------------------------------------------------- /unix_v6/s4/execl.s: -------------------------------------------------------------------------------- 1 | / C library -- execl 2 | 3 | / execl(file, arg1, arg2, ... , 0); 4 | / 5 | 6 | .globl _execl, cerror 7 | 8 | _execl: 9 | mov r5,-(sp) 10 | mov sp,r5 11 | mov 4(r5),0f 12 | mov r5,r0 13 | add $6,r0 14 | mov r0,0f+2 15 | sys 0; 9f 16 | jmp cerror 17 | .data 18 | 9: 19 | sys exec; 0:..; .. 20 | -------------------------------------------------------------------------------- /unix_v6/s5/makdir.s: -------------------------------------------------------------------------------- 1 | / C library -- makdir 2 | 3 | / error = makdir(string); 4 | 5 | .globl _makdir, cerror 6 | 7 | _makdir: 8 | mov r5,-(sp) 9 | mov sp,r5 10 | mov 4(r5),0f 11 | sys 0; 9f 12 | bec 1f 13 | jmp cerror 14 | 1: 15 | clr r0 16 | mov (sp)+,r5 17 | rts pc 18 | .data 19 | 9: 20 | sys makdir; 0:.. 21 | -------------------------------------------------------------------------------- /unix_v6/fort/rt1/abs.s: -------------------------------------------------------------------------------- 1 | / 2 | / 3 | 4 | / abs & dabs fortran functions 5 | 6 | .globl abs. 7 | .globl dabs. 8 | 9 | .globl retrn 10 | .globl temp 11 | 12 | dabs.: temp 13 | .+2 14 | setd 15 | br 1f 16 | 17 | abs.: temp 18 | .+2 19 | setf 20 | 1: 21 | movf *2(r3),r0 22 | absf r0 23 | movf r0,temp 24 | jmp retrn 25 | -------------------------------------------------------------------------------- /unix_v6/iolib/gets.c: -------------------------------------------------------------------------------- 1 | gets (s) 2 | char *s; 3 | { /* gets (s) - read a string with cgetc and store in s */ 4 | char *p; 5 | extern int cin; 6 | if (nargs () == 2) 7 | IEHzap("gets "); 8 | p=s; 9 | while ((*s = cgetc(cin)) != '\n' && *s != '\0') s++; 10 | if (*p == '\0') return (0); 11 | *s = '\0'; 12 | return (p); 13 | } 14 | -------------------------------------------------------------------------------- /unix_v6/s5/mcount.s: -------------------------------------------------------------------------------- 1 | / count subroutine calls during profiling 2 | 3 | .globl mcount 4 | .comm countbase,2 5 | 6 | mcount: 7 | mov (r0),r1 8 | bne 1f 9 | mov countbase,r1 10 | beq 2f 11 | add $6,countbase 12 | mov (sp),(r1)+ 13 | mov r1,(r0) 14 | 1: 15 | inc 2(r1) 16 | bne 2f 17 | inc (r1) 18 | 2: 19 | rts pc 20 | 21 | -------------------------------------------------------------------------------- /unix_v6/s5/pipe.s: -------------------------------------------------------------------------------- 1 | / pipe -- C library 2 | 3 | / pipe(f) 4 | / int f[2]; 5 | 6 | .globl _pipe, cerror 7 | 8 | pipe = 42. 9 | 10 | _pipe: 11 | mov r5,-(sp) 12 | mov sp,r5 13 | sys pipe 14 | bec 1f 15 | jmp cerror 16 | 1: 17 | mov 4(r5),r2 18 | mov r0,(r2)+ 19 | mov r1,(r2) 20 | clr r0 21 | mov (sp)+,r5 22 | rts pc 23 | -------------------------------------------------------------------------------- /unix_v6/s5/time.s: -------------------------------------------------------------------------------- 1 | / C library -- time 2 | 3 | / tvec = time(tvec); 4 | / 5 | / tvec[0], tvec[1] contain the time 6 | 7 | .globl _time 8 | 9 | _time: 10 | mov r5,-(sp) 11 | mov sp,r5 12 | sys time 13 | mov r2,-(sp) 14 | mov 4(r5),r2 15 | mov r0,(r2)+ 16 | mov r1,(r2)+ 17 | mov (sp)+,r2 18 | mov (sp)+,r5 19 | rts pc 20 | -------------------------------------------------------------------------------- /unix_v6/s5/unlink.s: -------------------------------------------------------------------------------- 1 | / C library -- unlink 2 | 3 | / error = unlink(string); 4 | / 5 | 6 | .globl _unlink, cerror 7 | 8 | _unlink: 9 | mov r5,-(sp) 10 | mov sp,r5 11 | mov 4(r5),0f 12 | sys 0; 9f 13 | bec 1f 14 | jmp cerror 15 | 1: 16 | clr r0 17 | mov (sp)+,r5 18 | rts pc 19 | .data 20 | 9: 21 | sys unlink; 0:.. 22 | -------------------------------------------------------------------------------- /unix_v6/tmg/tmgb/table.s: -------------------------------------------------------------------------------- 1 | .globl allocate,putword,putchar 2 | .globl iget 3 | .globl succ 4 | .globl table 5 | 6 | table: 7 | mov $10,r0 8 | jsr pc,allocate 9 | mov r1,-(sp) 10 | clr r0 11 | jsr pc,putword 12 | jsr pc,putword 13 | jsr pc,putword 14 | jsr pc,putchar 15 | jsr pc,iget 16 | mov (sp)+,(r0) 17 | jmp succ 18 | -------------------------------------------------------------------------------- /unix_v1/src/lib/execv.s: -------------------------------------------------------------------------------- 1 | / C library -- execv 2 | 3 | / execv(file, argv); 4 | / 5 | / where argv is a vector argv[0] ... argv[x], 0 6 | / last vector element must be 0 7 | / 8 | .globl _execv 9 | 10 | .data 11 | _execv: 12 | 1f 13 | .text 14 | 1: 15 | mov 2(sp),0f 16 | mov 4(sp),0f+2 17 | sys exec; 0:..; .. 18 | rts pc 19 | 20 | -------------------------------------------------------------------------------- /unix_v1/src/lib/seek.s: -------------------------------------------------------------------------------- 1 | / C library -- seek 2 | 3 | / error = seek(file, offset, ptr); 4 | 5 | .globl _seek 6 | 7 | .data 8 | _seek: 9 | 1f 10 | .text 11 | 1: 12 | mov 2(sp),r0 13 | mov 4(sp),0f 14 | mov 6(sp),0f+2 15 | sys seek; 0:..; .. 16 | bec 1f 17 | mov $1,r0 18 | rts r0 19 | 1: 20 | clr r0 21 | rts pc 22 | 23 | 24 | -------------------------------------------------------------------------------- /unix_v6/fort/rt1/dcsqrt.f: -------------------------------------------------------------------------------- 1 | function dcsqrt(z1) 2 | double complex dcsqrt, z1, z2 3 | double precision dummy(2), a, b, c 4 | equivalence (a,z2,dummy(1)), (b,dummy(2)) 5 | 6 | z2 = z1 7 | c = dcabs(z2) 8 | c = dsqrt(c) 9 | b = datan2(b, a)/2.0d0 10 | a = c*dcos(b) 11 | b = c*dsin(b) 12 | dcsqrt = z2 13 | return 14 | end 15 | -------------------------------------------------------------------------------- /unix_v6/s4/kill.s: -------------------------------------------------------------------------------- 1 | / C library -- kill 2 | 3 | .globl _kill, cerror 4 | kill = 37. 5 | indir = 0 6 | 7 | _kill: 8 | mov r5,-(sp) 9 | mov sp,r5 10 | mov 4(sp),r0 11 | mov 6(sp),8f 12 | sys indir; 9f 13 | bec 1f 14 | jmp cerror 15 | 1: 16 | clr r0 17 | mov (sp)+,r5 18 | rts pc 19 | 20 | .data 21 | 9: 22 | sys kill; 8:.. 23 | -------------------------------------------------------------------------------- /unix_v6/s5/mdate.s: -------------------------------------------------------------------------------- 1 | / C library-- mdate 2 | 3 | .globl _mdate, cerror 4 | 5 | _mdate: 6 | mov r5,-(sp) 7 | mov sp,r5 8 | mov 4(r5),0f 9 | mov 6(r5),r1 10 | mov (r1)+,r0 11 | mov (r1),r1 12 | sys 0; 9f 13 | bec 1f 14 | jmp cerror 15 | 1: 16 | clr r0 17 | mov (sp)+,r5 18 | rts pc 19 | .data 20 | 9: 21 | sys mdate; 0:.. 22 | -------------------------------------------------------------------------------- /unix_v6/s5/umount.s: -------------------------------------------------------------------------------- 1 | / C library -- umount/ 2 | 3 | .globl _umount 4 | .globl cerror 5 | indir = 0 6 | .comm _errno,2 7 | 8 | _umount: 9 | mov r5,-(sp) 10 | mov sp,r5 11 | mov 4(sp),0f 12 | sys indir; 9f 13 | bec 1f 14 | jmp cerror 15 | 1: 16 | clr r0 17 | mov (sp)+,r5 18 | rts pc 19 | 20 | .data 21 | 9: 22 | sys umount; 0:.. 23 | -------------------------------------------------------------------------------- /unix_v6/fort/rt1/cos.s: -------------------------------------------------------------------------------- 1 | / 2 | / 3 | 4 | / cos & dcos fortran functions 5 | 6 | .globl cos. 7 | .globl dcos. 8 | 9 | .globl cos 10 | .globl retrn 11 | .globl temp 12 | 13 | dcos.: temp 14 | .+2 15 | setd 16 | br 1f 17 | 18 | cos.: temp 19 | .+2 20 | setf 21 | 1: 22 | movf *2(r3),r0 23 | jsr pc,cos 24 | movf r0,temp 25 | jmp retrn 26 | -------------------------------------------------------------------------------- /unix_v6/fort/rt1/sin.s: -------------------------------------------------------------------------------- 1 | / 2 | / 3 | 4 | / sin & dsin fortran functions 5 | 6 | .globl sin. 7 | .globl dsin. 8 | 9 | .globl sin 10 | .globl retrn 11 | .globl temp 12 | 13 | dsin.: temp 14 | .+2 15 | setd 16 | br 1f 17 | 18 | sin.: temp 19 | .+2 20 | setf 21 | 1: 22 | movf *2(r3),r0 23 | jsr pc,sin 24 | movf r0,temp 25 | jmp retrn 26 | -------------------------------------------------------------------------------- /unix_v6/s3/ldiv.s: -------------------------------------------------------------------------------- 1 | / C library-- long divide/remainder 2 | 3 | .globl _ldiv, _ldivr 4 | .globl _lrem 5 | 6 | _ldiv: 7 | mov 2(sp),r0 8 | mov 4(sp),r1 9 | div 6(sp),r0 10 | mov r1,_ldivr 11 | rts pc 12 | 13 | _lrem: 14 | mov 2(sp),r0 15 | mov 4(sp),r1 16 | div 6(sp),r0 17 | mov r1,r0 18 | rts pc 19 | 20 | .bss 21 | _ldivr: .=.+2 22 | -------------------------------------------------------------------------------- /unix_v6/s4/chmod.s: -------------------------------------------------------------------------------- 1 | / C library -- chmod 2 | 3 | / error = chmod(string, mode); 4 | 5 | .globl _chmod, cerror 6 | 7 | _chmod: 8 | mov r5,-(sp) 9 | mov sp,r5 10 | mov 4(r5),0f 11 | mov 6(r5),0f+2 12 | sys 0; 9f 13 | bec 1f 14 | jmp cerror 15 | 1: 16 | clr r0 17 | mov (sp)+,r5 18 | rts pc 19 | .data 20 | 9: 21 | sys chmod; 0:..; .. 22 | -------------------------------------------------------------------------------- /unix_v1/patches/core/shorig.patch: -------------------------------------------------------------------------------- 1 | --- rebuilt/sh.clean 2008-05-07 18:44:47.000000000 -1000 2 | +++ build/sh.s 2008-05-07 18:50:26.000000000 -1000 3 | @@ -1,4 +1,6 @@ 4 | / sh -- command interpreter 5 | +.. = 40014 6 | + 7 | mov sp,r5 8 | mov r5,shellarg / save orig sp in shellarg 9 | cmpb 8(r5),$'- / was this sh calleZd by init or loginx~ 10 | -------------------------------------------------------------------------------- /unix_v1/src/lib/fork.s: -------------------------------------------------------------------------------- 1 | / C library -- fork 2 | 3 | / pid = fork(); 4 | / 5 | / pid == 0 in child process; pid == -1 means error return 6 | 7 | .globl _fork 8 | 9 | .data 10 | _fork: 11 | 1f 12 | .text 13 | 1: 14 | sys fork 15 | br 1f 16 | bes 2f 17 | rts pc 18 | 2: 19 | mov $-1,r0 20 | rts pc 21 | 1: 22 | clr r0 23 | rts pc 24 | 25 | -------------------------------------------------------------------------------- /unix_v6/s4/chown.s: -------------------------------------------------------------------------------- 1 | / C library -- chown 2 | 3 | / error = chown(string, owner); 4 | 5 | .globl _chown, cerror 6 | 7 | _chown: 8 | mov r5,-(sp) 9 | mov sp,r5 10 | mov 4(r5),0f 11 | mov 6(r5),0f+2 12 | sys 0; 9f 13 | bec 1f 14 | jmp cerror 15 | 1: 16 | clr r0 17 | mov (sp)+,r5 18 | rts pc 19 | .data 20 | 9: 21 | sys chown; 0:..; .. 22 | -------------------------------------------------------------------------------- /unix_v6/salloc/run: -------------------------------------------------------------------------------- 1 | as alloc?.s; mv a.out alloc.o 2 | as altch.s; mv a.out altch.o 3 | as bsp.s; mv a.out bsp.o 4 | as bword.s; mv a.out bword.o 5 | as getch.s; mv a.out getch.o 6 | as getwd.s; mv a.out getwd.o 7 | as length.s; mv a.out length.o 8 | as rewind.s; mv a.out rewind.o 9 | as zero.s; mv a.out zero.o 10 | ar r /lib/libs.a *.o 11 | rm *.o 12 | -------------------------------------------------------------------------------- /unix_v1/patches/cold.patch: -------------------------------------------------------------------------------- 1 | diff -ru rebuilt/u0.s build/u0.s 2 | --- rebuilt/u0.s 2008-05-03 08:27:03.000000000 -1000 3 | +++ build/u0.s 2008-05-04 08:29:31.000000000 -1000 4 | @@ -1,6 +1,6 @@ 5 | / u0 -- unix 6 | 7 | -cold = 0 8 | +cold = 1 9 | orig = 0 . / orig = 0. relocatable 10 | 11 | rkda = 177412 / disk address reg rk03/rk11 12 | -------------------------------------------------------------------------------- /unix_v6/fort/rt1/atan.s: -------------------------------------------------------------------------------- 1 | / 2 | / 3 | 4 | / atan & datan fortran functions 5 | 6 | .globl atan. 7 | .globl datan. 8 | 9 | .globl atan 10 | .globl retrn 11 | .globl temp 12 | 13 | datan.: temp 14 | .+2 15 | setd 16 | br 1f 17 | 18 | atan.: temp 19 | .+2 20 | setf 21 | 1: 22 | movf *2(r3),r0 23 | jsr pc,atan 24 | movf r0,temp 25 | jmp retrn 26 | -------------------------------------------------------------------------------- /unix_v6/s3/fmod.s: -------------------------------------------------------------------------------- 1 | / C floating mod 2 | / fmod(a,b) returns a number n such that 3 | / i*b + n is a and 0 <= n < b 4 | 5 | .globl _fmod 6 | _fmod: 7 | mov r5,-(sp) 8 | mov sp,r5 9 | movf 4(r5),fr0 10 | divf 12.(r5),fr0 11 | modf $one,fr0 12 | mulf 12.(r5),fr1 13 | movf 4(r5),fr0 14 | subf fr1,fr0 15 | mov (sp)+,r5 16 | rts pc 17 | one = 40200 18 | -------------------------------------------------------------------------------- /unix_v6/s4/link.s: -------------------------------------------------------------------------------- 1 | / C library -- link 2 | 3 | / error = link(old-file, new-file); 4 | / 5 | 6 | .globl _link, cerror 7 | 8 | _link: 9 | mov r5,-(sp) 10 | mov sp,r5 11 | mov 4(r5),0f 12 | mov 6(r5),0f+2 13 | sys 0; 9f 14 | bec 1f 15 | jmp cerror 16 | 1: 17 | clr r0 18 | mov (sp)+,r5 19 | rts pc 20 | .data 21 | 9: 22 | sys link; 0:..; .. 23 | -------------------------------------------------------------------------------- /unix_v1/src/lib/write.s: -------------------------------------------------------------------------------- 1 | / C library -- write 2 | 3 | / nwritten = write(file, buffer, count); 4 | / 5 | / nwritten == -1 means error 6 | 7 | .globl _write 8 | 9 | .data 10 | _write: 11 | 1f 12 | .text 13 | 1: 14 | mov 2(sp),r0 15 | mov 4(sp),0f 16 | mov 6(sp),0f+2 17 | sys write; 0:..; .. 18 | bec 1f 19 | mov $-1,r0 20 | 1: 21 | rts pc 22 | 23 | -------------------------------------------------------------------------------- /unix_v6/mdec/rp.s: -------------------------------------------------------------------------------- 1 | / rp03 disk driver 2 | 3 | rpda = 176724 4 | mov dska,r1 5 | clr r0 6 | div $10.,r0 7 | mov r1,-(sp) 8 | mov r0,r1 9 | clr r0 10 | div $20.,r0 11 | bisb r1,1(sp) 12 | mov $rpda,r1 13 | mov (sp)+,(r1) 14 | mov r0,-(r1) 15 | mov ba,-(r1) 16 | mov wc,-(r1) 17 | mov $iocom,-(r1) 18 | 1: 19 | tstb (r1) 20 | bpl 1b 21 | rts pc 22 | -------------------------------------------------------------------------------- /unix_v6/salloc/zero.s: -------------------------------------------------------------------------------- 1 | .globl zero 2 | .globl putchar 3 | .globl w, r, a, l 4 | / 5 | / 6 | / routine to zero a string 7 | / 8 | / mov ...,r1 9 | / jsr pc,zero 10 | / 11 | zero: 12 | mov r0,-(sp) 13 | mov a(r1),w(r1) 14 | clrb r0 15 | 1: cmp w(r1),l(r1) 16 | bhis 1f 17 | jsr pc,putchar 18 | br 1b 19 | 1: mov a(r1),w(r1) 20 | mov (sp)+,r0 21 | rts pc 22 | -------------------------------------------------------------------------------- /unix_v1/fs/new/etc/passwd: -------------------------------------------------------------------------------- 1 | root::0:/: 2 | eroot::0:/:/bin/ed 3 | sys::1:/usr/sys: 4 | bin::3:/bin: 5 | adm::3:/usr/adm: 6 | s1::3:/usr/s1: 7 | s2::3:/usr/s2: 8 | jfo::4:/usr/jfo: 9 | ken::6:/usr/ken: 10 | dmr::7:/usr/dmr: 11 | jack::10:/usr/jack: 12 | peter::11:/usr/peter: 13 | jay::12:/usr/jay: 14 | bob::13:/usr/bob: 15 | sun::14:/usr/sun: 16 | lee::15:/usr/lee: 17 | -------------------------------------------------------------------------------- /unix_v1/patches/core/initorig.patch: -------------------------------------------------------------------------------- 1 | --- init.clean 2008-06-25 08:39:57.000000000 -1000 2 | +++ init.s 2008-06-25 08:40:08.000000000 -1000 3 | @@ -1,4 +1,5 @@ 4 | / init -- process control initialization 5 | +.. = 40014 6 | 7 | mount = 21. 8 | 9 | @@ -163,6 +164,7 @@ 10 | '5; .. 11 | '6; .. 12 | '7; .. 13 | + '8; .. 14 | 0 15 | 16 | offset: .=.+2 17 | -------------------------------------------------------------------------------- /unix_v1/src/lib/read.s: -------------------------------------------------------------------------------- 1 | / C library -- read 2 | 3 | / nread = read(file, buffer, count); 4 | / 5 | / nread ==0 means eof; nread == -1 means error 6 | 7 | .globl _read 8 | 9 | .data 10 | _read: 11 | 1f 12 | .text 13 | 1: 14 | mov 2(sp),r0 15 | mov 4(sp),0f 16 | mov 6(sp),0f+2 17 | sys read; 0:..; .. 18 | bec 1f 19 | mov $-1,r0 20 | 1: 21 | rts pc 22 | 23 | -------------------------------------------------------------------------------- /unix_v6/fort/fx/fxf.s: -------------------------------------------------------------------------------- 1 | / 2 | / 3 | 4 | / fxf -- format statements 5 | 6 | .globl sform 7 | .globl sdata 8 | 9 | .globl ptemp 10 | .globl error 11 | 12 | sform: 13 | cmp progt,$6 / block data 14 | bne 1f 15 | jsr r5,error; 50. 16 | 1: 17 | jsr r5,ptemp; 'f; efno; line 18 | rts r5 19 | 20 | sdata: 21 | jsr r5,ptemp; 'd; efno; line 22 | rts r5 23 | 24 | -------------------------------------------------------------------------------- /unix_v6/s4/creat.s: -------------------------------------------------------------------------------- 1 | / C library -- creat 2 | 3 | / file = creat(string, mode); 4 | / 5 | / file == -1 if error 6 | 7 | .globl _creat, cerror 8 | 9 | _creat: 10 | mov r5,-(sp) 11 | mov sp,r5 12 | mov 4(r5),0f 13 | mov 6(r5),0f+2 14 | sys 0; 9f 15 | bec 1f 16 | jmp cerror 17 | 1: 18 | mov (sp)+,r5 19 | rts pc 20 | .data 21 | 9: 22 | sys creat; 0:..; .. 23 | -------------------------------------------------------------------------------- /unix_v6/s5/open.s: -------------------------------------------------------------------------------- 1 | / C library -- open 2 | 3 | / file = open(string, mode) 4 | / 5 | / file == -1 means error 6 | 7 | .globl _open, cerror 8 | 9 | _open: 10 | mov r5,-(sp) 11 | mov sp,r5 12 | mov 4(r5),0f 13 | mov 6(r5),0f+2 14 | sys 0; 9f 15 | bec 1f 16 | jmp cerror 17 | 1: 18 | mov (sp)+,r5 19 | rts pc 20 | .data 21 | 9: 22 | sys open; 0:..; .. 23 | -------------------------------------------------------------------------------- /unix_v6/s5/seek.s: -------------------------------------------------------------------------------- 1 | / C library -- seek 2 | 3 | / error = seek(file, offset, ptr); 4 | 5 | .globl _seek, cerror 6 | 7 | _seek: 8 | mov r5,-(sp) 9 | mov sp,r5 10 | mov 4(r5),r0 11 | mov 6(r5),0f 12 | mov 8(r5),0f+2 13 | sys 0; 9f 14 | bec 1f 15 | jmp cerror 16 | 1: 17 | clr r0 18 | mov (sp)+,r5 19 | rts pc 20 | .data 21 | 9: 22 | sys seek; 0:..; .. 23 | -------------------------------------------------------------------------------- /unix_v6/s2/sleep.c: -------------------------------------------------------------------------------- 1 | main(argc, argv) 2 | char **argv; 3 | { 4 | int c, n; 5 | char *s; 6 | 7 | n = 0; 8 | if(argc < 2) { 9 | printf("arg count\n"); 10 | exit(); 11 | } 12 | s = argv[1]; 13 | while(c = *s++) { 14 | if(c<'0' || c>'9') { 15 | printf("bad character\n"); 16 | exit(); 17 | } 18 | n = n*10 + c - '0'; 19 | } 20 | sleep(n); 21 | } 22 | -------------------------------------------------------------------------------- /unix_v6/s4/csv.s: -------------------------------------------------------------------------------- 1 | / C register save and restore -- version 12/74 2 | 3 | .globl csv 4 | .globl cret 5 | 6 | csv: 7 | mov r5,r0 8 | mov sp,r5 9 | mov r4,-(sp) 10 | mov r3,-(sp) 11 | mov r2,-(sp) 12 | tst -(sp) 13 | jmp (r0) 14 | 15 | cret: 16 | mov r5,r1 17 | mov -(r1),r4 18 | mov -(r1),r3 19 | mov -(r1),r2 20 | mov r5,sp 21 | mov (sp)+,r5 22 | rts pc 23 | -------------------------------------------------------------------------------- /unix_v6/tmg/tmgb/ctest.s: -------------------------------------------------------------------------------- 1 | f = r5 2 | .globl j 3 | .globl classtab,jget 4 | .globl ctest 5 | .globl putcstr 6 | .globl succ 7 | 8 | ctest: 9 | inc ctestc 10 | mov r0,-(sp) 11 | jsr pc,jget 12 | asl r0 13 | bit *(sp)+,classtab(r0) 14 | clc 15 | beq 1f 16 | asr r0 17 | jsr pc,putcstr 18 | inc j(f) 19 | sec 20 | 1: 21 | rts pc 22 | 23 | .data 24 | ctestc: 0 25 | -------------------------------------------------------------------------------- /unix_v6/tmg/tmgb/inc.s: -------------------------------------------------------------------------------- 1 | .globl succ,.u,update 2 | .globl .ia,.ib,.da,.db 3 | 4 | /prefix ++ 5 | .ib: 6 | inc (sp) 7 | jmp .u 8 | /prefix -- 9 | .db: 10 | dec (sp) 11 | jmp .u 12 | /postfix++ 13 | .ia: 14 | inc (sp) 15 | jsr pc,update 16 | dec (sp) 17 | jmp succ 18 | /potsfix -- 19 | .da: 20 | dec (sp) 21 | jsr pc,update 22 | inc (sp) 23 | jmp succ 24 | 25 | -------------------------------------------------------------------------------- /unix_v6/fort/rt1/dim.s: -------------------------------------------------------------------------------- 1 | / 2 | / 3 | 4 | / dim fortran function 5 | 6 | .globl dim. 7 | 8 | .globl retrn 9 | .globl temp 10 | .globl rerr 11 | / 12 | dim.: temp 13 | .+2 14 | setf 15 | cmp *2(sp),$2 16 | bne 2f 17 | movf *2(r3),r0 18 | subf *4(r3),r0 19 | cfcc 20 | bge 1f 21 | clrf r0 22 | 1: 23 | movf r0,temp 24 | jmp retrn 25 | 26 | 2: 27 | jsr r5,rerr; 7. 28 | -------------------------------------------------------------------------------- /unix_v6/s5/mount.s: -------------------------------------------------------------------------------- 1 | / C library -- mount 2 | 3 | / error = mount(dev, file, flag) 4 | 5 | .globl _mount, cerror 6 | 7 | _mount: 8 | mov r5,-(sp) 9 | mov sp,r5 10 | mov 4(sp),0f 11 | mov 6(sp),0f+2 12 | mov 8(sp),0f+4 13 | sys 0; 9f 14 | bec 1f 15 | jmp cerror 16 | 1: 17 | clr r0 18 | mov (sp)+,r5 19 | rts pc 20 | .data 21 | 9: 22 | sys mount; 0:..; ..; .. 23 | -------------------------------------------------------------------------------- /unix_v6/fort/fx/fxe.s: -------------------------------------------------------------------------------- 1 | / 2 | / 3 | 4 | / xe -- temp file junk 5 | 6 | .globl tfildiag 7 | .globl tfil1, tfil2 8 | 9 | tfildiag: 10 | mov $1,r0 11 | sys write; mes1; emes1-mes1 12 | clr r0 13 | sys seek; 0; 2 14 | mov $-1,r0 / failure return 15 | sys exit 16 | 17 | mes1: 18 | 19 | emes1: 20 | tfil1: 21 | 22 | tfil2: 23 | 24 | 25 | -------------------------------------------------------------------------------- /unix_v1/src/lib/fstat.s: -------------------------------------------------------------------------------- 1 | / C library -- fstat 2 | 3 | / error = fstat(file, statbuf); 4 | 5 | / int statbuf[17] or 6 | / char statbuf[34] 7 | / as appropriate 8 | 9 | .globl _fstat 10 | 11 | .data 12 | _fstat: 13 | 1f 14 | .text 15 | 1: 16 | mov 2(sp),r0 17 | mov 4(sp),0f 18 | sys fstat; 0:.. 19 | bec 1f 20 | mov $1,r0 21 | rts pc 22 | 1: 23 | clr r0 24 | rts pc 25 | 26 | -------------------------------------------------------------------------------- /unix_v6/fort/f2/f21.s: -------------------------------------------------------------------------------- 1 | / 2 | / 3 | 4 | / f21 -- storage allocation 5 | / 6 | 7 | .globl pass2 8 | 9 | .globl signon 10 | .globl signoff 11 | .globl calloc 12 | .globl salloc 13 | .globl equiv 14 | .globl entry 15 | 16 | pass2: 17 | jsr r5,signon; 2 18 | mov $errb,errp 19 | jsr r5,calloc 20 | jsr r5,equiv 21 | jsr r5,salloc 22 | jsr r5,entry 23 | jsr r5,signoff; 2 24 | 25 | -------------------------------------------------------------------------------- /unix_v6/iolib/unget.c: -------------------------------------------------------------------------------- 1 | # include "ciodec.c" 2 | ungetc (c, fn) 3 | { 4 | struct fileps *fp; 5 | if (nargs() != 2) 6 | IEHzap("ungetc"); 7 | /* push back onto input */ 8 | fp = &IEH3fpts[fn]; 9 | if (fp->wrflag == 0) 10 | IEH3mbuf(fn,0); 11 | if (fp->bptr <= fp->buff - 100) 12 | IEH3err("ungetc/unprintf: buffer full file %d",fn); 13 | *--fp->bptr = c; 14 | fp->nchars++; 15 | } 16 | -------------------------------------------------------------------------------- /unix_v6/tmg/tmgb/bundle.s: -------------------------------------------------------------------------------- 1 | f = r5 2 | g = r4 3 | .globl g1 4 | .globl pbundle,iget 5 | .globl succ 6 | .globl bundle,reduce 7 | 8 | reduce: 9 | jsr pc,iget 10 | mov (r0),r1 11 | mov g,r0 12 | asl r1 13 | sub r1,r0 14 | br 1f 15 | br 1f 16 | bundle: 17 | mov f,r0 18 | add $g1,r0 19 | 1: 20 | jsr pc,pbundle 21 | tst r0 22 | beq 1f 23 | mov r0,(g)+ 24 | 1: 25 | jmp succ 26 | -------------------------------------------------------------------------------- /unix_v1/src/lib/stat.s: -------------------------------------------------------------------------------- 1 | / C library -- stat 2 | 3 | / error = stat(string, statbuf); 4 | 5 | / int statbuf[17] or 6 | / char statbuf[34] 7 | / as appropriate 8 | 9 | .globl _stat 10 | 11 | .data 12 | _stat: 13 | 1f 14 | .text 15 | 1: 16 | mov 2(sp),0f 17 | mov 4(sp),0f+2 18 | sys stat; 0:..; .. 19 | bec 1f 20 | mov $1,r0 21 | rts pc 22 | 1: 23 | clr r0 24 | rts pc 25 | 26 | -------------------------------------------------------------------------------- /unix_v6/tmg/tmgb/mult.s: -------------------------------------------------------------------------------- 1 | .globl .m,.q,.r 2 | .globl .p,sprv 3 | 4 | .m: 5 | jsr pc,sprv 6 | mov (sp),r0 7 | mpy 4(sp),r0 8 | mov r1,4(sp) 9 | br 1f 10 | 11 | .q: 12 | jsr pc,sprv 13 | mov 4(sp),r1 14 | sxt r0 15 | dvd (sp),r0 16 | mov r0,4(sp) 17 | br 1f 18 | 19 | .r: 20 | jsr pc,sprv 21 | mov 4(sp),r1 22 | sxt r0 23 | dvd (sp),r0 24 | mov r1,4(sp) 25 | 1: 26 | jmp .p 27 | -------------------------------------------------------------------------------- /unix_v6/tmg/tmgb/putcal.s: -------------------------------------------------------------------------------- 1 | f = r5 2 | g = r4 3 | .globl k 4 | .globl errcom 5 | .globl ktab,ktat 6 | .globl putcall,kput 7 | 8 | putcall: 9 | jsr pc,kput 10 | mov k(f),(g)+ 11 | rts pc 12 | 13 | kput: 14 | sub $2,k(f) 15 | mov k(f),r1 16 | neg r1 17 | mov r0,ktab(r1) 18 | cmp r1,$ktat 19 | bhis 1f 20 | rts pc 21 | 1: 22 | jsr r0,errcom 23 | ;.even 24 | -------------------------------------------------------------------------------- /unix_v1/src/lib/gtty.s: -------------------------------------------------------------------------------- 1 | / C library -- gtty 2 | 3 | / error = gtty(filep, ttyvec); 4 | 5 | / filep is descriptor of open tty 6 | / ttyvec[0, 1, 2] correspond to args of gtty 7 | 8 | .globl _gtty 9 | 10 | .data 11 | _gtty: 12 | 1f 13 | .text 14 | 1: 15 | mov 2(sp),r0 16 | mov 4(sp),0f 17 | sys gtty; 0:.. 18 | bes 1f 19 | clr r0 20 | rts pc 21 | 1: 22 | mov $1,r0 23 | rts r0 24 | 25 | -------------------------------------------------------------------------------- /unix_v1/src/lib/stty.s: -------------------------------------------------------------------------------- 1 | / C library -- stty 2 | 3 | / error = stty(filep, ttyvec); 4 | 5 | / filep is descriptor of open tty 6 | / ttyvec[0, 1, 2] correspond to args of stty 7 | 8 | .globl _stty 9 | 10 | .data 11 | _stty: 12 | 1f 13 | .text 14 | 1: 15 | mov 2(sp),r0 16 | mov 4(sp),0f 17 | sys stty; 0:.. 18 | bes 1f 19 | clr r0 20 | rts pc 21 | 1: 22 | mov $1,r0 23 | rts pc 24 | 25 | -------------------------------------------------------------------------------- /unix_v6/s4/atoi.c: -------------------------------------------------------------------------------- 1 | atoi(ap) 2 | char *ap; 3 | { 4 | register n, c; 5 | register char *p; 6 | int f; 7 | 8 | p = ap; 9 | n = 0; 10 | f = 0; 11 | loop: 12 | while(*p == ' ' || *p == ' ') 13 | p++; 14 | if(*p == '-') { 15 | f++; 16 | p++; 17 | goto loop; 18 | } 19 | while(*p >= '0' && *p <= '9') 20 | n = n*10 + *p++ - '0'; 21 | if(f) 22 | n = -n; 23 | return(n); 24 | } 25 | -------------------------------------------------------------------------------- /unix_v6/s4/fcrt0.s: -------------------------------------------------------------------------------- 1 | / C runtime startoff 2 | / with floating point interpreter 3 | 4 | .globl savr5 5 | .globl fptrap 6 | .globl _exit 7 | 8 | .globl _main 9 | 10 | start: 11 | sys signal; 4; fptrap 12 | setd 13 | mov sp,r0 14 | mov (r0),-(sp) 15 | tst (r0)+ 16 | mov r0,2(sp) 17 | jsr pc,_main 18 | mov r0,(sp) 19 | jsr pc,*$_exit 20 | sys exit 21 | 22 | .bss 23 | savr5: .=.+2 24 | -------------------------------------------------------------------------------- /unix_v1/pages/e03-04: -------------------------------------------------------------------------------- 1 | / in buffer 2 | mov $256.,r3 3 | 1: 4 | clr (r5)+ / zero data word in buffer 5 | dec r3 6 | bgt 1b / branch until all data words in buffer are zero 7 | jsr r0,dskwr / write zeroed buffer area out onto physical 8 | / block specified 9 | rts r0 / in r1 10 | 11 | 12 | -------------------------------------------------------------------------------- /unix_v6/s5/mknod.s: -------------------------------------------------------------------------------- 1 | / C library -- mknod 2 | 3 | / error = mknod(string, mode, major.minor); 4 | 5 | .globl _mknod, cerror 6 | 7 | mknod = 14. 8 | _mknod: 9 | mov r5,-(sp) 10 | mov sp,r5 11 | mov 4(r5),0f 12 | mov 6(r5),0f+2 13 | mov 8(r5),0f+4 14 | sys 0; 9f 15 | bec 1f 16 | jmp cerror 17 | 1: 18 | clr r0 19 | mov (sp)+,r5 20 | rts pc 21 | .data 22 | 9: 23 | sys mknod; 0:..; ..; .. 24 | -------------------------------------------------------------------------------- /unix_v6/salloc/bsp.s: -------------------------------------------------------------------------------- 1 | .globl backspace 2 | .globl lookchar 3 | .globl w, r, a, l 4 | / 5 | / routine to read a string backwards 6 | / the read pointer is decremented before reading 7 | / 8 | / mov ...,r1 9 | / jsr pc,backspace 10 | / mov r0,... 11 | / 12 | backspace: 13 | cmp a(r1),r(r1) 14 | bhis nochc 15 | dec r(r1) 16 | jsr pc,lookchar 17 | rts pc 18 | nochc: clr r0 19 | sec 20 | rts pc 21 | -------------------------------------------------------------------------------- /unix_v6/s5/write.s: -------------------------------------------------------------------------------- 1 | / C library -- write 2 | 3 | / nwritten = write(file, buffer, count); 4 | / 5 | / nwritten == -1 means error 6 | 7 | .globl _write, cerror 8 | 9 | _write: 10 | mov r5,-(sp) 11 | mov sp,r5 12 | mov 4(r5),r0 13 | mov 6(r5),0f 14 | mov 8(r5),0f+2 15 | sys 0; 9f 16 | bec 1f 17 | jmp cerror 18 | 1: 19 | mov (sp)+,r5 20 | rts pc 21 | .data 22 | 9: 23 | sys write; 0:..; .. 24 | -------------------------------------------------------------------------------- /unix_v6/salloc/getch.s: -------------------------------------------------------------------------------- 1 | .globl getchar 2 | .globl lookchar 3 | .globl w, r, a, l 4 | / 5 | / 6 | / routine to read next character from string 7 | / pointer to by r1; character returned in r0 8 | / c-bit set if character not availiable (eof) 9 | / 10 | / mov ...,r1 11 | / jsr pc,getchar 12 | / movb r0,... 13 | / 14 | getchar: 15 | jsr pc,lookchar 16 | bes 1f 17 | inc r(r1) 18 | tst r0 19 | 1: rts pc 20 | -------------------------------------------------------------------------------- /unix_v1/Credits: -------------------------------------------------------------------------------- 1 | 2 | Many thanks to everyone who participated in the restoration by OCRing 3 | text, proof reading the OCRs, debugging and organizing the results. 4 | 5 | Johan Beiser 6 | Tim Bradshaw 7 | Brantley Coile 8 | Grey David 9 | Alex Garbutt 10 | Hellwig Geisse 11 | Cyrille Lefevre 12 | Ralph Logan 13 | James Markevitch 14 | Doug Merritt 15 | Tim Newsham 16 | Brad Parker 17 | Warren Toomey 18 | 19 | -------------------------------------------------------------------------------- /unix_v6/fort/rt1/idim.s: -------------------------------------------------------------------------------- 1 | / 2 | / 3 | 4 | / idim fortran function 5 | 6 | .globl idim. 7 | 8 | .globl retrn 9 | .globl rerr 10 | .globl temp 11 | 12 | idim.: temp 13 | .+2 14 | setd 15 | setl 16 | cmp *2(sp),$2 17 | bne 2f 18 | movif *2(r3),r0 19 | movif *4(r3),r1 20 | subf r1,r0 21 | cfcc 22 | bge 1f 23 | clrf r0 24 | 1: 25 | movfi r0,temp 26 | jmp retrn 27 | 28 | 2: 29 | jsr r5,rerr; 9. 30 | -------------------------------------------------------------------------------- /unix_v6/fort/rt1/isign.s: -------------------------------------------------------------------------------- 1 | / 2 | / 3 | 4 | / isign fortran function 5 | 6 | .globl isign. 7 | 8 | .globl retrn 9 | .globl rerr 10 | .globl temp 11 | 12 | isign.: temp 13 | .+2 14 | setd 15 | setl 16 | cmp *2(sp),$2 17 | bne 2f 18 | movif *2(r3),r0 19 | absf r0 20 | movif *4(r3),r1 21 | cfcc 22 | bge 1f 23 | negf r0 24 | 1: 25 | movfi r0,temp 26 | jmp retrn 27 | 28 | 2: 29 | jsr r5,rerr; 10. 30 | -------------------------------------------------------------------------------- /unix_v6/fort/rt1/sqrt.s: -------------------------------------------------------------------------------- 1 | / 2 | / 3 | 4 | / sqrt & dsqrt fortran functions 5 | 6 | .globl sqrt. 7 | .globl dsqrt. 8 | 9 | .globl sqrt 10 | .globl retrn 11 | .globl rerr 12 | .globl temp 13 | 14 | dsqrt.: temp 15 | .+2 16 | setd 17 | br 1f 18 | 19 | sqrt.: temp 20 | .+2 21 | setf 22 | 1: 23 | movf *2(r3),r0 24 | jsr pc,sqrt 25 | bes 1f 26 | movf r0,temp 27 | jmp retrn 28 | 1: 29 | jsr r5,rerr; 13. 30 | -------------------------------------------------------------------------------- /unix_v6/s5/read.s: -------------------------------------------------------------------------------- 1 | / C library -- read 2 | 3 | / nread = read(file, buffer, count); 4 | / 5 | / nread ==0 means eof; nread == -1 means error 6 | 7 | .globl _read, cerror 8 | 9 | _read: 10 | mov r5,-(sp) 11 | mov sp,r5 12 | mov 4(r5),r0 13 | mov 6(r5),0f 14 | mov 8(r5),0f+2 15 | sys 0; 9f 16 | bec 1f 17 | jmp cerror 18 | 1: 19 | mov (sp)+,r5 20 | rts pc 21 | .data 22 | 9: 23 | sys read; 0:..; .. 24 | -------------------------------------------------------------------------------- /unix_v6/s4/fstat.s: -------------------------------------------------------------------------------- 1 | / C library -- fstat 2 | 3 | / error = fstat(file, statbuf); 4 | 5 | / int statbuf[17] or 6 | / char statbuf[34] 7 | / as appropriate 8 | 9 | .globl _fstat, cerror 10 | 11 | _fstat: 12 | mov r5,-(sp) 13 | mov sp,r5 14 | mov 4(r5),r0 15 | mov 6(r5),0f 16 | sys 0; 9f 17 | bec 1f 18 | jmp cerror 19 | 1: 20 | clr r0 21 | mov (sp)+,r5 22 | rts pc 23 | .data 24 | 9: 25 | sys fstat; 0:.. 26 | -------------------------------------------------------------------------------- /unix_v6/s5/stat.s: -------------------------------------------------------------------------------- 1 | / C library -- stat 2 | 3 | / error = stat(string, statbuf); 4 | 5 | / int statbuf[18] or 6 | / char statbuf[36] 7 | / as appropriate 8 | 9 | .globl _stat, cerror 10 | 11 | _stat: 12 | mov r5,-(sp) 13 | mov sp,r5 14 | mov 4(r5),0f 15 | mov 6(r5),0f+2 16 | sys 0; 9f 17 | bec 1f 18 | jmp cerror 19 | 1: 20 | clr r0 21 | mov (sp)+,r5 22 | rts pc 23 | .data 24 | 9: 25 | sys stat; 0:..; .. 26 | -------------------------------------------------------------------------------- /unix_v6/fort/fx/fx7.s: -------------------------------------------------------------------------------- 1 | / 2 | / 3 | 4 | / fx7 -- passes advancement 5 | 6 | .globl signon 7 | .globl signoff 8 | 9 | 10 | .globl pass2 11 | .globl pass3 12 | .globl pass4 13 | 14 | signon: 15 | tst (r5)+ 16 | rts r5 17 | 18 | signoff: 19 | mov (r5)+,r0 20 | tst (sp)+ 21 | dec r0 22 | asl r0 23 | jmp *passtab(r0) 24 | 25 | passtab: 26 | pass2 27 | pass3 28 | pass4 29 | 30 | .data 31 | 32 | 33 | 34 | 35 | -------------------------------------------------------------------------------- /unix_v6/fort/rt1/alog.s: -------------------------------------------------------------------------------- 1 | / 2 | / 3 | 4 | / alog & log fortran functions 5 | 6 | .globl alog. 7 | .globl dlog. 8 | 9 | .globl log 10 | .globl retrn 11 | .globl rerr 12 | .globl temp 13 | 14 | dlog.: temp 15 | .+2 16 | setd 17 | br 1f 18 | 19 | alog.: temp 20 | .+2 21 | setf 22 | 1: 23 | seti 24 | movf *2(r3),r0 25 | jsr pc,log 26 | bes 1f 27 | movf r0,temp 28 | jmp retrn 29 | 30 | 1: 31 | jsr r5,rerr; 1 32 | -------------------------------------------------------------------------------- /unix_v6/fort/rt1/exp.s: -------------------------------------------------------------------------------- 1 | / 2 | / 3 | 4 | / exp & dexp fortran functions 5 | 6 | .globl exp. 7 | .globl dexp. 8 | 9 | .globl exp 10 | .globl retrn 11 | .globl rerr 12 | .globl temp 13 | 14 | dexp.: temp 15 | .+2 16 | setd 17 | br 1f 18 | 19 | exp.: temp 20 | .+2 21 | setf 22 | 1: 23 | seti 24 | movf *2(r3),r0 25 | jsr pc,exp 26 | bes 1f 27 | movf r0,temp 28 | jmp retrn 29 | 30 | 1: 31 | jsr r5,rerr; 8. 32 | -------------------------------------------------------------------------------- /unix_v6/iolib/ceof.c: -------------------------------------------------------------------------------- 1 | # include "ciodec.c" 2 | ceof (fn) 3 | int fn; 4 | { 5 | struct fileps *fp; 6 | fp = &IEH3fpts[fn]; 7 | if (fp->wrflag > 0 && fp->eoferr == 2) 8 | return(1); 9 | else return(0); 10 | } 11 | cerr (fn) 12 | int fn; 13 | { 14 | struct fileps *fp; 15 | fp = &IEH3fpts[fn]; 16 | if (fp->eoferr == 0) fp->eoferr = 1; 17 | if (fp->wrflag > 0 && fp->eoferr == 3) 18 | return(1); 19 | else return(0); 20 | } 21 | -------------------------------------------------------------------------------- /unix_v6/s3/rand.s: -------------------------------------------------------------------------------- 1 | / random fixed point number generator 2 | 3 | .globl rand, srand 4 | .globl _rand, _srand 5 | 6 | _srand: 7 | mov 2(sp),ranx 8 | rts pc 9 | 10 | srand: 11 | mov r0,ranx 12 | rts pc 13 | 14 | _rand: 15 | rand: 16 | mov r1,-(sp) 17 | mov ranx,r1 18 | mpy $13077.,r1 19 | add $6925.,r1 20 | mov r1,r0 21 | mov r0,ranx 22 | bic $100000,r0 23 | mov (sp)+,r1 24 | rts pc 25 | 26 | .data 27 | ranx: 1 28 | -------------------------------------------------------------------------------- /unix_v6/s4/gtty.s: -------------------------------------------------------------------------------- 1 | / C library -- gtty 2 | 3 | / error = gtty(filep, ttyvec); 4 | 5 | / filep is descriptor of open tty 6 | / ttyvec[0, 1, 2] correspond to args of gtty 7 | 8 | .globl _gtty, cerror 9 | 10 | _gtty: 11 | mov r5,-(sp) 12 | mov sp,r5 13 | mov 4(r5),r0 14 | mov 6(r5),0f 15 | sys 0; 9f 16 | bec 1f 17 | jmp cerror 18 | 1: 19 | clr r0 20 | mov (sp)+,r5 21 | rts pc 22 | .data 23 | 9: 24 | sys gtty; 0:.. 25 | -------------------------------------------------------------------------------- /unix_v6/s5/stty.s: -------------------------------------------------------------------------------- 1 | / C library -- stty 2 | 3 | / error = stty(filep, ttyvec); 4 | 5 | / filep is descriptor of open tty 6 | / ttyvec[0, 1, 2] correspond to args of stty 7 | 8 | .globl _stty, cerror 9 | 10 | _stty: 11 | mov r5,-(sp) 12 | mov sp,r5 13 | mov 4(r5),r0 14 | mov 6(r5),0f 15 | sys 0; 9f 16 | bec 1f 17 | jmp cerror 18 | 1: 19 | clr r0 20 | mov (sp)+,r5 21 | rts pc 22 | .data 23 | 9: 24 | sys stty; 0:.. 25 | -------------------------------------------------------------------------------- /unix_v6/fort/fx/fx6.s: -------------------------------------------------------------------------------- 1 | / 2 | / 3 | 4 | / fx6 -- teletype 5 | 6 | .globl tput 7 | .globl tdecml 8 | 9 | tdecml: 10 | mov r1,-(sp) 11 | jsr r5,td 12 | mov (sp)+,r1 13 | rts r5 14 | 15 | td: 16 | mov r0,r1 17 | clr r0 18 | dvd $10.,r0 19 | mov r1,-(sp) 20 | tst r0 21 | beq 1f 22 | jsr r5,td 23 | 1: 24 | mov (sp)+,r0 25 | add $'0,r0 26 | 27 | tput: 28 | movb r0,ch+1 29 | mov $1,r0 30 | sys write; ch+1; 1 31 | rts r5 32 | -------------------------------------------------------------------------------- /unix_v1/pages/e00-10: -------------------------------------------------------------------------------- 1 | mov r2,r0 2 | sys write; 9f-8b+core; 0:.. 3 | sub r0,r5 4 | br 2b 5 | 2: 6 | mov r2,r0 7 | sys close 8 | br 1b 9 | 1: 10 | mov r1,r0 11 | sys close 12 | sys exec; 5f-8b+core; 4f-8b+core 13 | sys exit 14 | 4: 15 | 5f-8b+core; 0 16 | 5: 17 | 18 | 6: 19 | 20 | .even 21 | 9: 22 | 23 | / end of initialization data 24 | 25 | 0 26 | 27 | .endif 28 | 29 | -------------------------------------------------------------------------------- /unix_v6/fort/rt1/mod.s: -------------------------------------------------------------------------------- 1 | / 2 | / 3 | 4 | / mod fortran function 5 | 6 | .globl mod. 7 | 8 | .globl retrn 9 | .globl temp 10 | one = 40200 11 | .globl rerr 12 | 13 | mod.: temp 14 | .+2 15 | setd 16 | setl 17 | cmp *2(sp),$2 18 | bne 1f 19 | movif *2(r3),r0 20 | movf r0,r2 21 | movif *4(r3),r1 22 | divf r1,r2 23 | modf $one,r2 24 | mulf r1,r3 25 | subf r3,r0 26 | movfi r0,temp 27 | jmp retrn 28 | 29 | 1: 30 | jsr r5,rerr; 11. 31 | -------------------------------------------------------------------------------- /unix_v6/iolib/cflush.c: -------------------------------------------------------------------------------- 1 | # include "ciodec.c" 2 | cflush (fn) 3 | int fn; 4 | { 5 | struct fileps *fp; 6 | if (nargs() != 1) 7 | IEHzap("cflush"); 8 | if (fn < 0 || fn >15) return; 9 | fp = &IEH3fpts[fn]; 10 | if (fp->nchars > 0 && fp->wrflag >= 2) 11 | { 12 | write (fn, fp->buff,fp->nchars); 13 | fp->bptr = fp->buff; 14 | fp -> nchars = fp->eoferr = 0; 15 | } 16 | if (fp->wrflag == 1) 17 | seek(fn, -(fp->nchars),1); 18 | return; 19 | } 20 | -------------------------------------------------------------------------------- /unix_v6/s4/fork.s: -------------------------------------------------------------------------------- 1 | / C library -- fork 2 | 3 | / pid = fork(); 4 | / 5 | / pid == 0 in child process; pid == -1 means error return 6 | / in child, parents id is in par_uid if needed 7 | 8 | .globl _fork, cerror, _par_uid 9 | 10 | _fork: 11 | mov r5,-(sp) 12 | mov sp,r5 13 | sys fork 14 | br 1f 15 | bec 2f 16 | jmp cerror 17 | 1: 18 | mov r0,_par_uid 19 | clr r0 20 | 2: 21 | mov (sp)+,r5 22 | rts pc 23 | .bss 24 | _par_uid: .=.+2 25 | -------------------------------------------------------------------------------- /unix_v6/sno/sno.h: -------------------------------------------------------------------------------- 1 | struct node { 2 | struct node *p1; 3 | struct node *p2; 4 | char typ; 5 | char ch; 6 | }; 7 | 8 | int freesize; 9 | struct node *lookf; 10 | struct node *looks; 11 | struct node *lookend; 12 | struct node *lookstart; 13 | struct node *lookdef; 14 | struct node *lookret; 15 | struct node *lookfret; 16 | int cfail; 17 | int rfail; 18 | struct node *freelist; 19 | struct node *namelist; 20 | int lc; 21 | struct node *schar; 22 | -------------------------------------------------------------------------------- /unix_v1/src/lib/ctime.s: -------------------------------------------------------------------------------- 1 | / C library -- ctime 2 | 3 | / ctime(v1, v2); 4 | / v1 is input time [2] 5 | / v2 is char[16] ascii time 6 | / format is 0123456789012345 7 | / Mmm dd hh:mm:sse 8 | / 9 | 10 | .globl _ctime 11 | .globl ctime 12 | 13 | .data 14 | _ctime: 15 | 1f 16 | .text 17 | 1: 18 | mov 2(sp),r0 19 | mov (r0)+,-(sp) 20 | mov (r0)+,mq 21 | mov (sp)+,ac 22 | mov 4(sp),r0 23 | clrb 15.(r0) 24 | jsr pc,ctime 25 | rts pc 26 | 27 | -------------------------------------------------------------------------------- /unix_v6/fort/rt/r8.s: -------------------------------------------------------------------------------- 1 | / 2 | / 3 | 4 | / r8 - fortran runtime -- powers of integers 5 | 6 | .globl ipi2 7 | 8 | ipi2: 9 | tst (sp)+ 10 | mov (sp)+,r0 11 | bge 1f 12 | clr (sp) 13 | jmp *(r4)+ 14 | 1: 15 | mov (sp)+,r1 16 | mov r3,-(sp) 17 | mov $1,r3 18 | 1: 19 | tst r0 20 | beq 1f 21 | asr r0 22 | bcc 2f 23 | mpy r1,r3 24 | 2: 25 | mpy r1,r1 26 | br 1b 27 | 1: 28 | mov r3,r1 29 | mov (sp)+,r3 30 | mov r1,-(sp) 31 | jmp *(r4)+ 32 | 33 | -------------------------------------------------------------------------------- /unix_v6/iolib/cwrd.c: -------------------------------------------------------------------------------- 1 | cwrite (buff, buffp1, len, fn) 2 | char *buff, *buffp1; int len, fn; 3 | { 4 | int unit, nwr; 5 | unit = buffp1-buff; 6 | len =* unit; 7 | nwr = write (fn, buff, len); 8 | return (nwr < 0 ? -1 : nwr/unit); 9 | } 10 | cread (buff, buffp1, len, fn) 11 | char *buff, *buffp1; int len, fn; 12 | { 13 | int unit, nrd; 14 | unit = buffp1 - buff; 15 | len =* unit; 16 | nrd = read(fn, buff, len); 17 | return (nrd < 0 ? -1 : nrd/unit); 18 | } 19 | -------------------------------------------------------------------------------- /unix_v6/s7/run: -------------------------------------------------------------------------------- 1 | as suftab.s 2 | strip a.out 3 | cmp a.out /usr/lib/suftab 4 | cp a.out /usr/lib/suftab 5 | 6 | as roff?.s 7 | ld -s a.out -l 8 | cmp a.out /usr/bin/roff 9 | cp a.out /usr/bin/roff 10 | 11 | as nroff[1-5].s roff7.s nroff8.s 12 | ld -s -n a.out 13 | cmp a.out /usr/bin/nroff 14 | cp a.out /usr/bin/nroff 15 | 16 | yacc ne.g 17 | cc -s -O -n ne*.c -ly 18 | cmp a.out /usr/bin/neqn 19 | cp a.out /usr/bin/neqn 20 | 21 | rm y.tab.c *.o a.out 22 | -------------------------------------------------------------------------------- /unix_v6/fort/rt1/atan2.s: -------------------------------------------------------------------------------- 1 | / 2 | / 3 | 4 | / atan2 & datan2 fortran functions 5 | 6 | .globl atan2. 7 | .globl datan2. 8 | 9 | .globl retrn 10 | .globl rerr 11 | .globl temp 12 | .globl atan2 13 | 14 | datan2.: temp 15 | .+2 16 | setd 17 | br 1f 18 | 19 | atan2.: temp 20 | .+2 21 | setf 22 | 1: 23 | cmp *2(sp),$2 24 | bne 1f 25 | movf *2(r3),r0 26 | movf *4(r3),r1 27 | jsr pc,atan2 28 | movf r0,temp 29 | jmp retrn 30 | 1: 31 | jsr r5,rerr; 3 32 | -------------------------------------------------------------------------------- /unix_v6/tmg/tmgb/push.s: -------------------------------------------------------------------------------- 1 | .globl succ 2 | .globl iget 3 | .globl push 4 | 5 | push: 6 | jsr pc,iget 7 | mov (r0),r2 8 | mov r2,r1 9 | 1: 10 | mov r1,-(sp) 11 | jsr pc,iget 12 | mov (sp)+,r1 13 | mov r0,-(sp) 14 | mov (r0),-(sp) 15 | dec r2 16 | bgt 1b 17 | mov r1,-(sp) 18 | jsr pc,succ 19 | / preserve c bit from here on 20 | mov (sp)+,r2 21 | 1: 22 | mov (sp)+,*(sp)+ 23 | dec r2 24 | bgt 1b 25 | rts pc /pass sret or fret back to invoking rule 26 | -------------------------------------------------------------------------------- /unix_v6/tmg/tmgb/putdec.s: -------------------------------------------------------------------------------- 1 | .globl putch,obuild 2 | .globl putdec 3 | 4 | putdec: 5 | tst r0 6 | bge 1f 7 | cmp r0,$100000 8 | beq 2f 9 | mov r0,-(sp) 10 | mov $'-,r0 11 | jsr pc,putch 12 | mov (sp)+,r0 13 | neg r0 14 | 1: 15 | alsc $-16.,r0 16 | dvd $10.,r0 17 | beq 1f 18 | mov r1,-(sp) 19 | jsr pc,1b 20 | mov (sp)+,r1 21 | 1: 22 | mov r1,r0 23 | add $'0,r0 24 | jmp putch 25 | 2: 26 | mov $1f,r0 27 | jmp obuild 28 | 1: 29 | <-32768\0>;.even 30 | -------------------------------------------------------------------------------- /unix_v1/boot/simh.cfg: -------------------------------------------------------------------------------- 1 | #!tools/pdp11 2 | set cpu 11/20 3 | set cpu 32K 4 | set rk0 enabled 5 | att rk0 rk0.dsk 6 | set rf 2p 7 | set rf enabled 8 | attach rf rf0.dsk 9 | set tc enabled 10 | att tc tape 11 | set hk disabled 12 | set rha disabled 13 | set tm disabled 14 | set rx disabled 15 | set rl disabled 16 | set tq disabled 17 | set tc enabled 18 | set rf enabled 19 | set ke enabled 20 | set cpu history=1000 21 | load boot/m792low.load 22 | d sr 173700 23 | go 73700 24 | -------------------------------------------------------------------------------- /unix_v1/boot/simh_cold.cfg: -------------------------------------------------------------------------------- 1 | #!tools/pdp11 2 | set cpu 11/20 3 | set cpu 32K 4 | set rk0 enabled 5 | att rk0 rk0.dsk 6 | set rf 2p 7 | set rf enabled 8 | attach rf rf0.dsk 9 | set tc enabled 10 | att tc tape 11 | set hk disabled 12 | set rha disabled 13 | set tm disabled 14 | set rx disabled 15 | set rl disabled 16 | set tq disabled 17 | set tc enabled 18 | set rf enabled 19 | set ke enabled 20 | set cpu history=1000 21 | load boot/m792low.load 22 | d sr 1 23 | go 73700 24 | -------------------------------------------------------------------------------- /unix_v6/s4/ltod.s: -------------------------------------------------------------------------------- 1 | / C library 2 | / return floating-point from long integer 3 | / d = ltod(l) 4 | 5 | .globl _ltod 6 | _ltod: 7 | mov r5,-(sp) 8 | mov sp,r5 9 | setl 10 | movif *4(r5),fr0 11 | seti 12 | mov (sp)+,r5 13 | rts pc 14 | 15 | / return long integer from floating 16 | / dtol(d, l) 17 | 18 | .globl _dtol 19 | _dtol: 20 | mov r5,-(sp) 21 | mov sp,r5 22 | setl 23 | movf 4(r5),fr0 24 | movfi fr0,*12.(r5) 25 | seti 26 | mov (sp)+,r5 27 | rts pc 28 | -------------------------------------------------------------------------------- /unix_v6/salloc/length.s: -------------------------------------------------------------------------------- 1 | .globl length 2 | .globl position 3 | .globl w, r, a, l 4 | / 5 | / 6 | / routine to return the length of a string 7 | / 8 | / mov ...,r1 9 | / jsr pc,length 10 | / mov r0,... 11 | / 12 | length: 13 | mov w(r1),r0 14 | sub a(r1),r0 15 | rts pc 16 | / 17 | / 18 | / routine to return the read pointer position 19 | / 20 | / mov ...,r1 21 | / jsr pc,position 22 | / mov r0,... 23 | / 24 | position: 25 | mov r(r1),r0 26 | sub a(r1),r0 27 | rts pc 28 | -------------------------------------------------------------------------------- /unix_v6/iolib/maktab.c: -------------------------------------------------------------------------------- 1 | char IEH3endm[128] {0}; 2 | IEH3mtab (formatp) 3 | char **formatp; 4 | { 5 | /* make up special table of string ending characters */ 6 | int i, normal; 7 | char ch; 8 | /* normally all characters end string except those listed */ 9 | normal = 1; 10 | if (**formatp == '^') 11 | {normal = 0; (*formatp)++;} 12 | for (i= 0; i < 128; i++) 13 | IEH3endm[i] = normal; 14 | while ((ch = *((*formatp)++)) != ']') 15 | IEH3endm[ch] = !IEH3endm[ch]; 16 | 17 | } 18 | -------------------------------------------------------------------------------- /unix_v6/s5/ptrace.s: -------------------------------------------------------------------------------- 1 | / ptrace -- C library 2 | 3 | / result = ptrace(req, pid, addr, data); 4 | 5 | ptrace = 26. 6 | indir = 0 7 | 8 | .globl _ptrace 9 | .globl cerror, _errno 10 | 11 | _ptrace: 12 | mov r5,-(sp) 13 | mov sp,r5 14 | mov 4.(r5),0f+4 15 | mov 6.(r5),0f+0 16 | mov 8.(r5),0f+2 17 | mov 10.(r5),r0 18 | clr _errno 19 | sys indir; 9f 20 | bec 1f 21 | jmp cerror 22 | 1: 23 | mov (sp)+,r5 24 | rts pc 25 | 26 | .data 27 | 9: 28 | sys ptrace; 0: .=.+6 29 | -------------------------------------------------------------------------------- /unix_v6/fort/fx/fxb.s: -------------------------------------------------------------------------------- 1 | / 2 | / 3 | 4 | / fxb -- get integer constant or label 5 | 6 | .globl geticon 7 | .globl getlab 8 | 9 | .globl getsym 10 | .globl geti 11 | .globl ptemp 12 | 13 | geticon: 14 | jsr r5,getsym 15 | cmp r0,$2 16 | bne 1f 17 | cmp r3,$intcon 18 | bne 1f 19 | jsr r5,geti 20 | tst (r5)+ 21 | 1: 22 | rts r5 23 | 24 | getlab: 25 | jsr r5,geticon 26 | br 1f 27 | mov r0,temp 28 | jsr r5,ptemp; 'r; temp; line 29 | tst (r5)+ 30 | 1: 31 | rts r5 32 | 33 | -------------------------------------------------------------------------------- /unix_v6/fort/rt1/sign.s: -------------------------------------------------------------------------------- 1 | / 2 | / 3 | 4 | / sign & dsign fortran functions 5 | 6 | .globl sign. 7 | .globl dsign. 8 | 9 | .globl retrn 10 | .globl temp 11 | .globl rerr 12 | 13 | dsign.: temp 14 | .+2 15 | setd 16 | br 1f 17 | 18 | sign.: temp 19 | .+2 20 | setf 21 | 1: 22 | cmp *2(sp),$2 23 | bne 2f 24 | movf *2(r3),r0 25 | absf r0 26 | tstf *4(r3) 27 | cfcc 28 | bge 1f 29 | negf r0 30 | 1: 31 | movf r0,temp 32 | jmp retrn 33 | 34 | 2: 35 | jsr r5,rerr; 12. 36 | -------------------------------------------------------------------------------- /unix_v6/s3/mesg.s: -------------------------------------------------------------------------------- 1 | .globl mesg 2 | 3 | / usage: 4 | / jsr r5,mesg 5 | / 6 | / .even 7 | / ... 8 | / 9 | / string is output onto $1 10 | / 11 | 12 | mesg: 13 | mov r0,-(sp) 14 | mov r5,r0 15 | mov r5,0f 16 | 1: 17 | tstb (r5)+ 18 | bne 1b 19 | sub r5,r0 20 | com r0 21 | mov r0,0f+2 22 | mov $1,r0 23 | sys 0; 9f 24 | .data 25 | 9: 26 | sys write; 0:..; .. 27 | .text 28 | inc r5 29 | bic $1,r5 30 | mov (sp)+,r0 31 | rts r5 32 | 33 | -------------------------------------------------------------------------------- /unix_v6/cref/index/econs.h: -------------------------------------------------------------------------------- 1 | # define NUMA 14 2 | # define NUMC 128 3 | # define NUMS 3 4 | # define SIZA 8 5 | # define SIZC 2 6 | # define SIZS 8 7 | # define PTRI 509 8 | # define CHARI 4000 9 | # define PTRX 5147 10 | # define CHARX 40000 11 | # define CONT 0 12 | # define COLL 1 13 | # define SAVE 2 14 | # define OUT 3 15 | # define EGOBL 4 16 | # define SHARP 5 17 | # define PNO 6 18 | 19 | # define SKIP 0 20 | # define COLLECT 1 21 | # define SKIP2 2 22 | #define CREATC 0644 23 | -------------------------------------------------------------------------------- /unix_v6/fort/rt1/alog10.s: -------------------------------------------------------------------------------- 1 | / 2 | / 3 | 4 | / alog10 & dlog10 fortran functions 5 | 6 | .globl dlog10. 7 | .globl alog10. 8 | 9 | .globl log 10 | .globl retrn 11 | .globl rerr 12 | .globl temp 13 | 14 | dlog10.:temp 15 | .+2 16 | setd 17 | br 1f 18 | 19 | alog10.:temp 20 | .+2 21 | setf 22 | 1: 23 | movf *2(r3),r0 24 | jsr pc,log 25 | bes 1f 26 | mulf const,r0 27 | movf r0,temp 28 | jmp retrn 29 | 30 | 1: 31 | jsr r5,rerr; 1 32 | 33 | const: 37736;55730;124467;24146 34 | -------------------------------------------------------------------------------- /unix_v6/s5/wait.s: -------------------------------------------------------------------------------- 1 | / C library -- wait 2 | 3 | / pid = wait(); 4 | / or, 5 | / pid = wait(&status); 6 | / 7 | / pid == -1 if error 8 | / status indicates fate of process, if given 9 | 10 | .globl _wait, _nargs, cerror 11 | 12 | _wait: 13 | mov r5,-(sp) 14 | mov sp,r5 15 | jsr pc,_nargs 16 | mov r0,-(sp) 17 | sys wait 18 | bec 1f 19 | tst (sp)+ 20 | jmp cerror 21 | 1: 22 | tst (sp)+ 23 | beq 2f 24 | mov r1,*4(r5) / status return 25 | 2: 26 | mov (sp)+,r5 27 | rts pc 28 | -------------------------------------------------------------------------------- /unix_v6/tmg/tmgb/infix.s: -------------------------------------------------------------------------------- 1 | .globl .p,sprv 2 | .globl .a,.s,.o,.n,.x 3 | 4 | / + 5 | .a: 6 | jsr pc,sprv 7 | add (sp),4(sp) 8 | br 9f 9 | 10 | / - 11 | .s: 12 | jsr pc,sprv 13 | sub (sp),4(sp) 14 | br 9f 15 | 16 | / | 17 | .o: 18 | jsr pc,sprv 19 | bis (sp),4(sp) 20 | br 9f 21 | 22 | / & 23 | .n: 24 | jsr pc,sprv 25 | com (sp) 26 | bic (sp),4(sp) 27 | br 9f 28 | 29 | / ^ exclusive or 30 | .x: 31 | jsr pc,sprv 32 | mov (sp),r0 33 | xor r0,4(sp) 34 | 9: 35 | jmp .p 36 | -------------------------------------------------------------------------------- /unix_v6/fort/rt1/cmplx.s: -------------------------------------------------------------------------------- 1 | / 2 | / 3 | 4 | / cmplx fortran function 5 | 6 | .globl cmplx. 7 | .globl dcmplx. 8 | 9 | .globl retrn 10 | .globl temp 11 | .globl rerr 12 | 13 | dcmplx.:temp 14 | .+2 15 | setd 16 | br 1f 17 | 18 | cmplx.: temp 19 | .+2 20 | setf 21 | 1: 22 | cmp *2(sp),$2 23 | bne 1f 24 | mov r3,r1 25 | tst (r1)+ 26 | movf *(r1)+,r0 27 | movf *(r1)+,r1 28 | mov $temp,r1 29 | movf r0,(r1)+ 30 | movf r1,(r1)+ 31 | jmp retrn 32 | 33 | 1: 34 | jsr r5,rerr; 6. 35 | -------------------------------------------------------------------------------- /unix_v6/s1/cpall.c: -------------------------------------------------------------------------------- 1 | char buf[100]; 2 | 3 | main(argc, argv) 4 | char **argv; 5 | { 6 | register i; 7 | register char *c1, *c2; 8 | 9 | if(argc < 3) { 10 | write(2, "arg count\n", 10); 11 | exit(); 12 | } 13 | argc--; 14 | c1 = buf; 15 | c2 = argv[argc]; 16 | while(*c1++ = *c2++); 17 | c1[-1] = '/'; 18 | *c1++ = '.'; 19 | *c1 = '\0'; 20 | for(i=1; i='0' && c<='9') { 22 | if(n) 23 | n++; 24 | d = d*10.+c-'0'; 25 | goto loop; 26 | } 27 | if(f) 28 | d = -d; 29 | for(f=1; f 35 | -------------------------------------------------------------------------------- /unix_v1/tools/disaout/README: -------------------------------------------------------------------------------- 1 | This is a start on a disassembler for PDP-11 a.out Unix binaries. There's 2 | still a lot to do. Right now I am concentrating on V1 and V2 binaries. I 3 | have re-used code from Apout, so later on we can also do binaries from 4 | V5/B6/V7, 2.9 and 2.11 BSD. I'd also like to parse symbol tables, but 5 | that's for later. 6 | 7 | I need to deal with the bss and initialised data sections of a binary. 8 | 9 | Lots to do, and it's very frustrating. 10 | 11 | Warren Toomey, Mon May 5 2008 12 | -------------------------------------------------------------------------------- /unix_v6/fort/rt1/amod.s: -------------------------------------------------------------------------------- 1 | / 2 | / 3 | 4 | / amod & dmod fortran functions 5 | 6 | .globl amod. 7 | .globl dmod. 8 | 9 | .globl retrn 10 | one = 40200 11 | .globl temp 12 | .globl rerr 13 | 14 | dmod.: temp 15 | .+2 16 | setd 17 | br 1f 18 | 19 | amod.: temp 20 | .+2 21 | setf 22 | 1: 23 | cmp *2(sp),$2 24 | bne 1f 25 | movf *2(r3),r0 26 | movf r0,r2 27 | movf *4(r3),r1 28 | divf r1,r2 29 | modf $one,r2 30 | mulf r1,r3 31 | subf r3,r0 32 | movf r0,temp 33 | jmp retrn 34 | 35 | 1: 36 | jsr r5,rerr; 2 37 | -------------------------------------------------------------------------------- /unix_v6/s1/chmod.c: -------------------------------------------------------------------------------- 1 | main(argc, argv) 2 | char **argv; 3 | { 4 | register i, m; 5 | register char *c; 6 | int count; 7 | 8 | if(argc < 3) { 9 | printf("arg count\n"); 10 | exit(1); 11 | } 12 | c = argv[1]; 13 | m = 0; 14 | for(m=0; *c; c++) { 15 | if(*c < '0' || *c > '7') { 16 | printf("bad mode\n"); 17 | exit(1); 18 | } 19 | m = (m<<3) | *c - '0'; 20 | } 21 | for(i=2; i; .even 22 | r1 23 | r0 24 | r3 25 | mov (sp)+,r3 26 | mov (sp)+,r1 27 | rts r5 28 | 29 | newline: 30 | jsr r5,code 31 | <\n\0>; .even 32 | rts r5 33 | 34 | typ: 35 | 36 | 37 | -------------------------------------------------------------------------------- /unix_v6/fort/rt1/cexp.s: -------------------------------------------------------------------------------- 1 | / 2 | / 3 | 4 | / cexp fortran function 5 | 6 | .globl cexp. 7 | 8 | .globl rval8p 9 | .globl retrn 10 | .globl temp 11 | .globl rerr 12 | .globl exp 13 | .globl sin 14 | .globl cos 15 | 16 | cexp.: temp 17 | rval8p; 2 18 | .+2 19 | setf 20 | movf (sp)+,r0 21 | jsr pc,exp 22 | bes 1f 23 | movf r0,temp 24 | movf (sp),r0 25 | jsr pc,sin 26 | mulf temp,r0 27 | movf r0,temp+4 28 | movf (sp)+,r0 29 | jsr pc,cos 30 | mulf temp,r0 31 | movf r0,temp 32 | jmp retrn 33 | 34 | 1: 35 | jsr r5,rerr; 5. 36 | -------------------------------------------------------------------------------- /unix_v6/fort/fx/fxc.s: -------------------------------------------------------------------------------- 1 | / 2 | / 3 | 4 | / fxc -- size of array 5 | 6 | .globl size 7 | .globl nelem 8 | 9 | .globl error 10 | 11 | size: 12 | movb symtab+1(r3),r0 13 | jsr r5,nelem 14 | inc r0 15 | bic $1,r0 / round to 0 mod 2 16 | rts r5 17 | 18 | nelem: 19 | mov r1,-(sp) 20 | mov r0,r1 21 | mov symtab(r3),r0 22 | bic $!70,r0 23 | cmp r0,$20 24 | bne 1f 25 | mov symtab+2(r3),r0 26 | mov (r0)+,-(sp) 27 | 2: 28 | mpy (r0)+,r1 29 | dec (sp) 30 | bgt 2b 31 | tst (sp)+ 32 | 1: 33 | mov r1,r0 34 | mov (sp)+,r1 35 | rts r5 36 | 37 | -------------------------------------------------------------------------------- /unix_v6/m6/m61.c: -------------------------------------------------------------------------------- 1 | # 2 | 3 | #include "m6.h" 4 | 5 | main(argc,argv) 6 | char **argv; 7 | { 8 | extern fin; 9 | int t; 10 | gf = ge = g0; 11 | pf = pe = p0; 12 | t = g0; 13 | gmax =+ t-10; 14 | t = d0; 15 | dmax =+ t-10; 16 | t = p0; 17 | pmax =+ t-10; 18 | revptr(d0,d0+2,&df,&de); 19 | if(argc>1) { 20 | fin = open(argv[1],0); 21 | control(); 22 | close(fin); 23 | } 24 | fin = dup(0); 25 | control(); 26 | } 27 | 28 | 29 | diag(m) { 30 | printf("%s\n",m); 31 | iot(); 32 | } /* abort */ 33 | 34 | int iot 4; 35 | 36 | -------------------------------------------------------------------------------- /unix_v6/s4/getchr.s: -------------------------------------------------------------------------------- 1 | / getchar() -- get a character from input file fin 2 | 3 | .globl _getchar 4 | .comm _errno,2 5 | .comm _fin,518. 6 | 7 | _getchar: 8 | mov r5,-(sp) 9 | mov sp,r5 10 | dec _fin+2 11 | bge 1f 12 | mov $_fin+6,_fin+4 13 | mov _fin,r0 14 | sys read; _fin+6; 512. 15 | bes badret 16 | tst r0 17 | beq badret 18 | dec r0 19 | mov r0,_fin+2 20 | 1: 21 | clr r0 22 | bisb *_fin+4,r0 23 | inc _fin+4 24 | mov (sp)+,r5 25 | rts pc 26 | 27 | badret: 28 | mov r0,_errno 29 | clr r0 30 | clr _fin+2 31 | mov (sp)+,r5 32 | rts pc 33 | -------------------------------------------------------------------------------- /unix_v1/simh.cfg: -------------------------------------------------------------------------------- 1 | #!tools/pdp11 2 | set cpu 11/20 3 | set cpu 32K 4 | set rk0 enabled 5 | att rk0 images/rk0.dsk 6 | set rf 2p 7 | set rf enabled 8 | att rf images/rf0.dsk 9 | set tc enabled 10 | att tc images/tape 11 | set hk disabled 12 | set rha disabled 13 | set tm disabled 14 | set rx disabled 15 | set rl disabled 16 | set tq disabled 17 | set tc enabled 18 | set rf enabled 19 | set ke enabled 20 | set cpu history=1000 21 | set dci en 22 | set dci lines=8 23 | set dco 7b 24 | att dci 5555 25 | load images/m792low.load 26 | dep system sr 173700 27 | go 73700 28 | -------------------------------------------------------------------------------- /unix_v6/fort/f1/f16.s: -------------------------------------------------------------------------------- 1 | / 2 | / 3 | 4 | / f16 -- extrn, equiv, data 5 | 6 | .globl sextr 7 | .globl sequi 8 | 9 | .globl getsym 10 | .globl putc 11 | .globl error 12 | .globl ptemp 13 | 14 | sextr: 15 | jsr r5,getsym 16 | tst r0 17 | bne 1f 18 | bit $70,symtab(r3) 19 | beq 2f 20 | jsr r5,error; 14. 21 | 2: 22 | bis $30,symtab(r3) 23 | jsr r5,getsym 24 | cmp r0,$36. / , 25 | beq sextr 26 | cmp r0,$40. / eos 27 | beq 2f 28 | 1: 29 | jsr r5,error; 15. 30 | 2: 31 | rts r5 32 | 33 | sequi: 34 | jsr r5,ptemp; 'e; efno; line 35 | rts r5 36 | 37 | 38 | -------------------------------------------------------------------------------- /unix_v6/iolib/copen.c: -------------------------------------------------------------------------------- 1 | copen (filename, type) 2 | char *filename; 3 | int type; 4 | { 5 | int fn; 6 | switch (type) 7 | { 8 | case 'r': type = 0; 9 | case 0: fn = open(filename,0); 10 | break; 11 | case 'a': type = 2; 12 | case 2: if ((fn=open(filename,1))>=0) 13 | break; /* courtesy of sny */ 14 | /* append defaults to write if file missing */ 15 | case 'w': type = 1; 16 | case 1: fn = creat(filename,0666); 17 | break; 18 | default: IEH3err("copen: bad file %s",filename); 19 | } 20 | if (fn >= 0) 21 | IEH3mbuf(fn,type); 22 | return(fn); 23 | } 24 | -------------------------------------------------------------------------------- /unix_v6/fort/rt/rd.s: -------------------------------------------------------------------------------- 1 | / 2 | / 3 | 4 | / rd -- short list I/O do loop 5 | 6 | .globl slist1 7 | .globl slist2 8 | .globl slist3 9 | 10 | .globl temp 11 | 12 | slist1: 13 | mov (r4)+,r0 14 | mov (r0)+,r2 15 | mov $1,r1 16 | 1: 17 | mpy (r0)+,r1 18 | sob r2,1b 19 | mov $temp,r2 20 | mov r1,(r2)+ 21 | clr (r2)+ 22 | mov (r0)+,(r2)+ 23 | jmp *(r4)+ 24 | 25 | slist2: 26 | mov (r4)+,r0 27 | dec temp 28 | ble 1f 29 | mov r0,r4 30 | 1: 31 | jmp *(r4)+ 32 | 33 | slist3: 34 | mov $temp+2,r0 35 | add (r0)+,(sp) 36 | add (r0),-(r0) 37 | jmp *(r4)+ 38 | 39 | -------------------------------------------------------------------------------- /unix_v6/yacc/lib/zerr.c: -------------------------------------------------------------------------------- 1 | extern int yyline; /* input line number */ 2 | 3 | yyerror(s) char *s; { 4 | extern int yychar; 5 | extern char *yysterm[]; 6 | printf("\n%s", s ); 7 | if( yyline ) printf(", line %d,", yyline ); 8 | printf(" on input: "); 9 | if( yychar >= 0400 ) printf("%s\n", yysterm[yychar-0400] ); 10 | else switch ( yychar ) { 11 | case '\t': printf( "\\t\n" ); return; 12 | case '\n': printf( "\\n\n" ); return; 13 | case '\0': printf( "$end\n" ); return; 14 | default: printf( "%c\n" , yychar ); return; 15 | } 16 | } 17 | -------------------------------------------------------------------------------- /unix_v6/s5/reset.s: -------------------------------------------------------------------------------- 1 | / C library -- reset, setexit 2 | 3 | / reset() 4 | / will generate a "return" from 5 | / the last call to 6 | / setexit() 7 | / by restoring sp, r5 8 | / and doing a return. 9 | / 10 | / useful for going back to the main loop 11 | / after a horrible error in a lowlevel 12 | / routine. 13 | 14 | .globl _setexit 15 | .globl _reset 16 | .globl csv, cret 17 | 18 | _setexit: 19 | jsr r5,csv 20 | mov r5,sr5 21 | mov 2(r5),spc 22 | jmp cret 23 | 24 | _reset: 25 | mov sr5,r5 26 | mov spc,2(r5) 27 | jmp cret 28 | 29 | .bss 30 | sr5: .=.+2 31 | spc: .=.+2 32 | -------------------------------------------------------------------------------- /unix_v6/fort/rt/ra.s: -------------------------------------------------------------------------------- 1 | / 2 | / 3 | 4 | / ra -- fortran runtime -- real ** real 5 | 6 | .globl rpr4 7 | .globl rpr8 8 | 9 | .globl log 10 | .globl exp 11 | .globl rerr 12 | 13 | rpr8: 14 | setd 15 | br 1f 16 | 17 | rpr4: 18 | setf 19 | 20 | 1: 21 | seti 22 | movf (sp)+,fr1 23 | movf (sp)+,fr0 24 | cfcc 25 | beq 3f / 0**x 26 | movf fr1,-(sp) 27 | jsr pc,log 28 | bes error 29 | mulf (sp)+,fr0 30 | jsr pc,exp 31 | bes error 32 | 2: 33 | movf fr0,-(sp) 34 | jmp *(r4)+ 35 | 36 | 3: 37 | tstf r1 38 | cfcc 39 | bgt 2b 40 | 41 | error: 42 | jsr r5,rerr; 17. 43 | 44 | -------------------------------------------------------------------------------- /unix_v1/pages/e09-08: -------------------------------------------------------------------------------- 1 | bne 1f / if not, branch 2 | mov $511,rcsr(r1) / set control bits for receiver 3 | mov $511,tcsr(r1) / set control bits for transmitter 4 | movb $210,tty+4(r1) / put 210 in tty table word 3 / set flags 5 | 1: 6 | incb (r5) / inc first byte of tty buffer 7 | tst (sp)+ 8 | tst u.ttyp / is there a process control tty 9 | bne 1f / yes, then branch 10 | mov r5,u.ttyp / no, make this tty the process control tty 11 | br 1f / return 12 | 13 | ccvt: 14 | sub $28.,r1 15 | asl r1 / 0%4 16 | asl r1 17 | mov tty+6(r1),r5 18 | decb (r5) 19 | 1: 20 | jmp sret 21 | 22 | -------------------------------------------------------------------------------- /unix_v1/src/lib/intr.s: -------------------------------------------------------------------------------- 1 | / C library -- intr 2 | 3 | / intr(0); /* exit on interrupt */ 4 | / intr(anything_odd); /* ignore interrupts */ 5 | / intr(label); /* goto label on interrupts */ 6 | 7 | .globl _intr 8 | 9 | .data 10 | _intr: 11 | 1f 12 | .text 13 | 1: 14 | mov 2(sp),r0 15 | beq 1f 16 | bit $1,r0 17 | beq 2f 18 | 1: 19 | bic $1,r0 20 | mov r0,0f 21 | sys intr; 0:.. 22 | rts pc 23 | 2: 24 | mov r5,9f 25 | mov r0,9f+2 26 | sys intr; 1f 27 | rts pc 28 | 29 | / here on interrupts 30 | 31 | 1: 32 | mov 9f,r5 33 | jmp *9f+2 34 | 35 | .bss 36 | 9: 37 | .=.+4 38 | 39 | -------------------------------------------------------------------------------- /unix_v6/fort/rt2/setfil.s: -------------------------------------------------------------------------------- 1 | / Fortran library-- setfil 2 | 3 | / call setfil(unit, 5hname ) 4 | 5 | .globl setfil. 6 | 7 | .globl getbuf 8 | .globl chkunit 9 | .globl retrn 10 | .globl utable 11 | .globl temp 12 | .globl rerr 13 | 14 | setfil.: 15 | temp 16 | .+2 17 | mov 2(r3),r1 18 | mov 2(r1),r1 19 | jsr r5,chkunit 20 | tstb utable(r1) 21 | beq 1f 22 | jsr r5,rerr; 112. 23 | 1: 24 | jsr r5,getbuf 25 | movb $-1,utable(r1) 26 | mov 4(r3),r0 27 | mov r2,r1 28 | 1: 29 | movb (r0)+,(r1) 30 | beq 1f 31 | cmpb $' ,(r1)+ 32 | bne 1b 33 | clrb -(r1) 34 | 1: 35 | jmp retrn 36 | -------------------------------------------------------------------------------- /unix_v6/s3/floor.s: -------------------------------------------------------------------------------- 1 | .globl _floor, _ceil 2 | .globl floor, ceil 3 | one = 40200 4 | 5 | _floor: 6 | mov r5,-(sp) 7 | mov sp,r5 8 | movf 4(r5),fr0 9 | jsr pc,floor 10 | br 1f 11 | 12 | _ceil: 13 | mov r5,-(sp) 14 | mov sp,r5 15 | movf 4(r5),fr0 16 | jsr pc,ceil 17 | 1: 18 | mov (sp)+,r5 19 | rts pc 20 | 21 | floor: 22 | tstf fr0 23 | cfcc 24 | bge 1f 25 | modf $one,fr0 26 | cfcc 27 | beq 2f 28 | subf $one,fr1 29 | br 2f 30 | 1: 31 | modf $one,fr0 32 | 2: 33 | movf fr1,fr0 34 | rts pc 35 | 36 | ceil: 37 | negf fr0 38 | jsr pc,floor 39 | negf fr0 40 | rts pc 41 | -------------------------------------------------------------------------------- /unix_v6/tmg/tmgb/px.s: -------------------------------------------------------------------------------- 1 | f = r5 2 | i = r3 3 | .globl j,n 4 | .globl iget,jget 5 | .globl succ,fail 6 | .globl .px,.pxs 7 | 8 | .pxs: 9 | mov i,r0 10 | tst (i)+ 11 | br 1f 12 | .px: 13 | jsr pc,iget 14 | 1: 15 | inc litc 16 | mov n(f),-(sp) 17 | mov j(f),-(sp) 18 | mov r0,-(sp) 19 | 2: 20 | tstb *(sp) 21 | beq 2f 22 | jsr pc,jget 23 | cmpb r0,*(sp) 24 | beq 1f 25 | tst (sp)+ 26 | mov (sp)+,j(f) 27 | mov (sp)+,n(f) 28 | jmp fail 29 | 1: 30 | clr n(f) 31 | inc (sp) 32 | inc j(f) 33 | br 2b 34 | 2: 35 | cmp (sp)+,(sp)+ 36 | mov (sp)+,n(f) 37 | jmp succ 38 | litc: 0 39 | -------------------------------------------------------------------------------- /unix_v6/s2/opr.c: -------------------------------------------------------------------------------- 1 | /* 2 | * opr -- off line print dispatcher 3 | * chooses spooling routine appropriate 4 | * to destination 5 | * 6 | * last entry in table isdefault 7 | */ 8 | 9 | char *code[] { 10 | "-lp", "/lib/lpr", /* line printer */ 11 | 0 12 | }; 13 | 14 | main(argc, argv) 15 | char **argv; 16 | { 17 | int i, j; 18 | 19 | argv[argc] = 0; 20 | for(i=0; code[i]; i=+2) 21 | if(argc > 1) 22 | for(j=0; code[i][j]==argv[1][j]; j++) 23 | if(code[i][j] == 0) 24 | execv(code[i+1], &argv[1]); 25 | execv(code[i-1], argv); 26 | write(2, "can't start daemon\n", 19); 27 | } 28 | -------------------------------------------------------------------------------- /unix_v6/mdec/rkf.s: -------------------------------------------------------------------------------- 1 | / format RK03/05 disk packs 2 | 3 | rkda = 177412 4 | 5 | jsr pc,4(r5) 6 | ; .even 7 | jsr pc,2(r5) 8 | mov r0,-(sp) 9 | mov $'\n,r0 10 | jsr pc,(r5) 11 | cmp (sp)+,$'y 12 | beq 1f 13 | rts pc 14 | 1: 15 | mov $203.*2,r4 16 | clr r3 17 | 1: 18 | mov $rkda+2,r0 19 | mov r3,-(r0) 20 | mov $buf,-(r0) 21 | mov $-12.*256.,-(r0) 22 | mov $6003,-(r0) 23 | 2: 24 | tstb (r0) 25 | bge 2b 26 | tst (r0) 27 | blt 1f 28 | add $20,r3 29 | dec r4 30 | bne 1b 31 | rts pc 32 | 1: 33 | jsr pc,4(r5) 34 | ; .even 35 | rts pc 36 | 37 | buf: .=.+2 38 | -------------------------------------------------------------------------------- /unix_v6/fort/rt1/amax0.s: -------------------------------------------------------------------------------- 1 | / 2 | / 3 | 4 | / max0 & amax0 fortran functions 5 | 6 | .globl amax0. 7 | .globl max0. 8 | 9 | .globl retrn 10 | .globl temp 11 | 12 | max0.: temp 13 | .+2 14 | mov pc,r2 15 | br 1f 16 | 17 | amax0.: temp 18 | .+2 19 | clr r2 20 | 1: 21 | setf 22 | setl 23 | mov *2(sp),r0 / arg count 24 | mov r3,r1 25 | tst (r1)+ / argpp 26 | movif *(r1)+,r1 27 | br 2f 28 | 1: 29 | movif *(r1)+,r0 30 | cmpf r0,r1 31 | cfcc 32 | ble 2f 33 | movf r0,r1 34 | 2: 35 | dec r0 36 | bgt 1b 37 | tst r2 38 | bne 1f 39 | movf r1,temp 40 | br 2f 41 | 1: 42 | movfi r1,temp 43 | 2: 44 | jmp retrn 45 | -------------------------------------------------------------------------------- /unix_v6/fort/rt1/amin0.s: -------------------------------------------------------------------------------- 1 | / 2 | / 3 | 4 | / min0 & amin0 fortran functions 5 | 6 | .globl amin0. 7 | .globl min0. 8 | 9 | .globl retrn 10 | .globl temp 11 | 12 | min0.: temp 13 | .+2 14 | mov pc,r2 15 | br 1f 16 | 17 | amin0.: temp 18 | .+2 19 | clr r2 20 | 1: 21 | setf 22 | setl 23 | mov *2(sp),r0 / arg count 24 | mov r3,r1 25 | tst (r1)+ / argpp 26 | movif *(r1)+,r1 27 | br 2f 28 | 1: 29 | movif *(r1)+,r0 30 | cmpf r0,r1 31 | cfcc 32 | bge 2f 33 | movf r0,r1 34 | 2: 35 | dec r0 36 | bgt 1b 37 | tst r2 38 | bne 1f 39 | movf r1,temp 40 | br 2f 41 | 1: 42 | movfi r1,temp 43 | 2: 44 | jmp retrn 45 | -------------------------------------------------------------------------------- /unix_v1/tools/rebuild-split: -------------------------------------------------------------------------------- 1 | #!/bin/sh 2 | # rebuild sources in a manner that lets you see the page splits. 3 | # useful for editing the pages to get the inter-page flow to line 4 | # up properly. 5 | 6 | xcat() { 7 | for fn in $*; do 8 | cat $fn 9 | echo "******* $fn end *******" 10 | done 11 | } 12 | 13 | m() { xcat pages/$2 > rebuilt/$1.s; } 14 | 15 | test -d rebuilt || mkdir rebuilt 16 | 17 | m u0 e00-* 18 | #m u1 e01-* 19 | m u2 e02-* 20 | #m u3 e03-* 21 | #m u4 e04-* 22 | m u5 e05-* 23 | m u6 e06-* 24 | m u7 e07-* 25 | #m u8 e08-* 26 | m u9 e09-* 27 | m ux e10-* 28 | #m sh e11-* 29 | #m ini e12-* 30 | -------------------------------------------------------------------------------- /unix_v6/iolib/cclose.c: -------------------------------------------------------------------------------- 1 | # include "ciodec.c" 2 | cclose (fn) 3 | int fn; 4 | { 5 | struct fileps *fp; 6 | extern char *IEH3olbf[10]; 7 | if (fn < 0 || fn > 20) return; 8 | fp = &IEH3fpts[fn]; 9 | if (fp->nchars > 0 || fp->wrflag == 3) 10 | switch (fp->wrflag) 11 | { 12 | case 3: seek(fn,0,2); 13 | case 2: write (fn, fp->buff, fp->nchars); 14 | break; 15 | case 1: seek(fn, -(fp->nchars), 1); 16 | } 17 | fp -> nchars = fp->eoferr = 0; 18 | fp -> wrflag = 0; 19 | if ( IEH3olbf[fn] != 0 && fp->bsize >4) 20 | free(IEH3olbf[fn]); 21 | IEH3olbf[fn] = 0; 22 | close (fn); 23 | } 24 | char *IEH3olbf[10] {0,0,0,0,0,0,0,0,0,0}; 25 | -------------------------------------------------------------------------------- /unix_v6/tmg/tmgb/copy.s: -------------------------------------------------------------------------------- 1 | f = r5 2 | i = r3 3 | .globl x,k 4 | .globl ktab,ktat 5 | .globl putcall,obuild 6 | .globl errcom,succ,generate 7 | .globl rewcstr,getcstr 8 | .globl scopy 9 | 10 | scopy: 11 | mov $2f+1,r0 12 | jsr pc,putcall 13 | jsr pc,rewcstr 14 | mov k(f),r2 15 | neg r2 16 | add $2,r2 17 | 1: 18 | jsr pc,getcstr 19 | tst r0 20 | beq 1f 21 | movb r0,ktab(r2) 22 | inc r2 23 | cmp r2,$ktat 24 | blt 1b 25 | jsr r0,errcom 26 | ;.even 27 | 1: 28 | clrb ktab(r2) 29 | bic $1,r2 30 | neg r2 31 | mov r2,k(f) 32 | jmp succ 33 | 2: 34 | mov i,r0 35 | jsr pc,obuild 36 | jmp generate 37 | -------------------------------------------------------------------------------- /unix_v1/patches/core/shell.patch: -------------------------------------------------------------------------------- 1 | --- build/sh.clean 2008-05-11 10:41:44.000000000 -1000 2 | +++ build/sh.s 2008-05-11 10:42:49.000000000 -1000 3 | @@ -142,6 +146,8 @@ 4 | inc r5 / inc r5 to point to return 5 | bic $1,r5 / make it even 6 | clr r0 / set for input 7 | + rts r5 8 | + 9 | sys seek; 0; 2 / exit from runcom. skip to end of 10 | / input file 11 | chcom: / has no effect if tty input 12 | @@ -257,6 +255,8 @@ 13 | beq 1f / yes 14 | cmp r0,$'? / is it ? 15 | beq 3f 16 | + cmp r0,$'* / is it * 17 | + beq 3f 18 | cmp r0,$'[ / is it beginning of character string 19 | / (for glob) 20 | bne 2f 21 | -------------------------------------------------------------------------------- /unix_v1/patches/fixV7div.patch: -------------------------------------------------------------------------------- 1 | diff -ru rebuilt/u0.s build/u0.s 2 | --- rebuilt/u0.s 2008-05-03 08:27:03.000000000 -1000 3 | +++ build/u0.s 2008-05-04 08:28:00.000000000 -1000 4 | @@ -122,7 +122,7 @@ 5 | mov $sb0,(r1)+ / I/O queue entry drum 6 | mov $sb1,(r1)+ / I/O queue entry disk (mounted device) 7 | mov $swp,(r1)+ / I/O queue entry core image being swapped 8 | - mov $[systm-inode]\/2,sb0+4 / sets up initial buffers per 9 | + mov $-109.,sb0+4 / sets up initial buffers per 10 | / format given in 11 | mov $systm,sb0+6 / memory map 12 | mov $-512.,sb1+4 13 | -------------------------------------------------------------------------------- /unix_v6/fort/rt/r3.s: -------------------------------------------------------------------------------- 1 | / 2 | / 3 | 4 | / r3 -- comparisons 5 | 6 | .globl lif2 7 | .globl lif1 8 | .globl rif4 9 | .globl iif2 10 | .globl iif4 11 | .globl rif8 12 | 13 | lif2: 14 | lif1: 15 | tst (sp)+ 16 | bne 1f 17 | mov (r4),r4 18 | jmp *(r4)+ 19 | 1: 20 | tst (r4)+ 21 | jmp *(r4)+ 22 | 23 | rif8: 24 | setd 25 | tstf (sp)+ 26 | cfcc 27 | br 2f 28 | 29 | iif4: 30 | rif4: 31 | mov (sp)+,r0 32 | mov (sp)+,r1 33 | tst r0 34 | bne 2f 35 | tst r1 36 | cln 37 | br 2f 38 | 39 | iif2: 40 | tst (sp)+ 41 | 2: 42 | bmi 1f 43 | beq 2f 44 | tst (r4)+ 45 | 2: 46 | tst (r4)+ 47 | 1: 48 | mov (r4),r4 49 | jmp *(r4)+ 50 | 51 | -------------------------------------------------------------------------------- /unix_v6/cref/mcons.h: -------------------------------------------------------------------------------- 1 | # define NUMA 14 2 | # define NUMC 128 3 | # define NUMS 3 4 | # define SIZA 8 5 | # define SIZC 2 6 | # define SIZS 8 7 | # define PTRI 509 8 | # define CHARI 4000 9 | # define PTRX 509 10 | # define CHARX 4000 11 | # define CONT 1 12 | # define COLL 2 13 | # define SAVE 3 14 | # define OUT 4 15 | # define ASYM 5 16 | # define ASW 6 17 | # define CSYM 7 18 | # define CSW 8 19 | # define INCL 9 20 | # define DECL 10 21 | # define SK2 11 22 | # define SK 12 23 | # define TABS 13 24 | # define SEMI 14 25 | # define SHARP 15 26 | 27 | # define SKIP 0 28 | # define COLLECT 1 29 | # define SKIP2 2 30 | #define CREATC 0644 31 | -------------------------------------------------------------------------------- /unix_v1/patches/core/vec0407.patch: -------------------------------------------------------------------------------- 1 | diff -r -u rebuilt/u0.s build/u0.s 2 | --- rebuilt/u0.s 2008-05-03 08:27:03.000000000 -1000 3 | +++ build/u0.s 2008-05-04 08:25:41.000000000 -1000 4 | @@ -45,9 +45,9 @@ 5 | core = orig+40000 / specifies beginning of user's core 6 | ecore = core+20000 / specifies end of user's core (4096 words) 7 | 8 | -/ 4;4 init by copy 9 | -/ unkni;0 " error 10 | -/ fpsym;0 " illg in tr 11 | + 4;4 / init by copy 12 | + unkni;0 / " error 13 | + fpsym;0 / " illg in tr 14 | unkni;0 / trace and trap (see Sec. B.1 page ) 15 | unkni;0 / trap 16 | panic;0 / pwr 17 | -------------------------------------------------------------------------------- /unix_v6/salloc/rewind.s: -------------------------------------------------------------------------------- 1 | .globl rewind 2 | .globl create 3 | .globl fsfile 4 | .globl w, r, a, l 5 | / 6 | / 7 | / routine to rewind read pointer of string 8 | / pointed to by r1 9 | / 10 | / mov ...,r1 11 | / jsr pc,rewind 12 | / 13 | rewind: 14 | mov a(r1),r(r1) 15 | rts pc 16 | / 17 | / routine to rewind write pointer of string 18 | / pointed to by r1 19 | / 20 | / mov ...,r1 21 | / jsr pc,create 22 | / 23 | create: 24 | mov a(r1),w(r1) 25 | mov a(r1),r(r1) 26 | rts pc 27 | / 28 | / 29 | / routine to copy read pointer of string to end of string 30 | / 31 | / mov ...,r1 32 | / jsr pc,fsfile 33 | / 34 | fsfile: 35 | mov w(r1),r(r1) 36 | rts pc 37 | -------------------------------------------------------------------------------- /unix_v6/tmg/tmgb/reln.s: -------------------------------------------------------------------------------- 1 | .globl .p,sprv 2 | .globl .eq,.ne,.lt,.le,.gt,.ge 3 | 4 | .eq: 5 | jsr pc,sprv 6 | cmp 4(sp),(sp) 7 | beq true 8 | br false 9 | 10 | .ne: 11 | jsr pc,sprv 12 | cmp 4(sp),(sp) 13 | bne true 14 | br false 15 | .lt: 16 | jsr pc,sprv 17 | cmp 4(sp),(sp) 18 | blt true 19 | br false 20 | 21 | .le: 22 | jsr pc,sprv 23 | cmp 4(sp),(sp) 24 | ble true 25 | br false 26 | 27 | .gt: 28 | jsr pc,sprv 29 | cmp 4(sp),(sp) 30 | bgt true 31 | br false 32 | 33 | .ge: 34 | jsr pc,sprv 35 | cmp 4(sp),(sp) 36 | bge true 37 | br false 38 | 39 | true: 40 | mov $1,4(sp) 41 | jmp .p 42 | 43 | false: 44 | clr 4(sp) 45 | jmp .p 46 | -------------------------------------------------------------------------------- /unix_v6/fort/fx/fx1.s: -------------------------------------------------------------------------------- 1 | / 2 | / 3 | 4 | / fx1 -- utility 5 | 6 | .globl lookup 7 | / lookup 8 | / lookup string pointed at by r2 9 | / in table pointed at by arg1 10 | / r0 returns symbol number*2 11 | / r2 is advanced by matched string 12 | / registers used: r0,r2 13 | lookup: 14 | mov r1,-(sp) 15 | clr r0 16 | mov r2,-(sp) 17 | mov (r5)+,r1 18 | 1: 19 | mov (sp),r2 20 | tstb (r1) 21 | beq 1f 22 | 2: 23 | cmpb (r2)+,(r1)+ 24 | bne 2f 25 | tstb (r1) 26 | bne 2b 27 | asl r0 28 | cmp (r5)+,(sp)+ 29 | mov (sp)+,r1 30 | rts r5 31 | 2: 32 | tstb (r1)+ 33 | bne 2b 34 | inc r0 35 | br 1b 36 | 1: 37 | mov (sp)+,r2 38 | mov (sp)+,r1 39 | rts r5 40 | 41 | -------------------------------------------------------------------------------- /unix_v6/mdec/tc.s: -------------------------------------------------------------------------------- 1 | tcdt = 177350 2 | tccm = 177342 3 | tread: 4 | mov $tcdt,r0 5 | mov $tccm,r1 6 | for: 7 | mov $3,(r1) / rbn for 8 | 1: 9 | tstb (r1) 10 | bge 1b 11 | tst (r1) 12 | blt rev 13 | cmp tapa,(r0) 14 | beq rd 15 | bgt for 16 | 17 | rev: 18 | mov $4003,(r1) / rbn bac 19 | 1: 20 | tstb (r1) 21 | bge 1b 22 | tst (r1) 23 | blt for 24 | mov (r0),r2 25 | add $5,r2 26 | cmp tapa,r2 27 | blt rev 28 | br for 29 | 30 | rd: 31 | mov ba,-(r0) / bus addr 32 | mov wc,-(r0) / wc 33 | mov $5,-(r0) / read 34 | 1: 35 | tstb (r1) 36 | bge 1b 37 | tst (r1) 38 | blt tread 39 | rts pc 40 | 41 | rew: 42 | mov $4003,tccm 43 | rts pc 44 | -------------------------------------------------------------------------------- /unix_v6/s4/ladd.s: -------------------------------------------------------------------------------- 1 | / C routine-- long integer subtract and add 2 | 3 | / ladd/lsub (a, b, c); 4 | / int a[2], b[2], c[2]; 5 | / a = b +- c; 6 | 7 | .globl _lsub 8 | .globl _ladd 9 | .globl csv 10 | .globl cret 11 | 12 | _lsub: 13 | jsr r5,csv 14 | mov 6(r5),r2 15 | mov (r2)+,r0 16 | mov (r2),r1 17 | mov 10(r5),r2 18 | sub (r2)+,r0 19 | sub (r2),r1 20 | sbc r0 21 | mov 4(r5),r2 22 | mov r0,(r2)+ 23 | mov r1,(r2) 24 | jmp cret 25 | 26 | _ladd: 27 | jsr r5,csv 28 | mov 6(r5),r2 29 | mov (r2)+,r0 30 | mov (r2),r1 31 | mov 10(r5),r2 32 | add (r2)+,r0 33 | add (r2),r1 34 | adc r0 35 | mov 4(r5),r2 36 | mov r0,(r2)+ 37 | mov r1,(r2) 38 | jmp cret 39 | -------------------------------------------------------------------------------- /unix_v6/mdec/hp.s: -------------------------------------------------------------------------------- 1 | / rp04 disk driver 2 | 3 | hpcs1 = 176700 4 | hpda = 176706 5 | hpcs2 = 176710 6 | hpof = 176732 7 | hpca = 176734 8 | 9 | fmt22 = 010000 10 | preset = 021 11 | clear = 040 12 | 13 | first = .+2 / dirty, but i need the space 14 | tst $0 15 | bne 1f 16 | mov $clear,*$hpcs2 17 | mov $preset,*$hpcs1 18 | mov $fmt22,*$hpof 19 | inc first 20 | 1: 21 | mov dska,r1 22 | clr r0 23 | div $22.,r0 24 | mov r1,-(sp) 25 | mov r0,r1 26 | clr r0 27 | div $19.,r0 28 | bisb r1,1(sp) 29 | mov r0,*$hpca 30 | mov $hpda,r1 31 | mov (sp)+,(r1) 32 | mov ba,-(r1) 33 | mov wc,-(r1) 34 | mov $iocom,-(r1) 35 | 1: 36 | tstb (r1) 37 | bpl 1b 38 | rts pc 39 | -------------------------------------------------------------------------------- /unix_v1/src/lib/putchr.s: -------------------------------------------------------------------------------- 1 | / C library -- putchar 2 | 3 | / char = putchar(char) 4 | 5 | / buffer output if fout is not 1 6 | 7 | .globl _putchar 8 | .globl _fout 9 | .globl _flush 10 | 11 | .globl putc 12 | .globl flush 13 | 14 | .data 15 | _putchar: 16 | 1f 17 | .text 18 | 1: 19 | mov 2(sp),r0 20 | tst _fout 21 | bne 1f 22 | mov $1,_fout 23 | 1: 24 | jsr r5,putc; _fout 25 | movb 3(sp),r0 26 | beq 1f 27 | jsr r5,putc; _fout 28 | 1: 29 | cmp _fout,$1 30 | bne 1f 31 | jsr r5,flush; _fout 32 | 1: 33 | mov 2(sp),r0 34 | rts pc 35 | 36 | .data 37 | _flush: 38 | 1f 39 | .text 40 | 1: 41 | jsr r5,flush; _fout 42 | rts pc 43 | 44 | .bss 45 | _fout: .=.+518. 46 | 47 | -------------------------------------------------------------------------------- /unix_v6/fort/f4/f41.s: -------------------------------------------------------------------------------- 1 | / 2 | / 3 | 4 | / f41 -- everything else 5 | 6 | .globl pass4 7 | 8 | .globl signon 9 | .globl flush 10 | .globl dope 11 | .globl formts 12 | .globl globls 13 | .globl constn 14 | .globl fopen 15 | .globl bsss 16 | .globl tfil2 17 | 18 | pass4: 19 | setd 20 | jsr r5,signon; 4 21 | mov ibuf,r0 22 | sys close 23 | jsr r5,flush; obuf 24 | jsr r5,flush; tbuf 25 | 26 | jsr r5,dope 27 | jsr r5,formts 28 | jsr r5,constn 29 | jsr r5,bsss 30 | jsr r5,globls / uses r4 from bsss 31 | jsr r5,flush; obuf 32 | sys unlink; tfil2 33 | clr r0 34 | tst nerror 35 | beq 1f 36 | sys seek; 0; 2 37 | mov $1,r0 / syntax errors 38 | 1: 39 | sys exit 40 | 41 | -------------------------------------------------------------------------------- /unix_v6/s2/rew.s: -------------------------------------------------------------------------------- 1 | / rew -- rewind dec/mag tape 2 | 3 | cmp (sp)+,$2 4 | blt 1f 5 | tst (sp)+ 6 | mov (sp)+,r0 7 | movb (r0)+,r1 8 | cmp r1,$'m 9 | beq rewm 10 | movb r1,tapx+8 11 | tstb (r0) 12 | bne error 13 | 1: 14 | sys open; tapx; 0 15 | br rew 16 | 17 | rewm: 18 | movb (r0)+,r1 19 | beq 1f 20 | movb r1,mtx+7 21 | tstb (r0) 22 | bne error 23 | 1: 24 | sys open; mtx; 0 25 | 26 | rew: 27 | bes error 28 | sys read; word; 2 29 | bes error 30 | sys exit 31 | 32 | error: 33 | mov $1,r0 34 | sys write; 0f; 2 35 | sys exit 36 | 0: 37 | 38 | 39 | tapx: 40 | 41 | mtx: 42 | 43 | .even 44 | 45 | .bss 46 | word: .=.+2 47 | 48 | -------------------------------------------------------------------------------- /unix_v6/fort/rt/r5.s: -------------------------------------------------------------------------------- 1 | / 2 | / 3 | 4 | / r5 -- long integer arithmetic 5 | 6 | .globl iad4 7 | .globl isb4 8 | .globl imp4 9 | .globl idv4 10 | .globl ing4 11 | .globl rerr 12 | 13 | iad4: 14 | jsr pc,load 15 | addf fr0,fr1 16 | br store 17 | 18 | isb4: 19 | jsr pc,load 20 | subf fr0,fr1 21 | br store 22 | 23 | imp4: 24 | jsr pc,load 25 | mulf fr0,fr1 26 | br store 27 | 28 | idv4: 29 | jsr pc,load 30 | divf fr0,fr1 31 | 32 | store: 33 | movfi fr1,-(sp) 34 | jmp *(r4)+ 35 | 36 | load: 37 | mov (sp)+,r0 38 | setd 39 | setl 40 | movif (sp)+,fr0 41 | movif (sp)+,fr1 42 | jmp (r0) 43 | 44 | ing4: 45 | neg (sp) 46 | neg 2(sp) 47 | sbc (sp) 48 | jmp *(r4)+ 49 | 50 | -------------------------------------------------------------------------------- /unix_v6/fort/rt2/rand.s: -------------------------------------------------------------------------------- 1 | / fortran random number generator. 2 | / either single or double prec. 3 | 4 | .globl rand., srand. 5 | .globl retrn 6 | 7 | srand.: 8 | value 9 | .+2 10 | mov *2(r3),seed1 11 | inc first 12 | jmp retrn 13 | 14 | rand.: 15 | value 16 | .+2 17 | tst first 18 | bne 1f 19 | sys time 20 | mov r1,seed1 21 | inc first 22 | 1: 23 | mov seed1,r1 24 | jsr pc,ran 25 | mov r1,seed1 26 | seti 27 | setd 28 | movif r0,fr0 29 | divf $44000,fr0 30 | movf fr0,value 31 | jmp retrn 32 | 33 | ran: 34 | mpy $13077.,r1 35 | add $6925.,r1 36 | mov r1,r0 37 | bic $100000,r0 38 | rts pc 39 | 40 | .bss 41 | first: .=.+2 42 | seed1: .=.+2 43 | value: .=.+8 44 | -------------------------------------------------------------------------------- /unix_v6/s4/execv.s: -------------------------------------------------------------------------------- 1 | / C library -- execv 2 | 3 | / execv(file, argv); 4 | / 5 | / where argv is a vector argv[0] ... argv[x], 0 6 | / last vector element must be 0 7 | / 8 | / The _exectrap flags is used by the debugger and causes 9 | / a trace trap on the first instruction of the executed instruction 10 | / to give a chance to set breakpoints. 11 | 12 | .globl _execv, cerror 13 | .comm __exectrap,2 14 | rtt = 6 15 | 16 | _execv: 17 | mov r5,-(sp) 18 | mov sp,r5 19 | mov 4(r5),0f 20 | mov 6(r5),0f+2 21 | tst __exectrap 22 | beq 1f 23 | mov $170020,-(sp) / t-bit 24 | mov $1f,-(sp) 25 | rtt 26 | 1: 27 | sys 0; 9f 28 | jmp cerror 29 | .data 30 | 9: 31 | sys exec; 0:..; .. 32 | -------------------------------------------------------------------------------- /unix_v6/s5/perror.c: -------------------------------------------------------------------------------- 1 | /* 2 | * Print the error indicated 3 | * in the cerror cell. 4 | */ 5 | 6 | int errno; 7 | int sys_nerr; 8 | char *sys_errlist[]; 9 | perror(s) 10 | char *s; 11 | { 12 | register char *c; 13 | register n; 14 | 15 | c = "Unknown error"; 16 | if(errno < sys_nerr) 17 | c = sys_errlist[errno]; 18 | n = strlen(s); 19 | if(n) { 20 | write(2, s, n); 21 | write(2, ": ", 2); 22 | } 23 | write(2, c, strlen(c)); 24 | write(2, "\n", 1); 25 | } 26 | 27 | /* 28 | * Return the number of bytes in a string 29 | */ 30 | 31 | strlen(str) 32 | char *str; 33 | { 34 | register char *s; 35 | 36 | s = str; 37 | while(*s++) 38 | ; 39 | return(s-str-1); 40 | } 41 | -------------------------------------------------------------------------------- /unix_v1/boot/installboot: -------------------------------------------------------------------------------- 1 | #!/bin/sh 2 | 3 | RF0IMAGE=rf0.dsk 4 | KERNEL=build/loadfile 5 | BOS=boot/bos 6 | 7 | if [ ! -f $KERNEL ] 8 | then echo "You must build the kernel, $KERNEL, before you can install" 9 | echo "the bootstrap." 10 | exit 1 11 | fi 12 | 13 | # Install bos 32KW below the top of the rf0 image 14 | # 15 | dd if=$BOS of=$RF0IMAGE bs=512 seek=960 16 | 17 | # Install Unix in the warm boot area, 31KW below the top of the 18 | # rf0 image. Because the kernel is in simh load format, the first 19 | # 6 bytes are skipped and the following 16K byte are copied onto 20 | # the rf0 disk. 21 | # 22 | dd if=$KERNEL bs=1 skip=6 count=16384 | dd of=$RF0IMAGE bs=512 seek=964 23 | -------------------------------------------------------------------------------- /unix_v1/src/Readme: -------------------------------------------------------------------------------- 1 | The files in c/ come from the last1120c.tar.gz tape at 2 | http://www.tuhs.org/Archive/Applications/Early_C_Compilers/, and form 3 | a working C compiler for 2nd Edition UNIX. 4 | 5 | The files in lib/ come from the libc.sa file which is on the last1120c.tar.gz 6 | tap(I) tape image, also at the same URL, and form the C library for the 7 | above compiler. 8 | 9 | The files in cmd/ are recreated from the text fragments found on the file 10 | s1-bits.gz at 11 | http://www.tuhs.org/Archive/PDP-11/Distributions/research/1972_stuff/ 12 | These were reconstructed by Doug Merritt and Warren Toomey, and form 13 | the source code to some of the commands on 2nd Edition UNIX. 14 | -------------------------------------------------------------------------------- /unix_v1/pages/e08-09: -------------------------------------------------------------------------------- 1 | 4: 2 | jmp retisp / u4-3 3 | 4 | trapt: / r2 points to the 5 | mov (r0)+,r2 / device control register 6 | mov *(r0)+,r1 / transaction pointer points to buffer 7 | tst (sp)+ 8 | tstb (r2) / is ready bit of dcs set? 9 | bge 4b / device still active so branch 10 | bit (r0),active / was device busy? 11 | beq 4b / no, stray interrupt 12 | bic (r0)+,active / yes, set active to zero 13 | tst (r2) / test the err(bit is) of dcs 14 | bge 2f / if no error jump to 2f 15 | tst (r0)+ / skip on error 16 | 2: 17 | jmp (r0) 18 | -------------------------------------------------------------------------------- /unix_v6/s2/nohup.c: -------------------------------------------------------------------------------- 1 | /* nohup */ 2 | char *args[100]; 3 | char string[10000]; 4 | 5 | main(argc, argv) 6 | int argc; 7 | char *argv[]; 8 | { 9 | int i; 10 | char **argp, *strp, *p; 11 | 12 | if(argc < 2) { 13 | printf("arg count\n"); 14 | exit(); 15 | } 16 | argc--; 17 | argv++; 18 | argp = args; 19 | strp = string; 20 | for (i=0; i<9; i++) 21 | *strp++ = "/usr/bin/"[i]; 22 | for(i=0; i 47 | 48 | .bss 49 | stbuf: .=.+40. 50 | -------------------------------------------------------------------------------- /unix_v6/cref/run: -------------------------------------------------------------------------------- 1 | chdir tab 2 | cc mtab.c 3 | a.out atable atab 4 | a.out ctable ctab 5 | a.out etable etab 6 | cmp atab /usr/lib/atab 7 | cp atab /usr/lib/atab 8 | cmp ctab /usr/lib/ctab 9 | cp ctab /usr/lib/ctab 10 | cmp etab /usr/lib/etab 11 | cp etab /usr/lib/etab 12 | rm a.out atab ctab etab 13 | 14 | chdir ../src 15 | cc -s -O upost.c 16 | cmp a.out /usr/bin/upost 17 | cp a.out /usr/bin/upost 18 | cc -s -O crpost.c 19 | cmp a.out /usr/bin/crpost 20 | cp a.out /usr/bin/crpost 21 | cc -s -O dr.c acts.c put.c 22 | cmp a.out /usr/bin/cref 23 | cp a.out /usr/bin/cref 24 | rm a.out *.o 25 | 26 | chdir ../index 27 | cc -s -O ind?.c 28 | cmp a.out /usr/bin/index 29 | cp a.out /usr/bin/index 30 | rm a.out *.o 31 | -------------------------------------------------------------------------------- /unix_v6/s2/pfe.s: -------------------------------------------------------------------------------- 1 | / print last floating error 2 | 3 | stst = 170300^tst 4 | 5 | stst r1 6 | cmp r1,$14 7 | blos 1f 8 | clr r1 9 | 1: 10 | bic $1,r1 11 | mov mesg(r1),r1 12 | 1: 13 | movb (r1)+,ch 14 | beq 1f 15 | mov $1,r0 16 | sys write; ch; 1 17 | br 1b 18 | 1: 19 | sys exit 20 | 21 | mesg: 22 | 1f 23 | 2f 24 | 3f 25 | 4f 26 | 5f 27 | 6f 28 | 7f 29 | 8f 30 | 31 | 1: 32 | 2: 33 | 3: 34 | 4: 35 | 5: 36 | 6: 37 | 7: 38 | 8: 39 | 40 | .even 41 | 42 | .bss 43 | ch: .=.+2 44 | 45 | -------------------------------------------------------------------------------- /unix_v6/fort/rt1/amin1.s: -------------------------------------------------------------------------------- 1 | / 2 | / 3 | 4 | / min1, amin1 & dmin1 fortran functions 5 | 6 | .globl amin1. 7 | .globl dmin1. 8 | .globl min1. 9 | 10 | .globl retrn 11 | .globl temp 12 | 13 | min1.: temp 14 | .+2 15 | setl 16 | setf 17 | mov pc,r2 18 | br 2f 19 | 20 | dmin1.: temp 21 | .+2 22 | setd 23 | br 1f 24 | 25 | amin1.: temp 26 | .+2 27 | setf 28 | 1: 29 | clr r2 30 | 2: 31 | mov *2(sp),r0 / arg count 32 | mov r3,r1 33 | tst (r1)+ / argpp 34 | movf *(r1)+,r1 35 | br 2f 36 | 1: 37 | movf *(r1)+,r0 38 | cmpf r0,r1 39 | cfcc 40 | bge 2f 41 | movf r0,r1 42 | 2: 43 | dec r0 44 | bgt 1b 45 | tst r2 46 | bne 1f 47 | movf r1,temp 48 | br 2f 49 | 1: 50 | movfi r1,temp 51 | 2: 52 | jmp retrn 53 | -------------------------------------------------------------------------------- /unix_v6/s3/run: -------------------------------------------------------------------------------- 1 | as atan.s; mv a.out atan.o 2 | as crypt.s; mv a.out crypt.o 3 | as dpadd.s; mv a.out dpadd.o 4 | as ecvt.s; mv a.out ecvt.o 5 | as exp.s; mv a.out exp.o 6 | as floor.s; mv a.out floor.o 7 | as fmod.s; mv a.out fmod.o 8 | as fp?.s; mv a.out fp.o 9 | : as fakfp.s: mv a.out fp.o 10 | as gamma.s; mv a.out gamma.o 11 | as get.s; mv a.out get.o 12 | as ldiv.s; mv a.out ldiv.o 13 | as log.s; mv a.out log.o 14 | as mesg.s; mv a.out mesg.o 15 | as pow.s; mv a.out pow.o 16 | as put.s; mv a.out put.o 17 | as rand.s; mv a.out rand.o 18 | as savr5.s; mv a.out savr5.o 19 | as sin.s; mv a.out sin.o 20 | as sqrt.s; mv a.out sqrt.o 21 | as switch.s; mv a.out switch.o 22 | as ttyn.s; mv a.out ttyn.o 23 | ar r /lib/liba.a 24 | rm *.o 25 | -------------------------------------------------------------------------------- /unix_v6/s5/mon.c: -------------------------------------------------------------------------------- 1 | monitor(lowpc, highpc, buf, bufsiz, cntsiz) 2 | char *lowpc, *highpc; 3 | int *buf, bufsiz; 4 | { 5 | register char *o; 6 | static *sbuf, ssiz; 7 | 8 | if (lowpc == 0) { 9 | profil(0, 0, 0, 0); 10 | o = creat("mon.out", 0666); 11 | write(o, sbuf, ssiz<<1); 12 | close(o); 13 | return; 14 | } 15 | if (nargs() <= 4) 16 | cntsiz = 0; 17 | ssiz = bufsiz; 18 | buf[0] = lowpc; 19 | buf[1] = highpc; 20 | buf[2] = cntsiz; 21 | sbuf = buf; 22 | buf =+ 3*(cntsiz+1); 23 | bufsiz =- 3*(cntsiz+1); 24 | if (bufsiz<=0) 25 | return; 26 | o = ((highpc - lowpc)>>1) & 077777; 27 | if(bufsiz < o) 28 | o = ldiv(bufsiz, 0, o<<1); else 29 | o = 077777; 30 | profil(buf, bufsiz<<1, lowpc, o<<1); 31 | } 32 | -------------------------------------------------------------------------------- /unix_v1/tools/as: -------------------------------------------------------------------------------- 1 | #!/bin/sh 2 | # 3 | # use the v2 assembler to assemble some userland code into an 0405 binary. 4 | # Requires the first .s file to set ". = . + 40014". 5 | # 6 | # example, mount.s: 7 | # exit = 1. 8 | # write = 4. 9 | # mount = 21. 10 | # .. = 40014 11 | # 12 | # mov $1,r0 13 | # sys write; rk0; 8. 14 | # sys write; usr; 4. 15 | # sys mount; rk0; usr 16 | # sys exit 17 | # sys exit 18 | # 19 | # rk0: 20 | # usr: 21 | # 22 | # $ tools/as mount.s 23 | # $ cp b.out mymount 24 | # 25 | 26 | APOUT=tools/apout/apout 27 | APOUT_ROOT=fs/root 28 | export APOUT_ROOT 29 | $APOUT $APOUT_ROOT/bin/as "$@" && tools/fixaout.py 30 | 31 | 32 | -------------------------------------------------------------------------------- /unix_v6/c/run: -------------------------------------------------------------------------------- 1 | cc -c -O c0[012345].c 2 | cc -c -O c1[0123].c 3 | as c1t.s; mv a.out c1t.o 4 | cc cvopt.c 5 | a.out table.s table.i 6 | as table.i; mv a.out table.o 7 | cc -c -O c2[01].c 8 | 9 | ed c0t.s 10 | g/fpp =/s/1/0/ 11 | w 12 | q 13 | as c0t.s; mv a.out c0t.o 14 | cc -s -n c0?.o 15 | cmp a.out /lib/c0 16 | cp a.out /lib/c0 17 | 18 | ed c0t.s 19 | g/fpp =/s/0/1/ 20 | w 21 | q 22 | as c0t.s; mv a.out c0t.o 23 | cc -f -s -n c0?.o 24 | cmp a.out /lib/fc0 25 | cp a.out /lib/fc0 26 | 27 | cc -s -n c1?.o table.o 28 | cmp a.out /lib/c1 29 | cp a.out /lib/c1 30 | 31 | cc -f -s -n c1?.o table.o 32 | cmp a.out /lib/fc1 33 | cp a.out /lib/fc1 34 | 35 | cc -s -n c2?.o 36 | cmp a.out /lib/c2 37 | cp a.out /lib/c2 38 | 39 | rm *.o table.i a.out 40 | -------------------------------------------------------------------------------- /unix_v6/fort/fx/fx5.s: -------------------------------------------------------------------------------- 1 | / 2 | / 3 | 4 | / fx5 -- declare implicit 5 | 6 | .globl declimpl 7 | .globl getname 8 | 9 | declimpl: 10 | bit $7,symtab(r3) 11 | bne 1f / already declared 12 | jsr r5,getname 13 | movb symbuf,r0 14 | cmp r0,$'a 15 | blo 2f 16 | sub $6,r0 / map 'a -> 'Z+1 17 | 2: 18 | asl r0 19 | bis imptab-[2*'A](r0),symtab(r3) 20 | 1: 21 | bit $70,symtab(r3) / class 22 | bne 1f 23 | bis $10,symtab(r3) / simple 24 | 1: 25 | rts r5 26 | 27 | getname: 28 | mov r3,-(sp) 29 | clr r3 30 | mov $namebuf,r0 31 | 1: 32 | cmp r3,(sp) 33 | bhis 1f 34 | 2: 35 | tstb (r0)+ 36 | bne 2b 37 | add $8,r3 38 | br 1b 39 | 1: 40 | mov $symbuf,r3 41 | 2: 42 | movb (r0)+,(r3)+ 43 | bne 2b 44 | mov (sp)+,r3 45 | rts r5 46 | 47 | -------------------------------------------------------------------------------- /unix_v6/s5/sbrk.s: -------------------------------------------------------------------------------- 1 | /old = sbrk(increment); 2 | / 3 | /sbrk gets increment more core, and returns a pointer 4 | / to the beginning of the new core area 5 | / 6 | .globl _sbrk,_end, cerror 7 | 8 | _sbrk: 9 | mov r5,-(sp) 10 | mov sp,r5 11 | mov nd,0f 12 | add 4(r5),0f 13 | sys 0; 9f 14 | bec 1f 15 | jmp cerror 16 | 1: 17 | mov nd,r0 18 | add 4(r5),nd 19 | mov (sp)+,r5 20 | rts pc 21 | 22 | .globl _brk 23 | / brk(value) 24 | / as described in man2. 25 | / returns 0 for ok, -1 for error. 26 | 27 | _brk: 28 | mov r5,-(sp) 29 | mov sp,r5 30 | mov 4(r5),0f 31 | sys 0; 9f 32 | bec 1f 33 | jmp cerror 34 | 1: 35 | mov 4(r5),nd 36 | clr r0 37 | mov (sp)+,r5 38 | rts pc 39 | 40 | .data 41 | 9: 42 | sys break; 0:.. 43 | nd: _end 44 | -------------------------------------------------------------------------------- /unix_v6/iolib/cputc.c: -------------------------------------------------------------------------------- 1 | # include "ciodec.c" 2 | char cputc(ch, fn) 3 | { 4 | struct fileps *fp; 5 | if (nargs() != 2) 6 | IEHzap("cputc "); 7 | if (fn<0 || fn>20) return(ch); 8 | fp = &IEH3fpts[fn]; 9 | if (fp->wrflag == 1) 10 | IEH3err("cputc: %d not open",fn); 11 | if (fp->wrflag == 0) 12 | IEH3mbuf(fn,1); 13 | *(fp->bptr++) = ch; 14 | if (++(fp->nchars) < fp->bsize) 15 | return(ch); 16 | if (fp->wrflag == 3) /* append, seek to end */ 17 | { 18 | seek(fn, 0, 2); 19 | fp->wrflag = 2; /* now just write from here on */ 20 | } 21 | if ( write(fn, fp->bptr=fp->buff, fp->nchars) < 0) 22 | { 23 | if (fp->eoferr == 0) 24 | IEH3err("cputc: writing %d",fn); 25 | fp->eoferr = 3; 26 | } 27 | fp->nchars = 0; 28 | return (ch); 29 | } 30 | cout 1; 31 | -------------------------------------------------------------------------------- /unix_v6/fort/fx/fxd.s: -------------------------------------------------------------------------------- 1 | / 2 | / 3 | 4 | / xd -- tmp file 2 handl 5 | 6 | .globl setln 7 | .globl getln 8 | 9 | .globl tfil2 10 | .globl tfildiag 11 | .globl fopen 12 | .globl getc 13 | .globl getw 14 | .globl xbuf 15 | 16 | setln: 17 | mov $tfil2,r0 18 | jsr r5,fopen; xbuf 19 | bcc 1f 20 | jmp tfildiag 21 | 1: 22 | rts r5 23 | 24 | getln: 25 | jsr r5,getc; xbuf 26 | bcs 3f 27 | mov r0,-(sp) 28 | jsr r5,getw; xbuf 29 | mov r0,efno 30 | jsr r5, getw; xbuf 31 | mov r0,ifno 32 | mov $line,r1 33 | 1: 34 | jsr r5,getc; xbuf 35 | bcs 1f 36 | tst r0 37 | beq 1f 38 | bic $200,r0 39 | movb r0,(r1)+ 40 | br 1b 41 | 1: 42 | clrb (r1)+ 43 | mov (sp)+,r0 44 | tst (r5)+ 45 | rts r5 46 | 3: 47 | mov xbuf,r0 48 | sys close 49 | rts r5 50 | 51 | -------------------------------------------------------------------------------- /unix_v6/fort/rt/r0.s: -------------------------------------------------------------------------------- 1 | / 2 | / 3 | 4 | .globl main 5 | .globl temp 6 | .globl rerr 7 | .globl fptrap 8 | 9 | .comm erret,2 10 | .comm argp,2 11 | 12 | ldfps = 170100^tst 13 | 14 | sys signal; 4; fptrap 15 | ldfps $5400 16 | mov sp,argp 17 | mov $main,r4 18 | jmp *(r4)+ 19 | 20 | rerr: 21 | mov (r5)+,r1 22 | tst erret 23 | beq 1f 24 | jsr pc,erret 25 | 1: 26 | mov $temp,r2 27 | jsr r5,1f 28 | movb $'\n,(r2)+ 29 | sub $mesg,r2 30 | mov r2,0f 31 | mov $2,r0 32 | sys write; mesg; 0:.. 33 | sys exit 34 | 1: 35 | clr r0 36 | div $10.,r0 37 | mov r1,-(sp) 38 | mov r0,r1 39 | beq 1f 40 | jsr r5,1b 41 | 1: 42 | mov (sp)+,r0 43 | add $'0,r0 44 | movb r0,(r2)+ 45 | rts r5 46 | 47 | mesg: 48 | 49 | temp: .=.+16. 50 | 51 | -------------------------------------------------------------------------------- /unix_v6/fort/rt1/amax1.s: -------------------------------------------------------------------------------- 1 | / 2 | / 3 | 4 | / max1, amax1 & dmax1 fortran functions 5 | 6 | .globl amax1. 7 | .globl dmax1. 8 | .globl max1. 9 | 10 | .globl retrn 11 | .globl temp 12 | 13 | max1.: temp 14 | .+2 15 | setl 16 | setf 17 | mov pc,r2 / integer flag 18 | br 2f 19 | 20 | dmax1.: temp 21 | .+2 22 | setd 23 | br 1f 24 | 25 | amax1.: temp 26 | .+2 27 | setf 28 | 1: 29 | clr r2 / integer flag 30 | 2: 31 | mov *2(sp),r0 / arg count 32 | mov r3,r1 33 | tst (r1)+ / argpp 34 | movf *(r1)+,r1 35 | br 2f 36 | 1: 37 | movf *(r1)+,r0 38 | cmpf r0,r1 39 | cfcc 40 | ble 2f 41 | movf r0,r1 42 | 2: 43 | dec r0 44 | bgt 1b 45 | tst r2 46 | bne 1f 47 | movf r1,temp 48 | br 2f 49 | 1: 50 | movfi r1,temp 51 | 2: 52 | jmp retrn 53 | -------------------------------------------------------------------------------- /unix_v6/s2/size.c: -------------------------------------------------------------------------------- 1 | /* 2 | size -- determine object size 3 | 4 | */ 5 | 6 | main(argc, argv) 7 | char **argv; 8 | { 9 | int buf[010], f, ac, sum; 10 | 11 | ac = argc; 12 | if (ac==1) { 13 | *argv = "a.out"; 14 | ac++; 15 | --argv; 16 | } 17 | while(--ac) { 18 | ++argv; 19 | if((f=open(*argv, 0))<0) { 20 | printf("%s not found\n", *argv); 21 | continue; 22 | } 23 | read(f, buf, 0020); 24 | if(buf[0]!=0411 && buf[0]!=0410 && buf[0]!=0407) { 25 | printf("Bad format: %s\n", *argv); 26 | close(f); 27 | continue; 28 | } 29 | if (argc>2) 30 | printf("%s: ", *argv); 31 | printf("%l+%l+%l=", buf[1],buf[2],buf[3]); 32 | sum = buf[1]+buf[2]+buf[3]; 33 | printf("%l (%o)\n", sum, sum); 34 | close(f); 35 | } 36 | } 37 | -------------------------------------------------------------------------------- /unix_v1/tools/fixaout.py: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env python 2 | """ 3 | Convert an 0407 binary into an 0405 binary, under the assumption 4 | that the code starts at 040014 (by ".. = 40014"). 5 | See tools/as. 6 | """ 7 | 8 | import struct 9 | 10 | def words(bs) : 11 | l = len(bs) / 2 12 | return list(struct.unpack('<%dH' % l, bs)) 13 | def unwords(ws) : 14 | l = len(ws) 15 | return struct.pack('<%dH' % l, *ws) 16 | 17 | def read(fn) : 18 | f = file(fn, 'rb') 19 | d = f.read() 20 | f.close() 21 | return d 22 | 23 | def write(fn, d) : 24 | f = file(fn, 'wb') 25 | f.write(d) 26 | f.close() 27 | 28 | d1 = words(read('a.out')) 29 | hdr = d1[:8] 30 | d = [0405, 12+hdr[1], 0, 0, hdr[4], 0] + d1[8:] 31 | write("a.out", unwords(d)) 32 | -------------------------------------------------------------------------------- /unix_v6/s7/ne5.c: -------------------------------------------------------------------------------- 1 | #include "ne.h" 2 | 3 | int markpos; 4 | 5 | mark(n) int n; { 6 | if( n ) 7 | markpos = ewid[n]; 8 | else { 9 | yyval = oalloc(); 10 | printf(".ds %d \"\n", yyval); 11 | ebase[yyval] = ewid[yyval] = markpos = 0; 12 | eht[yyval] = 2; 13 | } 14 | if(dbg)printf(".\tmark %d as %d\n", n, markpos); 15 | } 16 | 17 | lineup(n) int n; { 18 | if( n ) { 19 | printf(".ds %d \"", n); 20 | fwd(markpos-ewid[n]); 21 | printf("\\*(%d\n", n); 22 | ewid[n] = markpos; 23 | } 24 | else { 25 | yyval = oalloc(); 26 | printf(".ds %d \"", yyval); 27 | fwd(markpos); 28 | printf("\n"); 29 | ebase[yyval] = 0; 30 | eht[yyval] = 2; 31 | ewid[yyval] = markpos; 32 | } 33 | if(dbg)printf(".\tlineup %d at %d\n", n, markpos); 34 | } 35 | -------------------------------------------------------------------------------- /unix_v6/fort/rt/rf.s: -------------------------------------------------------------------------------- 1 | / 2 | / 3 | 4 | / rf -- real comparisons 5 | 6 | .globl rlt4 7 | .globl rle4 8 | .globl req4 9 | .globl rne4 10 | .globl rge4 11 | .globl rgt4 12 | 13 | rlt4: 14 | jsr pc,compar 15 | blt one 16 | br zero 17 | 18 | rle4: 19 | jsr pc,compar 20 | ble one 21 | br zero 22 | 23 | req4: 24 | jsr pc,compar 25 | beq one 26 | br zero 27 | 28 | rne4: 29 | jsr pc,compar 30 | bne one 31 | br zero 32 | 33 | rge4: 34 | jsr pc,compar 35 | bge one 36 | br zero 37 | 38 | rgt4: 39 | jsr pc,compar 40 | bgt one 41 | br zero 42 | 43 | one: 44 | mov $1,-(sp) 45 | jmp *(r4)+ 46 | 47 | zero: 48 | clr -(sp) 49 | jmp *(r4)+ 50 | 51 | compar: 52 | mov (sp)+,r0 53 | setf 54 | movf (sp)+,r0 55 | cmpf (sp)+,r0 56 | cfcc 57 | jmp (r0) 58 | 59 | -------------------------------------------------------------------------------- /unix_v6/s2/mknod.c: -------------------------------------------------------------------------------- 1 | main(argc, argv) 2 | int argc; 3 | char **argv; 4 | { 5 | int m, a, b; 6 | 7 | if(argc != 5) { 8 | printf("arg count\n"); 9 | goto usage; 10 | } 11 | if(*argv[2] == 'b') 12 | m = 0160666; else 13 | if(*argv[2] == 'c') 14 | m = 0120666; else 15 | goto usage; 16 | a = number(argv[3]); 17 | if(a < 0) 18 | goto usage; 19 | b = number(argv[4]); 20 | if(b < 0) 21 | goto usage; 22 | if(mknod(argv[1], m, (a<<8)|b) < 0) 23 | perror("mknod"); 24 | exit(); 25 | 26 | usage: 27 | printf("usage: mknod name b/c major minor\n"); 28 | } 29 | 30 | number(s) 31 | char *s; 32 | { 33 | int n, c; 34 | 35 | n = 0; 36 | while(c = *s++) { 37 | if(c<'0' || c>'9') 38 | return(-1); 39 | n = n*10 + c-'0'; 40 | } 41 | return(n); 42 | } 43 | -------------------------------------------------------------------------------- /unix_v6/fort/rt/rb.s: -------------------------------------------------------------------------------- 1 | / 2 | / 3 | 4 | / rb -- funct/subr stuff 5 | 6 | .globl call 7 | .globl callp 8 | .globl retrn 9 | .globl stsp 10 | 11 | callp: 12 | mov (r4)+,r0 13 | add r3,r0 14 | mov (r0),r0 15 | br 1f 16 | 17 | call: 18 | mov (r4)+,r0 19 | 1: 20 | mov r3,-(sp) 21 | mov (r4)+,r3 22 | mov r4,-(sp) 23 | mov r0,r4 24 | mov (r4)+,-(sp) / lv of funct 25 | jmp *(r4)+ 26 | 27 | retrn: 28 | mov r3,r0 29 | mov (sp)+,r1 / lv of funct 30 | mov (sp)+,r4 31 | mov (sp)+,r3 32 | mov (r0),sp 33 | tst (r4)+ / arg count 34 | mov (r4)+,r0 / return byte count 35 | inc r0 36 | bic $1,r0 37 | add r0,r1 38 | 1: 39 | sub $2,r0 40 | blt 1f 41 | mov -(r1),-(sp) 42 | br 1b 43 | 1: 44 | jmp *(r4)+ 45 | 46 | stsp: 47 | mov sp,*(r4)+ 48 | jmp *(r4)+ 49 | 50 | -------------------------------------------------------------------------------- /unix_v6/fort/rt/re.s: -------------------------------------------------------------------------------- 1 | / 2 | / 3 | 4 | / re -- comparison of 8-byte quantities 5 | 6 | .globl rle8 7 | .globl rlt8 8 | .globl req8 9 | .globl rne8 10 | .globl rge8 11 | .globl rgt8 12 | rlt8: 13 | jsr pc,compar 14 | blt one 15 | br zero 16 | 17 | rle8: 18 | jsr pc,compar 19 | ble one 20 | br zero 21 | 22 | req8: 23 | jsr pc,compar 24 | beq one 25 | br zero 26 | 27 | rne8: 28 | jsr pc,compar 29 | bne one 30 | br zero 31 | 32 | rge8: 33 | jsr pc,compar 34 | bge one 35 | br zero 36 | 37 | rgt8: 38 | jsr pc,compar 39 | bgt one 40 | br zero 41 | 42 | one: 43 | mov $1,-(sp) 44 | jmp *(r4)+ 45 | 46 | zero: 47 | clr -(sp) 48 | jmp *(r4)+ 49 | 50 | compar: 51 | setd 52 | mov (sp)+,r0 53 | movf (sp)+,fr0 54 | cmpf (sp)+,fr0 55 | cfcc 56 | jmp (r0) 57 | 58 | -------------------------------------------------------------------------------- /unix_v6/fort/fx/fx3.s: -------------------------------------------------------------------------------- 1 | / 2 | / 3 | 4 | / fx3 -- get integer 5 | 6 | .globl geti 7 | .globl ptemp 8 | 9 | .globl putc 10 | .globl putw 11 | 12 | geti: 13 | mov r1,-(sp) 14 | mov r3,-(sp) 15 | clr r3 16 | mov $symbuf,r0 17 | 1: 18 | movb (r0)+,r1 19 | sub $'0,r1 20 | cmp r1,$9 21 | bhi 1f 22 | mpy $10.,r3 23 | add r1,r3 24 | br 1b 25 | 1: 26 | mov r3,r0 27 | mov (sp)+,r3 28 | mov (sp)+,r1 29 | rts r5 30 | 31 | ptemp: 32 | mov r0,-(sp) 33 | mov r1,-(sp) 34 | mov (r5)+,r0 / character 35 | jsr r5,putc; tbuf 36 | mov *(r5)+,r0 / word 37 | jsr r5,putw; tbuf 38 | mov ifno,r0 39 | jsr r5,putw; tbuf 40 | mov (r5)+,r1 / string 41 | 1: 42 | movb (r1),r0 43 | jsr r5,putc; tbuf 44 | tstb (r1)+ 45 | bne 1b 46 | mov (sp)+,r1 47 | mov (sp)+,r0 48 | rts r5 49 | 50 | -------------------------------------------------------------------------------- /unix_v6/s7/ne.h: -------------------------------------------------------------------------------- 1 | # 2 | int dbg; 3 | int ct; 4 | int lp[40]; 5 | char used[100]; /* available registers */ 6 | int ps; /* dflt init pt size */ 7 | int ft; /* dflt font */ 8 | int first; 9 | extern int fout, fin; 10 | int ifile; 11 | int linect; /* line number in file */ 12 | int eqline; /* line where eqn started */ 13 | int svargc; 14 | char **svargv; 15 | int eht[100]; 16 | int ebase[100]; 17 | int ewid[100]; 18 | struct { char c1; char c2; }; 19 | int yyval; 20 | int *yypv; 21 | int yylval; 22 | int tht[30]; 23 | int tbase[30]; 24 | int ptr; 25 | char *nptr[50]; 26 | char *sptr[50]; 27 | int eqnreg, eqnht, eqnbase; 28 | int lefteq, righteq; 29 | int lastchar; /* last character read by lex */ 30 | #define FATAL 1 31 | int ESC; 32 | int HREV; 33 | int HFWD; 34 | int SI; 35 | int SO; 36 | -------------------------------------------------------------------------------- /unix_v6/yacc/source/y5.c: -------------------------------------------------------------------------------- 1 | /* fake portable I/O routines, for those 2 | sites so backward as to not have the 3 | port. library */ 4 | 5 | int cin, cout; 6 | extern int fin, fout; 7 | 8 | copen( s, c ) char *s; { 9 | int f; 10 | 11 | if( c == 'r' ){ 12 | fin = f = open( s, 0 ); 13 | } 14 | 15 | else if( c == 'a' ){ 16 | f = open( s, 1 ); 17 | seek( f, 0, 2 ); 18 | } 19 | 20 | else { /* c == w */ 21 | f = creat( s, 0666 ); 22 | } 23 | 24 | return( f ); 25 | } 26 | 27 | cflush(x){ /* fake! sets file to x */ 28 | flush(); 29 | fout = x; 30 | } 31 | 32 | system(){ 33 | error( "The function \"system\" is called" ); 34 | } 35 | 36 | cclose(i){ 37 | close(i); 38 | } 39 | 40 | cexit(i){ 41 | flush(); 42 | exit(); 43 | } 44 | -------------------------------------------------------------------------------- /unix_v6/cref/index/ind2.c: -------------------------------------------------------------------------------- 1 | int optr; 2 | 3 | char obuf[512]; 4 | 5 | int nflush; 6 | 7 | put(string,n) 8 | char *string; 9 | { 10 | extern utmp; 11 | int i; 12 | char *o; 13 | 14 | /*printf("%d %c %d\n",fil,*string,n);/*DEBUG*/ 15 | 16 | string--; 17 | 18 | if((i = optr + n - 512) >= 0) { 19 | n =- i; 20 | o = &obuf[optr] -1; 21 | while(--n >= 0) 22 | *++o = *++string; 23 | optr = 512; 24 | flsh(1); 25 | n = i; 26 | } 27 | 28 | o = &obuf[optr] - 1; 29 | optr =+ n; 30 | 31 | while(--n >= 0) { 32 | *++o = *++string; 33 | } 34 | return(0); 35 | } 36 | 37 | flsh(fil) 38 | { 39 | extern tp[],utmp; 40 | 41 | if(optr <= 0) return(optr); 42 | 43 | nflush++; 44 | if(write(tp[0],obuf,optr) != optr) 45 | return(-1); 46 | optr = 0; 47 | return(0); 48 | } 49 | 50 | -------------------------------------------------------------------------------- /unix_v6/tmg/tmgb/emit.s: -------------------------------------------------------------------------------- 1 | f=r5 2 | g=r4 3 | .globl ofile 4 | .globl dogen 5 | .globl succ 6 | .globl g1,k 7 | .globl emit 8 | 9 | emit: 10 | mov f,-(sp) 11 | add $g1,(sp) 12 | mov g,r1 13 | 1: /look for a translation 14 | cmp (sp),r1 15 | bge 3f /none at all 16 | bit -(r1),$100001 17 | beq 1b 18 | /move it to end of stak 19 | mov (r1)+,r0 20 | 1: 21 | cmp g,r1 22 | ble 1f 23 | mov (r1),-2(r1) 24 | mov r0,(r1)+ 25 | br 1b 26 | 1: 27 | mov ofile,r0 28 | jsr pc,dogen 29 | mov g,r1 30 | 1: 31 | cmp (sp),r1 /try to find prev value of k 32 | bge 1f /nothing more in this stack frame 33 | tst -(r1) 34 | bge 1b /this isnt a k pointer (negative) 35 | mov (r1),k(f) 36 | br 3f 37 | 1: 38 | mov f,r0 /go back to prev stack frame 39 | mov k(r0),k(f) 40 | 3: 41 | tst (sp)+ 42 | jmp succ 43 | -------------------------------------------------------------------------------- /unix_v1/pages/e00-07: -------------------------------------------------------------------------------- 1 | jmp unkni 2 | 3 | .if cold 4 | 5 | idata: 6 | 7 | / root 8 | 9 | 41. 10 | 140016 11 | .byte 7,1 12 | 9f-.-2 13 | 41. 14 | <..\0\0\0\0\0\0> 15 | 41. 16 | <.\0\0\0\0\0\0\0> 17 | 42. 18 | 19 | 43. 20 | 21 | 44. 22 | 23 | 45. 24 | 25 | 46. 26 | 27 | 9: 28 | 29 | / device directory 30 | 31 | 42. 32 | 140016 33 | .byte 2,1 34 | 9f-.-2 35 | 41. 36 | <..\0\0\0\0\0\0> 37 | 42. 38 | <.\0\0\0\0\0\0\0> 39 | 01. 40 | 41 | 02. 42 | 43 | 03. 44 | 45 | 04. 46 | 47 | 05. 48 | 49 | 06. 50 | 51 | 07. 52 | 53 | 08. 54 | 55 | 09. 56 | 57 | -------------------------------------------------------------------------------- /unix_v6/fort/io/iox.s: -------------------------------------------------------------------------------- 1 | / 2 | / 3 | 4 | / iox -- io variables 5 | 6 | .globl _nocr 7 | .globl utable 8 | .globl btable 9 | .globl ftable 10 | 11 | .globl _end 12 | .globl formp 13 | 14 | bufp: _end 15 | filnam: 16 | ; .even 17 | 18 | .bss 19 | 20 | gflg: .=.+2 21 | formp: .=.+2 22 | rdflg: .=.+2 23 | nflg: .=.+2 24 | unit: .=.+2 25 | buffer: .=.+2 26 | slcnt: .=.+2 27 | itype: .=.+1 28 | ilen: .=.+1 29 | ilval: .=.+2 30 | width: .=.+2 31 | twidth: .=.+2 32 | ndig: .=.+2 33 | pbuf: .=.+10 34 | ppar: .=.+2 35 | llp: .=.+2 36 | llpcnt: .=.+2 37 | itmflg: .=.+2 38 | nspace: .=.+2 39 | gcflg: .=.+2 40 | binflg: .=.+2 41 | 42 | utable: .=.+20. 43 | btable: .=.+40. 44 | ftable: .=.+2. 45 | rep: .=.+2 46 | scale: .=.+2 47 | itmfnd: .=.+2 48 | ngflg: .=.+2 49 | nlflg: .=.+2 50 | _nocr: .=.+2 51 | 52 | -------------------------------------------------------------------------------- /unix_v1/pages/e00-08: -------------------------------------------------------------------------------- 1 | 10. 2 | 3 | 11. 4 | 5 | 12. 6 | 7 | 13. 8 | 9 | 14. 10 | 11 | 15. 12 | 13 | 16. 14 | 15 | 17. 16 | 17 | 18. 18 | 19 | 19. 20 | 21 | 20. 22 | 23 | 21. 24 | 25 | 22. 26 | 27 | 01. 28 | / really tty 29 | 9: 30 | 31 | / binary directory 32 | 33 | 43. 34 | 140016 35 | .byte 2,3 36 | 9f-.-2 37 | 41. 38 | <..\0\0\0\0\0\0> 39 | 43. 40 | <.\0\0\0\0\0\0\0> 41 | 9: 42 | 43 | / etcetra directory 44 | 45 | 44. 46 | 140016 47 | .byte 2,3 48 | 9f-.-2 49 | 41. 50 | <..\0\0\0\0\0\0> 51 | 44. 52 | <.\0\0\0\0\0\0\0> 53 | 47. 54 | 55 | 9: 56 | 57 | -------------------------------------------------------------------------------- /unix_v6/s4/getpw.c: -------------------------------------------------------------------------------- 1 | getpw(uid, buf) 2 | int uid; 3 | char buf[]; 4 | { 5 | auto pbuf[259]; 6 | static pwf; 7 | register n, c; 8 | register char *bp; 9 | 10 | if(pwf == 0) 11 | pwf = open("/etc/passwd", 0); 12 | if(pwf < 0) 13 | return(1); 14 | seek(pwf, 0, 0); 15 | pbuf[0] = pwf; 16 | pbuf[1] = 0; 17 | pbuf[2] = 0; 18 | uid =& 0377; 19 | 20 | for (;;) { 21 | bp = buf; 22 | while((c=getc(pbuf)) != '\n') { 23 | if(c <= 0) 24 | return(1); 25 | *bp++ = c; 26 | } 27 | *bp++ = '\0'; 28 | bp = buf; 29 | n = 3; 30 | while(--n) 31 | while((c = *bp++) != ':') 32 | if(c == '\n') 33 | return(1); 34 | while((c = *bp++) != ':') { 35 | if(c<'0' || c>'9') 36 | continue; 37 | n = n*10+c-'0'; 38 | } 39 | if(n == uid) 40 | return(0); 41 | } 42 | return(1); 43 | } 44 | -------------------------------------------------------------------------------- /unix_v6/fort/rt1/cabs.s: -------------------------------------------------------------------------------- 1 | / 2 | / 3 | 4 | / cabs fortran function 5 | 6 | .globl cabs. 7 | .globl dcabs. 8 | 9 | .globl sqrt 10 | .globl retrn 11 | .globl rerr 12 | .globl temp 13 | 14 | dcabs.: temp 15 | .+2 16 | setd 17 | br 1f 18 | 19 | cabs.: temp 20 | .+2 21 | setf 22 | 1: 23 | mov 2(r3),r1 24 | movf (r1)+,r0 25 | movf (r1)+,r1 26 | jsr pc,hypot 27 | bes 1f 28 | movf r0,temp 29 | jmp retrn 30 | 1: 31 | jsr r5,rerr; 4 32 | hypot: 33 | movf fr1,-(sp) 34 | absf fr0 35 | absf fr1 36 | cmpf fr0,fr1 37 | cfcc 38 | bne 1f 39 | movf $one,fr0 40 | br 3f 41 | 1: 42 | blt 2f 43 | movf fr0,-(sp) 44 | movf fr1,fr0 45 | movf (sp)+,fr1 46 | 2: 47 | divf fr1,fr0 48 | mulf fr0,fr0 49 | 3: 50 | addf $one,fr0 51 | jsr pc,sqrt 52 | mulf fr1,fr0 53 | cfcc 54 | movf (sp)+,fr1 55 | rts pc 56 | 57 | one = 40200 58 | -------------------------------------------------------------------------------- /unix_v6/s2/nice.c: -------------------------------------------------------------------------------- 1 | /* nice */ 2 | int nicarg 4; 3 | char *args[100]; 4 | char string[10000]; 5 | 6 | main(argc, argv) 7 | int argc; 8 | char *argv[]; 9 | { 10 | int i; 11 | register char **argp, *strp, *p; 12 | 13 | if(argc > 1 && argv[1][0] == '-') { 14 | nicarg = atoi(&argv[1][1]); 15 | argc--; 16 | argv++; 17 | } 18 | if(argc < 2) { 19 | printf("usage: nice [ -n ] command\n"); 20 | exit(1); 21 | } 22 | argc--; 23 | argv++; 24 | argp = args; 25 | strp = string; 26 | for (i=0; i<9; i++) 27 | *strp++ = "/usr/bin/"[i]; 28 | for(i=0; i 5 | tcx: 6 | mt: 7 | mtx: <0\0> 8 | tboot: 9 | mboot: 10 | .even 11 | .bss 12 | dir: . = .+[mdirent*dirsiz] 13 | tapeb: 14 | map: .=.+4096. 15 | emap: 16 | ch: .=.+1 17 | flc: .=.+1 18 | flf: .=.+1 19 | fli: .=.+1 20 | flm: .=.+1 21 | flu: .=.+1 22 | flv: .=.+1 23 | flw: .=.+1 24 | .even 25 | 26 | command:.=.+2 27 | sum: .=.+2 28 | size: .=.+2 29 | nentr: .=.+2 30 | nused: .=.+2 31 | nfree: .=.+2 32 | lused: .=.+2 33 | catlb: .=.+20. 34 | narg: .=.+2 35 | rnarg: .=.+2 36 | parg: .=.+2 37 | fio: .=.+2 38 | mss: .=.+2 39 | ndirent:.=.+2 40 | ndentd8:.=.+2 41 | edir: .=.+2 42 | rseeka: .=.+2 43 | wseeka: .=.+2 44 | tapsiz: .=.+2 45 | name: .=.+32. 46 | name1: .=.+32. 47 | statb: .=.+40. 48 | 49 | smdate = 30. 50 | -------------------------------------------------------------------------------- /unix_v6/iolib/cgetc.c: -------------------------------------------------------------------------------- 1 | # include "ciodec.c" 2 | char cgetc(fn) 3 | { 4 | struct fileps *fp; 5 | if (nargs() != 1) 6 | IEHzap("cgetc "); 7 | if (fn <0 || fn >15) 8 | IEH3err("cgetc: %d illegal file number",fn); 9 | fp = &IEH3fpts[fn]; 10 | if (fp == 0 || fp->wrflag > 1) 11 | IEH3err("cgetc: %d not open to read",fn); 12 | if (fp->wrflag == 0) 13 | /* file not opened with fopen: try making a buffer */ 14 | IEH3mbuf (fn, 0); 15 | if (fp->eoferr > 1) 16 | return ('\0'); 17 | if (fp->nchars == 0) 18 | switch (fp->nchars = read(fn, fp->bptr=fp->buff, fp->bsize)) 19 | { 20 | case -1: /* error */ 21 | if (fp->eoferr == 0) 22 | IEH3err("cgetc: error on %d",fn); 23 | fp->eoferr = 3; 24 | return ('\0'); 25 | case 0: fp->eoferr = 2; 26 | return ('\0'); 27 | } 28 | fp->nchars--; 29 | return (*(fp->bptr++)); 30 | } 31 | cin 0; 32 | -------------------------------------------------------------------------------- /unix_v6/s3/pow.s: -------------------------------------------------------------------------------- 1 | .globl pow, _pow 2 | .globl log, exp 3 | 4 | _pow: 5 | mov r5,-(sp) 6 | mov sp,r5 7 | movf 4(r5),fr0 8 | movf 12.(r5),fr1 9 | jsr pc,pow 10 | mov (sp)+,r5 11 | rts pc 12 | 13 | pow: 14 | 15 | / 0^0~ is 0 16 | 17 | tstf fr0 18 | cfcc 19 | bne 1f 20 | tstf fr1 21 | cfcc 22 | beq bad 23 | rts pc 24 | 1: 25 | 26 | / -^i is +^i fixed sign 27 | 28 | bpl 1f 29 | movf fr1,-(sp) 30 | modf $one,fr1 31 | cfcc 32 | bne bad1 33 | movf (sp)+,fr1 34 | absf fr0 35 | jsr pc,1f 36 | bes bad 37 | movf fr1,-(sp) 38 | modf $half,fr1 39 | cfcc 40 | beq 2f 41 | negf fr0 42 | 2: 43 | movf (sp)+,fr1 44 | rts pc 45 | 1: 46 | jsr pc,log 47 | bes 1f 48 | mulf fr1,fr0 49 | jsr pc,exp 50 | 1: 51 | rts pc 52 | 53 | bad1: 54 | movf (sp)+,fr1 55 | bad: 56 | sec 57 | rts pc 58 | 59 | one = 40200 60 | half = 40000 61 | -------------------------------------------------------------------------------- /unix_v6/fort/rt2/openrw.s: -------------------------------------------------------------------------------- 1 | / 2 | / 3 | 4 | / openr, openw-- 5 | / 6 | / call open(r|w) (string, iunit) 7 | / or, 8 | / call open(r|w) (argno, iunit) 9 | / where argno is an argument number (0 is command name) 10 | 11 | .globl openr. 12 | .globl openw. 13 | 14 | .globl utable 15 | .globl btable 16 | .globl ftable 17 | .globl getbuf 18 | .globl fopen 19 | .globl fcreat 20 | 21 | openr.: temp 22 | .+2 23 | mov pc,-(sp) 24 | br 1f 25 | 26 | openw.: temp 27 | .+2 28 | clr -(sp) 29 | 1: 30 | mov 4(r3),r1 31 | mov 2(r1),r1 32 | jsr r5,chkunit 33 | tstb utable(r1) 34 | beq 1f 35 | jsr r5,rerr; 101. 36 | sys exit 37 | 1: 38 | jsr r5,getbuf 39 | mov 2(r3),r0 40 | mov 2(r0),r0 41 | cmp r0,$32. 42 | bhi 1f 43 | cmp r0,*argp 44 | bhi err 45 | asl r0 46 | add argp,r0 47 | br 2f 48 | 1: 49 | tst (sp)+ 50 | beq 1f 51 | movb $1,utable(r1) 52 | -------------------------------------------------------------------------------- /unix_v6/s5/putchr.s: -------------------------------------------------------------------------------- 1 | / C library -- putchar 2 | 3 | .globl _putchar,_flush 4 | .globl _fout 5 | 6 | _putchar: 7 | mov r5,-(sp) 8 | mov sp,r5 9 | mov _fout+4,r0 10 | bne 1f 11 | jsr pc,fl 12 | mov _fout+4,r0 13 | 1: 14 | movb 4(r5),(r0)+ 15 | beq 1f 16 | inc _fout+4 17 | dec _fout+2 18 | bgt 1f 19 | jsr pc,fl 20 | 1: 21 | mov 4(r5),r0 22 | mov (sp)+,r5 23 | rts pc 24 | 25 | _flush: 26 | mov r5,-(sp) 27 | mov sp,r5 28 | jsr pc,fl 29 | mov (sp)+,r5 30 | rts pc 31 | 32 | fl: 33 | mov _fout+4,r0 34 | beq 1f 35 | sub $_fout+6,r0 36 | mov r0,0f 37 | mov _fout,r0 38 | bne 2f 39 | inc r0 40 | 2: 41 | sys 0; 9f 42 | .data 43 | 9: sys write; _fout+6; 0:.. 44 | .text 45 | 1: 46 | mov $_fout+6,_fout+4 47 | mov $512.,_fout+2 48 | cmp _fout,$2 49 | bhi 1f 50 | mov $1,_fout+2 51 | 1: 52 | rts pc 53 | 54 | .bss 55 | _fout: .=.+518. 56 | -------------------------------------------------------------------------------- /unix_v6/s3/ttyn.s: -------------------------------------------------------------------------------- 1 | / return name of current tty 2 | 3 | .globl ttyn, _ttyn 4 | 5 | _ttyn: 6 | mov r5,-(sp) 7 | mov sp,r5 8 | mov 4(r5),r0 9 | jsr pc,1f 10 | mov (sp)+,r5 11 | rts pc 12 | 13 | ttyn: 14 | clr r0 15 | 1: 16 | mov $'x,name 17 | tst -(sp) 18 | sys fstat; buf 19 | bes er1 20 | mov buf+2,(sp) 21 | sys open; dev; 0 22 | bes er1 23 | mov r0,r1 24 | 1: 25 | mov r1,r0 26 | sys read; buf; 16. 27 | bes er 28 | cmp r0,$16. 29 | bne er 30 | mov $buf,r0 31 | cmp (r0)+,(sp) 32 | bne 1b 33 | cmp (r0)+,$"tt 34 | bne 1b 35 | cmpb (r0)+,$'y 36 | bne 1b 37 | tstb (r0)+ 38 | beq 1b 39 | cmpb (r0),$'\0 40 | bne 1b 41 | movb -(r0),name 42 | 43 | er: 44 | mov r1,r0 45 | sys close 46 | 47 | er1: 48 | tst (sp)+ 49 | movb name,r0 50 | rts pc 51 | 52 | .data 53 | dev: 54 | .even 55 | .bss 56 | buf: .=.+40. 57 | name: .=.+2 58 | -------------------------------------------------------------------------------- /unix_v6/tmg/tmgb/getnam.s: -------------------------------------------------------------------------------- 1 | i = r3 2 | .globl putcall,kput,obuild 3 | .globl seekchar 4 | .globl getchar 5 | .globl outb, outw, outt 6 | .globl cfile, lfile, flush 7 | .globl iget 8 | .globl sptr 9 | .globl generate,succ 10 | .globl getnam 11 | 12 | getnam: 13 | mov $1f+1,r0 14 | jsr pc,putcall 15 | jsr pc,iget 16 | mov (r0),r0 17 | jsr pc,kput 18 | jsr pc,iget 19 | mov (r0),r0 20 | jsr pc,kput 21 | jmp succ 22 | 1: 23 | cmp cfile,lfile 24 | beq 1f 25 | jsr pc,flush 26 | mov cfile,lfile 27 | 1: 28 | mov (i)+,r1 29 | mov r1,-(sp) 30 | mov (i)+,r0 31 | add $sptr,r0 32 | jsr pc,seekchar 33 | 2: 34 | mov (sp),r1 35 | mov outw,r2 36 | 1: 37 | jsr pc,getchar 38 | tst r0 39 | beq 1f 40 | movb r0,outb(r2) 41 | inc r2 42 | mov r2,outw 43 | cmp r2,$outt 44 | blt 1b 45 | / 46 | jsr pc,flush 47 | br 2b 48 | 1: 49 | tst (sp)+ 50 | jmp generate 51 | -------------------------------------------------------------------------------- /unix_v6/fort/rt/r9.s: -------------------------------------------------------------------------------- 1 | / 2 | / 3 | 4 | one = 40200 5 | / r9 -- fortran runtime -- real**integer 6 | 7 | .globl ipi4 8 | .globl rpi4 9 | .globl rpi8 10 | 11 | .globl rerr 12 | 13 | ipi4: 14 | setf 15 | setl 16 | movif 4(sp),fr0 17 | movf fr0,4(sp) 18 | jsr r5,1f 19 | movfi fr1,-(sp) 20 | jmp *(r4)+ 21 | 22 | rpi4: 23 | setf 24 | br 2f 25 | 26 | rpi8: 27 | setd 28 | 2: 29 | jsr r5,1f 30 | movf fr1,-(sp) 31 | jmp *(r4)+ 32 | 33 | 1: 34 | cmp (sp)+,(sp)+ / jsr + msp of i4 35 | mov (sp)+,r0 36 | movf $one,fr1 37 | movf (sp)+,fr0 38 | tst r0 39 | bgt 1f 40 | cfcc 41 | beq 9f 42 | tst r0 43 | beq 3f 44 | divf fr0,fr1 45 | movf fr1,fr0 46 | neg r0 47 | movf $one,fr1 48 | 1: 49 | asr r0 50 | bcc 2f 51 | mulf fr0,fr1 52 | 2: 53 | tst r0 54 | beq 3f 55 | mulf fr0,fr0 56 | br 1b 57 | 3: 58 | jmp (r5) 59 | 60 | 9: 61 | jsr r5, rerr; 17. 62 | -------------------------------------------------------------------------------- /unix_v1/pages/e10-02: -------------------------------------------------------------------------------- 1 | wlist: .=.+40. 2 | cc: .=.+30. 3 | cf: .=.+31. 4 | cl: .=.+31. 5 | clist: .=.+510. 6 | imod: .=.+1 7 | smod: .=.+1 8 | mmod: .=.+1 9 | uquant: .=.+1 10 | sysflg: .=.+1 11 | pptiflg:.=.+1 12 | ttyoch: .=.+1 13 | .even 14 | .=.+100.; sstack: 15 | buffer: .=.+[ntty*140.] 16 | .=.+[nbuf*520.] 17 | 18 | . = core-64. 19 | user: 20 | u.sp: .=.+2 21 | u.usp: .=.+2 22 | u.r0: .=.+2 23 | u.cdir: .=.+2 24 | u.fp: .=.+10. 25 | u.fofp: .=.+2 26 | u.dirp: .=.+2 27 | u.namep: .=.+2 28 | u.off: .=.+2 29 | u.base: .=.+2 30 | u.count: .=.+2 31 | u.nread: .=.+2 32 | u.break: .=.+2 33 | u.ttyp: .=.+2 34 | u.dirbuf:.=.+10. 35 | u.pri: .=.+2 36 | u.intr: .=.+2 37 | u.quit: .=.+2 38 | u.emt: .=.+2 39 | u.ilgins:.=.+2 40 | u.cdev: .=.+2 41 | u.uid: .=.+1 42 | u.ruid: .=.+1 43 | u.bsys: .=.+1 44 | u.uno: .=.+1 45 | . = core 46 | 47 | -------------------------------------------------------------------------------- /unix_v6/iolib/run: -------------------------------------------------------------------------------- 1 | cc -c -O alloc.c 2 | cc -c -O calloc.c 3 | cc -c -O cclose.c 4 | cc -c -O ceof.c 5 | cc -c -O cerror.c 6 | cc -c -O cexit.c 7 | cc -c -O cflush.c 8 | cc -c -O cfree.c 9 | cc -c -O cgetc.c 10 | cc -c -O ciodec.c 11 | cc -c -O clenf.c 12 | cc -c -O copen.c 13 | cc -c -O cputc.c 14 | cc -c -O cwrd.c 15 | as dummy.s; mv a.out dummy.o 16 | cc -c -f -O ftoa.c 17 | cc -c -O getch.c 18 | cc -c -O gets.c 19 | cc -c -O getvec.c 20 | cc -c -O iehzap.c 21 | cc -c -O makbuf.c 22 | cc -c -O maktab.c 23 | cc -c -O nexch.c 24 | cc -c -O nodig.c 25 | cc -c -O printf.c 26 | cc -c -O putch.c 27 | cc -c -O puts.c 28 | cc -c -O relvec.c 29 | cc -c -O revput.c 30 | cc -c -O scan1.c 31 | cc -c -O scan2.c 32 | cc -c -O scan3.c 33 | cc -c -O system.c 34 | cc -c -O tmpnam.c 35 | cc -c -O unget.c 36 | as unprnt.s; mv a.out unprnt.o 37 | cc -c -O wdleng.c 38 | ar r /lib/libp.a *.o 39 | rm *.o 40 | -------------------------------------------------------------------------------- /unix_v6/mdec/tm.s: -------------------------------------------------------------------------------- 1 | mts = 172520 2 | mtc = 172522 3 | mtbrc = 172524 4 | mtcma = 172526 5 | 6 | tread: 7 | 1: 8 | mov ba,mtma 9 | cmp mtapa,tapa 10 | beq 1f 11 | bhi 2f 12 | jsr pc,rrec 13 | br 1b 14 | 2: 15 | jsr pc,rew 16 | br 1b 17 | 1: 18 | mov wc,r1 19 | 1: 20 | jsr pc,rrec 21 | add $256.,r1 22 | bmi 1b 23 | rts pc 24 | 25 | rrec: 26 | mov $mts,r0 27 | bit $2,(r0)+ / rewind status 28 | bne rrec 29 | tstb (r0)+ / cu ready 30 | bpl rrec 31 | inc r0 32 | mov $-512.,(r0)+ / byte count 33 | mov mtma,(r0) / bus address 34 | mov $mtc,r0 35 | mov $60003,(r0) / read 800bpi 36 | 1: 37 | tstb (r0) 38 | bpl 1b 39 | tst (r0)+ 40 | bpl 1f 41 | mov $-1,(r0) 42 | mov $60013,-(r0) / backspace 43 | br rrec 44 | 1: 45 | add $512.,mtma 46 | inc mtapa 47 | rts pc 48 | 49 | rew: 50 | mov $60017,*$mtc 51 | clr mtapa 52 | rts pc 53 | 54 | mtapa: 0 55 | mtma: 0 56 | -------------------------------------------------------------------------------- /unix_v6/fort/rt2/rio.s: -------------------------------------------------------------------------------- 1 | / 2 | / 3 | 4 | / fortran random I/O 5 | 6 | .globl rread. 7 | .globl rwrite. 8 | 9 | .globl temp 10 | .globl retrn 11 | .globl rerr 12 | 13 | rread.: temp 14 | .+2 15 | mov 2(r3),r0 16 | mov 2(r0),0f 17 | mov rfin,r0 18 | bne 1f 19 | sys open; rf; 0 20 | bes 9f 21 | mov r0,rfin 22 | 1: 23 | sys seek; 0:..; 0 24 | mov 4(r3),0f 25 | mov 6(r3),r0 26 | mov 2(r0),0f+2 27 | mov rfin,r0 28 | sys read; 0:..; 0 29 | jmp retrn 30 | 31 | rwrite.:temp 32 | .+2 33 | mov 2(r3),r0 34 | mov 2(r0),0f 35 | mov rfout,r0 36 | bne 1f 37 | sys creat; rf; 17 38 | bes 9f 39 | mov r0,rfout 40 | 1: 41 | sys seek; 0:..; 0 42 | mov 4(r3),0f 43 | mov 6(r3),r0 44 | mov 2(r0),0f+2 45 | mov rfout,r0 46 | sys write; 0:..; .. 47 | jmp retrn 48 | 49 | 9: 50 | jsr r5,rerr; 456. 51 | sys exit 52 | 53 | rf: 54 | 55 | .even 56 | rfin: .=.+2 57 | rfout: .=.+2 58 | 59 | -------------------------------------------------------------------------------- /unix_v6/s2/mesg.c: -------------------------------------------------------------------------------- 1 | /* 2 | * mesg -- set current tty to accept or 3 | * forbid write permission. 4 | * 5 | * mesg [y] [n] 6 | * y allow messages 7 | * n forbid messages 8 | */ 9 | 10 | int sbuf[40]; 11 | 12 | main(argc, argv) 13 | char *argv[]; 14 | { 15 | register char *tty; 16 | 17 | tty = "/dev/ttyx"; 18 | tty[8] = ttyn(1); 19 | if(stat(tty, sbuf) < 0) { 20 | write(2, "cannot stat\n", 12); 21 | exit(1); 22 | } 23 | if(argc < 2) { 24 | if(sbuf[2] & 02) 25 | goto no; 26 | goto yes; 27 | } 28 | if(*argv[1] == 'y') 29 | goto yes; 30 | 31 | no: 32 | if(chmod(tty, 0600) < 0) 33 | goto bad; 34 | goto was; 35 | 36 | yes: 37 | if(chmod(tty, 0622) < 0) 38 | goto bad; 39 | 40 | was: 41 | if(sbuf[2] & 02) 42 | write(2, "was y\n", 6); else 43 | write(2, "was n\n", 6); 44 | exit(0); 45 | 46 | bad: 47 | write(2, "cannot change mode\n", 19); 48 | exit(1); 49 | } 50 | -------------------------------------------------------------------------------- /unix_v1/tools/rebuild: -------------------------------------------------------------------------------- 1 | #!/bin/sh 2 | 3 | r() { cat pages/$2-* > rebuilt/$1.s; } 4 | 5 | rebuild() { 6 | test -d rebuilt || mkdir rebuilt 7 | 8 | echo rebuilding... 9 | r u0 e00 10 | r u1 e01 11 | r u2 e02 12 | r u3 e03 13 | r u4 e04 14 | r u5 e05 15 | r u6 e06 16 | r u7 e07 17 | r u8 e08 18 | r u9 e09 19 | r ux e10 20 | r sh e11 21 | r init e12 22 | } 23 | 24 | corep() { 25 | for x in ../patches/core/*.patch ; do 26 | y=`basename $x .patch` 27 | echo ' ' $y; patch -s -p1 < $x 28 | done 29 | } 30 | 31 | p() { echo ' ' $1; patch -s -p1 <../patches/$1.patch; } 32 | 33 | patches() { 34 | test -d build || mkdir build 35 | 36 | echo patching... 37 | cp rebuilt/* build 38 | cd build 39 | corep 40 | for x in "$@" ; do 41 | p $x 42 | done 43 | } 44 | 45 | 46 | rebuild 47 | patches "$@" 48 | -------------------------------------------------------------------------------- /unix_v6/fort/rt/r4.s: -------------------------------------------------------------------------------- 1 | / 2 | / 3 | 4 | / r4 -- short integer arithmetic 5 | 6 | .globl iad2 7 | .globl isb2 8 | .globl imp2 9 | .globl idv2 10 | .globl i2i4 11 | .globl i1i4 12 | .globl i4i2 13 | .globl i4i1 14 | .globl ing2 15 | .globl rval2 16 | .globl rval1 17 | .globl l2l1 18 | 19 | iad2: 20 | add (sp)+,(sp) 21 | jmp *(r4)+ 22 | 23 | isb2: 24 | sub (sp)+,(sp) 25 | jmp *(r4)+ 26 | 27 | imp2: 28 | mov (sp)+,r1 29 | mul (sp)+,r1 30 | mov r1,-(sp) 31 | jmp *(r4)+ 32 | 33 | idv2: 34 | mov 2(sp),r1 35 | sxt r0 36 | div (sp)+,r0 37 | mov r0,(sp) 38 | jmp *(r4)+ 39 | 40 | i4i2: 41 | i4i1: 42 | tst (sp)+ 43 | jmp *(r4)+ 44 | 45 | i2i4: 46 | i1i4: 47 | tst (sp) 48 | sxt -(sp) 49 | jmp *(r4)+ 50 | 51 | ing2: 52 | neg (sp) 53 | jmp *(r4)+ 54 | 55 | rval2: 56 | mov *(r4)+,-(sp) 57 | jmp *(r4)+ 58 | 59 | rval1: 60 | movb *(r4)+,r0 61 | mov r0,-(sp) 62 | 63 | l2l1: 64 | jmp *(r4)+ 65 | 66 | -------------------------------------------------------------------------------- /unix_v6/iolib/makbuf.c: -------------------------------------------------------------------------------- 1 | # include "ciodec.c" 2 | IEH3bsz 512; 3 | IEH3mbuf (fn, type) 4 | int fn, type; 5 | { 6 | struct fileps *fp; 7 | extern char *IEH3olbf[], *alloc(); 8 | extern int IEHfbak[10]; 9 | int bx[19], size, bloc; 10 | fp = &IEH3fpts[fn]; 11 | fp->eoferr = fp->nchars = 0; 12 | fp->wrflag = type+1; 13 | /* decide whether to buffer or not */ 14 | if (ttyn(fn) != 'x') 15 | size = 1; 16 | else 17 | if (fstat(fn,bx) > 0 && bx[0] == 40 && type == 0) 18 | size = 1; 19 | else 20 | size = IEH3bsz; 21 | for (fp->buff = 0; size >10 && fp->buff == 0; size =/ 4) 22 | if ((bloc = alloc(size+100)) != -1) 23 | { 24 | IEH3olbf[fn] = bloc; 25 | fp->buff = fp->bptr =bloc + 100; 26 | fp->bsize = size; 27 | break; 28 | } 29 | if (fp->buff == 0) 30 | { 31 | fp->buff = fp->bptr = &IEHfbak[fn]; 32 | fp->bsize = size>1 ? 2 : 1; 33 | } 34 | } 35 | struct fileps IEH3fpts [10]; 36 | int IEHfbak[10]; 37 | -------------------------------------------------------------------------------- /unix_v6/s1/db4.s: -------------------------------------------------------------------------------- 1 | / db4 -- debugger 2 | 3 | maxsym = 24000. 4 | core: 5 | 6 | a.out: 7 | 8 | .even 9 | zero: 0 10 | .bss 11 | regbuf: 12 | .=.+1024. 13 | sigp = regbuf+310 14 | txtsiz = regbuf+322 15 | datsiz = regbuf+324 16 | stksiz = regbuf+326 17 | rtxtsiz: .=.+2 18 | .data 19 | objmagic: 407 20 | nobjmagic: 410 21 | namsiz: nambuf 22 | incdot: 2 23 | nlcom: '/ 24 | 25 | .bss 26 | 27 | starmod:.=.+2 28 | symbol: .=.+10. 29 | getoff: .=.+2 30 | namstrt: .=.+2 31 | bytemod: .=.+2 32 | savsp: .=.+2 33 | error: .=.+2 34 | ttyfin: .=.+2 35 | dbfin: .=.+2 36 | symfin: .=.+2 37 | curfin: .=.+2 38 | dbfout: .=.+2 39 | ch: .=.+2 40 | lastop: .=.+2 41 | addres: .=.+2 42 | taddr: .=.+2 43 | adrflg: .=.+2 44 | fpsr: .=.+2 45 | och: .=.+2 46 | dot: .=.+2 47 | count: .=.+2 48 | syscnt: .=.+2 49 | temp: .=.+2 50 | temp1: .=.+2 51 | obuf: .=.+8. 52 | inbuf: .=.+128. 53 | nambuf: .=.+20 54 | 55 | -------------------------------------------------------------------------------- /unix_v1/patches/core/ecore.patch: -------------------------------------------------------------------------------- 1 | --- rebuilt/u0.s Mon May 5 17:57:35 2008 2 | +++ build/u0.s Mon May 5 17:57:54 2008 3 | @@ -43,7 +43,7 @@ 4 | .endif 5 | 6 | core = orig+40000 / specifies beginning of user's core 7 | -ecore = core+20000 / specifies end of user's core (4096 words) 8 | +ecore = core+40000 / specifies end of user's core (4096 words) 9 | 10 | 4;4 / init by copy 11 | unkni;0 / " error 12 | @@ -159,9 +162,9 @@ 13 | 14 | mov $1024.-64.,r1 / highest drum address; high 64 blks allocated 15 | / to UNIX 16 | - mov $p.dska,r2 / p.dska contains dis addresses for processes 17 | + mov $p.dska,r2 / p.dska contains disk addresses for processes 18 | 1 : 19 | - sub $17.,r1 / 17 blocks per process 20 | + sub $33.,r1 / 33 blocks per process, allows 16K per process 21 | mov r1,(r2)+ 22 | cmp r2,$p.dska+nproc+nproc 23 | bne 1b 24 | -------------------------------------------------------------------------------- /unix_v6/s1/ln.c: -------------------------------------------------------------------------------- 1 | # 2 | /* 3 | * ln target [ new name ] 4 | */ 5 | 6 | struct ibuf { 7 | int inum; 8 | int iflags; 9 | char inl; 10 | char iuid; 11 | int isize; 12 | int iaddr[8]; 13 | char *ictime[2]; 14 | char *imtime[2]; 15 | int fill; 16 | }; 17 | 18 | #define DIR 040000 19 | #define FMT 060000 20 | 21 | main(argc, argv) 22 | char **argv; 23 | { 24 | static struct ibuf statb; 25 | register char *np; 26 | 27 | if (argc<2) { 28 | write(1, "Usage: ln target [ newname ]\n", 29); 29 | exit(1); 30 | } 31 | if (argc==2) { 32 | np = argv[1]; 33 | while(*np++); 34 | while (*--np!='/' && np>argv[1]); 35 | np++; 36 | argv[2] = np; 37 | } 38 | stat(argv[1], &statb); 39 | if ((statb.iflags&FMT) == DIR) { 40 | write(1, "No directory link\n", 18); 41 | exit(1); 42 | } 43 | if (link(argv[1], argv[2])<0) { 44 | write(1, "Can't link\n", 11); 45 | exit(1); 46 | } 47 | exit(0); 48 | } 49 | -------------------------------------------------------------------------------- /unix_v1/pages/e00-06: -------------------------------------------------------------------------------- 1 | rtssym: 2 | mov r0,-(sp) 3 | mov r1,-(sp) 4 | mov 4(sp),r0 5 | mov -(r0),r0 6 | bic $!7,r0 7 | asl r0 8 | jmp *1f(r0) 9 | 1: 10 | 0f;1f;2f;3f;4f;5f;badrts;7f 11 | 0: 12 | mov 2(sp),r0 13 | br 1f 14 | 2: 15 | mov r2,r1 16 | br 1f 17 | 3: 18 | mov r3,r1 19 | br 1f 20 | 4: 21 | mov r4,r1 22 | br 1f 23 | 5: 24 | mov r5,r1 25 | br 1f 26 | 7: 27 | mov 8.(sp),r1 28 | 1: 29 | cmp r1,$core 30 | blo badrts 31 | cmp r1,$ecore 32 | bhis badrts 33 | bit $1,r1 34 | bne badrts 35 | tst (r1) 36 | beq badrts 37 | add $1f,r0 38 | mov r0,4(sp) 39 | mov (sp)+,r1 40 | mov (sp)+,r0 41 | rti 42 | 1: 43 | rts r0 44 | rts r1 45 | rts r2 46 | rts r3 47 | rts r4 48 | rts r5 49 | rts sp 50 | rts pc 51 | 52 | badrts: 53 | mov (sp)+,r1 54 | mov (sp)+,r0 55 | rpsym: 56 | -------------------------------------------------------------------------------- /unix_v1/patches/core/fastout.patch: -------------------------------------------------------------------------------- 1 | --- rebuilt/u4.s Mon May 5 21:40:27 2008 2 | +++ build/u4.s Mon May 5 21:39:35 2008 3 | @@ -214,13 +214,14 @@ 4 | bne 1f 5 | movb $15,ttyoch / put a cr in ttyoch 6 | 1: 7 | - cmp r1,$11 / char = ht 8 | - bne 1f 9 | - movb $15.,toutt+0 / set time out to 15 clock tics 10 | + / output delays removed, we don't have mechanical ttys, May 5 2008 11 | + / cmp r1,$11 / char = ht 12 | + / bne 1f 13 | + / movb $15.,toutt+0 / set time out to 15 clock tics 14 | 1: 15 | - cmp r1,$15 / char = cr 16 | - bne 2f 17 | - movb $15.,toutt+0 / set time out to 15 clock ticks 18 | + / cmp r1,$15 / char = cr 19 | + / bne 2f 20 | + / movb $15.,toutt+0 / set time out to 15 clock ticks 21 | 2: 22 | rts r0 23 | pptito: / paper tape input touts subrouting 24 | -------------------------------------------------------------------------------- /unix_v1/boot/m792low.s: -------------------------------------------------------------------------------- 1 | / UNIX bootstrap ROM, based on BOOT PROCEDURES (VII) 11/3/71 2 | 3 | . = 73700 4 | 5 | / 173700 -- load bos from 1700000 of rf0 (RF11) 6 | 7 | mov $177472,r0 8 | mov $3,-(r0) / rf11.dae.ta[6:5] = 3 9 | mov $140000,-(r0) / rf11.dar = 140000 10 | mov $54000,-(r0) / rf11.cma = 54000 11 | mov $-2000,-(r0) / rf11.wc = -2000 (1K words) 12 | mov $5,-(r0) / rf11.dcs = read,go 13 | tstb (r0) / done? 14 | bge .-2 / no, loop 15 | jmp *$54000 / jump to bos 16 | 17 | / 173740 -- load from tap0 (TC11 DECtape) 18 | 19 | mov $177350,r0 20 | clr -(r0) / tc11.tcba = 0 21 | mov r0,-(r0) / tc11.tcwc = 177346 (282. bytes) 22 | mov $3,-(r0) / tc11.tccm = rnum,do 23 | tstb (r0) / done? 24 | bge .-2 / no, loop 25 | tst *$177350 / block 0? 26 | bne . / no, loop forever 27 | movb $5,(r0) / tc11.tccm = rdata,do 28 | tstb (r0) / done? 29 | bge .-2 / no, loop 30 | clr pc / jump to location 0 31 | -------------------------------------------------------------------------------- /unix_v1/boot/m792uv1.s: -------------------------------------------------------------------------------- 1 | / UNIX bootstrap ROM, based on BOOT PROCEDURES (VII) 11/3/71 2 | 3 | . = 173700 4 | 5 | / 173700 -- load bos from 1700000 of rf0 (RF11) 6 | 7 | mov $177472,r0 8 | mov $3,-(r0) / rf11.dae.ta[6:5] = 3 9 | mov $140000,-(r0) / rf11.dar = 140000 10 | mov $54000,-(r0) / rf11.cma = 54000 11 | mov $-2000,-(r0) / rf11.wc = -2000 (1K words) 12 | mov $5,-(r0) / rf11.dcs = read,go 13 | tstb (r0) / done? 14 | bge .-2 / no, loop 15 | jmp *$54000 / jump to bos 16 | 17 | / 173740 -- load from tap0 (TC11 DECtape) 18 | 19 | mov $177350,r0 20 | clr -(r0) / tc11.tcba = 0 21 | mov r0,-(r0) / tc11.tcwc = 177346 (282. bytes) 22 | mov $3,-(r0) / tc11.tccm = rnum,do 23 | tstb (r0) / done? 24 | bge .-2 / no, loop 25 | tst *$177350 / block 0? 26 | bne . / no, loop forever 27 | movb $5,(r0) / tc11.tccm = rdata,do 28 | tstb (r0) / done? 29 | bge .-2 / no, loop 30 | clr pc / jump to location 0 31 | -------------------------------------------------------------------------------- /unix_v6/mdec/mcopy.s: -------------------------------------------------------------------------------- 1 | / copy mag tape to disk 2 | / load with proper tape and disk drivers 3 | 4 | jsr pc,rew 5 | 2: 6 | jsr pc,4(r5) 7 | 8 | .even 9 | jsr pc,numb 10 | mov r0,dska 11 | jsr pc,4(r5) 12 | 13 | .even 14 | jsr pc,numb 15 | mov r0,tapa 16 | jsr pc,4(r5) 17 | 18 | .even 19 | jsr pc,numb 20 | mov r0,r2 21 | 1: 22 | jsr pc,tread 23 | jsr pc,wblk 24 | inc tapa 25 | inc dska 26 | dec r2 27 | bne 1b 28 | jsr pc,rew 29 | rts pc 30 | 31 | numb: 32 | clr r1 33 | 1: 34 | jsr pc,2(r5) 35 | cmp r0,$'\n 36 | beq 1f 37 | sub $'0,r0 38 | cmp r0,$9 39 | bhi 2f 40 | mul $10.,r1 41 | add r0,r1 42 | br 1b 43 | 1: 44 | mov r1,r0 45 | rts pc 46 | 2: 47 | jsr pc,4(r5) 48 | 49 | .even 50 | tst (sp)+ 51 | rts pc 52 | 53 | ba: buf 54 | wc: -256. 55 | .bss 56 | buf: .=.+512. 57 | dska: .=.+2 58 | tapa: .=.+2 59 | .text 60 | -------------------------------------------------------------------------------- /unix_v1/pages/e06-06: -------------------------------------------------------------------------------- 1 | mov u.base,r1 / address of data is in r1 2 | neg r3 / 512 - file offset (mod512.) in r3 (i.e., the number 3 | / of free bytes in the file block 4 | cmp r3,u.count / compare this with the number of data bytes to 5 | / be written to the file 6 | blos 2f / if less than branch. Use the number of free bytes 7 | / in the file block as the number to be written 8 | mov u.count,r3 / if greater than, use the number of data bytes 9 | / as the number to be written 10 | 2: 11 | add r3,u.nread / r3 + number of bytes xmitted during write is 12 | / put into u.nread 13 | sub r3,u.count / u.count = no. of bytes that still must be 14 | / written or read 15 | add r3,u.base / u.base points to the 1st of the remaining data 16 | / bytes 17 | add r3,*u.fofp / new file offset = number of bytes done + old 18 | / file offset 19 | rts r0 20 | 21 | -------------------------------------------------------------------------------- /unix_v6/s2/tee.c: -------------------------------------------------------------------------------- 1 | int open[9] { 1 }; 2 | int n 1; 3 | int t 0; 4 | 5 | char in[512]; 6 | 7 | char out[512]; 8 | 9 | main(argc,argv) 10 | char **argv; 11 | { 12 | int register r,w,p; 13 | struct { int x1[2], type, x2[15]; } buf; 14 | fstat(1,&buf); 15 | t = (buf.type&060000)==020000; 16 | while(argc-->1) { 17 | open[n++] = creat(argv[1],0666); 18 | if(stat(argv[1],&buf)>=0) 19 | if((buf.type&060000)==020000) 20 | t++; 21 | argv++; 22 | } 23 | r = w = 0; 24 | for(;;) { 25 | for(p=0;p<512;) { 26 | if(r>=w) { 27 | if(t>0&&p>0) break; 28 | w = read(0,in,512); 29 | r = 0; 30 | if(w<=0) { 31 | stash(p); 32 | return; 33 | } 34 | } 35 | out[p++] = in[r++]; 36 | } 37 | stash(p); 38 | } 39 | } 40 | 41 | stash(p) 42 | { 43 | int k; 44 | int i; 45 | int d; 46 | d = t ? 10 : p; 47 | for(i=0; i 47 | emes: 48 | tap0: 49 | tap1: 50 | rf: 51 | std0: 52 | .even 53 | 54 | buf: .=.+512. 55 | --------------------------------------------------------------------------------