/* LEDPANEL.H - Kontroll-Struktur fr das LED-Panel Die folgende C-Struktur dient gleichzeitig als Patch-Area fr die Voreinstellungen und zur Kontrolle des LED-Panels durch externe Programme, etwa ein Accessory oder CPX-Modul. Der 'LEDP'-Cookie enth„lt einen Zeiger auf diese Struktur. */ #define LEDP_MAGIC 'LEDP' #define LEDP_VERSION 0x0207 #define LEDP_VERDATE 0x20041994L #define LEDP_VARLEN 0x20 typedef struct { struct { long magic; /* magische Zahl MAGIC */ int version; /* Versionsnummer und */ long verdate; /* Datum des LED-Panels */ int varlen; /* L„nge der Patch-Area in Bytes */ int light; /* Flag fr "light"-Version */ } header; int active; /* Flag fr Anzeige aktiv */ long ledbits; /* gew„hlte Laufwerke */ int alldrvs; /* Flag fr angemeldete Laufwerke */ int delay; /* Nachleuchtdauer der LEDs in VBLs */ struct { int top; /* Abstand zum oberen Rand in Zeilen */ int right; /* Abstand zum rechten Rand in Bytes */ } margin; struct { res1: 7; /* reserviert */ bgcol: 1; /* Hintergrundfarbe des Panels */ res2: 3; /* reserviert */ ledfrm: 1; /* Flag fr runde LEDs */ res3: 3; /* reserviert */ ledcol: 1; /* Flag fr farbige LEDs */ } color; struct { lftspc: 1; /* linker Rand */ caps: 1; /* CapsLock-Anzeige */ cpspc: 1; /* Lcke zwischen R/W und CapsLock */ rwsym: 1; /* R/W-Symbol */ rwspc: 1; /* Lcke zwischen LEDs und R/W-Symbol */ onlya: 1; /* Floppys zusammenfassen */ hrdspc: 1; /* Extra-Lcke vor Harddisk */ ramspc: 1; /* Extra-Lcke vor RAM-Disk */ allspc: 1; /* Extra-Lcken zwischen Laufwerken */ frespc: 1; /* Lcken fr freie Laufwerke zeigen */ leds: 1; /* LED-Panel anzeigen */ datspc: 1; /* Abstand zwischen Uhr/Datum und LEDs */ date: 1; /* Datum */ clock: 1; /* Uhrensymbol */ time: 1; /* Uhrzeit */ rgtspc: 1; /* rechter Rand */ } setup; int lines; /* Anzahl LED-Zeilen (1/2 oder 0=auto) */ struct { char year,sec; /* Flag fr Jahr/Sekunden anzeigen */ } dtverb; struct { char date,time; /* Null-Zeichen fr Datum/Uhrzeit */ } zero; struct { char off,on; /* Symbol fr Uhrzeit aus/an */ } clock; struct { char off,on; /* Symbol fr CapsLock aus/an */ } caps; struct { char caps,shft; /* Maske fr CapsLock/Umschalt-Taste */ } keymask; struct { char hrd,ram; /* erstes Laufwerk der Harddisk/RAM-Disk */ } fstdrv; struct { int x,y,w,h; /* letztes benutztes Rechteck */ } lstrect; struct { char *pointer; /* Zeiger auf zu berwachendes Byte */ char check; /* Default fr zu berprfendes Byte */ char last; /* letzter Wert des Bytes */ char andmask; /* Und-Maske zum Zurcksetzen */ char ormask; /* Oder-Maske zum Zurcksetzen */ char restime; /* Zeit zum Zurcksetzen */ char counter; /* Z„hler dafr */ char bit0; /* Zeichen fr 0-Bit */ char bit1; /* Zeichen fr 1-Bit */ char bytelft; /* Zeichen links vom Byte */ char bytergt; /* Zeichen links vom Byte */ } watch; } LEDP; /* Offsets (dezimal) ----------------- 0 header 32 lines 0 magic 34 dtverb 4 version 36 zero 6 verdate 38 clock 10 varlen 40 caps 12 light 42 keymask 14 active 44 fstdrv 16 ledbits 46 lstrect 20 alldrvs 54 watch 22 delay 54 pointer 24 margin 58 check 24 top 60 andmask 26 right 62 restime 28 color 64 bit0 30 setup 66 bytelft */ /* Hinweise -------- magic: XBRA-Kennung des LED-Panels varlen: L„nge der zu speichernden Variablen ab Header active: Bit 0: Anzeige ein/ausschalten, Bit 15: Anzeige auffrischen lastrect: Letztes zur Anzeige benutztes Grafik-Rechteck watch: Fr Programmierer zu Debugging-Zwecken, hiermit kann ein Byte berwacht werden pointer: Zeiger auf das Byte, man muž natrlich global (im Supervisor-Modus) darauf zugreifen k”nnen check: Unbenutzt, man kann den obigen Zeiger darauf zeigen lassen (Zugriff garantiert erlaubt) andmask: Nachdem ein Z„hler abgelaufen ist, wird eine Und-Operation mit dieser Maske durchgefhrt, ormask: zus„tzlich auch noch eine Oder-Operation restime: Startwert fr den Z„hler in VBLs (falls 0, dann wird das Byte nie ver„ndert) bit0/bit1: Zeichen fr 0-Bit und 1-Bit bytelft/bytergt: Zeichen fr Umrahmung des Bytes Empfohlene Vorgehensweise beim Ver„ndern von Parametern: 1. Header berprfen (magic, version) 2. LED-Panel abschalten (active=0) 3. Žnderungen an der Konfiguration vornehmen 4. Grafik-Rechteck (lstrect) l”schen 5. LED-Panel einschalten und auffrischen (active=0x8001) */