X-Git-Url: http://git.subgeniuskitty.com/unix-history/.git/blobdiff_plain/31764ff8b30309dc3f8016015d8086812152f43d..69f28986ad97c1e3d55279d696d1884c963f530e:/s2.s diff --git a/s2.s b/s2.s new file mode 100644 index 0000000000..4ee69eacdb --- /dev/null +++ b/s2.s @@ -0,0 +1,328 @@ +" s2 + +.status: + jms arg + dac .+5 + jms arg + dac .+6 + lac u.cdir + jms namei; .. + jms error + jms namei; .. + jms error + jms iget + lac u.ac + and o17777 + jms betwen; o10000; o17762 + jms error + dac .+3 + jms copy; inode; ..; 12 + lac d.i + dac 9 i + jmp okexit + +.capt: + lac u.ac + dac u.dspbuf + jms movdsp + jmp sysexit + +.rele: + dzm u.dspbuf + law dspbuf + jms movdsp + jmp sysexit + +.chmod: + jms isown + lac u.ac + and o17 + lmq + lac i.flags + and o777760 + omq + dac i.flags + jms iput + jmp okexit + +.chown: + jms isown + lac u.ac + dac i.uid + jms iput + jmp okexit + +.getuid: + lac u.uid + dac u.ac + jmp sysexit + +.seek: + jms seektell + tad u.base + spa + jms error + lmq + lac f.flags + and d1 + sna + jmp 1f + lacq + jms betwen; d0; i.size + jms dacisize + jmp 2f +1: + lacq + jms betwen; d0; i.size + lac i.size +2: + dac f.badd + dac u.ac + jms fput + jmp sysexit + +.tell: + jms seektell + cma + tad d1 + tad u.base + dac u.ac + jmp sysexit + +.link: + jms arg + dac 0f + jms arg + dac 1f + jms arg + dac 2f + lac d4 + jms namei; 0:0 + jms error + jms namei; 1:0 + jms error + dac u.base + jms copy; 2:0; name; 4 + lac u.cdir + jms namei; name + skp + jms error + lac d1 + dac mode + jms access + jms dslot + lac u.base + jms iget + lac ii + dzm d.i + jms copy; name; d.name; 4 + lac i.uniq + dac d.uniq + -1 + tad i.nlks + dac i.nlks + jms iput + jms dput + jmp okexit + +.unlink: + jms argname + dac u.base + lac d1 + dac mode + jms access + dac d.i + jms dput + lac u.base + jms iget + isz i.nlks + jmp 1f + jms itrunc + dzm i.flags +1: + jms iput + jmp sysexit + +.setuid: + lac u.uid + sma + jms error + lac u.ac + dac u.uid + jmp sysexit + +.rename: + jms arg + dac 0f + jms arg + dac 1f + lac u.cdir + jms namei; 0:0 + jms error + lac d1 + dac mode + jms access + jms copy; 1:0; d.name; 4 + jmp okexit + +.time: + lac s.tim + dac u.ac + lac s.tim+1 + dac u.mq + jmp sysexit + +.chdir: + jms argname + jms iget + lac i.flags + and o20 + sna + jms error + lac ii + dac u.cdir + jmp okexit + +.open: + jms arg + dac 0f + jms arg + sza + lac d1 + sna + lac d2 + dac mode + lac u.cdir + jms namei; 0:0 + jms error + jms iget + jms access + lac i.flags + and o20 + sna + jmp open1 + lac mode + and d1 + sna + jmp open1 + lac u.uid + sma + jms error + jmp open1 + +.creat: + lac d1 + dac mode + jms arg + dac .+2 + jms copy; ..; name; 4 + lac u.cdir + jms namei; name + jmp 1f + jms iget + jms access + lac i.flags + and o20 + sna + jmp .+4 + lac u.uid + sma + jms error + jms itrunc + cla + jms dacisize + jmp open1 +1: + jms access + lac u.ac + and o17 + jms icreat +open1: + jms fassign + jms error + jmp sysexit + +.close: + jms finac + dzm f.flags + jms fput + jmp sysexit + +.read: + jms arg + and o17777 + dac u.base + jms arg + dac u.count + lac u.base + jms betwen; o10000; o17777 + jms error + tad u.count + jms betwen; u.base; o17777 + jms error + dac u.limit +1: + jms finac + lac f.flags + and d1 + sza + jms error + lac i.flags + and o40 + sna + jmp 1f + iof + lac ii + tad swr + dac .+1 + jmp .. i +1: + lac u.base + dac 1f+1 + lac u.count + dac 1f+2 + lac f.badd +1: + jms iread; ..; .. + jmp exitrw + +.write: + jms arg + and o17777 + dac u.base + jms arg + dac u.count + tad u.base + jms betwen; u.base; o17777 + jms error + dac u.limit + jms finac + lac f.flags + and d1 + sna + jms error + lac i.flags + and o40 + sna + jmp 1f + iof + lac ii + tad sww + dac .+1 + jmp .. i +1: + lac u.base + dac 1f+1 + lac u.count + dac 1f+2 + lac f.badd +1: + jms iwrite; ..; .. + +exitrw: + dac u.ac + tad f.badd + dac f.badd + jms iput + jms fput + jmp sysexit