Kernel 0.94

This commit is contained in:
Rémy GIBERT 2020-06-05 21:26:34 +02:00
parent d9b9f5542c
commit 4c74e6f2f2
18 changed files with 594 additions and 273 deletions

Binary file not shown.

Binary file not shown.

Binary file not shown.

View File

@ -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]"

View File

@ -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

View File

@ -307,16 +307,14 @@ BB.Read lda BB.HdrTrk get track we're on
sta BB.CurQTrk sta BB.CurQTrk
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

View File

@ -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
@ -58,85 +51,105 @@ D2MoveHead >PULLB MoveTo
>PULLB DrvSlt >PULLB DrvSlt
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
tya
beq .2
txa .1 lda MoveTo
jsr D2.PhaseOff sec
sbc MoveFrom
.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 .1 lda IO.D2.Ph0On,x
adc Slotn0 ply
tax
lda IO.D2.Ph0Off,x
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

View File

@ -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
*-------------------------------------- *--------------------------------------

View File

@ -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)
@ -881,12 +892,8 @@ 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 jmp TCP.OUT.SEQSEND
lda /K.TCP.WSIZE *--------------------------------------
sta (ZPFrameOutPtr),y SKT.Send.STREAM lda #ERR.SKT.BAD
iny sec
lda #K.TCP.WSIZE SKT.Send.9 rts
sta (ZPFrameOutPtr),y
jmp TCP.OUT.SEQSEND
*/-------------------------------------- */--------------------------------------
* # GetSockOpt * # GetSockOpt
* Set Socket Options * Set Socket Options

View File

@ -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

View File

@ -181,15 +181,12 @@ 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.
bra L53CC always. bra L53CC always.
@ -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
cmp #2
bcc .5 one QT remaining
.HS B0 BCS lda XRW.CurrentQTrack
and #$FE from QT1 or QT3
inc
inc
bra .4
* Current > Target, must move out
.3 cmp #$FF
beq .5 one QT remaining
.3 dex CS, CurrentQTrack<TargetQTrack, must move out lda XRW.CurrentQTrack
bit #1 from QT1 or QT3
bne .30
dec
.30 dec
stx XRW.CurrentQTrack .4 sta XRW.CurrentQTrack
txa
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
phx
* lda #164
* jsr XRW.Wait100usecA
bra .1 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 .1 lda IO.D2.Ph0On,x
adc A2L ply
tax
lda IO.D2.Ph0Off,x
XRW.PhaseOn.RTS rts XRW.PhaseOn.RTS rts
*-------------------------------------- *--------------------------------------
XRW.Trk2Qtrk asl x2 XRW.Trk2Qtrk asl x2

View File

@ -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

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.6 KiB

View File

@ -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>&copy;2020 and beyond <br>&copy;2020 and beyond
</body> </body>
</html> </html>
<!--
MAN MAN
TEXT srv/www/index.html TEXT srv/www/hello.html
-->

View File

@ -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>

View File

@ -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>&copy;2020 and beyond <br>&copy;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
View 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

View File

@ -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