mirror of
https://github.com/A2osX/A2osX.git
synced 2024-10-03 05:55:42 +00:00
Kernel 0.94
This commit is contained in:
parent
01d68659f4
commit
8088be4a8f
Binary file not shown.
@ -10,40 +10,149 @@ NEW
|
|||||||
* S.CB.SrcH : height in bitmap/mask
|
* S.CB.SrcH : height in bitmap/mask
|
||||||
* S.CB.SrcPtr : pointer to S.BM
|
* S.CB.SrcPtr : pointer to S.BM
|
||||||
* S.CB.SrcPtr+1 = 0, hMem in S.CB.SrcPtr
|
* S.CB.SrcPtr+1 = 0, hMem in S.CB.SrcPtr
|
||||||
* S.CB.DstPtr : pointer to Save Buffer
|
* S.CB.DstPtr : pointer to Save/restore Buffer
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
BITBLT ldy CB.Cache+S.CB.SrcPtr
|
BITBLT >LDYA CB.Cache+S.CB.X1
|
||||||
lda CB.Cache+S.CB.SrcPtr+1
|
jsr LBUF.SetBounds1YA
|
||||||
|
stx BLT.ScrBitOfs
|
||||||
|
|
||||||
|
lda CB.Cache+S.CB.X1
|
||||||
|
clc
|
||||||
|
adc CB.Cache+S.CB.SrcW
|
||||||
|
tay
|
||||||
|
lda CB.Cache+S.CB.X1+1
|
||||||
|
adc CB.Cache+S.CB.SrcW+1
|
||||||
|
pha
|
||||||
|
tya
|
||||||
|
sbc #0
|
||||||
|
tay
|
||||||
|
pla
|
||||||
|
sbc #0
|
||||||
|
|
||||||
|
jsr LBUF.SetBounds2YA
|
||||||
|
*--------------------------------------
|
||||||
|
lda CB.Cache+S.CB.OP
|
||||||
|
bit #S.CB.OP.RESTORE
|
||||||
|
beq BITBLT.0
|
||||||
|
|
||||||
|
ldy CB.Cache+S.CB.DstPtr
|
||||||
|
lda CB.Cache+S.CB.DstPtr+1
|
||||||
bne .1
|
bne .1
|
||||||
|
|
||||||
|
sta SETREADAUX DstPtr is AUX hMem
|
||||||
|
tya
|
||||||
|
>SYSCALL2 GetMemPtr
|
||||||
|
|
||||||
|
.1 >STYA ZPBMSavePtr
|
||||||
|
|
||||||
|
ldy CB.Cache+S.CB.Y1
|
||||||
|
|
||||||
|
.2 lda BASEL,y setup line Base Ptr
|
||||||
|
sta ZPBasePtr
|
||||||
|
lda BASEH,y
|
||||||
|
sta ZPBasePtr+1
|
||||||
|
|
||||||
|
iny
|
||||||
|
phy
|
||||||
|
|
||||||
|
ldx LBUF.C1
|
||||||
|
|
||||||
|
.3 ldy COL.BANK,x
|
||||||
|
sta $C000,y
|
||||||
|
txa
|
||||||
|
lsr
|
||||||
|
tay
|
||||||
|
|
||||||
|
lda (ZPBMSavePtr)
|
||||||
|
sta (ZPBasePtr),y
|
||||||
|
inc ZPBMSavePtr
|
||||||
|
bne .4
|
||||||
|
|
||||||
|
inc ZPBMSavePtr+1
|
||||||
|
|
||||||
|
.4 cpx LBUF.C2
|
||||||
|
inx
|
||||||
|
bcc .3
|
||||||
|
|
||||||
|
ply
|
||||||
|
cpy CB.Cache+S.CB.Y2
|
||||||
|
bne .2
|
||||||
|
|
||||||
|
sta CLRREADAUX
|
||||||
|
rts
|
||||||
|
*--------------------------------------
|
||||||
|
BITBLT.0 bit #S.CB.OP.SAVE
|
||||||
|
beq BITBLT.1
|
||||||
|
|
||||||
|
ldy CB.Cache+S.CB.DstPtr
|
||||||
|
lda CB.Cache+S.CB.DstPtr+1
|
||||||
|
bne .1
|
||||||
|
|
||||||
|
tya DstPtr is AUX hMem
|
||||||
|
>SYSCALL2 GetStkObjPtr
|
||||||
|
|
||||||
|
sta SETWRITEAUX
|
||||||
|
|
||||||
|
.1 >STYA ZPBMSavePtr
|
||||||
|
|
||||||
|
ldy CB.Cache+S.CB.Y1
|
||||||
|
|
||||||
|
.2 lda BASEL,y setup line Base Ptr
|
||||||
|
sta ZPBasePtr
|
||||||
|
lda BASEH,y
|
||||||
|
sta ZPBasePtr+1
|
||||||
|
|
||||||
|
iny
|
||||||
|
phy
|
||||||
|
|
||||||
|
ldx LBUF.C1
|
||||||
|
|
||||||
|
.3 ldy COL.BANK,x
|
||||||
|
sta $C000,y
|
||||||
|
txa
|
||||||
|
lsr
|
||||||
|
tay
|
||||||
|
|
||||||
|
lda (ZPBasePtr),y
|
||||||
|
sta (ZPBMSavePtr)
|
||||||
|
inc ZPBMSavePtr
|
||||||
|
bne .4
|
||||||
|
|
||||||
|
inc ZPBMSavePtr+1
|
||||||
|
|
||||||
|
.4 cpx LBUF.C2
|
||||||
|
inx
|
||||||
|
bcc .3
|
||||||
|
|
||||||
|
ply
|
||||||
|
cpy CB.Cache+S.CB.Y2
|
||||||
|
bne .2
|
||||||
|
|
||||||
|
sta CLRWRITEAUX
|
||||||
|
|
||||||
|
lda CB.Cache+S.CB.OP
|
||||||
|
*--------------------------------------
|
||||||
|
BITBLT.1 and #$0F
|
||||||
|
beq .8
|
||||||
|
|
||||||
|
ldy CB.Cache+S.CB.SrcPtr
|
||||||
|
lda CB.Cache+S.CB.SrcPtr+1
|
||||||
|
bne .4
|
||||||
|
|
||||||
sta SETREADAUX SrcPtr is AUX hMem
|
sta SETREADAUX SrcPtr is AUX hMem
|
||||||
|
|
||||||
tya
|
tya
|
||||||
>SYSCALL2 GetMemPtr
|
>SYSCALL2 GetMemPtr
|
||||||
|
|
||||||
.1 >STYA ZPBMDataPtr
|
.4 >STYA ZPBMDataPtr
|
||||||
|
|
||||||
lda CB.Cache+S.CB.OP
|
jsr BITBLT.2
|
||||||
bit #S.CB.OP.SAVE+S.CB.OP.RESTORE
|
|
||||||
beq .3
|
|
||||||
|
|
||||||
ldy CB.Cache+S.CB.DstPtr
|
.8 sta CLRREADAUX
|
||||||
lda CB.Cache+S.CB.DstPtr+1
|
|
||||||
bne .2
|
|
||||||
|
|
||||||
sta SETWRITEAUX DstPtr is AUX hMem
|
|
||||||
tya
|
|
||||||
>SYSCALL2 GetMemPtr
|
|
||||||
|
|
||||||
.2 >STYA ZPBMSavePtr
|
|
||||||
|
|
||||||
.3 jsr BITBLT.1
|
|
||||||
|
|
||||||
sta CLRREADAUX
|
|
||||||
sta CLRWRITEAUX
|
|
||||||
rts
|
rts
|
||||||
|
*--------------------------------------
|
||||||
BITBLT.1 ldy #S.BM-1
|
BITBLT.2 ldy #S.BM-1
|
||||||
|
|
||||||
.1 lda (ZPBMDataPtr),y
|
.1 lda (ZPBMDataPtr),y
|
||||||
sta BM.Cache,y
|
sta BM.Cache,y
|
||||||
@ -51,6 +160,7 @@ BITBLT.1 ldy #S.BM-1
|
|||||||
bpl .1
|
bpl .1
|
||||||
|
|
||||||
ldx #0
|
ldx #0
|
||||||
|
|
||||||
lda BM.Cache+S.BM.F
|
lda BM.Cache+S.BM.F
|
||||||
cmp #S.BM.F.BBP1
|
cmp #S.BM.F.BBP1
|
||||||
beq .11
|
beq .11
|
||||||
@ -117,23 +227,7 @@ BITBLT.1 ldy #S.BM-1
|
|||||||
|
|
||||||
inc BLT.BMMaskPtr+1
|
inc BLT.BMMaskPtr+1
|
||||||
|
|
||||||
.4 >LDYA CB.Cache+S.CB.X1
|
.4 ldx BLT.ScrBitOfs
|
||||||
jsr LBUF.SetBounds1YA
|
|
||||||
stx BLT.ScrBitOfs
|
|
||||||
lda CB.Cache+S.CB.X1
|
|
||||||
clc
|
|
||||||
adc CB.Cache+S.CB.SrcW
|
|
||||||
tay
|
|
||||||
lda CB.Cache+S.CB.X1+1
|
|
||||||
adc CB.Cache+S.CB.SrcW+1
|
|
||||||
pha
|
|
||||||
tya
|
|
||||||
sbc #0
|
|
||||||
tay
|
|
||||||
pla
|
|
||||||
sbc #0
|
|
||||||
jsr LBUF.SetBounds2YA
|
|
||||||
ldx BLT.ScrBitOfs
|
|
||||||
beq BITBLT.LOOP0
|
beq BITBLT.LOOP0
|
||||||
|
|
||||||
ldy Shift.L.LO-1,x X = 1->6
|
ldy Shift.L.LO-1,x X = 1->6
|
||||||
@ -147,6 +241,7 @@ BITBLT.1 ldy #S.BM-1
|
|||||||
sta BITBLT.LOOPx.3+1
|
sta BITBLT.LOOPx.3+1
|
||||||
sta BITBLT.LOOPx.7+1
|
sta BITBLT.LOOPx.7+1
|
||||||
jmp BITBLT.LOOPx
|
jmp BITBLT.LOOPx
|
||||||
|
|
||||||
*------------ Shift 0
|
*------------ Shift 0
|
||||||
|
|
||||||
BITBLT.LOOP0 lda CB.Cache+S.CB.OP
|
BITBLT.LOOP0 lda CB.Cache+S.CB.OP
|
||||||
@ -211,12 +306,14 @@ BITBLT.LOOP0 lda CB.Cache+S.CB.OP
|
|||||||
bcc .5
|
bcc .5
|
||||||
|
|
||||||
inc BLT.BMDataPtr+1
|
inc BLT.BMDataPtr+1
|
||||||
|
|
||||||
.5 jmp BITBLT.LOOP0
|
.5 jmp BITBLT.LOOP0
|
||||||
|
|
||||||
.8 clc
|
.8 clc
|
||||||
rts
|
rts
|
||||||
|
|
||||||
*------------ Shift 1->6 Comment : SCRBitOfs=X=3
|
*------------ Shift 1->6 Comment : SCRBitOfs=X=3
|
||||||
|
|
||||||
BITBLT.LOOPx lda CB.Cache+S.CB.OP X = BLT.ScrBitOfs
|
BITBLT.LOOPx lda CB.Cache+S.CB.OP X = BLT.ScrBitOfs
|
||||||
bit #S.CB.OP.MASK
|
bit #S.CB.OP.MASK
|
||||||
beq BITBLT.LOOPx.4
|
beq BITBLT.LOOPx.4
|
||||||
@ -299,7 +396,9 @@ BITBLT.LOOPx.7 and #$ff SELF MODIFIED : #%01110000 get only col2 bites
|
|||||||
adc BM.Cache+S.BM.RowBytes
|
adc BM.Cache+S.BM.RowBytes
|
||||||
sta BLT.BMDataPtr
|
sta BLT.BMDataPtr
|
||||||
bcc .2
|
bcc .2
|
||||||
|
|
||||||
inc BLT.BMDataPtr+1
|
inc BLT.BMDataPtr+1
|
||||||
|
|
||||||
.2 jmp BITBLT.LOOPx
|
.2 jmp BITBLT.LOOPx
|
||||||
|
|
||||||
.8 clc
|
.8 clc
|
||||||
|
@ -24,7 +24,7 @@ LBUF.SetBounds2YA
|
|||||||
rts
|
rts
|
||||||
|
|
||||||
.1 lda C1.MASK,x
|
.1 lda C1.MASK,x
|
||||||
and C2.MASK,x
|
ora C2.MASK,x
|
||||||
sta LBUF.C1.MASK
|
sta LBUF.C1.MASK
|
||||||
lda C1.DATA,x
|
lda C1.DATA,x
|
||||||
ora C2.DATA,x
|
ora C2.DATA,x
|
||||||
@ -37,58 +37,9 @@ LBUF.DrawAtY lda BASEL,y setup line Base Ptr
|
|||||||
sta ZPBasePtr+1
|
sta ZPBasePtr+1
|
||||||
|
|
||||||
lda CB.Cache+S.CB.OP
|
lda CB.Cache+S.CB.OP
|
||||||
bit #S.CB.OP.RESTORE
|
and #$F
|
||||||
bne .4
|
|
||||||
|
|
||||||
bit #S.CB.OP.SAVE
|
|
||||||
beq .3
|
|
||||||
|
|
||||||
ldx LBUF.C1
|
|
||||||
|
|
||||||
.1 ldy COL.BANK,x
|
|
||||||
sta $C000,y
|
|
||||||
txa
|
|
||||||
lsr
|
|
||||||
tay
|
|
||||||
|
|
||||||
lda (ZPBasePtr),y
|
|
||||||
sta (ZPBMSavePtr)
|
|
||||||
inc ZPBMSavePtr
|
|
||||||
bne .2
|
|
||||||
|
|
||||||
inc ZPBMSavePtr+1
|
|
||||||
|
|
||||||
.2 cpx LBUF.C2
|
|
||||||
inx
|
|
||||||
bcc .1
|
|
||||||
|
|
||||||
lda CB.Cache+S.CB.OP
|
|
||||||
|
|
||||||
.3 and #$F
|
|
||||||
beq .8
|
|
||||||
tax
|
tax
|
||||||
jmp (J.LBUF.DrawAtY,x)
|
jmp (J.LBUF.DrawAtY,x)
|
||||||
|
|
||||||
.4 ldx LBUF.C1
|
|
||||||
|
|
||||||
.5 ldy COL.BANK,x
|
|
||||||
sta $C000,y
|
|
||||||
txa
|
|
||||||
lsr
|
|
||||||
tay
|
|
||||||
|
|
||||||
lda (ZPBMSavePtr)
|
|
||||||
sta (ZPBasePtr),y
|
|
||||||
inc ZPBMSavePtr
|
|
||||||
bne .6
|
|
||||||
|
|
||||||
inc ZPBMSavePtr+1
|
|
||||||
|
|
||||||
.6 cpx LBUF.C2
|
|
||||||
inx
|
|
||||||
bcc .5
|
|
||||||
|
|
||||||
.8 rts
|
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
LBUF.DrawAtY.SET
|
LBUF.DrawAtY.SET
|
||||||
LBUF.DrawAtY.AND.SET
|
LBUF.DrawAtY.AND.SET
|
||||||
|
@ -256,6 +256,9 @@ MENU.Show >SYSCALL2 GetMemPtr
|
|||||||
.5 >LDYA ZPMENUPtr
|
.5 >LDYA ZPMENUPtr
|
||||||
jsr OBJ.SetX2Y2
|
jsr OBJ.SetX2Y2
|
||||||
|
|
||||||
|
jsr MENU.Save
|
||||||
|
bcs MENU.Show.RTS
|
||||||
|
|
||||||
jsr MENU.Show.Borders
|
jsr MENU.Show.Borders
|
||||||
|
|
||||||
ldy #S.MENU.MITEMS
|
ldy #S.MENU.MITEMS
|
||||||
@ -344,6 +347,52 @@ MENU.Show.GetW ldy #S.MITEM.F
|
|||||||
|
|
||||||
.8 rts
|
.8 rts
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
|
MENU.Save jsr CB.ClearCache
|
||||||
|
|
||||||
|
lda #S.CB.CMD.GETRECTBUFSIZE
|
||||||
|
sta CB.Cache+S.CB.CMD
|
||||||
|
|
||||||
|
ldy #S.OBJ.X1
|
||||||
|
ldx #0
|
||||||
|
|
||||||
|
.1 lda (ZPMENUPtr),y
|
||||||
|
sta CB.Cache+S.CB.X1
|
||||||
|
iny
|
||||||
|
inx
|
||||||
|
cpx #8 X1,Y1,X2,Y2
|
||||||
|
bne .1
|
||||||
|
|
||||||
|
jsr GFXWrite.CB
|
||||||
|
>SYSCALL NewStkObj
|
||||||
|
bcs .9
|
||||||
|
|
||||||
|
stx CB.Cache+S.CB.DstPtr
|
||||||
|
|
||||||
|
ldy #S.MENU.hSAVEBUF
|
||||||
|
sta (ZPMENUPtr),y
|
||||||
|
|
||||||
|
lda #S.CB.CMD.BITBLT
|
||||||
|
sta CB.Cache+S.CB.CMD
|
||||||
|
|
||||||
|
lda #S.CB.OP.SAVE
|
||||||
|
sta CB.Cache+S.CB.OP
|
||||||
|
|
||||||
|
ldy #S.OBJ.W
|
||||||
|
ldx #0
|
||||||
|
|
||||||
|
.2 lda (ZPMENUPtr),y
|
||||||
|
sta CB.Cache+S.CB.SrcW
|
||||||
|
iny
|
||||||
|
inx
|
||||||
|
cpx #4 W,H
|
||||||
|
bne .2
|
||||||
|
>DEBUG
|
||||||
|
jsr GFXWrite.CB
|
||||||
|
|
||||||
|
* clc
|
||||||
|
|
||||||
|
.9 rts
|
||||||
|
*--------------------------------------
|
||||||
MENU.Show.Borders
|
MENU.Show.Borders
|
||||||
lda #S.CB.CMD.FILLRECT
|
lda #S.CB.CMD.FILLRECT
|
||||||
jsr PutA2CBBuf
|
jsr PutA2CBBuf
|
||||||
|
Loading…
Reference in New Issue
Block a user