Giter Site home page Giter Site logo

ice's Issues

"If not(1)" doesn't work

ICE ignores the "not(1)" part, and only sees "If ", which will very likely result in a "True".

Lists

Please add proper list support soon!
I created lists in a TI-BASIC program, but using L6 froze up my TI-84-CE. Ram got cleared, sadly.

Different Output Commands' Issues + Few Others

[On TI-84+CE]

The program

iTEST
Repeat K=15
getKey->K
Disp K
End

compiles and runs fine (albeit a bit wonky as Disp seems to only print in the first result section on the far right and doesn't display anything when using a string), but this program:

iTEST
Repeat K=15
getKey->K
Output(1,1,K
End

compiles but when run it never outputs anything and just ends immediately. Even removing the Repeat loop does nothing to help.
Trying to use det(17,K in the same situation (replacing line 4) clears RAM, so some error handling needs to be put in place there. Attempting to put anything inside of toString(value[, format] will throw a Invalid arguments! error also. det(15,K,2 (not in given commands.html but in [TRACE] menu) and det(16,K,2 writes presumably to the screen buffer as the screen fills up with the pixel pattern black-black-green.
These issues make it difficult to output anything to the Home screen in my experience.

Issues listed:
  • Disp does not move cursor when displaying numbers and displays nothing except 2 blank lines with strings
  • Output seems to end program early when reached
  • det(17 (PrintString) crashes calculator
  • toString( throws compilation errors
  • det(15 (PrintInt) is not listed in given commands.html and writes to screen buffer
  • det(16 (PrintUInt) writes to screen buffer

My program no longer works at all :'(

I had an older version of ICE (i'm not sure how old) and it didn't yet have the basic-subprogram feature implemented. So i just got the most recent version from Cemetech, and my program compiles fine, but it no longer runs correctly at all (even though i have not changed the source since i had the older version of ICE)

More auto-optimization

I want better and more code to auto-optimize the output, which is certainly possible but hard.

Adding float numbers

This is definitely a thing I want to implement, but I'm not sure how. Would all numbers/variables be treated as float numbers? That would be much slower than just 3-byte integers. On the other side, I can't detect if a variable is a float or an integer, for example this: 2->A:If B:2.5->A.

For( with a negative increment

I found a bug. If I do For(VAR,BEG,END,-1 such as For(VAR,10,0,-1, then I compile it, with this code for example:

For(VAR,10,0,-1
Disp VAR,i
Pause
End

It displays 10 to 0, then -1, -2 etc
It seems it can't stop at 0 :(
Would you fix that?
Thank you in advance
Ti64CLi++

rand crashes when running

Given this source program:

[i]TEST
rand->A

When compiling using ICE v2.1, running prgmTEST will crash and reset the calculator.

Better variable allocation

I want a better prescanning routine to allocate space for variables. For example: 2->A:Disp A:3->B:Disp B here A and B can use the same memory location, because B is used after A and they don't interfere. This leads to allow more variables.

Add int(), ipart(), fpart() and expr()

I want to port a TI BASIC program that implements these commands but there is not good way to do it in ICE. Especially with floats coming to ICE, It would be great to have these decimal nullifying functions.

Add randInt(

For people who are too lazy to use remainder(rand,...).

Program size change

The size of a program can change if an other program has been compiled before.
After deleting the first compiled program, and recompiling the second one, the size change too
That's so weird ^^

Smaller code

The C program is quite large, like 46kB excluding the C libs, and I'm sure that can be decreased by restructuring or rewriting the code.

Code formating

For reference, it is nearly impossible to read this code easily because of the formating. Most, if not all, asm programmers format as:

<tab>opcode<tab>operand,<space>operand

Where <tab> is the same width, either a single space or an actual tab, otherwise everything looks like a giant wall of text. Also note the comments should be created with spaces, not with tabs; otherwise alignment becomes off when viewed in any IDE. Feel free to reject this though, these are just some pointers that will hopefully make your programming life easier. I know now it seems easy to read for you, but for everyone else it is like what. :P Also note that in Notepad++ or whatever you use, tab spacing should be set to 8 not 4, otherwise alignment again gets thrown off.

Feel free to compare:

	ld (backupSP), sp
	ld hl, (begPC)
	ld (backupBegPC), hl
	ld hl, (curPC)
	ld (backupCurPC), hl
	ld hl, (endPC)
	ld (backupEndPC), hl
	call _RunIndicOff
	call InstallHooks
	ld	(backupSP), sp
	ld	hl, (begPC)
	ld	(backupBegPC), hl
	ld	hl, (curPC)
	ld	(backupCurPC), hl
	ld	hl, (endPC)
	ld	(backupEndPC), hl
	call	_RunIndicOff
	call	InstallHooks

Code for OS_Strings

Interestingly enough, although both codes should work (I think), the second set of code does not work:

sum(0
sum(2,'Str1',"w+",4->A
sum(4,"TICE",4,A
"TICE"->Str1
sum(0
sum(2,'Str1',"w+",4->A
sum(4,Str1,4,A

Rand seed auto reset thingy

If I do this code:

[i]RAND
Disp randInt(1,20
Pause

It (for me) always returns 17
I figured out that each time the compiled prgm is run, the rand seed is automatically reset, so it's like adding a 0->rand at the beginning of the SRC. Can the randInt thing be made like TI-OS, where the rand seed isn't automatically reset? To expand on this, can the #->rand function be added?

Display more routine calls in the [trace] menu.

Currently, only 10 or so basic graphics routines are displayed, despite there being stored names for way more (for example, it'd recognize "det(76", but it's not in the menu).

Also, I'd like to suggest adding a keycode utility that would show the scancode of the currently pressed keyboard key - this would be a great aid, since one wouldn't have to look at the table every time.

Optimize comparisons (1)

A>3=
current: ld hl, (ix+A) \ ld de, 3 \ scf \ sbc hl, de \ sbc hl, hl \ inc hl
improved: ld hl, (ix+A) \ ld de, -4 \ add hl, de \ ccf \ sbc hl, hl \ inc hl
A<3=
current: ld hl, 3 \ ld de, (ix+A) \ scf \ sbc hl, de \ sbc hl, hl \ inc hl
improved: ld hl, (ix+A) \ ld de, -3 \ add hl, de \ sbc hl, hl \ inc hl

Same with >= and <=, but then the number in DE would be different

Test

Test for Github bot.. :)

suggestion: Arguments

can you make it so that 1:prgmARG does one thing and 2:prgmARG does something else?

PROGRAM:ARGSRC
:If Ans=1
:Asm(FDCB24DE
:End
:If Ans=2
:Asm(FDCB0CE6
:End
:If Ans!=1 or Ans!=2
:Return
:End

NODE optimization framework

Many more things could and should be optimized, like A*0. However, it's too much work writing conditions and code for it, a general framework might fit better. Then one can easily add new node optimizations as well.

New functions

LEFT( for bitshift left
RIGHT( for rightshift
ElseIf (instead of Else:If)
Stop

Can't compile

I can't compile this code :(
There are my errors :
MAIN_CALC.C (90,38) : WARNING (197) No function prototype "ti_DetectAn
y" in scope
MAIN_CALC.C (90,69) : ERROR (152) Operands are not assignment compatib
le
make: *** [obj/main_calc.src] Error -1

Cesium icons

When a program with an icon is compiled and run, it spits out random characters and quits. Tested with v2.2 from Cemetech archives

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.