summaryrefslogtreecommitdiff
path: root/app/baisy/2.2.1-schulis/src/block i-o
diff options
context:
space:
mode:
Diffstat (limited to 'app/baisy/2.2.1-schulis/src/block i-o')
-rw-r--r--app/baisy/2.2.1-schulis/src/block i-o52
1 files changed, 52 insertions, 0 deletions
diff --git a/app/baisy/2.2.1-schulis/src/block i-o b/app/baisy/2.2.1-schulis/src/block i-o
new file mode 100644
index 0000000..6ac925d
--- /dev/null
+++ b/app/baisy/2.2.1-schulis/src/block i-o
@@ -0,0 +1,52 @@
+PACKET diskblockioDEFINES readdiskblock,readdiskblockandcloseworkiferror,
+readdiskcluster,writediskblock,writediskblockandcloseworkiferror,
+writediskcluster,firstnondummydspage,blocknodumpmodus:BOOL VAR
+blocknodumpflag:=FALSE ;LET writenormal=0;INT CONST firstnondummydspage:=2;
+INT VAR error;PROC readdiskblock(DATASPACE VAR ds,INT CONST dspageno,INT
+CONST blockno):IF blocknodumpflagTHEN dump("READ ",blockno)FI ;checkrerun;
+readblock(ds,dspageno,eublock(blockno),error);IF error>0THEN lesefehler(error
+)FI .END PROC readdiskblock;PROC readdiskblock(DATASPACE VAR ds,INT CONST
+dspageno,REAL CONST blockno):IF blocknodumpflagTHEN dump("READ ",blockno)FI ;
+checkrerun;readblock(ds,dspageno,eublock(blockno),error);IF error>0THEN
+lesefehler(error)FI .END PROC readdiskblock;PROC
+readdiskblockandcloseworkiferror(DATASPACE VAR ds,INT CONST dspageno,INT
+CONST blockno):IF blocknodumpflagTHEN dump("READ ",blockno)FI ;checkrerun;
+readblock(ds,dspageno,eublock(blockno),error);IF error>0THEN closework;
+lesefehler(error)FI .END PROC readdiskblockandcloseworkiferror;PROC
+readdiskblockandcloseworkiferror(DATASPACE VAR ds,INT CONST dspageno,REAL
+CONST blockno):IF blocknodumpflagTHEN dump("READ ",blockno)FI ;checkrerun;
+readblock(ds,dspageno,eublock(blockno),error);IF error>0THEN closework;
+lesefehler(error)FI .END PROC readdiskblockandcloseworkiferror;PROC
+readdiskcluster(DATASPACE VAR ds,INT CONST firstdspageno,REAL CONST clusterno
+):IF blocknodumpflagTHEN dump("CLUSTER ",clusterno)FI ;INT VAR i;FOR iFROM 0
+UPTO sectorspercluster-1REP readdiskblock(ds,firstdspageno+i,blockno+real(i))
+PER .blockno:beginofcluster(clusterno).END PROC readdiskcluster;PROC
+lesefehler(INT CONST fehlercode):errorstop(fehlertext).fehlertext:SELECT
+fehlercodeOF CASE 1:"Diskettenlaufwerk nicht betriebsbereit"CASE 2:
+"Lesefehler"OTHERWISE "Lesefehler "+text(fehlercode)END SELECT .END PROC
+lesefehler;PROC writediskblock(DATASPACE CONST ds,INT CONST dspageno,INT
+CONST blockno):IF blocknodumpflagTHEN dump("WRITE",blockno)FI ;checkrerun;
+writeblock(ds,dspageno,writenormal,eublock(blockno),error);IF error>0THEN
+schreibfehler(error)FI .END PROC writediskblock;PROC writediskblock(
+DATASPACE CONST ds,INT CONST dspageno,REAL CONST blockno):IF blocknodumpflag
+THEN dump("WRITE",blockno)FI ;checkrerun;writeblock(ds,dspageno,writenormal,
+eublock(blockno),error);IF error>0THEN schreibfehler(error)FI .END PROC
+writediskblock;PROC writediskblockandcloseworkiferror(DATASPACE CONST ds,INT
+CONST dspageno,INT CONST blockno):IF blocknodumpflagTHEN dump("WRITE",blockno
+)FI ;checkrerun;writeblock(ds,dspageno,writenormal,eublock(blockno),error);
+IF error>0THEN closework;schreibfehler(error)FI .END PROC
+writediskblockandcloseworkiferror;PROC writediskblockandcloseworkiferror(
+DATASPACE CONST ds,INT CONST dspageno,REAL CONST blockno):IF blocknodumpflag
+THEN dump("WRITE",blockno)FI ;checkrerun;writeblock(ds,dspageno,writenormal,
+eublock(blockno),error);IF error>0THEN closework;schreibfehler(error)FI .END
+PROC writediskblockandcloseworkiferror;PROC writediskcluster(DATASPACE CONST
+ds,INT CONST firstdspageno,REAL CONST clusterno):IF blocknodumpflagTHEN dump(
+"CLUSTER ",clusterno)FI ;INT VAR i;FOR iFROM 0UPTO sectorspercluster-1REP
+writediskblock(ds,firstdspageno+i,blockno+real(i))PER .blockno:beginofcluster
+(clusterno).END PROC writediskcluster;PROC schreibfehler(INT CONST fehlercode
+):errorstop(fehlertext).fehlertext:SELECT fehlercodeOF CASE 1:
+"Diskettenlaufwerk nicht betriebsbereit"CASE 2:"Schreibfehler"OTHERWISE
+"Schreibfehler "+text(fehlercode)END SELECT .END PROC schreibfehler;PROC
+blocknodumpmodus(BOOL CONST status):blocknodumpflag:=statusEND PROC
+blocknodumpmodus;END PACKET diskblockio;
+