;MP2v003a.ASM by Dick Straker. Programmable selection-of-presets synthesiser module.
;"MIDI Partner" MIDI sound expander for WEM. PIC18F452 controlling ATSAM9773 SOUND SYNTH CHIP.
;MIDI Partner launched in AD2002.
;10MHz crystal osc + PLL (40MHz)gives 100ns single instruction cycle time. Basic
; main program loop time ~40us (Meausured on port RB7).
;................................................................................................................................................................................................................
;Tab is 16 spaces. Font is Arial bold 10.
;................................................................................................................................................................................................................
;Version MP2v003a adds direct access to sound-try-out mode from normal play mode using bass bank & rh2 mute buttons
; pressed simultaneously.
;Versions MP2v xx2x : RH1now has 3rd layer on some sounds (RH1-6 Accordion from 3 detuned layers).
; 6 extra buttons now available in hardware. All backwardly compatible with
; original MP1 hardware. 3 drum sounds available on bass and chords.
;Tremolo editing button now latching.
;Variable level 'solo' button added
;Variable pitch-bend function button added.
;
;Version 9A1 : Bass 9 release reduced - left variable.
;Version 9A0 adds : Pressing instrument select buttons again (toggles) mutes/unmutes the instrument.
;
;Version (8A3 - Jan 2007) makes the two Rh mute buttons into Inc & Dec controls for the sound tryout/edit
; mode. This adds to FSW1 & 2 for the same function. Rh1 mute=Dec, Rh2=Inc.
;Version (8A1 - Jan 2007) changes the drums operation to 3 individual on/off/Edit buttons &
; has a general rejig of the software here.
;
;Version (7C0) has been default version from date 27/11/2006 and changes the
; bass/chords percussion instruments in the different drum sets & adds master tune facility.
;Version (7B0) has been default version from date 27/10/2006.
; 7B0 - the last number being different sound versions of the same software version.
;................................................................................................................................................................................................................
;May be directly programmed into MP1 unit using ICD2 using the following configuration
; bit settings (see config directives below at begining of code section):
;Oscillator = - HS/PLL Enabled.
;Oscillator switch - Disabled.
;Powerup timer - Enabled.
;Brownout detect - Enabled @2.7V.
;Watchdog timer - Disabled.
;Low voltage program - Disabled.
;Background Debug - Disabled.
;Stack overflow reset - Enabled.
;Code memory protects - Enabled.
;Data EE Read protect - Disabled.
;
;EEPROM address 0xC0 will show 1st software revision letter in ASCII.
; (e.g v = 0x76). and address 0xC1 will show 2nd software revision letter in
; ASCII. (e.g. 4 = 0x34).and address 0xC2,C3 will show 3rd, 4th software revision letter.
;See eeprom address chart at the end of this file.
;
;Receives MIDI :- Bass=Ch3, Chords=Ch2, Rh1=Ch1/4, Rh2=Ch4. Rh2 Copies Ch1 unless
; external Ch4 input is sensed. Once sensed stays locked to chan 4 until power reset.
;
;Internally, Ch5 is used for 2nd layer on Rh Ch1 and Ch7 for 3rd layer on Ch1.
;Ch6 is 2nd layer for bass Ch3.
;
;Also, can recieve simultaneously for 'Cavagnolo' compatibility
; Ch16,15,14. (Rh, Bas, Chd), if activated.
;
;4 Assignable Footswitches to all (instrument & mute/octave/select/effects)
; buttons.
; Press & hold pedal whilst pushing desired button, release pedal.
;Pedal assignments are remembered during power off.
;............................................................................................................................
;Mode changing control sequences :
;
;If RH1 Mute button held down at startup, Sound-try-out or Sound-Programming mode is
; entered.
;From this version (MP2v003a), sound programming mode may be entered during normal use
; by pressing Bass bank and Rh2 Mute buttons together. Pressing again, exits back to normal mode.
;Also now, Mute 1 & 2 leds flash slowly to indicate that you are in programming mode.
;Also Mute 1 & 2 buttons are inc and dec respectively as well as Fsw 1 & 2 being inc and dec through
; the 128 sounds plus a blank between sound 127 and 0 on all 4 parts.
; Press a button to select it, press again to write in. All other controls work
; as normal. If a preset sound button is pressed then the sound is stored at
; this button, the reverb settings are also stored.
;If Rh1 Mute and Rh1-12 button held down at startup as above but MT32 sound-bank
; is used instead of GM bank. Reload factory presets to clear to GM Bank.
;
;To reload factory presets : Hold Chord Bank Button at power up.
;
;If Rh1-1 & Rh1-6 held down at power-on then Right-hand (Chan1) is converted to
; to Chan3 so Rhand plays the bass section. Holding buttons again at power-up
; toggles this mode which is otherwise 'remembered' in eeprom.
;
;If Rh2-1 & 6 held at power on, then 'Cavagnolo' compatibility of receiving
; Righthand on Ch16, Chords on 14 & Bass on 15 is enabled (reverse of previous versions).
; This is stored in EEPROM. Reload factory presets to cancel.
;
;If Rh2 7 & 12 held at power on, ATSAM9773 internal chip test performed, gives 3
; sine tones out - see section. Useful as module check without MIDI. To exit press Rh2-8
; & Rh2-11 together or power down/up.
;
;If Mute Rh2 held at power up, unit turns into GM module, no controls, just
; activity Led which blinks with recognised MIDI messages.(Analogue Master Vol
; only works).
;
;In normal operation 2 mutes held together produce alternate Rh1 to Rh2 mode.
; Rh2 mute toggles & Rh1 exits to normal mute modes.
;
;If Bass Bank (Change) button held at power-up, notes only (minimal) mode is
; toggled, where only MIDI note on/off info is responded to. Control change,
; program change etc are rejected.
;
;Percussion on/off if held down more than 1.5s, will turn LH Manual percussion
; on and Bass and Chord bank leds will flash quickly and Bass Fx control will
; set bass percussion volume level while Chord Fx control will set chord
; percussion volume level relative to bass or chord notes.Settings are
; remembered.
;
;Tremolo on/off button if held in more than 1.5s, will turn Rh1 Fx control into
; trem speeed and Rh2 Fx control into trem depth. Tremolo works on Rh1 & 2.
; Settings are remembered.
;
;Auto-repeat function has been removed - was never implemented physically.
;
;This version has a footswitch assignable pitch-bend (down up to a tone)
; effect button. Hold in until bass & chords leds flah for editing. BassFx control is recovery
; time, ChordFx is bend down pitch. Button is used to test amount of effect so hold button in
; again until leds stop flashing to store setting and exit.
;
;3 alternate drum set select buttons. Hold in for editing of bass and chord percussion.
; Each set has volume amounts which are memorized.
;
;Version 7C0+ adds MASTER TUNNING CONTROL. Hold Mute RH2 button in for
; 1.5secs until RH2 Mute Led starts flashing, RH2 Reverb control is now Master Tune
; control (A440 in centre), variable over approx 1/4 tone = +-1/8 tone. Press again to
; cancel. Value is stored in eeprom.
;
;Volume controls use midi Control 07 volume.
;Solo funtion uses control 11 expression [Rh1 & 2 only (chs 1,5,4)] Bass and chords
; use expression function as level correction only.
;Tremolo uses after touch pressure. Amplitude function set by sysx command.
;----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
include "p18f452.inc"
;
;Configuration bits:-
config OSC = HSPLL ;OSCILLATOR IS HSPLL
config OSCS = OFF ;OSCILLATOR SWITCH OFF.
config PWRT = ON ;POWERUP TIMER ON.
config BOR = ON ;BROWN OUT RESET IS ON.
config BORV = 27 ;BROWN OUT VOLTAGE IS 2.7V.
config WDT = OFF ;WATCHDOG TIMER IS OFF.
config CCP2MUX = OFF ;DISABLE (RB3).
config STVR = ON ;STACK OVERFLOW RESET.
config LVP = OFF ;LV ICSP.
CONFIG DEBUG = OFF ;BACKGROUND DEBUGGER.
CONFIG CP0 = ON ;CODE PROTECTION BLOCK 0.
CONFIG CP1 = ON ;CODE PROTECTION BLOCK 1.
CONFIG CP2 = ON ;CODE PROTECTION BLOCK 2.
CONFIG CP3 = ON ;CODE PROTECTION BLOCK 3.
CONFIG CPB = ON ;CODE PROTECT BOOT BOOT BLOCK.
CONFIG WRT0 = OFF ;WRITE PROTECT BLOCK 0.
CONFIG WRT1 = OFF ;WRITE PROTECT BLOCK 1.
CONFIG WRT2 = OFF ;WRITE PROTECT BLOCK 2.
CONFIG WRT3 = OFF ;WRITE PROTECT BLOCK 3.
CONFIG WRTB = OFF ;WRITE PROTECT BOOT BLOCK.
CONFIG WRTC = OFF ;CONFIGURATION REGISTER WRITE PROTECT.
CONFIG WRTD = OFF ;DATA EEPROM WRITE PROTECT.
CONFIG EBTR0 = ON ;TABLE READ PROTECT BLOCK 0.
CONFIG EBTR1 = ON ;TABLE READ PROTECT BLOCK 1.
CONFIG EBTR2 = ON ;TABLE READ PROTECT BLOCK 2.
CONFIG EBTR3 = ON ;TABLE READ PROTECT BLOCK 3.
CONFIG EBTRB = ON ;BOOT BLOCK TABLE READ PROTECT.
;
;CONSTANT EQUATES: ;
W equ D'0' ;(WREG).
F equ D'1' ;(FILE).
;MIDISTAT.
MIDI_RTS_FLAG equ D'0' ;IN MIDISTAT.
SNDTRY_FLAG equ D'1' ;
RS_FLAG equ D'2' ;RUNNING STATUS SET FLAG.
DB1_FLAG equ D'3' ;DataByte1 Flag.
DB2_FLAG equ D'4' ;DataByte2 Flag
SINGLE_FLAG equ D'5' ;Single DataByte Flag.
AS_FLAG equ D'6' ;
NOSTAT_FLAG equ D'7' ;1st TIME IN STATUS FLAG.
;DISPLAYREG. - HOLDS LED CONDITIONS.
MUTE2LED equ D'0' ;RH2 MUTE LED. DISPLAYREG.
GREEN equ D'1' ;IN DISPLAY REG.
MUTE1LED equ D'2' ;RH1 MUTE LED. DISPLAYREG.
MIDI_LED equ D'3' ;
CHORDBANK equ D'4' ;CHORD BANK LED. ON = BANK A.
BASSBANK equ D'5' ;BASS BANK LED. ON = BANK A.
;MIDISTAT2.
CH4LAYER_FLAG equ D'0' ;IN MIDISTAT2.
CH6ON_FLAG equ D'1' ;IN MIDISTAT2.
CH6MUTE_FLAG equ D'2' ;IN MIDISTAT2.
CH4SB_FLAG equ D'3' ;IN MIDISTAT2.
DBIGNOR_FLAG equ D'4' ;IN MIDISTAT2.
SENDSNG_FLAG equ D'5' ;IN MIDISTAT2.
SEND2DB_FLAG equ D'6' ;IN MIDISTAT2.
CH5COND_FLAG equ D'7' ;IN MIDISTAT2.
;GENFLAGS1.
NORPN_FLAG equ D'0' ;IN GENFLAGS1.
BASSOCTBIT equ D'1' ;IN GENFLAGS1.
CHORDOCTBIT equ D'2' ;IN GENFLAGS1.
RH1OCTBIT equ D'3' ;IN GENFLAGS1.
RH2OCTBIT equ D'4' ;IN GENFLAGS1.
MUTE_FLAG equ D'5' ;IN GENFLAGS1.
MUTE1_FLAG equ D'6' ;IN GENFLAGS1.
MUTE2_FLAG equ D'7' ;IN GENFLAGS1.
;GENFLAGS2.
FSW1ON_FLAG equ D'0' ;IN GENFLAGS2.
FSWON2_FLAG equ D'1' ;IN GENFLAGS2.
FSW_FLAG equ D'2' ;IN GENFLAGS2.
SNG2_FLAG equ D'3' ;IN GENFLAGS2.
DB12_FLAG equ D'4' ;IN GENFLAGS2.
DB22_FLAG equ D'5' ;IN GENFLAGS2.
CH5ON_FLAG equ D'6' ;IN GENFLAGS2.
CH5MUTE_FLAG equ D'7' ;IN GENFLAGS2.
;GENFLAGS3.
MUTOG_FLAG equ D'0' ;TOGGLE MUTE RH1 TO RH2.
RH224OCTD_BIT equ D'1' ;
CH4FIRST_FLAG equ D'2' ;FIRST TIME DETECT CH4 FLAG.
PERCON2_BIT equ D'3' ;ENABLE Ch10 PERCUSSION ON Ch2.
PERCON3_BIT equ D'4' ;ENABLE Ch10 PERCUSSION ON Ch3.
;PRTA_EN_BIT equ D'5' ;PORTAMENTO ENABLE.
DRM1_BIT equ D'6' ;PERCUSSION ON/OFF (FROM FSW4).
PERCVOLED_BIT equ D'7' ;PERCUSSION EDIT FLAG.
;GENFLAGS4.
;REPEATEN_BIT equ D'0' ;AUTO REPEAT ON/OFF.
CHANCONV_BIT equ D'1' ;Channel convert for other systems.
BLANK_RH1_FLAG equ D'2' ;PROGRAM A BLANK FLAG RH1.
BLANK_RH2_FLAG equ D'3' ;PROGRAM A BLANK FLAG RH2.
BASVEL0_FLAG equ D'4' ;
CHDVEL0_FLAG equ D'5' ;
;DRMBWAIT_BIT equ D'6' ;
BASS_RNG_BIT equ D'7' ;
;GENFLAGS5.
EDBASBIT equ D'0' ;CONTROLS FOR TEST SOUND EDIT MODE.
EDCHDBIT equ D'1' ;CONTROLS FOR TEST SOUND EDIT MODE.
EDRH1BIT equ D'2' ;CONTROLS FOR TEST SOUND EDIT MODE.
EDRH2BIT equ D'3' ;CONTROLS FOR TEST SOUND EDIT MODE.
RH1OCTUPBIT equ D'4' ;RH1 OCTAVE UP.
PORTA_BIT equ D'5' ;PORTAMENTO ON/OFF.
;TREMWAIT_BIT equ D'6' ;WAIT TIME FOR PORTAM TO BE ON.
;TREMSPDED_BIT equ D'7' ;PORTAMENTO ON TIME FLAG.
;GENFLAGS6.
;TREMONCEBIT equ D'0' ;SEND TREMELO ON ONCE ONLY.
RPT2_INPROG equ D'1' ;REPEAT Ch4 NOTE1 ON
;TREMVOLED_BIT equ D'2' ;READY TO START REPEAT.
;TREMON_BIT equ D'3' ;TREMELO ON/OFF.
SYSX11_B7_FLG equ D'4' ;SYSX 11, BYTE 7 FLAG.
RHINSTCHNG equ D'5' ;RH INSTRUMENT BUTTON CHANGE.
NOTESONLY equ D'6' ;NOTES ONLY BIT.
;RPT1_INPROG equ D'7' ;REPEAT1 IN PROGRESS BIT.
;GENFLAGS7.
TREMVOLED_BIT equ D'0' ;TREMOLO EDIT ROUTINE.
TREMTOG_FLAG equ D'1' ;TREMOLO EDIT ROUTINE.
TREMWAIT_BIT equ D'2' ;TREMOLO EDIT ROUTINE.
;TREMSPDED_BIT equ D'3' ;TREMOLO EDIT ROUTINE.
;TREMONCEBIT equ D'4' ;TREMOLO EDIT ROUTINE.
TREMON_BIT equ D'5' ;TREMOLO EDIT ROUTINE.
;GENFLAGS8.
RH1L3EN equ D'0' ;RH1 LAYER 3 ENABLE.
PB_EN_BIT equ D'1' ;PRESET PITCH-BEND ENABLE.
PBHOLD_BIT equ D'3' ;PB BUTTON HOLD DOWN.
DRM2_BIT equ D'4' ;DRUMSET 2 SELECT BIT.
DRM3_BIT equ D'5' ;DRUMSET 3 SELECT BIT.
CHAN1TO3_BIT equ D'6' ;RH1 CONVERT TO BASS CH3.
CANCEL1TO3_BIT equ D'7' ;RH1 CONVERT TO BASS CH3 CANCEL.
;GENFLAGS9.
MTUNED_FLAG equ D'0' ;MASTER TUNE MODE SET FLAG.
MTWAIT_BIT equ D'1' ;MASTER TUNE
MTTOG_FLAG equ D'2' ;MASTER TUNE
DRM1WAIT_BIT equ D'3' ;
DRM1TOG_FLAG equ D'4' ;
DRM3TOG_FLAG equ D'5' ;
DRM2WAIT_BIT equ D'6' ;
DRM2TOG_FLAG equ D'7' ;
;GENFLAGS10.
DRM3WAIT_BIT equ D'0' ;DRUMS3 EDITS.
DIP_CHNG_LED equ D'1' ;
MIDI_LED_FLAG equ D'2' ;
STM_MUTDEC_FLAG equ D'3' ;SOUNDTRYOUT MODE FLAG FOR MUTE BUTTON.
STM_MUTINC_FLAG equ D'4' ;SOUNDTRYOUT MODE FLAG FOR MUTE BUTTON.
TREMHOLD_FLAG equ D'5' ;A TREMOLO ROUTINE FLAG.
;GENFLAGS11.
SOLOTOG_FLAG equ D'0' ;SOLO ROUTINE BITS.
SOLO_BIT equ D'1' ;
SOLOWAIT_BIT equ D'2' ;
SOLOVOLED_BIT equ D'3' ;
SOLOSTAT_BIT equ D'4' ;
;GENFLAGS12
BENDVOLED_BIT equ D'0' ;BEND EDIT MODE IS NOW OFF.
BENDTOG_FLAG equ D'1' ;FIRST TIME IN FLAG.
BENDWAIT_BIT equ D'2' ;SET EDIT MODE OFF.
BENDTERM_BIT equ D'3' ;BEND EDIT EXIT.
;FSW1ASIGNREG
FSW1_MRH2_BIT equ D'0' ;IN FSW1ASIGNREG
FSW1_ORH2_BIT equ D'1' ;IN FSW1ASIGNREG
FSW1_MRH1_BIT equ D'2' ;IN FSW1ASIGNREG
FSW1_ORH1_BIT equ D'3' ;IN FSW1ASIGNREG
FSW1_OCHD_BIT equ D'4' ;IN FSW1ASIGNREG
FSW1_OBAS_BIT equ D'5' ;IN FSW1ASIGNREG
;
FSW2_MRH2_BIT equ D'0' ;IN FSW2ASIGNREG
FSW2_ORH2_BIT equ D'1' ;IN FSW2ASIGNREG
FSW2_MRH1_BIT equ D'2' ;IN FSW2ASIGNREG
FSW2_ORH1_BIT equ D'3' ;IN FSW2ASIGNREG
FSW2_OCHD_BIT equ D'4' ;IN FSW2ASIGNREG
FSW2_OBAS_BIT equ D'5' ;IN FSW2ASIGNREG
;
FSW3_MRH2_BIT equ D'0' ;IN FSW3ASIGNREG
FSW3_ORH2_BIT equ D'1' ;IN FSW3ASIGNREG
FSW3_MRH1_BIT equ D'2' ;IN FSW3ASIGNREG
FSW3_ORH1_BIT equ D'3' ;IN FSW3ASIGNREG
FSW3_OCHD_BIT equ D'4' ;IN FSW3ASIGNREG
FSW3_OBAS_BIT equ D'5' ;IN FSW3ASIGNREG
;
FSW4_MRH2_BIT equ D'0' ;IN FSW4ASIGNREG
FSW4_ORH2_BIT equ D'1' ;IN FSW4ASIGNREG
FSW4_MRH1_BIT equ D'2' ;IN FSW4ASIGNREG
FSW4_ORH1_BIT equ D'3' ;IN FSW4ASIGNREG
FSW4_OCHD_BIT equ D'4' ;IN FSW4ASIGNREG
FSW4_OBAS_BIT equ D'5' ;IN FSW4ASIGNREG
;
FSW1_BAS1_BIT equ D'0' ;IN FSW1ASIGNREGBA
FSW1_BAS2_BIT equ D'1' ;IN FSW1ASIGNREGBA
FSW1_BAS3_BIT equ D'2' ;IN FSW1ASIGNREGBA
FSW1_BAS4_BIT equ D'3' ;IN FSW1ASIGNREGBA
FSW1_BAS5_BIT equ D'4' ;IN FSW1ASIGNREGBA
FSW1_BAS6_BIT equ D'5' ;IN FSW1ASIGNREGBA
FSW1_BAS8_BIT equ D'6' ;IN FSW1ASIGNREGBA
;
FSW1_CHD1_BIT equ D'0' ;IN FSW1ASIGNREGCH
FSW1_CHD2_BIT equ D'1' ;IN FSW1ASIGNREGCH
FSW1_CHD3_BIT equ D'2' ;IN FSW1ASIGNREGCH
FSW1_CHD4_BIT equ D'3' ;IN FSW1ASIGNREGCH
FSW1_CHD5_BIT equ D'4' ;IN FSW1ASIGNREGCH
FSW1_CHD6_BIT equ D'5' ;IN FSW1ASIGNREGCH
FSW1_CHD8_BIT equ D'6' ;IN FSW1ASIGNREGCH
;
FSW1_RH111_BIT equ D'0' ;IN FSW1ASIGNREG11
FSW1_RH112_BIT equ D'1' ;IN FSW1ASIGNREG11
FSW1_RH113_BIT equ D'2' ;IN FSW1ASIGNREG11
FSW1_RH114_BIT equ D'3' ;IN FSW1ASIGNREG11
FSW1_RH115_BIT equ D'4' ;IN FSW1ASIGNREG11
FSW1_RH116_BIT equ D'5' ;IN FSW1ASIGNREG11
FSW1_RH118_BIT equ D'6' ;IN FSW1ASIGNREG11
;
FSW1_RH121_BIT equ D'0' ;IN FSW1ASIGNREG12
FSW1_RH122_BIT equ D'1' ;IN FSW1ASIGNREG12
FSW1_RH123_BIT equ D'2' ;IN FSW1ASIGNREG12
FSW1_RH124_BIT equ D'3' ;IN FSW1ASIGNREG12
FSW1_RH125_BIT equ D'4' ;IN FSW1ASIGNREG12
FSW1_RH126_BIT equ D'5' ;IN FSW1ASIGNREG12
FSW1_RH128_BIT equ D'6' ;IN FSW1ASIGNREG12
;
FSW1_RH211_BIT equ D'0' ;IN FSW1ASIGNREG21
FSW1_RH212_BIT equ D'1' ;IN FSW1ASIGNREG21
FSW1_RH213_BIT equ D'2' ;IN FSW1ASIGNREG21
FSW1_RH214_BIT equ D'3' ;IN FSW1ASIGNREG21
FSW1_RH215_BIT equ D'4' ;IN FSW1ASIGNREG21
FSW1_RH216_BIT equ D'5' ;IN FSW1ASIGNREG21
FSW1_RH218_BIT equ D'6' ;IN FSW1ASIGNREG21
;
FSW1_RH221_BIT equ D'0' ;IN FSW1ASIGNREG22
FSW1_RH222_BIT equ D'1' ;IN FSW1ASIGNREG22
FSW1_RH223_BIT equ D'2' ;IN FSW1ASIGNREG22
FSW1_RH224_BIT equ D'3' ;IN FSW1ASIGNREG22
FSW1_RH225_BIT equ D'4' ;IN FSW1ASIGNREG22
FSW1_RH226_BIT equ D'5' ;IN FSW1ASIGNREG22
FSW1_RH227_BIT equ D'6' ;IN FSW1ASIGNREG22
;
FSW2_BAS1_BIT equ D'0' ;IN FSW2ASIGNREGBA
FSW2_BAS2_BIT equ D'1' ;IN FSW2ASIGNREGBA
FSW2_BAS3_BIT equ D'2' ;IN FSW2ASIGNREGBA
FSW2_BAS4_BIT equ D'3' ;IN FSW2ASIGNREGBA
FSW2_BAS5_BIT equ D'4' ;IN FSW2ASIGNREGBA
FSW2_BAS6_BIT equ D'5' ;IN FSW2ASIGNREGBA
FSW2_BAS8_BIT equ D'6' ;IN FSW2ASIGNREGBA
;
FSW2_CHD1_BIT equ D'0' ;IN FSW2ASIGNREGCH
FSW2_CHD2_BIT equ D'1' ;IN FSW2ASIGNREGCH
FSW2_CHD3_BIT equ D'2' ;IN FSW2ASIGNREGCH
FSW2_CHD4_BIT equ D'3' ;IN FSW2ASIGNREGCH
FSW2_CHD5_BIT equ D'4' ;IN FSW2ASIGNREGCH
FSW2_CHD6_BIT equ D'5' ;IN FSW2ASIGNREGCH
FSW2_CHD8_BIT equ D'6' ;IN FSW2ASIGNREGCH
;
FSW2_RH111_BIT equ D'0' ;IN FSW2ASIGNREG11
FSW2_RH112_BIT equ D'1' ;IN FSW2ASIGNREG11
FSW2_RH113_BIT equ D'2' ;IN FSW2ASIGNREG11
FSW2_RH114_BIT equ D'3' ;IN FSW2ASIGNREG11
FSW2_RH115_BIT equ D'4' ;IN FSW2ASIGNREG11
FSW2_RH116_BIT equ D'5' ;IN FSW2ASIGNREG11
FSW2_RH118_BIT equ D'6' ;IN FSW2ASIGNREG11
;
FSW2_RH121_BIT equ D'0' ;IN FSW2ASIGNREG12
FSW2_RH122_BIT equ D'1' ;IN FSW2ASIGNREG12
FSW2_RH123_BIT equ D'2' ;IN FSW2ASIGNREG12
FSW2_RH124_BIT equ D'3' ;IN FSW2ASIGNREG12
FSW2_RH125_BIT equ D'4' ;IN FSW2ASIGNREG12
FSW2_RH126_BIT equ D'5' ;IN FSW2ASIGNREG12
FSW2_RH128_BIT equ D'6' ;IN FSW2ASIGNREG12
;
FSW2_RH211_BIT equ D'0' ;IN FSW2ASIGNREG21
FSW2_RH212_BIT equ D'1' ;IN FSW2ASIGNREG21
FSW2_RH213_BIT equ D'2' ;IN FSW2ASIGNREG21
FSW2_RH214_BIT equ D'3' ;IN FSW2ASIGNREG21
FSW2_RH215_BIT equ D'4' ;IN FSW2ASIGNREG21
FSW2_RH216_BIT equ D'5' ;IN FSW2ASIGNREG21
FSW2_RH218_BIT equ D'6' ;IN FSW2ASIGNREG21
;
FSW2_RH221_BIT equ D'0' ;IN FSW2ASIGNREG22
FSW2_RH222_BIT equ D'1' ;IN FSW2ASIGNREG22
FSW2_RH223_BIT equ D'2' ;IN FSW2ASIGNREG22
FSW2_RH224_BIT equ D'3' ;IN FSW2ASIGNREG22
FSW2_RH225_BIT equ D'4' ;IN FSW2ASIGNREG22
FSW2_RH226_BIT equ D'5' ;IN FSW2ASIGNREG22
FSW2_RH227_BIT equ D'6' ;IN FSW2ASIGNREG22
;
FSW3_BAS1_BIT equ D'0' ;IN FSW3ASIGNREGBA
FSW3_BAS2_BIT equ D'1' ;IN FSW3ASIGNREGBA
FSW3_BAS3_BIT equ D'2' ;IN FSW3ASIGNREGBA
FSW3_BAS4_BIT equ D'3' ;IN FSW3ASIGNREGBA
FSW3_BAS5_BIT equ D'4' ;IN FSW3ASIGNREGBA
FSW3_BAS6_BIT equ D'5' ;IN FSW3ASIGNREGBA
FSW3_BAS8_BIT equ D'6' ;IN FSW3ASIGNREGBA
;
FSW3_CHD1_BIT equ D'0' ;IN FSW3ASIGNREGCH
FSW3_CHD2_BIT equ D'1' ;IN FSW3ASIGNREGCH
FSW3_CHD3_BIT equ D'2' ;IN FSW3ASIGNREGCH
FSW3_CHD4_BIT equ D'3' ;IN FSW3ASIGNREGCH
FSW3_CHD5_BIT equ D'4' ;IN FSW3ASIGNREGCH
FSW3_CHD6_BIT equ D'5' ;IN FSW3ASIGNREGCH
FSW3_CHD8_BIT equ D'6' ;IN FSW3ASIGNREGCH
;
FSW3_RH111_BIT equ D'0' ;IN FSW3ASIGNREG11
FSW3_RH112_BIT equ D'1' ;IN FSW3ASIGNREG11
FSW3_RH113_BIT equ D'2' ;IN FSW3ASIGNREG11
FSW3_RH114_BIT equ D'3' ;IN FSW3ASIGNREG11
FSW3_RH115_BIT equ D'4' ;IN FSW3ASIGNREG11
FSW3_RH116_BIT equ D'5' ;IN FSW3ASIGNREG11
FSW3_RH118_BIT equ D'6' ;IN FSW3ASIGNREG11
;
FSW3_RH121_BIT equ D'0' ;IN FSW3ASIGNREG12
FSW3_RH122_BIT equ D'1' ;IN FSW3ASIGNREG12
FSW3_RH123_BIT equ D'2' ;IN FSW3ASIGNREG12
FSW3_RH124_BIT equ D'3' ;IN FSW3ASIGNREG12
FSW3_RH125_BIT equ D'4' ;IN FSW3ASIGNREG12
FSW3_RH126_BIT equ D'5' ;IN FSW3ASIGNREG12
FSW3_RH128_BIT equ D'6' ;IN FSW3ASIGNREG12
;
FSW3_RH211_BIT equ D'0' ;IN FSW3ASIGNREG21
FSW3_RH212_BIT equ D'1' ;IN FSW3ASIGNREG21
FSW3_RH213_BIT equ D'2' ;IN FSW3ASIGNREG21
FSW3_RH214_BIT equ D'3' ;IN FSW3ASIGNREG21
FSW3_RH215_BIT equ D'4' ;IN FSW3ASIGNREG21
FSW3_RH216_BIT equ D'5' ;IN FSW3ASIGNREG21
FSW3_RH218_BIT equ D'6' ;IN FSW3ASIGNREG21
;
FSW3_RH221_BIT equ D'0' ;IN FSW3ASIGNREG22
FSW3_RH222_BIT equ D'1' ;IN FSW3ASIGNREG22
FSW3_RH223_BIT equ D'2' ;IN FSW3ASIGNREG22
FSW3_RH224_BIT equ D'3' ;IN FSW3ASIGNREG22
FSW3_RH225_BIT equ D'4' ;IN FSW3ASIGNREG22
FSW3_RH226_BIT equ D'5' ;IN FSW3ASIGNREG22
FSW3_RH227_BIT equ D'6' ;IN FSW3ASIGNREG22
;
FSW4_BAS1_BIT equ D'0' ;IN FSW4ASIGNREGBA
FSW4_BAS2_BIT equ D'1' ;IN FSW4ASIGNREGBA
FSW4_BAS3_BIT equ D'2' ;IN FSW4ASIGNREGBA
FSW4_BAS4_BIT equ D'3' ;IN FSW4ASIGNREGBA
FSW4_BAS5_BIT equ D'4' ;IN FSW4ASIGNREGBA
FSW4_BAS6_BIT equ D'5' ;IN FSW4ASIGNREGBA
FSW4_BAS8_BIT equ D'6' ;IN FSW4ASIGNREGBA
;
FSW4_CHD1_BIT equ D'0' ;IN FSW4ASIGNREGCH
FSW4_CHD2_BIT equ D'1' ;IN FSW4ASIGNREGCH
FSW4_CHD3_BIT equ D'2' ;IN FSW4ASIGNREGCH
FSW4_CHD4_BIT equ D'3' ;IN FSW4ASIGNREGCH
FSW4_CHD5_BIT equ D'4' ;IN FSW4ASIGNREGCH
FSW4_CHD6_BIT equ D'5' ;IN FSW4ASIGNREGCH
FSW4_CHD8_BIT equ D'6' ;IN FSW4ASIGNREGCH
;
FSW4_RH111_BIT equ D'0' ;IN FSW4ASIGNREG11
FSW4_RH112_BIT equ D'1' ;IN FSW4ASIGNREG11
FSW4_RH113_BIT equ D'2' ;IN FSW4ASIGNREG11
FSW4_RH114_BIT equ D'3' ;IN FSW4ASIGNREG11
FSW4_RH115_BIT equ D'4' ;IN FSW4ASIGNREG11
FSW4_RH116_BIT equ D'5' ;IN FSW4ASIGNREG11
FSW4_RH118_BIT equ D'6' ;IN FSW4ASIGNREG11
;
FSW4_RH121_BIT equ D'0' ;IN FSW4ASIGNREG12
FSW4_RH122_BIT equ D'1' ;IN FSW4ASIGNREG12
FSW4_RH123_BIT equ D'2' ;IN FSW4ASIGNREG12
FSW4_RH124_BIT equ D'3' ;IN FSW4ASIGNREG12
FSW4_RH125_BIT equ D'4' ;IN FSW4ASIGNREG12
FSW4_RH126_BIT equ D'5' ;IN FSW4ASIGNREG12
FSW4_RH128_BIT equ D'6' ;IN FSW4ASIGNREG12
;
FSW4_RH211_BIT equ D'0' ;IN FSW4ASIGNREG21
FSW4_RH212_BIT equ D'1' ;IN FSW4ASIGNREG21
FSW4_RH213_BIT equ D'2' ;IN FSW4ASIGNREG21
FSW4_RH214_BIT equ D'3' ;IN FSW4ASIGNREG21
FSW4_RH215_BIT equ D'4' ;IN FSW4ASIGNREG21
FSW4_RH216_BIT equ D'5' ;IN FSW4ASIGNREG21
FSW4_RH218_BIT equ D'6' ;IN FSW4ASIGNREG21
;
FSW4_RH221_BIT equ D'0' ;IN FSW4ASIGNREG22
FSW4_RH222_BIT equ D'1' ;IN FSW4ASIGNREG22
FSW4_RH223_BIT equ D'2' ;IN FSW4ASIGNREG22
FSW4_RH224_BIT equ D'3' ;IN FSW4ASIGNREG22
FSW4_RH225_BIT equ D'4' ;IN FSW4ASIGNREG22
FSW4_RH226_BIT equ D'5' ;IN FSW4ASIGNREG22
FSW4_RH227_BIT equ D'6' ;IN FSW4ASIGNREG22
;RECFLAGS1.
REC_BAS1_BIT equ D'0' ;IN RECFLAGS1.
REC_BAS2_BIT equ D'1' ;
REC_BAS3_BIT equ D'2' ;
REC_BAS4_BIT equ D'3' ;
REC_BAS5_BIT equ D'4' ;
REC_BAS6_BIT equ D'5' ;
;
REC_CHD1_BIT equ D'0' ;;IN RECFLAGS2.
REC_CHD2_BIT equ D'1' ;
REC_CHD3_BIT equ D'2' ;
REC_CHD4_BIT equ D'3' ;
REC_CHD5_BIT equ D'4' ;
REC_CHD6_BIT equ D'5' ;
;
REC_RH11_BIT equ D'0' ;;IN RECFLAGS3.
REC_RH12_BIT equ D'1' ;
REC_RH13_BIT equ D'2' ;
REC_RH14_BIT equ D'3' ;
REC_RH15_BIT equ D'4' ;
REC_RH16_BIT equ D'5' ;
;
REC_RH17_BIT equ D'0' ;;IN RECFLAGS4.
REC_RH18_BIT equ D'1' ;
REC_RH19_BIT equ D'2' ;
REC_RH110_BIT equ D'3' ;
REC_RH111_BIT equ D'4' ;
REC_RH112_BIT equ D'5' ;
;
REC_RH21_BIT equ D'0' ;;IN RECFLAGS5.
REC_RH22_BIT equ D'1' ;
REC_RH23_BIT equ D'2' ;
REC_RH24_BIT equ D'3' ;
REC_RH25_BIT equ D'4' ;
REC_RH26_BIT equ D'5' ;
;
REC_RH27_BIT equ D'0' ;IN RECFLAGS6.
REC_RH28_BIT equ D'1' ;
REC_RH29_BIT equ D'2' ;
REC_RH210_BIT equ D'3' ;
REC_RH211_BIT equ D'4' ;
REC_RH212_BIT equ D'5' ;
;
REC_BAS7_BIT equ D'0' ;IN RECFLAGS7.
REC_BAS8_BIT equ D'1' ;
REC_BAS9_BIT equ D'2' ;
REC_BAS10_BIT equ D'3' ;
REC_BAS11_BIT equ D'4' ;
REC_BAS12_BIT equ D'5' ;
;
REC_CHD7_BIT equ D'0' ;IN RECFLAGS8.
REC_CHD8_BIT equ D'1' ;
REC_CHD9_BIT equ D'2' ;
REC_CHD10_BIT equ D'3' ;
REC_CHD11_BIT equ D'4' ;
REC_CHD12_BIT equ D'5' ;
;
BASS1_FLAG equ D'0' ;BASS 1.
BASS2_FLAG equ D'1' ;BASS 2.
BASS3_FLAG equ D'2' ;BASS 3.
BASS4_FLAG equ D'3' ;BASS 4.
BASS5_FLAG equ D'4' ;BASS 5.
BASS6_FLAG equ D'5' ;BASS 6.
;
CHORD1_FLAG equ D'0' ;CHORD 1.
CHORD2_FLAG equ D'1' ;CHORD 2.
CHORD3_FLAG equ D'2' ;CHORD 3.
CHORD4_FLAG equ D'3' ;CHORD 4.
CHORD5_FLAG equ D'4' ;CHORD 5.
CHORD6_FLAG equ D'5' ;CHORD 6.
;
REC_MBAS1_BIT equ D'0' ;IN RECFLAGS9,
REC_MBAS2_BIT equ D'1' ; ('RECORD A BLANK' BITS).
REC_MBAS3_BIT equ D'2' ;
REC_MBAS4_BIT equ D'3' ;
REC_MBAS5_BIT equ D'4' ;
REC_MBAS6_BIT equ D'5' ;
;
REC_MBAS7_BIT equ D'0' ;IN RECFLAGS10.
REC_MBAS8_BIT equ D'1' ;
REC_MBAS9_BIT equ D'2' ;
REC_MBAS10_BIT equ D'3' ;
REC_MBAS11_BIT equ D'4' ;
REC_MBAS12_BIT equ D'5' ;
;
REC_MCHD1_BIT equ D'0' ;IN RECFLAGS11.
REC_MCHD2_BIT equ D'1' ;
REC_MCHD3_BIT equ D'2' ;
REC_MCHD4_BIT equ D'3' ;
REC_MCHD5_BIT equ D'4' ;
REC_MCHD6_BIT equ D'5' ;
;
REC_MCHD7_BIT equ D'0' ;IN RECFLAGS12.
REC_MCHD8_BIT equ D'1' ;
REC_MCHD9_BIT equ D'2' ;
REC_MCHD10_BIT equ D'3' ;
REC_MCHD11_BIT equ D'4' ;
REC_MCHD12_BIT equ D'5' ;
;
;.......................................................................................................
RAM_ALLOCATION: ;
GENTIME1 equ 0x00 ;INCREMENTED BY TIMER0 INTSRV.
MIDITEMP1 equ 0x01 ;TEMPORARY HOLD.
MIDITEMP2 equ 0x02 ;TEMPORARY HOLD.
MIDIBYTCNT equ 0x03 ;MIDI BYTE IN COUNT.
LEDFLASH equ 0x04 ;
BASSCANHOLD equ 0x05 ;
CHORDSCANHOLD equ 0x06 ;
RH11TOOCTHOLD equ 0x07 ;
RH17TOMUTHOLD equ 0x08 ;
RH21TOOCTHOLD equ 0x09 ;
RH27TOMUTHOLD equ 0x0A ;
PROGCHHOLD1 equ 0x0B ;
PROGCHHOLD2 equ 0x0C ;
SCANSTAT equ 0x0D ;
SCANDEL equ 0x0E ;
SCANTEMP1 equ 0x0F ;
;
RH11SCANHOLD equ 0x10 ;
RH17SCANHOLD equ 0x11 ;
RH21SCANHOLD equ 0x12 ;
RH27SCANHOLD equ 0x13 ;
MIDISTAT equ 0x14 ;MIDI BYTE SORT STATUS.
MIDISENDREG equ 0x15 ;MIDI BYTE SEND.
DISPLAYREG equ 0x16 ;LED DISPLAY HOLD.
MTEMP equ 0x17 ;MIDI FILTER TEMP HOLD.
BASSVOLPOT equ 0x18 ;POT VALUE STORE.
BASSFXPOT equ 0x19 ;POT VALUE STORE.
CHORDVOLPOT equ 0x1A ;POT VALUE STORE.
CHORDFXPOT equ 0x1B ;POT VALUE STORE.
RH1VOLPOT equ 0x1C ;POT VALUE STORE.
RH1FXPOT equ 0x1D ;POT VALUE STORE.
RH2VOLPOT equ 0x1E ;POT VALUE STORE.
RH2FXPOT equ 0x1F ;POT VALUE STORE.
;
POTSTAT equ 0x20 ;POT SEND STATUS.
POTSTORE equ 0x21 ;POT VALUE HOLD.
POTCHAN equ 0x22 ;POT CHANNEL HOLD.
POTSCNCNT equ 0x23 ;POT SCAN LOOP.
POTCONT equ 0x24 ;POT CONTROL NUMBER.
AS_TIMER equ 0x25 ;ACTIVE SENSING TIMER.
TEMP1 equ 0x26 ;HOLDS Ch.6 STATUS-BYTE.
MIDISTAT2 equ 0x27 ;
NORPN1 equ 0x28 ;Internal N or RPN MIDI CONTROL HOLD.
NORPN2 equ 0x29 ;N or RPN MIDI CONTROL HOLD.
NORPN3 equ 0x2A ;N or RPN MIDI CONTROL HOLD.
NORPN4 equ 0x2B ;N or RPN MIDI CONTROL HOLD.
NORPN5 equ 0x2C ;N or RPN MIDI CONTROL HOLD.
NORPN6 equ 0x2D ;N or RPN MIDI CONTROL HOLD.
NORPN7 equ 0x2E ;N or RPN MIDI CONTROL HOLD.
GENFLAGS1 equ 0x2F ;
;
CONTCHAN equ 0x30 ;CONTROL SEND HOLDING.
CONTDB1 equ 0x31 ;CONTROL SEND HOLDING.
CONTDB2 equ 0x32 ;CONTROL SEND HOLDING.
GENFLAGS2 equ 0x33 ;GENERAL FLAGS REG 2.
AS_COUNT equ 0x34 ;ACTIVE SENSING LOOP COUNTER.
SYSX11BYTE9 equ 0x35 ;BYTE 9 OF 11 BYTE SYSX SEND.
SYSX11BYTE8 equ 0x36 ;BYTE 8 OF 11 BYTE SYSX SEND.
FSWINHOLD equ 0x37 ;FOOTSWITCH SCAN HOLD.
MAINSBHOLD equ 0x38 ;
MAINDB1HOLD equ 0x39 ;
MAINDB2HOLD equ 0x3A ;
PEDTEMP equ 0x3B ;FOOTSWITCH SCAN TEMP.
CH4SBHOLD equ 0x3C ;
GENFLAGS5 equ 0x3D ;
CH4DB2HOLD equ 0x3E ;
MAINSNGHOLD equ 0x3F ;
;
FSW1ASIGNREG equ 0x40 ;FOOTSWITCH1 FUNCTION FLAGS.
FSW2ASIGNREG equ 0x41 ;FOOTSWITCH2 FUNCTION FLAGS.
FSW3ASIGNREG equ 0x42 ;FOOTSWITCH3 FUNCTION FLAGS.
FSW4ASIGNREG equ 0x43 ;FOOTSWITCH4 FUNCTION FLAGS.
;
FSW1ASIGNREG22 equ 0x44 ;FOOTSWITCH1 FUNCTION FLAGS.
FSW1ASIGNREG21 equ 0x45 ;FOOTSWITCH1 FUNCTION FLAGS.
FSW1ASIGNREG12 equ 0x46 ;FOOTSWITCH1 FUNCTION FLAGS.
FSW1ASIGNREG11 equ 0x47 ;FOOTSWITCH1 FUNCTION FLAGS.
FSW1ASIGNREGCH equ 0x48 ;FOOTSWITCH1 FUNCTION FLAGS.
FSW1ASIGNREGBA equ 0x49 ;FOOTSWITCH1 FUNCTION FLAGS.
;
FSW2ASIGNREG22 equ 0x4A ;FOOTSWITCH2 FUNCTION FLAGS.
FSW2ASIGNREG21 equ 0x4B ;FOOTSWITCH2 FUNCTION FLAGS.
FSW2ASIGNREG12 equ 0x4C ;FOOTSWITCH2 FUNCTION FLAGS.
FSW2ASIGNREG11 equ 0x4D ;FOOTSWITCH2 FUNCTION FLAGS.
FSW2ASIGNREGCH equ 0x4E ;FOOTSWITCH2 FUNCTION FLAGS.
FSW2ASIGNREGBA equ 0x4F ;FOOTSWITCH2 FUNCTION FLAGS.
;
FSW3ASIGNREG22 equ 0x50 ;FOOTSWITCH3 FUNCTION FLAGS.
FSW3ASIGNREG21 equ 0x51 ;FOOTSWITCH3 FUNCTION FLAGS.
FSW3ASIGNREG12 equ 0x52 ;FOOTSWITCH3 FUNCTION FLAGS.
FSW3ASIGNREG11 equ 0x53 ;FOOTSWITCH3 FUNCTION FLAGS.
FSW3ASIGNREGCH equ 0x54 ;FOOTSWITCH3 FUNCTION FLAGS.
FSW3ASIGNREGBA equ 0x55 ;FOOTSWITCH3 FUNCTION FLAGS.
;
FSW4ASIGNREG22 equ 0x56 ;FOOTSWITCH4 FUNCTION FLAGS.
FSW4ASIGNREG21 equ 0x57 ;FOOTSWITCH4 FUNCTION FLAGS.
FSW4ASIGNREG12 equ 0x58 ;FOOTSWITCH4 FUNCTION FLAGS.
FSW4ASIGNREG11 equ 0x59 ;FOOTSWITCH4 FUNCTION FLAGS.
FSW4ASIGNREGCH equ 0x5A ;FOOTSWITCH4 FUNCTION FLAGS.
FSW4ASIGNREGBA equ 0x5B ;FOOTSWITCH4 FUNCTION FLAGS.
;
NORPNR1 equ 0x5C ;Ext. 7 BYTE NRPN SEND ROUTINE.
NORPNR2 equ 0x5D ;Ext. 7 BYTE NRPN SEND ROUTINE.
NORPNR3 equ 0x5E ;Ext. 7 BYTE NRPN SEND ROUTINE.
NORPNR4 equ 0x5F ;Ext. 7 BYTE NRPN SEND ROUTINE.
NORPNR5 equ 0x60 ;Ext. 7 BYTE NRPN SEND ROUTINE.
NORPNR6 equ 0x61 ;Ext. 7 BYTE NRPN SEND ROUTINE.
NORPNR7 equ 0x62 ;Ext. 7 BYTE NRPN SEND ROUTINE.
;
GENFLAGS3 equ 0x63 ;GENERAL FLAGS REGISTER.
TEMP2 equ 0x64 ;
;
RECFLAGS1 equ 0x65 ;BASS A EEPROM RECORD FLAGS.
RECFLAGS2 equ 0x66 ;CHORD A EEPROM RECORD FLAGS.
RECFLAGS3 equ 0x67 ;RH1 EEPROM RECORD FLAGS.
RECFLAGS4 equ 0x68 ;RH1 EEPROM RECORD FLAGS.
RECFLAGS5 equ 0x69 ;RH2 EEPROM RECORD FLAGS.
RECFLAGS6 equ 0x6A ;RH2 EEPROM RECORD FLAGS.
RECFLAGS7 equ 0x6B ;BASS B EEPROM RECORD FLAGS.
RECFLAGS8 equ 0x6C ;CHORD B EEPROM RECORD FLAGS.
;
BYTE1OF3 equ 0x6D ;
BYTE2OF3 equ 0x6E ;
BYTE3OF3 equ 0x6F ;
TEMPHOLD equ 0x70 ;
PORTATIMEH equ 0x71 ;
SNDTRI equ 0x72 ;
;
BASS_FLAGS equ 0x73 ;Shows which bass button active.
CHORD_FLAGS equ 0x74 ;Shows which chord button active.
CHORUSENDLEV equ 0x75 ;CHORUS SEND LEVEL HOLD.
PERCON2TIME equ 0x76 ;
PERCON3TIME equ 0x77 ;
B1_PERCVOL equ 0x78 ;PERCUSSION VOL LEVEL HOLD.
;FSW4ONTIME equ 0x79 ;FSW4 HOLD-ON TIMER.
GENFLAGS4 equ 0x7A ;VARIOUS FLAGS.
;FSW4FLASH equ 0x7B ;
;FSW4ONTIMEA equ 0x7C ;FSW4 HOLD-ON TIMER UNITS.
;
EMFLASHTIME equ 0x7D ;EDITMODE LED FLASH TIMER.
GENFLAGS12 equ 0x7E ;BEND EDIT FLAGS.
;PRTAONTIMEA equ 0x7F ;TREM HOLD-ON TIMER UNITS.
;
GENFLAGS6 equ 0x80 ;GENERAL FLAGS REG 6.
LEVEL_ADJ_CH1 equ 0x81 ;INSTRUMENT LEVEL BALANCE CH1.
TREMSPEED equ 0x82 ;TREMELO SPEED VALUE HOLD.
SYSX11BYTE7 equ 0x83 ;BYTE 7 OF 11 BYTE SYSX SEND.
TREMDEPTH equ 0x84 ;TREMELO DEPTH VALUE HOLD.
LEVEL_ADJ_CH4 equ 0x85 ;INSTRUMENT LEVEL BALANCE CH4.
LEVEL_ADJ_CH5 equ 0x86 ;INSTRUMENT LEVEL BALANCE CH5.
T0INTWHOLD equ 0x87 ;
T0INTSTATHOLD equ 0x88 ;
RH11_OFF_FLAGS equ 0x89 ;
RH21_ON_FLAGS equ 0x8A ;
RH11ONOFF_FLAGS equ 0x8B ;
GENFLAGS7 equ 0x8C ;GENERAL FLAGS REG 7.
RH12ONOFF_FLAGS equ 0x8D ;
RH21ONOFF_FLAGS equ 0x8E ;
RH22ONOFF_FLAGS equ 0x8F ;
TEMPS equ 0x90 ;
RH21_OFF_FLAGS equ 0x91 ;TREMOLO
GENFLAGS8 equ 0x92 ;GENERAL FLAGS REG 8.
MRPT01SB11 equ 0x93 ;
MRPT01DB11 equ 0x94 ;
MRPT01DB21 equ 0x95 ;
MRPT01SB12 equ 0x96 ;
MRPT01DB12 equ 0x97 ;
MRPT01DB22 equ 0x98 ;
;PB_TIME equ 0x99 ;PITCH-BEND TIMER.
;PB_COUNT equ 0x9A ;PITCH-BEND TIME.
PB_DEPTH_HI equ 0x9B ;PITCH-BEND DEPTH. MSDs
PB_DEC_LO equ 0x9C ;PITCH-BEND DEC VALUE.
PBTIMEHOLD equ 0x9D ;PBEND.
PB_DEPTH_LO equ 0x9E ;PITCH-BEND DEPTH. LSDs
PB_DEC_HI equ 0x9F ;PITCH-BEND DEC VALUE.
C1_PERCVOL equ 0xA0 ;CHORDS PERCUSSION VOL LEVEL HOLD.
CH2DB2HOLD equ 0xA1 ;CHAN 2 DATA BYTE 2 HOLD.
CH3DB2HOLD equ 0xA2 ;CHAN 3 DATA BYTE 2 HOLD.
GENFLAGS9 equ 0xA3 ;GENERAL FLAGS REGISTER 9.
MTUNDAT1 equ 0xA4 ;MASTER TUNE DATA 1.
MTUNDAT2 equ 0xA5 ;MASTER TUNE DATA 2.
MTUNDAT3 equ 0xA6 ;MASTER TUNE DATA 3.
MTUNDAT4 equ 0xA7 ;MASTER TUNE DATA 4.
MTUNEDTIME equ 0xA8 ;MASTER TUNE BUTTON TIME.
MTUNEDTIMEA equ 0xA9 ;MASTER TUNE BUTTON TIME.
MTUNESCAN_HOLD equ 0xAA ;MASTER TUNE SELECT BUTTON.
MTUNCTRL_HOLD equ 0xAB ;MASTER TUNE CONTROL VALUE HOLD.
MTUNFLASH equ 0xAC ;MASTER TUNE LED FLASH RATE HOLD.
DRM1SCAN_HOLD equ 0xAD ;DRUM1 VOL EDIT.
DRM2SCAN_HOLD equ 0xAE ;DRUM2 VOL EDIT.
DRM3SCAN_HOLD equ 0xAF ;DRUM3 VOL EDIT
DRMEDTIME equ 0xB0 ;DRUM1 VOL EDIT.
GENFLAGS10 equ 0xB1 ;GENERAL FLAGS REG.
DRM1EDTIME equ 0xB2 ;DRUMS1 HOLD IN BUTTON TIME.
POT8FILT equ 0xB3 ;POT7 INPUT FILTER.
POT7FILT equ 0xB4 ;POT6 INPUT FILTER.
DRM1EDTIMEA equ 0xB5 ;DRUMS1 HOLD IN BUTTON TIME.
POT6FILT equ 0xB6 ;POT4 INPUT FILTER.
POT5FILT equ 0xB7 ;POT2 INPUT FILTER.
C2_PERCVOL equ 0xB8 ;CHORDS2 PERCUSSION VOL LEVEL HOLD.
C3_PERCVOL equ 0xB9 ;CHORDS3 PERCUSSION VOL LEVEL HOLD.
B2_PERCVOL equ 0xBA ;BASS2 PERCUSSION VOL LEVEL HOLD.
B3_PERCVOL equ 0xBB ;BASS3 PERCUSSION VOL LEVEL HOLD.
BASS_ON_FLAGS equ 0xBC ;
BASS_OFF_FLAGS equ 0xBD ;
CHORD_ON_FLAGS equ 0xBE ;
CHORD_OFF_FLAGS equ 0xBF ;
RH22_ON_FLAGS equ 0xC0 ;
RH22_OFF_FLAGS equ 0xC1 ;
POT4FILT equ 0xC2 ;POT7 INPUT FILTER.
POT3FILT equ 0xC3 ;POT6 INPUT FILTER
POT2FILT equ 0xC4 ;POT7 INPUT FILTER.
POT1FILT equ 0xC5 ;POT6 INPUT FILTER
MIDILEDFLASH equ 0xC6 ;
GENFLAGS11 equ 0xC7 ;GENERAL FLAGS REG.
SOLOVAL equ 0xC8 ;SOLO LEVEL VALUE.
RH12_OFF_FLAGS equ 0xC9 ;
RH12_ON_FLAGS equ 0xCA ;
SOLOONTIME equ 0xCB ;SOLO ROUTINE TIMERS.
SOLOONTIMEA equ 0xCC ;SOLO ROUTINE TIMERS.
SOLOVALPOT equ 0xCD ;SOLO ROUTINE
BENDVALPOT equ 0xCE ;HOLDS BEND AMOUNT.
BENDTIMPOT equ 0xCF ;HOLDS BEND TIME.
RH12SCANHOLD equ 0xD0 ;
RH11_ON_FLAGS equ 0xD1 ;
LEVEL_ADJ_CH7 equ 0xD2 ;RH1 3rd LAYER.
PBBUTTIME equ 0xD3 ;BEND BUTTON TIMER.
PBBUTTIMEA equ 0xD4 ;BEND BUTTON TIMER MULTIPLIER.
;
;0x200 -> 0x2FF IS MIDI-DATA-IN BUFFER. (0X2F4 -> 0x2FF USED BY ICD2 DEBUGGER,
; IGNORED AS BUFFER WILL NOT NORMALLY FILL UP THIS FAR - BUT BEWARE IF USING DEBUGGER.)
;...............................................................................................................................................................................................................
org 0x0000 ;RESET POSITION.
BRA STARTUP ;
;.......................................................................
org 0x0008 ;LO PRIORITY INTERRUPTS POSITION.
BTFSC PIR1, RCIF ;WAS INT INITIATED BY USART Rcv ?
GOTO USARTRCVINTSRV ;YES.
BTFSC INTCON, TMR0IF ;WAS INT INITIATED BY TIMER0 ?
GOTO TIMER0INTSRV ;YES.
;
BRA STARTUP ;ERROR ! - AS NO OTHER INTS SET.
;.......................................................................
org 0x0018
BRA STARTUP ;HI PRIORITY INTERRUPTS POSITION.
;-----------------------------------------------------------------------
STARTUP: ;
BSF RCON, POR ;POWER-ON RESET STATUS BIT.
BSF RCON, BOR ;RESET BROWN-OUT STATUS BIT.
;
CLRF LATA ;
CLRF LATB ;
CLRF LATC ;~RESET FOR AUDIO SYNTH (RC4) IS LO.
CLRF LATD ;
CLRF LATE ;
;
MOVLW 0x3F ;RA6 & 7 SET AS OUTPUT.
MOVWF TRISA ;
;
MOVLW 0x40 ;ALL SET AS ANALOGUE INPUTS. Fosc/16.
MOVWF ADCON1 ;LEFT JUSTIFIED A/D O/P.
MOVLW B'10110001' ;AD on. Fosc/64. AN6 = BASS VOL.
MOVWF ADCON0 ;
;
MOVLW 0x00 ;RB0->7 SET AS OUTPUTS.
MOVWF TRISB ;
;
MOVLW 0xE7 ;RC0,1,2,5,6,7 SET AS INPUTS.
MOVWF TRISC ;
;
MOVLW 0xFF ;RD0->7 SET AS INPUTS.
MOVWF TRISD ; (0x7F FOR RD7 AS O/P).
;
MOVLW 0x07 ;RE0,1,2 SET AS (ANALOGUE) INPUTS.
MOVWF TRISE ;
;.....................................................................
CLEAR_ALL_RAM: ;
LFSR 0, 0x000 ;BANK 0.
CLEARLOOP1: ;
CLRF POSTINC0 ;
BTFSS FSR0H, 0 ;FSR0 = FSR0H + FSR0L (8BITS EACH).
BRA CLEARLOOP1 ; (12 BITS USED IN TOTAL).
;...................................................................
MOVLW 0xB1 ;2ms INTERRUPT TIME.
MOVWF TMR0H ;
MOVLW 0xE0 ;2ms INTERRUPT TIME.
MOVWF TMR0L ;
;
MOVLW 0x88 ;ENABLE TIMER0 AS 16 BIT.
MOVWF T0CON ; NO PRESCALER.
;
MOVLW 0xA0 ;ENABLE TMR0 OVERFLOW INTERRUPT.
MOVWF INTCON ;E0
BCF INTCON2, TMR0IP ;TIMER0 LOW PRIORITY INT.
;.......................................................................
SYNTHRESET2: ;
;BCF PORTC, 4 ;~RESET(RC4) IS ALREADY LOW.
CLRF DISPLAYREG ;
BSF DISPLAYREG, MIDI_LED ;
MOVLW 0x08 ;
MOVWF PORTB ;SEND 1 TO RB3, SETS LED TO MIDI_LED.
BCF PORTC, 3 ;SEND 0 TO RC3, ENABLE LED COMMON.
;
MOVLW 0xFF ;>128ms. LONGISH DELAY TO KEEP SWITCH ON NOISES APART.
MOVWF GENTIME1 ;
SYNRSWAIT: ;WAIT PERIOD FOR ~RESET.
TSTFSZ GENTIME1 ;
BRA SYNRSWAIT ;
BSF PORTC, 4 ;~RESET(RC4) IS HI (I.E. RUN).
ISRUNSET: ;WAIT FOR SYNTH-RUNNING SIGNAL.
; (ATSAM9733 OUTPUT FLAG).
BTFSS PORTC, 5 ;IS RUN SET (YES->SYNTH IS READY).
BRA ISRUNSET ;NO, WAIT FOR RUN SIGNAL FROM SYNTH.
;.......................................................................
MOVLW 0x80 ;MORE THAN 128ms SYNTH CHIP SETTLING TIME.
MOVWF GENTIME1 ;THIS IS SYNTH SETTLING DELAY WAIT
SYNRSWAIT2: ; PERIOD FOR BEFORE SENDING DATA.
TSTFSZ GENTIME1 ;
BRA SYNRSWAIT2 ;
BSF PORTB, GREEN ;SEND 1 TO RB4, SETS LED TO GREEN.
BSF GENFLAGS10, DIP_CHNG_LED ;SEND 1 TO RB4, SETS LED TO GREEN.
;.......................................................................
USARTSETUP: ;
MOVLW D'19' ;USART. FOR 31.25KBaud.(04).
MOVWF SPBRG ;BAUDRATE GEN VALUE.
BCF TXSTA, BRGH ;Select LOW baud rate
;
BSF RCSTA, CREN ;CONTINUOUS RECEIVE ENABLE.
BSF RCSTA, SPEN ;SERIAL PORT ENABLE.
;
BCF PIR1, RCIF ;Clear RCIF Interrupt Flag
BSF PIE1, RCIE ;Set RCIE Interrupt Enable
;....................................
LFSR 1, 0x200 ;MOVE START OF BANK TO FSR1.
LFSR 2, 0x200 ;MOVE START OF BANK TO FSR2.
;....................................
MOVF RCREG, W ;CLEAR RCIF.
BSF PIR1, TXIF ;TXIF
BSF INTCON, PEIE ;Enable peripheral interrupts.
BSF TXSTA, TXEN ;
BASIC_SETUP_COMPLETE: ;
;========================================================================================================
SRTCONT1: ;START - REGISTER SETUPS.
MOVLW 0x08 ;
MOVWF POTSCNCNT ;
;
CLRF BASSVOLPOT ;
CLRF BASSFXPOT ;
CLRF CHORDVOLPOT ;
CLRF CHORDFXPOT ;
CLRF RH1VOLPOT ;
CLRF RH1FXPOT ;
CLRF RH2VOLPOT ;
CLRF RH2FXPOT ;
;
CLRF MIDISTAT ;MIDI BYTE SORT, FLAG REG.
CLRF MIDISTAT2 ;MIDI BYTE SORT, FLAG REG.
CLRF GENFLAGS1 ;MIDI BYTE SORT, FLAG REG.
CLRF GENFLAGS2 ;MIDI BYTE SORT, FLAG REG.
CLRF GENFLAGS3 ;GENERAL FLAGS REG 3.
CLRF GENFLAGS4 ;GENERAL FLAGS REG 4.
CLRF GENFLAGS5 ;GENERAL FLAGS REG 5.
CLRF GENFLAGS6 ;GENERAL FLAGS REG 6.
CLRF GENFLAGS7 ;GENERAL FLAGS REG 7.
CLRF GENFLAGS8 ;GENERAL FLAGS REG 8.
CLRF GENFLAGS9 ;GENERAL FLAGS REG 9.
CLRF GENFLAGS10 ;GENERAL FLAGS REG 10.
CLRF GENFLAGS11 ;GENERAL FLAGS REG 11.
CLRF GENFLAGS12 ;GENERAL FLAGS REG 12.
CLRF MIDIBYTCNT ;MIDI BUFFER BYTE COUNTER.
CLRF SCANDEL ;COUNTER.
CLRF BASSCANHOLD ;BASS SCAN HOLD.
CLRF CHORDSCANHOLD ;CHORDS SCAN HOLD.
CLRF RH11SCANHOLD ;
CLRF RH17SCANHOLD ;
CLRF RH21SCANHOLD ;
CLRF RH27SCANHOLD ;
CLRF FSWINHOLD ;FSW SCAN HOLD.
CLRF DRM1SCAN_HOLD ;
CLRF DRM2SCAN_HOLD ;
CLRF DRM3SCAN_HOLD ;
;
CLRF POT1FILT ;CONTROL POTENTIOMETER FILTERS.
CLRF POT2FILT ;CONTROL POTENTIOMETER FILTERS.
CLRF POT3FILT ;CONTROL POTENTIOMETER FILTERS.
CLRF POT4FILT ;CONTROL POTENTIOMETER FILTERS.
CLRF POT5FILT ;CONTROL POTENTIOMETER FILTERS.
CLRF POT6FILT ;CONTROL POTENTIOMETER FILTERS.
CLRF POT7FILT ;CONTROL POTENTIOMETER FILTERS.
CLRF POT8FILT ;CONTROL POTENTIOMETER FILTERS.
;
CLRF RECFLAGS1 ;
CLRF RECFLAGS2 ;
CLRF RECFLAGS3 ;
CLRF RECFLAGS4 ;
CLRF RECFLAGS5 ;
CLRF RECFLAGS6 ;
;
CLRF BASS_ON_FLAGS ;
CLRF BASS_OFF_FLAGS ;
CLRF CHORD_ON_FLAGS ;
CLRF CHORD_OFF_FLAGS ;
CLRF RH11_ON_FLAGS ;
CLRF RH11_OFF_FLAGS ;
CLRF RH12_ON_FLAGS ;
CLRF RH12_OFF_FLAGS ;
CLRF RH22_ON_FLAGS ;
CLRF RH22_OFF_FLAGS ;
;
CLRF RH11ONOFF_FLAGS ;
CLRF RH12ONOFF_FLAGS ;
CLRF RH21ONOFF_FLAGS ;
CLRF RH22ONOFF_FLAGS ;
;
CALL FSW1REGCLEAR ;
CALL FSW2REGCLEAR ;
CALL FSW3REGCLEAR ;
CALL FSW4REGCLEAR ;
;++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
;========================================================================================================
ATSAMTEST: ;ATSAM9773 INTERNAL TEST, IF
CLRF PORTB ; RH2-7 & RH2-12 HELD DOWN AT POWER UP.
MOVLW 0x01 ; RESULT IS 3 SINE TONES :-
MOVWF PORTB ;
NOP ;
NOP ;
NOP ;
NOP ;
MOVF PORTD, W ; 1st. OF 1.18KHz. 2nd. of 876Hz.
ANDLW 0x7F ; 3rd of 295hz continuous for
XORLW 0x21 ; internal diags pass.
BNZ ATSAMTESTEND ;
MOVLW 0xB0 ;SENDS NRPN 3751=23h
MOVWF NORPNR1 ;
MOVLW 0x63 ;CONTROL #99.
MOVWF NORPNR2 ;
MOVLW 0x37 ;VALUE.
MOVWF NORPNR3 ;
MOVLW 0x62 ;CONTROL #98.
MOVWF NORPNR4 ;
MOVLW 0x51 ;VALUE
MOVWF NORPNR5 ;
MOVLW 0x06 ;CONTROL #6.
MOVWF NORPNR6 ;
MOVLW 0x23 ;VALUE.
MOVWF NORPNR7 ;
CALL NORPN7BYTE ;
BSF DISPLAYREG, GREEN ;GREEN LED ONLY LEFT ON.
BCF DISPLAYREG, MUTE1LED ;MUTE 1 LED.
BCF DISPLAYREG, MUTE2LED ;MUTE 2 LED.
BCF DISPLAYREG, MIDI_LED ;SET RB4, MIDI_LED LED TO OFF.
MOVFF DISPLAYREG, PORTB ;
BCF PORTC, 3 ;ENABLE LED COM BUSS.
;
ATSAMTESTLOOP: ;
CLRF PORTB ; RH2-8 & RH2-11 HELD DOWN TO EXIT.
MOVLW 0x01 ; RESULT IS 3 SINE TONES :-
MOVWF PORTB ;
NOP ;
NOP ;
NOP ;
NOP ;
MOVF PORTD, W ;
ANDLW 0x7F ;
XORLW 0x12 ;PRESS RH2-8 & RH2-11 TO EXIT TEST TONE LOOP.
BNZ ATSAMTESTLOOP ;TONES CONTINUE UNTIL RELEASE BUTTONS PRESSED.
;........................................................................................................................................................................................
ATSAMTESTEND: ;
BCF PORTC, 4 ;~RESET(RC4) IS LO.
CLRF DISPLAYREG ;
BSF DISPLAYREG, MIDI_LED ;
MOVLW 0x08 ;
MOVWF PORTB ;SEND 1 TO RB3, SETS LED TO MIDI_LED.
BCF PORTC, 3 ;SEND 0 TO RC3, ENABLE LED COMMON.
;
MOVLW 0x60 ;>128ms.
MOVWF GENTIME1 ;
ASYNRSWAIT: ;WAIT PERIOD FOR ~RESET.
TSTFSZ GENTIME1 ;
BRA ASYNRSWAIT ;
BSF PORTC, 4 ;~RESET(RC4) IS HI (I.E. RUN).
AISRUNSET: ;WAIT FOR SYNTH-RUNNING SIGNAL.
; (ATSAM9733 OUTPUT FLAG).
BTFSS PORTC, 5 ;IS RUN SET (YES->SYNTH IS READY).
BRA AISRUNSET ;NO, WAIT FOR RUN SIGNAL FROM SYNTH.
;.......................................................................
MOVLW 0x80 ;MORE THAN 128ms SYNTH CHIP SETTLING TIME..
MOVWF GENTIME1 ;THIS IS SYNTH SETTLING DELAY WAIT
ASYNRSWAIT2: ; PERIOD FOR BEFORE SENDING DATA.
TSTFSZ GENTIME1 ;
BRA ASYNRSWAIT2 ;
BSF PORTB, GREEN ;SEND 1 TO RB4, SETS LED TO GREEN.
BSF GENFLAGS10, DIP_CHNG_LED ;SEND 1 TO RB4, SETS LED TO GREEN.
;========================================================================================================
RHTOBASSCHECK: ;CONVERT RH1 (CH1) TO BASS (CH3).
CLRF PORTB ; So called orchestral bass mode .
MOVLW 0x08 ; RH11 & RH16 HELD DOWN AT POWER UP.
MOVWF PORTB ;
NOP ;
NOP ;
NOP ;
NOP ;
NOP ;
MOVF PORTD, W ;
ANDLW 0x7F ;
XORLW 0x21 ;
BNZ RHTOBASSCHKEND ;
MOVLW 0xF0 ;EEPROM ADDRESS.
MOVWF EEADR ;
BCF EECON1, EEPGD ;SELECT DATA EEPROM MEMORY.
BCF EECON1, CFGS ;
BSF EECON1, RD ;ENABLE EEPROM READ.
MOVF EEDATA, W ;VALUE IN WREG.
;
BTG WREG, 0 ;
;
MOVWF EEDATA ;VALUE TO WRITE.
MOVLW 0xF0 ;
MOVWF EEADR ;DATA MEMORY TO WRITE TO.
CALL EEPROM_WRITE ;
RHTOBASSCHKEND: ;
CLRF PORTB ;
;--------------------------------------------------------------------------------------------------------------------------------------------------------------------------
CAVAGCOMPATCHECK: ;COMPATIBILITY WITH CAVAGNOLO SYSTEM
CLRF PORTB ; ON Ch16, 15, 14.
MOVLW 0x02 ; RH21 & RH26 HELD DOWN AT POWER UP.
MOVWF PORTB ;
NOP ;
NOP ;
NOP ;
NOP ;
MOVF PORTD, W ;
ANDLW 0x7F ;
XORLW 0x21 ;
BNZ CAVAGCOMPATEND ;
MOVLW 0x00 ;ENABLE 'CAVAGNOLO' COMPATIBILITY.
MOVWF EEDATA ;VALUE TO WRITE.
MOVLW 0xF9 ;
MOVWF EEADR ;DATA MEMORY TO WRITE TO.
CALL EEPROM_WRITE ;
CAVAGCOMPATEND: ;
CLRF PORTB ;
;----------------------------------------------------------------------------------------------------------------------------------------------------------------------------
GMMODULESET: ;
MOVLW 0x01 ;RH2MUTE HELD DOWN AT POWER UP.
MOVWF PORTB ; RESULT IS GM MODULE.
NOP ;
NOP ;
MOVF PORTD, W ;
ANDLW 0x7F ;
XORLW 0x40 ;
BNZ GMMODEND ;
BCF DISPLAYREG, MUTE1LED ;MUTE LED.
BCF DISPLAYREG, MUTE2LED ;MUTE LED.
BCF PORTC, 3 ;ENABLE LED COM BUSS.
CLRF MIDIBYTCNT ;MIDI BUFFER BYTE COUNTER.
GMJ1: ;.....................
TSTFSZ LEDFLASH ;
BRA GMLEDFMJ1 ;
BCF DISPLAYREG, MIDI_LED ;SET RB4, MIDI_LED LED TO OFF.
BSF DISPLAYREG, GREEN ;TURN ON GREEN
GMLEDFMJ1: ;
MOVFF DISPLAYREG, PORTB ;
;......................
TSTFSZ MIDIBYTCNT ;ARE THERE ANY BYTES IN BUFFER ?
BRA GMIDIFILJ0 ;YES.
GOTO GMJ1 ;NO. -> EXIT TO WAIT.
GMIDIFILJ0: ;.......................
MOVF POSTINC2, W ;GET BYTE FROM BUFFER.
MOVWF MIDITEMP1 ;HOLD INPUT BYTE.
BTFSC FSR2H, 0 ;TEST BUFFER INDEX.
LFSR 2, 0x200 ;MIDI BUFFER START >0x2FF.
DECF MIDIBYTCNT ;HOLDS NUMBER OF BYTES TO GO.
GMIDISNGJ1: ;
BTFSS TXSTA, TRMT ;SET WHEN TxShiftReg IS EMPTY.
BRA GMIDISNGJ1 ;
MOVFF MIDITEMP1, TXREG ;SEND MIDI.
;
BSF DISPLAYREG, MIDI_LED ;MIDI_LED LED FLASHES WITH MIDI BYTES.
BCF DISPLAYREG, GREEN ;GREEN LED ONLY LEFT ON.
MOVLW 0x10 ;LED DIP TIME.
MOVWF LEDFLASH ;
BRA GMJ1 ;
;.......................................................................
GMMODEND: ;
CLRF PORTB ;
;=================================================================================================
BASSBUTTON_ON_POWERUP: ;REJECT ALL MESSAGES BUT NOTES - UNLESS YOU :-
MOVLW 0x20 ; HOLD Bass BANK CHANGE, ON POWER-UP,
MOVWF PORTB ; TO
NOP ;
NOP ;
NOP ;
NOP ;
NOP ;
MOVF PORTD, W ;IS BASS BANK BUTTON ON ?
ANDLW 0x7F ;
XORLW 0x40 ;
BNZ BBPWRUPEND ;
;
MOVLW 0xF3 ;EEPROM ADDRESS.
MOVWF EEADR ;
BCF EECON1, EEPGD ;SELECT DATA EEPROM MEMORY.
BCF EECON1, CFGS ;
BSF EECON1, RD ;ENABLE EEPROM READ.
MOVF EEDATA, W ;VALUE IN WREG.
;
BTG WREG, 6 ;MIDI NOTE ON/OFF INFO ONLY.
;
MOVWF EEDATA ;VALUE TO WRITE.
MOVLW 0xF3 ;
MOVWF EEADR ;DATA MEMORY TO WRITE TO.
CALL EEPROM_WRITE ;
BBPWRUPEND: ;
;=================================================================================================
EDIT_MODE_SET: ;SOUND TRY-OUT MODE SET.
MOVLW 0x04 ;HOLD DOWN RH1 MUTE AT POWER UP.
MOVWF PORTB ;
NOP ;
NOP ;
NOP ;
NOP ;
MOVF PORTD, W ;
ANDLW 0x7F ;
MOVWF TEMPHOLD ;
XORLW 0x40 ;BASS OCT BUTTON HELD.
BNZ EMSTST2 ;
BSF MIDISTAT, SNDTRY_FLAG ;SOUND TRY OUT MODE FLAG.
;
MOVLW 0x00 ;GM BANK SEL MSB.
MOVWF EEDATA ;VALUE TO WRITE.
MOVLW 0xFD ;
MOVWF EEADR ;DATA MEMORY TO WRITE TO.
CALL EEPROM_WRITE ;
MOVLW 0x00 ;GM BANK SEL MSB.
MOVWF EEDATA ;VALUE TO WRITE.
MOVLW 0xFC ;
MOVWF EEADR ;DATA MEMORY TO WRITE TO.
CALL EEPROM_WRITE ;
BRA EMSEND ;
EMSTST2: ;
MOVF TEMPHOLD, W ;
XORLW 0x60 ;RH1 MUTE & RH112 BUTTONS HELD.
BNZ EMSEND ;
BSF MIDISTAT, SNDTRY_FLAG ;SOUND TRY OUT MODE FLAG.
;
MOVLW 0x7F ;MT32 BANK SEL MSB.
MOVWF EEDATA ;VALUE TO WRITE.
MOVLW 0xFD ;
MOVWF EEADR ;DATA MEMORY TO WRITE TO.
CALL EEPROM_WRITE ;
MOVLW 0x7F ;MT32 BANK SEL MSB.
MOVWF EEDATA ;VALUE TO WRITE.
MOVLW 0xFC ;
MOVWF EEADR ;DATA MEMORY TO WRITE TO.
CALL EEPROM_WRITE ;
EMSEND: ;
CLRF PORTB ;
;=================================================================================================
RACFE: ;REASSIGN CONTROLS FOR SOUND EDITING. - NOT IMPLEMENTED AS YET.................
MOVLW 0x02 ;HOLD RH2-OCT ON POWERUP + ANOTHER
MOVWF PORTB ; BUTTON TO SET SOUND EDIT.
NOP ;
NOP ;
NOP ;
NOP ;
MOVF PORTD, W ;
ANDLW 0x7F ;
XORLW 0x40 ;IS RH2-OCT BUTTON ON ?
BNZ RACFE_END ;................
MOVLW 0x20 ;BASS 1.
MOVWF PORTB ; BUTTON TO SET SOUND EDIT.
NOP ;
NOP ;
NOP ;
NOP ;
MOVF PORTD, W ;
ANDLW 0x7F ;
XORLW 0x01 ;IS BASS 1 BUTTON ON ?
BNZ RACFE_CHORD ;
BSF GENFLAGS5, EDBASBIT ;
BRA RACFE_END ;................
RACFE_CHORD: ;
MOVLW 0x10 ;CHORD 1.
MOVWF PORTB ; BUTTON TO SET SOUND EDIT.
NOP ;
NOP ;
NOP ;
NOP ;
MOVF PORTD, W ;
ANDLW 0x7F ;
XORLW 0x01 ;IS CHORD 1 BUTTON ON ?
BNZ RACFE_RH1 ;
BSF GENFLAGS5, EDCHDBIT ;
BRA RACFE_END ;................
RACFE_RH1: ;
MOVLW 0x08 ;RH1.
MOVWF PORTB ; BUTTON TO SET SOUND EDIT.
NOP ;
NOP ;
NOP ;
NOP ;
MOVF PORTD, W ;
ANDLW 0x7F ;
XORLW 0x01 ;IS RH1-1 BUTTON ON ?
BNZ RACFE_RH2 ;
BSF GENFLAGS5, EDRH1BIT ;
BRA RACFE_END ;................
RACFE_RH2: ;
MOVLW 0x02 ;RH2.
MOVWF PORTB ; BUTTON TO SET SOUND EDIT.
NOP ;
NOP ;
NOP ;
NOP ;
MOVF PORTD, W ;
ANDLW 0x7F ;
XORLW 0x01 ;IS RH2-1 BUTTON ON ?
BNZ RACFE_RH2ONLY ;
BSF GENFLAGS5, EDRH2BIT ;
BRA RACFE_END ;................
RACFE_RH2ONLY: ;
;................
RACFE_END: ;
CLRF PORTB ;
;=========================================================================================================
FACTORY_PRESETS: ;ARE SECURITY BYTES IN PLACE ?
MOVLW 0xAA ;
MOVWF TEMP1 ;
MOVLW 0xFF ;EEPROM CORRUPT1 ADDRESS.
MOVWF EEADR ;
BCF EECON1, EEPGD ;SELECT DATA EEPROM MEMORY.
BCF EECON1, CFGS ;
BSF EECON1, RD ;ENABLE EEPROM READ.
MOVF EEDATA, W ;VALUE IN WREG.
CPFSEQ TEMP1 ;
BRA LOADPRESETS ;
;
MOVLW 0x55 ;
MOVWF TEMP1 ;
MOVLW 0xFE ;EEPROM CORRUPT2 ADDRESS.
MOVWF EEADR ;
BCF EECON1, EEPGD ;SELECT DATA EEPROM MEMORY.
BCF EECON1, CFGS ;
BSF EECON1, RD ;ENABLE EEPROM READ.
MOVF EEDATA, W ;VALUE IN WREG.
CPFSEQ TEMP1 ;
BRA LOADPRESETS ;
;............................................................................
MOVLW 0x10 ;HOLD CHORD BANK ON POWERUP.
MOVWF PORTB ;TO WRITE PRESETS TO EEPROM.
NOP ;
NOP ;
NOP ;
NOP ;
NOP ;
MOVF PORTD, W ;IS CHORD BANK BUTTON ON ?
ANDLW 0x7F ;
XORLW 0x40 ;
BZ LOADPRESETS ;
GOTO PRELOADEND ;
LOADPRESETS: ;...........................................................................................................................................
MOVLW 0x7C ;Top EEProm address +1.
MOVWF TEMP1 ;
PL1: ;
DECF TEMP1 ;
MOVFF TEMP1, TEMP2 ;
CALL FACTORYLOAD ;GET INSTRUMENT NUMBER IN WREG.
MOVWF EEDATA ;VALUE TO WRITE.
MOVF TEMP1, W ;
MOVWF EEADR ;DATA MEMORY TO WRITE TO.
CALL EEPROM_WRITE ;
TSTFSZ TEMP1 ;
BRA PL1 ;WRITE LOOP.
;............................................................................................................................................
MOVLW 0xAA ;CHECK-BYTE1.
MOVWF EEDATA ;VALUE TO WRITE.
MOVLW 0xFF ;
MOVWF EEADR ;DATA MEMORY TO WRITE TO.
CALL EEPROM_WRITE ;
MOVLW 0x55 ;CHECK-BYTE2.
MOVWF EEDATA ;VALUE TO WRITE.
MOVLW 0xFE ;
MOVWF EEADR ;DATA MEMORY TO WRITE TO.
CALL EEPROM_WRITE ;
;
MOVLW 0x00 ;BANK SEL LSB.
MOVWF EEDATA ;VALUE TO WRITE.
MOVLW 0xFD ;
MOVWF EEADR ;DATA MEMORY TO WRITE TO.
CALL EEPROM_WRITE ;
MOVLW 0x00 ;BANK SEL MSB.
MOVWF EEDATA ;VALUE TO WRITE.
MOVLW 0xFC ;
MOVWF EEADR ;DATA MEMORY TO WRITE TO.
CALL EEPROM_WRITE ;
;
MOVLW 0x20 ;PORTAMENTO PRESET VALUE.
MOVWF EEDATA ;VALUE TO WRITE.
MOVLW 0xFB ;
MOVWF EEADR ;DATA MEMORY TO WRITE TO.
CALL EEPROM_WRITE ;
;
MOVLW 0x60 ;PERCUSSION VOLUME LEVEL.
MOVWF EEDATA ;VALUE TO WRITE.
MOVLW 0xFA ;
MOVWF EEADR ;DATA MEMORY TO WRITE TO.
CALL EEPROM_WRITE ;
;
MOVLW 0x01 ;DISABLE'CAVAGNOLO'COMPATIBILITY
MOVWF EEDATA ;VALUE TO WRITE.
MOVLW 0xF9 ;
MOVWF EEADR ;DATA MEMORY TO WRITE TO.
CALL EEPROM_WRITE ;
;VERSION WAS HERE F5,F7,F8 NOW AT C0 -> C3.
;................................................................
MOVLW 0x58 ;TREM DEPTH DEFAULT VALUE.
MOVWF EEDATA ;VALUE TO WRITE.
MOVLW 0xF5 ;
EXIT TO INTERNAL DATA SEND.
MIDIFILJ0: ;.......................
MOVLW 0xFF ;ANY EXTERNAL INPUT BYTES WILL
MOVWF AS_TIMER ; RESET ACTIVE-SENSING TIMER.
;......................
MOVF POSTINC2, W ;GET BYTE FROM BUFFER.
MOVWF MIDITEMP1 ;HOLD INPUT BYTE.
BTFSC FSR2H, 0 ;TEST BUFFER INDEX.
LFSR 2, 0x200 ;MIDI BUFFER START >0x2FF.
DECF MIDIBYTCNT ;HOLDS NUMBER OF BYTES TO GO.
FIRSTIMEIN: ;.....................................................................
BTFSS MIDISTAT, NOSTAT_FLAG ;WAIT FOR A STATUS BYTE FLAG,1st
BRA MNOSTAT ; TIME IN.
GOTO MFIRST_TIME ;
MNOSTAT: ;
BTFSS MIDITEMP1, 7 ;IS IT A STATUSBYTE ?
GOTO MIDITHRUND ;NO - EXIT. >>>>>>>>>>>>>
BSF MIDISTAT, NOSTAT_FLAG ;YES. FLAG IT.
MFIRST_TIME: ;.....................................................................
BTFSS MIDITEMP1, 7 ;IS IT A STATUS OR DATABYTE ?
GOTO M_DATA_BYTES ;DATABYTE.
;..................................................................
SETF AS_TIMER ;ASCERTAIN SORT STATE.
;STATUS RESETS ACTIVE SENSING TIMER.
ANDLW 0xF8 ;
XORLW 0xF8 ;REAL TIME.
BNZ MIDINOTRT ;IS IT A REAL TIME STATUS BYTE
MOVLW 0xFE ;0xFE = ACTIVE SENSING.
CPFSEQ MIDITEMP1 ;
BRA MRTND ;
BSF MIDISTAT, AS_FLAG ;ACTIVE SENSING ENGAGED BIT.
GOTO MIDIEXIT ;EXIT FILTER.
;....................................
MRTND: ;
;ALL OTHER RT BYTES IGNORED.
GOTO MIDITHRUND ;EXIT FILTER.
MIDINOTRT: ;.....................................................................
BCF MIDISTAT2, DBIGNOR_FLAG ; IGNORE BYTE FLAG.
BCF MIDISTAT, RS_FLAG ;NEW STATUS CLEARS:- RUNNING-STATUS.
BCF MIDISTAT, DB1_FLAG ; 1st DATA BYTE FLAG.
BCF MIDISTAT, DB2_FLAG ; 2nd DATA BYTE FLAG.
BCF MIDISTAT, SINGLE_FLAG ; SINGLE DATA BYTE FLAG.
;..................................
MOVF MIDITEMP1, W ;HAS CURRENT STATUS BYTE.
;
ANDLW 0xF0 ;
XORLW 0xF0 ;SYSTEM COMMON.
BNZ M_CHAN_CHECK ;IS IT A SYSCOM STATUS BYTE ?
;....................................
MOVFF MIDITEMP1, MTEMP ;
MOVLW 0xF0 ;SYSX START.
CPFSEQ MTEMP ;
BRA MNOT_SYSXSRT ;IT IS NOT SYSX START.
BSF MIDISTAT2, DBIGNOR_FLAG ;IGNORE DATABYTES FLAG.
GOTO MIDITHRUND ;IGNORE SYS COM & EXIT FILTER.
;....................................
MNOT_SYSXSRT: ;
MOVFF MIDITEMP1, MTEMP ;
MOVLW 0xF7 ;EOX.
CPFSEQ MTEMP ;
BRA MNOT_EOX ;
BCF MIDISTAT2, DBIGNOR_FLAG ;IGNORE SUCCEEDING DATABYTES FLAG.
GOTO MIDITHRUND ;IGNORE SYS COM & EXIT FILTER.
MNOT_EOX: ;...................................
MOVFF MIDITEMP1, MTEMP ;
MOVLW 0xF6 ;TUNE REQUEST.
CPFSEQ MTEMP ;
BRA M_F5 ;IT IS NOT TUNE REQUEST.
GOTO MIDITHRUND ;
;....................................
M_F5: ;
MOVFF MIDITEMP1, MTEMP ;
MOVLW 0xF5 ;UNDEFINED.
CPFSEQ MTEMP ;
BRA M_F4 ;
GOTO MIDITHRUND ;
;....................................
M_F4: ;
MOVFF MIDITEMP1, MTEMP ;
MOVLW 0xF4 ;UNDEFINED.
CPFSEQ MTEMP ;
BRA M_F3 ;
GOTO MIDITHRUND ;
;....................................
M_F3: ;
MOVFF MIDITEMP1, MTEMP ;
MOVLW 0xF3 ;SONG SELECT. (HAS 1 DB).
CPFSEQ MTEMP ;
BRA M_F2 ;
BSF MIDISTAT2, DBIGNOR_FLAG ;IGNORE SUCCEEDING DATABYTES FLAG.
GOTO MIDITHRUND ;
;....................................
M_F2: ;
MOVFF MIDITEMP1, MTEMP ;
MOVLW 0xF2 ;SONG POSITION. (HAS 2 DBs).
CPFSEQ MTEMP ;
BRA M_F1 ;
BSF MIDISTAT2, DBIGNOR_FLAG ;IGNORE SUCCEEDING DATABYTES FLAG.
GOTO MIDITHRUND ;
;....................................
M_F1: ;
MOVFF MIDITEMP1, MTEMP ;
MOVLW 0xF1 ;MTC QUARTER FRAME MESSAGE.
CPFSEQ MTEMP ; (HAS 1 DB).
BRA MSYSCOMND ;
BSF MIDISTAT2, DBIGNOR_FLAG ;IGNORE SUCCEEDING DATABYTES FLAG.
GOTO MIDITHRUND ;
;....................................
MSYSCOMND: ;
GOTO MIDITHRUND ;IGNORE SYS COM & EXIT FILTER.
;.......................................................................
M_CHAN_CHECK: ;
BTFSC GENFLAGS4, CHANCONV_BIT ;CANCEL CHANNEL CONVERSION.
BRA M_CHAN_CHNG_END ;
;....................................Ch14,15,16 converter,
MOVF MIDITEMP1, W ; convert content of MIDITEMP1.
ANDLW 0x0F ; to other channels.
MOVWF MTEMP ;
MOVLW D'15' ;Ch 16 = TREB.
CPFSEQ MTEMP ;
BRA M_NOTCH16 ;
MOVF MIDITEMP1, W ;
ANDLW 0xF0 ;
;IORLW 0x00 ;Convert to CHAN 1.
MOVWF MIDITEMP1 ;
BRA M_CHAN_CHNG_END ;
M_NOTCH16: ;
MOVF MIDITEMP1, W ;
ANDLW 0x0F ;
MOVWF MTEMP ;
MOVLW D'14' ;Ch 15 = BASS.
CPFSEQ MTEMP ;
BRA M_NOTCH15 ;
MOVF MIDITEMP1, W ;
ANDLW 0xF0 ;
IORLW 0x02 ;CHAN 3.
MOVWF MIDITEMP1 ;
BRA M_CHAN_CHNG_END ;
M_NOTCH15: ;
MOVF MIDITEMP1, W ;
ANDLW 0x0F ;
MOVWF MTEMP ;
MOVLW D'13' ;Ch 14 = CHORDS.
CPFSEQ MTEMP ;
BRA M_NOTCH14 ;
MOVF MIDITEMP1, W ;
ANDLW 0xF0 ;
IORLW 0x01 ;CHAN 2.
MOVWF MIDITEMP1 ;
;BRA M_CHAN_CHNG_END ;
M_NOTCH14: ;
M_CHAN_CHNG_END: ;
;....................................
BTFSS GENFLAGS8, CHAN1TO3_BIT ;CANCEL CHANNEL CONVERSION of Ch1 to Ch3.
BRA M_NOTCH1 ;
BSF GENFLAGS8, CANCEL1TO3_BIT;
MOVF MIDITEMP1, W ;
ANDLW 0x0F ;
MOVWF MTEMP ;
MOVLW D'0' ;Ch 1 = Main Right-hand.
CPFSEQ MTEMP ;
BRA M_NOTCH1 ;
BCF GENFLAGS8, CANCEL1TO3_BIT;
MOVF MIDITEMP1, W ;
ANDLW 0xF0 ;
IORLW 0x02 ;CHAN 3.
MOVWF MIDITEMP1 ;
M_NOTCH1: ;
;.......................................................................
M_NOTE_OFF: ;
MOVF MIDITEMP1, W ;
ANDLW 0xF0 ;
MOVWF MTEMP ;
MOVLW 0x80 ;
CPFSEQ MTEMP ;
BRA MNOT_8N ;
MOVF MIDITEMP1, W ;
ANDLW 0x0F ;KEEP LOWEST NIBBLE.
MOVWF MTEMP ;
BTFSS GENFLAGS6, NOTESONLY ;NOTES ONLY MODE BIT.
MOVLW 0x02 ;ONLY RESPOND TO CHANS<4.
BTFSC GENFLAGS6, NOTESONLY ;NOTES ONLY MODE BIT.
MOVLW 0x03 ;ONLY RESPOND TO CHANS<5.
CPFSGT MTEMP ;SKIP IF f>W.
BRA M_NOTEOFF_1 ;SEND TO SYNTH.
BSF MIDISTAT2, DBIGNOR_FLAG ;IGNORE SUCCEEDING DATABYTES FLAG.
GOTO MIDITHRUND ;IT IS NOT NOTE ON, ON CHAN5 OR LESS.
;
M_NOTEOFF_1: ;
MOVF MIDITEMP1, W ;
ANDLW 0x0F ;KEEP LOWEST NIBBLE.
MOVWF MTEMP ;
MOVLW 0x03 ;CHANNEL 4.
CPFSEQ MTEMP ;
BRA M_NOTEOFF_2 ;SEND TO SYNTH.
BCF MIDISTAT2, CH4LAYER_FLAG;
M_NOTEOFF_2: ;
BSF MIDISTAT, DB1_FLAG ;1st DATA BYTE FLAG.
BSF MIDISTAT, DB2_FLAG ;2nd DATA BYTE FLAG.
MOVFF MIDITEMP1, MAINSBHOLD ;
GOTO MIDITHRUND ;
;........................................................................
MNOT_8N: ;
MOVF MIDITEMP1, W ;
ANDLW 0xF0 ;
MOVWF MTEMP ;
MOVLW 0x90 ;NOTE ON.
CPFSEQ MTEMP ;
BRA MNOT_9N ;IT IS NOT NOTE ON.
;
MOVF MIDITEMP1, W ;
ANDLW 0x0F ;KEEP LOWEST NIBBLE.
MOVWF MTEMP ;
BTFSS GENFLAGS6, NOTESONLY ;NOTES ONLY MODE BIT.
MOVLW 0x02 ;ONLY RESPOND TO CHANS<4.
BTFSC GENFLAGS6, NOTESONLY ;NOTES ONLY MODE BIT.
MOVLW 0x03 ;ONLY RESPOND TO CHANS<5.
CPFSGT MTEMP ;SKIP IF f>W.
BRA M_NOTEON_TST2 ;CHANS 4,3,2,1 ONLY.
BSF MIDISTAT2, DBIGNOR_FLAG ;IGNORE SUCCEEDING DATABYTES FLAG.
GOTO MIDITHRUND ;IT IS NOT NOTE ON, ON CHAN5 OR LESS.
;
M_NOTEON_TST2: ;
MOVF MIDITEMP1, W ;
ANDLW 0x0F ;KEEP LOWEST NIBBLE.
MOVWF MTEMP ;
MOVLW 0x03 ;CHANNEL 4.
CPFSEQ MTEMP ;
BRA M_NOTEON_1 ;SEND TO SYNTH.
BCF MIDISTAT2, CH4LAYER_FLAG ;
BTFSC GENFLAGS3, CH4FIRST_FLAG ;
BRA M_NOTEON_1 ;SEND TO SYNTH.
BSF GENFLAGS3, CH4FIRST_FLAG ;CH4 FIRST TIME IN FLAG - CLEARS
MOVLW 0xB3 ; NOTEON IN CH1->CH4 CONVERTER.
MOVWF BYTE1OF3 ;
MOVLW 0x7B ;ALL NOTES OFF CH4.
MOVWF BYTE2OF3 ;
MOVLW 0x00 ;
MOVWF BYTE3OF3 ;
CALL MIDI3BYTE ;
;
M_NOTEON_1: ;
BSF MIDISTAT, DB1_FLAG ;1st DATA BYTE FLAG.
BSF MIDISTAT, DB2_FLAG ;2nd DATA BYTE FLAG.
MOVFF MIDITEMP1, MAINSBHOLD ;
GOTO MIDITHRUND ;
MNOT_9N: ;........................................................................
MOVF MIDITEMP1, W ;PRESSURE IS NOT RECOGNISED.
ANDLW 0xF0 ;
MOVWF MTEMP ;
MOVLW 0xA0 ;POLY PRESSURE.
CPFSEQ MTEMP ;
BRA MNOT_AN ;IT IS NOT POLY PRESSURE.
BSF MIDISTAT2, DBIGNOR_FLAG ;IGNORE SUCCEEDING DATABYTES FLAG.
GOTO MIDITHRUND ;
MNOT_AN: ;........................................................................
MOVF MIDITEMP1, W ;
ANDLW 0xF0 ;
MOVWF MTEMP ;
MOVLW 0xB0 ;CONTROL CHANGE.
CPFSEQ MTEMP ;
BRA MNOT_BN ;IT IS NOT CONTROL CHANGE.
;
BTFSC GENFLAGS6, NOTESONLY ;NOTES ONLY MODE BIT.
BRA MCONT1 ;
BSF MIDISTAT2, DBIGNOR_FLAG ;IGNORE SUCCEEDING DATABYTES FLAG.
GOTO MIDITHRUND ;
MCONT1: ;
MOVF MIDITEMP1, W ;
ANDLW 0x0F ;KEEP LOWEST NIBBLE.
MOVWF MTEMP ;
MOVLW 0x03 ;ONLY RESPOND TO CHANS<5.
CPFSGT MTEMP ;SKIP IF f>W.
GOTO M_CONTROL_1 ;SEND TO SYNTH.
BSF MIDISTAT2, DBIGNOR_FLAG ;IGNORE SUCCEEDING DATABYTES FLAG.
GOTO MIDITHRUND ;IT IS NOT CONTROL, ON CHAN4 OR LESS.
;
M_CONTROL_1: ;
BSF MIDISTAT, DB1_FLAG ;1st DATA BYTE FLAG.
BSF MIDISTAT, DB2_FLAG ;2nd DATA BYTE FLAG.
MOVFF MIDITEMP1, MAINSBHOLD ;
GOTO MIDITHRUND ;
MNOT_BN: ;.......................................................................
MOVF MIDITEMP1, W ;
ANDLW 0xF0 ;
MOVWF MTEMP ;
MOVLW 0xC0 ;PROGRAMME CHANGE.
CPFSEQ MTEMP ;
BRA MNOT_CN ;IT IS NOT PROGRAMME CHANGE.
;
BTFSC GENFLAGS6, NOTESONLY ;NOTES ONLY MODE BIT.
BRA MPROG1 ;
BSF MIDISTAT2, DBIGNOR_FLAG ;IGNORE SUCCEEDING DATABYTES FLAG.
GOTO MIDITHRUND ;
MPROG1: ;
;
MOVF MIDITEMP1, W ;
ANDLW 0x0F ;KEEP LOWEST NIBBLE.
MOVWF MTEMP ;
MOVLW 0x05 ;ONLY RESPOND TO CHANS<7.
CPFSGT MTEMP ;SKIP IF f>W.
BRA M_PC_1 ;SEND TO SYNTH.
BSF MIDISTAT2, DBIGNOR_FLAG ;IGNORE SUCCEEDING DATABYTES FLAG.
GOTO MIDITHRUND ;
;
M_PC_1: ;
BSF MIDISTAT, SINGLE_FLAG ;SINGLE DATA BYTE FLAG.
MOVFF MIDITEMP1, MAINSBHOLD ;
GOTO MIDITHRUND ;
MNOT_CN: ;....................................
MOVF MIDITEMP1, W ;CHAN PRESSURE IS NOT RECOGNISED.
ANDLW 0xF0 ;
MOVWF MTEMP ;
MOVLW 0xD0 ;CHANNEL PRESSURE.
CPFSEQ MTEMP ;
BRA MNOT_DN ;IT IS NOT CHANNEL PRESSURE.
BSF MIDISTAT2, DBIGNOR_FLAG ;IGNORE SUCCEEDING DATABYTES FLAG.
GOTO MIDITHRUND ;
MNOT_DN: ;...................................
MOVF MIDITEMP1, W ;
ANDLW 0xF0 ;
MOVWF MTEMP ;
MOVLW 0xE0 ;PITCH WHEEL.
CPFSEQ MTEMP ;
BRA MNOT_EN ;IT IS NOT PITCH WHEEL.
;
BTFSC GENFLAGS6, NOTESONLY ;NOTES ONLY MODE BIT.
BRA MPWHL1 ;
BSF MIDISTAT2, DBIGNOR_FLAG ;IGNORE SUCCEEDING DATABYTES FLAG.
GOTO MIDITHRUND ;
MPWHL1: ;
MOVF MIDITEMP1, W ;
ANDLW 0x0F ;KEEP LOWEST NIBBLE.
MOVWF MTEMP ;
MOVLW 0x03 ;ONLY RESPOND TO CHANS<5.
CPFSGT MTEMP ;SKIP IF f>W.
GOTO M_PW_1 ;SEND TO SYNTH.
BSF MIDISTAT2, DBIGNOR_FLAG ;IGNORE SUCCEEDING DATABYTES FLAG.
GOTO MIDITHRUND ;
;
M_PW_1: ;
BSF MIDISTAT, DB1_FLAG ;1st DATA BYTE FLAG.
BSF MIDISTAT, DB2_FLAG ;2nd DATA BYTE FLAG.
MOVFF MIDITEMP1, MAINSBHOLD ;
GOTO MIDITHRUND ;
MNOT_EN: ;.................................................. NOT En ?
GOTO MIDITHRUND ;
;......................................................................
M_DATA_BYTES: ;
BTFSC MIDISTAT2, DBIGNOR_FLAG ;
GOTO MIDITHRUND ;
BTFSC MIDISTAT, SINGLE_FLAG ;
BRA M_SINGLEDB ;
BTFSC MIDISTAT, DB1_FLAG ;
BRA M_DATA1 ;
BTFSC MIDISTAT, DB2_FLAG ;
BRA M_DATA2 ;
BRA M_RUNNING ;
;
M_SINGLEDB: ;....................................
BCF MIDISTAT, SINGLE_FLAG ;
BSF MIDISTAT2, SENDSNG_FLAG ;
BSF GENFLAGS2, SNG2_FLAG ;
MOVFF MIDITEMP1, MAINSNGHOLD ;
BRA MIDINTSEND ;
M_DATA1: ;....................................
BCF MIDISTAT, DB1_FLAG ;1st DATA BYTE OF 2.
BSF GENFLAGS2, DB12_FLAG ;
MOVFF MIDITEMP1, MAINDB1HOLD ;
BRA MIDITHRUND ;>
M_DATA2: ;....................................
BCF MIDISTAT, DB2_FLAG ;2nd DATA BYTE OF 2.
BSF MIDISTAT2, SEND2DB_FLAG ;WILL NOW SEND->
BSF GENFLAGS2, DB22_FLAG ;
MOVFF MIDITEMP1, MAINDB2HOLD ;
BRA MIDINTSEND ;
M_RUNNING: ;....................................
BSF MIDISTAT, RS_FLAG ;SET RUNNING-STATUS FLAG.
BTFSS GENFLAGS2, SNG2_FLAG ;
BRA M_RS1 ;
BSF MIDISTAT, SINGLE_FLAG ;
BCF GENFLAGS2, SNG2_FLAG ;
BRA M_SINGLEDB ;>
M_RS1: ;
BTFSS GENFLAGS2, DB12_FLAG ;
BRA MIDITHRUND ;>
BSF MIDISTAT, DB1_FLAG ;
BSF MIDISTAT, DB2_FLAG ;
BCF GENFLAGS2, DB12_FLAG ;
BRA M_DATA_BYTES ;>
;......................................................................................................
MIDITHRUND: ;SEND INTERNAL DATAto SYNTH CHIP (ATSAM9773) IF READY.
BTFSC SCANSTAT, MIDI_RTS_FLAG ;SCANSTAT, 0.
CALL PROGCHNGSEND ;PROGRAM CHANGE SEND ROUTINE.
BCF SCANSTAT, MIDI_RTS_FLAG ;NO MORE PROG CHANGE TO SEND.
;.............................................................................
TSTFSZ POTSTAT ;SEE IF ANY POTS HAVE CHANGED.
BRA MCONTROLP ;
BRA CONTEND ;
MCONTROLP: ;
MOVF POTCHAN, W ;CONTROL.
MCONTROL0: ;POT SEND.
BTFSS TXSTA, TRMT ;SET WHEN TxShiftReg IS EMPTY.
BRA MCONTROL0 ;
MOVWF TXREG ;SEND MIDI.
MOVF POTCONT, W ;CONTROL NUMBER.
MCONTROL1: ;
BTFSS TXSTA, TRMT ;SET WHEN TxShiftReg IS EMPTY.
BRA MCONTROL1 ;
MOVWF TXREG ;SEND MIDI.
MOVF POTSTORE, W ;
MCONTROL2: ;
BTFSS TXSTA, TRMT ;SET WHEN TxShiftReg IS EMPTY.
BRA MCONTROL2 ;
MOVWF TXREG ;SEND MIDI.
CLRF POTSTAT ;
;........................................................................
BTFSS MIDISTAT2, CH6ON_FLAG ;
BRA MCONT6END ;
MOVF POTCHAN, W ;
ANDLW 0x0F ;
MOVWF TEMP1 ;
MOVLW 0x02 ;
CPFSEQ TEMP1 ;
BRA MCONT6END ;
;
MOVF POTCHAN, W ;CONTROL.
ADDLW 0x03 ;CONVERT TO CHAN 6.
MCONTROL3: ;POT SEND.
BTFSS TXSTA, TRMT ;SET WHEN TxShiftReg IS EMPTY.
BRA MCONTROL3 ;
MOVWF TXREG ;SEND MIDI.
MOVF POTCONT, W ;CONTROL NUMBER.
MCONTROL4: ;
BTFSS TXSTA, TRMT ;SET WHEN TxShiftReg IS EMPTY.
BRA MCONTROL4 ;
MOVWF TXREG ;SEND MIDI.
MOVF POTSTORE, W ;
MCONTROL5: ;
BTFSS TXSTA, TRMT ;SET WHEN TxShiftReg IS EMPTY.
BRA MCONTROL5 ;
MOVWF TXREG ;SEND MIDI.
BRA CONTEND ;
MCONT6END: ;
;........................................................................
BTFSS GENFLAGS2, CH5ON_FLAG ;
BRA MCONT5END ;
MOVF POTCHAN, W ;
ANDLW 0x0F ;
MOVWF TEMP1 ;
MOVLW 0x00 ;
CPFSEQ TEMP1 ;
BRA MCONT5END ;
;
MOVLW 0xB4 ;CONTROL. CONVERT TO CHAN 5.
M5CONTROL3: ;POT SEND.
BTFSS TXSTA, TRMT ;SET WHEN TxShiftReg IS EMPTY.
BRA M5CONTROL3 ;
MOVWF TXREG ;SEND MIDI.
MOVF POTCONT, W ;CONTROL NUMBER.
M5CONTROL4: ;
BTFSS TXSTA, TRMT ;SET WHEN TxShiftReg IS EMPTY.
BRA M5CONTROL4 ;
MOVWF TXREG ;SEND MIDI.
MOVF POTSTORE, W ;
M5CONTROL5: ;
BTFSS TXSTA, TRMT ;SET WHEN TxShiftReg IS EMPTY.
BRA M5CONTROL5 ;
MOVWF TXREG ;SEND MIDI.
MCONT5END: ;
;
BTFSS GENFLAGS8, RH1L3EN ;
BRA MCONT7END ;
MOVF POTCHAN, W ;
ANDLW 0x0F ;
MOVWF TEMP1 ;
MOVLW 0x00 ;
CPFSEQ TEMP1 ;
BRA MCONT7END ;
;
MOVLW 0xB6 ;CONTROL. CONVERT TO CHAN 7.
M7CONTROL3: ;POT SEND.
BTFSS TXSTA, TRMT ;SET WHEN TxShiftReg IS EMPTY.
BRA M7CONTROL3 ;
MOVWF TXREG ;SEND MIDI.
MOVF POTCONT, W ;CONTROL NUMBER.
M7CONTROL4: ;
BTFSS TXSTA, TRMT ;SET WHEN TxShiftReg IS EMPTY.
BRA M7CONTROL4 ;
MOVWF TXREG ;SEND MIDI.
MOVF POTSTORE, W ;
M7CONTROL5: ;
BTFSS TXSTA, TRMT ;SET WHEN TxShiftReg IS EMPTY.
BRA M7CONTROL5 ;
MOVWF TXREG ;SEND MIDI.
MCONT7END: ;
;.......................................................................
CONTEND: ;Rotary controls send end.
;........................................................................................................................................................................................
M_NORPN_SEND: ;SENDS 7 BYTE NoRPN MESSAGES.
BTFSS GENFLAGS1, NORPN_FLAG ;used for coarse tunning down 12.
BRA M_NORPN_END ;
M_NORPN_SEND1: ;
BTFSS TXSTA, TRMT ;SET WHEN TxShiftReg IS EMPTY.
BRA M_NORPN_SEND1 ;
MOVFF NORPN1, TXREG ;SEND MIDI.
M_NORPN_SEND2: ;
BTFSS TXSTA, TRMT ;SET WHEN TxShiftReg IS EMPTY.
BRA M_NORPN_SEND2 ;
MOVFF NORPN2, TXREG ;SEND MIDI.
M_NORPN_SEND3: ;
BTFSS TXSTA, TRMT ;SET WHEN TxShiftReg IS EMPTY.
BRA M_NORPN_SEND3 ;
MOVFF NORPN3, TXREG ;SEND MIDI.
M_NORPN_SEND4: ;
BTFSS TXSTA, TRMT ;SET WHEN TxShiftReg IS EMPTY.
BRA M_NORPN_SEND4 ;
MOVFF NORPN4, TXREG ;SEND MIDI.
M_NORPN_SEND5: ;
BTFSS TXSTA, TRMT ;SET WHEN TxShiftReg IS EMPTY.
BRA M_NORPN_SEND5 ;
MOVFF NORPN5, TXREG ;SEND MIDI.
M_NORPN_SEND6: ;
BTFSS TXSTA, TRMT ;SET WHEN TxShiftReg IS EMPTY.
BRA M_NORPN_SEND6 ;
MOVFF NORPN6, TXREG ;SEND MIDI.
M_NORPN_SEND7: ;
BTFSS TXSTA, TRMT ;SET WHEN TxShiftReg IS EMPTY.
BRA M_NORPN_SEND7 ;
MOVFF NORPN7, TXREG ;SEND MIDI.
BCF GENFLAGS1, NORPN_FLAG ;
M_NORPN_END: ;
;.....................................................................
M_CONTROLS_2: ;CONTROL CHANGE MIDI SEND.
BTFSS GENFLAGS1, MUTE_FLAG ;USED FOR ALL NOTES OFF.
BRA CONTS2END ;
MOVF CONTCHAN, W ;CONTROL.
MCONTS2ROL0: ;POT SEND.
BTFSS TXSTA, TRMT ;SET WHEN TxShiftReg IS EMPTY.
BRA MCONTS2ROL0 ;
MOVWF TXREG ;SEND MIDI.
MOVF CONTDB1, W ;CONTROL NUMBER.
MCONTS2ROL1: ;
BTFSS TXSTA, TRMT ;SET WHEN TxShiftReg IS EMPTY.
BRA MCONTS2ROL1 ;
MOVWF TXREG ;SEND MIDI.
MOVF CONTDB2, W ;
MCONTS2ROL2: ;
BTFSS TXSTA, TRMT ;SET WHEN TxShiftReg IS EMPTY.
BRA MCONTS2ROL2 ;
MOVWF TXREG ;SEND MIDI.
BCF GENFLAGS1, MUTE_FLAG ;
;
BTFSC GENFLAGS2, CH5ON_FLAG ;
BRA CONTS2END ;
MOVLW 0xB4 ;ALL SOUND OFF CHAN 5.
RH12ROL0: ;
BTFSS TXSTA, TRMT ;SET WHEN TxShiftReg IS EMPTY.
BRA RH12ROL0 ;
MOVWF TXREG ;SEND MIDI.
MOVF CONTDB1, W ;CONTROL NUMBER.
RH12ROL1: ;
BTFSS TXSTA, TRMT ;SET WHEN TxShiftReg IS EMPTY.
BRA RH12ROL1 ;
MOVWF TXREG ;SEND MIDI.
MOVF CONTDB2, W ;
RH12ROL2: ;
BTFSS TXSTA, TRMT ;SET WHEN TxShiftReg IS EMPTY.
BRA RH12ROL2 ;
MOVWF TXREG ;SEND MIDI.
CONTS2END: ;
;------------------------------------------------------------------------
MIDINTSEND ;
BTFSS MIDISTAT2, SENDSNG_FLAG ;
BRA MIDI2DBTST ;
;
BSF GENFLAGS10, DIP_CHNG_LED ;
BSF GENFLAGS10, MIDI_LED_FLAG ;
MIDISNGJ1: ;
BTFSS TXSTA, TRMT ;SET WHEN TxShiftReg IS EMPTY.
BRA MIDISNGJ1 ;
MOVFF MAINSBHOLD, TXREG ;SEND MIDI.
;
BCF MIDISTAT2, SENDSNG_FLAG ;
MIDISNGJ2: ;
BTFSS TXSTA, TRMT ;SET WHEN TxShiftReg IS EMPTY.
BRA MIDISNGJ2 ;
MOVFF MAINSNGHOLD, TXREG ;SEND MIDI.
;
GOTO MIDINTXIT ;>single db message sent.
;.......................................................................
MIDI2DBTST: ;
BTFSS MIDISTAT2, SEND2DB_FLAG ;
BRA MIDIRSTST ;
BSF GENFLAGS10, DIP_CHNG_LED ;
BSF GENFLAGS10, MIDI_LED_FLAG ;FLASH MIDI_LED LED FOR RECOGNISED MIDI.
;.......................
BTFSS GENFLAGS4, BASS_RNG_BIT ;
BRA MIDI3RNG1 ;
;
MOVF MAINSBHOLD, W ;BASS RANGE MODIFY.
ANDLW 0x0F ;KEEP LOWEST NIBBLE.
MOVWF MTEMP ;
MOVLW 0x02 ;CH3
CPFSEQ MTEMP ;SKIP IF f=W.
BRA MIDI3RNG1 ;
MOVLW 0x27 ;
CPFSGT MAINDB1HOLD ;
BRA MIDI3RNG1 ;
MOVLW 0x0C ;GO DOWN OCTAVE FOR NOTES
SUBWF MAINDB1HOLD ; ABOVE 0x27. RESULT IN FILE.
MIDI3RNG1: ;.........................
;
BTFSC GENFLAGS8, CANCEL1TO3_BIT;If from Ch3 then no convert.
BRA MIDI3RNG3 ;
BTFSS GENFLAGS8, CHAN1TO3_BIT ;Rhand plays bass mode.
BRA MIDI3RNG3 ;
MOVF MAINSBHOLD, W ;BASS RANGE MODIFY.
ANDLW 0x0F ;KEEP LOWEST NIBBLE.
MOVWF MTEMP ;
MOVLW 0x02 ;CH3
CPFSEQ MTEMP ;SKIP IF f=W.
BRA MIDI3RNG3 ;
MOVLW 0x18 ;GO DOWN 2 OCTAVES.
SUBWF MAINDB1HOLD ; RESULT IN FILE.
BSF GENFLAGS1, MUTE1_FLAG ;
BCF DISPLAYREG, MUTE1LED ;'RH1-ON' LED, OFF.
BCF GENFLAGS2, CH5ON_FLAG ;Ch5 OFF AS WELL.
BSF GENFLAGS1, MUTE2_FLAG ;
BCF DISPLAYREG, MUTE2LED ;RH2 ON LED, OFF.
BCF MIDISTAT2, CH4LAYER_FLAG;CH4 MIMICS CH1.
MIDI3RNG3: ;
;.........................
MOVF MAINSBHOLD, W ;
ANDLW 0x0F ;KEEP LOWEST NIBBLE.
MOVWF MTEMP ;
MOVLW 0x00 ;CH1
CPFSEQ MTEMP ;SKIP IF f=W.
BRA MIDI2CH4TST1 ;
MOVF MAINSBHOLD, W ;
ADDLW 0x03 ;CONVERT TO Ch4.
MOVWF CH4SBHOLD ;HOLD Ch4 STATUS BYTE.
MOVFF MAINDB2HOLD, CH4DB2HOLD ;
;
BTFSS GENFLAGS1, MUTE1_FLAG ;MUTE RH1.
BRA MIDI2SND ;
BRA MIDI2CH4SEND ;
;....................................
MIDI2CH4TST1: ;
MOVF MAINSBHOLD, W ;
ANDLW 0x0F ;KEEP LOWEST NIBBLE.
MOVWF MTEMP ;
MOVLW 0x03 ;CH4.
CPFSEQ MTEMP ;SKIP IF f=W.
BRA MIDI2SND ;
BTFSC GENFLAGS1, MUTE2_FLAG ;MUTE RH2.
BRA MIDI2END ;>
;....................................
MIDI2SND: ;CHECK ACTIVE CHANNEL. For ;
MOVF MAINSBHOLD, W ; 'blank-instrument' muting.
ANDLW 0x0F ;KEEP LOWEST NIBBLE.
MOVWF MTEMP ;
MOVLW 0x02 ;CH3
CPFSEQ MTEMP ;SKIP IF f=W.
BRA MIDI2BYTJ0 ;
MOVFF MAINDB2HOLD, CH3DB2HOLD ;
BTFSC GENFLAGS4, BASVEL0_FLAG ;
CLRF MAINDB2HOLD ;
MOVF MAINDB2HOLD, W ;
BRA MIDI2BTSTX ;
MIDI2BYTJ0: ;
MOVLW 0x01 ;CH2
CPFSEQ MTEMP ;SKIP IF f=W.
BRA MIDI2BYTJ1 ;
MOVFF MAINDB2HOLD, CH2DB2HOLD ;
BTFSC GENFLAGS4, CHDVEL0_FLAG ;
CLRF MAINDB2HOLD ;
MOVF MAINDB2HOLD, W ;
BRA MIDI2BTSTX ;
MIDI2BYTJ1: ;
MOVLW 0x00 ;CH1
CPFSEQ MTEMP ;SKIP IF f=W.
BRA MIDI2BYTJ2 ;
BTFSC GENFLAGS4, BLANK_RH1_FLAG;
CLRF MAINDB2HOLD ;
MOVF MAINDB2HOLD, W ;
BRA MIDI2BTSTX ;
MIDI2BYTJ2: ;
MOVLW 0x03 ;CH4
CPFSEQ MTEMP ;SKIP IF f=W.
BRA MIDI2BYTJ3 ;
BTFSC GENFLAGS4, BLANK_RH2_FLAG;
CLRF MAINDB2HOLD ;
MOVF MAINDB2HOLD, W ;
MIDI2BYTJ3: ;
MIDI2BTSTX: ;
;........................
MIDI2DBJ1: ;
BTFSS TXSTA, TRMT ;SET WHEN TxShiftReg IS EMPTY.
BRA MIDI2DBJ1 ;
MOVFF MAINSBHOLD, TXREG ;SEND MIDI SBYTE.
;
MOVF MAINDB1HOLD, W ;
MIDI2DBJ2: ;
BTFSS TXSTA, TRMT ;SET WHEN TxShiftReg IS EMPTY.
BRA MIDI2DBJ2 ;
MOVWF TXREG ;SEND MIDI DBYTE 1.
;
MOVF MAINDB2HOLD, W ;
MIDI2DBJ3: ;
BTFSS TXSTA, TRMT ;SET WHEN TxShiftReg IS EMPTY.
BRA MIDI2DBJ3 ;
MOVWF TXREG ;SEND MIDI DBYTE 2.
;........................................................................
MIDI2CH6TST1: ;
BTFSC MIDISTAT2, CH6ON_FLAG ;ADD Ch6. LAYER TO BASS.
BRA MIDI6CHK ;
BTFSS MIDISTAT2, CH6MUTE_FLAG ;USED FOR ALL NOTES OFF.
BRA MIDI6END ;
;
MOVLW 0xB5 ;CONTROL. ALL SOUND OFF CHAN 6.
MCONTS6ROL0: ;
BTFSS TXSTA, TRMT ;SET WHEN TxShiftReg IS EMPTY.
BRA MCONTS6ROL0 ;
MOVWF TXREG ;SEND MIDI.
MOVLW 0x78 ;CONTROL NUMBER.
MCONTS6ROL1: ;
BTFSS TXSTA, TRMT ;SET WHEN TxShiftReg IS EMPTY.
BRA MCONTS6ROL1 ;
MOVWF TXREG ;SEND MIDI.
MOVLW 0x00 ;
MCONTS6ROL2: ;
BTFSS TXSTA, TRMT ;SET WHEN TxShiftReg IS EMPTY.
BRA MCONTS6ROL2 ;
MOVWF TXREG ;SEND MIDI.
BCF MIDISTAT2, CH6MUTE_FLAG ;
BRA MIDI6END ;
;.............
MIDI6CHK: ;
MOVF MAINSBHOLD, W ;
ANDLW 0x0F ;KEEP LOWEST NIBBLE.
MOVWF MTEMP ;
MOVLW 0x02 ;CH3
CPFSEQ MTEMP ;SKIP IF f=W.
BRA MIDI6END ;
MOVF MAINSBHOLD, W ;
ADDLW 0x03 ;CONVERT TO Ch6.
MIDI6DBJ1: ;
BTFSS TXSTA, TRMT ;SET WHEN TxShiftReg IS EMPTY.
BRA MIDI6DBJ1 ;
MOVWF TXREG ;SEND MIDI.
MIDI6DBJ2: ;
BTFSS TXSTA, TRMT ;SET WHEN TxShiftReg IS EMPTY.
BRA MIDI6DBJ2 ;
MOVFF MAINDB1HOLD, TXREG ;SEND MIDI DB1.
MOVF MAINDB2HOLD, W ;
MIDI6DBJ3: ;
BTFSS TXSTA, TRMT ;SET WHEN TxShiftReg IS EMPTY.
BRA MIDI6DBJ3 ;
MOVWF TXREG ;SEND MIDI DB2.
BSF MIDISTAT2, CH6MUTE_FLAG ;
MIDI6END: ;
;.......................................................................
MIDI2CH4SEND: ;
BTFSS MIDISTAT2, CH4LAYER_FLAG; CH4 MIMICS CH1.
BRA MIDI41END ;
BTFSC GENFLAGS1, MUTE2_FLAG ;MUTE RH2.
BRA MIDI41END ;
MOVF MAINSBHOLD, W ;
ANDLW 0x0F ;KEEP LOWEST NIBBLE.
MOVWF MTEMP ;
MOVLW 0x00 ;CH1
CPFSEQ MTEMP ;SKIP IF f=W.
BRA MIDI41END ;
MOVF CH4SBHOLD, W ;
MIDI2DB4J1: ;
BTFSS TXSTA, TRMT ;SET WHEN TxShiftReg IS EMPTY.
BRA MIDI2DB4J1 ;
MOVWF TXREG ;SEND MIDI.
;
MOVF MAINDB1HOLD, W ;
MIDI2DB4J2: ;
BTFSS TXSTA, TRMT ;SET WHEN TxShiftReg IS EMPTY.
BRA MIDI2DB4J2 ;
MOVWF TXREG ;SEND MIDI.
;
BTFSC GENFLAGS4, BLANK_RH2_FLAG ;
CLRF CH4DB2HOLD ;
MOVF CH4DB2HOLD, W ;SEND NOTE OFF.
MIDI2DB4J3: ;
BTFSS TXSTA, TRMT ;SET WHEN TxShiftReg IS EMPTY.
BRA MIDI2DB4J3 ;
MOVWF TXREG ;SEND MIDI.
MIDI41END: ;
;........................................................................................................................................................................................
MIDI2CH5TST1: ;ADD Ch5.LAYER TO RH1.
BTFSC GENFLAGS2, CH5ON_FLAG ;
BRA MIDI5CHK ;
BTFSS GENFLAGS2, CH5MUTE_FLAG ;USED FOR ALL NOTES OFF.
BRA MIDI7END ;
;
MOVLW 0xB4 ;CONTROL. ALL SOUND OFF CHAN 5.
MCONTS5ROL0: ;POT SEND.
BTFSS TXSTA, TRMT ;SET WHEN TxShiftReg IS EMPTY.
BRA MCONTS5ROL0 ;
MOVWF TXREG ;SEND MIDI.
MOVLW 0x78 ;CONTROL NUMBER.
MCONTS5ROL1: ;
BTFSS TXSTA, TRMT ;SET WHEN TxShiftReg IS EMPTY.
BRA MCONTS5ROL1 ;
MOVWF TXREG ;SEND MIDI.
MOVLW 0x00 ;
MCONTS5ROL2: ;
BTFSS TXSTA, TRMT ;SET WHEN TxShiftReg IS EMPTY.
BRA MCONTS5ROL2 ;
MOVWF TXREG ;SEND MIDI.
BCF GENFLAGS2, CH5MUTE_FLAG ;
;.......................................................................
MOVLW 0xB6 ;CONTROL. ALL SOUND OFF CHAN 7.
MCONTS7ROL0: ;POT SEND.
BTFSS TXSTA, TRMT ;SET WHEN TxShiftReg IS EMPTY.
BRA MCONTS7ROL0 ;
MOVWF TXREG ;SEND MIDI.
MOVLW 0x78 ;CONTROL NUMBER.
MCONTS7ROL1: ;
BTFSS TXSTA, TRMT ;SET WHEN TxShiftReg IS EMPTY.
BRA MCONTS7ROL1 ;
MOVWF TXREG ;SEND MIDI.
MOVLW 0x00 ;
MCONTS7ROL2: ;
BTFSS TXSTA, TRMT ;SET WHEN TxShiftReg IS EMPTY.
BRA MCONTS7ROL2 ;
MOVWF TXREG ;SEND MIDI.
;
BCF GENFLAGS8, RH1L3EN ;3RD LAYER DISABLE.
BRA MIDILSEND ;
;.................................................................................................................
MIDI5CHK: ;
MOVF MAINSBHOLD, W ;
ANDLW 0x0F ;KEEP LOWEST NIBBLE.
MOVWF MTEMP ;
MOVLW 0x00 ;Ch1.
CPFSEQ MTEMP ;SKIP IF f=W.
BRA MIDI5END ;
MOVF MAINSBHOLD, W ;
ADDLW 0x04 ;CONVERT TO Ch5.
MIDI5DBJ1: ;
BTFSS TXSTA, TRMT ;SET WHEN TxShiftReg IS EMPTY.
BRA MIDI5DBJ1 ;
MOVWF TXREG ;SEND MIDI.
MIDI5DBJ2: ;
BTFSS TXSTA, TRMT ;SET WHEN TxShiftReg IS EMPTY.
BRA MIDI5DBJ2 ;
MOVFF MAINDB1HOLD, TXREG ;SEND MIDI.
MIDI5DBJ3: ;
BTFSS TXSTA, TRMT ;SET WHEN TxShiftReg IS EMPTY.
BRA MIDI5DBJ3 ;
MOVFF MAINDB2HOLD, TXREG ;SEND MIDI.
BSF GENFLAGS2, CH5MUTE_FLAG ;
BCF GENFLAGS8, RH1L3EN ;RD LAYER DISABLE.
MIDI5END: ;
;........................................................................
BTFSS GENFLAGS8, RH1L3EN ;
BRA MIDILSEND ;
MOVF MAINSBHOLD, W ;
ANDLW 0x0F ;KEEP LOWEST NIBBLE.
MOVWF MTEMP ;
MOVLW 0x00 ;Ch1.
CPFSEQ MTEMP ;SKIP IF f=W.
BRA MIDI7END ;
MOVF MAINSBHOLD, W ;
ADDLW 0x06 ;CONVERT TO Ch7.
MIDI7DBJ1: ;
BTFSS TXSTA, TRMT ;SET WHEN TxShiftReg IS EMPTY.
BRA MIDI7DBJ1 ;
MOVWF TXREG ;SEND MIDI.
MIDI7DBJ2: ;
BTFSS TXSTA, TRMT ;SET WHEN TxShiftReg IS EMPTY.
BRA MIDI7DBJ2 ;
MOVFF MAINDB1HOLD, TXREG ;SEND MIDI.
MIDI7DBJ3: ;
BTFSS TXSTA, TRMT ;SET WHEN TxShiftReg IS EMPTY.
BRA MIDI7DBJ3 ;
MOVFF MAINDB2HOLD, TXREG ;SEND MIDI.
MIDI7END: ;
BRA MIDILSEND ;
;.......................................................................
MIDILSEND: ;
;................................................................................................................................................................................................................
;PERCUSSION ON Ch10 from Ch2.
BTFSC GENFLAGS3, DRM1_BIT ;Percussion1 on/off bit.
BRA PERC2J1 ;>
BTFSC GENFLAGS8, DRM2_BIT ;Percussion2 on/off bit.
BRA PERC2J1 ;>
BTFSS GENFLAGS8, DRM3_BIT ;Percussion3 on/off bit.
BRA MIDIPERCEND ;>
PERC2J1: ;
BTFSS GENFLAGS3, PERCON2_BIT ;PERC ON CH 2 ENABLE FLAG.
BRA MIDI210END ;>
CLRF WREG ;
CPFSEQ PERCON2TIME ;
BRA MIDI210END ;>
;
MOVFF MAINSBHOLD, MTEMP ;
MOVLW 0x91 ;NOTE ON Ch2.
CPFSEQ MTEMP ;SKIP IF f=W.
BRA MIDI210_OTHER ;
MOVF MAINSBHOLD, W ;
ADDLW 0x08 ;CONVERT TO Ch10.
MIDI210DBJ1: ;
BTFSS TXSTA, TRMT ;SET WHEN TxShiftReg IS EMPTY.
BRA MIDI210DBJ1 ;
MOVWF TXREG ;SEND MIDI.
;
BTFSC GENFLAGS8, DRM2_BIT ;
BRA MCHDDRM2SEL ;
BTFSC GENFLAGS8, DRM3_BIT ;
BRA MCHDDRM3SEL ;
MOVLW 0x40 ;ATTENUATION AMOUNT.
MOVWF TEMP1 ;
MOVLW D'38' ;STANDARD KIT INST - (Note D2) SNARE 1.
BRA MIDI210DBJ2 ;
MCHDDRM2SEL: ;DRUM SELECT1 BUTTON.
MOVLW 0x48 ;ATTENUATION AMOUNT.
MOVWF TEMP1 ;
MOVLW D'38' ;SET 2 INST - (Note) snare drum1.
BRA MIDI210DBJ2 ;
MCHDDRM3SEL: ;DRUM SELECT2 BUTTON.
MOVLW 0x40 ;ATTENUATION AMOUNT.
MOVWF TEMP1 ;
MOVLW D'40' ;SET 3 INST - (Note D#2) .
;
MIDI210DBJ2: ;
BTFSS TXSTA, TRMT ;SET WHEN TxShiftReg IS EMPTY.
BRA MIDI210DBJ2 ;
MOVWF TXREG ;SEND MIDI.
;
MOVF CH2DB2HOLD, W ;
BZ MIDI210DBJ3 ;
;
BTFSS GENFLAGS3, DRM1_BIT ;Percussion1 on/off bit.
BRA MD2PJ1 ;>
MOVF C1_PERCVOL, W ;PERCUSSION VOLUME LEVEL HOLD.
BRA MD2PJND ;
MD2PJ1: ;
BTFSS GENFLAGS8, DRM2_BIT ;Percussion2 on/off bit.
BRA MD2PJ2 ;>
MOVF C2_PERCVOL, W ;PERCUSSION VOLUME LEVEL HOLD.
BRA MD2PJND ;
MD2PJ2: ;
BTFSS GENFLAGS8, DRM3_BIT ;Percussion3 on/off bit.
BRA MD2PJ3 ;>
MOVF C3_PERCVOL, W ;PERCUSSION VOLUME LEVEL HOLD.
MD2PJ3: ;
MD2PJND: ;
MULWF CHORDVOLPOT ;CHORD VOLUME LIVE VALUE.
RLNCF PRODH ;
MOVLW 0xFF ;
CPFSLT PRODL ;
BSF PRODH, 0 ;
;
MOVF TEMP1, W ;ATTENUATE INST1 REF INST2.
MULWF PRODH ;
RLNCF PRODH ;
MOVLW 0xFF ;
CPFSLT PRODL ;
BSF PRODH, 0 ;
MOVF PRODH, W ;
MIDI210DBJ3: ;
BTFSS TXSTA, TRMT ;SET WHEN TxShiftReg IS EMPTY.
BRA MIDI210DBJ3 ;
MOVWF TXREG ;
;
MOVLW 0xB9 ;CONTROL CH.
MOVWF NORPNR1 ;Drum PITCH MODIFY.
MOVLW 0x63 ;
MOVWF NORPNR2 ;
MOVLW 0x18 ;
MOVWF NORPNR3 ;
MOVLW 0x62 ;
MOVWF NORPNR4 ;
MOVLW 0x2C ;
MOVWF NORPNR5 ;
MOVLW 0x06 ;
MOVWF NORPNR6 ;
MOVLW 0x3A ;0x40=NO MODIFY.
;MOVF CHORDFXPOT, W ;HOLD PERCUSSION VOLUME.
MOVWF NORPNR7 ;
CALL NORPN7BYTE ;
;..........
MOVF MAINSBHOLD, W ;2nd Ch10 ON Ch2 INSTRUMENT.
ADDLW 0x08 ;CONVERT TO Ch10.
MIDI210DBJ12: ;
BTFSS TXSTA, TRMT ;SET WHEN TxShiftReg IS EMPTY.
BRA MIDI210DBJ12 ;
MOVWF TXREG ;SEND MIDI.
;
BTFSC GENFLAGS8, DRM2_BIT ;
BRA MCHDDRM22SEL ;
BTFSC GENFLAGS8, DRM3_BIT ;
BRA MCHDDRM32SEL ;
MOVLW 0x7F ;ATTENUATION AMOUNT. (7F).
MOVWF TEMP1 ;
MOVLW D'46' ;(Note 46 A#2) OPEN HI-HAT.
BRA MIDI210DBJ22 ;
MCHDDRM22SEL: ;DRUM SELECT1 BUTTON.
MOVLW 0x50 ;ATTENUATION AMOUNT.
MOVWF TEMP1 ;
MOVLW D'37' ;(Note 37) Side stick.
BRA MIDI210DBJ22 ;
MCHDDRM32SEL: ;DRUM SELECT2 BUTTON.
MOVLW 0x50 ;ATTENUATION AMOUNT.
MOVWF TEMP1 ;
MOVLW D'51' ;(Note 51) .
;
MIDI210DBJ22: ;
BTFSS TXSTA, TRMT ;SET WHEN TxShiftReg IS EMPTY.
BRA MIDI210DBJ22 ;
MOVWF TXREG ;SEND MIDI.
MOVF CH2DB2HOLD, W ;
BZ MIDI210DBJ32 ;
;
BTFSS GENFLAGS3, DRM1_BIT ;Percussion1 on/off bit.
BRA MD22PJ1 ;>
MOVF C1_PERCVOL, W ;PERCUSSION VOLUME LEVEL HOLD.
BRA MD22PJND ;
MD22PJ1: ;
BTFSS GENFLAGS8, DRM2_BIT ;Percussion2 on/off bit.
BRA MD22PJ2 ;>
MOVF C2_PERCVOL, W ;PERCUSSION VOLUME LEVEL HOLD.
BRA MD22PJND ;
MD22PJ2: ;
BTFSS GENFLAGS8, DRM3_BIT ;Percussion3 on/off bit.
BRA MD22PJ3 ;>
MOVF C3_PERCVOL, W ;PERCUSSION VOLUME LEVEL HOLD.
MD22PJ3: ;
MD22PJND: ;
MULWF CHORDVOLPOT ;PERC ON Ch2 LEVEL STORE.
RLNCF PRODH ;
MOVLW 0xFF ;
CPFSLT PRODL ;
BSF PRODH, 0 ;
;
MOVF TEMP1, W ;ATTENUATE INSTRUMENT.
MULWF PRODH ;
RLNCF PRODH ;
MOVLW 0xFF ;
CPFSLT PRODL ;
BSF PRODH, 0 ;
MOVF PRODH, W ;
MIDI210DBJ32: ;
BTFSS TXSTA, TRMT ;SET WHEN TxShiftReg IS EMPTY.
BRA MIDI210DBJ32 ;
MOVWF TXREG ;
;
MOVLW 0xB9 ;CONTROL CH.
MOVWF NORPNR1 ;Drum PITCH MODIFY.
MOVLW 0x63 ;
MOVWF NORPNR2 ;
MOVLW 0x18 ;
MOVWF NORPNR3 ;
MOVLW 0x62 ;
MOVWF NORPNR4 ;
MOVLW 0x2C ;
MOVWF NORPNR5 ;
MOVLW 0x06 ;
MOVWF NORPNR6 ;
MOVLW 0x46 ;0x40=NO MODIFY.
;MOVF CHORDFXPOT, W ;HOLD PERCUSSION VOLUME value.
MOVWF NORPNR7 ;
CALL NORPN7BYTE ;
;
MOVLW D'4' ;LOCK OUT TIME.(4 x 2ms).
MOVWF PERCON2TIME ;
BRA MIDIPERCEND ;
;..........
MIDI210_OTHER: ;Other than note on.
MOVF MAINSBHOLD, W ;
ANDLW 0x0F ;
MOVWF MTEMP ;
MOVLW 0x01 ;IS IT Ch2 ?
CPFSEQ MTEMP ;SKIP IF f=W.
BRA MIDI210END ;
MOVF MAINSBHOLD, W ;
ADDLW 0x08 ;CONVERT TO Ch10.
MOVWF TEMP1 ;
;
MOVF MAINSBHOLD, W ;
ANDLW 0xF0 ;
MOVWF MTEMP ;
MOVLW 0xB0 ;IS IT CTRL CHNG ?
CPFSEQ MTEMP ;SKIP IF f=W.
BRA MIDI210JS1 ;
BRA MIDIPERCEND ;
MIDI210JS1: ;
MOVF TEMP1, W ;
MIDI210DBJ5: ;
BTFSS TXSTA, TRMT ;SET WHEN TxShiftReg IS EMPTY.
BRA MIDI210DBJ5 ;
MOVWF TXREG ;SEND MIDI.
MOVF MAINDB1HOLD, W ;
MIDI210DBJ6: ;
BTFSS TXSTA, TRMT ;SET WHEN TxShiftReg IS EMPTY.
BRA MIDI210DBJ6 ;
MOVWF TXREG ;SEND MIDI.
MOVF MAINDB2HOLD, W ;
MIDI210DBJ7: ;
BTFSS TXSTA, TRMT ;SET WHEN TxShiftReg IS EMPTY.
BRA MIDI210DBJ7 ;
MOVWF TXREG ;SEND MIDI.
BRA MIDIPERCEND ;
MIDI210END: ;
;......................................................................................................
PERC_ON_CH3: ;ADD PERCUSSION ON Ch10 TO Ch3 (BASS).
BTFSS GENFLAGS3, PERCON3_BIT ;
BRA MIDI310END ;
CLRF WREG ;
CPFSEQ PERCON3TIME ;
BRA MIDI310END ;
;
MOVFF MAINSBHOLD, MTEMP ;
MOVLW 0x92 ;NOTE ON Ch3.
CPFSEQ MTEMP ;SKIP IF f=W.
BRA MIDI310_OTHER ;OTHER THAN NOTE ON.
MOVF MAINSBHOLD, W ;
ADDLW 0x07 ;CONVERT TO Ch10.
MIDI310DBJ1: ;
BTFSS TXSTA, TRMT ;SET WHEN TxShiftReg IS EMPTY.
BRA MIDI310DBJ1 ;
MOVWF TXREG ;SEND MIDI.
;
BTFSC GENFLAGS8, DRM2_BIT ;
BRA MBASDRM2SEL ;
BTFSC GENFLAGS8, DRM3_BIT ;
BRA MBASDRM3SEL ;
MOVLW 0x50 ;ATTENUATION AMOUNT.
MOVWF TEMP1 ;
MOVLW D'35' ;SET1 KIT INST-(Note B1) KICK DRUM2.
BRA MIDI310DBJ2 ;
MBASDRM2SEL: ;
MOVLW 0x50 ;ATTENUATION AMOUNT.
MOVWF TEMP1 ;
MOVLW D'35' ;SET 2 INST-(Note E2) JAZZ BD2.
BRA MIDI310DBJ2 ;
MBASDRM3SEL: ;
MOVLW 0x69 ;ATTENUATION AMOUNT.
MOVWF TEMP1 ;
MOVLW D'36' ;SET 3 INST-(Note C2) JAZZ BD1.
;
MIDI310DBJ2: ;
BTFSS TXSTA, TRMT ;SET WHEN TxShiftReg IS EMPTY.
BRA MIDI310DBJ2 ;
MOVWF TXREG ;SEND MIDI.
MOVF CH3DB2HOLD, W ;
BZ MIDI310DBJ3 ;
;
BTFSS GENFLAGS3, DRM1_BIT ;Percussion1 on/off bit.
BRA MD3PJ1 ;>
MOVF B1_PERCVOL, W ;PERCUSSION VOLUME LEVEL HOLD.
BRA MD3PJND ;
MD3PJ1: ;
BTFSS GENFLAGS8, DRM2_BIT ;Percussion2 on/off bit.
BRA MD3PJ2 ;>
MOVF B2_PERCVOL, W ;PERCUSSION VOLUME LEVEL HOLD.
BRA MD3PJND ;
MD3PJ2: ;
BTFSS GENFLAGS8, DRM3_BIT ;Percussion3 on/off bit.
BRA MD3PJ3 ;>
MOVF B3_PERCVOL, W ;PERCUSSION VOLUME LEVEL HOLD.
MD3PJ3: ;
MD3PJND: ;
MULWF BASSVOLPOT ;PERC ON Ch3 LEVEL STORE.
RLNCF PRODH ;
MOVLW 0xFF ;
CPFSLT PRODL ;
BSF PRODH, 0 ;
;
MOVF TEMP1, W ;ATTENUATE INST1 REF INST2.
MULWF PRODH ;
RLNCF PRODH ;
MOVLW 0xFF ;
CPFSLT PRODL ;
BSF PRODH, 0 ;
MOVF PRODH, W ;
MIDI310DBJ3: ;
BTFSS TXSTA, TRMT ;SET WHEN TxShiftReg IS EMPTY.
MOVWF TXREG ;SEND MIDI.
;......
MOVF MAINSBHOLD, W ;2nd Ch10 ON Ch3 INSTRUMENT.
ADDLW 0x07 ;CONVERT TO Ch10.
MIDI310DBJ4: ;
BTFSS TXSTA, TRMT ;SET WHEN TxShiftReg IS EMPTY.
BRA MIDI310DBJ4 ;
MOVWF TXREG ;SEND MIDI.
;
BTFSC GENFLAGS8, DRM2_BIT ;
BRA MBASDRM22SEL ;
BTFSC GENFLAGS8, DRM3_BIT ;
BRA MBASDRM32SEL ;
MOVLW 0x7F ;ATTENUATION AMOUNT. (7F).
MOVWF TEMP1 ;
MOVLW D'46' ;SET1 KIT INST -
BRA MIDI310DBJ5 ; (Note 46 A#2) OPEN HI-HAT.
MBASDRM22SEL: ;
MOVLW 0x48 ;ATTENUATION AMOUNT.
MOVWF TEMP1 ;
MOVLW D'41' ;SET 2 INST-(Note ) RIDE BELL.
BRA MIDI310DBJ5 ;
MBASDRM32SEL: ;
MOVLW 0x70 ;ATTENUATION AMOUNT.
MOVWF TEMP1 ;
MOVLW D'59' ;SET 3 INST-(Note )RIDE CYMBAL 2.
;
MIDI310DBJ5: ;
BTFSS TXSTA, TRMT ;SET WHEN TxShiftReg IS EMPTY.
BRA MIDI310DBJ5 ;
MOVWF TXREG ;SEND MIDI.
MOVF CH3DB2HOLD, W ;
BZ MIDI310DBJ6 ;
;
BTFSS GENFLAGS3, DRM1_BIT ;Percussion1 on/off bit.
BRA MD33PJ1 ;>
MOVF B1_PERCVOL, W ;PERCUSSION VOLUME LEVEL HOLD.
BRA MD33PJND ;
MD33PJ1: ;
BTFSS GENFLAGS8, DRM2_BIT ;Percussion2 on/off bit.
BRA MD33PJ2 ;>
MOVF B2_PERCVOL, W ;PERCUSSION VOLUME LEVEL HOLD.
BRA MD33PJND ;
MD33PJ2: ;
BTFSS GENFLAGS8, DRM3_BIT ;Percussion3 on/off bit.
BRA MD33PJ3 ;>
MOVF B3_PERCVOL, W ;PERCUSSION VOLUME LEVEL HOLD.
MD33PJ3: ;
MD33PJND: ;
MULWF BASSVOLPOT ;PERC ON Ch3 LEVEL STORE.
RLNCF PRODH ;
MOVLW 0xFF ;
CPFSLT PRODL ;
BSF PRODH, 0 ;
;
MOVF TEMP1, W ;ATTENUATE INST1 REF INST2.
MULWF PRODH ;
RLNCF PRODH ;
MOVLW 0xFF ;
CPFSLT PRODL ;
BSF PRODH, 0 ;
MOVF PRODH, W ;
MIDI310DBJ6: ;
BTFSS TXSTA, TRMT ;SET WHEN TxShiftReg IS EMPTY.
MOVWF TXREG ;SEND MIDI.
;
MOVLW D'1' ;LOCK OUT TIME.(1 x 2ms).
MOVWF PERCON3TIME ;
BRA MIDIPERCEND ;
;........
MIDI310_OTHER: ;Other than note on.
MOVF MAINSBHOLD, W ;
ANDLW 0x0F ;
MOVWF MTEMP ;
MOVLW 0x02 ;IS IT Ch3 ?
CPFSEQ MTEMP ;SKIP IF f=W.
BRA MIDI310END ;
MOVF MAINSBHOLD, W ;
ADDLW 0x07 ;CONVERT TO Ch10.
MOVWF TEMP1 ;
;
MOVF MAINSBHOLD, W ;NO CONTROL CHANGES ON PERC.
ANDLW 0xF0 ;
MOVWF MTEMP ;
MOVLW 0xB0 ;IS IT CTRL CHNG ?
CPFSEQ MTEMP ;SKIP IF f=W.
BRA MIDI310JS1 ;
BRA MIDIPERCEND ;
MIDI310JS1: ;
MOVF TEMP1, W ;
MIDI310PJ5: ;
BTFSS TXSTA, TRMT ;SET WHEN TxShiftReg IS EMPTY.
BRA MIDI310PJ5 ;
MOVWF TXREG ;SEND MIDI.
MOVF MAINDB1HOLD, W ;
MIDI310PJ6: ;
BTFSS TXSTA, TRMT ;SET WHEN TxShiftReg IS EMPTY.
BRA MIDI310PJ6 ;
MOVWF TXREG ;SEND MIDI.
MOVF MAINDB2HOLD, W ;
MIDI310PJ7: ;
BTFSS TXSTA, TRMT ;SET WHEN TxShiftReg IS EMPTY.
BRA MIDI310PJ7 ;
MOVWF TXREG ;SEND MIDI.
MIDI310END: ;
;
MIDIPERCEND: ;END OF LEFT-HAND MANUAL PERCUSSION.
;....................................................................
;MOVLW 0xB9 ;CONTROL CH10.
;MOVWF NORPNR1 ;tune MODIFY.
;MOVLW 0x63 ;
;MOVWF NORPNR2 ;
;MOVLW 0x18 ;
;MOVWF NORPNR3 ;
;MOVLW 0x62 ;
;MOVWF NORPNR4 ;
;MOVLW d'46' ;Note.
;MOVWF NORPNR5 ;
;MOVLW 0x06 ;
;MOVWF NORPNR6 ;
;MOVF BASSFXPOT, W ;TUNE. 0x40=NO MODIFY.
;MOVWF NORPNR7 ;
;CALL NORPN7BYTE ;
;
;..........................................................................................................................................................................
MIDI2END: ;
BCF MIDISTAT2, SEND2DB_FLAG ;2DB MESSAGE READY.
;BRA MIDINTXIT ;
;...............................................................................
;...............................................................................
MIDIRSTST: ;
;....................................
MIDINTXIT: ;
;....................................................................
MIDIEXIT: ;
;....................................................................
AEDITSND: ;CALL SOUNDEDIT ;TEST MODE SOUND EDIT CONTROLS ???.
;......................................................................................................
RETURN ;END OF MIDI SORTING ROUTINE.
;========================================================================================================
;**********************************************************************************************************************************************************************
PROGCHNGSEND: ;BANK SELECT THEN PROGRAM CHANGE.
BTFSC PROGCHHOLD2, 7 ;BAIL OUT IF GREATER THAN 0x7F, AS
BRA PROGCHNGSNDEND ;IT IS A BLANK SPACE.
PROGCHNG1: ;............................
MOVLW 0xB0 ;BANK SELECT MSB.
PROGCHSNDW0: ;
BTFSS TXSTA, TRMT ;SET WHEN TxShiftReg IS EMPTY.
BRA PROGCHSNDW0 ;
MOVWF TXREG ;SEND MIDI.
MOVLW 0x00 ;0=GM. BANK SELECT.
PROGCHSNDW00: ;
BTFSS TXSTA, TRMT ;SET WHEN TxShiftReg IS EMPTY.
BRA PROGCHSNDW00 ;
MOVWF TXREG ;SEND MIDI.
;
MOVLW 0xFD ;EEPROM BANK MSB ADDRESS.
MOVWF EEADR ;
BCF EECON1, EEPGD ;SELECT DATA EEPROM MEMORY.
BCF EECON1, CFGS ;
BSF EECON1, RD ;ENABLE EEPROM READ.
MOVF EEDATA, W ;VALUE IN WREG.
PROGCHSNDW01: ;
BTFSS TXSTA, TRMT ;SET WHEN TxShiftReg IS EMPTY.
BRA PROGCHSNDW01 ;
MOVWF TXREG ;SEND MIDI...................
MOVLW 0xB0 ;BANK SELECT LSB.
PROGCHSNDW02: ;
BTFSS TXSTA, TRMT ;SET WHEN TxShiftReg IS EMPTY.
BRA PROGCHSNDW02 ;
MOVWF TXREG ;SEND MIDI.
MOVLW 0x20 ;0=GM. BANK SELECT.
PROGCHSNDW03: ;
BTFSS TXSTA, TRMT ;SET WHEN TxShiftReg IS EMPTY.
BRA PROGCHSNDW03 ;
MOVWF TXREG ;SEND MIDI.
;
MOVLW 0xFC ;EEPROM BANKLSB ADDRESS.
MOVWF EEADR ;
BCF EECON1, EEPGD ;SELECT DATA EEPROM MEMORY.
BCF EECON1, CFGS ;
BSF EECON1, RD ;ENABLE EEPROM READ.
MOVF EEDATA, W ;VALUE IN WREG.
PROGCHSNDW04: ;
BTFSS TXSTA, TRMT ;SET WHEN TxShiftReg IS EMPTY.
BRA PROGCHSNDW04 ;
MOVWF TXREG ;SEND MIDI.
;....................................
PROGCHNGDIR: ;
MOVF PROGCHHOLD1, W ;PROG CHANGE CHANNEL.
PROGCHSNDW1: ;
BTFSS TXSTA, TRMT ;SET WHEN TxShiftReg IS EMPTY.
BRA PROGCHSNDW1 ;
MOVWF TXREG ;SEND MIDI.
;
MOVF PROGCHHOLD2, W ;PROG CHANGE INSTRUMENT NUMBER.
PROGCHSNDW2: ;
BTFSS TXSTA, TRMT ;SET WHEN TxShiftReg IS EMPTY.
BRA PROGCHSNDW2 ;
MOVWF TXREG ;SEND MIDI.
PROGCHNGSNDEND: ;
RETURN ;
;***********************************************************************************************************************************************************************
POTSCAN: ;DOES 1 POT SCAN FOR EACH CALL HERE.
BSF ADCON0, GO ;START A/D.
DECFSZ POTSCNCNT ;
BRA POTLOOP1 ;
MOVLW 0x08 ;RELOAD POT LOOP COUNTER.
MOVWF POTSCNCNT ;
;.............................................................................................................................................................
POTLOOP1: ;
MOVLW 0x08 ;
CPFSEQ POTSCNCNT ;
BRA POTLOOP2 ;
POT1J1: ;BASS VOL POT.
BTFSC ADCON0, GO ;
BRA POT1J1 ;
RRNCF ADRESH, F ;RUNNING AVERAGE FILTER.
RRNCF ADRESH, F ;
RRNCF ADRESH, F ;
MOVLW 0x1F ;
ANDWF ADRESH, F ;DIVIDE INPUT BY 8.
;
RRNCF POT1FILT, W ;
RRNCF WREG, F ;
RRNCF WREG, F ;
MOVWF TEMPS ;
MOVLW 0x1F ;
ANDWF TEMPS, W ;FIND 1/8th OF STORED VALUES.
;
SUBWF POT1FILT, W ;SUBTRACT 1/8 OF STORED VALUE FROM STORED VALUE.
ADDWF ADRESH, W ;ADD 1/8th OF INPUT VALUE.
MOVWF POT1FILT ;THIS IS THE NEW WHOLE STORED VALUE.
BCF STATUS, C ;
RRCF WREG, F ;DIVIDE OUTPUT BY 2 FOR MIDI SCALING (0x7F, 128 MAX).
;
MOVWF SCANTEMP1 ;
XORWF BASSVOLPOT, W ;
MOVFF SCANTEMP1, BASSVOLPOT ;
BZ POT12SET ;
BSF POTSTAT, 6 ;POT_SEND_FLAG
;
MOVF BASSVOLPOT, W ;
SUBLW 0x7F ;(1-Vin).
MOVWF BASSVOLPOT ;
MULWF BASSVOLPOT ;(1-Vin)*(1-Vin)
RLNCF PRODH, F ;SCALE.
MOVLW 0xFF ;
CPFSLT PRODL ;
BSF PRODH, 0 ;
;
MOVF PRODH, W ;
MULWF BASSVOLPOT ;
RLNCF PRODH, F ;
MOVLW 0xFF ;
CPFSLT PRODL ;
BSF PRODH, 0 ;
;
MOVF PRODH, W ;
SUBLW 0x7F ;1-[(1-Vin)*(1-Vin)] = Vin^2-2Vin.
MOVWF POTSTORE ;
MOVFF SCANTEMP1, BASSVOLPOT ;PUT SCANNED VALUE BACK IN BASSVOLPOT.
;
MOVLW 0xB2 ;BASS CHANNEL 3.
MOVWF POTCHAN ;
MOVLW 0x07 ;VOL = CONTROL 07.
MOVWF POTCONT ;
POT12SET: ;
MOVLW B'10111001' ;01 XXX 001. AN7 = BASS Fx.
MOVWF ADCON0 ;SELECT CHAN.
BRA POTEXIT ;LEAVES SAMPLE/HOLD TIME.
;.............................................................................
POTLOOP2: ;
MOVLW 0x07 ;
CPFSEQ POTSCNCNT ;
BRA POTLOOP3 ;
POT2J1: ;BASS Fx POT.
BTFSC ADCON0, GO ;WAIT FOR A/D TO FINISH.
BRA POT2J1 ;
RRNCF ADRESH, F ;RUNNING AVERAGE FILTER.
RRNCF ADRESH, F ;
RRNCF ADRESH, F ;
MOVLW 0x1F ;
ANDWF ADRESH, F ;DIVIDE INPUT BY 8.
;
RRNCF POT2FILT, W ;
RRNCF WREG, F ;
RRNCF WREG, F ;
MOVWF TEMPS ;
MOVLW 0x1F ;
ANDWF TEMPS, W ;FIND 1/8th OF STORED VALUES.
;
SUBWF POT2FILT, W ;SUBTRACT 1/8 OF STORED VALUE FROM STORED VALUE.
ADDWF ADRESH, W ;ADD 1/8th OF INPUT VALUE.
MOVWF POT2FILT ;THIS IS THE NEW WHOLE STORED VALUE.
BCF STATUS, C ;
RRCF WREG, F ;DIVIDE OUTPUT BY 2 FOR MIDI SCALING (0x7F, 127 MAX).
;
MOVWF SCANTEMP1 ;
XORWF BASSFXPOT, W ;SET STATUS FLAGS.
MOVFF SCANTEMP1, BASSFXPOT ;
BZ POT23SET ;
;...............................................................................
BTFSS GENFLAGS12, BENDVOLED_BIT ;BEND EDIT MODE TEST.
BRA POT23J01 ;
MOVF BASSFXPOT, W ;BEND RECOVERY TIME (ALL 8 BITS).
MOVWF PBTIMEHOLD ;
MOVLW 0x03 ;
CPFSGT PBTIMEHOLD ;SKIP IF F>W.
CLRF PBTIMEHOLD ;MAKE AN END STOP IF LESS THAN 04.
MOVF PBTIMEHOLD, W ;
SUBLW 0x7F ;REVERSE POT ACTION.
MOVWF BENDTIMPOT ;
;
BSF GENFLAGS10, DIP_CHNG_LED ;Dip control change led.
BRA POT23SET ;BYPASS BASS Fx SEND.
;
POT23J01: ;..................................................................
BTFSS GENFLAGS11, SOLOVOLED_BIT ;SOLO EDIT MODE TEST.
BRA POT23J001 ;
MOVFF BASSFXPOT, SOLOVAL ;
MOVFF BASSFXPOT, SOLOVALPOT ;HOLD VALUE TO SEND TO EEPROM.
CALL SEND_EXPR ;SEND EXPRESSION (SOLO) VALUES.
BSF GENFLAGS10, DIP_CHNG_LED ;Dip control change led.
BRA POT23SET ;BYPASS BASS Fx SEND.
;
POT23J001: ;..................................................................
BTFSS GENFLAGS3, PERCVOLED_BIT ;PERCUSSION EDIT MODE TEST.
BRA POT23J1 ;
MOVF BASSFXPOT, W ;HOLD PERCUSSION VOLUME.
;
BTFSS GENFLAGS3, DRM1_BIT ;Percussion1 on/off bit.
BRA POT2PJ1 ;>
MOVWF B1_PERCVOL ;PERCUSSION VOLUME LEVEL HOLD.
BRA POT2PJND ;
POT2PJ1: ;
BTFSS GENFLAGS8, DRM2_BIT ;Percussion2 on/off bit.
BRA POT2PJ2 ;>
MOVWF B2_PERCVOL ;PERCUSSION VOLUME LEVEL HOLD.
BRA POT2PJND ;
POT2PJ2: ;
BTFSS GENFLAGS8, DRM3_BIT ;Percussion3 on/off bit.
BRA POT2PJ3 ;>
MOVWF B3_PERCVOL ;PERCUSSION VOLUME LEVEL HOLD.
POT2PJ3: ;
POT2PJND: ;...............................................
BSF GENFLAGS10, DIP_CHNG_LED ;Dip control change led.
BRA POT23SET ;BYPASS BASS Fx SEND.
POT23J1: ;
BSF POTSTAT, 7 ;POT_SEND_FLAG
MOVFF BASSFXPOT, POTSTORE ;
MOVLW 0xB2 ;BASS CHANNEL 3.
MOVWF POTCHAN ;
MOVLW 0x5B ;REVERB SEND LEVEL = CONTROL 5B.
MOVWF POTCONT ;
POT23SET: ;
MOVLW B'10101001' ;01 XXX 001. AN5 = .
MOVWF ADCON0 ;SELECT CHAN.
BRA POTEXIT ;LEAVES SAMPLE/HOLD TIME.
;.............................................................................
POTLOOP3: ;
MOVLW 0x06 ;
CPFSEQ POTSCNCNT ;
BRA POTLOOP4 ;
POT3J1: ;
BTFSC ADCON0, GO ;CHORD VOL.
BRA POT3J1 ;
RRNCF ADRESH, F ;RUNNING AVERAGE FILTER.
RRNCF ADRESH, F ;
RRNCF ADRESH, F ;
MOVLW 0x1F ;
ANDWF ADRESH, F ;DIVIDE INPUT BY 8.
;
RRNCF POT3FILT, W ;
RRNCF WREG, F ;
RRNCF WREG, F ;
MOVWF TEMPS ;
MOVLW 0x1F ;
ANDWF TEMPS, W ;FIND 1/8th OF STORED VALUES.
;
SUBWF POT3FILT, W ;SUBTRACT 1/8 OF STORED VALUE FROM STORED VALUE.
ADDWF ADRESH, W ;ADD 1/8th OF INPUT VALUE.
MOVWF POT3FILT ;THIS IS THE NEW WHOLE STORED VALUE.
BCF STATUS, C ;
RRCF WREG, F ;DIVIDE OUTPUT BY 2 FOR MIDI SCALING (0x7F, 128 MAX).
;
MOVWF SCANTEMP1 ;
XORWF CHORDVOLPOT, 0 ;
MOVFF SCANTEMP1, CHORDVOLPOT ;
BZ POT34SET ;
BSF POTSTAT, 5 ;POT_SEND_FLAG
;
MOVF CHORDVOLPOT, W ;
SUBLW 0x7F ;
MOVWF CHORDVOLPOT ;
MULWF CHORDVOLPOT ;
RLNCF PRODH, 1 ;
MOVLW 0xFF ;
CPFSLT PRODL ;
BSF PRODH, 0 ;
;
;MOVF PRODH, W ;
;MULWF CHORDVOLPOT ;
;RLNCF PRODH, 1 ;
;MOVLW 0xFF ;
;CPFSLT PRODL ;
;BSF PRODH, 0 ;
;
MOVF PRODH, W ;
SUBLW 0x7F ;1-[(1-Vin)*(1-Vin)] = Vin^2-2Vin.
MOVWF POTSTORE ;
MOVFF SCANTEMP1, CHORDVOLPOT ;PUT SCANNED VALUE BACK IN CHORDVOLPOT.
;
MOVLW 0xB1 ;CHORD CHANNEL 2.
MOVWF POTCHAN ;
MOVLW 0x07 ;VOL = CONTROL 07.
MOVWF POTCONT ;
POT34SET: ;
MOVLW B'10100001' ;01 XXX 001.
MOVWF ADCON0 ;SELECT CHAN.
BRA POTEXIT ;LEAVES SAMPLE/HOLD TIME.
;.............................................................................
POTLOOP4: ;
MOVLW 0x05 ;
CPFSEQ POTSCNCNT ;
BRA POTLOOP5 ;
POT4J1: ;CHORDS Fx CONTROL.
BTFSC ADCON0, GO ;
BRA POT4J1 ;
RRNCF ADRESH, F ;RUNNING AVERAGE FILTER.
RRNCF ADRESH, F ;
RRNCF ADRESH, F ;
MOVLW 0x1F ;
ANDWF ADRESH, F ;DIVIDE INPUT BY 8.
;
RRNCF POT4FILT, W ;
RRNCF WREG, F ;
RRNCF WREG, F ;
MOVWF TEMPS ;
MOVLW 0x1F ;
ANDWF TEMPS, W ;FIND 1/8th OF STORED VALUES.
;
SUBWF POT4FILT, W ;SUBTRACT 1/8 OF STORED VALUE FROM STORED VALUE.
ADDWF ADRESH, W ;ADD 1/8th OF INPUT VALUE.
MOVWF POT4FILT ;THIS IS THE NEW WHOLE STORED VALUE.
BCF STATUS, C ;
RRCF WREG, F ;DIVIDE OUTPUT BY 2 FOR MIDI SCALING (0x7F, 128 MAX).
;
MOVWF SCANTEMP1 ;
XORWF CHORDFXPOT, 0 ;
MOVFF SCANTEMP1, CHORDFXPOT ;
BZ POT45SET ;
;...............................................................................
BTFSS GENFLAGS12, BENDVOLED_BIT ;BEND EDIT MODE TEST.
BRA POT4J001 ;
MOVF CHORDFXPOT, W ;
BCF STATUS, C ;
RRCF WREG, F ;DIVIDE OUTPUT BY 2 FOR MIDI SCALING (0x40 CENTRE FOR PBEND).
MOVWF BENDVALPOT ;
;
MOVF BENDVALPOT, W ;
MOVWF C1_PERCVOL ;PERCUSSION VOLUME LEVEL HOLD.
BRA POT4PJND ;
POT4PJ1: ;
BTFSS GENFLAGS8, DRM2_BIT ;Percussion2 on/off bit.
BRA POT4PJ2 ;>
MOVWF C2_PERCVOL ;PERCUSSION VOLUME LEVEL HOLD.
BRA POT4PJND ;
POT4PJ2: ;
BTFSS GENFLAGS8, DRM3_BIT ;Percussion3 on/off bit.
BRA POT4PJ3 ;>
MOVWF C3_PERCVOL ;PERCUSSION VOLUME LEVEL HOLD.
POT4PJ3: ;
POT4PJND: ;
BSF GENFLAGS10, DIP_CHNG_LED ;Dip control change led.
BRA POT45SET ;BYPASS BASS Fx SEND.
POT4J01: ;
;.............................................................................
BSF POTSTAT, 4 ;POT_SEND_FLAG
MOVFF CHORDFXPOT, POTSTORE ;
MOVLW 0xB1 ;CHORD CHANNEL 2.
MOVWF POTCHAN ;
MOVLW 0x5B ;REVERB SEND LEVEL = CONTROL 5B.
MOVWF POTCONT ;
POT45SET: ;
MOVLW B'10011001' ;01 XXX 001.
MOVWF ADCON0 ;SELECT CHAN.
BRA POTEXIT ;LEAVES SAMPLE/HOLD TIME.
;................................................................................................................................................................................
POTLOOP5: ;
MOVLW 0x04 ;
CPFSEQ POTSCNCNT ;
BRA POTLOOP6 ;
POT5J1: ;
BTFSC ADCON0, GO ;RH1 VOL CONTROL.
BRA POT5J1 ;
RRNCF ADRESH, F ;RUNNING AVERAGE FILTER.
RRNCF ADRESH, F ;
RRNCF ADRESH, F ;
MOVLW 0x1F ;
ANDWF ADRESH, F ;DIVIDE INPUT BY 8.
;
RRNCF POT5FILT, W ;
RRNCF WREG, F ;
RRNCF WREG, F ;
MOVWF TEMPS ;
MOVLW 0x1F ;
ANDWF TEMPS, W ;FIND 1/8th OF STORED VALUES.
;
SUBWF POT5FILT, W ;SUBTRACT 1/8 OF STORED VALUE FROM STORED VALUE.
ADDWF ADRESH, W ;ADD 1/8th OF INPUT VALUE.
MOVWF POT5FILT ;THIS IS THE NEW WHOLE STORED VALUE.
BCF STATUS, C ;
RRCF WREG, F ;DIVIDE OUTPUT BY 2 FOR MIDI SCALING (0x7F, 128 MAX).
;
MOVWF SCANTEMP1 ;
XORWF RH1VOLPOT, 0 ;
MOVFF SCANTEMP1, RH1VOLPOT ;
BZ POT56SET ;
BSF POTSTAT, 3 ;POT_SEND_FLAG
;
MOVF RH1VOLPOT, W ;
SUBLW 0x7C ;
MOVWF RH1VOLPOT ;
MULWF RH1VOLPOT ;
RLNCF PRODH, 1 ;
MOVLW 0xFF ;
CPFSLT PRODL ;
BSF PRODH, 0 ;
MOVF PRODH, W ;
SUBLW 0x7F ;1-[(1-Vin)*(1-Vin)] = Vin^2-2Vin.
MOVWF POTSTORE ;
MOVFF SCANTEMP1, RH1VOLPOT ;PUT SCANNED VALUE BACK IN RH1VOLPOT.
;
MOVLW 0xB0 ;RIGHT-HAND CHANNEL 1.
MOVWF POTCHAN ;
MOVLW 0x07 ;VOL = CONTROL 07.
MOVWF POTCONT ;
POT56SET: ;
MOVLW B'10010001' ;01 XXX 001.
MOVWF ADCON0 ;SELECT CHAN.
BRA POTEXIT ;LEAVES SAMPLE/HOLD TIME.
;.............................................................................
POTLOOP6: ;RH1 Fx POT.
MOVLW 0x03 ;
CPFSEQ POTSCNCNT ;
BRA POTLOOP7 ;
POT6J1: ;
BTFSC ADCON0, GO ;
BRA POT6J1 ;
RRNCF ADRESH, F ;RUNNING AVERAGE FILTER.
RRNCF ADRESH, F ;
RRNCF ADRESH, F ;
MOVLW 0x1F ;
ANDWF ADRESH, F ;DIVIDE INPUT BY 8.
;
RRNCF POT6FILT, W ;
RRNCF WREG, F ;
RRNCF WREG, F ;
MOVWF TEMPS ;
MOVLW 0x1F ;
ANDWF TEMPS, W ;FIND 1/8th OF STORED VALUES.
;
SUBWF POT6FILT, W ;SUBTRACT 1/8 OF STORED VALUE FROM STORED VALUE.
ADDWF ADRESH, W ;ADD 1/8th OF INPUT VALUE.
MOVWF POT6FILT ;THIS IS THE NEW WHOLE STORED VALUE.
BCF STATUS, C ;
RRCF WREG, F ;DIVIDE OUTPUT BY 2 FOR MIDI SCALING (0x7F, 128 MAX).
;
MOVWF SCANTEMP1 ;
XORWF RH1FXPOT, W ;
MOVFF SCANTEMP1, RH1FXPOT ;
BZ POT67SET ;
;......................................................................
BTFSS GENFLAGS7, TREMVOLED_BIT ;TREMOLO EDIT MODE TEST.
BRA POT6J2 ;
;
MOVF RH1FXPOT, W ;
MOVWF TREMDEPTH ;HOLD TREMOLO DEPTH.
;
BSF GENFLAGS6, SYSX11_B7_FLG ;
MOVLW 0x27 ;SELECT CHANNEL 1!
MOVWF SYSX11BYTE7 ;
MOVLW 0x26 ;SELECT TREM DEPTH.
MOVWF SYSX11BYTE8 ;
MOVLW 0x7F ;MOD DEPTH VALUE.
MOVWF SYSX11BYTE9 ;
CALL SYSX11BYTE ;SET MOD LFO1 DCA DEPTH.
;
BSF GENFLAGS6, SYSX11_B7_FLG ;
MOVLW 0x21 ;SELECT CHANNEL 1!
MOVWF SYSX11BYTE7 ;
MOVLW 0x26 ;SELECT TREM DEPTH.
MOVWF SYSX11BYTE8 ;
MOVLW 0x7F ;MOD DEPTH VALUE.
MOVWF SYSX11BYTE9 ;
CALL SYSX11BYTE ;SET MOD LFO1 DCA DEPTH.
;
BSF GENFLAGS6, SYSX11_B7_FLG ;
MOVLW 0x25 ;SELECT CHANNEL 5!
MOVWF SYSX11BYTE7 ;
CALL SYSX11BYTE ;SET MOD LFO1 DCA DEPTH.
;
BSF GENFLAGS6, SYSX11_B7_FLG ;
MOVLW 0x24 ;SELECT CHANNEL 4!
MOVWF SYSX11BYTE7 ;
CALL SYSX11BYTE ;SET MOD LFO1 DCA DEPTH.
;
;
MOVLW 0xD0 ;CHAN PRESSURE CH1.
TREM10: ;
BTFSS TXSTA, TRMT ;SET WHEN TxShiftReg IS EMPTY.
BRA TREM10 ;
MOVWF TXREG ;SEND MIDI.
MOVF TREMDEPTH, W ;DATA BYTE.
TREM11: ;
BTFSS TXSTA, TRMT ;SET WHEN TxShiftReg IS EMPTY.
BRA TREM11 ;
MOVWF TXREG ;SEND MIDI.
;
MOVLW 0xD4 ;CHAN PRESSURE CH5.
TREM20: ;
BTFSS TXSTA, TRMT ;SET WHEN TxShiftReg IS EMPTY.
BRA TREM20 ;
MOVWF TXREG ;SEND MIDI.
MOVF TREMDEPTH, W ;DATA BYTE.
TREM21: ;
BTFSS TXSTA, TRMT ;SET WHEN TxShiftReg IS EMPTY.
BRA TREM21 ;
MOVWF TXREG ;SEND MIDI.
;
MOVLW 0xD3 ;CHAN PRESSURE CH4.
TREM30: ;
BTFSS TXSTA, TRMT ;SET WHEN TxShiftReg IS EMPTY.
BRA TREM30 ;
MOVWF TXREG ;SEND MIDI.
MOVF TREMDEPTH, W ;DATA BYTE.
TREM31: ;
BTFSS TXSTA, TRMT ;SET WHEN TxShiftReg IS EMPTY.
BRA TREM31 ;
MOVWF TXREG ;SEND MIDI.
;
MOVLW 0xD6 ;CHAN PRESSURE CH7.
TREM40: ;
BTFSS TXSTA, TRMT ;SET WHEN TxShiftReg IS EMPTY.
BRA TREM40 ;
MOVWF TXREG ;SEND MIDI.
MOVF TREMDEPTH, W ;DATA BYTE.
TREM41: ;
BTFSS TXSTA, TRMT ;SET WHEN TxShiftReg IS EMPTY.
BRA TREM41 ;
MOVWF TXREG ;SEND MIDI.
;.................................................................
BSF GENFLAGS10, DIP_CHNG_LED ;Dip control change led.
BRA POT67SET ;BYPASS RH1 Fx SEND.
POT6J2: ;...................................................................
BSF POTSTAT, 2 ;POT_SEND_FLAG
MOVFF RH1FXPOT, POTSTORE ;
MOVLW 0xB0 ;RIGHT-HAND CHANNEL 1.
MOVWF POTCHAN ;
MOVLW 0x5B ;REVERB SEND LEVEL = CONTROL 5B.
MOVWF POTCONT ;
POT67SET: ;
MOVLW B'10001001' ;01 XXX 001.
MOVWF ADCON0 ;SELECT CHAN.
BRA POTEXIT ;LEAVES SAMPLE/HOLD TIME.
;........................................................................................................................................................................................
POTLOOP7: ;
MOVLW 0x02 ;
CPFSEQ POTSCNCNT ;
BRA POTLOOP8 ;
POT7J1: ;RH2 Fx POT.
BTFSC ADCON0, GO ;
BRA POT7J1 ;
RRNCF ADRESH, F ;RUNNING AVERAGE FILTER.
RRNCF ADRESH, F ;
RRNCF ADRESH, F ;
MOVLW 0x1F ;
ANDWF ADRESH, F ;DIVIDE INPUT BY 8.
;
RRNCF POT7FILT, W ;
RRNCF WREG, F ;
RRNCF WREG, F ;
MOVWF TEMPS ;
MOVLW 0x1F ;
ANDWF TEMPS, W ;FIND 1/8th OF STORED VALUES.
;
SUBWF POT7FILT, W ;SUBTRACT 1/8 OF STORED VALUE FROM STORED VALUE.
ADDWF ADRESH, W ;ADD 1/8th OF INPUT VALUE.
MOVWF POT7FILT ;THIS IS THE NEW WHOLE STORED VALUE.
BCF STATUS, C ;
RRCF WREG, F ;DIVIDE OUTPUT BY 2 FOR MIDI SCALING (0x7F, 128 MAX).
;
MOVWF SCANTEMP1 ;
XORWF RH2FXPOT, 0 ;
MOVFF SCANTEMP1, RH2FXPOT ;
BZ POT78SET ;
;.......................................................................
BTFSS GENFLAGS7, TREMVOLED_BIT ;TREMOLO EDIT MODE TEST.
BRA POT7J2 ;
;
MOVLW 0x0F ;
CPFSLT RH2FXPOT ;SKIP IF F
;........................................................................
BENDLOEDJ1: ;Once button pressed once enter here.
BTFSS RH11_ON_FLAGS, 7 ;
BRA BENDEDJ2 ;
BRA BENDINJ1 ;
BENDEDJ2: ;
BCF GENFLAGS12, BENDTERM_BIT ;
;
BTFSC GENFLAGS12, BENDWAIT_BIT ;NOW IN EDIT MODE.
BRA BEND_FLSH_LEDS ;
TSTFSZ DRM1EDTIME ;HAS BUTTON BEEN HELD DOWN ENOUGH.
BRA BENDSCANORM ;NO, NOT LONG ENOUGH YET.
BSF GENFLAGS12, BENDVOLED_BIT ;BEND EDIT MODE SET.
BSF GENFLAGS12, BENDWAIT_BIT ;SET EDIT MODE ON.
;
BEND_FLSH_LEDS: ;..........................................
BTFSC GENFLAGS3, PERCVOLED_BIT ;PERC EDIT MODE IS ON.
BRA BEND_ED_CLR ;EXIT BEND EDIT IF PERC EDIT MODE ATTEMPTED.
BTFSC GENFLAGS7, TREMVOLED_BIT ;TREM EDIT MODE IS ON.
BRA BEND_ED_CLR ;EXIT BEND EDIT IF TREM EDIT MODE ATTEMPTED.
BTFSC GENFLAGS11, SOLOVOLED_BIT ;
BRA BEND_ED_CLR ;EXIT BEND EDIT IF SOLO EDIT MODE ATTEMPTED.
;
TSTFSZ MTUNFLASH ;
BRA BENDSCANJ2 ;
BTG DISPLAYREG, BASSBANK ;BASSOCTBIT=1=BANK B. LED IS OFF.
BTG DISPLAYREG, CHORDBANK ;BASSSOCTBIT=1=BANK B. LED IS OFF.
MOVLW D'20' ;LED FLASH RATE (x2ms.)
MOVWF MTUNFLASH ;
BENDSCANJ2: ;
BRA BEND_ED_END ;EXIT >
;................................................................................................
BENDINJ1: ;
BTFSC GENFLAGS12, BENDTERM_BIT ;
BRA BENDTERM1 ;
MOVLW D'100' ;Button ACTIVATE INTERVAL.(x10ms).
MOVWF PBBUTTIME ;START BUTTON EXIT TIMER.
BSF GENFLAGS12, BENDTERM_BIT ;
BENDTERM1: ;
TSTFSZ PBBUTTIME ;
BRA BENDTERM3 ;
BRA BENDTERM2 ;
;................................................................................................
BENDTERM3: ;
TSTFSZ MTUNFLASH ;
BRA BENDTERM3J1 ;
BTG DISPLAYREG, BASSBANK ;BASSOCTBIT=1=BANK B. LED IS OFF.
BTG DISPLAYREG, CHORDBANK ;BASSSOCTBIT=1=BANK B. LED IS OFF.
MOVLW D'20' ;LED FLASH RATE (x2ms.)
MOVWF MTUNFLASH ;
BENDTERM3J1: ;
BRA BEND_ED_END ;EXIT >
;................................................................................................
BENDTERM2: ;
MOVF BENDVALPOT, W ;BEND VOLUME LEVEL.
MOVWF EEDATA ;VALUE TO WRITE TO EEPROM.
MOVLW 0xE8 ;PB AMOUNT.
MOVWF EEADR ;DATA MEMORY TO WRITE TO.
CALL EEPROM_WRITE ;
;
MOVF BENDTIMPOT, W ;BEND VOLUME LEVEL.
MOVWF EEDATA ;VALUE TO WRITE TO EEPROM.
MOVLW 0xE9 ;PB TIME.
MOVWF EEADR ;DATA MEMORY TO WRITE TO.
CALL EEPROM_WRITE ;
;
BEND_ED_CLR: ;
BTFSS GENFLAGS1, BASSOCTBIT ;
BSF DISPLAYREG, BASSBANK ;BASSOCTBIT=0=BANK A. LED IS ON.
BTFSC GENFLAGS1, BASSOCTBIT ;
BCF DISPLAYREG, BASSBANK ;BASSOCTBIT=1=BANK B. LED IS OFF.
;
BTFSS GENFLAGS1, CHORDOCTBIT ;
BSF DISPLAYREG, CHORDBANK ;BASSOCTBIT=0=BANK A. LED IS ON.
BTFSC GENFLAGS1, CHORDOCTBIT ;
BCF DISPLAYREG, CHORDBANK ;BASSOCTBIT=1=BANK B. LED IS OFF.
;
BCF GENFLAGS12, BENDVOLED_BIT ;BEND EDIT MODE IS NOW OFF.
BCF GENFLAGS12, BENDTOG_FLAG ;FIRST TIME IN FLAG.
BCF GENFLAGS12, BENDWAIT_BIT ;SET EDIT MODE OFF.
BSF DISPLAYREG, GREEN ;RESET (TURN ON) GREEN LED.
BCF GENFLAGS12, BENDTERM_BIT ;
;
BENDSCANORM: ;
BTFSS RH11_OFF_FLAGS, 7 ;
BRA BEND_ED_END ;
BCF RH11_OFF_FLAGS, 7 ;
BCF GENFLAGS12, BENDVOLED_BIT ;BEND EDIT MODE IS NOW OFF.
BCF GENFLAGS12, BENDTOG_FLAG ;FIRST TIME IN FLAG.
BSF DISPLAYREG, GREEN ;RESET (TURN ON) GREEN LED.
BCF GENFLAGS12, BENDTERM_BIT ;
;....................................................
BEND_ED_END: ;
;................................................................................................................................................................................................................
PB_OFF: ;PITCH-BEND RISE ROUTINE.
BTFSS GENFLAGS8, PB_EN_BIT ;
BRA PBOFF_END ;>
;
MOVLW 0x08 ;RB3, ENABLE RH11 BUSS.
MOVWF PORTB ;
NOP ;
NOP ;
NOP ;
NOP ;
MOVF PORTD, W ;TO WREG.
CLRF PORTB ;
BTFSC WREG, 7 ;
BRA PBOFF_END ;HOLDS PB PITCH DOWN.
;
MOVF PORTC, W ;
MOVWF PEDTEMP ;
BTFSS FSW1ASIGNREG11, FSW1_RH118_BIT;
BRA PB118J1 ;
ANDLW 0x02 ;ASSIGN FSW1.
BZ PB118J1 ;
BRA PBOFF_END ;
PB118J1: ;
BTFSS FSW2ASIGNREG11, FSW2_RH118_BIT;
BRA PB118J2 ;
MOVF PEDTEMP, W ;
ANDLW 0x01 ;ASSIGN FSW2.
BZ PB118J2 ;
BRA PBOFF_END ;
PB118J2: ;
BTFSS FSW3ASIGNREG11, FSW3_RH118_BIT;
BRA PB118J3 ;
MOVF PEDTEMP, W ;
ANDLW 0x04 ;ASSIGN FSW3.
BZ PB118J3 ;
BRA PBOFF_END ;
PB118J3: ;
BTFSS FSW4ASIGNREG11, FSW4_RH118_BIT;
BRA PB118J4 ;
MOVF PORTA, W ;
ANDLW 0x10 ;ASSIGN FSW4.
BZ PB118J4 ;
BRA PBOFF_END ;
PB118J4: ;.................................................................................
BTFSC GENFLAGS8, PBHOLD_BIT ;
BRA PBRECOVER ;
BSF GENFLAGS8, PBHOLD_BIT ;
;
MOVFF PB_DEPTH_HI, PB_DEC_HI ;RELOAD.
MOVFF PB_DEPTH_LO, PB_DEC_LO ;
PBRECOVER: ;
MOVF BENDTIMPOT, W ;
ADDWF PB_DEC_LO, F ;
BTFSS PB_DEC_LO, 7 ;EFFECTIVE CARRY.
BRA PBOFFSJ1 ;
CLRF PB_DEC_LO ;
INCF PB_DEC_HI ;
BTFSC PB_DEC_HI, 6 ;40h IS EFFECTIVE CENTRE. ( 40h, 00h. 14 BIT MIDI RESOLOUTION).
BRA PB_RESET ;
PBOFFSJ1: ;
BCF PORTC, 3 ;ENABLE LED COM BUSS.
MOVFF DISPLAYREG, PORTB ;REDUCE LED FLICKER DURING MIDI
; SENDS.
MOVFF PB_DEC_LO, BYTE2OF3 ;
MOVFF PB_DEC_HI, BYTE3OF3 ;
;
MOVLW 0xE3 ;PITCH BEND CHANNEL 4.
MOVWF BYTE1OF3 ;
CALL MIDI3BYTE ;
;
MOVLW 0xE0 ;PITCH BEND CHANNEL 1.
MOVWF BYTE1OF3 ;
CALL MIDI3BYTE ;
;
MOVLW 0xE4 ;PITCH BEND CHANNEL 5.
MOVWF BYTE1OF3 ;
CALL MIDI3BYTE ;
;
MOVLW 0xE6 ;PITCH BEND CHANNEL 7.
MOVWF BYTE1OF3 ;
CALL MIDI3BYTE ;
;
BSF PORTC, 3 ;DISABLE LED COM BUSS.
PBOFF_RECEND: ;
BRA PBOFF_END ;
;................................................................................................................................
PB_RESET: ;
MOVLW 0xE3 ;PITCH BEND CHANNEL 4.
MOVWF BYTE1OF3 ;
MOVLW 0x00 ;LSBYTE
MOVWF BYTE2OF3 ;
MOVLW 0x40 ;MS BYTE : CENTRE IS 00h 40h.
MOVWF BYTE3OF3 ;RESET TO CENTER VALUE.
CALL MIDI3BYTE ;
;
MOVLW 0xE0 ;PITCH BEND CHANNEL 1.
MOVWF BYTE1OF3 ;
CALL MIDI3BYTE ;
;
BCF GENFLAGS8, PB_EN_BIT ;
BCF GENFLAGS8, PBHOLD_BIT ;
;
MOVLW 0xE4 ;PITCH BEND CHANNEL 5.
MOVWF BYTE1OF3 ;
CALL MIDI3BYTE ;
;
MOVLW 0xE6 ;PITCH BEND CHANNEL 7.
MOVWF BYTE1OF3 ;
CALL MIDI3BYTE ;
PBOFF_END: ;
;................................................................................................................................................................................................................
TSTFSZ SCANDEL ;BUTTONS LOCKOUT TIME.
GOTO SCANEXIT ;
;_______________________________________________________________________________________________________________________
DRUMS1_VOL_EDIT: ;DRUMS1 BUTTON HOLD ROUTINE.
BTFSC GENFLAGS11, SOLOVOLED_BIT ;SOLO EDIT MODE TEST.
BRA DRMEDEND ;BYPASS DRUMS EDIT IF SOLO EDIT IS IN PROGRESSS.
;
BTFSC GENFLAGS9, DRM1TOG_FLAG ;
BRA DRM1EDJ1 ; BEEN IN ONCE ALREADY. TIMER STARTED.
;
BTFSS RH22_ON_FLAGS, 7 ;
BRA DRM1_VOL_ED_END ;
BCF RH22_ON_FLAGS, 7 ;
MOVLW D'100' ;Button ACTIVATE INTERVAL.(x20ms).
MOVWF DRM1EDTIME ;START MTUNE DOWN TIMER.
BSF GENFLAGS9, DRM1TOG_FLAG ;
BRA DRM1_VOL_ED_END ;>
;........................................................................
DRM1EDJ1: ;
BTFSS RH22_ON_FLAGS, 7 ;
BRA DRM1EDJ2 ;
BCF RH22_ON_FLAGS, 7 ;
BRA DRM1INJ1 ;
DRM1EDJ2: ;
;
BTFSC GENFLAGS9, DRM1WAIT_BIT ;NOW IN EDIT MODE.
BRA DRM1_FLSH_LEDS ;
TSTFSZ DRM1EDTIME ;HAS BUTTON BEEN HELD DOWN ENOUGH.
BRA DRM1SCANORM ;NO, NOT LONG ENOUGH YET.
BSF GENFLAGS3, DRM1_BIT ;YES, TURN PERCUSSION1 ON (EVEN IF OFF).
BSF GENFLAGS3, PERCVOLED_BIT ;PERCUSSION EDIT MODE SET.
BSF GENFLAGS9, DRM1WAIT_BIT ;SET EDIT MODE ON.
;
DRM1_FLSH_LEDS: ;..........................................
BTFSC GENFLAGS8, DRM2_BIT ;EXITS ROUTINE IF ANOTHER DRUM BUTTON
BRA DRM1_EDEXIT ; IS PUSHED.
BTFSC GENFLAGS8, DRM3_BIT ;
BRA DRM1_EDEXIT ;
BRA DRM1_EDCONT ;
DRM1_EDEXIT: ;
MOVLW 0xFA ;EEPROM PERC VOLUME ADDRESS.
CALL EEPROM_READ ;
MOVWF B1_PERCVOL ;BASS PERC VOLUME LEVEL.
;
MOVLW 0xF1 ;EEPROM PERC VOLUME ADDRESS.
CALL EEPROM_READ ;
MOVWF C1_PERCVOL ;CHORDS PERC VOLUME LEVEL.
BRA DRM1_ED_CLR ;
DRM1_EDCONT: ;.........................................
TSTFSZ MTUNFLASH ;
BRA DRM1SCANJ2 ;
BTG DISPLAYREG, BASSBANK ;BASSOCTBIT=1=BANK B. LED IS OFF.
BTG DISPLAYREG, CHORDBANK ;BASSSOCTBIT=1=BANK B. LED IS OFF.
MOVLW D'25' ;LED FLASH RATE.
MOVWF MTUNFLASH ;
DRM1SCANJ2: ;
BRA DRM1_VOL_ED_END ;EXIT >
;........................................................................
DRM1INJ1: ;
MOVF B1_PERCVOL, W ;BASS PERCUSSION VOLUME LEVEL.
MOVWF EEDATA ;VALUE TO WRITE TO EEPROM.
MOVLW 0xFA ;
MOVWF EEADR ;DATA MEMORY TO WRITE TO.
CALL EEPROM_WRITE ;
;
MOVF C1_PERCVOL, W ;CHORDS POT VALUE.
MOVWF EEDATA ;VALUE TO WRITE TO EEPROM.
MOVLW 0xF1 ;
MOVWF EEADR ;DATA MEMORY TO WRITE TO.
CALL EEPROM_WRITE ;
;
DRM1_ED_CLR: ;
BTFSS GENFLAGS1, BASSOCTBIT ;
BSF DISPLAYREG, BASSBANK ;BASSOCTBIT=0=BANK A. LED IS ON.
BTFSC GENFLAGS1, BASSOCTBIT ;
BCF DISPLAYREG, BASSBANK ;BASSOCTBIT=1=BANK B. LED IS OFF.
;
BTFSS GENFLAGS1, CHORDOCTBIT ;
BSF DISPLAYREG, CHORDBANK ;BASSOCTBIT=0=BANK A. LED IS ON.
BTFSC GENFLAGS1, CHORDOCTBIT ;
BCF DISPLAYREG, CHORDBANK ;BASSOCTBIT=1=BANK B. LED IS OFF.
;
BCF GENFLAGS3, PERCVOLED_BIT ;PERC EDIT MODE IS NOW OFF.
BCF GENFLAGS9, DRM1TOG_FLAG ;FIRST TIME IN FLAG.
BCF GENFLAGS9, DRM1WAIT_BIT ;SET EDIT MODE OFF.
BSF DISPLAYREG, GREEN ;RESET (TURN ON) GREEN LED.
;
DRM1SCANORM: ;
BTFSS RH22_OFF_FLAGS, 7 ;
BRA DRM1_VOL_ED_END ;
BCF RH22_OFF_FLAGS, 7 ;
BCF GENFLAGS3, PERCVOLED_BIT ;PERC EDIT MODE IS NOW OFF.
BCF GENFLAGS9, DRM1TOG_FLAG ;FIRST TIME IN FLAG.
BSF DISPLAYREG, GREEN ;RESET (TURN ON) GREEN LED.
;....................................................
DRM1_VOL_ED_END: ;
;___________________________________________________________________________________________________________________
DRUMS2VOL_EDIT: ;DRUMS2 BUTTON HOLD ROUTINE.
BTFSC GENFLAGS9, DRM2TOG_FLAG ;
BRA DRM2EDJ1 ; BEEN IN ONCE ALREADY. TIMER STARTED.
;
BTFSS BASS_ON_FLAGS, 7 ;
BRA DRM2_VOL_ED_END ;
BCF BASS_ON_FLAGS, 7 ;
MOVLW D'100' ;Button ACTIVATE INTERVAL.(x20ms).
MOVWF DRM1EDTIME ;START MTUNE DOWN TIMER.
BSF GENFLAGS9, DRM2TOG_FLAG ;
BRA DRM2_VOL_ED_END ;>
;........................................................................
DRM2EDJ1: ;
BTFSS BASS_ON_FLAGS, 7 ;
BRA DRM2EDJ2 ;
BCF BASS_ON_FLAGS, 7 ;
BRA DRM2INJ1 ;
DRM2EDJ2: ;
;
BTFSC GENFLAGS9, DRM2WAIT_BIT ;NOW IN EDIT MODE.
BRA DRM2_FLSH_LEDS ;
TSTFSZ DRM1EDTIME ;HAS BUTTON BEEN HELD DOWN ENOUGH.
BRA DRM2SCANORM ;NO, NOT LONG ENOUGH YET.
BSF GENFLAGS8, DRM2_BIT ;YES, TURN PERCUSSION2 ON (EVEN IF OFF).
BSF GENFLAGS3, PERCVOLED_BIT ;PERCUSSION EDIT MODE SET.
BSF GENFLAGS9, DRM2WAIT_BIT ;SET EDIT MODE ON.
;
DRM2_FLSH_LEDS: ;..........................................
BTFSC GENFLAGS3, DRM1_BIT ;EXITS ROUTINE IF ANOTHER DRUM BUTTON
BRA DRM2_EDEXIT ; IS PUSHED.
BTFSC GENFLAGS8, DRM3_BIT ;
BRA DRM2_EDEXIT ;
BRA DRM2_EDCONT ;
DRM2_EDEXIT: ;
MOVLW 0xEE ;EEPROM PERC VOLUME ADDRESS.
CALL EEPROM_READ ;
MOVWF B2_PERCVOL ;BASS PERC VOLUME LEVEL.
;
MOVLW 0xED ;EEPROM PERC VOLUME ADDRESS.
CALL EEPROM_READ ;
MOVWF C2_PERCVOL ;CHORDS PERC VOLUME LEVEL.
BRA DRM2_ED_CLR ;
;
DRM2_EDCONT: ;.........................................
TSTFSZ MTUNFLASH ;
BRA DRM2SCANJ2 ;
BTG DISPLAYREG, BASSBANK ;BASSOCTBIT=1=BANK B. LED IS OFF.
BTG DISPLAYREG, CHORDBANK ;BASSSOCTBIT=1=BANK B. LED IS OFF.
MOVLW D'25' ;LED FLASH RATE.
MOVWF MTUNFLASH ;
DRM2SCANJ2: ;
BRA DRM2_VOL_ED_END ;EXIT >
;........................................................................
DRM2INJ1: ;
MOVF B2_PERCVOL, W ;BASS PERCUSSION VOLUME LEVEL.
MOVWF EEDATA ;VALUE TO WRITE TO EEPROM.
MOVLW 0xEE ;
MOVWF EEADR ;DATA MEMORY TO WRITE TO.
CALL EEPROM_WRITE ;
;
MOVF C2_PERCVOL, W ;CHORDS POT VALUE.
MOVWF EEDATA ;VALUE TO WRITE TO EEPROM.
MOVLW 0xED ;
MOVWF EEADR ;DATA MEMORY TO WRITE TO.
CALL EEPROM_WRITE ;
;
DRM2_ED_CLR: ;
BTFSS GENFLAGS1, BASSOCTBIT ;
BSF DISPLAYREG, BASSBANK ;BASSOCTBIT=0=BANK A. LED IS ON.
BTFSC GENFLAGS1, BASSOCTBIT ;
BCF DISPLAYREG, BASSBANK ;BASSOCTBIT=1=BANK B. LED IS OFF.
;
BTFSS GENFLAGS1, CHORDOCTBIT ;
BSF DISPLAYREG, CHORDBANK ;BASSOCTBIT=0=BANK A. LED IS ON.
BTFSC GENFLAGS1, CHORDOCTBIT ;
BCF DISPLAYREG, CHORDBANK ;BASSOCTBIT=1=BANK B. LED IS OFF.
;
BCF GENFLAGS3, PERCVOLED_BIT ;PERC EDIT MODE IS NOW OFF.
BCF GENFLAGS9, DRM2TOG_FLAG ;FIRST TIME IN FLAG.
BCF GENFLAGS9, DRM2WAIT_BIT ;SET EDIT MODE OFF.
BSF DISPLAYREG, GREEN ;RESET (TURN ON) GREEN LED.
;
DRM2SCANORM: ;
BTFSS BASS_OFF_FLAGS, 7 ;
BRA DRM2_VOL_ED_END ;
BCF BASS_OFF_FLAGS, 7 ;
BCF GENFLAGS3, PERCVOLED_BIT ;PERC EDIT MODE IS NOW OFF.
BCF GENFLAGS9, DRM2TOG_FLAG ;FIRST TIME IN FLAG.
BSF DISPLAYREG, GREEN ;RESET (TURN ON) GREEN LED.
;....................................................
DRM2_VOL_ED_END: ;
;___________________________________________________________________________________________________________________
DRUMS3_VOL_EDIT: ;DRUMS1 BUTTON HOLD ROUTINE.
BTFSC GENFLAGS9, DRM3TOG_FLAG ;
BRA DRM3EDJ1 ; BEEN IN ONCE ALREADY. TIMER STARTED.
;
BTFSS CHORD_ON_FLAGS, 7 ;
BRA DRM3_VOL_ED_END ;
BCF CHORD_ON_FLAGS, 7 ;
MOVLW D'100' ;Button ACTIVATE INTERVAL.(x20ms).
MOVWF DRM1EDTIME ;START MTUNE DOWN TIMER.
BSF GENFLAGS9, DRM3TOG_FLAG ;
BRA DRM3_VOL_ED_END ;>
;........................................................................
DRM3EDJ1: ;
BTFSS CHORD_ON_FLAGS, 7 ;
BRA DRM3EDJ2 ;
BCF CHORD_ON_FLAGS, 7 ;
BRA DRM3INJ1 ;
DRM3EDJ2: ;
;
BTFSC GENFLAGS10, DRM3WAIT_BIT ;NOW IN EDIT MODE.
BRA DRM3_FLSH_LEDS ;
TSTFSZ DRM1EDTIME ;HAS BUTTON BEEN HELD DOWN ENOUGH.
BRA DRM3SCANORM ;NO, NOT LONG ENOUGH YET.
BSF GENFLAGS8, DRM3_BIT ;YES, TURN PERCUSSION 3 ON (EVEN IF OFF).
BSF GENFLAGS3, PERCVOLED_BIT ;PERCUSSION EDIT MODE SET.
BSF GENFLAGS10, DRM3WAIT_BIT ;SET EDIT MODE ON.
;
DRM3_FLSH_LEDS: ;..........................................
BTFSC GENFLAGS3, DRM1_BIT ;EXITS ROUTINE IF ANOTHER DRUM BUTTON
BRA DRM3_EDEXIT ; IS PUSHED.
BTFSC GENFLAGS8, DRM2_BIT ;
BRA DRM3_EDEXIT ;
BRA DRM3_EDCONT ;
DRM3_EDEXIT: ;
MOVLW 0xEC ;EEPROM PERC VOLUME ADDRESS.
CALL EEPROM_READ ;
MOVWF B3_PERCVOL ;BASS PERC VOLUME LEVEL.
;
MOVLW 0xEB ;EEPROM PERC VOLUME ADDRESS.
CALL EEPROM_READ ;
MOVWF C3_PERCVOL ;CHORDS PERC VOLUME LEVEL.
BRA DRM3_ED_CLR ;
;
DRM3_EDCONT: ;.........................................
TSTFSZ MTUNFLASH ;
BRA DRM3SCANJ2 ;
BTG DISPLAYREG, BASSBANK ;BASSOCTBIT=1=BANK B. LED IS OFF.
BTG DISPLAYREG, CHORDBANK ;BASSSOCTBIT=1=BANK B. LED IS OFF.
MOVLW D'25' ;LED FLASH RATE.
MOVWF MTUNFLASH ;
DRM3SCANJ2: ;
BRA DRM3_VOL_ED_END ;EXIT >
;........................................................................
DRM3INJ1: ;
MOVF B3_PERCVOL, W ;BASS PERCUSSION VOLUME LEVEL.
MOVWF EEDATA ;VALUE TO WRITE TO EEPROM.
MOVLW 0xEC ;
MOVWF EEADR ;DATA MEMORY TO WRITE TO.
CALL EEPROM_WRITE ;
;
MOVF C3_PERCVOL, W ;CHORDS POT VALUE.
MOVWF EEDATA ;VALUE TO WRITE TO EEPROM.
MOVLW 0xEB ;
MOVWF EEADR ;DATA MEMORY TO WRITE TO.
CALL EEPROM_WRITE ;
;
DRM3_ED_CLR: ;
BTFSS GENFLAGS1, BASSOCTBIT ;
BSF DISPLAYREG, BASSBANK ;BASSOCTBIT=0=BANK A. LED IS ON.
BTFSC GENFLAGS1, BASSOCTBIT ;
BCF DISPLAYREG, BASSBANK ;BASSOCTBIT=1=BANK B. LED IS OFF.
;
BTFSS GENFLAGS1, CHORDOCTBIT ;
BSF DISPLAYREG, CHORDBANK ;BASSOCTBIT=0=BANK A. LED IS ON.
BTFSC GENFLAGS1, CHORDOCTBIT ;
BCF DISPLAYREG, CHORDBANK ;BASSOCTBIT=1=BANK B. LED IS OFF.
;
BCF GENFLAGS3, PERCVOLED_BIT ;PERC EDIT MODE IS NOW OFF.
BCF GENFLAGS9, DRM3TOG_FLAG ;FIRST TIME IN FLAG.
BCF GENFLAGS10, DRM3WAIT_BIT ;SET EDIT MODE OFF.
BSF DISPLAYREG, GREEN ;RESET (TURN ON) GREEN LED.
;
DRM3SCANORM: ;
BTFSS CHORD_OFF_FLAGS, 7 ;
BRA DRM3_VOL_ED_END ;
BCF CHORD_OFF_FLAGS, 7 ;
BCF GENFLAGS3, PERCVOLED_BIT ;PERC EDIT MODE IS NOW OFF.
BCF GENFLAGS9, DRM3TOG_FLAG ;FIRST TIME IN FLAG.
BSF DISPLAYREG, GREEN ;RESET (TURN ON) GREEN LED.
;....................................................
DRM3_VOL_ED_END: ;
DRMEDEND: ;
;.................................................................................................................................................................................................
TREMOLO_EDIT: ;
BTFSC GENFLAGS7, TREMTOG_FLAG ;
BRA TREMEDJ1 ; BEEN IN ONCE ALREADY. TIMER STARTED.
;
BTFSS RH21_ON_FLAGS, 7 ;
BRA TREM_VOL_ED_END ;Jump out if no button change to on.
BCF RH21_ON_FLAGS, 7 ;
MOVLW D'100' ;Button ACTIVATE INTERVAL.(x20ms).
MOVWF SOLOONTIME ;START MTUNE DOWN TIMER.
BSF GENFLAGS7, TREMTOG_FLAG ;
BRA TREM_VOL_ED_END ;>
;........................................................................
TREMEDJ1: ;Once button pressed once enter here.
BTFSS RH21_ON_FLAGS, 7 ;
BRA TREMEDJ2 ;
BCF RH21_ON_FLAGS, 7 ;
BRA TREMINJ1 ;BUTTON HAS BEEN PRESSED AGAIN.
;................................................
TREMEDJ2: ;
BTFSC GENFLAGS7, TREMWAIT_BIT ;NOW IN EDIT MODE.
BRA TREM_FLSH_LEDS ;
TSTFSZ SOLOONTIME ;HAS BUTTON BEEN HELD DOWN ENOUGH.
BRA TREMSCANORM ;NO, NOT LONG ENOUGH YET.
BSF GENFLAGS7, TREMVOLED_BIT ;TREM EDIT MODE SET.
BSF GENFLAGS7, TREMWAIT_BIT ;SET EDIT MODE ON.
;
;,,..............................................................................................
;SEND CURRENT TREM VALUES UPON ENTERING EDIT MODE.
BSF GENFLAGS6, SYSX11_B7_FLG ;PUT NEW VALUE IN SYSX11BYTE7.
MOVLW 0x27 ;SELECT CHANNEL 5 !
MOVWF SYSX11BYTE7 ;
MOVLW 0x26 ;SELECT TREM DEPTH.
MOVWF SYSX11BYTE8 ;
MOVLW 0x7F ;MOD DEPTH VALUE.
MOVWF SYSX11BYTE9 ;
CALL SYSX11BYTE ;SET MOD LFO1 DCA DEPTH.
;
BSF GENFLAGS6, SYSX11_B7_FLG ;PUT NEW VALUE IN SYSX11BYTE7.
MOVLW 0x25 ;SELECT CHANNEL 5 !
MOVWF SYSX11BYTE7 ;
MOVLW 0x26 ;SELECT TREM DEPTH.
MOVWF SYSX11BYTE8 ;
MOVLW 0x7F ;MOD DEPTH VALUE.
MOVWF SYSX11BYTE9 ;
CALL SYSX11BYTE ;SET MOD LFO1 DCA DEPTH.
;
BSF GENFLAGS6, SYSX11_B7_FLG ;
MOVLW 0x24 ;SELECT CHANNEL 4 !
MOVWF SYSX11BYTE7 ;
CALL SYSX11BYTE ;SET MOD LFO1 DCA DEPTH.
;
BSF GENFLAGS6, SYSX11_B7_FLG;
MOVLW 0x21 ;SELECT CHANNEL 1 !
MOVWF SYSX11BYTE7 ;
CALL SYSX11BYTE ;SET MOD LFO1 DCA DEPTH.
;
;
MOVLW 0xF5 ;EEPROM ADDRESS.
MOVWF EEADR ;
BCF EECON1, CFGS ;
BCF EECON1, EEPGD ;SELECT DATA EEPROM MEMORY.
BSF EECON1, RD ;ENABLE EEPROM READ.
MOVF EEDATA, W ;VALUE IN W.
MOVWF TREMDEPTH ;
;
MOVLW 0xF4 ;EEPROM ADDRESS.
MOVWF EEADR ;
BCF EECON1, CFGS ;
BCF EECON1, EEPGD ;SELECT DATA EEPROM MEMORY.
BSF EECON1, RD ;ENABLE EEPROM READ.
MOVF EEDATA, W ;VALUE IN W.
MOVWF TREMSPEED ;
;
MOVWF SYSX11BYTE9 ;MOD LFO RATE CONTROL.
MOVLW 0x03 ;
MOVWF SYSX11BYTE8 ;
MOVLW 0x2F ;COMMON TO ALL CHANNELS.
MOVWF SYSX11BYTE7 ;
BSF GENFLAGS6, SYSX11_B7_FLG;
CALL SYSX11BYTE ;
;
MOVLW 0xD3 ;CHAN PRESSURE CH4.
EHTREM10: ;
BTFSS TXSTA, TRMT ;SET WHEN TxShiftReg IS EMPTY.
BRA EHTREM10 ;
MOVWF TXREG ;SEND MIDI.
MOVF TREMDEPTH, W ;DATA BYTE.
EHTREM11: ;
BTFSS TXSTA, TRMT ;SET WHEN TxShiftReg IS EMPTY.
BRA EHTREM11 ;
MOVWF TXREG ;SEND MIDI.
;
MOVLW 0xD4 ;CHAN PRESSURE CH5.
EHTREM20: ;
BTFSS TXSTA, TRMT ;SET WHEN TxShiftReg IS EMPTY.
BRA EHTREM20 ;
MOVWF TXREG ;SEND MIDI.
MOVF TREMDEPTH, W ;DATA BYTE.
EHTREM21: ;
BTFSS TXSTA, TRMT ;SET WHEN TxShiftReg IS EMPTY.
BRA EHTREM21 ;
MOVWF TXREG ;SEND MIDI.
;
MOVLW 0xD0 ;CHAN PRESSURE CH1.
EHTREM30: ;
BTFSS TXSTA, TRMT ;SET WHEN TxShiftReg IS EMPTY.
BRA EHTREM30 ;
MOVWF TXREG ;SEND MIDI.
MOVF TREMDEPTH, W ;DATA BYTE.
EHTREM31: ;
BTFSS TXSTA, TRMT ;SET WHEN TxShiftReg IS EMPTY.
BRA EHTREM31 ;
MOVWF TXREG ;SEND MIDI.
;
;
MOVLW 0xD6 ;CHAN PRESSURE CH7.
EHTREM40: ;
BTFSS TXSTA, TRMT ;SET WHEN TxShiftReg IS EMPTY.
BRA EHTREM40 ;
MOVWF TXREG ;SEND MIDI.
MOVF TREMDEPTH, W ;DATA BYTE.
EHTREM41: ;
BTFSS TXSTA, TRMT ;SET WHEN TxShiftReg IS EMPTY.
BRA EHTREM41 ;
MOVWF TXREG ;SEND MIDI.
;
;................................................................................................
TREM_FLSH_LEDS: ;
BTFSC GENFLAGS3, PERCVOLED_BIT ;PERC EDIT MODE IS ON.
BRA TREMBAIL ;EXIT TREM EDIT IF PERC EDIT MODE ATTEMPTED.
BTFSC GENFLAGS11, SOLOVOLED_BIT ;SOLO EDIT MODE IS ON.
BRA TREMBAIL ;EXIT TREM EDIT IF SOLO EDIT MODE ATTEMPTED.
;
TSTFSZ MTUNFLASH ;
BRA TREMSCANJ2 ;
BTG DISPLAYREG, MUTE2LED ;
BTG DISPLAYREG, MUTE1LED ;
MOVLW D'38' ;MUTE-LEDS FLASH RATE.
MOVWF MTUNFLASH ;
TREMSCANJ2: ;
BRA TREM_VOL_ED_END ;EXIT >
;........................................................................
TREMINJ1: ;
MOVF TREMSPEED, W ;TREMOLO VALUE.
MOVWF EEDATA ;VALUE TO WRITE.
MOVLW 0xF4 ;
MOVWF EEADR ;DATA MEMORY TO WRITE TO.
CALL EEPROM_WRITE ;
;
MOVF TREMDEPTH, W ;TREMOLO VALUE.
MOVWF EEDATA ;VALUE TO WRITE.
MOVLW 0xF5 ;
MOVWF EEADR ;DATA MEMORY TO WRITE TO.
CALL EEPROM_WRITE ;
;
TREMBAIL: ;
BTFSS GENFLAGS1, MUTE2_FLAG ;RESET LED TO PREV CONDITION.
BSF DISPLAYREG, MUTE2LED ;LED IS ON.
BTFSC GENFLAGS1, MUTE2_FLAG ;RESET LED TO PREV CONDITION.
BCF DISPLAYREG, MUTE2LED ;LED IS OFF.
;
BTFSS GENFLAGS1, MUTE1_FLAG ;RESET LED TO PREV CONDITION.
BSF DISPLAYREG, MUTE1LED ;LED IS ON.
BTFSC GENFLAGS1, MUTE1_FLAG ;RESET LED TO PREV CONDITION.
BCF DISPLAYREG, MUTE1LED ;LED IS OFF.
;
BCF GENFLAGS7, TREMWAIT_BIT ;
BCF GENFLAGS7, TREMTOG_FLAG ;TREM IS OFF.
BCF GENFLAGS7, TREMVOLED_BIT ;TREMOLO ED MODE IS NOW OFF.;
BSF DISPLAYREG, GREEN ;RESET GREEN LED.
;
TREMSCANORM: ;
BTFSS RH21_OFF_FLAGS, 7 ;
BRA TREM_VOL_ED_END ;
BCF RH21_OFF_FLAGS, 7 ;
BCF GENFLAGS7, TREMTOG_FLAG ;TREM IS OFF.
BCF GENFLAGS7, TREMVOLED_BIT ;TREMOLO ED MODE IS NOW OFF.;
BSF DISPLAYREG, GREEN ;RESET GREEN LED.
;....................................................
TREM_VOL_ED_END: ;
;................................................................................................................................................................................................................
SOLO_EDIT: ;
BTFSC GENFLAGS11, SOLOTOG_FLAG ;
BRA SOLOEDJ1 ; BEEN IN ONCE ALREADY. TIMER STARTED.
;
BTFSS RH12_ON_FLAGS, 7 ;
BRA SOLO_VOL_ED_END ;Jump out if no button change to on.
BCF RH12_ON_FLAGS, 7 ;
MOVLW D'100' ;Button ACTIVATE INTERVAL.(x20ms).
MOVWF SOLOONTIME ;START MTUNE DOWN TIMER.
BSF GENFLAGS11, SOLOTOG_FLAG ;
BRA SOLO_VOL_ED_END ;>
;........................................................................
SOLOEDJ1: ;Once button pressed once enter here.
BTFSS RH12_ON_FLAGS, 7 ;
BRA SOLOEDJ2 ;
BCF RH12_ON_FLAGS, 7 ;
BRA SOLOINJ1 ;
SOLOEDJ2: ;
;
BTFSC GENFLAGS11, SOLOWAIT_BIT ;NOW IN EDIT MODE.
BRA SOLO_FLSH_LEDS ;
TSTFSZ SOLOONTIME ;HAS BUTTON BEEN HELD DOWN ENOUGH.
BRA SOLOSCANORM ;NO, NOT LONG ENOUGH YET.
BSF GENFLAGS11, SOLOVOLED_BIT ;SOLO EDIT MODE SET.
BSF GENFLAGS11, SOLOWAIT_BIT ;SET EDIT MODE ON.
;
SOLO_FLSH_LEDS: ;........................................................................
BTFSC GENFLAGS3, PERCVOLED_BIT ;PERC EDIT MODE IS ON.
BRA SOLO_ED_CLR ;EXIT SOLO EDIT IF PERC EDIT MODE ATTEMPTED.
BTFSC GENFLAGS7, TREMVOLED_BIT ;TREM EDIT MODE IS ON.
BRA SOLO_ED_CLR ;EXIT SOLO EDIT IF TREM EDIT MODE ATTEMPTED.
;
TSTFSZ MTUNFLASH ;
BRA SOLOSCANJ2 ;
BTG DISPLAYREG, BASSBANK ;BASSOCTBIT=1=BANK B. LED IS OFF.
MOVLW D'25' ;LED FLASH RATE.
MOVWF MTUNFLASH ;
SOLOSCANJ2: ;
BRA SOLO_VOL_ED_END ;EXIT >
;........................................................................
SOLOINJ1: ;
MOVF SOLOVALPOT, W ;SOLO VOLUME LEVEL.
MOVWF EEDATA ;VALUE TO WRITE TO EEPROM.
MOVLW 0xEA ;
MOVWF EEADR ;DATA MEMORY TO WRITE TO.
CALL EEPROM_WRITE ;
;
;
SOLO_ED_CLR: ;
BTFSS GENFLAGS1, BASSOCTBIT ;
BSF DISPLAYREG, BASSBANK ;BASSOCTBIT=0=BANK A. LED IS ON.
BTFSC GENFLAGS1, BASSOCTBIT ;
BCF DISPLAYREG, BASSBANK ;BASSOCTBIT=1=BANK B. LED IS OFF.
;
;
BCF GENFLAGS11, SOLOVOLED_BIT ;PERC EDIT MODE IS NOW OFF.
BCF GENFLAGS11, SOLOTOG_FLAG ;FIRST TIME IN FLAG.
BCF GENFLAGS11, SOLOWAIT_BIT ;SET EDIT MODE OFF.
BSF DISPLAYREG, GREEN ;RESET (TURN ON) GREEN LED.
;
SOLOSCANORM: ;
BTFSS RH12_OFF_FLAGS, 7 ;
BRA SOLO_VOL_ED_END ;
BCF RH12_OFF_FLAGS, 7 ;
BCF GENFLAGS11, SOLOVOLED_BIT ;SOLO EDIT MODE IS NOW OFF.
BCF GENFLAGS11, SOLOTOG_FLAG ;FIRST TIME IN FLAG.
BSF DISPLAYREG, GREEN ;RESET (TURN ON) GREEN LED.
;....................................................
SOLO_VOL_ED_END: ;
;.................................................................................................................................................................................................................
TWOBUTSCAN: ;
BTFSC MIDISTAT, SNDTRY_FLAG ;SOUND TRY OUT MODE FLAG.
BRA MUTOGSETEND ;BYPASS ROUTINE IN SOUND EDIT MODE.
;........................................................................................
MOVF PORTC, W ;CHECK IF FSWs ARE ON.
ANDLW 0x07 ;1st 3 BITS OF PORTC.
BNZ MUTOGSETEND ;
BTFSC PORTA, 4 ;FSW4.
BRA MUTOGSETEND ;
;
MOVLW 0x04 ;
MOVWF PORTB ;CHECKING RH1 MUTE BUTTON,
NOP ;
NOP ;
NOP ;
NOP ;
MOVF PORTD, W ;TO ENGAGE TOGGLING OF RH1/RH2.
CLRF PORTB ;
ANDLW 0x40 ;
BZ MUTOGSETEND ;
;
MOVLW 0x01 ;
MOVWF PORTB ;CHECKING RH2 MUTE BUTTON,
NOP ;
NOP ;
NOP ;
NOP ;
MOVF PORTD, W ;TO ENGAGE TOGGLING OF RH1/RH2.
CLRF PORTB ;
ANDLW 0x40 ;
BZ MUTOGSETEND ;
;
BSF GENFLAGS3, MUTOG_FLAG ;SWOPS MUTE RH1 <-> RH2.
BSF GENFLAGS1, MUTE2_FLAG ;RH2 OFF.
BCF GENFLAGS1, MUTE1_FLAG ;RH1 ON.
BCF DISPLAYREG, MUTE2LED ;RH2 ON LED, OFF.
BSF DISPLAYREG, MUTE1LED ;RH1 ON LED, ON.
MOVLW 0xB3 ;ALL SOUND OFF CHAN 4.
MOVWF CONTCHAN ;
MOVLW 0x78 ;
MOVWF CONTDB1 ;
CLRF CONTDB2 ;
BSF GENFLAGS1, MUTE_FLAG ;SENDS ALL SOUND OFF.
MOVLW 0xFF ;BUTTONS LOCKOUT TIME. (3msx256).
GOTO SCANENDXTRAT ;
MUTOGSETEND: ;
;_______________________________________________________________________________________________________________________
BASS_SCAN: ;
MOVLW 0x20 ;RB5, ENABLE BASS BUSS.
MOVWF PORTB ;
NOP ;
NOP ;
NOP ;
NOP ;
MOVF PORTD, W ;TO WREG.
CLRF PORTB ;
MOVWF SCANTEMP1 ;HOLD INPUT SCAN.
XORWF BASSCANHOLD, W ;RESULT IN W.
MOVFF SCANTEMP1, BASSCANHOLD ;
BNZ BASS_SCJ1 ;
CLRF BASS_ON_FLAGS ;
CLRF BASS_OFF_FLAGS ;
GOTO CHORD_SCAN ;EXIT AS NO CHANGE IN SCAN.
BASS_SCJ1: ;CHANGE(S) IN SCAN.
MOVFF BASSCANHOLD, BASS_OFF_FLAGS ;
COMF BASS_OFF_FLAGS, F ;
ANDWF BASS_OFF_FLAGS, F ;CHANGES TO OFF STORED.
;
ANDWF BASSCANHOLD, W ;CHANGE TO ON NOW IN W.
MOVWF BASS_ON_FLAGS ;
BSF GENFLAGS10, DIP_CHNG_LED ;Dip control change led.
BASS_SCJ2: ;
;........................................................................................................................................................................................
BTFSS BASS_ON_FLAGS, 0 ;BASS 1.
BRA BASSINSTR2 ;
;
MOVF PORTC, W ;
MOVWF PEDTEMP ;
ANDLW 0x02 ;ASSIGN FSW1.
BZ BAS1J1 ;
CALL FSW1ASIGNCLEAR ;
BSF FSW1ASIGNREGBA, FSW1_BAS1_BIT;
MOVFF FSW1ASIGNREGBA, EEDATA ;VALUE TO WRITE.
MOVLW 0x60 ;
MOVWF EEADR ;DATA MEMORY TO WRITE TO.
CALL EEPROM_WRITE ;
GOTO SCANEND ;
BAS1J1: ;
MOVF PEDTEMP, W ;
ANDLW 0x01 ;ASSIGN FSW2.
BZ BAS1J2 ;
CALL FSW2ASIGNCLEAR ;
BSF FSW2ASIGNREGBA, FSW2_BAS1_BIT;
MOVFF FSW2ASIGNREGBA, EEDATA ;VALUE TO WRITE.
MOVLW 0x61 ;
MOVWF EEADR ;DATA MEMORY TO WRITE TO.
CALL EEPROM_WRITE ;
GOTO SCANEND ;
BAS1J2: ;
MOVF PEDTEMP, W ;
ANDLW 0x04 ;ASSIGN FSW3.
BZ BAS1J3 ;
CALL FSW3ASIGNCLEAR ;
BSF FSW3ASIGNREGBA, FSW3_BAS1_BIT;
MOVFF FSW3ASIGNREGBA, EEDATA ;VALUE TO WRITE.
MOVLW 0x62 ;
MOVWF EEADR ;DATA MEMORY TO WRITE TO.
CALL EEPROM_WRITE ;
GOTO SCANEND ;
BAS1J3: ;
MOVF PORTA, W ;
ANDLW 0x10 ;ASSIGN FSW4.
BZ BAS1J4 ;
CALL FSW4ASIGNCLEAR ;
BSF FSW4ASIGNREGBA, FSW4_BAS1_BIT;
MOVFF FSW4ASIGNREGBA, EEDATA ;VALUE TO WRITE.
MOVLW 0x63 ;
MOVWF EEADR ;DATA MEMORY TO WRITE TO.
CALL EEPROM_WRITE ;
GOTO SCANEND ;
;............
BAS1J4: ;BASS SOUND 1A.
CLRF BASS_FLAGS ;
BSF BASS_FLAGS, BASS1_FLAG ;
BTFSC GENFLAGS1, BASSOCTBIT ;SELECT BASS SOUND BANK.
BRA BAS1J5 ;
;
BTFSS MIDISTAT, SNDTRY_FLAG ;SOUND TRY OUT MODE FLAG.
BRA BAS1J41 ;
BTFSS RECFLAGS1, REC_BAS1_BIT ;
BRA BAS1J41 ;
MOVLW 0x24 ;EEPROM REVERB LEVEL ADDRESS.
MOVWF EEADR ;DATA MEMORY TO WRITE TO.
MOVF BASSFXPOT, W ;
MOVWF EEDATA ;VALUE TO WRITE.
CALL EEPROM_WRITE ;
;
MOVLW 0x00 ;EEPROM BASS1 ADDRESS.
MOVWF EEADR ;DATA MEMORY TO WRITE TO.
MOVF SNDTRI, W ;
MOVWF EEDATA ;VALUE TO WRITE.
CALL EEPROM_WRITE ;
;
BAS1J41: ;
MOVLW 0x00 ;EEPROM BASS1 ADDRESS.(ACOUSTIC BASS).
MOVWF EEADR ;
BCF EECON1, CFGS ;
BCF EECON1, EEPGD ;SELECT DATA EEPROM MEMORY.
BSF EECON1, RD ;ENABLE EEPROM READ.
MOVF EEDATA, W ;VALUE IN WREG.
;
BTFSS MIDISTAT, SNDTRY_FLAG ;SOUND TRY OUT MODE FLAG.
BRA BAS1J42 ;
CLRF RECFLAGS1 ;
BSF RECFLAGS1, REC_BAS1_BIT ;
CLRF RECFLAGS2 ;
CLRF RECFLAGS3 ;
CLRF RECFLAGS4 ;
CLRF RECFLAGS5 ;
CLRF RECFLAGS6 ;
MOVWF SNDTRI ;
BAS1J42: ;
MOVWF PROGCHHOLD2 ;
BTFSS PROGCHHOLD2, 7 ;
BCF GENFLAGS4, BASVEL0_FLAG ;BASS PERCUSSION FLAG.
BTFSC PROGCHHOLD2, 7 ;
BSF GENFLAGS4, BASVEL0_FLAG ;
MOVLW 0xC2 ;PROG CHANGE CHAN 3.
MOVWF PROGCHHOLD1 ;
BSF SCANSTAT, 0 ;SET PROG SEND FLAG.
;
CALL BASSOUND1A ;PARAMETERS TO SEND FOR BASS1A.
;
BCF MIDISTAT2, CH6ON_FLAG ;NO 2nd LAYER ON THIS PRESET.
BSF GENFLAGS3, PERCON3_BIT ;BASS PERCUSSION FROM Ch10.
GOTO SCANEND ;
;........................................................................................................................................................................................
BAS1J5: ;BASS1 BANK B SOUND.
BTFSS MIDISTAT, SNDTRY_FLAG ;SOUND TRY OUT MODE FLAG.
BRA BAS1J51 ;
BTFSS RECFLAGS7, REC_BAS7_BIT ;
BRA BAS1J51 ;
MOVLW 0x54 ;EEPROM REVERB LEVEL ADDRESS.
MOVWF EEADR ;DATA MEMORY TO WRITE TO.
MOVF BASSFXPOT, W ;
MOVWF EEDATA ;VALUE TO WRITE.
CALL EEPROM_WRITE ;
;
MOVLW 0x48 ;EEPROM BASS1 ADDRESS.
MOVWF EEADR ;DATA MEMORY TO WRITE TO.
MOVF SNDTRI, W ;
MOVWF EEDATA ;VALUE TO WRITE.
CALL EEPROM_WRITE ;
;
BAS1J51: ;.................................................................
CALL BASSOUND1BL2 ;SOUND 1B (BANK B) LAYER 2.
;
MOVLW 0x48 ;EEPROM BASS 7 (1B, led is off) ADDRESS.
MOVWF EEADR ;
BCF EECON1, CFGS ;
BCF EECON1, EEPGD ;SELECT DATA EEPROM MEMORY.
BSF EECON1, RD ;ENABLE EEPROM READ.
MOVF EEDATA, W ;VALUE IN WREG.
;
BTFSS MIDISTAT, SNDTRY_FLAG ;SOUND TRY OUT MODE FLAG.
BRA BAS1J52 ;
CLRF RECFLAGS1 ;
CLRF RECFLAGS2 ;
CLRF RECFLAGS3 ;
CLRF RECFLAGS4 ;
CLRF RECFLAGS5 ;
CLRF RECFLAGS6 ;
CLRF RECFLAGS7 ;BASS BANK B.
CLRF RECFLAGS8 ;CHORD BANK B.
BSF RECFLAGS7, REC_BAS7_BIT ;
MOVWF SNDTRI
BAS1J52: ;
MOVWF PROGCHHOLD2 ;
BTFSS PROGCHHOLD2, 7 ;
BCF GENFLAGS4, BASVEL0_FLAG ;
BTFSC PROGCHHOLD2, 7 ;
BSF GENFLAGS4, BASVEL0_FLAG ;
MOVLW 0xC2 ;PROG CHANGE CHAN 3.
MOVWF PROGCHHOLD1 ;
BSF SCANSTAT, 0 ;SET PROG SEND FLAG.
;
CALL BASSOUND1BL1 ;SOUND 1B (BANK B) LAYER 1.
;
BSF MIDISTAT2, CH6ON_FLAG ;2nd LAYER ON THIS PRESET.
BSF GENFLAGS3, PERCON3_BIT ;BASS PERCUSSION FROM Ch10.
GOTO SCANEND ;
BASSINSTR2: ;.......................................................................................................................................................................................
BTFSS BASS_ON_FLAGS, 1 ;
BRA BASSINSTR3 ;
;
MOVF PORTC, W ;
MOVWF PEDTEMP ;
ANDLW 0x02 ;ASSIGN FSW1.
BZ BAS2J1 ;
CALL FSW1ASIGNCLEAR ;
BSF FSW1ASIGNREGBA, FSW1_BAS2_BIT;
MOVFF FSW1ASIGNREGBA, EEDATA ;VALUE TO WRITE.
MOVLW 0x60 ;
MOVWF EEADR ;DATA MEMORY TO WRITE TO.
CALL EEPROM_WRITE ;
GOTO SCANEND ;
BAS2J1: ;
MOVF PEDTEMP, W ;
ANDLW 0x01 ;ASSIGN FSW2.
BZ BAS2J2 ;
CALL FSW2ASIGNCLEAR ;
BSF FSW2ASIGNREGBA, FSW2_BAS2_BIT;
MOVFF FSW2ASIGNREGBA, EEDATA ;VALUE TO WRITE.
MOVLW 0x61 ;
MOVWF EEADR ;DATA MEMORY TO WRITE TO.
CALL EEPROM_WRITE ;
GOTO SCANEND ;
BAS2J2: ;
MOVF PEDTEMP, W ;
ANDLW 0x04 ;ASSIGN FSW3.
BZ BAS2J3 ;
CALL FSW3ASIGNCLEAR ;
BSF FSW3ASIGNREGBA, FSW3_BAS2_BIT;
MOVFF FSW3ASIGNREGBA, EEDATA ;VALUE TO WRITE.
MOVLW 0x62 ;
MOVWF EEADR ;DATA MEMORY TO WRITE TO.
CALL EEPROM_WRITE ;
GOTO SCANEND ;
BAS2J3: ;
MOVF PORTA, W ;
ANDLW 0x10 ;ASSIGN FSW4.
BZ BAS2J4 ;
CALL FSW4ASIGNCLEAR ;
BSF FSW4ASIGNREGBA, FSW4_BAS2_BIT;
MOVFF FSW4ASIGNREGBA, EEDATA ;VALUE TO WRITE.
MOVLW 0x63 ;
MOVWF EEADR ;DATA MEMORY TO WRITE TO.
CALL EEPROM_WRITE ;
GOTO SCANEND ;
;............
BAS2J4: ;
CLRF BASS_FLAGS ;
BSF BASS_FLAGS, BASS2_FLAG ;
BTFSC GENFLAGS1, BASSOCTBIT ;SELECT BASS SOUND BANK.
BRA BAS2J5 ;
;
BTFSS MIDISTAT, SNDTRY_FLAG ;SOUND TRY OUT MODE FLAG.
BRA BAS2J41 ;
BTFSS RECFLAGS1, REC_BAS2_BIT ;
BRA BAS2J41 ;
MOVLW 0x25 ;EEPROM REVERB LEVEL ADDRESS.
MOVWF EEADR ;DATA MEMORY TO WRITE TO.
MOVF BASSFXPOT, W ;
MOVWF EEDATA ;VALUE TO WRITE.
CALL EEPROM_WRITE ;
;
MOVLW 0x01 ;EEPROM BASS2 ADDRESS.
MOVWF EEADR ;DATA MEMORY TO WRITE TO.
MOVF SNDTRI, W ;
MOVWF EEDATA ;VALUE TO WRITE.
CALL EEPROM_WRITE ;
;
BAS2J41: ;
CALL BASSOUND2AL2 ;SOUND2 BANK A, LAYER 2.
;
MOVLW 0x01 ;EEPROM BASS2 ADDRESS.
MOVWF EEADR ;
BCF EECON1, EEPGD ;SELECT DATA EEPROM MEMORY.
BCF EECON1, CFGS ;
BSF EECON1, RD ;ENABLE EEPROM READ.
MOVF EEDATA, W ;VALUE IN WREG.
;
BTFSS MIDISTAT, SNDTRY_FLAG ;SOUND TRY OUT MODE FLAG.
BRA BAS2J42 ;
CLRF RECFLAGS1 ;
CLRF RECFLAGS2 ;
CLRF RECFLAGS3 ;
CLRF RECFLAGS4 ;
CLRF RECFLAGS5 ;
CLRF RECFLAGS6 ;
CLRF RECFLAGS7 ;
CLRF RECFLAGS8 ;
BSF RECFLAGS1, REC_BAS2_BIT ;
MOVWF SNDTRI ;
BAS2J42: ;
MOVWF PROGCHHOLD2 ;
BTFSS PROGCHHOLD2, 7 ;
BCF GENFLAGS4, BASVEL0_FLAG ;
BTFSC PROGCHHOLD2, 7 ;
BSF GENFLAGS4, BASVEL0_FLAG ;
MOVLW 0xC2 ;PROG CHANGE CHAN 3.
MOVWF PROGCHHOLD1 ;
BSF SCANSTAT, 0 ;SET PROG SENT FLAG.
;
CALL BASSOUND2AL1 ;
;
BSF MIDISTAT2, CH6ON_FLAG ;
BSF GENFLAGS3, PERCON3_BIT ;BASS PERCUSSION FROM Ch10.
GOTO SCANEND ;
;........................................................................................................................................................................................
BAS2J5: ;BASS BANK B SOUND.
BTFSS MIDISTAT, SNDTRY_FLAG ;SOUND TRY OUT MODE FLAG.
BRA BAS2J51 ;
BTFSS RECFLAGS7, REC_BAS8_BIT ;
BRA BAS2J51 ;
MOVLW 0x55 ;EEPROM REVERB LEVEL ADDRESS.
MOVWF EEADR ;DATA MEMORY TO WRITE TO.
MOVF BASSFXPOT, W ;
MOVWF EEDATA ;VALUE TO WRITE.
CALL EEPROM_WRITE ;
;
MOVLW 0x49 ;EEPROM BASS2 ADDRESS.
MOVWF EEADR ;DATA MEMORY TO WRITE TO.
MOVF SNDTRI, W ;
MOVWF EEDATA ;VALUE TO WRITE.
CALL EEPROM_WRITE ;
;
BAS2J51: ;
MOVLW 0x49 ;EEPROM BASS2A ADDRESS.
MOVWF EEADR ;
BCF EECON1, EEPGD ;SELECT DATA EEPROM MEMORY.
BCF EECON1, CFGS ;
BSF EECON1, RD ;ENABLE EEPROM READ.
MOVF EEDATA, W ;VALUE IN WREG.
;
BTFSS MIDISTAT, SNDTRY_FLAG ;SOUND TRY OUT MODE FLAG.
BRA BAS2J52 ;
CLRF RECFLAGS1 ;
CLRF RECFLAGS2 ;
CLRF RECFLAGS3 ;
CLRF RECFLAGS4 ;
CLRF RECFLAGS5 ;
CLRF RECFLAGS6 ;
CLRF RECFLAGS7 ;
CLRF RECFLAGS8 ;
BSF RECFLAGS7, REC_BAS8_BIT ;
MOVWF SNDTRI ;
BAS2J52: ;
MOVWF PROGCHHOLD2 ;
BTFSS PROGCHHOLD2, 7 ;
BCF GENFLAGS4, BASVEL0_FLAG ;
BTFSC PROGCHHOLD2, 7 ;
BSF GENFLAGS4, BASVEL0_FLAG ;
MOVLW 0xC2 ;PROG CHANGE CHAN 3.
MOVWF PROGCHHOLD1 ;
BSF SCANSTAT, 0 ;SET BASS PROG SENT FLAG.
;
CALL BASSOUND2BL1 ;
BAS2J531: ;
BCF MIDISTAT2, CH6ON_FLAG ;
BSF GENFLAGS3, PERCON3_BIT ;BASS PERCUSSION FROM Ch10.
GOTO SCANEND ;
BASSINSTR3: ;........................................................................................................................................................................................
BTFSS BASS_ON_FLAGS, 2 ;
GOTO BASSINSTR4 ;
;
MOVF PORTC, W ;
MOVWF PEDTEMP ;
ANDLW 0x02 ;ASSIGN FSW1.
BZ BAS3J1 ;
CALL FSW1ASIGNCLEAR ;
BSF FSW1ASIGNREGBA, FSW1_BAS3_BIT;
MOVFF FSW1ASIGNREGBA, EEDATA ;VALUE TO WRITE.
MOVLW 0x60 ;
MOVWF EEADR ;DATA MEMORY TO WRITE TO.
CALL EEPROM_WRITE ;
GOTO SCANEND ;
BAS3J1: ;
MOVF PEDTEMP, W ;
ANDLW 0x01 ;ASSIGN FSW2.
BZ BAS3J2 ;
CALL FSW2ASIGNCLEAR ;
BSF FSW2ASIGNREGBA, FSW2_BAS3_BIT;
MOVFF FSW2ASIGNREGBA, EEDATA ;VALUE TO WRITE.
MOVLW 0x61 ;
MOVWF EEADR ;DATA MEMORY TO WRITE TO.
CALL EEPROM_WRITE ;
GOTO SCANEND ;
BAS3J2: ;
MOVF PEDTEMP, W ;
ANDLW 0x04 ;ASSIGN FSW3.
BZ BAS3J3 ;
CALL FSW3ASIGNCLEAR ;
BSF FSW3ASIGNREGBA, FSW3_BAS3_BIT;
MOVFF FSW3ASIGNREGBA, EEDATA ;VALUE TO WRITE.
MOVLW 0x62 ;
MOVWF EEADR ;DATA MEMORY TO WRITE TO.
CALL EEPROM_WRITE ;
GOTO SCANEND ;
BAS3J3: ;
MOVF PORTA, W ;
ANDLW 0x10 ;ASSIGN FSW4.
BZ BAS3J4 ;
CALL FSW4ASIGNCLEAR ;
BSF FSW4ASIGNREGBA, FSW4_BAS3_BIT;
MOVFF FSW4ASIGNREGBA, EEDATA ;VALUE TO WRITE.
MOVLW 0x63 ;
MOVWF EEADR ;DATA MEMORY TO WRITE TO.
CALL EEPROM_WRITE ;
GOTO SCANEND ;
;............
BAS3J4: ;
CLRF BASS_FLAGS ;
BSF BASS_FLAGS, BASS3_FLAG ;
BTFSC GENFLAGS1, BASSOCTBIT ;SELECT BASS SOUND BANK.
BRA BAS3J5 ;
;
BTFSS MIDISTAT, SNDTRY_FLAG ;SOUND TRY OUT MODE FLAG.
BRA BAS3J41 ;
BTFSS RECFLAGS1, REC_BAS3_BIT ;
BRA BAS3J41 ;
MOVLW 0x26 ;EEPROM REVERB LEVEL ADDRESS.
MOVWF EEADR ;DATA MEMORY TO WRITE TO.
MOVF BASSFXPOT, W ;
MOVWF EEDATA ;VALUE TO WRITE.
CALL EEPROM_WRITE ;
;
MOVLW 0x02 ;EEPROM BASS3 ADDRESS.
MOVWF EEADR ;DATA MEMORY TO WRITE TO.
MOVF SNDTRI, W ;
MOVWF EEDATA ;VALUE TO WRITE.
CALL EEPROM_WRITE ;
;
BAS3J41: ;
CALL BASSOUND3AL2 ;
;
MOVLW 0x02 ;EEPROM BASS3 ADDRESS.
MOVWF EEADR ;
BCF EECON1, EEPGD ;SELECT DATA EEPROM MEMORY.
BCF EECON1, CFGS ;
BSF EECON1, RD ;ENABLE EEPROM READ.
MOVF EEDATA, W ;VALUE IN WREG.
;
BTFSS MIDISTAT, SNDTRY_FLAG ;SOUND TRY OUT MODE FLAG.
BRA BAS3J42 ;
CLRF RECFLAGS1 ;
BSF RECFLAGS1, REC_BAS3_BIT ;
CLRF RECFLAGS2 ;
CLRF RECFLAGS3 ;
CLRF RECFLAGS4 ;
CLRF RECFLAGS5 ;
CLRF RECFLAGS6 ;
CLRF RECFLAGS7 ;
CLRF RECFLAGS8 ;
MOVWF SNDTRI ;
BAS3J42: ;
MOVWF PROGCHHOLD2 ;
BTFSS PROGCHHOLD2, 7 ;
BCF GENFLAGS4, BASVEL0_FLAG ;
BTFSC PROGCHHOLD2, 7 ;
BSF GENFLAGS4, BASVEL0_FLAG ;
MOVLW 0xC2 ;PROG CHANGE CHAN 3.
MOVWF PROGCHHOLD1 ;
BSF SCANSTAT, 0 ;SET PROG SENT FLAG.
;
CALL BASSOUND3AL1 ;
;
BSF MIDISTAT2, CH6ON_FLAG ;DOUBLE PIANO.
BSF GENFLAGS3, PERCON3_BIT ;BASS PERCUSSION FROM Ch10.
GOTO SCANEND ;
;
BAS3J5: ;................................................................
BTFSS MIDISTAT, SNDTRY_FLAG ;SOUND TRY OUT MODE FLAG.
BRA BAS3J51 ;
BTFSS RECFLAGS7, REC_BAS9_BIT ;
BRA BAS3J51 ;
MOVLW 0x56 ;EEPROM REVERB LEVEL ADDRESS.
MOVWF EEADR ;DATA MEMORY TO WRITE TO.
MOVF BASSFXPOT, W ;
MOVWF EEDATA ;VALUE TO WRITE.
CALL EEPROM_WRITE ;
;
MOVLW 0x4A ;EEPROM BASS3 ADDRESS.
MOVWF EEADR ;DATA MEMORY TO WRITE TO.
MOVF SNDTRI, W ;
MOVWF EEDATA ;VALUE TO WRITE.
CALL EEPROM_WRITE ;
;
BAS3J51: ;
CALL BASSOUND3BL2 ;
;
MOVLW 0x4A ;EEPROM BASS3 ADDRESS.
MOVWF EEADR ;
BCF EECON1, EEPGD ;SELECT DATA EEPROM MEMORY.
BCF EECON1, CFGS ;
BSF EECON1, RD ;ENABLE EEPROM READ.
MOVF EEDATA, W ;VALUE IN WREG.
;
BTFSS MIDISTAT, SNDTRY_FLAG ;SOUND TRY OUT MODE FLAG.
BRA BAS3J52 ;
CLRF RECFLAGS1 ;
CLRF RECFLAGS2 ;
CLRF RECFLAGS3 ;
CLRF RECFLAGS4 ;
CLRF RECFLAGS5 ;
CLRF RECFLAGS6 ;
CLRF RECFLAGS7 ;
CLRF RECFLAGS8 ;
BSF RECFLAGS7, REC_BAS9_BIT ;
MOVWF SNDTRI ;
BAS3J52: ;
MOVWF PROGCHHOLD2 ;
BTFSS PROGCHHOLD2, 7 ;
BCF GENFLAGS4, BASVEL0_FLAG ;
BTFSC PROGCHHOLD2, 7 ;
BSF GENFLAGS4, BASVEL0_FLAG ;
MOVLW 0xC2 ;PROG CHANGE CHAN 3.
MOVWF PROGCHHOLD1 ;
BSF SCANSTAT, 0 ;SET PROG SENT FLAG.
;
CALL BASSOUND3BL1 ;
;
BSF MIDISTAT2, CH6ON_FLAG ;DOUBLE PIANO.
BSF GENFLAGS3, PERCON3_BIT ;BASS PERCUSSION FROM Ch10.
GOTO SCANEND ;
BASSINSTR4: ;........................................................................................................................................................................................
BTFSS BASS_ON_FLAGS, 3 ;
BRA BASSINSTR5 ;
;
MOVF PORTC, W ;
MOVWF PEDTEMP ;
ANDLW 0x02 ;ASSIGN FSW1.
BZ BAS4J1 ;
CALL FSW1ASIGNCLEAR ;
BSF FSW1ASIGNREGBA, FSW1_BAS4_BIT;
MOVFF FSW1ASIGNREGBA, EEDATA ;VALUE TO WRITE.
MOVLW 0x60 ;
MOVWF EEADR ;DATA MEMORY TO WRITE TO.
CALL EEPROM_WRITE ;
GOTO SCANEND ;
BAS4J1: ;
MOVF PEDTEMP, W ;
ANDLW 0x01 ;ASSIGN FSW2.
BZ BAS4J2 ;
CALL FSW2ASIGNCLEAR ;
BSF FSW2ASIGNREGBA, FSW2_BAS4_BIT;
MOVFF FSW2ASIGNREGBA, EEDATA ;VALUE TO WRITE.
MOVLW 0x61 ;
MOVWF EEADR ;DATA MEMORY TO WRITE TO.
CALL EEPROM_WRITE ;
GOTO SCANEND ;
BAS4J2: ;
MOVF PEDTEMP, W ;
ANDLW 0x04 ;ASSIGN FSW3.
BZ BAS4J3 ;
CALL FSW3ASIGNCLEAR ;
BSF FSW3ASIGNREGBA, FSW3_BAS4_BIT;
MOVFF FSW3ASIGNREGBA, EEDATA ;VALUE TO WRITE.
MOVLW 0x62 ;
MOVWF EEADR ;DATA MEMORY TO WRITE TO.
CALL EEPROM_WRITE ;
GOTO SCANEND ;
BAS4J3: ;
MOVF PORTA, W ;
ANDLW 0x10 ;ASSIGN FSW4.
BZ BAS4J4 ;
CALL FSW4ASIGNCLEAR ;
BSF FSW4ASIGNREGBA, FSW4_BAS4_BIT;
MOVFF FSW1ASIGNREGBA, EEDATA ;VALUE TO WRITE.
MOVLW 0x63 ;
MOVWF EEADR ;DATA MEMORY TO WRITE TO.
CALL EEPROM_WRITE ;
GOTO SCANEND ;
;.............
BAS4J4: ;
CLRF BASS_FLAGS ;
BSF BASS_FLAGS, BASS4_FLAG ;
BTFSC GENFLAGS1, BASSOCTBIT ;SELECT BASS SOUND BANK.
BRA BAS4J5 ;
;
BTFSS MIDISTAT, SNDTRY_FLAG ;SOUND TRY OUT MODE FLAG.
BRA BAS4J41 ;
BTFSS RECFLAGS1, REC_BAS4_BIT ;
BRA BAS4J41 ;
MOVLW 0x27 ;EEPROM REVERB LEVEL ADDRESS.
MOVWF EEADR ;DATA MEMORY TO WRITE TO.
MOVF BASSFXPOT, W ;
MOVWF EEDATA ;VALUE TO WRITE.
CALL EEPROM_WRITE ;
;
MOVLW 0x03 ;EEPROM BASS4 ADDRESS.
MOVWF EEADR ;DATA MEMORY TO WRITE TO.
MOVF SNDTRI, W ;
MOVWF EEDATA ;VALUE TO WRITE.
CALL EEPROM_WRITE ;
;
BAS4J41: ;
MOVLW 0x03 ;EEPROM BASS4 ADDRESS.
MOVWF EEADR ;
BCF EECON1, EEPGD ;SELECT DATA EEPROM MEMORY.
BCF EECON1, CFGS ;
BSF EECON1, RD ;ENABLE EEPROM READ.
MOVF EEDATA, W ;VALUE IN WREG.
;
BTFSS MIDISTAT, SNDTRY_FLAG ;SOUND TRY OUT MODE FLAG.
BRA BAS4J42 ;
CLRF RECFLAGS1 ;
BSF RECFLAGS1, REC_BAS4_BIT ;
CLRF RECFLAGS2 ;
CLRF RECFLAGS3 ;
CLRF RECFLAGS4 ;
CLRF RECFLAGS5 ;
CLRF RECFLAGS6 ;
CLRF RECFLAGS7 ;
CLRF RECFLAGS8 ;
MOVWF SNDTRI ;
BAS4J42: ;
MOVWF PROGCHHOLD2 ;
BTFSS PROGCHHOLD2, 7 ;
BCF GENFLAGS4, BASVEL0_FLAG ;
BTFSC PROGCHHOLD2, 7 ;
BSF GENFLAGS4, BASVEL0_FLAG ;
MOVLW 0xC2 ;PROG CHANGE CHAN 3.
MOVWF PROGCHHOLD1 ;
BSF SCANSTAT, 0 ;SET PROG SENT FLAG.
;
CALL BASSOUND4AL1 ;
;
BCF MIDISTAT2, CH6ON_FLAG ;NO EXTRA BASS.
BSF GENFLAGS3, PERCON3_BIT ;BASS PERCUSSION FROM Ch10.
GOTO SCANEND ;
;
BAS4J5: ;........................................................................................................................................................................................
BTFSS MIDISTAT, SNDTRY_FLAG ;SOUND TRY OUT MODE FLAG.
BRA BAS4J51 ;
BTFSS RECFLAGS7, REC_BAS10_BIT ;
BRA BAS4J51 ;
MOVLW 0x57 ;EEPROM REVERB LEVEL ADDRESS.
MOVWF EEADR ;DATA MEMORY TO WRITE TO.
MOVF BASSFXPOT, W ;
MOVWF EEDATA ;VALUE TO WRITE.
CALL EEPROM_WRITE ;
;
MOVLW 0x4B ;EEPROM BASS4 ADDRESS.
MOVWF EEADR ;DATA MEMORY TO WRITE TO.
MOVF SNDTRI, W ;
MOVWF EEDATA ;VALUE TO WRITE.
CALL EEPROM_WRITE ;
;
BAS4J51: ;
MOVLW 0x4B ;EEPROM BASS4 ADDRESS.
MOVWF EEADR ;
BCF EECON1, EEPGD ;SELECT DATA EEPROM MEMORY.
BCF EECON1, CFGS ;
BSF EECON1, RD ;ENABLE EEPROM READ.
MOVF EEDATA, W ;VALUE IN WREG.
;
BTFSS MIDISTAT, SNDTRY_FLAG ;SOUND TRY OUT MODE FLAG.
BRA BAS4J52 ;
CLRF RECFLAGS1 ;
CLRF RECFLAGS2 ;
CLRF RECFLAGS3 ;
CLRF RECFLAGS4 ;
CLRF RECFLAGS5 ;
CLRF RECFLAGS6 ;
CLRF RECFLAGS7 ;
CLRF RECFLAGS8 ;
BSF RECFLAGS7, REC_BAS10_BIT ;
MOVWF SNDTRI ;
BAS4J52: ;
MOVWF PROGCHHOLD2 ;
BTFSS PROGCHHOLD2, 7 ;
BCF GENFLAGS4, BASVEL0_FLAG ;
BTFSC PROGCHHOLD2, 7 ;
BSF GENFLAGS4, BASVEL0_FLAG ;
MOVLW 0xC2 ;PROG CHANGE CHAN 3.
MOVWF PROGCHHOLD1 ;
BSF SCANSTAT, 0 ;SET PROG SEND FLAG.
;
CALL BASSOUND4BL1 ;
;
BCF MIDISTAT2, CH6ON_FLAG ;EXTRA BASS.
BSF GENFLAGS3, PERCON3_BIT ;BASS PERCUSSION FROM Ch10.
GOTO SCANEND ;
BASSINSTR5: ;........................................................................................................................................................................................
BTFSS WREG, 4 ;
BRA BASSINSTR6 ;
;
MOVF PORTC, W ;
MOVWF PEDTEMP ;
ANDLW 0x02 ;ASSIGN FSW1.
BZ BAS5J1 ;
CALL FSW1ASIGNCLEAR ;
BSF FSW1ASIGNREGBA, FSW1_BAS5_BIT;
MOVFF FSW1ASIGNREGBA, EEDATA ;VALUE TO WRITE.
MOVLW 0x60 ;
MOVWF EEADR ;DATA MEMORY TO WRITE TO.
CALL EEPROM_WRITE ;
GOTO SCANEND ;
BAS5J1: ;
MOVF PEDTEMP, W ;
ANDLW 0x01 ;ASSIGN FSW2.
BZ BAS5J2 ;
CALL FSW1ASIGNCLEAR ;
BSF FSW2ASIGNREGBA, FSW2_BAS5_BIT;
MOVFF FSW2ASIGNREGBA, EEDATA ;VALUE TO WRITE.
MOVLW 0x61 ;
MOVWF EEADR ;DATA MEMORY TO WRITE TO.
CALL EEPROM_WRITE ;
GOTO SCANEND ;
BAS5J2: ;
MOVF PEDTEMP, W ;
ANDLW 0x04 ;ASSIGN FSW3.
BZ BAS5J3 ;
CALL FSW1ASIGNCLEAR ;
BSF FSW3ASIGNREGBA, FSW3_BAS5_BIT;
MOVFF FSW3ASIGNREGBA, EEDATA ;VALUE TO WRITE.
MOVLW 0x62 ;
MOVWF EEADR ;DATA MEMORY TO WRITE TO.
CALL EEPROM_WRITE ;
GOTO SCANEND ;
BAS5J3: ;
MOVF PORTA, W ;
ANDLW 0x10 ;ASSIGN FSW4.
BZ BAS5J4 ;
CALL FSW1ASIGNCLEAR ;
BSF FSW4ASIGNREGBA, FSW4_BAS5_BIT;
MOVFF FSW4ASIGNREGBA, EEDATA ;VALUE TO WRITE.
MOVLW 0x63 ;
MOVWF EEADR ;DATA MEMORY TO WRITE TO.
CALL EEPROM_WRITE ;
GOTO SCANEND ;
;
BAS5J4: ;
CLRF BASS_FLAGS ;
BSF BASS_FLAGS, BASS5_FLAG ;
BTFSC GENFLAGS1, BASSOCTBIT ;SELECT BASS SOUND BANK.
BRA BAS5J5 ;
;
BTFSS MIDISTAT, SNDTRY_FLAG ;SOUND TRY OUT MODE FLAG.
BRA BAS5J41 ;
BTFSS RECFLAGS1, REC_BAS5_BIT ;
BRA BAS5J41 ;
MOVLW 0x28 ;EEPROM REVERB LEVEL ADDRESS.
MOVWF EEADR ;DATA MEMORY TO WRITE TO.
MOVF BASSFXPOT, W ;
MOVWF EEDATA ;VALUE TO WRITE.
CALL EEPROM_WRITE ;
;
MOVLW 0x04 ;EEPROM BASS5 ADDRESS.
MOVWF EEADR ;DATA MEMORY TO WRITE TO.
MOVF SNDTRI, W ;
MOVWF EEDATA ;VALUE TO WRITE.
CALL EEPROM_WRITE ;
;
BAS5J41: ;
MOVLW 0x04 ;EEPROM BASS5 ADDRESS.
MOVWF EEADR ;
BCF EECON1, EEPGD ;SELECT DATA EEPROM MEMORY.
BCF EECON1, CFGS ;
BSF EECON1, RD ;ENABLE EEPROM READ.
MOVF EEDATA, W ;VALUE IN WREG.
;
BTFSS MIDISTAT, SNDTRY_FLAG ;SOUND TRY OUT MODE FLAG.
BRA BAS5J42 ;
CLRF RECFLAGS1 ;
BSF RECFLAGS1, REC_BAS5_BIT ;
CLRF RECFLAGS2 ;
CLRF RECFLAGS3 ;
CLRF RECFLAGS4 ;
CLRF RECFLAGS5 ;
CLRF RECFLAGS6 ;
CLRF RECFLAGS7 ;
CLRF RECFLAGS8 ;
MOVWF SNDTRI ;
BAS5J42: ;
MOVWF PROGCHHOLD2 ;
BTFSS PROGCHHOLD2, 7 ;
BCF GENFLAGS4, BASVEL0_FLAG ;
BTFSC PROGCHHOLD2, 7 ;
BSF GENFLAGS4, BASVEL0_FLAG ;
MOVLW 0xC2 ;PROG CHANGE CHAN 3.
MOVWF PROGCHHOLD1 ;
BSF SCANSTAT, 0 ;SET BASS PROG SENT FLAG.
;
CALL BASSOUND5AL1 ;
;
BCF MIDISTAT2, CH6ON_FLAG ;NO EXTRA BASS.
BSF GENFLAGS3, PERCON3_BIT ;BASS PERCUSSION FROM Ch10.
GOTO SCANEND ;
;........................................................................................................................................................................................
BAS5J5: ;
BTFSS MIDISTAT, SNDTRY_FLAG ;SOUND TRY OUT MODE FLAG.
BRA BAS5J51 ;
BTFSS RECFLAGS7, REC_BAS11_BIT ;
BRA BAS5J51 ;
MOVLW 0x58 ;EEPROM REVERB LEVEL ADDRESS.
MOVWF EEADR ;DATA MEMORY TO WRITE TO.
MOVF BASSFXPOT, W ;
MOVWF EEDATA ;VALUE TO WRITE.
CALL EEPROM_WRITE ;
;
MOVLW 0x4C ;EEPROM BASS5 ADDRESS.
MOVWF EEADR ;DATA MEMORY TO WRITE TO.
MOVF SNDTRI, W ;
MOVWF EEDATA ;VALUE TO WRITE.
CALL EEPROM_WRITE ;
;
BAS5J51: ;
MOVLW 0x4C ;EEPROM BASS5 ADDRESS.
MOVWF EEADR ;
BCF EECON1, EEPGD ;SELECT DATA EEPROM MEMORY.
BCF EECON1, CFGS ;
BSF EECON1, RD ;ENABLE EEPROM READ.
MOVF EEDATA, W ;VALUE IN WREG.
;
BTFSS MIDISTAT, SNDTRY_FLAG ;SOUND TRY OUT MODE FLAG.
BRA BAS5J52 ;
CLRF RECFLAGS1 ;
CLRF RECFLAGS2 ;
CLRF RECFLAGS3 ;
CLRF RECFLAGS4 ;
CLRF RECFLAGS5 ;
CLRF RECFLAGS6 ;
CLRF RECFLAGS7 ;
CLRF RECFLAGS8 ;
BSF RECFLAGS7, REC_BAS11_BIT ;
MOVWF SNDTRI ;
BAS5J52: ;
MOVWF PROGCHHOLD2 ;
BTFSS PROGCHHOLD2, 7 ;
BCF GENFLAGS4, BASVEL0_FLAG ;
BTFSC PROGCHHOLD2, 7 ;
BSF GENFLAGS4, BASVEL0_FLAG ;
MOVLW 0xC2 ;PROG CHANGE CHAN 3.
MOVWF PROGCHHOLD1 ;
BSF SCANSTAT, 0 ;SET BASS PROG SENT FLAG.
;
CALL BASSOUND5BL1 ;
;
BCF MIDISTAT2, CH6ON_FLAG ;EXTRA BASS LAYER.
BSF GENFLAGS3, PERCON3_BIT ;BASS PERCUSSION FROM Ch10.
GOTO SCANEND ;
;........................................................................................................................................................................................
BASSINSTR6: ;Bass register button.
BTFSS BASS_ON_FLAGS, 5 ;
BRA BASSINSOCT ;
;
MOVF PORTC, W ;
MOVWF PEDTEMP ;
ANDLW 0x02 ;ASSIGN FSW1.
BZ BAS6J1 ;
CALL FSW1ASIGNCLEAR ;
BSF FSW1ASIGNREGBA, FSW1_BAS6_BIT;
MOVFF FSW1ASIGNREGBA, EEDATA ;VALUE TO WRITE.
MOVLW 0x60 ;
MOVWF EEADR ;DATA MEMORY TO WRITE TO.
CALL EEPROM_WRITE ;
GOTO SCANEND ;
BAS6J1: ;
MOVF PEDTEMP, W ;
ANDLW 0x01 ;ASSIGN FSW2.
BZ BAS6J2 ;
CALL FSW2ASIGNCLEAR ;
BSF FSW2ASIGNREGBA, FSW2_BAS6_BIT;
MOVFF FSW2ASIGNREGBA, EEDATA ;VALUE TO WRITE.
MOVLW 0x61 ;
MOVWF EEADR ;DATA MEMORY TO WRITE TO.
CALL EEPROM_WRITE ;
GOTO SCANEND ;
BAS6J2: ;
MOVF PEDTEMP, W ;
ANDLW 0x04 ;ASSIGN FSW3.
BZ BAS6J3 ;
CALL FSW3ASIGNCLEAR ;
BSF FSW3ASIGNREGBA, FSW3_BAS6_BIT;
MOVFF FSW3ASIGNREGBA, EEDATA ;VALUE TO WRITE.
MOVLW 0x62 ;
MOVWF EEADR ;DATA MEMORY TO WRITE TO.
CALL EEPROM_WRITE ;
GOTO SCANEND ;
BAS6J3: ;
MOVF PORTA, W ;
ANDLW 0x10 ;ASSIGN FSW4.
BZ BAS6J4 ;
CALL FSW4ASIGNCLEAR ;
BSF FSW4ASIGNREGBA, FSW4_BAS6_BIT;
MOVFF FSW4ASIGNREGBA, EEDATA ;VALUE TO WRITE.
MOVLW 0x63 ;
MOVWF EEADR ;DATA MEMORY TO WRITE TO.
CALL EEPROM_WRITE ;
GOTO SCANEND ;
;
BAS6J4: ;Footswitch jump in point.
BAS6J5: ;
MOVLW 0xB2 ;ALL SOUND OFF CHAN 3.
BAS6CH3OFFJ1: ;
BTFSS TXSTA, TRMT ;SET WHEN TxShiftReg IS EMPTY.
BRA BAS6CH3OFFJ1 ;
MOVWF TXREG ;SEND MIDI.
MOVLW 0x7B ;CONTROL NUMBER.
BAS6CH3OFFJ2: ;
BTFSS TXSTA, TRMT ;SET WHEN TxShiftReg IS EMPTY.
BRA BAS6CH3OFFJ2 ;
MOVWF TXREG ;SEND MIDI.
MOVLW 0x00 ;
BAS6CH3OFFJ3: ;
BTFSS TXSTA, TRMT ;SET WHEN TxShiftReg IS EMPTY.
BRA BAS6CH3OFFJ3 ;
MOVWF TXREG ;SEND MIDI.
;
BTFSS MIDISTAT2, CH6ON_FLAG ;TEST FOR EXTRA BASS LAYER.
BRA BAS6REGEND ;
MOVLW 0xB5 ;ALL SOUND OFF CHAN 6.
BAS6CH3OFFJ4: ;
BTFSS TXSTA, TRMT ;SET WHEN TxShiftReg IS EMPTY.
BRA BAS6CH3OFFJ4 ;
MOVWF TXREG ;SEND MIDI.
MOVLW 0x7B ;CONTROL NUMBER.
BAS6CH3OFFJ5: ;
BTFSS TXSTA, TRMT ;SET WHEN TxShiftReg IS EMPTY.
BRA BAS6CH3OFFJ5 ;
MOVWF TXREG ;SEND MIDI.
MOVLW 0x00 ;
BAS6CH3OFFJ6: ;
BTFSS TXSTA, TRMT ;SET WHEN TxShiftReg IS EMPTY.
BRA BAS6CH3OFFJ6 ;
MOVWF TXREG ;SEND MIDI.
;
BAS6REGEND: ;
BTG GENFLAGS4, BASS_RNG_BIT ;
GOTO SCANEND ;
BASSINSOCT: ;........................................................................BASS BANK A 0R B SELECT.
BTFSS WREG, 6 ;
BRA BASS8 ;
;
MOVF PORTC, W ;
MOVWF PEDTEMP ;
ANDLW 0x02 ;ASSIGN FSW1.
BZ BAS2RES1 ;
CALL FSW1ASIGNCLEAR ;
BSF FSW1ASIGNREG, FSW1_OBAS_BIT;
MOVFF FSW1ASIGNREG, EEDATA ;VALUE TO WRITE.
MOVLW 0x78 ;
MOVWF EEADR ;DATA MEMORY TO WRITE TO.
CALL EEPROM_WRITE ;
BRA BAS2RESFS ;
BAS2RES1: ;
MOVF PEDTEMP, W ;
ANDLW 0x01 ;ASSIGN FSW2.
BZ BAS2RES2 ;
CALL FSW2ASIGNCLEAR ;
BSF FSW2ASIGNREG, FSW2_OBAS_BIT;
MOVFF FSW2ASIGNREG, EEDATA ;VALUE TO WRITE.
MOVLW 0x79 ;
MOVWF EEADR ;DATA MEMORY TO WRITE TO.
CALL EEPROM_WRITE ;
BRA BAS2RESFS ;
BAS2RES2: ;
MOVF PEDTEMP, W ;
ANDLW 0x04 ;ASSIGN FSW3.
BZ BAS2RES3 ;
CALL FSW3ASIGNCLEAR ;
BSF FSW3ASIGNREG, FSW3_OBAS_BIT;
MOVFF FSW3ASIGNREG, EEDATA ;VALUE TO WRITE.
MOVLW 0x7A ;
MOVWF EEADR ;DATA MEMORY TO WRITE TO.
CALL EEPROM_WRITE ;
BRA BAS2RESFS ;
BAS2RES3: ;
MOVF PORTA, W ;
ANDLW 0x10 ;ASSIGN FSW3.
BZ BAS2RES4 ;
CALL FSW4ASIGNCLEAR ;
BSF FSW4ASIGNREG, FSW4_OBAS_BIT;
MOVFF FSW4ASIGNREG, EEDATA ;VALUE TO WRITE.
MOVLW 0x7B ;
MOVWF EEADR ;DATA MEMORY TO WRITE TO.
CALL EEPROM_WRITE ;
BRA BAS2RESFS ;
BAS2RES4: ;
;
BTG GENFLAGS1, BASSOCTBIT ;BASS SOUND BANK SELECT.
BTFSS GENFLAGS1, BASSOCTBIT ;
BSF DISPLAYREG, BASSBANK ;BASSOCTBIT=0=BANK A. LED IS ON.
BTFSC GENFLAGS1, BASSOCTBIT ;
BCF DISPLAYREG, BASSBANK ;BASSOCTBIT=1=BANK B. LED IS OFF.
;
BTFSC BASS_FLAGS, BASS1_FLAG ;
GOTO BAS1J4 ;
BTFSC BASS_FLAGS, BASS2_FLAG ;
GOTO BAS2J4 ;
BTFSC BASS_FLAGS, BASS3_FLAG ;
GOTO BAS3J4 ;
BTFSC BASS_FLAGS, BASS4_FLAG ;
GOTO BAS4J4 ;
BTFSC BASS_FLAGS, BASS5_FLAG ;
GOTO BAS5J4 ;
BTFSC BASS_FLAGS, BASS6_FLAG ;
GOTO BAS6J4 ;
BAS2RESFS: ;
GOTO SCANEND ;
;........................................................................
BASS8: ;DRUMS PERC SELECT 1.
BTFSS BASS_ON_FLAGS, 7 ;
BRA CHORD_SCAN ;
;
;
MOVF PORTC, W ;
MOVWF PEDTEMP ;
ANDLW 0x02 ;ASSIGN FSW1.
BZ BAS8J1 ;
CALL FSW1ASIGNCLEAR ;
BSF FSW1ASIGNREGBA, FSW1_BAS8_BIT;
MOVFF FSW1ASIGNREGBA, EEDATA ;VALUE TO WRITE.
MOVLW 0x60 ;
MOVWF EEADR ;DATA MEMORY TO WRITE TO.
CALL EEPROM_WRITE ;
GOTO SCANEND ;
BAS8J1: ;
MOVF PEDTEMP, W ;
ANDLW 0x01 ;ASSIGN FSW2.
BZ BAS8J2 ;
CALL FSW2ASIGNCLEAR ;
BSF FSW2ASIGNREGBA, FSW2_BAS8_BIT;
MOVFF FSW2ASIGNREGBA, EEDATA ;VALUE TO WRITE.
MOVLW 0x61 ;
MOVWF EEADR ;DATA MEMORY TO WRITE TO.
CALL EEPROM_WRITE ;
GOTO SCANEND ;
BAS8J2: ;
MOVF PEDTEMP, W ;
ANDLW 0x04 ;ASSIGN FSW3.
BZ BAS8J3 ;
CALL FSW3ASIGNCLEAR ;
BSF FSW3ASIGNREGBA, FSW3_BAS8_BIT;
MOVFF FSW3ASIGNREGBA, EEDATA ;VALUE TO WRITE.
MOVLW 0x62 ;
MOVWF EEADR ;DATA MEMORY TO WRITE TO.
CALL EEPROM_WRITE ;
GOTO SCANEND ;
BAS8J3: ;
MOVF PORTA, W ;
ANDLW 0x10 ;ASSIGN FSW4.
BZ BAS8J4 ;
CALL FSW4ASIGNCLEAR ;
BSF FSW4ASIGNREGBA, FSW4_BAS8_BIT;
MOVFF FSW4ASIGNREGBA, EEDATA ;VALUE TO WRITE.
MOVLW 0x63 ;
MOVWF EEADR ;DATA MEMORY TO WRITE TO.
CALL EEPROM_WRITE ;
GOTO SCANEND ;
;
BAS8J4: ;Footswitch jump in point. This would be Drum button3
; select point.
BCF GENFLAGS3, DRM1_BIT ;Clear drum1.
BCF GENFLAGS8, DRM3_BIT ;Clear drum2.
BTG GENFLAGS8, DRM2_BIT ;
;
BTFSS GENFLAGS8, DRM2_BIT ;2
MOVLW D'0' ;PROG 1 - STANDARD DRUM SET.
BTFSC GENFLAGS8, DRM2_BIT ;2
MOVLW D'0' ;(PROG 4 - BRUSH DRUM SET.)
MOVWF PROGCHHOLD2 ;BANK SELECT FOR PERCUSSION.
MOVLW 0xC9 ;Ch10.
MOVWF PROGCHHOLD1 ;
CALL PROGCHNGSEND ;
GOTO SCANEND ;
;............................................................................................................................................................................................
CHORD_SCAN: ;
MOVLW 0x10 ;RB5, ENABLE BASS BUSS.
MOVWF PORTB ;
NOP ;
NOP ;
NOP ;
NOP ;
MOVF PORTD, W ;TO WREG.
CLRF PORTB ;
MOVWF SCANTEMP1 ;
XORWF CHORDSCANHOLD, W ;RESULT IN W.
MOVFF SCANTEMP1, CHORDSCANHOLD;
BNZ CHORD0J1 ;CHANGE IN SCAN.
GOTO RH11_SCAN ;NO CHANGE IN SCAN.
CHORD0J1: ;
MOVFF CHORDSCANHOLD, CHORD_OFF_FLAGS ;
COMF CHORD_OFF_FLAGS, F ;
ANDWF CHORD_OFF_FLAGS, F ;CHANGES TO OFF STORED.
;
ANDWF SCANTEMP1, W ;CHANGE TO ON NOW IN W.
MOVWF CHORD_ON_FLAGS ;
BSF GENFLAGS10, DIP_CHNG_LED ;Dip control change led.
CHORD0J2: ;........................................................................................................................................................................................
BTFSS CHORD_ON_FLAGS, 0 ;
BRA CHORDINSTR2 ;
;
MOVF PORTC, W ;
MOVWF PEDTEMP ;
ANDLW 0x02 ;ASSIGN FSW1.
BZ CHD1J1 ;
CALL FSW1ASIGNCLEAR ;
BSF FSW1ASIGNREGCH, FSW1_CHD1_BIT;
MOVFF FSW1ASIGNREGCH, EEDATA ;VALUE TO WRITE.
MOVLW 0x64 ;
MOVWF EEADR ;DATA MEMORY TO WRITE TO.
CALL EEPROM_WRITE ;
GOTO SCANEND ;
CHD1J1: ;
MOVF PEDTEMP, W ;
ANDLW 0x01 ;ASSIGN FSW2.
BZ CHD1J2 ;
CALL FSW2ASIGNCLEAR ;
BSF FSW2ASIGNREGCH, FSW2_CHD1_BIT;
MOVFF FSW2ASIGNREGCH, EEDATA ;VALUE TO WRITE.
MOVLW 0x65 ;
MOVWF EEADR ;DATA MEMORY TO WRITE TO.
CALL EEPROM_WRITE ;
GOTO SCANEND ;
CHD1J2: ;
MOVF PEDTEMP, W ;
ANDLW 0x04 ;ASSIGN FSW3.
BZ CHD1J3 ;
CALL FSW3ASIGNCLEAR ;
BSF FSW3ASIGNREGCH, FSW3_CHD1_BIT;
MOVFF FSW3ASIGNREGCH, EEDATA ;VALUE TO WRITE.
MOVLW 0x66 ;
MOVWF EEADR ;DATA MEMORY TO WRITE TO.
CALL EEPROM_WRITE ;
GOTO SCANEND ;
CHD1J3: ;
MOVF PORTA, W ;
ANDLW 0x10 ;ASSIGN FSW4.
BZ CHD1J4 ;
CALL FSW4ASIGNCLEAR ;
BSF FSW4ASIGNREGCH, FSW4_CHD1_BIT;
MOVFF FSW4ASIGNREGCH, EEDATA ;VALUE TO WRITE.
MOVLW 0x67 ;
MOVWF EEADR ;DATA MEMORY TO WRITE TO.
CALL EEPROM_WRITE ;
GOTO SCANEND ;
;
CHD1J4: ;
CLRF CHORD_FLAGS ;
BSF CHORD_FLAGS, CHORD1_FLAG;SHOWS ACTIVE CHORD BUTTON.
BTFSC GENFLAGS1, CHORDOCTBIT ;SELECT CHORD SOUND BANK.
BRA CHD1J5 ;
;
BTFSS MIDISTAT, SNDTRY_FLAG ;SOUND TRY OUT MODE FLAG.
BRA CHD1J41 ;
BTFSS RECFLAGS2, REC_CHD1_BIT ;
BRA CHD1J41 ;
MOVLW 0x2A ;EEPROM REVERB LEVEL ADDRESS.
MOVWF EEADR ;DATA MEMORY TO WRITE TO.
MOVF CHORDFXPOT, W ;
MOVWF EEDATA ;VALUE TO WRITE.
CALL EEPROM_WRITE ;
;
MOVLW 0x06 ;EEPROM CHORD1 ADDRESS.
MOVWF EEADR ;DATA MEMORY TO WRITE TO.
MOVF SNDTRI, W ;
MOVWF EEDATA ;VALUE TO WRITE.
CALL EEPROM_WRITE ;
;
CHD1J41: ;
MOVLW 0x06 ;EEPROM CHORD1 ADDRESS.
MOVWF EEADR ;
BCF EECON1, EEPGD ;SELECT DATA EEPROM MEMORY.
BCF EECON1, CFGS ;
BSF EECON1, RD ;ENABLE EEPROM READ.
MOVF EEDATA, W ;VALUE IN WREG.
;
BTFSS MIDISTAT, SNDTRY_FLAG ;SOUND TRY OUT MODE FLAG.
BRA CHD1J42 ;
CLRF RECFLAGS1 ;BASS REC FLAGS.
CLRF RECFLAGS2 ;CHORD REC FLAGS.
BSF RECFLAGS2, REC_CHD1_BIT ;
CLRF RECFLAGS3 ;RH1 REC FLAGS.
CLRF RECFLAGS4 ;RH1 REC FLAGS.
CLRF RECFLAGS5 ;RH2 REC FLAGS.
CLRF RECFLAGS6 ;RH2 REC FLAGS.
CLRF RECFLAGS7 ;
CLRF RECFLAGS8 ;
MOVWF SNDTRI ;
CHD1J42: ;
MOVWF PROGCHHOLD2 ;
BTFSS PROGCHHOLD2, 7 ;IF >0x7F IT IS A BLANK SOUND.
BCF GENFLAGS4, CHDVEL0_FLAG ;
BTFSC PROGCHHOLD2, 7 ;
BSF GENFLAGS4, CHDVEL0_FLAG ;CHORD VELOCITY TO ZERO.
MOVLW 0xC1 ;PROG CHANGE CHAN 2.
MOVWF PROGCHHOLD1 ;
BSF SCANSTAT, 0 ;SET PROG SENT FLAG.
;
CALL CHORDSOUND1A ;
;
BSF GENFLAGS3, PERCON2_BIT ;
;
GOTO SCANEND ;
;........................................................................................................................................................................................
CHD1J5: ;
BTFSS MIDISTAT, SNDTRY_FLAG ;SOUND TRY OUT MODE FLAG.
BRA CHD1J51 ;
BTFSS RECFLAGS8, REC_CHD7_BIT ;
BRA CHD1J51 ;
MOVLW 0x5A ;EEPROM REVERB LEVEL ADDRESS.
MOVWF EEADR ;DATA MEMORY TO WRITE TO.
MOVF CHORDFXPOT, W ;
MOVWF EEDATA ;VALUE TO WRITE.
CALL EEPROM_WRITE ;
;
MOVLW 0x4E ;EEPROM CHORD1 ADDRESS.
MOVWF EEADR ;DATA MEMORY TO WRITE TO.
MOVF SNDTRI, W ;
MOVWF EEDATA ;VALUE TO WRITE.
CALL EEPROM_WRITE ;
;
CHD1J51: ;
MOVLW 0x4E ;EEPROM CHORD6 ADDRESS.
MOVWF EEADR ;
BCF EECON1, EEPGD ;SELECT DATA EEPROM MEMORY.
BCF EECON1, CFGS ;
BSF EECON1, RD ;ENABLE EEPROM READ.
MOVF EEDATA, W ;VALUE IN WREG.
;
BTFSS MIDISTAT, SNDTRY_FLAG ;SOUND TRY OUT MODE FLAG.
BRA CHD1J52 ;
CLRF RECFLAGS1 ;BASS REC FLAGS.
CLRF RECFLAGS2 ;CHORD REC FLAGS.
CLRF RECFLAGS3 ;RH1 REC FLAGS.
CLRF RECFLAGS4 ;RH1 REC FLAGS.
CLRF RECFLAGS5 ;RH2 REC FLAGS.
CLRF RECFLAGS6 ;RH2 REC FLAGS.
CLRF RECFLAGS7 ;
CLRF RECFLAGS8 ;
BSF RECFLAGS8, REC_CHD7_BIT ;
MOVWF SNDTRI ;
CHD1J52: ;
MOVWF PROGCHHOLD2 ;
BTFSS PROGCHHOLD2, 7 ;IF >0x7F IT IS A BLANK SOUND.
BCF GENFLAGS4, CHDVEL0_FLAG ;
BTFSC PROGCHHOLD2, 7 ;
BSF GENFLAGS4, CHDVEL0_FLAG ;CHORD VELOCITY TO ZERO.
MOVLW 0xC1 ;PROG CHANGE CHAN 2.
MOVWF PROGCHHOLD1 ;
BSF SCANSTAT, 0 ;SET BASS PROG SENT FLAG.
;
CALL CHORDSOUND1B ;
;
BSF GENFLAGS3, PERCON2_BIT ;Ch10 PERCUSSION ON Ch2.
;
GOTO SCANEND ;
;.........................................................................................................................................................................................
CHORDINSTR2: ;
BTFSS CHORD_ON_FLAGS, 1 ;
GOTO CHORDINSTR3 ;
;
MOVF PORTC, W ;
MOVWF PEDTEMP ;
ANDLW 0x02 ;ASSIGN FSW1.
BZ CHD2J1 ;
CALL FSW1ASIGNCLEAR ;
BSF FSW1ASIGNREGCH, FSW1_CHD2_BIT;
MOVFF FSW1ASIGNREGCH, EEDATA ;VALUE TO WRITE.
MOVLW 0x64 ;
MOVWF EEADR ;DATA MEMORY TO WRITE TO.
CALL EEPROM_WRITE ;
GOTO SCANEND ;
CHD2J1: ;
MOVF PEDTEMP, W ;
ANDLW 0x01 ;ASSIGN FSW2.
BZ CHD2J2 ;
CALL FSW2ASIGNCLEAR ;
BSF FSW2ASIGNREGCH, FSW2_CHD2_BIT;
MOVFF FSW2ASIGNREGCH, EEDATA ;VALUE TO WRITE.
MOVLW 0x65 ;
MOVWF EEADR ;DATA MEMORY TO WRITE TO.
CALL EEPROM_WRITE ;
GOTO SCANEND ;
CHD2J2: ;
MOVF PEDTEMP, W ;
ANDLW 0x04 ;ASSIGN FSW3.
BZ CHD2J3 ;
CALL FSW3ASIGNCLEAR ;
BSF FSW3ASIGNREGCH, FSW3_CHD2_BIT;
MOVFF FSW3ASIGNREGCH, EEDATA ;VALUE TO WRITE.
MOVLW 0x66 ;
MOVWF EEADR ;DATA MEMORY TO WRITE TO.
CALL EEPROM_WRITE ;
GOTO SCANEND ;
CHD2J3: ;
MOVF PORTA, W ;
ANDLW 0x10 ;ASSIGN FSW4.
BZ CHD2J4 ;
CALL FSW4ASIGNCLEAR ;
BSF FSW4ASIGNREGCH, FSW4_CHD2_BIT;
MOVFF FSW4ASIGNREGCH, EEDATA ;VALUE TO WRITE.
MOVLW 0x67 ;
MOVWF EEADR ;DATA MEMORY TO WRITE TO.
CALL EEPROM_WRITE ;
GOTO SCANEND ;
;
CHD2J4: ;
CLRF CHORD_FLAGS ;
BSF CHORD_FLAGS, CHORD2_FLAG;SHOWS ACTIVE CHORD BUTTON.
BTFSC GENFLAGS1, CHORDOCTBIT ;SELECT CHORD SOUND BANK.
BRA CHD2J5 ;
;
BTFSS MIDISTAT, SNDTRY_FLAG ;SOUND TRY OUT MODE FLAG.
BRA CHD2J41 ;
BTFSS RECFLAGS2, REC_CHD2_BIT ;
BRA CHD2J41 ;
MOVLW 0x2B ;EEPROM REVERB LEVEL ADDRESS.
MOVWF EEADR ;DATA MEMORY TO WRITE TO.
MOVF CHORDFXPOT, W ;
MOVWF EEDATA ;VALUE TO WRITE.
CALL EEPROM_WRITE ;
;
MOVLW 0x07 ;EEPROM CHORD2 ADDRESS.
MOVWF EEADR ;DATA MEMORY TO WRITE TO.
MOVF SNDTRI, W ;
MOVWF EEDATA ;VALUE TO WRITE.
CALL EEPROM_WRITE ;
;
CHD2J41: ;
MOVLW 0x07 ;EEPROM CHORD2 ADDRESS.
MOVWF EEADR ;
BCF EECON1, EEPGD ;SELECT DATA EEPROM MEMORY.
BCF EECON1, CFGS ;
BSF EECON1, RD ;ENABLE EEPROM READ.
MOVF EEDATA, W ;VALUE IN WREG.
;
BTFSS MIDISTAT, SNDTRY_FLAG ;SOUND TRY OUT MODE FLAG.
BRA CHD2J42 ;
CLRF RECFLAGS1 ;BASS REC FLAGS.
CLRF RECFLAGS2 ;CHORD REC FLAGS.
BSF RECFLAGS2, REC_CHD2_BIT ;
CLRF RECFLAGS3 ;RH1 REC FLAGS.
CLRF RECFLAGS4 ;RH1 REC FLAGS.
CLRF RECFLAGS5 ;RH2 REC FLAGS.
CLRF RECFLAGS6 ;RH2 REC FLAGS.
CLRF RECFLAGS7 ;
CLRF RECFLAGS8 ;
MOVWF SNDTRI ;
CHD2J42: ;
MOVWF PROGCHHOLD2 ;
BTFSS PROGCHHOLD2, 7 ;IF >0x7F IT IS A BLANK SOUND.
BCF GENFLAGS4, CHDVEL0_FLAG ;
BTFSC PROGCHHOLD2, 7 ;
BSF GENFLAGS4, CHDVEL0_FLAG ;CHORD VELOCITY TO ZERO.
MOVLW 0xC1 ;PROG CHANGE CHAN 2.
MOVWF PROGCHHOLD1 ;
BSF SCANSTAT, 0 ;SET BASS PROG SENT FLAG.
;
CALL CHORDSOUND2A ;
;
BSF GENFLAGS3, PERCON2_BIT ;Ch10 PERCUSSION ON Ch2.
;
GOTO SCANEND ;
;........................................................................................................................................................................................
CHD2J5: ;
BTFSS MIDISTAT, SNDTRY_FLAG ;SOUND TRY OUT MODE FLAG.
BRA CHD2J51 ;
BTFSS RECFLAGS8, REC_CHD8_BIT ;
BRA CHD2J51 ;
MOVLW 0x5B ;EEPROM REVERB LEVEL ADDRESS.
MOVWF EEADR ;DATA MEMORY TO WRITE TO.
MOVF CHORDFXPOT, W ;
MOVWF EEDATA ;VALUE TO WRITE.
CALL EEPROM_WRITE ;
;
MOVLW 0x4F ;EEPROM CHORD2 ADDRESS.
MOVWF EEADR ;DATA MEMORY TO WRITE TO.
MOVF SNDTRI, W ;
MOVWF EEDATA ;VALUE TO WRITE.
CALL EEPROM_WRITE ;
;
CHD2J51: ;
MOVLW 0x4F ;EEPROM CHORD2 ADDRESS.
MOVWF EEADR ;
BCF EECON1, EEPGD ;SELECT DATA EEPROM MEMORY.
BCF EECON1, CFGS ;
BSF EECON1, RD ;ENABLE EEPROM READ.
MOVF EEDATA, W ;VALUE IN WREG.
;
BTFSS MIDISTAT, SNDTRY_FLAG ;SOUND TRY OUT MODE FLAG.
BRA CHD2J52 ;
CLRF RECFLAGS1 ;BASS REC FLAGS.
CLRF RECFLAGS2 ;CHORD REC FLAGS.
CLRF RECFLAGS3 ;RH1 REC FLAGS.
CLRF RECFLAGS4 ;RH1 REC FLAGS.
CLRF RECFLAGS5 ;RH2 REC FLAGS.
CLRF RECFLAGS6 ;RH2 REC FLAGS.
CLRF RECFLAGS7 ;
CLRF RECFLAGS8 ;
BSF RECFLAGS8, REC_CHD8_BIT ;
MOVWF SNDTRI ;
CHD2J52: ;
MOVWF PROGCHHOLD2 ;
BTFSS PROGCHHOLD2, 7 ;IF >0x7F IT IS A BLANK SOUND.
BCF GENFLAGS4, CHDVEL0_FLAG ;
BTFSC PROGCHHOLD2, 7 ;
BSF GENFLAGS4, CHDVEL0_FLAG ;CHORD VELOCITY TO ZERO.
MOVLW 0xC1 ;PROG CHANGE CHAN 2.
MOVWF PROGCHHOLD1 ;
BSF SCANSTAT, 0 ;SET PROG SENT FLAG.
;
CALL CHORDSOUND2B ;
;
BSF GENFLAGS3, PERCON2_BIT ;Ch10 PERCUSSION ON Ch2.
;
GOTO SCANEND ;
;........................................................................................................................................................................................
CHORDINSTR3: ;
BTFSS CHORD_ON_FLAGS, 2 ;
GOTO CHORDINSTR4 ;
;
MOVF PORTC, W ;
MOVWF PEDTEMP ;
ANDLW 0x02 ;ASSIGN FSW1.
BZ CHD3J1 ;
CALL FSW1ASIGNCLEAR ;
BSF FSW1ASIGNREGCH, FSW1_CHD3_BIT;
MOVFF FSW1ASIGNREGCH, EEDATA ;VALUE TO WRITE.
MOVLW 0x64 ;
MOVWF EEADR ;DATA MEMORY TO WRITE TO.
CALL EEPROM_WRITE ;
GOTO SCANEND ;
CHD3J1: ;
MOVF PEDTEMP, W ;
ANDLW 0x01 ;ASSIGN FSW2.
BZ CHD3J2 ;
CALL FSW2ASIGNCLEAR ;
BSF FSW2ASIGNREGCH, FSW2_CHD3_BIT;
MOVFF FSW2ASIGNREGCH, EEDATA ;VALUE TO WRITE.
MOVLW 0x65 ;
MOVWF EEADR ;DATA MEMORY TO WRITE TO.
CALL EEPROM_WRITE ;
GOTO SCANEND ;
CHD3J2: ;
MOVF PEDTEMP, W ;
ANDLW 0x04 ;ASSIGN FSW3.
BZ CHD3J3 ;
CALL FSW3ASIGNCLEAR ;
BSF FSW3ASIGNREGCH, FSW3_CHD3_BIT;
MOVFF FSW3ASIGNREGCH, EEDATA ;VALUE TO WRITE.
MOVLW 0x66 ;
MOVWF EEADR ;DATA MEMORY TO WRITE TO.
CALL EEPROM_WRITE ;
GOTO SCANEND ;
CHD3J3: ;
MOVF PORTA, W ;
ANDLW 0x10 ;ASSIGN FSW4.
BZ CHD3J4 ;
CALL FSW4ASIGNCLEAR ;
BSF FSW4ASIGNREGCH, FSW4_CHD3_BIT;
MOVFF FSW4ASIGNREGCH, EEDATA ;VALUE TO WRITE.
MOVLW 0x67 ;
MOVWF EEADR ;DATA MEMORY TO WRITE TO.
CALL EEPROM_WRITE ;
GOTO SCANEND ;
;
CHD3J4: ;
CLRF CHORD_FLAGS ;
BSF CHORD_FLAGS, CHORD3_FLAG;SHOWS ACTIVE CHORD BUTTON.
BTFSC GENFLAGS1, CHORDOCTBIT ;SELECT CHORD SOUND BANK.
BRA CHD3J5 ;
;
BTFSS MIDISTAT, SNDTRY_FLAG ;SOUND TRY OUT MODE FLAG.
BRA CHD3J41 ;
BTFSS RECFLAGS2, REC_CHD3_BIT ;
BRA CHD3J41 ;
MOVLW 0x2C ;EEPROM REVERB LEVEL ADDRESS.
MOVWF EEADR ;DATA MEMORY TO WRITE TO.
MOVF CHORDFXPOT, W ;
MOVWF EEDATA ;VALUE TO WRITE.
CALL EEPROM_WRITE ;
;
MOVLW 0x08 ;EEPROM CHORD1 ADDRESS.
MOVWF EEADR ;DATA MEMORY TO WRITE TO.
MOVF SNDTRI, W ;
MOVWF EEDATA ;VALUE TO WRITE.
CALL EEPROM_WRITE ;
;
CHD3J41: ;
MOVLW 0x08 ;EEPROM CHORD3 ADDRESS.
MOVWF EEADR ;
BCF EECON1, EEPGD ;SELECT DATA EEPROM MEMORY.
BCF EECON1, CFGS ;
BSF EECON1, RD ;ENABLE EEPROM READ.
MOVF EEDATA, W ;VALUE IN WREG.
;
BTFSS MIDISTAT, SNDTRY_FLAG ;SOUND TRY OUT MODE FLAG.
BRA CHD3J42 ;
CLRF RECFLAGS1 ;BASS REC FLAGS.
CLRF RECFLAGS2 ;CHORD REC FLAGS.
BSF RECFLAGS2, REC_CHD3_BIT ;
CLRF RECFLAGS3 ;RH1 REC FLAGS.
CLRF RECFLAGS4 ;RH1 REC FLAGS.
CLRF RECFLAGS5 ;RH2 REC FLAGS.
CLRF RECFLAGS6 ;RH2 REC FLAGS.
CLRF RECFLAGS7 ;
CLRF RECFLAGS8 ;
MOVWF SNDTRI ;
CHD3J42: ;
MOVWF PROGCHHOLD2 ;
BTFSS PROGCHHOLD2, 7 ;IF >0x7F IT IS A BLANK SOUND.
BCF GENFLAGS4, CHDVEL0_FLAG ;
BTFSC PROGCHHOLD2, 7 ;
BSF GENFLAGS4, CHDVEL0_FLAG ;CHORD VELOCITY TO ZERO.
MOVLW 0xC1 ;PROG CHANGE CHAN 2.
MOVWF PROGCHHOLD1 ;
BSF SCANSTAT, 0 ;SET BASS PROG SENT FLAG.
;
CALL CHORDSOUND3A ;
;
BSF GENFLAGS3, PERCON2_BIT ;Ch10 PERCUSSION ON Ch2.
;
GOTO SCANEND ;
;........................................................................................................................................................................................
CHD3J5: ;
BTFSS MIDISTAT, SNDTRY_FLAG ;SOUND TRY OUT MODE FLAG.
BRA CHD3J51 ;
BTFSS RECFLAGS8, REC_CHD9_BIT ;
BRA CHD3J51 ;
MOVLW 0x5C ;EEPROM REVERB LEVEL ADDRESS.
MOVWF EEADR ;DATA MEMORY TO WRITE TO.
MOVF CHORDFXPOT, W ;
MOVWF EEDATA ;VALUE TO WRITE.
CALL EEPROM_WRITE ;
;
MOVLW 0x50 ;EEPROM CHORD1 ADDRESS.
MOVWF EEADR ;DATA MEMORY TO WRITE TO.
MOVF SNDTRI, W ;
MOVWF EEDATA ;VALUE TO WRITE.
CALL EEPROM_WRITE ;
;
CHD3J51: ;
MOVLW 0x50 ;EEPROM CHORD3 ADDRESS.
MOVWF EEADR ;
BCF EECON1, EEPGD ;SELECT DATA EEPROM MEMORY.
BCF EECON1, CFGS ;
BSF EECON1, RD ;ENABLE EEPROM READ.
MOVF EEDATA, W ;VALUE IN WREG.
;
BTFSS MIDISTAT, SNDTRY_FLAG ;SOUND TRY OUT MODE FLAG.
BRA CHD3J52 ;
CLRF RECFLAGS1 ;BASS REC FLAGS.
CLRF RECFLAGS2 ;CHORD REC FLAGS.
CLRF RECFLAGS3 ;RH1 REC FLAGS.
CLRF RECFLAGS4 ;RH1 REC FLAGS.
CLRF RECFLAGS5 ;RH2 REC FLAGS.
CLRF RECFLAGS6 ;RH2 REC FLAGS.
CLRF RECFLAGS7 ;
CLRF RECFLAGS8 ;
BSF RECFLAGS8, REC_CHD9_BIT ;
MOVWF SNDTRI ;
CHD3J52: ;
MOVWF PROGCHHOLD2 ;
BTFSS PROGCHHOLD2, 7 ;IF >0x7F IT IS A BLANK SOUND.
BCF GENFLAGS4, CHDVEL0_FLAG ;
BTFSC PROGCHHOLD2, 7 ;
BSF GENFLAGS4, CHDVEL0_FLAG ;CHORD VELOCITY TO ZERO.
MOVLW 0xC1 ;PROG CHANGE CHAN 2.
MOVWF PROGCHHOLD1 ;
BSF SCANSTAT, 0 ;SET BASS PROG SENT FLAG.
;
CALL CHORDSOUND3B ;
;
BSF GENFLAGS3, PERCON2_BIT ;Ch10 PERCUSSION ON Ch2.
GOTO SCANEND ;
;........................................................................................................................................................................................
CHORDINSTR4: ;
BTFSS CHORD_ON_FLAGS, 3 ;
GOTO CHORDINSTR5 ;
;
MOVF PORTC, W ;
MOVWF PEDTEMP ;
ANDLW 0x02 ;ASSIGN FSW1.
BZ CHD4J1 ;
CALL FSW1ASIGNCLEAR ;
BSF FSW1ASIGNREGCH, FSW1_CHD4_BIT;
MOVFF FSW1ASIGNREGCH, EEDATA ;VALUE TO WRITE.
MOVLW 0x64 ;
MOVWF EEADR ;DATA MEMORY TO WRITE TO.
CALL EEPROM_WRITE ;
GOTO SCANEND ;
CHD4J1: ;
MOVF PEDTEMP, W ;
ANDLW 0x01 ;ASSIGN FSW2.
BZ CHD4J2 ;
CALL FSW2ASIGNCLEAR ;
BSF FSW2ASIGNREGCH, FSW2_CHD4_BIT;
MOVFF FSW2ASIGNREGCH, EEDATA ;VALUE TO WRITE.
MOVLW 0x65 ;
MOVWF EEADR ;DATA MEMORY TO WRITE TO.
CALL EEPROM_WRITE ;
GOTO SCANEND ;
CHD4J2: ;
MOVF PEDTEMP, W ;
ANDLW 0x04 ;ASSIGN FSW3.
BZ CHD4J3 ;
CALL FSW3ASIGNCLEAR ;
BSF FSW3ASIGNREGCH, FSW3_CHD4_BIT;
MOVFF FSW3ASIGNREGCH, EEDATA ;VALUE TO WRITE.
MOVLW 0x66 ;
MOVWF EEADR ;DATA MEMORY TO WRITE TO.
CALL EEPROM_WRITE ;
GOTO SCANEND ;
CHD4J3: ;
MOVF PORTA, W ;
ANDLW 0x10 ;ASSIGN FSW4.
BZ CHD4J4 ;
CALL FSW4ASIGNCLEAR ;
BSF FSW4ASIGNREGCH, FSW4_CHD4_BIT;
MOVFF FSW4ASIGNREGCH, EEDATA ;VALUE TO WRITE.
MOVLW 0x67 ;
MOVWF EEADR ;DATA MEMORY TO WRITE TO.
CALL EEPROM_WRITE ;
GOTO SCANEND ;
;
CHD4J4: ;
CLRF CHORD_FLAGS ;
BSF CHORD_FLAGS, CHORD4_FLAG;SHOWS ACTIVE CHORD BUTTON.
BTFSC GENFLAGS1, CHORDOCTBIT ;SELECT CHORD SOUND BANK.
BRA CHD4J5 ;
;
BTFSS MIDISTAT, SNDTRY_FLAG ;SOUND TRY OUT MODE FLAG.
BRA CHD4J41 ;
BTFSS RECFLAGS2, REC_CHD4_BIT ;
BRA CHD4J41 ;
MOVLW 0x2D ;EEPROM REVERB LEVEL ADDRESS.
MOVWF EEADR ;DATA MEMORY TO WRITE TO.
MOVF CHORDFXPOT, W ;
MOVWF EEDATA ;VALUE TO WRITE.
CALL EEPROM_WRITE ;
;
MOVLW 0x09 ;EEPROM CHORD1 ADDRESS.
MOVWF EEADR ;DATA MEMORY TO WRITE TO.
MOVF SNDTRI, W ;
MOVWF EEDATA ;VALUE TO WRITE.
CALL EEPROM_WRITE ;
;
CHD4J41: ;
MOVLW 0x09 ;EEPROM CHORD4 ADDRESS.
MOVWF EEADR ;
BCF EECON1, EEPGD ;SELECT DATA EEPROM MEMORY.
BCF EECON1, CFGS ;
BSF EECON1, RD ;ENABLE EEPROM READ.
MOVF EEDATA, W ;VALUE IN WREG.
;
BTFSS MIDISTAT, SNDTRY_FLAG ;SOUND TRY OUT MODE FLAG.
BRA CHD4J42 ;
CLRF RECFLAGS1 ;BASS REC FLAGS.
CLRF RECFLAGS2 ;CHORD REC FLAGS.
BSF RECFLAGS2, REC_CHD4_BIT ;
CLRF RECFLAGS3 ;RH1 REC FLAGS.
CLRF RECFLAGS4 ;RH1 REC FLAGS.
CLRF RECFLAGS5 ;RH2 REC FLAGS.
CLRF RECFLAGS6 ;RH2 REC FLAGS.
CLRF RECFLAGS7 ;
CLRF RECFLAGS8 ;
MOVWF SNDTRI ;
CHD4J42: ;
MOVWF PROGCHHOLD2 ;
BTFSS PROGCHHOLD2, 7 ;IF >0x7F IT IS A BLANK SOUND.
BCF GENFLAGS4, CHDVEL0_FLAG ;
BTFSC PROGCHHOLD2, 7 ;
BSF GENFLAGS4, CHDVEL0_FLAG ;CHORD VELOCITY TO ZERO.
MOVLW 0xC1 ;PROG CHANGE CHAN 2.
MOVWF PROGCHHOLD1 ;
BSF SCANSTAT, 0 ;SET PROG SENT FLAG.
;
CALL CHORDSOUND4A ;
;
BSF GENFLAGS3, PERCON2_BIT ;Ch10 PERCUSSION ON Ch2.
GOTO SCANEND ;
;........................................................................................................................................................................................
CHD4J5: ;
BTFSS MIDISTAT, SNDTRY_FLAG ;SOUND TRY OUT MODE FLAG.
BRA CHD4J51 ;
BTFSS RECFLAGS8, REC_CHD10_BIT ;
BRA CHD4J51 ;
MOVLW 0x5D ;EEPROM REVERB LEVEL ADDRESS.
MOVWF EEADR ;DATA MEMORY TO WRITE TO.
MOVF CHORDFXPOT, W ;
MOVWF EEDATA ;VALUE TO WRITE.
CALL EEPROM_WRITE ;
;
MOVLW 0x51 ;EEPROM CHORD1 ADDRESS.
MOVWF EEADR ;DATA MEMORY TO WRITE TO.
MOVF SNDTRI, W ;
MOVWF EEDATA ;VALUE TO WRITE.
CALL EEPROM_WRITE ;
;
CHD4J51: ;
MOVLW 0x51 ;EEPROM CHORD4 ADDRESS.
MOVWF EEADR ;
BCF EECON1, EEPGD ;SELECT DATA EEPROM MEMORY.
BCF EECON1, CFGS ;
BSF EECON1, RD ;ENABLE EEPROM READ.
MOVF EEDATA, W ;VALUE IN WREG.
;
BTFSS MIDISTAT, SNDTRY_FLAG ;SOUND TRY OUT MODE FLAG.
BRA CHD4J52 ;
CLRF RECFLAGS1 ;BASS REC FLAGS.
CLRF RECFLAGS2 ;CHORD REC FLAGS.
CLRF RECFLAGS3 ;RH1 REC FLAGS.
CLRF RECFLAGS4 ;RH1 REC FLAGS.
CLRF RECFLAGS5 ;RH2 REC FLAGS.
CLRF RECFLAGS6 ;RH2 REC FLAGS.
CLRF RECFLAGS7 ;
CLRF RECFLAGS8 ;
BSF RECFLAGS8, REC_CHD10_BIT;
MOVWF SNDTRI ;
CHD4J52: ;
MOVWF PROGCHHOLD2 ;
BTFSS PROGCHHOLD2, 7 ;IF >0x7F IT IS A BLANK SOUND.
BCF GENFLAGS4, CHDVEL0_FLAG ;
BTFSC PROGCHHOLD2, 7 ;
BSF GENFLAGS4, CHDVEL0_FLAG ;CHORD VELOCITY TO ZERO.
MOVLW 0xC1 ;PROG CHANGE CHAN 2.
MOVWF PROGCHHOLD1 ;
BSF SCANSTAT, 0 ;SET BASS PROG SENT FLAG.
;
CALL CHORDSOUND4B ;
;
BSF GENFLAGS3, PERCON2_BIT ;Ch10 PERCUSSION ON Ch2.
GOTO SCANEND ;
;........................................................................................................................................................................................
CHORDINSTR5: ;
BTFSS CHORD_ON_FLAGS, 4 ;
GOTO CHORDINSTR6 ;
;
MOVF PORTC, W ;
MOVWF PEDTEMP ;
ANDLW 0x02 ;ASSIGN FSW1.
BZ CHD5J1 ;
CALL FSW1ASIGNCLEAR ;
BSF FSW1ASIGNREGCH, FSW1_CHD5_BIT;
MOVFF FSW1ASIGNREGCH, EEDATA ;VALUE TO WRITE.
MOVLW 0x64 ;
MOVWF EEADR ;DATA MEMORY TO WRITE TO.
CALL EEPROM_WRITE ;
GOTO SCANEND ;
CHD5J1: ;
MOVF PEDTEMP, W ;
ANDLW 0x01 ;ASSIGN FSW2.
BZ CHD5J2 ;
CALL FSW2ASIGNCLEAR ;
BSF FSW2ASIGNREGCH, FSW2_CHD5_BIT;
MOVFF FSW2ASIGNREGCH, EEDATA ;VALUE TO WRITE.
MOVLW 0x65 ;
MOVWF EEADR ;DATA MEMORY TO WRITE TO.
CALL EEPROM_WRITE ;
GOTO SCANEND ;
CHD5J2: ;
MOVF PEDTEMP, W ;
ANDLW 0x04 ;ASSIGN FSW3.
BZ CHD5J3 ;
CALL FSW3ASIGNCLEAR ;
BSF FSW3ASIGNREGCH, FSW3_CHD5_BIT;
MOVFF FSW3ASIGNREGCH, EEDATA ;VALUE TO WRITE.
MOVLW 0x66 ;
MOVWF EEADR ;DATA MEMORY TO WRITE TO.
CALL EEPROM_WRITE ;
GOTO SCANEND ;
CHD5J3: ;
MOVF PORTA, W ;
ANDLW 0x10 ;ASSIGN FSW4.
BZ CHD5J4 ;
CALL FSW4ASIGNCLEAR ;
BSF FSW4ASIGNREGCH, FSW4_CHD5_BIT;
MOVFF FSW4ASIGNREGCH, EEDATA ;VALUE TO WRITE.
MOVLW 0x67 ;
MOVWF EEADR ;DATA MEMORY TO WRITE TO.
CALL EEPROM_WRITE ;
GOTO SCANEND ;
;
CHD5J4: ;
CLRF CHORD_FLAGS ;
BSF CHORD_FLAGS, CHORD5_FLAG;SHOWS ACTIVE CHORD BUTTON.
BTFSC GENFLAGS1, CHORDOCTBIT ;SELECT CHORD SOUND BANK.
BRA CHD5J5 ;
;
BTFSS MIDISTAT, SNDTRY_FLAG ;SOUND TRY OUT MODE FLAG.
BRA CHD5J41 ;
BTFSS RECFLAGS2, REC_CHD5_BIT ;
BRA CHD5J41 ;
MOVLW 0x2E ;EEPROM REVERB LEVEL ADDRESS.
MOVWF EEADR ;DATA MEMORY TO WRITE TO.
MOVF CHORDFXPOT, W ;
MOVWF EEDATA ;VALUE TO WRITE.
CALL EEPROM_WRITE ;
;
MOVLW 0x0A ;EEPROM CHORD1 ADDRESS.
MOVWF EEADR ;DATA MEMORY TO WRITE TO.
MOVF SNDTRI, W ;
MOVWF EEDATA ;VALUE TO WRITE.
CALL EEPROM_WRITE ;
;
CHD5J41: ;
MOVLW 0x0A ;EEPROM CHORD5 ADDRESS.
MOVWF EEADR ;
BCF EECON1, EEPGD ;SELECT DATA EEPROM MEMORY.
BCF EECON1, CFGS ;
BSF EECON1, RD ;ENABLE EEPROM READ.
MOVF EEDATA, W ;VALUE IN WREG.
;
BTFSS MIDISTAT, SNDTRY_FLAG ;SOUND TRY OUT MODE FLAG.
BRA CHD5J42 ;
CLRF RECFLAGS1 ;BASS REC FLAGS.
CLRF RECFLAGS2 ;CHORD REC FLAGS.
BSF RECFLAGS2, REC_CHD5_BIT ;
CLRF RECFLAGS3 ;RH1 REC FLAGS.
CLRF RECFLAGS4 ;RH1 REC FLAGS.
CLRF RECFLAGS5 ;RH2 REC FLAGS.
CLRF RECFLAGS6 ;RH2 REC FLAGS.
CLRF RECFLAGS7 ;
CLRF RECFLAGS8 ;
MOVWF SNDTRI ;
CHD5J42: ;
MOVWF PROGCHHOLD2 ;
BTFSS PROGCHHOLD2, 7 ;IF >0x7F IT IS A BLANK SOUND.
BCF GENFLAGS4, CHDVEL0_FLAG ;
BTFSC PROGCHHOLD2, 7 ;
BSF GENFLAGS4, CHDVEL0_FLAG ;CHORD VELOCITY TO ZERO.
MOVLW 0xC1 ;PROG CHANGE CHAN 2.
MOVWF PROGCHHOLD1 ;
BSF SCANSTAT, 0 ;SET BASS PROG SENT FLAG.
;
CALL CHORDSOUND5A ;
;
BSF GENFLAGS3, PERCON2_BIT ;Ch10 PERCUSSION ON Ch2.
GOTO SCANEND ;
;........................................................................................................................................................................................
CHD5J5: ;
BTFSS MIDISTAT, SNDTRY_FLAG ;SOUND TRY OUT MODE FLAG.
BRA CHD5J51 ;
BTFSS RECFLAGS8, REC_CHD11_BIT;
BRA CHD5J51 ;
MOVLW 0x5E ;EEPROM REVERB LEVEL ADDRESS.
MOVWF EEADR ;DATA MEMORY TO WRITE TO.
MOVF CHORDFXPOT, W ;
MOVWF EEDATA ;VALUE TO WRITE.
CALL EEPROM_WRITE ;
;
MOVLW 0x52 ;EEPROM CHORD1 ADDRESS.
MOVWF EEADR ;DATA MEMORY TO WRITE TO.
MOVF SNDTRI, W ;
MOVWF EEDATA ;VALUE TO WRITE.
CALL EEPROM_WRITE ;
;
CHD5J51: ;
MOVLW 0x52 ;EEPROM CHORD5 ADDRESS.
MOVWF EEADR ;
BCF EECON1, EEPGD ;SELECT DATA EEPROM MEMORY.
BCF EECON1, CFGS ;
BSF EECON1, RD ;ENABLE EEPROM READ.
MOVF EEDATA, W ;VALUE IN WREG.
;
BTFSS MIDISTAT, SNDTRY_FLAG ;SOUND TRY OUT MODE FLAG.
BRA CHD5J52 ;
CLRF RECFLAGS1 ;BASS REC FLAGS.
CLRF RECFLAGS2 ;CHORD REC FLAGS.
CLRF RECFLAGS3 ;RH1 REC FLAGS.
CLRF RECFLAGS4 ;RH1 REC FLAGS.
CLRF RECFLAGS5 ;RH2 REC FLAGS.
CLRF RECFLAGS6 ;RH2 REC FLAGS.
CLRF RECFLAGS7 ;
CLRF RECFLAGS8 ;
BSF RECFLAGS8, REC_CHD11_BIT ;
MOVWF SNDTRI ;
CHD5J52: ;
MOVWF PROGCHHOLD2 ;
BTFSS PROGCHHOLD2, 7 ;IF >0x7F IT IS A BLANK SOUND.
BCF GENFLAGS4, CHDVEL0_FLAG ;
BTFSC PROGCHHOLD2, 7 ;
BSF GENFLAGS4, CHDVEL0_FLAG ;CHORD VELOCITY TO ZERO.
MOVLW 0xC1 ;PROG CHANGE CHAN 2.
MOVWF PROGCHHOLD1 ;
BSF SCANSTAT, 0 ;SET PROG SENT FLAG.
;
CALL CHORDSOUND5B ;
;
BSF GENFLAGS3, PERCON2_BIT ;Ch10 PERCUSSION ON Ch2.
GOTO SCANEND ;
;........................................................................................................................................................................................
CHORDINSTR6: ;
BTFSS CHORD_ON_FLAGS, 5 ;
GOTO CHORDINSOCT ;
;
MOVF PORTC, W ;
MOVWF PEDTEMP ;
ANDLW 0x02 ;ASSIGN FSW1.
BZ CHD6J1 ;
CALL FSW1ASIGNCLEAR ;
BSF FSW1ASIGNREGCH, FSW1_CHD6_BIT;
MOVFF FSW1ASIGNREGCH, EEDATA ;VALUE TO WRITE.
MOVLW 0x64 ;
MOVWF EEADR ;DATA MEMORY TO WRITE TO.
CALL EEPROM_WRITE ;
GOTO SCANEND ;
CHD6J1: ;
MOVF PEDTEMP, W ;
ANDLW 0x01 ;ASSIGN FSW2.
BZ CHD6J2 ;
CALL FSW2ASIGNCLEAR ;
BSF FSW2ASIGNREGCH, FSW2_CHD6_BIT;
MOVFF FSW2ASIGNREGCH, EEDATA ;VALUE TO WRITE.
MOVLW 0x65 ;
MOVWF EEADR ;DATA MEMORY TO WRITE TO.
CALL EEPROM_WRITE ;
GOTO SCANEND ;
CHD6J2: ;
MOVF PEDTEMP, W ;
ANDLW 0x04 ;ASSIGN FSW3.
BZ CHD6J3 ;
CALL FSW3ASIGNCLEAR ;
BSF FSW3ASIGNREGCH, FSW3_CHD6_BIT;
MOVFF FSW3ASIGNREGCH, EEDATA ;VALUE TO WRITE.
MOVLW 0x66 ;
MOVWF EEADR ;DATA MEMORY TO WRITE TO.
CALL EEPROM_WRITE ;
GOTO SCANEND ;
CHD6J3: ;
MOVF PORTA, W ;
ANDLW 0x10 ;ASSIGN FSW4.
BZ CHD6J4 ;
CALL FSW4ASIGNCLEAR ;
BSF FSW4ASIGNREGCH, FSW4_CHD6_BIT;
MOVFF FSW4ASIGNREGCH, EEDATA ;VALUE TO WRITE.
MOVLW 0x67 ;
MOVWF EEADR ;DATA MEMORY TO WRITE TO.
CALL EEPROM_WRITE ;
GOTO SCANEND ;
;
CHD6J4: ;0x7F IT IS A BLANK SOUND.
BCF GENFLAGS4, CHDVEL0_FLAG ;
BTFSC PROGCHHOLD2, 7 ;
BSF GENFLAGS4, CHDVEL0_FLAG ;CHORD VELOCITY TO ZERO.
MOVLW 0xC1 ;PROG CHANGE CHAN 2.
MOVWF PROGCHHOLD1 ;
BSF SCANSTAT, 0 ;SET BASS PROG SENT FLAG.
;
CALL CHORDSOUND6A ;
;
BSF GENFLAGS3, PERCON2_BIT ;Ch10 PERCUSSION ON Ch2.
GOTO SCANEND ;
;........................................................................................................................................................................................
CHD6J5: ;
BTFSS MIDISTAT, SNDTRY_FLAG ;SOUND TRY OUT MODE FLAG.
BRA CHD6J51 ;
BTFSS RECFLAGS8, REC_CHD12_BIT ;
BRA CHD6J51 ;
MOVLW 0x5F ;EEPROM REVERB LEVEL ADDRESS.
MOVWF EEADR ;DATA MEMORY TO WRITE TO.
MOVF CHORDFXPOT, W ;
MOVWF EEDATA ;VALUE TO WRITE.
CALL EEPROM_WRITE ;
;
MOVLW 0x53 ;EEPROM CHORD1 ADDRESS.
MOVWF EEADR ;DATA MEMORY TO WRITE TO.
MOVF SNDTRI, W ;
MOVWF EEDATA ;VALUE TO WRITE.
CALL EEPROM_WRITE ;
;
CHD6J51: ;
MOVLW 0x53 ;EEPROM CHORD6 ADDRESS.
MOVWF EEADR ;
BCF EECON1, EEPGD ;SELECT DATA EEPROM MEMORY.
BCF EECON1, CFGS ;
BSF EECON1, RD ;ENABLE EEPROM READ.
MOVF EEDATA, W ;VALUE IN WREG.
;
BTFSS MIDISTAT, SNDTRY_FLAG ;SOUND TRY OUT MODE FLAG.
BRA CHD6J52 ;
CLRF RECFLAGS1 ;BASS REC FLAGS.
CLRF RECFLAGS2 ;CHORD REC FLAGS.
CLRF RECFLAGS3 ;RH1 REC FLAGS.
CLRF RECFLAGS4 ;RH1 REC FLAGS.
CLRF RECFLAGS5 ;RH2 REC FLAGS.
CLRF RECFLAGS6 ;RH2 REC FLAGS.
CLRF RECFLAGS7 ;
CLRF RECFLAGS8 ;
BSF RECFLAGS8, REC_CHD12_BIT ;
MOVWF SNDTRI ;
CHD6J52: ;
MOVWF PROGCHHOLD2 ;
BTFSS PROGCHHOLD2, 7 ;IF >0x7F IT IS A BLANK SOUND.
BCF GENFLAGS4, CHDVEL0_FLAG ;
BTFSC PROGCHHOLD2, 7 ;
BSF GENFLAGS4, CHDVEL0_FLAG ;CHORD VELOCITY TO ZERO.
MOVLW 0xC1 ;PROG CHANGE CHAN 2.
MOVWF PROGCHHOLD1 ;
BSF SCANSTAT, 0 ;SET PROG SENT FLAG.
;
CALL CHORDSOUND6B ;
;
BSF GENFLAGS3, PERCON2_BIT ;Ch10 PERCUSSION ON Ch2.
GOTO SCANEND ;
;.........................................................................................................................................................................................
CHORDINSOCT: ;
BTFSS CHORD_ON_FLAGS, 6 ;
BRA CHORD8 ;
;
MOVF PORTC, W ;
MOVWF PEDTEMP ;
ANDLW 0x02 ;ASSIGN FSW1.
BZ CHD2RES1 ;
CALL FSW1ASIGNCLEAR ;
BSF FSW1ASIGNREG, FSW1_OCHD_BIT;
MOVFF FSW1ASIGNREG, EEDATA ;VALUE TO WRITE.
MOVLW 0x78 ;
MOVWF EEADR ;DATA MEMORY TO WRITE TO.
CALL EEPROM_WRITE ;
BRA CHD2RESFS ;
CHD2RES1: ;
MOVF PEDTEMP, W ;
ANDLW 0x01 ;ASSIGN FSW2.
BZ CHD2RES2 ;
CALL FSW2ASIGNCLEAR ;
BSF FSW2ASIGNREG, FSW2_OCHD_BIT;
MOVFF FSW2ASIGNREG, EEDATA ;VALUE TO WRITE.
MOVLW 0x79 ;
MOVWF EEADR ;DATA MEMORY TO WRITE TO.
CALL EEPROM_WRITE ;
BRA CHD2RESFS ;
CHD2RES2: ;
MOVF PEDTEMP, W ;
ANDLW 0x04 ;ASSIGN FSW3.
BZ CHD2RES3 ;
CALL FSW3ASIGNCLEAR ;
BSF FSW3ASIGNREG, FSW3_OCHD_BIT;
MOVFF FSW3ASIGNREG, EEDATA ;VALUE TO WRITE.
MOVLW 0x7A ;
MOVWF EEADR ;DATA MEMORY TO WRITE TO.
CALL EEPROM_WRITE ;
BRA CHD2RESFS ;
CHD2RES3: ;
MOVF PORTA, W ;
ANDLW 0x10 ;ASSIGN FSW4.
BZ CHD2RES4 ;
CALL FSW4ASIGNCLEAR ;
BSF FSW4ASIGNREG, FSW4_OCHD_BIT;
MOVFF FSW4ASIGNREG, EEDATA ;VALUE TO WRITE.
MOVLW 0x7B ;
MOVWF EEADR ;DATA MEMORY TO WRITE TO.
CALL EEPROM_WRITE ;
BRA CHD2RESFS ;
;
CHD2RES4: ;
BTG GENFLAGS1, CHORDOCTBIT ;CHORD SOUND BANK SELECT.
BTFSS GENFLAGS1, CHORDOCTBIT ;
BSF DISPLAYREG, CHORDBANK ;CHORDOCTBIT=0=BANK A. LED IS ON.
BTFSC GENFLAGS1, CHORDOCTBIT ;
BCF DISPLAYREG, CHORDBANK ;CHORDOCTBIT=1=BANK B. LED IS OFF.
;
BTFSC CHORD_FLAGS, CHORD1_FLAG;
GOTO CHD1J4 ;
BTFSC CHORD_FLAGS, CHORD2_FLAG;
GOTO CHD2J4 ;
BTFSC CHORD_FLAGS, CHORD3_FLAG;
GOTO CHD3J4 ;
BTFSC CHORD_FLAGS, CHORD4_FLAG;
GOTO CHD4J4 ;
BTFSC CHORD_FLAGS, CHORD5_FLAG;
GOTO CHD5J4 ;
BTFSC CHORD_FLAGS, CHORD6_FLAG;
GOTO CHD6J4 ;
CHD2RESFS: ;
GOTO SCANEND ;
;.......................................................................................................................................................................................
CHORD8: ;
BTFSS CHORD_ON_FLAGS, 7 ;
GOTO RH11_SCAN ;
;
MOVF PORTC, W ;
MOVWF PEDTEMP ;
ANDLW 0x02 ;ASSIGN FSW1.
BZ CHD8J1 ;
CALL FSW1ASIGNCLEAR ;
BSF FSW1ASIGNREGCH, FSW1_CHD8_BIT;
MOVFF FSW1ASIGNREGCH, EEDATA ;VALUE TO WRITE.
MOVLW 0x64 ;
MOVWF EEADR ;DATA MEMORY TO WRITE TO.
CALL EEPROM_WRITE ;
GOTO SCANEND ;
CHD8J1: ;
MOVF PEDTEMP, W ;
ANDLW 0x01 ;ASSIGN FSW2.
BZ CHD8J2 ;
CALL FSW2ASIGNCLEAR ;
BSF FSW2ASIGNREGCH, FSW2_CHD8_BIT;
MOVFF FSW2ASIGNREGCH, EEDATA ;VALUE TO WRITE.
MOVLW 0x65 ;
MOVWF EEADR ;DATA MEMORY TO WRITE TO.
CALL EEPROM_WRITE ;
GOTO SCANEND ;
CHD8J2: ;
MOVF PEDTEMP, W ;
ANDLW 0x04 ;ASSIGN FSW3.
BZ CHD8J3 ;
CALL FSW3ASIGNCLEAR ;
BSF FSW3ASIGNREGCH, FSW3_CHD8_BIT;
MOVFF FSW3ASIGNREGCH, EEDATA ;VALUE TO WRITE.
MOVLW 0x66 ;
MOVWF EEADR ;DATA MEMORY TO WRITE TO.
CALL EEPROM_WRITE ;
GOTO SCANEND ;
CHD8J3: ;
MOVF PORTA, W ;
ANDLW 0x10 ;ASSIGN FSW4.
BZ CHD8J4 ;
CALL FSW4ASIGNCLEAR ;
BSF FSW4ASIGNREGCH, FSW4_CHD8_BIT;
MOVFF FSW4ASIGNREGCH, EEDATA ;VALUE TO WRITE.
MOVLW 0x67 ;
MOVWF EEADR ;DATA MEMORY TO WRITE TO.
CALL EEPROM_WRITE ;
GOTO SCANEND ;
;
CHD8J4: ;0x7F IT IS A BLANK SOUND.
BCF GENFLAGS4, BLANK_RH1_FLAG;
BTFSC PROGCHHOLD2, 7 ;
BSF GENFLAGS4, BLANK_RH1_FLAG;RH1 MUTE (BLANK SOUND).
MOVLW 0xC0 ;PROG CHANGE CHAN 1.
MOVWF PROGCHHOLD1 ;
BSF SCANSTAT, 0 ;SET BASS PROG SENT FLAG.
;
CALL RH1SOUND1 ;
;
BCF GENFLAGS1, RH1OCTBIT ;
BCF GENFLAGS5, RH1OCTUPBIT ;UP OCTAVE OFF.
;
BCF GENFLAGS2, CH5ON_FLAG ;EXTRA LAYER ON Ch5 ON OR OFF.
BCF MIDISTAT2, CH5COND_FLAG ;HOLDS CH5 ON/OFF STATUS.
BCF GENFLAGS8, RH1L3EN ;TURN OFF RH1 LAYER 3.
;
GOTO SCANEND ;
RH11INSTR2: ;........................................................................................................................................................................................
BTFSS WREG, 1 ;
GOTO RH11INSTR3 ;
;
MOVF PORTC, W ;
MOVWF PEDTEMP ;
ANDLW 0x02 ;ASSIGN FSW1.
BZ RH112J1 ;
CALL FSW1ASIGNCLEAR ;
BSF FSW1ASIGNREG11, FSW1_RH112_BIT;
MOVFF FSW1ASIGNREG11, EEDATA ;VALUE TO WRITE.
MOVLW 0x68 ;
MOVWF EEADR ;DATA MEMORY TO WRITE TO.
CALL EEPROM_WRITE ;
GOTO SCANEND ;
RH112J1: ;
MOVF PEDTEMP, W ;
ANDLW 0x01 ;ASSIGN FSW2.
BZ RH112J2 ;
CALL FSW2ASIGNCLEAR ;
BSF FSW2ASIGNREG11, FSW2_RH112_BIT;
MOVFF FSW2ASIGNREG11, EEDATA ;VALUE TO WRITE.
MOVLW 0x69 ;
MOVWF EEADR ;DATA MEMORY TO WRITE TO.
CALL EEPROM_WRITE ;
GOTO SCANEND ;
RH112J2: ;
MOVF PEDTEMP, W ;
ANDLW 0x04 ;ASSIGN FSW3.
BZ RH112J3 ;
CALL FSW3ASIGNCLEAR ;
BSF FSW3ASIGNREG11, FSW3_RH112_BIT;
MOVFF FSW3ASIGNREG11, EEDATA ;VALUE TO WRITE.
MOVLW 0x6A ;
MOVWF EEADR ;DATA MEMORY TO WRITE TO.
CALL EEPROM_WRITE ;
GOTO SCANEND ;
RH112J3: ;
MOVF PORTA, W ;
ANDLW 0x10 ;ASSIGN FSW4.
BZ RH112J4 ;
CALL FSW4ASIGNCLEAR ;
BSF FSW4ASIGNREG11, FSW4_RH112_BIT;
MOVFF FSW4ASIGNREG11, EEDATA ;VALUE TO WRITE.
MOVLW 0x6B ;
MOVWF EEADR ;DATA MEMORY TO WRITE TO.
CALL EEPROM_WRITE ;
GOTO SCANEND ;
;
RH112J4: ;<
CALL RH1SOUND2L2 ;
;.......
BTFSS MIDISTAT, SNDTRY_FLAG ;SOUND TRY OUT MODE FLAG.
BRA RH112J41 ;
BTFSS RECFLAGS3, REC_RH12_BIT ;
BRA RH112J41 ;
MOVLW 0x31 ;EEPROM REVERB LEVEL ADDRESS.
MOVWF EEADR ;DATA MEMORY TO WRITE TO.
MOVF RH1FXPOT, W ;
MOVWF EEDATA ;VALUE TO WRITE.
CALL EEPROM_WRITE ;
;
MOVLW 0x0D ;EEPROM ADDRESS.
MOVWF EEADR ;DATA MEMORY TO WRITE TO.
MOVF SNDTRI, W ;
MOVWF EEDATA ;VALUE TO WRITE.
CALL EEPROM_WRITE ;
;
RH112J41: ;
MOVLW 0x0D ;EEPROM ADDRESS.
MOVWF EEADR ;
BCF EECON1, EEPGD ;SELECT DATA EEPROM MEMORY.
BCF EECON1, CFGS ;
BSF EECON1, RD ;ENABLE EEPROM READ.
;VALUE IN WREG.
;
BTFSS MIDISTAT, SNDTRY_FLAG ;SOUND TRY OUT MODE FLAG.
BRA RH112J42 ;
CLRF RECFLAGS1 ;BASS REC FLAGS.
CLRF RECFLAGS2 ;CHORD REC FLAGS.
CLRF RECFLAGS3 ;RH1 REC FLAGS.
BSF RECFLAGS3, REC_RH12_BIT ;
CLRF RECFLAGS4 ;RH1 REC FLAGS.
CLRF RECFLAGS5 ;RH2 REC FLAGS.
CLRF RECFLAGS6 ;RH2 REC FLAGS.
CLRF RECFLAGS7 ;
CLRF RECFLAGS8 ;
MOVFF EEDATA, SNDTRI ;
RH112J42: ;.................................................
BTFSC MIDISTAT, SNDTRY_FLAG ;SOUND-TRY-OUT MODE FLAG.
BRA RH112J5 ;IN SOUND-TRY-OUT MODE CONTINUE AS NORMAL.
MOVLW 0x02 ;CLEARANCE MASK.
ANDWF RH11ONOFF_FLAGS, F ;CLEAR OTHER RH1 INSTRUMENTS.
CLRF RH12ONOFF_FLAGS ;CLEAR OTHER RH1 INSTRUMENTS.
BTG RH11ONOFF_FLAGS, 1 ;
BTFSS RH11ONOFF_FLAGS, 1 ;
BSF GENFLAGS1, MUTE1_FLAG ;
BTFSC RH11ONOFF_FLAGS, 1 ;
BCF GENFLAGS1, MUTE1_FLAG ;
;
BTFSS GENFLAGS1, MUTE1_FLAG ;
BRA RH112LEDON ;
MOVLW 0xB0 ;ALL SOUND OFF CHAN 1.
MOVWF CONTCHAN ;
MOVLW 0x78 ;
MOVWF CONTDB1 ;
CLRF CONTDB2 ;
BSF GENFLAGS1, MUTE_FLAG ;SENDS ALL SOUND OFF.
;
BCF DISPLAYREG, MUTE1LED ;RH1 ON LED, OFF.
BCF GENFLAGS2, CH5ON_FLAG ;Ch5 OFF AS WELL.
BRA RH112J5 ;
RH112LEDON: ;
BSF DISPLAYREG, MUTE1LED ;RH1 ON LED, ON .
BTFSC MIDISTAT2, CH5COND_FLAG ;
BSF GENFLAGS2, CH5ON_FLAG ;Ch5 ON AS WELL.
RH112J5: ;...................................
MOVFF EEDATA, PROGCHHOLD2 ;
BTFSS PROGCHHOLD2, 7 ;IF >0x7F IT IS A BLANK SOUND.
BCF GENFLAGS4, BLANK_RH1_FLAG;
BTFSC PROGCHHOLD2, 7 ;
BSF GENFLAGS4, BLANK_RH1_FLAG;RH1 MUTE (BLANK SOUND).
MOVLW 0xC0 ;PROG CHANGE CHAN 1.
MOVWF PROGCHHOLD1 ;
BSF SCANSTAT, 0 ;SET BASS PROG SENT FLAG.
;
CALL RH1SOUND2 ;
;
BCF GENFLAGS1, RH1OCTBIT ;
BCF GENFLAGS5, RH1OCTUPBIT ;UP OCTAVE OFF.
;
BTFSS GENFLAGS1, MUTE1_FLAG ;
BSF GENFLAGS2, CH5ON_FLAG ;EXTRA LAYER ON Ch5 ON OR OFF.
BSF MIDISTAT2, CH5COND_FLAG ;HOLDS CH5 ON/OFF STATUS.
;
;BTFSC GENFLAGS1, MUTE1_FLAG ;STOPS BUTTON PRESS ENABLING Ch5.
;BCF GENFLAGS8, RH1L3EN ;TURN OFF RH1 LAYER 3.
GOTO SCANEND ;
;........................................................................................................................................................................................
RH11INSTR3: ;
BTFSS WREG, 2 ;
BRA RH11INSTR4 ;
;
MOVF PORTC, W ;
MOVWF PEDTEMP ;
ANDLW 0x02 ;ASSIGN FSW1.
BZ RH113J1 ;
CALL FSW1ASIGNCLEAR ;
BSF FSW1ASIGNREG11, FSW1_RH113_BIT;
MOVFF FSW1ASIGNREG11, EEDATA ;VALUE TO WRITE.
MOVLW 0x68 ;
MOVWF EEADR ;DATA MEMORY TO WRITE TO.
CALL EEPROM_WRITE ;
GOTO SCANEND ;
RH113J1: ;
MOVF PEDTEMP, W ;
ANDLW 0x01 ;ASSIGN FSW2.
BZ RH113J2 ;
CALL FSW2ASIGNCLEAR ;
BSF FSW2ASIGNREG11, FSW2_RH113_BIT;
MOVFF FSW2ASIGNREG11, EEDATA ;VALUE TO WRITE.
MOVLW 0x69 ;
MOVWF EEADR ;DATA MEMORY TO WRITE TO.
CALL EEPROM_WRITE ;
GOTO SCANEND ;
RH113J2: ;
MOVF PEDTEMP, W ;
ANDLW 0x04 ;ASSIGN FSW3.
BZ RH113J3 ;
CALL FSW3ASIGNCLEAR ;
BSF FSW3ASIGNREG11, FSW3_RH113_BIT;
MOVFF FSW3ASIGNREG11, EEDATA ;VALUE TO WRITE.
MOVLW 0x6A ;
MOVWF EEADR ;DATA MEMORY TO WRITE TO.
CALL EEPROM_WRITE ;
GOTO SCANEND ;
RH113J3: ;
MOVF PORTA, W ;
ANDLW 0x10 ;ASSIGN FSW4.
BZ RH113J4 ;
CALL FSW4ASIGNCLEAR ;
BSF FSW4ASIGNREG11, FSW4_RH113_BIT;
MOVFF FSW4ASIGNREG11, EEDATA ;VALUE TO WRITE.
MOVLW 0x6B ;
MOVWF EEADR ;DATA MEMORY TO WRITE TO.
CALL EEPROM_WRITE ;
GOTO SCANEND ;
;
RH113J4: ;
CALL RH1SOUND3L2 ;
;...............
BTFSS MIDISTAT, SNDTRY_FLAG ;SOUND TRY OUT MODE FLAG.
BRA RH113J41 ;
BTFSS RECFLAGS3, REC_RH13_BIT ;
BRA RH113J41 ;
MOVLW 0x32 ;EEPROM REVERB LEVEL ADDRESS.
MOVWF EEADR ;DATA MEMORY TO WRITE TO.
MOVF RH1FXPOT, W ;
MOVWF EEDATA ;VALUE TO WRITE.
CALL EEPROM_WRITE ;
;
MOVLW 0x0E ;EEPROM ADDRESS.
MOVWF EEADR ;DATA MEMORY TO WRITE TO.
MOVF SNDTRI, W ;
MOVWF EEDATA ;VALUE TO WRITE.
CALL EEPROM_WRITE ;
;
RH113J41: ;
MOVLW 0x0E ;EEPROM ADDRESS.
MOVWF EEADR ;
BCF EECON1, EEPGD ;SELECT DATA EEPROM MEMORY.
BCF EECON1, CFGS ;
BSF EECON1, RD ;ENABLE EEPROM READ.
;VALUE IN EEDATA. ?????
;
BTFSS MIDISTAT, SNDTRY_FLAG ;SOUND TRY OUT MODE FLAG.
BRA RH113J42 ;
CLRF RECFLAGS1 ;BASS REC FLAGS.
CLRF RECFLAGS2 ;CHORD REC FLAGS.
CLRF RECFLAGS3 ;RH1 REC FLAGS.
BSF RECFLAGS3, REC_RH13_BIT ;
CLRF RECFLAGS4 ;RH1 REC FLAGS.
CLRF RECFLAGS5 ;RH2 REC FLAGS.
CLRF RECFLAGS6 ;RH2 REC FLAGS.
CLRF RECFLAGS7 ;
CLRF RECFLAGS8 ;
MOVFF EEDATA, SNDTRI ;
RH113J42: ;
BTFSC MIDISTAT, SNDTRY_FLAG ;SOUND-TRY-OUT MODE FLAG.
BRA RH113J5 ;IN SOUND-TRY-OUT MODE CONTINUE AS NORMAL.
MOVLW 0x04 ;CLEARANCE MASK.
ANDWF RH11ONOFF_FLAGS, F ;CLEAR OTHER RH1 INSTRUMENTS.
CLRF RH12ONOFF_FLAGS ;CLEAR OTHER RH1 INSTRUMENTS.
BTG RH11ONOFF_FLAGS, 2 ;
BTFSS RH11ONOFF_FLAGS, 2 ;
BSF GENFLAGS1, MUTE1_FLAG ;
BTFSC RH11ONOFF_FLAGS, 2 ;
BCF GENFLAGS1, MUTE1_FLAG ;
;MUTE RH1.
BTFSS GENFLAGS1, MUTE1_FLAG ;
BRA RH113LEDON ;
MOVLW 0xB0 ;ALL SOUND OFF CHAN 1.
MOVWF CONTCHAN ;
MOVLW 0x78 ;
MOVWF CONTDB1 ;
CLRF CONTDB2 ;
BSF GENFLAGS1, MUTE_FLAG ;SENDS ALL SOUND OFF.
;
BCF DISPLAYREG, MUTE1LED ;RH1 ON LED, OFF.
BCF GENFLAGS2, CH5ON_FLAG ;Ch5 OFF AS WELL.
BRA RH113J5 ;
RH113LEDON: ;
BSF DISPLAYREG, MUTE1LED ;RH1 ON LED, ON .
BTFSC MIDISTAT2, CH5COND_FLAG ;
BSF GENFLAGS2, CH5ON_FLAG ;Ch5 ON AS WELL.
RH113J5: ;...................................
MOVFF EEDATA, PROGCHHOLD2 ;
BTFSS PROGCHHOLD2, 7 ;IF >0x7F IT IS A BLANK SOUND.
BCF GENFLAGS4, BLANK_RH1_FLAG;
BTFSC PROGCHHOLD2, 7 ;
BSF GENFLAGS4, BLANK_RH1_FLAG;RH1 MUTE (BLANK SOUND).
MOVLW 0xC0 ;PROG CHANGE CHAN 1.
MOVWF PROGCHHOLD1 ;
;
CALL RH1SOUND3 ;
;
BCF GENFLAGS1, RH1OCTBIT ;
BCF GENFLAGS5, RH1OCTUPBIT ;UP OCTAVE OFF.
;
BTFSS GENFLAGS1, MUTE1_FLAG ;
BSF GENFLAGS2, CH5ON_FLAG ;EXTRA LAYER ON Ch5 ON OR OFF.
BSF MIDISTAT2, CH5COND_FLAG ;HOLDS CH5 ON/OFF STATUS.
;
;BTFSC GENFLAGS1, MUTE1_FLAG ;STOPS BUTTON PRESS ENABLING Ch5.
;BCF GENFLAGS8, RH1L3EN ;TURN OFF RH1 LAYER 3.
;
BSF SCANSTAT, 0 ;SET BASS PROG SENT FLAG.
GOTO SCANEND ;
;........................................................................................................................................................................................
RH11INSTR4: ;
BTFSS WREG, 3 ;
GOTO RH11INSTR5 ;
;
MOVF PORTC, W ;
MOVWF PEDTEMP ;
ANDLW 0x02 ;ASSIGN FSW1.
BZ RH114J1 ;
CALL FSW1ASIGNCLEAR ;
BSF FSW1ASIGNREG11, FSW1_RH114_BIT;
MOVFF FSW1ASIGNREG11, EEDATA ;VALUE TO WRITE.
MOVLW 0x68 ;
MOVWF EEADR ;DATA MEMORY TO WRITE TO.
CALL EEPROM_WRITE ;
GOTO SCANEND ;
RH114J1: ;
MOVF PEDTEMP, W ;
ANDLW 0x01 ;ASSIGN FSW2.
BZ RH114J2 ;
CALL FSW2ASIGNCLEAR ;
BSF FSW2ASIGNREG11, FSW2_RH114_BIT;
MOVFF FSW2ASIGNREG11, EEDATA ;VALUE TO WRITE.
MOVLW 0x69 ;
MOVWF EEADR ;DATA MEMORY TO WRITE TO.
CALL EEPROM_WRITE ;
GOTO SCANEND ;
RH114J2: ;
MOVF PEDTEMP, W ;
ANDLW 0x04 ;ASSIGN FSW3.
BZ RH114J3 ;
CALL FSW3ASIGNCLEAR ;
BSF FSW3ASIGNREG11, FSW3_RH114_BIT;
MOVFF FSW3ASIGNREG11, EEDATA ;VALUE TO WRITE.
MOVLW 0x6A ;
MOVWF EEADR ;DATA MEMORY TO WRITE TO.
CALL EEPROM_WRITE ;
GOTO SCANEND ;
RH114J3: ;
MOVF PORTA, W ;
ANDLW 0x10 ;ASSIGN FSW4.
BZ RH114J4 ;
CALL FSW4ASIGNCLEAR ;
BSF FSW4ASIGNREG11, FSW4_RH114_BIT;
MOVFF FSW4ASIGNREG11, EEDATA ;VALUE TO WRITE.
MOVLW 0x6B ;
MOVWF EEADR ;DATA MEMORY TO WRITE TO.
CALL EEPROM_WRITE ;
GOTO SCANEND ;
;
RH114J4: ;
CALL RH1SOUND4L2 ;
;...........
BTFSS MIDISTAT, SNDTRY_FLAG ;SOUND TRY OUT MODE FLAG.
BRA RH114J41 ;
BTFSS RECFLAGS3, REC_RH14_BIT ;
BRA RH114J41 ;
MOVLW 0x33 ;EEPROM REVERB LEVEL ADDRESS.
MOVWF EEADR ;DATA MEMORY TO WRITE TO.
MOVF RH1FXPOT, W ;
MOVWF EEDATA ;VALUE TO WRITE.
CALL EEPROM_WRITE ;
;
MOVLW 0x0F ;EEPROM ADDRESS.
MOVWF EEADR ;DATA MEMORY TO WRITE TO.
MOVF SNDTRI, W ;
MOVWF EEDATA ;VALUE TO WRITE.
CALL EEPROM_WRITE ;
;
RH114J41: ;
MOVLW 0x0F ;EEPROM ADDRESS.
MOVWF EEADR ;
BCF EECON1, EEPGD ;SELECT DATA EEPROM MEMORY.
BCF EECON1, CFGS ;
BSF EECON1, RD ;ENABLE EEPROM READ.
;VALUE IN EEDATA.
;
BTFSS MIDISTAT, SNDTRY_FLAG ;SOUND TRY OUT MODE FLAG.
BRA RH114J42 ;
CLRF RECFLAGS1 ;BASS REC FLAGS.
CLRF RECFLAGS2 ;CHORD REC FLAGS.
CLRF RECFLAGS3 ;RH1 REC FLAGS.
BSF RECFLAGS3, REC_RH14_BIT ;
CLRF RECFLAGS4 ;RH1 REC FLAGS.
CLRF RECFLAGS5 ;RH2 REC FLAGS.
CLRF RECFLAGS6 ;RH2 REC FLAGS.
CLRF RECFLAGS7 ;
CLRF RECFLAGS8 ;
MOVFF EEDATA, SNDTRI ;
RH114J42: ;.........................
BTFSC MIDISTAT, SNDTRY_FLAG ;SOUND-TRY-OUT MODE FLAG.
BRA RH114J5 ;IN SOUND-TRY-OUT MODE CONTINUE AS NORMAL.
MOVLW 0x08 ;4th CLEARANCE MASK.
ANDWF RH11ONOFF_FLAGS, F ;CLEAR OTHER RH1 INSTRUMENTS.
CLRF RH12ONOFF_FLAGS ;CLEAR OTHER RH1 INSTRUMENTS.
BTG RH11ONOFF_FLAGS, 3 ;
BTFSS RH11ONOFF_FLAGS, 3 ;
BSF GENFLAGS1, MUTE1_FLAG ;
BTFSC RH11ONOFF_FLAGS, 3 ;
BCF GENFLAGS1, MUTE1_FLAG ;
;MUTE RH1.
BTFSS GENFLAGS1, MUTE1_FLAG ;
BRA RH114LEDON ;
MOVLW 0xB0 ;ALL SOUND OFF CHAN 1.
MOVWF CONTCHAN ;
MOVLW 0x78 ;
MOVWF CONTDB1 ;
CLRF CONTDB2 ;
BSF GENFLAGS1, MUTE_FLAG ;SENDS ALL SOUND OFF.
;
BCF DISPLAYREG, MUTE1LED ;RH1 ON LED, OFF.
BCF GENFLAGS2, CH5ON_FLAG ;Ch5 OFF AS WELL.
BRA RH114J5 ;
RH114LEDON: ;
BSF DISPLAYREG, MUTE1LED ;RH1 ON LED, ON .
BTFSC MIDISTAT2, CH5COND_FLAG ;
BSF GENFLAGS2, CH5ON_FLAG ;Ch5 ON AS WELL.
RH114J5: ;...................................
MOVFF EEDATA, PROGCHHOLD2 ;
BTFSS PROGCHHOLD2, 7 ;IF >0x7F IT IS A BLANK SOUND.
BCF GENFLAGS4, BLANK_RH1_FLAG;
BTFSC PROGCHHOLD2, 7 ;
BSF GENFLAGS4, BLANK_RH1_FLAG;RH1 MUTE (BLANK SOUND).
MOVLW 0xC0 ;PROG CHANGE CHAN 1.
MOVWF PROGCHHOLD1 ;
BSF SCANSTAT, 0 ;SET BASS PROG SENT FLAG.
;
CALL RH1SOUND4 ;
;
BCF GENFLAGS1, RH1OCTBIT ;
BCF GENFLAGS5, RH1OCTUPBIT ;UP OCTAVE OFF.
;
BTFSS GENFLAGS1, MUTE1_FLAG ;
BSF GENFLAGS2, CH5ON_FLAG ;EXTRA LAYER ON Ch5 ON OR OFF.
BSF MIDISTAT2, CH5COND_FLAG ;HOLDS CH5 ON/OFF STATUS.
;
;BTFSC GENFLAGS1, MUTE1_FLAG ;STOPS BUTTON PRESS ENABLING Ch5.
;BCF GENFLAGS8, RH1L3EN ;TURN OFF RH1 LAYER 3.
GOTO SCANEND ;
;.........................................................................................................................................................................................
RH11INSTR5: ;
BTFSS WREG, 4 ;
GOTO RH11INSTR6 ;
;
MOVF PORTC, W ;
MOVWF PEDTEMP ;
ANDLW 0x02 ;ASSIGN FSW1.
BZ RH115J1 ;
CALL FSW1ASIGNCLEAR ;
BSF FSW1ASIGNREG11, FSW1_RH115_BIT;
MOVFF FSW1ASIGNREG11, EEDATA ;VALUE TO WRITE.
MOVLW 0x68 ;
MOVWF EEADR ;DATA MEMORY TO WRITE TO.
CALL EEPROM_WRITE ;
GOTO SCANEND ;
RH115J1: ;
MOVF PEDTEMP, W ;
ANDLW 0x01 ;ASSIGN FSW2.
BZ RH115J2 ;
CALL FSW2ASIGNCLEAR ;
BSF FSW2ASIGNREG11, FSW2_RH115_BIT;
MOVFF FSW2ASIGNREG11, EEDATA ;VALUE TO WRITE.
MOVLW 0x69 ;
MOVWF EEADR ;DATA MEMORY TO WRITE TO.
CALL EEPROM_WRITE ;
GOTO SCANEND ;
RH115J2: ;
MOVF PEDTEMP, W ;
ANDLW 0x04 ;ASSIGN FSW3.
BZ RH115J3 ;
CALL FSW3ASIGNCLEAR ;
BSF FSW3ASIGNREG11, FSW3_RH115_BIT;
MOVFF FSW3ASIGNREG11, EEDATA ;VALUE TO WRITE.
MOVLW 0x6A ;
MOVWF EEADR ;DATA MEMORY TO WRITE TO.
CALL EEPROM_WRITE ;
GOTO SCANEND ;
RH115J3: ;
MOVF PORTA, W ;
ANDLW 0x10 ;ASSIGN FSW4.
BZ RH115J4 ;
CALL FSW4ASIGNCLEAR ;
BSF FSW4ASIGNREG11, FSW4_RH115_BIT;
MOVFF FSW4ASIGNREG11, EEDATA ;VALUE TO WRITE.
MOVLW 0x6B ;
MOVWF EEADR ;DATA MEMORY TO WRITE TO.
CALL EEPROM_WRITE ;
GOTO SCANEND ;
;
RH115J4: ;
;........
BTFSS MIDISTAT, SNDTRY_FLAG ;SOUND TRY OUT MODE FLAG.
BRA RH115J41 ;
BTFSS RECFLAGS3, REC_RH15_BIT ;
BRA RH115J41 ;
MOVLW 0x34 ;EEPROM REVERB LEVEL ADDRESS.
MOVWF EEADR ;DATA MEMORY TO WRITE TO.
MOVF RH1FXPOT, W ;
MOVWF EEDATA ;VALUE TO WRITE.
CALL EEPROM_WRITE ;
;
MOVLW 0x10 ;EEPROM ADDRESS.
MOVWF EEADR ;DATA MEMORY TO WRITE TO.
MOVF SNDTRI, W ;
MOVWF EEDATA ;VALUE TO WRITE.
CALL EEPROM_WRITE ;
;
RH115J41: ;
CALL RH1SOUND5L2 ;
;
MOVLW 0x10 ;EEPROM ADDRESS.
MOVWF EEADR ;
BCF EECON1, EEPGD ;SELECT DATA EEPROM MEMORY.
BCF EECON1, CFGS ;
BSF EECON1, RD ;ENABLE EEPROM READ.
;VALUE IN EEDATA.
;
BTFSS MIDISTAT, SNDTRY_FLAG ;SOUND TRY OUT MODE FLAG.
BRA RH115J42 ;
CLRF RECFLAGS1 ;BASS REC FLAGS.
CLRF RECFLAGS2 ;CHORD REC FLAGS.
CLRF RECFLAGS3 ;RH1 REC FLAGS.
BSF RECFLAGS3, REC_RH15_BIT ;
CLRF RECFLAGS4 ;RH1 REC FLAGS.
CLRF RECFLAGS5 ;RH2 REC FLAGS.
CLRF RECFLAGS6 ;RH2 REC FLAGS.
CLRF RECFLAGS7 ;
CLRF RECFLAGS8 ;
MOVFF EEDATA, SNDTRI ;
RH115J42: ;..................................
BTFSC MIDISTAT, SNDTRY_FLAG ;SOUND-TRY-OUT MODE FLAG.
BRA RH115J5 ;IN SOUND-TRY-OUT MODE CONTINUE AS NORMAL.
MOVLW 0x10 ;5th CLEARANCE MASK.
ANDWF RH11ONOFF_FLAGS, F ;CLEAR OTHER RH1 INSTRUMENTS.
CLRF RH12ONOFF_FLAGS ;CLEAR OTHER RH1 INSTRUMENTS.
BTG RH11ONOFF_FLAGS, 4 ;
BTFSS RH11ONOFF_FLAGS, 4 ;
BSF GENFLAGS1, MUTE1_FLAG ;
BTFSC RH11ONOFF_FLAGS, 4 ;
BCF GENFLAGS1, MUTE1_FLAG ;
;MUTE RH1.
BTFSS GENFLAGS1, MUTE1_FLAG ;
BRA RH115LEDON ;
MOVLW 0xB0 ;ALL SOUND OFF CHAN 1.
MOVWF CONTCHAN ;
MOVLW 0x78 ;
MOVWF CONTDB1 ;
CLRF CONTDB2 ;
BSF GENFLAGS1, MUTE_FLAG ;SENDS ALL SOUND OFF.
;
BCF DISPLAYREG, MUTE1LED ;RH1 ON LED, OFF.
BCF GENFLAGS2, CH5ON_FLAG ;Ch5 OFF AS WELL.
BRA RH115J5 ;
RH115LEDON: ;
BSF DISPLAYREG, MUTE1LED ;RH1 ON LED, ON .
BTFSC MIDISTAT2, CH5COND_FLAG ;
BSF GENFLAGS2, CH5ON_FLAG ;Ch5 ON AS WELL.
RH115J5: ;...................................
MOVFF EEDATA, PROGCHHOLD2 ;
BTFSS PROGCHHOLD2, 7 ;IF >0x7F IT IS A BLANK SOUND.
BCF GENFLAGS4, BLANK_RH1_FLAG;
BTFSC PROGCHHOLD2, 7 ;
BSF GENFLAGS4, BLANK_RH1_FLAG;RH1 MUTE (BLANK SOUND).
MOVLW 0xC0 ;PROG CHANGE CHAN 1.
MOVWF PROGCHHOLD1 ;
;
CALL RH1SOUND5 ;
;
BCF GENFLAGS1, RH1OCTBIT ;
;
BTFSS GENFLAGS1, MUTE1_FLAG ;
BSF GENFLAGS2, CH5ON_FLAG ;EXTRA LAYER ON Ch5 ON OR OFF.
BSF MIDISTAT2, CH5COND_FLAG ;HOLDS CH5 ON/OFF STATUS.
;
;BTFSC GENFLAGS1, MUTE1_FLAG ;STOPS BUTTON PRESS ENABLING Ch5.
; BCF GENFLAGS8, RH1L3EN ;TURN OFF RH1 LAYER 3.
;
BSF SCANSTAT, 0 ;SET BASS PROG SENT FLAG.
GOTO SCANEND ;
;........................................................................................................................................................................................
RH11INSTR6: ;
BTFSS WREG, 5 ;
GOTO RH11INSOCT ;
;
MOVF PORTC, W ;
MOVWF PEDTEMP ;
ANDLW 0x02 ;ASSIGN FSW1.
BZ RH116J1 ;
CALL FSW1ASIGNCLEAR ;
BSF FSW1ASIGNREG11, FSW1_RH116_BIT;
MOVFF FSW1ASIGNREG11, EEDATA ;VALUE TO WRITE.
MOVLW 0x68 ;
MOVWF EEADR ;DATA MEMORY TO WRITE TO.
CALL EEPROM_WRITE ;
GOTO SCANEND ;
RH116J1: ;
MOVF PEDTEMP, W ;
ANDLW 0x01 ;ASSIGN FSW2.
BZ RH116J2 ;
CALL FSW2ASIGNCLEAR ;
BSF FSW2ASIGNREG11, FSW2_RH116_BIT;
MOVFF FSW2ASIGNREG11, EEDATA ;VALUE TO WRITE.
MOVLW 0x69 ;
MOVWF EEADR ;DATA MEMORY TO WRITE TO.
CALL EEPROM_WRITE ;
GOTO SCANEND ;
RH116J2: ;
MOVF PEDTEMP, W ;
ANDLW 0x04 ;ASSIGN FSW3.
BZ RH116J3 ;
CALL FSW3ASIGNCLEAR ;
BSF FSW3ASIGNREG11, FSW3_RH116_BIT;
MOVFF FSW3ASIGNREG11, EEDATA ;VALUE TO WRITE.
MOVLW 0x6A ;
MOVWF EEADR ;DATA MEMORY TO WRITE TO.
CALL EEPROM_WRITE ;
GOTO SCANEND ;
RH116J3: ;
MOVF PORTA, W ;
ANDLW 0x10 ;ASSIGN FSW4.
BZ RH116J4 ;
CALL FSW4ASIGNCLEAR ;
BSF FSW4ASIGNREG11, FSW4_RH116_BIT;
MOVFF FSW4ASIGNREG11, EEDATA ;VALUE TO WRITE.
MOVLW 0x6B ;
MOVWF EEADR ;DATA MEMORY TO WRITE TO.
CALL EEPROM_WRITE ;
GOTO SCANEND ;
;
RH116J4: ;.....................
CALL RH1SOUND6L2 ;SEND SOUND'S PARAMETERS.
;
BTFSS MIDISTAT, SNDTRY_FLAG ;SOUND TRY OUT MODE FLAG.
BRA RH116J41 ;
BTFSS RECFLAGS3, REC_RH16_BIT ;
BRA RH116J41 ;
MOVLW 0x35 ;EEPROM REVERB LEVEL ADDRESS.
MOVWF EEADR ;DATA MEMORY TO WRITE TO.
MOVF RH1FXPOT, W ;
MOVWF EEDATA ;VALUE TO WRITE.
CALL EEPROM_WRITE ;
;
MOVLW 0x11 ;EEPROM ADDRESS.
MOVWF EEADR ;DATA MEMORY TO WRITE TO.
MOVF SNDTRI, W ;
MOVWF EEDATA ;VALUE TO WRITE.
CALL EEPROM_WRITE ;
;
RH116J41: ;
MOVLW 0x11 ;EEPROM ADDRESS.
MOVWF EEADR ;
BCF EECON1, EEPGD ;SELECT DATA EEPROM MEMORY.
BCF EECON1, CFGS ;
BSF EECON1, RD ;ENABLE EEPROM READ.
;VALUE IN EEDATA.
;
BTFSS MIDISTAT, SNDTRY_FLAG ;SOUND TRY OUT MODE FLAG.
BRA RH116J42 ;
CLRF RECFLAGS1 ;BASS REC FLAGS.
CLRF RECFLAGS2 ;CHORD REC FLAGS.
CLRF RECFLAGS3 ;RH1 REC FLAGS.
BSF RECFLAGS3, REC_RH16_BIT ;
CLRF RECFLAGS4 ;RH1 REC FLAGS.
CLRF RECFLAGS5 ;RH2 REC FLAGS.
CLRF RECFLAGS6 ;RH2 REC FLAGS.
CLRF RECFLAGS7 ;
CLRF RECFLAGS8 ;
MOVFF EEDATA, SNDTRI ;
RH116J42: ;...........................
BTFSC MIDISTAT, SNDTRY_FLAG ;SOUND-TRY-OUT MODE FLAG.
BRA RH116J5 ;IN SOUND-TRY-OUT MODE CONTINUE AS NORMAL.
MOVLW 0x20 ;6th CLEARANCE MASK.
ANDWF RH11ONOFF_FLAGS, F ;CLEAR OTHER RH1 INSTRUMENTS.
CLRF RH12ONOFF_FLAGS ;CLEAR OTHER RH1 INSTRUMENTS.
BTG RH11ONOFF_FLAGS, 5 ;
BTFSS RH11ONOFF_FLAGS, 5 ;
BSF GENFLAGS1, MUTE1_FLAG ;
BTFSC RH11ONOFF_FLAGS, 5 ;
BCF GENFLAGS1, MUTE1_FLAG ;
;MUTE RH1.
BTFSS GENFLAGS1, MUTE1_FLAG ;
BRA RH116LEDON ;
MOVLW 0xB0 ;ALL SOUND OFF CHAN 1.
MOVWF CONTCHAN ;
MOVLW 0x78 ;
MOVWF CONTDB1 ;
CLRF CONTDB2 ;
BSF GENFLAGS1, MUTE_FLAG ;SENDS ALL SOUND OFF.
;
BCF DISPLAYREG, MUTE1LED ;RH1 ON LED, OFF.
BCF GENFLAGS2, CH5ON_FLAG ;Ch5 OFF AS WELL.
BRA RH116J5 ;
RH116LEDON: ;
BSF DISPLAYREG, MUTE1LED ;RH1 ON LED, ON .
BTFSC MIDISTAT2, CH5COND_FLAG ;
BSF GENFLAGS2, CH5ON_FLAG ;Ch5 ON AS WELL.
RH116J5: ;...................................
MOVFF EEDATA, PROGCHHOLD2 ;
BTFSS PROGCHHOLD2, 7 ;IF >0x7F IT IS A BLANK SOUND.
BCF GENFLAGS4, BLANK_RH1_FLAG;
BTFSC PROGCHHOLD2, 7 ;
BSF GENFLAGS4, BLANK_RH1_FLAG;RH1 MUTE (BLANK SOUND).
MOVLW 0xC0 ;PROG CHANGE CHAN 1.
MOVWF PROGCHHOLD1 ;
BSF SCANSTAT, 0 ;SET PROG SENT FLAG.
;
CALL RH1SOUND6 ;
;
BCF GENFLAGS1, RH1OCTBIT ;
BCF GENFLAGS5, RH1OCTUPBIT ;UP OCTAVE OFF.
;
BTFSS GENFLAGS1, MUTE1_FLAG ;
BSF GENFLAGS2, CH5ON_FLAG ;EXTRA LAYER ON Ch5 ON OR OFF.
BSF MIDISTAT2, CH5COND_FLAG ;HOLDS CH5 ON/OFF STATUS.
;
BTFSC GENFLAGS2, CH5ON_FLAG ;LAYER 3 COMES ON/OFF WITH LAYER 2.
BSF GENFLAGS8, RH1L3EN ;
BTFSS GENFLAGS2, CH5ON_FLAG ;
BCF GENFLAGS8, RH1L3EN ;TURN OFF RH1 LAYER 3.
;
GOTO SCANEND ;
;........................................................................................................................................................................................
RH11INSOCT: ;
BTFSS WREG, 6 ;
GOTO RH118 ;
;
MOVF PORTC, W ;
MOVWF PEDTEMP ;
ANDLW 0x02 ;ASSIGN FSW1.
BZ RH11RES1 ;
CALL FSW1ASIGNCLEAR ;
BSF FSW1ASIGNREG, FSW1_ORH1_BIT;
MOVFF FSW1ASIGNREG, EEDATA ;VALUE TO WRITE.
MOVLW 0x78 ;
MOVWF EEADR ;DATA MEMORY TO WRITE TO.
CALL EEPROM_WRITE ;
BRA RH11RESFS ;
RH11RES1: ;
MOVF PEDTEMP, W ;
ANDLW 0x01 ;ASSIGN FSW2.
BZ RH11RES2 ;
CALL FSW2ASIGNCLEAR ;
BSF FSW2ASIGNREG, FSW2_ORH1_BIT;
MOVFF FSW2ASIGNREG, EEDATA ;VALUE TO WRITE.
MOVLW 0x79 ;
MOVWF EEADR ;DATA MEMORY TO WRITE TO.
CALL EEPROM_WRITE ;
BRA RH11RESFS ;
RH11RES2: ;
MOVF PEDTEMP, W ;
ANDLW 0x04 ;ASSIGN FSW3.
BZ RH11RES3 ;
CALL FSW3ASIGNCLEAR ;
BSF FSW3ASIGNREG, FSW3_ORH1_BIT;
MOVFF FSW3ASIGNREG, EEDATA ;VALUE TO WRITE.
MOVLW 0x7A ;
MOVWF EEADR ;DATA MEMORY TO WRITE TO.
CALL EEPROM_WRITE ;
BRA RH11RESFS ;
RH11RES3: ;
MOVF PORTA, W ;
ANDLW 0x10 ;ASSIGN FSW4.
BZ RH11RES4 ;
CALL FSW4ASIGNCLEAR ;
BSF FSW4ASIGNREG, FSW4_ORH1_BIT;
MOVFF FSW4ASIGNREG, EEDATA ;VALUE TO WRITE.
MOVLW 0x7B ;
MOVWF EEADR ;DATA MEMORY TO WRITE TO.
CALL EEPROM_WRITE ;
BRA RH11RESFS ;
RH11RES4: ;<
BCF GENFLAGS6, RHINSTCHNG ;STOP RH CHANGE ALERT.
BTG GENFLAGS1, RH1OCTBIT ;
MOVLW 0xB0 ;
MOVWF NORPN1 ;COARSE TUNNING IN SEMITONES.
MOVLW 0x65 ;
MOVWF NORPN2 ;
MOVLW 0x00 ;
MOVWF NORPN3 ;
MOVLW 0x64 ;
MOVWF NORPN4 ;
MOVLW 0x02 ;
MOVWF NORPN5 ;
MOVLW 0x06 ;
MOVWF NORPN6 ;
;
BTFSS GENFLAGS5, RH1OCTUPBIT ;OCTAVE UP BIT.
BRA RH1OCTSEL ;
MOVLW 0x4C ;
BTFSS GENFLAGS1, RH1OCTBIT ;
MOVLW 0x34 ;
BRA RH1OCTSEL2 ;
RH1OCTSEL: ;
MOVLW 0x40 ;
BTFSC GENFLAGS1, RH1OCTBIT ;
MOVLW 0x34 ;
RH1OCTSEL2: ;
MOVWF NORPN7 ;
BSF GENFLAGS1, NORPN_FLAG ;
;
RH11RESFS: ;
GOTO SCANEND ;
;........................................................................................................................................................................................
RH118: ;PITCH-BEND.
BTFSS WREG, 7 ;
BRA RH12_SCAN ;
;
MOVF PORTC, W ;
MOVWF PEDTEMP ;
ANDLW 0x02 ;ASSIGN FSW1.
BZ RH118J1 ;
CALL FSW1ASIGNCLEAR ;
BSF FSW1ASIGNREG11, FSW1_RH118_BIT;
MOVFF FSW1ASIGNREG11, EEDATA ;VALUE TO WRITE.
MOVLW 0x68 ;
MOVWF EEADR ;DATA MEMORY TO WRITE TO.
CALL EEPROM_WRITE ;
GOTO SCANEND ;
RH118J1: ;
MOVF PEDTEMP, W ;
ANDLW 0x01 ;ASSIGN FSW2.
BZ RH118J2 ;
CALL FSW2ASIGNCLEAR ;
BSF FSW2ASIGNREG11, FSW2_RH118_BIT;
MOVFF FSW2ASIGNREG11, EEDATA ;VALUE TO WRITE.
MOVLW 0x69 ;
MOVWF EEADR ;DATA MEMORY TO WRITE TO.
CALL EEPROM_WRITE ;
GOTO SCANEND ;
RH118J2: ;
MOVF PEDTEMP, W ;
ANDLW 0x04 ;ASSIGN FSW3.
BZ RH118J3 ;
CALL FSW3ASIGNCLEAR ;
BSF FSW3ASIGNREG11, FSW3_RH118_BIT;
MOVFF FSW3ASIGNREG11, EEDATA ;VALUE TO WRITE.
MOVLW 0x6B ;
MOVWF EEADR ;DATA MEMORY TO WRITE TO.
CALL EEPROM_WRITE ;
GOTO SCANEND ;
RH118J3: ;
MOVF PORTA, W ;
ANDLW 0x10 ;ASSIGN FSW4.
BZ RH118J4 ;
CALL FSW4ASIGNCLEAR ;
BSF FSW4ASIGNREG11, FSW4_RH118_BIT;
MOVFF FSW4ASIGNREG11, EEDATA ;VALUE TO WRITE.
MOVLW 0x6B ;
MOVWF EEADR ;DATA MEMORY TO WRITE TO.
CALL EEPROM_WRITE ;
GOTO SCANEND ;
;
RH118J4: ;0x7F IT IS A BLANK SOUND.
BCF GENFLAGS4, BLANK_RH1_FLAG;
BTFSC PROGCHHOLD2, 7 ;
BSF GENFLAGS4, BLANK_RH1_FLAG;RH1 MUTE (BLANK SOUND).
MOVLW 0xC0 ;PROG CHANGE CHAN 1.
MOVWF PROGCHHOLD1 ;
BSF SCANSTAT, 0 ;SET PROG SEND FLAG.
;
CALL RH1SOUND7 ;
;
BSF GENFLAGS1, RH1OCTBIT ;
BCF GENFLAGS5, RH1OCTUPBIT ;UP OCTAVE OFF.
;
BTFSS GENFLAGS1, MUTE1_FLAG ;STOPS BUTTON PRESS ENABLING Ch5.
BSF GENFLAGS2, CH5ON_FLAG ;EXTRA LAYER ON Ch5 ON OR OFF.
BSF MIDISTAT2, CH5COND_FLAG ;HOLDS CH5 ON/OFF STATUS.
;
;BTFSC GENFLAGS1, MUTE1_FLAG ;STOPS BUTTON PRESS ENABLING Ch5.
; BCF GENFLAGS8, RH1L3EN ;TURN OFF RH1 LAYER 3.
GOTO SCANEND ;
;........................................................................................................................................................................................
RH12INSTR2: ;
BTFSS WREG, 1 ;
BRA RH12INSTR3 ;
;
MOVF PORTC, W ;
MOVWF PEDTEMP ;
ANDLW 0x02 ;ASSIGN FSW1.
BZ RH122J1 ;
CALL FSW1ASIGNCLEAR ;
BSF FSW1ASIGNREG12, FSW1_RH122_BIT;
MOVFF FSW1ASIGNREG12, EEDATA ;VALUE TO WRITE.
MOVLW 0x6C ;
MOVWF EEADR ;DATA MEMORY TO WRITE TO.
CALL EEPROM_WRITE ;
GOTO SCANEND ;
RH122J1: ;
MOVF PEDTEMP, W ;
ANDLW 0x01 ;ASSIGN FSW2.
BZ RH122J2 ;
CALL FSW2ASIGNCLEAR ;
BSF FSW2ASIGNREG12, FSW2_RH122_BIT;
MOVFF FSW2ASIGNREG12, EEDATA ;VALUE TO WRITE.
MOVLW 0x6D ;
MOVWF EEADR ;DATA MEMORY TO WRITE TO.
CALL EEPROM_WRITE ;
GOTO SCANEND ;
RH122J2: ;
MOVF PEDTEMP, W ;
ANDLW 0x04 ;ASSIGN FSW3.
BZ RH122J3 ;
CALL FSW3ASIGNCLEAR ;
BSF FSW3ASIGNREG12, FSW3_RH122_BIT;
MOVFF FSW3ASIGNREG12, EEDATA ;VALUE TO WRITE.
MOVLW 0x6E ;
MOVWF EEADR ;DATA MEMORY TO WRITE TO.
CALL EEPROM_WRITE ;
GOTO SCANEND ;
RH122J3: ;
MOVF PORTA, W ;
ANDLW 0x10 ;ASSIGN FSW4.
BZ RH122J4 ;
CALL FSW4ASIGNCLEAR ;
BSF FSW4ASIGNREG12, FSW4_RH122_BIT;
MOVFF FSW4ASIGNREG12, EEDATA ;VALUE TO WRITE.
MOVLW 0x6F ;
MOVWF EEADR ;DATA MEMORY TO WRITE TO.
CALL EEPROM_WRITE ;
GOTO SCANEND ;
;
RH122J4: ;
BTFSS MIDISTAT, SNDTRY_FLAG ;SOUND TRY OUT MODE FLAG.
BRA RH122J41 ;
BTFSS RECFLAGS4, REC_RH18_BIT ;
BRA RH122J41 ;
MOVLW 0x37 ;EEPROM REVERB LEVEL ADDRESS.
MOVWF EEADR ;DATA MEMORY TO WRITE TO.
MOVF RH1FXPOT, W ;
MOVWF EEDATA ;VALUE TO WRITE.
CALL EEPROM_WRITE ;
;
MOVLW 0x13 ;EEPROM CHORD1 ADDRESS.
MOVWF EEADR ;DATA MEMORY TO WRITE TO.
MOVF SNDTRI, W ;
MOVWF EEDATA ;VALUE TO WRITE.
CALL EEPROM_WRITE ;
;
RH122J41: ;
MOVLW 0x13 ;EEPROM ADDRESS.
MOVWF EEADR ;
BCF EECON1, EEPGD ;SELECT DATA EEPROM MEMORY.
BCF EECON1, CFGS ;
BSF EECON1, RD ;ENABLE EEPROM READ.
;VALUE IN EEDATA.
BTFSS MIDISTAT, SNDTRY_FLAG ;SOUND TRY OUT MODE FLAG.
BRA RH122J42 ;
CLRF RECFLAGS1 ;BASS REC FLAGS.
CLRF RECFLAGS2 ;CHORD REC FLAGS.
CLRF RECFLAGS3 ;RH1 REC FLAGS.
CLRF RECFLAGS4 ;RH1 REC FLAGS.
BSF RECFLAGS4, REC_RH18_BIT ;
CLRF RECFLAGS5 ;RH2 REC FLAGS.
CLRF RECFLAGS6 ;RH2 REC FLAGS.
MOVFF EEDATA, SNDTRI ;
RH122J42: ;..........................
BTFSC MIDISTAT, SNDTRY_FLAG ;SOUND-TRY-OUT MODE FLAG.
BRA RH122J5 ;IN SOUND-TRY-OUT MODE CONTINUE AS NORMAL.
MOVLW 0x02 ;2nd BUTTON MASK.
ANDWF RH12ONOFF_FLAGS, F ;CLEAR OTHER RH1 INSTRUMENTS.
CLRF RH11ONOFF_FLAGS ;CLEAR OTHER RH1 INSTRUMENTS.
BTG RH12ONOFF_FLAGS, 1 ;
BTFSS RH12ONOFF_FLAGS, 1 ;
BSF GENFLAGS1, MUTE1_FLAG ;
BTFSC RH12ONOFF_FLAGS, 1 ;
BCF GENFLAGS1, MUTE1_FLAG ;
;MUTE RH1.
BTFSS GENFLAGS1, MUTE1_FLAG ;
BRA RH122LEDON ;
MOVLW 0xB0 ;ALL SOUND OFF CHAN 1.
MOVWF CONTCHAN ;
MOVLW 0x78 ;
MOVWF CONTDB1 ;
CLRF CONTDB2 ;
BSF GENFLAGS1, MUTE_FLAG ;SENDS ALL SOUND OFF.
;
BCF DISPLAYREG, MUTE1LED ;RH1 ON LED, OFF.
BCF GENFLAGS2, CH5ON_FLAG ;Ch5 OFF AS WELL.
BRA RH122J5 ;
RH122LEDON: ;
BSF DISPLAYREG, MUTE1LED ;RH1 ON LED, ON .
BTFSC MIDISTAT2, CH5COND_FLAG ;
BSF GENFLAGS2, CH5ON_FLAG ;Ch5 ON AS WELL.
RH122J5: ;...................................
MOVFF EEDATA, PROGCHHOLD2 ;
MOVLW 0xC0 ;PROG CHANGE CHAN 1.
MOVWF PROGCHHOLD1 ;
;
CALL RH1SOUND8 ;
;
BCF GENFLAGS1, RH1OCTBIT ;
BCF GENFLAGS5, RH1OCTUPBIT ;UP OCTAVE OFF.
;
BCF GENFLAGS2, CH5ON_FLAG ;EXTRA LAYER ON Ch5 ON OR OFF.
BCF MIDISTAT2, CH5COND_FLAG ;HOLDS CH5 ON/OFF STATUS.
BCF GENFLAGS8, RH1L3EN ;TURN OFF RH1 LAYER 3.
BSF SCANSTAT, 0 ;SET BASS PROG SENT FLAG.
GOTO SCANEND ;
;........................................................................................................................................................................................
RH12INSTR3: ;
BTFSS WREG, 2 ;
GOTO RH12INSTR4 ;
;
MOVF PORTC, W ;
MOVWF PEDTEMP ;
ANDLW 0x02 ;ASSIGN FSW1.
BZ RH123J1 ;
CALL FSW1ASIGNCLEAR ;
BSF FSW1ASIGNREG12, FSW1_RH123_BIT;
MOVFF FSW1ASIGNREG12, EEDATA ;VALUE TO WRITE.
MOVLW 0x6C ;
MOVWF EEADR ;DATA MEMORY TO WRITE TO.
CALL EEPROM_WRITE ;
GOTO SCANEND ;
RH123J1: ;
MOVF PEDTEMP, W ;
ANDLW 0x01 ;ASSIGN FSW2.
BZ RH123J2 ;
CALL FSW2ASIGNCLEAR ;
BSF FSW2ASIGNREG12, FSW2_RH123_BIT;
MOVFF FSW2ASIGNREG12, EEDATA ;VALUE TO WRITE.
MOVLW 0x6D ;
MOVWF EEADR ;DATA MEMORY TO WRITE TO.
CALL EEPROM_WRITE ;
GOTO SCANEND ;
RH123J2: ;
MOVF PEDTEMP, W ;
ANDLW 0x04 ;ASSIGN FSW3.
BZ RH123J3 ;
CALL FSW3ASIGNCLEAR ;
BSF FSW3ASIGNREG12, FSW3_RH123_BIT;
MOVFF FSW3ASIGNREG12, EEDATA ;VALUE TO WRITE.
MOVLW 0x6E ;
MOVWF EEADR ;DATA MEMORY TO WRITE TO.
CALL EEPROM_WRITE ;
GOTO SCANEND ;
RH123J3: ;
MOVF PORTA, W ;
ANDLW 0x10 ;ASSIGN FSW4.
BZ RH123J4 ;
CALL FSW4ASIGNCLEAR ;
BSF FSW4ASIGNREG12, FSW4_RH123_BIT;
MOVFF FSW4ASIGNREG12, EEDATA ;VALUE TO WRITE.
MOVLW 0x6F ;
MOVWF EEADR ;DATA MEMORY TO WRITE TO.
CALL EEPROM_WRITE ;
GOTO SCANEND ;
;
RH123J4: ;
CALL RH1SOUND9L2 ;
;
BTFSS MIDISTAT, SNDTRY_FLAG ;SOUND TRY OUT MODE FLAG.
BRA RH123J41 ;
BTFSS RECFLAGS4, REC_RH19_BIT ;
BRA RH123J41 ;
MOVLW 0x38 ;EEPROM REVERB LEVEL ADDRESS.
MOVWF EEADR ;DATA MEMORY TO WRITE TO.
MOVF RH1FXPOT, W ;
MOVWF EEDATA ;VALUE TO WRITE.
CALL EEPROM_WRITE ;
;
MOVLW 0x14 ;EEPROM CHORD1 ADDRESS.
MOVWF EEADR ;DATA MEMORY TO WRITE TO.
MOVF SNDTRI, W ;
MOVWF EEDATA ;VALUE TO WRITE.
CALL EEPROM_WRITE ;
;
RH123J41: ;
MOVLW 0x14 ;EEPROM ADDRESS.
MOVWF EEADR ;
BCF EECON1, EEPGD ;SELECT DATA EEPROM MEMORY.
BCF EECON1, CFGS ;
BSF EECON1, RD ;ENABLE EEPROM READ.
;VALUE IN EEDATA.
;
BTFSS MIDISTAT, SNDTRY_FLAG ;SOUND TRY OUT MODE FLAG.
BRA RH123J42 ;
CLRF RECFLAGS1 ;BASS REC FLAGS.
CLRF RECFLAGS2 ;CHORD REC FLAGS.
CLRF RECFLAGS3 ;RH1 REC FLAGS.
CLRF RECFLAGS4 ;RH1 REC FLAGS.
BSF RECFLAGS4, REC_RH19_BIT ;
CLRF RECFLAGS5 ;RH2 REC FLAGS.
CLRF RECFLAGS6 ;RH2 REC FLAGS.
CLRF RECFLAGS7 ;BASS BANK B REC FLAGS.
CLRF RECFLAGS8 ;CHORDS BANK B REC FLAGS.
MOVFF EEDATA, SNDTRI ;
RH123J42: ;.......................
BTFSC MIDISTAT, SNDTRY_FLAG ;SOUND-TRY-OUT MODE FLAG.
BRA RH123J5 ;IN SOUND-TRY-OUT MODE CONTINUE AS NORMAL.
MOVLW 0x04 ;3rd BUTTON MASK.
ANDWF RH12ONOFF_FLAGS, F ;CLEAR OTHER RH1 INSTRUMENTS.
CLRF RH11ONOFF_FLAGS ;CLEAR OTHER RH1 INSTRUMENTS.
BTG RH12ONOFF_FLAGS, 2 ;
BTFSS RH12ONOFF_FLAGS, 2 ;
BSF GENFLAGS1, MUTE1_FLAG ;
BTFSC RH12ONOFF_FLAGS, 2 ;
BCF GENFLAGS1, MUTE1_FLAG ;
;MUTE RH1.
BTFSS GENFLAGS1, MUTE1_FLAG ;
BRA RH123LEDON ;
MOVLW 0xB0 ;ALL SOUND OFF CHAN 1.
MOVWF CONTCHAN ;
MOVLW 0x78 ;
MOVWF CONTDB1 ;
CLRF CONTDB2 ;
BSF GENFLAGS1, MUTE_FLAG ;SENDS ALL SOUND OFF.
;
BCF DISPLAYREG, MUTE1LED ;RH1 ON LED, OFF.
BCF GENFLAGS2, CH5ON_FLAG ;Ch5 OFF AS WELL.
BRA RH123J5 ;
RH123LEDON: ;
BSF DISPLAYREG, MUTE1LED ;RH1 ON LED, ON .
BTFSC MIDISTAT2, CH5COND_FLAG ;
BSF GENFLAGS2, CH5ON_FLAG ;Ch5 ON AS WELL.
RH123J5: ;...................................
MOVFF EEDATA, PROGCHHOLD2 ;
BTFSS PROGCHHOLD2, 7 ;IF >0x7F IT IS A BLANK SOUND.
BCF GENFLAGS4, BLANK_RH1_FLAG;
BTFSC PROGCHHOLD2, 7 ;
BSF GENFLAGS4, BLANK_RH1_FLAG;RH1 MUTE (BLANK SOUND).
MOVLW 0xC0 ;PROG CHANGE CHAN 1.
MOVWF PROGCHHOLD1 ;
;
CALL RH1SOUND9 ;
;
BCF GENFLAGS1, RH1OCTBIT ;
BCF GENFLAGS5, RH1OCTUPBIT ;UP OCTAVE OFF.
;
BTFSS GENFLAGS1, MUTE1_FLAG ;
BSF GENFLAGS2, CH5ON_FLAG ;EXTRA LAYER ON Ch5 ON OR OFF.
BSF MIDISTAT2, CH5COND_FLAG ;HOLDS CH5 ON/OFF STATUS.
;
BCF GENFLAGS8, RH1L3EN ;TURN OFF RH1 LAYER 3.
;
BSF SCANSTAT, 0 ;SET BASS PROG SENT FLAG.
GOTO SCANEND ;
;........................................................................................................................................................................................
RH12INSTR4: ;
BTFSS WREG, 3 ;
BRA RH12INSTR5 ;
;
MOVF PORTC, W ;
MOVWF PEDTEMP ;
ANDLW 0x02 ;ASSIGN FSW1.
BZ RH124J1 ;
CALL FSW1ASIGNCLEAR ;
BSF FSW1ASIGNREG12, FSW1_RH124_BIT;
MOVFF FSW1ASIGNREG12, EEDATA ;VALUE TO WRITE.
MOVLW 0x6C ;
MOVWF EEADR ;DATA MEMORY TO WRITE TO.
CALL EEPROM_WRITE ;
GOTO SCANEND ;
RH124J1: ;
MOVF PEDTEMP, W ;
ANDLW 0x01 ;ASSIGN FSW2.
BZ RH124J2 ;
CALL FSW2ASIGNCLEAR ;
BSF FSW2ASIGNREG12, FSW2_RH124_BIT;
MOVFF FSW2ASIGNREG12, EEDATA ;VALUE TO WRITE.
MOVLW 0x6D ;
MOVWF EEADR ;DATA MEMORY TO WRITE TO.
CALL EEPROM_WRITE ;
GOTO SCANEND ;
RH124J2: ;
MOVF PEDTEMP, W ;
ANDLW 0x04 ;ASSIGN FSW3.
BZ RH124J3 ;
CALL FSW3ASIGNCLEAR ;
BSF FSW3ASIGNREG12, FSW3_RH124_BIT;
MOVFF FSW3ASIGNREG12, EEDATA ;VALUE TO WRITE.
MOVLW 0x6E ;
MOVWF EEADR ;DATA MEMORY TO WRITE TO.
CALL EEPROM_WRITE ;
GOTO SCANEND ;
RH124J3: ;
MOVF PORTA, W ;
ANDLW 0x10 ;ASSIGN FSW4.
BZ RH124J4 ;
CALL FSW4ASIGNCLEAR ;
BSF FSW4ASIGNREG12, FSW4_RH124_BIT;
MOVFF FSW4ASIGNREG12, EEDATA ;VALUE TO WRITE.
MOVLW 0x6F ;
MOVWF EEADR ;DATA MEMORY TO WRITE TO.
CALL EEPROM_WRITE ;
GOTO SCANEND ;
;
RH124J4: ;
CALL RH1SOUND10L2 ;
;
BTFSS MIDISTAT, SNDTRY_FLAG ;SOUND TRY OUT MODE FLAG.
BRA RH124J41 ;
BTFSS RECFLAGS4, REC_RH110_BIT ;
BRA RH124J41 ;
MOVLW 0x39 ;EEPROM REVERB LEVEL ADDRESS.
MOVWF EEADR ;DATA MEMORY TO WRITE TO.
MOVF RH1FXPOT, W ;
MOVWF EEDATA ;VALUE TO WRITE.
CALL EEPROM_WRITE ;
;
MOVLW 0x15 ;EEPROM CHORD1 ADDRESS.
MOVWF EEADR ;DATA MEMORY TO WRITE TO.
MOVF SNDTRI, W ;
MOVWF EEDATA ;VALUE TO WRITE.
CALL EEPROM_WRITE ;
;
RH124J41: ;
MOVLW 0x15 ;EEPROM ADDRESS.
MOVWF EEADR ;
BCF EECON1, EEPGD ;SELECT DATA EEPROM MEMORY.
BCF EECON1, CFGS ;
BSF EECON1, RD ;ENABLE EEPROM READ.
;VALUE IN EEDATA.
;
BTFSS MIDISTAT, SNDTRY_FLAG ;SOUND TRY OUT MODE FLAG.
BRA RH124J42 ;
CLRF RECFLAGS1 ;BASS REC FLAGS.
CLRF RECFLAGS2 ;CHORD REC FLAGS.
CLRF RECFLAGS3 ;RH1 REC FLAGS.
CLRF RECFLAGS4 ;RH1 REC FLAGS.
BSF RECFLAGS4, REC_RH110_BIT;
CLRF RECFLAGS5 ;RH2 REC FLAGS.
CLRF RECFLAGS6 ;RH2 REC FLAGS.
CLRF RECFLAGS7 ;BASS BANK B REC FLAGS.
CLRF RECFLAGS8 ;CHORDS BANK B REC FLAGS.
MOVFF EEDATA, SNDTRI ;
RH124J42: ;........................
BTFSC MIDISTAT, SNDTRY_FLAG ;SOUND-TRY-OUT MODE FLAG.
BRA RH124J5 ;IN SOUND-TRY-OUT MODE CONTINUE AS NORMAL.
MOVLW 0x08 ;4th BUTTON MASK.
ANDWF RH12ONOFF_FLAGS, F ;CLEAR OTHER RH1 INSTRUMENTS.
CLRF RH11ONOFF_FLAGS ;CLEAR OTHER RH1 INSTRUMENTS.
BTG RH12ONOFF_FLAGS, 3 ;
BTFSS RH12ONOFF_FLAGS, 3 ;
BSF GENFLAGS1, MUTE1_FLAG ;
BTFSC RH12ONOFF_FLAGS, 3 ;
BCF GENFLAGS1, MUTE1_FLAG ;
;MUTE RH1.
BTFSS GENFLAGS1, MUTE1_FLAG ;
BRA RH124LEDON ;
MOVLW 0xB0 ;ALL SOUND OFF CHAN 1.
MOVWF CONTCHAN ;
MOVLW 0x78 ;
MOVWF CONTDB1 ;
CLRF CONTDB2 ;
BSF GENFLAGS1, MUTE_FLAG ;SENDS ALL SOUND OFF.
;
BCF DISPLAYREG, MUTE1LED ;RH1 ON LED, OFF.
BCF GENFLAGS2, CH5ON_FLAG ;Ch5 OFF AS WELL.
BRA RH124J5 ;
RH124LEDON: ;
BSF DISPLAYREG, MUTE1LED ;RH1 ON LED, ON .
BTFSC MIDISTAT2, CH5COND_FLAG ;
BSF GENFLAGS2, CH5ON_FLAG ;Ch5 ON AS WELL.
RH124J5: ;...................................
MOVFF EEDATA, PROGCHHOLD2 ;
BTFSS PROGCHHOLD2, 7 ;IF >0x7F IT IS A BLANK SOUND.
BCF GENFLAGS4, BLANK_RH1_FLAG;
BTFSC PROGCHHOLD2, 7 ;
BSF GENFLAGS4, BLANK_RH1_FLAG;RH1 MUTE (BLANK SOUND).
MOVLW 0xC0 ;PROG CHANGE CHAN 1.
MOVWF PROGCHHOLD1 ;
;
CALL RH1SOUND10 ;
;
BCF GENFLAGS1, RH1OCTBIT ;
BCF GENFLAGS5, RH1OCTUPBIT ;UP OCTAVE OFF.
;
BTFSS GENFLAGS1, MUTE1_FLAG ;
BSF GENFLAGS2, CH5ON_FLAG ;EXTRA LAYER ON Ch5 ON OR OFF.
BSF MIDISTAT2, CH5COND_FLAG ;HOLDS CH5 ON/OFF STATUS.
;
;BTFSC GENFLAGS1, MUTE1_FLAG ;
;BCF GENFLAGS8, RH1L3EN ;TURN OFF RH1 LAYER 3.
;
BSF SCANSTAT, 0 ;SET PROG SENT FLAG.
GOTO SCANEND ;
;........................................................................................................................................................................................
RH12INSTR5: ;
BTFSS WREG, 4 ;
BRA RH12INSTR6 ;
;
MOVF PORTC, W ;
MOVWF PEDTEMP ;
ANDLW 0x02 ;ASSIGN FSW1.
BZ RH125J1 ;
CALL FSW1ASIGNCLEAR ;
BSF FSW1ASIGNREG12, FSW1_RH125_BIT;
MOVFF FSW1ASIGNREG12, EEDATA ;VALUE TO WRITE.
MOVLW 0x6C ;
MOVWF EEADR ;DATA MEMORY TO WRITE TO.
CALL EEPROM_WRITE ;
GOTO SCANEND ;
RH125J1: ;
MOVF PEDTEMP, W ;
ANDLW 0x01 ;ASSIGN FSW2.
BZ RH125J2 ;
CALL FSW2ASIGNCLEAR ;
BSF FSW2ASIGNREG12, FSW2_RH125_BIT;
MOVFF FSW2ASIGNREG12, EEDATA ;VALUE TO WRITE.
MOVLW 0x6D ;
MOVWF EEADR ;DATA MEMORY TO WRITE TO.
CALL EEPROM_WRITE ;
GOTO SCANEND ;
RH125J2: ;
MOVF PEDTEMP, W ;
ANDLW 0x04 ;ASSIGN FSW3.
BZ RH125J3 ;
CALL FSW3ASIGNCLEAR ;
BSF FSW3ASIGNREG12, FSW3_RH125_BIT;
MOVFF FSW3ASIGNREG12, EEDATA ;VALUE TO WRITE.
MOVLW 0x6E ;
MOVWF EEADR ;DATA MEMORY TO WRITE TO.
CALL EEPROM_WRITE ;
GOTO SCANEND ;
RH125J3: ;
MOVF PORTA, W ;
ANDLW 0x10 ;ASSIGN FSW4.
BZ RH125J4 ;
CALL FSW4ASIGNCLEAR ;
BSF FSW4ASIGNREG12, FSW4_RH125_BIT;
MOVFF FSW4ASIGNREG12, EEDATA ;VALUE TO WRITE.
MOVLW 0x6F ;
MOVWF EEADR ;DATA MEMORY TO WRITE TO.
CALL EEPROM_WRITE ;
GOTO SCANEND ;
;
RH125J4: ;
BTFSS MIDISTAT, SNDTRY_FLAG ;SOUND TRY OUT MODE FLAG.
BRA RH125J41 ;
BTFSS RECFLAGS4, REC_RH111_BIT;
BRA RH125J41 ;
MOVLW 0x3A ;EEPROM REVERB LEVEL ADDRESS.
MOVWF EEADR ;DATA MEMORY TO WRITE TO.
MOVF RH1FXPOT, W ;
MOVWF EEDATA ;VALUE TO WRITE.
CALL EEPROM_WRITE ;
;
MOVLW 0x16 ;EEPROM CHORD1 ADDRESS.
MOVWF EEADR ;DATA MEMORY TO WRITE TO.
MOVF SNDTRI, W ;
MOVWF EEDATA ;VALUE TO WRITE.
CALL EEPROM_WRITE ;
;
RH125J41: ;
MOVLW 0x16 ;EEPROM ADDRESS.
MOVWF EEADR ;
BCF EECON1, EEPGD ;SELECT DATA EEPROM MEMORY.
BCF EECON1, CFGS ;
BSF EECON1, RD ;ENABLE EEPROM READ.
;VALUE IN EEDATA.
;
BTFSS MIDISTAT, SNDTRY_FLAG ;SOUND TRY OUT MODE FLAG.
BRA RH125J42 ;
CLRF RECFLAGS1 ;BASS REC FLAGS.
CLRF RECFLAGS2 ;CHORD REC FLAGS.
CLRF RECFLAGS3 ;RH1 REC FLAGS.
CLRF RECFLAGS4 ;RH1 REC FLAGS.
BSF RECFLAGS4, REC_RH111_BIT;
CLRF RECFLAGS5 ;RH2 REC FLAGS.
CLRF RECFLAGS6 ;RH2 REC FLAGS.
CLRF RECFLAGS7 ;BASS BANK B REC FLAGS.
CLRF RECFLAGS8 ;CHORDS BANK B REC FLAGS.
MOVFF EEDATA, SNDTRI ;
RH125J42: ;
BTFSC MIDISTAT, SNDTRY_FLAG ;SOUND-TRY-OUT MODE FLAG.
BRA RH125J5 ;IN SOUND-TRY-OUT MODE CONTINUE AS NORMAL.
MOVLW 0x10 ;1st BUTTON MASK.
ANDWF RH12ONOFF_FLAGS, F ;CLEAR OTHER RH1 INSTRUMENTS.
CLRF RH11ONOFF_FLAGS ;CLEAR OTHER RH1 INSTRUMENTS.
BTG RH12ONOFF_FLAGS, 4 ;
BTFSS RH12ONOFF_FLAGS, 4 ;
BSF GENFLAGS1, MUTE1_FLAG ;
BTFSC RH12ONOFF_FLAGS, 4 ;
BCF GENFLAGS1, MUTE1_FLAG ;
;MUTE RH1.
BTFSS GENFLAGS1, MUTE1_FLAG ;
BRA RH125LEDON ;
MOVLW 0xB0 ;ALL SOUND OFF CHAN 1.
MOVWF CONTCHAN ;
MOVLW 0x78 ;
MOVWF CONTDB1 ;
CLRF CONTDB2 ;
BSF GENFLAGS1, MUTE_FLAG ;SENDS ALL SOUND OFF.
;
BCF DISPLAYREG, MUTE1LED ;RH1 ON LED, OFF.
BCF GENFLAGS2, CH5ON_FLAG ;Ch5 OFF AS WELL.
BRA RH125J5 ;
RH125LEDON: ;
BSF DISPLAYREG, MUTE1LED ;RH1 ON LED, ON .
BTFSC MIDISTAT2, CH5COND_FLAG ;
BSF GENFLAGS2, CH5ON_FLAG ;Ch5 ON AS WELL.
RH125J5: ;...................................
MOVFF EEDATA, PROGCHHOLD2 ;
BTFSS PROGCHHOLD2, 7 ;IF >0x7F IT IS A BLANK SOUND.
BCF GENFLAGS4, BLANK_RH1_FLAG;
BTFSC PROGCHHOLD2, 7 ;
BSF GENFLAGS4, BLANK_RH1_FLAG;RH1 MUTE (BLANK SOUND).
MOVLW 0xC0 ;PROG CHANGE CHAN 1.
MOVWF PROGCHHOLD1 ;
;
CALL RH1SOUND11 ;
;
BCF GENFLAGS1, RH1OCTBIT ;
BCF GENFLAGS5, RH1OCTUPBIT ;UP OCTAVE OFF.
;
BCF GENFLAGS2, CH5ON_FLAG ;EXTRA LAYER ON Ch5 ON OR OFF.
BCF MIDISTAT2, CH5COND_FLAG ;HOLDS CH5 ON/OFF STATUS.
;
;BTFSC GENFLAGS1, MUTE1_FLAG ;STOPS BUTTON PRESS ENABLING Ch5.
;BCF GENFLAGS8, RH1L3EN ;TURN OFF RH1 LAYER 3.
;
BSF SCANSTAT, 0 ;SET BASS PROG SENT FLAG.
GOTO SCANEND ;
;........................................................................................................................................................................................
RH12INSTR6: ;
BTFSS WREG, 5 ;
BRA RH12INSMUTE ;
;
MOVF PORTC, W ;
MOVWF PEDTEMP ;
ANDLW 0x02 ;ASSIGN FSW1.
BZ RH126J1 ;
CALL FSW1ASIGNCLEAR ;
BSF FSW1ASIGNREG12, FSW1_RH126_BIT;
MOVFF FSW1ASIGNREG12, EEDATA ;VALUE TO WRITE.
MOVLW 0x6C ;
MOVWF EEADR ;DATA MEMORY TO WRITE TO.
CALL EEPROM_WRITE ;
GOTO SCANEND ;
RH126J1: ;
MOVF PEDTEMP, W ;
ANDLW 0x01 ;ASSIGN FSW2.
BZ RH126J2 ;
CALL FSW2ASIGNCLEAR ;
BSF FSW2ASIGNREG12, FSW2_RH126_BIT;
MOVFF FSW2ASIGNREG12, EEDATA ;VALUE TO WRITE.
MOVLW 0x6D ;
MOVWF EEADR ;DATA MEMORY TO WRITE TO.
CALL EEPROM_WRITE ;
GOTO SCANEND ;
RH126J2: ;
MOVF PEDTEMP, W ;
ANDLW 0x04 ;ASSIGN FSW3.
BZ RH126J3 ;
CALL FSW3ASIGNCLEAR ;
BSF FSW3ASIGNREG12, FSW3_RH126_BIT;
MOVFF FSW3ASIGNREG12, EEDATA ;VALUE TO WRITE.
MOVLW 0x6E ;
MOVWF EEADR ;DATA MEMORY TO WRITE TO.
CALL EEPROM_WRITE ;
GOTO SCANEND ;
RH126J3: ;
MOVF PORTA, W ;
ANDLW 0x10 ;ASSIGN FSW4.
BZ RH126J4 ;
CALL FSW4ASIGNCLEAR ;
BSF FSW4ASIGNREG12, FSW4_RH126_BIT;
MOVFF FSW4ASIGNREG12, EEDATA ;VALUE TO WRITE.
MOVLW 0x6F ;
MOVWF EEADR ;DATA MEMORY TO WRITE TO.
CALL EEPROM_WRITE ;
GOTO SCANEND ;
;
RH126J4: ;
CALL RH1SOUND12L2 ;
;
BTFSS MIDISTAT, SNDTRY_FLAG ;SOUND TRY OUT MODE FLAG.
BRA RH126J41 ;
BTFSS RECFLAGS4, REC_RH112_BIT ;
BRA RH126J41 ;
MOVLW 0x3B ;EEPROM REVERB LEVEL ADDRESS.
MOVWF EEADR ;DATA MEMORY TO WRITE TO.
MOVF RH1FXPOT, W ;
MOVWF EEDATA ;VALUE TO WRITE.
CALL EEPROM_WRITE ;
;
MOVLW 0x17 ;EEPROM CHORD1 ADDRESS.
MOVWF EEADR ;DATA MEMORY TO WRITE TO.
MOVF SNDTRI, W ;
MOVWF EEDATA ;VALUE TO WRITE.
CALL EEPROM_WRITE ;
;
RH126J41: ;
MOVLW 0x17 ;EEPROM ADDRESS.
MOVWF EEADR ;
BCF EECON1, EEPGD ;SELECT DATA EEPROM MEMORY.
BCF EECON1, CFGS ;
BSF EECON1, RD ;ENABLE EEPROM READ.
;VALUE IN EEDATA.
BTFSS MIDISTAT, SNDTRY_FLAG ;SOUND TRY OUT MODE FLAG.
BRA RH126J42 ;
CLRF RECFLAGS1 ;BASS REC FLAGS.
CLRF RECFLAGS2 ;CHORD REC FLAGS.
CLRF RECFLAGS3 ;RH1 REC FLAGS.
CLRF RECFLAGS4 ;RH1 REC FLAGS.
BSF RECFLAGS4, REC_RH112_BIT;
CLRF RECFLAGS5 ;RH2 REC FLAGS.
CLRF RECFLAGS6 ;RH2 REC FLAGS.
CLRF RECFLAGS7 ;BASS BANK B REC FLAGS.
CLRF RECFLAGS8 ;CHORDS BANK B REC FLAGS.
MOVFF EEDATA, SNDTRI ;
RH126J42: ;
BTFSC MIDISTAT, SNDTRY_FLAG ;SOUND-TRY-OUT MODE FLAG.
BRA RH126J5 ;IN SOUND-TRY-OUT MODE CONTINUE AS NORMAL.
MOVLW 0x20 ;1st BUTTON MASK.
ANDWF RH12ONOFF_FLAGS, F ;CLEAR OTHER RH1 INSTRUMENTS.
CLRF RH11ONOFF_FLAGS ;CLEAR OTHER RH1 INSTRUMENTS.
BTG RH12ONOFF_FLAGS, 5 ;
BTFSS RH12ONOFF_FLAGS, 5 ;
BSF GENFLAGS1, MUTE1_FLAG ;
BTFSC RH12ONOFF_FLAGS, 5 ;
BCF GENFLAGS1, MUTE1_FLAG ;
;MUTE RH1.
BTFSS GENFLAGS1, MUTE1_FLAG ;
BRA RH126LEDON ;
MOVLW 0xB0 ;ALL SOUND OFF CHAN 1.
MOVWF CONTCHAN ;
MOVLW 0x78 ;
MOVWF CONTDB1 ;
CLRF CONTDB2 ;
BSF GENFLAGS1, MUTE_FLAG ;SENDS ALL SOUND OFF.
;
BCF DISPLAYREG, MUTE1LED ;RH1 ON LED, OFF.
BCF GENFLAGS2, CH5ON_FLAG ;Ch5 OFF AS WELL.
BRA RH126J5 ;
RH126LEDON: ;
BSF DISPLAYREG, MUTE1LED ;RH1 ON LED, ON .
BTFSC MIDISTAT2, CH5COND_FLAG ;
BSF GENFLAGS2, CH5ON_FLAG ;Ch5 ON AS WELL.
RH126J5: ;...................................
MOVFF EEDATA, PROGCHHOLD2 ;
BTFSS PROGCHHOLD2, 7 ;IF >0x7F IT IS A BLANK SOUND.
BCF GENFLAGS4, BLANK_RH1_FLAG;
BTFSC PROGCHHOLD2, 7 ;
BSF GENFLAGS4, BLANK_RH1_FLAG;RH1 MUTE (BLANK SOUND).
MOVLW 0xC0 ;PROG CHANGE CHAN 1.
MOVWF PROGCHHOLD1 ;
;
CALL RH1SOUND12 ;
;
BTFSS GENFLAGS1, MUTE1_FLAG ;STOPS BUTTON PRESS ENABLING Ch5.
BSF GENFLAGS2, CH5ON_FLAG ;EXTRA LAYER ON Ch5 ON OR OFF.
BSF MIDISTAT2, CH5COND_FLAG ;HOLDS CH5 ON/OFF STATUS.
;
;BTFSC GENFLAGS1, MUTE1_FLAG ;STOPS BUTTON PRESS ENABLING Ch5.
;BCF GENFLAGS8, RH1L3EN ;TURN OFF RH1 LAYER 3.
;
BCF GENFLAGS1, RH1OCTBIT ;
BCF GENFLAGS5, RH1OCTUPBIT ;UP OCTAVE OFF.
;
BSF SCANSTAT, 0 ;SET PROG SENT FLAG.
;
GOTO SCANEND ;
;........................................................................................................................................................................................
RH12INSMUTE: ;
BTFSS WREG, 6 ;MUTE RH1 BUTTON.
BRA RH128 ;
;
MOVF PORTC, W ;
MOVWF PEDTEMP ;
ANDLW 0x02 ;ASSIGN FSW1.
BZ RH12RES1 ;
CALL FSW1ASIGNCLEAR ;
BSF FSW1ASIGNREG, FSW1_MRH1_BIT;
MOVFF FSW1ASIGNREG, EEDATA ;VALUE TO WRITE.
MOVLW 0x78 ;
MOVWF EEADR ;DATA MEMORY TO WRITE TO.
CALL EEPROM_WRITE ;
BRA RH1END ;
RH12RES1: ;
MOVF PEDTEMP, W ;
ANDLW 0x01 ;ASSIGN FSW2.
BZ RH12RES2 ;
CALL FSW2ASIGNCLEAR ;
BSF FSW2ASIGNREG, FSW2_MRH1_BIT;
MOVFF FSW2ASIGNREG, EEDATA ;VALUE TO WRITE.
MOVLW 0x79 ;
MOVWF EEADR ;DATA MEMORY TO WRITE TO.
CALL EEPROM_WRITE ;
BRA RH1END ;
RH12RES2: ;
MOVF PEDTEMP, W ;
ANDLW 0x04 ;ASSIGN FSW3.
BZ RH12RES3 ;
CALL FSW3ASIGNCLEAR ;
BSF FSW3ASIGNREG, FSW3_MRH1_BIT;
MOVFF FSW3ASIGNREG, EEDATA ;VALUE TO WRITE.
MOVLW 0x7A ;
MOVWF EEADR ;DATA MEMORY TO WRITE TO.
CALL EEPROM_WRITE ;
BRA RH1END ;
RH12RES3: ;
MOVF PORTA, W ;
ANDLW 0x10 ;ASSIGN FSW4.
BZ RH12RES4 ;
CALL FSW4ASIGNCLEAR ;
BSF FSW4ASIGNREG, FSW4_MRH1_BIT;
MOVFF FSW4ASIGNREG, EEDATA ;VALUE TO WRITE.
MOVLW 0x7B ;
MOVWF EEADR ;DATA MEMORY TO WRITE TO.
CALL EEPROM_WRITE ;
BRA RH1END ;
;
RH12RES4: ;<
BTFSS MIDISTAT, SNDTRY_FLAG ;SOUND TRY OUT MODE.
BRA RH127J1 ;
BSF GENFLAGS10, STM_MUTDEC_FLAG;
BRA RH1END ;
RH127J1: ;
;.............
BCF GENFLAGS6, RHINSTCHNG ;STOP RH CHANGE ALERT.
BTFSS GENFLAGS3, MUTOG_FLAG ;
BRA RH12MT ;
BCF GENFLAGS3, MUTOG_FLAG ;NORMAL MUTE.
BRA RH1END ;
RH12MT: ;
BTG GENFLAGS1, MUTE1_FLAG ;
BTFSS GENFLAGS1, MUTE1_FLAG ;
BRA RH12LEDON ;
MOVLW 0xB0 ;ALL SOUND OFF CHAN 1.
MOVWF CONTCHAN ;
MOVLW 0x78 ;
MOVWF CONTDB1 ;
CLRF CONTDB2 ;
BSF GENFLAGS1, MUTE_FLAG ;SENDS ALL SOUND OFF.
;
BCF DISPLAYREG, MUTE1LED ;RH1 ON LED, OFF.
BCF GENFLAGS2, CH5ON_FLAG ;Ch5 OFF AS WELL.
;
CLRF RH12ONOFF_FLAGS ;
CLRF RH11ONOFF_FLAGS ;
GOTO SCANEND ;
RH12LEDON: ;
BSF DISPLAYREG, MUTE1LED ;RH1 ON LED, ON .
BTFSC MIDISTAT2, CH5COND_FLAG ;
BSF GENFLAGS2, CH5ON_FLAG ;Ch5 ON AS WELL.
RH1END: ;
GOTO SCANEND ;
;........................................................................................
RH128: ;SOLO BUTTON.
BTFSS WREG, 7 ;
BRA RH21_SCAN ;
;
MOVF PORTC, W ;
MOVWF PEDTEMP ;
ANDLW 0x02 ;ASSIGN FSW1.
BZ RH128J1 ;
CALL FSW1ASIGNCLEAR ;
BSF FSW1ASIGNREG12, FSW1_RH128_BIT;
MOVFF FSW1ASIGNREG12, EEDATA ;VALUE TO WRITE.
MOVLW 0x6C ;
MOVWF EEADR ;DATA MEMORY TO WRITE TO.
CALL EEPROM_WRITE ;
BRA RH1END ;
RH128J1: ;
MOVF PEDTEMP, W ;
ANDLW 0x01 ;ASSIGN FSW2.
BZ RH128J2 ;
CALL FSW2ASIGNCLEAR ;
BSF FSW2ASIGNREG12, FSW2_RH128_BIT;
MOVFF FSW2ASIGNREG12, EEDATA ;VALUE TO WRITE.
MOVLW 0x6D ;
MOVWF EEADR ;DATA MEMORY TO WRITE TO.
CALL EEPROM_WRITE ;
BRA RH1END ;
RH128J2: ;
MOVF PEDTEMP, W ;
ANDLW 0x04 ;ASSIGN FSW3.
BZ RH128J3 ;
CALL FSW3ASIGNCLEAR ;
BSF FSW3ASIGNREG12, FSW3_RH128_BIT;
MOVFF FSW3ASIGNREG12, EEDATA ;VALUE TO WRITE.
MOVLW 0x6E ;
MOVWF EEADR ;DATA MEMORY TO WRITE TO.
CALL EEPROM_WRITE ;
BRA RH1END ;
RH128J3: ;
MOVF PORTA, W ;
ANDLW 0x10 ;ASSIGN FSW4.
BZ RH128J4 ;
CALL FSW4ASIGNCLEAR ;
BSF FSW4ASIGNREG12, FSW4_RH128_BIT;
MOVFF FSW4ASIGNREG12, EEDATA ;VALUE TO WRITE.
MOVLW 0x6F ;
MOVWF EEADR ;DATA MEMORY TO WRITE TO.
CALL EEPROM_WRITE ;
BRA RH128END ;
;
RH128J4: ;<
BTG GENFLAGS11, SOLOSTAT_BIT ;
;
BTFSS GENFLAGS11, SOLOSTAT_BIT ;
BRA RH128J10 ;
MOVLW 0xEA ;EEPROM SOLO VOLUME ADDRESS.
CALL EEPROM_READ ;
MOVWF SOLOVAL ;
CALL SEND_EXPR ;SEND SOLO VALUE.
BCF GENFLAGS6, RHINSTCHNG ;STOP (NO) RH CHANGE ALERT (TO LEAVE TREM ON).
BRA RH128END ;
;
RH128J10: ;
MOVLW 0x58 ;
MOVWF SOLOVAL ;
CALL SEND_EXPR ;SEND NORMALDFAULT VOLUME VALUE.
;
BCF GENFLAGS6, RHINSTCHNG ;STOP (NO) RH CHANGE ALERT (TO LEAVE TREM ON).
RH128END: ;
GOTO SCANEND ;
;................................................................................................................................................................................................................
RH21_SCAN: ;
MOVLW 0x02 ;RB1, ENABLE RH21 BUSS.
MOVWF PORTB ;
NOP ;
NOP ;
NOP ;
NOP ;
MOVF PORTD, W ;TO WREG.
CLRF PORTB ;
MOVWF SCANTEMP1 ;
XORWF RH21SCANHOLD, 0 ;RESULT IN W.
MOVFF SCANTEMP1, RH21SCANHOLD ;
BNZ RH210J1 ;NO CHANGE IN SCAN.
GOTO RH22_SCAN ;NO CHANGE IN SCAN.
RH210J1: ;
MOVFF RH21SCANHOLD, RH21_OFF_FLAGS ;
COMF RH21_OFF_FLAGS, F ;
ANDWF RH21_OFF_FLAGS, F ;CHANGES TO OFF STORED.
;
ANDWF SCANTEMP1, W ;CHANGE TO ON NOW IN W.
MOVWF RH21_ON_FLAGS ;STORE CHANGES TO ON.
BZ RH210J2 ;
BSF GENFLAGS6, RHINSTCHNG ;
BSF GENFLAGS10, DIP_CHNG_LED ;Dip control change led.
RH210J2: ;
;........................................................................
BTFSS WREG, 0 ;
GOTO RH21INSTR2 ;
;
MOVF PORTC, W ;
MOVWF PEDTEMP ;
ANDLW 0x02 ;ASSIGN FSW1.
BZ RH211J1 ;
CALL FSW1ASIGNCLEAR ;
BSF FSW1ASIGNREG21, FSW1_RH211_BIT;
MOVFF FSW1ASIGNREG21, EEDATA ;VALUE TO WRITE.
MOVLW 0x70 ;
MOVWF EEADR ;DATA MEMORY TO WRITE TO.
CALL EEPROM_WRITE ;
GOTO SCANEND ;
RH211J1: ;
MOVF PEDTEMP, W ;
ANDLW 0x01 ;ASSIGN FSW2.
BZ RH211J2 ;
CALL FSW2ASIGNCLEAR ;
BSF FSW2ASIGNREG21, FSW2_RH211_BIT;
MOVFF FSW2ASIGNREG21, EEDATA ;VALUE TO WRITE.
MOVLW 0x71 ;
MOVWF EEADR ;DATA MEMORY TO WRITE TO.
CALL EEPROM_WRITE ;
GOTO SCANEND ;
RH211J2: ;
MOVF PEDTEMP, W ;
ANDLW 0x04 ;ASSIGN FSW3.
BZ RH211J3 ;
CALL FSW3ASIGNCLEAR ;
BSF FSW3ASIGNREG21, FSW3_RH211_BIT;
MOVFF FSW3ASIGNREG21, EEDATA ;VALUE TO WRITE.
MOVLW 0x72 ;
MOVWF EEADR ;DATA MEMORY TO WRITE TO.
CALL EEPROM_WRITE ;
GOTO SCANEND ;
RH211J3: ;
MOVF PORTA, W ;
ANDLW 0x10 ;ASSIGN FSW4.
BZ RH211J4 ;
CALL FSW4ASIGNCLEAR ;
BSF FSW4ASIGNREG21, FSW4_RH211_BIT;
MOVFF FSW4ASIGNREG21, EEDATA ;VALUE TO WRITE.
MOVLW 0x73 ;
MOVWF EEADR ;DATA MEMORY TO WRITE TO.
CALL EEPROM_WRITE ;
GOTO SCANEND ;
;
RH211J4: ;
BTFSS MIDISTAT, SNDTRY_FLAG ;SOUND TRY OUT MODE FLAG.
BRA RH211J41 ;
BTFSS RECFLAGS5, REC_RH21_BIT ;
BRA RH211J41 ;
MOVLW 0x3C ;EEPROM REVERB LEVEL ADDRESS.
MOVWF EEADR ;DATA MEMORY TO WRITE TO.
MOVF RH2FXPOT, W ;
MOVWF EEDATA ;VALUE TO WRITE.
CALL EEPROM_WRITE ;
;
MOVLW 0x18 ;EEPROM CHORD1 ADDRESS.
MOVWF EEADR ;DATA MEMORY TO WRITE TO.
MOVF SNDTRI, W ;
MOVWF EEDATA ;VALUE TO WRITE.
CALL EEPROM_WRITE ;
;
RH211J41: ;
MOVLW 0x18 ;EEPROM ADDRESS.
MOVWF EEADR ;
BCF EECON1, EEPGD ;SELECT DATA EEPROM MEMORY.
BCF EECON1, CFGS ;
BSF EECON1, RD ;ENABLE EEPROM READ.
;VALUE IN EEDATA.
;
BTFSS MIDISTAT, SNDTRY_FLAG ;SOUND TRY OUT MODE FLAG.
BRA RH211J42 ;
CLRF RECFLAGS1 ;BASS REC FLAGS.
CLRF RECFLAGS2 ;CHORD REC FLAGS.
CLRF RECFLAGS3 ;RH1 REC FLAGS.
CLRF RECFLAGS4 ;RH1 REC FLAGS.
CLRF RECFLAGS5 ;RH2 REC FLAGS.
BSF RECFLAGS5, REC_RH21_BIT ;
CLRF RECFLAGS6 ;RH2 REC FLAGS.
CLRF RECFLAGS7 ;BASS BANK B REC FLAGS.
CLRF RECFLAGS8 ;CHORDS BANK B REC FLAGS.
MOVFF EEDATA, SNDTRI ;
RH211J42: ;..........................
BTFSC MIDISTAT, SNDTRY_FLAG ;SOUND-TRY-OUT MODE FLAG.
BRA RH211J5 ;IN SOUND-TRY-OUT MODE CONTINUE AS NORMAL.
MOVLW 0x01 ;1st BUTTON MASK.
ANDWF RH21ONOFF_FLAGS, F ;CLEAR OTHER RH2 INSTRUMENTS.
CLRF RH22ONOFF_FLAGS ;CLEAR OTHER RH2 INSTRUMENTS.
BTG RH21ONOFF_FLAGS, 0 ;
BTFSS RH21ONOFF_FLAGS, 0 ;
BSF GENFLAGS1, MUTE2_FLAG ;
BTFSC RH21ONOFF_FLAGS, 0 ;
BCF GENFLAGS1, MUTE2_FLAG ;
;MUTE RH1.
BTFSS GENFLAGS1, MUTE2_FLAG ;
BRA RH211LEDON ;
MOVLW 0xB3 ;ALL SOUND OFF CHAN 4.
MOVWF CONTCHAN ;
MOVLW 0x78 ;
MOVWF CONTDB1 ;
CLRF CONTDB2 ;
BSF GENFLAGS1, MUTE_FLAG ;SENDS ALL SOUND OFF.
BCF DISPLAYREG, MUTE2LED ;RH2 ON LED, OFF.
BRA RH211J5 ;
RH211LEDON: ;
BSF DISPLAYREG, MUTE2LED ;RH2 ON LED, ON .
RH211J5: ;...................................
MOVFF EEDATA, PROGCHHOLD2 ;
BTFSS PROGCHHOLD2, 7 ;IF >0x7F IT IS A BLANK SOUND.
BCF GENFLAGS4, BLANK_RH2_FLAG;
BTFSC PROGCHHOLD2, 7 ;
BSF GENFLAGS4, BLANK_RH2_FLAG;RH2 MUTE (BLANK SOUND).
MOVLW 0xC3 ;PROG CHANGE CHAN 4.
MOVWF PROGCHHOLD1 ;
BSF SCANSTAT, 0 ;SET PROG SEND FLAG.
;
CALL RH2SOUND1 ;
;
GOTO SCANEND ;
;........................................................................................................................................................................................
RH21INSTR2: ;
BTFSS WREG, 1 ;
BRA RH21INSTR3 ;
;
MOVF PORTC, W ;
MOVWF PEDTEMP ;
ANDLW 0x02 ;ASSIGN FSW1.
BZ RH212J1 ;
CALL FSW1ASIGNCLEAR ;
BSF FSW1ASIGNREG21, FSW1_RH212_BIT;
MOVFF FSW1ASIGNREG21, EEDATA ;VALUE TO WRITE.
MOVLW 0x70 ;
MOVWF EEADR ;DATA MEMORY TO WRITE TO.
CALL EEPROM_WRITE ;
GOTO SCANEND ;
RH212J1: ;
MOVF PEDTEMP, W ;
ANDLW 0x01 ;ASSIGN FSW2.
BZ RH212J2 ;
CALL FSW2ASIGNCLEAR ;
BSF FSW2ASIGNREG21, FSW2_RH212_BIT;
MOVFF FSW2ASIGNREG21, EEDATA ;VALUE TO WRITE.
MOVLW 0x71 ;
MOVWF EEADR ;DATA MEMORY TO WRITE TO.
CALL EEPROM_WRITE ;
GOTO SCANEND ;
RH212J2: ;
MOVF PEDTEMP, W ;
ANDLW 0x04 ;ASSIGN FSW3.
BZ RH212J3 ;
CALL FSW3ASIGNCLEAR ;
BSF FSW3ASIGNREG21, FSW3_RH212_BIT;
MOVFF FSW3ASIGNREG21, EEDATA ;VALUE TO WRITE.
MOVLW 0x72 ;
MOVWF EEADR ;DATA MEMORY TO WRITE TO.
CALL EEPROM_WRITE ;
GOTO SCANEND ;
RH212J3: ;
MOVF PORTA, W ;
ANDLW 0x10 ;ASSIGN FSW4.
BZ RH212J4 ;
CALL FSW4ASIGNCLEAR ;
BSF FSW4ASIGNREG21, FSW4_RH212_BIT;
MOVFF FSW4ASIGNREG21, EEDATA ;VALUE TO WRITE.
MOVLW 0x73 ;
MOVWF EEADR ;DATA MEMORY TO WRITE TO.
CALL EEPROM_WRITE ;
GOTO SCANEND ;
;
RH212J4: ;
BTFSS MIDISTAT, SNDTRY_FLAG ;SOUND TRY OUT MODE FLAG.
BRA RH212J41 ;
BTFSS RECFLAGS5, REC_RH22_BIT ;
BRA RH212J41 ;
MOVLW 0x3D ;EEPROM REVERB LEVEL ADDRESS.
MOVWF EEADR ;DATA MEMORY TO WRITE TO.
MOVF RH2FXPOT, W ;
MOVWF EEDATA ;VALUE TO WRITE.
CALL EEPROM_WRITE ;
;
MOVLW 0x19 ;EEPROM CHORD1 ADDRESS.
MOVWF EEADR ;DATA MEMORY TO WRITE TO.
MOVF SNDTRI, W ;
MOVWF EEDATA ;VALUE TO WRITE.
CALL EEPROM_WRITE ;
;
RH212J41: ;
MOVLW 0x19 ;EEPROM ADDRESS.
MOVWF EEADR ;
BCF EECON1, EEPGD ;SELECT DATA EEPROM MEMORY.
BCF EECON1, CFGS ;
BSF EECON1, RD ;ENABLE EEPROM READ.
;VALUE IN EEDATA.
;
BTFSS MIDISTAT, SNDTRY_FLAG ;SOUND TRY OUT MODE FLAG.
BRA RH212J42 ;
CLRF RECFLAGS1 ;BASS REC FLAGS.
CLRF RECFLAGS2 ;CHORD REC FLAGS.
CLRF RECFLAGS3 ;RH1 REC FLAGS.
CLRF RECFLAGS4 ;RH1 REC FLAGS.
CLRF RECFLAGS5 ;RH2 REC FLAGS.
BSF RECFLAGS5, REC_RH22_BIT ;
CLRF RECFLAGS6 ;RH2 REC FLAGS.
CLRF RECFLAGS7 ;BASS BANK B REC FLAGS.
CLRF RECFLAGS8 ;CHORDS BANK B REC FLAGS.
MOVFF EEDATA, SNDTRI ;
RH212J42: ;
BTFSC MIDISTAT, SNDTRY_FLAG ;SOUND-TRY-OUT MODE FLAG.
BRA RH212J5 ;IN SOUND-TRY-OUT MODE CONTINUE AS NORMAL.
MOVLW 0x02 ;1st BUTTON MASK.
ANDWF RH21ONOFF_FLAGS, F ;CLEAR OTHER RH2 INSTRUMENTS.
CLRF RH22ONOFF_FLAGS ;CLEAR OTHER RH2 INSTRUMENTS.
BTG RH21ONOFF_FLAGS, 1 ;
BTFSS RH21ONOFF_FLAGS, 1 ;
BSF GENFLAGS1, MUTE2_FLAG ;
BTFSC RH21ONOFF_FLAGS, 1 ;
BCF GENFLAGS1, MUTE2_FLAG ;
;MUTE RH2.
BTFSS GENFLAGS1, MUTE2_FLAG ;
BRA RH212LEDON ;
MOVLW 0xB3 ;ALL SOUND OFF CHAN 4.
MOVWF CONTCHAN ;
MOVLW 0x78 ;
MOVWF CONTDB1 ;
CLRF CONTDB2 ;
BSF GENFLAGS1, MUTE_FLAG ;SENDS ALL SOUND OFF.
BCF DISPLAYREG, MUTE2LED ;RH2 ON LED, OFF.
BRA RH212J5 ;
RH212LEDON: ;
BSF DISPLAYREG, MUTE2LED ;RH2 ON LED, ON .
RH212J5: ;...................................
MOVFF EEDATA, PROGCHHOLD2 ;
BTFSS PROGCHHOLD2, 7 ;IF >0x7F IT IS A BLANK SOUND.
BCF GENFLAGS4, BLANK_RH2_FLAG;
BTFSC PROGCHHOLD2, 7 ;
BSF GENFLAGS4, BLANK_RH2_FLAG;RH2 MUTE (BLANK SOUND).
MOVLW 0xC3 ;PROG CHANGE CHAN 4.
MOVWF PROGCHHOLD1 ;
BSF SCANSTAT, 0 ;SET BASS PROG SENT FLAG.
;
CALL RH2SOUND2 ;
;
GOTO SCANEND ;
;........................................................................................................................................................................................
RH21INSTR3: ;
BTFSS WREG, 2 ;
GOTO RH21INSTR4 ;
;
MOVF PORTC, W ;
MOVWF PEDTEMP ;
ANDLW 0x02 ;ASSIGN FSW1.
BZ RH213J1 ;
CALL FSW1ASIGNCLEAR ;
BSF FSW1ASIGNREG21, FSW1_RH213_BIT;
MOVFF FSW1ASIGNREG21, EEDATA ;VALUE TO WRITE.
MOVLW 0x70 ;
MOVWF EEADR ;DATA MEMORY TO WRITE TO.
CALL EEPROM_WRITE ;
GOTO SCANEND ;
RH213J1: ;
MOVF PEDTEMP, W ;
ANDLW 0x01 ;ASSIGN FSW2.
BZ RH213J2 ;
CALL FSW2ASIGNCLEAR ;
BSF FSW2ASIGNREG21, FSW2_RH213_BIT;
MOVFF FSW2ASIGNREG21, EEDATA ;VALUE TO WRITE.
MOVLW 0x71 ;
MOVWF EEADR ;DATA MEMORY TO WRITE TO.
CALL EEPROM_WRITE ;
GOTO SCANEND ;
RH213J2: ;
MOVF PEDTEMP, W ;
ANDLW 0x04 ;ASSIGN FSW3.
BZ RH213J3 ;
CALL FSW3ASIGNCLEAR ;
BSF FSW3ASIGNREG21, FSW3_RH213_BIT;
MOVFF FSW3ASIGNREG21, EEDATA ;VALUE TO WRITE.
MOVLW 0x72 ;
MOVWF EEADR ;DATA MEMORY TO WRITE TO.
CALL EEPROM_WRITE ;
GOTO SCANEND ;
RH213J3: ;
MOVF PORTA, W ;
ANDLW 0x10 ;ASSIGN FSW4.
BZ RH213J4 ;
CALL FSW4ASIGNCLEAR ;
BSF FSW4ASIGNREG21, FSW4_RH213_BIT;
MOVFF FSW4ASIGNREG21, EEDATA ;VALUE TO WRITE.
MOVLW 0x73 ;
MOVWF EEADR ;DATA MEMORY TO WRITE TO.
CALL EEPROM_WRITE ;
GOTO SCANEND ;
;
RH213J4: ;
BTFSS MIDISTAT, SNDTRY_FLAG ;SOUND TRY OUT MODE FLAG.
BRA RH213J41 ;
BTFSS RECFLAGS5, REC_RH23_BIT ;
BRA RH213J41 ;
MOVLW 0x3E ;EEPROM REVERB LEVEL ADDRESS.
MOVWF EEADR ;DATA MEMORY TO WRITE TO.
MOVF RH2FXPOT, W ;
MOVWF EEDATA ;VALUE TO WRITE.
CALL EEPROM_WRITE ;
;
MOVLW 0x1A ;EEPROM CHORD1 ADDRESS.
MOVWF EEADR ;DATA MEMORY TO WRITE TO.
MOVF SNDTRI, W ;
MOVWF EEDATA ;VALUE TO WRITE.
CALL EEPROM_WRITE ;
;
RH213J41: ;
MOVLW 0x1A ;EEPROM ADDRESS.
MOVWF EEADR ;
BCF EECON1, EEPGD ;SELECT DATA EEPROM MEMORY.
BCF EECON1, CFGS ;
BSF EECON1, RD ;ENABLE EEPROM READ.
;VALUE IN EEDATA .
;
BTFSS MIDISTAT, SNDTRY_FLAG ;SOUND TRY OUT MODE FLAG.
BRA RH213J42 ;
CLRF RECFLAGS1 ;BASS REC FLAGS.
CLRF RECFLAGS2 ;CHORD REC FLAGS.
CLRF RECFLAGS3 ;RH1 REC FLAGS.
CLRF RECFLAGS4 ;RH1 REC FLAGS.
CLRF RECFLAGS5 ;RH2 REC FLAGS.
BSF RECFLAGS5, REC_RH23_BIT ;
CLRF RECFLAGS6 ;RH2 REC FLAGS.
CLRF RECFLAGS7 ;BASS BANK B REC FLAGS.
CLRF RECFLAGS8 ;CHORDS BANK B REC FLAGS.
MOVFF EEDATA, SNDTRI ;
RH213J42: ;
BTFSC MIDISTAT, SNDTRY_FLAG ;SOUND-TRY-OUT MODE FLAG.
BRA RH213J5 ;IN SOUND-TRY-OUT MODE CONTINUE AS NORMAL.
MOVLW 0x04 ;3rd BUTTON MASK.
ANDWF RH21ONOFF_FLAGS, F ;CLEAR OTHER RH2 INSTRUMENTS.
CLRF RH22ONOFF_FLAGS ;CLEAR OTHER RH2 INSTRUMENTS.
BTG RH21ONOFF_FLAGS, 2 ;
BTFSS RH21ONOFF_FLAGS, 2 ;
BSF GENFLAGS1, MUTE2_FLAG ;
BTFSC RH21ONOFF_FLAGS, 2 ;
BCF GENFLAGS1, MUTE2_FLAG ;
;MUTE RH2.
BTFSS GENFLAGS1, MUTE2_FLAG ;
BRA RH213LEDON ;
MOVLW 0xB3 ;ALL SOUND OFF CHAN 4.
MOVWF CONTCHAN ;
MOVLW 0x78 ;
MOVWF CONTDB1 ;
CLRF CONTDB2 ;
BSF GENFLAGS1, MUTE_FLAG ;SENDS ALL SOUND OFF.
BCF DISPLAYREG, MUTE2LED ;RH2 ON LED, OFF.
BRA RH213J5 ;
RH213LEDON: ;
BSF DISPLAYREG, MUTE2LED ;RH2 ON LED, ON .
RH213J5: ;...................................
MOVFF EEDATA, PROGCHHOLD2 ;
BTFSS PROGCHHOLD2, 7 ;IF >0x7F IT IS A BLANK SOUND.
BCF GENFLAGS4, BLANK_RH2_FLAG;
BTFSC PROGCHHOLD2, 7 ;
BSF GENFLAGS4, BLANK_RH2_FLAG;RH2 MUTE (BLANK SOUND).
MOVLW 0xC3 ;PROG CHANGE CHAN 4.
MOVWF PROGCHHOLD1 ;
BSF SCANSTAT, 0 ;SET BASS PROG SENT FLAG.
;
CALL RH2SOUND3 ;
;
GOTO SCANEND ;
;........................................................................................................................................................................................
RH21INSTR4: ;
BTFSS WREG, 3 ;
GOTO RH21INSTR5 ;
;
MOVF PORTC, W ;
MOVWF PEDTEMP ;
ANDLW 0x02 ;ASSIGN FSW1.
BZ RH214J1 ;
CALL FSW1ASIGNCLEAR ;
BSF FSW1ASIGNREG21, FSW1_RH214_BIT;
MOVFF FSW1ASIGNREG21, EEDATA ;VALUE TO WRITE.
MOVLW 0x70 ;
MOVWF EEADR ;DATA MEMORY TO WRITE TO.
CALL EEPROM_WRITE ;
GOTO SCANEND ;
RH214J1: ;
MOVF PEDTEMP, W ;
ANDLW 0x01 ;ASSIGN FSW2.
BZ RH214J2 ;
CALL FSW2ASIGNCLEAR ;
BSF FSW2ASIGNREG21, FSW2_RH214_BIT;
MOVFF FSW2ASIGNREG21, EEDATA ;VALUE TO WRITE.
MOVLW 0x71 ;
MOVWF EEADR ;DATA MEMORY TO WRITE TO.
CALL EEPROM_WRITE ;
GOTO SCANEND ;
RH214J2: ;
MOVF PEDTEMP, W ;
ANDLW 0x04 ;ASSIGN FSW3.
BZ RH214J3 ;
CALL FSW3ASIGNCLEAR ;
BSF FSW3ASIGNREG21, FSW3_RH214_BIT;
MOVFF FSW3ASIGNREG21, EEDATA ;VALUE TO WRITE.
MOVLW 0x72 ;
MOVWF EEADR ;DATA MEMORY TO WRITE TO.
CALL EEPROM_WRITE ;
GOTO SCANEND ;
RH214J3: ;
MOVF PORTA, W ;
ANDLW 0x10 ;ASSIGN FSW4.
BZ RH214J4 ;
CALL FSW4ASIGNCLEAR ;
BSF FSW4ASIGNREG21, FSW4_RH214_BIT;
MOVFF FSW4ASIGNREG21, EEDATA ;VALUE TO WRITE.
MOVLW 0x73 ;
MOVWF EEADR ;DATA MEMORY TO WRITE TO.
CALL EEPROM_WRITE ;
GOTO SCANEND ;
;
RH214J4: ;
BTFSS MIDISTAT, SNDTRY_FLAG ;SOUND TRY OUT MODE FLAG.
BRA RH214J41 ;
BTFSS RECFLAGS5, REC_RH24_BIT ;
BRA RH214J41 ;
MOVLW 0x3F ;EEPROM REVERB LEVEL ADDRESS.
MOVWF EEADR ;DATA MEMORY TO WRITE TO.
MOVF RH2FXPOT, W ;
MOVWF EEDATA ;VALUE TO WRITE.
CALL EEPROM_WRITE ;
;
MOVLW 0x1B ;EEPROM CHORD1 ADDRESS.
MOVWF EEADR ;DATA MEMORY TO WRITE TO.
MOVF SNDTRI, W ;
MOVWF EEDATA ;VALUE TO WRITE.
CALL EEPROM_WRITE ;
;
RH214J41: ;
MOVLW 0x1B ;EEPROM ADDRESS.
MOVWF EEADR ;
BCF EECON1, EEPGD ;SELECT DATA EEPROM MEMORY.
BCF EECON1, CFGS ;
BSF EECON1, RD ;ENABLE EEPROM READ.
;VALUE IN EEDATA.
;
BTFSS MIDISTAT, SNDTRY_FLAG ;SOUND TRY OUT MODE FLAG.
BRA RH214J42 ;
CLRF RECFLAGS1 ;BASS REC FLAGS.
CLRF RECFLAGS2 ;CHORD REC FLAGS.
CLRF RECFLAGS3 ;RH1 REC FLAGS.
CLRF RECFLAGS4 ;RH1 REC FLAGS.
CLRF RECFLAGS5 ;RH2 REC FLAGS.
BSF RECFLAGS5, REC_RH24_BIT ;
CLRF RECFLAGS6 ;RH2 REC FLAGS.
CLRF RECFLAGS7 ;BASS BANK B REC FLAGS.
CLRF RECFLAGS8 ;CHORDS BANK B REC FLAGS.
MOVFF EEDATA, SNDTRI ;
RH214J42: ;
BTFSC MIDISTAT, SNDTRY_FLAG ;SOUND-TRY-OUT MODE FLAG.
BRA RH214J5 ;IN SOUND-TRY-OUT MODE CONTINUE AS NORMAL.
MOVLW 0x08 ;4th BUTTON MASK.
ANDWF RH21ONOFF_FLAGS, F ;CLEAR OTHER RH2 INSTRUMENTS.
CLRF RH22ONOFF_FLAGS ;CLEAR OTHER RH2 INSTRUMENTS.
BTG RH21ONOFF_FLAGS, 3 ;
BTFSS RH21ONOFF_FLAGS, 3 ;
BSF GENFLAGS1, MUTE2_FLAG ;
BTFSC RH21ONOFF_FLAGS, 3 ;
BCF GENFLAGS1, MUTE2_FLAG ;
;MUTE RH2.
BTFSS GENFLAGS1, MUTE2_FLAG ;
BRA RH214LEDON ;
MOVLW 0xB3 ;ALL SOUND OFF CHAN 4.
MOVWF CONTCHAN ;
MOVLW 0x78 ;
MOVWF CONTDB1 ;
CLRF CONTDB2 ;
BSF GENFLAGS1, MUTE_FLAG ;SENDS ALL SOUND OFF.
BCF DISPLAYREG, MUTE2LED ;RH2 ON LED, OFF.
BRA RH214J5 ;
RH214LEDON: ;
BSF DISPLAYREG, MUTE2LED ;RH2 ON LED, ON .
RH214J5: ;...................................
MOVFF EEDATA, PROGCHHOLD2 ;
BTFSS PROGCHHOLD2, 7 ;IF >0x7F IT IS A BLANK SOUND.
BCF GENFLAGS4, BLANK_RH2_FLAG;
BTFSC PROGCHHOLD2, 7 ;
BSF GENFLAGS4, BLANK_RH2_FLAG;RH2 MUTE (BLANK SOUND).
MOVLW 0xC3 ;PROG CHANGE CHAN 4.
MOVWF PROGCHHOLD1 ;
BSF SCANSTAT, 0 ;SET PROG SENT FLAG.
;
CALL RH2SOUND4 ;
;
GOTO SCANEND ;
;........................................................................................................................................................................................
RH21INSTR5: ;
BTFSS WREG, 4 ;
GOTO RH21INSTR6 ;
;
MOVF PORTC, W ;
MOVWF PEDTEMP ;
ANDLW 0x02 ;ASSIGN FSW1.
BZ RH215J1 ;
CALL FSW1ASIGNCLEAR ;
BSF FSW1ASIGNREG21, FSW1_RH215_BIT;
MOVFF FSW1ASIGNREG21, EEDATA ;VALUE TO WRITE.
MOVLW 0x70 ;
MOVWF EEADR ;DATA MEMORY TO WRITE TO.
CALL EEPROM_WRITE ;
GOTO SCANEND ;
RH215J1: ;
MOVF PEDTEMP, W ;
ANDLW 0x01 ;ASSIGN FSW2.
BZ RH215J2 ;
CALL FSW2ASIGNCLEAR ;
BSF FSW2ASIGNREG21, FSW2_RH215_BIT;
MOVFF FSW2ASIGNREG21, EEDATA ;VALUE TO WRITE.
MOVLW 0x71 ;
MOVWF EEADR ;DATA MEMORY TO WRITE TO.
CALL EEPROM_WRITE ;
GOTO SCANEND ;
RH215J2: ;
MOVF PEDTEMP, W ;
ANDLW 0x04 ;ASSIGN FSW3.
BZ RH215J3 ;
CALL FSW3ASIGNCLEAR ;
BSF FSW3ASIGNREG21, FSW3_RH215_BIT;
MOVFF FSW3ASIGNREG21, EEDATA ;VALUE TO WRITE.
MOVLW 0x72 ;
MOVWF EEADR ;DATA MEMORY TO WRITE TO.
CALL EEPROM_WRITE ;
GOTO SCANEND ;
RH215J3: ;
MOVF PORTA, W ;
ANDLW 0x10 ;ASSIGN FSW4.
BZ RH215J4 ;
CALL FSW4ASIGNCLEAR ;
BSF FSW4ASIGNREG21, FSW4_RH215_BIT;
MOVFF FSW4ASIGNREG21, EEDATA ;VALUE TO WRITE.
MOVLW 0x73 ;
MOVWF EEADR ;DATA MEMORY TO WRITE TO.
CALL EEPROM_WRITE ;
GOTO SCANEND ;
;
RH215J4: ;
BTFSS MIDISTAT, SNDTRY_FLAG ;SOUND TRY OUT MODE FLAG.
BRA RH215J41 ;
BTFSS RECFLAGS5, REC_RH25_BIT ;
BRA RH215J41 ;
MOVLW 0x40 ;EEPROM REVERB LEVEL ADDRESS.
MOVWF EEADR ;DATA MEMORY TO WRITE TO.
MOVF RH2FXPOT, W ;
MOVWF EEDATA ;VALUE TO WRITE.
CALL EEPROM_WRITE ;
;
MOVLW 0x1C ;EEPROM CHORD1 ADDRESS.
MOVWF EEADR ;DATA MEMORY TO WRITE TO.
MOVF SNDTRI, W ;
MOVWF EEDATA ;VALUE TO WRITE.
CALL EEPROM_WRITE ;
;
RH215J41: ;
MOVLW 0x1C ;EEPROM ADDRESS.
MOVWF EEADR ;
BCF EECON1, EEPGD ;SELECT DATA EEPROM MEMORY.
BCF EECON1, CFGS ;
BSF EECON1, RD ;ENABLE EEPROM READ.
MOVF EEDATA, W ;VALUE IN WREG.
;
BTFSS MIDISTAT, SNDTRY_FLAG ;SOUND TRY OUT MODE FLAG.
BRA RH215J42 ;
CLRF RECFLAGS1 ;BASS REC FLAGS.
CLRF RECFLAGS2 ;CHORD REC FLAGS.
CLRF RECFLAGS3 ;RH1 REC FLAGS.
CLRF RECFLAGS4 ;RH1 REC FLAGS.
CLRF RECFLAGS5 ;RH2 REC FLAGS.
BSF RECFLAGS5, REC_RH25_BIT ;
CLRF RECFLAGS6 ;RH2 REC FLAGS.
CLRF RECFLAGS7 ;BASS BANK B REC FLAGS.
CLRF RECFLAGS8 ;CHORDS BANK B REC FLAGS.
MOVFF EEDATA, SNDTRI ;
RH215J42: ;.................
BTFSC MIDISTAT, SNDTRY_FLAG ;SOUND-TRY-OUT MODE FLAG.
BRA RH215J5 ;IN SOUND-TRY-OUT MODE CONTINUE AS NORMAL.
MOVLW 0x10 ;5th BUTTON MASK.
ANDWF RH21ONOFF_FLAGS, F ;CLEAR OTHER RH2 INSTRUMENTS.
CLRF RH22ONOFF_FLAGS ;CLEAR OTHER RH2 INSTRUMENTS.
BTG RH21ONOFF_FLAGS, 4 ;
BTFSS RH21ONOFF_FLAGS, 4 ;
BSF GENFLAGS1, MUTE2_FLAG ;
BTFSC RH21ONOFF_FLAGS, 4 ;
BCF GENFLAGS1, MUTE2_FLAG ;
;MUTE RH2.
BTFSS GENFLAGS1, MUTE2_FLAG ;
BRA RH215LEDON ;
MOVLW 0xB3 ;ALL SOUND OFF CHAN 4.
MOVWF CONTCHAN ;
MOVLW 0x78 ;
MOVWF CONTDB1 ;
CLRF CONTDB2 ;
BSF GENFLAGS1, MUTE_FLAG ;SENDS ALL SOUND OFF.
BCF DISPLAYREG, MUTE2LED ;RH2 ON LED, OFF.
BRA RH215J5 ;
RH215LEDON: ;
BSF DISPLAYREG, MUTE2LED ;RH2 ON LED, ON .
RH215J5: ;...................................
MOVFF EEDATA, PROGCHHOLD2 ;
BTFSS PROGCHHOLD2, 7 ;IF >0x7F IT IS A BLANK SOUND.
BCF GENFLAGS4, BLANK_RH2_FLAG;
BTFSC PROGCHHOLD2, 7 ;
BSF GENFLAGS4, BLANK_RH2_FLAG;RH2 MUTE (BLANK SOUND).
MOVLW 0xC3 ;PROG CHANGE CHAN 4.
MOVWF PROGCHHOLD1 ;
BSF SCANSTAT, 0 ;SET PROG SEND FLAG.
;
CALL RH2SOUND5 ;
;
GOTO SCANEND ;
;........................................................................................................................................................................................
RH21INSTR6: ;
BTFSS WREG, 5 ;
GOTO RH21INSOCT ;
;
MOVF PORTC, W ;
MOVWF PEDTEMP ;
ANDLW 0x02 ;ASSIGN FSW1.
BZ RH216J1 ;
CALL FSW1ASIGNCLEAR ;
BSF FSW1ASIGNREG21, FSW1_RH216_BIT;
MOVFF FSW1ASIGNREG21, EEDATA ;VALUE TO WRITE.
MOVLW 0x70 ;
MOVWF EEADR ;DATA MEMORY TO WRITE TO.
CALL EEPROM_WRITE ;
GOTO SCANEND ;
RH216J1: ;
MOVF PEDTEMP, W ;
ANDLW 0x01 ;ASSIGN FSW2.
BZ RH216J2 ;
CALL FSW2ASIGNCLEAR ;
BSF FSW2ASIGNREG21, FSW2_RH216_BIT;
MOVFF FSW2ASIGNREG21, EEDATA ;VALUE TO WRITE.
MOVLW 0x71 ;
MOVWF EEADR ;DATA MEMORY TO WRITE TO.
CALL EEPROM_WRITE ;
GOTO SCANEND ;
RH216J2: ;
MOVF PEDTEMP, W ;
ANDLW 0x04 ;ASSIGN FSW3.
BZ RH216J3 ;
CALL FSW3ASIGNCLEAR ;
BSF FSW3ASIGNREG21, FSW3_RH216_BIT;
MOVFF FSW3ASIGNREG21, EEDATA ;VALUE TO WRITE.
MOVLW 0x72 ;
MOVWF EEADR ;DATA MEMORY TO WRITE TO.
CALL EEPROM_WRITE ;
GOTO SCANEND ;
RH216J3: ;
MOVF PORTA, W ;
ANDLW 0x10 ;ASSIGN FSW4.
BZ RH216J4 ;
CALL FSW4ASIGNCLEAR ;
BSF FSW4ASIGNREG21, FSW4_RH216_BIT;
MOVFF FSW4ASIGNREG21, EEDATA ;VALUE TO WRITE.
MOVLW 0x73 ;
MOVWF EEADR ;DATA MEMORY TO WRITE TO.
CALL EEPROM_WRITE ;
GOTO SCANEND ;
;
RH216J4: ;
BTFSS MIDISTAT, SNDTRY_FLAG ;SOUND TRY OUT MODE FLAG.
BRA RH216J41 ;
BTFSS RECFLAGS5, REC_RH26_BIT ;
BRA RH216J41 ;
MOVLW 0x41 ;EEPROM REVERB LEVEL ADDRESS.
MOVWF EEADR ;DATA MEMORY TO WRITE TO.
MOVF RH2FXPOT, W ;
MOVWF EEDATA ;VALUE TO WRITE.
CALL EEPROM_WRITE ;
;
MOVLW 0x1D ;EEPROM CHORD1 ADDRESS.
MOVWF EEADR ;DATA MEMORY TO WRITE TO.
MOVF SNDTRI, W ;
MOVWF EEDATA ;VALUE TO WRITE.
CALL EEPROM_WRITE ;
;
RH216J41: ;
MOVLW 0x1D ;EEPROM ADDRESS.
MOVWF EEADR ;
BCF EECON1, EEPGD ;SELECT DATA EEPROM MEMORY.
BCF EECON1, CFGS ;
BSF EECON1, RD ;ENABLE EEPROM READ.
;VALUE IN EEDATA.
BTFSS MIDISTAT, SNDTRY_FLAG ;SOUND TRY OUT MODE FLAG.
BRA RH216J42 ;
CLRF RECFLAGS1 ;BASS REC FLAGS.
CLRF RECFLAGS2 ;CHORD REC FLAGS.
CLRF RECFLAGS3 ;RH1 REC FLAGS.
CLRF RECFLAGS4 ;RH1 REC FLAGS.
CLRF RECFLAGS5 ;RH2 REC FLAGS.
BSF RECFLAGS5, REC_RH26_BIT ;
CLRF RECFLAGS6 ;RH2 REC FLAGS.
CLRF RECFLAGS7 ;BASS BANK B REC FLAGS.
CLRF RECFLAGS8 ;CHORDS BANK B REC FLAGS.
MOVFF EEDATA, SNDTRI ;
RH216J42: ;
BTFSC MIDISTAT, SNDTRY_FLAG ;SOUND-TRY-OUT MODE FLAG.
BRA RH216J5 ;IN SOUND-TRY-OUT MODE CONTINUE AS NORMAL.
MOVLW 0x20 ;1st BUTTON MASK.
ANDWF RH21ONOFF_FLAGS, F ;CLEAR OTHER RH2 INSTRUMENTS.
CLRF RH22ONOFF_FLAGS ;CLEAR OTHER RH2 INSTRUMENTS.
BTG RH21ONOFF_FLAGS, 5 ;
BTFSS RH21ONOFF_FLAGS, 5 ;
BSF GENFLAGS1, MUTE2_FLAG ;
BTFSC RH21ONOFF_FLAGS, 5 ;
BCF GENFLAGS1, MUTE2_FLAG ;
;MUTE RH2.
BTFSS GENFLAGS1, MUTE2_FLAG ;
BRA RH216LEDON ;
MOVLW 0xB3 ;ALL SOUND OFF CHAN 4.
MOVWF CONTCHAN ;
MOVLW 0x78 ;
MOVWF CONTDB1 ;
CLRF CONTDB2 ;
BSF GENFLAGS1, MUTE_FLAG ;SENDS ALL SOUND OFF.
BCF DISPLAYREG, MUTE2LED ;RH2 ON LED, OFF.
BRA RH216J5 ;
RH216LEDON: ;
BSF DISPLAYREG, MUTE2LED ;RH2 ON LED, ON .
RH216J5: ;...................................
MOVFF EEDATA, PROGCHHOLD2 ;
BTFSS PROGCHHOLD2, 7 ;IF >0x7F IT IS A BLANK SOUND.
BCF GENFLAGS4, BLANK_RH2_FLAG;
BTFSC PROGCHHOLD2, 7 ;
BSF GENFLAGS4, BLANK_RH2_FLAG;RH2 MUTE (BLANK SOUND).
MOVLW 0xC3 ;PROG CHANGE CHAN 4.
MOVWF PROGCHHOLD1 ;
BSF SCANSTAT, 0 ;SET PROG SENT FLAG.
;
CALL RH2SOUND6 ;
;
GOTO SCANEND ;
;........................................................................................................................................................................................
RH21INSOCT: ;
BTFSS WREG, 6 ;
GOTO RH218 ;
;
MOVF PORTC, W ;
MOVWF PEDTEMP ;
ANDLW 0x02 ;ASSIGN FSW1.
BZ RH21RES1 ;
CALL FSW1ASIGNCLEAR ;
BSF FSW1ASIGNREG, FSW1_ORH2_BIT;
MOVFF FSW1ASIGNREG, EEDATA ;VALUE TO WRITE.
MOVLW 0x78 ;
MOVWF EEADR ;DATA MEMORY TO WRITE TO.
CALL EEPROM_WRITE ;
BRA RH21RESFS ;
RH21RES1: ;
MOVF PEDTEMP, W ;
ANDLW 0x01 ;ASSIGN FSW2.
BZ RH21RES2 ;
CALL FSW2ASIGNCLEAR ;
BSF FSW2ASIGNREG, FSW2_ORH2_BIT;
MOVFF FSW2ASIGNREG, EEDATA ;VALUE TO WRITE.
MOVLW 0x79 ;
MOVWF EEADR ;DATA MEMORY TO WRITE TO.
CALL EEPROM_WRITE ;
BRA RH21RESFS ;
RH21RES2: ;
MOVF PEDTEMP, W ;
ANDLW 0x04 ;ASSIGN FSW3.
BZ RH21RES3 ;
CALL FSW3ASIGNCLEAR ;
BSF FSW3ASIGNREG, FSW3_ORH2_BIT;
MOVFF FSW3ASIGNREG, EEDATA ;VALUE TO WRITE.
MOVLW 0x7A ;
MOVWF EEADR ;DATA MEMORY TO WRITE TO.
CALL EEPROM_WRITE ;
BRA RH21RESFS ;
RH21RES3: ;
MOVF PORTA, W ;
ANDLW 0x10 ;ASSIGN FSW4.
BZ RH21RES4 ;
CALL FSW4ASIGNCLEAR ;
BSF FSW4ASIGNREG, FSW4_ORH2_BIT;
MOVFF FSW4ASIGNREG, EEDATA ;VALUE TO WRITE.
MOVLW 0x7B ;
MOVWF EEADR ;DATA MEMORY TO WRITE TO.
CALL EEPROM_WRITE ;
BRA RH21RESFS ;
RH21RES4: ;
;
BCF GENFLAGS6, RHINSTCHNG ;STOP RH CHANGE ALERT.
BTG GENFLAGS1, RH2OCTBIT ;
MOVLW 0xB3 ;COARSE TUNNING DOWN 12 SENITONES.
MOVWF NORPN1 ;
MOVLW 0x65 ;
MOVWF NORPN2 ;
MOVLW 0x00 ;
MOVWF NORPN3 ;
MOVLW 0x64 ;
MOVWF NORPN4 ;
MOVLW 0x02 ;
MOVWF NORPN5 ;
MOVLW 0x06 ;
MOVWF NORPN6 ;
;
BTFSS GENFLAGS3, RH224OCTD_BIT ;
BRA RH21OJ1 ;
MOVLW 0x28 ;
BTFSC GENFLAGS1, RH2OCTBIT ;
MOVLW 0x34 ;
BRA RH21OJ2 ;
RH21OJ1: ;
MOVLW 0x40 ;
BTFSC GENFLAGS1, RH2OCTBIT ;
MOVLW 0x34 ;
RH21OJ2: ;
MOVWF NORPN7 ;
BSF GENFLAGS1, NORPN_FLAG ;
RH21RESFS: ;
GOTO SCANEND ;
;........................................................................................................................................................................................
RH218: ;TREMOLO ON/OFF BUTTON. USES
BTFSS WREG, 7 ; CHANNEL PRESSURE COMMANDS.
GOTO RH22_SCAN ;
;
MOVF PORTC, W ;
MOVWF PEDTEMP ;
ANDLW 0x02 ;ASSIGN FSW1.
BZ RH218J1 ;
CALL FSW1ASIGNCLEAR ;
BSF FSW1ASIGNREG21, FSW1_RH218_BIT;
MOVFF FSW1ASIGNREG21, EEDATA ;VALUE TO WRITE.
MOVLW 0x70 ;
MOVWF EEADR ;DATA MEMORY TO WRITE TO.
CALL EEPROM_WRITE ;
BRA RH218END ;
RH218J1: ;
MOVF PEDTEMP, W ;
ANDLW 0x01 ;ASSIGN FSW2.
BZ RH218J2 ;
CALL FSW2ASIGNCLEAR ;
BSF FSW2ASIGNREG21, FSW2_RH218_BIT;
MOVFF FSW2ASIGNREG21, EEDATA ;VALUE TO WRITE.
MOVLW 0x71 ;
MOVWF EEADR ;DATA MEMORY TO WRITE TO.
CALL EEPROM_WRITE ;
BRA RH218END ;
RH218J2: ;
MOVF PEDTEMP, W ;
ANDLW 0x04 ;ASSIGN FSW3.
BZ RH218J3 ;
CALL FSW3ASIGNCLEAR ;
BSF FSW3ASIGNREG21, FSW3_RH218_BIT;
MOVFF FSW3ASIGNREG21, EEDATA ;VALUE TO WRITE.
MOVLW 0x72 ;
MOVWF EEADR ;DATA MEMORY TO WRITE TO.
CALL EEPROM_WRITE ;
BRA RH218END ;
RH218J3: ;
MOVF PORTA, W ;
ANDLW 0x10 ;ASSIGN FSW4.
BZ RH218J4 ;
CALL FSW4ASIGNCLEAR ;
BSF FSW4ASIGNREG21, FSW4_RH218_BIT;
MOVFF FSW4ASIGNREG21, EEDATA ;VALUE TO WRITE.
MOVLW 0x73 ;
MOVWF EEADR ;DATA MEMORY TO WRITE TO.
CALL EEPROM_WRITE ;
BRA RH218END ;
RH218J4: ;
BTFSC GENFLAGS7, TREMVOLED_BIT ;
BRA RH218END ;NOW IN EDIT MODE
BCF GENFLAGS6, RHINSTCHNG ;STOP RH CHANGE ALERT.
;
BTG GENFLAGS7, TREMON_BIT ;
BTFSS GENFLAGS7, TREMON_BIT ;
BRA RH22TREMOFF ;
;
BSF GENFLAGS6, SYSX11_B7_FLG;PUT NEW VALUE IN SYSX11BYTE7.
MOVLW 0x25 ;SELECT CHANNEL 5 !
MOVWF SYSX11BYTE7 ;
MOVLW 0x26 ;SELECT TREM DEPTH.
MOVWF SYSX11BYTE8 ;
MOVLW 0x7F ;MOD DEPTH VALUE.
MOVWF SYSX11BYTE9 ;
CALL SYSX11BYTE ;SET MOD LFO1 DCA DEPTH.
;
BSF GENFLAGS6, SYSX11_B7_FLG;
MOVLW 0x24 ;SELECT CHANNEL 4 !
MOVWF SYSX11BYTE7 ;
CALL SYSX11BYTE ;SET MOD LFO1 DCA DEPTH.
;
BSF GENFLAGS6, SYSX11_B7_FLG;
MOVLW 0x21 ;SELECT CHANNEL 1 !
MOVWF SYSX11BYTE7 ;
CALL SYSX11BYTE ;SET MOD LFO1 DCA DEPTH.
;
;
MOVLW 0xF5 ;EEPROM ADDRESS.
MOVWF EEADR ;
BCF EECON1, CFGS ;
BCF EECON1, EEPGD ;SELECT DATA EEPROM MEMORY.
BSF EECON1, RD ;ENABLE EEPROM READ.
MOVF EEDATA, W ;VALUE IN W.
MOVWF TREMDEPTH ;
;
MOVLW 0xF4 ;EEPROM ADDRESS.
MOVWF EEADR ;
BCF EECON1, CFGS ;
BCF EECON1, EEPGD ;SELECT DATA EEPROM MEMORY.
BSF EECON1, RD ;ENABLE EEPROM READ.
MOVF EEDATA, W ;VALUE IN W.
MOVWF TREMSPEED ;
;
MOVWF SYSX11BYTE9 ;MOD LFO RATE CONTROL.
MOVLW 0x03 ;
MOVWF SYSX11BYTE8 ;
MOVLW 0x2F ;COMMON TO ALL CHANNELS.
MOVWF SYSX11BYTE7 ;
BSF GENFLAGS6, SYSX11_B7_FLG;
CALL SYSX11BYTE ;
;
MOVLW 0xD3 ;CHAN PRESSURE CH4.
RHTREM10: ;
BTFSS TXSTA, TRMT ;SET WHEN TxShiftReg IS EMPTY.
BRA RHTREM10 ;
MOVWF TXREG ;SEND MIDI.
MOVF TREMDEPTH, W ;DATA BYTE.
RHTREM11: ;
BTFSS TXSTA, TRMT ;SET WHEN TxShiftReg IS EMPTY.
BRA RHTREM11 ;
MOVWF TXREG ;SEND MIDI.
;
MOVLW 0xD4 ;CHAN PRESSURE CH5.
RHTREM20: ;
BTFSS TXSTA, TRMT ;SET WHEN TxShiftReg IS EMPTY.
BRA RHTREM20 ;
MOVWF TXREG ;SEND MIDI.
MOVF TREMDEPTH, W ;DATA BYTE.
RHTREM21: ;
BTFSS TXSTA, TRMT ;SET WHEN TxShiftReg IS EMPTY.
BRA RHTREM21 ;
MOVWF TXREG ;SEND MIDI.
;
MOVLW 0xD0 ;CHAN PRESSURE CH1.
RHTREM30: ;
BTFSS TXSTA, TRMT ;SET WHEN TxShiftReg IS EMPTY.
BRA RHTREM30 ;
MOVWF TXREG ;SEND MIDI.
MOVF TREMDEPTH, W ;DATA BYTE.
RHTREM31: ;
BTFSS TXSTA, TRMT ;SET WHEN TxShiftReg IS EMPTY.
BRA RHTREM31 ;
MOVWF TXREG ;SEND MIDI.
;
BRA RH218END ;
;........
RH22TREMOFF: ;
BSF GENFLAGS6, SYSX11_B7_FLG;
MOVLW 0x21 ;SELECT CHANNEL 1!
MOVWF SYSX11BYTE7 ;
MOVLW 0x26 ;SELECT TREM DEPTH.
MOVWF SYSX11BYTE8 ;
MOVLW 0x00 ;MOD DEPTH VALUE.
MOVWF SYSX11BYTE9 ;
CALL SYSX11BYTE ;SET MOD LFO1 DCA DEPTH.
;
BSF GENFLAGS6, SYSX11_B7_FLG;
MOVLW 0x25 ;SELECT CHANNEL 5!
MOVWF SYSX11BYTE7 ;
CALL SYSX11BYTE ;SET MOD LFO1 DCA DEPTH.
;
BSF GENFLAGS6, SYSX11_B7_FLG;
MOVLW 0x24 ;SELECT CHANNEL 4 !
MOVWF SYSX11BYTE7 ;
CALL SYSX11BYTE ;SET MOD LFO1 DCA DEPTH.
;
RH218END: ;
GOTO SCANEND ;
;........................................................................................................................................................................................
RH22_SCAN: ;
MOVLW 0x01 ;RB0, ENABLE RH27 BUSS.
MOVWF PORTB ;
NOP ;
NOP ;
NOP ;
NOP ;
MOVF PORTD, W ;TO WREG.
CLRF PORTB ;
MOVWF SCANTEMP1 ;
XORWF RH27SCANHOLD, W ;RESULT IN W.
MOVFF SCANTEMP1, RH27SCANHOLD ;
BNZ RH220J1 ;CHANGE IN SCAN.
GOTO FSWS ;NO CHANGE IN SCAN.
RH220J1: ;
MOVFF RH27SCANHOLD, RH22_OFF_FLAGS ;
COMF RH22_OFF_FLAGS, F ;
ANDWF RH22_OFF_FLAGS, F ;CHANGES TO OFF STORED.
;
ANDWF SCANTEMP1, W ;CHANGE TO ON NOW IN W.
MOVWF RH22_ON_FLAGS ;
BZ RH220J2 ;
BSF GENFLAGS6, RHINSTCHNG ;
BSF GENFLAGS10, DIP_CHNG_LED ;Dip control change led.
RH220J2: ;
;.........................................................................................................................................................................
BTFSS RH22_ON_FLAGS, 0 ;
BRA RH22INSTR2 ;
;
MOVF PORTC, W ;
MOVWF PEDTEMP ;
ANDLW 0x02 ;ASSIGN FSW1.
BZ RH221J1 ;
CALL FSW1ASIGNCLEAR ;
BSF FSW1ASIGNREG22, FSW1_RH221_BIT;
MOVFF FSW1ASIGNREG22, EEDATA ;VALUE TO WRITE.
MOVLW 0x74 ;
MOVWF EEADR ;DATA MEMORY TO WRITE TO.
CALL EEPROM_WRITE ;
GOTO SCANEND ;
RH221J1: ;
MOVF PEDTEMP, W ;
ANDLW 0x01 ;ASSIGN FSW2.
BZ RH221J2 ;
CALL FSW2ASIGNCLEAR ;
BSF FSW2ASIGNREG22, FSW2_RH221_BIT;
MOVFF FSW2ASIGNREG22, EEDATA ;VALUE TO WRITE.
MOVLW 0x75 ;
MOVWF EEADR ;DATA MEMORY TO WRITE TO.
CALL EEPROM_WRITE ;
GOTO SCANEND ;
RH221J2: ;
MOVF PEDTEMP, W ;
ANDLW 0x04 ;ASSIGN FSW3.
BZ RH221J3 ;
CALL FSW3ASIGNCLEAR ;
BSF FSW3ASIGNREG22, FSW3_RH221_BIT;
MOVFF FSW3ASIGNREG22, EEDATA ;VALUE TO WRITE.
MOVLW 0x76 ;
MOVWF EEADR ;DATA MEMORY TO WRITE TO.
CALL EEPROM_WRITE ;
GOTO SCANEND ;
RH221J3: ;
MOVF PORTA, W ;
ANDLW 0x10 ;ASSIGN FSW4.
BZ RH221J4 ;
CALL FSW4ASIGNCLEAR ;
BSF FSW4ASIGNREG22, FSW4_RH221_BIT;
MOVFF FSW4ASIGNREG22, EEDATA ;VALUE TO WRITE.
MOVLW 0x77 ;
MOVWF EEADR ;DATA MEMORY TO WRITE TO.
CALL EEPROM_WRITE ;
GOTO SCANEND ;
;
RH221J4: ;
BTFSS MIDISTAT, SNDTRY_FLAG ;SOUND TRY OUT MODE FLAG.
BRA RH221J41 ;
BTFSS RECFLAGS6, REC_RH27_BIT ;
BRA RH221J41 ;
MOVLW 0x42 ;EEPROM REVERB LEVEL ADDRESS.
MOVWF EEADR ;DATA MEMORY TO WRITE TO.
MOVF RH2FXPOT, W ;
MOVWF EEDATA ;VALUE TO WRITE.
CALL EEPROM_WRITE ;
;
MOVLW 0x1E ;EEPROM CHORD1 ADDRESS.
MOVWF EEADR ;DATA MEMORY TO WRITE TO.
MOVF SNDTRI, W ;
MOVWF EEDATA ;VALUE TO WRITE.
CALL EEPROM_WRITE ;
;
RH221J41: ;
MOVLW 0x1E ;EEPROM ADDRESS.
MOVWF EEADR ;
BCF EECON1, EEPGD ;SELECT DATA EEPROM MEMORY.
BCF EECON1, CFGS ;
BSF EECON1, RD ;ENABLE EEPROM READ.
;VALUE IN WREG.
BTFSS MIDISTAT, SNDTRY_FLAG ;SOUND TRY OUT MODE FLAG.
BRA RH221J42 ;
CLRF RECFLAGS1 ;BASS REC FLAGS.
CLRF RECFLAGS2 ;CHORD REC FLAGS.
CLRF RECFLAGS3 ;RH1 REC FLAGS.
CLRF RECFLAGS4 ;RH1 REC FLAGS.
CLRF RECFLAGS5 ;RH2 REC FLAGS.
CLRF RECFLAGS6 ;RH2 REC FLAGS.
CLRF RECFLAGS7 ;BASS BANK B REC FLAGS.
CLRF RECFLAGS8 ;CHORDS BANK B REC FLAGS.
BSF RECFLAGS6, REC_RH27_BIT ;
MOVFF EEDATA, SNDTRI ;
RH221J42: ;
BTFSC MIDISTAT, SNDTRY_FLAG ;SOUND-TRY-OUT MODE FLAG.
BRA RH221J5 ;IN SOUND-TRY-OUT MODE CONTINUE AS NORMAL.
MOVLW 0x01 ;1st BUTTON MASK.
ANDWF RH22ONOFF_FLAGS, F ;CLEAR OTHER RH2 INSTRUMENTS.
CLRF RH21ONOFF_FLAGS ;CLEAR OTHER RH2 INSTRUMENTS.
BTG RH22ONOFF_FLAGS, 0 ;
BTFSS RH22ONOFF_FLAGS, 0 ;
BSF GENFLAGS1, MUTE2_FLAG ;
BTFSC RH22ONOFF_FLAGS, 0 ;
BCF GENFLAGS1, MUTE2_FLAG ;
;MUTE RH2.
BTFSS GENFLAGS1, MUTE2_FLAG ;
BRA RH221LEDON ;
MOVLW 0xB3 ;ALL SOUND OFF CHAN 4.
MOVWF CONTCHAN ;
MOVLW 0x78 ;
MOVWF CONTDB1 ;
CLRF CONTDB2 ;
BSF GENFLAGS1, MUTE_FLAG ;SENDS ALL SOUND OFF.
BCF DISPLAYREG, MUTE2LED ;RH2 ON LED, OFF.
BRA RH221J5 ;
RH221LEDON: ;
BSF DISPLAYREG, MUTE2LED ;RH2 ON LED, ON .
RH221J5: ;...................................
MOVFF EEDATA, PROGCHHOLD2 ;
BTFSS PROGCHHOLD2, 7 ;IF >0x7F IT IS A BLANK SOUND.
BCF GENFLAGS4, BLANK_RH2_FLAG;
BTFSC PROGCHHOLD2, 7 ;
BSF GENFLAGS4, BLANK_RH2_FLAG;RH2 MUTE (BLANK SOUND).
MOVLW 0xC3 ;PROG CHANGE CHAN 4.
MOVWF PROGCHHOLD1 ;
BSF SCANSTAT, 0 ;SET PROG SENT FLAG.
;
CALL RH2SOUND7 ;
;
GOTO SCANEND ;
;........................................................................................................................................................................................
RH22INSTR2: ;
BTFSS RH22_ON_FLAGS, 1 ;
GOTO RH22INSTR3 ;
;
MOVF PORTC, W ;
MOVWF PEDTEMP ;
ANDLW 0x02 ;ASSIGN FSW1.
BZ RH222J1 ;
CALL FSW1ASIGNCLEAR ;
BSF FSW1ASIGNREG22, FSW1_RH222_BIT;
MOVFF FSW1ASIGNREG22, EEDATA ;VALUE TO WRITE.
MOVLW 0x74 ;
MOVWF EEADR ;DATA MEMORY TO WRITE TO.
CALL EEPROM_WRITE ;
GOTO SCANEND ;
RH222J1: ;
MOVF PEDTEMP, W ;
ANDLW 0x01 ;ASSIGN FSW2.
BZ RH222J2 ;
CALL FSW2ASIGNCLEAR ;
BSF FSW2ASIGNREG22, FSW2_RH222_BIT;
MOVFF FSW2ASIGNREG22, EEDATA ;VALUE TO WRITE.
MOVLW 0x75 ;
MOVWF EEADR ;DATA MEMORY TO WRITE TO.
CALL EEPROM_WRITE ;
GOTO SCANEND ;
RH222J2: ;
MOVF PEDTEMP, W ;
ANDLW 0x04 ;ASSIGN FSW3.
BZ RH222J3 ;
CALL FSW3ASIGNCLEAR ;
BSF FSW3ASIGNREG22, FSW3_RH222_BIT;
MOVFF FSW3ASIGNREG22, EEDATA ;VALUE TO WRITE.
MOVLW 0x76 ;
MOVWF EEADR ;DATA MEMORY TO WRITE TO.
CALL EEPROM_WRITE ;
GOTO SCANEND ;
RH222J3: ;
MOVF PORTA, W ;
ANDLW 0x10 ;ASSIGN FSW4.
BZ RH222J4 ;
CALL FSW4ASIGNCLEAR ;
BSF FSW4ASIGNREG22, FSW4_RH222_BIT;
MOVFF FSW4ASIGNREG22, EEDATA ;VALUE TO WRITE.
MOVLW 0x77 ;
MOVWF EEADR ;DATA MEMORY TO WRITE TO.
CALL EEPROM_WRITE ;
GOTO SCANEND ;
;
RH222J4: ;
BTFSS MIDISTAT, SNDTRY_FLAG ;SOUND TRY OUT MODE FLAG.
BRA RH222J41 ;
BTFSS RECFLAGS6, REC_RH28_BIT ;
BRA RH222J41 ;
MOVLW 0x43 ;EEPROM REVERB LEVEL ADDRESS.
MOVWF EEADR ;DATA MEMORY TO WRITE TO.
MOVF RH2FXPOT, W ;
MOVWF EEDATA ;VALUE TO WRITE.
CALL EEPROM_WRITE ;
;
MOVLW 0x1F ;EEPROM CHORD1 ADDRESS.
MOVWF EEADR ;DATA MEMORY TO WRITE TO.
MOVF SNDTRI, W ;
MOVWF EEDATA ;VALUE TO WRITE.
CALL EEPROM_WRITE ;
;
RH222J41: ;
MOVLW 0x1F ;EEPROM ADDRESS.
MOVWF EEADR ;
BCF EECON1, EEPGD ;SELECT DATA EEPROM MEMORY.
BCF EECON1, CFGS ;
BSF EECON1, RD ;ENABLE EEPROM READ.
;VALUE IN WREG.
BTFSS MIDISTAT, SNDTRY_FLAG ;SOUND TRY OUT MODE FLAG.
BRA RH222J42 ;
CLRF RECFLAGS1 ;BASS REC FLAGS.
CLRF RECFLAGS2 ;CHORD REC FLAGS.
CLRF RECFLAGS3 ;RH1 REC FLAGS.
CLRF RECFLAGS4 ;RH1 REC FLAGS.
CLRF RECFLAGS5 ;RH2 REC FLAGS.
CLRF RECFLAGS6 ;RH2 REC FLAGS.
CLRF RECFLAGS7 ;BASS BANK B REC FLAGS.
CLRF RECFLAGS8 ;CHORDS BANK B REC FLAGS.
BSF RECFLAGS6, REC_RH28_BIT ;
MOVFF EEDATA, SNDTRI ;
RH222J42: ;
BTFSC MIDISTAT, SNDTRY_FLAG ;SOUND-TRY-OUT MODE FLAG.
BRA RH222J5 ;IN SOUND-TRY-OUT MODE CONTINUE AS NORMAL.
MOVLW 0x02 ;1st BUTTON MASK.
ANDWF RH22ONOFF_FLAGS, F ;CLEAR OTHER RH2 INSTRUMENTS.
CLRF RH21ONOFF_FLAGS ;CLEAR OTHER RH2 INSTRUMENTS.
BTG RH22ONOFF_FLAGS, 1 ;
BTFSS RH22ONOFF_FLAGS, 1 ;
BSF GENFLAGS1, MUTE2_FLAG ;
BTFSC RH22ONOFF_FLAGS, 1 ;
BCF GENFLAGS1, MUTE2_FLAG ;
;MUTE RH2.
BTFSS GENFLAGS1, MUTE2_FLAG ;
BRA RH222LEDON ;
MOVLW 0xB3 ;ALL SOUND OFF CHAN 4.
MOVWF CONTCHAN ;
MOVLW 0x78 ;
MOVWF CONTDB1 ;
CLRF CONTDB2 ;
BSF GENFLAGS1, MUTE_FLAG ;SENDS ALL SOUND OFF.
BCF DISPLAYREG, MUTE2LED ;RH2 ON LED, OFF.
BRA RH222J5 ;
RH222LEDON: ;
BSF DISPLAYREG, MUTE2LED ;RH2 ON LED, ON .
RH222J5: ;...................................
MOVFF EEDATA, PROGCHHOLD2 ;
BTFSS PROGCHHOLD2, 7 ;IF >0x7F IT IS A BLANK SOUND.
BCF GENFLAGS4, BLANK_RH2_FLAG;
BTFSC PROGCHHOLD2, 7 ;
BSF GENFLAGS4, BLANK_RH2_FLAG;RH2 MUTE (BLANK SOUND).
MOVLW 0xC3 ;PROG CHANGE CHAN 4.
MOVWF PROGCHHOLD1 ;
BSF SCANSTAT, 0 ;SET BASS PROG SENT FLAG.
;
CALL RH2SOUND8 ;
;
GOTO SCANEND ;
;........................................................................................................................................................................................
RH22INSTR3: ;
BTFSS RH22_ON_FLAGS, 2 ;
GOTO RH22INSTR4 ;
;
MOVF PORTC, W ;
MOVWF PEDTEMP ;
ANDLW 0x02 ;ASSIGN FSW1.
BZ RH223J1 ;
CALL FSW1ASIGNCLEAR ;
BSF FSW1ASIGNREG22, FSW1_RH223_BIT;
MOVFF FSW1ASIGNREG22, EEDATA ;VALUE TO WRITE.
MOVLW 0x74 ;
MOVWF EEADR ;DATA MEMORY TO WRITE TO.
CALL EEPROM_WRITE ;
GOTO SCANEND ;
RH223J1: ;
MOVF PEDTEMP, W ;
ANDLW 0x01 ;ASSIGN FSW2.
BZ RH223J2 ;
CALL FSW2ASIGNCLEAR ;
BSF FSW2ASIGNREG22, FSW2_RH223_BIT;
MOVFF FSW2ASIGNREG22, EEDATA ;VALUE TO WRITE.
MOVLW 0x75 ;
MOVWF EEADR ;DATA MEMORY TO WRITE TO.
CALL EEPROM_WRITE ;
GOTO SCANEND ;
RH223J2: ;
MOVF PEDTEMP, W ;
ANDLW 0x04 ;ASSIGN FSW3.
BZ RH223J3 ;
CALL FSW3ASIGNCLEAR ;
BSF FSW3ASIGNREG22, FSW3_RH223_BIT;
MOVFF FSW3ASIGNREG22, EEDATA ;VALUE TO WRITE.
MOVLW 0x76 ;
MOVWF EEADR ;DATA MEMORY TO WRITE TO.
CALL EEPROM_WRITE ;
GOTO SCANEND ;
RH223J3: ;
MOVF PORTA, W ;
ANDLW 0x10 ;ASSIGN FSW4.
BZ RH223J4 ;
CALL FSW4ASIGNCLEAR ;
BSF FSW4ASIGNREG22, FSW4_RH223_BIT;
MOVFF FSW4ASIGNREG22, EEDATA ;VALUE TO WRITE.
MOVLW 0x77 ;
MOVWF EEADR ;DATA MEMORY TO WRITE TO.
CALL EEPROM_WRITE ;
GOTO SCANEND ;
;
RH223J4: ;
BTFSS MIDISTAT, SNDTRY_FLAG ;SOUND TRY OUT MODE FLAG.
BRA RH223J41 ;
BTFSS RECFLAGS6, REC_RH29_BIT ;
BRA RH223J41 ;
MOVLW 0x44 ;EEPROM REVERB LEVEL ADDRESS.
MOVWF EEADR ;DATA MEMORY TO WRITE TO.
MOVF RH2FXPOT, W ;
MOVWF EEDATA ;VALUE TO WRITE.
CALL EEPROM_WRITE ;
;
MOVLW 0x20 ;EEPROM CHORD1 ADDRESS.
MOVWF EEADR ;DATA MEMORY TO WRITE TO.
MOVF SNDTRI, W ;
MOVWF EEDATA ;VALUE TO WRITE.
CALL EEPROM_WRITE ;
;
RH223J41: ;
MOVLW 0x20 ;EEPROM ADDRESS.
MOVWF EEADR ;
BCF EECON1, EEPGD ;SELECT DATA EEPROM MEMORY.
BCF EECON1, CFGS ;
BSF EECON1, RD ;ENABLE EEPROM READ.
;VALUE IN EEDATA.
BTFSS MIDISTAT, SNDTRY_FLAG ;SOUND TRY OUT MODE FLAG.
BRA RH223J42 ;
CLRF RECFLAGS1 ;BASS REC FLAGS.
CLRF RECFLAGS2 ;CHORD REC FLAGS.
CLRF RECFLAGS3 ;RH1 REC FLAGS.
CLRF RECFLAGS4 ;RH1 REC FLAGS.
CLRF RECFLAGS5 ;RH2 REC FLAGS.
CLRF RECFLAGS6 ;RH2 REC FLAGS.
CLRF RECFLAGS7 ;BASS BANK B REC FLAGS.
CLRF RECFLAGS8 ;CHORDS BANK B REC FLAGS.
BSF RECFLAGS6, REC_RH29_BIT ;
MOVFF EEDATA, SNDTRI ;
RH223J42: ;
BTFSC MIDISTAT, SNDTRY_FLAG ;SOUND-TRY-OUT MODE FLAG.
BRA RH223J5 ;IN SOUND-TRY-OUT MODE CONTINUE AS NORMAL.
MOVLW 0x04 ;3rd BUTTON MASK.
ANDWF RH22ONOFF_FLAGS, F ;CLEAR OTHER RH2 INSTRUMENTS.
CLRF RH21ONOFF_FLAGS ;CLEAR OTHER RH2 INSTRUMENTS.
BTG RH22ONOFF_FLAGS, 2 ;
BTFSS RH22ONOFF_FLAGS, 2 ;
BSF GENFLAGS1, MUTE2_FLAG ;
BTFSC RH22ONOFF_FLAGS, 2 ;
BCF GENFLAGS1, MUTE2_FLAG ;
;MUTE RH2.
BTFSS GENFLAGS1, MUTE2_FLAG ;
BRA RH223LEDON ;
MOVLW 0xB3 ;ALL SOUND OFF CHAN 4.
MOVWF CONTCHAN ;
MOVLW 0x78 ;
MOVWF CONTDB1 ;
CLRF CONTDB2 ;
BSF GENFLAGS1, MUTE_FLAG ;SENDS ALL SOUND OFF.
BCF DISPLAYREG, MUTE2LED ;RH2 ON LED, OFF.
BRA RH223J5 ;
RH223LEDON: ;
BSF DISPLAYREG, MUTE2LED ;RH2 ON LED, ON .
RH223J5: ;...................................
MOVFF EEDATA, PROGCHHOLD2 ;
BTFSS PROGCHHOLD2, 7 ;IF >0x7F IT IS A BLANK SOUND.
BCF GENFLAGS4, BLANK_RH2_FLAG;
BTFSC PROGCHHOLD2, 7 ;
BSF GENFLAGS4, BLANK_RH2_FLAG;RH2 MUTE (BLANK SOUND).
MOVLW 0xC3 ;PROG CHANGE CHAN 4.
MOVWF PROGCHHOLD1 ;
BSF SCANSTAT, 0 ;SET PROG SENT FLAG.
;
CALL RH2SOUND9 ;
;
GOTO SCANEND ;
;........................................................................................................................................................................................
RH22INSTR4: ;
BTFSS RH22_ON_FLAGS, 3 ;
GOTO RH22INSTR5 ;
;
MOVF PORTC, W ;
MOVWF PEDTEMP ;
ANDLW 0x02 ;ASSIGN FSW1.
BZ RH224J1 ;
CALL FSW1ASIGNCLEAR ;
BSF FSW1ASIGNREG22, FSW1_RH224_BIT;
MOVFF FSW1ASIGNREG22, EEDATA ;VALUE TO WRITE.
MOVLW 0x74 ;
MOVWF EEADR ;DATA MEMORY TO WRITE TO.
CALL EEPROM_WRITE ;
GOTO SCANEND ;
RH224J1: ;
MOVF PEDTEMP, W ;
ANDLW 0x01 ;ASSIGN FSW2.
BZ RH224J2 ;
CALL FSW2ASIGNCLEAR ;
BSF FSW2ASIGNREG22, FSW2_RH224_BIT;
MOVFF FSW2ASIGNREG22, EEDATA ;VALUE TO WRITE.
MOVLW 0x75 ;
MOVWF EEADR ;DATA MEMORY TO WRITE TO.
CALL EEPROM_WRITE ;
GOTO SCANEND ;
RH224J2: ;
MOVF PEDTEMP, W ;
ANDLW 0x04 ;ASSIGN FSW3.
BZ RH224J3 ;
CALL FSW3ASIGNCLEAR ;
BSF FSW3ASIGNREG22, FSW3_RH224_BIT;
MOVFF FSW3ASIGNREG22, EEDATA ;VALUE TO WRITE.
MOVLW 0x76 ;
MOVWF EEADR ;DATA MEMORY TO WRITE TO.
CALL EEPROM_WRITE ;
GOTO SCANEND ;
RH224J3: ;
MOVF PORTA, W ;
ANDLW 0x10 ;ASSIGN FSW4.
BZ RH224J4 ;
CALL FSW4ASIGNCLEAR ;
BSF FSW4ASIGNREG22, FSW4_RH224_BIT;
MOVFF FSW4ASIGNREG22, EEDATA ;VALUE TO WRITE.
MOVLW 0x77 ;
MOVWF EEADR ;DATA MEMORY TO WRITE TO.
CALL EEPROM_WRITE ;
GOTO SCANEND ;
;
RH224J4: ;
BTFSS MIDISTAT, SNDTRY_FLAG ;SOUND TRY OUT MODE FLAG.
BRA RH224J41 ;
BTFSS RECFLAGS6, REC_RH210_BIT ;
BRA RH224J41 ;
MOVLW 0x45 ;EEPROM REVERB LEVEL ADDRESS.
MOVWF EEADR ;DATA MEMORY TO WRITE TO.
MOVF RH2FXPOT, W ;
MOVWF EEDATA ;VALUE TO WRITE.
CALL EEPROM_WRITE ;
;
MOVLW 0x21 ;EEPROM ADDRESS.
MOVWF EEADR ;DATA MEMORY TO WRITE TO.
MOVF SNDTRI, W ;
MOVWF EEDATA ;VALUE TO WRITE.
CALL EEPROM_WRITE ;
;
RH224J41: ;
MOVLW 0x21 ;EEPROM ADDRESS.(NYLON GUITAR OCTAVE).
MOVWF EEADR ;
BCF EECON1, EEPGD ;SELECT DATA EEPROM MEMORY.
BCF EECON1, CFGS ;
BSF EECON1, RD ;ENABLE EEPROM READ.
;VALUE IN WREG.
BTFSS MIDISTAT, SNDTRY_FLAG ;SOUND TRY OUT MODE FLAG.
BRA RH224J42 ;
CLRF RECFLAGS1 ;BASS REC FLAGS.
CLRF RECFLAGS2 ;CHORD REC FLAGS.
CLRF RECFLAGS3 ;RH1 REC FLAGS.
CLRF RECFLAGS4 ;RH1 REC FLAGS.
CLRF RECFLAGS5 ;RH2 REC FLAGS.
CLRF RECFLAGS6 ;RH2 REC FLAGS.
CLRF RECFLAGS7 ;BASS BANK B REC FLAGS.
CLRF RECFLAGS8 ;CHORDS BANK B REC FLAGS.
BSF RECFLAGS6, REC_RH210_BIT ;
MOVFF EEDATA, SNDTRI ;
RH224J42: ;
BTFSC MIDISTAT, SNDTRY_FLAG ;SOUND-TRY-OUT MODE FLAG.
BRA RH224J5 ;IN SOUND-TRY-OUT MODE CONTINUE AS NORMAL.
MOVLW 0x08 ;4th BUTTON MASK.
ANDWF RH22ONOFF_FLAGS, F ;CLEAR OTHER RH2 INSTRUMENTS.
CLRF RH21ONOFF_FLAGS ;CLEAR OTHER RH2 INSTRUMENTS.
BTG RH22ONOFF_FLAGS, 3 ;
BTFSS RH22ONOFF_FLAGS, 3 ;
BSF GENFLAGS1, MUTE2_FLAG ;
BTFSC RH22ONOFF_FLAGS, 3 ;
BCF GENFLAGS1, MUTE2_FLAG ;
;MUTE RH2.
BTFSS GENFLAGS1, MUTE2_FLAG ;
BRA RH224LEDON ;
MOVLW 0xB3 ;ALL SOUND OFF CHAN 4.
MOVWF CONTCHAN ;
MOVLW 0x78 ;
MOVWF CONTDB1 ;
CLRF CONTDB2 ;
BSF GENFLAGS1, MUTE_FLAG ;SENDS ALL SOUND OFF.
BCF DISPLAYREG, MUTE2LED ;RH2 ON LED, OFF.
BRA RH224J5 ;
RH224LEDON: ;
BSF DISPLAYREG, MUTE2LED ;RH2 ON LED, ON .
RH224J5: ;...................................
MOVFF EEDATA, PROGCHHOLD2 ;
BTFSS PROGCHHOLD2, 7 ;IF >0x7F IT IS A BLANK SOUND.
BCF GENFLAGS4, BLANK_RH2_FLAG;
BTFSC PROGCHHOLD2, 7 ;
BSF GENFLAGS4, BLANK_RH2_FLAG;RH2 MUTE (BLANK SOUND).
MOVLW 0xC3 ;PROG CHANGE CHAN 4.
MOVWF PROGCHHOLD1 ;
BSF SCANSTAT, 0 ;SET PROG SENT FLAG.
;
CALL RH2SOUND10 ;
;
BSF GENFLAGS3, RH224OCTD_BIT;Working an octave down flag.
BCF GENFLAGS1, RH2OCTBIT ;
;
GOTO SCANEND ;
;........................................................................................................................................................................................
RH22INSTR5: ;
BTFSS RH22_ON_FLAGS, 4 ;
GOTO RH22INSTR6 ;
;
MOVF PORTC, W ;
MOVWF PEDTEMP ;
ANDLW 0x02 ;ASSIGN FSW1.
BZ RH225J1 ;
CALL FSW1ASIGNCLEAR ;
BSF FSW1ASIGNREG22, FSW1_RH225_BIT;
MOVFF FSW1ASIGNREG22, EEDATA ;VALUE TO WRITE.
MOVLW 0x74 ;
MOVWF EEADR ;DATA MEMORY TO WRITE TO.
CALL EEPROM_WRITE ;
GOTO SCANEND ;
RH225J1: ;
MOVF PEDTEMP, W ;
ANDLW 0x01 ;ASSIGN FSW2.
BZ RH225J2 ;
CALL FSW2ASIGNCLEAR ;
BSF FSW2ASIGNREG22, FSW2_RH225_BIT;
MOVFF FSW2ASIGNREG22, EEDATA ;VALUE TO WRITE.
MOVLW 0x75 ;
MOVWF EEADR ;DATA MEMORY TO WRITE TO.
CALL EEPROM_WRITE ;
GOTO SCANEND ;
RH225J2: ;
MOVF PEDTEMP, W ;
ANDLW 0x04 ;ASSIGN FSW3.
BZ RH225J3 ;
CALL FSW3ASIGNCLEAR ;
BSF FSW3ASIGNREG22, FSW3_RH225_BIT;
MOVFF FSW3ASIGNREG22, EEDATA ;VALUE TO WRITE.
MOVLW 0x76 ;
MOVWF EEADR ;DATA MEMORY TO WRITE TO.
CALL EEPROM_WRITE ;
GOTO SCANEND ;
RH225J3: ;
MOVF PORTA, W ;
ANDLW 0x10 ;ASSIGN FSW4.
BZ RH225J4 ;
CALL FSW4ASIGNCLEAR ;
BSF FSW4ASIGNREG22, FSW4_RH225_BIT;
MOVFF FSW4ASIGNREG22, EEDATA ;VALUE TO WRITE.
MOVLW 0x77 ;
MOVWF EEADR ;DATA MEMORY TO WRITE TO.
CALL EEPROM_WRITE ;
GOTO SCANEND ;
;
RH225J4: ;
BTFSS MIDISTAT, SNDTRY_FLAG ;SOUND TRY OUT MODE FLAG.
BRA RH225J41 ;
BTFSS RECFLAGS6, REC_RH211_BIT ;
BRA RH225J41 ;
MOVLW 0x46 ;EEPROM REVERB LEVEL ADDRESS.
MOVWF EEADR ;DATA MEMORY TO WRITE TO.
MOVF RH2FXPOT, W ;
MOVWF EEDATA ;VALUE TO WRITE.
CALL EEPROM_WRITE ;
;
MOVLW 0x22 ;EEPROM CHORD1 ADDRESS.
MOVWF EEADR ;DATA MEMORY TO WRITE TO.
MOVF SNDTRI, W ;
MOVWF EEDATA ;VALUE TO WRITE.
CALL EEPROM_WRITE ;
;
RH225J41: ;
MOVLW 0x22 ;EEPROM ADDRESS.
MOVWF EEADR ;
BCF EECON1, EEPGD ;SELECT DATA EEPROM MEMORY.
BCF EECON1, CFGS ;
BSF EECON1, RD ;ENABLE EEPROM READ.
;VALUE IN EEDATA.
BTFSS MIDISTAT, SNDTRY_FLAG ;SOUND TRY OUT MODE FLAG.
BRA RH225J42 ;
CLRF RECFLAGS1 ;BASS REC FLAGS.
CLRF RECFLAGS2 ;CHORD REC FLAGS.
CLRF RECFLAGS3 ;RH1 REC FLAGS.
CLRF RECFLAGS4 ;RH1 REC FLAGS.
CLRF RECFLAGS5 ;RH2 REC FLAGS.
CLRF RECFLAGS6 ;RH2 REC FLAGS.
CLRF RECFLAGS7 ;BASS BANK B REC FLAGS.
CLRF RECFLAGS8 ;CHORDS BANK B REC FLAGS.
BSF RECFLAGS6, REC_RH211_BIT ;
MOVFF EEDATA, SNDTRI ;
RH225J42: ;
BTFSC MIDISTAT, SNDTRY_FLAG ;SOUND-TRY-OUT MODE FLAG.
BRA RH225J5 ;IN SOUND-TRY-OUT MODE CONTINUE AS NORMAL.
MOVLW 0x10 ;5th BUTTON MASK.
ANDWF RH22ONOFF_FLAGS, F ;CLEAR OTHER RH2 INSTRUMENTS.
CLRF RH21ONOFF_FLAGS ;CLEAR OTHER RH2 INSTRUMENTS.
BTG RH22ONOFF_FLAGS, 4 ;
BTFSS RH22ONOFF_FLAGS, 4 ;
BSF GENFLAGS1, MUTE2_FLAG ;
BTFSC RH22ONOFF_FLAGS, 4 ;
BCF GENFLAGS1, MUTE2_FLAG ;
;MUTE RH2.
BTFSS GENFLAGS1, MUTE2_FLAG ;
BRA RH225LEDON ;
MOVLW 0xB3 ;ALL SOUND OFF CHAN 4.
MOVWF CONTCHAN ;
MOVLW 0x78 ;
MOVWF CONTDB1 ;
CLRF CONTDB2 ;
BSF GENFLAGS1, MUTE_FLAG ;SENDS ALL SOUND OFF.
BCF DISPLAYREG, MUTE2LED ;RH2 ON LED, OFF.
BRA RH225J5 ;
RH225LEDON: ;
BSF DISPLAYREG, MUTE2LED ;RH2 ON LED, ON .
RH225J5: ;...................................
MOVFF EEDATA, PROGCHHOLD2 ;
BTFSS PROGCHHOLD2, 7 ;IF >0x7F IT IS A BLANK SOUND.
BCF GENFLAGS4, BLANK_RH2_FLAG;
BTFSC PROGCHHOLD2, 7 ;
BSF GENFLAGS4, BLANK_RH2_FLAG;RH2 MUTE (BLANK SOUND).
MOVLW 0xC3 ;PROG CHANGE CHAN 4.
MOVWF PROGCHHOLD1 ;
BSF SCANSTAT, 0 ;SET BASS PROG SENT FLAG.
;
CALL RH2SOUND11 ;
;
GOTO SCANEND ;
;........................................................................................................................................................................................
RH22INSTR6: ;
BTFSS RH22_ON_FLAGS, 5 ;
GOTO RH22INSOCT ;Goto next button >
;
MOVF PORTC, W ;
MOVWF PEDTEMP ;
ANDLW 0x02 ;ASSIGN FSW1.
BZ RH226J1 ;
CALL FSW1ASIGNCLEAR ;
BSF FSW1ASIGNREG22, FSW1_RH226_BIT;
MOVFF FSW1ASIGNREG22, EEDATA ;VALUE TO WRITE.
MOVLW 0x74 ;
MOVWF EEADR ;DATA MEMORY TO WRITE TO.
CALL EEPROM_WRITE ;
GOTO SCANEND ;
RH226J1: ;
MOVF PEDTEMP, W ;
ANDLW 0x01 ;ASSIGN FSW2.
BZ RH226J2 ;
CALL FSW2ASIGNCLEAR ;
BSF FSW2ASIGNREG22, FSW2_RH226_BIT;
MOVFF FSW2ASIGNREG22, EEDATA ;VALUE TO WRITE.
MOVLW 0x75 ;
MOVWF EEADR ;DATA MEMORY TO WRITE TO.
CALL EEPROM_WRITE ;
GOTO SCANEND ;
RH226J2: ;
MOVF PEDTEMP, W ;
ANDLW 0x04 ;ASSIGN FSW3.
BZ RH226J3 ;
CALL FSW3ASIGNCLEAR ;
BSF FSW3ASIGNREG22, FSW3_RH226_BIT;
MOVFF FSW3ASIGNREG22, EEDATA ;VALUE TO WRITE.
MOVLW 0x76 ;
MOVWF EEADR ;DATA MEMORY TO WRITE TO.
CALL EEPROM_WRITE ;
GOTO SCANEND ;
RH226J3: ;
MOVF PORTA, W ;
ANDLW 0x10 ;ASSIGN FSW4.
BZ RH226J4 ;
CALL FSW4ASIGNCLEAR ;
BSF FSW4ASIGNREG22, FSW4_RH226_BIT;
MOVFF FSW4ASIGNREG22, EEDATA ;VALUE TO WRITE.
MOVLW 0x77 ;
MOVWF EEADR ;DATA MEMORY TO WRITE TO.
CALL EEPROM_WRITE ;
GOTO SCANEND ;
;...................................................
RH226J4: ;
BTFSS MIDISTAT, SNDTRY_FLAG ;SOUND TRY OUT MODE FLAG.
BRA RH226J41 ;
BTFSS RECFLAGS6, REC_RH212_BIT ;
BRA RH226J41 ;
MOVLW 0x47 ;EEPROM REVERB LEVEL ADDRESS.
MOVWF EEADR ;DATA MEMORY TO WRITE TO.
MOVF RH2FXPOT, W ;
MOVWF EEDATA ;VALUE TO WRITE.
CALL EEPROM_WRITE ;
;
MOVLW 0x23 ;EEPROM CHORD1 ADDRESS.
MOVWF EEADR ;DATA MEMORY TO WRITE TO.
MOVF SNDTRI, W ;
MOVWF EEDATA ;VALUE TO WRITE.
CALL EEPROM_WRITE ;
;
RH226J41: ;
MOVLW 0x23 ;EEPROM ADDRESS.
MOVWF EEADR ;
BCF EECON1, EEPGD ;SELECT DATA EEPROM MEMORY.
BCF EECON1, CFGS ;
BSF EECON1, RD ;ENABLE EEPROM READ.
;VALUE IN EEDATA.
BTFSS MIDISTAT, SNDTRY_FLAG ;SOUND TRY OUT MODE FLAG.
BRA RH226J42 ;
CLRF RECFLAGS1 ;BASS REC FLAGS.
CLRF RECFLAGS2 ;CHORD REC FLAGS.
CLRF RECFLAGS3 ;RH1 REC FLAGS.
CLRF RECFLAGS4 ;RH1 REC FLAGS.
CLRF RECFLAGS5 ;RH2 REC FLAGS.
CLRF RECFLAGS6 ;RH2 REC FLAGS.
CLRF RECFLAGS7 ;BASS BANK B REC FLAGS.
CLRF RECFLAGS8 ;CHORDS BANK B REC FLAGS.
BSF RECFLAGS6, REC_RH212_BIT ;This would be USED 2nd time through.
MOVFF EEDATA, SNDTRI ;
RH226J42: ;..........................................................
BTFSC MIDISTAT, SNDTRY_FLAG ;SOUND-TRY-OUT MODE FLAG.
BRA RH226J5 ;IN SOUND-TRY-OUT MODE CONTINUE AS NORMAL.
MOVLW 0x20 ;6th BUTTON MASK.
ANDWF RH22ONOFF_FLAGS, F ;CLEAR OTHER RH2 INSTRUMENTS.
CLRF RH21ONOFF_FLAGS ;CLEAR OTHER RH2 INSTRUMENTS.
BTG RH22ONOFF_FLAGS, 5 ;
BTFSS RH22ONOFF_FLAGS, 5 ;
BSF GENFLAGS1, MUTE2_FLAG ;
BTFSC RH22ONOFF_FLAGS, 5 ;
BCF GENFLAGS1, MUTE2_FLAG ;
;MUTE RH2.
BTFSS GENFLAGS1, MUTE2_FLAG ;
BRA RH226LEDON ;
MOVLW 0xB3 ;ALL SOUND OFF CHAN 4.
MOVWF CONTCHAN ;
MOVLW 0x78 ;
MOVWF CONTDB1 ;
CLRF CONTDB2 ;
BSF GENFLAGS1, MUTE_FLAG ;SENDS ALL SOUND OFF.
BCF DISPLAYREG, MUTE2LED ;RH2 ON LED, OFF.
BRA RH226J5 ;
RH226LEDON: ;..........................................................
BSF DISPLAYREG, MUTE2LED ;RH2 ON LED, ON .
RH226J5: ;
MOVFF EEDATA, PROGCHHOLD2 ;
BTFSS PROGCHHOLD2, 7 ;IF >0x7F IT IS A BLANK SOUND.
BCF GENFLAGS4, BLANK_RH2_FLAG ;
BTFSC PROGCHHOLD2, 7 ;
BSF GENFLAGS4, BLANK_RH2_FLAG ;RH2 MUTE (BLANK SOUND).
MOVLW 0xC3 ;PROG CHANGE CHAN 4.
MOVWF PROGCHHOLD1 ;
BSF SCANSTAT, 0 ;SET PROG SENT FLAG.
;
CALL RH2SOUND12 ;Send parameters for the sound.
;
GOTO SCANEND ;
;........................................................................................................................................................................................
RH22INSOCT: ;
BTFSS RH22_ON_FLAGS, 6 ;
BRA RH228 ;MUTE RH2 BUTTON.
;
MOVF PORTC, W ;
MOVWF PEDTEMP ;
ANDLW 0x02 ;ASSIGN FSW1.
BZ RH22RES1 ;
CALL FSW1ASIGNCLEAR ;
BSF FSW1ASIGNREG, FSW1_MRH2_BIT ;
MOVFF FSW1ASIGNREG, EEDATA ;VALUE TO WRITE.
MOVLW 0x78 ;
MOVWF EEADR ;DATA MEMORY TO WRITE TO.
CALL EEPROM_WRITE ;
GOTO SCANEND ;
RH22RES1: ;
MOVF PEDTEMP, W ;
ANDLW 0x01 ;ASSIGN FSW2.
BZ RH22RES2 ;
CALL FSW2ASIGNCLEAR ;
BSF FSW2ASIGNREG, FSW2_MRH2_BIT ;
MOVFF FSW2ASIGNREG, EEDATA ;VALUE TO WRITE.
MOVLW 0x79 ;
MOVWF EEADR ;DATA MEMORY TO WRITE TO.
CALL EEPROM_WRITE ;
GOTO SCANEND ;
RH22RES2: ;
MOVF PEDTEMP, W ;
ANDLW 0x04 ;ASSIGN FSW3.
BZ RH22RES3 ;
CALL FSW3ASIGNCLEAR ;
BSF FSW3ASIGNREG, FSW3_MRH2_BIT;
MOVFF FSW3ASIGNREG, EEDATA ;VALUE TO WRITE.
MOVLW 0x7A ;
MOVWF EEADR ;DATA MEMORY TO WRITE TO.
CALL EEPROM_WRITE ;
GOTO SCANEND ;
RH22RES3: ;
MOVF PORTA, W ;
ANDLW 0x10 ;ASSIGN FSW4.
BZ RH22RES4 ;
CALL FSW4ASIGNCLEAR ;
BSF FSW4ASIGNREG, FSW4_MRH2_BIT;
MOVFF FSW4ASIGNREG, EEDATA ;VALUE TO WRITE.
MOVLW 0x7B ;
MOVWF EEADR ;DATA MEMORY TO WRITE TO.
CALL EEPROM_WRITE ;
GOTO SCANEND ;
RH22RES4: ;
BTFSS MIDISTAT, SNDTRY_FLAG ;SOUND TRY OUT MODE - MUTE2 BUTTON IS
BRA RH227J1 ; INCREMENT THROUGH SOUND TABLE BUTTON.
BSF GENFLAGS10, STM_MUTINC_FLAG;
BRA RH2END ;
RH227J1: ;........................
BCF GENFLAGS6, RHINSTCHNG ;STOP RH CHANGE ALERT.
BTFSS GENFLAGS3, MUTOG_FLAG ;SWOPS MUTE RH1 <-> RH2.
BRA RH22NOMUTOG ;
BTG GENFLAGS1, MUTE2_FLAG ;
BTFSS GENFLAGS1, MUTE2_FLAG ;
BRA RH22MUTOGLEDON ;
MOVLW 0xB3 ;ALL SOUND OFF CHAN 4.
MOVWF CONTCHAN ;
MOVLW 0x78 ;
MOVWF CONTDB1 ;
CLRF CONTDB2 ;
BSF GENFLAGS1, MUTE_FLAG ;SENDS ALL SOUND OFF.
BCF DISPLAYREG, MUTE2LED ;RH2 ON LED, OFF.
BSF DISPLAYREG, MUTE1LED ;RH1 ON LED, ON.
BCF GENFLAGS1, MUTE1_FLAG ;
BTFSC MIDISTAT2, CH5COND_FLAG ;Ch5 ON IF PREVIOUSLY ON.
BSF GENFLAGS2, CH5ON_FLAG ;
GOTO SCANEND ;
RH22MUTOGLEDON: ;
BSF GENFLAGS1, MUTE1_FLAG ;
MOVLW 0xB0 ;ALL SOUND OFF CHAN 1.
MOVWF CONTCHAN ;
MOVLW 0x78 ;
MOVWF CONTDB1 ;
CLRF CONTDB2 ;
BSF GENFLAGS1, MUTE_FLAG ;SENDS ALL SOUND OFF.
BCF DISPLAYREG, MUTE1LED ;RH1 ON LED, OFF.
BSF DISPLAYREG, MUTE2LED ;RH2 ON LED, ON.
BCF GENFLAGS2, CH5ON_FLAG ;Ch5 OFF.
GOTO SCANEND ;
RH22NOMUTOG: ;...................................................
BTG GENFLAGS1, MUTE2_FLAG ;
BTFSS GENFLAGS1, MUTE2_FLAG ;
BRA RH22LEDON ;
MOVLW 0xB3 ;ALL SOUND OFF CHAN 4.
MOVWF CONTCHAN ;
MOVLW 0x78 ;
MOVWF CONTDB1 ;
CLRF CONTDB2 ;
BSF GENFLAGS1, MUTE_FLAG ;SENDS ALL SOUND OFF.
BCF DISPLAYREG, MUTE2LED ;'RH2 ON' LED IS NOW OFF.
;
CLRF RH22ONOFF_FLAGS ;
CLRF RH21ONOFF_FLAGS ;
GOTO SCANEND ;
RH22LEDON: ;
BSF DISPLAYREG, MUTE2LED ;RH2 ON LED, ON.
RH2END: ;
GOTO SCANEND ;
;........................................................................................................................................
RH228: ;MANUAL DRUMS1 ON/OFF BUTTON.
BTFSS RH22_ON_FLAGS, 7 ;
BRA FSWS ;
;
MOVF PORTC, W ;
MOVWF PEDTEMP ;
ANDLW 0x02 ;ASSIGN FSW1.
BZ PERC1J1 ;
CALL FSW1ASIGNCLEAR ;
BSF FSW1ASIGNREG22, FSW1_RH227_BIT;
MOVFF FSW1ASIGNREG22, EEDATA ;VALUE TO WRITE.
MOVLW 0x74 ;
MOVWF EEADR ;DATA MEMORY TO WRITE TO.
CALL EEPROM_WRITE ;
GOTO SCANEND ;
PERC1J1: ;
MOVF PEDTEMP, W ;
ANDLW 0x01 ;ASSIGN FSW2.
BZ PERC1J2 ;
CALL FSW2ASIGNCLEAR ;
BSF FSW2ASIGNREG22, FSW2_RH227_BIT;
MOVFF FSW2ASIGNREG22, EEDATA ;VALUE TO WRITE.
MOVLW 0x75 ;
MOVWF EEADR ;DATA MEMORY TO WRITE TO.
CALL EEPROM_WRITE ;
GOTO SCANEND ;
PERC1J2: ;
MOVF PEDTEMP, W ;
ANDLW 0x04 ;ASSIGN FSW3.
BZ PERC1J3 ;
CALL FSW3ASIGNCLEAR ;
BSF FSW3ASIGNREG22, FSW3_RH227_BIT;
MOVFF FSW3ASIGNREG22, EEDATA ;VALUE TO WRITE.
MOVLW 0x76 ;
MOVWF EEADR ;DATA MEMORY TO WRITE TO.
CALL EEPROM_WRITE ;
GOTO SCANEND ;
PERC1J3: ;
MOVF PORTA, W ;
ANDLW 0x10 ;ASSIGN FSW4.
BZ PERC1J4 ;
CALL FSW4ASIGNCLEAR ;
BSF FSW4ASIGNREG22, FSW4_RH227_BIT;
MOVFF FSW4ASIGNREG22, EEDATA ;VALUE TO WRITE.
MOVLW 0x77 ;
MOVWF EEADR ;DATA MEMORY TO WRITE TO.
CALL EEPROM_WRITE ;
GOTO SCANEND ;
PERC1J4: ;...................................................................
BCF GENFLAGS6, RHINSTCHNG ;STOP RH CHANGE ALERT.
BTG GENFLAGS3, DRM1_BIT ;TOGGLE DRUM1 PERCUSSION ON/OFF BIT.
BCF GENFLAGS8, DRM2_BIT ;
BCF GENFLAGS8, DRM3_BIT ;
GOTO SCANEND ;
;.............................................................................................................................................................................
FSWS: ;FOOTSWITCH INPUT & ASSIGNMENT.
MOVF PORTC, W ;
ANDLW 0x07 ;1st 3 BITS OF PORTC.
MOVWF PEDTEMP ;
BTFSC PORTA, 4 ;
BSF PEDTEMP, 3 ;
BTFSS PORTA, 4 ;
BCF PEDTEMP, 3 ;
;
MOVF PEDTEMP, W ;
XORWF FSWINHOLD, W ;RESULT IN W.
MOVFF PEDTEMP, FSWINHOLD ;
BZ FSW_STG1 ;NO CHANGE IN SCAN.
ANDWF PEDTEMP, W ;CHANGE TO ON NOW IN W.
BZ FSW_STG1 ;NO CHANGE IN SCAN.
;
BSF GENFLAGS10, DIP_CHNG_LED ;Dip control change led.
BTFSC WREG, 1 ;FSW1
BRA FSW1_SEL ;
BTFSC WREG, 0 ;FSW2
GOTO FSW2_SEL ;
BTFSC WREG, 2 ;FSW3
GOTO FSW3_SEL ;
BTFSC WREG, 3 ;FSW4
GOTO FSW4_SEL ;
FSW_STG1: ;.................................................................
BTFSS MIDISTAT, SNDTRY_FLAG ;SOUND TRY OUT MODE.
BRA FSW_STG1A ;
;
BTFSS GENFLAGS10, STM_MUTINC_FLAG;
BRA FSW_STG2 ;
BCF GENFLAGS10, STM_MUTINC_FLAG;
BRA FSW1_SEL ;
;
FSW_STG2: ;
BTFSS GENFLAGS10, STM_MUTDEC_FLAG;
BRA FSW_STG1A ;
BCF GENFLAGS10, STM_MUTDEC_FLAG;
BRA FSW2_SEL ;
;
FSW_STG1A: ;
GOTO FSWS_END ;
;........................................................................
FSW1_SEL: ;
BTFSS MIDISTAT, SNDTRY_FLAG ;SOUND TRY OUT MODE.
BRA FSW1_SELCONT ;>
INCF SNDTRI ;
MOVLW 0x80 ;128 = PROGRAM IS A BLANK.
CPFSEQ SNDTRI ;
BRA FSW1_TOJ1 ;
BRA FSW1_TOJ2 ;
FSW1_TOJ1: ;
MOVLW 0x81 ;
CPFSEQ SNDTRI ;
BRA FSW1_TOJ2 ;
CLRF SNDTRI ;
FSW1_TOJ2: ;
BSF SCANSTAT, 0 ;SET PROG SEND FLAG.
MOVFF SNDTRI, PROGCHHOLD2 ;
;
BCF GENFLAGS4, BLANK_RH1_FLAG ;PROGRAM A BLANK FLAG RH1.
BCF GENFLAGS4, CHDVEL0_FLAG ;
BCF GENFLAGS4, BLANK_RH2_FLAG ;
BCF GENFLAGS4, BASVEL0_FLAG ;
;
BTFSS SNDTRI, 7 ;
BRA FSW1_TOJ6 ;
;
MOVLW 0xC0 ;
CPFSEQ PROGCHHOLD1 ;PROG CHANGE CHANNEL.
BRA FSW1_TOJ3 ;
BSF GENFLAGS4, BLANK_RH1_FLAG ;PROGRAM A BLANK FLAG RH1.
FSW1_TOJ3: ;
MOVLW 0xC1 ;CHORDS.
CPFSEQ PROGCHHOLD1 ;PROG CHANGE CHANNEL.
BRA FSW1_TOJ4 ;
BSF GENFLAGS4, CHDVEL0_FLAG ;
FSW1_TOJ4: ;
MOVLW 0xC2 ;BASS.
CPFSEQ PROGCHHOLD1 ;PROG CHANGE CHANNEL.
BRA FSW1_TOJ5 ;
BSF GENFLAGS4, BASVEL0_FLAG ;
FSW1_TOJ5: ;
MOVLW 0xC3 ;RH2 - CH4.
CPFSEQ PROGCHHOLD1 ;PROG CHANGE CHANNEL.
BRA FSW1_TOJ6 ;
BSF GENFLAGS4, BLANK_RH2_FLAG ;
FSW1_TOJ6: ;
GOTO SCANEND ;
;
FSW1_SELCONT: ;....................
MOVF FSW1ASIGNREG, W ;
BZ FSW1_SELCONT2 ;
;
BTFSC FSW1ASIGNREG, FSW1_MRH2_BIT;
GOTO RH22RES4 ;
BTFSC FSW1ASIGNREG, FSW1_ORH2_BIT;
GOTO RH21RES4 ;
BTFSC FSW1ASIGNREG, FSW1_MRH1_BIT;
GOTO RH12RES4 ;
BTFSC FSW1ASIGNREG, FSW1_ORH1_BIT;
GOTO RH11RES4 ;
BTFSC FSW1ASIGNREG, FSW1_OCHD_BIT;
GOTO CHD2RES4 ;
BTFSC FSW1ASIGNREG, FSW1_OBAS_BIT;
GOTO BAS2RES4 ;
FSW1_SELCONT2: ;
MOVF FSW1ASIGNREGBA, W ;
BZ FSW1_SELCONT3 ;
;
BTFSC FSW1ASIGNREGBA, FSW1_BAS1_BIT;
GOTO BAS1J4 ;
BTFSC FSW1ASIGNREGBA, FSW1_BAS2_BIT;
GOTO BAS2J4 ;
BTFSC FSW1ASIGNREGBA, FSW1_BAS3_BIT;
GOTO BAS3J4 ;
BTFSC FSW1ASIGNREGBA, FSW1_BAS4_BIT;
GOTO BAS4J4 ;
BTFSC FSW1ASIGNREGBA, FSW1_BAS5_BIT;
GOTO BAS5J4 ;
BTFSC FSW1ASIGNREGBA, FSW1_BAS6_BIT;
GOTO BAS6J4 ;
BTFSC FSW1ASIGNREGBA, FSW1_BAS8_BIT;
GOTO BAS8J4 ;
FSW1_SELCONT3: ;
MOVF FSW1ASIGNREGCH, W ;
BZ FSW1_SELCONT4 ;
;
BTFSC FSW1ASIGNREGCH, FSW1_CHD1_BIT;
GOTO CHD1J4 ;
BTFSC FSW1ASIGNREGCH, FSW1_CHD2_BIT;
GOTO CHD2J4 ;
BTFSC FSW1ASIGNREGCH, FSW1_CHD3_BIT;
GOTO CHD3J4 ;
BTFSC FSW1ASIGNREGCH, FSW1_CHD4_BIT;
GOTO CHD4J4 ;
BTFSC FSW1ASIGNREGCH, FSW1_CHD5_BIT;
GOTO CHD5J4 ;
BTFSC FSW1ASIGNREGCH, FSW1_CHD6_BIT;
GOTO CHD6J4 ;
BTFSC FSW1ASIGNREGCH, FSW1_CHD8_BIT;
GOTO CHD8J4 ;
FSW1_SELCONT4: ;
MOVF FSW1ASIGNREG11, W ;
BZ FSW1_SELCONT5 ;
;
BTFSC FSW1ASIGNREG11, FSW1_RH111_BIT;
GOTO RH111J4 ;
BTFSC FSW1ASIGNREG11, FSW1_RH112_BIT;
GOTO RH112J4 ;
BTFSC FSW1ASIGNREG11, FSW1_RH113_BIT;
GOTO RH113J4 ;
BTFSC FSW1ASIGNREG11, FSW1_RH114_BIT;
GOTO RH114J4 ;
BTFSC FSW1ASIGNREG11, FSW1_RH115_BIT;
GOTO RH115J4 ;
BTFSC FSW1ASIGNREG11, FSW1_RH116_BIT;
GOTO RH116J4 ;
BTFSC FSW1ASIGNREG11, FSW1_RH118_BIT;
GOTO RH118J4 ;
FSW1_SELCONT5: ;
MOVF FSW1ASIGNREG12, W ;
BZ FSW1_SELCONT6 ;
;
BTFSC FSW1ASIGNREG12, FSW1_RH121_BIT;
GOTO RH121J4 ;
BTFSC FSW1ASIGNREG12, FSW1_RH122_BIT;
GOTO RH122J4 ;
BTFSC FSW1ASIGNREG12, FSW1_RH123_BIT;
GOTO RH123J4 ;
BTFSC FSW1ASIGNREG12, FSW1_RH124_BIT;
GOTO RH124J4 ;
BTFSC FSW1ASIGNREG12, FSW1_RH125_BIT;
GOTO RH125J4 ;
BTFSC FSW1ASIGNREG12, FSW1_RH126_BIT;
GOTO RH126J4 ;
BTFSC FSW1ASIGNREG12, FSW1_RH128_BIT;
GOTO RH128J4 ;
FSW1_SELCONT6: ;
MOVF FSW1ASIGNREG21, W ;
BZ FSW1_SELCONT7 ;
;
BTFSC FSW1ASIGNREG21, FSW1_RH211_BIT;
GOTO RH211J4 ;
BTFSC FSW1ASIGNREG21, FSW1_RH212_BIT;
GOTO RH212J4 ;
BTFSC FSW1ASIGNREG21, FSW1_RH213_BIT;
GOTO RH213J4 ;
BTFSC FSW1ASIGNREG21, FSW1_RH214_BIT;
GOTO RH214J4 ;
BTFSC FSW1ASIGNREG21, FSW1_RH215_BIT;
GOTO RH215J4 ;
BTFSC FSW1ASIGNREG21, FSW1_RH216_BIT;
GOTO RH216J4 ;
BTFSC FSW1ASIGNREG21, FSW1_RH218_BIT;
GOTO RH218J4 ;
FSW1_SELCONT7: ;
MOVF FSW1ASIGNREG22, W ;
BZ FSW1_SELCONT8 ;
;
BTFSC FSW1ASIGNREG22, FSW1_RH221_BIT;
GOTO RH221J4 ;
BTFSC FSW1ASIGNREG22, FSW1_RH222_BIT;
GOTO RH222J4 ;
BTFSC FSW1ASIGNREG22, FSW1_RH223_BIT;
GOTO RH223J4 ;
BTFSC FSW1ASIGNREG22, FSW1_RH224_BIT;
GOTO RH224J4 ;
BTFSC FSW1ASIGNREG22, FSW1_RH225_BIT;
GOTO RH225J4 ;
BTFSC FSW1ASIGNREG22, FSW1_RH226_BIT;
GOTO RH226J4 ;
BTFSC FSW1ASIGNREG22, FSW1_RH227_BIT;
GOTO PERC1J4 ;
FSW1_SELCONT8: ;
GOTO SCANEND ;>
;....................................
FSW2_SEL: ;
BTFSS MIDISTAT, SNDTRY_FLAG ;SOUND TRY OUT MODE.
BRA FSW2_SELCONT ;
DECF SNDTRI ;
MOVLW 0xFF ;
CPFSEQ SNDTRI ;
BRA FSW2_TOJ1 ;
MOVLW 0x80 ;128 = PROGRAM A BLANK.
MOVWF SNDTRI ;
FSW2_TOJ1: ;
BSF SCANSTAT, 0 ;SET PROG SEND FLAG.
MOVFF SNDTRI, PROGCHHOLD2 ;
;SEE WHICH CHANNEL IS ACTIVE.
BCF GENFLAGS4, BLANK_RH1_FLAG;PROGRAM A BLANK FLAG RH1.
BCF GENFLAGS4, CHDVEL0_FLAG ;
BCF GENFLAGS4, BLANK_RH2_FLAG;
BCF GENFLAGS4, BASVEL0_FLAG ;
;
BTFSS SNDTRI, 7 ;
BRA FSW2_TOJ6 ;
;
MOVLW 0xC0 ;
CPFSEQ PROGCHHOLD1 ;PROG CHANGE CHANNEL.
BRA FSW2_TOJ3 ;
BSF GENFLAGS4, BLANK_RH1_FLAG;PROGRAM A BLANK FLAG RH1.
FSW2_TOJ3: ;
MOVLW 0xC1 ;CHORDS.
CPFSEQ PROGCHHOLD1 ;PROG CHANGE CHANNEL.
BRA FSW2_TOJ4 ;
BSF GENFLAGS4, CHDVEL0_FLAG ;
FSW2_TOJ4: ;
MOVLW 0xC2 ;BASS.
CPFSEQ PROGCHHOLD1 ;PROG CHANGE CHANNEL.
BRA FSW2_TOJ5 ;
BSF GENFLAGS4, BASVEL0_FLAG ;
FSW2_TOJ5: ;
MOVLW 0xC3 ;CH4 - RH2.
CPFSEQ PROGCHHOLD1 ;PROG CHANGE CHANNEL.
BRA FSW2_TOJ6 ;
BSF GENFLAGS4, BLANK_RH2_FLAG;
FSW2_TOJ6: ;
BRA SCANEND ;>
;
FSW2_SELCONT: ;...................
MOVF FSW2ASIGNREG, W ;
BZ FSW2_SELCONT2 ;
;
BTFSC FSW2ASIGNREG, FSW2_MRH2_BIT;
GOTO RH22RES4 ;
BTFSC FSW2ASIGNREG, FSW2_ORH2_BIT;
GOTO RH21RES4 ;
BTFSC FSW2ASIGNREG, FSW2_MRH1_BIT;
GOTO RH12RES4 ;
BTFSC FSW2ASIGNREG, FSW2_ORH1_BIT;
GOTO RH11RES4 ;
BTFSC FSW2ASIGNREG, FSW2_OCHD_BIT;
GOTO CHD2RES4 ;
BTFSC FSW2ASIGNREG, FSW2_OBAS_BIT;
GOTO BAS2RES4 ;
FSW2_SELCONT2: ;
MOVF FSW2ASIGNREGBA, W ;
BZ FSW2_SELCONT3 ;
;
BTFSC FSW2ASIGNREGBA, FSW2_BAS1_BIT;
GOTO BAS1J4 ;
BTFSC FSW2ASIGNREGBA, FSW2_BAS2_BIT;
GOTO BAS2J4 ;
BTFSC FSW2ASIGNREGBA, FSW2_BAS3_BIT;
GOTO BAS3J4 ;
BTFSC FSW2ASIGNREGBA, FSW2_BAS4_BIT;
GOTO BAS4J4 ;
BTFSC FSW2ASIGNREGBA, FSW2_BAS5_BIT;
GOTO BAS5J4 ;
BTFSC FSW2ASIGNREGBA, FSW2_BAS6_BIT;
GOTO BAS6J4 ;
BTFSC FSW2ASIGNREGBA, FSW2_BAS8_BIT;
GOTO BAS8J4 ;
FSW2_SELCONT3: ;
MOVF FSW2ASIGNREGCH, W ;
BZ FSW2_SELCONT4 ;
;
BTFSC FSW2ASIGNREGCH, FSW2_CHD1_BIT;
GOTO CHD1J4 ;
BTFSC FSW2ASIGNREGCH, FSW2_CHD2_BIT;
GOTO CHD2J4 ;
BTFSC FSW2ASIGNREGCH, FSW2_CHD3_BIT;
GOTO CHD3J4 ;
BTFSC FSW2ASIGNREGCH, FSW2_CHD4_BIT;
GOTO CHD4J4 ;
BTFSC FSW2ASIGNREGCH, FSW2_CHD5_BIT;
GOTO CHD5J4 ;
BTFSC FSW2ASIGNREGCH, FSW2_CHD6_BIT;
GOTO CHD6J4 ;
BTFSC FSW2ASIGNREGCH, FSW2_CHD8_BIT;
GOTO CHD8J4 ;
FSW2_SELCONT4: ;
MOVF FSW2ASIGNREG11, W ;
BZ FSW2_SELCONT5 ;
;
BTFSC FSW2ASIGNREG11, FSW2_RH111_BIT;
GOTO RH111J4 ;
BTFSC FSW2ASIGNREG11, FSW2_RH112_BIT;
GOTO RH112J4 ;
BTFSC FSW2ASIGNREG11, FSW2_RH113_BIT;
GOTO RH113J4 ;
BTFSC FSW2ASIGNREG11, FSW2_RH114_BIT;
GOTO RH114J4 ;
BTFSC FSW2ASIGNREG11, FSW2_RH115_BIT;
GOTO RH115J4 ;
BTFSC FSW2ASIGNREG11, FSW2_RH116_BIT;
GOTO RH116J4 ;
BTFSC FSW2ASIGNREG11, FSW2_RH118_BIT;
GOTO RH118J4 ;
FSW2_SELCONT5: ;
MOVF FSW2ASIGNREG12, W ;
BZ FSW2_SELCONT6 ;
;
BTFSC FSW2ASIGNREG12, FSW2_RH121_BIT;
GOTO RH121J4 ;
BTFSC FSW2ASIGNREG12, FSW2_RH122_BIT;
GOTO RH122J4 ;
BTFSC FSW2ASIGNREG12, FSW2_RH123_BIT;
GOTO RH123J4 ;
BTFSC FSW2ASIGNREG12, FSW2_RH124_BIT;
GOTO RH124J4 ;
BTFSC FSW2ASIGNREG12, FSW2_RH125_BIT;
GOTO RH125J4 ;
BTFSC FSW2ASIGNREG12, FSW2_RH126_BIT;
GOTO RH126J4 ;
BTFSC FSW2ASIGNREG12, FSW2_RH128_BIT;
GOTO RH128J4 ;
FSW2_SELCONT6: ;
MOVF FSW2ASIGNREG21, W ;
BZ FSW2_SELCONT7 ;
;
BTFSC FSW2ASIGNREG21, FSW2_RH211_BIT;
GOTO RH211J4 ;
BTFSC FSW2ASIGNREG21, FSW2_RH212_BIT;
GOTO RH212J4 ;
BTFSC FSW2ASIGNREG21, FSW2_RH213_BIT;
GOTO RH213J4 ;
BTFSC FSW2ASIGNREG21, FSW2_RH214_BIT;
GOTO RH214J4 ;
BTFSC FSW2ASIGNREG21, FSW2_RH215_BIT;
GOTO RH215J4 ;
BTFSC FSW2ASIGNREG21, FSW2_RH216_BIT;
GOTO RH216J4 ;
BTFSC FSW2ASIGNREG21, FSW2_RH218_BIT;
GOTO RH218J4
FSW2_SELCONT7: ;
MOVF FSW2ASIGNREG22, W ;
BZ FSW2_SELCONT8 ;
;
BTFSC FSW2ASIGNREG22, FSW2_RH221_BIT;
GOTO RH221J4 ;
BTFSC FSW2ASIGNREG22, FSW2_RH222_BIT;
GOTO RH222J4 ;
BTFSC FSW2ASIGNREG22, FSW2_RH223_BIT;
GOTO RH223J4 ;
BTFSC FSW2ASIGNREG22, FSW2_RH224_BIT;
GOTO RH224J4 ;
BTFSC FSW2ASIGNREG22, FSW2_RH225_BIT;
GOTO RH225J4 ;
BTFSC FSW2ASIGNREG22, FSW2_RH226_BIT;
GOTO RH226J4 ;
BTFSC FSW2ASIGNREG22, FSW2_RH227_BIT;
GOTO PERC1J4 ;
FSW2_SELCONT8: ;
GOTO SCANEND ;
;....................................
FSW3_SEL: ;
MOVF FSW3ASIGNREG, W ;
BZ FSW3_SELCONT2 ;
;
BTFSC FSW3ASIGNREG, FSW3_MRH2_BIT;
GOTO RH22RES4 ;
BTFSC FSW3ASIGNREG, FSW3_ORH2_BIT;
GOTO RH21RES4 ;
BTFSC FSW3ASIGNREG, FSW3_MRH1_BIT;
GOTO RH12RES4 ;
BTFSC FSW3ASIGNREG, FSW3_ORH1_BIT;
GOTO RH11RES4 ;
BTFSC FSW3ASIGNREG, FSW3_OCHD_BIT;
GOTO CHD2RES4 ;
BTFSC FSW3ASIGNREG, FSW3_OBAS_BIT;
GOTO BAS2RES4 ;
FSW3_SELCONT2: ;
MOVF FSW3ASIGNREGBA, W ;
BZ FSW3_SELCONT3 ;
;
BTFSC FSW3ASIGNREGBA, FSW3_BAS1_BIT;
GOTO BAS1J4 ;
BTFSC FSW3ASIGNREGBA, FSW3_BAS2_BIT;
GOTO BAS2J4 ;
BTFSC FSW3ASIGNREGBA, FSW3_BAS3_BIT;
GOTO BAS3J4 ;
BTFSC FSW3ASIGNREGBA, FSW3_BAS4_BIT;
GOTO BAS4J4 ;
BTFSC FSW3ASIGNREGBA, FSW3_BAS5_BIT;
GOTO BAS5J4 ;
BTFSC FSW3ASIGNREGBA, FSW3_BAS6_BIT;
GOTO BAS6J4 ;
BTFSC FSW3ASIGNREGBA, FSW3_BAS8_BIT;
GOTO BAS8J4 ;
FSW3_SELCONT3: ;
MOVF FSW3ASIGNREGCH, W ;
BZ FSW3_SELCONT4 ;
;
BTFSC FSW3ASIGNREGCH, FSW3_CHD1_BIT;
GOTO CHD1J4 ;
BTFSC FSW3ASIGNREGCH, FSW3_CHD2_BIT;
GOTO CHD2J4 ;
BTFSC FSW3ASIGNREGCH, FSW3_CHD3_BIT;
GOTO CHD3J4 ;
BTFSC FSW3ASIGNREGCH, FSW3_CHD4_BIT;
GOTO CHD4J4 ;
BTFSC FSW3ASIGNREGCH, FSW3_CHD5_BIT;
GOTO CHD5J4 ;
BTFSC FSW3ASIGNREGCH, FSW3_CHD6_BIT;
GOTO CHD6J4 ;
BTFSC FSW3ASIGNREGCH, FSW3_CHD8_BIT;
GOTO CHD8J4 ;
FSW3_SELCONT4: ;
MOVF FSW3ASIGNREG11, W ;
BZ FSW3_SELCONT5 ;
;
BTFSC FSW3ASIGNREG11, FSW3_RH111_BIT;
GOTO RH111J4 ;
BTFSC FSW3ASIGNREG11, FSW3_RH112_BIT;
GOTO RH112J4 ;
BTFSC FSW3ASIGNREG11, FSW3_RH113_BIT;
GOTO RH113J4 ;
BTFSC FSW3ASIGNREG11, FSW3_RH114_BIT;
GOTO RH114J4 ;
BTFSC FSW3ASIGNREG11, FSW3_RH115_BIT;
GOTO RH115J4 ;
BTFSC FSW3ASIGNREG11, FSW3_RH116_BIT;
GOTO RH116J4 ;
BTFSC FSW3ASIGNREG11, FSW3_RH118_BIT;
GOTO RH118J4 ;
FSW3_SELCONT5: ;
MOVF FSW3ASIGNREG12, W ;
BZ FSW3_SELCONT6 ;
;
BTFSC FSW3ASIGNREG12, FSW3_RH121_BIT;
GOTO RH121J4 ;
BTFSC FSW3ASIGNREG12, FSW3_RH122_BIT;
GOTO RH122J4 ;
BTFSC FSW3ASIGNREG12, FSW3_RH123_BIT;
GOTO RH123J4 ;
BTFSC FSW3ASIGNREG12, FSW3_RH124_BIT;
GOTO RH124J4 ;
BTFSC FSW3ASIGNREG12, FSW3_RH125_BIT;
GOTO RH125J4 ;
BTFSC FSW3ASIGNREG12, FSW3_RH126_BIT;
GOTO RH126J4 ;
BTFSC FSW3ASIGNREG12, FSW3_RH128_BIT;
GOTO RH128J4 ;
FSW3_SELCONT6: ;
MOVF FSW3ASIGNREG21, W ;
BZ FSW3_SELCONT7 ;
;
BTFSC FSW3ASIGNREG21, FSW3_RH211_BIT;
GOTO RH211J4 ;
BTFSC FSW3ASIGNREG21, FSW3_RH212_BIT;
GOTO RH212J4 ;
BTFSC FSW3ASIGNREG21, FSW3_RH213_BIT;
GOTO RH213J4 ;
BTFSC FSW3ASIGNREG21, FSW3_RH214_BIT;
GOTO RH214J4 ;
BTFSC FSW3ASIGNREG21, FSW3_RH215_BIT;
GOTO RH215J4 ;
BTFSC FSW3ASIGNREG21, FSW3_RH216_BIT;
GOTO RH216J4 ;
BTFSC FSW3ASIGNREG21, FSW3_RH218_BIT;
GOTO RH218J4
FSW3_SELCONT7: ;
MOVF FSW3ASIGNREG22, W ;
BZ FSW3_SELCONT8 ;
;
BTFSC FSW3ASIGNREG22, FSW3_RH221_BIT;
GOTO RH221J4 ;
BTFSC FSW3ASIGNREG22, FSW3_RH222_BIT;
GOTO RH222J4 ;
BTFSC FSW3ASIGNREG22, FSW3_RH223_BIT;
GOTO RH223J4 ;
BTFSC FSW3ASIGNREG22, FSW3_RH224_BIT;
GOTO RH224J4 ;
BTFSC FSW3ASIGNREG22, FSW3_RH225_BIT;
GOTO RH225J4 ;
BTFSC FSW3ASIGNREG22, FSW3_RH226_BIT;
GOTO RH226J4 ;
BTFSC FSW3ASIGNREG22, FSW3_RH227_BIT;
GOTO PERC1J4 ;
FSW3_SELCONT8: ;
GOTO SCANEND ;
;....................................
FSW4_SEL: ;
MOVF FSW4ASIGNREG, W ;
BZ FSW4_SELCONT2 ;
;
BTFSC FSW4ASIGNREG, FSW4_MRH2_BIT;
GOTO RH22RES4 ;
BTFSC FSW4ASIGNREG, FSW4_ORH2_BIT;
GOTO RH21RES4 ;
BTFSC FSW4ASIGNREG, FSW4_MRH1_BIT;
GOTO RH12RES4 ;
BTFSC FSW4ASIGNREG, FSW4_ORH1_BIT;
GOTO RH11RES4 ;
BTFSC FSW4ASIGNREG, FSW4_OCHD_BIT;
GOTO CHD2RES4 ;
BTFSC FSW4ASIGNREG, FSW4_OBAS_BIT;
GOTO BAS2RES4 ;
FSW4_SELCONT2: ;
MOVF FSW4ASIGNREGBA, W ;
BZ FSW4_SELCONT3 ;
;
BTFSC FSW4ASIGNREGBA, FSW4_BAS1_BIT;
GOTO BAS1J4 ;
BTFSC FSW4ASIGNREGBA, FSW4_BAS2_BIT;
GOTO BAS2J4 ;
BTFSC FSW4ASIGNREGBA, FSW4_BAS3_BIT;
GOTO BAS3J4 ;
BTFSC FSW4ASIGNREGBA, FSW4_BAS4_BIT;
GOTO BAS4J4 ;
BTFSC FSW4ASIGNREGBA, FSW4_BAS5_BIT;
GOTO BAS5J4 ;
BTFSC FSW4ASIGNREGBA, FSW4_BAS6_BIT;
GOTO BAS6J4 ;
BTFSC FSW4ASIGNREGBA, FSW4_BAS8_BIT;
GOTO BAS8J4 ;
FSW4_SELCONT3: ;
MOVF FSW4ASIGNREGCH, W ;
BZ FSW4_SELCONT4 ;
;
BTFSC FSW4ASIGNREGCH, FSW4_CHD1_BIT;
GOTO CHD1J4 ;
BTFSC FSW4ASIGNREGCH, FSW4_CHD2_BIT;
GOTO CHD2J4 ;
BTFSC FSW4ASIGNREGCH, FSW4_CHD3_BIT;
GOTO CHD3J4 ;
BTFSC FSW4ASIGNREGCH, FSW4_CHD4_BIT;
GOTO CHD4J4 ;
BTFSC FSW4ASIGNREGCH, FSW4_CHD5_BIT;
GOTO CHD5J4 ;
BTFSC FSW4ASIGNREGCH, FSW4_CHD6_BIT;
GOTO CHD6J4 ;
BTFSC FSW4ASIGNREGCH, FSW4_CHD8_BIT;
GOTO CHD8J4 ;
FSW4_SELCONT4: ;
MOVF FSW4ASIGNREG11, W ;
BZ FSW4_SELCONT5 ;
;
BTFSC FSW4ASIGNREG11, FSW4_RH111_BIT;
GOTO RH111J4 ;
BTFSC FSW4ASIGNREG11, FSW4_RH112_BIT;
GOTO RH112J4 ;
BTFSC FSW4ASIGNREG11, FSW4_RH113_BIT;
GOTO RH113J4 ;
BTFSC FSW4ASIGNREG11, FSW4_RH114_BIT;
GOTO RH114J4 ;
BTFSC FSW4ASIGNREG11, FSW4_RH115_BIT;
GOTO RH115J4 ;
BTFSC FSW4ASIGNREG11, FSW4_RH116_BIT;
GOTO RH116J4 ;
BTFSC FSW4ASIGNREG11, FSW4_RH118_BIT;
GOTO RH118J4 ;
;
FSW4_SELCONT5: ;
MOVF FSW4ASIGNREG12, W ;
BZ FSW4_SELCONT6 ;
;
BTFSC FSW4ASIGNREG12, FSW4_RH121_BIT;
GOTO RH121J4 ;
BTFSC FSW4ASIGNREG12, FSW4_RH122_BIT;
GOTO RH122J4 ;
BTFSC FSW4ASIGNREG12, FSW4_RH123_BIT;
GOTO RH123J4 ;
BTFSC FSW4ASIGNREG12, FSW4_RH124_BIT;
GOTO RH124J4 ;
BTFSC FSW4ASIGNREG12, FSW4_RH125_BIT;
GOTO RH125J4 ;
BTFSC FSW4ASIGNREG12, FSW4_RH126_BIT;
GOTO RH126J4 ;
BTFSC FSW4ASIGNREG12, FSW4_RH128_BIT;
GOTO RH128J4 ;
FSW4_SELCONT6: ;
MOVF FSW4ASIGNREG21, W ;
BZ FSW4_SELCONT7 ;
;
BTFSC FSW4ASIGNREG21, FSW4_RH211_BIT;
GOTO RH211J4 ;
BTFSC FSW4ASIGNREG21, FSW4_RH212_BIT;
GOTO RH212J4 ;
BTFSC FSW4ASIGNREG21, FSW4_RH213_BIT;
GOTO RH213J4 ;
BTFSC FSW4ASIGNREG21, FSW4_RH214_BIT;
GOTO RH214J4 ;
BTFSC FSW4ASIGNREG21, FSW4_RH215_BIT;
GOTO RH215J4 ;
BTFSC FSW4ASIGNREG21, FSW4_RH216_BIT;
GOTO RH216J4 ;
BTFSC FSW4ASIGNREG21, FSW4_RH218_BIT;
GOTO RH218J4 ;
FSW4_SELCONT7: ;
MOVF FSW4ASIGNREG22, W ;
BZ FSW4_SELCONT8 ;
;
BTFSC FSW4ASIGNREG22, FSW4_RH221_BIT;
GOTO RH221J4 ;
BTFSC FSW4ASIGNREG22, FSW4_RH222_BIT;
GOTO RH222J4 ;
BTFSC FSW4ASIGNREG22, FSW4_RH223_BIT;
GOTO RH223J4 ;
BTFSC FSW4ASIGNREG22, FSW4_RH224_BIT;
GOTO RH224J4 ;
BTFSC FSW4ASIGNREG22, FSW4_RH225_BIT;
GOTO RH225J4 ;
BTFSC FSW4ASIGNREG22, FSW4_RH226_BIT;
GOTO RH226J4 ;
BTFSC FSW4ASIGNREG22, FSW4_RH227_BIT;
GOTO PERC1J4 ;
FSW4_SELCONT8: ;
BRA SCANEND ;
;....................................................................
FSWS_END: ;
;.....................................................................................................................................................................
MTUNEBUT: ;MASTER-TUNE BUTTON (MUTE RH2 BUTTON) if held down for >1.5secs.
BTFSC MIDISTAT, SNDTRY_FLAG ;SOUND TRY OUT MODE FLAG.
BRA MTUNEBUTEND ;
MOVLW 0x01 ;RB0, ENABLE RH27 BUSS.
MOVWF PORTB ;
NOP ;
NOP ;
MOVF PORTD, W ;TO WREG.
CLRF PORTB ;
ANDLW 0x40 ;ISOLATE BIT 6 (MUTE2 BUTTON).
MOVWF SCANTEMP1 ;
;
BTFSS GENFLAGS9, MTTOG_FLAG ;
BRA MTINJ1 ;
XORWF MTUNESCAN_HOLD, W ;RESULT IN W.
MOVFF SCANTEMP1, MTUNESCAN_HOLD ;
BZ MTSCANJ1 ;
;
BTFSC SCANTEMP1, 6 ;CHANGE TO ON.
BRA MTSCANCLR ;
BRA MTSCANJ1 ;
;...................................................
MTINJ1: ;
MOVFF SCANTEMP1, MTUNESCAN_HOLD ;
BTFSS WREG, 6 ;IS MUTE2 BUTTON HELD DOWN ?
BRA MTSCANWRT ;NO.
BTFSC GENFLAGS9, MTWAIT_BIT ;YES.
BRA MTSCANJ1 ;
BSF GENFLAGS9, MTWAIT_BIT ;FIRST TIME IN FLAG.
MOVLW D'125' ;Button ACTIVATE INTERVAL.(x20ms).
MOVWF MTUNEDTIME ;START MTUNE DOWN TIMER.
BRA MTSCANORM ;>
;
MTSCANJ1: ;
TSTFSZ MTUNEDTIME ;HAS BUTTON BEEN HELD DOWN ENOUGH.
BRA MTSCANORM ;>NO, NOT LONG ENOUGH YET.
BSF GENFLAGS9, MTUNED_FLAG ;YES - TURN MTUNE EDIT ON.
BSF GENFLAGS9, MTTOG_FLAG ;MT TOGGLE FLAG.
BCF GENFLAGS1, MUTE2_FLAG ;ENABLE RH2.
;
;
TSTFSZ MTUNFLASH ;
BRA MTSCANJ2 ;
BTG DISPLAYREG, MUTE2LED ;FLASH MUTE2 LED.
MOVLW D'40' ;LED FLASH RATE.
MOVWF MTUNFLASH ;
MTSCANJ2: ;
GOTO SCANEND2 ;EXIT SCAN>
;.......................................
MTSCANCLR: ;MTUNE EXIT ROUTINE.
MOVF MTUNCTRL_HOLD, W ;
MOVWF EEDATA ;VALUE TO WRITE TO EEPROM.
MOVLW 0xEF ;
MOVWF EEADR ;DATA MEMORY TO WRITE TO.
CALL EEPROM_WRITE ;
;
BCF GENFLAGS1, MUTE2_FLAG ;ENABLE RH2.
BSF DISPLAYREG, MUTE2LED ;MUTE2 LED ON.
MTSCANWRT: ;
BCF GENFLAGS9, MTWAIT_BIT ;
BCF GENFLAGS9, MTUNED_FLAG ;MTUNE EDIT MODE IS NOW OFF.
BCF GENFLAGS9, MTTOG_FLAG ;
MTSCANORM: ;....................................
TSTFSZ SCANDEL ;LOCKOUT TIME.
GOTO SCANEXIT ;
MTUNEBUTEND: ;
;----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
SCANEND: ;
MOVLW D'30' ;LED DIP OFF TIME.(2ms x 30).
SCANENDXTRAT: ;
MOVWF SCANDEL ;
SCANEND2: ;
CLRF PORTB ;
;............................................................................................................................................................
BUTTON_CHANGE: ;
BTFSS GENFLAGS6, RHINSTCHNG ;HAS A RH BUTTON BEEN PRESSED.
BRA BUT_CHNG_END ;>
BCF GENFLAGS6, RHINSTCHNG ;
;
;BTFSC RH12_ON_FLAGS, 7 ;DON'T CANCEL TREM IF SOLO BUTTON PRESSED.
;BRA BUT_LEAVE_TREM ;
BCF GENFLAGS7, TREMON_BIT ;CANCEL TREMELO.
;SEND TREMELO OFF
BSF GENFLAGS6, SYSX11_B7_FLG ;
MOVLW 0x21 ;SELECT CHANNEL 1!
MOVWF SYSX11BYTE7 ;
MOVLW 0x26 ;SELECT TREM DEPTH.
MOVWF SYSX11BYTE8 ;
MOVLW 0x00 ;MOD DEPTH VALUE.
MOVWF SYSX11BYTE9 ;
CALL SYSX11BYTE ;SET MOD LFO1 DCA DEPTH.
;
BSF GENFLAGS6, SYSX11_B7_FLG ;
MOVLW 0x25 ;SELECT CHANNEL 5!
MOVWF SYSX11BYTE7 ;
CALL SYSX11BYTE ;SET MOD LFO1 DCA DEPTH.
;
BSF GENFLAGS6, SYSX11_B7_FLG ;
MOVLW 0x24 ;SELECT CHANNEL 4 !
MOVWF SYSX11BYTE7 ;
CALL SYSX11BYTE ;SET MOD LFO1 DCA DEPTH.
BUT_LEAVE_TREM: ;
BUT_CHNG_END: ;
;..................................................................................................................................................................
;...................................................................................................................................................................
SCANEXIT: ;END OF BUTTONS SCAN.
RETURN FAST ;END OF BUTTON HOLDING EDIT ROUTINES.
;============================================================================================================
;============================================================================================================
FSW1ASIGNCLEAR: ;
;
CLRF EEDATA ;VALUE TO WRITE.
MOVLW 0x78 ;
MOVWF EEADR ;DATA MEMORY TO WRITE TO.
CALL EEPROM_WRITE ;
;
CLRF EEDATA ;VALUE TO WRITE.
MOVLW 0x60 ;
MOVWF EEADR ;DATA MEMORY TO WRITE TO.
CALL EEPROM_WRITE ;
;
CLRF EEDATA ;VALUE TO WRITE.
MOVLW 0x64 ;
MOVWF EEADR ;DATA MEMORY TO WRITE TO.
CALL EEPROM_WRITE ;
;
CLRF EEDATA ;VALUE TO WRITE.
MOVLW 0x68 ;
MOVWF EEADR ;DATA MEMORY TO WRITE TO.
CALL EEPROM_WRITE ;
;
CLRF EEDATA ;VALUE TO WRITE.
MOVLW 0x6C ;
MOVWF EEADR ;DATA MEMORY TO WRITE TO.
CALL EEPROM_WRITE ;
;
CLRF EEDATA ;VALUE TO WRITE.
MOVLW 0x70 ;
MOVWF EEADR ;DATA MEMORY TO WRITE TO.
CALL EEPROM_WRITE ;
;
CLRF EEDATA ;VALUE TO WRITE.
MOVLW 0x74 ;
MOVWF EEADR ;DATA MEMORY TO WRITE TO.
CALL EEPROM_WRITE ;
FSW1REGCLEAR: ;
CLRF FSW1ASIGNREG ;
CLRF FSW1ASIGNREGBA ;
CLRF FSW1ASIGNREGCH ;
CLRF FSW1ASIGNREG11 ;
CLRF FSW1ASIGNREG12 ;
CLRF FSW1ASIGNREG21 ;
CLRF FSW1ASIGNREG22 ;
RETURN ;
;......................................................................
FSW2ASIGNCLEAR: ;
;
CLRF EEDATA ;VALUE TO WRITE.
MOVLW 0x79 ;
MOVWF EEADR ;DATA MEMORY TO WRITE TO.
CALL EEPROM_WRITE ;
;
CLRF EEDATA ;VALUE TO WRITE.
MOVLW 0x61 ;
MOVWF EEADR ;DATA MEMORY TO WRITE TO.
CALL EEPROM_WRITE ;
;
CLRF EEDATA ;VALUE TO WRITE.
MOVLW 0x65 ;
MOVWF EEADR ;DATA MEMORY TO WRITE TO.
CALL EEPROM_WRITE ;
;
CLRF EEDATA ;VALUE TO WRITE.
MOVLW 0x69 ;
MOVWF EEADR ;DATA MEMORY TO WRITE TO.
CALL EEPROM_WRITE ;
;
CLRF EEDATA ;VALUE TO WRITE.
MOVLW 0x6D ;
MOVWF EEADR ;DATA MEMORY TO WRITE TO.
CALL EEPROM_WRITE ;
;
CLRF EEDATA ;VALUE TO WRITE.
MOVLW 0x71 ;
MOVWF EEADR ;DATA MEMORY TO WRITE TO.
CALL EEPROM_WRITE ;
;
CLRF EEDATA ;VALUE TO WRITE.
MOVLW 0x75 ;
MOVWF EEADR ;DATA MEMORY TO WRITE TO.
CALL EEPROM_WRITE ;
FSW2REGCLEAR: ;
CLRF FSW2ASIGNREG ;
CLRF FSW2ASIGNREGBA ;
CLRF FSW2ASIGNREGCH ;
CLRF FSW2ASIGNREG11 ;
CLRF FSW2ASIGNREG12 ;
CLRF FSW2ASIGNREG21 ;
CLRF FSW2ASIGNREG22 ;
RETURN ;
;......................................................................
FSW3ASIGNCLEAR: ;
;
CLRF EEDATA ;VALUE TO WRITE.
MOVLW 0x7A ;
MOVWF EEADR ;DATA MEMORY TO WRITE TO.
CALL EEPROM_WRITE ;
;
CLRF EEDATA ;VALUE TO WRITE.
MOVLW 0x62 ;
MOVWF EEADR ;DATA MEMORY TO WRITE TO.
CALL EEPROM_WRITE ;
;
CLRF EEDATA ;VALUE TO WRITE.
MOVLW 0x66 ;
MOVWF EEADR ;DATA MEMORY TO WRITE TO.
CALL EEPROM_WRITE ;
;
CLRF EEDATA ;VALUE TO WRITE.
MOVLW 0x6A ;
MOVWF EEADR ;DATA MEMORY TO WRITE TO.
CALL EEPROM_WRITE ;
;
CLRF EEDATA ;VALUE TO WRITE.
MOVLW 0x6E ;
MOVWF EEADR ;DATA MEMORY TO WRITE TO.
CALL EEPROM_WRITE ;
;
CLRF EEDATA ;VALUE TO WRITE.
MOVLW 0x72 ;
MOVWF EEADR ;DATA MEMORY TO WRITE TO.
CALL EEPROM_WRITE ;
;
CLRF EEDATA ;VALUE TO WRITE.
MOVLW 0x76 ;
MOVWF EEADR ;DATA MEMORY TO WRITE TO.
CALL EEPROM_WRITE ;
FSW3REGCLEAR: ;
CLRF FSW3ASIGNREG ;
CLRF FSW3ASIGNREGBA ;
CLRF FSW3ASIGNREGCH ;
CLRF FSW3ASIGNREG11 ;
CLRF FSW3ASIGNREG12 ;
CLRF FSW3ASIGNREG21 ;
CLRF FSW3ASIGNREG22 ;
RETURN ;
;......................................................................
FSW4ASIGNCLEAR: ;
;
CLRF EEDATA ;VALUE TO WRITE.
MOVLW 0x7B ;
MOVWF EEADR ;DATA MEMORY TO WRITE TO.
CALL EEPROM_WRITE ;
;
CLRF EEDATA ;VALUE TO WRITE.
MOVLW 0x63 ;
MOVWF EEADR ;DATA MEMORY TO WRITE TO.
CALL EEPROM_WRITE ;
;
CLRF EEDATA ;VALUE TO WRITE.
MOVLW 0x67 ;
MOVWF EEADR ;DATA MEMORY TO WRITE TO.
CALL EEPROM_WRITE ;
;
CLRF EEDATA ;VALUE TO WRITE.
MOVLW 0x6B ;
MOVWF EEADR ;DATA MEMORY TO WRITE TO.
CALL EEPROM_WRITE ;
;
CLRF EEDATA ;VALUE TO WRITE.
MOVLW 0x6F ;
MOVWF EEADR ;DATA MEMORY TO WRITE TO.
CALL EEPROM_WRITE ;
;
CLRF EEDATA ;VALUE TO WRITE.
MOVLW 0x73 ;
MOVWF EEADR ;DATA MEMORY TO WRITE TO.
CALL EEPROM_WRITE ;
;
CLRF EEDATA ;VALUE TO WRITE.
MOVLW 0x77 ;
MOVWF EEADR ;DATA MEMORY TO WRITE TO.
CALL EEPROM_WRITE ;
FSW4REGCLEAR: ;
CLRF FSW4ASIGNREG ;
CLRF FSW4ASIGNREGBA ;
CLRF FSW4ASIGNREGCH ;
CLRF FSW4ASIGNREG11 ;
CLRF FSW4ASIGNREG12 ;
CLRF FSW4ASIGNREG21 ;
CLRF FSW4ASIGNREG22 ;
RETURN ;
;....................................................................................................................................................................................
;************************************************************************************************************************************************
ACTIVE_SENSING: ;
BTFSS MIDISTAT, AS_FLAG ;ACTIVE SENSING ROUTINE. SENDS
BRA MAIN_ASTST1 ; ALL SOUND OFF ON ALL 6
MOVF AS_TIMER, 0 ; CHANNELS.
BNZ MAIN_ASTST1 ;
MOVLW 0x06 ;
MOVWF AS_COUNT ;
MCONT_AS: ;
DECF AS_COUNT ;
MOVF AS_COUNT, 0 ;
IORLW 0xB0 ;ALL SOUND OFF.
MCONTS0: ;
BTFSS TXSTA, TRMT ;SET WHEN TxShiftReg IS EMPTY.
BRA MCONTS0 ;
MOVWF TXREG ;SEND MIDI.
MOVLW 0x78 ;CONTROL NUMBER.
MCONTS1: ;
BTFSS TXSTA, TRMT ;SET WHEN TxShiftReg IS EMPTY.
BRA MCONTS1 ;
MOVWF TXREG ;SEND MIDI.
CLRF WREG ;
MCONTS2: ;
BTFSS TXSTA, TRMT ;SET WHEN TxShiftReg IS EMPTY.
BRA MCONTS2 ;
MOVWF TXREG ;SEND MIDI.
TSTFSZ AS_COUNT ;
BRA MCONT_AS ;
BCF MIDISTAT, AS_FLAG ;
BCF MIDISTAT, NOSTAT_FLAG ;
MAIN_ASTST1: ;
RETURN ;
;****************************************************************************************************************************************
USARTRCVINTSRV: ;USES BANK 1 AS CIRCULAR BUFFER.
BCF PIE1, RCIE ;CLEAR Rcv INT EN BIT.
;
MOVFF RCREG, POSTINC1 ;
INCF MIDIBYTCNT ;
BTFSC FSR1H, 0 ;
LFSR 1, 0x200 ;FSR1 IS MIDI BUFFER INDEX.
;
MOVLW 0x06 ;Mask out unwanted bits.
ANDWF RCSTA, W ;Check for errors
BTFSC STATUS, Z ;Was either error status bit set?
BRA USARTZ ;
BCF RCSTA,CREN ;Clear receiver status
BSF RCSTA,CREN ;ENABLE RECEIVER AGAIN.
BSF DISPLAYREG, MIDI_LED ;SEND 0 TO RB5, TURNS ON MIDI_LED (RED).
BCF DISPLAYREG, GREEN ;TURNS OFF GREEN.
USARTZ: ;
BSF PIE1, RCIE ;ENABLE Rcv INT.
RETFIE 1 ;FAST
;*******************************************************************************************************************************************
TIMER0INTSRV: ;
MOVWF T0INTWHOLD ;
MOVFF STATUS, T0INTSTATHOLD ;
;
BCF INTCON, TMR0IE ;CLEAR TIMER0 INT ENABLE BIT.
BCF INTCON, TMR0IF ;CLEAR TIMER0 INT FLAG.
BCF T0CON, TMR0ON ;STOP TIMER0.
MOVLW 0xB1 ;2ms INTERRUPT TIME.
MOVWF TMR0H ;45536 DECIMAL - DELAYS.
MOVLW 0xE0 ;2ms INTERRUPT TIME.
MOVWF TMR0L ;HI & LO UPDATED WITH LO.
;
TSTFSZ EMFLASHTIME ;
DECF EMFLASHTIME ;
TSTFSZ GENTIME1 ;
DECF GENTIME1 ;
TSTFSZ LEDFLASH ;
DECF LEDFLASH ;HOLD AT ZERO.
TSTFSZ SCANDEL ;BUTTONS LOCKOUT TIME.
DECF SCANDEL ;HOLD AT ZERO.
TSTFSZ AS_TIMER ;ACTIVE SENSING
DECF AS_TIMER ;HOLD AT ZERO.
TSTFSZ PERCON2TIME ;
DECF PERCON2TIME ;
TSTFSZ PERCON3TIME ;
DECF PERCON3TIME ;
TSTFSZ DRMEDTIME ;DRUM EDIT BUTTON TIMER.
DECF DRMEDTIME ;
TSTFSZ MTUNFLASH ;
DECF MTUNFLASH ;
TSTFSZ MIDILEDFLASH ;
DECF MIDILEDFLASH ;
;...............................................
MOVF SOLOONTIME, F ;
BZ T0INTSOLO ;
TSTFSZ SOLOONTIMEA ;
DECF SOLOONTIMEA ;
TSTFSZ SOLOONTIMEA ;
BRA T0INTSOLO ;
TSTFSZ SOLOONTIME ;SOLOONTIME IS MULTIPLD BY 10.
DECF SOLOONTIME ;
MOVLW D'10' ;
MOVWF SOLOONTIMEA ;
T0INTSOLO: ;
;...........................................
MOVF MTUNEDTIME, F ;
BZ T0INTMTUN ;
TSTFSZ MTUNEDTIMEA ;MASTER TUNE EDIT MODE TIME.
DECF MTUNEDTIMEA ;
TSTFSZ MTUNEDTIMEA ;
BRA T0INTMTUN ;
TSTFSZ MTUNEDTIME ;MTUNEDTIME IS MULTIPLD BY 10.
DECF MTUNEDTIME ;
MOVLW D'10' ;
MOVWF MTUNEDTIMEA ;
T0INTMTUN: ;...................................................
MOVF DRM1EDTIME, F ;
BZ T0INTDRM1 ;
TSTFSZ DRM1EDTIMEA ;DRUMS1 EDIT MODE TIME.
DECF DRM1EDTIMEA ;
TSTFSZ DRM1EDTIMEA ;
BRA T0INTDRM1 ;
TSTFSZ DRM1EDTIME ;MTUNEDTIME IS MULTIPLD BY 5.
DECF DRM1EDTIME ;
MOVLW D'5' ;
MOVWF DRM1EDTIMEA ;
T0INTDRM1: ;...................................................................
MOVF PBBUTTIME, F ;
BZ T0INTPBB1 ;
TSTFSZ PBBUTTIMEA ;PITCH BEND EDIT BUTTON TIME.
DECF PBBUTTIMEA ;
TSTFSZ PBBUTTIMEA ;
BRA T0INTPBB1 ;
TSTFSZ PBBUTTIME ;PBBUTIME IS MULTIPLD BY 5.
DECF PBBUTTIME ;
MOVLW D'5' ;
MOVWF PBBUTTIMEA ;
T0INTPBB1: ;...................................................................
MOVFF T0INTSTATHOLD, STATUS ;
MOVF T0INTWHOLD, W ;
;...................................................................
BSF T0CON, TMR0ON ;START TIMER0.
BSF INTCON, TMR0IE ;SET TIMER0 INT ENABLE BIT.
RETFIE ;
;*************************************************************************************************************************************************
SYSX11BYTE: ;SENDS 11 BYTE SYSX MESSAGES.
MOVLW 0xF0 ;SYSX START.
SYSX11_SEND1: ;
BTFSS TXSTA, TRMT ;SET WHEN TxShiftReg IS EMPTY.
BRA SYSX11_SEND1 ;
MOVWF TXREG ;SEND MIDI.
MOVLW 0x41 ;SYSX START.
SYSX11_SEND2: ;
BTFSS TXSTA, TRMT ;SET WHEN TxShiftReg IS EMPTY.
BRA SYSX11_SEND2 ;
MOVWF TXREG ;SEND MIDI.
MOVLW 0x00 ;SYSX START.
SYSX11_SEND3: ;
BTFSS TXSTA, TRMT ;SET WHEN TxShiftReg IS EMPTY.
BRA SYSX11_SEND3 ;
MOVWF TXREG ;SEND MIDI.
MOVLW 0x42 ;SYSX START.
SYSX11_SEND4: ;
BTFSS TXSTA, TRMT ;SET WHEN TxShiftReg IS EMPTY.
BRA SYSX11_SEND4 ;
MOVWF TXREG ;SEND MIDI.
MOVLW 0x12 ;SYSX START.
SYSX11_SEND5: ;
BTFSS TXSTA, TRMT ;SET WHEN TxShiftReg IS EMPTY.
BRA SYSX11_SEND5 ;
MOVWF TXREG ;SEND MIDI.
MOVLW 0x40 ;SYSX START.
SYSX11_SEND6: ;
BTFSS TXSTA, TRMT ;SET WHEN TxShiftReg IS EMPTY.
BRA SYSX11_SEND6 ;
MOVWF TXREG ;SEND MIDI.
;
MOVLW 0x01 ;SYSX START.
BTFSC GENFLAGS6, SYSX11_B7_FLG ;BYTE 7 FLAG TEST.
MOVF SYSX11BYTE7, W ;
SYSX11_SEND7: ;
BTFSS TXSTA, TRMT ;SET WHEN TxShiftReg IS EMPTY.
BRA SYSX11_SEND7 ;
MOVWF TXREG ;SEND MIDI.
SYSX11_SEND8: ;
BTFSS TXSTA, TRMT ;SET WHEN TxShiftReg IS EMPTY.
BRA SYSX11_SEND8 ;
MOVFF SYSX11BYTE8, TXREG ;SEND MIDI.
SYSX11_SEND9: ;
BTFSS TXSTA, TRMT ;SET WHEN TxShiftReg IS EMPTY.
BRA SYSX11_SEND9 ;
MOVFF SYSX11BYTE9, TXREG ;SEND MIDI.
MOVLW 0x00 ;SYSX START.
SYSX11_SEND10: ;
BTFSS TXSTA, TRMT ;SET WHEN TxShiftReg IS EMPTY.
BRA SYSX11_SEND10 ;
MOVWF TXREG ;SEND MIDI.
MOVLW 0xF7 ;SYSX START.
SYSX11_SEND11: ;
BTFSS TXSTA, TRMT ;SET WHEN TxShiftReg IS EMPTY.
BRA SYSX11_SEND11 ;
MOVWF TXREG ;SEND MIDI.
;
BCF GENFLAGS6, SYSX11_B7_FLG ;CLEAR BYTE 7 FLAG.
RETURN ;
;*************************************************************************************************************************
NORPN7BYTE: ;7 BYTE NRPN or RPN SEND.
NORPN_SEND1: ;
BTFSS TXSTA, TRMT ;SET WHEN TxShiftReg IS EMPTY.
BRA NORPN_SEND1 ;
MOVFF NORPNR1, TXREG ;SEND MIDI.
NORPN_SEND2: ;
BTFSS TXSTA, TRMT ;SET WHEN TxShiftReg IS EMPTY.
BRA NORPN_SEND2 ;
MOVFF NORPNR2, TXREG ;SEND MIDI.
NORPN_SEND3: ;
BTFSS TXSTA, TRMT ;SET WHEN TxShiftReg IS EMPTY.
BRA NORPN_SEND3 ;
MOVFF NORPNR3, TXREG ;SEND MIDI.
NORPN_SEND4: ;
BTFSS TXSTA, TRMT ;SET WHEN TxShiftReg IS EMPTY.
BRA NORPN_SEND4 ;
MOVFF NORPNR4, TXREG ;SEND MIDI.
NORPN_SEND5: ;
BTFSS TXSTA, TRMT ;SET WHEN TxShiftReg IS EMPTY.
BRA NORPN_SEND5 ;
MOVFF NORPNR5, TXREG ;SEND MIDI.
NORPN_SEND6: ;
BTFSS TXSTA, TRMT ;SET WHEN TxShiftReg IS EMPTY.
BRA NORPN_SEND6 ;
MOVFF NORPNR6, TXREG ;SEND MIDI.
NORPN_SEND7: ;
BTFSS TXSTA, TRMT ;SET WHEN TxShiftReg IS EMPTY.
BRA NORPN_SEND7 ;
MOVFF NORPNR7, TXREG ;SEND MIDI.
BCF GENFLAGS1, NORPN_FLAG ;
NORPN_END: ;
RETURN ;
;***************************************************************************************************************************
MIDI3BYTE: ;
MOVF BYTE1OF3, W ;
MIDI30: ;1st STATUS BYTE.
BTFSS TXSTA, TRMT ;SET WHEN TxShiftReg IS EMPTY.
BRA MIDI30 ;
MOVWF TXREG ;SEND MIDI.
MOVF BYTE2OF3, W ;2nd DATA BYTE.
MIDI31: ;
BTFSS TXSTA, TRMT ;SET WHEN TxShiftReg IS EMPTY.
BRA MIDI31 ;
MOVWF TXREG ;SEND MIDI.
MOVF BYTE3OF3, W ;3rd DATA BYTE
MIDI32: ;
BTFSS TXSTA, TRMT ;SET WHEN TxShiftReg IS EMPTY.
BRA MIDI32 ;
MOVWF TXREG ;SEND MIDI.
RETURN ;
;***************************************************************************************************************************
PORTAMENTO_ON: ;
MOVLW 0xB3 ;PORTAMENTO Ch4.
MOVWF BYTE1OF3 ;
MOVLW 0x41 ;
MOVWF BYTE2OF3 ;
MOVLW 0x7F ;PORTAMENTO ON.
MOVWF BYTE3OF3 ;
CALL MIDI3BYTE ;
;
MOVLW 0xB0 ;PORTAMENTO Ch1.
MOVWF BYTE1OF3 ;
CALL MIDI3BYTE ;
;
MOVLW 0xB4 ;PORTAMENTO Ch5.
MOVWF BYTE1OF3 ;
CALL MIDI3BYTE ;
RETURN ;
;...............................................................................................
PORTAMENTO_OFF15: ;
MOVLW 0xB0 ;PORTAMENTO Ch1.
MOVWF BYTE1OF3 ;
MOVLW 0x41 ;
MOVWF BYTE2OF3 ;
MOVLW 0x00 ;PORTAMENTO OFF.
MOVWF BYTE3OF3 ;
CALL MIDI3BYTE ;
;
MOVLW 0xB4 ;PORTAMENTO Ch5.
MOVWF BYTE1OF3 ;
CALL MIDI3BYTE ;
BCF GENFLAGS5, PORTA_BIT ;
RETURN ;
;...............................................................................................
PORTAMENTO_OFF4: ;
MOVLW 0xB3 ;PORTAMENTO Ch4.
MOVWF BYTE1OF3 ;
MOVLW 0x41 ;
MOVWF BYTE2OF3 ;
MOVLW 0x00 ;PORTAMENTO OFF.
MOVWF BYTE3OF3 ;
CALL MIDI3BYTE ;
;
BCF GENFLAGS5, PORTA_BIT ;
RETURN ;
;********************************************************************************
ATAKZEROCH1: ;
MOVLW 0xB0 ;CONTROL CH1.
MOVWF NORPNR1 ;ATTACK TIME MODIFY.
MOVLW 0x63 ;
MOVWF NORPNR2 ;
MOVLW 0x01 ;
MOVWF NORPNR3 ;
MOVLW 0x62 ;
MOVWF NORPNR4 ;
MOVLW 0x63 ;
MOVWF NORPNR5 ;
MOVLW 0x06 ;
MOVWF NORPNR6 ;
MOVLW 0x40 ;ATTACK TIME.0x40=NO MODIFY.
MOVWF NORPNR7 ;
CALL NORPN7BYTE ;
RETURN ;
;...............................................................................................
DECAY0CH1: ;DECAY CHAN 1 TO DEFAULT.
MOVLW 0xB0 ;CONTROL CH1.
MOVWF NORPNR1 ;DECAY TIME MODIFY.
MOVLW 0x63 ;
MOVWF NORPNR2 ;
MOVLW 0x01 ;
MOVWF NORPNR3 ;
MOVLW 0x62 ;
MOVWF NORPNR4 ;
MOVLW 0x64 ;
MOVWF NORPNR5 ;
MOVLW 0x06 ;
MOVWF NORPNR6 ;
MOVLW 0x40 ;DECAY TIME.0x40=NO MODIFY.
MOVWF NORPNR7 ;
CALL NORPN7BYTE ;
RETURN ;
;...............................................................................................
RELEASE0CH1: ;RELEASE TO DEFAULT.
MOVLW 0xB0 ;CONTROL CH1.
MOVWF NORPNR1 ;RELEASE MODIFY.
MOVLW 0x63 ;
MOVWF NORPNR2 ;
MOVLW 0x01 ;
MOVWF NORPNR3 ;
MOVLW 0x62 ;
MOVWF NORPNR4 ;
MOVLW 0x66 ;RELEASE
MOVWF NORPNR5 ;
MOVLW 0x06 ;
MOVWF NORPNR6 ;
MOVLW 0x40 ;RELEASE. 0x40=NO MODIFY.
MOVWF NORPNR7 ;
CALL NORPN7BYTE ;
RETURN ;
;...............................................................................................
FO0CH1: ;
MOVLW 0xB0 ;SENDS NRPN 0120=vvh
MOVWF NORPNR1 ; (VALUE1)(VALUE2)=(VALUE).
MOVLW 0x63 ;CONTROL #99.
MOVWF NORPNR2 ;
MOVLW 0x01 ;VALUE1.
MOVWF NORPNR3 ;
MOVLW 0x62 ;CONTROL #98.
MOVWF NORPNR4 ;
MOVLW 0x20 ;VALUE2
MOVWF NORPNR5 ;
MOVLW 0x06 ;CONTROL #6.
MOVWF NORPNR6 ;
MOVLW 0x40 ;Fo DEFAULT.
MOVWF NORPNR7 ;
CALL NORPN7BYTE ;
RETURN ;
;...............................................................................................
Q0CH1: ;FILTER RESONANCE TO DEFAULT VALUE.
MOVLW 0xB0 ;CONTROL CH1.
MOVWF NORPNR1 ;FILTER RESONANCE MODIFY.
MOVLW 0x63 ;
MOVWF NORPNR2 ;
MOVLW 0x01 ;
MOVWF NORPNR3 ;
MOVLW 0x62 ;
MOVWF NORPNR4 ;
MOVLW 0x21 ;
MOVWF NORPNR5 ;
MOVLW 0x06 ;
MOVWF NORPNR6 ;
MOVLW 0x40 ;RESONANCE. 0x40=NO MODIFY.
MOVWF NORPNR7 ;
CALL NORPN7BYTE ;
RETURN ;
;................................................................................................
TUNE0CH1: ;SETS CH1 TUNNING TO DEFAULT.
MOVLW 0xB0 ;CONTROL CH1.
MOVWF NORPNR1 ;
MOVLW 0x65 ;
MOVWF NORPNR2 ;
MOVLW 0x00 ;
MOVWF NORPNR3 ;
MOVLW 0x64 ;
MOVWF NORPNR4 ;
MOVLW 0x02 ;
MOVWF NORPNR5 ;
MOVLW 0x06 ;
MOVWF NORPNR6 ;
MOVLW 0x40 ;COARSE TUNNING.0x40=NO MOD.
MOVWF NORPNR7 ;
CALL NORPN7BYTE ;
RETURN ;
;...............................................................................................
CHORUS1CH1_ON: ;CHORUS 1, Ch 2.
MOVLW 0xB0 ;CONTROL SELECT MSB.
CH1CH1ONJ1: ;
BTFSS TXSTA, TRMT ;SET WHEN TxShiftReg IS EMPTY.
BRA CH1CH1ONJ1 ;
MOVWF TXREG ;SEND MIDI.
MOVLW 0x5D ;CHORUS SEND LEVEL SELECT.
CH1CH1ONJ2: ;
BTFSS TXSTA, TRMT ;SET WHEN TxShiftReg IS EMPTY.
BRA CH1CH1ONJ2 ;
MOVWF TXREG ;SEND MIDI.
MOVLW 0x60 ;SEND-LEVEL.
CH1CH1ONJ3: ;
BTFSS TXSTA, TRMT ;SET WHEN TxShiftReg IS EMPTY.
BRA CH1CH1ONJ3 ;
MOVWF TXREG ;SEND MIDI.
;
RETURN ;
;...............................................................................................
CHORUS1CH1_OFF: ;
MOVLW 0xB0 ;CONTROL SELECT MSB.
CH1CH1OFFJ1: ;
BTFSS TXSTA, TRMT ;SET WHEN TxShiftReg IS EMPTY.
BRA CH1CH1OFFJ1 ;
MOVWF TXREG ;SEND MIDI.
MOVLW 0x5D ;CHORUS SEND LEVEL SELECT.
CH1CH1OFFJ2: ;
BTFSS TXSTA, TRMT ;SET WHEN TxShiftReg IS EMPTY.
BRA CH1CH1OFFJ2 ;
MOVWF TXREG ;SEND MIDI.
MOVLW 0x00 ;SEND-LEVEL.
CH1CH1OFFJ3: ;
BTFSS TXSTA, TRMT ;SET WHEN TxShiftReg IS EMPTY.
BRA CH1CH1OFFJ3 ;
MOVWF TXREG ;SEND MIDI.
;
RETURN ;
;...............................................................................................
;****************************************************************************
ATAKZEROCH2: ;
MOVLW 0xB1 ;CONTROL CH2.
MOVWF NORPNR1 ;ATTACK TIME MODIFY.
MOVLW 0x63 ;
MOVWF NORPNR2 ;
MOVLW 0x01 ;
MOVWF NORPNR3 ;
MOVLW 0x62 ;
MOVWF NORPNR4 ;
MOVLW 0x63 ;
MOVWF NORPNR5 ;
MOVLW 0x06 ;
MOVWF NORPNR6 ;
MOVLW 0x40 ;ATTACK TIME.0x40=NO MODIFY.
MOVWF NORPNR7 ;
CALL NORPN7BYTE ;
RETURN ;
;...............................................................................................
TUNE0CH2: ;SETS CH2 TUNNING TO DEFAULT.
MOVLW 0xB1 ;CONTROL CH2.
MOVWF NORPNR1 ;
MOVLW 0x65 ;
MOVWF NORPNR2 ;
MOVLW 0x00 ;
MOVWF NORPNR3 ;
MOVLW 0x64 ;
MOVWF NORPNR4 ;
MOVLW 0x02 ;
MOVWF NORPNR5 ;
MOVLW 0x06 ;
MOVWF NORPNR6 ;
MOVLW 0x40 ;COARSE TUNNING.0x40=NO MOD.
MOVWF NORPNR7 ;
CALL NORPN7BYTE ;
RETURN ;
;...............................................................................................
CHORUS1CH2_ON: ;CHORUS 1, Ch 2.
MOVLW 0xB1 ;CONTROL SELECT MSB.
CH1CH2ONJ1: ;
BTFSS TXSTA, TRMT ;SET WHEN TxShiftReg IS EMPTY.
BRA CH1CH2ONJ1 ;
MOVWF TXREG ;SEND MIDI.
MOVLW 0x5D ;CHORUS SEND LEVEL SELECT.
CH1CH2ONJ2: ;
BTFSS TXSTA, TRMT ;SET WHEN TxShiftReg IS EMPTY.
BRA CH1CH2ONJ2 ;
MOVWF TXREG ;SEND MIDI.
MOVLW 0x60 ;SEND-LEVEL.
CH1CH2ONJ3: ;
BTFSS TXSTA, TRMT ;SET WHEN TxShiftReg IS EMPTY.
BRA CH1CH2ONJ3 ;
MOVWF TXREG ;SEND MIDI.
;
RETURN ;
;...............................................................................................
CHORUS1CH2_OFF: ;
MOVLW 0xB1 ;CONTROL SELECT MSB.
CH1CH2OFFJ1: ;
BTFSS TXSTA, TRMT ;SET WHEN TxShiftReg IS EMPTY.
BRA CH1CH2OFFJ1 ;
MOVWF TXREG ;SEND MIDI.
MOVLW 0x5D ;CHORUS SEND LEVEL SELECT.
CH1CH2OFFJ2: ;
BTFSS TXSTA, TRMT ;SET WHEN TxShiftReg IS EMPTY.
BRA CH1CH2OFFJ2 ;
MOVWF TXREG ;SEND MIDI.
MOVLW 0x00 ;SEND-LEVEL.
CH1CH2OFFJ3: ;
BTFSS TXSTA, TRMT ;SET WHEN TxShiftReg IS EMPTY.
BRA CH1CH2OFFJ3 ;
MOVWF TXREG ;SEND MIDI.
;
RETURN ;
;...............................................................................................
FOZEROCH2: ;
MOVLW 0xB1 ;CONTROL CH2.
MOVWF NORPNR1 ;Fo MODIFY.
MOVLW 0x63 ;
MOVWF NORPNR2 ;
MOVLW 0x01 ;
MOVWF NORPNR3 ;
MOVLW 0x62 ;
MOVWF NORPNR4 ;
MOVLW 0x20 ;
MOVWF NORPNR5 ;
MOVLW 0x06 ;
MOVWF NORPNR6 ;
MOVLW 0x40 ;Fo. 0x40=NO MODIFY.
MOVWF NORPNR7 ;
CALL NORPN7BYTE ;
RETURN ;
;*******************************************************************************
TUNE0CH3: ;SETS CH3 BASS TO DEFAULT TUNE.
MOVLW 0xB2 ;CONTROL CH3.
MOVWF NORPNR1 ;
MOVLW 0x65 ;
MOVWF NORPNR2 ;
MOVLW 0x00 ;
MOVWF NORPNR3 ;
MOVLW 0x64 ;
MOVWF NORPNR4 ;
MOVLW 0x02 ;
MOVWF NORPNR5 ;
MOVLW 0x06 ;
MOVWF NORPNR6 ;
MOVLW 0x40 ;COARSE TUNNING.0x40=NO MOD.
MOVWF NORPNR7 ;
CALL NORPN7BYTE ;
RETURN ;
;................................................................................
VIBRATE0CH3: ;VIB RATE TO DEFAULT Ch3.
MOVLW 0xB2 ;CONTROL CH3.
MOVWF NORPNR1 ;
MOVLW 0x63 ;
MOVWF NORPNR2 ;
MOVLW 0x01 ;
MOVWF NORPNR3 ;
MOVLW 0x62 ;
MOVWF NORPNR4 ;
MOVLW 0x08 ;
MOVWF NORPNR5 ;
MOVLW 0x06 ;
MOVWF NORPNR6 ;
MOVLW 0x40 ;VIBRATO RATE.0x40=NO MOD.
MOVWF NORPNR7 ;
CALL NORPN7BYTE ;
RETURN ;
;...............................................................................................
VIBDEPTH0CH3: ;
MOVLW 0xB2 ;CONTROL CH3.
MOVWF NORPNR1 ;
MOVLW 0x63 ;
MOVWF NORPNR2 ;
MOVLW 0x01 ;
MOVWF NORPNR3 ;
MOVLW 0x62 ;
MOVWF NORPNR4 ;
MOVLW 0x09 ;
MOVWF NORPNR5 ;
MOVLW 0x06 ;
MOVWF NORPNR6 ;
MOVLW 0x40 ;VIBRATO DEPTH.0x40=NO MOD.
MOVWF NORPNR7 ;
CALL NORPN7BYTE ;
RETURN ;
;...............................................................................................
VIBDELAY0CH3: ;VIBRATO DELAY CH3 TO DEFAULT.
MOVLW 0xB2 ;CONTROL CH3.
MOVWF NORPNR1 ;
MOVLW 0x63 ;
MOVWF NORPNR2 ;
MOVLW 0x01 ;
MOVWF NORPNR3 ;
MOVLW 0x62 ;
MOVWF NORPNR4 ;
MOVLW 0x0A ;
MOVWF NORPNR5 ;
MOVLW 0x06 ;
MOVWF NORPNR6 ;
MOVLW 0x40 ;VIBRATO DELAY.0x40=NO MOD.
MOVWF NORPNR7 ;
CALL NORPN7BYTE ;
RETURN ;
;..............................................................................................
ATAK0CH3: ;
MOVLW 0xB2 ;CONTROL CH3.
MOVWF NORPNR1 ;ATTACK TIME MODIFY.
MOVLW 0x63 ;
MOVWF NORPNR2 ;
MOVLW 0x01 ;
MOVWF NORPNR3 ;
MOVLW 0x62 ;
MOVWF NORPNR4 ;
MOVLW 0x63 ;
MOVWF NORPNR5 ;
MOVLW 0x06 ;
MOVWF NORPNR6 ;
MOVLW 0x40 ;ATTACK TIME.0x40=NO MODIFY.
MOVWF NORPNR7 ;
CALL NORPN7BYTE ;
RETURN ;
;...............................................................................................
DECAY0CH3: ;DECAY CHAN 3 TO DEFAULT.
MOVLW 0xB2 ;CONTROL CH3.
MOVWF NORPNR1 ;DECAY TIME MODIFY.
MOVLW 0x63 ;
MOVWF NORPNR2 ;
MOVLW 0x01 ;
MOVWF NORPNR3 ;
MOVLW 0x62 ;
MOVWF NORPNR4 ;
MOVLW 0x64 ;
MOVWF NORPNR5 ;
MOVLW 0x06 ;
MOVWF NORPNR6 ;
MOVLW 0x40 ;DECAY TIME.0x40=NO MODIFY.
MOVWF NORPNR7 ;
CALL NORPN7BYTE ;
RETURN ;
;...............................................................................................
RELEASE0CH3: ;RELEASE TO DEFAULT.
MOVLW 0xB2 ;CONTROL CH3.
MOVWF NORPNR1 ;RELEASE MODIFY.
MOVLW 0x63 ;
MOVWF NORPNR2 ;
MOVLW 0x01 ;
MOVWF NORPNR3 ;
MOVLW 0x62 ;
MOVWF NORPNR4 ;
MOVLW 0x66 ;RELEASE
MOVWF NORPNR5 ;
MOVLW 0x06 ;
MOVWF NORPNR6 ;
MOVLW 0x40 ;RELEASE. 0x40=NO MODIFY.
MOVWF NORPNR7 ;
CALL NORPN7BYTE ;
RETURN ;
;...............................................................................................
FO0CH3: ;
MOVLW 0xB2 ;SENDS NRPN 0120=vvh
MOVWF NORPNR1 ; (VALUE1)(VALUE2)=(VALUE).
MOVLW 0x63 ;CONTROL #99.
MOVWF NORPNR2 ;
MOVLW 0x01 ;VALUE1.
MOVWF NORPNR3 ;
MOVLW 0x62 ;CONTROL #98.
MOVWF NORPNR4 ;
MOVLW 0x20 ;VALUE2
MOVWF NORPNR5 ;
MOVLW 0x06 ;CONTROL #6.
MOVWF NORPNR6 ;
MOVLW 0x40 ;Fo DEFAULT.
MOVWF NORPNR7 ;
CALL NORPN7BYTE ;
RETURN ;
;...............................................................................................
Q0CH3: ;FILTER RESONANCE TO DEFAULT VALUE.
MOVLW 0xB2 ;CONTROL CH3.
MOVWF NORPNR1 ;FILTER RESONANCE MODIFY.
MOVLW 0x63 ;
MOVWF NORPNR2 ;
MOVLW 0x01 ;
MOVWF NORPNR3 ;
MOVLW 0x62 ;
MOVWF NORPNR4 ;
MOVLW 0x21 ;
MOVWF NORPNR5 ;
MOVLW 0x06 ;
MOVWF NORPNR6 ;
MOVLW 0x40 ;RESONANCE. 0x40=NO MODIFY.
MOVWF NORPNR7 ;
CALL NORPN7BYTE ;
RETURN ;
;...............................................................................................
CHORUS1CH3_ON: ;CHORUS 1, Ch 3.
MOVLW 0xB2 ;CONTROL SELECT MSB.
CH1CH3ONJ1: ;
BTFSS TXSTA, TRMT ;SET WHEN TxShiftReg IS EMPTY.
BRA CH1CH3ONJ1 ;
MOVWF TXREG ;SEND MIDI.
MOVLW 0x5D ;CHORUS SEND LEVEL SELECT.
CH1CH3ONJ2: ;
BTFSS TXSTA, TRMT ;SET WHEN TxShiftReg IS EMPTY.
BRA CH1CH3ONJ2 ;
MOVWF TXREG ;SEND MIDI.
MOVLW 0x60 ;SEND-LEVEL.
CH1CH3ONJ3: ;
BTFSS TXSTA, TRMT ;SET WHEN TxShiftReg IS EMPTY.
BRA CH1CH3ONJ3 ;
MOVWF TXREG ;SEND MIDI.
;
RETURN ;
;...............................................................................................
CHORUS1CH3_OFF: ;
MOVLW 0xB2 ;CONTROL SELECT MSB.
CH1CH3OFFJ1: ;
BTFSS TXSTA, TRMT ;SET WHEN TxShiftReg IS EMPTY.
BRA CH1CH3OFFJ1 ;
MOVWF TXREG ;SEND MIDI.
MOVLW 0x5D ;CHORUS SEND LEVEL SELECT.
CH1CH3OFFJ2: ;
BTFSS TXSTA, TRMT ;SET WHEN TxShiftReg IS EMPTY.
BRA CH1CH3OFFJ2 ;
MOVWF TXREG ;SEND MIDI.
MOVLW 0x00 ;SEND-LEVEL.
CH1CH3OFFJ3: ;
BTFSS TXSTA, TRMT ;SET WHEN TxShiftReg IS EMPTY.
BRA CH1CH3OFFJ3 ;
MOVWF TXREG ;SEND MIDI.
;
RETURN ;
;*******************************************************************************
TUNE0CH4: ;RH2 (CH4) DEFAULT COARSE TUNE.
BCF GENFLAGS1, RH2OCTBIT ;
BCF GENFLAGS3, RH224OCTD_BIT;
;
MOVLW 0xB3 ;CONTROL CH4.
MOVWF NORPNR1 ;
MOVLW 0x65 ;
MOVWF NORPNR2 ;
MOVLW 0x00 ;
MOVWF NORPNR3 ;
MOVLW 0x64 ;
MOVWF NORPNR4 ;
MOVLW 0x02 ;
MOVWF NORPNR5 ;
MOVLW 0x06 ;
MOVWF NORPNR6 ;
MOVLW 0x40 ;COARSE TUNNING.0x40=NO MOD.
MOVWF NORPNR7 ;
CALL NORPN7BYTE ;
;
RETURN ;
;..............................................................................................
VIBRATE0CH4: ;VIB RATE TO DEFAULT Ch4.
MOVLW 0xB3 ;CONTROL CH4.
MOVWF NORPNR1 ;
MOVLW 0x63 ;
MOVWF NORPNR2 ;
MOVLW 0x01 ;
MOVWF NORPNR3 ;
MOVLW 0x62 ;
MOVWF NORPNR4 ;
MOVLW 0x08 ;
MOVWF NORPNR5 ;
MOVLW 0x06 ;
MOVWF NORPNR6 ;
MOVLW 0x40 ;VIBRATO RATE.0x40=NO MOD.
MOVWF NORPNR7 ;
CALL NORPN7BYTE ;
RETURN ;
;...............................................................................................
VIBDEPTH0CH4: ;
MOVLW 0xB3 ;CONTROL CH4.
MOVWF NORPNR1 ;
MOVLW 0x63 ;
MOVWF NORPNR2 ;
MOVLW 0x01 ;
MOVWF NORPNR3 ;
MOVLW 0x62 ;
MOVWF NORPNR4 ;
MOVLW 0x09 ;
MOVWF NORPNR5 ;
MOVLW 0x06 ;
MOVWF NORPNR6 ;
MOVLW 0x40 ;VIBRATO DEPTH.0x40=NO MOD.
MOVWF NORPNR7 ;
CALL NORPN7BYTE ;
RETURN ;
;...............................................................................................
VIBDELAY0CH4: ;VIBRATO DELAY CH4 TO DEFAULT.
MOVLW 0xB3 ;CONTROL CH4.
MOVWF NORPNR1 ;
MOVLW 0x63 ;
MOVWF NORPNR2 ;
MOVLW 0x01 ;
MOVWF NORPNR3 ;
MOVLW 0x62 ;
MOVWF NORPNR4 ;
MOVLW 0x0A ;
MOVWF NORPNR5 ;
MOVLW 0x06 ;
MOVWF NORPNR6 ;
MOVLW 0x40 ;VIBRATO DELAY.0x40=NO MOD.
MOVWF NORPNR7 ;
CALL NORPN7BYTE ;
RETURN ;
;...............................................................................................
ATAKZEROCH4: ;
MOVLW 0xB3 ;CONTROL CH4.
MOVWF NORPNR1 ;ATTACK TIME MODIFY.
MOVLW 0x63 ;
MOVWF NORPNR2 ;
MOVLW 0x01 ;
MOVWF NORPNR3 ;
MOVLW 0x62 ;
MOVWF NORPNR4 ;
MOVLW 0x63 ;
MOVWF NORPNR5 ;
MOVLW 0x06 ;
MOVWF NORPNR6 ;
MOVLW 0x40 ;ATTACK TIME.0x40=NO MODIFY.
MOVWF NORPNR7 ;
CALL NORPN7BYTE ;
RETURN ;
;...............................................................................................
DECAY0CH4: ;DECAY CHAN 4 TO DEFAULT.
MOVLW 0xB3 ;CONTROL CH4.
MOVWF NORPNR1 ;DECAY TIME MODIFY.
MOVLW 0x63 ;
MOVWF NORPNR2 ;
MOVLW 0x01 ;
MOVWF NORPNR3 ;
MOVLW 0x62 ;
MOVWF NORPNR4 ;
MOVLW 0x64 ;
MOVWF NORPNR5 ;
MOVLW 0x06 ;
MOVWF NORPNR6 ;
MOVLW 0x40 ;DECAY TIME.0x40=NO MODIFY.
MOVWF NORPNR7 ;
CALL NORPN7BYTE ;
RETURN ;
;...............................................................................................
FO0CH4: ;
MOVLW 0xB3 ;SENDS NRPN 0120=vvh
MOVWF NORPNR1 ; (VALUE1)(VALUE2)=(VALUE).
MOVLW 0x63 ;CONTROL #99.
MOVWF NORPNR2 ;
MOVLW 0x01 ;VALUE1.
MOVWF NORPNR3 ;
MOVLW 0x62 ;CONTROL #98.
MOVWF NORPNR4 ;
MOVLW 0x20 ;VALUE2
MOVWF NORPNR5 ;
MOVLW 0x06 ;CONTROL #6.
MOVWF NORPNR6 ;
MOVLW 0x40 ;Fo DEFAULT.
MOVWF NORPNR7 ;
CALL NORPN7BYTE ;
RETURN ;
;...............................................................................................
Q0CH4: ;FILTER RESONANCE TO DEFAULT VALUE.
MOVLW 0xB4 ;CONTROL CH4.
MOVWF NORPNR1 ;FILTER RESONANCE MODIFY.
MOVLW 0x63 ;
MOVWF NORPNR2 ;
MOVLW 0x01 ;
MOVWF NORPNR3 ;
MOVLW 0x62 ;
MOVWF NORPNR4 ;
MOVLW 0x21 ;
MOVWF NORPNR5 ;
MOVLW 0x06 ;
MOVWF NORPNR6 ;
MOVLW 0x40 ;RESONANCE. 0x40=NO MODIFY.
MOVWF NORPNR7 ;
CALL NORPN7BYTE ;
RETURN ;
;...............................................................................................
CHORUS1CH4_ON: ;CHORUS 1, Ch 4.
MOVLW 0xB3 ;CONTROL SELECT MSB.
CH1CH4ONJ1: ;
BTFSS TXSTA, TRMT ;SET WHEN TxShiftReg IS EMPTY.
BRA CH1CH4ONJ1 ;
MOVWF TXREG ;SEND MIDI.
MOVLW 0x5D ;CHORUS SEND LEVEL SELECT.
CH1CH4ONJ2: ;
BTFSS TXSTA, TRMT ;SET WHEN TxShiftReg IS EMPTY.
BRA CH1CH4ONJ2 ;
MOVWF TXREG ;SEND MIDI.
MOVF CHORUSENDLEV, W ;SEND-LEVEL.
CH1CH4ONJ3: ;
BTFSS TXSTA, TRMT ;SET WHEN TxShiftReg IS EMPTY.
BRA CH1CH4ONJ3 ;
MOVWF TXREG ;SEND MIDI.
;
RETURN ;
;...............................................................................................
CHORUS1CH4_OFF: ;
MOVLW 0xB3 ;CONTROL SELECT MSB.
CH1CH4OFFJ1: ;
BTFSS TXSTA, TRMT ;SET WHEN TxShiftReg IS EMPTY.
BRA CH1CH4OFFJ1 ;
MOVWF TXREG ;SEND MIDI.
MOVLW 0x5D ;CHORUS SEND LEVEL SELECT.
CH1CH4OFFJ2: ;
BTFSS TXSTA, TRMT ;SET WHEN TxShiftReg IS EMPTY.
BRA CH1CH4OFFJ2 ;
MOVWF TXREG ;SEND MIDI.
MOVLW 0x00 ;SEND-LEVEL.
CH1CH4OFFJ3: ;
BTFSS TXSTA, TRMT ;SET WHEN TxShiftReg IS EMPTY.
BRA CH1CH4OFFJ3 ;
MOVWF TXREG ;SEND MIDI.
;
RETURN ;
;********************************************************************************
ATAK0CH5: ;
MOVLW 0xB4 ;CONTROL CH5.
MOVWF NORPNR1 ;ATTACK TIME MODIFY.
MOVLW 0x63 ;
MOVWF NORPNR2 ;
MOVLW 0x01 ;
MOVWF NORPNR3 ;
MOVLW 0x62 ;
MOVWF NORPNR4 ;
MOVLW 0x63 ;
MOVWF NORPNR5 ;
MOVLW 0x06 ;
MOVWF NORPNR6 ;
MOVLW 0x40 ;ATTACK TIME.0x40=NO MODIFY.
MOVWF NORPNR7 ;
CALL NORPN7BYTE ;
RETURN ;
;...............................................................................................
TUNE0CH5: ;
MOVLW 0xB4 ;CONTROL CH5.
MOVWF NORPNR1 ;
MOVLW 0x65 ;
MOVWF NORPNR2 ;
MOVLW 0x00 ;
MOVWF NORPNR3 ;
MOVLW 0x64 ;
MOVWF NORPNR4 ;
MOVLW 0x01 ;
MOVWF NORPNR5 ;
MOVLW 0x06 ;
MOVWF NORPNR6 ;
MOVLW 0x40 ;FINE TUNING IN CENTS.0x40=CENTRE.
MOVWF NORPNR7 ;
CALL NORPN7BYTE ;
RETURN ;
;...............................................................................................
FO0CH5: ;
MOVLW 0xB4 ;SENDS NRPN 0120=vvh
MOVWF NORPNR1 ; (VALUE1)(VALUE2)=(VALUE).
MOVLW 0x63 ;CONTROL #99.
MOVWF NORPNR2 ;
MOVLW 0x01 ;VALUE1.
MOVWF NORPNR3 ;
MOVLW 0x62 ;CONTROL #98.
MOVWF NORPNR4 ;
MOVLW 0x20 ;VALUE2
MOVWF NORPNR5 ;
MOVLW 0x06 ;CONTROL #6.
MOVWF NORPNR6 ;
MOVLW 0x40 ;Fo DEFAULT.
MOVWF NORPNR7 ;
CALL NORPN7BYTE ;
RETURN ;
;...............................................................................................
Q0CH5: ;FILTER RESONANCE TO DEFAULT VALUE.
MOVLW 0xB4 ;CONTROL CH5.
MOVWF NORPNR1 ;FILTER RESONANCE MODIFY.
MOVLW 0x63 ;
MOVWF NORPNR2 ;
MOVLW 0x01 ;
MOVWF NORPNR3 ;
MOVLW 0x62 ;
MOVWF NORPNR4 ;
MOVLW 0x21 ;
MOVWF NORPNR5 ;
MOVLW 0x06 ;
MOVWF NORPNR6 ;
MOVLW 0x40 ;RESONANCE. 0x40=NO MODIFY.
MOVWF NORPNR7 ;
CALL NORPN7BYTE ;
RETURN ;
;...............................................................................................
VIBRATE0CH5: ;
MOVLW 0xB4 ;CONTROL CH5.
MOVWF NORPNR1 ;
MOVLW 0x63 ;
MOVWF NORPNR2 ;
MOVLW 0x01 ;
MOVWF NORPNR3 ;
MOVLW 0x62 ;
MOVWF NORPNR4 ;
MOVLW 0x08 ;
MOVWF NORPNR5 ;
MOVLW 0x06 ;
MOVWF NORPNR6 ;
MOVLW 0x40 ;VIBRATO RATE.0x40=NO MOD.
MOVWF NORPNR7 ;
CALL NORPN7BYTE ;
RETURN ;
;...............................................................................................
VIBDEPTH0CH5: ;
MOVLW 0xB4 ;CONTROL CH5.
MOVWF NORPNR1 ;
MOVLW 0x63 ;
MOVWF NORPNR2 ;
MOVLW 0x01 ;
MOVWF NORPNR3 ;
MOVLW 0x62 ;
MOVWF NORPNR4 ;
MOVLW 0x09 ;
MOVWF NORPNR5 ;
MOVLW 0x06 ;
MOVWF NORPNR6 ;
MOVLW 0x40 ;VIBRATO DEPTH.0x40=NO MOD.
MOVWF NORPNR7 ;
CALL NORPN7BYTE ;
RETURN ;
;...............................................................................................
VIBDELAY0CH5: ;
MOVLW 0xB4 ;CONTROL CH5.
MOVWF NORPNR1 ;
MOVLW 0x63 ;
MOVWF NORPNR2 ;
MOVLW 0x01 ;
MOVWF NORPNR3 ;
MOVLW 0x62 ;
MOVWF NORPNR4 ;
MOVLW 0x0A ;
MOVWF NORPNR5 ;
MOVLW 0x06 ;
MOVWF NORPNR6 ;
MOVLW 0x40 ;VIBRATO DELAY.0x40=NO MOD.
MOVWF NORPNR7 ;
CALL NORPN7BYTE ;
RETURN ;
;******************************************************************************
FINETUNE0CH6: ;Bass (CH6) DEFAULT fine TUNE.
;
MOVLW 0xB5 ;CONTROL CH6.
MOVWF NORPNR1 ;
MOVLW 0x65 ;
MOVWF NORPNR2 ;
MOVLW 0x00 ;
MOVWF NORPNR3 ;
MOVLW 0x64 ;
MOVWF NORPNR4 ;
MOVLW 0x02 ;
MOVWF NORPNR5 ;
MOVLW 0x06 ;
MOVWF NORPNR6 ;
MOVLW 0x40 ;COARSE TUNNING.0x40=NO MOD.
MOVWF NORPNR7 ;
CALL NORPN7BYTE ;
;
RETURN ;
;*******************************************************************************
COARSETUNE0CH6: ;
MOVLW 0xB5 ;CONTROL CH6.
MOVWF NORPNR1 ;
MOVLW 0x65 ;
MOVWF NORPNR2 ;
MOVLW 0x00 ;
MOVWF NORPNR3 ;
MOVLW 0x64 ;
MOVWF NORPNR4 ;
MOVLW 0x02 ;
MOVWF NORPNR5 ;
MOVLW 0x06 ;
MOVWF NORPNR6 ;
MOVLW 0x40 ;COARSE TUNNING.0x40=NO MOD.
MOVWF NORPNR7 ;
CALL NORPN7BYTE ;
;
RETURN ;
;................................................................................................................................................................................................................
ALLNOTESOFFCH7: ;
MOVLW 0xB6 ;CONTROL. ALL SOUND OFF CHAN 7.
ACONTS7ROL01: ;
BTFSS TXSTA, TRMT ;SET WHEN TxShiftReg IS EMPTY.
BRA ACONTS7ROL01 ;
MOVWF TXREG ;SEND MIDI.
MOVLW 0x78 ;CONTROL NUMBER.
ACONTS7ROL02: ;
BTFSS TXSTA, TRMT ;SET WHEN TxShiftReg IS EMPTY.
BRA ACONTS7ROL02 ;
MOVWF TXREG ;SEND MIDI.
MOVLW 0x00 ;
ACONTS7ROL03: ;
BTFSS TXSTA, TRMT ;SET WHEN TxShiftReg IS EMPTY.
BRA ACONTS7ROL03 ;
MOVWF TXREG ;SEND MIDI.
RETURN ;
;**********************************************************************************************************************************************************************
SEND_EXPR: ;SEND EXPRESSION VALUE ON ChS 1,4 & 5.
MOVLW 0xB0 ;SELECT CONTROL ON Ch1.
RH128MIDI30: ;1st STATUS BYTE.
BTFSS TXSTA, TRMT ;SET WHEN TxShiftReg IS EMPTY.
BRA RH128MIDI30 ;
MOVWF TXREG ;SEND MIDI.
MOVLW 0x0B ;EXPRESSION.
RH128MIDI31: ;
BTFSS TXSTA, TRMT ;SET WHEN TxShiftReg IS EMPTY.
BRA RH128MIDI31 ;
MOVWF TXREG ;SEND MIDI.
MOVF SOLOVAL, W ;
;
MULWF LEVEL_ADJ_CH1 ;BALANCE Ch1 LEVEL STORE.
RLNCF PRODH ;
MOVLW 0xFF ;
CPFSLT PRODL ;
BSF PRODH, 0 ;
MOVF PRODH, W ;
RH128MIDI32: ;
BTFSS TXSTA, TRMT ;SET WHEN TxShiftReg IS EMPTY.
BRA RH128MIDI32 ;
MOVWF TXREG ;SEND MIDI.
;.....................
MOVLW 0xB4 ;SELECT CONTROL ON Ch5.
RH128MIDI33: ;1st STATUS BYTE.
BTFSS TXSTA, TRMT ;SET WHEN TxShiftReg IS EMPTY.
BRA RH128MIDI33 ;
MOVWF TXREG ;SEND MIDI.
MOVLW 0x0B ;EXPRESSION.
RH128MIDI34: ;
BTFSS TXSTA, TRMT ;SET WHEN TxShiftReg IS EMPTY.
BRA RH128MIDI34 ;
MOVWF TXREG ;SEND MIDI.
MOVF SOLOVAL, W ;
;
MULWF LEVEL_ADJ_CH5 ;BALANCE Ch5 LEVEL STORE.
RLNCF PRODH ;
MOVLW 0xFF ;
CPFSLT PRODL ;
BSF PRODH, 0 ;
MOVF PRODH, W ;
RH128MIDI35: ;
BTFSS TXSTA, TRMT ;SET WHEN TxShiftReg IS EMPTY.
BRA RH128MIDI35 ;
MOVWF TXREG ;SEND MIDI.
;........................................................................................................................................................................................
MOVLW 0xB3 ;SELECT CONTROL ON Ch4.
RH128MIDI36: ;1st STATUS BYTE.
BTFSS TXSTA, TRMT ;SET WHEN TxShiftReg IS EMPTY.
BRA RH128MIDI36 ;
MOVWF TXREG ;SEND MIDI.
MOVLW 0x0B ;EXPRESSION.
RH128MIDI37: ;
BTFSS TXSTA, TRMT ;SET WHEN TxShiftReg IS EMPTY.
BRA RH128MIDI37 ;
MOVWF TXREG ;SEND MIDI.
MOVF SOLOVAL, W ;
;
MULWF LEVEL_ADJ_CH4 ;BALANCE Ch4 LEVEL STORE.
RLNCF PRODH ;
MOVLW 0xFF ;
CPFSLT PRODL ;
BSF PRODH, 0 ;
MOVF PRODH, W ;
RH128MIDI38: ;
BTFSS TXSTA, TRMT ;SET WHEN TxShiftReg IS EMPTY.
BRA RH128MIDI38 ;
MOVWF TXREG ;SEND MIDI.
;........................................................................................................................................................................................
MOVLW 0xB6 ;SELECT CONTROL ON Ch7.
RH128MIDI39: ;1st STATUS BYTE.
BTFSS TXSTA, TRMT ;SET WHEN TxShiftReg IS EMPTY.
BRA RH128MIDI39 ;
MOVWF TXREG ;SEND MIDI.
MOVLW 0x0B ;EXPRESSION.
RH128MIDI40: ;
BTFSS TXSTA, TRMT ;SET WHEN TxShiftReg IS EMPTY.
BRA RH128MIDI40 ;
MOVWF TXREG ;SEND MIDI.
MOVF SOLOVAL, W ;
;
MULWF LEVEL_ADJ_CH7 ;BALANCE Ch7 LEVEL STORE.
RLNCF PRODH ;
MOVLW 0xFF ;
CPFSLT PRODL ;
BSF PRODH, 0 ;
MOVF PRODH, W ;
RH128MIDI41: ;
BTFSS TXSTA, TRMT ;SET WHEN TxShiftReg IS EMPTY.
BRA RH128MIDI41 ;
MOVWF TXREG ;SEND MID
;
RETURN ;
;***********************************************************************************************************************************************************************
EEPROM_WRITE: ;
BCF EECON1, EEPGD ;POINT TO DATA MEMORY.
BCF EECON1, CFGS ;
BSF EECON1, WREN ;ENABLE WRITES.
BCF INTCON, GIE ;DISABLE INTERRUPTS.
MOVLW 0x55 ;
MOVWF EECON2 ;
MOVLW 0xAA ;
MOVWF EECON2 ;
BSF EECON1, WR ;SET BIT TO START WRITES.
BSF INTCON, GIE ;ENABLE INTERRUPTS.
EEW1: ;
; BTFSS PIR2, EEIF ;WRITE-COMPLETE INTERRUPT FLAG.
BTFSC EECON1, WR ; - OR THIS WRITE-COMPLETE
BRA EEW1 ;WAIT FOR WRITE TO FINISH.
BCF EECON1, WREN ;DISABLE WRITES.
BCF PIR2, EEIF ;WRITE-COMPLETE INTERRUPT FLAG.
RETURN ;
;******************************************************************************************************************************************************
EEPROM_READ: ;ADDRESS IN IN WREG, DATA OUT IN WREG.
MOVWF EEADR ;EEPROM ADDRESS.
BCF EECON1, CFGS ;
BCF EECON1, EEPGD ;SELECT DATA EEPROM MEMORY.
BSF EECON1, RD ;ENABLE EEPROM READ.
MOVF EEDATA, W ;VALUE IN W.
;
RETURN ;
;******************************************************************************************************************************************************
FACTORYLOAD: ;
BCF STATUS, C ;Clear carry flag.
RLCF TEMP2 ;MULT x 2, SAVE IN TEMP2.
;
MOVLW HIGH(FACTABLE) ;GET HIGH BYTE OF TABLE ADDRESS.
BTFSC STATUS, C ;ADD IN OFFSET.
INCF WREG ;
MOVWF PCLATH ;MODIFY IF REQUIRED.
;
MOVLW LOW(FACTABLE) ;
ADDWF TEMP2, W ;TEMP2 HAS TABLE OFFSET IN IT.
BTFSC STATUS, C ;
INCF PCLATH ;
MOVWF PCL ;MAKE JUMP TO TABLE. PCLATH &
; PCLATU WRITTEN TO PCH & PCU.
FACTABLE: ;Basses - BANK 1.
RETLW D'32' ;33 B1 :Acoustic Bass. :EEPROM ADDRESS 0x00.
RETLW D'35' ;36 B2 :PIANO 1 + Acoustic BASS. :ADDRESS 0x01.
RETLW D'0' ;1 B3 :Grand Piano 1 + Piano 2. :ADDRESS 0x02.
RETLW D'49' ;50 B4 :String Ensemble 2. :ADDRESS 0x03.
RETLW D'32' ;33 B5 :Acoustic Bass. :ADDRESS 0x04.
RETLW D'255';NOT USED FROM THIS VERSION. :ADDRESS 0x05.
;Chords - BANK 1.
RETLW D'0' ;1 C1 :Grand Piano 1. :ADDRESS 0x06.
RETLW D'52' ;53 C2 :Choir Aahs. :ADDRESS 0x07.
RETLW D'105';106 C3 :Banjo. :ADDRESS 0x08.
RETLW D'49' ;50 C4 :String Ensemble 2. :ADDRESS 0x09.
RETLW D'25' ;25 C5 :Guitar nylon. :ADDRESS 0x0A.
RETLW D'19' ;20 C6 :Church organ. :ADDRESS 0x0B.
;Righthand 1
RETLW D'0' ;1 RH1-1 :Grand Piano. :ADDRESS 0x0C.
RETLW D'0' ;1 RH1-2 :Piano+StringEnsemble 1 +(slo atack). :ADDRESS 0x0D.
RETLW D'3' ;4 RH1-3 :Honkytonk4. :ADDRESS 0x0E.
RETLW D'26' ;27 RH1-4 :Jazz guitar + PEDAL-STEEL. :ADDRESS 0x0F.
RETLW D'25' ;26 RH1-5 :Acoustic steel Guitar. :ADDRESS 0x10.
RETLW D'23' ;24 RH1-6 :FRENCH ACCORDION 22, :ADDRESS 0x11.
;HARMONICA 23, TANGO ACCORDION 24.
;Righthand 1.
RETLW D'49' ;50 RH1-7 :StringEnsemble2 +Ch5 (STRINGENSEMBLE 1). :ADDRESS 0x12.
RETLW D'88' ;89 RH1-8 : Fantasia. :ADDRESS 0x13.
RETLW D'109' ;110 RH1-9 : Bagpipes. :ADDRESS 0x14.
RETLW D'73' ;74 RH1-10 : Flute. :ADDRESS 0x15.
RETLW D'75' ;76 RH1-11 : Pan Flute. :ADDRESS 0x16.
RETLW D'61' ;62 RH1-12 : BRASS SECTION. :ADDRESS 0x17.
;Righthand 2, 1 to 6.
RETLW D'16' ;17 RH2-1 : DRAWBAR ORGAN(Wurlitzer)+chorus+vibrato. :ADDRESS 0x18.
RETLW D'19' ;20 RH2-2 : Church organ + chorus. :ADDRESS 0x19.
RETLW D'99' ;100 RH2-3 : Fx4 Atmosphere. :ADDRESS 0x1A.
RETLW D'40' ;41 RH2-4 : Violins + delay vibrato more. :ADDRESS 0x1B.
RETLW D'57' ;58 RH2-5 : Trombone. :ADDRESS 0x1C.
RETLW D'63' ;64 RH2-6 : Synth brass2. :ADDRESS 0x1D.
;Righthand 2, 7 to 12.
RETLW D'4' ;5 RH2-7 : ELECTRIC PIANO 1. :ADDRESS 0x1E.
RETLW D'91' ;92 RH2-8 : PAD 4 CHOIR. :ADDRESS 0x1F.
RETLW D'105';106 RH2-9 : Banjo. :ADDRESS 0x20.
RETLW D'24' ;25 RH2-10 : Nylon Guitar down 8ve. :ADDRESS 0x21.
RETLW D'22' ;23 RH2-11 : Harmonica :ADDRESS 0x22.
RETLW D'82' ;83 RH2-12 : CALLIOPE. :ADDRESS 0x23.
;
RETLW D'20' ;BASS 1 REVERB ::ADDRESS 0x24.
RETLW D'20' ;BASS 2 REVERB ::ADDRESS 0x25.
RETLW D'60' ;BASS 3 REVERB ::ADDRESS 0x26.
RETLW D'20' ;BASS 4 REVERB ::ADDRESS 0x27.
RETLW D'20' ;BASS 5 REVERB ::ADDRESS 0x28.
RETLW D'0' ;NOT USED. :ADDRESS 0x29.
;
RETLW D'70' ;CHORD 1 REVERB ::ADDRESS 0x2A.
RETLW D'28' ;CHORD 2 REVERB :
RETLW D'28' ;CHORD 3 REVERB :
RETLW D'28' ;CHORD 4 REVERB :
RETLW D'28' ;CHORD 5 REVERB :
RETLW D'28' ;CHORD 6 REVERB :
;
RETLW D'38' ;RH1 1 REVERB :
RETLW D'38' ;RH1 2 REVERB :
RETLW D'38' ;RH1 3 REVERB :
RETLW D'74' ;RH1 4 REVERB :Slide Guitar.
RETLW D'38' ;RH1 5 REVERB :
RETLW D'58' ;RH1 6 REVERB :
;
RETLW D'38' ;RH1 7 REVERB :
RETLW D'38' ;RH1 8 REVERB :
RETLW D'38' ;RH1 9 REVERB :
RETLW D'38' ;RH1 10 REVERB :
RETLW D'38' ;RH1 11 REVERB :
RETLW D'38' ;RH1 12 REVERB :
;
RETLW D'38' ;RH2 1 REVERB :
RETLW D'38' ;RH2 2 REVERB :
RETLW D'38' ;RH2 3 REVERB :
RETLW D'38' ;RH2 4 REVERB :
RETLW D'38' ;RH2 5 REVERB :
RETLW D'38' ;RH2 6 REVERB :
;
RETLW D'38' ;RH2 7 REVERB :
RETLW D'38' ;RH2 8 REVERB :
RETLW D'38' ;RH2 9 REVERB :
RETLW D'38' ;RH2 10 REVERB :
RETLW D'38' ;RH2 11 REVERB :
RETLW D'38' ;RH2 12 REVERB :
;BASSES - BANK 2.
RETLW D'58' ;59 B7 :TUBA.
RETLW D'0' ;1 B8 :Acoustic Piano.
RETLW D'35' ;36 B9 :FRETLESS BASS.
RETLW D'22' ;Harmonica. B10 :Accordion BASS.
RETLW D'34' ;35 B11 :PICKED BASS.
RETLW D'0' ;NOT USED. Button is used as bass register shift.
;Chords - BANK 2.
RETLW D'3' ;4 C7 :Honky piano. + snare drum.
RETLW D'58' ;59 C8 :Tuba.
RETLW D'22' ;23. C9 :.Harmonica.
RETLW D'4' ; C10 :Electric Piano1.
RETLW D'6' ;7 C11 :Harpsichord.
RETLW D'54' ;55 C12 :Synth voice.
;
RETLW D'20' ;BASS 7 REVERB :
RETLW D'128' ;BASS 8 REVERB :
RETLW D'20' ;BASS 9 REVERB :
RETLW D'20' ;BASS 10 REVERB :
RETLW D'20' ;BASS 11 REVERB :
RETLW D'0' ;NOT USED.
;
RETLW D'55' ;CHD 7 REVERB :
RETLW D'28' ;CHD 8 REVERB :
RETLW D'28' ;CHD 9 REVERB :
RETLW D'28' ;CHD 10 REVERB :
RETLW D'28' ;CHD 11 REVERB :
RETLW D'28' ;CHD 12 REVERB : ADDRESS 0x5F
;FOOTSWITCH ASSIGNMNETS. ALL SET TO ZERO.
RETLW D'0' ;FSW1ASSIGNREGBA. ADDRESS 0x60
RETLW D'0' ;FSW2ASSIGNREGBA. 0x61
RETLW D'0' ;FSW3ASSIGNREGBA. 0x62
RETLW D'0' ;FSW4ASSIGNREGBA. 0x63
RETLW D'0' ;FSW1ASSIGNREGCH. 0x64
RETLW D'0' ;FSW2ASSIGNREGCH. 0x65
RETLW D'0' ;FSW3ASSIGNREGCH. 0x66
RETLW D'0' ;FSW4ASSIGNREGCH. 0x67
RETLW D'0' ;FSW1ASSIGNREG11. 0x68
RETLW D'0' ;FSW2ASSIGNREG11. 0x69
RETLW D'0' ;FSW3ASSIGNREG11. 0x6A
RETLW D'0' ;FSW4ASSIGNREG11. 0x6B
RETLW D'0' ;FSW1ASSIGNREG12. 0x6C
RETLW D'0' ;FSW2ASSIGNREG12. 0x6D
RETLW D'0' ;FSW3ASSIGNREG12. 0x6E
RETLW D'0' ;FSW4ASSIGNREG12. 0x6F
RETLW D'0' ;FSW1ASSIGNREG21. 0x70
RETLW D'0' ;FSW2ASSIGNREG21. 0x71
RETLW D'0' ;FSW3ASSIGNREG21. 0x72
RETLW D'0' ;FSW4ASSIGNREG21. 0x73
RETLW D'0' ;FSW1ASSIGNREG22. 0x74
RETLW D'0' ;FSW2ASSIGNREG22. 0x75
RETLW D'0' ;FSW3ASSIGNREG22. 0x76
RETLW D'0' ;FSW4ASSIGNREG22. 0x77
RETLW D'0' ;FSW1ASSIGNREG. 0x70
RETLW D'0' ;FSW2ASSIGNREG. 0x79
RETLW D'0' ;FSW3ASSIGNREG. 0x7A
RETLW D'0' ;FSW4ASSIGNREG. 0x7B
;EEPROM FACTORY TABLE - FURTHER ADRESSES :-
;0x00 -> 0x5F = INSTRUMENT SOUND AND Fx SETTINGS (AS SHOWN ABOVE).
;0x60 -> 0x7B = FOOTSWITCH ASSIGNMENT STORAGE (28 LOCATIONS AS SHOWN ABOVE, 4 FSWs x 7 rows of buttons).
;
;0xC0 = SOFTWARE REVISION NUMBER 1 IN ASCII. '0' = 0x30.
;0xC1 = SOFTWARE REVISION NUMBER 2 IN ASCII. '0' = 0x30.
;0xC2 = SOFTWARE REVISION NUMBER 3 IN ASCII. '1' = 0x31.
;0xC3 = SOFTWARE REVISION NUMBER 4 IN ASCII. 'e' = 0x65.
;
;0xE8 = PITCH bend SLIDE AMOUNT.
;0xE9 = PITCH bend SLIDE TIME.
;0xEA = SOLO VOL LEVEL.
;0xEB = DRUM3 CHORDS VOL.
;0xEC = DRUM3 BASS VOL.
;0xED = DRUM2 CHORDS VOL.
;0xEE = DRUM2 BASS VOL.
;0xEF = MASTER TUNNING VALUE.
;0xF0 = CHAN1 CONVERT TO CHAN3 STATUS: 0 = NO CONVERT.
;0xF1 = DRUM1 CHORDS PERCUSSION VOLUME - level.(60)
;0xF2 = REPEAT RATE VALUE.
;0xF3 = MIDI notes only mode. OFF is mode on.
;0xF4 = TREMOLO SPEED VALUE.
;0xF5 = TREMOLO DEPTH VALUE.
;0XF6 = Blank.
;0XF7 = Blank.
;0XF8 = Blank.
;0xF9 = BYPASS 'CAVAGNOLO' CHANNEL CONVERSION ON Ch 14,15,16. (00.)
;0xFA = DRUM1 BASS PERCUSSION VOLUME - level (60).
;0xFB = PORTAMENTO MASTER VALUE.
;0xFC = CURRENT BANK SELECT LSB.(00)
;0xFD = CURRENT BANK SELECT MSB (00).
;0xFE = DATA INTEGRITY CHECK (0x55).
;0xFF = DATA INTEGRITY CHECK (0xAA).
;----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
BASSOUND1A: ;PARAMETERS FOR BASS1 (BANK A) SOUND.
MOVLW 0x24 ;EEPROM Fx ADDRESS.
MOVWF EEADR ;
BCF EECON1, CFGS ;
BCF EECON1, EEPGD ;SELECT DATA EEPROM MEMORY.
BSF EECON1, RD ;ENABLE EEPROM READ.
MOVF EEDATA, W ;VALUE IN W.
;
MOVWF BYTE3OF3 ;
MOVLW 0xB2 ;BASS CHANNEL 3.
MOVWF BYTE1OF3 ;
MOVLW 0x5B ;REVERB SEND LEVEL = CONTROL 5B.
MOVWF BYTE2OF3 ;
CALL MIDI3BYTE ;
;MOVLW 0xB5 ;BASS CHANNEL 6.
;MOVWF BYTE1OF3 ;
;CALL MIDI3BYTE ;
;
MOVLW 0xB2 ;CONTROL CH3.
MOVWF NORPNR1 ;ATTACK TIME MODIFY.
MOVLW 0x63 ;
MOVWF NORPNR2 ;
MOVLW 0x01 ;
MOVWF NORPNR3 ;
MOVLW 0x62 ;
MOVWF NORPNR4 ;
MOVLW 0x63 ;
MOVWF NORPNR5 ;
MOVLW 0x06 ;
MOVWF NORPNR6 ;
MOVLW 0x45 ;ATTACK TIME.0x40=NO MODIFY.
MOVWF NORPNR7 ;
CALL NORPN7BYTE ;
;
MOVLW 0xB2 ;CONTROL CH3.
MOVWF NORPNR1 ;RELEASE MODIFY.
MOVLW 0x63 ;
MOVWF NORPNR2 ;
MOVLW 0x01 ;
MOVWF NORPNR3 ;
MOVLW 0x62 ;
MOVWF NORPNR4 ;
MOVLW 0x66 ;RELEASE
MOVWF NORPNR5 ;
MOVLW 0x06 ;
MOVWF NORPNR6 ;
MOVLW 0x50 ;RELEASE. 0x40=NO MODIFY.
MOVWF NORPNR7 ;
CALL NORPN7BYTE ;
;
MOVLW 0xB2 ;CONTROL CH3.
MOVWF NORPNR1 ;RESONANCE MODIFY.
MOVLW 0x63 ;
MOVWF NORPNR2 ;
MOVLW 0x01 ;
MOVWF NORPNR3 ;
MOVLW 0x62 ;
MOVWF NORPNR4 ;
MOVLW 0x21 ;
MOVWF NORPNR5 ;
MOVLW 0x06 ;
MOVWF NORPNR6 ;
MOVLW 0x30 ;RESONANCE. 0x40=NO MODIFY.
MOVWF NORPNR7 ;
CALL NORPN7BYTE ;
;
MOVLW 0xB2 ;CONTROL CH3.
MOVWF NORPNR1 ;Fo MODIFY.
MOVLW 0x63 ;
MOVWF NORPNR2 ;
MOVLW 0x01 ;
MOVWF NORPNR3 ;
MOVLW 0x62 ;
MOVWF NORPNR4 ;
MOVLW 0x20 ;
MOVWF NORPNR5 ;
MOVLW 0x06 ;
MOVWF NORPNR6 ;
MOVLW 0x30 ;Fo. 0x40=NO MODIFY.
MOVWF NORPNR7 ;
CALL NORPN7BYTE ;
;
MOVLW 0xB2 ;BASS CHANNEL 3.
MOVWF BYTE1OF3 ;
MOVLW 0x0B ;EXPRESSION.
MOVWF BYTE2OF3 ;
MOVLW 0x70 ;LEVEL REDUCTION, 7F=100%.
MOVWF BYTE3OF3 ;
CALL MIDI3BYTE ;
;
CALL TUNE0CH3 ;
;CALL FO0CH3 ;
;CALL Q0CH3 ;
;CALL ATAK0CH3 ;
CALL DECAY0CH3 ;
;CALL RELEASE0CH3 ;
CALL VIBRATE0CH3 ;
CALL VIBDEPTH0CH3 ;
CALL VIBDELAY0CH3 ;
CALL CHORUS1CH3_OFF ;
CALL COARSETUNE0CH6 ;SET COARSE TUNING TO ZERO.
;
RETURN ;
;................................................................................................................................................................................................................
BASSOUND1BL2: ;PARAMETERS FOR BASS1B SOUND LAYER 2.
MOVLW 0xC5 ;Ch6 - BASS 2nd LAYER SOUND.
MOVWF PROGCHHOLD1 ;
MOVLW D'57' ;58.- TROMBONE.
MOVWF PROGCHHOLD2 ;
CALL PROGCHNGSEND ;EXTRA BASS LAYER.
;
MOVLW 0xB5 ;BASS CHANNEL 6.
MOVWF BYTE1OF3 ;
MOVLW 0x0B ;EXPRESSION.
MOVWF BYTE2OF3 ;
MOVLW 0x40 ;LEVEL REDUCTION, 7F=100%.
MOVWF BYTE3OF3 ;
CALL MIDI3BYTE ;
;
MOVLW 0x54 ;EEPROM Fx ADDRESS.
MOVWF EEADR ;
BCF EECON1, CFGS ;
BCF EECON1, EEPGD ;SELECT DATA EEPROM MEMORY.
BSF EECON1, RD ;ENABLE EEPROM READ.
MOVF EEDATA, W ;VALUE IN W.
;
MOVWF BYTE3OF3 ;
MOVLW 0xB2 ;BASS CHANNEL 3.
MOVWF BYTE1OF3 ;
MOVLW 0x5B ;REVERB SEND LEVEL = CONTROL 5B.
MOVWF BYTE2OF3 ;
CALL MIDI3BYTE ;
MOVLW 0xB5 ;BASS CHANNEL 6.
MOVWF BYTE1OF3 ;
CALL MIDI3BYTE ;
;
CALL COARSETUNE0CH6 ;SET COARSE TUNING TO ZERO.
RETURN ;
;........................................................................................................................................................................................
BASSOUND1BL1: ;PARAMETERS FOR BASS1B SOUND LAYER 1.
MOVLW 0xB2 ;CONTROL CH3.
MOVWF NORPNR1 ;RESONANCE MODIFY.
MOVLW 0x63 ;
MOVWF NORPNR2 ;
MOVLW 0x01 ;
MOVWF NORPNR3 ;
MOVLW 0x62 ;
MOVWF NORPNR4 ;
MOVLW 0x21 ;
MOVWF NORPNR5 ;
MOVLW 0x06 ;
MOVWF NORPNR6 ;
MOVLW 0x01 ;RESONANCE. 0x40=NO MODIFY.
MOVWF NORPNR7 ;
CALL NORPN7BYTE ;
;
MOVLW 0xB2 ;CHANNEL 3.
MOVWF BYTE1OF3 ;
MOVLW 0x0B ;EXPRESSION.
MOVWF BYTE2OF3 ;
MOVLW 0x6F ;LEVEL REDUCTION, 7F=100%.
MOVWF BYTE3OF3 ;
CALL MIDI3BYTE ;
;
MOVLW 0xB2 ;CONTROL CH3.
MOVWF NORPNR1 ;
MOVLW 0x65 ;
MOVWF NORPNR2 ;
MOVLW 0x00 ;
MOVWF NORPNR3 ;
MOVLW 0x64 ;
MOVWF NORPNR4 ;
MOVLW 0x02 ;
MOVWF NORPNR5 ;
MOVLW 0x06 ;
MOVWF NORPNR6 ;
MOVLW 0x34 ;34 : COARSE TUNNING.0x40=NO MOD.
MOVWF NORPNR7 ;DOWN 1 OCTAVE.
CALL NORPN7BYTE ;
;
CALL FO0CH3 ;
;CALL Q0CH3 ;
CALL ATAK0CH3 ;
CALL DECAY0CH3 ;
CALL RELEASE0CH3 ;
CALL VIBRATE0CH3 ;
CALL VIBDEPTH0CH3 ;
CALL VIBDELAY0CH3 ;
CALL CHORUS1CH3_OFF ;
;
RETURN ;
;................................................................................................................................................................................................................
BASSOUND2AL2 ;
MOVLW 0xC5 ;Ch6 - BASS 2nd LAYER SOUND.
MOVWF PROGCHHOLD1 ;
MOVLW D'0' ;1 - PIANO.
MOVWF PROGCHHOLD2 ;
CALL PROGCHNGSEND ;EXTRA LAYER.
;
MOVLW 0xB5 ;BASS CHANNEL 6.
MOVWF BYTE1OF3 ;
MOVLW 0x0B ;EXPRESSION.
MOVWF BYTE2OF3 ;
MOVLW 0x58 ;REDUCE LEVEL
MOVWF BYTE3OF3 ;
CALL MIDI3BYTE ;
;
MOVLW 0x25 ;EEPROM Fx ADDRESS.
MOVWF EEADR ;
BCF EECON1, CFGS ;
BCF EECON1, EEPGD ;SELECT DATA EEPROM MEMORY.
BSF EECON1, RD ;ENABLE EEPROM READ.
MOVF EEDATA, W ;VALUE IN W.
MOVWF BYTE3OF3 ;
MOVLW 0xB2 ;BASS CHANNEL 3.
MOVWF BYTE1OF3 ;
MOVLW 0x5B ;REVERB SEND LEVEL = CONTROL 5B.
MOVWF BYTE2OF3 ;
CALL MIDI3BYTE ;
MOVLW 0xB5 ;BASS CHANNEL 6.
MOVWF BYTE1OF3 ;
CALL MIDI3BYTE ;
;
MOVLW 0xB5 ;CONTROL CH6.
MOVWF NORPNR1 ;
MOVLW 0x65 ;
MOVWF NORPNR2 ;
MOVLW 0x00 ;
MOVWF NORPNR3 ;
MOVLW 0x64 ;
MOVWF NORPNR4 ;
MOVLW 0x01 ;
MOVWF NORPNR5 ;
MOVLW 0x06 ;
MOVWF NORPNR6 ;
MOVLW 0x3F ;FINE TUNING IN CENTS.0x40=CENTRE.
MOVWF NORPNR7 ;
CALL NORPN7BYTE ;
;
CALL COARSETUNE0CH6 ;SET COARSE TUNING TO ZERO.
;
RETURN ;
;........................................................................................................................................................................................
BASSOUND2AL1: ;
MOVLW 0xB2 ;CONTROL CH3.
MOVWF NORPNR1 ;RESONANCE MODIFY.
MOVLW 0x63 ;
MOVWF NORPNR2 ;
MOVLW 0x01 ;
MOVWF NORPNR3 ;
MOVLW 0x62 ;
MOVWF NORPNR4 ;
MOVLW 0x21 ;
MOVWF NORPNR5 ;
MOVLW 0x06 ;
MOVWF NORPNR6 ;
MOVLW 0x01 ;RESONANCE. 0x40=NO MODIFY.
MOVWF NORPNR7 ;
CALL NORPN7BYTE ;
;
MOVLW 0xB2 ;CONTROL CH3.
MOVWF NORPNR1 ;RELEASE MODIFY.
MOVLW 0x63 ;
MOVWF NORPNR2 ;
MOVLW 0x01 ;
MOVWF NORPNR3 ;
MOVLW 0x62 ;
MOVWF NORPNR4 ;
MOVLW 0x66 ;RELEASE
MOVWF NORPNR5 ;
MOVLW 0x06 ;
MOVWF NORPNR6 ;
MOVLW 0x58 ;RELEASE. 0x40=NO MODIFY.
MOVWF NORPNR7 ;
CALL NORPN7BYTE ;
;
;
MOVLW 0xB2 ;CHANNEL 3.
MOVWF BYTE1OF3 ;
MOVLW 0x0B ;EXPRESSION.
MOVWF BYTE2OF3 ;
MOVLW 0x6F ;LEVEL REDUCTION, 7F=100%.
MOVWF BYTE3OF3 ;
CALL MIDI3BYTE ;
;
;CALL TUNE0CH3 ;
CALL FO0CH3 ;
;CALL Q0CH3 ;
CALL ATAK0CH3 ;
CALL DECAY0CH3 ;
;CALL RELEASE0CH3 ;
CALL VIBRATE0CH3 ;
CALL VIBDEPTH0CH3 ;
CALL VIBDELAY0CH3 ;
CALL CHORUS1CH3_OFF ;
;
RETURN ;
;................................................................................................................................................................................................................
BASSOUND2BL1: ;
MOVLW 0x55 ;EEPROM Fx ADDRESS.
MOVWF EEADR ;
BCF EECON1, CFGS ;
BCF EECON1, EEPGD ;SELECT DATA EEPROM MEMORY.
BSF EECON1, RD ;ENABLE EEPROM READ.
MOVF EEDATA, W ;VALUE IN W.
MOVWF BYTE3OF3 ;
MOVLW 0xB2 ;BASS CHANNEL 3.
MOVWF BYTE1OF3 ;
MOVLW 0x5B ;REVERB SEND LEVEL = CONTROL 5B.
MOVWF BYTE2OF3 ;
CALL MIDI3BYTE ;
;MOVLW 0xB5 ;BASS CHANNEL 6.
;MOVWF BYTE1OF3 ;
;CALL MIDI3BYTE ;
;
MOVLW 0xB2 ;CONTROL CH3.
MOVWF NORPNR1 ;RESONANCE MODIFY.
MOVLW 0x63 ;
MOVWF NORPNR2 ;
MOVLW 0x01 ;
MOVWF NORPNR3 ;
MOVLW 0x62 ;
MOVWF NORPNR4 ;
MOVLW 0x21 ;
MOVWF NORPNR5 ;
MOVLW 0x06 ;
MOVWF NORPNR6 ;
MOVLW 0x01 ;RESONANCE. 0x40=NO MODIFY.
MOVWF NORPNR7 ;
CALL NORPN7BYTE ;
;
MOVLW 0xB2 ;CONTROL CH3.
MOVWF NORPNR1 ;
MOVLW 0x63 ;
MOVWF NORPNR2 ;
MOVLW 0x01 ;
MOVWF NORPNR3 ;
MOVLW 0x62 ;
MOVWF NORPNR4 ;
MOVLW 0x09 ;
MOVWF NORPNR5 ;
MOVLW 0x06 ;
MOVWF NORPNR6 ;
MOVLW 0x41 ;VIBRATO DEPTH.0x40=NO MOD.
MOVWF NORPNR7 ;
CALL NORPN7BYTE ;
;
MOVLW 0xB2 ;CHANNEL 3.
MOVWF BYTE1OF3 ;
MOVLW 0x0B ;EXPRESSION.
MOVWF BYTE2OF3 ;
MOVLW 0x6F ;LEVEL REDUCTION, 7F=100%.
MOVWF BYTE3OF3 ;
CALL MIDI3BYTE ;
;
CALL TUNE0CH3 ;
CALL FO0CH3 ;
;CALL Q0CH3 ;
CALL ATAK0CH3 ;
CALL DECAY0CH3 ;
CALL RELEASE0CH3 ;
CALL VIBRATE0CH3 ;
CALL VIBDELAY0CH3 ;
CALL CHORUS1CH3_OFF ;
;CALL COARSETUNE0CH6 ;SET COARSE TUNING TO ZERO.
;
RETURN ;
;................................................................................................................................................................................................................
BASSOUND3AL2: ;
MOVLW 0xC5 ;Ch6.
MOVWF PROGCHHOLD1 ;
MOVLW D'1' ;2 - GRAND PIANO 2.
MOVWF PROGCHHOLD2 ;
CALL PROGCHNGSEND ;EXTRA LAYER 2.
;
MOVLW 0xB5 ;CHANNEL 6.
MOVWF BYTE1OF3 ;
MOVLW 0x0B ;EXPRESSION.
MOVWF BYTE2OF3 ;
MOVLW 0x30 ;LEVEL REDUCTION, 7F=100%.
MOVWF BYTE3OF3 ;
CALL MIDI3BYTE ;
;
MOVLW 0x26 ;EEPROM Fx ADDRESS.
MOVWF EEADR ;
BCF EECON1, CFGS ;
BCF EECON1, EEPGD ;SELECT DATA EEPROM MEMORY.
BSF EECON1, RD ;ENABLE EEPROM READ.
MOVF EEDATA, W ;VALUE IN W.
MOVWF BYTE3OF3 ;
MOVLW 0xB2 ;BASS CHANNEL 3.
MOVWF BYTE1OF3 ;
MOVLW 0x5B ;REVERB SEND LEVEL = CONTROL 5B.
MOVWF BYTE2OF3 ;
CALL MIDI3BYTE ;
MOVLW 0xB5 ;BASS CHANNEL 6.
MOVWF BYTE1OF3 ;
CALL MIDI3BYTE ;
;
MOVLW 0xB5 ;CONTROL CH6.
MOVWF NORPNR1 ;
MOVLW 0x65 ;
MOVWF NORPNR2 ;
MOVLW 0x00 ;
MOVWF NORPNR3 ;
MOVLW 0x64 ;
MOVWF NORPNR4 ;
MOVLW 0x02 ;
MOVWF NORPNR5 ;
MOVLW 0x06 ;
MOVWF NORPNR6 ;
MOVLW 0x34 ;34 : COARSE TUNNING.0x40=NO MOD.
MOVWF NORPNR7 ;DOWN 1 OCTAVE.
CALL NORPN7BYTE ;
;
MOVLW 0xB5 ;CONTROL CH6.
MOVWF NORPNR1 ;
MOVLW 0x65 ;
MOVWF NORPNR2 ;
MOVLW 0x00 ;
MOVWF NORPNR3 ;
MOVLW 0x64 ;
MOVWF NORPNR4 ;
MOVLW 0x01 ;
MOVWF NORPNR5 ;
MOVLW 0x06 ;
MOVWF NORPNR6 ;
MOVLW 0x3F ;FINE TUNING IN CENTS.0x40=CENTRE.
MOVWF NORPNR7 ;
CALL NORPN7BYTE ;
;
RETURN ;
;........................................................................................................................................................................................
BASSOUND3AL1: ;
;
MOVLW 0xB2 ;CONTROL CH3.
MOVWF NORPNR1 ;RESONANCE MODIFY.
MOVLW 0x63 ;
MOVWF NORPNR2 ;
MOVLW 0x01 ;
MOVWF NORPNR3 ;
MOVLW 0x62 ;
MOVWF NORPNR4 ;
MOVLW 0x21 ;
MOVWF NORPNR5 ;
MOVLW 0x06 ;
MOVWF NORPNR6 ;
MOVLW 0x01 ;RESONANCE. 0x40=NO MODIFY.
MOVWF NORPNR7 ;
CALL NORPN7BYTE ;
;
MOVLW 0xB2 ;BASS CHANNEL 3.
MOVWF BYTE1OF3 ;
MOVLW 0x0B ;EXPRESSION.
MOVWF BYTE2OF3 ;
MOVLW 0x68 ;LEVEL REDUCTION, 7F=100%.
MOVWF BYTE3OF3 ;
CALL MIDI3BYTE ;
;
;CALL TUNE0CH3 ;
CALL FO0CH3 ;
;CALL Q0CH3 ;
CALL ATAK0CH3 ;
CALL DECAY0CH3 ;
CALL RELEASE0CH3 ;
CALL VIBRATE0CH3 ;
CALL VIBDEPTH0CH3 ;
CALL VIBDELAY0CH3 ;
CALL CHORUS1CH3_OFF ;
;
RETURN ;
;................................................................................................................................................................................................................
BASSOUND3BL2: ;
MOVLW 0xC5 ;Ch6.
MOVWF PROGCHHOLD1 ;
MOVLW D'33' ;34 - FINGER BASS.
MOVWF PROGCHHOLD2 ;
CALL PROGCHNGSEND ;EXTRA LAYER.
;
MOVLW 0xB5 ;BASS CHANNEL 6.
MOVWF BYTE1OF3 ;
MOVLW 0x0B ;EXPRESSION.
MOVWF BYTE2OF3 ;
MOVLW 0x50 ;LEVEL
MOVWF BYTE3OF3 ;
CALL MIDI3BYTE ;
;
MOVLW 0x56 ;EEPROM Fx ADDRESS.
MOVWF EEADR ;
BCF EECON1, CFGS ;
BCF EECON1, EEPGD ;SELECT DATA EEPROM MEMORY.
BSF EECON1, RD ;ENABLE EEPROM READ.
MOVF EEDATA, W ;VALUE IN W.
MOVWF BYTE3OF3 ;
MOVLW 0xB2 ;BASS CHANNEL 3.
MOVWF BYTE1OF3 ;
MOVLW 0x5B ;REVERB SEND LEVEL = CONTROL 5B.
MOVWF BYTE2OF3 ;
CALL MIDI3BYTE ;
MOVLW 0xB5 ;BASS CHANNEL 6.
MOVWF BYTE1OF3 ;
CALL MIDI3BYTE ;
;
CALL COARSETUNE0CH6 ;SET COARSE TUNING TO ZERO.
;
RETURN ;
;........................................................................................................................................................................................
BASSOUND3BL1: ;
MOVLW 0xB2 ;CONTROL CH3.
MOVWF NORPNR1 ;RESONANCE MODIFY.
MOVLW 0x63 ;
MOVWF NORPNR2 ;
MOVLW 0x01 ;
MOVWF NORPNR3 ;
MOVLW 0x62 ;
MOVWF NORPNR4 ;
MOVLW 0x21 ;
MOVWF NORPNR5 ;
MOVLW 0x06 ;
MOVWF NORPNR6 ;
MOVLW 0x01 ;RESONANCE. 0x40=NO MODIFY.
MOVWF NORPNR7 ;
CALL NORPN7BYTE ;
;
MOVLW 0xB2 ;CHANNEL 3.
MOVWF BYTE1OF3 ;
MOVLW 0x0B ;EXPRESSION.
MOVWF BYTE2OF3 ;
MOVLW 0x6F ;LEVEL REDUCTION, 7F=100%.
MOVWF BYTE3OF3 ;
CALL MIDI3BYTE ;
;
CALL TUNE0CH3 ;
CALL FO0CH3 ;
;CALL Q0CH3 ;
CALL ATAK0CH3 ;
CALL DECAY0CH3 ;
CALL RELEASE0CH3 ;
CALL VIBRATE0CH3 ;
CALL VIBDEPTH0CH3 ;
CALL VIBDELAY0CH3 ;
CALL CHORUS1CH3_OFF ;
;
RETURN ;
;................................................................................................................................................................................................................
BASSOUND4AL1: ;
MOVLW 0x27 ;EEPROM Fx ADDRESS.
MOVWF EEADR ;
BCF EECON1, CFGS ;
BCF EECON1, EEPGD ;SELECT DATA EEPROM MEMORY.
BSF EECON1, RD ;ENABLE EEPROM READ.
MOVF EEDATA, W ;VALUE IN W.
MOVWF BYTE3OF3 ;
MOVLW 0xB2 ;BASS CHANNEL 3.
MOVWF BYTE1OF3 ;
MOVLW 0x5B ;REVERB SEND LEVEL = CONTROL 5B.
MOVWF BYTE2OF3 ;
CALL MIDI3BYTE ;
;
MOVLW 0xB2 ;CONTROL CH3.
MOVWF NORPNR1 ;RESONANCE MODIFY.
MOVLW 0x63 ;
MOVWF NORPNR2 ;
MOVLW 0x01 ;
MOVWF NORPNR3 ;
MOVLW 0x62 ;
MOVWF NORPNR4 ;
MOVLW 0x21 ;
MOVWF NORPNR5 ;
MOVLW 0x06 ;
MOVWF NORPNR6 ;
MOVLW 0x01 ;RESONANCE. 0x40=NO MODIFY.
MOVWF NORPNR7 ;
CALL NORPN7BYTE ;
;
MOVLW 0xB2 ;BASS CHANNEL 3.
MOVWF BYTE1OF3 ;
MOVLW 0x0B ;EXPRESSION.
MOVWF BYTE2OF3 ;
MOVLW 0x6F ;LEVEL REDUCTION, 7F=100%.
MOVWF BYTE3OF3 ;
CALL MIDI3BYTE ;
;
CALL TUNE0CH3 ;
CALL FO0CH3 ;
;CALL Q0CH3 ;
CALL ATAK0CH3 ;
CALL DECAY0CH3 ;
CALL RELEASE0CH3 ;
CALL VIBRATE0CH3 ;
CALL VIBDEPTH0CH3 ;
CALL VIBDELAY0CH3 ;
CALL CHORUS1CH3_OFF ;
CALL COARSETUNE0CH6 ;SET COARSE TUNING TO ZERO.
;
RETURN ;
;................................................................................................................................................................................................................
BASSOUND4BL1: ;
MOVLW 0x57 ;EEPROM Fx ADDRESS.
MOVWF EEADR ;
BCF EECON1, CFGS ;
BCF EECON1, EEPGD ;SELECT DATA EEPROM MEMORY.
BSF EECON1, RD ;ENABLE EEPROM READ.
MOVF EEDATA, W ;VALUE IN W.
MOVWF BYTE3OF3 ;
MOVLW 0xB2 ;BASS CHANNEL 3.
MOVWF BYTE1OF3 ;
MOVLW 0x5B ;REVERB SEND LEVEL = CONTROL 5B.
MOVWF BYTE2OF3 ;
CALL MIDI3BYTE ;
;MOVLW 0xB5 ;BASS CHANNEL 6.
;MOVWF BYTE1OF3 ;
;CALL MIDI3BYTE ;
;
MOVLW 0xB2 ;CONTROL CH3.
MOVWF NORPNR1 ;ATTACK TIME MODIFY.
MOVLW 0x63 ;
MOVWF NORPNR2 ;
MOVLW 0x01 ;
MOVWF NORPNR3 ;
MOVLW 0x62 ;
MOVWF NORPNR4 ;
MOVLW 0x63 ;
MOVWF NORPNR5 ;
MOVLW 0x06 ;
MOVWF NORPNR6 ;
MOVLW 0x46 ;ATTACK TIME.0x40=NO MODIFY.
MOVWF NORPNR7 ;
CALL NORPN7BYTE ;
;
MOVLW 0xB2 ;CONTROL CH3.
MOVWF NORPNR1 ;RELEASE MODIFY.
MOVLW 0x63 ;
MOVWF NORPNR2 ;
MOVLW 0x01 ;
MOVWF NORPNR3 ;
MOVLW 0x62 ;
MOVWF NORPNR4 ;
MOVLW 0x66 ;RELEASE
MOVWF NORPNR5 ;
MOVLW 0x06 ;
MOVWF NORPNR6 ;
MOVLW 0x40 ;RELEASE. 0x40=NO MODIFY.
MOVWF NORPNR7 ;
CALL NORPN7BYTE ;
;
MOVLW 0xB2 ;CONTROL CH3.
MOVWF NORPNR1 ;RESONANCE MODIFY.
MOVLW 0x63 ;
MOVWF NORPNR2 ;
MOVLW 0x01 ;
MOVWF NORPNR3 ;
MOVLW 0x62 ;
MOVWF NORPNR4 ;
MOVLW 0x21 ;
MOVWF NORPNR5 ;
MOVLW 0x06 ;
MOVWF NORPNR6 ;
MOVLW 0x01 ;RESONANCE. 0x40=NO MODIFY.
MOVWF NORPNR7 ;
CALL NORPN7BYTE ;
;
MOVLW 0xB2 ;CONTROL CH3.
MOVWF NORPNR1 ;Fo MODIFY.
MOVLW 0x63 ;
MOVWF NORPNR2 ;
MOVLW 0x01 ;
MOVWF NORPNR3 ;
MOVLW 0x62 ;
MOVWF NORPNR4 ;
MOVLW 0x20 ;
MOVWF NORPNR5 ;
MOVLW 0x06 ;
MOVWF NORPNR6 ;
MOVLW 0x20 ;Fo. 0x40=NO MODIFY.
MOVWF NORPNR7 ;
CALL NORPN7BYTE ;
;
MOVLW 0xB2 ;BASS CHANNEL 3.
MOVWF BYTE1OF3 ;
MOVLW 0x0B ;EXPRESSION.
MOVWF BYTE2OF3 ;
MOVLW 0x6F ;LEVEL REDUCTION, 7F=100%.
MOVWF BYTE3OF3 ;
CALL MIDI3BYTE ;
;
CALL TUNE0CH3 ;
;CALL FO0CH3 ;
;CALL Q0CH3 ;
;CALL ATAK0CH3 ;
CALL DECAY0CH3 ;
;CALL RELEASE0CH3 ;
CALL VIBRATE0CH3 ;
CALL VIBDEPTH0CH3 ;
CALL VIBDELAY0CH3 ;
CALL CHORUS1CH3_OFF ;
CALL COARSETUNE0CH6 ;SET COARSE TUNING TO ZERO.
;
RETURN ;
;................................................................................................................................................................................................................
BASSOUND5AL1: ;
MOVLW 0x28 ;EEPROM Fx ADDRESS.
MOVWF EEADR ;
BCF EECON1, CFGS ;
BCF EECON1, EEPGD ;SELECT DATA EEPROM MEMORY.
BSF EECON1, RD ;ENABLE EEPROM READ.
MOVF EEDATA, W ;VALUE IN W.
MOVWF BYTE3OF3 ;
MOVLW 0xB2 ;BASS CHANNEL 3.
MOVWF BYTE1OF3 ;
MOVLW 0x5B ;REVERB SEND LEVEL = CONTROL 5B.
MOVWF BYTE2OF3 ;
CALL MIDI3BYTE ;
;MOVLW 0xB5 ;BASS CHANNEL 6.
;MOVWF BYTE1OF3 ;
;CALL MIDI3BYTE ;
;
MOVLW 0xB2 ;CONTROL CH3.
MOVWF NORPNR1 ;ATTACK TIME MODIFY.
MOVLW 0x63 ;
MOVWF NORPNR2 ;
MOVLW 0x01 ;
MOVWF NORPNR3 ;
MOVLW 0x62 ;
MOVWF NORPNR4 ;
MOVLW 0x63 ;
MOVWF NORPNR5 ;
MOVLW 0x06 ;
MOVWF NORPNR6 ;
MOVLW 0x46 ;ATTACK TIME.0x40=NO MODIFY.
MOVWF NORPNR7 ;
CALL NORPN7BYTE ;
;
MOVLW 0xB2 ;CONTROL CH3.
MOVWF NORPNR1 ;RELEASE MODIFY.
MOVLW 0x63 ;
MOVWF NORPNR2 ;
MOVLW 0x01 ;
MOVWF NORPNR3 ;
MOVLW 0x62 ;
MOVWF NORPNR4 ;
MOVLW 0x66 ;RELEASE
MOVWF NORPNR5 ;
MOVLW 0x06 ;
MOVWF NORPNR6 ;
MOVLW 0x58 ;RELEASE. 0x40=NO MODIFY. (was 58). *** ???
MOVWF NORPNR7 ;
CALL NORPN7BYTE ;
;
MOVLW 0xB2 ;CONTROL CH3.
MOVWF NORPNR1 ;RESONANCE MODIFY.
MOVLW 0x63 ;
MOVWF NORPNR2 ;
MOVLW 0x01 ;
MOVWF NORPNR3 ;
MOVLW 0x62 ;
MOVWF NORPNR4 ;
MOVLW 0x21 ;
MOVWF NORPNR5 ;
MOVLW 0x06 ;
MOVWF NORPNR6 ;
MOVLW 0x30 ;RESONANCE. 0x40=NO MODIFY.
MOVWF NORPNR7 ;
CALL NORPN7BYTE ;
;
MOVLW 0xB2 ;CONTROL CH3.
MOVWF NORPNR1 ;Fo MODIFY.
MOVLW 0x63 ;
MOVWF NORPNR2 ;
MOVLW 0x01 ;
MOVWF NORPNR3 ;
MOVLW 0x62 ;
MOVWF NORPNR4 ;
MOVLW 0x20 ;
MOVWF NORPNR5 ;
MOVLW 0x06 ;
MOVWF NORPNR6 ;
MOVLW 0x30 ;Fo. 0x40=NO MODIFY.
MOVWF NORPNR7 ;
CALL NORPN7BYTE ;
;
MOVLW 0xB2 ;BASS CHANNEL 3.
MOVWF BYTE1OF3 ;
MOVLW 0x0B ;EXPRESSION.
MOVWF BYTE2OF3 ;
MOVLW 0x6F ;LEVEL EDUCTION, 7F=100%.
MOVWF BYTE3OF3 ;
CALL MIDI3BYTE ;
;
CALL TUNE0CH3 ;
;CALL FO0CH3 ;
;CALL Q0CH3 ;
;CALL ATAK0CH3 ;
CALL DECAY0CH3 ;
;CALL RELEASE0CH3 ;
CALL VIBRATE0CH3 ;
CALL VIBDEPTH0CH3 ;
CALL VIBDELAY0CH3 ;
CALL CHORUS1CH3_OFF ;
CALL COARSETUNE0CH6 ;SET COARSE TUNING TO ZERO.
;
RETURN ;
;................................................................................................................................................................................................................
BASSOUND5BL1: ;
MOVLW 0x58 ;EEPROM Fx ADDRESS.
MOVWF EEADR ;
BCF EECON1, CFGS ;
BCF EECON1, EEPGD ;SELECT DATA EEPROM MEMORY.
BSF EECON1, RD ;ENABLE EEPROM READ.
MOVF EEDATA, W ;VALUE IN W.
MOVWF BYTE3OF3 ;
MOVLW 0xB2 ;BASS CHANNEL 3.
MOVWF BYTE1OF3 ;
MOVLW 0x5B ;REVERB SEND LEVEL = CONTROL 5B.
MOVWF BYTE2OF3 ;
CALL MIDI3BYTE ;
;
MOVLW 0xB2 ;CONTROL CH3.
MOVWF NORPNR1 ;RESONANCE MODIFY.
MOVLW 0x63 ;
MOVWF NORPNR2 ;
MOVLW 0x01 ;
MOVWF NORPNR3 ;
MOVLW 0x62 ;
MOVWF NORPNR4 ;
MOVLW 0x21 ;
MOVWF NORPNR5 ;
MOVLW 0x06 ;
MOVWF NORPNR6 ;
MOVLW 0x01 ;RESONANCE. 0x40=NO MODIFY.
MOVWF NORPNR7 ;
CALL NORPN7BYTE ;
;
MOVLW 0xB2 ;BASS CHANNEL 3.
MOVWF BYTE1OF3 ;
MOVLW 0x0B ;EXPRESSION.
MOVWF BYTE2OF3 ;
MOVLW 0x6F ;LEVEL REDUCTION, 7F=100%.
MOVWF BYTE3OF3 ;
CALL MIDI3BYTE ;
;
CALL TUNE0CH3 ;
CALL FO0CH3 ;
;CALL Q0CH3 ;
CALL ATAK0CH3 ;
CALL DECAY0CH3 ;
CALL RELEASE0CH3 ;
CALL VIBRATE0CH3 ;
CALL VIBDEPTH0CH3 ;
CALL VIBDELAY0CH3 ;
CALL CHORUS1CH3_OFF ;
CALL COARSETUNE0CH6 ;SET COARSE TUNING TO ZERO.
;
RETURN ;
;................................................................................................................................................................................................................
CHORDSOUND1A: ;
MOVLW 0x2A ;EEPROM Fx ADDRESS.
MOVWF EEADR ;
BCF EECON1, CFGS ;
BCF EECON1, EEPGD ;SELECT DATA EEPROM MEMORY.
BSF EECON1, RD ;ENABLE EEPROM READ.
MOVF EEDATA, W ;VALUE IN W.
MOVWF BYTE3OF3 ;
MOVLW 0xB1 ;CHORD CHANNEL 2.
MOVWF BYTE1OF3 ;
MOVLW 0x5B ;REVERB SEND LEVEL=CONTROL 5B.
MOVWF BYTE2OF3 ;
CALL MIDI3BYTE ;
;
MOVLW 0xB1 ;CONTROL CH2.
MOVWF NORPNR1 ;Fo MODIFY.
MOVLW 0x63 ;
MOVWF NORPNR2 ;
MOVLW 0x01 ;
MOVWF NORPNR3 ;
MOVLW 0x62 ;
MOVWF NORPNR4 ;
MOVLW 0x20 ;
MOVWF NORPNR5 ;
MOVLW 0x06 ;
MOVWF NORPNR6 ;
MOVLW 0x38 ;Fo. 0x40=NO MODIFY.
MOVWF NORPNR7 ;
CALL NORPN7BYTE ;
;
MOVLW 0xB1 ;CHORD CHANNEL 2.
MOVWF BYTE1OF3 ;
MOVLW 0x0B ;EXPRESSION.
MOVWF BYTE2OF3 ;
MOVLW 0x40 ;LEVEL REDUCTION, 7F=100%.
MOVWF BYTE3OF3 ;
CALL MIDI3BYTE ;
;
CALL TUNE0CH2 ;
CALL ATAKZEROCH2 ;
;CALL FOZEROCH2 ;
CALL CHORUS1CH2_OFF ;
;
RETURN ;
;................................................................................................................................................................................................................
CHORDSOUND2A: ;
MOVLW 0x2B ;EEPROM Fx ADDRESS.
MOVWF EEADR ;
BCF EECON1, CFGS ;
BCF EECON1, EEPGD ;SELECT DATA EEPROM MEMORY.
BSF EECON1, RD ;ENABLE EEPROM READ.
MOVF EEDATA, W ;VALUE IN W.
MOVWF BYTE3OF3 ;
MOVLW 0xB1 ;CHORD CHANNEL 2.
MOVWF BYTE1OF3 ;
MOVLW 0x5B ;REVERB SEND LEVEL=CONTROL 5B.
MOVWF BYTE2OF3 ;
CALL MIDI3BYTE ;
;
MOVLW 0xB1 ;CONTROL CH2.
MOVWF NORPNR1 ;ATTACK TIME MODIFY.
MOVLW 0x63 ;
MOVWF NORPNR2 ;
MOVLW 0x01 ;
MOVWF NORPNR3 ;
MOVLW 0x62 ;
MOVWF NORPNR4 ;
MOVLW 0x63 ;
MOVWF NORPNR5 ;
MOVLW 0x06 ;
MOVWF NORPNR6 ;
MOVLW 0x44 ;ATTACK TIME.0x40=NO MODIFY.
MOVWF NORPNR7 ;
CALL NORPN7BYTE ;
;
MOVLW 0xB1 ;CHORD CHANNEL 2.
MOVWF BYTE1OF3 ;
MOVLW 0x0B ;EXPRESSION.
MOVWF BYTE2OF3 ;
MOVLW 0x40 ;LEVEL REDUCTION, 7F=100%.
MOVWF BYTE3OF3 ;
CALL MIDI3BYTE ;
;
CALL FOZEROCH2 ;
CALL TUNE0CH2 ;
;
MOVLW 0x3D ;SELECT CHORUS RATE.
MOVWF SYSX11BYTE8 ;
MOVLW 0x00 ;CHORUS RATE VALUE.
MOVWF SYSX11BYTE9 ;
CALL SYSX11BYTE ;SET CHORUS RATE.
;
RETURN ;
;................................................................................................................................................................................................................
CHORDSOUND3A: ;
MOVLW 0x2C ;EEPROM Fx ADDRESS.
MOVWF EEADR ;
BCF EECON1, CFGS ;
BCF EECON1, EEPGD ;SELECT DATA EEPROM MEMORY.
BSF EECON1, RD ;ENABLE EEPROM READ.
MOVF EEDATA, W ;VALUE IN W.
MOVWF BYTE3OF3 ;
MOVLW 0xB1 ;CHORD CHANNEL 2.
MOVWF BYTE1OF3 ;
MOVLW 0x5B ;REVERB SEND LEVEL=CONTROL 5B.
MOVWF BYTE2OF3 ;
CALL MIDI3BYTE ;
;
MOVLW 0xB1 ;CHORD CHANNEL 2.
MOVWF BYTE1OF3 ;
MOVLW 0x0B ;EXPRESSION.
MOVWF BYTE2OF3 ;
MOVLW 0x3A ;LEVEL REDUCTION, 7F=100%.
MOVWF BYTE3OF3 ;
CALL MIDI3BYTE ;
;
CALL TUNE0CH2 ;
CALL ATAKZEROCH2 ;
CALL FOZEROCH2 ;
CALL CHORUS1CH2_OFF ;
;
RETURN ;
;................................................................................................................................................................................................................
CHORDSOUND4A: ;
MOVLW 0x2D ;EEPROM Fx ADDRESS.
MOVWF EEADR ;
BCF EECON1, CFGS ;
BCF EECON1, EEPGD ;SELECT DATA EEPROM MEMORY.
BSF EECON1, RD ;ENABLE EEPROM READ.
MOVF EEDATA, W ;VALUE IN W.
MOVWF BYTE3OF3 ;
MOVLW 0xB1 ;CHORD CHANNEL 2.
MOVWF BYTE1OF3 ;
MOVLW 0x5B ;REVERB SEND LEVEL=CONTROL 5B.
MOVWF BYTE2OF3 ;
CALL MIDI3BYTE ;
;
MOVLW 0xB1 ;CHORD CHANNEL 2.
MOVWF BYTE1OF3 ;
MOVLW 0x0B ;EXPRESSION.
MOVWF BYTE2OF3 ;
MOVLW 0x40 ;LEVEL REDUCTION, 7F=100%.
MOVWF BYTE3OF3 ;
CALL MIDI3BYTE ;
;
CALL TUNE0CH2 ;
CALL ATAKZEROCH2 ;
CALL FOZEROCH2 ;
CALL CHORUS1CH2_OFF ;
;
RETURN ;
;................................................................................................................................................................................................................
CHORDSOUND5A: ;
MOVLW 0x2E ;EEPROM Fx ADDRESS.
MOVWF EEADR ;
BCF EECON1, CFGS ;
BCF EECON1, EEPGD ;SELECT DATA EEPROM MEMORY.
BSF EECON1, RD ;ENABLE EEPROM READ.
MOVF EEDATA, W ;VALUE IN W.
MOVWF BYTE3OF3 ;
MOVLW 0xB1 ;CHORD CHANNEL 2.
MOVWF BYTE1OF3 ;
MOVLW 0x5B ;REVERB SEND LEVEL=CONTROL 5B.
MOVWF BYTE2OF3 ;
CALL MIDI3BYTE ;
;
MOVLW 0xB1 ;CHORD CHANNEL 2.
MOVWF BYTE1OF3 ;
MOVLW 0x0B ;EXPRESSION.
MOVWF BYTE2OF3 ;
MOVLW 0x40 ;LEVEL REDUCTION, 7F=100%.
MOVWF BYTE3OF3 ;
CALL MIDI3BYTE ;
;
CALL TUNE0CH2 ;
CALL ATAKZEROCH2 ;
CALL FOZEROCH2 ;
CALL CHORUS1CH2_OFF ;
;
RETURN ;
;................................................................................................................................................................................................................
CHORDSOUND6A: ;
MOVLW 0x2F ;EEPROM Fx ADDRESS.
MOVWF EEADR ;
BCF EECON1, CFGS ;
BCF EECON1, EEPGD ;SELECT DATA EEPROM MEMORY.
BSF EECON1, RD ;ENABLE EEPROM READ.
MOVF EEDATA, W ;VALUE IN W.
MOVWF BYTE3OF3 ;
MOVLW 0xB1 ;CHORD CHANNEL 2.
MOVWF BYTE1OF3 ;
MOVLW 0x5B ;REVERB SEND LEVEL=CONTROL 5B.
MOVWF BYTE2OF3 ;
CALL MIDI3BYTE ;
;
MOVLW 0xB1 ;CHORD CHANNEL 2.
MOVWF BYTE1OF3 ;
MOVLW 0x0B ;EXPRESSION.
MOVWF BYTE2OF3 ;
MOVLW 0x40 ;LEVEL REDUCTION, 7F=100%.
MOVWF BYTE3OF3 ;
CALL MIDI3BYTE ;
;
CALL TUNE0CH2 ;
CALL ATAKZEROCH2 ;
CALL FOZEROCH2 ;
CALL CHORUS1CH2_OFF ;
;
RETURN ;
;................................................................................................................................................................................................................
CHORDSOUND1B: ;
MOVLW 0x5A ;EEPROM Fx ADDRESS.
MOVWF EEADR ;
BCF EECON1, CFGS ;
BCF EECON1, EEPGD ;SELECT DATA EEPROM MEMORY.
BSF EECON1, RD ;ENABLE EEPROM READ.
MOVF EEDATA, W ;VALUE IN W.
MOVWF BYTE3OF3 ;
MOVLW 0xB1 ;CHORD CHANNEL 2.
MOVWF BYTE1OF3 ;
MOVLW 0x5B ;REVERB SEND LEVEL=CONTROL 5B.
MOVWF BYTE2OF3 ;
CALL MIDI3BYTE ;
;
MOVLW 0xB1 ;CHORD CHANNEL 2.
MOVWF BYTE1OF3 ;
MOVLW 0x0B ;EXPRESSION.
MOVWF BYTE2OF3 ;
MOVLW 0x40 ;LEVEL REDUCTION, 7F=100%.
MOVWF BYTE3OF3 ;
CALL MIDI3BYTE ;
;
CALL TUNE0CH2 ;
CALL ATAKZEROCH2 ;
CALL FOZEROCH2 ;
CALL CHORUS1CH2_OFF ;
;
RETURN ;
;................................................................................................................................................................................................................
CHORDSOUND2B: ;
MOVLW 0x5B ;EEPROM Fx ADDRESS.
MOVWF EEADR ;
BCF EECON1, CFGS ;
BCF EECON1, EEPGD ;SELECT DATA EEPROM MEMORY.
BSF EECON1, RD ;ENABLE EEPROM READ.
MOVF EEDATA, W ;VALUE IN W.
MOVWF BYTE3OF3 ;
MOVLW 0xB1 ;CHORD CHANNEL 2.
MOVWF BYTE1OF3 ;
MOVLW 0x5B ;REVERB SEND LEVEL=CONTROL 5B.
MOVWF BYTE2OF3 ;
CALL MIDI3BYTE ;
;
MOVLW 0xB1 ;CHORD CHANNEL 2.
MOVWF BYTE1OF3 ;
MOVLW 0x0B ;EXPRESSION.
MOVWF BYTE2OF3 ;
MOVLW 0x40 ;LEVEL REDUCTION, 7F=100%.
MOVWF BYTE3OF3 ;
CALL MIDI3BYTE ;
;
CALL ATAKZEROCH2 ;
CALL FOZEROCH2 ;
CALL TUNE0CH2 ;
CALL CHORUS1CH2_OFF ;
;
RETURN ;
;................................................................................................................................................................................................................
CHORDSOUND3B: ;
MOVLW 0x5C ;EEPROM Fx ADDRESS.
MOVWF EEADR ;
BCF EECON1, CFGS ;
BCF EECON1, EEPGD ;SELECT DATA EEPROM MEMORY.
BSF EECON1, RD ;ENABLE EEPROM READ.
MOVF EEDATA, W ;VALUE IN W.
MOVWF BYTE3OF3 ;
MOVLW 0xB1 ;CHORD CHANNEL 2.
MOVWF BYTE1OF3 ;
MOVLW 0x5B ;REVERB SEND LEVEL=CONTROL 5B.
MOVWF BYTE2OF3 ;
CALL MIDI3BYTE ;
;
MOVLW 0xB1 ;CHORD CHANNEL 2.
MOVWF BYTE1OF3 ;
MOVLW 0x0B ;EXPRESSION.
MOVWF BYTE2OF3 ;
MOVLW 0x40 ;LEVEL REDUCTION, 7F=100%.
MOVWF BYTE3OF3 ;
CALL MIDI3BYTE ;
;
CALL TUNE0CH2 ;
CALL ATAKZEROCH2 ;
CALL FOZEROCH2 ;
CALL CHORUS1CH2_OFF ;
;
RETURN ;
;................................................................................................................................................................................................................
CHORDSOUND4B: ;
MOVLW 0x5D ;EEPROM Fx ADDRESS.
MOVWF EEADR ;
BCF EECON1, CFGS ;
BCF EECON1, EEPGD ;SELECT DATA EEPROM MEMORY.
BSF EECON1, RD ;ENABLE EEPROM READ.
MOVF EEDATA, W ;VALUE IN W.
MOVWF BYTE3OF3 ;
MOVLW 0xB1 ;CHORD CHANNEL 2.
MOVWF BYTE1OF3 ;
MOVLW 0x5B ;REVERB SEND LEVEL=CONTROL 5B.
MOVWF BYTE2OF3 ;
CALL MIDI3BYTE ;
;
MOVLW 0xB1 ;CHORD CHANNEL 2.
MOVWF BYTE1OF3 ;
MOVLW 0x0B ;EXPRESSION.
MOVWF BYTE2OF3 ;
MOVLW 0x50 ;LEVEL REDUCTION, 7F=100%.
MOVWF BYTE3OF3 ;
CALL MIDI3BYTE ;
;
CALL TUNE0CH2 ;
CALL ATAKZEROCH2 ;
CALL FOZEROCH2 ;
CALL CHORUS1CH2_OFF ;
;
RETURN ;
;................................................................................................................................................................................................................
CHORDSOUND5B: ;
MOVLW 0x5E ;EEPROM Fx ADDRESS.
MOVWF EEADR ;
BCF EECON1, CFGS ;
BCF EECON1, EEPGD ;SELECT DATA EEPROM MEMORY.
BSF EECON1, RD ;ENABLE EEPROM READ.
MOVF EEDATA, W ;VALUE IN W.
MOVWF BYTE3OF3 ;
MOVLW 0xB1 ;CHORD CHANNEL 2.
MOVWF BYTE1OF3 ;
MOVLW 0x5B ;REVERB SEND LEVEL=CONTROL 5B.
MOVWF BYTE2OF3 ;
CALL MIDI3BYTE ;
;
MOVLW 0xB1 ;CHORD CHANNEL 2.
MOVWF BYTE1OF3 ;
MOVLW 0x0B ;EXPRESSION.
MOVWF BYTE2OF3 ;
MOVLW 0x40 ;LEVEL REDUCTION, 7F=100%.
MOVWF BYTE3OF3 ;
CALL MIDI3BYTE ;
;
CALL TUNE0CH2 ;
CALL ATAKZEROCH2 ;
CALL FOZEROCH2 ;
CALL CHORUS1CH2_OFF ;
;
RETURN ;
;................................................................................................................................................................................................................
CHORDSOUND6B: ;
MOVLW 0x5F ;EEPROM Fx ADDRESS.
MOVWF EEADR ;
BCF EECON1, CFGS ;
BCF EECON1, EEPGD ;SELECT DATA EEPROM MEMORY.
BSF EECON1, RD ;ENABLE EEPROM READ.
MOVF EEDATA, W ;VALUE IN W.
MOVWF BYTE3OF3 ;
MOVLW 0xB1 ;CHORD CHANNEL 2.
MOVWF BYTE1OF3 ;
MOVLW 0x5B ;REVERB SEND LEVEL=CONTROL 5B.
MOVWF BYTE2OF3 ;
CALL MIDI3BYTE ;
;
MOVLW 0xB1 ;CHORD CHANNEL 2.
MOVWF BYTE1OF3 ;
MOVLW 0x0B ;EXPRESSION.
MOVWF BYTE2OF3 ;
MOVLW 0x40 ;LEVEL REDUCTION, 7F=100%.
MOVWF BYTE3OF3 ;
CALL MIDI3BYTE ;
;
CALL TUNE0CH2 ;
CALL ATAKZEROCH2 ;
CALL FOZEROCH2 ;
CALL CHORUS1CH2_OFF ;
;
RETURN ;
;................................................................................................................................................................................................................
RH1SOUND1: ;
MOVLW 0x30 ;EEPROM Fx ADDRESS.
MOVWF EEADR ;
BCF EECON1, CFGS ;
BCF EECON1, EEPGD ;SELECT DATA EEPROM MEMORY.
BSF EECON1, RD ;ENABLE EEPROM READ.
MOVF EEDATA, W ;VALUE IN W.
MOVWF BYTE3OF3 ;
MOVLW 0xB0 ;RH1 CHANNEL 1.
MOVWF BYTE1OF3 ;
MOVLW 0x5B ;REVERB SEND LEVEL=CONTROL 5B.
MOVWF BYTE2OF3 ;
CALL MIDI3BYTE ;
;
MOVLW 0x70 ;INDIVIDUAL LEVEL CORRECTION SENT WITH
MOVWF LEVEL_ADJ_CH1 ; SEND_EXPR.
MOVLW 0x70 ;INDIVIDUAL LEVEL CORRECTION SENT WITH
MOVWF LEVEL_ADJ_CH5 ; SEND_EXPR.
CALL SEND_EXPR ;SEND SOLO VALUE.
;
MOVLW 0xB0 ;CONTROL CH1.
MOVWF NORPNR1 ;RESONANCE MODIFY.
MOVLW 0x63 ;
MOVWF NORPNR2 ;
MOVLW 0x01 ;
MOVWF NORPNR3 ;
MOVLW 0x62 ;
MOVWF NORPNR4 ;
MOVLW 0x21 ;
MOVWF NORPNR5 ;
MOVLW 0x06 ;
MOVWF NORPNR6 ;
MOVLW 0x18 ;RESONANCE. 0x40=NO MODIFY.
MOVWF NORPNR7 ;
CALL NORPN7BYTE ;
;
MOVLW 0xB0 ;CONTROL CH1.
MOVWF NORPNR1 ;Fo MODIFY.
MOVLW 0x63 ;
MOVWF NORPNR2 ;
MOVLW 0x01 ;
MOVWF NORPNR3 ;
MOVLW 0x62 ;
MOVWF NORPNR4 ;
MOVLW 0x20 ;
MOVWF NORPNR5 ;
MOVLW 0x06 ;
MOVWF NORPNR6 ;
MOVLW 0x50 ;Fo. 0x40=NO MODIFY.
MOVWF NORPNR7 ;
CALL NORPN7BYTE ;
;
;
CALL TUNE0CH1 ;SETS COARSE TUNNING TO DEFAULT.
CALL ATAKZEROCH1 ;CH1 ATACK TO DEFAULT.
CALL DECAY0CH1 ;DECAY.
;CALL FO0CH1 ;FILTER FRQUENCY.
;CALL Q0CH1 ;CH1 Q.
CALL PORTAMENTO_OFF15 ;
;CALL ALLNOTESOFFCH7 ;
CALL CHORUS1CH1_OFF ;
CALL ATAK0CH5 ;
;
RETURN ;
;................................................................................................................................................................................................................
RH1SOUND2: ;
MOVLW 0x31 ;EEPROM Fx ADDRESS.
MOVWF EEADR ;
BCF EECON1, CFGS ;
BCF EECON1, EEPGD ;SELECT DATA EEPROM MEMORY.
BSF EECON1, RD ;ENABLE EEPROM READ.
MOVF EEDATA, W ;VALUE IN W.
MOVWF BYTE3OF3 ;
MOVLW 0xB0 ;RH1 CHANNEL 1.
MOVWF BYTE1OF3 ;
MOVLW 0x5B ;REVERB SEND LEVEL=CONTROL 5B.
MOVWF BYTE2OF3 ;
CALL MIDI3BYTE ;
MOVLW 0xB4 ;RH1 LAYER CHANNEL 5.
MOVWF BYTE1OF3 ;
CALL MIDI3BYTE ;
;
MOVLW 0x6F ;INDIVIDUAL LEVEL CORRECTION SENT WITH
MOVWF LEVEL_ADJ_CH1 ; SEND_EXPR.
MOVLW 0x6F ;INDIVIDUAL LEVEL CORRECTION SENT WITH
MOVWF LEVEL_ADJ_CH5 ; SEND_EXPR.
CALL SEND_EXPR ;SEND SOLO VALUE.
;
CALL TUNE0CH1 ;SETS COARSE TUNNING TO DEFAULT.
CALL ATAKZEROCH1 ;CH1 ATACK TO DEFAULT.
CALL DECAY0CH1 ;DECAY.
CALL FO0CH1 ;FILTER FRQUENCY.
CALL Q0CH1 ;CH1 Q.
CALL PORTAMENTO_OFF15 ;
;CALL ALLNOTESOFFCH7 ;
CALL CHORUS1CH1_OFF ;
;
RETURN ;
;........................................................................................................................................................................................
RH1SOUND2L2: ;
MOVLW D'48' ;STRINGS2 - 49.
MOVWF PROGCHHOLD2 ;
MOVLW 0xC4 ;Ch5.
MOVWF PROGCHHOLD1 ;
CALL PROGCHNGSEND ;EXTRA RH1. LAYER.
;
MOVLW 0xB4 ;CONTROL CH5.
MOVWF NORPNR1 ;ATTACK TIME MODIFY.
MOVLW 0x63 ;
MOVWF NORPNR2 ;
MOVLW 0x01 ;
MOVWF NORPNR3 ;
MOVLW 0x62 ;
MOVWF NORPNR4 ;
MOVLW 0x63 ;
MOVWF NORPNR5 ;
MOVLW 0x06 ;
MOVWF NORPNR6 ;
MOVLW 0x60 ;ATTACK TIME.0x40=NO MODIFY.
MOVWF NORPNR7 ;
CALL NORPN7BYTE ;
;
CALL FO0CH5 ;
CALL Q0CH5 ;
CALL TUNE0CH5 ;
CALL VIBRATE0CH5 ;
CALL VIBDEPTH0CH5 ;
CALL VIBDELAY0CH5 ;
;
RETURN ;
;................................................................................................................................................................................................................
RH1SOUND3: ;
MOVLW 0x32 ;EEPROM Fx ADDRESS.
MOVWF EEADR ;
BCF EECON1, CFGS ;
BCF EECON1, EEPGD ;SELECT DATA EEPROM MEMORY.
BSF EECON1, RD ;ENABLE EEPROM READ.
MOVF EEDATA, W ;VALUE IN W.
MOVWF BYTE3OF3 ;
MOVLW 0xB0 ;RH1 CHANNEL 1.
MOVWF BYTE1OF3 ;
MOVLW 0x5B ;REVERB SEND LEVEL=CONTROL 5B.
MOVWF BYTE2OF3 ;
CALL MIDI3BYTE ;
MOVLW 0xB4 ;RH1 LAYER CHANNEL 5.
MOVWF BYTE1OF3 ;
CALL MIDI3BYTE ;
;
CALL TUNE0CH1 ;SETS COARSE TUNNING TO DEFAULT.
CALL ATAKZEROCH1 ;CH1 ATACK TO DEFAULT.
CALL DECAY0CH1 ;DECAY.
CALL FO0CH1 ;FILTER FRQUENCY.
CALL Q0CH1 ;CH1 Q.
CALL PORTAMENTO_OFF15 ;
;CALL ALLNOTESOFFCH7 ;
;
MOVLW 0x68 ;INDIVIDUAL LEVEL CORRECTION SENT WITH
MOVWF LEVEL_ADJ_CH1 ; SEND_EXPR.
MOVLW 0x68 ;INDIVIDUAL LEVEL CORRECTION SENT WITH
MOVWF LEVEL_ADJ_CH5 ; SEND_EXPR.
CALL SEND_EXPR ;SEND SOLO VALUE.
;
RETURN ;
;........................................................................................................................................................................................
RH1SOUND3L2: ;
MOVLW D'2' ;3 - ELECTRIC GRAND PIANO.
MOVWF PROGCHHOLD2 ;
MOVLW 0xC4 ;Ch5.
MOVWF PROGCHHOLD1 ;
CALL PROGCHNGSEND ;EXTRA RH1. LAYER.
;
CALL FO0CH5 ;
CALL Q0CH5 ;
CALL ATAK0CH5 ;
CALL VIBRATE0CH5 ;
CALL VIBDEPTH0CH5 ;
CALL VIBDELAY0CH5 ;
;
MOVLW 0xB4 ;CONTROL CH5.
MOVWF NORPNR1 ;
MOVLW 0x65 ;
MOVWF NORPNR2 ;
MOVLW 0x00 ;
MOVWF NORPNR3 ;
MOVLW 0x64 ;
MOVWF NORPNR4 ;
MOVLW 0x01 ;
MOVWF NORPNR5 ;
MOVLW 0x06 ;
MOVWF NORPNR6 ;
MOVLW 0x3D ;FINE TUNING IN CENTS.0x40=CENTRE.
MOVWF NORPNR7 ;
CALL NORPN7BYTE ;
;
RETURN ;
;................................................................................................................................................................................................................
RH1SOUND4: ;
;
MOVLW 0x33 ;EEPROM Fx ADDRESS.
MOVWF EEADR ;
BCF EECON1, CFGS ;
BCF EECON1, EEPGD ;SELECT DATA EEPROM MEMORY.
BSF EECON1, RD ;ENABLE EEPROM READ.
MOVF EEDATA, W ;VALUE IN W.
MOVWF BYTE3OF3 ;
MOVLW 0xB0 ;RH1 CHANNEL 1.
MOVWF BYTE1OF3 ;
MOVLW 0x5B ;REVERB SEND LEVEL=CONTROL 5B.
MOVWF BYTE2OF3 ;
CALL MIDI3BYTE ;
MOVLW 0xB4 ;RH1 LAYER CHANNEL 5.
MOVWF BYTE1OF3 ;
CALL MIDI3BYTE ;
;
CALL TUNE0CH1 ;SETS COARSE TUNNING TO DEFAULT.
CALL ATAKZEROCH1 ;CH1 ATACK TO DEFAULT.
CALL DECAY0CH1 ;DECAY.
CALL FO0CH1 ;FILTER FRQUENCY.
CALL Q0CH1 ;CH1 Q.
;CALL ALLNOTESOFFCH7 ;
CALL CHORUS1CH1_OFF ;
;
RETURN ;
;........................................................................................................................................................................................
RH1SOUND4L2: ;
MOVLW d'26' ;Jazz Guitar 27.
MOVWF PROGCHHOLD2 ;
MOVLW 0xC4 ;Ch5.
MOVWF PROGCHHOLD1 ;
CALL PROGCHNGSEND ;EXTRA RH1. LAYER.
;
MOVLW 0xB4 ;CONTROL CH5.
MOVWF NORPNR1 ;ATTACK TIME MODIFY.
MOVLW 0x63 ;
MOVWF NORPNR2 ;
MOVLW 0x01 ;
MOVWF NORPNR3 ;
MOVLW 0x62 ;
MOVWF NORPNR4 ;
MOVLW 0x63 ;
MOVWF NORPNR5 ;
MOVLW 0x06 ;
MOVWF NORPNR6 ;
MOVLW 0x48 ;ATTACK TIME.0x40=NO MODIFY.
MOVWF NORPNR7 ;
CALL NORPN7BYTE ;
;
MOVLW 0xB4 ;CONTROL CH5.
MOVWF NORPNR1 ;
MOVLW 0x63 ;
MOVWF NORPNR2 ;
MOVLW 0x01 ;
MOVWF NORPNR3 ;
MOVLW 0x62 ;
MOVWF NORPNR4 ;
MOVLW 0x08 ;
MOVWF NORPNR5 ;
MOVLW 0x06 ;
MOVWF NORPNR6 ;
MOVLW 0x3B ;VIBRATO RATE.0x40=NO MOD.
MOVWF NORPNR7 ;
CALL NORPN7BYTE ;
;
MOVLW 0xB4 ;CONTROL CH5.
MOVWF NORPNR1 ;
MOVLW 0x63 ;
MOVWF NORPNR2 ;
MOVLW 0x01 ;
MOVWF NORPNR3 ;
MOVLW 0x62 ;
MOVWF NORPNR4 ;
MOVLW 0x09 ;
MOVWF NORPNR5 ;
MOVLW 0x06 ;
MOVWF NORPNR6 ;
MOVLW 0x50 ;VIBRATO DEPTH.0x40=NO MOD.
MOVWF NORPNR7 ;
CALL NORPN7BYTE ;
;
MOVLW 0xB4 ;CONTROL CH5.
MOVWF NORPNR1 ;
MOVLW 0x63 ;
MOVWF NORPNR2 ;
MOVLW 0x01 ;
MOVWF NORPNR3 ;
MOVLW 0x62 ;
MOVWF NORPNR4 ;
MOVLW 0x0A ;
MOVWF NORPNR5 ;
MOVLW 0x06 ;
MOVWF NORPNR6 ;
MOVLW 0x50 ;VIBRATO DELAY.0x40=NO MOD.
MOVWF NORPNR7 ;
CALL NORPN7BYTE ;
;
MOVLW 0x68 ;INDIVIDUAL LEVEL CORRECTION SENT WITH
MOVWF LEVEL_ADJ_CH1 ; SEND_EXPR CHANNEL 1.
MOVLW 0x68 ;INDIVIDUAL LEVEL CORRECTION SENT WITH
MOVWF LEVEL_ADJ_CH5 ; SEND_EXPR CHANNEL 5.
CALL SEND_EXPR ;SEND SOLO VALUE.
;
CALL TUNE0CH5 ;Fine tunning to zero.
CALL FO0CH5 ;
CALL Q0CH5 ;
;
RETURN ;
;................................................................................................................................................................................................................
RH1SOUND5: ;
;
MOVLW 0x34 ;EEPROM Fx ADDRESS.
MOVWF EEADR ;
BCF EECON1, CFGS ;
BCF EECON1, EEPGD ;SELECT DATA EEPROM MEMORY.
BSF EECON1, RD ;ENABLE EEPROM READ.
MOVF EEDATA, W ;VALUE IN W.
MOVWF BYTE3OF3 ;
MOVLW 0xB0 ;RH1 CHANNEL 1.
MOVWF BYTE1OF3 ;
MOVLW 0x5B ;REVERB SEND LEVEL=CONTROL 5B.
MOVWF BYTE2OF3 ;
CALL MIDI3BYTE ;
MOVLW 0xB4 ;RH1 LAYER CHANNEL 5.
MOVWF BYTE1OF3 ;
CALL MIDI3BYTE ;
;
CALL TUNE0CH1 ;SETS COARSE TUNNING TO DEFAULT.
CALL ATAKZEROCH1 ;CH1 ATACK TO DEFAULT.
CALL DECAY0CH1 ;DECAY.
CALL FO0CH1 ;FILTER FRQUENCY.
CALL Q0CH1 ;CH1 Q.
CALL PORTAMENTO_OFF15 ;
;CALL ALLNOTESOFFCH7 ;
CALL CHORUS1CH1_OFF ;
;
RETURN ;
;........................................................................................................................................................................................
RH1SOUND5L2: ;
MOVLW d'25' ;Acoustic Guitar steel 26.
MOVWF PROGCHHOLD2 ;
MOVLW 0xC4 ;Ch5.
MOVWF PROGCHHOLD1 ;
CALL PROGCHNGSEND ;EXTRA RH1. LAYER.
;
MOVLW 0x60 ;INDIVIDUAL LEVEL CORRECTION SENT WITH
MOVWF LEVEL_ADJ_CH1 ; SEND_EXPR CHANNEL 1.
MOVLW 0x60 ;INDIVIDUAL LEVEL CORRECTION SENT WITH
MOVWF LEVEL_ADJ_CH5 ; SEND_EXPR CHANNEL 5.
CALL SEND_EXPR ;SEND SOLO VALU
;
MOVLW 0xB4 ;CONTROL CH5.
MOVWF NORPNR1 ;
MOVLW 0x65 ;
MOVWF NORPNR2 ;
MOVLW 0x00 ;
MOVWF NORPNR3 ;
MOVLW 0x64 ;
MOVWF NORPNR4 ;
MOVLW 0x01 ;
MOVWF NORPNR5 ;
MOVLW 0x06 ;
MOVWF NORPNR6 ;
MOVLW 0x3E ;FINE TUNING IN CENTS.0x40=CENTRE.
MOVWF NORPNR7 ;
CALL NORPN7BYTE ;
;
CALL ATAK0CH5 ;
CALL FO0CH5 ;
CALL Q0CH5 ;
CALL VIBRATE0CH5 ;
CALL VIBDEPTH0CH5 ;
CALL VIBDELAY0CH5 ;
;
RETURN ;
;................................................................................................................................................................................................................
RH1SOUND6: ;MUSETTE ACCORDION, 3 LAYERS. LAYER 1 IS TANGO ACCORDION.
MOVLW 0x35 ;EEPROM Fx ADDRESS.
MOVWF EEADR ;
BCF EECON1, CFGS ;
BCF EECON1, EEPGD ;SELECT DATA EEPROM MEMORY.
BSF EECON1, RD ;ENABLE EEPROM READ.
MOVF EEDATA, W ;VALUE IN W.
MOVWF BYTE3OF3 ;
MOVLW 0xB0 ;RH1 CHANNEL 1.
MOVWF BYTE1OF3 ;
MOVLW 0x5B ;REVERB SEND LEVEL=CONTROL 5B.
MOVWF BYTE2OF3 ;
CALL MIDI3BYTE ;
MOVLW 0xB4 ;RH1 LAYER CHANNEL 5.
MOVWF BYTE1OF3 ;
CALL MIDI3BYTE ;
MOVLW 0xB6 ;RH1 LAYER CHANNEL 7.
MOVWF BYTE1OF3 ;
CALL MIDI3BYTE ;
;
MOVLW 0xB0 ;CONTROL CH1.
MOVWF NORPNR1 ;RESONANCE MODIFY.
MOVLW 0x63 ;
MOVWF NORPNR2 ;
MOVLW 0x01 ;
MOVWF NORPNR3 ;
MOVLW 0x62 ;
MOVWF NORPNR4 ;
MOVLW 0x21 ;
MOVWF NORPNR5 ;
MOVLW 0x06 ;
MOVWF NORPNR6 ;
MOVLW 0x20 ;RESONANCE. 0x40=NO MODIFY.
MOVWF NORPNR7 ;
CALL NORPN7BYTE ;
;
MOVLW 0xB0 ;CONTROL CH1.
MOVWF NORPNR1 ;Fo MODIFY.
MOVLW 0x63 ;
MOVWF NORPNR2 ;
MOVLW 0x01 ;
MOVWF NORPNR3 ;
MOVLW 0x62 ;
MOVWF NORPNR4 ;
MOVLW 0x20 ;
MOVWF NORPNR5 ;
MOVLW 0x06 ;
MOVWF NORPNR6 ;
MOVLW 0x19 ;Fo. 0x40=NO MODIFY.
MOVWF NORPNR7 ;
CALL NORPN7BYTE ;
;
MOVLW 0xB0 ;CONTROL CH1.
MOVWF NORPNR1 ;
MOVLW 0x65 ;
MOVWF NORPNR2 ;
MOVLW 0x00 ;
MOVWF NORPNR3 ;
MOVLW 0x64 ;
MOVWF NORPNR4 ;
MOVLW 0x01 ;
MOVWF NORPNR5 ;
MOVLW 0x06 ;
MOVWF NORPNR6 ;
MOVLW 0x40 ;FINE TUNING IN CENTS. 0x40=CENTRE.
MOVWF NORPNR7 ;0x7F=+100 & 0x00=-100. SO EACH UNIT = 1.5625 CENTS.
CALL NORPN7BYTE ;
;
;
CALL TUNE0CH1 ;SETS COARSE TUNNING TO DEFAULT.
CALL ATAKZEROCH1 ;CH1 ATACK TO DEFAULT.
CALL DECAY0CH1 ;DECAY.
;CALL FO0CH1 ;FILTER FRQUENCY.
;CALL Q0CH1 ;CH1 Q.
CALL PORTAMENTO_OFF15 ;
;CALL CHORUS1CH1_ON ;
CALL CHORUS1CH1_OFF ;
;
RETURN ;
;........................................................................................................................................................................................
RH1SOUND6L2: ;
MOVLW d'22' ;HARMONICA 23.( FRENCH ACCORDION 22, TANGO ACCORDION 24).
MOVWF PROGCHHOLD2 ; (ACTUAL VALUE IS ONE LESS).
MOVLW 0xC4 ;Ch5.
MOVWF PROGCHHOLD1 ;
CALL PROGCHNGSEND ;EXTRA RH1. LAYER.
;
MOVLW 0xB4 ;CONTROL CH5.
MOVWF NORPNR1 ;ATTACK TIME MODIFY.
MOVLW 0x63 ;
MOVWF NORPNR2 ;
MOVLW 0x01 ;
MOVWF NORPNR3 ;
MOVLW 0x62 ;
MOVWF NORPNR4 ;
MOVLW 0x63 ;
MOVWF NORPNR5 ;
MOVLW 0x06 ;
MOVWF NORPNR6 ;
MOVLW 0x40 ;ATTACK TIME.0x40=NO MODIFY.
MOVWF NORPNR7 ;
CALL NORPN7BYTE ;
;
MOVLW 0xB4 ;CONTROL CH5.
MOVWF NORPNR1 ;
MOVLW 0x65 ;
MOVWF NORPNR2 ;
MOVLW 0x00 ;
MOVWF NORPNR3 ;
MOVLW 0x64 ;
MOVWF NORPNR4 ;
MOVLW 0x01 ;
MOVWF NORPNR5 ;
MOVLW 0x06 ;
MOVWF NORPNR6 ;
MOVLW 0x38 ;FINE TUNING IN CENTS. 0x40=CENTRE. (-13 CENTS).
MOVWF NORPNR7 ;0x7F=+100 & 0x00=-100. SO EACH UNIT = 1.5625 CENTS.
CALL NORPN7BYTE ;
;
CALL FO0CH5 ;
CALL Q0CH5 ;
CALL VIBRATE0CH5 ;
CALL VIBDEPTH0CH5 ;
CALL VIBDELAY0CH5 ;
;
MOVLW 0x68 ;INDIVIDUAL LEVEL CORRECTION SENT WITH
MOVWF LEVEL_ADJ_CH1 ; SEND_EXPR CHANNEL 1.
MOVLW 0x58 ;INDIVIDUAL LEVEL CORRECTION SENT WITH
MOVWF LEVEL_ADJ_CH5 ; SEND_EXPR CHANNEL 5.
MOVLW 0x58 ;INDIVIDUAL LEVEL CORRECTION SENT WITH
MOVWF LEVEL_ADJ_CH7 ; SEND_EXPR CHANNEL 7.
CALL SEND_EXPR ;SEND SOLO VALUE
;0x50 = 0.625 : 0x40= 0.5 : 0x30 = 0.375 : 0x20 = 0.25 : 0x10 = 0.125 :
;.......................................................................................................................................................................................
RH1SOUND6L3: ;
MOVLW d'22' ;HARMONICA 23. (FRENCH ACCORDION 22, TANGO ACCORDION 24).
MOVWF PROGCHHOLD2 ; (ACTUAL VALUE IS ONE LESS).
MOVLW 0xC6 ;Ch7.
MOVWF PROGCHHOLD1 ;
CALL PROGCHNGSEND ;EXTRA RH1. LAYER.
;
MOVLW 0xB6 ;CONTROL CH5.
MOVWF NORPNR1 ;ATTACK TIME MODIFY.
MOVLW 0x63 ;
MOVWF NORPNR2 ;
MOVLW 0x01 ;
MOVWF NORPNR3 ;
MOVLW 0x62 ;
MOVWF NORPNR4 ;
MOVLW 0x63 ;
MOVWF NORPNR5 ;
MOVLW 0x06 ;
MOVWF NORPNR6 ;
MOVLW 0x40 ;ATTACK TIME.0x40=NO MODIFY.
MOVWF NORPNR7 ;
CALL NORPN7BYTE ;
;
MOVLW 0xB6 ;CONTROL CH7.
MOVWF NORPNR1 ;
MOVLW 0x65 ;
MOVWF NORPNR2 ;
MOVLW 0x00 ;
MOVWF NORPNR3 ;
MOVLW 0x64 ;
MOVWF NORPNR4 ;
MOVLW 0x01 ;
MOVWF NORPNR5 ;
MOVLW 0x06 ;
MOVWF NORPNR6 ;
MOVLW 0x4A ;FINE TUNING IN CENTS. 0x40=CENTRE. +15 CENTS.
MOVWF NORPNR7 ;0x7F=+100 & 0x00=-100. SO EACH UNIT = 1.5625 CENTS.
CALL NORPN7BYTE ;
;
RETURN ;
;................................................................................................................................................................................................................
RH1SOUND7: ;
MOVLW 0x36 ;EEPROM Fx ADDRESS.
MOVWF EEADR ;
BCF EECON1, CFGS ;
BCF EECON1, EEPGD ;SELECT DATA EEPROM MEMORY.
BSF EECON1, RD ;ENABLE EEPROM READ.
MOVF EEDATA, W ;VALUE IN W.
MOVWF BYTE3OF3 ;
MOVLW 0xB0 ;RH1 CHANNEL 1.
MOVWF BYTE1OF3 ;
MOVLW 0x5B ;REVERB SEND LEVEL=CONTROL 5B.
MOVWF BYTE2OF3 ;
CALL MIDI3BYTE ;
MOVLW 0xB4 ;RH1 LAYER CHANNEL 5.
MOVWF BYTE1OF3 ;
CALL MIDI3BYTE ;
;
MOVLW 0xB0 ;CONTROL CH1.
MOVWF NORPNR1 ;RESONANCE MODIFY.
MOVLW 0x63 ;
MOVWF NORPNR2 ;
MOVLW 0x01 ;
MOVWF NORPNR3 ;
MOVLW 0x62 ;
MOVWF NORPNR4 ;
MOVLW 0x21 ;
MOVWF NORPNR5 ;
MOVLW 0x06 ;
MOVWF NORPNR6 ;
MOVLW 0x10 ;RESONANCE. 0x40=NO MODIFY.
MOVWF NORPNR7 ;
CALL NORPN7BYTE ;
;
MOVLW 0xB0 ;CONTROL CH1.
MOVWF NORPNR1 ;Fo MODIFY.
MOVLW 0x63 ;
MOVWF NORPNR2 ;
MOVLW 0x01 ;
MOVWF NORPNR3 ;
MOVLW 0x62 ;
MOVWF NORPNR4 ;
MOVLW 0x20 ;
MOVWF NORPNR5 ;
MOVLW 0x06 ;
MOVWF NORPNR6 ;
MOVLW 0x30 ;Fo. 0x40=NO MODIFY.
MOVWF NORPNR7 ;
CALL NORPN7BYTE ;
;
;
CALL TUNE0CH1,FAST ;SETS COARSE TUNNING TO DEFAULT.
CALL ATAKZEROCH1 ;CH1 ATACK TO DEFAULT.
CALL DECAY0CH1 ;DECAY.
;CALL FO0CH1 ;FILTER FRQUENCY.
;CALL Q0CH1 ;CH1 Q.
CALL PORTAMENTO_OFF15 ;
;CALL ALLNOTESOFFCH7 ;
CALL CHORUS1CH1_OFF ;
;
MOVLW 0xB0 ;CONTROL CH1.
MOVWF NORPNR1 ;
MOVLW 0x65 ;COARSE TUNNING IN SEMITONES.
MOVWF NORPNR2 ;
MOVLW 0x00 ;
MOVWF NORPNR3 ;
MOVLW 0x64 ;
MOVWF NORPNR4 ;
MOVLW 0x02 ;
MOVWF NORPNR5 ;
MOVLW 0x06 ;
MOVWF NORPNR6 ;
MOVLW 0x34 ;Fo. 0x40=NO MODIFY.
MOVWF NORPNR7 ;
CALL NORPN7BYTE ;
;
RETURN ;
;........................................................................................................................................................................................
RH1SOUND7L2: ;
MOVLW 0xC4 ;Ch5.
MOVWF PROGCHHOLD1 ;
MOVLW D'48' ;49 - STRING ENSEMBLE1.
MOVWF PROGCHHOLD2 ;
CALL PROGCHNGSEND ;EXTRA RH1. LAYER.
;
MOVLW 0xB4 ;CONTROL CH5.
MOVWF NORPNR1 ;
MOVLW 0x65 ;
MOVWF NORPNR2 ;
MOVLW 0x00 ;
MOVWF NORPNR3 ;
MOVLW 0x64 ;
MOVWF NORPNR4 ;
MOVLW 0x01 ;
MOVWF NORPNR5 ;
MOVLW 0x06 ;
MOVWF NORPNR6 ;
MOVLW 0x3F ;FINE TUNING IN CENTS.0x40=CENTRE.
MOVWF NORPNR7 ;
CALL NORPN7BYTE ;
;
MOVLW 0xB4 ;SENDS NRPN 0120=vvh
MOVWF NORPNR1 ; (VALUE1)(VALUE2)=(VALUE).
MOVLW 0x63 ;CONTROL #99.
MOVWF NORPNR2 ;
MOVLW 0x01 ;VALUE1.
MOVWF NORPNR3 ;
MOVLW 0x62 ;CONTROL #98.
MOVWF NORPNR4 ;
MOVLW 0x20 ;VALUE2
MOVWF NORPNR5 ;
MOVLW 0x06 ;CONTROL #6.
MOVWF NORPNR6 ;
MOVLW 0x3C ;Fo DEFAULT.
MOVWF NORPNR7 ;
CALL NORPN7BYTE ;
;FILTER RESONANCE TO DEFAULT VALUE.
MOVLW 0xB4 ;CONTROL CH5.
MOVWF NORPNR1 ;FILTER RESONANCE MODIFY.
MOVLW 0x63 ;
MOVWF NORPNR2 ;
MOVLW 0x01 ;
MOVWF NORPNR3 ;
MOVLW 0x62 ;
MOVWF NORPNR4 ;
MOVLW 0x21 ;
MOVWF NORPNR5 ;
MOVLW 0x06 ;
MOVWF NORPNR6 ;
MOVLW 0x10 ;RESONANCE. 0x40=NO MODIFY.
MOVWF NORPNR7 ;
CALL NORPN7BYTE ;
;
MOVLW 0x40 ;INDIVIDUAL LEVEL CORRECTION SENT WITH
MOVWF LEVEL_ADJ_CH1 ; SEND_EXPR CHANNEL 1.
MOVLW 0x74 ;INDIVIDUAL LEVEL CORRECTION SENT WITH
MOVWF LEVEL_ADJ_CH5 ; SEND_EXPR CHANNEL 5.
CALL SEND_EXPR ;SEND SOLO VALUE.
;
CALL ATAK0CH5 ;
CALL VIBRATE0CH5 ;
CALL VIBDEPTH0CH5 ;
CALL VIBDELAY0CH5 ;
;
RETURN ;
;................................................................................................................................................................................................................
RH1SOUND8: ;
MOVLW 0x6F ;INDIVIDUAL LEVEL CORRECTION SENT WITH
MOVWF LEVEL_ADJ_CH1 ; SEND_EXPR CHANNEL 1.
MOVLW 0x40 ;INDIVIDUAL LEVEL CORRECTION SENT WITH
MOVWF LEVEL_ADJ_CH5 ; SEND_EXPR CHANNEL 5.
CALL SEND_EXPR ;SEND SOLO & EXPRESSION VALUE.
;
MOVLW 0x37 ;EEPROM Fx ADDRESS.
MOVWF EEADR ;
BCF EECON1, CFGS ;
BCF EECON1, EEPGD ;SELECT DATA EEPROM MEMORY.
BSF EECON1, RD ;ENABLE EEPROM READ.
MOVF EEDATA, W ;VALUE IN W.
MOVWF BYTE3OF3 ;
MOVLW 0xB0 ;RH1 CHANNEL 1.
MOVWF BYTE1OF3 ;
MOVLW 0x5B ;REVERB SEND LEVEL=CONTROL 5B.
MOVWF BYTE2OF3 ;
CALL MIDI3BYTE ;
;MOVLW 0xB4 ;RH1 LAYER CHANNEL 5.
;MOVWF BYTE1OF3 ;
;CALL MIDI3BYTE ;
;
CALL TUNE0CH1,FAST ;SETS COARSE TUNNING TO DEFAULT.
CALL ATAKZEROCH1 ;CH1 ATACK TO DEFAULT.
CALL DECAY0CH1 ;DECAY.
CALL FO0CH1 ;FILTER FRQUENCY.
CALL Q0CH1 ;CH1 Q.
CALL PORTAMENTO_OFF15 ;
;CALL ALLNOTESOFFCH7 ;
CALL CHORUS1CH1_OFF ;
;
RETURN ;
;................................................................................................................................................................................................................
RH1SOUND9: ;
MOVLW 0x38 ;EEPROM Fx ADDRESS.
MOVWF EEADR ;
BCF EECON1, CFGS ;
BCF EECON1, EEPGD ;SELECT DATA EEPROM MEMORY.
BSF EECON1, RD ;ENABLE EEPROM READ.
MOVF EEDATA, W ;VALUE IN W.
MOVWF BYTE3OF3 ;
MOVLW 0xB0 ;RH1 CHANNEL 1.
MOVWF BYTE1OF3 ;
MOVLW 0x5B ;REVERB SEND LEVEL=CONTROL 5B.
MOVWF BYTE2OF3 ;
CALL MIDI3BYTE ;
MOVLW 0xB4 ;RH1 LAYER CHANNEL 5.
MOVWF BYTE1OF3 ;
CALL MIDI3BYTE ;
;
MOVLW 0xB0 ;CONTROL CH1.
MOVWF NORPNR1 ;ATTACK TIME MODIFY.
MOVLW 0x63 ;
MOVWF NORPNR2 ;
MOVLW 0x01 ;
MOVWF NORPNR3 ;
MOVLW 0x62 ;
MOVWF NORPNR4 ;
MOVLW 0x63 ;
MOVWF NORPNR5 ;
MOVLW 0x06 ;
MOVWF NORPNR6 ;
MOVLW 0x44 ;ATTACK TIME.0x40=NO MODIFY.
MOVWF NORPNR7 ;
CALL NORPN7BYTE ;
;
MOVLW 0x6F ;INDIVIDUAL LEVEL CORRECTION SENT WITH
MOVWF LEVEL_ADJ_CH1 ; SEND_EXPR CHANNEL 1.
MOVLW 0x6F ;INDIVIDUAL LEVEL CORRECTION SENT WITH
MOVWF LEVEL_ADJ_CH5 ; SEND_EXPR CHANNEL 5.
CALL SEND_EXPR ;SEND SOLO & EXPRESSION VALUE.
;
CALL TUNE0CH1 ;SETS COARSE TUNNING TO DEFAULT.
;CALL ATAKZEROCH1 ;CH1 ATACK TO DEFAULT.
CALL DECAY0CH1 ;DECAY.
CALL FO0CH1 ;FILTER FRQUENCY.
CALL Q0CH1 ;CH1 Q.
;CALL ALLNOTESOFFCH7 ;
CALL CHORUS1CH1_ON ;
;
RETURN ;
;.....................................................................................................................................................................................
RH1SOUND9L2: ;
MOVLW d'109' ;BAGPIPES (110).
MOVWF PROGCHHOLD2 ; (ACTUAL VALUE IS ONE LESS).
MOVLW 0xC4 ;Ch5.
MOVWF PROGCHHOLD1 ;
CALL PROGCHNGSEND ;EXTRA RH1. LAYER.
;
MOVLW 0xB4 ;CONTROL CH5.
MOVWF NORPNR1 ;
MOVLW 0x65 ;
MOVWF NORPNR2 ;
MOVLW 0x00 ;
MOVWF NORPNR3 ;
MOVLW 0x64 ;
MOVWF NORPNR4 ;
MOVLW 0x01 ;
MOVWF NORPNR5 ;
MOVLW 0x06 ;
MOVWF NORPNR6 ;
MOVLW 0x3E ;FINE TUNING IN CENTS.0x40=CENTRE.
MOVWF NORPNR7 ;
CALL NORPN7BYTE ;
;
MOVLW 0xB6 ;CONTROL CH5.
MOVWF NORPNR1 ;ATTACK TIME MODIFY.
MOVLW 0x63 ;
MOVWF NORPNR2 ;
MOVLW 0x01 ;
MOVWF NORPNR3 ;
MOVLW 0x62 ;
MOVWF NORPNR4 ;
MOVLW 0x63 ;
MOVWF NORPNR5 ;
MOVLW 0x06 ;
MOVWF NORPNR6 ;
MOVLW 0x44 ;ATTACK TIME.0x40=NO MODIFY.
MOVWF NORPNR7 ;
CALL NORPN7BYTE ;
;
CALL FO0CH5 ;
CALL Q0CH5 ;
CALL VIBRATE0CH5 ;
CALL VIBDEPTH0CH5 ;
CALL VIBDELAY0CH5 ;
;
RETURN ;
;................................................................................................................................................................................................................
RH1SOUND10: ;
MOVLW 0x39 ;EEPROM Fx ADDRESS.
MOVWF EEADR ;
BCF EECON1, CFGS ;
BCF EECON1, EEPGD ;SELECT DATA EEPROM MEMORY.
BSF EECON1, RD ;ENABLE EEPROM READ.
MOVF EEDATA, W ;VALUE IN W.
MOVWF BYTE3OF3 ;
MOVLW 0xB0 ;RH1 CHANNEL 1.
MOVWF BYTE1OF3 ;
MOVLW 0x5B ;REVERB SEND LEVEL=CONTROL 5B.
MOVWF BYTE2OF3 ;
CALL MIDI3BYTE ;
MOVLW 0xB4 ;RH1 LAYER CHANNEL 5.
MOVWF BYTE1OF3 ;
CALL MIDI3BYTE ;
;
MOVLW 0xB0 ;SENDS NRPN 010A=vvh
MOVWF NORPNR1 ; (VALUE1)(VALUE2)=(VALUE).
MOVLW 0x63 ;CONTROL #99.
MOVWF NORPNR2 ;
MOVLW 0x01 ;VALUE1.
MOVWF NORPNR3 ;
MOVLW 0x62 ;CONTROL #98.
MOVWF NORPNR4 ;
MOVLW 0x0A ;VALUE2
MOVWF NORPNR5 ;
MOVLW 0x06 ;CONTROL #6.
MOVWF NORPNR6 ;
MOVLW 0x50 ;VIBRATO DELAY MODIFY.
MOVWF NORPNR7 ;
CALL NORPN7BYTE ;
;
MOVLW 0xB0 ;CONTROL CH1.
MOVWF NORPNR1 ;
MOVLW 0x63 ;
MOVWF NORPNR2 ;
MOVLW 0x01 ;
MOVWF NORPNR3 ;
MOVLW 0x62 ;
MOVWF NORPNR4 ;
MOVLW 0x09 ;
MOVWF NORPNR5 ;
MOVLW 0x06 ;
MOVWF NORPNR6 ;
MOVLW 0x41 ;VIBRATO DEPTH.0x40=NO MOD.
MOVWF NORPNR7 ;
CALL NORPN7BYTE ;
;
MOVLW 0xB0 ;CONTROL CH1.
MOVWF NORPNR1 ;ATTACK TIME MODIFY.
MOVLW 0x63 ;
MOVWF NORPNR2 ;
MOVLW 0x01 ;
MOVWF NORPNR3 ;
MOVLW 0x62 ;
MOVWF NORPNR4 ;
MOVLW 0x63 ;
MOVWF NORPNR5 ;
MOVLW 0x06 ;
MOVWF NORPNR6 ;
MOVLW 0x46 ;ATTACK TIME.0x40=NO MODIFY.
MOVWF NORPNR7 ;
CALL NORPN7BYTE ;
;
CALL TUNE0CH1 ;SETS COARSE TUNNING TO DEFAULT.
; CALL ATAKZEROCH1 ;CH1 ATACK TO DEFAULT.
CALL DECAY0CH1 ;DECAY.
CALL FO0CH1 ;FILTER FRQUENCY.
CALL Q0CH1 ;CH1 Q.
;CALL ALLNOTESOFFCH7 ;
CALL CHORUS1CH1_OFF ;
;
RETURN ;
;........................................................................................................................................................................................
RH1SOUND10L2: ;
MOVLW d'73' ;Flute 74.
MOVWF PROGCHHOLD2 ;
MOVLW 0xC4 ;Ch5.
MOVWF PROGCHHOLD1 ;
CALL PROGCHNGSEND ;EXTRA RH1. LAYER.
;
MOVLW 0x6F ;INDIVIDUAL LEVEL CORRECTION SENT WITH
MOVWF LEVEL_ADJ_CH1 ; SEND_EXPR CHANNEL 1.
MOVLW 0x68 ;INDIVIDUAL LEVEL CORRECTION SENT WITH
MOVWF LEVEL_ADJ_CH5 ; SEND_EXPR CHANNEL 5.
CALL SEND_EXPR ;SEND SOLO & EXPRESSION VALUE.
;
;
MOVLW 0xB4 ;CONTROL CH5.
MOVWF NORPNR1 ;ATTACK TIME MODIFY.
MOVLW 0x63 ;
MOVWF NORPNR2 ;
MOVLW 0x01 ;
MOVWF NORPNR3 ;
MOVLW 0x62 ;
MOVWF NORPNR4 ;
MOVLW 0x63 ;
MOVWF NORPNR5 ;
MOVLW 0x06 ;
MOVWF NORPNR6 ;
MOVLW 0x47 ;ATTACK TIME.0x40=NO MODIFY.
MOVWF NORPNR7 ;
CALL NORPN7BYTE ;
;
MOVLW 0xB4 ;CONTROL CH5.
MOVWF NORPNR1 ;
MOVLW 0x65 ;
MOVWF NORPNR2 ;
MOVLW 0x00 ;
MOVWF NORPNR3 ;
MOVLW 0x64 ;
MOVWF NORPNR4 ;
MOVLW 0x01 ;
MOVWF NORPNR5 ;
MOVLW 0x06 ;
MOVWF NORPNR6 ;
MOVLW 0x41 ;FINE TUNING IN CENTS.0x40=CENTRE.
MOVWF NORPNR7 ;
CALL NORPN7BYTE ;
;
MOVLW 0xB4 ;SENDS NRPN 010A=vvh
MOVWF NORPNR1 ; (VALUE1)(VALUE2)=(VALUE).
MOVLW 0x63 ;CONTROL #99.
MOVWF NORPNR2 ;
MOVLW 0x01 ;VALUE1.
MOVWF NORPNR3 ;
MOVLW 0x62 ;CONTROL #98.
MOVWF NORPNR4 ;
MOVLW 0x0A ;VALUE2
MOVWF NORPNR5 ;
MOVLW 0x06 ;CONTROL #6.
MOVWF NORPNR6 ;
MOVLW 0x58 ;VIBRATO DELAY MODIFY.
MOVWF NORPNR7 ;
CALL NORPN7BYTE ;
;
MOVLW 0xB4 ;CONTROL CH5.
MOVWF NORPNR1 ;
MOVLW 0x63 ;
MOVWF NORPNR2 ;
MOVLW 0x01 ;
MOVWF NORPNR3 ;
MOVLW 0x62 ;
MOVWF NORPNR4 ;
MOVLW 0x09 ;
MOVWF NORPNR5 ;
MOVLW 0x06 ;
MOVWF NORPNR6 ;
MOVLW 0x40 ;VIBRATO DEPTH.0x40=NO MOD.
MOVWF NORPNR7 ;
CALL NORPN7BYTE ;
;
CALL VIBRATE0CH5 ;
CALL TUNE0CH5 ;SETS COARSE TUNNING TO DEFAULT.
CALL FO0CH5 ;FILTER FRQUENCY.
CALL Q0CH5 ;CH5 Q.
;
RETURN ;
;................................................................................................................................................................................................................
RH1SOUND11: ;
MOVLW 0x3A ;EEPROM Fx ADDRESS.
MOVWF EEADR ;
BCF EECON1, CFGS ;
BCF EECON1, EEPGD ;SELECT DATA EEPROM MEMORY.
BSF EECON1, RD ;ENABLE EEPROM READ.
MOVF EEDATA, W ;VALUE IN W.
MOVWF BYTE3OF3 ;
MOVLW 0xB0 ;RH1 CHANNEL 1.
MOVWF BYTE1OF3 ;
MOVLW 0x5B ;REVERB SEND LEVEL=CONTROL 5B.
MOVWF BYTE2OF3 ;
CALL MIDI3BYTE ;
;MOVLW 0xB4 ;RH1 LAYER CHANNEL 5.
;MOVWF BYTE1OF3 ;
;CALL MIDI3BYTE ;
;
MOVLW 0x6F ;INDIVIDUAL LEVEL CORRECTION SENT WITH
MOVWF LEVEL_ADJ_CH1 ; SEND_EXPR CHANNEL 1.
MOVLW 0x40 ;INDIVIDUAL LEVEL CORRECTION SENT WITH
MOVWF LEVEL_ADJ_CH5 ; SEND_EXPR CHANNEL 5.
CALL SEND_EXPR ;SEND SOLO & EXPRESSION VALUE.
;
CALL TUNE0CH1 ;SETS COARSE TUNNING TO DEFAULT.
CALL ATAKZEROCH1 ;CH1 ATACK TO DEFAULT.
CALL DECAY0CH1 ;DECAY.
CALL FO0CH1 ;FILTER FRQUENCY.
CALL Q0CH1 ;CH1 Q.
;CALL ALLNOTESOFFCH7 ;
CALL CHORUS1CH1_OFF ;
;
RETURN ;
;................................................................................................................................................................................................................
RH1SOUND12: ;
MOVLW 0x3B ;EEPROM Fx ADDRESS.
MOVWF EEADR ;
BCF EECON1, CFGS ;
BCF EECON1, EEPGD ;SELECT DATA EEPROM MEMORY.
BSF EECON1, RD ;ENABLE EEPROM READ.
MOVF EEDATA, W ;VALUE IN W.
MOVWF BYTE3OF3 ;
MOVLW 0xB0 ;RH1 CHANNEL 1.
MOVWF BYTE1OF3 ;
MOVLW 0x5B ;REVERB SEND LEVEL=CONTROL 5B.
MOVWF BYTE2OF3 ;
CALL MIDI3BYTE ;
MOVLW 0xB4 ;RH1 LAYER CHANNEL 5.
MOVWF BYTE1OF3 ;
CALL MIDI3BYTE ;
;
MOVLW 0xB0 ;CONTROL CH1.
MOVWF NORPNR1 ; (VALUE1)(VALUE2)=(VALUE).
MOVLW 0x63 ;CONTROL #99.
MOVWF NORPNR2 ;
MOVLW 0x01 ;VALUE1.
MOVWF NORPNR3 ;
MOVLW 0x62 ;CONTROL #98.
MOVWF NORPNR4 ;
MOVLW 0x20 ;VALUE2
MOVWF NORPNR5 ;
MOVLW 0x06 ;CONTROL #6.
MOVWF NORPNR6 ;
MOVLW 0x28 ;Fo.
MOVWF NORPNR7 ;
CALL NORPN7BYTE ;
;FILTER RESONANCE.
MOVLW 0xB0 ;CONTROL CH1.
MOVWF NORPNR1 ;FILTER RESONANCE MODIFY.
MOVLW 0x63 ;
MOVWF NORPNR2 ;
MOVLW 0x01 ;
MOVWF NORPNR3 ;
MOVLW 0x62 ;
MOVWF NORPNR4 ;
MOVLW 0x21 ;
MOVWF NORPNR5 ;
MOVLW 0x06 ;
MOVWF NORPNR6 ;
MOVLW 0x01 ;RESONANCE. 0x40=NO MODIFY.
MOVWF NORPNR7 ;
CALL NORPN7BYTE ;
;
MOVLW 0xB0 ;CONTROL CH1.
MOVWF NORPNR1 ;ATTACK TIME MODIFY.
MOVLW 0x63 ;
MOVWF NORPNR2 ;
MOVLW 0x01 ;
MOVWF NORPNR3 ;
MOVLW 0x62 ;
MOVWF NORPNR4 ;
MOVLW 0x63 ;
MOVWF NORPNR5 ;
MOVLW 0x06 ;
MOVWF NORPNR6 ;
MOVLW 0x48 ;ATTACK TIME.0x40=NO MODIFY.
MOVWF NORPNR7 ;
CALL NORPN7BYTE ;
;
CALL TUNE0CH1 ;SETS COARSE TUNNING TO DEFAULT.
;CALL ATAKZEROCH1 ;CH1 ATACK TO DEFAULT.
CALL DECAY0CH1 ;DECAY.
;CALL FO0CH1 ;FILTER FRQUENCY.
;CALL Q0CH1 ;CH1 Q.
;CALL ALLNOTESOFFCH7 ;
CALL CHORUS1CH1_OFF ;
;
RETURN ;
;........................................................................................................................................................................................
RH1SOUND12L2: ;
MOVLW 0xC4 ;Ch5.
MOVWF PROGCHHOLD1 ;
MOVLW D'57' ;58 - TROMBONE.
MOVWF PROGCHHOLD2 ;
CALL PROGCHNGSEND ;EXTRA RH1. LAYER.
;
MOVLW 0xB4 ;CONTROL CH5.
MOVWF NORPNR1 ;
MOVLW 0x65 ;
MOVWF NORPNR2 ;
MOVLW 0x00 ;
MOVWF NORPNR3 ;
MOVLW 0x64 ;
MOVWF NORPNR4 ;
MOVLW 0x01 ;
MOVWF NORPNR5 ;
MOVLW 0x06 ;
MOVWF NORPNR6 ;
MOVLW 0x3F ;FINE TUNING IN CENTS.0x40=CENTRE.
MOVWF NORPNR7 ;
CALL NORPN7BYTE ;
;
MOVLW 0xB4 ;SENDS NRPN 0120=vvh
MOVWF NORPNR1 ; (VALUE1)(VALUE2)=(VALUE).
MOVLW 0x63 ;CONTROL #99.
MOVWF NORPNR2 ;
MOVLW 0x01 ;VALUE1.
MOVWF NORPNR3 ;
MOVLW 0x62 ;CONTROL #98.
MOVWF NORPNR4 ;
MOVLW 0x20 ;VALUE2
MOVWF NORPNR5 ;
MOVLW 0x06 ;CONTROL #6.
MOVWF NORPNR6 ;
MOVLW 0x38 ;Fo DEFAULT.
MOVWF NORPNR7 ;
CALL NORPN7BYTE ;
;
MOVLW 0xB4 ;CONTROL CH5.
MOVWF NORPNR1 ;FILTER RESONANCE MODIFY.
MOVLW 0x63 ;
MOVWF NORPNR2 ;
MOVLW 0x01 ;
MOVWF NORPNR3 ;
MOVLW 0x62 ;
MOVWF NORPNR4 ;
MOVLW 0x21 ;
MOVWF NORPNR5 ;
MOVLW 0x06 ;
MOVWF NORPNR6 ;
MOVLW 0x01 ;RESONANCE. 0x40=NO MODIFY.
MOVWF NORPNR7 ;
CALL NORPN7BYTE ;
;
MOVLW 0x6F ;INDIVIDUAL LEVEL CORRECTION SENT WITH
MOVWF LEVEL_ADJ_CH1 ; SEND_EXPR CHANNEL 1.
MOVLW 0x6F ;INDIVIDUAL LEVEL CORRECTION SENT WITH
MOVWF LEVEL_ADJ_CH5 ; SEND_EXPR CHANNEL 5.
CALL SEND_EXPR ;SEND SOLO & EXPRESSION VALUE.
;
CALL ATAK0CH5 ;
CALL VIBRATE0CH5 ;
CALL VIBDEPTH0CH5 ;
CALL VIBDELAY0CH5 ;
CALL TUNE0CH5 ;SETS COARSE TUNNING TO DEFAULT.
;
RETURN ;
;................................................................................................................................................................................................................
RH2SOUND1: ;
MOVLW 0x3C ;EEPROM Fx ADDRESS.
MOVWF EEADR ;
BCF EECON1, CFGS ;
BCF EECON1, EEPGD ;SELECT DATA EEPROM MEMORY.
BSF EECON1, RD ;ENABLE EEPROM READ.
MOVF EEDATA, W ;VALUE IN W.
MOVWF BYTE3OF3 ;
MOVLW 0xB3 ;RH2 CHANNEL 4.
MOVWF BYTE1OF3 ;
MOVLW 0x5B ;REVERB SEND LEVEL=CONTROL 5B.
MOVWF BYTE2OF3 ;
CALL MIDI3BYTE ;
;
MOVLW 0xB3 ;CONTROL CH4.
MOVWF NORPNR1 ;
MOVLW 0x63 ;
MOVWF NORPNR2 ;
MOVLW 0x01 ;
MOVWF NORPNR3 ;
MOVLW 0x62 ;
MOVWF NORPNR4 ;
MOVLW 0x08 ;
MOVWF NORPNR5 ;
MOVLW 0x06 ;
MOVWF NORPNR6 ;
MOVLW 0x49 ;VIBRATO RATE.0x40=NO MOD.
MOVWF NORPNR7 ;
CALL NORPN7BYTE ;
;
MOVLW 0xB3 ;CONTROL CH4.
MOVWF NORPNR1 ;
MOVLW 0x63 ;
MOVWF NORPNR2 ;
MOVLW 0x01 ;
MOVWF NORPNR3 ;
MOVLW 0x62 ;
MOVWF NORPNR4 ;
MOVLW 0x09 ;
MOVWF NORPNR5 ;
MOVLW 0x06 ;
MOVWF NORPNR6 ;
MOVLW 0x4A ;VIBRATO DEPTH.0x40=NO MOD.
MOVWF NORPNR7 ;
CALL NORPN7BYTE ;
;
CALL VIBDELAY0CH4 ;
;
MOVLW 0x60 ;CHORUS SEND LEVEL.
MOVWF CHORUSENDLEV ;
CALL CHORUS1CH4_ON ;
MOVLW 0x3D ;SELECT CHORUS RATE.
MOVWF SYSX11BYTE8 ;
MOVLW 0x08 ;CHORUS RATE VALUE.
MOVWF SYSX11BYTE9 ;
CALL SYSX11BYTE ;SET CHORUS RATE.
;
MOVLW 0x38 ;
MOVWF SYSX11BYTE8 ;
MOVLW 0x02 ;SET CHORUS TYPE.
MOVWF SYSX11BYTE9 ;
CALL SYSX11BYTE ;
;
MOVLW 0x60 ;INDIVIDUAL LEVEL CORRECTION SENT WITH
MOVWF LEVEL_ADJ_CH4 ; SEND_EXPR CHANNEL 4.
CALL SEND_EXPR ;SEND SOLO & EXPRESSION VALUE.
;
CALL TUNE0CH4 ;COARSE TUNNING TO DEFAULT.
CALL ATAKZEROCH4 ;CH4 ATTACK TO DEFAULT.
CALL DECAY0CH4 ;DECAY TO DEFAULT.
CALL PORTAMENTO_OFF4 ;
CALL SEND_EXPR ;SEND SOLO VALUE.
;
RETURN ;
;................................................................................................................................................................................................................
RH2SOUND2: ;
MOVLW 0x3D ;EEPROM Fx ADDRESS.
MOVWF EEADR ;
BCF EECON1, CFGS ;
BCF EECON1, EEPGD ;SELECT DATA EEPROM MEMORY.
BSF EECON1, RD ;ENABLE EEPROM READ.
MOVF EEDATA, W ;VALUE IN W.
MOVWF BYTE3OF3 ;
MOVLW 0xB3 ;RH2 CHANNEL 4.
MOVWF BYTE1OF3 ;
MOVLW 0x5B ;REVERB SEND LEVEL=CONTROL 5B.
MOVWF BYTE2OF3 ;
CALL MIDI3BYTE ;
;
CALL VIBRATE0CH4 ;VIBRATO RATE TO DEFAULT.
CALL VIBDELAY0CH4 ;VIBRATO DELAY TO DEFAULT.
CALL VIBDEPTH0CH4 ;VIBRATO DEPTH TO DEFAULT.
;
MOVLW 0xB3 ;CONTROL CH4.
MOVWF NORPNR1 ;ATTACK TIME MODIFY.
MOVLW 0x63 ;
MOVWF NORPNR2 ;
MOVLW 0x01 ;
MOVWF NORPNR3 ;
MOVLW 0x62 ;
MOVWF NORPNR4 ;
MOVLW 0x63 ;
MOVWF NORPNR5 ;
MOVLW 0x06 ;
MOVWF NORPNR6 ;
MOVLW 0x20 ;ATTACK TIME.0x40=NO MODIFY.
MOVWF NORPNR7 ;
CALL NORPN7BYTE ;
;
MOVLW 0x78 ;CHORUS SEND LEVEL.
MOVWF CHORUSENDLEV ;
CALL CHORUS1CH4_ON ;
;
MOVLW 0x3D ;SELECT CHORUS RATE.
MOVWF SYSX11BYTE8 ;
MOVLW 0x00 ;CHORUS RATE VALUE.
MOVWF SYSX11BYTE9 ;
CALL SYSX11BYTE ;SET CHORUS RATE.
;
MOVLW 0x38 ;
MOVWF SYSX11BYTE8 ;
MOVLW 0x00 ;SET CHORUS TYPE.
MOVWF SYSX11BYTE9 ;
CALL SYSX11BYTE ;
;
MOVLW 0x60 ;INDIVIDUAL LEVEL CORRECTION SENT WITH
MOVWF LEVEL_ADJ_CH4 ; SEND_EXPR CHANNEL 4
CALL SEND_EXPR ;SEND SOLO & EXPRESSION VALUE.
;
CALL TUNE0CH4 ;COARSE TUNNING TO DEFAULT.
CALL DECAY0CH4 ;DECAY TO DEFAULT.
CALL PORTAMENTO_OFF4 ;
;
RETURN ;
;................................................................................................................................................................................................................
RH2SOUND3: ;
MOVLW 0x3E ;EEPROM Fx ADDRESS.
MOVWF EEADR ;
BCF EECON1, CFGS ;
BCF EECON1, EEPGD ;SELECT DATA EEPROM MEMORY.
BSF EECON1, RD ;ENABLE EEPROM READ.
MOVF EEDATA, W ;VALUE IN W.
MOVWF BYTE3OF3 ;
MOVLW 0xB3 ;RH2 CHANNEL 4.
MOVWF BYTE1OF3 ;
MOVLW 0x5B ;REVERB SEND LEVEL=CONTROL 5B.
MOVWF BYTE2OF3 ;
CALL MIDI3BYTE ;
;
MOVLW 0x60 ;INDIVIDUAL LEVEL CORRECTION SENT WITH
MOVWF LEVEL_ADJ_CH4 ; SEND_EXPR CHANNEL 4.
CALL SEND_EXPR ;SEND SOLO & EXPRESSION VALUE.
;
;
CALL VIBRATE0CH4 ;VIBRATO RATE TO DEFAULT.
CALL VIBDELAY0CH4 ;VIBRATO DELAY TO DEFAULT.
CALL VIBDEPTH0CH4 ;VIBRATO DEPTH TO DEFAULT.
CALL CHORUS1CH4_OFF ;
CALL TUNE0CH4 ;COARSE TUNNING TO DEFAULT.
CALL ATAKZEROCH4 ;
CALL DECAY0CH4 ;DECAY TO DEFAULT.
CALL PORTAMENTO_OFF4 ;
;
RETURN ;
;................................................................................................................................................................................................................
RH2SOUND4: ;
MOVLW 0x3F ;EEPROM Fx ADDRESS.
MOVWF EEADR ;
BCF EECON1, CFGS ;
BCF EECON1, EEPGD ;SELECT DATA EEPROM MEMORY.
BSF EECON1, RD ;ENABLE EEPROM READ.
MOVF EEDATA, W ;VALUE IN W.
MOVWF BYTE3OF3 ;
MOVLW 0xB3 ;RH2 CHANNEL 4.
MOVWF BYTE1OF3 ;
MOVLW 0x5B ;REVERB SEND LEVEL=CONTROL 5B.
MOVWF BYTE2OF3 ;
CALL MIDI3BYTE ;
;
MOVLW 0xB3 ;CONTROL CH4.
MOVWF NORPNR1 ;
MOVLW 0x63 ;
MOVWF NORPNR2 ;
MOVLW 0x01 ;
MOVWF NORPNR3 ;
MOVLW 0x62 ;
MOVWF NORPNR4 ;
MOVLW 0x08 ;
MOVWF NORPNR5 ;
MOVLW 0x06 ;
MOVWF NORPNR6 ;
MOVLW 0x38 ;VIBRATO RATE.0x40=NO MOD.
MOVWF NORPNR7 ;
CALL NORPN7BYTE ;
;
MOVLW 0xB3 ;CONTROL CH4.
MOVWF NORPNR1 ;
MOVLW 0x63 ;
MOVWF NORPNR2 ;
MOVLW 0x01 ;
MOVWF NORPNR3 ;
MOVLW 0x62 ;
MOVWF NORPNR4 ;
MOVLW 0x09 ;
MOVWF NORPNR5 ;
MOVLW 0x06 ;
MOVWF NORPNR6 ;
MOVLW 0x48 ;VIBRATO DEPTH.0x40=NO MOD.
MOVWF NORPNR7 ;
CALL NORPN7BYTE ;
;
MOVLW 0xB3 ;CONTROL CH4.
MOVWF NORPNR1 ;
MOVLW 0x63 ;
MOVWF NORPNR2 ;
MOVLW 0x01 ;
MOVWF NORPNR3 ;
MOVLW 0x62 ;
MOVWF NORPNR4 ;
MOVLW 0x0A ;
MOVWF NORPNR5 ;
MOVLW 0x06 ;
MOVWF NORPNR6 ;
MOVLW 0x60 ;VIBRATO DELAY.0x40=NO MOD.
MOVWF NORPNR7 ;
CALL NORPN7BYTE ;
;
MOVLW 0xB3 ;CONTROL CH4.
MOVWF NORPNR1 ;ATTACK TIME MODIFY.
MOVLW 0x63 ;
MOVWF NORPNR2 ;
MOVLW 0x01 ;
MOVWF NORPNR3 ;
MOVLW 0x62 ;
MOVWF NORPNR4 ;
MOVLW 0x63 ;
MOVWF NORPNR5 ;
MOVLW 0x06 ;
MOVWF NORPNR6 ;
MOVLW 0x40 ;ATTACK TIME.0x40=NO MODIFY.
MOVWF NORPNR7 ;
CALL NORPN7BYTE ;
;
MOVLW 0x6F ;INDIVIDUAL LEVEL CORRECTION SENT WITH
MOVWF LEVEL_ADJ_CH4 ; SEND_EXPR CHANNEL 4.
CALL SEND_EXPR ;SEND SOLO & EXPRESSION VALUE.
;
;
CALL CHORUS1CH4_OFF ;
CALL TUNE0CH4 ;COARSE TUNNING TO DEFAULT.
;CALL ATAKZEROCH4 ;
CALL DECAY0CH4 ;DECAY TO DEFAULT.
;
RETURN ;
;................................................................................................................................................................................................................
RH2SOUND5: ;
MOVLW 0x40 ;EEPROM Fx ADDRESS.
MOVWF EEADR ;
BCF EECON1, CFGS ;
BCF EECON1, EEPGD ;SELECT DATA EEPROM MEMORY.
BSF EECON1, RD ;ENABLE EEPROM READ.
MOVF EEDATA, W ;VALUE IN W.
MOVWF BYTE3OF3 ;
MOVLW 0xB3 ;RH2 CHANNEL 4.
MOVWF BYTE1OF3 ;
MOVLW 0x5B ;REVERB SEND LEVEL=CONTROL 5B.
MOVWF BYTE2OF3 ;
CALL MIDI3BYTE ;
;
MOVLW 0x7C ;INDIVIDUAL LEVEL CORRECTION SENT WITH
MOVWF LEVEL_ADJ_CH4 ; SEND_EXPR CHANNEL 4.
CALL SEND_EXPR ;SEND SOLO & EXPRESSION VALUE.
;
CALL VIBRATE0CH4 ;VIBRATO RATE TO DEFAULT.
CALL VIBDELAY0CH4 ;VIBRATO DELAY TO DEFAULT.
CALL VIBDEPTH0CH4 ;VIBRATO DEPTH TO DEFAULT.
CALL CHORUS1CH4_OFF ;
CALL TUNE0CH4 ;COARSE TUNNING TO DEFAULT.
CALL ATAKZEROCH4 ;
CALL DECAY0CH4 ;DECAY TO DEFAULT.
;
RETURN ;
;................................................................................................................................................................................................................
RH2SOUND6: ;
MOVLW 0x41 ;EEPROM Fx ADDRESS.
MOVWF EEADR ;
BCF EECON1, CFGS ;
BCF EECON1, EEPGD ;SELECT DATA EEPROM MEMORY.
BSF EECON1, RD ;ENABLE EEPROM READ.
MOVF EEDATA, W ;VALUE IN W.
MOVWF BYTE3OF3 ;
MOVLW 0xB3 ;RH2 CHANNEL 4.
MOVWF BYTE1OF3 ;
MOVLW 0x5B ;REVERB SEND LEVEL=CONTROL 5B.
MOVWF BYTE2OF3 ;
CALL MIDI3BYTE ;
;
MOVLW 0x78 ;INDIVIDUAL LEVEL CORRECTION SENT WITH
MOVWF LEVEL_ADJ_CH4 ; SEND_EXPR CHANNEL 4.
CALL SEND_EXPR ;SEND SOLO & EXPRESSION VALUE.
;
CALL VIBRATE0CH4 ;VIBRATO RATE TO DEFAULT.
CALL VIBDELAY0CH4 ;VIBRATO DELAY TO DEFAULT.
CALL VIBDEPTH0CH4 ;VIBRATO DEPTH TO DEFAULT.
CALL CHORUS1CH4_OFF ;
CALL TUNE0CH4 ;COARSE TUNNING TO DEFAULT.
CALL ATAKZEROCH4 ;
CALL DECAY0CH4 ;DECAY TO DEFAULT.
;
RETURN ;
;................................................................................................................................................................................................................
RH2SOUND7: ;
MOVLW 0x42 ;EEPROM Fx ADDRESS.
MOVWF EEADR ;
BCF EECON1, CFGS ;
BCF EECON1, EEPGD ;SELECT DATA EEPROM MEMORY.
BSF EECON1, RD ;ENABLE EEPROM READ.
MOVF EEDATA, W ;VALUE IN W.
MOVWF BYTE3OF3 ;
MOVLW 0xB3 ;RH2 CHANNEL 4.
MOVWF BYTE1OF3 ;
MOVLW 0x5B ;REVERB SEND LEVEL=CONTROL 5B.
MOVWF BYTE2OF3 ;
CALL MIDI3BYTE ;
;
;
CALL VIBDELAY0CH4 ;VIBRATO DELAY TO DEFAULT.
CALL TUNE0CH4 ;COARSE TUNNING TO DEFAULT.
CALL ATAKZEROCH4 ;
;
MOVLW 0xB3 ;CONTROL CH4.
MOVWF NORPNR1 ;DECAY TIME MODIFY.
MOVLW 0x63 ;
MOVWF NORPNR2 ;
MOVLW 0x01 ;
MOVWF NORPNR3 ;
MOVLW 0x62 ;
MOVWF NORPNR4 ;
MOVLW 0x64 ;
MOVWF NORPNR5 ;
MOVLW 0x06 ;
MOVWF NORPNR6 ;
MOVLW 0x50 ;DECAY TIME.0x40=NO MODIFY.
MOVWF NORPNR7 ;
CALL NORPN7BYTE ;
;
MOVLW 0xB3 ;CONTROL CH4.
MOVWF NORPNR1 ;
MOVLW 0x63 ;
MOVWF NORPNR2 ;
MOVLW 0x01 ;
MOVWF NORPNR3 ;
MOVLW 0x62 ;
MOVWF NORPNR4 ;
MOVLW 0x08 ;
MOVWF NORPNR5 ;
MOVLW 0x06 ;
MOVWF NORPNR6 ;
MOVLW 0x49 ;VIBRATO RATE.0x40=NO MOD.
MOVWF NORPNR7 ;
CALL NORPN7BYTE ;
;
MOVLW 0xB3 ;CONTROL CH4.
MOVWF NORPNR1 ;
MOVLW 0x63 ;
MOVWF NORPNR2 ;
MOVLW 0x01 ;
MOVWF NORPNR3 ;
MOVLW 0x62 ;
MOVWF NORPNR4 ;
MOVLW 0x09 ;
MOVWF NORPNR5 ;
MOVLW 0x06 ;
MOVWF NORPNR6 ;
MOVLW 0x4A ;VIBRATO DEPTH.0x40=NO MOD.
MOVWF NORPNR7 ;
CALL NORPN7BYTE ;
;
CALL VIBDELAY0CH4 ;
;...............
MOVLW 0x60 ;CHORUS SEND LEVEL.
MOVWF CHORUSENDLEV ;
CALL CHORUS1CH4_ON ;
;
MOVLW 0x3D ;SELECT CHORUS RATE.
MOVWF SYSX11BYTE8 ;
MOVLW 0x08 ;CHORUS RATE VALUE.
MOVWF SYSX11BYTE9 ;
CALL SYSX11BYTE ;SET CHORUS RATE.
;
MOVLW 0x38 ;
MOVWF SYSX11BYTE8 ;
MOVLW 0x02 ;SET CHORUS TYPE.
MOVWF SYSX11BYTE9 ;
CALL SYSX11BYTE ;
;
MOVLW 0x68 ;INDIVIDUAL LEVEL CORRECTION SENT WITH
MOVWF LEVEL_ADJ_CH4 ; SEND_EXPR CHANNEL 4.
CALL SEND_EXPR ;SEND SOLO & EXPRESSION VALUE ON CHS 1,4,5.
;
RETURN ;
;................................................................................................................................................................................................................
RH2SOUND8: ;
MOVLW 0x43 ;EEPROM Fx ADDRESS.
MOVWF EEADR ;
BCF EECON1, CFGS ;
BCF EECON1, EEPGD ;SELECT DATA EEPROM MEMORY.
BSF EECON1, RD ;ENABLE EEPROM READ.
MOVF EEDATA, W ;VALUE IN W.
MOVWF BYTE3OF3 ;
MOVLW 0xB3 ;RH2 CHANNEL 4.
MOVWF BYTE1OF3 ;
MOVLW 0x5B ;REVERB SEND LEVEL=CONTROL 5B.
MOVWF BYTE2OF3 ;
CALL MIDI3BYTE ;
;
CALL VIBRATE0CH4 ;VIBRATO RATE TO DEFAULT.
CALL VIBDELAY0CH4 ;VIBRATO DELAY TO DEFAULT.
CALL VIBDEPTH0CH4 ;VIBRATO DEPTH TO DEFAULT.
CALL CHORUS1CH4_OFF ;
CALL TUNE0CH4 ;COARSE TUNNING TO DEFAULT.
CALL ATAKZEROCH4 ;CH4 ATTACK TO DEFAULT.
CALL DECAY0CH4 ;DECAY TO DEFAULT.
;
MOVLW 0x60 ;INDIVIDUAL LEVEL CORRECTION SENT WITH
MOVWF LEVEL_ADJ_CH4 ; SEND_EXPR CHANNEL 4.
CALL SEND_EXPR ;SEND SOLO & EXPRESSION VALUE.
;
RETURN ;
;................................................................................................................................................................................................................
RH2SOUND9: ;
MOVLW 0x44 ;EEPROM Fx ADDRESS.
MOVWF EEADR ;
BCF EECON1, CFGS ;
BCF EECON1, EEPGD ;SELECT DATA EEPROM MEMORY.
BSF EECON1, RD ;ENABLE EEPROM READ.
MOVF EEDATA, W ;VALUE IN W.
MOVWF BYTE3OF3 ;
MOVLW 0xB3 ;RH2 CHANNEL 4.
MOVWF BYTE1OF3 ;
MOVLW 0x5B ;REVERB SEND LEVEL=CONTROL 5B.
MOVWF BYTE2OF3 ;
CALL MIDI3BYTE ;
;
MOVLW 0x60 ;INDIVIDUAL LEVEL CORRECTION SENT WITH
MOVWF LEVEL_ADJ_CH4 ; SEND_EXPR CHANNEL 4.
CALL SEND_EXPR ;SEND SOLO & EXPRESSION VALUE.
;
CALL VIBRATE0CH4 ;VIBRATO RATE TO DEFAULT.
CALL VIBDELAY0CH4 ;VIBRATO DELAY TO DEFAULT.
CALL VIBDEPTH0CH4 ;VIBRATO DEPTH TO DEFAULT.
CALL CHORUS1CH4_OFF ;
CALL TUNE0CH4 ;COARSE TUNNING TO DEFAULT.
CALL ATAKZEROCH4 ;
CALL DECAY0CH4 ;DECAY TO DEFAULT.
CALL PORTAMENTO_OFF4 ;
;
RETURN ;
;................................................................................................................................................................................................................
RH2SOUND10: ;
MOVLW 0x45 ;EEPROM Fx ADDRESS.
MOVWF EEADR ;
BCF EECON1, CFGS ;
BCF EECON1, EEPGD ;SELECT DATA EEPROM MEMORY.
BSF EECON1, RD ;ENABLE EEPROM READ.
MOVF EEDATA, W ;VALUE IN W.
MOVWF BYTE3OF3 ;
MOVLW 0xB3 ;RH2 CHANNEL 4.
MOVWF BYTE1OF3 ;
MOVLW 0x5B ;REVERB SEND LEVEL=CONTROL 5B.
MOVWF BYTE2OF3 ;
CALL MIDI3BYTE ;
;
MOVLW 0xB3 ;CONTROL CH4.
MOVWF NORPNR1 ;
MOVLW 0x63 ;
MOVWF NORPNR2 ;
MOVLW 0x01 ;
MOVWF NORPNR3 ;
MOVLW 0x62 ;
MOVWF NORPNR4 ;
MOVLW 0x08 ;
MOVWF NORPNR5 ;
MOVLW 0x06 ;
MOVWF NORPNR6 ;
MOVLW 0x34 ;VIBRATO RATE.0x40=NO MOD.
MOVWF NORPNR7 ;
CALL NORPN7BYTE ;
;
MOVLW 0xB3 ;CONTROL CH4.
MOVWF NORPNR1 ;
MOVLW 0x63 ;
MOVWF NORPNR2 ;
MOVLW 0x01 ;
MOVWF NORPNR3 ;
MOVLW 0x62 ;
MOVWF NORPNR4 ;
MOVLW 0x09 ;
MOVWF NORPNR5 ;
MOVLW 0x06 ;
MOVWF NORPNR6 ;
MOVLW 0x48 ;VIBRATO DEPTH.0x40=NO MOD.
MOVWF NORPNR7 ;
CALL NORPN7BYTE ;
;
MOVLW 0xB3 ;CONTROL CH4.
MOVWF NORPNR1 ;
MOVLW 0x63 ;
MOVWF NORPNR2 ;
MOVLW 0x01 ;
MOVWF NORPNR3 ;
MOVLW 0x62 ;
MOVWF NORPNR4 ;
MOVLW 0x0A ;
MOVWF NORPNR5 ;
MOVLW 0x06 ;
MOVWF NORPNR6 ;
MOVLW 0x50 ;VIBRATO DELAY.0x40=NO MOD.
MOVWF NORPNR7 ;
CALL NORPN7BYTE ;
;
MOVLW 0xB3 ;CONTROL CH4.
MOVWF NORPNR1 ;
MOVLW 0x65 ;
MOVWF NORPNR2 ;
MOVLW 0x00 ;
MOVWF NORPNR3 ;
MOVLW 0x64 ;
MOVWF NORPNR4 ;
MOVLW 0x02 ;
MOVWF NORPNR5 ;
MOVLW 0x06 ;
MOVWF NORPNR6 ;
MOVLW 0x28 ;COARSE TUNNING.0x40=NO MOD.
MOVWF NORPNR7 ;DOWN 2 OCTAVEs.
CALL NORPN7BYTE ;
;
MOVLW 0x60 ;INDIVIDUAL LEVEL CORRECTION SENT WITH
MOVWF LEVEL_ADJ_CH4 ; SEND_EXPR CHANNEL 4.
CALL SEND_EXPR ;SEND SOLO & EXPRESSION VALUE.
;
CALL CHORUS1CH4_OFF ;
CALL ATAKZEROCH4 ;
CALL DECAY0CH4 ;DECAY TO DEFAULT.
CALL PORTAMENTO_OFF4 ;
;
RETURN ;
;................................................................................................................................................................................................................
RH2SOUND11: ;
MOVLW 0x46 ;EEPROM Fx ADDRESS.
MOVWF EEADR ;
BCF EECON1, CFGS ;
BCF EECON1, EEPGD ;SELECT DATA EEPROM MEMORY.
BSF EECON1, RD ;ENABLE EEPROM READ.
MOVF EEDATA, W ;VALUE IN W.
MOVWF BYTE3OF3 ;
MOVLW 0xB3 ;RH2 CHANNEL 4.
MOVWF BYTE1OF3 ;
MOVLW 0x5B ;REVERB SEND LEVEL=CONTROL 5B.
MOVWF BYTE2OF3 ;
CALL MIDI3BYTE ;
;
MOVLW 0x70 ;INDIVIDUAL LEVEL CORRECTION SENT WITH
MOVWF LEVEL_ADJ_CH4 ; SEND_EXPR CHANNEL 4.
CALL SEND_EXPR ;SEND SOLO & EXPRESSION VALUE.
;
MOVLW 0xB3 ;CONTROL CH4.
MOVWF NORPNR1 ;
MOVLW 0x65 ;
MOVWF NORPNR2 ;
MOVLW 0x00 ;
MOVWF NORPNR3 ;
MOVLW 0x64 ;
MOVWF NORPNR4 ;
MOVLW 0x02 ;
MOVWF NORPNR5 ;
MOVLW 0x06 ;
MOVWF NORPNR6 ;
MOVLW 0x28 ;COARSE TUNNING.0x40=NO MOD.
MOVWF NORPNR7 ;DOWN 2 OCTAVEs.
CALL NORPN7BYTE ;
;
CALL VIBRATE0CH4 ;VIBRATO RATE TO DEFAULT.
CALL VIBDELAY0CH4 ;VIBRATO DELAY TO DEFAULT.
CALL VIBDEPTH0CH4 ;VIBRATO DEPTH TO DEFAULT.
CALL CHORUS1CH4_OFF ;
CALL ATAKZEROCH4 ;
CALL DECAY0CH4 ;DECAY TO DEFAULT.
;
RETURN ;
;................................................................................................................................................................................................................
RH2SOUND12: ;
MOVLW 0x47 ;EEPROM Fx ADDRESS.
MOVWF EEADR ;
BCF EECON1, CFGS ;
BCF EECON1, EEPGD ;SELECT DATA EEPROM MEMORY.
BSF EECON1, RD ;ENABLE EEPROM READ.
MOVF EEDATA, W ;VALUE IN W.
MOVWF BYTE3OF3 ;
MOVLW 0xB3 ;RH2 CHANNEL 4.
MOVWF BYTE1OF3 ;
MOVLW 0x5B ;REVERB SEND LEVEL=CONTROL 5B.
MOVWF BYTE2OF3 ;
CALL MIDI3BYTE ;
;
MOVLW 0x78 ;INDIVIDUAL LEVEL CORRECTION SENT WITH
MOVWF LEVEL_ADJ_CH4 ; SEND_EXPR CHANNEL 4.
CALL SEND_EXPR ;SEND SOLO & EXPRESSION VALUE.
;
CALL VIBRATE0CH4 ;VIBRATO RATE TO DEFAULT.
CALL VIBDELAY0CH4 ;VIBRATO DELAY TO DEFAULT.
CALL VIBDEPTH0CH4 ;VIBRATO DEPTH TO DEFAULT.
CALL CHORUS1CH4_OFF ;CHORUS ON.
CALL TUNE0CH4 ;COARSE TUNNING TO DEFAULT.
CALL ATAKZEROCH4 ;ATTACK TO DEFAULT.
CALL DECAY0CH4 ;DECAY TO DEFAULT.
;
RETURN ;
;................................................................................................................................................................................................................
data "MP1v003a : software for PIC18F452 controlled ATSAM9773, "
data "MIDI sound expander for WEM MP1 by Dick Straker, C 2002->2008."
data "Supreme, I bow to thee : CKG/GIG."
;___________________________________________________________________________________________________________________________________________
;***********************************************************************************************************************************************************************
SOUNDEDIT: ;RH1 VOL CONTROL IS ATTACK TIME. RH1 Fx CONTROL IS DECAY CONTROL.
;RH2 VOL CONTROL IS FILTER Q. RH2 Fx CONTROL IS FILTER Fo.
RETURN
;............................................................................
MOVLW 0x31 ;
MOVWF SYSX11BYTE8 ;
MOVF BASSVOLPOT,W ;
;MOVLW 0x20 ;REVERB character VALUE.
MOVWF SYSX11BYTE9 ;
CALL SYSX11BYTE ;SET REVERB character LEVEL.
;............................................................................
MOVLW 0x34 ;
MOVWF SYSX11BYTE8 ;
;MOVLW 0x7F ;REVERB time VALUE.
MOVF BASSFXPOT,W ;
MOVWF SYSX11BYTE9 ;
CALL SYSX11BYTE ;SET REVERB time LEVEL.
RETURN
;...........................................................................
MOVLW 0xB0 ;CONTROL CH.
MOVWF NORPNR1 ;ATTACK TIME MODIFY.
MOVLW 0x63 ;
MOVWF NORPNR2 ;
MOVLW 0x01 ;
MOVWF NORPNR3 ;
MOVLW 0x62 ;
MOVWF NORPNR4 ;
MOVLW 0x63 ;
MOVWF NORPNR5 ;
MOVLW 0x06 ;
MOVWF NORPNR6 ;
MOVF BASSVOLPOT,W ;ATTACK TIME.0x40=NO MODIFY.
MOVWF NORPNR7 ;
CALL NORPN7BYTE ;
;
MOVLW 0xB0 ;CONTROL CH.
MOVWF NORPNR1 ;RESONANCE MODIFY.
MOVLW 0x63 ;
MOVWF NORPNR2 ;
MOVLW 0x01 ;
MOVWF NORPNR3 ;
MOVLW 0x62 ;
MOVWF NORPNR4 ;
MOVLW 0x21 ;
MOVWF NORPNR5 ;
MOVLW 0x06 ;
MOVWF NORPNR6 ;
MOVF CHORDVOLPOT,W ;RESONANCE. 0x40=NO MODIFY.
MOVWF NORPNR7 ;
CALL NORPN7BYTE ;
;
MOVLW 0xB0 ;CONTROL CH.
MOVWF NORPNR1 ;Fo MODIFY.
MOVLW 0x63 ;
MOVWF NORPNR2 ;
MOVLW 0x01 ;
MOVWF NORPNR3 ;
MOVLW 0x62 ;
MOVWF NORPNR4 ;
MOVLW 0x20 ;
MOVWF NORPNR5 ;
MOVLW 0x06 ;
MOVWF NORPNR6 ;
MOVF CHORDFXPOT,W ;Fo. 0x40=NO MODIFY.
MOVWF NORPNR7 ;
CALL NORPN7BYTE ;
;
MOVLW 0xB0 ;CONTROL CH.
MOVWF NORPNR1 ;DECAY MODIFY.
MOVLW 0x63 ;
MOVWF NORPNR2 ;
MOVLW 0x01 ;
MOVWF NORPNR3 ;
MOVLW 0x62 ;
MOVWF NORPNR4 ;
MOVLW 0x64 ;
MOVWF NORPNR5 ;
MOVLW 0x06 ;
MOVWF NORPNR6 ;
MOVF BASSFXPOT,W ;DECAY. 0x40=NO MODIFY.
MOVWF NORPNR7 ;
CALL NORPN7BYTE ;
;
RETURN ;
;................................................................................................................................................................................................................
;----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
end
;_______________________________________________________________________________________________________________________