/ makdir -- make a directory sys getuid mov r0,uid mov sp,r5 tst (r5)+ loop: tst (r5)+ dec (sp) bgt 1f sys exit 1: mov (r5),r0 mov $buf1,r1 mov $buf2,r2 clr r3 1: movb (r0)+,r4 beq 2f movb r4,(r1)+ movb r4,(r2)+ cmpb r4,$'/ bne 1b mov r2,r3 br 1b 2: movb $'/,(r1)+ movb $'.,(r1)+ clrb (r1) mov $dot,dir tst r3 beq 1f mov $buf2,dir clrb (r3) cmp r3,$buf2+1 beq 1f clrb -(r3) / ??? 1: tstb uid beq 2f sys stat; dir:..; stbuf / status of parent dir bes error mov stbuf+4,r0 cmpb uid,stbuf+7 bne 1f ash $-6,r0 1: ror r0 ror r0 bcc error / no write permission in parent 2: mov (r5),0f sys makdir; 0:..; 140777; 0 bes error / prob already exists mov (r5),0f sys chown; 0:..; uid:.. mov (r5),0f sys link; 0:..; buf1 bes error movb $'.,(r1)+ clrb (r1) mov dir,0f sys link; 0:..; buf1 bec loop error: mov (r5),r0 mov r0,0f clr 0f+2 1: tstb (r0)+ beq 1f inc 0f+2 br 1b 1: mov $1,r0 sys write; 0:..; .. mov $1,r0 sys write; ques; 3 br loop dot: <.\0> ques: < ?\n> .even .bss buf1: .=.+100. buf2: .=.+100. stbuf: .=.+40.