status = external_ram_base external_routines = status+32 external_recip = external_routines+1024 external_sine = external_recip+512 external_sqrt = external_sine+1024 external_math_end = external_sqrt+768Actually I don't much like doing this, having to declare these structures relative to an absolute position in external RAM. I will likely change this.
dmaScreenWidth = 360 dmaScreenHeight = 240 dmaScreenSize = (dmaScreenWidth * dmaScreenHeight * 4) dmaScreen1 = (external_ram_base+$18000) dmaScreen2 = (dmaScreen1 + dmaScreenSize) dmaScreen3 = (dmaScreen2 + dmaScreenSize) dmaScreen = dmaScreen2 dmaPixelType = 4 ; 32 bit pixel dmaPixelSize = 1 ; 32 bit pixel dmaPixelWrite = 6 CLUSTER=(1<<11) dmaFlags = (dmaPixelWrite<<13)|((dmaScreenWidth/8)<<16)|(dmaPixelType<<4)|CLUSTERThis lot all go to define the size and nature of the screen I am using, and the number of screen buffers to use.
OLRam = (dmaScreen3 + dmaScreenSize) ROLRam = OLRam+$10000These two locate some space in RAM beyond the screen-buffers for constructing object lists. They are not used directly by the low-level OLR. The high-level object system uses them when it generates OLR lists.
init_env = local_ram_baseFinally, this is the position in the rendering MPE's local RAM that is the base of the structures used by MPEs running OLR.