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,911 of 4,255   
   Robert Pengelly to Robert Pengelly   
   Re: COM1 interrupt for 16-bit OS   
   12 Nov 23 14:14:49   
   
   From: robertapengelly@gmail.com   
      
   On Sunday, 12 November 2023 at 22:03:19 UTC, Robert Pengelly wrote:   
   > On Sunday, 12 November 2023 at 21:51:33 UTC, wolfgang kern wrote:    
   > > On 12/11/2023 21:31, Robert Pengelly wrote:    
   > > ...    
   > > >>> Ahh you have 3 variables instead of 2, right I think I understand.   
   What should I do about the buffer though? Like should I get them in say a 1Ch   
   handler to move the cursor in there?    
   > > >> That should have been "What should I do about the values though?" Like   
   should I parse the buffer in say 1Ch and move the cursor in there?    
   > > yeah, sorry for delayed response, I tend to sleep from time to time :)    
   > > if your screen is in text-mode then you need to scale all down by 8    
   > > because mice work on pixels rather than on character row/column.    
   > > > Am I updating the x and y correctly with:    
   > > >    
   > > > xor ax, ax    
   > > > xor dx, dx    
   > > > xor cx, cx    
   > > > mov bx, offset buffer    
   > > >    
   > > > mov al, [bx]    
   > > > mov dl, [bx]    
   > > >    
   > > > and al, HEX (0C)    
   > > > 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, [bx + 1]    
   > > > or dx, cx    
   > > > add dx, [mouse_x]    
   > > >    
   > > > mov [mouse_x], dx    
   > > > mov [mouse_y], ax    
   > > >    
   > > > If I am how do I stop it wrapping around the screen as doing:    
   > > >    
   > > > cmp ax, 80    
   > > > jge .no_x_inc    
   > > >    
   > > > cmp ax, 0    
   > > > jl .no_x_inc    
   > > >    
   > > > .inc_x:    
   > > >    
   > > > mov cs:[mouse_x], ax    
   > > >    
   > > > .no_x_inc:    
   > > >    
   > > > cmp dx, 25    
   > > > jge .done    
   > > >    
   > > > cmp dx, 0    
   > > > jl .done    
   > > >    
   > > > .inc_y:    
   > > >    
   > > > mov cs:[mouse_y], dx    
   > > >    
   > > > doesn't seem to work.    
   > > I never supported a mouse in text mode, so my experience is limited to    
   > > graphic modes.    
   > > my clipping just used AND or CMOVcc w/o CMP/JUMP lines.    
   > >    
   > > __    
   > > wolfgang   
   > What values am I scaling down the values passed to the interrupt or the   
   values I calculate after I got all three bytes?   
   > > I never supported a mouse in text mode, so my experience is limited to    
   > > graphic modes.   
   > I'm only using text mode at the moment as a test case. The plan is to only   
   have the mouse in graphics mode eventually. I didn't think of using AND, would   
   I do something like "and [mouse_x], 319" and would that also work if the value   
   is negative so it    
   will stay at zero?   
   Also, how do I scale down a number in assembly?   
      
   --- 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