mirror of
https://github.com/A2osX/A2osX.git
synced 2024-09-10 22:54:59 +00:00
Kernel version 0.9 : LS,CP,RM,MV, Code cleanup, bug fix #28
This commit is contained in:
parent
f5b8d448ac
commit
9c954442ad
Binary file not shown.
Binary file not shown.
Binary file not shown.
12
BIN/LS.S.txt
12
BIN/LS.S.txt
@ -10,6 +10,7 @@ AUTO 6
|
|||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
.INB /A2OSX.BUILD/INC/MACROS.I
|
.INB /A2OSX.BUILD/INC/MACROS.I
|
||||||
.INB /A2OSX.BUILD/INC/A2OSX.I
|
.INB /A2OSX.BUILD/INC/A2OSX.I
|
||||||
|
.INB /A2OSX.BUILD/INC/MLI.ERR.I
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
X.COPY.TO.DEST .EQ 0
|
X.COPY.TO.DEST .EQ 0
|
||||||
X.DELETE.SOURCE .EQ 0
|
X.DELETE.SOURCE .EQ 0
|
||||||
@ -106,9 +107,10 @@ CS.INIT >SYSCALL GetArgC
|
|||||||
jsr InitSrcDirYA
|
jsr InitSrcDirYA
|
||||||
bcs .9
|
bcs .9
|
||||||
|
|
||||||
.8 lda (pPs)
|
.8
|
||||||
ora #S.PS.F.EVENT Now accept events
|
* lda (pPs)
|
||||||
sta (pPs)
|
* ora #S.PS.F.EVENT Now accept events
|
||||||
|
* sta (pPs)
|
||||||
|
|
||||||
clc
|
clc
|
||||||
.9 rts
|
.9 rts
|
||||||
@ -480,13 +482,13 @@ MSG.FILEEXT >CSTR "%15S %S $%H %a %10u %S %S\r\n"
|
|||||||
PRODOS.FT.HEX .HS 0406FAFCFDE2FF
|
PRODOS.FT.HEX .HS 0406FAFCFDE2FF
|
||||||
PRODOS.FT.TXT >PSTR "TXT"
|
PRODOS.FT.TXT >PSTR "TXT"
|
||||||
>PSTR "BIN"
|
>PSTR "BIN"
|
||||||
>PSTR "S-C"
|
>PSTR "ASM"
|
||||||
>PSTR "BAS"
|
>PSTR "BAS"
|
||||||
>PSTR "VAR"
|
>PSTR "VAR"
|
||||||
>PSTR "ATK"
|
>PSTR "ATK"
|
||||||
>PSTR "SYS"
|
>PSTR "SYS"
|
||||||
PRODOS.FT.DFLT >PSTR "$ "
|
PRODOS.FT.DFLT >PSTR "$ "
|
||||||
TIME.NODATE >PSTR " <NO-DATE> "
|
TIME.NODATE >PSTR " <No-Date> "
|
||||||
TIME.Format >PSTR "%d-%b-%y %H:%M"
|
TIME.Format >PSTR "%d-%b-%y %H:%M"
|
||||||
TIME.Create .BS 20
|
TIME.Create .BS 20
|
||||||
TIME.Mod .BS 20
|
TIME.Mod .BS 20
|
||||||
|
@ -101,7 +101,7 @@ CS.INIT >SYSCALL GetArgC
|
|||||||
* jsr CS.INIT.Check.Wildcard
|
* jsr CS.INIT.Check.Wildcard
|
||||||
|
|
||||||
>LDYA ZPPtr1
|
>LDYA ZPPtr1
|
||||||
jsr InitSrcDirPatYA
|
jsr InitSrcDirYA
|
||||||
bcc .1 success, scan for any other args
|
bcc .1 success, scan for any other args
|
||||||
.9 rts
|
.9 rts
|
||||||
|
|
||||||
|
@ -13,11 +13,7 @@ AUTO 6
|
|||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
X.MAX.RECURSE .EQ 8
|
X.MAX.RECURSE .EQ 8
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
InitSrcDirPatYA ldx #$80
|
InitSrcDirYA >SYSCALL GetFullPathYA
|
||||||
.HS 2C bit abs
|
|
||||||
InitSrcDirYA ldx #0
|
|
||||||
stx .11+1
|
|
||||||
>SYSCALL GetFullPathYA
|
|
||||||
bcc .10
|
bcc .10
|
||||||
rts
|
rts
|
||||||
|
|
||||||
@ -28,33 +24,45 @@ InitSrcDirYA ldx #0
|
|||||||
cmp #1
|
cmp #1
|
||||||
beq .5 we have '/'
|
beq .5 we have '/'
|
||||||
|
|
||||||
.11 lda #$ff Self Modified
|
|
||||||
bmi .1 Force using pattern
|
|
||||||
|
|
||||||
>PUSHW L.STAT
|
>PUSHW L.STAT
|
||||||
>PUSHW ZPPtr1
|
>PUSHW ZPPtr1
|
||||||
>SYSCALL Stat
|
>SYSCALL Stat
|
||||||
|
ror
|
||||||
bcs .1 File/DIR does not exists, go extract pattern
|
sta .30+1 save file exists for later.....
|
||||||
|
bmi .1 File/DIR does not exists, go extract pattern
|
||||||
|
|
||||||
lda STAT+S.STAT.P.TYPE
|
lda STAT+S.STAT.P.TYPE
|
||||||
cmp #$0f
|
cmp #$0f
|
||||||
beq .5 TYPE=DIR, do not extract wildcard
|
beq .5 TYPE=DIR, do not extract wildcard
|
||||||
|
|
||||||
.1 lda (ZPPtr1)
|
.1 lda (ZPPtr1) Get Src Path Len
|
||||||
tay
|
tay
|
||||||
|
|
||||||
|
ldx #0 Init Wildcard count
|
||||||
|
|
||||||
.2 lda (ZPPtr1),y search backward for a /
|
.2 lda (ZPPtr1),y search backward for a /
|
||||||
cmp #'/'
|
cmp #'/'
|
||||||
beq .3
|
beq .3
|
||||||
dey
|
cmp #'?' Test if some wildcard chars....
|
||||||
|
beq .21
|
||||||
|
cmp #'*'
|
||||||
|
bne .22
|
||||||
|
|
||||||
|
.21 inx inc wildcard count
|
||||||
|
.22 dey
|
||||||
bne .2
|
bne .2
|
||||||
|
|
||||||
.3 tya
|
.3 tya
|
||||||
cmp (ZPPtr1)
|
cmp (ZPPtr1)
|
||||||
beq .5 Make sure at least one char
|
beq .5 Make sure at least one char
|
||||||
|
|
||||||
ldx #0
|
txa
|
||||||
|
bne .31 we have wc, go extract....
|
||||||
|
|
||||||
|
.30 lda #$ff no wc, remember if file exists?
|
||||||
|
bmi .91 no, file not found....
|
||||||
|
|
||||||
|
.31 ldx #0
|
||||||
phy save / pos to trunk string later
|
phy save / pos to trunk string later
|
||||||
|
|
||||||
.4 iny
|
.4 iny
|
||||||
@ -67,8 +75,8 @@ InitSrcDirYA ldx #0
|
|||||||
|
|
||||||
pla get back / pos
|
pla get back / pos
|
||||||
sta (ZPPtr1) trunk it for Opendir
|
sta (ZPPtr1) trunk it for Opendir
|
||||||
|
stx UsrBuf256 set pattern len
|
||||||
|
|
||||||
stx UsrBuf256
|
|
||||||
>LDYAI UsrBuf256
|
>LDYAI UsrBuf256
|
||||||
>SYSCALL NewPstrYA
|
>SYSCALL NewPstrYA
|
||||||
bcs .9
|
bcs .9
|
||||||
@ -86,7 +94,7 @@ InitSrcDirYA ldx #0
|
|||||||
sta (pData),y
|
sta (pData),y
|
||||||
|
|
||||||
lda (ZPPtr1)
|
lda (ZPPtr1)
|
||||||
sta (ZPPtr2)
|
pha
|
||||||
tay
|
tay
|
||||||
|
|
||||||
.6 lda (ZPPtr1),y
|
.6 lda (ZPPtr1),y
|
||||||
@ -94,18 +102,18 @@ InitSrcDirYA ldx #0
|
|||||||
dey
|
dey
|
||||||
bne .6
|
bne .6
|
||||||
|
|
||||||
lda (ZPPtr2)
|
ply
|
||||||
tay
|
|
||||||
lda #'/'
|
lda #'/'
|
||||||
cmp (ZPPtr2),y
|
cmp (ZPPtr1),y
|
||||||
beq .7
|
beq .7
|
||||||
|
|
||||||
iny
|
iny
|
||||||
sta (ZPPtr2),y
|
sta (ZPPtr2),y
|
||||||
tya
|
|
||||||
|
.7 tya
|
||||||
sta (ZPPtr2)
|
sta (ZPPtr2)
|
||||||
|
|
||||||
.7 >LDYA ZPPtr1
|
>LDYA ZPPtr2
|
||||||
>SYSCALL OpenDirYA
|
>SYSCALL OpenDirYA
|
||||||
|
|
||||||
bcs .9
|
bcs .9
|
||||||
@ -122,6 +130,7 @@ InitSrcDirYA ldx #0
|
|||||||
clc
|
clc
|
||||||
rts
|
rts
|
||||||
|
|
||||||
|
.91 lda #MLI.ERR.FNOTFND
|
||||||
.9 pha
|
.9 pha
|
||||||
.90 lda #$ff self modified
|
.90 lda #$ff self modified
|
||||||
>SYSCALL FreeMemA
|
>SYSCALL FreeMemA
|
||||||
@ -132,10 +141,9 @@ InitSrcDirYA.RTS
|
|||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
.DO X.COPY.TO.DEST=1
|
.DO X.COPY.TO.DEST=1
|
||||||
InitDstDirYA >SYSCALL GetFullPathYA
|
InitDstDirYA >SYSCALL GetFullPathYA
|
||||||
bcc .10
|
bcs InitSrcDirYA.RTS
|
||||||
rts
|
|
||||||
|
|
||||||
.10 stx .90+1
|
stx .90+1
|
||||||
>STYA ZPPtr1
|
>STYA ZPPtr1
|
||||||
|
|
||||||
>PUSHW L.STAT
|
>PUSHW L.STAT
|
||||||
|
36
DRV/DHGR.DRV.S.BLT.txt
Normal file
36
DRV/DHGR.DRV.S.BLT.txt
Normal file
@ -0,0 +1,36 @@
|
|||||||
|
PR#3
|
||||||
|
PREFIX /A2OSX.BUILD
|
||||||
|
LOMEM $A00
|
||||||
|
INC 1
|
||||||
|
AUTO 6
|
||||||
|
.LIST OFF
|
||||||
|
*--------------------------------------
|
||||||
|
* BitBlt
|
||||||
|
* In : YA = Ptr to CtrlBlk :
|
||||||
|
* 1 : OP
|
||||||
|
* 4 : SrcX1
|
||||||
|
* 6 : SrcY1
|
||||||
|
* 8 : SrcX2
|
||||||
|
* 10 : SrcY2
|
||||||
|
* 12 : DestX
|
||||||
|
* 14 : DestY
|
||||||
|
* 16 : SrcPtr
|
||||||
|
* 18 : DstPtr
|
||||||
|
*--------------------------------------
|
||||||
|
BITBLT >STYA ZPBase
|
||||||
|
ldy #S.CB.DstPtr+1
|
||||||
|
|
||||||
|
.1 lda (ZPBase),y
|
||||||
|
sta CB.Cache,y
|
||||||
|
dey
|
||||||
|
bpl .1
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
clc
|
||||||
|
rts
|
||||||
|
*--------------------------------------
|
||||||
|
MAN
|
||||||
|
SAVE /A2OSX.SRC/DRV/DHGR.DRV.S.BLT
|
||||||
|
LOAD /A2OSX.SRC/DRV/DHGR.DRV.S
|
||||||
|
ASM
|
288
DRV/DHGR.DRV.S.LIN.txt
Normal file
288
DRV/DHGR.DRV.S.LIN.txt
Normal file
@ -0,0 +1,288 @@
|
|||||||
|
PR#3
|
||||||
|
PREFIX /A2OSX.BUILD
|
||||||
|
LOMEM $A00
|
||||||
|
INC 1
|
||||||
|
AUTO 6
|
||||||
|
.LIST OFF
|
||||||
|
*--------------------------------------
|
||||||
|
* HLINE X1,X2 at Y1
|
||||||
|
*--------------------------------------
|
||||||
|
HLINE >STYA ZPBase
|
||||||
|
ldy #S.CB.X2+1
|
||||||
|
|
||||||
|
.1 lda (ZPBase),y
|
||||||
|
sta CB.Cache,y
|
||||||
|
dey
|
||||||
|
bpl .1
|
||||||
|
|
||||||
|
HLINE.I lda CB.Cache+S.CB.MODE
|
||||||
|
bit #S.CB.MODE.C16
|
||||||
|
bne HLINE.C16
|
||||||
|
|
||||||
|
HLINE.MONO lda CB.Cache+S.CB.X2 Count=X2-X1
|
||||||
|
sec
|
||||||
|
sbc CB.Cache+S.CB.X1
|
||||||
|
sta ZPCount
|
||||||
|
tay
|
||||||
|
|
||||||
|
lda CB.Cache+S.CB.X2+1
|
||||||
|
sbc CB.Cache+S.CB.X1+1
|
||||||
|
sta ZPCount+1
|
||||||
|
tax
|
||||||
|
jsr DIVMOD7YX
|
||||||
|
|
||||||
|
ldy CB.Cache+S.CB.X1
|
||||||
|
ldx CB.Cache+S.CB.X1+1
|
||||||
|
|
||||||
|
jsr DIVMOD7YX A=X1 DIV 7, X=MOD 7
|
||||||
|
|
||||||
|
|
||||||
|
pha save X DIV 7
|
||||||
|
lsr
|
||||||
|
ldy CB.Cache+S.CB.Y1
|
||||||
|
clc
|
||||||
|
adc BASEL,y setup line Base Ptr (A=Col)
|
||||||
|
sta ZPBase
|
||||||
|
lda BASEH,y
|
||||||
|
sta ZPBase+1
|
||||||
|
ply
|
||||||
|
lda COL.BANK,y
|
||||||
|
tay
|
||||||
|
sta $c000,y
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
HLINE.C16
|
||||||
|
rts
|
||||||
|
*--------------------------------------
|
||||||
|
HLINE.DIVMOD7 ldx CB.Cache+S.CB.X1+1 Get X Hi byte....
|
||||||
|
|
||||||
|
lda DIV7.lo,x
|
||||||
|
sta .1+1
|
||||||
|
lda DIV7.hi,x
|
||||||
|
sta .1+2
|
||||||
|
|
||||||
|
lda MOD7.lo,x
|
||||||
|
sta .2+1
|
||||||
|
lda MOD7.hi,x
|
||||||
|
sta .2+2
|
||||||
|
|
||||||
|
lda DIV7.BASE,x
|
||||||
|
ldx CB.Cache+S.CB.X1
|
||||||
|
|
||||||
|
clc
|
||||||
|
.1 adc $ffff,x DIV7 : x = X.LO, a = X DIV 7
|
||||||
|
sta XDIV7
|
||||||
|
.2 ldy $ffff,x MOD7 : x = X.LO, y = X MOD 7
|
||||||
|
sta XMOD7
|
||||||
|
rts
|
||||||
|
*--------------------------------------
|
||||||
|
* VLINE Y1,Y2 at X1
|
||||||
|
*--------------------------------------
|
||||||
|
VLINE >STYA ZPBase
|
||||||
|
ldy #S.CB.Y2
|
||||||
|
|
||||||
|
.1 lda (ZPBase),y
|
||||||
|
sta CB.Cache,y
|
||||||
|
dey
|
||||||
|
bpl .1
|
||||||
|
|
||||||
|
sta SET80STORE
|
||||||
|
|
||||||
|
lda CB.Cache+S.CB.OP
|
||||||
|
beq VLINE.OP0
|
||||||
|
|
||||||
|
VLINE.XOR jsr VLINE.DIVMOD7
|
||||||
|
|
||||||
|
ldy XMOD7
|
||||||
|
lda Mono.Masks,y
|
||||||
|
sta .2+1
|
||||||
|
|
||||||
|
ldy XCOL7
|
||||||
|
|
||||||
|
ldx CB.Cache+S.CB.Y1
|
||||||
|
|
||||||
|
.1 lda BASEL,x
|
||||||
|
sta ZPBase
|
||||||
|
lda BASEH,x
|
||||||
|
sta ZPBase+1
|
||||||
|
|
||||||
|
lda (ZPBase),y XOR
|
||||||
|
.2 eor #$ff
|
||||||
|
sta (ZPBase),y
|
||||||
|
|
||||||
|
inx
|
||||||
|
cpx CB.Cache+S.CB.Y2
|
||||||
|
bcc .1
|
||||||
|
beq .1
|
||||||
|
|
||||||
|
sta CLR80STORE
|
||||||
|
rts
|
||||||
|
|
||||||
|
VLINE.OP0 lda CB.Cache+S.CB.MODE
|
||||||
|
dec
|
||||||
|
bne VLINE.C16
|
||||||
|
|
||||||
|
VLINE.MONO jsr VLINE.DIVMOD7
|
||||||
|
|
||||||
|
ldy XMOD7
|
||||||
|
lda Mono.NMasks,y includes And $7F for mono
|
||||||
|
sta .3+1
|
||||||
|
|
||||||
|
lda CB.Cache+S.CB.COLOR get color
|
||||||
|
beq .1
|
||||||
|
lda Mono.Masks,y
|
||||||
|
.1 sta .4+1
|
||||||
|
|
||||||
|
ldy XCOL7
|
||||||
|
|
||||||
|
ldx CB.Cache+S.CB.Y1
|
||||||
|
|
||||||
|
.2 lda BASEL,x
|
||||||
|
sta ZPBase
|
||||||
|
lda BASEH,x
|
||||||
|
sta ZPBase+1
|
||||||
|
|
||||||
|
lda (ZPBase),y
|
||||||
|
.3 and #$ff
|
||||||
|
.4 ora #$ff
|
||||||
|
sta (ZPBase),y
|
||||||
|
|
||||||
|
inx
|
||||||
|
cpx CB.Cache+S.CB.Y2
|
||||||
|
bcc .2
|
||||||
|
beq .2
|
||||||
|
|
||||||
|
sta CLR80STORE
|
||||||
|
rts
|
||||||
|
|
||||||
|
VLINE.C16 lda CB.Cache+S.CB.X1
|
||||||
|
lsr CB.Cache+S.CB.X1+1 divide by 4
|
||||||
|
ror
|
||||||
|
lsr CB.Cache+S.CB.X1+1
|
||||||
|
ror
|
||||||
|
tay Y=X/4 (range 0->139)
|
||||||
|
lda DIV7.0,y A=X/4/7 (range 0->19)
|
||||||
|
|
||||||
|
asl times 2 (range 0->38)
|
||||||
|
|
||||||
|
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
|
||||||
|
sta ZPBase+1 ...the 4 columns
|
||||||
|
|
||||||
|
lda MOD7.0,y get MOD
|
||||||
|
|
||||||
|
asl times 4 to compute index in MASK tables
|
||||||
|
asl
|
||||||
|
tax set in X for Masks,NMasks
|
||||||
|
|
||||||
|
lda CB.Cache+S.CB.COLOR
|
||||||
|
|
||||||
|
asl times 4 to compute index in PIXELS table
|
||||||
|
asl
|
||||||
|
tay
|
||||||
|
|
||||||
|
lda Color.Masks,x bits in 1st byte to light?
|
||||||
|
beq .10
|
||||||
|
and Color.Pixels,y apply color
|
||||||
|
sta GBYTE
|
||||||
|
|
||||||
|
sta SETPAGE2
|
||||||
|
|
||||||
|
lda (ZPBase)
|
||||||
|
and Color.NMasks,x reset existing pixel,
|
||||||
|
ora GBYTE
|
||||||
|
sta (ZPBase)
|
||||||
|
|
||||||
|
.10 inx
|
||||||
|
iny
|
||||||
|
|
||||||
|
lda Color.Masks,x
|
||||||
|
beq .11
|
||||||
|
and Color.Pixels,y apply color
|
||||||
|
sta GBYTE
|
||||||
|
|
||||||
|
sta CLRPAGE2
|
||||||
|
|
||||||
|
lda (ZPBase)
|
||||||
|
and Color.NMasks,x reset existing pixel,
|
||||||
|
ora GBYTE
|
||||||
|
sta (ZPBase)
|
||||||
|
|
||||||
|
.11 inc ZPBase
|
||||||
|
inx
|
||||||
|
iny
|
||||||
|
|
||||||
|
lda Color.Masks,x
|
||||||
|
beq .12
|
||||||
|
and Color.Pixels,y apply color
|
||||||
|
sta GBYTE
|
||||||
|
|
||||||
|
sta SETPAGE2
|
||||||
|
|
||||||
|
lda (ZPBase)
|
||||||
|
and Color.NMasks,x reset existing pixel,
|
||||||
|
ora GBYTE
|
||||||
|
sta (ZPBase)
|
||||||
|
|
||||||
|
.12 inx
|
||||||
|
iny
|
||||||
|
|
||||||
|
lda Color.Masks,x
|
||||||
|
beq .13
|
||||||
|
and Color.Pixels,y apply color
|
||||||
|
sta GBYTE
|
||||||
|
|
||||||
|
sta CLRPAGE2
|
||||||
|
|
||||||
|
lda (ZPBase)
|
||||||
|
and Color.NMasks,x reset existing pixel,
|
||||||
|
ora GBYTE
|
||||||
|
sta (ZPBase)
|
||||||
|
|
||||||
|
.13 sta CLR80STORE
|
||||||
|
rts
|
||||||
|
*--------------------------------------
|
||||||
|
VLINE.DIVMOD7 ldx CB.Cache+S.CB.X1+1 Get X HI byte....
|
||||||
|
|
||||||
|
lda DIV7.lo,x
|
||||||
|
sta .2+1
|
||||||
|
lda DIV7.hi,x
|
||||||
|
sta .2+2
|
||||||
|
|
||||||
|
lda MOD7.lo,x
|
||||||
|
sta .3+1
|
||||||
|
lda MOD7.hi,x
|
||||||
|
sta .3+2
|
||||||
|
|
||||||
|
lda DIV7.BASE,x
|
||||||
|
ldx CB.Cache+S.CB.X1 Get X LO byte....
|
||||||
|
|
||||||
|
clc
|
||||||
|
|
||||||
|
.2 adc $ffff,x DIV7 : x = X.LO, a = X DIV 7
|
||||||
|
sta XDIV7 save X DIV 7
|
||||||
|
|
||||||
|
tay
|
||||||
|
lsr
|
||||||
|
sta XCOL7
|
||||||
|
ldx COL.BANK,y
|
||||||
|
sta $C000,x
|
||||||
|
|
||||||
|
.3 lda $ffff,x MOD7 : x = X.LO, y = X MOD 7
|
||||||
|
sta XMOD7
|
||||||
|
rts
|
||||||
|
|
||||||
|
*--------------------------------------
|
||||||
|
MAN
|
||||||
|
SAVE /A2OSX.SRC/DRV/DHGR.DRV.S.LIN
|
||||||
|
LOAD /A2OSX.SRC/DRV/DHGR.DRV.S
|
||||||
|
ASM
|
183
DRV/DHGR.DRV.S.PIX.txt
Normal file
183
DRV/DHGR.DRV.S.PIX.txt
Normal file
@ -0,0 +1,183 @@
|
|||||||
|
PR#3
|
||||||
|
PREFIX /A2OSX.BUILD
|
||||||
|
LOMEM $A00
|
||||||
|
INC 1
|
||||||
|
AUTO 6
|
||||||
|
.LIST OFF
|
||||||
|
*--------------------------------------
|
||||||
|
* SETPIXEL
|
||||||
|
* In : YA = Ptr to CtrlBlk :
|
||||||
|
* 1 : OP (XOR only)
|
||||||
|
* 2 : Mode
|
||||||
|
* 3 : Color
|
||||||
|
* 4 : SrcX1
|
||||||
|
* 6 : SrcY1
|
||||||
|
*--------------------------------------
|
||||||
|
SETPIXEL >STYA ZPBase
|
||||||
|
ldy #S.CB.Y1 Skip S.CB.Y1+1.....always 0
|
||||||
|
.1 lda (ZPBase),y
|
||||||
|
sta CB.Cache,y
|
||||||
|
dey
|
||||||
|
bpl .1
|
||||||
|
|
||||||
|
sta SET80STORE
|
||||||
|
|
||||||
|
lda CB.Cache+S.CB.MODE
|
||||||
|
bit #S.CB.MODE.C16
|
||||||
|
bne SETPIXEL.C16
|
||||||
|
|
||||||
|
SETPIXEL.MONO ldx CB.Cache+S.CB.X1+1 Get X Hi byte....
|
||||||
|
|
||||||
|
lda DIV7.lo,x
|
||||||
|
sta .1+1
|
||||||
|
lda DIV7.hi,x
|
||||||
|
sta .1+2
|
||||||
|
|
||||||
|
lda MOD7.lo,x
|
||||||
|
sta .2+1
|
||||||
|
lda MOD7.hi,x
|
||||||
|
sta .2+2
|
||||||
|
|
||||||
|
lda DIV7.BASE,x
|
||||||
|
ldx CB.Cache+S.CB.X1
|
||||||
|
|
||||||
|
clc
|
||||||
|
.1 adc $ffff,x DIV7 : x = X.LO, a = X DIV 7
|
||||||
|
|
||||||
|
pha save X DIV 7
|
||||||
|
lsr
|
||||||
|
ldy CB.Cache+S.CB.Y1
|
||||||
|
clc
|
||||||
|
adc BASEL,y setup line Base Ptr (A=Col)
|
||||||
|
sta ZPBase
|
||||||
|
lda BASEH,y
|
||||||
|
sta ZPBase+1
|
||||||
|
ply
|
||||||
|
lda COL.BANK,y
|
||||||
|
tay
|
||||||
|
sta $c000,y
|
||||||
|
|
||||||
|
.2 ldy $ffff,x MOD7 : x = X.LO, y = X MOD 7
|
||||||
|
|
||||||
|
lda CB.Cache+S.CB.OP
|
||||||
|
beq .5
|
||||||
|
|
||||||
|
lda (ZPBase) XOR
|
||||||
|
eor Mono.Masks,y y = mod 7
|
||||||
|
sta (ZPBase)
|
||||||
|
|
||||||
|
sta CLR80STORE
|
||||||
|
rts
|
||||||
|
|
||||||
|
.5 lda (ZPBase)
|
||||||
|
ldx CB.Cache+S.CB.COLOR get color
|
||||||
|
bne .6
|
||||||
|
|
||||||
|
and Mono.NMasks,y includes And $7F for mono
|
||||||
|
sta (ZPBase)
|
||||||
|
sta CLR80STORE
|
||||||
|
rts
|
||||||
|
|
||||||
|
.6 and #$7F switch back this byte to mono
|
||||||
|
ora Mono.Masks,y
|
||||||
|
sta (ZPBase)
|
||||||
|
sta CLR80STORE
|
||||||
|
rts
|
||||||
|
|
||||||
|
SETPIXEL.C16 lda CB.Cache+S.CB.X1
|
||||||
|
lsr CB.Cache+S.CB.X1+1 divide by 4
|
||||||
|
ror
|
||||||
|
lsr CB.Cache+S.CB.X1+1
|
||||||
|
ror
|
||||||
|
tay Y=X/4 (range 0->139)
|
||||||
|
lda DIV7.0,y A=X/4/7 (range 0->19)
|
||||||
|
|
||||||
|
asl times 2 (range 0->38)
|
||||||
|
|
||||||
|
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
|
||||||
|
sta ZPBase+1 ...the 4 columns
|
||||||
|
|
||||||
|
lda MOD7.0,y get MOD
|
||||||
|
|
||||||
|
asl times 4 to compute index in MASK tables
|
||||||
|
asl
|
||||||
|
tax set in X for Masks,NMasks
|
||||||
|
|
||||||
|
lda CB.Cache+S.CB.COLOR
|
||||||
|
|
||||||
|
asl times 4 to compute index in PIXELS table
|
||||||
|
asl
|
||||||
|
tay
|
||||||
|
|
||||||
|
lda Color.Masks,x bits in 1st byte to light?
|
||||||
|
beq .10
|
||||||
|
and Color.Pixels,y apply color
|
||||||
|
sta GBYTE
|
||||||
|
|
||||||
|
sta SETPAGE2
|
||||||
|
|
||||||
|
lda (ZPBase)
|
||||||
|
and Color.NMasks,x reset existing pixel,
|
||||||
|
ora GBYTE
|
||||||
|
sta (ZPBase)
|
||||||
|
|
||||||
|
.10 inx
|
||||||
|
iny
|
||||||
|
|
||||||
|
lda Color.Masks,x
|
||||||
|
beq .11
|
||||||
|
and Color.Pixels,y apply color
|
||||||
|
sta GBYTE
|
||||||
|
|
||||||
|
sta CLRPAGE2
|
||||||
|
|
||||||
|
lda (ZPBase)
|
||||||
|
and Color.NMasks,x reset existing pixel,
|
||||||
|
ora GBYTE
|
||||||
|
sta (ZPBase)
|
||||||
|
|
||||||
|
.11 inc ZPBase
|
||||||
|
inx
|
||||||
|
iny
|
||||||
|
|
||||||
|
lda Color.Masks,x
|
||||||
|
beq .12
|
||||||
|
and Color.Pixels,y apply color
|
||||||
|
sta GBYTE
|
||||||
|
|
||||||
|
sta SETPAGE2
|
||||||
|
|
||||||
|
lda (ZPBase)
|
||||||
|
and Color.NMasks,x reset existing pixel,
|
||||||
|
ora GBYTE
|
||||||
|
sta (ZPBase)
|
||||||
|
|
||||||
|
.12 inx
|
||||||
|
iny
|
||||||
|
|
||||||
|
lda Color.Masks,x
|
||||||
|
beq .13
|
||||||
|
and Color.Pixels,y apply color
|
||||||
|
sta GBYTE
|
||||||
|
|
||||||
|
sta CLRPAGE2
|
||||||
|
|
||||||
|
lda (ZPBase)
|
||||||
|
and Color.NMasks,x reset existing pixel,
|
||||||
|
ora GBYTE
|
||||||
|
sta (ZPBase)
|
||||||
|
|
||||||
|
.13 sta CLR80STORE
|
||||||
|
rts
|
||||||
|
*--------------------------------------
|
||||||
|
* GETPIXEL
|
||||||
|
*--------------------------------------
|
||||||
|
GETPIXEL rts
|
||||||
|
*--------------------------------------
|
||||||
|
MAN
|
||||||
|
SAVE /A2OSX.SRC/DRV/DHGR.DRV.S.PIX
|
||||||
|
LOAD /A2OSX.SRC/DRV/DHGR.DRV.S
|
||||||
|
ASM
|
@ -10,13 +10,13 @@ AUTO 6
|
|||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
.INB /A2OSX.BUILD/INC/MACROS.I
|
.INB /A2OSX.BUILD/INC/MACROS.I
|
||||||
.INB /A2OSX.BUILD/INC/A2OSX.I
|
.INB /A2OSX.BUILD/INC/A2OSX.I
|
||||||
* .INB /A2OSX.BUILD/INC/MLI.ERR.I
|
|
||||||
.INB /A2OSX.BUILD/INC/IO.I
|
.INB /A2OSX.BUILD/INC/IO.I
|
||||||
.INB /A2OSX.BUILD/INC/LIBGFX.I
|
.INB /A2OSX.BUILD/INC/LIBGFX.I
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
ZPBase .EQ ZPDRV
|
ZPBase .EQ ZPDRV
|
||||||
ZPCount .EQ ZPDRV+2
|
ZPCount .EQ ZPDRV+2
|
||||||
|
ZPCountCol .EQ ZPDRV+4
|
||||||
|
ZPCountMod .EQ ZPDRV+5
|
||||||
|
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
* File Header (16 Bytes)
|
* File Header (16 Bytes)
|
||||||
@ -238,442 +238,9 @@ CONTROL sta CLRTEXT
|
|||||||
CLOSE clc
|
CLOSE clc
|
||||||
rts
|
rts
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
* SETPIXEL
|
.INB /A2OSX.SRC/DRV/DHGR.DRV.S.PIX
|
||||||
* In : YA = Ptr to CtrlBlk :
|
.INB /A2OSX.SRC/DRV/DHGR.DRV.S.LIN
|
||||||
* 1 : OP (XOR only)
|
.INB /A2OSX.SRC/DRV/DHGR.DRV.S.BLT
|
||||||
* 2 : Mode
|
|
||||||
* 3 : Color
|
|
||||||
* 4 : SrcX1
|
|
||||||
* 6 : SrcY1
|
|
||||||
*--------------------------------------
|
|
||||||
SETPIXEL >STYA ZPBase
|
|
||||||
ldy #S.CB.Y1 Skip S.CB.Y1+1.....always 0
|
|
||||||
.1 lda (ZPBase),y
|
|
||||||
sta CB.Cache,y
|
|
||||||
dey
|
|
||||||
bpl .1
|
|
||||||
|
|
||||||
sta SET80STORE
|
|
||||||
|
|
||||||
lda CB.Cache+S.CB.MODE
|
|
||||||
bit #S.CB.MODE.C16
|
|
||||||
bne SETPIXEL.C16
|
|
||||||
|
|
||||||
SETPIXEL.MONO ldx CB.Cache+S.CB.X1+1 Get X Hi byte....
|
|
||||||
|
|
||||||
lda DIV7.lo,x
|
|
||||||
sta .1+1
|
|
||||||
lda DIV7.hi,x
|
|
||||||
sta .1+2
|
|
||||||
|
|
||||||
lda MOD7.lo,x
|
|
||||||
sta .2+1
|
|
||||||
lda MOD7.hi,x
|
|
||||||
sta .2+2
|
|
||||||
|
|
||||||
lda DIV7.BASE,x
|
|
||||||
ldx CB.Cache+S.CB.X1
|
|
||||||
|
|
||||||
clc
|
|
||||||
.1 adc $ffff,x DIV7 : x = X.LO, a = X DIV 7
|
|
||||||
|
|
||||||
pha save X DIV 7
|
|
||||||
lsr
|
|
||||||
ldy CB.Cache+S.CB.Y1
|
|
||||||
clc
|
|
||||||
adc BASEL,y setup line Base Ptr (A=Col)
|
|
||||||
sta ZPBase
|
|
||||||
lda BASEH,y
|
|
||||||
sta ZPBase+1
|
|
||||||
ply
|
|
||||||
lda COL.BANK,y
|
|
||||||
tay
|
|
||||||
sta $c000,y
|
|
||||||
|
|
||||||
.2 ldy $ffff,x MOD7 : x = X.LO, y = X MOD 7
|
|
||||||
|
|
||||||
lda CB.Cache+S.CB.OP
|
|
||||||
beq .5
|
|
||||||
|
|
||||||
lda (ZPBase) XOR
|
|
||||||
eor Mono.Masks,y y = mod 7
|
|
||||||
sta (ZPBase)
|
|
||||||
|
|
||||||
sta CLR80STORE
|
|
||||||
rts
|
|
||||||
|
|
||||||
.5 lda (ZPBase)
|
|
||||||
ldx CB.Cache+S.CB.COLOR get color
|
|
||||||
bne .6
|
|
||||||
|
|
||||||
and Mono.NMasks,y includes And $7F for mono
|
|
||||||
sta (ZPBase)
|
|
||||||
sta CLR80STORE
|
|
||||||
rts
|
|
||||||
|
|
||||||
.6 and #$7F switch back this byte to mono
|
|
||||||
ora Mono.Masks,y
|
|
||||||
sta (ZPBase)
|
|
||||||
sta CLR80STORE
|
|
||||||
rts
|
|
||||||
|
|
||||||
SETPIXEL.C16 lda CB.Cache+S.CB.X1
|
|
||||||
lsr CB.Cache+S.CB.X1+1 divide by 4
|
|
||||||
ror
|
|
||||||
lsr CB.Cache+S.CB.X1+1
|
|
||||||
ror
|
|
||||||
tay Y=X/4 (range 0->139)
|
|
||||||
lda DIV7.0,y A=X/4/7 (range 0->19)
|
|
||||||
|
|
||||||
asl times 2 (range 0->38)
|
|
||||||
|
|
||||||
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
|
|
||||||
sta ZPBase+1 ...the 4 columns
|
|
||||||
|
|
||||||
lda MOD7.0,y get MOD
|
|
||||||
|
|
||||||
asl times 4 to compute index in MASK tables
|
|
||||||
asl
|
|
||||||
tax set in X for Masks,NMasks
|
|
||||||
|
|
||||||
lda CB.Cache+S.CB.COLOR
|
|
||||||
|
|
||||||
asl times 4 to compute index in PIXELS table
|
|
||||||
asl
|
|
||||||
tay
|
|
||||||
|
|
||||||
lda Color.Masks,x bits in 1st byte to light?
|
|
||||||
beq .10
|
|
||||||
and Color.Pixels,y apply color
|
|
||||||
sta GBYTE
|
|
||||||
|
|
||||||
sta SETPAGE2
|
|
||||||
|
|
||||||
lda (ZPBase)
|
|
||||||
and Color.NMasks,x reset existing pixel,
|
|
||||||
ora GBYTE
|
|
||||||
sta (ZPBase)
|
|
||||||
|
|
||||||
.10 inx
|
|
||||||
iny
|
|
||||||
|
|
||||||
lda Color.Masks,x
|
|
||||||
beq .11
|
|
||||||
and Color.Pixels,y apply color
|
|
||||||
sta GBYTE
|
|
||||||
|
|
||||||
sta CLRPAGE2
|
|
||||||
|
|
||||||
lda (ZPBase)
|
|
||||||
and Color.NMasks,x reset existing pixel,
|
|
||||||
ora GBYTE
|
|
||||||
sta (ZPBase)
|
|
||||||
|
|
||||||
.11 inc ZPBase
|
|
||||||
inx
|
|
||||||
iny
|
|
||||||
|
|
||||||
lda Color.Masks,x
|
|
||||||
beq .12
|
|
||||||
and Color.Pixels,y apply color
|
|
||||||
sta GBYTE
|
|
||||||
|
|
||||||
sta SETPAGE2
|
|
||||||
|
|
||||||
lda (ZPBase)
|
|
||||||
and Color.NMasks,x reset existing pixel,
|
|
||||||
ora GBYTE
|
|
||||||
sta (ZPBase)
|
|
||||||
|
|
||||||
.12 inx
|
|
||||||
iny
|
|
||||||
|
|
||||||
lda Color.Masks,x
|
|
||||||
beq .13
|
|
||||||
and Color.Pixels,y apply color
|
|
||||||
sta GBYTE
|
|
||||||
|
|
||||||
sta CLRPAGE2
|
|
||||||
|
|
||||||
lda (ZPBase)
|
|
||||||
and Color.NMasks,x reset existing pixel,
|
|
||||||
ora GBYTE
|
|
||||||
sta (ZPBase)
|
|
||||||
|
|
||||||
.13 sta CLR80STORE
|
|
||||||
rts
|
|
||||||
*--------------------------------------
|
|
||||||
* GETPIXEL
|
|
||||||
*--------------------------------------
|
|
||||||
GETPIXEL rts
|
|
||||||
*--------------------------------------
|
|
||||||
* HLINE X1,X2 at Y1
|
|
||||||
*--------------------------------------
|
|
||||||
HLINE >STYA ZPBase
|
|
||||||
ldy #S.CB.X2+1
|
|
||||||
|
|
||||||
.1 lda (ZPBase),y
|
|
||||||
sta CB.Cache,y
|
|
||||||
dey
|
|
||||||
bpl .1
|
|
||||||
|
|
||||||
HLINE.I lda CB.Cache+S.CB.MODE
|
|
||||||
bit #S.CB.MODE.C16
|
|
||||||
bne HLINE.C16
|
|
||||||
|
|
||||||
HLINE.MONO lda CB.Cache+S.CB.X2 Count=X2-X1
|
|
||||||
sec
|
|
||||||
sbc CB.Cache+S.CB.X1
|
|
||||||
eor #$ff
|
|
||||||
sta ZPCount
|
|
||||||
lda CB.Cache+S.CB.X2+1
|
|
||||||
sbc CB.Cache+S.CB.X1+1
|
|
||||||
eor #$ff
|
|
||||||
sta ZPCount+1
|
|
||||||
|
|
||||||
ldx CB.Cache+S.CB.X1+1 Get X Hi byte....
|
|
||||||
|
|
||||||
lda DIV7.lo,x
|
|
||||||
sta .1+1
|
|
||||||
lda DIV7.hi,x
|
|
||||||
sta .1+2
|
|
||||||
|
|
||||||
lda MOD7.lo,x
|
|
||||||
sta .2+1
|
|
||||||
lda MOD7.hi,x
|
|
||||||
sta .2+2
|
|
||||||
|
|
||||||
lda DIV7.BASE,x
|
|
||||||
ldx CB.Cache+S.CB.X1
|
|
||||||
|
|
||||||
clc
|
|
||||||
.1 adc $ffff,x DIV7 : x = X.LO, a = X DIV 7
|
|
||||||
|
|
||||||
pha save X DIV 7
|
|
||||||
lsr
|
|
||||||
ldy CB.Cache+S.CB.Y1
|
|
||||||
clc
|
|
||||||
adc BASEL,y setup line Base Ptr (A=Col)
|
|
||||||
sta ZPBase
|
|
||||||
lda BASEH,y
|
|
||||||
sta ZPBase+1
|
|
||||||
ply
|
|
||||||
lda COL.BANK,y
|
|
||||||
tay
|
|
||||||
sta $c000,y
|
|
||||||
|
|
||||||
.2 ldy $ffff,x MOD7 : x = X.LO, y = X MOD 7
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
HLINE.C16
|
|
||||||
rts
|
|
||||||
*--------------------------------------
|
|
||||||
* VLINE Y1,Y2 at X1
|
|
||||||
*--------------------------------------
|
|
||||||
VLINE >STYA ZPBase
|
|
||||||
ldy #S.CB.Y2
|
|
||||||
|
|
||||||
.1 lda (ZPBase),y
|
|
||||||
sta CB.Cache,y
|
|
||||||
dey
|
|
||||||
bpl .1
|
|
||||||
|
|
||||||
sta SET80STORE
|
|
||||||
|
|
||||||
lda CB.Cache+S.CB.OP
|
|
||||||
beq VLINE.OP0
|
|
||||||
|
|
||||||
VLINE.XOR jsr VLINE.DIVMOD7
|
|
||||||
|
|
||||||
ldy XMOD7
|
|
||||||
lda Mono.Masks,y
|
|
||||||
sta .2+1
|
|
||||||
|
|
||||||
ldy XCOL7
|
|
||||||
|
|
||||||
ldx CB.Cache+S.CB.Y1
|
|
||||||
|
|
||||||
.1 lda BASEL,x
|
|
||||||
sta ZPBase
|
|
||||||
lda BASEH,x
|
|
||||||
sta ZPBase+1
|
|
||||||
|
|
||||||
lda (ZPBase),y XOR
|
|
||||||
.2 eor #$ff
|
|
||||||
sta (ZPBase),y
|
|
||||||
|
|
||||||
inx
|
|
||||||
cpx CB.Cache+S.CB.Y2
|
|
||||||
bcc .1
|
|
||||||
beq .1
|
|
||||||
|
|
||||||
sta CLR80STORE
|
|
||||||
rts
|
|
||||||
|
|
||||||
VLINE.OP0 lda CB.Cache+S.CB.MODE
|
|
||||||
dec
|
|
||||||
bne VLINE.C16
|
|
||||||
|
|
||||||
VLINE.MONO jsr VLINE.DIVMOD7
|
|
||||||
|
|
||||||
ldy XMOD7
|
|
||||||
lda Mono.NMasks,y includes And $7F for mono
|
|
||||||
sta .3+1
|
|
||||||
|
|
||||||
lda CB.Cache+S.CB.COLOR get color
|
|
||||||
beq .1
|
|
||||||
lda Mono.Masks,y
|
|
||||||
.1 sta .4+1
|
|
||||||
|
|
||||||
ldy XCOL7
|
|
||||||
|
|
||||||
ldx CB.Cache+S.CB.Y1
|
|
||||||
|
|
||||||
.2 lda BASEL,x
|
|
||||||
sta ZPBase
|
|
||||||
lda BASEH,x
|
|
||||||
sta ZPBase+1
|
|
||||||
|
|
||||||
lda (ZPBase),y
|
|
||||||
.3 and #$ff
|
|
||||||
.4 ora #$ff
|
|
||||||
sta (ZPBase),y
|
|
||||||
|
|
||||||
inx
|
|
||||||
cpx CB.Cache+S.CB.Y2
|
|
||||||
bcc .2
|
|
||||||
beq .2
|
|
||||||
|
|
||||||
sta CLR80STORE
|
|
||||||
rts
|
|
||||||
|
|
||||||
VLINE.C16 lda CB.Cache+S.CB.X1
|
|
||||||
lsr CB.Cache+S.CB.X1+1 divide by 4
|
|
||||||
ror
|
|
||||||
lsr CB.Cache+S.CB.X1+1
|
|
||||||
ror
|
|
||||||
tay Y=X/4 (range 0->139)
|
|
||||||
lda DIV7.0,y A=X/4/7 (range 0->19)
|
|
||||||
|
|
||||||
asl times 2 (range 0->38)
|
|
||||||
|
|
||||||
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
|
|
||||||
sta ZPBase+1 ...the 4 columns
|
|
||||||
|
|
||||||
lda MOD7.0,y get MOD
|
|
||||||
|
|
||||||
asl times 4 to compute index in MASK tables
|
|
||||||
asl
|
|
||||||
tax set in X for Masks,NMasks
|
|
||||||
|
|
||||||
lda CB.Cache+S.CB.COLOR
|
|
||||||
|
|
||||||
asl times 4 to compute index in PIXELS table
|
|
||||||
asl
|
|
||||||
tay
|
|
||||||
|
|
||||||
lda Color.Masks,x bits in 1st byte to light?
|
|
||||||
beq .10
|
|
||||||
and Color.Pixels,y apply color
|
|
||||||
sta GBYTE
|
|
||||||
|
|
||||||
sta SETPAGE2
|
|
||||||
|
|
||||||
lda (ZPBase)
|
|
||||||
and Color.NMasks,x reset existing pixel,
|
|
||||||
ora GBYTE
|
|
||||||
sta (ZPBase)
|
|
||||||
|
|
||||||
.10 inx
|
|
||||||
iny
|
|
||||||
|
|
||||||
lda Color.Masks,x
|
|
||||||
beq .11
|
|
||||||
and Color.Pixels,y apply color
|
|
||||||
sta GBYTE
|
|
||||||
|
|
||||||
sta CLRPAGE2
|
|
||||||
|
|
||||||
lda (ZPBase)
|
|
||||||
and Color.NMasks,x reset existing pixel,
|
|
||||||
ora GBYTE
|
|
||||||
sta (ZPBase)
|
|
||||||
|
|
||||||
.11 inc ZPBase
|
|
||||||
inx
|
|
||||||
iny
|
|
||||||
|
|
||||||
lda Color.Masks,x
|
|
||||||
beq .12
|
|
||||||
and Color.Pixels,y apply color
|
|
||||||
sta GBYTE
|
|
||||||
|
|
||||||
sta SETPAGE2
|
|
||||||
|
|
||||||
lda (ZPBase)
|
|
||||||
and Color.NMasks,x reset existing pixel,
|
|
||||||
ora GBYTE
|
|
||||||
sta (ZPBase)
|
|
||||||
|
|
||||||
.12 inx
|
|
||||||
iny
|
|
||||||
|
|
||||||
lda Color.Masks,x
|
|
||||||
beq .13
|
|
||||||
and Color.Pixels,y apply color
|
|
||||||
sta GBYTE
|
|
||||||
|
|
||||||
sta CLRPAGE2
|
|
||||||
|
|
||||||
lda (ZPBase)
|
|
||||||
and Color.NMasks,x reset existing pixel,
|
|
||||||
ora GBYTE
|
|
||||||
sta (ZPBase)
|
|
||||||
|
|
||||||
.13 sta CLR80STORE
|
|
||||||
rts
|
|
||||||
|
|
||||||
VLINE.DIVMOD7 ldx CB.Cache+S.CB.X1+1 Get X Hi byte....
|
|
||||||
|
|
||||||
lda DIV7.lo,x
|
|
||||||
sta .2+1
|
|
||||||
lda DIV7.hi,x
|
|
||||||
sta .2+2
|
|
||||||
|
|
||||||
lda MOD7.lo,x
|
|
||||||
sta .3+1
|
|
||||||
lda MOD7.hi,x
|
|
||||||
sta .3+2
|
|
||||||
|
|
||||||
lda DIV7.BASE,x
|
|
||||||
ldx CB.Cache+S.CB.X1
|
|
||||||
|
|
||||||
clc
|
|
||||||
|
|
||||||
.2 adc $ffff,x DIV7 : x = X.LO, a = X DIV 7
|
|
||||||
* sta XDIV7 save X DIV 7
|
|
||||||
|
|
||||||
tay
|
|
||||||
lsr
|
|
||||||
sta XCOL7
|
|
||||||
ldx COL.BANK,y
|
|
||||||
sta $C000,x
|
|
||||||
|
|
||||||
.3 lda $ffff,x MOD7 : x = X.LO, y = X MOD 7
|
|
||||||
sta XMOD7
|
|
||||||
rts
|
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
* FILLRECT
|
* FILLRECT
|
||||||
* 2 : Mode
|
* 2 : Mode
|
||||||
@ -701,29 +268,6 @@ FILLRECT >STYA ZPBase
|
|||||||
bra .2
|
bra .2
|
||||||
.8 rts
|
.8 rts
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
* BitBlt
|
|
||||||
* In : YA = Ptr to CtrlBlk :
|
|
||||||
* 1 : OP
|
|
||||||
* 4 : SrcX1
|
|
||||||
* 6 : SrcY1
|
|
||||||
* 8 : SrcX2
|
|
||||||
* 10 : SrcY2
|
|
||||||
* 12 : DestX
|
|
||||||
* 14 : DestY
|
|
||||||
* 16 : SrcPtr
|
|
||||||
* 18 : DstPtr
|
|
||||||
*--------------------------------------
|
|
||||||
BITBLT >STYA ZPBase
|
|
||||||
ldy #S.CB.DstPtr+1
|
|
||||||
|
|
||||||
.1 lda (ZPBase),y
|
|
||||||
sta CB.Cache,y
|
|
||||||
dey
|
|
||||||
bpl .1
|
|
||||||
|
|
||||||
clc
|
|
||||||
rts
|
|
||||||
*--------------------------------------
|
|
||||||
* IN:
|
* IN:
|
||||||
* Y = LO
|
* Y = LO
|
||||||
* X = HI
|
* X = HI
|
||||||
|
Loading…
Reference in New Issue
Block a user