Creative SB0350 Hardware Programming Guide - Page 84

Creative SB0350 Manual

Page 84 highlights

MIDI Port I/O Programming 5-9 Enter UART Mode In order to send or receive MIDI data, the command byte 3Fh must first be sent out to switch the interface into UART mode. A Command Acknowledge byte of 0FEh will be made available on the Data port if the mode switch is successful. In UART mode, MIDI data is sent to and received from the Data port. The Reset command is used to exit UART mode. Example code: mov inc Busy: in test jnz mov out sub Empty: in test jnz dec in cmp je inc al,dx al,80h NextLoop dx al,dx al,0FEh InUartMode dx ;Read status port ;Input data ready? ;No ;Data port ;Read data ;Successful mode switch? ;SUCCESS! ;Status port al,dx al,40h Busy al,3Fh dx,al cx,cx ;Read status port ;Ready for output? ;No ;Output "Enter UART mode" ; command via Command port ;Maximum of 65536 tries dx,wMpuBaseAddx dx ;MPU-401 base I/O address ;Status port NextLoop: loop Empty ;Try again ;*** ;*** Failed to switch to UART mode An interrupt is generated when the interface is set to UART mode. It is not necessary to set up an interrupt service routine to handle the interrupt because reading from the Data port will clear the interrupt signal. It important that your application send the MPU-401 reset command to exit the MIDI UART mode when your application terminates.

  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34
  • 35
  • 36
  • 37
  • 38
  • 39
  • 40
  • 41
  • 42
  • 43
  • 44
  • 45
  • 46
  • 47
  • 48
  • 49
  • 50
  • 51
  • 52
  • 53
  • 54
  • 55
  • 56
  • 57
  • 58
  • 59
  • 60
  • 61
  • 62
  • 63
  • 64
  • 65
  • 66
  • 67
  • 68
  • 69
  • 70
  • 71
  • 72
  • 73
  • 74
  • 75
  • 76
  • 77
  • 78
  • 79
  • 80
  • 81
  • 82
  • 83
  • 84
  • 85
  • 86
  • 87
  • 88
  • 89
  • 90
  • 91
  • 92
  • 93
  • 94
  • 95
  • 96
  • 97
  • 98
  • 99
  • 100
  • 101
  • 102
  • 103
  • 104
  • 105
  • 106
  • 107
  • 108
  • 109
  • 110
  • 111
  • 112
  • 113
  • 114
  • 115
  • 116
  • 117
  • 118
  • 119
  • 120
  • 121
  • 122
  • 123
  • 124
  • 125
  • 126
  • 127
  • 128
  • 129
  • 130
  • 131
  • 132
  • 133
  • 134
  • 135
  • 136
  • 137
  • 138
  • 139
  • 140
  • 141

MIDI Port I/O Programming
5-9
Enter UART
Mode
In order to send or receive MIDI data, the command byte 3Fh must first be sent out to
switch the interface into UART mode.
A
Command Acknowledge
byte of 0FEh will be
made available on the Data port if the mode switch is successful.
In UART mode, MIDI data is sent to and received from the Data port.
The Reset
command is used to exit UART mode.
Example code:
mov
dx,wMpuBaseAddx
;MPU-401 base I/O address
inc
dx
;Status port
Busy:
in
al,dx
;Read status port
test
al,40h
;Ready for output?
jnz
Busy
;No
mov
al,3Fh
;Output "Enter UART mode"
out
dx,al
;
command via Command port
sub
cx,cx
;Maximum of 65536 tries
Empty:
in
al,dx
;Read status port
test
al,80h
;Input data ready?
jnz
NextLoop
;No
dec
dx
;Data port
in
al,dx
;Read data
cmp
al,0FEh
;Successful mode switch?
je
InUartMode
;SUCCESS!
inc
dx
;Status port
NextLoop:
loop
Empty
;Try again
;***
;*** Failed to switch to UART mode
An interrupt is generated when the interface is set to UART mode.
It is not necessary to
set up an interrupt service routine to handle the interrupt because reading from the Data
port will clear the interrupt signal.
It important that your application send the MPU-401 reset command to exit the MIDI
UART mode when your application terminates.