MIDI op de MSX Arsoft, 01-09-94 Voor de MSX-computer zijn op dit moment 4 bekende MIDI-interfaces: - Philips muziekmodule - FAC Midi-interface - MIDISaurus - MSX-MIDI (op de Turbo-R) De onderstaande informatie geldt voor de muziekmodule en waarschijnlijk ook voor de FAC Midi-interface. Het verschil met de muziekmodule zijn de poortnummers en de afwezigheid van bepaalde timers. Muziekmodule: -------------- De ACIA oftewel de MIDI-interface wordt bestuurd via poorten 0,1,4 en 5: OUT 0 - instellen ACIA functies OUT 0,3 : reset ACIA OUT 0,21: instellen MIDI-protocol (8 databits, geen pariteit, 1 stopbit, geen interrupt, 31250 bps) bit 0,1 - b1 b0 zend- en ontvangstsnelheid: ---------------------------------------------------- 0 0 gelijk aan kloksnelheid, dus 500 kbits p/s > 0 1 1/16 van de kloksnelheid, dus 31250 bits p/s 1 0 1/64 van de kloksnelheid, dus 7812,5 bits p/s 1 1 algemene reset van de ACIA bit 2,3,4 - b4 b3 b2 databits pariteit stopbits ------------------------------------- 0 0 0 7 even 2 0 0 1 7 oneven 2 0 1 0 7 even 1 0 1 1 7 oneven 1 1 0 0 8 geen 2 > 1 0 1 8 geen 1 1 1 0 8 geen 1 1 1 1 8 oneven 1 bit 5 - Als dit bit 1 is wordt een interrupt veroorzaakt als de ACIA klaar is met het verzenden van het laatste teken. bit 6 - Bit 6 controleert het Request To Send (RTS) signaal op pin 5. In de module is dit niet aangesloten, zodat het hier geen functie heeft. bit 7 - Als dit bit 1 is wordt interrupt veroorzaakt een correct ontvangen teken een interrupt. OUT 1 - verzenden DATA INP(4) - lezen ACIA status bit 0 Er is een teken correct ontvangen. Nadat het teken met INP(5) gelezen is wordt dit bit gereset. bit 1 De zendbuffer is leeg, er kan desgewenst een nieuw teken verzonden worden. bit 2 Geeft toestand van het Data Carrier Detect signaal. (niet aangesloten, dus altijd 0) bit 3 Geeft toestand van het Clear To Send signaal. (niet aangesloten, dus altijd 0) bit 4 Er is een teken ontvangen zonder het aantal voorgeschreven stopbits (Frame error). bit 5 Er is een teken ontvangen in de ontvangstbuffer terwijl het vorige nog niet gelezen was (Overrun error). bit 6 Er is een teken ontvangen met foute pariteit (Parity error). bit 7 Er werd een interrupt gegeven. De microprocessor kan aan dit bit zien dat de interrupt van de ACIA afkomstig is. Na lezen van DATA worden bits 4,5 en 6 weer op nul gezet. INP(5) - voor het ontvangen van MIDI DATA. ## Polling mode Initialisatie: OUT 0,%00000011 - reset ACIA OUT 0,%00010101 - 8 bits, no parity, 1 stopbit, no interrupt, 31250 bps Het sturen van een byte via de MIDI-poort gaat als volgt: - lees INP(4) (acia-status) - als bit 1 gezet is kan er een teken verstuurd worden - stuur de byte met OUT 1,byte Het ontvangen van een byte via de MIDI-poort gaat als volgt: - lees INP(4) (acia-status) - als bit 0 gezet is staat er een teken gereed - lees dit teken met INP(5) ## Interrupt mode Initialisatie: OUT 0,%00000011 - reset ACIA OUT 0,%10010101 - 8 databits, geen pariteit, 1 stopbit, interrupt, 31250 bps Het ontvangen van een byte via de MIDI-poort gaat als volgt: - lees INP(4) (acia-status) - als bit 7 gezet is dan betekend dat dat de interrupt van de ACIA afkomstig was. Zoniet dan moet uw routine de interrupt verder laten gaan. - lees dit teken met INP(5) |