Jump to content

change rsm message in lc emu


Recommended Posts

Guest ekopappa
Posted

hi@all

maybe someone could push a newbie in the right direction.

i want to spread the rsm message over the 2 lcds, so that every track has a matching m/s/r character below.

first i tried to squeeze some spaces between the characters like this:

LC_CLCD_LEDStatusUpdate_Rec

;; print the solo status if value == 0, else a "R"

movf TMP1, W

andlw 0x07

addlw 0x00 ; rec == 90 0[0-7]

movf PLUSW0, W

bz LC_CLCD_LEDStatusUpdate_Solo

LC_CLCD_LEDStatusUpdate_Rec1

;; print R

movlw 'R  '

rgoto LC_CLCD_LEDStatusUpdate_RSM_Save

LC_CLCD_LEDStatusUpdate_Solo

;; print the mute status if value == 0, else a "S"

movf TMP1, W

andlw 0x07

addlw 0x08 ; solo == 90 0[8-F]

movf PLUSW0, W

bz LC_CLCD_LEDStatusUpdate_Mute

LC_CLCD_LEDStatusUpdate_Solo1

;; print S

movlw 'S  '

rgoto LC_CLCD_LEDStatusUpdate_RSM_Save

LC_CLCD_LEDStatusUpdate_Mute

;; print space or "S" if value == 0

movf TMP1, W

andlw 0x07

addlw 0x10 ; mute == 90 1[0-7]

movf PLUSW0, W

bz LC_CLCD_LEDStatusUpdate_Mute0

LC_CLCD_LEDStatusUpdate_Mute1

;; else print M

movlw 'M  '

rgoto LC_CLCD_LEDStatusUpdate_RSM_Save

LC_CLCD_LEDStatusUpdate_Mute0

;; print 'R' if rec active, 'S' if solo active, else space

clrf TMP2 ; TMP2.0 notifies that rec active, TMP2.1 that solo active

movf TMP1, W

andlw 0x07

addlw 0x00 ; rec == 90 0[0-7]

movf PLUSW0, W

skpz

bsf TMP2, 0

movf TMP1, W

andlw 0x07

addlw 0x08 ; solo == 90 0[8-F]

movf PLUSW0, W

skpz

bsf TMP2, 1

;; print "R", "S" or ' ' (in this priority)

movlw ' '

IFSET TMP2, 1, movlw 'S  '

IFSET TMP2, 0, movlw 'R  '

;; rgoto LC_CLCD_LEDStatusUpdate_RSM_Save

LC_CLCD_LEDStatusUpdate_RSM_Save

;; save character in RSM_MSG array

movwf TMP2 ; temp. save it in TMP2

;; prepare pointer to RSM_MSG array

lfsr FSR1, RSM_MSG_BEGIN

movf TMP1, W

andlw 0x30

addwf FSR1L, F

movff TMP2, INDF1 ; transfer character to array

;; print message

call LC_CLCD_Print_RSM

;; and exit

rgoto LC_CLCD_LEDStatusUpdate_End

and this

;; init pointer to message

lfsr FSR0, RSM_MSG_BEGIN

;; print 8 chars

movlw 30

movwf TMP1

in lc_clcd.inc, but that didn´t work.

then i tried to add lcd_rsm_d here:

;; font, x-position, y-position, distance

;; if font == 0, element will not be print

SET_CLCD_RSM_MSG MACRO font, x, y, d

movlw x

movwf LCD_RSM_X

movlw y * 0x40

movwf LCD_RSM_Y

movlw  d

          movwf  LCD_RSM_D

          movlw font & 0xff

movwf LCD_RSM_FONT_H

ENDM

and

LC_CLCD_Init_Page3

;; don't print status digits

SET_CLCD_STATUS 0, 0, 0

;; don't print "SMPTE/BEATS"

SET_CLCD_SMPTE_BEATS 0, 0, 0

;; don't print MTC digits

SET_CLCD_MTC 0, 0, 0

;; print host messages at position 12/0, (1=large spacing, x and y ignored)

SET_CLCD_HOST_MSG 0, 12, 0, 1

;; print horizontal meters at position 7/1 (distance between meter chars: 2)

;; |4 means: x-2 on second display

SET_CLCD_METER 0, 0, 0, 0

;; don't print rec/solo/mute status - x,y,d

SET_CLCD_RSM_MSG 1, 0, 0, 3

;; don't print select status

SET_CLCD_SEL_MSG 0, 0, 0

return

in lc_clcd_macros.inc/lc_clcd.inc, but it didn´t work either.

now i think this might be a bigger thing than i imagined. so i´m gratefull for any hints where to start.

greetings

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
×
×
  • Create New...