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

View File

@ -2,7 +2,7 @@ NEW
AUTO 3,1 AUTO 3,1
*-------------------------------------- *--------------------------------------
* BitBlt * BitBlt
* S.CB.X1 : Destination X (screen) * S.CB.X1 : Destination X (screen)
* S.CB.Y1 : Destination Y (screen) * S.CB.Y1 : Destination Y (screen)
* S.CB.DstX : X1 in bitmap/mask * S.CB.DstX : X1 in bitmap/mask
* S.CB.DstY : Y1 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.S.CB.FONT : hFont
* S.CB.SrcPtr : Ptr to Text * S.CB.SrcPtr : Ptr to Text
* Out: * Out:
* A,X = Width * S.CB.SrcW = Width
* Y = Height * S.CB.SrcH = Height
*-------------------------------------- *--------------------------------------
OSD.GETTEXTSIZE clc OSD.GETTEXTSIZE clc
php php

View File

@ -4,7 +4,7 @@ NEW
IO.D2.SeekTimeR .EQ 160 LIBBLKDEV Recalibration IO.D2.SeekTimeR .EQ 160 LIBBLKDEV Recalibration
IO.D2.SeekTimeF .EQ 140 LIBBLKDEV Track Formatter IO.D2.SeekTimeF .EQ 140 LIBBLKDEV Track Formatter
IO.D2.SeekTimeB .EQ 140 LIBBLKDEV Boot Block 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.SeekTimeI .EQ 20 ProDOS.FX increment -> until > 128
*-------------------------------------- *--------------------------------------
IO.D2.Ph0Off .EQ $C080 IO.D2.Ph0Off .EQ $C080

View File

@ -92,9 +92,8 @@ S.OBJ.X2 .EQ 12
S.OBJ.Y2 .EQ 14 S.OBJ.Y2 .EQ 14
S.OBJ.W .EQ 16 S.OBJ.W .EQ 16
S.OBJ.H .EQ 18 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.RESIZE .EQ %00000001
S.WND.F.MOVE .EQ %00000010 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. bmi BB.Trk2Qtrk.RTS branch if can't fine/read sector.
clc indicate reading header. clc indicate reading header.
ldy #0 Retry cnt waiting D5
rddata php carry set if reading sector. rddata php carry set if reading sector.
rd0 dey every time y=0 decrement find count. 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.Wait5
.DA #8,#7 CUR.Wait6 .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.SaveBuf .BS 64 16*4
*-------------------------------------- *--------------------------------------
CUR.Arrow .DA #S.BM.F.BBP1 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.BOTTOM .EQ 4
CLIP.Line.TOP .EQ 8 CLIP.Line.TOP .EQ 8
*-------------------------------------- *--------------------------------------
CLIP.Line jsr CLIP.Line.EncodeP1 CLIP.Line
* >DEBUG
jsr CLIP.Line.EncodeP1
jsr CLIP.Line.EncodeP2 jsr CLIP.Line.EncodeP2
.1 lda CLIP.Line.P1 .1 lda CLIP.Line.P1
ora CLIP.Line.P2 ora CLIP.Line.P2
beq .88 beq .88
lda CLIP.Line.P1 lda CLIP.Line.P1
and CLIP.Line.P2 and CLIP.Line.P2
bne .99 bne .99
lda CLIP.Line.P1 lda CLIP.Line.P1
beq .5 beq .5
bit #CLIP.Line.TOP bit #CLIP.Line.TOP
beq .2 beq .2
* Y1 is above S.CB.Y1.... * Y1 is above S.CB.Y1....
* DY=Y2-Y1; * DY=Y2-Y1;
jsr CLIP.Line.EncodeP1 jsr CLIP.Line.EncodeP1
bra .1 bra .1
.2 bit #CLIP.Line.BOTTOM .2 bit #CLIP.Line.BOTTOM
beq .3 beq .3
* Y1 is below S.CB.Y2.... * Y1 is below S.CB.Y2....
jsr CLIP.Line.EncodeP1 jsr CLIP.Line.EncodeP1
bra .1 bra .1
.3 bit #CLIP.Line.RIGHT .3 bit #CLIP.Line.RIGHT
beq .4 beq .4
* X1 is after S.CB.X2.... * X1 is after S.CB.X2....
jsr CLIP.Line.EncodeP1 jsr CLIP.Line.EncodeP1
bra .1 bra .1
* X1 is before S.CB.X1.... * X1 is before S.CB.X1....
.4
jsr CLIP.Line.EncodeP1 .4 jsr CLIP.Line.EncodeP1
bra .1 bra .1
* P2 * P2
.5 lda CLIP.Line.P2 .5 lda CLIP.Line.P2
bit #CLIP.Line.TOP bit #CLIP.Line.TOP
beq .6 beq .6
* Y2 is above S.CB.Y1.... * Y2 is above S.CB.Y1....
jsr CLIP.Line.EncodeP2 jsr CLIP.Line.EncodeP2
bra .1 bra .1
.6 bit #CLIP.Line.BOTTOM .6 bit #CLIP.Line.BOTTOM
beq .7 beq .7
* Y2 is below S.CB.Y2.... * Y2 is below S.CB.Y2....
jsr CLIP.Line.EncodeP2 jsr CLIP.Line.EncodeP2
bra .1 bra .1
.7 bit #CLIP.Line.RIGHT .7 bit #CLIP.Line.RIGHT
beq .8 beq .8
* X2 is after S.CB.X2.... * X2 is after S.CB.X2....
jsr CLIP.Line.EncodeP2 jsr CLIP.Line.EncodeP2
bra .1 bra .1
* X2 is before S.CB.X1.... * X2 is before S.CB.X1....
.8
jsr CLIP.Line.EncodeP2 .8 jsr CLIP.Line.EncodeP2
bra .1 bra .1
.88 clc .88 clc
rts rts
@ -315,30 +341,38 @@ CLIP.Line.EncodeX.AX
pha pha
>SCMPAX OBJ.Cache+S.OBJ.X1 >SCMPAX OBJ.Cache+S.OBJ.X1
bmi .1 bmi .1
tya tya
ora #CLIP.Line.LEFT ora #CLIP.Line.LEFT
plx plx
rts rts
.1 pla .1 pla
>SCMPAX OBJ.Cache+S.OBJ.X1 >SCMPAX OBJ.Cache+S.OBJ.X2
bpl .8 bpl .8
tya tya
ora #CLIP.Line.RIGHT ora #CLIP.Line.RIGHT
.8 rts .8 rts
*-------------------------------------- *--------------------------------------
CLIP.Line.EncodeY.AX CLIP.Line.EncodeY.AX
pha pha
>SCMPAX OBJ.Cache+S.OBJ.Y1 >SCMPAX OBJ.Cache+S.OBJ.Y1
bmi .1 bmi .1
tya tya
ora #CLIP.Line.TOP ora #CLIP.Line.TOP
plx plx
rts rts
.1 pla .1 pla
>SCMPAX OBJ.Cache+S.OBJ.Y1 >SCMPAX OBJ.Cache+S.OBJ.Y2
bpl .8 bpl .8
tya tya
ora #CLIP.Line.BOTTOM ora #CLIP.Line.BOTTOM
.8 rts .8 rts
*-------------------------------------- *--------------------------------------
CB.Cache.SetX2Y2 CB.Cache.SetX2Y2

View File

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

View File

@ -1,79 +1,7 @@
NEW NEW
AUTO 3,1 AUTO 3,1
*-------------------------------------- *--------------------------------------
DrawCBBufToYA ldx L.CB.Buf * drawline(short int hWND, short int OP, short int COLOR, int X1, int Y1, int X2, int X2)
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 >PULLW CB.Cache+S.CB.Y2 DrawLine >PULLW CB.Cache+S.CB.Y2
>PULLW CB.Cache+S.CB.X2 >PULLW CB.Cache+S.CB.X2
@ -85,6 +13,9 @@ DrawLine >PULLW CB.Cache+S.CB.Y2
>PULLA hWND >PULLA hWND
>SYSCALL2 GetMemPtr >SYSCALL2 GetMemPtr
>STYA ZPWNDPtr >STYA ZPWNDPtr
jsr DRAW.ToGlobal
jsr DRAW.GetInnerW
lda CB.Cache+S.CB.X2 lda CB.Cache+S.CB.X2
sec sec
@ -98,15 +29,11 @@ DrawLine >PULLW CB.Cache+S.CB.Y2
ora DX ora DX
bne .2 DX > 0... bne .2 DX > 0...
lda #S.CB.CMD.VLINE lda #S.CB.CMD.VLINE DX=0 : VLINE Y1,Y2 At X1
sta CB.Cache+S.CB.CMD bra .20
jmp GFXWrite.CB DX=0 : VLIN Y1,Y2 At X1 *--------------------------------------
.1 >SWAP16 CB.Cache+S.CB.X1,CB.Cache+S.CB.X2 .1 >SWAP16 CB.Cache+S.CB.X1,CB.Cache+S.CB.X2
* >SWAP16 CB.Cache+S.CB.Y1,CB.Cache+S.CB.Y2 >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) >NOT16 DX swap X1/X2, Y1/Y2, set DX=-DX (DX positive)
@ -117,22 +44,33 @@ DrawLine >PULLW CB.Cache+S.CB.Y2
sec sec
sbc CB.Cache+S.CB.Y1 sbc CB.Cache+S.CB.Y1
sta DY sta DY
* lda CB.Cache+S.CB.Y2+1 lda CB.Cache+S.CB.Y2+1
lda #0 sbc CB.Cache+S.CB.Y1+1
* sbc CB.Cache+S.CB.Y1+1
sbc #0
sta DY+1 DY = Y2 - Y1 sta DY+1 DY = Y2 - Y1
bmi .3 DY < 0 ... bmi .3 DY < 0 ...
ora DY ora DY
bne .4 bne .4
lda #S.CB.CMD.HLINE
sta CB.Cache+S.CB.CMD lda #S.CB.CMD.HLINE DY=0 : HLINE X1,X2 At Y1
jmp GFXWrite.CB DY=0 : HLIN 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 .3 >NOT16 DY set DY=-DY
lda #$ff lda #$ff
sta IY set IY=-1 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 sta CB.Cache+S.CB.CMD
jsr GFXWrite.CB jsr GFXWrite.CB
lda DX lda DX
@ -140,13 +78,14 @@ DrawLine >PULLW CB.Cache+S.CB.Y2
sbc DY sbc DY
tax tax
lda DX+1 lda DX+1
* sbc DY+1 sbc DY+1
sbc #0
bmi DrawLine.IncY DY is greater than DX, we will increase on Y axis bmi DrawLine.IncY DY is greater than DX, we will increase on Y axis
txa txa
beq DrawLine.IncXY DX=DY, go inc X & Y 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 DrawLine.IncXY lda DX DX=DY
eor #$ff eor #$ff
sta Counter sta Counter
@ -156,10 +95,13 @@ DrawLine.IncXY lda DX DX=DY
.1 inc Counter .1 inc Counter
bne .2 bne .2
inc Counter+1 inc Counter+1
beq .8 beq .8
.2 inc CB.Cache+S.CB.X1 .2 inc CB.Cache+S.CB.X1
bne .3 bne .3
inc CB.Cache+S.CB.X1+1 inc CB.Cache+S.CB.X1+1
.3 lda CB.Cache+S.CB.Y1 Y1=Y1+IY .3 lda CB.Cache+S.CB.Y1 Y1=Y1+IY
clc clc
@ -167,8 +109,9 @@ DrawLine.IncXY lda DX DX=DY
sta CB.Cache+S.CB.Y1 sta CB.Cache+S.CB.Y1
jsr GFXWrite.CB jsr GFXWrite.CB
bra .1 bra .1
.8 rts
.8 rts
*--------------------------------------
DrawLine.IncY lda DY DrawLine.IncY lda DY
eor #$ff eor #$ff
sta Counter sta Counter
@ -205,6 +148,7 @@ DrawLine.IncY lda DY
txa txa
rol rol
sta INE+1 sta INE+1
.1 inc Counter .1 inc Counter
bne .2 bne .2
@ -243,7 +187,7 @@ DrawLine.IncY lda DY
bra .1 bra .1
.8 rts .8 rts
*--------------------------------------
DrawLine.IncX lda DX DrawLine.IncX lda DX
eor #$ff eor #$ff
sta Counter sta Counter
@ -280,6 +224,7 @@ DrawLine.IncX lda DX
txa txa
rol rol
sta INE+1 sta INE+1
.1 inc Counter .1 inc Counter
bne .2 bne .2
@ -309,6 +254,7 @@ DrawLine.IncX lda DX
lda D+1 lda D+1
adc IE+1 adc IE+1
sta D+1 sta D+1
.5 inc CB.Cache+S.CB.X1 X1=X1+1 .5 inc CB.Cache+S.CB.X1 X1=X1+1
bne .6 bne .6
@ -319,6 +265,159 @@ DrawLine.IncX lda DX
.8 rts .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 MAN
SAVE usr/src/lib/libgui.s.draw SAVE usr/src/lib/libgui.s.draw
LOAD usr/src/lib/libgui.s LOAD usr/src/lib/libgui.s

View File

@ -43,7 +43,7 @@ MOU.Setup lda DCB.GFX+S.DCB.GFX.W+1
bcs .9 bcs .9
>LDYA L.CUR.SaveBuf >LDYA L.CUR.SaveBuf
>STYA CUR.CB+S.CB.DstPtr >STYA CB.PTR+S.CB.DstPtr
* clc * clc
.9 rts .9 rts
@ -59,26 +59,91 @@ MOU.Quit lda hDevMouse
.8 clc .8 clc
rts rts
*-------------------------------------- *--------------------------------------
MOU.ReadMouse >PULLYA MOU.ReadMouse >PULLW ZPPtr1
ldx A2osX.ASCREEN GUI screen active ? lda A2osX.ASCREEN GUI screen active ?
cpx DCB.GFX+S.DCB.GFX.DEVID cmp DCB.GFX+S.DCB.GFX.DEVID
bne .9 no, exit.... bne .9 no, exit....
ldx hDevMouse lda hDevMouse
beq .9 beq .9
pha
txa
>PUSHA >PUSHA
>PUSHBI IOCTL.READ >PUSHBI IOCTL.READ
pla >PUSHW ZPPtr1
>PUSHYA
>SYSCALL2 IOCTL >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 rts
.9 sec .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 rts
*-------------------------------------- *--------------------------------------
MAN MAN

View File

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

View File

@ -128,26 +128,6 @@ CS.START cld
.DA WND.Paint .DA WND.Paint
L.WND.fPaint .DA WND.fPaint 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.GFX .DA DEVNAME.GFX
L.DEVNAME.MOUSE .DA DEVNAME.MOUSE L.DEVNAME.MOUSE .DA DEVNAME.MOUSE
L.SYSX7 .DA SYSX7 L.SYSX7 .DA SYSX7
@ -155,8 +135,10 @@ L.SYSX7B .DA SYSX7B
L.IOCTL .DA IOCTL L.IOCTL .DA IOCTL
L.DCB.GFX .DA DCB.GFX L.DCB.GFX .DA DCB.GFX
L.MouseClamp .DA MouseClamp L.MouseClamp .DA MouseClamp
L.CB.PTR .DA CB.PTR
L.CB.Buf .DA CB.Buf L.CB.Buf .DA CB.Buf
L.CB.Cache .DA CB.Cache L.CB.Cache .DA CB.Cache
L.OBJ.Cache .DA OBJ.Cache
L.WND.Screen .DA WND.Screen L.WND.Screen .DA WND.Screen
L.WND.Desktop .DA WND.Desktop L.WND.Desktop .DA WND.Desktop
L.WND.SysBar .DA WND.SysBar L.WND.SysBar .DA WND.SysBar
@ -166,7 +148,6 @@ L.BM.Close .DA BM.Close
L.BM.Max .DA BM.Max L.BM.Max .DA BM.Max
L.BM.Min .DA BM.Min L.BM.Min .DA BM.Min
*-------------------------------------- *--------------------------------------
L.CUR.CB .DA CUR.CB
L.CUR.SaveBuf .DA CUR.SaveBuf L.CUR.SaveBuf .DA CUR.SaveBuf
L.Cursors .DA CUR.Arrow L.Cursors .DA CUR.Arrow
.DA CUR.ResizeX .DA CUR.ResizeX
@ -230,66 +211,6 @@ LIB.UNLOAD dec LibCount
.8 clc .8 clc
rts 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 CB.ClearCache ldx #S.CB-1
.1 stz CB.Cache,x .1 stz CB.Cache,x
@ -355,6 +276,69 @@ GFXWrite.YA pha
>SYSCALL2 IOCTL >SYSCALL2 IOCTL
rts 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.bm
.INB usr/src/lib/libgui.s.but .INB usr/src/lib/libgui.s.but
.INB usr/src/lib/libgui.s.clip .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.bm
.INB usr/src/lib/libgui.g.cur .INB usr/src/lib/libgui.g.cur
.INB usr/src/lib/libgui.g.fon .INB usr/src/lib/libgui.g.fon
.INB usr/src/lib/libgui.g.wnd
*-------------------------------------- *--------------------------------------
DEVNAME.GFX .AZ "/dev/gfx" DEVNAME.GFX .AZ "/dev/gfx"
DEVNAME.MOUSE .AZ "/dev/mou1" DEVNAME.MOUSE .AZ "/dev/mou1"
@ -408,26 +391,31 @@ MOUSEDATA .BS S.MOUSE
*-------------------------------------- *--------------------------------------
MouseClamp .BS 8 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 CB.Cache .BS S.CB
OBJ.Cache .BS S.OBJ OBJ.Cache .BS S.OBJ
*-------------------------------------- *--------------------------------------
WND.Stack.Top .BS 1
WND.Stack .BS WND.MAX
*--------------------------------------
WND.Screen .DA #S.OBJ.T.WND WND.Screen .DA #S.OBJ.T.WND
.BS S.WND-1 .BS S.WND-1
*-------------------------------------- *--------------------------------------
WND.Screen.Childs
.BS 2 WND.Desktop
.BS 2 WND.SysBar
.DA 0
*--------------------------------------
WND.Desktop .DA #S.OBJ.T.WND WND.Desktop .DA #S.OBJ.T.WND
.BS S.WND-1 .BS S.WND-1
*-------------------------------------- *--------------------------------------
WND.SysBar .DA #S.OBJ.T.WND WND.SysBar .DA #S.OBJ.T.WND
.BS S.WND-1 .BS S.WND-1
WND.SysBar.Childs WND.SysBar.A2osX.X2
.BS 2 BUT.Sys .BS 2
.DA 0 WND.SysBar.Time.X1
.BS 2
*-------------------------------------- *--------------------------------------
BUT.Sys .DA #S.OBJ.T.BUT BUT.Sys .DA #S.OBJ.T.BUT
.DA #0 F .DA #0 F
@ -447,6 +435,7 @@ MENU.Sys .DA #2 ID
.DA #0 .DA #0
*-------------------------------------- *--------------------------------------
PREFS.BESTVIEWEDX .DA #$FC PREFS.BESTVIEWEDX .DA #$FC
PREFS.SYSBARCOLOR .DA #C.WHITE
PREFS.MBARXMARGIN .DA #5 PREFS.MBARXMARGIN .DA #5
PREFS.BORDERCOLOR .DA #C.BLACK PREFS.BORDERCOLOR .DA #C.BLACK
PREFS.TBARCOLORA .DA #C16.D.BLUE PREFS.TBARCOLORA .DA #C16.D.BLUE

View File

@ -60,10 +60,6 @@ CS.RUN >LIBCALL hLIBGUI,LIBGUI.ShowCursor
CS.RUN.LOOP >SLEEP CS.RUN.LOOP >SLEEP
* lda A2osX.ASCREEN
* cmp #8
* bne CS.RUN.LOOP
>PUSHW L.MouseData >PUSHW L.MouseData
>LIBCALL hLIBGUI,LIBGUI.ReadMouse >LIBCALL hLIBGUI,LIBGUI.ReadMouse
bcs .8 bcs .8
@ -78,22 +74,24 @@ CS.RUN.LOOP >SLEEP
lda MouseData+S.MOUSE.S lda MouseData+S.MOUSE.S
.1 bit #S.MOUSE.S.CLK .1 bit #S.MOUSE.S.CLK
beq .4 beq .2
>LDA.G CUR.T >LDA.G CUR.T
inc inc
inc inc
cmp #CUR.T.WAIT+2 cmp #CUR.T.WAIT+2
bne .2 bne .11
lda #CUR.T.ARROW lda #CUR.T.ARROW
.2 >STA.G CUR.T .11 >STA.G CUR.T
>LIBCALL hLIBGUI,LIBGUI.SetCursor >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 .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 lda hWND
>LIBCALL hLIBGUI,LIBGUI.WND.Paint >LIBCALL hLIBGUI,LIBGUI.WND.Paint
rts
clc >PUSHB hWND
.9 rts >PUSHBI S.CB.OP.SET
>PUSHBI C.BLACK
>PUSHWI 0
>PUSHWI 0
>PUSHWI 300
>PUSHWI 80
>LIBCALL hLIBGUI,LIBGUI.DrawLine
rts
*-------------------------------------- *--------------------------------------
CS.END CS.END
LIBGUI .AZ "libgui" LIBGUI .AZ "libgui"

View File

@ -25,4 +25,4 @@ hToDelete .BS 1
.FIN .FIN
*-------------------------------------- *--------------------------------------
MAN 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 rts
*-------------------------------------- *--------------------------------------
MAN MAN
SAVE usr/src/bin/x.cpmvrm.s SAVE usr/src/shared/x.cpmvrm.s
LOAD usr/src/bin/cp.s LOAD usr/src/bin/cp.s
ASM ASM

View File

@ -570,6 +570,6 @@ DCB .DA #S.DCB.T.COM
*-------------------------------------- *--------------------------------------
DRV.END DRV.END
MAN 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 LOAD usr/src/drv/ssc.i.drv.s
ASM ASM

View File

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