( GPIObase_addr)
( Get base address of GPIO)


( Info on register addresses: ***********)
( Note: Rev 1 Pi uses BSC0 on pins 3 & 5; Rev 2 uses BSC1)
(       Rev 1: &2020_0000; Rev 2: 2080_0000 for base address of registers
          Pi2: &3F200000  for GPIO base address)
( board nos: 12 for Rev2; 17 for B+, ?19 for Pi 2)

( brdno & getboard already defined in GPIO_pi)
getboard 

: ?Pi2  0  brdno @ 17 > IF  2 ENDIF ;

?Pi2 VARIABLE qPi2  ( 2 if Pi2, else 0)

( NB variable qPi2 defined in !Startup)
: setbasereg  qPi2 @ 2 = IF   [ HEX 3F200000 ] LITERAL    ( for Pi2)
                         ELSE [ HEX 20200000 ] LITERAL    ( for B,B+)
                         ENDIF ;

setbasereg ( DUP CR . CR KEY DROP)

( Now get actual peripheral address - GPIOsel_fn register)
HEX
200 SWAP DECIMAL 13 SPI_reg
CONSTANT GPIOsel_fn


