From 1a3148e9c71693ab5365cabc2d7ed2992873f670 Mon Sep 17 00:00:00 2001 From: waltje Date: Fri, 8 Jun 2018 19:43:22 -0400 Subject: [PATCH] More fixed and updates. No new code or features. --- src/config.c | 8 +- src/devices/disk/hdc_esdi_at.c | 16 ++- src/devices/disk/hdc_st506_at.c | 24 ++++- src/devices/disk/hdd.c | 10 +- src/devices/disk/hdd.h | 6 +- src/devices/input/mouse.h | 3 +- src/devices/input/mouse_bus.c | 25 ++++- src/devices/system/nvr_at.c | 19 ++-- src/machines/m_europc.c | 15 ++- src/ui/lang/VARCem-BY.str | Bin 0 -> 30798 bytes src/ui/lang/VARCem-CZ.str | Bin 15812 -> 30860 bytes src/ui/lang/VARCem-LT.str | Bin 0 -> 31142 bytes src/win/VARCem-common.rc | 6 +- src/win/win_about.c | 14 +-- src/win/win_ddraw.cpp | 170 ++++++++++++++++++++++---------- src/win/win_lang.c | 56 ++++++++--- src/win/win_new_image.c | 11 ++- src/win/win_settings_disk.h | 12 +-- 18 files changed, 267 insertions(+), 128 deletions(-) create mode 100644 src/ui/lang/VARCem-BY.str create mode 100644 src/ui/lang/VARCem-LT.str diff --git a/src/config.c b/src/config.c index 5f18d1d..4eeb9ff 100644 --- a/src/config.c +++ b/src/config.c @@ -12,7 +12,7 @@ * it on Windows XP, and possibly also Vista. Use the * -DANSI_CFG for use on these systems. * - * Version: @(#)config.c 1.0.28 2018/05/24 + * Version: @(#)config.c 1.0.29 2018/06/06 * * Authors: Fred N. van Kempen, * Miran Grca, @@ -1082,15 +1082,15 @@ static void save_disks(const char *cat) { char temp[24], tmp2[64]; - char *p; + const char *str; int c; for (c = 0; c < HDD_NUM; c++) { sprintf(temp, "hdd_%02i_parameters", c+1); if (hdd_is_valid(c)) { - p = hdd_bus_to_string(hdd[c].bus, 0); + str = hdd_bus_to_string(hdd[c].bus, 0); sprintf(tmp2, "%u, %u, %u, %d, %s", - hdd[c].spt, hdd[c].hpc, hdd[c].tracks, hdd[c].wp, p); + hdd[c].spt, hdd[c].hpc, hdd[c].tracks, hdd[c].wp, str); config_set_string(cat, temp, tmp2); } else { config_delete_var(cat, temp); diff --git a/src/devices/disk/hdc_esdi_at.c b/src/devices/disk/hdc_esdi_at.c index 4303244..7bfe213 100644 --- a/src/devices/disk/hdc_esdi_at.c +++ b/src/devices/disk/hdc_esdi_at.c @@ -8,7 +8,7 @@ * * Driver for the ESDI controller (WD1007-vse1) for PC/AT. * - * Version: @(#)hdc_esdi_at.c 1.0.10 2018/05/06 + * Version: @(#)hdc_esdi_at.c 1.0.11 2018/06/08 * * Authors: Fred N. van Kempen, * Miran Grca, @@ -235,7 +235,10 @@ hdc_writew(uint16_t port, uint16_t val, void *priv) dev->pos = 0; dev->status = STAT_BUSY; timer_clock(); - dev->callback = 6LL*HDC_TIME; + + /* 390.625 us per sector at 10 Mbit/s = 1280 kB/s. */ + dev->callback = (3125LL * TIMER_USEC) / 8LL; + timer_update_outstanding(); } } @@ -412,6 +415,10 @@ hdc_write(uint16_t port, uint8_t val, void *priv) dev->status = STAT_BUSY; } dev->fdisk = val; + + /* Lower IRQ on IRQ disable. */ + if ((val & 2) && !(dev->fdisk & 0x02)) + picintc(1 << 14); break; } } @@ -435,7 +442,10 @@ hdc_readw(uint16_t port, void *priv) next_sector(dev); dev->status = STAT_BUSY; timer_clock(); - dev->callback = 6LL*HDC_TIME; + + /* 390.625 us per sector at 10 Mbit/s = 1280 kB/s. */ + dev->callback = (3125LL * TIMER_USEC) / 8LL; + timer_update_outstanding(); } else { ui_sb_icon_update(SB_HDD|HDD_BUS_ESDI, 0); diff --git a/src/devices/disk/hdc_st506_at.c b/src/devices/disk/hdc_st506_at.c index f0889c0..e9bed03 100644 --- a/src/devices/disk/hdc_st506_at.c +++ b/src/devices/disk/hdc_st506_at.c @@ -12,7 +12,7 @@ * based design. Most cards were WD1003-WA2 or -WAH, where the * -WA2 cards had a floppy controller as well (to save space.) * - * Version: @(#)hdc_st506_at.c 1.0.8 2018/05/06 + * Version: @(#)hdc_st506_at.c 1.0.9 2018/06/08 * * Authors: Fred N. van Kempen, * Sarah Walker, @@ -131,17 +131,21 @@ typedef struct { static __inline void irq_raise(hdc_t *dev) { +#if 0 /* If not already pending.. */ if (! dev->irqstat) { +#endif /* If enabled in the control register.. */ - if (! (dev->fdisk&0x02)) { + if (! (dev->fdisk & 0x02)) { /* .. raise IRQ14. */ picint(1<<14); } /* Remember this. */ dev->irqstat = 1; +#if 0 } +#endif } @@ -151,7 +155,7 @@ irq_lower(hdc_t *dev) /* If raised.. */ if (dev->irqstat) { /* If enabled in the control register.. */ - if (! (dev->fdisk&0x02)) { + if (! (dev->fdisk & 0x02)) { /* .. drop IRQ14. */ picintc(1<<14); } @@ -411,7 +415,10 @@ hdc_writew(uint16_t port, uint16_t val, void *priv) dev->pos = 0; dev->status = STAT_BUSY; timer_clock(); - dev->callback = 6LL*ST506_TIME; + + /* 781.25 us per sector at 5 Mbit/s = 640 kB/s. */ + dev->callback = ((3125LL * TIMER_USEC) / 4LL); + timer_update_outstanding(); } } @@ -481,6 +488,10 @@ hdc_write(uint16_t port, uint8_t val, void *priv) timer_update_outstanding(); } dev->fdisk = val; + + /* Lower IRQ on IRQ disable. */ + if ((val & 2) && !(dev->fdisk & 0x02)) + picintc(1 << 14); break; } } @@ -503,7 +514,10 @@ hdc_readw(uint16_t port, void *priv) next_sector(dev); dev->status = STAT_BUSY; timer_clock(); - dev->callback = 6LL*ST506_TIME; + + /* 781.25 us per sector at 5 Mbit/s = 640 kB/s. */ + dev->callback = ((3125LL * TIMER_USEC) / 4LL); + timer_update_outstanding(); } else { ui_sb_icon_update(SB_HDD|HDD_BUS_ST506, 0); diff --git a/src/devices/disk/hdd.c b/src/devices/disk/hdd.c index c1b9b90..06fc783 100644 --- a/src/devices/disk/hdd.c +++ b/src/devices/disk/hdd.c @@ -8,7 +8,7 @@ * * Common code to handle all sorts of hard disk images. * - * Version: @(#)hdd.c 1.0.7 2018/05/24 + * Version: @(#)hdd.c 1.0.8 2018/06/06 * * Authors: Fred N. van Kempen, * Miran Grca, @@ -83,7 +83,7 @@ hdd_count(int bus) int c = 0; int i; - for (i=0; i * Miran Grca, @@ -110,8 +110,8 @@ extern int hdd_do_log; extern void hdd_log(const char *fmt, ...); extern int hdd_init(void); extern int hdd_count(int bus); -extern int hdd_string_to_bus(char *str, int cdrom); -extern char *hdd_bus_to_string(int bus, int cdrom); +extern int hdd_string_to_bus(const char *str, int cdrom); +extern const char *hdd_bus_to_string(int bus, int cdrom); extern int hdd_is_valid(int c); extern int hdd_image_load(int id); diff --git a/src/devices/input/mouse.h b/src/devices/input/mouse.h index 7394799..3282be0 100644 --- a/src/devices/input/mouse.h +++ b/src/devices/input/mouse.h @@ -8,7 +8,7 @@ * * Definitions for the mouse driver. * - * Version: @(#)mouse.h 1.0.5 2018/04/19 + * Version: @(#)mouse.h 1.0.6 2018/06/06 * * Authors: Fred N. van Kempen, * Miran Grca, @@ -80,6 +80,7 @@ extern const device_t *mouse_get_device(int mouse); extern void *mouse_ps2_init(const device_t *); extern const device_t mouse_logibus_device; +extern const device_t mouse_logibus_internal_device; extern const device_t mouse_msinport_device; #if 0 extern const device_t mouse_genibus_device; diff --git a/src/devices/input/mouse_bus.c b/src/devices/input/mouse_bus.c index 0d91814..21756f3 100644 --- a/src/devices/input/mouse_bus.c +++ b/src/devices/input/mouse_bus.c @@ -49,7 +49,7 @@ * * Based on an early driver for MINIX 1.5. * - * Version: @(#)mouse_bus.c 1.0.7 2018/05/06 + * Version: @(#)mouse_bus.c 1.0.8 2018/06/06 * * Author: Fred N. van Kempen, * @@ -101,6 +101,7 @@ #define MOUSE_PORT 0x023c /* default */ #define MOUSE_IRQ 5 /* default */ +#define MOUSE_IRQ_INTERNAL 2 /* IRQ for internal mice */ #define MOUSE_BUTTONS 2 /* default */ #define MOUSE_DEBUG 0 @@ -709,10 +710,15 @@ bm_init(const device_t *info) memset(dev, 0x00, sizeof(mouse_t)); dev->name = info->name; dev->type = info->local; - dev->irq = device_get_config_int("irq"); - i = device_get_config_int("buttons"); - if (i > 2) - dev->flags |= FLAG_3BTN; + if (info->config != NULL) { + dev->irq = device_get_config_int("irq"); + i = device_get_config_int("buttons"); + if (i > 2) + dev->flags |= FLAG_3BTN; + } else { + dev->irq = MOUSE_IRQ_INTERNAL; /*hardwired*/ + i = 2; + } pclog("MOUSE: %s (I/O=%04x, IRQ=%d, buttons=%d)\n", dev->name, MOUSE_PORT, dev->irq, i); @@ -802,6 +808,15 @@ const device_t mouse_logibus_device = { bm_config }; +const device_t mouse_logibus_internal_device = { + "Logitech Bus Mouse (Internal)", + DEVICE_ISA, + MOUSE_LOGIBUS, + bm_init, bm_close, NULL, + bm_poll, NULL, NULL, NULL, + NULL +}; + const device_t mouse_msinport_device = { "Microsoft Bus Mouse (InPort)", DEVICE_ISA, diff --git a/src/devices/system/nvr_at.c b/src/devices/system/nvr_at.c index 654eaab..77ad712 100644 --- a/src/devices/system/nvr_at.c +++ b/src/devices/system/nvr_at.c @@ -189,7 +189,7 @@ * including the later update (DS12887A) which implemented a * "century" register to be compatible with Y2K. * - * Version: @(#)nvr_at.c 1.0.8 2018/05/06 + * Version: @(#)nvr_at.c 1.0.9 2018/06/07 * * Authors: Fred N. van Kempen, * Miran Grca, @@ -488,15 +488,18 @@ timer_tick(nvr_t *nvr) local_t *local = (local_t *)nvr->data; /* Only update it there is no SET in progress. */ - if (! (nvr->regs[RTC_REGB] & REGB_SET)) { - /* Set the UIP bit, announcing the update. */ - local->stat = REGA_UIP; + if (nvr->regs[RTC_REGB] & REGB_SET) return; - timer_recalc(nvr, 0); + /* Set the UIP bit, announcing the update. */ + local->stat = REGA_UIP; - /* Schedule the actual update. */ - local->ecount = (int64_t)((244.0 + 1984.0) * TIMER_USEC); - } +#if 0 + /* Not sure if this is needed here. */ + timer_recalc(nvr, 0); +#endif + + /* Schedule the actual update. */ + local->ecount = (int64_t)((244.0 + 1984.0) * TIMER_USEC); } diff --git a/src/machines/m_europc.c b/src/machines/m_europc.c index c09cb11..4f90600 100644 --- a/src/machines/m_europc.c +++ b/src/machines/m_europc.c @@ -66,7 +66,7 @@ * bit 1: b8000 memory available * 0000:046a: 00 jim 250 01 jim 350 * - * Version: @(#)m_europc.c 1.0.14 2018/05/12 + * Version: @(#)m_europc.c 1.0.15 2018/06/06 * * Author: Fred N. van Kempen, * @@ -264,11 +264,6 @@ rtc_start(nvr_t *nvr) rtc_time_get(nvr->regs, &tm); nvr_time_set(&tm); } - -#if 0 - /* Start the RTC - BIOS will do this. */ - nvr->regs[MRTC_CTRLSTAT] = 0x01; -#endif } @@ -281,7 +276,7 @@ rtc_checksum(uint8_t *ptr) /* Calculate all bytes with XOR. */ sum = 0x00; - for (i=MRTC_CONF_A; i<=MRTC_CONF_E; i++) + for (i = MRTC_CONF_A; i <= MRTC_CONF_E; i++) sum += ptr[i]; return(sum); @@ -620,7 +615,11 @@ europc_boot(const device_t *info) /* Set up game port. */ b = (sys->nvr.regs[MRTC_CONF_C] & 0xfc); if (mouse_type == MOUSE_INTERNAL) { - b |= 0x01; /* enable port as MOUSE */ + /* Enable the Logitech Bus Mouse device. */ + device_add(&mouse_logibus_internal_device); + + /* Configure the port for (Bus Mouse Compatible) Mouse. */ + b |= 0x01; } else if (game_enabled) { b |= 0x02; /* enable port as joysticks */ } diff --git a/src/ui/lang/VARCem-BY.str b/src/ui/lang/VARCem-BY.str new file mode 100644 index 0000000000000000000000000000000000000000..c87a87e8c8b44bfb9fac76e734b242f0fc770c0d GIT binary patch literal 30798 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 AoB#j- literal 0 HcmV?d00001 diff --git a/src/ui/lang/VARCem-CZ.str b/src/ui/lang/VARCem-CZ.str index 3308eacd7f3c25f59f5a05b8a18682b8b10f8e7f..fca6bfc061c181f5d154094d25ca82ad258a1b63 100644 GIT binary patch literal 30860 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

!1%-JcycY?|-5?Ap*L=a{YchDP1@`qEpfCZ= zAHmulptdEb^d`Pf3{ed#--5wy3{Z$e)_j24GT2&8Zy9133>dT+^cX;S12h*6;)gLL zGJ@tnG8jN53aHP4=$BN&b!dTEkP-vrPY{OqHI%^<+#&_dJLQ7cL4oE*KrKg5i36%Z zA@epG44@i>_^}gz25$z?oSPB@hy}43S6Kxb(S(fjLB@kXaSoc50@XZ(bb>}bK_jg0 z44`p*S8xr7+*ShReEeoOfotb*@OUmLJ_5jF9iTi8YO#Z6zx5bE5Ml~u$f347L92Qo z^Hrd}J!U#FCTRo;H1-V|5e2!c7TOR0OQ3`Sjq`)nmN_wi<_28AAp)uaAUP5gqxl3( z0L^89#)c94LG6D;X-bS4ps`IiXbOm80F8U(fmgl|vKthikaQEqP{~lhK%6enY!GO+ z0u)XmV11C-!jUzzhcU!6Acr(4J%IX6S>U-?P(1@0r!8TC^i{KP z#sjPsiYrz@b9C+u@eH6@D$v+{2srJBfY&!c+9CN2pq@CW{|g%5$z-Tw1dVRO+S8!c z7O0;HYP*0|SAyIKaviAlD_|&Q0F9SI+91TYKS~+u7(u-XLah(b+%PEL#e-83Xg&dy zia_}e(u#!CvxxChP&*g2;uO?o1J!Gwc2g;M)d#4T46FNi!L1iiivfQMM%W$>o}UKI zMNz|kP=C1qT$|#zA2eqk2A%VCV~7W@rvr_jgW8m744Djwk?vFic?sPlNDCO0;y@t< zYu&<9EvPgHVbr=1xkLwz);NO06|~kEG>2eJ(&#s+9Q6m!n}EX8A8p+;qFzBy(~urv z5JNlz#6C#x0|w z1kI;`dYzyV8c+_&v%kB(*458q4 z%OJHy;4ya4ib_x@rh?NVq~Dsz2nun~91JYKXE9(a(_mxP*$kh-Yt_q;dZVCGlqv>L zID_U9Ambj87|92ZfMDPekJ_gWO7bu;8+z6V%$YTJl`~t0D1kI;_ zVimOB3S>8E<`^{B4q935%Am(k!cYNT2M#GS2 zC}<=SG%5{gHC4iEf7CDp#SCP&2(+sLRKkH;+@Np+%{RfyI3w_Se^BZoG*1ee`vk3h z0F5kxN;zcHu*D%Z`$4@H&`2I=MFwpBCnWYjJtg8|FPH(ecFLUrG_wq9r6@5#`c|ms zLR^Hu3^0YpojZ7@E)QDg5DG<5ZCwst69Ag21I6Sn3I7GR%wg4ZTIWXJ)}LWBC`B@7UAh%?0!Y>FX+DtMeEA6&A5 z=C)E9U}l2WN|S1?1p{QJ8Z-}QN_Dd#wYU-0&4twQh74v51`MEe{Z2%s2@3{DO$XYw zK$<>CIS*->kYXQX49b{fcS6#x83SnSj1>DIDb*a@Vk1Q#B!z;~0B97>mx0*ugr!M6 z22kkC!;1m`F= zYVNjVfTShd=7H8#m@rrnZ5||zf!4lTFj$b}Ge|0nV(?@LU{HXLn-EhrfOe{Z>LHj; zP+S;5a|EF>9CKa~R0~1IzKE@bTp2>ZEBHWbWrM+`6!M4^sFg@)U4tPg&soTcEKi(3m@Mra{Ugbf1+mR6=K{KqI4|wm=?uWe@gvCMUOmb{c|O zs-QM4WJL`qq(ONQfBr!(hd?z8B#xu-&bVVwE9fRc;utb62wGVkzz_;=8KdVVbiI%` zb!H$%4Di%6{yr8uFe9*45YjO z{0Qoo zL;Afi5m-6{$q*A?ptuM50Nq8PHZ`bDgV3P`I^jMzs{cUhK`GrAJiAR?s)Y5jy%_SLE2tsm2C=#!v4XA}6u-ozELhJPQ@;^W zF>1~Li49Es#zg6d^_?;Gn?UuG6O)KB9MBlAF}M#%N|^=fGeY|Guofw3-4tkz3TY)4 z$Q(#r2^!r-ZWDvri=fp~pi$Ys;Fct){S4~;f#%de^Xr6T4`e!|1r8c%2koc?)uxaZ zDX5kM?bi!s&;|S65E`2JN+*zcka7)FkHTi5K>KSzZF10>9ndZ%&^|8W+y*J>P|b2< z0F9S|M*cu`Hf+`uG};C+lbqNFjiG_|e1hixv!Qv{1l*e@zV!%E56ZhP3`Gp3;Bz)W z>#Ir_q#23Hi6H%u5*9P2L30nF*=%CXf#hgN&jyt4Kye9LZ3Z%g3i}eG(ip4`2enc`b2vHR(M4Dv3Stg%rI!i3 zM#pa!F(nzuELhqHt;GP%3_yB1pdKw~oE#Kp3Jk=QY9O;9X+IboTcDW*(E3nBI1%qZ zSiKL5b!_Iq{6N8SO21q?9WkfK7(rYFIFC(aa zbY=kUV}qqx{3Q^qHbgc7wAY~wJkt;AACNlwY{CE=eFn|ygJvf)86Gl#R!e|l7F620 z64g%vnFDFPctclHLGmIb<&tI&q|U@FDL^X_K(oJ~Q<*?>0Yz|^krTfj;Q3cjI}0{G z0L$~B985}m2vHA;S?nVf#KbMg3`kw5#sHh4AZ{)jq!UulsWG_1S2BZEUO;9ki8lq3 z!_^r4!Se`^bsfZ%S|As|a&!`dG$SbWK=KNt*20&jL3&}i7}OU8%>x$^QBs2RL249d zB2`1`4G$t!L(+0Ek*XmnmbeiDPzeudJ%QAN=CeR6j)K8!22~kK!SxO@O-z3qWF{o_ zgn{=`fLc1BoCk_~VrH5_`XOluRX@meW#AeJG%}zGUbRQ8d9YZ8t->cJEr9xMpnL?{ z#SL0@N1Pr=%tFc-kc&a}Q7LqeKLC8D7_ngpiFJfY5Z#c`7tr{>m*y3Lz-2j@U2bl+&Lx#s z&4r{ZRC5t~MGz${C2ohLIA`zdXz$VkoaaGlg*bh%5lzs{40tsP z33h_!LqMqtbJiQQ2gHd%6J96dFZDtF8<07WF=S%h4XL3(ZFJBWWhr=l6leq!)Kh}2 ze*vx40FAnW)^mYIT|J7Qp!sx2T?<;pg1a?GT)7L%Um%yk{Eb+%1rmus+p!1=H<()x zD;Pj6zhVZ^h%9Kn1k~RHt&stxPEZYv2s2PQ2b#?V*^$Kn8Yc#gV1r6u*xndW{|vOo zvy$j=h2&+>3NKLa2ehjak-K0!Yha~ADR>P&X#IW$LkfdEgEe?9Kj_3T7`u!CBtzb+ zenRONQaXTo*Pxjmkgq|#JrD5uP*50w{0{1y!dwd)Hq}b%Iv#@?Pl1jCsflwrh-;ygUUEk+RhdXkbDJe2NM^zkQOB=ZCy|w3Doigt?U7< z`UH(@fkMHU0kn3AQ2!sX&H$ns6ek+svrRyIoIpGKUgB)0qw0n9+cdx@8-UydnsEZP z4L~ahL1XHur7I{jRT+{QtcWxn63+?@(F~wnETA(JAUg;_b9<0EUeJzz(0V zr3|q+QX;CmA#E|lXa#aR24BAu)f7lv`!T37Kz2ZaLV!GzASpnNAqu<-yo>?V76H|* zh%<0NEilkHJ!mZjs3r!ra}e!9?CA{EwUE|{8Utu0J7`x8s67N5Apw=y=xqjM-Jn%t zpj3ifgF<2xG~2HMKEVRidIp_k0oo-@*gdfI&|zph77>0z>{m2ku!pyh43XH7m4lF$ z6J%8%gbmsskOpm0K~7GEh$k}?!p#Al2AvI613Gb}0LlinxpJXw0OU|2KfZ~v31n+JG{qs?N?OPglkXvAFZIoZl*X}UdxXyL0oBd0aV-z%4HJaxOOU<#;PV7Q zCkcXVB)0wpoy!I)vr$7DWFG7U5?D$HtqskG#y#jn*PvZ7s^BwxATGsM9+*IPi$GczpfW5CeEtWbFAb{0Av=CxD@h5t7SzTE zxfa&y2e}Cp1F8%L48{zZ;E^lh>t0yz6*Xl*%m&3EC@w+e0jv}Poq+}^XC1+(aDmRO z1J!7t`9zp{VoOU{FPL<@35PsrzXK?gf{9u=Y{_5_U1twl2?DVJ6c->2*#!zZOA@qy z3X}pI!8ekC=4v6k$v|m{_%je7XQjf<*i>RrV{l~12A>-Ou@^l}A$t7~dmwFXHHHud zP~DaS9&3i24+9#{AkGX(O{K9AO@l@vkWb+N z&FFzn!Y9sUkkXs5nNHvyC}=+@apuBW)*zEXV_l#&I%wrBsN^Ni1X#N{6tu^VA&&vn znnP|kW2O_(y2?}r&{{qX=n5TTdt{(`&$+SMT4=;a!yM+TV@ zLyVV#`YVvrPlyQ(&^a`q92NlX^MG1v$aO5}z7)(6S;!0&s7(f18w^=93_2kQ)W0Fl zPDpwKrCLzm666a+xPV&Gpp{!O3?*1nHE8t+Xto`6u5SU3o*`=LHiY)z)fhngRzWER zR2#tZ3ur7EG&TiV*#eoN0hNfb)PO$+8!|xBq9cPE18C*~bhi*_EERN85UiB~i5JM( zEuhm~VW}15OVExF1%^oQxgVfbFeL1-msE%pXvYA#lLNF43$%*?gmLeDMGXsB+Xpl{ zrv|>+3Zxr^iMKl(e0v9|^##fg!O%OqKw$`4Q~s@kQ(?rU{i()oT&v}AFNC@BtZ`(MT2&fsWFgZ7o?O_V=#i- zMNIs=f$u^C^~)hAAc8^&WT*hIFu>LJ2c4M+8%F_!7ic#hD9qFtKr50#?M+bW1X`s9 zswp8W(}?v6q%=_j-`fPb!weKYpnVz0ZA#3#2{M9H0G@RP&96XeC{X(n|EN057oe35 z!Qk5>92p{^^%TO)R0dqT%TPlU)&hlu1E@{{t-%A8a-eoGsKkY|mO<_$-b_f`g6bxa zNuYZILA53*o28Fi2vCa+)V=|g&LDr2XBMnfaKh_L?6n4ZngFE}$Q~NdEtjAZ$U*HMP+K3ARw20- z)aC>6K(`5i;-9z_1UelHRDOWwNkI33K+e{Hq(RVm?;sN)=7Z*%6d2UNCvt-7bkJB9 z=mf|-hI~c^@YpdZClHq!%%N$_i6MkR4ZQ0dbgQKX_^uX^OF(;7K(4{P;tDl&fySIc zr8&erP;b%_d`=5!wL%C(7(P}(<#kB2ydPYwsI9stz~5MN=Bs}S%`Cs3UZ8V3NC zS)e&O;>vK)?Hizbh9J9`GBcsC!!L|EPn1@Gm8oD&U8&E%N~>3hOXP*DTlj7MDPLgt!5y%^B>P;bF^s)1@S zP&)(EdI6O(pwkIK=XI1Yp!S|Xqm!WZAP}3dr#}yHy9abT0i*>1nn@%s^?~ke0qw~K z@Oo%IiE=K=uGena&D literal 15812 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 literal 0 HcmV?d00001 diff --git a/src/win/VARCem-common.rc b/src/win/VARCem-common.rc index 8e74def..e43ea95 100644 --- a/src/win/VARCem-common.rc +++ b/src/win/VARCem-common.rc @@ -8,7 +8,7 @@ * * Common resources for the application. * - * Version: @(#)VARCem-common.rc 1.0.5 2018/06/02 + * Version: @(#)VARCem-common.rc 1.0.6 2018/06/06 * * Author: Fred N. van Kempen, * @@ -197,9 +197,9 @@ BEGIN LTEXT STR_3201,IDC_ABOUT_ICON,5,55,40,10 LTEXT STR_3202,IDC_ABOUT_ICON,50,55,195,30 - LTEXT STR_3203,IDC_ABOUT_ICON,5,85,240,20 + LTEXT STR_3203,IDC_ABOUT_ICON,5,85,240,30 - LTEXT STR_3204,IDC_ABOUT_ICON,5,110,240,10 + LTEXT STR_3204,IDC_ABOUT_ICON,5,115,240,10 PUSHBUTTON STR_LOCALIZE,IDC_LOCALIZE,5,140,60,14 diff --git a/src/win/win_about.c b/src/win/win_about.c index 0887867..468d970 100644 --- a/src/win/win_about.c +++ b/src/win/win_about.c @@ -173,8 +173,9 @@ static BOOL CALLBACK #endif dlg_proc(HWND hdlg, UINT message, WPARAM wParam, LPARAM lParam) { +static HBRUSH brush = NULL; wchar_t temp[128]; -static HBITMAP hBmp; + HBITMAP hBmp; HWND h; switch (message) { @@ -239,17 +240,18 @@ static HBITMAP hBmp; case WM_CTLCOLORSTATIC: if ((HWND)lParam == GetDlgItem(hdlg, IDC_DONATE)) { + /* Grab background color from dialog window. */ HDC hDC = GetDC(hdlg); COLORREF col = GetBkColor(hDC); + /* Set as background color for static controli.. */ hDC = (HDC)wParam; SetBkColor(hDC, col); -#if 1 - return (LRESULT)CreateSolidBrush(col); -#else - return (LRESULT)CreateSolidBrush(RGB(0,255,0)); -#endif + /* .. and also return that as paint color. */ + if (brush == NULL) + brush = CreateSolidBrush(col); + return (LRESULT)brush; } return FALSE; } diff --git a/src/win/win_ddraw.cpp b/src/win/win_ddraw.cpp index a6f0bd3..0ce10b2 100644 --- a/src/win/win_ddraw.cpp +++ b/src/win/win_ddraw.cpp @@ -125,6 +125,92 @@ static const dllimp_t png_imports[] = { #endif +static const char * +GetError(HRESULT hr) +{ + const char *err = "Unknown"; + + switch(hr) { + case DDERR_INCOMPATIBLEPRIMARY: + err = "Incompatible Primary"; + break; + + case DDERR_INVALIDCAPS: + err = "Invalid Caps"; + break; + + case DDERR_INVALIDOBJECT: + err = "Invalid Object"; + break; + + case DDERR_INVALIDPARAMS: + err = "Invalid Parameters"; + break; + + case DDERR_INVALIDPIXELFORMAT: + err = "Invalid Pixel Format"; + break; + + case DDERR_NOALPHAHW: + err = "Hardware does not support Alpha"; + break; + + case DDERR_NOCOOPERATIVELEVELSET: + err = "No cooperative level set"; + break; + + case DDERR_NODIRECTDRAWHW: + err = "Hardware does not support DirectDraw"; + break; + + case DDERR_NOEMULATION: + err = "No emulation"; + break; + + case DDERR_NOEXCLUSIVEMODE: + err = "No exclusive mode available"; + break; + + case DDERR_NOFLIPHW: + err = "Hardware does not support flipping"; + break; + + case DDERR_NOMIPMAPHW: + err = "Hardware does not support MipMap"; + break; + + case DDERR_NOOVERLAYHW: + err = "Hardware does not support overlays"; + break; + + case DDERR_NOZBUFFERHW: + err = "Hardware does not support Z buffers"; + break; + + case DDERR_OUTOFMEMORY: + err = "Out of memory"; + break; + + case DDERR_OUTOFVIDEOMEMORY: + err = "Out of video memory"; + break; + + case DDERR_PRIMARYSURFACEALREADYEXISTS: + err = "Primary Surface already exists"; + break; + + case DDERR_UNSUPPORTEDMODE: + err = "Mode not supported"; + break; + + default: + break; + } + + return(err); +} + + static HBITMAP CopySurface(IDirectDrawSurface4 *pDDSurface) { @@ -181,17 +267,17 @@ bgra_to_rgb(png_bytep *b_rgb, uint8_t *bgra, int width, int height) /* Not strictly needed, but hey.. */ static void -png_error_handler(UNUSED(png_structp arg), const char *str) +png_error_handler(png_structp arg, const char *str) { - pclog("DDraw: PNG error '%s'\n", str); + pclog("DDraw: PNG error '%08lx'\n", str); } /* Not strictly needed, but hey.. */ static void -png_warning_handler(UNUSED(png_structp arg), const char *str) +png_warning_handler(png_structp arg, const char *str) { - pclog("DDraw: PNG warning '%s'\n", str); + pclog("DDraw: PNG warning '%08lx'\n", str); } @@ -219,7 +305,7 @@ SavePNG(const wchar_t *fn, HBITMAP hBitmap) } /* Initialize PNG stuff. */ - png_ptr = PNGFUNC(create_write_struct)(PNG_LIBPNG_VER_STRING, NULL, + png_ptr = PNGFUNC(create_write_struct)(PNG_LIBPNG_VER_STRING, (char *)1234, png_error_handler, png_warning_handler); if (png_ptr == NULL) { (void)fclose(fp); @@ -645,7 +731,7 @@ ddraw_blit(int x, int y, int y1, int y2, int w, int h) static void ddraw_close(void) { - pclog("DDRAW: close (fs=%d)\n", (lpdds_back2 != NULL)?1:0); + pclog("DDRAW: close\n"); video_setblit(NULL); @@ -745,21 +831,42 @@ ddraw_init(int fs) { DDSURFACEDESC2 ddsd; LPDIRECTDRAW lpdd; - HWND h = hwndRender; + HRESULT hr; + DWORD dw; + HWND h; pclog("DDraw: initializing (fs=%d)\n", fs); cgapal_rebuild(); - if (FAILED(DirectDrawCreate(NULL, &lpdd, NULL))) return(0); + hr = DirectDrawCreate(NULL, &lpdd, NULL); + if (FAILED(hr)) { + pclog("DDRAW: cannot create an instance (%s)\n", GetError(hr)); + return(0); + } - if (FAILED(lpdd->QueryInterface(IID_IDirectDraw4, (LPVOID *)&lpdd4))) - return(0); + hr = lpdd->QueryInterface(IID_IDirectDraw4, (LPVOID *)&lpdd4); + if (FAILED(hr)) { + pclog("DDRAW: no interfaces found (%s)\n", GetError(hr)); + return(0); + } lpdd->Release(); atexit(ddraw_close); - if (FAILED(lpdd4->SetCooperativeLevel(h, DDSCL_NORMAL))) return(0); + if (fs) { + dw = DDSCL_SETFOCUSWINDOW | DDSCL_CREATEDEVICEWINDOW | \ + DDSCL_EXCLUSIVE | DDSCL_FULLSCREEN | DDSCL_ALLOWREBOOT; + h = hwndMain; + } else { + dw = DDSCL_NORMAL; + h = hwndRender; + } + hr = lpdd4->SetCooperativeLevel(h, dw); + if (FAILED(hr)) { + pclog("DDRAW: SetCooperativeLevel failed (%s)\n", GetError(hr)); + return(0); + } memset(&ddsd, 0, sizeof(ddsd)); ddsd.dwSize = sizeof(ddsd); @@ -891,47 +998,6 @@ const vidapi_t ddraw_vidapi = { #if 0 @@@@@ -static int -ddraw_init(int fs) -{ - DDSURFACEDESC2 ddsd; - LPDIRECTDRAW lpdd; - HRESULT hr; - HWND h; - DWORD dw; - - pclog("DDRAW: init (fs=%d)\n", fs); - - cgapal_rebuild(); - - hr = DirectDrawCreate(NULL, &lpdd, NULL); - if (FAILED(hr)) { - pclog("DDRAW: cannot create an instance (%s)\n", GetError(hr)); - return(0); - } - hr = lpdd->QueryInterface(IID_IDirectDraw4, (LPVOID *)&lpdd4); - if (FAILED(hr)) { - pclog("DDRAW: no interfaces found (%s)\n", GetError(hr)); - return(0); - } - lpdd->Release(); - lpdd = NULL; - - atexit(ddraw_close); - - if (fs) { - dw = DDSCL_SETFOCUSWINDOW | DDSCL_CREATEDEVICEWINDOW | \ - DDSCL_EXCLUSIVE | DDSCL_FULLSCREEN | DDSCL_ALLOWREBOOT; - h = hwndMain; - } else { - dw = DDSCL_NORMAL; - h = hwndRender; - } - hr = lpdd4->SetCooperativeLevel(h, dw); - if (FAILED(hr)) { - pclog("DDRAW: SetCooperativeLevel failed (%s)\n", GetError(hr)); - return(0); - } if (fs) { ddraw_w = GetSystemMetrics(SM_CXSCREEN); diff --git a/src/win/win_lang.c b/src/win/win_lang.c index 8c52b47..c9c4786 100644 --- a/src/win/win_lang.c +++ b/src/win/win_lang.c @@ -8,7 +8,7 @@ * * Handle language support for the platform. * - * Version: @(#)win_lang.c 1.0.2 2018/05/29 + * Version: @(#)win_lang.c 1.0.3 2018/06/04 * * Author: Fred N. van Kempen, * @@ -105,25 +105,39 @@ lang_setname(lang_t *ptr) /* Add a language to the list of supported languages. */ static void -lang_add(lang_t *ptr) +lang_add(lang_t *ptr, int sort) { lang_t *p, *pp; + lang_t *prev; /* Create a copy of the entry data. */ pp = (lang_t *)malloc(sizeof(lang_t)); memcpy(pp, ptr, sizeof(lang_t)); - /* Set the name of this language. */ - lang_setname(pp); - /* Add this entry to the tail of the list. */ - if (languages == NULL) { - languages = pp; - } else { + if (sort) { p = languages; - while (p->next != NULL) - p = p->next; - p->next = pp; + if ((p == NULL) || (wcscmp(pp->name, p->name) < 0)) { + pp->next = p; + languages = pp; + } else { + while (p != NULL) { + if (wcscmp(pp->name, p->name) > 0) { + prev = p; + p = p->next; + continue; + } else { + prev->next = pp; + pp->next = p; + break; + } + } + prev->next = pp; + } + } else { + /* Just prepend to beginning. */ + pp->next = languages; + languages = pp; } /* We got one more! */ @@ -149,11 +163,8 @@ lang_scan(void) DIR *dir; int l; - /* First, add our native language. */ + /* None yet.. */ languages_num = 0; - memset(&lang, 0x00, sizeof(lang)); - lang.id = 0x0409; - lang_add(&lang); /* Open the "language modules" directory. */ swprintf(path, sizeof_w(temp), L"%ls%ls", emu_path, LANGUAGE_PATH); @@ -242,11 +253,20 @@ lang_scan(void) wcscpy(ptr, str); lang.email = (const wchar_t *)ptr; + /* Set the name of this language. */ + lang_setname(&lang); + /* Add this language. */ - lang_add(&lang); + lang_add(&lang, 1); } (void)closedir(dir); } + + /* Add the application's primary language. */ + memset(&lang, 0x00, sizeof(lang)); + lang.id = 0x0409; + lang_setname(&lang); + lang_add(&lang, 0); } @@ -404,6 +424,10 @@ plat_lang_menu(void) /* Add this language to the Languages menu. */ menu_add_item(IDM_LANGUAGE, i, ptr->name); + + /* Add separator after primary language. */ + if (ptr == languages) + menu_add_item(IDM_LANGUAGE, i, NULL); } /* Set active language. */ diff --git a/src/win/win_new_image.c b/src/win/win_new_image.c index 0033ee1..7769571 100644 --- a/src/win/win_new_image.c +++ b/src/win/win_new_image.c @@ -8,7 +8,7 @@ * * Implementation of the New Floppy/ZIP Image dialog. * - * Version: @(#)win_new_image.c 1.0.18 2018/05/24 + * Version: @(#)win_new_image.c 1.0.19 2018/06/05 * * Authors: Fred N. van Kempen, * Miran Grca, @@ -186,15 +186,20 @@ dlg_proc(HWND hdlg, UINT message, WPARAM wParam, LPARAM lParam) if (wcslen(temp_path) && (wcslen(temp_path) <= 256)) { twcs = &temp_path[wcslen(temp_path)]; twcs[0] = L'.'; - if (!is_zip && (filterindex == 3)) { + if (is_zip) { + twcs[1] = L'i'; + twcs[2] = L'm'; + twcs[3] = L'g'; + } else if (filterindex == 3) { twcs[1] = L'8'; twcs[2] = L'6'; twcs[3] = L'f'; } else { twcs[1] = L'i'; twcs[2] = L'm'; - twcs[3] = L'g'; + twcs[3] = L'a'; } + twcs[4] = L'\0'; } } h = GetDlgItem(hdlg, IDC_EDIT_FILE_NAME); diff --git a/src/win/win_settings_disk.h b/src/win/win_settings_disk.h index 4ad1175..4df6bad 100644 --- a/src/win/win_settings_disk.h +++ b/src/win/win_settings_disk.h @@ -309,7 +309,7 @@ disk_recalc_location_controls(HWND hdlg, int is_add_dlg, int assign_id) if ((hd_listview_items > 0) || is_add_dlg) { h = GetDlgItem(hdlg, IDC_COMBO_HD_BUS); - bus = SendMessage(h, CB_GETCURSEL, 0, 0) + 1; + bus = SendMessage(h, CB_GETCURSEL, 0, 0); switch(bus) { case HDD_BUS_ST506: /* ST506 MFM/RLL */ @@ -940,7 +940,7 @@ disk_add_proc(HWND hdlg, UINT message, WPARAM wParam, LPARAM lParam) case IDOK: if (!(existing & 2)) { h = GetDlgItem(hdlg, IDC_COMBO_HD_BUS); - hdd_ptr->bus = (SendMessage(h, CB_GETCURSEL, 0, 0) + 1) & 0xff; + hdd_ptr->bus = SendMessage(h, CB_GETCURSEL, 0, 0) & 0xff; } /* Make sure no file name is allowed with removable SCSI hard disks. */ @@ -1600,7 +1600,7 @@ disk_proc(HWND hdlg, UINT message, WPARAM wParam, LPARAM lParam) ListView_SetItemState(h, 0, LVIS_FOCUSED | LVIS_SELECTED, 0x000F); hdlv_current_sel = 0; h = GetDlgItem(hdlg, IDC_COMBO_HD_BUS); - SendMessage(h, CB_SETCURSEL, temp_hdd[0].bus - 1, 0); + SendMessage(h, CB_SETCURSEL, temp_hdd[0].bus, 0); } else { hdlv_current_sel = -1; } @@ -1628,7 +1628,7 @@ disk_proc(HWND hdlg, UINT message, WPARAM wParam, LPARAM lParam) ignore_change = 1; h = GetDlgItem(hdlg, IDC_COMBO_HD_BUS); - SendMessage(h, CB_SETCURSEL, temp_hdd[hdlv_current_sel].bus - 1, 0); + SendMessage(h, CB_SETCURSEL, temp_hdd[hdlv_current_sel].bus, 0); disk_recalc_location_controls(hdlg, 0, 0); } ignore_change = 0; @@ -1642,7 +1642,7 @@ disk_proc(HWND hdlg, UINT message, WPARAM wParam, LPARAM lParam) ignore_change = 1; h = GetDlgItem(hdlg, IDC_COMBO_HD_BUS); - b = SendMessage(h, CB_GETCURSEL, 0, 0) + 1; + b = SendMessage(h, CB_GETCURSEL, 0, 0); if (b == temp_hdd[hdlv_current_sel].bus) goto hd_bus_skip; disk_untrack(hdlv_current_sel); @@ -1756,7 +1756,7 @@ hd_bus_skip: ListView_SetItemState(h, 0, LVIS_FOCUSED | LVIS_SELECTED, 0x000F); hdlv_current_sel = 0; h = GetDlgItem(hdlg, IDC_COMBO_HD_BUS); - SendMessage(h, CB_SETCURSEL, temp_hdd[0].bus - 1, 0); + SendMessage(h, CB_SETCURSEL, temp_hdd[0].bus, 0); } else { hdlv_current_sel = -1; }