1
0
mirror of https://github.com/cc65/cc65.git synced 2024-12-25 02:29:52 +00:00
cc65/libsrc/geos-common/conio/cvline.s
ol.sc 46f1085e2d Fixed several aspects of the GEOS CONIO implementation:
- cputc was drawing at the wrong position, therefore one line had to be removed as a workaround.
- chline, cvline were drawing one pixel to large lines.
- cclear was drawing an in both directions one pixel to big rect.
- the cursor was drawn at wrong times at wrong places in a wrong size.

git-svn-id: svn://svn.cc65.org/cc65/trunk@5874 b7a2c559-68d2-44c3-8de9-860c34a00d81
2012-10-23 19:42:57 +00:00

49 lines
877 B
ArmAsm

;
; Maciej 'YTM/Elysium' Witkowiak
;
; 06.03.2002
; void cvlinexy (unsigned char x, unsigned char y, unsigned char length);
; void cvline (unsigned char length);
.export _cvlinexy, _cvline
.import popa, _gotoxy, fixcursor
.importzp cursor_x, cursor_y, cursor_r
.include "jumptab.inc"
.include "geossym.inc"
_cvlinexy:
pha ; Save the length
jsr popa ; Get y
jsr _gotoxy ; Call this one, will pop params
pla ; Restore the length
_cvline:
cmp #0 ; Is the length zero?
beq L9 ; Jump if done
tax
lda cursor_x ; x position
clc
adc #3 ; in the middle of cell
sta r4L
lda cursor_x+1
adc #0
sta r4L+1
lda cursor_y ; top start
sta r3L
txa ; bottom end
clc
adc cursor_r
sta cursor_r
asl a
asl a
asl a
clc ; one pixel less
sbc #0
sta r3H
lda #%11111111 ; pattern
jsr VerticalLine
jsr fixcursor
L9: rts