diff --git a/.Floppies/A2OSX.BOOT.woz b/.Floppies/A2OSX.BOOT.woz index cd60a815..ffda22fb 100644 Binary files a/.Floppies/A2OSX.BOOT.woz and b/.Floppies/A2OSX.BOOT.woz differ diff --git a/.Floppies/A2OSX.BUILD.po b/.Floppies/A2OSX.BUILD.po index 640e4f15..6c7e21af 100644 Binary files a/.Floppies/A2OSX.BUILD.po and b/.Floppies/A2OSX.BUILD.po differ diff --git a/.Floppies/A2OSX.TEST.po b/.Floppies/A2OSX.TEST.po index ffdc00c6..9c8e3e3f 100644 Binary files a/.Floppies/A2OSX.TEST.po and b/.Floppies/A2OSX.TEST.po differ diff --git a/BIN/FORMAT.S.txt b/BIN/FORMAT.S.txt index d7ddf186..910707b0 100644 --- a/BIN/FORMAT.S.txt +++ b/BIN/FORMAT.S.txt @@ -67,7 +67,8 @@ CS.START cld .DA CS.DOEVENT .DA CS.QUIT 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.ERR .DA MSG.ERR L.MSG.CRLF .DA MSG.CRLF @@ -130,7 +131,10 @@ CS.RUN ldy #S.PS.ARGC >STYA BlkCnt bra .1 -.99 >PUSHW L.MSG.USAGE +.99 >PUSHW L.MSG.USAGE1 + >PUSHBI 0 + >SYSCALL PrintF + >PUSHW L.MSG.USAGE2 >PUSHBI 0 >SYSCALL PrintF lda #E.SYN @@ -341,10 +345,11 @@ CS.RUN.LL.DISKII >LIBCALL hLIBBLKDEV,LIBBLKDEV.D2TrkWrite16s bcs .9 - inc CurTrack dec Counter beq .8 + inc CurTrack + lda CurQTrack * clc adc Stepping @@ -363,8 +368,6 @@ CS.RUN.LL.DISKII .8 ldx #0 jsr CS.RUN.SeekToX - jsr CS.RUN.MotorOff - >PUSHW L.MSG.CRLF >PUSHBI 0 >SYSCALL PrintF @@ -373,7 +376,7 @@ CS.RUN.LL.DISKII bit bVerify bmi CS.RUN.LL.DISKII.V - rts + jmp CS.RUN.MotorOff *-------------------------------------- CS.RUN.LL.DISKII.V >PUSHW L.MSG.VERIFY @@ -598,11 +601,12 @@ CS.END LIBBLKDEV .AZ "libblkdev" hLIBBLKDEV .BS 1 *-------------------------------------- -MSG.USAGE .AS "Usage : FORMAT [VOLUME.NAME]\r\n" +MSG.USAGE1 .AS "Usage : FORMAT [VOL.NAME]\r\n" .AS " -L : Low-Level Format\r\n" - .AS " -H : 35trk drives, High Density: 47 tracks, 376 Blocks\r\n" - .AS " -X : 40trk drives, 320 Blocks, combined with -H = 432 Blocks\r\n" - .AS " -B xxxx : override Device block size\r\n" + .AZ " -H : 35trk drives, High Density: 47 tracks, 376 Blocks\r\n" +MSG.USAGE2 .AS " -X : 40trk drives, 320 Blocks, combined with -H, 432 Blocks\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" MSG.OK .AZ "[OK]" MSG.ERR .AS "[%h]" diff --git a/ETC/HTTPD.CONF.txt b/ETC/HTTPD.CONF.txt index 3c267920..3e31bf77 100644 --- a/ETC/HTTPD.CONF.txt +++ b/ETC/HTTPD.CONF.txt @@ -4,8 +4,5 @@ NEW ServerName www.example.com:6580 Listen 6580 DocumentRoot ${ROOT}srv/www -# mime types -AddType html text/html -AddType png image.png MAN TEXT etc/httpd.conf diff --git a/LIB/LIBBLKDEV.S.BB.txt b/LIB/LIBBLKDEV.S.BB.txt index a7ca7759..a4f4a3d1 100644 --- a/LIB/LIBBLKDEV.S.BB.txt +++ b/LIB/LIBBLKDEV.S.BB.txt @@ -307,16 +307,14 @@ BB.Read lda BB.HdrTrk get track we're on sta BB.CurQTrk ldy #0 - -.1 ldx BB.CurQTrk - tya beq .2 - - txa + +.1 lda BB.CurQTrk jsr BB.PhaseOff -.2 cpx BB.TargetQTrk +.2 ldx BB.CurQTrk + cpx BB.TargetQTrk beq .8 bcs .3 @@ -332,8 +330,8 @@ BB.Read lda BB.HdrTrk get track we're on txa jsr BB.PhaseOn - lda #104 - jsr BB.MSWait Trash X + lda #114 + jsr BB.Wait100usecA Trash X iny @@ -343,42 +341,37 @@ BB.Read lda BB.HdrTrk get track we're on beq seekend lda #0 wait 25.6 ms - jsr BB.MSWait Trash X + jsr BB.Wait100usecA Trash X lda BB.TargetQTrk jsr BB.PhaseOff bcs seekend CS from BB.MSWait *-------------------------------------- -BB.PhaseOff bit #1 1,3,5,7 ? - beq BB.PhaseOff.2 only half track - -BB.PhaseOff.1 bit IO.D2.Ph0Off -BB.PhaseOff.2 bit IO.D2.Ph0Off - -BB.PhaseOff.8 rts +BB.PhaseOff clc + .HS B0 BCS *-------------------------------------- -BB.PhaseOn bit #1 1,3,5,7 ? - beq .7 +BB.PhaseOn sec + + bit #1 + beq .1 + php pha - inc - jsr .7 + jsr .1 pla + inc + plp -.7 and #6 mask for 0,2,4,6 - ora slotz Slot $n0 - ora #IO.D2.Ph0On +.1 and #6 mask for 0,2,4,6 + + adc slotz Slot $n0 tax - bit $C000,x turn on one phase - - lda BB.PhaseOff.2+1 - sta BB.PhaseOff.1+1 - - dex - stx BB.PhaseOff.2+1 + sta IO.D2.Ph0Off,x + nop + rts *-------------------------------------- -BB.MSWait sec (6) JSR (2) +BB.Wait100usecA sec (6) JSR (2) .1 ldx #19 (2) @@ -388,7 +381,7 @@ BB.MSWait sec (6) JSR (2) sbc #1 (2) done 'n' intervals? bne .1 (2+) a-reg counts -BB.MSWait.RTS rts (6) + rts (6) *-------------------------------------- BB.Trk2Qtrk asl x2 sta .1+1 diff --git a/LIB/LIBBLKDEV.S.D2.txt b/LIB/LIBBLKDEV.S.D2.txt index 9d57d217..85f76339 100644 --- a/LIB/LIBBLKDEV.S.D2.txt +++ b/LIB/LIBBLKDEV.S.D2.txt @@ -26,28 +26,21 @@ D2Recalibrate >PULLB DrvSlt bcs .9 stz MoveTo - lda #162 + lda #252 sta MoveFrom jsr D2MoveHead.1 - lda #0 - jsr D2.PhaseOn +* lda #0 +* jsr D2.PhaseOn + +* lda #0 wait 25.6 ms +* jsr D2.Wait100usecA +* lda #0 +* jsr D2.PhaseOff lda #0 wait 25.6 ms - 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 - jsr D2.Wait100usecA Trash X + jsr D2.Wait100usecA clc .9 rts @@ -58,85 +51,105 @@ D2MoveHead >PULLB MoveTo >PULLB DrvSlt jsr CheckDiskII bcs .9 - - php - sei + jsr D2MoveHead.1 - plp clc .9 rts D2MoveHead.1 ldy #0 - -.1 ldx MoveFrom - - tya - beq .2 - txa - jsr D2.PhaseOff - -.2 cpx MoveTo +.1 lda MoveTo + sec + sbc MoveFrom beq .8 - bcs .3 + bcc .3 - inx MoveFromMoveTo, 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 - lda #0 - jsr D2.Wait100usecA Trash X - - iny - + lda #164 + jsr D2.Wait100usecA 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 beq D2.PhaseOn.RTS 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 - .HS B0 BCS -*-------------------------------------- -D2.PhaseOn sec - - bit #1 +D2.PhaseOn and #6 + ora Slotn0 + tax + pha + tya beq .1 - php - pha - jsr .1 - pla - inc - plp + lda IO.D2.Ph0Off,y -.1 and #6 - adc Slotn0 - tax - lda IO.D2.Ph0Off,x - +.1 lda IO.D2.Ph0On,x + ply D2.PhaseOn.RTS rts *-------------------------------------- -D2.Wait100usecA sec +D2.Wait100usecA sec (2) .1 ldx #19 (2) .2 dex (2) bne .2 (3) + ldx Slotn0 (3) + bit IO.D2.RData,x (4) Slow down ACC boards + sbc #1 bne .1 diff --git a/LIB/LIBBLKDEV.S.txt b/LIB/LIBBLKDEV.S.txt index 74850434..ba10303a 100644 --- a/LIB/LIBBLKDEV.S.txt +++ b/LIB/LIBBLKDEV.S.txt @@ -11,18 +11,18 @@ NEW .INB inc/mli.e.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.GAP1 .EQ 64 640 bits +TRACK16.GAP1 .EQ 80 800 bits * 16 * ( *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 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 *-------------------------------------- diff --git a/LIB/LIBTCPIP.S.SKT.txt b/LIB/LIBTCPIP.S.SKT.txt index a3d5f381..4538851d 100644 --- a/LIB/LIBTCPIP.S.SKT.txt +++ b/LIB/LIBTCPIP.S.SKT.txt @@ -341,11 +341,20 @@ SKT.shutdown pha lda (ZPPtrSKT),y cmp #S.SOCKET.T.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.RAW SKT.shutdown.DGRAM -SKT.shutdown.SEQPACKET .1 ldy #S.SOCKET.HQ.TAIL lda (ZPPtrSKT),y ldy #S.SOCKET.HQ.HEAD @@ -386,10 +395,13 @@ SKT.shutdown.SEQPACKET .5 stz SKT.TABLE,x >SYSCALL2 freemem * clc +SKT.shutdown.RTS rts *-------------------------------------- SKT.shutdown.STREAM pla + +SKT.shutdown.TCP jsr SKT.GetTCB ldy #S.SOCKET.TCP.S lda (ZPPtrSKT),y @@ -411,7 +423,6 @@ SKT.shutdown.STREAM .3 lda #S.SOCKET.TCP.S.TIMEWT jmp SKT.StoreTCB.S -.8 clc .9 rts */-------------------------------------- * # Read (STREAM) @@ -881,12 +892,8 @@ SKT.Recv clc plp bcc .10 not a SEQPKT socket - - pha - jsr SKT.Recv.ACKSEQPKT - pla - -.10 plp + +.10 plp if CS, RecvFrom bcc .9 Exit with CC and A=hFrame pha @@ -943,12 +950,6 @@ SKT.Recv clc plp sec rts -*-------------------------------------- -SKT.Recv.ACKSEQPKT - -* TODO : compute ACK - clc - rts */-------------------------------------- * # Send (RAW,DGRAM,SEQPACKET) * # SendTo (RAW,DGRAM,SEQPACKET) @@ -1000,10 +1001,6 @@ SKT.Send.8 jsr SKT.SetFrameOutDstIP clc Queue if fail jmp FRM.SendIP *-------------------------------------- -SKT.Send.STREAM lda #ERR.SKT.BAD - sec -SKT.Send.9 rts -*-------------------------------------- SKT.Send.SEQPACKET >LDYA ZPDataInLen jsr TCP.NewFrame @@ -1013,14 +1010,11 @@ SKT.Send.SEQPACKET 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 * Set Socket Options diff --git a/LIB/LIBTCPIP.S.TCP.txt b/LIB/LIBTCPIP.S.TCP.txt index 4162d6fa..45df131f 100644 --- a/LIB/LIBTCPIP.S.TCP.txt +++ b/LIB/LIBTCPIP.S.TCP.txt @@ -47,7 +47,7 @@ TCP.IN.JMP.LISTEN jsr SKT.SetRemAddr jsr SKT.NewTCB - bcs .99 + bcs .9 jsr TCP.IN.ACKTheSYN @@ -61,8 +61,7 @@ TCP.IN.JMP.LISTEN lda #S.SOCKET.TCP.S.SYNRCVD jmp SKT.StoreTCB.S -.9 lda #ERR.SKT.OOS -.99 rts +.9 rts *-------------------------------------- TCP.IN.JMP.SYNSENT 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 bne .9 Missed a frame..... -.51 dey + dey dex bpl .5 - ldy #S.SOCKET.T Create a new client socket + ldy #S.SOCKET.T lda (ZPPtrSKT),y cmp #S.SOCKET.T.STREAM bne .52 + jsr SKT.AddDataToSktIn yes, queue data if there is room for.... - bra .59 + bcs .9 + + bra .6 .52 lda hFrameIn jsr SKT.AddToQueueA bcs .9 - -.59 lda ZPDataInLen + +.6 lda ZPDataInLen ldy ZPDataInLen+1 ldx #S.SOCKET.TCP.INSEQNUM jsr TCP.AddAYToSktCacheAtX - -.6 jsr SKT.StoreTCB update socket + + jsr SKT.StoreTCB update socket * jsr TCP.SetSocketTCPO.ACK ...and ack data lda #S.TCP.OPTIONS.ACK jsr TCP.OUT.SendOptA @@ -465,14 +467,14 @@ TCP.OUT lda SKT.Cache+S.SOCKET.TCP.OUTTOSEND+1 jsr SKT.GetDataFromSktOut - ldy #S.TCP.WINDOW +TCP.OUT.SEQSEND ldy #S.TCP.WINDOW lda SKT.Cache+S.SOCKET.TCP.INFREE+1 sta (ZPFrameOutPtr),y iny lda SKT.Cache+S.SOCKET.TCP.INFREE 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 bcs TCP.OUT.Send.RTS diff --git a/ProDOS.FX/ProDOS.S.XRW.txt b/ProDOS.FX/ProDOS.S.XRW.txt index bf75fbba..a589f17b 100644 --- a/ProDOS.FX/ProDOS.S.XRW.txt +++ b/ProDOS.FX/ProDOS.S.XRW.txt @@ -181,15 +181,12 @@ L53A4 dec XRW.RetryCnt one less chance. dec XRW.Recalibrate can only recalibrate once. bne hndlerr -* lda XRW.CurrentTrack - lda #0 + lda XRW.CurrentTrack pha save track -* clc -* adc #12 pretend track is 8 > curtrk + clc + adc #12 pretend track is 12 > curtrk - lda #40 - ldy #64 sty XRW.RetryCnt reset retries to 64 max. bra L53CC always. @@ -572,6 +569,9 @@ XRW.Wait100usecA .2 dex (2) bne .2 (3) + ldx A2L (3) + bit IO.D2.RData,x (4) Slow down ACC boards + inc montimel (6) bne .3 (3) @@ -755,67 +755,88 @@ XRW.Seek ldx XRW.UnitIndex ldy #0 -.1 ldx XRW.CurrentQTrack - - tya - beq .2 - - txa - jsr XRW.PhaseOff - -.2 cpx XRW.TargetQTrack +.2 lda XRW.TargetQTrack + sec + sbc XRW.CurrentQTrack 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, CurrentQTrackLDYA L.LIBTCPIP @@ -140,7 +150,7 @@ CS.RUN.INIT ldx #3 >SYSCALL GetMem bcs CS.RUN.RTS - >STYA ZPStrPtr + >STYA ZPLinePtr stx hStr >PUSHW L.MSG.INITCONF @@ -197,7 +207,7 @@ CS.RUN.CONF >PUSHW L.ETCHTTPDCONF sta hFile .1 >PUSHWI 256 - >PUSHW ZPStrPtr + >PUSHW ZPLinePtr lda hFile >SYSCALL fgets bcs .8 @@ -205,11 +215,11 @@ CS.RUN.CONF >PUSHW L.ETCHTTPDCONF tya beq .1 - lda (ZPStrPtr) + lda (ZPLinePtr) cmp #'#' beq .1 - >LDYA L.KEYWORDS + >LDYA L.KEYWORDS.CONF >STYA ZPPtr1 ldx #0 @@ -217,7 +227,7 @@ CS.RUN.CONF >PUSHW L.ETCHTTPDCONF .2 ldy #0 .3 lda (ZPPtr1),y - cmp (ZPStrPtr),y + cmp (ZPLinePtr),y bne .4 iny @@ -263,14 +273,14 @@ CS.RUN.CONF >PUSHW L.ETCHTTPDCONF *-------------------------------------- CS.RUN.CONF.JMP tya clc - adc ZPStrPtr + adc ZPLinePtr sta ZPPtr1 tay lda #0 - adc ZPStrPtr+1 + adc ZPLinePtr+1 sta ZPPtr1+1 - jmp (J.KEYWORDS,x) + jmp (J.KEYWORDS.CONF,x) CS.RUN.CONF.SERVERNAME >SYSCALL StrDup @@ -297,9 +307,6 @@ CS.RUN.CONF.DOCUMENTROOT stx hRootdir .9 rts -CS.RUN.CONF.ADDTYPE - clc - rts *-------------------------------------- CS.RUN.SERVER lda hSrvSocket >LIBCALL hLIBTCPIP,LIBTCPIP.accept @@ -325,10 +332,15 @@ CS.RUN.SERVER lda hSrvSocket >SYSCALL PrintF jsr CS.RUN.CLIENT + .8 clc .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 lda hClntSocket @@ -337,9 +349,78 @@ CS.RUN.CLIENT tay 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 >STYA ZPRequestPtr @@ -361,34 +442,12 @@ CS.RUN.CLIENT clc adc #S.TCP sta ZPRequestPtr - bcc .3 + bcc .8 inc ZPRequestPtr+1 - -.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 +.8 rts *-------------------------------------- -CS.RUN.REQUEST.GetStr +CS.RUN.REQ.GetLine ldy #0 .1 inc ZPnRequestLen @@ -417,19 +476,213 @@ CS.RUN.REQUEST.GetStr .31 eor #C.LF bne .9 - sta (ZPStrPtr),y Y,A = StrLen + sta (ZPLinePtr),y Y,A = StrLen clc rts -.4 sta (ZPStrPtr),y +.4 sta (ZPLinePtr),y iny bra .1 .9 sec 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 *-------------------------------------- CS.DOEVENT lda (pEvent) @@ -467,10 +720,9 @@ hLIBTCPIP .BS 1 LIBTCPIP .AZ "libtcpip" ETCHTTPDCONF .AZ "${BOOT}etc/httpd.conf" *-------------------------------------- -KEYWORDS .AS "ServerName " +KEYWORDS.CONF .AS "ServerName " .AS "Listen " .AS "DocumentRoot " - .AS "AddType " .DA #0 *-------------------------------------- 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.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 .AS "Server: A2osX-HTTPD 0.94" .DA #C.CR,#C.LF .AS "Content-Type: text/html" .DA #C.CR,#C.LF - .AS "Content-Length: 34" + .AS "Content-Length: 47" .DA #C.CR,#C.LF .AS "Connection: Close" .DA #C.CR,#C.LF .DA #C.CR,#C.LF - .AS "Hello From A2osX-HTTPD 0.94 !" + .AS "404:NOT FOUND" .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 .BS 1 @@ -503,6 +788,13 @@ SA.LOCAL .DA #AF.INET S.SOCKADDR.AF .DUMMY .OR 0 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 .ED *-------------------------------------- diff --git a/SRV/WWW/favicon.ico b/SRV/WWW/favicon.ico new file mode 100644 index 00000000..2e8b47af Binary files /dev/null and b/SRV/WWW/favicon.ico differ diff --git a/SRV/WWW/hello.html b/SRV/WWW/hello.html index 760e2384..d6b7ca2f 100644 --- a/SRV/WWW/hello.html +++ b/SRV/WWW/hello.html @@ -1,7 +1,5 @@ - A2osx Welcome @@ -19,7 +17,5 @@ Composed with care by:
©2020 and beyond - \ No newline at end of file +TEXT srv/www/hello.html diff --git a/SRV/WWW/index.html b/SRV/WWW/index.html index c0af731a..0f347e8d 100644 --- a/SRV/WWW/index.html +++ b/SRV/WWW/index.html @@ -2,23 +2,16 @@ NEW AUTO 3,1 - Title of the document - - + A2osX HTTPD Demo + + - -

This is a heading

+ +

A2osX HTTPD Demo

+

This is a paragraph.

+ Hello + Main diff --git a/SRV/WWW/main.html b/SRV/WWW/main.html index 761818da..c456b3b6 100644 --- a/SRV/WWW/main.html +++ b/SRV/WWW/main.html @@ -1,7 +1,5 @@ - A2osx HTTPD Server Tests @@ -25,7 +23,5 @@ resizes.
©2020 and beyond - \ No newline at end of file diff --git a/SRV/WWW/style.css b/SRV/WWW/style.css new file mode 100644 index 00000000..09580cb0 --- /dev/null +++ b/SRV/WWW/style.css @@ -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 diff --git a/SYS/KERNEL.S.STRING.txt b/SYS/KERNEL.S.STRING.txt index f50c16fd..6dea5eb4 100644 --- a/SYS/KERNEL.S.STRING.txt +++ b/SYS/KERNEL.S.STRING.txt @@ -53,8 +53,8 @@ K.StrCat sec * Y,A = destination *\-------------------------------------- K.StrCpy clc - pha phy + pha jsr SHARED.SPtr1PPtr2 bcc .2