2017-11-29 16:28:13 +00:00
|
|
|
|
NEW
|
2019-07-30 08:57:25 +00:00
|
|
|
|
AUTO 3,1
|
2017-11-29 16:28:13 +00:00
|
|
|
|
*--------------------------------------
|
2020-10-06 06:27:35 +00:00
|
|
|
|
* drawline(short int hWND, short int OP, short int COLOR, int X1, int Y1, int X2, int X2)
|
2017-11-29 16:28:13 +00:00
|
|
|
|
*--------------------------------------
|
2020-10-02 14:57:05 +00:00
|
|
|
|
DrawLine >PULLW CB.Cache+S.CB.Y2
|
|
|
|
|
>PULLW CB.Cache+S.CB.X2
|
|
|
|
|
>PULLW CB.Cache+S.CB.Y1
|
|
|
|
|
>PULLW CB.Cache+S.CB.X1
|
|
|
|
|
|
|
|
|
|
>PULLB CB.Cache+S.CB.COLOR
|
|
|
|
|
>PULLB CB.Cache+S.CB.OP
|
|
|
|
|
>PULLA hWND
|
|
|
|
|
>SYSCALL2 GetMemPtr
|
|
|
|
|
>STYA ZPWNDPtr
|
2020-10-06 06:27:35 +00:00
|
|
|
|
|
|
|
|
|
jsr DRAW.ToGlobal
|
|
|
|
|
jsr DRAW.GetInnerW
|
2020-10-02 14:57:05 +00:00
|
|
|
|
|
|
|
|
|
lda CB.Cache+S.CB.X2
|
2017-11-29 16:28:13 +00:00
|
|
|
|
sec
|
|
|
|
|
sbc CB.Cache+S.CB.X1
|
|
|
|
|
sta DX
|
|
|
|
|
lda CB.Cache+S.CB.X2+1
|
|
|
|
|
sbc CB.Cache+S.CB.X1+1
|
|
|
|
|
sta DX+1 DX = X2 - X1
|
|
|
|
|
|
|
|
|
|
bmi .1 DX < 0....
|
|
|
|
|
ora DX
|
|
|
|
|
bne .2 DX > 0...
|
|
|
|
|
|
2020-10-06 06:27:35 +00:00
|
|
|
|
lda #S.CB.CMD.VLINE DX=0 : VLINE Y1,Y2 At X1
|
|
|
|
|
bra .20
|
|
|
|
|
*--------------------------------------
|
2017-11-29 16:28:13 +00:00
|
|
|
|
.1 >SWAP16 CB.Cache+S.CB.X1,CB.Cache+S.CB.X2
|
2020-10-06 06:27:35 +00:00
|
|
|
|
>SWAP16 CB.Cache+S.CB.Y1,CB.Cache+S.CB.Y2
|
2017-11-29 16:28:13 +00:00
|
|
|
|
|
|
|
|
|
>NOT16 DX swap X1/X2, Y1/Y2, set DX=-DX (DX positive)
|
|
|
|
|
|
|
|
|
|
.2 lda #1
|
|
|
|
|
sta IY
|
|
|
|
|
|
|
|
|
|
lda CB.Cache+S.CB.Y2
|
|
|
|
|
sec
|
|
|
|
|
sbc CB.Cache+S.CB.Y1
|
|
|
|
|
sta DY
|
2020-10-06 06:27:35 +00:00
|
|
|
|
lda CB.Cache+S.CB.Y2+1
|
|
|
|
|
sbc CB.Cache+S.CB.Y1+1
|
2017-11-29 16:28:13 +00:00
|
|
|
|
sta DY+1 DY = Y2 - Y1
|
2020-10-06 06:27:35 +00:00
|
|
|
|
|
2017-11-29 16:28:13 +00:00
|
|
|
|
bmi .3 DY < 0 ...
|
2020-10-06 06:27:35 +00:00
|
|
|
|
|
2017-11-29 16:28:13 +00:00
|
|
|
|
ora DY
|
|
|
|
|
bne .4
|
2020-10-06 06:27:35 +00:00
|
|
|
|
|
|
|
|
|
lda #S.CB.CMD.HLINE DY=0 : HLINE X1,X2 At Y1
|
|
|
|
|
|
|
|
|
|
.20 sta CB.Cache+S.CB.CMD
|
|
|
|
|
|
|
|
|
|
jsr CLIP.CB.Cache
|
|
|
|
|
bcs .8
|
|
|
|
|
|
|
|
|
|
jmp GFXWrite.CB
|
|
|
|
|
.8 rts
|
|
|
|
|
*--------------------------------------
|
2017-11-29 16:28:13 +00:00
|
|
|
|
.3 >NOT16 DY set DY=-DY
|
|
|
|
|
lda #$ff
|
|
|
|
|
sta IY set IY=-1
|
|
|
|
|
|
2020-10-06 06:27:35 +00:00
|
|
|
|
.4 jsr CLIP.Line
|
|
|
|
|
bcs .8
|
|
|
|
|
|
|
|
|
|
lda #S.CB.CMD.SETPIXEL
|
2017-11-29 16:28:13 +00:00
|
|
|
|
sta CB.Cache+S.CB.CMD
|
2019-01-10 16:26:58 +00:00
|
|
|
|
jsr GFXWrite.CB
|
2017-11-29 16:28:13 +00:00
|
|
|
|
lda DX
|
|
|
|
|
sec
|
|
|
|
|
sbc DY
|
|
|
|
|
tax
|
|
|
|
|
lda DX+1
|
2020-10-06 06:27:35 +00:00
|
|
|
|
sbc DY+1
|
2017-11-29 16:28:13 +00:00
|
|
|
|
bmi DrawLine.IncY DY is greater than DX, we will increase on Y axis
|
2020-10-06 06:27:35 +00:00
|
|
|
|
|
2017-11-29 16:28:13 +00:00
|
|
|
|
txa
|
|
|
|
|
beq DrawLine.IncXY DX=DY, go inc X & Y
|
|
|
|
|
|
2020-10-06 06:27:35 +00:00
|
|
|
|
jmp DrawLine.IncX DY is lower than DX, we will increase on X axis
|
|
|
|
|
*--------------------------------------
|
2017-11-29 16:28:13 +00:00
|
|
|
|
DrawLine.IncXY lda DX DX=DY
|
|
|
|
|
eor #$ff
|
|
|
|
|
sta Counter
|
|
|
|
|
lda DX+1
|
|
|
|
|
eor #$ff
|
|
|
|
|
sta Counter+1
|
|
|
|
|
|
|
|
|
|
.1 inc Counter
|
|
|
|
|
bne .2
|
2020-10-06 06:27:35 +00:00
|
|
|
|
|
2017-11-29 16:28:13 +00:00
|
|
|
|
inc Counter+1
|
|
|
|
|
beq .8
|
2020-10-06 06:27:35 +00:00
|
|
|
|
|
2017-11-29 16:28:13 +00:00
|
|
|
|
.2 inc CB.Cache+S.CB.X1
|
|
|
|
|
bne .3
|
2020-10-06 06:27:35 +00:00
|
|
|
|
|
2017-11-29 16:28:13 +00:00
|
|
|
|
inc CB.Cache+S.CB.X1+1
|
|
|
|
|
.3 lda CB.Cache+S.CB.Y1 Y1=Y1+IY
|
|
|
|
|
clc
|
|
|
|
|
adc IY
|
|
|
|
|
sta CB.Cache+S.CB.Y1
|
2019-01-10 16:26:58 +00:00
|
|
|
|
jsr GFXWrite.CB
|
2017-11-29 16:28:13 +00:00
|
|
|
|
bra .1
|
2020-10-01 06:08:33 +00:00
|
|
|
|
|
2020-10-06 06:27:35 +00:00
|
|
|
|
.8 rts
|
|
|
|
|
*--------------------------------------
|
2017-11-29 16:28:13 +00:00
|
|
|
|
DrawLine.IncY lda DY
|
|
|
|
|
eor #$ff
|
|
|
|
|
sta Counter
|
|
|
|
|
lda DY+1
|
|
|
|
|
eor #$ff
|
|
|
|
|
sta Counter+1
|
|
|
|
|
|
|
|
|
|
lda DX IE=2*DX
|
|
|
|
|
asl
|
|
|
|
|
sta IE
|
|
|
|
|
pha
|
|
|
|
|
lda DX+1
|
|
|
|
|
rol
|
|
|
|
|
sta IE+1
|
|
|
|
|
tax
|
|
|
|
|
|
|
|
|
|
pla D=IE-DY
|
|
|
|
|
sec
|
|
|
|
|
sbc DY
|
|
|
|
|
sta D
|
|
|
|
|
txa
|
|
|
|
|
sbc DY+1
|
|
|
|
|
sta D+1
|
|
|
|
|
lda DX INE=2*(DX-DY)
|
|
|
|
|
sec
|
|
|
|
|
sbc DY
|
|
|
|
|
pha
|
|
|
|
|
lda DX+1
|
|
|
|
|
sbc DY+1
|
|
|
|
|
tax
|
|
|
|
|
pla
|
|
|
|
|
asl
|
|
|
|
|
sta INE
|
|
|
|
|
txa
|
|
|
|
|
rol
|
|
|
|
|
sta INE+1
|
2020-10-06 06:27:35 +00:00
|
|
|
|
|
2017-11-29 16:28:13 +00:00
|
|
|
|
.1 inc Counter
|
|
|
|
|
bne .2
|
2020-10-02 14:57:05 +00:00
|
|
|
|
|
2017-11-29 16:28:13 +00:00
|
|
|
|
inc Counter+1
|
|
|
|
|
beq .8
|
|
|
|
|
|
|
|
|
|
.2 lda D+1 IF D < 0 ...
|
|
|
|
|
bmi .4
|
2020-10-02 14:57:05 +00:00
|
|
|
|
|
2017-11-29 16:28:13 +00:00
|
|
|
|
lda D D > 0 : D=D+INE
|
|
|
|
|
clc
|
|
|
|
|
adc INE
|
|
|
|
|
sta D
|
|
|
|
|
lda D+1
|
|
|
|
|
adc INE+1
|
|
|
|
|
sta D+1
|
|
|
|
|
inc CB.Cache+S.CB.X1 X1=X1+1
|
|
|
|
|
bne .5
|
2020-10-02 14:57:05 +00:00
|
|
|
|
|
2017-11-29 16:28:13 +00:00
|
|
|
|
inc CB.Cache+S.CB.X1+1
|
2019-10-03 06:25:27 +00:00
|
|
|
|
bra .5
|
2020-10-02 14:57:05 +00:00
|
|
|
|
|
2017-11-29 16:28:13 +00:00
|
|
|
|
.4 lda D D > 0 : D=D+IE
|
|
|
|
|
clc
|
|
|
|
|
adc IE
|
|
|
|
|
sta D
|
|
|
|
|
lda D+1
|
|
|
|
|
adc IE+1
|
|
|
|
|
sta D+1
|
2020-10-02 14:57:05 +00:00
|
|
|
|
|
2017-11-29 16:28:13 +00:00
|
|
|
|
.5 lda CB.Cache+S.CB.Y1 Y1=Y1+IY
|
|
|
|
|
clc
|
|
|
|
|
adc IY
|
|
|
|
|
sta CB.Cache+S.CB.Y1
|
2019-01-10 16:26:58 +00:00
|
|
|
|
jsr GFXWrite.CB
|
2017-11-29 16:28:13 +00:00
|
|
|
|
bra .1
|
2020-10-02 14:57:05 +00:00
|
|
|
|
|
2017-11-29 16:28:13 +00:00
|
|
|
|
.8 rts
|
2020-10-06 06:27:35 +00:00
|
|
|
|
*--------------------------------------
|
2017-11-29 16:28:13 +00:00
|
|
|
|
DrawLine.IncX lda DX
|
|
|
|
|
eor #$ff
|
|
|
|
|
sta Counter
|
|
|
|
|
lda DX+1
|
|
|
|
|
eor #$ff
|
|
|
|
|
sta Counter+1
|
|
|
|
|
lda DY IE=2*DY
|
|
|
|
|
asl
|
|
|
|
|
sta IE
|
|
|
|
|
pha
|
|
|
|
|
* lda DY+1
|
|
|
|
|
lda #0
|
|
|
|
|
rol
|
|
|
|
|
sta IE+1
|
|
|
|
|
tax
|
|
|
|
|
pla D=IE-DX
|
|
|
|
|
sec
|
|
|
|
|
sbc DX
|
|
|
|
|
sta D
|
|
|
|
|
txa
|
|
|
|
|
sbc DX+1
|
|
|
|
|
sta D+1
|
|
|
|
|
lda DY INE=2*(DY-DX)
|
|
|
|
|
sec
|
|
|
|
|
sbc DX
|
|
|
|
|
pha
|
|
|
|
|
* lda DY+1
|
|
|
|
|
lda #0
|
|
|
|
|
sbc DX+1
|
|
|
|
|
tax
|
|
|
|
|
pla
|
|
|
|
|
asl
|
|
|
|
|
sta INE
|
|
|
|
|
txa
|
|
|
|
|
rol
|
|
|
|
|
sta INE+1
|
2020-10-06 06:27:35 +00:00
|
|
|
|
|
2017-11-29 16:28:13 +00:00
|
|
|
|
.1 inc Counter
|
|
|
|
|
bne .2
|
2020-10-02 14:57:05 +00:00
|
|
|
|
|
2017-11-29 16:28:13 +00:00
|
|
|
|
inc Counter+1
|
|
|
|
|
beq .8
|
|
|
|
|
|
|
|
|
|
.2 lda D+1 ID D < 0 ....
|
|
|
|
|
bmi .4
|
2020-10-02 14:57:05 +00:00
|
|
|
|
|
2017-11-29 16:28:13 +00:00
|
|
|
|
lda D D > 0 : D=D+INE
|
|
|
|
|
clc
|
|
|
|
|
adc INE
|
|
|
|
|
sta D
|
|
|
|
|
lda D+1
|
|
|
|
|
adc INE+1
|
|
|
|
|
sta D+1
|
|
|
|
|
lda CB.Cache+S.CB.Y1 Y1=Y1+IY
|
|
|
|
|
clc
|
|
|
|
|
adc IY
|
|
|
|
|
sta CB.Cache+S.CB.Y1
|
2019-10-03 06:25:27 +00:00
|
|
|
|
bra .5
|
2020-10-02 14:57:05 +00:00
|
|
|
|
|
2017-11-29 16:28:13 +00:00
|
|
|
|
.4 lda D D < 0 : D=D+IE
|
|
|
|
|
clc
|
|
|
|
|
adc IE
|
|
|
|
|
sta D
|
2017-11-30 16:33:33 +00:00
|
|
|
|
lda D+1
|
2017-11-29 16:28:13 +00:00
|
|
|
|
adc IE+1
|
|
|
|
|
sta D+1
|
2020-10-06 06:27:35 +00:00
|
|
|
|
|
2017-11-29 16:28:13 +00:00
|
|
|
|
.5 inc CB.Cache+S.CB.X1 X1=X1+1
|
|
|
|
|
bne .6
|
2020-10-02 14:57:05 +00:00
|
|
|
|
|
2017-11-29 16:28:13 +00:00
|
|
|
|
inc CB.Cache+S.CB.X1+1
|
2020-10-02 14:57:05 +00:00
|
|
|
|
|
2019-01-10 16:26:58 +00:00
|
|
|
|
.6 jsr GFXWrite.CB
|
2017-11-29 16:28:13 +00:00
|
|
|
|
bra .1
|
2020-10-02 14:57:05 +00:00
|
|
|
|
|
2017-11-29 16:28:13 +00:00
|
|
|
|
.8 rts
|
|
|
|
|
*--------------------------------------
|
2020-10-06 06:27:35 +00:00
|
|
|
|
* drawtext (short int OP, short int hFONT, int X1, int Y1)
|
|
|
|
|
*--------------------------------------
|
|
|
|
|
DrawText clc
|
|
|
|
|
rts
|
|
|
|
|
*--------------------------------------
|
|
|
|
|
*
|
|
|
|
|
*--------------------------------------
|
|
|
|
|
DRAW.ToGlobal >LDYA ZPWNDPtr
|
|
|
|
|
>STYA ZPPtr1
|
|
|
|
|
|
|
|
|
|
.1 ldy #S.OBJ.X1
|
|
|
|
|
ldx #S.CB.X1
|
|
|
|
|
jsr DRAW.AddP1YtoCBX
|
|
|
|
|
|
|
|
|
|
ldy #S.WND.InnerY1
|
|
|
|
|
ldx #S.CB.Y1
|
|
|
|
|
jsr DRAW.AddP1YtoCBX
|
|
|
|
|
|
|
|
|
|
ldy #S.OBJ.X1
|
|
|
|
|
ldx #S.CB.X2
|
|
|
|
|
jsr DRAW.AddP1YtoCBX
|
|
|
|
|
|
|
|
|
|
ldy #S.WND.InnerY1
|
|
|
|
|
ldx #S.CB.Y2
|
|
|
|
|
jsr DRAW.AddP1YtoCBX
|
|
|
|
|
|
|
|
|
|
ldy #S.OBJ.hPARENT+1
|
|
|
|
|
lda (ZPPtr1),y
|
|
|
|
|
beq .8 00xx = hDev
|
|
|
|
|
|
|
|
|
|
tax
|
|
|
|
|
dey
|
|
|
|
|
lda (ZPPtr1),y
|
|
|
|
|
|
|
|
|
|
sta ZPPtr1
|
|
|
|
|
stx ZPPtr1+1
|
|
|
|
|
bra .1
|
|
|
|
|
|
|
|
|
|
.8 clc
|
|
|
|
|
rts
|
|
|
|
|
*--------------------------------------
|
|
|
|
|
DRAW.AddP1YtoCBX
|
|
|
|
|
lda (ZPPtr1),y
|
|
|
|
|
clc
|
|
|
|
|
adc CB.Cache,x
|
|
|
|
|
sta CB.Cache,x
|
|
|
|
|
iny
|
|
|
|
|
lda (ZPPtr1),y
|
|
|
|
|
adc CB.Cache+1,x
|
|
|
|
|
sta CB.Cache+1,x
|
|
|
|
|
rts
|
|
|
|
|
*--------------------------------------
|
|
|
|
|
DRAW.GetInnerW ldy #S.OBJ.X1
|
|
|
|
|
lda (ZPWNDPtr),y
|
|
|
|
|
sta OBJ.Cache+S.OBJ.X1
|
|
|
|
|
iny
|
|
|
|
|
lda (ZPWNDPtr),y
|
|
|
|
|
sta OBJ.Cache+S.OBJ.X1+1
|
|
|
|
|
|
|
|
|
|
ldy #S.WND.InnerY1
|
|
|
|
|
lda (ZPWNDPtr),y
|
|
|
|
|
sta OBJ.Cache+S.OBJ.Y1
|
|
|
|
|
iny
|
|
|
|
|
lda (ZPWNDPtr),y
|
|
|
|
|
sta OBJ.Cache+S.OBJ.Y1+1
|
|
|
|
|
|
|
|
|
|
ldy #S.WND.InnerW
|
|
|
|
|
lda (ZPWNDPtr),y
|
|
|
|
|
sta OBJ.Cache+S.OBJ.W
|
|
|
|
|
iny
|
|
|
|
|
lda (ZPWNDPtr),y
|
|
|
|
|
sta OBJ.Cache+S.OBJ.W+1
|
|
|
|
|
|
|
|
|
|
iny #S.WND.InnerH
|
|
|
|
|
lda (ZPWNDPtr),y
|
|
|
|
|
sta OBJ.Cache+S.OBJ.H
|
|
|
|
|
|
|
|
|
|
iny
|
|
|
|
|
lda (ZPWNDPtr),y
|
|
|
|
|
sta OBJ.Cache+S.OBJ.H+1
|
|
|
|
|
|
|
|
|
|
>LDYA L.OBJ.Cache
|
|
|
|
|
jmp OBJ.SetX2Y2
|
2020-10-06 15:23:40 +00:00
|
|
|
|
|
|
|
|
|
*--------------------------------------
|
|
|
|
|
DrawCBPtrToYA1 pha
|
|
|
|
|
|
|
|
|
|
lda #0
|
|
|
|
|
sta (ZPCBBufPtr)
|
|
|
|
|
|
|
|
|
|
pla
|
|
|
|
|
|
|
|
|
|
jsr DrawCBPtrToYA
|
|
|
|
|
|
|
|
|
|
lda hCBBuf
|
|
|
|
|
>SYSCALL FreeMem
|
|
|
|
|
rts
|
2020-10-06 06:27:35 +00:00
|
|
|
|
*--------------------------------------
|
|
|
|
|
DrawCBBufToYA ldx L.CB.Buf
|
|
|
|
|
stx ZPCBPtr
|
|
|
|
|
ldx L.CB.Buf+1
|
|
|
|
|
stx ZPCBPtr+1
|
|
|
|
|
|
|
|
|
|
DrawCBPtrToYA bit CUR.bVisible
|
|
|
|
|
bpl .10
|
|
|
|
|
|
|
|
|
|
pha
|
|
|
|
|
phy
|
|
|
|
|
jsr HideCursor.I
|
|
|
|
|
ply
|
|
|
|
|
pla
|
|
|
|
|
|
|
|
|
|
.10 jsr OBJ.GetInCache
|
|
|
|
|
|
|
|
|
|
.1 lda (ZPCBPtr)
|
|
|
|
|
beq .8
|
|
|
|
|
|
|
|
|
|
>LDYA ZPCBPtr
|
|
|
|
|
jsr CB.GetInCache A = CB.CMD
|
|
|
|
|
|
|
|
|
|
cmp #S.CB.CMD.DRAWTEXT2
|
|
|
|
|
bne .6
|
|
|
|
|
|
|
|
|
|
lda #S.CB.CMD.DRAWTEXT+S.CB.CMD.OSD
|
|
|
|
|
sta CB.Cache+S.CB.CMD
|
|
|
|
|
jsr GFXWrite.CB
|
|
|
|
|
bcs .9
|
|
|
|
|
|
|
|
|
|
jsr CLIP.CB.Cache
|
|
|
|
|
bcs .2
|
|
|
|
|
|
|
|
|
|
jsr GFXWrite.CB
|
|
|
|
|
|
|
|
|
|
.2 lda CB.Cache+S.CB.SrcPtr
|
|
|
|
|
>SYSCALL2 FreeStkObj
|
|
|
|
|
bra .7
|
|
|
|
|
|
|
|
|
|
.6 jsr CLIP.CB.Cache
|
|
|
|
|
bcs .7
|
|
|
|
|
|
|
|
|
|
jsr GFXWrite.CB
|
|
|
|
|
|
|
|
|
|
.7 lda (ZPCBPtr) Get Cmd
|
|
|
|
|
lsr
|
|
|
|
|
tax
|
|
|
|
|
lda CB.CmdLen-1,x
|
|
|
|
|
sec +1
|
|
|
|
|
adc ZPCBPtr
|
|
|
|
|
sta ZPCBPtr
|
|
|
|
|
bcc .1
|
|
|
|
|
|
|
|
|
|
inc ZPCBPtr+1
|
|
|
|
|
bra .1
|
|
|
|
|
|
|
|
|
|
.8 clc
|
|
|
|
|
|
|
|
|
|
.9 bit CUR.bVisible
|
|
|
|
|
bpl .99
|
|
|
|
|
|
|
|
|
|
php
|
|
|
|
|
pha
|
|
|
|
|
jsr ShowCursor.I
|
|
|
|
|
pla
|
|
|
|
|
plp
|
|
|
|
|
|
|
|
|
|
.99 rts
|
|
|
|
|
*--------------------------------------
|
2017-11-29 16:28:13 +00:00
|
|
|
|
MAN
|
2020-06-30 15:32:23 +00:00
|
|
|
|
SAVE usr/src/lib/libgui.s.draw
|
|
|
|
|
LOAD usr/src/lib/libgui.s
|
2017-11-29 16:28:13 +00:00
|
|
|
|
ASM
|