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,920 of 4,255    |
|    Robert Pengelly to wolfgang kern    |
|    Re: COM1 interrupt for 16-bit OS    |
|    12 Nov 23 17:11:13    |
      From: robertapengelly@gmail.com              On Monday, 13 November 2023 at 00:56:18 UTC, wolfgang kern wrote:       > 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       Can you see anything wrong with the irq handler I sent a few messages ago?        Also, can you see anything that may be wrong in:              ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;        ;; Clear interrupts while we set other up.        ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;        cli               ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;        ;; We'll use the extra segment to offset the correct positions        ;; so make sure it is zero.        ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;        xor ax, ax        mov es, ax               ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;        ;; Setup INT 0Ch.        ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;        mov word ptr es:[HEX (0C) * 4], offset serial_handler        mov word ptr es:[HEX (0C) * 4 + 2], cs               ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;        ;; Set DLAB on.        ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;        mov dx, HEX (03FB)        mov al, HEX (80)        out dx, al               ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;        ;; Set baud rate (low).        ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;        mov dx, HEX (03F8)        mov al, HEX (60)        out dx, al               ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;        ;; Set baud rate (high).        ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;        mov dx, HEX (03F9)        xor al, al        out dx, al               ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;        ;; 8 bits, no parity, one stop bit.        ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;        mov dx, HEX (03FB)        mov al, HEX (03)        out dx, al               ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;        ;; FIFO Control Register.        ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;        mov dx, HEX (03FC)        mov al, HEX (0B)        out dx, al               ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;        ;; Turn on DTR, RTS and OUT2.        ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;        mov dx, HEX (03FA)        mov al, HEX (C7)        out dx, al               ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;        ;; Interrupt when data received.        ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;        mov dx, HEX (03F9)        mov al, HEX (01)        out dx, al               ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;        ;; Enable interrupts on IRQ4.        ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;        in al, HEX (21)               and al, HEX (EF)        out HEX (21), al               ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;        ;; Restore interrupts.        ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;        sti              --- 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