home *** CD-ROM | disk | FTP | other *** search
/ Programmer 7500 / MAX_PROGRAMMERS.iso / PASCAL / MOVBITS.ZIP / MOVBTEST.PAS < prev   
Encoding:
Pascal/Delphi Source File  |  1986-07-01  |  2.7 KB  |  86 lines

  1. program movbtest; {program to test movbits.bin}
  2.  
  3.  type
  4.   str1 = string[1];
  5.   str4 = string[4];
  6.  
  7.  var
  8.   src,targ0,targf,chek0,chekf,cheks:array [0..9] of integer;stb:char;
  9.   srcbit,targbit,nobits,i,j,k,l,m,n:integer;
  10.  
  11.  function hex4(val:integer):str4;
  12.   var i:integer;chb:char;
  13.  
  14.   function hex1(val:integer):str1;
  15.    begin
  16.     i:=val and 15;
  17.     hex1:='*'; { be sure it has a valid length byte }
  18.     if (i>=0) and (i<=9) then chb:=chr(i+ord('0'))
  19.                          else chb:=chr(i-10+ord('A'));
  20.     hex1:=chb;
  21.    end; { hex1 }
  22.  
  23.   begin { hex4 }
  24.    hex4:=hex1(val shr 12)+
  25.          hex1(val shr 8)+
  26.          hex1(val shr 4)+
  27.          hex1(val);
  28.   end; { hex4 }
  29.  
  30.  procedure movbits(targseg,targoff,targbit,srcseg,srcoff,srcbit,
  31.                    nobits:integer); external 'c:.\movbits.bin';
  32.  
  33.  begin
  34.   clrscr;
  35.   randomize;
  36.   repeat
  37.    write('Enter source bit no.   ');readln(srcbit);
  38.    write('Enter target bit no.   ');readln(targbit);
  39.    write('Enter no. bits to move ');readln(nobits);
  40.  
  41.    for i:=0 to 9 do begin
  42.     targ0[i]:=0;
  43.     targf[i]:=$ffff;
  44.     chek0[i]:=0;
  45.     chekf[i]:=$ffff;
  46.     src[i]:=random(256) shl 8 + random(256);
  47.     cheks[i]:=src[i];
  48.                     end;
  49.  
  50.    movbits(seg(targ0),ofs(targ0),targbit,seg(src),ofs(src),srcbit,nobits);
  51.    movbits(seg(targf),ofs(targf),targbit,seg(src),ofs(src),srcbit,nobits);
  52.    movbits(seg(chek0),ofs(chek0),srcbit,seg(targf),ofs(targf),targbit,nobits);
  53.    movbits(seg(chekf),ofs(chekf),srcbit,seg(targ0),ofs(targ0),targbit,nobits);
  54.  
  55.    movbits(seg(cheks),ofs(cheks),srcbit,seg(targ0),ofs(targ0),targbit,nobits);
  56.  
  57.    write('Source= $');
  58.    for i:=0 to 9 do write(hex4(swap(src[i])));writeln;
  59.    writeln('          ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^');
  60.  
  61.    write('Target0=$');
  62.    for i:=0 to 9 do write(hex4(swap(targ0[i])));writeln;
  63.    writeln('          ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^');
  64.  
  65.    write('TargetF=$');
  66.    for i:=0 to 9 do write(hex4(swap(targf[i])));writeln;
  67.    writeln('          ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^');
  68.  
  69.    write('Check0= $');
  70.    for i:=0 to 9 do write(hex4(swap(chek0[i])));writeln;
  71.    writeln('          ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^');
  72.  
  73.    write('CheckF= $');
  74.    for i:=0 to 9 do write(hex4(swap(chekf[i])));writeln;
  75.    writeln('          ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^');
  76.  
  77.    write('CheckS= $');
  78.    for i:=0 to 9 do write(hex4(swap(cheks[i])));writeln;
  79.    writeln('          ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^');
  80.  
  81.    writeln;
  82.    for i:=0 to 9 do if src[i]<>cheks[i] then writeln('Source and CheckS are not the same in word ',i);
  83.  
  84.    write('Continue (Y/N) ? ');readln(stb);
  85.   until (stb='n') or (stb='N');
  86.  end.