#lang racket/unit (require "../macro.rkt" "../target.rkt" "../sig.rkt" "sig.rkt") (import) (export pic18-const^ pic18-const-id^) ;; 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 ) )