;; BEGIN inserted by fixasm.pl
;; MPASM workarounds:
BANKED  EQU 1
;; END inserted by fixasm.pl
;--------------------------------------------------------
; File Created by SDCC : FreeWare ANSI-C Compiler
; Version 2.6.0 #4309 (Jul 28 2006)
; This file generated Mon Oct 09 06:40:30 2006
;--------------------------------------------------------
; PIC16 port for the Microchip 16-bit core micros
;--------------------------------------------------------
	list	p=18f452

	radix dec

;--------------------------------------------------------
; public variables in this module
;--------------------------------------------------------
	global _sysex
	global _disp_func_flag
	global _disp_func_buf
	global _inc_buffer_1
	global _inc_buffer_2
	global _inc_buffer_3
	global _Init
	global _Tick
	global _Timer
	global _DISPLAY_Init
	global _DISPLAY_Tick
	global _MPROC_NotifyReceivedEvnt
	global _MPROC_NotifyFoundEvent
	global _MPROC_NotifyTimeout
	global _MPROC_NotifyReceivedByte
	global _SR_Service_Prepare
	global _SR_Service_Finish
	global _DIN_NotifyToggle
	global _ENC_NotifyChange
	global _AIN_NotifyChange

;--------------------------------------------------------
; extern variables in this module
;--------------------------------------------------------
	extern _MIOS_BOX_CFG0
	extern _MIOS_BOX_CFG1
	extern _MIOS_BOX_STAT
	extern _MIOS_PARAMETER1
	extern _MIOS_PARAMETER2
	extern _MIOS_PARAMETER3
	extern _PORTAbits
	extern _PORTBbits
	extern _PORTCbits
	extern _PORTDbits
	extern _PORTEbits
	extern _LATAbits
	extern _LATBbits
	extern _LATCbits
	extern _LATDbits
	extern _LATEbits
	extern _TRISAbits
	extern _TRISBbits
	extern _TRISCbits
	extern _TRISDbits
	extern _TRISEbits
	extern _PIE1bits
	extern _PIR1bits
	extern _IPR1bits
	extern _PIE2bits
	extern _PIR2bits
	extern _IPR2bits
	extern _EECON1bits
	extern _RCSTAbits
	extern _TXSTAbits
	extern _T3CONbits
	extern _CCP2CONbits
	extern _CCP1CONbits
	extern _ADCON1bits
	extern _ADCON0bits
	extern _SSPCON2bits
	extern _SSPCON1bits
	extern _SSPSTATbits
	extern _T2CONbits
	extern _T1CONbits
	extern _RCONbits
	extern _WDTCONbits
	extern _LVDCONbits
	extern _OSCCONbits
	extern _T0CONbits
	extern _STATUSbits
	extern _INTCON3bits
	extern _INTCON2bits
	extern _INTCONbits
	extern _STKPTRbits
	extern _PORTA
	extern _PORTB
	extern _PORTC
	extern _PORTD
	extern _PORTE
	extern _LATA
	extern _LATB
	extern _LATC
	extern _LATD
	extern _LATE
	extern _TRISA
	extern _TRISB
	extern _TRISC
	extern _TRISD
	extern _TRISE
	extern _PIE1
	extern _PIR1
	extern _IPR1
	extern _PIE2
	extern _PIR2
	extern _IPR2
	extern _EECON1
	extern _EECON2
	extern _EEDATA
	extern _EEADR
	extern _RCSTA
	extern _TXSTA
	extern _TXREG
	extern _RCREG
	extern _SPBRG
	extern _T3CON
	extern _TMR3L
	extern _TMR3H
	extern _CCP2CON
	extern _CCPR2L
	extern _CCPR2H
	extern _CCP1CON
	extern _CCPR1L
	extern _CCPR1H
	extern _ADCON1
	extern _ADCON0
	extern _ADRESL
	extern _ADRESH
	extern _SSPCON2
	extern _SSPCON1
	extern _SSPSTAT
	extern _SSPADD
	extern _SSPBUF
	extern _T2CON
	extern _PR2
	extern _TMR2
	extern _T1CON
	extern _TMR1L
	extern _TMR1H
	extern _RCON
	extern _WDTCON
	extern _LVDCON
	extern _OSCCON
	extern _T0CON
	extern _TMR0L
	extern _TMR0H
	extern _STATUS
	extern _FSR2L
	extern _FSR2H
	extern _PLUSW2
	extern _PREINC2
	extern _POSTDEC2
	extern _POSTINC2
	extern _INDF2
	extern _BSR
	extern _FSR1L
	extern _FSR1H
	extern _PLUSW1
	extern _PREINC1
	extern _POSTDEC1
	extern _POSTINC1
	extern _INDF1
	extern _WREG
	extern _FSR0L
	extern _FSR0H
	extern _PLUSW0
	extern _PREINC0
	extern _POSTDEC0
	extern _POSTINC0
	extern _INDF0
	extern _INTCON3
	extern _INTCON2
	extern _INTCON
	extern _PRODL
	extern _PRODH
	extern _TABLAT
	extern _TBLPTRL
	extern _TBLPTRH
	extern _TBLPTRU
	extern _PCL
	extern _PCLATH
	extern _PCLATU
	extern _STKPTR
	extern _TOSL
	extern _TOSH
	extern _TOSU
	extern _MIOS_MIDI_TxBufferPut
	extern _MIOS_LCD_Clear
	extern _MIOS_LCD_PrintBCD1
	extern _MIOS_LCD_PrintBCD2
	extern _MIOS_LCD_PrintBCD3
	extern _MIOS_LCD_PrintBCD4
	extern _MIOS_LCD_PrintBCD5
	extern _MIOS_LCD_PrintChar
	extern _MIOS_LCD_TypeSet
	extern _MIOS_GLCD_GCursorSet
	extern _MIOS_MPROC_EVENT_TABLE
	extern _MIOS_ENC_PIN_TABLE
;--------------------------------------------------------
;	Equates to used internal registers
;--------------------------------------------------------
STATUS	equ	0xfd8
PCL	equ	0xff9
PCLATH	equ	0xffa
PCLATU	equ	0xffb
WREG	equ	0xfe8
FSR1L	equ	0xfe9 ;; normaly 0xfe1, changed by fixasm.pl
FSR2L	equ	0xfd9
POSTDEC1	equ	0xfed ;; normaly 0xfe5, changed by fixasm.pl
PREINC1	equ	0xfec ;; normaly 0xfe4, changed by fixasm.pl


; Internal registers
.registers	udata_ovr	0x010
r0x00	res	1
r0x01	res	1
r0x02	res	1
r0x03	res	1
r0x04	res	1
r0x05	res	1
r0x06	res	1

udata_main_0	udata
_sysex	res	1

udata_main_1	udata
_inc_buffer_1	res	1

udata_main_2	udata
_inc_buffer_2	res	1

udata_main_3	udata
_inc_buffer_3	res	1

udata_main_4	udata
_disp_func_flag	res	1

udata_main_5	udata
_disp_func_buf	res	1

;--------------------------------------------------------
; global & static initialisations
;--------------------------------------------------------
; I code from now on!
; ; Starting pCode block
S_main__AIN_NotifyChange	code
_AIN_NotifyChange:
;	.line	262; main.c	void AIN_NotifyChange(unsigned char pin, unsigned int pin_value) __wparam
	MOVFF	FSR2L, POSTDEC1
	MOVFF	FSR1L, FSR2L
;	.line	264; main.c	}
	MOVFF	PREINC1, FSR2L
	RETURN	

; ; Starting pCode block
S_main__ENC_NotifyChange	code
_ENC_NotifyChange:
;	.line	255; main.c	void ENC_NotifyChange(unsigned char encoder, char incrementer) __wparam
	MOVFF	FSR2L, POSTDEC1
	MOVFF	FSR1L, FSR2L
;	.line	257; main.c	}
	MOVFF	PREINC1, FSR2L
	RETURN	

; ; Starting pCode block
S_main__DIN_NotifyToggle	code
_DIN_NotifyToggle:
;	.line	246; main.c	void DIN_NotifyToggle(unsigned char pin, unsigned char pin_value) __wparam
	MOVFF	FSR2L, POSTDEC1
	MOVFF	FSR1L, FSR2L
;	.line	248; main.c	}
	MOVFF	PREINC1, FSR2L
	RETURN	

; ; Starting pCode block
S_main__SR_Service_Finish	code
_SR_Service_Finish:
;	.line	240; main.c	}
	RETURN	

; ; Starting pCode block
S_main__SR_Service_Prepare	code
_SR_Service_Prepare:
;	.line	233; main.c	}
	RETURN	

; ; Starting pCode block
S_main__MPROC_NotifyReceivedByte	code
_MPROC_NotifyReceivedByte:
;	.line	108; main.c	void MPROC_NotifyReceivedByte(unsigned char byte) __wparam
	MOVFF	FSR2L, POSTDEC1
	MOVFF	FSR1L, FSR2L
	MOVFF	r0x00, POSTDEC1
	MOVFF	r0x01, POSTDEC1
	MOVFF	r0x02, POSTDEC1
	MOVFF	r0x03, POSTDEC1
	MOVFF	r0x04, POSTDEC1
	MOVWF	r0x00
;	.line	110; main.c	if (byte == 0xF0)									// Abfrage Sysex-Start?
	CLRF	r0x01
	MOVF	r0x00, W
	XORLW	0xf0
	BNZ	_00210_DS_
	INCF	r0x01, F
_00210_DS_:
	MOVF	r0x01, W
	BZ	_00138_DS_
	BANKSEL	_sysex
;	.line	111; main.c	sysex = 0x00;									// Byte Zahl der Sysexmessage
	CLRF	_sysex, B
_00138_DS_:
	BANKSEL	_sysex
;	.line	113; main.c	switch (sysex) {									// Bin ich in Core-relevaner Sysex-Message? Nein -> sysex = 0xFF -> Tunneln
	MOVF	_sysex, W, B
	BZ	_00139_DS_
_00212_DS_:
	BANKSEL	_sysex
	MOVF	_sysex, W, B
	XORLW	0x01
	BZ	_00142_DS_
_00214_DS_:
	BANKSEL	_sysex
	MOVF	_sysex, W, B
	XORLW	0x02
	BNZ	_00216_DS_
	BRA	_00146_DS_
_00216_DS_:
	BANKSEL	_sysex
	MOVF	_sysex, W, B
	XORLW	0x03
	BNZ	_00218_DS_
	BRA	_00150_DS_
_00218_DS_:
	BANKSEL	_sysex
	MOVF	_sysex, W, B
	XORLW	0x04
	BNZ	_00220_DS_
	BRA	_00154_DS_
_00220_DS_:
	BANKSEL	_sysex
	MOVF	_sysex, W, B
	XORLW	0x05
	BNZ	_00222_DS_
	BRA	_00155_DS_
_00222_DS_:
	BANKSEL	_sysex
	MOVF	_sysex, W, B
	XORLW	0x06
	BNZ	_00224_DS_
	BRA	_00158_DS_
_00224_DS_:
	BANKSEL	_sysex
	MOVF	_sysex, W, B
	XORLW	0x07
	BNZ	_00226_DS_
	BRA	_00169_DS_
_00226_DS_:
	BANKSEL	_sysex
	MOVF	_sysex, W, B
	XORLW	0xff
	BNZ	_00228_DS_
	BRA	_00184_DS_
_00228_DS_:
	BRA	_00186_DS_
_00139_DS_:
;	.line	116; main.c	if (byte == 0xF0) {							// Sysex?
	MOVF	r0x01, W
	BTFSC	STATUS, 2
	BRA	_00186_DS_
;	.line	117; main.c	inc_buffer_1 = byte;					// Aktuelles Byte im Buffer aufheben
	MOVFF	r0x00, _inc_buffer_1
;	.line	118; main.c	sysex = 0x01;
	MOVLW	0x01
	BANKSEL	_sysex
	MOVWF	_sysex, B
;	.line	120; main.c	break;
	BRA	_00186_DS_
_00142_DS_:
;	.line	122; main.c	if(byte == 0x55) {							// Herstellercode Midibrett?
	MOVF	r0x00, W
	XORLW	0x55
	BNZ	_00144_DS_
;	.line	123; main.c	inc_buffer_2 = byte;					// Aktuelles Byte im Buffer aufheben
	MOVFF	r0x00, _inc_buffer_2
;	.line	124; main.c	sysex = 0x02;
	MOVLW	0x02
	BANKSEL	_sysex
	MOVWF	_sysex, B
	BRA	_00186_DS_
_00144_DS_:
	BANKSEL	_inc_buffer_1
;	.line	128; main.c	MIOS_MIDI_TxBufferPut (inc_buffer_1);	//Falls nicht mehr in einer für Core relevanten Sysex Message,
	MOVF	_inc_buffer_1, W, B
	CALL	_MIOS_MIDI_TxBufferPut
;	.line	129; main.c	MIOS_MIDI_TxBufferPut (byte);			//tunnele Buffer und aktuelles Byte an Ausgang
	MOVF	r0x00, W
	CALL	_MIOS_MIDI_TxBufferPut
;	.line	131; main.c	sysex = 0xFF;							//exit Core-relevante - Sysex
	MOVLW	0xff
	BANKSEL	_sysex
	MOVWF	_sysex, B
;	.line	133; main.c	break;
	BRA	_00186_DS_
_00146_DS_:
;	.line	135; main.c	if(byte == 0x4D) {							// M?
	MOVF	r0x00, W
	XORLW	0x4d
	BNZ	_00148_DS_
;	.line	136; main.c	inc_buffer_3 = byte;					// Aktuelles Byte im Buffer aufheben
	MOVFF	r0x00, _inc_buffer_3
;	.line	137; main.c	sysex = 0x03;
	MOVLW	0x03
	BANKSEL	_sysex
	MOVWF	_sysex, B
	BRA	_00186_DS_
_00148_DS_:
	BANKSEL	_inc_buffer_1
;	.line	141; main.c	MIOS_MIDI_TxBufferPut (inc_buffer_1);	//Falls nicht mehr in einer für Core relevanten Sysex Message,
	MOVF	_inc_buffer_1, W, B
	CALL	_MIOS_MIDI_TxBufferPut
	BANKSEL	_inc_buffer_2
;	.line	142; main.c	MIOS_MIDI_TxBufferPut (inc_buffer_2);	//tunnele Buffer und aktuelles Byte an Ausgang
	MOVF	_inc_buffer_2, W, B
	CALL	_MIOS_MIDI_TxBufferPut
;	.line	143; main.c	MIOS_MIDI_TxBufferPut (byte);
	MOVF	r0x00, W
	CALL	_MIOS_MIDI_TxBufferPut
;	.line	145; main.c	sysex = 0xFF;							//exit Core-relevante - Sysex
	MOVLW	0xff
	BANKSEL	_sysex
	MOVWF	_sysex, B
;	.line	147; main.c	break;
	BRA	_00186_DS_
_00150_DS_:
;	.line	149; main.c	if(byte == 0x42) 							// B?
	MOVF	r0x00, W
	XORLW	0x42
	BNZ	_00152_DS_
;	.line	150; main.c	sysex = 0x04;
	MOVLW	0x04
	BANKSEL	_sysex
	MOVWF	_sysex, B
	BRA	_00186_DS_
_00152_DS_:
	BANKSEL	_inc_buffer_1
;	.line	153; main.c	MIOS_MIDI_TxBufferPut (inc_buffer_1);	//Falls nicht mehr in einer für Core relevanten Sysex Message,
	MOVF	_inc_buffer_1, W, B
	CALL	_MIOS_MIDI_TxBufferPut
	BANKSEL	_inc_buffer_2
;	.line	154; main.c	MIOS_MIDI_TxBufferPut (inc_buffer_2);	//tunnele Buffer und aktuelles Byte an Ausgang
	MOVF	_inc_buffer_2, W, B
	CALL	_MIOS_MIDI_TxBufferPut
	BANKSEL	_inc_buffer_3
;	.line	155; main.c	MIOS_MIDI_TxBufferPut (inc_buffer_3);
	MOVF	_inc_buffer_3, W, B
	CALL	_MIOS_MIDI_TxBufferPut
;	.line	156; main.c	MIOS_MIDI_TxBufferPut (byte);
	MOVF	r0x00, W
	CALL	_MIOS_MIDI_TxBufferPut
;	.line	158; main.c	sysex = 0xFF;							//exit Core-relevante - Sysex
	MOVLW	0xff
	BANKSEL	_sysex
	MOVWF	_sysex, B
;	.line	160; main.c	break;
	BRA	_00186_DS_
_00154_DS_:
;	.line	162; main.c	disp_func_flag = byte;						// Speichern der aufgerufenen Display Funktion in disp_func_flag
	MOVFF	r0x00, _disp_func_flag
;	.line	163; main.c	sysex = 0x05;
	MOVLW	0x05
	BANKSEL	_sysex
	MOVWF	_sysex, B
;	.line	164; main.c	break;
	BRA	_00186_DS_
_00155_DS_:
;	.line	166; main.c	if (byte == CURENT_DISPLAY) 				// aktuellen display ausgewählt?
	MOVF	r0x00, W
	XORLW	0x01
	BZ	_00236_DS_
	BRA	_00186_DS_
_00236_DS_:
;	.line	167; main.c	sysex = 0x06;
	MOVLW	0x06
	BANKSEL	_sysex
	MOVWF	_sysex, B
;	.line	168; main.c	break;
	BRA	_00186_DS_
_00158_DS_:
;	.line	170; main.c	switch (disp_func_flag) {					//Welche Displayfunktion wurde aufgerufen?
	MOVLW	0x09
	BANKSEL	_disp_func_flag
	SUBWF	_disp_func_flag, W, B
	BTFSC	STATUS, 0
	BRA	_00168_DS_
	MOVFF	r0x05, POSTDEC1
	MOVFF	r0x06, POSTDEC1
	CLRF	r0x06
; removed redundant BANKSEL
	RLCF	_disp_func_flag, W, B
	RLCF	r0x06, F
	RLCF	WREG, W
	RLCF	r0x06, F
	ANDLW	0xfc
	MOVWF	r0x05
	MOVLW	UPPER(_00238_DS_)
	MOVWF	PCLATU
	MOVLW	HIGH(_00238_DS_)
	MOVWF	PCLATH
	MOVLW	LOW(_00238_DS_)
	ADDWF	r0x05, F
	MOVF	r0x06, W
	ADDWFC	PCLATH, F
	BTFSC	STATUS, 0
	INCF	PCLATU, F
	MOVF	r0x05, W
	MOVFF	PREINC1, r0x06
	MOVFF	PREINC1, r0x05
	MOVWF	PCL
_00238_DS_:
	GOTO	_00159_DS_
	GOTO	_00160_DS_
	GOTO	_00161_DS_
	GOTO	_00162_DS_
	GOTO	_00163_DS_
	GOTO	_00164_DS_
	GOTO	_00165_DS_
	GOTO	_00166_DS_
	GOTO	_00167_DS_
_00159_DS_:
;	.line	172; main.c	MIOS_LCD_PrintChar (byte);
	MOVF	r0x00, W
	CALL	_MIOS_LCD_PrintChar
;	.line	173; main.c	break;
	BRA	_00168_DS_
_00160_DS_:
;	.line	175; main.c	MIOS_LCD_Clear();
	CALL	_MIOS_LCD_Clear
;	.line	176; main.c	sysex = 0xFF;						// gehe zu Tunnelbetrieb über
	MOVLW	0xff
	BANKSEL	_sysex
	MOVWF	_sysex, B
;	.line	177; main.c	return;
	BRA	_00186_DS_
_00161_DS_:
;	.line	179; main.c	disp_func_buf = byte;
	MOVFF	r0x00, _disp_func_buf
;	.line	180; main.c	break;
	BRA	_00168_DS_
_00162_DS_:
;	.line	182; main.c	MIOS_LCD_PrintChar (byte);
	MOVF	r0x00, W
	CALL	_MIOS_LCD_PrintChar
;	.line	183; main.c	break;
	BRA	_00168_DS_
_00163_DS_:
;	.line	185; main.c	MIOS_LCD_PrintBCD1 (byte);			//PrintBCD1
	MOVF	r0x00, W
	CALL	_MIOS_LCD_PrintBCD1
;	.line	186; main.c	break;
	BRA	_00168_DS_
_00164_DS_:
;	.line	188; main.c	MIOS_LCD_PrintBCD2 (byte);			//PrintBCD2
	MOVF	r0x00, W
	CALL	_MIOS_LCD_PrintBCD2
;	.line	189; main.c	break;
	BRA	_00168_DS_
_00165_DS_:
;	.line	191; main.c	MIOS_LCD_PrintBCD3 (byte);			//PrintBCD3
	MOVF	r0x00, W
	CALL	_MIOS_LCD_PrintBCD3
;	.line	192; main.c	break;
	BRA	_00168_DS_
_00166_DS_:
;	.line	194; main.c	disp_func_buf = byte;
	MOVFF	r0x00, _disp_func_buf
;	.line	195; main.c	break;
	BRA	_00168_DS_
_00167_DS_:
;	.line	197; main.c	disp_func_buf = byte;
	MOVFF	r0x00, _disp_func_buf
_00168_DS_:
;	.line	200; main.c	sysex = 0x07;
	MOVLW	0x07
	BANKSEL	_sysex
	MOVWF	_sysex, B
;	.line	201; main.c	break;
	BRA	_00186_DS_
_00169_DS_:
;	.line	203; main.c	if (byte == 0xF7) {							// Falls Message zu Ende, gehe zu Tunnelbtrieb über
	MOVF	r0x00, W
	XORLW	0xf7
	BNZ	_00182_DS_
;	.line	204; main.c	sysex = 0xFF;
	MOVLW	0xff
	BANKSEL	_sysex
	MOVWF	_sysex, B
;	.line	205; main.c	return;
	BRA	_00186_DS_
_00182_DS_:
	BANKSEL	_disp_func_flag
;	.line	208; main.c	if (disp_func_flag == 0x02)				// ansonsten für SetCURSOR
	MOVF	_disp_func_flag, W, B
	XORLW	0x02
	BNZ	_00179_DS_
;	.line	209; main.c	MIOS_GLCD_GCursorSet(disp_func_buf,byte);	// positioniere Cursor
	MOVF	r0x00, W
	MOVWF	POSTDEC1
	BANKSEL	_disp_func_buf
	MOVF	_disp_func_buf, W, B
	CALL	_MIOS_GLCD_GCursorSet
	INCF	FSR1L, F
	BRA	_00186_DS_
_00179_DS_:
	BANKSEL	_disp_func_flag
;	.line	211; main.c	if (disp_func_flag == 0x03)
	MOVF	_disp_func_flag, W, B
	XORLW	0x03
	BNZ	_00176_DS_
;	.line	212; main.c	MIOS_LCD_PrintChar(byte);			//für PrintString schreibe nächsten Character
	MOVF	r0x00, W
	CALL	_MIOS_LCD_PrintChar
	BRA	_00186_DS_
_00176_DS_:
	BANKSEL	_disp_func_flag
;	.line	214; main.c	if (disp_func_flag == 0x07)
	MOVF	_disp_func_flag, W, B
	XORLW	0x07
	BNZ	_00173_DS_
;	.line	215; main.c	MIOS_LCD_PrintBCD4 ((int)((disp_func_buf)<<7)|(int)(byte));			//PrintBCD4
	MOVFF	_disp_func_buf, r0x01
	CLRF	r0x02
	RRCF	r0x02, W
	RRCF	r0x01, W
	MOVWF	r0x04
	CLRF	r0x03
	RRCF	r0x03, F
	MOVFF	r0x00, r0x01
	CLRF	r0x02
	MOVF	r0x01, W
	IORWF	r0x03, F
	MOVF	r0x02, W
	IORWF	r0x04, F
	MOVF	r0x04, W
	MOVWF	POSTDEC1
	MOVF	r0x03, W
	CALL	_MIOS_LCD_PrintBCD4
	INCF	FSR1L, F
	BRA	_00186_DS_
_00173_DS_:
	BANKSEL	_disp_func_flag
;	.line	217; main.c	if (disp_func_flag == 0x08)
	MOVF	_disp_func_flag, W, B
	XORLW	0x08
	BNZ	_00186_DS_
;	.line	218; main.c	MIOS_LCD_PrintBCD5 ((int)((disp_func_buf)<<7)|(int)(byte));			//PrintBCD5
	MOVFF	_disp_func_buf, r0x01
	CLRF	r0x02
	RRCF	r0x02, W
	RRCF	r0x01, W
	MOVWF	r0x04
	CLRF	r0x03
	RRCF	r0x03, F
	MOVFF	r0x00, r0x01
	CLRF	r0x02
	MOVF	r0x01, W
	IORWF	r0x03, F
	MOVF	r0x02, W
	IORWF	r0x04, F
	MOVF	r0x04, W
	MOVWF	POSTDEC1
	MOVF	r0x03, W
	CALL	_MIOS_LCD_PrintBCD5
	INCF	FSR1L, F
;	.line	219; main.c	break;
	BRA	_00186_DS_
_00184_DS_:
;	.line	222; main.c	MIOS_MIDI_TxBufferPut (byte);				// MIDI-Byte vom Eingang zum Ausgang schicken
	MOVF	r0x00, W
	CALL	_MIOS_MIDI_TxBufferPut
_00186_DS_:
;	.line	225; main.c	}
	MOVFF	PREINC1, r0x04
	MOVFF	PREINC1, r0x03
	MOVFF	PREINC1, r0x02
	MOVFF	PREINC1, r0x01
	MOVFF	PREINC1, r0x00
	MOVFF	PREINC1, FSR2L
	RETURN	

; ; Starting pCode block
S_main__MPROC_NotifyTimeout	code
_MPROC_NotifyTimeout:
;	.line	103; main.c	}
	RETURN	

; ; Starting pCode block
S_main__MPROC_NotifyFoundEvent	code
_MPROC_NotifyFoundEvent:
;	.line	93; main.c	void MPROC_NotifyFoundEvent(unsigned entry, unsigned char evnt0, unsigned char evnt1, unsigned char evnt2) __wparam
	MOVFF	FSR2L, POSTDEC1
	MOVFF	FSR1L, FSR2L
;	.line	95; main.c	}
	MOVFF	PREINC1, FSR2L
	RETURN	

; ; Starting pCode block
S_main__MPROC_NotifyReceivedEvnt	code
_MPROC_NotifyReceivedEvnt:
;	.line	85; main.c	void MPROC_NotifyReceivedEvnt(unsigned char evnt0, unsigned char evnt1, unsigned char evnt2) __wparam
	MOVFF	FSR2L, POSTDEC1
	MOVFF	FSR1L, FSR2L
;	.line	87; main.c	}
	MOVFF	PREINC1, FSR2L
	RETURN	

; ; Starting pCode block
S_main__DISPLAY_Tick	code
_DISPLAY_Tick:
;	.line	80; main.c	}
	RETURN	

; ; Starting pCode block
S_main__DISPLAY_Init	code
_DISPLAY_Init:
;	.line	65; main.c	MIOS_LCD_Clear();
	CALL	_MIOS_LCD_Clear
;	.line	66; main.c	MIOS_GLCD_GCursorSet(0,0);
	MOVLW	0x00
	MOVWF	POSTDEC1
	MOVLW	0x00
	CALL	_MIOS_GLCD_GCursorSet
	INCF	FSR1L, F
	RETURN	

; ; Starting pCode block
S_main__Timer	code
_Timer:
;	.line	56; main.c	}
	RETURN	

; ; Starting pCode block
S_main__Tick	code
_Tick:
;	.line	48; main.c	}
	RETURN	

; ; Starting pCode block
S_main__Init	code
_Init:
;	.line	37; main.c	MIOS_LCD_TypeSet(7,0,0);
	MOVLW	0x00
	MOVWF	POSTDEC1
	MOVLW	0x00
	MOVWF	POSTDEC1
	MOVLW	0x07
	CALL	_MIOS_LCD_TypeSet
	MOVLW	0x02
	ADDWF	FSR1L, F
;	.line	39; main.c	sysex = 0xFF;
	MOVLW	0xff
	BANKSEL	_sysex
	MOVWF	_sysex, B
	RETURN	



; Statistics:
; code size:	  812 (0x032c) bytes ( 0.62%)
;           	  406 (0x0196) words
; udata size:	    6 (0x0006) bytes ( 0.47%)
; access size:	    7 (0x0007) bytes


	end
