DataMuseum.dk

Presents historical artifacts from the history of:

CP/M

This is an automatic "excavation" of a thematic subset of
artifacts from Datamuseum.dk's BitArchive.

See our Wiki for more about CP/M

Excavated with: AutoArchaeologist - Free & Open Source Software.


top - download

⟦13de4994f⟧ TextFile

    Length: 5888 (0x1700)
    Types: TextFile
    Names: »XRAY.PAS«

Derivation

└─⟦ba3b4f658⟧ Bits:30003088 Xray: elevopgave i Pascal, feb 92
    └─ ⟦this⟧ »XRAY.PAS« 

TextFile


 program RONT;  (* jan 1992 *)
 (*$I xybasis *)
 (*$I xyfysik *)
 (*$I xygraf  *)
 (* programmet kan kun compiles til en com-fil, det er for stort. *)
 const d =201.38;
 VAR    datafil  : file of real;
        dobvink,antal,i,j,k,minv,maxv,hold : integer;
        impuls,vinkel,deltavinkel,tid,l,xmax,ymax  : real;
        ch,slet : char;
        z  : intarray;
        x,y : realarray;
        filnavn : string(.8.);
        svar : char;
        filfejl : boolean;

 BEGIN
    write(chr(12));
    gotoxy(10,5);write('Angiv et navn til datafilen : ');
    repeat
      gotoxy(45,5);write('          ');
      gotoxy(45,5);readln(filnavn);
      assign(datafil,filnavn+'.DAT');
      (*$I-*) reset(datafil);(*$I+*)
      filfejl:=iores>0;
      if filfejl then begin
         gotoxy(10,7);
         write('Skal en ny fil oprettes (J/N) ? ');
         repeat
           read(kbd,svar);
         until svar in (.'J','j','N','n'.);
         if svar in (.'J','j'.) then begin
            (*$I-*) rewrite(datafil);(*$I+*)
             if iores>0 then
                 writeln('Ikke mere plads på disketten!!')
             else
                filfejl:=false;
          end;
      end;
    until not filfejl;
    write(chr(12));
   REPEAT
     WRITE(CHR(12));
     WRITELN('        ****  RØNTGENSPEKTRUM  ****');WRITELN;
     writeln('        0)  Slette gamle datafiler.');writeln;
     WRITELN('        1)  Optage oversigtspektrum (0.50 grader)');
     writeln;
     writeln('        2)  Optage finspektrum (0.25 grader)');
     writeln;
     writeln('        3)  Udskrive data på SKÆRM.');
     writeln;
     writeln('        4)  Udskrive data på PRINTER.');
     writeln;
     writeln('        5)  Tegning af graf på plotter.');writeln;
     writeln('        6)  Stop.');
     
     writeln;
       write('            Vælg et tal (0,1,2,3,4,5,6) -->  ');
     repeat read(KBD,ch) until ch in (.'0'..'6' .);writeln(ch);
     CASE ch OF
     '0' : begin
             write(chr(12));
             gotoxy(10,10);
             write('Er det ok at slette gamle data? (J/N)');
             repeat read(KBD,slet) until slet in (.'J','j','N','n'.);
             if slet in (.'J','j'.) then begin
               rewrite(datafil);
               close(datafil);
             end;
           end;
     '1','2' : BEGIN 
           if ch='1' then deltavinkel:=0.5 else deltavinkel:=0.25;
          write(chr(12));
	  if length(datafil)>2 then begin
		reset(datafil);
		read(datafil,tid,deltavinkel);
		writeln('Datafilen indeholder ',length(datafil)-2,' måletal');
		writeln;
	  end else begin
		
            write(' Angiv mindste vinkel for måling (helt tal) '); readln(minv);
            write(' Angiv største vinkel for måling (helt tal) '); readln(maxv);
            writeln;
	    write(' Angiv tælletiden i sekunder ( helt tal ) ');readln(tid);
       	    writeln;
	    rewrite(datafil); write(datafil,tid,deltavinkel);
	  end;
          tristate;
          writeln;
          writeln(' Tryk på en tast hver gang en ny måling skal laves.');
          writeln;
          vinkel:=minv;
	  repeat
		
              write(' Vinkel :',vinkel:6:2);
              read(KBD,ch);
              impulsclk(z,round(tid));
              impuls:=0;
              for j:=0 to round(tid)-1 do impuls:=impuls+z(.j.);
              writeln('        Antal impulser :',impuls:8:0);
              reset(datafil); seek(datafil, length(datafil) );
              write(datafil,vinkel,impuls);
              close(datafil);
	      vinkel:=vinkel+deltavinkel;
          until vinkel>maxv;
          tristate;
          end;
    '3' : BEGIN
            reset(datafil);read(datafil,tid,deltavinkel);
            write( chr(12) ); writeln; writeln; writeln;
            writeln(CON,'         Tælletid :',tid:5,' sekunder.');
            writeln(CON);
            writeln(CON,'      Vinkel    Bølgelængde    Impulser');
            writeln(CON,'      =================================');
            writeln(CON);
            WHILE NOT EOF(datafil) DO BEGIN
               READ(datafil,vinkel,impuls);
               l:=2*d*sin(vinkel*PI/180);
               writeln(CON,vinkel:11:2,l:12:1,impuls:13:0);
            END;
            close(datafil);
          writeln; writeln('Tast <RETUR> '); readln( ch );
          END;
    '4' : BEGIN
            reset(datafil);read(datafil,tid,deltavinkel);
            writeln(LST,'        Tælletid  ',tid:5:0,' sekunder   ');
            writeln(LST);
            writeln(LST,'      Vinkel    Bølgelængde    Impulser');
            writeln(LST,'      =================================');
            writeln(LST);
            WHILE NOT EOF(datafil) DO BEGIN
               READ(datafil,vinkel,impuls);
               l:=2*d*sin(vinkel*PI/180);
               writeln(LST,vinkel:11:2,l:12:1,impuls:13:0);
            END;
            close(datafil);
          END;
      '6' : (* så stopper vi *) ;
      '5' : begin
              reset(datafil);read(datafil,tid,deltavinkel);antal:=0;
              while not eof(datafil) do begin
                read(datafil,vinkel,impuls);
                l:=2*d*sin(vinkel*pi/180);
                x(.antal.):=l;y(.antal.):=impuls;
                antal:=antal+1;
              end;
              close(datafil);
              ymax:=0;
              for i:=0 to antal-1 do 
                 if ymax<y(.i.) then ymax:=y(.i.);
              xmax:=x(.antal-1.);
              for i:=0 to antal-1 do
                  if xmax<x(.i.) then xmax:=x(.i.);
              plotstart;
              tegnkurve(x,y,antal,0,xmax,0,ymax);
              plotslut;
            end;
    END;
 UNTIL ch = '6';
 END.
 «eof»