X-Git-Url: http://git.subgeniuskitty.com/unix-history/.git/blobdiff_plain/31764ff8b30309dc3f8016015d8086812152f43d..69f28986ad97c1e3d55279d696d1884c963f530e:/ds.s diff --git a/ds.s b/ds.s new file mode 100644 index 0000000000..2aa0f93ee4 --- /dev/null +++ b/ds.s @@ -0,0 +1,501 @@ +" ds + + lac 017777 i + sad d8 + skp + sys exit + lac 017777 + tad d5 + dac .+3 + law 017 + sys creat; .. + dac fo + law 017 + sys creat; scrname + spa; jms error + dac fso + sys open; scrname; 0 + spa; jms error + dac fsi + sys chdir; dd + spa; jms error + lac d1 + sys write; pass1; 1 + law fsobuf + dac fsopt + dzm nfiles + law fbuf + dac filp + dzm ndirs + law dbuf + dac dirp + dzm fsloc + sys open; dotdot; 0 + spa; jms error + dac fd + jms readdir; dotdot + law statbuf + sys status; dotdot; dotdot + spa; jms error + lac statbuf+12 " i index + dac dirp i + isz dirp + -1 + tad nfiles + cma + dac ddfiles + law fbuf + dac ddfilp + +loop: + -1 + tad ndirs + cma + dac c1 + law dbuf + dac i1 + +1: + isz i1 + lac i1 i + sad ddfilp i + jmp 2f + isz i1 + isz c1 + jmp 1b + + lac ddfilp + tad i1 + dac i1 + lac i1 i + dac .+3 + lac fsi + sys seek; ..; 0 + lac fsi + sys read; scrname; 4 + law statbuf + sys status; dotdot; scrname + spa; jms error + lac statbuf+0 " flags + and o20 + sna + jmp 2f + sys open; scrname; 0 + spa; jms error + dac fd + jms readdir; scrname + lac ddfilp i + dac dirp i + isz dirp + +2: + isz ddfilp + isz ddfilp + isz ddfiles + jmp loop + +" output phase + + lac fso + sys write; fsobuf; 64 + lac d1 + sys write; pass2; 2 + -500 + dac c1 + +1: + law dbuf+2 + dac i1 + dzm fflg + law fbuf + dac i2 + r1 + tad nfiles + cma + dac c2 + +2: + lac c1 + tad d501 + sad i2 i + skp + jmp 3f + -1 + tad i1 + dac i3 + iac i3 i + dac c3 + law fbuf + dac i3 +0: + lac i3 i + sad c3 + jmp 0f + isz i3 + isz i3 + jmp 0b +0: + lac i3 + tad d1 + dac c3 + lac c3 i + dac .+3 + lac fsi + sys seek; ..; 0 + lac fsi + sys read; scrname; 4 + lac i2 + tad d1 + dac c3 + lac c3 i + dac .+3 + lac fsi + sys seek; ..; 0 + lac fsi + sys read; dd; 4 + lac fflg + sza + jmp 0f + + lac nlinkt + sad nlinka + skp + jms fishy + dzm nlinka + law 012 + jms putc + law statbuf + sys status; scrname; dd + spa; jms error + -1 + tad statbuf+9 + cma + dac nlinkt + -1 + dac fflg + jms longout + law 012 + jms putc +0: + isz nlinka + jms putname; scrname + jms putname; dd + law 012 + jms putc + +3: + isz i2 + isz i2 + lac i2 + sad i1 i + skp + jmp .+3 + isz i1 + isz i1 + isz c2 + jmp 2b + + isz c1 + jmp 1b + lac nlinkt + sad nlinka + skp + jms fishy + + sys chdir; system + jmp done + +fishy: 0 + jms asters + jms asters + law 012 + jms putc + lac d1 + sys write; 1f; 1 + jmp fishy i +1: 052012 + +nlinka: 0 +nlinkt: 0 + +asters: 0 + -10 + dac c +1: + law 052 + jms putc + isz c + jmp 1b + jmp asters i + +longout: 0 + lac statbuf+12 " i + jms octal; -3 + lac statbuf+0 " flags + jms octal; -2 + lac statbuf+8 " uid + jms octal; -2 + -1 + tad statbuf+9 " nlinks + cma + jms octal; -2 + lac statbuf+10 + jms octal; -5 + jmp longout i + +readdir: 0 + law 012 + jms putc + law 012 + jms putc + jms asters + lac readdir i + dac 5f + dac .+2 + jms putname; .. + jms asters + law 012 + jms putc + law 012 + jms putc + isz readdir + isz ndirs + lac filp + dac dirp i + isz dirp +0: + jms copyz; buf; 64 + lac fd + sys read; buf; 64 + spa; jms error + sna + jmp 4f + -8 + dac c1 + law buf + dac i1 +1: + lac i1 i + sna + jmp 3f + + isz nfiles + dac filp i + isz filp + lac fsloc + dac filp i + tad d4 + dac fsloc + isz filp + lac i1 + tad d1 + dac .+4 + law statbuf + sys status; 5:..; .. + spa; jms error + jms longout + lac i1 + tad d1 + dac .+2 + jms putname; .. + law 012 + jms putc + lac i1 + dac 8 + lac 8 i + dac fsopt i + isz fsopt + lac 8 i + dac fsopt i + isz fsopt + lac 8 i + dac fsopt i + isz fsopt + lac 8 i + dac fsopt i + isz fsopt + law fsobuf+64 + sad fsopt + skp + jmp 3f + lac fso + sys write; fsobuf; 64 + law fsobuf + dac fsopt + +3: + law 8 + tad i1 + dac i1 + isz c1 + jmp 1b + jmp 0b +4: + lac fd + sys close + jmp readdir i + +putname: 0 + -1 + tad putname i + dac 8 + -4 + dac c +1: + lac 8 i + lrss 9 + jms putc + llss 9 + jms putc + isz c + jmp 1b + isz putname + jmp putname i + +octal: 0 + lmq + lac d5 + tad octal i + cma + dac c +1: + llss 3 + isz c + jmp 1b + lac octal i + dac c +1: + ecla llss 3 + tad o60 + jms putc + isz c + jmp 1b + law 040 + jms putc + isz octal + jmp octal i + +error: 0 + -1 + tad error + hlt + sys save + +copyz: 0 + -1 + tad copyz i + dac 8 + isz copyz + -1 + tad copyz i + cma + dac 2f + isz copyz +1: + dzm 8 i + isz 2f + jmp 1b + jmp copyz i +2: 0 + +done: + lac noc + sna + sys exit + and d1 + sna cla + jmp 1f + jms putc + jmp done +1: + lac noc + rcr + dac 1f + lac fo + sys write; obuf; 1;.. + sys exit + +putc: 0 + and o177 + dac 2f+1 + lac opt + dac 2f + add o400000 + dac opt + spa + jmp 1f + lac 2f i + xor 2f+1 + jmp 3f +1: + lac 2f+1 + alss 9 +3: + dac 2f i + isz noc + lac noc + sad d128 + skp + jmp putc i + lac fo + sys write; obuf; 64 + lac iopt + dac opt + dzm noc + jmp putc i +2: 0;0 +opt: obuf +iopt: obuf +noc: 0 +fo: 1 + +d1: 1 +o177: 0177 +o400000: 0400000 +d128: 128 +d4: 4 +d5: 5 +d8: 8 +o60: 060 +o20: 020 +d501: 501 + +dd: +
; 040040; 040040; 040040 +dotdot: + 056056; 040040; 040040; 040040 +system: + ;;; 040040 +scrname: + <*s>;;040040;040040 +pass2: +