mirror of
https://github.com/deater/dos33fsprogs.git
synced 2024-11-06 03:04:43 +00:00
webserver: attempt to handle circular buffer overflow properly
This commit is contained in:
parent
447cc49f6c
commit
ad9db0d0e7
@ -113,6 +113,11 @@
|
|||||||
930 RA=RM+24576:REM $6000
|
930 RA=RM+24576:REM $6000
|
||||||
940 PRINT "READ OFFSET=";RM;" READ ADDRESS=";RA;" READ SIZE=";SI
|
940 PRINT "READ OFFSET=";RM;" READ ADDRESS=";RA;" READ SIZE=";SI
|
||||||
'
|
'
|
||||||
|
' Check for buffer wraparound
|
||||||
|
'
|
||||||
|
942 BW=0
|
||||||
|
945 IF (SI+TA>=32768) THEN BW=1:BO=32768-TA:PRINT "RX BUFFER WRAPAROUND IN ";BO
|
||||||
|
'
|
||||||
' Print received packet
|
' Print received packet
|
||||||
'
|
'
|
||||||
1000 REM *** PRINT PACKET
|
1000 REM *** PRINT PACKET
|
||||||
@ -124,7 +129,12 @@
|
|||||||
1025 IF FL=1 THEN FL$=FL$+C$
|
1025 IF FL=1 THEN FL$=FL$+C$
|
||||||
1027 IF C=10 THEN FL=0
|
1027 IF C=10 THEN FL=0
|
||||||
1030 IF C<>10 THEN PRINT C$;
|
1030 IF C<>10 THEN PRINT C$;
|
||||||
|
1032 IF BW=0 THEN GOTO 1040
|
||||||
|
1033 BO=BO-1: IF BO=0 THEN POKE HA,96:POKE LA,0:BW=0
|
||||||
1040 NEXT I
|
1040 NEXT I
|
||||||
|
'
|
||||||
|
' Deal with first line
|
||||||
|
'
|
||||||
1050 PRINT "FIRST LINE=";FL$
|
1050 PRINT "FIRST LINE=";FL$
|
||||||
1060 IF LEFT$(FL$,3)<>"GET" GOTO 7000
|
1060 IF LEFT$(FL$,3)<>"GET" GOTO 7000
|
||||||
1065 N$=""
|
1065 N$=""
|
||||||
@ -139,7 +149,7 @@
|
|||||||
' TODO: handle wraparound of 8kb buffer
|
' TODO: handle wraparound of 8kb buffer
|
||||||
'
|
'
|
||||||
'
|
'
|
||||||
' TODO: Update read pointer
|
' Update read pointer
|
||||||
'
|
'
|
||||||
1100 REM *** Update read pointer
|
1100 REM *** Update read pointer
|
||||||
1110 POKE HA,4: POKE LA,40: REM *** 0x428 Received ptr
|
1110 POKE HA,4: POKE LA,40: REM *** 0x428 Received ptr
|
||||||
@ -191,15 +201,24 @@
|
|||||||
1930 TA=TM+16384:REM $4000
|
1930 TA=TM+16384:REM $4000
|
||||||
1940 PRINT "OH/OL=";OH;"/";OL;" TX OFFSET=";TM;" TX ADDRESS=";TA;" TX SIZE=";SI
|
1940 PRINT "OH/OL=";OH;"/";OL;" TX OFFSET=";TM;" TX ADDRESS=";TA;" TX SIZE=";SI
|
||||||
'
|
'
|
||||||
|
' Check for buffer wraparound
|
||||||
|
'
|
||||||
|
1942 BW=0
|
||||||
|
1945 IF (SI+TA>=24576) THEN BW=1:BO=24576-TA:PRINT "TX BUFFER WRAPAROUND IN ";BO
|
||||||
|
'
|
||||||
' Write data to TX buffer
|
' Write data to TX buffer
|
||||||
'
|
'
|
||||||
2000 T%=TA/256
|
2000 T%=TA/256
|
||||||
2005 POKE HA,T%: POKE LA,TA-(T%*256)
|
2005 POKE HA,T%: POKE LA,TA-(T%*256)
|
||||||
2010 FOR I=1 TO LEN(A$)
|
2010 FOR I=1 TO LEN(A$)
|
||||||
2015 POKE DP,ASC(MID$(A$,I,1))
|
2015 POKE DP,ASC(MID$(A$,I,1))
|
||||||
|
2017 IF BW=0 THEN GOTO 2020
|
||||||
|
2018 BO=BO-1: IF BO=0 THEN POKE HA,96:POKE LA,0:BW=0
|
||||||
2020 NEXT I
|
2020 NEXT I
|
||||||
2025 FOR I=1 TO FS
|
2025 FOR I=1 TO FS
|
||||||
2030 POKE DP,PEEK(16383+I)
|
2030 POKE DP,PEEK(16383+I)
|
||||||
|
2032 IF BW=0 THEN GOTO 2035
|
||||||
|
2033 BO=BO-1: IF BO=0 THEN POKE HA,96:POKE LA,0:BW=0
|
||||||
2035 NEXT I
|
2035 NEXT I
|
||||||
'
|
'
|
||||||
' Update TX write ptr
|
' Update TX write ptr
|
||||||
|
Loading…
Reference in New Issue
Block a user