Percom Block#
General Information
Author: Carsten Strotmann
Language: ACTION!
Compiler/Interpreter: ACTION!
;****************************** ;** ** ;** PHOENIX SOFTCREW ** ;** STANDARTROUTINEN ** ;** IO "IO.INC" ** ;****************************** MODULE BYTE track,stp,side,dens,stat,rate,x1,x2,drive CARD sect,byt BYTE ARRAY buffer($200) BYTE FUNC Inkey () BYTE atascii=$2FB,chasci=$2FC BYTE POINTER keydefp CARD keydef=$79 chasci=$FF keydefp=keydef DO ; UNTIL chasci#$FF OD keydefp==+chasci atascii=keydefp^ chasci=$FF RETURN (atascii) PROC siov=$E459 () ;------------------------------------- BYTE FUNC Sio (BYTE num,comnd,stats,tim,CARD buf,byt,sec) BYTE ddevic=$300, dunit=$301, dcomnd=$302, dstats=$303, dtimlo=$306 CARD dbuf=$304, dbyt=$308, daux=$30A ddevic=$31 dunit=num dcomnd=comnd dstats=stats dtimlo=tim dbuf=buf dbyt=byt daux=sec siov () ; ansprung der sioroutine RETURN (dstats) ;---------------------------------- PROC ReadPerc (BYTE drive) BYTE ARRAY P_Block (12) Sio (drive,$4E,$40,7,P_Block,$C,1) track=P_Block(0) stp =P_Block(1) sect =P_Block(2)*$100+P_Block(3) side =P_Block(4) dens =P_Block(5) byt =P_Block(6)*$100+P_Block(7) stat =P_Block(8) rate =P_Block(9) x1 =P_Block($A) x2 =P_Block($B) RETURN PROC ShowPerc () ReadPerc (drive) Print ("Track :") PrintBE (track) Print ("Step :") PrintBE (stp) Print ("Sides :") PrintBE (side) Print ("Density :") PrintBE (dens) Print ("Status :") PrintBE (stat) Print ("Transfer rate :") PrintBE (rate) Print ("X1 :") PrintBE (x1) Print ("X2 :") PrintBE (x2) Print ("Sectoren :") PrintCE (sect) Print ("Bytes pro Sec :") PrintCE (byt) PutE () RETURN PROC Convert () BYTE u FOR u=1 TO $F0 DO buffer(u)==-191 OD RETURN PROC ReadSec () BYTE drive=[1],tr,sec CARD smadr=$58,zaehl ReadPerc (drive) sec=7 tr=0 DO Inkey () sec==+1 IF sec=10 THEN sec=1 tr==+1 FI zaehl=tr*18+sec Print ("} Sector :") PrintCE (zaehl) Sio (drive,$52,$40,7,buffer,byt,zaehl) Convert () ; MoveBlock (smadr+80,buffer,$100) Print (buffer) UNTIL zaehl=1024 OD RETURN