diff -c ../glkzip-0.1-orig/Makefile ./Makefile
*** ../glkzip-0.1-orig/Makefile	Fri Jun 18 04:24:53 1999
--- ./Makefile	Mon Oct 30 12:13:12 2000
***************
*** 89,95 ****
  CFLAGS = -g $(SYSTEMFLAGS) $(GLKINCLUDE)
  LDFLAGS = -g
  #LIBS = -L$(XLIB) -lX11 $(SYSTEMLIBS)
! LIBS = $(LINKLIBS) $(GLKLIBDIR) $(GLKLIB)
  
  INC = ztypes.h
  OBJS = zip.o control.o extern.o fileio.o input.o interpre.o math.o memory.o \
--- 89,95 ----
  CFLAGS = -g $(SYSTEMFLAGS) $(GLKINCLUDE)
  LDFLAGS = -g
  #LIBS = -L$(XLIB) -lX11 $(SYSTEMLIBS)
! LIBS = $(GLKLIBDIR) $(GLKLIB) $(LINKLIBS)
  
  INC = ztypes.h
  OBJS = zip.o control.o extern.o fileio.o input.o interpre.o math.o memory.o \
diff -c ../glkzip-0.1-orig/README ./README
*** ../glkzip-0.1-orig/README	Fri Jun 18 04:25:08 1999
--- ./README	Mon Oct 30 12:27:30 2000
***************
*** 8,10 ****
--- 8,34 ----
  or -DAUTO_END_MODE.  Also, uncomment the definitions for one of the
  given Glk libraries, and replace the definition of GLKDIR with the
  correct directory.
+ 
+ Patch update: glkzip.patch - D.J. Picton (pictondj@my-deja.com)
+ ---------------------------------------------------------------
+ 
+ This patch updates the following files to incorporate enhancements and
+ bugfixes from XZIP Version 1.8.2.
+ 
+ text.c: fix a bug affecting the printing of newline characters
+ math.c: fix a bug affecting logical shifts of negative numbers
+ control.c: declare full Z-code 0.1 compliance
+ property.c: add support for 64-byte-long properties as in Z-code 0.1 spec.
+ 
+ The following file has been updated to reflect changes in the GLK spec:
+ 
+ glkio.c: call glk_gestalt_ext with the correct number of arguments.
+ 
+ The following bugfixes have also been made in glkio.c:
+ 
+ glkio.c: The status window is enlarged as necessary when an attempt is made to
+ write below the bottom line (this happens with some versions of the help
+ menu software e.g. in bear.z5, where the size of the status window is not
+ set large enough).
+ 
+ Makefile: Minor change to LIBS setting for Solaris compilations.
diff -c ../glkzip-0.1-orig/control.c ./control.c
*** ../glkzip-0.1-orig/control.c	Thu Apr 22 08:22:02 1999
--- ./control.c	Mon Oct 23 10:49:17 2000
***************
*** 266,271 ****
--- 266,275 ----
      if (scripton_flag)
          set_word (H_FLAGS, (get_word (H_FLAGS) | SCRIPTING_FLAG));
  
+     /* Declare strict Z-code 0.1 compliance */
+       set_byte (0x32, 0x01);
+       set_byte (0x33, 0x00);
+ 
      set_byte (H_INTERPRETER, h_interpreter);
      set_byte (H_INTERPRETER_VERSION, h_interpreter_version);
      set_byte (H_SCREEN_ROWS, screen_rows); /* Screen dimension in characters */
diff -c ../glkzip-0.1-orig/glkio.c ./glkio.c
*** ../glkzip-0.1-orig/glkio.c	Thu Jun 17 04:20:59 1999
--- ./glkio.c	Mon Oct 30 11:14:36 2000
***************
*** 45,50 ****
--- 45,58 ----
      if (ch == '\n')
        return;
    }
+   
+   /* added - DJP */
+   if (curr_win == status_win) {
+     if(status_y > mach_status_ht) {
+        mach_status_ht = status_y;
+        reset_status_ht();
+     }
+   }
    glk_put_char(ch);
    if (curr_win == status_win) {
      if (ch == '\n') {
***************
*** 53,59 ****
      }
      else {
        glui32 len;
!       glk_gestalt_ext(gestalt_CharOutput, ch, &len);
        while (len > 0) {
          status_x++;
          if (status_x > screen_cols) {
--- 61,67 ----
      }
      else {
        glui32 len;
!       glk_gestalt_ext(gestalt_CharOutput, ch, &len, 1);
        while (len > 0) {
          status_x++;
          if (status_x > screen_cols) {
Only in .: glkzip.patch
diff -c ../glkzip-0.1-orig/math.c ./math.c
*** ../glkzip-0.1-orig/math.c	Thu Apr 22 08:20:17 1999
--- ./math.c	Mon Oct 23 16:22:11 2000
***************
*** 5,10 ****
--- 5,12 ----
   *
   */
  
+ /* Updated - from xzip 1.82 */
+ 
  #include "ztypes.h"
  
  /*
***************
*** 168,180 ****
  #endif
  {
  
!     if ((short) b > 0)
          store_operand (a << (short) b);
      else
!         if ((short) a > 0)
              store_operand (a >> abs ((short) b));
          else
!             store_operand (~((~a) >> abs ((short) b)));
  
  }/* arith_shift */
  
--- 170,182 ----
  #endif
  {
  
!     if ((short) b >= 0)
          store_operand (a << (short) b);
      else
!         if ((short) a >= 0)
              store_operand (a >> abs ((short) b));
          else
!             store_operand (~(((~a) & 0xFFFF) >> abs ((short) b)));
  
  }/* arith_shift */
  
diff -c ../glkzip-0.1-orig/property.c ./property.c
*** ../glkzip-0.1-orig/property.c	Thu Apr 22 08:20:18 1999
--- ./property.c	Mon Oct 30 11:53:54 2000
***************
*** 65,72 ****
  
      if (h_type < V4)
          value = (zbyte_t) ((value & property_size_mask) >> 5);
!     else if (value & 0x80)
          value = get_byte (propp) & (zbyte_t) property_size_mask;
      else if (value & 0x40)
          value = 1;
      else
--- 65,75 ----
  
      if (h_type < V4)
          value = (zbyte_t) ((value & property_size_mask) >> 5);
!     else if (value & 0x80) {
          value = get_byte (propp) & (zbyte_t) property_size_mask;
+         if (value == 0)
+           value = 64;
+     }
      else if (value & 0x40)
          value = 1;
      else
***************
*** 324,334 ****
          /* Property length is in high bits of property id */
  
          store_operand (((get_byte (propp) & property_size_mask ) >> 5) + 1);
!     else if (get_byte (propp) & 0x80)
  
          /* Property length is in property id */
! 
!         store_operand (get_byte (propp) & property_size_mask);
      else
  
          /* Word sized property if bit 6 set, else byte sized property */
--- 327,340 ----
          /* Property length is in high bits of property id */
  
          store_operand (((get_byte (propp) & property_size_mask ) >> 5) + 1);
!     else if (get_byte (propp) & 0x80) {
  
          /* Property length is in property id */
!         int val = get_byte (propp) & property_size_mask;
!         if (val == 0)
!           val = 64; 
!         store_operand (val);
!     }
      else
  
          /* Word sized property if bit 6 set, else byte sized property */
diff -c ../glkzip-0.1-orig/text.c ./text.c
*** ../glkzip-0.1-orig/text.c	Thu Apr 22 08:22:03 1999
--- ./text.c	Mon Oct 23 16:22:13 2000
***************
*** 5,10 ****
--- 5,12 ----
   *
   */
  
+ /* Updated - from xzip 1.82 */
+ 
  #include "ztypes.h"
  
  static int saved_formatting = ON;
***************
*** 431,437 ****
      } 
      else if (c == 13) {
      
!     	write_char ('\r');
      	
      }
      else {
--- 433,440 ----
      } 
      else if (c == 13) {
      
!         /* write_char ('\r'); */
!         new_line ();
      	
      }
      else {
***************
*** 534,539 ****
--- 537,545 ----
  
          /* No formatting or output redirection, so just output the character */
  
+         if (c == 13) 
+           c = '\n';
+ 
          script_char (c);
  
          output_char (c);
