summaryrefslogtreecommitdiffstats
path: root/libgloss/pa/op50nled.c
diff options
context:
space:
mode:
authorRanjith Kumaran <ranjith@cygnus.com>2000-03-17 22:48:54 +0000
committerRanjith Kumaran <ranjith@cygnus.com>2000-03-17 22:48:54 +0000
commit03261851a10dd2d6900a0a00a7515a0a46fb5d76 (patch)
tree7c22ac6cbbc99fd5cd1b5426853be8d4fd7bfcf1 /libgloss/pa/op50nled.c
parentfae4c299f14fc23e2829c8656992eba21f79242a (diff)
downloadcygnal-03261851a10dd2d6900a0a00a7515a0a46fb5d76.tar.gz
cygnal-03261851a10dd2d6900a0a00a7515a0a46fb5d76.tar.bz2
cygnal-03261851a10dd2d6900a0a00a7515a0a46fb5d76.zip
20000317 sourceware import
Diffstat (limited to 'libgloss/pa/op50nled.c')
-rw-r--r--libgloss/pa/op50nled.c81
1 files changed, 81 insertions, 0 deletions
diff --git a/libgloss/pa/op50nled.c b/libgloss/pa/op50nled.c
new file mode 100644
index 000000000..b6b35be4c
--- /dev/null
+++ b/libgloss/pa/op50nled.c
@@ -0,0 +1,81 @@
+/* op50nled.c -- fucntions that manipulate the LEDs.
+ *
+ * Copyright (c) 1995 Cygnus Support
+ *
+ * The authors hereby grant permission to use, copy, modify, distribute,
+ * and license this software and its documentation for any purpose, provided
+ * that existing copyright notices are retained in all copies and that this
+ * notice is included verbatim in any distributions. No written agreement,
+ * license, or royalty fee is required for any of the authorized uses.
+ * Modifications to this software may be copyrighted by their authors
+ * and need not follow the licensing terms described here, provided that
+ * the new terms are clearly indicated on the first page of each file where
+ * they apply.
+ */
+#include "op50n.h"
+
+void zylons();
+void strobe();
+void led_putnum();
+void delay();
+
+/*
+ * led_putnum -- print a hex number on the LED. the value of num must be a byte.
+ * The max number 15, since the front panel only has 4 LEDs.
+ */
+void
+led_putnum ( num )
+char num;
+{
+ static unsigned char *leds = (unsigned char *)LED_ADDR;
+
+/** *leds = (num << 4); **/
+ *leds = num;
+}
+
+/*
+ * strobe -- do a zylons thing, toggling each led in sequence forever...
+ */
+void
+zylons()
+{
+ while (1) {
+ strobe();
+ }
+}
+
+/*
+ * strobe -- toggle each led in sequence up and back once.
+ */
+void
+strobe()
+{
+ static unsigned char curled;
+ static unsigned char dir;
+
+ curled = 1;
+ dir = 0;
+ while (curled != 0) {
+ led_putnum (curled);
+ delay (70000);
+ if (dir)
+ curled >>= 1;
+ else
+ curled <<= 1;
+
+ if (curled == 0x100) {
+ dir = ~dir;
+ }
+ }
+ curled = 1;
+ dir = 0;
+}
+
+void
+delay (x)
+ int x;
+{
+ int y = 17;
+ while (x-- !=0)
+ y = y^2;
+}