Kernel 0.9.1 : KERNEL, Preemtive mode, Code cleaning....step by step....#5

GUI,DHGR cleaning /shrinking...
This commit is contained in:
Rémy GIBERT 2018-05-04 16:55:29 +02:00
parent cc307e8bc3
commit 7550b8bdfb
28 changed files with 482 additions and 277 deletions

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

BIN
.Fonts/SYSx7B.fnt Normal file

Binary file not shown.

View File

@ -16,6 +16,8 @@ ESCSEQ.MAXLEN .EQ 16
*--------------------------------------
ZPBaseL1 .EQ ZPDRV
ZPBaseL2 .EQ ZPDRV+2
ZPTmpWord .EQ ZPDRV+4
ZPTmpBool .EQ ZPDRV+6
*--------------------------------------
* File Header (16 Bytes)
*--------------------------------------
@ -280,8 +282,8 @@ COUT.ExecEscSeq stz EscSeqParamCnt
ldx #0 EscSeq Ptr
.10 stz EscSeqParamTmp
stz EscSeqParamTmp+1
.10 stz ZPTmpWord
stz ZPTmpWord+1
.1 inx
lda EscSeq,x
@ -294,27 +296,27 @@ COUT.ExecEscSeq stz EscSeqParamCnt
dec bEscSeqInNum
and #$0F
pha
lda EscSeqParamTmp
ldy EscSeqParamTmp+1
asl EscSeqParamTmp param=param*10
rol EscSeqParamTmp+1
asl EscSeqParamTmp
rol EscSeqParamTmp+1
lda ZPTmpWord
ldy ZPTmpWord+1
asl ZPTmpWord param=param*10
rol ZPTmpWord+1
asl ZPTmpWord
rol ZPTmpWord+1
clc
adc EscSeqParamTmp
sta EscSeqParamTmp
adc ZPTmpWord
sta ZPTmpWord
tya
adc EscSeqParamTmp+1
sta EscSeqParamTmp+1
asl EscSeqParamTmp
rol EscSeqParamTmp+1
adc ZPTmpWord+1
sta ZPTmpWord+1
asl ZPTmpWord
rol ZPTmpWord+1
pla
clc
adc EscSeqParamTmp
sta EscSeqParamTmp
adc ZPTmpWord
sta ZPTmpWord
bcc .1
inc EscSeqParamTmp+1
inc ZPTmpWord+1
bra .1
.2 bit bEscSeqInNum
@ -322,10 +324,10 @@ COUT.ExecEscSeq stz EscSeqParamCnt
stz bEscSeqInNum
lda #255
ldy EscSeqParamTmp+1
ldy ZPTmpWord+1
bne .21
lda EscSeqParamTmp
lda ZPTmpWord
.21 ldy EscSeqParamCnt
sta EscSeqParam,y
inc EscSeqParamCnt
@ -443,8 +445,8 @@ ClrScr stz CH
lda #" "
php
sei
* php
* sei
sta SETWRITEAUX
ldy #39
@ -453,7 +455,7 @@ ClrScr stz CH
bpl .2
sta CLRWRITEAUX
plp
* plp
ldy #39
.3 sta (ZPBaseL1),y
@ -701,16 +703,16 @@ SetCharAtYX cmp #$40
pla
bcs .1
php
sei
* php
* sei
sta SETWRITEAUX
sta (ZPBaseL1),y
.1 sta (ZPBaseL1),y
sta CLRWRITEAUX
plp
* plp
rts
.1 sta (ZPBaseL1),y
rts
*.1 sta (ZPBaseL1),y
* rts
*--------------------------------------
GetCharAtCurPos ldy CH
ldx CV
@ -723,16 +725,16 @@ GetCharAtYX jsr SETUP.L1X
bcs .1
php
sei
* php
* sei
sta SETREADAUX
lda (ZPBaseL1),y
.1 lda (ZPBaseL1),y
sta CLRREADAUX
plp
* plp
rts
.1 lda (ZPBaseL1),y
rts
*.1 lda (ZPBaseL1),y
* rts
*--------------------------------------
SETUP.L1X lda BASEL,x
sta ZPBaseL1
@ -745,8 +747,8 @@ COPY.XtoL1 lda BASEL,x
lda BASEH,x
sta ZPBaseL2+1
php
sei
* php
* sei
sta SETWRITEAUX
sta SETREADAUX
@ -754,7 +756,7 @@ COPY.XtoL1 lda BASEL,x
sta CLRWRITEAUX
sta CLRREADAUX
plp
* plp
.1 ldy #39
@ -764,8 +766,8 @@ COPY.XtoL1 lda BASEL,x
bpl .2
rts
*--------------------------------------
Decimal.Out stz DecimalBuffer
stz DecimalBuffer+1
Decimal.Out stz ZPTmpWord
stz ZPTmpWord+1
ldx #8
sed
@ -775,35 +777,40 @@ Decimal.Out stz DecimalBuffer
.1 tya
asl
tay
lda DecimalBuffer
adc DecimalBuffer
sta DecimalBuffer
lda DecimalBuffer+1
adc DecimalBuffer+1
sta DecimalBuffer+1
lda ZPTmpWord
adc ZPTmpWord
sta ZPTmpWord
lda ZPTmpWord+1
adc ZPTmpWord+1
sta ZPTmpWord+1
dex
bne .1
cld
stz bDecimal0Out
lda DecimalBuffer+1
stz ZPTmpBool No leading 0
lda ZPTmpWord+1
and #$0f
beq .2
ora #$30
dec bDecimal0Out
dec ZPTmpBool non zero, print everything
jsr Char.Out.Put
.2 lda DecimalBuffer
.2 lda ZPTmpWord
lsr
lsr
lsr
lsr
bne .3
bit bDecimal0Out
bit ZPTmpBool Print this digit ?
bpl .4
.3 ora #$30
jsr Char.Out.Put
.4 lda DecimalBuffer
.4 lda ZPTmpWord
and #$0f
ora #$30
*--------------------------------------
@ -836,8 +843,14 @@ Char.Out.Get sec
DRV.CS.END
EscCodes >PSTR "MDc"
EscSeqCmds >PSTR "mnrKH"
ENQ.String .AZ "XTERM"
SB.IS.TTYPE .DA #IAC,#SB,#TELOPT.TTYPE,#SB.IS
.AS 'XTERM'
.DA #IAC,#SE
SB.IS.TTYPE.LEN .EQ *-SB.IS.TTYPE
BASEL .HS 00.80.00.80.00.80.00.80.28.A8.28.A8.28.A8.28.A8.50.D0.50.D0.50.D0.50.D0
BASEH .HS 08.08.09.09.0A.0A.0B.0B.08.08.09.09.0A.0A.0B.0B.08.08.09.09.0A.0A.0B.0B
*--------------------------------------
CH .BS 1
CV .BS 1
INVFLG .BS 1
@ -848,8 +861,6 @@ CURCHAR .BS 1
OutBuffer .BS 16
OutPtr .BS 1
OutCnt .BS 1
DecimalBuffer .BS 2
bDecimal0Out .BS 1
*--------------------------------------
KeyRemapped .HS 05080A0B0D15 L,D,U,CR,R
KeyRemappedIdx .HS 050004080C0F
@ -870,7 +881,6 @@ bEscMode .BS 1
bEscModeCSI .BS 1
bEscSeqInNum .BS 1
EscSeq .BS ESCSEQ.MAXLEN+1
EscSeqParamTmp .BS 2
EscSeqParamCnt .BS 1
EscSeqParam .BS 4
*--------------------------------------
@ -881,11 +891,6 @@ DEVSTAT .DA #S.DSTAT.S.WRITE+S.DSTAT.S.READ
.DA #0
.DA #0
.DA #91
ENQ.String .AZ "XTERM"
SB.IS.TTYPE .DA #IAC,#SB,#TELOPT.TTYPE,#SB.IS
.AS 'XTERM'
.DA #IAC,#SE
SB.IS.TTYPE.LEN .EQ *-SB.IS.TTYPE
*--------------------------------------
MAN
SAVE /A2OSX.SRC/DRV/CONSOLE.DRV.S

View File

@ -98,10 +98,10 @@ LBUF.DrawAtY.AND.XOR
lda (ZPBasePtr),y Get C1
and LBUF.C1.MASK clear ONLY bits starting at X1 mod 7
sta GBYTE
sta ZPTmpByte
lda LBUF.DATA,x get DATA bits
and LBUF.C1.DATA set ONLY bits starting at X1 mod 7
ora GBYTE
ora ZPTmpByte
eor (ZPBasePtr),y
sta (ZPBasePtr),y update screen
@ -128,10 +128,10 @@ LBUF.DrawAtY.AND.XOR
lda (ZPBasePtr),y Get C2
and LBUF.C2.MASK clear ONLY bits ending at X2 mod 7
sta GBYTE
sta ZPTmpByte
lda LBUF.DATA,x get DATA bits
and LBUF.C2.DATA set ONLY bits ending at X2 mod 7
ora GBYTE
ora ZPTmpByte
eor (ZPBasePtr),y
sta (ZPBasePtr),y update screen
@ -147,11 +147,11 @@ LBUF.DrawAtY.AND.SET
lda (ZPBasePtr),y Clear screen at C1
and LBUF.C1.MASK with MASK bits
sta GBYTE
sta ZPTmpByte
lda LBUF.DATA,x get DATA bits
and LBUF.C1.DATA set ONLY bits starting at X1 mod 7
ora GBYTE ora with screen bits
ora ZPTmpByte ora with screen bits
sta (ZPBasePtr),y update screen
inx
@ -201,11 +201,11 @@ LBUF.DrawAtY.AND.SET
lda (ZPBasePtr),y Get C2
and LBUF.C2.MASK clear ONLY bits ending at X2 mod 7
sta GBYTE
sta ZPTmpByte
lda LBUF.DATA,x get DATA bits
and LBUF.C2.DATA set ONLY bits ending at X2 mod 7
ora GBYTE
ora ZPTmpByte
sta (ZPBasePtr),y update screen
.8 rts
@ -219,11 +219,11 @@ LBUF.DrawAtY.ORA
lda (ZPBasePtr),y Get C1
and LBUF.C1.MASK clear ONLY bits starting at X1 mod 7
sta GBYTE
sta ZPTmpByte
lda LBUF.DATA,x get DATA bits
and LBUF.C1.DATA set ONLY bits starting at X1 mod 7
ora GBYTE
ora ZPTmpByte
ora (ZPBasePtr),y
sta (ZPBasePtr),y update screen
@ -251,11 +251,11 @@ LBUF.DrawAtY.ORA
lda LBUF.MASK,x get MASK bits
ora LBUF.C2.MASK
and (ZPBasePtr),y
sta GBYTE
sta ZPTmpByte
lda LBUF.DATA,x get DATA bits
and LBUF.C2.DATA set ONLY bits ending at X2 mod 7
ora GBYTE
ora ZPTmpByte
sta (ZPBasePtr),y update screen
.8 rts
@ -270,11 +270,11 @@ LBUF.DrawAtY.AND.ORA
lda LBUF.MASK,x get MASK bits
ora LBUF.C1.MASK clear ONLY bits starting at X1 mod 7
and (ZPBasePtr),y Clear screen at C1
sta GBYTE
sta ZPTmpByte
lda LBUF.DATA,x get DATA bits
and LBUF.C1.DATA set ONLY bits starting at X1 mod 7
ora GBYTE ora with screen bits
ora ZPTmpByte ora with screen bits
sta (ZPBasePtr),y update screen
inx
@ -302,11 +302,11 @@ LBUF.DrawAtY.AND.ORA
lda LBUF.MASK,x get MASK bits
ora LBUF.C2.MASK
and (ZPBasePtr),y
sta GBYTE
sta ZPTmpByte
lda LBUF.DATA,x get DATA bits
and LBUF.C2.DATA set ONLY bits ending at X2 mod 7
ora GBYTE
ora ZPTmpByte
sta (ZPBasePtr),y update screen
.8 rts

View File

@ -83,7 +83,7 @@ VLINE.MONO >LDYA CB.Cache+S.CB.X1
jsr DIVMOD7YA
tay
lda COL.OFS,y
sta GBYTE Save COL (DIV)
sta ZPTmpByte Save COL (DIV)
lda COL.BANK,y
tay
@ -101,7 +101,7 @@ VLINE.MONO.BLACK
clc
.1 lda BASEL,y
adc GBYTE
adc ZPTmpByte
sta ZPBasePtr
lda BASEH,y
sta ZPBasePtr+1
@ -118,7 +118,7 @@ VLINE.MONO.BLACK
VLINE.MONO.WHITE
.1 lda BASEL,y
adc GBYTE
adc ZPTmpByte
sta ZPBasePtr
lda BASEH,y
sta ZPBasePtr+1
@ -134,7 +134,7 @@ VLINE.MONO.WHITE
VLINE.MONO.XOR
.1 lda BASEL,y
adc GBYTE
adc ZPTmpByte
sta ZPBasePtr
lda BASEH,y
sta ZPBasePtr+1
@ -180,13 +180,13 @@ VLINE.C16 lda CB.Cache+S.CB.X1
beq .10
and Color.Pixels,y apply color
sta GBYTE
sta ZPTmpByte
sta SETPAGE2
lda (ZPBasePtr)
and Color.NMasks,x reset existing pixel,
ora GBYTE
ora ZPTmpByte
sta (ZPBasePtr)
.10 inx
@ -196,13 +196,13 @@ VLINE.C16 lda CB.Cache+S.CB.X1
beq .11
and Color.Pixels,y apply color
sta GBYTE
sta ZPTmpByte
sta CLRPAGE2
lda (ZPBasePtr)
and Color.NMasks,x reset existing pixel,
ora GBYTE
ora ZPTmpByte
sta (ZPBasePtr)
.11 inc ZPBasePtr
@ -213,13 +213,13 @@ VLINE.C16 lda CB.Cache+S.CB.X1
beq .12
and Color.Pixels,y apply color
sta GBYTE
sta ZPTmpByte
sta SETPAGE2
lda (ZPBasePtr)
and Color.NMasks,x reset existing pixel,
ora GBYTE
ora ZPTmpByte
sta (ZPBasePtr)
.12 inx
@ -229,13 +229,13 @@ VLINE.C16 lda CB.Cache+S.CB.X1
beq .13
and Color.Pixels,y apply color
sta GBYTE
sta ZPTmpByte
sta CLRPAGE2
lda (ZPBasePtr)
and Color.NMasks,x reset existing pixel,
ora GBYTE
ora ZPTmpByte
sta (ZPBasePtr)
.13 rts

View File

@ -95,13 +95,13 @@ SETPIXEL.C16 lda CB.Cache+S.CB.X1
lda Color.Masks,x bits in 1st byte to light?
beq .10
and Color.Pixels,y apply color
sta GBYTE
sta ZPTmpByte
sta SETPAGE2
lda (ZPBasePtr)
and Color.NMasks,x reset existing pixel,
ora GBYTE
ora ZPTmpByte
sta (ZPBasePtr)
.10 inx
@ -110,13 +110,13 @@ SETPIXEL.C16 lda CB.Cache+S.CB.X1
lda Color.Masks,x
beq .11
and Color.Pixels,y apply color
sta GBYTE
sta ZPTmpByte
sta CLRPAGE2
lda (ZPBasePtr)
and Color.NMasks,x reset existing pixel,
ora GBYTE
ora ZPTmpByte
sta (ZPBasePtr)
.11 inc ZPBasePtr
@ -126,13 +126,13 @@ SETPIXEL.C16 lda CB.Cache+S.CB.X1
lda Color.Masks,x
beq .12
and Color.Pixels,y apply color
sta GBYTE
sta ZPTmpByte
sta SETPAGE2
lda (ZPBasePtr)
and Color.NMasks,x reset existing pixel,
ora GBYTE
ora ZPTmpByte
sta (ZPBasePtr)
.12 inx
@ -141,13 +141,13 @@ SETPIXEL.C16 lda CB.Cache+S.CB.X1
lda Color.Masks,x
beq .13
and Color.Pixels,y apply color
sta GBYTE
sta ZPTmpByte
sta CLRPAGE2
lda (ZPBasePtr)
and Color.NMasks,x reset existing pixel,
ora GBYTE
ora ZPTmpByte
sta (ZPBasePtr)
.13 rts

View File

@ -36,14 +36,14 @@ FILLRECT jsr HLINE
GETRECTBUFSIZE >LDYA CB.Cache+S.CB.X1
jsr DIVMOD7YA
sta GBYTE
sta ZPTmpByte
>LDYA CB.Cache+S.CB.X2
jsr DIVMOD7YA
inc COL2 + 1
sec
sbc GBYTE (COL2+1)-COL1
sbc ZPTmpByte (COL2+1)-COL1
tax
>LDYA CB.Cache+S.CB.Y1

View File

@ -23,6 +23,25 @@ ZPBMDataPtr .EQ ZPDRV+8
ZPBMMaskPtr .EQ ZPDRV+10
ZPBMSavePtr .EQ ZPDRV+12
*--------------------------------------
ZPTmpWord .EQ ZPDRV+14
*--------------------------------------
LBUF.C1 .EQ ZPDRV+16
LBUF.C1.MASK .EQ ZPDRV+17 Bits to CLR in VMEM : 11100000 00000000 00111111
LBUF.C1.DATA .EQ ZPDRV+18 Bits to SET/ORA/XOR : 000ccccc cccccccc cc000000
LBUF.C2 .EQ ZPDRV+19 C1 C2
LBUF.C2.MASK .EQ ZPDRV+20
LBUF.C2.DATA .EQ ZPDRV+21
*--------------------------------------
BLT.BMMaskPtr .EQ ZPDRV+22
BLT.BMDataPtr .EQ ZPDRV+24
BLT.BMBitOfs .EQ ZPDRV+26
BLT.BMBitOfsL .EQ ZPDRV+27
BLT.ScrBitOfs .EQ ZPDRV+28
BLT.ScrColIdx .EQ ZPDRV+29
BLT.CMASK .EQ ZPDRV+30
*--------------------------------------
ZPTmpByte .EQ ZPDRV+31
*--------------------------------------
* File Header (16 Bytes)
*--------------------------------------
CS.START cld
@ -273,10 +292,10 @@ DIVMOD7YA dec
* OUT:
* Y,A = (Y,A) * X
*--------------------------------------
YAMultX stx GBYTE
YAMultX stx ZPTmpByte
sty GWORD
sta GWORD+1
sty ZPTmpWord
sta ZPTmpWord+1
ldy #0 Result LO
tya Result HI
@ -286,17 +305,19 @@ YAMultX stx GBYTE
.1 pha
tya
clc
adc GWORD
adc ZPTmpWord
tay
pla
adc GWORD+1
adc ZPTmpWord+1
.2 asl GWORD
rol GWORD+1
.2 asl ZPTmpWord
rol ZPTmpWord+1
.3 lsr GBYTE
.3 lsr ZPTmpByte
bcs .1
bne .2
rts
*--------------------------------------
.INB /A2OSX.SRC/DRV/DHGR.DRV.S.BLT
@ -396,26 +417,9 @@ CB.CmdLen .DA S.CB.Y1+1 SETPIXEL
CB.Cache .BS S.CB
BM.Cache .BS S.BM
*--------------------------------------
LBUF.C1 .BS 1
LBUF.C1.MASK .BS 1 Bits to CLR in VMEM : 11100000 00000000 00111111
LBUF.C1.DATA .BS 1 Bits to SET/ORA/XOR : 000ccccc cccccccc cc000000
LBUF.C2 .BS 1 C1 C2
LBUF.C2.MASK .BS 1
LBUF.C2.DATA .BS 1
LBUF.MASK .BS 81 81 because of sta LBUF.DATA+1,x!!!
LBUF.DATA .BS 81
*--------------------------------------
BLT.BMMaskPtr .BS 2
BLT.BMDataPtr .BS 2
BLT.BMBitOfs .BS 1
BLT.BMBitOfsL .BS 1
BLT.ScrBitOfs .BS 1
BLT.ScrColIdx .BS 1
BLT.CMASK .BS 1
*--------------------------------------
GBYTE .BS 1
GWORD .BS 2
*--------------------------------------
DSTAT .DA #0
.DA #0,#0,#0
>PSTR "Apple II DHGR"

View File

@ -2,8 +2,8 @@ NEW
PREFIX /A2OSX.BUILD
AUTO 4,1
*--------------------------------------
ZPDRV .EQ $30
ZPLIB .EQ $40 32 bytes for TCPIP
ZPDRV .EQ $20 32 bytes for DHGR.DRV....
ZPLIB .EQ $40 32 bytes for TCPIPD..
*--------------------------------------
* PS Context : 48 bytes MAX
*--------------------------------------

View File

@ -3,6 +3,26 @@ PREFIX /A2OSX.BUILD
AUTO 4,1
.LIST OFF
*--------------------------------------
* GC : Graphic Context
*--------------------------------------
S.GC.hParentGC .EQ 0
S.GC.hDev .EQ 1
S.GC.hMem .EQ 2
*
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.Cursor .EQ 15
S.GC.Color .EQ 16
S.GC.hFont .EQ 17
S.GC.hBrush .EQ 18
*
S.GC .EQ 20
*--------------------------------------
S.CB.CMD .EQ 0
S.CB.CMD.SETPIXEL .EQ 0
S.CB.CMD.GETPIXEL .EQ 2
@ -13,6 +33,7 @@ S.CB.CMD.BITBLT .EQ 10
S.CB.CMD.GETRECTBUFSIZE .EQ 12
S.CB.CMD.DRAWLINE .EQ 14
S.CB.CMD.DRAWTEXT .EQ 16
S.CB.CMD.GETTEXTSIZE .EQ 18
S.CB.OP .EQ 1
S.CB.OP.XOR .EQ 0 screen EOR bitmap -> Screen
S.CB.OP.SET .EQ 2 replace screen with bitmap
@ -48,6 +69,127 @@ S.CB.DstPtr .EQ 18 BITBLT
*
S.CB .EQ 20
*--------------------------------------
CUR.T.ARROW .EQ 0
CUR.T.RESIZEX .EQ 2
CUR.T.RESIZEY .EQ 4
CUR.T.RESIZEXY1 .EQ 6
CUR.T.RESIZEXY2 .EQ 8
CUR.T.CROSS .EQ 10
CUR.T.TEXT .EQ 12
CUR.T.WAIT .EQ 14
*--------------------------------------
S.MOUSE.X1 .EQ 0
S.MOUSE.Y1 .EQ 2
S.MOUSE.X2 .EQ 4
S.MOUSE.Y2 .EQ 6
S.MOUSE.S .EQ 8
S.MOUSE.S.UP .EQ %00000001
S.MOUSE.S.DOWN .EQ %00000010
S.MOUSE.S.MOVE .EQ %00000100
S.MOUSE.S.DRAG .EQ %00001000
S.MOUSE.S.CLK .EQ %00010000
S.MOUSE.S.DCLK .EQ %00100000
*
S.MOUSE .EQ 9
*--------------------------------------
S.POINT.X .EQ 0
S.POINT.Y .EQ 2
*
S.POINT .EQ 4
*--------------------------------------
S.RECT.X1 .EQ 0
S.RECT.Y1 .EQ 2
S.RECT.X2 .EQ 4
S.RECT.Y2 .EQ 6
*
S.RECT .EQ 8
*--------------------------------------
T.WND .EQ 0
T.MENU .EQ 2
T.BUTTON .EQ 4
T.TEXT .EQ 6
*--------------------------------------
S.WND.T .EQ 0
S.WND.F .EQ 1
S.WND.F.RESIZE .EQ %00000001
S.WND.F.MOVE .EQ %00000010
S.WND.F.CLOSE .EQ %00000100
S.WND.F.MAX .EQ %00001000
S.WND.F.MIN .EQ %00010000
S.WND.F.NOBORDER .EQ %00100000
S.WND.F.MODAL .EQ %01000000
S.WND.F.SYSMODAL .EQ %10000000
S.WND.S .EQ 2
S.WND.hOWNER .EQ 3
S.WND.hPARENT .EQ 4
S.WND.hTITLE .EQ 5
S.WND.hMENU .EQ 6
S.WND.hBKCOLOR .EQ 7
S.WND.hBKBM .EQ 8
S.WND.hSTATUS .EQ 9
S.WND.hCUR .EQ 10
S.WND.hICON .EQ 11
S.WND.X .EQ 12
S.WND.Y .EQ 14
S.WND.W .EQ 16
S.WND.H .EQ 18
*
S.WND .EQ 32
*--------------------------------------
S.MENU.T .EQ 0
S.MENU.F .EQ 1
S.MENU.hSAVEBUF .EQ 2
S.MENU.X .EQ 3
S.MENU.Y .EQ 5
* ... S.MITEMs...
*--------------------------------------
S.MITEM.F .EQ 0
*S.MITEM.F. .EQ %00000001
*S.MITEM.F. .EQ %00000010
*S.MITEM.F. .EQ %00000100
*S.MITEM.F. .EQ %00001000
*S.MITEM.F. .EQ %00010000
S.MITEM.F.SEP .EQ %00100000
S.MITEM.F.CHECKED .EQ %01000000
S.MITEM.F.DISABLED .EQ %10000000
S.MITEM.ID .EQ 1
S.MITEM.hSUBM .EQ 2
S.MITEM.hBM .EQ 3
S.MITEM.HOTKEY .EQ 4
S.MITEM.HOTKEY.CTRL .EQ %10000000
S.MITEM.HOTKEY.OA .EQ %01000000
S.MITEM.HOTKEY.CA .EQ %00100000
S.MITEM.TEXTLEN .EQ 5
S.MITEM.TEXT .EQ 6 CSTR
* ...
*--------------------------------------
S.BUT.T .EQ 0
S.BUT.F .EQ 1
S.BUT.F.DISABLED .EQ %10000000
S.BUT.S .EQ 2
S.BUT.S.PUSHED .EQ %10000000
S.BUT.ID .EQ 3
S.BUT.hOWNER .EQ 4
S.BUT.hPARENT .EQ 5
S.BUT.X .EQ 6
S.BUT.Y .EQ 8
S.BUT.W .EQ 10
S.BUT.H .EQ 12
S.BUT.hBM .EQ 14
S.BUT.TEXTX .EQ 16
S.BUT.TEXTY .EQ 18
S.BUT.TEXTLEN .EQ 20
S.BUT.TEXT .EQ 21
* ...
*--------------------------------------
S.TEXT.T .EQ 0
S.TEXT.F .EQ 1
S.TEXT.F.DISABLED .EQ %10000000
S.TEXT.ID .EQ 2
S.TEXT.hBM .EQ 3
S.TEXT.TEXTLEN .EQ 5
S.TEXT.TEXT .EQ 6
*--------------------------------------
S.BM.F .EQ 0
S.BM.F.BBP1 .EQ %00000001
S.BM.F.BBP2 .EQ %00000010

View File

@ -15,80 +15,6 @@ LIBGUI.UpdateCursor .EQ 18
LIBGUI.ReadMouse .EQ 20
LIBGUI.GetScreenGC .EQ 22
*--------------------------------------
S.GC.hDev .EQ 0
S.GC.hMem .EQ 1
S.GC.Parent .EQ 2
*
S.GC.X1 .EQ 4
S.GC.Y1 .EQ 6
S.GC.X2 .EQ 8
S.GC.Y2 .EQ 10
*
S.GC .EQ 12
*--------------------------------------
CUR.T.ARROW .EQ 0
CUR.T.RESIZEX .EQ 2
CUR.T.RESIZEY .EQ 4
CUR.T.RESIZEXY1 .EQ 6
CUR.T.RESIZEXY2 .EQ 8
CUR.T.CROSS .EQ 10
CUT.T.TEXT .EQ 12
CUR.T.WAIT .EQ 14
*--------------------------------------
S.MOUSE.X1 .EQ 0
S.MOUSE.Y1 .EQ 2
S.MOUSE.X2 .EQ 4
S.MOUSE.Y2 .EQ 6
S.MOUSE.S .EQ 8
S.MOUSE.S.UP .EQ %00000001
S.MOUSE.S.DOWN .EQ %00000010
S.MOUSE.S.MOVE .EQ %00000100
S.MOUSE.S.DRAG .EQ %00001000
S.MOUSE.S.CLK .EQ %00010000
S.MOUSE.S.DCLK .EQ %00100000
*
S.MOUSE .EQ 9
*--------------------------------------
S.POINT.X .EQ 0
S.POINT.Y .EQ 2
*
S.POINT .EQ 4
*--------------------------------------
S.RECT.X1 .EQ 0
S.RECT.Y1 .EQ 2
S.RECT.X2 .EQ 4
S.RECT.Y2 .EQ 6
*
S.RECT .EQ 8
*--------------------------------------
S.WND.F .EQ 0
S.WND.F.RESIZE .EQ %00000001
S.WND.F.MOVE .EQ %00000010
S.WND.F.CLOSE .EQ %00000100
S.WND.F.MAX .EQ %00001000
S.WND.F.MIN .EQ %00010000
S.WND.F.SPARE .EQ %00100000
S.WND.F.MODAL .EQ %01000000
S.WND.F.SYSMODAL .EQ %10000000
S.WND.S .EQ 1
S.WND.hOWNER .EQ 2
S.WND.hPARENT .EQ 3
S.WND.hTITLE .EQ 4
S.WND.hMENU .EQ 5
S.WND.hBKCOLOR .EQ 6
S.WND.hBKBM .EQ 7
S.WND.hSTATUS .EQ 8
S.WND.hCUR .EQ 9
S.WND.hICON .EQ 10
S.WND.X .EQ 12
S.WND.Y .EQ 14
S.WND.W .EQ 16
S.WND.H .EQ 18
*
S.WND .EQ 32
*--------------------------------------
S.GUI.C.BK
*--------------------------------------
MAN
SAVE /A2OSX.BUILD/INC/LIBGUI.I
LOAD /A2OSX.SRC/LIB/LIBGUI.S

12
LIB/LIBGUI.S.BM.txt Normal file
View File

@ -0,0 +1,12 @@
NEW
PREFIX /A2OSX.BUILD
AUTO 4,1
*--------------------------------------
BM.Get
*--------------------------------------
*--------------------------------------
*--------------------------------------
MAN
SAVE /A2OSX.SRC/LIB/LIBGUI.S.BM
LOAD /A2OSX.SRC/LIB/LIBGUI.S
ASM

26
LIB/LIBGUI.S.BUT.txt Normal file
View File

@ -0,0 +1,26 @@
NEW
PREFIX /A2OSX.BUILD
AUTO 4,1
*--------------------------------------
BUT.New >STYA ZPPtr1
ldy #S.BUT.hBM
lda (ZPPtr1),y
beq .
>SYSCALL
lda #0
ldy #
sta
*--------------------------------------
BUT.Draw
*--------------------------------------
*--------------------------------------
MAN
SAVE /A2OSX.SRC/LIB/LIBGUI.S.BUT
LOAD /A2OSX.SRC/LIB/LIBGUI.S
ASM

View File

@ -329,6 +329,7 @@ DrawText >LDYA L.CB.Cache
.9 rts
*--------------------------------------
MAN
SAVE /A2OSX.SRC/LIB/LIBGUI.S.DRAW
LOAD /A2OSX.SRC/LIB/LIBGUI.S

28
LIB/LIBGUI.S.MENU.txt Normal file
View File

@ -0,0 +1,28 @@
NEW
PREFIX /A2OSX.BUILD
AUTO 4,1
*--------------------------------------
PopupMenu >STYA ZPPtr1
lda #2 1px Border
sta DX
sta DY
stz DX+1
stz DY+1
lda ZPPtr1
clc
adc #S.MENU
sta ZPPtr2
lda ZPPtr1+1
adc /S.MENU
sta ZPPtr2+1
.1 lda (ZPPtr2)
*--------------------------------------
MAN
SAVE /A2OSX.SRC/LIB/LIBGUI.S.MENU
LOAD /A2OSX.SRC/LIB/LIBGUI.S
ASM

View File

@ -261,6 +261,7 @@ GoDevMouse jmp $ffff
.INB /A2OSX.SRC/LIB/LIBGUI.S.CUR
.INB /A2OSX.SRC/LIB/LIBGUI.S.PAT
.INB /A2OSX.SRC/LIB/LIBGUI.S.WND
.INB /A2OSX.SRC/LIB/LIBGUI.S.BUT
*--------------------------------------
CS.END
*--------------------------------------

View File

@ -121,8 +121,7 @@ CS.RUN.LOOP
bcs .8 unable to send greetings...reset..
ldy #hBinName
lda (pData),y
>LDA.G hBinName
>SYSCALL GetMemPtr.A
>SYSCALL ExecPS.YA
@ -218,7 +217,6 @@ CS.DOEVENT lda (pEvent)
rts
*--------------------------------------
CS.QUIT >LDA.G hBinName
lda (pData),y
beq .1
>SYSCALL FreeMem.A

View File

@ -33,37 +33,44 @@ CS.START cld
.DA CS.RUN
.DA CS.DOEVENT
.DA CS.QUIT
L.MSG.INIT .DA MSG.INIT
L.LIBGUI .DA LIBGUI
L.SYSFONT .DA SYSFONT
L.SYSX7 .DA SYSX7
L.SYSX7B .DA SYSX7B
L.Filename .DA Filename
L.MouseData .DA MouseData
L.CB.Paint .DA CB.Paint
L.BM.Apple .DA BM.Apple
L.TXT.Sample .DA TXT.Sample
L.TXT.A2osX .DA TXT.A2osX
L.CB.Marylin .DA CB.Marylin
L.CB.DrawLine .DA CB.DrawLine
L.GC.Clip .DA GC.Clip
.DA 0
*--------------------------------------
CS.INIT >LDYA L.MSG.INIT
>SYSCALL PrintF.YA
>LDYA L.LIBGUI
CS.INIT >LDYA L.LIBGUI
>SYSCALL LoadLib.YA
bcs .99
bcs .98
sta hLIBGUI
>LIBCALL hLIBGUI,LIBGUI.InitGUI
bcs .99
bcs .98
>PUSHWI 0 Aux type
>PUSHBI $CC Type
>PUSHBI SYS.FOpen.R
>PUSHW L.SYSFONT
>PUSHW L.SYSX7
>SYSCALL LoadStkObj
.98 bcs .99
sta hSYSFON
sta CB.DrawA2osX+S.CB.hFont
>PUSHWI 0 Aux type
>PUSHBI $CC Type
>PUSHBI SYS.FOpen.R
>PUSHW L.SYSX7B
>SYSCALL LoadStkObj
bcs .99
sta hSYSFONT
sta hSYSFONB
sta CB.DrawText+S.CB.hFont
>PUSHWI 0 Aux type
@ -78,6 +85,9 @@ CS.INIT >LDYA L.MSG.INIT
>LDYA L.TXT.Sample
>STYA CB.DrawText+S.CB.TxtPtr
>LDYA L.TXT.A2osX
>STYA CB.DrawA2osX+S.CB.TxtPtr
>LDYA L.BM.Apple
>STYA CB.Apple+S.CB.SrcPtr
@ -177,13 +187,14 @@ Destop.Paint >LIBCALL hLIBGUI,LIBGUI.HideCursor
*--------------------------------------
CS.END
LIBGUI .AZ "libgui.o"
MSG.INIT .AZ "GUI:Init...\r\n"
hLIBGUI .BS 1
hSYSFONT .BS 1
hSYSFON .BS 1
hSYSFONB .BS 1
*--------------------------------------
Filename .AZ "/A2OSX.BUILD/ROOT/MARILYN"
*--------------------------------------
SYSFONT .AZ "/A2OSX.BUILD/SBIN/GUI/SYSTEM"
SYSX7 .AZ "/A2OSX.BUILD/SBIN/GUI/SYSX7"
SYSX7B .AZ "/A2OSX.BUILD/SBIN/GUI/SYSX7B"
*--------------------------------------
MouseData .BS S.MOUSE
*--------------------------------------
@ -204,19 +215,6 @@ CB.Paint .DA #S.CB.CMD.FILLRECT
.DA 20 Y1
.DA 519 X2
.DA 171 Y2
*--------------------------------------
CB.Apple .DA #S.CB.CMD.BITBLT
.DA #S.CB.OP.SET
.DA #S.CB.M.C16
.DA #0
.DA 0 X1
.DA 0 Y1
.DA 16 W
.DA 7 H
.DA 28 DestX
.DA 180 DestY
.BS 2 SrcPtr
.DA 0 DstPtr
*--------------------------------------
CB.DrawText .DA #S.CB.CMD.DRAWTEXT
.DA #S.CB.OP.SET OP
@ -229,6 +227,31 @@ CB.DrawText .DA #S.CB.CMD.DRAWTEXT
.DA 4 DstX
.DA 7 DstY
.BS 2 TxtPtr
*--------------------------------------
CB.Apple .DA #S.CB.CMD.BITBLT
.DA #S.CB.OP.SET
.DA #S.CB.M.C16
.DA #0
.DA 0 X1
.DA 0 Y1
.DA 16 W
.DA 7 H
.DA 4 DestX
.DA 183 DestY
.BS 2 SrcPtr
.DA 0 DstPtr
*--------------------------------------
CB.DrawA2osX .DA #S.CB.CMD.DRAWTEXT
.DA #S.CB.OP.SET OP
.DA #S.CB.M.MONO M
.BS 1 hFont
.DA 0 X1
.DA 0 Y1
.DA 0 SrcW
.DA 0 SrcH
.DA 24 DstX
.DA 183 DstY
.BS 2 TxtPtr
*--------------------------------------
.DA #0
*--------------------------------------
@ -236,7 +259,7 @@ BM.Apple .DA #S.BM.F.BBP4
.DA #2 RowBytes
.DA 16 W
.DA 7 H
.DA 0
.DA 0 no MASK.OFS
.HS FFF6 green (8)
.HS 6FF6 green (8)
@ -246,7 +269,8 @@ BM.Apple .DA #S.BM.F.BBP4
.HS 9999 violet (11)
.HS 1FF1 Dark blue (4)
*--------------------------------------
TXT.Sample .AZ "@@@@@@@@@ This Is A Sample Text with System Font Height=7px, Variable Width {}[] #0123456789$ @@@@@@@@@"
TXT.Sample .AZ "@ This Is A Sample Text with SYSX7B.FON Height=7px, Variable Width {}[] #0123456789$ "
TXT.A2osX .AZ "A2osX"
*--------------------------------------
CB.Marylin .DA #S.CB.CMD.BITBLT
.DA #S.CB.OP.SET

View File

@ -1,8 +1,6 @@
PR#3
PREFIX /A2OSX.BUILD
NEW
INC 1
AUTO 6
PREFIX /A2OSX.BUILD
AUTO 4,1
.LIST OFF
.OP 65C02
.OR $2000

View File

@ -294,7 +294,7 @@ Cmd.Exec.CD lda (ZPPTR2)
iny
lda #0
sta (ZPPTR2),y
.3 >LDYA ZPPTR2 Get ARG
>SYSCALL RealPath.YA
bcs .9

View File

@ -1,8 +1,6 @@
PR#3
NEW
PREFIX /A2OSX.BUILD
LOMEM $A00
INC 1
AUTO 6
AUTO 4,1
.LIST OFF
*--------------------------------------
CSH.E.SYNTAX .EQ $7F

View File

@ -204,12 +204,12 @@ K.ReadDir.A.ROOT
inc ZPPtr2+1
bra .3
* lda #0 done by S.MEM.F.INIT0
* lda #0 done by S.MEM.F.INIT0
* sta (ZPPtr4) Ending 0
.5 ldy #S.NODE.DIR.FC
lda #16
sta (ZPPtr1),y Flag that we returned somthing for next time
sta (ZPPtr1),y Flag that we returned somthing for next time
jmp K.ReadDir.A.EXIT
*--------------------------------------

View File

@ -4,7 +4,7 @@ AUTO 4,1
*--------------------------------------
ZPMemMgrSPtr .EQ ZPMEMMGR Pointer To Slot selected
ZPMemMgrTmp1 .EQ ZPMEMMGR+2
ZPMemMgrSize .EQ ZPMEMMGR+4
ZPSListID .EQ ZPMEMMGR+6
ZPSListIBlkPtr .EQ ZPMEMMGR+8
ZPSListDBlkPtr .EQ ZPMEMMGR+10
@ -79,7 +79,7 @@ K.GetMem0.YA ldx #S.MEM.F.INIT0
K.GetMem.YA ldx #0
MEM.GetMem.YAX stx Mem.ReqFlags
sta Mem.ReqSize+1
sta ZPMemMgrSize+1
tya
bit #$0F 16 bytes aligned ?
@ -89,9 +89,9 @@ MEM.GetMem.YAX stx Mem.ReqFlags
clc
adc #$10
bcc .10
inc Mem.ReqSize+1
inc ZPMemMgrSize+1
.10 sta Mem.ReqSize
.10 sta ZPMemMgrSize
>LDYAI Mem.Table
>STYA ZPMemMgrSPtr
@ -115,12 +115,12 @@ MEM.GetMem.YAX stx Mem.ReqFlags
.3 ldy #S.MEM.LEN
lda (ZPMemMgrSPtr),y get LEN of this block
cmp Mem.ReqSize compare with requested size
cmp ZPMemMgrSize compare with requested size
bne .4
iny
lda (ZPMemMgrSPtr),y
cmp Mem.ReqSize+1
cmp ZPMemMgrSize+1
beq .7 requested size matches slot size !!!
.4 cpx Mem.LastSlot any other slot to check?
@ -133,7 +133,7 @@ MEM.GetMem.YAX stx Mem.ReqFlags
lda Mem.Free target PTR will be page aligned ?
sec
sbc Mem.ReqSize
sbc ZPMemMgrSize
beq .6 yes, allocate
tay no, reserve a free slot to fill gap
@ -141,7 +141,7 @@ MEM.GetMem.YAX stx Mem.ReqFlags
jsr Mem.AddSlot X = new slot
bcs .9
.6 >LDYA Mem.ReqSize
.6 >LDYA ZPMemMgrSize
jsr Mem.AddSlot X = new slot
bcs .9
@ -161,11 +161,11 @@ MEM.GetMem.YAX stx Mem.ReqFlags
lda (ZPMemMgrSPtr),y
sta .12+2
lda Mem.ReqSize
lda ZPMemMgrSize
eor #$ff
tay y=not lo count
lda Mem.ReqSize+1
lda ZPMemMgrSize+1
eor #$ff a=not hi count
phx
@ -209,7 +209,6 @@ MEM.GetMem.YAX stx Mem.ReqFlags
.9 rts
*--------------------------------------
Mem.ReqSize .BS 2 store requested Size
Mem.ReqFlags .BS 1 store requested Flags
*--------------------------------------
* Mem.AddSlot
@ -558,6 +557,27 @@ K.SListFree.A
sta CLRWRITEAUX
rts
*/--------------------------------------
* # GetStkObjProperty.A
* ## In:
* A = hMem To Free (AUX Memory)
* Y = Property Index
* ## Out:
* Y,A = Property Value
*\--------------------------------------
phy
sta SETREADAUX
jsr K.GetMemPtr.A
>STYA ZPMemMgrTmp1
ply
lda (ZPMemMgrTmp1),y
pha
iny
lda (ZPMemMgrTmp1),y
ply
sta CLRREADAUX
rts
*/--------------------------------------
* # NewStkObj.YA
* ## In:
* Y,A = Size Requested
@ -580,7 +600,7 @@ K.NewStkObj.YA ldx #SYS.GetMem.YA
*\--------------------------------------
K.FreeStkObj.A ldx #SYS.FreeMem.A
sta SETREADAUX
MEM.GoStkObj sta SETREADAUX
sta SETWRITEAUX
jsr .1

View File

@ -63,6 +63,7 @@ J.Cmds .DA SETPIXEL
.DA GETRECTBUFSIZE
.DA $ffff DRAWLINE
.DA DRAWTEXT
.DA GETTEXTSIZE
*--------------------------------------
SETPIXEL >LDYA CB.Cache+S.CB.Y1
ldx DstBM.Cache+S.BM.RowBytes
@ -155,6 +156,7 @@ BITBLT.1 >STYA ZPSrcBMPtr
*--------------------------------------
* GETRECTBUFSIZE
* In:
* S.CB.SrcW
* S.CB.SrcH
@ -166,14 +168,28 @@ GETRECTBUFSIZE
GETRECTBUFSIZE.RTS
rts
*--------------------------------------
* DRAWTEXT
* In:
* S.CB.S.CB.FONT : hFont
* S.CB.SrcPtr : Ptr to Text
* S.CB.DstPtr : Buffer Size (in bytes)
* Out:
* A=hBM
*--------------------------------------
DRAWTEXT lda CB.Cache+S.CB.hFONT
DRAWTEXT sec
.HS 90 BCC
*--------------------------------------
* GETTEXTSIZE
* In:
* S.CB.S.CB.FONT : hFont
* S.CB.SrcPtr : Ptr to Text
* Out:
* A,X = Width
* Y = Height
*--------------------------------------
GETTEXTSIZE clc
php
lda CB.Cache+S.CB.hFONT
jsr GO.GetMemPtr.A
>STYA ZPFontPtr
@ -195,34 +211,43 @@ DRAWTEXT lda CB.Cache+S.CB.hFONT
.2 >LDYA CB.Cache+S.CB.TxtPtr
>STYA TXTPTR
lda #S.BM.F.BBP1
sta DstBM.Cache+S.BM.F
stz DstBM.Cache+S.BM.W
stz DstBM.Cache+S.BM.W+1
stz CB.Cache+S.CB.SrcW
stz CB.Cache+S.CB.SrcW+1
lda FON.Cache+S.FON.PixH
sta DstBM.Cache+S.BM.H
stz DstBM.Cache+S.BM.H+1
sta CB.Cache+S.CB.SrcH
stz CB.Cache+S.CB.SrcH+1
.3 jsr MEM.TXTPTR.GetNext
beq .4
jsr FON.GetChar
lda (ZPCharPtr) Get Char PixelW
sec
adc DstBM.Cache+S.BM.W
sta DstBM.Cache+S.BM.W
adc CB.Cache+S.CB.SrcW
sta CB.Cache+S.CB.SrcW
bcc .3
inc DstBM.Cache+S.BM.W+1
inc CB.Cache+S.CB.SrcW+1
bra .3
.4 >LDYA DstBM.Cache+S.BM.W
>STYA CB.Cache+S.CB.SrcW
.4 plp
lda CB.Cache+S.CB.SrcW
ldx CB.Cache+S.CB.SrcW+1
ldy CB.Cache+S.CB.SrcH
bcs .5
rts
.5 sta DstBM.Cache+S.BM.W
stx DstBM.Cache+S.BM.W+1
sty DstBM.Cache+S.BM.H
stz DstBM.Cache+S.BM.H+1
lda #S.BM.F.BBP1
sta DstBM.Cache+S.BM.F
jsr BM.Create
bcs GETRECTBUFSIZE.RTS

View File

@ -174,7 +174,7 @@ K.GetC.CDEV ldx #DEVMGR.READ
*--------------------------------------
K.GetC.SSOCK lda (pDev) #S.NODE.HANDLER
jsr K.GetMemPtr.A
>STYA .1
>STYA .1+1
ldy #S.NODE.SSOCK.READ
lda (pDev),y
@ -290,14 +290,13 @@ K.FOpen.10 >LDYAI S.NODE.REG
stz K.MLI.PARAMS+3
stz K.MLI.PARAMS+4
>MLICALL MLISETEOF no, reset size to 0
bcs .98
bra .20
bra .21
.11 >MLICALL MLIGETEOF
bcs .98
>MLICALL MLISETMARK
bcs .98
.21 bcs .98
.20 lda K.FOpen.MODE
and #SYS.FOpen.T Text Mode ?
@ -1093,14 +1092,12 @@ STDIO.IOERR lda #MLI.E.IO
PADLEN .BS 1
PADCHAR .BS 1
*--------------------------------------
*EXP .BS 1
HEXBUF .BS 4
bNeg .BS 1
BCDBUF .BS 5 5, enough to handle 10 digits (32bits)
*--------------------------------------
* Convert HEXBUF to ASCBUF decimal padded with 0
*--------------------------------------
HEX2DEC ror bNeg
HEX2DEC ror .31+1
ldx #4
@ -1129,8 +1126,8 @@ HEX2DEC ror bNeg
bne .2
cld
*--------------------------------------
bit bNeg a -sign to print before digits ?
.31 bit #$ff SELF MODIFIED -sign to print before digits ?
bpl .9
lda #'-'
jsr Printf.Cout