Variables = saveSScreen EndOfVariables = saveSScreen+768 .function allocVar(size) allocVar = Variables Variables += size .endfunction Vdu.Text.Buffer = tempSwapArea ; 24x10 character buffer to store text written to the display. TIOS.SP = allocVar(2) TIOS.IY = allocVar(2) TempHL = allocVar(2) TempDE = allocVar(2) TempBC = allocVar(2) TempSP = allocVar(2) TempIY = allocVar(2) Statement.EndWhile.QuickEnd = allocVar(2) Statement.StartOfCurrentLine = allocVar(2) Statement.Ext.HandlePointer = allocVar(2) ; Pointer to H in EXT#H=V Statement.Ext.EqualsPointer = allocVar(2) ; Pointer to = in EXT#H=V Memory.TotalAllocated = allocVar(2) ; Total amount of memory allocated at $9D95. Memory.Page = allocVar(2) ; Lowest possible value of PAGE. OS.Version.Major = allocVar(1) OS.Version.Minor = allocVar(1) Vdu.CommandQueue.MaxSize = 10 Vdu.CommandQueue = allocVar(Vdu.CommandQueue.MaxSize) ; Storage for VDU queued commands (such as the drawing or cursor position command sequences). Vdu.CommandQueue.Length = allocVar(1) ; Represents the length of the command queue; this logs how many bytes need to be written to the queue before the current command is executed. Vdu.CurrentByte = allocVar(1) ; The last character that was written to the console. Vdu.Text.ForegroundColour = allocVar(1) ; The colour of the text foreground. Set to zero for white text; non-zero for black. Vdu.Text.BackgroundColour = allocVar(1) ; The colour of the text background. Set to zero for white backgrounds; non-zero for black. Vdu.WriteToLcdEnabled = allocVar(1) ; Set to non-zero to enable writing to the LCD. If set to zero, Lcd.Copy will need to be called to display the results. Vdu.Text.CopyKey.Enabled = allocVar(1) ; Set to non-zero to enable the copy key editing mode. Vdu.Text.CopyKey.Cursor.X = allocVar(1) ; Gets the X coordinate of the copy key cursor. Vdu.Text.CopyKey.Cursor.Y = allocVar(1) ; Gets the Y coordinate of the copy key cursor. Vdu.Text.DataUnderCursor = allocVar(8) ; Stores 8 bytes of pixel data that corresponds to the area under the cursor. Vdu.Text.Bounds.MinX = allocVar(1) Vdu.Text.Bounds.MaxX = allocVar(1) Vdu.Text.Bounds.MinY = allocVar(1) Vdu.Text.Bounds.MaxY = allocVar(1) Vdu.Text.Bounds.Abs = allocVar(0) Vdu.Text.Bounds.Abs.MaxX = allocVar(1) Vdu.Text.Bounds.Abs.MaxY = allocVar(1) Vdu.Text.PageMode = allocVar(1) Vdu.Text.Page.LinesOutput = allocVar(1) Vdu.Text.GraphicalText = allocVar(1) Vdu.Text.SpriteFontCharacter = allocVar(8) ; Temporary sprite data used when rendering text as sprites. Vdu.Text.Cursor = allocVar(0) Vdu.Text.Cursor.X = allocVar(1) Vdu.Text.Cursor.Y = allocVar(1) Vdu.Text.Cursor.Blink = allocVar(1) Vdu.Text.StateFlags = allocVar(1) Vdu.Text.State.PendingScroll = 0 Vdu.Text.State.CursorEnabled = 1 Vdu.Text.PutMapWriteLcdIndirection = allocVar(3) Vdu.Text.UserDefinableFont = allocVar(2) Vdu.Mode = allocVar(1) ; The current screen mode. Vdu.Text.CharSize = allocVar(0) ; Width and height of a character in pixels. Vdu.Text.CharWidth = allocVar(1) ; Width of a character in pixels. Vdu.Text.CharHeight = allocVar(1) ; Height of a character in pixels. Vdu.Text.Graphical.CharSize = allocVar(0) ; Width and height of a VDU 5 character in pixels. Vdu.Text.Graphical.CharWidth = allocVar(1) ; Width of a VDU 5 character in pixels. Vdu.Text.Graphical.CharHeight = allocVar(1) ; Height of a VDU 5 character in pixels. Lcd.Buffer = allocVar(2) ; Pointer to LCD buffer. :$ = 0 Vdu.Text.Clear = allocVar(3) Vdu.Text.GetBufferCharAddress = allocVar(3) Vdu.Text.PutMapNoWriteBuffer = allocVar(3) Vdu.Text.PutMap = allocVar(3) Vdu.Text.GetBufferPixelAddress = allocVar(3) Vdu.Text.Scroll.Up = allocVar(3) Vdu.Text.Scroll.Down = allocVar(3) Vdu.Text.4.PutMapNoWriteBuffer = allocVar(2) Vdu.Text.4.PutMap = allocVar(2) Vdu.Text.Cursor.Up = allocVar(3) Vdu.Text.Cursor.Down = allocVar(3) Vdu.Text.Cursor.Left = allocVar(3) Vdu.Text.Cursor.Right = allocVar(3) Vdu.Text.Cursor.PutBlinking = allocVar(3) Vdu.Text.Cursor.MoveToLeft = allocVar(3) :$ = :@ Interrupt.ElapsedTime = allocVar(5) Interrupt.OnKey = allocVar(1) Interrupt.BreakTimer = allocVar(2) Interrupt.RTCTick = allocVar(1) Interrupt.RTCSeconds = allocVar(2) Host.UserFlag = allocVar(1) Host.EscapeBreakEffect = allocVar(1) Host.MouseInitialised = allocVar(1) Mouse.Position.X = allocVar(2) ; 16-bit X axis. Mouse.Position.Y = allocVar(2) ; 16-bit Y axis. Mouse.Position.DX = allocVar(1) ; x Delta (lower 8 bits only). Mouse.Position.DY = allocVar(1) ; y Delta (lower 8 bits only). Mouse.Position.Z = allocVar(1) ; 8-bit Z axis (scrollwheel). [MSI] Mouse.Position.DZ = allocVar(1) ; z Delta. [MSI] Mouse.Status.Buttons = allocVar(1) ; Buttons bit array. Mouse.Status.Mode = allocVar(1) ; Current mouse mode. [MSI] Keyboard.LayoutFileDescription = allocVar(2) ; Pointer to layout file description. Keyboard.Enabled = allocVar(1) Keyboard.LayoutFile = allocVar(0) Keyboard.LayoutFile.StandardTableSize = allocVar(2) ; Number of standard scancodes. Keyboard.LayoutFile.ExtendedTableSize = allocVar(2) ; Number of extended scancodes. Keyboard.LayoutFile.ModifiersLookup = allocVar(2) ; Address of modifier lookup list. Keyboard.LayoutFile.ModifiersJumpTable = allocVar(2) ; Address of modifier jump table. Keyboard.LayoutFile.StandardTableAddress = allocVar(2) ; Address of standard scancode table. Keyboard.LayoutFile.ExtendedTableAddress = allocVar(2) ; Address of extended scancode table. Keyboard.LayoutFile.KeyOffsetTable = allocVar(2) ; Address of key jump table. Keyboard.LayoutFile.KeyDataTable = allocVar(2) ; Address of key data table. Keyboard.LayoutFile.KeyTypeTable = allocVar(2) ; Address of the key type table. Keyboard.LayoutFile.Size = Variables - Keyboard.LayoutFile Keyboard.Status = allocVar(1) Keyboard.LedState = allocVar(1) Keyboard.OriginalScancode = allocVar(2) Keypad.RepeatTimeout = allocVar(1) ; Time between key repeats. Keypad.RepeatDelayInitial = allocVar(1) ; The initial delay before keys start repeating in centiseconds. (32). Keypad.RepeatDelayHeld = allocVar(1) ; The delay between key repeats once held in centiseconds. (8). Keypad.LastKey = allocVar(1) ; Stores the scancode of the most recently pressed key or zero if none held. Keypad.InjectBuffer = allocVar(16) ; A queue to store injectable keypresses (eg by the command helper). Keypad.ExecHandle = allocVar(1) ; If a file has been *EXEC-ed, this is its handle. Otherwise, this is 0. Keypad.LoadTextHandle = allocVar(1) ; If a file has been *LOADTEXT-ed, this is its handle. Otherwise, this is 0. Keypad.CursorEditingMode = allocVar(1) ; Sets the cursor editing mode (*FX 4). Keypad.InKeyTimer = allocVar(2) OsCli.CurrentCommandLine = allocVar(2) OsCli.CommandLineArgs = allocVar(2) OsCli.CommandJumpVector = allocVar(3) OsCli.LoadRunText.IsRunning = allocVar(1) File.Handles.Size = SizeOf(Info) * File.MaxHandles File.Handles = allocVar(File.Handles.Size) ; Storage for open file handle information. File.PositionToSet = allocVar(2) File.SizeToGrow = allocVar(2) File.LoadHandle = allocVar(1) File.WriteHandle = allocVar(1) File.WriteRecord = allocVar(2) File.ByteToWrite = allocVar(1) File.BlockSave.Size = allocVar(2) File.BlockSave.Data = allocVar(2) File.CurrentCatalogEntry = allocVar(9) DateTime.Now = allocVar(0) Time.Second = allocVar(1) Time.Minute = allocVar(1) Time.Hour = allocVar(1) Date.DayOfWeek = allocVar(1) Date.DayOfMonth = allocVar(1) Date.Month = allocVar(1) Date.Year = allocVar(1) Date.Century = allocVar(1) OSGBPB.Routine = allocVar(1) Graphics.Triangle.VertexA = allocVar(0) Graphics.Triangle.VertexA.X = allocVar(2) Graphics.Triangle.VertexA.Y = allocVar(2) Graphics.Triangle.VertexB = allocVar(0) Graphics.Triangle.VertexB.X = allocVar(2) Graphics.Triangle.VertexB.Y = allocVar(2) Graphics.Triangle.VertexC = allocVar(0) Graphics.Triangle.VertexC.X = allocVar(2) Graphics.Triangle.VertexC.Y = allocVar(2) Graphics.Triangle.VertexTop = allocVar(0) Graphics.Triangle.VertexTop.X = allocVar(2) Graphics.Triangle.VertexTop.Y = allocVar(2) Graphics.Triangle.VertexBottom = allocVar(0) Graphics.Triangle.VertexBottom.X = allocVar(2) Graphics.Triangle.VertexBottom.Y = allocVar(2) Graphics.Triangle.Edges = allocVar(2) Graphics.Triangle.TraceDY = allocVar(2) Graphics.Triangle.TraceDX = allocVar(2) Graphics.Triangle.TraceError = allocVar(2) Graphics.Triangle.TraceEdgeOutputA = allocVar(2) Graphics.Triangle.TraceEdgeOutputB = allocVar(2) Graphics.Triangle.FirstValidY = allocVar(2) Graphics.Triangle.LastValidY = allocVar(2) Graphics.Triangle.TopOfTriangle = allocVar(1) Graphics.Triangle.BottomOfTriangle = allocVar(1) Graphics.Bounds = allocVar(0) Graphics.Bounds.MinX = allocVar(1) Graphics.Bounds.MaxX = allocVar(1) Graphics.Bounds.MinY = allocVar(1) Graphics.Bounds.MaxY = allocVar(1) Graphics.Scale.X = allocVar(1) ; Number of logical pixels per device pixels on X axis. Graphics.Scale.Y = allocVar(1) ; Number of logical pixels per device pixels on Y axis. Graphics.Clip.g_line16_1.X = allocVar(2) Graphics.Clip.g_line16_1.Y = allocVar(2) Graphics.Clip.g_line16_2.X = allocVar(2) Graphics.Clip.g_line16_2.Y = allocVar(2) Graphics.EllipsePixelPutter = allocVar(2) Graphics.PatternBuffer = allocVar(8) Graphics.g_ellipseCX = allocVar(2) Graphics.g_ellipseCY = allocVar(2) Graphics.g_ellipseRX = allocVar(2) Graphics.g_ellipseRY = allocVar(2) Graphics.g_ellipseX = allocVar(2) Graphics.g_ellipseY = allocVar(2) Graphics.g_ellipseA2 = allocVar(4) Graphics.g_ellipseB2 = allocVar(4) Graphics.g_ellipseCounter = allocVar(6) Graphics.g_ellipseXChange = allocVar(6) Graphics.g_ellipseYChange = allocVar(6) Graphics.g_ellipseError = allocVar(6) Graphics.g_finishEllipseX = allocVar(2) Graphics.FloodFill.FillQueueLength = allocVar(2) Graphics.FloodFill.FillQueueReadPointer = allocVar(2) Graphics.FloodFill.FillQueueWritePointer = allocVar(2) Graphics.FloodFill.FillQueue = allocVar(2) Graphics.FloodFill.FillQueueEnd = allocVar(2) Graphics.FloodFill.FillToColourBuffer = allocVar(2) Graphics.VisitedPoints = allocVar(0) ; Stores recently visited points. Graphics.VisitedPoint0.X = allocVar(2) Graphics.VisitedPoint0.Y = allocVar(2) Graphics.VisitedPoint1.X = allocVar(2) Graphics.VisitedPoint1.Y = allocVar(2) Graphics.VisitedPoint2.X = allocVar(2) Graphics.VisitedPoint2.Y = allocVar(2) Graphics.VisitedPoints.Size = Variables - Graphics.VisitedPoints Graphics.Origin = allocVar(0) ; Defines the graphics origin. Graphics.Origin.X = allocVar(2) Graphics.Origin.Y = allocVar(2) Graphics.PlotShape = allocVar(2) Graphics.PlotMode = allocVar(1) Graphics.ForegroundColour = allocVar(1) Graphics.BackgroundColour = allocVar(1) Graphics.CurrentColour = allocVar(1) Graphics.CustomFill = allocVar(2) :$ = 2 Graphics.HLineFill = allocVar(0) Graphics.HLineFill.JumpInstruction = allocVar(1) Graphics.HLineFill.Target = allocVar(2) Graphics.FlipY16 = allocVar(0) Graphics.FlipY16.JumpInstruction = allocVar(1) Graphics.FlipY16.Target = allocVar(2) Graphics.FlipY8 = allocVar(0) Graphics.FlipY8.JumpInstruction = allocVar(1) Graphics.FlipY8.Target = allocVar(2) Graphics.ScaleX.HL = allocVar(0) Graphics.ScaleX.HL.JumpInstruction = allocVar(1) Graphics.ScaleX.HL.Target = allocVar(2) Graphics.ScaleX.DE = allocVar(0) Graphics.ScaleX.DE.JumpInstruction = allocVar(1) Graphics.ScaleX.DE.Target = allocVar(2) Graphics.ScaleX.BC = allocVar(0) Graphics.ScaleX.BC.JumpInstruction = allocVar(1) Graphics.ScaleX.BC.Target = allocVar(2) Graphics.ScaleX.A = allocVar(0) Graphics.ScaleX.A.JumpInstruction = allocVar(1) Graphics.ScaleX.A.Target = allocVar(2) Graphics.ScaleY.HL = allocVar(0) Graphics.ScaleY.HL.JumpInstruction = allocVar(1) Graphics.ScaleY.HL.Target = allocVar(2) Graphics.ScaleY.DE = allocVar(0) Graphics.ScaleY.DE.JumpInstruction = allocVar(1) Graphics.ScaleY.DE.Target = allocVar(2) Graphics.ScaleY.BC = allocVar(0) Graphics.ScaleY.BC.JumpInstruction = allocVar(1) Graphics.ScaleY.BC.Target = allocVar(2) Graphics.ScaleY.A = allocVar(0) Graphics.ScaleY.A.JumpInstruction = allocVar(1) Graphics.ScaleY.A.Target = allocVar(2) :$ = :@ Graphics.Rectangle.TopLeft.X = allocVar(1) ; The coordinates of the top-left corner of a clipped rectangle. Graphics.Rectangle.TopLeft.Y = allocVar(1) Graphics.Rectangle.BottomRight.X = allocVar(1) ; The coordinates of the bottom-right corner of a clipped rectangle. Graphics.Rectangle.BottomRight.Y = allocVar(1) Graphics.Rectangle.PatternBufferStart = allocVar(2) Graphics.Rectangle.PatternBufferOffsetStart = allocVar(1) Graphics.Rectangle.RowsToFill = allocVar(1) Graphics.Rectangle.LeftCap = allocVar(1) Graphics.Rectangle.LeftOffset = allocVar(1) Graphics.Rectangle.RightCap = allocVar(1) Graphics.Rectangle.RightOffset = allocVar(1) Graphics.Rectangle.ColumnPlotRoutine = allocVar(2) Graphics.Rectangle.CapPlotRoutine = allocVar(2) Graphics.Sprite.SpriteData = allocVar(2) Graphics.Sprite.SpriteAccumulator = allocVar(16) Graphics.Sprite.RowsToDraw = allocVar(1) ; How many rows to draw. Graphics.Sprite.SrcPtr = allocVar(2) ; Pointer to the first byte to start drawing from. Graphics.Sprite.DestPtr = allocVar(2) ; Pointer to the first byte to start drawing to. Graphics.Sprite.FineShift = allocVar(1) ; How many pixels to shift right. Graphics.Sprite.FineMask = allocVar(1) ; Masks off data outside the horizontal clipping margins. Graphics.Sprite.MinSpriteY = allocVar(2) Graphics.Sprite.MaxSpriteY = allocVar(2) Graphics.Sprite.SpriteX = allocVar(2) Graphics.Sprite.SpriteY = allocVar(2) Speed.Slow = allocVar(1) Speed.Fast = allocVar(1) Speed.Throttler = allocVar(1) Sleep.IdleTime = allocVar(2) Sleep.CountdownTimer.CentiSeconds = allocVar(1) Sleep.CountdownTimer.Seconds = allocVar(2) TI83AsmAPI.TempBuffer = allocVar(2) Error.HL = allocVar(2) Error.A = allocVar(1) .if (Variables >= EndOfVariables) .echoln "Too many variables." .endif