pic18/pic18-const.ss
#lang scheme/base
(require "../macro.ss"
         "../target.ss")
(provide (all-defined-out))

;; Constants for PIC18 unit. 

;; Define both macros and scheme values.  Scheme values are wrapped in
;; a target-value struct for better asm printing.
(define-syntax-rule (constants (name value) ...)
  (begin
    (define name (target-value-delay value 'name)) ...
    (compositions (macro) macro: (name ',name) ...)))


(constants
 ( FSR0 0 )
 ( FSR1 1 )
 ( FSR2 2 )
 ( FAST 1 )
 ( W 0 )
 ( A 0 )
 ( ACCESS 0 )
 ( BANKED 1 )
 ( TOSU #x0FFF )
 ( TOSH #x0FFE )
 ( TOSL #x0FFD )
 ( STKPTR #x0FFC )
 ( PCLATU #x0FFB )
 ( PCLATH #x0FFA )
 ( PCL #x0FF9 )
 ( TBLPTRU #x0FF8 )
 ( TBLPTRH #x0FF7 )
 ( TBLPTRL #x0FF6 )
 ( TABLAT #x0FF5 )
 ( PRODH #x0FF4 )
 ( PRODL #x0FF3 )
 ( INTCON #x0FF2 )
 ( INTCON2 #x0FF1 )
 ( INTCON3 #x0FF0 )
 ( INDF0 #x0FEF )
 ( POSTINC0 #x0FEE )
 ( POSTDEC0 #x0FED )
 ( PREINC0 #x0FEC )
 ( PLUSW0 #x0FEB )
 ( FSR0H #x0FEA )
 ( FSR0L #x0FE9 )
 ( WREG #x0FE8 )
 ( INDF1 #x0FE7 )
 ( POSTINC1 #x0FE6 )
 ( POSTDEC1 #x0FE5 )
 ( PREINC1 #x0FE4 )
 ( PLUSW1 #x0FE3 )
 ( FSR1H #x0FE2 )
 ( FSR1L #x0FE1 )
 ( BSR #x0FE0 )
 ( INDF2 #x0FDF )
 ( POSTINC2 #x0FDE )
 ( POSTDEC2 #x0FDD )
 ( PREINC2 #x0FDC )
 ( PLUSW2 #x0FDB )
 ( FSR2H #x0FDA )
 ( FSR2L #x0FD9 )
 ( STATUS #x0FD8 )
 ( TMR0H #x0FD7 )
 ( TMR0L #x0FD6 )
 ( T0CON #x0FD5 )
 ( OSCCON #x0FD3 )
 ( LVDCON #x0FD2 )
 ( WDTCON #x0FD1 )
 ( RCON #x0FD0 )
 ( TMR1H #x0FCF )
 ( TMR1L #x0FCE )
 ( T1CON #x0FCD )
 ( TMR2 #x0FCC )
 ( PR2 #x0FCB )
 ( T2CON #x0FCA )
 ( ADRESH #x0FC4 )
 ( ADRESL #x0FC3 )
 ( ADCON0 #x0FC2 )
 ( ADCON1 #x0FC1 )
 ( ADCON2 #x0FC0 )
 ( CCPR1H #x0FBF )
 ( CCPR1L #x0FBE )
 ( CCP1CON #x0FBD )
 ( PWM1CON #x0FB7 )
 ( ECCPAS #x0FB6 )
 ( TMR3H #x0FB3 )
 ( TMR3L #x0FB2 )
 ( T3CON #x0FB1 )
 ( SPBRGH #x0FB0 )
 ( SPBRG #x0FAF )
 ( RCREG #x0FAE )
 ( TXREG #x0FAD )
 ( TXSTA #x0FAC )
 ( RCSTA #x0FAB )
 ( BAUDCTL #x0FAA )
 ( EEADR #x0FA9 )
 ( EEDATA #x0FA8 )
 ( EECON2 #x0FA7 )
 ( EECON1 #x0FA6 )
 ( IPR2 #x0FA2 )
 ( PIR2 #x0FA1 )
 ( PIE2 #x0FA0 )
 ( IPR1 #x0F9F )
 ( PIR1 #x0F9E )
 ( PIE1 #x0F9D )
 ( OSCTUNE #x0F9B )
 ( TRISB #x0F93 )
 ( TRISA #x0F92 )
 ( LATB #x0F8A )
 ( LATA #x0F89 )
 ( PORTB #x0F81 )
 ( PORTA #x0F80 )
 ( STKFUL #x0007 )
 ( STKUNF #x0006 )
 ( SP4 #x0004 )
 ( SP3 #x0003 )
 ( SP2 #x0002 )
 ( SP1 #x0001 )
 ( SP0 #x0000 )
 ( GIE #x0007 )
 ( GIEH #x0007 )
 ( PEIE #x0006 )
 ( GIEL #x0006 )
 ( TMR0IE #x0005 )
 ( INT0IE #x0004 )
 ( RBIE #x0003 )
 ( TMR0IF #x0002 )
 ( INT0IF #x0001 )
 ( RBIF #x0000 )
 ( NOT_RBPU #x0007 )
 ( RBPU #x0007 )
 ( INTEDG0 #x0006 )
 ( INTEDG1 #x0005 )
 ( INTEDG2 #x0004 )
 ( TMR0IP #x0002 )
 ( T0IP #x0002 )
 ( RBIP #x0000 )
 ( INT2IP #x0007 )
 ( INT1IP #x0006 )
 ( INT2IE #x0004 )
 ( INT1IE #x0003 )
 ( INT2IF #x0001 )
 ( INT1IF #x0000 )
 ( N #x0004 )
 ( OV #x0003 )
 ( Z #x0002 )
 ( DC #x0001 )
 ( C #x0000 )
 ( TMR0ON #x0007 )
 ( T08BIT #x0006 )
 ( T0CS #x0005 )
 ( T0SE #x0004 )
 ( PSA #x0003 )
 ( T0PS2 #x0002 )
 ( T0PS1 #x0001 )
 ( T0PS0 #x0000 )
 ( IDLEN #x0007 )
 ( IRCF2 #x0006 )
 ( IRCF1 #x0005 )
 ( IRCF0 #x0004 )
 ( OSTS #x0003 )
 ( IOFS #x0002 )
 ( SCS1 #x0001 )
 ( SCS0 #x0000 )
 ( IRVST #x0005 )
 ( LVDEN #x0004 )
 ( LVDL3 #x0003 )
 ( LVDL2 #x0002 )
 ( LVDL1 #x0001 )
 ( LVDL0 #x0000 )
 ( SWDTEN #x0000 )
 ( IPEN #x0007 )
 ( NOT_RI #x0004 )
 ( RI #x0004 )
 ( NOT_TO #x0003 )
 ( TO #x0003 )
 ( NOT_PD #x0002 )
 ( PD #x0002 )
 ( NOT_POR #x0001 )
 ( POR #x0001 )
 ( NOT_BOR #x0000 )
 ( BOR #x0000 )
 ( RD16 #x0007 )
 ( T1RUN #x0006 )
 ( T1CKPS1 #x0005 )
 ( T1CKPS0 #x0004 )
 ( T1OSCEN #x0003 )
 ( NOT_T1SYNC #x0002 )
 ( T1SYNC #x0002 )
 ( TMR1CS #x0001 )
 ( TMR1ON #x0000 )
 ( TOUTPS3 #x0006 )
 ( TOUTPS2 #x0005 )
 ( TOUTPS1 #x0004 )
 ( TOUTPS0 #x0003 )
 ( TMR2ON #x0002 )
 ( T2CKPS1 #x0001 )
 ( T2CKPS0 #x0000 )
 ( VCFG1 #x0007 )
 ( VCFG0 #x0006 )
 ( CHS2 #x0004 )
 ( CHS1 #x0003 )
 ( CHS0 #x0002 )
 ( GO #x0001 )
 ( NOT_DONE #x0001 )
 ( DONE #x0001 )
 ( GO_DONE #x0001 )
 ( ADON #x0000 )
 ( PCFG6 #x0006 )
 ( PCFG5 #x0005 )
 ( PCFG4 #x0004 )
 ( PCFG3 #x0003 )
 ( PCFG2 #x0002 )
 ( PCFG1 #x0001 )
 ( PCFG0 #x0000 )
 ( ADFM #x0007 )
 ( ACQT2 #x0005 )
 ( ACQT1 #x0004 )
 ( ACQT0 #x0003 )
 ( ADCS2 #x0002 )
 ( ADCS1 #x0001 )
 ( ADCS0 #x0000 )
 ( P1M1 #x0007 )
 ( P1M0 #x0006 )
 ( DC1B1 #x0005 )
 ( DC1B0 #x0004 )
 ( CCP1M3 #x0003 )
 ( CCP1M2 #x0002 )
 ( CCP1M1 #x0001 )
 ( CCP1M0 #x0000 )
 ( PRSEN #x0007 )
 ( PDC6 #x0006 )
 ( PDC5 #x0005 )
 ( PDC4 #x0004 )
 ( PDC3 #x0003 )
 ( PDC2 #x0002 )
 ( PDC1 #x0001 )
 ( PDC0 #x0000 )
 ( ECCPASE #x0007 )
 ( ECCPAS2 #x0006 )
 ( ECCPAS1 #x0005 )
 ( ECCPAS0 #x0004 )
 ( PSSAC1 #x0003 )
 ( PSSAC0 #x0002 )
 ( PSSBD1 #x0001 )
 ( PSSBD0 #x0000 )
 ( T3CCP2 #x0006 )
 ( T3CKPS1 #x0005 )
 ( T3CKPS0 #x0004 )
 ( T3CCP1 #x0003 )
 ( NOT_T3SYNC #x0002 )
 ( T3SYNC #x0002 )
 ( TMR3CS #x0001 )
 ( TMR3ON #x0000 )
 ( CSRC #x0007 )
 ( TX9 #x0006 )
 ( TXEN #x0005 )
 ( SYNC #x0004 )
 ( SENDB #x0003 )
 ( BRGH #x0002 )
 ( TRMT #x0001 )
 ( TX9D #x0000 )
 ( SPEN #x0007 )
 ( RX9 #x0006 )
 ( SREN #x0005 )
 ( CREN #x0004 )
 ( ADDEN #x0003 )
 ( FERR #x0002 )
 ( OERR #x0001 )
 ( RX9D #x0000 )
 ( RCIDL #x0006 )
 ( SCKP #x0004 )
 ( BRG16 #x0003 )
 ( WUE #x0001 )
 ( ABDEN #x0000 )
 ( EEPGD #x0007 )
 ( CFGS #x0006 )
 ( FREE #x0004 )
 ( WRERR #x0003 )
 ( WREN #x0002 )
 ( WR #x0001 )
 ( RD #x0000 )
 ( OSCFIP #x0007 )
 ( EEIP #x0004 )
 ( LVDIP #x0002 )
 ( TMR3IP #x0001 )
 ( OSCFIF #x0007 )
 ( EEIF #x0004 )
 ( LVDIF #x0002 )
 ( TMR3IF #x0001 )
 ( OSCFIE #x0007 )
 ( EEIE #x0004 )
 ( LVDIE #x0002 )
 ( TMR3IE #x0001 )
 ( ADIP #x0006 )
 ( RCIP #x0005 )
 ( TXIP #x0004 )
 ( CCP1IP #x0002 )
 ( TMR2IP #x0001 )
 ( TMR1IP #x0000 )
 ( ADIF #x0006 )
 ( RCIF #x0005 )
 ( TXIF #x0004 )
 ( CCP1IF #x0002 )
 ( TMR2IF #x0001 )
 ( TMR1IF #x0000 )
 ( ADIE #x0006 )
 ( RCIE #x0005 )
 ( TXIE #x0004 )
 ( CCP1IE #x0002 )
 ( TMR2IE #x0001 )
 ( TMR1IE #x0000 )
 ( TUN5 #x0005 )
 ( TUN4 #x0004 )
 ( TUN3 #x0003 )
 ( TUN2 #x0002 )
 ( TUN1 #x0001 )
 ( TUN0 #x0000 )
 ( RA0 0 )
 ( AN0 0 )
 ( RA1 1 )
 ( AN1 1 )
 ( LVDIN 1 )
 ( RA2 2 )
 ( AN2 2 )
 ( VREFM 2 )
 ( RA3 3 )
 ( AN3 3 )
 ( VREFP 3 )
 ( RA4 4 )
 ( T0CKI 4 )
 ( RA5 5 )
 ( RA6 6 )
 ( OSC2 6 )
 ( CLKO 6 )
 ( RA7 7 )
 ( OSC1 7 )
 ( CLKI 7 )
 ( RB0 0 )
 ( INT0 0 )
 ( AN4 0 )
 ( RB1 1 )
 ( INT1 1 )
 ( AN5 1 )
 ( TX 1 )
 ( CK 1 )
 ( RB2 2 )
 ( INT2 2 )
 ( P1B 2 )
 ( RB3 3 )
 ( CCP1 3 )
 ( P1A 3 )
 ( RB4 4 )
 ( KBI0 4 )
 ( AN6 4 )
 ( RX 4 )
 ( RB5 5 )
 ( KBI1 5 )
 ( PGM 5 )
 ( RB6 6 )
 ( KBI2 6 )
 ( PGC 6 )
 ( T1OSO 6 )
 ( T1CKI 6 )
 ( T13CKI 6 )
 ( P1C 6 )
 ( RB7 7 )
 ( KBI3 7 )
 ( T1OSI 7 )
 ( PGD 7 )
 ( P1D 7 )
 ( _IDLOC0 #x200000 )
 ( _IDLOC1 #x200001 )
 ( _IDLOC2 #x200002 )
 ( _IDLOC3 #x200003 )
 ( _IDLOC4 #x200004 )
 ( _IDLOC5 #x200005 )
 ( _IDLOC6 #x200006 )
 ( _IDLOC7 #x200007 )
 ( _CONFIG1H #x300001 )
 ( _CONFIG2L #x300002 )
 ( _CONFIG2H #x300003 )
 ( _CONFIG3H #x300005 )
 ( _CONFIG4L #x300006 )
 ( _CONFIG5L #x300008 )
 ( _CONFIG5H #x300009 )
 ( _CONFIG6L #x30000A )
 ( _CONFIG6H #x30000B )
 ( _CONFIG7L #x30000C )
 ( _CONFIG7H #x30000D )
 ( _IESO_ON_1H #xFF )
 ( _IESO_OFF_1H #x7F )
 ( _FSCM_ON_1H #xFF )
 ( _FSCM_OFF_1H #xBF )
 ( _RC_OSC_1H #xFF )
 ( _RCIO_OSC_1H #xF7 )
 ( _LP_OSC_1H #xF0 )
 ( _XT_OSC_1H #xF1 )
 ( _HS_OSC_1H #xF2 )
 ( _HSPLL_OSC_1H #xF6 )
 ( _EC_OSC_1H #xF4 )
 ( _ECIO_OSC_1H #xF5 )
 ( _INTIO1_OSC_1H #xF9 )
 ( _INTIO2_OSC_1H #xF8 )
 ( _BORV_20_2L #xFF )
 ( _BORV_27_2L #xFB )
 ( _BORV_42_2L #xF7 )
 ( _BORV_45_2L #xF3 )
 ( _BOR_ON_2L #xFF )
 ( _BOR_OFF_2L #xFD )
 ( _PWRT_OFF_2L #xFF )
 ( _PWRT_ON_2L #xFE )
 ( _WDT_ON_2H #xFF )
 ( _WDT_OFF_2H #xFE )
 ( _WDTPS_32K_2H #xFF )
 ( _WDTPS_16K_2H #xFD )
 ( _WDTPS_8K_2H #xFB )
 ( _WDTPS_4K_2H #xF9 )
 ( _WDTPS_2K_2H #xF7 )
 ( _WDTPS_1K_2H #xF5 )
 ( _WDTPS_512_2H #xF3 )
 ( _WDTPS_256_2H #xF1 )
 ( _WDTPS_128_2H #xEF )
 ( _WDTPS_64_2H #xED )
 ( _WDTPS_32_2H #xEB )
 ( _WDTPS_16_2H #xE9 )
 ( _WDTPS_8_2H #xE7 )
 ( _WDTPS_4_2H #xE5 )
 ( _WDTPS_2_2H #xE3 )
 ( _WDTPS_1_2H #xE1 )
 ( _MCLRE_ON_3H #xFF )
 ( _MCLRE_OFF_3H #x7F )
 ( _DEBUG_ON_4L #x7F )
 ( _DEBUG_OFF_4L #xFF )
 ( _LVP_ON_4L #xFF )
 ( _LVP_OFF_4L #xFB )
 ( _STVR_ON_4L #xFF )
 ( _STVR_OFF_4L #xFE )
 ( _CP0_ON_5L #xFE )
 ( _CP0_OFF_5L #xFF )
 ( _CP1_ON_5L #xFD )
 ( _CP1_OFF_5L #xFF )
 ( _CPB_ON_5H #xBF )
 ( _CPB_OFF_5H #xFF )
 ( _CPD_ON_5H #x7F )
 ( _CPD_OFF_5H #xFF )
 ( _WRT0_ON_6L #xFE )
 ( _WRT0_OFF_6L #xFF )
 ( _WRT1_ON_6L #xFD )
 ( _WRT1_OFF_6L #xFF )
 ( _WRTC_ON_6H #xDF )
 ( _WRTC_OFF_6H #xFF )
 ( _WRTB_ON_6H #xBF )
 ( _WRTB_OFF_6H #xFF )
 ( _WRTD_ON_6H #x7F )
 ( _WRTD_OFF_6H #xFF )
 ( _EBTR0_ON_7L #xFE )
 ( _EBTR0_OFF_7L #xFF )
 ( _EBTR1_ON_7L #xFD )
 ( _EBTR1_OFF_7L #xFF )
 ( _EBTRB_ON_7H #xBF )
 ( _EBTRB_OFF_7H #xFF )
 ( _DEVID1 #x3FFFFE )
 ( _DEVID2 #x3FFFFF )

 ( BAUDCON #x0FB8 )
 )