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

View File

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

View File

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

View File

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

View File

@ -23,6 +23,25 @@ ZPBMDataPtr .EQ ZPDRV+8
ZPBMMaskPtr .EQ ZPDRV+10 ZPBMMaskPtr .EQ ZPDRV+10
ZPBMSavePtr .EQ ZPDRV+12 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) * File Header (16 Bytes)
*-------------------------------------- *--------------------------------------
CS.START cld CS.START cld
@ -273,10 +292,10 @@ DIVMOD7YA dec
* OUT: * OUT:
* Y,A = (Y,A) * X * Y,A = (Y,A) * X
*-------------------------------------- *--------------------------------------
YAMultX stx GBYTE YAMultX stx ZPTmpByte
sty GWORD sty ZPTmpWord
sta GWORD+1 sta ZPTmpWord+1
ldy #0 Result LO ldy #0 Result LO
tya Result HI tya Result HI
@ -286,17 +305,19 @@ YAMultX stx GBYTE
.1 pha .1 pha
tya tya
clc clc
adc GWORD adc ZPTmpWord
tay tay
pla pla
adc GWORD+1 adc ZPTmpWord+1
.2 asl GWORD .2 asl ZPTmpWord
rol GWORD+1 rol ZPTmpWord+1
.3 lsr GBYTE .3 lsr ZPTmpByte
bcs .1 bcs .1
bne .2 bne .2
rts rts
*-------------------------------------- *--------------------------------------
.INB /A2OSX.SRC/DRV/DHGR.DRV.S.BLT .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 CB.Cache .BS S.CB
BM.Cache .BS S.BM 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.MASK .BS 81 81 because of sta LBUF.DATA+1,x!!!
LBUF.DATA .BS 81 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 DSTAT .DA #0
.DA #0,#0,#0 .DA #0,#0,#0
>PSTR "Apple II DHGR" >PSTR "Apple II DHGR"

View File

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

View File

@ -3,6 +3,26 @@ PREFIX /A2OSX.BUILD
AUTO 4,1 AUTO 4,1
.LIST OFF .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 .EQ 0
S.CB.CMD.SETPIXEL .EQ 0 S.CB.CMD.SETPIXEL .EQ 0
S.CB.CMD.GETPIXEL .EQ 2 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.GETRECTBUFSIZE .EQ 12
S.CB.CMD.DRAWLINE .EQ 14 S.CB.CMD.DRAWLINE .EQ 14
S.CB.CMD.DRAWTEXT .EQ 16 S.CB.CMD.DRAWTEXT .EQ 16
S.CB.CMD.GETTEXTSIZE .EQ 18
S.CB.OP .EQ 1 S.CB.OP .EQ 1
S.CB.OP.XOR .EQ 0 screen EOR bitmap -> Screen S.CB.OP.XOR .EQ 0 screen EOR bitmap -> Screen
S.CB.OP.SET .EQ 2 replace screen with bitmap S.CB.OP.SET .EQ 2 replace screen with bitmap
@ -48,6 +69,127 @@ S.CB.DstPtr .EQ 18 BITBLT
* *
S.CB .EQ 20 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 .EQ 0
S.BM.F.BBP1 .EQ %00000001 S.BM.F.BBP1 .EQ %00000001
S.BM.F.BBP2 .EQ %00000010 S.BM.F.BBP2 .EQ %00000010

View File

@ -15,80 +15,6 @@ LIBGUI.UpdateCursor .EQ 18
LIBGUI.ReadMouse .EQ 20 LIBGUI.ReadMouse .EQ 20
LIBGUI.GetScreenGC .EQ 22 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 MAN
SAVE /A2OSX.BUILD/INC/LIBGUI.I SAVE /A2OSX.BUILD/INC/LIBGUI.I
LOAD /A2OSX.SRC/LIB/LIBGUI.S 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 .9 rts
*-------------------------------------- *--------------------------------------
MAN MAN
SAVE /A2OSX.SRC/LIB/LIBGUI.S.DRAW SAVE /A2OSX.SRC/LIB/LIBGUI.S.DRAW
LOAD /A2OSX.SRC/LIB/LIBGUI.S 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.CUR
.INB /A2OSX.SRC/LIB/LIBGUI.S.PAT .INB /A2OSX.SRC/LIB/LIBGUI.S.PAT
.INB /A2OSX.SRC/LIB/LIBGUI.S.WND .INB /A2OSX.SRC/LIB/LIBGUI.S.WND
.INB /A2OSX.SRC/LIB/LIBGUI.S.BUT
*-------------------------------------- *--------------------------------------
CS.END CS.END
*-------------------------------------- *--------------------------------------

View File

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

View File

@ -33,37 +33,44 @@ CS.START cld
.DA CS.RUN .DA CS.RUN
.DA CS.DOEVENT .DA CS.DOEVENT
.DA CS.QUIT .DA CS.QUIT
L.MSG.INIT .DA MSG.INIT
L.LIBGUI .DA LIBGUI L.LIBGUI .DA LIBGUI
L.SYSFONT .DA SYSFONT L.SYSX7 .DA SYSX7
L.SYSX7B .DA SYSX7B
L.Filename .DA Filename L.Filename .DA Filename
L.MouseData .DA MouseData L.MouseData .DA MouseData
L.CB.Paint .DA CB.Paint L.CB.Paint .DA CB.Paint
L.BM.Apple .DA BM.Apple L.BM.Apple .DA BM.Apple
L.TXT.Sample .DA TXT.Sample L.TXT.Sample .DA TXT.Sample
L.TXT.A2osX .DA TXT.A2osX
L.CB.Marylin .DA CB.Marylin L.CB.Marylin .DA CB.Marylin
L.CB.DrawLine .DA CB.DrawLine L.CB.DrawLine .DA CB.DrawLine
L.GC.Clip .DA GC.Clip L.GC.Clip .DA GC.Clip
.DA 0 .DA 0
*-------------------------------------- *--------------------------------------
CS.INIT >LDYA L.MSG.INIT CS.INIT >LDYA L.LIBGUI
>SYSCALL PrintF.YA
>LDYA L.LIBGUI
>SYSCALL LoadLib.YA >SYSCALL LoadLib.YA
bcs .99 bcs .98
sta hLIBGUI sta hLIBGUI
>LIBCALL hLIBGUI,LIBGUI.InitGUI >LIBCALL hLIBGUI,LIBGUI.InitGUI
bcs .99 bcs .98
>PUSHWI 0 Aux type >PUSHWI 0 Aux type
>PUSHBI $CC Type >PUSHBI $CC Type
>PUSHBI SYS.FOpen.R >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 >SYSCALL LoadStkObj
bcs .99 bcs .99
sta hSYSFONT sta hSYSFONB
sta CB.DrawText+S.CB.hFont sta CB.DrawText+S.CB.hFont
>PUSHWI 0 Aux type >PUSHWI 0 Aux type
@ -78,6 +85,9 @@ CS.INIT >LDYA L.MSG.INIT
>LDYA L.TXT.Sample >LDYA L.TXT.Sample
>STYA CB.DrawText+S.CB.TxtPtr >STYA CB.DrawText+S.CB.TxtPtr
>LDYA L.TXT.A2osX
>STYA CB.DrawA2osX+S.CB.TxtPtr
>LDYA L.BM.Apple >LDYA L.BM.Apple
>STYA CB.Apple+S.CB.SrcPtr >STYA CB.Apple+S.CB.SrcPtr
@ -177,13 +187,14 @@ Destop.Paint >LIBCALL hLIBGUI,LIBGUI.HideCursor
*-------------------------------------- *--------------------------------------
CS.END CS.END
LIBGUI .AZ "libgui.o" LIBGUI .AZ "libgui.o"
MSG.INIT .AZ "GUI:Init...\r\n"
hLIBGUI .BS 1 hLIBGUI .BS 1
hSYSFONT .BS 1 hSYSFON .BS 1
hSYSFONB .BS 1
*-------------------------------------- *--------------------------------------
Filename .AZ "/A2OSX.BUILD/ROOT/MARILYN" 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 MouseData .BS S.MOUSE
*-------------------------------------- *--------------------------------------
@ -204,19 +215,6 @@ CB.Paint .DA #S.CB.CMD.FILLRECT
.DA 20 Y1 .DA 20 Y1
.DA 519 X2 .DA 519 X2
.DA 171 Y2 .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 CB.DrawText .DA #S.CB.CMD.DRAWTEXT
.DA #S.CB.OP.SET OP .DA #S.CB.OP.SET OP
@ -229,6 +227,31 @@ CB.DrawText .DA #S.CB.CMD.DRAWTEXT
.DA 4 DstX .DA 4 DstX
.DA 7 DstY .DA 7 DstY
.BS 2 TxtPtr .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 .DA #0
*-------------------------------------- *--------------------------------------
@ -236,7 +259,7 @@ BM.Apple .DA #S.BM.F.BBP4
.DA #2 RowBytes .DA #2 RowBytes
.DA 16 W .DA 16 W
.DA 7 H .DA 7 H
.DA 0 .DA 0 no MASK.OFS
.HS FFF6 green (8) .HS FFF6 green (8)
.HS 6FF6 green (8) .HS 6FF6 green (8)
@ -246,7 +269,8 @@ BM.Apple .DA #S.BM.F.BBP4
.HS 9999 violet (11) .HS 9999 violet (11)
.HS 1FF1 Dark blue (4) .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 CB.Marylin .DA #S.CB.CMD.BITBLT
.DA #S.CB.OP.SET .DA #S.CB.OP.SET

View File

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

View File

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

View File

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

View File

@ -204,12 +204,12 @@ K.ReadDir.A.ROOT
inc ZPPtr2+1 inc ZPPtr2+1
bra .3 bra .3
* lda #0 done by S.MEM.F.INIT0 * lda #0 done by S.MEM.F.INIT0
* sta (ZPPtr4) Ending 0 * sta (ZPPtr4) Ending 0
.5 ldy #S.NODE.DIR.FC .5 ldy #S.NODE.DIR.FC
lda #16 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 jmp K.ReadDir.A.EXIT
*-------------------------------------- *--------------------------------------

View File

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

View File

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

View File

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