mirror of
https://github.com/A2osX/A2osX.git
synced 2025-02-05 23:30:15 +00:00
Kernel 0.9.1 : DHGR Driver, BitBLT, mouse pointer, Off Screen Driver
This commit is contained in:
parent
ab08792170
commit
940866d6ed
Binary file not shown.
Binary file not shown.
@ -239,7 +239,7 @@ LBUF.DrawAtY.AND.ORA
|
||||
sta $C000,y
|
||||
ldy COL.OFS,x
|
||||
|
||||
>DEBUG
|
||||
* >DEBUG
|
||||
lda LBUF.MASK,x get MASK bits
|
||||
ora LBUF.C2.MASK
|
||||
and (ZPBasePtr),y
|
||||
|
@ -49,15 +49,18 @@ S.CB.DstPtr .EQ 18
|
||||
*
|
||||
S.CB .EQ 20
|
||||
*--------------------------------------
|
||||
S.DC.hDev .EQ 0
|
||||
S.DC.hMem .EQ 1
|
||||
S.DC.Parent .EQ 2
|
||||
S.DC.X .EQ 4
|
||||
S.DC.Y .EQ 6
|
||||
S.DC.W .EQ 8
|
||||
S.DC.H .EQ 10
|
||||
S.GC.hDev .EQ 0
|
||||
S.GC.hMem .EQ 1
|
||||
S.GC.Parent .EQ 2
|
||||
*
|
||||
S.DC .EQ 12
|
||||
S.GC.X1 .EQ 4
|
||||
S.GC.Y1 .EQ 6
|
||||
S.GC.X2 .EQ 8
|
||||
S.GC.Y2 .EQ 10
|
||||
S.GC.W .EQ 12
|
||||
S.GC.H .EQ 14
|
||||
*
|
||||
S.GC .EQ 16
|
||||
*--------------------------------------
|
||||
CUR.T.ARROW .EQ 0
|
||||
CUR.T.PLUS .EQ 2
|
||||
|
154
LIB/LIBGUI.S.CLIP.txt
Normal file
154
LIB/LIBGUI.S.CLIP.txt
Normal file
@ -0,0 +1,154 @@
|
||||
PR#3
|
||||
PREFIX /A2OSX.BUILD
|
||||
NEW
|
||||
INC 1
|
||||
AUTO 6
|
||||
.LIST OFF
|
||||
*--------------------------------------
|
||||
ClipLine.LEFT .EQ 1
|
||||
ClipLine.RIGHT .EQ 2
|
||||
ClipLine.BOTTOM .EQ 4
|
||||
ClipLine.TOP .EQ 8
|
||||
*--------------------------------------
|
||||
* In:
|
||||
* Control Block in CB.Cache
|
||||
* Graphic Context in GC.Cache
|
||||
*--------------------------------------
|
||||
ClipLine jsr ClipLine.EncodeP1
|
||||
jsr ClipLine.EncodeP2
|
||||
|
||||
.1 lda ClipLine.P1
|
||||
ora ClipLine.P2
|
||||
beq .88
|
||||
|
||||
lda ClipLine.P1
|
||||
and ClipLine.P2
|
||||
bne .99
|
||||
|
||||
lda ClipLine.P1
|
||||
beq .5
|
||||
|
||||
bit #ClipLine.TOP
|
||||
beq .2
|
||||
* Y1 is above S.CB.Y1....
|
||||
* DY=Y2-Y1;
|
||||
|
||||
jsr ClipLine.EncodeP1
|
||||
bra .1
|
||||
|
||||
.2 bit #ClipLine.BOTTOM
|
||||
beq .3
|
||||
* Y1 is below S.CB.Y2....
|
||||
|
||||
jsr ClipLine.EncodeP1
|
||||
bra .1
|
||||
|
||||
.3 bit #ClipLine.RIGHT
|
||||
beq .4
|
||||
* X1 is after S.CB.X2....
|
||||
jsr ClipLine.EncodeP1
|
||||
bra .1
|
||||
* X1 is before S.CB.X1....
|
||||
.4
|
||||
jsr ClipLine.EncodeP1
|
||||
bra .1
|
||||
* P2
|
||||
.5 lda ClipLine.P2
|
||||
|
||||
bit #ClipLine.TOP
|
||||
beq .6
|
||||
* Y2 is above S.CB.Y1....
|
||||
jsr ClipLine.EncodeP2
|
||||
bra .1
|
||||
|
||||
.6 bit #ClipLine.BOTTOM
|
||||
beq .7
|
||||
* Y2 is below S.CB.Y2....
|
||||
jsr ClipLine.EncodeP2
|
||||
bra .1
|
||||
|
||||
.7 bit #ClipLine.RIGHT
|
||||
beq .8
|
||||
* X2 is after S.CB.X2....
|
||||
jsr ClipLine.EncodeP2
|
||||
bra .1
|
||||
* X2 is before S.CB.X1....
|
||||
.8
|
||||
jsr ClipLine.EncodeP2
|
||||
bra .1
|
||||
|
||||
.88 clc
|
||||
rts
|
||||
|
||||
.99 sec
|
||||
rts
|
||||
*--------------------------------------
|
||||
ClipLine.EncodeP1
|
||||
ldy #0
|
||||
|
||||
lda CB.Cache+S.CB.X1
|
||||
ldx CB.Cache+S.CB.X1+1
|
||||
jsr ClipLine.EncodeX.AX
|
||||
|
||||
tay
|
||||
|
||||
lda CB.Cache+S.CB.Y1
|
||||
ldx CB.Cache+S.CB.Y1+1
|
||||
jsr ClipLine.EncodeY.AX
|
||||
|
||||
sta ClipLine.P1
|
||||
rts
|
||||
*--------------------------------------
|
||||
ClipLine.EncodeP2
|
||||
ldy #0
|
||||
|
||||
lda CB.Cache+S.CB.X2
|
||||
ldx CB.Cache+S.CB.X2+1
|
||||
jsr ClipLine.EncodeX.AX
|
||||
|
||||
tay
|
||||
|
||||
lda CB.Cache+S.CB.Y2
|
||||
ldx CB.Cache+S.CB.Y2+1
|
||||
jsr ClipLine.EncodeY.AX
|
||||
|
||||
sta ClipLine.P2
|
||||
rts
|
||||
*--------------------------------------
|
||||
ClipLine.EncodeX.AX
|
||||
pha
|
||||
>SCMPAX GC.Cache+S.GC.X1
|
||||
bmi .1
|
||||
tya
|
||||
ora #ClipLine.LEFT
|
||||
plx
|
||||
rts
|
||||
|
||||
.1 pla
|
||||
>SCMPAX GC.Cache+S.GC.X1
|
||||
bpl .8
|
||||
tya
|
||||
ora #ClipLine.RIGHT
|
||||
.8 rts
|
||||
*--------------------------------------
|
||||
ClipLine.EncodeY.AX
|
||||
pha
|
||||
>SCMPAX GC.Cache+S.GC.Y1
|
||||
bmi .1
|
||||
tya
|
||||
ora #ClipLine.TOP
|
||||
plx
|
||||
rts
|
||||
|
||||
.1 pla
|
||||
>SCMPAX GC.Cache+S.GC.Y1
|
||||
bpl .8
|
||||
tya
|
||||
ora #ClipLine.BOTTOM
|
||||
|
||||
.8 rts
|
||||
*--------------------------------------
|
||||
MAN
|
||||
SAVE /A2OSX.SRC/LIB/LIBGUI.S.CLIP
|
||||
LOAD /A2OSX.SRC/LIB/LIBGUI.S
|
||||
ASM
|
22
LIB/LIBGUI.S.CUR.txt
Normal file
22
LIB/LIBGUI.S.CUR.txt
Normal file
@ -0,0 +1,22 @@
|
||||
PR#3
|
||||
PREFIX /A2OSX.BUILD
|
||||
NEW
|
||||
INC 1
|
||||
AUTO 6
|
||||
.LIST OFF
|
||||
*--------------------------------------
|
||||
SetCursor.A
|
||||
*--------------------------------------
|
||||
SetCursorPos
|
||||
*--------------------------------------
|
||||
HideCursor
|
||||
*--------------------------------------
|
||||
ShowCursor
|
||||
|
||||
clc
|
||||
rts
|
||||
*--------------------------------------
|
||||
MAN
|
||||
SAVE /A2OSX.SRC/LIB/LIBGUI.S.CUR
|
||||
LOAD /A2OSX.SRC/LIB/LIBGUI.S
|
||||
ASM
|
325
LIB/LIBGUI.S.DRAW.txt
Normal file
325
LIB/LIBGUI.S.DRAW.txt
Normal file
@ -0,0 +1,325 @@
|
||||
PR#3
|
||||
PREFIX /A2OSX.BUILD
|
||||
NEW
|
||||
INC 1
|
||||
AUTO 6
|
||||
*--------------------------------------
|
||||
Draw >PULLW ZPCmdPtr
|
||||
|
||||
lda (ZPCmdPtr) Get Cmd
|
||||
|
||||
.1 tax
|
||||
cpx #S.CB.CMD.DRAWLINE
|
||||
bcc .3 Native DRV Cmd
|
||||
|
||||
ldy CB.CmdLen,x
|
||||
|
||||
.2 lda (ZPCmdPtr),y Y=Byte count-1 to cache
|
||||
sta CB.Cache,y
|
||||
dey
|
||||
bpl .2
|
||||
|
||||
jsr Draw.Jmp
|
||||
bra .7
|
||||
|
||||
.3 >LDYA ZPCmdPtr
|
||||
|
||||
jsr GoDev.YA
|
||||
|
||||
.7 lda (ZPCmdPtr) Get Cmd
|
||||
tax
|
||||
lda CB.CmdLen,x
|
||||
sec
|
||||
adc ZPCmdPtr
|
||||
sta ZPCmdPtr
|
||||
bcc .8
|
||||
inc ZPCmdPtr+1
|
||||
|
||||
.8 lda (ZPCmdPtr) Get Cmd
|
||||
bne .1
|
||||
|
||||
clc
|
||||
rts
|
||||
|
||||
Draw.Jmp jmp (J.Cmds,x)
|
||||
*--------------------------------------
|
||||
* In: Control Block in CB.Cache
|
||||
* CMD
|
||||
* OP
|
||||
* MODE
|
||||
* COLOR
|
||||
* X1
|
||||
* Y1
|
||||
* X2
|
||||
* Y2
|
||||
*--------------------------------------
|
||||
DrawLine lda CB.Cache+S.CB.X2
|
||||
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...
|
||||
|
||||
lda #S.CB.CMD.VLINE
|
||||
sta CB.Cache+S.CB.CMD
|
||||
jmp GoDev DX=0 : VLIN Y1,Y2 At X1
|
||||
|
||||
.1 >SWAP16 CB.Cache+S.CB.X1,CB.Cache+S.CB.X2
|
||||
* >SWAP16 CB.Cache+S.CB.Y1,CB.Cache+S.CB.Y2
|
||||
lda CB.Cache+S.CB.Y1
|
||||
ldx CB.Cache+S.CB.Y2
|
||||
stx CB.Cache+S.CB.Y1
|
||||
sta CB.Cache+S.CB.Y2
|
||||
|
||||
>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
|
||||
|
||||
* lda CB.Cache+S.CB.Y2+1
|
||||
lda #0
|
||||
* sbc CB.Cache+S.CB.Y1+1
|
||||
sbc #0
|
||||
sta DY+1 DY = Y2 - Y1
|
||||
|
||||
bmi .3 DY < 0 ...
|
||||
|
||||
ora DY
|
||||
bne .4
|
||||
|
||||
lda #S.CB.CMD.HLINE
|
||||
sta CB.Cache+S.CB.CMD
|
||||
jmp GoDev DY=0 : HLIN X1,X2 At Y1
|
||||
|
||||
.3 >NOT16 DY set DY=-DY
|
||||
lda #$ff
|
||||
sta IY set IY=-1
|
||||
|
||||
.4 lda #S.CB.CMD.SETPIXEL
|
||||
sta CB.Cache+S.CB.CMD
|
||||
jsr GoDev
|
||||
|
||||
lda DX
|
||||
sec
|
||||
sbc DY
|
||||
tax
|
||||
|
||||
lda DX+1
|
||||
* sbc DY+1
|
||||
sbc #0
|
||||
bmi DrawLine.IncY DY is greater than DX, we will increase on Y axis
|
||||
|
||||
txa
|
||||
beq DrawLine.IncXY DX=DY, go inc X & Y
|
||||
|
||||
jmp DrawLine.IncX DY is lower than DX, we will increase on X axis
|
||||
|
||||
DrawLine.IncXY lda DX DX=DY
|
||||
eor #$ff
|
||||
sta Counter
|
||||
lda DX+1
|
||||
eor #$ff
|
||||
sta Counter+1
|
||||
|
||||
.1 inc Counter
|
||||
bne .2
|
||||
inc Counter+1
|
||||
beq .8
|
||||
|
||||
.2 inc CB.Cache+S.CB.X1
|
||||
bne .3
|
||||
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
|
||||
|
||||
jsr GoDev
|
||||
bra .1
|
||||
|
||||
.8 rts
|
||||
|
||||
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
|
||||
|
||||
.1 inc Counter
|
||||
bne .2
|
||||
inc Counter+1
|
||||
beq .8
|
||||
|
||||
.2 lda D+1 IF D < 0 ...
|
||||
bmi .4
|
||||
|
||||
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
|
||||
inc CB.Cache+S.CB.X1+1
|
||||
|
||||
bra .5
|
||||
|
||||
.4 lda D D > 0 : D=D+IE
|
||||
clc
|
||||
adc IE
|
||||
sta D
|
||||
lda D+1
|
||||
adc IE+1
|
||||
sta D+1
|
||||
|
||||
.5 lda CB.Cache+S.CB.Y1 Y1=Y1+IY
|
||||
clc
|
||||
adc IY
|
||||
sta CB.Cache+S.CB.Y1
|
||||
|
||||
jsr GoDev
|
||||
bra .1
|
||||
|
||||
.8 rts
|
||||
|
||||
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
|
||||
|
||||
.1 inc Counter
|
||||
bne .2
|
||||
inc Counter+1
|
||||
beq .8
|
||||
|
||||
.2 lda D+1 ID D < 0 ....
|
||||
bmi .4
|
||||
|
||||
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
|
||||
|
||||
bra .5
|
||||
|
||||
.4 lda D D < 0 : D=D+IE
|
||||
clc
|
||||
adc IE
|
||||
sta D
|
||||
lda D+1k
|
||||
adc IE+1
|
||||
sta D+1
|
||||
|
||||
.5 inc CB.Cache+S.CB.X1 X1=X1+1
|
||||
bne .6
|
||||
inc CB.Cache+S.CB.X1+1
|
||||
|
||||
.6 jsr GoDev
|
||||
bra .1
|
||||
|
||||
.8 rts
|
||||
*--------------------------------------
|
||||
MAN
|
||||
SAVE /A2OSX.SRC/LIB/LIBGUI.S.DRAW
|
||||
LOAD /A2OSX.SRC/LIB/LIBGUI.S
|
||||
ASM
|
348
LIB/LIBGUI.S.txt
348
LIB/LIBGUI.S.txt
@ -31,6 +31,15 @@ AUTO 6
|
||||
sbc ]1+1
|
||||
sta ]1+1
|
||||
.EM
|
||||
.MA SCMPAX
|
||||
sec
|
||||
sbc ]1
|
||||
txa
|
||||
sbc ]1+1
|
||||
bvc :1
|
||||
eor #$80
|
||||
:1 .EQ *
|
||||
.EM
|
||||
*--------------------------------------
|
||||
ZPDCPtr .EQ ZPLIB+2
|
||||
ZPCmdPtr .EQ ZPLIB+4
|
||||
@ -66,7 +75,7 @@ LIB.LOAD
|
||||
LIB.UNLOAD clc
|
||||
rts
|
||||
*--------------------------------------
|
||||
InitGUI.A sta hDev
|
||||
InitGUI.A sta GC.Screen+S.GC.hDev
|
||||
>SYSCALL GetDevByID.A
|
||||
>STYA GoDev.Jmp+1
|
||||
|
||||
@ -74,342 +83,19 @@ InitGUI.A sta hDev
|
||||
rts
|
||||
*--------------------------------------
|
||||
CloseGUI
|
||||
stz hDev
|
||||
stz GC.Screen+S.GC.hDev
|
||||
sec
|
||||
rts
|
||||
*--------------------------------------
|
||||
Draw >PULLW ZPCmdPtr
|
||||
|
||||
lda (ZPCmdPtr) Get Cmd
|
||||
|
||||
.1 tax
|
||||
cpx #S.CB.CMD.DRAWLINE
|
||||
bcc .3 Native DRV Cmd
|
||||
|
||||
ldy CB.CmdLen,x
|
||||
|
||||
.2 lda (ZPCmdPtr),y Y=Byte count-1 to cache
|
||||
sta CB.Cache,y
|
||||
dey
|
||||
bpl .2
|
||||
|
||||
jsr Draw.Jmp
|
||||
bra .7
|
||||
|
||||
.3 >LDYA ZPCmdPtr
|
||||
|
||||
jsr GoDev.YA
|
||||
|
||||
.7 lda (ZPCmdPtr) Get Cmd
|
||||
tax
|
||||
lda CB.CmdLen,x
|
||||
sec
|
||||
adc ZPCmdPtr
|
||||
sta ZPCmdPtr
|
||||
bcc .8
|
||||
inc ZPCmdPtr+1
|
||||
|
||||
.8 lda (ZPCmdPtr) Get Cmd
|
||||
bne .1
|
||||
|
||||
clc
|
||||
rts
|
||||
|
||||
Draw.Jmp jmp (J.Cmds,x)
|
||||
*--------------------------------------
|
||||
SetCursor.A
|
||||
*--------------------------------------
|
||||
SetCursorPos
|
||||
*--------------------------------------
|
||||
HideCursor
|
||||
*--------------------------------------
|
||||
ShowCursor
|
||||
|
||||
clc
|
||||
rts
|
||||
*--------------------------------------
|
||||
* In: Control Block
|
||||
* CMD
|
||||
* OP
|
||||
* MODE
|
||||
* COLOR
|
||||
* X1
|
||||
* Y1
|
||||
* X2
|
||||
* Y2
|
||||
*--------------------------------------
|
||||
DrawLine lda CB.Cache+S.CB.X2
|
||||
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...
|
||||
|
||||
lda #S.CB.CMD.VLINE
|
||||
sta CB.Cache+S.CB.CMD
|
||||
jmp GoDev DX=0 : VLIN Y1,Y2 At X1
|
||||
|
||||
.1 >SWAP16 CB.Cache+S.CB.X1,CB.Cache+S.CB.X2
|
||||
* >SWAP16 CB.Cache+S.CB.Y1,CB.Cache+S.CB.Y2
|
||||
lda CB.Cache+S.CB.Y1
|
||||
ldx CB.Cache+S.CB.Y2
|
||||
stx CB.Cache+S.CB.Y1
|
||||
sta CB.Cache+S.CB.Y2
|
||||
|
||||
>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
|
||||
|
||||
* lda CB.Cache+S.CB.Y2+1
|
||||
lda #0
|
||||
* sbc CB.Cache+S.CB.Y1+1
|
||||
sbc #0
|
||||
sta DY+1 DY% = Y2% - Y1%
|
||||
|
||||
bmi .3 DY < 0 ...
|
||||
|
||||
ora DY
|
||||
bne .4
|
||||
|
||||
lda #S.CB.CMD.HLINE
|
||||
sta CB.Cache+S.CB.CMD
|
||||
jmp GoDev DY=0 : HLIN X1,X2 At Y1
|
||||
|
||||
.3 >NOT16 DY set DY=-DY
|
||||
lda #$ff
|
||||
sta IY set IY=-1
|
||||
|
||||
.4 lda #S.CB.CMD.SETPIXEL
|
||||
sta CB.Cache+S.CB.CMD
|
||||
jsr GoDev
|
||||
|
||||
lda DX
|
||||
sec
|
||||
sbc DY
|
||||
tax
|
||||
|
||||
lda DX+1
|
||||
* sbc DY+1
|
||||
sbc #0
|
||||
bmi DrawLine.IncY DY is greater than DX, we will increase on Y axis
|
||||
|
||||
txa
|
||||
beq DrawLine.IncXY DX=DY, go inc X & Y
|
||||
|
||||
jmp DrawLine.IncX DY is lower than DX, we will increase on X axis
|
||||
|
||||
DrawLine.IncXY lda DX DX=DY
|
||||
eor #$ff
|
||||
sta Counter
|
||||
lda DX+1
|
||||
eor #$ff
|
||||
sta Counter+1
|
||||
|
||||
.1 inc Counter
|
||||
bne .2
|
||||
inc Counter+1
|
||||
beq .8
|
||||
|
||||
.2 inc CB.Cache+S.CB.X1
|
||||
bne .3
|
||||
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
|
||||
|
||||
jsr GoDev
|
||||
bra .1
|
||||
|
||||
.8 rts
|
||||
|
||||
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
|
||||
|
||||
.1 inc Counter
|
||||
bne .2
|
||||
inc Counter+1
|
||||
beq .8
|
||||
|
||||
.2 lda D+1 IF D < 0 ...
|
||||
bmi .4
|
||||
|
||||
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
|
||||
inc CB.Cache+S.CB.X1+1
|
||||
|
||||
bra .5
|
||||
|
||||
.4 lda D D > 0 : D=D+IE
|
||||
clc
|
||||
adc IE
|
||||
sta D
|
||||
lda D+1
|
||||
adc IE+1
|
||||
sta D+1
|
||||
|
||||
.5 lda CB.Cache+S.CB.Y1 Y1=Y1+IY
|
||||
clc
|
||||
adc IY
|
||||
sta CB.Cache+S.CB.Y1
|
||||
|
||||
jsr GoDev
|
||||
bra .1
|
||||
|
||||
.8 rts
|
||||
|
||||
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
|
||||
|
||||
.1 inc Counter
|
||||
bne .2
|
||||
inc Counter+1
|
||||
beq .8
|
||||
|
||||
.2 lda D+1 ID D < 0 ....
|
||||
bmi .4
|
||||
|
||||
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
|
||||
|
||||
bra .5
|
||||
|
||||
.4 lda D D < 0 : D=D+IE
|
||||
clc
|
||||
adc IE
|
||||
sta D
|
||||
lda D+1
|
||||
adc IE+1
|
||||
sta D+1
|
||||
|
||||
.5 inc CB.Cache+S.CB.X1 X1=X1+1
|
||||
bne .6
|
||||
inc CB.Cache+S.CB.X1+1
|
||||
|
||||
.6 jsr GoDev
|
||||
bra .1
|
||||
|
||||
.8 rts
|
||||
*--------------------------------------
|
||||
GoDev >LDYA L.CB.Cache
|
||||
GoDev.YA ldx #DEVMGR.WRITE
|
||||
GoDev.Jmp jmp $ffff
|
||||
*--------------------------------------
|
||||
.INB /A2OSX.SRC/LIB/LIBGUI.S.DRAW
|
||||
.INB /A2OSX.SRC/LIB/LIBGUI.S.CLIP
|
||||
.INB /A2OSX.SRC/LIB/LIBGUI.S.CUR
|
||||
*--------------------------------------
|
||||
CS.END
|
||||
hDev .BS 1
|
||||
*--------------------------------------
|
||||
DX .BS 2
|
||||
DY .BS 2
|
||||
@ -418,6 +104,8 @@ IE .BS 2
|
||||
D .BS 2
|
||||
INE .BS 2
|
||||
Counter .BS 2
|
||||
ClipLine.P1 .BS 1
|
||||
ClipLine.P2 .BS 1
|
||||
*--------------------------------------
|
||||
CB.CmdLen .DA S.CB.Y1+1 SETPIXEL
|
||||
.DA S.CB.Y1+1 GETPIXEL
|
||||
@ -428,6 +116,8 @@ CB.CmdLen .DA S.CB.Y1+1 SETPIXEL
|
||||
.DA S.CB.DstPtr+1 GETRECTBUFSIZE
|
||||
.DA S.CB.Y2+1 DRAWLINE
|
||||
*--------------------------------------
|
||||
GC.Screen .BS S.GC
|
||||
GC.Cache .BS S.GC
|
||||
CB.Cache .BS S.CB
|
||||
*--------------------------------------
|
||||
MAN
|
||||
|
Loading…
x
Reference in New Issue
Block a user