[HN Gopher] The low-down on LOADALL (1990)
       ___________________________________________________________________
        
       The low-down on LOADALL (1990)
        
       Author : mmastrac
       Score  : 29 points
       Date   : 2021-01-18 17:12 UTC (1 days ago)
        
 (HTM) web link (gist.github.com)
 (TXT) w3m dump (gist.github.com)
        
       | FartyMcFarter wrote:
       | Piece of trivia:
       | 
       | > ** 0F 05 hex **
       | 
       | Nowadays this opcode is used for the "syscall" instruction.
        
         | rahimiali wrote:
         | isn't 0x80 the syscall opcode on x86?
        
           | FartyMcFarter wrote:
           | You might be thinking of "int 0x80" which gets assembled to
           | 0xCD 0x80.
           | 
           | According to this stackoverflow answer, "int 0x80" is a
           | Linux-specific legacy way to do syscalls:
           | 
           | https://stackoverflow.com/questions/12806584/what-is-
           | better-...
        
             | toast0 wrote:
             | int 0x80 is legacy, and x86, but it isn't specific to
             | Linux.
             | 
             | FreeBSD (and AFAIK other BSDs) also use(d) it; most likely
             | any Unix system on x86 that doesn't require a processor
             | with sysenter/syscall instructions would use int 0x80 to do
             | syscalls.
        
             | rahimiali wrote:
             | that's indeed my confusion. thank you for explaining.
        
       | tomcam wrote:
       | I cannot wait for people smarter than I am to contribute to this
       | conversation. I have so many questions, among them, what is the
       | modern equivalent or is it in continued used to this day? I wrote
       | a massive amount of code in assembly for my compiler back in the
       | 80s and this would've been really sweet to know about.
       | 
       | If it has been kept over for compatibility purposes, I would like
       | to know whether it has been completely superseded by other
       | instructions or if it still has a place in cogeneration.
        
         | h2odragon wrote:
         | 286 only, in that form; there's similar capabilities in modern
         | cpus but they're so different its not really comparable.
         | 
         | once you toss aside the OS and look at the hardware with "what
         | can i make it do?" there's still some joyous horrors possible.
         | DOS was good in that it was so little OS to throw aside, where
         | it got between you and the hardware at all.
        
         | tenebrisalietum wrote:
         | I think most of the chip testing facilities like LOADALL
         | eventually got subsumed into the System Management Mode
         | mechanism, triggered by "System Management Interrupts." It's
         | become used by the portion of UEFI/BIOS firmware that's
         | continually running in the background controlling fans and
         | power, and has the ability to run completely hidden from the
         | operating system by design.
        
           | emily-c wrote:
           | This is correct. The functionality of LOADALL now largely
           | happens in the RSM instruction which returns back to normal
           | execution context from an SMI. In modern firmware, before the
           | SMI handler is invoked by the SMM dispatcher the firmware
           | will switch the mode away from real mode and have its own
           | GDT/descriptors. All this needs to be restored on SMI return
           | thus RSM will parse a specially formatted block of processor
           | context to dump everything back.
        
       | rahimiali wrote:
       | This one quote was like biting into a madeleine and being
       | transported into a distant past:
       | 
       | "The power of being able to re-program ANY and ALL of the
       | registers of the CPU with one single instruction opens up a whole
       | new world of possibilities. Including, but not limited to:...
       | installing most of the guts of custom TSR's".
        
       | pavlov wrote:
       | The 80286 was a pretty weird CPU. I don't think Intel anticipated
       | that it would be primarily used for faster IBM PC compatibles.
       | 
       | Wikipedia seems to confirm this:
       | 
       |  _" Intel did not expect personal computers to use the 286. The
       | CPU was designed for multi-user systems with multitasking
       | applications, including communications (such as automated PBXs)
       | and real-time process control."_
       | [https://en.wikipedia.org/wiki/Intel_80286]
        
         | mschaef wrote:
         | Around this time there was another significant CPU architecture
         | in play at Intel, the iAPX 432. The 432 was the intentional
         | follow on to the 8-bit series (8080) and suffered from a number
         | of the usual second system effects - it was big, complicated,
         | and slow. The 8086/8 was a stop gap measure while the 432 was
         | being sorted out, and my understanding is also that the 8087
         | math chip was essentially a 432 component that had been
         | redesigned to work with the other chip series.
         | 
         | Viewed in the context of the 432, it's not hard to imagine
         | Intel viewing an 8086 follow on chip as a niche market CPU
         | while their would-be-anointed successor takes the more
         | mainstream PC market.
         | 
         | What's maybe more interesting to consider is the role of the
         | 80386, and how its design process might have gone. By the time
         | of the 80386, Intel built in features to the chip explicitly
         | useful for the purpose of bringing multitasking to the PC
         | space. One of the 386's many noteworthy features, was 'V86'
         | mode, which was designed to allow it to easily multitask
         | multiple real mode 8086/8 apps at the same time. This was
         | essentially a 'run several DOS programs at once' feature, and
         | there were a couple major PC "OS"'s that used it - most notably
         | Windows/386 and DesqView/386.
         | 
         | (You should also note that this is not close to the first time
         | that Intel tried to get away from x86 - the iAPX 432, i860, and
         | Itanium all represent varying attempts to achieve that goal.)
        
           | pavlov wrote:
           | _> "...Intel tried to get away from x86 - the iAPX 432, i860,
           | and Itanium all represent varying attempts to achieve that
           | goal."_
           | 
           | It's a strange irony that none of these homegrown attempts
           | worked out, but x86 is now threatened by the one external
           | architecture where Intel was a performance leader in
           | 2000-2005 with their StrongARM / XScale chips.
           | 
           | Intel giving up on ARM in 2006 was IMO one of the greatest
           | strategic blunders of all time.
        
           | TedDoesntTalk wrote:
           | What was Windows/386?
        
             | mschaef wrote:
             | pavlov is right.
             | 
             | Early versions of Windows all ran in real mode. Multiple
             | Windows programs were loaded into the same real mode
             | address space (no protection) and co-operatively
             | multitasked based on the GUI's messaging infrastructure. (A
             | program could just stop processing GUI messages and totally
             | monopolize the CPU.) There was also some limited support
             | for memory relocation via a block lock/unlock mechanism
             | built into the memory manager. If you wanted to run a DOS
             | program, this was all suspended, with the DOS program given
             | control over the full machine in the interim.
             | 
             | What Windows/386 did is put a 386-specific V86 multitasker
             | called VMM underneath all of this. This multitasker had
             | isolation between the processes it ran, one of which would
             | be the Windows GUI environment I described above and others
             | could be other DOS Programs, for which there were also
             | provisions to put the output into a window of the GUI. This
             | is really the first moment Windows got protected mode
             | support, although none of the user processes actually saw
             | the larger address space.
             | 
             | It's Windows 3.0 that let the GUI itself run in protected
             | mode, albeit still with 64K segmentation. Combined with
             | some graphics and usability improvements in 3.0, this is
             | really why 3.0 'got it right' in terms of feature set and
             | price point.
             | 
             | Windows for Workgroups 3.11 then moved the file system to
             | protected mode, a product called Win32s let Windows
             | programs themselves use 32-bit segment addressing, and
             | combination of all of that that was the foundation for the
             | 'fully 32-bit' Windows 95, which just moved a bunch more
             | functionality into 32-bit code and the VMM 32-bit
             | multitasker originally introduced in Windows/386.
        
             | pavlov wrote:
             | IIRC, it was a version of Windows 2.1 which could multitask
             | DOS applications using the 8086 virtualization mode
             | available on the i386.
        
       ___________________________________________________________________
       (page generated 2021-01-19 23:01 UTC)