rtperf.src



  ( MIDI interface user input words. )

  ( RECORD_TO_DISK )
   HEX
  : RECORD_TO_DISK  ( MERGE FLAG -- )
      BEGIN ( UNTIL )
	0 START_TOG ! 0 CONT_TOG !
        CLS DRAW_BORDER  FWHITE C@ PR_COLOR !
    DUP IF 17 4 GOTOXY
      ASCIIZ" RECORD WITH INPUT MERGED TO OUTPUT " PR_ASCZ
      ELSE  21 4 GOTOXY
        ASCIIZ" RECORD TO DISK " PR_ASCZ
      THEN
        0 FIRST_FLAG !
        8200 NOW_PTR !
        0A 8 GOTOXY MAKE_RCV_FILE
     0= IF
	200 LAST_PTR !
	CLR_PEND_INT
	0 8000 CLR_BUFFER
	ENABLE_MIDI_INT
      DUP IF 
	     SET_MERGE_RX_VECTOR
          ELSE SET_STD_RX_VECTOR 
        THEN


 ( CONT. OF RECORD_TO_DISK )
	BUFF_SEG @
	DUP 8100 SWAP 123 !L
	DUP 8100 SWAP 125 !L
        8200 SWAP 105 !L
     DUP IF BUFF_SEG @
        DUP 200 SWAP 103 !L
        DUP 8000 SWAP 114 !L
        DUP 8000 SWAP 116 !L
            FF SWAP 10B C!L
        THEN
	SYNC_EN_FLAG @ 0 <> 
      IF 0 SYNC_CNT ! 
	['] SYNC_HNDLR 2 + SYNC_VECTOR !
      THEN
	0FA INS_REAL_TIME 
        0A COUNT_DOWN
      DUP SYNC_EN_FLAG @ 0 <> OR
        IF 0B ELSE 09 THEN
        STRT_UART_INTS
        15 10 GOTOXY
  ASCIIZ" NOW RECORDING - PRESS ANY KEY TO STOP " PR_ASCZ
  -->

  ( CONT OF RECORD_TO_DISK )

        24 11 GOTOXY
        BEGIN
		CHK_RX_TO_DISK
                GET_CUR
                DTIME
                SET_CUR
        UNTIL
	0FC INS_REAL_TIME
        FINISH_RX_FILE
	SYNC_EN_FLAG @ 0 <> 
      IF 
	['] NUL_INT_HNDLR 2 + SYNC_VECTOR !
      THEN
        1F 13 GOTOXY
  ASCIIZ" FINISHED RECORDING " PR_ASCZ
        11 15 GOTOXY
  ASCIIZ" PRESS A TO RECORD AGAIN - ANY OTHER TO GO BACK "
        PR_ASCZ
 -->
 ( END OF RECORD_TO_DISK )

    ELSE 11 15 GOTOXY
  ASCIIZ" PRESS A TO TRY AGAIN - ANY OTHER TO GO BACK "
        PR_ASCZ
    THEN
	A_OR_OTHER
	STOP
	DUP SYNC_EN_FLAG @ 0 <> OR
	IF SEND_NOTE_OFF THEN
    UNTIL  DROP
  ;
  -->

  ( PLAY_FILE )
   HEX

  : PLAY_FILE ( MERGE FLAG -- )
     BEGIN ( UNTIL )
	0 START_TOG ! 0 CONT_TOG !
        CLS DRAW_BORDER FWHITE C@ PR_COLOR !
      DUP IF 17 4 GOTOXY
   ASCIIZ" PLAYBACK WITH INPUT MERGED TO OUTPUT " PR_ASCZ
        ELSE 21 4 GOTOXY
   ASCIIZ" PLAYBACK DISK RECORDING " PR_ASCZ
       THEN
        0A 8 GOTOXY OPEN_TX_FILE
      0= IF 0 EOF ! 
        200 TX_NOW_PTR !
	200 LAST_PTR !

  ( CONT OF PLAY_FILE )
        CLR_PEND_INT
	0 8000 CLR_BUFFER
	INIT_PARMS
	ENABLE_MIDI_INT
	0FF BUFF_SEG @ 10B C!L
     DUP IF  
	BUFF_SEG @
	DUP 8100 SWAP 123 !L
	DUP 8100 SWAP 125 !L
        8200 SWAP 105 !L
	SET_MERGE_RX_VECTOR
         ELSE SET_STD_RX_VECTOR THEN
     LOAD_TX_BUFF
     SYNC_EN_FLAG @ 0 <> 
      IF 0 SYNC_CNT ! 
	['] SYNC_HNDLR 2 + SYNC_VECTOR !
      THEN
	0FA INS_REAL_TIME 
     0A COUNT_DOWN
    DUP SYNC_EN_FLAG @ 0 <> OR
     IF 0B ELSE 0A THEN
        STRT_UART_INTS
        15 10 GOTOXY
      ASCIIZ" NOW PLAYING - PRESS ANY KEY TO STOP " PR_ASCZ
        24 11 GOTOXY
        BEGIN
		GET_KEY_PRESS
                GET_CUR
                DTIME
                SET_CUR
                CHK_DISK_TO_TX
                BUFF_SEG @ 121 C@L 0FF =
        OR UNTIL
 -->

 ( END OF PLAY_FILE )
        CLOSE_TX_FILE
	SEND_NOTE_OFF
	SYNC_EN_FLAG @ 0 <> 
      IF 
	['] NUL_INT_HNDLR 2 + SYNC_VECTOR !
      THEN
	0FC INS_REAL_TIME 
        1F 13 GOTOXY
     ASCIIZ" FINISHED PLAYING " PR_ASCZ
        11 15 GOTOXY
    ASCIIZ" PRESS A TO PLAY ANOTHER - ANY OTHER TO GO BACK "
        PR_ASCZ
      ELSE 11 15 GOTOXY
  ASCIIZ" PRESS A TO TRY AGAIN - ANY OTHER TO GO BACK "
        PR_ASCZ
     THEN
	A_OR_OTHER
	STOP
	SEND_NOTE_OFF
   UNTIL DROP ;
  -->
  ( PLAYBACK_AND_RECORD )
   HEX
  : PLAYBACK_AND_RECORD ( MERGE FLAG -- )
     BEGIN ( UNTIL )
	0 START_TOG ! 0 CONT_TOG !
        CLS DRAW_BORDER FWHITE C@ PR_COLOR !
      DUP IF 17 3 GOTOXY
  ASCIIZ" PLAYBACK & RECORD WITH IN MERGED TO OUT " PR_ASCZ
        ELSE 17 3 GOTOXY
  ASCIIZ" PLAYBACK & RECORD SIMULTANEOUSLY " PR_ASCZ
        THEN
        0A 5 GOTOXY
        MAKE_RCV_FILE
    0= IF 0A  8 GOTOXY
        OPEN_TX_FILE
 -->

  ( CONT. OF PLAYBACK_AND_RECORD )

     0= IF
        0 8000 CLR_BUFFER
	CLR_PEND_INT
	ENABLE_MIDI_INT
        INIT_PARMS
        0 EOF !
        200 TX_NOW_PTR !
	200 LAST_PTR !
        0 FIRST_FLAG !
        8200 NOW_PTR !
	BUFF_SEG @
	DUP 8100 SWAP 123 !L
	DUP 8100 SWAP 125 !L
	DUP 0FF SWAP 10B C!L
        8200 SWAP 105 !L
    DUP IF
        SET_MERGE_RX_VECTOR 
      ELSE SET_STD_RX_VECTOR
	THEN
        LOAD_TX_BUFF
     SYNC_EN_FLAG @ 0 <> 
      IF 0 SYNC_CNT ! 
	['] SYNC_HNDLR 2 + SYNC_VECTOR !
      THEN
	0FA INS_REAL_TIME 
        0A COUNT_DOWN
        0B STRT_UART_INTS

 -->
 ( CONT. OF  PLAYBACK_AND_RECORD )

        15 10 GOTOXY
    ASCIIZ" RECORDING AND PLAYING - PRESS ANY KEY TO STOP "
        PR_ASCZ
        24 11 GOTOXY
        BEGIN
		CHK_RX_TO_DISK
                GET_CUR
                DTIME
                SET_CUR
                EOF @ 0= IF CHK_DISK_TO_TX  THEN
        UNTIL
	0FC INS_REAL_TIME 
        FINISH_RX_FILE CLOSE_TX_FILE
	SYNC_EN_FLAG @ 0 <> 
      IF 
	['] NUL_INT_HNDLR 2 + SYNC_VECTOR !
      THEN
 -->

  ( CONT. OF PLAYBACK_AND_RECORD )
        1F 13 GOTOXY
     ASCIIZ" FINISHED PLAYING AND RECORDING " PR_ASCZ
        11 15 GOTOXY
     ASCIIZ" PRESS A TO DO AGAIN - ANY OTHER TO GO BACK "
        PR_ASCZ
     ELSE CLOSE_RCV_FILE 11 15 GOTOXY
    ASCIIZ" PRESS A TO TRY AGAIN - ANY OTHER TO GO BACK "
        PR_ASCZ THEN
     ELSE 11 15 GOTOXY
    ASCIIZ" PRESS A TO TRY AGAIN - ANY OTHER TO GO BACK "
        PR_ASCZ THEN
	A_OR_OTHER
	STOP
	SEND_NOTE_OFF
    UNTIL DROP
  ;


  ( REAL_TIME_MENU )
   HEX
  : REAL_TIME_MENU 0 DONE_FLAG !
     BEGIN ( UNTIL )
        CLS DRAW_BORDER
        FWHITE C@ INTEN @ BLINK @ OR OR PR_COLOR !
        1E 4 GOTOXY
        ASCIIZ" ERICKSON'S FAMOUS !! " PR_ASCZ
        FWHITE C@ PR_COLOR !
        21 6 GOTOXY
        ASCIIZ" REAL TIME MIDI " PR_ASCZ
        0A DUP 8 GOTOXY
        ASCIIZ" 0 - RETURN TO MAIN MENU " PR_ASCZ
-->

 ( CONTINUATION OF REAL_TIME_MENU )

        DUP 9 GOTOXY
        ASCIIZ" 1 - RECORD TO DISK " PR_ASCZ
        DUP 0A GOTOXY
        ASCIIZ" 2 - PLAYBACK DISK RECORDING " PR_ASCZ
        DUP 0B GOTOXY
      ASCIIZ" 3 - PLAYBACK AND RECORD SIMULTANEOUSLY " PR_ASCZ
        DUP 0C GOTOXY
     ASCIIZ" 4 - RECORD WITH INPUT MERGED TO OUTPUT " PR_ASCZ
        DUP 0D GOTOXY
    ASCIIZ" 5 - PLAYBACK WITH INPUT MERGED TO OUTPUT " PR_ASCZ
        DUP 0E GOTOXY
  ASCIIZ" 6 - PLAYBACK & RECORD WITH IN MERGED TO OUT " PR_ASCZ
  -->

 ( CONT. OF REAL_TIME_MENU )

        0F GOTOXY
        ASCIIZ" 7 - SET OPTIONS " PR_ASCZ
        0A DUP 14 GOTOXY
        ASCIIZ" PRESS THE NUMBER OF YOUR CHOICE " PR_ASCZ
        21 + 14 GOTOXY
        KEY DUP 0= IF ?TERMINAL IF KEY DROP THEN THEN
        30 - SET_DOS_STI
     CASE
        0 OF -1 DONE_FLAG ! ENDOF
        1 OF 0 RECORD_TO_DISK ENDOF
        2 OF 0 PLAY_FILE ENDOF
        3 OF 0 PLAYBACK_AND_RECORD ENDOF

 -->
  ( CONT. OF REAL_TIME_MENU )

        4 OF -1 RECORD_TO_DISK ENDOF
        5 OF -1 PLAY_FILE ENDOF
        6 OF -1 PLAYBACK_AND_RECORD ENDOF
        7 OF OPTIONS_MENU ENDOF
            07 EMIT
     ENDCASE
        RESTORE_DOS_STI
        DONE_FLAG @
   UNTIL ;