Announce: Firmware Release 0.9.8 (Candidate). You Will Like This Very Much

136 views
Skip to first unread message

Julian Skidmore

unread,
Mar 23, 2013, 1:30:09 PM3/23/13
to FIGnition
Hi folks,

At LONG LAST, I have a candidate release for FIGnition's firmware,
revision 0.9.8; along with a demonstration of the nyan cat blitter
demo with clipped blitting. I'm pretty sure you'll like it a lot!

Revision 0.9.8 has been a long time in coming. The first FIGnition
document I wrote way back in October 2011 was called GameMode.cwk and
was a feasibility study in being able to cram useful tiled graphics
onto a design for an AVR-based computer with external RAM and Flash,
that became FIGnition. I then had to shelve the idea while I got
FIGnition to the point where it could become a proper computer, but
when I realized I could implement an actual bitmapped frame buffer
(not just UDG graphics) on FIGnition I resumed the idea as a full
blitter, blogging about it in November 2012:

http://oneweekwonder.blogspot.co.uk/2011/11/fignition-hires-graphics-api-rfc.html

After another, gosh, 18 months it's finally working well enough for a
release, along with some other changes. These can be summarized as:

* The language now supports basic string handling based on
zero-terminated strings** as well as some other minor additions and
changes. Also, a few commands have been removed and some commands are
invisible, but have kern vectors.

* System messages are now nicer, there are more informative error
codes and loading blocks looks much neater.

* The editor now supports command completion and a minor bug in the
editor has been fixed.

* Some aspects of the system have changed. The internal structure of
dictionary headers has been simplified and shortened. All strings
within the system now use strings compatible with the new string
commands. A plotting bug with the NTSC version of FIGnition's recent
firmware has been fixed.

Because the release notes are pretty long, I've attached them in a pdf
which includes an update of how to use the API. The NyanRace demo is
also attached and there is a corresponding video on YouTube. Note, it
can move up to 12*11 = 121 bitmapped tiles at 50Hz (every move of
course, involves a blit to display the new tile and another to display
the old tile).

http://youtu.be/_uj8NTjIy3c

Do download the firmware (available for PAL and NTSC for both the
AtMega168 and the AtMega328 versions of FIGnition). There are now
about 32 bytes free on an AtMega168, but I plan to squeeze more space
from it to support the firmware releases all the way to 1.00 and
possibly beyond.

When you've downloaded it, let me know what you think. Overall, I'm
sure you'll think it's great :-) There may be a few bugs remaining
with the release, so I haven't yet published it on the web site.

-cheers from julz

[** it should be possible to write FIGnition programs which use
traditional Forth strings alongside the new strings].
--

The DIY 8-bit computer from nichemachines™
Firmware0_9_8ReleaseNotes.pdf
NyanRace.fth
NyanCatsClipped.jpg
NyanRace.zip
FirmwareRev0_9_8Candidate.zip

Julian Skidmore

unread,
Mar 23, 2013, 1:45:33 PM3/23/13
to FIGnition
PS. Correction: GameMode.cwk was written in October 2010, and the Blog
entry in November 2011.

-cheers from julz

carl

unread,
Mar 24, 2013, 6:33:22 AM3/24/13
to fign...@googlegroups.com
Have updated to the new firmware.

I like the loading xx also the new error codes, they remind me of the Galasjia codes when I was reading about that system.

I have loaded nyans, two issues need clearing up.

I am running 168 NTSC

loading a block at a time, and it loads in fine. But if I compound load, that is to say put all the load instructions in one line then execute, I get an error ' in look what's cursor' this must be a routine in your firmware? 

Nyans is not Woking at the moment,

I have narrowed it down to 1 vmode cls this gives me a noisy screen, should I have a clean one?

I am using your NyanRace.fth file an copying over to the fignition.



hex create cat ( 4x3)
0001 , 0202 ,
0202 , 0272 ,
FF00 , 0001 ,
2000 , 0001 ,
0FF00 , 0020 , <<<< is there a Byte too many there julz?? [ 0ff00 should it be FF00 ]
0032 , 4844 ,
8040 , 2020 ,
202C , 3222 ,
9EC6 , 3A0E ,
0202 , 060F ,
0800 , 0240 ,
0000 , 1000 ,
4340 , 848C ,
8084 , 4720 ,
C202 , 0959 ,
0191 , F204 ,
1112 , 1C00 ,
0000 , 0000 ,
FF48 , 3800 ,
0000 , 0000 ,
FF25 , 1C00 ,
0000 , 0000 ,
F820 , E000 ,
0000 , 0000 ,

decimal

I like it julz and the notes are great too.


Well done Julz.

Carl.

carl

unread,
Mar 24, 2013, 6:40:21 AM3/24/13
to fign...@googlegroups.com
this is the pic of what 1 vmode cls in the code gives.
100_3319.JPG

Julian Skidmore

unread,
Mar 24, 2013, 11:31:50 AM3/24/13
to FIGnition

Hi Carl, have you tried the PAL version, which should work with LCDs now? The message "In Look What's cursor" sounds like a problem with a comment being interpreted as an error. 1 vmode cls should work - cls sets the clip to the full screen and fills the frame buffer with 0s. cls should take around 3.2ms and will happen just as the bottom margin begins, so it'll end way before the next frame image appears.

I'll check what you've said soon. My apologies for any errors of course, it does take alot of work to get releases out, and inevitably, users find problems I didn't - my tests have been working well.

Finally, 0FF00 is actually correct and doesn't store an extra bytem The command which converts text to numbers, i.e. number, always converts to double numbers, but if you don't put 'd' on the end it throws away the top 16 bits. I just stick a 0 at the start from my Z80 days. Note, we don't really need hex and decimal now, hex numbers can be entered by prefixing with '$' even in decimal mode!

cheers julz

--
You received this message because you are subscribed to the Google Groups "FIGnition" group.
To unsubscribe from this group and stop receiving emails from it, send an email to fignition+...@googlegroups.com.
For more options, visit https://groups.google.com/groups/opt_out.
 
 

carl

unread,
Mar 24, 2013, 12:17:00 PM3/24/13
to fign...@googlegroups.com
Thanks Julz,
I will have more time monday to try the 168 pal firmware, please don't feel that you should be sorry for anything at all! there tends to be nothing wrong with the computer but the person operating it!

I will put the 0 back in the code too.

Carl.

Julian Skidmore

unread,
Mar 24, 2013, 12:49:41 PM3/24/13
to FIGnition

Hi Carl, thanks that's great! also you don't need the 0 , Forth reads it as a number because it can't find it in its dictionary. Unless you write a : FF00 .... ; command, FF00 will be a number. In some Forths its even convention to define 0, 1, 2 & 3 as

0 const 0
1 const 1
2 const 2
3 const 3

to save a byte or two every time you use them. That's because normally numbers compile into  { LIT, 16-bit number } taking 4 bytes. FIGnition used to do exactly this, but then I added byte literals so 0 .. 255 only compile to 2 bytes which is just as compact. Zero has a special byte code, so 0s use only 1 byte.

Anyway, lot's of stuff you don't need to write programs :-)

cheers julz

Mike Jury

unread,
Mar 24, 2013, 2:20:33 PM3/24/13
to fign...@googlegroups.com

I *really* need to build my fignition, to try out some of this stuff.

Regards,

Mike

Julian Skidmore

unread,
Mar 24, 2013, 3:46:22 PM3/24/13
to fign...@googlegroups.com
Hi Mike,

Indeed you do need to build it :-)

Hi Carl,

I checked out the NTSC/AtMega168 build from the .zip I sent with my
NyanRace on the external Flash chip and it worked OK. But when I
checked it against the source code in NyanRace.fth I found there was a
missing dup in CatKill which would have caused a major crash. I've
corrected it, re-hexed it; avrdude'd it to that FIGnition setup and
now it works :-)

Hope this helps!

-cheers from julz

PS. Here's the current listing (with $ used to indicate hex numbers
and clg removed):

create cat ( 4x3)
$0001 , $0202 ,
$0202 , $0272 ,
$FF00 , $0001 ,
$2000 , $0001 ,
$0FF00 , $0020 ,
$0032 , $4844 ,
$8040 , $2020 ,
$202C , $3222 ,
$9EC6 , $3A0E ,
$0202 , $060F ,
$0800 , $0240 ,
$0000 , $1000 ,
$4340 , $848C ,
$8084 , $4720 ,
$C202 , $0959 ,
$0191 , $F204 ,
$1112 , $1C00 ,
$0000 , $0000 ,
$FF48 , $3800 ,
$0000 , $0000 ,
$FF25 , $1C00 ,
$0000 , $0000 ,
$F820 , $E000 ,
$0000 , $0000 ,

50 const maxCats
: arr3b
<builds
3 * allot
does> over + over + +
;

0 var numCats
maxCats arr3b catList

0 var seed
: rnd ( range -- rnd)
seed dup >r @ 1+ 75 *
dup r> ! u* swap drop
;

: catKill
numCats @ dup 1 > if
1- dup catList
dup c@ swap 1+ c@ at
0 6176 blt ( del cat)
numCats !
then ;

: catInit ( nuCats --)
maxCats numCats @ -
min
begin
?dup while
numCats @ catList
128 rnd swap
2dup c! 1+
136 rnd swap
2dup c! 1+
16 rnd 1+ swap c!
at 0 6176 blt
1 numCats +! 1-
repeat ;

: catMv ( y x dx -- y x)
+ dup 159 > if
160 - swap 24 +
dup 159 > if
drop 0
then
swap
then
;

: catsBlit ( --)
0 catList
numCats @ 0 do >r
r c@ r 1+ c@ 2dup at
swap r 2+ c@ catMv
over r 1+ c! ( nu x)
dup r c! ( new y!)
swap at
0 6176 0 6176 2blt
r> 3 + ( next cat)
loop drop
;

: fps ( frames clock' -f)
swap 1+ swap
dup clock i@ -
0< if
50 + 0 0 at over
numCats @ . .
swap drop 0 swap
then
;

: doKey ( --)
inkey dup 9 = if
1 catInit
then
dup 8 = if
catKill
then
;

: nyans
1 vmode cls
cat 6176 0 tile
10 catInit clock i@ 0
begin
catsBlit fps doKey
13 = until
0 vmode
;
NyanRace.zip

carl

unread,
Mar 24, 2013, 4:32:56 PM3/24/13
to fign...@googlegroups.com
Thanks Julz,

I seem to still have a problem with 1 vmode in both flavours of the 168 firmware- or at least I thought I did!

As I seemed to have a messed up 1 vmode for a long time before this update ( I had put it down to @TODO from GoodPal ) I had thought it was the firmware.

But then I decided to swap my U2 chip over and now its working correctly.

Now what did I do to the offending chip, whats it for? and how can I fix it?

PS Naycats is stunning, might put a bit on video @some point.

Julian Skidmore

unread,
Mar 24, 2013, 4:38:34 PM3/24/13
to FIGnition

Hi Carl, U2 is the external serial RAM, usually 8Kb, sometimes 32Kb. All your programs compile into there, and run from it. also the hires frame buffer is there. Maybe you static'd it ;-) glad it's fixed though & glad it pointed me to a bug :-)

-cheers julz

carl

unread,
Mar 24, 2013, 4:48:30 PM3/24/13
to fign...@googlegroups.com
Great stuff, how do I get the frame buffer working again? cmd E would clean U2 and U3 but my understanding is that the firmware upgrade will not write to the U2 chip with a new frame buffer . Can I dope it back to life?

Julian Skidmore

unread,
Mar 24, 2013, 5:21:01 PM3/24/13
to FIGnition

hi Carl, if your old U2 doesn't have working frame buffer then it means it's busted I'm afraid :-( The frame buffer's just an area of the RAM I chose. The only difference is that it's being read continually by the firmware, 3200x50 = 160Kb/s.

So if you have a minor unreliability in the chip, it'll show up pretty quickly. Or it could be just a problem in the upper 3 or 4Kb so running programs had been ok as they were never so big they touched that part.

Cmd E doesn't really fix U3 either, it just fixes the organisation of the Flash memory as I've defined it.

Hope this helps! Cheers julz

Jeff

unread,
Apr 20, 2013, 3:51:54 PM4/20/13
to fign...@googlegroups.com
Hi Julz,

Will this work on my RevC board, please? I think I'm on 0.9.6 at the moment.


Thanks & regards,

Jeff


On Saturday, 23 March 2013 17:30:09 UTC, Julz wrote:
Hi folks,

At LONG LAST, I have a candidate release for FIGnition's firmware,
revision 0.9.8; along with a demonstration of the nyan cat blitter
demo with clipped blitting. I'm pretty sure you'll like it a lot!

...

Julian Skidmore

unread,
Apr 20, 2013, 4:06:44 PM4/20/13
to fign...@googlegroups.com
Hey Jeff!

Good to hear from you, it was your birthday recently IIRC :-)

I managed to improve the firmware pretty quickly between 0.5 (June
2011) and 0.9.6 (December 2011), but then things became much slower -
mostly because I was trying to balance time between promotion and
development and as a result I wasn't nearly so productive. Hence the
next release, 0.9.7, came out in September 2012. That version added
the new ragged editor and made things a little nicer.

The 0.9.8 version in this thread is only a candidate release - in fact
there are a few minor changes between it and my current firmware,
which will be the firmware that goes into the release of FIGnition for
RS. Run it though, have a play with Luna too :-)

As for the future, I only have plans to create firmware revisions that
run on all FIGnitions, so yes 0.9.8 will run on your RevC with sprites
and blitter too! If you're able to wield a soldering iron you can even
add the audio hack to your FIGnition too :-)

Let me know how you get on!

-cheers from julz
> --
> You received this message because you are subscribed to the Google Groups
> "FIGnition" group.
> To unsubscribe from this group and stop receiving emails from it, send an
> email to fignition+...@googlegroups.com.
> For more options, visit https://groups.google.com/groups/opt_out.
>
>
>


Jeff

unread,
Apr 22, 2013, 2:04:05 PM4/22/13
to fign...@googlegroups.com

Thanks, Julz. Good memory - my birthday was last week.

While we wait for 0.9.8 to go final I've upgraded to 0.9.7, which seems fine although it still doesn't work with my LCD monitor :(

OT, I'm planning to start tinkering with Z80 assembler again.

Julian Skidmore

unread,
Apr 22, 2013, 2:43:15 PM4/22/13
to FIGnition
Hi Jeff,

There's a couple of versions of 0.9.7 (yeah!) only the last one has the LCD fix, you need to track down the post about the LCD fix:

http://groups.google.com/group/fignition/browse_thread/thread/da30cd5dbcc4866c/12d382d864a9c886?lnk=gst&q=lcd+fix#12d382d864a9c886

As for the OT, well Z80 is always fun eh? Are you doing another game conversion?

-cheers from julz


--
You received this message because you are subscribed to the Google Groups "FIGnition" group.
To unsubscribe from this group and stop receiving emails from it, send an email to fignition+...@googlegroups.com.
For more options, visit https://groups.google.com/groups/opt_out.
 
 



--
                             
FIG - black on whiteMini.jpg
NmLogoMini.jpg

Jeff

unread,
Apr 22, 2013, 3:47:18 PM4/22/13
to fign...@googlegroups.com

Indeed, I used the one WITH the fix (downloaded from the main site)!

Z80-wise, initially I'm going to re-visit some of my GUI code to re-understand it and expand the documentation. Also to establish a new Mac-based toolchain.
Reply all
Reply to author
Forward
0 new messages