/ u8 -- unix rtap: / read from the dec tape asr r1 / divide the i-number by 2 sub $4.,r1 / (i-number/2)-4 r1 mov r1,cdev / cdev now has device number jsr r0,bread; 578. / read in block thats in *u.fofp wtap: asr r1 / divide i-number by 2 sub $4.,r1 / r1 = i-number minus 4 mov r1,cdev / this is used as the device number jsr r0,bwrite; 578. / write block (u.fofp) on dec tape / Maximum rrk0: mov $1,cdev / set current device to i., disk jsr r0,bread; 4872. / read block from disk (maximum block / number allowed on device is 4872.) / - (u.fofp) contains block number wrk0: mov $1,cdev / set current device to 1; disk jsr r0,bwrite; 4872. / write block (u.fofp) on disk rrf0: clr cdev / set current device to 0., fixed head disk jsr r0,bread; 1024. / read block (u.fofp) from fixed head / disk (max. block number allowed on / device is 1024.) wrf0: clr cdev / set current device to 0., fixed head disk jsr r0,bwrite; 1024. / write block '(u.fofp)' on fixed head / disk bread: / read a block from a block structured device jsr r0,tstdeve / error on special file I/O (only works on / tape) mov *u.fofp,r1 / move block number to r1 mov $2.-cold,-(sp) / "2-cold" to stack 1: cmp r1,(r0) / is this block # greater than or equal to / maximum block # allowed on device bhis 1f / yes, 1f (error) mov r1,-(sp) / no, put block # on stack jsr r0,preread / read in the block into an I/O buffer mov (sp)+,r1 / return block # to r1 inc r1 / bump block # to next consecutive block dec (sp) / "2-1-cold" on stack bgt 1b / 2-1-cold = 0? No, go back and read in next block 1: tst (sp)+ / yes, pop stack to clear off cold calculation mov *u.fofp,r1 / restore r1 to initial value of the / block #