taytyypa-menna-nopeasti/beepboop.asm
Juhani Krekelä 411fa8c8d8 Jam version done
2025-10-26 15:03:33 +02:00

53 lines
No EOL
560 B
NASM

note_periods:
dw 4560
dw 4304
dw 4063
dw 3835
dw 3619
dw 3416
dw 3224
dw 3043
dw 2873
dw 2711
dw 2559
dw 2415
; ax = note index
set_note:
pusha
mov bx, ax
add bx, ax
mov dx, [note_periods + bx]
call set_freq
popa
ret
; dx = counter period
set_freq:
pusha
; Channel 2, lobyte/hibyte, square wave, binary
mov al, 0b10110110
out 0x43, al
mov al, dl
out 0x42, al
mov al, dh
out 0x42, al
popa
ret
sound_on:
pusha
in al, 0x61
or al, 3
out 0x61, al
popa
ret
sound_off:
pusha
in al, 0x61
and al, 0xfc
out 0x61, al
popa
ret