dpvm/it/README.md

139 lines
2.8 KiB
Markdown
Raw Permalink Blame History

This file contains invisible Unicode characters

This file contains invisible Unicode characters that are indistinguishable to humans but may be processed differently by a computer. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

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.