home *** CD-ROM | disk | FTP | other *** search
/ Set of Apple II Hard Drive Images / eric.hdv / SOURCE / MULTI.SPEC.txt < prev    next >
Text File  |  2020-08-13  |  2KB  |  78 lines

  1.  
  2. SPECIFICATION FOR MULTI TRACK MIDI PERFORMANCE SYSTEM
  3. (C) 1991  ERIC RANGELL
  4.  
  5. MEMORY MAP: (all addresses in hexadecimal)
  6.  
  7. 800-1FFF = BASIC PROGRAM: MULTIPLAY
  8. 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
  9.  
  10. 2000-4FFF = TRACK BUFFER AREA.  
  11. The basic program divides up this area according to the number of tracks used.
  12.  
  13. 6000-7000 = MULTI.OBJ (machine language driver)
  14.  
  15. 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.
  16.  
  17. 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.
  18.  
  19. 7000-?    = MLI BUFFERS
  20.  
  21. Used by the operating system for the Machine Language Interface commands.
  22.  
  23. C0A8: SLOT-2 MIDI CARD CONTROL REGISTER
  24.  
  25. C0A9: SLOT-2 MIDI CARD DATA REGISTER
  26.  
  27.  
  28.  
  29. SYSTEM VARIABLES:
  30.  
  31. 0019:
  32. 001A:
  33.  
  34. 00FF: SPEED
  35.  
  36. 6003:
  37. 6004:
  38. 6005:
  39. 6006: END OF TRACK? (0/1)
  40. 6007: TRACK #
  41.  
  42. 6008-600F: ACTIVE(TRK)
  43. Indicates whether track is currently being used.
  44.  
  45. 6010-6017: ADRS(TRK) LO
  46. 6018-601F: ADRS(TRK) HI
  47. Starting address of track buffer
  48.  
  49. 6020-6027: LIMIT(TRK) LO
  50. 6028-602F: LIMIT(TRK) HI
  51. Ending address of track buffer.  When reached, next segment must be loaded.
  52.  
  53. 6030-6037: DELTA TIME(trk) LO
  54. 6038-603F: DELTA TIME(trk) midlo
  55. 6040-6047: DELTA TIME(trk) midhi
  56. 6048-604F: DELTA TIME(trk) HI
  57. Storage for delta time values for each track.
  58.  
  59. 6050-6057: smallest
  60.  
  61. 6060-6067: stuffed?
  62.  
  63. 6070-6077 : STATUS BUFFER(TRK)
  64. 6078-607F : DATABYTE BUFFER(TRK)
  65.  
  66.  
  67. PROGRAM ROUTINES:
  68.  
  69. 6120: STUFF32
  70. 61B0: CMP32BIT
  71. 61F0: SUB32BIT
  72.  
  73. 6218: GETSMALLEST
  74. 6254: SUBSMALLEST
  75. 6298: CALCENDADRS
  76. 62F1: INC19
  77. 6320: DELAY
  78.