From f79c8401266915edb72ce90bab34d100ee3ccc41 Mon Sep 17 00:00:00 2001 From: grey Date: Fri, 25 Apr 2008 01:56:45 +0000 Subject: [PATCH] added first page from section 8 and testing google's svn --- pages/e08-01 | 54 ++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 54 insertions(+) create mode 100644 pages/e08-01 diff --git a/pages/e08-01 b/pages/e08-01 new file mode 100644 index 0000000..d0abb63 --- /dev/null +++ b/pages/e08-01 @@ -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 #