- Posts: 136
- Thank you received: 94
0.9.0
1 week 1 day ago - 1 week 1 day ago #309
by Franck
New
- _tileAddr: address of the tile found by the last isSprTile().
- mem command: shows the free system stack memory (headroom).
- Comments anywhere, even inside expressions.
- Expressions, argument lists and parameter lists can span several lines.
- nat versions of min, max, clamp, sqrt, rnd, lerp, abs; rnd and lerp work over ranges above 32767.
- Casts may contain spaces (( int )); (int) of a byte is accepted.
- Source files with Windows (CRLF) line endings also compile.
- Run-time errors instead of silent corruption: "Stack overflow." (recursion too deep), "Division by zero.".
- New compile errors: "Line too long." (over 158 characters), types or members defined twice, returning a local custom type with text, custom-type array parameters.
- Lofi programs run 1.5-2.0× faster (MAXIPS 133k → 230k), and compiled programs are 10-20 % smaller.
- Graphics: lines about 2× faster, faster fills, memSet, memCpy, area copies, disks and circles; sin/cos 4× faster and more accurate.
- CUBE ~50 → ~29 ms, TRIROT 18 → 12 ms, CUBEOPTI 15–21 → 11–15 ms, REALDIV 422 → 257 ms.
- Firmware 21 KB smaller, with more free memory for the stack.
- break/continue in loops with local variables corrupted the stack.
- ++/--:
- they changed the wrong byte in local arrays and array parameters;
- ++a, a.m++ used as a value, x = y++;, return v++; and increments in for clauses gave wrong results
- Custom types:
- wrong member addresses with text members;
- locals overlapped a local array of custom types;
- nested indexes (a[b.m].n) and members of array elements mixed up with another type in the same expression;
- false "Type mismatch" errors.
- Local texts shifted the variables declared after them, and local arrays didn't start at zero.
- (byte) and (bool) casts didn't convert, and nat values above 32767 became negative as real.
- Real numbers: arithmetic is now correctly rounded (it drifted towards zero), −0 equals 0, and printing is rounded (0.375 printed 0.374).
- The compiler:
- crashed on declaration errors and on a . after a variable that is not a custom type;
- gave false "Stack overflow." errors on big programs.
- Editor:
- lines over 158 characters broke scrolling and line numbers, and could duplicate a character;
- long lines could overflow when drawn.
- Keyboard and mouse are no longer handled inside interrupts: no re-entered keyboard interrupt, and short clicks are no longer lost while the editor is busy.
- Firmware update checks the file before writing the new version number.
- Off-screen lines are skipped instead of drawn pixel by pixel; no more stray pixels at the window edge with disks.
- CLI: data with short hex values read leftover characters, and compile errors could show a corrupted word.
- Clearer messages.
- Sounds from a distant ping by Kempston
- Calculus by Ludojoey
Last edit: 1 week 1 day ago by Franck.
Please Log in or Create an account to join the conversation.
Time to create page: 0.157 seconds