2017-11-29 16:28:13 +00:00
|
|
|
|
PR#3
|
|
|
|
|
PREFIX /A2OSX.BUILD
|
|
|
|
|
NEW
|
|
|
|
|
INC 1
|
|
|
|
|
AUTO 6
|
|
|
|
|
.LIST OFF
|
|
|
|
|
*--------------------------------------
|
2017-11-30 16:33:33 +00:00
|
|
|
|
* CLIPPING Functions:
|
|
|
|
|
* In:
|
|
|
|
|
* Graphic Context in GC.Cache
|
2017-12-01 15:53:29 +00:00
|
|
|
|
* YA = Control Block
|
|
|
|
|
* Out:
|
|
|
|
|
* CC : CB.Cache clipped & visible
|
|
|
|
|
* CS : CB.Cache invisible
|
2017-11-30 16:33:33 +00:00
|
|
|
|
*--------------------------------------
|
2017-12-01 15:53:29 +00:00
|
|
|
|
CLIP.YA >STYA ZPCmdPtr
|
|
|
|
|
lda (ZPCmdPtr)
|
|
|
|
|
tax
|
|
|
|
|
jmp (J.CLIP,x)
|
|
|
|
|
*--------------------------------------
|
|
|
|
|
CLIP.Point
|
|
|
|
|
CLIP.HLine
|
|
|
|
|
CLIP.VLine
|
|
|
|
|
|
|
|
|
|
CLIP.Rect
|
2017-11-30 16:33:33 +00:00
|
|
|
|
|
2017-12-01 15:53:29 +00:00
|
|
|
|
clc
|
|
|
|
|
rts
|
|
|
|
|
*--------------------------------------
|
|
|
|
|
CLIP.BitBlt ldy #S.CB.DestX+1
|
|
|
|
|
lda (ZPCmdPtr),y
|
|
|
|
|
tax
|
|
|
|
|
dey
|
|
|
|
|
lda (ZPCmdPtr),y
|
|
|
|
|
pha
|
|
|
|
|
|
|
|
|
|
>SCMPAX GC.Cache+S.GC.X2 DestX after X2....exit
|
|
|
|
|
bmi .9
|
|
|
|
|
|
|
|
|
|
pla
|
|
|
|
|
>SCMPAX GC.Cache+S.GC.X1 DestX Inside X1-X2, go check if X1+fit in
|
|
|
|
|
bpl .1
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
.1
|
|
|
|
|
|
|
|
|
|
ldy #S.CB.DestY+1
|
|
|
|
|
lda (ZPCmdPtr),y
|
|
|
|
|
tax
|
|
|
|
|
dey
|
|
|
|
|
lda (ZPCmdPtr),y
|
|
|
|
|
|
|
|
|
|
>SCMPAX GC.Cache+S.GC.Y2
|
|
|
|
|
bpl .9
|
|
|
|
|
|
|
|
|
|
clc
|
|
|
|
|
rts
|
|
|
|
|
|
|
|
|
|
.9 pla
|
|
|
|
|
sec
|
|
|
|
|
rts
|
2017-11-30 16:33:33 +00:00
|
|
|
|
*--------------------------------------
|
2017-12-01 15:53:29 +00:00
|
|
|
|
CLIP.Line.LEFT .EQ 1
|
|
|
|
|
CLIP.Line.RIGHT .EQ 2
|
|
|
|
|
CLIP.Line.BOTTOM .EQ 4
|
|
|
|
|
CLIP.Line.TOP .EQ 8
|
2017-11-29 16:28:13 +00:00
|
|
|
|
*--------------------------------------
|
2017-12-01 15:53:29 +00:00
|
|
|
|
CLIP.Line jsr CLIP.Line.EncodeP1
|
|
|
|
|
jsr CLIP.Line.EncodeP2
|
2017-11-29 16:28:13 +00:00
|
|
|
|
|
2017-12-01 15:53:29 +00:00
|
|
|
|
.1 lda CLIP.Line.P1
|
|
|
|
|
ora CLIP.Line.P2
|
2017-11-29 16:28:13 +00:00
|
|
|
|
beq .88
|
|
|
|
|
|
2017-12-01 15:53:29 +00:00
|
|
|
|
lda CLIP.Line.P1
|
|
|
|
|
and CLIP.Line.P2
|
2017-11-29 16:28:13 +00:00
|
|
|
|
bne .99
|
|
|
|
|
|
2017-12-01 15:53:29 +00:00
|
|
|
|
lda CLIP.Line.P1
|
2017-11-29 16:28:13 +00:00
|
|
|
|
beq .5
|
|
|
|
|
|
2017-12-01 15:53:29 +00:00
|
|
|
|
bit #CLIP.Line.TOP
|
2017-11-29 16:28:13 +00:00
|
|
|
|
beq .2
|
|
|
|
|
* Y1 is above S.CB.Y1....
|
|
|
|
|
* DY=Y2-Y1;
|
|
|
|
|
|
2017-12-01 15:53:29 +00:00
|
|
|
|
jsr CLIP.Line.EncodeP1
|
2017-11-29 16:28:13 +00:00
|
|
|
|
bra .1
|
|
|
|
|
|
2017-12-01 15:53:29 +00:00
|
|
|
|
.2 bit #CLIP.Line.BOTTOM
|
2017-11-29 16:28:13 +00:00
|
|
|
|
beq .3
|
|
|
|
|
* Y1 is below S.CB.Y2....
|
|
|
|
|
|
2017-12-01 15:53:29 +00:00
|
|
|
|
jsr CLIP.Line.EncodeP1
|
2017-11-29 16:28:13 +00:00
|
|
|
|
bra .1
|
|
|
|
|
|
2017-12-01 15:53:29 +00:00
|
|
|
|
.3 bit #CLIP.Line.RIGHT
|
2017-11-29 16:28:13 +00:00
|
|
|
|
beq .4
|
|
|
|
|
* X1 is after S.CB.X2....
|
2017-12-01 15:53:29 +00:00
|
|
|
|
jsr CLIP.Line.EncodeP1
|
2017-11-29 16:28:13 +00:00
|
|
|
|
bra .1
|
|
|
|
|
* X1 is before S.CB.X1....
|
|
|
|
|
.4
|
2017-12-01 15:53:29 +00:00
|
|
|
|
jsr CLIP.Line.EncodeP1
|
2017-11-29 16:28:13 +00:00
|
|
|
|
bra .1
|
|
|
|
|
* P2
|
2017-12-01 15:53:29 +00:00
|
|
|
|
.5 lda CLIP.Line.P2
|
2017-11-29 16:28:13 +00:00
|
|
|
|
|
2017-12-01 15:53:29 +00:00
|
|
|
|
bit #CLIP.Line.TOP
|
2017-11-29 16:28:13 +00:00
|
|
|
|
beq .6
|
|
|
|
|
* Y2 is above S.CB.Y1....
|
2017-12-01 15:53:29 +00:00
|
|
|
|
jsr CLIP.Line.EncodeP2
|
2017-11-29 16:28:13 +00:00
|
|
|
|
bra .1
|
|
|
|
|
|
2017-12-01 15:53:29 +00:00
|
|
|
|
.6 bit #CLIP.Line.BOTTOM
|
2017-11-29 16:28:13 +00:00
|
|
|
|
beq .7
|
|
|
|
|
* Y2 is below S.CB.Y2....
|
2017-12-01 15:53:29 +00:00
|
|
|
|
jsr CLIP.Line.EncodeP2
|
2017-11-29 16:28:13 +00:00
|
|
|
|
bra .1
|
|
|
|
|
|
2017-12-01 15:53:29 +00:00
|
|
|
|
.7 bit #CLIP.Line.RIGHT
|
2017-11-29 16:28:13 +00:00
|
|
|
|
beq .8
|
|
|
|
|
* X2 is after S.CB.X2....
|
2017-12-01 15:53:29 +00:00
|
|
|
|
jsr CLIP.Line.EncodeP2
|
2017-11-29 16:28:13 +00:00
|
|
|
|
bra .1
|
|
|
|
|
* X2 is before S.CB.X1....
|
|
|
|
|
.8
|
2017-12-01 15:53:29 +00:00
|
|
|
|
jsr CLIP.Line.EncodeP2
|
2017-11-29 16:28:13 +00:00
|
|
|
|
bra .1
|
|
|
|
|
|
|
|
|
|
.88 clc
|
|
|
|
|
rts
|
|
|
|
|
|
|
|
|
|
.99 sec
|
|
|
|
|
rts
|
|
|
|
|
*--------------------------------------
|
2017-12-01 15:53:29 +00:00
|
|
|
|
CLIP.Line.EncodeP1
|
2017-11-29 16:28:13 +00:00
|
|
|
|
ldy #0
|
|
|
|
|
|
|
|
|
|
lda CB.Cache+S.CB.X1
|
|
|
|
|
ldx CB.Cache+S.CB.X1+1
|
2017-12-01 15:53:29 +00:00
|
|
|
|
jsr CLIP.Line.EncodeX.AX
|
2017-11-29 16:28:13 +00:00
|
|
|
|
|
|
|
|
|
tay
|
|
|
|
|
|
|
|
|
|
lda CB.Cache+S.CB.Y1
|
|
|
|
|
ldx CB.Cache+S.CB.Y1+1
|
2017-12-01 15:53:29 +00:00
|
|
|
|
jsr CLIP.Line.EncodeY.AX
|
2017-11-29 16:28:13 +00:00
|
|
|
|
|
2017-12-01 15:53:29 +00:00
|
|
|
|
sta CLIP.Line.P1
|
2017-11-29 16:28:13 +00:00
|
|
|
|
rts
|
|
|
|
|
*--------------------------------------
|
2017-12-01 15:53:29 +00:00
|
|
|
|
CLIP.Line.EncodeP2
|
2017-11-29 16:28:13 +00:00
|
|
|
|
ldy #0
|
|
|
|
|
|
|
|
|
|
lda CB.Cache+S.CB.X2
|
|
|
|
|
ldx CB.Cache+S.CB.X2+1
|
2017-12-01 15:53:29 +00:00
|
|
|
|
jsr CLIP.Line.EncodeX.AX
|
2017-11-29 16:28:13 +00:00
|
|
|
|
|
|
|
|
|
tay
|
|
|
|
|
|
|
|
|
|
lda CB.Cache+S.CB.Y2
|
|
|
|
|
ldx CB.Cache+S.CB.Y2+1
|
2017-12-01 15:53:29 +00:00
|
|
|
|
jsr CLIP.Line.EncodeY.AX
|
2017-11-29 16:28:13 +00:00
|
|
|
|
|
2017-12-01 15:53:29 +00:00
|
|
|
|
sta CLIP.Line.P2
|
2017-11-29 16:28:13 +00:00
|
|
|
|
rts
|
|
|
|
|
*--------------------------------------
|
2017-12-01 15:53:29 +00:00
|
|
|
|
CLIP.Line.EncodeX.AX
|
2017-11-29 16:28:13 +00:00
|
|
|
|
pha
|
|
|
|
|
>SCMPAX GC.Cache+S.GC.X1
|
|
|
|
|
bmi .1
|
|
|
|
|
tya
|
2017-12-01 15:53:29 +00:00
|
|
|
|
ora #CLIP.Line.LEFT
|
2017-11-29 16:28:13 +00:00
|
|
|
|
plx
|
|
|
|
|
rts
|
|
|
|
|
|
|
|
|
|
.1 pla
|
|
|
|
|
>SCMPAX GC.Cache+S.GC.X1
|
|
|
|
|
bpl .8
|
|
|
|
|
tya
|
2017-12-01 15:53:29 +00:00
|
|
|
|
ora #CLIP.Line.RIGHT
|
2017-11-29 16:28:13 +00:00
|
|
|
|
.8 rts
|
|
|
|
|
*--------------------------------------
|
2017-12-01 15:53:29 +00:00
|
|
|
|
CLIP.Line.EncodeY.AX
|
2017-11-29 16:28:13 +00:00
|
|
|
|
pha
|
|
|
|
|
>SCMPAX GC.Cache+S.GC.Y1
|
|
|
|
|
bmi .1
|
|
|
|
|
tya
|
2017-12-01 15:53:29 +00:00
|
|
|
|
ora #CLIP.Line.TOP
|
2017-11-29 16:28:13 +00:00
|
|
|
|
plx
|
|
|
|
|
rts
|
|
|
|
|
|
|
|
|
|
.1 pla
|
|
|
|
|
>SCMPAX GC.Cache+S.GC.Y1
|
|
|
|
|
bpl .8
|
|
|
|
|
tya
|
2017-12-01 15:53:29 +00:00
|
|
|
|
ora #CLIP.Line.BOTTOM
|
2017-11-29 16:28:13 +00:00
|
|
|
|
|
|
|
|
|
.8 rts
|
|
|
|
|
*--------------------------------------
|
|
|
|
|
MAN
|
|
|
|
|
SAVE /A2OSX.SRC/LIB/LIBGUI.S.CLIP
|
|
|
|
|
LOAD /A2OSX.SRC/LIB/LIBGUI.S
|
|
|
|
|
ASM
|