{"id":125677,"date":"2026-05-23T11:32:16","date_gmt":"2026-05-23T09:32:16","guid":{"rendered":"https:\/\/www.emu-france.com\/?p=125677"},"modified":"2026-05-23T11:32:16","modified_gmt":"2026-05-23T09:32:16","slug":"ordi-tsugaru-2026-05-22","status":"publish","type":"post","link":"https:\/\/www.emu-france.com\/?p=125677","title":{"rendered":"[Ordi.] Tsugaru (2026\/05\/22)"},"content":{"rendered":"<p>Cr\u00e9\u00e9 par CaptainYS, il s&rsquo;agit d&rsquo;un \u00e9mulateur pour Windows, MacOs et Linux de Fujitsu FM-Towns et sa d\u00e9clinaison console Marty. C&rsquo;est un \u00e9mulateur du l\u00e9gendaire ordinateur Fujitsu FM TOWNS. Le but est d&rsquo;imiter le mod\u00e8le II MX qui \u00e9tait le dernier ordinateur sur lequel l&rsquo;auteur a (dixit) \u00ab\u00a0pr\u00eat\u00e9 all\u00e9geance\u00a0\u00bb. L&rsquo;auteur essaie \u00e9galement de trouver et de documenter autant que possible les fonctionnalit\u00e9s non document\u00e9es du syst\u00e8me FM TOWNS pendant l&rsquo;\u00e9criture de l&rsquo;\u00e9mulateur.<br \/>\n&nbsp;<br \/>\n<a href=\"https:\/\/www.emu-france.com\/wp-content\/uploads\/2024\/07\/tsugaru-fusion.png\"><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter  wp-image-80475\" src=\"https:\/\/www.emu-france.com\/wp-content\/uploads\/2024\/07\/tsugaru-fusion.png\" alt=\"\" width=\"438\" height=\"344\" srcset=\"https:\/\/www.emu-france.com\/wp-content\/uploads\/2024\/07\/tsugaru-fusion.png 1924w, https:\/\/www.emu-france.com\/wp-content\/uploads\/2024\/07\/tsugaru-fusion-300x236.png 300w, https:\/\/www.emu-france.com\/wp-content\/uploads\/2024\/07\/tsugaru-fusion-768x604.png 768w, https:\/\/www.emu-france.com\/wp-content\/uploads\/2024\/07\/tsugaru-fusion-1024x805.png 1024w\" sizes=\"auto, (max-width: 438px) 100vw, 438px\" \/><\/a><br \/>\n&nbsp;<br \/>\nLes changements:<br \/>\n&nbsp;<br \/>\n<em>&#8211; General code cleaning<br \/>\n&#8211; HLT raises GP fault in VM86 mode.<br \/>\n&#8211; Check destination CS DPL=0 and non-conforming in INT from VM86 mode.<br \/>\n&#8211; INT takes IOPL exception from VM86 mode.<br \/>\n&#8211; Added the same test in RETF_imm16.<br \/>\n&#8211; Fixed IRETD to outer level (takes into account cases where SS temporarily becomes inaccessible).<br \/>\n&#8211; Fixed INT to outer privilege (GP Exception).<br \/>\n&#8211; Fixed RETF to inner privilege (GP Exception).<br \/>\n&#8211; Fixed JMPF\/CALLF to inner privilege (GP Exception).<br \/>\n&#8211; Fixed CALLF and RETF.<br \/>\n&#8211; Fixed INT from Ring 3 to Ring 3 (Conforming Segment).<br \/>\n&#8211; NET tests pass on WSL.<br \/>\n&#8211; Make LEA instruction fix valid in both medium-fidelity and high-fidelity modes.<br \/>\n&#8211; Added debugger command BRKON EXCEPTIONAT cs:eip.<br \/>\n&#8211; Fixed LEA instruction to correctly mask high word if operand size is 32 and address size is 16 in high-fidelity mode.<br \/>\n&#8211; FLDCW handles exception.<br \/>\n&#8211; Fixed disassembly.<br \/>\n&#8211; Fully fixed the Page Fault during Instruction-Fetch problem (resolves IE4 installation crash).<br \/>\n&#8211; Fixed high-fidelity mode page fault handling during Instruction-Fetch.<br \/>\n&#8211; Fixed FTPSVR test.<br \/>\n&#8211; Merge pull request #192 from bcc2528\/master (VerifiedNet FTP Server test).<br \/>\n&#8211; Added FTP, HTGET, and network ctest.<br \/>\n&#8211; Removed two potential race conditions.<br \/>\n&#8211; Translate 10.0.2.172 to host 127.0.0.1.<br \/>\n&#8211; Better organized ThreadFunc and converted std::list <Clients> to std::vector <Clients>.<br \/>\n&#8211; Minor optimization for push and pop instructions.<br \/>\n&#8211; Fixed potential buffer overflows and missing mutex lockings.<br \/>\n&#8211; Added Japanese message for LAN warning.<br \/>\n&#8211; Fix Linux, macOS, and WSL builds.<br \/>\n&#8211; Merge pull request #191 from bcc2528\/master (Corrected ACK implementation to the VM).<br \/>\n&#8211; Fix aspect ratio of Ningyou Tsukai (Metal &#038; Lace).<br \/>\n&#8211; Deliver incoming TCP payload regardless of the TCP flag.<br \/>\n&#8211; Preparing to correctly acknowledge non-PSH packet with payload.<br \/>\n&#8211; Cleaned the state labels.<br \/>\n&#8211; Correctly process FIN from the VM.<br \/>\n&#8211; Cleaned and updated ProcessTCP_Packet.<br \/>\n&#8211; Added port forwarding and ability to accept connections from outside (with payload support on ACK\/FIN).<br \/>\n&#8211; Added two IO labels.<br \/>\n&#8211; DOSINT10.COM emulates more functions.<br \/>\n&#8211; Added Japanese UI text for LAN option and exposed it in the GUI.<br \/>\n&#8211; Handle connection requests better so that the VM does not lock up when the remote host responds slowly.<br \/>\n&#8211; Supported TCP RST flag.<br \/>\n&#8211; Fixed wrong status text.<br \/>\n&#8211; Handling disconnect from server more correctly.<br \/>\n&#8211; Handles double\/duplicate SYN requests.<br \/>\n&#8211; Adding network status dump.<br \/>\n&#8211; Able to open ysflight.in.coocan.jp with IE4 (with JavaScript errors).<br \/>\n&#8211; Implemented and optimized DNS handling.<br \/>\n&#8211; Fixed INT number registration from (data&#038;0x10) to (data&#038;0xF0).<br \/>\n&#8211; DHCP ignores unsupported options.<br \/>\n&#8211; Better RX3586 state emulation.<br \/>\n&#8211; REX3586 Windows driver assumes MAC address to begin with 00c0c0 or 00803d.<br \/>\n&#8211; REX3586 can be accessed from 7000h to 7010h and 7100h to 7110H.<br \/>\n&#8211; Added support for PSH from VM to outside.<br \/>\n&#8211; WATTCP FTP prints welcome message from the FTP server.<br \/>\n&#8211; RealNetwork optimization (reduced time holding the clients-lock).<br \/>\n&#8211; Added rex3586 polling, library to FMTownsCommon class, and RealNetwork pointer to RatocREX3586.<br \/>\n&#8211; Virtual Router can open a fake TCP connection.<br \/>\n&#8211; Added TCP Packet support and implemented ARP.<br \/>\n&#8211; Added DOSINT1C.COM, DOSINT16.COM, and DOSINT1C.NSM to emulate PC\/AT and DOS 1\/18sec Interval Timers.<br \/>\n&#8211; WATTCP DHCP.EXE can obtain IP address from Tsugaru&rsquo;s virtual DHCP server (DHCP Discovery -> DHCP Offer works).<br \/>\n&#8211; Testing INSW\/INSD instructions.<br \/>\n&#8211; REX3586 shoots interrupts on incoming RXPacket.<br \/>\n&#8211; REX3586 packet driver detects card presence and initiates DHCP.<br \/>\n&#8211; Support REX 3586 EPROM, INTNum setting, and TX\/RX INT Enable\/Disable.<br \/>\n&#8211; Fixed freeze when a broken RDD file is given.<br \/>\n&#8211; Removed two warnings.<br \/>\n&#8211; Updated tips.<br \/>\n&#8211; Prevent mouse cursor sticking after FsSetMousePosition.<br \/>\n&#8211; Fix stickiness and visibility of differential mouse integration in macOS.<br \/>\n&#8211; Added GL_SILENCE_DEPRECATION macro.<br \/>\n&#8211; Fixed potential problems in differential mouse integration (sub-pixel tracking and dropped first movement on wake up).<br \/>\n&#8211; FileSys test takes Windows short-name into account.<br \/>\n&#8211; Updated GitHub workflow.<br \/>\n&#8211; Added -poweroffoniow option.<br \/>\n&#8211; Call OSInit on start up and added osinit library.<br \/>\n&#8211; Fixed TGDRV INT 2FH AX=111DH.<br \/>\n&#8211; Added a new discovery about CMOS 3C1AH.<br \/>\n&#8211; Added shortcuts XMSEND, XM1KSEND, XMRECV, XMCRCRECV.<br \/>\n&#8211; Support default client and labels for COM1 to COM4.<br \/>\n&#8211; RS232C BIOS detects external COM ports.<br \/>\n&#8211; Updating i8251 behavior so that IO.SYS detects the serial port.<br \/>\n&#8211; Testing COMn support.<br \/>\n&#8211; Looking into RS232C I\/O ports.<br \/>\n&#8211; Fixed Marty Power-On Demo speed.<br \/>\n&#8211; Changed GUI default file names from wildcard to default.???.<br \/>\n&#8211; Fix: Gameport setting for port 0 was not read from profile.<br \/>\n&#8211; Small improvement in MOVSB\/MOVS\/STOSB\/STOS instructions.<br \/>\n&#8211; More CMOS RAM labels.<br \/>\n&#8211; Can use RESET + bootkey command from GUI, added help and boot-key tips.<br \/>\n&#8211; Gameport disarms boot key after 04D0H is read 16 times.<br \/>\n&#8211; Fixed crash on reset while playing high-res PCM.<br \/>\n&#8211; Added -NOINTCD (No internal CD drive) option.<br \/>\n&#8211; Debug I\/O 00EAh and 00EBh show the value written.<br \/>\n&#8211; Longer short-name buffer for GetShortPathNameA.<br \/>\n&#8211; Tsugaru for Windows uses short file name to access long file name in the host.<br \/>\n&#8211; Adding long-filename support and accessibility.<br \/>\n&#8211; Disabled file time-stamp update for consistency.<br \/>\n&#8211; Added a function for finding a host-file from 8+3 DOS file name.<br \/>\n&#8211; TGDRV updates file last-modified time.<br \/>\n&#8211; Updated diskdrive.cpp\/h (DSKCHG flag clear status matches real FM TOWNS II MX behavior).<br \/>\n&#8211; Removed warning on DWORD write to I\/O 45Ah.<br \/>\n&#8211; Removed non-functional PAUSE option from pull-down menu.<br \/>\n&#8211; Tsugaru_GUI ignores pause\/resume key when VM is not running.<br \/>\n&#8211; Added Console Steal feature (redirects CON device and INT 29H characters to host terminal via ENA CONSOUT).<br \/>\n&#8211; Added Direct-Type mode (ENA DIRTYPE) to type MS-DOS commands directly in CUI\/headless mode.<br \/>\n&#8211; Fixed pointer-initialization issue.<br \/>\n&#8211; Fix macOS File Dialog issue by adding Info.plist.<br \/>\n&#8211; Fixed bug in sjis2utf8 conversion.<br \/>\n&#8211; Added headless mode (with automated auto-typing improvements).<br \/>\n&#8211; Support FreeTOWNSOS&rsquo;s automation.<br \/>\n&#8211; -VMFLAG CONSOUT tells Free TOWNS OS (Tsugaru OS)&rsquo;s IOSYS to forward console output to host Terminal.<br \/>\n&#8211; Merge pull request #176 from bcc2528\/master.<br \/>\n&#8211; Fixed abort check in the VM main loop.<br \/>\n&#8211; Removed i486Debugger::stop (VM now keeps flags for abort and debug break instead of the debugger).<br \/>\n&#8211; i486Debugger retains the VM pointer.<br \/>\n&#8211; Updated ICM boot script.<br \/>\n&#8211; Can print list of IO ports from the command.<br \/>\n&#8211; Added TownsProfile serialize\/deserialize test and fixed profile reader.<br \/>\n&#8211; Hide MENU button when paused in GUI and fixed Japanese UI text.<br \/>\n&#8211; Cumulative updates. <\/em><br \/>\n&nbsp;<\/p>\n<p>Un pack de bios est disponible <a href=\"https:\/\/www.emu-france.com\/_nonfilebase\/FM-Towns-bios.7z\">ici<\/a> et un guide complet <a href=\"https:\/\/www.reddit.com\/r\/retrogaming\/comments\/ylxqys\/fm_towns_emulator_tsugaru_startup_guide_tutorial\/\" rel=\"noopener noreferrer\" target=\"_blank\">l\u00e0<\/a> (Tuto en pdf ici: <a href=\"https:\/\/www.emu-france.com\/_nonfilebase\/FM_Towns_Emulator_Guide_-_EN.pdf\">anglais<\/a> \/ <a href=\"https:\/\/www.emu-france.com\/_nonfilebase\/FM_Towns_Emulator_Guide_-_FR.pdf\">fran\u00e7ais<\/a>).<br \/>\n&nbsp;<\/p>\n<p class=\"p_telecharger_icone_zip\"><p class=\"p_telecharger_icone_zip\"><a class=\"telecharger_icone_zip\" href=\"https:\/\/www.emu-france.com\/?wpfb_dl=7785\" title=\"Download Tsugaru\">T\u00e9l\u00e9charger Tsugaru (2026\/05\/22) (2.1 Mo)<\/a><\/p><\/p>\n<p class=\"p_site_officiel\"><a class=\"site_officiel\" href=\"https:\/\/github.com\/captainys\/TOWNSEMU\" target=\"_blank\" rel=\"noopener noreferrer\">Site Officiel<\/a><\/p>\n<p class=\"p_en_savoir_plus\"><a class=\"en_savoir_plus\" href=\"https:\/\/www.emu-france.com\/emulateurs\/10-ordinateurs\/131-fujitsu-fm-towns\/\">En savoir plus&#8230;<\/a><\/p>\n<div class=\"fcbkbttn_buttons_block\" id=\"fcbkbttn_left\"><div class=\"fb-share-button  \" data-href=\"https:\/\/www.emu-france.com\/?p=125677\" data-type=\"button_count\" data-size=\"small\"><\/div><\/div>","protected":false},"excerpt":{"rendered":"<p>Cr\u00e9\u00e9 par CaptainYS, il s&rsquo;agit d&rsquo;un \u00e9mulateur pour Windows, MacOs et Linux de Fujitsu FM-Towns et sa d\u00e9clinaison console Marty. C&rsquo;est un \u00e9mulateur du l\u00e9gendaire ordinateur Fujitsu FM TOWNS. Le but est d&rsquo;imiter le mod\u00e8le II MX qui \u00e9tait le &#8230;<\/p>\n","protected":false},"author":3,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_jetpack_newsletter_access":"","_jetpack_dont_email_post_to_subs":false,"_jetpack_newsletter_tier_id":0,"_jetpack_memberships_contains_paywalled_content":false,"_jetpack_feature_clip_id":0,"_jetpack_memberships_contains_paid_content":false,"footnotes":"","jetpack_publicize_message":"","jetpack_publicize_feature_enabled":true,"jetpack_social_post_already_shared":true,"jetpack_social_options":{"image_generator_settings":{"template":"highway","default_image_id":0,"font":"","enabled":false},"version":2},"jetpack_post_was_ever_published":false},"categories":[1],"tags":[],"class_list":["post-125677","post","type-post","status-publish","format-standard","hentry","category-par-defaut","uentry","postonpage-1","odd","post-author-Jets"],"jetpack_publicize_connections":[],"jetpack_featured_media_url":"","jetpack_shortlink":"https:\/\/wp.me\/pKi2R-wH3","jetpack_likes_enabled":false,"jetpack_sharing_enabled":true,"_links":{"self":[{"href":"https:\/\/www.emu-france.com\/index.php?rest_route=\/wp\/v2\/posts\/125677","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.emu-france.com\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.emu-france.com\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.emu-france.com\/index.php?rest_route=\/wp\/v2\/users\/3"}],"replies":[{"embeddable":true,"href":"https:\/\/www.emu-france.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=125677"}],"version-history":[{"count":1,"href":"https:\/\/www.emu-france.com\/index.php?rest_route=\/wp\/v2\/posts\/125677\/revisions"}],"predecessor-version":[{"id":125678,"href":"https:\/\/www.emu-france.com\/index.php?rest_route=\/wp\/v2\/posts\/125677\/revisions\/125678"}],"wp:attachment":[{"href":"https:\/\/www.emu-france.com\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=125677"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.emu-france.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=125677"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.emu-france.com\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=125677"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}