eventually a unix port
Go to file
'mr software' 4d5d736be3 it_tute builds 2023-03-11 15:18:28 -08:00
InternalDocumentation Updated file permissions 2014-10-19 18:27:45 +08:00
Keyboard Updated file permissions 2014-10-19 18:27:45 +08:00
Network Updated file permissions 2014-10-19 18:27:45 +08:00
ReleaseDocumentation Updated file permissions 2014-10-19 18:27:45 +08:00
SoundDrivers initial work on port 2023-03-09 21:35:56 -08:00
Tutorial Updated file permissions 2014-10-19 18:27:45 +08:00
VSound Updated file permissions 2014-10-19 18:27:45 +08:00
.DS_Store Added sound drivers to repository 2014-12-25 14:31:52 +10:30
.gitignore initial work on port 2023-03-09 21:35:56 -08:00
.hgignore Initial import of IT.EXE source files 2014-10-19 19:00:17 +08:00
ITMIDI.CFG Initial import of IT.EXE source files 2014-10-19 19:00:17 +08:00
LICENSE.TXT Added standard BSD License 2014-12-25 14:30:10 +10:30
README.md it_tute builds 2023-03-11 15:18:28 -08:00
build it_tute builds 2023-03-11 15:18:28 -08:00
check-errors it_tute builds 2023-03-11 15:18:28 -08:00
debug.inc initial work on port 2023-03-09 21:35:56 -08:00
gen_deps initial work on port 2023-03-09 21:35:56 -08:00
it.s it_tute builds 2023-03-11 15:18:28 -08:00
it_d_inf.inc initial work on port 2023-03-09 21:35:56 -08:00
it_d_ri.inc initial work on port 2023-03-09 21:35:56 -08:00
it_d_ris.inc initial work on port 2023-03-09 21:35:56 -08:00
it_d_rm.inc initial work on port 2023-03-09 21:35:56 -08:00
it_d_wm.inc initial work on port 2023-03-09 21:35:56 -08:00
it_disk.s it_tute builds 2023-03-11 15:18:28 -08:00
it_displ.s it_tute builds 2023-03-11 15:18:28 -08:00
it_ems.s it_tute builds 2023-03-11 15:18:28 -08:00
it_err.s it_tute builds 2023-03-11 15:18:28 -08:00
it_f.s it_tute builds 2023-03-11 15:18:28 -08:00
it_four.s it_tute builds 2023-03-11 15:18:28 -08:00
it_g.s it_tute builds 2023-03-11 15:18:28 -08:00
it_h.s it_tute builds 2023-03-11 15:18:28 -08:00
it_i.s it_tute builds 2023-03-11 15:18:28 -08:00
it_k.s it_tute builds 2023-03-11 15:18:28 -08:00
it_l.s it_tute builds 2023-03-11 15:18:28 -08:00
it_m.s it_tute builds 2023-03-11 15:18:28 -08:00
it_m_eff.inc initial work on port 2023-03-09 21:35:56 -08:00
it_mdata.s initial work on port 2023-03-09 21:35:56 -08:00
it_mmtsr.s it_tute builds 2023-03-11 15:18:28 -08:00
it_mouse.s it_tute builds 2023-03-11 15:18:28 -08:00
it_msg.s it_tute builds 2023-03-11 15:18:28 -08:00
it_music.s it_tute builds 2023-03-11 15:18:28 -08:00
it_net.s it_tute builds 2023-03-11 15:18:28 -08:00
it_obj1.s it_tute builds 2023-03-11 15:18:28 -08:00
it_pe.s it_tute builds 2023-03-11 15:18:28 -08:00
it_pe_v.inc initial work on port 2023-03-09 21:35:56 -08:00
it_s.s it_tute builds 2023-03-11 15:18:28 -08:00
it_timer.inc initial work on port 2023-03-09 21:35:56 -08:00
it_tute.s it_tute builds 2023-03-11 15:18:28 -08:00
it_vesa.s it_tute builds 2023-03-11 15:18:28 -08:00
main.c initial work on port 2023-03-09 21:35:56 -08:00
network.inc initial work on port 2023-03-09 21:35:56 -08:00
pe_trans.inc initial work on port 2023-03-09 21:35:56 -08:00
source.lst Initial import of IT.EXE source files 2014-10-19 19:00:17 +08:00
switch.inc initial work on port 2023-03-09 21:35:56 -08:00
username.inc initial work on port 2023-03-09 21:35:56 -08:00
wavswitc.inc initial work on port 2023-03-09 21:35:56 -08:00

README.md

Impulse Tracker

Eventually, maybe, a version of IT for modern x86_64 systems

Pre-Requisite Software

To build Impulse Tracker, you will need:

  • Netwide Assembler

  • GCC

  • sh

Once you have these, building IT should be just a single call to ./build

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

Refer to LICENSE.TXT