FEZ Timesharing System Announcement

Last November Tom/Skewworks released a version of Basic language called SBasic. When I saw the announcement, the gears in my brain began to turn. I began to think about the feasibility of developing a system similar to the Dartmouth Time Sharing System on a .NET Micro Framework device.

The Basic programming language was created at Dartmouth College in 1964 by two professors, John Kemeny and Thomas Kurtz. Their goal was to provide computer access for non-technical students. The language was implemented on a timesharing service. Users would connect to the central computer using Teletype machines to enter and execute their programs. Multiple users would share the resources of the computer at the same time. For the past few weeks I have been working on a recreation of a classical timesharing system.

The target system is a FEZ Spider, running 4.2 non-Gadgeteer software. Since most people do not have a Teletype machine and modem available, I decide to use Telnet for access. I now have fairly complete system complete, which includes the ability to enter and execute SBasic programs and includes a chat room. Tom’s SBasic interpreter has been used with minimal changes, to improve the localization of errors.

I have been doing some stress testing, and I have been able to have in excess of twenty active concurrent users in the chat room. I wrote a PC program that logged into the system and emulated fairly active chat users. With twenty active users, the transaction rate was one to two inputs per second, with each resulting in about twenty messages being sent out of the Spider. The response time is excellent, considering the processor power.

Over thirty users have been active, but it appears that thirty two sockets is the maximum number supported by the framework, and at a high transaction rate the framework was running out of output socket buffers.

The system was developed to easily be ported to other MF devices. At the present time, a JD11 Ethernet module is being used for Internet access, and a host USB module for connecting a thumb drive with 8GBs of storage.

I will be releasing the source for the system, but I am waiting for a Cobra II to arrive. I want to port the system to the faster G120 module.

I am soliciting some feedback on the current system. I have exposed a Spider, running the latest software, on the Internet at csdci.com. I suggest using the Windows Telnet client, but I have found that the Tera Term Telnet client also works. The Mac OS X client needs additional Telnet protocol coordination work, but can also be used.

With the online help you should be able to figure out what is available on the system. When you connect, you will see instructions how to setup your own account.

The only thing that might not be clear is how to enter a program. This is done by entering a line number followed by a SBasic statement. To change a line, enter the line number followed by the replacement statement. To insert a line, use a line number between the two statements where you want the insertion to go. To delete a line, enter the line number without a statement. Programs may be saved on the file system, for later access.

*** there is a problem with the talk command. only accepts one word messages. will fix tomorrow night.

7 Likes

@ Mike - That is very cool!!! I just connected and created a new account, it work very nicely. The input is not echoing back while I type but that might be my client configuration so I will check that first.

Well I wrote the Hello World of basic programs, kudos to you and Skewworks, it all worked perfectly.

And the echo issue was a configuration on my client, so no issue there.

Holy crap that is cool! My brain is swimming with ideas right now!

@ Mike - If I could give you 20 +1s I would. This takes me WAY back. I learned to program on a Commodore PET back in the day, and one of my first demo programs was making an ASCII rocket ship fly up the screen.

I was able to replicate that in a little over 10 lines of code. Good stuff. Thanks for bringing back some great memories, and what a VERY cool use of a FEZ!

@ devhammer - I hope you saved that demo.

Yup. Rocket.bas. :smiley:

Bummer, though, while I was working on a more advanced version that included some looping, I got kicked off the system and lost all my work. Forgot the cardinal rule to save early and save often. Definitely just like old times. :slight_smile:

my fault…

you were on so long I thought you were a hung session.

one of my planned features is an auto save on disconnect.

also, I want to add an idle disconnect

Did you just kick me off again? Lost the connection. :frowning:

Thankfully, this time I composed the code in notepad locally while pasting it into the session, so I didn’t lose everything…

One other thing…the CLS command doesn’t seem to work in my program. So far, everything else seems to work fine.

cls is not implemented. not sure what to do.

I did not terminate you again

I guess that explains why you started ignoring me in chat… :wink:

In case anyone else can’t remember…here’s the SBASIC commands.

http://www.tinyclr.com/codeshare/entry/603

CLS isn’t implemented in SBasic? The Codeshare project indicates it is:

http://www.tinyclr.com/codeshare/entry/603

Or am I misunderstanding?

For chat, if you just type something and hit enter, does that text get sent to anyone in the room? And if you want to send to just a single user you use the @ username syntax?

Mike, I don’t seem to be able to break out of an endless loop. CTRL+C doesn’t work. :frowning:

10 INT I = 0
20 FOR I = 1 TO 10
30 PRINT I
40 LOOP
RUN

I doesn’t seem to be incrementing. It just keeps printing “1”. Perhaps my SBASIC is rusty :wink: Regardless, you might want to check out the CTRL+C support.

FOR is closed with NEXT

DO is closed with LOOP

this is cool … brings memories of the BBC / TI / C64

—typing text in the chat room seems to be interpreted as a command

BTW, There are examples of most if not all of the supported syntax in the resources file of the codeshare project Skewworks posted:

http://www.tinyclr.com/codeshare/entry/603

10 for i=0 to 10
20 print i
30 next
40 print chr(7)

Oh yea…now it’s coming back to me :smiley:

@ Mike - This is awesome! I haven’t had a chance to log in yet, but I plan to very soon. It’s amazing that when I first created SBASIC I gave Eve a little history lesson about it, which included the Time Sharing System and now you’ve gone and implemented it!

It is so great to see other people expanding on my project and exactly the reason I share so much code. :smiley:

Please email me through Skewworks, I’d like to set you up with Clix and Tinkr so I can see what you do with them too. :wink:

Thanks Tom, but I already have Clix and Tinkr. :slight_smile: