Kernel 0.94

This commit is contained in:
Rémy GIBERT 2020-10-06 08:27:35 +02:00
parent 3a3d82f7e6
commit 2fc1034a9d
24 changed files with 490 additions and 295 deletions

Binary file not shown.

Binary file not shown.

Binary file not shown.

View File

@ -1,16 +1,15 @@
NEW
PREFIX
AUTO 4,1
AUTO 3,1
.LIST OFF
.OP 65C02
.OR $2000
.TF ROOT/FNT2FON
.TF bin/fnt2fon
*--------------------------------------
.INB INC/MACROS.I
.INB INC/A2OSX.I
.INB INC/GUI.I
.INB INC/LIBGUI.I
.INB ROOT/X.FNT.I
.INB inc/macros.i
.INB inc/a2osx.i
.INB inc/gfx.i
.INB inc/libgui.i
.INB inc/fnt.i
*--------------------------------------
ZPPTR1 .EQ ZPBIN
ZPInputBufPtr .EQ ZPBIN+2
@ -684,7 +683,7 @@ CS.QUIT >LDA.G hOutPutBuf
*--------------------------------------
CS.END
*--------------------------------------
.INB ROOT/X.TWIST.G
.INB usr/src/shared/x.twist.g
*--------------------------------------
OptionList >PSTR "NnVv"
OptionVars .DA #bNoShrink,#bNoShrink,#bVerbose,#bVerbose
@ -718,10 +717,8 @@ CharOutByteW .BS 1
hOutPutBuf .BS 1
OutPutPtr .BS 1
FileOffset .BS 4
DS.END
.ED
DS.END .ED
*--------------------------------------
MAN
SAVE /A2OSX.BUILD/ROOT/FNT2FON.S
SAVE usr/src/bin/fnt2fon.s
ASM

View File

@ -164,8 +164,8 @@ OSD.DRAWTEXT sec
* S.CB.S.CB.FONT : hFont
* S.CB.SrcPtr : Ptr to Text
* Out:
* A,X = Width
* Y = Height
* S.CB.SrcW = Width
* S.CB.SrcH = Height
*--------------------------------------
OSD.GETTEXTSIZE clc
php

View File

@ -4,7 +4,7 @@ NEW
IO.D2.SeekTimeR .EQ 160 LIBBLKDEV Recalibration
IO.D2.SeekTimeF .EQ 140 LIBBLKDEV Track Formatter
IO.D2.SeekTimeB .EQ 140 LIBBLKDEV Boot Block
IO.D2.SeekTimeP .EQ 70 ProDOS.FX initial
IO.D2.SeekTimeP .EQ 75 ProDOS.FX initial
IO.D2.SeekTimeI .EQ 20 ProDOS.FX increment -> until > 128
*--------------------------------------
IO.D2.Ph0Off .EQ $C080

View File

@ -92,9 +92,8 @@ S.OBJ.X2 .EQ 12
S.OBJ.Y2 .EQ 14
S.OBJ.W .EQ 16
S.OBJ.H .EQ 18
S.OBJ.Childs .EQ 20
*
S.OBJ .EQ 22
S.OBJ .EQ 20
*--------------------------------------
S.WND.F.RESIZE .EQ %00000001
S.WND.F.MOVE .EQ %00000010

View File

@ -428,6 +428,9 @@ rdhead sec anticipate error.
bmi BB.Trk2Qtrk.RTS branch if can't fine/read sector.
clc indicate reading header.
ldy #0 Retry cnt waiting D5
rddata php carry set if reading sector.
rd0 dey every time y=0 decrement find count.

View File

@ -19,12 +19,6 @@ CUR.HotPoints .DA #0,#0 CUR.T.ARROW
.DA #8,#7 CUR.Wait5
.DA #8,#7 CUR.Wait6
*--------------------------------------
CUR.CB .DA #S.CB.CMD.BITBLT
.BS 1
.DA #S.CB.M.MONO
.DA #0
.BS S.CB-2
*--------------------------------------
CUR.SaveBuf .BS 64 16*4
*--------------------------------------
CUR.Arrow .DA #S.BM.F.BBP1

View File

@ -1,10 +0,0 @@
NEW
AUTO 3,1
*--------------------------------------
WND.Stack.Top .BS 1
WND.Stack .BS WND.MAX
*--------------------------------------
MAN
SAVE usr/src/lib/libgui.g.wnd
LOAD usr/src/lib/libgui.s
asm

View File

@ -227,58 +227,84 @@ CLIP.Line.RIGHT .EQ 2
CLIP.Line.BOTTOM .EQ 4
CLIP.Line.TOP .EQ 8
*--------------------------------------
CLIP.Line jsr CLIP.Line.EncodeP1
CLIP.Line
* >DEBUG
jsr CLIP.Line.EncodeP1
jsr CLIP.Line.EncodeP2
.1 lda CLIP.Line.P1
ora CLIP.Line.P2
beq .88
lda CLIP.Line.P1
and CLIP.Line.P2
bne .99
lda CLIP.Line.P1
beq .5
bit #CLIP.Line.TOP
beq .2
* Y1 is above S.CB.Y1....
* DY=Y2-Y1;
jsr CLIP.Line.EncodeP1
bra .1
.2 bit #CLIP.Line.BOTTOM
beq .3
* Y1 is below S.CB.Y2....
jsr CLIP.Line.EncodeP1
bra .1
.3 bit #CLIP.Line.RIGHT
beq .4
* X1 is after S.CB.X2....
jsr CLIP.Line.EncodeP1
bra .1
* X1 is before S.CB.X1....
.4
jsr CLIP.Line.EncodeP1
.4 jsr CLIP.Line.EncodeP1
bra .1
* P2
.5 lda CLIP.Line.P2
bit #CLIP.Line.TOP
beq .6
* Y2 is above S.CB.Y1....
jsr CLIP.Line.EncodeP2
bra .1
.6 bit #CLIP.Line.BOTTOM
beq .7
* Y2 is below S.CB.Y2....
jsr CLIP.Line.EncodeP2
bra .1
.7 bit #CLIP.Line.RIGHT
beq .8
* X2 is after S.CB.X2....
jsr CLIP.Line.EncodeP2
bra .1
* X2 is before S.CB.X1....
.8
jsr CLIP.Line.EncodeP2
.8 jsr CLIP.Line.EncodeP2
bra .1
.88 clc
rts
@ -315,30 +341,38 @@ CLIP.Line.EncodeX.AX
pha
>SCMPAX OBJ.Cache+S.OBJ.X1
bmi .1
tya
ora #CLIP.Line.LEFT
plx
rts
.1 pla
>SCMPAX OBJ.Cache+S.OBJ.X1
>SCMPAX OBJ.Cache+S.OBJ.X2
bpl .8
tya
ora #CLIP.Line.RIGHT
.8 rts
*--------------------------------------
CLIP.Line.EncodeY.AX
pha
>SCMPAX OBJ.Cache+S.OBJ.Y1
bmi .1
tya
ora #CLIP.Line.TOP
plx
rts
.1 pla
>SCMPAX OBJ.Cache+S.OBJ.Y1
>SCMPAX OBJ.Cache+S.OBJ.Y2
bpl .8
tya
ora #CLIP.Line.BOTTOM
.8 rts
*--------------------------------------
CB.Cache.SetX2Y2

View File

@ -21,24 +21,24 @@ SetCursor sta CUR.T
.1 ldx CUR.T
lda L.Cursors,x
sta CUR.CB+S.CB.SrcPtr
sta CB.PTR+S.CB.SrcPtr
sta ZPPtr1
lda L.Cursors+1,x
sta CUR.CB+S.CB.SrcPtr+1
sta CB.PTR+S.CB.SrcPtr+1
sta ZPPtr1+1
ldy #S.BM.W
lda (ZPPtr1),y
sta CUR.CB+S.CB.SrcW
sta CB.PTR+S.CB.SrcW
clc
adc CUR.CB+S.CB.X1
adc CB.PTR+S.CB.X1
pha
iny
lda (ZPPtr1),y
sta CUR.CB+S.CB.SrcW+1
adc CUR.CB+S.CB.X1+1
sta CB.PTR+S.CB.SrcW+1
adc CB.PTR+S.CB.X1+1
tax
pla
bne .2
@ -46,21 +46,21 @@ SetCursor sta CUR.T
dex
.2 dec
sta CUR.CB+S.CB.X2
stx CUR.CB+S.CB.X2+1
sta CB.PTR+S.CB.X2
stx CB.PTR+S.CB.X2+1
iny S.BM.H
lda (ZPPtr1),y
sta CUR.CB+S.CB.SrcH
sta CB.PTR+S.CB.SrcH
clc
adc CUR.CB+S.CB.Y1
adc CB.PTR+S.CB.Y1
pha
iny
lda (ZPPtr1),y
sta CUR.CB+S.CB.SrcH+1
adc CUR.CB+S.CB.Y1+1
sta CB.PTR+S.CB.SrcH+1
adc CB.PTR+S.CB.Y1+1
tax
pla
bne .3
@ -68,8 +68,8 @@ SetCursor sta CUR.T
dex
.3 dec
sta CUR.CB+S.CB.Y2
stx CUR.CB+S.CB.Y2+1
sta CB.PTR+S.CB.Y2
stx CB.PTR+S.CB.Y2+1
lda CUR.bVisible
bmi ShowCursor.I
@ -116,33 +116,34 @@ ShowCursor.I ldx CUR.T
lda CUR.Pos+S.POINT.X
sec
sbc CUR.HotPoints,x
sta CUR.CB+S.CB.X1
sta CB.PTR+S.CB.X1
lda CUR.Pos+S.POINT.X+1
sbc #0
sta CUR.CB+S.CB.X1+1
sta CB.PTR+S.CB.X1+1
lda CUR.Pos+S.POINT.Y
sec
sbc CUR.HotPoints+1,x
sta CUR.CB+S.CB.Y1
sta CB.PTR+S.CB.Y1
lda CUR.Pos+S.POINT.Y+1
sbc #0
sta CUR.CB+S.CB.Y1+1
sta CB.PTR+S.CB.Y1+1
lda #S.CB.OP.ORA+S.CB.OP.MASK+S.CB.OP.SAVE
DrawCursor.I sta CUR.CB+S.CB.OP
DrawCursor.I sta CB.PTR+S.CB.OP
>LDYA L.WND.Screen
jsr OBJ.GetInCache
>LDYA L.CUR.CB
>LDYA L.CB.PTR
jsr CLIP.YA
bcs .9
jmp GFXWrite.CB
>LDYA L.CB.PTR
jmp GFXWrite.YA
.9 rts
*--------------------------------------

View File

@ -1,17 +1,369 @@
NEW
AUTO 3,1
*--------------------------------------
* drawline(short int hWND, short int OP, short int COLOR, int X1, int Y1, int X2, int X2)
*--------------------------------------
DrawLine >PULLW CB.Cache+S.CB.Y2
>PULLW CB.Cache+S.CB.X2
>PULLW CB.Cache+S.CB.Y1
>PULLW CB.Cache+S.CB.X1
>PULLB CB.Cache+S.CB.COLOR
>PULLB CB.Cache+S.CB.OP
>PULLA hWND
>SYSCALL2 GetMemPtr
>STYA ZPWNDPtr
jsr DRAW.ToGlobal
jsr DRAW.GetInnerW
lda CB.Cache+S.CB.X2
sec
sbc CB.Cache+S.CB.X1
sta DX
lda CB.Cache+S.CB.X2+1
sbc CB.Cache+S.CB.X1+1
sta DX+1 DX = X2 - X1
bmi .1 DX < 0....
ora DX
bne .2 DX > 0...
lda #S.CB.CMD.VLINE DX=0 : VLINE Y1,Y2 At X1
bra .20
*--------------------------------------
.1 >SWAP16 CB.Cache+S.CB.X1,CB.Cache+S.CB.X2
>SWAP16 CB.Cache+S.CB.Y1,CB.Cache+S.CB.Y2
>NOT16 DX swap X1/X2, Y1/Y2, set DX=-DX (DX positive)
.2 lda #1
sta IY
lda CB.Cache+S.CB.Y2
sec
sbc CB.Cache+S.CB.Y1
sta DY
lda CB.Cache+S.CB.Y2+1
sbc CB.Cache+S.CB.Y1+1
sta DY+1 DY = Y2 - Y1
bmi .3 DY < 0 ...
ora DY
bne .4
lda #S.CB.CMD.HLINE DY=0 : HLINE X1,X2 At Y1
.20 sta CB.Cache+S.CB.CMD
jsr CLIP.CB.Cache
bcs .8
jmp GFXWrite.CB
.8 rts
*--------------------------------------
.3 >NOT16 DY set DY=-DY
lda #$ff
sta IY set IY=-1
.4 jsr CLIP.Line
bcs .8
lda #S.CB.CMD.SETPIXEL
sta CB.Cache+S.CB.CMD
jsr GFXWrite.CB
lda DX
sec
sbc DY
tax
lda DX+1
sbc DY+1
bmi DrawLine.IncY DY is greater than DX, we will increase on Y axis
txa
beq DrawLine.IncXY DX=DY, go inc X & Y
jmp DrawLine.IncX DY is lower than DX, we will increase on X axis
*--------------------------------------
DrawLine.IncXY lda DX DX=DY
eor #$ff
sta Counter
lda DX+1
eor #$ff
sta Counter+1
.1 inc Counter
bne .2
inc Counter+1
beq .8
.2 inc CB.Cache+S.CB.X1
bne .3
inc CB.Cache+S.CB.X1+1
.3 lda CB.Cache+S.CB.Y1 Y1=Y1+IY
clc
adc IY
sta CB.Cache+S.CB.Y1
jsr GFXWrite.CB
bra .1
.8 rts
*--------------------------------------
DrawLine.IncY lda DY
eor #$ff
sta Counter
lda DY+1
eor #$ff
sta Counter+1
lda DX IE=2*DX
asl
sta IE
pha
lda DX+1
rol
sta IE+1
tax
pla D=IE-DY
sec
sbc DY
sta D
txa
sbc DY+1
sta D+1
lda DX INE=2*(DX-DY)
sec
sbc DY
pha
lda DX+1
sbc DY+1
tax
pla
asl
sta INE
txa
rol
sta INE+1
.1 inc Counter
bne .2
inc Counter+1
beq .8
.2 lda D+1 IF D < 0 ...
bmi .4
lda D D > 0 : D=D+INE
clc
adc INE
sta D
lda D+1
adc INE+1
sta D+1
inc CB.Cache+S.CB.X1 X1=X1+1
bne .5
inc CB.Cache+S.CB.X1+1
bra .5
.4 lda D D > 0 : D=D+IE
clc
adc IE
sta D
lda D+1
adc IE+1
sta D+1
.5 lda CB.Cache+S.CB.Y1 Y1=Y1+IY
clc
adc IY
sta CB.Cache+S.CB.Y1
jsr GFXWrite.CB
bra .1
.8 rts
*--------------------------------------
DrawLine.IncX lda DX
eor #$ff
sta Counter
lda DX+1
eor #$ff
sta Counter+1
lda DY IE=2*DY
asl
sta IE
pha
* lda DY+1
lda #0
rol
sta IE+1
tax
pla D=IE-DX
sec
sbc DX
sta D
txa
sbc DX+1
sta D+1
lda DY INE=2*(DY-DX)
sec
sbc DX
pha
* lda DY+1
lda #0
sbc DX+1
tax
pla
asl
sta INE
txa
rol
sta INE+1
.1 inc Counter
bne .2
inc Counter+1
beq .8
.2 lda D+1 ID D < 0 ....
bmi .4
lda D D > 0 : D=D+INE
clc
adc INE
sta D
lda D+1
adc INE+1
sta D+1
lda CB.Cache+S.CB.Y1 Y1=Y1+IY
clc
adc IY
sta CB.Cache+S.CB.Y1
bra .5
.4 lda D D < 0 : D=D+IE
clc
adc IE
sta D
lda D+1
adc IE+1
sta D+1
.5 inc CB.Cache+S.CB.X1 X1=X1+1
bne .6
inc CB.Cache+S.CB.X1+1
.6 jsr GFXWrite.CB
bra .1
.8 rts
*--------------------------------------
* drawtext (short int OP, short int hFONT, int X1, int Y1)
*--------------------------------------
DrawText clc
rts
*--------------------------------------
*
*--------------------------------------
DRAW.ToGlobal >LDYA ZPWNDPtr
>STYA ZPPtr1
.1 ldy #S.OBJ.X1
ldx #S.CB.X1
jsr DRAW.AddP1YtoCBX
ldy #S.WND.InnerY1
ldx #S.CB.Y1
jsr DRAW.AddP1YtoCBX
ldy #S.OBJ.X1
ldx #S.CB.X2
jsr DRAW.AddP1YtoCBX
ldy #S.WND.InnerY1
ldx #S.CB.Y2
jsr DRAW.AddP1YtoCBX
ldy #S.OBJ.hPARENT+1
lda (ZPPtr1),y
beq .8 00xx = hDev
tax
dey
lda (ZPPtr1),y
sta ZPPtr1
stx ZPPtr1+1
bra .1
.8 clc
rts
*--------------------------------------
DRAW.AddP1YtoCBX
lda (ZPPtr1),y
clc
adc CB.Cache,x
sta CB.Cache,x
iny
lda (ZPPtr1),y
adc CB.Cache+1,x
sta CB.Cache+1,x
rts
*--------------------------------------
DRAW.GetInnerW ldy #S.OBJ.X1
lda (ZPWNDPtr),y
sta OBJ.Cache+S.OBJ.X1
iny
lda (ZPWNDPtr),y
sta OBJ.Cache+S.OBJ.X1+1
ldy #S.WND.InnerY1
lda (ZPWNDPtr),y
sta OBJ.Cache+S.OBJ.Y1
iny
lda (ZPWNDPtr),y
sta OBJ.Cache+S.OBJ.Y1+1
ldy #S.WND.InnerW
lda (ZPWNDPtr),y
sta OBJ.Cache+S.OBJ.W
iny
lda (ZPWNDPtr),y
sta OBJ.Cache+S.OBJ.W+1
iny #S.WND.InnerH
lda (ZPWNDPtr),y
sta OBJ.Cache+S.OBJ.H
iny
lda (ZPWNDPtr),y
sta OBJ.Cache+S.OBJ.H+1
>LDYA L.OBJ.Cache
jmp OBJ.SetX2Y2
*--------------------------------------
DrawCBBufToYA ldx L.CB.Buf
stx ZPCBPtr
ldx L.CB.Buf+1
stx ZPCBPtr+1
DrawCBPtrToYA jsr OBJ.GetInCache
bit CUR.bVisible
bpl .1
DrawCBPtrToYA bit CUR.bVisible
bpl .10
pha
phy
jsr HideCursor.I
ply
pla
.10 jsr OBJ.GetInCache
.1 lda (ZPCBPtr)
beq .8
@ -54,6 +406,7 @@ DrawCBPtrToYA jsr OBJ.GetInCache
bra .1
.8 clc
.9 bit CUR.bVisible
bpl .99
@ -65,260 +418,6 @@ DrawCBPtrToYA jsr OBJ.GetInCache
.99 rts
*--------------------------------------
* In: Control Block in CB.Cache
* CMD
* OP
* MODE
* COLOR
* X1
* Y1
* X2
* Y2
*--------------------------------------
DrawLine >PULLW CB.Cache+S.CB.Y2
>PULLW CB.Cache+S.CB.X2
>PULLW CB.Cache+S.CB.Y1
>PULLW CB.Cache+S.CB.X1
>PULLB CB.Cache+S.CB.COLOR
>PULLB CB.Cache+S.CB.OP
>PULLA hWND
>SYSCALL2 GetMemPtr
>STYA ZPWNDPtr
lda CB.Cache+S.CB.X2
sec
sbc CB.Cache+S.CB.X1
sta DX
lda CB.Cache+S.CB.X2+1
sbc CB.Cache+S.CB.X1+1
sta DX+1 DX = X2 - X1
bmi .1 DX < 0....
ora DX
bne .2 DX > 0...
lda #S.CB.CMD.VLINE
sta CB.Cache+S.CB.CMD
jmp GFXWrite.CB DX=0 : VLIN Y1,Y2 At X1
.1 >SWAP16 CB.Cache+S.CB.X1,CB.Cache+S.CB.X2
* >SWAP16 CB.Cache+S.CB.Y1,CB.Cache+S.CB.Y2
lda CB.Cache+S.CB.Y1
ldx CB.Cache+S.CB.Y2
stx CB.Cache+S.CB.Y1
sta CB.Cache+S.CB.Y2
>NOT16 DX swap X1/X2, Y1/Y2, set DX=-DX (DX positive)
.2 lda #1
sta IY
lda CB.Cache+S.CB.Y2
sec
sbc CB.Cache+S.CB.Y1
sta DY
* lda CB.Cache+S.CB.Y2+1
lda #0
* sbc CB.Cache+S.CB.Y1+1
sbc #0
sta DY+1 DY = Y2 - Y1
bmi .3 DY < 0 ...
ora DY
bne .4
lda #S.CB.CMD.HLINE
sta CB.Cache+S.CB.CMD
jmp GFXWrite.CB DY=0 : HLIN X1,X2 At Y1
.3 >NOT16 DY set DY=-DY
lda #$ff
sta IY set IY=-1
.4 lda #S.CB.CMD.SETPIXEL
sta CB.Cache+S.CB.CMD
jsr GFXWrite.CB
lda DX
sec
sbc DY
tax
lda DX+1
* sbc DY+1
sbc #0
bmi DrawLine.IncY DY is greater than DX, we will increase on Y axis
txa
beq DrawLine.IncXY DX=DY, go inc X & Y
jmp DrawLine.IncX DY is lower than DX, we will increase on X axis
DrawLine.IncXY lda DX DX=DY
eor #$ff
sta Counter
lda DX+1
eor #$ff
sta Counter+1
.1 inc Counter
bne .2
inc Counter+1
beq .8
.2 inc CB.Cache+S.CB.X1
bne .3
inc CB.Cache+S.CB.X1+1
.3 lda CB.Cache+S.CB.Y1 Y1=Y1+IY
clc
adc IY
sta CB.Cache+S.CB.Y1
jsr GFXWrite.CB
bra .1
.8 rts
DrawLine.IncY lda DY
eor #$ff
sta Counter
lda DY+1
eor #$ff
sta Counter+1
lda DX IE=2*DX
asl
sta IE
pha
lda DX+1
rol
sta IE+1
tax
pla D=IE-DY
sec
sbc DY
sta D
txa
sbc DY+1
sta D+1
lda DX INE=2*(DX-DY)
sec
sbc DY
pha
lda DX+1
sbc DY+1
tax
pla
asl
sta INE
txa
rol
sta INE+1
.1 inc Counter
bne .2
inc Counter+1
beq .8
.2 lda D+1 IF D < 0 ...
bmi .4
lda D D > 0 : D=D+INE
clc
adc INE
sta D
lda D+1
adc INE+1
sta D+1
inc CB.Cache+S.CB.X1 X1=X1+1
bne .5
inc CB.Cache+S.CB.X1+1
bra .5
.4 lda D D > 0 : D=D+IE
clc
adc IE
sta D
lda D+1
adc IE+1
sta D+1
.5 lda CB.Cache+S.CB.Y1 Y1=Y1+IY
clc
adc IY
sta CB.Cache+S.CB.Y1
jsr GFXWrite.CB
bra .1
.8 rts
DrawLine.IncX lda DX
eor #$ff
sta Counter
lda DX+1
eor #$ff
sta Counter+1
lda DY IE=2*DY
asl
sta IE
pha
* lda DY+1
lda #0
rol
sta IE+1
tax
pla D=IE-DX
sec
sbc DX
sta D
txa
sbc DX+1
sta D+1
lda DY INE=2*(DY-DX)
sec
sbc DX
pha
* lda DY+1
lda #0
sbc DX+1
tax
pla
asl
sta INE
txa
rol
sta INE+1
.1 inc Counter
bne .2
inc Counter+1
beq .8
.2 lda D+1 ID D < 0 ....
bmi .4
lda D D > 0 : D=D+INE
clc
adc INE
sta D
lda D+1
adc INE+1
sta D+1
lda CB.Cache+S.CB.Y1 Y1=Y1+IY
clc
adc IY
sta CB.Cache+S.CB.Y1
bra .5
.4 lda D D < 0 : D=D+IE
clc
adc IE
sta D
lda D+1
adc IE+1
sta D+1
.5 inc CB.Cache+S.CB.X1 X1=X1+1
bne .6
inc CB.Cache+S.CB.X1+1
.6 jsr GFXWrite.CB
bra .1
.8 rts
*--------------------------------------
MAN
SAVE usr/src/lib/libgui.s.draw
LOAD usr/src/lib/libgui.s

View File

@ -43,7 +43,7 @@ MOU.Setup lda DCB.GFX+S.DCB.GFX.W+1
bcs .9
>LDYA L.CUR.SaveBuf
>STYA CUR.CB+S.CB.DstPtr
>STYA CB.PTR+S.CB.DstPtr
* clc
.9 rts
@ -59,26 +59,91 @@ MOU.Quit lda hDevMouse
.8 clc
rts
*--------------------------------------
MOU.ReadMouse >PULLYA
MOU.ReadMouse >PULLW ZPPtr1
ldx A2osX.ASCREEN GUI screen active ?
cpx DCB.GFX+S.DCB.GFX.DEVID
lda A2osX.ASCREEN GUI screen active ?
cmp DCB.GFX+S.DCB.GFX.DEVID
bne .9 no, exit....
ldx hDevMouse
lda hDevMouse
beq .9
pha
txa
>PUSHA
>PUSHBI IOCTL.READ
pla
>PUSHYA
>PUSHW ZPPtr1
>SYSCALL2 IOCTL
bcs .99
ldy #S.MOUSE.S
lda (ZPPtr1),y
bit #S.MOUSE.S.MOVE
beq .8
lda WND.SysBar+S.OBJ.Y1
ldy #S.MOUSE.Y1
cmp (ZPPtr1),y
lda WND.SysBar+S.OBJ.Y1+1
iny
sbc (ZPPtr1),y
bcc .8
jmp SYSBAR.Enter
.8 clc
rts
.9 sec
.99 rts
*--------------------------------------
SYSBAR.Show jsr GetCBBuf
bcs .9
lda #S.CB.CMD.FILLRECT
jsr PutA2CBBuf
lda #S.CB.OP.SET
jsr PutA2CBBuf
lda #S.CB.M.MONO
jsr PutA2CBBuf
lda PREFS.SYSBARCOLOR
jsr PutA2CBBuf
lda #0 S.OBJ.X1
jsr PutA2CBBuf
jsr PutA2CBBuf
lda WND.SysBar+S.OBJ.Y1
jsr PutA2CBBuf
lda WND.SysBar+S.OBJ.Y1+1
jsr PutA2CBBuf
lda WND.SysBar.A2osX.X2
jsr PutA2CBBuf
lda WND.SysBar.A2osX.X2+1
jsr PutA2CBBuf
lda WND.SysBar+S.OBJ.Y2
jsr PutA2CBBuf
lda WND.SysBar+S.OBJ.Y2+1
jsr PutA2CBBuf
lda #0
jsr PutA2CBBuf
>LDYA L.WND.SysBar
jsr DrawCBPtrToYA
lda hCBBuf
>SYSCALL FreeMem
* clc
.9 rts
*--------------------------------------
SYSBAR.Enter clc
rts
*--------------------------------------
MAN

View File

@ -25,41 +25,39 @@ WND.Setup >LDYA DCB.GFX+S.DCB.GFX.W
>STYA WND.Desktop+S.OBJ.W
>STYA WND.SysBar+S.OBJ.W
lda SYSFON.H
clc
adc #6
lda SYSFON.Hp2
sta WND.SysBar+S.OBJ.H
lda DCB.GFX+S.DCB.GFX.H
sta WND.Screen+S.OBJ.H
sec
sbc WND.SysBar+S.OBJ.H
sta WND.Desktop+S.OBJ.H
sta WND.SysBar+S.OBJ.X1
lda DCB.GFX+S.DCB.GFX.H+1
sta WND.SysBar+S.OBJ.H+1
sbc #0
sta WND.Desktop+S.OBJ.H+1
sta WND.SysBar+S.OBJ.X1+1
sta WND.SysBar+S.OBJ.Y1
>LDYA L.WND.Screen
>STYA WND.Desktop+S.OBJ.hPARENT
>STYA WND.SysBar+S.OBJ.hPARENT
jsr OBJ.SetX2Y2
>LDYA L.WND.Desktop
>STYA WND.Screen.Childs
jsr OBJ.SetX2Y2
>LDYA L.WND.SysBar
>STYA WND.Screen.Childs+2
jsr OBJ.SetX2Y2
lda #24
sta WND.SysBar.A2osX.X2
lda #CUR.T.ARROW
sta WND.Desktop+S.WND.hCUR
sta WND.SysBar+S.WND.hCUR
stz WND.Stack.Top
jsr SYSBAR.Show
rts
*--------------------------------------
WND.Quit lda WND.Screen+S.OBJ.hPARENT
@ -84,9 +82,12 @@ WND.New >LDYAI S.WND
ldy WND.Stack.Top
cpy #WND.MAX
bcs .90
bcc .10
lda #S.OBJ.T.WND
lda #E.OOH
>RET 9
.10 lda #S.OBJ.T.WND
sta (ZPWNDPtr) S.OBJ.T
ldy #S.WND-1
@ -142,6 +143,13 @@ WND.New >LDYAI S.WND
ldy #S.OBJ.hOWNER
sta (ZPWNDPtr),y
lda L.WND.Desktop
ldy #S.OBJ.hPARENT
sta (ZPWNDPtr),y
iny
lda L.WND.Desktop+1
sta (ZPWNDPtr),y
txa ID
ldy WND.Stack.Top
sta WND.Stack
@ -149,9 +157,6 @@ WND.New >LDYAI S.WND
* clc
rts
.90 lda #E.OOH
.9 >RET 9
*--------------------------------------
WND.Destroy clc
rts
@ -261,7 +266,7 @@ WND.Show >SYSCALL2 GetMemPtr
jsr WND.SetStatus
jsr WND.PaintTopBar
bcs .9
bcs WND.GetProp.RTS
*--------------------------------------
.3 ldy #S.WND.MBAR+1
lda (ZPWNDPtr),y
@ -321,10 +326,22 @@ WND.Show >SYSCALL2 GetMemPtr
jsr WND.PaintSBar
*--------------------------------------
.8 lda #0
.8 ldy #S.WND.InnerH
lda (ZPWNDPtr),y
sec
sbc Counter+1
sta (ZPWNDPtr),y
iny
lda (ZPWNDPtr),y
sbc #0
sta (ZPWNDPtr),y
lda #0
jsr PutA2CBBuf
>LDYA L.WND.Screen
>LDYA L.WND.Desktop
jsr DrawCBPtrToYA
lda hCBBuf
@ -407,7 +424,7 @@ WND.fPaint
stz CB.Buf+S.CB.Y2+2 Ending 0
>LDYA L.WND.Screen
>LDYA L.WND.Desktop
jmp DrawCBBufToYA
.1 clc

View File

@ -128,26 +128,6 @@ CS.START cld
.DA WND.Paint
L.WND.fPaint .DA WND.fPaint
*--------------------------------------
J.MBAR .DA MBAR.New
.DA MBAR.Paint
.DA MBAR.Close
*--------------------------------------
J.MENU .DA MENU.New
.DA MENU.Paint
.DA MENU.Close
*--------------------------------------
J.MENUITEM .DA MITEM.New
.DA MITEM.Paint
.DA MITEM.Close
*--------------------------------------
J.BUT .DA BUT.New
.DA BUT.Paint
.DA BUT.Close
*--------------------------------------
J.TEXT .DA TEXT.New
.DA TEXT.Paint
.DA TEXT.Close
*--------------------------------------
L.DEVNAME.GFX .DA DEVNAME.GFX
L.DEVNAME.MOUSE .DA DEVNAME.MOUSE
L.SYSX7 .DA SYSX7
@ -155,8 +135,10 @@ L.SYSX7B .DA SYSX7B
L.IOCTL .DA IOCTL
L.DCB.GFX .DA DCB.GFX
L.MouseClamp .DA MouseClamp
L.CB.PTR .DA CB.PTR
L.CB.Buf .DA CB.Buf
L.CB.Cache .DA CB.Cache
L.OBJ.Cache .DA OBJ.Cache
L.WND.Screen .DA WND.Screen
L.WND.Desktop .DA WND.Desktop
L.WND.SysBar .DA WND.SysBar
@ -166,7 +148,6 @@ L.BM.Close .DA BM.Close
L.BM.Max .DA BM.Max
L.BM.Min .DA BM.Min
*--------------------------------------
L.CUR.CB .DA CUR.CB
L.CUR.SaveBuf .DA CUR.SaveBuf
L.Cursors .DA CUR.Arrow
.DA CUR.ResizeX
@ -230,66 +211,6 @@ LIB.UNLOAD dec LibCount
.8 clc
rts
*--------------------------------------
OBJ.GetInCache >STYA .1+1
ldx #S.OBJ-1
.1 lda $ffff,x SELF MODIFIED
sta OBJ.Cache,x
dex
bpl .1
rts
*--------------------------------------
OBJ.SetX2Y2 >STYA ZPObjPtr
ldy #S.OBJ.W
lda (ZPObjPtr),y
clc
sbc #0
pha
iny
lda (ZPObjPtr),y
sbc #0
tax
pla
clc
ldy #S.OBJ.X1
adc (ZPObjPtr),y
pha
txa
iny
adc (ZPObjPtr),y
ldy #S.OBJ.X2+1
sta (ZPObjPtr),y
dey
pla
sta (ZPObjPtr),y
ldy #S.OBJ.H
lda (ZPObjPtr),y
clc
sbc #0
pha
iny
lda (ZPObjPtr),y
sbc #0
tax
pla
clc
ldy #S.OBJ.Y1
adc (ZPObjPtr),y
pha
txa
iny
adc (ZPObjPtr),y
ldy #S.OBJ.Y2+1
sta (ZPObjPtr),y
dey
pla
sta (ZPObjPtr),y
rts
*--------------------------------------
CB.ClearCache ldx #S.CB-1
.1 stz CB.Cache,x
@ -355,6 +276,69 @@ GFXWrite.YA pha
>SYSCALL2 IOCTL
rts
*--------------------------------------
OBJ.GetInCache >STYA .1+1
ldx #S.OBJ-1
.1 lda $ffff,x SELF MODIFIED
sta OBJ.Cache,x
dex
bpl .1
rts
*--------------------------------------
OBJ.SetX2Y2 >STYA ZPPtr1
ldy #S.OBJ.W
lda (ZPPtr1),y
clc
sbc #0
pha
iny
lda (ZPPtr1),y
sbc #0
tax
pla
clc
ldy #S.OBJ.X1
adc (ZPPtr1),y
pha
txa
iny
adc (ZPPtr1),y
ldy #S.OBJ.X2+1
sta (ZPPtr1),y
dey
pla
sta (ZPPtr1),y
ldy #S.OBJ.H
lda (ZPPtr1),y
clc
sbc #0
pha
iny
lda (ZPPtr1),y
sbc #0
tax
pla
clc
ldy #S.OBJ.Y1
adc (ZPPtr1),y
pha
txa
iny
adc (ZPPtr1),y
ldy #S.OBJ.Y2+1
sta (ZPPtr1),y
dey
pla
sta (ZPPtr1),y
rts
*--------------------------------------
.INB usr/src/lib/libgui.s.bm
.INB usr/src/lib/libgui.s.but
.INB usr/src/lib/libgui.s.clip
@ -372,7 +356,6 @@ CS.END
.INB usr/src/lib/libgui.g.bm
.INB usr/src/lib/libgui.g.cur
.INB usr/src/lib/libgui.g.fon
.INB usr/src/lib/libgui.g.wnd
*--------------------------------------
DEVNAME.GFX .AZ "/dev/gfx"
DEVNAME.MOUSE .AZ "/dev/mou1"
@ -408,26 +391,31 @@ MOUSEDATA .BS S.MOUSE
*--------------------------------------
MouseClamp .BS 8
*--------------------------------------
CB.Buf .BS S.CB
CB.PTR .DA #S.CB.CMD.BITBLT
.BS 1 S.CB.OP
.DA #S.CB.M.MONO
.DA #0
.BS S.CB-4
*--------------------------------------
CB.Buf .BS S.CB+1 +Ending 0
CB.Cache .BS S.CB
OBJ.Cache .BS S.OBJ
*--------------------------------------
WND.Stack.Top .BS 1
WND.Stack .BS WND.MAX
*--------------------------------------
WND.Screen .DA #S.OBJ.T.WND
.BS S.WND-1
*--------------------------------------
WND.Screen.Childs
.BS 2 WND.Desktop
.BS 2 WND.SysBar
.DA 0
*--------------------------------------
WND.Desktop .DA #S.OBJ.T.WND
.BS S.WND-1
*--------------------------------------
WND.SysBar .DA #S.OBJ.T.WND
.BS S.WND-1
WND.SysBar.Childs
.BS 2 BUT.Sys
.DA 0
WND.SysBar.A2osX.X2
.BS 2
WND.SysBar.Time.X1
.BS 2
*--------------------------------------
BUT.Sys .DA #S.OBJ.T.BUT
.DA #0 F
@ -447,6 +435,7 @@ MENU.Sys .DA #2 ID
.DA #0
*--------------------------------------
PREFS.BESTVIEWEDX .DA #$FC
PREFS.SYSBARCOLOR .DA #C.WHITE
PREFS.MBARXMARGIN .DA #5
PREFS.BORDERCOLOR .DA #C.BLACK
PREFS.TBARCOLORA .DA #C16.D.BLUE

View File

@ -60,10 +60,6 @@ CS.RUN >LIBCALL hLIBGUI,LIBGUI.ShowCursor
CS.RUN.LOOP >SLEEP
* lda A2osX.ASCREEN
* cmp #8
* bne CS.RUN.LOOP
>PUSHW L.MouseData
>LIBCALL hLIBGUI,LIBGUI.ReadMouse
bcs .8
@ -78,23 +74,25 @@ CS.RUN.LOOP >SLEEP
lda MouseData+S.MOUSE.S
.1 bit #S.MOUSE.S.CLK
beq .4
beq .2
>LDA.G CUR.T
inc
inc
cmp #CUR.T.WAIT+2
bne .2
bne .11
lda #CUR.T.ARROW
.2 >STA.G CUR.T
.11 >STA.G CUR.T
>LIBCALL hLIBGUI,LIBGUI.SetCursor
jmp CS.RUN.LOOP
.2 bit #S.MOUSE.S.DCLK
beq .8
jsr WND.Test
.4
.8 jmp CS.RUN.LOOP
clc
@ -146,9 +144,18 @@ WND.Test >PUSHBI S.WND.F.RESIZE+S.WND.F.MOVE+S.WND.F.CLOSE+S.WND.F.MAX+S.WND.F.
lda hWND
>LIBCALL hLIBGUI,LIBGUI.WND.Paint
rts
clc
.9 rts
>PUSHB hWND
>PUSHBI S.CB.OP.SET
>PUSHBI C.BLACK
>PUSHWI 0
>PUSHWI 0
>PUSHWI 300
>PUSHWI 80
>LIBCALL hLIBGUI,LIBGUI.DrawLine
rts
*--------------------------------------
CS.END
LIBGUI .AZ "libgui"

View File

@ -25,4 +25,4 @@ hToDelete .BS 1
.FIN
*--------------------------------------
MAN
SAVE usr/src/bin/x.cpmvrm.g
SAVE usr/src/shared/x.cpmvrm.g

View File

@ -705,6 +705,6 @@ CS.QUIT jsr LeaveSubDir
rts
*--------------------------------------
MAN
SAVE usr/src/bin/x.cpmvrm.s
SAVE usr/src/shared/x.cpmvrm.s
LOAD usr/src/bin/cp.s
ASM

View File

@ -570,6 +570,6 @@ DCB .DA #S.DCB.T.COM
*--------------------------------------
DRV.END
MAN
SAVE usr/src/drv/x.ssc.drv.s
SAVE usr/src/shared/x.ssc.drv.s
LOAD usr/src/drv/ssc.i.drv.s
ASM

View File

@ -36,4 +36,4 @@ TWIST .DA #%00000000,#%10000000,#%01000000,#%11000000,#%00100000,#%10100000,#%
.DA #%00011111,#%10011111,#%01011111,#%11011111,#%00111111,#%10111111,#%01111111,#%11111111
*--------------------------------------
MAN
SAVE USR/SRC/SHARED/X.TWIST.G
SAVE usr/src/shared/x.twist.g