[HN Gopher] Rust on MIPS64 Windows NT 4.0 ___________________________________________________________________ Rust on MIPS64 Windows NT 4.0 Author : ingve Score : 155 points Date : 2021-11-16 13:18 UTC (1 days ago) (HTM) web link (gamozolabs.github.io) (TXT) w3m dump (gamozolabs.github.io) | im_down_w_otp wrote: | This is cool! | | I'm ever so slowly trying to get Rust producing programs I can | run on my Newton MessagePad 2000. | | There's some good stuff in this article that I think I can take | as valuable lessons in that ambition. | bitwize wrote: | Reminds me of how I started programming software for the Tandy | 2000 -- using Turbo Pascal 7 for DOS. As long as I use 8086 | instructions and my own library routines and not e.g., BGI or | anything that assumes a PC, the EXEs will run fine on a | (emulated) Tandy 2000, because it's still a 16-bit x86 | architecture. The weird I/O mapping of this PC-incompatible | machine could be accommodated with inline asm. So it's not cross- | CPU-arch, but still using more modern tools to program for a | weird old machine, and I love it. | mrlonglong wrote: | Excellent article, didn't even think Rust could be contorted into | doing these things so kudos. | Ericson2314 wrote: | My favorite part about cross compilation is the magic of | connecting the new and familiar to historical or remote things. | It can really feel like establishing a new trade route. This | adventure is a seller example of something inspires these | feelings. | | Great read, and maybe the PE support in LLVM will be generalized | someday! | rbanffy wrote: | Nice reminder we had pretty cool 64-bit computers well before | they became mainstream. | | I remember I wanted Visual Studio for NT on MIPS, PPC, or Alpha | and I couldn't get it. Just that and Office would have opened the | market for these chips. | ectopod wrote: | Visual Studio for Alpha existed. At my company none of the | third-party libraries we used were available for anything other | than x86, but our code compiled and ran on Alpha NT with no | problem at all. I'm nearly sure that Office was available too. | rbanffy wrote: | I think only the C/C++ development environment existed for | those platforms, but I can try to dig more. Maybe I couldn't | find them at the precise timeframe I had an Alpha to play | with. | ectopod wrote: | I definitely used Visual Studio on Alpha for C++. | | And it had VB too: | https://news.microsoft.com/1998/12/07/microsoft-announces- | av... | rbanffy wrote: | I wonder what did it lack... I suspect I couldn't find it | because, at the time, I didn't have the full MSDN | subscription. I only got it a couple years later, after | DEC was acquired by Compaq, who didn't know what to do | with Alpha and, by then, that Alpha was looooong gone. | errcorrectcode wrote: | Oh that's right. Besides DEC Alpha, NT worked on Prof. Hennessy's | baby / SGI's Visual Workstation boxen too. | | Edit: I remember using SPIM (MIPS simulator) in undergrad and | writing a Java subset to MIPS assembly compiler. | bitwize wrote: | Visual Workstations were 32-bit x86, and the models 320 and 540 | were PC-incompatible (they had their own firmware). Windows NT | had special drover support for them. | twoodfin wrote: | To avoid x86-isms slipping into the OS, Windows NT was | developed originally on an i860-based platform, then one based | on MIPS. | kevin_thibedeau wrote: | They also avoided the DWORD x86ism and peppered LONG | everywhere, preventing a clean upgrade to LP64 since long | reasonably had to match as well. | matja wrote: | Why was SetWindowLong (taking LONG) superseded by | SetWindowLongPtr (taking LONG_PTR) on 64-bit versions of | Windows? | nikanj wrote: | Because SetWindowLong can be used to set a callback | function, i.e. a 64-bit pointer - but LONG remains 32 bit | on 64-bit Windows. Backward compatibility stipulated the | need for a new function name | acomjean wrote: | NT was designed in part by a former Digital Equipment Corp | architect who did a lot of work on Vax/VMS. | | Windows NT was the subject of the appendix of my Operating | system book. Replaced now by "Windows 2000" (NT5.0), which | was the next OS. | | https://www.os-book.com/OS8/os8c/appendices-dir/c.pdf | kryptiskt wrote: | That architect is Dave Cutler: | https://news.microsoft.com/features/the-engineers- | engineer-c... | zamadatix wrote: | I love it - wonderful hacking in the traditional sense. NT 4.0 is | the perfect "weird old Windows" for this kind of weird adventures | thing. It was released early enough it supported all sorts of | weird architectures of the time but was also late enough that it | had things like the MSR IPv6 stack and a lot of NT-isms that are | still relevant/familiar with today's still NT based Windows. | mananaysiempre wrote: | For emulator usage, there are a couple more inconveniences: no | USB stack so no support for QEMU's usb-tablet device means the | mouse position constantly gets out of sync (there are third- | party stacks but I could never get them to work); active-only | FTP is something of a pain to get through to the host (and | again I could never get it to connect to the QEMU-invoked | smbd). But the installation is several times smaller than 2000 | (mostly because it doesn't yet have weird now-abandoned things | like the Microsoft Transaction Server), and that's rather | pleasant. | ciupicri wrote: | Why would you use FTP instead of Samba? | mananaysiempre wrote: | Again, because I can't get the NT 4 guest (or the NT 3.51 | guest, or the 98 guest) to connect to the QEMU-launched | smbd and I can't be arsed to configure Samba and the | relevant NAT and/or bridging myself, whereas the builtin | FTP client mostly works out of the box except that I need | to set up some network interface stuff on the host. (The | last memory I have of seriously investigating Samba is when | I read the entirety of the Samba HOWTO with a view of | assisting the school network admins back when I was around | 15 years old and--as I now recognize--knew next to nothing | about networking. I probably still have something of an | _ugh_ zone around it.) I expect it's because NT 4 only | talks some sort of obsolete version of SMB or its | underlying stack that modern Samba doesn't enable by | default, but again I just can't bring myself to care when | it's a 30-minute hack whose only purpose is to get IE onto | the VM and then I can bootstrap my way to saner things. | | If you just happen to know the solution off the top of your | head, please share it, by all means, that's half the reason | I posted that in the first place. But today is not the day | I delve into the guts of old-style Microsoft/IBM networks. | | The thing with mouse desync is similarly weird, because for | me the mouse doesn't desync when connecting to the VM over | VNC using MultiVNC on Android, on a frickin' _touchscreen_ | , but always desyncs when using either builtin Gtk, builtin | SDL, or SPICE on Vinagre (which uses VNC under the hood | supposedly?..) locally on Gnome Wayland, except the HiDPI- | host bugs are different for each of those. In all cases | QEMU is emulating a normal PS/2 mouse that shouldn't have | any support for absolute positioning. I mean, what? How | does that even work? It's not even the _fun_ kind of "how | does that even work", just a lot of imperfect, subtly | mismatched emulations stacked on top of one another. Monkey | sad. | zamadatix wrote: | Never tried it on QEMU so I'm no help there (though if you | can get network up VNC is probably workable). On VMware with | the legacy tools package installed the mouse seemed pretty | consistent in the console though. | | Regarding file transfer I think I put an early 5.x version of | WinSCP on the virtual disk image and that worked pretty well | for FTP/SFTP. Might be other options but mostly I just loaded | the IPv6 and Firefox install packages that way and it seemed | to go fine for that. | tibbydudeza wrote: | Afaik Microsoft built their own developer workstations based on | the MIPS Magnum R4000 processor because nobody made them | commercially and to make Dave Cutler and his team happy. ___________________________________________________________________ (page generated 2021-11-17 23:01 UTC)