home *** CD-ROM | disk | FTP | other *** search
/ Set of Apple II Hard Drive Images / hard.hdv / HARD / FORTH / ALTSEQ1.WRD < prev    next >
Encoding:
Text File  |  1992-12-13  |  1.8 KB  |  83 lines  |  [04] ASCII Text (0x0000)

  1. ( ALTERNATIVE SEQUENCER )
  2.  
  3. \ MASC DEFINITIONS
  4.  
  5. ( NOTE - SENDNOTES AND KLR ALREADY HAVE ML CODE LOADED )
  6. ( THESE WORDS COME AFTER SENDNOTES AND KLR )
  7.  
  8. HEX
  9.  
  10.  
  11. ( SPEED MODIFIES FIRST LDA# INSTRUCTION IN SENDNOTES )
  12. \ : SPEED ( BYTE -- )
  13. \   ' SENDNOTES 1+ [COMPILE] LITERAL C!
  14. \ ;
  15.  
  16.  
  17. ( MIDICHNL MODIFIES THE SECOND LDA# INSTRUCTION IN SENDNOTES )
  18. \ : MIDICHNL ( CHNL # 0-15 -- )
  19. \   0F AND 90 + 
  20. \   ' SENDNOTES 5 + [COMPILE] LITERAL C!
  21. \ ;
  22.  
  23.  
  24. 19 CONSTANT SNADRS  ( ADDRESS PICKED UP BY SENDNOTES )
  25. 1B CONSTANT SNSPEED ( SENDNOTES STORES PLAYBACK SPEED IN HERE )
  26.  
  27.  
  28. ( SEQUENCE STORES 0 AS THE INITIAL LENGTH AND PFA ADRS FOR END-SEQ)
  29. ( WHEN WORD IS EXECUTED, RETURNS STARTING ADDRESS AND LENGTH )
  30.  
  31. VARIABLE SEQPFA
  32.  
  33. : SEQUENCE  ( -- ) ( -- STARTADRS, LENGTH )
  34.    CREATE  HERE SEQPFA ! 0 , DOES>    
  35.    DUP 2+ SWAP @  
  36. ;
  37.  
  38. : END-SEQ
  39.    ( CALCULATE LENGTH OF SEQUENCE & STORE IT )
  40.    HERE SEQPFA @ - 2 - SEQPFA @ !
  41.    ( STORE TERMINATOR BYTES FOR PLAYBACK PROGRAM )
  42.    0 C, FF C, 2F C, 0 C, 
  43. ;
  44.  
  45. ( EXECUTE PASTE BY TYPING PASTE <SEQUENCE NAME> )
  46. ( DO NOT USE IN COLON DEFINITIONS! )
  47.  
  48. : PASTE ( <WORD> -- )
  49.    FIND DUP IF EXECUTE HERE SWAP DUP ALLOT CMOVE ELSE DROP THEN
  50. ;
  51.  
  52. \ EXAMPLE OF PASTING: 
  53. \ PART1, PART2, PART3 ALREADY DEFINED 
  54. \                     
  55. \ SEQUENCE SONG       
  56. \   PASTE PART1        
  57. \   PASTE PART2        
  58. \   PASTE PART3       
  59. \ END-SEQ             
  60.  
  61. : PLAYADRS ( ADRS -- )
  62.    SNADRS !
  63.    SENDNOTES KLR
  64.    SNSPEED C@ ' SENDNOTES 1+ [COMPILE] LITERAL C! 
  65.    ( GETS FINAL SPEED AND MODIFIES FIRST LDA# INSTRUCTION IN SENDNOTES )
  66. ;
  67.  
  68.  
  69. : PLAYIMM ( <MIDI WORD> -- ) 
  70.    FIND DUP IF EXECUTE DROP PLAYADRS ELSE DROP THEN 
  71. ;
  72.  
  73. : PLAYCOMP ( <MIDI WORD> -- )
  74.    FIND DUP IF EXECUTE DROP [COMPILE] LITERAL COMPILE PLAYADRS ELSE DROP THEN
  75. ;
  76.  
  77. : PLAY
  78.    STATE @ 0= IF PLAYIMM ELSE PLAYCOMP THEN
  79. ; IMMEDIATE
  80.  
  81.  
  82. DEC
  83.