diff options
author | Edwin Groothuis <edwin@FreeBSD.org> | 2007-09-28 08:13:10 +0000 |
---|---|---|
committer | Edwin Groothuis <edwin@FreeBSD.org> | 2007-09-28 08:13:10 +0000 |
commit | 9d1204aa9dfcd20c61c08881a36e4e3ecb019e50 (patch) | |
tree | 5c579c4b4978382b1120d5d8797b4a427992f11a /emulators/doscmd | |
parent | 89e92a07314a0a015a50f57908550f9c7d8dca37 (diff) | |
download | ports-9d1204aa9dfcd20c61c08881a36e4e3ecb019e50.tar.gz ports-9d1204aa9dfcd20c61c08881a36e4e3ecb019e50.zip |
Notes
Diffstat (limited to 'emulators/doscmd')
-rw-r--r-- | emulators/doscmd/files/patch-desqview-timeslice | 36 | ||||
-rw-r--r-- | emulators/doscmd/files/patch-quietmode | 317 |
2 files changed, 353 insertions, 0 deletions
diff --git a/emulators/doscmd/files/patch-desqview-timeslice b/emulators/doscmd/files/patch-desqview-timeslice new file mode 100644 index 000000000000..0e5c085f5f60 --- /dev/null +++ b/emulators/doscmd/files/patch-desqview-timeslice @@ -0,0 +1,36 @@ +--- /usr/ports/emulators/doscmd/work/doscmd-20040330/bios.c Mon Mar 29 16:00:00 2004 ++++ bios.c Mon May 1 18:39:31 2006 +@@ -31,6 +31,7 @@ + */ + + #include <sys/cdefs.h> ++#include <time.h> + __FBSDID("$FreeBSD: projects/doscmd/bios.c,v 1.9 2002/03/07 12:52:26 obrien Exp $"); + + #include "doscmd.h" +@@ -110,6 +111,7 @@ + static void + int15(regcontext_t *REGS) + { ++ const struct timespec rqtp={0,1}; + R_FLAGS &= ~PSL_C; + + switch (R_AH) { +@@ -119,6 +121,17 @@ + break; + case 0x04: /* Set ABIOS table */ + R_FLAGS |= PSL_C; /* We don't support it */ ++ break; ++ case 0x10: /* DesqView */ ++ switch (R_AL) { ++ case 0x00: /* Give up CPU time */ ++ nanosleep(&rqtp, NULL); ++ break; ++ case 0x22: /* Get version */ ++ R_BH = 0x0a; /* Use v2.0 for timeslice support */ ++ R_BL = 0x01; ++ break; ++ } + break; + case 0x4f: /* Keyboard intercept */ + debug(D_TRAPS | 0x15, "BIOS: Keyboard intercept\n"); diff --git a/emulators/doscmd/files/patch-quietmode b/emulators/doscmd/files/patch-quietmode new file mode 100644 index 000000000000..c0776359fe0f --- /dev/null +++ b/emulators/doscmd/files/patch-quietmode @@ -0,0 +1,317 @@ +diff -u ./debug.c /home/admin/doscmd.working/doscmd-20040330/debug.c +--- ./debug.c Mon Mar 29 16:00:00 2004 ++++ /home/admin/doscmd.working/doscmd-20040330/debug.c Wed May 3 13:58:35 2006 +@@ -106,7 +106,7 @@ + + dead = 1; + +- if (xmode) { ++ if (xmode && !quietmode) { + char buf[1024]; + const char *m; + +diff -u ./dos.c /home/admin/doscmd.working/doscmd-20040330/dos.c +--- ./dos.c Mon Mar 29 16:00:00 2004 ++++ /home/admin/doscmd.working/doscmd-20040330/dos.c Wed May 3 13:58:35 2006 +@@ -625,9 +625,12 @@ + { + int n; + +- /* XXX this is pretty bogus, actually */ +- if (!xmode) { +- R_AL = 0xff; /* no X mode, always claim data available */ ++ if (quietmode && !xmode) { ++ const struct timespec rqtp={0,1}; ++ ++ /* In case of camping */ ++ nanosleep(&rqtp, NULL); ++ R_AL = 0; + return(0); + } + /* XXX tty_peek is broken */ +diff -u ./doscmd.c /home/admin/doscmd.working/doscmd-20040330/doscmd.c +--- ./doscmd.c Wed May 3 14:06:55 2006 ++++ /home/admin/doscmd.working/doscmd-20040330/doscmd.c Wed May 3 13:58:35 2006 +@@ -64,6 +64,7 @@ + int capture_fd = -1; + int dead = 0; + int xmode = 0; ++int quietmode = 0; + int booting = 0; + int raw_kbd = 0; + int timer_disable = 0; +@@ -226,7 +227,7 @@ + kbd_init(); + kbd_bios_init(); + video_init(); +- if (xmode) ++ if (xmode || quietmode) + mouse_init(); + video_bios_init(); + disk_bios_init(); +@@ -511,7 +512,7 @@ + FILE *fp; + char *col; + +- while ((c = getopt(argc, argv, "234AbCc:Dd:EFGHIi:kLMOo:Pp:RrS:TtU:vVxXYz")) != -1) { ++ while ((c = getopt(argc, argv, "234AbCc:Dd:EFGHIi:kLMOo:PpQ:RrS:TtU:vVxXYz")) != -1) { + switch (c) { + case '2': + debug_flags |= D_TRAPS2; +@@ -620,6 +621,9 @@ + define_output_port_handler(p++, outb_port); + } + break; ++ case 'Q': ++ quietmode = 1; ++ break; + case 'R': + debug_flags |= D_REDIR; + break; +@@ -826,7 +830,7 @@ + done(regcontext_t *REGS, int val) + { + if (curpsp < 2) { +- if (xmode) { ++ if (xmode && !quietmode) { + const char *m; + + tty_move(24, 0); +@@ -861,7 +865,7 @@ + coq = coq->next; + c->func(c->arg); + } +- if (!xmode) /* XXX not for bootmode */ ++ if (!(xmode || quietmode)) /* XXX not for bootmode */ + puts("\n"); + exit(status); + } +diff -u ./doscmd.h /home/admin/doscmd.working/doscmd-20040330/doscmd.h +--- ./doscmd.h Wed May 3 14:06:55 2006 ++++ /home/admin/doscmd.working/doscmd-20040330/doscmd.h Wed May 3 13:58:35 2006 +@@ -175,6 +175,7 @@ + extern int capture_fd; + extern int dead; + extern int xmode; ++extern int quietmode; + extern int booting; + extern int raw_kbd; + extern int timer_disable; +diff -u ./int10.c /home/admin/doscmd.working/doscmd-20040330/int10.c +--- ./int10.c Mon Mar 29 16:00:00 2004 ++++ /home/admin/doscmd.working/doscmd-20040330/int10.c Wed May 3 13:58:35 2006 +@@ -57,7 +57,7 @@ + + switch (R_AH) { + case 0x00: /* Set display mode */ +- if (!xmode) ++ if (!(xmode || quietmode)) + goto unsupported; + init_mode(R_AL); + break; +@@ -94,12 +94,12 @@ + break; + } + case 0x02: /* Position cursor */ +- if (!xmode) ++ if (!(xmode || quietmode)) + goto unsupported; + tty_move(R_DH, R_DL); + break; + case 0x03: /* Read cursor position */ +- if (!xmode) ++ if (!(xmode || quietmode)) + goto unsupported; + tty_report(&i, &j); + R_DH = i; +@@ -111,7 +111,7 @@ + debug(D_VIDEO, "Select current display page %d\n", R_AL); + break; + case 0x06: /* initialize window/scroll text upward */ +- if (!xmode) ++ if (!(xmode || quietmode)) + goto unsupported; + if (R_AL == 0) /* clear screen */ + R_AL = DpyRows + 1; +@@ -120,7 +120,7 @@ + R_AL, R_BH << 8); + break; + case 0x07: /* initialize window/scroll text downward */ +- if (!xmode) ++ if (!(xmode || quietmode)) + goto unsupported; + if (R_AL == 0) /* clear screen */ + R_AL = DpyRows + 1; +@@ -129,24 +129,24 @@ + R_AL, R_BH << 8); + break; + case 0x08: /* read character/attribute */ +- if (!xmode) ++ if (!(xmode || quietmode)) + goto unsupported; + i = tty_char(-1, -1); + R_AX = i; + break; + case 0x09: /* write character/attribute */ +- if (!xmode) ++ if (!(xmode || quietmode)) + goto unsupported; + tty_rwrite(R_CX, R_AL, R_BL << 8); + break; + case 0x0a: /* write character */ +- if (!xmode) ++ if (!(xmode || quietmode)) + goto unsupported; + debug(D_HALF, "Int 10:0a: Write char: %02x\n", R_AL); + tty_rwrite(R_CX, R_AL, -1); + break; + case 0x0b: /* set border color */ +- if (!xmode) ++ if (!(xmode || quietmode)) + goto unsupported; + video_setborder(R_BL); + break; +@@ -165,7 +165,7 @@ + R_BH = 0;/*ActivePage *//* display page */ + break; + case 0x10: +- if (!xmode) ++ if (!(xmode || quietmode)) + goto unsupported; + switch (R_AL) { + case 0x00: /* Set single palette register */ +@@ -350,7 +350,7 @@ + } + break; + case 0x12: /* Alternate function select */ +- if (!xmode) ++ if (!(xmode || quietmode)) + goto unsupported; + switch (R_BL) { + case 0x10: /* Read EGA/VGA config */ +@@ -372,7 +372,7 @@ + } + break; + case 0x13: /* write character string */ +- if (!xmode) ++ if (!(xmode || quietmode)) + goto unsupported; + addr = (char *)MAKEPTR(R_ES, R_BP); + switch (R_AL & 0x03) { +@@ -407,7 +407,7 @@ + } + break; + case 0x1a: +- if (!xmode) ++ if (!(xmode || quietmode)) + goto unsupported; + R_AL = 0x1a; /* I am VGA */ + R_BL = 8; /* Color VGA */ +diff -u ./int16.c /home/admin/doscmd.working/doscmd-20040330/int16.c +--- ./int16.c Mon Mar 29 16:00:00 2004 ++++ /home/admin/doscmd.working/doscmd-20040330/int16.c Wed May 3 13:58:35 2006 +@@ -78,7 +78,7 @@ + void + int16(regcontext_t *REGS) + { +- if (!xmode && !raw_kbd) { ++ if (!(xmode || raw_kbd || quietmode)) { + if (vflag) dump_regs(REGS); + fatal ("int16 func 0x%x only supported in X mode\n", R_AH); + } +diff -u ./tty.c /home/admin/doscmd.working/doscmd-20040330/tty.c +--- ./tty.c Wed May 3 14:06:55 2006 ++++ /home/admin/doscmd.working/doscmd-20040330/tty.c Wed May 3 13:58:35 2006 +@@ -34,6 +34,7 @@ + __FBSDID("$FreeBSD: projects/doscmd/tty.c,v 1.25 2002/04/12 21:18:05 charnier Exp $"); + + #include <sys/ioctl.h> ++#include <sys/select.h> + #include <sys/time.h> + #include <sys/types.h> + #include <sys/mman.h> +@@ -1471,7 +1472,8 @@ + { + if (attr == TTYF_REDIRECT) { + if (redirect1) { +- write(1, &c, 1); ++ if(!quietmode) ++ write(1, &c, 1); + return; + } + attr = -1; +@@ -1487,8 +1489,10 @@ + #ifndef NO_X + XBell(dpy, 0); + #endif +- } else ++ } else { ++ if(!quietmode) + write(1, "\007", 1); ++ } + break; + case 0x08: + if (row > (height - 1) || col > width) +@@ -1658,20 +1662,14 @@ + { + int r; + ++ if(quietmode && !xmode) ++ return(0); ++ + if ((r = nextchar) != 0) { + nextchar = 0; + return(r & 0xff); + } + +- if ((flag & TTYF_REDIRECT) && redirect0) { +- char c; +- if (read(STDIN_FILENO, &c, 1) != 1) +- return(-1); +- if (c == '\n') +- c = '\r'; +- return(c); +- } +- + if (KbdEmpty()) { + if (flag & TTYF_BLOCK) { + while (KbdEmpty()) +@@ -1858,6 +1856,22 @@ + int + KbdEmpty() + { ++ if(!xmode) { ++ fd_set rd; ++ struct timeval tv; ++ ++ FD_ZERO(&rd); ++ FD_SET(STDIN_FILENO, &rd); ++ tv.tv_sec=0; ++ tv.tv_usec=0; ++ if(select(STDIN_FILENO+1, &rd, NULL, NULL, &tv)==1) { ++ char ch=0; ++ read(STDIN_FILENO, &ch, 1); ++ if(ch == '\n') ++ ch = '\r'; ++ KbdWrite(ch); ++ } ++ } + return(K_NEXT == K_FREE); + } + +diff -u ./video.c /home/admin/doscmd.working/doscmd-20040330/video.c +--- ./video.c Wed May 3 14:06:55 2006 ++++ /home/admin/doscmd.working/doscmd-20040330/video.c Wed May 3 13:58:35 2006 +@@ -276,9 +276,9 @@ + define_output_port_handler(GDC_DataPort, video_outb); + } + +- redirect0 = isatty(0) == 0 || !xmode ; +- redirect1 = isatty(1) == 0 || !xmode ; +- redirect2 = isatty(2) == 0 || !xmode ; ++ redirect0 = isatty(0) == 0 || !(xmode || quietmode); ++ redirect1 = isatty(1) == 0 || !(xmode || quietmode); ++ redirect2 = isatty(2) == 0 || !(xmode || quietmode); + + return; + } |