To apply: cd microwindows-0.91 patch -p1 <../microwindows.zipit.patch diff -N -r -u microwindows-0.91-distr/src/Configs/config.zipit microwindows-0.91/src/Configs/config.zipit --- microwindows-0.91-distr/src/Configs/config.zipit 1969-12-31 18:00:00.000000000 -0600 +++ microwindows-0.91/src/Configs/config.zipit 2006-03-25 15:41:26.000000000 -0600 @@ -0,0 +1,388 @@ +#################################################################### +# Microwindows and Nano-X configuration file +# +# This package can be configured to run on Linux (MIPS, ARM, POWERPC or x86) +# UNIX, ELKS, DJGPP, or RTEMS. +# On Linux, we've got drivers for Linux 2.x framebuffers, X11, or, +# svgalib for VGA hardware. +# In addition, a gpm or direct serial mouse driver can be configured. +# On ELKS, the bios screen driver and serial mouse driver are always used. +# +# Either Microwindows and/or Nano-X can be built. +# Microwindows and Nano-X have several demos. +# +# For MSDOS makes, see mcmwin.mak and mcnanox.mak +#################################################################### + +#################################################################### +# +# build target platform +# +# Valid ARCH values are: +# +# LINUX-NATIVE +# LINUX-TCC +# LINUX-ARM +# LINUX-MIPS +# LINUX-POWERPC (BIGENDIAN=Y) +# LINUX-SPARC (BIGENDIAN=Y) +# LINUX-SH +# FREEBSD-X86 +# SOLARIS (BIGENDIAN=Y) +# TRIMEDIA +# RTEMS +# DJGPP +# ELKS +# +# note: ELKS can't build client/server nano-X, nor widget lib +# +#################################################################### +ARCH = LINUX-NATIVE +BIGENDIAN = N +NATIVETOOLSPREFIX = +ARMTOOLSPREFIX = arm-linux- +MIPSTOOLSPREFIX = mipsel-linux- +POWERPCTOOLSPREFIX = powerpc-linux- +SHTOOLSPREFIX = sh-linux-gnu +RTEMSTOOLSPREFIX = i386-rtemself- + +#################################################################### +# +# Compiling options +# +#################################################################### +OPTIMIZE = Y +DEBUG = N +VERBOSE = N +THREADSAFE = Y +GPROF = N + +#################################################################### +# +# Libraries to build: microwin, nano-X, nanowidget, object frameworks +# +#################################################################### +MICROWIN = N +NANOX = Y +SHAREDLIBS = Y +OBJFRAMEWORK = N + + +#################################################################### +# +# Demos to build +# +#################################################################### +MICROWINDEMO = N +NANOXDEMO = Y + +#################################################################### +# +# Applications to build +# +#################################################################### +NANOWM = Y + +#################################################################### +# +# The pixeltype of the native hardware or underlying graphics library. +# This definition defines the PIXELVAL to be 32, 16 or 8 bits wide. +# If using Linux framebuffer, set to MWPF_TRUECOLOR0888, and use fbset. +# It also enables GdArea/GrArea for this particular pixel packing format. +# +# define MWPF_PALETTE /* pixel is packed 8 bits 1, 4 or 8 pal index*/ +# define MWPF_TRUECOLOR8888 /* pixel is packed 32 bits 8/8/8/8 truecolor w/alpha*/ +# define MWPF_TRUECOLOR0888 /* pixel is packed 32 bits 8/8/8 truecolor*/ +# define MWPF_TRUECOLOR888 /* pixel is packed 24 bits 8/8/8 truecolor*/ +# define MWPF_TRUECOLOR565 /* pixel is packed 16 bits 5/6/5 truecolor*/ +# define MWPF_TRUECOLOR555 /* pixel is packed 16 bits 5/5/5 truecolor*/ +# define MWPF_TRUECOLOR332 /* pixel is packed 8 bits 3/3/2 truecolor*/ +# +#################################################################### +SCREEN_PIXTYPE = MWPF_PALETTE + +#################################################################### +# +# NanoX: Put Y to the following line to link the nano-X application +# with the server. This is required for ELKS, if no network is present, +# or for speed or debugging. This affects the nano-X server only. +# +#################################################################### +LINK_APP_INTO_SERVER = N + +#################################################################### +# Shared memory support for Nano-X client/server protocol speedup +#################################################################### +HAVE_SHAREDMEM_SUPPORT = N + +#################################################################### +# +# File I/O support +# Supporting either below drags in libc stdio, which may not be wanted +# +#################################################################### +HAVE_FILEIO = Y + +#################################################################### +# BMP, GIF reading support +#################################################################### +HAVE_BMP_SUPPORT = Y +HAVE_GIF_SUPPORT = Y +HAVE_PNM_SUPPORT = Y +HAVE_XPM_SUPPORT = Y + +#################################################################### +# JPEG support through libjpeg, see README.txt in contrib/jpeg +#################################################################### +HAVE_JPEG_SUPPORT = N +INCJPEG = . +LIBJPEG = /usr/lib/libjpeg.so + +#################################################################### +# PNG support via libpng and libz +#################################################################### +HAVE_PNG_SUPPORT = N +INCPNG = . +LIBPNG = /usr/lib/libpng.a +LIBZ = /usr/lib/libz.a + +#################################################################### +# TIFF support through libtiff +#################################################################### +HAVE_TIFF_SUPPORT = N +INCTIFF = . +LIBTIFF = /usr/lib/libtiff.a + +#################################################################### +# native .fnt loadable font support +#################################################################### +HAVE_FNT_SUPPORT = Y +HAVE_FNTGZ_SUPPORT = N +FNT_FONT_DIR = "fonts/bdf" + +#################################################################### +# T1 adobe type1 font support thru t1lib +#################################################################### +HAVE_T1LIB_SUPPORT = N +INCT1LIB = . +LIBT1LIB = /usr/lib/libt1.a + +#################################################################### +# TrueType font support thru FreeType 1.x +#################################################################### +HAVE_FREETYPE_SUPPORT = N +INCFTLIB = /usr/include/freetype1 +LIBFTLIB = /usr/lib/libttf.so +FREETYPE_FONT_DIR = "fonts/truetype" + +#################################################################### +# Support for many kinds of font thru FreeType 2.x +# Must also set FREETYPE_FONT_DIR in the Freetype 1.x section +#################################################################### +HAVE_FREETYPE_2_SUPPORT = N +INCFT2LIB = . +LIBFT2LIB = /usr/lib/libfreetype.a + +#################################################################### +# PCF font support +# Selecting HAVE_PCFGZ_SUPPORT will allow you to directly read +# .pcf.gz files, but it will add libz to the size of the server +#################################################################### +HAVE_PCF_SUPPORT = Y +HAVE_PCFGZ_SUPPORT = N +PCF_FONT_DIR = "fonts/pcf" + +#################################################################### +# Chinese Han Zi Ku loadable font support +#################################################################### +HAVE_HZK_SUPPORT = N +HZK_FONT_DIR = "fonts/chinese" + +#################################################################### +# Chinese BIG5 compiled in font support (big5font.c) +#################################################################### +HAVE_BIG5_SUPPORT = N + +#################################################################### +# Chinese GB2312 compiled in font support (gb2312font.c) +#################################################################### +HAVE_GB2312_SUPPORT = N + +#################################################################### +# Japanese JISX0213 compiled in font support (jisx0213-12x12.c) +#################################################################### +HAVE_JISX0213_SUPPORT = N + +#################################################################### +# Korean HANGUL font support (jo16x16.c) +#################################################################### +HAVE_KSC5601_SUPPORT = N + +#################################################################### +# Japanese EUC-JP support using loadable MGL font +#################################################################### +HAVE_EUCJP_SUPPORT = N +EUCJP_FONT_DIR = "fonts/japanese" + +#################################################################### +# Generate screen driver interface only with no fonts or clipping +#################################################################### +NOFONTSORCLIPPING = N + +#################################################################### +# +# Window move algorithms for Microwindows +# Change for tradeoff between cpu speed and looks +# ERASEMOVE repaints only backgrounds while window dragging, quicker. +# Otherwise an XOR redraw is used for window moves only after button up, +# quickest (should set for ELKS) +# UPDATEREGIONS paints in update clipping region only for better look and feel +# +#################################################################### +ERASEMOVE = Y +UPDATEREGIONS = Y + +#################################################################### +# +# Link with Gray Palette (valid only for 4bpp modes) +# +#################################################################### +GRAYPALETTE = Y + +#################################################################### +# +# If the platform is running UNIX, Linux or RTEMS... +# +#################################################################### +ifneq ($(ARCH), ELKS) + +# X Window screen, mouse and kbd drivers +X11 = N + +ifeq ($(X11), Y) +# startup screen width, height, (depth for palette mode only) +SCREEN_WIDTH = 640 +SCREEN_HEIGHT = 480 +SCREEN_DEPTH = 4 + +# You may want to turn this on for XFree86 4.x or if your backing store +# isn't functioning properly +USE_EXPOSURE = Y + +else + +# framebuffer screen driver (linear and/or vga 4 planes) +# set VTSWITCH to include virtual terminal switch code +# set FBREVERSE to reverse bit orders in 1,2,4 bpp +# set FBVGA=N for all systems without VGA hardware (for MIPS must=N) +FRAMEBUFFER = Y +FBVGA = N +VTSWITCH = N +FBREVERSE = Y + +# set HAVETEXTMODE=Y for systems that can switch between text & graphics. +# On a graphics-only embedded system, such as Osprey and Embedded +# Planet boards, set HAVETEXTMODE=N +HAVETEXTMODE = Y + +# svgalib screen driver +VGALIB = N + +# direct VGA hardware access screen driver +HWVGA = N + +#################################################################### +# Mouse drivers +# GPMMOUSE gpm mouse +# SERMOUSE serial Microsoft, PC, Logitech, PS/2 mice (/dev/psaux) +# SUNMOUSE Sun Workstation mouse (/dev/sunmouse) +# NOMOUSE no mouse driver +# +# Touchscreen drivers +# IPAQMOUSE Compaq iPAQ, Intel Assabet (/dev/h3600_tsraw) +# ZAURUSMOUSE Sharp Zaurus (/dev/sharp_ts) +# TUXMOUSE TuxScreen (/dev/ucb1x00-ts) +# ADSMOUSE Applied Data Systems GC+ (/dev/ts) +# ADS7846MOUSE ADS7846 chip, PSI OMAP Innovator (/dev/innnovator_ts) +# EPMOUSE Embedded Planet (/dev/tpanel) +# VHMOUSE Vtech Helio (/dev/tpanel) +# MTMOUSE MicroTouch serial (/dev/ttyS1) +# PSIONMOUSE Psion 5 (/dev/touch_psion) +# YOPYMOUSE Yopy (/dev/yopy-ts) +# HARRIERMOUSE NEC Harrier (/dev/tpanel) +#################################################################### +GPMMOUSE = N +SERMOUSE = N +SUNMOUSE = N +NOMOUSE = Y +IPAQMOUSE = N +ZAURUSMOUSE = N +TUXMOUSE = N +ADSMOUSE = N +ADS7846MOUSE = N +EPMOUSE = N +VHMOUSE = N +MTMOUSE = N +PSIONMOUSE = N +YOPYMOUSE = N +HARRIERMOUSE = N +LIRCMOUSE = N + +# keyboard or null kbd driver +TTYKBD = Y +SCANKBD = N +PIPEKBD = N +IPAQKBD = N +LIRCKBD = N +NOKBD = N + +endif + +# Secondary keyboard drivers. +# You may have a normal keyboard driver in addition to these +# drivers, e.g. for both normal keyboard and IR input. +LIRCKBD2 = N + +#################################################################### +# Screen driver specific configuration +# SA1100_LCD_LTLEND 4bpp driver with arm SA1100 LCD controller +# INVERT4BPP 4bpp inverted pixel driver for VTech Helio +# ZIPIT_TRANSLATION translated 4bit palette for the ZipIt handheld +#################################################################### +SA1100_LCD_LTLEND = N +INVERT4BPP = N +ZIPIT_TRANSLATION = Y + +#################################################################### +# +# If the platform is a RTEMS box .... +# +#################################################################### +ifeq ($(ARCH), RTEMS) + +# Location & BSP information of the RTEMS build +RTEMS_BUILD = /tools/build-i386-elf-rtems +RTEMS_BSP = pc386 +LINK_APP_INTO_SERVER = Y + +endif + +endif + +#################################################################### +# +# If the platform is an ELKS box ... +# +#################################################################### +ifeq ($(ARCH), ELKS) + +# Higher speed asm driver, c driver of hercules screen driver +ASMVGADRIVER = Y +CVGADRIVER = N +HERCDRIVER = N +DBGDRIVER = N + +# Mouse support +SERMOUSE = Y + +endif diff -N -r -u microwindows-0.91-distr/src/Makefile.rules microwindows-0.91/src/Makefile.rules --- microwindows-0.91-distr/src/Makefile.rules 2004-02-28 12:19:24.000000000 -0600 +++ microwindows-0.91/src/Makefile.rules 2006-03-25 15:09:24.000000000 -0600 @@ -247,6 +247,10 @@ ifeq ($(INVERT4BPP), Y) DEFINES += -DINVERT4BPP=1 endif + +ifeq ($(ZIPIT_TRANSLATION), Y) +DEFINES += -DZIPIT_TRANSLATION=1 +endif endif # FRAMEBUFER ifeq ($(X11), Y) diff -N -r -u microwindows-0.91-distr/src/drivers/fblin4.c microwindows-0.91/src/drivers/fblin4.c --- microwindows-0.91-distr/src/drivers/fblin4.c 2003-02-25 13:52:25.000000000 -0600 +++ microwindows-0.91/src/drivers/fblin4.c 2006-03-25 14:35:16.000000000 -0600 @@ -16,10 +16,23 @@ #include "device.h" #include "fb.h" +#if ZIPIT_TRANSLATION +int trtable[16] = { + 7, 13, 6, 12, 3, 2, 9, 5, 8, 15, 14, 4, 11, 10, 1, 0 +}; +int inv_trtable[16]; + +#define TRANSLATE(c) ((c) = trtable[c]) +#define TRANSLATE_BACK(c) ((c) = inv_trtable[c]) + +#else + #if INVERT4BPP -#define INVERT(c) ((c) = (~c & 0x0f)) +#define TRANSLATE(c) ((c) = (~c & 0x0f)) #else -#define INVERT(c) +#define TRANSLATE(c) +#endif +#define TRANSLATE_BACK(c) TRANSLATE(c) #endif static unsigned char notmask[2] = { 0x0f, 0xf0}; @@ -29,7 +42,15 @@ linear4_init(PSD psd) { if (!psd->size) - psd->size = psd->yres * psd->linelen; + psd->size = psd->yres * psd->linelen; + +#if ZIPIT_TRANSLATION + { + int i; + for (i = 0; i < 16; i++) + inv_trtable[trtable[i]] = i; + } +#endif /* linelen in bytes for bpp 1, 2, 4, 8 so no change*/ return 1; } @@ -45,7 +66,7 @@ assert (y >= 0 && y < psd->yres); assert (c < psd->ncolors); - INVERT(c); + TRANSLATE(c); DRAWON; addr += (x>>1) + y * psd->linelen; if(gr_mode == MWMODE_XOR) @@ -67,7 +88,7 @@ assert (y >= 0 && y < psd->yres); c = (addr[(x>>1) + y * psd->linelen] >> ((1-(x&1))<<2) ) & 0x0f; - INVERT(c); + TRANSLATE_BACK(c); return c; } @@ -85,7 +106,7 @@ assert (y >= 0 && y < psd->yres); assert (c < psd->ncolors); - INVERT(c); + TRANSLATE(c); DRAWON; addr += (x1>>1) + y * psd->linelen; if(gr_mode == MWMODE_XOR) { @@ -118,7 +139,7 @@ assert (y2 >= y1); assert (c < psd->ncolors); - INVERT(c); + TRANSLATE(c); DRAWON; addr += (x>>1) + y1 * linelen; if(gr_mode == MWMODE_XOR) @@ -167,9 +188,9 @@ MWCOORD dx = dstx; MWCOORD sx = srcx; for(i=0; i> ((1-(sx&1))<<2) & 0x0f) << ((1-(dx&1))<<2)); #else diff -N -r -u microwindows-0.91-distr/src/drivers/fblin4rev.c microwindows-0.91/src/drivers/fblin4rev.c --- microwindows-0.91-distr/src/drivers/fblin4rev.c 2001-06-21 01:32:41.000000000 -0500 +++ microwindows-0.91/src/drivers/fblin4rev.c 2006-03-25 15:40:52.000000000 -0600 @@ -14,10 +14,23 @@ #include "device.h" #include "fb.h" +#if ZIPIT_TRANSLATION +int trtable[16] = { + 7, 13, 6, 12, 3, 2, 9, 5, 8, 15, 14, 4, 11, 10, 1, 0 +}; +int inv_trtable[16]; + +#define TRANSLATE(c) ((c) = trtable[c]) +#define TRANSLATE_BACK(c) ((c) = inv_trtable[c]) + +#else + #if INVERT4BPP -#define INVERT(c) ((c) = (~c & 0x0f)) +#define TRANSLATE(c) ((c) = (~c & 0x0f)) #else -#define INVERT(c) +#define TRANSLATE(c) +#endif +#define TRANSLATE_BACK(c) TRANSLATE(c) #endif static unsigned char notmask[2] = { 0xf0, 0x0f}; @@ -28,6 +41,13 @@ { if (!psd->size) psd->size = psd->yres * psd->linelen; +#if ZIPIT_TRANSLATION + { + int i; + for (i = 0; i < 16; i++) + inv_trtable[trtable[i]] = i; + } +#endif /* linelen in bytes for bpp 1, 2, 4, 8 so no change*/ return 1; } @@ -43,7 +63,7 @@ assert (y >= 0 && y < psd->yres); assert (c < psd->ncolors); - INVERT(c); + TRANSLATE(c); DRAWON; addr += (x>>1) + y * psd->linelen; if(gr_mode == MWMODE_XOR) @@ -65,7 +85,7 @@ assert (y >= 0 && y < psd->yres); c = (addr[(x>>1) + y * psd->linelen] >> ((x&1)<<2) ) & 0x0f; - INVERT(c); + TRANSLATE_BACK(c); return c; } @@ -83,7 +103,7 @@ assert (y >= 0 && y < psd->yres); assert (c < psd->ncolors); - INVERT(c); + TRANSLATE(c); DRAWON; addr += (x1>>1) + y * psd->linelen; if(gr_mode == MWMODE_XOR) { @@ -116,7 +136,7 @@ assert (y2 >= y1); assert (c < psd->ncolors); - INVERT(c); + TRANSLATE(c); DRAWON; addr += (x>>1) + y1 * linelen; if(gr_mode == MWMODE_XOR) @@ -165,9 +185,9 @@ MWCOORD dx = dstx; MWCOORD sx = srcx; for(i=0; i> ((sx&1)<<2) & 0x0f) << ((dx&1)<<2)); #else