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);