home bbs files messages ]

Forums before death by AOL, social media and spammers... "We can't have nice things"

   alt.os.development      Operating system development chatter      4,255 messages   

[   << oldest   |   < older   |   list   |   newer >   |   newest >>   ]

   Message 3,919 of 4,255   
   wolfgang kern to Robert Pengelly   
   Re: COM1 interrupt for 16-bit OS   
   13 Nov 23 01:56:13   
   
   From: nowhere@never.at   
      
   On 13/11/2023 01:39, Robert Pengelly wrote:   
   > On Monday, 13 November 2023 at 00:31:02 UTC, wolfgang kern wrote:   
   >> On 13/11/2023 01:01, Robert Pengelly wrote:   
   >>> On Sunday, 12 November 2023 at 23:55:27 UTC, wolfgang kern wrote:   
   >>>> On 12/11/2023 23:14, Robert Pengelly wrote:   
   >>>> ...   
   >>>>> Also, how do I scale down a number in assembly?   
   >>>> SHR 3 ;aka divide by 8   
   >>>> SHR 4 ;aka divide by 16   
   >>>> both rounds down, but who cares?   
   >>>>   
   >>>> odd divide values can perform with a combination of SHR and MUL or even   
   >>>> with the famous awful slow DIV instruction.   
   >>>>   
   >>>> __   
   >>>> wolfgang   
   >>> So I was doing it right. I have:   
   >>>   
   >>> xor ax, ax   
   >>> xor dx, dx   
   >>> xor cx, cx   
   >>>   
   >>> mov al, [buffer]   
   >>> and al, HEX (0C)   
   >>>   
   >>> mov dl, [buffer]   
   >>> and dl, HEX (03)   
   >>>   
   >>> mov cl, 4   
   >>> shl ax, cl   
   >>>   
   >>> mov cl, 6   
   >>> shl dx, cl   
   >>>   
   >>> mov cl, [bx + 2]   
   >>> or ax, cx   
   >>> add ax, [mouse_y]   
   >>>   
   >>> mov cl, 4   
   >>> shr ax, cl   
   >>>   
   >>> mov cl, [bx + 1]   
   >>> or dx, cx   
   >>> add dx, [mouse_x]   
   >>>   
   >>> mov cl, 3   
   >>> shr dx, cl   
   >>>   
   >>> mov [mouse_x], dx   
   >>> mov [mouse_y], ax   
   >>>   
   >>> but I'm getting weird results, am I shifting in the right place?   
   >> I'd keep mouse positions stored in pixels and only scale down for cursor   
   >> updates.   
   >> __   
   >> wolfgang   
   > The following code gives weird results as well:   
   >   
   > timer_handler:   
   >   
   >      mov     bx,     cs:[mouse_x]   
   >      shr     bx   
   >      shr     bx   
   >      shr     bx   
   >   
   >      mov     cx,     cs:[mouse_y]   
   >      shr     cx   
   >      shr     cx   
   >      shr     cx   
   >      shr     cx   
   >   
   > timer_handler.move:   
   >   
   >      mov     ah,     HEX (02)   
   >      xor     bh,     bh   
   >      mov     dh,     cl   
   >      mov     dl,     bl   
   >      int     HEX (10)   
   >   
   > I've removed the shifts from the irq handler but the cursor is dodgy.   
      
   then I assume that it is off screen, so you may not clip it correct.   
   __   
   wolfgang   
      
   --- SoupGate-Win32 v1.05   
    * Origin: you cannot sedate... all the things you hate (1:229/2)   

[   << oldest   |   < older   |   list   |   newer >   |   newest >>   ]


(c) 1994,  bbs@darkrealms.ca