cmpb i.uid,u.uid / is user same as owner of file bne 1f / no, then branch asrb r2 / shift owner read write bits into non owner / read/write bits asrb r2 1: bit r2,(r0)+ / test read-write flags against argument in / access call bne 1f tstb u.uid beq 1f jmp error 1: rts r0 setimod: movb $1,imod / set current i-node modified bytes mov s.time,i.mtim / put present time into file modified time mov s.time+2,i.mtim+2 rts r0 imap: / get the byte that has the allocation bit for the i-number contained / in r1 mov $1,mq / put 1 in the mq mov r1,r2 / r2 now has i-number whose byte in the map we / must find sub $41.,r2 / r2 has i-41 mov r2,r3 / r3 has i-41 bic $!7,r3 / r3 has (i-41) mod 8 to get the bit position mov r3,lsh / move the 1 over (i-41) mod 8 positions to the left / to mask the correct bit asr r2 asr r2 asr r2 / r2 has (i-41) base 8 of the byte no. from the start of / the map mov r2,-(sp) / put (i-41) base 8 on the stack mov $systm,r2 / r2 points to the in-core image of the super / block for drum tst cdev / is the device the disk beq 1f / yes add $mount-systm,r2 / for mounted device, r2 points to 1st word / of its super block 1: add (r2)+,(sp) / get byte address of allocation bit add (sp)+,r2 / ? add $2,r2 / ? rts r0 iget: cmp r1,ii / r1 = i-number of current flle bne 1f cmp idev,cdev / is device number of i-node = current device beq 2f 1: tstb imod / has i-node of current file been modified i.e., / imod set