Difference between revisions of "Current events"

From Spectrum
Jump to navigation Jump to search
Line 1: Line 1:
== Translations! ==
[[Image:00020.jpg|thumb|right|300px|Spanish translation of network config utility]]
After adding UTF-8 support, I translated the messages into Spanish, with some corrections from the denizens of foro.speccy.org (a Spanish Spectrum forum). I was very gratified that they said I was doing very well for someone who had only been learning the language for 6 months!
Odious on WOS has also offered a Portuguese translation, and since the UFT-8 0xC3 table contains all the characters used in that language too, it's merely a matter of building ROM images in Portuguese too. Since the strings are all in string tables anyway (rather than embedded in code) it's easy to separate the strings out into their own files. For each language, a ROM image is built (rather than carrying all the strings for each language in one grand unified ROM). It's very easy to load a new ROM onto the Spectranet '''over the network''' so therefore I thought it would be better to have a separate ROM image for each language, given how easy it is to switch ROMs.
Which  brings me on to the subject of ROMs. The Spectranet has 128K of in system reprogrammable flash. Only 16K is reserved for the Spectranet itself (and of that, I've not even used half yet). I expect many utilities would be written as ROM modules, and so not depend on mass storage being available. The next project, therefore, is to write the utility that organizes these ROM modules. Also, I have added a simple mechanism to make calls into ROM modules (regardless of the physical page they reside in) using a call number mechanism: a 16 bit identifier, where the high order byte represents the ROM ID (I doubt more than 256 ROM modules will ever be made for the Spectranet!) and the low order byte has meaning to the ROM module itself (and it's up to the ROM module to determine what to do with it - it might be a simple function call, or it might be a way of launching an application). I still need to test the code actually works. (Then look out for the ROM writing tutorial).
[[User:Winston|Winston]] 10:10, 26 October 2008 (UTC)
== Ahora, hay un poco de UTF-8 ==
== Ahora, hay un poco de UTF-8 ==



Revision as of 10:10, 26 October 2008

Translations!

Spanish translation of network config utility

After adding UTF-8 support, I translated the messages into Spanish, with some corrections from the denizens of foro.speccy.org (a Spanish Spectrum forum). I was very gratified that they said I was doing very well for someone who had only been learning the language for 6 months!

Odious on WOS has also offered a Portuguese translation, and since the UFT-8 0xC3 table contains all the characters used in that language too, it's merely a matter of building ROM images in Portuguese too. Since the strings are all in string tables anyway (rather than embedded in code) it's easy to separate the strings out into their own files. For each language, a ROM image is built (rather than carrying all the strings for each language in one grand unified ROM). It's very easy to load a new ROM onto the Spectranet over the network so therefore I thought it would be better to have a separate ROM image for each language, given how easy it is to switch ROMs.

Which brings me on to the subject of ROMs. The Spectranet has 128K of in system reprogrammable flash. Only 16K is reserved for the Spectranet itself (and of that, I've not even used half yet). I expect many utilities would be written as ROM modules, and so not depend on mass storage being available. The next project, therefore, is to write the utility that organizes these ROM modules. Also, I have added a simple mechanism to make calls into ROM modules (regardless of the physical page they reside in) using a call number mechanism: a 16 bit identifier, where the high order byte represents the ROM ID (I doubt more than 256 ROM modules will ever be made for the Spectranet!) and the low order byte has meaning to the ROM module itself (and it's up to the ROM module to determine what to do with it - it might be a simple function call, or it might be a way of launching an application). I still need to test the code actually works. (Then look out for the ROM writing tutorial).

Winston 10:10, 26 October 2008 (UTC)

Ahora, hay un poco de UTF-8

putchar42 showing accented characters

Just under 6 months ago, I started learning Spanish. While doing that, I discovered that the Spectrum does have a following outside of Britain - it has quite a strong following in Spain too. In fact, I've been using pages about Spectrum hardware in Spanish to help learn the language. (So, if the little dialogue in the screenshot is an example of terrible Spanish, my apologies, but I have only been learning for a short time).

Since the Speccy has a following there, it makes sense to have a Spanish translation for all the things in the Spectranet. To do that, accented characters, things like ¿ and ¡, and new letters like ñ must be supported. Since the Spectranet will be used to talk to things over the internet, it needs to do this in a standard way, too. UTF-8 is the way this is done. The UTF-8 character set supports a huge number of extra glyphs on top of what ASCII supports, and it's compatible with ASCII (characters 0-127 are the same). Supporting accented characters is very important if you're to support Spanish, because an accented character can change the entire meaning of a word: for example, si means "if", but means yes. Also, the ñ character is very important to support, because it's not an accented letter - Spanish has 27 letters, and ñ is a letter in its own right, coming after the letter N. You can't write ano if you really mean año - the latter means year, but the former means anus!

Actually, just a subset of UTF-8 is supported, but it's enough to support western European languages. All of the characters that follow 0xE3 are supported (this includes the accented characters and ñ, and things like the German ß - not to be confused with beta), and just a few characters that follow 0xE2 (€, ¢, ¡ and ¿).

Winston 23:36, 18 October 2008 (BST)

Extending BASIC ... with C?

Yes! It now can be done. If you've been following the development of the BASIC extension tutorial, you'll see that there's C code there. No, it's not theoretical, you really can write BASIC extensions in C with the Spectranet.

Actually, making a library to do it isn't all that hard, but strings do need some special handling as ZX BASIC does not use C strings. The strings are sequences of bytes as you might expect, but they aren't null terminated, instead the ROM's string handling functions return string lengths plus a pointer to the string. This is being handled in the C library by copying the string, null terminating it, and returning a length. (Copying only as much as the buffer, of course).

The next thing to do with C is to develop some guidelines for making ROMmable routines. Certain things in the z88dk expect the ZX ROM to be present (the print routines, for example, use the ROM's scrolling routine even if the character printing routines belong to the z88dk). This isn't a great deal, since C routines destined for ROM which need to do things like this can use the Spectranet's print42 routine (and I probably ought to make a library that lets stdout go there).

Winston 22:02, 16 October 2008 (BST)

Developers, developers, developers, developers!

OK, I think it's at a stage where someone else can also have a go at doing things with the Spectranet. You just know you need an interesting project for your own Spectrum as the dark days of winter approach...so...

What I am going to do is this. I've already posted in the WOS hardware forum, but I'm going to post this into the Development forum. I'm going to loan out (on a free loan, indefinite) 6 of the prototype boards to anyone who wants to develop for it. The deal is this - tell me what you want to develop, and if there's more than 6 developers chomping at the bit I'll have to choose the 6 ideas I like the most. You will need a real working Spectrum (48K, 128K or one of the Amstrad models) since the Spectranet is not emulated. You don't need any sort of mass storage for the Speccy - already there's a method to send data to the Spectrum from another machine over ethernet, accessable on the NMI menu.

This isn't a competition or anything like that for some fancy or uber-imaginative networked program for the Spectrum. Examples of some things that are fine ideas are:

  • An FTP client, perhaps with the ability to run a .SNA or use tape traps to load a .TAP file off the network.
  • A *good* IRC client, perhaps improving the rinkety-dink one I've written as a test, or perhaps something completely new
  • A networked strategy game.
  • A simple web browser
  • A news ticker and/or weather display. (Perhaps that's a good one for demo writers - there's lots of scope for making a novel way of displaying the current weather which can make the most of the Speccy's hardware)

Pretty much anything that needs the network qualifies. (I wonder if anyone can squeeze enough performance out of the Z80 for an SSH client!)

At the moment if you want to join in with development you'll have to do it in C (with the Z88DK) or in assembly language - channels/streams support is something I've got planned but it won't be there for a while. If you want a feel for the Spectranet's API (which, for the net code is a subset of the BSD socket library) you can take a look at the Software page. To contact me you can do so via the WOS forums or to my email address 'dyls (at) alioth (punto) net' (please put 'Spectranet' in the subject). Hopefully by the end of this month, there will be a few willing developers who want to hack at this thing.

Winston 15:50, 4 October 2008 (BST)

The last 10%

As usual, the last 10% is taking 90% of the time (and it doesn't help that I'm overloaded with projects at the moment). But it is getting closer, I promise!

I need to do some tidying up (hopefully this weekend) in the code - for instance, the socket library should save and restore the memory that's paged into area A, otherwise this paging area isn't very useful as a place to put code. The library also ought to make an attempt to allow data in this area to be transferred, hiding the fact that the ethernet buffers are memory mapped from the programmer as much as possible. I've thought of a way of swapping paging area B to do this, although this obviously has an issue if the buffer crosses the boundary between paging area A and B.

I've also been doing quite a bit of documentation recently (as you will have seen if you follow 'Recent Changes') including things like a nice memory map diagram. Some more must be done, though - for instance, documenting how to extend BASIC (fairly low priority at the moment) and how to write a ROM module (much higher priority).

What I want to do next is get the socket library paging sorted out, then once that's done, I think it's in a fit state for someone else to try and write some programs for it too. So continue to watch this space. I would like to make an announcement on the availability of development boards at the end of September if possible, since the long dark winter nights are coming and perhaps people will be looking for a new project for their beloved rubbery friend!

Winston 21:00, 11 September 2008 (BST)

Getting ready for the Steve Ballmer Monkey Dance

It's time to get ready and do a Ballmer impression: "Developers...developers...developers...developers..." - you've probably seen the video. But soon, that's what the Spectranet will need.

It's mainly an issue of documentation: so that people who fancy doing development know where to start, I need to get a basic user guide out for the development boards (things like 'what does jumper J1 do', and 'how do I set the IP address', and "how do I flash a new ROM" etc.) Also the tutorials - I need the tutorials and basic socket library API documented so that people who are otherwise great Spectrum developers, but who've not done much with netcode, know where to start. You'll note if you look at 'Recent Changes' on the wiki I've been doing some of this over the weekend (including a minor re-org of the front page).

It's my intention to do the following, once I feel I can release some boards for development. The deal is this: I'll make a permanent, free loan of a prototype board to anyone who's interested in developing something. If the developer can't continue for whatever reason, then they just pass the board onto the next person. The requirements for the developer who wants to take advantage of the free loan is to have something they want to develop, and also have a real Spectrum to hand - no emulators emulate this board yet, so a developer must have a real, serviceable Spectrum to hand. (What reduces the pain is that even now, before I've even developed the network filesystem, you CAN load programs over ethernet, making it fast and easy to test your code on the real machine). If demand outstrips supply, I'll choose whatever I consider the most interesting projects are. Hopefully, I'll have at least half a dozen boards I can lend to people (5 currently exist, and I hope to make a couple more soon). I'll be making an announcement on the World of Spectrum forums (and here, of course) when I get to that point. But it should be pretty soon.

Winston 20:50, 17 August 2008 (BST)

Older News