home *** CD-ROM | disk | FTP | other *** search
- /*
- *
- * 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);
- }
-