dialer/beep.jrt

36 lines
720 B
Plaintext
Executable file

:asm >spk ( div -- )
MOV AL 0xb6 #
OUT 0x43 # AL
POP AX
OUT 0x42 # AL
MOV AL AH
OUT 0x42 # AL
IN AL 0x61 #
OR AL 0x03 #
OUT 0x61 # AL
NEXT
:asm freq>div ( f -- d )
MOV AX 0x34df #
MOV DX 0x12 #
POP BX
DIV BX
PUSH AX
NEXT
:asm silence ( -- )
IN AL 0x61 #
AND AL 0xfc #
OUT 0x61 # AL
NEXT
: slide ( div count + -- )
>r begin over >spk 2 sleep-csec swap r@ + swap 1- dup not until
rdrop drop drop silence ;
: boop ( div count -- ) swap >spk sleep-csec silence ;
: noise ( count -- )
begin rand >spk 1 sleep-csec 1- dup not until drop silence ;
: arp ( d1 d2 count -- )
begin >rot dup 1 boop swap <rot 1- dup not until drop drop drop ;