home *** CD-ROM | disk | FTP | other *** search
/ Set of Apple II Hard Drive Images / hard.hdv / HARD / FORTH / TESTFILE.WRD < prev    next >
Encoding:
Text File  |  1995-06-23  |  4.1 KB  |  174 lines  |  [04] ASCII Text (0x0000)

  1.  
  2. HEX
  3.  
  4. 2 OBJECT DELTA               \ DELAY FOR DELTA TIME PASSED IN
  5.          BOT       LDA,
  6.          1 PARM    STA,
  7.          BOT 1+    LDA,
  8.          2 PARM    STA,
  9.                    INX, INX,
  10. OBJ-CODE
  11.     CLC,
  12.     1 PARM LDA,
  13.     FDDA JSR,
  14.     2 PARM LDA,
  15.     FDDA JSR,
  16. OBJ-END
  17.  
  18.  
  19. 2 OBJECT PLAY
  20.          BOT 2 + LDA,
  21.          PLAYPTR STA,
  22.          BOT 3 + LDA,
  23.          PLAYPTR 1+ STA,
  24.          INX, INX, INX, INX,
  25. OBJ-CODE
  26.  
  27. 0 # LDA,
  28. USERKEY STA,
  29. USERSTOP STA,
  30.  
  31. CLC,
  32. PLAYPTR LDA,          \ GET START ADRS OF SEQUENCE INTO N
  33. 8 # ADC,
  34. N STA,
  35. PLAYPTR 1+ LDA,
  36. 0 # ADC,
  37. N 1+ STA, 
  38.  
  39. BEGIN,
  40.          C000 LDA,           \ CHECK IF KEY PRESSED
  41.          0< IF,
  42.             C010 LDA,
  43.             7F # AND,
  44.             USERKEY STA,     \ SAVE USER'S KEY
  45.             1B # CMP,        \ USER WANTS TO ESCAPE        
  46.             0= IF,
  47.                1 # LDA,
  48.                USERSTOP STA,
  49.                OBJ-EXIT
  50.             THEN,
  51.             20 # CMP,        \ SPACEBAR = EXIT NOW BUT DONT STOP
  52.             0= IF,
  53.                OBJ-EXIT
  54.             THEN,
  55.          THEN,
  56.        
  57.          0 # LDY,            \ GET 1ST BYTE OF DELTA TIME 
  58.          N )Y LDA, 
  59.          0< IF,              \ IF > $80
  60.              7F AND,         \ MASK HI BIT, SHIFT RIGHT 
  61.              .A LSR, 
  62.              2 'PARM DELTA STA,        \ SAVE DELTA TIME HI BYTE 
  63.              0 # LDA, \ GET LO BIT OF THAT BYTE INTO HI BIT OF A
  64.              .A ROR, 
  65.              INY,        \ OR IT WITH THE SECOND DELTA TIME BYTE
  66.              N )Y ORA, 
  67.              1 'PARM DELTA STA, \ SAVE AS THE LO BYTE OF DELTA 
  68.  
  69.              CLC,            \ INCREMENT N BY 2
  70.              N LDA, 
  71.              2 # ADC, 
  72.              N STA, 
  73.              N 1+ LDA, 
  74.              0 # ADC, 
  75.              N 1+ STA, 
  76.  
  77.              CLC,  \ SIGNAL THAT WE WANT TO CALL DELTA
  78.          ELSE, 
  79.              0= IF,
  80.                  CLC,        \ INCREMENT N BY 1
  81.                  N LDA, 
  82.                  1 # ADC, 
  83.                  N STA, 
  84.                  N 1+ LDA, 
  85.                  0 # ADC, 
  86.                  N 1+ STA, 
  87.                  SEC, \ SIGNAL THAT WE DONT WANT TO CALL DELTA
  88.              ELSE,
  89.                  1 'PARM DELTA STA, \ STORE 1 BYTE DELTA TIME  
  90.                  0 # LDA, 
  91.                  2 'PARM DELTA STA, 
  92.  
  93.                  CLC,        \ INCREMENT N BY 1
  94.                  N LDA, 
  95.                  1 # ADC, 
  96.                  N STA, 
  97.                  N 1+ LDA, 
  98.                  0 # ADC, 
  99.                  N 1+ STA, 
  100.                  CLC,
  101.              THEN,
  102.          THEN, 
  103.          
  104.          CS NOT IF,
  105.              OBJ-CALL DELTA  \ ONLY IF NON 0 DELTA TIME ABOVE 
  106.          THEN,
  107.  
  108.          0 # LDY,            \ GET MIDI INSTRUCTION 
  109.          N )Y LDA, 
  110.  
  111.          FF # CMP,             \ CHECK FOR END-OF-TRACK
  112.          0= IF, 
  113.             SEC,
  114.          ELSE,
  115.  
  116.            N )Y LDA,         \ GET THE SAME BYTE AGAIN
  117.            0< IF,              \ IF > $80 
  118.                LASTSTATUS STA,  \ SAVE IT AS THE CURR STS BYTE
  119.    
  120.                1 'PARM MIDIOUT STA,
  121.                OBJ-CALL MIDIOUT
  122.  
  123.                CLC,          \ INCREMENT N BY 1
  124.                N LDA,   
  125.                1 # ADC,  
  126.                N STA,  
  127.                N 1+ LDA,  
  128.                0 # ADC, 
  129.                N 1+ STA,
  130.  
  131.                N )Y LDA,     \ GET DATA BYTE
  132.            THEN, 
  133.  
  134.            1 'PARM MIDIOUT STA,
  135.            OBJ-CALL MIDIOUT
  136.  
  137.            
  138.            \ DETERMINE IF 1 OR 2 BYTE INSTRUCTION
  139.            
  140.            2 # LDA,
  141.            LENTEST STA,
  142.            LASTSTATUS LDA,  \ CHECK STATUS BYTE
  143.            C0 # CMP,
  144.            CS IF, 
  145.             E0 # CMP,
  146.             CC IF,           \ 1 BYTE
  147.              1 # LDA,
  148.              LENTEST STA,
  149.             THEN,
  150.            THEN,
  151.            
  152.            LENTEST LDA,
  153.            2 # CMP,
  154.            0= IF,
  155.              1 # LDY, 
  156.              N )Y LDA, 
  157.              1 'PARM MIDIOUT STA,
  158.              OBJ-CALL MIDIOUT
  159.              CLC,            \ INCREMENT N BY 2
  160.              N LDA, 
  161.              2 # ADC, 
  162.              N STA, 
  163.              N 1+ LDA,  
  164.              0 # ADC,  
  165.              N 1+ STA, 
  166.            THEN,
  167.            CLC,    \ SIGNAL THAT MORE WORK TO DO
  168.           
  169.          THEN, 
  170. CS UNTIL, 
  171.  
  172. OBJ-END 
  173.  
  174.