Kernel 0.94

This commit is contained in:
Rémy GIBERT 2020-09-03 17:19:25 +02:00
parent c341281864
commit fada39d2c5
11 changed files with 175 additions and 139 deletions

Binary file not shown.

View File

@ -2,7 +2,7 @@ NEW
AUTO 3,1
.LIST OFF
*--------------------------------------
CFG.EtcFiles >LDYAI 256
ETC.ReadFiles >LDYAI 256
>SYSCALL GetMem
bcc .1
rts
@ -27,8 +27,11 @@ CFG.EtcFiles >LDYAI 256
lda IPCFG+S.IPCFG.IP
beq .5
lda #S.IPCFG.STATUS.OK
sta IPCFG+S.NETCFG.STATUS
stz bDHCP
.5 >LDYA L.HOSTS
jsr CFG.Read.PrintF
jsr CFG.Read.HOSTS

View File

@ -189,7 +189,7 @@ CS.RUN.SETUP
lda bETC
bpl .6
jsr CFG.EtcFiles
jsr ETC.ReadFiles
.6 lda bDHCP
bpl .8

View File

@ -49,6 +49,7 @@ S.CB.CMD.GETRECTBUFSIZE .EQ 14
S.CB.CMD.DRAWTEXT .EQ 16
S.CB.CMD.GETTEXTSIZE .EQ 18
S.CB.CMD.DRAWLINE .EQ 20
S.CB.CMD.DRAWTEXT2 .EQ 22
S.CB.CMD.OSD .EQ 128
S.CB.OP .EQ 1
S.CB.OP.XOR .EQ 0 screen EOR bitmap -> Screen

View File

@ -8,6 +8,7 @@ LIBGUI.HideCursor .EQ 10
LIBGUI.ShowCursor .EQ 12
LIBGUI.UpdateCursor .EQ 14
LIBGUI.ReadMouse .EQ 16
LIBGUI.GetScreenGC .EQ 18
*--------------------------------------
CUR.T.ARROW .EQ 0
CUR.T.RESIZEX .EQ 2
@ -69,13 +70,14 @@ 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.Parent .EQ 20
S.OBJ.Childs .EQ 22
*
S.OBJ .EQ 22
S.OBJ .EQ 24
*--------------------------------------
S.SCREEN.hDEV .EQ S.OBJ
S.SCREEN.hDEV .EQ S.OBJ.Parent
*
S.SCREEN .EQ S.OBJ+1
S.SCREEN .EQ S.OBJ
*--------------------------------------
S.WND.F.RESIZE .EQ %00000001
S.WND.F.MOVE .EQ %00000010
@ -153,6 +155,4 @@ S.TEXT.TEXT .EQ S.OBJ+8
* ...
*--------------------------------------
MAN
SAVE inc/libgui.i
LOAD usr/src/lib/libgui.s
ASM
SAVE inc/libgui.i

View File

@ -10,19 +10,27 @@ NEW
* CS : CB.Cache invisible
*--------------------------------------
CLIP.YA jsr CB.Get
ldx CB.Cache+S.CB.CMD
CLIP.CB.Cache ldx CB.Cache+S.CB.CMD
bpl CLIP.X
txa
and #$7F
tax
CLIP.X jmp (J.CLIP-2,x)
*--------------------------------------
CLIP.Point
CLIP.HLine
CLIP.VLine
clc
rts
*--------------------------------------
CLIP.Rect
CLIP.Text
* >DEBUG
clc
rts
*--------------------------------------
@ -48,6 +56,7 @@ CLIP.BitBlt lda CB.Cache+S.CB.DstX
lda OBJ.Cache+S.OBJ.X1+1
sbc CB.Cache+S.CB.DstX+1
sta D+1 ....always positive
lda CB.Cache+S.CB.SrcW S.CB.SrcW-=D
sec
sbc D
@ -56,6 +65,7 @@ CLIP.BitBlt lda CB.Cache+S.CB.DstX
sbc D+1
sta CB.Cache+S.CB.SrcW+1
bcc CLIP.BitBlt.99 Negative!!!! nothing to do,exit...
lda CB.Cache+S.CB.DstX S.CB.DstX+=D
clc
adc D
@ -81,7 +91,9 @@ CLIP.BitBlt lda CB.Cache+S.CB.DstX
sbc CB.Cache+S.CB.DstX+1
inx
bne .2
inc
.2 tay
cpx CB.Cache+S.CB.SrcW
sbc CB.Cache+S.CB.SrcW+1
@ -89,17 +101,21 @@ CLIP.BitBlt lda CB.Cache+S.CB.DstX
stx CB.Cache+S.CB.SrcW SrcW < D, make SrcW=D
sty CB.Cache+S.CB.SrcW+1
CLIP.BitBlt.Y lda CB.Cache+S.CB.DstY
ldx CB.Cache+S.CB.DstY+1
pha
>SCMPAX OBJ.Cache+S.OBJ.Y2 DestY after Y2....exit
bmi .10
pla
sec
rts
.10 pla
>SCMPAX OBJ.Cache+S.OBJ.Y1
bpl .1 DestY Inside Y1-Y2, go check if Y1+H fit in
* S.CB.DstY above S.OBJ.Y1: D=S.OBJ.Y1-S.CB.DstY, S.CB.SrcH-=D, S.CB.DstY=0, S.CB.Y1+=D
lda OBJ.Cache+S.OBJ.Y1 Compute D....
sec
@ -108,6 +124,7 @@ CLIP.BitBlt.Y lda CB.Cache+S.CB.DstY
lda OBJ.Cache+S.OBJ.Y1+1
sbc CB.Cache+S.CB.DstY+1
sta D+1 ....always positive
lda CB.Cache+S.CB.SrcH S.CB.SrcH-=D
sec
sbc D
@ -116,6 +133,7 @@ CLIP.BitBlt.Y lda CB.Cache+S.CB.DstY
sbc D+1
sta CB.Cache+S.CB.SrcH+1
bcc .99 Negative!!!! nothing to do,exit...
lda CB.Cache+S.CB.DstY Dst.Y+=D
clc
adc D
@ -142,6 +160,7 @@ CLIP.BitBlt.Y lda CB.Cache+S.CB.DstY
inx
bne .2
inc
.2 tay
@ -151,8 +170,10 @@ CLIP.BitBlt.Y lda CB.Cache+S.CB.DstY
stx CB.Cache+S.CB.SrcH SrcH < D, make SrcH=D
sty CB.Cache+S.CB.SrcH+1
.8 clc
rts
.9 pla
.99 sec
rts

View File

@ -5,14 +5,15 @@ Draw >PULLW ZPCBPtr Get CB
>PULLYA Get GC
jsr OBJ.Get
.1 >LDYA ZPCBPtr
jsr CB.Get
ldx CB.Cache+S.CB.CMD Get Cmd
.1 lda (ZPCBPtr)
beq .8
jsr CLIP.X
>LDYA ZPCBPtr
jsr CB.Get
jsr CLIP.CB.Cache
bcs .7
ldx CB.Cache+S.CB.CMD
cpx #S.CB.CMD.DRAWLINE
bcc .2 Native DRV Cmd
@ -23,9 +24,10 @@ Draw >PULLW ZPCBPtr Get CB
.2 jsr GFXWrite.CB
.7 lda (ZPCBPtr) Get Cmd
lsr
tax
lda CB.CmdLen-1,x
sec
sec +1
adc ZPCBPtr
sta ZPCBPtr
bcc .1
@ -36,7 +38,7 @@ Draw >PULLW ZPCBPtr Get CB
.8 clc
.9 rts
Draw.Jmp jmp (J.Cmds-S.CB.CMD.DRAWLINE,x)
Draw.Jmp jmp (J.Cmds-S.CB.CMD.DRAWLINE-2,x)
*--------------------------------------
* In: Control Block in CB.Cache
* CMD
@ -268,7 +270,7 @@ DrawLine.IncX lda DX
bra .1
.8 rts
*--------------------------------------
DrawText jsr GFXWrite.CB
DrawText2 jsr GFXWrite.CB
bcs .9
jsr GFXWrite.CB
lda CB.Cache+S.CB.SrcPtr

View File

@ -42,11 +42,7 @@ MOU.Setup lda DCB.GFX+S.DCB.GFX.W+1
>LDYA L.CUR.SaveBuf
>STYA CUR.CB+S.CB.DstPtr
lda #CUR.T.ARROW
jsr SetCursor
jsr ShowCursor
clc
* clc
.9 rts
*--------------------------------------
MOU.Quit lda hDevMouse

View File

@ -72,9 +72,10 @@ CS.START cld
.DA ShowCursor
.DA UpdateCursor
.DA MOU.ReadMouse
.DA GetScreenGC
*--------------------------------------
J.Cmds .DA DrawLine
.DA DrawText
.DA DrawText2
*--------------------------------------
L.DEVNAME.GFX .DA DEVNAME.GFX
L.DEVNAME.MOUSE .DA DEVNAME.MOUSE
@ -135,6 +136,10 @@ LIB.LOAD lda LibCount
.1 jsr WND.Setup
lda #CUR.T.ARROW
jsr SetCursor
jsr ShowCursor
inc LibCount
.8 clc
@ -211,10 +216,12 @@ OBJ.SetX2Y2 >STYA ZPObjPtr
CB.Get >STYA .1+1
ldx #S.CB-1
.1 lda $ffff,x SELF MODIFIED
sta CB.Cache,x
dex
bpl .1
rts
*--------------------------------------
GFXWrite.CB >LDYA L.CB.Cache
@ -226,6 +233,9 @@ GFXWrite.YA pha
>PUSHYA
>SYSCALL2 IOCTL
rts
*--------------------------------------
GetScreenGC >LDYA L.SCR
rts
*--------------------------------------
.INB usr/src/lib/libgui.s.bm
.INB usr/src/lib/libgui.s.but
@ -264,15 +274,17 @@ Counter .BS 2
CLIP.Line.P1 .BS 1
CLIP.Line.P2 .BS 1
*--------------------------------------
CB.CmdLen .DA S.CB.Y1+1 SETPIXEL
.DA S.CB.Y1+1 GETPIXEL
.DA S.CB.X2+1 HLINE
.DA S.CB.Y2+1 VLINE
.DA S.CB.Y2+1 FILLRECT
.DA S.CB.DstPtr+1 BITBLT
.DA S.CB.DstPtr+1 GETRECTBUFSIZE
.DA S.CB.Y2+1 DRAWLINE
.DA S.CB.TxtPtr+1 DRAWTEXT
CB.CmdLen .DA #S.CB.Y1+1 SETPIXEL
.DA #S.CB.Y1+1 GETPIXEL
.DA #S.CB.X2+1 HLINE
.DA #S.CB.Y2+1 VLINE
.DA #S.CB.Y2+1 FILLRECT
.DA #S.CB.DstPtr+1 BITBLT
.DA #S.CB.DstPtr+1 GETRECTBUFSIZE
.DA #S.CB.TxtPtr+1 DRAWTEXT
.DA #S.CB.TxtPtr+1 GETTEXTSIZE
.DA #S.CB.Y2+1 DRAWLINE
.DA #S.CB.TxtPtr+1 DRAWTEXT2
*--------------------------------------
PAT.Buf .BS 1 S.BM.F
.DA #1 S.BM.RowBytes
@ -290,7 +302,9 @@ MouseClamp .BS 8
CB.Cache .BS S.CB
OBJ.Cache .BS S.OBJ
*--------------------------------------
SCR .BS S.SCREEN S.OBJ.T.SCREEN
SCR .DA #S.OBJ.T.SCREEN
.BS S.SCREEN-1
*--------------------------------------
SCR.Childs .BS 2 WND.Desktop
.BS 2 WND.SysBar
.DA 0

View File

@ -27,15 +27,8 @@ SKT.Socket.DSOCK
stx FD.DSOCK+S.SOCKET.T save type
sta FD.DSOCK+S.SOCKET.PROTO ICMP,UDP,TCP
sty TmpDWord
lda #0 Y = socket.size
>SYSCALL2 GetMem
bcs .9
>STYA ZPTmpPtr1
jsr SKT.Socket.FindFree
bcs .9
bcs SKT.Socket.RTS
ldy #0
@ -44,17 +37,8 @@ SKT.Socket.DSOCK
iny
cpy #FD.DSOCK.SIZE
bne .1
lda #0
.2 sta (ZPTmpPtr1),y
iny
cpy TmpDWord
bne .2
txa
clc
.9 rts
bra SKT.Socket.ZERO
SKT.Socket.SEQPKT
SKT.Socket.STREAM
@ -63,16 +47,9 @@ SKT.Socket.STREAM
stx FD.SSOCK+S.SOCKET.T save type
sta FD.SSOCK+S.SOCKET.PROTO
sty TmpDWord
lda #0 Y = socket.size
>SYSCALL2 GetMem
bcs .9
>STYA ZPTmpPtr1
jsr SKT.Socket.FindFree
bcs .9
bcs SKT.Socket.RTS
ldy #0
@ -82,32 +59,47 @@ SKT.Socket.STREAM
cpy #FD.SSOCK.SIZE
bne .1
lda #0
.2 sta (ZPTmpPtr1),y
SKT.Socket.ZERO lda #0
.1 sta (ZPTmpPtr1),y
iny
cpy TmpDWord
bne .2
bne .1
txa
clc
.9 rts
SKT.Socket.RTS rts
*--------------------------------------
SKT.Socket.FindFree
ldy #0
.1 lda SKT.TABLE,y
sty TmpDWord Y = socket.size
ldx #0
.1 lda SKT.TABLE,x
beq .2
iny
cpy #K.SKTTABLE.SIZE
inx
cpx #K.SKTTABLE.SIZE
bne .1
txa
>SYSCALL2 freemem
lda #E.OOH
sec
* sec
rts
.2 txa
.2 stx .8+1
* lda #0 Y,A = socket.size
>SYSCALL2 GetMem
bcs SKT.Socket.RTS
>STYA ZPTmpPtr1
txa
.8 ldy #$FF SELF MODIFIED
sta SKT.TABLE,y
clc
* clc
rts
*/--------------------------------------
* # Bind
@ -163,6 +155,7 @@ SKT.bind >SYSCALL2 GetMemPtr
lda #ERR.SKT.BUSY
* sec
rts
.7 inx
cpx #K.SKTTABLE.SIZE
bne .2
@ -201,21 +194,21 @@ SKT.connect.SEQPKT
ldy #S.SOCKET.TCP.S
lda (ZPPtrSKT),y
beq .1
cmp #S.SOCKET.TCP.S.ESTBLSH
beq SKT.listen.8
bcs .9
cmp #S.SOCKET.TCP.S.OPENED
beq .2
cmp #S.SOCKET.TCP.S.SYNSENT
beq .99
.9 lda #ERR.SKT.BAD
sec
rts
.1 jsr SKT.SetRemAddr
jsr SKT.NewTCB
bcs SKT.listen.RTS
@ -226,10 +219,10 @@ SKT.connect.SEQPKT
.2 lda #S.TCP.OPTIONS.SYN
jsr TCP.OUT.SendOptA Send SYN
bcs .99
lda #S.SOCKET.TCP.S.SYNSENT
jsr SKT.StoreTCB.S
.99 lda #ERR.SKT.NOCONN
sec
rts
@ -276,10 +269,10 @@ SKT.listen.RTS rts
* ## C
* `hFD Accept(hFD fd);`
* ## ASM
* **In:**
* **In:**
* `lda fd`
* `>LIBCALL hLIBTCPIP,LIBTCPIP.accept`
* ## RETURN VALUE
* ## RETURN VALUE
* A = hSocket
*\--------------------------------------
SKT.Accept >SYSCALL2 GetMemPtr
@ -288,12 +281,33 @@ SKT.Accept >SYSCALL2 GetMemPtr
ldy #S.SOCKET.O
lda (ZPPtrSKT),y
and #S.SOCKET.O.ACCEPTCONN
beq .99
beq SKT.listen.9
*--------------------------------------
SKT.GetFromQueue
ldy #S.SOCKET.HQ.TAIL
lda (ZPPtrSKT),y
iny #S.SOCKET.HQ.HEAD
cmp (ZPPtrSKT),y
beq .9 CS
jmp SKT.GetFromQueue
pha
inc
cmp #S.SOCKET.HQ.MAX
bne .1
lda #0
.1 dey #S.SOCKET.HQ.TAIL
sta (ZPPtrSKT),y
pla
clc
adc #S.SOCKET.HQ
tay
lda (ZPPtrSKT),y
* clc
.99 lda #ERR.SKT.BAD
sec
.9 rts
*/--------------------------------------
* # Shutdown
@ -325,9 +339,9 @@ SKT.shutdown pha
pla
pha
jsr SKT.shutdown.TCP
* bcs SKT.shutdown.RTS
*--------------------------------------
SKT.shutdown.LISTEN
@ -336,7 +350,7 @@ SKT.shutdown.DGRAM
SKT.shutdown.SEQPKT
.1 jsr SKT.GetFromQueue
bcs .3
>SYSCALL2 FreeMem
bra .1
@ -359,7 +373,7 @@ SKT.shutdown.RTS
*--------------------------------------
SKT.shutdown.STREAM
pla
SKT.shutdown.TCP
jsr SKT.GetTCB
ldy #S.SOCKET.TCP.S
@ -827,13 +841,13 @@ SKT.Recv clc
cmp #S.SOCKET.T.SEQPKT
bcc .10
bne .99 STREAM
jsr SKT.CheckTCP
bcs .91
.10 jsr SKT.GetFromQueue
bcs .90
plp if CS, RecvFrom
bcc .9 Exit with CC and A=hFrame
@ -951,7 +965,7 @@ SKT.Send.SEQPKT jsr SKT.CheckTCP
jsr SKT.GetTCB
jsr SKT.CopyDataInToOut
jmp TCP.OUT.SEQSEND
*--------------------------------------
SKT.Send.STREAM lda #ERR.SKT.BAD
@ -1027,7 +1041,7 @@ SKT.EOF.I ldy #S.SOCKET.TCP.INUSED
.9 rts
*--------------------------------------
SKT.CheckStream lda #S.SOCKET.T.STREAM
ldy #S.SOCKET.T
cmp (ZPPtrSKT),y
bne SKT.BAD
@ -1037,13 +1051,13 @@ SKT.CheckTCP ldy #S.SOCKET.O
and #S.SOCKET.O.ACCEPTCONN
bne .99
ldy #S.SOCKET.TCP.S
ldy #S.SOCKET.TCP.S
lda (ZPPtrSKT),y
cmp #S.SOCKET.TCP.S.ESTBLSH
beq .8
bcc .90
lda #MLI.E.IO
* sec
rts
@ -1077,7 +1091,7 @@ SKT.GetTable >LDYA L.SKT.Table
SKT.PullhFDDataInPtrLen
>SYSCALL2 GetMemPtr
>STYA ZPPtrSKT
>PULLW ZPDataInPtr !!!DataOut trashed when sending ACK in TCP.OUT
>PULLW ZPDataInPtr !!!DataOut trashed when sending ACK in TCP.OUT
>PULLW ZPDataInLen !!!use DataInPtr/Len
rts
*--------------------------------------
@ -1120,8 +1134,8 @@ SKT.SetRemAddr ldy #S.SOCKET.REM.PORT+1
rts
*--------------------------------------
* SKT.REM.ADDR = Incoming Frame SRC
* SKT.LOC.ADDR = Incoming Frame DST
* SKT.REM.ADDR = Incoming Frame SRC
* SKT.LOC.ADDR = Incoming Frame DST
*--------------------------------------
SKT.FindMatchingLocRem
ldx #0
@ -1191,7 +1205,7 @@ SKT.FindMatchingLocRem
bne .44
.43 ldy #S.SOCKET.REM.PORT Frame is Broadcast, or listening is 0.0.0.0 check port only
.42 lda (ZPPtrSKT),y
.44 cmp SKT.REM.ADDR+S.SOCKADDR.ADDR-S.SOCKET.REM.ADDR,y
@ -1212,38 +1226,11 @@ SKT.FindMatchingLocRem
* sec
rts
*--------------------------------------
SKT.GetFromQueue
ldy #S.SOCKET.HQ.TAIL
lda (ZPPtrSKT),y
iny #S.SOCKET.HQ.HEAD
cmp (ZPPtrSKT),y
beq .9 CS
pha
inc
cmp #S.SOCKET.HQ.MAX
bne .1
lda #0
.1 dey #S.SOCKET.HQ.TAIL
sta (ZPPtrSKT),y
pla
clc
adc #S.SOCKET.HQ
tay
lda (ZPPtrSKT),y
* clc
.9 rts
*--------------------------------------
SKT.AddToQueueA pha
ldy #S.SOCKET.HQ.HEAD
lda (ZPPtrSKT),y
tax
inc
inc
cmp #S.SOCKET.HQ.MAX
bne .1
@ -1282,20 +1269,20 @@ SKT.NewTCB ldx #S.SOCKET.TCP.INSEQNUM
sta SKT.Cache+S.SOCKET.TCP.OUTNEXTSEQ,x
dex
bpl .2
ldy #S.SOCKET.T
lda (ZPPtrSKT),y
cmp #S.SOCKET.T.SEQPKT
bcc .8
tax
>LDYAI K.TCP.WSIZE
>STYA SKT.Cache+S.SOCKET.TCP.INFREE
cpx #S.SOCKET.T.STREAM
bcc .8
.DO AUXPIPE=1
>SYSCALL2 NewStkObj
.ELSE
@ -1398,7 +1385,7 @@ SKT.SetFrameOutTCPUDPPorts
bra .2
.1 lda SKT.REM.ADDR+S.SOCKADDR.PORT+1
ldx SKT.REM.ADDR+S.SOCKADDR.PORT
.2 ldy #S.TCPUDP.DSTPORT
sta (ZPFrameOutPtr),y
iny

View File

@ -9,6 +9,7 @@ AUTO 4,1
.INB inc/io.i
.INB inc/macros.i
.INB inc/a2osx.i
.INB inc/gfx.i
.INB inc/libgui.i
*--------------------------------------
* Zero Page Segment, up to 32 bytes
@ -42,6 +43,7 @@ CS.START cld
.DA CS.QUIT
L.LIBGUI .DA LIBGUI
L.MouseData .DA MouseData
L.CB.Paint .DA CB.Paint
.DA 0
*--------------------------------------
CS.INIT >LDYA L.LIBGUI
@ -96,10 +98,10 @@ CS.QUIT clc
*--------------------------------------
Destop.Paint >LIBCALL hLIBGUI,LIBGUI.HideCursor
* >LIBCALL hLIBGUI,LIBGUI.GetScreenGC
* >PUSHYA
* >PUSHW L.CB.Paint
* >LIBCALL hLIBGUI,LIBGUI.Draw
>LIBCALL hLIBGUI,LIBGUI.GetScreenGC
>PUSHYA
>PUSHW L.CB.Paint
>LIBCALL hLIBGUI,LIBGUI.Draw
* >LIBCALL hLIBGUI,LIBGUI.GetScreenGC
* >PUSHYA
@ -116,6 +118,16 @@ LIBGUI .AZ "libgui"
hLIBGUI .BS 1
*--------------------------------------
MouseData .BS S.MOUSE
*--------------------------------------
CB.Paint .DA #S.CB.CMD.FILLRECT
.DA #S.CB.OP.SET
.DA #S.CB.M.C16
.DA #11 Color
.DA 540
.DA 10
.DA 550
.DA 30
.DA #0
*--------------------------------------
.DUMMY
.OR 0