I am not sure if it is documented anywhere, but I think it would be nice to have a list of zero-page addresses used by ROM routines, so if we are using ROM (even through C programs) we can avoid to put anything in those addresses.

I am not sure if most routines in ROM use the same range, or not, so this might be difficult to answer.

Even if, in the end, you will most probably avoid using ROM, it is quite common to have a C interface for testing your routines easily, and including printfs or getchars, calling hires, or something similar.

This could ruin your program if the called routines write on zero-page exactly where you are storing your pointers or any other useful data!

That would be a great idea, for instance we could create a web page with the "definitive" use of the zero page.
As I'd see it, it could be a table with v1.0 and v1.1 columns indicating which routines use each byte. More colums could be added for the various disk operating systems (Sedoric, Jasmin...), and for the Telestrat.

This is documented in "l'Oric à Nu", but
- in French
- rather old - maybe new things discovered since
- we noticed a few, very rare, mistakes here or there

How could we set up the work on this ? So that anyone could participate and fill the table according to his knowledge (or books )

Last edited by Symoon on Thu Mar 27, 2008 11:58 am, edited 1 time in total.

#29 – A flag that indicates whether the last variable used was an integer.

#2A – A flag which is used in several places.

#33 – #34 – Various uses, but often used to store a line number that is being located.

#35 – #83 – The BASIC input buffer. This is used to store anything that is typed, including immediate commands and INPUT data (which explains why an immediate command cannot use INPUT). This area is also used in version 1.0 during cassette operations – see Chapter 4.

#86 – Address of last temporary string.

#88 – #90 – A table of temporary strings.

#9A – #9B – Start of BASIC pointer.

#9C – #9D – Start of variables pointer.

#9E – #9F – Start of arrays pointer.

#A0 – #A1 – End of arrays pointer.

#A2 – #A3 – Pointer to next free string space.

#A6 – #A7 – Highest available memory location available to BASIC.

#A8 – #A9 – Current line number (read-only).

#AA – #AB - The current line number – saved for error messages.

#AC – #AD- Address of the start of the current instruction – 1.

#AE – #AF – Current DATA line number – used only when printing error messy ges. Altering this location does not change the READ sequence.

#BO – #B1 – The address of the next DATA item – 1. It is this address that one must modify in order to change the data accessed by the next READ command.

#B4 – #B5 – The identity of the last variable used.

#D0 – #D5 – The main floating-point accumulator.

#D8 – #DD – The second accumulator.

#E2 – #E7 – The get-character routine. This part increments the pointer at #E9, #EA and drops into address #E8.

#E8 – #F9 – The second part of the get-character routine. This section loads the next character, according to location #E9,#EA.

#FA – #FE – The current random number is stored here as a floating-point number.