SPECIFICATION FOR MULTI TRACK MIDI PERFORMANCE SYSTEM
(C) 1991 ERIC RANGELL
MEMORY MAP: (all addresses in hexadecimal)
800-1FFF = BASIC PROGRAM: MULTIPLAY
This program loads and calls the machine language driver, MULTI.OBJ, and is responsible for setting up all required parameters. Before running, the song must have been divided up into tracks which are stored on the RAMDISK, using the following names: T0, T1, T2, ... T8
2000-4FFF = TRACK BUFFER AREA.
The basic program divides up this area according to the number of tracks used.
6000-7000 = MULTI.OBJ (machine language driver)
This program is responsible for realtime mixing and transmission of the MIDI data contained in the track buffers. It is responsible for loading track segments from the ramdisk into the appropriate track buffers when they fill up, and continuing to play the song until either the end is reached or a command is issued by the user to terminate the song. As the song is played, a graphic image of a piano keyboard will be shown and notes of the song will be displayed in real time as they are being transmitted.
This program must also be able to respond in real time to input devices and commands installed by the user. The system prefix must point to the RAMDISK, when this program is called. All required parameters must be set up before this program is called.
7000-? = MLI BUFFERS
Used by the operating system for the Machine Language Interface commands.
C0A8: SLOT-2 MIDI CARD CONTROL REGISTER
C0A9: SLOT-2 MIDI CARD DATA REGISTER
SYSTEM VARIABLES:
0019:
001A:
00FF: SPEED
6003:
6004:
6005:
6006: END OF TRACK? (0/1)
6007: TRACK #
6008-600F: ACTIVE(TRK)
Indicates whether track is currently being used.
6010-6017: ADRS(TRK) LO
6018-601F: ADRS(TRK) HI
Starting address of track buffer
6020-6027: LIMIT(TRK) LO
6028-602F: LIMIT(TRK) HI
Ending address of track buffer. When reached, next segment must be loaded.