9fcee05b53 | ||
---|---|---|
InternalDocumentation | ||
Keyboard | ||
Network | ||
ReleaseDocumentation | ||
SoundDrivers | ||
Tutorial | ||
VSound | ||
.DS_Store | ||
.hgignore | ||
DEBUG.INC | ||
IT.ASM | ||
ITMIDI.CFG | ||
IT_DISK.ASM | ||
IT_DISPL.ASM | ||
IT_D_INF.INC | ||
IT_D_RI.INC | ||
IT_D_RIS.INC | ||
IT_D_RM.INC | ||
IT_D_WM.INC | ||
IT_EMS.ASM | ||
IT_ERR.ASM | ||
IT_F.ASM | ||
IT_FOUR.ASM | ||
IT_G.ASM | ||
IT_H.ASM | ||
IT_I.ASM | ||
IT_K.ASM | ||
IT_L.ASM | ||
IT_M.ASM | ||
IT_MDATA.ASM | ||
IT_MMTSR.ASM | ||
IT_MOUSE.ASM | ||
IT_MSG.ASM | ||
IT_MUSIC.ASM | ||
IT_M_EFF.INC | ||
IT_NET.ASM | ||
IT_OBJ1.ASM | ||
IT_PE.ASM | ||
IT_PE_V.INC | ||
IT_S.ASM | ||
IT_TIMER.INC | ||
IT_TUTE.ASM | ||
IT_VESA.ASM | ||
LICENSE.TXT | ||
MAKEFILE.MAK | ||
NETWORK.INC | ||
PE_TRANS.INC | ||
README.md | ||
SWITCH.INC | ||
USERNAME.INC | ||
WAVSWITC.INC | ||
source.lst |
README.md
Impulse Tracker
Full source code for Impulse Tracker, including sound drivers, network drivers, and some supporting documentation
Pre-Requisite Software
To build Impulse Tracker, you will need:
-
Turbo Assembler v4.1
-
Turbo Link v3.01
-
Borland MAKE v4.0
-
A DOS environment
Once you have these, building IT.EXE should be just a single call to MAKE
Sound drivers are build individually via M*.BAT files inside the SoundDrivers subdirectory
Quick File Overview
-
IT.ASM: Startup routines
-
IT_DISK.ASM: Disk IO Routines. Uses IT_D_*.INC files
-
IT_DISPL.ASM: Display routines for the Playback Screen (F5)
-
IT_EMS.ASM: EMS memory handling routines
-
IT_F.ASM: Collection of functions used by the object model
-
IT_FOUR.ASM: Fast Fourier routines. Used by the graphic equalizer (Alt-F12). Not available on all all sound cards
-
IT_G.ASM: Global key handler functions
-
IT_H.ASM: Help Module (F1)
-
IT_I.ASM: Sample list (F3) and Instrument list (F4) module
-
IT_K.ASM: Keyboard module
-
IT_L.ASM: Information line code
-
IT_M.ASM: Main message loop/dispatcher
-
IT_MDATA.ASM: Global music variable data
-
IT_MMTSR.ASM: Sample compression/decompression routines
-
IT_MOUSE.ASM: Mouse handling code
-
IT_MSG.ASM: Message editor module (Shift-F9)
-
IT_MUSIC.ASM: Module playback code. Also uses IT_M_EFF.INC
-
IT_NET.ASM: Network code
-
IT_OBJ1.ASM: UI object definitions
-
IT_PE.ASM: Pattern Editor module (F2)
-
IT_S.ASM: Screen functions, including character generation
-
IT_TUTE.ASM: Interactive Tutorial module
-
IT_VESA.ASM: VESA code for graphic equalizer
-
SWITCH.INC: High level switches for the program
Frequently Asked Questions
Q: "What are all those funny characters in the source code?"
A: I wrote the original source code using DOS characters, with characters drawing borders/boxes in comments in the source code. In the interests of posterity, I have left the code intact as it was.
Q: "Why didn't you use STRUCs or ENUMs" in your ASM source?
A: Simply because I didn't know about them at the time. I wish I did. There's a InternalDocumentation folder that I've included in the repository that details what some of the magic numbers appearing through the code might mean.
Q: "Flow in some functions seems to jump all over the place. Why?"
A: The original code was compatible all the way back to an 8086 machine. 8086 would allow you to do conditional jumps only within +/-128 bytes, so I spent too much time shuffling code around to meet this restriction. When I shifted away from this 8086 restriction, I never went back to update the code that was mutilated by it.
License
License for this source code is pending.