aboutsummaryrefslogtreecommitdiffstats
path: root/include/reg96.inc
diff options
context:
space:
mode:
Diffstat (limited to 'include/reg96.inc')
-rw-r--r--include/reg96.inc610
1 files changed, 610 insertions, 0 deletions
diff --git a/include/reg96.inc b/include/reg96.inc
new file mode 100644
index 0000000..02b309b
--- /dev/null
+++ b/include/reg96.inc
@@ -0,0 +1,610 @@
+ save
+ listing off ; kein Listing über diesen File
+
+;****************************************************************************
+;* *
+;* AS 1.41 - Datei REG96.INC *
+;* *
+;* Sinn : enthält Makro-, SFR- und Adreßdefinitionen für die *
+;* MCS-96-Prozessoren *
+;* OK, der Name fällt aus dem Rahmen, aber STDDEF96.INC war schon *
+;* belegt... *
+;* *
+;* letzte Änderungen : 20. 2.1994 *
+;* 28. 6.1994 80196 (KR) hinzugefügt *
+;* 9. 3.1997 80196N(T), 80296 hinzugefügt *
+;* *
+;****************************************************************************
+
+ ifndef reg96inc ; verhindert Mehrfacheinbindung
+
+reg96inc equ 1
+
+ if (MOMCPUNAME<>"8096")&&(MOMCPUNAME<>"80196")
+ fatal "Falscher Prozessortyp eingestellt: nur 8096, 80196, 80196N oder 80299 erlaubt!"
+ endif
+
+
+ if MOMPASS=1
+ message "MCS-96-SFR-Definitionen (C) 1994 Alfred Arnold"
+ message "binde \{MOMCPU}-SFRs ein"
+ endif
+
+;----------------------------------------------------------------------------
+; CPU-Register:
+
+R0 equ 0 ; Nullregister
+ZERO_REG equ R0
+ONES_REG equ 2 ; nur Einsen
+SP equ 18h ; Stackpointer
+ if MOMCPU>=80196h
+WSR equ 14h ; RAM-Window in Registerbank
+ if MOMCPU>=80296h
+WSR1 equ 15h ; RAM-Window in untere Hälfte Registerbank
+ endif
+ endif
+
+ if MOMCPU>=80296h ; Signalprozessorregister
+ACC_00 equ 000ch ; Akkumulator
+ACC_02 equ 000eh
+ACC_04 equ 0006h
+ACC_STAT equ 000bh
+ICB0 equ 1fc3h ; Indexregister
+ICB1 equ 1fc7h
+ICX0 equ 0010h
+ICX1 equ 0016h
+IDX0 equ 1fc0h
+IDX1 equ 1fc4h
+RPT_CNT equ 0004h ; Zählregister
+ endif
+
+;----------------------------------------------------------------------------
+; SFRs:
+
+;- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
+; A/D-Wandler
+ switch MOMCPUNAME
+
+ case "80296" ; Warnung unterdrücken
+
+
+ case "80196N"
+AD_RESULT equ 1faah ; Ergebnis Wandlung (wortweise lesbar)
+AD_COMMAND equ 1fach ; Steuerung AD-Wandler
+AD_TEST equ 1faeh ; Justage
+AD_TIME equ 1fafh ; Wandlungsgeschwindigkeit
+
+
+ case "80196"
+AD_Result equ 1faah ; Ergebnis Wandlung (wortweise lesbar)
+AD_Command equ 1fach ; Steuerung AD-Wandler
+AD_Test equ 1faeh ; Justage
+AD_Time equ 1fafh ; Wandlungsgeschwindigkeit
+
+
+ case "8096"
+AD_Command equ 2 ; A/D-Wandler Steuerregister
+AD_Result_Lo equ 2 ; Ergebnis A/D-Wandler
+AD_Result_Hi equ 3 ; NUR byteweise lesen!!
+
+
+ endcase
+
+;- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
+; HSI/HSO/EPA
+
+ switch MOMCPUNAME
+
+
+ case "80296"
+EPA_MASK equ 1f9ch ; Interruptmasken
+EPA_PEND equ 1f9eh ; Interruptanzeigen
+__CNT set 0
+ rept 4
+EPA{"\{__CNT}"}_CON equ 1f60h+(__CNT*4) ; Steuerung Vergleicher/Fangeinheiten
+EPA{"\{__CNT}"}_TIME equ 1f62h+(__CNT*4) ; Zeitpunkt " "
+__CNT set __CNT+1
+ endm
+
+
+ case "80196N"
+COMP0_CON equ 1f88h ; Steuerung Vergleicher 0
+COMP0_TIME equ 1f8ah ; Zeitpunkt Vergleicher 0
+
+COMP1_CON equ 1f8ch ; dito
+COMP1_CON equ 1f8eh
+
+EPA_MASK equ 1fa0h ; Interruptmasken
+EPA_MASK1 equ 1fa4h
+EPA_PEND equ 1fa2h ; Interruptanzeigen
+EPA_PEND1 equ 1fa6h
+__CNT set 0
+ rept 10
+EPA{"\{__CNT}"}_CON equ 1f60h+(__CNT*4) ; Steuerung Vergleicher/Fangeinheiten
+EPA{"\{__CNT}"}_TIME equ 1f62h+(__CNT*4) ; Zeitpunkt " "
+__CNT set __CNT+1
+ endm
+EPAIPV equ 1fa8h ; Interrupt-Priorität
+
+
+ case "80196"
+EPA_Mask equ 1fa0h ; (w) EPA Interruptfreigabe 4..9, 0..1, overrun 0..9/0/1
+EPA_Mask1 equ 1fa4h
+EPA_Pend equ 1fa2h ; (w) EPA Interrupt aufgetreten 4..9, 0..1, overrun 0..9/0/1
+EPA_Pend1 equ 1fa6h
+EPAIpv equ 1fa8h ; Priorität EPA-Interrupt
+
+EPA_Control0 equ 1f60h ; Steuerung Capture/Compare Kanal 0..9
+EPA_Time0 equ 1f62h ; (w) gespeicherter Zeitpunkt Kanal 0..9
+EPA_Control1 equ 1f64h
+EPA_Time1 equ 1f66h
+EPA_Control2 equ 1f68h
+EPA_Time2 equ 1f6ah
+EPA_Control3 equ 1f6ch
+EPA_Time3 equ 1f6eh
+EPA_Control4 equ 1f70h
+EPA_Time4 equ 1f72h
+EPA_Control5 equ 1f74h
+EPA_Time5 equ 1f76h
+EPA_Control6 equ 1f78h
+EPA_Time6 equ 1f7ah
+EPA_Control7 equ 1f7ch
+EPA_Time7 equ 1f7eh
+EPA_Control8 equ 1f80h
+EPA_Time8 equ 1f82h
+EPA_Control9 equ 1f84h
+EPA_Time9 equ 1f86h
+Comp_Control0 equ 1f88h ; Steuerung Compare-Kanal 0..1
+Comp_Time0 equ 1f8ah ; Vergleichswert Compare-Kanal 0..1
+Comp_Control1 equ 1f8ch
+Comp_Time1 equ 1f8eh
+
+
+ case "8096"
+HSI_Time equ 4 ; HSI Triggerzeitpunkt (nur Wort)
+HSI_Mode equ 3 ; HSI Modusregister
+HSI_Status equ 6 ; HSI Statusregister
+
+HSO_Time equ 4 ; HSO Zeiteinstellung (nur Wort)
+HSO_Command equ 6 ; HSO Steuerregister
+
+
+ endcase
+
+;- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
+; serielles
+
+ switch MOMCPUNAME
+
+
+ case "80296"
+SP_CON equ 1fbbh ; Steuerung SIO
+SP_BAUD equ 1fbch ; (w) Baudrate SIO
+SP_STATUS equ 1fb9h ; Status SIO
+SBUF_RX equ 1fb8h ; Empfangsdaten
+SBUF_TX equ 1fbah ; Sendedaten
+
+
+ case "80196N"
+SP_CON equ 1fbbh ; Steuerung SIO
+SP_BAUD equ 1fbch ; (w) Baudrate SIO
+SP_STATUS equ 1fb9h ; Status SIO
+SBUF_RX equ 1fb8h ; Empfangsdaten
+SBUF_TX equ 1fbah ; Sendedaten
+
+SSIO_BAUD equ 1fb4h ; Baudrate SSIO
+SSIO0_BUF equ 1fb0h ; Datenregister SSIO0
+SSIO1_BUF equ 1fb2h ; Datenregister SSIO1
+SSIO0_CON equ 1fb1h ; Modus SSIO0
+SSIO1_CON equ 1fb3h ; Modus SSIO1
+
+
+ case "80196"
+SSIO_StB0 equ 1fb0h ; Datenpuffer SSIO Kanal 0
+SSIO_StCr0 equ 1fb1h ; Steuerung Sender/Empfänger SSIO Kanal 0
+SSIO_StB1 equ 1fb2h ; Datenpuffer SSIO Kanal 1
+SSIO_StCr1 equ 1fb3h ; Steuerung Sender/Empfänger SSIO Kanal 1
+SSIO_Baud equ 1fb4h ; Baudrate SSIO
+SBuf_RX equ 1fb8h ; Empfangsdaten
+SP_Stat equ 1fb9h ; Zustand SIO
+SBuf_TX equ 1fbah ; Sendedaten
+SP_Con equ 1fbbh ; Steuerung SIO
+SP_Baud equ 1fbch ; (w) Baudrate SIO
+
+
+ case "8096"
+SBUF equ 7 ; UART Datenregister
+SPStat equ 11h ; UART Statusregister
+SPCon equ 11h ; UART Steuerregister
+Baud_Reg equ 0eh ; UART Datenrate
+
+
+ endcase
+
+;- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
+; Interruptsteuerung
+
+ switch MOMCPUNAME
+
+
+ case "80296"
+INT_MASK equ 08h ; Interruptmasken
+INT_MASK1 equ 13h
+INT_PEND equ 09h ; Interruptanzeigen
+INT_PEND1 equ 12h
+EXTINT_CON equ 1fcch ; Flankenwahl externe Interrupts
+IN_PROG0 equ 1fc8h ; Interruptbearbeitung läuft
+IN_PROG1 equ 1fcah
+INT_CON0 equ 1fe8h ; Prioritätsfestlegung
+INT_CON1 equ 1feah
+INT_CON2 equ 1fech
+INT_CON3 equ 1feeh
+NMI_PEND equ 1fc9h ; NMI angefordert ?
+VECT_ADDR equ 1ff0h ; Vektorbasis
+
+ case "80196N"
+INT_MASK equ 08h ; Interruptmasken
+INT_MASK1 equ 13h
+INT_PEND equ 09h ; Interruptanzeigen
+INT_PEND1 equ 12h
+
+PTSSRV equ 06h ; (w) PTS-Interrupt bedient
+PTSSEL equ 04h ; (w) Quellen PTS freigeben
+
+
+ case "80196"
+Int_Mask_Lo equ 08h ; Interruptfreigabe
+Int_Mask_Hi equ 13h
+Int_Pend_Lo equ 09h ; wartende Interrupts
+Int_Pend_Hi equ 12h
+
+PTS_Srv equ 06h ; w PTS-Interrupt bedient
+PTS_Select equ 04h ; w Quellen PTS freigeben
+
+
+ case "8096"
+INT_Mask equ 8 ; Interruptfreigabe
+INT_Pending equ 9 ; Interrupts aufgetreten ?
+
+
+ endcase
+
+;- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
+; Timer
+
+Watchdog equ 0ah ; Watchdog zurücksetzen
+
+ switch MOMCPUNAME
+
+
+ case "80296"
+CON_REG0 equ 1fb6h ; Steuerung PWM
+PWM0_CONTROL equ 1fb0h ; Einschaltdauer PWM0
+PWM1_CONTROL equ 1fb2h
+PWM2_CONTROL equ 1fb4h
+
+T1CONTROL equ 1f90h ; Steuerung Timer 1
+TIMER1 equ 1f92h ; (w) Daten Timer 1
+T2CONTROL equ 1f94h ; Steuerung Timer 2
+TIMER22 equ 1f96h ; (w) Daten Timer 2
+
+
+ case "80196N"
+T1CONTROL equ 1f98h ; Steuerung Timer 1
+TIMER1 equ 1f9ah ; (w) Daten Timer 1
+T2CONTROL equ 1f9ch ; Steuerung Timer 2
+TIMER22 equ 1f9eh ; (w) Daten Timer 2
+
+
+ case "80196"
+Timer1_Control equ 1f98h ; Steuerung Timer 1
+Timer1 equ 1f9ah ; (w) Daten Timer 1
+Timer2_Control equ 1f9ch ; Steuerung Timer 2
+Timer2 equ 1f9eh ; (w) Daten Timer 2
+
+
+ case "8096"
+Timer1 equ 0ah ; Timer 1 (nur Wort)
+Timer2 equ 0ch ; Timer 2 (nur Wort)
+
+PWM_Control equ 17h ; Einstellung Pulsweite PWM
+
+
+ endcase
+
+;- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
+; Ports
+
+ switch MOMCPUNAME
+
+
+ case "80296"
+
+P1_DIR equ 1fd2h ; Richtungsregister Port 1
+P1_MODE equ 1fd0h ; Auswahl Port 1 Spezialfunktion/IO-Port
+P1_PIN equ 1fd6h ; Status Port 1 Pins
+P1_REG equ 1fd4h ; Port 1 Ausgabedaten
+
+P2_DIR equ 1fd3h ; Rest sinngemäß
+P2_MODE equ 1fd1h
+P2_PIN equ 1fd7h
+P2_REG equ 1fd5h
+
+P3_DIR equ 1fdah
+P3_MODE equ 1fd8h
+P3_PIN equ 1fdeh
+P3_REG equ 1fdch
+
+P4_DIR equ 1fdbh
+P4_MODE equ 1fd9h
+P4_PIN equ 1fdfh
+P4_REG equ 1fddh
+
+EP_DIR equ 1fe3h
+EP_MODE equ 1fe1h
+EP_PIN equ 1fe7h
+EP_REG equ 1fe5h
+
+
+ case "80196N"
+P0_PIN equ 1fdah ; Daten Port 0
+
+P1_DIR equ 1fd2h ; Richtungsregister Port 1
+P1_MODE equ 1fd0h ; Auswahl Port 1 Spezialfunktion/IO-Port
+P1_PIN equ 1fd6h ; Status Port 1 Pins
+P1_REG equ 1fd4h ; Port 1 Ausgabedaten
+
+P2_DIR equ 1fcbh ; Rest sinngemäß
+P2_MODE equ 1fc9h
+P2_PIN equ 1fcfh
+P2_REG equ 1fcdh
+
+P3_PIN equ 1ffeh
+P3_REG equ 1ffch
+
+P4_PIN equ 1fffh
+P4_REG equ 1ffdh
+
+P34_DRV equ 1ff4h ; Umschaltung Port 3/4 als open-drain oder push-pull
+
+P5_DIR equ 1ff3h
+P5_MODE equ 1ff1h
+P5_PIN equ 1ff7h
+P5_REG equ 1ff5h
+
+P6_DIR equ 1fd3h
+P6_MODE equ 1fd1h
+P6_PIN equ 1fd7h
+P6_REG equ 1fd5h
+
+EP_DIR equ 1fe3h
+EP_MODE equ 1fe1h
+EP_PIN equ 1fe7h
+EP_REG equ 1fe5h
+
+
+ case "80196"
+P0PIn equ 1fdah ; Daten Port 0
+
+P1SSel equ 1fd0h ; Spezialfunktionen auf Port 1 ?
+P1IO equ 1fd2h ; Port 1 Datenrichtungsregister
+P1Reg equ 1fd4h ; Port 1 Datenausgabe
+P1PIn equ 1fd6h ; Eingangszustand Port 1
+
+P2SSel equ 1fc9h ; Rest sinngemäß
+P2IO equ 1fcbh
+P2Reg equ 1fcdh
+P2PIn equ 1fcfh
+
+P3Reg equ 1ffch
+P3PIn equ 1ffeh
+
+P4Reg equ 1ffdh
+P4PIn equ 1fffh
+
+P5SSel equ 1ff1h
+P5IO equ 1ff3h
+P5Reg equ 1ff5h
+P5PIn equ 1ff7h
+
+P6SSel equ 1fd1h
+P6IO equ 1fd3h
+P6Reg equ 1fd5h
+P6PIn equ 1fd7h
+
+
+ case "8096"
+Port0 equ 0eh ; Port 0
+Port1 equ 0fh ; Port 1
+Port2 equ 10h ; Port 2
+Port3 equ 1ffeh ; Port 3 (falls kein ext. Speicher)
+Port4 equ 1fffh ; Port 4 (falls kein ext. Speicher)
+
+IOS0 equ 15h ; I/O-Statusregister 0
+IOS1 equ 16h ; I/O-Statusregister 1
+IOC0 equ 15h ; I/O-Statusregister 0
+IOC1 equ 16h ; I/O-Statusregister 1
+
+
+ endcase
+
+;- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
+; Slave-Port
+
+ switch MOMCPUNAME
+
+
+ case "80296" ; Warnung unterdrücken
+
+
+ case "80196N"
+SLP_CMD equ 1ffah ; Kommandoregister
+SLP_CON equ 1ffbh
+SLP_STAT equ 1ff8h
+
+
+ case "80196" ; Warnung unterdrücken
+
+
+ case "8096"
+SlpStat equ 1ff8h ; Status Slave-Port
+SlpCmd equ 1ffah ; Kommandoregister Slave-Port
+SlpFunReg equ 1ffbh ; Slave-Port Steuerung
+
+
+ endcase
+
+;----------------------------------------------------------------------------
+; Vektoren/Sonderadressen
+
+ if MOMCPU>=80196h
+EPAIntX_Vec equ 2000h ; Kanal 4...9/0/1 EPA
+EPAInt3_Vec equ 2002h ; Kanal 3 EPA
+EPAInt2_Vec equ 2004h ; Kanal 2 EPA
+EPAInt1_Vec equ 2006h ; Kanal 1 EPA
+EPAInt0_Vec equ 2008h ; Kanal 0 EPA
+AD_Complete_Vec equ 200ah ; A/D-Wandlung abgeschlossen
+OBE_Slp_Vec equ 200ch ; Ausgabepuffer leer
+IBF_Slp_Vec equ 200eh ; Eingabepuffer voll
+Trap_Vec equ 2010h ; Software-Trap
+Ill_Opcode_Vec equ 2012h ; undefinierter Opcode
+CMD_Full_Vec equ 2030h ; Kommandopuffer voll
+SSIO0_Trans_Vec equ 2032h ; Transfer SSIO0 abgeschlossen
+SSIO1_Trans_Vec equ 2034h ; Transfer SSIO1 abgeschlossen
+SIO_TrInt_Vec equ 2036h ; SIO hat Zeichen versandt
+SIO_RcInt_Vec equ 2038h ; SIO hat Zeichen empfangen
+ExtInt_Vec equ 203ch ; externer Interrupt
+NMI_Vec equ 203eh ; nicht mask. Interrupt
+ elseif
+TOverInt_Vec equ 2000h ; Vektor Timerüberlauf
+ADInt_Vec equ 2002h ; Vektor A/D-Wandlung beendet
+HSIDataInt_Vec equ 2004h ; Vektor HSI-Daten verfügbar
+HSOInt_Vec equ 2006h ; Vektor HSO
+HSI0Int_Vec equ 2008h ; Vektor HSI.0
+TimeInt_Vec equ 200ah ; Vektor für Timer
+SerialInt_Vec equ 200ch ; Vektor serieller Interrupt
+ExtInt_Vec equ 200eh ; Vektor externer Interrupt
+SoftInt_Vec equ 2010h ; TRAP Interruptvektor
+Self_Jump equ 201ah ; Endlosschleife
+ endif
+
+;----------------------------------------------------------------------------
+; Speicherbereiche, Spezialregister
+
+ switch MOMCPUNAME
+
+
+ case "80296"
+IRAM equ 1ah ; Beginn internes RAM
+IRAMEND equ 1ffh ; Ende internes RAM
+CODERAM equ 0f800h ; Beginn Code-RAM
+CODERAMEND equ 0ffffh ; Ende Code-RAM
+EXTMEM1 equ 400h ; Beginn externer Speicher Bereich 1
+EXTMEM1END equ 1bffh ; Ende externer Speicher Bereich 1
+EXTMEM2 equ 02000h ; Beginn externer Speicher Bereich 2
+EXTMEM2END equ 0f7ffh ; Ende externer Speicher Bereich 2
+EXTMEM3 equ 0ff0400h ; Beginn externer Speicher Bereich 3
+EXTMEM3END equ 0fff7ffh ; Ende externer Speicher Bereich 3
+CCB0 equ 0ff2018h ; Chip-Konfiguration
+CCB1 equ 0ff201ah ; erw. Chip-Konfiguration
+Reset_Location equ 0ff2080h ; Startadresse nach Reset
+
+
+ case "80196N"
+IRAM equ 1ah ; Beginn internes RAM
+IRAMEND equ 3ffh ; Ende internes RAM
+IROM equ 0ff2000h ; Beginn internes Programm-ROM
+IROMEND equ 0ff9fffh ; Ende internes Programm-ROM
+EXTMEM1 equ 600h ; Beginn externer Speicher Bereich 1
+EXTMEM1END equ 1effh ; Ende externer Speicher Bereich 1
+EXTMEM2 equ 0a000h ; Beginn externer Speicher Bereich 2
+EXTMEM2END equ 0ffffh ; Ende externer Speicher Bereich 2
+EXTMEM3 equ 0ff0100h ; Beginn externer Speicher Bereich 3
+EXTMEM3END equ 0ff03ffh ; Ende externer Speicher Bereich 3
+EXTMEM4 equ 0ff0600h ; Beginn externer Speicher Bereich 4
+EXTMEM4END equ 0ff1fffh ; Ende externer Speicher Bereich 4
+EXTMEM5 equ 0ffa000h ; Beginn externer Speicher Bereich 5
+EXTMEM5END equ 0ffffffh ; Ende externer Speicher Bereich 5
+CCB0 equ 0ff2018h ; Chip-Konfiguration
+CCB1 equ 0ff201ah ; erw. Chip-Konfiguration
+CCB2 equ 0ff201ch
+Security_Key equ 0ff2020h ; Schlüssel
+Reset_Location equ 0ff2080h ; Startadresse nach Reset
+USFR equ 1ff6h ; ???
+IRAM_CON equ 1fe0h ; Konfiguration Code-RAM
+
+
+ case "80196"
+IRAM equ 1ah ; Beginn internes RAM
+IRAMEND equ 1ffh ; Ende internes RAM
+PDRAM equ IRAM ; Beginn Power-Down-RAM
+PDRAMEND equ 1ffh ; Ende Power-Down-RAM
+CODERAM equ 400h ; Beginn Code-RAM (KEIN Windowing!)
+CODERAMEND equ 4ffh ; Ende Code-RAM
+IROM equ 2000h ; Beginn internes Programm-ROM
+IROMEND equ 3fffh ; Ende internes Programm-ROM
+EXTMEM1 equ 500h ; Beginn externer Speicher Bereich 1
+EXTMEM1END equ 1effh ; Ende externer Speicher Bereich 1
+EXTMEM2 equ 4000h ; Beginn externer Speicher Bereich 2
+EXTMEM2END equ 0ffffh ; Ende externer Speicher Bereich 2
+CCB equ 2018h ; Chip-Konfiguration
+CCB1 equ 201ah ; erw. Chip-Konfiguration
+Security_Key equ 2020h ; Schlüssel
+Reset_Location equ 2080h ; Startadresse nach Reset
+USFR equ 1ff6h ; ???
+
+
+ case "8096"
+IRAM equ 1ah ; Beginn internes RAM
+IRAMEND equ 0ffh ; Ende internes RAM
+PDRAM equ 0f0h ; Beginn Power-Down-RAM
+PDRAMEND equ 0ffh ; Ende Power-Down-RAM
+IROM equ 2000h ; Beginn internes Programm-ROM
+IROMEND equ 3fffh ; Ende internes Programm-ROM
+EXTMEM1 equ 100h ; Beginn externer Speicher Bereich 1
+EXTMEM1END equ 1effh ; Ende externer Speicher Bereich 1
+EXTMEM2 equ 4000h ; Beginn externer Speicher Bereich 2
+EXTMEM2END equ 0ffffh ; Ende externer Speicher Bereich 2
+CCB equ 2018h ; Chip-Konfiguration
+Security_Key equ 2020h ; Schlüssel
+Reset_Location equ 2080h ; Startadresse nach Reset
+
+
+ endcase
+
+Security_Key_End equ Security_Key+15
+
+;--------------------------------------------------------------------------
+; lange Sprünge
+
+__DefLongJmp macro new,old
+new macro Adr,{NoExpand}
+ old Skip
+ ljmp Adr
+Skip:
+ endm
+ endm
+
+ __DefLongJmp bc,jnc
+ __DefLongJmp be,jne
+ __DefLongJmp bge,jlt
+ __DefLongJmp bgt,jle
+ __DefLongJmp bh,jnh
+ __DefLongJmp ble,jgt
+ __DefLongJmp blt,jge
+ __DefLongJmp bnc,jc
+ __DefLongJmp bne,je
+ __DefLongJmp bnh,jh
+ __DefLongJmp bnst,jst
+ __DefLongJmp bnv,jv
+ __DefLongJmp bnvt,jvt
+ __DefLongJmp bst,jnst
+ __DefLongJmp bv,jnv
+ __DefLongJmp bvt,jnvt
+
+;--------------------------------------------------------------------------
+
+ endif
+
+ restore ; wieder erlauben
+