
midisend	equ	$FFFFFC06
midiread	equ	$FFFFFC06
midictrl	equ	$FFFFFC04
midistat	equ	$FFFFFC04
mfpiis		equ	$FFFFFA11 ; bit 6... for midi-acia...
bit6	    equ	$40
notbit6		equ	$BF


main:
	bra.b	instal
	dc.b	"MTRU" 			; more or less dbra protocol...
	dc.b	"DBRA"

interrupt:
	btst	#3,midistat 	; check midi out status
	bne.b	notready
	move.b	d0,midisend 	; if ready, send character on
notready:
    andi.b	#notbit6,mfpiis ; disable interrupt-in-service bit in mfp
	rts

instal:
	move.w	#$0022,-(a7)	; Kbdvbase
	trap	#14				; Xbios
	addq.l	#2,a7
	movea.l	d0,a0			;
	move.l	(a0),a1
	cmpi.l	#"MTRU",-8(a1)	; already installed?
	beq.b   present			; then leave 
	move.l	(a0),oldvec
	move.l	#interrupt,(a0) ; replace midi routine by our own interrupt
    bra.b	show

present:
	pea 	text2			; message: already present
    move.w	#$9,-(a7)
    trap	#1
    addq.l	#6,a7
    move.w	#0,-(a7)     
    move.w	#$4c,-(a7)		; pterm
    trap	#1              ; do not install

show:
    pea		text 			; greet the people
    move.w	#$9,-(a7)
    trap	#1
    addq.l	#6,a7
	move.w	#0,d0
	move.l	#386,-(a7) 		; 256(basepage) + 130(for program)
	move.w	#$31,-(a7)		; terminate & stay resident
	trap	#1

	.bss
oldvec:
	ds.l	1

	.data	
text:	dc.b	10,13," *** Midi-thru (C) Copyright E. van Herk 1990"
		dc.b    10,13," Midi-thru installed ! ",10,13,0
text2:	dc.b	10,13," *** MIDI-THRU already loaded - aborted ! ",0
