dpvm/it/README.md

139 lines
2.8 KiB
Markdown
Raw Permalink Normal View History

2024-01-30 11:24:04 -08:00
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.