drawline: push bp mov bp, sp pusha mov cx, [bp+8] mov word [line_d1x], 0 sub cx, [bp+12] je .ls1 inc word [line_d1x] jnc .ls1 neg word [line_d1x] neg cx .ls1: mov si, [bp+6] mov word [line_d1y], 0 sub si, [bp+10] je .ls2 mov word [line_d1y], 320 jnc .ls2 neg word [line_d1y] neg si .ls2: mov ax, [line_d1x] mov [line_d2x], ax mov word [line_d2y], 0 cmp cx, si jnbe .skip1 mov word [line_d2x], 0 mov ax, [line_d1y] mov [line_d2y], ax xchg cx, si .skip1: mov bx, [bp+12] mov ax, 320 mul word [bp+10] add ax, bx mov di, ax mov bl, [bp+4] mov dx, cx mov ax, cx shr ax, 1 mov bp, [line_d2x] add bp, [line_d2y] cli push ds push word 0xa000 pop ds mov [cs:init_sp], sp mov sp, [cs:line_d1x] ;cli add sp, [cs:line_d1y] .lhere: mov [di], bl add ax, si cmp ax, dx jnge .else sub ax, dx add di, sp jmp .endif .else: add di, bp .endif: loop .lhere, cx mov sp, [cs:init_sp] pop ds sti popa pop bp ret 10 ;move two vars to regs [section .bss] line_d1x resw 1 line_d1y resw 1 line_d2x resw 1 line_d2y resw 1 init_sp resw 1 __SECT__