GithubHelp home page GithubHelp logo

shrubba / impulse-tracker Goto Github PK

View Code? Open in Web Editor NEW

This project forked from jthlim/impulse-tracker

0.0 0.0 0.0 1.02 MB

Original source code for Impulse Tracker, a music tracker for DOS

License: BSD 3-Clause "New" or "Revised" License

C 0.21% Assembly 99.55% Pascal 0.11% Makefile 0.01% BitBake 0.01% HTML 0.03% Batchfile 0.08%

impulse-tracker's Introduction

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

BSD 3-clause license can be found in LICENSE.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.