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 ;