[Back to SOUND SWAG index] [Back to Main SWAG index] [Original]

    {
     PV> i PLeaSe WaNT To KNoW HoW i CaN MoNiToR iNPuT SouRCeS LiKe
     PV> THe MiC, LiNe iN, CD iN PoRTS?

    Here is a simple program I made, just for YOU:
    }

    uses crt;
    {Maybe you must change the ports a bit, the second number isn't always 2}
    const resetport = $226;
          datareadyport = $22E;
          readdataport = $22A;
          wbsport = $22C;
          writeport = $22C;

    procedure wait;
    begin
         delay(10);
    end;

    procedure writedsp(data : byte);assembler;
    asm
       mov dx,wbsport
    @loop:
       in al,dx
       test al,1 shl 7
       jnz @loop
       mov al,data
       out dx,al
    end;

    function readdsp : byte;assembler;
    asm
       mov dx,datareadyport
    @loop:
       in al,dx
       test al,1 shl 7
       jz @loop
       mov dx,readdataport
       in al,dx
    end;

    function readsound : byte;
    begin
         writedsp($20);
         readsound := readdsp;
    end;

    procedure resetsb;assembler;
    asm
       mov dx,resetport
       mov al,1
       out dx,al
       call wait
       mov dx,resetport
       xor al,al
       out dx,al
       mov dx,datareadyport
    @loop:
       in al,dx
       test al,1 shl 7
       jz @loop
       mov dx,readdataport
       in al,dx
       call readsound
    end;

    var x : word;
        y : byte;
        oldy : array[0..319] of byte;

    begin
       asm mov ax,13h;int 10h; end;
       resetsb;
       repeat
          mem[$A000:x+oldy[x]*320] := 0;
          y := 100+(readsound-127) div 2;
          mem[$A000:x+y*320] := 9;
          oldy[x] := y;
          x := (x+1) mod 320;
       until keypressed;
       asm mov ax,3h;int 10h; end;
    end.

[Back to SOUND SWAG index] [Back to Main SWAG index] [Original]