diff -urN dcl-5.3.3-C.ORIG/Mkinclude.in dcl-5.3.3-C/Mkinclude.in
--- dcl-5.3.3-C.ORIG/Mkinclude.in	2007-10-12 02:28:32.000000000 +0900
+++ dcl-5.3.3-C/Mkinclude.in	2007-10-12 05:10:27.000000000 +0900
@@ -70,7 +70,7 @@
 
 DCLNWS		= @DCLNWS@
 
-MATHLIBOPT      = -lm
+MATHLIBOPT      = -L/sw/lib -laquaterm -lm -lSystemStubs
 
 MISC1EXT        = clcklib fiolib randlib hexlib reallib
 OLDSRC          = @OLDSRC@
diff -urN dcl-5.3.3-C.ORIG/configure dcl-5.3.3-C/configure
--- dcl-5.3.3-C.ORIG/configure	2007-10-12 02:28:32.000000000 +0900
+++ dcl-5.3.3-C/configure	2007-10-12 05:08:50.000000000 +0900
@@ -1745,7 +1745,7 @@
 DCLVERNUM=533
 DCLLANG=c
 
-DCLNWS=3
+DCLNWS=5
 
 CFLAGS=${CFLAGS--O}
 FFLAGS=${FFLAGS--O}
@@ -5962,7 +5962,7 @@
 
       CPPFLAGS="$ac_save_CPPFLAGS"
       GTKVERSION="2"
-      DCLNWS="4"
+      DCLNWS="5"
 
               pkg_config_args=gdk-pixbuf-2.0
 
@@ -6679,7 +6679,7 @@
 
 	 CPPFLAGS="$ac_save_CPPFLAGS"
 	 GTKVERSION="1"
-         DCLNWS="4"
+         DCLNWS="5"
 
 
 # Check whether --with-imlib-prefix was given.
diff -urN dcl-5.3.3-C.ORIG/src/grph1/swpack/Makefile dcl-5.3.3-C/src/grph1/swpack/Makefile
--- dcl-5.3.3-C.ORIG/src/grph1/swpack/Makefile	2007-10-12 02:28:33.000000000 +0900
+++ dcl-5.3.3-C/src/grph1/swpack/Makefile	2007-10-12 05:08:50.000000000 +0900
@@ -10,12 +10,12 @@
 LIBFSRCS	= swpack.c swiget.c swiqnp.c swlget.c swlqnp.c swrget.c \
 		  swrqnp.c swcget.c swcqnp.c swpget.c swpqnp.c swqfnm.c \
 		  swcmll.c
-LIBCSRCS	= zxpack.c z1pack.c ztpack.c zgpack.c cfnchr.c
+LIBCSRCS	= zxpack.c z1pack.c ztpack.c zgpack.c cfnchr.c zapack.c
 LIBSRCS		= $(LIBFSRCS) $(LIBCSRCS)
 LIBFOBJS	= swpack.o swiget.o swiqnp.o swlget.o swlqnp.o swrget.o \
 		  swrqnp.o swcget.o swcqnp.o swpget.o swpqnp.o swqfnm.o \
 		  swcmll.o
-LIBCOBJS	= zxpack.o z1pack.o ztpack.o zgpack.o cfnchr.o
+LIBCOBJS	= zxpack.o z1pack.o ztpack.o zgpack.o cfnchr.o zapack.o
 LIBOBJS		= $(LIBFOBJS) $(LIBCOBJS)
 
 
diff -urN dcl-5.3.3-C.ORIG/src/grph1/swpack/swcqnp.c dcl-5.3.3-C/src/grph1/swpack/swcqnp.c
--- dcl-5.3.3-C.ORIG/src/grph1/swpack/swcqnp.c	2007-10-12 02:28:33.000000000 +0900
+++ dcl-5.3.3-C/src/grph1/swpack/swcqnp.c	2007-10-12 05:08:50.000000000 +0900
@@ -25,31 +25,29 @@
 {
     /* Initialized data */
 
-    static char cparas[8*14] = "WSNAME01" "WSNAME02" "WSNAME03" "WSNAME04" 
+    static char cparas[8*15] = "WSNAME01" "WSNAME02" "WSNAME03" "WSNAME04" "WSNAME05" 
 	    "FNAME   " "TITLE   " "CLRMAP  " "BITMAP  " "CL2TN   " "FONT1   " 
 	    "FONT2   " "LPR     " "CIMGFMT " "CMAPLIST";
-    static char cx[80*14] = "X                                              "
-	    "                                 " "PS                          "
-	    "                                                    " "Tek      "
-	    "                                                                "
-	    "       " "Gtk                                                   "
-	    "                          " "dcl                                "
-	    "                                             " "*               "
-	    "                                                                " 
-	    "colormap                                                       "
-	    "                 " "bitmap                                      "
-	    "                                    " "cl2tnmap                 "
-	    "                                                       " "font1u"
-	    "                                                                "
-	    "          " "font2u                                             "
-	    "                             " "lpr                             "
-	    "                                                " "png          "
-	    "                                                                "
-	    "   " "cmaplist                                                  "
-	    "                      ";
-    static char cparal[40*14] = "DEVICE_NAME01                           " 
+    static char cx[80*15] = 
+      "X                                                                               "
+      "PS                                                                              "
+      "Tek                                                                             "
+      "Gtk                                                                             "
+      "AQT                                                                             "
+      "dcl                                                                             "
+      "*                                                                               "
+      "colormap                                                                        "
+      "bitmap                                                                          "
+      "cl2tnmap                                                                        "
+      "font1u                                                                          "
+      "font2u                                                                          "
+      "lpr                                                                             "
+      "png                                                                             "
+      "cmaplist                                                                        ";
+    static char cparal[40*15] = "DEVICE_NAME01                           " 
 	    "DEVICE_NAME02                           " "DEVICE_NAME03       "
 	    "                    " "DEVICE_NAME04                           " 
+            "DEVICE_NAME05                           "
 	    "FRAME_NAME                              " "TITLE               "
 	    "                    " "COLORMAP                                " 
 	    "BITMAP                                  " "COLOR_TO_TONE_MAP   "
@@ -86,12 +84,12 @@
 	case 6: goto L_swcqin;
 	}
 
-    *ncp = 14;
+    *ncp = 15;
     return 0;
 /* ----------------------------------------------------------------------- */
 
 L_swcqid:
-    for (n = 1; n <= 14; ++n) {
+    for (n = 1; n <= 15; ++n) {
 	if (lchreq_(cp, cparas + (n - 1 << 3), cp_len, (ftnlen)8) || lchreq_(
 		cp, cparal + (n - 1) * 40, cp_len, (ftnlen)40)) {
 	    *idx = n;
@@ -109,7 +107,7 @@
 /* ----------------------------------------------------------------------- */
 
 L_swcqcp:
-    if (1 <= *idx && *idx <= 14) {
+    if (1 <= *idx && *idx <= 15) {
 	s_copy(cp, cparas + (*idx - 1 << 3), cp_len, (ftnlen)8);
     } else {
 	msgdmp_("E", "SWCQCP", "IDX IS OUT OF RANGE.", (ftnlen)1, (ftnlen)6, (
@@ -119,7 +117,7 @@
 /* ----------------------------------------------------------------------- */
 
 L_swcqcl:
-    if (1 <= *idx && *idx <= 14) {
+    if (1 <= *idx && *idx <= 15) {
 	s_copy(cp, cparal + (*idx - 1) * 40, cp_len, (ftnlen)40);
     } else {
 	msgdmp_("E", "SWCQCL", "IDX IS OUT OF RANGE.", (ftnlen)1, (ftnlen)6, (
@@ -134,7 +132,7 @@
 	rlcget_(cparal, cx, &c__14, (ftnlen)40, (ftnlen)80);
 	lfirst = FALSE_;
     }
-    if (1 <= *idx && *idx <= 14) {
+    if (1 <= *idx && *idx <= 15) {
 	s_copy(cval, cx + (*idx - 1) * 80, cval_len, (ftnlen)80);
     } else {
 	msgdmp_("E", "SWCQVL", "IDX IS OUT OF RANGE.", (ftnlen)1, (ftnlen)6, (
@@ -149,7 +147,7 @@
 	rlcget_(cparal, cx, &c__14, (ftnlen)40, (ftnlen)80);
 	lfirst = FALSE_;
     }
-    if (1 <= *idx && *idx <= 14) {
+    if (1 <= *idx && *idx <= 15) {
 	s_copy(cx + (*idx - 1) * 80, cval, (ftnlen)80, cval_len);
     } else {
 	msgdmp_("E", "SWCSVL", "IDX IS OUT OF RANGE.", (ftnlen)1, (ftnlen)6, (
@@ -159,7 +157,7 @@
 /* ----------------------------------------------------------------------- */
 
 L_swcqin:
-    for (n = 1; n <= 14; ++n) {
+    for (n = 1; n <= 15; ++n) {
 	if (lchreq_(cp, cparas + (n - 1 << 3), cp_len, (ftnlen)8) || lchreq_(
 		cp, cparal + (n - 1) * 40, cp_len, (ftnlen)40)) {
 	    *in = n;
diff -urN dcl-5.3.3-C.ORIG/src/grph1/swpack/swpack.c dcl-5.3.3-C/src/grph1/swpack/swpack.c
--- dcl-5.3.3-C.ORIG/src/grph1/swpack/swpack.c	2007-10-12 02:28:33.000000000 +0900
+++ dcl-5.3.3-C/src/grph1/swpack/swpack.c	2007-10-12 05:08:50.000000000 +0900
@@ -177,7 +177,7 @@
     chngi_(cmsg, "##", &jws, "(I2)", (ftnlen)80, (ftnlen)2, (ftnlen)4);
     msgdmp_("M", "SWDOPN", cmsg, (ftnlen)1, (ftnlen)6, (ftnlen)80);
 /*     / DEVICE DEPENDENT PARAMETERS / */
-    if (iws == 1 || iws == 2 || iws == 4) {
+    if (iws == 1 || iws == 2 || iws == 4 || iws == 5) {
 	swiget_("IWIDTH ", &iwidth, (ftnlen)7);
 	swiget_("IHEIGHT", &iheigh, (ftnlen)7);
 	swiget_("ICLRMAP", &iclrmp, (ftnlen)7);
@@ -254,6 +254,23 @@
 		lkey, &ldump, &lwnd, &lfgbg, cimgfmt, clrmap, cbtmap, cout, 
 		cttl, (ftnlen)8, (ftnlen)80, (ftnlen)80, (ftnlen)80, (ftnlen)
 		80);
+    } else if (iws == 5) {
+	swiget_("IPOSX  ", &iposx, (ftnlen)7);
+	swiget_("IPOSY  ", &iposy, (ftnlen)7);
+	swlget_("LWAIT  ", &lwait, (ftnlen)7);
+	swlget_("LWAIT0 ", &lwait0, (ftnlen)7);
+	swlget_("LWAIT1 ", &lwait1, (ftnlen)7);
+	swlget_("LKEY   ", &lkey, (ftnlen)7);
+	swlget_("LALT   ", &lalt, (ftnlen)7);
+	swlget_("LDUMP  ", &ldump, (ftnlen)7);
+	swqfnm_("BITMAP ", cbtmap, (ftnlen)7, (ftnlen)80);
+	if (s_cmp(cbtmap, " ", (ftnlen)80, (ftnlen)1) == 0) {
+	    msgdmp_("E", "SWDOPN", "BITMAP FILE DOES NOT EXIST.", (ftnlen)1, (
+		    ftnlen)6, (ftnlen)27);
+	}
+	zadopn_(&iwidth, &iheigh, &iposx, &iposy, &lwait, &lwait0, &lwait1, &
+		lkey, &lalt, &ldump, &lfgbg, clrmap, cbtmap, cout, cttl, (
+		ftnlen)80, (ftnlen)80, (ftnlen)80, (ftnlen)80);
     }
     return 0;
 /* ----------------------------------------------------------------------- */
@@ -273,6 +290,9 @@
     if (iws == 4) {
 	zgdcls_();
     }
+    if (iws == 5) {
+        zadcls_();
+    }
     s_copy(cmsg, "GRPH1 : TERMINATED.", (ftnlen)80, (ftnlen)19);
     msgdmp_("M", "SWDCLS", cmsg, (ftnlen)1, (ftnlen)6, (ftnlen)80);
     return 0;
@@ -294,6 +314,9 @@
     if (iws == 4) {
 	zgpopn_();
     }
+    if (iws == 5) {
+        zapopn_();
+    }
     return 0;
 /* ----------------------------------------------------------------------- */
 
@@ -315,6 +338,9 @@
     if (iws == 4) {
 	zgpcls_();
     }
+    if (iws == 5) {
+        zapcls_();
+    }
     return 0;
 /* ----------------------------------------------------------------------- */
 /*     OBJECT */
@@ -334,6 +360,9 @@
     if (iws == 4) {
 	zgoopn_(cobj, comm, cobj_len, comm_len);
     }
+    if (iws == 5) {
+        zaoopn_(cobj, comm);
+    }
     return 0;
 /* ----------------------------------------------------------------------- */
 
@@ -351,6 +380,9 @@
     if (iws == 4) {
 	zgocls_(cobj, cobj_len);
     }
+    if (iws == 5) {
+        zaocls_(cobj);
+    }
     return 0;
 /* ----------------------------------------------------------------------- */
 /*     LINE */
@@ -370,6 +402,9 @@
     if (iws == 4) {
 	zgswdi_(iwdidx);
     }
+    if (iws == 5) {
+        zaswdi_(iwdidx);
+    }
     return 0;
 /* ----------------------------------------------------------------------- */
 
@@ -387,6 +422,9 @@
     if (iws == 4) {
 	zgscli_(iclidx);
     }
+    if (iws == 5) {
+        zascli_(iclidx);
+    }
     return 0;
 /* ----------------------------------------------------------------------- */
 
@@ -404,6 +442,9 @@
     if (iws == 4) {
 	zggopn_();
     }
+    if (iws == 5) {
+        zagopn_();
+    }
     return 0;
 /* ----------------------------------------------------------------------- */
 
@@ -421,6 +462,9 @@
     if (iws == 4) {
 	zggmov_(wx, wy);
     }
+    if (iws == 5) {
+        zagmov_(wx, wy);
+    }
     return 0;
 /* ----------------------------------------------------------------------- */
 
@@ -438,6 +482,9 @@
     if (iws == 4) {
 	zggplt_(wx, wy);
     }
+    if (iws == 5) {
+        zagplt_(wx, wy);
+    }
     return 0;
 /* ----------------------------------------------------------------------- */
 
@@ -455,6 +502,9 @@
     if (iws == 4) {
 	zggcls_();
     }
+    if (iws == 5) {
+        zagcls_();
+    }
     return 0;
 /* ----------------------------------------------------------------------- */
 /*     TONE */
@@ -474,6 +524,9 @@
     if (iws == 4) {
 	zggton_(np, &wpx[1], &wpy[1], itpat);
     }
+    if (iws == 5) {
+        zagton_(np, &wpx[1], &wpy[1], itpat);
+    }
     return 0;
 /* ----------------------------------------------------------------------- */
 /*     IMAGE */
@@ -494,6 +547,9 @@
     if (iws == 4) {
 	zgiopn_(iwx, iwy, imw, imh);
     }
+    if (iws == 5) {
+        zaiopn_(iwx, iwy, imw, imh);
+    }
     return 0;
 /* ----------------------------------------------------------------------- */
 
@@ -511,6 +567,9 @@
     if (iws == 4) {
 	zgidat_(&image[1], nlen);
     }
+    if (iws == 5) {
+        zaidat_(&image[1], nlen);
+    }
     return 0;
 /* ----------------------------------------------------------------------- */
 
@@ -528,6 +587,9 @@
     if (iws == 4) {
 	zgicls_();
     }
+    if (iws == 5) {
+        zaicls_();
+    }
     return 0;
 /* ----------------------------------------------------------------------- */
 /*     MOUSE */
@@ -547,6 +609,9 @@
     if (iws == 4) {
 	zgqpnt_(wx, wy, mb);
     }
+    if (iws == 5) {
+        zaqpnt_(wx, wy, mb);
+    }
     return 0;
 /* ----------------------------------------------------------------------- */
 /*     TRANSFORMATION */
@@ -566,6 +631,9 @@
     if (iws == 4) {
 	zgfint_(wx, wy, iwx, iwy);
     }
+    if (iws == 5) {
+        zafint_(wx, wy, iwx, iwy);
+    }
     return 0;
 /* ----------------------------------------------------------------------- */
 
@@ -583,6 +651,9 @@
     if (iws == 4) {
 	zgiint_(iwx, iwy, wx, wy);
     }
+    if (iws == 5) {
+        zaiint_(iwx, iwy, wx, wy);
+    }
     return 0;
 /* ----------------------------------------------------------------------- */
 /*     INQUIRY */
@@ -602,6 +673,9 @@
     if (iws == 4) {
 	zgqwdc_(lwdatr);
     }
+    if (iws == 5) {
+        zaqwdc_(lwdatr);
+    }
     return 0;
 /* ----------------------------------------------------------------------- */
 
@@ -619,6 +693,9 @@
     if (iws == 4) {
 	zgqclc_(lclatr);
     }
+    if (iws == 5) {
+        zaqclc_(lclatr);
+    }
     return 0;
 /* ----------------------------------------------------------------------- */
 
@@ -636,6 +713,9 @@
     if (iws == 4) {
 	zgqtnc_(ltnatr);
     }
+    if (iws == 5) {
+        zaqtnc_(ltnatr);
+    }
     return 0;
 /* ----------------------------------------------------------------------- */
 
@@ -653,6 +733,9 @@
     if (iws == 4) {
 	zgqimc_(limatr);
     }
+    if (iws == 5) {
+        zaqimc_(limatr);
+    }
     return 0;
 /* ----------------------------------------------------------------------- */
 
@@ -670,6 +753,9 @@
     if (iws == 4) {
 	zgqptc_(lptatr);
     }
+    if (iws == 5) {
+        zaqptc_(lptatr);
+    }
     return 0;
 /* ----------------------------------------------------------------------- */
 
@@ -687,6 +773,9 @@
     if (iws == 4) {
 	zgqrct_(wsxmn, wsxmx, wsymn, wsymx, fact);
     }
+    if (iws == 5) {
+        zaqrct_(wsxmn, wsxmx, wsymn, wsymx, fact);
+    }
     return 0;
 /* ----------------------------------------------------------------------- */
 
@@ -704,6 +793,9 @@
     if (iws == 4) {
 	zgsrot_(iwtrot);
     }
+    if (iws == 5) {
+        zasrot_(iwtrot);
+    }
     return 0;
 } /* swdopn_ */
 
diff -urN dcl-5.3.3-C.ORIG/src/grph1/swpack/swqfnm.c dcl-5.3.3-C/src/grph1/swpack/swqfnm.c
--- dcl-5.3.3-C.ORIG/src/grph1/swpack/swqfnm.c	2007-10-12 02:28:33.000000000 +0900
+++ dcl-5.3.3-C/src/grph1/swpack/swqfnm.c	2007-10-12 05:08:50.000000000 +0900
@@ -38,7 +38,7 @@
     static char cpx[80];
     static integer iws;
     extern integer lenc_(char *, ftnlen);
-    static char cmsg[80], cpsx[4];
+    static char cmsg[80], cpsx[4], caqt[4];
     extern /* Subroutine */ int glcget_(char *, char *, ftnlen, ftnlen), 
 	    cfsrch_(char *, integer *, char *, integer *, char *, ftnlen, 
 	    ftnlen, ftnlen);
@@ -61,6 +61,8 @@
     clower_(cx11, (ftnlen)4);
     s_copy(cpsx, ".PSX", (ftnlen)4, (ftnlen)4);
     clower_(cpsx, (ftnlen)4);
+    s_copy(caqt, ".X11", (ftnlen)4, (ftnlen)4);
+    clower_(caqt, (ftnlen)4);
     if (lchreq_(cpara, "FONT1", cpara_len, (ftnlen)5) || lchreq_(cpara, "FON"
 	    "T2", cpara_len, (ftnlen)5) || lchreq_(cpara, "CL2TN", cpara_len, (
 	    ftnlen)5) || lchreq_(cpara, "CMAPLIST", cpara_len, (ftnlen)8)) {
@@ -88,6 +90,16 @@
 	    i__1[0] = lcp, a__1[0] = cpx;
 	    i__1[1] = 4, a__1[1] = cx11;
 	    s_cat(cflist + 160, a__1, i__1, &c__2, (ftnlen)80);
+	} else if (iws == 5) {
+/* Writing concatenation */
+	    i__1[0] = lcp, a__1[0] = cpx;
+	    i__1[1] = 4, a__1[1] = caqt;
+	    s_cat(cflist, a__1, i__1, &c__2, (ftnlen)80);
+	    s_copy(cflist + 80, cpx, (ftnlen)80, lcp);
+/* Writing concatenation */
+	    i__1[0] = lcp, a__1[0] = cpx;
+	    i__1[1] = 4, a__1[1] = cpsx;
+	    s_cat(cflist + 160, a__1, i__1, &c__2, (ftnlen)80);
 	}
 	nf = 3;
     } else {
@@ -102,4 +114,3 @@
 	    cfname_len);
     return 0;
 } /* swqfnm_ */
-
diff -urN dcl-5.3.3-C.ORIG/src/grph1/swpack/zapack.c dcl-5.3.3-C/src/grph1/swpack/zapack.c
--- dcl-5.3.3-C.ORIG/src/grph1/swpack/zapack.c	1970-01-01 09:00:00.000000000 +0900
+++ dcl-5.3.3-C/src/grph1/swpack/zapack.c	2007-10-12 05:08:50.000000000 +0900
@@ -0,0 +1,492 @@
+/*
+ *    dcl graphic driver for AquaTerm
+ *
+ *                           original  Y. Kitamura
+ *                         2007/10/11  M. Takagi
+ *
+ *    Copyright (C) 2000-2004 GFD Dennou Club. All rights reserved.
+ *
+ */
+
+#include <stdio.h>
+#include <string.h>
+#include <stdlib.h>
+#include "../../../config.h"
+#include "aquaterm/aquaterm.h"
+
+#define BORDWD 2             /* border width */
+#define PAD    2.0           /* padding for workstation window */
+#define FACTZ  0.03          /* scaling factor */
+#define TRUE   1             /* numeric value for true  */
+#define FALSE  0             /* numeric value for false */
+#define LWDATR TRUE          /* line width  capability */
+#define LCLATR TRUE          /* line color  capability */
+#define LTNATR TRUE          /* hard fill   capability */
+#define LIMATR TRUE          /* bit image   capability */
+#define LPTATR TRUE          /* mouse point capability */
+#define MAXWDI 9             /* maximum number of line index */
+#define MAXCLI 255           /* maximum number of line color */
+#define MAXBMP 300           /* maximum number of bitmaps */
+
+static float linewidth[MAXWDI] = { 0.4, 0.8, 1.2, 1.6, 2.0, 2.2, 2.4, 2.6, 2.8 };
+                             /* initialization for line width */
+static int iwdidz, iclidz, iwtroz, lclatrz, iwnd;
+static int wsxwd, wsywd, wsxmnz, wsxmxz, wsymnz, wsymxz;
+static int ixz, iyz, iwz, ihz, ixxz, iyyz, page;
+static int posx, posy, wait_np, wait_op, wait_cl;
+static int keymask, alternate, dump, fgbg;
+static int nbmap, nn1[MAXBMP], nn2[MAXBMP], nx[MAXBMP], ny[MAXBMP];
+static unsigned long pl[1], px[MAXCLI];
+static DCL_REAL rwxold, rwyold;
+static char dmpfile[80], xtitle[80];
+static char bmline[MAXBMP][260];
+
+typedef struct {
+    float r;
+    float g;
+    float b;
+} AColor;
+
+static AColor cx[MAXCLI];
+static unsigned char *rgbImage;
+
+/*---------------------internal function ------------------*/
+
+void zabmcv(int *nx, int *ny, char bmline[], char bitmap[])
+{
+    static int n8 = 8;
+    int n, nb;
+    unsigned bx;
+
+    nb = *nx * *ny / n8;
+    for (n = 0; n < nb; n++){
+	sscanf(&bmline[2*n], "%2x", &bx);
+	bitmap[n] = bx;
+    }
+    bitmap[nb] = '\0';
+}
+
+/* Event loop */
+static void event_loop()
+{
+   /* int running = TRUE; */
+   char buffer[AQT_EVENTBUF_SIZE];
+  
+   aqtWaitNextEvent(buffer);
+}
+
+/*------------------------- device ------------------------*/
+
+void zadopn_(DCL_INT *width, DCL_INT *height, DCL_INT *iposx, DCL_INT *iposy,
+	     DCL_INT *lwait, DCL_INT *lwait0, DCL_INT *lwait1, DCL_INT *lkey, 
+             DCL_INT *lalt, DCL_INT *ldump, DCL_INT *lfgbg,
+	     char clrmap[], char cbmmap[], char file[], char title[])
+{
+    int ncolor, n, m, msk;
+    long int rx[MAXCLI], gx[MAXCLI], bx[MAXCLI], rx1, gx1, bx1;
+    char c[80], cmapz[80], bmapz[80];
+
+    FILE *stream;
+    void cfnchr();
+    void event_loop();
+
+    posx      = *iposx;
+    posy      = *iposy;
+    wait_np   = *lwait;
+    wait_op   = *lwait0;
+    wait_cl   = *lwait1;
+    keymask   = *lkey;
+    alternate = *lalt;
+    dump      = *ldump;
+    fgbg      = *lfgbg;
+
+    cfnchr (dmpfile, file, 79);
+    cfnchr (xtitle, title, 79);
+
+/* window size */
+
+    wsxwd  = *width  + 2 * PAD;  /* window width */
+    wsywd  = *height + 2 * PAD;  /* window height */
+    wsxmnz = PAD;                /* lower-left  corner */
+    wsymnz = PAD;                /* lower-left  corner */
+    wsxmxz = PAD + *width  - 1;  /* upper-right corner */
+    wsymxz = PAD + *height - 1;  /* upper-right corner */
+    page   = 0;
+    iwnd   = 1;
+    if (alternate)
+	iwnd = 0;
+
+/* read colormap file */
+
+    cfnchr (cmapz, clrmap, 79);
+
+    if ((stream = fopen(cmapz, "r")) == NULL) {
+	fprintf (stderr, "*** Error in zadopn : ");
+	fprintf (stderr,
+		 "Allocation failed for colormap (%s).\n", cmapz);
+	exit (1);
+    }
+
+    fscanf (stream, "%d : %s", &ncolor, c);
+    for (n = 0; n < ncolor; n++)
+	fscanf(stream, "%6ld%6ld%6ld : %s", &rx[n], &gx[n], &bx[n], c);
+    fclose(stream);
+
+    if (fgbg) {                 /* swap rx[0] and rx[1] */
+        rx1 = rx[0];
+        gx1 = gx[0];
+        bx1 = bx[0];
+        rx[0] = rx[1];
+        gx[0] = gx[1];
+        bx[0] = bx[1];
+        rx[1] = rx1;
+        gx[1] = gx1;
+        bx[1] = bx1;
+    }
+
+/* read bitmap file */
+
+    cfnchr (bmapz, cbmmap, 79);
+
+    if ((stream = fopen(bmapz, "r")) == NULL) {
+	fprintf (stderr, "*** Error in zadopn : ");
+	fprintf (stderr,
+		 "Allocation failed for bitmap (%s).\n", bmapz);
+	exit (1);
+    }
+
+    fscanf (stream, "%d", &nbmap);
+    for (n = 0; n < nbmap; n++)
+	fscanf(stream, "%4d%4d%3d%3d%s",
+	       &nn1[n], &nn2[n], &nx[n], &ny[n], bmline[n]);
+    fclose(stream);
+
+/* open ( and activate ) workstation */
+
+    /* Initialize. Do it or fail miserably... */
+    aqtInit();
+
+    /* Open up a plot for drawing */
+    aqtOpenPlot(1);
+    aqtSetPlotSize((float)wsxwd, (float)wsywd);
+    aqtSetPlotTitle("DCL Plot");
+
+    /* Error check */
+    /* not yet */
+
+    lclatrz = LCLATR;
+
+    if (lclatrz) {
+	for (n = 0; n < MAXCLI; n++) {
+	    m = n % ncolor;
+	    cx[n].r = rx[m] / 65536.0;
+	    cx[n].g = gx[m] / 65536.0;
+	    cx[n].b = bx[m] / 65536.0;
+            aqtSetColormapEntry(n, cx[n].r, cx[n].g, cx[n].b);
+	}
+	if (n < MAXCLI) {
+	    fprintf (stderr, "*** Warning in zadopn : ");
+	    fprintf (stderr, "Only %d colors are allocated.\n", n);
+	}
+    }
+    else {
+        /* mono color */
+    }
+
+    if (wait_op) {
+        event_loop();
+    }
+}
+
+void zadcls_(void)
+{
+    void event_loop();
+
+    if (!wait_np && wait_cl) {
+        event_loop();
+    }
+
+    aqtClosePlot();
+    aqtTerminate();
+}
+
+/*------------------------- page --------------------------*/
+
+void zapopn_(void)
+{
+
+/* open page ( or screen ) */
+
+    ++page;
+    iwdidz = 1;
+    iclidz = 1;
+    aqtEraseRect(0.0, 0.0, (float)wsxwd, (float)wsywd);
+}
+
+void zapcls_(void)
+{
+    void event_loop();
+
+    /* close page ( or screen ) */
+    aqtRenderPlot();
+
+    if (wait_np) {
+        event_loop();
+    }
+}
+
+/*------------------------- object ------------------------*/
+
+void zaoopn_(char *objname, char *comment)
+{
+
+}
+
+void zaocls_(char *objname)
+{
+
+}
+
+/*------------------------- line --------------------------*/
+
+void zaswdi_(DCL_INT *iwdidx)
+{
+
+/* set line width index */
+
+    iwdidz = *iwdidx % 10;
+    if (iwdidz == 0)
+	iwdidz = 1;
+}
+
+void zascli_(DCL_INT *iclidx)
+{
+
+/* set line color index */
+
+    iclidz = *iclidx % MAXCLI;
+/*  if (iclidz == 0)
+	iclidz = 1; */
+}
+
+void zagopn_(void)
+{
+/* open graphic segment */
+    aqtSetLineCapStyle(AQTRoundLineCapStyle);
+    aqtSetLinewidth(linewidth[iwdidz-1]);
+    aqtTakeColorFromColormapEntry(iclidz);
+}
+
+void zagmov_(DCL_REAL *wx, DCL_REAL *wy)
+{
+
+/* pen-up move */
+
+    rwxold = *wx;
+    rwyold = *wy;
+}
+
+void zagplt_(DCL_REAL *wx, DCL_REAL *wy)
+{
+    DCL_INT iwxold, iwyold, iwx, iwy;
+    void zafint_();
+
+/* pen-down move */
+
+    zafint_(&rwxold, &rwyold, &iwxold, &iwyold);
+    zafint_( wx,      wy,     &iwx,    &iwy   );
+
+    if (iwxold == iwx && iwyold == iwy) {
+	/* XDrawPoint (d, ww[iwnd], gc, (int) iwx, (int) iwy); */
+    }
+    else {
+        aqtMoveTo   ((float) iwxold, (float) iwyold);
+        aqtAddLineTo((float) iwx,    (float) iwy);
+    }
+    rwxold = *wx;
+    rwyold = *wy;
+}
+
+void zagcls_(void)
+{
+
+/* close graphic segment */
+
+}
+
+/*------------------------- tone --------------------------*/
+
+void zagton_(DCL_INT *np, DCL_REAL wpx[], DCL_REAL wpy[], DCL_INT *itpat)
+{
+    float *xPtr, *yPtr;
+    float ipx, ipy, r;
+    int i, iclr;
+    void zaffloat_();
+
+    xPtr = (float *) malloc((*np) * sizeof(float));
+    yPtr = (float *) malloc((*np) * sizeof(float));
+
+/* hard fill */
+
+    if ((*itpat % 10) == 0) {
+        r = 0.0;
+    } else {
+        r = ((*itpat % 10) + (*itpat / 10 % 10)) / 10.0;
+    }
+    iclr = (*itpat / 1000) % MAXCLI;
+/*  if (iclr == 0)
+	iclr = 1; */
+
+    if (r >= 1.0) {
+        aqtTakeColorFromColormapEntry(iclr);
+    } else {
+        aqtSetColor((1-r) * cx[0].r + r * cx[iclr].r,
+                    (1-r) * cx[0].g + r * cx[iclr].g,
+                    (1-r) * cx[0].b + r * cx[iclr].b);
+    }
+    for (i = 0; i < *np; i++) {
+        zaffloat_(&wpx[i],&wpy[i], &ipx, &ipy);
+        xPtr[i] = ipx;
+        yPtr[i] = ipy;
+    }
+    aqtAddPolygon(xPtr, yPtr, *np);
+
+    free(xPtr);
+    free(yPtr);
+}
+
+/*------------------------- image -------------------------*/
+
+void zaiopn_(DCL_INT *iwx, DCL_INT *iwy, DCL_INT *iwidth, DCL_INT *iheight)
+{
+    ixz = *iwx;
+    iyz = *iwy;
+    iwz = *iwidth;
+    ihz = *iheight;
+    ixxz = ixz;
+    iyyz = iyz;
+    printf (" *** image ");
+
+    rgbImage = (unsigned char *) malloc(iwz * ihz * 3);
+}
+
+void zaidat_(DCL_INT image[], DCL_INT *nlen)
+{
+    int i, h, offset;
+
+    for (i = 0; i < *nlen; i++) {	
+        h = ihz - (iyyz - iyz + 1);
+        offset = 3 * (h * iwz + i);
+        *(rgbImage + offset    ) = (unsigned char) (256 * cx[image[i]].r);
+        *(rgbImage + offset + 1) = (unsigned char) (256 * cx[image[i]].g);
+        *(rgbImage + offset + 2) = (unsigned char) (256 * cx[image[i]].b);
+        ixxz = ixxz + 1;
+        if (ixxz >= ixz+iwz) {
+            ixxz = ixz;
+            iyyz = iyyz + 1;
+            if (iyyz % 16 == 0) {
+                printf (".");
+                fflush (stdout);
+            }
+        }
+    }
+}
+
+void zaicls_(void)
+{
+    aqtAddImageWithBitmap(rgbImage,
+                          (float)iwz, (float)ihz, 
+                          (float)ixz, (float)iyz,
+                          (float)iwz, (float)ihz);
+    free(rgbImage);
+    printf (" end\n");
+}
+
+/*------------------------- mouse -------------------------*/
+
+void zaqpnt_(DCL_REAL *wx, DCL_REAL *wy, DCL_INT *mb)
+{
+    *mb = 0;
+}
+
+/*---------------------- transformation -------------------*/
+
+void zafint_(DCL_REAL *wx, DCL_REAL *wy, DCL_INT *iwx, DCL_INT *iwy)
+{
+    *iwx = *wx + 0.5;
+    *iwy = *wy + 0.5;
+}
+
+void zaffloat_(DCL_REAL *wx, DCL_REAL *wy, float *iwx, float *iwy)
+{
+    *iwx = (float) (*wx + 0.5);
+    *iwy = (float) (*wy + 0.5);
+}
+
+void zaiint_(DCL_INT *iwx, DCL_INT *iwy, DCL_REAL *wx, DCL_REAL *wy)
+{
+    *wx = *iwx;
+    *wy = *iwy;
+}
+
+/*------------------------- inquiry -----------------------*/
+
+void zaqwdc_(DCL_INT *lwdatr)
+{
+
+/* inquire line width capability */
+
+    *lwdatr = LWDATR;
+}
+
+void zaqclc_(DCL_INT *lclatr)
+{
+
+/* inquire line color capability */
+
+    *lclatr = lclatrz;
+}
+
+void zaqtnc_(DCL_INT *ltnatr)
+{
+
+/* inquire hard fill capability */
+
+    *ltnatr = LTNATR;
+}
+
+void zaqimc_(DCL_INT *limatr)
+{
+
+/* inquire bit image capability */
+
+    *limatr = LIMATR;
+}
+
+void zaqptc_(DCL_INT *lptatr)
+{
+
+/* inquire mouse point capability */
+
+    *lptatr = LPTATR;
+}
+
+void zaqrct_(DCL_REAL *wsxmn, DCL_REAL *wsxmx, DCL_REAL *wsymn, DCL_REAL *wsymx, DCL_REAL *fact)
+{
+
+/* inquire workstation rectangle */
+
+    *wsxmn = wsxmnz;
+    *wsxmx = wsxmxz;
+    *wsymn = wsymnz;
+    *wsymx = wsymxz;
+    *fact  = FACTZ;
+}
+
+void zasrot_(DCL_INT *iwtrot)
+{
+
+/* set frame rotation flag */
+
+    iwtroz = *iwtrot;
+}
