New file |
0,0 → 1,19692 |
gpasm-0.13.7 beta setup_tia_cartridge.asm1-30-2014 10:42:05 PAGE 1 |
|
|
LOC OBJECT CODE LINE SOURCE TEXT |
VALUE |
|
00001 ; $Id: setup_tia_base.asm bdupeyron.tech@gmail.com(Antichambre) |
00002 LIST R=DEC |
00003 ; |
00004 ; Prepared Setup File for TIA Cartridge version |
00005 ; |
00006 |
00007 ;; here you can change the default device ID - if you are using |
00008 ;; some cores as slave, set: |
00009 ;; o DEFAULT_DEVICE_ID 0x01 ; for the first slave |
00010 ;; o DEFAULT_DEVICE_ID 0x02 ; for the second slave |
00011 ;; o DEFAULT_DEVICE_ID 0x03 ; for the third slave |
0000 00012 #define DEFAULT_DEVICE_ID 0x00 |
00013 |
00014 ;; if this option is enabled (1), the DEFAULT_DEVICE_ID won't be used, but |
00015 ;; it will be automatically derived from the MIOS Device ID instead |
0000 00016 #define AUTO_DEVICE_ID 0 |
00017 |
00018 ;; default MIDI channel: |
0000 00019 #define DEFAULT_MIDI_CHANNEL 1 |
00020 |
00021 ;; if != 0, special variations for cartridge version hardware: |
0000 00022 #define DEFAULT_IS_CARTRIDGE 1 |
00023 |
00024 ;; Kit and Wavetable fisrt: |
00025 ;; positionbanks start at this bankstick address(id): |
00026 ;; Becarrefull! Change this value may reformat your BankStick |
00027 ;; look at DEFAULT_BS_FPROTECT Value *! |
0000 00028 #define DEFAULT_BS_KBANK_ID 5 |
00029 ;; Default BankStick format protection: |
00030 ;; 0: No protection. |
00031 ;; *1: Protects banks which are not good type or position. |
00032 ;; Depend on DEFAULT_BS_KBANK_ID. |
00033 ;; 2: Never format at startup (Sysex command available). |
0000 00034 #define DEFAULT_BS_FPROTECT 1 |
00035 ;; BankStick read only: |
0000 00036 #define DEFAULT_BS_READONLY 0 |
00037 |
00038 ;; Default EEPROM Protection: |
00039 ;; Eeprom read only: |
0000 00040 #define DEFAULT_EE_READONLY 1 |
00041 ;; internal patch Protection |
00042 |
00043 ;; Default Debugger Options: |
00044 ;; Degug Enabled/disabled |
0000 00045 #define DEFAULT_TIA_DEBUG_ON 1 |
00046 ;; BankStick Degug Enabled/disabled |
0000 00047 #define DEFAULT_TIA_DEBUG_BS 1 |
00048 ;; BankStick Degug Mode |
00049 ;; 0: Basic. |
00050 ;; 1: Advanced. |
0000 00051 #define DEFAULT_TIA_DEBUG_BS_MODE 0 |
00052 ;; Eeprom Degug Enabled/disabled |
00053 ;; no effect if DEFAULT_TIA_DEBUG_ON == 0 |
0000 00054 #define DEFAULT_TIA_DEBUG_EE 1 |
gpasm-0.13.7 beta setup_tia_cartridge.asm1-30-2014 10:42:05 PAGE 2 |
|
|
LOC OBJECT CODE LINE SOURCE TEXT |
VALUE |
|
00055 |
00056 ;; use PORTA and PORTE (J5 of the core module) as output |
00057 ;; you can address these pins in cs_menu_io_tables.inc as "shift register" #0 |
0000 00058 #define ENABLE_J5 0 |
00059 |
0000 00060 #define TIA_LEDMTR_ENABLE 1 |
00061 ;; define the shift registers (note: HERE the shift register begin with 0: 1st SR is 0, 2nd is 1, 3rd is 2, ...) |
0000 00062 #define TIA_LEDMTR_REG 0 ; shift register for led metering (HERE: first shift register in the chain) |
00063 |
00064 ;; For MIDI activity monitor: |
0000 00065 #define DEFAULT_MIDI_MONITOR_ENABLED 1 ; if 1, the Tx/Rx LEDs are enabled |
00066 ;;define the DOUT pins for the Rx and Tx LED: |
00067 ;; if 0: MIDI Rx/Tx LEDs are assigned to the DOUT chain, pin 0x00-0x7f |
00068 ;; if 1: MIDI Rx/Tx LEDs are assigned to specials pins |
0000 00069 #define MIDI_RXTX_USE_IO 1 |
00070 #if MIDI_RXTX_USE_IO |
0000 00071 #define DEFAULT_MIDI_RX_LAT LATD |
0000 00072 #define DEFAULT_MIDI_RX_TRIS TRISD |
0000 00073 #define DEFAULT_MIDI_RX_PIN 6 ; Pin D.6 |
0000 00074 #define DEFAULT_MIDI_TX_LAT LATD |
0000 00075 #define DEFAULT_MIDI_TX_TRIS TRISD |
0000 00076 #define DEFAULT_MIDI_TX_PIN 7 ; Pin D.7 |
00077 #else |
00078 #define DEFAULT_MIDI_RX_LED 0x41 ; DOUT SR#9, pin D1 |
00079 #define DEFAULT_MIDI_TX_LED 0x42 ; DOUT SR#9, pin D2 |
00080 #endif |
00081 |
00082 ;; define the AOUT interface which is used here: |
00083 ;; 1: one MBHP_AOUT module |
00084 ;; 2: up to 4 (chained) MBHP_AOUT_LC modules |
00085 ;; 3: one MBHP_AOUT_NG module |
00086 ;; all other values invalid! |
0000 00087 #define AOUT_INTERFACE_TYPE 0 |
00088 |
00089 ;; only relevant if one or more AOUT_LC modules are used: |
00090 ;; define the resolution configuration here |
00091 ;; 0: first channel 12bit, second channel 4bit |
00092 ;; 1: first channel 8bit, second channel 8bit |
00093 ;; 2: combines M1,M2 and/or M3/M4: first channel 12bit, second channel 12bit, third channel 8bit, fourth channel ignored! |
00094 ;; all other values invalid! |
0000 00095 #define AOUT_LC_RESOLUTION_OPTION_M1 0 |
0000 00096 #define AOUT_LC_RESOLUTION_OPTION_M2 0 |
0000 00097 #define AOUT_LC_RESOLUTION_OPTION_M3 0 |
0000 00098 #define AOUT_LC_RESOLUTION_OPTION_M4 0 |
00099 |
00100 ;; enable the 6th LFO waveform (analog inputs) |
0000 00101 #define ENABLE_AIN_LFO_WAVEFORM 0 |
00102 |
00103 #include "src/main.inc" |
00001 ; $Id: main.inc bdupeyron.tech@gmail.com(Antichambre) |
00002 ; |
00003 ; MIOS Application |
00004 ; MIDIbox TIA |
00005 ; |
gpasm-0.13.7 beta setup_tia_cartridge.asm1-30-2014 10:42:05 PAGE 3 |
|
|
LOC OBJECT CODE LINE SOURCE TEXT |
VALUE |
|
00006 ; -> see README.txt for details |
00007 ; |
00008 ; ========================================================================== |
00009 ; |
00010 ; Copyright 1998-2006 Thorsten Klose (tk@midibox.org) |
00011 ; Licensed for personal non-commercial use only. |
00012 ; All other rights reserved. |
00013 ; |
00014 ; ========================================================================== |
00015 ; |
00016 ; Version: <--------------------> |
0000 00017 #define MBTIA_VERSION_STR "MIDIboxTIA V1.beta " |
00018 ; (fixed string length - 20 characters!) |
00019 ; |
00020 |
00021 ;; ---[ MIOS header file ]--- |
00022 #include <mios.h> |
00001 ; $Id: mios.h 822 2009-09-17 18:39:53Z tk $ |
00002 ; |
00003 ; MIOS Definitions file |
00004 ; |
00005 ; ========================================================================== |
00006 ; |
00007 ; Copyright 1998-2008 Thorsten Klose (tk@midibox.org) |
00008 ; Licensed for personal non-commercial use only. |
00009 ; All other rights reserved. |
00010 ; |
00011 ; ========================================================================== |
00012 |
00013 |
00014 ;; ========================================================================== |
00015 ;; Include basic defines which characterize the derivative to |
00016 ;; simplify dependencies within MIOS source code |
00017 ;; ========================================================================== |
00018 #include <hw_flags.h> |
00001 |
00002 #ifndef _HW_FLAGS_H |
0000 00003 #define _HW_FLAGS_H |
00004 |
00005 #ifdef __18F452 |
00006 #define PIC_DERIVATIVE_CODE_SIZE 0x08000 |
00007 #define PIC_DERIVATIVE_RAM_SIZE 0x600 |
00008 #define PIC_DERIVATIVE_EEPROM_SIZE 0x100 |
00009 #define PIC_DERIVATIVE_IRQ_WORKAROUND 0 |
00010 #define PIC_DERIVATIVE_NEW_ADC 0 |
00011 #define PIC_DERIVATIVE_CMCON_INIT 0 |
00012 #define PIC_DERIVATIVE_T08BIT_INVERTED 0 |
00013 #define PIC_DERIVATIVE_SET_LCD_4BIT 0 |
00014 #endif |
00015 |
00016 #ifdef __18F4620 |
00017 #define PIC_DERIVATIVE_CODE_SIZE 0x10000 |
00018 #define PIC_DERIVATIVE_RAM_SIZE 0xf80 |
00019 #define PIC_DERIVATIVE_EEPROM_SIZE 0x400 |
gpasm-0.13.7 beta setup_tia_cartridge.asm1-30-2014 10:42:05 PAGE 4 |
|
|
LOC OBJECT CODE LINE SOURCE TEXT |
VALUE |
|
00020 #define PIC_DERIVATIVE_IRQ_WORKAROUND 1 |
00021 #define PIC_DERIVATIVE_NEW_ADC 1 |
00022 #define PIC_DERIVATIVE_CMCON_INIT 1 |
00023 #define PIC_DERIVATIVE_T08BIT_INVERTED 1 |
00024 #define PIC_DERIVATIVE_SET_LCD_4BIT 0 |
00025 #endif |
00026 |
00027 #ifdef __18F4520 |
00028 #define PIC_DERIVATIVE_CODE_SIZE 0x08000 |
00029 #define PIC_DERIVATIVE_RAM_SIZE 0x600 |
00030 #define PIC_DERIVATIVE_EEPROM_SIZE 0x100 |
00031 #define PIC_DERIVATIVE_IRQ_WORKAROUND 1 |
00032 #define PIC_DERIVATIVE_NEW_ADC 1 |
00033 #define PIC_DERIVATIVE_CMCON_INIT 1 |
00034 #define PIC_DERIVATIVE_T08BIT_INVERTED 0 |
00035 #define PIC_DERIVATIVE_SET_LCD_4BIT 0 |
00036 #endif |
00037 |
00038 #ifdef __18F4682 |
00039 #define PIC_DERIVATIVE_CODE_SIZE 0x14000 |
00040 #define PIC_DERIVATIVE_RAM_SIZE 0xd00 |
00041 #define PIC_DERIVATIVE_EEPROM_SIZE 0x400 |
00042 #define PIC_DERIVATIVE_IRQ_WORKAROUND 0 |
00043 #define PIC_DERIVATIVE_NEW_ADC 1 |
00044 #define PIC_DERIVATIVE_CMCON_INIT 1 |
00045 #define PIC_DERIVATIVE_T08BIT_INVERTED 0 |
00046 #define PIC_DERIVATIVE_SET_LCD_4BIT 1 |
00047 #endif |
00048 |
00049 #ifdef __18F4685 |
0000 00050 #define PIC_DERIVATIVE_CODE_SIZE 0x18000 |
0000 00051 #define PIC_DERIVATIVE_RAM_SIZE 0xd00 |
0000 00052 #define PIC_DERIVATIVE_EEPROM_SIZE 0x400 |
0000 00053 #define PIC_DERIVATIVE_IRQ_WORKAROUND 0 |
0000 00054 #define PIC_DERIVATIVE_NEW_ADC 1 |
0000 00055 #define PIC_DERIVATIVE_CMCON_INIT 1 |
0000 00056 #define PIC_DERIVATIVE_T08BIT_INVERTED 0 |
0000 00057 #define PIC_DERIVATIVE_SET_LCD_4BIT 1 |
00058 #endif |
00059 |
00060 #endif |
00019 |
00020 ;; ========================================================================== |
00021 ;; Assembler directives & device specific include file |
00022 ;; |
00023 ;; Natively supported devices are listed here. |
00024 ;; ========================================================================== |
00025 |
00026 #ifdef __18F452 |
00027 LIST R=DEC |
00028 #include <p18f452.inc> |
00029 #endif |
00030 |
00031 #ifdef __18F4620 |
gpasm-0.13.7 beta setup_tia_cartridge.asm1-30-2014 10:42:05 PAGE 5 |
|
|
LOC OBJECT CODE LINE SOURCE TEXT |
VALUE |
|
00032 LIST R=DEC |
00033 #include <p18f4620.inc> |
00034 #endif |
00035 |
00036 #ifdef __18F4520 |
00037 LIST R=DEC |
00038 #include <p18f4520.inc> |
00039 #endif |
00040 |
00041 #ifdef __18F4682 |
00042 LIST R=DEC |
00043 #include <p18f4682.inc> |
00044 #endif |
00045 |
00046 #ifdef __18F4685 |
00047 LIST R=DEC |
00048 #include <p18f4685.inc> |
00001 LIST |
00002 |
00003 ;========================================================================== |
00004 ; MPASM PIC18F4685 processor include |
00005 ; |
00006 ; (c) Copyright 1999-2007 Microchip Technology, All rights reserved |
00007 ;========================================================================== |
00008 |
04822 LIST |
00049 #endif |
00050 |
00051 |
00052 ;; ========================================================================== |
00053 ;; General constants |
00054 ;; ========================================================================== |
00055 |
00056 ;; used by MIOS_MIDI_Interface* |
00000000 00057 MIOS_MIDI_INTERFACE_COMMON EQU 0x00 |
00000001 00058 MIOS_MIDI_INTERFACE_TO_HOST EQU 0x01 |
00059 |
00060 ;; used by MIOS_MIDI_Merger* |
00000000 00061 MIOS_MIDI_MERGER_DISABLED EQU 0x00 |
00000001 00062 MIOS_MIDI_MERGER_ENABLED EQU 0x01 |
00000002 00063 MIOS_MIDI_MERGER_MBLINK_EP EQU 0x02 |
00000003 00064 MIOS_MIDI_MERGER_MBLINK_FP EQU 0x03 |
00065 |
00066 ;; used by MIOS_ENC_PIN_TABLE |
00067 #ifdef MIOS_OLD_ENCODER_MODES |
00068 MIOS_ENC_MODE_NON_DETENTED EQU 0x00 |
00069 MIOS_ENC_MODE_DETENTED EQU 0x80 |
00070 MIOS_ENC_MODE_DETENTED1 EQU 0x80 |
00071 MIOS_ENC_MODE_DETENTED2 EQU 0x81 |
00072 MIOS_ENC_MODE_DETENTED3 EQU 0x82 |
00073 #else |
00074 ;; new encoder modes: each bit of MIOS_ENC_MODE_xx tells, if an INC / DEC is |
00075 ;; being triggered on the corresponding edge. |
00076 ;; Bit 7 6 5 4 |
gpasm-0.13.7 beta setup_tia_cartridge.asm1-30-2014 10:42:05 PAGE 6 |
|
|
LOC OBJECT CODE LINE SOURCE TEXT |
VALUE |
|
00077 ;; DEC <- <- <- <- |
00078 ;; Pin A ___|-------|_______ |
00079 ;; Pin B _______|-------|___ |
00080 ;; INC -> -> -> -> |
00081 ;; Bit 0 1 2 3 |
00082 ;; Ex.: Bit 76543210 |
00083 ;; DETENTED2 = 0b00100010 = 0x22 |
00084 ;; -> INC will be triggered on edge 1, DEC on edge 5 |
000000FF 00085 MIOS_ENC_MODE_NON_DETENTED EQU 0xff |
000000AA 00086 MIOS_ENC_MODE_DETENTED EQU 0xaa |
000000AA 00087 MIOS_ENC_MODE_DETENTED1 EQU 0xaa |
00000022 00088 MIOS_ENC_MODE_DETENTED2 EQU 0x22 |
00000088 00089 MIOS_ENC_MODE_DETENTED3 EQU 0x88 |
000000A5 00090 MIOS_ENC_MODE_DETENTED4 EQU 0xa5 |
0000005A 00091 MIOS_ENC_MODE_DETENTED5 EQU 0x5a |
00092 #endif |
00093 |
00094 ;; used by MIOS_ENC_Speed* |
00000000 00095 MIOS_ENC_SPEED_SLOW EQU 0 |
00000001 00096 MIOS_ENC_SPEED_NORMAL EQU 1 |
00000002 00097 MIOS_ENC_SPEED_FAST EQU 2 |
00098 |
00099 ;; used by MIOS_LCD_Type* |
00000000 00100 MIOS_LCD_TYPE_CLCD EQU 0x00 |
00000001 00101 MIOS_LCD_TYPE_GLCD0 EQU 0x01 |
00000002 00102 MIOS_LCD_TYPE_GLCD1 EQU 0x02 |
00000003 00103 MIOS_LCD_TYPE_GLCD2 EQU 0x03 |
00000004 00104 MIOS_LCD_TYPE_GLCD3 EQU 0x04 |
00000005 00105 MIOS_LCD_TYPE_GLCD4 EQU 0x05 |
00000006 00106 MIOS_LCD_TYPE_MLCD EQU 0x06 |
00000007 00107 MIOS_LCD_TYPE_GLCD_CUSTOM EQU 0x07 |
00108 |
00109 ;; location of default 5x8 font for graphical displays |
00007CFC 00110 MIOS_GLCD_FONT EQU 0x7cfc |
00111 |
00112 ;; general config flags (never overwrite this flags directly!!!) |
00000000 00113 MIOS_BOX_CFG0_LCD_TYPE0 EQU 0 ; selects LCD type, bit 0 |
00000001 00114 MIOS_BOX_CFG0_LCD_TYPE1 EQU 1 ; selects LCD type, bit 1 |
00000002 00115 MIOS_BOX_CFG0_LCD_TYPE2 EQU 2 ; selects LCD type, bit 2 |
00000003 00116 MIOS_BOX_CFG0_USE_GLCD EQU 3 ; if 1, graphical LCD is connected |
00000004 00117 MIOS_BOX_CFG0_MERGER EQU 4 ; if 1, MIDI merger is enabled |
00000005 00118 MIOS_BOX_CFG0_MBLINK EQU 5 ; if 1, MIDIbox Link is enabled |
00000006 00119 MIOS_BOX_CFG0_TO_HOST EQU 6 ; if 1, MIDI interface will run with 38400 baud instead of 31250 |
00000007 00120 MIOS_BOX_CFG0_20MHz EQU 7 ; if 1, it is assumed that box is running with 20 MHz, else with 40 MHz |
00121 |
00000000 00122 MIOS_BOX_CFG1_BS_A0 EQU 0 ; A0 of BankStick (never change the bit position) |
00000001 00123 MIOS_BOX_CFG1_BS_A1 EQU 1 ; A1 of BankStick (never change the bit position) |
00000002 00124 MIOS_BOX_CFG1_BS_A2 EQU 2 ; A2 of BankStick (never change the bit position) |
00000003 00125 MIOS_BOX_CFG1_BS_DIS_VERIFY EQU 3 ; if 1, writes to the BankStick will not be verified |
00000004 00126 MIOS_BOX_CFG1_IIC_STRETCH_CLK EQU 4 ; if 1, IIC clock stretching enabled |
00127 |
00128 ;; general status flags (never overwrite this flags directly!!!) |
00000000 00129 MIOS_BOX_STAT_BS_AVAILABLE EQU 0 ; if 1, BankStick is available |
00000001 00130 MIOS_BOX_STAT_MBLINK_TUNNEL_PASS EQU 1 ; if 1, a MBLinked event will be tunnled |
gpasm-0.13.7 beta setup_tia_cartridge.asm1-30-2014 10:42:05 PAGE 7 |
|
|
LOC OBJECT CODE LINE SOURCE TEXT |
VALUE |
|
00000002 00131 MIOS_BOX_STAT_SUSPEND_ALL EQU 2 ; if 1, all system and user tasks are suspended |
00000003 00132 MIOS_BOX_STAT_SUSPEND_USER EQU 3 ; if 1, all user tasks are suspended |
00000004 00133 MIOS_BOX_STAT_AUTOREPEAT EQU 4 ; if 1, start the auto-repeat handler |
00000005 00134 MIOS_BOX_STAT_MLCD_TRANSFER EQU 5 ; if 1, a transfer to the MLCD has been started |
00000006 00135 MIOS_BOX_STAT_FERR EQU 6 ; if 1, a frame error happened during MIDI receive |
00136 |
00137 ;; ========================================================================== |
00138 ;; MIOS Special Function Registers |
00139 ;; ========================================================================== |
00140 |
00000000 00141 MIOS_BOX_CFG0 EQU 0x000 |
00000001 00142 MIOS_BOX_CFG1 EQU 0x001 |
00000002 00143 MIOS_BOX_STAT EQU 0x002 |
00000003 00144 MIOS_PARAMETER1 EQU 0x003 |
00000004 00145 MIOS_PARAMETER2 EQU 0x004 |
00000005 00146 MIOS_PARAMETER3 EQU 0x005 |
00147 |
00148 ;; ========================================================================== |
00149 ;; temporary registers for main programs |
00150 ;; ========================================================================== |
00000006 00151 TMP1 EQU 0x006 |
00000007 00152 TMP2 EQU 0x007 |
00000008 00153 TMP3 EQU 0x008 |
00000009 00154 TMP4 EQU 0x009 |
0000000A 00155 TMP5 EQU 0x00a |
00156 |
00157 ;; ========================================================================== |
00158 ;; temporary registers for IRQs |
00159 ;; ========================================================================== |
0000000B 00160 IRQ_TMP1 EQU 0x00b |
0000000C 00161 IRQ_TMP2 EQU 0x00c |
0000000D 00162 IRQ_TMP3 EQU 0x00d |
0000000E 00163 IRQ_TMP4 EQU 0x00e |
0000000F 00164 IRQ_TMP5 EQU 0x00f |
00165 |
00166 ;; ========================================================================== |
00167 ;; free memory space for user application: |
00168 ;; ========================================================================== |
00169 ;; 0x010-0x37f |
00170 |
00171 ;; ========================================================================== |
00172 ;; MIOS System Registers -- not defined here -- |
00173 ;; never use these memory locations! |
00174 ;; ========================================================================== |
00175 ;; 0x380-0x6ff |
00176 |
00177 ;; ========================================================================== |
00178 ;; MIOS System Registers for custom LCD driver |
00179 ;; ========================================================================== |
00000570 00180 MIOS_GLCD_BUFFER EQU 0x570 ; note: the buffer must be located at ...0-...7 |
00000578 00181 MIOS_LCD_OPTION1 EQU 0x578 ; contains the first LCD option given by MIOS_LCD_TypeSet |
00000579 00182 MIOS_LCD_OPTION2 EQU 0x579 ; contains the second LCD option given by MIOS_LCD_TypeSet |
0000057A 00183 MIOS_LCD_CURSOR_POS EQU 0x57a ; the current cursor pos of characters (GLCD: multiplied by width) |
0000057B 00184 MIOS_GLCD_GCURSOR_X EQU 0x57b ; for GLCDs: the current X position of graphical cursor |
gpasm-0.13.7 beta setup_tia_cartridge.asm1-30-2014 10:42:05 PAGE 8 |
|
|
LOC OBJECT CODE LINE SOURCE TEXT |
VALUE |
|
0000057C 00185 MIOS_GLCD_GCURSOR_Y EQU 0x57c ; for GLCDs: the current Y position of graphical cursor |
0000057D 00186 MIOS_GLCD_FONT_WIDTH EQU 0x57d ; for GLCDs: the fontwidth given by MIOS_GLCD_FontInit |
0000057E 00187 MIOS_GLCD_FONT_HEIGHT EQU 0x57e ; for GLCDs: the fontheight given by MIOS_GLCD_FontInit |
0000057F 00188 MIOS_GLCD_FONT_X0 EQU 0x57f ; for GLCDs: the first byte within a char entry |
00000580 00189 MIOS_GLCD_FONT_OFFSET EQU 0x580 ; for GLCDs: the byte offset between the characters |
00000581 00190 MIOS_GLCD_FONT_PTRL EQU 0x581 ; for GLCDs: pointer to the character table, low-byte |
00000582 00191 MIOS_GLCD_FONT_PTRH EQU 0x582 ; for GLCDs: pointer to the character table, high-byte |
00000583 00192 MIOS_LCD_TIMEOUT0 EQU 0x583 ; can be used for timeout loops |
00000584 00193 MIOS_LCD_TIMEOUT1 EQU 0x584 ; can be used for timeout loops |
00000585 00194 MIOS_GLCD_TMP1 EQU 0x585 ; can be used as temporary buffer |
00000586 00195 MIOS_GLCD_TMP2 EQU 0x586 ; can be used as temporary buffer |
00000587 00196 MIOS_GLCD_TMP3 EQU 0x587 ; can be used as temporary buffer |
00000588 00197 MIOS_GLCD_TMP4 EQU 0x588 ; can be used as temporary buffer |
00000589 00198 MIOS_LCD_Y0_OFFSET EQU 0x589 ; Y0 offset of LCD |
0000058A 00199 MIOS_LCD_Y1_OFFSET EQU 0x58a ; Y1 offset of LCD |
0000058B 00200 MIOS_LCD_Y2_OFFSET EQU 0x58b ; Y2 offset of LCD |
0000058C 00201 MIOS_LCD_Y3_OFFSET EQU 0x58c ; Y3 offset of LCD |
0000058D 00202 MIOS_LCD_CURSOR_POS_REAL EQU 0x58d ; unmapped cursor position which has been set with MIOS_LCD_CursorSet |
0000058E 00203 MIOS_GLCD_FONT_PTRU EQU 0x58e ; for GLCDs: pointer to the character table, upper-byte (>64k flash derivatives only) |
00023 |
00024 ;; ---[ useful macros ]--- |
00025 #include <macros.h> |
00001 ; $Id: macros.h 49 2008-01-30 21:47:31Z tk $ |
00002 ; |
00003 ; Macro Definitions |
00004 ; |
00005 ; ========================================================================== |
00006 ; |
00007 ; Copyright 1998-2006 Thorsten Klose (tk@midibox.org) |
00008 ; Licensed for personal non-commercial use only. |
00009 ; All other rights reserved. |
00010 ; |
00011 ; ========================================================================== |
00012 |
00013 BRA_IFSET MACRO reg, bit, reg_a, label |
00014 btfsc reg, bit, reg_a |
00015 bra label |
00016 ENDM |
00017 |
00018 |
00019 BRA_IFCLR MACRO reg, bit, reg_a, label |
00020 btfss reg, bit, reg_a |
00021 bra label |
00022 ENDM |
00023 |
00024 GOTO_IFSET MACRO reg, bit, reg_a, label |
00025 btfsc reg, bit, reg_a |
00026 goto label |
00027 ENDM |
00028 |
00029 |
00030 GOTO_IFCLR MACRO reg, bit, reg_a, label |
00031 btfss reg, bit, reg_a |
00032 goto label |
gpasm-0.13.7 beta setup_tia_cartridge.asm1-30-2014 10:42:05 PAGE 9 |
|
|
LOC OBJECT CODE LINE SOURCE TEXT |
VALUE |
|
00033 ENDM |
00034 |
00035 CALL_IFSET MACRO reg, bit, reg_a, label |
00036 btfsc reg, bit, reg_a |
00037 call label |
00038 ENDM |
00039 |
00040 |
00041 CALL_IFCLR MACRO reg, bit, reg_a, label |
00042 btfss reg, bit, reg_a |
00043 call label |
00044 ENDM |
00045 |
00046 RCALL_IFSET MACRO reg, bit, reg_a, label |
00047 btfsc reg, bit, reg_a |
00048 rcall label |
00049 ENDM |
00050 |
00051 |
00052 RCALL_IFCLR MACRO reg, bit, reg_a, label |
00053 btfss reg, bit, reg_a |
00054 rcall label |
00055 ENDM |
00056 |
00057 ;; ========================================================================== |
00058 |
00059 IRQ_DISABLE MACRO |
00060 bcf INTCON, GIE |
00061 ENDM |
00062 |
00063 IRQ_ENABLE MACRO |
00064 bsf INTCON, GIE |
00065 ENDM |
00066 |
00067 ;; ========================================================================== |
00068 |
00069 TABLE_ADDR_FULL MACRO addr |
00070 movlw LOW(addr) ; store Lo Byte |
00071 movwf TBLPTRL |
00072 movlw HIGH(addr) ; store Hi Byte |
00073 movwf TBLPTRH |
00074 movlw UPPER(addr) ; store upper Byte |
00075 movwf TBLPTRU |
00076 ENDM |
00077 |
00078 TABLE_ADDR MACRO addr |
00079 movlw LOW(addr) ; store Lo Byte |
00080 movwf TBLPTRL |
00081 movlw HIGH(addr) ; store Hi Byte |
00082 movwf TBLPTRH |
00083 #if PIC_DERIVATIVE_CODE_SIZE > 0x10000 |
00084 movlw UPPER(addr) ; store Upper Byte |
00085 movwf TBLPTRU |
00086 #endif |
gpasm-0.13.7 beta setup_tia_cartridge.asm1-30-2014 10:42:05 PAGE 10 |
|
|
LOC OBJECT CODE LINE SOURCE TEXT |
VALUE |
|
00087 ENDM |
00088 |
00089 TABLE_H MACRO addr |
00090 movlw HIGH(addr) ; store Hi Byte |
00091 movwf TBLPTRH |
00092 ENDM |
00093 |
00094 TABLE_L MACRO addr |
00095 movlw LOW(addr) ; store Lo Byte |
00096 movwf TBLPTRL |
00097 ENDM |
00098 |
00099 TABLE_ADD_W MACRO |
00100 addwf TBLPTRL, F |
00101 movlw 0x00 |
00102 addwfc TBLPTRH, F |
00103 #if PIC_DERIVATIVE_CODE_SIZE > 0x10000 |
00104 movlw 0x00 |
00105 addwfc TBLPTRU, F |
00106 #endif |
00107 ENDM |
00108 |
00109 TABLE_ADDR_MUL_W MACRO addr, multiplicator |
00110 mullw multiplicator |
00111 movlw LOW(addr) |
00112 addwf PRODL, W |
00113 movwf TBLPTRL |
00114 movlw HIGH(addr) |
00115 addwfc PRODH, W |
00116 movwf TBLPTRH |
00117 #if PIC_DERIVATIVE_CODE_SIZE > 0x10000 |
00118 clrf TBLPTRU |
00119 movlw UPPER(addr) |
00120 addwfc TBLPTRU, F |
00121 #endif |
00122 ENDM |
00123 |
00124 ;; ========================================================================== |
00125 |
00126 JUMPTABLE_2BYTES MACRO max_value |
00127 addlw -(max_value) ; ensure that jump index is not greater than (max_value-1) |
00128 skpnc |
00129 movlw -(max_value) |
00130 addlw max_value |
00131 call MIOS_HLP_GetIndex_2bytes |
00132 ENDM |
00133 |
00134 JUMPTABLE_2BYTES_UNSECURE MACRO |
00135 call MIOS_HLP_GetIndex_2bytes |
00136 ENDM |
00137 |
00138 JUMPTABLE_4BYTES MACRO max_value |
00139 addlw -(max_value) ; ensure that jump index is not greater than (max_value-1) |
00140 skpnc |
gpasm-0.13.7 beta setup_tia_cartridge.asm1-30-2014 10:42:05 PAGE 11 |
|
|
LOC OBJECT CODE LINE SOURCE TEXT |
VALUE |
|
00141 return |
00142 addlw (max_value) |
00143 call MIOS_HLP_GetIndex_4bytes |
00144 ENDM |
00145 |
00146 JUMPTABLE_4BYTES_UNSECURE MACRO |
00147 call MIOS_HLP_GetIndex_4bytes |
00148 ENDM |
00149 |
00150 ;; ========================================================================== |
00151 |
00152 TWOBYTE_ENTRY MACRO low_byte, high_byte |
00153 dw (high_byte << 8) | (low_byte) |
00154 ENDM |
00155 |
00156 ;; ========================================================================== |
00157 |
0000 00158 #define skpnz btfsc STATUS, Z |
0000 00159 #define skpz btfss STATUS, Z |
0000 00160 #define skpndc btfsc STATUS, DC |
0000 00161 #define skpdc btfss STATUS, DC |
0000 00162 #define skpnc btfsc STATUS, C |
0000 00163 #define skpc btfss STATUS, C |
0000 00164 #define clrc bcf STATUS, C |
0000 00165 #define setc bsf STATUS, C |
0000 00166 #define clrz bcf STATUS, Z |
0000 00167 #define setz bsf STATUS, Z |
0000 00168 #define rrf rrcf |
0000 00169 #define rlf rlcf |
00170 |
00171 rgoto MACRO label |
00172 bra label |
00173 ENDM |
00174 |
00175 SET_BSR MACRO reg |
00176 movlb HIGH(reg) |
00177 ENDM |
00178 |
00179 ;; ========================================================================== |
00180 |
00181 FONT_ENTRY MACRO width, height, x0, char_offset |
00182 dw ((height) << 8) | (width), ((char_offset) << 8) | (x0) |
00183 ENDM |
00184 |
00185 ;; ========================================================================== |
00186 |
00187 STRING MACRO length, pos, str |
00188 da ((length) << 8) | (pos), str |
00189 ENDM |
00190 |
00191 ;; ========================================================================== |
00026 |
00027 ;; ---[ vectors to MIOS functions (never change!) ]--- |
00028 #include <mios_vectors.inc> |
gpasm-0.13.7 beta setup_tia_cartridge.asm1-30-2014 10:42:05 PAGE 12 |
|
|
LOC OBJECT CODE LINE SOURCE TEXT |
VALUE |
|
00001 ; $Id: mios_vectors.inc 49 2008-01-30 21:47:31Z tk $ |
00002 |
00002C00 00003 MIOS_MIDI_BeginStream EQU 0x2c00 |
00002C04 00004 MIOS_MIDI_DeviceIDAutoSet EQU 0x2c04 |
00002C08 00005 MIOS_MIDI_DeviceIDGet EQU 0x2c08 |
00002C0C 00006 MIOS_MIDI_DeviceIDSet EQU 0x2c0c |
00002C10 00007 MIOS_MIDI_EndStream EQU 0x2c10 |
00002C14 00008 MIOS_MIDI_Init EQU 0x2c14 |
00002C18 00009 MIOS_MIDI_InterfaceAutoSet EQU 0x2c18 |
00002C1C 00010 MIOS_MIDI_InterfaceGet EQU 0x2c1c |
00002C20 00011 MIOS_MIDI_InterfaceSet EQU 0x2c20 |
00002C24 00012 MIOS_MIDI_MergerGet EQU 0x2c24 |
00002C28 00013 MIOS_MIDI_MergerSet EQU 0x2c28 |
00002C2C 00014 MIOS_MIDI_RxBufferFree EQU 0x2c2c |
00002C30 00015 MIOS_MIDI_RxBufferGet EQU 0x2c30 |
00002C34 00016 MIOS_MIDI_RxBufferPut EQU 0x2c34 |
00002C38 00017 MIOS_MIDI_RxBufferUsed EQU 0x2c38 |
00002C3C 00018 MIOS_MIDI_TxBufferFlush EQU 0x2c3c |
00002C40 00019 MIOS_MIDI_TxBufferFree EQU 0x2c40 |
00002C44 00020 MIOS_MIDI_TxBufferGet EQU 0x2c44 |
00002C48 00021 MIOS_MIDI_TxBufferPut EQU 0x2c48 |
00002C4C 00022 MIOS_MIDI_TxBufferUsed EQU 0x2c4c |
00002C50 00023 MIOS_MPROC_MergerDisable EQU 0x2c50 |
00002C54 00024 MIOS_MPROC_MergerEnable EQU 0x2c54 |
00002C58 00025 MIOS_MPROC_MergerGet EQU 0x2c58 |
00002C5C 00026 MIOS_AIN_DeadbandGet EQU 0x2c5c |
00002C60 00027 MIOS_AIN_DeadbandSet EQU 0x2c60 |
00002C64 00028 MIOS_AIN_Muxed EQU 0x2c64 |
00002C68 00029 MIOS_AIN_NumberGet EQU 0x2c68 |
00002C6C 00030 MIOS_AIN_NumberSet EQU 0x2c6c |
00002C70 00031 MIOS_AIN_Pin7bitGet EQU 0x2c70 |
00002C74 00032 MIOS_AIN_PinGet EQU 0x2c74 |
00002C78 00033 MIOS_AIN_PinLSBGet EQU 0x2c78 |
00002C7C 00034 MIOS_AIN_PinMSBGet EQU 0x2c7c |
00002C80 00035 MIOS_AIN_UnMuxed EQU 0x2c80 |
00002C84 00036 MIOS_MF_PWM_DutyCycleDownGet EQU 0x2c84 |
00002C88 00037 MIOS_MF_PWM_DutyCycleDownSet EQU 0x2c88 |
00002C8C 00038 MIOS_MF_PWM_DutyCycleUpGet EQU 0x2c8c |
00002C90 00039 MIOS_MF_PWM_DutyCycleUpSet EQU 0x2c90 |
00002C94 00040 MIOS_MF_DeadbandGet EQU 0x2c94 |
00002C98 00041 MIOS_MF_DeadbandSet EQU 0x2c98 |
00002C9C 00042 MIOS_MF_Disable EQU 0x2c9c |
00002CA0 00043 MIOS_MF_Enable EQU 0x2ca0 |
00002CA4 00044 MIOS_MF_FaderMove EQU 0x2ca4 |
00002CA8 00045 MIOS_MF_SuspendDisable EQU 0x2ca8 |
00002CAC 00046 MIOS_MF_SuspendEnable EQU 0x2cac |
00002CB0 00047 MIOS_MF_SuspendGet EQU 0x2cb0 |
00002CB4 00048 MIOS_DIN_PinGet EQU 0x2cb4 |
00002CB8 00049 MIOS_DIN_SRGet EQU 0x2cb8 |
00002CBC 00050 MIOS_DOUT_PinGet EQU 0x2cbc |
00002CC0 00051 MIOS_DOUT_PinSet EQU 0x2cc0 |
00002CC4 00052 MIOS_DOUT_PinSet0 EQU 0x2cc4 |
00002CC8 00053 MIOS_DOUT_PinSet1 EQU 0x2cc8 |
00002CCC 00054 MIOS_DOUT_SRGet EQU 0x2ccc |
gpasm-0.13.7 beta setup_tia_cartridge.asm1-30-2014 10:42:05 PAGE 13 |
|
|
LOC OBJECT CODE LINE SOURCE TEXT |
VALUE |
|
00002CD0 00055 MIOS_DOUT_SRSet EQU 0x2cd0 |
00002CD4 00056 MIOS_ENC_Abs7bitAdd EQU 0x2cd4 |
00002CD8 00057 MIOS_ENC_Abs7bitGet EQU 0x2cd8 |
00002CDC 00058 MIOS_ENC_Abs7bitSet EQU 0x2cdc |
00002CE0 00059 MIOS_ENC_NumberGet EQU 0x2ce0 |
00002CE4 00060 MIOS_ENC_SpeedGet EQU 0x2ce4 |
00002CE8 00061 MIOS_ENC_SpeedSet EQU 0x2ce8 |
00002CEC 00062 MIOS_SRIO_NumberGet EQU 0x2cec |
00002CF0 00063 MIOS_SRIO_NumberSet EQU 0x2cf0 |
00002CF4 00064 MIOS_SRIO_TS_SensitivityGet EQU 0x2cf4 |
00002CF8 00065 MIOS_SRIO_TS_SensitivitySet EQU 0x2cf8 |
00002CFC 00066 MIOS_SRIO_UpdateFrqGet EQU 0x2cfc |
00002D00 00067 MIOS_SRIO_UpdateFrqSet EQU 0x2d00 |
00002D04 00068 MIOS_LCD_Clear EQU 0x2d04 |
00002D08 00069 MIOS_LCD_Cmd EQU 0x2d08 |
00002D0C 00070 MIOS_LCD_CursorGet EQU 0x2d0c |
00002D10 00071 MIOS_LCD_CursorSet EQU 0x2d10 |
00002D14 00072 MIOS_LCD_Data EQU 0x2d14 |
00002D18 00073 MIOS_LCD_Init EQU 0x2d18 |
00002D1C 00074 MIOS_LCD_PrintBCD1 EQU 0x2d1c |
00002D20 00075 MIOS_LCD_PrintBCD2 EQU 0x2d20 |
00002D24 00076 MIOS_LCD_PrintBCD3 EQU 0x2d24 |
00002D28 00077 MIOS_LCD_PrintChar EQU 0x2d28 |
00002D2C 00078 MIOS_LCD_PrintHex1 EQU 0x2d2c |
00002D30 00079 MIOS_LCD_PrintHex2 EQU 0x2d30 |
00002D34 00080 MIOS_LCD_PrintMessage EQU 0x2d34 |
00002D38 00081 MIOS_LCD_PrintPreconfString EQU 0x2d38 |
00002D3C 00082 MIOS_LCD_PrintString EQU 0x2d3c |
00002D40 00083 MIOS_LCD_TypeAutoSet EQU 0x2d40 |
00002D44 00084 MIOS_LCD_TypeGet EQU 0x2d44 |
00002D48 00085 MIOS_LCD_TypeSet EQU 0x2d48 |
00002D4C 00086 MIOS_LCD_YAddressGet EQU 0x2d4c |
00002D50 00087 MIOS_LCD_YAddressSet EQU 0x2d50 |
00002D54 00088 MIOS_GLCD_FontInit EQU 0x2d54 |
00002D58 00089 MIOS_GLCD_GCursorGet EQU 0x2d58 |
00002D5C 00090 MIOS_GLCD_GCursorSet EQU 0x2d5c |
00002D60 00091 MIOS_EEPROM_Read EQU 0x2d60 |
00002D64 00092 MIOS_EEPROM_Write EQU 0x2d64 |
00002D68 00093 MIOS_FLASH_Read EQU 0x2d68 |
00002D6C 00094 MIOS_FLASH_Write EQU 0x2d6c |
00002D70 00095 MIOS_BANKSTICK_Read EQU 0x2d70 |
00002D74 00096 MIOS_BANKSTICK_Write EQU 0x2d74 |
00002D78 00097 MIOS_TIMER_Init EQU 0x2d78 |
00002D7C 00098 MIOS_TIMER_Start EQU 0x2d7c |
00002D80 00099 MIOS_TIMER_Stop EQU 0x2d80 |
00002D84 00100 MIOS_HLP_AddressFromTable EQU 0x2d84 |
00002D88 00101 MIOS_HLP_GetBitANDMask EQU 0x2d88 |
00002D8C 00102 MIOS_HLP_GetBitORMask EQU 0x2d8c |
00002D90 00103 MIOS_HLP_GetIndex_2bytes EQU 0x2d90 |
00002D94 00104 MIOS_HLP_GetIndex_4bytes EQU 0x2d94 |
00002D98 00105 MIOS_HLP_IndirectJump EQU 0x2d98 |
00002D9C 00106 MIOS_Delay EQU 0x2d9c |
00002DA0 00107 MIOS_GPCounterGet EQU 0x2da0 |
00002DA4 00108 MIOS_Reset EQU 0x2da4 |
gpasm-0.13.7 beta setup_tia_cartridge.asm1-30-2014 10:42:05 PAGE 14 |
|
|
LOC OBJECT CODE LINE SOURCE TEXT |
VALUE |
|
00002DA8 00109 MIOS_SystemResume EQU 0x2da8 |
00002DAC 00110 MIOS_SystemSuspend EQU 0x2dac |
00002DB0 00111 MIOS_UserResume EQU 0x2db0 |
00002DB4 00112 MIOS_UserSuspend EQU 0x2db4 |
00002DB8 00113 MIOS_HLP_16bitAddSaturate EQU 0x2db8 |
00002DBC 00114 MIOS_DIN_PinAutoRepeatEnable EQU 0x2dbc |
00002DC0 00115 MIOS_DIN_PinAutoRepeatDisable EQU 0x2dc0 |
00002DC4 00116 MIOS_DIN_PinAutoRepeatGet EQU 0x2dc4 |
00002DC8 00117 MIOS_CLCD_SpecialCharInit EQU 0x2dc8 |
00002DCC 00118 MIOS_CLCD_SpecialCharsInit EQU 0x2dcc |
00002DD0 00119 MIOS_AIN_DynamicPrioSet EQU 0x2dd0 |
00002DD4 00120 MIOS_AIN_DynamicPrioGet EQU 0x2dd4 |
00002DD8 00121 MIOS_AIN_LastPinsGet EQU 0x2dd8 |
00002DDC 00122 MIOS_BANKSTICK_CtrlSet EQU 0x2ddc |
00002DE0 00123 MIOS_BANKSTICK_CtrlGet EQU 0x2de0 |
00002DE4 00124 MIOS_BANKSTICK_WritePage EQU 0x2de4 |
00002DE8 00125 MIOS_HLP_Dec2BCD EQU 0x2de8 |
00002DEC 00126 MIOS_LCD_PrintBCD4 EQU 0x2dec |
00002DF0 00127 MIOS_LCD_PrintBCD5 EQU 0x2df0 |
00002DF4 00128 MIOS_LCD_MessageStart EQU 0x2df4 |
00002DF8 00129 MIOS_LCD_MessageStop EQU 0x2df8 |
00002DFC 00130 MIOS_MF_PWM_PeriodGet EQU 0x2dfc |
00002E00 00131 MIOS_MF_PWM_PeriodSet EQU 0x2e00 |
00002E04 00132 MIOS_IIC_Start EQU 0x2e04 |
00002E08 00133 MIOS_IIC_Stop EQU 0x2e08 |
00002E0C 00134 MIOS_IIC_ByteSend EQU 0x2e0c |
00002E10 00135 MIOS_IIC_ByteReceive EQU 0x2e10 |
00002E14 00136 MIOS_IIC_AckSend EQU 0x2e14 |
00002E18 00137 MIOS_IIC_NakSend EQU 0x2e18 |
00002E1C 00138 MIOS_IIC_CtrlSet EQU 0x2e1c |
00002E20 00139 MIOS_IIC_CtrlGet EQU 0x2e20 |
00002E24 00140 MIOS_SRIO_DebounceSet EQU 0x2e24 |
00002E28 00141 MIOS_SRIO_DebounceGet EQU 0x2e28 |
00002E2C 00142 MIOS_MF_TouchDetectionReset EQU 0x2e2c |
00002E30 00143 MIOS_BANKSTICK_ReadPage EQU 0x2e30 |
00002E34 00144 MIOS_EEPROM_ReadPage EQU 0x2e34 |
00002E38 00145 MIOS_EEPROM_WritePage EQU 0x2e38 |
00002E3C 00146 MIOS_TIMER_ReInit EQU 0x2e3c |
00002E40 00147 MIOS_RESERVED_144 EQU 0x2e40 |
00002E44 00148 MIOS_RESERVED_145 EQU 0x2e44 |
00002E48 00149 MIOS_RESERVED_146 EQU 0x2e48 |
00002E4C 00150 MIOS_RESERVED_147 EQU 0x2e4c |
00002E50 00151 MIOS_RESERVED_148 EQU 0x2e50 |
00002E54 00152 MIOS_RESERVED_149 EQU 0x2e54 |
00002E58 00153 MIOS_RESERVED_150 EQU 0x2e58 |
00002E5C 00154 MIOS_RESERVED_151 EQU 0x2e5c |
00002E60 00155 MIOS_RESERVED_152 EQU 0x2e60 |
00002E64 00156 MIOS_RESERVED_153 EQU 0x2e64 |
00002E68 00157 MIOS_RESERVED_154 EQU 0x2e68 |
00002E6C 00158 MIOS_RESERVED_155 EQU 0x2e6c |
00002E70 00159 MIOS_RESERVED_156 EQU 0x2e70 |
00002E74 00160 MIOS_RESERVED_157 EQU 0x2e74 |
00002E78 00161 MIOS_RESERVED_158 EQU 0x2e78 |
00002E7C 00162 MIOS_RESERVED_159 EQU 0x2e7c |
gpasm-0.13.7 beta setup_tia_cartridge.asm1-30-2014 10:42:05 PAGE 15 |
|
|
LOC OBJECT CODE LINE SOURCE TEXT |
VALUE |
|
00002E80 00163 MIOS_RESERVED_160 EQU 0x2e80 |
00002E84 00164 MIOS_RESERVED_161 EQU 0x2e84 |
00002E88 00165 MIOS_RESERVED_162 EQU 0x2e88 |
00002E8C 00166 MIOS_RESERVED_163 EQU 0x2e8c |
00002E90 00167 MIOS_RESERVED_164 EQU 0x2e90 |
00002E94 00168 MIOS_RESERVED_165 EQU 0x2e94 |
00002E98 00169 MIOS_RESERVED_166 EQU 0x2e98 |
00002E9C 00170 MIOS_RESERVED_167 EQU 0x2e9c |
00002EA0 00171 MIOS_RESERVED_168 EQU 0x2ea0 |
00002EA4 00172 MIOS_RESERVED_169 EQU 0x2ea4 |
00002EA8 00173 MIOS_RESERVED_170 EQU 0x2ea8 |
00002EAC 00174 MIOS_RESERVED_171 EQU 0x2eac |
00002EB0 00175 MIOS_RESERVED_172 EQU 0x2eb0 |
00002EB4 00176 MIOS_RESERVED_173 EQU 0x2eb4 |
00002EB8 00177 MIOS_RESERVED_174 EQU 0x2eb8 |
00002EBC 00178 MIOS_RESERVED_175 EQU 0x2ebc |
00002EC0 00179 MIOS_RESERVED_176 EQU 0x2ec0 |
00002EC4 00180 MIOS_RESERVED_177 EQU 0x2ec4 |
00002EC8 00181 MIOS_RESERVED_178 EQU 0x2ec8 |
00002ECC 00182 MIOS_RESERVED_179 EQU 0x2ecc |
00002ED0 00183 MIOS_RESERVED_180 EQU 0x2ed0 |
00002ED4 00184 MIOS_RESERVED_181 EQU 0x2ed4 |
00002ED8 00185 MIOS_RESERVED_182 EQU 0x2ed8 |
00002EDC 00186 MIOS_RESERVED_183 EQU 0x2edc |
00002EE0 00187 MIOS_RESERVED_184 EQU 0x2ee0 |
00002EE4 00188 MIOS_RESERVED_185 EQU 0x2ee4 |
00002EE8 00189 MIOS_RESERVED_186 EQU 0x2ee8 |
00002EEC 00190 MIOS_RESERVED_187 EQU 0x2eec |
00002EF0 00191 MIOS_RESERVED_188 EQU 0x2ef0 |
00002EF4 00192 MIOS_RESERVED_189 EQU 0x2ef4 |
00002EF8 00193 MIOS_RESERVED_190 EQU 0x2ef8 |
00002EFC 00194 MIOS_RESERVED_191 EQU 0x2efc |
00002F00 00195 MIOS_RESERVED_192 EQU 0x2f00 |
00002F04 00196 MIOS_RESERVED_193 EQU 0x2f04 |
00002F08 00197 MIOS_RESERVED_194 EQU 0x2f08 |
00002F0C 00198 MIOS_RESERVED_195 EQU 0x2f0c |
00002F10 00199 MIOS_RESERVED_196 EQU 0x2f10 |
00002F14 00200 MIOS_RESERVED_197 EQU 0x2f14 |
00002F18 00201 MIOS_RESERVED_198 EQU 0x2f18 |
00002F1C 00202 MIOS_RESERVED_199 EQU 0x2f1c |
00002F20 00203 MIOS_RESERVED_200 EQU 0x2f20 |
00002F24 00204 MIOS_RESERVED_201 EQU 0x2f24 |
00002F28 00205 MIOS_RESERVED_202 EQU 0x2f28 |
00002F2C 00206 MIOS_RESERVED_203 EQU 0x2f2c |
00002F30 00207 MIOS_RESERVED_204 EQU 0x2f30 |
00002F34 00208 MIOS_RESERVED_205 EQU 0x2f34 |
00002F38 00209 MIOS_RESERVED_206 EQU 0x2f38 |
00002F3C 00210 MIOS_RESERVED_207 EQU 0x2f3c |
00002F40 00211 MIOS_RESERVED_208 EQU 0x2f40 |
00002F44 00212 MIOS_RESERVED_209 EQU 0x2f44 |
00002F48 00213 MIOS_RESERVED_210 EQU 0x2f48 |
00002F4C 00214 MIOS_RESERVED_211 EQU 0x2f4c |
00002F50 00215 MIOS_RESERVED_212 EQU 0x2f50 |
00002F54 00216 MIOS_RESERVED_213 EQU 0x2f54 |
gpasm-0.13.7 beta setup_tia_cartridge.asm1-30-2014 10:42:05 PAGE 16 |
|
|
LOC OBJECT CODE LINE SOURCE TEXT |
VALUE |
|
00002F58 00217 MIOS_RESERVED_214 EQU 0x2f58 |
00002F5C 00218 MIOS_RESERVED_215 EQU 0x2f5c |
00002F60 00219 MIOS_RESERVED_216 EQU 0x2f60 |
00002F64 00220 MIOS_RESERVED_217 EQU 0x2f64 |
00002F68 00221 MIOS_RESERVED_218 EQU 0x2f68 |
00002F6C 00222 MIOS_RESERVED_219 EQU 0x2f6c |
00002F70 00223 MIOS_RESERVED_220 EQU 0x2f70 |
00002F74 00224 MIOS_RESERVED_221 EQU 0x2f74 |
00002F78 00225 MIOS_RESERVED_222 EQU 0x2f78 |
00002F7C 00226 MIOS_RESERVED_223 EQU 0x2f7c |
00002F80 00227 MIOS_RESERVED_224 EQU 0x2f80 |
00002F84 00228 MIOS_RESERVED_225 EQU 0x2f84 |
00002F88 00229 MIOS_RESERVED_226 EQU 0x2f88 |
00002F8C 00230 MIOS_RESERVED_227 EQU 0x2f8c |
00002F90 00231 MIOS_RESERVED_228 EQU 0x2f90 |
00002F94 00232 MIOS_RESERVED_229 EQU 0x2f94 |
00002F98 00233 MIOS_RESERVED_230 EQU 0x2f98 |
00002F9C 00234 MIOS_RESERVED_231 EQU 0x2f9c |
00002FA0 00235 MIOS_RESERVED_232 EQU 0x2fa0 |
00002FA4 00236 MIOS_RESERVED_233 EQU 0x2fa4 |
00002FA8 00237 MIOS_RESERVED_234 EQU 0x2fa8 |
00002FAC 00238 MIOS_RESERVED_235 EQU 0x2fac |
00002FB0 00239 MIOS_RESERVED_236 EQU 0x2fb0 |
00002FB4 00240 MIOS_RESERVED_237 EQU 0x2fb4 |
00002FB8 00241 MIOS_RESERVED_238 EQU 0x2fb8 |
00002FBC 00242 MIOS_RESERVED_239 EQU 0x2fbc |
00002FC0 00243 MIOS_RESERVED_240 EQU 0x2fc0 |
00002FC4 00244 MIOS_RESERVED_241 EQU 0x2fc4 |
00002FC8 00245 MIOS_RESERVED_242 EQU 0x2fc8 |
00002FCC 00246 MIOS_RESERVED_243 EQU 0x2fcc |
00002FD0 00247 MIOS_RESERVED_244 EQU 0x2fd0 |
00002FD4 00248 MIOS_RESERVED_245 EQU 0x2fd4 |
00002FD8 00249 MIOS_RESERVED_246 EQU 0x2fd8 |
00002FDC 00250 MIOS_RESERVED_247 EQU 0x2fdc |
00002FE0 00251 MIOS_RESERVED_248 EQU 0x2fe0 |
00002FE4 00252 MIOS_RESERVED_249 EQU 0x2fe4 |
00002FE8 00253 MIOS_RESERVED_250 EQU 0x2fe8 |
00002FEC 00254 MIOS_RESERVED_251 EQU 0x2fec |
00002FF0 00255 MIOS_RESERVED_252 EQU 0x2ff0 |
00002FF4 00256 MIOS_RESERVED_253 EQU 0x2ff4 |
00002FF8 00257 MIOS_RESERVED_254 EQU 0x2ff8 |
00002FFC 00258 MIOS_RESERVED_255 EQU 0x2ffc |
00029 |
00030 ;; ---[ user hooks (never change!) ]--- |
00031 #include <user_vectors.inc> |
00001 ; $Id: user_vectors.inc 49 2008-01-30 21:47:31Z tk $ |
00002 ; |
00003 ; User vectortable - contains user hooks to MIOS |
00004 ; |
00005 ; ========================================================================== |
00006 ; |
00007 ; Copyright 1998-2006 Thorsten Klose (tk@midibox.org) |
00008 ; Licensed for personal non-commercial use only. |
00009 ; All other rights reserved. |
gpasm-0.13.7 beta setup_tia_cartridge.asm1-30-2014 10:42:05 PAGE 17 |
|
|
LOC OBJECT CODE LINE SOURCE TEXT |
VALUE |
|
00010 ; |
00011 ; ========================================================================== |
00012 |
00013 ;; never change the origin or the order of entries! |
3000 00014 org 0x3000 |
3000 00015 _User_Init |
3000 EF87 F019 00016 goto USER_Init |
3004 00017 _USER_Tick |
3004 EFA9 F019 00018 goto USER_Tick |
3008 00019 _USER_Timer |
3008 EFB2 F019 00020 goto USER_Timer |
300C 00021 _USER_MPROC_DebugTrigger |
300C EFB5 F019 00022 goto USER_MPROC_DebugTrigger |
3010 00023 _USER_DISPLAY_Init |
3010 EFB6 F019 00024 goto USER_DISPLAY_Init |
3014 00025 _USER_DISPLAY_Tick |
3014 EFB7 F019 00026 goto USER_DISPLAY_Tick |
3018 00027 _USER_SR_Service_Prepare |
3018 EFDB F019 00028 goto USER_SR_Service_Prepare |
301C 00029 _USER_SR_Service_Finish |
301C EFDC F019 00030 goto USER_SR_Service_Finish |
3020 00031 _USER_DIN_NotifyToggle |
3020 EFD9 F019 00032 goto USER_DIN_NotifyToggle |
3024 00033 _USER_ENC_NotifyChange |
3024 EFDA F019 00034 goto USER_ENC_NotifyChange |
3028 00035 _USER_AIN_NotifyChange |
3028 EFDD F019 00036 goto USER_AIN_NotifyChange |
302C 00037 _USER_MPROC_NotifyReceivedByte |
302C EFC3 F019 00038 goto USER_MPROC_NotifyReceivedByte |
3030 00039 _USER_MPROC_NotifyTimeout |
3030 EFC0 F019 00040 goto USER_MPROC_NotifyTimeout |
3034 00041 _USER_MPROC_NotifyReceivedEvent |
3034 EFBC F019 00042 goto USER_MPROC_NotifyReceivedEvent |
3038 00043 _USER_MPROC_NotifyFoundEvent |
3038 EFBF F019 00044 goto USER_MPROC_NotifyFoundEvent |
303C 00045 _USER_LCD_Init |
303C EF80 F019 00046 goto USER_LCD_Init |
3040 00047 _USER_LCD_Clear |
3040 EF81 F019 00048 goto USER_LCD_Clear |
3044 00049 _USER_LCD_CursorSet |
3044 EF82 F019 00050 goto USER_LCD_CursorSet |
3048 00051 _USER_LCD_PrintChar |
3048 EF83 F019 00052 goto USER_LCD_PrintChar |
304C 00053 _USER_MIDI_NotifyRx |
304C EFC9 F019 00054 goto USER_MIDI_NotifyRx |
3050 00055 _USER_MIDI_NotifyTx |
3050 EFC6 F019 00056 goto USER_MIDI_NotifyTx |
3054 00057 _USER_LCD_Data |
3054 EF84 F019 00058 goto USER_LCD_Data |
3058 00059 _USER_LCD_Cmd |
3058 EF85 F019 00060 goto USER_LCD_Cmd |
305C 00061 _USER_LCD_SpecialCharInit |
305C EF86 F019 00062 goto USER_LCD_SpecialCharInit |
3060 00063 USER_RESERVED_25 |
gpasm-0.13.7 beta setup_tia_cartridge.asm1-30-2014 10:42:05 PAGE 18 |
|
|
LOC OBJECT CODE LINE SOURCE TEXT |
VALUE |
|
3060 0012 00064 return |
3062 0000 00065 nop |
3064 00066 USER_RESERVED_26 |
3064 0012 00067 return |
3066 0000 00068 nop |
3068 00069 USER_RESERVED_27 |
3068 0012 00070 return |
306A 0000 00071 nop |
306C 00072 USER_RESERVED_28 |
306C 0012 00073 return |
306E 0000 00074 nop |
3070 00075 USER_RESERVED_29 |
3070 0012 00076 return |
3072 0000 00077 nop |
3074 00078 USER_RESERVED_30 |
3074 0012 00079 return |
3076 0000 00080 nop |
3078 00081 USER_RESERVED_31 |
3078 0012 00082 return |
307A 0000 00083 nop |
307C 00084 USER_RESERVED_32 |
307C 0012 00085 return |
307E 0000 00086 nop |
00032 |
00033 ;; ---[ variables used by application ]--- |
00034 #include "app_defines.h" |
00001 ; $Id: app_defines.h bdupeyron.tech@gmail.com(Antichambre) |
00002 ; |
00003 ; Specific Defines and variables of MIOS Application |
00004 ; |
00005 ; ========================================================================== |
00006 ; |
00007 ; Copyright 1998-2006 Thorsten Klose (tk@midibox.org) |
00008 ; Licensed for personal non-commercial use only. |
00009 ; All other rights reserved. |
00010 ; |
00011 ; ========================================================================== |
00012 |
3080 00013 #define TIA_STAT_ENGINE_DISABLE 0 ; if set, TIA tick and TIA interrupt will not be processed |
3080 00014 #define TIA_STAT_FORCE_REFRESH 1 ; if set, a refresh will be forced with next TIA_Tick |
3080 00015 #define TIA_STAT_CC_DUMP_REQ 2 ; if set, a CC dump will be sent |
3080 00016 #define TIA_STAT_SAVED_GIE 3 ; save the GIE bit for nested interrupt disables |
3080 00017 #define TIA_STAT_TRIGGER_RESET 4 ; if set, the TIA will be reset with next TIA_Tick |
00018 |
00019 ;; ========================================================================== |
00020 |
3080 00021 #define TIA_PLAY_MODE_POLY 0 |
3080 00022 #define TIA_PLAY_MODE_SUS_KEY 1 |
3080 00023 #define TIA_PLAY_MODE_LEGATO_OFF 2 |
3080 00024 #define TIA_PLAY_MODE_ONLY_WT_OFF 3 |
00025 |
00026 ;; ========================================================================== |
3080 00027 #define TIA_MIDI_SYNC_SEND_CLK 0 ; send MIDI clock |
3080 00028 #define TIA_MIDI_SYNC_F8 4 ; bit 4 notifies a received MIDI clock |
gpasm-0.13.7 beta setup_tia_cartridge.asm1-30-2014 10:42:05 PAGE 19 |
|
|
LOC OBJECT CODE LINE SOURCE TEXT |
VALUE |
|
3080 00029 #define TIA_MIDI_SYNC_FA 5 ; bit 5 notifies a received MIDI clock start |
3080 00030 #define TIA_MIDI_SYNC_TICK_1 6 ; bit 6 notifies that the TIA_SW engine should be clocked with common resolution |
3080 00031 #define TIA_MIDI_SYNC_TICK_2 7 ; bit 7 notifies that the TIA_SW engine should be clocked with double resolution |
00032 |
00033 ;; ========================================================================== |
00034 |
3080 00035 #define TIA_MOD_SYNC_LFO1 0 ; sync LFO1 |
3080 00036 #define TIA_MOD_SYNC_LFO2 1 ; sync LFO2 |
3080 00037 #define TIA_MOD_SYNC_LFO3 2 ; sync LFO3 |
3080 00038 #define TIA_MOD_SYNC_LFO4 3 ; sync LFO4 |
3080 00039 #define TIA_MOD_SYNC_ENV1 4 ; sync ENV1 |
3080 00040 #define TIA_MOD_SYNC_ENV2 5 ; sync ENV2 |
00041 |
00042 ;; ========================================================================== |
00043 |
3080 00044 #define BANKSTICK_MAGIC0 0x83; magic numbers - if they don't exists in bankstick at BANK_MAGIC_ADDRESS, |
3080 00045 #define BANKSTICK_MAGICP 0x12 ; the stick will be ignored until it has been formatted |
3080 00046 #define BANKSTICK_MAGICK BANKSTICK_MAGICP+1 ; the stick will be ignored until it has been formatted |
00047 |
00048 ;; ========================================================================== |
00049 |
3080 00050 #define REG_TEMP_TEST_FLAG 0 |
3080 00051 #define REG_TEMP_UP_FLAG 1 |
3080 00052 #define REG_TEMP_DOWN_FLAG 2 |
00053 |
00054 #if DEFAULT_TIA_DEBUG_ON == 1 |
00055 ;;#if DEFAULT_TIA_DEBUG_BS == 1 ;; for BankStick |
3080 00056 #define TIA_DEBUG_EE_FLAG 0 ;;REGA flag |
3080 00057 #define TIA_DEBUG_EE_RW 1 ;;REGA RW:0=Read/1=Write |
3080 00058 #define TIA_DEBUG_EE_PAGE 2 ;;REGA RW:0=One byte/1=One Page(64 bytes) |
3080 00059 #define TIA_DEBUG_EE_ERROR 3 ;;REGA 0=No Error/1=Error |
3080 00060 #define TIA_DEBUG_EE_READONLY 4 ;;REGA RW:0=No Error/1=Error |
3080 00061 #define TIA_DEBUG_EE_WRERR 5 ;;REGA 0=No Error/1=Error |
3080 00062 #define TIA_DEBUG_EE_PINIT 6 ;;REGA RW:0=No Error/1=Error |
3080 00063 #define TIA_DEBUG_EE_SYX 7 ;;REGA RW:0=No Error/1=Error |
00064 |
3080 00065 #define TIA_DEBUG_EE_PK 0 ;;REGB 0=Patch/1=Kit/Wavetable |
3080 00066 #define TIA_DEBUG_EE_WT 1 ;;REGB 0=Kit/1=Wavetable |
3080 00067 #define TIA_DEBUG_BS_RWCHK 2 ;;REGB 0=Read/Write/1=Check |
3080 00068 #define TIA_DEBUG_BS_SIZE 3 ;;REGB 0=Internal/1=External |
3080 00069 #define TIA_DEBUG_BS_INTEXT 4 ;;REGB Chk:0=32k/1=64k |
3080 00070 #define TIA_DEBUG_BS_FORMAT 5 ;;REGB Chk:0=Connected! Ok/1=Reformated! |
3080 00071 #define TIA_DEBUG_BS_FPROTECT 6 ;;REGB Chk:format protected |
3080 00072 #define TIA_DEBUG_BS_TPROTECT 7 ;;REGB Chk:type protected |
3080 00073 #define TIA_DEBUG_BS_READY 5 ;;REGB Chk:bankstick ready |
00074 ;;#endif |
00075 #endif |
00076 |
00077 ;; ========================================================================== |
00078 ;; free memory for user applications: |
00079 ;; 0x010-0x37f |
00080 |
00081 ;; ========================================================================== |
00082 ;; General TIA Control Variables in ACCESS page |
gpasm-0.13.7 beta setup_tia_cartridge.asm1-30-2014 10:42:05 PAGE 20 |
|
|
LOC OBJECT CODE LINE SOURCE TEXT |
VALUE |
|
00083 ;; ========================================================================== |
00000010 00084 TIA_STAT EQU 0x010 |
00085 |
00000011 00086 TIA_BANK EQU 0x011 |
00000012 00087 TIA_PRESET EQU 0x012 |
00000013 00088 TIA_PATCH EQU 0x013 |
00000014 00089 TIA_PBANK EQU 0x014 |
00000015 00090 TIA_KIT EQU 0x015 |
00000016 00091 TIA_KBANK EQU 0x016 |
00000017 00092 TIA_WT EQU 0x017 |
00000018 00093 TIA_WBANK EQU 0x018 |
00000019 00094 TIA_BANKSTICK_CHK_CTR EQU 0x019 |
0000001A 00095 TIA_BANKSTICK_ID EQU 0x01a |
0000001B 00096 TIA_BANKSTICK_RDY EQU 0x01b |
0000001C 00097 TIA_BANKSTICK_STAT EQU 0x01c |
0000001D 00098 TIA_BANKSTICK_SIZE EQU 0x01d |
00099 |
00000020 00100 TIA_MIDI_DEVICE EQU 0x020 |
00101 |
00102 ;; ========================================================================== |
00103 ;; Variables used by the MIDI processor in tia_sysex.inc |
00104 ;; ========================================================================== |
00000021 00105 TIA_SYSEX_STATE EQU 0x021 |
00000022 00106 TIA_SYSEX_ACTION EQU 0x022 |
00000023 00107 TIA_SYSEX_IN EQU 0x023 |
00000024 00108 TIA_SYSEX_CHECKSUM EQU 0x024 |
00000025 00109 TIA_SYSEX_ADDRESS EQU 0x025 |
00000026 00110 TIA_SYSEX_ERROR EQU 0x026 |
00111 |
00112 ;; ========================================================================== |
00113 ;; free: 0x27-0x5a |
00114 |
00115 ;;temporary |
00000030 00116 REG_TEMP EQU 0x030 |
00000031 00117 REG_TEMP2 EQU 0x031 |
00000032 00118 REG_TEMP3 EQU 0x032 |
00000033 00119 REG_TEMP4 EQU 0x033 |
00120 |
00000034 00121 REG_TEMP5 EQU 0x034 |
00000035 00122 REG_TEMP6 EQU 0x035 |
00123 ;; ========================================================================== |
00124 |
00125 #if DEFAULT_TIA_DEBUG_ON == 1 |
00126 #if DEFAULT_TIA_DEBUG_BS == 1 ;; for BankStick |
0000005B 00127 TIA_DEBUG_BS_REGA EQU 0x05b |
0000005C 00128 TIA_DEBUG_BS_REG1 EQU 0x05c |
0000005D 00129 TIA_DEBUG_BS_REG2 EQU 0x05d |
0000005E 00130 TIA_DEBUG_BS_REG3 EQU 0x05e |
0000005F 00131 TIA_DEBUG_BS_REG4 EQU 0x05f |
00000060 00132 TIA_DEBUG_BS_REG5 EQU 0x060 |
00000061 00133 TIA_DEBUG_BS_REG6 EQU 0x061 |
00000062 00134 TIA_DEBUG_BS_REGB EQU 0x062 |
00000063 00135 TIA_DEBUG_BS_REG9 EQU 0x063 |
00136 #endif |
gpasm-0.13.7 beta setup_tia_cartridge.asm1-30-2014 10:42:05 PAGE 21 |
|
|
LOC OBJECT CODE LINE SOURCE TEXT |
VALUE |
|
00137 #if DEFAULT_TIA_DEBUG_EE == 1 ;; for BankStick |
00000064 00138 TIA_DEBUG_EE_REGA EQU 0x064 |
00000065 00139 TIA_DEBUG_EE_REG1 EQU 0x065 |
00000066 00140 TIA_DEBUG_EE_REG2 EQU 0x066 |
00141 #endif |
00142 #endif |
00143 |
00144 ;; ========================================================================== |
00145 |
00000067 00146 MIDI_RXTX_RX_CTR EQU 0x067 |
00000068 00147 MIDI_RXTX_TX_CTR EQU 0x068 |
00000069 00148 MIDI_RXTX_BEAT_CTR EQU 0x069 |
00149 |
00150 ;; ========================================================================== |
00151 |
0000006A 00152 TIA_LEDMTR_STAT EQU 0x06a |
0000006B 00153 TIA_LEDMTR_VALUE EQU 0x06b |
00154 |
00155 ;; ========================================================================== |
00156 |
0000006C 00157 AOUT_FILTER_TMP_L EQU 0x06c ; used in tia_sw.inc as temporary storage for [filter value |
0000006D 00158 AOUT_FILTER_TMP_H EQU 0x06d |
00159 |
00160 ;; ========================================================================== |
00161 |
0000006E 00162 AOUT_INVERTED EQU 0x06e |
0000006F 00163 AOUT_UPDATE_REQ EQU 0x06f |
00000070 00164 AOUT_VALUES EQU 0x070 ; ..0x07f (8 * 16bit words) |
00165 |
00166 ;; ========================================================================== |
00167 ;; note: 0x080-0x0ff used by CS_TIAS1 |
00168 ;; ========================================================================== |
00169 ;; a lot of TIA control variables in BANKED page |
00170 ;; ========================================================================== |
00000100 00171 TIA_SW_CLEAR_BEGIN EQU 0x100 ; used to initialize the whole TIA_SW memory |
000001FF 00172 TIA_SW_CLEAR_END EQU 0x1ff ; also used as 256 byte download buffer (!) |
00173 |
00000100 00174 TIA_BASE EQU 0x100 ; address space of TIA chip (used: 0x00-0x05) |
00175 |
00000100 00176 TIA_AUDC0 EQU TIA_BASE+0x00 ;; control. for voice 1 (Aud0) |
00000101 00177 TIA_AUDC1 EQU TIA_BASE+0x01 ;; control. for voice 2 (Aud1) |
00000102 00178 TIA_AUDF0 EQU TIA_BASE+0x02 ;; freq. for voice 1 (Aud0) |
00000103 00179 TIA_AUDF1 EQU TIA_BASE+0x03 ;; freq. for voice 2 (Aud1) |
00000104 00180 TIA_AUDV0 EQU TIA_BASE+0x04 ;; vol. for voice 1 (Aud0) |
00000105 00181 TIA_AUDV1 EQU TIA_BASE+0x05 ;; vol. for voice 2 (Aud1) |
00182 |
0000010B 00183 TIA_MASTER_VOL EQU TIA_BASE+0x0b ; internal TIA_SW register |
0000010C 00184 TIA_PLAY_MODE EQU TIA_BASE+0x0c ; internal TIA_SW register |
0000010D 00185 TIA_SE_OPTION EQU TIA_BASE+0x0d ; internal TIA_SW register |
0000010E 00186 TIA_SW_VOICE EQU TIA_BASE+0x0e ; internal TIA_SW register |
0000010F 00187 TIA_SW_LFO_NUMBER EQU TIA_BASE+0x0f ; internal TIA_SW register |
0000010F 00188 TIA_SW_ENV_NUMBER EQU TIA_SW_LFO_NUMBER |
00189 |
0000010F 00190 TIA_BASE_END EQU 0x10f |
gpasm-0.13.7 beta setup_tia_cartridge.asm1-30-2014 10:42:05 PAGE 22 |
|
|
LOC OBJECT CODE LINE SOURCE TEXT |
VALUE |
|
00191 |
00192 ;; ========================================================================== |
00193 |
00000110 00194 TIA_SHADOW_BASE EQU 0x110 ; shadow addresses, necessary to determine changes (used: 0x00-0x05) |
00195 |
00196 ;; (TIA_SHADOW_BASE + 0x00) to (TIA_SHADOW_BASE + 0x05) allocated by shadow registers |
00197 |
0000011C 00198 TIA_LFO_RANDOM_SEED_L EQU TIA_SHADOW_BASE+0x0c ; internal TIA_SW register |
0000011D 00199 TIA_LFO_RANDOM_SEED_H EQU TIA_SHADOW_BASE+0x0d ; internal TIA_SW register |
0000011E 00200 TIA_ENVx_CURVES EQU TIA_SHADOW_BASE+0x0e ; internal TIA_SW register |
0000011F 00201 TIA_MOD_SYNC EQU TIA_SHADOW_BASE+0x0f ; internal TIA_SW register |
00202 |
0000011F 00203 TIA_SHADOW_END EQU 0x11f |
00204 |
00205 ;; ========================================================================== |
00206 |
00000040 00207 TIA_Vx_RECORD_LEN EQU 64 ;; 64 Max |
00208 |
00000000 00209 TIA_Vx_MIDI_CHANNEL EQU 0x00 |
00000001 00210 TIA_Vx_SPLIT_LOWER EQU 0x01 |
00000002 00211 TIA_Vx_SPLIT_UPPER EQU 0x02 |
00000003 00212 TIA_Vx_STAT EQU 0x03 |
00000004 00213 TIA_Vx_MODE EQU 0x04 ; Always follow TIA_Vx_STAT |
00000005 00214 TIA_Vx_KEY_OFFSET EQU 0x05 |
00000006 00215 TIA_Vx_KEY_LENGTH EQU 0x06 |
00000007 00216 TIA_Vx_TARGET_FRQ_L EQU 0x07 |
00000008 00217 TIA_Vx_TARGET_FRQ_H EQU 0x08 |
00000009 00218 TIA_Vx_FRQ_L EQU 0x09 |
0000000A 00219 TIA_Vx_FRQ_H EQU 0x0a |
0000000B 00220 TIA_Vx_PITCHBENDER EQU 0x0b |
0000000C 00221 TIA_Vx_TRANSPOSE EQU 0x0c |
0000000D 00222 TIA_Vx_PITCHRANGE EQU 0x0d |
0000000E 00223 TIA_Vx_PORTA_RATE EQU 0x0e |
0000000F 00224 TIA_Vx_VOLUME EQU 0x0f |
00000010 00225 TIA_Vx_NOTE EQU 0x10 |
00000011 00226 TIA_Vx_NOTE_DELAY EQU 0x11 |
00000012 00227 TIA_Vx_NOTE_DELAY_CTR EQU 0x12 |
00000013 00228 TIA_Vx_ARP_RATE EQU 0x13 |
00000014 00229 TIA_Vx_ARP_NOTE_NUMBER EQU 0x14 |
00000015 00230 TIA_Vx_ARP_CTR EQU 0x15 |
00000016 00231 TIA_Vx_PITCH_MOD EQU 0x16 |
00000017 00232 TIA_Vx_AMP_MOD EQU 0x17 |
00000018 00233 TIA_Vx_SPARE EQU 0x18 |
00234 |
00000019 00235 TIA_Vx_SPARE1 EQU 0x19 ; allocated |
0000001A 00236 TIA_Vx_SPARE2 EQU 0x1a ; only free of constant time portamento not activated |
0000001B 00237 TIA_Vx_SPARE3 EQU 0x1b ; only free of constant time portamento not activated |
0000001C 00238 TIA_Vx_SPARE4 EQU 0x1c ; only free of constant time portamento not activated |
0000001D 00239 TIA_Vx_SPARE5 EQU 0x1d ; only free of constant time portamento not activated |
00240 |
0000001A 00241 TIA_Vx_PORTA_CTR_L EQU TIA_Vx_SPARE2 |
0000001B 00242 TIA_Vx_PORTA_CTR_H EQU TIA_Vx_SPARE3 |
0000001C 00243 TIA_Vx_PORTA_FRQ_L EQU TIA_Vx_SPARE4 |
0000001D 00244 TIA_Vx_PORTA_FRQ_H EQU TIA_Vx_SPARE5 |
gpasm-0.13.7 beta setup_tia_cartridge.asm1-30-2014 10:42:05 PAGE 23 |
|
|
LOC OBJECT CODE LINE SOURCE TEXT |
VALUE |
|
00245 |
0000001E 00246 TIA_Vx_ARP_NOTE_0 EQU 0x1e |
0000001F 00247 TIA_Vx_ARP_NOTE_1 EQU 0x1f |
00000020 00248 TIA_Vx_ARP_NOTE_2 EQU 0x20 |
00000021 00249 TIA_Vx_ARP_NOTE_3 EQU 0x21 |
00000022 00250 TIA_Vx_NOTE_STACK_0 EQU 0x22 |
00000023 00251 TIA_Vx_NOTE_STACK_1 EQU 0x23 |
00000024 00252 TIA_Vx_NOTE_STACK_2 EQU 0x24 |
00000025 00253 TIA_Vx_NOTE_STACK_3 EQU 0x25 |
00000004 00254 TIA_NOTE_STACK_LEN EQU TIA_Vx_NOTE_STACK_3-TIA_Vx_NOTE_STACK_0+1 |
00255 |
00000026 00256 TIA_Vx_ASSIGN_VELOCITY EQU 0x26 |
00000027 00257 TIA_Vx_INIT_VELOCITY EQU 0x27 |
00000028 00258 TIA_Vx_LAST_VELOCITY EQU 0x28 |
00000029 00259 TIA_Vx_DEPTH_VELOCITY EQU 0x29 |
00260 |
0000002A 00261 TIA_Vx_ENV_OPTION EQU 0x2a |
0000002B 00262 TIA_Vx_OPTION EQU 0x2b |
0000002C 00263 TIA_Vx_WBANK EQU 0x2c |
0000002D 00264 TIA_Vx_WT EQU 0x2d |
0000002E 00265 TIA_Vx_WT_STATE EQU 0x2e |
0000002F 00266 TIA_Vx_WT_RATE EQU 0x2f |
00000030 00267 TIA_Vx_WT_CLK_REQ_CTR EQU 0x30 |
00000031 00268 TIA_Vx_WT_CTR EQU 0x31 |
00000032 00269 TIA_Vx_WT_POS EQU 0x32 |
00000033 00270 TIA_Vx_WT_SAVED_PATCH EQU 0x33 ;; a eliminer |
00000034 00271 TIA_Vx_WT_ASSIGN_P1 EQU 0x34 |
00000035 00272 TIA_Vx_WT_ASSIGN_P2 EQU 0x35 |
00000036 00273 TIA_Vx_WT_ASSIGN_P3 EQU 0x36 |
00000037 00274 TIA_Vx_KBANK EQU 0x37 |
00000038 00275 TIA_Vx_KIT EQU 0x38 |
00000039 00276 TIA_Vx_KIT_STATE EQU 0x39 |
0000003A 00277 TIA_Vx_KIT_RATE EQU 0x3a |
0000003B 00278 TIA_Vx_KIT_CLK_REQ_CTR EQU 0x3b |
0000003C 00279 TIA_Vx_KIT_CTR EQU 0x3c |
0000003D 00280 TIA_Vx_KIT_POS EQU 0x3d |
00281 |
0000003E 00282 TIA_Vx_FREE1 EQU 0x3e |
0000003F 00283 TIA_Vx_FREE2 EQU 0x3f |
00284 |
00000120 00285 TIA_V1_BASE EQU 0x120 + 0 * TIA_Vx_RECORD_LEN ; 0x0120-0x15f |
00000160 00286 TIA_V2_BASE EQU 0x120 + 1 * TIA_Vx_RECORD_LEN ; 0x0160-0x19f |
00287 |
00288 ;; ========================================================================== |
00289 |
00000007 00290 TIA_LFOx_RECORD_LEN EQU 7 |
00000000 00291 TIA_LFOx_MODE EQU 0x00 |
00000001 00292 TIA_LFOx_RATE EQU 0x01 |
00000002 00293 TIA_LFOx_CTR EQU 0x02 |
00000003 00294 TIA_LFOx_VALUE EQU 0x03 |
00000004 00295 TIA_LFOx_DEPTH EQU 0x04 |
00000005 00296 TIA_LFOx_RVALUE_L EQU 0x05 |
00000006 00297 TIA_LFOx_RVALUE_H EQU 0x06 |
00298 |
gpasm-0.13.7 beta setup_tia_cartridge.asm1-30-2014 10:42:05 PAGE 24 |
|
|
LOC OBJECT CODE LINE SOURCE TEXT |
VALUE |
|
000001A0 00299 TIA_LFO1_BASE EQU 0x1a0 + 0 * TIA_LFOx_RECORD_LEN ; 0x1a0-0x1a6 |
000001A7 00300 TIA_LFO2_BASE EQU 0x1a0 + 1 * TIA_LFOx_RECORD_LEN ; 0x1a7-0x1ad |
000001AE 00301 TIA_LFO3_BASE EQU 0x1a0 + 2 * TIA_LFOx_RECORD_LEN ; 0x1ae-0x1b4 |
000001B5 00302 TIA_LFO4_BASE EQU 0x1a0 + 3 * TIA_LFOx_RECORD_LEN ; 0x1b5-0x1bb |
00303 |
00304 ;; ========================================================================== |
00305 |
0000000B 00306 TIA_ENVx_RECORD_LEN EQU 11 |
00000000 00307 TIA_ENVx_MODE EQU 0x00 |
00000001 00308 TIA_ENVx_CTR_L EQU 0x01 |
00309 |
00000002 00310 TIA_ENVx_CTR_H EQU 0x02 |
00000003 00311 TIA_ENVx_ATTACK EQU 0x03 |
00000004 00312 TIA_ENVx_DECAY EQU 0x04 |
00000005 00313 TIA_ENVx_SUSTAIN EQU 0x05 |
00000006 00314 TIA_ENVx_RELEASE EQU 0x06 |
00000007 00315 TIA_ENVx_CURVE EQU 0x07 |
00000008 00316 TIA_ENVx_DEPTH EQU 0x08 |
00000009 00317 TIA_ENVx_RVALUE_L EQU 0x09 |
0000000A 00318 TIA_ENVx_RVALUE_H EQU 0x0a |
00319 |
000001BC 00320 TIA_ENVAUD0_BASE EQU 0x1bc + 0 * TIA_ENVx_RECORD_LEN ; 0x1bc-0x1c6 |
000001C7 00321 TIA_ENVAUD1_BASE EQU 0x1bc + 1 * TIA_ENVx_RECORD_LEN ; 0x1c7-0x1d1 |
000001D2 00322 TIA_ENV1_BASE EQU 0x1bc + 2 * TIA_ENVx_RECORD_LEN ; 0x1d2-0x1dc |
000001DD 00323 TIA_ENV2_BASE EQU 0x1bc + 3 * TIA_ENVx_RECORD_LEN ; 0x1dd-0x1e7 |
00324 |
00325 ;; ========================================================================== |
00326 |
00000004 00327 TIA_CTRLx_RECORD_LEN EQU 4 |
00000000 00328 TIA_CTRLx_ASSIGN EQU 0x00 |
00000001 00329 TIA_CTRLx_INIT EQU 0x01 |
00000002 00330 TIA_CTRLx_LAST EQU 0x02 |
00000003 00331 TIA_CTRLx_DEPTH EQU 0x03 |
00332 |
000001E8 00333 TIA_CTRL_AFTERTOUCH_BASE EQU 0x1e8 + 0 * TIA_CTRLx_RECORD_LEN ; 0x1e8-0x1eb |
000001EC 00334 TIA_CTRL_MODWHEEL_BASE EQU 0x1e8 + 1 * TIA_CTRLx_RECORD_LEN ; 0x1ec-0x1ef |
00335 |
00336 ;; ========================================================================== |
00337 |
000001F0 00338 TIA_MIDI_SYNC EQU 0x1f0 |
000001F1 00339 TIA_MIDI_SYNC_CTR EQU 0x1f1 |
000001F2 00340 TIA_MIDI_SYNC_CTR_REG EQU 0x1f2 |
00341 |
00342 ;; ========================================================================== |
00343 |
00344 ; free 0x1f4-0x1f5 |
00345 ;; ========================================================================== |
00346 |
000001F6 00347 SAVED_PRODL EQU 0x1f6 ; used by tia_sw.inc |
000001F7 00348 SAVED_PRODH EQU 0x1f7 ; used by tia_sw.inc |
00349 |
00350 ;; ========================================================================== |
000001F8 00351 MUL_A_L EQU 0x1f8 ; used by math_mul16_16.inc |
000001F9 00352 MUL_A_H EQU 0x1f9 |
gpasm-0.13.7 beta setup_tia_cartridge.asm1-30-2014 10:42:05 PAGE 25 |
|
|
LOC OBJECT CODE LINE SOURCE TEXT |
VALUE |
|
000001FA 00353 MUL_B_L EQU 0x1fa |
000001FB 00354 MUL_B_H EQU 0x1fb |
000001FC 00355 MUL_R_0 EQU 0x1fc |
000001FD 00356 MUL_R_1 EQU 0x1fd |
000001FE 00357 MUL_R_2 EQU 0x1fe |
000001FF 00358 MUL_R_3 EQU 0x1ff |
00359 |
00360 |
000001F8 00361 DIV_A_0 EQU MUL_A_L ; used by math_div16_16.inc |
000001F9 00362 DIV_A_1 EQU MUL_A_H |
000001FA 00363 DIV_A_2 EQU MUL_B_L |
000001FB 00364 DIV_B_0 EQU MUL_B_H |
000001FC 00365 DIV_B_1 EQU MUL_R_0 |
000001FD 00366 DIV_COUNT EQU MUL_R_1 |
000001FE 00367 DIV_REM_0 EQU MUL_R_2 |
000001FF 00368 DIV_REM_1 EQU MUL_R_3 |
00369 |
00370 |
00371 ;; ========================================================================== |
00000700 00372 BANKSTICK_FORMAT_BEGIN EQU 0x700 ; buffer temporary used to format the BankStick |
000007FF 00373 BANKSTICK_FORMAT_END EQU 0x7ff ; CS variables have to be initialized again after formatting |
00374 |
00375 |
00376 |
00377 |
00378 |
00379 |
00380 ;; ========================================================================== |
00381 |
00382 |
00383 |
00384 ;;free 0x3c8-0x37f |
00035 |
00036 ; ========================================================================== |
00037 |
00038 ;; ---[ configuration table for MIDI processor and rotary encoders ]--- |
00039 #include "mios_tables.inc" |
00001 ; $Id: mios_tables.inc 339 2008-05-14 20:26:50Z tk $ |
00002 ; |
00003 ; Configuration Tables for MIOS Application |
00004 ; |
00005 ; ========================================================================== |
00006 ; |
00007 ; Copyright 1998-2006 Thorsten Klose (tk@midibox.org) |
00008 ; Licensed for personal non-commercial use only. |
00009 ; All other rights reserved. |
00010 ; |
00011 ; ========================================================================== |
00012 |
3080 00013 org 0x3080 ; never change the origin! |
00014 |
00015 ;; -------------------------------------------------------------------------- |
00016 ;; The MIDI Trigger table maps incoming MIDI events to control elements |
00017 ;; (pots/faders, encoders, buttons, LEDs, ...) |
gpasm-0.13.7 beta setup_tia_cartridge.asm1-30-2014 10:42:05 PAGE 26 |
|
|
LOC OBJECT CODE LINE SOURCE TEXT |
VALUE |
|
00018 ;; |
00019 ;; After the MIOS MIDI processor (MPROC) has received a complete event, it |
00020 ;; searches in this table for a matching entry and calls USER_MPROC_NotifyFoundEvent |
00021 ;; with the table index in WREG and the MIDI event in MIOS_PARAMETER[123] |
00022 ;; |
00023 ;; Note also that the MIDI processor stops scanning the table after |
00024 ;; the first MT_EOT entry |
00025 ;; |
00026 ;; Note2: never change the origin (memory location) of this table! |
00027 ;; |
00028 ;; Optionally this table can also be used to define events, which should be |
00029 ;; transmitted (Example: see example_ain64_din128_dout128), so that incoming |
00030 ;; and outgoing events are located at one place |
00031 ;; |
00032 ;; The table *must* contain 256 entries. Unused entries should be filled with |
00033 ;; MT_EOT. |
00034 ;; -------------------------------------------------------------------------- |
00035 |
00036 ;; MIDI Trigger entry structure |
00037 MT_ENTRY MACRO event_0, event_1 |
00038 dw (event_1 << 8) | event_0 |
00039 ENDM |
00040 |
00041 MT_EOT MACRO |
00042 dw 0xffff |
00043 ENDM |
00044 |
00045 |
3080 00046 MIOS_MPROC_EVENT_TABLE |
00047 ;; this "end of table" entry ensures that MIOS will stop searching here |
00048 MT_EOT |
3080 FFFF M dw 0xffff |
00049 |
00050 |
00051 ;; dirty but allowed so long as MT_EOT can be found at 0x3080: |
00052 ;; since the MIDIbox TIA application doesn't get use of the MPROC_EVENT_TABLE, |
00053 ;; we are using the address range from 0x3082 to 0x327f for other |
00054 ;; application specific tables |
00055 |
00056 #include "tia_frq_table.inc" |
00001 ; $Id: tia_frq_table.inc 111 2008-02-22 00:41:21Z tk $ |
00002 ; |
00003 ; MIDIbox TIA |
00004 ; Frequency Table (refer to the TIA spec) |
00005 ; |
00006 ; ========================================================================== |
00007 ; |
00008 ; Copyright 1998-2006 Thorsten Klose (tk@midibox.org) |
00009 ; Licensed for personal non-commercial use only. |
00010 ; All other rights reserved. |
00011 ; |
00012 ; ========================================================================== |
00013 |
00014 ;; -------------------------------------------------------------------------- |
gpasm-0.13.7 beta setup_tia_cartridge.asm1-30-2014 10:42:05 PAGE 27 |
|
|
LOC OBJECT CODE LINE SOURCE TEXT |
VALUE |
|
00015 ;; In: note index (0x00-0x7f) in WREG |
00016 ;; Out: frq low byte in WREG and MIOS_PARAMETER1, frq high byte in MIOS_PARAMETER2 |
00017 ;; -------------------------------------------------------------------------- |
3082 00018 TIA_FRQ_TABLE_Get |
3082 90D8 00019 clrc |
3084 34E8 00020 rlf WREG, W |
3086 0FA0 00021 addlw TIA_FRQ_TABLE & 0xff |
3088 6EF6 00022 movwf TBLPTRL |
308A 6AF7 00023 clrf TBLPTRH |
308C 0E30 00024 movlw TIA_FRQ_TABLE >> 8 |
308E 22F7 00025 addwfc TBLPTRH, F |
00026 |
3090 0009 00027 tblrd*+ |
3092 CFF5 F003 00028 movff TABLAT, MIOS_PARAMETER1 |
3096 0009 00029 tblrd*+ |
3098 CFF5 F004 00030 movff TABLAT, MIOS_PARAMETER2 |
309C 5003 00031 movf MIOS_PARAMETER1, W |
309E 0012 00032 return |
00033 |
00034 ; ========================================================================== |
00035 |
30A0 00036 TIA_FRQ_TABLE |
30A0 0028 002B 00037 dw 0x0028,0x002b,0x002d,0x0030,0x0033,0x0036,0x0039,0x003d,0x0040,0x0044,0x0048,0x004c |
002D 0030 |
0033 0036 |
0039 003D |
0040 0044 |
0048 004C |
30B8 0051 0056 00038 dw 0x0051,0x0056,0x005b,0x0060,0x0066,0x006c,0x0073,0x007a,0x0081 |
005B 0060 |
0066 006C |
0073 007A |
0081 |
00039 |
30CA 0089 0091 00040 dw 0x0089,0x0091,0x0099,0x00a3,0x00ac,0x00b7,0x00c1,0x00cd,0x00d9,0x00e6,0x00f4,0x0102 ; c-2 |
0099 00A3 |
00AC 00B7 |
00C1 00CD |
00D9 00E6 |
00F4 0102 |
30E2 0112 0122 00041 dw 0x0112,0x0122,0x0133,0x0146,0x0159,0x016e,0x0183,0x019b,0x01b3,0x01cd,0x01e8,0x0205 ; c-1 |
0133 0146 |
0159 016E |
0183 019B |
01B3 01CD |
01E8 0205 |
30FA 0224 0245 00042 dw 0x0224,0x0245,0x0267,0x028c,0x02b3,0x02da,0x0307,0x0336,0x0366,0x039a,0x03d1,0x040b ; c-0 |
0267 028C |
02B3 02DA |
0307 0336 |
0366 039A |
03D1 040B |
3112 0449 048A 00043 dw 0x0449,0x048a,0x04cf,0x0518,0x0566,0x05b8,0x060f,0x066c,0x06cd,0x0735,0x07a3,0x0817 ; C-1 |
04CF 0518 |
gpasm-0.13.7 beta setup_tia_cartridge.asm1-30-2014 10:42:05 PAGE 28 |
|
|
LOC OBJECT CODE LINE SOURCE TEXT |
VALUE |
|
0566 05B8 |
060F 066C |
06CD 0735 |
07A3 0817 |
312A 0892 0915 00044 dw 0x0892,0x0915,0x099f,0x0A31,0x0Acd,0x0B71,0x0C1f,0x0Cd8,0x0D9b,0x0E6a,0x0F46,0x102e ; C-2 |
099F 0A31 |
0ACD 0B71 |
0C1F 0CD8 |
0D9B 0E6A |
0F46 102E |
3142 1125 122A 00045 dw 0x1125,0x122a,0x133e,0x1463,0x159a,0x16e3,0x183f,0x19b0,0x1B37,0x1Cd5,0x1E8c,0x205d ; C-3 |
133E 1463 |
159A 16E3 |
183F 19B0 |
1B37 1CD5 |
1E8C 205D |
315A 224A 2454 00046 dw 0x224a,0x2454,0x267d,0x28c7,0x2B34,0x2Dc6,0x307e,0x3361,0x366f,0x39ab,0x3D19,0x40bc ; C-4 |
267D 28C7 |
2B34 2DC6 |
307E 3361 |
366F 39AB |
3D19 40BC |
3172 4495 48A8 00047 dw 0x4495,0x48a8,0x4Cfc,0x518f,0x5668,0x5B8c,0x60fe,0x66c2,0x6Cde,0x7357,0x7A34,0x8177 ; C-5 |
4CFC 518F |
5668 5B8C |
60FE 66C2 |
6CDE 7357 |
7A34 8177 |
318A 892A 9153 00048 dw 0x892a,0x9153,0x99f6,0xA31e,0xACd1,0xB718,0xC1fc,0xCD85,0xD9bc,0xE6af,0xF467 ; C-6 |
99F6 A31E |
ACD1 B718 |
C1FC CD85 |
D9BC E6AF |
F467 |
00049 |
00057 #include "tia_sin_table.inc" |
00001 ; $Id: tia_sin_table.inc 111 2008-02-22 00:41:21Z tk $ |
00002 ; |
00003 ; MIDIbox TIA |
00004 ; Sinus Table |
00005 ; generated with tiatab.pl |
00006 ; |
00007 ; ========================================================================== |
00008 ; |
00009 ; Copyright 1998-2006 Thorsten Klose (tk@midibox.org) |
00010 ; Licensed for personal non-commercial use only. |
00011 ; All other rights reserved. |
00012 ; |
00013 ; ========================================================================== |
00014 |
00015 ;; -------------------------------------------------------------------------- |
00016 ;; In: index (0x00-0xff) in WREG |
00017 ;; Out: Sin value in WREG and MIOS_PARAMETER1 |
00018 ;; -------------------------------------------------------------------------- |
gpasm-0.13.7 beta setup_tia_cartridge.asm1-30-2014 10:42:05 PAGE 29 |
|
|
LOC OBJECT CODE LINE SOURCE TEXT |
VALUE |
|
31A0 00019 TIA_SIN_TABLE_Get |
00020 ;; note: the table has only 128 entries, the upper entries are just |
00021 ;; inverted, so we can save some memory |
31A0 6E03 00022 movwf MIOS_PARAMETER1 |
31A2 AE03 00023 btfss MIOS_PARAMETER1, 7 |
31A4 0A7F 00024 xorlw 0x7f |
31A6 0B7F 00025 andlw 0x7f |
00026 |
31A8 0FBE 00027 addlw TIA_SIN_TABLE & 0xff |
31AA 6EF6 00028 movwf TBLPTRL |
31AC 6AF7 00029 clrf TBLPTRH |
31AE 0E31 00030 movlw TIA_SIN_TABLE >> 8 |
31B0 22F7 00031 addwfc TBLPTRH, F |
00032 |
31B2 0009 00033 tblrd*+ |
31B4 50F5 00034 movf TABLAT, W |
31B6 BE03 00035 btfsc MIOS_PARAMETER1, 7 |
31B8 0980 00036 iorlw 0x80 |
31BA 6E03 00037 movwf MIOS_PARAMETER1 |
31BC 0012 00038 return |
00039 |
00040 ; ========================================================================== |
00041 |
31BE 00042 TIA_SIN_TABLE |
31BE 0100 00043 db 0x00, 0x01 |
31C0 0403 00044 db 0x03, 0x04 |
31C2 0706 00045 db 0x06, 0x07 |
31C4 0A09 00046 db 0x09, 0x0a |
31C6 0E0C 00047 db 0x0c, 0x0e |
31C8 110F 00048 db 0x0f, 0x11 |
31CA 1412 00049 db 0x12, 0x14 |
31CC 1715 00050 db 0x15, 0x17 |
31CE 1A18 00051 db 0x18, 0x1a |
31D0 1D1C 00052 db 0x1c, 0x1d |
31D2 201F 00053 db 0x1f, 0x20 |
31D4 2322 00054 db 0x22, 0x23 |
31D6 2625 00055 db 0x25, 0x26 |
31D8 2928 00056 db 0x28, 0x29 |
31DA 2C2B 00057 db 0x2b, 0x2c |
31DC 2F2E 00058 db 0x2e, 0x2f |
31DE 3230 00059 db 0x30, 0x32 |
31E0 3533 00060 db 0x33, 0x35 |
31E2 3836 00061 db 0x36, 0x38 |
31E4 3A39 00062 db 0x39, 0x3a |
31E6 3D3C 00063 db 0x3c, 0x3d |
31E8 403F 00064 db 0x3f, 0x40 |
31EA 4341 00065 db 0x41, 0x43 |
31EC 4544 00066 db 0x44, 0x45 |
31EE 4847 00067 db 0x47, 0x48 |
31F0 4A49 00068 db 0x49, 0x4a |
31F2 4D4C 00069 db 0x4c, 0x4d |
31F4 4F4E 00070 db 0x4e, 0x4f |
31F6 5251 00071 db 0x51, 0x52 |
31F8 5453 00072 db 0x53, 0x54 |
gpasm-0.13.7 beta setup_tia_cartridge.asm1-30-2014 10:42:05 PAGE 30 |
|
|
LOC OBJECT CODE LINE SOURCE TEXT |
VALUE |
|
31FA 5755 00073 db 0x55, 0x57 |
31FC 5958 00074 db 0x58, 0x59 |
31FE 5B5A 00075 db 0x5a, 0x5b |
3200 5D5C 00076 db 0x5c, 0x5d |
3202 5F5E 00077 db 0x5e, 0x5f |
3204 6160 00078 db 0x60, 0x61 |
3206 6362 00079 db 0x62, 0x63 |
3208 6564 00080 db 0x64, 0x65 |
320A 6766 00081 db 0x66, 0x67 |
320C 6968 00082 db 0x68, 0x69 |
320E 6B6A 00083 db 0x6a, 0x6b |
3210 6C6C 00084 db 0x6c, 0x6c |
3212 6E6D 00085 db 0x6d, 0x6e |
3214 706F 00086 db 0x6f, 0x70 |
3216 7170 00087 db 0x70, 0x71 |
3218 7372 00088 db 0x72, 0x73 |
321A 7473 00089 db 0x73, 0x74 |
321C 7575 00090 db 0x75, 0x75 |
321E 7676 00091 db 0x76, 0x76 |
3220 7777 00092 db 0x77, 0x77 |
3222 7978 00093 db 0x78, 0x79 |
3224 7A79 00094 db 0x79, 0x7a |
3226 7A7A 00095 db 0x7a, 0x7a |
3228 7B7B 00096 db 0x7b, 0x7b |
322A 7C7C 00097 db 0x7c, 0x7c |
322C 7D7C 00098 db 0x7c, 0x7d |
322E 7D7D 00099 db 0x7d, 0x7d |
3230 7E7E 00100 db 0x7e, 0x7e |
3232 7E7E 00101 db 0x7e, 0x7e |
3234 7F7F 00102 db 0x7f, 0x7f |
3236 7F7F 00103 db 0x7f, 0x7f |
3238 7F7F 00104 db 0x7f, 0x7f |
323A 7F7F 00105 db 0x7f, 0x7f |
323C 7F7F 00106 db 0x7f, 0x7f |
00058 #include "tia_depth_table.inc" |
00001 ; $Id: tia_depth_table.inc 111 2008-02-22 00:41:21Z tk $ |
00002 ; |
00003 ; MIDIbox TIA |
00004 ; Depth Table |
00005 ; derived from MIDIbox TIA V1.5 |
00006 ; required since the frequency table has been changed to keep the influence |
00007 ; of the depth parameter compatible with older firmware versions |
00008 ; |
00009 ; ========================================================================== |
00010 ; |
00011 ; Copyright 1998-2006 Thorsten Klose (tk@midibox.org) |
00012 ; Licensed for personal non-commercial use only. |
00013 ; All other rights reserved. |
00014 ; |
00015 ; ========================================================================== |
00016 |
323E 00017 TIA_DEPTH_TABLE |
323E 0100 0302 00018 db 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07 |
0504 0706 |
gpasm-0.13.7 beta setup_tia_cartridge.asm1-30-2014 10:42:05 PAGE 31 |
|
|
LOC OBJECT CODE LINE SOURCE TEXT |
VALUE |
|
3246 0A08 0E0C 00019 db 0x08, 0x0a, 0x0c, 0x0e, 0x11, 0x12, 0x13, 0x14 |
1211 1413 |
324E 1615 1818 00020 db 0x15, 0x16, 0x18, 0x18, 0x1b, 0x1c, 0x1e, 0x20 |
1C1B 201E |
3256 2422 2826 00021 db 0x22, 0x24, 0x26, 0x28, 0x2b, 0x2d, 0x30, 0x33 |
2D2B 3330 |
325E 3936 403D 00022 db 0x36, 0x39, 0x3d, 0x40, 0x44, 0x48, 0x4d, 0x51 |
4844 514D |
3266 5B56 6661 00023 db 0x56, 0x5b, 0x61, 0x66, 0x6c, 0x73, 0x7a, 0x81 |
736C 817A |
326E 9189 A399 00024 db 0x89, 0x91, 0x99, 0xa3, 0xac, 0xb7, 0xc2, 0xcd |
B7AC CDC2 |
3276 E6D9 FFF4 00025 db 0xd9, 0xe6, 0xf4, 0xff, 0xff, 0xff, 0xff, 0xff |
FFFF FFFF |
00059 |
00060 ; ========================================================================== |
00061 |
3280 00062 org 0x3280 ; never change the origin! |
00063 |
00064 ;; -------------------------------------------------------------------------- |
00065 ;; In this table DIN pins have to be assigned to rotary encoders for the |
00066 ;; MIOS_ENC driver |
00067 ;; |
00068 ;; up to 64 entries are provided |
00069 ;; |
00070 ;; The table must be terminated with an ENC_EOT entry. Unused entries should |
00071 ;; be filled with ENC_EOT |
00072 ;; |
00073 ;; ENC_ENTRY provides following parameters |
00074 ;; o first parameter: number of shift register - 1, 2, 3, ... 16 |
00075 ;; o second parameter: number of pin; since two pins are necessary |
00076 ;; for each encoder, an even number is expected: 0, 2, 4 or 6 |
00077 ;; o the third parameter contains the encoder mode: |
00078 ;; either MIOS_ENC_MODE_NON_DETENTED |
00079 ;; or MIOS_ENC_MODE_DETENTED |
00080 ;; or MIOS_ENC_MODE_DETENTED2 |
00081 ;; |
00082 ;; Configuration Examples: |
00083 ;; ENC_ENTRY 1, 0, MIOS_ENC_MODE_NON_DETENTED ; non-detented encoder at pin 0 and 1 of SR 1 |
00084 ;; ENC_ENTRY 1, 2, MIOS_ENC_MODE_DETENTED ; detented encoder at pin 2 and 3 of SR 1 |
00085 ;; ENC_ENTRY 9, 6, MIOS_ENC_MODE_NON_DETENTED ; non-detented encoder at pin 6 and 7 of SR 9 |
00086 ;; -------------------------------------------------------------------------- |
00087 |
00088 ;; encoder entry structure |
00089 ENC_ENTRY MACRO sr, din_0, mode |
00090 dw (mode << 8) | (din_0 + 8*(sr-1)) |
00091 ENDM |
00092 ENC_EOT MACRO |
00093 dw 0xffff |
00094 ENDM |
00095 |
3280 00096 MIOS_ENC_PIN_TABLE |
00097 ;; encoders 1-16 |
00098 ENC_EOT |
gpasm-0.13.7 beta setup_tia_cartridge.asm1-30-2014 10:42:05 PAGE 32 |
|
|
LOC OBJECT CODE LINE SOURCE TEXT |
VALUE |
|
3280 FFFF M dw 0xffff |
00099 ENC_EOT |
3282 FFFF M dw 0xffff |
00100 ENC_EOT |
3284 FFFF M dw 0xffff |
00101 ENC_EOT |
3286 FFFF M dw 0xffff |
00102 ENC_EOT |
3288 FFFF M dw 0xffff |
00103 ENC_EOT |
328A FFFF M dw 0xffff |
00104 ENC_EOT |
328C FFFF M dw 0xffff |
00105 ENC_EOT |
328E FFFF M dw 0xffff |
00106 ENC_EOT |
3290 FFFF M dw 0xffff |
00107 ENC_EOT |
3292 FFFF M dw 0xffff |
00108 ENC_EOT |
3294 FFFF M dw 0xffff |
00109 ENC_EOT |
3296 FFFF M dw 0xffff |
00110 ENC_EOT |
3298 FFFF M dw 0xffff |
00111 ENC_EOT |
329A FFFF M dw 0xffff |
00112 ENC_EOT |
329C FFFF M dw 0xffff |
00113 ENC_EOT |
329E FFFF M dw 0xffff |
00114 |
00115 ;; encoders 17-32 |
00116 ENC_EOT |
32A0 FFFF M dw 0xffff |
00117 ENC_EOT |
32A2 FFFF M dw 0xffff |
00118 ENC_EOT |
32A4 FFFF M dw 0xffff |
00119 ENC_EOT |
32A6 FFFF M dw 0xffff |
00120 ENC_EOT |
32A8 FFFF M dw 0xffff |
00121 ENC_EOT |
32AA FFFF M dw 0xffff |
00122 ENC_EOT |
32AC FFFF M dw 0xffff |
00123 ENC_EOT |
32AE FFFF M dw 0xffff |
00124 ENC_EOT |
32B0 FFFF M dw 0xffff |
00125 ENC_EOT |
32B2 FFFF M dw 0xffff |
00126 ENC_EOT |
gpasm-0.13.7 beta setup_tia_cartridge.asm1-30-2014 10:42:05 PAGE 33 |
|
|
LOC OBJECT CODE LINE SOURCE TEXT |
VALUE |
|
32B4 FFFF M dw 0xffff |
00127 ENC_EOT |
32B6 FFFF M dw 0xffff |
00128 ENC_EOT |
32B8 FFFF M dw 0xffff |
00129 ENC_EOT |
32BA FFFF M dw 0xffff |
00130 ENC_EOT |
32BC FFFF M dw 0xffff |
00131 ENC_EOT |
32BE FFFF M dw 0xffff |
00132 |
00133 ;; encoders 33-48 |
00134 ENC_EOT |
32C0 FFFF M dw 0xffff |
00135 ENC_EOT |
32C2 FFFF M dw 0xffff |
00136 ENC_EOT |
32C4 FFFF M dw 0xffff |
00137 ENC_EOT |
32C6 FFFF M dw 0xffff |
00138 ENC_EOT |
32C8 FFFF M dw 0xffff |
00139 ENC_EOT |
32CA FFFF M dw 0xffff |
00140 ENC_EOT |
32CC FFFF M dw 0xffff |
00141 ENC_EOT |
32CE FFFF M dw 0xffff |
00142 ENC_EOT |
32D0 FFFF M dw 0xffff |
00143 ENC_EOT |
32D2 FFFF M dw 0xffff |
00144 ENC_EOT |
32D4 FFFF M dw 0xffff |
00145 ENC_EOT |
32D6 FFFF M dw 0xffff |
00146 ENC_EOT |
32D8 FFFF M dw 0xffff |
00147 ENC_EOT |
32DA FFFF M dw 0xffff |
00148 ENC_EOT |
32DC FFFF M dw 0xffff |
00149 ENC_EOT |
32DE FFFF M dw 0xffff |
00150 |
00151 ;; encoders 49-64 |
00152 ENC_EOT |
32E0 FFFF M dw 0xffff |
00153 ENC_EOT |
32E2 FFFF M dw 0xffff |
00154 ENC_EOT |
32E4 FFFF M dw 0xffff |
00155 ENC_EOT |
gpasm-0.13.7 beta setup_tia_cartridge.asm1-30-2014 10:42:05 PAGE 34 |
|
|
LOC OBJECT CODE LINE SOURCE TEXT |
VALUE |
|
32E6 FFFF M dw 0xffff |
00156 ENC_EOT |
32E8 FFFF M dw 0xffff |
00157 ENC_EOT |
32EA FFFF M dw 0xffff |
00158 ENC_EOT |
32EC FFFF M dw 0xffff |
00159 ENC_EOT |
32EE FFFF M dw 0xffff |
00160 ENC_EOT |
32F0 FFFF M dw 0xffff |
00161 ENC_EOT |
32F2 FFFF M dw 0xffff |
00162 ENC_EOT |
32F4 FFFF M dw 0xffff |
00163 ENC_EOT |
32F6 FFFF M dw 0xffff |
00164 ENC_EOT |
32F8 FFFF M dw 0xffff |
00165 ENC_EOT |
32FA FFFF M dw 0xffff |
00166 ENC_EOT |
32FC FFFF M dw 0xffff |
00167 ENC_EOT |
32FE FFFF M dw 0xffff |
00168 |
00169 |
3300 00170 org 0x3300 ; never change the origin! |
00040 |
00041 ;; ---[ Custom LCD driver ]--- |
00042 #include "app_lcd.inc" |
00001 ; $Id: app_lcd.inc 69 2008-02-01 00:20:18Z tk $ |
00002 ; |
00003 ; MIOS Custom LCD Driver Skeleton |
00004 ; |
00005 ; ========================================================================== |
00006 ; |
00007 ; Copyright 1998-2006 Thorsten Klose (tk@midibox.org) |
00008 ; Licensed for personal non-commercial use only. |
00009 ; All other rights reserved. |
00010 ; |
00011 ; ========================================================================== |
00012 |
00013 ;; -------------------------------------------------------------------------- |
00014 ;; Following system variables are given by MIOS and can be directly |
00015 ;; accessed by the driver. The addresses are defined in mios.h and |
00016 ;; should not be changed |
00017 ;; |
00018 ;; MIOS_GLCD_BUFFER a 8 byte buffer for data transfers |
00019 ;; MIOS_LCD_OPTION1 contains the first LCD option given by MIOS_LCD_TypeSet |
00020 ;; MIOS_LCD_OPTION2 contains the second LCD option given by MIOS_LCD_TypeSet |
00021 ;; MIOS_LCD_CURSOR_POS the current cursor pos of characters (GLCD: multiplied by width) |
00022 ;; MIOS_GLCD_GCURSOR_X for GLCDs: the current X position of graphical cursor |
00023 ;; MIOS_GLCD_GCURSOR_Y for GLCDs: the current Y position of graphical cursor |
gpasm-0.13.7 beta setup_tia_cartridge.asm1-30-2014 10:42:05 PAGE 35 |
|
|
LOC OBJECT CODE LINE SOURCE TEXT |
VALUE |
|
00024 ;; MIOS_GLCD_FONT_WIDTH for GLCDs: the fontwidth given by MIOS_GLCD_FontInit |
00025 ;; MIOS_GLCD_FONT_HEIGHT for GLCDs: the fontheight given by MIOS_GLCD_FontInit |
00026 ;; MIOS_GLCD_FONT_X0 for GLCDs: the first byte within a char entry |
00027 ;; MIOS_GLCD_FONT_OFFSET for GLCDs: the byte offset between the characters |
00028 ;; MIOS_GLCD_FONT_PTRL for GLCDs: pointer to the character table, low-byte |
00029 ;; MIOS_GLCD_FONT_PTRH for GLCDs: pointer to the character table, high-byte |
00030 ;; MIOS_LCD_TIMEOUT0 can be used for timeout loops |
00031 ;; MIOS_LCD_TIMEOUT1 can be used for timeout loops |
00032 ;; MIOS_GLCD_TMP1 can be used as temporary buffer |
00033 ;; MIOS_GLCD_TMP2 can be used as temporary buffer |
00034 ;; MIOS_GLCD_TMP3 can be used as temporary buffer |
00035 ;; MIOS_GLCD_TMP4 can be used as temporary buffer |
00036 ;; MIOS_LCD_Y0_OFFSET Y0 offset of LCD |
00037 ;; MIOS_LCD_Y1_OFFSET Y1 offset of LCD |
00038 ;; MIOS_LCD_Y2_OFFSET Y2 offset of LCD |
00039 ;; MIOS_LCD_Y3_OFFSET Y3 offset of LCD |
00040 ;; MIOS_LCD_CURSOR_POS_REAL unmapped cursor position which has been set with MIOS_LCD_CursorSet |
00041 ;; |
00042 ;; Note: the addresses are located in an upper bank and therefore have to |
00043 ;; be accessed with the BANKED flag. Also the BSR has to be justified |
00044 ;; before using the registers |
00045 ;; Example: |
00046 ;; SET_BSR MIOS_LCD_OPTION1 ; sets BSR to the bank where MIOS_LCD_* |
00047 ;; ; has been located. You don't need to |
00048 ;; ; change the BSR for the other LCD registers |
00049 ;; movf MIOS_LCD_OPTION1, W, BANKED ; get LCD option #1 |
00050 ;; |
00051 ;; Important: to allow a proper interaction with MIOS applications, you are |
00052 ;; only allowed to modify MIOS_PARAMETER[123], the mutliplication registers |
00053 ;; and FSR1. You are not allowed to change TMP[1-5] or FSR0 |
00054 ;; if you need some temporary registers, use the given addresses above or |
00055 ;; locate them to addresses which are not used by the application |
00056 ;; -------------------------------------------------------------------------- |
00057 |
00058 ;; -------------------------------------------------------------------------- |
00059 ;; This function is called by MIOS when the custom LCD should be initialized |
00060 ;; In: MIOS_LCD_OPTION1 - contains the first LCD option given by MIOS_LCD_TypeSet |
00061 ;; MIOS_LCD_OPTION2 - contains the second LCD option given by MIOS_LCD_TypeSet |
00062 ;; Out: - |
00063 ;; -------------------------------------------------------------------------- |
3300 00064 USER_LCD_Init |
3300 0012 00065 return |
00066 |
00067 ;; -------------------------------------------------------------------------- |
00068 ;; This function is called by MIOS when the custom LCD should be cleared |
00069 ;; In: MIOS_LCD_OPTION1 - contains the first LCD option given by MIOS_LCD_TypeSet |
00070 ;; MIOS_LCD_OPTION2 - contains the second LCD option given by MIOS_LCD_TypeSet |
00071 ;; Out: - |
00072 ;; -------------------------------------------------------------------------- |
3302 00073 USER_LCD_Clear |
3302 0012 00074 return |
00075 |
00076 ;; -------------------------------------------------------------------------- |
00077 ;; This function is called by MIOS when the cursor should be changed |
gpasm-0.13.7 beta setup_tia_cartridge.asm1-30-2014 10:42:05 PAGE 36 |
|
|
LOC OBJECT CODE LINE SOURCE TEXT |
VALUE |
|
00078 ;; In: MIOS_LCD_OPTION1 - contains the first LCD option given by MIOS_LCD_TypeSet |
00079 ;; MIOS_LCD_OPTION2 - contains the second LCD option given by MIOS_LCD_TypeSet |
00080 ;; MIOS_GLCD_CURSOR_X - horizontal cursor position (for GLCDs) |
00081 ;; MIOS_GLCD_CURSOR_X - vertical cursor position (for GLCDs) |
00082 ;; MIOS_LCD_CURSOR - character cursor position (for CLCDs) |
00083 ;; Out: - |
00084 ;; -------------------------------------------------------------------------- |
3304 00085 USER_LCD_CursorSet |
3304 0012 00086 return |
00087 |
00088 ;; -------------------------------------------------------------------------- |
00089 ;; This function is called by MIOS when a character should be print |
00090 ;; In: WREG - character |
00091 ;; all other MIOS_*LCD_* registers |
00092 ;; Out: GLCDs should justify the X/Y cursor position |
00093 ;; -------------------------------------------------------------------------- |
3306 00094 USER_LCD_PrintChar |
3306 0012 00095 return |
00096 |
00097 ;; -------------------------------------------------------------------------- |
00098 ;; FUNCTION: USER_LCD_Data |
00099 ;; DESCRIPTION: sends a data value to the LCD display.<BR> |
00100 ;; On CLCDs: branch directly to USER_LCD_PrintChar<BR> |
00101 ;; On GLCDs: ignore this function! |
00102 ;; IN: data which should be sent |
00103 ;; OUT: - |
00104 ;; NOTE: see the custom_lcd_example for further details |
00105 ;; -------------------------------------------------------------------------- |
3308 00106 USER_LCD_Data |
3308 0012 00107 return |
00108 |
00109 ;; -------------------------------------------------------------------------- |
00110 ;; FUNCTION: USER_LCD_Cmd |
00111 ;; DESCRIPTION: sends a command to the LCD display.<BR> |
00112 ;; On CLCDs: use this function to decode the HD44780 commands if required<BR> |
00113 ;; On GLCDs: ignore this function! |
00114 ;; IN: command which should be sent |
00115 ;; OUT: - |
00116 ;; NOTE: see the custom_lcd_example for further details |
00117 ;; -------------------------------------------------------------------------- |
330A 00118 USER_LCD_Cmd |
330A 0012 00119 return |
00120 |
00121 ;; -------------------------------------------------------------------------- |
00122 ;; FUNCTION: USER_LCD_SpecialCharInit |
00123 ;; DESCRIPTION: see MIOS_CLCD_SpecialCharInit |
00124 ;; IN: number of special character (0-7) in WREG |
00125 ;; pointer to special char pattern in TBLPTR (consists of 8 |
00126 ;; entries for every character-line) |
00127 ;; OUT: TBLPTR has to be set to next table entry (TBLPTR+=8) |
00128 ;; NOTE: see the custom_lcd_example for further details |
00129 ;; -------------------------------------------------------------------------- |
330C 00130 USER_LCD_SpecialCharInit |
330C 0012 00131 return |
gpasm-0.13.7 beta setup_tia_cartridge.asm1-30-2014 10:42:05 PAGE 37 |
|
|
LOC OBJECT CODE LINE SOURCE TEXT |
VALUE |
|
00043 |
00044 ;; ========================================================================== |
00045 ;; All MIOS hooks in one file |
00046 ;; ========================================================================== |
00047 |
00048 ;; -------------------------------------------------------------------------- |
00049 ;; This function is called by MIOS after startup to initialize the |
00050 ;; application |
00051 ;; -------------------------------------------------------------------------- |
330E 00052 USER_Init |
00053 ;; initialize application specific variables |
330E 6A10 00054 clrf TIA_STAT |
3310 6A21 00055 clrf TIA_SYSEX_STATE |
3312 6A22 00056 clrf TIA_SYSEX_ACTION |
3314 6819 00057 setf TIA_BANKSTICK_CHK_CTR ; (we have to start with BS0 in TIA_BANK_CheckStick) |
00058 |
00059 ;; initialize the timer for the TIA_SW handler |
3316 0EFE 00060 movlw 8190 & 0xff ; every 819 us (in order to be timing accurate with the PIC16F version!) |
3318 6E03 00061 movwf MIOS_PARAMETER1 |
331A 0E1F 00062 movlw 8190 >> 8 |
331C 6E04 00063 movwf MIOS_PARAMETER2 |
331E 0E00 00064 movlw 0x00 ; prescaler 1:1 |
3320 ECBC F016 00065 call MIOS_TIMER_Init |
00066 |
00067 ;; initialize the MBHP_TIA module |
3324 ECE6 F021 00068 call TIA_SR_Init |
00069 |
00070 |
00071 ;; init patch |
3328 6A13 00072 clrf TIA_PATCH |
332A 6A14 00073 clrf TIA_PBANK |
332C ECAD F01D 00074 call TIA_PATCH_Init |
00075 |
00076 |
00077 ;; initialize the shift registers |
3330 0E01 00078 movlw 0x01 ; use only first register (maximum would be 16!) |
3332 EC78 F016 00079 call MIOS_SRIO_NumberSet |
3336 0E01 00080 movlw 0x01 ; set update frequncy |
3338 EC80 F016 00081 call MIOS_SRIO_UpdateFrqSet |
333C 0E00 00082 movlw 0x00 ; disable touch sensor |
333E EC7C F016 00083 call MIOS_SRIO_TS_SensitivitySet |
00084 |
00085 #if TIA_LEDMTR_ENABLE |
3342 EC39 F01D 00086 call TIA_LEDMTR_Init |
00087 #endif |
00088 |
00089 ;; initialize J5 for driving LEDs if enabled |
00090 #if ENABLE_J5 |
00091 movlw 0x00 |
00092 call J5_IO_Init |
00093 #endif |
00094 |
00095 #if MIDI_RXTX_USE_IO |
3346 ECFC F019 00096 call MIDI_RXTX_IO_Init |
gpasm-0.13.7 beta setup_tia_cartridge.asm1-30-2014 10:42:05 PAGE 38 |
|
|
LOC OBJECT CODE LINE SOURCE TEXT |
VALUE |
|
00097 #endif |
00098 |
00099 #if ENABLE_AIN_LFO_WAVEFORM |
00100 movlw 0x06 ; enable the first 6 analog inputs |
00101 call MIOS_AIN_NumberSet |
00102 call MIOS_AIN_UnMuxed ; not multiplexed |
00103 movlw 0x03 ; 8 bit resolution |
00104 #endif |
00105 |
00106 ;; initialize the AOUT module |
00107 ;call AOUT_Init |
00108 |
00109 ;; initialize the integrated MIDI merger |
334A 0E00 00110 movlw MIOS_MIDI_MERGER_DISABLED ; should be disabled for a synthesizer |
334C EC14 F016 00111 call MIOS_MIDI_MergerSet |
00112 |
3350 0012 00113 return |
00114 |
00115 |
00116 |
00117 ;; -------------------------------------------------------------------------- |
00118 ;; This function is called by MIOS in the mainloop when nothing else is to do |
00119 ;; -------------------------------------------------------------------------- |
3352 00120 USER_Tick |
00121 |
00122 #if DEFAULT_TIA_DEBUG_ON |
00123 ;; ---[ call TIA debug handler ]--- |
3352 ECBF F01A 00124 call TIA_Debug_Handler |
00125 #endif |
00126 |
00127 ;; ---[ check BankStick status ]--- |
3356 ECFB F01E 00128 call TIA_BANK_CheckStick |
00129 |
00130 ;; ---[ update AOUTs channels (if enabled) ]--- |
00131 ; IRQ_DISABLE |
00132 ; call AOUT_Update |
00133 ; IRQ_ENABLE |
00134 |
00135 ;; ---[ call TIA shift register handler ]--- |
335A ECEA F021 00136 call TIA_SR_Handler |
00137 |
00138 ;; ---[ handle with CC dump reuqests ]--- |
335E EC68 F02F 00139 call TIA_CCOUT_Handler |
00140 |
00141 |
00142 |
3362 0012 00143 return |
00144 |
00145 |
00146 ;; -------------------------------------------------------------------------- |
00147 ;; This function is periodically called by MIOS. The frequency has to be |
00148 ;; initialized with MIOS_Timer_Set |
00149 ;; Note that this is an interrupt service routine! Use FSR2 instead of FSR0 |
00150 ;; and IRQ_TMPx instead of TMPx -- and make the routine as fast as possible! |
gpasm-0.13.7 beta setup_tia_cartridge.asm1-30-2014 10:42:05 PAGE 39 |
|
|
LOC OBJECT CODE LINE SOURCE TEXT |
VALUE |
|
00151 ;; -------------------------------------------------------------------------- |
3364 00152 USER_Timer |
00153 |
00154 ;; ---[ call Software TIA Handler ]--- |
3364 EC71 F022 00155 call TIA_SW_Handler |
00156 |
3368 0012 00157 return |
00158 |
00159 ;; -------------------------------------------------------------------------- |
00160 ;; This function is called by MIOS when a debug command has been received |
00161 ;; via SysEx |
00162 ;; Input: |
00163 ;; o WREG, MIOS_PARAMETER1, MIOS_PARAMETER2, MIOS_PARAMETER3 like |
00164 ;; specified in the debug command |
00165 ;; Output: |
00166 ;; o return values WREG, MIOS_PARAMETER1, MIOS_PARAMETER2, MIOS_PARAMETER3 |
00167 ;; -------------------------------------------------------------------------- |
336A 00168 USER_MPROC_DebugTrigger |
336A 0012 00169 return |
00170 |
00171 |
00172 ;; -------------------------------------------------------------------------- |
00173 ;; This function is called by MIOS when the display content should be |
00174 ;; initialized. Thats the case during startup and after a temporary message |
00175 ;; has been printed on the screen |
00176 ;; -------------------------------------------------------------------------- |
336C 00177 USER_DISPLAY_Init |
336C 0012 00178 return |
00179 |
00180 ;; -------------------------------------------------------------------------- |
00181 ;; This function is called in the mainloop when no temporary message is shown |
00182 ;; on screen. Print the realtime messages here |
00183 ;; -------------------------------------------------------------------------- |
336E 00184 USER_DISPLAY_Tick |
00185 ;; call MIDI RxTx handler and exit |
336E EC10 F01A 00186 call MIDI_RXTX_Handler |
00187 |
00188 #if TIA_LEDMTR_ENABLE |
3372 EC3C F01D 00189 call TIA_LEDMTR_Handler |
00190 #endif |
00191 |
00192 |
00193 |
3376 0012 00194 return |
00195 |
00196 ;; -------------------------------------------------------------------------- |
00197 ;; This function is called by MIOS when a complete MIDI event has been received |
00198 ;; Input: |
00199 ;; o first MIDI event byte in MIOS_PARAMETER1 |
00200 ;; o second MIDI event byte in MIOS_PARAMETER2 |
00201 ;; o third MIDI event byte in MIOS_PARAMETER3 |
00202 ;; -------------------------------------------------------------------------- |
3378 00203 USER_MPROC_NotifyReceivedEvent |
00204 ;; branch to ReceiveEvent function of TIA synth |
gpasm-0.13.7 beta setup_tia_cartridge.asm1-30-2014 10:42:05 PAGE 40 |
|
|
LOC OBJECT CODE LINE SOURCE TEXT |
VALUE |
|
00205 |
3378 EF4A F028 00206 goto TIA_MIDI_NotifyReceivedEvent |
00207 |
337C 0012 00208 return |
00209 |
00210 ;; -------------------------------------------------------------------------- |
00211 ;; This function is called by MIOS when a MIDI event has been received |
00212 ;; which has been specified in the CONFIG_MIDI_IN table |
00213 ;; Input: |
00214 ;; o number of entry in WREG |
00215 ;; o first MIDI event byte in MIOS_PARAMETER1 |
00216 ;; o second MIDI event byte in MIOS_PARAMETER2 |
00217 ;; o third MIDI event byte in MIOS_PARAMETER3 |
00218 ;; -------------------------------------------------------------------------- |
337E 00219 USER_MPROC_NotifyFoundEvent |
00220 |
337E 0012 00221 return |
00222 |
00223 |
00224 ;; -------------------------------------------------------------------------- |
00225 ;; This function is called by MIOS when a MIDI event has not been completly |
00226 ;; received within 2 seconds |
00227 ;; -------------------------------------------------------------------------- |
3380 00228 USER_MPROC_NotifyTimeout |
00229 ;; -> jump to "ActionInvalid" for a proper reset of the sysex parser |
3380 EF52 F02A 00230 goto TIA_SYSEX_ActionInvalid |
3384 0012 00231 return |
00232 |
00233 ;; -------------------------------------------------------------------------- |
00234 ;; This function is called by MIOS when a MIDI byte has been received |
00235 ;; Input: |
00236 ;; o received MIDI byte in WREG and MIOS_PARAMETER1 |
00237 ;; -------------------------------------------------------------------------- |
3386 00238 USER_MPROC_NotifyReceivedByte |
00239 ;; -> continue at TIA_MPROC_SysExCheck |
3386 EF32 F02A 00240 goto TIA_SYSEX_SysExCheck |
338A 0012 00241 return |
00242 |
00243 ;; -------------------------------------------------------------------------- |
00244 ;; This function is called by MIOS before the transfer of a MIDI byte. |
00245 ;; It can be used to monitor the Tx activity or to do any other actions |
00246 ;; (e.g. to switch a pin for multiplexed MIDI Outs) before the byte will |
00247 ;; be sent. |
00248 ;; Note that this is an interrupt service routine! Use FSR2 instead of FSR0 |
00249 ;; and IRQ_TMPx instead of TMPx -- and make the routine as fast as possible! |
00250 ;; Input: |
00251 ;; o transmitted byte in WREG |
00252 ;; -------------------------------------------------------------------------- |
338C 00253 USER_MIDI_NotifyTx |
00254 ;; notify Tx event to MIDI_RXTX handler |
338C EF0C F01A 00255 goto MIDI_RXTX_NotifyTx |
3390 0012 00256 return |
00257 |
00258 ;; -------------------------------------------------------------------------- |
gpasm-0.13.7 beta setup_tia_cartridge.asm1-30-2014 10:42:05 PAGE 41 |
|
|
LOC OBJECT CODE LINE SOURCE TEXT |
VALUE |
|
00259 ;; This function is called by MIOS when a MIDI byte has been received. |
00260 ;; It can be used to monitor the Rx activity or to do any action - e.g. |
00261 ;; to react on realtime events like MIDI clock (0xf8) with a minimum latency |
00262 ;; Note that this is an interrupt service routine! Use FSR2 instead of FSR0 |
00263 ;; and IRQ_TMPx instead of TMPx -- and make the routine as fast as possible! |
00264 ;; Input: |
00265 ;; o received byte in WREG |
00266 ;; -------------------------------------------------------------------------- |
3392 00267 USER_MIDI_NotifyRx |
00268 ;; temporary save received byte in IRQ_TMP1 |
3392 6E0B 00269 movwf IRQ_TMP1 |
00270 |
00271 ;; if MIDI clock: notify clock |
3394 EE21 F0F0 00272 lfsr FSR2, TIA_MIDI_SYNC |
3398 0AF8 00273 xorlw 0xf8 |
339A E103 00274 bnz USER_MIDI_NotifyRx_NoF8 |
339C 88DF 00275 bsf INDF2, TIA_MIDI_SYNC_F8 |
339E EFFF F019 00276 goto MIDI_RXTX_NotifyRx_BeatClk |
33A2 00277 USER_MIDI_NotifyRx_NoF8 |
00278 ;; if MIDI start: notify start |
33A2 500B 00279 movf IRQ_TMP1, W |
33A4 0AFA 00280 xorlw 0xfa |
33A6 E102 00281 bnz USER_MIDI_NotifyRx_NoFA |
33A8 8ADF 00282 bsf INDF2, TIA_MIDI_SYNC_FA |
33AA 6B69 00283 clrf MIDI_RXTX_BEAT_CTR |
33AC 00284 USER_MIDI_NotifyRx_NoFA |
00285 |
00286 ;; notify Rx event to MIDI_RXTX handler |
33AC EF08 F01A 00287 goto MIDI_RXTX_NotifyRx |
00288 |
00289 |
33B0 0012 00290 return |
00291 |
00292 ;; -------------------------------------------------------------------------- |
00293 ;; This function is called by MIOS when an button has been toggled |
00294 ;; Input: |
00295 ;; o Button number in WREG and MIOS_PARAMETER1 |
00296 ;; o Button value MIOS_PARAMETER2: |
00297 ;; - 1 if button has been released (=5V) |
00298 ;; - 0 if button has been pressed (=0V) |
00299 ;; -------------------------------------------------------------------------- |
33B2 00300 USER_DIN_NotifyToggle |
33B2 0012 00301 return |
00302 |
00303 |
00304 ;; -------------------------------------------------------------------------- |
00305 ;; This function is called by MIOS when an encoder has been moved |
00306 ;; Input: |
00307 ;; o Encoder number in WREG and MIOS_PARAMETER1 |
00308 ;; o signed incrementer value in MIOS_PARAMETER2: |
00309 ;; - is positive when encoder has been turned clockwise |
00310 ;; - is negative when encoder has been turned counter clockwise |
00311 ;; -------------------------------------------------------------------------- |
33B4 00312 USER_ENC_NotifyChange |
gpasm-0.13.7 beta setup_tia_cartridge.asm1-30-2014 10:42:05 PAGE 42 |
|
|
LOC OBJECT CODE LINE SOURCE TEXT |
VALUE |
|
33B4 0012 00313 return |
00314 |
00315 |
00316 ;; -------------------------------------------------------------------------- |
00317 ;; This function is called by MIOS before the shift register are loaded |
00318 ;; Note that this is an interrupt service routine! Use FSR2 instead of FSR0 |
00319 ;; and IRQ_TMPx instead of TMPx -- and make the routine as fast as possible |
00320 ;; -------------------------------------------------------------------------- |
33B6 00321 USER_SR_Service_Prepare |
33B6 0012 00322 return |
00323 |
00324 ;; -------------------------------------------------------------------------- |
00325 ;; This function is called by MIOS after the shift register have been loaded |
00326 ;; Note that this is an interrupt service routine! Use FSR2 instead of FSR0 |
00327 ;; and IRQ_TMPx instead of TMPx -- and make the routine as fast as possible |
00328 ;; -------------------------------------------------------------------------- |
33B8 00329 USER_SR_Service_Finish |
33B8 0012 00330 return |
00331 |
00332 ;; -------------------------------------------------------------------------- |
00333 ;; This function is called by MIOS when a pot has been moved |
00334 ;; Input: |
00335 ;; o Pot number in WREG and MIOS_PARAMETER1 |
00336 ;; o LSB value in MIOS_PARAMETER2 |
00337 ;; o MSB value in MIOS_PARAMETER3 |
00338 ;; -------------------------------------------------------------------------- |
33BA 00339 USER_AIN_NotifyChange |
33BA 0012 00340 return |
00341 |
00342 |
00343 ;; ========================================================================== |
00344 ;; Application code (see comments in files) |
00345 ;; ========================================================================== |
00346 |
00347 ;; ---[ modules from code library ]--- |
00348 ; override default pin definitions of AOUT driver |
00349 ;#define AOUT_LAT_CS LATC ; The chip select pin CS# |
00350 ;#define AOUT_TRIS_CS TRISC ; is connected to Port C.3 |
00351 ;#define AOUT_PIN_CS 3 ; (CANNOT be shared with other outputs!) |
00352 ; |
00353 ;#define AOUT_LAT_DIN LATC ; The data input pin DIN |
00354 ;#define AOUT_TRIS_DIN TRISC ; is connected to Port C.1 |
00355 ;#define AOUT_PIN_DIN 1 ; (can be shared with other outputs) |
00356 ;; |
00357 ;#define AOUT_LAT_SCLK LATC ; The shift clock input pin SCLK |
00358 ;#define AOUT_TRIS_SCLK TRISC ; is connected to Port C.0 |
00359 ;#define AOUT_PIN_SCLK 0 ; (can be shared with other outputs) |
00360 ; include AOUT driver (located in $MIOS_PATH/modules/aout/) |
00361 ;#include <aout.inc> |
00362 |
00363 ;#define J5_IO_DONT_USE_INPUT_FUNCTIONS 1 |
00364 ;#include <j5_io.inc> |
00365 |
00366 ;; ---[ reusable functions ]--- |
gpasm-0.13.7 beta setup_tia_cartridge.asm1-30-2014 10:42:05 PAGE 43 |
|
|
LOC OBJECT CODE LINE SOURCE TEXT |
VALUE |
|
00367 #include "math_mul16_16.inc" |
00001 ; $Id: math_mul16_16.inc 111 2008-02-22 00:41:21Z tk $ |
00002 ;; Multiply 16x16 bit routine from the PIC18F452 datasheet, Chapter 7.2 "8 X 8 HARDWARE MULTIPLIER, Operation" |
00003 |
00004 ;; MUL_R_3:MUL_R_0 = MUL_A_H:MUL_A_L * MUL_B_H:MUL_B_L |
00005 ;; = (MUL_A_H * MUL_B_H * 2^16) + |
00006 ;; (MUL_A_H * MUL_B_L * 2^8) + |
00007 ;; (MUL_A_L * MUL_B_H * 2^8) + |
00008 ;; (MUL_A_L * MUL_B_L) |
00009 |
33BC 00010 MATH_MUL16_16 |
00011 SET_BSR MUL_R_0 |
33BC 0101 M movlb HIGH(reg) |
00012 |
33BE 51F8 00013 movf MUL_A_L, W |
33C0 03FA 00014 mulwf MUL_B_L ; MUL_A_L * MUL_B_L -> PRODH:PRODL |
33C2 CFF4 F1FD 00015 movff PRODH, MUL_R_1 |
33C6 CFF3 F1FC 00016 movff PRODL, MUL_R_0 |
00017 |
33CA 51F9 00018 movf MUL_A_H, W |
33CC 03FB 00019 mulwf MUL_B_H ; MUL_A_H * MUL_B_H -> PRODH:PRODL |
33CE CFF4 F1FF 00020 movff PRODH, MUL_R_3 |
33D2 CFF3 F1FE 00021 movff PRODL, MUL_R_2 |
00022 |
33D6 51F8 00023 movf MUL_A_L, W |
33D8 03FB 00024 mulwf MUL_B_H ; MUL_A_L * MUL_B_H -> PRODH:PRODL |
33DA 50F3 00025 movf PRODL, W |
33DC 27FD 00026 addwf MUL_R_1, F ; Add cross |
33DE 50F4 00027 movf PRODH, W ; products |
33E0 23FE 00028 addwfc MUL_R_2, F |
33E2 6AE8 00029 clrf WREG |
33E4 23FF 00030 addwfc MUL_R_3, F |
00031 |
33E6 51F9 00032 movf MUL_A_H, W |
33E8 03FA 00033 mulwf MUL_B_L ; MUL_A_H * MUL_B_L -> PRODH:PRODL |
33EA 50F3 00034 movf PRODL, W |
33EC 27FD 00035 addwf MUL_R_1, F ; Add cross |
33EE 50F4 00036 movf PRODH, W ; products |
33F0 23FE 00037 addwfc MUL_R_2, F |
33F2 6AE8 00038 clrf WREG |
33F4 23FF 00039 addwfc MUL_R_3, F |
00040 |
33F6 0012 00041 return |
00368 #include "midi_rxtx.inc" |
00001 ; $Id: midi_rxtx.inc bdupeyron.tech@gmail.com(Antichambre) |
00002 ; |
00003 ; This file includes helpful functions to monitor the MIDI Rx/Tx activity |
00004 ; |
00005 ; o MIDI_RXTX_NotifyRx: to be called when a MIDI byte has been received |
00006 ; o MIDI_RXTX_NotifyTx: to be called when a MIDI byte has been sent |
00007 ; o MIDI_RXTX_Handler: to be called from USER_SR_Service_Prepare |
00008 ; |
00009 ; See the function headers for further details |
00010 ; |
gpasm-0.13.7 beta setup_tia_cartridge.asm1-30-2014 10:42:05 PAGE 44 |
|
|
LOC OBJECT CODE LINE SOURCE TEXT |
VALUE |
|
00011 ; Settings which can be modified: |
00012 ; |
00013 ; Number of update cycles (* 1mS) the LEDs will stay active on a Rx/Tx event |
33F8 00014 #define MIDI_RXTX_LED_DELAY 15 |
00015 ; DOUT pin number of Rx LED |
33F8 00016 #define MIDI_RXTX_RX_LED DEFAULT_MIDI_RX_LED |
00017 ; DOUT pin number of Tx LED |
33F8 00018 #define MIDI_RXTX_TX_LED DEFAULT_MIDI_TX_LED |
00019 ; |
00020 ; Following registers have to be located to free addresses in app_defines.h: |
00021 ; |
00022 ;MIDI_RXTX_RX_CTR EQU 0x019 |
00023 ;MIDI_RXTX_TX_CTR EQU 0x01a |
00024 ; |
00025 ; ========================================================================== |
00026 ; |
00027 ; Copyright 1998-2006 Thorsten Klose (tk@midibox.org) |
00028 ; Licensed for personal non-commercial use only. |
00029 ; All other rights reserved. |
00030 ; |
00031 ; ========================================================================== |
00032 |
00033 ;; -------------------------------------------------------------------------- |
00034 ;; FUNCTION: MIDI_RXTX_IO_Init |
00035 ;; DESCRIPTION: this function has to be called from the USER_Init |
00036 ;; only if Leds are assigned to IO pins |
00037 ;; -------------------------------------------------------------------------- |
33F8 00038 MIDI_RXTX_IO_Init |
33F8 9C95 00039 bcf DEFAULT_MIDI_RX_TRIS, DEFAULT_MIDI_RX_PIN |
33FA 9E95 00040 bcf DEFAULT_MIDI_TX_TRIS, DEFAULT_MIDI_TX_PIN |
33FC 0012 00041 return |
00042 |
00043 ;; -------------------------------------------------------------------------- |
00044 ;; FUNCTION: MIDI_RXTX_IO_Init |
00045 ;; DESCRIPTION: this function has to be called from the USER_Init |
00046 ;; only if Leds are assigned to IO pins |
00047 ;; -------------------------------------------------------------------------- |
33FE 00048 MIDI_RXTX_NotifyRx_BeatClk |
33FE 2B69 00049 incf MIDI_RXTX_BEAT_CTR, F |
3400 0E17 00050 movlw 0x17 |
3402 6569 00051 cpfsgt MIDI_RXTX_BEAT_CTR, BANKED |
00052 rgoto MIDI_RXTX_NotifyRx_BeatClk_End |
3404 D004 M bra label |
3406 6B69 00053 clrf MIDI_RXTX_BEAT_CTR |
3408 0E0F 00054 movlw MIDI_RXTX_LED_DELAY |
00055 SET_BSR MIDI_RXTX_RX_CTR |
340A 0100 M movlb HIGH(reg) |
340C 6F67 00056 movwf MIDI_RXTX_RX_CTR, BANKED |
340E 00057 MIDI_RXTX_NotifyRx_BeatClk_End |
340E 0012 00058 return |
00059 |
00060 ;; -------------------------------------------------------------------------- |
00061 ;; FUNCTION: MIDI_RXTX_NotifyRx |
00062 ;; DESCRIPTION: this function has to be called from the USER_MIDI_NotifyRx |
gpasm-0.13.7 beta setup_tia_cartridge.asm1-30-2014 10:42:05 PAGE 45 |
|
|
LOC OBJECT CODE LINE SOURCE TEXT |
VALUE |
|
00063 ;; hook when a MIDI event has been received to reload the RX counter |
00064 ;; -------------------------------------------------------------------------- |
3410 00065 MIDI_RXTX_NotifyRx |
3410 0E0F 00066 movlw MIDI_RXTX_LED_DELAY |
00067 SET_BSR MIDI_RXTX_RX_CTR |
3412 0100 M movlb HIGH(reg) |
3414 6F67 00068 movwf MIDI_RXTX_RX_CTR, BANKED |
3416 0012 00069 return |
00070 |
00071 ;; -------------------------------------------------------------------------- |
00072 ;; FUNCTION: MIDI_RXTX_NotifyTx |
00073 ;; DESCRIPTION: this function has to be called from the USER_MIDI_NotifyTx |
00074 ;; hook when a MIDI event will be transmitted to reload the TX counter |
00075 ;; -------------------------------------------------------------------------- |
3418 00076 MIDI_RXTX_NotifyTx |
3418 0E0F 00077 movlw MIDI_RXTX_LED_DELAY |
00078 SET_BSR MIDI_RXTX_TX_CTR |
341A 0100 M movlb HIGH(reg) |
341C 6F68 00079 movwf MIDI_RXTX_TX_CTR, BANKED |
341E 0012 00080 return |
00081 |
00082 ;; -------------------------------------------------------------------------- |
00083 ;; FUNCTION: MIDI_RXTX_Handler |
00084 ;; DESCRIPTION: this function has to be called from the USER_SR_ServicePrpeare |
00085 ;; hook, it decrements the Rx/Tx counters and sets the LEDs depending on the |
00086 ;; counter values |
00087 ;; -------------------------------------------------------------------------- |
3420 00088 MIDI_RXTX_Handler |
00089 #if DEFAULT_MIDI_MONITOR_ENABLED == 1 |
00090 ;; Decrement Rx counter if != 0 |
00091 SET_BSR MIDI_RXTX_RX_CTR |
3420 0100 M movlb HIGH(reg) |
3422 5167 00092 movf MIDI_RXTX_RX_CTR, W, BANKED |
3424 A4D8 00093 skpz |
3426 0767 00094 decf MIDI_RXTX_RX_CTR, F, BANKED |
00095 |
00096 ;; Decrement Tx counter if != 0 |
00097 SET_BSR MIDI_RXTX_TX_CTR |
3428 0100 M movlb HIGH(reg) |
342A 5168 00098 movf MIDI_RXTX_TX_CTR, W, BANKED |
342C A4D8 00099 skpz |
342E 0768 00100 decf MIDI_RXTX_TX_CTR, F, BANKED |
00101 |
00102 |
00103 ;; |
00104 ;; remove the code below if you don't want to use LEDs to |
00105 ;; indicate the counter state |
00106 ;; |
00107 |
00108 ;; set the Rx LED depending on counter state |
00109 SET_BSR MIDI_RXTX_RX_CTR |
3430 0100 M movlb HIGH(reg) |
3432 5167 00110 movf MIDI_RXTX_RX_CTR, W, BANKED |
3434 A4D8 00111 skpz |
gpasm-0.13.7 beta setup_tia_cartridge.asm1-30-2014 10:42:05 PAGE 46 |
|
|
LOC OBJECT CODE LINE SOURCE TEXT |
VALUE |
|
3436 0E01 00112 movlw 0x01 |
3438 6E03 00113 movwf MIOS_PARAMETER1 |
00114 |
00115 #if MIDI_RXTX_USE_IO |
343A 9C8C 00116 bcf DEFAULT_MIDI_RX_LAT, DEFAULT_MIDI_RX_PIN |
343C 5003 00117 movf MIOS_PARAMETER1, W |
343E A4D8 00118 skpz |
3440 8C8C 00119 bsf DEFAULT_MIDI_RX_LAT, DEFAULT_MIDI_RX_PIN |
00120 #else |
00121 movlw MIDI_RXTX_RX_LED |
00122 call MIOS_DOUT_PinSet |
00123 #endif |
00124 |
00125 ;; set the Tx LED depending on counter state |
00126 SET_BSR MIDI_RXTX_TX_CTR |
3442 0100 M movlb HIGH(reg) |
3444 5168 00127 movf MIDI_RXTX_TX_CTR, W, BANKED |
3446 A4D8 00128 skpz |
3448 0E01 00129 movlw 0x01 |
344A 6E03 00130 movwf MIOS_PARAMETER1 |
00131 |
00132 #if MIDI_RXTX_USE_IO |
344C 9E8C 00133 bcf DEFAULT_MIDI_TX_LAT, DEFAULT_MIDI_TX_PIN |
344E 5003 00134 movf MIOS_PARAMETER1, W |
3450 A4D8 00135 skpz |
3452 8E8C 00136 bsf DEFAULT_MIDI_TX_LAT, DEFAULT_MIDI_TX_PIN |
00137 #else |
00138 movlw MIDI_RXTX_TX_LED |
00139 call MIOS_DOUT_PinSet |
00140 #endif |
00141 #endif |
3454 0012 00142 return |
00369 #include "special_characters.inc" |
00001 ; $Id: special_characters.inc 125 2008-02-27 09:10:44Z nils $ |
00002 ; |
00003 ; This file contains all special characters used by the application |
00004 ; |
00005 ; ========================================================================== |
00006 ; |
00007 ; Copyright 1998-2006 Thorsten Klose (tk@midibox.org) |
00008 ; Licensed for personal non-commercial use only. |
00009 ; All other rights reserved. |
00010 ; |
00011 ; ========================================================================== |
00012 |
00013 ;; -------------------------------------------------------------------------- |
00014 ;; Table of special characters |
00015 ;; NOTE: only seven characters are really used by the CS, the others can contain |
00016 ;; random bitpatterns, therefore this table only contains 16 bytes |
00017 ;; -------------------------------------------------------------------------- |
3456 00018 CS_MENU_SPECIAL_CHARS |
00019 ;; due to an imperfection in the MPASM we have |
00020 ;; to write two bytes in every line :-( |
00021 ;; char #0: left-arrow |
gpasm-0.13.7 beta setup_tia_cartridge.asm1-30-2014 10:42:05 PAGE 47 |
|
|
LOC OBJECT CODE LINE SOURCE TEXT |
VALUE |
|
3456 0301 00022 db b'00000001', b'00000011'; 1st and 2nd line of special char |
3458 0307 00023 db b'00000111', b'00000011'; 3rd and 4th line of special char |
345A 0001 00024 db b'00000001', b'00000000'; 5th and 6th line of special char |
345C 0000 00025 db b'00000000', b'00000000'; 7th and 8th line of special char |
00026 ;; char #1: right-arrow |
345E 0000 00027 db b'00000000', b'00000000'; 1st and 2nd line of special char |
3460 1000 00028 db b'00000000', b'00010000'; 3rd and 4th line of special char |
3462 1C18 00029 db b'00011000', b'00011100'; 5th and 6th line of special char |
3464 1018 00030 db b'00011000', b'00010000'; 7th and 8th line of special char |
00031 ;; char #2: inverted 1 |
3466 131B 00032 db b'00011011', b'00010011'; 1st and 2nd line of special char |
3468 1B1B 00033 db b'00011011', b'00011011'; 3rd and 4th line of special char |
346A 1B1B 00034 db b'00011011', b'00011011'; 5th and 6th line of special char |
346C 1F11 00035 db b'00010001', b'00011111'; 7th and 8th line of special char |
00036 ;; char #3: inverted 2 |
346E 0E11 00037 db b'00010001', b'00001110'; 1st and 2nd line of special char |
3470 1D1E 00038 db b'00011110', b'00011101'; 3rd and 4th line of special char |
3472 171B 00039 db b'00011011', b'00010111'; 5th and 6th line of special char |
3474 1F00 00040 db b'00000000', b'00011111'; 7th and 8th line of special char |
00041 ;; char #4: inverted 3 |
3476 1D00 00042 db b'00000000', b'00011101'; 1st and 2nd line of special char |
3478 1D1B 00043 db b'00011011', b'00011101'; 3rd and 4th line of special char |
347A 0E1E 00044 db b'00011110', b'00001110'; 5th and 6th line of special char |
347C 1F11 00045 db b'00010001', b'00011111'; 7th and 8th line of special char |
00046 ;; char #5: inverted 4 |
347E 191D 00047 db b'00011101', b'00011001'; 1st and 2nd line of special char |
3480 0D15 00048 db b'00010101', b'00001101'; 3rd and 4th line of special char |
3482 1D00 00049 db b'00000000', b'00011101'; 5th and 6th line of special char |
3484 1F1D 00050 db b'00011101', b'00011111'; 7th and 8th line of special char |
00051 ;; char #6: inverted '-' |
3486 1F1F 00052 db b'00011111', b'00011111'; 1st and 2nd line of special char |
3488 001F 00053 db b'00011111', b'00000000'; 3rd and 4th line of special char |
348A 1F1F 00054 db b'00011111', b'00011111'; 5th and 6th line of special char |
348C 1F1F 00055 db b'00011111', b'00011111'; 7th and 8th line of special char |
00056 ;; char #7: left/right arrow |
348E 0301 00057 db b'00000001', b'00000011'; line 1 / 2 |
3490 1307 00058 db b'00000111', b'00010011'; line 3 / 4 |
3492 1C19 00059 db b'00011001', b'00011100'; line 5 / 6 |
3494 1018 00060 db b'00011000', b'00010000'; line 7 / 8 |
00370 |
00371 #if DEFAULT_TIA_DEBUG_ON == 1 |
00372 ;; ---[ Debug Mess driver ]--- |
00373 #include "debug_msg.inc" |
00001 ; $Id: debug_msg.inc 626 2009-01-19 21:36:33Z tk $ |
00002 ; |
00003 ; Help functions to send debug messages to MIOS Terminal via SysEx |
00004 ; |
00005 ; ========================================================================== |
00006 ; |
00007 ; Copyright 2009 Thorsten Klose (tk@midibox.org) |
00008 ; Licensed for personal non-commercial use only. |
00009 ; All other rights reserved. |
00010 ; |
00011 ; ========================================================================== |
gpasm-0.13.7 beta setup_tia_cartridge.asm1-30-2014 10:42:05 PAGE 48 |
|
|
LOC OBJECT CODE LINE SOURCE TEXT |
VALUE |
|
00012 |
00013 |
00014 ;; -------------------------------------------------------------------------- |
00015 ;; FUNCTION: DEBUG_MSG_SendHeader |
00016 ;; DESCRIPTION: sends the SysEx header |
00017 ;; IN: - |
00018 ;; OUT: - |
00019 ;; USES: BSR, FSR1 |
00020 ;; -------------------------------------------------------------------------- |
3496 00021 _DEBUG_MSG_SendHeader ; for C |
3496 00022 DEBUG_MSG_SendHeader |
00023 ;; this SysEx command will be parsed by MIOS Terminal to print out text messages |
3496 0EF0 00024 movlw 0xf0 |
3498 EC24 F016 00025 call MIOS_MIDI_TxBufferPut |
349C 0E00 00026 movlw 0x00 |
349E EC24 F016 00027 call MIOS_MIDI_TxBufferPut |
34A2 0E00 00028 movlw 0x00 |
34A4 EC24 F016 00029 call MIOS_MIDI_TxBufferPut |
34A8 0E7E 00030 movlw 0x7e |
34AA EC24 F016 00031 call MIOS_MIDI_TxBufferPut |
34AE 0E32 00032 movlw 0x32 |
34B0 EC24 F016 00033 call MIOS_MIDI_TxBufferPut |
34B4 EC04 F016 00034 call MIOS_MIDI_DeviceIDGet |
34B8 EC24 F016 00035 call MIOS_MIDI_TxBufferPut |
34BC 0E0D 00036 movlw 0x0d |
34BE EC24 F016 00037 call MIOS_MIDI_TxBufferPut |
34C2 0E40 00038 movlw 0x40 |
34C4 EC24 F016 00039 call MIOS_MIDI_TxBufferPut |
00040 |
00041 ;; following characters will be print on terminal |
34C8 0012 00042 return |
00043 |
00044 |
00045 ;; -------------------------------------------------------------------------- |
00046 ;; FUNCTION: DEBUG_MSG_SendFooter |
00047 ;; DESCRIPTION: sends the SysEx footer |
00048 ;; IN: - |
00049 ;; OUT: - |
00050 ;; USES: BSR, FSR1 |
00051 ;; -------------------------------------------------------------------------- |
34CA 00052 _DEBUG_MSG_SendFooter ; for C |
34CA 00053 DEBUG_MSG_SendFooter |
00054 ;; finish SysEx stream - MIOS Terminal will print the received characters now |
34CA 0EF7 00055 movlw 0xf7 |
34CC EC24 F016 00056 call MIOS_MIDI_TxBufferPut |
34D0 0012 00057 return |
00058 |
00059 |
00060 ;; -------------------------------------------------------------------------- |
00061 ;; FUNCTION: DEBUG_MSG_SendChar |
00062 ;; DESCRIPTION: sends a single character |
00063 ;; IN: Character in WREG |
00064 ;; OUT: - |
00065 ;; USES: BSR, FSR1 |
gpasm-0.13.7 beta setup_tia_cartridge.asm1-30-2014 10:42:05 PAGE 49 |
|
|
LOC OBJECT CODE LINE SOURCE TEXT |
VALUE |
|
00066 ;; -------------------------------------------------------------------------- |
34D2 00067 _DEBUG_MSG_SendChar ; for C |
34D2 00068 DEBUG_MSG_SendChar |
34D2 0B7F 00069 andlw 0x7f ; ensure that MSB is cleared, otherwise we would violate the MIDI protocol |
34D4 EF24 F016 00070 goto MIOS_MIDI_TxBufferPut |
00071 |
00072 |
00073 ;; -------------------------------------------------------------------------- |
00074 ;; FUNCTION: DEBUG_MSG_SendASMString |
00075 ;; DESCRIPTION: used in assembly programs to send a string |
00076 ;; see example in README.txt for usage |
00077 ;; IN: zero-terminated string after call instruction |
00078 ;; OUT: - |
00079 ;; USES: BSR, FSR1, TBLPTR[LHU], TABLAT |
00080 ;; -------------------------------------------------------------------------- |
34D8 00081 DEBUG_MSG_SendASMString |
00082 ;; we expect that the zero-terminated string is located behind the "call" instruction |
00083 ;; transfer pointer to TBLPTR[LHU] |
34D8 CFFD FFF6 00084 movff TOSL, TBLPTRL |
34DC CFFE FFF7 00085 movff TOSH, TBLPTRH |
34E0 CFFF FFF8 00086 movff TOSU, TBLPTRU |
00087 |
00088 ;; print until zero is read |
34E4 00089 DEBUG_MSG_SendASMStringLoop |
34E4 0009 00090 tblrd*+ |
34E6 50F5 00091 movf TABLAT, W |
34E8 E002 00092 bz DEBUG_MSG_SendASMStringLoop_End |
34EA DFF3 00093 rcall DEBUG_MSG_SendChar |
00094 rgoto DEBUG_MSG_SendASMStringLoop |
34EC D7FB M bra label |
34EE 00095 DEBUG_MSG_SendASMStringLoop_End |
00096 |
00097 ;; return pointer now in TBLPTR[LH] |
00098 |
00099 ;; ensure that it is aligned to next instruction |
34EE 50F6 00100 movf TBLPTRL, W |
34F0 0B01 00101 andlw 0x01 |
34F2 E005 00102 bz DEBUG_MSG_SendASMString_NoIAlign |
34F4 2AF6 00103 incf TBLPTRL, F |
34F6 B4D8 00104 skpnz |
34F8 2AF7 00105 incf TBLPTRH, F |
34FA B4D8 00106 skpnz |
34FC 2AF8 00107 incf TBLPTRU, F |
34FE 00108 DEBUG_MSG_SendASMString_NoIAlign |
00109 |
00110 IRQ_DISABLE |
34FE 9EF2 M bcf INTCON, GIE |
3500 50F6 00111 movf TBLPTRL, W |
3502 6EFD 00112 movwf TOSL |
3504 50F7 00113 movf TBLPTRH, W |
3506 6EFE 00114 movwf TOSH |
3508 50F8 00115 movf TBLPTRU, W |
350A 6EFF 00116 movwf TOSU |
00117 IRQ_ENABLE |
gpasm-0.13.7 beta setup_tia_cartridge.asm1-30-2014 10:42:05 PAGE 50 |
|
|
LOC OBJECT CODE LINE SOURCE TEXT |
VALUE |
|
350C 8EF2 M bsf INTCON, GIE |
350E 0012 00118 return |
00119 |
00120 |
00121 ;; -------------------------------------------------------------------------- |
00122 ;; FUNCTION: DEBUG_MSG_SendBCD1 |
00123 ;; DESCRIPTION: sends a 8-bit value as BCD (decimal value) -- one digit only |
00124 ;; IN: Value in WREG |
00125 ;; OUT: - |
00126 ;; USES: BSR, FSR1 |
00127 ;; -------------------------------------------------------------------------- |
00128 ;; -------------------------------------------------------------------------- |
00129 ;; FUNCTION: DEBUG_MSG_SendHex1 |
00130 ;; DESCRIPTION: sends a 4-bit hex value |
00131 ;; IN: Value in WREG |
00132 ;; OUT: - |
00133 ;; USES: BSR, FSR1 |
00134 ;; -------------------------------------------------------------------------- |
3510 00135 _DEBUG_MSG_SendBCD1 ; for C |
3510 00136 DEBUG_MSG_SendBCD1 |
3510 00137 _DEBUG_MSG_SendHex1 ; for C |
3510 00138 DEBUG_MSG_SendHex1 |
3510 0B0F 00139 andlw 0x0f |
3512 0FF6 00140 addlw -0x0a |
3514 B0D8 00141 skpnc |
3516 0F07 00142 addlw 0x07 |
3518 0F3A 00143 addlw 0x3a |
00144 rgoto DEBUG_MSG_SendChar |
351A D7DB M bra label |
00145 |
00146 |
00147 ;; -------------------------------------------------------------------------- |
00148 ;; FUNCTION: DEBUG_MSG_SendHex2 |
00149 ;; DESCRIPTION: sends a 8-bit hex value |
00150 ;; IN: Value in WREG |
00151 ;; OUT: - |
00152 ;; USES: BSR, FSR1, PRODL (!) |
00153 ;; -------------------------------------------------------------------------- |
351C 00154 _DEBUG_MSG_SendHex2 ; for C |
351C 00155 DEBUG_MSG_SendHex2 |
351C 6EF3 00156 movwf PRODL |
351E 38F3 00157 swapf PRODL, W |
3520 DFF7 00158 rcall DEBUG_MSG_SendBCD1 |
3522 50F3 00159 movf PRODL, W |
00160 rgoto DEBUG_MSG_SendBCD1 |
3524 D7F5 M bra label |
00161 |
00162 |
00163 ;; -------------------------------------------------------------------------- |
00164 ;; FUNCTION: DEBUG_MSG_SendBCD2 |
00165 ;; DESCRIPTION: prints a 8-bit value as BCD (decimal value) -- two digits only |
00166 ;; IN: Value in WREG |
00167 ;; OUT: - |
00168 ;; USES: BSR, FSR1 |
gpasm-0.13.7 beta setup_tia_cartridge.asm1-30-2014 10:42:05 PAGE 51 |
|
|
LOC OBJECT CODE LINE SOURCE TEXT |
VALUE |
|
00169 ;; -------------------------------------------------------------------------- |
3526 00170 _DEBUG_MSG_SendBCD2 ; for C |
3526 00171 DEBUG_MSG_SendBCD2 |
3526 6A03 00172 clrf MIOS_PARAMETER1 |
3528 ECF4 F016 00173 call MIOS_HLP_Dec2BCD |
00174 rgoto DEBUG_MSG_SendBCD2_Cont |
352C D018 M bra label |
00175 |
00176 ;; -------------------------------------------------------------------------- |
00177 ;; FUNCTION: DEBUG_MSG_SendBCD3 |
00178 ;; DESCRIPTION: prints a 8-bit value as BCD (decimal value) -- all three digits |
00179 ;; IN: Value in WREG |
00180 ;; OUT: - |
00181 ;; USES: BSR, FSR1 |
00182 ;; -------------------------------------------------------------------------- |
352E 00183 _DEBUG_MSG_SendBCD3 ; for C |
352E 00184 DEBUG_MSG_SendBCD3 |
352E 6A03 00185 clrf MIOS_PARAMETER1 |
3530 ECF4 F016 00186 call MIOS_HLP_Dec2BCD |
00187 rgoto DEBUG_MSG_SendBCD3_Cont |
3534 D00F M bra label |
00188 |
00189 ;; -------------------------------------------------------------------------- |
00190 ;; FUNCTION: DEBUG_MSG_SendBCD4 |
00191 ;; DESCRIPTION: prints a 16-bit as BCD (decimal value) -- four digits |
00192 ;; IN: Low-byte in WREG, High-byte in MIOS_PARAMETER1 |
00193 ;; IN: Value in WREG |
00194 ;; OUT: - |
00195 ;; USES: BSR, FSR1, MIOS_PARAMETER[123] |
00196 ;; -------------------------------------------------------------------------- |
00197 ;_DEBUG_MSG_SendBCD4 ; "unsigned int" parameter converted in debug_msg.asm |
3536 00198 DEBUG_MSG_SendBCD4 |
3536 ECF4 F016 00199 call MIOS_HLP_Dec2BCD |
00200 rgoto DEBUG_MSG_SendBCD4_Cont |
353A D007 M bra label |
00201 |
00202 ;; -------------------------------------------------------------------------- |
00203 ;; FUNCTION: DEBUG_MSG_SendBCD5 |
00204 ;; DESCRIPTION: prints a 16-bit as BCD (decimal value) -- five digits |
00205 ;; IN: Low-byte in WREG, High-byte in MIOS_PARAMETER1 |
00206 ;; IN: Value in WREG |
00207 ;; OUT: - |
00208 ;; USES: BSR, FSR1, MIOS_PARAMETER[123] |
00209 ;; -------------------------------------------------------------------------- |
00210 ;_DEBUG_MSG_SendBCD5 ; "unsigned int" parameter converted in debug_msg.asm |
353C 00211 DEBUG_MSG_SendBCD5 |
353C ECF4 F016 00212 call MIOS_HLP_Dec2BCD |
00213 |
00214 ;; ----------------- |
3540 00215 DEBUG_MSG_SendBCD5_Cont |
3540 5005 00216 movf MIOS_PARAMETER3, W |
3542 0B0F 00217 andlw 0x0f |
3544 E112 00218 bnz DEBUG_MSG_SendBCD_D5 |
00219 |
gpasm-0.13.7 beta setup_tia_cartridge.asm1-30-2014 10:42:05 PAGE 52 |
|
|
LOC OBJECT CODE LINE SOURCE TEXT |
VALUE |
|
3546 0E20 00220 movlw ' ' |
3548 DFC4 00221 rcall DEBUG_MSG_SendChar |
00222 |
354A 00223 DEBUG_MSG_SendBCD4_Cont |
354A 3804 00224 swapf MIOS_PARAMETER2, W |
354C 0B0F 00225 andlw 0x0f |
354E E10E 00226 bnz DEBUG_MSG_SendBCD_D4 |
00227 |
3550 0E20 00228 movlw ' ' |
3552 DFBF 00229 rcall DEBUG_MSG_SendChar |
00230 |
3554 00231 DEBUG_MSG_SendBCD3_Cont |
3554 5004 00232 movf MIOS_PARAMETER2, W |
3556 0B0F 00233 andlw 0x0f |
3558 E10B 00234 bnz DEBUG_MSG_SendBCD_D3 |
00235 |
355A 0E20 00236 movlw ' ' |
355C DFBA 00237 rcall DEBUG_MSG_SendChar |
00238 |
355E 00239 DEBUG_MSG_SendBCD2_Cont |
355E 3803 00240 swapf MIOS_PARAMETER1, W |
3560 0B0F 00241 andlw 0x0f |
3562 E108 00242 bnz DEBUG_MSG_SendBCD_D2 |
00243 |
3564 0E20 00244 movlw ' ' |
3566 DFB5 00245 rcall DEBUG_MSG_SendChar |
00246 |
3568 00247 DEBUG_MSG_SendBCD1_Cont |
00248 rgoto DEBUG_MSG_SendBCD_D1 |
3568 D007 M bra label |
00249 |
00250 |
00251 ;; --- |
356A 00252 DEBUG_MSG_SendBCD_D5 |
356A DFD2 00253 rcall DEBUG_MSG_SendBCD1 |
356C 00254 DEBUG_MSG_SendBCD_D4 |
356C 3804 00255 swapf MIOS_PARAMETER2, W |
356E DFD0 00256 rcall DEBUG_MSG_SendBCD1 |
3570 00257 DEBUG_MSG_SendBCD_D3 |
3570 5004 00258 movf MIOS_PARAMETER2, W |
3572 DFCE 00259 rcall DEBUG_MSG_SendBCD1 |
3574 00260 DEBUG_MSG_SendBCD_D2 |
3574 3803 00261 swapf MIOS_PARAMETER1, W |
3576 DFCC 00262 rcall DEBUG_MSG_SendBCD1 |
3578 00263 DEBUG_MSG_SendBCD_D1 |
3578 5003 00264 movf MIOS_PARAMETER1, W |
00265 rgoto DEBUG_MSG_SendBCD1 |
357A D7CA M bra label |
00266 |
00267 |
00268 ;; -------------------------------------------------------------------------- |
00269 ;; FUNCTION: DEBUG_MSG_SendCString |
00270 ;; C_DECLARATION: void DEBUG_MSG_SendCString(char *str) |
00271 ;; DESCRIPTION: sends a 0-terminated string --- only provided by the C Wrapper! |
gpasm-0.13.7 beta setup_tia_cartridge.asm1-30-2014 10:42:05 PAGE 53 |
|
|
LOC OBJECT CODE LINE SOURCE TEXT |
VALUE |
|
00272 ;; C_IN: Pointer to 0-terminated String in <str> |
00273 ;; USES: BSR, FSR1 |
00274 ;; -------------------------------------------------------------------------- |
00374 #include "tia_debug.inc" |
00001 ; $Id: tia_debug.inc bdupeyron.tech@gmail.com(Antichambre) |
00002 ; |
00003 ; MIDIbox TIA |
00004 ; TIA Debugging Service Routine |
00005 ; |
00006 ; ========================================================================== |
00007 ; |
00008 ; Copyright 1998-2006 Thorsten Klose (tk@midibox.org) |
00009 ; Licensed for personal non-commercial use only. |
00010 ; All other rights reserved. |
00011 ; |
00012 ; ========================================================================== |
00013 |
00014 |
00015 ;; -------------------------------------------------------------------------- |
00016 ;; Initialize the TIA Debugger module |
00017 ;; -------------------------------------------------------------------------- |
357C 00018 TIA_Debug_Init |
357C 0012 00019 return |
00020 |
00021 ;; -------------------------------------------------------------------------- |
00022 ;; Check for changes in TIA registers, transfer values to TIA |
00023 ;; and handle Wavetable |
00024 ;; -------------------------------------------------------------------------- |
357E 00025 TIA_Debug_Handler |
00026 |
00027 #if DEFAULT_TIA_DEBUG_BS |
357E D964 00028 rcall TIA_Debug_BS_Check |
00029 #endif |
00030 |
00031 #if 0 |
00032 BRA_IFCLR REG_TEMP, 0, ACCESS, TIA_Debug_Handler_Jump0 |
00033 bcf REG_TEMP, 0 |
00034 call DEBUG_MSG_SendHeader |
00035 call DEBUG_MSG_SendASMString |
00036 db "env mode:", 0 |
00037 movf REG_TEMP2, W |
00038 call DEBUG_MSG_SendBCD3 |
00039 |
00040 call DEBUG_MSG_SendASMString |
00041 db " Modulation:", 0 |
00042 BRA_IFSET REG_TEMP, 3, ACCESS, TIA_Debug_Handler_test_neg |
00043 TIA_Debug_Handler_test_pos |
00044 call DEBUG_MSG_SendASMString |
00045 db "+", 0 |
00046 bra TIA_Debug_Handler_test_Cont |
00047 TIA_Debug_Handler_test_neg |
00048 call DEBUG_MSG_SendASMString |
00049 db "-", 0 |
00050 TIA_Debug_Handler_test_Cont |
gpasm-0.13.7 beta setup_tia_cartridge.asm1-30-2014 10:42:05 PAGE 54 |
|
|
LOC OBJECT CODE LINE SOURCE TEXT |
VALUE |
|
00051 |
00052 movf REG_TEMP3, W |
00053 call DEBUG_MSG_SendBCD3 |
00054 |
00055 call DEBUG_MSG_SendFooter |
00056 TIA_Debug_Handler_Jump0 |
00057 #endif |
00058 #if 0 |
00059 BRA_IFCLR REG_TEMP, 0, ACCESS, TIA_Debug_Handler_Jump0 |
00060 bcf REG_TEMP, 0 |
00061 call DEBUG_MSG_SendHeader |
00062 call DEBUG_MSG_SendASMString |
00063 db " bank read!:", 0 |
00064 call DEBUG_MSG_SendFooter |
00065 TIA_Debug_Handler_Jump0 |
00066 |
00067 BRA_IFCLR REG_TEMP, 1, ACCESS, TIA_Debug_Handler_Jump1 |
00068 bcf REG_TEMP, 1 |
00069 call DEBUG_MSG_SendHeader |
00070 call DEBUG_MSG_SendASMString |
00071 db " bank write!:", 0 |
00072 call DEBUG_MSG_SendFooter |
00073 TIA_Debug_Handler_Jump1 |
00074 |
00075 #endif |
00076 |
00077 #if 0 |
00078 |
00079 BRA_IFCLR REG_TEMP, REG_TEMP_TEST_FLAG, ACCESS, TIA_Debug_Handler_Cont |
00080 bcf REG_TEMP, REG_TEMP_TEST_FLAG |
00081 call DEBUG_MSG_SendHeader |
00082 call DEBUG_MSG_SendASMString |
00083 db " tune test:", 0 |
00084 call DEBUG_MSG_SendFooter |
00085 |
00086 call TIA_TUNE_Play_Fanfare |
00087 #endif |
00088 |
00089 #if 0 |
00090 |
00091 BRA_IFCLR REG_TEMP, 1, ACCESS, TIA_Debug_Handler_Cont |
00092 bcf REG_TEMP, 1 |
00093 call DEBUG_MSG_SendHeader |
00094 call DEBUG_MSG_SendASMString |
00095 db " tune test passed:", 0 |
00096 call DEBUG_MSG_SendFooter |
00097 #endif |
00098 |
00099 #if 0 |
00100 |
00101 BRA_IFCLR REG_TEMP, REG_TEMP_TEST_FLAG, ACCESS, TIA_Debug_Handler_Cont |
00102 bcf REG_TEMP, REG_TEMP_TEST_FLAG |
00103 |
00104 |
gpasm-0.13.7 beta setup_tia_cartridge.asm1-30-2014 10:42:05 PAGE 55 |
|
|
LOC OBJECT CODE LINE SOURCE TEXT |
VALUE |
|
00105 call DEBUG_MSG_SendHeader |
00106 |
00107 |
00108 call DEBUG_MSG_SendASMString |
00109 db " waveform:", 0 |
00110 |
00111 movlw 0x11 |
00112 call TIA_CCOUT_Get ; get CC parameter value |
00113 call DEBUG_MSG_SendBCD3 |
00114 |
00115 call DEBUG_MSG_SendFooter |
00116 #endif |
00117 |
00118 |
00119 #if 0 |
00120 |
00121 BRA_IFCLR REG_TEMP, REG_TEMP_TEST_FLAG, ACCESS, TIA_Debug_Handler_Cont |
00122 bcf REG_TEMP, REG_TEMP_TEST_FLAG |
00123 |
00124 call DEBUG_MSG_SendHeader |
00125 |
00126 |
00127 call DEBUG_MSG_SendASMString |
00128 db " Env:", 0 |
00129 BRA_IFSET REG_TEMP, 3, ACCESS, TIA_Debug_Handler_vel_neg |
00130 TIA_Debug_Handler_vel_pos |
00131 call DEBUG_MSG_SendASMString |
00132 db "+", 0 |
00133 bra TIA_Debug_Handler_vel_Cont |
00134 TIA_Debug_Handler_vel_neg |
00135 call DEBUG_MSG_SendASMString |
00136 db "-", 0 |
00137 TIA_Debug_Handler_vel_Cont |
00138 |
00139 movf REG_TEMP2, W |
00140 call DEBUG_MSG_SendBCD3 |
00141 |
00142 call DEBUG_MSG_SendFooter |
00143 #endif |
00144 |
00145 #if 0 |
00146 |
00147 BRA_IFCLR REG_TEMP, REG_TEMP_TEST_FLAG, ACCESS, TIA_Debug_Handler_Cont |
00148 bcf REG_TEMP, REG_TEMP_TEST_FLAG |
00149 call DEBUG_MSG_SendHeader |
00150 |
00151 call DEBUG_MSG_SendASMString |
00152 db "Value:", 0 |
00153 movf REG_TEMP2, W |
00154 call DEBUG_MSG_SendBCD3 |
00155 |
00156 call DEBUG_MSG_SendASMString |
00157 db " /CC:", 0 |
00158 movf REG_TEMP3, W |
gpasm-0.13.7 beta setup_tia_cartridge.asm1-30-2014 10:42:05 PAGE 56 |
|
|
LOC OBJECT CODE LINE SOURCE TEXT |
VALUE |
|
00159 call DEBUG_MSG_SendBCD3 |
00160 |
00161 call DEBUG_MSG_SendFooter |
00162 #endif |
00163 |
00164 #if 0 |
00165 BRA_IFCLR REG_TEMP, REG_TEMP_TEST_FLAG, ACCESS, TIA_Debug_Handler_Cont |
00166 bcf REG_TEMP, REG_TEMP_TEST_FLAG |
00167 call DEBUG_MSG_SendHeader |
00168 call DEBUG_MSG_SendASMString |
00169 db "ctr:", 0 |
00170 |
00171 movf REG_TEMP3, W, ACCESS |
00172 movwf MIOS_PARAMETER1 |
00173 movf REG_TEMP2, W, ACCESS |
00174 call DEBUG_MSG_SendBCD5 |
00175 BRA_IFSET REG_TEMP, 4, ACCESS, TIA_Debug_Handler_ctr_c |
00176 TIA_Debug_Handler_ctr_nc |
00177 call DEBUG_MSG_SendASMString |
00178 db "", 0 |
00179 bra TIA_Debug_Handler_ctr_Cont |
00180 TIA_Debug_Handler_ctr_c |
00181 call DEBUG_MSG_SendASMString |
00182 db " overflow", 0 |
00183 TIA_Debug_Handler_ctr_Cont |
00184 |
00185 call DEBUG_MSG_SendASMString |
00186 db " /current:", 0 |
00187 |
00188 movf REG_TEMP7, W, ACCESS |
00189 movwf MIOS_PARAMETER1 |
00190 movf REG_TEMP6, W, ACCESS |
00191 call DEBUG_MSG_SendBCD5 |
00192 |
00193 call DEBUG_MSG_SendASMString |
00194 db " /target:", 0 |
00195 |
00196 movf REG_TEMP5, W, ACCESS |
00197 movwf MIOS_PARAMETER1 |
00198 movf REG_TEMP4, W, ACCESS |
00199 call DEBUG_MSG_SendBCD5 |
00200 |
00201 call DEBUG_MSG_SendASMString |
00202 db " /delta:", 0 |
00203 movf REG_TEMP13, W, ACCESS |
00204 movwf MIOS_PARAMETER1 |
00205 movf REG_TEMP12, W, ACCESS |
00206 call DEBUG_MSG_SendBCD5 |
00207 BRA_IFSET REG_TEMP, 3, ACCESS, TIA_Debug_Handler_delta_neg |
00208 TIA_Debug_Handler_delta_pos |
00209 call DEBUG_MSG_SendASMString |
00210 db "+", 0 |
00211 bra TIA_Debug_Handler_delta_Cont |
00212 TIA_Debug_Handler_delta_neg |
gpasm-0.13.7 beta setup_tia_cartridge.asm1-30-2014 10:42:05 PAGE 57 |
|
|
LOC OBJECT CODE LINE SOURCE TEXT |
VALUE |
|
00213 call DEBUG_MSG_SendASMString |
00214 db "-", 0 |
00215 TIA_Debug_Handler_delta_Cont |
00216 movf REG_TEMP9, W, ACCESS |
00217 movwf MIOS_PARAMETER1 |
00218 movf REG_TEMP8, W, ACCESS |
00219 call DEBUG_MSG_SendBCD5 |
00220 |
00221 call DEBUG_MSG_SendASMString |
00222 db " /result:", 0 |
00223 |
00224 movf REG_TEMP11, W, ACCESS |
00225 movwf MIOS_PARAMETER1 |
00226 movf REG_TEMP10, W, ACCESS |
00227 call DEBUG_MSG_SendBCD5 |
00228 call DEBUG_MSG_SendFooter |
00229 #endif |
00230 |
3580 00231 TIA_Debug_Handler_Cont |
00232 |
00233 |
3580 00234 TIA_Debug_Handler_End |
3580 0012 00235 return |
00236 |
00237 |
00238 ;; -------------------------------------------------------------------------- |
00239 ;; MACRO |
00240 ;; '0' or '1' for send binary number |
00241 ;; -------------------------------------------------------------------------- |
00242 TIA_Debug_WRITEBINx MACRO REG, FLAG_b |
00243 LOCAL TIA_Debug_WRITEBINx_1 |
00244 LOCAL TIA_Debug_WRITEBINx_0 |
00245 LOCAL TIA_Debug_WRITEBINx_End |
00246 |
00247 btfss REG, FLAG_b |
00248 rgoto TIA_Debug_WRITEBINx_0 |
00249 TIA_Debug_WRITEBINx_1 |
00250 call DEBUG_MSG_SendASMString |
00251 db "1", 0 |
00252 rgoto TIA_Debug_WRITEBINx_End |
00253 TIA_Debug_WRITEBINx_0 |
00254 call DEBUG_MSG_SendASMString |
00255 db "0", 0 |
00256 TIA_Debug_WRITEBINx_End |
00257 ENDM |
00258 |
00259 |
00260 ;; -------------------------------------------------------------------------- |
00261 ;; Check for changes in TIA registers, transfer values to/Volumes/AV 1/Projets Live/live Library/Presets/MIDI Effects/Max MIDI Effect/MB-TIA Mgr v1_Beta/MB-TIA_Mgr_1b .maxpat TIA |
00262 ;; and handle Wavetable |
00263 ;; -------------------------------------------------------------------------- |
3582 00264 TIA_Debug_EE_Do |
00265 BRA_IFCLR TIA_DEBUG_EE_REGA, TIA_DEBUG_EE_FLAG, ACCESS, TIA_Debug_EE_Do_End |
3582 A064 M btfss reg, bit, reg_a |
gpasm-0.13.7 beta setup_tia_cartridge.asm1-30-2014 10:42:05 PAGE 58 |
|
|
LOC OBJECT CODE LINE SOURCE TEXT |
VALUE |
|
3584 D09D M bra label |
3586 9164 00266 bcf TIA_DEBUG_EE_REGA, TIA_DEBUG_EE_FLAG |
00267 |
3588 EC4B F01A 00268 call DEBUG_MSG_SendHeader |
00269 |
358C EC6C F01A 00270 call DEBUG_MSG_SendASMString |
3590 6E49 2E74 00271 db "Int. EE R/W Debug:", 0 |
4520 2045 |
2F52 2057 |
6544 7562 |
3A67 0000 |
00272 |
35A4 00273 TIA_Debug_EE_Do_Read |
00274 BRA_IFSET TIA_DEBUG_EE_REGA, TIA_DEBUG_EE_RW, ACCESS, TIA_Debug_EE_Do_Write |
35A4 B264 M btfsc reg, bit, reg_a |
35A6 D00C M bra label |
35A8 EC6C F01A 00275 call DEBUG_MSG_SendASMString |
35AC 5220 6165 00276 db " Read Int. Preset", 0 |
2064 6E49 |
2E74 5020 |
6572 6573 |
0074 |
00277 rgoto TIA_Debug_EE_Do_ReadWrite_End |
35BE D01B M bra label |
00278 |
35C0 00279 TIA_Debug_EE_Do_Write |
35C0 EC6C F01A 00280 call DEBUG_MSG_SendASMString |
35C4 5720 6972 00281 db " Write Int. Preset", 0 |
6574 4920 |
746E 202E |
7250 7365 |
7465 0000 |
35D8 00282 TIA_Debug_EE_Do_Write_byte |
00283 BRA_IFSET TIA_DEBUG_EE_REGA, TIA_DEBUG_EE_PAGE, ACCESS, TIA_Debug_EE_Do_Write_Page |
35D8 B464 M btfsc reg, bit, reg_a |
35DA D007 M bra label |
35DC EC6C F01A 00284 call DEBUG_MSG_SendASMString |
35E0 2D20 6220 00285 db " - byte", 0 |
7479 0065 |
00286 rgoto TIA_Debug_EE_Do_ReadWrite_End |
35E8 D006 M bra label |
35EA 00287 TIA_Debug_EE_Do_Write_Page |
35EA EC6C F01A 00288 call DEBUG_MSG_SendASMString |
35EE 2D20 7020 00289 db " - page", 0 |
6761 0065 |
35F6 00290 TIA_Debug_EE_Do_ReadWrite_End |
00291 |
35F6 00292 TIA_Debug_EE_Do_PInit |
00293 BRA_IFCLR TIA_DEBUG_EE_REGA, TIA_DEBUG_EE_PINIT, ACCESS, TIA_Debug_EE_Do_PInit_End |
35F6 AC64 M btfss reg, bit, reg_a |
35F8 D00B M bra label |
35FA 9D64 00294 bcf TIA_DEBUG_EE_REGA, TIA_DEBUG_EE_PINIT |
35FC EC6C F01A 00295 call DEBUG_MSG_SendASMString |
3600 2820 6150 00296 db " (Patch Init)", 0 |
gpasm-0.13.7 beta setup_tia_cartridge.asm1-30-2014 10:42:05 PAGE 59 |
|
|
LOC OBJECT CODE LINE SOURCE TEXT |
VALUE |
|
6374 2068 |
6E49 7469 |
0029 |
00297 rgoto TIA_Debug_EE_Do_Sysex_End |
360E D00D M bra label |
3610 00298 TIA_Debug_EE_Do_PInit_End |
00299 |
3610 00300 TIA_Debug_EE_Do_Sysex |
00301 BRA_IFCLR TIA_DEBUG_EE_REGA, TIA_DEBUG_EE_SYX, ACCESS, TIA_Debug_EE_Do_Sysex_End |
3610 AE64 M btfss reg, bit, reg_a |
3612 D00B M bra label |
3614 9F64 00302 bcf TIA_DEBUG_EE_REGA, TIA_DEBUG_EE_SYX |
3616 EC6C F01A 00303 call DEBUG_MSG_SendASMString |
361A 2820 7953 00304 db " (Sysex Action)", 0 |
6573 2078 |
6341 6974 |
6E6F 0029 |
362A 00305 TIA_Debug_EE_Do_Sysex_End |
00306 |
362A 00307 TIA_Debug_EE_Do_Read_Cont |
00308 BRA_IFSET TIA_DEBUG_EE_REGA, TIA_DEBUG_EE_RW, ACCESS, TIA_Debug_EE_Do_Read_Cont_End |
362A B264 M btfsc reg, bit, reg_a |
362C D003 M bra label |
362E EC6C F01A 00309 call DEBUG_MSG_SendASMString |
3632 002E 00310 db ".", 0 |
3634 00311 TIA_Debug_EE_Do_Read_Cont_End |
00312 |
3634 00313 TIA_Debug_EE_Do_Write_Ok |
00314 BRA_IFCLR TIA_DEBUG_EE_REGA, TIA_DEBUG_EE_RW, ACCESS, TIA_Debug_EE_Do_WriteError_End |
3634 A264 M btfss reg, bit, reg_a |
3636 D03F M bra label |
00315 BRA_IFSET TIA_DEBUG_EE_REGA, TIA_DEBUG_EE_ERROR, ACCESS, TIA_Debug_EE_Do_Write_Error |
3638 B664 M btfsc reg, bit, reg_a |
363A D007 M bra label |
363C EC6C F01A 00316 call DEBUG_MSG_SendASMString |
3640 2D20 4F20 00317 db " - Ok.", 0 |
2E6B 0000 |
00318 rgoto TIA_Debug_EE_Do_WriteError_End |
3648 D036 M bra label |
00319 |
364A 00320 TIA_Debug_EE_Do_Write_Error |
364A EC6C F01A 00321 call DEBUG_MSG_SendASMString |
364E 2D20 4520 00322 db " - Error:", 0 |
7272 726F |
003A |
3658 00323 TIA_Debug_EE_Do_Write_ErrorReadonly |
00324 BRA_IFCLR TIA_DEBUG_EE_REGA, TIA_DEBUG_EE_READONLY, ACCESS, TIA_Debug_EE_Do_Write_ErrorBS |
3658 A864 M btfss reg, bit, reg_a |
365A D00E M bra label |
365C EC6C F01A 00325 call DEBUG_MSG_SendASMString |
3660 4520 2045 00326 db " EE in ReadOnly Mode.", 0 |
6E69 5220 |
6165 4F64 |
6C6E 2079 |
gpasm-0.13.7 beta setup_tia_cartridge.asm1-30-2014 10:42:05 PAGE 60 |
|
|
LOC OBJECT CODE LINE SOURCE TEXT |
VALUE |
|
6F4D 6564 |
002E |
00327 rgoto TIA_Debug_EE_Do_WriteError_End |
3676 D01F M bra label |
3678 00328 TIA_Debug_EE_Do_Write_ErrorBS |
00329 BRA_IFCLR TIA_DEBUG_EE_REGA, TIA_DEBUG_EE_WRERR, ACCESS, TIA_Debug_EE_Do_WriteError_End |
3678 AA64 M btfss reg, bit, reg_a |
367A D01D M bra label |
367C 5166 00330 movf TIA_DEBUG_EE_REG2, W |
367E EC97 F01A 00331 call DEBUG_MSG_SendBCD3 |
3682 EC6C F01A 00332 call DEBUG_MSG_SendASMString |
3686 4520 2045 00333 db " EE Write problem(s)", 0 |
7257 7469 |
2065 7270 |
626F 656C |
286D 2973 |
0000 |
369C 00334 TIA_Debug_EE_Do_WriteError_Mismatch |
00335 BRA_IFCLR TIA_DEBUG_EE_REG1, 0, ACCESS, TIA_Debug_EE_Do_WriteError_End |
369C A065 M btfss reg, bit, reg_a |
369E D00B M bra label |
36A0 EC6C F01A 00336 call DEBUG_MSG_SendASMString |
36A4 6228 7479 00337 db "(byte mismatch).", 0 |
2065 696D |
6D73 7461 |
6863 2E29 |
0000 |
36B6 00338 TIA_Debug_EE_Do_WriteError_End |
00339 |
00340 |
36B6 00341 TIA_Debug_EE_Do_Footer |
36B6 EC65 F01A 00342 call DEBUG_MSG_SendFooter |
36BA 6B64 00343 clrf TIA_DEBUG_EE_REGA |
00344 ;clrf TIA_DEBUG_EE_REGB |
36BC 6B65 00345 clrf TIA_DEBUG_EE_REG1 |
36BE 6B66 00346 clrf TIA_DEBUG_EE_REG2 |
00347 ;;rgoto TIA_Debug_EE_Do_End |
00348 |
36C0 00349 TIA_Debug_EE_Do_End |
36C0 0012 00350 return |
00351 |
00352 ;; -------------------------------------------------------------------------- |
00353 ;; Check for changes in TIA registers, transfer values to TIA |
00354 ;; and handle Wavetable |
00355 ;; -------------------------------------------------------------------------- |
36C2 00356 TIA_Debug_BS_Do |
00357 BRA_IFSET TIA_DEBUG_BS_REGB, TIA_DEBUG_BS_RWCHK, ACCESS, TIA_Debug_BS_Do_End |
36C2 B462 M btfsc reg, bit, reg_a |
36C4 D0C0 M bra label |
00358 BRA_IFCLR TIA_DEBUG_BS_REGA, TIA_DEBUG_EE_FLAG, ACCESS, TIA_Debug_BS_Do_Clr |
36C6 A05B M btfss reg, bit, reg_a |
36C8 D0BA M bra label |
36CA 905B 00359 bcf TIA_DEBUG_BS_REGA, TIA_DEBUG_EE_FLAG |
36CC EC4B F01A 00360 call DEBUG_MSG_SendHeader |
gpasm-0.13.7 beta setup_tia_cartridge.asm1-30-2014 10:42:05 PAGE 61 |
|
|
LOC OBJECT CODE LINE SOURCE TEXT |
VALUE |
|
00361 |
36D0 EC6C F01A 00362 call DEBUG_MSG_SendASMString |
36D4 7845 2E74 00363 db "Ext. BS R/W Debug:", 0 |
4220 2053 |
2F52 2057 |
6544 7562 |
3A67 0000 |
00364 |
36E8 00365 TIA_Debug_BS_Do_Read |
00366 BRA_IFSET TIA_DEBUG_BS_REGA, TIA_DEBUG_EE_RW, ACCESS, TIA_Debug_BS_Do_Write |
36E8 B25B M btfsc reg, bit, reg_a |
36EA D016 M bra label |
36EC EC6C F01A 00367 call DEBUG_MSG_SendASMString |
36F0 5220 6165 00368 db " Read Bank:", 0 |
2064 6142 |
6B6E 003A |
36FC 505E 00369 movf TIA_DEBUG_BS_REG3, W |
36FE EC97 F01A 00370 call DEBUG_MSG_SendBCD3 |
3702 EC6C F01A 00371 call DEBUG_MSG_SendASMString |
3706 5020 6572 00372 db " Preset:", 0 |
6573 3A74 |
0000 |
3710 505F 00373 movf TIA_DEBUG_BS_REG4, W |
3712 EC97 F01A 00374 call DEBUG_MSG_SendBCD3 |
00375 rgoto TIA_Debug_BS_Do_ReadWrite_End |
3716 D025 M bra label |
3718 00376 TIA_Debug_BS_Do_Write |
3718 EC6C F01A 00377 call DEBUG_MSG_SendASMString |
371C 5720 6972 00378 db " Write Bank:", 0 |
6574 4220 |
6E61 3A6B |
0000 |
372A 505E 00379 movf TIA_DEBUG_BS_REG3, W |
372C EC97 F01A 00380 call DEBUG_MSG_SendBCD3 |
3730 EC6C F01A 00381 call DEBUG_MSG_SendASMString |
3734 5020 6572 00382 db " Preset:", 0 |
6573 3A74 |
0000 |
373E 505F 00383 movf TIA_DEBUG_BS_REG4, W |
3740 EC97 F01A 00384 call DEBUG_MSG_SendBCD3 |
3744 00385 TIA_Debug_BS_Do_Write_byte |
00386 BRA_IFSET TIA_DEBUG_BS_REGA, TIA_DEBUG_EE_PAGE, ACCESS, TIA_Debug_BS_Do_Write_Page |
3744 B45B M btfsc reg, bit, reg_a |
3746 D007 M bra label |
3748 EC6C F01A 00387 call DEBUG_MSG_SendASMString |
374C 2D20 6220 00388 db " - byte", 0 |
7479 0065 |
00389 rgoto TIA_Debug_BS_Do_ReadWrite_End |
3754 D006 M bra label |
3756 00390 TIA_Debug_BS_Do_Write_Page |
3756 EC6C F01A 00391 call DEBUG_MSG_SendASMString |
375A 2D20 7020 00392 db " - page", 0 |
6761 0065 |
3762 00393 TIA_Debug_BS_Do_ReadWrite_End |
gpasm-0.13.7 beta setup_tia_cartridge.asm1-30-2014 10:42:05 PAGE 62 |
|
|
LOC OBJECT CODE LINE SOURCE TEXT |
VALUE |
|
00394 |
3762 00395 TIA_Debug_BS_Do_PInit |
00396 BRA_IFCLR TIA_DEBUG_BS_REGA, TIA_DEBUG_EE_PINIT, ACCESS, TIA_Debug_BS_Do_PInit_End |
3762 AC5B M btfss reg, bit, reg_a |
3764 D00A M bra label |
3766 EC6C F01A 00397 call DEBUG_MSG_SendASMString |
376A 2820 7250 00398 db " (Preset Init)", 0 |
7365 7465 |
4920 696E |
2974 0000 |
377A 00399 TIA_Debug_BS_Do_PInit_End |
00400 |
377A 00401 TIA_Debug_BS_Do_Sysex |
00402 BRA_IFCLR TIA_DEBUG_BS_REGA, TIA_DEBUG_EE_SYX, ACCESS, TIA_Debug_BS_Do_Sysex_End |
377A AE5B M btfss reg, bit, reg_a |
377C D00A M bra label |
377E EC6C F01A 00403 call DEBUG_MSG_SendASMString |
3782 2820 7953 00404 db " (Sysex Action)", 0 |
6573 2078 |
6341 6974 |
6E6F 0029 |
3792 00405 TIA_Debug_BS_Do_Sysex_End |
00406 |
3792 00407 TIA_Debug_BS_Do_Read_Cont |
00408 BRA_IFSET TIA_DEBUG_BS_REGA, TIA_DEBUG_EE_RW, ACCESS, TIA_Debug_BS_Do_Read_Cont_End |
3792 B25B M btfsc reg, bit, reg_a |
3794 D003 M bra label |
3796 EC6C F01A 00409 call DEBUG_MSG_SendASMString |
379A 002E 00410 db ".", 0 |
379C 00411 TIA_Debug_BS_Do_Read_Cont_End |
00412 |
379C 00413 TIA_Debug_BS_Do_Write_Ok |
00414 BRA_IFCLR TIA_DEBUG_BS_REGA, TIA_DEBUG_EE_RW, ACCESS, TIA_Debug_BS_Do_WriteError_End |
379C A25B M btfss reg, bit, reg_a |
379E D04D M bra label |
00415 BRA_IFSET TIA_DEBUG_BS_REGA, TIA_DEBUG_EE_ERROR, ACCESS, TIA_Debug_BS_Do_Write_Error |
37A0 B65B M btfsc reg, bit, reg_a |
37A2 D007 M bra label |
37A4 EC6C F01A 00416 call DEBUG_MSG_SendASMString |
37A8 2D20 4F20 00417 db " - Ok.", 0 |
2E6B 0000 |
00418 rgoto TIA_Debug_BS_Do_WriteError_End |
37B0 D044 M bra label |
00419 |
37B2 00420 TIA_Debug_BS_Do_Write_Error |
37B2 EC6C F01A 00421 call DEBUG_MSG_SendASMString |
37B6 2D20 4520 00422 db " - Error:", 0 |
7272 726F |
003A |
37C0 00423 TIA_Debug_BS_Do_Write_ErrorReadonly |
00424 BRA_IFCLR TIA_DEBUG_BS_REGA, TIA_DEBUG_EE_READONLY, ACCESS, TIA_Debug_BS_Do_Write_ErrorBS |
37C0 A85B M btfss reg, bit, reg_a |
37C2 D00E M bra label |
37C4 EC6C F01A 00425 call DEBUG_MSG_SendASMString |
gpasm-0.13.7 beta setup_tia_cartridge.asm1-30-2014 10:42:05 PAGE 63 |
|
|
LOC OBJECT CODE LINE SOURCE TEXT |
VALUE |
|
37C8 4220 2053 00426 db " BS in ReadOnly Mode.", 0 |
6E69 5220 |
6165 4F64 |
6C6E 2079 |
6F4D 6564 |
002E |
00427 rgoto TIA_Debug_BS_Do_WriteError_End |
37DE D02D M bra label |
37E0 00428 TIA_Debug_BS_Do_Write_ErrorBS |
00429 BRA_IFCLR TIA_DEBUG_BS_REGA, TIA_DEBUG_EE_WRERR, ACCESS, TIA_Debug_BS_Do_WriteError_End |
37E0 AA5B M btfss reg, bit, reg_a |
37E2 D02B M bra label |
37E4 505D 00430 movf TIA_DEBUG_BS_REG2, W |
37E6 EC97 F01A 00431 call DEBUG_MSG_SendBCD3 |
37EA EC6C F01A 00432 call DEBUG_MSG_SendASMString |
37EE 4220 2053 00433 db " BS Write problem(s)", 0 |
7257 7469 |
2065 7270 |
626F 656C |
286D 2973 |
0000 |
3804 00434 TIA_Debug_BS_Do_WriteError_Mismatch |
00435 BRA_IFCLR TIA_DEBUG_BS_REG1, 0, ACCESS, TIA_Debug_BS_Do_WriteError_BSAbsent |
3804 A05C M btfss reg, bit, reg_a |
3806 D00B M bra label |
3808 EC6C F01A 00436 call DEBUG_MSG_SendASMString |
380C 6228 7479 00437 db "(byte mismatch).", 0 |
2065 696D |
6D73 7461 |
6863 2E29 |
0000 |
381E 00438 TIA_Debug_BS_Do_WriteError_BSAbsent |
00439 BRA_IFCLR TIA_DEBUG_BS_REG1, 1, ACCESS, TIA_Debug_BS_Do_WriteError_End |
381E A25C M btfss reg, bit, reg_a |
3820 D00C M bra label |
3822 EC6C F01A 00440 call DEBUG_MSG_SendASMString |
3826 4228 2053 00441 db "(BS not available).", 0 |
6F6E 2074 |
7661 6961 |
616C 6C62 |
2965 002E |
383A 00442 TIA_Debug_BS_Do_WriteError_End |
00443 |
00444 |
383A 00445 TIA_Debug_BS_Do_Footer |
383A EC65 F01A 00446 call DEBUG_MSG_SendFooter |
383E 00447 TIA_Debug_BS_Do_Clr |
383E 6A5B 00448 clrf TIA_DEBUG_BS_REGA |
3840 6B62 00449 clrf TIA_DEBUG_BS_REGB |
3842 6A5C 00450 clrf TIA_DEBUG_BS_REG1 |
3844 6A5D 00451 clrf TIA_DEBUG_BS_REG2 |
00452 ;;rgoto TIA_Debug_BS_End |
00453 |
3846 00454 TIA_Debug_BS_Do_End |
gpasm-0.13.7 beta setup_tia_cartridge.asm1-30-2014 10:42:05 PAGE 64 |
|
|
LOC OBJECT CODE LINE SOURCE TEXT |
VALUE |
|
00455 |
00456 |
3846 0012 00457 return |
00458 |
00459 |
00460 |
00461 ;; -------------------------------------------------------------------------- |
00462 ;; Check for changes in TIA registers, transfer values to TIA |
00463 ;; and handle Wavetable |
00464 ;; -------------------------------------------------------------------------- |
00465 |
3848 00466 TIA_Debug_BS_Check |
00467 BRA_IFCLR TIA_DEBUG_BS_REGB, TIA_DEBUG_BS_RWCHK, ACCESS, TIA_Debug_BS_Check_End |
3848 A462 M btfss reg, bit, reg_a |
384A D112 M bra label |
00468 BRA_IFCLR TIA_DEBUG_BS_REGA, TIA_DEBUG_EE_FLAG, ACCESS, TIA_Debug_BS_Check_End |
384C A05B M btfss reg, bit, reg_a |
384E D110 M bra label |
3850 905B 00469 bcf TIA_DEBUG_BS_REGA, TIA_DEBUG_EE_FLAG |
3852 EC4B F01A 00470 call DEBUG_MSG_SendHeader |
00471 |
3856 EC6C F01A 00472 call DEBUG_MSG_SendASMString |
385A 5342 4320 00473 db "BS Check Debug:", 0 |
6568 6B63 |
4420 6265 |
6775 003A |
00474 #if DEFAULT_TIA_DEBUG_BS_MODE |
00475 ;; checked Bank |
00476 call DEBUG_MSG_SendASMString |
00477 db " Bank:", 0 |
00478 movf TIA_BANKSTICK_CHK_CTR, W |
00479 call DEBUG_MSG_SendBCD3 |
00480 |
00481 call DEBUG_MSG_SendASMString |
00482 db ", BS addr:", 0 |
00483 movf TIA_BANKSTICK_ID, W |
00484 call DEBUG_MSG_SendBCD3 |
00485 |
00486 call DEBUG_MSG_SendASMString |
00487 db ", Box Status:", 0 |
00488 movf TIA_DEBUG_BS_REG1, W |
00489 call DEBUG_MSG_SendBCD3 |
00490 |
00491 |
00492 BRA_IFCLR TIA_DEBUG_BS_REGB, TIA_DEBUG_BS_INTEXT, ACCESS, TIA_Debug_BS_Check_IntExt |
00493 call DEBUG_MSG_SendASMString |
00494 db ", Bank addr:", 0 |
00495 movf TIA_DEBUG_BS_REG2, W |
00496 call DEBUG_MSG_SendBCD3 |
00497 |
00498 call DEBUG_MSG_SendASMString |
00499 db ", Magic0:", 0 |
00500 movf TIA_DEBUG_BS_REG3, W |
00501 call DEBUG_MSG_SendBCD3 |
gpasm-0.13.7 beta setup_tia_cartridge.asm1-30-2014 10:42:05 PAGE 65 |
|
|
LOC OBJECT CODE LINE SOURCE TEXT |
VALUE |
|
00502 |
00503 call DEBUG_MSG_SendASMString |
00504 db " Magic1:", 0 |
00505 movf TIA_DEBUG_BS_REG4, W |
00506 call DEBUG_MSG_SendBCD3 |
00507 |
00508 call DEBUG_MSG_SendASMString |
00509 db ", BS Status:", 0 |
00510 movf TIA_BANKSTICK_STAT, W |
00511 call DEBUG_MSG_SendBCD3 |
00512 call DEBUG_MSG_SendASMString |
00513 db "/", 0 |
00514 TIA_Debug_WRITEBINx TIA_BANKSTICK_STAT, 7 |
00515 TIA_Debug_WRITEBINx TIA_BANKSTICK_STAT, 6 |
00516 TIA_Debug_WRITEBINx TIA_BANKSTICK_STAT, 5 |
00517 TIA_Debug_WRITEBINx TIA_BANKSTICK_STAT, 4 |
00518 TIA_Debug_WRITEBINx TIA_BANKSTICK_STAT, 3 |
00519 TIA_Debug_WRITEBINx TIA_BANKSTICK_STAT, 2 |
00520 TIA_Debug_WRITEBINx TIA_BANKSTICK_STAT, 1 |
00521 TIA_Debug_WRITEBINx TIA_BANKSTICK_STAT, 0 |
00522 ;movf TIA_BANKSTICK_STAT, W |
00523 ;call DEBUG_MSG_SendBCD3 |
00524 |
00525 |
00526 call DEBUG_MSG_SendASMString |
00527 db ", BS Type:", 0 |
00528 movf TIA_DEBUG_BS_REG9, W |
00529 call DEBUG_MSG_SendBCD3 |
00530 call DEBUG_MSG_SendASMString |
00531 db "/", 0 |
00532 TIA_Debug_WRITEBINx TIA_DEBUG_BS_REG9, 7 |
00533 TIA_Debug_WRITEBINx TIA_DEBUG_BS_REG9, 6 |
00534 TIA_Debug_WRITEBINx TIA_DEBUG_BS_REG9, 5 |
00535 TIA_Debug_WRITEBINx TIA_DEBUG_BS_REG9, 4 |
00536 TIA_Debug_WRITEBINx TIA_DEBUG_BS_REG9, 3 |
00537 TIA_Debug_WRITEBINx TIA_DEBUG_BS_REG9, 2 |
00538 TIA_Debug_WRITEBINx TIA_DEBUG_BS_REG9, 1 |
00539 TIA_Debug_WRITEBINx TIA_DEBUG_BS_REG9, 0 |
00540 ;movf TIA_BANKSTICK_SIZE, W |
00541 ;call DEBUG_MSG_SendBCD3 |
00542 |
00543 |
00544 call DEBUG_MSG_SendASMString |
00545 db ", BS Size:", 0 |
00546 movf TIA_BANKSTICK_SIZE, W |
00547 call DEBUG_MSG_SendBCD3 |
00548 call DEBUG_MSG_SendASMString |
00549 db "/", 0 |
00550 TIA_Debug_WRITEBINx TIA_BANKSTICK_SIZE, 7 |
00551 TIA_Debug_WRITEBINx TIA_BANKSTICK_SIZE, 6 |
00552 TIA_Debug_WRITEBINx TIA_BANKSTICK_SIZE, 5 |
00553 TIA_Debug_WRITEBINx TIA_BANKSTICK_SIZE, 4 |
00554 TIA_Debug_WRITEBINx TIA_BANKSTICK_SIZE, 3 |
00555 TIA_Debug_WRITEBINx TIA_BANKSTICK_SIZE, 2 |
gpasm-0.13.7 beta setup_tia_cartridge.asm1-30-2014 10:42:05 PAGE 66 |
|
|
LOC OBJECT CODE LINE SOURCE TEXT |
VALUE |
|
00556 TIA_Debug_WRITEBINx TIA_BANKSTICK_SIZE, 1 |
00557 TIA_Debug_WRITEBINx TIA_BANKSTICK_SIZE, 0 |
00558 ;movf TIA_BANKSTICK_SIZE, W |
00559 ;call DEBUG_MSG_SendBCD3 |
00560 |
00561 call DEBUG_MSG_SendASMString |
00562 db ", BS Ready:", 0 |
00563 movf TIA_BANKSTICK_RDY, W |
00564 call DEBUG_MSG_SendBCD3 |
00565 call DEBUG_MSG_SendASMString |
00566 db "/", 0 |
00567 TIA_Debug_WRITEBINx TIA_BANKSTICK_RDY, 7 |
00568 TIA_Debug_WRITEBINx TIA_BANKSTICK_RDY, 6 |
00569 TIA_Debug_WRITEBINx TIA_BANKSTICK_RDY, 5 |
00570 TIA_Debug_WRITEBINx TIA_BANKSTICK_RDY, 4 |
00571 TIA_Debug_WRITEBINx TIA_BANKSTICK_RDY, 3 |
00572 TIA_Debug_WRITEBINx TIA_BANKSTICK_RDY, 2 |
00573 TIA_Debug_WRITEBINx TIA_BANKSTICK_RDY, 1 |
00574 TIA_Debug_WRITEBINx TIA_BANKSTICK_RDY, 0 |
00575 |
00576 call DEBUG_MSG_SendASMString |
00577 db ", ", 0 |
00578 #endif |
00579 |
386A 00580 TIA_Debug_BS_Check_IntExt |
00581 BRA_IFSET TIA_DEBUG_BS_REGB, TIA_DEBUG_BS_INTEXT, ACCESS, TIA_Debug_BS_Check_Ext |
386A B862 M btfsc reg, bit, reg_a |
386C D019 M bra label |
386E EC6C F01A 00582 call DEBUG_MSG_SendASMString |
3872 4920 746E 00583 db " Int. Patch /BS:", 0 |
202E 6150 |
6374 2068 |
422F 3A53 |
0000 |
3884 501A 00584 movf TIA_BANKSTICK_ID, W |
3886 EC97 F01A 00585 call DEBUG_MSG_SendBCD3 |
388A EC6C F01A 00586 call DEBUG_MSG_SendASMString |
388E 6420 7369 00587 db " disconnected.", 0 |
6F63 6E6E |
6365 6574 |
2E64 0000 |
00588 rgoto TIA_Debug_BS_Check_Footer |
389E D0E4 M bra label |
38A0 00589 TIA_Debug_BS_Check_Ext |
00590 BRA_IFCLR TIA_DEBUG_BS_REGB, TIA_DEBUG_BS_INTEXT, ACCESS, TIA_Debug_BS_Check_IntExt_End |
38A0 A862 M btfss reg, bit, reg_a |
38A2 D005 M bra label |
38A4 EC6C F01A 00591 call DEBUG_MSG_SendASMString |
38A8 4520 7478 00592 db " Ext.", 0 |
002E |
38AE 00593 TIA_Debug_BS_Check_IntExt_End |
00594 |
38AE 00595 TIA_Debug_BS_Check_Size |
00596 ;;BRA_IFSET TIA_DEBUG_BS_REGB, TIA_DEBUG_BS_FPROTECT, ACCESS, TIA_Debug_BS_Check_Size_End |
gpasm-0.13.7 beta setup_tia_cartridge.asm1-30-2014 10:42:05 PAGE 67 |
|
|
LOC OBJECT CODE LINE SOURCE TEXT |
VALUE |
|
00597 BRA_IFCLR TIA_DEBUG_BS_REGB, TIA_DEBUG_BS_INTEXT, ACCESS, TIA_Debug_BS_Check_Size_End |
38AE A862 M btfss reg, bit, reg_a |
38B0 D00C M bra label |
00598 BRA_IFSET TIA_DEBUG_BS_REGB, TIA_DEBUG_BS_SIZE, ACCESS, TIA_Debug_BS_Check_64k |
38B2 B662 M btfsc reg, bit, reg_a |
38B4 D004 M bra label |
38B6 EC6C F01A 00599 call DEBUG_MSG_SendASMString |
38BA 3233 006B 00600 db "32k", 0 |
38BE 00601 TIA_Debug_BS_Check_64k |
00602 BRA_IFCLR TIA_DEBUG_BS_REGB, TIA_DEBUG_BS_SIZE, ACCESS, TIA_Debug_BS_Check_Size_End |
38BE A662 M btfss reg, bit, reg_a |
38C0 D004 M bra label |
38C2 EC6C F01A 00603 call DEBUG_MSG_SendASMString |
38C6 3436 006B 00604 db "64k", 0 |
38CA 00605 TIA_Debug_BS_Check_Size_End |
00606 |
38CA 00607 TIA_Debug_BS_Check_Type |
00608 ;;BRA_IFSET TIA_DEBUG_BS_REGB, TIA_DEBUG_BS_FPROTECT, ACCESS, TIA_Debug_BS_Check_Type_End |
00609 BRA_IFSET TIA_DEBUG_BS_REGB, TIA_DEBUG_EE_PK, ACCESS, TIA_Debug_BS_Check_KWT |
38CA B062 M btfsc reg, bit, reg_a |
38CC D00B M bra label |
38CE EC6C F01A 00610 call DEBUG_MSG_SendASMString |
38D2 2020 4250 00611 db " PBank", 0 |
6E61 006B |
38DA 5019 00612 movf TIA_BANKSTICK_CHK_CTR, W |
38DC BA5B 00613 btfsc TIA_DEBUG_BS_REGA, TIA_DEBUG_BS_READY, ACCESS |
38DE 0B1C 00614 andlw 0x1c |
38E0 EC97 F01A 00615 call DEBUG_MSG_SendBCD3 |
38E4 00616 TIA_Debug_BS_Check_KWT |
00617 BRA_IFCLR TIA_DEBUG_BS_REGB, TIA_DEBUG_EE_PK, ACCESS, TIA_Debug_BS_Check_Type_End |
38E4 A062 M btfss reg, bit, reg_a |
38E6 D01B M bra label |
38E8 00618 TIA_Debug_BS_Check_K |
00619 BRA_IFSET TIA_DEBUG_BS_REGB, TIA_DEBUG_EE_WT, ACCESS, TIA_Debug_BS_Check_WT |
38E8 B262 M btfsc reg, bit, reg_a |
38EA D00B M bra label |
38EC EC6C F01A 00620 call DEBUG_MSG_SendASMString |
38F0 2020 424B 00621 db " KBank", 0 |
6E61 006B |
38F8 5019 00622 movf TIA_BANKSTICK_CHK_CTR, W |
38FA BA5B 00623 btfsc TIA_DEBUG_BS_REGA, TIA_DEBUG_BS_READY, ACCESS |
38FC 0B1C 00624 andlw 0x1c |
38FE EC97 F01A 00625 call DEBUG_MSG_SendBCD3 |
3902 00626 TIA_Debug_BS_Check_WT |
00627 BRA_IFCLR TIA_DEBUG_BS_REGB, TIA_DEBUG_EE_WT, ACCESS, TIA_Debug_BS_Check_Type_End |
3902 A262 M btfss reg, bit, reg_a |
3904 D00C M bra label |
3906 9362 00628 bcf TIA_DEBUG_BS_REGB, TIA_DEBUG_EE_WT |
3908 EC6C F01A 00629 call DEBUG_MSG_SendASMString |
390C 5720 4254 00630 db " WTBank", 0 |
6E61 006B |
3914 5019 00631 movf TIA_BANKSTICK_CHK_CTR, W |
3916 BA5B 00632 btfsc TIA_DEBUG_BS_REGA, TIA_DEBUG_BS_READY, ACCESS |
3918 0B1C 00633 andlw 0x1c |
gpasm-0.13.7 beta setup_tia_cartridge.asm1-30-2014 10:42:05 PAGE 68 |
|
|
LOC OBJECT CODE LINE SOURCE TEXT |
VALUE |
|
391A EC97 F01A 00634 call DEBUG_MSG_SendBCD3 |
391E 00635 TIA_Debug_BS_Check_Type_End |
00636 |
00637 |
00638 |
391E 00639 TIA_Debug_BS_Check_Ready |
00640 BRA_IFSET TIA_DEBUG_BS_REGB, TIA_DEBUG_BS_FORMAT, ACCESS, TIA_Debug_BS_Check_Ready_End |
391E BA62 M btfsc reg, bit, reg_a |
3920 D02E M bra label |
00641 BRA_IFSET TIA_DEBUG_BS_REGB, TIA_DEBUG_BS_FPROTECT, ACCESS, TIA_Debug_BS_Check_Ready_End |
3922 BC62 M btfsc reg, bit, reg_a |
3924 D02C M bra label |
00642 BRA_IFSET TIA_DEBUG_BS_REGB, TIA_DEBUG_BS_TPROTECT, ACCESS, TIA_Debug_BS_Check_Ready_End |
3926 BE62 M btfsc reg, bit, reg_a |
3928 D02A M bra label |
00643 BRA_IFCLR TIA_DEBUG_BS_REGB, TIA_DEBUG_BS_INTEXT, ACCESS, TIA_Debug_BS_Check_Ready_End |
392A A862 M btfss reg, bit, reg_a |
392C D028 M bra label |
00644 BRA_IFSET TIA_DEBUG_BS_REGA, TIA_DEBUG_BS_READY, ACCESS, TIA_Debug_BS_Check_ReadyOk |
392E BA5B M btfsc reg, bit, reg_a |
3930 D008 M bra label |
3932 EC6C F01A 00645 call DEBUG_MSG_SendASMString |
3936 6C20 616F 00646 db " loaded Ok", 0 |
6564 2064 |
6B4F 0000 |
3942 00647 TIA_Debug_BS_Check_ReadyOk |
00648 BRA_IFCLR TIA_DEBUG_BS_REGA, TIA_DEBUG_BS_READY, ACCESS, TIA_Debug_BS_Check_Ready_End |
3942 AA5B M btfss reg, bit, reg_a |
3944 D01C M bra label |
3946 EC6C F01A 00649 call DEBUG_MSG_SendASMString |
394A 002D 00650 db "-", 0 |
394C 5019 00651 movf TIA_BANKSTICK_CHK_CTR, W |
394E 0B1C 00652 andlw 0x1c |
3950 0F03 00653 addlw 0x03 |
3952 EC97 F01A 00654 call DEBUG_MSG_SendBCD3 |
3956 EC6C F01A 00655 call DEBUG_MSG_SendASMString |
395A 6C20 616F 00656 db " loaded Ok /BS:", 0 |
6564 2064 |
6B4F 2F20 |
5342 003A |
396A 501A 00657 movf TIA_BANKSTICK_ID, W |
396C EC97 F01A 00658 call DEBUG_MSG_SendBCD3 |
3970 EC6C F01A 00659 call DEBUG_MSG_SendASMString |
3974 7220 6165 00660 db " ready!", 0 |
7964 0021 |
397C 9A5B 00661 bcf TIA_DEBUG_BS_REGA, TIA_DEBUG_BS_READY |
397E 00662 TIA_Debug_BS_Check_Ready_End |
00663 |
00664 |
397E 00665 TIA_Debug_BS_Check_Format |
00666 BRA_IFCLR TIA_DEBUG_BS_REGB, TIA_DEBUG_BS_FORMAT, ACCESS, TIA_Debug_BS_Check_Format_End |
397E AA62 M btfss reg, bit, reg_a |
3980 D00A M bra label |
3982 9B62 00667 bcf TIA_DEBUG_BS_REGB, TIA_DEBUG_BS_FORMAT |
gpasm-0.13.7 beta setup_tia_cartridge.asm1-30-2014 10:42:05 PAGE 69 |
|
|
LOC OBJECT CODE LINE SOURCE TEXT |
VALUE |
|
3984 EC6C F01A 00668 call DEBUG_MSG_SendASMString |
3988 5220 6665 00669 db " Reformated!", 0 |
726F 616D |
6574 2164 |
0000 |
3996 00670 TIA_Debug_BS_Check_Format_End |
00671 |
3996 00672 TIA_Debug_BS_Check_FormatProtect |
00673 BRA_IFCLR TIA_DEBUG_BS_REGB, TIA_DEBUG_BS_FPROTECT, ACCESS, TIA_Debug_BS_Check_FormatProtect_End |
3996 AC62 M btfss reg, bit, reg_a |
3998 D021 M bra label |
399A 9D62 00674 bcf TIA_DEBUG_BS_REGB, TIA_DEBUG_BS_FPROTECT |
399C EC6C F01A 00675 call DEBUG_MSG_SendASMString |
39A0 002D 00676 db "-", 0 |
39A2 5019 00677 movf TIA_BANKSTICK_CHK_CTR, W |
39A4 0B1C 00678 andlw 0x1c |
39A6 0F03 00679 addlw 0x03 |
39A8 EC97 F01A 00680 call DEBUG_MSG_SendBCD3 |
39AC EC6C F01A 00681 call DEBUG_MSG_SendASMString |
39B0 6E20 746F 00682 db " not valid /BS:", 0 |
7620 6C61 |
6469 2F20 |
5342 003A |
39C0 501A 00683 movf TIA_BANKSTICK_ID, W |
39C2 EC97 F01A 00684 call DEBUG_MSG_SendBCD3 |
39C6 EC6C F01A 00685 call DEBUG_MSG_SendASMString |
39CA 2820 6F66 00686 db " (format inhibit)", 0 |
6D72 7461 |
6920 686E |
6269 7469 |
0029 |
39DC 00687 TIA_Debug_BS_Check_FormatProtect_End |
00688 |
39DC 00689 TIA_Debug_BS_Check_TypeProtect |
00690 BRA_IFCLR TIA_DEBUG_BS_REGB, TIA_DEBUG_BS_TPROTECT, ACCESS, TIA_Debug_BS_Check_TypeProtect_End |
39DC AE62 M btfss reg, bit, reg_a |
39DE D021 M bra label |
39E0 9F62 00691 bcf TIA_DEBUG_BS_REGB, TIA_DEBUG_BS_TPROTECT |
39E2 EC6C F01A 00692 call DEBUG_MSG_SendASMString |
39E6 002D 00693 db "-", 0 |
39E8 5019 00694 movf TIA_BANKSTICK_CHK_CTR, W |
39EA 0B1C 00695 andlw 0x1c |
39EC 0F03 00696 addlw 0x03 |
39EE EC97 F01A 00697 call DEBUG_MSG_SendBCD3 |
39F2 EC6C F01A 00698 call DEBUG_MSG_SendASMString |
39F6 6E20 746F 00699 db " not valid /BS:", 0 |
7620 6C61 |
6469 2F20 |
5342 003A |
3A06 501A 00700 movf TIA_BANKSTICK_ID, W |
3A08 EC97 F01A 00701 call DEBUG_MSG_SendBCD3 |
3A0C EC6C F01A 00702 call DEBUG_MSG_SendASMString |
3A10 2820 7974 00703 db " (type protected)", 0 |
6570 7020 |
gpasm-0.13.7 beta setup_tia_cartridge.asm1-30-2014 10:42:05 PAGE 70 |
|
|
LOC OBJECT CODE LINE SOURCE TEXT |
VALUE |
|
6F72 6574 |
7463 6465 |
0029 |
3A22 00704 TIA_Debug_BS_Check_TypeProtect_End |
00705 |
3A22 00706 TIA_Debug_BS_Check_Error |
00707 BRA_IFCLR TIA_DEBUG_BS_REGB, TIA_DEBUG_BS_INTEXT, ACCESS, TIA_Debug_BS_Check_Error_End |
3A22 A862 M btfss reg, bit, reg_a |
3A24 D020 M bra label |
00708 BRA_IFCLR TIA_DEBUG_BS_REGB, TIA_DEBUG_BS_FORMAT, ACCESS, TIA_Debug_BS_Check_Error_End |
3A26 AA62 M btfss reg, bit, reg_a |
3A28 D01E M bra label |
00709 BRA_IFCLR TIA_DEBUG_BS_REGA, TIA_DEBUG_EE_ERROR, ACCESS, TIA_Debug_BS_Check_NoError |
3A2A A65B M btfss reg, bit, reg_a |
3A2C D012 M bra label |
3A2E 5160 00710 movf TIA_DEBUG_BS_REG5, W |
3A30 EC97 F01A 00711 call DEBUG_MSG_SendBCD3 |
3A34 EC6C F01A 00712 call DEBUG_MSG_SendASMString |
3A38 4520 7272 00713 db " Error(s), Last:", 0 |
726F 7328 |
2C29 4C20 |
7361 3A74 |
0000 |
3A4A 5161 00714 movf TIA_DEBUG_BS_REG6, W |
3A4C EC97 F01A 00715 call DEBUG_MSG_SendBCD3 |
3A50 965B 00716 bcf TIA_DEBUG_BS_REGA, TIA_DEBUG_EE_ERROR |
3A52 00717 TIA_Debug_BS_Check_NoError |
00718 BRA_IFSET TIA_DEBUG_BS_REGA, TIA_DEBUG_EE_ERROR, ACCESS, TIA_Debug_BS_Check_Error_End |
3A52 B65B M btfsc reg, bit, reg_a |
3A54 D008 M bra label |
3A56 EC6C F01A 00719 call DEBUG_MSG_SendASMString |
3A5A 4E20 206F 00720 db " No error.", 0 |
7265 6F72 |
2E72 0000 |
3A66 00721 TIA_Debug_BS_Check_Error_End |
3A66 6B60 00722 clrf TIA_DEBUG_BS_REG5 |
00723 |
3A68 00724 TIA_Debug_BS_Check_Footer |
3A68 EC65 F01A 00725 call DEBUG_MSG_SendFooter |
3A6C 00726 TIA_Debug_BS_Check_Clr |
3A6C 6A5B 00727 clrf TIA_DEBUG_BS_REGA |
3A6E 6B62 00728 clrf TIA_DEBUG_BS_REGB |
00729 |
00730 ;;rgoto TIA_Debug_BS_Check_End |
00731 |
3A70 00732 TIA_Debug_BS_Check_End |
3A70 0012 00733 return |
00734 |
00735 |
00736 |
00375 #endif |
00376 |
00377 ;; ---[ TIA kernel ]--- |
00378 #include "tia_led_meter.inc" |
gpasm-0.13.7 beta setup_tia_cartridge.asm1-30-2014 10:42:05 PAGE 71 |
|
|
LOC OBJECT CODE LINE SOURCE TEXT |
VALUE |
|
00001 ; $Id: tia_led_meter.inc bdupeyron.tech@gmail.com(Antichambre) |
00002 ; |
00003 ; MIDIbox TIA |
00004 ; TIA Cartridge Led Meter Module |
00005 ; |
00006 ; ========================================================================== |
00007 ; |
00008 ; Copyright 1998-2006 Thorsten Klose (tk@midibox.org) |
00009 ; Licensed for personal non-commercial use only. |
00010 ; All other rights reserved. |
00011 ; |
00012 ; ========================================================================== |
00013 ; |
00014 ; define the pins to which the Leds Meters are connected |
00015 ; |
00016 |
00000007 00017 TIA_LEDMTR0 EQU 7 |
00000006 00018 TIA_LEDMTR1 EQU 6 |
00000005 00019 TIA_LEDMTR2 EQU 5 |
00000004 00020 TIA_LEDMTR3 EQU 4 |
00021 |
00000003 00022 TIA_LEDMTR4 EQU 3 |
00000002 00023 TIA_LEDMTR5 EQU 2 |
00000001 00024 TIA_LEDMTR6 EQU 1 |
00000000 00025 TIA_LEDMTR7 EQU 0 |
00026 |
00000000 00027 TIA_LEDMTR_AUDX_REQ EQU 0 |
00000001 00028 TIA_LEDMTR_TIA_MODE EQU 1 ;; Swith between Normal & Sampler Mode |
00029 |
00030 ;; -------------------------------------------------------------------------- |
00031 ;; Initialize the LEDMTR module |
00032 ;; -------------------------------------------------------------------------- |
3A72 00033 TIA_LEDMTR_Init |
3A72 6B6A 00034 clrf TIA_LEDMTR_STAT |
3A74 6B6B 00035 clrf TIA_LEDMTR_VALUE |
3A76 0012 00036 return |
00037 ;; reset will be released with first call of TIA_SR_Handler |
00038 |
00039 ;; -------------------------------------------------------------------------- |
00040 ;; LEDMTR module Handler |
00041 ;; -------------------------------------------------------------------------- |
3A78 00042 TIA_LEDMTR_Handler |
00043 SET_BSR TIA_BASE ; prepare BSR for TIA register access |
3A78 0101 M movlb HIGH(reg) |
00044 ;; Template run prioity |
00045 BRA_IFCLR TIA_LEDMTR_STAT, TIA_LEDMTR_AUDX_REQ, ACCESS, TIA_LEDMTR_Handler_End |
3A7A A06A M btfss reg, bit, reg_a |
3A7C D021 M bra label |
00046 |
3A7E 00047 TIA_LEDMTR_Handler_Meter_Norm |
00048 ;;BRA_IFSET TIA_LEDMTR_STAT, TIA_LEDMTR_TIA_MODE, ACCESS, TIA_LEDMTR_Handler_Meter_Sampler |
3A7E 916A 00049 bcf TIA_LEDMTR_STAT, TIA_LEDMTR_AUDX_REQ |
00050 |
3A80 6B6B 00051 clrf TIA_LEDMTR_VALUE |
gpasm-0.13.7 beta setup_tia_cartridge.asm1-30-2014 10:42:05 PAGE 72 |
|
|
LOC OBJECT CODE LINE SOURCE TEXT |
VALUE |
|
3A82 0E01 00052 movlw 0x01 |
3A84 6104 00053 cpfslt TIA_AUDV0 |
3A86 8F6B 00054 bsf TIA_LEDMTR_VALUE, TIA_LEDMTR0 |
3A88 0E07 00055 movlw 0x07 |
3A8A 6104 00056 cpfslt TIA_AUDV0 |
3A8C 8D6B 00057 bsf TIA_LEDMTR_VALUE, TIA_LEDMTR1 |
3A8E 0E0B 00058 movlw 0x0b |
3A90 6104 00059 cpfslt TIA_AUDV0 |
3A92 8B6B 00060 bsf TIA_LEDMTR_VALUE, TIA_LEDMTR2 |
3A94 0E0E 00061 movlw 0x0e |
3A96 6104 00062 cpfslt TIA_AUDV0 |
3A98 896B 00063 bsf TIA_LEDMTR_VALUE, TIA_LEDMTR3 |
00064 |
3A9A 0E01 00065 movlw 0x01 |
3A9C 6105 00066 cpfslt TIA_AUDV1 |
3A9E 876B 00067 bsf TIA_LEDMTR_VALUE, TIA_LEDMTR4 |
3AA0 0E07 00068 movlw 0x07 |
3AA2 6105 00069 cpfslt TIA_AUDV1 |
3AA4 856B 00070 bsf TIA_LEDMTR_VALUE, TIA_LEDMTR5 |
3AA6 0E0B 00071 movlw 0x0b |
3AA8 6105 00072 cpfslt TIA_AUDV1 |
3AAA 836B 00073 bsf TIA_LEDMTR_VALUE, TIA_LEDMTR6 |
3AAC 0E0E 00074 movlw 0x0e |
3AAE 6105 00075 cpfslt TIA_AUDV1 |
3AB0 816B 00076 bsf TIA_LEDMTR_VALUE, TIA_LEDMTR7 |
00077 |
3AB2 516B 00078 movf TIA_LEDMTR_VALUE, W |
3AB4 6E03 00079 movwf MIOS_PARAMETER1 |
00080 rgoto TIA_LEDMTR_Handler_Set |
3AB6 D001 M bra label |
00081 |
3AB8 00082 TIA_LEDMTR_Handler_Meter_Sampler |
3AB8 6A03 00083 clrf MIOS_PARAMETER1 |
00084 ; To Do |
00085 ;;rgoto TIA_LEDMTR_Handler_Set |
00086 |
3ABA 00087 TIA_LEDMTR_Handler_Set |
3ABA 0E00 00088 movlw TIA_LEDMTR_REG |
3ABC EC68 F016 00089 call MIOS_DOUT_SRSet |
00090 |
3AC0 00091 TIA_LEDMTR_Handler_End |
3AC0 0012 00092 return |
00093 |
00094 ;; -------------------------------------------------------------------------- |
00095 ;; TIA_LEDMTR Led Pattern orange to green |
00096 ;; -------------------------------------------------------------------------- |
3AC2 00097 TIA_LEDMTR_PlayFormat |
3AC2 D82D 00098 rcall TIA_LEDMTR_Player_Init |
00099 |
3AC4 00100 TIA_LEDMTR_PlayFormat_R |
3AC4 D82C 00101 rcall TIA_LEDMTR_Player_Init |
3AC6 0E11 00102 movlw 0x11 |
3AC8 D83D 00103 rcall TIA_LEDMTR_Player_On_Wait01 |
3ACA 0E03 00104 movlw 0x03 |
gpasm-0.13.7 beta setup_tia_cartridge.asm1-30-2014 10:42:05 PAGE 73 |
|
|
LOC OBJECT CODE LINE SOURCE TEXT |
VALUE |
|
3ACC D83E 00105 rcall TIA_LEDMTR_Wait |
00106 rgoto TIA_LEDMTR_End |
3ACE D026 M bra label |
00107 |
3AD0 00108 TIA_LEDMTR_PlayFormat_O |
3AD0 D826 00109 rcall TIA_LEDMTR_Player_Init |
3AD2 0E33 00110 movlw 0x33 |
3AD4 D837 00111 rcall TIA_LEDMTR_Player_On_Wait01 |
3AD6 0E01 00112 movlw 0x01 |
3AD8 D838 00113 rcall TIA_LEDMTR_Wait |
00114 rgoto TIA_LEDMTR_End |
3ADA D020 M bra label |
00115 |
3ADC 00116 TIA_LEDMTR_PlayFormat_G1 |
3ADC D820 00117 rcall TIA_LEDMTR_Player_Init |
3ADE 0E77 00118 movlw 0x77 |
3AE0 D831 00119 rcall TIA_LEDMTR_Player_On_Wait01 |
3AE2 0E03 00120 movlw 0x03 |
3AE4 D832 00121 rcall TIA_LEDMTR_Wait |
00122 rgoto TIA_LEDMTR_End |
3AE6 D01A M bra label |
00123 |
3AE8 00124 TIA_LEDMTR_PlayFormat_G2 |
3AE8 D81A 00125 rcall TIA_LEDMTR_Player_Init |
3AEA 0EFF 00126 movlw 0xff |
3AEC D82B 00127 rcall TIA_LEDMTR_Player_On_Wait01 |
3AEE 0E03 00128 movlw 0x03 |
3AF0 D82C 00129 rcall TIA_LEDMTR_Wait |
00130 rgoto TIA_LEDMTR_End |
3AF2 D014 M bra label |
00131 |
00132 ;; -------------------------------------------------------------------------- |
00133 ;; TIA_LEDMTR Led Pattern orange to green |
00134 ;; -------------------------------------------------------------------------- |
3AF4 00135 TIA_LEDMTR_PlayOtoG |
3AF4 D814 00136 rcall TIA_LEDMTR_Player_Init |
00137 |
3AF6 0E22 00138 movlw 0x22 |
3AF8 D825 00139 rcall TIA_LEDMTR_Player_On_Wait01 |
3AFA 0E03 00140 movlw 0x03 |
3AFC D826 00141 rcall TIA_LEDMTR_Wait |
3AFE 0E44 00142 movlw 0x44 |
3B00 D821 00143 rcall TIA_LEDMTR_Player_On_Wait01 |
3B02 0E03 00144 movlw 0x03 |
3B04 D822 00145 rcall TIA_LEDMTR_Wait |
3B06 0E88 00146 movlw 0x88 |
3B08 D81D 00147 rcall TIA_LEDMTR_Player_On_Wait01 |
00148 |
00149 rgoto TIA_LEDMTR_End |
3B0A D008 M bra label |
00150 |
00151 ;; -------------------------------------------------------------------------- |
00152 ;; TIA_LEDMTR Led Pattern orange to red |
00153 ;; -------------------------------------------------------------------------- |
gpasm-0.13.7 beta setup_tia_cartridge.asm1-30-2014 10:42:05 PAGE 74 |
|
|
LOC OBJECT CODE LINE SOURCE TEXT |
VALUE |
|
3B0C 00154 TIA_LEDMTR_PlayOtoR |
3B0C D808 00155 rcall TIA_LEDMTR_Player_Init |
00156 |
3B0E 0E22 00157 movlw 0x22 |
3B10 D819 00158 rcall TIA_LEDMTR_Player_On_Wait01 |
3B12 0E03 00159 movlw 0x03 |
3B14 D81A 00160 rcall TIA_LEDMTR_Wait |
3B16 0E11 00161 movlw 0x11 |
3B18 D815 00162 rcall TIA_LEDMTR_Player_On_Wait01 |
00163 |
00164 rgoto TIA_LEDMTR_End |
3B1A D000 M bra label |
00165 |
00166 |
00167 |
00168 ;; -------------------------------------------------------------------------- |
00169 ;; TIA_LEDMTR End |
00170 ;; -------------------------------------------------------------------------- |
3B1C 00171 TIA_LEDMTR_End |
00172 ;bcf TIA_STAT, TIA_STAT_ENGINE_DISABLE; turn on TIA software synth part again |
00173 ;goto TIA_PATCH_Init ; init patch and exit |
3B1C 0012 00174 return |
00175 |
00176 |
00177 ;; -------------------------------------------------------------------------- |
00178 ;; TIA_LEDMTR Initialization routine |
00179 ;; -------------------------------------------------------------------------- |
3B1E 00180 TIA_LEDMTR_Player_Init |
3B1E 8010 00181 bsf TIA_STAT, TIA_STAT_ENGINE_DISABLE; turn off TIA software synth part |
00182 |
00183 SET_BSR TIA_BASE |
3B20 0101 M movlb HIGH(reg) |
3B22 6A03 00184 clrf MIOS_PARAMETER1 |
3B24 0E00 00185 movlw TIA_LEDMTR_REG |
3B26 EC68 F016 00186 call MIOS_DOUT_SRSet |
3B2A 0012 00187 return |
00188 ;; -------------------------------------------------------------------------- |
00189 ;; TIA_LEDMTR a note (in: Note Number) |
00190 ;; -------------------------------------------------------------------------- |
3B2C 00191 TIA_LEDMTR_Player_On |
00192 SET_BSR TIA_BASE |
3B2C 0101 M movlb HIGH(reg) |
3B2E 6E03 00193 movwf MIOS_PARAMETER1 |
3B30 0E00 00194 movlw TIA_LEDMTR_REG |
3B32 EC68 F016 00195 call MIOS_DOUT_SRSet |
3B36 0012 00196 return |
00197 |
3B38 00198 TIA_LEDMTR_Player_Off |
00199 SET_BSR TIA_BASE |
3B38 0101 M movlb HIGH(reg) |
3B3A 6A03 00200 clrf MIOS_PARAMETER1 |
3B3C 0E00 00201 movlw TIA_LEDMTR_REG |
3B3E EC68 F016 00202 call MIOS_DOUT_SRSet |
3B42 0012 00203 return |
gpasm-0.13.7 beta setup_tia_cartridge.asm1-30-2014 10:42:05 PAGE 75 |
|
|
LOC OBJECT CODE LINE SOURCE TEXT |
VALUE |
|
00204 |
3B44 00205 TIA_LEDMTR_Player_On_Wait01 |
3B44 DFF3 00206 rcall TIA_LEDMTR_Player_On |
3B46 0E01 00207 movlw 0x01 |
00208 rgoto TIA_LEDMTR_Wait |
3B48 D000 M bra label |
00209 |
00210 |
00211 ;; -------------------------------------------------------------------------- |
00212 ;; TIA_LEDMTR wait for a certain time and poll TIA_SR Handler |
00213 ;; -------------------------------------------------------------------------- |
3B4A 00214 TIA_LEDMTR_Wait |
3B4A 6E06 00215 movwf TMP1 |
3B4C 0004 00216 clrwdt |
3B4E 00217 TIA_LEDMTR_WaitLoop |
3B4E 0E0A 00218 movlw 10 |
3B50 ECCE F016 00219 call MIOS_Delay |
3B54 2E06 00220 decfsz TMP1, F |
00221 rgoto TIA_LEDMTR_WaitLoop |
3B56 D7FB M bra label |
3B58 0012 00222 return |
00223 |
00379 ;#include "tia_lcd.inc" |
00380 #include "tia_patch.inc" |
00001 ; $Id: tia_patch.inc bdupeyron.tech@gmail.com(Antichambre) |
00002 ; |
00003 ; TIA Patch routines |
00004 ; |
00005 ; ========================================================================== |
00006 ; |
00007 ; Copyright 1998-2006 Thorsten Klose (tk@midibox.org) |
00008 ; Licensed for personal non-commercial use only. |
00009 ; All other rights reserved. |
00010 ; |
00011 ; ========================================================================== |
00012 |
00013 |
00014 ;; -------------------------------------------------------------------------- |
00015 ;; Init Routine for patch parameters |
00016 ;; Note that the MIDI events are initialized separately, this routine will |
00017 ;; be called on power-on and after a new MIDI dump has been loaded |
00018 ;; -------------------------------------------------------------------------- |
3B5A 00019 TIA_PATCH_Init |
00020 ;; disable TIA engine |
3B5A 8010 00021 bsf TIA_STAT, TIA_STAT_ENGINE_DISABLE |
00022 |
00023 ;; clear the whole TIA SFR memory space |
3B5C 0E00 00024 movlw ((TIA_SW_CLEAR_END-TIA_SW_CLEAR_BEGIN)+1) & 0xff |
3B5E 6E06 00025 movwf TMP1 |
3B60 EE01 F000 00026 lfsr FSR0, TIA_SW_CLEAR_BEGIN |
3B64 00027 TIA_PATCH_Init_ClearLoop |
3B64 6AEE 00028 clrf POSTINC0 |
3B66 2E06 00029 decfsz TMP1, F |
00030 rgoto TIA_PATCH_Init_ClearLoop |
gpasm-0.13.7 beta setup_tia_cartridge.asm1-30-2014 10:42:05 PAGE 76 |
|
|
LOC OBJECT CODE LINE SOURCE TEXT |
VALUE |
|
3B68 D7FD M bra label |
00031 |
00032 ;; fetch 128 TIA parameters from EEPROM |
3B6A 6A06 00033 clrf TMP1 |
3B6C 0E00 00034 movlw EEPROM_PATCH & 0xff |
3B6E 6EA9 00035 movwf EEADR |
3B70 0E00 00036 movlw (EEPROM_PATCH >> 8) & 0xff |
3B72 6EAA 00037 movwf EEADRH |
3B74 C014 F011 00038 movff TIA_PBANK, TIA_BANK |
3B78 C013 F012 00039 movff TIA_PATCH, TIA_PRESET |
3B7C 00040 TIA_PATCH_InitEELoop |
3B7C 5006 00041 movf TMP1, W |
3B7E EC59 F030 00042 call TIA_SYSEX_TABLE_Get; get CC number |
3B82 6E07 00043 movwf TMP2 ; temporary store number in TMP2 |
00044 |
3B84 C006 FFA9 00045 movff TMP1, EEADR ; read parameter from current TIA bank |
3B88 EC85 F01E 00046 call TIA_BANK_Read |
3B8C 6E03 00047 movwf MIOS_PARAMETER1 ; store value in MIOS_PARAMETER1 |
00048 |
00049 ;; branch depending on TMP2[7..4] |
00050 BRA_IFSET TMP2, 7, ACCESS, TIA_PATCH_InitEELoopS |
3B8E BE07 M btfsc reg, bit, reg_a |
3B90 D004 M bra label |
3B92 00051 TIA_PATCH_InitEELoopN |
00052 ;; if TMP2[7] == 0, then set CC parameter |
3B92 5007 00053 movf TMP2, W |
3B94 ECD9 F02D 00054 call TIA_CCIN_Set |
00055 rgoto TIA_PATCH_InitEELoopC |
3B98 D008 M bra label |
3B9A 00056 TIA_PATCH_InitEELoopS |
00057 ;; if TMP2[7..4] == 9, then set split point |
3B9A 5007 00058 movf TMP2, W |
3B9C 0BF0 00059 andlw 0xf0 |
3B9E 0A90 00060 xorlw 0x90 |
3BA0 E104 00061 bnz TIA_PATCH_InitEELoopC |
3BA2 5007 00062 movf TMP2, W |
3BA4 D81D 00063 rcall TIA_PATCH_GetSplitPointer |
3BA6 C003 FFE7 00064 movff MIOS_PARAMETER1, INDF1 |
3BAA 00065 TIA_PATCH_InitEELoopC |
00066 |
3BAA 2A06 00067 incf TMP1, F ; increment CC counter, loop until 0x80 |
00068 BRA_IFCLR TMP1, 7, ACCESS, TIA_PATCH_InitEELoop |
3BAC AE06 M btfss reg, bit, reg_a |
3BAE D7E6 M bra label |
00069 |
00070 ;; get and store the MIDI channels |
3BB0 0E7C 00071 movlw EEPROM_CFG_BASE & 0xff |
3BB2 6EA9 00072 movwf EEADR |
3BB4 ECB0 F016 00073 call MIOS_EEPROM_Read |
3BB8 CFE8 F160 00074 movff WREG, TIA_V2_BASE + TIA_Vx_MIDI_CHANNEL |
3BBC ECB0 F016 00075 call MIOS_EEPROM_Read |
3BC0 CFE8 F120 00076 movff WREG, TIA_V1_BASE + TIA_Vx_MIDI_CHANNEL |
00077 ;; get and store the device ID |
3BC4 ECB0 F016 00078 call MIOS_EEPROM_Read |
gpasm-0.13.7 beta setup_tia_cartridge.asm1-30-2014 10:42:05 PAGE 77 |
|
|
LOC OBJECT CODE LINE SOURCE TEXT |
VALUE |
|
00079 #if AUTO_DEVICE_ID |
00080 ;; if AUTO_ID enabled, derive the TIA device ID from the MIOS device ID instead |
00081 call MIOS_MIDI_DeviceIDGet |
00082 #endif |
3BC8 6E20 00083 movwf TIA_MIDI_DEVICE |
00084 |
3BCA ECB0 F016 00085 call MIOS_EEPROM_Read |
00086 ;; Empty |
00087 |
00088 ;; force a refresh of all registers |
3BCE 8210 00089 bsf TIA_STAT, TIA_STAT_FORCE_REFRESH |
00090 |
00091 ;; enable TIA engine again |
3BD0 9010 00092 bcf TIA_STAT, TIA_STAT_ENGINE_DISABLE |
00093 |
00094 #if DEFAULT_TIA_DEBUG_ON == 1 |
3BD2 8D64 00095 bsf TIA_DEBUG_EE_REGA, TIA_DEBUG_EE_PINIT |
3BD4 ECC1 F01A 00096 call TIA_Debug_EE_Do |
3BD8 8C5B 00097 bsf TIA_DEBUG_BS_REGA, TIA_DEBUG_EE_PINIT |
3BDA EC61 F01B 00098 call TIA_Debug_BS_Do |
00099 #endif |
3BDE 0012 00100 return |
00101 |
00102 |
00103 |
00104 ;; -------------------------------------------------------------------------- |
00105 ;; This help routine returns the pointer to TIA_Vx_SPLIT_xxx depending |
00106 ;; on WREG |
00107 ;; OUT: pointer in FSR1 |
00108 ;; -------------------------------------------------------------------------- |
3BE0 00109 TIA_PATCH_GetSplitPointer |
3BE0 EE11 F021 00110 lfsr FSR1, TIA_V1_BASE + TIA_Vx_SPLIT_LOWER |
3BE4 B0E8 00111 btfsc WREG, 0 |
3BE6 EE11 F022 00112 lfsr FSR1, TIA_V1_BASE + TIA_Vx_SPLIT_UPPER |
00113 |
3BEA 30E8 00114 rrf WREG, W |
3BEC 0B01 00115 andlw 0x01 |
3BEE 0D40 00116 mullw TIA_Vx_RECORD_LEN |
3BF0 50F3 00117 movf PRODL, W |
3BF2 26E1 00118 addwf FSR1L, F |
3BF4 0012 00119 return |
00381 #include "tia_bank.inc" |
00001 ; $Id: tia_bank.inc bdupeyron.tech@gmail.com(Antichambre) |
00002 ; |
00003 ; MIDIbox SID |
00004 ; BankStick Handler |
00005 ; |
00006 ; (Bank Load/Store routines located in tia_pbank.inc and tia_ebank.inc) |
00007 ; |
00008 ; ========================================================================== |
00009 ; |
00010 ; Copyright 1998-2007 Thorsten Klose (tk@midibox.org) |
00011 ; Licensed for personal non-commercial use only. |
00012 ; All other rights reserved. |
gpasm-0.13.7 beta setup_tia_cartridge.asm1-30-2014 10:42:05 PAGE 78 |
|
|
LOC OBJECT CODE LINE SOURCE TEXT |
VALUE |
|
00013 ; |
00014 ; ========================================================================== |
00015 |
00016 ;; -------------------------------------------------------------------------- |
00017 ;; Writes data to EEPROM or BankStick |
00018 ;; IN: Value in WREG, address offset in EEADR |
00019 ;; OUT: increments address |
00020 ;; -------------------------------------------------------------------------- |
3BF6 00021 TIA_BANK_Write |
3BF6 6E11 00022 movwf TIA_BANK ; temporary save word in TIA_BANK |
00023 ;; branch to internal patch if bankstick is not available or Patch is 0 |
3BF8 D8C9 00024 rcall TIA_BANK_GetBankStickAvailable |
3BFA E01C 00025 bz TIA_BANK_WriteInternal |
3BFC 5012 00026 movf TIA_PRESET, W |
3BFE E01A 00027 bz TIA_BANK_WriteInternal |
00028 |
00029 ;; test BS Size 64/128 Patchs, |
00030 ;rcall TIA_BANK_GetBankStickSize |
00031 ;bnz TIA_BANK_WriteBankStick |
00032 ;; exit if patch exceeds 63 |
00033 ;btfsc TIA_PRESET, 6 |
00034 ;rgoto TIA_BANK_WriteInternal |
00035 |
3C00 00036 TIA_BANK_WriteBankStick ; BankStick write: |
3C00 0E00 00037 movlw 0x00 |
3C02 0F00 00038 addlw DEFAULT_BS_READONLY ; exit if BS_READONLY |
3C04 E10F 00039 bnz TIA_BANK_WriteBankStick_NOk |
3C06 00040 TIA_BANK_WriteBankStick_Ok |
00041 #if DEFAULT_TIA_DEBUG_ON == 1 && DEFAULT_TIA_DEBUG_BS == 1 |
3C06 9562 00042 bcf TIA_DEBUG_BS_REGB, TIA_DEBUG_BS_RWCHK |
3C08 825B 00043 bsf TIA_DEBUG_BS_REGA, TIA_DEBUG_EE_RW |
3C0A 945B 00044 bcf TIA_DEBUG_BS_REGA, TIA_DEBUG_EE_PAGE |
3C0C 965B 00045 bcf TIA_DEBUG_BS_REGA, TIA_DEBUG_EE_ERROR |
3C0E 805B 00046 bsf TIA_DEBUG_BS_REGA, TIA_DEBUG_EE_FLAG |
00047 #endif |
3C10 D89D 00048 rcall TIA_BANK_SetBankStickAddress |
3C12 5005 00049 movf MIOS_PARAMETER3, W ; get byte from temp. register |
3C14 ECBA F016 00050 call MIOS_BANKSTICK_Write ; write content |
00051 ;; here we could add an error exception handler |
00052 #if DEFAULT_TIA_DEBUG_ON == 1 && DEFAULT_TIA_DEBUG_BS== 1 |
3C18 E00B 00053 bz TIA_BANK_WriteBankStick_NOk_DebugSkp |
3C1A 6E5C 00054 movwf TIA_DEBUG_BS_REG1 |
3C1C 2A5D 00055 incf TIA_DEBUG_BS_REG2, F |
3C1E 865B 00056 bsf TIA_DEBUG_BS_REGA, TIA_DEBUG_EE_ERROR |
3C20 8A5B 00057 bsf TIA_DEBUG_BS_REGA, TIA_DEBUG_EE_WRERR |
00058 rgoto TIA_BANK_WriteBankStick_NOk_DebugSkp |
3C22 D006 M bra label |
00059 #endif |
3C24 00060 TIA_BANK_WriteBankStick_NOk |
00061 #if DEFAULT_TIA_DEBUG_ON == 1 && DEFAULT_TIA_DEBUG_BS == 1 |
3C24 9562 00062 bcf TIA_DEBUG_BS_REGB, TIA_DEBUG_BS_RWCHK |
3C26 825B 00063 bsf TIA_DEBUG_BS_REGA, TIA_DEBUG_EE_RW |
3C28 945B 00064 bcf TIA_DEBUG_BS_REGA, TIA_DEBUG_EE_PAGE |
3C2A 865B 00065 bsf TIA_DEBUG_BS_REGA, TIA_DEBUG_EE_ERROR |
gpasm-0.13.7 beta setup_tia_cartridge.asm1-30-2014 10:42:05 PAGE 79 |
|
|
LOC OBJECT CODE LINE SOURCE TEXT |
VALUE |
|
3C2C 885B 00066 bsf TIA_DEBUG_BS_REGA, TIA_DEBUG_EE_READONLY |
3C2E 805B 00067 bsf TIA_DEBUG_BS_REGA, TIA_DEBUG_EE_FLAG |
3C30 00068 TIA_BANK_WriteBankStick_NOk_DebugSkp |
00069 #endif |
3C30 2AA9 00070 incf EEADR, F ; increment EEPROM address |
00071 rgoto TIA_BANK_Write_End |
3C32 D01C M bra label |
00072 |
3C34 00073 TIA_BANK_WriteInternal |
3C34 0E00 00074 movlw 0x00 |
3C36 0F01 00075 addlw DEFAULT_EE_READONLY ; exit if EE_READONLY |
3C38 E00E 00076 bz TIA_BANK_WriteInternal_Ok |
00077 #if DEFAULT_TIA_DEBUG_ON == 1 && DEFAULT_TIA_DEBUG_EE== 1 |
3C3A 8364 00078 bsf TIA_DEBUG_EE_REGA, TIA_DEBUG_EE_RW |
3C3C 9564 00079 bcf TIA_DEBUG_EE_REGA, TIA_DEBUG_EE_PAGE |
3C3E 8764 00080 bsf TIA_DEBUG_EE_REGA, TIA_DEBUG_EE_ERROR |
3C40 8964 00081 bsf TIA_DEBUG_EE_REGA, TIA_DEBUG_EE_READONLY |
3C42 8164 00082 bsf TIA_DEBUG_EE_REGA, TIA_DEBUG_EE_FLAG |
00083 #endif |
3C44 2AA9 00084 incf EEADR, F ; increment EEADR |
00085 rgoto TIA_BANK_Write_End ; and goto end |
3C46 D012 M bra label |
00086 ;; don't write if address in range between 0x7c and 0x7f (used to save channel and device number) |
00087 BRA_IFSET EEADR, 7, ACCESS, TIA_BANK_WriteInternal_Ok |
3C48 BEA9 M btfsc reg, bit, reg_a |
3C4A D005 M bra label |
3C4C 0E7B 00088 movlw 0x7c-1 |
3C4E 64A9 00089 cpfsgt EEADR, ACCESS |
00090 rgoto TIA_BANK_WriteInternal_Ok |
3C50 D002 M bra label |
3C52 2AA9 00091 incf EEADR, F ; increment EEADR |
00092 rgoto TIA_BANK_Write_End ; and goto end |
3C54 D00B M bra label |
3C56 00093 TIA_BANK_WriteInternal_Ok |
00094 #if DEFAULT_TIA_DEBUG_ON == 1 && DEFAULT_TIA_DEBUG_EE== 1 |
3C56 8364 00095 bsf TIA_DEBUG_EE_REGA, TIA_DEBUG_EE_RW |
3C58 9564 00096 bcf TIA_DEBUG_EE_REGA, TIA_DEBUG_EE_PAGE |
3C5A 8164 00097 bsf TIA_DEBUG_EE_REGA, TIA_DEBUG_EE_FLAG |
00098 #endif |
3C5C 5005 00099 movf MIOS_PARAMETER3, W ; get byte from temp. register |
3C5E ECB2 F016 00100 call MIOS_EEPROM_Write ; write to EEPROM |
00101 ;; here we could add an error exception handler |
00102 #if DEFAULT_TIA_DEBUG_ON == 1 && DEFAULT_TIA_DEBUG_EE== 1 |
3C62 E004 00103 bz TIA_BANK_Write_End |
3C64 6F65 00104 movwf TIA_DEBUG_EE_REG1 |
3C66 2B66 00105 incf TIA_DEBUG_EE_REG2, F |
3C68 8764 00106 bsf TIA_DEBUG_EE_REGA, TIA_DEBUG_EE_ERROR |
3C6A 8B64 00107 bsf TIA_DEBUG_EE_REGA, TIA_DEBUG_EE_WRERR |
00108 #endif |
3C6C 00109 TIA_BANK_Write_End |
00110 SET_BSR TIA_BASE ; fix BSR after a MIOS routine has been called |
3C6C 0101 M movlb HIGH(reg) |
3C6E 0012 00111 return |
00112 |
gpasm-0.13.7 beta setup_tia_cartridge.asm1-30-2014 10:42:05 PAGE 80 |
|
|
LOC OBJECT CODE LINE SOURCE TEXT |
VALUE |
|
00113 ;; -------------------------------------------------------------------------- |
00114 ;; Writes a page of 64 bytes to EEPROM or BankStick |
00115 ;; IN: Value in FSR1 buffer, address offset in EEADR |
00116 ;; OUT: increments address |
00117 ;; -------------------------------------------------------------------------- |
3C70 00118 TIA_BANK_WritePage |
00119 |
00120 ;; align EEADR if necessary |
3C70 0EC0 00121 movlw 0xc0 |
3C72 16A9 00122 andwf EEADR, F |
00123 |
00124 ;; branch to internal patch if bankstick is not available or Patch is 0 |
3C74 5012 00125 movf TIA_PRESET, W |
3C76 E022 00126 bz TIA_BANK_WritePageInternal |
00127 |
3C78 00128 TIA_BANK_WritePageBankStick ; BankStick write: |
3C78 0E00 00129 movlw 0x00 |
3C7A 0F00 00130 addlw DEFAULT_BS_READONLY ; exit if BS_READONLY |
3C7C E009 00131 bz TIA_BANK_WritePageBankStick_Ok |
3C7E 00132 TIA_BANK_WritePageBankStick_ReadOnly |
00133 ;; BS Read Only Error #0x02 |
3C7E 0E02 00134 movlw 0x02 |
3C80 6E26 00135 movwf TIA_SYSEX_ERROR |
00136 #if DEFAULT_TIA_DEBUG_ON == 1 && DEFAULT_TIA_DEBUG_BS == 1 |
3C82 9562 00137 bcf TIA_DEBUG_BS_REGB, TIA_DEBUG_BS_RWCHK |
3C84 825B 00138 bsf TIA_DEBUG_BS_REGA, TIA_DEBUG_EE_RW |
3C86 845B 00139 bsf TIA_DEBUG_BS_REGA, TIA_DEBUG_EE_PAGE |
3C88 865B 00140 bsf TIA_DEBUG_BS_REGA, TIA_DEBUG_EE_ERROR |
3C8A 885B 00141 bsf TIA_DEBUG_BS_REGA, TIA_DEBUG_EE_READONLY |
3C8C 805B 00142 bsf TIA_DEBUG_BS_REGA, TIA_DEBUG_EE_FLAG |
00143 #endif |
00144 rgoto TIA_BANK_WritePageBankStick_End |
3C8E D013 M bra label |
00145 |
3C90 00146 TIA_BANK_WritePageBankStick_Ok |
00147 #if DEFAULT_TIA_DEBUG_ON == 1 && DEFAULT_TIA_DEBUG_BS == 1 |
3C90 9562 00148 bcf TIA_DEBUG_BS_REGB, TIA_DEBUG_BS_RWCHK |
3C92 825B 00149 bsf TIA_DEBUG_BS_REGA, TIA_DEBUG_EE_RW |
3C94 845B 00150 bsf TIA_DEBUG_BS_REGA, TIA_DEBUG_EE_PAGE |
3C96 965B 00151 bcf TIA_DEBUG_BS_REGA, TIA_DEBUG_EE_ERROR |
3C98 805B 00152 bsf TIA_DEBUG_BS_REGA, TIA_DEBUG_EE_FLAG |
3C9A C011 F05E 00153 movff TIA_BANK, TIA_DEBUG_BS_REG3 |
3C9E C012 F05F 00154 movff TIA_PRESET, TIA_DEBUG_BS_REG4 |
00155 #endif |
3CA2 D854 00156 rcall TIA_BANK_SetBankStickAddress |
00157 ;; buffer already prepared in FSR1 |
3CA4 ECF2 F016 00158 call MIOS_BANKSTICK_WritePage ; write page |
00159 ;; here we could add an error exception handler |
3CA8 E006 00160 bz TIA_BANK_WritePageBankStick_End |
00161 ;; BS WritePage Error #0x07 |
3CAA 0E07 00162 movlw 0x07 |
3CAC 6E26 00163 movwf TIA_SYSEX_ERROR |
00164 #if DEFAULT_TIA_DEBUG_ON == 1 && DEFAULT_TIA_DEBUG_BS== 1 |
3CAE 6E5C 00165 movwf TIA_DEBUG_BS_REG1 |
gpasm-0.13.7 beta setup_tia_cartridge.asm1-30-2014 10:42:05 PAGE 81 |
|
|
LOC OBJECT CODE LINE SOURCE TEXT |
VALUE |
|
3CB0 2A5D 00166 incf TIA_DEBUG_BS_REG2, F |
3CB2 865B 00167 bsf TIA_DEBUG_BS_REGA, TIA_DEBUG_EE_ERROR |
3CB4 8A5B 00168 bsf TIA_DEBUG_BS_REGA, TIA_DEBUG_EE_WRERR |
00169 #endif |
3CB6 00170 TIA_BANK_WritePageBankStick_End |
3CB6 0E40 00171 movlw 0x40 ; increment EEPROM address by 0x40 |
3CB8 26A9 00172 addwf EEADR, F |
00173 rgoto TIA_BANK_WritePage_End |
3CBA D025 M bra label |
00174 |
3CBC 00175 TIA_BANK_WritePageInternal |
3CBC 6A12 00176 clrf TIA_PRESET |
3CBE 0E00 00177 movlw 0x00 |
3CC0 0F01 00178 addlw DEFAULT_EE_READONLY ; exit if EE_READONLY |
3CC2 E00A 00179 bz TIA_BANK_WritePageInternalLoop |
00180 ;; Internal EE Readonly Error #1 |
3CC4 0E01 00181 movlw 0x01 |
3CC6 6E26 00182 movwf TIA_SYSEX_ERROR |
00183 #if DEFAULT_TIA_DEBUG_ON == 1 && DEFAULT_TIA_DEBUG_EE== 1 |
3CC8 8364 00184 bsf TIA_DEBUG_EE_REGA, TIA_DEBUG_EE_RW |
3CCA 8564 00185 bsf TIA_DEBUG_EE_REGA, TIA_DEBUG_EE_PAGE |
3CCC 8764 00186 bsf TIA_DEBUG_EE_REGA, TIA_DEBUG_EE_ERROR |
3CCE 8964 00187 bsf TIA_DEBUG_EE_REGA, TIA_DEBUG_EE_READONLY |
3CD0 8164 00188 bsf TIA_DEBUG_EE_REGA, TIA_DEBUG_EE_FLAG |
00189 #endif |
3CD2 0E40 00190 movlw 0x40 |
3CD4 26A9 00191 addwf EEADR, F ; increment EEADR |
00192 rgoto TIA_BANK_WritePage_End ; and goto next |
3CD6 D017 M bra label |
00193 ;; write 64 bytes |
3CD8 00194 TIA_BANK_WritePageInternalLoop |
00195 #if DEFAULT_TIA_DEBUG_ON == 1 && DEFAULT_TIA_DEBUG_EE== 1 |
3CD8 8364 00196 bsf TIA_DEBUG_EE_REGA, TIA_DEBUG_EE_RW |
3CDA 8564 00197 bsf TIA_DEBUG_EE_REGA, TIA_DEBUG_EE_PAGE |
3CDC 8164 00198 bsf TIA_DEBUG_EE_REGA, TIA_DEBUG_EE_FLAG |
00199 #endif |
00200 ;; don't write if address in range between 0x7c and 0x7f (used to save channel and device number) |
00201 BRA_IFSET EEADR, 7, ACCESS, TIA_BANK_WritePageInternal_Ok |
3CDE BEA9 M btfsc reg, bit, reg_a |
3CE0 D005 M bra label |
3CE2 0E7B 00202 movlw 0x7c-1 |
3CE4 64A9 00203 cpfsgt EEADR, ACCESS |
00204 rgoto TIA_BANK_WritePageInternal_Ok |
3CE6 D002 M bra label |
3CE8 2AA9 00205 incf EEADR, F ; increment EEADR |
00206 rgoto TIA_BANK_WritePage_Next ; and goto next |
3CEA D00A M bra label |
3CEC 00207 TIA_BANK_WritePageInternal_Ok |
3CEC 50A9 00208 movf EEADR, W |
3CEE 0B3F 00209 andlw 0x3f |
3CF0 50E3 00210 movf PLUSW1, W ; get byte from buffer |
3CF2 ECB2 F016 00211 call MIOS_EEPROM_Write ; write to EEPROM |
00212 ;; here we could add an error exception handler |
00213 #if DEFAULT_TIA_DEBUG_ON == 1 && DEFAULT_TIA_DEBUG_EE== 1 |
gpasm-0.13.7 beta setup_tia_cartridge.asm1-30-2014 10:42:05 PAGE 82 |
|
|
LOC OBJECT CODE LINE SOURCE TEXT |
VALUE |
|
3CF6 E004 00214 bz TIA_BANK_WritePage_Next |
3CF8 6F65 00215 movwf TIA_DEBUG_EE_REG1 |
3CFA 2B66 00216 incf TIA_DEBUG_EE_REG2, F |
3CFC 8764 00217 bsf TIA_DEBUG_EE_REGA, TIA_DEBUG_EE_ERROR |
3CFE 8B64 00218 bsf TIA_DEBUG_EE_REGA, TIA_DEBUG_EE_WRERR |
00219 #endif |
3D00 00220 TIA_BANK_WritePage_Next |
3D00 50A9 00221 movf EEADR, W |
3D02 0B3F 00222 andlw 0x3f |
3D04 E1E9 00223 bnz TIA_BANK_WritePageInternalLoop |
00224 |
3D06 00225 TIA_BANK_WritePage_End |
00226 SET_BSR TIA_BASE ; fix BSR after a MIOS routine has been called |
3D06 0101 M movlb HIGH(reg) |
3D08 0012 00227 return |
00228 |
00229 |
00230 ;; -------------------------------------------------------------------------- |
00231 ;; Read data from EEPROM or BankStick |
00232 ;; IN: address offset in EEADR, |
00233 ;; internal perset in EEADRH, |
00234 ;; Patch number in MIOS_PARAMETER2, |
00235 ;; Bank number in TIA_BANK. |
00236 ;; OUT: 7-bit result in WREG, increments address |
00237 ;; -------------------------------------------------------------------------- |
00238 |
3D0A 00239 TIA_BANK_Read |
00240 ;; branch to internal patch if bankstick is not available or Patch is 0 |
3D0A 5011 00241 movf TIA_BANK, W |
3D0C D837 00242 rcall TIA_BANK_GetBankStickReady |
3D0E E013 00243 bz TIA_BANK_ReadInternal |
3D10 5012 00244 movf TIA_PRESET, W |
3D12 E011 00245 bz TIA_BANK_ReadInternal |
00246 |
3D14 D840 00247 rcall TIA_BANK_GetBankStickSize |
3D16 E102 00248 bnz TIA_BANK_ReadBankStick |
00249 |
3D18 BC12 00250 btfsc TIA_PRESET, 6 |
00251 rgoto TIA_BANK_Read_End |
3D1A D013 M bra label |
00252 |
3D1C 00253 TIA_BANK_ReadBankStick ; BankStick read: |
00254 #if DEFAULT_TIA_DEBUG_ON == 1 && DEFAULT_TIA_DEBUG_BS == 1 |
3D1C 9562 00255 bcf TIA_DEBUG_BS_REGB, TIA_DEBUG_BS_RWCHK |
3D1E 925B 00256 bcf TIA_DEBUG_BS_REGA, TIA_DEBUG_EE_RW |
3D20 945B 00257 bcf TIA_DEBUG_BS_REGA, TIA_DEBUG_EE_PAGE |
3D22 805B 00258 bsf TIA_DEBUG_BS_REGA, TIA_DEBUG_EE_FLAG |
3D24 C011 F05E 00259 movff TIA_BANK, TIA_DEBUG_BS_REG3 |
3D28 C012 F05F 00260 movff TIA_PRESET, TIA_DEBUG_BS_REG4 |
00261 #endif |
3D2C D80F 00262 rcall TIA_BANK_SetBankStickAddress |
3D2E ECB8 F016 00263 call MIOS_BANKSTICK_Read ; read content |
3D32 2AA9 00264 incf EEADR, F ; increment EEPROM address |
00265 rgoto TIA_BANK_Read_End |
gpasm-0.13.7 beta setup_tia_cartridge.asm1-30-2014 10:42:05 PAGE 83 |
|
|
LOC OBJECT CODE LINE SOURCE TEXT |
VALUE |
|
3D34 D006 M bra label |
00266 |
3D36 00267 TIA_BANK_ReadInternal |
00268 #if DEFAULT_TIA_DEBUG_ON == 1 && DEFAULT_TIA_DEBUG_EE== 1 |
3D36 9364 00269 bcf TIA_DEBUG_EE_REGA, TIA_DEBUG_EE_RW |
3D38 9564 00270 bcf TIA_DEBUG_EE_REGA, TIA_DEBUG_EE_PAGE |
3D3A 8164 00271 bsf TIA_DEBUG_EE_REGA, TIA_DEBUG_EE_FLAG |
00272 #endif |
3D3C 6A12 00273 clrf TIA_PRESET |
3D3E ECB0 F016 00274 call MIOS_EEPROM_Read |
00275 |
3D42 00276 TIA_BANK_Read_End |
00277 SET_BSR TIA_BASE ; fix BSR after a MIOS routine has been called |
3D42 0101 M movlb HIGH(reg) |
3D44 0012 00278 return |
00279 |
00280 |
00281 ;; -------------------------------------------------------------------------- |
00282 ;; This function sets a BankStick address |
00283 ;; IN: patch offset in EEADR |
00284 ;; patch number in MIOS_PARAMETER2 |
00285 ;; BankStick number in TIA_BANK |
00286 ;; OUT: address in MIOS_PARAMETER[12] |
00287 ;; BankStick selected via MIOS_BANKSTICK_CtrlSet |
00288 ;; -------------------------------------------------------------------------- |
3D46 00289 TIA_BANK_SetBankStickAddressMagic |
3D46 6A03 00290 clrf MIOS_PARAMETER1 |
3D48 6A04 00291 clrf MIOS_PARAMETER2 |
00292 rgoto TIA_BANK_SetBankStickAddress_Cont |
3D4A D006 M bra label |
00293 |
3D4C 00294 TIA_BANK_SetBankStickAddress |
00295 |
3D4C CFA9 F003 00296 movff EEADR, MIOS_PARAMETER1 ; copy address to low-byte |
3D50 B012 00297 btfsc TIA_PRESET, 0 |
3D52 8E03 00298 bsf MIOS_PARAMETER1, 7 ; select upper address range on odd bank number |
3D54 4012 00299 rrncf TIA_PRESET, W ; high-byte |
3D56 6E04 00300 movwf MIOS_PARAMETER2 |
00301 |
3D58 00302 TIA_BANK_SetBankStickAddress_Cont |
3D58 501A 00303 movf TIA_BANKSTICK_ID, W |
00304 #if DEFAULT_TIA_DEBUG_ON == 1 && DEFAULT_TIA_DEBUG_BS == 1 |
3D5A 0F80 00305 addlw 0x80 ; (Enable verify slower write accesses) |
00306 #endif |
3D5C ECEE F016 00307 call MIOS_BANKSTICK_CtrlSet |
00308 |
3D60 D81A 00309 rcall TIA_BANK_GetBankStickSize |
3D62 B4D8 00310 skpnz |
00311 rgoto TIA_BANK_SetBankStickAddress_32k |
3D64 D005 M bra label |
00312 |
3D66 00313 TIA_BANK_SetBankStickAddress_64k |
3D66 B011 00314 btfsc TIA_BANK, 0 |
3D68 8C04 00315 bsf MIOS_PARAMETER2, 6 |
gpasm-0.13.7 beta setup_tia_cartridge.asm1-30-2014 10:42:05 PAGE 84 |
|
|
LOC OBJECT CODE LINE SOURCE TEXT |
VALUE |
|
3D6A B211 00316 btfsc TIA_BANK, 1 |
3D6C 8E04 00317 bsf MIOS_PARAMETER2, 7 |
00318 rgoto TIA_BANK_SetBankStickAddress_End |
3D6E D005 M bra label |
00319 |
3D70 00320 TIA_BANK_SetBankStickAddress_32k |
3D70 9A04 00321 bcf MIOS_PARAMETER2, 5 |
3D72 B011 00322 btfsc TIA_BANK, 0 |
3D74 8A04 00323 bsf MIOS_PARAMETER2, 5 |
3D76 B211 00324 btfsc TIA_BANK, 1 |
3D78 8C04 00325 bsf MIOS_PARAMETER2, 6 |
00326 |
3D7A 00327 TIA_BANK_SetBankStickAddress_End |
3D7A 0012 00328 return |
00329 |
00330 |
00331 ;; -------------------------------------------------------------------------- |
00332 ;; This function returns the bankstick available status for the current bank |
00333 ;; IN: Bank number WREG |
00334 ;; OUT: WREG != 0 when bankstick available |
00335 ;; -------------------------------------------------------------------------- |
3D7C 00336 TIA_BANK_GetBankStickReady |
3D7C 40E8 00337 rrncf WREG, W |
3D7E 40E8 00338 rrncf WREG, W |
3D80 0B07 00339 andlw 0x07 |
3D82 6E1A 00340 movwf TIA_BANKSTICK_ID |
3D84 ECC6 F016 00341 call MIOS_HLP_GetBitORMask |
3D88 141B 00342 andwf TIA_BANKSTICK_RDY, W |
3D8A 0012 00343 return |
00344 |
00345 ;; -------------------------------------------------------------------------- |
00346 ;; This function returns the bankstick available status for the current bank |
00347 ;; IN: BankStick number in TIA_PBANK |
00348 ;; OUT: WREG != 0 when bankstick available |
00349 ;; -------------------------------------------------------------------------- |
3D8C 00350 TIA_BANK_GetBankStickAvailable |
3D8C 501A 00351 movf TIA_BANKSTICK_ID, W |
3D8E ECC6 F016 00352 call MIOS_HLP_GetBitORMask |
3D92 141C 00353 andwf TIA_BANKSTICK_STAT, W |
3D94 0012 00354 return |
00355 ;; -------------------------------------------------------------------------- |
00356 ;; This function returns the bankstick available status for the current bank |
00357 ;; IN: BankStick number in TIA_BANKSTICK_ID |
00358 ;; OUT: BankStick size in WREG and TIA_BANKSTICK_SIZE |
00359 ;; -------------------------------------------------------------------------- |
3D96 00360 TIA_BANK_GetBankStickSize |
3D96 501A 00361 movf TIA_BANKSTICK_ID, W |
3D98 ECC6 F016 00362 call MIOS_HLP_GetBitORMask |
3D9C 141D 00363 andwf TIA_BANKSTICK_SIZE, W |
3D9E 0012 00364 return |
00365 |
00366 |
00367 |
00368 ;; -------------------------------------------------------------------------- |
gpasm-0.13.7 beta setup_tia_cartridge.asm1-30-2014 10:42:05 PAGE 85 |
|
|
LOC OBJECT CODE LINE SOURCE TEXT |
VALUE |
|
00369 ;; selects address of magic number depending on TIA_BANKSTICK_CHK_CTR |
00370 ;; TIA_BANKSTICK_CHK_CTR or TIA_PBANK |
00371 ;; -------------------------------------------------------------------------- |
3DA0 00372 TIA_BANK_CheckStick_SelectMagic |
00373 ;; select BankStick depending on TIA_BANKSTICK_CHK_CTR |
3DA0 6E05 00374 movwf MIOS_PARAMETER3 |
3DA2 40E8 00375 rrncf WREG, W |
3DA4 40E8 00376 rrncf WREG, W |
3DA6 0B07 00377 andlw 0x07 |
3DA8 0F80 00378 addlw 0x80 ; (Enable verify slower write accesses) |
3DAA ECEE F016 00379 call MIOS_BANKSTICK_CtrlSet |
00380 |
00381 ;; determine if this is a 64k BankStick: |
00382 ;; read from address 0x8000, store value in PRODL |
3DAE 0E0F 00383 movlw 0x0f ;; between 0x03 - 0x7f |
3DB0 6E03 00384 movwf MIOS_PARAMETER1 |
3DB2 0E80 00385 movlw 0x80 |
3DB4 6E04 00386 movwf MIOS_PARAMETER2 |
3DB6 ECB8 F016 00387 call MIOS_BANKSTICK_Read |
3DBA 6EF3 00388 movwf PRODL |
00389 |
00390 ;; add 0x42 and write number to 0x0000 |
3DBC 0E0F 00391 movlw 0x0f ;; between 0x03 - 0x7f |
3DBE 6E03 00392 movwf MIOS_PARAMETER1 |
3DC0 6A04 00393 clrf MIOS_PARAMETER2 |
3DC2 50F3 00394 movf PRODL, W |
3DC4 0F42 00395 addlw 0x42 |
3DC6 ECBA F016 00396 call MIOS_BANKSTICK_Write |
00397 |
00398 ;; read again number from 0x8000, check if we still see the old value |
3DCA 0E0F 00399 movlw 0x0f ;; between 0x03 - 0x7f |
3DCC 6E03 00400 movwf MIOS_PARAMETER1 |
3DCE 0E80 00401 movlw 0x80 |
3DD0 6E04 00402 movwf MIOS_PARAMETER2 |
3DD2 ECB8 F016 00403 call MIOS_BANKSTICK_Read |
3DD6 18F3 00404 xorwf PRODL, W |
3DD8 E107 00405 bnz TIA_BANK_CheckStick_SelectMagic_32k |
3DDA 00406 TIA_BANK_CheckStick_SelectMagic_64k ; (64k device) |
00407 ;; try to read from BankStick (address 0x0000, 0x4000, 0x8000 or 0xc000) |
3DDA 6A03 00408 clrf MIOS_PARAMETER1 |
3DDC 6A04 00409 clrf MIOS_PARAMETER2 |
3DDE B005 00410 btfsc MIOS_PARAMETER3, 0 |
3DE0 8C04 00411 bsf MIOS_PARAMETER2, 6 |
3DE2 B205 00412 btfsc MIOS_PARAMETER3, 1 |
3DE4 8E04 00413 bsf MIOS_PARAMETER2, 7 |
00414 rgoto TIA_BANK_CheckStick_SelectMagic_End |
3DE6 D006 M bra label |
00415 |
3DE8 00416 TIA_BANK_CheckStick_SelectMagic_32k ; (32k device) |
00417 ;; try to read from BankStick (address 0x0000, 0x2000, 0x4000 or 0x0600) |
3DE8 6A03 00418 clrf MIOS_PARAMETER1 |
3DEA 6A04 00419 clrf MIOS_PARAMETER2 |
3DEC B005 00420 btfsc MIOS_PARAMETER3, 0 |
3DEE 8A04 00421 bsf MIOS_PARAMETER2, 5 |
gpasm-0.13.7 beta setup_tia_cartridge.asm1-30-2014 10:42:05 PAGE 86 |
|
|
LOC OBJECT CODE LINE SOURCE TEXT |
VALUE |
|
3DF0 B205 00422 btfsc MIOS_PARAMETER3, 1 |
3DF2 8C04 00423 bsf MIOS_PARAMETER2, 6 |
00424 ;; rgoto TIA_BANK_CheckStick_SelectMagic_End |
3DF4 00425 TIA_BANK_CheckStick_SelectMagic_End |
3DF4 0012 00426 return |
00427 |
00428 |
00429 |
00430 |
00431 |
00432 ;; -------------------------------------------------------------------------- |
00433 ;; Check Stick: try to read from BankStick, clear the appr. flag in |
00434 ;; TIA_BANKSTICK_STAT if BankStick not available |
00435 ;; -------------------------------------------------------------------------- |
3DF6 00436 TIA_BANK_CheckStick |
00437 |
00438 ;; increment check counter, wrap at 32 |
3DF6 2819 00439 incf TIA_BANKSTICK_CHK_CTR, W |
3DF8 0B1F 00440 andlw 0x1f |
3DFA 6E19 00441 movwf TIA_BANKSTICK_CHK_CTR |
00442 |
3DFC 90D8 00443 clrc |
3DFE 4019 00444 rrncf TIA_BANKSTICK_CHK_CTR, W |
3E00 40E8 00445 rrncf WREG, W |
3E02 0B07 00446 andlw 0x07 |
3E04 6E1A 00447 movwf TIA_BANKSTICK_ID |
00448 |
00449 ;; select "magic number" and try to read from BankStick |
3E06 5019 00450 movf TIA_BANKSTICK_CHK_CTR, W |
3E08 DFCB 00451 rcall TIA_BANK_CheckStick_SelectMagic |
00452 #if DEFAULT_TIA_DEBUG_ON == 1 && DEFAULT_TIA_DEBUG_BS == 1 |
3E0A C004 F05D 00453 movff MIOS_PARAMETER2, TIA_DEBUG_BS_REG2 |
00454 #endif |
3E0E ECB8 F016 00455 call MIOS_BANKSTICK_Read |
00456 ;; this sets the MIOS_BOX_STAT_BS_AVAILABLE flag |
00457 #if DEFAULT_TIA_DEBUG_ON == 1 && DEFAULT_TIA_DEBUG_BS == 1 |
3E12 C002 F05C 00458 movff MIOS_BOX_STAT, TIA_DEBUG_BS_REG1 |
00459 #endif |
00460 |
00461 ;; save old BankStick status in TMP1 |
3E16 C01C F006 00462 movff TIA_BANKSTICK_STAT, TMP1 |
00463 |
00464 ;; modify the available flag of current bankstick |
00465 BRA_IFSET MIOS_BOX_STAT, MIOS_BOX_STAT_BS_AVAILABLE, ACCESS, TIA_BANK_CheckStick_AccPassed |
3E1A B002 M btfsc reg, bit, reg_a |
3E1C D005 M bra label |
3E1E 00466 TIA_BANK_CheckStick_AccFailed |
3E1E 501A 00467 movf TIA_BANKSTICK_ID, W |
3E20 ECC4 F016 00468 call MIOS_HLP_GetBitANDMask |
3E24 141C 00469 andwf TIA_BANKSTICK_STAT, W |
00470 rgoto TIA_BANK_CheckStick_AccCont |
3E26 D004 M bra label |
3E28 00471 TIA_BANK_CheckStick_AccPassed |
3E28 501A 00472 movf TIA_BANKSTICK_ID, W |
gpasm-0.13.7 beta setup_tia_cartridge.asm1-30-2014 10:42:05 PAGE 87 |
|
|
LOC OBJECT CODE LINE SOURCE TEXT |
VALUE |
|
3E2A ECC6 F016 00473 call MIOS_HLP_GetBitORMask |
3E2E 101C 00474 iorwf TIA_BANKSTICK_STAT, W |
3E30 00475 TIA_BANK_CheckStick_AccCont |
3E30 6E07 00476 movwf TMP2 |
00477 |
00478 ;; check if flag has been changed |
3E32 5007 00479 movf TMP2, W |
3E34 1806 00480 xorwf TMP1, W |
3E36 E00A 00481 bz TIA_BANK_CheckStick_End |
3E38 8010 00482 bsf TIA_STAT, TIA_STAT_ENGINE_DISABLE, ACCESS |
00483 |
00484 #if DEFAULT_TIA_DEBUG_ON == 1 && DEFAULT_TIA_DEBUG_BS == 1 |
3E3A 805B 00485 bsf TIA_DEBUG_BS_REGA, TIA_DEBUG_EE_FLAG |
3E3C 8562 00486 bsf TIA_DEBUG_BS_REGB, TIA_DEBUG_BS_RWCHK |
00487 #endif |
00488 |
00489 ;; flag changed - branch depending on available status |
3E3E 501A 00490 movf TIA_BANKSTICK_ID, W |
3E40 ECC6 F016 00491 call MIOS_HLP_GetBitORMask |
3E44 1407 00492 andwf TMP2, W |
3E46 E150 00493 bnz TIA_BANK_CheckStick_Ext |
00494 rgoto TIA_BANK_CheckStick_Int |
3E48 D002 M bra label |
3E4A 9010 00495 bcf TIA_STAT, TIA_STAT_ENGINE_DISABLE |
3E4C 00496 TIA_BANK_CheckStick_End |
3E4C 0012 00497 return |
00498 |
00499 |
00500 |
00501 |
00502 ;; ------------------------------------------------------------------ |
00503 ;; --> Internal Patch |
3E4E 00504 TIA_BANK_CheckStick_Int |
00505 #if DEFAULT_TIA_DEBUG_ON == 1 && DEFAULT_TIA_DEBUG_BS == 1 |
3E4E 9962 00506 bcf TIA_DEBUG_BS_REGB, TIA_DEBUG_BS_INTEXT |
00507 #endif |
3E50 00508 TIA_BANK_CheckStick_IntReload |
00509 ;; TABLE_ADDR TEXT_INTBANK_0 ; print message |
00510 ;; call MIOS_LCD_PrintMessage |
00511 ;; call MIOS_LCD_PrintMessage |
00512 |
00513 ;; reset size |
3E50 5007 00514 movf TMP2, W |
3E52 161D 00515 andwf TIA_BANKSTICK_SIZE, F |
00516 |
3E54 00517 TIA_BANK_CheckStick_Int_StatOk |
3E54 C007 F01C 00518 movff TMP2, TIA_BANKSTICK_STAT |
3E58 EC86 F01D 00519 call TIA_LEDMTR_PlayOtoR ;; play mled orange to red pattern |
3E5C EC4D F021 00520 call TIA_TUNE_PlayDisconnect ;; play tune 5 |
3E60 EC9C F01D 00521 call TIA_LEDMTR_Player_Off |
00522 |
00523 ;; branch depending on patch/kit BankStick |
00524 #if DEFAULT_BS_KBANK_ID >= 0 && DEFAULT_BS_KBANK_ID <= 7 |
3E64 0E04 00525 movlw DEFAULT_BS_KBANK_ID-1 |
gpasm-0.13.7 beta setup_tia_cartridge.asm1-30-2014 10:42:05 PAGE 88 |
|
|
LOC OBJECT CODE LINE SOURCE TEXT |
VALUE |
|
3E66 641A 00526 cpfsgt TIA_BANKSTICK_ID, ACCESS |
00527 rgoto TIA_BANK_CheckStick_Int_P |
3E68 D02A M bra label |
3E6A B219 00528 btfsc TIA_BANKSTICK_CHK_CTR, 1 |
00529 rgoto TIA_BANK_CheckStick_Int_WT |
3E6C D014 M bra label |
00530 |
3E6E 00531 TIA_BANK_CheckStick_Int_K |
00532 #if DEFAULT_TIA_DEBUG_ON == 1 && DEFAULT_TIA_DEBUG_BS == 1 |
3E6E 8162 00533 bsf TIA_DEBUG_BS_REGB, TIA_DEBUG_EE_PK |
3E70 9362 00534 bcf TIA_DEBUG_BS_REGB, TIA_DEBUG_EE_WT |
00535 #endif |
3E72 501A 00536 movf TIA_BANKSTICK_ID, W ;; clear flag |
3E74 ECC4 F016 00537 call MIOS_HLP_GetBitANDMask |
3E78 161B 00538 andwf TIA_BANKSTICK_RDY, F |
3E7A 0E05 00539 movlw 0x05 ;;send CFG_BSInfo ;; send sysex CFG BS infos |
3E7C 6E25 00540 movwf TIA_SYSEX_ADDRESS |
3E7E ECB5 F02C 00541 call _TIA_SYSEX_End_CFG_Read |
3E82 5019 00542 movf TIA_BANKSTICK_CHK_CTR, W |
3E84 1816 00543 xorwf TIA_KBANK, W |
3E86 E12F 00544 bnz TIA_BANK_CheckStick_Int_End |
3E88 6A16 00545 clrf TIA_KBANK ;; Reinit to... |
3E8A 6A15 00546 clrf TIA_KIT |
3E8C 0E0F 00547 movlw 0x0f ;; send sysex CFG All |
3E8E 6E25 00548 movwf TIA_SYSEX_ADDRESS |
3E90 ECB5 F02C 00549 call _TIA_SYSEX_End_CFG_Read ;; ...internal patch |
00550 rgoto TIA_BANK_CheckStick_Int_End |
3E94 D028 M bra label |
00551 |
3E96 00552 TIA_BANK_CheckStick_Int_WT |
00553 #if DEFAULT_TIA_DEBUG_ON == 1 && DEFAULT_TIA_DEBUG_BS == 1 |
3E96 8162 00554 bsf TIA_DEBUG_BS_REGB, TIA_DEBUG_EE_PK |
3E98 8362 00555 bsf TIA_DEBUG_BS_REGB, TIA_DEBUG_EE_WT |
00556 #endif |
3E9A 501A 00557 movf TIA_BANKSTICK_ID, W ;; clear flag |
3E9C ECC4 F016 00558 call MIOS_HLP_GetBitANDMask |
3EA0 161B 00559 andwf TIA_BANKSTICK_RDY, F |
3EA2 0E05 00560 movlw 0x05 ;;send CFG_BSInfo ;; send sysex CFG BS infos |
3EA4 6E25 00561 movwf TIA_SYSEX_ADDRESS |
3EA6 ECB5 F02C 00562 call _TIA_SYSEX_End_CFG_Read |
3EAA 5019 00563 movf TIA_BANKSTICK_CHK_CTR, W |
3EAC 1818 00564 xorwf TIA_WBANK, W |
3EAE E11B 00565 bnz TIA_BANK_CheckStick_Int_End |
3EB0 6A18 00566 clrf TIA_WBANK ;; Reinit to... |
3EB2 6A17 00567 clrf TIA_WT |
3EB4 0E0F 00568 movlw 0x0f ;; send sysex CFG All |
3EB6 6E25 00569 movwf TIA_SYSEX_ADDRESS |
3EB8 ECB5 F02C 00570 call _TIA_SYSEX_End_CFG_Read ;; ...internal patch |
00571 rgoto TIA_BANK_CheckStick_Int_End |
3EBC D014 M bra label |
00572 #endif ;; DEFAULT_BS_KBANK_ID >= 0 && DEFAULT_BS_KBANK_ID <= 7 |
00573 |
3EBE 00574 TIA_BANK_CheckStick_Int_P |
00575 #if DEFAULT_TIA_DEBUG_ON == 1 && DEFAULT_TIA_DEBUG_BS == 1 |
gpasm-0.13.7 beta setup_tia_cartridge.asm1-30-2014 10:42:05 PAGE 89 |
|
|
LOC OBJECT CODE LINE SOURCE TEXT |
VALUE |
|
3EBE 9162 00576 bcf TIA_DEBUG_BS_REGB, TIA_DEBUG_EE_PK |
00577 #endif |
3EC0 501A 00578 movf TIA_BANKSTICK_ID, W ;; clear flag |
3EC2 ECC4 F016 00579 call MIOS_HLP_GetBitANDMask |
3EC6 161B 00580 andwf TIA_BANKSTICK_RDY, F |
3EC8 0E05 00581 movlw 0x05 ;;send CFG_BSInfo ;; send sysex CFG BS infos |
3ECA 6E25 00582 movwf TIA_SYSEX_ADDRESS |
3ECC ECB5 F02C 00583 call _TIA_SYSEX_End_CFG_Read |
3ED0 5019 00584 movf TIA_BANKSTICK_CHK_CTR, W |
3ED2 1814 00585 xorwf TIA_PBANK, W |
3ED4 E108 00586 bnz TIA_BANK_CheckStick_Int_End |
3ED6 6A14 00587 clrf TIA_PBANK ;; Reinit to... |
3ED8 6A13 00588 clrf TIA_PATCH |
3EDA 0E0F 00589 movlw 0x0f ;; send sysex CFG All |
3EDC 6E25 00590 movwf TIA_SYSEX_ADDRESS |
3EDE ECB5 F02C 00591 call _TIA_SYSEX_End_CFG_Read ;; ...internal patch |
3EE2 ECAD F01D 00592 call TIA_PATCH_Init |
00593 ;;rgoto TIA_BANK_CheckStick_Int_End |
00594 |
3EE6 00595 TIA_BANK_CheckStick_Int_End |
3EE6 0012 00596 return |
00597 |
00598 |
00599 ;; ------------------------------------------------------------------ |
00600 ;; --> External Patch |
3EE8 00601 TIA_BANK_CheckStick_Ext |
00602 #if DEFAULT_TIA_DEBUG_ON == 1 && DEFAULT_TIA_DEBUG_BS == 1 |
3EE8 8962 00603 bsf TIA_DEBUG_BS_REGB, TIA_DEBUG_BS_INTEXT |
00604 #endif |
00605 ;; TABLE_ADDR TEXT_EXTBANK_0 ; print message |
00606 ;; call MIOS_LCD_PrintMessage |
00607 ;; call MIOS_LCD_PrintMessage |
00608 |
00609 ;; new setup will be reloaded automatically |
00610 ;; set reinit counter - CS configuration will be restored after one second |
00611 ;movlw 10 |
00612 ;movwf CS_MENU_REINIT_CFG_CTR |
00613 |
00614 ;; now check if the magic numbers exist in bankstick bank - if not, format bank automatically |
3EEA 0E32 00615 movlw 50 ; wait some ms to get a stable status |
3EEC ECCE F016 00616 call MIOS_Delay |
00617 |
3EF0 5019 00618 movf TIA_BANKSTICK_CHK_CTR, W |
3EF2 DF56 00619 rcall TIA_BANK_CheckStick_SelectMagic |
3EF4 ECB8 F016 00620 call MIOS_BANKSTICK_Read |
00621 #if DEFAULT_TIA_DEBUG_ON == 1 && DEFAULT_TIA_DEBUG_BS == 1 |
3EF8 6E5E 00622 movwf TIA_DEBUG_BS_REG3 |
00623 #endif |
3EFA 0A83 00624 xorlw BANKSTICK_MAGIC0 ; branch to unformatted message if number not equal |
3EFC A4D8 00625 skpz |
00626 rgoto TIA_BANK_CheckStick_Unformatted |
3EFE D073 M bra label |
00627 |
00628 ;; magic numbers are different between Patch/Kit-WT bankstick |
gpasm-0.13.7 beta setup_tia_cartridge.asm1-30-2014 10:42:05 PAGE 90 |
|
|
LOC OBJECT CODE LINE SOURCE TEXT |
VALUE |
|
00629 #if DEFAULT_BS_KBANK_ID >= 0 && DEFAULT_BS_KBANK_ID <= 7 |
3F00 0E04 00630 movlw DEFAULT_BS_KBANK_ID-1 |
3F02 641A 00631 cpfsgt TIA_BANKSTICK_ID, ACCESS |
00632 rgoto TIA_BANK_CheckStick_Ext_P |
3F04 D017 M bra label |
00633 |
00634 ;; Kit / Wavetable |
3F06 00635 TIA_BANK_CheckStick_Ext_K |
00636 ;; Magic ( Kit suite) |
00637 ;; set bankstick type depending on second byte (BANKSTICK_MAGICK/P) |
00638 #if DEFAULT_TIA_DEBUG_ON == 1 && DEFAULT_TIA_DEBUG_BS == 1 |
3F06 501A 00639 movf TIA_BANKSTICK_ID, W |
3F08 ECC6 F016 00640 call MIOS_HLP_GetBitORMask |
3F0C 1363 00641 iorwf TIA_DEBUG_BS_REG9, F |
00642 #endif |
3F0E ECB8 F016 00643 call MIOS_BANKSTICK_Read |
3F12 6E06 00644 movwf TMP1 |
00645 #if DEFAULT_TIA_DEBUG_ON == 1 && DEFAULT_TIA_DEBUG_BS == 1 |
3F14 6E5F 00646 movwf TIA_DEBUG_BS_REG4 |
00647 #endif |
3F16 0A13 00648 xorlw BANKSTICK_MAGICK |
3F18 E009 00649 bz TIA_BANK_CheckStrick_Ext_Type_K |
3F1A 00650 TIA_BANK_CheckStrick_Ext_Type_NotK |
3F1A 5006 00651 movf TMP1, W |
3F1C 0A12 00652 xorlw BANKSTICK_MAGICP |
3F1E A4D8 00653 skpz |
00654 rgoto TIA_BANK_CheckStick_Unformatted ;; format |
3F20 D062 M bra label |
3F22 0E01 00655 movlw DEFAULT_BS_FPROTECT ;; type format protection |
3F24 0A01 00656 xorlw 0x01 |
3F26 B4D8 00657 skpnz |
00658 rgoto TIA_BANK_CheckStick_Unformatted_TProtect ;; exit |
3F28 D06B M bra label |
00659 rgoto TIA_BANK_CheckStick_Unformatted ;; format |
3F2A D05D M bra label |
3F2C 00660 TIA_BANK_CheckStrick_Ext_Type_K |
3F2C 0E13 00661 movlw BANKSTICK_MAGICK ;; valid type |
3F2E 6E06 00662 movwf TMP1 |
00663 #if DEFAULT_TIA_DEBUG_ON == 1 && DEFAULT_TIA_DEBUG_BS == 1 |
3F30 8162 00664 bsf TIA_DEBUG_BS_REGB, TIA_DEBUG_EE_PK |
00665 #endif |
00666 rgoto TIA_BANK_CheckStick_Ext_Size |
3F32 D016 M bra label |
00667 #endif ;; DEFAULT_BS_KBANK_ID >= 0 && DEFAULT_BS_KBANK_ID <= 7 |
00668 |
00669 ;; Patch |
3F34 00670 TIA_BANK_CheckStick_Ext_P |
00671 ;; Magic (Patch suite) |
00672 ;; set bankstick type depending on second byte (BANKSTICK_MAGICK/P) |
00673 #if DEFAULT_TIA_DEBUG_ON == 1 && DEFAULT_TIA_DEBUG_BS == 1 |
3F34 501A 00674 movf TIA_BANKSTICK_ID, W |
3F36 ECC4 F016 00675 call MIOS_HLP_GetBitANDMask |
3F3A 1763 00676 andwf TIA_DEBUG_BS_REG9, F |
00677 #endif |
gpasm-0.13.7 beta setup_tia_cartridge.asm1-30-2014 10:42:05 PAGE 91 |
|
|
LOC OBJECT CODE LINE SOURCE TEXT |
VALUE |
|
3F3C ECB8 F016 00678 call MIOS_BANKSTICK_Read |
3F40 6E06 00679 movwf TMP1 |
00680 #if DEFAULT_TIA_DEBUG_ON == 1 && DEFAULT_TIA_DEBUG_BS == 1 |
3F42 6E5F 00681 movwf TIA_DEBUG_BS_REG4 |
00682 #endif |
3F44 0A12 00683 xorlw BANKSTICK_MAGICP |
3F46 E009 00684 bz TIA_BANK_CheckStrick_Ext_Type_P |
3F48 00685 TIA_BANK_CheckStrick_Ext_Type_NotP |
3F48 5006 00686 movf TMP1, W |
3F4A 0A13 00687 xorlw BANKSTICK_MAGICK |
3F4C A4D8 00688 skpz |
00689 rgoto TIA_BANK_CheckStick_Unformatted ;; format |
3F4E D04B M bra label |
3F50 0E01 00690 movlw DEFAULT_BS_FPROTECT ;; type format protection |
3F52 0A01 00691 xorlw 0x01 |
3F54 B4D8 00692 skpnz |
00693 rgoto TIA_BANK_CheckStick_Unformatted_TProtect ;; exit |
3F56 D054 M bra label |
00694 rgoto TIA_BANK_CheckStick_Unformatted ;; format |
3F58 D046 M bra label |
3F5A 00695 TIA_BANK_CheckStrick_Ext_Type_P ;; valid type |
3F5A 0E12 00696 movlw BANKSTICK_MAGICP |
3F5C 6E06 00697 movwf TMP1 |
00698 #if DEFAULT_TIA_DEBUG_ON == 1 && DEFAULT_TIA_DEBUG_BS == 1 |
3F5E 9162 00699 bcf TIA_DEBUG_BS_REGB, TIA_DEBUG_EE_PK |
00700 #endif |
00701 ;;rgoto TIA_BANK_CheckStick_Ext_Size |
00702 |
3F60 00703 TIA_BANK_CheckStick_Ext_Size |
00704 ;; set bankstick size depending on third byte (32=32k, 64=64k) |
00705 #if DEFAULT_TIA_DEBUG_ON == 1 && DEFAULT_TIA_DEBUG_BS == 1 |
3F60 9762 00706 bcf TIA_DEBUG_BS_REGB, TIA_DEBUG_BS_SIZE |
00707 #endif |
3F62 501A 00708 movf TIA_BANKSTICK_ID, W |
3F64 ECC4 F016 00709 call MIOS_HLP_GetBitANDMask |
3F68 161D 00710 andwf TIA_BANKSTICK_SIZE, F ;; clear size |
3F6A ECB8 F016 00711 call MIOS_BANKSTICK_Read |
3F6E 0A40 00712 xorlw 64 |
3F70 E105 00713 bnz TIA_BANK_CheckStrick_Ext_Not64k |
3F72 00714 TIA_BANK_CheckStrick_Ext_64k |
00715 #if DEFAULT_TIA_DEBUG_ON == 1 && DEFAULT_TIA_DEBUG_BS == 1 |
3F72 8762 00716 bsf TIA_DEBUG_BS_REGB, TIA_DEBUG_BS_SIZE |
00717 #endif |
3F74 501A 00718 movf TIA_BANKSTICK_ID, W |
3F76 ECC6 F016 00719 call MIOS_HLP_GetBitORMask |
3F7A 121D 00720 iorwf TIA_BANKSTICK_SIZE, F ;; set size |
3F7C 00721 TIA_BANK_CheckStrick_Ext_Not64k |
00722 |
3F7C 00723 TIA_BANK_CheckStick_Ext_Fix ; to do if necessary... |
00724 ;; fix patches if required (and enabled via ENABLE_PATCH_FIXING) |
00725 ;movff TIA_BANKSTICK_CHK_CTR, TIA_PBANK |
00726 ;rcall TIA_BANK_FixPatches |
00727 ;; ok |
00728 |
gpasm-0.13.7 beta setup_tia_cartridge.asm1-30-2014 10:42:05 PAGE 92 |
|
|
LOC OBJECT CODE LINE SOURCE TEXT |
VALUE |
|
3F7C 00729 TIA_BANK_CheckStick_Ext_Stat |
00730 |
3F7C 5019 00731 movf TIA_BANKSTICK_CHK_CTR, W |
00732 |
3F7E 5019 00733 movf TIA_BANKSTICK_CHK_CTR, W ;; test 1st bank of current BS |
3F80 0B1C 00734 andlw 0x1c |
3F82 DF0E 00735 rcall TIA_BANK_CheckStick_SelectMagic |
3F84 ECB8 F016 00736 call MIOS_BANKSTICK_Read ;; read first byte from BankStick (magic0) |
3F88 0A83 00737 xorlw BANKSTICK_MAGIC0 ;; branch to unformatted message if number not equal |
3F8A E12C 00738 bnz TIA_BANK_CheckStick_Ext_Stat_NotOk |
3F8C ECB8 F016 00739 call MIOS_BANKSTICK_Read ;; read second byte from BankStick (magicPK) |
3F90 1806 00740 xorwf TMP1, W ;; branch to unformatted message if number not equal |
3F92 E128 00741 bnz TIA_BANK_CheckStick_Ext_Stat_NotOk |
00742 |
3F94 5019 00743 movf TIA_BANKSTICK_CHK_CTR, W ;; test 2nd bank of current BS |
3F96 0B1C 00744 andlw 0x1c |
3F98 0F01 00745 addlw 0x01 |
3F9A DF02 00746 rcall TIA_BANK_CheckStick_SelectMagic |
3F9C ECB8 F016 00747 call MIOS_BANKSTICK_Read ;; read first byte from BankStick (magic0) |
3FA0 0A83 00748 xorlw BANKSTICK_MAGIC0 ;; branch to unformatted message if number not equal |
3FA2 E120 00749 bnz TIA_BANK_CheckStick_Ext_Stat_NotOk |
3FA4 ECB8 F016 00750 call MIOS_BANKSTICK_Read ;; read second byte from BankStick (magicPK) |
3FA8 1806 00751 xorwf TMP1, W ;; branch to unformatted message if number not equal |
3FAA E11C 00752 bnz TIA_BANK_CheckStick_Ext_Stat_NotOk |
00753 |
3FAC 5019 00754 movf TIA_BANKSTICK_CHK_CTR, W ;; test 3rd bank of current BS |
3FAE 0B1C 00755 andlw 0x1c |
3FB0 0F02 00756 addlw 0x02 |
3FB2 DEF6 00757 rcall TIA_BANK_CheckStick_SelectMagic |
3FB4 ECB8 F016 00758 call MIOS_BANKSTICK_Read ;; read first byte from BankStick (magic0) |
3FB8 0A83 00759 xorlw BANKSTICK_MAGIC0 ;; branch to unformatted message if number not equal |
3FBA E114 00760 bnz TIA_BANK_CheckStick_Ext_Stat_NotOk |
3FBC ECB8 F016 00761 call MIOS_BANKSTICK_Read ;; read second byte from BankStick (magicPK) |
3FC0 1806 00762 xorwf TMP1, W ;; branch to unformatted message if number not equal |
3FC2 E110 00763 bnz TIA_BANK_CheckStick_Ext_Stat_NotOk |
00764 |
3FC4 5019 00765 movf TIA_BANKSTICK_CHK_CTR, W ;; test 4th bank of current BS |
3FC6 0B1C 00766 andlw 0x1c |
3FC8 0F03 00767 addlw 0x03 |
3FCA DEEA 00768 rcall TIA_BANK_CheckStick_SelectMagic |
3FCC ECB8 F016 00769 call MIOS_BANKSTICK_Read ;; read first byte from BankStick (magic0) |
3FD0 0A83 00770 xorlw BANKSTICK_MAGIC0 ;; branch to unformatted message if number not equal |
3FD2 E108 00771 bnz TIA_BANK_CheckStick_Ext_Stat_NotOk |
3FD4 ECB8 F016 00772 call MIOS_BANKSTICK_Read ;; read second byte from BankStick (magicPK) |
3FD8 1806 00773 xorwf TMP1, W ;; branch to unformatted message if number not equal |
3FDA E104 00774 bnz TIA_BANK_CheckStick_Ext_Stat_NotOk |
00775 |
3FDC 00776 TIA_BANK_CheckStick_Ext_Stat_Ok |
3FDC C007 F01C 00777 movff TMP2, TIA_BANKSTICK_STAT ;; status is set |
00778 #if DEFAULT_TIA_DEBUG_ON == 1 && DEFAULT_TIA_DEBUG_BS == 1 |
3FE0 8A5B 00779 bsf TIA_DEBUG_BS_REGA, TIA_DEBUG_BS_READY |
00780 #endif |
00781 rgoto TIA_BANK_CheckStick_Ext_ReadySet |
3FE2 D02C M bra label |
gpasm-0.13.7 beta setup_tia_cartridge.asm1-30-2014 10:42:05 PAGE 93 |
|
|
LOC OBJECT CODE LINE SOURCE TEXT |
VALUE |
|
3FE4 00782 TIA_BANK_CheckStick_Ext_Stat_NotOk ;; status not ready |
00783 rgoto TIA_BANK_CheckStick_Ext_End ;; end |
3FE4 D03A M bra label |
00784 |
3FE6 00785 TIA_BANK_CheckStick_Unformatted |
3FE6 0E01 00786 movlw DEFAULT_BS_FPROTECT ;; BS format inhibit |
3FE8 0A02 00787 xorlw 0x02 |
3FEA E006 00788 bz TIA_BANK_CheckStick_Unformatted_FProtect |
00789 |
3FEC C019 F011 00790 movff TIA_BANKSTICK_CHK_CTR, TIA_BANK |
3FF0 D856 00791 rcall TIA_BANK_FormatStick ;; --> format bankstick |
3FF2 C011 F019 00792 movff TIA_BANK, TIA_BANKSTICK_CHK_CTR |
00793 rgoto TIA_BANK_CheckStick_Ext_End ;; end |
3FF6 D031 M bra label |
00794 |
3FF8 00795 TIA_BANK_CheckStick_Unformatted_FProtect |
3FF8 C007 F01C 00796 movff TMP2, TIA_BANKSTICK_STAT ;; status is set |
00797 #if DEFAULT_TIA_DEBUG_ON == 1 && DEFAULT_TIA_DEBUG_BS == 1 |
3FFC 8D62 00798 bsf TIA_DEBUG_BS_REGB, TIA_DEBUG_BS_FPROTECT |
00799 #endif |
00800 rgoto TIA_BANK_CheckStick_Ext_ReadyClr |
3FFE D004 M bra label |
00801 |
4000 00802 TIA_BANK_CheckStick_Unformatted_TProtect |
4000 C007 F01C 00803 movff TMP2, TIA_BANKSTICK_STAT ;; status is set |
00804 #if DEFAULT_TIA_DEBUG_ON == 1 && DEFAULT_TIA_DEBUG_BS == 1 |
4004 8F62 00805 bsf TIA_DEBUG_BS_REGB, TIA_DEBUG_BS_TPROTECT |
00806 #endif |
00807 rgoto TIA_BANK_CheckStick_Ext_ReadyClr |
4006 D000 M bra label |
00808 |
4008 00809 TIA_BANK_CheckStick_Ext_ReadyClr |
4008 501A 00810 movf TIA_BANKSTICK_ID, W ;; clear flag |
400A ECC4 F016 00811 call MIOS_HLP_GetBitANDMask |
400E 161B 00812 andwf TIA_BANKSTICK_RDY, F |
4010 EC86 F01D 00813 call TIA_LEDMTR_PlayOtoR ;; play mled orange to red pattern |
4014 EC79 F021 00814 call TIA_TUNE_PlayWrong ;; play wrong tune |
4018 EC9C F01D 00815 call TIA_LEDMTR_Player_Off |
401C 0E05 00816 movlw 0x05 ;;send CFG_BSInfo ;; send sysex CFG BS infos |
401E 6E25 00817 movwf TIA_SYSEX_ADDRESS |
4020 ECB5 F02C 00818 call _TIA_SYSEX_End_CFG_Read |
4024 5019 00819 movf TIA_BANKSTICK_CHK_CTR, W |
4026 1814 00820 xorwf TIA_PBANK, W |
4028 E118 00821 bnz TIA_BANK_CheckStick_Ext_End |
402A 6A14 00822 clrf TIA_PBANK ;; Reinit to... |
402C 6A12 00823 clrf TIA_PRESET |
402E 0E0F 00824 movlw 0x0f ;; send sysex CFG All |
4030 6E25 00825 movwf TIA_SYSEX_ADDRESS |
4032 ECB5 F02C 00826 call _TIA_SYSEX_End_CFG_Read ;; ...internal patch |
4036 9010 00827 bcf TIA_STAT, TIA_STAT_ENGINE_DISABLE |
4038 EFAD F01D 00828 goto TIA_PATCH_Init |
00829 ;;rgoto TIA_BANK_CheckStick_Ext_End |
00830 |
403C 00831 TIA_BANK_CheckStick_Ext_ReadySet |
gpasm-0.13.7 beta setup_tia_cartridge.asm1-30-2014 10:42:05 PAGE 94 |
|
|
LOC OBJECT CODE LINE SOURCE TEXT |
VALUE |
|
403C 501A 00832 movf TIA_BANKSTICK_ID, W ;; set flag |
403E ECC6 F016 00833 call MIOS_HLP_GetBitORMask |
4042 121B 00834 iorwf TIA_BANKSTICK_RDY, F |
4044 EC7A F01D 00835 call TIA_LEDMTR_PlayOtoG ;; play mled orange to green pattern |
4048 EC63 F021 00836 call TIA_TUNE_PlayOk ;; play ready tune |
404C EC9C F01D 00837 call TIA_LEDMTR_Player_Off |
4050 0E05 00838 movlw 0x05 ;;send CFG_BSInfo ;; send sysex CFG BS infos |
4052 6E25 00839 movwf TIA_SYSEX_ADDRESS |
4054 ECB5 F02C 00840 call _TIA_SYSEX_End_CFG_Read |
4058 9010 00841 bcf TIA_STAT, TIA_STAT_ENGINE_DISABLE |
00842 ;;rgoto TIA_BANK_CheckStick_Ext_End |
00843 |
405A 00844 TIA_BANK_CheckStick_Ext_End |
405A 0012 00845 return |
00846 |
00847 |
00848 |
00849 ;; -------------------------------------------------------------------------- |
00850 ;; Format Stick: copy the lead default patch into the currently selected BankStick Bank |
00851 ;; IN: bank number in TIA_PBANK |
00852 ;; -------------------------------------------------------------------------- |
405C 00853 TEXT_FORMATBANK_0 STRING 20, 0x00, "* Formatting xxk * " |
405C 1400 202A M da ((length) << 8) | (pos), str |
6F46 6D72 |
7461 6974 |
676E 7820 |
6B78 2A20 |
2020 |
4072 00854 TEXT_FORMATBANK_1 STRING 20, 0x40, "* Patch x 0 * " |
4072 1440 202A M da ((length) << 8) | (pos), str |
6150 6374 |
2068 2078 |
3020 2020 |
2020 2A20 |
2020 |
4088 00855 TEXT_FORMATBANK_K STRING 20, 0x40, "* Ensemble 000 * " |
4088 1440 202A M da ((length) << 8) | (pos), str |
6E45 6573 |
626D 656C |
3020 3030 |
2020 2A20 |
2020 |
00856 |
409E 00857 TIA_BANK_FormatStick |
00858 ;; select BankStick depending on TIA_BANKSTICK_CHK_CTR |
409E 4011 00859 rrncf TIA_BANK, W |
40A0 40E8 00860 rrncf WREG, W |
40A2 0B07 00861 andlw 0x07 |
40A4 6E1A 00862 movwf TIA_BANKSTICK_ID |
00863 #if DEFAULT_TIA_DEBUG_ON == 1 && DEFAULT_TIA_DEBUG_BS == 1 |
40A6 0F80 00864 addlw 0x80 ; (Enable verify slower write accesses) |
00865 #endif |
40A8 ECEE F016 00866 call MIOS_BANKSTICK_CtrlSet |
00867 |
gpasm-0.13.7 beta setup_tia_cartridge.asm1-30-2014 10:42:05 PAGE 95 |
|
|
LOC OBJECT CODE LINE SOURCE TEXT |
VALUE |
|
40AC EC62 F01D 00868 call TIA_LEDMTR_PlayFormat_R |
00869 |
00870 ;; determine if this is a 64k BankStick: |
00871 ;; read from address 0x8000, store value in PRODL |
40B0 0E0F 00872 movlw 0x0f ;; between 0x03 - 0x7f |
40B2 6E03 00873 movwf MIOS_PARAMETER1 |
40B4 0E80 00874 movlw 0x80 |
40B6 6E04 00875 movwf MIOS_PARAMETER2 |
40B8 ECB8 F016 00876 call MIOS_BANKSTICK_Read |
40BC 6EF3 00877 movwf PRODL |
00878 |
00879 ;; add 0x42 and write number to 0x0000 |
40BE 0E0F 00880 movlw 0x0f ;; between 0x03 - 0x7f |
40C0 6E03 00881 movwf MIOS_PARAMETER1 |
40C2 6A04 00882 clrf MIOS_PARAMETER2 |
40C4 50F3 00883 movf PRODL, W |
40C6 0F42 00884 addlw 0x42 |
40C8 ECBA F016 00885 call MIOS_BANKSTICK_Write |
40CC A4D8 00886 skpz |
00887 rgoto TIA_BANK_FormatStick_Err_Handler |
40CE D0BD M bra label |
00888 |
00889 ;; read again number from 0x8000, check if we still see the old value |
40D0 0E0F 00890 movlw 0x0f ;; between 0x03 - 0x7f |
40D2 6E03 00891 movwf MIOS_PARAMETER1 |
40D4 0E80 00892 movlw 0x80 |
40D6 6E04 00893 movwf MIOS_PARAMETER2 |
40D8 ECB8 F016 00894 call MIOS_BANKSTICK_Read |
40DC 18F3 00895 xorwf PRODL, W |
40DE E107 00896 bnz TIA_BANK_FormatStick_32k |
40E0 00897 TIA_BANK_FormatStick_64k |
00898 #if DEFAULT_TIA_DEBUG_ON == 1 && DEFAULT_TIA_DEBUG_BS == 1 |
40E0 8762 00899 bsf TIA_DEBUG_BS_REGB, TIA_DEBUG_BS_SIZE |
00900 #endif |
00901 ;; set flag in size register |
40E2 501A 00902 movf TIA_BANKSTICK_ID, W |
40E4 ECC6 F016 00903 call MIOS_HLP_GetBitORMask |
40E8 121D 00904 iorwf TIA_BANKSTICK_SIZE, F |
00905 ;; write 64 to address 0x0002 |
40EA 0E40 00906 movlw 64 |
00907 rgoto TIA_BANK_FormatStick_SizeIDCont |
40EC D006 M bra label |
40EE 00908 TIA_BANK_FormatStick_32k |
00909 #if DEFAULT_TIA_DEBUG_ON == 1 && DEFAULT_TIA_DEBUG_BS == 1 |
40EE 9762 00910 bcf TIA_DEBUG_BS_REGB, TIA_DEBUG_BS_SIZE |
00911 #endif |
00912 ;; clear flag in size register |
40F0 501A 00913 movf TIA_BANKSTICK_ID, W |
40F2 ECC4 F016 00914 call MIOS_HLP_GetBitANDMask |
40F6 161D 00915 andwf TIA_BANKSTICK_SIZE, F |
00916 ;; write 32 to address 0x0002 |
40F8 0E20 00917 movlw 32 |
00918 ;;rgoto TIA_BANK_FormatStick_SizeIDCont |
40FA 00919 TIA_BANK_FormatStick_SizeIDCont |
gpasm-0.13.7 beta setup_tia_cartridge.asm1-30-2014 10:42:05 PAGE 96 |
|
|
LOC OBJECT CODE LINE SOURCE TEXT |
VALUE |
|
40FA 6E06 00920 movwf TMP1 |
40FC 5019 00921 movf TIA_BANKSTICK_CHK_CTR, W |
40FE DE50 00922 rcall TIA_BANK_CheckStick_SelectMagic |
4100 0E02 00923 movlw 0x02 |
4102 6E03 00924 movwf MIOS_PARAMETER1 |
4104 5006 00925 movf TMP1, W |
4106 ECBA F016 00926 call MIOS_BANKSTICK_Write |
410A A4D8 00927 skpz |
00928 rgoto TIA_BANK_FormatStick_Err_Handler |
410C D09E M bra label |
00929 |
00930 ;; print format message |
00931 ;TABLE_ADDR TEXT_FORMATBANK_0 |
00932 ;call MIOS_LCD_PrintMessage |
00933 ;call MIOS_LCD_PrintMessage |
00934 |
00935 ;; print bankstick size |
00936 ;movlw 0x00 + 13 |
00937 ;call MIOS_LCD_CursorSet |
00938 ;movf PRODL, W |
00939 ;call MIOS_LCD_PrintBCD2 |
00940 |
00941 |
410E 0E32 00942 movlw 50 ; wait some ms to get a stable status |
4110 ECCE F016 00943 call MIOS_Delay |
00944 |
00945 ;; now branch depending on Ensemble/Patch |
00946 #if DEFAULT_BS_KBANK_ID >= 0 && DEFAULT_BS_KBANK_ID <= 7 |
4114 0E04 00947 movlw DEFAULT_BS_KBANK_ID-1 |
4116 641A 00948 cpfsgt TIA_BANKSTICK_ID, ACCESS |
00949 rgoto TIA_BANK_FormatStick_P |
4118 D022 M bra label |
411A B211 00950 btfsc TIA_BANK, 1 |
00951 rgoto TIA_BANK_FormatStick_WT |
411C D010 M bra label |
00952 |
411E 00953 TIA_BANK_FormatStick_K |
00954 ;; copy Patch 0 (internal kit) to upload buffer |
411E 6AA9 00955 clrf EEADR |
4120 0E01 00956 movlw (EEPROM_KIT >> 8) & 0xff |
4122 6EAA 00957 movwf EEADRH |
4124 EE07 F000 00958 lfsr FSR0, BANKSTICK_FORMAT_BEGIN |
4128 00959 TIA_BANK_FormatStick_K_CIntLoop |
4128 ECB0 F016 00960 call MIOS_EEPROM_Read |
412C 6EEE 00961 movwf POSTINC0 |
412E AEA9 00962 btfss EEADR, 7 |
00963 rgoto TIA_BANK_FormatStick_K_CIntLoop |
4130 D7FB M bra label |
00964 ;; clear name |
4132 EE07 F000 00965 lfsr FSR0, BANKSTICK_FORMAT_BEGIN |
4136 00966 TIA_BANK_FormatStick_K_ClearLoop |
4136 6AEE 00967 clrf POSTINC0 |
00968 BRA_IFCLR FSR0L, 4, ACCESS, TIA_BANK_FormatStick_K_ClearLoop |
4138 A8E9 M btfss reg, bit, reg_a |
gpasm-0.13.7 beta setup_tia_cartridge.asm1-30-2014 10:42:05 PAGE 97 |
|
|
LOC OBJECT CODE LINE SOURCE TEXT |
VALUE |
|
413A D7FD M bra label |
00969 rgoto TIA_BANK_FormatStick_Data |
413C D01F M bra label |
00970 |
413E 00971 TIA_BANK_FormatStick_WT |
00972 ;; copy Patch 0 (internal patch) to upload buffer |
413E 6AA9 00973 clrf EEADR |
4140 0E02 00974 movlw (EEPROM_WAVETABLE >> 8) & 0xff |
4142 6EAA 00975 movwf EEADRH |
4144 EE07 F000 00976 lfsr FSR0, BANKSTICK_FORMAT_BEGIN |
4148 00977 TIA_BANK_FormatStick_WT_CIntLoop |
4148 ECB0 F016 00978 call MIOS_EEPROM_Read |
414C 6EEE 00979 movwf POSTINC0 |
414E AEA9 00980 btfss EEADR, 7 |
00981 rgoto TIA_BANK_FormatStick_WT_CIntLoop |
4150 D7FB M bra label |
00982 ;; clear name |
4152 EE07 F000 00983 lfsr FSR0, BANKSTICK_FORMAT_BEGIN |
4156 00984 TIA_BANK_FormatStick_WT_ClearLoop |
4156 6AEE 00985 clrf POSTINC0 |
00986 BRA_IFCLR FSR0L, 4, ACCESS, TIA_BANK_FormatStick_WT_ClearLoop |
4158 A8E9 M btfss reg, bit, reg_a |
415A D7FD M bra label |
00987 rgoto TIA_BANK_FormatStick_Data |
415C D00F M bra label |
00988 |
00989 #endif ;; DEFAULT_BS_KBANK_ID >= 0 && DEFAULT_BS_KBANK_ID <= 7 |
00990 |
415E 00991 TIA_BANK_FormatStick_P |
00992 ;; copy Patch 0 (internal patch) to upload buffer |
415E 6AA9 00993 clrf EEADR |
4160 0E00 00994 movlw (EEPROM_PATCH >> 8) & 0xff |
4162 6EAA 00995 movwf EEADRH |
4164 EE07 F000 00996 lfsr FSR0, BANKSTICK_FORMAT_BEGIN |
4168 00997 TIA_BANK_FormatStick_P_CIntLoop |
4168 ECB0 F016 00998 call MIOS_EEPROM_Read |
416C 6EEE 00999 movwf POSTINC0 |
416E AEA9 01000 btfss EEADR, 7 |
01001 rgoto TIA_BANK_FormatStick_P_CIntLoop |
4170 D7FB M bra label |
01002 ;; clear name |
4172 EE07 F000 01003 lfsr FSR0, BANKSTICK_FORMAT_BEGIN |
4176 01004 TIA_BANK_FormatStick_P_ClearLoop |
4176 6AEE 01005 clrf POSTINC0 |
01006 BRA_IFCLR FSR0L, 4, ACCESS, TIA_BANK_FormatStick_P_ClearLoop |
4178 A8E9 M btfss reg, bit, reg_a |
417A D7FD M bra label |
01007 ;;rgoto TIA_BANK_FormatStick_Data |
01008 |
01009 |
01010 |
01011 |
417C 01012 TIA_BANK_FormatStick_Data |
417C EC68 F01D 01013 call TIA_LEDMTR_PlayFormat_O |
gpasm-0.13.7 beta setup_tia_cartridge.asm1-30-2014 10:42:05 PAGE 98 |
|
|
LOC OBJECT CODE LINE SOURCE TEXT |
VALUE |
|
01014 ;; now format patch 1 to 127 (64k) or 63 (32k) |
4180 0E01 01015 movlw 0x01 |
4182 6EA9 01016 movwf EEADR ; use EEADR as patch ctr |
01017 ;; Select BS Adress |
4184 6A03 01018 clrf MIOS_PARAMETER1 |
4186 B0A9 01019 btfsc EEADR, 0 |
4188 8E03 01020 bsf MIOS_PARAMETER1, 7 ; select upper address range on odd bank number |
418A 30A9 01021 rrf EEADR, W |
418C 6E04 01022 movwf MIOS_PARAMETER2 ; copy patch to high-byte |
418E DE03 01023 rcall TIA_BANK_GetBankStickSize |
4190 B4D8 01024 skpnz |
01025 rgoto TIA_BANK_FormatStick_Data_32k |
4192 D005 M bra label |
4194 01026 TIA_BANK_FormatStick_Data_64k |
4194 B011 01027 btfsc TIA_BANK, 0 |
4196 8C04 01028 bsf MIOS_PARAMETER2, 6 |
4198 B211 01029 btfsc TIA_BANK, 1 |
419A 8E04 01030 bsf MIOS_PARAMETER2, 7 |
01031 rgoto TIA_BANK_FormatStick_Data_OuterLoop |
419C D005 M bra label |
419E 01032 TIA_BANK_FormatStick_Data_32k |
419E 9A04 01033 bcf MIOS_PARAMETER2, 5 |
41A0 B011 01034 btfsc TIA_BANK, 0 |
41A2 8A04 01035 bsf MIOS_PARAMETER2, 5 |
41A4 B211 01036 btfsc TIA_BANK, 1 |
41A6 8C04 01037 bsf MIOS_PARAMETER2, 6 |
01038 |
41A8 01039 TIA_BANK_FormatStick_Data_OuterLoop |
01040 ;; copy 0x80 words |
41A8 EE17 F000 01041 lfsr FSR1, BANKSTICK_FORMAT_BEGIN |
41AC 0004 01042 clrwdt ; feed watchdog |
01043 ;; buffer already prepared in FSR1 |
41AE ECF2 F016 01044 call MIOS_BANKSTICK_WritePage ; write page |
41B2 A4D8 01045 skpz |
01046 rgoto TIA_BANK_FormatStick_Err_Handler |
41B4 D04A M bra label |
41B6 0E40 01047 movlw 0x40 ; increment FSR1 by 0x40 |
41B8 26E1 01048 addwf FSR1L, F |
41BA 0004 01049 clrwdt ; feed watchdog |
41BC ECF2 F016 01050 call MIOS_BANKSTICK_WritePage ; write page |
41C0 A4D8 01051 skpz |
01052 rgoto TIA_BANK_FormatStick_Err_Handler |
41C2 D043 M bra label |
01053 ;; continue until last patch is reached |
41C4 2AA9 01054 incf EEADR, F |
41C6 501A 01055 movf TIA_BANKSTICK_ID, W |
41C8 ECC6 F016 01056 call MIOS_HLP_GetBitORMask |
41CC 141D 01057 andwf TIA_BANKSTICK_SIZE, W |
41CE 0E7F 01058 movlw 128-1 |
41D0 B4D8 01059 skpnz |
41D2 0E3F 01060 movlw 64-1 |
41D4 64A9 01061 cpfsgt EEADR, ACCESS |
01062 rgoto TIA_BANK_FormatStick_Data_OuterLoop |
41D6 D7E8 M bra label |
gpasm-0.13.7 beta setup_tia_cartridge.asm1-30-2014 10:42:05 PAGE 99 |
|
|
LOC OBJECT CODE LINE SOURCE TEXT |
VALUE |
|
41D8 01063 TIA_BANK_FormatStick_Data_End |
01064 |
41D8 EC6E F01D 01065 call TIA_LEDMTR_PlayFormat_G1 |
01066 |
01067 ;; write bank new name |
01068 ;; add name offset to MP1 start @0x10 |
41DC 0E10 01069 movlw NEW_BANK_NAME & 0xff |
41DE 6EA9 01070 movwf EEADR |
41E0 0E03 01071 movlw (NEW_BANK_NAME >> 8) & 0xff |
41E2 6EAA 01072 movwf EEADRH |
41E4 5019 01073 movf TIA_BANKSTICK_CHK_CTR, W |
41E6 DDDC 01074 rcall TIA_BANK_CheckStick_SelectMagic |
41E8 0E10 01075 movlw 0x10 |
41EA 6E03 01076 movwf MIOS_PARAMETER1 |
41EC 01077 TIA_BANK_FormatStick_Name_Loop |
41EC ECB0 F016 01078 call MIOS_EEPROM_Read |
41F0 ECBA F016 01079 call MIOS_BANKSTICK_Write |
41F4 A4D8 01080 skpz |
01081 rgoto TIA_BANK_FormatStick_Err_Handler |
41F6 D029 M bra label |
41F8 AA03 01082 btfss MIOS_PARAMETER1, 5 ; until == 0x20 |
01083 rgoto TIA_BANK_FormatStick_Name_Loop |
41FA D7F8 M bra label |
01084 #if 0 |
01085 ;; clear address 0x0020-0x007f |
01086 TIA_BANK_FormatStick_P_CfgLoop |
01087 movlw 0x00 |
01088 call MIOS_BANKSTICK_Write ; write 0 |
01089 skpz |
01090 rgoto TIA_BANK_FormatStick_Err_Handler |
01091 btfss MIOS_PARAMETER1, 7 ; until == 0x80 |
01092 rgoto TIA_BANK_FormatStick_P_CfgLoop |
01093 #endif |
01094 |
01095 ;;; write magic byte 0 to confirm valid content |
41FC 6A03 01096 clrf MIOS_PARAMETER1 |
41FE 0E83 01097 movlw BANKSTICK_MAGIC0 |
4200 ECBA F016 01098 call MIOS_BANKSTICK_Write |
4204 A4D8 01099 skpz |
01100 rgoto TIA_BANK_FormatStick_Err_Handler |
4206 D021 M bra label |
01101 |
01102 #if DEFAULT_BS_KBANK_ID >= 0 && DEFAULT_BS_KBANK_ID <= 7 |
01103 ;; now branch depending on Kit/Patch |
4208 0E04 01104 movlw DEFAULT_BS_KBANK_ID-1 |
420A 641A 01105 cpfsgt TIA_BANKSTICK_ID, ACCESS |
01106 rgoto TIA_BANK_FormatStick_P_Cont |
420C D012 M bra label |
420E B211 01107 btfsc TIA_BANK, 1 |
01108 rgoto TIA_BANK_FormatStick_WT_Cont |
4210 D008 M bra label |
01109 |
4212 01110 TIA_BANK_FormatStick_K_Cont |
01111 ;; select first external kit |
gpasm-0.13.7 beta setup_tia_cartridge.asm1-30-2014 10:42:05 PAGE 100 |
|
|
LOC OBJECT CODE LINE SOURCE TEXT |
VALUE |
|
01112 ;movlw 1 |
01113 ;movwf TIA_KIT |
01114 ;; store number in EEPROM |
01115 ;call TIA_KIT_StoreDefaultNum |
01116 ;; write magic byte K(kit/wavetable), valid content and type |
4212 0E13 01117 movlw BANKSTICK_MAGICK |
4214 ECBA F016 01118 call MIOS_BANKSTICK_Write |
4218 A4D8 01119 skpz |
01120 rgoto TIA_BANK_FormatStick_Err_Handler |
421A D017 M bra label |
01121 #if DEFAULT_TIA_DEBUG_ON == 1 && DEFAULT_TIA_DEBUG_BS == 1 |
421C 8162 01122 bsf TIA_DEBUG_BS_REGB, TIA_DEBUG_EE_PK |
421E 9362 01123 bcf TIA_DEBUG_BS_REGB, TIA_DEBUG_EE_WT |
01124 #endif |
01125 rgoto TIA_BANK_FormatStick_Cont |
4220 D00E M bra label |
01126 |
4222 01127 TIA_BANK_FormatStick_WT_Cont |
01128 ;; select first external wavetable |
01129 ;movlw 1 |
01130 ;movwf TIA_WT |
01131 ;; store number in EEPROM |
01132 ;call TIA_KIT_StoreDefaultNum |
01133 ;; write magic byte K(kit/wavetable), valid content and type |
4222 0E13 01134 movlw BANKSTICK_MAGICK |
4224 ECBA F016 01135 call MIOS_BANKSTICK_Write |
4228 A4D8 01136 skpz |
01137 rgoto TIA_BANK_FormatStick_Err_Handler |
422A D00F M bra label |
01138 #if DEFAULT_TIA_DEBUG_ON == 1 && DEFAULT_TIA_DEBUG_BS == 1 |
422C 8162 01139 bsf TIA_DEBUG_BS_REGB, TIA_DEBUG_EE_PK |
422E 8362 01140 bsf TIA_DEBUG_BS_REGB, TIA_DEBUG_EE_WT |
01141 #endif |
01142 rgoto TIA_BANK_FormatStick_Cont |
4230 D006 M bra label |
01143 #endif ;; DEFAULT_BS_KBANK_ID >= 0 && DEFAULT_BS_KBANK_ID <= 7 |
01144 |
4232 01145 TIA_BANK_FormatStick_P_Cont |
01146 ;; select first external patch |
01147 ;movlw 1 |
01148 ;movwf TIA_PRESET |
01149 ;; store number in EEPROM |
01150 ;call TIA_KIT_StoreDefaultNum |
01151 ;; and branch to end |
01152 ;;rgoto TIA_BANK_FormatStick_Cont |
01153 ;; write magic byte P(patch), valid content and type |
4232 0E12 01154 movlw BANKSTICK_MAGICP |
4234 ECBA F016 01155 call MIOS_BANKSTICK_Write |
4238 A4D8 01156 skpz |
01157 rgoto TIA_BANK_FormatStick_Err_Handler |
423A D007 M bra label |
01158 #if DEFAULT_TIA_DEBUG_ON == 1 && DEFAULT_TIA_DEBUG_BS == 1 |
423C 9162 01159 bcf TIA_DEBUG_BS_REGB, TIA_DEBUG_EE_PK |
01160 #endif |
gpasm-0.13.7 beta setup_tia_cartridge.asm1-30-2014 10:42:05 PAGE 101 |
|
|
LOC OBJECT CODE LINE SOURCE TEXT |
VALUE |
|
01161 ;;rgoto TIA_BANK_FormatStick_Cont |
01162 |
423E 01163 TIA_BANK_FormatStick_Cont |
01164 #if DEFAULT_TIA_DEBUG_ON == 1 && DEFAULT_TIA_DEBUG_BS == 1 |
423E 8B62 01165 bsf TIA_DEBUG_BS_REGB, TIA_DEBUG_BS_FORMAT |
01166 #endif |
01167 ;; play tune, new setup will be reloaded automatically |
01168 ;movf TIA_PBANK, W |
4240 ECB3 F021 01169 call TIA_TUNE_Play1 |
4244 EC74 F01D 01170 call TIA_LEDMTR_PlayFormat_G2 |
01171 rgoto TIA_BANK_CheckStick_End |
4248 D601 M bra label |
01172 |
01173 |
424A 01174 TIA_BANK_FormatStick_Err_Handler |
01175 #if DEFAULT_TIA_DEBUG_ON == 1 && DEFAULT_TIA_DEBUG_BS == 1 |
424A 6F61 01176 movwf TIA_DEBUG_BS_REG6 |
424C 865B 01177 bsf TIA_DEBUG_BS_REGA, TIA_DEBUG_EE_ERROR |
424E 2B60 01178 incf TIA_DEBUG_BS_REG5, F |
4250 501A 01179 movf TIA_BANKSTICK_ID, W |
4252 ECC4 F016 01180 call MIOS_HLP_GetBitANDMask |
4256 1763 01181 andwf TIA_DEBUG_BS_REG9, F |
01182 #endif |
01183 ;; realign on first bank of current BankStick |
4258 5211 01184 movf TIA_BANK, F |
425A 0B1C 01185 andlw 0x1c |
425C 28E8 01186 incf WREG, W ;; next will be first |
425E 6E11 01187 movwf TIA_BANK |
01188 ;; reinit STAT registers |
4260 501A 01189 movf TIA_BANKSTICK_ID, W |
4262 ECC4 F016 01190 call MIOS_HLP_GetBitANDMask |
4266 161C 01191 andwf TIA_BANKSTICK_STAT, F |
4268 161D 01192 andwf TIA_BANKSTICK_SIZE, F |
01193 |
426A 01194 TIA_BANK_FormatStickEnd |
01195 ;; set reinit counter - CS configuration will be restored after 1 second |
01196 ;movlw 10 |
01197 ;movwf CS_MENU_REINIT_CFG_CTR |
426A 0012 01198 return |
01199 |
01200 ;; -------------------------------------------------------------------------- |
01201 |
01202 |
01203 |
01204 |
01205 ;; -------------------------------------------------------------------------- |
01206 ;; Fix Patches - temporary routine to modify all patches stored in BankStick |
01207 ;; IN: bank number in TIA_PBANK |
01208 ;; -------------------------------------------------------------------------- |
426C 01209 TEXT_FIXBANK_0 STRING 20, 0x00, "* Fixing * " |
426C 1400 202A M da ((length) << 8) | (pos), str |
6946 6978 |
676E 2020 |
2020 2020 |
gpasm-0.13.7 beta setup_tia_cartridge.asm1-30-2014 10:42:05 PAGE 102 |
|
|
LOC OBJECT CODE LINE SOURCE TEXT |
VALUE |
|
2020 2A20 |
2020 |
4282 01210 TEXT_FIXBANK_1 STRING 20, 0x40, "* Patch x 0 * " |
4282 1440 202A M da ((length) << 8) | (pos), str |
6150 6374 |
2068 2078 |
3020 2020 |
2020 2A20 |
2020 |
01211 |
4298 01212 TIA_BANK_FixPatches |
01213 #if 0 |
01214 ;; select BankStick depending on TIA_PBANK |
01215 movf TIA_BANKSTICK_CHK_CTR, W |
01216 rcall TIA_BANK_SetBankStickId |
01217 #if DEFAULT_TIA_DEBUG_ON == 1 && DEFAULT_TIA_DEBUG_BS == 1 |
01218 addlw 0x80 ; (Enable verify slower write accesses) |
01219 #endif |
01220 call MIOS_BANKSTICK_CtrlSet |
01221 |
01222 ;; print message |
01223 TABLE_ADDR TEXT_FIXBANK_0 |
01224 call MIOS_LCD_PrintMessage |
01225 call MIOS_LCD_PrintMessage |
01226 |
01227 ;; print bank number |
01228 movlw 0x40 + 8 |
01229 call MIOS_LCD_CursorSet |
01230 movf TIA_PBANK, W |
01231 addlw 'A' |
01232 call MIOS_LCD_PrintChar |
01233 |
01234 ;; now fixing patch 1 to 127 (64k) or 63 (32k) |
01235 movlw 0x01 |
01236 movwf TIA_PRESET ; starting patch |
01237 TIA_BANK_FixPatches_OuterLoop |
01238 movlw 0x49 |
01239 call MIOS_LCD_CursorSet |
01240 incf TIA_PRESET, W |
01241 call MIOS_LCD_PrintBCD3 |
01242 |
01243 ;; fix pitchbender assignment if K#P not already assigned to other parameter |
01244 movlw TIA_Ix_P_KP_BASE+TIA_Ix_Px_ASSIGN1 |
01245 movwf EEADR |
01246 clrf EEADRH |
01247 call TIA_BANK_SetBankStickAddress |
01248 call MIOS_BANKSTICK_Read |
01249 bnz TIA_BANK_FixPatches_NoPbFix |
01250 TIA_BANK_FixPatches_PbFix |
01251 decf MIOS_PARAMETER1, F |
01252 movlw 0x50 |
01253 call MIOS_BANKSTICK_Write |
01254 TIA_BANK_FixPatches_NoPbFix |
01255 |
gpasm-0.13.7 beta setup_tia_cartridge.asm1-30-2014 10:42:05 PAGE 103 |
|
|
LOC OBJECT CODE LINE SOURCE TEXT |
VALUE |
|
01256 #if 0 |
01257 movf TIA_PRESET, W |
01258 ;call TIA_TUNE_Play3_Note |
01259 #endif |
01260 |
01261 ;; continue until last patch is reached |
01262 incf TIA_PRESET, F |
01263 |
01264 movf TIA_PBANK, W |
01265 call MIOS_HLP_GetBitORMask |
01266 andwf TIA_BANKSTICK_SIZE, W |
01267 movlw 128-1 |
01268 skpnz |
01269 movlw 64-1 |
01270 cpfsgt TIA_PRESET, W |
01271 rgoto TIA_BANK_FixPatches_OuterLoop |
01272 |
01273 ;; switch to internal patch |
01274 clrf TIA_PRESET |
01275 |
01276 TIA_BANK_FixPatchesEnd |
01277 #endif |
4298 0012 01278 return |
01279 |
00382 #include "tia_tune.inc" |
00001 ; $Id: tia_tune.inc bdupeyron.tech@gmail.com(Antichambre) |
00002 ; |
00003 ; MIDIbox TIA |
00004 ; Routines to play short tunes (when a BankStick is attached/deattached) |
00005 ; |
00006 ; ========================================================================== |
00007 ; |
00008 ; Copyright 1998-2006 Thorsten Klose (tk@midibox.org) |
00009 ; Licensed for personal non-commercial use only. |
00010 ; All other rights reserved. |
00011 ; |
00012 ; ========================================================================== |
00013 |
00014 ;; -------------------------------------------------------------------------- |
00015 ;; TIA_PLAY Disconnected Tune |
00016 ;; -------------------------------------------------------------------------- |
429A 00017 TIA_TUNE_PlayDisconnect |
429A 0E0D 00018 movlw 0x0d |
429C 6E06 00019 movwf TMP1 |
429E 0E06 00020 movlw 0x06 |
42A0 D878 00021 rcall TIA_TUNE_Note_Init |
00022 |
42A2 0E0B 00023 movlw 0x0b |
42A4 D888 00024 rcall TIA_TUNE_Note_On_Wait01 |
42A6 0E01 00025 movlw 0x01 |
42A8 D886 00026 rcall TIA_TUNE_Note_On_Wait01 |
42AA 0E01 00027 movlw 0x01 |
42AC D887 00028 rcall TIA_TUNE_Wait |
42AE 0E18 00029 movlw 0x18 |
gpasm-0.13.7 beta setup_tia_cartridge.asm1-30-2014 10:42:05 PAGE 104 |
|
|
LOC OBJECT CODE LINE SOURCE TEXT |
VALUE |
|
42B0 D882 00030 rcall TIA_TUNE_Note_On_Wait01 |
42B2 0E10 00031 movlw 0x10 |
42B4 D880 00032 rcall TIA_TUNE_Note_On_Wait01 |
42B6 0E04 00033 movlw 0x04 |
42B8 D875 00034 rcall TIA_TUNE_Note_On |
42BA 0E02 00035 movlw 0x02 |
42BC D87F 00036 rcall TIA_TUNE_Wait |
42BE D876 00037 rcall TIA_TUNE_Note_Off |
42C0 0E02 00038 movlw 0x02 |
42C2 D87C 00039 rcall TIA_TUNE_Wait |
00040 |
00041 rgoto TIA_TUNE_End |
42C4 D064 M bra label |
00042 |
00043 ;; -------------------------------------------------------------------------- |
00044 ;; TIA_PLAY Ok Tune |
00045 ;; -------------------------------------------------------------------------- |
42C6 00046 TIA_TUNE_PlayOk |
42C6 0E0D 00047 movlw 0x0d |
42C8 6E06 00048 movwf TMP1 |
42CA 0E06 00049 movlw 0x06 |
42CC D862 00050 rcall TIA_TUNE_Note_Init |
00051 |
42CE 0E0B 00052 movlw 0x0b |
42D0 D872 00053 rcall TIA_TUNE_Note_On_Wait01 |
42D2 0E04 00054 movlw 0x04 |
42D4 D870 00055 rcall TIA_TUNE_Note_On_Wait01 |
42D6 0E01 00056 movlw 0x01 |
42D8 D871 00057 rcall TIA_TUNE_Wait |
42DA 0E18 00058 movlw 0x18 |
42DC D86C 00059 rcall TIA_TUNE_Note_On_Wait01 |
42DE 0E10 00060 movlw 0x10 |
42E0 D86A 00061 rcall TIA_TUNE_Note_On_Wait01 |
42E2 0E01 00062 movlw 0x01 |
42E4 D85F 00063 rcall TIA_TUNE_Note_On |
42E6 0E02 00064 movlw 0x02 |
42E8 D869 00065 rcall TIA_TUNE_Wait |
42EA D860 00066 rcall TIA_TUNE_Note_Off |
42EC 0E02 00067 movlw 0x02 |
42EE D866 00068 rcall TIA_TUNE_Wait |
00069 |
00070 rgoto TIA_TUNE_End |
42F0 D04E M bra label |
00071 |
00072 ;; -------------------------------------------------------------------------- |
00073 ;; TIA_PLAY Wrong Tune |
00074 ;; -------------------------------------------------------------------------- |
42F2 00075 TIA_TUNE_PlayWrong |
42F2 0E0D 00076 movlw 0x0d |
42F4 6E06 00077 movwf TMP1 |
42F6 0E06 00078 movlw 0x06 |
42F8 D84C 00079 rcall TIA_TUNE_Note_Init |
00080 |
42FA 0E0B 00081 movlw 0x0b |
gpasm-0.13.7 beta setup_tia_cartridge.asm1-30-2014 10:42:05 PAGE 105 |
|
|
LOC OBJECT CODE LINE SOURCE TEXT |
VALUE |
|
42FC D85C 00082 rcall TIA_TUNE_Note_On_Wait01 |
42FE 0E04 00083 movlw 0x04 |
4300 D85A 00084 rcall TIA_TUNE_Note_On_Wait01 |
4302 0E05 00085 movlw 0x05 |
4304 D85B 00086 rcall TIA_TUNE_Wait |
4306 0E18 00087 movlw 0x18 |
4308 D856 00088 rcall TIA_TUNE_Note_On_Wait01 |
430A 0E10 00089 movlw 0x10 |
430C D854 00090 rcall TIA_TUNE_Note_On_Wait01 |
430E 0E1D 00091 movlw 0x1d |
4310 D849 00092 rcall TIA_TUNE_Note_On |
4312 0E0F 00093 movlw 0x0f |
4314 D853 00094 rcall TIA_TUNE_Wait |
4316 D84A 00095 rcall TIA_TUNE_Note_Off |
4318 0E04 00096 movlw 0x04 |
431A D850 00097 rcall TIA_TUNE_Wait |
00098 |
00099 rgoto TIA_TUNE_End |
431C D038 M bra label |
00100 |
00101 ;; -------------------------------------------------------------------------- |
00102 ;; TIA_PLAY Fanfare Tune |
00103 ;; -------------------------------------------------------------------------- |
431E 00104 TIA_TUNE_Play_Fanfare |
431E 0E02 00105 movlw 0x02 |
4320 D838 00106 rcall TIA_TUNE_Note_Init |
00107 |
4322 0E0F 00108 movlw 0x0f |
4324 6E06 00109 movwf TMP1 |
4326 0E0B 00110 movlw 0x0b |
4328 D846 00111 rcall TIA_TUNE_Note_On_Wait01 |
432A 0E08 00112 movlw 0x08 |
432C 6E06 00113 movwf TMP1 |
432E 0E08 00114 movlw 0x08 |
4330 D842 00115 rcall TIA_TUNE_Note_On_Wait01 |
4332 0E04 00116 movlw 0x04 |
4334 6E06 00117 movwf TMP1 |
4336 0E06 00118 movlw 0x06 |
4338 D83E 00119 rcall TIA_TUNE_Note_On_Wait01 |
433A 0E0B 00120 movlw 0x0b |
433C 6E06 00121 movwf TMP1 |
433E 0E05 00122 movlw 0x05 |
4340 D83A 00123 rcall TIA_TUNE_Note_On_Wait01 |
00124 |
00125 |
4342 0E0F 00126 movlw 0x0f |
4344 D83B 00127 rcall TIA_TUNE_Wait |
4346 0E08 00128 movlw 0x08 |
4348 6E06 00129 movwf TMP1 |
434A 0E06 00130 movlw 0x06 |
434C D834 00131 rcall TIA_TUNE_Note_On_Wait01 |
434E 0E04 00132 movlw 0x04 |
4350 D835 00133 rcall TIA_TUNE_Wait |
4352 0E0C 00134 movlw 0x0c |
gpasm-0.13.7 beta setup_tia_cartridge.asm1-30-2014 10:42:05 PAGE 106 |
|
|
LOC OBJECT CODE LINE SOURCE TEXT |
VALUE |
|
4354 6E06 00135 movwf TMP1 |
4356 0E05 00136 movlw 0x05 |
4358 D82E 00137 rcall TIA_TUNE_Note_On_Wait01 |
00138 |
00139 |
435A 0E1A 00140 movlw 0x1a |
435C D82F 00141 rcall TIA_TUNE_Wait |
435E D826 00142 rcall TIA_TUNE_Note_Off |
4360 0E06 00143 movlw 0x06 |
4362 D82C 00144 rcall TIA_TUNE_Wait |
00145 |
00146 rgoto TIA_TUNE_End |
4364 D014 M bra label |
00147 |
00148 ;; -------------------------------------------------------------------------- |
00149 ;; TIA_PLAY Tune #1 |
00150 ;; -------------------------------------------------------------------------- |
4366 00151 TIA_TUNE_Play1 |
4366 0E0D 00152 movlw 0x0d |
4368 6E06 00153 movwf TMP1 |
436A 0E08 00154 movlw 0x08 |
436C D812 00155 rcall TIA_TUNE_Note_Init |
00156 |
436E 0E0B 00157 movlw 0x0b |
4370 D822 00158 rcall TIA_TUNE_Note_On_Wait01 |
4372 0E02 00159 movlw 0x02 |
4374 D820 00160 rcall TIA_TUNE_Note_On_Wait01 |
4376 0E03 00161 movlw 0x03 |
4378 D821 00162 rcall TIA_TUNE_Wait |
437A 0E10 00163 movlw 0x10 |
437C D81C 00164 rcall TIA_TUNE_Note_On_Wait01 |
437E 0E1C 00165 movlw 0x1c |
00166 ;movf TMP2,W |
4380 D811 00167 rcall TIA_TUNE_Note_On |
4382 0E30 00168 movlw 0x30 |
4384 D81B 00169 rcall TIA_TUNE_Wait |
4386 D812 00170 rcall TIA_TUNE_Note_Off |
4388 0E04 00171 movlw 0x04 |
438A D818 00172 rcall TIA_TUNE_Wait |
00173 |
00174 rgoto TIA_TUNE_End |
438C D000 M bra label |
00175 |
00176 ;; -------------------------------------------------------------------------- |
00177 ;; TIA_PLAY End |
00178 ;; -------------------------------------------------------------------------- |
438E 00179 TIA_TUNE_End |
438E 9010 00180 bcf TIA_STAT, TIA_STAT_ENGINE_DISABLE; turn on TIA software synth part again |
00181 ;goto TIA_PATCH_Init ; init patch and exit |
4390 0012 00182 return |
00183 |
00184 |
00185 ;; -------------------------------------------------------------------------- |
00186 ;; TIA_PLAY Initialization routine |
gpasm-0.13.7 beta setup_tia_cartridge.asm1-30-2014 10:42:05 PAGE 107 |
|
|
LOC OBJECT CODE LINE SOURCE TEXT |
VALUE |
|
00187 ;; -------------------------------------------------------------------------- |
4392 00188 TIA_TUNE_Note_Init |
4392 8010 00189 bsf TIA_STAT, TIA_STAT_ENGINE_DISABLE; turn off TIA software synth part |
00190 |
00191 SET_BSR TIA_BASE |
4394 0101 M movlb HIGH(reg) |
4396 0B0F 00192 andlw 0x0f |
4398 6F00 00193 movwf TIA_AUDC0, BANKED |
439A 5006 00194 movf TMP1, W |
439C 0B0F 00195 andlw 0x0f |
439E 6F04 00196 movwf TIA_AUDV0, BANKED |
43A0 EFEC F021 00197 goto _TIA_SR_Handler |
00198 ;; -------------------------------------------------------------------------- |
00199 ;; TIA_PLAY a note (in: Note Number) |
00200 ;; -------------------------------------------------------------------------- |
43A4 00201 TIA_TUNE_Note_On |
00202 SET_BSR TIA_BASE |
43A4 0101 M movlb HIGH(reg) |
43A6 6F02 00203 movwf TIA_AUDF0, BANKED |
00204 |
43A8 EFEC F021 00205 goto _TIA_SR_Handler |
00206 |
43AC 00207 TIA_TUNE_Note_Off |
00208 SET_BSR TIA_BASE |
43AC 0101 M movlb HIGH(reg) |
43AE 6B04 00209 clrf TIA_AUDV0, BANKED |
43B0 6B05 00210 clrf TIA_AUDV1, BANKED |
43B2 EFEC F021 00211 goto _TIA_SR_Handler |
00212 |
43B6 00213 TIA_TUNE_Note_On_Wait01 |
43B6 DFF6 00214 rcall TIA_TUNE_Note_On |
43B8 0E01 00215 movlw 0x01 |
00216 rgoto TIA_TUNE_Wait |
43BA D000 M bra label |
00217 |
00218 |
00219 ;; -------------------------------------------------------------------------- |
00220 ;; TIA_PLAY wait for a certain time and poll TIA_SR Handler |
00221 ;; -------------------------------------------------------------------------- |
43BC 00222 TIA_TUNE_Wait |
43BC 6E06 00223 movwf TMP1 |
43BE 0004 00224 clrwdt |
43C0 00225 TIA_TUNE_WaitLoop |
43C0 0E0A 00226 movlw 10 |
43C2 ECCE F016 00227 call MIOS_Delay |
43C6 2E06 00228 decfsz TMP1, F |
00229 rgoto TIA_TUNE_WaitLoop |
43C8 D7FB M bra label |
43CA 0012 00230 return |
00383 #include "tia_sr.inc" |
00001 ; $Id: tia_sr.inc bdupeyron.tech@gmail.com(Antichambre) |
00002 ; |
00003 ; MIDIbox TIA |
00004 ; TIA Shift Register Service Routine |
gpasm-0.13.7 beta setup_tia_cartridge.asm1-30-2014 10:42:05 PAGE 108 |
|
|
LOC OBJECT CODE LINE SOURCE TEXT |
VALUE |
|
00005 ; |
00006 ; ========================================================================== |
00007 ; |
00008 ; Copyright 1998-2006 Thorsten Klose (tk@midibox.org) |
00009 ; Licensed for personal non-commercial use only. |
00010 ; All other rights reserved. |
00011 ; |
00012 ; ========================================================================== |
00013 ; |
00014 ; define the pins to which the MBHPS_TIA module is connected |
00015 ; |
00016 #if DEFAULT_IS_CARTRIDGE==1 |
00000F8B 00017 TIA_SR_LAT_SCLK EQU LATC |
00000000 00018 TIA_SR_PIN_SCLK EQU 0 ; Pin C.0 |
00000F8B 00019 TIA_SR_LAT_RCLK EQU LATC |
00000002 00020 TIA_SR_PIN_RCLK EQU 2 ; Pin C.2 |
00000F8B 00021 TIA_SR_LAT_OUT EQU LATC |
00000003 00022 TIA_SR_PIN_OUT EQU 3 ; Pin C.3 |
00023 |
00000F8B 00024 TIA_SR_LAT_WR EQU LATC |
00000001 00025 TIA_SR_PIN_WR EQU 1 ; Pin C.1 |
00026 #else |
00027 TIA_SR_LAT_SCLK EQU LATD |
00028 TIA_SR_PIN_SCLK EQU 5 ; Pin D.5 |
00029 TIA_SR_LAT_RCLK EQU LATC |
00030 TIA_SR_PIN_RCLK EQU 4 ; Pin C.4 |
00031 TIA_SR_LAT_OUT EQU LATD |
00032 TIA_SR_PIN_OUT EQU 6 ; Pin D.6 |
00033 |
00034 TIA_SR_LAT_WR EQU LATC |
00035 TIA_SR_PIN_WR EQU 5 ; Pin C.5 |
00036 #endif |
00037 |
00038 ;; -------------------------------------------------------------------------- |
00039 ;; Initialize the MBHP_TIA module |
00040 ;; -------------------------------------------------------------------------- |
43CC 00041 TIA_SR_Init |
00042 ;; reset the TIA |
43CC 6A03 00043 clrf MIOS_PARAMETER1 |
43CE 6A04 00044 clrf MIOS_PARAMETER2 |
43D0 D827 00045 rcall TIA_SR_Write |
43D2 0012 00046 return |
00047 ;; reset will be released with first call of TIA_SR_Handler |
00048 |
00049 ;; -------------------------------------------------------------------------- |
00050 ;; Check for changes in TIA registers, transfer values to TIA |
00051 ;; and handle Wavetable |
00052 ;; -------------------------------------------------------------------------- |
43D4 00053 TIA_SR_Handler |
43D4 B010 00054 btfsc TIA_STAT, TIA_STAT_ENGINE_DISABLE |
43D6 0012 00055 return |
00056 |
00057 ;call TIA_WT_Handler ; call wavetable handler before continue |
43D8 00058 _TIA_SR_Handler |
gpasm-0.13.7 beta setup_tia_cartridge.asm1-30-2014 10:42:05 PAGE 109 |
|
|
LOC OBJECT CODE LINE SOURCE TEXT |
VALUE |
|
43D8 00059 TIA_SR_Start |
00060 |
00061 TABLE_ADDR TIA_SR_REGWRITE_TABLE ; contains order of register accesses |
43D8 0EDA M movlw LOW(addr) ; store Lo Byte |
43DA 6EF6 M movwf TBLPTRL |
43DC 0E44 M movlw HIGH(addr) ; store Hi Byte |
43DE 6EF7 M movwf TBLPTRH |
M #if PIC_DERIVATIVE_CODE_SIZE > 0x10000 |
43E0 0E00 M movlw UPPER(addr) ; store Upper Byte |
43E2 6EF8 M movwf TBLPTRU |
M #endif |
43E4 0E06 00062 movlw 6 ; number of registers (0x06) |
43E6 6E06 00063 movwf TMP1 ; TMP1 is the loop counter |
43E8 EE01 F000 00064 lfsr FSR0, TIA_BASE ; store base address of TIA registers in FSR0 |
43EC EE11 F010 00065 lfsr FSR1, TIA_SHADOW_BASE ; store base address of shadow registers in FSR1 |
00066 |
00067 IRQ_DISABLE ; disable interrupts |
43F0 9EF2 M bcf INTCON, GIE |
00068 |
43F2 00069 TIA_SR_Loop |
43F2 0009 00070 tblrd*+ |
43F4 50F5 00071 movf TABLAT, W |
43F6 CFEB F004 00072 movff PLUSW0, MIOS_PARAMETER2 ; store value of TIA in MIOS_PARAMETER1 and increment FSR0 |
00073 BRA_IFSET TIA_STAT, TIA_STAT_FORCE_REFRESH, ACCESS, TIA_SR_Transfer; don't skip if refresh has been forced |
43FA B210 M btfsc reg, bit, reg_a |
43FC D004 M bra label |
43FE 50E3 00074 movf PLUSW1, W ; get content of appr. shadow register |
4400 6204 00075 cpfseq MIOS_PARAMETER2, ACCESS; transfer to TIA if not equal |
00076 rgoto TIA_SR_Transfer |
4402 D001 M bra label |
00077 rgoto TIA_SR_Next ; skip following code if equal |
4404 D008 M bra label |
00078 |
4406 00079 TIA_SR_Transfer |
00080 ;; register change: write value into shadow register and transfer it to TIA |
4406 50F5 00081 movf TABLAT, W |
4408 C004 FFE3 00082 movff MIOS_PARAMETER2, PLUSW1 ; store value in shadow register |
00083 |
440C 50F5 00084 movf TABLAT, W ; extract address, add offset |
440E 0F05 00085 addlw 0x05 |
4410 6E03 00086 movwf MIOS_PARAMETER1 ; store in address register |
00087 |
4412 D806 00088 rcall TIA_SR_Write ; transfer to TIA |
4414 816A 00089 bsf TIA_LEDMTR_STAT, TIA_LEDMTR_AUDX_REQ |
00090 |
4416 00091 TIA_SR_Next |
4416 2E06 00092 decfsz TMP1, F ; decrement loop counter until it is zero |
00093 rgoto TIA_SR_Loop |
4418 D7EC M bra label |
00094 |
00095 IRQ_ENABLE ; enable interrupts again |
441A 8EF2 M bsf INTCON, GIE |
00096 |
441C 9210 00097 bcf TIA_STAT, TIA_STAT_FORCE_REFRESH; clear refresh request (if it has been set before) |
gpasm-0.13.7 beta setup_tia_cartridge.asm1-30-2014 10:42:05 PAGE 110 |
|
|
LOC OBJECT CODE LINE SOURCE TEXT |
VALUE |
|
00098 |
441E 0012 00099 return |
00100 |
00101 ;; -------------------------------------------------------------------------- |
00102 ;; TIA Write: write to TIA register |
00103 ;; -------------------------------------------------------------------------- |
4420 00104 TIA_SR_Write |
00105 ;; TIA signals: |
00106 ;; MIOS_PARAMETER2[4..0]: Data |
00107 ;; MIOS_PARAMETER1[3..0]: Address |
00108 ;; temporary used as counter: MIOS_PARAMETER3 |
00109 |
4420 908B 00110 bcf TIA_SR_LAT_SCLK, TIA_SR_PIN_SCLK ; clear clock |
00111 |
00112 ;; superfast transfer with unrolled loop (takes some memory, but guarantees the |
00113 ;; lowest system load :) |
00114 TIA_SR_WRITE_BIT MACRO reg, bit |
00115 bcf TIA_SR_LAT_OUT, TIA_SR_PIN_OUT ; set out pin depending on register content (reg.bit) |
00116 btfsc reg, bit |
00117 bsf TIA_SR_LAT_OUT, TIA_SR_PIN_OUT |
00118 bsf TIA_SR_LAT_SCLK, TIA_SR_PIN_SCLK ; rising clock edge |
00119 bcf TIA_SR_LAT_SCLK, TIA_SR_PIN_SCLK ; falling clock edge |
00120 ENDM |
00121 #if DEFAULT_IS_CARTRIDGE==1 |
00122 TIA_SR_WRITE_BIT MIOS_PARAMETER2, 4 ; IC8.O0 |
4422 968B M bcf TIA_SR_LAT_OUT, TIA_SR_PIN_OUT ; set out pin depending on register content (reg.bit) |
4424 B804 M btfsc reg, bit |
4426 868B M bsf TIA_SR_LAT_OUT, TIA_SR_PIN_OUT |
4428 808B M bsf TIA_SR_LAT_SCLK, TIA_SR_PIN_SCLK ; rising clock edge |
442A 908B M bcf TIA_SR_LAT_SCLK, TIA_SR_PIN_SCLK ; falling clock edge |
00123 TIA_SR_WRITE_BIT MIOS_PARAMETER2, 3 ; IC8.O1 |
442C 968B M bcf TIA_SR_LAT_OUT, TIA_SR_PIN_OUT ; set out pin depending on register content (reg.bit) |
442E B604 M btfsc reg, bit |
4430 868B M bsf TIA_SR_LAT_OUT, TIA_SR_PIN_OUT |
4432 808B M bsf TIA_SR_LAT_SCLK, TIA_SR_PIN_SCLK ; rising clock edge |
4434 908B M bcf TIA_SR_LAT_SCLK, TIA_SR_PIN_SCLK ; falling clock edge |
00124 TIA_SR_WRITE_BIT MIOS_PARAMETER2, 2 ; IC8.O2 |
4436 968B M bcf TIA_SR_LAT_OUT, TIA_SR_PIN_OUT ; set out pin depending on register content (reg.bit) |
4438 B404 M btfsc reg, bit |
443A 868B M bsf TIA_SR_LAT_OUT, TIA_SR_PIN_OUT |
443C 808B M bsf TIA_SR_LAT_SCLK, TIA_SR_PIN_SCLK ; rising clock edge |
443E 908B M bcf TIA_SR_LAT_SCLK, TIA_SR_PIN_SCLK ; falling clock edge |
00125 TIA_SR_WRITE_BIT MIOS_PARAMETER2, 1 ; IC8.O3 |
4440 968B M bcf TIA_SR_LAT_OUT, TIA_SR_PIN_OUT ; set out pin depending on register content (reg.bit) |
4442 B204 M btfsc reg, bit |
4444 868B M bsf TIA_SR_LAT_OUT, TIA_SR_PIN_OUT |
4446 808B M bsf TIA_SR_LAT_SCLK, TIA_SR_PIN_SCLK ; rising clock edge |
4448 908B M bcf TIA_SR_LAT_SCLK, TIA_SR_PIN_SCLK ; falling clock edge |
00126 TIA_SR_WRITE_BIT MIOS_PARAMETER2, 0 ; IC8.O4 |
444A 968B M bcf TIA_SR_LAT_OUT, TIA_SR_PIN_OUT ; set out pin depending on register content (reg.bit) |
444C B004 M btfsc reg, bit |
444E 868B M bsf TIA_SR_LAT_OUT, TIA_SR_PIN_OUT |
4450 808B M bsf TIA_SR_LAT_SCLK, TIA_SR_PIN_SCLK ; rising clock edge |
4452 908B M bcf TIA_SR_LAT_SCLK, TIA_SR_PIN_SCLK ; falling clock edge |
gpasm-0.13.7 beta setup_tia_cartridge.asm1-30-2014 10:42:05 PAGE 111 |
|
|
LOC OBJECT CODE LINE SOURCE TEXT |
VALUE |
|
00127 TIA_SR_WRITE_BIT MIOS_PARAMETER2, 7 ; IC8.O5 |
4454 968B M bcf TIA_SR_LAT_OUT, TIA_SR_PIN_OUT ; set out pin depending on register content (reg.bit) |
4456 BE04 M btfsc reg, bit |
4458 868B M bsf TIA_SR_LAT_OUT, TIA_SR_PIN_OUT |
445A 808B M bsf TIA_SR_LAT_SCLK, TIA_SR_PIN_SCLK ; rising clock edge |
445C 908B M bcf TIA_SR_LAT_SCLK, TIA_SR_PIN_SCLK ; falling clock edge |
00128 TIA_SR_WRITE_BIT MIOS_PARAMETER2, 7 ; IC8.O6 |
445E 968B M bcf TIA_SR_LAT_OUT, TIA_SR_PIN_OUT ; set out pin depending on register content (reg.bit) |
4460 BE04 M btfsc reg, bit |
4462 868B M bsf TIA_SR_LAT_OUT, TIA_SR_PIN_OUT |
4464 808B M bsf TIA_SR_LAT_SCLK, TIA_SR_PIN_SCLK ; rising clock edge |
4466 908B M bcf TIA_SR_LAT_SCLK, TIA_SR_PIN_SCLK ; falling clock edge |
00129 TIA_SR_WRITE_BIT MIOS_PARAMETER2, 7 ; IC8.O7 |
4468 968B M bcf TIA_SR_LAT_OUT, TIA_SR_PIN_OUT ; set out pin depending on register content (reg.bit) |
446A BE04 M btfsc reg, bit |
446C 868B M bsf TIA_SR_LAT_OUT, TIA_SR_PIN_OUT |
446E 808B M bsf TIA_SR_LAT_SCLK, TIA_SR_PIN_SCLK ; rising clock edge |
4470 908B M bcf TIA_SR_LAT_SCLK, TIA_SR_PIN_SCLK ; falling clock edge |
00130 |
00131 TIA_SR_WRITE_BIT MIOS_PARAMETER1, 3 ; IC7.O0 |
4472 968B M bcf TIA_SR_LAT_OUT, TIA_SR_PIN_OUT ; set out pin depending on register content (reg.bit) |
4474 B603 M btfsc reg, bit |
4476 868B M bsf TIA_SR_LAT_OUT, TIA_SR_PIN_OUT |
4478 808B M bsf TIA_SR_LAT_SCLK, TIA_SR_PIN_SCLK ; rising clock edge |
447A 908B M bcf TIA_SR_LAT_SCLK, TIA_SR_PIN_SCLK ; falling clock edge |
00132 TIA_SR_WRITE_BIT MIOS_PARAMETER1, 2 ; IC7.O1 |
447C 968B M bcf TIA_SR_LAT_OUT, TIA_SR_PIN_OUT ; set out pin depending on register content (reg.bit) |
447E B403 M btfsc reg, bit |
4480 868B M bsf TIA_SR_LAT_OUT, TIA_SR_PIN_OUT |
4482 808B M bsf TIA_SR_LAT_SCLK, TIA_SR_PIN_SCLK ; rising clock edge |
4484 908B M bcf TIA_SR_LAT_SCLK, TIA_SR_PIN_SCLK ; falling clock edge |
00133 TIA_SR_WRITE_BIT MIOS_PARAMETER1, 1 ; IC7.O2 |
4486 968B M bcf TIA_SR_LAT_OUT, TIA_SR_PIN_OUT ; set out pin depending on register content (reg.bit) |
4488 B203 M btfsc reg, bit |
448A 868B M bsf TIA_SR_LAT_OUT, TIA_SR_PIN_OUT |
448C 808B M bsf TIA_SR_LAT_SCLK, TIA_SR_PIN_SCLK ; rising clock edge |
448E 908B M bcf TIA_SR_LAT_SCLK, TIA_SR_PIN_SCLK ; falling clock edge |
00134 TIA_SR_WRITE_BIT MIOS_PARAMETER1, 0 ; IC7.O3 |
4490 968B M bcf TIA_SR_LAT_OUT, TIA_SR_PIN_OUT ; set out pin depending on register content (reg.bit) |
4492 B003 M btfsc reg, bit |
4494 868B M bsf TIA_SR_LAT_OUT, TIA_SR_PIN_OUT |
4496 808B M bsf TIA_SR_LAT_SCLK, TIA_SR_PIN_SCLK ; rising clock edge |
4498 908B M bcf TIA_SR_LAT_SCLK, TIA_SR_PIN_SCLK ; falling clock edge |
00135 TIA_SR_WRITE_BIT MIOS_PARAMETER1, 7 ; IC7.O4 |
449A 968B M bcf TIA_SR_LAT_OUT, TIA_SR_PIN_OUT ; set out pin depending on register content (reg.bit) |
449C BE03 M btfsc reg, bit |
449E 868B M bsf TIA_SR_LAT_OUT, TIA_SR_PIN_OUT |
44A0 808B M bsf TIA_SR_LAT_SCLK, TIA_SR_PIN_SCLK ; rising clock edge |
44A2 908B M bcf TIA_SR_LAT_SCLK, TIA_SR_PIN_SCLK ; falling clock edge |
00136 TIA_SR_WRITE_BIT MIOS_PARAMETER1, 7 ; IC7.O5 |
44A4 968B M bcf TIA_SR_LAT_OUT, TIA_SR_PIN_OUT ; set out pin depending on register content (reg.bit) |
44A6 BE03 M btfsc reg, bit |
44A8 868B M bsf TIA_SR_LAT_OUT, TIA_SR_PIN_OUT |
44AA 808B M bsf TIA_SR_LAT_SCLK, TIA_SR_PIN_SCLK ; rising clock edge |
gpasm-0.13.7 beta setup_tia_cartridge.asm1-30-2014 10:42:05 PAGE 112 |
|
|
LOC OBJECT CODE LINE SOURCE TEXT |
VALUE |
|
44AC 908B M bcf TIA_SR_LAT_SCLK, TIA_SR_PIN_SCLK ; falling clock edge |
00137 TIA_SR_WRITE_BIT MIOS_PARAMETER1, 7 ; IC7.O6 |
44AE 968B M bcf TIA_SR_LAT_OUT, TIA_SR_PIN_OUT ; set out pin depending on register content (reg.bit) |
44B0 BE03 M btfsc reg, bit |
44B2 868B M bsf TIA_SR_LAT_OUT, TIA_SR_PIN_OUT |
44B4 808B M bsf TIA_SR_LAT_SCLK, TIA_SR_PIN_SCLK ; rising clock edge |
44B6 908B M bcf TIA_SR_LAT_SCLK, TIA_SR_PIN_SCLK ; falling clock edge |
00138 TIA_SR_WRITE_BIT MIOS_PARAMETER1, 7 ; IC7.O7 |
44B8 968B M bcf TIA_SR_LAT_OUT, TIA_SR_PIN_OUT ; set out pin depending on register content (reg.bit) |
44BA BE03 M btfsc reg, bit |
44BC 868B M bsf TIA_SR_LAT_OUT, TIA_SR_PIN_OUT |
44BE 808B M bsf TIA_SR_LAT_SCLK, TIA_SR_PIN_SCLK ; rising clock edge |
44C0 908B M bcf TIA_SR_LAT_SCLK, TIA_SR_PIN_SCLK ; falling clock edge |
00139 |
00140 #else |
00141 TIA_SR_WRITE_BIT MIOS_PARAMETER2, 0 ; IC2.O0 |
00142 TIA_SR_WRITE_BIT MIOS_PARAMETER2, 1 ; IC2.O1 |
00143 TIA_SR_WRITE_BIT MIOS_PARAMETER2, 2 ; IC2.O2 |
00144 TIA_SR_WRITE_BIT MIOS_PARAMETER2, 3 ; IC2.O3 |
00145 TIA_SR_WRITE_BIT MIOS_PARAMETER2, 4 ; IC2.O4 |
00146 TIA_SR_WRITE_BIT MIOS_PARAMETER2, 7 ; IC2.O5 |
00147 TIA_SR_WRITE_BIT MIOS_PARAMETER2, 7 ; IC2.O6 |
00148 TIA_SR_WRITE_BIT MIOS_PARAMETER2, 7 ; IC2.O7 |
00149 |
00150 TIA_SR_WRITE_BIT MIOS_PARAMETER1, 3 ; IC3.O0 |
00151 TIA_SR_WRITE_BIT MIOS_PARAMETER1, 2 ; IC3.O1 |
00152 TIA_SR_WRITE_BIT MIOS_PARAMETER1, 1 ; IC3.O2 |
00153 TIA_SR_WRITE_BIT MIOS_PARAMETER1, 0 ; IC3.O3 |
00154 TIA_SR_WRITE_BIT MIOS_PARAMETER1, 7 ; IC3.O4 |
00155 TIA_SR_WRITE_BIT MIOS_PARAMETER1, 7 ; IC3.O5 |
00156 TIA_SR_WRITE_BIT MIOS_PARAMETER1, 7 ; IC3.O6 |
00157 TIA_SR_WRITE_BIT MIOS_PARAMETER1, 7 ; IC3.O7 |
00158 #endif |
44C2 848B 00159 bsf TIA_SR_LAT_RCLK, TIA_SR_PIN_RCLK ; latch TIA values |
00160 |
44C4 928B 00161 bcf TIA_SR_LAT_WR, TIA_SR_PIN_WR ; enable write (MBHP_TIA: chip select) |
44C6 968B 00162 bcf TIA_SR_LAT_OUT, TIA_SR_PIN_OUT ; clear out pin (standby) |
44C8 948B 00163 bcf TIA_SR_LAT_RCLK, TIA_SR_PIN_RCLK ; release latch |
00164 |
44CA 928B 00165 bcf TIA_SR_LAT_WR, TIA_SR_PIN_WR ; enable write (MBHP_TIA: chip select) |
44CC D000 00166 bra $+2 ; to ensure compatibility with on-board oscillator, |
44CE D000 00167 bra $+2 ; wait for 0.840 uS (1 us) (> one TIA clock cycle) |
44D0 D000 00168 bra $+2 |
44D2 D000 00169 bra $+2 |
44D4 D000 00170 bra $+2 |
44D6 828B 00171 bsf TIA_SR_LAT_WR, TIA_SR_PIN_WR ; disable write (MBHP_TIA: chip select) |
00172 |
44D8 0012 00173 return |
00174 |
00175 ;; -------------------------------------------------------------------------- |
44DA 00176 TIA_SR_REGWRITE_TABLE |
00177 ;; order in which the TIA registers are written |
44DA 0100 0302 00178 db 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06 |
0504 0006 |
gpasm-0.13.7 beta setup_tia_cartridge.asm1-30-2014 10:42:05 PAGE 113 |
|
|
LOC OBJECT CODE LINE SOURCE TEXT |
VALUE |
|
00179 |
00180 |
00181 |
00182 |
00384 #include "tia_sw.inc" |
00001 ; $Id: tia_sw.inc bdupeyron.tech@gmail.com(Antichambre) |
00002 ; |
00003 ; MIDIbox TIA |
00004 ; Software Synthesizer Engine |
00005 ; mostly optimized for PIC16F - special adaption for PIC18F to be done |
00006 ; |
00007 ; Activate this #define to measure the performance with a scope |
00008 ; (connect the probe to J14) |
44E2 00009 #define TIA_SW_MEASURE_PERFORMANCE 0 |
00010 ; |
00011 ; ========================================================================== |
00012 ; |
00013 ; Copyright 1998-2006 Thorsten Klose (tk@midibox.org) |
00014 ; Idea for ENV Curve Parameter and OSC synchronization by Jess D. Skov-Nielsen |
00015 ; Licensed for personal non-commercial use only. |
00016 ; All other rights reserved. |
00017 ; |
00018 ; ========================================================================== |
00019 |
00020 ;; ========================================================================== |
00021 ;; TIA Flags |
00022 ;; ========================================================================== |
00023 |
00024 |
00025 |
00026 |
00000000 00027 Vx_STAT_VOICE_ACTIVE EQU 0 |
00000001 00028 Vx_STAT_GATE_SET_REQ EQU 1 |
00000002 00029 Vx_STAT_GATE_CLR_REQ EQU 2 |
00000003 00030 Vx_STAT_GATE_ACTIVE EQU 3 |
00000004 00031 Vx_STAT_PORTA_ENABLE EQU 4 |
00000005 00032 Vx_STAT_GATE_NOTE_ON EQU 5 |
00000006 00033 Vx_STAT_ENV_ACTIVE EQU 6 |
00034 |
00000000 00035 Vx_MODE_GSA_ACTIVE EQU 0 |
00000001 00036 Vx_MODE_PORTA_CONST EQU 1 |
00000002 00037 Vx_MODE_KEY_EXTENDED EQU 2 |
00000003 00038 Vx_MODE_VEL2AMP_ON EQU 3 |
00000004 00039 Vx_MODE_ENV2AMP_ON EQU 4 |
00000005 00040 Vx_MODE_ENV2PITCH_ON EQU 5 |
00000006 00041 Vx_MODE_ARP_SYNC_ON EQU 6 |
00042 |
00000000 00043 ENVAUDx_MODTYP_AB EQU 0 |
00000001 00044 ENVAUDx_MODTYP_AxB EQU 1 |
00000003 00045 Vx_ENV_SYNC_ON EQU 3 |
00046 |
00000000 00047 Vx_OPTION_WT_ON EQU 0 |
00000001 00048 Vx_OPTION_WTSYNC_ON EQU 1 |
00000002 00049 Vx_OPTION_KIT_ON EQU 2 |
gpasm-0.13.7 beta setup_tia_cartridge.asm1-30-2014 10:42:05 PAGE 114 |
|
|
LOC OBJECT CODE LINE SOURCE TEXT |
VALUE |
|
00000003 00050 Vx_OPTION_SAMPLER_ON EQU 3 |
00051 |
00000000 00052 LFOx_MODE_ENABLE EQU 0 |
00000001 00053 LFOx_MODE_SYNC EQU 1 |
00000002 00054 LFOx_MODE_SYNC_ALL EQU 2 |
00000003 00055 LFOx_MODE_RESERVED EQU 3 |
00000004 00056 LFOx_MODE_WAVEFORM0 EQU 4 |
00000005 00057 LFOx_MODE_WAVEFORM1 EQU 5 |
00000006 00058 LFOx_MODE_WAVEFORM2 EQU 6 |
00000007 00059 LFOx_MODE_DECINC EQU 7 |
00060 |
00000000 00061 ENVx_MODE_ATTACK EQU 0 |
00000001 00062 ENVx_MODE_DECAY EQU 1 |
00000002 00063 ENVx_MODE_SUSTAIN EQU 2 |
00000003 00064 ENVx_MODE_RELEASE EQU 3 |
00000004 00065 ENVx_MODE_FREE EQU 4 |
00066 ;ENVx_MODE_RESERVED EQU 5 |
00067 ;ENVx_MODE_RESERVED EQU 6 |
00068 ;ENVx_MODE_RESERVED EQU 7 |
00069 |
00070 |
00000000 00071 ASSIGNED_LFOS_1 EQU 0 |
00000001 00072 ASSIGNED_LFOS_2 EQU 1 |
00000002 00073 ASSIGNED_LFOS_3 EQU 2 |
00000003 00074 ASSIGNED_LFOS_4 EQU 3 |
00000004 00075 ASSIGNED_ENVS_1 EQU 4 |
00000005 00076 ASSIGNED_ENVS_2 EQU 5 |
00000006 00077 ASSIGNED_ENVS_A0 EQU 6 |
00000007 00078 ASSIGNED_ENVS_A1 EQU 7 |
00079 |
00000000 00080 WT_STATE_STOP EQU 0 |
00000001 00081 WT_STATE_RESET EQU 1 |
00082 |
00000004 00083 WT_STATE_GATE EQU 4 ; for TB303 option |
00000005 00084 WT_STATE_SLIDE EQU 5 |
00000006 00085 WT_STATE_SLIDE_PREV EQU 6 |
00000007 00086 WT_STATE_PLAY_2ND EQU 7 |
00087 |
00000000 00088 SE_OPTION_TB303 EQU 0 |
00000001 00089 SE_OPTION_FIP EQU 1 |
00000002 00090 SE_OPTION_ENV2PORTA EQU 2 |
00000003 00091 SE_OPTION_ENV2VOL EQU 3 |
00000004 00092 SE_OPTION_GSA EQU 4 |
00093 |
00094 ;; ========================================================================== |
00095 |
00096 |
00097 ;; -------------------------------------------------------------------------- |
00098 ;; TIA Software Handler: Software Synthesizer part for the TIA |
00099 ;; called by User Timer every 800 us |
00100 ;; -------------------------------------------------------------------------- |
44E2 00101 TIA_SW_Handler |
00102 #if TIA_SW_MEASURE_PERFORMANCE |
00103 bsf PORTD, 4 |
gpasm-0.13.7 beta setup_tia_cartridge.asm1-30-2014 10:42:05 PAGE 115 |
|
|
LOC OBJECT CODE LINE SOURCE TEXT |
VALUE |
|
00104 #endif |
00105 |
00106 SET_BSR TIA_BASE ; prepare BSR for TIA register access |
44E2 0101 M movlb HIGH(reg) |
00107 |
00108 ;; return immediately if engine has been disabled |
44E4 B010 00109 btfsc TIA_STAT, TIA_STAT_ENGINE_DISABLE |
44E6 0012 00110 return |
00111 |
00112 ;; handle with MIDI clock |
44E8 00113 TIA_SW_Clk |
44E8 2BF1 00114 incf TIA_MIDI_SYNC_CTR, F, BANKED |
00115 |
00116 ;; register last counter value on 0xf8 or if TIA_MIDI_SYNC_CTR == 0xff (no clock received) |
44EA 9DF0 00117 bcf TIA_MIDI_SYNC, TIA_MIDI_SYNC_TICK_1, BANKED |
44EC 29F1 00118 incf TIA_MIDI_SYNC_CTR, W, BANKED |
44EE E003 00119 bz TIA_SW_Clk_F8 |
00120 BRA_IFCLR TIA_MIDI_SYNC, TIA_MIDI_SYNC_F8, BANKED, TIA_SW_Clk_NoF8 |
44F0 A9F0 M btfss reg, bit, reg_a |
44F2 D005 M bra label |
44F4 99F0 00121 bcf TIA_MIDI_SYNC, TIA_MIDI_SYNC_F8, BANKED |
44F6 00122 TIA_SW_Clk_F8 |
44F6 8DF0 00123 bsf TIA_MIDI_SYNC, TIA_MIDI_SYNC_TICK_1, BANKED |
44F8 C1F1 F1F2 00124 movff TIA_MIDI_SYNC_CTR, TIA_MIDI_SYNC_CTR_REG |
44FC 6BF1 00125 clrf TIA_MIDI_SYNC_CTR, BANKED |
44FE 00126 TIA_SW_Clk_NoF8 |
00127 |
00128 ;; handle with double resolution of TIA_SW clock |
44FE 9FF0 00129 bcf TIA_MIDI_SYNC, TIA_MIDI_SYNC_TICK_2, BANKED |
00130 |
00131 ;; if MIDI sync enabled: clock LFOs/ENVs two times on every MIDI clock event |
4500 51F1 00132 movf TIA_MIDI_SYNC_CTR, W, BANKED |
4502 B4D8 00133 skpnz |
4504 8FF0 00134 bsf TIA_MIDI_SYNC, TIA_MIDI_SYNC_TICK_2, BANKED |
00135 |
4506 90D8 00136 clrc |
4508 31F2 00137 rrf TIA_MIDI_SYNC_CTR_REG, W, BANKED |
450A 19F1 00138 xorwf TIA_MIDI_SYNC_CTR, W, BANKED |
450C B4D8 00139 skpnz |
450E 8FF0 00140 bsf TIA_MIDI_SYNC, TIA_MIDI_SYNC_TICK_2, BANKED |
00141 |
00142 ;; A MIDI clock start event restarts all LFOs |
00143 BRA_IFCLR TIA_MIDI_SYNC, TIA_MIDI_SYNC_FA, BANKED, TIA_SW_Clk_NoFA |
4510 ABF0 M btfss reg, bit, reg_a |
4512 D003 M bra label |
4514 9BF0 00144 bcf TIA_MIDI_SYNC, TIA_MIDI_SYNC_FA, BANKED |
4516 00145 TIA_SW_Clk_FA |
4516 ECA2 F027 00146 call TIA_SW_Hlp_SyncAllLFOs |
00147 |
00148 ;btfsc TIA_SE_OPTION, SE_OPTION_TB303, BANKED |
00149 ;bsf TIA_WT_STATE, WT_STATE_RESET, BANKED |
00150 |
451A 00151 TIA_SW_Clk_NoFA |
00152 |
gpasm-0.13.7 beta setup_tia_cartridge.asm1-30-2014 10:42:05 PAGE 116 |
|
|
LOC OBJECT CODE LINE SOURCE TEXT |
VALUE |
|
451A CFF3 F1F6 00153 movff PRODL, SAVED_PRODL ; save PROD[LH] - we are in an interrupt routine |
451E CFF4 F1F7 00154 movff PRODH, SAVED_PRODH |
00155 |
00156 ;; generate new pseudo-random number |
4522 511C 00157 movf TIA_LFO_RANDOM_SEED_L, W, BANKED |
4524 031D 00158 mulwf TIA_LFO_RANDOM_SEED_H, BANKED |
4526 50D6 00159 movf TMR0L, W |
4528 24F3 00160 addwf PRODL, W |
452A 6F1C 00161 movwf TIA_LFO_RANDOM_SEED_L, BANKED |
452C 0E69 00162 movlw 0x69 |
452E 20F4 00163 addwfc PRODH, W |
4530 6F1D 00164 movwf TIA_LFO_RANDOM_SEED_H, BANKED |
00165 |
00166 |
00167 ;; wavetable handler: check for MIDI Sync |
00168 ; BRA_IFCLR TIA_MIDI_SYNC, TIA_MIDI_SYNC_WT_ARP, BANKED, TIA_SW_Wt |
00169 ; BRA_IFCLR TIA_MIDI_SYNC, TIA_MIDI_SYNC_TICK_1, BANKED, TIA_SW_Wt_End |
00170 ;TIA_SW_Wt |
00171 ; movf TIA_WT_RATE, W, BANKED |
00172 ; bz TIA_SW_Wt_End |
00173 |
00174 ; movf TIA_WT_CTR, W, BANKED |
00175 ; bnz TIA_SW_Wt_Next |
00176 |
00177 ; comf TIA_WT_RATE, W, BANKED |
00178 ; andlw 0x7f |
00179 ; BRA_IFCLR TIA_MIDI_SYNC, TIA_MIDI_SYNC_WT_ARP, BANKED, TIA_SW_Wt_IntClk |
00180 ;TIA_SW_Wt_ExtClk |
00181 ; btfss TIA_SE_OPTION, SE_OPTION_TB303, BANKED |
00182 ; addlw 1 |
00183 ; movwf TIA_WT_CTR, BANKED |
00184 ; rgoto TIA_SW_Wt_PlayNext |
00185 ;TIA_SW_Wt_IntClk |
00186 ; skpnz ; never use 0x00 (avoid wdt reset on overloaded engine) |
00187 ; addlw 1 |
00188 ; movwf TIA_WT_CTR, BANKED |
00189 ; clrc |
00190 ; rlf TIA_WT_CTR, F, BANKED |
00191 ;; rgoto TIA_SW_Wt_PlayNext |
00192 |
00193 ;TIA_SW_Wt_PlayNext |
00194 ; incf TIA_WT_CLK_REQ_CTR, F, BANKED |
00195 ; rgoto TIA_SW_Wt_End |
00196 |
00197 ;TIA_SW_Wt_Next |
00198 ; decf TIA_WT_CTR, F, BANKED |
00199 ;TIA_SW_Wt_End |
00200 |
00201 ;; ARPs: check for MIDI Sync |
4532 00202 TIA_SW_ARPs |
4532 EE11 F020 00203 lfsr FSR1, TIA_V1_BASE |
4536 0E04 00204 movlw TIA_Vx_MODE |
4538 BCE3 00205 btfsc PLUSW1, Vx_MODE_ARP_SYNC_ON |
453A BFF0 00206 btfsc TIA_MIDI_SYNC, TIA_MIDI_SYNC_TICK_2, BANKED |
gpasm-0.13.7 beta setup_tia_cartridge.asm1-30-2014 10:42:05 PAGE 117 |
|
|
LOC OBJECT CODE LINE SOURCE TEXT |
VALUE |
|
453C D858 00207 rcall TIA_SW_Arp |
453E EE11 F060 00208 lfsr FSR1, TIA_V2_BASE |
4542 0E04 00209 movlw TIA_Vx_MODE |
4544 BCE3 00210 btfsc PLUSW1, Vx_MODE_ARP_SYNC_ON |
4546 BFF0 00211 btfsc TIA_MIDI_SYNC, TIA_MIDI_SYNC_TICK_2, BANKED |
4548 D852 00212 rcall TIA_SW_Arp |
454A 00213 TIA_SW_ARPs_End |
00214 |
00215 ;; LFOs: check for MIDI Sync |
454A 00216 TIA_SW_LFOs |
454A 6B0F 00217 clrf TIA_SW_LFO_NUMBER, BANKED |
454C EE11 F0A0 00218 lfsr FSR1, TIA_LFO1_BASE |
4550 B11F 00219 btfsc TIA_MOD_SYNC, ASSIGNED_LFOS_1, BANKED |
4552 BFF0 00220 btfsc TIA_MIDI_SYNC, TIA_MIDI_SYNC_TICK_2, BANKED |
4554 DB3F 00221 rcall TIA_SW_LFO |
4556 2B0F 00222 incf TIA_SW_LFO_NUMBER, F, BANKED |
4558 EE11 F0A7 00223 lfsr FSR1, TIA_LFO2_BASE |
455C B31F 00224 btfsc TIA_MOD_SYNC, ASSIGNED_LFOS_2, BANKED |
455E BFF0 00225 btfsc TIA_MIDI_SYNC, TIA_MIDI_SYNC_TICK_2, BANKED |
4560 DB39 00226 rcall TIA_SW_LFO |
4562 2B0F 00227 incf TIA_SW_LFO_NUMBER, F, BANKED |
4564 EE11 F0AE 00228 lfsr FSR1, TIA_LFO3_BASE |
4568 B51F 00229 btfsc TIA_MOD_SYNC, ASSIGNED_LFOS_3, BANKED |
456A BFF0 00230 btfsc TIA_MIDI_SYNC, TIA_MIDI_SYNC_TICK_2, BANKED |
456C DB33 00231 rcall TIA_SW_LFO |
456E 2B0F 00232 incf TIA_SW_LFO_NUMBER, F, BANKED |
4570 EE11 F0B5 00233 lfsr FSR1, TIA_LFO4_BASE |
4574 B71F 00234 btfsc TIA_MOD_SYNC, ASSIGNED_LFOS_4, BANKED |
4576 BFF0 00235 btfsc TIA_MIDI_SYNC, TIA_MIDI_SYNC_TICK_2, BANKED |
4578 DB2D 00236 rcall TIA_SW_LFO |
457A 00237 TIA_SW_LFOs_End |
00238 |
00239 ;; ENVs: check for MIDI Sync |
457A 00240 TIA_SW_ENVs |
00241 ;; Enveloppe for AUD0(voice 1) |
457A 6B0F 00242 clrf TIA_SW_ENV_NUMBER, BANKED |
457C EE11 F0BC 00243 lfsr FSR1, TIA_ENVAUD0_BASE |
4580 EE21 F020 00244 lfsr FSR2, TIA_V1_BASE |
4584 0E2A 00245 movlw TIA_Vx_ENV_OPTION |
00246 BRA_IFCLR PLUSW2, Vx_ENV_SYNC_ON, ACCESS, TIA_SW_ENVs_v1_Ok |
4586 A6DB M btfss reg, bit, reg_a |
4588 D002 M bra label |
00247 BRA_IFCLR TIA_MIDI_SYNC, TIA_MIDI_SYNC_TICK_2, BANKED, TIA_SW_ENVs_v1_Nok |
458A AFF0 M btfss reg, bit, reg_a |
458C D003 M bra label |
458E 00248 TIA_SW_ENVs_v1_Ok |
458E 38DB 00249 swapf PLUSW2, W |
4590 0B07 00250 andlw 0x07 |
4592 DB66 00251 rcall TIA_SW_ENV |
4594 00252 TIA_SW_ENVs_v1_Nok |
00253 ;; Enveloppe for AUD1(voice 2) |
4594 2B0F 00254 incf TIA_SW_ENV_NUMBER, BANKED |
4596 EE11 F0C7 00255 lfsr FSR1, TIA_ENVAUD1_BASE |
459A EE21 F060 00256 lfsr FSR2, TIA_V2_BASE |
gpasm-0.13.7 beta setup_tia_cartridge.asm1-30-2014 10:42:05 PAGE 118 |
|
|
LOC OBJECT CODE LINE SOURCE TEXT |
VALUE |
|
459E 0E2A 00257 movlw TIA_Vx_ENV_OPTION |
00258 BRA_IFCLR PLUSW2, Vx_ENV_SYNC_ON, ACCESS, TIA_SW_ENVs_v2_Ok |
45A0 A6DB M btfss reg, bit, reg_a |
45A2 D002 M bra label |
00259 BRA_IFCLR TIA_MIDI_SYNC, TIA_MIDI_SYNC_TICK_2, BANKED, TIA_SW_ENVs_v2_Nok |
45A4 AFF0 M btfss reg, bit, reg_a |
45A6 D003 M bra label |
45A8 00260 TIA_SW_ENVs_v2_Ok |
45A8 38DB 00261 swapf PLUSW2, W |
45AA 0B07 00262 andlw 0x07 |
45AC DB59 00263 rcall TIA_SW_ENV |
45AE 00264 TIA_SW_ENVs_v2_Nok |
00265 ;; Enveloppe 1 |
45AE 2B0F 00266 incf TIA_SW_ENV_NUMBER, BANKED |
45B0 EE11 F0D2 00267 lfsr FSR1, TIA_ENV1_BASE |
45B4 511E 00268 movf TIA_ENVx_CURVES, W, BANKED |
45B6 B91F 00269 btfsc TIA_MOD_SYNC, ASSIGNED_ENVS_1, BANKED |
45B8 BFF0 00270 btfsc TIA_MIDI_SYNC, TIA_MIDI_SYNC_TICK_2, BANKED |
45BA DB52 00271 rcall TIA_SW_ENV |
00272 ;; Enveloppe 2 |
45BC 2B0F 00273 incf TIA_SW_ENV_NUMBER, BANKED |
45BE EE11 F0DD 00274 lfsr FSR1, TIA_ENV2_BASE |
45C2 391E 00275 swapf TIA_ENVx_CURVES, W, BANKED |
45C4 BB1F 00276 btfsc TIA_MOD_SYNC, ASSIGNED_ENVS_2, BANKED |
45C6 BFF0 00277 btfsc TIA_MIDI_SYNC, TIA_MIDI_SYNC_TICK_2, BANKED |
45C8 DB4B 00278 rcall TIA_SW_ENV |
45CA 00279 TIA_SW_ENVs_End |
00280 |
00281 SET_BSR TIA_BASE |
45CA 0101 M movlb HIGH(reg) |
45CC 6B0E 00282 clrf TIA_SW_VOICE, BANKED ; loop counter |
45CE EE11 F020 00283 lfsr FSR1, TIA_V1_BASE |
45D2 00284 TIA_SW_VoiceLoop |
45D2 0E10 00285 movlw TIA_Vx_NOTE |
45D4 50E3 00286 movf PLUSW1, W |
45D6 E002 00287 bz TIA_SW_VoiceLoop_NoPitchChange |
45D8 00288 TIA_SW_VoiceLoop_PitchChange |
45D8 D85C 00289 rcall TIA_SW_Note |
45DA D8D0 00290 rcall TIA_SW_Pitch |
00291 |
45DC 00292 TIA_SW_VoiceLoop_NoPitchChange |
45DC D992 00293 rcall TIA_SW_Porta |
45DE DA3C 00294 rcall TIA_SW_Amp |
00295 |
45E0 00296 TIA_SW_VoiceLoop_Next |
45E0 0E40 00297 movlw TIA_Vx_RECORD_LEN |
45E2 26E1 00298 addwf FSR1L, F |
45E4 2B0E 00299 incf TIA_SW_VOICE, F, BANKED |
45E6 0E01 00300 movlw 2-1 |
45E8 650E 00301 cpfsgt TIA_SW_VOICE, BANKED |
00302 rgoto TIA_SW_VoiceLoop |
45EA D7F3 M bra label |
00303 |
45EC 00304 TIA_SW_Handler_End |
gpasm-0.13.7 beta setup_tia_cartridge.asm1-30-2014 10:42:05 PAGE 119 |
|
|
LOC OBJECT CODE LINE SOURCE TEXT |
VALUE |
|
00305 |
00306 #if TIA_SW_MEASURE_PERFORMANCE |
00307 bcf PORTD, 4 |
00308 #endif |
00309 |
45EC 0012 00310 return |
00311 |
00312 |
00313 |
00314 |
00315 |
00316 ;; -------------------------------------------------------------------------- |
00317 ;; This function handles the arpeggiator |
00318 ;; -------------------------------------------------------------------------- |
45EE 00319 TIA_SW_Arp |
00320 ;; skip if arpeggiator rate == 0 |
45EE 0E13 00321 movlw TIA_Vx_ARP_RATE |
45F0 50E3 00322 movf PLUSW1, W |
45F2 E04E 00323 bz TIA_SW_Arp_End |
00324 |
00325 ;; a counter is incremented on each function call |
00326 ;; arpeggiator is stepped forward once the counter has reached the |
00327 ;; compare value: rate^0x7f + 1, multiply by 2 if MIDI sync not enabled |
45F4 0A7F 00328 xorlw 0x7f |
45F6 0F01 00329 addlw 1 |
45F8 6E0B 00330 movwf IRQ_TMP1 ; compare value => IRQ_TMP1 |
45FA 90D8 00331 clrc |
45FC 0E04 00332 movlw TIA_Vx_MODE |
45FE ACE3 00333 btfss PLUSW1, Vx_MODE_ARP_SYNC_ON, ACCESS ; (*2 reduce the rate a little if no MIDI sync) |
4600 360B 00334 rlf IRQ_TMP1, F |
00335 |
4602 0E01 00336 movlw 1 |
4604 6E0C 00337 movwf IRQ_TMP2 ; incrementer => IRQ_TMP2 |
00338 |
00339 ;; special option: constant time arp cycle |
00340 ;; if 1 key is pressed, use the original incrementer |
00341 ;; if 2 keys are pressed, increment by 2 |
00342 ;; if 3 keys are pressed, increment by 3 |
00343 ;; if 4 keys are pressed, increment by 4 |
4606 0E23 00344 movlw TIA_Vx_NOTE_STACK_1 |
4608 50E3 00345 movf PLUSW1, W |
460A A4D8 00346 skpz |
460C 2A0C 00347 incf IRQ_TMP2, F |
00348 |
460E 0E24 00349 movlw TIA_Vx_NOTE_STACK_2 |
4610 50E3 00350 movf PLUSW1, W |
4612 A4D8 00351 skpz |
4614 2A0C 00352 incf IRQ_TMP2, F |
00353 |
4616 0E25 00354 movlw TIA_Vx_NOTE_STACK_3 |
4618 50E3 00355 movf PLUSW1, W |
461A A4D8 00356 skpz |
461C 2A0C 00357 incf IRQ_TMP2, F |
00358 |
gpasm-0.13.7 beta setup_tia_cartridge.asm1-30-2014 10:42:05 PAGE 120 |
|
|
LOC OBJECT CODE LINE SOURCE TEXT |
VALUE |
|
00359 ;; increment counter |
461E 0E15 00360 movlw TIA_Vx_ARP_CTR |
4620 50E3 00361 movf PLUSW1, W |
4622 260C 00362 addwf IRQ_TMP2, F |
4624 E206 00363 bc TIA_SW_Arp_Overrun |
4626 0E15 00364 movlw TIA_Vx_ARP_CTR |
4628 C00C FFE3 00365 movff IRQ_TMP2, PLUSW1 |
00366 |
00367 ;; branch to the end so long the counter is less than the compare value |
462C 500C 00368 movf IRQ_TMP2, W |
462E 5C0B 00369 subwf IRQ_TMP1, W |
4630 E22F 00370 bc TIA_SW_Arp_End |
00371 |
4632 00372 TIA_SW_Arp_Overrun |
00373 ;; clear counter |
4632 0E15 00374 movlw TIA_Vx_ARP_CTR |
4634 6AE3 00375 clrf PLUSW1 |
00376 |
00377 ;; increment note number (1 of 4) |
4636 0E14 00378 movlw TIA_Vx_ARP_NOTE_NUMBER |
4638 28E3 00379 incf PLUSW1, W |
463A 0B03 00380 andlw 0x03 |
463C 6E0B 00381 movwf IRQ_TMP1 |
00382 |
00383 ;; reset note number if last one reached (TIA_Vx_NOTE_STACK_x is zero) |
463E 0E22 00384 movlw TIA_Vx_NOTE_STACK_0 |
4640 240B 00385 addwf IRQ_TMP1, W |
4642 50E3 00386 movf PLUSW1, W |
4644 B4D8 00387 skpnz |
4646 6A0B 00388 clrf IRQ_TMP1 |
00389 |
00390 ;; save new note number |
4648 0E14 00391 movlw TIA_Vx_ARP_NOTE_NUMBER |
464A C00B FFE3 00392 movff IRQ_TMP1, PLUSW1 |
00393 |
00394 ;; select note |
464E 0E1E 00395 movlw TIA_Vx_ARP_NOTE_0 |
4650 240B 00396 addwf IRQ_TMP1, W |
00397 |
00398 ;; save new note number if != zero and != last note |
4652 50E3 00399 movf PLUSW1, W |
4654 E01D 00400 bz TIA_SW_Arp_NoNewNote |
4656 6E0B 00401 movwf IRQ_TMP1 |
4658 0E10 00402 movlw TIA_Vx_NOTE |
465A 50E3 00403 movf PLUSW1, W |
465C 180B 00404 xorwf IRQ_TMP1, W |
465E E018 00405 bz TIA_SW_Arp_NoNewNote |
4660 00406 TIA_SW_Arp_NewNote |
4660 0E10 00407 movlw TIA_Vx_NOTE |
4662 C00B FFE3 00408 movff IRQ_TMP1, PLUSW1 |
00409 |
00410 |
4666 0E0E 00411 movlw TIA_Vx_PORTA_RATE |
4668 50E3 00412 movf PLUSW1, W |
gpasm-0.13.7 beta setup_tia_cartridge.asm1-30-2014 10:42:05 PAGE 121 |
|
|
LOC OBJECT CODE LINE SOURCE TEXT |
VALUE |
|
466A E012 00413 bz TIA_SW_Arp_NoPorta |
466C 00414 TIA_SW_Arp_Porta |
466C 0E03 00415 movlw TIA_Vx_STAT |
466E 88E3 00416 bsf PLUSW1, Vx_STAT_PORTA_ENABLE |
00417 |
00418 ;; store current frequency in TIA_Vx_PORTA_FRQ_L |
00419 |
00420 |
4670 0E09 00421 movlw TIA_Vx_FRQ_L |
4672 CFE3 F00B 00422 movff PLUSW1, IRQ_TMP1 |
4676 0E0A 00423 movlw TIA_Vx_FRQ_H |
4678 CFE3 F00C 00424 movff PLUSW1, IRQ_TMP2 |
00425 |
467C 0E1C 00426 movlw TIA_Vx_PORTA_FRQ_L |
467E C00B FFE3 00427 movff IRQ_TMP1, PLUSW1 |
4682 0E1D 00428 movlw TIA_Vx_PORTA_FRQ_H |
4684 C00C FFE3 00429 movff IRQ_TMP2, PLUSW1 |
00430 |
4688 0E1A 00431 movlw TIA_Vx_PORTA_CTR_L |
468A 6AE3 00432 clrf PLUSW1 |
468C 0E1B 00433 movlw TIA_Vx_PORTA_CTR_H |
468E 6AE3 00434 clrf PLUSW1 |
00435 |
00436 |
4690 00437 TIA_SW_Arp_NoV1 |
00438 |
4690 00439 TIA_SW_Arp_NoPorta |
00440 |
4690 00441 TIA_SW_Arp_NoNewNote |
00442 |
4690 00443 TIA_SW_Arp_End |
4690 0012 00444 return |
00445 |
00446 |
00447 ;; -------------------------------------------------------------------------- |
00448 ;; This function handles the gates and initial note frequency |
00449 ;; -------------------------------------------------------------------------- |
4692 00450 TIA_SW_Note |
00451 |
00452 |
00453 |
00454 ;; check note delay counter, set/clear gate bit |
4692 0E12 00455 movlw TIA_Vx_NOTE_DELAY_CTR |
4694 50E3 00456 movf PLUSW1, W |
4696 E003 00457 bz TIA_SW_Note_NoDelay |
4698 0E12 00458 movlw TIA_Vx_NOTE_DELAY_CTR |
469A 06E3 00459 decf PLUSW1, F |
00460 rgoto TIA_SW_Note_DelayCont |
469C D03F M bra label |
469E 00461 TIA_SW_Note_NoDelay |
469E 0E03 00462 movlw TIA_Vx_STAT |
00463 BRA_IFSET PLUSW1, Vx_STAT_GATE_CLR_REQ, ACCESS, TIA_SW_Note_NoteOffReq |
46A0 B4E3 M btfsc reg, bit, reg_a |
46A2 D003 M bra label |
gpasm-0.13.7 beta setup_tia_cartridge.asm1-30-2014 10:42:05 PAGE 122 |
|
|
LOC OBJECT CODE LINE SOURCE TEXT |
VALUE |
|
00464 BRA_IFSET PLUSW1, Vx_STAT_GATE_SET_REQ, ACCESS, TIA_SW_Note_NoteOnReq |
46A4 B2E3 M btfsc reg, bit, reg_a |
46A6 D01A M bra label |
00465 rgoto TIA_SW_Note_DelayCont |
46A8 D039 M bra label |
00466 |
46AA 00467 TIA_SW_Note_NoteOffReq |
46AA 94E3 00468 bcf PLUSW1, Vx_STAT_GATE_CLR_REQ |
46AC 9AE3 00469 bcf PLUSW1, Vx_STAT_GATE_NOTE_ON |
46AE 0E04 00470 movlw TIA_Vx_MODE |
00471 ; (don't clear gate bit if GSA (gate stays active) |
00472 BRA_IFSET PLUSW1, Vx_MODE_GSA_ACTIVE, ACCESS, TIA_SW_Note_NoteOffReqSkp |
46B0 B0E3 M btfsc reg, bit, reg_a |
46B2 D002 M bra label |
46B4 0E03 00473 movlw TIA_Vx_STAT |
46B6 96E3 00474 bcf PLUSW1, Vx_STAT_GATE_ACTIVE |
46B8 00475 TIA_SW_Note_NoteOffReqSkp |
00476 ;; sync voice ENVs |
46B8 0E04 00477 movlw TIA_Vx_MODE |
46BA 30E3 00478 rrf PLUSW1, W |
46BC 40E8 00479 rrncf WREG, W |
46BE 0B0C 00480 andlw 0x0c |
46C0 B10E 00481 btfsc TIA_SW_VOICE, 0, BANKED |
46C2 38E8 00482 swapf WREG, W |
46C4 6E0B 00483 movwf IRQ_TMP1 |
00484 ;; sync assigned ENVs |
46C6 0E17 00485 movlw TIA_Vx_AMP_MOD |
46C8 50E3 00486 movf PLUSW1, W |
46CA 0B30 00487 andlw 0x30 |
46CC 120B 00488 iorwf IRQ_TMP1, F |
00489 |
46CE 0E16 00490 movlw TIA_Vx_PITCH_MOD |
46D0 38E3 00491 swapf PLUSW1, W |
46D2 0B03 00492 andlw 0x03 |
46D4 100B 00493 iorwf IRQ_TMP1, W |
46D6 ECDD F027 00494 call TIA_SW_Hlp_ENVRelease |
00495 rgoto TIA_SW_Note_DelayCont |
46DA D020 M bra label |
00496 |
46DC 00497 TIA_SW_Note_NoteOnReq |
46DC 0E03 00498 movlw TIA_Vx_STAT |
46DE 92E3 00499 bcf PLUSW1, Vx_STAT_GATE_SET_REQ |
46E0 8AE3 00500 bsf PLUSW1, Vx_STAT_GATE_NOTE_ON |
46E2 00501 TIA_SW_Note_NoteOnReqSkp |
46E2 0E03 00502 movlw TIA_Vx_STAT |
46E4 86E3 00503 bsf PLUSW1, Vx_STAT_GATE_ACTIVE |
00504 |
00505 ;; sync assigned LFOs |
46E6 0E17 00506 movlw TIA_Vx_AMP_MOD |
46E8 50E3 00507 movf PLUSW1, W |
46EA 0B07 00508 andlw 0x07 |
46EC 6E0B 00509 movwf IRQ_TMP1 |
00510 |
46EE 0E16 00511 movlw TIA_Vx_PITCH_MOD |
gpasm-0.13.7 beta setup_tia_cartridge.asm1-30-2014 10:42:05 PAGE 123 |
|
|
LOC OBJECT CODE LINE SOURCE TEXT |
VALUE |
|
46F0 50E3 00512 movf PLUSW1, W |
46F2 0B07 00513 andlw 0x07 |
46F4 100B 00514 iorwf IRQ_TMP1, W |
46F6 ECAB F027 00515 call TIA_SW_Hlp_SyncLFOs |
00516 |
00517 ;; sync voice ENVs |
46FA 0E04 00518 movlw TIA_Vx_MODE |
46FC 30E3 00519 rrf PLUSW1, W |
46FE 40E8 00520 rrncf WREG, W |
4700 0B0C 00521 andlw 0x0c |
4702 B10E 00522 btfsc TIA_SW_VOICE, 0, BANKED |
4704 38E8 00523 swapf WREG, W |
4706 6E0B 00524 movwf IRQ_TMP1 |
00525 |
00526 ;; sync assigned ENVs |
4708 0E17 00527 movlw TIA_Vx_AMP_MOD |
470A 50E3 00528 movf PLUSW1, W |
470C 0B30 00529 andlw 0x30 |
470E 120B 00530 iorwf IRQ_TMP1, F |
00531 |
4710 0E16 00532 movlw TIA_Vx_PITCH_MOD |
4712 38E3 00533 swapf PLUSW1, W |
4714 0B03 00534 andlw 0x03 |
4716 100B 00535 iorwf IRQ_TMP1, W |
4718 ECC8 F027 00536 call TIA_SW_Hlp_ENVAttack |
00537 |
00538 |
00539 |
471C 00540 TIA_SW_Note_DelayCont |
00541 |
471C 0E0C 00542 movlw TIA_Vx_TRANSPOSE |
471E 50E3 00543 movf PLUSW1, W |
4720 0840 00544 sublw 0x40 |
4722 0AFF 00545 xorlw 0xff |
4724 6E0B 00546 movwf IRQ_TMP1 |
4726 0E10 00547 movlw TIA_Vx_NOTE |
4728 50E3 00548 movf PLUSW1, W |
472A 240B 00549 addwf IRQ_TMP1, W |
472C 0F01 00550 addlw 1 |
472E 6E0C 00551 movwf IRQ_TMP2 |
4730 087F 00552 sublw 0x7f |
4732 E207 00553 bc TIA_SW_Note_NoOverflow |
4734 0E0C 00554 movlw TIA_Vx_TRANSPOSE |
00555 BRA_IFSET PLUSW1, 6, ACCESS, TIA_SW_Note_PosSaturation |
4736 BCE3 M btfsc reg, bit, reg_a |
4738 D002 M bra label |
473A 00556 TIA_SW_Note_NegSaturation |
473A 6A0C 00557 clrf IRQ_TMP2 |
00558 rgoto TIA_SW_Note_NoOverflow |
473C D002 M bra label |
473E 00559 TIA_SW_Note_PosSaturation |
473E 0E7F 00560 movlw 0x7f |
4740 6E0C 00561 movwf IRQ_TMP2 |
4742 00562 TIA_SW_Note_NoOverflow |
gpasm-0.13.7 beta setup_tia_cartridge.asm1-30-2014 10:42:05 PAGE 124 |
|
|
LOC OBJECT CODE LINE SOURCE TEXT |
VALUE |
|
00563 ;; set target frequency depending on note number |
4742 500C 00564 movf IRQ_TMP2, W |
4744 BEE8 00565 btfsc WREG, 7; the note value |
4746 0E7F 00566 movlw 0x7f |
4748 6E0C 00567 movwf IRQ_TMP2 |
00568 |
474A 0E04 00569 movlw TIA_Vx_MODE |
00570 BRA_IFSET PLUSW1, Vx_MODE_KEY_EXTENDED, ACCESS, TIA_SW_Note_KeyMode_Extended |
474C B4E3 M btfsc reg, bit, reg_a |
474E D00D M bra label |
4750 00571 TIA_SW_Note_KeyMode_NonExtended |
4750 90D8 00572 clrc |
4752 0E05 00573 movlw TIA_Vx_KEY_OFFSET |
4754 50E3 00574 movf PLUSW1, W |
4756 5E0C 00575 subwf IRQ_TMP2, F |
4758 0E00 00576 movlw 0x00 |
475A B0D8 00577 skpnc |
475C 0E1F 00578 movlw 0x1f |
475E 640C 00579 cpfsgt IRQ_TMP2, ACCESS |
4760 500C 00580 movf IRQ_TMP2, W |
4762 36E8 00581 rlf WREG, F |
4764 36E8 00582 rlf WREG, F |
4766 34E8 00583 rlf WREG, W |
00584 rgoto TIA_SW_Note_TargetCopy |
4768 D002 M bra label |
00585 |
476A 00586 TIA_SW_Note_KeyMode_Extended |
00587 ;;etendu (7bits to 8bits note) |
476A 90D8 00588 clrc |
476C 340C 00589 rlf IRQ_TMP2, W |
00590 |
476E 00591 TIA_SW_Note_TargetCopy |
476E 6E03 00592 movwf MIOS_PARAMETER1 |
00593 |
4770 0E08 00594 movlw TIA_Vx_TARGET_FRQ_H |
4772 C003 FFE3 00595 movff MIOS_PARAMETER1, PLUSW1 |
4776 0E07 00596 movlw TIA_Vx_TARGET_FRQ_L |
4778 6AE3 00597 clrf PLUSW1 |
477A 00598 TIA_SW_Note_End |
477A 0012 00599 return |
00600 |
00601 |
00602 ;; -------------------------------------------------------------------------- |
00603 ;; This function handles the Note Pitch |
00604 ;; -------------------------------------------------------------------------- |
477C 00605 TIA_SW_Pitch |
00606 ;; skip Pitchbender+Finetune processing if PITCHRANGE == zero |
477C 0E0D 00607 movlw TIA_Vx_PITCHRANGE |
477E 50E3 00608 movf PLUSW1, W |
4780 E04D 00609 bz TIA_SW_Pitch_MOD |
00610 |
00611 |
00612 ;; result stored in IRQ_TMP[12] |
4782 6A0B 00613 clrf IRQ_TMP1 |
gpasm-0.13.7 beta setup_tia_cartridge.asm1-30-2014 10:42:05 PAGE 125 |
|
|
LOC OBJECT CODE LINE SOURCE TEXT |
VALUE |
|
4784 6A0C 00614 clrf IRQ_TMP2 |
4786 6A0D 00615 clrf IRQ_TMP3 |
00616 |
00617 ;; calc IRQ_TMP[12] = pitchbender (9-bit signed) |
4788 0E0B 00618 movlw TIA_Vx_PITCHBENDER |
478A 50E3 00619 movf PLUSW1, W |
478C 6E0B 00620 movwf IRQ_TMP1 |
478E E007 00621 bz TIA_SW_Pitch_NoPitchBender |
4790 00622 TIA_SW_Pitch_PitchBender |
4790 90D8 00623 clrc ; multiply with 2 |
4792 BE0B 00624 btfsc IRQ_TMP1, 7 |
4794 80D8 00625 setc |
4796 360B 00626 rlf IRQ_TMP1, F |
4798 360D 00627 rlf IRQ_TMP3, F |
479A B00D 00628 btfsc IRQ_TMP3, 0 |
479C 1E0B 00629 comf IRQ_TMP1, F |
479E 00630 TIA_SW_Pitch_NoPitchBender |
00631 |
479E 90D8 00632 clrc |
00633 ;; skip tuning if IRQ_TMP[12] == zero |
47A0 500B 00634 movf IRQ_TMP1, W |
47A2 100C 00635 iorwf IRQ_TMP2, W |
47A4 E03B 00636 bz TIA_SW_Pitch_MOD |
00637 |
47A6 500B 00638 movf IRQ_TMP1, W |
47A8 6FFA 00639 movwf MUL_B_L, BANKED |
47AA 500C 00640 movf IRQ_TMP2, W |
47AC 6FFB 00641 movwf MUL_B_H, BANKED |
00642 |
00643 ;; get f_in[target], save it in IRQ_TMP[12] |
47AE 90D8 00644 clrc |
47B0 0E0C 00645 movlw TIA_Vx_TRANSPOSE |
47B2 50E3 00646 movf PLUSW1, W |
47B4 0840 00647 sublw 0x40 |
47B6 0AFF 00648 xorlw 0xff |
47B8 6E0E 00649 movwf IRQ_TMP4 |
47BA 0E10 00650 movlw TIA_Vx_NOTE |
47BC 50E3 00651 movf PLUSW1, W |
47BE 240E 00652 addwf IRQ_TMP4, W |
00653 ;; add pitchrange depending on direction with saturation |
00654 BRA_IFSET IRQ_TMP3, 0, ACCESS, TIA_SW_Pitch_Decrease |
47C0 B00D M btfsc reg, bit, reg_a |
47C2 D009 M bra label |
47C4 00655 TIA_SW_Pitch_Increase |
00656 |
47C4 0F01 00657 addlw 1 |
47C6 6E0C 00658 movwf IRQ_TMP2 |
47C8 0E0D 00659 movlw TIA_Vx_PITCHRANGE |
47CA 50E3 00660 movf PLUSW1, W |
47CC 240C 00661 addwf IRQ_TMP2, W |
47CE BEE8 00662 btfsc WREG, 7 |
47D0 0E7F 00663 movlw 0x7f |
47D2 6E0C 00664 movwf IRQ_TMP2 |
00665 rgoto TIA_SW_Pitch_Increase_Cont |
gpasm-0.13.7 beta setup_tia_cartridge.asm1-30-2014 10:42:05 PAGE 126 |
|
|
LOC OBJECT CODE LINE SOURCE TEXT |
VALUE |
|
47D4 D006 M bra label |
47D6 00666 TIA_SW_Pitch_Decrease |
47D6 6E0C 00667 movwf IRQ_TMP2 |
47D8 0E0D 00668 movlw TIA_Vx_PITCHRANGE |
47DA 04E3 00669 decf PLUSW1, W |
47DC 5E0C 00670 subwf IRQ_TMP2, F |
47DE BE0C 00671 btfsc IRQ_TMP2, 7 |
47E0 6A0C 00672 clrf IRQ_TMP2 |
47E2 00673 TIA_SW_Pitch_Increase_Cont |
00674 ;; set target frequency depending on note number |
47E2 500C 00675 movf IRQ_TMP2, W |
47E4 BEE8 00676 btfsc WREG, 7; the note value |
47E6 0E7F 00677 movlw 0x7f |
47E8 6E0C 00678 movwf IRQ_TMP2 |
00679 |
47EA 0E04 00680 movlw TIA_Vx_MODE |
00681 BRA_IFSET PLUSW1, Vx_MODE_KEY_EXTENDED, ACCESS, TIA_SW_Pitch_KeyMode_Extended |
47EC B4E3 M btfsc reg, bit, reg_a |
47EE D00B M bra label |
47F0 00682 TIA_SW_Pitch_KeyMode_NonExtended |
47F0 90D8 00683 clrc |
47F2 0E05 00684 movlw TIA_Vx_KEY_OFFSET |
47F4 50E3 00685 movf PLUSW1, W |
47F6 5E0C 00686 subwf IRQ_TMP2, F |
47F8 0E1F 00687 movlw 0x1f |
47FA 640C 00688 cpfsgt IRQ_TMP2, ACCESS |
47FC 500C 00689 movf IRQ_TMP2, W |
47FE 36E8 00690 rlf WREG, F |
4800 36E8 00691 rlf WREG, F |
4802 34E8 00692 rlf WREG, W |
00693 rgoto TIA_SW_Pitch_KeyMode_End |
4804 D002 M bra label |
00694 |
4806 00695 TIA_SW_Pitch_KeyMode_Extended |
00696 ;;etendu (7bits to 8bits note) |
4806 90D8 00697 clrc |
4808 340C 00698 rlf IRQ_TMP2, W |
00699 |
480A 00700 TIA_SW_Pitch_KeyMode_End |
480A 6E04 00701 movwf MIOS_PARAMETER2 |
480C 6A03 00702 clrf MIOS_PARAMETER1 |
00703 |
00704 ;; result: low-byte in WREG and MIOS_PARAMETER1, high-byte in MIOS_PARAMETER2 |
00705 |
00706 ;; add and multiply to target frequency |
480E CFE2 FFDA 00707 movff FSR1H, FSR2H |
4812 50E1 00708 movf FSR1L, W |
4814 0F07 00709 addlw TIA_Vx_TARGET_FRQ_L |
4816 6ED9 00710 movwf FSR2L |
4818 ECF2 F027 00711 call TIA_SW_Hlp_AddMul |
00712 |
481C 00713 TIA_SW_Pitch_MOD |
481C 0E04 00714 movlw TIA_Vx_MODE |
00715 BRA_IFCLR PLUSW1, Vx_MODE_ENV2PITCH_ON, ACCESS, TIA_SW_Pitch_Mods |
gpasm-0.13.7 beta setup_tia_cartridge.asm1-30-2014 10:42:05 PAGE 127 |
|
|
LOC OBJECT CODE LINE SOURCE TEXT |
VALUE |
|
481E AAE3 M btfss reg, bit, reg_a |
4820 D045 M bra label |
00716 |
00717 ;; store dedicated enveloppe value in MUL_A_[LH],sign in MIOS_PARAMETER3 |
4822 0E40 00718 movlw 0x40 |
4824 B10E 00719 btfsc TIA_SW_VOICE, 0 |
4826 0E80 00720 movlw 0x80 |
4828 ECB8 F026 00721 call TIA_SW_Hlp_GetMOD |
00722 ;; result in IRQ_TMP[123] |
482C C00D F005 00723 movff IRQ_TMP3, MIOS_PARAMETER3 |
4830 500C 00724 movf IRQ_TMP2, W |
00725 ;btfsc MIOS_PARAMETER3, 0 |
00726 ;comf IRQ_TMP2, W |
4832 0B7F 00727 andlw 0x7f |
4834 6FF9 00728 movwf MUL_A_H |
4836 500B 00729 movf IRQ_TMP1, W |
00730 ;btfsc MIOS_PARAMETER3, 0 |
00731 ;comf IRQ_TMP1, W |
4838 6FF8 00732 movwf MUL_A_L |
00733 |
00734 ;; modulate amplitude |
00735 ;; assigned LFOs and ENVs in WREG |
483A 0E16 00736 movlw TIA_Vx_PITCH_MOD |
483C 50E3 00737 movf PLUSW1, W |
483E 0B3F 00738 andlw 0x3f |
4840 ECB8 F026 00739 call TIA_SW_Hlp_GetMOD |
00740 ;; result in IRQ_TMP[123] |
00741 |
4844 00742 TIA_SW_Pitch_Mods_Env_AxB |
00743 ;; Modulation mode |
4844 0E2A 00744 movlw TIA_Vx_ENV_OPTION |
4846 50E3 00745 movf PLUSW1, W |
4848 0B03 00746 andlw 0x03 |
484A 28E8 00747 incf WREG, W |
00748 BRA_IFCLR WREG, ENVAUDx_MODTYP_AxB, ACCESS, TIA_SW_Pitch_Mods_Env_AB |
484C A2E8 M btfss reg, bit, reg_a |
484E D010 M bra label |
00749 BRA_IFSET WREG, ENVAUDx_MODTYP_AB, ACCESS,TIA_SW_Pitch_Mods_Env_AxB_NotDoubled |
4850 B0E8 M btfsc reg, bit, reg_a |
4852 D002 M bra label |
00750 ;; Double the Dedicated ENVAUDx for AxB only Mode |
4854 37F8 00751 rlf MUL_A_L, F |
4856 37F9 00752 rlf MUL_A_H, F |
4858 00753 TIA_SW_Pitch_Mods_Env_AxB_NotDoubled |
4858 500C 00754 movf IRQ_TMP2, W |
485A 6FFB 00755 movwf MUL_B_H |
485C 500B 00756 movf IRQ_TMP1, W |
485E 6FFA 00757 movwf MUL_B_L |
00758 ;; multiplication |
4860 ECDE F019 00759 call MATH_MUL16_16 |
4864 51FE 00760 movf MUL_R_2, W, BANKED |
4866 6E0B 00761 movwf IRQ_TMP1 |
4868 51FF 00762 movf MUL_R_3, W, BANKED |
486A 6E0C 00763 movwf IRQ_TMP2 |
gpasm-0.13.7 beta setup_tia_cartridge.asm1-30-2014 10:42:05 PAGE 128 |
|
|
LOC OBJECT CODE LINE SOURCE TEXT |
VALUE |
|
00764 ;; process sign |
486C 5005 00765 movf MIOS_PARAMETER3, W |
486E 1A0D 00766 xorwf IRQ_TMP3, F |
00767 |
4870 00768 TIA_SW_Pitch_Mods_Env_AB |
00769 ;; Modulation mode |
4870 0E2A 00770 movlw TIA_Vx_ENV_OPTION |
4872 50E3 00771 movf PLUSW1, W |
4874 0B03 00772 andlw 0x03 |
4876 28E8 00773 incf WREG, W |
00774 BRA_IFCLR WREG, ENVAUDx_MODTYP_AB, ACCESS,TIA_SW_Pitch_Mods_Cont |
4878 A0E8 M btfss reg, bit, reg_a |
487A D01E M bra label |
487C 5005 00775 movf MIOS_PARAMETER3, W |
487E 180D 00776 xorwf IRQ_TMP3, W |
4880 E00D 00777 bz TIA_SW_Pitch_Mods_Env_AB_Add |
4882 00778 TIA_SW_Pitch_Mods_Env_AB_Sub |
4882 500B 00779 movf IRQ_TMP1, W |
4884 5DF8 00780 subwf MUL_A_L, W |
4886 6E0B 00781 movwf IRQ_TMP1 |
4888 500C 00782 movf IRQ_TMP2, W |
488A 59F9 00783 subwfb MUL_A_H, W |
488C 6E0C 00784 movwf IRQ_TMP2 |
488E E203 00785 bc TIA_SW_Pitch_Mods_Env_AB_Sub_NoCarry |
4890 1E0B 00786 comf IRQ_TMP1, F ;;Sign already in IRQ_TMP3 |
4892 1E0C 00787 comf IRQ_TMP2, F |
00788 rgoto TIA_SW_Pitch_Mods_Cont |
4894 D011 M bra label |
4896 00789 TIA_SW_Pitch_Mods_Env_AB_Sub_NoCarry |
4896 C005 F00D 00790 movff MIOS_PARAMETER3, IRQ_TMP3 |
00791 rgoto TIA_SW_Pitch_Mods_Cont |
489A D00E M bra label |
00792 |
489C 00793 TIA_SW_Pitch_Mods_Env_AB_Add |
489C 51F8 00794 movf MUL_A_L, W |
489E 260B 00795 addwf IRQ_TMP1, F |
48A0 51F9 00796 movf MUL_A_H, W |
48A2 220C 00797 addwfc IRQ_TMP2, F |
00798 ;; saturate on overflow (set frequency to zero to avoid unwanted HF beeps) |
48A4 E309 00799 bnc TIA_SW_Pitch_Mods_Cont |
48A6 680B 00800 setf IRQ_TMP1 |
48A8 680C 00801 setf IRQ_TMP2 |
00802 rgoto TIA_SW_Pitch_Mods_Cont |
48AA D006 M bra label |
00803 |
48AC 00804 TIA_SW_Pitch_Mods |
00805 ;; modulate pitch |
00806 ;; assigned LFOs and ENVs in WREG |
48AC 0E16 00807 movlw TIA_Vx_PITCH_MOD |
48AE 50E3 00808 movf PLUSW1, W |
48B0 0B3F 00809 andlw 0x3f |
48B2 E00C 00810 bz TIA_SW_Pitch_CopyFrq |
48B4 ECB8 F026 00811 call TIA_SW_Hlp_GetMOD |
00812 ;; unsigned result in IRQ_TMP[12] |
gpasm-0.13.7 beta setup_tia_cartridge.asm1-30-2014 10:42:05 PAGE 129 |
|
|
LOC OBJECT CODE LINE SOURCE TEXT |
VALUE |
|
00813 ;; sign in IRQ_TMP3[0] |
00814 |
48B8 00815 TIA_SW_Pitch_Mods_Cont |
00816 ;; skip tuning if IRQ_TMP[12] == zero |
48B8 500B 00817 movf IRQ_TMP1, W |
48BA 100C 00818 iorwf IRQ_TMP2, W |
48BC E007 00819 bz TIA_SW_Pitch_CopyFrq |
00820 |
00821 ;; add to target frequency |
48BE CFE2 FFDA 00822 movff FSR1H, FSR2H |
48C2 50E1 00823 movf FSR1L, W |
48C4 0F07 00824 addlw TIA_Vx_TARGET_FRQ_L |
48C6 6ED9 00825 movwf FSR2L |
48C8 EC0E F028 00826 call TIA_SW_Hlp_Add16 |
00827 |
48CC 00828 TIA_SW_Pitch_CopyFrq |
48CC 0E03 00829 movlw TIA_Vx_STAT |
00830 BRA_IFSET PLUSW1, Vx_STAT_PORTA_ENABLE, ACCESS, TIA_SW_Pitch_End |
48CE B8E3 M btfsc reg, bit, reg_a |
48D0 D017 M bra label |
00831 |
48D2 0E07 00832 movlw TIA_Vx_TARGET_FRQ_L |
48D4 CFE3 F003 00833 movff PLUSW1, MIOS_PARAMETER1 |
48D8 0E08 00834 movlw TIA_Vx_TARGET_FRQ_H |
48DA CFE3 F004 00835 movff PLUSW1, MIOS_PARAMETER2 |
00836 |
48DE 0E09 00837 movlw TIA_Vx_FRQ_L |
48E0 C003 FFE3 00838 movff MIOS_PARAMETER1, PLUSW1 |
48E4 0E0A 00839 movlw TIA_Vx_FRQ_H |
48E6 C004 FFE3 00840 movff MIOS_PARAMETER2, PLUSW1 |
00841 |
48EA EE21 F002 00842 lfsr FSR2, TIA_AUDF0 |
48EE B10E 00843 btfsc TIA_SW_VOICE, 0 |
48F0 EE21 F003 00844 lfsr FSR2, TIA_AUDF1 |
00845 |
48F4 1C04 00846 comf MIOS_PARAMETER2, W |
48F6 30E8 00847 rrf WREG, W |
48F8 30E8 00848 rrf WREG, W |
48FA 30E8 00849 rrf WREG, W |
48FC 0B1F 00850 andlw 0x1f |
48FE 6EDF 00851 movwf INDF2 |
00852 |
4900 00853 TIA_SW_Pitch_End |
4900 0012 00854 return |
00855 |
00856 |
00857 ;; -------------------------------------------------------------------------- |
00858 ;; This function handles the Portamento |
00859 ;; -------------------------------------------------------------------------- |
4902 00860 TIA_SW_Porta |
4902 0E03 00861 movlw TIA_Vx_STAT |
00862 BRA_IFCLR PLUSW1, Vx_STAT_PORTA_ENABLE, ACCESS, TIA_SW_Porta_End |
4904 A8E3 M btfss reg, bit, reg_a |
4906 D0A0 M bra label |
gpasm-0.13.7 beta setup_tia_cartridge.asm1-30-2014 10:42:05 PAGE 130 |
|
|
LOC OBJECT CODE LINE SOURCE TEXT |
VALUE |
|
00863 |
4908 EE21 F002 00864 lfsr FSR2, TIA_AUDF0 |
490C B10E 00865 btfsc TIA_SW_VOICE, 0 |
490E EE21 F003 00866 lfsr FSR2, TIA_AUDF1 |
00867 |
00868 ;; branch depending on portamento option |
4912 0E04 00869 movlw TIA_Vx_MODE |
00870 BRA_IFCLR PLUSW1, Vx_MODE_PORTA_CONST, ACCESS, TIA_SW_Porta_NORM |
4914 A2E3 M btfss reg, bit, reg_a |
4916 D04C M bra label |
00871 ;; ------------------------------------------------------------------ |
00872 ;; "constant" portamento mode (constant glide time) |
4918 00873 TIA_SW_Porta_CONST |
00874 |
00875 ;; counter -> MUL_A_[LH] |
4918 0E1A 00876 movlw TIA_Vx_PORTA_CTR_L |
491A CFE3 F1F8 00877 movff PLUSW1, MUL_A_L |
491E 0E1B 00878 movlw TIA_Vx_PORTA_CTR_H |
4920 CFE3 F1F9 00879 movff PLUSW1, MUL_A_H |
00880 ;; Add delay to portamento counter -> MUL_A_[LH] |
00881 ;; get portamento delay from envelope table |
4924 0E0E 00882 movlw TIA_Vx_PORTA_RATE |
4926 50E3 00883 movf PLUSW1, W |
4928 ECA3 F030 00884 call TIA_ENV_TABLE_Get |
00885 ;; add result to counter |
492C 90D8 00886 clrc |
492E 5003 00887 movf MIOS_PARAMETER1, W |
4930 27F8 00888 addwf MUL_A_L, F |
4932 5004 00889 movf MIOS_PARAMETER2, W |
4934 23F9 00890 addwfc MUL_A_H, F |
4936 E23B 00891 bc TIA_SW_Porta_CONST_Cont_Reached |
00892 |
4938 0E1A 00893 movlw TIA_Vx_PORTA_CTR_L |
493A C1F8 FFE3 00894 movff MUL_A_L, PLUSW1 |
493E 0E1B 00895 movlw TIA_Vx_PORTA_CTR_H |
4940 C1F9 FFE3 00896 movff MUL_A_H, PLUSW1 |
00897 |
00898 ;; target frequency -> MIOS_PARAMETER[12] |
4944 0E07 00899 movlw TIA_Vx_TARGET_FRQ_L |
4946 CFE3 F003 00900 movff PLUSW1, MIOS_PARAMETER1 |
494A 0E08 00901 movlw TIA_Vx_TARGET_FRQ_H |
494C CFE3 F004 00902 movff PLUSW1, MIOS_PARAMETER2 |
00903 |
00904 ;; get difference between target and previous frequency -> IRQ_TMP[12] |
4950 0E1C 00905 movlw TIA_Vx_PORTA_FRQ_L |
4952 50E3 00906 movf PLUSW1, W |
4954 5C03 00907 subwf MIOS_PARAMETER1, W |
4956 6E0B 00908 movwf IRQ_TMP1 |
4958 0E1D 00909 movlw TIA_Vx_PORTA_FRQ_H |
495A 50E3 00910 movf PLUSW1, W |
495C 5804 00911 subwfb MIOS_PARAMETER2, W |
495E 6E0C 00912 movwf IRQ_TMP2 |
00913 ;; convert IRQ_TMP[12] to absolute value |
4960 900D 00914 bcf IRQ_TMP3, 0 |
gpasm-0.13.7 beta setup_tia_cartridge.asm1-30-2014 10:42:05 PAGE 131 |
|
|
LOC OBJECT CODE LINE SOURCE TEXT |
VALUE |
|
4962 A0D8 00915 btfss STATUS, C |
4964 800D 00916 bsf IRQ_TMP3, 0 |
4966 A0D8 00917 btfss STATUS, C |
4968 1E0B 00918 comf IRQ_TMP1, F |
496A A0D8 00919 btfss STATUS, C |
496C 1E0C 00920 comf IRQ_TMP2, F |
00921 ;; result in IRQ_TMP[12], sign in IRQ_TMP3[0] |
00922 |
00923 ;; increment four to ensure that target will be reached |
496E 0E01 00924 movlw 1 |
4970 260B 00925 addwf IRQ_TMP1, F |
4972 0E00 00926 movlw 0 |
4974 220C 00927 addwfc IRQ_TMP2, F |
4976 C00B F1FA 00928 movff IRQ_TMP1, MUL_B_L |
497A C00C F1FB 00929 movff IRQ_TMP2, MUL_B_H |
00930 |
00931 ;; calc MUL_A_[LH] * MUL_B_[LH] |
497E ECDE F019 00932 call MATH_MUL16_16 |
00933 ;; result in MUL_R_2 (low-byte) and MUL_R_3 (high-byte) |
00934 |
00935 ;; branch depending on direction |
00936 BRA_IFSET IRQ_TMP3, 0, ACCESS, TIA_SW_Porta_CONST_Down |
4982 B00D M btfsc reg, bit, reg_a |
4984 D009 M bra label |
4986 00937 TIA_SW_Porta_CONST_Up |
00938 ;; add scaled value to starting frequency |
4986 0E1C 00939 movlw TIA_Vx_PORTA_FRQ_L |
4988 50E3 00940 movf PLUSW1, W |
498A 25FE 00941 addwf MUL_R_2, W, BANKED |
498C 6E0B 00942 movwf IRQ_TMP1 |
00943 |
498E 0E1D 00944 movlw TIA_Vx_PORTA_FRQ_H |
4990 50E3 00945 movf PLUSW1, W |
4992 21FF 00946 addwfc MUL_R_3, W, BANKED |
4994 6E0C 00947 movwf IRQ_TMP2 |
00948 |
00949 ;; continue at normal portamento routine |
00950 rgoto TIA_SW_Porta_CONST_Up_Cont |
4996 D033 M bra label |
00951 |
4998 00952 TIA_SW_Porta_CONST_Down |
00953 ;; subtract scaled value from starting frequency |
4998 0E1C 00954 movlw TIA_Vx_PORTA_FRQ_L |
499A CFE3 F00B 00955 movff PLUSW1, IRQ_TMP1 |
499E 0E1D 00956 movlw TIA_Vx_PORTA_FRQ_H |
49A0 CFE3 F00C 00957 movff PLUSW1, IRQ_TMP2 |
00958 |
49A4 51FE 00959 movf MUL_R_2, W, BANKED |
49A6 5E0B 00960 subwf IRQ_TMP1, F |
49A8 51FF 00961 movf MUL_R_3, W, BANKED |
49AA 5A0C 00962 subwfb IRQ_TMP2, F |
00963 |
00964 ;; continue at normal portamento routine |
00965 rgoto TIA_SW_Porta_CONST_Down_Cont |
gpasm-0.13.7 beta setup_tia_cartridge.asm1-30-2014 10:42:05 PAGE 132 |
|
|
LOC OBJECT CODE LINE SOURCE TEXT |
VALUE |
|
49AC D033 M bra label |
00966 |
49AE 00967 TIA_SW_Porta_CONST_Cont_Reached |
49AE D038 00968 bra TIA_SW_Porta_Cont_Reached |
00969 |
00970 ;; ------------------------------------------------------------------ |
00971 ;; "normal" portamento mode (non-constant glide time) |
49B0 00972 TIA_SW_Porta_NORM |
00973 ;; multiply rate with current frequency |
00974 ;; get portamento multiplier from envelope table -> MUL_A |
49B0 0E0E 00975 movlw TIA_Vx_PORTA_RATE |
49B2 50E3 00976 movf PLUSW1, W |
49B4 ECA3 F030 00977 call TIA_ENV_TABLE_Get |
49B8 C003 F1F8 00978 movff MIOS_PARAMETER1, MUL_A_L |
49BC C004 F1F9 00979 movff MIOS_PARAMETER2, MUL_A_H |
00980 |
00981 ;; result: low byte in WREG and MIOS_PARAMETER1, high byte in MIOS_PARAMETER2 |
00982 |
00983 ;; get current frequency -> MUL_B |
00984 |
49C0 0E09 00985 movlw TIA_Vx_FRQ_L |
49C2 CFE3 F1FA 00986 movff PLUSW1, MUL_B_L |
49C6 CFE3 F00B 00987 movff PLUSW1, IRQ_TMP1 |
49CA 0E0A 00988 movlw TIA_Vx_FRQ_H |
49CC CFE3 F1FB 00989 movff PLUSW1, MUL_B_H |
49D0 CFE3 F00C 00990 movff PLUSW1, IRQ_TMP2 |
00991 |
49D4 ECDE F019 00992 call MATH_MUL16_16 |
00993 ;; result in MUL_R_2 (low-byte) and MUL_R_3 (high-byte) |
00994 ;; ensure that result is != 0 |
49D8 51FE 00995 movf MUL_R_2, W, BANKED |
49DA 11FF 00996 iorwf MUL_R_3, W, BANKED |
49DC B4D8 00997 skpnz |
49DE 2BFE 00998 incf MUL_R_2, F, BANKED |
00999 |
01000 ;; TIA_Vx_FRQ += result (depending on Portamento Direction) |
01001 ;movff MUL_R_2, IRQ_TMP1 |
01002 |
01003 ;; store target frequency in MIOS_PARAMETER[12] |
49E0 0E07 01004 movlw TIA_Vx_TARGET_FRQ_L |
49E2 CFE3 F003 01005 movff PLUSW1, MIOS_PARAMETER1 |
49E6 0E08 01006 movlw TIA_Vx_TARGET_FRQ_H |
49E8 CFE3 F004 01007 movff PLUSW1, MIOS_PARAMETER2 |
01008 |
01009 ;; branch depending on portamento direction |
01010 ;; check if value > current value |
49EC 5003 01011 movf MIOS_PARAMETER1, W |
49EE 5C0B 01012 subwf IRQ_TMP1, W |
49F0 5004 01013 movf MIOS_PARAMETER2, W |
49F2 580C 01014 subwfb IRQ_TMP2, W |
49F4 E20B 01015 bc TIA_SW_Porta_Down |
01016 |
49F6 01017 TIA_SW_Porta_Up ;; decrement FRQ |
49F6 51FE 01018 movf MUL_R_2, W |
gpasm-0.13.7 beta setup_tia_cartridge.asm1-30-2014 10:42:05 PAGE 133 |
|
|
LOC OBJECT CODE LINE SOURCE TEXT |
VALUE |
|
49F8 260B 01019 addwf IRQ_TMP1, F |
49FA 51FF 01020 movf MUL_R_3, W, BANKED |
49FC 220C 01021 addwfc IRQ_TMP2, F |
01022 |
49FE 01023 TIA_SW_Porta_CONST_Up_Cont ; re-used by ENV2 option |
01024 ;; check if value > MAX_VALUE |
49FE 90D8 01025 clrc |
4A00 500B 01026 movf IRQ_TMP1, W |
4A02 5C03 01027 subwf MIOS_PARAMETER1, W |
4A04 500C 01028 movf IRQ_TMP2, W |
4A06 5804 01029 subwfb MIOS_PARAMETER2, W |
4A08 E213 01030 bc TIA_SW_Porta_Cont ; branch to end if MAX_VALUE not reached |
01031 rgoto TIA_SW_Porta_Cont_Reached ; else copy MAX_VALUE into value and finish portamento |
4A0A D00A M bra label |
01032 |
4A0C 01033 TIA_SW_Porta_Down ;; increment FRQ |
4A0C 51FE 01034 movf MUL_R_2, W |
4A0E 5E0B 01035 subwf IRQ_TMP1, F |
4A10 51FF 01036 movf MUL_R_3, W, BANKED |
4A12 5A0C 01037 subwfb IRQ_TMP2, F |
01038 |
4A14 01039 TIA_SW_Porta_CONST_Down_Cont ; re-used by ENV2 option |
01040 ;; check if value < MIN_VALUE |
4A14 90D8 01041 clrc |
4A16 5003 01042 movf MIOS_PARAMETER1, W |
4A18 5C0B 01043 subwf IRQ_TMP1, W |
4A1A 5004 01044 movf MIOS_PARAMETER2, W |
4A1C 580C 01045 subwfb IRQ_TMP2, W |
4A1E E208 01046 bc TIA_SW_Porta_Cont ; branch to end if MIN_VALUE not reached |
01047 ; else copy MIN_VALUE into value and finish portamento |
01048 ;rgoto TIA_SW_Porta_Cont_Reached ; else copy MAX_VALUE into value and finish portamento |
01049 |
4A20 01050 TIA_SW_Porta_Cont_Reached |
4A20 0E07 01051 movlw TIA_Vx_TARGET_FRQ_L |
4A22 CFE3 F00B 01052 movff PLUSW1, IRQ_TMP1 |
01053 |
4A26 0E08 01054 movlw TIA_Vx_TARGET_FRQ_H |
4A28 CFE3 F00C 01055 movff PLUSW1, IRQ_TMP2 |
01056 |
4A2C 0E03 01057 movlw TIA_Vx_STAT |
4A2E 98E3 01058 bcf PLUSW1, Vx_STAT_PORTA_ENABLE |
01059 |
4A30 01060 TIA_SW_Porta_Cont |
01061 |
01062 |
01063 |
01064 ;; Copy Freq |
4A30 0E09 01065 movlw TIA_Vx_FRQ_L |
4A32 C00B FFE3 01066 movff IRQ_TMP1, PLUSW1 |
4A36 0E0A 01067 movlw TIA_Vx_FRQ_H |
4A38 C00C FFE3 01068 movff IRQ_TMP2, PLUSW1 |
01069 |
4A3C 1C0C 01070 comf IRQ_TMP2, W |
4A3E 30E8 01071 rrf WREG, W |
gpasm-0.13.7 beta setup_tia_cartridge.asm1-30-2014 10:42:05 PAGE 134 |
|
|
LOC OBJECT CODE LINE SOURCE TEXT |
VALUE |
|
4A40 30E8 01072 rrf WREG, W |
4A42 30E8 01073 rrf WREG, W |
4A44 0B1F 01074 andlw 0x1f |
4A46 6EDF 01075 movwf INDF2 |
01076 |
4A48 01077 TIA_SW_Porta_End |
4A48 0012 01078 return |
01079 |
01080 ;; -------------------------------------------------------------------------- |
01081 ;; Help Function used from tia_midi.inc and tia_ccin.inc to reset ENV2 |
01082 ;; -------------------------------------------------------------------------- |
4A4A 01083 TIA_SW_Hlp_PortaCTR_Reset |
4A4A C000 F001 01084 movff FSR0, FSR1 |
01085 |
4A4E 0E1A 01086 movlw TIA_Vx_PORTA_CTR_L |
4A50 6AE3 01087 clrf PLUSW1, ACCESS |
4A52 0E1B 01088 movlw TIA_Vx_PORTA_CTR_H |
4A54 6AE3 01089 clrf PLUSW1, ACCESS |
01090 |
4A56 0012 01091 return |
01092 |
01093 ;; -------------------------------------------------------------------------- |
01094 ;; This function handles the amplitude |
01095 ;; -------------------------------------------------------------------------- |
4A58 01096 TIA_SW_Amp |
01097 ;; TIA_AUDCx |
4A58 EE21 F000 01098 lfsr FSR2, TIA_BASE |
4A5C 0E04 01099 movlw 0x04 |
4A5E 250E 01100 addwf TIA_SW_VOICE, W |
4A60 6ED9 01101 movwf FSR2L |
01102 |
01103 |
4A62 01104 TIA_SW_Amp_MasterVol |
01105 ;; Vx volume * Master Volume |
4A62 0E0F 01106 movlw TIA_Vx_VOLUME |
4A64 50E3 01107 movf PLUSW1, W |
4A66 6E0B 01108 movwf IRQ_TMP1 |
4A68 510B 01109 movf TIA_MASTER_VOL, W |
4A6A 0F01 01110 addlw 1 |
4A6C 020B 01111 mulwf IRQ_TMP1 |
4A6E 36F3 01112 rlf PRODL, F |
4A70 34F4 01113 rlf PRODH, W |
4A72 6E03 01114 movwf MIOS_PARAMETER1 |
4A74 B4D8 01115 skpnz |
01116 rgoto TIA_SW_Amp_Gate |
4A76 D090 M bra label |
01117 |
01118 #if 0 |
01119 movlw TIA_Vx_MODE |
01120 BRA_IFCLR PLUSW1, Vx_MODE_ENV2AMP_ON, ACCESS, TIA_SW_Amp_Mods |
01121 |
01122 ;; store dedicated enveloppe value in MUL_A_[LH],sign in MIOS_PARAMETER3 |
01123 movlw 0x40 |
01124 btfsc TIA_SW_VOICE, 0 |
gpasm-0.13.7 beta setup_tia_cartridge.asm1-30-2014 10:42:05 PAGE 135 |
|
|
LOC OBJECT CODE LINE SOURCE TEXT |
VALUE |
|
01125 movlw 0x80 |
01126 call TIA_SW_Hlp_GetMOD |
01127 ;; result in IRQ_TMP[123] |
01128 movff IRQ_TMP3, MIOS_PARAMETER3 |
01129 movf IRQ_TMP2, W |
01130 andlw 0x7f |
01131 movwf MUL_A_H |
01132 movf IRQ_TMP1, W |
01133 movwf MUL_A_L |
01134 |
01135 ;; modulate amplitude |
01136 ;; assigned LFOs and ENVs in WREG |
01137 movlw TIA_Vx_PITCH_MOD |
01138 movf PLUSW1, W |
01139 andlw 0x3f |
01140 call TIA_SW_Hlp_GetMOD |
01141 ;; result in IRQ_TMP[123] |
01142 |
01143 TIA_SW_Amp_Mods_Env_AxB |
01144 ;; Modulation mode |
01145 movlw TIA_Vx_ENV_OPTION |
01146 movf PLUSW1, W |
01147 andlw 0x03 |
01148 incf WREG, W |
01149 BRA_IFCLR WREG, ENVAUDx_MODTYP_AxB, ACCESS, TIA_SW_Amp_Mods_Env_AB |
01150 BRA_IFSET WREG, ENVAUDx_MODTYP_AB, ACCESS,TIA_SW_Amp_Mods_Env_AxB_NotDoubled |
01151 ;; Double the Dedicated ENVAUDx for AxB only Mode |
01152 rlf MUL_A_L, F |
01153 rlf MUL_A_H, F |
01154 TIA_SW_Amp_Mods_Env_AxB_NotDoubled |
01155 movf IRQ_TMP2, W |
01156 movwf MUL_B_H |
01157 movf IRQ_TMP1, W |
01158 movwf MUL_B_L |
01159 ;; multiplication |
01160 call MATH_MUL16_16 |
01161 movf MUL_R_2, W, BANKED |
01162 movwf IRQ_TMP1 |
01163 movf MUL_R_3, W, BANKED |
01164 movwf IRQ_TMP2 |
01165 ;; process sign |
01166 movf MIOS_PARAMETER3, W |
01167 xorwf IRQ_TMP3, F |
01168 |
01169 TIA_SW_Amp_Mods_Env_AB |
01170 ;; Modulation mode |
01171 movlw TIA_Vx_ENV_OPTION |
01172 movf PLUSW1, W |
01173 btfsc TIA_SW_VOICE, 0 |
01174 swapf WREG, W |
01175 andlw 0x03 |
01176 incf WREG, W |
01177 BRA_IFCLR WREG, ENVAUDx_MODTYP_AB, ACCESS,TIA_SW_Amp_Mods_Cont |
01178 movf MIOS_PARAMETER3, W |
gpasm-0.13.7 beta setup_tia_cartridge.asm1-30-2014 10:42:05 PAGE 136 |
|
|
LOC OBJECT CODE LINE SOURCE TEXT |
VALUE |
|
01179 bz TIA_SW_Amp_Mods_Env_AB_Pos |
01180 TIA_SW_Amp_Mods_Env_AB_Neg |
01181 comf MUL_A_L, F |
01182 comf MUL_A_H, F |
01183 movf IRQ_TMP3, W |
01184 bz TIA_SW_Amp_Mods_Env_AB_Pos |
01185 movf IRQ_TMP1, W |
01186 subwf MUL_A_L, W |
01187 movwf IRQ_TMP1 |
01188 movf IRQ_TMP2, W |
01189 subwfb MUL_A_H, W |
01190 movwf IRQ_TMP2 |
01191 clrf IRQ_TMP3 |
01192 bc TIA_SW_Amp_Mods_Cont |
01193 clrf IRQ_TMP1 |
01194 clrf IRQ_TMP2 |
01195 rgoto TIA_SW_Amp_Mods_Cont |
01196 |
01197 TIA_SW_Amp_Mods_Env_AB_Pos |
01198 movf MUL_A_L, W |
01199 addwf IRQ_TMP1, F |
01200 movf MUL_A_H, W |
01201 addwfc IRQ_TMP2, F |
01202 TIA_SW_Amp_Mods_Env_AB_Set |
01203 ;; saturate on overflow (set frequency to zero to avoid unwanted HF beeps) |
01204 bnc TIA_SW_Amp_Mods_Cont |
01205 setf IRQ_TMP1 |
01206 setf IRQ_TMP2 |
01207 rgoto TIA_SW_Amp_Mods_Cont |
01208 |
01209 TIA_SW_Amp_Mods |
01210 ;; modulate pitch |
01211 ;; assigned LFOs and ENVs in WREG |
01212 movlw TIA_Vx_PITCH_MOD |
01213 movf PLUSW1, W |
01214 andlw 0x3f |
01215 bz TIA_SW_Amp_CopyFrq |
01216 call TIA_SW_Hlp_GetMOD |
01217 ;; unsigned result in IRQ_TMP[12] |
01218 ;; sign in IRQ_TMP3[0] |
01219 |
01220 TIA_SW_Amp_Mods_Cont |
01221 ;; skip tuning if IRQ_TMP[12] == zero |
01222 movf IRQ_TMP1, W |
01223 iorwf IRQ_TMP2, W |
01224 bz TIA_SW_Amp_Mods_End |
01225 |
01226 |
01227 #else |
01228 |
4A78 01229 TIA_SW_Amp_Mods |
4A78 0E04 01230 movlw TIA_Vx_MODE |
01231 BRA_IFCLR PLUSW1, Vx_MODE_ENV2AMP_ON, ACCESS, TIA_SW_Amp_Mods_Cont |
4A7A A8E3 M btfss reg, bit, reg_a |
gpasm-0.13.7 beta setup_tia_cartridge.asm1-30-2014 10:42:05 PAGE 137 |
|
|
LOC OBJECT CODE LINE SOURCE TEXT |
VALUE |
|
4A7C D03D M bra label |
01232 |
01233 ;; Modulation type in MIOS_PARAMETER3 |
4A7E 0E2A 01234 movlw TIA_Vx_ENV_OPTION |
4A80 50E3 01235 movf PLUSW1, W |
4A82 0B03 01236 andlw 0x03 |
4A84 6E05 01237 movwf MIOS_PARAMETER3 |
4A86 2A05 01238 incf MIOS_PARAMETER3, F |
01239 |
01240 ;; prepare enveloppe value in MIOS_PARAMETER2 |
01241 ;; env2amp in WREG |
4A88 0E40 01242 movlw 0x40 |
4A8A B10E 01243 btfsc TIA_SW_VOICE, 0 |
4A8C 0E80 01244 movlw 0x80 |
4A8E ECB8 F026 01245 call TIA_SW_Hlp_GetMOD |
01246 ;; result in IRQ_TMP[123] |
4A92 500C 01247 movf IRQ_TMP2, W |
4A94 B00D 01248 btfsc IRQ_TMP3, 0 |
4A96 1C0C 01249 comf IRQ_TMP2, W |
4A98 0B7F 01250 andlw 0x7f |
4A9A 6E04 01251 movwf MIOS_PARAMETER2 |
01252 |
01253 ;; modulate amplitude |
01254 ;; assigned LFOs and ENVs in WREG |
4A9C 0E17 01255 movlw TIA_Vx_AMP_MOD |
4A9E 50E3 01256 movf PLUSW1, W |
4AA0 0B3F 01257 andlw 0x3f |
4AA2 ECB8 F026 01258 call TIA_SW_Hlp_GetMOD |
01259 ;; result in IRQ_TMP[123] |
01260 |
01261 |
4AA6 01262 TIA_SW_Amp_Mods_Env_AxB |
01263 BRA_IFCLR MIOS_PARAMETER3, ENVAUDx_MODTYP_AxB, ACCESS, TIA_SW_Amp_Mods_Env_AB |
4AA6 A205 M btfss reg, bit, reg_a |
4AA8 D017 M bra label |
01264 BRA_IFSET MIOS_PARAMETER3, ENVAUDx_MODTYP_AB, ACCESS, TIA_SW_Amp_Mods_Env_AB_AxB |
4AAA B005 M btfsc reg, bit, reg_a |
4AAC D010 M bra label |
4AAE 3604 01265 rlcf MIOS_PARAMETER2, F |
4AB0 0E3F 01266 movlw 0x3f |
4AB2 6EF4 01267 movwf PRODH |
4AB4 6AF3 01268 clrf PRODL |
4AB6 EC32 F027 01269 call TIA_SW_Hlp_AddOffset16 |
01270 ;; result in IRQ_TMP[12] |
4ABA 500C 01271 movf IRQ_TMP2, W |
4ABC BE0C 01272 btfsc IRQ_TMP2, 7 |
4ABE 0E7F 01273 movlw 0x7f |
01274 |
4AC0 0204 01275 mulwf MIOS_PARAMETER2 |
4AC2 36F3 01276 rlf PRODL, F |
4AC4 34F4 01277 rlf PRODH, W |
4AC6 BEE8 01278 btfsc WREG, 7 |
4AC8 0E7F 01279 movlw 0x7f |
4ACA 6E04 01280 movwf MIOS_PARAMETER2 |
gpasm-0.13.7 beta setup_tia_cartridge.asm1-30-2014 10:42:05 PAGE 138 |
|
|
LOC OBJECT CODE LINE SOURCE TEXT |
VALUE |
|
01281 rgoto TIA_SW_Amp_Mods_Env_Cont |
4ACC D00C M bra label |
01282 |
4ACE 01283 TIA_SW_Amp_Mods_Env_AB_AxB |
4ACE 500C 01284 movf IRQ_TMP2, W |
4AD0 0204 01285 mulwf MIOS_PARAMETER2 |
4AD2 50F4 01286 movf PRODH, W |
4AD4 6E0C 01287 movwf IRQ_TMP2 |
4AD6 6A0B 01288 clrf IRQ_TMP1 |
01289 |
4AD8 01290 TIA_SW_Amp_Mods_Env_AB |
4AD8 3004 01291 rrf MIOS_PARAMETER2, W |
4ADA EC2E F027 01292 call TIA_SW_Hlp_AddOffset |
01293 ;; result in IRQ_TMP[12] |
4ADE 500C 01294 movf IRQ_TMP2, W |
4AE0 BE0C 01295 btfsc IRQ_TMP2, 7 |
4AE2 0E7F 01296 movlw 0x7f |
4AE4 6E04 01297 movwf MIOS_PARAMETER2 |
01298 |
4AE6 01299 TIA_SW_Amp_Mods_Env_Cont |
4AE6 5003 01300 movf MIOS_PARAMETER1, W |
4AE8 04E8 01301 decf WREG, W |
4AEA 0204 01302 mulwf MIOS_PARAMETER2 |
4AEC 36F3 01303 rlf PRODL, F |
4AEE 34F4 01304 rlf PRODH, W |
4AF0 BEE8 01305 btfsc WREG, 7 |
4AF2 0E7F 01306 movlw 0x7f |
4AF4 6E03 01307 movwf MIOS_PARAMETER1 |
01308 rgoto TIA_SW_Amp_Mods_End |
4AF6 D00E M bra label |
01309 |
4AF8 01310 TIA_SW_Amp_Mods_Cont |
01311 ;; modulate amplitude |
01312 ;; assigned LFOs and ENVs in WREG |
4AF8 0E17 01313 movlw TIA_Vx_AMP_MOD |
4AFA 50E3 01314 movf PLUSW1, W |
4AFC 0B3F 01315 andlw 0x3f |
4AFE E00A 01316 bz TIA_SW_Amp_Mods_End |
4B00 ECB8 F026 01317 call TIA_SW_Hlp_GetMOD |
01318 ;; result in IRQ_TMP[123] |
4B04 B00D 01319 btfsc IRQ_TMP3, 0 |
4B06 6A03 01320 clrf MIOS_PARAMETER1 |
4B08 5003 01321 movf MIOS_PARAMETER1, W |
4B0A 020C 01322 mulwf IRQ_TMP2 |
4B0C 44F4 01323 rlncf PRODH, W |
4B0E BEE8 01324 btfsc WREG, 7 |
4B10 0E7F 01325 movlw 0x7f |
4B12 6E03 01326 movwf MIOS_PARAMETER1 |
01327 #endif |
4B14 01328 TIA_SW_Amp_Mods_End |
01329 |
4B14 0E03 01330 movlw TIA_Vx_STAT |
01331 BRA_IFSET PLUSW1, Vx_STAT_ENV_ACTIVE, ACCESS, TIA_SW_Amp_Vel |
4B16 BCE3 M btfsc reg, bit, reg_a |
gpasm-0.13.7 beta setup_tia_cartridge.asm1-30-2014 10:42:05 PAGE 139 |
|
|
LOC OBJECT CODE LINE SOURCE TEXT |
VALUE |
|
4B18 D002 M bra label |
01332 BRA_IFCLR PLUSW1, Vx_STAT_GATE_NOTE_ON, ACCESS, TIA_SW_Amp_Vel_End |
4B1A AAE3 M btfss reg, bit, reg_a |
4B1C D03D M bra label |
4B1E 01333 TIA_SW_Amp_Vel |
4B1E 0E04 01334 movlw TIA_Vx_MODE |
01335 BRA_IFCLR PLUSW1, Vx_MODE_VEL2AMP_ON, ACCESS, TIA_SW_Amp_Vel_End |
4B20 A6E3 M btfss reg, bit, reg_a |
4B22 D03A M bra label |
01336 ;; Velocity calc |
4B24 0E29 01337 movlw TIA_Vx_DEPTH_VELOCITY |
4B26 50E3 01338 movf PLUSW1, W |
4B28 6E0C 01339 movwf IRQ_TMP2 |
4B2A 0A40 01340 xorlw 0x40 |
4B2C E035 01341 bz TIA_SW_Amp_Vel_End |
01342 |
4B2E 6A0D 01343 clrf IRQ_TMP3 |
4B30 0E29 01344 movlw TIA_Vx_DEPTH_VELOCITY |
4B32 ACE3 01345 btfss PLUSW1, 6, ACCESS |
4B34 800D 01346 bsf IRQ_TMP3, 0 |
01347 |
4B36 500C 01348 movf IRQ_TMP2, W |
4B38 0B3F 01349 andlw 0x3f |
01350 ;; depth * velocity |
4B3A 90D8 01351 clrc |
4B3C 34E8 01352 rlf WREG, W |
01353 ;addlw 2 |
01354 ;movwf IRQ_TMP2 |
01355 |
4B3E B00D 01356 btfsc IRQ_TMP3, 0, ACCESS |
01357 rgoto TIA_SW_Amp_Vel_Neg |
4B40 D01A M bra label |
01358 |
4B42 01359 TIA_SW_Amp_Vel_Pos |
4B42 0F02 01360 addlw 2 |
4B44 6E0C 01361 movwf IRQ_TMP2 |
01362 |
4B46 0E28 01363 movlw TIA_Vx_LAST_VELOCITY |
4B48 50E3 01364 movf PLUSW1, W |
4B4A 020C 01365 mulwf IRQ_TMP2 |
4B4C 90D8 01366 clrc |
4B4E 36F3 01367 rlf PRODL, F |
4B50 34F4 01368 rlf PRODH, W |
4B52 0F01 01369 addlw 1 |
4B54 6E0C 01370 movwf IRQ_TMP2 |
01371 |
4B56 0E04 01372 movlw TIA_Vx_MODE |
01373 BRA_IFSET PLUSW1, Vx_MODE_GSA_ACTIVE, ACCESS, TIA_SW_Amp_Vel_Pos_GSA |
4B58 B0E3 M btfsc reg, bit, reg_a |
4B5A D006 M bra label |
4B5C 5003 01374 movf MIOS_PARAMETER1, W |
4B5E 020C 01375 mulwf IRQ_TMP2 |
4B60 36F3 01376 rlf PRODL, F |
4B62 34F4 01377 rlf PRODH, W |
gpasm-0.13.7 beta setup_tia_cartridge.asm1-30-2014 10:42:05 PAGE 140 |
|
|
LOC OBJECT CODE LINE SOURCE TEXT |
VALUE |
|
4B64 6E03 01378 movwf MIOS_PARAMETER1 |
01379 rgoto TIA_SW_Amp_Vel_End |
4B66 D018 M bra label |
4B68 01380 TIA_SW_Amp_Vel_Pos_GSA |
4B68 5003 01381 movf MIOS_PARAMETER1, W |
4B6A 087F 01382 sublw 0x7f |
4B6C 020C 01383 mulwf IRQ_TMP2 |
4B6E 36F3 01384 rlf PRODL, F |
4B70 34F4 01385 rlf PRODH, W |
4B72 2603 01386 addwf MIOS_PARAMETER1, F |
01387 rgoto TIA_SW_Amp_Vel_End |
4B74 D011 M bra label |
01388 |
4B76 01389 TIA_SW_Amp_Vel_Neg |
4B76 1CE8 01390 comf WREG, W |
4B78 0B7F 01391 andlw 0x7f |
4B7A 0F02 01392 addlw 2 |
4B7C 6E0C 01393 movwf IRQ_TMP2 |
01394 |
4B7E 0E28 01395 movlw TIA_Vx_LAST_VELOCITY |
4B80 50E3 01396 movf PLUSW1, W |
4B82 020C 01397 mulwf IRQ_TMP2 |
4B84 90D8 01398 clrc |
4B86 36F3 01399 rlf PRODL, F |
4B88 34F4 01400 rlf PRODH, W |
4B8A 0F01 01401 addlw 1 |
4B8C 6E0C 01402 movwf IRQ_TMP2 |
01403 |
4B8E 5003 01404 movf MIOS_PARAMETER1, W |
4B90 020C 01405 mulwf IRQ_TMP2 |
4B92 36F3 01406 rlf PRODL, F |
4B94 34F4 01407 rlf PRODH, W |
4B96 5E03 01408 subwf MIOS_PARAMETER1, F |
01409 ;rgoto TIA_SW_Amp_Vel_End |
4B98 01410 TIA_SW_Amp_Vel_End |
01411 |
4B98 01412 TIA_SW_Amp_Gate |
4B98 0E04 01413 movlw TIA_Vx_MODE |
01414 BRA_IFCLR PLUSW1, Vx_MODE_ENV2AMP_ON, ACCESS, TIA_SW_Amp_Gate_Act |
4B9A A8E3 M btfss reg, bit, reg_a |
4B9C D003 M bra label |
4B9E 0E03 01415 movlw TIA_Vx_STAT |
01416 BRA_IFSET PLUSW1, Vx_STAT_ENV_ACTIVE, ACCESS, TIA_SW_Amp_CopyAmp |
4BA0 BCE3 M btfsc reg, bit, reg_a |
4BA2 D011 M bra label |
4BA4 01417 TIA_SW_Amp_Gate_Act |
4BA4 0E03 01418 movlw TIA_Vx_STAT |
01419 BRA_IFSET PLUSW1, Vx_STAT_GATE_ACTIVE, ACCESS, TIA_SW_Amp_CopyAmp |
4BA6 B6E3 M btfsc reg, bit, reg_a |
4BA8 D00E M bra label |
4BAA 0E0F 01420 movlw 0x0f |
4BAC 14DF 01421 andwf INDF2, W |
4BAE E011 01422 bz TIA_SW_Amp_End |
01423 |
gpasm-0.13.7 beta setup_tia_cartridge.asm1-30-2014 10:42:05 PAGE 141 |
|
|
LOC OBJECT CODE LINE SOURCE TEXT |
VALUE |
|
4BB0 01424 TIA_SW_Amp_Gate_FadeOut |
4BB0 6E0C 01425 movwf IRQ_TMP2 |
4BB2 0E02 01426 movlw 0x02 ;;TIA_GATE_FADE |
4BB4 5A0C 01427 subwfb IRQ_TMP2, F |
4BB6 A0D8 01428 skpc |
4BB8 6A0C 01429 clrf IRQ_TMP2 |
4BBA 0EF0 01430 movlw 0xf0 |
4BBC 16DF 01431 andwf INDF2, F |
4BBE 0E0F 01432 movlw 0x0f |
4BC0 140C 01433 andwf IRQ_TMP2, W |
4BC2 12DF 01434 iorwf INDF2, F |
01435 rgoto TIA_SW_Amp_End |
4BC4 D006 M bra label |
01436 |
4BC6 01437 TIA_SW_Amp_Gate_ClrSkp |
01438 |
4BC6 01439 TIA_SW_Amp_CopyAmp |
4BC6 90D8 01440 clrc |
4BC8 3203 01441 rrf MIOS_PARAMETER1, F |
4BCA 4203 01442 rrncf MIOS_PARAMETER1, F |
4BCC 4003 01443 rrncf MIOS_PARAMETER1, W |
4BCE 0B0F 01444 andlw 0x0f |
4BD0 6EDF 01445 movwf INDF2 |
4BD2 01446 TIA_SW_Amp_End |
01447 |
4BD2 0012 01448 return |
01449 |
01450 |
01451 ;; -------------------------------------------------------------------------- |
01452 ;; This function handles the LFOs |
01453 ;; -------------------------------------------------------------------------- |
4BD4 01454 TIA_SW_LFO |
01455 ;; LFO number in TIA_SW_LFO_NUMBER - calculate base address |
01456 ;lfsr FSR1, TIA_LFO1_BASE |
01457 ;movf TIA_SW_LFO_NUMBER, W, BANKED |
01458 ;mullw TIA_LFOx_RECORD_LEN |
01459 ;movf PRODL, W |
01460 ;addwf FSR1L, F |
01461 |
01462 ;; clear result register and skip LFO if not enabled |
4BD4 0E00 01463 movlw TIA_LFOx_MODE |
01464 BRA_IFSET PLUSW1, LFOx_MODE_ENABLE, ACCESS, TIA_SW_LFO_Enabled |
4BD6 B0E3 M btfsc reg, bit, reg_a |
4BD8 D005 M bra label |
4BDA 01465 TIA_SW_LFO_Disabled |
4BDA 0E05 01466 movlw TIA_LFOx_RVALUE_L |
4BDC 6AE3 01467 clrf PLUSW1 |
4BDE 0E06 01468 movlw TIA_LFOx_RVALUE_H |
4BE0 6AE3 01469 clrf PLUSW1 |
01470 rgoto TIA_SW_LFO_End |
4BE2 D03D M bra label |
4BE4 01471 TIA_SW_LFO_Enabled |
01472 |
01473 ;; increment step counter, store result also in IRQ_TMP1 |
gpasm-0.13.7 beta setup_tia_cartridge.asm1-30-2014 10:42:05 PAGE 142 |
|
|
LOC OBJECT CODE LINE SOURCE TEXT |
VALUE |
|
4BE4 0E02 01474 movlw TIA_LFOx_CTR |
4BE6 2AE3 01475 incf PLUSW1, F |
4BE8 CFE3 F00B 01476 movff PLUSW1, IRQ_TMP1 |
01477 |
01478 ;; get CTR/ADD entry from LFO table depending on LFO Rate |
4BEC 0E01 01479 movlw TIA_LFOx_RATE |
4BEE 50E3 01480 movf PLUSW1, W |
4BF0 EC33 F031 01481 call TIA_LFO_TABLE_Get |
01482 ;; result: CTR value in WREG and MIOS_PARAMETER1, ADD value in MIOS_PARAMETER2 |
01483 |
01484 ;; exit if max step counter value (CTR) not reached |
01485 ;; movf MIOS_PARAMETER1, W |
4BF4 5C0B 01486 subwf IRQ_TMP1, W ; result of LFOx_CTR in IRQ_TMP1 |
4BF6 E333 01487 bnc TIA_SW_LFO_End |
01488 |
01489 ;; else clear step counter |
4BF8 0E02 01490 movlw TIA_LFOx_CTR |
4BFA 6AE3 01491 clrf PLUSW1 |
01492 |
01493 ;; skip multiply routine if LFO_x_DEPTH is 0x40 (zero depth) |
4BFC 0E04 01494 movlw TIA_LFOx_DEPTH |
4BFE 50E3 01495 movf PLUSW1, W |
4C00 0A40 01496 xorlw 0x40 |
4C02 E105 01497 bnz TIA_SW_LFO_DepthOk |
4C04 01498 TIA_SW_LFO_Depth40 |
01499 ;; clear 16bit result value registers and exit |
4C04 0E05 01500 movlw TIA_LFOx_RVALUE_L |
4C06 6AE3 01501 clrf PLUSW1 |
4C08 0E06 01502 movlw TIA_LFOx_RVALUE_H |
4C0A 6AE3 01503 clrf PLUSW1 |
01504 rgoto TIA_SW_LFO_End |
4C0C D028 M bra label |
4C0E 01505 TIA_SW_LFO_DepthOk |
01506 |
01507 ;; add or subtract ADD value to linear LFO value |
4C0E 0E03 01508 movlw TIA_LFOx_VALUE |
4C10 CFE3 F00D 01509 movff PLUSW1, IRQ_TMP3 |
01510 |
4C14 0E00 01511 movlw TIA_LFOx_MODE |
01512 BRA_IFSET PLUSW1, LFOx_MODE_DECINC, ACCESS, TIA_SW_LFO_Dec |
4C16 BEE3 M btfsc reg, bit, reg_a |
4C18 D008 M bra label |
4C1A 01513 TIA_SW_LFO_Inc |
4C1A 5004 01514 movf MIOS_PARAMETER2, W ; get ADD value |
4C1C 260D 01515 addwf IRQ_TMP3, F ; add to linear LFO value |
4C1E E30D 01516 bnc TIA_SW_LFO_Cont ; skip next if max value (0xff) not reached |
4C20 1C0D 01517 comf IRQ_TMP3, W ; subtract the missing ticks |
4C22 260D 01518 addwf IRQ_TMP3, F |
4C24 0E00 01519 movlw TIA_LFOx_MODE |
4C26 8EE3 01520 bsf PLUSW1, LFOx_MODE_DECINC ; switch to decrement |
01521 rgoto TIA_SW_LFO_Cont |
4C28 D008 M bra label |
01522 |
4C2A 01523 TIA_SW_LFO_Dec |
gpasm-0.13.7 beta setup_tia_cartridge.asm1-30-2014 10:42:05 PAGE 143 |
|
|
LOC OBJECT CODE LINE SOURCE TEXT |
VALUE |
|
4C2A 5004 01524 movf MIOS_PARAMETER2, W ; get ADD value |
4C2C 5E0D 01525 subwf IRQ_TMP3, F ; decrement from linear LFO value |
4C2E E205 01526 bc TIA_SW_LFO_Cont ; skip next if min value (0x00) not reached |
4C30 1C0D 01527 comf IRQ_TMP3, W ; add the missing ticks |
4C32 0F01 01528 addlw 1 |
4C34 260D 01529 addwf IRQ_TMP3, F |
4C36 0E00 01530 movlw TIA_LFOx_MODE |
4C38 9EE3 01531 bcf PLUSW1, LFOx_MODE_DECINC ; switch to increment |
4C3A 01532 TIA_SW_LFO_Cont |
01533 |
01534 ;; write back IRQ_TMP3 -> TIA_LFOx_VALUE |
4C3A 0E03 01535 movlw TIA_LFOx_VALUE |
4C3C C00D FFE3 01536 movff IRQ_TMP3, PLUSW1 |
01537 |
01538 ;; convert linear LFO value to waveform by using the TIA_SW_LFO_Hlp_Waveform function |
01539 ;; LFO mode in IRQ_TMP1 |
4C40 0E00 01540 movlw TIA_LFOx_MODE |
4C42 CFE3 F00B 01541 movff PLUSW1, IRQ_TMP1 |
01542 ;; LFO depth in IRQ_TMP2 |
4C46 0E04 01543 movlw TIA_LFOx_DEPTH |
4C48 CFE3 F00C 01544 movff PLUSW1, IRQ_TMP2 |
01545 ;; linear LFO value in WREG |
4C4C 500D 01546 movf IRQ_TMP3, W |
01547 ;; process waveform |
01548 |
4C4E EC58 F027 01549 call TIA_SW_LFO_Hlp_Waveform |
01550 |
01551 ;; store 16bit result in RVALUE registers |
4C52 0E05 01552 movlw TIA_LFOx_RVALUE_L |
4C54 CFF3 FFE3 01553 movff PRODL, PLUSW1 |
4C58 0E06 01554 movlw TIA_LFOx_RVALUE_H |
4C5A CFF4 FFE3 01555 movff PRODH, PLUSW1 |
4C5E 01556 TIA_SW_LFO_End |
4C5E 0012 01557 return |
01558 |
01559 |
01560 ;; -------------------------------------------------------------------------- |
01561 ;; This function handles the ENVs |
01562 ;; expects TIA_ENVx_CURVES bitfield (lower or upper nibble) in WREG |
01563 ;; |
01564 ;; TIA_ENVx_CURVES.7 and TIA_ENVx_CURVES.3 contain the ACCENT flag which |
01565 ;; is used in TB303 mode (copied to IRQ_TMP4.3 |
01566 ;; -------------------------------------------------------------------------- |
4C60 01567 TIA_SW_ENV |
4C60 0B07 01568 andlw 0x07 |
4C62 6E0E 01569 movwf IRQ_TMP4 |
01570 |
4C64 510F 01571 movf TIA_SW_ENV_NUMBER, W, BANKED |
4C66 0BFE 01572 andlw 0xfe |
4C68 E108 01573 bnz TIA_SW_ENV_VxStatSkp |
01574 |
01575 ;; Vx dedicated Env clear/set Active |
4C6A 0E03 01576 movlw TIA_Vx_STAT |
4C6C 9CDB 01577 bcf PLUSW2, Vx_STAT_ENV_ACTIVE |
gpasm-0.13.7 beta setup_tia_cartridge.asm1-30-2014 10:42:05 PAGE 144 |
|
|
LOC OBJECT CODE LINE SOURCE TEXT |
VALUE |
|
4C6E 0E00 01578 movlw TIA_ENVx_MODE |
4C70 50E3 01579 movf PLUSW1, W |
4C72 0B1F 01580 andlw 0x1f |
4C74 E002 01581 bz TIA_SW_ENV_VxStatSkp |
4C76 0E03 01582 movlw TIA_Vx_STAT |
4C78 8CDB 01583 bsf PLUSW2, Vx_STAT_ENV_ACTIVE |
4C7A 01584 TIA_SW_ENV_VxStatSkp |
01585 |
01586 ;; prepare call of TIA_SW_ENV_GetBendedValue |
4C7A 0E07 01587 movlw TIA_ENVx_CURVE |
4C7C CFE3 F00C 01588 movff PLUSW1, IRQ_TMP2 |
4C80 0E02 01589 movlw TIA_ENVx_CTR_H |
4C82 CFE3 F00B 01590 movff PLUSW1, IRQ_TMP1 |
01591 |
01592 ;; branch depending on ENV state |
4C86 0E00 01593 movlw TIA_ENVx_MODE |
01594 BRA_IFSET PLUSW1, ENVx_MODE_RELEASE, ACCESS, TIA_SW_ENV_Release |
4C88 B6E3 M btfsc reg, bit, reg_a |
4C8A D03E M bra label |
01595 BRA_IFCLR PLUSW1, ENVx_MODE_ATTACK, ACCESS, TIA_SW_ENV_Calc |
4C8C A0E3 M btfss reg, bit, reg_a |
4C8E D054 M bra label |
01596 BRA_IFSET PLUSW1, ENVx_MODE_SUSTAIN, ACCESS, TIA_SW_ENV_Sustain |
4C90 B4E3 M btfsc reg, bit, reg_a |
4C92 D032 M bra label |
01597 BRA_IFSET PLUSW1, ENVx_MODE_DECAY, ACCESS, TIA_SW_ENV_Decay |
4C94 B2E3 M btfsc reg, bit, reg_a |
4C96 D013 M bra label |
01598 |
4C98 01599 TIA_SW_ENV_Attack |
01600 ;; get attack rate depending on curve setting |
4C98 0E03 01601 movlw TIA_ENVx_ATTACK |
4C9A CFE3 F00D 01602 movff PLUSW1, IRQ_TMP3 |
4C9E 500E 01603 movf IRQ_TMP4, W |
4CA0 0B01 01604 andlw 0x01 |
4CA2 EC27 F028 01605 call TIA_SW_ENV_GetBendedValue |
01606 ;; result: low byte in WREG and MIOS_PARAMETER1, high byte in MIOS_PARAMETER2 |
01607 |
01608 ;; add to ENV counter |
4CA6 0E01 01609 movlw TIA_ENVx_CTR_L |
4CA8 50E3 01610 movf PLUSW1, W |
4CAA 2603 01611 addwf MIOS_PARAMETER1, F |
4CAC 0E02 01612 movlw TIA_ENVx_CTR_H |
4CAE 50E3 01613 movf PLUSW1, W |
4CB0 2204 01614 addwfc MIOS_PARAMETER2, F |
4CB2 E342 01615 bnc TIA_SW_ENV_Calc |
01616 |
01617 ;; if value >= 0xffff: set to 0xffff, switch to Decay |
4CB4 6803 01618 setf MIOS_PARAMETER1 |
4CB6 6804 01619 setf MIOS_PARAMETER2 |
4CB8 0E00 01620 movlw TIA_ENVx_MODE |
4CBA 82E3 01621 bsf PLUSW1, ENVx_MODE_DECAY |
01622 rgoto TIA_SW_ENV_Calc |
4CBC D03D M bra label |
gpasm-0.13.7 beta setup_tia_cartridge.asm1-30-2014 10:42:05 PAGE 145 |
|
|
LOC OBJECT CODE LINE SOURCE TEXT |
VALUE |
|
01623 |
01624 |
01625 |
4CBE 01626 TIA_SW_ENV_Decay |
01627 ;; get decay rate depending on curve setting |
4CBE 0E04 01628 movlw TIA_ENVx_DECAY |
4CC0 CFE3 F00D 01629 movff PLUSW1, IRQ_TMP3 |
01630 |
4CC4 500E 01631 movf IRQ_TMP4, W |
4CC6 0B02 01632 andlw 0x02 |
4CC8 EC27 F028 01633 call TIA_SW_ENV_GetBendedValue |
01634 ;; result: low byte in WREG and MIOS_PARAMETER1, high byte in MIOS_PARAMETER2 |
01635 |
01636 ;; subtraction with current counter value |
4CCC 0E01 01637 movlw TIA_ENVx_CTR_L |
4CCE CFE3 F00B 01638 movff PLUSW1, IRQ_TMP1 |
4CD2 0E02 01639 movlw TIA_ENVx_CTR_H |
4CD4 CFE3 F00C 01640 movff PLUSW1, IRQ_TMP2 |
01641 |
4CD8 5003 01642 movf MIOS_PARAMETER1, W |
4CDA 5C0B 01643 subwf IRQ_TMP1, W |
4CDC 6E03 01644 movwf MIOS_PARAMETER1 |
4CDE 5004 01645 movf MIOS_PARAMETER2, W |
4CE0 580C 01646 subwfb IRQ_TMP2, W |
4CE2 6E04 01647 movwf MIOS_PARAMETER2 |
4CE4 E309 01648 bnc TIA_SW_ENV_Sustain |
01649 |
01650 ;; check if counter value < sustain value |
4CE6 0E05 01651 movlw TIA_ENVx_SUSTAIN |
4CE8 34E3 01652 rlf PLUSW1, W |
4CEA 0BFE 01653 andlw 0xfe |
4CEC 6E0B 01654 movwf IRQ_TMP1 |
4CEE 0E00 01655 movlw 0x00 |
4CF0 5C03 01656 subwf MIOS_PARAMETER1, W |
4CF2 500B 01657 movf IRQ_TMP1, W |
4CF4 5804 01658 subwfb MIOS_PARAMETER2, W |
4CF6 E220 01659 bc TIA_SW_ENV_Calc |
01660 |
4CF8 01661 TIA_SW_ENV_Sustain |
01662 ;; write sustain value into counter |
4CF8 0E05 01663 movlw TIA_ENVx_SUSTAIN |
4CFA 34E3 01664 rlf PLUSW1, W |
4CFC 0BFE 01665 andlw 0xfe |
4CFE 6E04 01666 movwf MIOS_PARAMETER2 |
4D00 6A03 01667 clrf MIOS_PARAMETER1 |
01668 |
4D02 0E00 01669 movlw TIA_ENVx_MODE |
4D04 84E3 01670 bsf PLUSW1, ENVx_MODE_SUSTAIN |
01671 rgoto TIA_SW_ENV_Calc |
4D06 D018 M bra label |
01672 |
4D08 01673 TIA_SW_ENV_Release |
01674 ;; get release rate depending on curve setting |
4D08 0E06 01675 movlw TIA_ENVx_RELEASE |
gpasm-0.13.7 beta setup_tia_cartridge.asm1-30-2014 10:42:05 PAGE 146 |
|
|
LOC OBJECT CODE LINE SOURCE TEXT |
VALUE |
|
4D0A CFE3 F00D 01676 movff PLUSW1, IRQ_TMP3 |
4D0E 500E 01677 movf IRQ_TMP4, W |
4D10 0B04 01678 andlw 0x04 |
4D12 EC27 F028 01679 call TIA_SW_ENV_GetBendedValue |
01680 ;; result: low byte in WREG and MIOS_PARAMETER1, high byte in MIOS_PARAMETER2 |
01681 |
01682 ;; subtraction with current counter value |
4D16 0E01 01683 movlw TIA_ENVx_CTR_L |
4D18 CFE3 F00B 01684 movff PLUSW1, IRQ_TMP1 |
4D1C 0E02 01685 movlw TIA_ENVx_CTR_H |
4D1E CFE3 F00C 01686 movff PLUSW1, IRQ_TMP2 |
01687 |
4D22 5003 01688 movf MIOS_PARAMETER1, W |
4D24 5C0B 01689 subwf IRQ_TMP1, W |
4D26 6E03 01690 movwf MIOS_PARAMETER1 |
4D28 5004 01691 movf MIOS_PARAMETER2, W |
4D2A 580C 01692 subwfb IRQ_TMP2, W |
4D2C 6E04 01693 movwf MIOS_PARAMETER2 |
4D2E E204 01694 bc TIA_SW_ENV_Calc |
01695 |
01696 ;; zero reached |
4D30 6A03 01697 clrf MIOS_PARAMETER1 |
4D32 6A04 01698 clrf MIOS_PARAMETER2 |
4D34 0E00 01699 movlw TIA_ENVx_MODE |
4D36 6AE3 01700 clrf PLUSW1 |
4D38 01701 TIA_SW_ENV_Calc |
01702 ;; copy MIOS_PARAMETER[12] to TIA_ENVx_CTR_[LH] |
4D38 0E01 01703 movlw TIA_ENVx_CTR_L |
4D3A C003 FFE3 01704 movff MIOS_PARAMETER1, PLUSW1 |
4D3E 0E02 01705 movlw TIA_ENVx_CTR_H |
4D40 C004 FFE3 01706 movff MIOS_PARAMETER2, PLUSW1 |
01707 |
01708 ;; calculate envelope value depending on envelope rate |
01709 |
01710 ;; clear ENV ResultValue Registers |
4D44 0E09 01711 movlw TIA_ENVx_RVALUE_L |
4D46 6AE3 01712 clrf PLUSW1 |
4D48 0E0A 01713 movlw TIA_ENVx_RVALUE_H |
4D4A 6AE3 01714 clrf PLUSW1 |
01715 |
01716 ;; skip multiply routine if ENV_x_DEPTH is 0x40 |
4D4C 0E08 01717 movlw TIA_ENVx_DEPTH |
4D4E 50E3 01718 movf PLUSW1, W |
4D50 0A40 01719 xorlw 0x40 |
4D52 E00D 01720 bz TIA_SW_ENV_End |
01721 |
01722 ;; convert linear ENV value to waveform by using the TIA_SW_ENV_Hlp_Waveform function |
01723 ;; depth in IRQ_TMP2 |
4D54 0E08 01724 movlw TIA_ENVx_DEPTH |
4D56 CFE3 F00C 01725 movff PLUSW1, IRQ_TMP2 |
01726 ;; linear ENV value in WREG |
4D5A 0E02 01727 movlw TIA_ENVx_CTR_H |
4D5C 30E3 01728 rrf PLUSW1, W |
01729 ;; process waveform |
gpasm-0.13.7 beta setup_tia_cartridge.asm1-30-2014 10:42:05 PAGE 147 |
|
|
LOC OBJECT CODE LINE SOURCE TEXT |
VALUE |
|
4D5E EC50 F027 01730 call TIA_SW_ENV_Hlp_Waveform |
01731 ;; store 16bit result in RVALUE registers |
4D62 0E09 01732 movlw TIA_ENVx_RVALUE_L |
4D64 CFF3 FFE3 01733 movff PRODL, PLUSW1 |
4D68 0E0A 01734 movlw TIA_ENVx_RVALUE_H |
4D6A CFF4 FFE3 01735 movff PRODH, PLUSW1 |
4D6E 01736 TIA_SW_ENV_End |
4D6E 0012 01737 return |
01738 |
01739 |
01740 ;; -------------------------------------------------------------------------- |
01741 ;; Help Function: add modulation values depending on enabled sources |
01742 ;; In: Enabled LFOs and ENCs in WREG, 7-bit offset in IRQ_TMP4 |
01743 ;; Out: signed 16bit result value in IRQ_TMP[12] |
01744 ;; -------------------------------------------------------------------------- |
4D70 01745 TIA_SW_Hlp_GetMOD |
4D70 6A0B 01746 clrf IRQ_TMP1 |
4D72 6A0C 01747 clrf IRQ_TMP2 |
4D74 6A0D 01748 clrf IRQ_TMP3 |
4D76 6E0E 01749 movwf IRQ_TMP4 ; save assigned LFOs and ENVs in IRQ_TMP4 |
01750 |
01751 ;; add all enabled LFO values (16 bit -> 24 bit) |
01752 BRA_IFCLR IRQ_TMP4, ASSIGNED_LFOS_1, ACCESS, TIA_SW_Hlp_GetMOD_NoLFO1 |
4D78 A00E M btfss reg, bit, reg_a |
4D7A D00A M bra label |
4D7C 01753 TIA_SW_Hlp_GetMOD_LFO1 |
4D7C 51A5 01754 movf TIA_LFO1_BASE + TIA_LFOx_RVALUE_L, W, BANKED |
4D7E 260B 01755 addwf IRQ_TMP1, F |
4D80 51A6 01756 movf TIA_LFO1_BASE + TIA_LFOx_RVALUE_H, W, BANKED |
4D82 220C 01757 addwfc IRQ_TMP2, F |
4D84 0E00 01758 movlw 0x00 |
4D86 BFA6 01759 btfsc TIA_LFO1_BASE + TIA_LFOx_RVALUE_H, 7, BANKED |
4D88 0EFF 01760 movlw 0xff |
4D8A B0D8 01761 skpnc |
4D8C 0F01 01762 addlw 1 |
4D8E 260D 01763 addwf IRQ_TMP3, F |
4D90 01764 TIA_SW_Hlp_GetMOD_NoLFO1 |
01765 |
01766 BRA_IFCLR IRQ_TMP4, ASSIGNED_LFOS_2, ACCESS, TIA_SW_Hlp_GetMOD_NoLFO2 |
4D90 A20E M btfss reg, bit, reg_a |
4D92 D00A M bra label |
4D94 01767 TIA_SW_Hlp_GetMOD_LFO2 |
4D94 51AC 01768 movf TIA_LFO2_BASE + TIA_LFOx_RVALUE_L, W, BANKED |
4D96 260B 01769 addwf IRQ_TMP1, F |
4D98 51AD 01770 movf TIA_LFO2_BASE + TIA_LFOx_RVALUE_H, W, BANKED |
4D9A 220C 01771 addwfc IRQ_TMP2, F |
4D9C 0E00 01772 movlw 0x00 |
4D9E BFAD 01773 btfsc TIA_LFO2_BASE + TIA_LFOx_RVALUE_H, 7, BANKED |
4DA0 0EFF 01774 movlw 0xff |
4DA2 B0D8 01775 skpnc |
4DA4 0F01 01776 addlw 1 |
4DA6 260D 01777 addwf IRQ_TMP3, F |
4DA8 01778 TIA_SW_Hlp_GetMOD_NoLFO2 |
01779 |
gpasm-0.13.7 beta setup_tia_cartridge.asm1-30-2014 10:42:05 PAGE 148 |
|
|
LOC OBJECT CODE LINE SOURCE TEXT |
VALUE |
|
01780 BRA_IFCLR IRQ_TMP4, ASSIGNED_LFOS_3, ACCESS, TIA_SW_Hlp_GetMOD_NoLFO3 |
4DA8 A40E M btfss reg, bit, reg_a |
4DAA D00A M bra label |
4DAC 01781 TIA_SW_Hlp_GetMOD_LFO3 |
4DAC 51B3 01782 movf TIA_LFO3_BASE + TIA_LFOx_RVALUE_L, W, BANKED |
4DAE 260B 01783 addwf IRQ_TMP1, F |
4DB0 51B4 01784 movf TIA_LFO3_BASE + TIA_LFOx_RVALUE_H, W, BANKED |
4DB2 220C 01785 addwfc IRQ_TMP2, F |
4DB4 0E00 01786 movlw 0x00 |
4DB6 BFB4 01787 btfsc TIA_LFO3_BASE + TIA_LFOx_RVALUE_H, 7, BANKED |
4DB8 0EFF 01788 movlw 0xff |
4DBA B0D8 01789 skpnc |
4DBC 0F01 01790 addlw 1 |
4DBE 260D 01791 addwf IRQ_TMP3, F |
4DC0 01792 TIA_SW_Hlp_GetMOD_NoLFO3 |
01793 |
01794 BRA_IFCLR IRQ_TMP4, ASSIGNED_LFOS_4, ACCESS, TIA_SW_Hlp_GetMOD_NoLFO4 |
4DC0 A60E M btfss reg, bit, reg_a |
4DC2 D00A M bra label |
4DC4 01795 TIA_SW_Hlp_GetMOD_LFO4 |
4DC4 51BA 01796 movf TIA_LFO4_BASE + TIA_LFOx_RVALUE_L, W, BANKED |
4DC6 260B 01797 addwf IRQ_TMP1, F |
4DC8 51BB 01798 movf TIA_LFO4_BASE + TIA_LFOx_RVALUE_H, W, BANKED |
4DCA 220C 01799 addwfc IRQ_TMP2, F |
4DCC 0E00 01800 movlw 0x00 |
4DCE BFBB 01801 btfsc TIA_LFO4_BASE + TIA_LFOx_RVALUE_H, 7, BANKED |
4DD0 0EFF 01802 movlw 0xff |
4DD2 B0D8 01803 skpnc |
4DD4 0F01 01804 addlw 1 |
4DD6 260D 01805 addwf IRQ_TMP3, F |
4DD8 01806 TIA_SW_Hlp_GetMOD_NoLFO4 |
01807 |
01808 BRA_IFCLR IRQ_TMP4, ASSIGNED_ENVS_1, ACCESS, TIA_SW_Hlp_GetMOD_NoENV1 |
4DD8 A80E M btfss reg, bit, reg_a |
4DDA D00A M bra label |
4DDC 01809 TIA_SW_Hlp_GetMOD_ENV1 |
4DDC 51DB 01810 movf TIA_ENV1_BASE + TIA_ENVx_RVALUE_L, W, BANKED |
4DDE 260B 01811 addwf IRQ_TMP1, F |
4DE0 51DC 01812 movf TIA_ENV1_BASE + TIA_ENVx_RVALUE_H, W, BANKED |
4DE2 220C 01813 addwfc IRQ_TMP2, F |
4DE4 0E00 01814 movlw 0x00 |
4DE6 BFDC 01815 btfsc TIA_ENV1_BASE + TIA_ENVx_RVALUE_H, 7, BANKED |
4DE8 0EFF 01816 movlw 0xff |
4DEA B0D8 01817 skpnc |
4DEC 0F01 01818 addlw 1 |
4DEE 260D 01819 addwf IRQ_TMP3, F |
4DF0 01820 TIA_SW_Hlp_GetMOD_NoENV1 |
01821 |
01822 BRA_IFCLR IRQ_TMP4, ASSIGNED_ENVS_2, ACCESS, TIA_SW_Hlp_GetMOD_NoENV2 |
4DF0 AA0E M btfss reg, bit, reg_a |
4DF2 D00A M bra label |
4DF4 01823 TIA_SW_Hlp_GetMOD_ENV2 |
4DF4 51E6 01824 movf TIA_ENV2_BASE + TIA_ENVx_RVALUE_L, W, BANKED |
4DF6 260B 01825 addwf IRQ_TMP1, F |
gpasm-0.13.7 beta setup_tia_cartridge.asm1-30-2014 10:42:05 PAGE 149 |
|
|
LOC OBJECT CODE LINE SOURCE TEXT |
VALUE |
|
4DF8 51E7 01826 movf TIA_ENV2_BASE + TIA_ENVx_RVALUE_H, W, BANKED |
4DFA 220C 01827 addwfc IRQ_TMP2, F |
4DFC 0E00 01828 movlw 0x00 |
4DFE BFE7 01829 btfsc TIA_ENV2_BASE + TIA_ENVx_RVALUE_H, 7, BANKED |
4E00 0EFF 01830 movlw 0xff |
4E02 B0D8 01831 skpnc |
4E04 0F01 01832 addlw 1 |
4E06 260D 01833 addwf IRQ_TMP3, F |
4E08 01834 TIA_SW_Hlp_GetMOD_NoENV2 |
01835 |
01836 BRA_IFCLR IRQ_TMP4, ASSIGNED_ENVS_A0, ACCESS, TIA_SW_Hlp_GetMOD_NoENVAUD0 |
4E08 AC0E M btfss reg, bit, reg_a |
4E0A D00A M bra label |
4E0C 01837 TIA_SW_Hlp_GetMOD_ENVAUD0 |
4E0C 51C5 01838 movf TIA_ENVAUD0_BASE + TIA_ENVx_RVALUE_L, W, BANKED |
4E0E 260B 01839 addwf IRQ_TMP1, F |
4E10 51C6 01840 movf TIA_ENVAUD0_BASE + TIA_ENVx_RVALUE_H, W, BANKED |
4E12 220C 01841 addwfc IRQ_TMP2, F |
4E14 0E00 01842 movlw 0x00 |
4E16 BFC6 01843 btfsc TIA_ENVAUD0_BASE + TIA_ENVx_RVALUE_H, 7, BANKED |
4E18 0EFF 01844 movlw 0xff |
4E1A B0D8 01845 skpnc |
4E1C 0F01 01846 addlw 1 |
4E1E 260D 01847 addwf IRQ_TMP3, F |
4E20 01848 TIA_SW_Hlp_GetMOD_NoENVAUD0 |
01849 |
01850 BRA_IFCLR IRQ_TMP4, ASSIGNED_ENVS_A1, ACCESS, TIA_SW_Hlp_GetMOD_NoENVAUD1 |
4E20 AE0E M btfss reg, bit, reg_a |
4E22 D00A M bra label |
4E24 01851 TIA_SW_Hlp_GetMOD_ENVAUD1 |
4E24 51D0 01852 movf TIA_ENVAUD1_BASE + TIA_ENVx_RVALUE_L, W, BANKED |
4E26 260B 01853 addwf IRQ_TMP1, F |
4E28 51D1 01854 movf TIA_ENVAUD1_BASE + TIA_ENVx_RVALUE_H, W, BANKED |
4E2A 220C 01855 addwfc IRQ_TMP2, F |
4E2C 0E00 01856 movlw 0x00 |
4E2E BFD1 01857 btfsc TIA_ENVAUD1_BASE + TIA_ENVx_RVALUE_H, 7, BANKED |
4E30 0EFF 01858 movlw 0xff |
4E32 B0D8 01859 skpnc |
4E34 0F01 01860 addlw 1 |
4E36 260D 01861 addwf IRQ_TMP3, F |
4E38 01862 TIA_SW_Hlp_GetMOD_NoENVAUD1 |
01863 |
01864 ;; saturate to absolute 16 bit-value, keep sign in IRQ_TMP3[0] |
01865 BRA_IFSET IRQ_TMP3, 7, ACCESS, TIA_SW_Hlp_GetMOD_Negative |
4E38 BE0D M btfsc reg, bit, reg_a |
4E3A D006 M bra label |
4E3C 01866 TIA_SW_Hlp_GetMOD_Positive |
4E3C 500D 01867 movf IRQ_TMP3, W |
4E3E E00D 01868 bz TIA_SW_Hlp_GetMOD_Cont |
4E40 680B 01869 setf IRQ_TMP1 |
4E42 680C 01870 setf IRQ_TMP2 |
4E44 6A0D 01871 clrf IRQ_TMP3 ; save sign in IRQ_TMP3 |
01872 rgoto TIA_SW_Hlp_GetMOD_Cont |
4E46 D009 M bra label |
gpasm-0.13.7 beta setup_tia_cartridge.asm1-30-2014 10:42:05 PAGE 150 |
|
|
LOC OBJECT CODE LINE SOURCE TEXT |
VALUE |
|
01873 |
4E48 01874 TIA_SW_Hlp_GetMOD_Negative |
4E48 500D 01875 movf IRQ_TMP3, W |
4E4A 0B7F 01876 andlw 0x7f |
4E4C E102 01877 bnz TIA_SW_Hlp_GetMOD_Negative_C |
4E4E 6A0B 01878 clrf IRQ_TMP1 |
4E50 6A0C 01879 clrf IRQ_TMP2 |
4E52 01880 TIA_SW_Hlp_GetMOD_Negative_C |
4E52 1E0B 01881 comf IRQ_TMP1, F ; invert result |
4E54 1E0C 01882 comf IRQ_TMP2, F |
4E56 0E01 01883 movlw 0x01 ; save sign in IRQ_TMP3 |
4E58 6E0D 01884 movwf IRQ_TMP3 |
4E5A 01885 TIA_SW_Hlp_GetMOD_Cont |
01886 |
4E5A 0012 01887 return |
01888 |
01889 ;; -------------------------------------------------------------------------- |
01890 ;; Help Function to add a 7-bit offset to IRQ_TMP[123] and saturate |
01891 ;; In: offset in WREG, absolute 16-bit value in IRQ_TMP[12], sign in IRQ_TMP3[0] |
01892 ;; Out: New value in IRQ_TMP[12] |
01893 ;; -------------------------------------------------------------------------- |
4E5C 01894 TIA_SW_Hlp_AddOffset |
4E5C 90D8 01895 clrc |
4E5E 34E8 01896 rlf WREG, W |
4E60 6EF4 01897 movwf PRODH |
4E62 6AF3 01898 clrf PRODL |
01899 ;; rgoto TIA_SW_Hlp_AddOffset16 |
01900 |
01901 ;; -------------------------------------------------------------------------- |
01902 ;; Help Function to add a 16-bit offset to IRQ_TMP[123] and saturate |
01903 ;; In: offset in PROD[LH], absolute 16-bit value in IRQ_TMP[12], sign in IRQ_TMP3[0] |
01904 ;; Out: New value in IRQ_TMP[12] |
01905 ;; -------------------------------------------------------------------------- |
4E64 01906 TIA_SW_Hlp_AddOffset16 |
01907 ;; add offset and saturate |
01908 BRA_IFSET IRQ_TMP3, 0, ACCESS, TIA_SW_Hlp_AddOffset16_Negative |
4E64 B00D M btfsc reg, bit, reg_a |
4E66 D008 M bra label |
4E68 01909 TIA_SW_Hlp_AddOffset16_Positive |
4E68 50F3 01910 movf PRODL, W ; add offset |
4E6A 260B 01911 addwf IRQ_TMP1, F |
4E6C 50F4 01912 movf PRODH, W |
4E6E 220C 01913 addwfc IRQ_TMP2, F |
4E70 E30C 01914 bnc TIA_SW_Hlp_AddOffset16_End |
4E72 680B 01915 setf IRQ_TMP1 ; saturate |
4E74 680C 01916 setf IRQ_TMP2 |
01917 rgoto TIA_SW_Hlp_AddOffset16_End |
4E76 D009 M bra label |
4E78 01918 TIA_SW_Hlp_AddOffset16_Negative |
4E78 500B 01919 movf IRQ_TMP1, W ; subtract offset |
4E7A 5CF3 01920 subwf PRODL, W |
4E7C 6E0B 01921 movwf IRQ_TMP1 |
4E7E 500C 01922 movf IRQ_TMP2, W |
4E80 58F4 01923 subwfb PRODH, W |
gpasm-0.13.7 beta setup_tia_cartridge.asm1-30-2014 10:42:05 PAGE 151 |
|
|
LOC OBJECT CODE LINE SOURCE TEXT |
VALUE |
|
4E82 6E0C 01924 movwf IRQ_TMP2 |
4E84 E202 01925 bc TIA_SW_Hlp_AddOffset16_End |
4E86 6A0B 01926 clrf IRQ_TMP1 |
4E88 6A0C 01927 clrf IRQ_TMP2 |
4E8A 01928 TIA_SW_Hlp_AddOffset16_End |
01929 |
4E8A 0012 01930 return |
01931 |
01932 ;; -------------------------------------------------------------------------- |
01933 ;; Help Function: Get absolute value |
01934 ;; IN: signed 16-bit value in IRQ_TMP[12] |
01935 ;; Out: unsigned absolute value in IRQ_TMP[12] |
01936 ;; sign in IRQ_TMP3[0] |
01937 ;; -------------------------------------------------------------------------- |
4E8C 01938 TIA_SW_Hlp_GetAbs16 |
01939 ;; convert IRQ_TMP[12] to unsigned integer, keep sign in IRQ_TMP3[0] |
4E8C 6A0D 01940 clrf IRQ_TMP3 |
01941 BRA_IFCLR IRQ_TMP2, 7, ACCESS, TIA_SW_Hlp_GetABS16_Pos |
4E8E AE0C M btfss reg, bit, reg_a |
4E90 D006 M bra label |
4E92 01942 TIA_SW_Hlp_GetABS16_Neg |
4E92 800D 01943 bsf IRQ_TMP3, 0 ; memorize sign in IRQ_TMP3[0] |
4E94 1E0B 01944 comf IRQ_TMP1, F |
4E96 1E0C 01945 comf IRQ_TMP2, F |
4E98 2A0B 01946 incf IRQ_TMP1, F |
4E9A B4D8 01947 skpnz |
4E9C 2A0C 01948 incf IRQ_TMP2, F |
4E9E 01949 TIA_SW_Hlp_GetABS16_Pos |
4E9E 0012 01950 return |
01951 |
01952 |
01953 ;; -------------------------------------------------------------------------- |
01954 ;; Help Function for ENV Waveforms (resuses the LFO Waveform routine) |
01955 ;; In: ENV_x_VALUE in WREG |
01956 ;; ENV_x_DEPTH in IRQ_TMP2, |
01957 ;; Accent flag in IRQ_TMP4.3 |
01958 ;; Out: Result in PROD[LH] |
01959 ;; -------------------------------------------------------------------------- |
4EA0 01960 TIA_SW_ENV_Hlp_Waveform |
01961 |
01962 ; BRA_IFCLR TIA_SE_OPTION, SE_OPTION_TB303, BANKED, TIA_SW_ENV_Hlp_Waveform_NotTB303 |
01963 ;TIA_SW_ENV_Hlp_Waveform_TB303 |
01964 ; movwf IRQ_TMP1 |
01965 ; ;; in TB303 mode the depth parameter is used as "env mod" which is always positive |
01966 ; ;; modify depth depending on ACCENT flag |
01967 ; rrf IRQ_TMP2, W |
01968 ; andlw 0x3f |
01969 ; movwf IRQ_TMP2 |
01970 ; BRA_IFCLR IRQ_TMP4, 3, ACCESS, TIA_SW_ENV_Hlp_Waveform_NoAcc |
01971 ;TIA_SW_ENV_Hlp_Waveform_Acc |
01972 ;; addlw 0x10 |
01973 ; movwf IRQ_TMP2 |
01974 ;TIA_SW_ENV_Hlp_Waveform_NoAcc |
01975 ; movf IRQ_TMP1, W |
gpasm-0.13.7 beta setup_tia_cartridge.asm1-30-2014 10:42:05 PAGE 152 |
|
|
LOC OBJECT CODE LINE SOURCE TEXT |
VALUE |
|
01976 ; andlw 0x7f |
01977 ; mulwf IRQ_TMP2, ACCESS |
01978 ; return |
01979 |
01980 ;TIA_SW_ENV_Hlp_Waveform_NotTB303 |
01981 ;; set mode to 0x10, don't overwrite WREG |
4EA0 6A0B 01982 clrf IRQ_TMP1 |
4EA2 880B 01983 bsf IRQ_TMP1, 4 ; (triangle waveform) |
01984 |
01985 ;; convert linear envelope value |
4EA4 0B7F 01986 andlw 0x7f |
4EA6 BC0C 01987 btfsc IRQ_TMP2, 6; shift positive values to > 0x0000 |
4EA8 0F80 01988 addlw 0x80 |
4EAA AC0C 01989 btfss IRQ_TMP2, 6; inversion if depth < 0x40 |
4EAC 0A7F 01990 xorlw 0x7f |
01991 rgoto TIA_SW_ENV_Hlp_Waveform_Cont |
4EAE D002 M bra label |
01992 |
01993 ;; -------------------------------------------------------------------------- |
01994 ;; Help Function for LFO and ENV Waveforms |
01995 ;; In: LFO_x_VALUE in WREG |
01996 ;; LFO_x_MODE in IRQ_TMP1 |
01997 ;; LFO_x_DEPTH in IRQ_TMP2, |
01998 ;; LFO/ENV number in TIA_SW_LFO_NUMBER |
01999 ;; pointer to LFOx_BASE in FSR1 |
02000 ;; Out: Result in PROD[LH] |
02001 ;; Scaled Value in IRQ_TMP1 |
02002 ;; -------------------------------------------------------------------------- |
4EB0 02003 TIA_SW_LFO_Hlp_Waveform |
02004 ;; invert if negative depth (<0x40) |
4EB0 AC0C 02005 btfss IRQ_TMP2, 6 |
4EB2 0AFF 02006 xorlw 0xff |
02007 |
02008 ;; envelope waveform routine continues here |
4EB4 02009 TIA_SW_ENV_Hlp_Waveform_Cont |
4EB4 6E0D 02010 movwf IRQ_TMP3 |
02011 |
02012 ;; get absolute value of depth from TIA_DEPTH_TABLE |
02013 ;; (to keep it compatible with MIDIbox TIA V1.5) |
4EB6 500C 02014 movf IRQ_TMP2, W |
4EB8 D8C3 02015 rcall TIA_SW_Hlp_Abs7 |
4EBA 0F3E 02016 addlw TIA_DEPTH_TABLE & 0xff |
4EBC 6EF6 02017 movwf TBLPTRL |
4EBE 6AF7 02018 clrf TBLPTRH |
4EC0 0E32 02019 movlw TIA_DEPTH_TABLE >> 8 |
4EC2 22F7 02020 addwfc TBLPTRH, F |
4EC4 0009 02021 tblrd*+ |
4EC6 50F5 02022 movf TABLAT, W |
4EC8 6E0C 02023 movwf IRQ_TMP2 |
02024 |
02025 ;; branch depending on selected waveform |
4ECA 380B 02026 swapf IRQ_TMP1, W |
4ECC 0B07 02027 andlw 0x07 |
02028 JUMPTABLE_2BYTES_UNSECURE |
gpasm-0.13.7 beta setup_tia_cartridge.asm1-30-2014 10:42:05 PAGE 153 |
|
|
LOC OBJECT CODE LINE SOURCE TEXT |
VALUE |
|
4ECE ECC8 F016 M call MIOS_HLP_GetIndex_2bytes |
02029 rgoto TIA_SW_LFO_Hlp_WFBranch_0 |
4ED2 D007 M bra label |
02030 rgoto TIA_SW_LFO_Hlp_WFBranch_1 |
4ED4 D00A M bra label |
02031 rgoto TIA_SW_LFO_Hlp_WFBranch_2 |
4ED6 D00D M bra label |
02032 rgoto TIA_SW_LFO_Hlp_WFBranch_3 |
4ED8 D011 M bra label |
02033 rgoto TIA_SW_LFO_Hlp_WFBranch_4 |
4EDA D014 M bra label |
02034 rgoto TIA_SW_LFO_Hlp_WFBranch_5 |
4EDC D02A M bra label |
02035 rgoto TIA_SW_LFO_Hlp_WFBranch_6 |
4EDE D001 M bra label |
02036 rgoto TIA_SW_LFO_Hlp_WFBranch_7 |
4EE0 D000 M bra label |
02037 |
4EE2 02038 TIA_SW_LFO_Hlp_WFBranch_0 ; Sine |
4EE2 02039 TIA_SW_LFO_Hlp_WFBranch_6 ; (reserved) |
4EE2 02040 TIA_SW_LFO_Hlp_WFBranch_7 ; (reserved) |
4EE2 500D 02041 movf IRQ_TMP3, W |
4EE4 ECD0 F018 02042 call TIA_SIN_TABLE_Get |
02043 rgoto TIA_SW_LFO_Hlp_WFBranch_Cont |
4EE8 D025 M bra label |
02044 |
4EEA 02045 TIA_SW_LFO_Hlp_WFBranch_1 ; Triangle |
02046 ;; Triangle: return unsigned value |
4EEA 500D 02047 movf IRQ_TMP3, W |
4EEC AE0D 02048 btfss IRQ_TMP3, 7 |
4EEE 0A7F 02049 xorlw 0x7f |
02050 rgoto TIA_SW_LFO_Hlp_WFBranch_Cont |
4EF0 D021 M bra label |
02051 |
4EF2 02052 TIA_SW_LFO_Hlp_WFBranch_2 ; sawtooth |
02053 ;; Sawtooth: x/2, MODE_DECINC is the eight bit |
4EF2 300D 02054 rrf IRQ_TMP3, W |
4EF4 0B7F 02055 andlw 0x7f |
4EF6 BE0B 02056 btfsc IRQ_TMP1, LFOx_MODE_DECINC ; (IRQ_TMP1=LFO_x_MODE) |
4EF8 0980 02057 iorlw 0x80 |
02058 rgoto TIA_SW_LFO_Hlp_WFBranch_Cont |
4EFA D01C M bra label |
4EFC 02059 TIA_SW_LFO_Hlp_WFBranch_3 ; pulse |
02060 ;; Pulse: 0x00 when Dec, 0xff when Inc, take inversion bit also into account |
4EFC 0E00 02061 movlw 0x00 |
4EFE BE0B 02062 btfsc IRQ_TMP1, LFOx_MODE_DECINC; (IRQ_TMP1=LFO_x_MODE) |
4F00 0EFF 02063 movlw 0xff |
02064 rgoto TIA_SW_LFO_Hlp_WFBranch_Cont |
4F02 D018 M bra label |
4F04 02065 TIA_SW_LFO_Hlp_WFBranch_4 ; random |
02066 ;; each second LFO is in S&H mode |
02067 BRA_IFCLR TIA_SW_LFO_NUMBER, 0, BANKED, TIA_SW_LFO_Hlp_WFBranch_4_Random |
4F04 A10F M btfss reg, bit, reg_a |
4F06 D00C M bra label |
gpasm-0.13.7 beta setup_tia_cartridge.asm1-30-2014 10:42:05 PAGE 154 |
|
|
LOC OBJECT CODE LINE SOURCE TEXT |
VALUE |
|
4F08 02068 TIA_SW_LFO_Hlp_WFBranch_4_S_H |
4F08 500D 02069 movf IRQ_TMP3, W ; latch on period match |
4F0A 0E05 02070 movlw TIA_LFOx_RVALUE_L |
4F0C B4D8 02071 skpnz |
4F0E 0EFE 02072 movlw TIA_LFOx_RVALUE_L - TIA_LFOx_RECORD_LEN |
4F10 CFE3 FFF3 02073 movff PLUSW1, PRODL |
02074 |
4F14 0E06 02075 movlw TIA_LFOx_RVALUE_H |
4F16 B4D8 02076 skpnz |
4F18 0EFF 02077 movlw TIA_LFOx_RVALUE_H - TIA_LFOx_RECORD_LEN |
4F1A CFE3 FFF4 02078 movff PLUSW1, PRODH |
02079 rgoto TIA_SW_LFO_Hlp_Waveform_End |
4F1E D011 M bra label |
02080 |
4F20 02081 TIA_SW_LFO_Hlp_WFBranch_4_Random |
4F20 511D 02082 movf TIA_LFO_RANDOM_SEED_H, W, BANKED |
4F22 0B55 02083 andlw 0x55 |
4F24 6E0B 02084 movwf IRQ_TMP1 |
4F26 511C 02085 movf TIA_LFO_RANDOM_SEED_L, W, BANKED |
4F28 0BAA 02086 andlw 0xaa |
4F2A 100B 02087 iorwf IRQ_TMP1, W |
4F2C 24CE 02088 addwf TMR1L, W ; super-random ;-) |
4F2E 18CC 02089 xorwf TMR2, W |
02090 rgoto TIA_SW_LFO_Hlp_WFBranch_Cont |
4F30 D001 M bra label |
02091 |
4F32 02092 TIA_SW_LFO_Hlp_WFBranch_5 ; (AIN) |
02093 #if ENABLE_AIN_LFO_WAVEFORM |
02094 movf TIA_SW_LFO_NUMBER, W, BANKED |
02095 movff FSR1L, IRQ_TMP1 ; save FSR1 |
02096 movff FSR1H, IRQ_TMP3 |
02097 call MIOS_AIN_PinGet ; get value of analog pin |
02098 movff IRQ_TMP1, FSR1L ; restore FSR1 |
02099 movff IRQ_TMP3, FSR1H |
02100 SET_BSR TIA_BASE |
02101 rrf MIOS_PARAMETER2, F ; convert 10bit to 8bit |
02102 rrf MIOS_PARAMETER1, F |
02103 rrf MIOS_PARAMETER2, F |
02104 rrf MIOS_PARAMETER1, W |
02105 |
02106 ;; biased at 0x80 |
02107 BRA_IFSET WREG, 7, ACCESS, TIA_SW_LFO_Hlp_WFBranch_Cont |
02108 xorlw 0x7f |
02109 addlw 1 |
02110 btfsc WREG, 7 |
02111 movlw 0x7f |
02112 #else |
4F32 0E80 02113 movlw 0x80 |
02114 #endif |
02115 ;; rgoto TIA_SW_LFO_Hlp_WFBranch_Cont |
02116 |
4F34 02117 TIA_SW_LFO_Hlp_WFBranch_Cont |
4F34 6E0B 02118 movwf IRQ_TMP1 |
02119 |
gpasm-0.13.7 beta setup_tia_cartridge.asm1-30-2014 10:42:05 PAGE 155 |
|
|
LOC OBJECT CODE LINE SOURCE TEXT |
VALUE |
|
02120 ;; process scaling (depth * scaled value) |
4F36 0B7F 02121 andlw 0x7f ; remove sign from value |
4F38 020C 02122 mulwf IRQ_TMP2 ; multiply with depth (in IRQ_TMP2) |
02123 ;; result in PROD[LH] |
02124 |
02125 ;; invert if DECINC flag not set |
02126 BRA_IFSET IRQ_TMP1, 7, ACCESS, TIA_SW_LFO_Hlp_Waveform_End |
4F3A BE0B M btfsc reg, bit, reg_a |
4F3C D002 M bra label |
4F3E 1EF3 02127 comf PRODL, F |
4F40 1EF4 02128 comf PRODH, F |
4F42 02129 TIA_SW_LFO_Hlp_Waveform_End |
4F42 0012 02130 return |
02131 |
02132 |
02133 ;; -------------------------------------------------------------------------- |
02134 ;; Help Function to sync all LFOs |
02135 ;; -------------------------------------------------------------------------- |
4F44 02136 TIA_SW_Hlp_SyncAllLFOs |
4F44 EE21 F0A0 02137 lfsr FSR2, TIA_LFO1_BASE + TIA_LFOx_MODE |
4F48 0E04 02138 movlw 0x04 |
4F4A 6E0B 02139 movwf IRQ_TMP1 |
4F4C 02140 TIA_SW_Hlp_SyncAllLFOs_Loop |
4F4C ECBB F027 02141 call TIA_SW_Hlp_SyncLFO_Now |
4F50 2E0B 02142 decfsz IRQ_TMP1, F |
02143 rgoto TIA_SW_Hlp_SyncAllLFOs_Loop |
4F52 D7FC M bra label |
4F54 0012 02144 return |
02145 |
02146 ;; -------------------------------------------------------------------------- |
02147 ;; Help Function for gate bit, syncs the LFOs |
02148 ;; In: TIA_Vx_PITCH_MOD | TIA_Vx_VOLUME_MOD | assigned filter flags |
02149 ;; -------------------------------------------------------------------------- |
4F56 02150 TIA_SW_Hlp_SyncLFOs |
4F56 EE21 F0A0 02151 lfsr FSR2, TIA_LFO1_BASE + TIA_LFOx_MODE |
4F5A 6E0B 02152 movwf IRQ_TMP1 |
4F5C D806 02153 rcall TIA_SW_Hlp_SyncSingleLFO |
4F5E 320B 02154 rrf IRQ_TMP1, F |
4F60 D804 02155 rcall TIA_SW_Hlp_SyncSingleLFO |
4F62 320B 02156 rrf IRQ_TMP1, F |
4F64 D802 02157 rcall TIA_SW_Hlp_SyncSingleLFO |
4F66 320B 02158 rrf IRQ_TMP1, F |
4F68 D800 02159 rcall TIA_SW_Hlp_SyncSingleLFO |
02160 |
02161 |
4F6A 02162 TIA_SW_Hlp_SyncSingleLFO |
02163 BRA_IFSET INDF2, LFOx_MODE_SYNC_ALL, ACCESS, TIA_SW_Hlp_SyncLFO_Now |
4F6A B4DF M btfsc reg, bit, reg_a |
4F6C D004 M bra label |
02164 BRA_IFCLR IRQ_TMP1, 0, ACCESS, TIA_SW_Hlp_SyncLFO_Skip |
4F6E A00B M btfss reg, bit, reg_a |
4F70 D00C M bra label |
02165 BRA_IFCLR INDF2, LFOx_MODE_SYNC, ACCESS, TIA_SW_Hlp_SyncLFO_Skip |
4F72 A2DF M btfss reg, bit, reg_a |
gpasm-0.13.7 beta setup_tia_cartridge.asm1-30-2014 10:42:05 PAGE 156 |
|
|
LOC OBJECT CODE LINE SOURCE TEXT |
VALUE |
|
4F74 D00A M bra label |
4F76 02166 TIA_SW_Hlp_SyncLFO_Now |
4F76 9EDF 02167 bcf INDF2, LFOx_MODE_DECINC |
4F78 2AD9 02168 incf FSR2L, F ; switch to LFO_x_RATE |
4F7A 2AD9 02169 incf FSR2L, F ; switch to LFO_x_CTR |
4F7C 6ADE 02170 clrf POSTINC2 ; clear counter, |
02171 ; switch to LFO_x_VALUE |
4F7E 0E80 02172 movlw 0x80 ; write 0x80 into value |
4F80 6EDE 02173 movwf POSTINC2 |
02174 ; switch to LFO_x_DEPTH |
4F82 2AD9 02175 incf FSR2L, F ; switch to LFO_x_RVALUE_L |
4F84 6ADE 02176 clrf POSTINC2 ; clear LFO_x_RAVLUE_L |
4F86 6ADE 02177 clrf POSTINC2 ; clear LFO_x_RAVLUE_H |
02178 |
4F88 0012 02179 return |
02180 |
4F8A 02181 TIA_SW_Hlp_SyncLFO_Skip |
4F8A 0E07 02182 movlw TIA_LFOx_RECORD_LEN ; switch to LFO_x+1_MODE |
4F8C 26D9 02183 addwf FSR2L, F |
4F8E 0012 02184 return |
02185 |
02186 ;; -------------------------------------------------------------------------- |
02187 ;; Help Function for gate bit, sets ENVs to attack mode |
02188 ;; In: TIA_Vx_ENVS | assigned filter flags |
02189 ;; -------------------------------------------------------------------------- |
4F90 02190 TIA_SW_Hlp_ENVAttack |
02191 ;; set envelope generators to attack mode if voice (or filter) has been assigned |
4F90 6E0B 02192 movwf IRQ_TMP1 |
02193 |
02194 ;movf IRQ_TMP1, W |
4F92 0B11 02195 andlw 0x11 |
4F94 E002 02196 bz TIA_SW_Hlp_ENVAttack_Not1 |
4F96 0E01 02197 movlw (1 << ENVx_MODE_ATTACK) |
4F98 6FD2 02198 movwf TIA_ENV1_BASE + TIA_ENVx_MODE, BANKED |
4F9A 02199 TIA_SW_Hlp_ENVAttack_Not1 |
02200 |
4F9A 500B 02201 movf IRQ_TMP1, W |
4F9C 0B22 02202 andlw 0x22 |
4F9E E002 02203 bz TIA_SW_Hlp_ENVAttack_Not2 |
4FA0 0E01 02204 movlw (1 << ENVx_MODE_ATTACK) |
4FA2 6FDD 02205 movwf TIA_ENV2_BASE + TIA_ENVx_MODE, BANKED |
4FA4 02206 TIA_SW_Hlp_ENVAttack_Not2 |
02207 |
4FA4 500B 02208 movf IRQ_TMP1, W |
4FA6 0B0C 02209 andlw 0x0c |
4FA8 E002 02210 bz TIA_SW_Hlp_ENVAttack_Not3 |
4FAA 0E01 02211 movlw (1 << ENVx_MODE_ATTACK) |
4FAC 6FBC 02212 movwf TIA_ENVAUD0_BASE + TIA_ENVx_MODE, BANKED |
4FAE 02213 TIA_SW_Hlp_ENVAttack_Not3 |
02214 |
4FAE 500B 02215 movf IRQ_TMP1, W |
4FB0 0BC0 02216 andlw 0xc0 |
4FB2 E002 02217 bz TIA_SW_Hlp_ENVAttack_Not4 |
4FB4 0E01 02218 movlw (1 << ENVx_MODE_ATTACK) |
gpasm-0.13.7 beta setup_tia_cartridge.asm1-30-2014 10:42:05 PAGE 157 |
|
|
LOC OBJECT CODE LINE SOURCE TEXT |
VALUE |
|
4FB6 6FC7 02219 movwf TIA_ENVAUD1_BASE + TIA_ENVx_MODE, BANKED |
4FB8 02220 TIA_SW_Hlp_ENVAttack_Not4 |
4FB8 0012 02221 return |
02222 |
02223 ;; -------------------------------------------------------------------------- |
02224 ;; Help Function for gate bit, sets ENVs to release mode |
02225 ;; In: TIA_Vx_ENVS | assigned filter flags |
02226 ;; -------------------------------------------------------------------------- |
4FBA 02227 TIA_SW_Hlp_ENVRelease |
02228 ;; set envelope generators to release mode if voice (or filter) has been assigned |
4FBA 6E0B 02229 movwf IRQ_TMP1 |
02230 |
4FBC 0B11 02231 andlw 0x11 |
4FBE E002 02232 bz TIA_SW_Hlp_ENVRelease_Not1 |
4FC0 0E08 02233 movlw (1 << ENVx_MODE_RELEASE) |
4FC2 6FD2 02234 movwf TIA_ENV1_BASE + TIA_ENVx_MODE, BANKED |
4FC4 02235 TIA_SW_Hlp_ENVRelease_Not1 |
02236 |
4FC4 500B 02237 movf IRQ_TMP1, W |
4FC6 0B22 02238 andlw 0x22 |
4FC8 E002 02239 bz TIA_SW_Hlp_ENVRelease_Not2 |
4FCA 0E08 02240 movlw (1 << ENVx_MODE_RELEASE) |
4FCC 6FDD 02241 movwf TIA_ENV2_BASE + TIA_ENVx_MODE, BANKED |
4FCE 02242 TIA_SW_Hlp_ENVRelease_Not2 |
02243 |
4FCE 500B 02244 movf IRQ_TMP1, W |
4FD0 0B0C 02245 andlw 0x0c |
4FD2 E002 02246 bz TIA_SW_Hlp_ENVRelease_Not3 |
4FD4 0E08 02247 movlw (1 << ENVx_MODE_RELEASE) |
4FD6 6FBC 02248 movwf TIA_ENVAUD0_BASE + TIA_ENVx_MODE, BANKED |
4FD8 02249 TIA_SW_Hlp_ENVRelease_Not3 |
02250 |
4FD8 500B 02251 movf IRQ_TMP1, W |
4FDA 0BC0 02252 andlw 0xc0 |
4FDC E002 02253 bz TIA_SW_Hlp_ENVRelease_Not4 |
4FDE 0E08 02254 movlw (1 << ENVx_MODE_RELEASE) |
4FE0 6FC7 02255 movwf TIA_ENVAUD1_BASE + TIA_ENVx_MODE, BANKED |
4FE2 02256 TIA_SW_Hlp_ENVRelease_Not4 |
4FE2 0012 02257 return |
02258 |
02259 ;; -------------------------------------------------------------------------- |
02260 ;; Help Function for TIA_SW_Pitch |
02261 ;; IN: TIA_Vx_TARGET_FRQ_LH in FSR2 |
02262 ;; OUT: new result in TIA_Vx_TARGET_FRQ_LH |
02263 ;; -------------------------------------------------------------------------- |
4FE4 02264 TIA_SW_Hlp_AddMul |
02265 BRA_IFCLR IRQ_TMP3, 0, ACCESS, TIA_SW_Hlp_AddMul_Pos |
4FE4 A00D M btfss reg, bit, reg_a |
4FE6 D00D M bra label |
4FE8 02266 TIA_SW_Hlp_AddMul_Neg |
02267 ;; calc MUL_A_[LH] = TIA_Vx_FRQ_[LH] - MIOS_PARAMETER[12] |
4FE8 5003 02268 movf MIOS_PARAMETER1, W |
4FEA 5CDE 02269 subwf POSTINC2, W ; TIA_Vx_TARGET_FRQ_LH+0, W, BANKED |
4FEC 6FF8 02270 movwf MUL_A_L, BANKED |
gpasm-0.13.7 beta setup_tia_cartridge.asm1-30-2014 10:42:05 PAGE 158 |
|
|
LOC OBJECT CODE LINE SOURCE TEXT |
VALUE |
|
4FEE 5004 02271 movf MIOS_PARAMETER2, W |
4FF0 58DD 02272 subwfb POSTDEC2, W ; TIA_Vx_TARGET_FRQ_LH+1, W, BANKED |
4FF2 6FF9 02273 movwf MUL_A_H, BANKED |
02274 |
02275 ;; calc MUL_R_[12] = MUL_A_[LH] * MUL_B_[LH] |
4FF4 ECDE F019 02276 call MATH_MUL16_16 |
02277 ;; TIA_Vx_FRQ -= result |
4FF8 51FD 02278 movf MUL_R_1, W, BANKED |
4FFA 5EDE 02279 subwf POSTINC2, F ; TIA_Vx_TARGET_FRQ_LH+0, F, BANKED |
4FFC 51FE 02280 movf MUL_R_2, W, BANKED |
4FFE 5ADD 02281 subwfb POSTDEC2, F ; TIA_Vx_TARGET_FRQ_LH+1, F, BANKED |
5000 0012 02282 return |
02283 |
5002 02284 TIA_SW_Hlp_AddMul_Pos |
02285 ;; calc MUL_A_[LH] = MIOS_PARAMETER[12] - TIA_Vx_FRQ_[LH] |
5002 50DE 02286 movf POSTINC2, W ; TIA_Vx_TARGET_FRQ_LH+0, W, BANKED |
5004 5C03 02287 subwf MIOS_PARAMETER1, W |
5006 6FF8 02288 movwf MUL_A_L, BANKED |
5008 50DD 02289 movf POSTDEC2, W ; TIA_Vx_TARGET_FRQ_LH+1, W, BANKED |
500A 5804 02290 subwfb MIOS_PARAMETER2, W |
500C 6FF9 02291 movwf MUL_A_H, BANKED |
02292 |
02293 ;; calc MUL_R_[12] = MUL_A_[LH] * MUL_B_[LH] |
500E ECDE F019 02294 call MATH_MUL16_16 |
02295 ;; TIA_Vx_FRQ += result |
5012 51FD 02296 movf MUL_R_1, W, BANKED |
5014 26DE 02297 addwf POSTINC2, F ; TIA_Vx_TARGET_FRQ_LH+0, F, BANKED |
5016 51FE 02298 movf MUL_R_2, W, BANKED |
5018 22DD 02299 addwfc POSTDEC2, F ; TIA_Vx_TARGET_FRQ_LH+1, F, BANKED |
501A 0012 02300 return |
02301 |
02302 |
02303 ;; -------------------------------------------------------------------------- |
02304 ;; Help Function for TIA_SW_Pitch |
02305 ;; IN: addend and IRQ_TMP[12], TIA_Vx_TARGET_FRQ_LH in FSR2 |
02306 ;; OUT: new result in TIA_Vx_TARGET_FRQ_LH |
02307 ;; -------------------------------------------------------------------------- |
501C 02308 TIA_SW_Hlp_Add16 |
02309 ;; divide / 4 for a better scaling |
02310 ;clrc |
02311 ;rrf IRQ_TMP2, F |
02312 ;rrf IRQ_TMP1, F |
02313 ;clrc |
02314 ;rrf IRQ_TMP2, F |
02315 ;rrf IRQ_TMP1, F |
02316 |
02317 BRA_IFCLR IRQ_TMP3, 0, ACCESS, TIA_SW_Hlp_Add16_Pos |
501C A00D M btfss reg, bit, reg_a |
501E D008 M bra label |
5020 02318 TIA_SW_Hlp_Add16_Neg |
02319 ;; TIA_Vx_TARGET_FRQ -= MOD |
5020 500B 02320 movf IRQ_TMP1, W |
5022 5EDE 02321 subwf POSTINC2, F ; TIA_Vx_TARGET_FRQ_LH+0, F, BANKED |
5024 500C 02322 movf IRQ_TMP2, W |
gpasm-0.13.7 beta setup_tia_cartridge.asm1-30-2014 10:42:05 PAGE 159 |
|
|
LOC OBJECT CODE LINE SOURCE TEXT |
VALUE |
|
5026 5ADD 02323 subwfb POSTDEC2, F ; TIA_Vx_TARGET_FRQ_LH+1, F, BANKED |
02324 ;; saturate on overflow |
5028 E202 02325 bc TIA_SW_Hlp_Add16_Neg_End |
502A 6ADE 02326 clrf POSTINC2 ; TIA_Vx_TARGET_FRQ_LH+0, BANKED |
502C 6ADD 02327 clrf POSTDEC2 ; TIA_Vx_TARGET_FRQ_LH+1, BANKED |
502E 02328 TIA_SW_Hlp_Add16_Neg_End |
502E 0012 02329 return |
02330 |
5030 02331 TIA_SW_Hlp_Add16_Pos |
02332 ;; TIA_Vx_TARGET_FRQ += MOD |
5030 500B 02333 movf IRQ_TMP1, W |
5032 26DE 02334 addwf POSTINC2, F ; TIA_Vx_TARGET_FRQ_LH+0, F, BANKED |
5034 500C 02335 movf IRQ_TMP2, W |
5036 22DD 02336 addwfc POSTDEC2, F ; TIA_Vx_TARGET_FRQ_LH+1, F, BANKED |
02337 ;; saturate on overflow (set frequency to zero to avoid unwanted HF beeps) |
5038 E302 02338 bnc TIA_SW_Hlp_Add16_Pos_End |
503A 68DE 02339 setf POSTINC2 ; TIA_Vx_TARGET_FRQ_LH+0, BANKED |
503C 68DD 02340 setf POSTDEC2 ; TIA_Vx_TARGET_FRQ_LH+1, BANKED |
503E 02341 TIA_SW_Hlp_Add16_Pos_End |
503E 0012 02342 return |
02343 |
02344 |
02345 ;; -------------------------------------------------------------------------- |
02346 ;; Help Function for TIA_SW_ENV, etc. |
02347 ;; IN: 7-bit signed value in WREG |
02348 ;; OUT: absolute value (0x00-0x3f) in WREG |
02349 ;; -------------------------------------------------------------------------- |
5040 02350 TIA_SW_Hlp_Abs7 |
5040 50E8 02351 movf WREG, W |
5042 B4D8 02352 skpnz |
5044 0F01 02353 addlw 1 |
5046 ACE8 02354 btfss WREG, 6 |
5048 0840 02355 sublw 0x40 |
504A 0B3F 02356 andlw 0x3f |
504C 0012 02357 return |
02358 |
02359 ;; -------------------------------------------------------------------------- |
02360 ;; Help Function for TIA_SW_ENV |
02361 ;; IN: ENV_x_CTR_H in IRQ_TMP1 |
02362 ;; ENV_x_CURVE in IRQ_TMP2 |
02363 ;; ENV_x_ATTACK/ENV_x_DECAY or ENV_x_SUSTAIN in IRQ_TMP3 |
02364 ;; WREG != 0: use curve, WREG == 0: don't use curve parameter |
02365 ;; OUT: value which should be added to - or subtracted from - ENV_x_CTR_[LH] |
02366 ;; low-byte in WREG and MIOS_PARAMETER1; high-byte in MIOS_PARAMETER2 |
02367 ;; -------------------------------------------------------------------------- |
504E 02368 TIA_SW_ENV_GetBendedValue |
504E E103 02369 bnz TIA_SW_ENV_GetBendedValue_Curve |
02370 |
02371 ;; curve not selected, get value from ENV_TABLE |
5050 500D 02372 movf IRQ_TMP3, W |
5052 EFA3 F030 02373 goto TIA_ENV_TABLE_Get |
02374 |
5056 02375 TIA_SW_ENV_GetBendedValue_Curve |
02376 ;; return ENV_x_DECAY when ENV_x_CURVE == 0x40 |
gpasm-0.13.7 beta setup_tia_cartridge.asm1-30-2014 10:42:05 PAGE 160 |
|
|
LOC OBJECT CODE LINE SOURCE TEXT |
VALUE |
|
5056 0E40 02377 movlw 0x40 |
5058 620C 02378 cpfseq IRQ_TMP2, ACCESS |
02379 rgoto TIA_SW_ENV_GetBendedValue_UD |
505A D002 M bra label |
505C 1C0D 02380 comf IRQ_TMP3, W |
02381 rgoto TIA_SW_ENV_GetBendedValue_Cont |
505E D011 M bra label |
02382 |
5060 02383 TIA_SW_ENV_GetBendedValue_UD |
02384 ;; feedback: calculate ABS7(CURVE) * ENV_x_CTR_H |
5060 500C 02385 movf IRQ_TMP2, W ; get absolute value of curve parameter |
5062 DFEE 02386 rcall TIA_SW_Hlp_Abs7 |
5064 020B 02387 mulwf IRQ_TMP1, ACCESS ; multiply with current counter value |
02388 |
02389 ;; when CURVE parameter < 0x40: bend down, else up |
02390 BRA_IFCLR IRQ_TMP2, 6, ACCESS, TIA_SW_ENV_GetBendedValue_Down |
5066 AC0C M btfss reg, bit, reg_a |
5068 D007 M bra label |
506A 02391 TIA_SW_ENV_GetBendedValue_Up |
506A 1E0D 02392 comf IRQ_TMP3, F |
506C 9E0D 02393 bcf IRQ_TMP3, 7 |
506E 50F4 02394 movf PRODH, W |
5070 5C0D 02395 subwf IRQ_TMP3, W |
5072 BEE8 02396 btfsc WREG, 7 |
5074 0E00 02397 movlw 0x00 |
02398 rgoto TIA_SW_ENV_GetBendedValue_Cont |
5076 D005 M bra label |
02399 |
5078 02400 TIA_SW_ENV_GetBendedValue_Down |
5078 1C0D 02401 comf IRQ_TMP3, W |
507A 0B7F 02402 andlw 0x7f |
507C 24F4 02403 addwf PRODH, W |
507E BEE8 02404 btfsc WREG, 7 |
5080 0E7F 02405 movlw 0x7f |
02406 ;; rgoto TIA_SW_ENV_GetBendedValue_Cont |
02407 |
5082 02408 TIA_SW_ENV_GetBendedValue_Cont |
5082 0B7F 02409 andlw 0x7f |
5084 EF41 F018 02410 goto TIA_FRQ_TABLE_Get |
02411 |
02412 |
02413 ;; -------------------------------------------------------------------------- |
02414 ;; Help Function used from tia_midi.inc and tia_ccin.inc to reset ENV2 |
02415 ;; -------------------------------------------------------------------------- |
5088 02416 TIA_SW_Hlp_ENV2Reset |
02417 SET_BSR TIA_BASE |
5088 0101 M movlb HIGH(reg) |
02418 |
508A 0E01 02419 movlw (1 << ENVx_MODE_ATTACK) |
508C 6FC7 02420 movwf TIA_ENVAUD1_BASE + TIA_ENVx_MODE, BANKED |
02421 |
508E 6BC8 02422 clrf TIA_ENVAUD1_BASE + TIA_ENVx_CTR_L, BANKED |
5090 6BC9 02423 clrf TIA_ENVAUD1_BASE + TIA_ENVx_CTR_H, BANKED |
02424 |
gpasm-0.13.7 beta setup_tia_cartridge.asm1-30-2014 10:42:05 PAGE 161 |
|
|
LOC OBJECT CODE LINE SOURCE TEXT |
VALUE |
|
5092 0012 02425 return |
02426 |
02427 |
02428 |
00385 ;#include "tia_wt.inc" |
00386 #include "tia_midi.inc" |
00001 ; $Id: tia_midi.inc bdupeyron.tech@gmail.com(Antichambre) |
00002 ; |
00003 ; MIDIbox TIA |
00004 ; MIDI Interface part |
00005 ; |
00006 ; ========================================================================== |
00007 ; |
00008 ; Copyright 1998-2006 Thorsten Klose (tk@midibox.org) |
00009 ; Licensed for personal non-commercial use only. |
00010 ; All other rights reserved. |
00011 ; |
00012 ; ========================================================================== |
00013 |
00014 ;; -------------------------------------------------------------------------- |
00015 ;; This function is called by TIA_MPROC when a complete MIDI event has been |
00016 ;; received |
00017 ;; Input: |
00018 ;; o first MIDI event byte in MIOS_PARAMETER1 |
00019 ;; o second MIDI event byte in MIOS_PARAMETER2 |
00020 ;; o third MIDI event byte in MIOS_PARAMETER3 |
00021 ;; -------------------------------------------------------------------------- |
5094 00022 TIA_MIDI_NotifyReceivedEvent |
00023 |
00024 ;; branch to appr. TIA routine depending on received event |
5094 3803 00025 swapf MIOS_PARAMETER1, W |
5096 0B07 00026 andlw 0x07 |
00027 JUMPTABLE_2BYTES_UNSECURE |
5098 ECC8 F016 M call MIOS_HLP_GetIndex_2bytes |
00028 rgoto TIA_MIDI_NoteOff |
509C D040 M bra label |
00029 rgoto TIA_MIDI_NoteOn |
509E D006 M bra label |
00030 rgoto TIA_MIDI_AfterTouch |
50A0 D0C2 M bra label |
00031 rgoto TIA_MIDI_CC |
50A2 D081 M bra label |
00032 rgoto TIA_MIDI_ProgramChange |
50A4 D0A7 M bra label |
00033 rgoto TIA_MIDI_PolyAfterTouch |
50A6 D0BC M bra label |
00034 rgoto TIA_MIDI_PitchBender |
50A8 D06D M bra label |
50AA 0012 00035 return |
00036 |
00037 ;; -------------------------------------------------------------------------- |
00038 ;; This function is rcalled to forward a Note On event to the synthesizer |
00039 ;; Input: |
00040 ;; o first MIDI event byte in MIOS_PARAMETER1 |
gpasm-0.13.7 beta setup_tia_cartridge.asm1-30-2014 10:42:05 PAGE 162 |
|
|
LOC OBJECT CODE LINE SOURCE TEXT |
VALUE |
|
00041 ;; o second MIDI event byte in MIOS_PARAMETER2 |
00042 ;; o third MIDI event byte in MIOS_PARAMETER3 |
00043 ;; -------------------------------------------------------------------------- |
50AC 00044 TIA_MIDI_NoteOn |
50AC 5005 00045 movf MIOS_PARAMETER3, W ; branch to NoteOff if velocity is zero |
50AE B4D8 00046 skpnz |
00047 rgoto TIA_MIDI_NoteOff |
50B0 D036 M bra label |
00048 |
00049 |
00050 |
00051 SET_BSR TIA_BASE ; prepare BSR for TIA register access |
50B2 0101 M movlb HIGH(reg) |
00052 |
00053 BRA_IFCLR TIA_PLAY_MODE, TIA_PLAY_MODE_POLY, BANKED, TIA_MIDI_NoteOn_MonoMode |
50B4 A10C M btfss reg, bit, reg_a |
50B6 D00F M bra label |
50B8 00054 TIA_MIDI_NoteOn_PolyMode |
00055 ;; in poly mode we only react on MIDI channel of voice 1! |
50B8 5003 00056 movf MIOS_PARAMETER1, W ; leave routine if MIDI channel doesn't match |
50BA 0B0F 00057 andlw 0x0f |
50BC 6320 00058 cpfseq TIA_V1_BASE + TIA_Vx_MIDI_CHANNEL, BANKED |
50BE 0012 00059 return |
00060 |
00061 ;; in poly mode: determine free voice |
50C0 0E01 00062 movlw 0x01 |
50C2 5342 00063 movf TIA_V1_BASE + TIA_Vx_NOTE_STACK_0, F, BANKED |
50C4 E004 00064 bz TIA_MIDI_NoteOn_Poly_Cont |
50C6 0E02 00065 movlw 0x02 |
50C8 5382 00066 movf TIA_V2_BASE + TIA_Vx_NOTE_STACK_0, F, BANKED |
50CA E001 00067 bz TIA_MIDI_NoteOn_Poly_Cont |
00068 rgoto TIA_MIDI_NoteOn_Poly_Failed |
50CC D026 M bra label |
50CE 00069 TIA_MIDI_NoteOn_Poly_Cont |
50CE 6E0A 00070 movwf TMP5 ; TMP5 contains the voices which should be played |
50D0 D960 00071 rcall TIA_MIDI_GetAssignedKeys |
50D2 D95F 00072 rcall TIA_MIDI_GetAssignedKeys |
00073 rgoto TIA_MIDI_NoteOn_Start_Handlers |
50D4 D005 M bra label |
00074 |
50D6 00075 TIA_MIDI_NoteOn_MonoMode |
00076 ;; check for the assigned MIDI channels, result in TMP5 |
50D6 D938 00077 rcall TIA_MIDI_GetAssignedChannels |
50D8 D944 00078 rcall TIA_MIDI_GetAssignedVoices |
50DA D95B 00079 rcall TIA_MIDI_GetAssignedKeys |
00080 ;; leave routine if no voice is assigned to channel |
50DC B4D8 00081 skpnz |
50DE 0012 00082 return |
00083 |
50E0 00084 TIA_MIDI_NoteOn_Start_Handlers |
00085 IRQ_DISABLE |
50E0 9EF2 M bcf INTCON, GIE |
00086 |
00087 ;; --[ Voice 1 Handler ]-- |
gpasm-0.13.7 beta setup_tia_cartridge.asm1-30-2014 10:42:05 PAGE 163 |
|
|
LOC OBJECT CODE LINE SOURCE TEXT |
VALUE |
|
50E2 00088 TIA_MIDI_NoteOn_V1 |
00089 BRA_IFCLR TMP5, 0, ACCESS, TIA_MIDI_NoteOn_V1_Failed |
50E2 A00A M btfss reg, bit, reg_a |
50E4 D00C M bra label |
50E6 EE11 F042 00090 lfsr FSR1, TIA_V1_BASE + TIA_Vx_NOTE_STACK_0 ; push note to stack |
50EA D8A9 00091 rcall TIA_MIDI_Hlp_PushNote |
00092 BRA_IFSET WREG, 0, ACCESS, TIA_MIDI_NoteOn_V1_Failed ; exit if note already in stack |
50EC B0E8 M btfsc reg, bit, reg_a |
50EE D007 M bra label |
50F0 EE01 F020 00093 lfsr FSR0, TIA_V1_BASE |
50F4 5004 00094 movf MIOS_PARAMETER2, W ; note which should be disabled |
00095 ; RCALL_IFSET TIA_PLAY_MODE, TIA_PLAY_MODE_LEGATO_OFF, BANKED, TIA_MIDI_Hlp_GateOff ; request gate-off if !legato |
50F6 D8D4 00096 rcall TIA_MIDI_Hlp_NoteOn ; call note-on handler |
50F8 EE21 F020 00097 lfsr FSR2, TIA_V1_BASE ; sort notes for arpeggios |
50FC D966 00098 rcall TIA_MIDI_Arp_Sorter |
50FE 00099 TIA_MIDI_NoteOn_V1_Failed |
00100 |
00101 ;; --[ Voice 2 Handler ]-- |
50FE 00102 TIA_MIDI_NoteOn_V2 |
00103 BRA_IFCLR TMP5, 1, ACCESS, TIA_MIDI_NoteOn_V2_Failed |
50FE A20A M btfss reg, bit, reg_a |
5100 D00C M bra label |
5102 EE11 F082 00104 lfsr FSR1, TIA_V2_BASE + TIA_Vx_NOTE_STACK_0 ; push note to stack |
5106 D89B 00105 rcall TIA_MIDI_Hlp_PushNote |
00106 BRA_IFSET WREG, 0, ACCESS, TIA_MIDI_NoteOn_V2_Failed ; exit if note already in stack |
5108 B0E8 M btfsc reg, bit, reg_a |
510A D007 M bra label |
510C EE01 F060 00107 lfsr FSR0, TIA_V2_BASE |
5110 5004 00108 movf MIOS_PARAMETER2, W ; note which should be disabled |
00109 ; RCALL_IFSET TIA_PLAY_MODE, TIA_PLAY_MODE_LEGATO_OFF, BANKED, TIA_MIDI_Hlp_GateOff ; request gate-off if !legato |
5112 D8C6 00110 rcall TIA_MIDI_Hlp_NoteOn ; call note-on handler |
5114 EE21 F060 00111 lfsr FSR2, TIA_V2_BASE ; sort notes for arpeggios |
5118 D958 00112 rcall TIA_MIDI_Arp_Sorter |
511A 00113 TIA_MIDI_NoteOn_V2_Failed |
00114 |
511A 00115 TIA_MIDI_NoteOn_Poly_Failed |
00116 |
00117 IRQ_ENABLE |
511A 8EF2 M bsf INTCON, GIE |
511C 0012 00118 return |
00119 |
00120 ;; -------------------------------------------------------------------------- |
00121 ;; This function is rcalled to forward a Note Off event to the synthesizer |
00122 ;; Input: |
00123 ;; o first MIDI event byte in MIOS_PARAMETER1 |
00124 ;; o second MIDI event byte in MIOS_PARAMETER2 |
00125 ;; o third MIDI event byte in MIOS_PARAMETER3 |
00126 ;; -------------------------------------------------------------------------- |
511E 00127 TIA_MIDI_NoteOff |
00128 SET_BSR TIA_BASE ; prepare BSR for TIA register access |
511E 0101 M movlb HIGH(reg) |
00129 |
00130 ;; ensure that velocity is cleared |
5120 6A05 00131 clrf MIOS_PARAMETER3 |
gpasm-0.13.7 beta setup_tia_cartridge.asm1-30-2014 10:42:05 PAGE 164 |
|
|
LOC OBJECT CODE LINE SOURCE TEXT |
VALUE |
|
00132 |
00133 BRA_IFCLR TIA_PLAY_MODE, TIA_PLAY_MODE_POLY, BANKED, TIA_MIDI_NoteOff_MonoMode |
5122 A10C M btfss reg, bit, reg_a |
5124 D003 M bra label |
5126 00134 TIA_MIDI_NoteOff_PolyMode |
00135 ;; in poly mode, handle all channels |
5126 0E0F 00136 movlw 0x0f |
5128 6E0A 00137 movwf TMP5 |
00138 rgoto TIA_MIDI_NoteOff_Start_Handlers |
512A D005 M bra label |
512C 00139 TIA_MIDI_NoteOff_MonoMode |
00140 ;; check for the assigned MIDI channels, result in TMP5 |
512C D90D 00141 rcall TIA_MIDI_GetAssignedChannels |
512E D919 00142 rcall TIA_MIDI_GetAssignedVoices ; (not so optimal if split points modified during notes are played) |
5130 D930 00143 rcall TIA_MIDI_GetAssignedKeys |
00144 ;; leave routine if no voice is assigned to channel |
5132 B4D8 00145 skpnz |
5134 0012 00146 return |
00147 |
5136 00148 TIA_MIDI_NoteOff_Start_Handlers |
00149 IRQ_DISABLE |
5136 9EF2 M bcf INTCON, GIE |
00150 |
00151 ;; --[ Voice 1 Handler ]-- |
5138 00152 TIA_MIDI_NoteOff_V1 |
00153 BRA_IFCLR TMP5, 0, ACCESS, TIA_MIDI_NoteOff_V1_NotFnd |
5138 A00A M btfss reg, bit, reg_a |
513A D010 M bra label |
513C EE11 F042 00154 lfsr FSR1, TIA_V1_BASE + TIA_Vx_NOTE_STACK_0 ; pop note from stack |
5140 CFE7 F008 00155 movff INDF1, TMP3 ; save current #0 entry in TMP3 for later use |
5144 D895 00156 rcall TIA_MIDI_Hlp_PopNote |
00157 BRA_IFSET WREG, 0, ACCESS, TIA_MIDI_NoteOff_V1_NotFnd |
5146 B0E8 M btfsc reg, bit, reg_a |
5148 D009 M bra label |
514A EE01 F020 00158 lfsr FSR0, TIA_V1_BASE |
514E 5008 00159 movf TMP3, W ; restore note |
5150 D8DA 00160 rcall TIA_MIDI_Hlp_NoteOff |
00161 RCALL_IFSET WREG, 0, ACCESS, TIA_MIDI_Hlp_NoteOn |
5152 B0E8 M btfsc reg, bit, reg_a |
5154 D8A5 M rcall label |
5156 EE21 F020 00162 lfsr FSR2, TIA_V1_BASE ; sort notes for arpeggios |
515A D937 00163 rcall TIA_MIDI_Arp_Sorter |
515C 00164 TIA_MIDI_NoteOff_V1_NotFnd |
00165 |
00166 ;; --[ Voice 2 Handler ]-- |
515C 00167 TIA_MIDI_NoteOff_V2 |
00168 BRA_IFCLR TMP5, 1, ACCESS, TIA_MIDI_NoteOff_V2_NotFnd |
515C A20A M btfss reg, bit, reg_a |
515E D010 M bra label |
5160 EE11 F082 00169 lfsr FSR1, TIA_V2_BASE + TIA_Vx_NOTE_STACK_0 ; pop note from stack |
5164 CFE7 F008 00170 movff INDF1, TMP3 ; save current #0 entry in TMP3 for later use |
5168 D883 00171 rcall TIA_MIDI_Hlp_PopNote |
00172 BRA_IFSET WREG, 0, ACCESS, TIA_MIDI_NoteOff_V2_NotFnd |
516A B0E8 M btfsc reg, bit, reg_a |
gpasm-0.13.7 beta setup_tia_cartridge.asm1-30-2014 10:42:05 PAGE 165 |
|
|
LOC OBJECT CODE LINE SOURCE TEXT |
VALUE |
|
516C D009 M bra label |
516E EE01 F060 00173 lfsr FSR0, TIA_V2_BASE |
5172 5008 00174 movf TMP3, W ; restore note |
5174 D8C8 00175 rcall TIA_MIDI_Hlp_NoteOff |
00176 RCALL_IFSET WREG, 0, ACCESS, TIA_MIDI_Hlp_NoteOn |
5176 B0E8 M btfsc reg, bit, reg_a |
5178 D893 M rcall label |
517A EE21 F060 00177 lfsr FSR2, TIA_V2_BASE ; sort notes for arpeggios |
517E D925 00178 rcall TIA_MIDI_Arp_Sorter |
5180 00179 TIA_MIDI_NoteOff_V2_NotFnd |
00180 |
00181 IRQ_ENABLE |
5180 8EF2 M bsf INTCON, GIE |
5182 0012 00182 return |
00183 |
00184 |
00185 ;; -------------------------------------------------------------------------- |
00186 ;; This function is rcalled to forward a PitchBender event to the synthesizer |
00187 ;; Input: |
00188 ;; o first MIDI event byte in MIOS_PARAMETER1 |
00189 ;; o second MIDI event byte in MIOS_PARAMETER2 |
00190 ;; o third MIDI event byte in MIOS_PARAMETER3 |
00191 ;; -------------------------------------------------------------------------- |
5184 00192 TIA_MIDI_PitchBender |
00193 SET_BSR TIA_BASE |
5184 0101 M movlb HIGH(reg) |
5186 3404 00194 rlf MIOS_PARAMETER2, W |
5188 0BFE 00195 andlw 0xfe |
518A 0A80 00196 xorlw 0x80 |
518C 6E04 00197 movwf MIOS_PARAMETER2 |
00198 |
518E 5003 00199 movf MIOS_PARAMETER1, W ; leave routine if MIDI channel doesn't match |
5190 0B0F 00200 andlw 0x0f |
5192 00201 TIA_MIDI_PitchBender_v1 |
5192 6320 00202 cpfseq TIA_V1_BASE + TIA_Vx_MIDI_CHANNEL, BANKED |
00203 rgoto TIA_MIDI_PitchBender_v2 |
5194 D003 M bra label |
5196 5004 00204 movf MIOS_PARAMETER2, W |
5198 6F2B 00205 movwf TIA_V1_BASE + TIA_Vx_PITCHBENDER, BANKED |
00206 rgoto TIA_MIDI_PitchBender_End |
519A D004 M bra label |
00207 |
519C 00208 TIA_MIDI_PitchBender_v2 |
519C 6360 00209 cpfseq TIA_V2_BASE + TIA_Vx_MIDI_CHANNEL, BANKED |
00210 rgoto TIA_MIDI_PitchBender_End |
519E D002 M bra label |
51A0 5004 00211 movf MIOS_PARAMETER2, W |
51A2 6F6B 00212 movwf TIA_V2_BASE + TIA_Vx_PITCHBENDER, BANKED |
51A4 00213 TIA_MIDI_PitchBender_End |
51A4 0012 00214 return |
00215 |
00216 ;; -------------------------------------------------------------------------- |
00217 ;; This function is rcalled to forward a Controller event to the synthesizer |
00218 ;; Input: |
gpasm-0.13.7 beta setup_tia_cartridge.asm1-30-2014 10:42:05 PAGE 166 |
|
|
LOC OBJECT CODE LINE SOURCE TEXT |
VALUE |
|
00219 ;; o first MIDI event byte in MIOS_PARAMETER1 |
00220 ;; o second MIDI event byte in MIOS_PARAMETER2 |
00221 ;; o third MIDI event byte in MIOS_PARAMETER3 |
00222 ;; -------------------------------------------------------------------------- |
51A6 00223 TIA_MIDI_CC |
00224 SET_BSR TIA_BASE |
51A6 0101 M movlb HIGH(reg) |
00225 |
00226 ;; special treatment for CC#0 (bank change) |
51A8 5004 00227 movf MIOS_PARAMETER2, W |
51AA E11A 00228 bnz TIA_MIDI_CC_No00 |
51AC 00229 TIA_MIDI_CC_00 |
00230 ;; exit if bank number >= DEFAULT_BS_KBANK_ID*4 |
51AC 0E14 00231 movlw DEFAULT_BS_KBANK_ID*4 |
51AE 6005 00232 cpfslt MIOS_PARAMETER3 |
51B0 0012 00233 return |
00234 |
51B2 5003 00235 movf MIOS_PARAMETER1, W ; leave routine if MIDI channel doesn't match |
51B4 0B0F 00236 andlw 0x0f |
51B6 6320 00237 cpfseq TIA_V1_BASE + TIA_Vx_MIDI_CHANNEL, BANKED |
51B8 0012 00238 return |
00239 |
51BA C005 F014 00240 movff MIOS_PARAMETER3, TIA_PBANK |
00241 |
00242 ;; Int.Patch if ==0 |
51BE 5013 00243 movf TIA_PATCH, W |
51C0 E00C 00244 bz TIA_MIDI_CC_00_Ok |
00245 |
00246 ;; Banstick Ready |
51C2 5014 00247 movf TIA_PBANK, W |
51C4 ECBE F01E 00248 call TIA_BANK_GetBankStickReady |
51C8 B4D8 00249 skpnz |
51CA 6A13 00250 clrf TIA_PATCH ;; to Int. Patch if BS not ready |
00251 |
00252 ;; Banstick Size |
51CC ECCB F01E 00253 call TIA_BANK_GetBankStickSize |
51D0 E104 00254 bnz TIA_MIDI_CC_00_Ok |
00255 ;; 64/128 patches |
51D2 5013 00256 movf TIA_PATCH, W |
51D4 0BC0 00257 andlw 0xc0 |
51D6 A4D8 00258 skpz |
51D8 6A13 00259 clrf TIA_PATCH ;; to Int. Patch if >63 |
00260 |
51DA 00261 TIA_MIDI_CC_00_Ok |
51DA ECAD F01D 00262 call TIA_PATCH_Init |
00263 ;;goto USER_DISPLAY_Init |
51DE 00264 TIA_MIDI_CC_00_End |
51DE 0012 00265 return |
00266 |
00267 |
51E0 00268 TIA_MIDI_CC_No00 |
51E0 5003 00269 movf MIOS_PARAMETER1, W ; leave routine if MIDI channel doesn't match |
51E2 0B0F 00270 andlw 0x0f |
51E4 6320 00271 cpfseq TIA_V1_BASE + TIA_Vx_MIDI_CHANNEL, BANKED |
gpasm-0.13.7 beta setup_tia_cartridge.asm1-30-2014 10:42:05 PAGE 167 |
|
|
LOC OBJECT CODE LINE SOURCE TEXT |
VALUE |
|
51E6 0012 00272 return |
00273 |
00274 ;; forward CC to CCIN_Set routine |
51E8 C005 F003 00275 movff MIOS_PARAMETER3, MIOS_PARAMETER1 |
51EC 5004 00276 movf MIOS_PARAMETER2, W |
51EE ECD9 F02D 00277 call TIA_CCIN_Set |
00278 |
51F2 0012 00279 return |
00280 |
00281 |
00282 ;; -------------------------------------------------------------------------- |
00283 ;; This function is rcalled to forward a Program Change event to the synthesizer |
00284 ;; Input: |
00285 ;; o first MIDI event byte in MIOS_PARAMETER1 |
00286 ;; o second MIDI event byte in MIOS_PARAMETER2 |
00287 ;; -------------------------------------------------------------------------- |
51F4 00288 TIA_MIDI_ProgramChange |
00289 SET_BSR TIA_BASE |
51F4 0101 M movlb HIGH(reg) |
00290 |
51F6 5003 00291 movf MIOS_PARAMETER1, W ; leave routine if MIDI channel doesn't match |
51F8 0B0F 00292 andlw 0x0f |
51FA 6320 00293 cpfseq TIA_V1_BASE + TIA_Vx_MIDI_CHANNEL, BANKED |
51FC 0012 00294 return |
00295 |
00296 ;; Int.Patch if ==0 |
51FE 5004 00297 movf MIOS_PARAMETER2, W |
5200 E00A 00298 bz TIA_MIDI_ProgramChange_Ok |
00299 |
00300 ;; Banstick Ready |
5202 5014 00301 movf TIA_PBANK, W |
5204 ECBE F01E 00302 call TIA_BANK_GetBankStickReady |
5208 B4D8 00303 skpnz |
520A 6A04 00304 clrf MIOS_PARAMETER2 |
00305 |
00306 ;; Banstick Size |
520C ECCB F01E 00307 call TIA_BANK_GetBankStickSize |
5210 E102 00308 bnz TIA_MIDI_ProgramChange_Ok |
00309 ;; 64/128 patches |
5212 BC04 00310 btfsc MIOS_PARAMETER2, 6 |
00311 rgoto TIA_MIDI_ProgramChange_End |
5214 D004 M bra label |
00312 |
5216 00313 TIA_MIDI_ProgramChange_Ok |
5216 C004 F013 00314 movff MIOS_PARAMETER2, TIA_PATCH |
521A ECAD F01D 00315 call TIA_PATCH_Init |
00316 ;;goto USER_DISPLAY_Init |
521E 00317 TIA_MIDI_ProgramChange_End |
521E 0012 00318 return |
00319 |
00320 ;; -------------------------------------------------------------------------- |
00321 ;; This function is rcalled to forward a Poly Aftertouch event to the synthesizer |
00322 ;; Input: |
00323 ;; o first MIDI event byte in MIOS_PARAMETER1 |
gpasm-0.13.7 beta setup_tia_cartridge.asm1-30-2014 10:42:05 PAGE 168 |
|
|
LOC OBJECT CODE LINE SOURCE TEXT |
VALUE |
|
00324 ;; o second MIDI event byte in MIOS_PARAMETER2 |
00325 ;; -------------------------------------------------------------------------- |
5220 00326 TIA_MIDI_PolyAfterTouch |
5220 C004 F005 00327 movff MIOS_PARAMETER2, MIOS_PARAMETER3 |
00328 rgoto TIA_MIDI_AfterTouch |
5224 D000 M bra label |
00329 |
00330 ;; -------------------------------------------------------------------------- |
00331 ;; This function is rcalled to forward a Aftertouch event to the synthesizer |
00332 ;; Input: |
00333 ;; o first MIDI event byte in MIOS_PARAMETER1 |
00334 ;; o second MIDI event byte in MIOS_PARAMETER2 |
00335 ;; o third MIDI event byte in MIOS_PARAMETER3 |
00336 ;; -------------------------------------------------------------------------- |
5226 00337 TIA_MIDI_AfterTouch |
00338 SET_BSR TIA_BASE |
5226 0101 M movlb HIGH(reg) |
00339 |
5228 5003 00340 movf MIOS_PARAMETER1, W ; leave routine if MIDI channel doesn't match |
522A 0B0F 00341 andlw 0x0f |
522C 6320 00342 cpfseq TIA_V1_BASE + TIA_Vx_MIDI_CHANNEL, BANKED |
522E 0012 00343 return |
00344 |
5230 5005 00345 movf MIOS_PARAMETER3, W |
5232 00346 _TIA_MIDI_AfterTouch |
5232 6E03 00347 movwf MIOS_PARAMETER1 |
00348 SET_BSR TIA_BASE ; prepare BSR for TIA register access |
5234 0101 M movlb HIGH(reg) |
5236 EE11 F0E8 00349 lfsr FSR1, TIA_CTRL_AFTERTOUCH_BASE; prepare FSR1 |
523A EF9D F02E 00350 goto TIA_CCIN_Cmd_AFTERTOUCH ; set aftertouch value |
00351 |
00352 |
00353 ;; -------------------------------------------------------------------------- |
00354 ;; help routines |
00355 ;; -------------------------------------------------------------------------- |
00356 |
00357 ;; ------------------------------------------------------------------ |
00358 ;; Push a note into the stack |
00359 ;; ------------------------------------------------------------------ |
523E 00360 TIA_MIDI_Hlp_PushNote |
523E 6A06 00361 clrf TMP1 |
00362 ;; do nothing if note is already stored in note stack |
5240 00363 TIA_MIDI_Hlp_PushNote_CheckLoop |
5240 5006 00364 movf TMP1, W |
5242 50E3 00365 movf PLUSW1, W |
5244 1804 00366 xorwf MIOS_PARAMETER2, W |
5246 B4D8 00367 skpnz |
00368 rgoto TIA_MIDI_Hlp_PushNote_Failed ; leave note routine if note already stored |
5248 D012 M bra label |
524A 2A06 00369 incf TMP1, F |
524C 0E04 00370 movlw TIA_NOTE_STACK_LEN |
524E 6206 00371 cpfseq TMP1, ACCESS |
00372 rgoto TIA_MIDI_Hlp_PushNote_CheckLoop |
5250 D7F7 M bra label |
gpasm-0.13.7 beta setup_tia_cartridge.asm1-30-2014 10:42:05 PAGE 169 |
|
|
LOC OBJECT CODE LINE SOURCE TEXT |
VALUE |
|
00373 |
00374 ;; shift right note stack |
5252 0E02 00375 movlw (TIA_NOTE_STACK_LEN-2) |
5254 6E06 00376 movwf TMP1 |
5256 00377 TIA_MIDI_Hlp_PushNote_ShiftLoop |
5256 5006 00378 movf TMP1, W |
5258 CFE3 F007 00379 movff PLUSW1, TMP2 |
525C 2806 00380 incf TMP1, W |
525E C007 FFE3 00381 movff TMP2, PLUSW1 |
5262 0606 00382 decf TMP1, F |
5264 2806 00383 incf TMP1, W |
5266 E1F7 00384 bnz TIA_MIDI_Hlp_PushNote_ShiftLoop |
00385 |
00386 ;; store new note at offset 0 |
5268 C004 FFE7 00387 movff MIOS_PARAMETER2, INDF1 |
00388 |
526C 0C00 00389 retlw 0x00 ; return 0x00 as error status |
00390 |
526E 00391 TIA_MIDI_Hlp_PushNote_Failed |
526E 0C01 00392 retlw 0x01 ; return 0x01 as error status |
00393 |
00394 ;; ------------------------------------------------------------------ |
00395 |
00396 ;; ------------------------------------------------------------------ |
00397 ;; Pop a note from the stack |
00398 ;; ------------------------------------------------------------------ |
5270 00399 TIA_MIDI_Hlp_PopNote |
00400 ; search for note entry with the same number, erase it and push the entries behind |
5270 6A06 00401 clrf TMP1 |
5272 00402 TIA_MIDI_Hlp_PopNote_SearchLoop |
5272 5006 00403 movf TMP1, W |
5274 50E3 00404 movf PLUSW1, W |
5276 1804 00405 xorwf MIOS_PARAMETER2, W |
5278 E005 00406 bz TIA_MIDI_Hlp_PopNote_Found |
527A 2A06 00407 incf TMP1, F |
527C 0E04 00408 movlw TIA_NOTE_STACK_LEN |
527E 6206 00409 cpfseq TMP1, ACCESS |
00410 rgoto TIA_MIDI_Hlp_PopNote_SearchLoop |
5280 D7F8 M bra label |
00411 rgoto TIA_MIDI_Hlp_PopNote_Failed |
5282 D00D M bra label |
5284 00412 TIA_MIDI_Hlp_PopNote_Found |
00413 |
00414 ;; push the entries behind the found entry |
5284 00415 TIA_MIDI_Hlp_PopNote_ShiftLoop |
5284 2806 00416 incf TMP1, W |
5286 CFE3 F007 00417 movff PLUSW1, TMP2 |
528A 5006 00418 movf TMP1, W |
528C C007 FFE3 00419 movff TMP2, PLUSW1 |
5290 2A06 00420 incf TMP1, F |
5292 0E04 00421 movlw TIA_NOTE_STACK_LEN |
5294 6206 00422 cpfseq TMP1, ACCESS |
00423 rgoto TIA_MIDI_Hlp_PopNote_ShiftLoop |
5296 D7F6 M bra label |
gpasm-0.13.7 beta setup_tia_cartridge.asm1-30-2014 10:42:05 PAGE 170 |
|
|
LOC OBJECT CODE LINE SOURCE TEXT |
VALUE |
|
00424 ;; clear the last entry |
5298 0E03 00425 movlw TIA_NOTE_STACK_LEN-1 |
529A 6AE3 00426 clrf PLUSW1 |
529C 0C00 00427 retlw 0x00 ; return with 0x00: note deleted from stack |
00428 |
529E 00429 TIA_MIDI_Hlp_PopNote_Failed |
529E 0C01 00430 retlw 0x01 ; return with 0x01: note not found in stack |
00431 |
00432 ;; ------------------------------------------------------------------ |
00433 |
00434 ;; ------------------------------------------------------------------ |
00435 ;; Note On help function |
00436 ;; ------------------------------------------------------------------ |
52A0 00437 TIA_MIDI_Hlp_NoteOn |
00438 ; BRA_IFCLR TIA_PLAY_MODE, TIA_PLAY_MODE_ONLY_WT_OFF, BANKED, TIA_MIDI_Hlp_NoteOn_NoNewNote |
52A0 00439 TIA_MIDI_Hlp_NoteOn_NewNote |
52A0 0E10 00440 movlw TIA_Vx_NOTE |
52A2 CFEB FFF5 00441 movff PLUSW0, TABLAT |
52A6 CFE7 FFEB 00442 movff INDF1, PLUSW0 |
52AA 00443 TIA_MIDI_Hlp_NoteOn_NoNewNote |
00444 |
00445 ;; if sus-key enabled, skip enable portamento when only one key pressed |
00446 ; BRA_IFCLR TIA_PLAY_MODE, TIA_PLAY_MODE_SUS_KEY, BANKED, TIA_MIDI_Hlp_NoteOn_SusKeyPor |
00447 |
00448 ;; special case: don't disable portamento on a note off event |
00449 ; movf MIOS_PARAMETER3, W |
00450 ; bz TIA_MIDI_Hlp_NoteOn_SusKeySkip |
00451 |
00452 ; movlw TIA_Vx_STAT |
00453 ; bcf PLUSW0, Vx_STAT_PORTA_ENABLE |
00454 |
00455 ; movlw 0x01 |
00456 ; movf PLUSW1, W |
00457 ; bz TIA_MIDI_Hlp_NoteOn_SusKeyNoPor |
00458 |
52AA 00459 TIA_MIDI_Hlp_NoteOn_SusKeyPor |
00460 ;BRA_IFSET TIA_SE_OPTION, SE_OPTION_ENV2PORTA, BANKED, TIA_MIDI_Hlp_NoteOn_SusKeyPor_NC |
00461 ;; enable portamento if rate is > 0 |
00462 |
52AA 0E0E 00463 movlw TIA_Vx_PORTA_RATE |
52AC 50EB 00464 movf PLUSW0, W |
52AE E012 00465 bz TIA_MIDI_Hlp_NoteOn_SusKeyNoPor |
52B0 00466 TIA_MIDI_Hlp_NoteOn_SusKeyPor_NC |
52B0 0E03 00467 movlw TIA_Vx_STAT |
52B2 88EB 00468 bsf PLUSW0, Vx_STAT_PORTA_ENABLE |
00469 |
00470 ;; store current frequency in TIA_Vx_PORTA_FRQ_L |
00471 |
52B4 0E09 00472 movlw TIA_Vx_FRQ_L |
52B6 CFEB F006 00473 movff PLUSW0, TMP1 |
52BA 0E0A 00474 movlw TIA_Vx_FRQ_H |
52BC CFEB F007 00475 movff PLUSW0, TMP2 |
00476 |
52C0 0E1C 00477 movlw TIA_Vx_PORTA_FRQ_L |
gpasm-0.13.7 beta setup_tia_cartridge.asm1-30-2014 10:42:05 PAGE 171 |
|
|
LOC OBJECT CODE LINE SOURCE TEXT |
VALUE |
|
52C2 C006 FFEB 00478 movff TMP1, PLUSW0 |
52C6 0E1D 00479 movlw TIA_Vx_PORTA_FRQ_H |
52C8 C007 FFEB 00480 movff TMP2, PLUSW0 |
00481 |
52CC 0E1A 00482 movlw TIA_Vx_PORTA_CTR_L |
52CE 6AEB 00483 clrf PLUSW0 |
52D0 0E1B 00484 movlw TIA_Vx_PORTA_CTR_H |
52D2 6AEB 00485 clrf PLUSW0 |
00486 |
00487 ;; reset Porta counter if constant time flag enabled |
00488 ;movlw TIA_Vx_MODE |
00489 ;CALL_IFSET PLUSW0, Vx_MODE_PORTA_CONST, ACCESS, TIA_SW_Hlp_PortaCTR_Reset |
00490 |
52D4 00491 TIA_MIDI_Hlp_NoteOn_SusKeyNoPor |
00492 ;TIA_MIDI_Hlp_NoteOn_SusKeySkip |
00493 |
00494 ;; always re-init arpeggiator (in mono as well as in legato mode) |
52D4 0E15 00495 movlw TIA_Vx_ARP_CTR |
52D6 6AEB 00496 clrf PLUSW0 |
52D8 0E14 00497 movlw TIA_Vx_ARP_NOTE_NUMBER |
52DA 6AEB 00498 clrf PLUSW0 ; (next increment will play the second note) |
00499 |
00500 ;; skip the rest if legato mode and current note is first note |
00501 ; BRA_IFSET TIA_PLAY_MODE, TIA_PLAY_MODE_LEGATO_OFF, BANKED, TIA_MIDI_Hlp_NoteOn_TrgGateNL |
00502 ; movf MIOS_PARAMETER2, W |
00503 ; cpfseq INDF1, ACCESS |
00504 ; rgoto TIA_MIDI_Hlp_NoteOn_TrgGateLSkp |
00505 ; movlw 0x01 |
00506 ; movf PLUSW1, W |
00507 ; bnz TIA_MIDI_Hlp_NoteOn_TrgGateLSkp |
00508 ;TIA_MIDI_Hlp_NoteOn_TrgGateNL |
00509 |
00510 ;; request gate bit |
52DC D81C 00511 rcall TIA_MIDI_Hlp_GateOn |
00512 |
00513 |
00514 ;; ---[ END handle velocity ]--- |
00515 |
00516 ;; ---[ BEGIN handle velocity ]--- |
00517 |
52DE C003 F006 00518 movff MIOS_PARAMETER1, TMP1 ; store MIOS_PARAMETER1 |
52E2 C004 F007 00519 movff MIOS_PARAMETER2, TMP2 ; store MIOS_PARAMETER2 |
52E6 5005 00520 movf MIOS_PARAMETER3, W ; copy velocity value to MIOS_PARAMETER1 |
52E8 E00D 00521 bz TIA_MIDI_Hlp_NoteOn_NoVel; no velocity on note off! |
52EA 6E03 00522 movwf MIOS_PARAMETER1 |
52EC 0E28 00523 movlw TIA_Vx_LAST_VELOCITY |
52EE C005 FFEB 00524 movff MIOS_PARAMETER3, PLUSW0 |
00525 SET_BSR TIA_BASE ; prepare BSR for TIA register access |
52F2 0101 M movlb HIGH(reg) |
52F4 EE10 F000 00526 lfsr FSR1, FSR0 |
52F8 EC2E F02E 00527 call TIA_CCIN_Cmd_VELOCITY_SkpCopy ; set velocity value |
52FC C006 F003 00528 movff TMP1, MIOS_PARAMETER1 ; restore MIOS_PARAMETER1 |
5300 C007 F004 00529 movff TMP2, MIOS_PARAMETER2 ; restore MIOS_PARAMETER2 |
00530 ;; ---[ END handle velocity ]--- |
gpasm-0.13.7 beta setup_tia_cartridge.asm1-30-2014 10:42:05 PAGE 172 |
|
|
LOC OBJECT CODE LINE SOURCE TEXT |
VALUE |
|
00531 |
00532 |
00533 |
5304 00534 TIA_MIDI_Hlp_NoteOn_NoVel |
00535 |
5304 00536 TIA_MIDI_Hlp_NoteOn_TrgGateLSkp |
5304 0012 00537 return |
00538 |
00539 |
00540 ;; ------------------------------------------------------------------ |
00541 ;; Note Off help function |
00542 ;; ------------------------------------------------------------------ |
5306 00543 TIA_MIDI_Hlp_NoteOff |
00544 ;; last note number of #0 (before pop) in WREG! |
00545 |
00546 ;; if not in legato mode and current note-off number equal to last entry #0: gate off |
00547 ; BRA_IFCLR TIA_PLAY_MODE, TIA_PLAY_MODE_LEGATO_OFF, BANKED, TIA_MIDI_Hlp_NoteOff_NoGOff |
5306 6204 00548 cpfseq MIOS_PARAMETER2, ACCESS |
00549 rgoto TIA_MIDI_Hlp_NoteOff_End |
5308 D005 M bra label |
530A D812 00550 rcall TIA_MIDI_Hlp_GateOff |
530C 00551 TIA_MIDI_Hlp_NoteOff_NoGOff |
00552 ;; ------------------------------------------------------------------ |
00553 |
00554 ;; if still note available, play new note in NoteOn Section |
530C 50E7 00555 movf INDF1, W |
530E A4D8 00556 skpz |
5310 0C01 00557 retlw 0x01 ; return, request Note On! |
00558 |
00559 ;; else request gate clear bit |
5312 D80E 00560 rcall TIA_MIDI_Hlp_GateOff |
5314 00561 TIA_MIDI_Hlp_NoteOff_End |
5314 0C00 00562 retlw 0x00 ; return, request NO Note On! |
00563 |
00564 ;; ------------------------------------------------------------------ |
00565 |
00566 ;; ------------------------------------------------------------------ |
00567 ;; Gate On help function |
00568 ;; ------------------------------------------------------------------ |
5316 00569 TIA_MIDI_Hlp_GateOn |
5316 90D8 00570 clrc |
5318 0E11 00571 movlw TIA_Vx_NOTE_DELAY |
531A 34EB 00572 rlf PLUSW0, W |
531C 6EF5 00573 movwf TABLAT |
531E 0E12 00574 movlw TIA_Vx_NOTE_DELAY_CTR |
5320 CFF5 FFEB 00575 movff TABLAT, PLUSW0 |
00576 |
5324 0E03 00577 movlw TIA_Vx_STAT |
00578 ;btfsc TIA_PLAY_MODE, TIA_PLAY_MODE_ONLY_WT_OFF, BANKED |
5326 82EB 00579 bsf PLUSW0, Vx_STAT_GATE_SET_REQ |
5328 80EB 00580 bsf PLUSW0, Vx_STAT_VOICE_ACTIVE |
00581 |
00582 ;; reset wavetable handler (only voice 1 can do this!) |
532A 50E9 00583 movf FSR0L, W |
gpasm-0.13.7 beta setup_tia_cartridge.asm1-30-2014 10:42:05 PAGE 173 |
|
|
LOC OBJECT CODE LINE SOURCE TEXT |
VALUE |
|
532C 0A20 00584 xorlw TIA_V1_BASE & 0xff |
00585 ;skpnz |
00586 ;bsf TIA_WT_STATE, WT_STATE_RESET, BANKED |
00587 |
532E 0012 00588 return |
00589 |
00590 ;; ------------------------------------------------------------------ |
00591 ;; Gate Off help function |
00592 ;; ------------------------------------------------------------------ |
5330 00593 TIA_MIDI_Hlp_GateOff |
5330 90D8 00594 clrc |
5332 0E11 00595 movlw TIA_Vx_NOTE_DELAY |
5334 34EB 00596 rlf PLUSW0, W |
5336 6EF5 00597 movwf TABLAT |
5338 0E12 00598 movlw TIA_Vx_NOTE_DELAY_CTR |
533A CFF5 FFEB 00599 movff TABLAT, PLUSW0 |
00600 |
533E 0E03 00601 movlw TIA_Vx_STAT |
5340 92EB 00602 bcf PLUSW0, Vx_STAT_GATE_SET_REQ |
5342 84EB 00603 bsf PLUSW0, Vx_STAT_GATE_CLR_REQ |
5344 90EB 00604 bcf PLUSW0, Vx_STAT_VOICE_ACTIVE |
5346 0012 00605 return |
00606 |
00607 ;; ------------------------------------------------------------------ |
00608 ;; for Note On/Note Off in Mono mode |
00609 ;; MIDI channel in MIOS_PARAMETER1[0..3] |
00610 ;; result in TMP5 |
5348 00611 TIA_MIDI_GetAssignedChannels |
5348 6A0A 00612 clrf TMP5 ; TMP5 contains the voices which should be played |
00613 |
534A 5003 00614 movf MIOS_PARAMETER1, W |
534C 0B0F 00615 andlw 0x0f |
534E 1920 00616 xorwf TIA_V1_BASE + TIA_Vx_MIDI_CHANNEL, W, BANKED |
5350 B4D8 00617 skpnz |
5352 800A 00618 bsf TMP5, 0 ; play voice 1 |
00619 |
5354 5003 00620 movf MIOS_PARAMETER1, W |
5356 0B0F 00621 andlw 0x0f |
5358 1960 00622 xorwf TIA_V2_BASE + TIA_Vx_MIDI_CHANNEL, W, BANKED |
535A B4D8 00623 skpnz |
535C 820A 00624 bsf TMP5, 1 ; play voice 2 |
00625 |
00626 |
535E 500A 00627 movf TMP5, W |
5360 0012 00628 return |
00629 |
00630 ;; ------------------------------------------------------------------ |
00631 ;; for Note On/Off in Mono mode |
00632 ;; note number in MIOS_PARAMETER2 |
00633 ;; result will be ANDed to TMP5 --- TIA_MIDI_GetAssignedChannels should be called before! |
00634 TIA_MIDI_GETASSIGNEDVOICEx MACRO FLAG_Vx, TIA_Vx_BASE |
00635 LOCAL TIA_MIDI_GETASSIGNEDVOICEx_LOk |
00636 LOCAL TIA_MIDI_GETASSIGNEDVOICEx_LOff |
00637 LOCAL TIA_MIDI_GETASSIGNEDVOICEx_End |
gpasm-0.13.7 beta setup_tia_cartridge.asm1-30-2014 10:42:05 PAGE 174 |
|
|
LOC OBJECT CODE LINE SOURCE TEXT |
VALUE |
|
00638 |
00639 ;; handle split points |
00640 movf TIA_Vx_BASE + TIA_Vx_SPLIT_LOWER, W, BANKED ; (don't split if 0) |
00641 iorwf TIA_Vx_BASE + TIA_Vx_SPLIT_UPPER, W, BANKED |
00642 bz TIA_MIDI_GETASSIGNEDVOICEx_End |
00643 |
00644 movf TIA_Vx_BASE + TIA_Vx_SPLIT_LOWER, W, BANKED |
00645 cpfslt MIOS_PARAMETER2, ACCESS |
00646 rgoto TIA_MIDI_GETASSIGNEDVOICEx_LOk |
00647 rgoto TIA_MIDI_GETASSIGNEDVOICEx_LOff |
00648 |
00649 TIA_MIDI_GETASSIGNEDVOICEx_LOk |
00650 movf TIA_Vx_BASE + TIA_Vx_SPLIT_UPPER, W, BANKED |
00651 cpfsgt MIOS_PARAMETER2, ACCESS |
00652 rgoto TIA_MIDI_GETASSIGNEDVOICEx_End |
00653 TIA_MIDI_GETASSIGNEDVOICEx_LOff |
00654 bcf TMP5, FLAG_Vx ; don't play voice |
00655 TIA_MIDI_GETASSIGNEDVOICEx_End |
00656 ENDM |
00657 |
5362 00658 TIA_MIDI_GetAssignedVoices |
00659 TIA_MIDI_GETASSIGNEDVOICEx 0, TIA_V1_BASE |
M LOCAL TIA_MIDI_GETASSIGNEDVOICEx_LOk |
M LOCAL TIA_MIDI_GETASSIGNEDVOICEx_LOff |
M LOCAL TIA_MIDI_GETASSIGNEDVOICEx_End |
M |
M ;; handle split points |
5362 5121 M movf TIA_Vx_BASE + TIA_Vx_SPLIT_LOWER, W, BANKED ; (don't split if 0) |
5364 1122 M iorwf TIA_Vx_BASE + TIA_Vx_SPLIT_UPPER, W, BANKED |
5366 E008 M bz TIA_MIDI_GETASSIGNEDVOICEx_End |
M |
5368 5121 M movf TIA_Vx_BASE + TIA_Vx_SPLIT_LOWER, W, BANKED |
536A 6004 M cpfslt MIOS_PARAMETER2, ACCESS |
M rgoto TIA_MIDI_GETASSIGNEDVOICEx_LOk |
536C D001 M bra label |
M rgoto TIA_MIDI_GETASSIGNEDVOICEx_LOff |
536E D003 M bra label |
M |
5370 M TIA_MIDI_GETASSIGNEDVOICEx_LOk |
5370 5122 M movf TIA_Vx_BASE + TIA_Vx_SPLIT_UPPER, W, BANKED |
5372 6404 M cpfsgt MIOS_PARAMETER2, ACCESS |
M rgoto TIA_MIDI_GETASSIGNEDVOICEx_End |
5374 D001 M bra label |
5376 M TIA_MIDI_GETASSIGNEDVOICEx_LOff |
5376 900A M bcf TMP5, FLAG_Vx ; don't play voice |
5378 M TIA_MIDI_GETASSIGNEDVOICEx_End |
00660 TIA_MIDI_GETASSIGNEDVOICEx 1, TIA_V2_BASE |
M LOCAL TIA_MIDI_GETASSIGNEDVOICEx_LOk |
M LOCAL TIA_MIDI_GETASSIGNEDVOICEx_LOff |
M LOCAL TIA_MIDI_GETASSIGNEDVOICEx_End |
M |
M ;; handle split points |
5378 5161 M movf TIA_Vx_BASE + TIA_Vx_SPLIT_LOWER, W, BANKED ; (don't split if 0) |
537A 1162 M iorwf TIA_Vx_BASE + TIA_Vx_SPLIT_UPPER, W, BANKED |
gpasm-0.13.7 beta setup_tia_cartridge.asm1-30-2014 10:42:05 PAGE 175 |
|
|
LOC OBJECT CODE LINE SOURCE TEXT |
VALUE |
|
537C E008 M bz TIA_MIDI_GETASSIGNEDVOICEx_End |
M |
537E 5161 M movf TIA_Vx_BASE + TIA_Vx_SPLIT_LOWER, W, BANKED |
5380 6004 M cpfslt MIOS_PARAMETER2, ACCESS |
M rgoto TIA_MIDI_GETASSIGNEDVOICEx_LOk |
5382 D001 M bra label |
M rgoto TIA_MIDI_GETASSIGNEDVOICEx_LOff |
5384 D003 M bra label |
M |
5386 M TIA_MIDI_GETASSIGNEDVOICEx_LOk |
5386 5162 M movf TIA_Vx_BASE + TIA_Vx_SPLIT_UPPER, W, BANKED |
5388 6404 M cpfsgt MIOS_PARAMETER2, ACCESS |
M rgoto TIA_MIDI_GETASSIGNEDVOICEx_End |
538A D001 M bra label |
538C M TIA_MIDI_GETASSIGNEDVOICEx_LOff |
538C 920A M bcf TMP5, FLAG_Vx ; don't play voice |
538E M TIA_MIDI_GETASSIGNEDVOICEx_End |
538E 500A 00661 movf TMP5, W |
5390 0012 00662 return |
00663 |
00664 ;; ------------------------------------------------------------------ |
00665 ;; for Note On/Off in Mono mode |
00666 ;; note number in MIOS_PARAMETER2 |
00667 ;; result will be ANDed to TMP5 --- TIA_MIDI_GetAssignedChannels should be called before! |
00668 TIA_MIDI_GETASSIGNEDKEYx MACRO FLAG_Vx, TIA_Vx_BASE |
00669 LOCAL TIA_MIDI_GETASSIGNEDKEYx_LOk |
00670 LOCAL TIA_MIDI_GETASSIGNEDKEYx_LOff |
00671 LOCAL TIA_MIDI_GETASSIGNEDKEYx_End |
00672 |
00673 btfsc TIA_Vx_BASE + TIA_Vx_MODE, Vx_MODE_KEY_EXTENDED, BANKED |
00674 rgoto TIA_MIDI_GETASSIGNEDKEYx_End |
00675 |
00676 movf TIA_Vx_BASE + TIA_Vx_KEY_OFFSET, W, BANKED |
00677 cpfslt MIOS_PARAMETER2, ACCESS |
00678 rgoto TIA_MIDI_GETASSIGNEDKEYx_LOk |
00679 rgoto TIA_MIDI_GETASSIGNEDKEYx_LOff |
00680 |
00681 TIA_MIDI_GETASSIGNEDKEYx_LOk |
00682 movlw 0x1f |
00683 cpfsgt TIA_Vx_BASE + TIA_Vx_KEY_LENGTH, BANKED |
00684 movf TIA_Vx_BASE + TIA_Vx_KEY_LENGTH, W, BANKED |
00685 addwf TIA_Vx_BASE + TIA_Vx_KEY_OFFSET, W, BANKED |
00686 cpfsgt MIOS_PARAMETER2, ACCESS |
00687 rgoto TIA_MIDI_GETASSIGNEDKEYx_End |
00688 TIA_MIDI_GETASSIGNEDKEYx_LOff |
00689 bcf TMP5, FLAG_Vx ; don't play voice |
00690 TIA_MIDI_GETASSIGNEDKEYx_End |
00691 ENDM |
00692 |
5392 00693 TIA_MIDI_GetAssignedKeys |
00694 TIA_MIDI_GETASSIGNEDKEYx 0, TIA_V1_BASE |
M LOCAL TIA_MIDI_GETASSIGNEDKEYx_LOk |
M LOCAL TIA_MIDI_GETASSIGNEDKEYx_LOff |
M LOCAL TIA_MIDI_GETASSIGNEDKEYx_End |
gpasm-0.13.7 beta setup_tia_cartridge.asm1-30-2014 10:42:05 PAGE 176 |
|
|
LOC OBJECT CODE LINE SOURCE TEXT |
VALUE |
|
M |
5392 B524 M btfsc TIA_Vx_BASE + TIA_Vx_MODE, Vx_MODE_KEY_EXTENDED, BANKED |
M rgoto TIA_MIDI_GETASSIGNEDKEYx_End |
5394 D00B M bra label |
M |
5396 5125 M movf TIA_Vx_BASE + TIA_Vx_KEY_OFFSET, W, BANKED |
5398 6004 M cpfslt MIOS_PARAMETER2, ACCESS |
M rgoto TIA_MIDI_GETASSIGNEDKEYx_LOk |
539A D001 M bra label |
M rgoto TIA_MIDI_GETASSIGNEDKEYx_LOff |
539C D006 M bra label |
M |
539E M TIA_MIDI_GETASSIGNEDKEYx_LOk |
539E 0E1F M movlw 0x1f |
53A0 6526 M cpfsgt TIA_Vx_BASE + TIA_Vx_KEY_LENGTH, BANKED |
53A2 5126 M movf TIA_Vx_BASE + TIA_Vx_KEY_LENGTH, W, BANKED |
53A4 2525 M addwf TIA_Vx_BASE + TIA_Vx_KEY_OFFSET, W, BANKED |
53A6 6404 M cpfsgt MIOS_PARAMETER2, ACCESS |
M rgoto TIA_MIDI_GETASSIGNEDKEYx_End |
53A8 D001 M bra label |
53AA M TIA_MIDI_GETASSIGNEDKEYx_LOff |
53AA 900A M bcf TMP5, FLAG_Vx ; don't play voice |
53AC M TIA_MIDI_GETASSIGNEDKEYx_End |
00695 TIA_MIDI_GETASSIGNEDKEYx 1, TIA_V2_BASE |
M LOCAL TIA_MIDI_GETASSIGNEDKEYx_LOk |
M LOCAL TIA_MIDI_GETASSIGNEDKEYx_LOff |
M LOCAL TIA_MIDI_GETASSIGNEDKEYx_End |
M |
53AC B564 M btfsc TIA_Vx_BASE + TIA_Vx_MODE, Vx_MODE_KEY_EXTENDED, BANKED |
M rgoto TIA_MIDI_GETASSIGNEDKEYx_End |
53AE D00B M bra label |
M |
53B0 5165 M movf TIA_Vx_BASE + TIA_Vx_KEY_OFFSET, W, BANKED |
53B2 6004 M cpfslt MIOS_PARAMETER2, ACCESS |
M rgoto TIA_MIDI_GETASSIGNEDKEYx_LOk |
53B4 D001 M bra label |
M rgoto TIA_MIDI_GETASSIGNEDKEYx_LOff |
53B6 D006 M bra label |
M |
53B8 M TIA_MIDI_GETASSIGNEDKEYx_LOk |
53B8 0E1F M movlw 0x1f |
53BA 6566 M cpfsgt TIA_Vx_BASE + TIA_Vx_KEY_LENGTH, BANKED |
53BC 5166 M movf TIA_Vx_BASE + TIA_Vx_KEY_LENGTH, W, BANKED |
53BE 2565 M addwf TIA_Vx_BASE + TIA_Vx_KEY_OFFSET, W, BANKED |
53C0 6404 M cpfsgt MIOS_PARAMETER2, ACCESS |
M rgoto TIA_MIDI_GETASSIGNEDKEYx_End |
53C2 D001 M bra label |
53C4 M TIA_MIDI_GETASSIGNEDKEYx_LOff |
53C4 920A M bcf TMP5, FLAG_Vx ; don't play voice |
53C6 M TIA_MIDI_GETASSIGNEDKEYx_End |
53C6 500A 00696 movf TMP5, W |
53C8 0012 00697 return |
00698 |
00699 |
gpasm-0.13.7 beta setup_tia_cartridge.asm1-30-2014 10:42:05 PAGE 177 |
|
|
LOC OBJECT CODE LINE SOURCE TEXT |
VALUE |
|
00700 ;; ------------------------------------------------------------------ |
00701 ;; arpeggiator sorter |
00702 ;; expecting base pointer to voice record in FSR2 |
53CA 00703 TIA_MIDI_Arp_Sorter |
00704 ;; TIA_Vx_ARP_NOTE_0 -> FSR0 |
53CA CFDA FFEA 00705 movff FSR2H, FSR0H |
53CE 50D9 00706 movf FSR2L, W |
53D0 0F1E 00707 addlw TIA_Vx_ARP_NOTE_0 |
53D2 6EE9 00708 movwf FSR0L |
00709 |
00710 ;; TIA_Vx_NOTE_STACK_0 -> FSR1 |
53D4 CFDA FFE2 00711 movff FSR2H, FSR1H |
53D8 50D9 00712 movf FSR2L, W |
53DA 0F22 00713 addlw TIA_Vx_NOTE_STACK_0 |
53DC 6EE1 00714 movwf FSR1L |
00715 |
53DE CFE9 F006 00716 movff FSR0L, TMP1 ; save pointer to ARP_NOTE_0 in TMP1 |
00717 ;; clear all current entries |
53E2 6AEE 00718 clrf POSTINC0 ; (TIA_Vx_ARP_NOTE_0) |
53E4 6AEE 00719 clrf POSTINC0 ; (TIA_Vx_ARP_NOTE_1) |
53E6 6AEE 00720 clrf POSTINC0 ; (TIA_Vx_ARP_NOTE_2) |
53E8 6AEE 00721 clrf POSTINC0 ; (TIA_Vx_ARP_NOTE_3) |
53EA C006 FFE9 00722 movff TMP1, FSR0L ; restore pointer to ARP_NOTE_0 from TMP1 |
00723 |
53EE 50E7 00724 movf INDF1, W ; (TIA_Vx_NOTE_STACK_0) |
53F0 E017 00725 bz TIA_MIDI_Arp_Sorter_End |
00726 |
53F2 50E6 00727 movf POSTINC1, W ; (TIA_Vx_NOTE_STACK_0) |
53F4 D816 00728 rcall TIA_MIDI_ARP_Sorter_Add |
53F6 50E6 00729 movf POSTINC1, W ; (TIA_Vx_NOTE_STACK_1) |
53F8 D814 00730 rcall TIA_MIDI_ARP_Sorter_Add |
53FA 50E6 00731 movf POSTINC1, W ; (TIA_Vx_NOTE_STACK_2) |
53FC D812 00732 rcall TIA_MIDI_ARP_Sorter_Add |
53FE 50E6 00733 movf POSTINC1, W ; (TIA_Vx_NOTE_STACK_3) |
5400 D810 00734 rcall TIA_MIDI_ARP_Sorter_Add |
00735 |
00736 ;; if rate is > 0, and arp has been reset: copy first arp note into TIA_Vx_NOTE |
5402 0E13 00737 movlw TIA_Vx_ARP_RATE |
5404 50DB 00738 movf PLUSW2, W |
5406 E00C 00739 bz TIA_MIDI_Arp_Sorter_End |
5408 0E15 00740 movlw TIA_Vx_ARP_CTR |
540A 50DB 00741 movf PLUSW2, W |
540C E109 00742 bnz TIA_MIDI_Arp_Sorter_End |
540E 0E14 00743 movlw TIA_Vx_ARP_NOTE_NUMBER |
5410 50DB 00744 movf PLUSW2, W |
5412 E106 00745 bnz TIA_MIDI_Arp_Sorter_End |
00746 |
5414 0E1E 00747 movlw TIA_Vx_ARP_NOTE_0 |
5416 CFDB FFF5 00748 movff PLUSW2, TABLAT |
541A 0E10 00749 movlw TIA_Vx_NOTE |
541C CFF5 FFDB 00750 movff TABLAT, PLUSW2 |
00751 |
5420 00752 TIA_MIDI_Arp_Sorter_End |
5420 0012 00753 return |
gpasm-0.13.7 beta setup_tia_cartridge.asm1-30-2014 10:42:05 PAGE 178 |
|
|
LOC OBJECT CODE LINE SOURCE TEXT |
VALUE |
|
00754 |
00755 ;; --- |
00756 ;; add to ARP note buffer, sort automatically from lowest to highest note |
5422 00757 TIA_MIDI_ARP_Sorter_Add |
5422 B4D8 00758 skpnz ; only add notes > 0 |
5424 0012 00759 return |
00760 |
5426 6E06 00761 movwf TMP1 ; store new note number in TMP2 |
5428 6A07 00762 clrf TMP2 ; TMP2 used as loop counter |
542A 00763 TIA_MIDI_ARP_Sorter_Loop |
542A 5007 00764 movf TMP2, W |
542C 50EB 00765 movf PLUSW0, W |
542E E006 00766 bz TIA_MIDI_ARP_Sorter_Push; the fourth note will ever be pushed as the appr. byte is zero |
5430 5C06 00767 subwf TMP1, W |
5432 E304 00768 bnc TIA_MIDI_ARP_Sorter_Push |
5434 2A07 00769 incf TMP2, F |
00770 BRA_IFCLR TMP2, 2, ACCESS, TIA_MIDI_ARP_Sorter_Loop |
5436 A407 M btfss reg, bit, reg_a |
5438 D7F8 M bra label |
543A 0012 00771 return ; this case never happens |
00772 |
543C 00773 TIA_MIDI_ARP_Sorter_Push |
543C 5007 00774 movf TMP2, W ; fourth note: no shift required |
543E 0A03 00775 xorlw 0x03 |
5440 E00D 00776 bz TIA_MIDI_ARP_Sorter_PushN |
5442 0E02 00777 movlw 0x02 |
5444 6E08 00778 movwf TMP3 |
5446 00779 TIA_MIDI_ARP_Sorter_PushL |
5446 5008 00780 movf TMP3, W |
5448 CFEB F009 00781 movff PLUSW0, TMP4 |
544C 0F01 00782 addlw 1 |
544E C009 FFEB 00783 movff TMP4, PLUSW0 |
5452 5007 00784 movf TMP2, W |
5454 1808 00785 xorwf TMP3, W |
5456 E002 00786 bz TIA_MIDI_ARP_Sorter_PushN |
5458 0608 00787 decf TMP3, F |
00788 rgoto TIA_MIDI_ARP_Sorter_PushL |
545A D7F5 M bra label |
00789 |
545C 00790 TIA_MIDI_ARP_Sorter_PushN |
545C 5007 00791 movf TMP2, W |
545E C006 FFEB 00792 movff TMP1, PLUSW0 |
5462 0012 00793 return |
00387 #include "tia_sysex.inc" |
00001 ; $Id: tia_sysex.inc bdupeyron.tech@gmail.com(Antichambre) |
00002 ; |
00003 ; MIDIbox TIA SysEx Parser |
00004 ; |
00005 ; ========================================================================== |
00006 ; |
00007 ; Copyright 1998-2006 Thorsten Klose (tk@midibox.org) |
00008 ; Licensed for personal non-commercial use only. |
00009 ; All other rights reserved. |
00010 ; |
gpasm-0.13.7 beta setup_tia_cartridge.asm1-30-2014 10:42:05 PAGE 179 |
|
|
LOC OBJECT CODE LINE SOURCE TEXT |
VALUE |
|
00011 ; ========================================================================== |
00012 |
00000007 00013 TIA_SYSEX_STATE_MYSYSEX EQU 7 |
00000006 00014 TIA_SYSEX_STATE_ACTION EQU 6 |
00015 |
00000005 00016 TIA_SYSEX_STATE_PRESET_RECEIVED EQU 5 ; used by Action PATCH_[Read/Write] |
00000004 00017 TIA_SYSEX_STATE_BANK_RECEIVED EQU 4 ; used by Action PATCH_[Read/Write] |
00000003 00018 TIA_SYSEX_STATE_TYPE_RECEIVED EQU 3 ; used by Action PATCH_[Read/Write] |
00000002 00019 TIA_SYSEX_STATE_WAIT_CHECKSUM EQU 2 ; used by Action PATCH_Write |
00020 |
00000005 00021 TIA_SYSEX_STATE_AH_RECEIVED EQU 5 ; used by Action PAR_[Read/Write] |
00000004 00022 TIA_SYSEX_STATE_AL_RECEIVED EQU 4 ; used by Action PAR_[Read/Write] |
00000003 00023 TIA_SYSEX_STATE_D_RECEIVED EQU 3 ; used by Action PAR_[Write] |
00024 |
00000005 00025 TIA_SYSEX_STATE_A_RECEIVED EQU 5 ; used by Action CFG_[Read/Write] |
00000004 00026 TIA_SYSEX_STATE_DH_RECEIVED EQU 4 ; used by Action CFG_[Read/Write] |
00000003 00027 TIA_SYSEX_STATE_DL_RECEIVED EQU 3 ; used by Action CFG_[Read/Write] |
00028 |
00029 ;; -------------------------------------------------------------------------- |
00030 ;; This sysex parser waits for the TIA Header |
00031 ;; -------------------------------------------------------------------------- |
5464 00032 TIA_SYSEX_SysExCheck |
00033 ;; store received byte in TIA_SYSEX_IN |
5464 6E23 00034 movwf TIA_SYSEX_IN |
00035 |
00036 ;; ignore realtime messages |
5466 0EF8 00037 movlw 0xf8 |
5468 6023 00038 cpfslt TIA_SYSEX_IN, ACCESS |
546A 0012 00039 return |
00040 |
00041 ;; check sysex state |
00042 BRA_IFSET TIA_SYSEX_STATE, TIA_SYSEX_STATE_MYSYSEX, ACCESS, TIA_SYSEX_Handler |
546C BE21 M btfsc reg, bit, reg_a |
546E D026 M bra label |
00043 |
5470 5021 00044 movf TIA_SYSEX_STATE, W |
5472 D80E 00045 rcall TIA_SYSEX_SysExHeaderGet |
5474 6223 00046 cpfseq TIA_SYSEX_IN, ACCESS |
00047 rgoto TIA_SYSEX_SysExCheckFailed |
5476 D00A M bra label |
5478 2A21 00048 incf TIA_SYSEX_STATE, F |
547A 5021 00049 movf TIA_SYSEX_STATE, W |
547C 0B07 00050 andlw 0x07 |
547E 0A06 00051 xorlw 0x06 ; wait for 6 bytes (f0 00 00 7E 46 <device-id>) |
5480 E106 00052 bnz TIA_SYSEX_SysExCheckOk |
00053 |
00054 ;; SysEx ID received, lets go |
5482 0E80 00055 movlw (1 << TIA_SYSEX_STATE_MYSYSEX) |
5484 6E21 00056 movwf TIA_SYSEX_STATE |
5486 EC28 F016 00057 call MIOS_MPROC_MergerDisable |
00058 rgoto TIA_SYSEX_SysExCheckOk |
548A D001 M bra label |
00059 |
548C 00060 TIA_SYSEX_SysExCheckFailed |
gpasm-0.13.7 beta setup_tia_cartridge.asm1-30-2014 10:42:05 PAGE 180 |
|
|
LOC OBJECT CODE LINE SOURCE TEXT |
VALUE |
|
00061 ;; reset the sysex counter and action ID |
548C D80B 00062 rcall TIA_SYSEX_ActionInvalid |
548E 00063 TIA_SYSEX_SysExCheckOk |
00064 |
548E 00065 TIA_SYSEX_SysExCheck_End |
548E 0012 00066 return |
00067 |
00068 ; ========================================================================== |
00069 |
00070 ;; -------------------------------------------------------------------------- |
00071 ;; Returns expected MIDI bytes from SysEx header |
00072 ;; -------------------------------------------------------------------------- |
5490 00073 TIA_SYSEX_SysExHeaderGet |
5490 0B07 00074 andlw 0x07 |
00075 JUMPTABLE_2BYTES_UNSECURE |
5492 ECC8 F016 M call MIOS_HLP_GetIndex_2bytes |
5496 0CF0 00076 retlw 0xf0 |
5498 0C00 00077 retlw 0x00 ; Vendor ID |
549A 0C00 00078 retlw 0x00 |
549C 0C7E 00079 retlw 0x7e |
549E 0C51 00080 retlw 0x51 ; MIDIbox TIA ID (51 - the ultimative number + 4) |
54A0 5020 00081 movf TIA_MIDI_DEVICE, W |
54A2 0012 00082 return |
00083 |
00084 ;; -------------------------------------------------------------------------- |
00085 ;; Action Invalid will be invoked when receiving an invalid sequence |
00086 ;; -------------------------------------------------------------------------- |
54A4 00087 TIA_SYSEX_ActionInvalid |
00088 |
00089 ;; -------------------------------------------------------------------------- |
00090 ;; Action finished will be invoked when midi action is done |
00091 ;; -------------------------------------------------------------------------- |
54A4 00092 TIA_SYSEX_ActionFinished |
54A4 6A21 00093 clrf TIA_SYSEX_STATE |
54A6 6A22 00094 clrf TIA_SYSEX_ACTION |
00095 #if DEFAULT_TIA_DEBUG_ON == 1 |
54A8 8F64 00096 bsf TIA_DEBUG_EE_REGA, TIA_DEBUG_EE_SYX |
54AA ECC1 F01A 00097 call TIA_Debug_EE_Do |
54AE 8E5B 00098 bsf TIA_DEBUG_BS_REGA, TIA_DEBUG_EE_SYX |
54B0 EC61 F01B 00099 call TIA_Debug_BS_Do |
00100 #endif |
00101 ;; reinit patch if engine has been disabled during upload |
54B4 9010 00102 bcf TIA_STAT, TIA_STAT_ENGINE_DISABLE |
00103 |
54B6 EC2A F016 00104 call MIOS_MPROC_MergerEnable |
00105 rgoto TIA_SYSEX_SysExCheck_End |
54BA D7E9 M bra label |
00106 |
00107 |
00108 ;; -------------------------------------------------------------------------- |
00109 ;; MIDI Check action: perform a sysex action |
00110 ;; -------------------------------------------------------------------------- |
54BC 00111 TIA_SYSEX_Handler |
00112 BRA_IFSET TIA_SYSEX_STATE, TIA_SYSEX_STATE_ACTION, ACCESS, TIA_SYSEX_Handler_DoAction |
gpasm-0.13.7 beta setup_tia_cartridge.asm1-30-2014 10:42:05 PAGE 181 |
|
|
LOC OBJECT CODE LINE SOURCE TEXT |
VALUE |
|
54BC BC21 M btfsc reg, bit, reg_a |
54BE D005 M bra label |
00113 |
54C0 8C21 00114 bsf TIA_SYSEX_STATE, TIA_SYSEX_STATE_ACTION |
00115 |
54C2 C023 F022 00116 movff TIA_SYSEX_IN, TIA_SYSEX_ACTION ; store action ID |
54C6 D81A 00117 rcall TIA_SYSEX_Handler_InitAction ; initialize the action |
00118 rgoto TIA_SYSEX_SysExCheck_End ; branch to the end |
54C8 D7E2 M bra label |
00119 |
00120 ;; --- |
00121 |
54CA 00122 TIA_SYSEX_Handler_DoAction |
00123 ;; branch to end if status byte (i.e. F7) |
00124 BRA_IFSET TIA_SYSEX_IN, 7, ACCESS, TIA_SYSEX_Handler_EndAction |
54CA BE23 M btfsc reg, bit, reg_a |
54CC D02E M bra label |
00125 |
00126 ;; branch depending on current action ID |
54CE 5022 00127 movf TIA_SYSEX_ACTION, W |
00128 JUMPTABLE_2BYTES 16 ; 16 entries |
54D0 0FF0 M addlw -(max_value) ; ensure that jump index is not greater than (max_value-1) |
54D2 B0D8 M skpnc |
54D4 0EF0 M movlw -(max_value) |
54D6 0F10 M addlw max_value |
54D8 ECC8 F016 M call MIOS_HLP_GetIndex_2bytes |
00129 rgoto TIA_SYSEX_ActionInvalid |
54DC D7E3 M bra label |
00130 rgoto TIA_SYSEX_Action_PRESET_Read |
54DE D040 M bra label |
00131 rgoto TIA_SYSEX_Action_PRESET_Write |
54E0 D08D M bra label |
00132 rgoto TIA_SYSEX_Action_BANK_Read |
54E2 D108 M bra label |
00133 rgoto TIA_SYSEX_Action_BANK_WriteName |
54E4 D169 M bra label |
00134 rgoto TIA_SYSEX_Action_PAR_Read |
54E6 D1B8 M bra label |
00135 rgoto TIA_SYSEX_Action_PAR_Write |
54E8 D1E8 M bra label |
00136 rgoto TIA_SYSEX_ActionInvalid |
54EA D7DC M bra label |
00137 rgoto TIA_SYSEX_ActionInvalid |
54EC D7DB M bra label |
00138 rgoto TIA_SYSEX_ActionInvalid |
54EE D7DA M bra label |
00139 rgoto TIA_SYSEX_ActionInvalid |
54F0 D7D9 M bra label |
00140 rgoto TIA_SYSEX_Action_BANK_Sel |
54F2 D219 M bra label |
00141 rgoto TIA_SYSEX_Action_CFG_Read |
54F4 D231 M bra label |
00142 rgoto TIA_SYSEX_Action_CFG_Write |
54F6 D2B9 M bra label |
gpasm-0.13.7 beta setup_tia_cartridge.asm1-30-2014 10:42:05 PAGE 182 |
|
|
LOC OBJECT CODE LINE SOURCE TEXT |
VALUE |
|
00143 rgoto TIA_SYSEX_Action_RequestCC |
54F8 D2E9 M bra label |
00144 rgoto TIA_SYSEX_Action_Ping |
54FA D2EC M bra label |
00145 |
00146 |
00147 ;; -------------------------------------------------------------------------- |
00148 ;; Initialize an action depending on TIA_SYSEX_ACTION |
00149 ;; -------------------------------------------------------------------------- |
54FC 00150 TIA_SYSEX_Handler_InitAction |
54FC 5022 00151 movf TIA_SYSEX_ACTION, W |
00152 JUMPTABLE_2BYTES 16 ; 16 entries |
54FE 0FF0 M addlw -(max_value) ; ensure that jump index is not greater than (max_value-1) |
5500 B0D8 M skpnc |
5502 0EF0 M movlw -(max_value) |
5504 0F10 M addlw max_value |
5506 ECC8 F016 M call MIOS_HLP_GetIndex_2bytes |
00153 rgoto TIA_SYSEX_ActionInvalid |
550A D7CC M bra label |
00154 rgoto TIA_SYSEX_Init_PRESET_Read |
550C D028 M bra label |
00155 rgoto TIA_SYSEX_Init_PRESET_Write |
550E D072 M bra label |
00156 rgoto TIA_SYSEX_Init_BANK_Read |
5510 D0ED M bra label |
00157 rgoto TIA_SYSEX_Init_BANK_WriteName |
5512 D151 M bra label |
00158 rgoto TIA_SYSEX_Init_PAR_Read |
5514 D1A0 M bra label |
00159 rgoto TIA_SYSEX_Init_PAR_Write |
5516 D1D0 M bra label |
00160 rgoto TIA_SYSEX_ActionInvalid |
5518 D7C5 M bra label |
00161 rgoto TIA_SYSEX_ActionInvalid |
551A D7C4 M bra label |
00162 rgoto TIA_SYSEX_ActionInvalid |
551C D7C3 M bra label |
00163 rgoto TIA_SYSEX_ActionInvalid |
551E D7C2 M bra label |
00164 rgoto TIA_SYSEX_Init_BANK_Sel |
5520 D200 M bra label |
00165 rgoto TIA_SYSEX_Init_CFG_Read |
5522 D219 M bra label |
00166 rgoto TIA_SYSEX_Init_CFG_Write |
5524 D2A0 M bra label |
00167 rgoto TIA_SYSEX_Init_RequestCC |
5526 D2D1 M bra label |
00168 rgoto TIA_SYSEX_Init_Ping |
5528 D2D4 M bra label |
00169 |
00170 |
00171 ;; -------------------------------------------------------------------------- |
00172 ;; Finish an action depending on TIA_SYSEX_ACTION |
00173 ;; -------------------------------------------------------------------------- |
gpasm-0.13.7 beta setup_tia_cartridge.asm1-30-2014 10:42:05 PAGE 183 |
|
|
LOC OBJECT CODE LINE SOURCE TEXT |
VALUE |
|
552A 00174 TIA_SYSEX_Handler_EndAction |
00175 ;; if sysex footer (F7) has not been received here, action is invalid! |
552A 0EF7 00176 movlw 0xf7 |
552C 1823 00177 xorwf TIA_SYSEX_IN, W |
552E E1BA 00178 bnz TIA_SYSEX_ActionInvalid |
00179 |
00180 ;; else finish action |
5530 5022 00181 movf TIA_SYSEX_ACTION, W |
00182 JUMPTABLE_2BYTES 16 ; 16 entries |
5532 0FF0 M addlw -(max_value) ; ensure that jump index is not greater than (max_value-1) |
5534 B0D8 M skpnc |
5536 0EF0 M movlw -(max_value) |
5538 0F10 M addlw max_value |
553A ECC8 F016 M call MIOS_HLP_GetIndex_2bytes |
00183 rgoto TIA_SYSEX_ActionInvalid |
553E D7B2 M bra label |
00184 rgoto TIA_SYSEX_End_PRESET_Read |
5540 D022 M bra label |
00185 rgoto TIA_SYSEX_End_PRESET_Write |
5542 D083 M bra label |
00186 rgoto TIA_SYSEX_End_BANK_Read |
5544 D0E4 M bra label |
00187 rgoto TIA_SYSEX_End_BANK_WriteName |
5546 D151 M bra label |
00188 rgoto TIA_SYSEX_End_PAR_Read |
5548 D196 M bra label |
00189 rgoto TIA_SYSEX_End_PAR_Write |
554A D1CC M bra label |
00190 rgoto TIA_SYSEX_ActionInvalid |
554C D7AB M bra label |
00191 rgoto TIA_SYSEX_ActionInvalid |
554E D7AA M bra label |
00192 rgoto TIA_SYSEX_ActionInvalid |
5550 D7A9 M bra label |
00193 rgoto TIA_SYSEX_ActionInvalid |
5552 D7A8 M bra label |
00194 rgoto TIA_SYSEX_End_BANK_Sel |
5554 D1EB M bra label |
00195 rgoto TIA_SYSEX_End_CFG_Read |
5556 D207 M bra label |
00196 rgoto TIA_SYSEX_End_CFG_Write |
5558 D29C M bra label |
00197 rgoto TIA_SYSEX_End_RequestCC |
555A D2B9 M bra label |
00198 rgoto TIA_SYSEX_End_Ping |
555C D2BC M bra label |
00199 |
00200 ;; -------------------------------------------------------------------------- |
00201 ;; MIDI Action: Patch Read |
00202 ;; -------------------------------------------------------------------------- |
555E 00203 TIA_SYSEX_Init_PRESET_Read |
555E 0012 00204 return |
00205 |
5560 00206 TIA_SYSEX_Action_PRESET_Read |
gpasm-0.13.7 beta setup_tia_cartridge.asm1-30-2014 10:42:05 PAGE 184 |
|
|
LOC OBJECT CODE LINE SOURCE TEXT |
VALUE |
|
00207 ;; receive <type> <bank> <patch> F7 |
5560 00208 TIA_SYSEX_Action_PRESET_Read_T |
00209 BRA_IFSET TIA_SYSEX_STATE, TIA_SYSEX_STATE_TYPE_RECEIVED, ACCESS, TIA_SYSEX_Action_PRESET_Read_B |
5560 B621 M btfsc reg, bit, reg_a |
5562 D004 M bra label |
5564 8621 00210 bsf TIA_SYSEX_STATE, TIA_SYSEX_STATE_TYPE_RECEIVED |
5566 C023 F025 00211 movff TIA_SYSEX_IN, TIA_SYSEX_ADDRESS ; load preset type |
00212 rgoto TIA_SYSEX_SysExCheck_End ; wait for next byte |
556A D791 M bra label |
00213 |
556C 00214 TIA_SYSEX_Action_PRESET_Read_B |
00215 BRA_IFSET TIA_SYSEX_STATE, TIA_SYSEX_STATE_BANK_RECEIVED, ACCESS, TIA_SYSEX_Action_PRESET_Read_P |
556C B821 M btfsc reg, bit, reg_a |
556E D004 M bra label |
5570 8821 00216 bsf TIA_SYSEX_STATE, TIA_SYSEX_STATE_BANK_RECEIVED |
5572 C023 F011 00217 movff TIA_SYSEX_IN, TIA_BANK ; load bank |
00218 rgoto TIA_SYSEX_SysExCheck_End ; wait for next byte |
5576 D78B M bra label |
00219 |
5578 00220 TIA_SYSEX_Action_PRESET_Read_P |
00221 BRA_IFSET TIA_SYSEX_STATE, TIA_SYSEX_STATE_PRESET_RECEIVED, ACCESS, TIA_SYSEX_Action_PRESET_ReadStall |
5578 BA21 M btfsc reg, bit, reg_a |
557A D004 M bra label |
557C 8A21 00222 bsf TIA_SYSEX_STATE, TIA_SYSEX_STATE_PRESET_RECEIVED |
557E C023 F012 00223 movff TIA_SYSEX_IN, TIA_PRESET ; load preset |
00224 rgoto TIA_SYSEX_SysExCheck_End ; wait for next byte |
5582 D785 M bra label |
00225 |
5584 00226 TIA_SYSEX_Action_PRESET_ReadStall |
00227 ;; do nothing until sysex footer (F7) has been received |
00228 rgoto TIA_SYSEX_SysExCheck_End |
5584 D784 M bra label |
00229 |
5586 00230 TIA_SYSEX_End_PRESET_Read |
00231 ;; action invalid if patch number has not been received |
00232 BRA_IFCLR TIA_SYSEX_STATE, TIA_SYSEX_STATE_PRESET_RECEIVED, ACCESS, TIA_SYSEX_ActionInvalid |
5586 AA21 M btfss reg, bit, reg_a |
5588 D78D M bra label |
00233 |
558A C011 F007 00234 movff TIA_BANK, TMP2 ;; store relative bank |
558E 5025 00235 movf TIA_SYSEX_ADDRESS, W |
5590 DADD 00236 rcall TIA_SYSEX_Hlp_GetAbsoluteBank ; set bank to absolute |
5592 6E26 00237 movwf TIA_SYSEX_ERROR |
5594 E10F 00238 bnz TIA_SYSEX_End_PRESET_Read_Cont |
00239 |
5596 5012 00240 movf TIA_PRESET, W |
5598 E00D 00241 bz TIA_SYSEX_End_PRESET_Read_Cont |
559A 5011 00242 movf TIA_BANK, W |
559C ECBE F01E 00243 call TIA_BANK_GetBankStickReady |
55A0 A4D8 00244 skpz |
00245 rgoto TIA_SYSEX_End_PRESET_Read_Size |
55A2 D003 M bra label |
00246 ;; BS not ready Error #3 |
55A4 0E03 00247 movlw 0x03 |
gpasm-0.13.7 beta setup_tia_cartridge.asm1-30-2014 10:42:05 PAGE 185 |
|
|
LOC OBJECT CODE LINE SOURCE TEXT |
VALUE |
|
55A6 6E26 00248 movwf TIA_SYSEX_ERROR |
00249 rgoto TIA_SYSEX_End_PRESET_Read_Cont |
55A8 D005 M bra label |
55AA 00250 TIA_SYSEX_End_PRESET_Read_Size |
55AA ECCB F01E 00251 call TIA_BANK_GetBankStickSize |
55AE E102 00252 bnz TIA_SYSEX_End_PRESET_Read_Cont |
00253 |
55B0 BC12 00254 btfsc TIA_PRESET, 6 |
55B2 6A12 00255 clrf TIA_PRESET |
00256 |
55B4 00257 TIA_SYSEX_End_PRESET_Read_Cont |
00258 |
00259 ;; send SysEx header |
55B4 DA98 00260 rcall TIA_SYSEX_Send_SysExHeader |
00261 |
00262 ;; Send PRESET_Read ID |
55B6 0E01 00263 movlw 0x01 |
55B8 EC24 F016 00264 call MIOS_MIDI_TxBufferPut |
00265 |
00266 ;; send requested preset type number |
55BC 5025 00267 movf TIA_SYSEX_ADDRESS, W |
55BE 0B7F 00268 andlw 0x7f |
55C0 EC24 F016 00269 call MIOS_MIDI_TxBufferPut |
00270 |
00271 ;; send requested relative bank number |
55C4 5007 00272 movf TMP2, W |
55C6 0B1F 00273 andlw 0x1f |
55C8 EC24 F016 00274 call MIOS_MIDI_TxBufferPut |
00275 |
00276 ;; send requested preset number |
55CC 5012 00277 movf TIA_PRESET, W |
55CE 0B7F 00278 andlw 0x7f |
55D0 EC24 F016 00279 call MIOS_MIDI_TxBufferPut |
00280 |
55D4 5026 00281 movf TIA_SYSEX_ERROR, W |
55D6 E004 00282 bz TIA_SYSEX_End_PRESET_Read_Cont_Ok |
55D8 0B7F 00283 andlw 0x7f |
55DA EC24 F016 00284 call MIOS_MIDI_TxBufferPut |
00285 rgoto TIA_SYSEX_End_PRESET_Read_Footer |
55DE D007 M bra label |
00286 |
55E0 00287 TIA_SYSEX_End_PRESET_Read_Cont_Ok |
00288 ;; clear checksum |
55E0 6A24 00289 clrf TIA_SYSEX_CHECKSUM |
00290 |
00291 ;movf TIA_SYSEX_ADDRESS, W |
00292 ;rcall TIA_SYSEX_Hlp_GetAbsoluteBank ; set bank to absolute |
00293 ;; send patch (128 bytes) |
55E2 DA9F 00294 rcall TIA_SYSEX_Hlp_SendPreset |
00295 |
00296 ;; send checksum |
55E4 5024 00297 movf TIA_SYSEX_CHECKSUM, W |
55E6 0880 00298 sublw 0x80 |
55E8 0B7F 00299 andlw 0x7f |
gpasm-0.13.7 beta setup_tia_cartridge.asm1-30-2014 10:42:05 PAGE 186 |
|
|
LOC OBJECT CODE LINE SOURCE TEXT |
VALUE |
|
55EA EC24 F016 00300 call MIOS_MIDI_TxBufferPut |
00301 |
55EE 00302 TIA_SYSEX_End_PRESET_Read_Footer |
00303 ;; send of SysEx footer |
55EE 0E01 00304 movlw 0x01 ; (independend from merger state) |
55F0 DA8D 00305 rcall TIA_SYSEX_Send_SysExFooter |
00306 |
00307 ;; finish Action |
00308 rgoto TIA_SYSEX_ActionFinished |
55F2 D758 M bra label |
00309 |
00310 ;; -------------------------------------------------------------------------- |
00311 ;; MIDI Action: Patch Write |
00312 ;; -------------------------------------------------------------------------- |
55F4 00313 TIA_SYSEX_Init_PRESET_Write |
00314 ;; disable TIA engine until end of transfer (will be requested by ActionFinished) |
55F4 8010 00315 bsf TIA_STAT, TIA_STAT_ENGINE_DISABLE |
55F6 ECD6 F021 00316 call TIA_TUNE_Note_Off |
55FA 0012 00317 return |
|