1
0
mirror of https://github.com/DoctorWkt/unix-jun72.git synced 2026-01-25 03:45:52 +00:00

added first page from section 8 and testing google's svn

This commit is contained in:
grey 2008-04-25 01:56:45 +00:00
parent d21be1ef5e
commit f79c840126

54
pages/e08-01 Normal file
View File

@ -0,0 +1,54 @@
/ u8 -- unix
rtap: / read from the dec tape
asr r1 / divide the i-number by 2
sub $4.,r1 / (i-number/2)-r 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 1., 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:
cpm r1,(r0) / is this block # greater than or equal to
/ maximum block # allowed on device
bhis if / yes, if (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 #