[Coco] The Coco's first webserver, written in Basic09

Jorge Renato Machin Ibarra jorge_machin at hotmail.com
Wed Dec 30 23:07:45 EST 2009


The first programs to serve dynamic contents were cgi:

http://en.wikipedia.org/wiki/Common_Gateway_Interface

I think you can emulate them using BASIC09 libraries or running system programs.

I also think you don't need an eval fuction to get dynamic content. If you have html code like this:

<p>
Hello @name
</p>

You only have to search and replace @name with your BASIC09 variable.

Hope it helps.

Jorge Machin

> From: asa.rand at gmail.com
> To: coco at maltedmedia.com
> Date: Wed, 30 Dec 2009 18:56:36 -0800
> Subject: Re: [Coco] The Coco's first webserver, written in Basic09
> 
> I was beginning with simply parsing an expression. I felt that if I could 
> accomplish this, the rest would be easier to figure out. The problem with 
> RUN is that it specifically launches a subroutine module (Basic09 I-Code or 
> 6809 object code), passing to it whatever parameters are required. This 
> means that the eval() function , in the statement RUN eval(<string>), is a 
> subroutine that does whatever parsing is necessary to evaluate the 
> "expression". The parameter, in this case, would be the string to parse.
> 
> Wayne
> 
> 
> ----- Original Message ----- 
> From: "Christian Lesage" <hyperfrog at gmail.com>
> To: "CoCoList for Color Computer Enthusiasts" <coco at maltedmedia.com>
> Sent: Wednesday, December 30, 2009 5:17 PM
> Subject: Re: [Coco] The Coco's first webserver, written in Basic09
> 
> 
> >I don't understand where you are heading to with this. You would need more 
> >than an expression evaluator in order to program a server that can generate 
> >dynamic content. In JavaScript, for instance, the eval() function parses 
> >the string it is given as a parameter, looking for JavaScript code. If it 
> >finds any JavaScript code, it will be executed. If you want to simulate the 
> >same behaviour in BASIC09, you will end up writing a complete BASIC09 
> >interpreter on top of the underlying one, unless you find a way to inject 
> >an arbitrary string in the latter.
> >
> > Hint: Use RUN.
> >
> >
> >
> > Wayne Campbell wrote:
> >> OK. I did a little. I really don't know what I'm doing here, but this is 
> >> what I got for a start. There are many problems. First, Basic09's 
> >> precedence ordering acts on the expression as follows:
> >>
> >> 2*3+5/2
> >>
> >> is evaluated as
> >>
> >> 2*3/2+5, yielding a result of 8
> >>
> >> To get the result of 5 (what we're looking for), it would have to be 
> >> written as
> >>
> >> (2*3+5)/2 (the remainder of 1 is dropped)
> >>
> >> Because I am parsing the string "as I go", I am getting incorrect 
> >> results. Not just 8 iunstead of 5, I am getting wierd numbers. It also 
> >> does not account for numbers greater than 1 digit in length. Hopefully 
> >> someone else can make the necessary corrections/modifications. I simply 
> >> don't understand enough to do it right.
> >>
> >> Wayne
> >>
> >> PROCEDURE eval
> >> DIM a,b,c,d,e,f:INTEGER
> >> DIM mul,div,add,sub:BOOLEAN
> >> DIM inputStr:STRING
> >> a:=0 \b:=0 \c:=0 \d:=0 \e:=0 \f:=0
> >> mul:=FALSE \div:=FALSE \add:=FALSE \sub:=FALSE
> >> inputStr:="2*3+5/2"
> >> REM a:=(2*3+5)/2
> >> FOR b:=1 TO LEN(inputStr)
> >>  IF MID$(inputStr,b,1)>="0" AND MID$(inputStr,b,1)<="9" THEN
> >>    IF c=0 THEN
> >>      c:=VAL(MID$(inputStr,b,1))
> >>    ELSE IF d=0 THEN
> >>      d:=VAL(MID$(inputStr,b,1))
> >>      GOSUB 10
> >>    ELSE IF e=0 THEN
> >>      e:=VAL(MID$(inputStr,b,1))
> >>      GOSUB 10
> >>    ELSE IF f=0 THEN
> >>      f:=VAL(MID$(inputStr,b,1))
> >>      GOSUB 10
> >>    ENDIF \ENDIF \ENDIF \ENDIF
> >>  ELSE
> >>    IF MID$(inputStr,b,1)="*" THEN
> >>      mul:=TRUE
> >>    ELSE IF MID$(inputStr,b,1)="/" THEN
> >>      div:=TRUE
> >>    ELSE IF MID$(inputStr,b,1)="+" THEN
> >>      add:=TRUE
> >>    ELSE IF MID$(inputStr,b,1)="-" THEN
> >>      sub:=TRUE
> >>    ENDIF \ENDIF \ENDIF \ENDIF
> >>  ENDIF
> >> NEXT b
> >> PRINT a
> >> END
> >> 10 IF mul THEN
> >>  a:=a+c*d
> >>  mul:=FALSE
> >> ELSE IF div THEN
> >>  a:=a/e
> >>  div:=FALSE
> >> ELSE IF add THEN
> >>  a:=a+f
> >>  add:=FALSE
> >> ENDIF \ENDIF \ENDIF
> >> RETURN
> >>
> >> ----- Original Message ----- From: "Christian Lesage" 
> >> <hyperfrog at gmail.com>
> >> To: "CoCoList for Color Computer Enthusiasts" <coco at maltedmedia.com>
> >> Sent: Wednesday, December 30, 2009 7:44 AM
> >> Subject: Re: [Coco] The Coco's first webserver, written in Basic09
> >>
> >>
> >>> If BASIC09 has an EVAL statement (I can't remember), you could easily 
> >>> program an ASP-like server. That would be pretty cool. I did that using 
> >>> another BASIC-like language a few years ago. I started from scratch, and 
> >>> the server was small, but good enough for small projects.
> >>>
> >>> Christian
> >>>
> >>>
> >>> -- 
> >>> Coco mailing list
> >>> Coco at maltedmedia.com
> >>> http://five.pairlist.net/mailman/listinfo/coco
> >>
> >>
> >> -- 
> >> Coco mailing list
> >> Coco at maltedmedia.com
> >> http://five.pairlist.net/mailman/listinfo/coco
> >>
> >
> >
> > --
> > Coco mailing list
> > Coco at maltedmedia.com
> > http://five.pairlist.net/mailman/listinfo/coco 
> 
> 
> --
> Coco mailing list
> Coco at maltedmedia.com
> http://five.pairlist.net/mailman/listinfo/coco
 		 	   		  
_________________________________________________________________
Windows Live: Make it easier for your friends to see what you’re up to on Facebook.
http://www.microsoft.com/middleeast/windows/windowslive/see-it-in-action/social-network-basics.aspx?ocid=PID23461::T:WLMTAGL:ON:WL:en-xm:SI_SB_2:092009


More information about the Coco mailing list