2014-10-19 05:58:50 -07:00
|
|
|
|
Impulse Tracker
|
|
|
|
|
===============
|
2014-03-22 22:30:03 -07:00
|
|
|
|
|
2014-10-19 05:58:50 -07:00
|
|
|
|
Full source code for Impulse Tracker, including sound drivers, network drivers,
|
|
|
|
|
and some supporting documentation
|
2014-03-22 22:30:03 -07:00
|
|
|
|
|
2014-10-19 05:58:50 -07:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Pre-Requisite Software
|
|
|
|
|
----------------------
|
2014-03-22 22:30:03 -07:00
|
|
|
|
|
|
|
|
|
To build Impulse Tracker, you will need:
|
|
|
|
|
|
2014-10-19 06:07:21 -07:00
|
|
|
|
- Turbo Assembler v4.1
|
2014-10-19 05:58:50 -07:00
|
|
|
|
|
|
|
|
|
- Turbo Link v3.01
|
|
|
|
|
|
|
|
|
|
- Borland MAKE v4.0
|
|
|
|
|
|
|
|
|
|
- A DOS environment
|
|
|
|
|
|
|
|
|
|
|
2014-03-22 22:30:03 -07:00
|
|
|
|
|
|
|
|
|
Once you have these, building IT.EXE should be just a single call to `MAKE`
|
2014-10-19 05:58:50 -07:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Quick File Overview
|
|
|
|
|
-------------------
|
|
|
|
|
|
2014-10-19 06:19:40 -07:00
|
|
|
|
- IT.ASM:
|
2014-10-19 06:07:21 -07:00
|
|
|
|
Startup routines
|
|
|
|
|
|
2014-10-19 06:19:40 -07:00
|
|
|
|
- IT\_DISK.ASM:
|
2014-10-19 06:07:21 -07:00
|
|
|
|
Disk IO Routines. Uses IT\_D\_\*.INC files
|
|
|
|
|
|
2014-10-19 06:19:40 -07:00
|
|
|
|
- IT\_DISPL.ASM:
|
2014-10-19 06:07:21 -07:00
|
|
|
|
Display routines for the Playback Screen (F5)
|
|
|
|
|
|
2014-10-19 06:19:40 -07:00
|
|
|
|
- IT\_EMS.ASM:
|
2014-10-19 06:07:21 -07:00
|
|
|
|
EMS memory handling routines
|
|
|
|
|
|
2014-10-19 06:19:40 -07:00
|
|
|
|
- IT\_F.ASM:
|
2014-10-19 06:07:21 -07:00
|
|
|
|
Collection of functions used by the object model
|
|
|
|
|
|
2014-10-19 06:19:40 -07:00
|
|
|
|
- IT\_FOUR.ASM:
|
2014-10-19 06:07:21 -07:00
|
|
|
|
Fast Fourier routines. Used by the graphic equalizer (Alt-F12).
|
|
|
|
|
Not available on all all sound cards
|
|
|
|
|
|
2014-10-19 06:19:40 -07:00
|
|
|
|
- IT\_G.ASM:
|
2014-10-19 06:07:21 -07:00
|
|
|
|
Global key handler functions
|
|
|
|
|
|
2014-10-19 06:19:40 -07:00
|
|
|
|
- IT\_H.ASM:
|
2014-10-19 06:07:21 -07:00
|
|
|
|
Help Module (F1)
|
|
|
|
|
|
2014-10-19 06:19:40 -07:00
|
|
|
|
- IT\_I.ASM:
|
2014-10-19 06:07:21 -07:00
|
|
|
|
Sample list (F3) and Instrument list (F4) module
|
|
|
|
|
|
2014-10-19 06:19:40 -07:00
|
|
|
|
- IT\_K.ASM:
|
2014-10-19 06:07:21 -07:00
|
|
|
|
Keyboard module
|
|
|
|
|
|
2014-10-19 06:19:40 -07:00
|
|
|
|
- IT\_L.ASM:
|
2014-10-19 06:07:21 -07:00
|
|
|
|
Information line code
|
|
|
|
|
|
2014-10-19 06:19:40 -07:00
|
|
|
|
- IT\_M.ASM:
|
2014-10-19 06:07:21 -07:00
|
|
|
|
Main message loop/dispatcher
|
|
|
|
|
|
2014-10-19 06:19:40 -07:00
|
|
|
|
- IT\_MDATA.ASM:
|
2014-10-19 06:07:21 -07:00
|
|
|
|
Global music variable data
|
|
|
|
|
|
2014-10-19 06:19:40 -07:00
|
|
|
|
- IT\_MMTSR.ASM:
|
2014-10-19 06:07:21 -07:00
|
|
|
|
Sample compression/decompression routines
|
|
|
|
|
|
2014-10-19 06:19:40 -07:00
|
|
|
|
- IT\_MOUSE.ASM:
|
2014-10-19 06:07:21 -07:00
|
|
|
|
Mouse handling code
|
|
|
|
|
|
2014-10-19 06:19:40 -07:00
|
|
|
|
- IT\_MSG.ASM:
|
2014-10-19 06:07:21 -07:00
|
|
|
|
Message editor module (Shift-F9)
|
|
|
|
|
|
2014-10-19 06:19:40 -07:00
|
|
|
|
- IT\_MUSIC.ASM:
|
2014-10-19 06:07:21 -07:00
|
|
|
|
Module playback code. Also uses IT\_M\_EFF.INC
|
|
|
|
|
|
2014-10-19 06:19:40 -07:00
|
|
|
|
- IT\_NET.ASM:
|
2014-10-19 06:07:21 -07:00
|
|
|
|
Network code
|
|
|
|
|
|
2014-10-19 06:19:40 -07:00
|
|
|
|
- IT\_OBJ1.ASM:
|
2014-10-19 06:07:21 -07:00
|
|
|
|
UI object definitions
|
|
|
|
|
|
2014-10-19 06:19:40 -07:00
|
|
|
|
- IT\_PE.ASM:
|
2014-10-19 06:07:21 -07:00
|
|
|
|
Pattern Editor module (F2)
|
|
|
|
|
|
2014-10-19 06:19:40 -07:00
|
|
|
|
- IT\_S.ASM:
|
2014-10-19 06:07:21 -07:00
|
|
|
|
Screen functions, including character generation
|
|
|
|
|
|
2014-10-19 06:19:40 -07:00
|
|
|
|
- IT\_TUTE.ASM:
|
2014-10-19 06:07:21 -07:00
|
|
|
|
Interactive Tutorial module
|
|
|
|
|
|
2014-10-19 06:19:40 -07:00
|
|
|
|
- IT\_VESA.ASM:
|
2014-10-19 06:07:21 -07:00
|
|
|
|
VESA code for graphic equalizer
|
2014-10-19 05:58:50 -07:00
|
|
|
|
|
2014-10-19 06:19:40 -07:00
|
|
|
|
- SWITCH.INC:
|
2014-10-19 06:07:21 -07:00
|
|
|
|
High level switches for the program
|
2014-10-19 05:58:50 -07:00
|
|
|
|
|
2014-10-19 22:05:55 -07:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
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.
|
2014-10-19 05:58:50 -07:00
|
|
|
|
|
2014-10-19 22:05:55 -07:00
|
|
|
|
|
|
|
|
|
|
2014-10-19 22:02:24 -07:00
|
|
|
|
License
|
|
|
|
|
-------
|
|
|
|
|
|
|
|
|
|
License for this source code is pending.
|