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