home *** CD-ROM | disk | FTP | other *** search
- program movbtest; {program to test movbits.bin}
-
- type
- str1 = string[1];
- str4 = string[4];
-
- var
- src,targ0,targf,chek0,chekf,cheks:array [0..9] of integer;stb:char;
- srcbit,targbit,nobits,i,j,k,l,m,n:integer;
-
- function hex4(val:integer):str4;
- var i:integer;chb:char;
-
- function hex1(val:integer):str1;
- begin
- i:=val and 15;
- hex1:='*'; { be sure it has a valid length byte }
- if (i>=0) and (i<=9) then chb:=chr(i+ord('0'))
- else chb:=chr(i-10+ord('A'));
- hex1:=chb;
- end; { hex1 }
-
- begin { hex4 }
- hex4:=hex1(val shr 12)+
- hex1(val shr 8)+
- hex1(val shr 4)+
- hex1(val);
- end; { hex4 }
-
- procedure movbits(targseg,targoff,targbit,srcseg,srcoff,srcbit,
- nobits:integer); external 'c:.\movbits.bin';
-
- begin
- clrscr;
- randomize;
- repeat
- write('Enter source bit no. ');readln(srcbit);
- write('Enter target bit no. ');readln(targbit);
- write('Enter no. bits to move ');readln(nobits);
-
- for i:=0 to 9 do begin
- targ0[i]:=0;
- targf[i]:=$ffff;
- chek0[i]:=0;
- chekf[i]:=$ffff;
- src[i]:=random(256) shl 8 + random(256);
- cheks[i]:=src[i];
- end;
-
- movbits(seg(targ0),ofs(targ0),targbit,seg(src),ofs(src),srcbit,nobits);
- movbits(seg(targf),ofs(targf),targbit,seg(src),ofs(src),srcbit,nobits);
- movbits(seg(chek0),ofs(chek0),srcbit,seg(targf),ofs(targf),targbit,nobits);
- movbits(seg(chekf),ofs(chekf),srcbit,seg(targ0),ofs(targ0),targbit,nobits);
-
- movbits(seg(cheks),ofs(cheks),srcbit,seg(targ0),ofs(targ0),targbit,nobits);
-
- write('Source= $');
- for i:=0 to 9 do write(hex4(swap(src[i])));writeln;
- writeln(' ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^');
-
- write('Target0=$');
- for i:=0 to 9 do write(hex4(swap(targ0[i])));writeln;
- writeln(' ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^');
-
- write('TargetF=$');
- for i:=0 to 9 do write(hex4(swap(targf[i])));writeln;
- writeln(' ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^');
-
- write('Check0= $');
- for i:=0 to 9 do write(hex4(swap(chek0[i])));writeln;
- writeln(' ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^');
-
- write('CheckF= $');
- for i:=0 to 9 do write(hex4(swap(chekf[i])));writeln;
- writeln(' ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^');
-
- write('CheckS= $');
- for i:=0 to 9 do write(hex4(swap(cheks[i])));writeln;
- writeln(' ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^');
-
- writeln;
- for i:=0 to 9 do if src[i]<>cheks[i] then writeln('Source and CheckS are not the same in word ',i);
-
- write('Continue (Y/N) ? ');readln(stb);
- until (stb='n') or (stb='N');
- end.