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 ;