mirror of
https://github.com/A2osX/A2osX.git
synced 2025-01-05 16:30:45 +00:00
Kernel version 0.9 : Cleanup in DHGR stuff, adding primitives (DrawLine,....etc...)
This commit is contained in:
parent
77e3328220
commit
d0d356419f
@ -17,7 +17,6 @@ AUTO 6
|
||||
ZPBase .EQ ZPDRV
|
||||
ZPShiftLo .EQ ZPDRV+2
|
||||
ZPShiftHi .EQ ZPDRV+4
|
||||
ZPCtrlBlk .EQ ZPDRV+8
|
||||
*--------------------------------------
|
||||
* File Header (16 Bytes)
|
||||
*--------------------------------------
|
||||
@ -153,12 +152,8 @@ DRV.CS.START .DA STATUS
|
||||
.DA GETPIXEL
|
||||
.DA HLINE
|
||||
.DA VLINE
|
||||
.DA FILLRECT
|
||||
.DA BITBLT
|
||||
.DA FILLREC
|
||||
.DA SETCURPOS
|
||||
.DA SETCUR
|
||||
.DA HIDECUR
|
||||
.DA SHOWCUR
|
||||
*--------------------------------------
|
||||
L.STAT .DA STAT
|
||||
L.DIV7.0 .DA DIV7.0
|
||||
@ -241,29 +236,26 @@ CLOSE clc
|
||||
*--------------------------------------
|
||||
* SETPIXEL
|
||||
* In : YA = Ptr to CtrlBlk :
|
||||
* 0 : X
|
||||
* 2 : Y
|
||||
* 4 : Mode
|
||||
* 00000000=xor
|
||||
* 00000001=b/w (1 bit/pixel)
|
||||
* 00000100=16 colors (4 bits/pixel)
|
||||
* 00001000=256 colors (8 bits/pixel)
|
||||
* 5 : Color
|
||||
* 1 : OP (XOR only)
|
||||
* 2 : Mode
|
||||
* 3 : Color
|
||||
* 4 : SrcX1
|
||||
* 6 : SrcY1
|
||||
*--------------------------------------
|
||||
SETPIXEL >STYA ZPBase
|
||||
ldy #5
|
||||
ldy #S.CB.Y1 Skip S.CB.Y1+1.....always 0
|
||||
.1 lda (ZPBase),y
|
||||
sta ZPCtrlBlk,y
|
||||
sta CB.Cache,y
|
||||
dey
|
||||
bpl .1
|
||||
|
||||
sta SET80STORE
|
||||
|
||||
lda ZPCtrlBlk+4
|
||||
bit #%00000100
|
||||
bne .7
|
||||
*-----B&W -----------------------------
|
||||
ldx ZPCtrlBlk+1 X.HI
|
||||
lda CB.Cache+S.CB.MODE
|
||||
bit #S.CB.MODE.C16
|
||||
bne SETPIXEL.C16
|
||||
*---- MONO ----------------------------
|
||||
ldx CB.Cache+S.CB.X1+1
|
||||
lda DIV7.hi,x
|
||||
sta .2+2
|
||||
|
||||
@ -272,7 +264,7 @@ SETPIXEL >STYA ZPBase
|
||||
lda MOD7.hi,x
|
||||
sta .4+2
|
||||
|
||||
ldx ZPCtrlBlk X.LO
|
||||
ldx CB.Cache+S.CB.X1
|
||||
.2 lda DIV7.0,x A=Col*2+AuxBit
|
||||
|
||||
eor #1 toggle last bit : 0=Aux, 1=Main
|
||||
@ -281,6 +273,8 @@ SETPIXEL >STYA ZPBase
|
||||
rol .3+1 if CS, -> SETPAGE2
|
||||
.3 sta CLRPAGE2
|
||||
|
||||
ldy CB.Cache+S.CB.Y1
|
||||
|
||||
adc BASEL,y setup line Base Ptr (A=Col)
|
||||
sta ZPBase
|
||||
lda BASEH,y
|
||||
@ -288,10 +282,10 @@ SETPIXEL >STYA ZPBase
|
||||
|
||||
.4 ldy MOD7.0,x x = X.LO
|
||||
|
||||
dec ZPCtrlBlk+4 get mode
|
||||
bne .5
|
||||
lda CB.Cache+S.CB.OP
|
||||
beq .5
|
||||
|
||||
lda (ZPBase) Mode=0, XOR
|
||||
lda (ZPBase) XOR
|
||||
eor Mono.Masks,y y = mod 7
|
||||
sta (ZPBase)
|
||||
|
||||
@ -299,7 +293,7 @@ SETPIXEL >STYA ZPBase
|
||||
rts
|
||||
|
||||
.5 lda (ZPBase)
|
||||
ldx ZPCtrlBlk+5 mode=1, get color
|
||||
ldx CB.Cache+S.CB.COLOR get color
|
||||
bne .6
|
||||
|
||||
and Mono.NMasks,y includes And $7F for mono
|
||||
@ -313,17 +307,17 @@ SETPIXEL >STYA ZPBase
|
||||
sta CLR80STORE
|
||||
rts
|
||||
*-----16 Colors -----------------------
|
||||
.7 lda ZPCtrlBlk X.LO
|
||||
lsr ZPCtrlBlk+1 divide by 4
|
||||
SETPIXEL.C16 lda CB.Cache+S.CB.X1
|
||||
lsr CB.Cache+S.CB.X1+1 divide by 4
|
||||
ror
|
||||
lsr ZPCtrlBlk+1
|
||||
lsr CB.Cache+S.CB.X1+1
|
||||
ror
|
||||
tay Y=CX/4 (range 0->139)
|
||||
lda DIV7.0,y A=CX/4/7 (range 0->19)
|
||||
|
||||
asl times 2 (range 0->38)
|
||||
|
||||
ldx ZPCtrlBlk+2
|
||||
ldx CB.Cache+S.CB.Y1
|
||||
adc BASEL,x setup line Base Ptr (cc by asl)
|
||||
sta ZPBase ZPBase now point to first of...
|
||||
lda BASEH,x
|
||||
@ -335,7 +329,7 @@ SETPIXEL >STYA ZPBase
|
||||
asl
|
||||
tax set in X for Masks,NMasks
|
||||
|
||||
lda ZPCtrlBlk+5 get COLOR
|
||||
lda CB.Cache+S.CB.COLOR
|
||||
|
||||
asl times 4 to compute index in PIXELS table
|
||||
asl
|
||||
@ -402,187 +396,86 @@ SETPIXEL >STYA ZPBase
|
||||
.13 sta CLR80STORE
|
||||
rts
|
||||
*--------------------------------------
|
||||
* GETPIXEL
|
||||
*--------------------------------------
|
||||
GETPIXEL rts
|
||||
*--------------------------------------
|
||||
HLINE rts
|
||||
* HLINE X1,X2 at Y1
|
||||
*--------------------------------------
|
||||
VLINE rts
|
||||
HLINE >STYA ZPBase
|
||||
ldy #S.CB.X2+1
|
||||
|
||||
.1 lda (ZPBase),y
|
||||
sta CB.Cache,y
|
||||
dey
|
||||
bpl .1
|
||||
|
||||
lda CB.Cache+S.CB.MODE
|
||||
bit #S.CB.MODE.C16
|
||||
bne HLINE.C16
|
||||
*----- MONO ---------------------------
|
||||
|
||||
|
||||
|
||||
HLINE.C16
|
||||
rts
|
||||
*--------------------------------------
|
||||
FILLREC rts
|
||||
* VLINE Y1,Y2 at X1
|
||||
*--------------------------------------
|
||||
VLINE >STYA ZPBase
|
||||
ldy #S.CB.Y2
|
||||
|
||||
.1 lda (ZPBase),y
|
||||
sta CB.Cache,y
|
||||
dey
|
||||
bpl .1
|
||||
|
||||
VLINE.I
|
||||
|
||||
rts
|
||||
*--------------------------------------
|
||||
* FILLRECT
|
||||
* 2 : Mode
|
||||
* 3 : Color
|
||||
* 4 : SrcX1
|
||||
* 6 : SrcY1
|
||||
* 8 : SrcX2
|
||||
* 10 : SrcY2
|
||||
*--------------------------------------
|
||||
FILLRECT >STYA ZPBase
|
||||
ldy #S.CB.Y2
|
||||
|
||||
.1 lda (ZPBase),y
|
||||
sta CB.Cache,y
|
||||
dey
|
||||
bpl .1
|
||||
|
||||
|
||||
.2 jsr VLINE.I
|
||||
|
||||
lda CB.Cache+S.CB.Y1
|
||||
cmp CB.Cache+S.CB.Y2
|
||||
beq .8
|
||||
|
||||
inc CB.Cache+S.CB.Y1
|
||||
bra .2
|
||||
.8 rts
|
||||
*--------------------------------------
|
||||
* BitBlt
|
||||
* In : YA = Ptr to CtrlBlk :
|
||||
* 0 : Operation
|
||||
* %00000001 : Save
|
||||
* %00000010 : Replace
|
||||
* %00000100 : AND with Src BitMask
|
||||
* %00001000 : ORA with Src BitMap
|
||||
* %00010000 : XOR
|
||||
* 2 : SavePTR
|
||||
* 4 : SrcAX
|
||||
* 6 : SrcAY
|
||||
* 8 : SrcBX
|
||||
* 10 : SrcBY
|
||||
* 1 : OP
|
||||
* 4 : SrcX1
|
||||
* 6 : SrcY1
|
||||
* 8 : SrcX2
|
||||
* 10 : SrcY2
|
||||
* 12 : DestX
|
||||
* 14 : DestY
|
||||
* 16 : BM Struct
|
||||
* 16 : BM Struct Ptr
|
||||
* 18 : Save Ptr
|
||||
*--------------------------------------
|
||||
BITBLT >STYA ZPCtrlBlk
|
||||
lda (ZPCtrlBlk)
|
||||
clc
|
||||
rts
|
||||
*--------------------------------------
|
||||
* Y,A = pPoint
|
||||
*--------------------------------------
|
||||
SETCURPOS >STYA ZPBase
|
||||
|
||||
ldy #3
|
||||
.1 lda (ZPBase),y
|
||||
sta CUR.X,y
|
||||
dey
|
||||
bpl .1
|
||||
|
||||
bit CUR.State
|
||||
bpl .2
|
||||
jsr HIDECUR.I
|
||||
jsr SHOWCUR.I
|
||||
.2 clc
|
||||
rts
|
||||
*--------------------------------------
|
||||
* Y,A = pCur
|
||||
*--------------------------------------
|
||||
SETCUR >STYA ZPBase
|
||||
ldy #S.CUR-1
|
||||
.1 lda (ZPBase),y
|
||||
sta CUR.Buf,y
|
||||
dey
|
||||
bpl .1
|
||||
|
||||
bit CUR.State
|
||||
bpl .2
|
||||
jsr HIDECUR.I
|
||||
jsr SHOWCUR.I
|
||||
.2 clc
|
||||
rts
|
||||
*--------------------------------------
|
||||
SHOWCUR bit CUR.State
|
||||
bpl SHOWCUR.I
|
||||
clc
|
||||
rts
|
||||
|
||||
SHOWCUR.I sta SET80STORE
|
||||
|
||||
ldx CUR.X+1
|
||||
lda DIV7.hi,x
|
||||
sta .71+2
|
||||
lda MOD7.hi,x
|
||||
sta .72+2
|
||||
|
||||
ldx CUR.X
|
||||
|
||||
.71 lda DIV7.0,x
|
||||
lsr
|
||||
sta SB.StartCol
|
||||
lda #0
|
||||
sbc #0
|
||||
sta SB.StartPage
|
||||
|
||||
.72 ldy MOD7.0,x
|
||||
lda Shiftlo.Hi,y
|
||||
sta ZPShiftLo+1
|
||||
lda ShiftHi.Hi,y
|
||||
sta ZPShiftHi+1
|
||||
|
||||
lda L.Shift0.Lo
|
||||
sta ZPShiftLo
|
||||
lda L.Shift0.hi
|
||||
sta ZPShifthi
|
||||
|
||||
lda CUR.Y
|
||||
sta CY
|
||||
|
||||
ldx #0 index to CUR data/mask
|
||||
|
||||
.1 ldy CY
|
||||
lda BaseL,y
|
||||
clc
|
||||
adc SB.StartCol
|
||||
sta ZPBase
|
||||
|
||||
lda BaseH,y
|
||||
sta ZPBase+1
|
||||
|
||||
lda SB.StartPage
|
||||
sta SB.Page
|
||||
|
||||
lda SB.Page
|
||||
tay
|
||||
eor #1
|
||||
sta SB.Page
|
||||
sta CLRPAGE2,y
|
||||
|
||||
BITBLT >STYA ZPBase
|
||||
lda (ZPBase)
|
||||
ldy CUR.Buf+S.CUR.MASK,x
|
||||
and (ZPShiftLo),y
|
||||
ldy CUR.Buf+S.CUR.DATA,x
|
||||
ora (ZPShiftLo),y
|
||||
sta (ZPBase)
|
||||
|
||||
lda SB.Page
|
||||
tay
|
||||
eor #1
|
||||
sta SB.Page
|
||||
sta CLRPAGE2,y
|
||||
beq .3
|
||||
inc ZPBase
|
||||
|
||||
.3 lda (ZPBase)
|
||||
ldy CUR.Buf+S.CUR.MASK,x
|
||||
and (ZPShiftHi),y
|
||||
ldy CUR.Buf+S.CUR.DATA,x
|
||||
ora (ZPShiftHi),y
|
||||
inx
|
||||
ldy CUR.Buf+S.CUR.MASK,x
|
||||
and (ZPShiftLo),y
|
||||
ldy CUR.Buf+S.CUR.DATA,x
|
||||
ora (ZPShiftLo),y
|
||||
sta (ZPBase)
|
||||
|
||||
lda SB.Page
|
||||
tay
|
||||
eor #1
|
||||
sta SB.Page
|
||||
sta CLRPAGE2,y
|
||||
beq .4
|
||||
inc ZPBase
|
||||
|
||||
.4 lda (ZPBase)
|
||||
ldy CUR.Buf+S.CUR.MASK,x
|
||||
and (ZPShiftHi),y
|
||||
ldy CUR.Buf+S.CUR.DATA,x
|
||||
ora (ZPShiftHi),y
|
||||
sta (ZPBase)
|
||||
|
||||
inx
|
||||
cpx #32
|
||||
bne .1
|
||||
|
||||
sta CLR80STORE
|
||||
sec
|
||||
ror CUR.State
|
||||
|
||||
SHOWCUR.RTS clc
|
||||
rts
|
||||
*--------------------------------------
|
||||
HIDECUR bit CUR.State
|
||||
bpl HIDECUR.RTS
|
||||
|
||||
HIDECUR.I
|
||||
|
||||
|
||||
clc
|
||||
ror CUR.State
|
||||
HIDECUR.RTS clc
|
||||
rts
|
||||
*--------------------------------------
|
||||
DRV.CS.END
|
||||
@ -610,22 +503,13 @@ MOD7.hi .BS 3
|
||||
Shiftlo.hi .BS 7
|
||||
Shifthi.hi .BS 7
|
||||
*--------------------------------------
|
||||
CB.Cache .BS S.CB
|
||||
*--------------------------------------
|
||||
CX .BS 2
|
||||
CY .BS 1
|
||||
COL .BS 1
|
||||
GBYTE .BS 1
|
||||
*--------------------------------------
|
||||
CUR.State .BS 1
|
||||
CUR.X .BS 2
|
||||
CUR.Xdiv7 .BS 1
|
||||
CUR.Xmod7 .BS 1
|
||||
CUR.Y .BS 2
|
||||
CUR.Buf .BS S.CUR
|
||||
CUR.SaveCol .BS 1
|
||||
CUR.SaveColCnt .BS 1
|
||||
CUR.SaveRow .BS 1
|
||||
CUR.SaveRowCnt .BS 1
|
||||
CUR.SaveBuf .BS 3*16 MAX 3 bytes*16 rows
|
||||
SB.StartPage .BS 1
|
||||
SB.Page .BS 1
|
||||
SB.StartCol .BS 1
|
||||
@ -639,7 +523,7 @@ STAT .DA #0
|
||||
.DA #0
|
||||
.DA $0900
|
||||
*--------------------------------------
|
||||
DEVSTAT.MODES .DA #%10000011 XOR,16 & B/W
|
||||
DEVSTAT.MODES .DA #S.CB.MODE.MONO+S.CB.MODE.C16
|
||||
DEVSTAT.W .DA 560 X.SIZE
|
||||
DEVSTAT.H .DA 192 Y.SIZE
|
||||
*--------------------------------------
|
||||
|
Binary file not shown.
Binary file not shown.
Binary file not shown.
@ -373,7 +373,8 @@ DEVMGR.GFX.SETPIXEL .EQ 22
|
||||
DEVMGR.GFX.GETPIXEL .EQ 24
|
||||
DEVMGR.GFX.HLINE .EQ 26
|
||||
DEVMGR.GFX.VLINE .EQ 28
|
||||
DEVMGR.GFX.BITBLT .EQ 30
|
||||
DEVMGR.GFX.FILLRECT .EQ 30
|
||||
DEVMGR.GFX.BITBLT .EQ 32
|
||||
*--------------------------------------
|
||||
S.DEVSTAT.S .EQ 0
|
||||
S.DEVSTAT.S.BLOCK .EQ %10000000
|
||||
|
@ -6,6 +6,41 @@ AUTO 6
|
||||
.LIST OFF
|
||||
.OP 65C02
|
||||
*--------------------------------------
|
||||
S.CB.hDC .EQ 0
|
||||
S.CB.OP .EQ 1
|
||||
S.CB.OP.SAVE .EQ %00000001
|
||||
S.CB.OP.REPLACE .EQ %00000010
|
||||
S.CB.OP.AND .EQ %00000100
|
||||
S.CB.OP.ORA .EQ %00001000
|
||||
S.CB.OP.XOR .EQ %00010000
|
||||
S.CB.MODE .EQ 2
|
||||
S.CB.MODE.MONO .EQ %00000001 b/w (1 bit/pixel)
|
||||
*S.CB.MODE.C4 .EQ %00000010
|
||||
*S.CB.MODE.C8 .EQ %00000100
|
||||
S.CB.MODE.C16 .EQ %00001000 16 colors (4 bits/pixel)
|
||||
S.CB.MODE.C256 .EQ %00010000 256 colors (8 bits/pixel)
|
||||
S.CB.COLOR .EQ 3
|
||||
S.CB.X1 .EQ 4
|
||||
S.CB.Y1 .EQ 6
|
||||
S.CB.X2 .EQ 8
|
||||
S.CB.Y2 .EQ 10
|
||||
S.CB.DestX .EQ 12
|
||||
S.CB.DestY .EQ 14
|
||||
S.CB.SrcPtr .EQ 16
|
||||
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.DC .EQ 12
|
||||
*--------------------------------------
|
||||
S.CUR.HotPointX .EQ 0
|
||||
S.CUR.HotPointY .EQ 1
|
||||
S.CUR.DATA .EQ 2 16x16 bits = 32 bytes
|
||||
@ -15,8 +50,8 @@ S.CUR .EQ 66
|
||||
S.BM.F .EQ 0
|
||||
S.BM.F.BBP1 .EQ %00000001
|
||||
S.BM.F.BBP2 .EQ %00000010
|
||||
S.BM.F.BBP4 .EQ %00000100
|
||||
S.BM.F.BBP8 .EQ %00001000
|
||||
S.BM.F.BBP4 .EQ %00001000
|
||||
S.BM.F.BBP8 .EQ %00010000
|
||||
S.BM.RowBytes .EQ 1
|
||||
S.BM.W .EQ 2
|
||||
S.BM.H .EQ 4
|
||||
@ -24,10 +59,12 @@ S.BM.MASK.OFFSET .EQ 6
|
||||
S.BM.DATA .EQ 8
|
||||
*--------------------------------------
|
||||
LIBGFX.InitGFXA .EQ 4
|
||||
LIBGFX.SetCursorPos .EQ 6
|
||||
LIBGFX.SetCursorYA .EQ 8
|
||||
LIBGFX.HideCursor .EQ 10
|
||||
LIBGFX.ShowCursor .EQ 12
|
||||
LIBGFX.CloseGFX .EQ 4
|
||||
LIBGFX.SetCursorPos .EQ 8
|
||||
LIBGFX.SetCursorYA .EQ 10
|
||||
LIBGFX.HideCursor .EQ 12
|
||||
LIBGFX.ShowCursor .EQ 14
|
||||
LIBGFX.DrawLine .EQ 16
|
||||
*--------------------------------------
|
||||
MAN
|
||||
SAVE /A2OSX.BUILD/INC/LIBGFX.I
|
||||
|
186
LIB/LIBGFX.S.txt
186
LIB/LIBGFX.S.txt
@ -12,7 +12,28 @@ AUTO 6
|
||||
.INB /A2OSX.BUILD/INC/A2OSX.I
|
||||
.INB /A2OSX.BUILD/INC/LIBGFX.I
|
||||
*--------------------------------------
|
||||
ZPPtr1 .EQ ZPLIB
|
||||
.MA SWAP16
|
||||
lda ]1
|
||||
ldx ]2
|
||||
stx ]1
|
||||
sta ]2
|
||||
lda ]1+1
|
||||
ldx ]2+1
|
||||
stx ]1+1
|
||||
sta ]2+1
|
||||
.EM
|
||||
.MA NOT16
|
||||
sec
|
||||
lda #0
|
||||
sbc ]1
|
||||
sta ]1
|
||||
lda #0
|
||||
sbc ]1+1
|
||||
sta ]1+1
|
||||
.EM
|
||||
*--------------------------------------
|
||||
ZPCBPtr .EQ ZPLIB
|
||||
ZPDCPtr .EQ ZPLIB+2
|
||||
*--------------------------------------
|
||||
* File Header (16 Bytes)
|
||||
*--------------------------------------
|
||||
@ -31,22 +52,28 @@ CS.START cld
|
||||
.1 .DA LIB.LOAD
|
||||
.DA LIB.UNLOAD
|
||||
.DA InitGFXA
|
||||
.DA CloseGFX
|
||||
.DA InitCursor
|
||||
.DA SetCursorYA
|
||||
.DA HideCursor
|
||||
.DA ShowCursor
|
||||
.DA DrawLine
|
||||
L.CB.Cache .DA CB.Cache
|
||||
.DA 0
|
||||
*--------------------------------------
|
||||
LIB.LOAD
|
||||
LIB.UNLOAD clc
|
||||
rts
|
||||
|
||||
*--------------------------------------
|
||||
InitGFXA sta hDev
|
||||
>SYSCALL GetDevByIDA
|
||||
>STYA GoDevGFX.1+1
|
||||
|
||||
clc
|
||||
rts
|
||||
|
||||
.9 stz hDev
|
||||
rts
|
||||
*--------------------------------------
|
||||
CloseGFX
|
||||
stz hDev
|
||||
sec
|
||||
rts
|
||||
*--------------------------------------
|
||||
@ -61,11 +88,158 @@ ShowCursor
|
||||
clc
|
||||
rts
|
||||
*--------------------------------------
|
||||
* .INB LIB/LIBGFX.S.CUR
|
||||
* In: Control Block
|
||||
* hDC
|
||||
* OP
|
||||
* MODE
|
||||
* COLOR
|
||||
* X1
|
||||
* Y1
|
||||
* X2
|
||||
* Y2
|
||||
*--------------------------------------
|
||||
DrawLine ldy #S.CB.Y2+1
|
||||
jsr GetCB
|
||||
|
||||
sec
|
||||
|
||||
lda CB.Cache+S.CB.X2
|
||||
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...
|
||||
|
||||
ldx #DEVMGR.GFX.VLINE
|
||||
jmp GoDevGFX 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
|
||||
>NOT16 DX swap X1/X2, Y1/Y2, set DX=-DX
|
||||
|
||||
.2 stz IY
|
||||
|
||||
sec
|
||||
|
||||
lda CB.Cache+S.CB.Y2
|
||||
sbc CB.Cache+S.CB.Y1
|
||||
sta DY
|
||||
|
||||
lda CB.Cache+S.CB.Y2+1
|
||||
sbc CB.Cache+S.CB.Y1+1
|
||||
sta DY+1 DY% = Y2% - Y1%
|
||||
|
||||
bmi .3 DY < 0 ...
|
||||
|
||||
ora DY
|
||||
bne .4
|
||||
|
||||
ldx #DEVMGR.GFX.HLINE
|
||||
jmp GoDevGFX DY=0 : HLIN X1,X2 At Y1
|
||||
|
||||
.3 >NOT16 DY set DY=-DY
|
||||
dec IY
|
||||
|
||||
.4 ldx #DEVMGR.GFX.SETPIXEL
|
||||
jsr GoDevGFX
|
||||
|
||||
sec
|
||||
lda DX
|
||||
sbc DY
|
||||
sta DXY
|
||||
|
||||
lda DX+1
|
||||
sbc DY+1
|
||||
sta DXY+1
|
||||
bmi DrawLine.IncY DY is greater than DX, we will increase on Y axis
|
||||
|
||||
ora DXY
|
||||
bne DrawLine.IncX DY is lower than DX, we will increase on X axis
|
||||
|
||||
DrawLine.XY 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 bit IY
|
||||
bmi .4
|
||||
|
||||
inc CB.Cache+S.CB.Y1
|
||||
bne .5
|
||||
inc CB.Cache+S.CB.Y1+1
|
||||
bra .5
|
||||
|
||||
.4 sec
|
||||
lda CB.Cache+S.CB.Y1
|
||||
sbc #1
|
||||
sta CB.Cache+S.CB.Y1
|
||||
bcs .5
|
||||
|
||||
dec CB.Cache+S.CB.Y1+1
|
||||
|
||||
.5 ldx #DEVMGR.GFX.SETPIXEL
|
||||
jsr GoDevGFX
|
||||
bra .1
|
||||
|
||||
.8 rts
|
||||
|
||||
DrawLine.IncY lda DY
|
||||
eor #$ff
|
||||
sta Counter
|
||||
lda DY+1
|
||||
eor #$ff
|
||||
sta Counter+1
|
||||
|
||||
rts
|
||||
|
||||
DrawLine.IncX lda DX
|
||||
eor #$ff
|
||||
sta Counter
|
||||
lda DX+1
|
||||
eor #$ff
|
||||
sta Counter+1
|
||||
|
||||
rts
|
||||
*--------------------------------------
|
||||
GetCB >PULLW ZPCBPtr
|
||||
|
||||
.1 lda (ZPCBPtr),y Y=Byte count to cache
|
||||
sta CB.Cache,y
|
||||
dey
|
||||
bpl .1
|
||||
rts
|
||||
*--------------------------------------
|
||||
GoDevGFX >LDYA L.CB.Cache
|
||||
GoDevGFX.1 jmp $ffff
|
||||
*--------------------------------------
|
||||
CS.END
|
||||
hDev .BS 1
|
||||
*--------------------------------------
|
||||
DX .BS 2
|
||||
DY .BS 2
|
||||
IY .BS 1
|
||||
DXY .BS 2
|
||||
Counter .BS 2
|
||||
*--------------------------------------
|
||||
CB.Cache .BS S.CB
|
||||
*--------------------------------------
|
||||
CUR.Arrow .DA #0
|
||||
.DA #0
|
||||
CUR.Arrow.DATA .DA %00000001.000000000
|
||||
|
@ -39,8 +39,9 @@ L.DEVNAME.MOUSE .DA DEVNAME.MOUSE
|
||||
L.MSG.INIT .DA MSG.INIT
|
||||
L.MouseClamp .DA MouseClamp
|
||||
L.MouseData .DA MouseData
|
||||
L.SetPixel.X .DA SetPixel.X
|
||||
L.DrawLine.X1 .DA DrawLine.X1
|
||||
L.SetPixel.CB .DA SetPixel.CB
|
||||
L.DrawLine1.CB .DA DrawLine1.CB
|
||||
L.DrawLine2.CB .DA DrawLine2.CB
|
||||
.DA 0
|
||||
*--------------------------------------
|
||||
CS.INIT >LDYA L.MSG.INIT
|
||||
@ -117,9 +118,7 @@ CS.INIT >LDYA L.MSG.INIT
|
||||
clc
|
||||
rts
|
||||
*--------------------------------------
|
||||
CS.RUN ldy #S.EVT.hDEV
|
||||
|
||||
lda A2osX.ASCREEN GUI screen active ?
|
||||
CS.RUN lda A2osX.ASCREEN GUI screen active ?
|
||||
cmp #3
|
||||
bne .8 no, exit....
|
||||
|
||||
@ -147,13 +146,15 @@ CS.RUN ldy #S.EVT.hDEV
|
||||
lda MouseData+4
|
||||
sta SetPixel.Y+1
|
||||
|
||||
lda #4
|
||||
lda #0 S.CB.OP.XOR
|
||||
sta SetPixel.OP
|
||||
lda #S.CB.MODE.MONO
|
||||
sta SetPixel.Mode
|
||||
|
||||
lda #15
|
||||
lda #1
|
||||
sta SetPixel.Color
|
||||
|
||||
>LDYA L.SetPixel.X
|
||||
>LDYA L.SetPixel.CB
|
||||
ldx #DEVMGR.GFX.SETPIXEL
|
||||
jsr GoDevGFX
|
||||
clc
|
||||
@ -176,21 +177,21 @@ CS.DOEVENT sec
|
||||
CS.QUIT clc
|
||||
rts
|
||||
*--------------------------------------
|
||||
Destop.Paint lda #4
|
||||
Destop.Paint lda #S.CB.MODE.C16
|
||||
sta SetPixel.Mode
|
||||
|
||||
lda #0
|
||||
sta SetPixel.Color
|
||||
|
||||
lda #0
|
||||
lda #20
|
||||
sta SetPixel.Y
|
||||
|
||||
.1 lda #0
|
||||
.1 lda #20
|
||||
sta SetPixel.X
|
||||
lda /0
|
||||
lda /20
|
||||
sta SetPixel.X+1
|
||||
|
||||
.2 >LDYA L.SetPixel.X
|
||||
.2 >LDYA L.SetPixel.CB
|
||||
|
||||
ldx #DEVMGR.GFX.SETPIXEL
|
||||
jsr GoDevGFX
|
||||
@ -203,9 +204,9 @@ Destop.Paint lda #4
|
||||
inc SetPixel.X+1
|
||||
|
||||
.3 lda SetPixel.X
|
||||
cmp #279
|
||||
cmp #79
|
||||
lda SetPixel.X+1
|
||||
sbc /279
|
||||
sbc /79
|
||||
bcc .2
|
||||
|
||||
inc SetPixel.Y
|
||||
@ -220,6 +221,11 @@ Destop.Paint lda #4
|
||||
cmp #16
|
||||
bne .1
|
||||
|
||||
>PUSHW L.DrawLine1.CB
|
||||
>LIBCALL hLibGFX,LIBGFX.DrawLine
|
||||
>PUSHW L.DrawLine2.CB
|
||||
>LIBCALL hLibGFX,LIBGFX.DrawLine
|
||||
|
||||
.8 rts
|
||||
*--------------------------------------
|
||||
*--------------------------------------
|
||||
@ -237,16 +243,31 @@ hDevGFX .BS 1
|
||||
hDevMouse .BS 1
|
||||
MouseClamp .BS 8
|
||||
MouseData .BS 5
|
||||
SetPixel.X .BS 2
|
||||
SetPixel.Y .BS 2
|
||||
*--------------------------------------
|
||||
SetPixel.CB .BS 1 hDC
|
||||
SetPixel.OP .BS 1
|
||||
SetPixel.Mode .BS 1
|
||||
SetPixel.Color .BS 1
|
||||
DrawLine.X1 .BS 2
|
||||
DrawLine.Y1 .BS 2
|
||||
DrawLine.X2 .BS 2
|
||||
DrawLine.Y2 .BS 2
|
||||
DrawLine.Mode .BS 1
|
||||
DrawLine.Color .BS 1
|
||||
SetPixel.X .BS 2
|
||||
SetPixel.Y .BS 2
|
||||
*--------------------------------------
|
||||
DrawLine1.CB .BS 1 hDC
|
||||
DrawLine1.OP .DA #0
|
||||
DrawLine1.Mode .DA #S.CB.MODE.MONO
|
||||
DrawLine1.Color .DA #1
|
||||
DrawLine1.X1 .DA 200
|
||||
DrawLine1.Y1 .DA 0
|
||||
DrawLine1.X2 .DA 200+191
|
||||
DrawLine1.Y2 .DA 191
|
||||
*--------------------------------------
|
||||
DrawLine2.CB .BS 1 hDC
|
||||
DrawLine2.OP .DA #0
|
||||
DrawLine2.Mode .DA #S.CB.MODE.C16
|
||||
DrawLine2.Color .DA #8
|
||||
DrawLine2.X1 .DA 220
|
||||
DrawLine2.Y1 .DA 0
|
||||
DrawLine2.X2 .DA 220+191
|
||||
DrawLine2.Y2 .DA 191
|
||||
MAN
|
||||
SAVE /A2OSX.SRC/SBIN/DESKTOP.S
|
||||
ASM
|
||||
|
Loading…
Reference in New Issue
Block a user