mirror of
https://github.com/A2osX/A2osX.git
synced 2025-01-22 22:30:25 +00:00
Kernel 0.9.1 : GUI API & Driver
This commit is contained in:
parent
8ffd177fb2
commit
0cb5d401f7
Binary file not shown.
Binary file not shown.
@ -17,20 +17,11 @@ AUTO 6
|
||||
* 16 : SrcPtr
|
||||
* 18 : DstPtr
|
||||
*--------------------------------------
|
||||
BITBLT >STYA ZPBase
|
||||
ldy #S.CB.DstPtr+1
|
||||
|
||||
.1 lda (ZPBase),y
|
||||
sta CB.Cache,y
|
||||
dey
|
||||
bpl .1
|
||||
|
||||
|
||||
|
||||
BITBLT
|
||||
clc
|
||||
rts
|
||||
*--------------------------------------
|
||||
MAN
|
||||
SAVE /A2OSX.SRC/DRV/DHGR.DRV.S.BLT
|
||||
SAVE /A2OSX.SRC/DRV/DHGR.DRV.S.RECT
|
||||
LOAD /A2OSX.SRC/DRV/DHGR.DRV.S
|
||||
ASM
|
||||
|
@ -7,95 +7,59 @@ AUTO 6
|
||||
*--------------------------------------
|
||||
* HLINE X1,X2 at Y1
|
||||
*--------------------------------------
|
||||
HLINE >STYA ZPBase
|
||||
ldy #S.CB.X2+1
|
||||
HLINE lda CB.Cache+S.CB.MODE
|
||||
|
||||
.1 lda (ZPBase),y
|
||||
sta CB.Cache,y
|
||||
dey
|
||||
bpl .1
|
||||
cmp #S.CB.MODE.MONO
|
||||
bne HLINE.C16
|
||||
|
||||
HLINE.MONO >LDYA CB.Cache+S.CB.X1
|
||||
jsr LBUF.SetBounds1YA
|
||||
|
||||
HLINE.I lda CB.Cache+S.CB.MODE
|
||||
>LDYA CB.Cache+S.CB.X2
|
||||
jsr LBUF.SetBounds2YA
|
||||
|
||||
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.COLOR
|
||||
beq .1
|
||||
|
||||
lda CB.Cache+S.CB.X2+1
|
||||
sbc CB.Cache+S.CB.X1+1
|
||||
sta ZPCount+1
|
||||
tax
|
||||
jsr DIVMOD7YX
|
||||
lda #%01111111
|
||||
|
||||
ldy CB.Cache+S.CB.X1
|
||||
ldx CB.Cache+S.CB.X1+1
|
||||
|
||||
jsr DIVMOD7YX A=X1 DIV 7, X=MOD 7
|
||||
.1 ldy LBUF.C1
|
||||
|
||||
|
||||
pha save X DIV 7
|
||||
lsr
|
||||
.2 pha
|
||||
and LBUF.AND,y
|
||||
sta LBUF.ORA,y
|
||||
pla
|
||||
iny
|
||||
cpy LBUF.C2
|
||||
bcs .2
|
||||
|
||||
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
|
||||
jmp LBUF.DrawAtY
|
||||
|
||||
HLINE.C16 lda CB.Cache+S.CB.X1
|
||||
and #%11111100
|
||||
tay
|
||||
sta $c000,y
|
||||
lda CB.Cache+S.CB.X1+1
|
||||
|
||||
jsr LBUF.SetBounds1YA
|
||||
|
||||
lda CB.Cache+S.CB.X2
|
||||
and #%11111100
|
||||
tay
|
||||
lda CB.Cache+S.CB.X2+1
|
||||
|
||||
jsr LBUF.SetBounds2YA
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
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
|
||||
VLINE lda CB.Cache+S.CB.OP
|
||||
beq VLINE.OP0
|
||||
|
||||
VLINE.XOR jsr VLINE.DIVMOD7
|
||||
@ -122,7 +86,6 @@ VLINE.XOR jsr VLINE.DIVMOD7
|
||||
bcc .1
|
||||
beq .1
|
||||
|
||||
sta CLR80STORE
|
||||
rts
|
||||
|
||||
VLINE.OP0 lda CB.Cache+S.CB.MODE
|
||||
@ -159,7 +122,6 @@ VLINE.MONO jsr VLINE.DIVMOD7
|
||||
bcc .2
|
||||
beq .2
|
||||
|
||||
sta CLR80STORE
|
||||
rts
|
||||
|
||||
VLINE.C16 lda CB.Cache+S.CB.X1
|
||||
@ -248,8 +210,7 @@ VLINE.C16 lda CB.Cache+S.CB.X1
|
||||
ora GBYTE
|
||||
sta (ZPBase)
|
||||
|
||||
.13 sta CLR80STORE
|
||||
rts
|
||||
.13 rts
|
||||
*--------------------------------------
|
||||
VLINE.DIVMOD7 ldx CB.Cache+S.CB.X1+1 Get X HI byte....
|
||||
|
||||
@ -283,6 +244,6 @@ VLINE.DIVMOD7 ldx CB.Cache+S.CB.X1+1 Get X HI byte....
|
||||
|
||||
*--------------------------------------
|
||||
MAN
|
||||
SAVE /A2OSX.SRC/DRV/DHGR.DRV.S.LIN
|
||||
SAVE /A2OSX.SRC/DRV/DHGR.DRV.S.LINE
|
||||
LOAD /A2OSX.SRC/DRV/DHGR.DRV.S
|
||||
ASM
|
@ -13,16 +13,7 @@ AUTO 6
|
||||
* 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
|
||||
SETPIXEL lda CB.Cache+S.CB.MODE
|
||||
bit #S.CB.MODE.C16
|
||||
bne SETPIXEL.C16
|
||||
|
||||
@ -66,7 +57,6 @@ SETPIXEL.MONO ldx CB.Cache+S.CB.X1+1 Get X Hi byte....
|
||||
eor Mono.Masks,y y = mod 7
|
||||
sta (ZPBase)
|
||||
|
||||
sta CLR80STORE
|
||||
rts
|
||||
|
||||
.5 lda (ZPBase)
|
||||
@ -75,13 +65,11 @@ SETPIXEL.MONO ldx CB.Cache+S.CB.X1+1 Get X Hi byte....
|
||||
|
||||
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
|
||||
@ -170,8 +158,7 @@ SETPIXEL.C16 lda CB.Cache+S.CB.X1
|
||||
ora GBYTE
|
||||
sta (ZPBase)
|
||||
|
||||
.13 sta CLR80STORE
|
||||
rts
|
||||
.13 rts
|
||||
*--------------------------------------
|
||||
* GETPIXEL
|
||||
*--------------------------------------
|
||||
|
30
DRV/DHGR.DRV.S.RECT.txt
Normal file
30
DRV/DHGR.DRV.S.RECT.txt
Normal file
@ -0,0 +1,30 @@
|
||||
PR#3
|
||||
PREFIX /A2OSX.BUILD
|
||||
LOMEM $A00
|
||||
INC 1
|
||||
AUTO 6
|
||||
.LIST OFF
|
||||
*--------------------------------------
|
||||
* FILLRECT
|
||||
* 2 : Mode
|
||||
* 3 : Color
|
||||
* 4 : SrcX1
|
||||
* 6 : SrcY1
|
||||
* 8 : SrcX2
|
||||
* 10 : SrcY2
|
||||
*--------------------------------------
|
||||
FILLRECT
|
||||
.2 jsr HLINE
|
||||
|
||||
lda CB.Cache+S.CB.Y1
|
||||
cmp CB.Cache+S.CB.Y2
|
||||
beq .8
|
||||
|
||||
inc CB.Cache+S.CB.Y1
|
||||
bra .2
|
||||
.8 rts
|
||||
*--------------------------------------
|
||||
MAN
|
||||
SAVE /A2OSX.SRC/DRV/DHGR.DRV.S.BLT
|
||||
LOAD /A2OSX.SRC/DRV/DHGR.DRV.S
|
||||
ASM
|
@ -11,12 +11,14 @@ AUTO 6
|
||||
.INB /A2OSX.BUILD/INC/MACROS.I
|
||||
.INB /A2OSX.BUILD/INC/A2OSX.I
|
||||
.INB /A2OSX.BUILD/INC/IO.I
|
||||
.INB /A2OSX.BUILD/INC/LIBGFX.I
|
||||
.INB /A2OSX.BUILD/INC/LIBGUI.I
|
||||
*--------------------------------------
|
||||
ZPBase .EQ ZPDRV
|
||||
ZPCount .EQ ZPDRV+2
|
||||
ZPCountCol .EQ ZPDRV+4
|
||||
ZPCountMod .EQ ZPDRV+5
|
||||
ZPCmdPtr .EQ ZPDRV
|
||||
ZPBase .EQ ZPDRV+2
|
||||
|
||||
|
||||
ZPCount .EQ ZPDRV+4
|
||||
|
||||
|
||||
*--------------------------------------
|
||||
* File Header (16 Bytes)
|
||||
@ -39,90 +41,9 @@ L.MSG.DETECT .DA MSG.DETECT
|
||||
Dev.Detect >LDYA L.MSG.DETECT
|
||||
>SYSCALL PrintF.YA
|
||||
|
||||
ldx #0
|
||||
.1 txa
|
||||
stz Shift0.hi,x
|
||||
asl
|
||||
rol Shift0.hi,x
|
||||
lsr
|
||||
sta Shift0.lo,x
|
||||
inx
|
||||
bpl .1
|
||||
|
||||
ldx #0
|
||||
.2 lda Shift0.hi,x
|
||||
sta Shift1.hi,x
|
||||
lda Shift0.lo,x
|
||||
asl
|
||||
asl
|
||||
rol Shift1.hi,x
|
||||
lsr
|
||||
sta Shift1.lo,x
|
||||
inx
|
||||
bpl .2
|
||||
|
||||
ldx #0
|
||||
.3 lda Shift1.hi,x
|
||||
sta Shift2.hi,x
|
||||
lda Shift1.lo,x
|
||||
asl
|
||||
asl
|
||||
rol Shift2.hi,x
|
||||
lsr
|
||||
sta Shift2.lo,x
|
||||
inx
|
||||
bpl .3
|
||||
|
||||
ldx #0
|
||||
.4 lda Shift2.hi,x
|
||||
sta Shift3.hi,x
|
||||
lda Shift2.lo,x
|
||||
asl
|
||||
asl
|
||||
rol Shift3.hi,x
|
||||
lsr
|
||||
sta Shift3.lo,x
|
||||
inx
|
||||
bpl .4
|
||||
|
||||
ldx #0
|
||||
.5 lda Shift3.hi,x
|
||||
sta Shift4.hi,x
|
||||
lda Shift3.lo,x
|
||||
asl
|
||||
asl
|
||||
rol Shift4.hi,x
|
||||
lsr
|
||||
sta Shift4.lo,x
|
||||
inx
|
||||
bpl .5
|
||||
|
||||
ldx #0
|
||||
.6 lda Shift4.hi,x
|
||||
sta Shift5.hi,x
|
||||
lda Shift4.lo,x
|
||||
asl
|
||||
asl
|
||||
rol Shift5.hi,x
|
||||
lsr
|
||||
sta Shift5.lo,x
|
||||
inx
|
||||
bpl .6
|
||||
|
||||
ldx #0
|
||||
.7 lda Shift5.hi,x
|
||||
sta Shift6.hi,x
|
||||
lda Shift5.lo,x
|
||||
asl
|
||||
asl
|
||||
rol Shift6.hi,x
|
||||
lsr
|
||||
sta Shift6.lo,x
|
||||
inx
|
||||
bpl .7
|
||||
|
||||
clc
|
||||
rts
|
||||
*--------------------------------------
|
||||
CS.END
|
||||
MSG.DETECT >CSTR "Apple IIe/IIc DHGR Driver.\r\n"
|
||||
*--------------------------------------
|
||||
@ -132,7 +53,7 @@ DEV.HEADER cld
|
||||
jmp (DRV.CS.START,x)
|
||||
.DA #0
|
||||
.BS 6
|
||||
DEV.HEADER.NAME >PSTR "GFX"
|
||||
DEV.HEADER.NAME >CSTR "GFX"
|
||||
.BS 1
|
||||
*--------------------------------------
|
||||
* Driver Code
|
||||
@ -146,31 +67,26 @@ DRV.CS.START .DA STATUS
|
||||
.DA OPEN
|
||||
.DA CLOSE
|
||||
.DA A2osX.BADCALL
|
||||
.DA A2osX.BADCALL
|
||||
.DA WRITE
|
||||
.DA A2osX.BADCALL
|
||||
*--------------------------------------
|
||||
.DA SETPIXEL
|
||||
J.Cmds .DA SETPIXEL
|
||||
.DA GETPIXEL
|
||||
.DA HLINE
|
||||
.DA VLINE
|
||||
.DA FILLRECT
|
||||
.DA BITBLT
|
||||
*--------------------------------------
|
||||
L.STAT .DA STAT
|
||||
L.DSTAT .DA DSTAT
|
||||
L.DIV7.0 .DA DIV7.0
|
||||
.DA DIV7.256
|
||||
.DA DIV7.512
|
||||
L.MOD7.0 .DA MOD7.0
|
||||
.DA MOD7.256
|
||||
.DA MOD7.512
|
||||
L.Shift0.Lo .DA Shift0.lo
|
||||
L.Shift0.Hi .DA Shift0.hi
|
||||
L.DIVMOD7Y0 .DA DIVMOD7Y0
|
||||
.DA DIVMOD7Y1
|
||||
.DA DIVMOD7Y2
|
||||
.DA 0 end or relocation
|
||||
*--------------------------------------
|
||||
STATUS >LDYA L.STAT
|
||||
STATUS >LDYA L.DSTAT
|
||||
clc
|
||||
rts
|
||||
*--------------------------------------
|
||||
@ -196,20 +112,6 @@ OPEN sta A2osX.SCRNDEVS+2 DEV.ID in A
|
||||
cpx #3
|
||||
bne .1
|
||||
|
||||
ldx #7
|
||||
lda L.Shift0.Lo+1
|
||||
.10 sta Shiftlo.hi,x
|
||||
inc
|
||||
dex
|
||||
bne .10
|
||||
|
||||
ldx #7
|
||||
lda L.Shift0.hi+1
|
||||
.11 sta Shifthi.hi,x
|
||||
inc
|
||||
dex
|
||||
bne .11
|
||||
|
||||
.8 clc
|
||||
rts
|
||||
*--------------------------------------
|
||||
@ -238,44 +140,109 @@ CONTROL sta CLRTEXT
|
||||
CLOSE clc
|
||||
rts
|
||||
*--------------------------------------
|
||||
.INB /A2OSX.SRC/DRV/DHGR.DRV.S.PIX
|
||||
.INB /A2OSX.SRC/DRV/DHGR.DRV.S.LIN
|
||||
.INB /A2OSX.SRC/DRV/DHGR.DRV.S.BLT
|
||||
*--------------------------------------
|
||||
* FILLRECT
|
||||
* 2 : Mode
|
||||
* 3 : Color
|
||||
* 4 : SrcX1
|
||||
* 6 : SrcY1
|
||||
* 8 : SrcX2
|
||||
* 10 : SrcY2
|
||||
*--------------------------------------
|
||||
FILLRECT >STYA ZPBase
|
||||
ldy #S.CB.Y2
|
||||
WRITE >STYA ZPCmdPtr
|
||||
|
||||
.1 lda (ZPBase),y
|
||||
sta SET80STORE
|
||||
|
||||
lda (ZPCmdPtr)
|
||||
|
||||
.1 tax
|
||||
ldy CB.CmdLen,x
|
||||
|
||||
.2 lda (ZPBase),y
|
||||
sta CB.Cache,y
|
||||
dey
|
||||
bpl .1
|
||||
|
||||
.2 jsr HLINE.I
|
||||
|
||||
lda CB.Cache+S.CB.Y1
|
||||
cmp CB.Cache+S.CB.Y2
|
||||
beq .8
|
||||
bpl .2
|
||||
|
||||
inc CB.Cache+S.CB.Y1
|
||||
bra .2
|
||||
lda CB.CmdLen,x
|
||||
clc
|
||||
adc ZPCmdPtr
|
||||
sta ZPCmdPtr
|
||||
bcc .3
|
||||
inc ZPCmdPtr+1
|
||||
|
||||
.3 jsr .10
|
||||
|
||||
lda (ZPCmdPtr)
|
||||
bne .1
|
||||
|
||||
sta CLR80STORE
|
||||
|
||||
.8 clc
|
||||
rts
|
||||
|
||||
.10 jmp (J.Cmds,x)
|
||||
*--------------------------------------
|
||||
.INB /A2OSX.SRC/DRV/DHGR.DRV.S.PIX
|
||||
.INB /A2OSX.SRC/DRV/DHGR.DRV.S.LINE
|
||||
.INB /A2OSX.SRC/DRV/DHGR.DRV.S.RECT
|
||||
.INB /A2OSX.SRC/DRV/DHGR.DRV.S.BLT
|
||||
*--------------------------------------
|
||||
LBUF.SetBounds1YA
|
||||
jsr DIVMOD7YA A=DIV, X=MOD
|
||||
sta LBUF.C1
|
||||
tay
|
||||
lda Mono.Head,x
|
||||
sta LBUF.AND,y
|
||||
rts
|
||||
*--------------------------------------
|
||||
LBUF.SetBounds2YA
|
||||
jsr DIVMOD7YA
|
||||
|
||||
cmp LBUF.C1 A=DIV, X=MOD
|
||||
beq .2
|
||||
|
||||
sta LBUF.C2
|
||||
tay
|
||||
lda Mono.Tail,x
|
||||
sta LBUF.AND,y
|
||||
|
||||
lda #0
|
||||
|
||||
.1 dey
|
||||
cpy LBUF.C1
|
||||
beq .8
|
||||
sta LBUF.AND,y
|
||||
bra .1
|
||||
|
||||
.2 and LBUF.C1
|
||||
sta LBUF.C2
|
||||
tay
|
||||
lda Mono.Tail,x
|
||||
sta LBUF.AND,y
|
||||
.8 rts
|
||||
*--------------------------------------
|
||||
LBUF.DrawAtY lda BASEL,y setup line Base Ptr
|
||||
sta ZPBase
|
||||
lda BASEH,y
|
||||
sta ZPBase+1
|
||||
|
||||
ldy LBUF.C1 y C1->C2
|
||||
|
||||
.1 ldx COL.BANK,y
|
||||
sta $C000,x
|
||||
|
||||
lda (ZPBase),y
|
||||
and LBUF.AND,y
|
||||
ora LBUF.ORA,y
|
||||
sta (ZPBase),y
|
||||
|
||||
iny
|
||||
cpy LBUF.C2
|
||||
bcs .1
|
||||
|
||||
rts
|
||||
*--------------------------------------
|
||||
* IN:
|
||||
* Y = LO
|
||||
* X = HI
|
||||
* A = HI
|
||||
* OUT:
|
||||
* A = DIV
|
||||
* X = MOD
|
||||
*--------------------------------------
|
||||
DIVMOD7YX jmp (L.DIVMOD7Y0,x)
|
||||
DIVMOD7YA dec
|
||||
bne DIVMOD7Y2
|
||||
beq DIVMOD7Y1
|
||||
|
||||
DIVMOD7Y0 lda DIV7.0,y
|
||||
ldx MOD7.0,y
|
||||
@ -294,39 +261,34 @@ DIVMOD7Y2 lda DIV7.512,y
|
||||
rts
|
||||
*--------------------------------------
|
||||
DRV.CS.END
|
||||
*--------------------------------------
|
||||
Shift0.lo .BS 128
|
||||
Shift0.hi .BS 128
|
||||
Shift1.lo .BS 128
|
||||
Shift1.hi .BS 128
|
||||
Shift2.lo .BS 128
|
||||
Shift2.hi .BS 128
|
||||
Shift3.lo .BS 128
|
||||
Shift3.hi .BS 128
|
||||
Shift4.lo .BS 128
|
||||
Shift4.hi .BS 128
|
||||
Shift5.lo .BS 128
|
||||
Shift5.hi .BS 128
|
||||
Shift6.lo .BS 128
|
||||
Shift6.hi .BS 128
|
||||
*--------------------------------------
|
||||
.INB /A2OSX.SRC/DRV/DHGR.DRV.T
|
||||
*--------------------------------------
|
||||
CB.CmdLen .DA S.CB.Y1+1 SETPIXEL
|
||||
.DA S.CB.Y1+1 GETPIXEL
|
||||
.DA S.CB.X2+1 HLINE
|
||||
.DA S.CB.X2+1 VLINE
|
||||
.DA S.CB.Y2+1 FILLRECT
|
||||
.DA S.CB.DstPtr+1 BITBLT
|
||||
*--------------------------------------
|
||||
CB.Cache .BS S.CB
|
||||
*--------------------------------------
|
||||
DIV7.lo .BS 3
|
||||
DIV7.hi .BS 3
|
||||
MOD7.lo .BS 3
|
||||
MOD7.hi .BS 3
|
||||
Shiftlo.hi .BS 7
|
||||
Shifthi.hi .BS 7
|
||||
*--------------------------------------
|
||||
CB.Cache .BS S.CB
|
||||
LBUF.C1 .BS 1
|
||||
LBUF.C2 .BS 1
|
||||
LBUF.ORA .BS 80
|
||||
LBUF.AND .BS 80
|
||||
*--------------------------------------
|
||||
XDIV7 .BS 1
|
||||
XMOD7 .BS 1
|
||||
XCOL7 .BS 1
|
||||
GBYTE .BS 1
|
||||
*--------------------------------------
|
||||
STAT .DA #0
|
||||
DSTAT .DA #0
|
||||
.DA #0,#0,#0
|
||||
>PSTR "Apple II DHGR"
|
||||
.BS 3
|
||||
@ -338,9 +300,6 @@ DEVSTAT.MODES .DA #S.CB.MODE.MONO+S.CB.MODE.C16
|
||||
DEVSTAT.W .DA 560 X.SIZE
|
||||
DEVSTAT.H .DA 192 Y.SIZE
|
||||
*--------------------------------------
|
||||
DRV.SIZE .EQ *-DRV.CS.START
|
||||
*--------------------------------------
|
||||
.LIST OFF
|
||||
MAN
|
||||
SAVE /A2OSX.SRC/DRV/DHGR.DRV.S
|
||||
ASM
|
||||
|
@ -21,21 +21,21 @@ Mono.Masks .DA #%00000001
|
||||
.DA #%00100000
|
||||
.DA #%01000000
|
||||
*--------------------------------------
|
||||
Mono.Head .DA #%01111111
|
||||
.DA #%01111110
|
||||
.DA #%01111100
|
||||
.DA #%01111000
|
||||
.DA #%01110000
|
||||
.DA #%01100000
|
||||
.DA #%01000000
|
||||
Mono.Head .DA #%10000000
|
||||
.DA #%10000001
|
||||
.DA #%10000011
|
||||
.DA #%10000111
|
||||
.DA #%10001111
|
||||
.DA #%10011111
|
||||
.DA #%10111111
|
||||
*--------------------------------------
|
||||
Mono.Tail .DA #%00000001
|
||||
.DA #%00000011
|
||||
.DA #%00000111
|
||||
.DA #%00001111
|
||||
.DA #%00011111
|
||||
.DA #%00111111
|
||||
.DA #%01111111
|
||||
Mono.Tail .DA #%11111110
|
||||
.DA #%11111100
|
||||
.DA #%11111000
|
||||
.DA #%11110000
|
||||
.DA #%11100000
|
||||
.DA #%11000000
|
||||
.DA #%10000000
|
||||
*--------------------------------------
|
||||
* bits to "and" to reset color of pixel (0 means nothing to do)
|
||||
* 4 bytes * 7 mods
|
||||
|
@ -313,15 +313,6 @@ DEVMGR.READ .EQ 16
|
||||
DEVMGR.WRITE .EQ 18
|
||||
DEVMGR.IRQ .EQ 20
|
||||
*--------------------------------------
|
||||
* 'GFX' Class Driver Functions
|
||||
*--------------------------------------
|
||||
DEVMGR.GFX.SETPIXEL .EQ 22
|
||||
DEVMGR.GFX.GETPIXEL .EQ 24
|
||||
DEVMGR.GFX.HLINE .EQ 26
|
||||
DEVMGR.GFX.VLINE .EQ 28
|
||||
DEVMGR.GFX.FILLRECT .EQ 30
|
||||
DEVMGR.GFX.BITBLT .EQ 32
|
||||
*--------------------------------------
|
||||
S.DSTAT.S .EQ 0
|
||||
S.DSTAT.S.BLOCK .EQ %10000000
|
||||
S.DSTAT.S.WRITE .EQ %01000000
|
||||
|
@ -67,4 +67,4 @@ LIBGFX.ShowCursor .EQ 14
|
||||
LIBGFX.DrawLine .EQ 16
|
||||
*--------------------------------------
|
||||
MAN
|
||||
SAVE /A2OSX.BUILD/INC/LIBGFX.I
|
||||
SAVE /A2OSX.BUILD/INC/LIBGUI.I
|
@ -434,5 +434,5 @@ PAT.Arrow .DA #S.BM.F.BBP1
|
||||
.DA 0
|
||||
*--------------------------------------
|
||||
MAN
|
||||
SAVE /A2OSX.SRC/LIB/LIBGFX.S
|
||||
SAVE /A2OSX.SRC/LIB/LIBGUI.S
|
||||
ASM
|
@ -6,12 +6,12 @@ AUTO 6
|
||||
.LIST OFF
|
||||
.OP 65C02
|
||||
.OR $2000
|
||||
.TF /A2OSX.BUILD/SBIN/DESKTOP
|
||||
.TF /A2OSX.BUILD/SBIN/GUI
|
||||
*--------------------------------------
|
||||
.INB /A2OSX.BUILD/INC/IO.I
|
||||
.INB /A2OSX.BUILD/INC/MACROS.I
|
||||
.INB /A2OSX.BUILD/INC/A2OSX.I
|
||||
.INB /A2OSX.BUILD/INC/LIBGFX.I
|
||||
.INB /A2OSX.BUILD/INC/LIBGUI.I
|
||||
*--------------------------------------
|
||||
ZPPtr1 .EQ ZPBIN
|
||||
*--------------------------------------
|
||||
@ -249,7 +249,7 @@ GoDevMouse jmp $ffff
|
||||
CS.END
|
||||
DEVNAME.GFX >PSTR "GFX"
|
||||
DEVNAME.MOUSE >PSTR "MOU1"
|
||||
LIBGFX >PSTR "libgfx.o"
|
||||
LIBGFX >PSTR "libgui.o"
|
||||
MSG.INIT >CSTR "DESKTOP:Init...\r\n"
|
||||
hLibGFX .BS 1
|
||||
hDevGFX .BS 1
|
||||
@ -318,5 +318,5 @@ DrawLine6.CB .BS 1 hDC
|
||||
.DA 84
|
||||
.DA 191
|
||||
MAN
|
||||
SAVE /A2OSX.SRC/SBIN/DESKTOP.S
|
||||
SAVE /A2OSX.SRC/SBIN/GUI.S
|
||||
ASM
|
@ -85,8 +85,8 @@ CSH.TSIZE .HS 0001020401020405 00,CHAR,INT,LONG,UCHAR,UINT,ULONG,FLOAT....
|
||||
* int printf ( const char * format, ... );
|
||||
CSH.FN >PSTR "printf"
|
||||
.DA #CSH.T.INT returned value
|
||||
.DA #CSH.Q.CONST+CSH.T.CHAR
|
||||
.DA #CSH.Q.POINTER
|
||||
.DA #CSH.Q.CONST+CSH.Q.POINTER1
|
||||
.DA #CSH.T.CHAR
|
||||
.DA #CSH.T.VARIADIC
|
||||
.DA #0
|
||||
* float cos ( float x );
|
||||
|
@ -13,10 +13,11 @@ CSH.E.DUP .EQ $7B
|
||||
CSH.E.UNDEF .EQ $7A
|
||||
CSH.E.TMISMATCH .EQ $79
|
||||
|
||||
CSH.Q.POINTER .EQ %10000000
|
||||
CSH.Q.CONST .EQ %01000000
|
||||
CSH.Q.ARRAY .EQ %11000000
|
||||
|
||||
CSH.Q.CONST .EQ %11000000
|
||||
CSH.Q.ARRAY .EQ %10001100 max 3 bounds
|
||||
CSH.Q.POINTER1 .EQ %10000001 max 3 depth
|
||||
CSH.Q.POINTER2 .EQ %10000010
|
||||
CSH.Q.POINTER3 .EQ %10000011
|
||||
CSH.T.CHAR .EQ 1
|
||||
CSH.T.INT .EQ 2
|
||||
CSH.T.LONG .EQ 3
|
||||
@ -224,7 +225,7 @@ CSH.IF jsr CSH.GetCharNB
|
||||
jsr CSH.GetNextCharNB Skip '{'
|
||||
bcs .99
|
||||
|
||||
>LDA.G CSH.CmdSave Push "IF" or "WHILE"
|
||||
>LDA.G CSH.CmdSave get back Token ("IF" or "WHILE")
|
||||
tax
|
||||
jsr CSH.Keyword.start
|
||||
bcs .99
|
||||
@ -263,7 +264,7 @@ CSH.IF jsr CSH.GetCharNB
|
||||
CSH.Keyword.Start
|
||||
jmp (J.CSH.KW.START,x)
|
||||
*--------------------------------------
|
||||
CSH.IF.START jmp CSH.Push
|
||||
CSH.IF.START jmp CSH.Push Push "IF" Token
|
||||
*--------------------------------------
|
||||
CSH.WHILE.START pha
|
||||
>LDA.G CSH.BufPtrSave+1 WHILE : push loop address...
|
||||
@ -271,7 +272,7 @@ CSH.WHILE.START pha
|
||||
>LDA.G CSH.BufPtrSave
|
||||
jsr CSH.Push
|
||||
pla
|
||||
jmp CSH.Push
|
||||
jmp CSH.Push Push "WHILE" Token
|
||||
*--------------------------------------
|
||||
CSH.IF.END jsr CSH.GetNextChar just skip ending '}'
|
||||
clc
|
||||
@ -339,7 +340,6 @@ CSH.CHAR lda #CSH.T.CHAR
|
||||
CSH.UCHAR lda #CSH.T.CHAR
|
||||
bra CSH.TYPE
|
||||
CSH.INT lda #CSH.T.INT
|
||||
>DEBUG
|
||||
bra CSH.TYPE
|
||||
CSH.UINT lda #CSH.T.INT
|
||||
bra CSH.TYPE
|
||||
@ -403,6 +403,75 @@ CSH.TYPE >STA.G CSH.ACCT
|
||||
sec
|
||||
.99 rts
|
||||
*--------------------------------------
|
||||
CSH.FnEval jsr CSH.GetCharNB
|
||||
|
||||
bcs .9
|
||||
cmp #'('
|
||||
bne .9
|
||||
|
||||
lda (ZPPtr1) Get Return value Type
|
||||
>CMP.G CSH.ACCT Match with ACC ?
|
||||
bne .99
|
||||
|
||||
jsr CSH.PushACCT Save Acc & T on stack
|
||||
|
||||
|
||||
.1 inc ZPPtr1 advance to arg list type
|
||||
bne .2
|
||||
inc ZPPtr1+1
|
||||
|
||||
.2 lda (ZPPtr1)
|
||||
beq .7 end of list, go check no more
|
||||
|
||||
jsr CSH.ExpEval
|
||||
bcs .90
|
||||
|
||||
lda (ZPPtr1)
|
||||
cmp #CSH.T.VARIADIC
|
||||
beq .3
|
||||
|
||||
>CMP.G CSH.ACCT Match with ACC ?
|
||||
bne .99
|
||||
|
||||
.3
|
||||
|
||||
|
||||
lda (ZPPtr1)
|
||||
cmp #CSH.T.VARIADIC
|
||||
bne .5
|
||||
|
||||
.4 jsr CSH.GetNextCharNB
|
||||
cmp #','
|
||||
bne .7
|
||||
jsr CSH.GetNextCharNB
|
||||
bra .2
|
||||
|
||||
.5 inc ZPPtr1 advance to next arg
|
||||
beq .7
|
||||
inc ZPPtr1+1
|
||||
lda (ZPPtr1)
|
||||
bne .4
|
||||
|
||||
.7 jsr CSH.GetNextCharNB
|
||||
bcs .9
|
||||
cmp #')'
|
||||
bne .9
|
||||
|
||||
* TO DO : Execute
|
||||
|
||||
jsr CSH.GetNextCharNB Skip )
|
||||
|
||||
clc
|
||||
rts
|
||||
|
||||
.9 lda #CSH.E.SYNTAX
|
||||
sec
|
||||
.90 rts
|
||||
|
||||
.99 lda #CSH.E.TMISMATCH
|
||||
sec
|
||||
rts
|
||||
*--------------------------------------
|
||||
CSH.ExpEval jsr CSH.ZeroACC
|
||||
dec A=0
|
||||
>STA.G CSH.EXPBOP1
|
||||
@ -488,36 +557,6 @@ CSH.ExpEval jsr CSH.ZeroACC
|
||||
.80 clc
|
||||
rts
|
||||
*--------------------------------------
|
||||
CSH.FnEval jsr CSH.GetCharNB
|
||||
|
||||
bcs .9
|
||||
cmp #'('
|
||||
bne .9
|
||||
|
||||
lda (ZPPtr1)
|
||||
>CMP.G CSH.ACCT
|
||||
bne .99
|
||||
|
||||
|
||||
* TODO : eval params
|
||||
|
||||
|
||||
.7 jsr CSH.GetNextCharNB
|
||||
bcs .9
|
||||
cmp #')'
|
||||
bne .9
|
||||
|
||||
clc
|
||||
rts
|
||||
|
||||
.9 lda #CSH.E.SYNTAX
|
||||
sec
|
||||
rts
|
||||
|
||||
.99 lda #CSH.E.TMISMATCH
|
||||
sec
|
||||
rts
|
||||
*--------------------------------------
|
||||
CSH.SavePtr >LDYA ZPCSHBufPtr
|
||||
>STYA.G CSH.BufPtrSave
|
||||
rts
|
||||
@ -897,7 +936,25 @@ CSH.BOPS.SUB >LDA.G CSH.ACCT
|
||||
|
||||
rts
|
||||
CSH.BOPS.MUL
|
||||
CSH.BOPS.DIV
|
||||
clc
|
||||
rts
|
||||
|
||||
CSH.BOPS.DIV >LDA.G CSH.ACCT
|
||||
cmp #CSH.T.FLOAT
|
||||
beq .8
|
||||
|
||||
|
||||
|
||||
|
||||
clc
|
||||
rts
|
||||
|
||||
.8 >PUSHEA.G CSH.ACC
|
||||
>PUSHEA.G CSH.ARG
|
||||
>LEA.G CSH.ACC
|
||||
>SYSCALL FDIV
|
||||
|
||||
rts
|
||||
CSH.BOPS.MOD
|
||||
CSH.BOPS.SHL
|
||||
CSH.BOPS.SHR
|
||||
@ -919,6 +976,9 @@ CSH.BOPS.LOR
|
||||
*--------------------------------------
|
||||
* Stack
|
||||
*--------------------------------------
|
||||
CSH.PushACCT
|
||||
|
||||
|
||||
CSH.Push pha
|
||||
>LDA.G CSH.StackPtr
|
||||
inc
|
||||
|
@ -35,7 +35,7 @@ CS.START cld
|
||||
.DA CS.END-CS.START CS
|
||||
.DA DS.END-DS.START DS
|
||||
.DA #64 SS
|
||||
.DA #16 ZP
|
||||
.DA #0 ZP (256)
|
||||
.DA 0
|
||||
*--------------------------------------
|
||||
* Relocation Table
|
||||
@ -94,6 +94,7 @@ J.CSH.BOPS .DA CSH.BOPS.ADD
|
||||
.DA CSH.BOPS.LOR
|
||||
L.CSH.FN .DA CSH.FN
|
||||
L.CSH.KW .DA CSH.KW
|
||||
L.CSH.STYPES .DA CSH.STYPES
|
||||
J.CSH.KW .DA CSH.IF
|
||||
.DA CSH.WHILE
|
||||
.DA CSH.ELSE
|
||||
@ -106,7 +107,6 @@ J.CSH.KW .DA CSH.IF
|
||||
.DA CSH.FLOAT
|
||||
.DA CSH.SIGNED
|
||||
.DA CSH.UNSIGNED
|
||||
L.CSH.STYPES .DA CSH.STYPES
|
||||
J.CSH.STYPES .DA CSH.CHAR
|
||||
.DA CSH.INT
|
||||
.DA CSH.LONG
|
||||
|
Loading…
x
Reference in New Issue
Block a user