/* * * DISCLAIMER: * * This program is provided as a service to the programmer * community to demonstrate one or more features of the Amiga * personal computer. These code samples may be freely used * for commercial or noncommercial purposes. * * Commodore Electronics, Ltd ("Commodore") makes no * warranties, either expressed or implied, with respect * to the program described herein, its quality, performance, * merchantability, or fitness for any particular purpose. * This program is provided "as is" and the entire risk * as to its quality and performance is with the user. * Should the program prove defective following its * purchase, the user (and not the creator of the program, * Commodore, their distributors or their retailers) * assumes the entire cost of all necessary damages. In * no event will Commodore be liable for direct, indirect, * incidental or consequential damages resulting from any * defect in the program even if it has been advised of the * possibility of such damages. Some laws do not allow * the exclusion or limitation of implied warranties or * liabilities for incidental or consequential damages, * so the above limitation or exclusion may not apply. * */ /* parallel.c .... parallel port test program. */ /* author: Tom Pohorsky, 12/1/85 */ #include "exec/types.h" #include "exec/nodes.h" #include "exec/lists.h" #include "exec/ports.h" #include "exec/libraries.h" #include "exec/devices.h" #include "exec/io.h" #include "devices/parallel.h" struct IOExtPar IORpar; struct MsgPort *port; char buffer[64000]; extern struct MsgPort *CreatePort(); main() { int error; int actual; unsigned char pflags; unsigned long pt0; unsigned long pt1; open: /* OPEN the parallel.device */ if ((error = OpenDevice (PARALLELNAME, 0, &IORpar, 0)) != 0) { printf ("bad news %ld on Open \n", error); exit (error); } /* SET UP the message port in the I/O request */ port = CreatePort (PARALLELNAME,0); IORpar.IOPar.io_Message.mn_ReplyPort = port; /* SET PARAMS for the parallel.device */ pflags = PARF_EOFMODE; pt0 = 0x51040303; pt1 = 0x03030303; if ((error = setparams (pflags,pt0,pt1)) != 0) { printf ("bad news %ld on setup \n", error); DeletePort(); exit (error); } actual = readPar (buffer,60000); /* CLOSE the parallel.device */ CloseDevice (&IORpar); DeletePort (port); exit (0); } /* PARALLEL I/O functions */ setparams(pf,ta0,ta1) unsigned char pf; unsigned long ta0; unsigned long ta1; { int error; IORpar.io_ParFlags = pf; IORpar.IOPar.io_Command = PDCMD_SETPARAMS; IORpar.io_PTermArray.PTermArray0 = ta0; IORpar.io_PTermArray.PTermArray1 = ta1; if ((error = DoIO (&IORpar)) != 0) { printf ("parallel.device setparams error %ld \n", error); } return (error); } readPar(data,length) char *data; ULONG length; { int error; IORpar.IOPar.io_Data = data; IORpar.IOPar.io_Length = length; IORpar.IOPar.io_Command = CMD_READ; if ((error = DoIO (&IORpar)) != 0) { printf ("parallel.device read error %ld \n", error); } return (IORpar.IOPar.io_Actual); } writePar(data,length) char *data; int length; { int error; IORpar.IOPar.io_Data = data; IORpar.IOPar.io_Length = length; IORpar.IOPar.io_Command = CMD_WRITE; if ((error = DoIO (&IORpar)) != 0) { printf ("parallel.device write error %ld \n", error); } return (error); }