SB mixer regiszter

F.32. Az SB mixer regisztereinek vizsgálata

uses crt;

const hd : array[0..15] of char=’0123456789ABCDEF’;

bt : array[0..7] of byte=(128,64,32,16,8,4,2,1);

var i,j,a,b,c : byte;

t : text;

y,x:string[8];

{ Egy érték beírása az SB mixer valamely regiszterébe }

procedure SetMixer(RegNum,Value:byte);     assembler;

asm

mov  dx,$220

add  dx,$0004

mov  al,RegNum

out  dx,al

inc  dx

mov  al,Value

out  dx,al

end;

{ Egy érték kiolvasása az SB mixer valamely regiszteréből }

function  GetMixer(Regnum:byte):byte;      assembler;

asm

mov  dx,$220

add  dx,$0004

mov  al,Regnum

out  dx,al

inc  dx

in   al,dx

end;

{ Hexadecimális számként jeleníti meg az adott számot }

function hex(b:byte):string;

begin

hex:=hd[b shr 4]+hd[b and 15];

end;

{ Bináris számként jeleníti meg az adott számot }

function bin(b:byte):string;

var i:byte;

s:string[8];

begin

s:=’00000000′;

for i:=0 to 7 do

if b and bt[i]<>0 then

inc(s[i+1]);

bin:=s;

end;

begin

clrscr;

writeln(‘Registers of the SB mixer (SbMix.txt):’);

readln;

{ A mixer regisztereit kiírjuk egy szöveges állományba }

assign(t,’SbMix.txt’);

rewrite(t);

writeln(t,’Registers of the SB mixer:’);

writeln(t);

{ A mixer regisztereinek vizsgálata }

for i:=$00 to $98 do { Kezdeti regisztertől az utolsóig }

begin

{ Először csupa nullát írok a regiszterbe }

setmixer(i,$00);

a:=getmixer(i);

{ Majd csupa egyest írok a regiszterbe }

setmixer(i,$ff);

b:=getmixer(i);

{ “Kizáró vagy” kapcsolat a és b között, }

{ melyből következtethetünk a fix, illetve }

{ a módosítható bitekre. }

c:= a xor b;

{ Ha az eredmény 0, akkor érvénytelen }

{ regiszterről van szó. }

if c=$00 then

begin

writeln(‘$’,hex(i),’:  Invalid register’);

writeln(t,’$’,hex(i),’:  Invalid register’);

inc(i);

end  {if}

else

{ Egyébként jelezzük, az adott bit tulajdonságát }

begin

x:=bin(c);

{ “Vagy” kapcsolat a és b között }

y:=bin(a or b);

for j:=0 to 8  do

begin

{ Ha az eredmény 1, akkor }

{ a programozó tetszőleges értéket }

{ adhat a bitnek a SetMix eljárással. }

if x[j]=’1′ then

x[j]:=’_’

{ Egyébként jelezzük, hogy az adott fix bit }

{ 0-ra, illetve 1-re van állítva. }

else

if x[j]=’0′ then

x[j]:=y[j];

end; {for}

writeln(‘$’,hex(i),’:  ‘,x);

writeln(t,’$’,hex(i),’:  ‘,x);

end; {else}

end; {for}

close(t);

readln;

end.

Vélemény, hozzászólás?

Adatok megadása vagy bejelentkezés valamelyik ikonnal:

WordPress.com Logo

Hozzászólhat a WordPress.com felhasználói fiók használatával. Kilépés / Módosítás )

Twitter kép

Hozzászólhat a Twitter felhasználói fiók használatával. Kilépés / Módosítás )

Facebook kép

Hozzászólhat a Facebook felhasználói fiók használatával. Kilépés / Módosítás )

Google+ kép

Hozzászólhat a Google+ felhasználói fiók használatával. Kilépés / Módosítás )

Kapcsolódás: %s