aboutsummaryrefslogtreecommitdiff
path: root/src/z_lp.c
diff options
context:
space:
mode:
authorIOhannes m zmölnig <zmoelnig@users.sourceforge.net>2005-03-22 20:58:25 +0000
committerIOhannes m zmölnig <zmoelnig@users.sourceforge.net>2005-03-22 20:58:25 +0000
commit2b60d55c919e7588f5aff15936e83c300b3660bb (patch)
tree14d860de7f28083d3756ad91b627de70f26788f6 /src/z_lp.c
parentc500bc542cb7cc78d6dac3f7da3bff626056b1aa (diff)
zexy-2.0:
- use of abstractions for objects that allow it - some objects are build both as externals and abstractions (as slower fallbacks) - code-layout is now 1:1 c-file<->object (this should allow for building of zexy as a collection of externals instead as a big library) - matrix-objects have moved to iemmatrix !! svn path=/trunk/externals/zexy/; revision=2641
Diffstat (limited to 'src/z_lp.c')
-rw-r--r--src/z_lp.c148
1 files changed, 0 insertions, 148 deletions
diff --git a/src/z_lp.c b/src/z_lp.c
deleted file mode 100644
index bb1cc54..0000000
--- a/src/z_lp.c
+++ /dev/null
@@ -1,148 +0,0 @@
- /*
- (c) 2000:forum::für::umläute:2004
-
- write to the parallel port
- extended to write to any port (if we do have permissions)
-*/
-#define BASE0 0x3bc
-#define BASE1 0x378
-#define BASE2 0x278
-
-#define MODE_IOPERM 1
-#define MODE_IOPL 0
-
-#include "zexy.h"
-
-/* ----------------------- lpt --------------------- */
-
-#ifdef Z_WANT_LPT
-# include <sys/io.h>
-# include <stdlib.h>
-static int count_iopl = 0;
-#endif
-
-
-static t_class *lpt_class;
-
-typedef struct _lpt
-{
- t_object x_obj;
-
- unsigned long port;
-
- int mode; // MODE_IOPERM, MODE_IOPL
-} t_lpt;
-
-static void lpt_float(t_lpt *x, t_floatarg f)
-{
-#ifdef Z_WANT_LPT
- if (x->port) {
- unsigned char b = f;
- outb(b, x->port);
- }
-#endif /* Z_WANT_LPT */
-}
-
-static void *lpt_new(t_symbol *s, int argc, t_atom *argv)
-{
- t_lpt *x = (t_lpt *)pd_new(lpt_class);
- if(s==gensym("lp"))
- error("lpt: the use of 'lp' has been deprecated; use 'lpt' instead");
-
-#ifdef Z_WANT_LPT
- x->port = 0;
-
- if ((argc==0)||(argv->a_type==A_FLOAT)) {
- /* FLOAT specifies a parallel port */
- switch ((int)((argc)?atom_getfloat(argv):0)) {
- case 0:
- x->port = BASE0;
- break;
- case 1:
- x->port = BASE1;
- break;
- case 2:
- x->port = BASE2;
- break;
- default:
- error("lpt : only lpt0, lpt1 and lpt2 are accessible");
- x->port = 0;
- return (x);
- }
- } else {
- /* SYMBOL might be a file or a hex port-number;
- we ignore the file (device) case by now;
- LATER think about this
- */
- x->port=strtol(atom_getsymbol(argv)->s_name, 0, 16);
- }
-
- if (!x->port || x->port>65535){
- post("lpt : bad port %x", x->port);
- x->port = 0;
- return (x);
- }
-
- if (x->port && x->port < 0x400){
- if (ioperm(x->port, 8, 1)) {
- error("lpt : couldn't get write permissions");
- x->port = 0;
- return (x);
- }
- x->mode = MODE_IOPERM;
- } else {
- if (iopl(3)){
- error("lpt : couldn't get write permissions");
- x->port = 0;
- return (x);
- }
- x->mode=MODE_IOPL;
- count_iopl++;
- // post("iopl.............................%d", count_iopl);
- }
-
- post("connected to port %x in mode '%s'", x->port, (x->mode==MODE_IOPL)?"iopl":"ioperm");
- if (x->mode==MODE_IOPL)post("warning: this might seriously damage your pc...");
-#else
- error("zexy has been compiled without [lpt]!");
-#endif /* Z_WANT_LPT */
-
- return (x);
-}
-
-static void lpt_free(t_lpt *x)
-{
-#ifdef Z_WANT_LPT
- if (x->port) {
- if (x->mode==MODE_IOPERM && ioperm(x->port, 8, 0)) error("lpt: couldn't clean up device");
- else if (x->mode==MODE_IOPL && (!--count_iopl) && iopl(0))
- error("lpt: couldn't clean up device");
- }
-#endif /* Z_WANT_LPT */
-}
-
-
-static void helper(t_lpt *x)
-{
- post("\n%c lpt :: direct access to the parallel port", HEARTSYMBOL);
- post("<byte>\t: write byte to the parallel-port");
- post("\ncreation:\t\"lpt [<port>]\": connect to parallel port <port> (0..2)");
- post("\t\t\"lpt <portaddr>\": connect to port @ <portaddr> (hex)");
-}
-
-void z_lpt_setup(void)
-{
- lpt_class = class_new(gensym("lpt"),
- (t_newmethod)lpt_new, (t_method)lpt_free,
- sizeof(t_lpt), 0, A_GIMME, 0);
- class_addcreator((t_newmethod)lpt_new, gensym("lp"), A_GIMME, 0);
-
- class_addfloat(lpt_class, (t_method)lpt_float);
-
- class_addmethod(lpt_class, (t_method)helper, gensym("help"), 0);
- class_sethelpsymbol(lpt_class, gensym("zexy/lpt"));
-}
-
-void z_lp_setup(void){
- z_lpt_setup();
-}