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:
parent
d21be1ef5e
commit
f79c840126
54
pages/e08-01
Normal file
54
pages/e08-01
Normal 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 #
|
||||
Loading…
x
Reference in New Issue
Block a user