{{
┌──────────────────────────────────────────────────────────────────────────────────────────────────────┐
│ Autor: Reinhard Zielinski -> Original-Code: Ingo Kripahle                                                                                │
│ Copyright (c) 2013 Ingo Kripahle                                                                     │
│ See end of file for terms of use.                                                                    │
│ Die Nutzungsbedingungen befinden sich am Ende der Datei                                              │
└──────────────────────────────────────────────────────────────────────────────────────────────────────┘

Informationen   : hive-project.de
Kontakt         : zille9@googlemail.com
System          : Hive
Name            : Bus-Erweiterung für Hive-Computer
Chip            : Venatrix
Typ             : Treiber
Version         : 01
Subversion      : 00
Funktion        : Bus-System für Erweiterungsmodule

Der integrierte Loader kann Venatrix mit einem beliebigen Code versorgen

20-11-2013      -I2C-Slave Funktion hinzugefügt, damit die Bus-Karte vom Hive (Plexus) erkannt werden kann (Adresse 5)


COG's           : MANAGMENT     1 COG
                  -------------------
                                1 COG

}}
CON
_CLKMODE     = XTAL1 + PLL16X
_XINFREQ     = 5_000_000
Treiberversion= 1

'          /cs     --------+
'          clk     -------+|
'          /wr     ------+||
'          /hs     -----+||| +------------------------- /cs ->bei Venatrix P24 statt P23
'                       |||| |                 -------- d0..d7
DB_IN            = %00001000_00000000_00000000_00000000 'maske: dbus-eingabe
DB_OUT           = %00001000_00000000_00000000_11111111 'maske: dbus-ausgabe

M1               = %00000010_00000000_00000000_00000000 'busclk=1? & /cs=0?
M2               = %00000011_00000000_00000000_00000000 'maske: busclk & /cs (/prop4)

M3               = %00000000_00000000_00000000_00000000 'busclk=0?
M4               = %00000010_00000000_00000000_00000000 'maske busclk




#0,     D0,D1,D2,D3,D4,D5,D6,D7                         'datenbus (Port A)
#8,     B0,B1,B2,B3,B4,B5,B6,B7                         'Port B
#16,    C0,C1,C2,C3,C4,C5,C6,C7                         'Port C
#24,    BUS_CS                                          'Chip-Select
        BUSCLK                                          'bustakt
        BUS_WR                                          '/wr - schreibsignal
        BUS_HS '                                        '/hs - quittungssignal

  SDA_PIN       = 29
  SCL_PIN       = 28

obj
        bus    :"Venatrix-Bus"                         'allgemeine Bus-Funktionen
        i2c_slave: "AiChip_I2cSlave_Slave_003"

Var
  byte proghdr[16]                                     'puffer für objektkopf
  long plen                                            'länge datenblock loader

PUB main | zeichen,i                             'chip: kommandointerpreter
''funktionsgruppe               : chip
''funktion                      : kommandointerpreter
''eingabe                       : -
''ausgabe                       : -

  bus.bus_init
  i2c_Slave.Start( SCL_PIN, SDA_PIN, $5, 0, 0, 0 )


  repeat
    zeichen := bus.bus_getchar                                  'kommandocode empfangen
    case zeichen

'       ----------------------------------------------  CHIP-MANAGMENT
       96: bus.mgr_getcogs                                 'freie cogs abfragen
       97: bus.mgr_load                                    'neuen venatrix-code laden
       98: bus.bus_putchar(Treiberversion)                 'Rückgabe Testwert (Version des Venatrix-Treibers)
       99: reboot                                          'Venatrix neu starten

