Kernel 0.94

This commit is contained in:
Rémy GIBERT 2020-05-30 22:38:47 +02:00
parent e0690b5de4
commit b09ff87947
8 changed files with 335 additions and 221 deletions

Binary file not shown.

Binary file not shown.

11
ETC/HTTPD.CONF.txt Normal file
View File

@ -0,0 +1,11 @@
NEW
AUTO 3,1
# HTTPD configuration file
ServerName www.example.com:6580
Listen 6580
DocumentRoot ${ROOT}/srv/www
# HTTPD mime types
AddType html text/html
AddType png image.png
MAN
TEXT etc/httpd.conf

View File

@ -26,7 +26,7 @@ D2Recalibrate >PULLB DrvSlt
bcs .9 bcs .9
stz MoveTo stz MoveTo
lda #252 lda #162
sta MoveFrom sta MoveFrom
jsr D2MoveHead.1 jsr D2MoveHead.1
@ -35,19 +35,20 @@ D2Recalibrate >PULLB DrvSlt
jsr D2.PhaseOn jsr D2.PhaseOn
lda #0 wait 25.6 ms lda #0 wait 25.6 ms
jsr D2.Wait100msA Trash X jsr D2.Wait100usecA Trash X
* lda #0
jsr D2.Wait100usecA Trash X
* lda #0
jsr D2.Wait100usecA Trash X
* lda #0
jsr D2.Wait100usecA Trash X
* lda #0
jsr D2.PhaseOff
lda #0 wait 25.6 ms lda #0 wait 25.6 ms
jsr D2.Wait100msA Trash X jsr D2.Wait100usecA Trash X
lda #0 wait 25.6 ms
jsr D2.Wait100msA Trash X
lda #0 wait 25.6 ms
jsr D2.Wait100msA Trash X
jsr D2.PhaseOn.2
clc clc
.9 rts .9 rts
*/-------------------------------------- */--------------------------------------
@ -92,69 +93,49 @@ D2MoveHead.1 ldy #0
jsr D2.PhaseOn jsr D2.PhaseOn
lda #104 lda #0
jsr D2.Wait100msA Trash X jsr D2.Wait100usecA Trash X
iny iny
bra .1 bra .1
.8 tya .8 tya
beq D2.PhaseOff.8 beq D2.PhaseOn.RTS
lda #0 wait 25.6 ms lda #0 wait 25.6 ms
jsr D2.Wait100msA Trash X jsr D2.Wait100usecA Trash X
lda MoveTo lda MoveTo
*-------------------------------------- *--------------------------------------
D2.PhaseOff bit #1 1,3,5,7 ? D2.PhaseOff clc
beq D2.PhaseOff.2 only half track .HS B0 BCS
D2.PhaseOff.1 bit IO.D2.Ph0Off SELF MODIFIED
D2.PhaseOff.2 bit IO.D2.Ph0Off SELF MODIFIED
D2.PhaseOff.8 rts
*-------------------------------------- *--------------------------------------
D2.PhaseOn bit #1 1,3,5,7 ? D2.PhaseOn sec
bne .1 only half track
bit #1
beq .1
jsr .7 php
bra D2.PhaseOn.2 pha
jsr .1
.1 pha
jsr .7
pla pla
inc inc
jsr .7 plp
bra D2.PhaseOn.1
.1 and #6
.7 and #6 mask for 0,2,4,6 adc Slotn0
ora Slotn0 Slot $n0
ora #IO.D2.Ph0On
tax tax
lda IO.D2.Ph0Off,x
lda D2.PhaseOn.2+1
sta D2.PhaseOn.1+1 D2.PhaseOn.RTS rts
stx D2.PhaseOn.2+1
lda D2.PhaseOff.2+1
sta D2.PhaseOff.1+1
dex
stx D2.PhaseOff.2+1
rts
*-------------------------------------- *--------------------------------------
D2.PhaseOn.1 bit IO.D2.Ph0On SELF MODIFIED D2.Wait100usecA sec
D2.PhaseOn.2 bit IO.D2.Ph0On SELF MODIFIED
rts
*--------------------------------------
D2.Wait100msA sec
.1 ldx #19 .1 ldx #19 (2)
.2 dex .2 dex (2)
bne .2 bne .2 (3)
sbc #1 sbc #1
bne .1 bne .1

View File

@ -24,10 +24,6 @@ SKT.Socket.RAW ldy #S.SOCKET
SKT.Socket.DGRAM SKT.Socket.DGRAM
lda #S.IP.PROTOCOL.UDP lda #S.IP.PROTOCOL.UDP
ldy #S.SOCKET ldy #S.SOCKET
bra SKT.Socket.DSOCK
SKT.Socket.SEQPACKET
lda #S.IP.PROTOCOL.TCP
ldy #S.SOCKET.TCP
SKT.Socket.DSOCK SKT.Socket.DSOCK
stx FD.DSOCK+S.SOCKET.T save type stx FD.DSOCK+S.SOCKET.T save type
sta FD.DSOCK+S.SOCKET.PROTO ICMP,UDP,TCP sta FD.DSOCK+S.SOCKET.PROTO ICMP,UDP,TCP
@ -60,6 +56,8 @@ SKT.Socket.DSOCK
txa txa
clc clc
.9 rts .9 rts
SKT.Socket.SEQPACKET
SKT.Socket.STREAM SKT.Socket.STREAM
lda #S.IP.PROTOCOL.TCP lda #S.IP.PROTOCOL.TCP
ldy #S.SOCKET.TCP ldy #S.SOCKET.TCP
@ -1317,13 +1315,17 @@ SKT.NewTCB ldx #S.SOCKET.TCP.INSEQNUM
ldy #S.SOCKET.T ldy #S.SOCKET.T
lda (ZPPtrSKT),y lda (ZPPtrSKT),y
cmp #S.SOCKET.T.STREAM cmp #S.SOCKET.T.SEQPACKET
bcc .8 bcc .8
tax
>LDYAI K.TCP.WSIZE >LDYAI K.TCP.WSIZE
>STYA SKT.Cache+S.SOCKET.TCP.INFREE >STYA SKT.Cache+S.SOCKET.TCP.INFREE
>STYA SKT.Cache+S.SOCKET.TCP.OUTFREE
cpx #S.SOCKET.T.STREAM
bcc .8
.DO AUXPIPE=1 .DO AUXPIPE=1
>SYSCALL2 NewStkObj >SYSCALL2 NewStkObj
.ELSE .ELSE
@ -1335,6 +1337,9 @@ SKT.NewTCB ldx #S.SOCKET.TCP.INSEQNUM
ldy #S.SOCKET.SQ.hInMem ldy #S.SOCKET.SQ.hInMem
sta (ZPPtrSKT),y sta (ZPPtrSKT),y
>LDYAI K.TCP.WSIZE
>STYA SKT.Cache+S.SOCKET.TCP.OUTFREE
.DO AUXPIPE=1 .DO AUXPIPE=1
>SYSCALL2 NewStkObj >SYSCALL2 NewStkObj
.ELSE .ELSE

View File

@ -50,12 +50,17 @@ TCP.IN.JMP.LISTEN
bcs .99 bcs .99
jsr TCP.IN.ACKTheSYN jsr TCP.IN.ACKTheSYN
lda #S.SOCKET.TCP.S.OPENED
jsr SKT.StoreTCB.S
lda #S.TCP.OPTIONS.SYN+S.TCP.OPTIONS.ACK lda #S.TCP.OPTIONS.SYN+S.TCP.OPTIONS.ACK
jsr TCP.OUT.SendOptA SYN received, Send SYN.ACK jsr TCP.OUT.SendOptA SYN received, Send SYN.ACK
bcs .9 bcs .9
lda #S.SOCKET.TCP.S.SYNRCVD lda #S.SOCKET.TCP.S.SYNRCVD
jmp SKT.StoreTCB.S jmp SKT.StoreTCB.S
.9 lda #ERR.SKT.OOS .9 lda #ERR.SKT.OOS
.99 rts .99 rts
*-------------------------------------- *--------------------------------------

View File

@ -35,17 +35,17 @@ L59A6 lda XRW.LastUnitUsed
jsr XRW.CheckMotorOnX check if previous drive running. jsr XRW.CheckMotorOnX check if previous drive running.
beq L59BD branch if stopped. beq L59BD branch if stopped.
jsr XRW.Wait100ms jsr XRW.Wait100usec
lda montimeh lda montimeh
bne L59A6 bne L59A6
L59BD ldx A2L L59BD ldx A2L
bit IO.D2.Ph0Off,x make sure all motor phases are off lda IO.D2.Ph0Off,x make sure all motor phases are off
bit IO.D2.Ph3Off,x lda IO.D2.Ph1Off,x
bit IO.D2.Ph2Off,x lda IO.D2.Ph2Off,x
bit IO.D2.Ph1Off,x lda IO.D2.Ph3Off,x
lda IO.D2.ReadMode,x turn off write enable X = slot $S0 lda IO.D2.ReadMode,x turn off write enable X = slot $S0
nop nop
@ -127,7 +127,7 @@ L5362 lda IO.D2.DrvSel1,x
ldy #7 ldy #7
lda #0 150 ms delay before stepping. lda #0 150 ms delay before stepping.
.1 jsr XRW.Wait100msA .1 jsr XRW.Wait100usecA
dey dey
bne .1 bne .1
@ -146,7 +146,7 @@ L537C plp was motor on ?
* motor was off, wait for it to speed up * motor was off, wait for it to speed up
L537F jsr XRW.Wait100ms wait 100us for each count in montime L537F jsr XRW.Wait100usec wait 100us for each count in montime
lda montimeh lda montimeh
bmi L537F count up to 0000 bmi L537F count up to 0000
@ -181,12 +181,15 @@ L53A4 dec XRW.RetryCnt one less chance.
dec XRW.Recalibrate can only recalibrate once. dec XRW.Recalibrate can only recalibrate once.
bne hndlerr bne hndlerr
lda XRW.CurrentTrack * lda XRW.CurrentTrack
lda #0
pha save track pha save track
clc * clc
adc #8 pretend track is 8 > curtrk * adc #12 pretend track is 8 > curtrk
lda #40
ldy #64 ldy #64
sty XRW.RetryCnt reset retries to 64 max. sty XRW.RetryCnt reset retries to 64 max.
bra L53CC always. bra L53CC always.
@ -559,9 +562,10 @@ wnibl sta IO.D2.WLoad,x (5) nibl write
* montimel, montimeh are incremented once per 100 usec interval * montimel, montimeh are incremented once per 100 usec interval
* for motor on timing. * for motor on timing.
*-------------------------------------- *--------------------------------------
XRW.Wait100ms lda #1 XRW.Wait100usec lda #1
XRW.Wait100msA sec (2) XRW.Wait100usecA
sec (2)
.1 ldx #17 (2) .1 ldx #17 (2)
@ -773,66 +777,46 @@ XRW.Seek ldx XRW.UnitIndex
stx XRW.CurrentQTrack stx XRW.CurrentQTrack
txa txa
jsr XRW.PhaseOn jsr XRW.PhaseOn
lda #104 lda #30
jsr XRW.Wait100msA Trash X jsr XRW.Wait100usecA Trash X
iny iny
bra .1 bra .1
.8 tya .8 tya
beq XRW.PhaseOff.RTS beq XRW.PhaseOn.RTS
lda #0 wait 25.6 ms lda #0 wait 25.6 ms
jsr XRW.Wait100msA Trash X jsr XRW.Wait100usecA Trash X
lda XRW.TargetQTrack lda XRW.TargetQTrack
*-------------------------------------- *--------------------------------------
XRW.PhaseOff bit #1 1,3,5,7 ? * A = QTrack
beq XRW.PhaseOff.2 only half track
XRW.PhaseOff.1 bit IO.D2.Ph0Off SELF MODIFIED
XRW.PhaseOff.2 bit IO.D2.Ph0Off SELF MODIFIED
XRW.PhaseOff.RTS
rts
*-------------------------------------- *--------------------------------------
XRW.PhaseOn bit #1 1,3,5,7 ? XRW.PhaseOff clc
bne .1 only half track .HS B0 BCS
*--------------------------------------
XRW.PhaseOn sec
bit #1
beq .1
jsr .7 php
bra XRW.PhaseOn.2 pha
jsr .1
.1 pha
jsr .7
pla pla
inc inc
jsr .7 plp
bra XRW.PhaseOn.1
.1 and #6
.7 and #6 mask for 0,2,4,6 adc A2L
ora A2L Slot $n0
ora #IO.D2.Ph0On
tax tax
lda IO.D2.Ph0Off,x
lda XRW.PhaseOn.2+1
sta XRW.PhaseOn.1+1
stx XRW.PhaseOn.2+1
lda XRW.PhaseOff.2+1 XRW.PhaseOn.RTS rts
sta XRW.PhaseOff.1+1
dex
stx XRW.PhaseOff.2+1
rts
*--------------------------------------
XRW.PhaseOn.1 bit IO.D2.Ph0On SELF MODIFIED
XRW.PhaseOn.2 bit IO.D2.Ph0On SELF MODIFIED
rts
*-------------------------------------- *--------------------------------------
XRW.Trk2Qtrk asl x2 XRW.Trk2Qtrk asl x2
sta .1+1 sta .1+1

View File

@ -5,11 +5,12 @@ NEW
.OR $2000 .OR $2000
.TF sbin/httpd .TF sbin/httpd
*-------------------------------------- *--------------------------------------
.INB INC/MACROS.I .INB inc/macros.i
.INB INC/A2OSX.I .INB inc/a2osx.i
.INB INC/ETH.I .INB inc/mli.i
.INB INC/LIBTCPIP.I .INB inc/eth.i
.INB INC/NET.HTTP.I .INB inc/libtcpip.i
.INB inc/net.http.i
*-------------------------------------- *--------------------------------------
TIMEOUT.MAX .EQ 30 30 sec. TIMEOUT.MAX .EQ 30 30 sec.
CONN.MAX .EQ 16 CONN.MAX .EQ 16
@ -17,24 +18,29 @@ CONN.MAX .EQ 16
.DUMMY .DUMMY
.OR ZPBIN .OR ZPBIN
ZS.START ZS.START
ZPIPCfgPtr .BS 2 ZPPtr1 .BS 2
ZPSktPtr .BS 2 ZPSktPtr .BS 2
ZPMsgPtr .BS 2 hFile .BS 1
ZPMsgDataPtr .BS 2 hStr .BS 1
ZPMsgDataLen .BS 2
ZPMsgDataCnt .BS 2
ArgIndex .BS 1
hRootdir .BS 1
ZPRootDirPtr .BS 2
ZPStrPtr .BS 2 ZPStrPtr .BS 2
hSrvSocket .BS 1 hSrvSocket .BS 1
hClntSocket .BS 1
hMsg .BS 1
hStr .BS 1
TimeOut .BS 1 TimeOut .BS 1
hSrvName .BS 1
ZPSrvNamePtr .BS 2
hRootdir .BS 1
ZPRootDirPtr .BS 2
hClntSocket .BS 1
hRequest .BS 1
ZPRequestPtr .BS 2
ZPnRequestLen .BS 2
hReply .BS 1
ZPReplyPtr .BS 2
ZS.END .ED ZS.END .ED
*-------------------------------------- *--------------------------------------
* File Header (16 Bytes) * File Header (16 Bytes)
@ -58,9 +64,16 @@ CS.START cld
.DA CS.DOEVENT .DA CS.DOEVENT
.DA CS.QUIT .DA CS.QUIT
L.LIBTCPIP .DA LIBTCPIP L.LIBTCPIP .DA LIBTCPIP
L.ETCHTTPDCONF .DA ETCHTTPDCONF
L.KEYWORDS .DA KEYWORDS
J.KEYWORDS .DA CS.RUN.CONF.SERVERNAME
.DA CS.RUN.CONF.LISTEN
.DA CS.RUN.CONF.DOCUMENTROOT
.DA CS.RUN.CONF.ADDTYPE
L.SA.Local .DA SA.Local L.SA.Local .DA SA.Local
L.MSG.TCPWAIT .DA MSG.TCPWAIT L.MSG.TCPWAIT .DA MSG.TCPWAIT
L.MSG.TCPIPERR .DA MSG.TCPIPERR L.MSG.TCPIPERR .DA MSG.TCPIPERR
L.MSG.INITCONF .DA MSG.INITCONF
L.MSG.INITOK .DA MSG.INITOK L.MSG.INITOK .DA MSG.INITOK
L.MSG.SKTERR .DA MSG.SKTERR L.MSG.SKTERR .DA MSG.SKTERR
L.MSG.INCOMING .DA MSG.INCOMING L.MSG.INCOMING .DA MSG.INCOMING
@ -84,8 +97,8 @@ CS.RUN >LDYA L.MSG.TCPWAIT
>LIBCALL hLIBTCPIP,LIBTCPIP.GETCFG is TCPIP loaded ? >LIBCALL hLIBTCPIP,LIBTCPIP.GETCFG is TCPIP loaded ?
bcs .99 bcs .99
>STYA ZPIPCfgPtr >STYA ZPPtr1
lda (ZPIPCfgPtr) Configured ? lda (ZPPtr1) Configured ?
bmi CS.RUN.INIT bmi CS.RUN.INIT
lda Timeout lda Timeout
@ -101,7 +114,7 @@ CS.RUN >LDYA L.MSG.TCPWAIT
>SYSCALL GetChar >SYSCALL GetChar
bcs CS.RUN.RTS bcs CS.RUN.RTS
cmp #$03 cmp #3 Ctrl-C
bne .1 bne .1
sec sec
@ -117,35 +130,30 @@ CS.RUN.RTS rts
CS.RUN.INIT ldx #3 CS.RUN.INIT ldx #3
ldy #S.IPCFG.IP+3 ldy #S.IPCFG.IP+3
.1 lda (ZPIPCfgPtr),y .1 lda (ZPPtr1),y
sta SA.LOCAL+S.SOCKADDR.ADDR,x sta SA.LOCAL+S.SOCKADDR.ADDR,x
dey dey
dex dex
bpl .1 bpl .1
lda #1 >LDYAI 256
sta ArgIndex >SYSCALL GetMem
>SYSCALL ArgV
bcs CS.RUN.SYN
>SYSCALL atoi
bcs .2
>STYA SA.LOCAL+S.SOCKADDR.PORT
inc ArgIndex
.2 lda ArgIndex
>SYSCALL ArgV
bcs CS.RUN.SYN
>PUSHYA
>PUSHWI 0 Allocate
>SYSCALL RealPath
bcs CS.RUN.RTS bcs CS.RUN.RTS
>STYA ZPRootDirPtr >STYA ZPStrPtr
stx hStr
CS.RUN.ARGSOK >PUSHBI 0 no protocol
>PUSHW L.MSG.INITCONF
>PUSHW L.ETCHTTPDCONF
>PUSHBI 2
>SYSCALL PrintF
bcs CS.RUN.RTS
jsr CS.RUN.CONF
bcs CS.RUN.RTS
>PUSHBI 0 no protocol
lda #S.SOCKET.T.SEQPACKET lda #S.SOCKET.T.SEQPACKET
>LIBCALL hLIBTCPIP,LIBTCPIP.Socket >LIBCALL hLIBTCPIP,LIBTCPIP.Socket
bcs CS.RUN.RTS bcs CS.RUN.RTS
@ -161,13 +169,6 @@ CS.RUN.ARGSOK >PUSHBI 0 no protocol
>LIBCALL hLIBTCPIP,LIBTCPIP.Listen >LIBCALL hLIBTCPIP,LIBTCPIP.Listen
bcs CS.RUN.ERR bcs CS.RUN.ERR
>LDYAI 256
>SYSCALL GetMem
bcs CS.RUN.ERR
>STYA ZPStrPtr
stx hStr
>PUSHW L.MSG.INITOK >PUSHW L.MSG.INITOK
>PUSHW SA.LOCAL+S.SOCKADDR.PORT >PUSHW SA.LOCAL+S.SOCKADDR.PORT
>PUSHW ZPRootDirPtr >PUSHW ZPRootDirPtr
@ -186,6 +187,120 @@ CS.RUN.LOOP >SLEEP
sec sec
CS.RUN.ERR rts CS.RUN.ERR rts
*-------------------------------------- *--------------------------------------
CS.RUN.CONF >PUSHW L.ETCHTTPDCONF
>PUSHBI O.RDONLY+O.TEXT
>PUSHBI S.FI.T.TXT
>PUSHWZ
>SYSCALL FOpen
bcs .99
sta hFile
.1 >PUSHWI 256
>PUSHW ZPStrPtr
lda hFile
>SYSCALL fgets
bcs .8
tya
beq .1
lda (ZPStrPtr)
cmp #'#'
beq .1
>LDYA L.KEYWORDS
>STYA ZPPtr1
ldx #0
.2 ldy #0
.3 lda (ZPPtr1),y
cmp (ZPStrPtr),y
bne .4
iny
cmp #C.SPACE
bne .3
jsr CS.RUN.CONF.JMP
bcc .1
bra .97
.4 inx
inx
ldy #0
.5 iny
lda (ZPPtr1),y
cmp #C.SPACE
bne .5
tya
sec
adc ZPPtr1
sta ZPPtr1
bcc .6
inc ZPPtr1+1
.6 lda (ZPPtr1)
bne .2
.97 lda #E.SYN
.98 pha
jsr .8
pla
sec
.99 rts
.8 lda hFile
>SYSCALL FClose
rts
*--------------------------------------
CS.RUN.CONF.JMP tya
clc
adc ZPStrPtr
sta ZPPtr1
tay
lda #0
adc ZPStrPtr+1
sta ZPPtr1+1
jmp (J.KEYWORDS,x)
CS.RUN.CONF.SERVERNAME
>SYSCALL StrDup
bcs .9
>STYA ZPSrvNamePtr
stx hSrvName
.9 rts
CS.RUN.CONF.LISTEN
>SYSCALL atoi
bcs .9
>STYA SA.LOCAL+S.SOCKADDR.PORT
.9 rts
CS.RUN.CONF.DOCUMENTROOT
>PUSHYA
>PUSHWI 0 Allocate
>SYSCALL RealPath
bcs .9
>STYA ZPRootDirPtr
stx hRootdir
.9 rts
CS.RUN.CONF.ADDTYPE
clc
rts
*--------------------------------------
CS.RUN.SERVER lda hSrvSocket CS.RUN.SERVER lda hSrvSocket
>LIBCALL hLIBTCPIP,LIBTCPIP.accept >LIBCALL hLIBTCPIP,LIBTCPIP.accept
bcs .8 bcs .8
@ -216,6 +331,7 @@ CS.RUN.SERVER lda hSrvSocket
CS.RUN.CLIENT CS.RUN.CLIENT
.1 >SLEEP .1 >SLEEP
lda hClntSocket
>LIBCALL hLIBTCPIP,LIBTCPIP.Recv >LIBCALL hLIBTCPIP,LIBTCPIP.Recv
bcc .2 bcc .2
@ -223,21 +339,43 @@ CS.RUN.CLIENT
beq .1 beq .1
bra .8 bra .8
.2 jsr CS.RUN.MSG.INIT .2 sta hRequest
>SYSCALL GetMemPtr
>STYA ZPRequestPtr
ldy #S.IP.TOTAL.LENGTH+1
lda (ZPRequestPtr),y
sec
sbc #S.TCP-S.IP
eor #$ff
sta ZPnRequestLen
dey
lda (ZPRequestPtr),y
sbc /S.TCP-S.IP
eor #$ff
sta ZPnRequestLen+1
lda ZPRequestPtr
clc
adc #S.TCP
sta ZPRequestPtr
bcc .3
inc ZPRequestPtr+1
.3 jsr CS.RUN.MSG.GetStr .3 jsr CS.RUN.REQUEST.GetStr
bcs .7 bcs .7
>PUSHYA >LDYA ZPStrPtr
>PUSHW ZPStrPtr >SYSCALL puts
ldy #S.PS.hStdOut
lda (pPS),y
>SYSCALL fwrite
bra .3 bra .3
lda hMsg * jsr CS.RUN.REPLY.INIT
>SYSCALL FreeMem
* lda hReply
* >SYSCALL FreeMem
.7 >PUSHWI HTTP.200OK.len .7 >PUSHWI HTTP.200OK.len
>PUSHW L.HTTP.200OK >PUSHW L.HTTP.200OK
@ -250,61 +388,31 @@ CS.RUN.CLIENT
clc clc
rts rts
*-------------------------------------- *--------------------------------------
CS.RUN.MSG.INIT sta hMsg CS.RUN.REQUEST.GetStr
>SYSCALL GetMemptr
>STYA ZPMsgPtr
pha
tya
* clc
adc #S.TCP
sta ZPMsgDataPtr
pla
adc /S.TCP
sta ZPMsgDataPtr+1
ldy #S.IP.TOTAL.LENGTH+1
lda (ZPMsgPtr),y
sec
sbc #S.IP
sta ZPMsgDataLen
eor #$ff
sta ZPMsgDataCnt
dey
lda (ZPMsgPtr),y
sbc /S.IP
sta ZPMsgDataLen+1
eor #$ff
sta ZPMsgDataCnt+1
rts
*--------------------------------------
CS.RUN.MSG.GetStr
ldy #0 ldy #0
.1 inc ZPMsgDataCnt .1 inc ZPnRequestLen
bne .2 bne .2
inc ZPMsgDataCnt+1 inc ZPnRequestLen+1
beq .9 beq .9
.2 lda (ZPMsgDataPtr) .2 lda (ZPRequestPtr)
inc ZPMsgDataPtr inc ZPRequestPtr
bne .21 bne .21
inc ZPMsgDataPtr+1 inc ZPRequestPtr+1
.21 cmp #C.CR .21 cmp #C.CR
bne .4 bne .4
inc ZPMsgDataCnt inc ZPnRequestLen
bne .3 bne .3
inc ZPMsgDataCnt+1 inc ZPnRequestLen+1
beq .9 beq .9
.3 lda (ZPMsgDataPtr) .3 lda (ZPRequestPtr)
inc ZPMsgDataPtr inc ZPRequestPtr
bne .31 bne .31
inc ZPMsgDataPtr+1 inc ZPRequestPtr+1
.31 eor #C.LF .31 eor #C.LF
bne .9 bne .9
@ -320,6 +428,10 @@ CS.RUN.MSG.GetStr
.9 sec .9 sec
rts rts
*-------------------------------------- *--------------------------------------
CS.RUN.REPLY.INIT
rts
*--------------------------------------
CS.DOEVENT lda (pEvent) CS.DOEVENT lda (pEvent)
bpl .9 is it a TIMER event? bpl .9 is it a TIMER event?
lda TimeOut lda TimeOut
@ -330,11 +442,18 @@ CS.DOEVENT lda (pEvent)
rts rts
*-------------------------------------- *--------------------------------------
CS.QUIT lda hSrvSocket CS.QUIT lda hSrvSocket
beq .3 beq .1
>LIBCALL hLIBTCPIP,LIBTCPIP.Shutdown >LIBCALL hLIBTCPIP,LIBTCPIP.Shutdown
.3 lda hLIBTCPIP .1 lda hStr
beq .2
>SYSCALL FreeMem
.2
lda hLIBTCPIP
beq .8 beq .8
>SYSCALL UnloadLib >SYSCALL UnloadLib
@ -346,15 +465,24 @@ CS.END
*-------------------------------------- *--------------------------------------
hLIBTCPIP .BS 1 hLIBTCPIP .BS 1
LIBTCPIP .AZ "libtcpip" LIBTCPIP .AZ "libtcpip"
ETCHTTPDCONF .AZ "${BOOT}etc/httpd.conf"
*--------------------------------------
KEYWORDS .AS "ServerName "
.AS "Listen "
.AS "DocumentRoot "
.AS "AddType "
.DA #0
*--------------------------------------
MSG.TCPWAIT .AZ "HTTPD:Waiting for TCP/IP initializing..." MSG.TCPWAIT .AZ "HTTPD:Waiting for TCP/IP initializing..."
MSG.TCPIPERR .AZ "HTTPD:TCP/IP Not initialized properly." MSG.TCPIPERR .AZ "HTTPD:TCP/IP Not initialized properly."
MSG.INITCONF .AZ "HTTPD:Reading %s file...\r\n"
MSG.INITOK .AZ "HTTPD:Listening on port %D, root dir: %s.\r\n" MSG.INITOK .AZ "HTTPD:Listening on port %D, root dir: %s.\r\n"
MSG.SKTERR .AZ "HTTPD:Listen Error." MSG.SKTERR .AZ "HTTPD:Listen Error."
MSG.INCOMING .AZ "HTTPD:Incoming Connection [SKT=%h] From : %d.%d.%d.%d\r\n" MSG.INCOMING .AZ "HTTPD:Incoming Connection [SKT=%h] From : %d.%d.%d.%d\r\n"
*-------------------------------------- *--------------------------------------
HTTP.200OK .AS "HTTP/1.1 200 OK" HTTP.200OK .AS "HTTP/1.1 200 OK"
.DA #C.CR,#C.LF .DA #C.CR,#C.LF
.AS "Server: A2osX-HTTPD 0.93" .AS "Server: A2osX-HTTPD 0.94"
.DA #C.CR,#C.LF .DA #C.CR,#C.LF
.AS "Content-Type: text/html" .AS "Content-Type: text/html"
.DA #C.CR,#C.LF .DA #C.CR,#C.LF
@ -363,7 +491,7 @@ HTTP.200OK .AS "HTTP/1.1 200 OK"
.AS "Connection: Close" .AS "Connection: Close"
.DA #C.CR,#C.LF .DA #C.CR,#C.LF
.DA #C.CR,#C.LF .DA #C.CR,#C.LF
.AS "<HTML><BODY>Hello From A2osX-HTTPD 0.93 !</BODY></HTML>" .AS "<HTML><BODY>Hello From A2osX-HTTPD 0.94 !</BODY></HTML>"
.DA #C.CR,#C.LF .DA #C.CR,#C.LF
HTTP.200OK.len .EQ *-HTTP.200OK HTTP.200OK.len .EQ *-HTTP.200OK
*-------------------------------------- *--------------------------------------
@ -379,5 +507,5 @@ DS.END
.ED .ED
*-------------------------------------- *--------------------------------------
MAN MAN
SAVE USR/SRC/SBIN/HTTPD.S SAVE usr/src/sbin/httpd.s
ASM ASM