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

@ -2,7 +2,7 @@ NEW
AUTO 3,1
*--------------------------------------
* BitBlt
* S.CB.X1 : Destination X (screen)
* S.CB.X1 : Destination X (screen)
* S.CB.Y1 : Destination Y (screen)
* S.CB.DstX : X1 in bitmap/mask
* S.CB.DstY : Y1 in bitmap/mask

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,79 +1,7 @@
NEW
AUTO 3,1
*--------------------------------------
DrawCBBufToYA ldx L.CB.Buf
stx ZPCBPtr
ldx L.CB.Buf+1
stx ZPCBPtr+1
DrawCBPtrToYA jsr OBJ.GetInCache
bit CUR.bVisible
bpl .1
jsr HideCursor.I
.1 lda (ZPCBPtr)
beq .8
>LDYA ZPCBPtr
jsr CB.GetInCache A = CB.CMD
cmp #S.CB.CMD.DRAWTEXT2
bne .6
lda #S.CB.CMD.DRAWTEXT+S.CB.CMD.OSD
sta CB.Cache+S.CB.CMD
jsr GFXWrite.CB
bcs .9
jsr CLIP.CB.Cache
bcs .2
jsr GFXWrite.CB
.2 lda CB.Cache+S.CB.SrcPtr
>SYSCALL2 FreeStkObj
bra .7
.6 jsr CLIP.CB.Cache
bcs .7
jsr GFXWrite.CB
.7 lda (ZPCBPtr) Get Cmd
lsr
tax
lda CB.CmdLen-1,x
sec +1
adc ZPCBPtr
sta ZPCBPtr
bcc .1
inc ZPCBPtr+1
bra .1
.8 clc
.9 bit CUR.bVisible
bpl .99
php
pha
jsr ShowCursor.I
pla
plp
.99 rts
*--------------------------------------
* In: Control Block in CB.Cache
* CMD
* OP
* MODE
* COLOR
* X1
* Y1
* X2
* Y2
* 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
@ -85,6 +13,9 @@ DrawLine >PULLW CB.Cache+S.CB.Y2
>PULLA hWND
>SYSCALL2 GetMemPtr
>STYA ZPWNDPtr
jsr DRAW.ToGlobal
jsr DRAW.GetInnerW
lda CB.Cache+S.CB.X2
sec
@ -98,15 +29,11 @@ DrawLine >PULLW CB.Cache+S.CB.Y2
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
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
lda CB.Cache+S.CB.Y1
ldx CB.Cache+S.CB.Y2
stx CB.Cache+S.CB.Y1
sta CB.Cache+S.CB.Y2
>SWAP16 CB.Cache+S.CB.Y1,CB.Cache+S.CB.Y2
>NOT16 DX swap X1/X2, Y1/Y2, set DX=-DX (DX positive)
@ -117,22 +44,33 @@ DrawLine >PULLW 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
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
sta CB.Cache+S.CB.CMD
jmp GFXWrite.CB DY=0 : HLIN X1,X2 At Y1
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 lda #S.CB.CMD.SETPIXEL
.4 jsr CLIP.Line
bcs .8
lda #S.CB.CMD.SETPIXEL
sta CB.Cache+S.CB.CMD
jsr GFXWrite.CB
lda DX
@ -140,13 +78,14 @@ DrawLine >PULLW CB.Cache+S.CB.Y2
sbc DY
tax
lda DX+1
* sbc DY+1
sbc #0
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
jmp DrawLine.IncX DY is lower than DX, we will increase on X axis
*--------------------------------------
DrawLine.IncXY lda DX DX=DY
eor #$ff
sta Counter
@ -156,10 +95,13 @@ DrawLine.IncXY lda DX DX=DY
.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
@ -167,8 +109,9 @@ DrawLine.IncXY lda DX DX=DY
sta CB.Cache+S.CB.Y1
jsr GFXWrite.CB
bra .1
.8 rts
.8 rts
*--------------------------------------
DrawLine.IncY lda DY
eor #$ff
sta Counter
@ -205,6 +148,7 @@ DrawLine.IncY lda DY
txa
rol
sta INE+1
.1 inc Counter
bne .2
@ -243,7 +187,7 @@ DrawLine.IncY lda DY
bra .1
.8 rts
*--------------------------------------
DrawLine.IncX lda DX
eor #$ff
sta Counter
@ -280,6 +224,7 @@ DrawLine.IncX lda DX
txa
rol
sta INE+1
.1 inc Counter
bne .2
@ -309,6 +254,7 @@ DrawLine.IncX lda DX
lda D+1
adc IE+1
sta D+1
.5 inc CB.Cache+S.CB.X1 X1=X1+1
bne .6
@ -319,6 +265,159 @@ DrawLine.IncX lda DX
.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 bit CUR.bVisible
bpl .10
pha
phy
jsr HideCursor.I
ply
pla
.10 jsr OBJ.GetInCache
.1 lda (ZPCBPtr)
beq .8
>LDYA ZPCBPtr
jsr CB.GetInCache A = CB.CMD
cmp #S.CB.CMD.DRAWTEXT2
bne .6
lda #S.CB.CMD.DRAWTEXT+S.CB.CMD.OSD
sta CB.Cache+S.CB.CMD
jsr GFXWrite.CB
bcs .9
jsr CLIP.CB.Cache
bcs .2
jsr GFXWrite.CB
.2 lda CB.Cache+S.CB.SrcPtr
>SYSCALL2 FreeStkObj
bra .7
.6 jsr CLIP.CB.Cache
bcs .7
jsr GFXWrite.CB
.7 lda (ZPCBPtr) Get Cmd
lsr
tax
lda CB.CmdLen-1,x
sec +1
adc ZPCBPtr
sta ZPCBPtr
bcc .1
inc ZPCBPtr+1
bra .1
.8 clc
.9 bit CUR.bVisible
bpl .99
php
pha
jsr ShowCursor.I
pla
plp
.99 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,34 +25,30 @@ 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
@ -60,6 +56,8 @@ WND.Setup >LDYA DCB.GFX+S.DCB.GFX.W
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 #E.OOH
>RET 9
lda #S.OBJ.T.WND
.10 lda #S.OBJ.T.WND
sta (ZPWNDPtr) S.OBJ.T
ldy #S.WND-1
@ -141,6 +142,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
@ -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,22 +74,24 @@ 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
jsr WND.Test
.2 bit #S.MOUSE.S.DCLK
beq .8
.4
jsr WND.Test
.8 jmp CS.RUN.LOOP
@ -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