From: admin@nospicedham.127.0.0.1   
      
   On Tue, 22 Nov 2022 18:14:07 -0800 (PST)   
   Paul Edwards wrote:   
      
   > On Sunday, November 20, 2022 at 8:35:48 PM UTC+8, Paul Edwards wrote:   
   >   
   > > And here is the new code, which is now preventing PDOS/86   
   > > from booting:   
   >   
   > I decided to have another crack at this, to see if the   
   > recent changes to pdos/86 to build it using the huge   
   > memory model instead of the large memory model,   
   > with a 32-bit size_t, but still pure 8086 code, had made   
   > this problem go away. But the problem was still there.   
   >   
   > > .data   
   > > addr0 dd handler0   
   > > addr1 dd handler1   
   > > addr3 dd handler3   
   > > addr20 dd handler20   
   > > addr21 dd handler21   
   > > addr25 dd handler25   
   > > addr26 dd handler26   
   > >   
   > > .code   
   > >   
   > > instint proc uses bx es ds   
   > > mov bx, 0   
   > > push bx   
   > > pop es   
   > > cli   
   > > lds bx, addr0   
   >   
   > This causes ds to be destroyed.   
   ^w overwritten   
   >   
   > > mov es:[0h], bx   
   > > mov es:[02h], ds   
   > >   
   > > lds bx, addr1   
   >   
   > This uses the destroyed ds to attempt to access addr1 :-)   
   >   
   > I solved the problem by doing this:   
   >   
   > push ds   
   > lds bx, addr1   
   > mov es:[04h], bx   
   > mov es:[06h], ds   
   > pop ds   
      
   You've changed the target address?!   
      
   If all your doing is moving some dwords, 'movsd' might be what you need.   
      
   >   
   > And now all of wasm, masm and as86 assemble the code,   
   > but I can only test that wasm and masm actually work.   
   >   
   > BFN. Paul.   
   >   
      
      
   --   
   Bah, and indeed Humbug.   
      
   --- SoupGate-Win32 v1.05   
    * Origin: you cannot sedate... all the things you hate (1:229/2)   
|