home *** CD-ROM | disk | FTP | other *** search
- {
- > I stumbled across the correct sequence
-
- Well, why don't we let some more people stumble in on our little secret? :)
-
- Something like this might do the trick. The brute delay code 'asm hlt end',
- that simply waits for the next interrupt (should be the timer IRQ) to occur,
- may not work on some machines -- especially when running some multitaskers.
- If so it can be changed to 'delay(50)' or something like that.
- }
-
- program Ring;
- uses crt;
- var i:word;
- begin
- for i:=0 to 6 do
- begin
- sound(523); asm hlt end;
- Delay(50);
- sound(659); asm hlt end;
- Delay(50);
- end;
- nosound
- end.
-
- { Or, for those of you that don't like the crt unit, here's the same thing in
- BASM: }
-
- program Ring;
- begin
- asm
- mov al,0B6h
- out 43h,al
- in al,61h
- or al,3
- out 61h,al
- mov cx,7
- mov dx,42h
- @the_loop:
- mov al,0E9h
- out dx,al
- mov al,8
- out dx,al
- hlt
- mov al,12h
- out dx,al
- mov al,7
- out dx,al
- hlt
- loop @the_loop
- in al,61h
- and al,0FCh
- out 61h,al
- end;
- end.
-