https://github.com/jthlim/impulse-tracker Skip to content Navigation Menu Toggle navigation Sign in * Product + Actions Automate any workflow + Packages Host and manage packages + Security Find and fix vulnerabilities + Codespaces Instant dev environments + GitHub Copilot Write better code with AI + Code review Manage code changes + Issues Plan and track work + Discussions Collaborate outside of code Explore + All features + Documentation + GitHub Skills + Blog * Solutions For + Enterprise + Teams + Startups + Education By Solution + CI/CD & Automation + DevOps + DevSecOps Resources + Learning Pathways + White papers, Ebooks, Webinars + Customer Stories + Partners * Open Source + GitHub Sponsors Fund open source developers + The ReadME Project GitHub community articles Repositories + Topics + Trending + Collections * Enterprise + Enterprise platform AI-powered developer platform Available add-ons + Advanced Security Enterprise-grade security features + GitHub Copilot Enterprise-grade AI features + Premium Support Enterprise-grade 24/7 support * Pricing Search or jump to... Search code, repositories, users, issues, pull requests... Search [ ] Clear Search syntax tips Provide feedback We read every piece of feedback, and take your input very seriously. [ ] [ ] Include my email address so I can be contacted Cancel Submit feedback Saved searches Use saved searches to filter your results more quickly Name [ ] Query [ ] To see all available qualifiers, see our documentation. Cancel Create saved search Sign in Sign up You signed in with another tab or window. Reload to refresh your session. You signed out in another tab or window. Reload to refresh your session. You switched accounts on another tab or window. Reload to refresh your session. Dismiss alert {{ message }} jthlim / impulse-tracker Public * Notifications You must be signed in to change notification settings * Fork 0 * Star 66 * Original source code for Impulse Tracker, a music tracker for DOS License View license 66 stars 0 forks Branches Tags Activity Star Notifications You must be signed in to change notification settings * Code * Issues 0 * Pull requests 0 * Actions * Projects 0 * Security * Insights Additional navigation options * Code * Issues * Pull requests * Actions * Projects * Security * Insights jthlim/impulse-tracker This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository. main BranchesTags Go to file Code Folders and files Name Name Last commit Last commit message date Latest commit History 1 Commit InternalDocumentation InternalDocumentation Keyboard Keyboard Network Network ReleaseDocumentation ReleaseDocumentation SoundDrivers SoundDrivers Tutorial Tutorial VSound VSound DEBUG.INC DEBUG.INC IT.ASM IT.ASM ITMIDI.CFG ITMIDI.CFG IT_DISK.ASM IT_DISK.ASM IT_DISPL.ASM IT_DISPL.ASM IT_D_INF.INC IT_D_INF.INC IT_D_RI.INC IT_D_RI.INC IT_D_RIS.INC IT_D_RIS.INC IT_D_RM.INC IT_D_RM.INC IT_D_WM.INC IT_D_WM.INC IT_EMS.ASM IT_EMS.ASM IT_ERR.ASM IT_ERR.ASM IT_F.ASM IT_F.ASM IT_FOUR.ASM IT_FOUR.ASM IT_G.ASM IT_G.ASM IT_H.ASM IT_H.ASM IT_I.ASM IT_I.ASM IT_K.ASM IT_K.ASM IT_L.ASM IT_L.ASM IT_M.ASM IT_M.ASM IT_MDATA.ASM IT_MDATA.ASM IT_MMTSR.ASM IT_MMTSR.ASM IT_MOUSE.ASM IT_MOUSE.ASM IT_MSG.ASM IT_MSG.ASM IT_MUSIC.ASM IT_MUSIC.ASM IT_M_EFF.INC IT_M_EFF.INC IT_NET.ASM IT_NET.ASM IT_OBJ1.ASM IT_OBJ1.ASM IT_PE.ASM IT_PE.ASM IT_PE_V.INC IT_PE_V.INC IT_S.ASM IT_S.ASM IT_TIMER.INC IT_TIMER.INC IT_TUTE.ASM IT_TUTE.ASM IT_VESA.ASM IT_VESA.ASM LICENSE.TXT LICENSE.TXT MAKEFILE.MAK MAKEFILE.MAK NETWORK.INC NETWORK.INC PE_TRANS.INC PE_TRANS.INC README.md README.md SWITCH.INC SWITCH.INC USERNAME.INC USERNAME.INC WAVSWITC.INC WAVSWITC.INC source.lst source.lst View all files Repository files navigation * README * License 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. About Original source code for Impulse Tracker, a music tracker for DOS Resources Readme License View license Activity Stars 66 stars Watchers 2 watching Forks 0 forks Report repository Releases No releases published Packages 0 No packages published Languages * Assembly 99.6% * C 0.2% * Pascal 0.1% * Batchfile 0.1% * HTML 0.0% * BitBake 0.0% Footer (c) 2024 GitHub, Inc. Footer navigation * Terms * Privacy * Security * Status * Docs * Contact * Manage cookies * Do not share my personal information You can't perform that action at this time.