console_patches_73����������������������������������������������������������������������������������0040755�0000000�0000000�00000000000�14420265734�0013353�5����������������������������������������������������������������������������������������������������ustar�00root����������������������������wheel������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������console_patches_73/part_1.sig�����������������������������������������������������������������������0100644�0000000�0000000�00000031152�14420264207�0015315�0����������������������������������������������������������������������������������������������������ustar�00root����������������������������wheel������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������untrusted comment: verify with signify key from research.exoticsilicon.com

RWRn5d3Yx35u0+EjnJhojEI4EXC4GSzOzGXHWH2Ki9/PzoobmYCdnHfG/jnJsrRMXtuI7lm27GMro7lwvgE9tI3ti7Fbxy2XuAQ=

This patch is patch 1 of a set of 4 patches, intended to be applied to OpenBSD 7.3-release.

For more information about this patchset, and to download the accompanying userland utilities, please visit:

https://research.exoticsilicon.com/articles/console_enhancement_patchset_73

THIS PATCH IS PROVIDED 'AS IS' AND ANY EXPRESS OR IMPLIED WARRANTIES,

INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY

AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL

EXOTIC SILICON BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,

EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,

PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA OR PROFITS;

OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,

WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR

OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS PATCH, EVEN IF

ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.

--- sys/dev/rasops/rasops.c

+++ sys/dev/rasops/rasops.c

@@ -446,6 +446,10 @@

	    WSSCREEN_WSCOLORS | WSSCREEN_REVERSE;

}

switch (ri->ri_depth) {

#if NRASOPS1 > 0

case 1:

@@ -557,7 +561,7 @@

if ((flg & WSATTR_HILIT) != 0 && fg < 8)

	fg += 8;

return (0);

}

@@ -581,7 +585,7 @@

	bg = swap;

}

return (0);

}

@@ -863,6 +867,24 @@

	ri->ri_devcmap[i] = c;

#endif

}

#endif

}

@@ -872,8 +894,8 @@

void

rasops_unpack_attr(void *cookie, uint32_t attr, int *fg, int *bg, int *underline)

{

if (underline != NULL)

	*underline = (u_int)attr & WSATTR_UNDERLINE;

}

@@ -903,7 +925,7 @@

	return 0;

#endif

/*

 * XXX The wsdisplay_emulops interface seems a little deficient in

@@ -1245,9 +1267,20 @@

else

	col = ri->ri_cols - col - 1;

+#define BITMASK_UNSAFE_FOR_ROTATION (WSATTR_UNDERLINE | WSATTR_DOUBLE_UNDERLINE | WSATTR_STRIKE | WSATTR_ITALIC)

if (rc != 0)

	return rc;

@@ -1259,7 +1292,7 @@

/* XXX this assumes 16-bit color depth */

if ((attr & WSATTR_UNDERLINE) != 0) {

	while (height--) {

		*(int16_t *)rp = c;

@@ -1787,8 +1820,8 @@

attr = ri->ri_bs[off].attr;

if ((ri->ri_flg & RI_CURSOR) == 0) {

	attr &= ~0x0ffff0000;

	attr |= (fg << 16) | (bg << 24);

}

--- sys/dev/rasops/rasops.h

+++ sys/dev/rasops/rasops.h

@@ -106,7 +106,7 @@

u_char  *ri_origbits;	/* where screen bits actually start */

int	ri_xorigin;	/* where ri_bits begins (x) */

int	ri_yorigin;	/* where ri_bits begins (y) */

/* The emulops you need to use, and the screen caps for wscons */

struct	wsdisplay_emulops ri_ops;

--- sys/dev/rasops/rasops32.c

+++ sys/dev/rasops/rasops32.c

@@ -91,13 +91,46 @@

width = ri->ri_font->fontwidth;

step = ri->ri_stride >> 3;

u.d[0][0] = b; u.d[0][1] = b;

u.d[1][0] = b; u.d[1][1] = f;

u.d[2][0] = f; u.d[2][1] = b;

u.d[3][0] = f; u.d[3][1] = f;

if (uc == ' ') {

	while (height--) {

		/* the general, pixel-at-a-time case is fast enough */

@@ -203,11 +236,46 @@

}

/* Do underline a pixel at a time */

	rp -= step;

	for (cnt = 0; cnt < width; cnt++)

		((int *)rp)[cnt] = f;

}

+#define FONT_HEIGHT ri->ri_font->fontheight

+#define DOUBLE_UL_SHIFT (FONT_HEIGHT < 12 ? 0 : (FONT_HEIGHT <= 32 ? 1 : 2))

return 0;

}

--- sys/dev/wscons/wsdisplayvar.h

+++ sys/dev/wscons/wsdisplayvar.h

@@ -94,11 +94,16 @@

#define WSCOL_CYAN 6

#define WSCOL_WHITE 7

/* flag values: */

-#define WSATTR_REVERSE 1

-#define WSATTR_HILIT 2

-#define WSATTR_BLINK 4

-#define WSATTR_UNDERLINE 8

-#define WSATTR_WSCOLORS 16

+#define WSATTR_REVERSE 1

+#define WSATTR_HILIT 2

+#define WSATTR_BLINK 4

+#define WSATTR_UNDERLINE 8

+#define WSATTR_WSCOLORS 16

+#define WSATTR_DIM 32

+#define WSATTR_STRIKE 64

+#define WSATTR_DOUBLE_UNDERLINE 128

+#define WSATTR_INVISIBLE 256

+#define WSATTR_ITALIC 512

};

#define WSSCREEN_NAME_SIZE 16

@@ -114,6 +119,7 @@

#define WSSCREEN_HILIT 4 /* can highlight (however) */

#define WSSCREEN_BLINK 8 /* can blink */

#define WSSCREEN_UNDERLINE 16 /* can underline */

+#define WSSCREEN_256COL 32 /* supports 256 colours */

};

/*

--- sys/dev/wscons/wsemul_vt100_subr.c

+++ sys/dev/wscons/wsemul_vt100_subr.c

@@ -593,6 +593,9 @@

		case 1: /* bold */

			flags |= WSATTR_HILIT;

			break;

		case 4: /* underline */

			flags |= WSATTR_UNDERLINE;

			break;

@@ -602,11 +605,28 @@

		case 7: /* reverse */

			flags |= WSATTR_REVERSE;

			break;

			flags &= ~WSATTR_HILIT;

			break;

		case 24: /* ~underline VT300 only */

			flags &= ~WSATTR_UNDERLINE;

			break;

		case 25: /* ~blink VT300 only */

			flags &= ~WSATTR_BLINK;

@@ -614,12 +634,76 @@

		case 27: /* ~reverse VT300 only */

			flags &= ~WSATTR_REVERSE;

			break;

		case 30: case 31: case 32: case 33:

		case 34: case 35: case 36: case 37:

			/* fg color */

			flags |= WSATTR_WSCOLORS;

			fgcol = ARG(n) - 30;

			break;

+#define EXIST_ARG2(i) ((edp->nargs-n)>=3)

+#define ARG2_OR_DEF(i) (EXIST_ARG2(i) ? ARG(i+2) : 0)

		case 39:

			/* reset fg color */

			fgcol = WSCOL_WHITE;

@@ -631,6 +715,29 @@

			/* bg color */

			flags |= WSATTR_WSCOLORS;

			bgcol = ARG(n) - 40;

			break;

		case 49:

			/* reset bg color */

����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������console_patches_73/part_2.sig�����������������������������������������������������������������������0100644�0000000�0000000�00000010357�14420264221�0015316�0����������������������������������������������������������������������������������������������������ustar�00root����������������������������wheel������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������untrusted comment: verify with signify key from research.exoticsilicon.com

RWRn5d3Yx35u05UIOxPBA6FziK3xdoX/HPFewiWL8tLSTpbIggRwXek4QaEReIrU8pimxGczen9vtPbGLKFX0quYuo02yn1ncwA=

This patch is patch 2 of a set of 4 patches, intended to be applied to OpenBSD 7.3-release.

For more information about this patchset, and to download the accompanying userland utilities, please visit:

https://research.exoticsilicon.com/articles/console_enhancement_patchset_73

THIS PATCH IS PROVIDED 'AS IS' AND ANY EXPRESS OR IMPLIED WARRANTIES,

INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY

AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL

EXOTIC SILICON BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,

EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,

PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA OR PROFITS;

OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,

WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR

OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS PATCH, EVEN IF

ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.

--- sys/dev/wscons/wsemul_vt100_keys.c

+++ sys/dev/wscons/wsemul_vt100_keys.c

@@ -37,11 +37,9 @@

#include <dev/wscons/wsemulvar.h>

#include <dev/wscons/wsemul_vt100var.h>

+#define vt100_fkeys_len(x) (5+(x>=8)+(x>=12))

static const u_char *vt100_fkeys[] = {

"\033[15~",	/* F5 */

"\033[17~",	/* F6 */

"\033[18~",

@@ -50,18 +48,18 @@

"\033[21~",

"\033[23~",	/* VT100: ESC */

"\033[24~",	/* VT100: BS */

};

static const u_char *vt100_pfkeys[] = {

@@ -96,14 +94,22 @@

	    edp->translatebuf, edp->flags & VTFL_UTF8));

}

}

}

if (in >= KS_KP_F1 && in <= KS_KP_F4) {

	*out = vt100_pfkeys[in - KS_KP_F1];

	return (3);

@@ -148,12 +154,12 @@

}

switch (in) {

    case KS_Help:

	return (5);

    case KS_Execute: /* "Do" */

	return (5);

	*out = "\033[1~";

	return (4);

    case KS_Insert:

@@ -163,7 +169,7 @@

    case KS_KP_Delete:

	*out = "\033[3~";

	return (4);

	*out = "\033[4~";

	return (4);

    case KS_Prior:

@@ -177,14 +183,24 @@

    case KS_Backtab:

	*out = "\033[Z";

	return (3);

    case KS_Home:

    case KS_KP_Home:

    case KS_End:

    case KS_KP_End:

    case KS_Up:

    case KS_KP_Up:

	if (edp->flags & VTFL_APPLCURSOR)

���������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������console_patches_73/part_3.sig�����������������������������������������������������������������������0100644�0000000�0000000�00000012650�14420264233�0015320�0����������������������������������������������������������������������������������������������������ustar�00root����������������������������wheel������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������untrusted comment: verify with signify key from research.exoticsilicon.com

RWRn5d3Yx35u0/WqBp/XjOvUxCWQFAXL0Z4PB6G8AwFyPNJdkfCFs/GxQtumeNetdzbrQWp5QAnGGn+BlVwE8jhJWz672lrF9wI=

This patch is patch 3 of a set of 4 patches, intended to be applied to OpenBSD 7.3-release.

For more information about this patchset, and to download the accompanying userland utilities, please visit:

https://research.exoticsilicon.com/articles/console_enhancement_patchset_73

THIS PATCH IS PROVIDED 'AS IS' AND ANY EXPRESS OR IMPLIED WARRANTIES,

INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY

AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL

EXOTIC SILICON BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,

EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,

PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA OR PROFITS;

OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,

WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR

OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS PATCH, EVEN IF

ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.

--- sys/dev/rasops/rasops32.c

+++ sys/dev/rasops/rasops32.c

@@ -140,7 +140,25 @@

	}

} else {

	uc -= ri->ri_font->firstchar;

	fs = ri->ri_font->stride;

	/* double-pixel special cases for the common widths */

--- sys/dev/wscons/wsconsio.h

+++ sys/dev/wscons/wsconsio.h

@@ -536,6 +536,9 @@

#define WSDISPLAY_FONTORDER_R2L 2

void *cookie;

void *data;

};

#define WSDISPLAYIO_LDFONT _IOW ('W', 77, struct wsdisplay_font)

#define WSDISPLAYIO_LSFONT _IOWR('W', 78, struct wsdisplay_font)

--- sys/dev/wscons/wsemul_vt100_subr.c

+++ sys/dev/wscons/wsemul_vt100_subr.c

@@ -596,6 +596,9 @@

		case 2: /* dim */

			flags |= WSATTR_DIM;

			break;

		case 4: /* underline */

			flags |= WSATTR_UNDERLINE;

			break;

@@ -623,6 +626,9 @@

		case 22: /* ~bold ~dim VT300 only */

			flags &= ~WSATTR_HILIT;

			flags &= ~WSATTR_DIM;

			break;

		case 24: /* ~underline VT300 only */

			flags &= ~WSATTR_UNDERLINE;

--- sys/dev/wsfont/wsfont.c

+++ sys/dev/wsfont/wsfont.c

@@ -586,6 +586,63 @@

	lc = ++ent->lockcount;

	*ptr = ent->font;

+#define FONT_DATA ((*ptr)->data)

+#define FONT_DATA_BOLD ((*ptr)->data_bold)

+#define FONT_DATA_ITALIC ((*ptr)->data_italic)

+#define FONT_DATA_BOLDITALIC ((*ptr)->data_bolditalic)

+#define FONT_SLANT ((((*ptr)->fontheight))/2)

+#define FONT_BYTES_PER_GLYPH (((*ptr)->stride) * (((*ptr)->fontheight)))

+#define FONT_DATA_LEN FONT_BYTES_PER_GLYPH * ((*ptr)->numchars)

+#define FONT_STRIDE ((*ptr)->stride)

} else

	lc = -1;

@@ -600,6 +657,7 @@

wsfont_unlock(int cookie)

{

struct font *ent;

int s, lc;

s = splhigh();

@@ -607,6 +665,10 @@

if ((ent = wsfont_find0(cookie)) != NULL) {

	if (ent->lockcount == 0)

		panic("wsfont_unlock: font not locked");

	lc = --ent->lockcount;

} else

	lc = -1;

����������������������������������������������������������������������������������������console_patches_73/part_4.sig�����������������������������������������������������������������������0100644�0000000�0000000�00000015553�14420264245�0015331�0����������������������������������������������������������������������������������������������������ustar�00root����������������������������wheel������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������untrusted comment: verify with signify key from research.exoticsilicon.com

RWRn5d3Yx35u07zDFXtSicfT32YODvHWc6B3jvWz2gNYCqRIWqpLf/9PTPF5rVX78b7w8ESZTswn72t7ByyxQiMrmjpF0fk2dgo=

This patch is patch 4 of a set of 4 patches, intended to be applied to OpenBSD 7.3-release.

For more information about this patchset, and to download the accompanying userland utilities, please visit:

https://research.exoticsilicon.com/articles/console_enhancement_patchset_73

THIS PATCH IS PROVIDED 'AS IS' AND ANY EXPRESS OR IMPLIED WARRANTIES,

INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY

AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL

EXOTIC SILICON BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,

EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,

PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA OR PROFITS;

OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,

WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR

OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS PATCH, EVEN IF

ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.

--- sys/dev/ic/vga.c

+++ sys/dev/ic/vga.c

@@ -116,6 +116,7 @@

int vga_pack_attr(void *, int, int, int, uint32_t *);

int vga_copyrows(void *, int, int, int);

void vga_unpack_attr(void *, uint32_t, int *, int *, int *);

+int vga_screendump(void *, void *);

static const struct wsdisplay_emulops vga_emulops = {

pcdisplay_cursor,

@@ -126,7 +127,8 @@

vga_copyrows,

pcdisplay_eraserows,

vga_pack_attr,

};

/*

@@ -1245,6 +1247,12 @@

	vga_loadchars(&vc->hdl, slot, 0, 256, f->height, f->fontdata);

}

+}

+int

+vga_screendump(void * cookie, void * unused)

+{

+return (EINVAL);

}

#ifdef alpha

--- sys/dev/rasops/rasops.c

+++ sys/dev/rasops/rasops.c

@@ -170,6 +170,7 @@

int rf_rotated;

};

#endif

+int rasops_screendump(void *, void *);

void rasops_doswitch(void *);

int rasops_vcons_cursor(void *, int, int, int);

@@ -181,6 +182,7 @@

int rasops_vcons_eraserows(void *, int, int, uint32_t);

int rasops_vcons_pack_attr(void *, int, int, int, uint32_t *);

void rasops_vcons_unpack_attr(void *, uint32_t, int *, int *, int *);

+int rasops_vcons_screendump(void *, void *);

int rasops_wronly_putchar(void *, int, int, u_int, uint32_t);

int rasops_wronly_copycols(void *, int, int, int, int);

@@ -276,6 +278,7 @@

ri->ri_copyrows = ri->ri_ops.copyrows;

ri->ri_eraserows = ri->ri_ops.eraserows;

ri->ri_pack_attr = ri->ri_ops.pack_attr;

if (ri->ri_flg & RI_VCONS) {

	void *cookie;

@@ -299,6 +302,7 @@

	ri->ri_ops.pack_attr = rasops_vcons_pack_attr;

	ri->ri_ops.unpack_attr = rasops_vcons_unpack_attr;

	ri->ri_do_cursor = rasops_wronly_do_cursor;

} else if ((ri->ri_flg & RI_WRONLY) && ri->ri_bs != NULL) {

	uint32_t attr;

	int i;

@@ -436,6 +440,7 @@

ri->ri_ops.unpack_attr = rasops_unpack_attr;

ri->ri_do_cursor = rasops_do_cursor;

ri->ri_updatecursor = NULL;

if (ri->ri_depth < 8 || (ri->ri_flg & RI_FORCEMONO) != 0) {

	ri->ri_ops.pack_attr = rasops_pack_mattr;

@@ -2032,3 +2037,38 @@

return 0;

}

+/*

+int

+rasops_screendump(void * cookie, void * data)

+{

+#define screendump ((struct wsdisplay_screendump_pixels *)data)

+#define FB_SIZE (ri->ri_stride * ri->ri_height)

+}

+int

+rasops_vcons_screendump(void * cookie, void * data)

+{

+}

--- sys/dev/rasops/rasops.h

+++ sys/dev/rasops/rasops.h

@@ -136,6 +136,7 @@

int	(*ri_copyrows)(void *, int, int, int);

int	(*ri_eraserows)(void *, int, int, uint32_t);

int	(*ri_pack_attr)(void *, int, int, int, uint32_t *);

};

#define DELTA(p, d, cast) ((p) = (cast)((caddr_t)(p) + (d)))

--- sys/dev/wscons/wsconsio.h

+++ sys/dev/wscons/wsconsio.h

@@ -665,4 +665,27 @@

};

#define WSMUXIO_LIST_DEVICES _IOWR('W', 99, struct wsmux_device_list)

+/*

+struct wsdisplay_screendump_text {

+#define WSDISPLAYIO_SCREENDUMP_TEXT _IOWR('W', 160, struct wsdisplay_screendump_text)

+struct wsdisplay_screendump_pixels {

+#define WSDISPLAYIO_SCREENDUMP_PIXELS _IOWR('W', 161, struct wsdisplay_screendump_pixels)

#endif /* DEV_WSCONS_WSCONSIO_H */

--- sys/dev/wscons/wsdisplay.c

+++ sys/dev/wscons/wsdisplay.c

@@ -1161,6 +1161,39 @@

}

switch (cmd) {

+#define SCREENDUMP ((struct wsdisplay_screendump_text *)data)

+#define DISP_SIZE (SCREENDUMP->rows * SCREENDUMP->cols)

case WSDISPLAYIO_GMODE:

	if (scr->scr_flags & SCR_GRAPHICS) {

		if (scr->scr_flags & SCR_DUMBFB)

--- sys/dev/wscons/wsdisplayvar.h

+++ sys/dev/wscons/wsdisplayvar.h

@@ -84,6 +84,7 @@

	    uint32_t *attrp);

void	(*unpack_attr)(void *c, uint32_t attr, int *fg, int *bg,

	    int *ul);

/* fg / bg values. Made identical to ANSI terminal color codes. */

#define WSCOL_BLACK 0

#define WSCOL_RED 1

�����������������������������������������������������������������������������������������������������������������������������������������������������demo������������������������������������������������������������������������������������������������0040755�0000000�0000000�00000000000�14420567271�0010616�5����������������������������������������������������������������������������������������������������ustar�00root����������������������������wheel������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������demo/demo_256_and_attributes.c����������������������������������������������������������������������0100644�0000000�0000000�00000006255�14420464056�0015453�0����������������������������������������������������������������������������������������������������ustar�00root����������������������������wheel������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������/*

*/

/*

*/

include <stdio.h>

int main()

{

int i,j;

printf ("\x1b[m\n");

for (i=0;i<256;i++) {

printf ("\x1b[38;5;%dm#%03d  %s",i,i, ((i+1) % 16 ? "" : "\n"));

}

printf ("\n");

for (i=0; i<32; i++) {

printf ("\x1b[m%s%s%s%s%s", ((i & 1) ? "\x1b[2m" : ""), ((i & 2) ? "\x1b[1m" : ""), ((i & 4) ? "\x1b[3m" : ""), ((i & 8) ? "\x1b[21m" : ""),

    ((i & 16) ? "\x1b[9m" :""));

j=printf ("This is %s%s%s%s%s%stext", i==0 ? "normal " : "", i & 1 ? "dim " : "", i & 2 ? "bold " : "", i & 4 ? "italic " : "",

    i & 8 ? "double underlined " : "", i & 16 ? "struck " : "");

if (i % 2) {

	printf ("\n");

	} else {

	printf ("\x1b[m");

	printf ("                                                          "+j);

	}

}

printf ("\x1b[mBack to normal.\n");

}

���������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������demo/checksums.sig����������������������������������������������������������������������������������0100644�0000000�0000000�00000000426�14420567302�0013360�0����������������������������������������������������������������������������������������������������ustar�00root����������������������������wheel������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������untrusted comment: verify with signify key from research.exoticsilicon.com

RWRn5d3Yx35u0/HBg2TnWAyGasvatbQkv3SwQR6fClpToRdNukAg/iQ9Ep8LzwWv2Rt5SlvjazEulNZsryx1RKWTFu+tbhZ2OAg=

SHA256 (demo_256_and_attributes.c) = d3a56ed92a0f493e623d1092e2053dbd85090b3d5d9ae301282353660cc0282c

������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������screendump_utilities��������������������������������������������������������������������������������0040755�0000000�0000000�00000000000�14420567014�0014125�5����������������������������������������������������������������������������������������������������ustar�00root����������������������������wheel������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������screendump_utilities/screendump_graphical.c���������������������������������������������������������0100644�0000000�0000000�00000011124�14420263257�0020525�0����������������������������������������������������������������������������������������������������ustar�00root����������������������������wheel������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������/*

*/

/*

*/

include <stdio.h>

include <unistd.h>

include <stdlib.h>

include <sys/ioctl.h>

include <sys/time.h>

include <dev/wscons/wsconsio.h>

include <fcntl.h>

int main()

{

int fd_out;

int header_len;

int pos_in;

int pos_out;

int res;

int x;

int y;

struct wsdisplay_screendump_pixels screendump;

struct wsdisplay_fbinfo dispinfo;

unsigned char * header;

unsigned char * file_out;

unsigned char * processed_pixel_data;

/* Call WSDISPLAYIO_GINFO to get the size of the framebuffer. */

res=ioctl (STDIN_FILENO, WSDISPLAYIO_GINFO, &dispinfo);

if (res == -1) {

printf ("Ioctl WSDISPLAYIO_GINFO not supported for this device\n");

return (1);

}

/* Allocate the correct amount of memory for the screendump. */

screendump.data=malloc(dispinfo.stride * dispinfo.height);

res=ioctl (STDIN_FILENO, WSDISPLAYIO_SCREENDUMP_PIXELS, &screendump);

if (res == -1) {

printf ("Ioctl WSDISPLAYIO_SCREENDUMP_PIXELS not supported for this device\n");

return (1);

}

printf ("Ioctl WSDISPLAYIO_GINFO returned %d\nwidth %d, height %d, stride %d, depth %d\n", res, dispinfo.width, dispinfo.height, dispinfo.stride, dispinfo.depth);

printf ("Ioctl WSDISPLAYIO_SCREENDUMP_PIXELS returned %d\nwidth %d, height %d, stride %d, depth %d\n", res, screendump.width, screendump.height, screendump.stride, screendump.depth);

if (screendump.depth != 32) {

printf ("Only 32bpp input data is supported.\n");

return (1);

}

/*

*/

processed_pixel_data=malloc(screendump.width * screendump.height * 4);

pos_out=0;

pos_in=0;

for (y=0; y<screendump.height; y++) {

for (x=0; x<screendump.stride/4; x++) {

	if (x<(screendump.width)) {

		*(processed_pixel_data+pos_out++)=*(screendump.data+pos_in+2);

		*(processed_pixel_data+pos_out++)=*(screendump.data+pos_in+1);

		*(processed_pixel_data+pos_out++)=*(screendump.data+pos_in);

	}

	pos_in+=4;

	}

}

header=malloc(1024);

header_len=sprintf (header, "P6\n%d %d\n255\n", screendump.width, screendump.height);

fd_out=open ("rgb_screendump.ppm", O_CREAT | O_WRONLY, 0644);

write (fd_out, header, header_len);

write (fd_out, processed_pixel_data, pos_out);

close (fd_out);

return (0);

}

��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������screendump_utilities/screendump_text.c��������������������������������������������������������������0100644�0000000�0000000�00000015200�14420263055�0017552�0����������������������������������������������������������������������������������������������������ustar�00root����������������������������wheel������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������/*

*/

/*

*/

include <stdio.h>

include <unistd.h>

include <stdlib.h>

include <sys/ioctl.h>

include <sys/time.h>

include <dev/wscons/wsconsio.h>

include <fcntl.h>

include <dev/wscons/wsdisplayvar.h>

define BLUE(x) (48*((x-16)%6))

define GREEN(x) (48*(((x-16)/6)%6))

define RED(x) (48*(((x-16)/36)%6))

define HEX(i) ((i & 0xf) <10 ? (i & 0xf)+'0' : (i & 0xf)-10+'a')

define GREY(i) (1+((i-232)*11))

void colour_html(int cindex, unsigned char * return_col)

{

if (cindex < 16) {

*(return_col+3)=0;

*return_col=(cindex & 1 ? (cindex & 8 ? 'f' : '8') : '0');

*(return_col+1)=(cindex & 2 ? (cindex & 8 ? 'f' : '8') : '0');

*(return_col+2)=(cindex & 4 ? (cindex & 8 ? 'f' : '8') : '0');

if (cindex==7) {

	*(return_col)='d';

	*(return_col+1)='d';

	*(return_col+2)='d';

	}

if (cindex==8) {

	*(return_col)='8';

	*(return_col+1)='8';

	*(return_col+2)='8';

	}

return;

}

if (cindex < 232) {

*(return_col)=HEX(RED(cindex) >> 4);

*(return_col+1)=HEX(RED(cindex));

*(return_col+2)=HEX(GREEN(cindex) >> 4);

*(return_col+3)=HEX(GREEN(cindex));

*(return_col+4)=HEX(BLUE(cindex) >> 4);

*(return_col+5)=HEX(BLUE(cindex));

return ;

}

return ;

}

int main()

{

int fd;

int res;

int i, j;

int pos_in;

int spanopen;

unsigned int cattr;

struct wsdisplay_screendump_text screendump;

unsigned char * buffer;

unsigned char * pos_out;

unsigned char * return_col;

screendump.textdata=malloc(32768);

screendump.attrdata=malloc(65536);

res=ioctl (STDIN_FILENO, WSDISPLAYIO_SCREENDUMP_TEXT, &screendump);

if (res == -1) {

printf ("Ioctl WSDISPLAYIO_SCREENDUMP_TEXT not supported for this device\n");

return (1);

}

printf ("ioctl returned %d\nrows %d, cols %d\n", res, screendump.rows, screendump.cols);

/* Write raw text output to a file */

fd=open ("screendump.raw", O_WRONLY | O_CREAT | O_TRUNC, 0600);

write (fd, screendump.textdata, screendump.rows * screendump.cols);

close (fd);

/* Write line-delimited output to a file */

buffer=malloc(screendump.rows * (screendump.cols + 1));

j=0;

for (i=0 ; i < screendump.rows * screendump.cols ; i++) {

*(buffer+j++)=*(screendump.textdata+i);

if ((i+1) % screendump.cols == 0) {

	while (j>0 && *(buffer + j - 1)==32) { j--; }

	*(buffer+j++)=10;

	}

}

fd=open ("screendump.asc", O_WRONLY | O_CREAT | O_TRUNC, 0600);

write (fd, buffer, j);

close (fd);

free (buffer);

/* Write HTML output to a file */

buffer=malloc(1024*1024);

pos_out=buffer;

spanopen=0;

define LINEAR_POS (i*screendump.cols+j)

/* Write HTML preamble */

pos_out+=sprintf(pos_out, "");

return_col=malloc(1024);

/* Process the output line-by-line */

for (i=0; i<screendump.rows; i++) {

pos_out+=sprintf(pos_out, "<div>");

for (j=0; j<screendump.cols; j++) {

	if (j==0 || screendump.attrdata[LINEAR_POS]!=cattr) {

		cattr=screendump.attrdata[LINEAR_POS];

		if (j>0) {

			pos_out+=sprintf(pos_out, "</span>");

			}

		pos_out+=sprintf(pos_out, "%s", "<span style='");

		colour_html((cattr >> 16) & 0xff, return_col);

		pos_out+=sprintf(pos_out, "background:#%s;", return_col);

		colour_html((cattr >> 24) & 0xff, return_col);

		pos_out+=sprintf(pos_out, "color:#%s;", return_col);

		pos_out+=sprintf(pos_out, "font-weight:%d;", (cattr & WSATTR_HILIT ? 800 : 400));

		pos_out+=sprintf(pos_out, "text-decoration:%s;", (cattr & WSATTR_UNDERLINE ? "underline" : "none"));

		pos_out+=sprintf(pos_out, "%s", "'>");

		}

	switch (*(screendump.textdata+LINEAR_POS)) {

		case '>':

			pos_out+=sprintf(pos_out, "%s", "&gt;");

			break;

		case '<':

			pos_out+=sprintf(pos_out, "%s", "&lt;");

			break;

		case '&':

			pos_out+=sprintf(pos_out, "%s", "&amp;");

			break;

		default:

			*(pos_out++)=*(screendump.textdata+LINEAR_POS);

		}

	}

pos_out+=sprintf(pos_out, "</span></div>");

}

/* Write HTML trailer */

pos_out+=sprintf(pos_out, "");

fd=open ("screendump.html", O_WRONLY | O_CREAT | O_TRUNC, 0600);

write (fd, buffer, pos_out-buffer);

close (fd);

free (buffer);

free (return_col);

free (screendump.textdata);

free (screendump.attrdata);

return (0);

}

������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������screendump_utilities/checksums.sig������������������������������������������������������������������0100644�0000000�0000000�00000000561�14420567114�0016675�0����������������������������������������������������������������������������������������������������ustar�00root����������������������������wheel������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������untrusted comment: verify with signify key from research.exoticsilicon.com

RWRn5d3Yx35u0xTS8QdGDJ3hkLf7ZYKx1L1j4BJyjksODnJTbMulleYqsnLQaI6uTXC481Ch55nDixUsxJs6+hCEA+SedeRPowU=

SHA256 (screendump_graphical.c) = 5887417b726246aef659a9040467fbccfb53e69081f0d9ec00381adc066ffe4a

SHA256 (screendump_text.c) = 3980ccb25dc28c1315689d349af62e6307d134100b2860bc3d5f9251dba1433f

�����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������

Proxy Information
Original URL
gemini://gemini.exoticsilicon.com/downloads/console_patches_73.tar
Status Code
Success (20)
Meta
application/octet-stream
Capsule Response Time
386.099927 milliseconds
Gemini-to-HTML Time
16.205707 milliseconds

This content has been proxied by September (3851b).