mirror of
https://github.com/A2osX/A2osX.git
synced 2024-05-31 16:41:30 +00:00
Kernel 0.94
This commit is contained in:
parent
d9b9f5542c
commit
4c74e6f2f2
Binary file not shown.
Binary file not shown.
Binary file not shown.
|
@ -67,7 +67,8 @@ CS.START cld
|
||||||
.DA CS.DOEVENT
|
.DA CS.DOEVENT
|
||||||
.DA CS.QUIT
|
.DA CS.QUIT
|
||||||
L.LIBBLKDEV .DA LIBBLKDEV
|
L.LIBBLKDEV .DA LIBBLKDEV
|
||||||
L.MSG.USAGE .DA MSG.USAGE
|
L.MSG.USAGE1 .DA MSG.USAGE1
|
||||||
|
L.MSG.USAGE2 .DA MSG.USAGE2
|
||||||
L.MSG.OK .DA MSG.OK
|
L.MSG.OK .DA MSG.OK
|
||||||
L.MSG.ERR .DA MSG.ERR
|
L.MSG.ERR .DA MSG.ERR
|
||||||
L.MSG.CRLF .DA MSG.CRLF
|
L.MSG.CRLF .DA MSG.CRLF
|
||||||
|
@ -130,7 +131,10 @@ CS.RUN ldy #S.PS.ARGC
|
||||||
>STYA BlkCnt
|
>STYA BlkCnt
|
||||||
bra .1
|
bra .1
|
||||||
|
|
||||||
.99 >PUSHW L.MSG.USAGE
|
.99 >PUSHW L.MSG.USAGE1
|
||||||
|
>PUSHBI 0
|
||||||
|
>SYSCALL PrintF
|
||||||
|
>PUSHW L.MSG.USAGE2
|
||||||
>PUSHBI 0
|
>PUSHBI 0
|
||||||
>SYSCALL PrintF
|
>SYSCALL PrintF
|
||||||
lda #E.SYN
|
lda #E.SYN
|
||||||
|
@ -341,10 +345,11 @@ CS.RUN.LL.DISKII
|
||||||
>LIBCALL hLIBBLKDEV,LIBBLKDEV.D2TrkWrite16s
|
>LIBCALL hLIBBLKDEV,LIBBLKDEV.D2TrkWrite16s
|
||||||
bcs .9
|
bcs .9
|
||||||
|
|
||||||
inc CurTrack
|
|
||||||
dec Counter
|
dec Counter
|
||||||
beq .8
|
beq .8
|
||||||
|
|
||||||
|
inc CurTrack
|
||||||
|
|
||||||
lda CurQTrack
|
lda CurQTrack
|
||||||
* clc
|
* clc
|
||||||
adc Stepping
|
adc Stepping
|
||||||
|
@ -363,8 +368,6 @@ CS.RUN.LL.DISKII
|
||||||
.8 ldx #0
|
.8 ldx #0
|
||||||
jsr CS.RUN.SeekToX
|
jsr CS.RUN.SeekToX
|
||||||
|
|
||||||
jsr CS.RUN.MotorOff
|
|
||||||
|
|
||||||
>PUSHW L.MSG.CRLF
|
>PUSHW L.MSG.CRLF
|
||||||
>PUSHBI 0
|
>PUSHBI 0
|
||||||
>SYSCALL PrintF
|
>SYSCALL PrintF
|
||||||
|
@ -373,7 +376,7 @@ CS.RUN.LL.DISKII
|
||||||
bit bVerify
|
bit bVerify
|
||||||
bmi CS.RUN.LL.DISKII.V
|
bmi CS.RUN.LL.DISKII.V
|
||||||
|
|
||||||
rts
|
jmp CS.RUN.MotorOff
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
CS.RUN.LL.DISKII.V
|
CS.RUN.LL.DISKII.V
|
||||||
>PUSHW L.MSG.VERIFY
|
>PUSHW L.MSG.VERIFY
|
||||||
|
@ -598,11 +601,12 @@ CS.END
|
||||||
LIBBLKDEV .AZ "libblkdev"
|
LIBBLKDEV .AZ "libblkdev"
|
||||||
hLIBBLKDEV .BS 1
|
hLIBBLKDEV .BS 1
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
MSG.USAGE .AS "Usage : FORMAT <BLOCKDEV> [VOLUME.NAME]\r\n"
|
MSG.USAGE1 .AS "Usage : FORMAT <BLOCKDEV> [VOL.NAME]\r\n"
|
||||||
.AS " -L : Low-Level Format\r\n"
|
.AS " -L : Low-Level Format\r\n"
|
||||||
.AS " -H : 35trk drives, High Density: 47 tracks, 376 Blocks\r\n"
|
.AZ " -H : 35trk drives, High Density: 47 tracks, 376 Blocks\r\n"
|
||||||
.AS " -X : 40trk drives, 320 Blocks, combined with -H = 432 Blocks\r\n"
|
MSG.USAGE2 .AS " -X : 40trk drives, 320 Blocks, combined with -H, 432 Blocks\r\n"
|
||||||
.AS " -B xxxx : override Device block size\r\n"
|
.AS " -V : Verify\r\n"
|
||||||
|
.AS " -B xxxx : Smrtprt, Override Device block size\r\n"
|
||||||
.AZ " -1-9 : Catalog Size (Blocks)\r\n"
|
.AZ " -1-9 : Catalog Size (Blocks)\r\n"
|
||||||
MSG.OK .AZ "[OK]"
|
MSG.OK .AZ "[OK]"
|
||||||
MSG.ERR .AS "[%h]"
|
MSG.ERR .AS "[%h]"
|
||||||
|
|
|
@ -4,8 +4,5 @@ NEW
|
||||||
ServerName www.example.com:6580
|
ServerName www.example.com:6580
|
||||||
Listen 6580
|
Listen 6580
|
||||||
DocumentRoot ${ROOT}srv/www
|
DocumentRoot ${ROOT}srv/www
|
||||||
# mime types
|
|
||||||
AddType html text/html
|
|
||||||
AddType png image.png
|
|
||||||
MAN
|
MAN
|
||||||
TEXT etc/httpd.conf
|
TEXT etc/httpd.conf
|
||||||
|
|
|
@ -308,15 +308,13 @@ BB.Read lda BB.HdrTrk get track we're on
|
||||||
|
|
||||||
ldy #0
|
ldy #0
|
||||||
|
|
||||||
.1 ldx BB.CurQTrk
|
|
||||||
|
|
||||||
tya
|
|
||||||
beq .2
|
beq .2
|
||||||
|
|
||||||
txa
|
.1 lda BB.CurQTrk
|
||||||
jsr BB.PhaseOff
|
jsr BB.PhaseOff
|
||||||
|
|
||||||
.2 cpx BB.TargetQTrk
|
.2 ldx BB.CurQTrk
|
||||||
|
cpx BB.TargetQTrk
|
||||||
beq .8
|
beq .8
|
||||||
|
|
||||||
bcs .3
|
bcs .3
|
||||||
|
@ -332,8 +330,8 @@ BB.Read lda BB.HdrTrk get track we're on
|
||||||
txa
|
txa
|
||||||
jsr BB.PhaseOn
|
jsr BB.PhaseOn
|
||||||
|
|
||||||
lda #104
|
lda #114
|
||||||
jsr BB.MSWait Trash X
|
jsr BB.Wait100usecA Trash X
|
||||||
|
|
||||||
iny
|
iny
|
||||||
|
|
||||||
|
@ -343,42 +341,37 @@ BB.Read lda BB.HdrTrk get track we're on
|
||||||
beq seekend
|
beq seekend
|
||||||
|
|
||||||
lda #0 wait 25.6 ms
|
lda #0 wait 25.6 ms
|
||||||
jsr BB.MSWait Trash X
|
jsr BB.Wait100usecA Trash X
|
||||||
|
|
||||||
lda BB.TargetQTrk
|
lda BB.TargetQTrk
|
||||||
jsr BB.PhaseOff
|
jsr BB.PhaseOff
|
||||||
bcs seekend CS from BB.MSWait
|
bcs seekend CS from BB.MSWait
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
BB.PhaseOff bit #1 1,3,5,7 ?
|
BB.PhaseOff clc
|
||||||
beq BB.PhaseOff.2 only half track
|
.HS B0 BCS
|
||||||
|
|
||||||
BB.PhaseOff.1 bit IO.D2.Ph0Off
|
|
||||||
BB.PhaseOff.2 bit IO.D2.Ph0Off
|
|
||||||
|
|
||||||
BB.PhaseOff.8 rts
|
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
BB.PhaseOn bit #1 1,3,5,7 ?
|
BB.PhaseOn sec
|
||||||
beq .7
|
|
||||||
|
|
||||||
|
bit #1
|
||||||
|
beq .1
|
||||||
|
|
||||||
|
php
|
||||||
pha
|
pha
|
||||||
inc
|
jsr .1
|
||||||
jsr .7
|
|
||||||
pla
|
pla
|
||||||
|
inc
|
||||||
|
plp
|
||||||
|
|
||||||
.7 and #6 mask for 0,2,4,6
|
.1 and #6 mask for 0,2,4,6
|
||||||
ora slotz Slot $n0
|
|
||||||
ora #IO.D2.Ph0On
|
adc slotz Slot $n0
|
||||||
tax
|
tax
|
||||||
bit $C000,x turn on one phase
|
sta IO.D2.Ph0Off,x
|
||||||
|
nop
|
||||||
|
|
||||||
lda BB.PhaseOff.2+1
|
|
||||||
sta BB.PhaseOff.1+1
|
|
||||||
|
|
||||||
dex
|
|
||||||
stx BB.PhaseOff.2+1
|
|
||||||
rts
|
rts
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
BB.MSWait sec (6) JSR (2)
|
BB.Wait100usecA sec (6) JSR (2)
|
||||||
|
|
||||||
.1 ldx #19 (2)
|
.1 ldx #19 (2)
|
||||||
|
|
||||||
|
@ -388,7 +381,7 @@ BB.MSWait sec (6) JSR (2)
|
||||||
sbc #1 (2) done 'n' intervals?
|
sbc #1 (2) done 'n' intervals?
|
||||||
bne .1 (2+) a-reg counts
|
bne .1 (2+) a-reg counts
|
||||||
|
|
||||||
BB.MSWait.RTS rts (6)
|
rts (6)
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
BB.Trk2Qtrk asl x2
|
BB.Trk2Qtrk asl x2
|
||||||
sta .1+1
|
sta .1+1
|
||||||
|
|
|
@ -26,28 +26,21 @@ D2Recalibrate >PULLB DrvSlt
|
||||||
bcs .9
|
bcs .9
|
||||||
|
|
||||||
stz MoveTo
|
stz MoveTo
|
||||||
lda #162
|
lda #252
|
||||||
sta MoveFrom
|
sta MoveFrom
|
||||||
|
|
||||||
jsr D2MoveHead.1
|
jsr D2MoveHead.1
|
||||||
|
|
||||||
lda #0
|
* lda #0
|
||||||
jsr D2.PhaseOn
|
* jsr D2.PhaseOn
|
||||||
|
|
||||||
|
* lda #0 wait 25.6 ms
|
||||||
|
* jsr D2.Wait100usecA
|
||||||
|
* lda #0
|
||||||
|
* jsr D2.PhaseOff
|
||||||
|
|
||||||
lda #0 wait 25.6 ms
|
lda #0 wait 25.6 ms
|
||||||
jsr D2.Wait100usecA Trash X
|
jsr D2.Wait100usecA
|
||||||
* 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
|
|
||||||
jsr D2.Wait100usecA Trash X
|
|
||||||
|
|
||||||
clc
|
clc
|
||||||
.9 rts
|
.9 rts
|
||||||
|
@ -59,84 +52,104 @@ D2MoveHead >PULLB MoveTo
|
||||||
jsr CheckDiskII
|
jsr CheckDiskII
|
||||||
bcs .9
|
bcs .9
|
||||||
|
|
||||||
php
|
|
||||||
sei
|
|
||||||
jsr D2MoveHead.1
|
jsr D2MoveHead.1
|
||||||
plp
|
|
||||||
clc
|
clc
|
||||||
.9 rts
|
.9 rts
|
||||||
|
|
||||||
D2MoveHead.1 ldy #0
|
D2MoveHead.1 ldy #0
|
||||||
|
|
||||||
.1 ldx MoveFrom
|
.1 lda MoveTo
|
||||||
|
sec
|
||||||
tya
|
sbc MoveFrom
|
||||||
beq .2
|
|
||||||
|
|
||||||
txa
|
|
||||||
jsr D2.PhaseOff
|
|
||||||
|
|
||||||
.2 cpx MoveTo
|
|
||||||
beq .8
|
beq .8
|
||||||
|
|
||||||
bcs .3
|
bcc .3
|
||||||
|
|
||||||
inx MoveFrom<MoveTo, must move in
|
* Current < Target, must move in
|
||||||
|
|
||||||
.HS B0 BCS
|
cmp #2
|
||||||
|
bcc .5 one QT remaining
|
||||||
|
|
||||||
.3 dex MoveFrom>MoveTo, must move out
|
lda MoveFrom 2 or more
|
||||||
|
and #$FE from QT1 or QT3
|
||||||
|
inc
|
||||||
|
inc
|
||||||
|
bra .4
|
||||||
|
|
||||||
stx MoveFrom
|
* Current > Target, must move out
|
||||||
|
|
||||||
txa
|
.3 cmp #$FF
|
||||||
|
beq .5 one QT remaining
|
||||||
|
|
||||||
|
lda MoveFrom
|
||||||
|
bit #1 from QT1 or QT3
|
||||||
|
bne .30
|
||||||
|
|
||||||
|
dec
|
||||||
|
.30 dec
|
||||||
|
|
||||||
|
.4 sta MoveFrom
|
||||||
jsr D2.PhaseOn
|
jsr D2.PhaseOn
|
||||||
|
|
||||||
lda #0
|
lda #164
|
||||||
jsr D2.Wait100usecA Trash X
|
jsr D2.Wait100usecA
|
||||||
|
|
||||||
iny
|
|
||||||
|
|
||||||
bra .1
|
bra .1
|
||||||
|
|
||||||
|
.5 lda MoveTo
|
||||||
|
and #6
|
||||||
|
ora Slotn0
|
||||||
|
tax
|
||||||
|
inc
|
||||||
|
inc
|
||||||
|
and #$F7
|
||||||
|
tay
|
||||||
|
lda IO.D2.Ph0On,x
|
||||||
|
lda IO.D2.Ph0On,y
|
||||||
|
|
||||||
|
phx
|
||||||
|
* lda #164
|
||||||
|
* jsr D2.Wait100usecA
|
||||||
|
|
||||||
|
lda #0 wait 25.6 ms
|
||||||
|
jsr D2.Wait100usecA
|
||||||
|
plx
|
||||||
|
|
||||||
|
lda IO.D2.Ph0Off,x
|
||||||
|
lda IO.D2.Ph0Off,y
|
||||||
|
rts
|
||||||
|
|
||||||
.8 tya
|
.8 tya
|
||||||
beq D2.PhaseOn.RTS
|
beq D2.PhaseOn.RTS
|
||||||
|
|
||||||
lda #0 wait 25.6 ms
|
lda #0 wait 25.6 ms
|
||||||
jsr D2.Wait100usecA Trash X
|
jsr D2.Wait100usecA
|
||||||
|
|
||||||
lda MoveTo
|
lda IO.D2.Ph0Off,y
|
||||||
|
rts
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
D2.PhaseOff clc
|
D2.PhaseOn and #6
|
||||||
.HS B0 BCS
|
ora Slotn0
|
||||||
*--------------------------------------
|
tax
|
||||||
D2.PhaseOn sec
|
pha
|
||||||
|
tya
|
||||||
bit #1
|
|
||||||
beq .1
|
beq .1
|
||||||
|
|
||||||
php
|
lda IO.D2.Ph0Off,y
|
||||||
pha
|
|
||||||
jsr .1
|
|
||||||
pla
|
|
||||||
inc
|
|
||||||
plp
|
|
||||||
|
|
||||||
.1 and #6
|
|
||||||
adc Slotn0
|
|
||||||
tax
|
|
||||||
lda IO.D2.Ph0Off,x
|
|
||||||
|
|
||||||
|
.1 lda IO.D2.Ph0On,x
|
||||||
|
ply
|
||||||
D2.PhaseOn.RTS rts
|
D2.PhaseOn.RTS rts
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
D2.Wait100usecA sec
|
D2.Wait100usecA sec (2)
|
||||||
|
|
||||||
.1 ldx #19 (2)
|
.1 ldx #19 (2)
|
||||||
|
|
||||||
.2 dex (2)
|
.2 dex (2)
|
||||||
bne .2 (3)
|
bne .2 (3)
|
||||||
|
|
||||||
|
ldx Slotn0 (3)
|
||||||
|
bit IO.D2.RData,x (4) Slow down ACC boards
|
||||||
|
|
||||||
sbc #1
|
sbc #1
|
||||||
bne .1
|
bne .1
|
||||||
|
|
||||||
|
|
|
@ -11,18 +11,18 @@ NEW
|
||||||
.INB inc/mli.e.i
|
.INB inc/mli.e.i
|
||||||
.INB inc/io.d2.i
|
.INB inc/io.d2.i
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
* 300rpm = 5rps = 200000us / 4ms = 50000 bits MAX
|
* 300rpm = 5rps = 200000us / 4us = 50000 bits MAX
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
TRACK16.LEN .EQ 6400
|
TRACK16.LEN .EQ 6400
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
TRACK16.GAP1 .EQ 64 640 bits
|
TRACK16.GAP1 .EQ 80 800 bits
|
||||||
* 16 * (
|
* 16 * (
|
||||||
*Address field = D5AA96 + 4x2 + DEAAEB = 14 112 bits
|
*Address field = D5AA96 + 4x2 + DEAAEB = 14 112 bits
|
||||||
TRACK16.GAP2 .EQ 6 60 bits
|
TRACK16.GAP2 .EQ 5 60 bits
|
||||||
*Data field = D5AAAD + 342 + CS + DEAAEB = 349 2792 bits
|
*Data field = D5AAAD + 342 + CS + DEAAEB = 349 2792 bits
|
||||||
TRACK16.GAP3 .EQ 17 170 bits
|
TRACK16.GAP3 .EQ 17 170 bits
|
||||||
* )
|
* )
|
||||||
* 64 + 16 * (14 + 6 + 349 + 17) = 6240 50784 bits (6348)
|
* 80 + 16 * (14 + 6 + 349 + 17) = 6256 49984 bits
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
TRACK9.LEN .EQ 6511
|
TRACK9.LEN .EQ 6511
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
|
|
|
@ -341,11 +341,20 @@ SKT.shutdown pha
|
||||||
lda (ZPPtrSKT),y
|
lda (ZPPtrSKT),y
|
||||||
cmp #S.SOCKET.T.STREAM
|
cmp #S.SOCKET.T.STREAM
|
||||||
beq SKT.shutdown.STREAM
|
beq SKT.shutdown.STREAM
|
||||||
|
*--------------------------------------
|
||||||
|
cmp #S.SOCKET.T.SEQPACKET
|
||||||
|
bne SKT.shutdown.DGRAM
|
||||||
|
|
||||||
|
pla
|
||||||
|
pha
|
||||||
|
|
||||||
|
jsr SKT.shutdown.TCP
|
||||||
|
|
||||||
|
* bcs SKT.shutdown.RTS
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
SKT.shutdown.LISTEN
|
SKT.shutdown.LISTEN
|
||||||
SKT.shutdown.RAW
|
SKT.shutdown.RAW
|
||||||
SKT.shutdown.DGRAM
|
SKT.shutdown.DGRAM
|
||||||
SKT.shutdown.SEQPACKET
|
|
||||||
.1 ldy #S.SOCKET.HQ.TAIL
|
.1 ldy #S.SOCKET.HQ.TAIL
|
||||||
lda (ZPPtrSKT),y
|
lda (ZPPtrSKT),y
|
||||||
ldy #S.SOCKET.HQ.HEAD
|
ldy #S.SOCKET.HQ.HEAD
|
||||||
|
@ -386,10 +395,13 @@ SKT.shutdown.SEQPACKET
|
||||||
.5 stz SKT.TABLE,x
|
.5 stz SKT.TABLE,x
|
||||||
>SYSCALL2 freemem
|
>SYSCALL2 freemem
|
||||||
* clc
|
* clc
|
||||||
|
SKT.shutdown.RTS
|
||||||
rts
|
rts
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
SKT.shutdown.STREAM
|
SKT.shutdown.STREAM
|
||||||
pla
|
pla
|
||||||
|
|
||||||
|
SKT.shutdown.TCP
|
||||||
jsr SKT.GetTCB
|
jsr SKT.GetTCB
|
||||||
ldy #S.SOCKET.TCP.S
|
ldy #S.SOCKET.TCP.S
|
||||||
lda (ZPPtrSKT),y
|
lda (ZPPtrSKT),y
|
||||||
|
@ -411,7 +423,6 @@ SKT.shutdown.STREAM
|
||||||
.3 lda #S.SOCKET.TCP.S.TIMEWT
|
.3 lda #S.SOCKET.TCP.S.TIMEWT
|
||||||
jmp SKT.StoreTCB.S
|
jmp SKT.StoreTCB.S
|
||||||
|
|
||||||
.8 clc
|
|
||||||
.9 rts
|
.9 rts
|
||||||
*/--------------------------------------
|
*/--------------------------------------
|
||||||
* # Read (STREAM)
|
* # Read (STREAM)
|
||||||
|
@ -882,11 +893,7 @@ SKT.Recv clc
|
||||||
plp
|
plp
|
||||||
bcc .10 not a SEQPKT socket
|
bcc .10 not a SEQPKT socket
|
||||||
|
|
||||||
pha
|
.10 plp if CS, RecvFrom
|
||||||
jsr SKT.Recv.ACKSEQPKT
|
|
||||||
pla
|
|
||||||
|
|
||||||
.10 plp
|
|
||||||
bcc .9 Exit with CC and A=hFrame
|
bcc .9 Exit with CC and A=hFrame
|
||||||
|
|
||||||
pha
|
pha
|
||||||
|
@ -943,12 +950,6 @@ SKT.Recv clc
|
||||||
plp
|
plp
|
||||||
sec
|
sec
|
||||||
rts
|
rts
|
||||||
*--------------------------------------
|
|
||||||
SKT.Recv.ACKSEQPKT
|
|
||||||
|
|
||||||
* TODO : compute ACK
|
|
||||||
clc
|
|
||||||
rts
|
|
||||||
*/--------------------------------------
|
*/--------------------------------------
|
||||||
* # Send (RAW,DGRAM,SEQPACKET)
|
* # Send (RAW,DGRAM,SEQPACKET)
|
||||||
* # SendTo (RAW,DGRAM,SEQPACKET)
|
* # SendTo (RAW,DGRAM,SEQPACKET)
|
||||||
|
@ -1000,10 +1001,6 @@ SKT.Send.8 jsr SKT.SetFrameOutDstIP
|
||||||
clc Queue if fail
|
clc Queue if fail
|
||||||
jmp FRM.SendIP
|
jmp FRM.SendIP
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
SKT.Send.STREAM lda #ERR.SKT.BAD
|
|
||||||
sec
|
|
||||||
SKT.Send.9 rts
|
|
||||||
*--------------------------------------
|
|
||||||
SKT.Send.SEQPACKET
|
SKT.Send.SEQPACKET
|
||||||
>LDYA ZPDataInLen
|
>LDYA ZPDataInLen
|
||||||
jsr TCP.NewFrame
|
jsr TCP.NewFrame
|
||||||
|
@ -1013,14 +1010,11 @@ SKT.Send.SEQPACKET
|
||||||
|
|
||||||
jsr SKT.CopyDataInToOut
|
jsr SKT.CopyDataInToOut
|
||||||
|
|
||||||
ldy #S.TCP.WINDOW
|
|
||||||
lda /K.TCP.WSIZE
|
|
||||||
sta (ZPFrameOutPtr),y
|
|
||||||
iny
|
|
||||||
lda #K.TCP.WSIZE
|
|
||||||
sta (ZPFrameOutPtr),y
|
|
||||||
|
|
||||||
jmp TCP.OUT.SEQSEND
|
jmp TCP.OUT.SEQSEND
|
||||||
|
*--------------------------------------
|
||||||
|
SKT.Send.STREAM lda #ERR.SKT.BAD
|
||||||
|
sec
|
||||||
|
SKT.Send.9 rts
|
||||||
*/--------------------------------------
|
*/--------------------------------------
|
||||||
* # GetSockOpt
|
* # GetSockOpt
|
||||||
* Set Socket Options
|
* Set Socket Options
|
||||||
|
|
|
@ -47,7 +47,7 @@ TCP.IN.JMP.LISTEN
|
||||||
jsr SKT.SetRemAddr
|
jsr SKT.SetRemAddr
|
||||||
|
|
||||||
jsr SKT.NewTCB
|
jsr SKT.NewTCB
|
||||||
bcs .99
|
bcs .9
|
||||||
|
|
||||||
jsr TCP.IN.ACKTheSYN
|
jsr TCP.IN.ACKTheSYN
|
||||||
|
|
||||||
|
@ -61,8 +61,7 @@ TCP.IN.JMP.LISTEN
|
||||||
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 rts
|
||||||
.99 rts
|
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
TCP.IN.JMP.SYNSENT
|
TCP.IN.JMP.SYNSENT
|
||||||
ldy #S.TCP.OPTIONS SYN Send, only accept SYN.ACK packet, then Send ACK
|
ldy #S.TCP.OPTIONS SYN Send, only accept SYN.ACK packet, then Send ACK
|
||||||
|
@ -195,27 +194,30 @@ TCP.IN.JMP.ESTBLSH
|
||||||
eor SKT.Cache+S.SOCKET.TCP.INSEQNUM,x
|
eor SKT.Cache+S.SOCKET.TCP.INSEQNUM,x
|
||||||
bne .9 Missed a frame.....
|
bne .9 Missed a frame.....
|
||||||
|
|
||||||
.51 dey
|
dey
|
||||||
dex
|
dex
|
||||||
bpl .5
|
bpl .5
|
||||||
|
|
||||||
ldy #S.SOCKET.T Create a new client socket
|
ldy #S.SOCKET.T
|
||||||
lda (ZPPtrSKT),y
|
lda (ZPPtrSKT),y
|
||||||
cmp #S.SOCKET.T.STREAM
|
cmp #S.SOCKET.T.STREAM
|
||||||
bne .52
|
bne .52
|
||||||
|
|
||||||
jsr SKT.AddDataToSktIn yes, queue data if there is room for....
|
jsr SKT.AddDataToSktIn yes, queue data if there is room for....
|
||||||
bra .59
|
bcs .9
|
||||||
|
|
||||||
|
bra .6
|
||||||
|
|
||||||
.52 lda hFrameIn
|
.52 lda hFrameIn
|
||||||
jsr SKT.AddToQueueA
|
jsr SKT.AddToQueueA
|
||||||
bcs .9
|
bcs .9
|
||||||
|
|
||||||
.59 lda ZPDataInLen
|
.6 lda ZPDataInLen
|
||||||
ldy ZPDataInLen+1
|
ldy ZPDataInLen+1
|
||||||
ldx #S.SOCKET.TCP.INSEQNUM
|
ldx #S.SOCKET.TCP.INSEQNUM
|
||||||
jsr TCP.AddAYToSktCacheAtX
|
jsr TCP.AddAYToSktCacheAtX
|
||||||
|
|
||||||
.6 jsr SKT.StoreTCB update socket
|
jsr SKT.StoreTCB update socket
|
||||||
* jsr TCP.SetSocketTCPO.ACK ...and ack data
|
* jsr TCP.SetSocketTCPO.ACK ...and ack data
|
||||||
lda #S.TCP.OPTIONS.ACK
|
lda #S.TCP.OPTIONS.ACK
|
||||||
jsr TCP.OUT.SendOptA
|
jsr TCP.OUT.SendOptA
|
||||||
|
@ -465,14 +467,14 @@ TCP.OUT lda SKT.Cache+S.SOCKET.TCP.OUTTOSEND+1
|
||||||
|
|
||||||
jsr SKT.GetDataFromSktOut
|
jsr SKT.GetDataFromSktOut
|
||||||
|
|
||||||
ldy #S.TCP.WINDOW
|
TCP.OUT.SEQSEND ldy #S.TCP.WINDOW
|
||||||
lda SKT.Cache+S.SOCKET.TCP.INFREE+1
|
lda SKT.Cache+S.SOCKET.TCP.INFREE+1
|
||||||
sta (ZPFrameOutPtr),y
|
sta (ZPFrameOutPtr),y
|
||||||
iny
|
iny
|
||||||
lda SKT.Cache+S.SOCKET.TCP.INFREE
|
lda SKT.Cache+S.SOCKET.TCP.INFREE
|
||||||
sta (ZPFrameOutPtr),y
|
sta (ZPFrameOutPtr),y
|
||||||
|
|
||||||
TCP.OUT.SEQSEND lda #S.TCP.OPTIONS.ACK+S.TCP.OPTIONS.PSH
|
lda #S.TCP.OPTIONS.ACK+S.TCP.OPTIONS.PSH
|
||||||
jsr TCP.OUT.Send
|
jsr TCP.OUT.Send
|
||||||
bcs TCP.OUT.Send.RTS
|
bcs TCP.OUT.Send.RTS
|
||||||
|
|
||||||
|
|
|
@ -181,14 +181,11 @@ 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 #12 pretend track is 8 > curtrk
|
adc #12 pretend track is 12 > curtrk
|
||||||
|
|
||||||
lda #40
|
|
||||||
|
|
||||||
ldy #64
|
ldy #64
|
||||||
sty XRW.RetryCnt reset retries to 64 max.
|
sty XRW.RetryCnt reset retries to 64 max.
|
||||||
|
@ -572,6 +569,9 @@ XRW.Wait100usecA
|
||||||
.2 dex (2)
|
.2 dex (2)
|
||||||
bne .2 (3)
|
bne .2 (3)
|
||||||
|
|
||||||
|
ldx A2L (3)
|
||||||
|
bit IO.D2.RData,x (4) Slow down ACC boards
|
||||||
|
|
||||||
inc montimel (6)
|
inc montimel (6)
|
||||||
bne .3 (3)
|
bne .3 (3)
|
||||||
|
|
||||||
|
@ -755,67 +755,88 @@ XRW.Seek ldx XRW.UnitIndex
|
||||||
|
|
||||||
ldy #0
|
ldy #0
|
||||||
|
|
||||||
.1 ldx XRW.CurrentQTrack
|
.2 lda XRW.TargetQTrack
|
||||||
|
sec
|
||||||
tya
|
sbc XRW.CurrentQTrack
|
||||||
beq .2
|
|
||||||
|
|
||||||
txa
|
|
||||||
jsr XRW.PhaseOff
|
|
||||||
|
|
||||||
.2 cpx XRW.TargetQTrack
|
|
||||||
beq .8
|
beq .8
|
||||||
|
|
||||||
bcs .3
|
bcc .3
|
||||||
|
|
||||||
inx CC, CurrentQTrack>TargetQTrack, must move in
|
* Current < Target, must move in
|
||||||
|
|
||||||
.HS B0 BCS
|
cmp #2
|
||||||
|
bcc .5 one QT remaining
|
||||||
|
|
||||||
.3 dex CS, CurrentQTrack<TargetQTrack, must move out
|
lda XRW.CurrentQTrack
|
||||||
|
and #$FE from QT1 or QT3
|
||||||
|
inc
|
||||||
|
inc
|
||||||
|
bra .4
|
||||||
|
|
||||||
stx XRW.CurrentQTrack
|
* Current > Target, must move out
|
||||||
|
|
||||||
txa
|
.3 cmp #$FF
|
||||||
|
beq .5 one QT remaining
|
||||||
|
|
||||||
|
lda XRW.CurrentQTrack
|
||||||
|
bit #1 from QT1 or QT3
|
||||||
|
bne .30
|
||||||
|
|
||||||
|
dec
|
||||||
|
.30 dec
|
||||||
|
|
||||||
|
.4 sta XRW.CurrentQTrack
|
||||||
jsr XRW.PhaseOn
|
jsr XRW.PhaseOn
|
||||||
|
|
||||||
lda #30
|
lda #164
|
||||||
jsr XRW.Wait100usecA Trash X
|
jsr XRW.Wait100usecA
|
||||||
|
bra .2
|
||||||
|
|
||||||
iny
|
.5 lda XRW.TargetQTrack
|
||||||
|
and #6
|
||||||
|
ora A2L
|
||||||
|
tax
|
||||||
|
inc
|
||||||
|
inc
|
||||||
|
and #$F7
|
||||||
|
tay
|
||||||
|
lda IO.D2.Ph0On,x
|
||||||
|
lda IO.D2.Ph0On,y
|
||||||
|
|
||||||
bra .1
|
phx
|
||||||
|
* lda #164
|
||||||
|
* jsr XRW.Wait100usecA
|
||||||
|
|
||||||
|
lda #0 wait 25.6 ms
|
||||||
|
jsr XRW.Wait100usecA
|
||||||
|
plx
|
||||||
|
|
||||||
|
lda IO.D2.Ph0Off,x
|
||||||
|
lda IO.D2.Ph0Off,y
|
||||||
|
rts
|
||||||
|
|
||||||
.8 tya
|
.8 tya
|
||||||
beq XRW.PhaseOn.RTS
|
beq XRW.PhaseOn.RTS
|
||||||
|
|
||||||
lda #0 wait 25.6 ms
|
lda #0 wait 25.6 ms
|
||||||
jsr XRW.Wait100usecA Trash X
|
jsr XRW.Wait100usecA
|
||||||
|
|
||||||
lda XRW.TargetQTrack
|
lda IO.D2.Ph0Off,y
|
||||||
|
rts
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
* A = QTrack
|
* A = QTrack
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
XRW.PhaseOff clc
|
XRW.PhaseOn and #6
|
||||||
.HS B0 BCS
|
ora A2L
|
||||||
*--------------------------------------
|
tax
|
||||||
XRW.PhaseOn sec
|
pha
|
||||||
|
tya
|
||||||
bit #1
|
|
||||||
beq .1
|
beq .1
|
||||||
|
|
||||||
php
|
lda IO.D2.Ph0Off,y
|
||||||
pha
|
|
||||||
jsr .1
|
|
||||||
pla
|
|
||||||
inc
|
|
||||||
plp
|
|
||||||
|
|
||||||
.1 and #6
|
|
||||||
adc A2L
|
|
||||||
tax
|
|
||||||
lda IO.D2.Ph0Off,x
|
|
||||||
|
|
||||||
|
.1 lda IO.D2.Ph0On,x
|
||||||
|
ply
|
||||||
XRW.PhaseOn.RTS rts
|
XRW.PhaseOn.RTS rts
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
XRW.Trk2Qtrk asl x2
|
XRW.Trk2Qtrk asl x2
|
||||||
|
|
404
SBIN/HTTPD.S.txt
404
SBIN/HTTPD.S.txt
|
@ -8,6 +8,7 @@ NEW
|
||||||
.INB inc/macros.i
|
.INB inc/macros.i
|
||||||
.INB inc/a2osx.i
|
.INB inc/a2osx.i
|
||||||
.INB inc/mli.i
|
.INB inc/mli.i
|
||||||
|
.INB inc/mli.e.i
|
||||||
.INB inc/eth.i
|
.INB inc/eth.i
|
||||||
.INB inc/libtcpip.i
|
.INB inc/libtcpip.i
|
||||||
.INB inc/net.http.i
|
.INB inc/net.http.i
|
||||||
|
@ -19,10 +20,10 @@ CONN.MAX .EQ 16
|
||||||
.OR ZPBIN
|
.OR ZPBIN
|
||||||
ZS.START
|
ZS.START
|
||||||
ZPPtr1 .BS 2
|
ZPPtr1 .BS 2
|
||||||
|
ZPPtr2 .BS 2
|
||||||
ZPSktPtr .BS 2
|
ZPSktPtr .BS 2
|
||||||
hFile .BS 1
|
hFile .BS 1
|
||||||
hStr .BS 1
|
hStr .BS 1
|
||||||
ZPStrPtr .BS 2
|
|
||||||
|
|
||||||
hSrvSocket .BS 1
|
hSrvSocket .BS 1
|
||||||
TimeOut .BS 1
|
TimeOut .BS 1
|
||||||
|
@ -34,12 +35,11 @@ ZPRootDirPtr .BS 2
|
||||||
|
|
||||||
hClntSocket .BS 1
|
hClntSocket .BS 1
|
||||||
|
|
||||||
hRequest .BS 1
|
|
||||||
ZPRequestPtr .BS 2
|
ZPRequestPtr .BS 2
|
||||||
ZPnRequestLen .BS 2
|
ZPnRequestLen .BS 2
|
||||||
|
ZPLinePtr .BS 2
|
||||||
|
|
||||||
hReply .BS 1
|
ZPRepPtr .BS 2
|
||||||
ZPReplyPtr .BS 2
|
|
||||||
|
|
||||||
ZS.END .ED
|
ZS.END .ED
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
|
@ -65,11 +65,10 @@ CS.START cld
|
||||||
.DA CS.QUIT
|
.DA CS.QUIT
|
||||||
L.LIBTCPIP .DA LIBTCPIP
|
L.LIBTCPIP .DA LIBTCPIP
|
||||||
L.ETCHTTPDCONF .DA ETCHTTPDCONF
|
L.ETCHTTPDCONF .DA ETCHTTPDCONF
|
||||||
L.KEYWORDS .DA KEYWORDS
|
L.KEYWORDS.CONF .DA KEYWORDS.CONF
|
||||||
J.KEYWORDS .DA CS.RUN.CONF.SERVERNAME
|
J.KEYWORDS.CONF .DA CS.RUN.CONF.SERVERNAME
|
||||||
.DA CS.RUN.CONF.LISTEN
|
.DA CS.RUN.CONF.LISTEN
|
||||||
.DA CS.RUN.CONF.DOCUMENTROOT
|
.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
|
||||||
|
@ -77,7 +76,18 @@ 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
|
||||||
L.HTTP.200OK .DA HTTP.200OK
|
L.KEYWORDS.REQ .DA KEYWORDS.REQ
|
||||||
|
J.KEYWORDS.REQ .DA CS.RUN.REQ.GET
|
||||||
|
L.INDEX.HTML .DA INDEX.HTML
|
||||||
|
L.MIME.TYPES .DA MIME.TYPES
|
||||||
|
T.MIME .DA MIME.HTML
|
||||||
|
.DA MIME.TXT
|
||||||
|
.DA MIME.ICO
|
||||||
|
.DA MIME.PNG
|
||||||
|
.DA MIME.JPG
|
||||||
|
L.MIME.DEFAULT .DA MIME.DEFAULT
|
||||||
|
L.HTTP.200 .DA HTTP.200
|
||||||
|
L.HTTP.404 .DA HTTP.404
|
||||||
.DA 0
|
.DA 0
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
CS.INIT >LDYA L.LIBTCPIP
|
CS.INIT >LDYA L.LIBTCPIP
|
||||||
|
@ -140,7 +150,7 @@ CS.RUN.INIT ldx #3
|
||||||
>SYSCALL GetMem
|
>SYSCALL GetMem
|
||||||
bcs CS.RUN.RTS
|
bcs CS.RUN.RTS
|
||||||
|
|
||||||
>STYA ZPStrPtr
|
>STYA ZPLinePtr
|
||||||
stx hStr
|
stx hStr
|
||||||
|
|
||||||
>PUSHW L.MSG.INITCONF
|
>PUSHW L.MSG.INITCONF
|
||||||
|
@ -197,7 +207,7 @@ CS.RUN.CONF >PUSHW L.ETCHTTPDCONF
|
||||||
sta hFile
|
sta hFile
|
||||||
|
|
||||||
.1 >PUSHWI 256
|
.1 >PUSHWI 256
|
||||||
>PUSHW ZPStrPtr
|
>PUSHW ZPLinePtr
|
||||||
lda hFile
|
lda hFile
|
||||||
>SYSCALL fgets
|
>SYSCALL fgets
|
||||||
bcs .8
|
bcs .8
|
||||||
|
@ -205,11 +215,11 @@ CS.RUN.CONF >PUSHW L.ETCHTTPDCONF
|
||||||
tya
|
tya
|
||||||
beq .1
|
beq .1
|
||||||
|
|
||||||
lda (ZPStrPtr)
|
lda (ZPLinePtr)
|
||||||
cmp #'#'
|
cmp #'#'
|
||||||
beq .1
|
beq .1
|
||||||
|
|
||||||
>LDYA L.KEYWORDS
|
>LDYA L.KEYWORDS.CONF
|
||||||
>STYA ZPPtr1
|
>STYA ZPPtr1
|
||||||
|
|
||||||
ldx #0
|
ldx #0
|
||||||
|
@ -217,7 +227,7 @@ CS.RUN.CONF >PUSHW L.ETCHTTPDCONF
|
||||||
.2 ldy #0
|
.2 ldy #0
|
||||||
|
|
||||||
.3 lda (ZPPtr1),y
|
.3 lda (ZPPtr1),y
|
||||||
cmp (ZPStrPtr),y
|
cmp (ZPLinePtr),y
|
||||||
bne .4
|
bne .4
|
||||||
|
|
||||||
iny
|
iny
|
||||||
|
@ -263,14 +273,14 @@ CS.RUN.CONF >PUSHW L.ETCHTTPDCONF
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
CS.RUN.CONF.JMP tya
|
CS.RUN.CONF.JMP tya
|
||||||
clc
|
clc
|
||||||
adc ZPStrPtr
|
adc ZPLinePtr
|
||||||
sta ZPPtr1
|
sta ZPPtr1
|
||||||
tay
|
tay
|
||||||
lda #0
|
lda #0
|
||||||
adc ZPStrPtr+1
|
adc ZPLinePtr+1
|
||||||
sta ZPPtr1+1
|
sta ZPPtr1+1
|
||||||
|
|
||||||
jmp (J.KEYWORDS,x)
|
jmp (J.KEYWORDS.CONF,x)
|
||||||
|
|
||||||
CS.RUN.CONF.SERVERNAME
|
CS.RUN.CONF.SERVERNAME
|
||||||
>SYSCALL StrDup
|
>SYSCALL StrDup
|
||||||
|
@ -297,9 +307,6 @@ CS.RUN.CONF.DOCUMENTROOT
|
||||||
stx hRootdir
|
stx hRootdir
|
||||||
|
|
||||||
.9 rts
|
.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
|
||||||
|
@ -325,10 +332,15 @@ CS.RUN.SERVER lda hSrvSocket
|
||||||
>SYSCALL PrintF
|
>SYSCALL PrintF
|
||||||
|
|
||||||
jsr CS.RUN.CLIENT
|
jsr CS.RUN.CLIENT
|
||||||
|
|
||||||
.8 clc
|
.8 clc
|
||||||
.9 rts
|
.9 rts
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
CS.RUN.CLIENT
|
CS.RUN.CLIENT >STZ.G REQ.KeepAlive
|
||||||
|
>STA.G REQ.FullPath
|
||||||
|
>STA.G REQ.hFile
|
||||||
|
>STA.G REQ.hBuf
|
||||||
|
|
||||||
.1 >SLEEP
|
.1 >SLEEP
|
||||||
|
|
||||||
lda hClntSocket
|
lda hClntSocket
|
||||||
|
@ -337,9 +349,78 @@ CS.RUN.CLIENT
|
||||||
|
|
||||||
tay
|
tay
|
||||||
beq .1
|
beq .1
|
||||||
bra .8
|
jmp .80
|
||||||
|
|
||||||
.2 sta hRequest
|
.2 jsr CS.RUN.REQ.GetFrame
|
||||||
|
|
||||||
|
.3 jsr CS.RUN.REQ.GetLine
|
||||||
|
bcs .4
|
||||||
|
|
||||||
|
>LDYA ZPLinePtr
|
||||||
|
>STYA ZPPtr2
|
||||||
|
|
||||||
|
>LDYA L.KEYWORDS.REQ
|
||||||
|
jsr CS.RUN.GET.KW
|
||||||
|
bcs .3
|
||||||
|
|
||||||
|
jsr CS.RUN.REQ.JMP
|
||||||
|
bcc .3
|
||||||
|
bcs .9
|
||||||
|
|
||||||
|
.4 >LDA.G REQ.FullPath
|
||||||
|
beq .9
|
||||||
|
|
||||||
|
>LDYAI 1024
|
||||||
|
>SYSCALL GetMem
|
||||||
|
bcs .9
|
||||||
|
|
||||||
|
>STYA ZPRepPtr
|
||||||
|
txa
|
||||||
|
>STA.G REQ.hBuf
|
||||||
|
|
||||||
|
jsr CS.RUN.OpenFile
|
||||||
|
bcs .9
|
||||||
|
|
||||||
|
jsr CS.RUN.GetMime
|
||||||
|
bcs .9
|
||||||
|
|
||||||
|
jsr CS.RUN.SendFile
|
||||||
|
bcc .5
|
||||||
|
|
||||||
|
.9 >PUSHWI HTTP.404.len
|
||||||
|
>PUSHW L.HTTP.404
|
||||||
|
lda hClntSocket
|
||||||
|
>LIBCALL hLIBTCPIP,LIBTCPIP.Send
|
||||||
|
bcs .80
|
||||||
|
|
||||||
|
* >STZ.G REQ.KeepAlive
|
||||||
|
|
||||||
|
.5 >LDA.G REQ.hFile
|
||||||
|
beq .6
|
||||||
|
|
||||||
|
>SYSCALL FClose
|
||||||
|
|
||||||
|
.6 >LDA.G REQ.hBuf
|
||||||
|
beq .7
|
||||||
|
|
||||||
|
>SYSCALL freemem
|
||||||
|
|
||||||
|
.7 >LDA.G REQ.hFrame
|
||||||
|
beq .8
|
||||||
|
|
||||||
|
>SYSCALL FreeMem
|
||||||
|
|
||||||
|
.8 >LDA.G REQ.KeepAlive
|
||||||
|
beq .80
|
||||||
|
jmp CS.RUN.CLIENT
|
||||||
|
|
||||||
|
.80 lda hClntSocket
|
||||||
|
>LIBCALL hLIBTCPIP,LIBTCPIP.Shutdown
|
||||||
|
|
||||||
|
.99 rts
|
||||||
|
*--------------------------------------
|
||||||
|
CS.RUN.REQ.GetFrame
|
||||||
|
>STA.G REQ.hFrame
|
||||||
>SYSCALL GetMemPtr
|
>SYSCALL GetMemPtr
|
||||||
>STYA ZPRequestPtr
|
>STYA ZPRequestPtr
|
||||||
|
|
||||||
|
@ -361,34 +442,12 @@ CS.RUN.CLIENT
|
||||||
clc
|
clc
|
||||||
adc #S.TCP
|
adc #S.TCP
|
||||||
sta ZPRequestPtr
|
sta ZPRequestPtr
|
||||||
bcc .3
|
bcc .8
|
||||||
|
|
||||||
inc ZPRequestPtr+1
|
inc ZPRequestPtr+1
|
||||||
|
.8 rts
|
||||||
.3 jsr CS.RUN.REQUEST.GetStr
|
|
||||||
bcs .7
|
|
||||||
|
|
||||||
>LDYA ZPStrPtr
|
|
||||||
>SYSCALL puts
|
|
||||||
bra .3
|
|
||||||
|
|
||||||
* jsr CS.RUN.REPLY.INIT
|
|
||||||
|
|
||||||
* lda hReply
|
|
||||||
* >SYSCALL FreeMem
|
|
||||||
|
|
||||||
.7 >PUSHWI HTTP.200OK.len
|
|
||||||
>PUSHW L.HTTP.200OK
|
|
||||||
lda hClntSocket
|
|
||||||
>LIBCALL hLIBTCPIP,LIBTCPIP.Send
|
|
||||||
|
|
||||||
.8 lda hClntSocket
|
|
||||||
>LIBCALL hLIBTCPIP,LIBTCPIP.Shutdown
|
|
||||||
|
|
||||||
clc
|
|
||||||
rts
|
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
CS.RUN.REQUEST.GetStr
|
CS.RUN.REQ.GetLine
|
||||||
ldy #0
|
ldy #0
|
||||||
|
|
||||||
.1 inc ZPnRequestLen
|
.1 inc ZPnRequestLen
|
||||||
|
@ -417,19 +476,213 @@ CS.RUN.REQUEST.GetStr
|
||||||
.31 eor #C.LF
|
.31 eor #C.LF
|
||||||
bne .9
|
bne .9
|
||||||
|
|
||||||
sta (ZPStrPtr),y Y,A = StrLen
|
sta (ZPLinePtr),y Y,A = StrLen
|
||||||
clc
|
clc
|
||||||
rts
|
rts
|
||||||
|
|
||||||
.4 sta (ZPStrPtr),y
|
.4 sta (ZPLinePtr),y
|
||||||
iny
|
iny
|
||||||
bra .1
|
bra .1
|
||||||
|
|
||||||
.9 sec
|
.9 sec
|
||||||
rts
|
rts
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
CS.RUN.REPLY.INIT
|
CS.RUN.OpenFile >LEA.G REQ.FullPath
|
||||||
|
>SYSCALL puts
|
||||||
|
|
||||||
|
>PUSHEA.G REQ.FullPath
|
||||||
|
>PUSHBI O.RDONLY
|
||||||
|
>PUSHBI 0 type
|
||||||
|
>PUSHWZ Aux type
|
||||||
|
>SYSCALL FOpen
|
||||||
|
bcs .9
|
||||||
|
|
||||||
|
txa
|
||||||
|
>STA.G REQ.hFile
|
||||||
|
|
||||||
|
>PUSHA
|
||||||
|
>PUSHEA.G REQ.Stat
|
||||||
|
>SYSCALL FStat
|
||||||
|
|
||||||
|
.9 rts
|
||||||
|
*--------------------------------------
|
||||||
|
CS.RUN.GetMime >LEA.G REQ.FullPath
|
||||||
|
>STYA ZPPtr2
|
||||||
|
|
||||||
|
ldx #$ff
|
||||||
|
ldy #$ff
|
||||||
|
|
||||||
|
.1 iny
|
||||||
|
lda (ZPPtr2),y
|
||||||
|
beq .2
|
||||||
|
|
||||||
|
cmp #'.'
|
||||||
|
bne .1
|
||||||
|
|
||||||
|
tya
|
||||||
|
tax
|
||||||
|
bra .1
|
||||||
|
|
||||||
|
.2 txa
|
||||||
|
bpl .3
|
||||||
|
|
||||||
|
lda #MIME.DEFAULT.ID
|
||||||
|
bra .8
|
||||||
|
|
||||||
|
.3 sec
|
||||||
|
|
||||||
|
adc ZPPtr2
|
||||||
|
sta ZPPtr2
|
||||||
|
bcc .4
|
||||||
|
|
||||||
|
inc ZPPtr2+1
|
||||||
|
|
||||||
|
.4 >LDYA L.MIME.TYPES
|
||||||
|
jsr CS.RUN.GET.KW
|
||||||
|
|
||||||
|
txa
|
||||||
|
|
||||||
|
.8 >STA.G REQ.MimeType
|
||||||
|
|
||||||
|
clc
|
||||||
|
rts
|
||||||
|
*--------------------------------------
|
||||||
|
CS.RUN.SendFile >PUSHW ZPRepPtr
|
||||||
|
>PUSHW L.HTTP.200
|
||||||
|
>LDA.G REQ.MimeType
|
||||||
|
tax
|
||||||
|
>PUSHW T.MIME,x
|
||||||
|
>PUSHL.G REQ.Stat+S.STAT.SIZE
|
||||||
|
>PUSHBI 6
|
||||||
|
|
||||||
|
>SYSCALL SPrintf
|
||||||
|
bcs .9
|
||||||
|
|
||||||
|
jsr CS.RUN.SendBuf Y,A = car count
|
||||||
|
|
||||||
|
.1 >PUSHWI 1024
|
||||||
|
>PUSHW ZPRepPtr
|
||||||
|
>LDA.G REQ.hFile
|
||||||
|
>SYSCALL fread
|
||||||
|
bcs .8
|
||||||
|
|
||||||
|
jsr CS.RUN.SendBuf
|
||||||
|
bcc .1
|
||||||
|
|
||||||
|
rts
|
||||||
|
|
||||||
|
.8 cmp #MLI.E.EOF
|
||||||
|
bne .9
|
||||||
|
|
||||||
|
clc
|
||||||
|
.9 rts
|
||||||
|
*--------------------------------------
|
||||||
|
CS.RUN.SendBuf >PUSHYA
|
||||||
|
>PUSHW ZPRepPtr
|
||||||
|
lda hClntSocket
|
||||||
|
>LIBCALL hLIBTCPIP,LIBTCPIP.Send
|
||||||
|
rts
|
||||||
|
*--------------------------------------
|
||||||
|
CS.RUN.REQ.JMP jmp (J.KEYWORDS.REQ,x)
|
||||||
|
*--------------------------------------
|
||||||
|
CS.RUN.REQ.GET ldy #0
|
||||||
|
|
||||||
|
.1 iny
|
||||||
|
lda (ZPPtr2),y
|
||||||
|
|
||||||
|
eor #C.SPACE
|
||||||
|
bne .1
|
||||||
|
|
||||||
|
sta (ZPPtr2),y
|
||||||
|
|
||||||
|
lda (ZPPtr2)
|
||||||
|
|
||||||
|
cmp #'/'
|
||||||
|
bne .4
|
||||||
|
|
||||||
|
>PUSHW ZPRootDirPtr
|
||||||
|
>LEA.G REQ.FullPath
|
||||||
|
>SYSCALL StrCpy
|
||||||
|
|
||||||
|
ldy #1
|
||||||
|
lda (ZPPtr2),y
|
||||||
|
bne .2
|
||||||
|
|
||||||
|
>LDYA L.INDEX.HTML
|
||||||
|
bra .3
|
||||||
|
|
||||||
|
.2 >LDYA ZPPtr2
|
||||||
|
|
||||||
|
.3 >PUSHYA
|
||||||
|
>LEA.G REQ.FullPath
|
||||||
|
>SYSCALL StrCat
|
||||||
|
rts
|
||||||
|
|
||||||
|
.4 >PUSHW ZPPtr2
|
||||||
|
>PUSHEA.G REQ.FullPath
|
||||||
|
>SYSCALL realpath
|
||||||
|
.9 rts
|
||||||
|
*--------------------------------------
|
||||||
|
CS.RUN.REQ.Connection
|
||||||
|
lda (ZPPtr2)
|
||||||
|
eor #'k'
|
||||||
|
beq .1
|
||||||
|
|
||||||
|
|
||||||
|
lda #$ff
|
||||||
|
|
||||||
|
.1 >STA.G REQ.KeepAlive
|
||||||
|
|
||||||
|
clc
|
||||||
|
rts
|
||||||
|
*--------------------------------------
|
||||||
|
CS.RUN.GET.KW >STYA ZPPtr1
|
||||||
|
|
||||||
|
ldx #0
|
||||||
|
|
||||||
|
.2 ldy #$ff
|
||||||
|
|
||||||
|
.3 iny
|
||||||
|
lda (ZPPtr1),y
|
||||||
|
cmp (ZPPtr2),y
|
||||||
|
bne .4
|
||||||
|
|
||||||
|
cmp #0
|
||||||
|
beq .33
|
||||||
|
|
||||||
|
cmp #C.SPACE
|
||||||
|
bne .3
|
||||||
|
|
||||||
|
.33 tya
|
||||||
|
sec
|
||||||
|
adc ZPPtr2
|
||||||
|
sta ZPPtr2
|
||||||
|
bcc .8
|
||||||
|
inc ZPPtr2+1
|
||||||
|
|
||||||
|
.8 clc
|
||||||
|
rts
|
||||||
|
|
||||||
|
.4 inx
|
||||||
|
inx
|
||||||
|
|
||||||
|
ldy #0
|
||||||
|
|
||||||
|
.5 iny
|
||||||
|
lda (ZPPtr1),y
|
||||||
|
bne .5
|
||||||
|
|
||||||
|
tya
|
||||||
|
sec
|
||||||
|
adc ZPPtr1
|
||||||
|
sta ZPPtr1
|
||||||
|
bcc .6
|
||||||
|
inc ZPPtr1+1
|
||||||
|
|
||||||
|
.6 lda (ZPPtr1)
|
||||||
|
bne .2
|
||||||
|
|
||||||
|
sec
|
||||||
rts
|
rts
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
CS.DOEVENT lda (pEvent)
|
CS.DOEVENT lda (pEvent)
|
||||||
|
@ -467,10 +720,9 @@ hLIBTCPIP .BS 1
|
||||||
LIBTCPIP .AZ "libtcpip"
|
LIBTCPIP .AZ "libtcpip"
|
||||||
ETCHTTPDCONF .AZ "${BOOT}etc/httpd.conf"
|
ETCHTTPDCONF .AZ "${BOOT}etc/httpd.conf"
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
KEYWORDS .AS "ServerName "
|
KEYWORDS.CONF .AS "ServerName "
|
||||||
.AS "Listen "
|
.AS "Listen "
|
||||||
.AS "DocumentRoot "
|
.AS "DocumentRoot "
|
||||||
.AS "AddType "
|
|
||||||
.DA #0
|
.DA #0
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
MSG.TCPWAIT .AZ "HTTPD:Waiting for TCP/IP initializing..."
|
MSG.TCPWAIT .AZ "HTTPD:Waiting for TCP/IP initializing..."
|
||||||
|
@ -480,20 +732,53 @@ 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"
|
KEYWORDS.REQ .AS "GET "
|
||||||
|
.AS "Connection: "
|
||||||
|
.DA #0
|
||||||
|
*--------------------------------------
|
||||||
|
INDEX.HTML .AS "/index." html
|
||||||
|
*--------------------------------------
|
||||||
|
MIME.TYPES .AZ "html"
|
||||||
|
.AZ "txt"
|
||||||
|
.AZ "ttf"
|
||||||
|
.AZ "ico"
|
||||||
|
.AZ "png"
|
||||||
|
.AZ "jpg"
|
||||||
|
.DA #0
|
||||||
|
MIME.HTML .AZ "text/html"
|
||||||
|
MIME.TXT .AZ "text/plain"
|
||||||
|
MIME.TTF .AZ "font/truetype"
|
||||||
|
MIME.ICO .AZ "image/vnd.microsoft.icon" "image/x-icon"
|
||||||
|
MIME.PNG .AZ "image/png"
|
||||||
|
MIME.JPG .AZ "image/jpeg"
|
||||||
|
MIME.DEFAULT .AZ "application/octet-stream"
|
||||||
|
MIME.DEFAULT.ID .EQ 12
|
||||||
|
*--------------------------------------
|
||||||
|
HTTP.200 .AS "HTTP/1.1 200 OK"
|
||||||
|
.DA #C.CR,#C.LF
|
||||||
|
.AS "Server: A2osX-HTTPD 0.94"
|
||||||
|
.DA #C.CR,#C.LF
|
||||||
|
.AS "Content-Type: %s"
|
||||||
|
.DA #C.CR,#C.LF
|
||||||
|
.AS "Content-Length: %u"
|
||||||
|
.DA #C.CR,#C.LF
|
||||||
|
.DA #C.CR,#C.LF
|
||||||
|
.DA #0
|
||||||
|
*--------------------------------------
|
||||||
|
HTTP.404 .AS "HTTP/1.1 404 Not Found"
|
||||||
.DA #C.CR,#C.LF
|
.DA #C.CR,#C.LF
|
||||||
.AS "Server: A2osX-HTTPD 0.94"
|
.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
|
||||||
.AS "Content-Length: 34"
|
.AS "Content-Length: 47"
|
||||||
.DA #C.CR,#C.LF
|
.DA #C.CR,#C.LF
|
||||||
.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.94 !</BODY></HTML>"
|
.AS "<HTML><BODY><B>404:NOT FOUND<B></BODY></HTML>"
|
||||||
.DA #C.CR,#C.LF
|
.DA #C.CR,#C.LF
|
||||||
HTTP.200OK.len .EQ *-HTTP.200OK
|
HTTP.404.len .EQ *-HTTP.404
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
SA.LOCAL .DA #AF.INET S.SOCKADDR.AF
|
SA.LOCAL .DA #AF.INET S.SOCKADDR.AF
|
||||||
.BS 1
|
.BS 1
|
||||||
|
@ -503,6 +788,13 @@ SA.LOCAL .DA #AF.INET S.SOCKADDR.AF
|
||||||
.DUMMY
|
.DUMMY
|
||||||
.OR 0
|
.OR 0
|
||||||
DS.START
|
DS.START
|
||||||
|
REQ.FullPath .BS MLI.MAXPATH+1
|
||||||
|
REQ.Stat .BS S.STAT
|
||||||
|
REQ.hFrame .BS 1
|
||||||
|
REQ.hFile .BS 1
|
||||||
|
REQ.hBuf .BS 1
|
||||||
|
REQ.MimeType .BS 1
|
||||||
|
REQ.KeepAlive .BS 1
|
||||||
DS.END
|
DS.END
|
||||||
.ED
|
.ED
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
|
|
BIN
SRV/WWW/favicon.ico
Normal file
BIN
SRV/WWW/favicon.ico
Normal file
Binary file not shown.
After Width: | Height: | Size: 3.6 KiB |
|
@ -1,7 +1,5 @@
|
||||||
<!--
|
|
||||||
NEW
|
NEW
|
||||||
AUTO 3,1
|
AUTO 3,1
|
||||||
-->
|
|
||||||
<html>
|
<html>
|
||||||
<head>
|
<head>
|
||||||
<title>A2osx Welcome</title>
|
<title>A2osx Welcome</title>
|
||||||
|
@ -19,7 +17,5 @@ Composed with care by:
|
||||||
<br>©2020 and beyond
|
<br>©2020 and beyond
|
||||||
</body>
|
</body>
|
||||||
</html>
|
</html>
|
||||||
<!--
|
|
||||||
MAN
|
MAN
|
||||||
TEXT srv/www/index.html
|
TEXT srv/www/hello.html
|
||||||
-->
|
|
||||||
|
|
|
@ -2,23 +2,16 @@ NEW
|
||||||
AUTO 3,1
|
AUTO 3,1
|
||||||
<html>
|
<html>
|
||||||
<head>
|
<head>
|
||||||
<title>Title of the document</title>
|
<title>A2osX HTTPD Demo</title>
|
||||||
<style>
|
<link rel="stylesheet" href="style.css" />
|
||||||
@font-face { font-family: ScanLines; src: url('scanlines.ttf') format('truetype'); }
|
</head>
|
||||||
h1 {
|
|
||||||
font-family: ScanLines;
|
|
||||||
color: #00ff00;
|
|
||||||
}
|
|
||||||
p {
|
|
||||||
font-family: ScanLines;
|
|
||||||
color: #00ff00;
|
|
||||||
}
|
|
||||||
</style>
|
|
||||||
</head>
|
|
||||||
|
|
||||||
<body bgcolor="black">
|
<body>
|
||||||
<h1>This is a heading</h1>
|
<h1>A2osX HTTPD Demo</h1>
|
||||||
|
<img src="A2osX.logo.png">
|
||||||
<p>This is a paragraph.</p>
|
<p>This is a paragraph.</p>
|
||||||
|
<a href="hello.html">Hello</a>
|
||||||
|
<a href="main.html">Main</a>
|
||||||
</body>
|
</body>
|
||||||
|
|
||||||
</html>
|
</html>
|
||||||
|
|
|
@ -1,7 +1,5 @@
|
||||||
<!--
|
|
||||||
NEW
|
NEW
|
||||||
AUTO 3,1
|
AUTO 3,1
|
||||||
-->
|
|
||||||
<html>
|
<html>
|
||||||
<head>
|
<head>
|
||||||
<title>A2osx HTTPD Server Tests</title>
|
<title>A2osx HTTPD Server Tests</title>
|
||||||
|
@ -25,7 +23,5 @@ resizes.</i>
|
||||||
<br>©2020 and beyond
|
<br>©2020 and beyond
|
||||||
</body>
|
</body>
|
||||||
</html>
|
</html>
|
||||||
<!--
|
|
||||||
MAN
|
MAN
|
||||||
TEXT srv/www/main.html
|
TEXT srv/www/main.html
|
||||||
-->
|
|
20
SRV/WWW/style.css
Normal file
20
SRV/WWW/style.css
Normal file
|
@ -0,0 +1,20 @@
|
||||||
|
NEW
|
||||||
|
AUTO 3,1
|
||||||
|
@font-face {
|
||||||
|
font-family: "ScanLines";
|
||||||
|
src: url('scanlines.ttf') format('truetype');
|
||||||
|
}
|
||||||
|
body {
|
||||||
|
font-family: "ScanLines";
|
||||||
|
background-color: black;
|
||||||
|
}
|
||||||
|
h1 {
|
||||||
|
font-family: "ScanLines";
|
||||||
|
color: #00ff00;
|
||||||
|
}
|
||||||
|
p {
|
||||||
|
font-family: "ScanLines";
|
||||||
|
color: #00ff00;
|
||||||
|
}
|
||||||
|
MAN
|
||||||
|
TEXT srv/www/style.css
|
|
@ -53,8 +53,8 @@ K.StrCat sec
|
||||||
* Y,A = destination
|
* Y,A = destination
|
||||||
*\--------------------------------------
|
*\--------------------------------------
|
||||||
K.StrCpy clc
|
K.StrCpy clc
|
||||||
pha
|
|
||||||
phy
|
phy
|
||||||
|
pha
|
||||||
jsr SHARED.SPtr1PPtr2
|
jsr SHARED.SPtr1PPtr2
|
||||||
|
|
||||||
bcc .2
|
bcc .2
|
||||||
|
|
Loading…
Reference in New Issue
Block a user