scene.org File Archive

File download

<root>­/­resources­/­tools­/­mobile/psytexx-1.8.zip

File size:
1 321 102 bytes (1.26M)
File date:
2018-04-02 02:38:59
Download count:
all-time: 37

Preview

  • PsyTexx 1.8/ dir
  • PsyTexx 1.8/backup.pdb 12.56K
  • PsyTexx 1.8/converters/ dir
  • PsyTexx 1.8/converters/mod2pdb.exe 3.00K
  • PsyTexx 1.8/converters/pdb2mod.exe 2.00K
  • PsyTexx 1.8/music/ dir
  • PsyTexx 1.8/music/empty.pdb 281.96K
  • PsyTexx 1.8/music/xmodul5.pdb 85.39K
  • PsyTexx 1.8/psytexx.prc 163.31K
  • PsyTexx 1.8/psytexx_sim.prc 164.02K
  • PsyTexx 1.8/psytexx_win32.dll 36.00K
  • PsyTexx 1.8/readme.txt 1.33K
  • PsyTexx 1.8/sources/ dir
  • PsyTexx 1.8/sources/arm_render/ dir
  • PsyTexx 1.8/sources/arm_render/arm_bin.o 33.45K
  • PsyTexx 1.8/sources/arm_render/arm_render.c 4.37K
  • PsyTexx 1.8/sources/arm_render/arm_render.o 1.62K
  • PsyTexx 1.8/sources/arm_render/armc03e9.arm_bin.o.grc 800B
  • PsyTexx 1.8/sources/arm_render/Command Prompt.lnk 1.81K
  • PsyTexx 1.8/sources/arm_render/make_arm.bat 183B
  • PsyTexx 1.8/sources/arm_sound/ dir
  • PsyTexx 1.8/sources/arm_sound/arm_bin.o 40.97K
  • PsyTexx 1.8/sources/arm_sound/arm_mod.c 26.45K
  • PsyTexx 1.8/sources/arm_sound/arm_mod.o 10.11K
  • PsyTexx 1.8/sources/arm_sound/armc03e8.arm_bin.o.grc 7.95K
  • PsyTexx 1.8/sources/arm_sound/e_utils.h 996B
  • PsyTexx 1.8/sources/arm_sound/finetune.h 4.37K
  • PsyTexx 1.8/sources/arm_sound/make_arm.bat 174B
  • PsyTexx 1.8/sources/arm_sound/modplay.h 3.48K
  • PsyTexx 1.8/sources/arm_sound/PceNativeCall.h 3.59K
  • PsyTexx 1.8/sources/arm_sound/SimNative.cpp 770B
  • PsyTexx 1.8/sources/arm_sound/SimNative.h 1.45K
  • PsyTexx 1.8/sources/arm_sound/win32DLL/ dir
  • PsyTexx 1.8/sources/arm_sound/win32DLL/win32DLL.dsp 4.29K
  • PsyTexx 1.8/sources/arm_sound/win32DLL/win32DLL.dsw 541B
  • PsyTexx 1.8/sources/arm_sound/win32DLL/win32DLL.opt 47.50K
  • PsyTexx 1.8/sources/arm_sound/win32DLL/win32DLL.plg 1.44K
  • PsyTexx 1.8/sources/arm_sound/win32Player/ dir
  • PsyTexx 1.8/sources/arm_sound/win32Player/player.cpp 19.31K
  • PsyTexx 1.8/sources/arm_sound/win32Player/PsyTexx Player.dsp 4.68K
  • PsyTexx 1.8/sources/arm_sound/win32Player/PsyTexx Player.dsw 553B
  • PsyTexx 1.8/sources/arm_sound/win32Player/PsyTexx Player.opt 47.50K
  • PsyTexx 1.8/sources/arm_sound/win32Player/PsyTexx Player.plg 1.56K
  • PsyTexx 1.8/sources/arm_sound/win32SoundCompressor/ dir
  • PsyTexx 1.8/sources/arm_sound/win32SoundCompressor/main.cpp 1.65K
  • PsyTexx 1.8/sources/arm_sound/win32SoundCompressor/win32SoundCompressor.dsp 4.33K
  • PsyTexx 1.8/sources/arm_sound/win32SoundCompressor/win32SoundCompressor.dsw 565B
  • PsyTexx 1.8/sources/arm_sound/win32SoundCompressor/win32SoundCompressor.opt 47.50K
  • PsyTexx 1.8/sources/arm_sound/win32SoundCompressor/win32SoundCompressor.plg 1.32K
  • PsyTexx 1.8/sources/audio.h 579B
  • PsyTexx 1.8/sources/backup.pdb 12.56K
  • PsyTexx 1.8/sources/clean.bat 18B
  • PsyTexx 1.8/sources/Command Prompt.lnk 1.78K
  • PsyTexx 1.8/sources/docs/ dir
  • PsyTexx 1.8/sources/docs/license.txt 17.59K
  • PsyTexx 1.8/sources/docs/MOD/ dir
  • PsyTexx 1.8/sources/docs/MOD/modfil10.txt 65.80K
  • PsyTexx 1.8/sources/docs/MOD/modform.txt 17.10K
  • PsyTexx 1.8/sources/docs/notes_ru.txt 4.35K
  • PsyTexx 1.8/sources/docs/project_structure.txt 1.36K
  • PsyTexx 1.8/sources/e_utils.h 996B
  • PsyTexx 1.8/sources/finetune.h 4.35K
  • PsyTexx 1.8/sources/fonts/ dir
  • PsyTexx 1.8/sources/fonts/Tfnt0409.bin 2.34K
  • PsyTexx 1.8/sources/fonts/tfnt041b.bin 480B
  • PsyTexx 1.8/sources/fonts/tfnt041c.bin 1.12K
  • PsyTexx 1.8/sources/graphics/ dir
  • PsyTexx 1.8/sources/graphics/about.aur 189.61K
  • PsyTexx 1.8/sources/graphics/about.bmp 75.05K
  • PsyTexx 1.8/sources/graphics/about_summer.aur 138.48K
  • PsyTexx 1.8/sources/graphics/about_summer2.aur 157.63K
  • PsyTexx 1.8/sources/graphics/about_winter.aur 108.77K
  • PsyTexx 1.8/sources/graphics/empty_pic.bmp 7.08K
  • PsyTexx 1.8/sources/graphics/icon.bmp 190B
  • PsyTexx 1.8/sources/graphics/Menu1.bmp 9.82K
  • PsyTexx 1.8/sources/graphics/Menu2.bmp 9.82K
  • PsyTexx 1.8/sources/graphics/Menu3.bmp 9.82K
  • PsyTexx 1.8/sources/graphics/menu4.bmp 9.82K
  • PsyTexx 1.8/sources/graphics/pattern.bmp 1.15K
  • PsyTexx 1.8/sources/graphics/psytexx2.bmp 26.30K
  • PsyTexx 1.8/sources/graphics/Psytexx3.aur 42.75K
  • PsyTexx 1.8/sources/graphics/Psytexx3.bmp 23.49K
  • PsyTexx 1.8/sources/graphics/Psytexx3_summer.aur 40.97K
  • PsyTexx 1.8/sources/graphics/slider_echo.bmp 2.16K
  • PsyTexx 1.8/sources/graphics/slider_echolen.bmp 2.16K
  • PsyTexx 1.8/sources/graphics/slider_fine.bmp 2.16K
  • PsyTexx 1.8/sources/graphics/slider_thumb.bmp 294B
  • PsyTexx 1.8/sources/graphics/slider_vol.bmp 2.16K
  • PsyTexx 1.8/sources/graphics/Thumbs.db 42.00K
  • PsyTexx 1.8/sources/graphics/updown.bmp 390B
  • PsyTexx 1.8/sources/help_files/ dir
  • PsyTexx 1.8/sources/help_files/help.txt 6.70K
  • PsyTexx 1.8/sources/makefile.bat 634B
  • PsyTexx 1.8/sources/mod.h 20.32K
  • PsyTexx 1.8/sources/modplay.h 3.31K
  • PsyTexx 1.8/sources/mult.ld 448B
  • PsyTexx 1.8/sources/mult.s 561B
  • PsyTexx 1.8/sources/PDB_converter/ dir
  • PsyTexx 1.8/sources/PDB_converter/c--.exe 176.77K
  • PsyTexx 1.8/sources/PDB_converter/c--.ini 760B
  • PsyTexx 1.8/sources/PDB_converter/makefile.bat 42B
  • PsyTexx 1.8/sources/PDB_converter/mod2pdb.c-- 5.19K
  • PsyTexx 1.8/sources/PDB_converter/MOD2PDB.EXE 3.00K
  • PsyTexx 1.8/sources/PDB_converter/pdb2mod.c-- 3.89K
  • PsyTexx 1.8/sources/PDB_converter/PDB2MOD.EXE 2.00K
  • PsyTexx 1.8/sources/PDB_converter/sound.pdb 76B
  • PsyTexx 1.8/sources/PDB_converter/SoundDB 76B
  • PsyTexx 1.8/sources/PDB_converter/startup.h-- 15.38K
  • PsyTexx 1.8/sources/PDB_converter/WARNING 3.91K
  • PsyTexx 1.8/sources/PDB_converter/win/ dir
  • PsyTexx 1.8/sources/PDB_converter/win/advapi.h-- 20.16K
  • PsyTexx 1.8/sources/PDB_converter/win/ccanim.h-- 1.25K
  • PsyTexx 1.8/sources/PDB_converter/win/ccheader.h-- 1.11K
  • PsyTexx 1.8/sources/PDB_converter/win/cclist.h-- 6.23K
  • PsyTexx 1.8/sources/PDB_converter/win/ccprsht.h-- 2.37K
  • PsyTexx 1.8/sources/PDB_converter/win/cctab.h-- 2.67K
  • PsyTexx 1.8/sources/PDB_converter/win/cctree.h-- 4.38K
  • PsyTexx 1.8/sources/PDB_converter/win/commctrl.h-- 47.37K
  • PsyTexx 1.8/sources/PDB_converter/win/commdlg.h-- 12.43K
  • PsyTexx 1.8/sources/PDB_converter/win/lzexpand.h-- 919B
  • PsyTexx 1.8/sources/PDB_converter/win/opengl.h-- 48.67K
  • PsyTexx 1.8/sources/PDB_converter/win/readme32.txt 10.52K
  • PsyTexx 1.8/sources/PDB_converter/win/readme_e.txt 10.18K
  • PsyTexx 1.8/sources/PDB_converter/win/shellapi.h-- 10.02K
  • PsyTexx 1.8/sources/PDB_converter/win/string32.h-- 8.53K
  • PsyTexx 1.8/sources/PDB_converter/win/string32.txt 8.03K
  • PsyTexx 1.8/sources/PDB_converter/win/string_e.txt 8.01K
  • PsyTexx 1.8/sources/PDB_converter/win/winbase.h-- 45.48K
  • PsyTexx 1.8/sources/PDB_converter/win/windef.h-- 3.77K
  • PsyTexx 1.8/sources/PDB_converter/win/windows.h-- 1.63K
  • PsyTexx 1.8/sources/PDB_converter/win/winerror.h-- 39.34K
  • PsyTexx 1.8/sources/PDB_converter/win/wingdi.h-- 75.42K
  • PsyTexx 1.8/sources/PDB_converter/win/winsock.h-- 9.77K
  • PsyTexx 1.8/sources/PDB_converter/win/winuser.h-- 98.10K
  • PsyTexx 1.8/sources/PDB_converter/win/wsipx.h-- 267B
  • PsyTexx 1.8/sources/PDB_converter/win/wsnwlink.h-- 7.60K
  • PsyTexx 1.8/sources/psytexx.c 87.63K
  • PsyTexx 1.8/sources/psytexx.def 67B
  • PsyTexx 1.8/sources/psytexx_win32.dll 36.00K
  • PsyTexx 1.8/sources/sampler.h 6.88K
  • PsyTexx 1.8/sources/sound.h 3.14K
  • PsyTexx 1.8/sources/sound.rcp 10.30K

file_id.diz

#############################################
## Keys for changing octaves               ##
#############################################

### A - visible octaves: 1-3
### B - visible octaves: 2-4
### C - visible octaves: 3-5

#############################################
## Supported effects in the sample-editor  ##
#############################################

### Sample name format: "@xxx@ blah blah"
### where xxx - following sample effects:
### A - Anticlick
### S - High-quality portamento
### D - Distortion
### C - Simple cut-off
### W - Simple wah-wah

### Examples:
### @AD@samplename  - sample with anticlick
                      and distortion
### samplename      - just a sample 
                      without effects

#############################################
## Supported effects in the pattern-editor ##
#############################################

.-------------------------------------------.
|  Standart effects:                        |
`-------------------------------------------`
### Format: Exx (E - effect number; 
                 xx - parameter)
### 1xx - Portamento Up
### 2xx - Portamento Down
### 3xx - TonePortamento
### 9xx - SampleOffset
### Axx - VolumeSlide
### Bxx - PositionJump
### Cxx - Set Volume
### Dxx - PatternBreak
### Exx - Extended effects
### Fxx - Set Speed

.-------------------------------------------.
|  Extended effects:                        |
`-------------------------------------------`
### Format: ENx (E - E; N - effect number; 
                 x - parameter)
### E1x - Fineslide Up
### E2x - Fineslide Down
### EAx - FineVol Up
### EBx - FineVol Down

.-------------------------------------------.
|  PsyTexx1.x specific effects:             |
`-------------------------------------------`
### 6xx - Wah-wah speed
### 7xx - Cut-off value
### 8xx - Super-pitch note (FF - reset)

Cmd 1. Portamento up [Speed:$00-$FF]
------------------------------------
 Usage: $1 + portamento speed
 Portamento up will simply slide the
 sample pitch up. You can NOT slide
 higher than B-3! (Period 113)
 Example: C-300103  1 is the command,
            3 is the portamentospeed.
 NOTE: The portamento will be called as
 many times as the speed of the song.
 This means that you'll sometimes have
 trouble sliding accuratly. If you
 change the speed without changing the
 sliderates, it will sound bad...

Cmd 2. Portamento down [Speed:$00-FF]
-------------------------------------
 Usage: $2 + portamento speed
 Just like command 1, except that this
 one slides the pitch down instead.
 (Adds to the period).
 You can NOT slide lower than C-1!
 (Period 856)
 Example: C-300203  2 is the command,
            3 is the portamentospeed.
 
Cmd 3. Tone-portamento [Speed:$00-$FF]
--------------------------------------
 Usage: Dest-note + $3 + slidespeed
 This command will automatically slide
 from the old note to the new.
 You don't have to worry about which
 direction to slide, you need only set
 the slide speed. To keep on sliding,
 just select the command $3 + 00.
 Example: A-200000  First play a note.
          C-300305  C-3 is the note to
               slide to, 3 the command,
               and 5 the speed.

Cmd 9. Set SampleOffset [Offs:$00-$FF]
--------------------------------------
 Usage: $9 + Sampleoffset
 This command will play from a chosen
 position in the sample, and not from
 the beginning. The two numbers equal
 the two first numbers in the length
 of the sample. Handy for speech-
 samples.
 Example: C-300923  Play sample from
                    offset $2300.
  
Cmd A. Volumeslide [Speed:$0-$F/$0-$F]
--------------------------------------
 Usage: $A + upspeed + downspeed
 Example: C-300A05  5 is the speed to
                turn the volume down.
          C-300A40  4 is the speed to
                         slide it up.
 NOTE: The slide will be called as
 many times as the speed of the song.
 The slower the song, the more the
 volume will be changed on each note.
  
Cmd B. Position-jump [Pos:$00-$7F]
----------------------------------
 Usage: $B + position to continue at
 Example: C-300B01  B is the command,
                 1 is the position to
                 restart the song at.
 This command will also perform a
 pattern-break (see 2 pages below).
 You can use this command instead of
 restart as on noisetracker, but you 
 must enter the position in hex!
  
Cmd C. Set volume [Volume:$00-$40]
----------------------------------
 Usage: $C + new volume
 Well, this old familiar command will
 set the current volume to your own
 selected. The highest volume is $40.
 All volumes are represented in hex.
 (Programmers do it in hex, you know!)
 Example: C-300C10  C is the command,
       10 is the volume (16 decimal).
 
Cmd D. Pattern-break [Pattern-pos:00-63, decimal]
----------------------------
 Usage: $D + pattern-position
 This command just jumps to the next
 song-position, and continues play
 from the patternposition you specify.
 Example: C-300D00  Jump to the next
     song-position and continue play
            from patternposition 00.
      Or: C-300D32  Jump to the next
     song-position and continue play
    from patternposition 32 instead.

Cmd E1. Fineslide up [Range:$0-$F]
----------------------------------
 Usage: $E1 + value
 This command works just like the
 normal portamento up, except that
 it only slides up once. It does not
 continue sliding during the length of
 the note.
 Example: C-300E11  Slide up 1 at the
               beginning of the note.
 (Great for creating chorus effects)
  
Cmd E2. Fineslide down [Range:$0-$F]
------------------------------------
 Usage: $E2 + value
 This command works just like the
 normal portamento down, except that
 it only slides down once. It does not
 continue sliding during the length of
 the note.
 Example: C-300E26  Slide up 6 at the
               beginning of the note.

Cmd EA. FineVolsl up [Range:$0-$F]
----------------------------------
 Usage: $EA + value
 This command works just like the
 normal volumeslide up, except that
 it only slides up once. It does not
 continue sliding during the length of
 the note.
 Example: C-300EA3  Slide volume up 1
        at the beginning of the note.
  
Cmd EB. FineVolsl down [Range:$0-$F]
------------------------------------
 Usage: $EB + value
 This command works just like the
 normal volumeslide down, except that
 it only slides down once. It does not
 continue sliding during the length of
 the note.
 Example: C-300EB6  Slide volume down
       6 at the beginning of the note.

Cmd F. Set speed [Speed:$00-$FF]
--------------------------------
 Usage: $F + speed
 This command will set the speed of the
 song.26.05.02 14:03:51
Èòàê... Ïîæàëóé, âñåòàêè áóäó çàïèñûâàòü â êðàòöå õîä ðàáîòû íàä Psytexx.
Ñ ìîìåíòà ðåëèçà ïîñëåäíåé âåðñèè 0.4 îí óæå óñïåë ïðåâðàòèòüñÿ â íàñòîÿùèé òðåêåð. Íàêîíåö-òî...
Íî êîå-êàêèõ ôóíêöèé âñåæå åùå íå õâàòàåò... À èìåííî: êîïèðîâàíèÿ/âñòàâêè, î÷èñòêè ìîäóëÿ è çàïèñè. Êðîìå òîãî, 
ýòî ÷óäî åùå íèêòî ïîêà íå âèäåë, è íå ðåøåí âîïðîñ ïî ïîâîäó åãî ðàñïðîñòðàíåíèÿ. Õîòåëîñü áû èçâëå÷ü õîòü êàêóþ-òî
ïðèáûëü, íî, ñ äðóãîé ñòîðîíû, íå õî÷åòñÿ çàðàíåå îòòàëêèâàòü îò ñåáÿ oldskool ìóçûêàíòîâ... Åñëè èì ýòî êîíå÷íî íàäî
áóäåò .)    È åùå... Òóò ñåññèÿ êàê-òî íåçàìåòíî ïîäêðàëàñü... Òàê-÷òî íåêîòîðîå âðåìÿ ïðèäåòñÿ ïîòîðìîçèòü. Ïîêà âñå.

26.05.02 19:54:31
Äîáàâèë î÷èñòêó ïàëèòð.

30.05.02 17:35:04
Âðîäå äîäåëàë ôóíêöèþ çàïèñè â òåêóùèé îòêðûòûé ÌÎÄ-ôàéë... Ïîêà ðàáîòàåò .)  Íî óæå âîçíèêëè ïðîáëåìû:
íå ïîëó÷àåòñÿ âûäåëèòü ðîâíî 64 êá ïàìÿòè :( Áóäåì ðàçáèðàòüñÿ.

31.05.02 17:27:40
Íå õî÷åò ðàáîòàòü ôóíêöèÿ âûâîäà òåêñòà â ïîëå... Òóäû åå :(

31.05.02 18:06:29
Ïîïðàâèë.

02.06.02 18:52:08
Èñïðàâèë îøèáêó ïðè çàïèñè òåêóùåãî ìîäóëÿ. Íå òåðïèòñÿ íàêîíåö äîäåëàòü ïåðâóþ âåðñèþ è
ïîïðîáûâàòü åå â äåëå...

16.06.02 14:58:44
Íó âñå... Ïåðâàÿ âåðñèÿ îêîí÷àòåëüíî äîäåëàíà... Âðîäå :) Íó ãëþêè îíè âñåãäà è âåçäå åñòü, òàê ÷òî ïîòèõîíüêó áóäåì 
èñïðàâëÿòü.

17.03.03 00:18:00
Èíòåðåñíî, êàê ýòî ìåíÿ ñþäà ñíîâà çàíåñëî... :)  Âîîáùåì ñäåëàë ïîääåðæêó Tungsten'à - òåïåðü ìîäû ìîæíî â íàóøíèêàõ ïèñàòü.
Êðîìå òîãî äîáàâèë íåñêîëüêî ïîëåçíîñòåé, à èìåííî 4 ôóíêöèè, âûçûâàåìûå èç îáëàñòè ãðàôôèòè:
1 - êëîíèðîâàíèå òåêóùåãî ýôôåêòà íà âåñü êàíàë
2 - ðàçìíîæåíèå òåêóùåãî áëîêà íà âåñü êàíàë (áëîêîì ñ÷èòàåòñÿ ïðîìåæóòîê îò íà÷àëà ïàëèòðû äî ïîëîæåíèÿ êóðñîðà âêëþ÷èòåëüíî)
3 - ýõî (îäíî- è äâóõêàíàëüíîå)
4 - ïîâûøåíèå/ïîíèæåíèå íà òîí âñåõ íîò â òåêóùåì êàíàëå
5 - ïëàâíîå èçìåíåíèå ãðîìêîñòè êàíàëà.
Íà ñåãîäíÿ õâàòèò :) Çàâòðà áóäåì èñïûòûâàòü...

20.03.03 23:49:23
Óôô... Âñåòàêè òàêèå ãëóïûå îøèáêè ïîðîé áûâàþò... Áóêâàëüíî èç çà îäíîãî ñèìâîëà âñÿ ïðîãà ðóøèòñÿ. Íåñêîëüêî äíåé èñêàë :( Íàäî áûòü âíèìàòåëüíåå. Ñîáñòâåííî ãîâîðÿ ÿ òàê è íå âðóáèëñÿ, êàê ìîæíî èç Tungsten'à âûãðóæàòü ïðîèçâîëüíóþ áàçó äàííûõ :) Ñòðàííî... Ïðèøëîñü óõèùðåíèå îäíî ñäåëàòü: òåïåðü ïîñëå âûõîäà èç òðåêåðà òåêóùàÿ êîìïîçèöèÿ ñîõðàíÿåòñÿ â BACKUP.MOD. Òîëüêî íå çàáóäüòå ýòîò BACKUP èíñòàëëèðîâàòü âìåñòå ñ ñàìîé ïðîãîé, è òîãäà ïîñëå êàæäîé ñèíõðîíèçàöèè ñ äåñêòîïîì ôàéëèê BACKUP_MOD.PDB áóäåò ëåæàòü â êàòàëîãå PALM/.../BACKUP. Îñòàíåòñÿ åãî ëèøü ñêîíâåðòèðîâàòü â íîðìàëüíûé MOD è ìîæíî áóäåò íàñëîæäàòüñÿ ìóçîíîì, êîòîðûé áûë çàãðóæåí â òðåêåðå ïåðåä ñàìûì âûõîäîì.
 áëèæàéøèõ ïëàíàõ - ðåäàêòîð ñåìïëîâ + çàïèñü ñ ìèêðîôîíà. PsyTexx ðóëèò :))
À òåïåðü... ãì... ñïàòü? :)

07.04.03 00:38:48
Ïåðâàÿ âåðñèÿ ðåäàêòîðà ñåìïëîâ óäà÷íî ñòàðòîâàëà :) Ðàáîòàåò çàïèñü èç ïàëèòð è ñ ìèêðîôîíà.

26.08.03 18:24:00
Êàðòèíà "Íå æäàëè". Íåñêîëüêî äíåé íàçàä îêàçàëîñü, ÷òî ÿ âñ¸ ýòî âðåìÿ íåïðàâèëüíî ðàáîòàë ñî çâóêîâîé
ñèñòåìîé Ïàëüìà .( Æóòü... Ýòîæ ñêîëüêî áûëî ëèøíèõ ïðîáëåì èç çà îäíîé òîëüêî íåäîðàáîòêè. Ïðè÷åì
íà ìî¸ì TungstenT òàêîé ñïîñîá ñðàáàòûâàë, à âîò íà íîâåíüêèõ Zire è T|C âîçíèêëè ñåðüåçíûå ïðîáëåìû. 
Òåïåðü äóìàþ, êàê ïîä ýòî ïîäñòðîèòü ArmZX. À âîò PsyTexx, êàæèñü, ñåãîäíÿ óæå ïåðåäåëàë íà íîâûé ëàä .)
Åñëè âñ¸ ïîéäåò òàê êàê íàäî, òî èãðàòü îí áóäåò îáñîëþòíî íà ëþáîé ìàøèíêå.

22.04.04 23:49:00
Óô... Îáíîâêà â âèäå âîñüìè êàíàëîâ :)  Íî ñêîëüêî áàãîâ... íåïîíÿòíîãî ïðîèñõîæäåíèÿ...  Ïðàâèì.

24.04.04 09:49:00
Âñ¸ êðóòî :) 8 êàíàëîâ, ñòåðåî, 16 áèò. Äâèãàþ ïàðó, îïòèìèçèðóþ ðåíäåð ïîä ARM. Ñëàâíîå íà÷àëî äíÿ. Åùå ìàëîñòü ïîääåëàþ è íà÷íó ðàáîòó íàä ñàéòîì "Palm Music Central" - ïåðâûé â ìèðå, íàñêîëüêî ÿ ïîíèìàþ. Äàâíî ïîðà.
Ïðîáåæàëñÿ ïî âñåìó êîäó òðåêåðà... :)  Ýòî êàê NightRadio: øóì ýôèðà, ñêâîçü êîòîðûé ïðîáèâàþòñÿ êàêèå-òî î÷åíü êðàñèâûå çâóêè. Äóìàë íàä îòêðûòèåì èñõîäíèêîâ - ãëàâíîå íàðîä íå ñïóãíóòü :)

25.04.04 19:00:00
Ïðîöåññ èä¸ò :)  Êðîìå XM-äâèæêà... ÷òî-òî òàì íå ëàäèòñÿ. Íó íè÷åãî, ïîïðàâèì. À â íàðîä ïîêà MOD äâèãàòü áóäåì.

27.05.04 20:13:00
Gjcnb xnj ktnj yfcnegbkj - cjkysir.... fuck.. :(   translit is no so good.
Voobshem poporjadku:
1) XM player is working now!
2) It's working in Windows, Linux and PalmOS (!!)
3) It has high-end frequency interpolation! It's much better than standart XM-quality!
ToDo:
1) Some XM-effects
2) Multiplatform GUI (with text mode support)
3) Multiplatform XM-tracker! PsyTexx 2

Path: pdxgate!usenet.ee.pdx.edu!ogicse!network.ucsd.edu!usc!wupost!uunet!pipex!marble.uknet.ac.uk!uknet!edcastle!iantw
From: iantw@castle.ed.ac.uk (Ian Tweedie)
Newsgroups: comp.sys.ibm.pc.demos
Subject: Re: Does anyone have the MOD file format?
Message-ID: <33868@castle.ed.ac.uk>
Date: 5 Apr 93 11:48:50 GMT
References: <lru8ebINN79h@earth.cs.utexas.edu> <LESHER.93Apr4142851@vega.cs.bucknell.edu>
Organization: Edinburgh University
Lines: 542

lesher@vega.cs.bucknell.edu (Tim Lesher) writes:

>I don't have it, but I seem to remember that there's a really good
>tutorial packaged with the Mac mod player "The Sound Trecker".  You
>can get if from wuarchive.wustl.edu, /mirrors/info-mac/sound/st.

Here is the Amiga (ProTracker) module format document. The first part
I got from a BBS, the second part I got from Mark Cox (author of
ModPlay, etc).
 
*********************************************************************
 
 
Protracker 1.1B Song/Module Format:
 
Offset  Bytes  Description
   0     20    Songname. Remember to put trailing null bytes at the end...
 
Information for sample 1-31:
 
Offset  Bytes  Description
  20     22    Samplename for sample 1. Pad with null bytes.
  42      2    Samplelength for sample 1. Stored as number of words.
               Multiply by two to get real sample length in bytes.
  44      1    Lower four bits are the finetune value, stored as a signed
               four bit number. The upper four bits are not used, and
               should be set to zero.
               Value:  Finetune:
                 0        0
                 1       +1
                 2       +2
                 3       +3
                 4       +4
                 5       +5
                 6       +6
                 7       +7
                 8       -8
                 9       -7
                 A       -6
                 B       -5
                 C       -4
                 D       -3
                 E       -2
                 F       -1
 
  45      1    Volume for sample 1. Range is $00-$40, or 0-64 decimal.
  46      2    Repeat point for sample 1. Stored as number of words offset
               from start of sample. Multiply by two to get offset in bytes.
  48      2    Repeat Length for sample 1. Stored as number of words in
               loop. Multiply by two to get replen in bytes.
 
Information for the next 30 samples starts here. It's just like the info for
sample 1.
 
Offset  Bytes  Description
  50     30    Sample 2...
  80     30    Sample 3...
   .
   .
   .
 890     30    Sample 30...
 920     30    Sample 31...
 
Offset  Bytes  Description
 950      1    Songlength. Range is 1-128.
 951      1    Well... this little byte here is set to 127, so that old
               trackers will search through all patterns when loading.
               Noisetracker uses this byte for restart, but we don't.
 952    128    Song positions 0-127. Each hold a number from 0-63 that
               tells the tracker what pattern to play at that position.
1080      4    The four letters "M.K." - This is something Mahoney & Kaktus
               inserted when they increased the number of samples from
               15 to 31. If it's not there, the module/song uses 15 samples
               or the text has been removed to make the module harder to
               rip. Startrekker puts "FLT4" or "FLT8" there instead.
 
Offset  Bytes  Description
1084    1024   Data for pattern 00.
   .
   .
   .
xxxx  Number of patterns stored is equal to the highest patternnumber
      in the song position table (at offset 952-1079).
 
Each note is stored as 4 bytes, and all four notes at each position in
the pattern are stored after each other.
 
00 -  chan1  chan2  chan3  chan4
01 -  chan1  chan2  chan3  chan4
02 -  chan1  chan2  chan3  chan4
etc.
 
Info for each note:
 
 _____byte 1_____   byte2_    _____byte 3_____   byte4_
/                 /        /                 /      
0000          0000-00000000  0000          0000-00000000
 
Upper four    12 bits for    Lower four    Effect command.
bits of sam-  note period.   bits of sam-
ple number.                  ple number.
 
Periodtable for Tuning 0, Normal
  C-1 to B-1 : 856,808,762,720,678,640,604,570,538,508,480,453
  C-2 to B-2 : 428,404,381,360,339,320,302,285,269,254,240,226
  C-3 to B-3 : 214,202,190,180,170,160,151,143,135,127,120,113
 
To determine what note to show, scan through the table until you find
the same period as the one stored in byte 1-2. Use the index to look
up in a notenames table.
 
This is the data stored in a normal song. A packed song starts with the
four letters "PACK", but i don't know how the song is packed: You can
get the source code for the cruncher/decruncher from us if you need it,
but I don't understand it; I've just ripped it from another tracker...
 
In a module, all the samples are stored right after the patterndata.
To determine where a sample starts and stops, you use the sampleinfo
structures in the beginning of the file (from offset 20). Take a look
at the mt_init routine in the playroutine, and you'll see just how it
is done.
 
Lars "ZAP" Hamre/Amiga Freelancers
 
--------------------------
 
Found that document...
 
Mark J Cox ------------------------------------------- m.j.h.cox@bradford.ac.uk
University of Bradford ---------------------------- bc732@cleveland.freenet.edu
Mark
 
             EFFECT COMMANDS
             ---------------
 Effect commands on protracker should
 be compatible with all other trackers.
 0 - None/Arpeggio     8 - * NOT USED *
 1 - Portamento Up     9 - SampleOffset
 2 - Portamento Down   A - VolumeSlide
 3 - TonePortamento    B - PositionJump
 4 - Vibrato           C - Set Volume
 5 - ToneP + VolSlide  D - PatternBreak
 6 - Vibra + VolSlide  E - Misc. Cmds
 7 - Tremolo           F - Set Speed
 
 
              E - COMMANDS
              ------------
 The E command has been altered to
 contain more commands than one.
 E0- Filter On/Off     E8- * NOT USED *
 E1- Fineslide Up      E9- Retrig Note
 E2- Fineslide Down    EA- FineVol Up
 E3- Glissando Control EB- FineVol Down
 E4- Vibrato Control   EC- NoteCut
 E5- Set Finetune      ED- NoteDelay
 E6- Patternloop       EE- PatternDelay
 E7- Tremolo Control   EF- Invert Loop
 
 
  Cmd 0. Arpeggio [Range:$0-$F/$0-$F]
  -----------------------------------
 Usage: $0 + 1st halfnote add
           + 2nd halfnote add
 Arpeggio is used to simulate chords.
 This is done by rapidly changing the
 pitch between 3(or 2) different notes.
 It sounds very noisy and grainy on
 most samples, but ok on monotone ones.
 Example: C-300047  C-major chord:
          (C+E+G  or C+4+7 halfnotes)
          C-300037  C-minor chord:
          (C+D#+G or C+3+7 halfnotes)
 
 
  Cmd 1. Portamento up [Speed:$00-$FF]
  ------------------------------------
 Usage: $1 + portamento speed
 Portamento up will simply slide the
 sample pitch up. You can NOT slide
 higher than B-3! (Period 113)
 Example: C-300103  1 is the command,
            3 is the portamentospeed.
 NOTE: The portamento will be called as
 many times as the speed of the song.
 This means that you'll sometimes have
 trouble sliding accuratly. If you
 change the speed without changing the
 sliderates, it will sound bad...
 
 
  Cmd 2. Portamento down [Speed:$00-FF]
  -------------------------------------
 Usage: $2 + portamento speed
 Just like command 1, except that this
 one slides the pitch down instead.
 (Adds to the period).
 You can NOT slide lower than C-1!
 (Period 856)
 Example: C-300203  2 is the command,
            3 is the portamentospeed.
 
 
 Cmd 3. Tone-portamento [Speed:$00-$FF]
 --------------------------------------
 Usage: Dest-note + $3 + slidespeed
 This command will automatically slide
 from the old note to the new.
 You don't have to worry about which
 direction to slide, you need only set
 the slide speed. To keep on sliding,
 just select the command $3 + 00.
 Example: A-200000  First play a note.
          C-300305  C-3 is the note to
               slide to, 3 the command,
               and 5 the speed.
 
 
 Cmd 4. Vibrato [Rate:$0-$F,Dpth:$0-$F]
 --------------------------------------
 Usage: $4 + vibratorate + vibratodepth
 Example: C-300481  4 is the command,
       8 is the speed of the vibrato,
   and 1 is the depth of the vibrato.
 To keep on vibrating, just select
 the command $4 + 00. To change the
 vibrato, you can alter the rate,
 depth or both. Use command E4- to
 change the vibrato-waveform.
 
 
 Cmd 5. ToneP + Volsl [Spd:$0-$F/$0-$F]
 --------------------------------------
 Usage: $5 + upspeed + downspeed
 This command will continue the current
 toneportamento and slide the volume
 at the same time. Stolen from NT2.0.
 Example: C-300503  3 is the speed to
                turn the volume down.
          C-300540  4 is the speed to
                         slide it up.
 
 
 Cmd 6. Vibra + Volsl [Spd:$0-$F/$0-$F]
 --------------------------------------
 Usage: $6 + upspeed + downspeed
 This command will continue the current
 vibrato and slide the volume at the
 same time. Stolen from NT2.0.
 Example: C-300605  5 is the speed to
                turn the volume down.
          C-300640  4 is the speed to
                         slide it up.
 
 
 Cmd 7. Tremolo [Rate:$0-$F,Dpth:$0-$F]
 --------------------------------------
 Usage: $7 + tremolorate + tremolodepth
 Tremolo vibrates the volume.
 Example: C-300794  7 is the command,
       9 is the speed of the tremolo,
   and 4 is the depth of the tremolo.
 To keep on tremoling, just select
 the command $7 + 00. To change the
 tremolo, you can alter the rate,
 depth or both. Use command E7- to
 change the tremolo-waveform.
 
 
 Cmd 9. Set SampleOffset [Offs:$00-$FF]
 --------------------------------------
 Usage: $9 + Sampleoffset
 This command will play from a chosen
 position in the sample, and not from
 the beginning. The two numbers equal
 the two first numbers in the length
 of the sample. Handy for speech-
 samples.
 Example: C-300923  Play sample from
                    offset $2300.
 
 
 Cmd A. Volumeslide [Speed:$0-$F/$0-$F]
 --------------------------------------
 Usage: $A + upspeed + downspeed
 Example: C-300A05  5 is the speed to
                turn the volume down.
          C-300A40  4 is the speed to
                         slide it up.
 NOTE: The slide will be called as
 many times as the speed of the song.
 The slower the song, the more the
 volume will be changed on each note.
 
 
   Cmd B. Position-jump [Pos:$00-$7F]
   ----------------------------------
 Usage: $B + position to continue at
 Example: C-300B01  B is the command,
                 1 is the position to
                 restart the song at.
 This command will also perform a
 pattern-break (see 2 pages below).
 You can use this command instead of
 restart as on noisetracker, but you 
 must enter the position in hex!
 
 
   Cmd C. Set volume [Volume:$00-$40]
   ----------------------------------
 Usage: $C + new volume
 Well, this old familiar command will
 set the current volume to your own
 selected. The highest volume is $40.
 All volumes are represented in hex.
 (Programmers do it in hex, you know!)
 Example: C-300C10  C is the command,
       10 is the volume (16 decimal).
 
 
      Cmd D. Pattern-break
      [Pattern-pos:00-63, decimal]
      ----------------------------
 Usage: $D + pattern-position
 This command just jumps to the next
 song-position, and continues play
 from the patternposition you specify.
 Example: C-300D00  Jump to the next
     song-position and continue play
            from patternposition 00.
      Or: C-300D32  Jump to the next
     song-position and continue play
    from patternposition 32 instead.
 
 
    Cmd E0. Set filter [Range:$0-$1]
    --------------------------------
 Usage: $E0 + filter-status
 This command jerks around with the
 sound-filter on some A500 + A2000.
 All other Amiga-users should keep out
 of playing around with it.
 Example: C-300E01  disconnects filter
                 (turns power LED off)
          C-300E00  connects filter
                  (turns power LED on)
 
 
   Cmd E1. Fineslide up [Range:$0-$F]
   ----------------------------------
 Usage: $E1 + value
 This command works just like the
 normal portamento up, except that
 it only slides up once. It does not
 continue sliding during the length of
 the note.
 Example: C-300E11  Slide up 1 at the
               beginning of the note.
 (Great for creating chorus effects)
 
 
  Cmd E2. Fineslide down [Range:$0-$F]
  ------------------------------------
 Usage: $E2 + value
 This command works just like the
 normal portamento down, except that
 it only slides down once. It does not
 continue sliding during the length of
 the note.
 Example: C-300E26  Slide up 6 at the
               beginning of the note.
 
 
  Cmd E3. Glissando Ctrl [Range:$0-$1]
  ------------------------------------
 Usage: $E3 + Glissando-Status
 Glissando must be used with the tone-
 portamento command. When glissando is
 activated, toneportamento will slide
 a halfnote at a time, instead of a
 straight slide.
 Example: C-300E31  Turn Glissando on.
          C-300E30  Turn Glissando off.
 
 
      Cmd E4. Set vibrato waveform
      [Range:$0-$3]
      ----------------------------
 Usage: $E4 + vibrato-waveform
 Example: C-300E40  Set sine(default)
               E44  Don't retrig WF
          C-300E41  Set Ramp Down
               E45  Don't retrig WF
          C-300E42  Set Squarewave
               E46  Don't retrig WF
          C-300E43  Set Random
               E47  Don't retrig WF
 
 
   Cmd E5. Set finetune [Range:$0-$F]
   ----------------------------------
 Usage: $E5 + finetune-value
 Example: C-300E51  Set finetune to 1.
 Use these tables to figure out the
 finetune-value.
 Finetune: +7 +6 +5 +4 +3 +2 +1  0
    Value:  7  6  5  4  3  2  1  0
 Finetune: -1 -2 -3 -4 -5 -6 -7 -8
    Value:  F  E  D  C  B  A  9  8
 
 
   Cmd E6. PatternLoop [Loops:$0-$F]
   ----------------------------------
 Usage: $E6 + number of loops
 This command will loop a part of a
 pattern.
 Example: C-300E60  Set loopstart.
          C-300E63  Jump to loop 3
           times before playing on.
 
 
      Cmd E7. Set tremolo waveform
      [Range:$0-$3]
      ----------------------------
 Usage: $E7 + tremolo-waveform
 Example: C-300E70  Set sine(default)
               E74  Don't retrig WF
          C-300E71  Set Ramp Down
               E75  Don't retrig WF
          C-300E72  Set Squarewave
               E76  Don't retrig WF
          C-300E73  Set Random
               E77  Don't retrig WF
 
 
    Cmd E9. Retrig note [Value:$0-$F]
    ---------------------------------
 Usage: $E9 + Tick to Retrig note at.
 This command will retrig the same note
 before playing the next. Where to
 retrig depends on the speed of the
 song. If you retrig with 1 in speed 6
 that note will be trigged 6 times in
 one note slot. Retrig on hi-hats!
 Example: C-300F06  Set speed to 6.
          C-300E93  Retrig at tick 3
                    out of 6.
 
 
   Cmd EA. FineVolsl up [Range:$0-$F]
   ----------------------------------
 Usage: $EA + value
 This command works just like the
 normal volumeslide up, except that
 it only slides up once. It does not
 continue sliding during the length of
 the note.
 Example: C-300EA3  Slide volume up 1
        at the beginning of the note.
 
 
  Cmd EB. FineVolsl down [Range:$0-$F]
  ------------------------------------
 Usage: $EB + value
 This command works just like the
 normal volumeslide down, except that
 it only slides down once. It does not
 continue sliding during the length of
 the note.
 Example: C-300EB6  Slide volume down
       6 at the beginning of the note.
 
 
     Cmd EC. Cut note [Value:$0-$F]
     ------------------------------
 Usage: $EC + Tick to Cut note at.
 This command will cut the note
 at the selected tick, creating
 extremely short notes.
 Example: C-300F06  Set speed to 6.
          C-300EC3  Cut at tick 3 out
                    of 6.
 Note that the note is not really cut,
 the volume is just turned down.
 
 
     Cmd ED. NoteDelay [Value:$0-$F]
     -------------------------------
 Usage: $ED + ticks to delay note.
 This command will delay the note
 to the selected tick.
 Example: C-300F06  Set speed to 6.
          C-300ED3  Play note at tick
                    3 out of 6.
 
 
   Cmd EE. PatternDelay [Notes:$0-$F]
   ----------------------------------
 Usage: $EE + notes to delay pattern.
 This command will delay the pattern
 the selected numbers of notes.
 Example: C-300EE8  Delay pattern 8
           notes before playing on.
 All other effects are still active
 when the pattern is being delayed.
 
 
    Cmd EF. Invert Loop [Speed:$0-$F]
    ---------------------------------
 Usage: $EF + Invertspeed
 This command will need a short loop
 ($10,20,40,80 etc. bytes) to work.
 It will invert the loop byte by byte.
 Sounds better than funkrepeat...
 Example: C-300EF8 Set invspeed to 8.
 To turn off the inverting, set 
 invspeed to 0, or press ctrl + Z.
 
 
    Cmd F. Set speed [Speed:$00-$FF]
    --------------------------------
 Usage: $F + speed
 This command will set the speed of the
 song.  
 
 



---------------------------end forwarded message----------------------------
-- 
 --Jeff Hartung--  	
 Disclaimer: My opinions only, etc., etc., BLAH! BLAH! BLAH!...
 InterNet - hartung@crl.ucsd.edu    	 BITNET - hartung@ucsd
 UUCP - ucsd!crl.ucsd.edu!hartung


This is a reposting for an earlier one.

Enjoy.....

ian




MODFIL10.TXT                                      THUNDER (kurtt@sfu.ca)
________________________________________________________________________



           Public file MODFIL10.TXT - Version 1.0 - by Thunder


Introduction
_______________________________

What this file attempts  to do is describe  the MOD format in  detail and
elaborate on the 'effects' that are possible.  This is the  first version
of this file, so if there are mistakes (and I expect at  least a couple),
please let me  know.   This information was  compiled from  a variety  of
sources, many  of them  anonymous, so  I will  thank them  all, and  they
hopefully know who they are.  I would like to keep this  file up to date.
It will be posted as 'MODFILxx.TXT' or 'MODFILxx.ZIP', where 'xx'  is the
version number (MODFIL10.TXT being the first release).

I assume that you  have some prior knowledge  of some 'technical'  terms,
including: sample, channel (or voice), frequency, logarithmic  vs. linear
volume, byte,  word,  long integer,  and  hexadecimal  format.   It  also
assumes  that  you  know  something  about  the  machine  that   you  are
programming on.   If you do  not know  these things,  this file will  NOT
teach you them.  Refer to other sources before going further.

I am a  PC programmer, so  I cannot  elaborate on particular  procedures,
routines, methodologies,  or  tricks  that  can  be  performed  on  other
architechtures.  I have written routines for the Gravis UltraSound,
which is probably the easiest sound card (on the PC anyway) to  write MOD
routines for.

I disclaim everything  in this file.   This information  is for your  use
personally, but I  don't care  if you  give it  to everyone  else on  the
planet.   I would  like the  file  to stay  intact, and  if  you use  the
information a 'hello' to me in your program's credits would be nice.   If
the information is wrong or gives you problems or damages  your equipment
or person, tough luck.   I am  not responsible for  anything you DO  with
this information.

If you have additions, corrections, clarification or questions about this
information or this file, you can send them to me through the internet to
'kurt.kennett@gravis.com' or 'kurtt@sfu.ca'.

Here is an overview of what is in this file:

1 General
2 File Format
  2.1 Song Name
  2.2 Sample Information
  2.3 Number of patterns in song
  2.4 Song end jump position
  2.5 Pattern table
  2.6 File format tag
  2.7 Patterns
  2.8 Sample data

_______________________________________________________________________
                                                                      1



MODFIL10.TXT                                      THUNDER (kurtt@sfu.ca)
________________________________________________________________________

3 Playing the files
  3.1 Timing
  3.2 Periods
  3.3 Fine-Tuning
  3.4 Effects
  3.5 Other information
4 Period and Volume tables



1.0 General
___________________________________________

Files with the  extension '.MOD'  are sequenced  music files.   The  file
format has it's  roots in  the Commodore  Amiga computer  (ugh!).   These
files use different  digital 'samples' played  at various frequencies  to
create three  octaves  of  'notes'  for  that sample.    In  addition  to
different 'notes', there  are a large  number of  'effects' which can  be
done to produce variations on the different notes.

There are many variations on the MOD format.  Since the format originated
on the Commodore Amiga computer, the files were geared towards  a machine
with  4 voices.  These days, with a GUS (Gravis UltraSound),  you have 32
independent voices.  If you are  programming for a sound board  or device
that has only 1 or 2 digital voices, you will have to  mix together the 4
to 8 output channels into those voices.  I will not go  into this process
here, since I do not  have experience with it  (you don't need to  mix on
the GUS).  If someone would like to mail me a TEXT explaination of how to
do the mixing, I  will include it in  this file.  I  DO NOT WANT CODE  --
learn how to write english.

The earliest versions of the MOD format used a maximum of  15 instruments
and had 4  channels.   Through some  modifications in  format, a  'newer'
standard emerged, with a maximum of 31 instruments and up to  8 channels.
You can tell what format of file you are working with by a four-character
tag field.  The programs that are  used to play these files on  the Amiga
are called 'Noisetracker', 'Soundtracker', and 'Protracker'.



2.0 File Format
_______________________________

What follows is a description of  a file broken down in  a field-by-field
format.  This is  just a general description.   Please see the  following
subsections for a detailed description of what each field is and  what it
means.

'Big-End Word' refers to the word format on the Amiga.  A  2-byte integer
value  is  a  word.    On   the  Amiga,  this  value  has   the  internal
representation HHLL, where HH means the high-order byte and LL  means the
low-order byte.  The Intel chips (inside PCs) use a LLHH format for their
words.  This means that if you are writing routines for the  PC, you have
to flip the high and low order bytes to retrieve meaningful values.

_______________________________________________________________________
                                                                      2



MODFIL10.TXT                                      THUNDER (kurtt@sfu.ca)
________________________________________________________________________

Just to piss  off all  the C  programmers, I'm  going to  start the  file
offset at 1 instead of 0.

 Offset   Length   Format    Description
======== ======== ========= =============
      1       20   Chars     Title of the song.  If the title is not a
                             full 20 chars in length, it will be null-
                             terminated.

     21       22   Chars     Sample 1 name.  If the name is not a full
                             22 chars in length, it will be null
                             terminated.

     43        2   Big-End   Sample 1 length in 2-byte words.  Multiply
                   Word      this value by 2 to get the length of the
                             sample in bytes.

     45        1   SNibble   Sample 1 finetune.

     46        1   Byte      Sample 1 linear volume.

     47        2   Big-End   Sample 1 repeat offset in 2-byte words.
                   Word      Multiply this value by 2 to get the position
                             in bytes.

     49        2   Big-End   Sample 1 repeat length in 2-byte words.
                   Word      Multiply this value by 2 to get the length
                             in bytes.

     51       30             Sample 2 information.  Same format.
     81       30             Sample 3 information   Same format.

     .        There will either be 15 or 31 sample information blocks.
     .        See the format tag field below for a description of how
     .        to find out how many instruments there are.  We'll go on
     .        the assumption that there are 31 instruments in the file.

    921       30             Sample 31 information.

    951        1   Byte      Number of patterns in SONG as played.

    952        1   Byte      Song end jump position.

    953      128   Bytes     Pattern Table.  These list up to 128
                             pattern numbers and the order they should
                             be played in.

   1081        4   Chars     File format tag.

   1085 ... Pattern and Sample data.  Please see pattern section and
            sample section for more information.




_______________________________________________________________________
                                                                      3



MODFIL10.TXT                                      THUNDER (kurtt@sfu.ca)
________________________________________________________________________

2.1 Song Name
_______________________________

This data is pretty  self-representative.  This is  a C 'string' that  is
null-terminated (i.e. ASCII character 0 is put at the end of the  text is
the text does not  fill up the  entire field).   Some module writers  use
this field and the  instrument name fields to  write 'hello' messages  to
their friends or dedications instead of giving names to the song  or it's
samples.  I in no way discourage this.



2.2 Sample Information
_______________________________

Based on the format tag field, there can be 15 or 31  sampled instruments
for the song.  These days it is  rare to run into an 'older'  format song
with only 15  instruments.  Please  see the 'File  format tag' field  for
more information on  how to  determine how many  samples there  are in  a
file.

The first field in a sample  information block is the sample's name.   As
was mentioned above, these names are  frequently used by the  composer to
say hello to his or her friends.  Again, I in no way discourage this.  If
the sample name begins with a '#' character (ASCII $23 (35)) then this is
assumed not to be an instrument name, and is probably a message.

The second field is the sample  length in words.  Once again,  since this
is a 680x0 word, the bytes have the order HHLL, and you have to swap them
to use the word on PCs.  The first 2 bytes of the sample  are used by the
Amiga players for repeat information, and  therefore are NOT part  of the
playable data.  Therefore, if this field is evaluated to a length of less
than 3 bytes, there is NO sample.

The third field is the sample's  initial finetune value.  The  lower four
bits represent a signed  nibble (-8..7). Each  finetune step changes  the
note 1/8th  of  a  semitone.   This  is  implemented by  switching  to  a
different table of period-values  for each finetune  value.  See  section
3.2 for a discussion of fine-tuning.

The fourth  field is  the sample's  playback volume.    These are  LINEAR
values that range from 0 to 64, with 64 being maximum volume.  If you are
implementing a  MOD  player,  remember  to  check  if  you  need  to  use
logarithmic volumes.  'Decibel' is a logrithmical unit,  which represents
how we feel  sound intensity.   The volume  and decibel  value table  for
conversions is on the next page.









_______________________________________________________________________
                                                                      4



MODFIL10.TXT                                      THUNDER (kurtt@sfu.ca)
________________________________________________________________________

            Volume  Decibel Value     Volume  Decibel Value
         -------------------------  ------------------------
              64         0.0            32        -6.0
              63        -0.1            31        -6.3
              62        -0.3            30        -6.6
              61        -0.4            29        -6.9
              60        -0.6            28        -7.2
              59        -0.7            27        -7.5
              58        -0.9            26        -7.8
              57        -1.0            25        -8.2
              56        -1.2            24        -8.5
              55        -1.3            23        -8.9
              54        -1.5            22        -9.3
              53        -1.6            21        -9.7
              52        -1.8            20       -10.1
              51        -2.0            19       -10.5
              50        -2.1            18       -11.0
              49        -2.3            17       -11.5
              48        -2.5            16       -12.0
              47        -2.7            15       -12.6
              46        -2.9            14       -13.2
              45        -3.1            13       -13.8
              44        -3.3            12       -14.5
              43        -3.5            11       -15.3
              42        -3.7            10       -16.1
              41        -3.9             9       -17.0
              40        -4.1             8       -18.1
              39        -4.3             7       -19.2
              38        -4.5             6       -20.6
              37        -4.8             5       -22.1
              36        -5.0             4       -24.1
              35        -5.2             3       -26.6
              34        -5.5             2       -30.1
              33        -5.8             1       -36.1
                                         0    Minus infinity

The reason  for  the  table starting  at  0  dB as  the  convention  from
taperecorders of  having 0  dB as  the optimal  recording condition,  and
displaying anything worse as a negative  number.  Please see  section 4.0
for a complete linear volume format for Gravis' UltraSound.

The fifth field  in the  sample information  block is  the sample  repeat
start offset.  Once this sample has been played completely from beginning
to end, if the  repeat length (next field)  is greater than two  bytes it
will loop back to this position in the sample and continue playing.  Once
it has played for  the repeat length,  it continues to  loop back to  the
repeat start offset.  This means the sample continues playing until it is
told to stop.

The last, or sixth field in the sample information is the  repeat length.
A sample is only looped if this value  is greater than 2 bytes.   See the
preceeding paragraph for more information on looping.



_______________________________________________________________________
                                                                      5



MODFIL10.TXT                                      THUNDER (kurtt@sfu.ca)
________________________________________________________________________

2.3 Number of patterns in song
_______________________________

This byte represents the number of patterns which are played in the entire
SONG.  This is NOT the number of patterns in the FILE.  The file may
contain (theoretically) up to 256 patterns, whereas the song is just a
selection of those patterns.  If I have 30 patterns in my file, and I just
want to play patterns 6, 12, 3, 7, and 8 in that order, this byte will have
the value 5.



2.4 Song end jump position
_______________________________

Historically, this byte has been used  for many purposes.   Most commonly
in the newer  format it  has been  used to  signify if  a song  is to  be
repeated indefinitely.   Some game programs  have background music  which
never ends.   If  this byte  is  less than  127,  then it  specifies  the
position in the pattern table to  jump to when the last pattern  has been
played.  If this byte is greater than or equal to 127, the song ends.



2.5 Pattern table
_______________________________

This 128 byte block lists the  order that patterns in the file  should be
played in.  Only the number of bytes specified by the number  of patterns
in the song (see section 2.3) can be considered valid.  If the song is to
play patterns 6, 0, 12, 11, 21, and 10 in that order, then the table will
have those 6 values as the first 6 bytes:

                             Pattern Table
  Position --->  0   1   2   3   4   5   6 ---------> 127
               |---|---|---|---|---|---|---|---...---|---|
               |006|000|012|011|021|010|    ?????????    |
               |---|---|---|---|---|---|---|---...---|---|

One of the  effects which  is possible (see  section 3.4)  is a  position
jump.  The argument  to this effect is  where to jump  to in the  PATTERN
TABLE.  This does NOT specify which PATTERN to jump to.

In a particular pattern  there are 64 lines.   These lines are  played in
order from  0 to  63.   When the  end of  a pattern  is reached,  playing
continues with the next pattern in the pattern table, unless  the current
pattern is the last one.  If  the current pattern IS the last  one, check
the song end jump position (see section 2.4) to see if the  song loops to
a certain position  in the  pattern table.   Another one  of the  effects
which is possible (see section 3.4)  is a pattern break.  If  this effect
is encountered, playing immediately jumps to  the first line of  the next
pattern.



_______________________________________________________________________
                                                                      6



MODFIL10.TXT                                      THUNDER (kurtt@sfu.ca)
________________________________________________________________________

2.6 File format tag
_______________________________

This is the most  controversial field in the  file.  This field  has been
the most 'ravaged', with  many people using it  in non-standard ways  for
their own purposes.   There are a  few standard tags  which you can  find
here which tell you  DEFINITELY what file format  the file is, but  there
are many more  non-standard tags.   This makes the  job of deciding  what
format a MOD is a  difficult one.  I  will attempt to describe  the known
formats below.  If you know of one I miss, please let me know.

     'M.K.', 'FLT4',
     'M!K!', '4CHN' : 4 channels, 31 instruments

     '6CHN'         : 6 channels, 31 instruments

     '8CHN', 'OCTA' : 8 channels, 31 instruments

Other information  that is  found in  this  field can  be assumed  to  be
somebody's attempt at protection, or some other information that was used
in the  'older'  file  format.   If  you  can't find  any  of  the  above
information, it is best to assume that it's a 4 channel file.  As for how
many instruments there are, check the bytes at location 471 in  the file.
If there is text  there (ASCII $20-$7E (32-126)),  then you can  probably
assume it's a 31-instrument file.  Otherwise, it's an older 15 instrument
file.



2.7 Patterns
_______________________________

There can be any number of patterns  in the file.  They are  stored after
the file header and before the sample data.  There are USUALLY  less than
64, but the maximum is not limited - if the file tag  is 'M!K!' there are
definitely more than 64 patterns.

The patterns are stored sequentially (i.e.  the first pattern is  #0, the
second pattern is  #1, etc.).   An individual  pattern is  made up of  64
'lines', stored sequentially (i.e.  line 0 to line  63).  Each 'line'  is
comprised of a note for each channel.  Each 'note' is made up of 4 bytes,
so depending on the number of channels in the file, there are  16, 24, or
32 bytes per line.

For a four-channel file there are (4 bytes * 4 channels * 64 lines) =1024
bytes of information per pattern.  To find out the number of  patterns in
a particular file, calculate the  length of 'header' information  and add
to it  the  lengths of  all  samples that  are  mentioned in  the  sample
information blocks.  Subtract this number from the file's total  size and
divide by the number just computed  (1024) to get the number  of patterns
in the file.




_______________________________________________________________________
                                                                      7



MODFIL10.TXT                                      THUNDER (kurtt@sfu.ca)
________________________________________________________________________

As mentioned above, each note is stored as 4 bytes.  The information held
by these bytes has format shown  below.  How you display the  contents of
the 4 bytes in  a player is up  to you.  There  is NO standard way  to do
this.

               Byte  1   Byte  2   Byte  3   Byte 4
              --------- --------- --------- ---------
              7654-3210 7654-3210 7654-3210 7654-3210
              wwww XXXX xxxxxxxxx yyyy ZZZZ zzzzzzzzz

                  wwwwyyyy ( 8 bits) : sample number
              XXXXxxxxxxxx (12 bits) : sample 'period'
              ZZZZzzzzzzzz (12 bits) : effect and argument

The sample number refers to a sample specified in the  sample information
block.   Please see  sections 2.2  and 2.8  for more  information on  the
samples.

The sample 'period' corresponds  to a delay value  on an Amiga  computer.
Note that on  an Intel  processor, you  have to  order these  12 bits  as
'xxxxxxxx0000XXXX' to read the value as a word.  Please see  sections 3.2
and 3.3 for more information on how to use these values.

The effect is an  effect number and an  argument for the effect.   Please
see section 3.4  for a  discussion of the  effects and  how to  implement
them.



2.8 Sample data
_______________________________

The sample data  follows all of  the patterns.   After you have  finished
reading the pattern data, there will be just enough data left in the file
for all of the instruments  specified in the sample  information section.
The samples are  stored sequentially  from sample 1  to sample  31.   The
sample's data is in 8-bit two's  compliment format, so if it needs  to be
in another  format for  your sound  device to  play it,  don't forget  to
convert (UltraSound  users:  you don't  need  to  convert the  data  when
downloading).

As was mentioned in section 2.2, the first 2 bytes of the sample are used
by the Amiga MOD  players for repeat information,  and therefore are  NOT
part of the  playable data.   PC users do  not have  to do anything  with
these two bytes.










_______________________________________________________________________
                                                                      8



MODFIL10.TXT                                      THUNDER (kurtt@sfu.ca)
________________________________________________________________________

3.0 Playing the files
_______________________________

Section 3 deals  with playing  MOD files.   Specifically,  it deals  with
playing them  on  PC  hardware -  hopefully  a  Gravis UltraSound.    The
Ultrasound is  ideal for  this and  many other  types of  sound and  song
processing, and is exceptionally easy to program.  Gravis makes available
an SDK (Software Development Kit) which has both C, C++, and (by  the end
of November)  Borland Pascal  versions.   If you  are  programming a  MOD
player for other hardware, you may still be able to use  this information
for reference.



3.1 Timing
_______________________________

If lines are played  sequentially, then how long  should the player  wait
between successive lines?  On the Amiga, the amount of time a note spends
on a channel before the next note is started is calculated by  using some
complex formulas based on  the PAL color carrier  frequency.  I will  not
try to bore you with the  details of these calculations here, and  if you
wan't them, email me.

A song can be played at  a speed ranging from  1 to 127, where  the speed
specifies how many  'ticks' before playing  the next sample.   A tick  is
supposed to happen every .02 seconds, which gives 50 ticks per second.

At the start of  a line all samples  specified on that line  are started,
samples playing  are  modified, speed  is  changed,  etc.   Some  effects
require that changes be made to a sample playing on a channel  during the
course of a line.  For  example, the retrigger effect re-starts  a sample
at a certain tick within a line.  If  the song is playing at speed  6 and
the effect specifies a retrigger on the 4th tick:

               Time Tick
               0.00  1 - start all samples and effects
               0.02  2
               0.04  3
               0.06  4 - retrigger sample here
               0.08  5
               0.10  6
               ------------
               0.00  1 - start next line
                   .
                   .

Unless a speed is specified on  the first line of the first  pattern, the
song should start playing at speed 6.  Please see section 3.4, effect $F,
for more information on changes in speed.





_______________________________________________________________________
                                                                      9



MODFIL10.TXT                                      THUNDER (kurtt@sfu.ca)
________________________________________________________________________

3.2 Periods
_______________________________

MOD  players  use  a  technique  called  frequency  shifting  to  produce
different 'notes' of the same sample.  If  I play a sample at 10  KHz, it
will sound one octave higher if I double the frequency to 20 KHz, and one
octave lower if I halve the frequency to 5 KHz.  Since there are 12 notes
per octave on a  keyboard (these are  called half-steps), each  frequency
corresponds to one twelfth root of two (~1.05946) times the  frequency of
it's predecessor (to  the left).   Therefore, if  the C-1 frequency  (the
note of C in octave 1) is 4144 Hz then:

Note: C-1  C#1  D-1  ... C-2  ...
Freq: 4144 4390 4651 ... 8288 ...

The Amiga playing routines were  written to run off  different interrupts
for different Amiga computers, based on whether the machine was a  PAL or
NTSC machine.    The  'period' values  are  measures  which are  used  in
calculating how much data  to send to  each of the  4 Amiga channels  per
second (thereby specifying the frequency or pitch of the output).

For PC programmers, you  don't have to worry  about this that much.   The
thing to remember is  that a 'magic number'  divided by twice the  period
value will give the rate (frequency) to play the sample at.  Here are the
magic numbers and the corresponding formulae.  I don't know  which number
is better to use - It doesn't make a huge difference.

               PAL Value                NTSC Value
              ===========              ============

                7093789.2                       7159090.5
SampleRate = --------------     SampleRate = --------------
               Period * 2                      Period * 2

To determine what frequency  to play a sample  at, look up the  specified
period value in a  table based on the  finetune setting (see section  3.3
for more  information on  fine-tuning).   If the  period is  0, then  the
previous period used on that channel is used.

As an example, let's look at the period table for finetune 0.   The notes
that are possible in each octave are:

          C    C#   D    D#   E    F    F#   G    G#   A    A#   B
Octave 1: 856, 808, 762, 720, 678, 640, 604, 570, 538, 508, 480, 453
Octave 2: 428, 404, 381, 360, 339, 320, 302, 285, 269, 254, 240, 226
Octave 3: 214, 202, 190, 180, 170, 160, 151, 143, 135, 127, 120, 113

Octave 0:1712,1616,1525,1440,1357,1281,1209,1141,1077,1017, 961, 907
Octave 4: 107, 101,  95,  90,  85,  80,  76,  71,  67,  64,  60,  57

If I was requested to play a  sample at period 302, I would  scan through
the period table until I hit that value.  At that point,  I know that the
note is called  'F#2', F-sharp  in octave 2.   I  calculate the  playback
frequency by doing the calculations on the next page.

_______________________________________________________________________
                                                                      10



MODFIL10.TXT                                      THUNDER (kurtt@sfu.ca)
________________________________________________________________________

      PAL Value                     NTSC Value
      ===========                   ============

       7093789.2                     7159090.5
      ----------- = 11745 Hz        ----------- = 11853 Hz
        302 * 2                       302 * 2

There are normally  only three octaves  (1 to 3)  used in playing  songs.
Octaves 0 and 4 are NOT standard.  Some songs may use  the values though,
and it's nice if your player can handle them.  Full period tables for all
finetunes are listed in section 4.

If you wish to sample sounds  to include in MOD files, remember  that the
data must be stored in 8-bit 2's complement format.  There is NO standard
sample rate when creating the samples.   Most often the samples  are done
on the rate corresponding to period C-3 (around 16.5 KHz),  and sometimes
drums are sampled at A-3 (around 28 KHz).

If sample number  is specified on  a channel (sample  #0), then the  last
sample used on that channel will  be remembered if new notes  come along.
Only one sample may play on a channel at a time, so  playing a new sample
will cancel an old one - even if  there is no actual sample data  for the
new sample (a 'silent' sample).   However, if you are constructing  a MOD
file of your own and you  use a "silent" sample  it is polite to  set its
default volume to 0.

If you have some memory (around 2k or  so) to spare, you could make  up a
table of words indexed  by period value.   The value of  the word at  the
index of a period is the  corresponding frequency that the  sample should
be played at.   This saves you from  having to calculate the  frequencies
over and over again.  If you still don't get what I'm talking about here:

I have a array of words, one for each period from the  lowest (around 50)
to the highest (around 1712).  I precalculate the contents of  this table
so that at index 302 (the period for note F#2), there is the value 11853,
the frequency to use to get the note F#2.  Therefore, when my player runs
accross this value and  needs to know what  frequency to play the  sample
at, I simply look up the  value in the table directly -  no calculations.
If you still don't get what I'm talking about, you're screwed.



3.3 Fine-Tuning
_______________________________

Fine-tuning is a minor adjustment on  how an instrument sounds.   This is
implemented by small changes  in the period values.   The finetune  value
for a  sample specifies  the adjustment  on the  period  values for  that
instrument.  A fine-tune can also be specified for a  specific instrument
by an effect, at  which point the value  in the effect will  override the
one in the sample information block.




_______________________________________________________________________
                                                                      11



MODFIL10.TXT                                      THUNDER (kurtt@sfu.ca)
________________________________________________________________________

The value in  the sample information  block is a  signed nibble (4  bits,
signed 2's complement).  Therefore, the values that can be found have the
following corresponding finetunes:

Value:    0   1   2   3   4   5   6   7   8   9   A   B   C   D   E   F
Finetune: 0  +1  +2  +3  +4  +5  +6  +7  -8  -7  -6  -5  -4  -3  -2  -1

Section 4.0 specifies period values for all finetunes for octaves 1 to 3.
You could use these values in creating your array of frequency words (see
the end of section 3.2).



3.4 Effects
_______________________________

As was  mentioned  in section  2.7,  the 4  bytes  for  a note  have  the
following format:

               Byte  1   Byte  2   Byte  3   Byte 4
              --------- --------- --------- ---------
              7654-3210 7654-3210 7654-3210 7654-3210
              wwww XXXX xxxxxxxxx yyyy ZZZZ zzzzzzzzz

                  wwwwyyyy ( 8 bits) : sample number
              XXXXxxxxxxxx (12 bits) : sample 'period'
              ZZZZzzzzzzzz (12 bits) : effect and argument

Again, how you display this information in a player is up to you.  I have
seen a  zillion different  formats.   I have  described  what the  sample
number and period refer to.  Here,  we will look at the effects  that are
possible.

At this point  in time, the  Amiga Protracker  MOD player (version  2.3A/
3.01)   has 28  effects.   Some of  these effects  are  redundant or  not
possible on some PC  sound cards.   I will describe  the effects and  how
they are implemented on the Amiga.  PC programmers will have to adapt the
effects they wish to implement on  their own.  All numbers are  stated in
hexadecimal.

For the  discussion of  the effects,  we  will look  at the  'effect  and
argument' part of the 4 bytes in the following way:

               Bit number:         $CBA987654321
               Mentioned above as:  ZZZZzzzzzzzz
               We will use:         ZZZZxxxxyyyy

There are two types of effects,  standard and extended.  All  effects use
the ZZZZ portion to declare the effect number.  Standard effects  use the
xxxx and yyyy portions as one or two arguments, either as an  8-bit value
when taken together in the form  xxxxyyyy or as 2 nibbles xxxx  and yyyy.
Extended effects  have the  ZZZZ effect  number $E.   They  use the  xxxx
portion to  declare the  extended effect  number and  the  only the  yyyy
portion as an argument.

_______________________________________________________________________
                                                                      12



MODFIL10.TXT                                      THUNDER (kurtt@sfu.ca)
________________________________________________________________________

Here are the possible standard effects:
-----------------------------------------------------------------------
#   Effect name                          Uses Arguments as
-----------------------------------------------------------------------
0   Arpeggio                             xxxx  yyyy
1   Slide Up                             xxxxyyyy
2   Slide Down                           xxxxyyyy
3   Tone Portamento                      xxxxyyyy
4   Vibrato                              xxxx  yyyy
5   Tone Portamento + Volume Slide       xxxx  yyyy
6   Vibrato + Volume Slide               xxxx  yyyy
7   Tremolo                              xxxx  yyyy
8   NOT USED                             n/a
9   Set SampleOffset                     xxxxyyyy
A   VolumeSlide                          xxxx  yyyy
B   Position Jump                        xxxxyyyy
C   Set Volume                           xxxxyyyy
D   Pattern Break                        xxxxyyyy
E   *Extended Effects                    see below
F   Set Speed                            xxxxyyyy


And here are the possible extended effects:
                   ---------------------------------
                    #   Effect name
                   ---------------------------------
                    E0  Set Filter
                    E1  FineSlide Up
                    E2  FineSlide Down
                    E3  Glissando Control
                    E4  Set Vibrato Waveform
                    E5  Set FineTune
                    E6  Set/Jump to Loop
                    E7  Set Tremolo Waveform
                    E8  NOT USED
                    E9  Retrig Note
                    EA  Fine VolumeSlide Up
                    EB  Fine VolumeSlide Down
                    EC  NoteCut
                    ED  NoteDelay
                    EE  PatternDelay
                    EF  Invert Loop


A description of each  effect and how it  is implemented is given  on the
following pages.  Once again, all values are given in  hexadecimal unless
otherwise stated.








_______________________________________________________________________
                                                                      13



MODFIL10.TXT                                      THUNDER (kurtt@sfu.ca)
________________________________________________________________________

-----------------------------------------------------------------------
0: Arpeggio
-----------------------------------------------------------------------
If a note as an effect number of 0, it is only an arpeggio if there is at
least one non-zero argument.  When there is at least one  valid argument,
this effect means to  play the note specified,  then the note+xxxx  half-
steps, then the  note+yyyy half-steps,  and then return  to the  original
note.  These changes are evenly spaced  within the time for a line  to be
played at the current speed.

This effect is usually  used to simulate chords  (where a major chord  is
the note+4 half  steps and the  note+7 half-steps).   This does not  work
very well on  most samples.   This can also  be used  to produce a  heavy
vibrato.  Here is an example of this effect:

Note C-3, xxxx=4, yyyy=7

this will attempt to produce a C-major chord.  At the beginning of a line
the C-3 note is played, then at 1/3 of the way through  the line the note
is retriggered at E-3, 2/3 of  the way through it is retriggered  at G-3,
and at the beginning of the  next line (if there  are no new notes  to be
played on the channel), it is retriggered at C-3 again.

This presents a minor problem for timing, since you have to keep track of
the arpeggio during the course of playing  a line.  What you could  do is
use a  timer differently,  or set  up  another timer  that  independently
tracks the timing of the arpeggio.


-----------------------------------------------------------------------
1: Slide up (Portamento Up)
-----------------------------------------------------------------------
This effect will  slide up  the frequency  (decrease the  period) of  the
sample being played on the channel by xxxxyyyy notes for every  tick that
occurs during the line.   You usually cannot  slide past note B-3  unless
you have implemented octave 4 (NON-STANDARD!).  The number of  ticks that
occur per line is set with effect  $F, the set speed command.   Since the
slide rate depends on  the speed, be careful  if you set are  composing a
MOD when you change the speed.  An example of this effect is:

Note C-3, xxxxyyyy = 2, playing at speed 3.

At the beginning of the line the sample is started at period C-3.  At the
first tick, the period is decremented by 2 (the frequency  is increased).
At the  second tick,  the period  is  again decremented  by  2.   At  the
beginning of the next line, if there is  not a new note to be  played the
period is again decremented by 2.








_______________________________________________________________________
                                                                      14



MODFIL10.TXT                                      THUNDER (kurtt@sfu.ca)
________________________________________________________________________

-----------------------------------------------------------------------
2: Slide down (Portamento Down)
-----------------------------------------------------------------------
This effect will slide  down the frequency (increase  the period) of  the
sample being played on the channel by xxxxyyyy tones for every  tick that
occurs during the line.  You  usually cannot slide below note  C-1 unless
you have implemented octave 0 (NON-STANDARD!).  The number of  ticks that
occur per line is set with effect  $F, the set speed command.   Since the
slide rate depends on  the speed, be careful  if you set are  composing a
MOD when you change the speed.  An example of this effect is:

Note C-3, xxxxyyyy = 2, playing at speed 3.

At the beginning of the line the sample is started at period C-3.  At the
first tick, the period is incremented by 2 (the frequency  is decreased).
At the  second tick,  the period  is  again incremented  by  2.   At  the
beginning of the next line, if there is  not a new note to be  played the
period is again incremented by 2.


-----------------------------------------------------------------------
3: Slide to note
-----------------------------------------------------------------------
This effect will slide  a note being played  on a channel to  a specified
note.  The parameter xxxxyyyy will states the speed at which a slide will
occur.  For each tick that  occurs during the line, the  period currently
being played is altered by the number of notes specified.  The  number of
ticks that occur per line is  set with effect $F, the set  speed command.
Since the slide  rate depends on  the speed,  be careful  if you set  are
composing a MOD when you change the speed.  An example of this effect is:

Slide to note C-2, xxxxyyyy = 2, playing at speed 3.

At the beginning  of the  line the current  frequency for  the sample  is
altered to  be 2  notes closer  to  C-2.   At the  first  tick, the  same
alteration occurs, changing the period to form a note even closer to C-2.
The same occurs for  each tick after that.   This effect continues  until
another effect is started or the specified frequency is reached.

If a slide rate is not  specified (xxxxyyyy is zero) then the  last slide
rate used on the channel is used again.


-----------------------------------------------------------------------
4: Vibrato
-----------------------------------------------------------------------
Vibrato means to "oscillate the sample pitch using a  particular waveform
with amplitude yyyy notes, such that (xxxx * speed)/64  full oscillations
occur in the line".  The waveform to use in vibrating is set using effect
E4 (see  below). By  placing vibrato  effects on  consecutive lines,  the
vibrato effect can be sustained for  any length of time.  If  either xxxx
or yyyy are 0,  then values from  the most recent  prior vibrato will  be
used.


_______________________________________________________________________
                                                                      15



MODFIL10.TXT                                      THUNDER (kurtt@sfu.ca)
________________________________________________________________________

An example is: Note C-3, with xxxx=8 and yyyy=1 when speed=6.   This will
play tones  around  C-3,  vibrating through  D-3  and  B-2 to  C-3  again
(amplitude - yyyy - is 1), with (8*6)/64 = 3/4 of a  full oscillation per
line.  Please see effect E4 for the waveform to use for vibrating.


-----------------------------------------------------------------------
5: Continue effect 3:'Slide to note', but also do Volume slide
-----------------------------------------------------------------------
This effect will change the volume  of a channel while a  tone portamento
(effect 3) is taking place.  The values xxxx or yyyy specify the speed of
the volume change.   If xxxx is nonzero  the volume is increased,  and if
yyyy is nonzero the volume is decreased.  It is illegal for both xxxx and
yyyy to be non-zero.  You cannot slide past 64 or below 0.

As an example, take  the xxxx to  be set to  3.  This  means that at  the
beginning of the line, the current volume of the channel is  increased by
3.  The volume  is increased again for  every tick on  this line and  the
lines following (until there  is a new effect).   Once again, the  volume
cannot slide up past 64.


-----------------------------------------------------------------------
6: Continue effect 4:'Vibrato', but also do Volume slide
-----------------------------------------------------------------------
This effect will change the volume  of a channel while a  vibrato (effect
4) is taking place.   The values xxxx  or yyyy specify  the speed of  the
volume change.  If xxxx is  nonzero the volume is increased, and  if yyyy
is nonzero the volume is decreased.  It is illegal for both xxxx and yyyy
to be non-zero.  You cannot slide past 64 or below 0.

As an example, take  the yyyy to  be set to  2.  This  means that at  the
beginning of the line, the current volume of the channel is  decreased by
2.  The volume  is decreased again for  every tick on  this line and  the
lines following (until there  is a new effect).   Once again, the  volume
cannot slide down below 0.


-----------------------------------------------------------------------
7: Tremolo
-----------------------------------------------------------------------
Temolo means to "oscillate the sample volume using a  particular waveform
with   amplitude   yyyy*(speed-1),   such   that   (xxxx*speed)/64   full
oscillations occur in the line".  The waveform to use to oscillate is set
using the  effect  E7  (see  below).    By  placing  tremolo  effects  on
consecutive lines, the tremolo effect can be sustained for any  length of
time.  If either  xxxx or yyyy are  0, then values  from the most  recent
prior tremolo will be used.

The usage of this effect is similar to that of effect 4:Vibrato.


-----------------------------------------------------------------------
8: This effect is not used.
-----------------------------------------------------------------------
_______________________________________________________________________
                                                                      16



MODFIL10.TXT                                      THUNDER (kurtt@sfu.ca)
________________________________________________________________________

-----------------------------------------------------------------------
9: Set sample offset
-----------------------------------------------------------------------
This effect allows you to start a sample from a specified position rather
than the normal beginning position.   Multiply the value xxxxyyyy  by 512
to get  the position  in bytes  from the  beginning of  the sample  where
playback should start.   If no sample is  specified with the effect,  but
one is  currently  playing on  the  channel,  then the  sample  currently
playing is retriggered to offset specified.

An example is instrument 2 being  played at note C-3,  with xxxxyyyy=$23.
This would make playback of the sample start at offset $23*$200  = $4600.
This effect gives a rough range to play the sample from.


-----------------------------------------------------------------------
A: Volume slide
-----------------------------------------------------------------------
This effect  will change  the volume  of all  samples being  played on  a
channel.  The values xxxx or yyyy specify the speed of the volume change.
If xxxx is nonzero  the volume is increased,  and if yyyy is  nonzero the
volume is decreased.   It is illegal for  both xxxx and  yyyy to be  non-
zero.  You cannot slide past 64 or below 0.

As an example, take  the yyyy to  be set to  3.  This  means that at  the
beginning of the line, the current volume of the channel is  decreased by
3.  The volume is decreased  by 3 again for  every tick on this  line and
the lines  following (until  there is  a new  effect).   Once again,  the
volume cannot slide down below 0.


-----------------------------------------------------------------------
B: Position Jump
-----------------------------------------------------------------------
This effect xxxxyyyy parameter specifies a position in the  pattern table
that playback should jump  to after this line.   Legal values are  in the
range of the number of patters that  are supposed to be in the  song (see
section 2.3).  Values outside this range should be ignored.


-----------------------------------------------------------------------
C: Set volume
-----------------------------------------------------------------------
Effect C will set the volume on a channel to the setting specified by the
xxxxyyyy value.  Legal volumes are in the  range of 0 to 64.   An attempt
to set the volume to a higher value than 64 will just set it to 64.

I don't think we really need an example for this effect.







_______________________________________________________________________
                                                                      17



MODFIL10.TXT                                      THUNDER (kurtt@sfu.ca)
________________________________________________________________________

-----------------------------------------------------------------------
D: Pattern Break
-----------------------------------------------------------------------
This effect is equivalent to a  position jump to the next pattern  in the
pattern table, with the arguments xxxx*10+yyyy specifying the line within
that pattern to start playing at.  Note that this is NOT xxxx*16+yyyy.

For example, the effect with  arguments xxxx=0, yyyy=0 would  simply jump
to the first line in the next pattern in the pattern table  after playing
the current line.   With arguments  xxxx=1 and yyyy=6  would jump to  the
16th line of  the next  pattern in the  pattern table  after playing  the
current line.


-----------------------------------------------------------------------
E0: Set filter on/off
-----------------------------------------------------------------------
This sets a hardware sound filter to ON (if yyyy is 0) or OFF (if xxxx is
nonzero).  If your sound device  has built-in filters, you  should ignore
this effect command.  This effect is primarily used on Amiga 500 and 2000
computers to dick around with the hardware filter.


-----------------------------------------------------------------------
E1: Fineslide up
-----------------------------------------------------------------------
This effect functions just  like effect 1, except  that the frequency  of
the sample is only modified once.   At the beginning of a  line, whatever
frequency is being  played on  a channel  is incremented  by yyyy  notes.
This effect does NOT continue on  the lines following.  You  cannot slide
the frequency above the  note B-3 (unless you  implement octave 4 :  NON-
STANDARD!).

An example here would be effect  E, xxxx=1 (the extended  effect number),
yyyy=3.  This  would slide the  current frequency up  three notes at  the
beginning of the line.


-----------------------------------------------------------------------
E2: Fineslide down
-----------------------------------------------------------------------
This effect functions just  like effect 2, except  that the frequency  of
the sample is only modified once.   At the beginning of a  line, whatever
frequency is being  played on  a channel  is decremented  by yyyy  notes.
This effect does NOT continue on  the lines following.  You  cannot slide
the frequency below the  note C-1 (unless you  implement octave 0 :  NON-
STANDARD!).

An example here would be effect  E, xxxx=1 (the extended  effect number),
yyyy=2.  This  would slide the  current frequency down  two notes at  the
beginning of the line.




_______________________________________________________________________
                                                                      18



MODFIL10.TXT                                      THUNDER (kurtt@sfu.ca)
________________________________________________________________________

-----------------------------------------------------------------------
E3: Set glissando on/off
-----------------------------------------------------------------------
The argument yyyy to this  effect specifies whether the  glissando effect
is ON (yyyy  is 1) or  OFF (yyyy is  0).   If glissando  is on, then  the
'Slide to note' will  slide a half note  at a time.   Otherwise, it  will
perform the default smooth slide.


-----------------------------------------------------------------------
E4: Set vibrato waveform
-----------------------------------------------------------------------
This effect means to set the waveform appearance for succeeding 'vibrato'
effects.  There  are currently  four possible appearances  for the  wave,
each with a possible  'retrigger'.  Two cycles  are shown below for  each
type of waveform:
                                             yyyy
    Waveform   Name                Retriggered  No Retrigger
    ---------- ------------------- -----------  ------------
    /\  /\     Sine (default)           0            4
      \/  \/

    |\ |\      Ramp down                1            5
      \| \|

    ,-, ,-,    Square                   2            6
      '-' '-'

    ?????????  Random                   3            7

A "retriggered" waveform will  be reset to  the start of  a cycle at  the
beginning of each new note.   If a wave is selected  "without retrigger",
the  previous  waveform  will  be  continued.    Waveforms   are  usually
retriggered.


-----------------------------------------------------------------------
E5: Set finetune value
-----------------------------------------------------------------------
This effect command sets the finetune value for the current instrument to
the signed nibble value  yyyy.  This value  overrides the value found  in
the sample information block at the  beginning of the MOD file.   The new
finetune remains until changed by another E5 effect.

           Value:  7  6  5  4  3  2  1  0  F  E  D  C  B  A  9  8
 Finetune to set: +7 +6 +5 +4 +3 +2 +1  0 -1 -2 -3 -4 -5 -6 -7 -8

This effect  is implemented  by storing  period values  for all  possible
finetunes, and simply switching to a different table of periods when this
effect is encountered.  See section 3.3 for more information.   Section 4
lists the period tables for finetunes for octaves 1 to 3.




_______________________________________________________________________
                                                                      19



MODFIL10.TXT                                      THUNDER (kurtt@sfu.ca)
________________________________________________________________________

-----------------------------------------------------------------------
E6: Loop pattern
-----------------------------------------------------------------------
This effect  allows a  section of  a pattern  to be  'looped', or  played
through, a certain number of times in succession.  If the effect argument
yyyy is zero, the effect specifies the loop's start point.  Otherwise, it
specifies the number of times to play this line and the  preceeding lines
from the start point.   If no  start point was  specified in the  current
pattern being played, the  loop start defaults to  the first line in  the
pattern.  Therefore, you cannot loop through multiple patterns.

An example:

On line 3,  the effect E6  is encountered, with  yyyy=0.  This  specifies
that line 3 is the beginning of a loop in this pattern.
Down on line 52, the effect  E6 is encountered again, with yyyy=2.   This
means to jump back and play the lines from line 3 to  line 52 again twice
more before continuing with the rest of the pattern.


-----------------------------------------------------------------------
E7: Set tremolo waveform
-----------------------------------------------------------------------
Line command  E4,  this  sets  the  waveform  appearance  for  succeeding
'tremolo'  (volume)  effects.     There   are  currently  four   possible
appearances for the wave, each with  a possible 'retrigger'.   Two cycles
are shown below for each type of waveform:
                                             yyyy
    Waveform   Name                Retriggered  No Retrigger
    ---------- ------------------- -----------  ------------
    /\  /\     Sine (default)           0            4
      \/  \/

    |\ |\      Ramp down                1            5
      \| \|

    ,-, ,-,    Square                   2            6
      '-' '-'

    ?????????  Random                   3            7

A "retriggered" waveform will  be reset to  the start of  a cycle at  the
beginning of each new note.   If a wave is selected  "without retrigger",
the  previous  waveform  will  be  continued.    Waveforms   are  usually
retriggered.


-----------------------------------------------------------------------
E8: This effect is not used.
-----------------------------------------------------------------------





_______________________________________________________________________
                                                                      20



MODFIL10.TXT                                      THUNDER (kurtt@sfu.ca)
________________________________________________________________________

-----------------------------------------------------------------------
E9: Retrigger sample
-----------------------------------------------------------------------
Effect E9 allows  you to re-trigger  a specified  sample at a  particular
note after yyyy  ticks during the  line.   For example,  say note C-3  is
specified, with yyyy=2 when  the speed is currently  6.  This would  mean
that at the beginning  of the line the  specified sample is started,  and
after two ticks it is restarted.   This continues until the  beginning of
the next line.  This effect is used mostly with samples of hi-hats.


-----------------------------------------------------------------------
EA: Fine volume slide up
-----------------------------------------------------------------------
This effect increments  the volume of  a particular  channel once at  the
beginning of the line  by yyyy points.   There is no continuation  of the
slide on successive  lines or for  other notes.   You cannot slide  above
volume 64.


-----------------------------------------------------------------------
EB: Fine volume slide down
-----------------------------------------------------------------------
This effect is  just like  effect EA,  except the  volume is  decremented
rather than incremented by the value  yyyy.  There is no  continuation of
the slide on successive lines or for other notes.  You cannot slide below
volume 0.


-----------------------------------------------------------------------
EC: Cut sample
-----------------------------------------------------------------------
This effect sets the  volume of the  sample which is  playing to 0  after
yyyy ticks in the current line.  This has the effect of stopping a sample
abruptly.  An example here  is to play the  note C-2, with effect  EC and
argument yyyy=3, when the speed is 6.  The sample is started  at note C-2
at the beginning of the line, and after the third tick of 6 in that line,
the volume on the  channel is set to  0 (cutting it off).   Note that  if
yyyy is 0, nothing will be heard.


-----------------------------------------------------------------------
ED: Delay sample
-----------------------------------------------------------------------
This effect delays the start of  a sample until tick yyyy in  the current
line.  For example,  if note C-2 is  played, with effect ED  and argument
yyyy=3 when the speed is 6.   The note C-2  will be triggered at  the 3rd
tick after the start of the line.  The purpose of this effect is to delay
the start of a sample for a VERY short amount of time.






_______________________________________________________________________
                                                                      21



MODFIL10.TXT                                      THUNDER (kurtt@sfu.ca)
________________________________________________________________________

-----------------------------------------------------------------------
EE: Delay pattern
-----------------------------------------------------------------------
This effect  forces a  small delay  in a  pattern  in between  successive
lines.  All notes and effects  continue during this delay.   The argument
yyyy specified the number of  line-equivalent time slices to  wait before
resuming playback.  For example, if  effect EE is encountered  with speed
being 6 and argument yyyy=4, then the next line will be delayed  24 ticks
before it is executed.


-----------------------------------------------------------------------
EF: Invert loop
-----------------------------------------------------------------------
This effect is used on the Amiga to play samples backward at  a specified
speed.  It is not really  feasible to implement on  other architechtures,
and it is not used that often.


-----------------------------------------------------------------------
F: Set speed
-----------------------------------------------------------------------
This effect changes the  speed of playback so  that xxxxyyyy ticks  occur
during every line, starting on the NEXT line.  The initial  speed (before
any 'set speed' effects are encountered) should be set to 6.   A value of
xxxxyyyy=0 should technically cause playback  to stop, but this  value is
commonly ignored as garbage.

Valid values for speed setting in this manner are 1 to 31.  If a value is
read that is above 31,  it means to set  a modified speed based  on beats
per minute, where 4 lines are  1 beat.  This means  that if I try  to set
the speed to 42, I am  specifying 42 beats per minute, or  42*4=168 lines
per minute.    You then  have  to  figure out  how  long  to spend  on  a
particular line.

If multiple set speed  effects are performed on  a single line, then  the
effects on the higher-numbered channels have precedence over  the effects
on the lower-numbered channels.

This effect has the largest  number of implementations and  is particular
to the number of effects that a particular file player supports.



3.5 Other information
_______________________________

If you're  sound  device  is able  to  provide  stereo output  (like  the
UltraSound), then you  need to  know what  the balance  for each  channel
should be.  Channels 1 and 4 are left, and 2 and 3 are right.

If you are programming  for the UltraSound, it  is best not to  shove the
balances all the way over to the left or to the right.  Try  a value of 2
for channels 1 and  4 and a value  of 13 for  channels 2 and  3.  If  you
don't like it - change it.
_______________________________________________________________________
                                                                      22



MODFIL10.TXT                                      THUNDER (kurtt@sfu.ca)
________________________________________________________________________

4.0 Period and Volume tables
_______________________________

Here are the period tables for the different fine-tune values:

856,808,762,720,678,640,604,570,538,508,480,453 : C-1 to B-1 Finetune 0
428,404,381,360,339,320,302,285,269,254,240,226 : C-2 to B-2 Finetune 0
214,202,190,180,170,160,151,143,135,127,120,113 : C-3 to B-3 Finetune 0

850,802,757,715,674,637,601,567,535,505,477,450 : C-1 to B-1 Finetune +1
425,401,379,357,337,318,300,284,268,253,239,225 : C-2 to B-2 Finetune +1
213,201,189,179,169,159,150,142,134,126,119,113 : C-3 to B-3 Finetune +1

844,796,752,709,670,632,597,563,532,502,474,447 : C-1 to B-1 Finetune +2
422,398,376,355,335,316,298,282,266,251,237,224 : C-2 to B-2 Finetune +2
211,199,188,177,167,158,149,141,133,125,118,112 : C-3 to B-3 Finetune +2

838,791,746,704,665,628,592,559,528,498,470,444 : C-1 to B-1 Finetune +3
419,395,373,352,332,314,296,280,264,249,235,222 : C-2 to B-2 Finetune +3
209,198,187,176,166,157,148,140,132,125,118,111 : C-3 to B-3 Finetune +3

832,785,741,699,660,623,588,555,524,495,467,441 : C-1 to B-1 Finetune +4
416,392,370,350,330,312,294,278,262,247,233,220 : C-2 to B-2 Finetune +4
208,196,185,175,165,156,147,139,131,124,117,110 : C-3 to B-3 Finetune +4

826,779,736,694,655,619,584,551,520,491,463,437 : C-1 to B-1 Finetune +5
413,390,368,347,328,309,292,276,260,245,232,219 : C-2 to B-2 Finetune +5
206,195,184,174,164,155,146,138,130,123,116,109 : C-3 to B-3 Finetune +5

820,774,730,689,651,614,580,547,516,487,460,434 : C-1 to B-1 Finetune +6
410,387,365,345,325,307,290,274,258,244,230,217 : C-2 to B-2 Finetune +6
205,193,183,172,163,154,145,137,129,122,115,109 : C-3 to B-3 Finetune +6

814,768,725,684,646,610,575,543,513,484,457,431 : C-1 to B-1 Finetune +7
407,384,363,342,323,305,288,272,256,242,228,216 : C-2 to B-2 Finetune +7
204,192,181,171,161,152,144,136,128,121,114,108 : C-3 to B-3 Finetune +7

907,856,808,762,720,678,640,604,570,538,504,480 : C-1 to B-1 Finetune -8
453,428,404,381,360,339,320,302,285,269,254,240 : C-2 to B-2 Finetune -8
226,214,202,190,180,170,160,151,143,135,127,120 : C-3 to B-3 Finetune -8

900,850,802,757,715,675,636,601,567,535,505,477 : C-1 to B-1 Finetune -7
450,425,401,379,357,337,318,300,284,268,253,238 : C-2 to B-2 Finetune -7
225,212,200,189,179,169,159,150,142,134,126,119 : C-3 to B-3 Finetune -7

894,844,796,752,709,670,632,597,563,532,502,474 : C-1 to B-1 Finetune -6
447,422,398,376,355,335,316,298,282,266,251,237 : C-2 to B-2 Finetune -6
223,211,199,188,177,167,158,149,141,133,125,118 : C-3 to B-3 Finetune -6

887,838,791,746,704,665,628,592,559,528,498,470 : C-1 to B-1 Finetune -5
444,419,395,373,352,332,314,296,280,264,249,235 : C-2 to B-2 Finetune -5
222,209,198,187,176,166,157,148,140,132,125,118 : C-3 to B-3 Finetune -5

...continues on next page...

_______________________________________________________________________
                                                                      23



MODFIL10.TXT                                      THUNDER (kurtt@sfu.ca)
________________________________________________________________________

881,832,785,741,699,660,623,588,555,524,494,467 : C-1 to B-1 Finetune -4
441,416,392,370,350,330,312,294,278,262,247,233 : C-2 to B-2 Finetune -4
220,208,196,185,175,165,156,147,139,131,123,117 : C-3 to B-3 Finetune -4

875,826,779,736,694,655,619,584,551,520,491,463 : C-1 to B-1 Finetune -3
437,413,390,368,347,338,309,292,276,260,245,232 : C-2 to B-2 Finetune -3
219,206,195,184,174,164,155,146,138,130,123,116 : C-3 to B-3 Finetune -3

868,820,774,730,689,651,614,580,547,516,487,460 : C-1 to B-1 Finetune -2
434,410,387,365,345,325,307,290,274,258,244,230 : C-2 to B-2 Finetune -2
217,205,193,183,172,163,154,145,137,129,122,115 : C-3 to B-3 Finetune -2

862,814,768,725,684,646,610,575,543,513,484,457 : C-1 to B-1 Finetune -1
431,407,384,363,342,323,305,288,272,256,242,228 : C-2 to B-2 Finetune -1
216,203,192,181,171,161,152,144,136,128,121,114 : C-3 to B-3 Finetune -1


The Amiga uses linear volumes from  0 to 64.  The volume  table specified
below lists the logarithmic volume to  use on the UltraSound for  each of
the 65 settings in order to get a linear spread.  If you need volumes for
another sound device, you will have to find them elsewhere.

   0 |    0
   1 | 1750      17 | 2332      33 | 3469      49 | 3528
   2 | 2503      18 | 3240      34 | 3473      50 | 3532
   3 | 2701      19 | 3248      35 | 3478      51 | 3534
   4 | 2741      20 | 3256      36 | 3481      52 | 3538
   5 | 2781      21 | 3263      37 | 3484      53 | 3543
   6 | 2944      22 | 3271      38 | 3489      54 | 3545
   7 | 2964      23 | 3279      39 | 3492      55 | 3549
   8 | 2981      24 | 3287      40 | 3495      56 | 3552
   9 | 3000      25 | 3294      41 | 3499      57 | 3556
  10 | 3017      26 | 3303      42 | 3502      58 | 3558
  11 | 3034      27 | 3310      43 | 3506      59 | 3563
  12 | 3052      28 | 3317      44 | 3509      60 | 3565
  13 | 3070      29 | 3325      45 | 3513      61 | 3570
  14 | 3207      30 | 3458      46 | 3517      62 | 3573
  15 | 3215      31 | 3462      47 | 3520      63 | 3577
  16 | 3224      32 | 3466      48 | 3524      64 | 3580

Happy coding!
    -Thunder













_______________________________________________________________________
                                                                      24
		    GNU GENERAL PUBLIC LICENSE
		       Version 2, June 1991

 Copyright (C) 1989, 1991 Free Software Foundation, Inc.
                       59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
 Everyone is permitted to copy and distribute verbatim copies
 of this license document, but changing it is not allowed.

			    Preamble

  The licenses for most software are designed to take away your
freedom to share and change it.  By contrast, the GNU General Public
License is intended to guarantee your freedom to share and change free
software--to make sure the software is free for all its users.  This
General Public License applies to most of the Free Software
Foundation's software and to any other program whose authors commit to
using it.  (Some other Free Software Foundation software is covered by
the GNU Library General Public License instead.)  You can apply it to
your programs, too.

  When we speak of free software, we are referring to freedom, not
price.  Our General Public Licenses are designed to make sure that you
have the freedom to distribute copies of free software (and charge for
this service if you wish), that you receive source code or can get it
if you want it, that you can change the software or use pieces of it
in new free programs; and that you know you can do these things.

  To protect your rights, we need to make restrictions that forbid
anyone to deny you these rights or to ask you to surrender the rights.
These restrictions translate to certain responsibilities for you if you
distribute copies of the software, or if you modify it.

  For example, if you distribute copies of such a program, whether
gratis or for a fee, you must give the recipients all the rights that
you have.  You must make sure that they, too, receive or can get the
source code.  And you must show them these terms so they know their
rights.

  We protect your rights with two steps: (1) copyright the software, and
(2) offer you this license which gives you legal permission to copy,
distribute and/or modify the software.

  Also, for each author's protection and ours, we want to make certain
that everyone understands that there is no warranty for this free
software.  If the software is modified by someone else and passed on, we
want its recipients to know that what they have is not the original, so
that any problems introduced by others will not reflect on the original
authors' reputations.

  Finally, any free program is threatened constantly by software
patents.  We wish to avoid the danger that redistributors of a free
program will individually obtain patent licenses, in effect making the
program proprietary.  To prevent this, we have made it clear that any
patent must be licensed for everyone's free use or not licensed at all.

  The precise terms and conditions for copying, distribution and
modification follow.

		    GNU GENERAL PUBLIC LICENSE
   TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION

  0. This License applies to any program or other work which contains
a notice placed by the copyright holder saying it may be distributed
under the terms of this General Public License.  The "Program", below,
refers to any such program or work, and a "work based on the Program"
means either the Program or any derivative work under copyright law:
that is to say, a work containing the Program or a portion of it,
either verbatim or with modifications and/or translated into another
language.  (Hereinafter, translation is included without limitation in
the term "modification".)  Each licensee is addressed as "you".

Activities other than copying, distribution and modification are not
covered by this License; they are outside its scope.  The act of
running the Program is not restricted, and the output from the Program
is covered only if its contents constitute a work based on the
Program (independent of having been made by running the Program).
Whether that is true depends on what the Program does.

  1. You may copy and distribute verbatim copies of the Program's
source code as you receive it, in any medium, provided that you
conspicuously and appropriately publish on each copy an appropriate
copyright notice and disclaimer of warranty; keep intact all the
notices that refer to this License and to the absence of any warranty;
and give any other recipients of the Program a copy of this License
along with the Program.

You may charge a fee for the physical act of transferring a copy, and
you may at your option offer warranty protection in exchange for a fee.

  2. You may modify your copy or copies of the Program or any portion
of it, thus forming a work based on the Program, and copy and
distribute such modifications or work under the terms of Section 1
above, provided that you also meet all of these conditions:

    a) You must cause the modified files to carry prominent notices
    stating that you changed the files and the date of any change.

    b) You must cause any work that you distribute or publish, that in
    whole or in part contains or is derived from the Program or any
    part thereof, to be licensed as a whole at no charge to all third
    parties under the terms of this License.

    c) If the modified program normally reads commands interactively
    when run, you must cause it, when started running for such
    interactive use in the most ordinary way, to print or display an
    announcement including an appropriate copyright notice and a
    notice that there is no warranty (or else, saying that you provide
    a warranty) and that users may redistribute the program under
    these conditions, and telling the user how to view a copy of this
    License.  (Exception: if the Program itself is interactive but
    does not normally print such an announcement, your work based on
    the Program is not required to print an announcement.)

These requirements apply to the modified work as a whole.  If
identifiable sections of that work are not derived from the Program,
and can be reasonably considered independent and separate works in
themselves, then this License, and its terms, do not apply to those
sections when you distribute them as separate works.  But when you
distribute the same sections as part of a whole which is a work based
on the Program, the distribution of the whole must be on the terms of
this License, whose permissions for other licensees extend to the
entire whole, and thus to each and every part regardless of who wrote it.

Thus, it is not the intent of this section to claim rights or contest
your rights to work written entirely by you; rather, the intent is to
exercise the right to control the distribution of derivative or
collective works based on the Program.

In addition, mere aggregation of another work not based on the Program
with the Program (or with a work based on the Program) on a volume of
a storage or distribution medium does not bring the other work under
the scope of this License.

  3. You may copy and distribute the Program (or a work based on it,
under Section 2) in object code or executable form under the terms of
Sections 1 and 2 above provided that you also do one of the following:

    a) Accompany it with the complete corresponding machine-readable
    source code, which must be distributed under the terms of Sections
    1 and 2 above on a medium customarily used for software interchange; or,

    b) Accompany it with a written offer, valid for at least three
    years, to give any third party, for a charge no more than your
    cost of physically performing source distribution, a complete
    machine-readable copy of the corresponding source code, to be
    distributed under the terms of Sections 1 and 2 above on a medium
    customarily used for software interchange; or,

    c) Accompany it with the information you received as to the offer
    to distribute corresponding source code.  (This alternative is
    allowed only for noncommercial distribution and only if you
    received the program in object code or executable form with such
    an offer, in accord with Subsection b above.)

The source code for a work means the preferred form of the work for
making modifications to it.  For an executable work, complete source
code means all the source code for all modules it contains, plus any
associated interface definition files, plus the scripts used to
control compilation and installation of the executable.  However, as a
special exception, the source code distributed need not include
anything that is normally distributed (in either source or binary
form) with the major components (compiler, kernel, and so on) of the
operating system on which the executable runs, unless that component
itself accompanies the executable.

If distribution of executable or object code is made by offering
access to copy from a designated place, then offering equivalent
access to copy the source code from the same place counts as
distribution of the source code, even though third parties are not
compelled to copy the source along with the object code.

  4. You may not copy, modify, sublicense, or distribute the Program
except as expressly provided under this License.  Any attempt
otherwise to copy, modify, sublicense or distribute the Program is
void, and will automatically terminate your rights under this License.
However, parties who have received copies, or rights, from you under
this License will not have their licenses terminated so long as such
parties remain in full compliance.

  5. You are not required to accept this License, since you have not
signed it.  However, nothing else grants you permission to modify or
distribute the Program or its derivative works.  These actions are
prohibited by law if you do not accept this License.  Therefore, by
modifying or distributing the Program (or any work based on the
Program), you indicate your acceptance of this License to do so, and
all its terms and conditions for copying, distributing or modifying
the Program or works based on it.

  6. Each time you redistribute the Program (or any work based on the
Program), the recipient automatically receives a license from the
original licensor to copy, distribute or modify the Program subject to
these terms and conditions.  You may not impose any further
restrictions on the recipients' exercise of the rights granted herein.
You are not responsible for enforcing compliance by third parties to
this License.

  7. If, as a consequence of a court judgment or allegation of patent
infringement or for any other reason (not limited to patent issues),
conditions are imposed on you (whether by court order, agreement or
otherwise) that contradict the conditions of this License, they do not
excuse you from the conditions of this License.  If you cannot
distribute so as to satisfy simultaneously your obligations under this
License and any other pertinent obligations, then as a consequence you
may not distribute the Program at all.  For example, if a patent
license would not permit royalty-free redistribution of the Program by
all those who receive copies directly or indirectly through you, then
the only way you could satisfy both it and this License would be to
refrain entirely from distribution of the Program.

If any portion of this section is held invalid or unenforceable under
any particular circumstance, the balance of the section is intended to
apply and the section as a whole is intended to apply in other
circumstances.

It is not the purpose of this section to induce you to infringe any
patents or other property right claims or to contest validity of any
such claims; this section has the sole purpose of protecting the
integrity of the free software distribution system, which is
implemented by public license practices.  Many people have made
generous contributions to the wide range of software distributed
through that system in reliance on consistent application of that
system; it is up to the author/donor to decide if he or she is willing
to distribute software through any other system and a licensee cannot
impose that choice.

This section is intended to make thoroughly clear what is believed to
be a consequence of the rest of this License.

  8. If the distribution and/or use of the Program is restricted in
certain countries either by patents or by copyrighted interfaces, the
original copyright holder who places the Program under this License
may add an explicit geographical distribution limitation excluding
those countries, so that distribution is permitted only in or among
countries not thus excluded.  In such case, this License incorporates
the limitation as if written in the body of this License.

  9. The Free Software Foundation may publish revised and/or new versions
of the General Public License from time to time.  Such new versions will
be similar in spirit to the present version, but may differ in detail to
address new problems or concerns.

Each version is given a distinguishing version number.  If the Program
specifies a version number of this License which applies to it and "any
later version", you have the option of following the terms and conditions
either of that version or of any later version published by the Free
Software Foundation.  If the Program does not specify a version number of
this License, you may choose any version ever published by the Free Software
Foundation.

  10. If you wish to incorporate parts of the Program into other free
programs whose distribution conditions are different, write to the author
to ask for permission.  For software which is copyrighted by the Free
Software Foundation, write to the Free Software Foundation; we sometimes
make exceptions for this.  Our decision will be guided by the two goals
of preserving the free status of all derivatives of our free software and
of promoting the sharing and reuse of software generally.

			    NO WARRANTY

  11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY
FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW.  EXCEPT WHEN
OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES
PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED
OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.  THE ENTIRE RISK AS
TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU.  SHOULD THE
PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING,
REPAIR OR CORRECTION.

  12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING
WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR
REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES,
INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING
OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED
TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY
YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER
PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE
POSSIBILITY OF SUCH DAMAGES.

		     END OF TERMS AND CONDITIONS

	    How to Apply These Terms to Your New Programs

  If you develop a new program, and you want it to be of the greatest
possible use to the public, the best way to achieve this is to make it
free software which everyone can redistribute and change under these terms.

  To do so, attach the following notices to the program.  It is safest
to attach them to the start of each source file to most effectively
convey the exclusion of warranty; and each file should have at least
the "copyright" line and a pointer to where the full notice is found.

    <one line to give the program's name and a brief idea of what it does.>
    Copyright (C) <year>  <name of author>

    This program is free software; you can redistribute it and/or modify
    it under the terms of the GNU General Public License as published by
    the Free Software Foundation; either version 2 of the License, or
    (at your option) any later version.

    This program is distributed in the hope that it will be useful,
    but WITHOUT ANY WARRANTY; without even the implied warranty of
    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
    GNU General Public License for more details.

    You should have received a copy of the GNU General Public License
    along with this program; if not, write to the Free Software
    Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA


Also add information on how to contact you by electronic and paper mail.

If the program is interactive, make it output a short notice like this
when it starts in an interactive mode:

    Gnomovision version 69, Copyright (C) year name of author
    Gnomovision comes with ABSOLUTELY NO WARRANTY; for details type `show w'.
    This is free software, and you are welcome to redistribute it
    under certain conditions; type `show c' for details.

The hypothetical commands `show w' and `show c' should show the appropriate
parts of the General Public License.  Of course, the commands you use may
be called something other than `show w' and `show c'; they could even be
mouse-clicks or menu items--whatever suits your program.

You should also get your employer (if you work as a programmer) or your
school, if any, to sign a "copyright disclaimer" for the program, if
necessary.  Here is a sample; alter the names:

  Yoyodyne, Inc., hereby disclaims all copyright interest in the program
  `Gnomovision' (which makes passes at compilers) written by James Hacker.

  <signature of Ty Coon>, 1 April 1989
  Ty Coon, President of Vice

This General Public License does not permit incorporating your program into
proprietary programs.  If your program is a subroutine library, you may
consider it more useful to permit linking proprietary applications with the
library.  If this is what you want to do, use the GNU Library General
Public License instead of this License.
********************************************
*** PsyTexx Amiga MOD Tracker for PalmOS ***
********************************************
*** THIS PROGRAM IS FREE                 ***
*** USE IT AT YOUR OWN RISK!             ***
*** Send comments to:                    ***
*** observer_page@mail.ru                ***
*** Official website:                    ***
*** www.warmplace.ru                     ***
********************************************

At the moment there are two problems:
1) I have middling english :)
2) PsyTexx sources are old and they have difficult unreasoned structure
   with bugs (may be) and many gcc "warnings". The PsyTexx2 will be fully
   rewrited and it'll be without aforesaid problems.

PsyTexx was writed in the Windows environment with the Cygwin (linux emulator).
So it is needs for the latest PRC-Tools with the PilRC resource compiler.
Just run the makefile.bat (in the parent directory) for compiling

MOD2PDB/PDB2MOD convertrer has not multiplatform sources. It was writed 
in the Win32 Sphinx C-- compiler (sheker.chat.ru). All these files are
in the PDB_converter folder:
C--.EXE
MOD2PDB.c--
PDB2MOD.C--
Use makefile.bat for fast compiling.

Sources of all pictures are in *.AUR files. You need the NewTek Aura
for edit it.

RESULTED FILES:  psytexx.prc  backup.pdb

enjoy :)  and waiting for the PsyTexx2 - XM Tracker.
// ------------------------------------------------------------------- //
//               STRING32.TXT for Sphinx C-- (STRING32.H--)            //
//               Function for work with lines under Win32              //
//               The offers and ¯«¥¢ª¨ send on hd_keeper@mail.ru       //
// ------------------------------------------------------------------- //

   The description of functions from STRING32.H-- is indicated below,
intended for, work with ASCIIZ-lines and areas of memory under Win32. As it
is accepted in C--, all functions are dynamic and do not increase a size of a
code, if are not used. The functions are optimized under Pentium and 32-bit
segments code. Though the functions also were intended for work under Windows
in memory model FLAT, they will work under any other operational system for
want of observance the following conditions:
   1) The 32-bit operands contain correct displacements
   2) The segment registers DS and ES are equal
   3) The flag of a direction is dropped: DF = 0
The 32-bit segments of a code are desirable (for maintenance of maximum
Productivity), but not mandatory condition of application.
   The size of functions is given for want of their introduction in a code of
the program (@). In case Call of functions (CALL) it is necessary to add 1
byte on the instruction RET.


   --------------- Function for work with ASCIIZ-lines ---------------


   strlen
   Definition of length of a line

:DWORD strlen (LPSTR str);
str - pointer on a line
Returns: length of a line, not including, finishing 0,
Size: 12 bytes
WinAPI analog: lstrlen


   strend
   Definition of an extremity of a line

:LPSTR strend (LPSTR str);
str - pointer on a line
Returns: the pointer on an extremity of a line (on, finishing 0),
Size: 10 bytes


   strcpy
   Copying of a line

:LPSTR strcpy (LPSTR dest, src);
src - pointer on an initial line
Dest - pointer on the buffer, where will be copied src
Returns: dest
Size: 32 bytes
WinAPI analog: lstrcpy


   strcpyn, strncpy
   Copying of a line with restriction on length

:LPSTR strcpyn (LPSTR dest, src; DWORD max);
src - pointer on an initial line
dest - pointer on the buffer, where will be copied src
max - maxima of numerals, how many to copy from src
Returns: dest
Size: 40 bytes
WinAPI analog: lstrcpyn


   strmov
   Copying of a line (for overlapped lines)

:LPSTR strmov (LPSTR dest, src);
src - pointer on an initial line
dest - pointer on the buffer, where will be copied src
Returns: dest
Size: 73 bytes


   strmovn, strnmov
   Copying of a line with restriction on length (for overlapped lines)

:LPSTR strmovn (LPSTR dest, src; DWORD max);
src - pointer on an initial line
dest - pointer on the buffer, where will be copied src
max - maxima of numerals, how many to copy from src
Returns: dest
Size: 79 bytes


   strcat
   Concatenation of lines (dest = dest + src)

:LPSTR strcat (LPSTR dest, src);
src - pointer on a line, which will be attributed to dest
dest - pointer on a line, to which will be attributed src
Returns: dest
Size: 44 bytes
WinAPI analog: lstrcat


   strcmp
   Comparison of lines

:LONG strcmp (LPSTR str1, str2);
str1, str2 - pointers on compared lines
Returns: 0, if str1 = str2
          < 0, if str1 < str2
          > 0, if str1 > str2
Size: 26 bytes
WinAPI analog: lstrcmp


   strcmpi, stricmp
   Comparison of lines with ignoring of the register

:LONG strcmpi (LPSTR str1, str2);
str1, str2 - pointers on compared lines
Returns: 0, if str1 = str2
          < 0, if str1 < str2
          > 0, if str1 > str2
Size: 53 bytes
WinAPI analog: lstrcmpi


   strcmpn, strncmp
   Comparison of lines with restriction on length

:LONG strcmpn (LPSTR str1, str2; DWORD max);
str1, str2 - pointers on compared lines
max - maxima of numerals, how many to compare
Returns: 0, if str1 = str2
          < 0, if str1 < str2
          > 0, if str1 > str2
Size: 30 bytes
WinAPI analog: CompareString


   strcmpni, strcmpin, strncmpi, stricmpn, strnicmp, strincmp
   Comparison of lines with restriction on length and ignoring of the register

:LONG strcmpni (LPSTR str1, str2; DWORD max);
str1, str2 - pointers on compared lines
max - maxima of numerals, how many to compare
Returns: 0, if str1 = str2
          < 0, if str1 < str2
          > 0, if str1 > str2
Size: 57 bytes
WinAPI analog: CompareString


   strchr
   Search of a numeral in a line

:LPSTR strchr (LPSTR str; CHAR chr);
str - pointer on a line
chr - required numeral
Returns: the pointer on the first found numeral
Size: 27 bytes


   strchrr, strrchr
   Search of a numeral in a line from an extremity

:LPSTR strchrr (LPSTR str; CHAR chr);
str - pointer on a line
chr - required numeral
Returns: the pointer on the last found numeral
Size: 26 bytes


   strstr
   Search of a substring in a line

:LPSTR strstr (LPSTR str, substr);
str - pointer on a line, in which is made search
substr - pointer on a required substring
Returns: the pointer on the first numeral of the found substring in str
            (0, if not is found)
Size: 63 bytes


   strupr
   Reduction of a line to the upper case

:LPSTR strupr (LPSTR str);
str - pointer on a line
Returns: str
Size: 24 bytes
WinAPI analog: CharUpper


   strlwr
   Reduction of a line to a lower cascading

:LPSTR strlwr (LPSTR str);
str - pointer on a line
Returns: str
Size: 24 bytes
WinAPI analog: CharLower


   strtok
   Partition of a line on words

:LPSTR strtok (LPSTR dest, src, divs);
src - pointer on an initial line or outcome of the previous call
dest - pointer on the buffer, where will be copied a word
divs - pointer on a line, containing a numeral - separators
Returns: 0, if the words more are not present
         Not 0, if the word is copied in dest (transmit this significance
               In quality src for consequent search)
Size: 50 bytes


   --------------- Function for work with areas of memory ---------------


   memsetz, memzset, memset0, mem0set
   Ž¡­ã«¥­¨¥ of area of memory

:void memsetz (LPVOID mem; DWORD size);
mem - pointer on area of memory
size - size of area in bytes
Returns: anything
Size: 16 bytes
WinAPI analog: ZeroMemory


   memset
   Filling of area of memory

:void memset (LPVOID mem; DWORD size; BYTE value);
mem - pointer on area of memory
size - size of area in bytes
value - significance of byte of filling
Returns: anything
Size: 24 bytes
WinAPI analog: FillMemory


   memcpy
   Copying of area of memory

:void memcpy (LPVOID dest, src; DWORD size);
src - pointer on area, whence to copy datas
dest - pointer on area where to copy datas
size - amount byte, how many to copy
Returns: anything
Size: 14 bytes
WinAPI analog: CopyMemory


   memsetd, memset32
   Fast filling of area of memory

:void memsetd (LPVOID mem; DWORD size, value);
mem - pointer on area of memory
size - size of area in double words (not in bytes!)
value - significance of a double word of filling
Returns: anything
Size: 2 bytes


   memcpyd, memcpy32
   Fast copying of area of memory

:void memcpyd (LPVOID dest, src; DWORD size);
src - pointer on area, whence to copy datas
dest - pointer on area where to copy datas
size - amount of double words (not byte!), how many to copy
Returns: anything
Size: 2 bytes


   memmov
   Copying of area of memory (for overlapped areas)

:void memmov (LPVOID dest, src; DWORD size);
src - pointer on area, whence to copy datas
dest - pointer on area where to copy datas
size - amount byte, how many to copy
Returns: anything
Size: 57 bytes
WinAPI analog: MoveMemory


   memcmp
   Comparison of areas of memory

:LONG memcmp (LPVOID mem1, mem2; DWORD size);
mem1, mem2 - pointers on compared areas
size - amount byte, how many to compare (0 - any)
Returns: 0, if mem1 = mem2
          < 0, if mem1 < mem2
          > 0, if mem1 > mem2
Size: 26 bytes


   --------------------------------------- --------------------------

In total of functions: 24
Total size: 811 bytes (835 bytes)
// ------------------------------------------------------------------- //
//                        Libraries Win32 API                          //
//                       for Sphinx C-- 0.229+                         //
// ------------------------------------------------------------------- //

From what ALL BEGAN

... By undertaking for programming on C-- under Windows, I have come across
absence of libraries satisfying to my requests. Here and it was necessary
before of writing of the programs to undertake development of these
libraries.
    This package was written because of of analogs, taken from Borland Delphi
and C++ Builder. From source codes were eliminated little use in practice of
a structure and constant. Quite probably, in the consequent versions of
library will be extended and are supplemented.
    Despite of a significant diminution of volume of an initial code on a
comparison with analogs C++, the libraries are still too great for the
version of the compiler C-under DOS. For example, on compilation WINUSER.H--
any more there is no memory. However, it can easily be bypassed, by taking
advantage the version of the compiler C--32 under a cantilever mode Windows.
I do not see in it of a large problem: time you have undertaken to program
under Windows - use the compiler under Windows.

    The libraries Win32 API, realized for C++ Builder and C-- 0.229, are
connected as follows: constants at first are declared, and then one file is
connected:
    #define _WINBASE_ TRUE
    #define _WINGDI_ TRUE
    #include "windows.h--"
I like a method of connection of several files more:
    #include "winbase.h--"
    #include "wingdi.h--"
    #include "winuser.h--"
The former method is still supported and will be supported. The WINDOWS.H--
file exists just for assuring compatibility with this method.

// ------------------------------------------------------------------- //

THAT IS ALREADY MADE

The given realization includes the following files:
ADVAPI   H-- Work with the register
CCANIM   H-- Service functions for animation
CCHEADER H-- Service functions for separators
CCLIST   H-- Service functions for the lists
CCPRSHT  H-- Service functions for multipage boards
CCTAB    H-- Service functions for bookmarks
CCTREE   H-- Service functions for trees
COMMCTRL H-- Lists, trees, ¯à®£à¥ááë, bookmark, status bar...
COMMDLG  H-- Dialogues of discovery of the file, preservation, printing,
             search.
LZEXPAND H-- Unpacking of files, wrapped up COMPRESS.EXE
SHELLAPI H-- Work with âàí©¥¬, drag and drop, documents...
STRING32 H-- Classical functions of work with lines under Win32
WINBASE  H-- Work with memory, files, DLL, console, lines...
WINDEF   H-- Main declarations of types, structures and ¬ ªà®á®¢
WINDOWS  H-- Is for compatibility at a level of source codes
WINERROR H-- Codes of errors Windows
WINGDI   H-- Work with contexts of systems(devices), graphics and fonts
WINUSER  H-- Event, messages, resources(safe lifes) and other interface
README32 TXT This file
STRING32 TXT the Description of functions STRING32.H--

    Now is a little bit more detailed about all these files. At once I shall
tell, that at me is not present slightest desire to describe ALL or even some
functions Win32 API. For the sake of study of the mechanism of programming
under Windows I can only advise to read a pair of the good books, and as
reference "on-line" of a manual - well-known MS SDK Help.

    WINDEF.H--
    Contains the descriptions of main data types, constants and structures.
Some macros also are circumscribed. You hardly need to connect this file to
the program obviously, as it will be connected for want of use WINDOWS.H-- or
WINBASE.H--.

    WINDOWS.H--
    Is intended for compatibility with a "classical" method of connection of
libraries. Using this file, you should up to its connection declare
appropriate constants.

    WINBASE.H--
    Is for import of functions from KERNEL32.DLL, also contains the
descriptions of constants and structures necessary for work with these
functions. In this and in all remaining libraries the preference is given up
to functions and structures for work with ANSI-lines, the UNICODE-functions
are not realized by virtue of their extremely rare application.
    The functions of a Windows kernel are used for a memory allocation and
other system resources, management of processes and streams, work with files,
and ASCIIZ-lines, loading DLL, cantilever input-output... Perhaps, any
program under Windows will use functions of this library.

    WINGDI.H--
    Imports functions from GDI32.DLL, destination for work with such graphic
objects, as contexts of devices (DC), fonts (Font), paintbrushes (Brush),
pens (Pen), figures (Bitmap, Metafile), and also graphic objects. The
functions of the interface of graphic devices (GDI) will be useful first of
all to the one who attends to creation of own interface elements of the
window, and also founders graphic demo.

    WINUSER.H--
    Will realize functions USER32.DLL, which are used for work with windows,
buttons, menu, text, icons, fields of input and other main elements of dialog
boxes. Also contains the descriptions of functions, structures and constants
for work with events and messages, there are functions for transformation and
formatting of ASCIIZ-lines. The programs using the graphic user interface
(GUI), necessarily should use this library.  Three above named DLL - KERNEL,
GDI, USER - make basis as well as most operational system Windows, and any
program under it.

    WINERROR.H--
    Contains the descriptions of constants - codes of errors Windows. The
library can be useful at the stage of a program debugging.

    COMMCTRL.H--
    Contains imported from COMCTL32.DLL of function, and also description of
structures and constants for the messages.  The animation (Animation),
various lists is used for creation of such interface elements, as ( Drag
List, Image List, List View, Tree View), bookmark (Tab Control), multipage
dialogues (Property Sheets), status bar and progress (Status Bar, Progress
Bar), (Toolbar) toolbar, movable indicators (Trackbar), pop-pup of the helps
(Tooltip), titles and separators (Header Control). With the purposes of a
diminution of volume of a target code the auxiliary service functions
engaging in the sum about 4K of an object code, are born in files CC*.H--. If
you do not want to use them, you can send the appropriate messages by
API-function SendMessage.

    COMMDLG.H--
    Will realize the interface with COMDLG32.DLL, is used for work with
standard dialog boxes: discovery of the file, preservation of the file,
search and replacement of the text, choice of colour, choice of the font,
preparation for listing.

    ADVAPI.H--
    Is for import of functions from ADVAPI32.DLL, which are applied to work
with the system register both modes of safety and access (ACL, ACE, SID). If
somebody knows, what favour can be extracted from structures of a type ACL
and SID - write.

    SHELLAPI.H--
    Imports functions from SHELL32.DLL - extension an envelope. You can use
this library for work with protocol Drag and Drop, tram of a board of
problems, extraction of icons from the programs and libraries, discovery of
the documents and appendices, working with them, and much other.

    LZEXPAND.H--
    Will realize functions LZ32.DLL - library of unpacking of datas. Allows
to unpack datas packed by the program COMPRESS. You can use this library, by
creating the file with a graphics and - or by music for demo and then by
packing it by the program COMPRESS.

    STRING32.H--
    Contains realization classical for C of functions of processing of
ASCIIZ-lines and simply of lines under Win32. Certainly, you can quite do
without by use appropriate WinAPI of functions, but if for you the velocity
has critical significance - these functions for you. For the detail
description of functions look the file STRING32.TXT.

CCANIM.H--   _CCANIM _
CCHEADER.H-- _CCHEADER_
CCLIST.H--   _CCLIST_
CCPRSHT.H--  _CCPRSHT_
CCTAB.H--    _CCTAB_
CCTREE.H--   _CCTREE_
    Contains the description of service functions for the following interface
elements accordingly: animation (Animation Control), separators (Header
Control), lists (List View), multipage dialogue boards (Property Sheet),
bookmark (Tab Control) and trees (Tree View). By virtue of impossibility of
call of API-functions of dynamic procedures all service functions should be
made static, and for a diminution of volume of an object code to bear them in
"own" libraries.

    COMPRESS.EXE
    The program of compression of datas from Microsoft. Uses algorithm LZ.
The serious restriction - in one archive can be only one file (catalogue is
not present). Can be applied to compression of the file with datas for
consequent unpacking by functions of library LZEXPAND.H--.

// ------------------------------------------------------------------- //

WHAT STILL IT WOULD BE DESIRABLE TO MAKE

    By unique restriction of development of libraries of a possibility of the
C-- compiler. Many things under Windows (like indirect calls or work with
structures under the reference) are rather complicated for organizing without
a normal model of the pointers. The development of libraries will be
conducted in parallel to development of the compiler.

    In the consequent versions of libraries the support is planned:
1) WinSocket and WinInet
2) DirectX (in particular, DirectDraw and DirectInput)
3) Interfaces of objects an envelope (Shell Library Object)

// ------------------------------------------------------------------- //

HOW TO CONTACT to the AUTHOR

You can write to me on E-Mail or in FIDO:

E-Mail: hd_keeper@mail.ru
FIDO: 2:5024/22.13@fidonet

    Send me your offers, note, and especially messages on detected errors. I
should know, in what direction to work further. You can freely modify
libraries, if the introduced modifications can, under your judgement, to
reduce in their improving. Only do not overlook then to inform me on the most
successful updatings. I do not promise, that I shall answer all letters, but
necessarily I shall read and I shall take part to an information.

Have a nice coding!
Anton Kopeev AKA Keeper





// ------------------------------------------------------------------- //
//                           ¨¡«¨®â¥ª¨ Win32 API                      //
//                           ¤«ï Sphinx C-- 0.229+                     //
// ------------------------------------------------------------------- //

   ‘ —…ƒŽ ‚‘… €—€‹Ž‘œ

   ...‚§ï¢è¨áì §  ¯à®£à ¬¬¨à®¢ ­¨¥ ­  C-- ¯®¤ Windows, ï ­ â®«ª­ã«áï ­ 
®âáãâá⢨¥ ¡¨¡«¨®â¥ª, 㤮¢«¥â¢®àïîé¨å ¬®¨¬ § ¯à®á ¬. ‚®â â ª ¨ ¯à¨è«®áì
¯à¥¦¤¥ ­ ¯¨á ­¨ï ¯à®£à ¬¬ ¢§ïâìáï §  ࠧࠡ®âªã íâ¨å ¡¨¡«¨®â¥ª.
   â®â ¯ ª¥â ¡ë« ­ ¯¨á ­ ­  ®á­®¢¥  ­ «®£®¢, ¢§ïâëå ¨§ Borland Delphi ¨
C++ Builder. ˆ§ ¨á室­ëå ⥪á⮢ ¡ë«¨ ¨áª«îç¥­ë ¬ «®¨á¯®«ì§ã¥¬ë¥ ­  ¯à ªâ¨ª¥
áâàãªâãàë ¨ ª®­áâ ­âë. ‚¯®«­¥ ¢®§¬®¦­®, ¢ ¯®á«¥¤ãîé¨å ¢¥àá¨ïå ¡¨¡«¨®â¥ª¨
¡ã¤ãâ à áè¨à¥­ë ¨ ¤®¯®«­¥­ë.
   ¥á¬®âàï ­  §­ ç¨â¥«ì­®¥ 㬥­ì襭¨¥ ®¡ê¥¬  ¨á室­®£® ª®¤  ¯® áà ¢­¥­¨î á
 ­ «®£ ¬¨ C++, ¡¨¡«¨®â¥ª¨ ¢á¥ ¥é¥ ᫨誮¬ ¢¥«¨ª¨ ¤«ï ¢¥àᨨ ª®¬¯¨«ïâ®à  C--
¯®¤ DOS.  ¯à¨¬¥à, ­  ª®¬¯¨«ïæ¨î WINUSER.H-- 㦥 ­¥ 墠⠥⠯ ¬ïâ¨. ‚¯à®ç¥¬,
íâ® ¬®¦­® «¥£ª® ®¡®©â¨, ¢®á¯®«ì§®¢ ¢è¨áì ¢¥àᨥ© ª®¬¯¨«ïâ®à  C--32 ¯®¤
ª®­á®«ì­ë© ०¨¬ Windows. Ÿ ­¥ ¢¨¦ã ¢ í⮬ ¡®«ì让 ¯à®¡«¥¬ë: à § ¢ë ¢§ï«¨áì
¯à®£à ¬¬¨à®¢ âì ¯®¤ Windows - ¨á¯®«ì§ã©â¥ ª®¬¯¨«ïâ®à ¯®¤ Windows.

   ¨¡«¨®â¥ª¨ Win32 API, ॠ«¨§®¢ ­­ë¥ ¤«ï C++ Builder ¨ C-- 0.229,
¯®¤ª«îç îâáï á«¥¤ãî騬 ®¡à §®¬: á­ ç «  ®¡êïîâáï ª®­áâ ­âë,   § â¥¬
¯®¤ª«îç ¥âáï ®¤¨­ ä ©«:
   #define _WINBASE_ TRUE
   #define _WINGDI_ TRUE
   #include "windows.h--"
Œ­¥ ¦¥ ¡®«ìè¥ ­à ¢¨âáï ᯮᮡ ¯®¤ª«î祭¨ï ­¥áª®«ìª¨å ä ©«®¢:
   #include "winbase.h--"
   #include "wingdi.h--"
   #include "winuser.h--"
à¥¦­¨© ᯮᮡ ¯®-¯à¥¦­¥¬ã ¯®¤¤¥à¦¨¢ ¥âáï ¨ ¡ã¤¥â ¯®¤¤¥à¦¨¢ âìáï. ” ©«
WINDOWS.H-- áãé¥áâ¢ã¥â ¨¬¥­­® ¤«ï ®¡¥á¯¥ç¥­¨ï ᮢ¬¥á⨬®á⨠á í⨬ ᯮᮡ®¬.

// ------------------------------------------------------------------- //

   —’Ž “†… ‘„…‹€Ž

   „ ­­ ï ॠ«¨§ æ¨ï ¢ª«î砥⠢ ᥡï á«¥¤ãî騥 ä ©«ë:
   ADVAPI   H--    ¡®â  á ॥áâ஬
   CCANIM   H--   ‘¥à¢¨á­ë¥ ä㭪樨 ¤«ï  ­¨¬ æ¨¨
   CCHEADER H--   ‘¥à¢¨á­ë¥ ä㭪樨 ¤«ï à §¤¥«¨â¥«¥©
   CCLIST   H--   ‘¥à¢¨á­ë¥ ä㭪樨 ¤«ï ᯨ᪮¢
   CCPRSHT  H--   ‘¥à¢¨á­ë¥ ä㭪樨 ¤«ï ¬­®£®áâà ­¨ç­ëå ¯ ­¥«¥©
   CCTAB    H--   ‘¥à¢¨á­ë¥ ä㭪樨 ¤«ï § ª« ¤®ª
   CCTREE   H--   ‘¥à¢¨á­ë¥ ä㭪樨 ¤«ï ¤¥à¥¢ì¥¢
   COMMCTRL H--   ‘¯¨áª¨, ¤¥à¥¢ìï, ¯à®£à¥ááë, § ª« ¤ª¨, áâப¨ á®áâ®ï­¨ï...
   COMMDLG  H--   „¨ «®£¨ ®âªàëâ¨ï ä ©« , á®åà ­¥­¨ï, ¯¥ç â¨, ¯®¨áª .
   LZEXPAND H--    á¯ ª®¢ª  ä ©«®¢, § ¯ ª®¢ ­­ëå COMPRESS.EXE
   SHELLAPI H--    ¡®â  á âàí©¥¬, drag&drop, ¤®ªã¬¥­â ¬¨...
   STRING32 H--   Š« áá¨ç¥áª¨¥ ä㭪樨 à ¡®âë á® áâப ¬¨ ¯®¤ Win32
   WINBASE  H--    ¡®â  á ¯ ¬ïâìî, ä ©« ¬¨, DLL, ª®­á®«ìî, áâப ¬¨...
   WINDEF   H--   Žá­®¢­ë¥ ®¡ê¥­¨ï ⨯®¢, áâàãªâãà ¨ ¬ ªà®á®¢
   WINDOWS  H--   ‘«ã¦¨â ¤«ï ᮢ¬¥á⨬®á⨠­  ã஢­¥ ¨á室­ëå ⥪á⮢
   WINERROR H--   Š®¤ë ®è¨¡®ª Windows
   WINGDI   H--    ¡®â  á ª®­â¥ªáâ ¬¨ ãáâனáâ¢, £à ä¨ª®© ¨ èà¨äâ ¬¨
   WINUSER  H--   ‘®¡ëâ¨ï, á®®¡é¥­¨ï, à¥áãàáë ¨ ¯à®ç¨© ¨­â¥à䥩á
   README32 TXT   â®â ä ©«
   STRING32 TXT   Ž¯¨á ­¨¥ ä㭪権 STRING32.H--

   ’¥¯¥àì ­¥áª®«ìª® ¯®¯®¤à®¡­¥¥ ®¡® ¢á¥å íâ¨å ä ©« å. ‘à §ã ᪠¦ã, çâ® ã
¬¥­ï ­¥â ­¨ ¬ «¥©è¥£® ¦¥« ­¨ï ®¯¨á뢠âì ‚‘… ¨«¨ å®âï ¡ë ­¥ª®â®àë¥ ä㭪樨
Win32 API.  ¤¨ ¨§ã祭¨ï ¬¥å ­¨§¬  ¯à®£à ¬¬¨à®¢ ­¨ï ¯®¤ Windows ï ¬®£ã «¨èì
¯®á®¢¥â®¢ âì ¯à®ç¨â âì ¯ àã å®à®è¨å ª­¨£,   ¢ ª ç¥á⢥ á¯à ¢®ç­®£® "on-line"
à㪮¢®¤á⢠ - ­¥¡¥§ë§¢¥áâ­ë© MS SDK Help.

   WINDEF.H--
   ‘®¤¥à¦¨â ®¯¨á ­¨ï ®á­®¢­ëå ⨯®¢ ¤ ­­ëå, ª®­áâ ­â ¨ áâàãªâãà. ’ ª¦¥
®¯¨á ­ë ­¥ª®â®àë¥ ¬ ªà®ª®¬ ­¤ë. ‚ ¬ ¢àï¤ «¨ ¯®­ ¤®¡¨âáï ¯®¤ª«îç âì íâ®â
ä ©« ª ᢮¥© ¯à®£à ¬¬¥ ®, â ª ª ª ®­ ¡ã¤¥â ¯®¤ª«î祭 ¯à¨ ¨á¯®«ì§®¢ ­¨¨
WINDOWS.H-- ¨«¨ WINBASE.H--.

   WINDOWS.H--
   à¥¤­ §­ ç¥­ ¤«ï ᮢ¬¥á⨬®á⨠á "ª« áá¨ç¥áª¨¬" ᯮᮡ®¬ ¯®¤ª«î祭¨ï
¡¨¡«¨®â¥ª. ˆá¯®«ì§ãï íâ®â ä ©«, ¢ë ¤®«¦­ë ¤® ¥£® ¯®¤ª«î祭¨ï ®¡êâì
ᮮ⢥âáâ¢ãî騥 ª®­áâ ­âë.

   WINBASE.H--                                   _WINBASE_
   ‘«ã¦¨â ¤«ï ¨¬¯®àâ  ä㭪権 ¨§ KERNEL32.DLL, â ª¦¥ ᮤ¥à¦¨â ®¯¨á ­¨ï
ª®­áâ ­â ¨ áâàãªâãà, ­¥®¡å®¤¨¬ëå ¤«ï à ¡®âë á í⨬¨ äã­ªæ¨ï¬¨. ‚ í⮩ ¨
¢® ¢á¥å ®áâ «ì­ëå ¡¨¡«¨®â¥ª å ¯à¥¤¯®ç⥭¨¥ ®â¤ ­® äã­ªæ¨ï¬ ¨ áâàãªâãà ¬
¤«ï à ¡®âë á ANSI-áâப ¬¨, UNICODE-ä㭪樨 ­¥ ॠ«¨§®¢ ­ë ¢ á¨«ã ¨å ªà ©­¥
।ª®£® ¯à¨¬¥­¥­¨ï.
   ”㭪樨 ï¤à  Windows ¨á¯®«ì§ãîâáï ¤«ï à á¯à¥¤¥«¥­¨ï ¯ ¬ï⨠¨ ¯à®ç¨å
á¨á⥬­ëå à¥áãàᮢ, ã¯à ¢«¥­¨ï ¯à®æ¥áá ¬¨ ¨ ¯®â®ª ¬¨, à ¡®âë á ä ©« ¬¨,
¨ ASCIIZ-áâப ¬¨, § £à㧪¨ DLL, ª®­á®«ì­®£® ¢¢®¤ -¢ë¢®¤ ... ®¦ «ã©,
«î¡ ï ¯à®£à ¬¬  ¯®¤ Windows ¡ã¤¥â ¨á¯®«ì§®¢ âì ä㭪樨 í⮩ ¡¨¡«¨®â¥ª¨.

   WINGDI.H--                                    _WINGDI_
   ˆ¬¯®àâ¨àã¥â ä㭪樨 ¨§ GDI32.DLL, ¯à¥¤­ ç­ ç¥­­ë¥ ¤«ï à ¡®âë á â ª¨¬¨
£à ä¨ç¥áª¨¬¨ ®¡ê¥ªâ ¬¨, ª ª ª®­â¥ªáâë ãáâனá⢠(DC), èà¨äâë (Font),
ª¨á⨠(Brush), ¯¥àìï (Pen), à¨áã­ª¨ (Bitmap, Metafile),   â ª¦¥ £à ä¨ç¥áª¨¬¨
¯à¨¬¨â¨¢ ¬¨. ”㭪樨 ¨­â¥àä¥©á  £à ä¨ç¥áª¨å ãáâனá⢠(GDI) ¡ã¤ãâ ¯®«¥§­ë
¢ ¯¥à¢ãî ®ç¥à¥¤ì ⥬, ªâ® § ­¨¬ ¥âáï ᮧ¤ ­¨¥¬ ᮡá⢥­­ëå ¨­â¥à䥩á­ëå
í«¥¬¥­â®¢ ®ª­ ,   â ª¦¥ ᮧ¤ â¥«ï¬ £à ä¨ç¥áª¨å ¤¥¬®.

   WINUSER.H--                                   _WINUSER_
   ¥ «¨§ã¥â ä㭪樨 USER32.DLL, ª®â®àë¥ ¨á¯®«ì§ãîâáï ¤«ï à ¡®âë á ®ª­ ¬¨,
ª­®¯ª ¬¨, ¬¥­î, ⥪á⮬, ¨ª®­ª ¬¨, ¯®«ï¬¨ ¢¢®¤  ¨ ¯à®ç¨¬¨ ®á­®¢­ë¬¨ í«¥¬¥â ¬¨
¤¨ «®£®¢ëå ®ª®­. ’ ª¦¥ ᮤ¥à¦¨â ®¯¨á ­¨ï ä㭪権, áâàãªâãà ¨ ª®­áâ ­â ¤«ï
à ¡®âë á ᮡëâ¨ï¬¨ ¨ á®®¡é¥­¨ï¬¨, ¥áâì ä㭪樨 ¤«ï ¯à¥®¡à §®¢ ­¨ï ¨
ä®à¬ â¨à®¢ ­¨ï ASCIIZ-áâப. à®£à ¬¬ë, ¨á¯®«ì§ãî騥 £à ä¨ç¥áª¨© ¨­â¥à䥩á
¯®«ì§®¢ â¥«ï (GUI), ®¡ï§ â¥«ì­® ¤®«¦­ë ¨á¯®«ì§®¢ âì íâã ¡¨¡«¨®â¥ªã.
   ’ਠ¢ë襭 §¢ ­­ë¥ DLL - KERNEL, GDI, USER - á®áâ ¢«ïîâ ¡ §ã ª ª ¨ á ¬®©
®¯¥à æ¨®­­®© á¨á⥬ë Windows, â ª ¨ «î¡®© ¯à®£à ¬¬ë ¯®¤ ­¥¥.

   WINERROR.H--                                  _WINERROR_
   ‘®¤¥à¦¨â ®¯¨á ­¨ï ª®­áâ ­â - ª®¤®¢ ®è¨¡®ª Windows. ¨¡«¨®â¥ª  ¬®¦¥â
¡ëâì ¯®«¥§­  ­  áâ ¤¨¨ ®â« ¤ª¨ ¯à®£à ¬¬ë.

   COMMCTRL.H--                                  _COMMCTRL_
   ‘®¤¥à¦¨â ¨¬¯®àâ¨àã¥¬ë¥ ¨§ COMCTL32.DLL ä㭪樨,   â ª¦¥ ®¯¨á ­¨ï
áâàãªâãà ¨ ª®­áâ ­â ¤«ï á®®¡é¥­¨©. ˆá¯®«ì§ã¥âáï ¤«ï ᮧ¤ ­¨ï â ª¨å
¨­â¥à䥩á­ëå í«¥¬¥­â®¢, ª ª  ­¨¬ æ¨ï (Animation), à §«¨ç­ë¥ ᯨ᪨
(Drag List, Image List, List View, Tree View), § ª« ¤ª¨ (Tab Control),
¬­®£®áâà ­¨ç­ë¥ ¤¨ «®£¨ (Property Sheets), áâப¨ á®áâ®ï­¨ï ¨ ¯à®£à¥áá 
(Status Bar, Progress Bar), ¯ ­¥«¨ ¨­áâà㬥­â®¢ (Toolbar), ¯®«§ã­ª®¢
(Trackbar), ¢á¯«ë¢ë îé¨å ¯®¤áª §®ª (Tooltip), § £®«®¢ª®¢ ¨ à §¤¥«¨â¥«¥©
(Header Control). ‚ 楫ïå 㬥­ì襭¨ï ®¡ê¥¬  ¢ë室­®£® ª®¤  ¢á¯®¬®£ â¥«ì­ë¥
á¥à¢¨á­ë¥ ä㭪樨, § ­¨¬ î騥 ¢ á㬬¥ ®ª®«® 4K ®¡ê¥ªâ­®£® ª®¤ , ¢ë­¥á¥­ë ¢
ä ©«ë CC*.H--. …᫨ ¢ë ­¥ å®â¨â¥ ¨á¯®«ì§®¢ âì ¨å, ¢ë ¬®¦¥â¥ á ¬¨ ¯®áë« âì
ᮮ⢥âáâ¢ãî騥 á®®¡é¥­¨ï API-ä㭪樥© SendMessage.

   COMMDLG.H--                                   _COMMDLG_
   ¥ «¨§ã¥â ¨­â¥à䥩á á COMDLG32.DLL, ¨á¯®«ì§ã¥âáï ¤«ï à ¡®âë á®
áâ ­¤ àâ­ë¬¨ ¤¨ «®£®¢ë¬¨ ®ª­ ¬¨: ®âªàë⨥ ä ©« , á®åà ­¥­¨¥ ä ©« ,
¯®¨áª ¨ § ¬¥­  ⥪áâ , ¢ë¡®à 梥â , ¢ë¡®à èà¨äâ , ¯®¤£®â®¢ª  ª à á¯¥ç âª¥.

   ADVAPI.H--                                    _ADVAPI_
   ‘«ã¦¨â ¤«ï ¨¬¯®àâ  ä㭪権 ¨§ ADVAPI32.DLL, ª®â®àë¥ ¯à¨¬¥­ïîâáï ¤«ï
à ¡®âë á á¨á⥬­ë¬ ॥áâ஬ ¨ ०¨¬ ¬¨ ¡¥§®¯ á­®á⨠¨ ¤®áâ㯠 (ACL, ACE,
SID). …᫨ ªâ®-­¨¡ã¤ì §­ ¥â, ª ªãî ¯®«ì§ã ¬®¦­® ¨§¢«¥çì ¨§ áâàãªâãà ⨯ 
ACL ¨ SID - ¯¨è¨â¥.

   SHELLAPI.H--                                  _SHELLAPI_
   ˆ¬¯®àâ¨àã¥â ä㭪樨 ¨§ SHELL32.DLL - à áè¨à¥­¨ï ®¡®«®çª¨. ‚ë ᬮ¦¥â¥
¨á¯®«ì§®¢ âì íâã ¡¨¡«¨®â¥ªã ¤«ï à ¡®âë á ¯à®â®ª®«®¬ Drag&Drop, âàí©¥¬
¯ ­¥«¨ § ¤ ç, ¨§¢«¥ç¥­¨ï ¨ª®­®ª ¨§ ¯à®£à ¬¬ ¨ ¡¨¡«¨®â¥ª, ®âªàëâ¨ï ¤®ªã¬¥­â®¢
¨ à ¡®â îé¨å á ­¨¬¨ ¯à¨«®¦¥­¨© ¨ ¬­®£®£® ¤à㣮£®.

   LZEXPAND.H--                                  _LZEXPAND_
   ¥ «¨§ã¥â ä㭪樨 LZ32.DLL - ¡¨¡«¨®â¥ª¨ à á¯ ª®¢ª¨ ¤ ­­ëå. ®§¢®«ï¥â
à á¯ ª®¢ë¢ âì ¤ ­­ë¥, 㯠ª®¢ ­­ë¥ ¯à®£à ¬¬®© COMPRESS. ‚ë ¬®¦¥â¥
¨á¯®«ì§®¢ âì íâã ¡¨¡«¨®â¥ªã, ᮧ¤ ¢ ä ©« á £à ä¨ª®© ¨/¨«¨ ¬ã§ëª®© ¤«ï
᢮¥© ¤¥¬ª¨ ¨ § â¥¬ 㯠ª®¢ ¢ ¥£® ¯à®£à ¬¬®© COMPRESS.

   STRING32.H--                                  _STRING32_
   ‘®¤¥à¦¨â ॠ«¨§ æ¨î ª« áá¨ç¥áª¨å ¤«ï ‘¨ ä㭪権 ®¡à ¡®âª¨ ASCIIZ-áâப ¨
¯à®áâ® áâப ¯®¤ Win32. Š®­¥ç­®, ¢ë ¬®¦¥â¥ ¢¯®«­¥ ®¡®©â¨áì ¨á¯®«ì§®¢ ­¨¥¬
ᮮ⢥âáâ¢ãîé¨å WinAPI ä㭪権, ­® ¥á«¨ ¤«ï ¢ á ᪮à®áâì ¨¬¥¥â ªà¨â¨ç¥áª®¥
§­ ç¥­¨¥ - í⨠ä㭪樨 ¤«ï ¢ á. „«ï ¤¥â «ì­®£® ®¯¨á ­¨ï ä㭪権 ᬮâà¨â¥
ä ©« STRING32.TXT.

   CCANIM.H--                                    _CCANIM_
   CCHEADER.H--                                  _CCHEADER_
   CCLIST.H--                                    _CCLIST_
   CCPRSHT.H--                                   _CCPRSHT_
   CCTAB.H--                                     _CCTAB_
   CCTREE.H--                                    _CCTREE_
   ‘®¤¥à¦¨â ®¯¨á ­¨¥ á¥à¢¨á­ëå ä㭪権 ¤«ï á«¥¤ãîé¨å ¨­â¥à䥩á­ëå í«¥¬¥­â®¢
ᮮ⢥âá⢥­­®:  ­¨¬ æ¨ï (Animation Control), à §¤¥«¨â¥«¨ (Header Control),
ᯨ᪨ (List View), ¬­®£®áâà ­¨ç­ë¥ ¤¨ «®£®¢ë¥ ¯ ­¥«¨ (Property Sheet),
§ ª« ¤ª¨ (Tab Control) ¨ ¤¥à¥¢ìï (Tree View). ‚ ᨫ㠭¥¢®§¬®¦­®á⨠¢ë§®¢ 
API-ä㭪権 ¨§ ¤¨­ ¬¨ç¥áª¨å ¯à®æ¥¤ãà ¢á¥ á¥à¢¨á­ë¥ ä㭪樨 ¯à¨è«®áì ᤥ« âì
áâ â¨ç¥áª¨¬¨,   ¤«ï 㬥­ì襭¨ï ®¡ê¥¬  ®¡ê¥ªâ­®£® ª®¤  ¢ë­¥á⨠¨å ¢
"ᮡá⢥­­ë¥" ¡¨¡«¨®â¥ª¨.

   COMPRESS.EXE
   à®£à ¬¬  ᦠâ¨ï ¤ ­­ëå ®â Microsoft. ˆá¯®«ì§ã¥â  «£®à¨â¬ ‹¥¬¯¥«ï-‡¨¢ 
(LZ). ‘¥à쥧­®¥ ®£à ­¨ç¥­¨¥ - ¢ ®¤­®¬  à娢¥ ¬®¦¥â ¡ëâì ⮫쪮 ®¤¨­ ä ©«
(ª â «®£  ­¥â). Œ®¦¥â ¯à¨¬¥­ïâìáï ¤«ï ᦠâ¨ï ä ©«  á ¤ ­­ë¬¨ ¤«ï ¯®á«¥¤ãî饩
à á¯ ª®¢ª¨ äã­ªæ¨ï¬¨ ¡¨¡«¨®â¥ª¨ LZEXPAND.H--.

// ------------------------------------------------------------------- //

   —’Ž …™… •Ž—…’‘Ÿ ‘„…‹€’œ

   …¤¨­á⢥­­ë¬ ®£à ­¨ç¥­¨¥¬ à §¢¨â¨ï ¡¨¡«¨®â¥ª ¢®§¬®¦­®á⨠ª®¬¯¨«ïâ®à 
C--. Œ­®£¨¥ ¢¥é¨ ¯®¤ Windows (­ ¯®¤®¡¨¥ ª®á¢¥­­ëå ¢ë§®¢®¢ ¨«¨ à ¡®âë á®
áâàãªâãà ¬¨ ¯® áá뫪¥) ¢¥á쬠 á«®¦­® ®à£ ­¨§®¢ âì ¡¥§ ­®à¬ «ì­®© ¬®¤¥«¨
㪠§ â¥«¥©.  §¢¨â¨¥ ¡¨¡«¨®â¥ª ¡ã¤¥â ¢¥áâ¨áì ¯ à ««¥«ì­® à §¢¨â¨î
ª®¬¯¨«ïâ®à .

   ‚ ¯®á«¥¤ãîé¨å ¢¥àá¨ïå ¡¨¡«¨®â¥ª ¯« ­¨àã¥âáï ¯®¤¤¥à¦ª :
1) WinSocket ¨ WinInet
2) DirectX (¢ ç áâ­®áâ¨, DirectDraw ¨ DirectInput)
3) ¨­â¥à䥩ᮢ ®¡ê¥ªâ®¢ ®¡®«®çª¨ (Shell Library Object)

// ------------------------------------------------------------------- //

   Š€Š ‘‚Ÿ‡€’œ‘Ÿ ‘ €‚’ŽŽŒ

‚ë ¬®¦¥â¥ ­ ¯¨á âì ¬­¥ ­  E-Mail ¨«¨ ¢ FIDO:

   E-Mail: hd_keeper@mail.ru
   FIDO:   2:5024/22.13@fidonet

   à¨áë« ©â¥ ¬­¥ ¢ è¨ ¯à¥¤«®¦¥­¨ï, § ¬¥ç ­¨ï, ¨ ®á®¡¥­­® á®®¡é¥­¨ï
®¡ ®¡­ à㦥­­ëå ®è¨¡ª å. Œ­¥ ­ ¤® §­ âì, ¢ ª ª®¬ ­ ¯à ¢«¥­¨¨ à ¡®â âì
¤ «ìè¥. ‚ë ¬®¦¥â¥ ᢮¡®¤­® ¬®¤¨ä¨æ¨à®¢ âì ¡¨¡«¨®â¥ª¨, ¥á«¨ ¢­®á¨¬ë¥
¨§¬¥­¥­¨ï ¬®£ãâ, ¯® ¢ è¥¬ã ¬­¥­¨î, ¯à¨¢¥á⨠ª ¨å ã«ãç襭¨î. ’®«ìª® ­¥
§ ¡ã¤ì⥠¯®â®¬ á®®¡é¨âì ¬­¥ ® ­ ¨¡®«¥¥ 㤠ç­ëå ¬®¤¨ä¨ª æ¨ïå. ¥ ®¡¥é î,
çâ® ®â¢¥çã ­  ¢á¥ ¯¨á쬠, ­® ®¡ï§ â¥«ì­® ¯à®çâã ¨ ¯à¨¬ã ª ᢥ¤¥­¨î.

     Have a nice coding!
     €­â®­ Š®¯ì¥¢ AKA Keeper



// ------------------------------------------------------------------- //
//        STRING32.TXT ¤«ï Sphinx C-- (STRING32.H--)                   //
//        ”㭪樨 ¤«ï à ¡®âë á® áâப ¬¨ ¯®¤ Win32                     //
//        à¥¤«®¦¥­¨ï ¨ ¯«¥¢ª¨ ®â¯à ¢«ï©â¥ ­  hd_keeper@mail.ru        //
// ------------------------------------------------------------------- //

   ¨¦¥ ¯à¨¢¥¤¥­® ®¯¨á ­¨¥ ä㭪権 ¨§ STRING32.H--, ¯à¥¤­ §­ ç¥­­ë¥ ¤«ï
à ¡®âë á ASCIIZ-áâப ¬¨ ¨ ®¡« áâﬨ ¯ ¬ï⨠¯®¤ Win32. Š ª íâ® ¯à¨­ïâ® ¢
C--, ¢á¥ ä㭪樨 ïîâáï ¤¨­ ¬¨ç¥áª¨¬¨ ¨ ­¥ 㢥«¨ç¨¢ îâ à §¬¥à ª®¤ , ¥á«¨
­¥ ¨á¯®«ì§ãîâáï. ”㭪樨 ®¯â¨¬¨§¨à®¢ ­ë ¯®¤ Pentium ¨ 32-¡¨â­ë¥ ᥣ¬¥­âë
ª®¤ . •®âì ä㭪樨 ¨ ¯à¥¤­ §­ ç «¨áì ¤«ï à ¡®âë ¯®¤ Windows ¢ ¬®¤¥«¨ ¯ ¬ïâ¨
FLAT, ®­¨ ¡ã¤ãâ à ¡®â âì ¯®¤ «î¡ãî ¤àã£ãî ®¯¥à æ¨®­­ãî á¨á⥬㠯ਠᮡ«î¤¥­¨¨
á«¥¤ãîé¨å ãá«®¢¨©:
   1) 32-¡¨â­ë¥ ®¯¥à ­¤ë ᮤ¥à¦ â ª®à४â­ë¥ ᬥ饭¨ï
   2) ‘¥£¬¥­â­ë¥ ॣ¨áâàë DS ¨ ES à ¢­ë
   3) ”« £ ­ ¯à ¢«¥­¨ï á¡à®è¥­: DF=0
32-¡¨â­ë¥ ᥣ¬¥­âë ª®¤  ïîâáï ¦¥« â¥«ì­ë¬ (¤«ï ®¡¥á¯¥ç¥­¨ï ¬ ªá¨¬ «ì­®©
¯à®¨§¢®¤¨â¥«ì­®áâ¨), ­® ­¥ ®¡ï§ â¥«ì­ë¬ ãá«®¢¨¥¬ ¯à¨¬¥­¥­¨ï.
    §¬¥à ä㭪権 ¤ ­ ¯à¨ ¨å ¢­¥¤à¥­¨¨ ¢ ª®¤ ¯à®£à ¬¬ë (@). ‚ á«ãç ¥
¢ë§®¢  ä㭪権 (CALL) á«¥¤ã¥â ¤®¡ ¢¨âì 1 ¡ ©â ­  ¨­áâàãªæ¨î RET.


   --------------- ”㭪樨 ¤«ï à ¡®âë á ASCIIZ-áâப ¬¨ ---------------


   strlen
   Ž¯à¥¤¥«¥­¨¥ ¤«¨­ë áâப¨

:DWORD strlen( LPSTR str);
str - 㪠§ â¥«ì ­  áâபã
‚®§¢à é ¥â: ¤«¨­ã áâப¨, ­¥ ¢ª«îç ï § ¢¥àè î騩 0
 §¬¥à: 12 ¡ ©â
WinAPI  ­ «®£: lstrlen


   strend
   Ž¯à¥¤¥«¥­¨¥ ª®­æ  áâப¨

:LPSTR strend( LPSTR str);
str - 㪠§ â¥«ì ­  áâபã
‚®§¢à é ¥â: 㪠§ â¥«ì ­  ª®­¥æ áâப¨ (­  § ¢¥àè î騩 0)
 §¬¥à: 10 ¡ ©â


   strcpy
   Š®¯¨à®¢ ­¨¥ áâப¨

:LPSTR strcpy( LPSTR dest, src);
src - 㪠§ â¥«ì ­  ¨á室­ãî áâபã
dest - 㪠§ â¥«ì ­  ¡ãä¥à, ªã¤  ¡ã¤¥â ᪮¯¨à®¢ ­  src
‚®§¢à é ¥â: dest
 §¬¥à: 32 ¡ ©â
WinAPI  ­ «®£: lstrcpy


   strcpyn, strncpy
   Š®¯¨à®¢ ­¨¥ áâப¨ á ®£à ­¨ç¥­¨¥¬ ¯® ¤«¨­¥

:LPSTR strcpyn( LPSTR dest, src; DWORD max);
src - 㪠§ â¥«ì ­  ¨á室­ãî áâபã
dest - 㪠§ â¥«ì ­  ¡ãä¥à, ªã¤  ¡ã¤¥â ᪮¯¨à®¢ ­  src
max - ¬ ªá¨¬ã¬ ᨬ¢®«®¢, ᪮«ìª® ª®¯¨à®¢ âì ¨§ src
‚®§¢à é ¥â: dest
 §¬¥à: 40 ¡ ©â
WinAPI  ­ «®£: lstrcpyn


   strmov
   Š®¯¨à®¢ ­¨¥ áâப¨ (¤«ï ¯¥à¥ªà뢠îé¨åáï áâப)

:LPSTR strmov( LPSTR dest, src);
src - 㪠§ â¥«ì ­  ¨á室­ãî áâபã
dest - 㪠§ â¥«ì ­  ¡ãä¥à, ªã¤  ¡ã¤¥â ᪮¯¨à®¢ ­  src
‚®§¢à é ¥â: dest
 §¬¥à: 73 ¡ ©â


   strmovn, strnmov
   Š®¯¨à®¢ ­¨¥ áâப¨ á ®£à ­¨ç¥­¨¥¬ ¯® ¤«¨­¥ (¤«ï ¯¥à¥ªà뢠îé¨åáï áâப)

:LPSTR strmovn( LPSTR dest, src; DWORD max);
src - 㪠§ â¥«ì ­  ¨á室­ãî áâபã
dest - 㪠§ â¥«ì ­  ¡ãä¥à, ªã¤  ¡ã¤¥â ᪮¯¨à®¢ ­  src
max - ¬ ªá¨¬ã¬ ᨬ¢®«®¢, ᪮«ìª® ª®¯¨à®¢ âì ¨§ src
‚®§¢à é ¥â: dest
 §¬¥à: 79 ¡ ©â


   strcat
   Š®­ª â¥­ æ¨ï áâப (dest = dest + src)

:LPSTR strcat( LPSTR dest, src);
src - 㪠§ â¥«ì ­  áâபã, ª®â®à ï ¡ã¤¥â ¯à¨¯¨á ­  ª dest
dest - 㪠§ â¥«ì ­  áâபã, ª ª®â®à®© ¡ã¤¥â ¯à¨¯¨á ­  src
‚®§¢à é ¥â: dest
 §¬¥à: 44 ¡ ©â
WinAPI  ­ «®£: lstrcat


   strcmp
   ‘à ¢­¥­¨¥ áâப

:LONG strcmp( LPSTR str1, str2);
str1, str2 - 㪠§ â¥«¨ ­  áà ¢­¨¢ ¥¬ë¥ áâப¨
‚®§¢à é ¥â: 0, ¥á«¨ str1 = str2
          < 0, ¥á«¨ str1 < str2
          > 0, ¥á«¨ str1 > str2
 §¬¥à: 26 ¡ ©â
WinAPI  ­ «®£: lstrcmp


   strcmpi, stricmp
   ‘à ¢­¥­¨¥ áâப á ¨£­®à¨à®¢ ­¨¥¬ ॣ¨áâà 

:LONG strcmpi( LPSTR str1, str2);
str1, str2 - 㪠§ â¥«¨ ­  áà ¢­¨¢ ¥¬ë¥ áâப¨
‚®§¢à é ¥â: 0, ¥á«¨ str1 = str2
          < 0, ¥á«¨ str1 < str2
          > 0, ¥á«¨ str1 > str2
 §¬¥à: 53 ¡ ©â
WinAPI  ­ «®£: lstrcmpi


   strcmpn, strncmp
   ‘à ¢­¥­¨¥ áâப á ®£à ­¨ç¥­¨¥¬ ¯® ¤«¨­¥

:LONG strcmpn( LPSTR str1, str2; DWORD max);
str1, str2 - 㪠§ â¥«¨ ­  áà ¢­¨¢ ¥¬ë¥ áâப¨
max - ¬ ªá¨¬ã¬ ᨬ¢®«®¢, ᪮«ìª® áà ¢­¨¢ âì
‚®§¢à é ¥â: 0, ¥á«¨ str1 = str2
          < 0, ¥á«¨ str1 < str2
          > 0, ¥á«¨ str1 > str2
 §¬¥à: 30 ¡ ©â
WinAPI  ­ «®£: CompareString


   strcmpni, strcmpin, strncmpi, stricmpn, strnicmp, strincmp
   ‘à ¢­¥­¨¥ áâப á ®£à ­¨ç¥­¨¥¬ ¯® ¤«¨­¥ ¨ ¨£­®à¨à®¢ ­¨¥¬ ॣ¨áâà 

:LONG strcmpni( LPSTR str1, str2; DWORD max);
str1, str2 - 㪠§ â¥«¨ ­  áà ¢­¨¢ ¥¬ë¥ áâப¨
max - ¬ ªá¨¬ã¬ ᨬ¢®«®¢, ᪮«ìª® áà ¢­¨¢ âì
‚®§¢à é ¥â: 0, ¥á«¨ str1 = str2
          < 0, ¥á«¨ str1 < str2
          > 0, ¥á«¨ str1 > str2
 §¬¥à: 57 ¡ ©â
WinAPI  ­ «®£: CompareString


   strchr
   ®¨áª ᨬ¢®«  ¢ áâப¥

:LPSTR strchr( LPSTR str; CHAR chr);
str - 㪠§ â¥«ì ­  áâபã
chr - ¨áª®¬ë© ᨬ¢®«
‚®§¢à é ¥â: 㪠§ â¥«ì ­  ¯¥à¢ë© ­ ©¤¥­­ë© ᨬ¢®«
 §¬¥à: 27 ¡ ©â


   strchrr, strrchr
   ®¨áª ᨬ¢®«  ¢ áâப¥ á ª®­æ 

:LPSTR strchrr( LPSTR str; CHAR chr);
str - 㪠§ â¥«ì ­  áâபã
chr - ¨áª®¬ë© ᨬ¢®«
‚®§¢à é ¥â: 㪠§ â¥«ì ­  ¯®á«¥¤­¨© ­ ©¤¥­­ë© ᨬ¢®«
 §¬¥à: 26 ¡ ©â


   strstr
   ®¨áª ¯®¤áâப¨ ¢ áâப¥

:LPSTR strstr( LPSTR str, substr);
str - 㪠§ â¥«ì ­  áâபã, ¢ ª®â®à®© ¯à®¨§¢®¤¨âáï ¯®¨áª
substr - 㪠§ â¥«ì ­  ¨áª®¬ãî ¯®¤áâபã
‚®§¢à é ¥â: 㪠§ â¥«ì ­  ¯¥à¢ë© ᨬ¢®« ­ ©¤¥­­®© ¯®¤áâப¨ ¢ str
            (0, ¥á«¨ ­¥ ­ ©¤¥­ )
 §¬¥à: 63 ¡ ©â


   strupr
   à¨¢¥¤¥­¨¥ áâப¨ ª ¢¥àå­¥¬ã ॣ¨áâàã

:LPSTR strupr( LPSTR str);
str - 㪠§ â¥«ì ­  áâபã
‚®§¢à é ¥â: str
 §¬¥à: 24 ¡ ©â
WinAPI  ­ «®£: CharUpper


   strlwr
   à¨¢¥¤¥­¨¥ áâப¨ ª ­¨¦­¥¬ã ॣ¨áâàã

:LPSTR strlwr( LPSTR str);
str - 㪠§ â¥«ì ­  áâபã
‚®§¢à é ¥â: str
 §¬¥à: 24 ¡ ©â
WinAPI  ­ «®£: CharLower


   strtok
    §¡¨¥­¨¥ áâப¨ ­  á«®¢ 

:LPSTR strtok( LPSTR dest, src, divs);
src - 㪠§ â¥«ì ­  ¨á室­ãî áâப㠨«¨ १ã«ìâ â ¯à¥¤ë¤ã饣® ¢ë§®¢ 
dest - 㪠§ â¥«ì ­  ¡ãä¥à, ªã¤  ¡ã¤¥â ᪮¯¨à®¢ ­® á«®¢®
divs - 㪠§ â¥«ì ­  áâபã, ᮤ¥à¦ éãî ᨬ¢®«ë-à §¤¥«¨â¥«¨
‚®§¢à é ¥â: 0, ¥á«¨ á«®¢ ¡®«ìè¥ ­¥â
         ­¥ 0, ¥á«¨ á«®¢® ᪮¯¨à®¢ ­® ¢ dest (¯¥à¥¤ ©â¥ íâ® §­ ç¥­¨¥
               ¢ ª ç¥á⢥ src ¤«ï ¯®á«¥¤ãî饣® ¯®¨áª )
 §¬¥à: 50 ¡ ©â


   --------------- ”㭪樨 ¤«ï à ¡®âë á ®¡« áâﬨ ¯ ¬ï⨠---------------


   memsetz, memzset, memset0, mem0set
   Ž¡­ã«¥­¨¥ ®¡« á⨠¯ ¬ïâ¨

:void memsetz( LPVOID mem; DWORD size);
mem - 㪠§ â¥«ì ­  ®¡« áâì ¯ ¬ïâ¨
size - à §¬¥à ®¡« á⨠¢ ¡ ©â å
‚®§¢à é ¥â: ­¨ç¥£®
 §¬¥à: 16 ¡ ©â
WinAPI  ­ «®£: ZeroMemory


   memset
   ‡ ¯®«­¥­¨¥ ®¡« á⨠¯ ¬ïâ¨

:void memset( LPVOID mem; DWORD size; BYTE value);
mem - 㪠§ â¥«ì ­  ®¡« áâì ¯ ¬ïâ¨
size - à §¬¥à ®¡« á⨠¢ ¡ ©â å
value - §­ ç¥­¨¥ ¡ ©â  § ¯®«­¥­¨ï
‚®§¢à é ¥â: ­¨ç¥£®
 §¬¥à: 24 ¡ ©â
WinAPI  ­ «®£: FillMemory


   memcpy
   Š®¯¨à®¢ ­¨¥ ®¡« á⨠¯ ¬ïâ¨

:void memcpy( LPVOID dest, src; DWORD size);
src - 㪠§ â¥«ì ­  ®¡« áâì, ®âªã¤  ª®¯¨à®¢ âì ¤ ­­ë¥
dest - 㪠§ â¥«ì ­  ®¡« áâì, ªã¤  ª®¯¨à®¢ âì ¤ ­­ë¥
size - ª®«¨ç¥á⢮ ¡ ©â, ᪮«ìª® ª®¯¨à®¢ âì
‚®§¢à é ¥â: ­¨ç¥£®
 §¬¥à: 14 ¡ ©â
WinAPI  ­ «®£: CopyMemory


   memsetd, memset32
   ëáâ஥ § ¯®«­¥­¨¥ ®¡« á⨠¯ ¬ïâ¨

:void memsetd( LPVOID mem; DWORD size, value);
mem - 㪠§ â¥«ì ­  ®¡« áâì ¯ ¬ïâ¨
size - à §¬¥à ®¡« á⨠¢ ¤¢®©­ëå á«®¢ å (­¥ ¢ ¡ ©â å!)
value - §­ ç¥­¨¥ ¤¢®©­®£® á«®¢  § ¯®«­¥­¨ï
‚®§¢à é ¥â: ­¨ç¥£®
 §¬¥à: 2 ¡ ©â 


   memcpyd, memcpy32
   ëáâ஥ ª®¯¨à®¢ ­¨¥ ®¡« á⨠¯ ¬ïâ¨

:void memcpyd( LPVOID dest, src; DWORD size);
src - 㪠§ â¥«ì ­  ®¡« áâì, ®âªã¤  ª®¯¨à®¢ âì ¤ ­­ë¥
dest - 㪠§ â¥«ì ­  ®¡« áâì, ªã¤  ª®¯¨à®¢ âì ¤ ­­ë¥
size - ª®«¨ç¥á⢮ ¤¢®©­ëå á«®¢ (­¥ ¡ ©â!), ᪮«ìª® ª®¯¨à®¢ âì
‚®§¢à é ¥â: ­¨ç¥£®
 §¬¥à: 2 ¡ ©â 


   memmov
   Š®¯¨à®¢ ­¨¥ ®¡« á⨠¯ ¬ï⨠(¤«ï ¯¥à¥ªà뢠îé¨åáï ®¡« á⥩)

:void memmov( LPVOID dest, src; DWORD size);
src - 㪠§ â¥«ì ­  ®¡« áâì, ®âªã¤  ª®¯¨à®¢ âì ¤ ­­ë¥
dest - 㪠§ â¥«ì ­  ®¡« áâì, ªã¤  ª®¯¨à®¢ âì ¤ ­­ë¥
size - ª®«¨ç¥á⢮ ¡ ©â, ᪮«ìª® ª®¯¨à®¢ âì
‚®§¢à é ¥â: ­¨ç¥£®
 §¬¥à: 57 ¡ ©â
WinAPI  ­ «®£: MoveMemory


   memcmp
   ‘à ¢­¥­¨¥ ®¡« á⥩ ¯ ¬ïâ¨

:LONG memcmp( LPVOID mem1, mem2; DWORD size);
mem1, mem2 - 㪠§ â¥«¨ ­  áà ¢­¨¢ ¥¬ë¥ ®¡« áâ¨
size - ª®«¨ç¥á⢮ ¡ ©â, ᪮«ìª® áà ¢­¨¢ âì (0 - ­¨ ®¤­®£®)
‚®§¢à é ¥â: 0, ¥á«¨ mem1 = mem2
          < 0, ¥á«¨ mem1 < mem2
          > 0, ¥á«¨ mem1 > mem2
 §¬¥à: 26 ¡ ©â


   -----------------------------------------------------------------

‚ᥣ® ä㭪権: 24
‘㬬 à­ë© à §¬¥à: 811 ¡ ©â (835 ¡ ©â)
--------------------------PsyTexx---------------------------
---------------------Amiga MOD Tracker----------------------
                        for PalmOS5
----------------------------v1.8----------------------------
--------------------by Alexandr Zolotov---------------------

New in version 1.8 (19 jan 2005):
* five octaves instead of three (use a following keys: A,B,C);
* sample effects: anticlick, HQ-portamento, distortion, simple cut-off and wah-wah;
* additional pattern effects: 6xx, 7xx, 8xx;
* internal help;
* 12 channels;
* new sample interpolation.

New in version 1.5:
* surround echo (you can play MODs with echo in the PsyTexx only!);
* auto properties saving;
* new effects: E1x E2x EAx EBx;
* much more powerfull sample editor (use menu for the new features);
* playing to the copy-buffer (for sample editor);
* 16bit linear interpolation;
* now you can play MODs in Palm SIMULATOR: just put win32DLL.dll file to the folder with Simulator and use psytexx_sim.prc;
* if you want to play MOD without additional effects (like an echo) press the CLASSIC MOD PLAYING button.

New in version 1.3:
* 8 channels support;
* 16 bit mixing;
* stereo sound;
* fixed some bugs in player;
* changed gui;
* new supported effects: Axx;
* and other small improvements... :)

                     www.warmplace.ru
                2004. Ekaterinburg. Russia.