mirror of
https://github.com/DoctorWkt/unix-jun72.git
synced 2026-02-01 14:32:40 +00:00
56 lines
1.7 KiB
Plaintext
56 lines
1.7 KiB
Plaintext
/ 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 #
|