diff --git a/compiler/res/prog8lib/diskio.p8 b/compiler/res/prog8lib/diskio.p8 index 2bbbf49a2..612897b0c 100644 --- a/compiler/res/prog8lib/diskio.p8 +++ b/compiler/res/prog8lib/diskio.p8 @@ -438,7 +438,9 @@ io_error: ; If you don't give an address_override, the location in memory is taken from the 2-byte file header. ; If you specify a custom address_override, the first 2 bytes in the file are ignored ; and the rest is loaded at the given location in memory. - ; Returns the number of bytes loaded. + ; Returns the number of bytes loaded if address_override was given, otherwise the end address. + ; TODO this is stupid - why not always return the number of bytes loaded and let the caller figure out the rest + ; ; NOTE: when the load is larger than 64Kb and/or spans multiple RAM banks ; (which is possible on the Commander X16), the returned size is not correct, ; because it doesn't take the number of ram banks into account. diff --git a/docs/source/todo.rst b/docs/source/todo.rst index af5956e9b..a8593ed95 100644 --- a/docs/source/todo.rst +++ b/docs/source/todo.rst @@ -3,6 +3,21 @@ TODO For next compiler release (7.6) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +fix compiler crash when trying to concatenate string var and string literal. + +fix return value of diskio.load() (see commment) and possibly other routines? + +optimization in call convention: +non-asm subroutines with just a single byte or word parameter: + pass the parameter via A or A/Y registers. + add code to set the parameter variable in the start of the subroutine itself, + rather than requiring the caller to set it there. This is not faster but saves a lot of bytes of code. + +rewrite multiple choice if into when: + if X==1 or X==2 or X==3 { truepart } else { falsepart } + -> when X { 1,2,3->truepart else->falsepart } + same with assignment if the lhs is simple var or memaddr + ...