forked from KolibriOS/kolibrios
sysxtree: rewritten to 70th function, corrected scrollbar copyr: new version for new sysxtree @rcher, rtfread: modified to work with new sysxtree midamp: added version modified to work with new sysxtree git-svn-id: svn://kolibrios.org@134 a494cfbc-eb01-0410-851d-a64ba20cac60
294 lines
12 KiB
Plaintext
294 lines
12 KiB
Plaintext
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
|
||
* *
|
||
* Copyright 2003 VaStaNi *
|
||
* vastani@ukr.net *
|
||
* >>>- SIMPLY - QUICKLY - SHORTLY -<<< *
|
||
* *
|
||
* About Player Notes for Speaker PC. *
|
||
* ( PLAYNOTE.INC v.1.1 for MENUET OS ) *
|
||
* *
|
||
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
|
||
|
||
--- ATTACH ---
|
||
|
||
>>> Insert string: include "PLAYNOTE.INC" in list file KERNEL32.INC
|
||
.........
|
||
......... ......... .............................
|
||
......... ......... .............................
|
||
......... ......... .............................
|
||
|
||
; sound
|
||
|
||
include "SB16.INC" ; playback for Sound Blaster 16
|
||
include "PLAYNOTE.INC" ; player Note for Speaker PC
|
||
|
||
.........
|
||
......... ......... .............................
|
||
......... ......... .............................
|
||
|
||
|
||
|
||
>>> Insert line --->>> call playNote --->>> in procedure irq0
|
||
|
||
( listing file SYS32.INC for KERNEL.ASM )
|
||
|
||
.... ....
|
||
.... ....
|
||
.... ....
|
||
|
||
no_error_in_previous_process:
|
||
|
||
mov edi,[0x3000]
|
||
imul edi,8
|
||
mov [edi+gdts+ tss0 +5], word 01010000b *256 +11101001b
|
||
|
||
inc dword [0xfdf0]
|
||
|
||
mov eax,[0xfdf0]
|
||
|
||
call playNote ; <<<--- INSERT THIS LINE !!!!!!!!!!
|
||
|
||
cmp eax,[next_usage_update]
|
||
jb nocounter
|
||
add eax,100
|
||
mov [next_usage_update],eax
|
||
call updatecputimes
|
||
|
||
nocounter:
|
||
.... ....
|
||
.... ....
|
||
.... ....
|
||
|
||
|
||
|
||
>>> file SB16.INC have this label...
|
||
.... ....
|
||
.... ....
|
||
.... ....
|
||
|
||
no_SB16_data_format:
|
||
|
||
ret
|
||
|
||
>>> I suggest add this code for subfunction #55 function #55 OS (player notes)
|
||
.... ....
|
||
.... ....
|
||
.... ....
|
||
|
||
no_SB16_data_format:
|
||
cmp eax, edi ; this is subfunction #55 ?
|
||
jne retFunc55 ; if no then return.
|
||
movzx eax, byte [countDelayNote]
|
||
or al, al ; player is busy ?
|
||
jnz retFunc55 ; return counter delay Note
|
||
mov eax, [0x3010]
|
||
mov eax, [eax+0x10] ; address application im memory
|
||
add eax, edx ; add offset Delay-Note string
|
||
mov [memAdrNote], eax
|
||
xor eax, eax ; Ok! EAX = 0
|
||
retFunc55:
|
||
mov [esp+36], eax ; return value EAX for application
|
||
ret
|
||
|
||
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
|
||
|
||
--- USE ---
|
||
|
||
>>> Example use in your programs:
|
||
.... ....
|
||
.... ....
|
||
.... ....
|
||
mov eax, 55 ; OS function #55
|
||
mov ebx, eax ; EBX = 55 for subfunction Play Note
|
||
mov esi, MyMusic_1 ; ESI = head string Delay-Note code
|
||
int 0x40 ; start play
|
||
.... ....
|
||
.... ....
|
||
.... ....
|
||
|
||
|
||
>>> Very simply OS use. Only put dword adress head string in [memAdrNote]
|
||
|
||
.... ....
|
||
mov [memAdrNote], dword MyMusic_1 ; IRQ0 -> start play!!!
|
||
.... ....
|
||
|
||
!!! Example OS use for send: error tone, ring signal, disconnect hardware...
|
||
!!! Saund Card may be OFF, but Speaker PC always IS ON !!!
|
||
|
||
|
||
..... .. ..
|
||
..... .. ..
|
||
MyMusic_1 db .., .., .., .., .., 0 ; string Delay-Note code for MUSIC
|
||
... .. ..
|
||
...... .. ..
|
||
|
||
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
|
||
|
||
--- CODE DELAY & NOTEs ---
|
||
|
||
>>> Format Delay-Note string:
|
||
|
||
1. Free style play Tone
|
||
|
||
db 1..0x80 ; !!! only (1..0x80) byte for Delay Tone
|
||
db 1..0xFF ; lower byte (counter for period oscillate)
|
||
db 1..0xFF ; upper byte (counter for period oscillate)
|
||
.. .. \
|
||
.. .. > 3 bytes for 1 TONE !!!
|
||
.. .. /
|
||
db 0 ; THE END Play!
|
||
|
||
2. Musical style play Note
|
||
|
||
db 0x81..0xFE ; !!! 0x80 + byte (1..0x7E) for Delay Note
|
||
db 1..0xFF ; PACK CODE (number Note & number Octave)
|
||
.. .. \
|
||
.. .. / 2 bytes for 1 Note in 1 Octave !!!
|
||
db 0 ; THE END Play!
|
||
|
||
|
||
|
||
-= DELAY CODE =-
|
||
|
||
ÚÄÄÄÄÄÄÄÄÄÄÄÄÂÄÄÄÄÄÄÄÄÄÄÄÄÂÄÄÄÄÄÄÄÉÍÍ 1 Í»ÉÍÍ 2 Í»
|
||
³¤«¨â¥«ì®á⨳ DELAY NOTE ³ DELAY º DELAY ºº DELAY º
|
||
³ <20>Ž’ ³ mSec ³ IRQ 0 º CODE ºº CODE º
|
||
ÃÄÄÄÄÄÄÄÄÄÄÄÄÅÄÄÄÄÄÄÄÄÄÄÄÄÅÄÄÄÄÄÄÄÌÍÍÍÍÍÍÍ͹ÌÍÍÍÍÍÍÍ͹
|
||
³ 楫 ï ³ 2000 ³ º 0xC8 ºº absent º
|
||
ÃÄÄÄÄÄÄÄÄÄÄÄÄÅÄÄÄÄÄÄÄÄÄÄÄÄ´ ÇÄÄÄÄÄÄÄĶÇÄÄÄÄÄÄÄĶ
|
||
³ 1/2 ³ 1000 ³ º 0x64 ºº 0xE4 º
|
||
ÃÄÄÄÄÄÄÄÄÄÄÄÄÅÄÄÄÄÄÄÄÄÄÄÄÄ´ ÇÄÄÄÄÄÄÄĶÇÄÄÄÄÄÄÄĶ
|
||
³ 1/4 ³ 500 ³ º 0x32 ºº 0xB2 º
|
||
ÃÄÄÄÄÄÄÄÄÄÄÄÄÅÄÄÄÄÄÄÄÄÄÄÄÄ´ 10 ºÄÄÄÄÄÄÄĶºÄÄÄÄÄÄÄĶ
|
||
³ 1/8 ³ 250 ³ mSec º 0x19 ºº 0x99 º
|
||
ÃÄÄÄÄÄÄÄÄÄÄÄÄÅÄÄÄÄÄÄÄÄÄÄÄÄ´ ÇÄÄÄÄÄÄÄĶÇÄÄÄÄÄÄÄĶ
|
||
³ 1/16 ³ 125 ³ º 0xC ºº 0x8C º
|
||
ÃÄÄÄÄÄÄÄÄÄÄÄÄÅÄÄÄÄÄÄÄÄÄÄÄÄ´ ºÄÄÄÄÄÄÄĶºÄÄÄÄÄÄÄĶ
|
||
³ 1/32 ³ 62.5 ³ º 6 ºº 0x86 º
|
||
ÃÄÄÄÄÄÄÄÄÄÄÄÄÅÄÄÄÄÄÄÄÄÄÄÄÄ´ ÇÄÄÄÄÄÄÄĶÇÄÄÄÄÄÄÄĶ
|
||
³ 1/64 ³ 31.25 ³ º 3 ºº 0x83 º
|
||
ÀÄÄÄÄÄÄÄÄÄÄÄÄÁÄÄÄÄÄÄÄÄÄÄÄÄÁÄÄÄÄÄÄÄÈÍÍÍÍÍÍÍͼÈÍÍÍÍÍÍÍͼ
|
||
|
||
|
||
-= PACK CODE =-
|
||
|
||
!!!!! IF PACK CODE = 0xFF THEN PAUSE = DELAY CODE !!!!!
|
||
|
||
ÚÄÄÄÄÄÄÄÄÄÄÄÂÄÄÄÄÄÄÂÄÄÄÄÄÄÉÍÍÍÍÍÍÍÍÍÍ» ÚÄÄÄÄÄÄÄÄÄÄÄÂÄÄÄÄÂÄÄÄÄÄÄÉÍÍÍÍÍÍÍÍÍÍ»
|
||
³ ’ˆ<E28099>› ³number³ code ºupper CODEº ³ <20>Ž’› ³type³numberºlower CODEº
|
||
³ ŽŠ’€‚ ³OCTAVE³numberºBit7..Bit4º ³ ŽŠ’€‚› ³NOTE³ NOTE ºBit3..Bit0º
|
||
ÃÄÄÄÄÄÄÄÄÄÄÄÅÄÄÄÄÄÄÅÄÄÄÄÄÄÌÍÍÍÍÍÍÍÍÍ͹ ÃÄÄÄÄÄÄÄÄÄÄÄÅÄÄÄÄÅÄÄÄÄÄÄÌÍÍÍÍÍÍÍÍÍ͹
|
||
³ª®âப⠢ ³ -3 ³ 0 º 0000 º ³ „Ž ³ C ³ 1 º 0001 º
|
||
ÃÄÄÄÄÄÄÄÄÄÄÄÅÄÄÄÄÄÄÅÄÄÄÄÄÄÌÄÄÄÄÄÄÄÄÄĶ ÃÄÄÄÄÄÄÄÄÄÄÄÅÄÄÄÄÅÄÄÄÄÄÄ×ÄÄÄÄÄÄÄÄÄĶ
|
||
³ ¡®«ìè ï ³ -2 ³ 1 º 0001 º ³ „Ž ¡¥¬®«ì ³ C# ³ 2 º 0010 º
|
||
ÃÄÄÄÄÄÄÄÄÄÄÄÅÄÄÄÄÄÄÅÄÄÄÄÄÄÇÄÄÄÄÄÄÄÄÄĶ ÃÄÄÄÄÄÄÄÄÄÄÄÅÄÄÄÄÅÄÄÄÄÄÄ×ÄÄÄÄÄÄÄÄÄĶ
|
||
³ ¬ « ï ³ -1 ³ 2 º 0010 º ³ <20>… ³ D ³ 3 º 0011 º
|
||
ÃÄÄÄÄÄÄÄÄÄÄÄÅÄÄÄÄÄÄÅÄÄÄÄÄĺÄÄÄÄÄÄÄÄÄĶ ÃÄÄÄÄÄÄÄÄÄÄÄÅÄÄÄÄÅÄÄÄÄÄÄ×ÄÄÄÄÄÄÄÄÄĶ
|
||
³ ¯¥à¢ ï ³ 1 ³ 3 º 0011 º ³ <20>… ¡¥¬®«ì ³ D# ³ 4 º 0100 º
|
||
ÃÄÄÄÄÄÄÄÄÄÄÄÅÄÄÄÄÄÄÅÄÄÄÄÄÄÇÄÄÄÄÄÄÄÄÄĶ ÃÄÄÄÄÄÄÄÄÄÄÄÅÄÄÄÄÅÄÄÄÄÄÄ×ÄÄÄÄÄÄÄÄÄĶ
|
||
³ ¢â®à ï ³ 2 ³ 4 º 0100 º ³ Œˆ ³ E ³ 5 º 0101 º
|
||
ÃÄÄÄÄÄÄÄÄÄÄÄÅÄÄÄÄÄÄÅÄÄÄÄÄĺÄÄÄÄÄÄÄÄÄĶ ÃÄÄÄÄÄÄÄÄÄÄÄÅÄÄÄÄÅÄÄÄÄÄÄ×ÄÄÄÄÄÄÄÄÄĶ
|
||
³ âà¥âìï ³ 3 ³ 5 º 0101 º ³ ”€ ³ F ³ 6 º 0110 º
|
||
ÃÄÄÄÄÄÄÄÄÄÄÄÅÄÄÄÄÄÄÅÄÄÄÄÄÄÇÄÄÄÄÄÄÄÄÄĶ ÃÄÄÄÄÄÄÄÄÄÄÄÅÄÄÄÄÅÄÄÄÄÄÄ×ÄÄÄÄÄÄÄÄÄĶ
|
||
³ ç¥â¢¥àâ ï ³ 4 ³ 6 º 0110 º ³ ”€ ¡¥¬®«ì ³ F# ³ 7 º 0111 º
|
||
ÀÄÄÄÄÄÄÄÄÄÄÄÁÄÄÄÄÄÄÁÄÄÄÄÄÄÈÍÍÍÍÍÍÍÍÍͼ ÃÄÄÄÄÄÄÄÄÄÄÄÅÄÄÄÄÅÄÄÄÄÄÄ×ÄÄÄÄÄÄÄÄÄĶ
|
||
³ ‘Ž‹œ ³ G ³ 8 º 1000 º
|
||
ÃÄÄÄÄÄÄÄÄÄÄÄÅÄÄÄÄÅÄÄÄÄÄÄ×ÄÄÄÄÄÄÄÄÄĶ
|
||
³‘Ž‹œ ¡¥¬®«ì³ G# ³ 9 º 1001 º
|
||
ÃÄÄÄÄÄÄÄÄÄÄÄÅÄÄÄÄÅÄÄÄÄÄÄ×ÄÄÄÄÄÄÄÄÄĶ
|
||
³ ‹Ÿ ³ A ³ 10 º 1010 º
|
||
ÃÄÄÄÄÄÄÄÄÄÄÄÅÄÄÄÄÅÄÄÄÄÄÄ×ÄÄÄÄÄÄÄÄÄĶ
|
||
³ ‹Ÿ ¡¥¬®«ì ³ A# ³ 11 º 1011 º
|
||
ÃÄÄÄÄÄÄÄÄÄÄÄÅÄÄÄÄÅÄÄÄÄÄÄ×ÄÄÄÄÄÄÄÄÄĶ
|
||
³ ‘ˆ ³ B ³ 12 º 1100 º
|
||
ÀÄÄÄÄÄÄÄÄÄÄÄÁÄÄÄÄÁÄÄÄÄÄÄÈÍÍÍÍÍÍÍÍÍͼ
|
||
|
||
PACK CODE = (number Note) AND ((code number Octave) SHL 4)
|
||
or
|
||
PACK CODE = (number Note) AND ((code number Octave) * 16)
|
||
|
||
|
||
-= PERIOD OSCILLATE =-
|
||
|
||
counter = 1193180 / FREQUENCY;
|
||
(WORD) (sound Hz)
|
||
|
||
ÚÄÄÄÄÄÄÄÄÄÄÄÂÄÄÄÄÄÄÂÄÄÄÄÄÄÂÄÄÄÄÄÄÄÄÄÄÄÂÄÄÄÄÂÄÄÄÄÄÄÉÍÍÍÍÍÍÍÍÍ ÍÍÍÍÍÍ»
|
||
³ ’ˆ<E28099> ³number³ code ³ <20>Ž’› ³type³numberºfrequency PACK º
|
||
³ ŽŠ’€‚› ³OCTAVE³number³ 1© Ž‘’€‚› ³NOTE³ NOTE ºsound Hz CODE º
|
||
ÃÄÄÄÄÄÄÄÄÄÄÄÅÄÄÄÄÄÄÅÄÄÄÄÄÄÅÄÄÄÄÄÄÄÄÄÄÄÅÄÄÄÄÅÄÄÄÄÄÄÌÍÍÍÍÍÍÍÍÍ ÍÍÍÍÍ͹
|
||
³ ³ ³ ³ „Ž ³ C ³ 1 º 523,251 -- 0x31 º
|
||
³ ³ ³ ÃÄÄÄÄÄÄÄÄÄÄÄÅÄÄÄÄÅÄÄÄÄÄÄ×ÄÄÄÄÄÄÄÄÄ | ÄÄÄÄÄĶ
|
||
³ ³ ³ ³ „Ž ¡¥¬®«ì ³ C# ³ 2 º 554,365 --|-- 0x32 º
|
||
³ ³ ³ ÃÄÄÄÄÄÄÄÄÄÄÄÅÄÄÄÄÅÄÄÄÄÄÄ×ÄÄÄÄÄÄÄÄÄ | | ÄÄÄÄÄĶ
|
||
³ ³ ³ ³ <20>… ³ D ³ 3 º 587,33 | | 0x33 º
|
||
³ ³ ³ ÃÄÄÄÄÄÄÄÄÄÄÄÅÄÄÄÄÅÄÄÄÄÄÄ×ÄÄÄÄÄÄÄÄÄ | | ÄÄÄÄÄĶ
|
||
³ ³ ³ ³ <20>… ¡¥¬®«ì ³ D# ³ 4 º 622,254 | | 0x34 º
|
||
³ ³ ³ ÃÄÄÄÄÄÄÄÄÄÄÄÅÄÄÄÄÅÄÄÄÄÄÄ×ÄÄÄÄÄÄÄÄÄ | | ÄÄÄÄÄĶ
|
||
³ ³ ³ ³ Œˆ ³ E ³ 5 º 659,255 | | 0x35 º
|
||
³ ³ ³ ÃÄÄÄÄÄÄÄÄÄÄÄÅÄÄÄÄÅÄÄÄÄÄÄ×ÄÄÄÄÄÄÄÄÄ | | ÄÄÄÄÄĶ
|
||
³ ³ ³ ³ ”€ ³ F ³ 6 º 698,456 | | 0x36 º
|
||
³ ¯¥à¢ ï ³ 1 ³ 3 ÃÄÄÄÄÄÄÄÄÄÄÄÅÄÄÄÄÅÄÄÄÄÄÄ×ÄÄÄÄÄÄÄÄÄ | | ÄÄÄÄÄĶ
|
||
³ ( first ³ ³ ³ ”€ ¡¥¬®«ì ³ F# ³ 7 º 739,989 | | 0x37 º
|
||
³ octave ) ³ ³ ÃÄÄÄÄÄÄÄÄÄÄÄÅÄÄÄÄÅÄÄÄÄÄÄ×ÄÄÄÄÄÄÄÄÄ | | ÄÄÄÄÄĶ
|
||
³ ³ ³ ³ ‘Ž‹œ ³ G ³ 8 º 783,991 0x38 º
|
||
³ ³ ³ ÃÄÄÄÄÄÄÄÄÄÄÄÅÄÄÄÄÅÄÄÄÄÄÄ×ÄÄÄÄÄÄÄÄÄ x 2 ÄÄÄÄÄĶ
|
||
³ ³ ³ ³‘Ž‹œ ¡¥¬®«ì³ G# ³ 9 º 830,609 0x39 º
|
||
³ ³ ³ ÃÄÄÄÄÄÄÄÄÄÄÄÅÄÄÄÄÅÄÄÄÄÄÄ×ÄÄÄÄÄÄÄÄÄ | | ÄÄÄÄÄĶ
|
||
³ ³ ³ ³ ‹Ÿ ³ A ³ 10 º 880 | | 0x3A º
|
||
³ ³ ³ ÃÄÄÄÄÄÄÄÄÄÄÄÅÄÄÄÄÅÄÄÄÄÄÄ×ÄÄÄÄÄÄÄÄÄ | | ÄÄÄÄÄĶ
|
||
³ ³ ³ ³ ‹Ÿ ¡¥¬®«ì ³ A# ³ 11 º 932,328 | | 0x3B º
|
||
³ ³ ³ ÃÄÄÄÄÄÄÄÄÄÄÄÅÄÄÄÄÅÄÄÄÄÄÄ×ÄÄÄÄÄÄÄÄÄ | | ÄÄÄÄÄĶ
|
||
³ ³ ³ ³ ‘ˆ ³ B ³ 12 º 987,767 | | 0x3C º
|
||
ÃÄÄÄÄÄÄÄÄÄÄÄÅÄÄÄÄÄÄÅÄÄÄÄÄÄÅÄÄÄÄÄÄÄÄÄÄÄÅÄÄÄÄÅÄÄÄÄÄÄÌÍÍÍÍÍÍÍÍÍ | | ÍÍÍÍÍ͹
|
||
³ ¢â®à ï ³ 2 ³ 4 ³ „Ž ³ ‘ ³ 1 º1046,502 <- | 0x41 º
|
||
...... .. .. ... .. .. .... ... <----
|
||
|
||
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
|
||
|
||
--- EXAMPLE MUSIC ---
|
||
|
||
<EFBFBD>ਬ¥à ¬ã§¨æ¨à®¢ ¨ï ¯® ®â ¬ ¬¥«®¤¨¨ ˆ.Š à¥«îª "ƒ®à¨â ®ç £..."
|
||
ª 䨫ì¬ã "<22> ¤¨â᪨© <20>¥â¥à¡ãà£"
|
||
MyMusic_1:
|
||
db 0xe4,0x35, 0x99,0x33, 0x99,0x31, 0x99,0x33, 0xe4,0x35, 0x99,0x35, 0x99,0x36
|
||
db 0x99,0x38, 0x99,0x3a, 0xe4,0x36, 0xe4,0x36, 0xb2,0xff, 0xe4,0x33, 0x99,0x31
|
||
db 0x99,0x2c, 0x99,0x31, 0xe4,0x33, 0xb2,0x33, 0x99,0x35, 0x99,0x36, 0xe4,0x35
|
||
db 0xe4,0x35, 0xb2,0xff, 0x99,0x35, 0x99,0x36, 0xe4,0x33, 0x99,0x35, 0x99,0x36
|
||
db 0xb2,0x33, 0x99,0x35, 0x99,0x36, 0xb2,0x33, 0x99,0x35, 0x99,0x36, 0xe4,0x39
|
||
db 0xe4,0x39, 0xb2,0xff, 0x99,0x35, 0x99,0x36, 0xe4,0x33, 0x99,0x35, 0x99,0x36
|
||
db 0xb2,0x33, 0x99,0x35, 0x99,0x36, 0xb2,0x33, 0x99,0x35, 0x99,0x36, 0xe4,0x35
|
||
db 0xe4,0x35, 0
|
||
|
||
|
||
MyMusic_2:
|
||
db 0x90,0x31, 0x90,0x33, 0x90,0x35, 0x90,0x36, 0xA0,0xFF, 0xA0,0x06, 0x90,0xFF
|
||
db 0xA0,0x06, 0x90,0xFF, 0x90,0x33, 0x90,0x35, 0x90,0x37, 0x90,0x38, 0xA0,0xFF
|
||
db 0xA0,0x18, 0x90,0xFF, 0xA0,0x18, 0x90,0xFF, 0x90,0x33, 0x90,0x35, 0x90,0x37
|
||
db 0x90,0x38, 0xA0,0xFF, 0x90,0x33, 0x90,0x35, 0x90,0x37, 0x90,0x38, 0xA0,0xFF
|
||
db 0x90,0x31, 0x90,0x33, 0x90,0x35, 0x90,0x36, 0xA0,0xFF, 0xA0,0x16, 0x90,0xFF
|
||
db 0xA0,0x16, 0
|
||
|
||
|
||
MyMusic_3:
|
||
db 0x99,0x31, 0xB2,0x36, 0x99,0x3A, 0xB2,0x36, 0x99,0x33, 0xB2,0x28, 0xBC,0x38
|
||
db 0
|
||
|
||
<<<<<<< >>>>>>>
|
||
|>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> !GOOD LUCK! <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<|
|
||
<<<<<<< >>>>>>>
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|