program Smartwork_File_To_Pad_Coordinate_File_Transformer;
const cell=1.27;
label zacetek;
type name = string[66];
var
infile:file of byte; { vhodna datoteka }
OutFile:text; { izhodna text datoteka}
infilename,outfilename:name; { imena vhodnih in izhodnih datotek}
Xcellsize,Ycellsize:integer; { velikost tiskanega vezja v celicah}
num,LeftByte,rightByte:byte; {splosne spremenlivke iz vhodne datoteke}
x,y,n,padnr:integer; {general variables,X/Y poz in st. luknje}
OK:boolean;
vrsta:string[80];
function Exist(filename:name): Boolean; {ali obstaja datoteka na disku}
Var
fil:file;
IOr:byte;
begin
Assign(Fil,Filename);
{$I-}
reset(Fil);
{$I+}
IOr:=Ioresult;
if IOr = 1 then
begin
Sound(440);
GotoXY(1,25);
Write('Datoteke ni mozno najti !');
Delay(1000);
Nosound;
GotoXY(1,25);
write(' ')
end;
Exist := (IOr = 0);
end;
procedure naprej(step:byte); {premik naprej po infile}
begin
for n:=1 to step do read(Infile,num);
end;
function Word:integer; {vzame dvobyten zlog iz infile}
var buff:integer;
begin
read(InFile,num);
buff:=256*num;
read(InFile,num);
word:=buff+num
end;
procedure getbyte; {vzame levi ni desni del byta iz infile}
begin
read(infile,num);
leftbyte := num div 16;
rightbyte:= num mod 16;
end;
function FilenameOK(filename:name):boolean; { kontrola pravilnosti sintakse za}
label konec; { ime datoteke}
var n:integer;
OK:boolean;
begin
n:=1;
OK:=FALSE;
if length(filename)=0 then goto konec;
repeat
case copy(filename,n,1) of
'a'..'z' :OK:=true;
'A'..'Z' :OK:=true;
'0'..'9' :OK:=true;
'.' :OK:=true;
':' :OK:=true;
'\' :OK:=true;
' ' :OK:=true;
else OK:=FALSE
end;
n:=n+1;
until ( n > Length(filename) ) or NOT OK ;
konec:
if not OK then
begin
sound(500);
delay(600);
Nosound
end;
FilenameOK := OK;
end;
begin {ZACETEK GLAVNEGA PROGRAMA}
zacetek:
ClrScr;
writeln('SMARTWORK > PAD coordinate transformer');
writeln;
writeln('(C) Copyright Leon Kos 1988');
writeln;
repeat
GotoXY(1,5);
write('Ime vhodne datoteke : ');
GotoXY(22,5);
read(Infilename);
until Exist (Infilename) and FilenameOK(InFileName);
repeat
GotoXY(1,7);
write('Ime izhodne datoteke:' );
write(' ');
GotoXY(22,7);
read(Outfilename);
Until FilenameOK(OutfileName);
assign(infile,Infilename); {kontrola in datoteke}
reset(Infile);
OK:=true;
read(Infile,num); if chr(num) <> 'p' then OK:=false;
read(Infile,num); if chr(num) <> 'w' then OK:=false;
read(Infile,num); if chr(num) <> 'b' then OK:=false;
read(Infile,num); if chr(num) <> 'c' then OK:=false;
If OK then begin end else
begin
writeln;
writeln;
writeln(Infilename,' ni SMARTWORK datoteka !');
repeat until keypressed;
goto zacetek
end;
naprej(5);
XcellSize:=Word;
YcellSize:=Word;
writeln;
writeln;
write('Minimalna velikost tiskanega vezja je ');
writeln((XcellSize-1)*cell:6:2,' x ',YcellSize*cell:6:2,' [mm]');
assign(outfile,Outfilename);
rewrite(outfile);
naprej(3);
padnr:=1;
window(1,11,80,19);
GotoXY(1,1);
for y:=0 to YcellSize-1 do
begin
x:=0;
repeat
getbyte;
if leftbyte = 14 then
begin
writeln(' ³ ',padnr:5,' ³ ',x*cell:10:2,y*cell:10:2,' [mm]');
writeln(Outfile,' ³ ',padnr:5,' ³ ',x*cell:10:2,y*cell:10:2);
padnr:=padnr+1 { oblika izpisa za v OUT datoteko}
end;
if rightbyte = 14 then
begin
writeln(' ³ ',padnr:5,' ³ ',(x+1)*cell:10:2,y*cell:10:2,' [mm]');
writeln(Outfile,' ³ ',padnr:5,' ³ ',(x+1)*cell:10:2,y*cell:10:2);
padnr:=padnr+1
end;
x:=x+2
until x >= Xcellsize
end;
close(infile);
close(Outfile);
writeln;
writeln('Skupno',padnr-1:6,' lukenj na tiskanem vezju ',InFileName);
writeln;
writeln(' ÉÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍ»');
writeln(' º Transformacija koncana ! º');
writeln(' ÈÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍͼ');
for n:=1 to 3 do
begin
writeln;
sound(random(800)+200);
delay(random(600)+500);
end;
NoSound;
end.