Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- include 'C:\KPO\FASM\INCLUDE\MACRO\PROC16.inc'
- org 100h
- Width = 320
- Height = 200
- Start:
- mov ah, $0F
- int 10h
- mov [bOldMode], al
- mov [bOldPage], bh
- mov ax, $0013
- int 10h
- push $A000
- pop es
- mov cx, 320 * 200
- xor di, di
- mov al, $0f
- mov cx, 320 * 200
- rep stosb
- stdcall DrawLine, 50, 100, 200, 20, $05
- ; stdcall DrawLine, 0, 3, 4, 0
- mov ax, $0C08
- int 21h
- test al, al
- jnz @F
- mov ah, $08
- int 21h
- @@:
- movzx ax, [bOldMode]
- int 10h
- mov ah, $05
- mov al, [bOldPage]
- int 10h
- ret
- proc DrawLine uses ax bx cx dx di,\
- x0, y0, xk, yk: WORD, color: Byte
- sub sp, 12
- ;bp-2 - x
- ;bp-4 - y
- ;bp-6 - dx
- ;bp-8 - dy
- ;bp-10 - t
- ;bp-12 - k
- ;Initialize
- mov dx, [x0] ;current x
- mov [bp - 2], dx
- mov ax, [y0] ;current y
- mov [bp - 4], ax
- mov cx, [xk]
- sub cx, dx
- mov [bp - 6], cx
- mov cx, ax
- sub cx, [yk]
- mov [bp - 8], cx
- mov cx, 0
- sub cx, [bp - 6]
- mov [bp - 10], cx
- mov cx, [bp - 8]
- add cx, cx
- mov [bp - 12], cx
- ;end of Inintialize
- mov cx, Width
- mul cx
- add ax, [bp-2]
- mov di, ax
- mov ch, [color]
- mov byte [es:di], ch
- .Loop:
- mov cx, [bp - 2]
- cmp cx, [xk]
- jae .EndOfLoop
- mov cx, [bp - 12] ;cx contain k
- add [bp - 10], cx
- cmp [bp - 10], word 0
- jl .Below
- ;set pixels
- inc word [bp - 2]
- dec word[bp - 4]
- sub di, Width
- inc di
- ;correction
- mov cx, [bp - 6]
- add cx, cx
- sub [bp - 10], cx
- jmp @F
- .Below:
- inc word [bp - 2]
- inc di
- @@:
- mov ch, [color]
- mov byte [es:di], ch
- jmp .Loop
- .EndOfLoop:
- add sp, 8
- ret
- endp
- bOldMode db ?
- bOldPage db ?
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement