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.M.C16
.DA #11 Color
.DA 20
.DA 28
.DA 10
.DA 540
.DA 532
.DA 182
CB.RECT2 .DA #S.CB.CMD.FILLRECT

View File

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

View File

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

View File

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

View File

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

View File

@ -2,7 +2,7 @@ NEW
AUTO 3,1
*--------------------------------------
* CLIPPING Functions:
* In:
* In:
* Graphic Context in OBJ.Cache
* YA = Control Block
* Out:
@ -31,7 +31,7 @@ CLIP.HLine
CLIP.VLine
clc
rts
sec
rts
*--------------------------------------
@ -58,9 +58,12 @@ CLIP.Rect jsr CB.Cache.Overlap
*--------------------------------------
CLIP.Text
clc
rts
CLIP.Text.9 sec
CLIP.Text.RTS rts
*--------------------------------------
* BitBlt :
* BitBlt :
*--------------------------------------
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
sbc CB.Cache+S.CB.X1
sta DX
lda OBJ.Cache+S.OBJ.X1+1
sbc CB.Cache+S.CB.X1+1
sta DX+1
bvc .1
eor #$80
.1 bmi .2
>DEBUG
lda S.CB.X1
lda CB.Cache+S.CB.X1
clc
adc DX
sta S.CB.X1
sta CB.Cache+S.CB.X1
lda CB.Cache+S.CB.X1+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
adc DX+1
sta CB.Cache+S.CB.SrcX+1
lda CB.Cache+S.CB.SrcW
sec
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
sbc DX+1
sta CB.Cache+S.CB.SrcW+1
bcc .9
bcc CLIP.Text.9
.2 lda CB.Cache+S.CB.X2
sec
sbc OBJ.Cache+S.OBJ.X2
sta DX
lda CB.Cache+S.CB.X2+1
sbc OBJ.Cache+S.OBJ.X2+1
sta DX+1
bvc .3
eor #$80
.3 bmi .4
>DEBUG
lda CB.Cache+S.CB.SrcW
sec
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
sbc DX+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
.4 clc
lda CB.Cache+S.CB.Y1
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
.9 sec
rts
*--------------------------------------
@ -156,17 +217,17 @@ CLIP.Line jsr CLIP.Line.EncodeP1
beq .5
bit #CLIP.Line.TOP
beq .2
* Y1 is above S.CB.Y1....
* Y1 is above S.CB.Y1....
* DY=Y2-Y1;
jsr CLIP.Line.EncodeP1
bra .1
.2 bit #CLIP.Line.BOTTOM
beq .3
beq .3
* Y1 is below S.CB.Y2....
jsr CLIP.Line.EncodeP1
bra .1
.3 bit #CLIP.Line.RIGHT
beq .4
beq .4
* X1 is after S.CB.X2....
jsr CLIP.Line.EncodeP1
bra .1
@ -183,12 +244,12 @@ CLIP.Line jsr CLIP.Line.EncodeP1
jsr CLIP.Line.EncodeP2
bra .1
.6 bit #CLIP.Line.BOTTOM
beq .7
beq .7
* Y2 is below S.CB.Y2....
jsr CLIP.Line.EncodeP2
bra .1
.7 bit #CLIP.Line.RIGHT
beq .8
beq .8
* X2 is after S.CB.X2....
jsr CLIP.Line.EncodeP2
bra .1
@ -241,9 +302,9 @@ CLIP.Line.EncodeX.AX
bpl .8
tya
ora #CLIP.Line.RIGHT
.8 rts
.8 rts
*--------------------------------------
CLIP.Line.EncodeY.AX
CLIP.Line.EncodeY.AX
pha
>SCMPAX OBJ.Cache+S.OBJ.Y1
bmi .1
@ -271,13 +332,13 @@ CB.Cache.SetX2Y2
bne .2
dex
.2 dec
.2 dec
sta CB.Cache+S.CB.X2
stx CB.Cache+S.CB.X2+1
lda CB.Cache+S.CB.SrcH
clc
adc CB.Cache+S.CB.Y1
pha
@ -289,8 +350,8 @@ CB.Cache.SetX2Y2
bne .3
dex
.3 dec
.3 dec
sta CB.Cache+S.CB.Y2
stx CB.Cache+S.CB.Y2+1
rts
@ -311,10 +372,10 @@ CB.Cache.Overlap
>LDYA CB.Cache+S.CB.Y2
>SCMPYA OBJ.Cache+S.OBJ.Y1
bmi .9
clc
rts
.9 sec
rts
*--------------------------------------

View File

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

View File

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

View File

@ -72,12 +72,25 @@ WND.MAX .EQ 64
:1 .EQ *
.EM
*--------------------------------------
ZPPtr1 .EQ ZPLIB
.DUMMY
.OR ZPLIB
ZPPtr1 .BS 2
ZPObjPtr .BS 2
ZPCBPtr .BS 2
ZPWNDPtr .BS 2
ZPObjPtr .EQ ZPLIB+4
ZPCBPtr .EQ ZPLIB+6
ZPWNDPtr .EQ ZPLIB+8
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
.ED
*--------------------------------------
* File Header (16 Bytes)
*--------------------------------------
@ -288,22 +301,12 @@ CS.END
DEVNAME.GFX .AZ "/dev/gfx"
DEVNAME.MOUSE .AZ "/dev/mou1"
*--------------------------------------
SYSX7 .AZ "/A2OSX.BUILD/sbin/sysx7"
SYSX7B .AZ "/A2OSX.BUILD/sbin/sysx7b"
SYSX7 .AZ "${ROOT}sbin/sysx7"
SYSX7B .AZ "${ROOT}sbin/sysx7b"
*--------------------------------------
LibCount .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
.DA #S.CB.Y1+1 GETPIXEL
.DA #S.CB.X2+1 HLINE

View File

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

View File

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

View File

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

View File

@ -167,7 +167,23 @@ LIB.LOAD ldx RefCount
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
.8 inc RefCount
clc
@ -176,7 +192,11 @@ LIB.LOAD ldx RefCount
LIB.UNLOAD dec RefCount
bne .8
lda hARPCache
lda hDNSSocket
beq .1
jsr SKT.Shutdown
.1 lda hARPCache
beq .8
>SYSCALL2 freemem

View File

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

View File

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