Kernel 0.94

This commit is contained in:
Rémy GIBERT 2020-09-05 15:38:04 +02:00
parent 987ae82bcd
commit 643d2b816c
17 changed files with 220 additions and 121 deletions

Binary file not shown.

Binary file not shown.

View File

@ -357,9 +357,9 @@ CB.RECT .DA #S.CB.CMD.FILLRECT
.DA #S.CB.OP.SET .DA #S.CB.OP.SET
.DA #S.CB.M.C16 .DA #S.CB.M.C16
.DA #11 Color .DA #11 Color
.DA 20 .DA 28
.DA 10 .DA 10
.DA 540 .DA 532
.DA 182 .DA 182
CB.RECT2 .DA #S.CB.CMD.FILLRECT CB.RECT2 .DA #S.CB.CMD.FILLRECT

View File

@ -472,23 +472,20 @@ CS.RUN.RESPONSE jsr Init.TimeOut
cmp #E.NODATA cmp #E.NODATA
bne .8 bne .8
lda #"."
>SYSCALL putchar
lda TimeOut lda TimeOut
bne .1 bne .1
bra .80 bit bResponse
bmi .1
bra .8
.2 jsr CS.RUN.GETRESPONSE .2 jsr CS.RUN.GETRESPONSE
lda #"!" bit bResponse
>SYSCALL putchar
.3 bit bResponse
bmi .6 bmi .6
.30 ldx #0 .3 ldx #0
.4 dex .4 dex
@ -512,7 +509,7 @@ CS.RUN.RESPONSE jsr Init.TimeOut
inx inx
inx inx
bne .30 bne .3
sec sec
ror bResponse ror bResponse
@ -535,13 +532,10 @@ CS.RUN.RESPONSE jsr Init.TimeOut
jmp CS.RUN.RESPONSE jmp CS.RUN.RESPONSE
.8 cmp #MLI.E.IO SKT Close ? .8 bit bResponse
bne .9
.80 lda bResponse
bpl .99 bpl .99
.81 clc clc
rts rts
.99 lda #MLI.E.IO .99 lda #MLI.E.IO
@ -589,7 +583,7 @@ CS.DOEVENT lda (pEvent)
CS.QUIT lda hSocket CS.QUIT lda hSocket
beq .1 beq .1
* >LIBCALL hLIBTCPIP,LIBTCPIP.Shutdown >LIBCALL hLIBTCPIP,LIBTCPIP.Shutdown
.1 lda hReqBuf .1 lda hReqBuf
beq .2 beq .2

View File

@ -113,6 +113,7 @@ CS.RUN >LDYA L.MSG0
ldy SocketIndex ldy SocketIndex
cpy #K.SKTTABLE.SIZE cpy #K.SKTTABLE.SIZE
bne .1 bne .1
lda #0 tell TSKMGR that all done ok, but lda #0 tell TSKMGR that all done ok, but
sec we do not want to stay in memory sec we do not want to stay in memory
.9 rts .9 rts

View File

@ -109,12 +109,10 @@ Dev.Detect >LDYA L.MSG.DETECT
>STYA $800 >STYA $800
sta CLRWRITEAUX sta CLRWRITEAUX
sta SETHIRES jsr ClrScr
sta SET80STORE
jsr OSD.install jsr OSD.install
jsr ClrScr
plp plp
.9 rts .9 rts
@ -239,6 +237,9 @@ OSD.install >LDYA L.OSD
ClrScr lda #$55 ClrScr lda #$55
ldx #0 ldx #0
sta SETHIRES
sta SET80STORE
.1 ldy BASEL,x .1 ldy BASEL,x
sty ZPPtr1 sty ZPPtr1

View File

@ -68,8 +68,7 @@ Dev.Detect >LDYA L.MSG.DETECT
rts rts
.8 lda ZPSlotPtr+1 .8 lda ZPSlotPtr+1
sta GOMOUSE+2 sta GOMOUSE.LDX+2
sta GOMOUSE.Cn+1
sta GOMOUSE.JMP+2 sta GOMOUSE.JMP+2
and #$0F and #$0F
sta DEVSLOT0n sta DEVSLOT0n
@ -116,7 +115,7 @@ FD.DEV .DA #S.FD.T.CDEV
.BS 2 DRVPTR .BS 2 DRVPTR
.DA 0 DCBPTR .DA 0 DCBPTR
.DA 0 BUFPTR .DA 0 BUFPTR
FD.DEV.NAME .AZ "moux" FD.DEV.NAME .AZ "mou1"
*-------------------------------------- *--------------------------------------
* Driver Code * Driver Code
*-------------------------------------- *--------------------------------------
@ -185,11 +184,11 @@ CONTROL >STYA ZPBufPtr NON STANDARD
jsr SETCLAMP jsr SETCLAMP
ldy #HOMEMOUSE ldy #HOMEMOUSE
bra EXIT bra EXIT1
*-------------------------------------- *--------------------------------------
OPEN php OPEN php
sei sei
lda #S.DIB.S.OPENED lda #S.DIB.S.OPENED
tsb DIB+S.DIB.S tsb DIB+S.DIB.S
@ -197,11 +196,14 @@ OPEN php
lda MOUSEMODx,x keep if VBLInt already activated by kernel lda MOUSEMODx,x keep if VBLInt already activated by kernel
and #MOUSEMODx.INTVBL and #MOUSEMODx.INTVBL
ora #MOUSEMODx.ACTIVE Enable, Polling mode ora #MOUSEMODx.ACTIVE Enable, Polling mode
ldy #SETMOUSE bra EXIT0
jsr GOMOUSE
* jsr GOMOUSE
ldy #INITMOUSE Reset * ldy #INITMOUSE Already called by IRQManager
bra EXIT * jsr GOMOUSE CLEAR $2000-3FFF AND MESS SETHIRES
* plp
* rts
*-------------------------------------- *--------------------------------------
CLOSE php CLOSE php
sei sei
@ -212,9 +214,10 @@ CLOSE php
ldx DEVSLOT0n ldx DEVSLOT0n
lda MOUSEMODx,x keep if VBLInt already activated by kernel lda MOUSEMODx,x keep if VBLInt already activated by kernel
and #MOUSEMODx.INTVBL Disable ALL but VBLInt if previously active and #MOUSEMODx.INTVBL Disable ALL but VBLInt if previously active
ldy #SETMOUSE
EXIT jsr GOMOUSE EXIT0 ldy #SETMOUSE
EXIT1 jsr GOMOUSE
plp plp
clc clc
@ -226,8 +229,7 @@ READ >STYA ZPBufPtr NON STANDARD
php php
sei sei
* sta SET80STORE
sta CLRPAGE2 sta CLRPAGE2
* ldy #READMOUSE DONE BY IRQ MANAGER * ldy #READMOUSE DONE BY IRQ MANAGER
@ -344,11 +346,12 @@ SETCLAMP lda (ZPBufPtr),y
txa txa
ldy #CLAMPMOUSE ldy #CLAMPMOUSE
*-------------------------------------- *--------------------------------------
GOMOUSE ldx $FF00,y SELF MODIFIED GOMOUSE
GOMOUSE.LDX ldx $C100,y SELF MODIFIED
stx GOMOUSE.JMP+1 stx GOMOUSE.JMP+1
GOMOUSE.Cn ldx #$ff SELF MODIFIED ldx GOMOUSE.JMP+2
GOMOUSE.n0 ldy #$ff SELF MODIFIED GOMOUSE.n0 ldy #$10 SELF MODIFIED
GOMOUSE.JMP jmp $FFFF SELF MODIFIED GOMOUSE.JMP jmp $C100 SELF MODIFIED
*-------------------------------------- *--------------------------------------
DRV.CS.END DRV.CS.END
DEVSLOT0n .BS 1 DEVSLOT0n .BS 1

View File

@ -2,7 +2,7 @@ NEW
AUTO 3,1 AUTO 3,1
*-------------------------------------- *--------------------------------------
* CLIPPING Functions: * CLIPPING Functions:
* In: * In:
* Graphic Context in OBJ.Cache * Graphic Context in OBJ.Cache
* YA = Control Block * YA = Control Block
* Out: * Out:
@ -31,7 +31,7 @@ CLIP.HLine
CLIP.VLine CLIP.VLine
clc clc
rts rts
sec sec
rts rts
*-------------------------------------- *--------------------------------------
@ -58,9 +58,12 @@ CLIP.Rect jsr CB.Cache.Overlap
*-------------------------------------- *--------------------------------------
CLIP.Text CLIP.Text
clc clc
rts
CLIP.Text.9 sec
CLIP.Text.RTS rts CLIP.Text.RTS rts
*-------------------------------------- *--------------------------------------
* BitBlt : * BitBlt :
*-------------------------------------- *--------------------------------------
CLIP.BitBlt jsr CB.Cache.SetX2Y2 set X2=X1+W-1 Y2=X1+H-1 CLIP.BitBlt jsr CB.Cache.SetX2Y2 set X2=X1+W-1 Y2=X1+H-1
@ -71,18 +74,18 @@ CLIP.BitBlt jsr CB.Cache.SetX2Y2 set X2=X1+W-1 Y2=X1+H-1
sec sec
sbc CB.Cache+S.CB.X1 sbc CB.Cache+S.CB.X1
sta DX sta DX
lda OBJ.Cache+S.OBJ.X1+1 lda OBJ.Cache+S.OBJ.X1+1
sbc CB.Cache+S.CB.X1+1 sbc CB.Cache+S.CB.X1+1
sta DX+1 sta DX+1
bvc .1 bvc .1
eor #$80 eor #$80
.1 bmi .2 .1 bmi .2
>DEBUG
lda S.CB.X1 lda CB.Cache+S.CB.X1
clc clc
adc DX adc DX
sta S.CB.X1 sta CB.Cache+S.CB.X1
lda CB.Cache+S.CB.X1+1 lda CB.Cache+S.CB.X1+1
adc DX+1 adc DX+1
@ -96,7 +99,7 @@ CLIP.BitBlt jsr CB.Cache.SetX2Y2 set X2=X1+W-1 Y2=X1+H-1
lda CB.Cache+S.CB.SrcX+1 lda CB.Cache+S.CB.SrcX+1
adc DX+1 adc DX+1
sta CB.Cache+S.CB.SrcX+1 sta CB.Cache+S.CB.SrcX+1
lda CB.Cache+S.CB.SrcW lda CB.Cache+S.CB.SrcW
sec sec
sbc DX sbc DX
@ -105,21 +108,20 @@ CLIP.BitBlt jsr CB.Cache.SetX2Y2 set X2=X1+W-1 Y2=X1+H-1
lda CB.Cache+S.CB.SrcW+1 lda CB.Cache+S.CB.SrcW+1
sbc DX+1 sbc DX+1
sta CB.Cache+S.CB.SrcW+1 sta CB.Cache+S.CB.SrcW+1
bcc .9 bcc CLIP.Text.9
.2 lda CB.Cache+S.CB.X2 .2 lda CB.Cache+S.CB.X2
sec sec
sbc OBJ.Cache+S.OBJ.X2 sbc OBJ.Cache+S.OBJ.X2
sta DX sta DX
lda CB.Cache+S.CB.X2+1 lda CB.Cache+S.CB.X2+1
sbc OBJ.Cache+S.OBJ.X2+1 sbc OBJ.Cache+S.OBJ.X2+1
sta DX+1 sta DX+1
bvc .3 bvc .3
eor #$80 eor #$80
.3 bmi .4 .3 bmi .4
>DEBUG
lda CB.Cache+S.CB.SrcW lda CB.Cache+S.CB.SrcW
sec sec
sbc DX sbc DX
@ -128,14 +130,73 @@ CLIP.BitBlt jsr CB.Cache.SetX2Y2 set X2=X1+W-1 Y2=X1+H-1
lda CB.Cache+S.CB.SrcW+1 lda CB.Cache+S.CB.SrcW+1
sbc DX+1 sbc DX+1
sta CB.Cache+S.CB.SrcW+1 sta CB.Cache+S.CB.SrcW+1
bcc .9 bcc .9
.4 lda OBJ.Cache+S.OBJ.Y1
sec
sbc CB.Cache+S.CB.Y1
sta DX
lda OBJ.Cache+S.OBJ.Y1+1
sbc CB.Cache+S.CB.Y1+1
sta DX+1
bvc .5
eor #$80
.5 bmi .6
lda CB.Cache+S.CB.Y1
.4 clc clc
adc DX
sta CB.Cache+S.CB.Y1
lda CB.Cache+S.CB.Y1+1
adc DX+1
sta CB.Cache+S.CB.Y1+1
lda CB.Cache+S.CB.SrcY
clc
adc DX
sta CB.Cache+S.CB.SrcY
lda CB.Cache+S.CB.SrcY+1
adc DX+1
sta CB.Cache+S.CB.SrcY+1
lda CB.Cache+S.CB.SrcH
sec
sbc DX
sta CB.Cache+S.CB.SrcH
lda CB.Cache+S.CB.SrcH+1
sbc DX+1
sta CB.Cache+S.CB.SrcH+1
bcc .9
.6 lda CB.Cache+S.CB.Y2
sec
sbc OBJ.Cache+S.OBJ.Y2
sta DX
lda CB.Cache+S.CB.Y2+1
sbc OBJ.Cache+S.OBJ.Y2+1
sta DX+1
bvc .7
eor #$80
.7 bmi .8
lda CB.Cache+S.CB.SrcH
sec
sbc DX
sta CB.Cache+S.CB.SrcH
lda CB.Cache+S.CB.SrcH+1
sbc DX+1
sta CB.Cache+S.CB.SrcH+1
bcc .9
.8 clc
.99 rts .99 rts
.9 sec .9 sec
rts rts
*-------------------------------------- *--------------------------------------
@ -156,17 +217,17 @@ CLIP.Line jsr CLIP.Line.EncodeP1
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
@ -183,12 +244,12 @@ CLIP.Line jsr CLIP.Line.EncodeP1
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
@ -241,9 +302,9 @@ CLIP.Line.EncodeX.AX
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
@ -271,13 +332,13 @@ CB.Cache.SetX2Y2
bne .2 bne .2
dex dex
.2 dec .2 dec
sta CB.Cache+S.CB.X2 sta CB.Cache+S.CB.X2
stx CB.Cache+S.CB.X2+1 stx CB.Cache+S.CB.X2+1
lda CB.Cache+S.CB.SrcH lda CB.Cache+S.CB.SrcH
clc clc
adc CB.Cache+S.CB.Y1 adc CB.Cache+S.CB.Y1
pha pha
@ -289,8 +350,8 @@ CB.Cache.SetX2Y2
bne .3 bne .3
dex dex
.3 dec .3 dec
sta CB.Cache+S.CB.Y2 sta CB.Cache+S.CB.Y2
stx CB.Cache+S.CB.Y2+1 stx CB.Cache+S.CB.Y2+1
rts rts
@ -311,10 +372,10 @@ CB.Cache.Overlap
>LDYA CB.Cache+S.CB.Y2 >LDYA CB.Cache+S.CB.Y2
>SCMPYA OBJ.Cache+S.OBJ.Y1 >SCMPYA OBJ.Cache+S.OBJ.Y1
bmi .9 bmi .9
clc clc
rts rts
.9 sec .9 sec
rts rts
*-------------------------------------- *--------------------------------------

View File

@ -6,13 +6,16 @@ MOU.Init
>LDYA L.DEVNAME.MOUSE >LDYA L.DEVNAME.MOUSE
>SYSCALL2 open >SYSCALL2 open
bcc .2 bcc .2
inc DEVNAME.MOUSE+8 inc DEVNAME.MOUSE+8
lda DEVNAME.MOUSE+8 lda DEVNAME.MOUSE+8
cmp #'8' cmp #'8'
bne .1 bne .1
rts rts
.2 sta hDevMouse .2 sta hDevMouse
clc clc
rts rts
*-------------------------------------- *--------------------------------------

View File

@ -47,15 +47,14 @@ WND.Setup >LDYA DCB.GFX+S.DCB.GFX.W
jsr OBJ.SetX2Y2 jsr OBJ.SetX2Y2
>LDYA L.WND.SysBar >LDYA L.WND.SysBar
jsr OBJ.SetX2Y2
>STYA SCR.Childs+2 >STYA SCR.Childs+2
jsr OBJ.SetX2Y2
>LDYA L.WND.Desktop
lda #CUR.T.ARROW lda #CUR.T.ARROW
sta WND.Desktop+S.WND.hCUR sta WND.Desktop+S.WND.hCUR
sta WND.SysBar+S.WND.hCUR sta WND.SysBar+S.WND.hCUR
sta $C057 * sta $C057
rts rts
*-------------------------------------- *--------------------------------------
WND.Quit lda SCR+S.SCREEN.hDEV WND.Quit lda SCR+S.SCREEN.hDEV

View File

@ -72,12 +72,25 @@ WND.MAX .EQ 64
:1 .EQ * :1 .EQ *
.EM .EM
*-------------------------------------- *--------------------------------------
ZPPtr1 .EQ ZPLIB .DUMMY
.OR ZPLIB
ZPPtr1 .BS 2
ZPObjPtr .BS 2
ZPCBPtr .BS 2
ZPWNDPtr .BS 2
ZPObjPtr .EQ ZPLIB+4 DX .BS 2
ZPCBPtr .EQ ZPLIB+6 DY .BS 2
ZPWNDPtr .EQ ZPLIB+8 IY .BS 1
IE .BS 2
D .BS 2
INE .BS 2
Counter .BS 2
CLIP.Line.P1 .BS 1
CLIP.Line.P2 .BS 1
.ED
*-------------------------------------- *--------------------------------------
* File Header (16 Bytes) * File Header (16 Bytes)
*-------------------------------------- *--------------------------------------
@ -288,22 +301,12 @@ CS.END
DEVNAME.GFX .AZ "/dev/gfx" DEVNAME.GFX .AZ "/dev/gfx"
DEVNAME.MOUSE .AZ "/dev/mou1" DEVNAME.MOUSE .AZ "/dev/mou1"
*-------------------------------------- *--------------------------------------
SYSX7 .AZ "/A2OSX.BUILD/sbin/sysx7" SYSX7 .AZ "${ROOT}sbin/sysx7"
SYSX7B .AZ "/A2OSX.BUILD/sbin/sysx7b" SYSX7B .AZ "${ROOT}sbin/sysx7b"
*-------------------------------------- *--------------------------------------
LibCount .BS 1 LibCount .BS 1
hDevMouse .BS 1 hDevMouse .BS 1
*-------------------------------------- *--------------------------------------
DX .BS 2
DY .BS 2
IY .BS 1
IE .BS 2
D .BS 2
INE .BS 2
Counter .BS 2
CLIP.Line.P1 .BS 1
CLIP.Line.P2 .BS 1
*--------------------------------------
CB.CmdLen .DA #S.CB.Y1+1 SETPIXEL CB.CmdLen .DA #S.CB.Y1+1 SETPIXEL
.DA #S.CB.Y1+1 GETPIXEL .DA #S.CB.Y1+1 GETPIXEL
.DA #S.CB.X2+1 HLINE .DA #S.CB.X2+1 HLINE

View File

@ -42,7 +42,7 @@ CFG.SET >PULLW ZPTmpPtr1 IPCFG
ldx #IOCTL.STATUS ldx #IOCTL.STATUS
jsr CFG.SET.IOCTL jsr CFG.SET.IOCTL
bcs .99 bcs .9
ldx #11 IP/MASK/GW ldx #11 IP/MASK/GW
@ -58,37 +58,15 @@ CFG.SET >PULLW ZPTmpPtr1 IPCFG
jsr CFG.SET.IOCTL jsr CFG.SET.IOCTL
bcs .9 bcs .9
.5 lda hDNSSocket .5 lda IPCFG+S.IPCFG.IP no IP address yes...so no DNS socket
beq .6
jsr SKT.Shutdown
stz hDNSSocket
.6 lda IPCFG+S.IPCFG.IP no IP address yes...so no DNS socket
beq .8 beq .8
lda IPCFG+S.IPCFG.DNS1
beq .8
>PUSHBI 0 no protocol
lda #S.SOCKET.T.DGRAM
jsr SKT.Socket
.99 bcs .9
sta hDNSSocket
stz SA.LOCAL+S.SOCKADDR.PORT stz SA.LOCAL+S.SOCKADDR.PORT
stz SA.LOCAL+S.SOCKADDR.PORT+1 stz SA.LOCAL+S.SOCKADDR.PORT+1
>PUSHW L.SA.LOCAL >PUSHW L.SA.LOCAL
lda hDNSSocket lda hDNSSocket
jsr SKT.Bind jmp SKT.Bind
bcs .9
>LDYAI UDP.PORT.DNS
>STYA SA.REMOTE+S.SOCKADDR.PORT
>PUSHW L.SA.REMOTE
lda hDNSSocket
jmp SKT.Connect
.8 clc .8 clc
.9 rts .9 rts

View File

@ -39,6 +39,7 @@ DNS.Query.I jsr DNS.FIND.BY.NAME
adc #S.DNSCACHE.IP adc #S.DNSCACHE.IP
sta ZPCachePtr sta ZPCachePtr
bcc .1 bcc .1
inc ZPCachePtr+1 inc ZPCachePtr+1
.1 ldy #3 .1 ldy #3
@ -115,10 +116,12 @@ DNS.REQUEST.SEND
jsr .4 jsr .4
lda IPCFG+S.IPCFG.DNS2
beq .8
ldy #3 ldy #3
.2 lda IPCFG+S.IPCFG.DNS2,y .2 lda IPCFG+S.IPCFG.DNS2,y
beq .8
sta SA.REMOTE+S.SOCKADDR.ADDR,y sta SA.REMOTE+S.SOCKADDR.ADDR,y
dey dey
bpl .2 bpl .2
@ -143,10 +146,12 @@ DNS.CSTR2DNS lda (ZPPtrDNS)
cpy #K.DNS.MAXLEN-1 cpy #K.DNS.MAXLEN-1
bcs .9 bcs .9
lda #0 Ending 0 lda #0 Ending 0
sta DNS.MSG.NAME+1,y sta DNS.MSG.NAME+1,y
phy save len for later phy save len for later
ldx #0 ldx #0
dey dey
@ -194,6 +199,7 @@ DNS.Add >PULLW ZPPtrDNS Get host string
>PULLW ZPPtrIP Get host IP address >PULLW ZPPtrIP Get host IP address
ldy #3 ldy #3
.1 lda (ZPPtrIP),y .1 lda (ZPPtrIP),y
sta DNS.TmpCache+S.DNSCACHE.IP,y sta DNS.TmpCache+S.DNSCACHE.IP,y
dey dey
@ -250,6 +256,7 @@ DNS.FIND.BY.NAME
jsr DNS.GetCAche jsr DNS.GetCAche
ldx #K.DNSCACHE.SIZE ldx #K.DNSCACHE.SIZE
.1 lda (ZPCachePtr) .1 lda (ZPCachePtr)
beq .6 empty DNS cache entry? beq .6 empty DNS cache entry?
@ -274,6 +281,7 @@ DNS.UPDATE.BY.ID
jsr DNS.GetCAche jsr DNS.GetCAche
ldx #K.DNSCACHE.SIZE ldx #K.DNSCACHE.SIZE
.1 lda (ZPCachePtr) .1 lda (ZPCachePtr)
beq .6 empty DNS cache entry? beq .6 empty DNS cache entry?
bmi .6 resolved ? bmi .6 resolved ?
@ -304,6 +312,7 @@ DNS.UPDATE.BY.ID
dex dex
bne .1 bne .1
sec sec
rts rts
*-------------------------------------- *--------------------------------------
@ -330,16 +339,21 @@ DNS.FIND.FREE jsr DNS.GetCAche
iny iny
dex dex
bpl .2 bpl .2
bcc .6 no, bcc .6 no,
ldy #S.DNSCACHE.TTL ldy #S.DNSCACHE.TTL
ldx #3 ldx #3
.3 lda (ZPCachePtr),y Save new lowest TTL .3 lda (ZPCachePtr),y Save new lowest TTL
sta TmpDWord,x sta TmpDWord,x
iny iny
dex dex
bpl .3 bpl .3
>LDYA ZPCachePtr >LDYA ZPCachePtr
>STYA ZPTmpPtr1 save lowest TTL slot ... >STYA ZPTmpPtr1 save lowest TTL slot ...
.6 plx .6 plx
.7 jsr DNS.NextCache .7 jsr DNS.NextCache
@ -391,7 +405,9 @@ DNS.EXPIRE jsr DNS.GetCAche
DNS.FREE ldy #S.DNSCACHE.hNAME DNS.FREE ldy #S.DNSCACHE.hNAME
lda (ZPCachePtr),y lda (ZPCachePtr),y
beq .1 beq .1
>SYSCALL2 FreeMem >SYSCALL2 FreeMem
.1 lda #0 .1 lda #0
sta (ZPCachePtr) sta (ZPCachePtr)
DNS.FREE.RTS rts DNS.FREE.RTS rts
@ -420,6 +436,7 @@ DNS.POLL lda hDNSSocket
ldy #S.DNS.ANCOUNT+1 ldy #S.DNS.ANCOUNT+1
lda (ZPFrameInPtr),y lda (ZPFrameInPtr),y
beq .9 beq .9
pha save Answer count... pha save Answer count...
ldy #S.DNS.QDCOUNT+1 ldy #S.DNS.QDCOUNT+1
lda (ZPFrameInPtr),y lda (ZPFrameInPtr),y
@ -428,17 +445,21 @@ DNS.POLL lda hDNSSocket
tax tax
beq .3 no QUERY to skip beq .3 no QUERY to skip
.1 lda (ZPFrameInPtr),y .1 lda (ZPFrameInPtr),y
beq .2 beq .2
bpl .11 Pointer ? bpl .11 Pointer ?
iny yes, skip 2 bytes iny yes, skip 2 bytes
iny iny
bra .2 bra .2
.11 tya .11 tya
sec sec
adc (ZPFrameInPtr),y Skip LEN+1 bytes adc (ZPFrameInPtr),y Skip LEN+1 bytes
tay tay
bra .1 bra .1
.2 iny .2 iny
iny iny
iny Skip QTYPE & QCLASS iny Skip QTYPE & QCLASS
@ -446,7 +467,9 @@ DNS.POLL lda hDNSSocket
iny next pos iny next pos
.21 dex skip another QUERY ? .21 dex skip another QUERY ?
bne .1 bne .1
plx get back answer count plx get back answer count
.3 lda (ZPFrameInPtr),y .3 lda (ZPFrameInPtr),y
beq .32 beq .32
bpl .31 Pointer ? bpl .31 Pointer ?
@ -459,6 +482,7 @@ DNS.POLL lda hDNSSocket
adc (ZPFrameInPtr),y Skip LEN+1 bytes adc (ZPFrameInPtr),y Skip LEN+1 bytes
tay tay
bra .3 bra .3
.32 iny skip S.DNS.QTYPE HIGH .32 iny skip S.DNS.QTYPE HIGH
lda (ZPFrameInPtr),y lda (ZPFrameInPtr),y
cmp #S.DNS.QTYPE.A cmp #S.DNS.QTYPE.A
@ -473,10 +497,13 @@ DNS.POLL lda hDNSSocket
dex dex
bne .3 bne .3
bra .9 bra .9
.40 iny skip QCLASS .40 iny skip QCLASS
iny iny
iny next pos iny next pos
ldx #3 ldx #3
.4 lda (ZPFrameInPtr),y .4 lda (ZPFrameInPtr),y
sta DNS.TmpCache+S.DNSCACHE.TTL,x sta DNS.TmpCache+S.DNSCACHE.TTL,x
iny iny
@ -486,12 +513,14 @@ DNS.POLL lda hDNSSocket
iny skip DATALEN iny skip DATALEN
iny iny
ldx #0 ldx #0
.5 lda (ZPFrameInPtr),y .5 lda (ZPFrameInPtr),y
sta DNS.TmpCache+S.DNSCACHE.IP,x sta DNS.TmpCache+S.DNSCACHE.IP,x
iny iny
inx inx
cpx #4 cpx #4
bne .5 bne .5
jsr DNS.UPDATE.BY.ID jsr DNS.UPDATE.BY.ID
.9 jmp FRM.DiscardIn .9 jmp FRM.DiscardIn

View File

@ -192,7 +192,7 @@ TCP.IN.JMP.ESTBLSH
.5 lda (ZPFrameInPtr),y .5 lda (ZPFrameInPtr),y
eor SKT.Cache+S.SOCKET.TCP.INSEQNUM,x eor SKT.Cache+S.SOCKET.TCP.INSEQNUM,x
bne .9 Missed a frame..... bne .90 Missed a frame.....
dey dey
dex dex
@ -210,7 +210,7 @@ TCP.IN.JMP.ESTBLSH
.52 lda hFrameIn .52 lda hFrameIn
jsr SKT.AddToQueueA jsr SKT.AddToQueueA
bcs .9 bcs .99
stz hFrameIn DON'T DISCARD stz hFrameIn DON'T DISCARD
@ -244,9 +244,12 @@ TCP.IN.JMP.ESTBLSH
.80 clc .80 clc
rts rts
.90 lda #S.TCP.OPTIONS.ACK
jsr TCP.OUT.SendOptA
.9 sec .9 sec
rts .99 rts
*-------------------------------------- *--------------------------------------
TCP.IN.JMP.LASTACK TCP.IN.JMP.LASTACK
ldy #S.TCP.OPTIONS only accept ACK packet ldy #S.TCP.OPTIONS only accept ACK packet

View File

@ -167,7 +167,23 @@ LIB.LOAD ldx RefCount
jsr ARP.Clear.I jsr ARP.Clear.I
>PUSHBI 0 no protocol
lda #S.SOCKET.T.DGRAM
jsr SKT.Socket
bcs .9
sta hDNSSocket
pha
>LDYAI UDP.PORT.DNS
>STYA SA.REMOTE+S.SOCKADDR.PORT
>PUSHW L.SA.REMOTE
pla
jsr SKT.Connect
bcs .9
jsr DNS.CLEAR jsr DNS.CLEAR
.8 inc RefCount .8 inc RefCount
clc clc
@ -176,7 +192,11 @@ LIB.LOAD ldx RefCount
LIB.UNLOAD dec RefCount LIB.UNLOAD dec RefCount
bne .8 bne .8
lda hARPCache lda hDNSSocket
beq .1
jsr SKT.Shutdown
.1 lda hARPCache
beq .8 beq .8
>SYSCALL2 freemem >SYSCALL2 freemem

View File

@ -54,7 +54,7 @@ CS.INIT >LDYA L.LIBGUI
* clc * clc
.9 rts .9 rts
*-------------------------------------- *--------------------------------------
CS.RUN jsr Destop.Paint CS.RUN
CS.RUN.LOOP >SLEEP CS.RUN.LOOP >SLEEP

View File

@ -272,6 +272,10 @@ PS.CreateChild ldx #0
ldy #S.PS.hENV ldy #S.PS.hENV
sta (PS.NewPSPtr),y sta (PS.NewPSPtr),y
sta SETWRITEAUX
jsr Mem.SetOwner Set Ownership
sta CLRWRITEAUX
ldy #S.PS.hStdIn ldy #S.PS.hStdIn
.7 lda (ZPPtr1),y .7 lda (ZPPtr1),y