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

    (*
    ===========================================================================
     BBS: Canada Remote Systems
    Date: 05-31-93 (17:52)             Number: 24475
    From: MARK LEWIS                   Refer#: NONE
      To: CHARLES LUMIA                 Recvd: NO
    Subj: PC SPEAKER AND RAW SO          Conf: (1221) F-PASCAL
    ---------------------------------------------------------------------------
     > Do you know how to send stuff to a PC speaker, I can't even find
     > the port # for it OR how to output any data through it?

    try this on for size ... these are three TP 6.0 Assembler routines that "mimic"
    the same ones that come in TP's CRT unit. DELAY was given to me by Sean Palmer
    (thanks sean! it works as advertised -=B-) and the other two i hacked out
    myself...

    procedure delay(ms : word); Assembler;
    {ms is the number of milliseconds to delay. 1000ms = 1second}
    *)

    asm
      mov ax,1000
      mul ms
      mov cx,dx
      mov dx,ax
      mov ah,$86
      int $15
    end;

    procedure sound( hertz : word); Assembler;
    {hertz is the sound frequency to send to the speaker port}

    asm
      MOV    BX,SP
      MOV    BX,&hertz
      MOV    AX,34DDh
      MOV    DX,0012h
      CMP    DX,BX
      JNB    @J1
      DIV    BX
      MOV    BX,AX
      IN     AL,61h
      TEST   AL,03h
      JNZ    @J2
      OR     AL,03h
      OUT    61h,AL
      MOV    AL,-4Ah
      OUT    43h,AL
    @J2:
      MOV    AL,BL
      OUT    42h,AL
      MOV    AL,BH
      OUT    42h,AL
    @J1:
    end;

    procedure nosound; Assembler;
    {turns the speaker off}
    asm
      IN     AL,61h
      AND    AL,0FCh
      OUT    61h,AL
    end;

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