Új hozzászólás Aktív témák

  • DarthSun

    Topikgazda

    LOGOUT blog

    válasz envagyok #97818 üzenetére

    Pedig Te programoztál is...

    Egyszerű mint egy Pascal kód(nézegetem a régi forrásokat), pld saját detect ISA SB- re, furmányos, fapados módszer(részlet) :
    var m,savem:byte;
    BEGIN
    Copyright;
    base:=$220;
    savem:=getmixer($30);
    if savem=184 then setmastervolume(160,160);
    repeat
    setmastervolume(184,184);
    m:=getmixer($30);
    if m<>184 then if base=$280 then
    begin
    copyright;abort('SB16 not found!,Volume not installed!');
    end;
    if m<>184 then
    case base of
    $220:base:=$240;
    $240:base:=$260;
    $260:base:=$280;
    $280:;
    end;
    until m=184;
    setmastervolume(savem,savem);

    A hangerő változtatása a megfelelő bázis nélkül hatástalan, a ciklus+kiválasztással pedig megvan a kártya, a bázissal együtt, ha nincs, kilép. DMA nem játszik, mert ha nem SB- re fut, az is hatástalan, nem fagy, működik.

    A rezidens billentyűnél azért már bonyolódik kicsit(részlet) :
    {$F+}PROCEDURE VOLUME;INTERRUPT;{$F-}

    var Shift : Byte absolute 0:$0417;
    x,kx,ky : byte;
    const
    valtn: boolean=false;
    valts: boolean=false;

    BEGIN
    if OK then
    begin
    (******************************************************)

    if (Shift and 32 <> 32) then valtn:=false else
    { if (Shift and 32 = 32) then }
    if not valtn then
    begin

    Base:=$240;
    {ResetMixer;}
    IRQselect(imIRQ10);
    DMAselect(dcDMA7,dcDMA3);
    OutputSelect(dmOutputAll);
    InputSelect(dmLeftAll,dmRightAll);
    InputGain(Gain_2x,Gain_2x);
    OutputGain(Gain_4x,Gain_4x);
    MicAGC(Off);

    kx:=wherex;ky:=wherey;
    x:=getmixer($30);
    if x<240 then inc(x,$08);
    if x>255 then x:=255;
    if x<1 then x:=1;
    setmastervolume(x,x);
    textcolor(15);textbackground(3);
    gotoxy(55,2);write(' VOLUME B240 I10 L3 H7 ');
    gotoxy(55,3);write(' SB_AWE32_PNP * ');
    gotoxy(55,3);write(' SB_AWE32_PNP * ',x);
    gotoxy(kx,ky);{normvideo;}
    valtn:=true;
    end;
    if (Shift and 16 <> 16) then valts:=false else
    { if (Shift and 16 = 16) then}
    if not valts then
    begin

    Base:=$240;
    {ResetMixer;}
    IRQselect(imIRQ10);
    DMAselect(dcDMA7,dcDMA3);
    OutputSelect(dmOutputAll);
    InputSelect(dmLeftAll,dmRightAll);
    InputGain(Gain_2x,Gain_2x);
    OutputGain(Gain_4x,Gain_4x);
    MicAGC(Off);

    kx:=wherex;ky:=wherey;
    x:=getmixer($30);
    if x>10 then dec(x,$08);
    if x>255 then x:=255;
    if x<1 then x:=1;
    setmastervolume(byte(x),byte(x));
    textcolor(15);textbackground(3);
    gotoxy(55,2);write(' VOLUME b240 i10 l3 h7 ');
    gotoxy(55,3);write(' SB_AWE32_PNP * ');
    gotoxy(55,3);write(' SB_AWE32_PNP * ',x);
    gotoxy(kx,ky);{normvideo;}
    valts:=true;
    end;

    (******************************************************)

    if (Shift and 4=4) then
    if (Shift and 1=1) then
    begin
    Base:=$220;
    {ResetMixer;}
    IRQselect(imIRQ5);
    DMAselect(dcDMA5,dcDMA1);
    OutputSelect(dmOutputAll);
    InputSelect(dmLeftAll,dmRightAll);
    InputGain(Gain_2x,Gain_2x);
    OutputGain(Gain_4x,Gain_4x);
    MicAGC(Off);

    kx:=wherex;ky:=wherey;
    x:=getmixer($30);
    if x<240 then inc(x,$08);
    if x>255 then x:=255;
    if x<1 then x:=1;
    setmastervolume(x,x);
    textcolor(15);textbackground(3);
    gotoxy(2,2);write(' VOLUME B220 I5 L1 H5 ');
    gotoxy(2,3);write(' SB_16 * ');
    gotoxy(2,3);write(' SB_16 * ',x);
    gotoxy(kx,ky);{normvideo;}
    valtn:=true;
    end;
    if (Shift and 4=4) then
    if (Shift and 2=2) then
    begin
    Base:=$220;
    {ResetMixer;}
    IRQselect(imIRQ5);
    DMAselect(dcDMA5,dcDMA1);
    OutputSelect(dmOutputAll);
    InputSelect(dmLeftAll,dmRightAll);
    InputGain(Gain_2x,Gain_2x);
    OutputGain(Gain_4x,Gain_4x);
    MicAGC(Off);

    kx:=wherex;ky:=wherey;
    x:=getmixer($30);
    if x>10 then dec(x,$08);
    if x>255 then x:=255;
    if x<1 then x:=1;
    setmastervolume(byte(x),byte(x));
    textcolor(15);textbackground(3);
    gotoxy(2,2);write(' VOLUME b220 i5 l1 h5 ');
    gotoxy(2,3);write(' SB_16 * ');
    gotoxy(2,3);write(' SB_16 * ',x);
    gotoxy(kx,ky);{normvideo;}
    valts:=true;
    end;
    if (Shift and 8=8) then
    if (Shift and 1=1) then
    begin

    Base:=$240;
    {ResetMixer;}
    IRQselect(imIRQ10);
    DMAselect(dcDMA7,dcDMA3);
    OutputSelect(dmOutputAll);
    InputSelect(dmLeftAll,dmRightAll);
    InputGain(Gain_2x,Gain_2x);
    OutputGain(Gain_4x,Gain_4x);
    MicAGC(Off);

    kx:=wherex;ky:=wherey;
    x:=getmixer($30);
    if x<240 then inc(x,$08);
    if x>255 then x:=255;
    if x<1 then x:=1;
    setmastervolume(x,x);
    textcolor(15);textbackground(3);
    gotoxy(55,2);write(' VOLUME B240 I10 L3 H7 ');
    gotoxy(55,3);write(' SB_AWE32_PNP * ');
    gotoxy(55,3);write(' SB_AWE32_PNP * ',x);
    gotoxy(kx,ky);{normvideo;}
    valtn:=true;

    end;
    if (Shift and 8=8) then
    if (Shift and 2=2) then
    begin

    Base:=$240;
    {ResetMixer;}
    IRQselect(imIRQ10);
    DMAselect(dcDMA7,dcDMA3);
    OutputSelect(dmOutputAll);
    InputSelect(dmLeftAll,dmRightAll);
    InputGain(Gain_2x,Gain_2x);
    OutputGain(Gain_4x,Gain_4x);
    MicAGC(Off);

    kx:=wherex;ky:=wherey;
    x:=getmixer($30);
    if x>10 then dec(x,$08);
    if x>255 then x:=255;
    if x<1 then x:=1;
    setmastervolume(byte(x),byte(x));
    textcolor(15);textbackground(3);
    gotoxy(55,2);write(' VOLUME b240 i10 l3 h7 ');
    gotoxy(55,3);write(' SB_AWE32_PNP * ');
    gotoxy(55,3);write(' SB_AWE32_PNP * ',x);
    gotoxy(kx,ky);{normvideo;}
    valts:=true;

    end;

    end;
    OriginalHandler;
    END;

    A 3 test probléma nem megoldható.

Új hozzászólás Aktív témák