Total Units Connected: 2196
 

Cabco Stand Version History

This lists all logged changes to the Cabco stand firmware. Versions 1.xx[.y] are radio versions, whereas TV stand versions start at version 2.xx.

2.23 – 28 November 2006

Added 2.18 changes to 2.22

2.22 – 12 July 2006

Added 2.17 changes to 2.20

2.20 – 20 June 2006

Now automatically checks whether coin or note reader attached and can handle either without having to update code.

Now handles coupons.

Overhaul of coin and note reader code.

Coin reader: added tube status, change given and other stuff.

2.18 – 28 November 2006

There were many problems caused when the part of flash where GlobalStats is stored goes bad.

To fix this I've added a backup in flash of GlobalStats which is the same as how it's done for GlobalSettings.

Fixed another problem where if the stand was reset soon after a Harvest call the AuditEntriesTotal would be incorrect and cause 500 logs to be sent the next call.

Fixed a problem where validator would be disabled if MDB plug was unplugged for less than 10 seconds.

Added the fix from 1.27 Radio code to prevent problem where stands have to be manually reset after downloading.

2.17 – 12 July 2006

Baden has taken over again.

With the last few versions I was using more XDATA than was available (and the compiler didn't even give a warning). This was causing all sorts of problems including not being able to download to 2.16

Gary found some more RAM in the Real Time Clock (240 bytes) which I am now using.

2.13 – 14 February 2006

Changed welcome screen (DrawClWelcome) so it updates automatically; this was so we can download new hire price and it updates the screen straight away.

2.12 – 19 December 2005

Note reader code: we now actually check the received MDB checksum.

If it's good we send ACK and continue.

If it's bad we send NAK and ignore; will poll again in another 100 ms or so.

Special checking for status codes: 05 jam, 03 or 06, for anything else we just log it and record the first two data bytes in the log data.

2.11 – 1 November 2005

Turn off ALE (special function register AUXR.A0) to go into low-EMI mode.

Wrote log for "other bill validator error" for debugging, also reset reader.

Added code for MDB coin reader (inside IFDEF, not fully debugged).

2.10 – 19 October 2005

Checks kart status ('S' command) of next kart every second, in order to get battery voltage and BoardIteration (which is battery/ready-to-hire info).

Set kart's "battery flat" flag if BoardIteration = 'a', so it gets marked as unavailable; unset the flag if BoardIteration then gets > 'a'.

Added MinHireVoltage and MinChargeTime to config and kart settings, these can only be changed via the config file (not with LCD display).

2.09 – 19 October 2005

Ben took over from Baden around this time.

Dropped the now-unnecessary VerCode (extra version number).

Finished CoinCo MDB stuff handling.

Fixed various other minor bugs.

2.00 – 16 March 2005 (VerCode 200)

The program has forked after v1.19, Tom is tidying up things for the old stuff and Baden is doing the new stuff (v2.00 onwards).

Baden Grey from Harvest Electronics Ltd has taken over.

Have been advised that old Radio only karts and new TV/Radio karts will not be mixed in the same store. Therefore, version 1.14 will be the last version used for Radio only karts unless any updates need to be made. Version 2.00 and above will be used for the new TV/Radio karts and will not work with the old karts (because it makes the code simpler).

Changes to General Settings: HirePrice has been split into HirePriceRadio and HirePriceTV. AutoChooseTime, AutoSelectTime and AutoHireTime have been added.

Changed the user interface to accommodate both Radio and TV Hires.

Split Hire command (sent to kart) into RadioHire(H) and TVHire(V).

Removed a whole lot of unused stuff.

Added support for new CoinCo note reader, removed stuff for old reader(s).

1.27 – 28 November 2006 (VerCode 127)

Fixed 1.24 problem properly this time.

There were many problems caused when the part of flash where GlobalStats is stored goes bad.

To fix this I've added a backup in flash of GlobalStats which is the same as how it's done for GlobalSettings.

Fixed another problem where if the stand was reset soon after a Harvest call the AuditEntriesTotal would be incorrect and cause 500 logs to be sent the next call.

1.26 – 10 October 2006 (VerCode 126)

Fixed the problem introduced in v1.24

1.25 – 18 July 2006 (VerCode 125)

We had problems with some stands with v1.24 and they had to be reset manually.

This version is exactly the same as v1.24 but with a different version number just for testing.

1.24 – 18 July 2006 (VerCode 124)

Added changes from latest tv code to fix flash problem.

1.23 – 14 February 2006 (VerCode 123)

Changed welcome screen (DrawClWelcome) so it updates automatically; this was so we can download new hire price and it updates the screen straight away.

1.22 – 13 July 2005 (VerCode 122)

Stand upgrade record is now initalised so that the stand knows that it is not being upgraded.

Stand upgrades now time out after 15 minutes.

1.21 – 04 April 2005 (VerCode 121)

This was branched off and is not in this version.

1.20 – 04 April 2005 (VerCode 120)

The flash initalise system was clearing the auditbuffer when there was a soft watchdog, so audit entries were getting lost. This is now fixed. (Bug introduced in 1.19).

Different bootup type audit log entries (added in 1.19) are now shown when not in verbose mode.

There is now a limit of 3 times that the stand will boot up because of watchdogs before it erases the ram as well. This should prevent the possibility of the stand watchdogging repeatedly.

When the memory was re-initalised because of a watchdog error, the type of watchdog error that caused the reset was being lost. This is no longer the case.

1.19 – 3 March 2005 (VerCode 119)

Turning on the WDT build conditional that was turned off for emulation and not turned back on for the release of 1.18.

Cutting out the radio state string in the Comms debug screen to cut down on code space so that this stand is supported by the old bootloader. You are able to enable and disable this using the SaveCodeSpace build flag. (This conditional is NOT defined in this release: thus nothing is removed for this build).

1.18 – 24 February 2005 (VerCode 118)

Damage to the watchdog variables in memory will now cause an immediate software reboot (and an appropriate log entry).

Now provides much more information about the type of watchdog that has occurred upon bootup.

1.17 – 23 February 2005 (VerCode 117)

Fixed a bug in the note reader comms where a malformed partial packet from the note reader would cause us to go into an infinite loop. This is most likely a fix to the nasty watchdog problem that we have been having for some time now.

We now ignore the note reader full message from the reader if we are stacking a note, as otherwise we might react to false "stacker full" messages, or false "note stacked" messages.

Couple more checks with the event queue in the user interface.

Should no longer crash if we receive a lot of data from harvest faster than we can process it. Added a new log entry that will show up if this almost happened EHarvestCrashAverted = 0E5H; Harvest overflow crash averted.

No longer reset the watchdog directly during a CRC operation, which was futile anyway - we were doing watchdog in the interrupt.

LCD output buffer increased in size slightly to remove the possibility of overrunning this buffer during an LCD write operation (to draw to the screen).

We now update the number of dollars required when notes are inserted in the "more money required" screen.

No longer reset the watchdog during the note rdr response processing routine, as we do this in the interrupt now.

1.16 – 7 February 2005 (VerCode 116)

Had a problem with a variable decl in the display routine that was nuking b31 whenever you changed screens: b12_3 : BYTE AT 10H; byte var level 1 number 3 also declared in globals.def as b12.

1.15 – 3 February 2005 (VerCode 115)

Watchdog resets are now "Detected" using software rather than hardware, and a restart is done from inside the timer interrupt if possible. This significantly reduces the possibility of rolling back to an old version of code due to watchdogging.

There is a new log entry (PowerUpIAP = 0B9H for resetting due to IAP invocation, which will only be shown when upgrading from 1.15 or later to 1.15 or later. Upgrading via IAP will no longer show the "Booted up due to watchdog fault" log entry.

Log and flash data is now recovered after a watchdog fault, meaning that we shouldn't lose the last 4 minutes of log entries when the stand falls over.

A new debug screen has been added in service mode (under the other debugging screens) allowing you to reset the stand via a watchdog fault (which works by going into an infinite loop and not maintaining the WD). A log entry (EServMdForceWD = 03EH) has been added for this. The fact that this log entry shows up in the log proves that log entries are being properly recovered on powerup.

1.14 – 20 December 2004 (VerCode 114)

Fixed a nasty bug to do with variable overlaying inside the user interface code, which would have caused problems around the time a kart was actually hired (after the ride had started).

1.13 – 23 November 2004 (VerCode 113)

The watchdog timer is reset via the 1ms interrupt. This uses a counter to make sure that we still watchdog if the foreground crashes. Now the watchdog is only maintained in the foreground routine, and also in the CRC routine (CRC of 4K of code takes 130 ms).

We can now create auditlog rollovers even if the clock is in 12 hour mode.

1.12 – 16 November 2004 (VerCode 112)

Now reports an additional 3 bytes at the end of the harvest packet. These bytes directly reflect the current state of the note reader as read by the stand.

Now clears the watchdog more often in the flash code, and more often while processing the response from the note reader. The hope is to reduce the number of times we see the stand rebooting while validating notes.

1.11 – 10 November 2004 (VerCode 111)

The general settings are now backed up onto two different pages in the flash, so less likely to be overwritten.

This version is a release candidate.

1.10 – 10 November 2004 (VerCode 110)

Changed the version number for bootloader checking.

1.09 – 2 November 2004 (VerCode 109)

You should now be able to Hire karts when there is no note reader as long as the stand is in free mode.

The comms and kart upgrading screens now refresh more often.

When a kart is rebooting, the stand should now expect it to be out of range when it is polled.

After a kart reboots with new code, its current version number should be re-read correctly, allowing an immediate retry.

Now disables the serial interrupt on behalf of the bootloader when loading new code.

Didn't do bounds checking on the "Bank number" when reading of Kart code information. This could possibly allow buggy code elsewhere to wipe kart code from the stand.

Note reader comms errors are now debounced, which means you should no longer see "No karts available" from front screen while notes being validated.

Note reader comms errors are now logged.

Note reader comms errors are an "error event" and therefore cause a callout.

Stand no longer has "Note Jams", now has "Bill jams".

You can now change the general settings on the stand using the 'Z' command.

Freed up 5000 bytes of code space by using short jumps rather than long jumps in the compiler.

You can now see the state of the KControl system in the comms debug screen again.

Off by one bug in the comms code. If the Harvest packet foreground routine didn't process the header before the data was received, then the data wasn't processed properly. This affected all harvest commands (about 3/4 of the valid harvest packets were rejected due to this bug).

When General settings are lost, Default volume stettings are 57 & 47 for Parent and Child respectively (rather than 0).

1.08.0 – 21 October 2004 (VerCode 33)

Kart control screen formatted different.

Should now save an ID number to flash immediately after it is changed.

1.07.9 – 19 October 2004 (VerCode 32)

Call out counter is now implemented - See "Call out generation" in the Stand manual.

Harvest packet generation is now implemented.

Config packet generation is now implemented.

Battery voltages are now sampled when karts are in range and the voltage hasn't been sampled since the last harvest packet.

Kart stats are now gathered every on a rotating timer over the course of 32 minutes.

Kcontrol has been fixed to no longer allow commands to be sent to karts that are not installed.

Note Jam has a 2 min debounce and a Note Jammed clear system, along with debounce.

Memory Map Problems solved by putting more variables from XData into IData.

1.07.8 – 18 October 2004 (VerCode 31)

The Ride counter created when a kart is hired by manual command was off by one, that is now fixed.

The debug screen showing the Code transmission progress is now easier to understand.

The last kart stats screen showing the version of code on the kart is now easier to read.

The hire counter shown in Kart Control no longer "resets" when you exit and clear back to 0. this means that you shouldn't see a hire counter value such as 65535 or such.

1.07.7 – 30 September 2004 (VerCode 30)

Now shows the battery full percentage of every kart that is added to the stand in the Kart Control list (Rather than the Kart ID number).

Service mode button now overrides poweron screen, entering service mode.

The Kart Available routine now returns false if there is a note reader problem, causing the stand to show the no karts available screen.

There is now a note validating screen, which tells the user to look for the kart number on the rear of the kart.

The stand no longer shows the "Please confirm your kart" Screen when the user selects one with their select button.

The wait period when no buttons are pressed when karts are being selected has been increased to 20 seconds.

The "You cannot hire a kart" screen now shows different text if there is a note jam.

Flat battery and low battery log entries put back in (taken out in 1.07.5) and the "all karts out of range" and the "Kart available" log entries taken out.

Changed general settings to make it more user friendly.

Fixed a bug where certain note reader flags could be spuriously generated when a note was stacked. This caused more Note jammed messages than appropriate.

Now writes a rollover flag when the time is set.

Most log entries are now filtered out of the log (as in never created) if the verboseLogs flag is not set. This flag will later be transferred to all karts being hired from this stand and make the kart logs shorter too.

Micro now only enters idle mode if there was nothing to do recently.

Pressing the service mode button while on the main menu of service mode will take you to the exit and don't clear screen rather than the exit and clear screen.

To Speed up code transmissions, I disabled polling of note readers and polling of karts during code transmissions in the stand code. I have taken this out as it could cause stands to seem non-responsive while receiving code from harvest.

Now has a Trial version Build flag, helping us to easily control releases and distinguish them from test copies.

Now writes the poweron flag AFTER the time rollover flag.

1.07.6 – 27 September 2004 (VerCode 29)

Now reports in the "Test" Command ('T') If there are currently any errors which should cause a serviceperson to visit the store.

A kart with a low battery is still polled for kart info when it becomes idle so that we can get out of low battery mode without having to enter service mode (as before the kart stats on flat karts wouldn't be updated until viewed manually under kart control). Without this, you can't easily replace flat batteries in the field.

1.07.5 – 27 September 2004 (VerCode 28)

Implemented a timeout to the harvest system where if the harvest port doesn't send us a valid packet for 5 seconds then we stop listening.

We didn't check that the comms port wasn't already being used by the note reader before we started talking to harvest, so it was possible to be talking to harvest at the same time as we should be talking to the note reader.

1.07.4 – 22 September 2004 (VerCode 27)

When adding karts to the stand, kart numbers start from 1 rather than from 0. This makes it easier to set up the first stand in the store simply by holding down the select button and the karts are added in the order found.

When hiring Karts, the Kart was hired auditlog entry is now little endian rather than big endian.

Should now create rollover flags only at the correct times rather than every time now.

When a kart was in brake release mode, we would write a log claiming that it was now hired. This has been fixed.

No longer writes messages to the log about karts going in and out of range to keep the log clean.

The NoteValidated flag is now generated when the note goes into "Escrow", rather than the NoteInserted flag. It is still preceeded by the FFNoteInsertedVal flag.

When a kart is hired, the FKartHiredNum flag now preceedes the KartHired flag to make sure that "Data" flags always preceed the relevant "Time" Flag.

1.07.3 – 17 September 2004 (VerCode 26)

Very nasty bug fixed where a partial packet would not be cleared propely in clear packet, leading to the stand crashing and getting stuck clearing the packet indefinitely.

1.07.2 – 16 September 2004 (VerCode 25)

"Hire a kart now" -> "Rent a kart now".

Battery charge levels adjusted for new batteries.

Hire timeout bug resolved.

1.07.1 – 8 September 2004 (VerCode 24)

The Demonination variable was overlaid on the new karts found array.

The system should now create middnight and midday flags for use by harvest.

1.07.0 – 8 September 2004 (VerCode 23)

Released to Harvest.

When transferring code, the stand would often note the wrong kart as rebooting when it decided to reboot a kart.

If the stand received a spurious ack or nck, it would reply to it as if it was a normal command, thus leading to the possibilty of an avalanche of acks going back and forth.

1.06.9 – 7 September 2004 (VerCode 22)

Released to Brendon for testing.

The stand now supports the command to send the downloaded kart Logs to the PC.

Fixed a bug where the downloaded logs were overwriting the Kart information. This would cause the stand to forget what it had downloaded and download the logs again. It would also cause the stand to forget all the kart info.

Seems fairly reliable.

Another bug to do with where the log entries were stored in flash being screwy.

1.06.8 – 7 September 2004 (VerCode 21)

Code downloads should now work again, since the previous version broke the code transmission complete functionality.

No longer gets stuck on the hire screen, by ensuring that the automatic systems are less likely to stomp on the hire command, and because the screen will now time out regardless of whether the hire succeeded.

Bug fixed in the stand where it would never give up when trying to download log entries from a kart.

Hire failed screen changed, where "We cannot hire you a kart" is now "We cannot lend you a kart".

Auditlog position is now stored in the Global Statistics record.

Sometimes when you insert money and hire a kart from the front screen, the kart system gets stuck on the waiting to hire screen. The kart is shown as idle in the kart control menu. It remains on this screen indefinitely. (Stand version 1.06.3, Kart 1.11).

1.06.7 – 31 August 2004 (VerCode 20)

More information now shown in the auditlog about which karts are going in and out of range and about the karts changing states.

Poweron auditlog flags should now appear as we are now reading the auditlog records before trying to write them.

Fairly major bug fixed where KControl didn't recognise that it couldn't initiate manual commands while in harvest mode, which could have caused major issues in the future.

The flash now uses a more intelligent Buffer management system. This both improves the responsiveness of the stand but also reduces wear on the flash.

The stand now only clears the installed kart's kart info records on exit & clear, greatly speeding up the return from service mode to user mode.

Stand downloads Logs from Karts, and can probably send them to the PC, but this is very very buggy in this version and causes problems.

1.06.6 – 24 August 2004 (VerCode 19)

Modified the comms code so that it should now see harvest packets coming in the harvest port the same as radio packets from board 65533 to 65533 -> This means that all the existing radio code will still work.

Harvest port is now up and running.

1.06.5 – 24 August 2004 (VerCode 18)

This is the US Release, but the version number is 1.06.6, CRC E6F0.

Fixed a fairly major bug on the cash screen where it would crash the stand if the stand had collected too much money. Simply a matter of the time it took to write the number being too long for the WDT.

Tied in the calls required in order to run the auditlog.

Poll and command timeouts are quite harsh now again to improve the responsiveness of the stand and because the karts now have less comms "issues" causing hassles.

The packet length for the log information packet was wrong. It is now 2 bytes long rather than 1 byte long.

Adding karts to a stand is now easier as when you have added a kart the stand goes back to either the list view or the searching for new karts screen.

The Kart control screen list of karts no longer loses your place when you leave it, making it easier to use the Kart control screen.

The system changes the default kart presented to the client every time the "Please choose a kart" screen is shown.

Blk is now shown on the Note reader debug screen if notes are being blocked because there is too much credit in the machine (in addition to when there are no karts available).

Strings added to the Hexcode so that the radio programmer can detect if the WDT is disabled and block the loading of code that will crash the target device.

The CRC code (which is used in the Kart, Stand and in the IAP system) is now much faster.

The note reader timeout is now far far more stringent. It used to be insanely long, thus monopolising the comms system when the note reader didn't respond for some reason.

Some of the Auditlog flags were using Big-Endian rather than Little-Endian formatting, this has been fixed to be consistent with the other flags in the auditlog.

The note stacker diagnostic screen now tells us if the cash box is present.

There is a new counter in the general statistics which shows us how much money is in the cash box.

All the interesting Note reader events now cause auditlog entries and cause events to occur in the user interface.

Going into service mode from the hire a kart menu unprepares that kart for hire.

Money inserted screen is no longer working. (Introduced when I optimised the display system, in 1.06.1.).

Stand doesn't unwake a kart when service mode entered.

Sometimes crashes while looking at kart statistics (The routines drawing these stats to the screen now refresh the WDT more often).

1.06.4 – 17 August 2004 (VerCode 17)

When adding a kart to the stand, the stand now tells you if this kart number has been assigned already or not so that you don't overwrite another kart by mistake.

The Stand ID is now shown on the poweron screen.

The Stand now saves and displays information about kart errors.

Fixed a bug where reading the flash to save errors caused the kcontrol to wrongly evaluate if a kart had just become available, leading to bad client screens.

Now uses less IDATA as I suspected that the Stack pointer might be rolling over and causing the mysterious crashes.

Now transmits the date and time to a kart as it hires it so that the kart can put the correct date and time into the auditlog.

1.06.3 – 16 August 2004 (VerCode 16)

If you enable and then disable the harvest port, without sending anything, the 3211 used to get stuck in harvest mode. This is now resolved.

The harvest mode would exit as soon as RTS was removed, even if something was waiting to be sent out the harvest port.

Added more debug information to the comms debug screen about the harvest rts and cts lines.

Fixed a bug with reading the code information out of code space - used the wrong record type.

Improved the Stand->Kart IAP so that it wouldn't reboot karts while in the hiring a kart screens.

Added a fast mode to the Stand->Kart downloads.

1.06.2 – 13 August 2004 (VerCode 15)

Fixed a major user interface bug on the stand where a good response to one command may lead user interface to believe that a different command succeeded... such as a good response to a settings request making the stand think that a hire succeeded, or vice versa.

In theory, all the code to transfer code to Karts is now in place. Now it is time for testing.

Doesn't currently hire karts properly, often claims to have failed to hire them.

Stand tries to unwake kart 0 when only one kart installed.

1.06.1 – 11 August 2004 (VerCode 14)

Some of the delays put into the poll command have been removed, and now the system polls much faster.

Halved the time that the stand spends in the "Thanks for hiring a kart" Screen from 10 seconds to 5 Seconds.

The stand can now receive information from the Kart about which code is currently loaded from which bank and thus can decide whether to send new code to a kart. It also displays this information under the kart information screen under kart control.

New option to enable / Disable Kart updating.

Reduced the code size of the Display routines quite a lot.

1.06.0 – 11 August 2004 (VerCode 13)

The stand can now receive code for the Kart from the PC.

When receiving code, the CRC command relates to the current code being received, and won't get confused if code in an earlier bank has the same crc.

The stand transmitter is now more reliable because the Stand will not process another packet until the transmitter is free, ensuring that we don't try to send two packets at the same time.

The stand will not store the same kart code in more than one bank, if you try to transmit code to the stand that it already has, then it will switch to the approriate bank and continue your download to this bank.

1.05.9 – 11 August 2004 (VerCode 12)

The bounds checking in the comms routine is now improved, making it less likely that someting is going to blow the buffer.

1.05.8 – 09 August 2004 (VerCode 11)

Released for second large Mag assembly test.

In KControl, a kart is marked as hired the moment that the hire command is initiated, ensuring that we don't try to hire it again a moment later.

There is now a new general setting that blocks the note reader or coin reader once we have received a credit to make sure that we don't get multiple credits in the system.

The hire price is now kept in memory so that we don't have to read the general settings constantly to get it.

The "Very sorry" screen now uses the words "Ask for assistance" rather than "Find a service person".

The stand doesn't poll the note reader or initiate a kart poll during a download to facilitate faster, more reliable transfers of code.

Now supports software Volume Control.

1.05.7 – 06 August 2004 (VerCode 10)

Harvest serial loopback is now working. Talk at 9600, 8 data bits, 1 stop 1 start no parity. Use CTS when you want to send, wait for RTS before you do send. The stand will send you back whatever characters you send it + 1 (A->B, B->C).

The ride history is now working. Using the wrong variable levels before when displaying the ride history on the screen.

Fixed a bug with the sending of the command to turn off dashboards of karts we don't actually want to hire.

1.05.6 – 06 August 2004 (VerCode 10)

Now resolved : When a kart is removed via a manual command, it might appear out of range (with an ID of 0) until the stand is powered off and on again. This is because if a poll request is received while the kart is being removed, the kart is changed from "Not installed" to "Idle" and then when the next poll occurs (the kart ID is now 0) the kart is moved to "Out of range".

Much much longer timeout before giving up on waiting for a poll of a kart we expect to be there.

1.05.5 – 04 August 2004 (VerCode 9)

Now reports the correct bank number after accepting a code download.

Note stacker now only accepts $1 notes.

The comms now accepts new received comms characters while clearing the previous packet from the buffer.

The keys on the keyboard are now slightly more sensitive.

The ride log was being treated as if it was small enough to be handled with a byte when a word should have been used. This means that all sorts of addresses would have been seriously broken.

1.05.4 – 29 July 2004 (VerCode 8)

Comms timeouts are now more harsh, hopefully avoiding a communications stall like the one that Jeremy managed to create.

Now supports serial note readers. A new mode has been added to the general settings for this and it is the default note reader state.

The flash routines now use registers to store the read and write loop counters. This should make them marginally faster.

Debug information now tells computer if there is a kart available and if the note reader is communicating.

Information available in the service mode about which code bank is being used and the crc of the current code (to allow us to check that we have the same revision loaded). This also identifies if there is a bootloader installed.

1.05.3 – 26 July 2004 (VerCode 7)

Note that a number of test versions have occured between 0.0 and 0.3.

Now uses the inbuilt "WDT" functionality (Watch Dog Timer) rather than an external watchdog, which means that routines that take too long may crash.

Now has a test command, similar to that in the kart.

When I fixed the bad stand acknowledgement packet bug, I created another bug where retries sent from the stand had the wrong command number. This is now fixed.

If the stand comms times out, it now discards a single packet rather than the entire buffer.

1.05.0 – 23 July 2004 (VerCode 7)

The comms code now checks that it hasn't entered an invalid state, and recovers if it has.

Memory overlap errors have been resolved.

Set up a timeout in the LCD code, so a bad LCD or a bad LCD interface will no longer crash the firmware.

Fixed another stand comms bug that caused acknowledgement packets to have the wrong command number.

IAP is now working.

LCD max timeout extended to avoid cutting off first chars after a screen redraw.

1.04.0 – 25 June 2004 (VerCode 6)

Imported flash code from kiddie Kart.

Imported audit log system from kiddie kart.

1.03.1 – 17 June 2004 (VerCode 5)

Fixed last kart goes out of range when selecting kart to hire bug.

We don't hire more than one kart automatically from the same money (hence making free rides a worthy proposition).

1.03 – 14 June 2004 (VerCode 4)

Possible comms timeout issue fixed.

Version number format (from kart) is now a word with an 0.01 resolution. This is now displayed correctly on the Stand.

More shared routine variables now available.

Display routines now use lower level temporary variables so more room for future expansion.

Auditlog routines no longer smash high level variables.

Flash now has larger record limit (64 bytes) and some records have been made larger to allow for future expansion.

The maximum number of ride history entries has been increased from 80 to 736.

Stand ID number is less likely to be lost while power is applied (as now if there is an error reading global settings record, then global settings is reinitialised using StandID from ram).

Fixed a bug in the stand comms code where it didn't ACK or NCK as it should (which meant that assigning ID numbers to Stands didn't work).

Increased the timeouts for several of the commands sent to karts from the Stand.

Kart % hired now shown to 2dp.

Battery % full now calculated correctly.

A poweron display is now shown, stating the current version number.

The stand doesn't read all the kart setting records at once on powerup, but instead reads them over the course of 3 seconds in the background so the system is not locked up.

Progress bar while inserting coins.

Average time kart hired (the minutes column) had a bug causing the minutes to always be between 0..6.

% hired now labeled "Utilisation".

1.02 – 11 June 2004 (VerCode 3)

The list of auditlog entries has changed dramatically.

When you create an auditlog flag, it is now easier to specify which data is stored in this flag.

The kart control routines now notify the user interface when a poll has made a kart unavailable.

Calls to the log routine for interesting events have been added.

1.01 – 4 June 2004 (VerCode 2)

Comms bug where two packets in the same buffer not handled properly is now fixed (originally discovered during Rugby testing).

No longer poll a kart with low batteries for its usage statistics every time we poll it (caused by a logic error in the Kart Control module).

1.00 – 1 April 2004 (VerCode 1)

Initial program, built on 3206 v2.05 code.