; print horizontal volume bars
vbis1_a
ldx zTMP1 ; load the index x for the channel offset
lda trackn_audc,x ; load the AUDC value of the channel indexed by x
cmp old_audc,x ; compare the old AUDC value to the current one
vbis1_b
beq vbis2 ; the same AUDC value is used, skip
sta old_audc,x ; save the old AUDC value for the next frame
and #$f ; clear the distortion bits
sta v_volume,x ; save for the clear screen routine
beq vbis2 ; volume 0, skip
vbis1_c
sub old_volume,x ; substract the old volume value to the current one
bmi vbis2 ; result is negative, skip
beq vbis2 ; result is 0, skip
sta zTMP2 ; save as the volume value buffer
lda old_volume,x ; load the old volume value in the accumulator
add #58 ; add the screen position relative to the offset (zARG0)
tay ; transfer to the index y for the next part
lda #$80 ; inverted space character
vbil3
sta (zARG0),y+ ; write a character on screen, increment the screen position
dec zTMP2 ; decrement the buffer
bne vbil3 ; repeat until the buffer is 0, meaning all characters were drawn