Difference between revisions of "Unit Platform"
Line 243: | Line 243: | ||
---- | ---- | ||
− | '' | + | |
+ | '''IRQ mask''' | ||
+ | |||
+ | {| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;" | ||
+ | |- | ||
+ | | <code>TIRQMask = LongWord;</code> | ||
+ | | style="width: 40%;"| | ||
+ | |- | ||
+ | |} | ||
+ | |||
+ | '''FIQ mask''' | ||
+ | |||
+ | {| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;" | ||
+ | |- | ||
+ | | <code>TFIQMask = LongWord; </code> | ||
+ | | style="width: 40%;"| | ||
+ | |- | ||
+ | |} | ||
+ | |||
+ | '''IRQ/FIQ mask''' | ||
+ | |||
+ | {| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;" | ||
+ | |- | ||
+ | | <code>TIRQFIQMask = LongWord;</code> | ||
+ | | style="width: 40%;"| | ||
+ | |- | ||
+ | |} | ||
+ | |||
+ | '''Abort mask''' | ||
+ | |||
+ | {| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;" | ||
+ | |- | ||
+ | | <code>TAbortMask = LongWord;</code> | ||
+ | | style="width: 40%;"| | ||
+ | |- | ||
+ | |} | ||
+ | |||
+ | '''DMA data''' | ||
+ | |||
+ | <div class="toccolours mw-collapsible mw-collapsed" style="border: 1; font-family: arial;"> | ||
+ | <code>PDMAData = ^TDMAData;</code> | ||
+ | |||
+ | <code>TDMAData = record</code> | ||
+ | <div class="mw-collapsible-content" style="text-align: left; padding-left: 5px;"> | ||
+ | {| class="wikitable" style="font-size: 14px; background: white;" | ||
+ | |- | ||
+ | |colspan="2"|''Data Properties'' | ||
+ | |- | ||
+ | | <code>Source:Pointer;</code> | ||
+ | | Source address for DMA (May need to be allocated in accordance with DMA host configuration) | ||
+ | |- | ||
+ | | <code>Dest:Pointer;</code> | ||
+ | | Dest address for DMA (May need to be allocated in accordance with DMA host configuration) | ||
+ | |- | ||
+ | | <code>Size:LongWord;</code> | ||
+ | | Size for DMA transfer (For 2D stride the length of a row multiplied by the count of rows) | ||
+ | |- | ||
+ | | <code>Flags:LongWord;</code> | ||
+ | | Flags for DMA transfer (See DMA_DATA_FLAG_* above) | ||
+ | |- | ||
+ | |colspan="2"|''Stride Properties'' | ||
+ | |- | ||
+ | | <code>StrideLength:LongWord;</code> | ||
+ | | Length of each row during 2D stride (If supported) | ||
+ | |- | ||
+ | | <code>SourceStride:LongInt;</code> | ||
+ | | Increment between rows for source address during 2D stride (If supported) | ||
+ | |- | ||
+ | | <code>DestStride:LongInt;</code> | ||
+ | | Increment between rows for destination address during 2D stride (If supported) | ||
+ | |- | ||
+ | |colspan="2"|''Next Block'' | ||
+ | |- | ||
+ | | <code>Next:PDMAData;</code> | ||
+ | | Link to next DMA data block (or nil for the last block) | ||
+ | |- | ||
+ | |} | ||
+ | </div></div> | ||
+ | |||
+ | '''System call request (SWI)''' | ||
+ | |||
+ | <div class="toccolours mw-collapsible mw-collapsed" style="border: 1; font-family: arial;"> | ||
+ | <code>PSystemCallRequest = ^TSystemCallRequest;</code> | ||
+ | |||
+ | <code>TSystemCallRequest = record</code> | ||
+ | <div class="mw-collapsible-content" style="text-align: left; padding-left: 5px;"> | ||
+ | {| class="wikitable" style="font-size: 14px; background: white;" | ||
+ | |- | ||
+ | | <code>Number:LongWord;</code> | ||
+ | | style="width: 50%;"| | ||
+ | |- | ||
+ | | <code>Param1:LongWord;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>Param2:LongWord;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>Param3:LongWord;</code> | ||
+ | | | ||
+ | |- | ||
+ | |} | ||
+ | </div></div> | ||
+ | |||
+ | '''Handle entry''' | ||
+ | |||
+ | <div class="toccolours mw-collapsible mw-collapsed" style="border: 1; font-family: arial;"> | ||
+ | <code>PHandleEntry = ^THandleEntry;</code> | ||
+ | |||
+ | <code>THandleEntry = record</code> | ||
+ | <div class="mw-collapsible-content" style="text-align: left; padding-left: 5px;"> | ||
+ | {| class="wikitable" style="font-size: 14px; background: white;" | ||
+ | |- | ||
+ | |colspan="2"|''Handle Properties'' | ||
+ | |- | ||
+ | | <code>Signature:LongWord;</code> | ||
+ | | Signature for entry validation | ||
+ | |- | ||
+ | | <code>HandleType:LongWord;</code> | ||
+ | | Type of this Handle (eg HANDLE_TYPE_THREAD) | ||
+ | |- | ||
+ | | <code>HandleCount:LongWord;</code> | ||
+ | | Reference Count of the Handle | ||
+ | |- | ||
+ | |colspan="2"|''Internal Properties'' | ||
+ | |- | ||
+ | | <code>Prev:PHandleEntry;</code> | ||
+ | | Previous entry in Handle table | ||
+ | |- | ||
+ | | <code>Next:PHandleEntry;</code> | ||
+ | | Next entry in Handle table | ||
+ | |- | ||
+ | |colspan="2"|''Statistics Properties'' | ||
+ | |- | ||
+ | |colspan="2"| | ||
+ | |- | ||
+ | |} | ||
+ | </div></div> | ||
+ | |||
+ | '''Shutdown entry''' | ||
+ | <div class="toccolours mw-collapsible mw-collapsed" style="border: 1; font-family: arial;"> | ||
+ | <code>PShutdownEntry = ^TShutdownEntry;</code> | ||
+ | |||
+ | <code>TShutdownEntry = record</code> | ||
+ | <div class="mw-collapsible-content" style="text-align: left; padding-left: 5px;"> | ||
+ | {| class="wikitable" style="font-size: 14px; background: white;" | ||
+ | |- | ||
+ | |colspan="2"|''Shutdown Properties'' | ||
+ | |- | ||
+ | | <code>Signature:LongWord;</code> | ||
+ | | Signature for entry validation | ||
+ | |- | ||
+ | | <code>Shutdown:procedure(Parameter:Pointer);</code> | ||
+ | | The procedure to call on Shutdown | ||
+ | |- | ||
+ | | <code>Parameter:Pointer;</code> | ||
+ | | The parameter to pass to the Shutdown procedure (or nil) | ||
+ | |- | ||
+ | |colspan="2"|''Internal Properties'' | ||
+ | |- | ||
+ | | <code>Prev:PShutdownEntry;</code> | ||
+ | | Previous entry in Shutdown table | ||
+ | |- | ||
+ | | <code>Next:PShutdownEntry;</code> | ||
+ | | Next entry in Shutdown table | ||
+ | |- | ||
+ | |} | ||
+ | </div></div> | ||
+ | |||
+ | '''Interrupt entry (IRQ/FIQ)''' | ||
+ | |||
+ | <div class="toccolours mw-collapsible mw-collapsed" style="border: 1; font-family: arial;"> | ||
+ | <code>PInterruptEntry = ^TInterruptEntry;</code> | ||
+ | |||
+ | <code>TInterruptEntry = record</code> | ||
+ | <div class="mw-collapsible-content" style="text-align: left; padding-left: 5px;"> | ||
+ | {| class="wikitable" style="font-size: 14px; background: white;" | ||
+ | |- | ||
+ | | <code>Number:LongWord;</code> | ||
+ | | style="width: 50%;"| | ||
+ | |- | ||
+ | | <code>CPUID:LongWord;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>Handler:procedure(Parameter:Pointer);</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>HandlerEx:function(CPUID:LongWord; Thread:TThreadHandle; Parameter:Pointer):TThreadHandle;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>Parameter:Pointer;</code> | ||
+ | | | ||
+ | |- | ||
+ | |} | ||
+ | </div></div> | ||
+ | |||
+ | '''System call entry (SWI)''' | ||
+ | |||
+ | <div class="toccolours mw-collapsible mw-collapsed" style="border: 1; font-family: arial;"> | ||
+ | <code>PSystemCallEntry = ^TSystemCallEntry;</code> | ||
+ | |||
+ | <code>TSystemCallEntry = record</code> | ||
+ | <div class="mw-collapsible-content" style="text-align: left; padding-left: 5px;"> | ||
+ | {| class="wikitable" style="font-size: 14px; background: white;" | ||
+ | |- | ||
+ | | <code>Number:LongWord;</code> | ||
+ | | style="width: 50%;"| | ||
+ | |- | ||
+ | | <code>CPUID:LongWord;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>Handler:procedure(Request:PSystemCallRequest);</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>HandlerEx:function(CPUID:LongWord; Thread:TThreadHandle; Request:PSystemCallRequest):TThreadHandle;</code> | ||
+ | | | ||
+ | |- | ||
+ | |} | ||
+ | </div></div> | ||
+ | |||
+ | '''Page table entry''' | ||
+ | |||
+ | <div class="toccolours mw-collapsible mw-collapsed" style="border: 1; font-family: arial;"> | ||
+ | <code>PPageTableEntry = ^TPageTableEntry;</code> | ||
+ | |||
+ | <code>TPageTableEntry = record</code> | ||
+ | <div class="mw-collapsible-content" style="text-align: left; padding-left: 5px;"> | ||
+ | {| class="wikitable" style="font-size: 14px; background: white;" | ||
+ | |- | ||
+ | | <code>VirtualAddress:PtrUInt;</code> | ||
+ | | style="width: 50%;"| | ||
+ | |- | ||
+ | | <code>PhysicalAddress:PtrUInt;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>Size:LongWord;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>Flags:LongWord;</code> | ||
+ | | | ||
+ | |- | ||
+ | |} | ||
+ | </div></div> | ||
+ | |||
+ | '''Platform lock''' | ||
+ | |||
+ | <div class="toccolours mw-collapsible mw-collapsed" style="border: 1; font-family: arial;"> | ||
+ | <code>PPlatformLock = ^TPlatformLock;</code> | ||
+ | |||
+ | <code>TPlatformLock = record</code> | ||
+ | <div class="mw-collapsible-content" style="text-align: left; padding-left: 5px;"> | ||
+ | {| class="wikitable" style="font-size: 14px; background: white;" | ||
+ | |- | ||
+ | | <code>Lock:THandle;</code> | ||
+ | | style="width: 50%;"| | ||
+ | |- | ||
+ | | <code>AcquireLock:function(Handle:THandle):LongWord;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>ReleaseLock:function(Handle:THandle):LongWord;</code> | ||
+ | | | ||
+ | |- | ||
+ | |} | ||
+ | </div></div> | ||
+ | |||
+ | '''Platform semaphore''' | ||
+ | |||
+ | <div class="toccolours mw-collapsible mw-collapsed" style="border: 1; font-family: arial;"> | ||
+ | <code>PPlatformSemaphore = ^TPlatformSemaphore;</code> | ||
+ | |||
+ | <code>TPlatformSemaphore = record</code> | ||
+ | <div class="mw-collapsible-content" style="text-align: left; padding-left: 5px;"> | ||
+ | {| class="wikitable" style="font-size: 14px; background: white;" | ||
+ | |- | ||
+ | | <code>Semaphore:THandle;</code> | ||
+ | | style="width: 50%;"| | ||
+ | |- | ||
+ | | <code>WaitSemaphore:function(Handle:THandle):LongWord;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>SignalSemaphore:function(Handle:THandle):LongWord;</code> | ||
+ | | | ||
+ | |- | ||
+ | |} | ||
+ | </div></div> | ||
+ | |||
+ | '''CPU init''' | ||
+ | |||
+ | {| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;" | ||
+ | |- | ||
+ | | <code>TCPUInit = procedure;</code> | ||
+ | | style="width: 40%;"| | ||
+ | |- | ||
+ | |} | ||
+ | |||
+ | '''FPU init''' | ||
+ | |||
+ | {| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;" | ||
+ | |- | ||
+ | | <code>TFPUInit = procedure;</code> | ||
+ | | style="width: 40%;"| | ||
+ | |- | ||
+ | |} | ||
+ | |||
+ | '''GPU init''' | ||
+ | |||
+ | {| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;" | ||
+ | |- | ||
+ | | <code>TGPUInit = procedure;</code> | ||
+ | | style="width: 40%;"| | ||
+ | |- | ||
+ | |} | ||
+ | |||
+ | '''MMU init''' | ||
+ | |||
+ | {| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;" | ||
+ | |- | ||
+ | | <code>TMMUInit = procedure;</code> | ||
+ | | style="width: 40%;"| | ||
+ | |- | ||
+ | |} | ||
+ | |||
+ | '''SMP init''' | ||
+ | |||
+ | {| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;" | ||
+ | |- | ||
+ | | <code>TSMPInit = procedure;</code> | ||
+ | | style="width: 40%;"| | ||
+ | |- | ||
+ | |} | ||
+ | |||
+ | '''Cache init''' | ||
+ | |||
+ | {| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;" | ||
+ | |- | ||
+ | | <code>TCacheInit = procedure;</code> | ||
+ | | style="width: 40%;"| | ||
+ | |- | ||
+ | |} | ||
+ | |||
+ | '''Board init''' | ||
+ | |||
+ | {| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;" | ||
+ | |- | ||
+ | | <code>TBoardInit = procedure;</code> | ||
+ | | style="width: 40%;"| | ||
+ | |- | ||
+ | |} | ||
+ | |||
+ | '''Memory init''' | ||
+ | |||
+ | {| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;" | ||
+ | |- | ||
+ | | <code>TMemoryInit = procedure;</code> | ||
+ | | style="width: 40%;"| | ||
+ | |- | ||
+ | |} | ||
+ | |||
+ | '''Clock init''' | ||
+ | |||
+ | {| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;" | ||
+ | |- | ||
+ | | <code>TClockInit = procedure;</code> | ||
+ | | style="width: 40%;"| | ||
+ | |- | ||
+ | |} | ||
+ | |||
+ | '''Power init''' | ||
+ | |||
+ | {| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;" | ||
+ | |- | ||
+ | | <code>TPowerInit = procedure;</code> | ||
+ | | style="width: 40%;"| | ||
+ | |- | ||
+ | |} | ||
+ | |||
+ | '''Mailbox init''' | ||
+ | |||
+ | {| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;" | ||
+ | |- | ||
+ | | <code>TMailboxInit = procedure;</code> | ||
+ | | style="width: 40%;"| | ||
+ | |- | ||
+ | |} | ||
+ | |||
+ | '''Interrupt init''' | ||
+ | |||
+ | {| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;" | ||
+ | |- | ||
+ | | <code>TInterruptInit = procedure;</code> | ||
+ | | style="width: 40%;"| | ||
+ | |- | ||
+ | |} | ||
+ | |||
+ | '''Peripheral init''' | ||
+ | |||
+ | {| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;" | ||
+ | |- | ||
+ | | <code>TPeripheralInit = procedure;</code> | ||
+ | | style="width: 40%;"| | ||
+ | |- | ||
+ | |} | ||
+ | |||
+ | '''Framebuffer init''' | ||
+ | |||
+ | {| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;" | ||
+ | |- | ||
+ | | <code>TFramebufferInit = procedure;</code> | ||
+ | | style="width: 40%;"| | ||
+ | |- | ||
+ | |} | ||
+ | |||
+ | '''Parse boot tags''' | ||
+ | |||
+ | {| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;" | ||
+ | |- | ||
+ | | <code>TParseBootTags = procedure;</code> | ||
+ | | style="width: 40%;"| | ||
+ | |- | ||
+ | |} | ||
+ | |||
+ | '''Parse command line''' | ||
+ | |||
+ | {| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;" | ||
+ | |- | ||
+ | | <code>TParseCommandLine = procedure;</code> | ||
+ | | style="width: 40%;"| | ||
+ | |- | ||
+ | |} | ||
+ | |||
+ | '''Parse environment''' | ||
+ | |||
+ | {| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;" | ||
+ | |- | ||
+ | | <code>TParseEnvironment = procedure;</code> | ||
+ | | style="width: 40%;"| | ||
+ | |- | ||
+ | |} | ||
+ | |||
+ | '''Interrupt (IRQ/FIQ) handler''' | ||
+ | |||
+ | {| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;" | ||
+ | |- | ||
+ | | <code>TInterruptHandler = procedure(Parameter:Pointer);</code> | ||
+ | | style="width: 40%;"| | ||
+ | |- | ||
+ | |} | ||
+ | |||
+ | '''Interrupt (IRQ/FIQ) ex handler''' | ||
+ | |||
+ | {| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;" | ||
+ | |- | ||
+ | | <code>TInterruptExHandler = function(CPUID:LongWord; Thread:TThreadHandle; Parameter:Pointer):TThreadHandle;</code> | ||
+ | | style="width: 40%;"| | ||
+ | |- | ||
+ | |} | ||
+ | |||
+ | '''System call (SWI) handler''' | ||
+ | |||
+ | {| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;" | ||
+ | |- | ||
+ | | <code>TSystemCallHandler = procedure(Request:PSystemCallRequest);</code> | ||
+ | | style="width: 40%;"| | ||
+ | |- | ||
+ | |} | ||
+ | |||
+ | '''System call (SWI) ex handler''' | ||
+ | |||
+ | {| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;" | ||
+ | |- | ||
+ | | <code>TSystemCallExHandler = function(CPUID:LongWord; Thread:TThreadHandle; Request:PSystemCallRequest):TThreadHandle;</code> | ||
+ | | style="width: 40%;"| | ||
+ | |- | ||
+ | |} | ||
+ | |||
+ | '''Thread yield''' | ||
+ | |||
+ | {| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;" | ||
+ | |- | ||
+ | | <code>TThreadYield = function:LongWord;</code> | ||
+ | | style="width: 40%;"| | ||
+ | |- | ||
+ | |} | ||
+ | |||
+ | '''Thread wait''' | ||
+ | |||
+ | {| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;" | ||
+ | |- | ||
+ | | <code>TThreadWait = function(List:TListHandle; Lock:TSpinHandle; Flags:LongWord):LongWord;</code> | ||
+ | | style="width: 40%;"| | ||
+ | |- | ||
+ | |} | ||
+ | |||
+ | '''Thread wait ex''' | ||
+ | |||
+ | {| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;" | ||
+ | |- | ||
+ | | <code>TThreadWaitEx = function(List:TListHandle; Lock:TSpinHandle; Flags,Timeout:LongWord):LongWord;</code> | ||
+ | | style="width: 40%;"| | ||
+ | |- | ||
+ | |} | ||
+ | |||
+ | '''Thread release''' | ||
+ | |||
+ | {| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;" | ||
+ | |- | ||
+ | | <code>TThreadRelease = function(List:TListHandle):LongWord;</code> | ||
+ | | style="width: 40%;"| | ||
+ | |- | ||
+ | |} | ||
+ | |||
+ | '''Thread abandon''' | ||
+ | |||
+ | {| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;" | ||
+ | |- | ||
+ | | <code>TThreadAbandon = function(List:TListHandle):LongWord;</code> | ||
+ | | style="width: 40%;"| | ||
+ | |- | ||
+ | |} | ||
+ | |||
+ | '''Thread wake''' | ||
+ | |||
+ | {| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;" | ||
+ | |- | ||
+ | | <code>TThreadWake = function(Thread:TThreadHandle):LongWord;</code> | ||
+ | | style="width: 40%;"| | ||
+ | |- | ||
+ | |} | ||
+ | |||
+ | '''Thread ready''' | ||
+ | |||
+ | {| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;" | ||
+ | |- | ||
+ | | <code>TThreadReady = function(Thread:TThreadHandle; Reschedule:Boolean):LongWord;</code> | ||
+ | | style="width: 40%;"| | ||
+ | |- | ||
+ | |} | ||
+ | |||
+ | '''Thread timeout''' | ||
+ | |||
+ | {| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;" | ||
+ | |- | ||
+ | | <code>TThreadTimeout = function(Thread:TThreadHandle):LongWord;</code> | ||
+ | | style="width: 40%;"| | ||
+ | |- | ||
+ | |} | ||
+ | |||
+ | '''Timer event''' | ||
+ | |||
+ | {| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;" | ||
+ | |- | ||
+ | | <code>TTimerEvent = procedure(Data:Pointer);</code> | ||
+ | | style="width: 40%;"| | ||
+ | |- | ||
+ | |} | ||
+ | |||
+ | '''Worker task''' | ||
+ | |||
+ | {| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;" | ||
+ | |- | ||
+ | | <code>TWorkerTask = procedure(Data:Pointer);</code> | ||
+ | | style="width: 40%;"| | ||
+ | |- | ||
+ | |} | ||
+ | |||
+ | '''Worker callback''' | ||
+ | |||
+ | {| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;" | ||
+ | |- | ||
+ | | <code>TWorkerCallback = procedure(Data:Pointer);</code> | ||
+ | | style="width: 40%;"| | ||
+ | |- | ||
+ | |} | ||
+ | |||
+ | '''Counter callback''' | ||
+ | |||
+ | {| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;" | ||
+ | |- | ||
+ | | <code>TCounterCallback = procedure(Data:Pointer);</code> | ||
+ | | style="width: 40%;"| | ||
+ | |- | ||
+ | |} | ||
+ | |||
+ | '''GPIO callback''' | ||
+ | |||
+ | {| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;" | ||
+ | |- | ||
+ | | <code>TGPIOCallback = procedure(Data:Pointer; Pin,Trigger:LongWord);</code> | ||
+ | | style="width: 40%;"| | ||
+ | |- | ||
+ | |} | ||
+ | |||
+ | '''Boot blink''' | ||
+ | |||
+ | {| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;" | ||
+ | |- | ||
+ | | <code>TBootBlink = procedure;</code> | ||
+ | | style="width: 40%;"| | ||
+ | |- | ||
+ | |} | ||
+ | |||
+ | '''Boot output''' | ||
+ | |||
+ | {| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;" | ||
+ | |- | ||
+ | | <code>TBootOutput = procedure(Value:LongWord);</code> | ||
+ | | style="width: 40%;"| | ||
+ | |- | ||
+ | |} | ||
+ | |||
+ | '''Power LED enable''' | ||
+ | |||
+ | {| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;" | ||
+ | |- | ||
+ | | <code>TPowerLEDEnable = procedure;</code> | ||
+ | | style="width: 40%;"| | ||
+ | |- | ||
+ | |} | ||
+ | |||
+ | '''Power LED on''' | ||
+ | |||
+ | {| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;" | ||
+ | |- | ||
+ | | <code>TPowerLEDOn = procedure;</code> | ||
+ | | style="width: 40%;"| | ||
+ | |- | ||
+ | |} | ||
+ | |||
+ | '''Power LED off''' | ||
+ | |||
+ | {| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;" | ||
+ | |- | ||
+ | | <code>TPowerLEDOff = procedure;</code> | ||
+ | | style="width: 40%;"| | ||
+ | |- | ||
+ | |} | ||
+ | |||
+ | '''Activity LED enable''' | ||
+ | |||
+ | {| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;" | ||
+ | |- | ||
+ | | <code>TActivityLEDEnable = procedure;</code> | ||
+ | | style="width: 40%;"| | ||
+ | |- | ||
+ | |} | ||
+ | |||
+ | '''Activity LED on''' | ||
+ | |||
+ | {| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;" | ||
+ | |- | ||
+ | | <code>TActivityLEDOn = procedure;</code> | ||
+ | | style="width: 40%;"| | ||
+ | |- | ||
+ | |} | ||
+ | |||
+ | '''Activity LED off''' | ||
+ | |||
+ | {| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;" | ||
+ | |- | ||
+ | | <code>TActivityLEDOff = procedure;</code> | ||
+ | | style="width: 40%;"| | ||
+ | |- | ||
+ | |} | ||
+ | |||
+ | '''Counter available''' | ||
+ | |||
+ | {| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;" | ||
+ | |- | ||
+ | | <code>TCounterAvailable = function:Boolean;</code> | ||
+ | | style="width: 40%;"| | ||
+ | |- | ||
+ | |} | ||
+ | |||
+ | '''Counter read''' | ||
+ | |||
+ | {| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;" | ||
+ | |- | ||
+ | | <code>TCounterRead = function:LongWord;</code> | ||
+ | | style="width: 40%;"| | ||
+ | |- | ||
+ | |} | ||
+ | |||
+ | '''Counter read64''' | ||
+ | |||
+ | {| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;" | ||
+ | |- | ||
+ | | <code>TCounterRead64 = function:Int64;</code> | ||
+ | | style="width: 40%;"| | ||
+ | |- | ||
+ | |} | ||
+ | |||
+ | '''Counter wait''' | ||
+ | |||
+ | {| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;" | ||
+ | |- | ||
+ | | <code>TCounterWait = function:LongWord;</code> | ||
+ | | style="width: 40%;"| | ||
+ | |- | ||
+ | |} | ||
+ | |||
+ | '''Counter event''' | ||
+ | |||
+ | {| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;" | ||
+ | |- | ||
+ | | <code>TCounterEvent = function(Callback:TCounterCallback; Data:Pointer):LongWord;</code> | ||
+ | | style="width: 40%;"| | ||
+ | |- | ||
+ | |} | ||
+ | |||
+ | '''Counter cancel''' | ||
+ | |||
+ | {| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;" | ||
+ | |- | ||
+ | | <code>TCounterCancel = function:LongWord;</code> | ||
+ | | style="width: 40%;"| | ||
+ | |- | ||
+ | |} | ||
+ | |||
+ | '''Counter get rate''' | ||
+ | |||
+ | {| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;" | ||
+ | |- | ||
+ | | <code>TCounterGetRate = function:LongWord;</code> | ||
+ | | style="width: 40%;"| | ||
+ | |- | ||
+ | |} | ||
+ | |||
+ | '''Counter set rate''' | ||
+ | |||
+ | {| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;" | ||
+ | |- | ||
+ | | <code>TCounterSetRate = function(Rate:LongWord):LongWord;</code> | ||
+ | | style="width: 40%;"| | ||
+ | |- | ||
+ | |} | ||
+ | |||
+ | '''Counter get interval''' | ||
+ | |||
+ | {| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;" | ||
+ | |- | ||
+ | | <code>TCounterGetInterval = function:LongWord;</code> | ||
+ | | style="width: 40%;"| | ||
+ | |- | ||
+ | |} | ||
+ | |||
+ | '''Counter set interval''' | ||
+ | |||
+ | {| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;" | ||
+ | |- | ||
+ | | <code> TCounterSetInterval = function(Interval:LongWord):LongWord;</code> | ||
+ | | style="width: 40%;"| | ||
+ | |- | ||
+ | |} | ||
+ | |||
+ | '''Mailbox receive''' | ||
+ | |||
+ | {| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;" | ||
+ | |- | ||
+ | | <code>TMailboxReceive = function(Mailbox,Channel:LongWord):LongWord;</code> | ||
+ | | style="width: 40%;"| | ||
+ | |- | ||
+ | |} | ||
+ | |||
+ | '''Mailbox send''' | ||
+ | |||
+ | {| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;" | ||
+ | |- | ||
+ | | <code>TMailboxSend = procedure(Mailbox,Channel,Data:LongWord);</code> | ||
+ | | style="width: 40%;"| | ||
+ | |- | ||
+ | |} | ||
+ | |||
+ | '''Mailbox call''' | ||
+ | |||
+ | {| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;" | ||
+ | |- | ||
+ | | <code>TMailboxCall = function(Mailbox,Channel,Data:LongWord; var Response:LongWord):LongWord;</code> | ||
+ | | style="width: 40%;"| | ||
+ | |- | ||
+ | |} | ||
+ | |||
+ | '''Mailbox call ex''' | ||
+ | |||
+ | {| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;" | ||
+ | |- | ||
+ | | <code>TMailboxCallEx = function(Mailbox,Channel,Data:LongWord; var Response:LongWord; Timeout:LongWord):LongWord;</code> | ||
+ | | style="width: 40%;"| | ||
+ | |- | ||
+ | |} | ||
+ | |||
+ | '''Mailbox property call''' | ||
+ | |||
+ | {| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;" | ||
+ | |- | ||
+ | | <code>TMailboxPropertyCall = function(Mailbox,Channel:LongWord; Data:Pointer; var Response:LongWord):LongWord;</code> | ||
+ | | style="width: 40%;"| | ||
+ | |- | ||
+ | |} | ||
+ | |||
+ | '''Mailbox property call ex''' | ||
+ | |||
+ | {| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;" | ||
+ | |- | ||
+ | | <code>TMailboxPropertyCallEx = function(Mailbox,Channel:LongWord; Data:Pointer; var Response:LongWord; Timeout:LongWord):LongWord;</code> | ||
+ | | style="width: 40%;"| | ||
+ | |- | ||
+ | |} | ||
+ | |||
+ | '''Random available''' | ||
+ | |||
+ | {| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;" | ||
+ | |- | ||
+ | | <code>TRandomAvailable = function:Boolean;</code> | ||
+ | | style="width: 40%;"| | ||
+ | |- | ||
+ | |} | ||
+ | |||
+ | '''Random seed''' | ||
+ | |||
+ | {| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;" | ||
+ | |- | ||
+ | | <code>TRandomSeed = procedure(Seed:LongWord);</code> | ||
+ | | style="width: 40%;"| | ||
+ | |- | ||
+ | |} | ||
+ | |||
+ | '''Random read long int''' | ||
+ | |||
+ | {| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;" | ||
+ | |- | ||
+ | | <code>TRandomReadLongInt = function(Limit:LongInt):LongInt;</code> | ||
+ | | style="width: 40%;"| | ||
+ | |- | ||
+ | |} | ||
+ | |||
+ | '''Random read int64''' | ||
+ | |||
+ | {| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;" | ||
+ | |- | ||
+ | | <code>TRandomReadInt64 = function(Limit:Int64):Int64;</code> | ||
+ | | style="width: 40%;"| | ||
+ | |- | ||
+ | |} | ||
+ | |||
+ | '''Random read extended''' | ||
+ | |||
+ | {| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;" | ||
+ | |- | ||
+ | | <code>TRandomReadExtended = function:Extended;</code> | ||
+ | | style="width: 40%;"| | ||
+ | |- | ||
+ | |} | ||
+ | |||
+ | '''Watchdog available''' | ||
+ | |||
+ | {| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;" | ||
+ | |- | ||
+ | | <code>TWatchdogAvailable = function:Boolean;</code> | ||
+ | | style="width: 40%;"| | ||
+ | |- | ||
+ | |} | ||
+ | |||
+ | '''Watchdog start''' | ||
+ | |||
+ | {| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;" | ||
+ | |- | ||
+ | | <code>TWatchdogStart = function(Milliseconds:LongWord):LongWord; </code> | ||
+ | | style="width: 40%;"| | ||
+ | |- | ||
+ | |} | ||
+ | |||
+ | '''Watchdog stop''' | ||
+ | |||
+ | {| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;" | ||
+ | |- | ||
+ | | <code>TWatchdogStop = function:LongWord;</code> | ||
+ | | style="width: 40%;"| | ||
+ | |- | ||
+ | |} | ||
+ | |||
+ | '''Watchdog refresh''' | ||
+ | |||
+ | {| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;" | ||
+ | |- | ||
+ | | <code>TWatchdogRefresh = function(Milliseconds:LongWord):LongWord;</code> | ||
+ | | style="width: 40%;"| | ||
+ | |- | ||
+ | |} | ||
+ | |||
+ | '''Request IRQ''' | ||
+ | |||
+ | {| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;" | ||
+ | |- | ||
+ | | <code>TRequestIRQ = function(CPUID,Number:LongWord; Handler:TInterruptHandler; Parameter:Pointer):LongWord;</code> | ||
+ | | style="width: 40%;"| | ||
+ | |- | ||
+ | |} | ||
+ | |||
+ | '''Release IRQ''' | ||
+ | |||
+ | {| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;" | ||
+ | |- | ||
+ | | <code>TReleaseIRQ = function(CPUID,Number:LongWord; Handler:TInterruptHandler; Parameter:Pointer):LongWord;</code> | ||
+ | | style="width: 40%;"| | ||
+ | |- | ||
+ | |} | ||
+ | |||
+ | '''Request ex IRQ''' | ||
+ | |||
+ | {| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;" | ||
+ | |- | ||
+ | | <code>TRequestExIRQ = function(CPUID,Number:LongWord; Handler:TInterruptHandler; HandlerEx:TInterruptExHandler; Parameter:Pointer):LongWord;</code> | ||
+ | | style="width: 40%;"| | ||
+ | |- | ||
+ | |} | ||
+ | |||
+ | '''Release ex IRQ''' | ||
+ | |||
+ | {| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;" | ||
+ | |- | ||
+ | | <code>TReleaseExIRQ = function(CPUID,Number:LongWord; Handler:TInterruptHandler; HandlerEx:TInterruptExHandler; Parameter:Pointer):LongWord;</code> | ||
+ | | style="width: 40%;"| | ||
+ | |- | ||
+ | |} | ||
+ | |||
+ | '''Request FIQ''' | ||
+ | |||
+ | {| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;" | ||
+ | |- | ||
+ | | <code>TRequestFIQ = function(CPUID,Number:LongWord; Handler:TInterruptHandler; Parameter:Pointer):LongWord;</code> | ||
+ | | style="width: 40%;"| | ||
+ | |- | ||
+ | |} | ||
+ | |||
+ | '''Release FIQ''' | ||
+ | |||
+ | {| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;" | ||
+ | |- | ||
+ | | <code>TReleaseFIQ = function(CPUID,Number:LongWord; Handler:TInterruptHandler; arameter:Pointer):LongWord;</code> | ||
+ | | style="width: 40%;"| | ||
+ | |- | ||
+ | |} | ||
+ | |||
+ | '''Request ex FIQ''' | ||
+ | |||
+ | {| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;" | ||
+ | |- | ||
+ | | <code>TRequestExFIQ = function(CPUID,Number:LongWord; Handler:TInterruptHandler; HandlerEx:TInterruptExHandler; Parameter:Pointer):LongWord;</code> | ||
+ | | style="width: 40%;"| | ||
+ | |- | ||
+ | |} | ||
+ | |||
+ | '''Release ex FIQ''' | ||
+ | |||
+ | {| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;" | ||
+ | |- | ||
+ | | <code>TReleaseExFIQ = function(CPUID,Number:LongWord; Handler:TInterruptHandler; HandlerEx:TInterruptExHandler; Parameter:Pointer):LongWord;</code> | ||
+ | | style="width: 40%;"| | ||
+ | |- | ||
+ | |} | ||
+ | |||
+ | '''System call''' | ||
+ | |||
+ | {| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;" | ||
+ | |- | ||
+ | | <code>TSystemCall = procedure(Number:LongWord; Param1,Param2,Param3:PtrUInt);</code> | ||
+ | | style="width: 40%;"| | ||
+ | |- | ||
+ | |} | ||
+ | |||
+ | '''Register system call''' | ||
+ | |||
+ | {| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;" | ||
+ | |- | ||
+ | | <code>TRegisterSystemCall = function(Number:LongWord; Handler:TSystemCallHandler):LongWord;</code> | ||
+ | | style="width: 40%;"| | ||
+ | |- | ||
+ | |} | ||
+ | |||
+ | '''Deregister system call''' | ||
+ | |||
+ | {| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;" | ||
+ | |- | ||
+ | | <code>TDeregisterSystemCall = function(Number:LongWord; Handler:TSystemCallHandler):LongWord;</code> | ||
+ | | style="width: 40%;"| | ||
+ | |- | ||
+ | |} | ||
+ | |||
+ | '''Register system call ex''' | ||
+ | |||
+ | {| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;" | ||
+ | |- | ||
+ | | <code>TRegisterSystemCallEx = function(CPUID,Number:LongWord; Handler:TSystemCallHandler; HandlerEx:TSystemCallExHandler):LongWord;</code> | ||
+ | | style="width: 40%;"| | ||
+ | |- | ||
+ | |} | ||
+ | |||
+ | '''Deregister system call ex''' | ||
+ | |||
+ | {| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;" | ||
+ | |- | ||
+ | | <code>TDeregisterSystemCallEx = function(CPUID,Number:LongWord; Handler:TSystemCallHandler; HandlerEx:TSystemCallExHandler):LongWord;</code> | ||
+ | | style="width: 40%;"| | ||
+ | |- | ||
+ | |} | ||
+ | |||
+ | '''Get interrupt count''' | ||
+ | |||
+ | {| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;" | ||
+ | |- | ||
+ | | <code>TGetInterruptCount = function:LongWord;</code> | ||
+ | | style="width: 40%;"| | ||
+ | |- | ||
+ | |} | ||
+ | |||
+ | '''Get interrupt start''' | ||
+ | |||
+ | {| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;" | ||
+ | |- | ||
+ | | <code>TGetInterruptStart = function:LongWord;</code> | ||
+ | | style="width: 40%;"| | ||
+ | |- | ||
+ | |} | ||
+ | |||
+ | '''Get interrupt entry''' | ||
+ | |||
+ | {| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;" | ||
+ | |- | ||
+ | | <code>TGetInterruptEntry = function(Number:LongWord):TInterruptEntry;</code> | ||
+ | | style="width: 40%;"| | ||
+ | |- | ||
+ | |} | ||
+ | |||
+ | '''Get local interrupt count''' | ||
+ | |||
+ | {| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;" | ||
+ | |- | ||
+ | | <code>TGetLocalInterruptCount = function:LongWord;</code> | ||
+ | | style="width: 40%;"| | ||
+ | |- | ||
+ | |} | ||
+ | |||
+ | '''Get local interrupt start''' | ||
+ | |||
+ | {| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;" | ||
+ | |- | ||
+ | | <code>TGetLocalInterruptStart = function:LongWord;</code> | ||
+ | | style="width: 40%;"| | ||
+ | |- | ||
+ | |} | ||
+ | |||
+ | '''Get local interrupt entry''' | ||
+ | |||
+ | {| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;" | ||
+ | |- | ||
+ | | <code>TGetLocalInterruptEntry = function(CPUID,Number:LongWord):TInterruptEntry;</code> | ||
+ | | style="width: 40%;"| | ||
+ | |- | ||
+ | |} | ||
+ | |||
+ | '''Get system call count''' | ||
+ | |||
+ | {| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;" | ||
+ | |- | ||
+ | | <code>TGetSystemCallCount = function:LongWord;</code> | ||
+ | | style="width: 40%;"| | ||
+ | |- | ||
+ | |} | ||
+ | |||
+ | '''Get system call entry''' | ||
+ | |||
+ | {| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;" | ||
+ | |- | ||
+ | | <code>TGetSystemCallEntry = function(Number:LongWord):TSystemCallEntry;</code> | ||
+ | | style="width: 40%;"| | ||
+ | |- | ||
+ | |} | ||
+ | |||
+ | '''System restart''' | ||
+ | |||
+ | {| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;" | ||
+ | |- | ||
+ | | <code>TSystemRestart = function(Delay:LongWord):LongWord; </code> | ||
+ | | style="width: 40%;"| | ||
+ | |- | ||
+ | |} | ||
+ | |||
+ | '''System shutdown''' | ||
+ | |||
+ | {| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;" | ||
+ | |- | ||
+ | | <code>TSystemShutdown = function(Delay:LongWord):LongWord;</code> | ||
+ | | style="width: 40%;"| | ||
+ | |- | ||
+ | |} | ||
+ | |||
+ | '''System get uptime''' | ||
+ | |||
+ | {| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;" | ||
+ | |- | ||
+ | | <code>TSystemGetUptime = function:Int64;</code> | ||
+ | | style="width: 40%;"| | ||
+ | |- | ||
+ | |} | ||
+ | |||
+ | '''System get command line''' | ||
+ | |||
+ | {| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;" | ||
+ | |- | ||
+ | | <code>TSystemGetCommandLine = function:String;</code> | ||
+ | | style="width: 40%;"| | ||
+ | |- | ||
+ | |} | ||
+ | |||
+ | '''System get environment''' | ||
+ | |||
+ | {| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;" | ||
+ | |- | ||
+ | | <code>TSystemGetEnvironment = function:Pointer;</code> | ||
+ | | style="width: 40%;"| | ||
+ | |- | ||
+ | |} | ||
+ | |||
+ | '''CPU get arch''' | ||
+ | |||
+ | {| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;" | ||
+ | |- | ||
+ | | <code>TCPUGetArch = function:LongWord;</code> | ||
+ | | style="width: 40%;"| | ||
+ | |- | ||
+ | |} | ||
+ | |||
+ | '''CPU get type''' | ||
+ | |||
+ | {| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;" | ||
+ | |- | ||
+ | | <code>TCPUGetType = function:LongWord;</code> | ||
+ | | style="width: 40%;"| | ||
+ | |- | ||
+ | |} | ||
+ | |||
+ | '''CPU get boot''' | ||
+ | |||
+ | {| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;" | ||
+ | |- | ||
+ | | <code>TCPUGetBoot = function:LongWord;</code> | ||
+ | | style="width: 40%;"| | ||
+ | |- | ||
+ | |} | ||
+ | |||
+ | '''CPU get mask''' | ||
+ | |||
+ | {| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;" | ||
+ | |- | ||
+ | | <code>TCPUGetMask = function:LongWord;</code> | ||
+ | | style="width: 40%;"| | ||
+ | |- | ||
+ | |} | ||
+ | |||
+ | '''CPU get count''' | ||
+ | |||
+ | {| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;" | ||
+ | |- | ||
+ | | <code>TCPUGetCount = function:LongWord;</code> | ||
+ | | style="width: 40%;"| | ||
+ | |- | ||
+ | |} | ||
+ | |||
+ | '''CPU get mode''' | ||
+ | |||
+ | {| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;" | ||
+ | |- | ||
+ | | <code>TCPUGetMode = function:LongWord;</code> | ||
+ | | style="width: 40%;"| | ||
+ | |- | ||
+ | |} | ||
+ | |||
+ | '''CPU get state''' | ||
+ | |||
+ | {| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;" | ||
+ | |- | ||
+ | | <code>TCPUGetState = function:LongWord;</code> | ||
+ | | style="width: 40%;"| | ||
+ | |- | ||
+ | |} | ||
+ | |||
+ | '''CPU get current''' | ||
+ | |||
+ | {| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;" | ||
+ | |- | ||
+ | | <code>TCPUGetCurrent = function:LongWord;</code> | ||
+ | | style="width: 40%;"| | ||
+ | |- | ||
+ | |} | ||
+ | |||
+ | '''CPU get memory''' | ||
+ | |||
+ | {| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;" | ||
+ | |- | ||
+ | | <code>TCPUGetMemory = function(var Address:PtrUInt; var Length:LongWord):LongWord;</code> | ||
+ | | style="width: 40%;"| | ||
+ | |- | ||
+ | |} | ||
+ | |||
+ | '''CPU get percentage''' | ||
+ | |||
+ | {| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;" | ||
+ | |- | ||
+ | | <code>TCPUGetPercentage = function(CPUID:LongWord):Double;</code> | ||
+ | | style="width: 40%;"| | ||
+ | |- | ||
+ | |} | ||
+ | |||
+ | '''CPU get utilization''' | ||
+ | |||
+ | {| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;" | ||
+ | |- | ||
+ | | <code>TCPUGetUtilization = function(CPUID:LongWord):LongWord;</code> | ||
+ | | style="width: 40%;"| | ||
+ | |- | ||
+ | |} | ||
+ | |||
+ | '''CPU get model''' | ||
+ | |||
+ | {| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;" | ||
+ | |- | ||
+ | | <code>TCPUGetModel = function:LongWord;</code> | ||
+ | | style="width: 40%;"| | ||
+ | |- | ||
+ | |} | ||
+ | |||
+ | '''CPU get revision''' | ||
+ | |||
+ | {| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;" | ||
+ | |- | ||
+ | | <code>TCPUGetRevision = function:LongWord;</code> | ||
+ | | style="width: 40%;"| | ||
+ | |- | ||
+ | |} | ||
+ | |||
+ | '''CPU get description''' | ||
+ | |||
+ | {| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;" | ||
+ | |- | ||
+ | | <code>TCPUGetDescription = function:String;</code> | ||
+ | | style="width: 40%;"| | ||
+ | |- | ||
+ | |} | ||
+ | |||
+ | '''FPU get type''' | ||
+ | |||
+ | {| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;" | ||
+ | |- | ||
+ | | <code>TFPUGetType = function:LongWord;</code> | ||
+ | | style="width: 40%;"| | ||
+ | |- | ||
+ | |} | ||
+ | |||
+ | '''FPU get state''' | ||
+ | |||
+ | {| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;" | ||
+ | |- | ||
+ | | <code>TFPUGetState = function:LongWord;</code> | ||
+ | | style="width: 40%;"| | ||
+ | |- | ||
+ | |} | ||
+ | |||
+ | '''GPU get type''' | ||
+ | |||
+ | {| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;" | ||
+ | |- | ||
+ | | <code>TGPUGetType = function:LongWord;</code> | ||
+ | | style="width: 40%;"| | ||
+ | |- | ||
+ | |} | ||
+ | |||
+ | '''GPU get state''' | ||
+ | |||
+ | {| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;" | ||
+ | |- | ||
+ | | <code>TGPUGetState = function:LongWord;</code> | ||
+ | | style="width: 40%;"| | ||
+ | |- | ||
+ | |} | ||
+ | |||
+ | '''GPU get memory''' | ||
+ | |||
+ | {| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;" | ||
+ | |- | ||
+ | | <code>TGPUGetMemory = function(var Address:PtrUInt; var Length:LongWord):LongWord;</code> | ||
+ | | style="width: 40%;"| | ||
+ | |- | ||
+ | |} | ||
+ | |||
+ | '''L1 cache get type''' | ||
+ | |||
+ | {| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;" | ||
+ | |- | ||
+ | | <code>TL1CacheGetType = function:LongWord;</code> | ||
+ | | style="width: 40%;"| | ||
+ | |- | ||
+ | |} | ||
+ | |||
+ | '''L1 data cache get size''' | ||
+ | |||
+ | {| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;" | ||
+ | |- | ||
+ | | <code>TL1DataCacheGetSize = function:LongWord;</code> | ||
+ | | style="width: 40%;"| | ||
+ | |- | ||
+ | |} | ||
+ | |||
+ | '''L1 data cache get line size''' | ||
+ | |||
+ | {| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;" | ||
+ | |- | ||
+ | | <code>TL1DataCacheGetLineSize = function:LongWord;</code> | ||
+ | | style="width: 40%;"| | ||
+ | |- | ||
+ | |} | ||
+ | |||
+ | '''L1 instruction cache get size''' | ||
+ | |||
+ | {| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;" | ||
+ | |- | ||
+ | | <code>TL1InstructionCacheGetSize = function:LongWord;</code> | ||
+ | | style="width: 40%;"| | ||
+ | |- | ||
+ | |} | ||
+ | |||
+ | '''L1 instruction cache get line size''' | ||
+ | |||
+ | {| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;" | ||
+ | |- | ||
+ | | <code>TL1InstructionCacheGetLineSize = function:LongWord;</code> | ||
+ | | style="width: 40%;"| | ||
+ | |- | ||
+ | |} | ||
+ | |||
+ | '''L2 cache get type''' | ||
+ | |||
+ | {| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;" | ||
+ | |- | ||
+ | | <code>TL2CacheGetType = function:LongWord;</code> | ||
+ | | style="width: 40%;"| | ||
+ | |- | ||
+ | |} | ||
+ | |||
+ | '''L2 cache get size''' | ||
+ | |||
+ | {| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;" | ||
+ | |- | ||
+ | | <code>TL2CacheGetSize = function:LongWord;</code> | ||
+ | | style="width: 40%;"| | ||
+ | |- | ||
+ | |} | ||
+ | |||
+ | '''L2 cache get line size''' | ||
+ | |||
+ | {| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;" | ||
+ | |- | ||
+ | | <code>TL2CacheGetLineSize = function:LongWord;</code> | ||
+ | | style="width: 40%;"| | ||
+ | |- | ||
+ | |} | ||
+ | |||
+ | '''Board get type''' | ||
+ | |||
+ | {| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;" | ||
+ | |- | ||
+ | | <code>TBoardGetType = function:LongWord;</code> | ||
+ | | style="width: 40%;"| | ||
+ | |- | ||
+ | |} | ||
+ | |||
+ | '''Board get model''' | ||
+ | |||
+ | {| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;" | ||
+ | |- | ||
+ | | <code>TBoardGetModel = function:LongWord;</code> | ||
+ | | style="width: 40%;"| | ||
+ | |- | ||
+ | |} | ||
+ | |||
+ | '''Board get serial''' | ||
+ | |||
+ | {| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;" | ||
+ | |- | ||
+ | | <code>TBoardGetSerial = function:Int64;</code> | ||
+ | | style="width: 40%;"| | ||
+ | |- | ||
+ | |} | ||
+ | |||
+ | '''Board get revision''' | ||
+ | |||
+ | {| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;" | ||
+ | |- | ||
+ | | <code>TBoardGetRevision = function:LongWord;</code> | ||
+ | | style="width: 40%;"| | ||
+ | |- | ||
+ | |} | ||
+ | |||
+ | '''Board get MAC address''' | ||
+ | |||
+ | {| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;" | ||
+ | |- | ||
+ | | <code>TBoardGetMACAddress = function:String;</code> | ||
+ | | style="width: 40%;"| | ||
+ | |- | ||
+ | |} | ||
+ | |||
+ | '''Firmware get revision''' | ||
+ | |||
+ | {| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;" | ||
+ | |- | ||
+ | | <code>TFirmwareGetRevision = function:LongWord;</code> | ||
+ | | style="width: 40%;"| | ||
+ | |- | ||
+ | |} | ||
+ | |||
+ | '''Machine get type''' | ||
+ | |||
+ | {| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;" | ||
+ | |- | ||
+ | | <code>TMachineGetType = function:LongWord;</code> | ||
+ | | style="width: 40%;"| | ||
+ | |- | ||
+ | |} | ||
+ | |||
+ | '''Memory get base''' | ||
+ | |||
+ | {| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;" | ||
+ | |- | ||
+ | | <code>TMemoryGetBase = function:PtrUInt;</code> | ||
+ | | style="width: 40%;"| | ||
+ | |- | ||
+ | |} | ||
+ | |||
+ | '''Memory get size''' | ||
+ | |||
+ | {| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;" | ||
+ | |- | ||
+ | | <code>TMemoryGetSize = function:LongWord;</code> | ||
+ | | style="width: 40%;"| | ||
+ | |- | ||
+ | |} | ||
+ | |||
+ | '''Memory get page size''' | ||
+ | |||
+ | {| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;" | ||
+ | |- | ||
+ | | <code>TMemoryGetPageSize = function:LongWord;</code> | ||
+ | | style="width: 40%;"| | ||
+ | |- | ||
+ | |} | ||
+ | |||
+ | '''Memory get large page size''' | ||
+ | |||
+ | {| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;" | ||
+ | |- | ||
+ | | <code>TMemoryGetLargePageSize = function:LongWord;</code> | ||
+ | | style="width: 40%;"| | ||
+ | |- | ||
+ | |} | ||
+ | |||
+ | '''Power get wait''' | ||
+ | |||
+ | {| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;" | ||
+ | |- | ||
+ | | <code>TPowerGetWait = function(PowerId:LongWord):LongWord;</code> | ||
+ | | style="width: 40%;"| | ||
+ | |- | ||
+ | |} | ||
+ | |||
+ | '''Power get state''' | ||
+ | |||
+ | {| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;" | ||
+ | |- | ||
+ | | <code>TPowerGetState = function(PowerId:LongWord):LongWord;</code> | ||
+ | | style="width: 40%;"| | ||
+ | |- | ||
+ | |} | ||
+ | |||
+ | '''Power set state''' | ||
+ | |||
+ | {| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;" | ||
+ | |- | ||
+ | | <code>TPowerSetState = function(PowerId,State:LongWord; Wait:Boolean):LongWord;</code> | ||
+ | | style="width: 40%;"| | ||
+ | |- | ||
+ | |} | ||
+ | |||
+ | '''Clock get count''' | ||
+ | |||
+ | {| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;" | ||
+ | |- | ||
+ | | <code>TClockGetCount = function:LongWord;</code> | ||
+ | | style="width: 40%;"| | ||
+ | |- | ||
+ | |} | ||
+ | |||
+ | '''Clock get total''' | ||
+ | |||
+ | {| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;" | ||
+ | |- | ||
+ | | <code>TClockGetTotal = function:Int64;</code> | ||
+ | | style="width: 40%;"| | ||
+ | |- | ||
+ | |} | ||
+ | |||
+ | '''Clock update offset''' | ||
+ | |||
+ | {| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;" | ||
+ | |- | ||
+ | | <code>TClockUpdateOffset = function:LongWord;</code> | ||
+ | | style="width: 40%;"| | ||
+ | |- | ||
+ | |} | ||
+ | |||
+ | '''Clock get rate''' | ||
+ | |||
+ | {| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;" | ||
+ | |- | ||
+ | | <code>TClockGetRate = function(ClockId:LongWord):LongWord;</code> | ||
+ | | style="width: 40%;"| | ||
+ | |- | ||
+ | |} | ||
+ | |||
+ | '''Clock set rate''' | ||
+ | |||
+ | {| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;" | ||
+ | |- | ||
+ | | <code>TClockSetRate = function(ClockId,Rate:LongWord; Turbo:Boolean):LongWord;</code> | ||
+ | | style="width: 40%;"| | ||
+ | |- | ||
+ | |} | ||
+ | |||
+ | '''Clock get state''' | ||
+ | |||
+ | {| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;" | ||
+ | |- | ||
+ | | <code>TClockGetState = function(ClockId:LongWord):LongWord;</code> | ||
+ | | style="width: 40%;"| | ||
+ | |- | ||
+ | |} | ||
+ | |||
+ | '''Clock set state''' | ||
+ | |||
+ | {| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;" | ||
+ | |- | ||
+ | | <code>TClockSetState = function(ClockId,State:LongWord):LongWord;</code> | ||
+ | | style="width: 40%;"| | ||
+ | |- | ||
+ | |} | ||
+ | |||
+ | '''Clock get min rate''' | ||
+ | |||
+ | {| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;" | ||
+ | |- | ||
+ | | <code>TClockGetMinRate = function(ClockId:LongWord):LongWord;</code> | ||
+ | | style="width: 40%;"| | ||
+ | |- | ||
+ | |} | ||
+ | |||
+ | '''Clock get max rate''' | ||
+ | |||
+ | {| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;" | ||
+ | |- | ||
+ | | <code>TClockGetMaxRate = function(ClockId:LongWord):LongWord;</code> | ||
+ | | style="width: 40%;"| | ||
+ | |- | ||
+ | |} | ||
+ | |||
+ | '''Turbo get state''' | ||
+ | |||
+ | {| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;" | ||
+ | |- | ||
+ | | <code>TTurboGetState = function(TurboId:LongWord):LongWord;</code> | ||
+ | | style="width: 40%;"| | ||
+ | |- | ||
+ | |} | ||
+ | |||
+ | '''Turbo set state''' | ||
+ | |||
+ | {| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;" | ||
+ | |- | ||
+ | | <code>TTurboSetState = function(TurboId,State:LongWord):LongWord;</code> | ||
+ | | style="width: 40%;"| | ||
+ | |- | ||
+ | |} | ||
+ | |||
+ | '''Voltage get value''' | ||
+ | |||
+ | {| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;" | ||
+ | |- | ||
+ | | <code>TVoltageGetValue = function (VoltageId:LongWord):LongWord;</code> | ||
+ | | style="width: 40%;"| | ||
+ | |- | ||
+ | |} | ||
+ | |||
+ | '''Voltage set value''' | ||
+ | |||
+ | {| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;" | ||
+ | |- | ||
+ | | <code>TVoltageSetValue = function (VoltageId,Value:LongWord):LongWord;</code> | ||
+ | | style="width: 40%;"| | ||
+ | |- | ||
+ | |} | ||
+ | |||
+ | '''Voltage get min value''' | ||
+ | |||
+ | {| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;" | ||
+ | |- | ||
+ | | <code>TVoltageGetMinValue = function(VoltageId:LongWord):LongWord;</code> | ||
+ | | style="width: 40%;"| | ||
+ | |- | ||
+ | |} | ||
+ | |||
+ | '''Voltage get max value''' | ||
+ | |||
+ | {| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;" | ||
+ | |- | ||
+ | | <code>TVoltageGetMaxValue = function(VoltageId:LongWord):LongWord;</code> | ||
+ | | style="width: 40%;"| | ||
+ | |- | ||
+ | |} | ||
+ | |||
+ | '''Temperature get current''' | ||
+ | |||
+ | {| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;" | ||
+ | |- | ||
+ | | <code>TTemperatureGetCurrent = function(TemperatureId:LongWord):LongWord;</code> | ||
+ | | style="width: 40%;"| | ||
+ | |- | ||
+ | |} | ||
+ | |||
+ | '''Temperature get maximum''' | ||
+ | |||
+ | {| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;" | ||
+ | |- | ||
+ | | <code>TTemperatureGetMaximum = function(TemperatureId:LongWord):LongWord;</code> | ||
+ | | style="width: 40%;"| | ||
+ | |- | ||
+ | |} | ||
+ | |||
+ | '''GPU memory allocate''' | ||
+ | |||
+ | {| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;" | ||
+ | |- | ||
+ | | <code>TGPUMemoryAllocate = function(Length,Alignment,Flags:LongWord):THandle;</code> | ||
+ | | style="width: 40%;"| | ||
+ | |- | ||
+ | |} | ||
+ | |||
+ | '''GPU memory release''' | ||
+ | |||
+ | {| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;" | ||
+ | |- | ||
+ | | <code>TGPUMemoryRelease = function(Handle:THandle):LongWord;</code> | ||
+ | | style="width: 40%;"| | ||
+ | |- | ||
+ | |} | ||
+ | |||
+ | '''GPU memory lock''' | ||
+ | |||
+ | {| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;" | ||
+ | |- | ||
+ | | <code>TGPUMemoryLock = function(Handle:THandle):LongWord;</code> | ||
+ | | style="width: 40%;"| | ||
+ | |- | ||
+ | |} | ||
+ | |||
+ | '''GPU memory unlock''' | ||
+ | |||
+ | {| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;" | ||
+ | |- | ||
+ | | <code>TGPUMemoryUnlock = function(Handle:THandle):LongWord;</code> | ||
+ | | style="width: 40%;"| | ||
+ | |- | ||
+ | |} | ||
+ | |||
+ | '''GPU execute code''' | ||
+ | |||
+ | {| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;" | ||
+ | |- | ||
+ | | <code>TGPUExecuteCode = function(Address:Pointer; R0,R1,R2,R3,R4,R5:LongWord):LongWord;</code> | ||
+ | | style="width: 40%;"| | ||
+ | |- | ||
+ | |} | ||
+ | |||
+ | '''Dispmanx handle get''' | ||
+ | |||
+ | {| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;" | ||
+ | |- | ||
+ | | <code>TDispmanxHandleGet = function(Resource:THandle):THandle;</code> | ||
+ | | style="width: 40%;"| | ||
+ | |- | ||
+ | |} | ||
+ | |||
+ | '''EDID block get''' | ||
+ | |||
+ | {| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;" | ||
+ | |- | ||
+ | | <code>TEDIDBlockGet = function(Block:LongWord; Buffer:Pointer; Length:LongWord):LongWord;</code> | ||
+ | | style="width: 40%;"| | ||
+ | |- | ||
+ | |} | ||
+ | |||
+ | '''Framebuffer available''' | ||
+ | |||
+ | {| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;" | ||
+ | |- | ||
+ | | <code>TFramebufferAvailable = function:Boolean;</code> | ||
+ | | style="width: 40%;"| | ||
+ | |- | ||
+ | |} | ||
+ | |||
+ | '''Framebuffer allocate''' | ||
+ | |||
+ | {| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;" | ||
+ | |- | ||
+ | | <code>TFramebufferAllocate = function(Alignment:LongWord; var Address,Length:LongWord):LongWord;</code> | ||
+ | | style="width: 40%;"| | ||
+ | |- | ||
+ | |} | ||
+ | |||
+ | '''Framebuffer release''' | ||
+ | |||
+ | {| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;" | ||
+ | |- | ||
+ | | <code>TFramebufferRelease = function:LongWord;</code> | ||
+ | | style="width: 40%;"| | ||
+ | |- | ||
+ | |} | ||
+ | |||
+ | '''Framebuffer set state''' | ||
+ | |||
+ | {| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;" | ||
+ | |- | ||
+ | | <code>TFramebufferSetState = function(State:LongWord):LongWord;</code> | ||
+ | | style="width: 40%;"| | ||
+ | |- | ||
+ | |} | ||
+ | |||
+ | '''Framebuffer get dimensions''' | ||
+ | |||
+ | {| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;" | ||
+ | |- | ||
+ | | <code>TFramebufferGetDimensions = function(var Width,Height,Top,Bottom,Left,Right:LongWord):LongWord;</code> | ||
+ | | style="width: 40%;"| | ||
+ | |- | ||
+ | |} | ||
+ | |||
+ | '''Framebuffer get physical''' | ||
+ | |||
+ | {| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;" | ||
+ | |- | ||
+ | | <code>TFramebufferGetPhysical = function(var Width,Height:LongWord):LongWord;</code> | ||
+ | | style="width: 40%;"| | ||
+ | |- | ||
+ | |} | ||
+ | |||
+ | '''Framebuffer set physical''' | ||
+ | |||
+ | {| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;" | ||
+ | |- | ||
+ | | <code>TFramebufferSetPhysical = function(var Width,Height:LongWord):LongWord;</code> | ||
+ | | style="width: 40%;"| | ||
+ | |- | ||
+ | |} | ||
+ | |||
+ | '''Framebuffer test physical''' | ||
+ | |||
+ | {| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;" | ||
+ | |- | ||
+ | | <code>TFramebufferTestPhysical = function(var Width,Height:LongWord):LongWord;</code> | ||
+ | | style="width: 40%;"| | ||
+ | |- | ||
+ | |} | ||
+ | |||
+ | '''Framebuffer get virtual''' | ||
+ | |||
+ | {| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;" | ||
+ | |- | ||
+ | | <code>TFramebufferGetVirtual = function(var Width,Height:LongWord):LongWord;</code> | ||
+ | | style="width: 40%;"| | ||
+ | |- | ||
+ | |} | ||
+ | |||
+ | '''Framebuffer set virtual''' | ||
+ | |||
+ | {| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;" | ||
+ | |- | ||
+ | | <code>TFramebufferSetVirtual = function(var Width,Height:LongWord):LongWord;</code> | ||
+ | | style="width: 40%;"| | ||
+ | |- | ||
+ | |} | ||
+ | |||
+ | '''Framebuffer test virtual''' | ||
+ | |||
+ | {| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;" | ||
+ | |- | ||
+ | | <code>TFramebufferTestVirtual = function(var Width,Height:LongWord):LongWord;</code> | ||
+ | | style="width: 40%;"| | ||
+ | |- | ||
+ | |} | ||
+ | |||
+ | '''Framebuffer get depth''' | ||
+ | |||
+ | {| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;" | ||
+ | |- | ||
+ | | <code>TFramebufferGetDepth = function(var Depth:LongWord):LongWord;</code> | ||
+ | | style="width: 40%;"| | ||
+ | |- | ||
+ | |} | ||
+ | |||
+ | '''Framebuffer set depth''' | ||
+ | |||
+ | {| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;" | ||
+ | |- | ||
+ | | <code>TFramebufferSetDepth = function(var Depth:LongWord):LongWord;</code> | ||
+ | | style="width: 40%;"| | ||
+ | |- | ||
+ | |} | ||
+ | |||
+ | '''Framebuffer test depth''' | ||
+ | |||
+ | {| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;" | ||
+ | |- | ||
+ | | <code>TFramebufferTestDepth = function(var Depth:LongWord):LongWord;</code> | ||
+ | | style="width: 40%;"| | ||
+ | |- | ||
+ | |} | ||
+ | |||
+ | '''Framebuffer get pixel order''' | ||
+ | |||
+ | {| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;" | ||
+ | |- | ||
+ | | <code>TFramebufferGetPixelOrder = function(var Order:LongWord):LongWord;</code> | ||
+ | | style="width: 40%;"| | ||
+ | |- | ||
+ | |} | ||
+ | |||
+ | '''Framebuffer set pixel order''' | ||
+ | |||
+ | {| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;" | ||
+ | |- | ||
+ | | <code>TFramebufferSetPixelOrder = function(var Order:LongWord):LongWord;</code> | ||
+ | | style="width: 40%;"| | ||
+ | |- | ||
+ | |} | ||
+ | |||
+ | '''Framebuffer test pixel order''' | ||
+ | |||
+ | {| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;" | ||
+ | |- | ||
+ | | <code>TFramebufferTestPixelOrder = function(var Order:LongWord):LongWord;</code> | ||
+ | | style="width: 40%;"| | ||
+ | |- | ||
+ | |} | ||
+ | |||
+ | '''Framebuffer get alpha mode''' | ||
+ | |||
+ | {| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;" | ||
+ | |- | ||
+ | | <code>TFramebufferGetAlphaMode = function(var Mode:LongWord):LongWord;</code> | ||
+ | | style="width: 40%;"| | ||
+ | |- | ||
+ | |} | ||
+ | |||
+ | '''Framebuffer set alpha mode''' | ||
+ | |||
+ | {| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;" | ||
+ | |- | ||
+ | | <code>TFramebufferSetAlphaMode = function(var Mode:LongWord):LongWord;</code> | ||
+ | | style="width: 40%;"| | ||
+ | |- | ||
+ | |} | ||
+ | |||
+ | '''Framebuffer test alpha mode''' | ||
+ | |||
+ | {| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;" | ||
+ | |- | ||
+ | | <code>TFramebufferTestAlphaMode = function(var Mode:LongWord):LongWord;</code> | ||
+ | | style="width: 40%;"| | ||
+ | |- | ||
+ | |} | ||
+ | |||
+ | '''Framebuffer get pitch''' | ||
+ | |||
+ | {| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;" | ||
+ | |- | ||
+ | | <code>TFramebufferGetPitch = function:LongWord;</code> | ||
+ | | style="width: 40%;"| | ||
+ | |- | ||
+ | |} | ||
+ | |||
+ | '''Framebuffer get offset''' | ||
+ | |||
+ | {| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;" | ||
+ | |- | ||
+ | | <code>TFramebufferGetOffset = function(var X,Y:LongWord):LongWord;</code> | ||
+ | | style="width: 40%;"| | ||
+ | |- | ||
+ | |} | ||
+ | |||
+ | '''Framebuffer set offset''' | ||
+ | |||
+ | {| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;" | ||
+ | |- | ||
+ | | <code>TFramebufferSetOffset = function(var X,Y:LongWord):LongWord;</code> | ||
+ | | style="width: 40%;"| | ||
+ | |- | ||
+ | |} | ||
+ | |||
+ | '''Framebuffer test offset''' | ||
+ | |||
+ | {| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;" | ||
+ | |- | ||
+ | | <code>TFramebufferTestOffset = function(var X,Y:LongWord):LongWord;</code> | ||
+ | | style="width: 40%;"| | ||
+ | |- | ||
+ | |} | ||
+ | |||
+ | '''Framebuffer get overscan''' | ||
+ | |||
+ | {| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;" | ||
+ | |- | ||
+ | | <code>TFramebufferGetOverscan = function(var Top,Bottom,Left,Right:LongWord):LongWord;</code> | ||
+ | | style="width: 40%;"| | ||
+ | |- | ||
+ | |} | ||
+ | |||
+ | '''Framebuffer set overscan''' | ||
+ | |||
+ | {| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;" | ||
+ | |- | ||
+ | | <code>TFramebufferSetOverscan = function(var Top,Bottom,Left,Right:LongWord):LongWord;</code> | ||
+ | | style="width: 40%;"| | ||
+ | |- | ||
+ | |} | ||
+ | |||
+ | '''Framebuffer test overscan''' | ||
+ | |||
+ | {| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;" | ||
+ | |- | ||
+ | | <code>TFramebufferTestOverscan = function(var Top,Bottom,Left,Right:LongWord):LongWord;</code> | ||
+ | | style="width: 40%;"| | ||
+ | |- | ||
+ | |} | ||
+ | |||
+ | '''Framebuffer get palette''' | ||
+ | |||
+ | {| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;" | ||
+ | |- | ||
+ | | <code>TFramebufferGetPalette = function(Buffer:Pointer; Length:LongWord):LongWord;</code> | ||
+ | | style="width: 40%;"| | ||
+ | |- | ||
+ | |} | ||
+ | |||
+ | '''Framebuffer set palette''' | ||
+ | |||
+ | {| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;" | ||
+ | |- | ||
+ | | <code>TFramebufferSetPalette = function(Start,Count:LongWord; Buffer:Pointer; Length:LongWord):LongWord;</code> | ||
+ | | style="width: 40%;"| | ||
+ | |- | ||
+ | |} | ||
+ | |||
+ | '''Framebuffer test palette''' | ||
+ | |||
+ | {| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;" | ||
+ | |- | ||
+ | | <code>TFramebufferTestPalette = function(Start,Count:LongWord; Buffer:Pointer; Length:LongWord):LongWord;</code> | ||
+ | | style="width: 40%;"| | ||
+ | |- | ||
+ | |} | ||
+ | |||
+ | '''Framebuffer test vsync''' | ||
+ | |||
+ | {| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;" | ||
+ | |- | ||
+ | | <code>TFramebufferTestVsync = function:LongWord;</code> | ||
+ | | style="width: 40%;"| | ||
+ | |- | ||
+ | |} | ||
+ | |||
+ | '''Framebuffer set vsync''' | ||
+ | |||
+ | {| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;" | ||
+ | |- | ||
+ | | <code>TFramebufferSetVsync = function:LongWord;</code> | ||
+ | | style="width: 40%;"| | ||
+ | |- | ||
+ | |} | ||
+ | |||
+ | '''Framebuffer set backlight''' | ||
+ | |||
+ | {| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;" | ||
+ | |- | ||
+ | | <code>TFramebufferSetBacklight = function(Brightness:LongWord):LongWord;</code> | ||
+ | | style="width: 40%;"| | ||
+ | |- | ||
+ | |} | ||
+ | |||
+ | '''Touch get buffer''' | ||
+ | |||
+ | {| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;" | ||
+ | |- | ||
+ | | <code>TTouchGetBuffer = function(var Address:LongWord):LongWord;</code> | ||
+ | | style="width: 40%;"| | ||
+ | |- | ||
+ | |} | ||
+ | |||
+ | '''Cursor set default''' | ||
+ | |||
+ | {| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;" | ||
+ | |- | ||
+ | | <code>TCursorSetDefault = function:LongWord;</code> | ||
+ | | style="width: 40%;"| | ||
+ | |- | ||
+ | |} | ||
+ | |||
+ | '''Cursor set info''' | ||
+ | |||
+ | {| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;" | ||
+ | |- | ||
+ | | <code>TCursorSetInfo = function(Width,Height,HotspotX,HotspotY:LongWord; Pixels:Pointer; Length:LongWord):LongWord;</code> | ||
+ | | style="width: 40%;"| | ||
+ | |- | ||
+ | |} | ||
+ | |||
+ | '''Cursor set state''' | ||
+ | |||
+ | {| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;" | ||
+ | |- | ||
+ | | <code>TCursorSetState = function(Enabled:Boolean; X,Y:LongWord; Relative:Boolean):LongWord;</code> | ||
+ | | style="width: 40%;"| | ||
+ | |- | ||
+ | |} | ||
+ | |||
+ | '''DMA available''' | ||
+ | |||
+ | {| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;" | ||
+ | |- | ||
+ | | <code>TDMAAvailable = function:Boolean;</code> | ||
+ | | style="width: 40%;"| | ||
+ | |- | ||
+ | |} | ||
+ | |||
+ | '''DMA transfer''' | ||
+ | |||
+ | {| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;" | ||
+ | |- | ||
+ | | <code>TDMATransfer = function(Data:PDMAData; Direction,Peripheral:LongWord):LongWord;</code> | ||
+ | | style="width: 40%;"| | ||
+ | |- | ||
+ | |} | ||
+ | |||
+ | '''DMA fill memory''' | ||
+ | |||
+ | {| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;" | ||
+ | |- | ||
+ | | <code>TDMAFillMemory = function(Dest:Pointer; Size:LongWord; Value:Byte):LongWord;</code> | ||
+ | | style="width: 40%;"| | ||
+ | |- | ||
+ | |} | ||
+ | |||
+ | '''DMA copy memory''' | ||
+ | |||
+ | {| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;" | ||
+ | |- | ||
+ | | <code>TDMACopyMemory = function(Source,Dest:Pointer; Size:LongWord):LongWord;</code> | ||
+ | | style="width: 40%;"| | ||
+ | |- | ||
+ | |} | ||
+ | |||
+ | '''DMA read peripheral''' | ||
+ | |||
+ | {| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;" | ||
+ | |- | ||
+ | | <code>TDMAReadPeripheral = function(Address,Dest:Pointer; Size,Peripheral:LongWord):LongWord;</code> | ||
+ | | style="width: 40%;"| | ||
+ | |- | ||
+ | |} | ||
+ | |||
+ | '''DMA write peripheral''' | ||
+ | |||
+ | {| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;" | ||
+ | |- | ||
+ | | <code>TDMAWritePeripheral = function(Source,Address:Pointer; Size,Peripheral:LongWord):LongWord;</code> | ||
+ | | style="width: 40%;"| | ||
+ | |- | ||
+ | |} | ||
+ | |||
+ | '''DMA allocate buffer''' | ||
+ | |||
+ | {| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;" | ||
+ | |- | ||
+ | | <code>TDMAAllocateBuffer = function(Size:LongWord):Pointer;</code> | ||
+ | | style="width: 40%;"| | ||
+ | |- | ||
+ | |} | ||
+ | |||
+ | '''DMA allocate buffer ex''' | ||
+ | |||
+ | {| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;" | ||
+ | |- | ||
+ | | <code>TDMAAllocateBufferEx = function(var Size:LongWord):Pointer;</code> | ||
+ | | style="width: 40%;"| | ||
+ | |- | ||
+ | |} | ||
+ | |||
+ | '''DMA release buffer''' | ||
+ | |||
+ | {| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;" | ||
+ | |- | ||
+ | | <code>TDMAReleaseBuffer = function(Buffer:Pointer):LongWord;</code> | ||
+ | | style="width: 40%;"| | ||
+ | |- | ||
+ | |} | ||
+ | |||
+ | '''DMA get channels''' | ||
+ | |||
+ | {| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;" | ||
+ | |- | ||
+ | | <code>TDMAGetChannels = function:LongWord;</code> | ||
+ | | style="width: 40%;"| | ||
+ | |- | ||
+ | |} | ||
+ | |||
+ | '''GPIO available''' | ||
+ | |||
+ | {| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;" | ||
+ | |- | ||
+ | | <code>TGPIOAvailable = function:Boolean;</code> | ||
+ | | style="width: 40%;"| | ||
+ | |- | ||
+ | |} | ||
+ | |||
+ | '''GPIO read''' | ||
+ | |||
+ | {| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;" | ||
+ | |- | ||
+ | | <code>TGPIORead = function(Reg:LongWord):LongWord;</code> | ||
+ | | style="width: 40%;"| | ||
+ | |- | ||
+ | |} | ||
+ | |||
+ | '''GPIO write''' | ||
+ | |||
+ | {| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;" | ||
+ | |- | ||
+ | | <code>TGPIOWrite = procedure(Reg,Value:LongWord);</code> | ||
+ | | style="width: 40%;"| | ||
+ | |- | ||
+ | |} | ||
+ | |||
+ | '''GPIO input get''' | ||
+ | |||
+ | {| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;" | ||
+ | |- | ||
+ | | <code>TGPIOInputGet = function(Pin:LongWord):LongWord;</code> | ||
+ | | style="width: 40%;"| | ||
+ | |- | ||
+ | |} | ||
+ | |||
+ | '''GPIO input wait''' | ||
+ | |||
+ | {| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;" | ||
+ | |- | ||
+ | | <code>TGPIOInputWait = function(Pin,Trigger,Timeout:LongWord):LongWord;</code> | ||
+ | | style="width: 40%;"| | ||
+ | |- | ||
+ | |} | ||
+ | |||
+ | '''GPIO input event''' | ||
+ | |||
+ | {| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;" | ||
+ | |- | ||
+ | | <code>TGPIOInputEvent = function(Pin,Trigger,Timeout:LongWord; Callback:TGPIOCallback; Data:Pointer):LongWord;</code> | ||
+ | | style="width: 40%;"| | ||
+ | |- | ||
+ | |} | ||
+ | |||
+ | '''GPIO output set''' | ||
+ | |||
+ | {| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;" | ||
+ | |- | ||
+ | | <code>TGPIOOutputSet = function(Pin,Level:LongWord):LongWord;</code> | ||
+ | | style="width: 40%;"| | ||
+ | |- | ||
+ | |} | ||
+ | |||
+ | '''GPIO pull get''' | ||
+ | |||
+ | {| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;" | ||
+ | |- | ||
+ | | <code>TGPIOPullGet = function(Pin:LongWord):LongWord;</code> | ||
+ | | style="width: 40%;"| | ||
+ | |- | ||
+ | |} | ||
+ | |||
+ | '''GPIO pull select''' | ||
+ | |||
+ | {| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;" | ||
+ | |- | ||
+ | | <code>TGPIOPullSelect = function(Pin,Mode:LongWord):LongWord;</code> | ||
+ | | style="width: 40%;"| | ||
+ | |- | ||
+ | |} | ||
+ | |||
+ | '''GPIO function get''' | ||
+ | |||
+ | {| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;" | ||
+ | |- | ||
+ | | <code>TGPIOFunctionGet = function(Pin:LongWord):LongWord;</code> | ||
+ | | style="width: 40%;"| | ||
+ | |- | ||
+ | |} | ||
+ | |||
+ | '''GPIO function select''' | ||
+ | |||
+ | {| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;" | ||
+ | |- | ||
+ | | <code>TGPIOFunctionSelect = function(Pin,Mode:LongWord):LongWord;</code> | ||
+ | | style="width: 40%;"| | ||
+ | |- | ||
+ | |} | ||
+ | |||
+ | '''Virtual GPIO input get''' | ||
+ | |||
+ | {| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;" | ||
+ | |- | ||
+ | | <code>TVirtualGPIOInputGet = function(Pin:LongWord):LongWord;</code> | ||
+ | | style="width: 40%;"| | ||
+ | |- | ||
+ | |} | ||
+ | |||
+ | '''Virtual GPIO output set''' | ||
+ | |||
+ | {| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;" | ||
+ | |- | ||
+ | | <code>TVirtualGPIOOutputSet = function(Pin,Level:LongWord):LongWord;</code> | ||
+ | | style="width: 40%;"| | ||
+ | |- | ||
+ | |} | ||
+ | |||
+ | '''Virtual GPIO function select''' | ||
+ | |||
+ | {| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;" | ||
+ | |- | ||
+ | | <code>TVirtualGPIOFunctionSelect = function(Pin,Mode:LongWord):LongWord;</code> | ||
+ | | style="width: 40%;"| | ||
+ | |- | ||
+ | |} | ||
+ | |||
+ | '''SPI available''' | ||
+ | |||
+ | {| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;" | ||
+ | |- | ||
+ | | <code>TSPIAvailable = function:Boolean;</code> | ||
+ | | style="width: 40%;"| | ||
+ | |- | ||
+ | |} | ||
+ | |||
+ | '''SPI start''' | ||
+ | |||
+ | {| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;" | ||
+ | |- | ||
+ | | <code>TSPIStart = function(Mode,ClockRate,ClockPhase,ClockPolarity:LongWord):LongWord;</code> | ||
+ | | style="width: 40%;"| | ||
+ | |- | ||
+ | |} | ||
+ | |||
+ | '''SPI stop''' | ||
+ | |||
+ | {| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;" | ||
+ | |- | ||
+ | | <code>TSPIStop = function:LongWord;</code> | ||
+ | | style="width: 40%;"| | ||
+ | |- | ||
+ | |} | ||
+ | |||
+ | '''SPI read''' | ||
+ | |||
+ | {| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;" | ||
+ | |- | ||
+ | | <code>TSPIRead = function(ChipSelect:Word; Dest:Pointer; Size:LongWord; var Count:LongWord):LongWord;</code> | ||
+ | | style="width: 40%;"| | ||
+ | |- | ||
+ | |} | ||
+ | |||
+ | '''SPI write''' | ||
+ | |||
+ | {| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;" | ||
+ | |- | ||
+ | | <code>TSPIWrite = function(ChipSelect:Word; Source:Pointer; Size:LongWord; var Count:LongWord):LongWord;</code> | ||
+ | | style="width: 40%;"| | ||
+ | |- | ||
+ | |} | ||
+ | |||
+ | '''SPI write read''' | ||
+ | |||
+ | {| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;" | ||
+ | |- | ||
+ | | <code>TSPIWriteRead = function(ChipSelect:Word; Source,Dest:Pointer; Size:LongWord; var Count:LongWord):LongWord;</code> | ||
+ | | style="width: 40%;"| | ||
+ | |- | ||
+ | |} | ||
+ | |||
+ | '''SPI get mode''' | ||
+ | |||
+ | {| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;" | ||
+ | |- | ||
+ | | <code>TSPIGetMode = function:LongWord;</code> | ||
+ | | style="width: 40%;"| | ||
+ | |- | ||
+ | |} | ||
+ | |||
+ | '''SPI set mode''' | ||
+ | |||
+ | {| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;" | ||
+ | |- | ||
+ | | <code>TSPISetMode = function(Mode:LongWord):LongWord;</code> | ||
+ | | style="width: 40%;"| | ||
+ | |- | ||
+ | |} | ||
+ | |||
+ | '''SPI get clock rate''' | ||
+ | |||
+ | {| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;" | ||
+ | |- | ||
+ | | <code>TSPIGetClockRate = function(ChipSelect:Word):LongWord;</code> | ||
+ | | style="width: 40%;"| | ||
+ | |- | ||
+ | |} | ||
+ | |||
+ | '''SPI set clock rate''' | ||
+ | |||
+ | {| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;" | ||
+ | |- | ||
+ | | <code>TSPISetClockRate = function(ChipSelect:Word; ClockRate:LongWord):LongWord;</code> | ||
+ | | style="width: 40%;"| | ||
+ | |- | ||
+ | |} | ||
+ | |||
+ | '''SPI get clock phase''' | ||
+ | |||
+ | {| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;" | ||
+ | |- | ||
+ | | <code>TSPIGetClockPhase = function:LongWord;</code> | ||
+ | | style="width: 40%;"| | ||
+ | |- | ||
+ | |} | ||
+ | |||
+ | '''SPI set clock phase''' | ||
+ | |||
+ | {| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;" | ||
+ | |- | ||
+ | | <code>TSPISetClockPhase = function(ClockPhase:LongWord):LongWord;</code> | ||
+ | | style="width: 40%;"| | ||
+ | |- | ||
+ | |} | ||
+ | |||
+ | '''SPI get clock polarity''' | ||
+ | |||
+ | {| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;" | ||
+ | |- | ||
+ | | <code>TSPIGetClockPolarity = function:LongWord;</code> | ||
+ | | style="width: 40%;"| | ||
+ | |- | ||
+ | |} | ||
+ | |||
+ | '''SPI set clock polarity''' | ||
+ | |||
+ | {| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;" | ||
+ | |- | ||
+ | | <code>TSPISetClockPolarity = function(ClockPolarity:LongWord):LongWord;</code> | ||
+ | | style="width: 40%;"| | ||
+ | |- | ||
+ | |} | ||
+ | |||
+ | '''SPI get select polarity''' | ||
+ | |||
+ | {| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;" | ||
+ | |- | ||
+ | | <code>TSPIGetSelectPolarity = function(ChipSelect:Word):LongWord;</code> | ||
+ | | style="width: 40%;"| | ||
+ | |- | ||
+ | |} | ||
+ | |||
+ | '''SPI set select polarity''' | ||
+ | |||
+ | {| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;" | ||
+ | |- | ||
+ | | <code>TSPISetSelectPolarity = function(ChipSelect:Word; SelectPolarity:LongWord):LongWord;</code> | ||
+ | | style="width: 40%;"| | ||
+ | |- | ||
+ | |} | ||
+ | |||
+ | '''I2C available''' | ||
+ | |||
+ | {| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;" | ||
+ | |- | ||
+ | | <code>TI2CAvailable = function:Boolean;</code> | ||
+ | | style="width: 40%;"| | ||
+ | |- | ||
+ | |} | ||
+ | |||
+ | '''I2C start''' | ||
+ | |||
+ | {| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;" | ||
+ | |- | ||
+ | | <code>TI2CStart = function(Rate:LongWord):LongWord;</code> | ||
+ | | style="width: 40%;"| | ||
+ | |- | ||
+ | |} | ||
+ | |||
+ | '''I2C stop''' | ||
+ | |||
+ | {| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;" | ||
+ | |- | ||
+ | | <code>TI2CStop = function:LongWord;</code> | ||
+ | | style="width: 40%;"| | ||
+ | |- | ||
+ | |} | ||
+ | |||
+ | '''I2C read''' | ||
+ | |||
+ | {| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;" | ||
+ | |- | ||
+ | | <code>TI2CRead = function(Address:Word; Buffer:Pointer; Size:LongWord; var Count:LongWord):LongWord;</code> | ||
+ | | style="width: 40%;"| | ||
+ | |- | ||
+ | |} | ||
+ | |||
+ | '''I2C write''' | ||
+ | |||
+ | {| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;" | ||
+ | |- | ||
+ | | <code>TI2CWrite = function(Address:Word; Buffer:Pointer; Size:LongWord; var Count:LongWord):LongWord;</code> | ||
+ | | style="width: 40%;"| | ||
+ | |- | ||
+ | |} | ||
+ | |||
+ | '''I2C write read''' | ||
+ | |||
+ | {| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;" | ||
+ | |- | ||
+ | | <code>TI2CWriteRead = function(Address:Word; Initial:Pointer; Len:LongWord; Data:Pointer; Size:LongWord; var Count:LongWord):LongWord;</code> | ||
+ | | style="width: 40%;"| | ||
+ | |- | ||
+ | |} | ||
+ | |||
+ | '''I2C write write''' | ||
+ | |||
+ | {| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;" | ||
+ | |- | ||
+ | | <code>TI2CWriteWrite = function(Address:Word; Initial:Pointer; Len:LongWord; Data:Pointer; Size:LongWord; var Count:LongWord):LongWord;</code> | ||
+ | | style="width: 40%;"| | ||
+ | |- | ||
+ | |} | ||
+ | |||
+ | '''I2C get rate''' | ||
+ | |||
+ | {| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;" | ||
+ | |- | ||
+ | | <code>TI2CGetRate = function:LongWord;</code> | ||
+ | | style="width: 40%;"| | ||
+ | |- | ||
+ | |} | ||
+ | |||
+ | '''I2C set rate''' | ||
+ | |||
+ | {| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;" | ||
+ | |- | ||
+ | | <code>TI2CSetRate = function(Rate:LongWord):LongWord;</code> | ||
+ | | style="width: 40%;"| | ||
+ | |- | ||
+ | |} | ||
+ | |||
+ | '''I2C get address''' | ||
+ | |||
+ | {| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;" | ||
+ | |- | ||
+ | | <code>TI2CGetAddress = function:Word;</code> | ||
+ | | style="width: 40%;"| | ||
+ | |- | ||
+ | |} | ||
+ | |||
+ | '''I2C set address''' | ||
+ | |||
+ | {| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;" | ||
+ | |- | ||
+ | | <code>TI2CSetAddress = function(Address:Word):LongWord;</code> | ||
+ | | style="width: 40%;"| | ||
+ | |- | ||
+ | |} | ||
+ | |||
+ | '''PWM available''' | ||
+ | |||
+ | {| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;" | ||
+ | |- | ||
+ | | <code>TPWMAvailable = function:Boolean;</code> | ||
+ | | style="width: 40%;"| | ||
+ | |- | ||
+ | |} | ||
+ | |||
+ | '''PWM start''' | ||
+ | |||
+ | {| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;" | ||
+ | |- | ||
+ | | <code>TPWMStart = function:LongWord;</code> | ||
+ | | style="width: 40%;"| | ||
+ | |- | ||
+ | |} | ||
+ | |||
+ | '''PWM stop''' | ||
+ | |||
+ | {| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;" | ||
+ | |- | ||
+ | | <code>TPWMStop = function:LongWord;</code> | ||
+ | | style="width: 40%;"| | ||
+ | |- | ||
+ | |} | ||
+ | |||
+ | '''PWM write''' | ||
+ | |||
+ | {| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;" | ||
+ | |- | ||
+ | | <code>TPWMWrite = function(Value:LongWord):LongWord;</code> | ||
+ | | style="width: 40%;"| | ||
+ | |- | ||
+ | |} | ||
+ | |||
+ | '''PWM set mode''' | ||
+ | |||
+ | {| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;" | ||
+ | |- | ||
+ | | <code>TPWMSetMode = function(Mode:LongWord):LongWord;</code> | ||
+ | | style="width: 40%;"| | ||
+ | |- | ||
+ | |} | ||
+ | |||
+ | '''PWM set range''' | ||
+ | |||
+ | {| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;" | ||
+ | |- | ||
+ | | <code>TPWMSetRange = function(Range:LongWord):LongWord;</code> | ||
+ | | style="width: 40%;"| | ||
+ | |- | ||
+ | |} | ||
+ | |||
+ | '''PWM set frequency''' | ||
+ | |||
+ | {| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;" | ||
+ | |- | ||
+ | | <code>TPWMSetFrequency = function(Frequency:LongWord):LongWord;</code> | ||
+ | | style="width: 40%;"| | ||
+ | |- | ||
+ | |} | ||
+ | |||
+ | '''PWM configure''' | ||
+ | |||
+ | {| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;" | ||
+ | |- | ||
+ | | <code>TPWMConfigure = function(DutyNS,PeriodNS:LongWord):LongWord;</code> | ||
+ | | style="width: 40%;"| | ||
+ | |- | ||
+ | |} | ||
+ | |||
+ | '''RTC available''' | ||
+ | |||
+ | {| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;" | ||
+ | |- | ||
+ | | <code>TRTCAvailable = function:Boolean;</code> | ||
+ | | style="width: 40%;"| | ||
+ | |- | ||
+ | |} | ||
+ | |||
+ | '''RTC get time''' | ||
+ | |||
+ | {| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;" | ||
+ | |- | ||
+ | | <code>TRTCGetTime = function:Int64;</code> | ||
+ | | style="width: 40%;"| | ||
+ | |- | ||
+ | |} | ||
+ | '''RTC set time''' | ||
+ | |||
+ | {| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;" | ||
+ | |- | ||
+ | | <code>TRTCSetTime = function(const Time:Int64):Int64;</code> | ||
+ | | style="width: 40%;"| | ||
+ | |- | ||
+ | |} | ||
+ | |||
+ | '''Serial available''' | ||
+ | |||
+ | {| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;" | ||
+ | |- | ||
+ | | <code>TSerialAvailable = function:Boolean;</code> | ||
+ | | style="width: 40%;"| | ||
+ | |- | ||
+ | |} | ||
+ | |||
+ | '''Serial open''' | ||
+ | |||
+ | {| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;" | ||
+ | |- | ||
+ | | <code>TSerialOpen = function(BaudRate,DataBits,StopBits,Parity,FlowControl,ReceiveDepth,TransmitDepth:LongWord):LongWord;</code> | ||
+ | | style="width: 40%;"| | ||
+ | |- | ||
+ | |} | ||
+ | |||
+ | '''Serial close''' | ||
+ | |||
+ | {| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;" | ||
+ | |- | ||
+ | | <code>TSerialClose = function:LongWord;</code> | ||
+ | | style="width: 40%;"| | ||
+ | |- | ||
+ | |} | ||
+ | |||
+ | '''Serial read''' | ||
+ | |||
+ | {| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;" | ||
+ | |- | ||
+ | | <code>TSerialRead = function(Buffer:Pointer; Size:LongWord; var Count:LongWord):LongWord;</code> | ||
+ | | style="width: 40%;"| | ||
+ | |- | ||
+ | |} | ||
+ | |||
+ | '''Serial write''' | ||
+ | |||
+ | {| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;" | ||
+ | |- | ||
+ | | <code>TSerialWrite = function(Buffer:Pointer; Size:LongWord; var Count:LongWord):LongWord;</code> | ||
+ | | style="width: 40%;"| | ||
+ | |- | ||
+ | |} | ||
+ | |||
+ | '''Peripheral get base''' | ||
+ | |||
+ | {| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;" | ||
+ | |- | ||
+ | | <code>TPeripheralGetBase = function:PtrUInt;</code> | ||
+ | | style="width: 40%;"| | ||
+ | |- | ||
+ | |} | ||
+ | |||
+ | '''Peripheral get size''' | ||
+ | |||
+ | {| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;" | ||
+ | |- | ||
+ | | <code>TPeripheralGetSize = function:LongWord;</code> | ||
+ | | style="width: 40%;"| | ||
+ | |- | ||
+ | |} | ||
+ | |||
+ | '''Peripheral read''' | ||
+ | |||
+ | {| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;" | ||
+ | |- | ||
+ | | <code>TPeripheralRead = function(Base,Reg:LongWord):LongWord;</code> | ||
+ | | style="width: 40%;"| | ||
+ | |- | ||
+ | |} | ||
+ | |||
+ | '''Peripheral write''' | ||
+ | |||
+ | {| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;" | ||
+ | |- | ||
+ | | <code>TPeripheralWrite = procedure(Base,Reg,Value:LongWord);</code> | ||
+ | | style="width: 40%;"| | ||
+ | |- | ||
+ | |} | ||
+ | |||
+ | '''Local Peripheral get base''' | ||
+ | |||
+ | {| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;" | ||
+ | |- | ||
+ | | <code>TLocalPeripheralGetBase = function:PtrUInt;</code> | ||
+ | | style="width: 40%;"| | ||
+ | |- | ||
+ | |} | ||
+ | |||
+ | '''Local peripheral get size''' | ||
+ | |||
+ | {| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;" | ||
+ | |- | ||
+ | | <code>TLocalPeripheralGetSize = function:LongWord;</code> | ||
+ | | style="width: 40%;"| | ||
+ | |- | ||
+ | |} | ||
+ | |||
+ | '''Get SP''' | ||
+ | |||
+ | {| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;" | ||
+ | |- | ||
+ | | <code>TGetSP = function:PtrUInt;</code> | ||
+ | | style="width: 40%;"| | ||
+ | |- | ||
+ | |} | ||
+ | |||
+ | '''GetPC''' | ||
+ | |||
+ | {| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;" | ||
+ | |- | ||
+ | | <code>TGetPC = function:PtrUInt;</code> | ||
+ | | style="width: 40%;"| | ||
+ | |- | ||
+ | |} | ||
+ | |||
+ | '''Get IRQ''' | ||
+ | |||
+ | {| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;" | ||
+ | |- | ||
+ | | <code>TGetIRQ = function:Boolean;</code> | ||
+ | | style="width: 40%;"| | ||
+ | |- | ||
+ | |} | ||
+ | |||
+ | '''Enable IRQ''' | ||
+ | |||
+ | {| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;" | ||
+ | |- | ||
+ | | <code>TEnableIRQ = procedure;</code> | ||
+ | | style="width: 40%;"| | ||
+ | |- | ||
+ | |} | ||
+ | |||
+ | '''Disable IRQ''' | ||
+ | |||
+ | {| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;" | ||
+ | |- | ||
+ | | <code>TDisableIRQ = procedure;</code> | ||
+ | | style="width: 40%;"| | ||
+ | |- | ||
+ | |} | ||
+ | |||
+ | '''Save IRQ''' | ||
+ | |||
+ | {| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;" | ||
+ | |- | ||
+ | | <code>TSaveIRQ = function:TIRQMask;</code> | ||
+ | | style="width: 40%;"| | ||
+ | |- | ||
+ | |} | ||
+ | |||
+ | '''Restore IRQ''' | ||
+ | |||
+ | {| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;" | ||
+ | |- | ||
+ | | <code>TRestoreIRQ = function(IRQMask:TIRQMask):TIRQMask;</code> | ||
+ | | style="width: 40%;"| | ||
+ | |- | ||
+ | |} | ||
+ | |||
+ | '''Get FIQ''' | ||
+ | |||
+ | {| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;" | ||
+ | |- | ||
+ | | <code>TGetFIQ = function:Boolean;</code> | ||
+ | | style="width: 40%;"| | ||
+ | |- | ||
+ | |} | ||
+ | |||
+ | '''Enable FIQ''' | ||
+ | |||
+ | {| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;" | ||
+ | |- | ||
+ | | <code>TEnableFIQ = procedure;</code> | ||
+ | | style="width: 40%;"| | ||
+ | |- | ||
+ | |} | ||
+ | |||
+ | '''Disable FIQ''' | ||
+ | |||
+ | {| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;" | ||
+ | |- | ||
+ | | <code>TDisableFIQ = procedure;</code> | ||
+ | | style="width: 40%;"| | ||
+ | |- | ||
+ | |} | ||
+ | |||
+ | '''Save FIQ''' | ||
+ | |||
+ | {| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;" | ||
+ | |- | ||
+ | | <code>TSaveFIQ = function:TFIQMask;</code> | ||
+ | | style="width: 40%;"| | ||
+ | |- | ||
+ | |} | ||
+ | |||
+ | '''Restore FIQ''' | ||
+ | |||
+ | {| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;" | ||
+ | |- | ||
+ | | <code>TRestoreFIQ = function(FIQMask:TFIQMask):TFIQMask;</code> | ||
+ | | style="width: 40%;"| | ||
+ | |- | ||
+ | |} | ||
+ | |||
+ | '''Enable IRQ/FIQ''' | ||
+ | |||
+ | {| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;" | ||
+ | |- | ||
+ | | <code>TEnableIRQFIQ = procedure;</code> | ||
+ | | style="width: 40%;"| | ||
+ | |- | ||
+ | |} | ||
+ | |||
+ | '''Disable IRQ/FIQ''' | ||
+ | |||
+ | {| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;" | ||
+ | |- | ||
+ | | <code>TDisableIRQFIQ = procedure;</code> | ||
+ | | style="width: 40%;"| | ||
+ | |- | ||
+ | |} | ||
+ | |||
+ | '''Save IRQ/FIQ''' | ||
+ | |||
+ | {| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;" | ||
+ | |- | ||
+ | | <code>TSaveIRQFIQ = function:TIRQFIQMask;</code> | ||
+ | | style="width: 40%;"| | ||
+ | |- | ||
+ | |} | ||
+ | |||
+ | '''Restore IRQ/FIQ''' | ||
+ | |||
+ | {| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;" | ||
+ | |- | ||
+ | | <code>TRestoreIRQFIQ = function(IRQFIQMask:TIRQFIQMask):TIRQFIQMask;</code> | ||
+ | | style="width: 40%;"| | ||
+ | |- | ||
+ | |} | ||
+ | |||
+ | '''Get abort''' | ||
+ | |||
+ | {| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;" | ||
+ | |- | ||
+ | | <code>TGetAbort = function:Boolean;</code> | ||
+ | | style="width: 40%;"| | ||
+ | |- | ||
+ | |} | ||
+ | |||
+ | '''Enable abort''' | ||
+ | |||
+ | {| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;" | ||
+ | |- | ||
+ | | <code>TEnableAbort = procedure;</code> | ||
+ | | style="width: 40%;"| | ||
+ | |- | ||
+ | |} | ||
+ | |||
+ | '''Disable abort''' | ||
+ | |||
+ | {| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;" | ||
+ | |- | ||
+ | | <code>TDisableAbort = procedure;</code> | ||
+ | | style="width: 40%;"| | ||
+ | |- | ||
+ | |} | ||
+ | |||
+ | '''Save abort''' | ||
+ | |||
+ | {| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;" | ||
+ | |- | ||
+ | | <code>TSaveAbort = function:TAbortMask;</code> | ||
+ | | style="width: 40%;"| | ||
+ | |- | ||
+ | |} | ||
+ | |||
+ | '''Restore abort''' | ||
+ | |||
+ | {| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;" | ||
+ | |- | ||
+ | | <code>TRestoreAbort = function(AbortMask:TAbortMask):TAbortMask;</code> | ||
+ | | style="width: 40%;"| | ||
+ | |- | ||
+ | |} | ||
+ | |||
+ | '''Halt''' | ||
+ | |||
+ | {| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;" | ||
+ | |- | ||
+ | | <code>THalt = procedure;</code> | ||
+ | | style="width: 40%;"| | ||
+ | |- | ||
+ | |} | ||
+ | |||
+ | '''Pause''' | ||
+ | |||
+ | {| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;" | ||
+ | |- | ||
+ | | <code>TPause = procedure;</code> | ||
+ | | style="width: 40%;"| | ||
+ | |- | ||
+ | |} | ||
+ | |||
+ | '''Halt thread''' | ||
+ | |||
+ | {| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;" | ||
+ | |- | ||
+ | | <code>THaltThread = function(ExitCode:LongWord):LongWord;</code> | ||
+ | | style="width: 40%;"| | ||
+ | |- | ||
+ | |} | ||
+ | |||
+ | '''Send event''' | ||
+ | |||
+ | {| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;" | ||
+ | |- | ||
+ | | <code>TSendEvent = procedure;</code> | ||
+ | | style="width: 40%;"| | ||
+ | |- | ||
+ | |} | ||
+ | |||
+ | '''Wait for event''' | ||
+ | |||
+ | {| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;" | ||
+ | |- | ||
+ | | <code>TWaitForEvent = procedure;</code> | ||
+ | | style="width: 40%;"| | ||
+ | |- | ||
+ | |} | ||
+ | |||
+ | '''Wait for interrupt''' | ||
+ | |||
+ | {| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;" | ||
+ | |- | ||
+ | | <code>TWaitForInterrupt = procedure;</code> | ||
+ | | style="width: 40%;"| | ||
+ | |- | ||
+ | |} | ||
+ | |||
+ | '''Read memory barrier''' | ||
+ | |||
+ | {| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;" | ||
+ | |- | ||
+ | | <code>TReadMemoryBarrier = procedure;</code> | ||
+ | | style="width: 40%;"| | ||
+ | |- | ||
+ | |} | ||
+ | |||
+ | '''Write memory barrier''' | ||
+ | |||
+ | {| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;" | ||
+ | |- | ||
+ | | <code>TWriteMemoryBarrier = procedure;</code> | ||
+ | | style="width: 40%;"| | ||
+ | |- | ||
+ | |} | ||
+ | |||
+ | '''Data memory barrier''' | ||
+ | |||
+ | {| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;" | ||
+ | |- | ||
+ | | <code>TDataMemoryBarrier = procedure;</code> | ||
+ | | style="width: 40%;"| | ||
+ | |- | ||
+ | |} | ||
+ | |||
+ | '''Data synchronization barrier''' | ||
+ | |||
+ | {| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;" | ||
+ | |- | ||
+ | | <code>TDataSynchronizationBarrier = procedure;</code> | ||
+ | | style="width: 40%;"| | ||
+ | |- | ||
+ | |} | ||
+ | |||
+ | '''Instruction memory barrier''' | ||
+ | |||
+ | {| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;" | ||
+ | |- | ||
+ | | <code>TInstructionMemoryBarrier = procedure;</code> | ||
+ | | style="width: 40%;"| | ||
+ | |- | ||
+ | |} | ||
+ | |||
+ | '''Invalidate TLB''' | ||
+ | |||
+ | {| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;" | ||
+ | |- | ||
+ | | <code>TInvalidateTLB = procedure;</code> | ||
+ | | style="width: 40%;"| | ||
+ | |- | ||
+ | |} | ||
+ | |||
+ | '''Invalidate data TLB''' | ||
+ | |||
+ | {| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;" | ||
+ | |- | ||
+ | | <code>TInvalidateDataTLB = procedure;</code> | ||
+ | | style="width: 40%;"| | ||
+ | |- | ||
+ | |} | ||
+ | |||
+ | '''Invalidate instruction TLB''' | ||
+ | |||
+ | {| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;" | ||
+ | |- | ||
+ | | <code>TInvalidateInstructionTLB = procedure;</code> | ||
+ | | style="width: 40%;"| | ||
+ | |- | ||
+ | |} | ||
+ | |||
+ | '''Invalidate cache''' | ||
+ | |||
+ | {| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;" | ||
+ | |- | ||
+ | | <code>TInvalidateCache = procedure;</code> | ||
+ | | style="width: 40%;"| | ||
+ | |- | ||
+ | |} | ||
+ | |||
+ | '''Clean data cache''' | ||
+ | |||
+ | {| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;" | ||
+ | |- | ||
+ | | <code>TCleanDataCache = procedure;</code> | ||
+ | | style="width: 40%;"| | ||
+ | |- | ||
+ | |} | ||
+ | |||
+ | '''Invalidate data cache''' | ||
+ | |||
+ | {| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;" | ||
+ | |- | ||
+ | | <code>TInvalidateDataCache = procedure;</code> | ||
+ | | style="width: 40%;"| | ||
+ | |- | ||
+ | |} | ||
+ | |||
+ | '''Clean and invalidate data cache''' | ||
+ | |||
+ | {| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;" | ||
+ | |- | ||
+ | | <code>TCleanAndInvalidateDataCache = procedure;</code> | ||
+ | | style="width: 40%;"| | ||
+ | |- | ||
+ | |} | ||
+ | |||
+ | '''Invalidate instruction cache''' | ||
+ | |||
+ | {| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;" | ||
+ | |- | ||
+ | | <code>TInvalidateInstructionCache = procedure;</code> | ||
+ | | style="width: 40%;"| | ||
+ | |- | ||
+ | |} | ||
+ | |||
+ | '''Clean data cache range''' | ||
+ | |||
+ | {| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;" | ||
+ | |- | ||
+ | | <code>TCleanDataCacheRange = procedure(Address,Size:LongWord);</code> | ||
+ | | style="width: 40%;"| | ||
+ | |- | ||
+ | |} | ||
+ | |||
+ | '''Invaliate data cache range''' | ||
+ | |||
+ | {| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;" | ||
+ | |- | ||
+ | | <code>TInvalidateDataCacheRange = procedure(Address,Size:LongWord);</code> | ||
+ | | style="width: 40%;"| | ||
+ | |- | ||
+ | |} | ||
+ | |||
+ | '''Clean and invalidate data cache range''' | ||
+ | |||
+ | {| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;" | ||
+ | |- | ||
+ | | <code>TCleanAndInvalidateDataCacheRange = procedure(Address,Size:LongWord);</code> | ||
+ | | style="width: 40%;"| | ||
+ | |- | ||
+ | |} | ||
+ | |||
+ | '''Invalidate instruction cache range''' | ||
+ | |||
+ | {| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;" | ||
+ | |- | ||
+ | | <code>TInvalidateInstructionCacheRange = procedure(Address,Size:LongWord);</code> | ||
+ | | style="width: 40%;"| | ||
+ | |- | ||
+ | |} | ||
+ | |||
+ | '''Flush prefetch buffer''' | ||
+ | |||
+ | {| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;" | ||
+ | |- | ||
+ | | <code>TFlushPrefetchBuffer = procedure;</code> | ||
+ | | style="width: 40%;"| | ||
+ | |- | ||
+ | |} | ||
+ | |||
+ | '''Flush branch target cache''' | ||
+ | |||
+ | {| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;" | ||
+ | |- | ||
+ | | <code>TFlushBranchTargetCache = procedure;</code> | ||
+ | | style="width: 40%;"| | ||
+ | |- | ||
+ | |} | ||
+ | |||
+ | '''Context switch''' | ||
+ | |||
+ | {| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;" | ||
+ | |- | ||
+ | | <code>TContextSwitch = procedure(OldStack,NewStack:Pointer; NewThread:TThreadHandle);</code> | ||
+ | | style="width: 40%;"| | ||
+ | |- | ||
+ | |} | ||
+ | |||
+ | '''Context switch IRQ''' | ||
+ | |||
+ | {| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;" | ||
+ | |- | ||
+ | | <code>TContextSwitchIRQ = procedure(OldStack,NewStack:Pointer; NewThread:TThreadHandle);</code> | ||
+ | | style="width: 40%;"| | ||
+ | |- | ||
+ | |} | ||
+ | |||
+ | '''Context switch FIQ''' | ||
+ | |||
+ | {| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;" | ||
+ | |- | ||
+ | | <code>TContextSwitchFIQ = procedure(OldStack,NewStack:Pointer; NewThread:TThreadHandle);</code> | ||
+ | | style="width: 40%;"| | ||
+ | |- | ||
+ | |} | ||
+ | |||
+ | '''Context switch SWI''' | ||
+ | |||
+ | {| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;" | ||
+ | |- | ||
+ | | <code>TContextSwitchSWI = procedure(OldStack,NewStack:Pointer; NewThread:TThreadHandle);</code> | ||
+ | | style="width: 40%;"| | ||
+ | |- | ||
+ | |} | ||
+ | |||
+ | '''Interlocked or''' | ||
+ | |||
+ | {| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;" | ||
+ | |- | ||
+ | | <code>TInterlockedOr = function(var Target:LongInt; Value:LongInt):LongInt;</code> | ||
+ | | style="width: 40%;"| | ||
+ | |- | ||
+ | |} | ||
+ | |||
+ | '''Interlocked x or''' | ||
+ | |||
+ | {| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;" | ||
+ | |- | ||
+ | | <code>TInterlockedXor = function(var Target:LongInt; Value:LongInt):LongInt;</code> | ||
+ | | style="width: 40%;"| | ||
+ | |- | ||
+ | |} | ||
+ | |||
+ | '''Interlocked and''' | ||
+ | |||
+ | {| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;" | ||
+ | |- | ||
+ | | <code>TInterlockedAnd = function(var Target:LongInt; Value:LongInt):LongInt;</code> | ||
+ | | style="width: 40%;"| | ||
+ | |- | ||
+ | |} | ||
+ | |||
+ | '''Interlocked decrement''' | ||
+ | |||
+ | {| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;" | ||
+ | |- | ||
+ | | <code>TInterlockedDecrement = function(var Target:LongInt):LongInt;</code> | ||
+ | | style="width: 40%;"| | ||
+ | |- | ||
+ | |} | ||
+ | |||
+ | '''Interlocked increment''' | ||
+ | |||
+ | {| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;" | ||
+ | |- | ||
+ | | <code>TInterlockedIncrement = function(var Target:LongInt):LongInt;</code> | ||
+ | | style="width: 40%;"| | ||
+ | |- | ||
+ | |} | ||
+ | |||
+ | '''Interlocked exchange''' | ||
+ | |||
+ | {| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;" | ||
+ | |- | ||
+ | | <code>TInterlockedExchange = function(var Target:LongInt; Source:LongInt):LongInt;</code> | ||
+ | | style="width: 40%;"| | ||
+ | |- | ||
+ | |} | ||
+ | |||
+ | '''Interlocked add exchange''' | ||
+ | |||
+ | {| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;" | ||
+ | |- | ||
+ | | <code>TInterlockedAddExchange = function(var Target:LongInt; Source:LongInt):LongInt;</code> | ||
+ | | style="width: 40%;"| | ||
+ | |- | ||
+ | |} | ||
+ | |||
+ | '''Interlocked compare exchange''' | ||
+ | |||
+ | {| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;" | ||
+ | |- | ||
+ | | <code>TInterlockedCompareExchange = function(var Target:LongInt; Source,Compare:LongInt):LongInt;</code> | ||
+ | | style="width: 40%;"| | ||
+ | |- | ||
+ | |} | ||
+ | |||
+ | '''Page table get base''' | ||
+ | |||
+ | {| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;" | ||
+ | |- | ||
+ | | <code>TPageTableGetBase = function:PtrUInt;</code> | ||
+ | | style="width: 40%;"| | ||
+ | |- | ||
+ | |} | ||
+ | |||
+ | '''Page table get size''' | ||
+ | |||
+ | {| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;" | ||
+ | |- | ||
+ | | <code>TPageTableGetSize = function:LongWord;</code> | ||
+ | | style="width: 40%;"| | ||
+ | |- | ||
+ | |} | ||
+ | |||
+ | '''Page table get entry''' | ||
+ | |||
+ | {| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;" | ||
+ | |- | ||
+ | | <code>TPageTableGetEntry = function(Address:PtrUInt):TPageTableEntry;</code> | ||
+ | | style="width: 40%;"| | ||
+ | |- | ||
+ | |} | ||
+ | |||
+ | '''Page table set entry''' | ||
+ | |||
+ | {| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;" | ||
+ | |- | ||
+ | | <code>TPageTableSetEntry = function(const Entry:TPageTableEntry):LongWord;</code> | ||
+ | | style="width: 40%;"| | ||
+ | |- | ||
+ | |} | ||
+ | |||
+ | '''Page tables get address''' | ||
+ | |||
+ | {| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;" | ||
+ | |- | ||
+ | | <code>TPageTablesGetAddress = function:PtrUInt;</code> | ||
+ | | style="width: 40%;"| | ||
+ | |- | ||
+ | |} | ||
+ | |||
+ | '''Page tables get length''' | ||
+ | |||
+ | {| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;" | ||
+ | |- | ||
+ | | <code>TPageTablesGetLength = function:LongWord;</code> | ||
+ | | style="width: 40%;"| | ||
+ | |- | ||
+ | |} | ||
+ | |||
+ | '''Page tables get count''' | ||
+ | |||
+ | {| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;" | ||
+ | |- | ||
+ | | <code>TPageTablesGetCount = function:LongWord;</code> | ||
+ | | style="width: 40%;"| | ||
+ | |- | ||
+ | |} | ||
+ | |||
+ | '''Page tables get shift''' | ||
+ | |||
+ | {| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;" | ||
+ | |- | ||
+ | | <code>TPageTablesGetShift = function:LongWord;</code> | ||
+ | | style="width: 40%;"| | ||
+ | |- | ||
+ | |} | ||
+ | |||
+ | '''Page tables get next''' | ||
+ | |||
+ | {| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;" | ||
+ | |- | ||
+ | | <code>TPageTablesGetNext = function:PtrUInt;</code> | ||
+ | | style="width: 40%;"| | ||
+ | |- | ||
+ | |} | ||
+ | |||
+ | '''Page tables get used''' | ||
+ | |||
+ | {| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;" | ||
+ | |- | ||
+ | | <code>TPageTablesGetUsed = function:LongWord;</code> | ||
+ | | style="width: 40%;"| | ||
+ | |- | ||
+ | |} | ||
+ | |||
+ | '''Page tables get free''' | ||
+ | |||
+ | {| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;" | ||
+ | |- | ||
+ | | <code>TPageTablesGetFree = function:LongWord;</code> | ||
+ | | style="width: 40%;"| | ||
+ | |- | ||
+ | |} | ||
+ | |||
+ | '''Vector table get base''' | ||
+ | |||
+ | {| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;" | ||
+ | |- | ||
+ | | <code>TVectorTableGetBase = function:PtrUInt;</code> | ||
+ | | style="width: 40%;"| | ||
+ | |- | ||
+ | |} | ||
+ | |||
+ | '''Vector table get size''' | ||
+ | |||
+ | {| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;" | ||
+ | |- | ||
+ | | <code>TVectorTableGetSize = function:LongWord;</code> | ||
+ | | style="width: 40%;"| | ||
+ | |- | ||
+ | |} | ||
+ | |||
+ | '''Vector table get count''' | ||
+ | |||
+ | {| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;" | ||
+ | |- | ||
+ | | <code>TVectorTableGetCount = function:LongWord;</code> | ||
+ | | style="width: 40%;"| | ||
+ | |- | ||
+ | |} | ||
+ | |||
+ | '''Vector table get entry''' | ||
+ | |||
+ | {| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;" | ||
+ | |- | ||
+ | | <code>TVectorTableGetEntry = function(Number:LongWord):PtrUInt;</code> | ||
+ | | style="width: 40%;"| | ||
+ | |- | ||
+ | |} | ||
+ | |||
+ | '''Vector table set entry''' | ||
+ | |||
+ | {| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;" | ||
+ | |- | ||
+ | | <code>TVectorTableSetEntry = function(Number:LongWord; Address:PtrUInt):LongWord;</code> | ||
+ | | style="width: 40%;"| | ||
+ | |- | ||
+ | |} | ||
+ | |||
+ | '''First bit set''' | ||
+ | |||
+ | {| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;" | ||
+ | |- | ||
+ | | <code>TFirstBitSet = function(Value:LongWord):LongWord;</code> | ||
+ | | style="width: 40%;"| | ||
+ | |- | ||
+ | |} | ||
+ | |||
+ | '''Count leading zeros''' | ||
+ | |||
+ | {| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;" | ||
+ | |- | ||
+ | | <code>TCountLeadingZeros = function(Value:LongWord):LongWord;</code> | ||
+ | | style="width: 40%;"| | ||
+ | |- | ||
+ | |} | ||
+ | |||
+ | '''Text IO write char''' | ||
+ | |||
+ | {| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;" | ||
+ | |- | ||
+ | | <code>TTextIOWriteChar = function(ACh:Char; AUserData:Pointer):Boolean;</code> | ||
+ | | style="width: 40%;"| | ||
+ | |- | ||
+ | |} | ||
+ | |||
+ | '''Text IO read char''' | ||
+ | |||
+ | {| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;" | ||
+ | |- | ||
+ | | <code>TTextIOReadChar = function(var ACh:Char; AUserData:Pointer):Boolean;</code> | ||
+ | | style="width: 40%;"| | ||
+ | |- | ||
+ | |} | ||
+ | |||
+ | '''Console get key''' | ||
+ | |||
+ | {| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;" | ||
+ | |- | ||
+ | | <code>TConsoleGetKey = function(var ACh:Char; AUserData:Pointer):Boolean;</code> | ||
+ | | style="width: 40%;"| | ||
+ | |- | ||
+ | |} | ||
+ | |||
+ | '''Console peek key''' | ||
+ | |||
+ | {| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;" | ||
+ | |- | ||
+ | | <code>TConsolePeekKey = function(var ACh:Char; AUserData:Pointer):Boolean;</code> | ||
+ | | style="width: 40%;"| | ||
+ | |- | ||
+ | |} | ||
+ | |||
+ | '''Console write char''' | ||
+ | |||
+ | {| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;" | ||
+ | |- | ||
+ | | <code>TConsoleWriteChar = function(ACh:Char; AUserData:Pointer):Boolean;</code> | ||
+ | | style="width: 40%;"| | ||
+ | |- | ||
+ | |} | ||
+ | |||
+ | '''Console read char''' | ||
+ | |||
+ | {| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;" | ||
+ | |- | ||
+ | | <code>TConsoleReadChar = function(var ACh:Char; AUserData:Pointer):Boolean;</code> | ||
+ | | style="width: 40%;"| | ||
+ | |- | ||
+ | |} | ||
+ | |||
+ | '''Console read wide char''' | ||
+ | |||
+ | {| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;" | ||
+ | |- | ||
+ | | <code>TConsoleReadWideChar = function(var ACh:WideChar; AUserData:Pointer):Boolean;</code> | ||
+ | | style="width: 40%;"| | ||
+ | |- | ||
+ | |} | ||
+ | |||
+ | '''Console hide mouse''' | ||
+ | |||
+ | {| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;" | ||
+ | |- | ||
+ | | <code>TConsoleHideMouse = function(AUserData:Pointer):Boolean;</code> | ||
+ | | style="width: 40%;"| | ||
+ | |- | ||
+ | |} | ||
+ | |||
+ | '''Console show mouse''' | ||
+ | |||
+ | {| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;" | ||
+ | |- | ||
+ | | <code>TConsoleShowMouse = function(X,Y:LongWord; AUserData:Pointer):Boolean;</code> | ||
+ | | style="width: 40%;"| | ||
+ | |- | ||
+ | |} | ||
+ | |||
+ | '''Console read mouse''' | ||
+ | |||
+ | {| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;" | ||
+ | |- | ||
+ | | <code>TConsoleReadMouse = function(var X,Y,Buttons:LongWord; AUserData:Pointer):Boolean;</code> | ||
+ | | style="width: 40%;"| | ||
+ | |- | ||
+ | |} | ||
+ | |||
+ | '''Code page to wide char''' | ||
+ | |||
+ | {| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;" | ||
+ | |- | ||
+ | | <code>TCodePageToWideChar = function(Ch:Char):WideChar;</code> | ||
+ | | style="width: 40%;"| | ||
+ | |- | ||
+ | |} | ||
+ | |||
+ | '''Wide char to code page''' | ||
+ | |||
+ | {| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;" | ||
+ | |- | ||
+ | | <code>TWideCharToCodePage = function(Ch:WideChar):Char;</code> | ||
+ | | style="width: 40%;"| | ||
+ | |- | ||
+ | |} | ||
+ | |||
+ | '''Host get name''' | ||
+ | |||
+ | {| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;" | ||
+ | |- | ||
+ | | <code>THostGetName = function:String;</code> | ||
+ | | style="width: 40%;"| | ||
+ | |- | ||
+ | |} | ||
+ | |||
+ | '''Host set name''' | ||
+ | |||
+ | {| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;" | ||
+ | |- | ||
+ | | <code>THostSetName = function(const AName:String):Boolean;</code> | ||
+ | | style="width: 40%;"| | ||
+ | |- | ||
+ | |} | ||
+ | |||
+ | '''Host get domain''' | ||
+ | |||
+ | {| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;" | ||
+ | |- | ||
+ | | <code>THostGetDomain = function:String;</code> | ||
+ | | style="width: 40%;"| | ||
+ | |- | ||
+ | |} | ||
+ | |||
+ | '''Host set domain''' | ||
+ | |||
+ | {| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;" | ||
+ | |- | ||
+ | | <code>THostSetDomain = function(const ADomain:String):Boolean;</code> | ||
+ | | style="width: 40%;"| | ||
+ | |- | ||
+ | |} | ||
+ | |||
+ | '''Logging output''' | ||
+ | |||
+ | {| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;" | ||
+ | |- | ||
+ | | <code>TLoggingOutput = procedure(const AText:String);</code> | ||
+ | | style="width: 40%;"| | ||
+ | |- | ||
+ | |} | ||
+ | |||
+ | '''Logging output ex''' | ||
+ | |||
+ | {| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;" | ||
+ | |- | ||
+ | | <code>TLoggingOutputEx = procedure(AFacility,ASeverity:LongWord; const ATag,AContent:String);</code> | ||
+ | | style="width: 40%;"| | ||
+ | |- | ||
+ | |} | ||
+ | |||
+ | '''Text IO data''' | ||
+ | |||
+ | <div class="toccolours mw-collapsible mw-collapsed" style="border: 1; font-family: arial;"> | ||
+ | <code>PTextIOData = ^TTextIOData;</code> | ||
+ | |||
+ | <code>TTextIOData = record</code> | ||
+ | <div class="mw-collapsible-content" style="text-align: left; padding-left: 5px;"> | ||
+ | {| class="wikitable" style="font-size: 14px; background: white;" | ||
+ | |- | ||
+ | | <code>WriteChar:TTextIOWriteChar;</code> | ||
+ | | style="width: 50%;"| | ||
+ | |- | ||
+ | | <code>ReadChar:TTextIOReadChar;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>UserData:Pointer;</code> | ||
+ | | | ||
+ | |- | ||
+ | |} | ||
+ | </div></div> | ||
+ | <br /> | ||
=== Class definitions === | === Class definitions === |
Revision as of 23:09, 24 January 2017
Return to Unit Reference
Contents
[hide]Description
Ultibo Platform interface unit
To be documented
Constants
DMA_DATA_FLAG_*
PAGE_TABLE_FLAG_*
VECTOR_TABLE_ENTRY_*
EXCEPTION_TYPE_*
PLATFORM_LOG_LEVEL_*
IRQ_LOG_LEVEL_*
FIQ_LOG_LEVEL_*
SWI_LOG_LEVEL_*
Type definitions
IRQ mask
TIRQMask = LongWord;
|
FIQ mask
TFIQMask = LongWord;
|
IRQ/FIQ mask
TIRQFIQMask = LongWord;
|
Abort mask
TAbortMask = LongWord;
|
DMA data
System call request (SWI)
Handle entry
Shutdown entry
Interrupt entry (IRQ/FIQ)
System call entry (SWI)
Page table entry
Platform lock
Platform semaphore
CPU init
TCPUInit = procedure;
|
FPU init
TFPUInit = procedure;
|
GPU init
TGPUInit = procedure;
|
MMU init
TMMUInit = procedure;
|
SMP init
TSMPInit = procedure;
|
Cache init
TCacheInit = procedure;
|
Board init
TBoardInit = procedure;
|
Memory init
TMemoryInit = procedure;
|
Clock init
TClockInit = procedure;
|
Power init
TPowerInit = procedure;
|
Mailbox init
TMailboxInit = procedure;
|
Interrupt init
TInterruptInit = procedure;
|
Peripheral init
TPeripheralInit = procedure;
|
Framebuffer init
TFramebufferInit = procedure;
|
Parse boot tags
TParseBootTags = procedure;
|
Parse command line
TParseCommandLine = procedure;
|
Parse environment
TParseEnvironment = procedure;
|
Interrupt (IRQ/FIQ) handler
TInterruptHandler = procedure(Parameter:Pointer);
|
Interrupt (IRQ/FIQ) ex handler
TInterruptExHandler = function(CPUID:LongWord; Thread:TThreadHandle; Parameter:Pointer):TThreadHandle;
|
System call (SWI) handler
TSystemCallHandler = procedure(Request:PSystemCallRequest);
|
System call (SWI) ex handler
TSystemCallExHandler = function(CPUID:LongWord; Thread:TThreadHandle; Request:PSystemCallRequest):TThreadHandle;
|
Thread yield
TThreadYield = function:LongWord;
|
Thread wait
TThreadWait = function(List:TListHandle; Lock:TSpinHandle; Flags:LongWord):LongWord;
|
Thread wait ex
TThreadWaitEx = function(List:TListHandle; Lock:TSpinHandle; Flags,Timeout:LongWord):LongWord;
|
Thread release
TThreadRelease = function(List:TListHandle):LongWord;
|
Thread abandon
TThreadAbandon = function(List:TListHandle):LongWord;
|
Thread wake
TThreadWake = function(Thread:TThreadHandle):LongWord;
|
Thread ready
TThreadReady = function(Thread:TThreadHandle; Reschedule:Boolean):LongWord;
|
Thread timeout
TThreadTimeout = function(Thread:TThreadHandle):LongWord;
|
Timer event
TTimerEvent = procedure(Data:Pointer);
|
Worker task
TWorkerTask = procedure(Data:Pointer);
|
Worker callback
TWorkerCallback = procedure(Data:Pointer);
|
Counter callback
TCounterCallback = procedure(Data:Pointer);
|
GPIO callback
TGPIOCallback = procedure(Data:Pointer; Pin,Trigger:LongWord);
|
Boot blink
TBootBlink = procedure;
|
Boot output
TBootOutput = procedure(Value:LongWord);
|
Power LED enable
TPowerLEDEnable = procedure;
|
Power LED on
TPowerLEDOn = procedure;
|
Power LED off
TPowerLEDOff = procedure;
|
Activity LED enable
TActivityLEDEnable = procedure;
|
Activity LED on
TActivityLEDOn = procedure;
|
Activity LED off
TActivityLEDOff = procedure;
|
Counter available
TCounterAvailable = function:Boolean;
|
Counter read
TCounterRead = function:LongWord;
|
Counter read64
TCounterRead64 = function:Int64;
|
Counter wait
TCounterWait = function:LongWord;
|
Counter event
TCounterEvent = function(Callback:TCounterCallback; Data:Pointer):LongWord;
|
Counter cancel
TCounterCancel = function:LongWord;
|
Counter get rate
TCounterGetRate = function:LongWord;
|
Counter set rate
TCounterSetRate = function(Rate:LongWord):LongWord;
|
Counter get interval
TCounterGetInterval = function:LongWord;
|
Counter set interval
TCounterSetInterval = function(Interval:LongWord):LongWord;
|
Mailbox receive
TMailboxReceive = function(Mailbox,Channel:LongWord):LongWord;
|
Mailbox send
TMailboxSend = procedure(Mailbox,Channel,Data:LongWord);
|
Mailbox call
TMailboxCall = function(Mailbox,Channel,Data:LongWord; var Response:LongWord):LongWord;
|
Mailbox call ex
TMailboxCallEx = function(Mailbox,Channel,Data:LongWord; var Response:LongWord; Timeout:LongWord):LongWord;
|
Mailbox property call
TMailboxPropertyCall = function(Mailbox,Channel:LongWord; Data:Pointer; var Response:LongWord):LongWord;
|
Mailbox property call ex
TMailboxPropertyCallEx = function(Mailbox,Channel:LongWord; Data:Pointer; var Response:LongWord; Timeout:LongWord):LongWord;
|
Random available
TRandomAvailable = function:Boolean;
|
Random seed
TRandomSeed = procedure(Seed:LongWord);
|
Random read long int
TRandomReadLongInt = function(Limit:LongInt):LongInt;
|
Random read int64
TRandomReadInt64 = function(Limit:Int64):Int64;
|
Random read extended
TRandomReadExtended = function:Extended;
|
Watchdog available
TWatchdogAvailable = function:Boolean;
|
Watchdog start
TWatchdogStart = function(Milliseconds:LongWord):LongWord;
|
Watchdog stop
TWatchdogStop = function:LongWord;
|
Watchdog refresh
TWatchdogRefresh = function(Milliseconds:LongWord):LongWord;
|
Request IRQ
TRequestIRQ = function(CPUID,Number:LongWord; Handler:TInterruptHandler; Parameter:Pointer):LongWord;
|
Release IRQ
TReleaseIRQ = function(CPUID,Number:LongWord; Handler:TInterruptHandler; Parameter:Pointer):LongWord;
|
Request ex IRQ
TRequestExIRQ = function(CPUID,Number:LongWord; Handler:TInterruptHandler; HandlerEx:TInterruptExHandler; Parameter:Pointer):LongWord;
|
Release ex IRQ
TReleaseExIRQ = function(CPUID,Number:LongWord; Handler:TInterruptHandler; HandlerEx:TInterruptExHandler; Parameter:Pointer):LongWord;
|
Request FIQ
TRequestFIQ = function(CPUID,Number:LongWord; Handler:TInterruptHandler; Parameter:Pointer):LongWord;
|
Release FIQ
TReleaseFIQ = function(CPUID,Number:LongWord; Handler:TInterruptHandler; arameter:Pointer):LongWord;
|
Request ex FIQ
TRequestExFIQ = function(CPUID,Number:LongWord; Handler:TInterruptHandler; HandlerEx:TInterruptExHandler; Parameter:Pointer):LongWord;
|
Release ex FIQ
TReleaseExFIQ = function(CPUID,Number:LongWord; Handler:TInterruptHandler; HandlerEx:TInterruptExHandler; Parameter:Pointer):LongWord;
|
System call
TSystemCall = procedure(Number:LongWord; Param1,Param2,Param3:PtrUInt);
|
Register system call
TRegisterSystemCall = function(Number:LongWord; Handler:TSystemCallHandler):LongWord;
|
Deregister system call
TDeregisterSystemCall = function(Number:LongWord; Handler:TSystemCallHandler):LongWord;
|
Register system call ex
TRegisterSystemCallEx = function(CPUID,Number:LongWord; Handler:TSystemCallHandler; HandlerEx:TSystemCallExHandler):LongWord;
|
Deregister system call ex
TDeregisterSystemCallEx = function(CPUID,Number:LongWord; Handler:TSystemCallHandler; HandlerEx:TSystemCallExHandler):LongWord;
|
Get interrupt count
TGetInterruptCount = function:LongWord;
|
Get interrupt start
TGetInterruptStart = function:LongWord;
|
Get interrupt entry
TGetInterruptEntry = function(Number:LongWord):TInterruptEntry;
|
Get local interrupt count
TGetLocalInterruptCount = function:LongWord;
|
Get local interrupt start
TGetLocalInterruptStart = function:LongWord;
|
Get local interrupt entry
TGetLocalInterruptEntry = function(CPUID,Number:LongWord):TInterruptEntry;
|
Get system call count
TGetSystemCallCount = function:LongWord;
|
Get system call entry
TGetSystemCallEntry = function(Number:LongWord):TSystemCallEntry;
|
System restart
TSystemRestart = function(Delay:LongWord):LongWord;
|
System shutdown
TSystemShutdown = function(Delay:LongWord):LongWord;
|
System get uptime
TSystemGetUptime = function:Int64;
|
System get command line
TSystemGetCommandLine = function:String;
|
System get environment
TSystemGetEnvironment = function:Pointer;
|
CPU get arch
TCPUGetArch = function:LongWord;
|
CPU get type
TCPUGetType = function:LongWord;
|
CPU get boot
TCPUGetBoot = function:LongWord;
|
CPU get mask
TCPUGetMask = function:LongWord;
|
CPU get count
TCPUGetCount = function:LongWord;
|
CPU get mode
TCPUGetMode = function:LongWord;
|
CPU get state
TCPUGetState = function:LongWord;
|
CPU get current
TCPUGetCurrent = function:LongWord;
|
CPU get memory
TCPUGetMemory = function(var Address:PtrUInt; var Length:LongWord):LongWord;
|
CPU get percentage
TCPUGetPercentage = function(CPUID:LongWord):Double;
|
CPU get utilization
TCPUGetUtilization = function(CPUID:LongWord):LongWord;
|
CPU get model
TCPUGetModel = function:LongWord;
|
CPU get revision
TCPUGetRevision = function:LongWord;
|
CPU get description
TCPUGetDescription = function:String;
|
FPU get type
TFPUGetType = function:LongWord;
|
FPU get state
TFPUGetState = function:LongWord;
|
GPU get type
TGPUGetType = function:LongWord;
|
GPU get state
TGPUGetState = function:LongWord;
|
GPU get memory
TGPUGetMemory = function(var Address:PtrUInt; var Length:LongWord):LongWord;
|
L1 cache get type
TL1CacheGetType = function:LongWord;
|
L1 data cache get size
TL1DataCacheGetSize = function:LongWord;
|
L1 data cache get line size
TL1DataCacheGetLineSize = function:LongWord;
|
L1 instruction cache get size
TL1InstructionCacheGetSize = function:LongWord;
|
L1 instruction cache get line size
TL1InstructionCacheGetLineSize = function:LongWord;
|
L2 cache get type
TL2CacheGetType = function:LongWord;
|
L2 cache get size
TL2CacheGetSize = function:LongWord;
|
L2 cache get line size
TL2CacheGetLineSize = function:LongWord;
|
Board get type
TBoardGetType = function:LongWord;
|
Board get model
TBoardGetModel = function:LongWord;
|
Board get serial
TBoardGetSerial = function:Int64;
|
Board get revision
TBoardGetRevision = function:LongWord;
|
Board get MAC address
TBoardGetMACAddress = function:String;
|
Firmware get revision
TFirmwareGetRevision = function:LongWord;
|
Machine get type
TMachineGetType = function:LongWord;
|
Memory get base
TMemoryGetBase = function:PtrUInt;
|
Memory get size
TMemoryGetSize = function:LongWord;
|
Memory get page size
TMemoryGetPageSize = function:LongWord;
|
Memory get large page size
TMemoryGetLargePageSize = function:LongWord;
|
Power get wait
TPowerGetWait = function(PowerId:LongWord):LongWord;
|
Power get state
TPowerGetState = function(PowerId:LongWord):LongWord;
|
Power set state
TPowerSetState = function(PowerId,State:LongWord; Wait:Boolean):LongWord;
|
Clock get count
TClockGetCount = function:LongWord;
|
Clock get total
TClockGetTotal = function:Int64;
|
Clock update offset
TClockUpdateOffset = function:LongWord;
|
Clock get rate
TClockGetRate = function(ClockId:LongWord):LongWord;
|
Clock set rate
TClockSetRate = function(ClockId,Rate:LongWord; Turbo:Boolean):LongWord;
|
Clock get state
TClockGetState = function(ClockId:LongWord):LongWord;
|
Clock set state
TClockSetState = function(ClockId,State:LongWord):LongWord;
|
Clock get min rate
TClockGetMinRate = function(ClockId:LongWord):LongWord;
|
Clock get max rate
TClockGetMaxRate = function(ClockId:LongWord):LongWord;
|
Turbo get state
TTurboGetState = function(TurboId:LongWord):LongWord;
|
Turbo set state
TTurboSetState = function(TurboId,State:LongWord):LongWord;
|
Voltage get value
TVoltageGetValue = function (VoltageId:LongWord):LongWord;
|
Voltage set value
TVoltageSetValue = function (VoltageId,Value:LongWord):LongWord;
|
Voltage get min value
TVoltageGetMinValue = function(VoltageId:LongWord):LongWord;
|
Voltage get max value
TVoltageGetMaxValue = function(VoltageId:LongWord):LongWord;
|
Temperature get current
TTemperatureGetCurrent = function(TemperatureId:LongWord):LongWord;
|
Temperature get maximum
TTemperatureGetMaximum = function(TemperatureId:LongWord):LongWord;
|
GPU memory allocate
TGPUMemoryAllocate = function(Length,Alignment,Flags:LongWord):THandle;
|
GPU memory release
TGPUMemoryRelease = function(Handle:THandle):LongWord;
|
GPU memory lock
TGPUMemoryLock = function(Handle:THandle):LongWord;
|
GPU memory unlock
TGPUMemoryUnlock = function(Handle:THandle):LongWord;
|
GPU execute code
TGPUExecuteCode = function(Address:Pointer; R0,R1,R2,R3,R4,R5:LongWord):LongWord;
|
Dispmanx handle get
TDispmanxHandleGet = function(Resource:THandle):THandle;
|
EDID block get
TEDIDBlockGet = function(Block:LongWord; Buffer:Pointer; Length:LongWord):LongWord;
|
Framebuffer available
TFramebufferAvailable = function:Boolean;
|
Framebuffer allocate
TFramebufferAllocate = function(Alignment:LongWord; var Address,Length:LongWord):LongWord;
|
Framebuffer release
TFramebufferRelease = function:LongWord;
|
Framebuffer set state
TFramebufferSetState = function(State:LongWord):LongWord;
|
Framebuffer get dimensions
TFramebufferGetDimensions = function(var Width,Height,Top,Bottom,Left,Right:LongWord):LongWord;
|
Framebuffer get physical
TFramebufferGetPhysical = function(var Width,Height:LongWord):LongWord;
|
Framebuffer set physical
TFramebufferSetPhysical = function(var Width,Height:LongWord):LongWord;
|
Framebuffer test physical
TFramebufferTestPhysical = function(var Width,Height:LongWord):LongWord;
|
Framebuffer get virtual
TFramebufferGetVirtual = function(var Width,Height:LongWord):LongWord;
|
Framebuffer set virtual
TFramebufferSetVirtual = function(var Width,Height:LongWord):LongWord;
|
Framebuffer test virtual
TFramebufferTestVirtual = function(var Width,Height:LongWord):LongWord;
|
Framebuffer get depth
TFramebufferGetDepth = function(var Depth:LongWord):LongWord;
|
Framebuffer set depth
TFramebufferSetDepth = function(var Depth:LongWord):LongWord;
|
Framebuffer test depth
TFramebufferTestDepth = function(var Depth:LongWord):LongWord;
|
Framebuffer get pixel order
TFramebufferGetPixelOrder = function(var Order:LongWord):LongWord;
|
Framebuffer set pixel order
TFramebufferSetPixelOrder = function(var Order:LongWord):LongWord;
|
Framebuffer test pixel order
TFramebufferTestPixelOrder = function(var Order:LongWord):LongWord;
|
Framebuffer get alpha mode
TFramebufferGetAlphaMode = function(var Mode:LongWord):LongWord;
|
Framebuffer set alpha mode
TFramebufferSetAlphaMode = function(var Mode:LongWord):LongWord;
|
Framebuffer test alpha mode
TFramebufferTestAlphaMode = function(var Mode:LongWord):LongWord;
|
Framebuffer get pitch
TFramebufferGetPitch = function:LongWord;
|
Framebuffer get offset
TFramebufferGetOffset = function(var X,Y:LongWord):LongWord;
|
Framebuffer set offset
TFramebufferSetOffset = function(var X,Y:LongWord):LongWord;
|
Framebuffer test offset
TFramebufferTestOffset = function(var X,Y:LongWord):LongWord;
|
Framebuffer get overscan
TFramebufferGetOverscan = function(var Top,Bottom,Left,Right:LongWord):LongWord;
|
Framebuffer set overscan
TFramebufferSetOverscan = function(var Top,Bottom,Left,Right:LongWord):LongWord;
|
Framebuffer test overscan
TFramebufferTestOverscan = function(var Top,Bottom,Left,Right:LongWord):LongWord;
|
Framebuffer get palette
TFramebufferGetPalette = function(Buffer:Pointer; Length:LongWord):LongWord;
|
Framebuffer set palette
TFramebufferSetPalette = function(Start,Count:LongWord; Buffer:Pointer; Length:LongWord):LongWord;
|
Framebuffer test palette
TFramebufferTestPalette = function(Start,Count:LongWord; Buffer:Pointer; Length:LongWord):LongWord;
|
Framebuffer test vsync
TFramebufferTestVsync = function:LongWord;
|
Framebuffer set vsync
TFramebufferSetVsync = function:LongWord;
|
Framebuffer set backlight
TFramebufferSetBacklight = function(Brightness:LongWord):LongWord;
|
Touch get buffer
TTouchGetBuffer = function(var Address:LongWord):LongWord;
|
Cursor set default
TCursorSetDefault = function:LongWord;
|
Cursor set info
TCursorSetInfo = function(Width,Height,HotspotX,HotspotY:LongWord; Pixels:Pointer; Length:LongWord):LongWord;
|
Cursor set state
TCursorSetState = function(Enabled:Boolean; X,Y:LongWord; Relative:Boolean):LongWord;
|
DMA available
TDMAAvailable = function:Boolean;
|
DMA transfer
TDMATransfer = function(Data:PDMAData; Direction,Peripheral:LongWord):LongWord;
|
DMA fill memory
TDMAFillMemory = function(Dest:Pointer; Size:LongWord; Value:Byte):LongWord;
|
DMA copy memory
TDMACopyMemory = function(Source,Dest:Pointer; Size:LongWord):LongWord;
|
DMA read peripheral
TDMAReadPeripheral = function(Address,Dest:Pointer; Size,Peripheral:LongWord):LongWord;
|
DMA write peripheral
TDMAWritePeripheral = function(Source,Address:Pointer; Size,Peripheral:LongWord):LongWord;
|
DMA allocate buffer
TDMAAllocateBuffer = function(Size:LongWord):Pointer;
|
DMA allocate buffer ex
TDMAAllocateBufferEx = function(var Size:LongWord):Pointer;
|
DMA release buffer
TDMAReleaseBuffer = function(Buffer:Pointer):LongWord;
|
DMA get channels
TDMAGetChannels = function:LongWord;
|
GPIO available
TGPIOAvailable = function:Boolean;
|
GPIO read
TGPIORead = function(Reg:LongWord):LongWord;
|
GPIO write
TGPIOWrite = procedure(Reg,Value:LongWord);
|
GPIO input get
TGPIOInputGet = function(Pin:LongWord):LongWord;
|
GPIO input wait
TGPIOInputWait = function(Pin,Trigger,Timeout:LongWord):LongWord;
|
GPIO input event
TGPIOInputEvent = function(Pin,Trigger,Timeout:LongWord; Callback:TGPIOCallback; Data:Pointer):LongWord;
|
GPIO output set
TGPIOOutputSet = function(Pin,Level:LongWord):LongWord;
|
GPIO pull get
TGPIOPullGet = function(Pin:LongWord):LongWord;
|
GPIO pull select
TGPIOPullSelect = function(Pin,Mode:LongWord):LongWord;
|
GPIO function get
TGPIOFunctionGet = function(Pin:LongWord):LongWord;
|
GPIO function select
TGPIOFunctionSelect = function(Pin,Mode:LongWord):LongWord;
|
Virtual GPIO input get
TVirtualGPIOInputGet = function(Pin:LongWord):LongWord;
|
Virtual GPIO output set
TVirtualGPIOOutputSet = function(Pin,Level:LongWord):LongWord;
|
Virtual GPIO function select
TVirtualGPIOFunctionSelect = function(Pin,Mode:LongWord):LongWord;
|
SPI available
TSPIAvailable = function:Boolean;
|
SPI start
TSPIStart = function(Mode,ClockRate,ClockPhase,ClockPolarity:LongWord):LongWord;
|
SPI stop
TSPIStop = function:LongWord;
|
SPI read
TSPIRead = function(ChipSelect:Word; Dest:Pointer; Size:LongWord; var Count:LongWord):LongWord;
|
SPI write
TSPIWrite = function(ChipSelect:Word; Source:Pointer; Size:LongWord; var Count:LongWord):LongWord;
|
SPI write read
TSPIWriteRead = function(ChipSelect:Word; Source,Dest:Pointer; Size:LongWord; var Count:LongWord):LongWord;
|
SPI get mode
TSPIGetMode = function:LongWord;
|
SPI set mode
TSPISetMode = function(Mode:LongWord):LongWord;
|
SPI get clock rate
TSPIGetClockRate = function(ChipSelect:Word):LongWord;
|
SPI set clock rate
TSPISetClockRate = function(ChipSelect:Word; ClockRate:LongWord):LongWord;
|
SPI get clock phase
TSPIGetClockPhase = function:LongWord;
|
SPI set clock phase
TSPISetClockPhase = function(ClockPhase:LongWord):LongWord;
|
SPI get clock polarity
TSPIGetClockPolarity = function:LongWord;
|
SPI set clock polarity
TSPISetClockPolarity = function(ClockPolarity:LongWord):LongWord;
|
SPI get select polarity
TSPIGetSelectPolarity = function(ChipSelect:Word):LongWord;
|
SPI set select polarity
TSPISetSelectPolarity = function(ChipSelect:Word; SelectPolarity:LongWord):LongWord;
|
I2C available
TI2CAvailable = function:Boolean;
|
I2C start
TI2CStart = function(Rate:LongWord):LongWord;
|
I2C stop
TI2CStop = function:LongWord;
|
I2C read
TI2CRead = function(Address:Word; Buffer:Pointer; Size:LongWord; var Count:LongWord):LongWord;
|
I2C write
TI2CWrite = function(Address:Word; Buffer:Pointer; Size:LongWord; var Count:LongWord):LongWord;
|
I2C write read
TI2CWriteRead = function(Address:Word; Initial:Pointer; Len:LongWord; Data:Pointer; Size:LongWord; var Count:LongWord):LongWord;
|
I2C write write
TI2CWriteWrite = function(Address:Word; Initial:Pointer; Len:LongWord; Data:Pointer; Size:LongWord; var Count:LongWord):LongWord;
|
I2C get rate
TI2CGetRate = function:LongWord;
|
I2C set rate
TI2CSetRate = function(Rate:LongWord):LongWord;
|
I2C get address
TI2CGetAddress = function:Word;
|
I2C set address
TI2CSetAddress = function(Address:Word):LongWord;
|
PWM available
TPWMAvailable = function:Boolean;
|
PWM start
TPWMStart = function:LongWord;
|
PWM stop
TPWMStop = function:LongWord;
|
PWM write
TPWMWrite = function(Value:LongWord):LongWord;
|
PWM set mode
TPWMSetMode = function(Mode:LongWord):LongWord;
|
PWM set range
TPWMSetRange = function(Range:LongWord):LongWord;
|
PWM set frequency
TPWMSetFrequency = function(Frequency:LongWord):LongWord;
|
PWM configure
TPWMConfigure = function(DutyNS,PeriodNS:LongWord):LongWord;
|
RTC available
TRTCAvailable = function:Boolean;
|
RTC get time
TRTCGetTime = function:Int64;
|
RTC set time
TRTCSetTime = function(const Time:Int64):Int64;
|
Serial available
TSerialAvailable = function:Boolean;
|
Serial open
TSerialOpen = function(BaudRate,DataBits,StopBits,Parity,FlowControl,ReceiveDepth,TransmitDepth:LongWord):LongWord;
|
Serial close
TSerialClose = function:LongWord;
|
Serial read
TSerialRead = function(Buffer:Pointer; Size:LongWord; var Count:LongWord):LongWord;
|
Serial write
TSerialWrite = function(Buffer:Pointer; Size:LongWord; var Count:LongWord):LongWord;
|
Peripheral get base
TPeripheralGetBase = function:PtrUInt;
|
Peripheral get size
TPeripheralGetSize = function:LongWord;
|
Peripheral read
TPeripheralRead = function(Base,Reg:LongWord):LongWord;
|
Peripheral write
TPeripheralWrite = procedure(Base,Reg,Value:LongWord);
|
Local Peripheral get base
TLocalPeripheralGetBase = function:PtrUInt;
|
Local peripheral get size
TLocalPeripheralGetSize = function:LongWord;
|
Get SP
TGetSP = function:PtrUInt;
|
GetPC
TGetPC = function:PtrUInt;
|
Get IRQ
TGetIRQ = function:Boolean;
|
Enable IRQ
TEnableIRQ = procedure;
|
Disable IRQ
TDisableIRQ = procedure;
|
Save IRQ
TSaveIRQ = function:TIRQMask;
|
Restore IRQ
TRestoreIRQ = function(IRQMask:TIRQMask):TIRQMask;
|
Get FIQ
TGetFIQ = function:Boolean;
|
Enable FIQ
TEnableFIQ = procedure;
|
Disable FIQ
TDisableFIQ = procedure;
|
Save FIQ
TSaveFIQ = function:TFIQMask;
|
Restore FIQ
TRestoreFIQ = function(FIQMask:TFIQMask):TFIQMask;
|
Enable IRQ/FIQ
TEnableIRQFIQ = procedure;
|
Disable IRQ/FIQ
TDisableIRQFIQ = procedure;
|
Save IRQ/FIQ
TSaveIRQFIQ = function:TIRQFIQMask;
|
Restore IRQ/FIQ
TRestoreIRQFIQ = function(IRQFIQMask:TIRQFIQMask):TIRQFIQMask;
|
Get abort
TGetAbort = function:Boolean;
|
Enable abort
TEnableAbort = procedure;
|
Disable abort
TDisableAbort = procedure;
|
Save abort
TSaveAbort = function:TAbortMask;
|
Restore abort
TRestoreAbort = function(AbortMask:TAbortMask):TAbortMask;
|
Halt
THalt = procedure;
|
Pause
TPause = procedure;
|
Halt thread
THaltThread = function(ExitCode:LongWord):LongWord;
|
Send event
TSendEvent = procedure;
|
Wait for event
TWaitForEvent = procedure;
|
Wait for interrupt
TWaitForInterrupt = procedure;
|
Read memory barrier
TReadMemoryBarrier = procedure;
|
Write memory barrier
TWriteMemoryBarrier = procedure;
|
Data memory barrier
TDataMemoryBarrier = procedure;
|
Data synchronization barrier
TDataSynchronizationBarrier = procedure;
|
Instruction memory barrier
TInstructionMemoryBarrier = procedure;
|
Invalidate TLB
TInvalidateTLB = procedure;
|
Invalidate data TLB
TInvalidateDataTLB = procedure;
|
Invalidate instruction TLB
TInvalidateInstructionTLB = procedure;
|
Invalidate cache
TInvalidateCache = procedure;
|
Clean data cache
TCleanDataCache = procedure;
|
Invalidate data cache
TInvalidateDataCache = procedure;
|
Clean and invalidate data cache
TCleanAndInvalidateDataCache = procedure;
|
Invalidate instruction cache
TInvalidateInstructionCache = procedure;
|
Clean data cache range
TCleanDataCacheRange = procedure(Address,Size:LongWord);
|
Invaliate data cache range
TInvalidateDataCacheRange = procedure(Address,Size:LongWord);
|
Clean and invalidate data cache range
TCleanAndInvalidateDataCacheRange = procedure(Address,Size:LongWord);
|
Invalidate instruction cache range
TInvalidateInstructionCacheRange = procedure(Address,Size:LongWord);
|
Flush prefetch buffer
TFlushPrefetchBuffer = procedure;
|
Flush branch target cache
TFlushBranchTargetCache = procedure;
|
Context switch
TContextSwitch = procedure(OldStack,NewStack:Pointer; NewThread:TThreadHandle);
|
Context switch IRQ
TContextSwitchIRQ = procedure(OldStack,NewStack:Pointer; NewThread:TThreadHandle);
|
Context switch FIQ
TContextSwitchFIQ = procedure(OldStack,NewStack:Pointer; NewThread:TThreadHandle);
|
Context switch SWI
TContextSwitchSWI = procedure(OldStack,NewStack:Pointer; NewThread:TThreadHandle);
|
Interlocked or
TInterlockedOr = function(var Target:LongInt; Value:LongInt):LongInt;
|
Interlocked x or
TInterlockedXor = function(var Target:LongInt; Value:LongInt):LongInt;
|
Interlocked and
TInterlockedAnd = function(var Target:LongInt; Value:LongInt):LongInt;
|
Interlocked decrement
TInterlockedDecrement = function(var Target:LongInt):LongInt;
|
Interlocked increment
TInterlockedIncrement = function(var Target:LongInt):LongInt;
|
Interlocked exchange
TInterlockedExchange = function(var Target:LongInt; Source:LongInt):LongInt;
|
Interlocked add exchange
TInterlockedAddExchange = function(var Target:LongInt; Source:LongInt):LongInt;
|
Interlocked compare exchange
TInterlockedCompareExchange = function(var Target:LongInt; Source,Compare:LongInt):LongInt;
|
Page table get base
TPageTableGetBase = function:PtrUInt;
|
Page table get size
TPageTableGetSize = function:LongWord;
|
Page table get entry
TPageTableGetEntry = function(Address:PtrUInt):TPageTableEntry;
|
Page table set entry
TPageTableSetEntry = function(const Entry:TPageTableEntry):LongWord;
|
Page tables get address
TPageTablesGetAddress = function:PtrUInt;
|
Page tables get length
TPageTablesGetLength = function:LongWord;
|
Page tables get count
TPageTablesGetCount = function:LongWord;
|
Page tables get shift
TPageTablesGetShift = function:LongWord;
|
Page tables get next
TPageTablesGetNext = function:PtrUInt;
|
Page tables get used
TPageTablesGetUsed = function:LongWord;
|
Page tables get free
TPageTablesGetFree = function:LongWord;
|
Vector table get base
TVectorTableGetBase = function:PtrUInt;
|
Vector table get size
TVectorTableGetSize = function:LongWord;
|
Vector table get count
TVectorTableGetCount = function:LongWord;
|
Vector table get entry
TVectorTableGetEntry = function(Number:LongWord):PtrUInt;
|
Vector table set entry
TVectorTableSetEntry = function(Number:LongWord; Address:PtrUInt):LongWord;
|
First bit set
TFirstBitSet = function(Value:LongWord):LongWord;
|
Count leading zeros
TCountLeadingZeros = function(Value:LongWord):LongWord;
|
Text IO write char
TTextIOWriteChar = function(ACh:Char; AUserData:Pointer):Boolean;
|
Text IO read char
TTextIOReadChar = function(var ACh:Char; AUserData:Pointer):Boolean;
|
Console get key
TConsoleGetKey = function(var ACh:Char; AUserData:Pointer):Boolean;
|
Console peek key
TConsolePeekKey = function(var ACh:Char; AUserData:Pointer):Boolean;
|
Console write char
TConsoleWriteChar = function(ACh:Char; AUserData:Pointer):Boolean;
|
Console read char
TConsoleReadChar = function(var ACh:Char; AUserData:Pointer):Boolean;
|
Console read wide char
TConsoleReadWideChar = function(var ACh:WideChar; AUserData:Pointer):Boolean;
|
Console hide mouse
TConsoleHideMouse = function(AUserData:Pointer):Boolean;
|
Console show mouse
TConsoleShowMouse = function(X,Y:LongWord; AUserData:Pointer):Boolean;
|
Console read mouse
TConsoleReadMouse = function(var X,Y,Buttons:LongWord; AUserData:Pointer):Boolean;
|
Code page to wide char
TCodePageToWideChar = function(Ch:Char):WideChar;
|
Wide char to code page
TWideCharToCodePage = function(Ch:WideChar):Char;
|
Host get name
THostGetName = function:String;
|
Host set name
THostSetName = function(const AName:String):Boolean;
|
Host get domain
THostGetDomain = function:String;
|
Host set domain
THostSetDomain = function(const ADomain:String):Boolean;
|
Logging output
TLoggingOutput = procedure(const AText:String);
|
Logging output ex
TLoggingOutputEx = procedure(AFacility,ASeverity:LongWord; const ATag,AContent:String);
|
Text IO data
Class definitions
To be documented
Public variables
Platform logging
PLATFORM_DEFAULT_LOG_LEVEL:LongWord = PLATFORM_LOG_LEVEL_DEBUG;
|
Minimum level for Platform messages. Only messages with level greater than or equal to this will be printed. |
PLATFORM_LOG_ENABLED:Boolean;
|
IRQ logging
IRQ_DEFAULT_LOG_LEVEL:LongWord = IRQ_LOG_LEVEL_INFO;
|
Minimum level for IRQ messages. Only messages with level greater than or equal to this will be printed. |
IRQ_LOG_ENABLED:Boolean;
|
FIQ logging
FIQ_DEFAULT_LOG_LEVEL:LongWord = FIQ_LOG_LEVEL_INFO;
|
Minimum level for FIQ messages. Only messages with level greater than or equal to this will be printed. |
FIQ_LOG_ENABLED:Boolean;
|
SWI logging
SWI_DEFAULT_LOG_LEVEL:LongWord = SWI_LOG_LEVEL_INFO;
|
Minimum level for SWI messages. Only messages with level greater than or equal to this will be printed. |
SWI_LOG_ENABLED:Boolean;
|
Platform specific variables
PlatformInitialized:Boolean;
|
CPUInitialized:Boolean;
|
FPUInitialized:Boolean;
|
GPUInitialized:Boolean;
|
MMUInitialized:Boolean;
|
SMPInitialized:Boolean;
|
CacheInitialized:Boolean;
|
BoardInitialized:Boolean;
|
MemoryInitialized:Boolean;
|
ClockInitialized:Boolean;
|
PowerInitialized:Boolean;
|
MailboxInitialized:Boolean;
|
InterruptsInitialized:Boolean;
|
PeripheralsInitialized:Boolean;
|
ParseBootTagsCompleted:Boolean;
|
ParseCommandLineCompleted:Boolean;
|
ParseEnvironmentCompleted:Boolean;
|
Lock variables
ClockLock:TPlatformLock;
|
PowerLock:TPlatformLock;
|
MailboxLock:TPlatformLock;
|
ShutdownLock:TPlatformLock;
|
InterruptLock:TPlatformLock;
|
PageTableLock:TPlatformLock;
|
VectorTableLock:TPlatformLock;
|
Semaphore variables
ShutdownSemaphore:TPlatformSemaphore;
|
Clock variables
ClockBase:Int64 = TIME_TICKS_TO_1899;
|
The system time as of the last setting of the clock |
ClockLast:LongWord;
|
The timer value of the last clock tick |
ClockTicks:LongWord;
|
Current number of clock ticks (When this reaches CLOCK_TICKS_PER_SECOND then ClockSeconds is incremented and this is reset to zero) |
ClockSeconds:LongWord;
|
Current number of clock seconds (This forms the system clock) |
ClockRTCInvalid:LongBool;
|
True if available time from RTC is invalid |
Utilization variables
UtilizationLast:array of LongWord;
|
The per CPU utilization for the last second (Allocated by scheduler initialization) |
UtilizationCurrent:array of LongWord;
|
The per CPU utilization for the current second (Updated by Idle thread and reset by Scheduler interrupt) (Allocated by scheduler initialization) |
Initialization handlers
CPUInitHandler:TCPUInit;
|
FPUInitHandler:TFPUInit;
|
GPUInitHandler:TGPUInit;
|
MMUInitHandler:TMMUInit;
|
SMPInitHandler:TSMPInit;
|
CacheInitHandler:TCacheInit;
|
BoardInitHandler:TBoardInit;
|
MemoryInitHandler:TMemoryInit;
|
ClockInitHandler:TClockInit;
|
PowerInitHandler:TPowerInit;
|
MailboxInitHandler:TMailboxInit;
|
InterruptInitHandler:TInterruptInit;
|
PeripheralInitHandler:TPeripheralInit;
|
ParseBootTagsHandler:TParseBootTags;
|
ParseCommandLineHandler:TParseCommandLine;
|
ParseEnvironmentHandler:TParseEnvironment;
|
Blink/Output handlers
BootBlinkHandler:TBootBlink;
|
BootOutputHandler:TBootOutput;
|
LED handlers
PowerLEDEnableHandler:TPowerLEDEnable;
|
PowerLEDOnHandler:TPowerLEDOn;
|
PowerLEDOffHandler:TPowerLEDOff;
|
ActivityLEDEnableHandler:TActivityLEDEnable;
|
ActivityLEDOnHandler:TActivityLEDOn;
|
ActivityLEDOffHandler:TActivityLEDOff;
|
Counter handlers
CounterAvailableHandler:TCounterAvailable;
|
CounterReadHandler:TCounterRead;
|
CounterRead64Handler:TCounterRead64;
|
CounterWaitHandler:TCounterWait;
|
CounterEventHandler:TCounterEvent;
|
CounterCancelHandler:TCounterCancel;
|
CounterGetRateHandler:TCounterGetRate;
|
CounterSetRateHandler:TCounterSetRate;
|
CounterGetIntervalHandler:TCounterGetInterval;
|
CounterSetIntervalHandler:TCounterSetInterval;
|
Mailbox handlers
MailboxReceiveHandler:TMailboxReceive;
|
MailboxSendHandler:TMailboxSend;
|
MailboxCallHandler:TMailboxCall;
|
MailboxCallExHandler:TMailboxCallEx;
|
MailboxPropertyCallHandler:TMailboxPropertyCall;
|
MailboxPropertyCallExHandler:TMailboxPropertyCallEx;
|
Random handlers
RandomAvailableHandler:TRandomAvailable;
|
RandomSeedHandler:TRandomSeed;
|
RandomReadLongIntHandler:TRandomReadLongInt;
|
RandomReadInt64Handler:TRandomReadInt64;
|
RandomReadExtendedHandler:TRandomReadExtended;
|
Watchdog handlers
WatchdogAvailableHandler:TWatchdogAvailable;
|
WatchdogStartHandler:TWatchdogStart;
|
WatchdogStopHandler:TWatchdogStop;
|
WatchdogRefreshHandler:TWatchdogRefresh;
|
Interrupt request (IRQ) handlers
RequestIRQHandler:TRequestIRQ;
|
ReleaseIRQHandler:TReleaseIRQ;
|
RequestExIRQHandler:TRequestExIRQ;
|
ReleaseExIRQHandler:TReleaseExIRQ;
|
Fast interrupt request (FIQ) handlers
RequestFIQHandler:TRequestFIQ;
|
ReleaseFIQHandler:TReleaseFIQ;
|
RequestExFIQHandler:TRequestExFIQ;
|
ReleaseExFIQHandler:TReleaseExFIQ;
|
System call (software interrupt or SWI) handlers
SystemCallHandler:TSystemCall;
|
RegisterSystemCallHandler:TRegisterSystemCall;
|
DeregisterSystemCallHandler:TDeregisterSystemCall;
|
RegisterSystemCallExHandler:TRegisterSystemCallEx;
|
DeregisterSystemCallExHandler:TDeregisterSystemCallEx;
|
Interrupt entry handlers
GetInterruptCountHandler:TGetInterruptCount;
|
GetInterruptStartHandler:TGetInterruptStart;
|
GetInterruptEntryHandler:TGetInterruptEntry;
|
Local interrupt entry handlers
GetLocalInterruptCountHandler:TGetLocalInterruptCount;
|
GetLocalInterruptStartHandler:TGetLocalInterruptStart;
|
GetLocalInterruptEntryHandler:TGetLocalInterruptEntry;
|
System call entry handlers
GetSystemCallCountHandler:TGetSystemCallCount;
|
GetSystemCallEntryHandler:TGetSystemCallEntry;
|
System handlers
SystemRestartHandler:TSystemRestart;
|
SystemShutdownHandler:TSystemShutdown;
|
SystemGetUptimeHandler:TSystemGetUptime;
|
SystemGetCommandLineHandler:TSystemGetCommandLine;
|
SystemGetEnvironmentHandler:TSystemGetEnvironment;
|
CPU handlers
CPUGetArchHandler:TCPUGetArch;
|
CPUGetTypeHandler:TCPUGetType;
|
CPUGetBootHandler:TCPUGetBoot;
|
CPUGetMaskHandler:TCPUGetMask;
|
CPUGetCountHandler:TCPUGetCount;
|
CPUGetModeHandler:TCPUGetMode;
|
CPUGetStateHandler:TCPUGetState;
|
CPUGetCurrentHandler:TCPUGetCurrent;
|
CPUGetMemoryHandler:TCPUGetMemory;
|
CPUGetPercentageHandler:TCPUGetPercentage;
|
CPUGetUtilizationHandler:TCPUGetUtilization;
|
CPUGetModelHandler:TCPUGetModel;
|
CPUGetRevisionHandler:TCPUGetRevision;
|
CPUGetDescriptionHandler:TCPUGetDescription;
|
FPU handlers
FPUGetTypeHandler:TFPUGetType;
|
FPUGetStateHandler:TFPUGetState;
|
GPU handlers
GPUGetTypeHandler:TGPUGetType;
|
GPUGetStateHandler:TGPUGetState;
|
GPUGetMemoryHandler:TGPUGetMemory;
|
Cache handlers
L1CacheGetTypeHandler:TL1CacheGetType;
|
L1DataCacheGetSizeHandler:TL1DataCacheGetSize;
|
L1DataCacheGetLineSizeHandler:TL1DataCacheGetLineSize;
|
L1InstructionCacheGetSizeHandler:TL1InstructionCacheGetSize;
|
L1InstructionCacheGetLineSizeHandler:TL1InstructionCacheGetLineSize;
|
L2CacheGetTypeHandler:TL2CacheGetType;
|
L2CacheGetSizeHandler:TL2CacheGetSize;
|
L2CacheGetLineSizeHandler:TL2CacheGetLineSize;
|
Board handlers
BoardGetTypeHandler:TBoardGetType;
|
BoardGetModelHandler:TBoardGetModel;
|
BoardGetSerialHandler:TBoardGetSerial;
|
BoardGetRevisionHandler:TBoardGetRevision;
|
BoardGetMACAddressHandler:TBoardGetMACAddress;
|
Firmware handlers
FirmwareGetRevisionHandler:TFirmwareGetRevision;
|
Machine handlers
MachineGetTypeHandler:TMachineGetType;
|
Memory handlers
MemoryGetBaseHandler:TMemoryGetBase;
|
MemoryGetSizeHandler:TMemoryGetSize;
|
MemoryGetPageSizeHandler:TMemoryGetPageSize;
|
MemoryGetLargePageSizeHandler:TMemoryGetLargePageSize;
|
Power handlers
PowerGetWaitHandler:TPowerGetWait;
|
PowerGetStateHandler:TPowerGetState;
|
PowerSetStateHandler:TPowerSetState;
|
Clock handlers
ClockGetCountHandler:TClockGetCount;
|
ClockGetTotalHandler:TClockGetTotal;
|
ClockUpdateOffsetHandler:TClockUpdateOffset;
|
ClockGetRateHandler:TClockGetRate;
|
ClockSetRateHandler:TClockSetRate;
|
ClockGetStateHandler:TClockGetState;
|
ClockSetStateHandler:TClockSetState;
|
ClockGetMinRateHandler:TClockGetMinRate;
|
ClockGetMaxRateHandler:TClockGetMaxRate;
|
Turbo handlers
TurboGetStateHandler:TTurboGetState;
|
TurboSetStateHandler:TTurboSetState;
|
Voltage handlers
VoltageGetValueHandler:TVoltageGetValue;
|
VoltageSetValueHandler:TVoltageSetValue;
|
VoltageGetMinValueHandler:TVoltageGetMinValue;
|
VoltageGetMaxValueHandler:TVoltageGetMaxValue;
|
Temperature handlers
TemperatureGetCurrentHandler:TTemperatureGetCurrent;
|
TemperatureGetMaximumHandler:TTemperatureGetMaximum;
|
GPU memory handlers
GPUMemoryAllocateHandler:TGPUMemoryAllocate;
|
GPUMemoryReleaseHandler:TGPUMemoryRelease;
|
GPUMemoryLockHandler:TGPUMemoryLock;
|
GPUMemoryUnlockHandler:TGPUMemoryUnlock;
|
GPU misc handlers
GPUExecuteCodeHandler:TGPUExecuteCode;
|
DispmanxHandleGetHandler:TDispmanxHandleGet;
|
EDIDBlockGetHandler:TEDIDBlockGet;
|
Framebuffer handlers
FramebufferAvailableHandler:TFramebufferAvailable;
|
FramebufferAllocateHandler:TFramebufferAllocate;
|
FramebufferReleaseHandler:TFramebufferRelease;
|
FramebufferSetStateHandler:TFramebufferSetState;
|
FramebufferGetDimensionsHandler:TFramebufferGetDimensions;
|
FramebufferGetPhysicalHandler:TFramebufferGetPhysical;
|
FramebufferSetPhysicalHandler:TFramebufferSetPhysical;
|
FramebufferTestPhysicalHandler:TFramebufferTestPhysical;
|
FramebufferGetVirtualHandler:TFramebufferGetVirtual;
|
FramebufferSetVirtualHandler:TFramebufferSetVirtual;
|
FramebufferTestVirtualHandler:TFramebufferTestVirtual;
|
FramebufferGetDepthHandler:TFramebufferGetDepth;
|
FramebufferSetDepthHandler:TFramebufferSetDepth;
|
FramebufferTestDepthHandler:TFramebufferTestDepth;
|
FramebufferGetPixelOrderHandler:TFramebufferGetPixelOrder;
|
FramebufferSetPixelOrderHandler:TFramebufferSetPixelOrder;
|
FramebufferTestPixelOrderHandler:TFramebufferTestPixelOrder;
|
FramebufferGetAlphaModeHandler:TFramebufferGetAlphaMode;
|
FramebufferSetAlphaModeHandler:TFramebufferSetAlphaMode;
|
FramebufferTestAlphaModeHandler:TFramebufferTestAlphaMode;
|
FramebufferGetPitchHandler:TFramebufferGetPitch;
|
FramebufferGetOffsetHandler:TFramebufferGetOffset;
|
FramebufferSetOffsetHandler:TFramebufferSetOffset;
|
FramebufferTestOffsetHandler:TFramebufferTestOffset;
|
FramebufferGetOverscanHandler:TFramebufferGetOverscan;
|
FramebufferSetOverscanHandler:TFramebufferSetOverscan;
|
FramebufferTestOverscanHandler:TFramebufferTestOverscan;
|
FramebufferGetPaletteHandler:TFramebufferGetPalette;
|
FramebufferSetPaletteHandler:TFramebufferSetPalette;
|
FramebufferTestPaletteHandler:TFramebufferTestPalette;
|
FramebufferTestVsyncHandler:TFramebufferTestVsync;
|
FramebufferSetVsyncHandler:TFramebufferSetVsync;
|
FramebufferSetBacklightHandler:TFramebufferSetBacklight;
|
Cursor handlers
CursorSetDefaultHandler:TCursorSetDefault;
|
CursorSetInfoHandler:TCursorSetInfo;
|
CursorSetStateHandler:TCursorSetState;
|
Touch handlers
TouchGetBufferHandler:TTouchGetBuffer;
|
DMA handlers
DMAAvailableHandler:TDMAAvailable;
|
DMATransferHandler:TDMATransfer;
|
DMAFillMemoryHandler:TDMAFillMemory;
|
DMACopyMemoryHandler:TDMACopyMemory;
|
DMAReadPeripheralHandler:TDMAReadPeripheral;
|
DMAWritePeripheralHandler:TDMAWritePeripheral;
|
DMAAllocateBufferHandler:TDMAAllocateBuffer;
|
DMAAllocateBufferExHandler:TDMAAllocateBufferEx;
|
DMAReleaseBufferHandler:TDMAReleaseBuffer;
|
DMAGetChannelsHandler:TDMAGetChannels;
|
GPIO handlers
GPIOAvailableHandler:TGPIOAvailable;
|
GPIOReadHandler:TGPIORead;
|
GPIOWriteHandler:TGPIOWrite;
|
GPIOInputGetHandler:TGPIOInputGet;
|
GPIOInputWaitHandler:TGPIOInputWait;
|
GPIOInputEventHandler:TGPIOInputEvent;
|
GPIOOutputSetHandler:TGPIOOutputSet;
|
GPIOPullGetHandler:TGPIOPullGet;
|
GPIOPullSelectHandler:TGPIOPullSelect;
|
GPIOFunctionGetHandler:TGPIOFunctionGet;
|
GPIOFunctionSelectHandler:TGPIOFunctionSelect;
|
Virtual GPIO handlers
VirtualGPIOInputGetHandler:TVirtualGPIOInputGet;
|
VirtualGPIOOutputSetHandler:TVirtualGPIOOutputSet;
|
VirtualGPIOFunctionSelectHandler:TVirtualGPIOFunctionSelect;
|
SPI handlers
SPIAvailableHandler:TSPIAvailable;
|
SPIStartHandler:TSPIStart;
|
SPIStopHandler:TSPIStop;
|
SPIReadHandler:TSPIRead;
|
SPIWriteHandler:TSPIWrite;
|
SPIWriteReadHandler:TSPIWriteRead;
|
SPIGetModeHandler:TSPIGetMode;
|
SPISetModeHandler:TSPISetMode;
|
SPIGetClockRateHandler:TSPIGetClockRate;
|
SPISetClockRateHandler:TSPISetClockRate;
|
SPIGetClockPhaseHandler:TSPIGetClockPhase;
|
SPISetClockPhaseHandler:TSPISetClockPhase;
|
SPIGetClockPolarityHandler:TSPIGetClockPolarity;
|
SPISetClockPolarityHandler:TSPISetClockPolarity;
|
SPIGetSelectPolarityHandler:TSPIGetSelectPolarity;
|
SPISetSelectPolarityHandler:TSPISetSelectPolarity;
|
I2C handlers
I2CAvailableHandler:TI2CAvailable;
|
I2CStartHandler:TI2CStart;
|
I2CStopHandler:TI2CStop;
|
I2CReadHandler:TI2CRead;
|
I2CWriteHandler:TI2CWrite;
|
I2CWriteReadHandler:TI2CWriteRead;
|
I2CWriteWriteHandler:TI2CWriteWrite;
|
I2CGetRateHandler:TI2CGetRate;
|
I2CSetRateHandler:TI2CSetRate;
|
I2CGetAddressHandler:TI2CGetAddress;
|
I2CSetAddressHandler:TI2CSetAddress;
|
PWM handlers
PWMAvailableHandler:TPWMAvailable;
|
PWMStartHandler:TPWMStart;
|
PWMStopHandler:TPWMStop;
|
PWMWriteHandler:TPWMWrite;
|
PWMSetModeHandler:TPWMSetMode;
|
PWMSetRangeHandler:TPWMSetRange;
|
PWMSetFrequencyHandler:TPWMSetFrequency;
|
PWMConfigureHandler:TPWMConfigure;
|
RTC handlers
RTCAvailableHandler:TRTCAvailable;
|
RTCGetTimeHandler:TRTCGetTime;
|
RTCSetTimeHandler:TRTCSetTime;
|
Serial handlers
SerialAvailableHandler:TSerialAvailable;
|
SerialOpenHandler:TSerialOpen;
|
SerialCloseHandler:TSerialClose;
|
SerialReadHandler:TSerialRead;
|
SerialWriteHandler:TSerialWrite;
|
Peripheral handlers
PeripheralGetBaseHandler:TPeripheralGetBase;
|
PeripheralGetSizeHandler:TPeripheralGetSize;
|
PeripheralReadHandler:TPeripheralRead;
|
PeripheralWriteHandler:TPeripheralWrite;
|
LocalPeripheralGetBaseHandler:TLocalPeripheralGetBase;
|
LocalPeripheralGetSizeHandler:TLocalPeripheralGetSize;
|
GetSP/PC handlers
GetSPHandler:TGetSP;
|
GetPCHandler:TGetPC;
|
Enable/Disable/Save/RestoreIRQ/FIQ handlers
GetIRQHandler:TGetIRQ;
|
EnableIRQHandler:TEnableIRQ;
|
DisableIRQHandler:TDisableIRQ;
|
SaveIRQHandler:TSaveIRQ;
|
RestoreIRQHandler:TRestoreIRQ;
|
GetFIQHandler:TGetFIQ;
|
EnableFIQHandler:TEnableFIQ;
|
DisableFIQHandler:TDisableFIQ;
|
SaveFIQHandler:TSaveFIQ;
|
RestoreFIQHandler:TRestoreFIQ;
|
EnableIRQFIQHandler:TEnableIRQFIQ;
|
DisableIRQFIQHandler:TDisableIRQFIQ;
|
SaveIRQFIQHandler:TSaveIRQFIQ;
|
RestoreIRQFIQHandler:TRestoreIRQFIQ;
|
GetAbortHandler:TGetAbort;
|
EnableAbortHandler:TEnableAbort;
|
DisableAbortHandler:TDisableAbort;
|
SaveAbortHandler:TSaveAbort;
|
RestoreAbortHandler:TRestoreAbort;
|
Halt/Pause handlers
HaltHandler:THalt;
|
PauseHandler:TPause;
|
HaltThread handlers
HaltThreadHandler:THaltThread;
|
SendEvent/WaitForEvent/Interrupt handlers
SendEventHandler:TSendEvent;
|
WaitForEventHandler:TWaitForEvent;
|
WaitForInterruptHandler:TWaitForInterrupt;
|
Barrier handlers
ReadMemoryBarrierHandler:TReadMemoryBarrier;
|
WriteMemoryBarrierHandler:TWriteMemoryBarrier;
|
DataMemoryBarrierHandler:TDataMemoryBarrier;
|
DataSynchronizationBarrierHandler:TDataSynchronizationBarrier;
|
InstructionMemoryBarrierHandler:TInstructionMemoryBarrier;
|
TLB handlers
InvalidateTLBHandler:TInvalidateTLB;
|
InvalidateDataTLBHandler:TInvalidateDataTLB;
|
InvalidateInstructionTLBHandler:TInvalidateInstructionTLB;
|
Cache handlers
InvalidateCacheHandler:TInvalidateCache;
|
CleanDataCacheHandler:TCleanDataCache;
|
InvalidateDataCacheHandler:TInvalidateDataCache;
|
CleanAndInvalidateDataCacheHandler:TCleanAndInvalidateDataCache;
|
InvalidateInstructionCacheHandler:TInvalidateInstructionCache;
|
CleanDataCacheRangeHandler:TCleanDataCacheRange;
|
InvalidateDataCacheRangeHandler:TInvalidateDataCacheRange;
|
CleanAndInvalidateDataCacheRangeHandler:TCleanAndInvalidateDataCacheRange;
|
InvalidateInstructionCacheRangeHandler:TInvalidateInstructionCacheRange;
|
Prefetch buffer handlers
FlushPrefetchBufferHandler:TFlushPrefetchBuffer;
|
Branch target cache handlers
FlushBranchTargetCacheHandler:TFlushBranchTargetCache;
|
ContextSwitch handlers
ContextSwitchHandler:TContextSwitch;
|
ContextSwitchIRQHandler:TContextSwitchIRQ;
|
ContextSwitchFIQHandler:TContextSwitchFIQ;
|
ContextSwitchSWIHandler:TContextSwitchSWI;
|
And/Xor/Or/Increment/Decrement/Exchange handlers
InterlockedOrHandler:TInterlockedOr;
|
InterlockedXorHandler:TInterlockedXor;
|
InterlockedAndHandler:TInterlockedAnd;
|
InterlockedDecrementHandler:TInterlockedDecrement;
|
InterlockedIncrementHandler:TInterlockedIncrement;
|
InterlockedExchangeHandler:TInterlockedExchange;
|
InterlockedAddExchangeHandler:TInterlockedAddExchange;
|
InterlockedCompareExchangeHandler:TInterlockedCompareExchange;
|
PageTable handlers
PageTableGetBaseHandler:TPageTableGetBase;
|
PageTableGetSizeHandler:TPageTableGetSize;
|
PageTableGetEntryHandler:TPageTableGetEntry;
|
PageTableSetEntryHandler:TPageTableSetEntry;
|
PageTables handlers
PageTablesGetAddressHandler:TPageTablesGetAddress;
|
PageTablesGetLengthHandler:TPageTablesGetLength;
|
PageTablesGetCountHandler:TPageTablesGetCount;
|
PageTablesGetShiftHandler:TPageTablesGetShift;
|
PageTablesGetNextHandler:TPageTablesGetNext;
|
PageTablesGetUsedHandler:TPageTablesGetUsed;
|
PageTablesGetFreeHandler:TPageTablesGetFree;
|
VectorTable handlers
VectorTableGetBaseHandler:TVectorTableGetBase;
|
VectorTableGetSizeHandler:TVectorTableGetSize;
|
VectorTableGetCountHandler:TVectorTableGetCount;
|
VectorTableGetEntryHandler:TVectorTableGetEntry;
|
VectorTableSetEntryHandler:TVectorTableSetEntry;
|
FirstBitSet handler
FirstBitSetHandler:TFirstBitSet;
|
CountLeadingZeros handlers
CountLeadingZerosHandler:TCountLeadingZeros;
|
Console handlers
ConsoleGetKeyHandler:TConsoleGetKey;
|
ConsolePeekKeyHandler:TConsolePeekKey;
|
ConsoleWriteCharHandler:TConsoleWriteChar;
|
ConsoleReadCharHandler:TConsoleReadChar;
|
ConsoleReadWideCharHandler:TConsoleReadWideChar;
|
ConsoleHideMouseHandler:TConsoleHideMouse;
|
ConsoleShowMouseHandler:TConsoleShowMouse;
|
ConsoleReadMouseHandler:TConsoleReadMouse;
|
CodePage handlers
CodePageToWideCharHandler:TCodePageToWideChar;
|
WideCharToCodePageHandler:TWideCharToCodePage;
|
Name handlers
HostGetNameHandler:THostGetName;
|
HostSetNameHandler:THostSetName;
|
HostGetDomainHandler:THostGetDomain;
|
HostSetDomainHandler:THostSetDomain;
|
Logging handlers
LoggingOutputHandler:TLoggingOutput;
|
LoggingOutputExHandler:TLoggingOutputEx;
|
Function declarations
Initialization functions
procedure PlatformInit;
procedure CPUInit;
procedure FPUInit;
procedure SMPInit;
procedure CacheInit;
procedure MemoryInit;
procedure ParseBootTags;
procedure ParseCommandLine;
procedure ParseEnvironment;
Boot functions
procedure BootOutput(Value:LongWord); inline;
LED functions
procedure ActivityLEDEnable; inline;
procedure ActivityLEDOff; inline;
Counter functions (Timer device)
function CounterAvailable:Boolean; inline;
function CounterRead:LongWord; inline;
function CounterRead64:Int64; inline;
function CounterWait:LongWord; inline;
function CounterEvent(Callback:TCounterCallback; Data:Pointer):LongWord; inline;
function CounterCancel:LongWord; inline;
function CounterGetRate:LongWord; inline;
function CounterSetRate(Rate:LongWord):LongWord; inline;
function CounterGetInterval:LongWord; inline;
function CounterSetInterval(Interval:LongWord):LongWord; inline;
Mailbox functions
function MailboxReceive(Mailbox,Channel:LongWord):LongWord; inline;
procedure MailboxSend(Mailbox,Channel,Data:LongWord); inline;
function MailboxCall(Mailbox,Channel,Data:LongWord; var Response:LongWord):LongWord; inline;
function MailboxCallEx(Mailbox,Channel,Data:LongWord; var Response:LongWord; Timeout:LongWord):LongWord; inline;
function MailboxPropertyCall(Mailbox,Channel:LongWord; Data:Pointer; var Response:LongWord):LongWord; inline;
function MailboxPropertyCallEx(Mailbox,Channel:LongWord; Data:Pointer; var Response:LongWord; Timeout:LongWord):LongWord; inline;
Random number functions
function RandomAvailable:Boolean; inline;
Watchdog Timer Functions
function WatchdogAvailable:Boolean; inline;
function WatchdogStart(Milliseconds:LongWord):LongWord; inline;
function WatchdogRefresh(Milliseconds:LongWord):LongWord; inline;
Interrupt request (IRQ) functions
function RequestIRQ(CPUID,Number:LongWord; Handler:TInterruptHandler; Parameter:Pointer):LongWord; inline;
function ReleaseIRQ(CPUID,Number:LongWord; Handler:TInterruptHandler; Parameter:Pointer):LongWord; inline;
function RequestExIRQ(CPUID,Number:LongWord; Handler:TInterruptHandler; HandlerEx:TInterruptExHandler; Parameter:Pointer):LongWord; inline;
function ReleaseExIRQ(CPUID,Number:LongWord; Handler:TInterruptHandler; HandlerEx:TInterruptExHandler; Parameter:Pointer):LongWord; inline;
Fast interrupt request (FIQ) functions
function RequestFIQ(CPUID,Number:LongWord; Handler:TInterruptHandler; Parameter:Pointer):LongWord; inline;
function ReleaseFIQ(CPUID,Number:LongWord; Handler:TInterruptHandler; Parameter:Pointer):LongWord; inline;
function RequestExFIQ(CPUID,Number:LongWord; Handler:TInterruptHandler; HandlerEx:TInterruptExHandler; Parameter:Pointer):LongWord; inline;
function ReleaseExFIQ(CPUID,Number:LongWord; Handler:TInterruptHandler; HandlerEx:TInterruptExHandler; Parameter:Pointer):LongWord; inline;
System call (Software Interrupt or SWI) functions
procedure SystemCall(Number:LongWord; Param1,Param2,Param3:PtrUInt); inline;
function RegisterSystemCall(Number:LongWord; Handler:TSystemCallHandler):LongWord; inline;
function DeregisterSystemCall(Number:LongWord; Handler:TSystemCallHandler):LongWord; inline;
function RegisterSystemCallEx(CPUID,Number:LongWord; Handler:TSystemCallHandler; HandlerEx:TSystemCallExHandler):LongWord; inline;
function DeregisterSystemCallEx(CPUID,Number:LongWord; Handler:TSystemCallHandler; HandlerEx:TSystemCallExHandler):LongWord; inline;
Interrupt entry functions
function GetInterruptCount:LongWord; inline;
function GetInterruptStart:LongWord; inline;
function GetInterruptEntry(Number:LongWord):TInterruptEntry; inline;
Local interrupt entry functions
function GetLocalInterruptCount:LongWord; inline;
function GetLocalInterruptStart:LongWord; inline;
function GetLocalInterruptEntry(CPUID,Number:LongWord):TInterruptEntry; inline;
System call entry functions
function GetSystemCallCount:LongWord; inline;
function GetSystemCallEntry(Number:LongWord):TSystemCallEntry; inline;
System functions
function SystemGetUptime:Int64; inline;
CPU Functions
function CPUGetMemory(var Address:PtrUInt; var Length:LongWord):LongWord; inline;
function CPUGetPercentage(CPUID:LongWord):Double; inline;
function CPUGetUtilization(CPUID:LongWord):LongWord; inline;
function CPUGetRevision:LongWord; inline;
function CPUGetDescription:String; inline;
FPU functions
GPU functions
function GPUGetMemory(var Address:PtrUInt; var Length:LongWord):LongWord; inline;
Cache functions
function L1CacheGetType:LongWord; inline;
function L1DataCacheGetSize:LongWord; inline;
function L1DataCacheGetLineSize:LongWord; inline;
function L1InstructionCacheGetSize:LongWord; inline;
function L1InstructionCacheGetLineSize:LongWord; inline;
function L2CacheGetType:LongWord; inline;
function L2CacheGetSize:LongWord; inline;
function L2CacheGetLineSize:LongWord; inline;
Board functions
function BoardGetRevision:LongWord; inline;
function BoardGetMACAddress:String; inline;
Firmware functions
function FirmwareGetRevision:LongWord; inline;
Machine functions
Memory functions
function MemoryGetPageSize:LongWord; inline;
function MemoryGetLargePageSize:LongWord; inline;
Power functions
function PowerGetWait(PowerId:LongWord):LongWord; inline;
function PowerGetState(PowerId:LongWord):LongWord; inline;
function PowerSetState(PowerId,State:LongWord; Wait:Boolean):LongWord; inline;
Clock functions
function ClockGetTime:Int64;
function ClockSetTime(const Time:Int64; RTC:Boolean):Int64;
function ClockGetCount:LongWord; inline;
function ClockUpdateOffset:LongWord; inline;
function ClockGetRate(ClockId:LongWord):LongWord; inline;
function ClockSetRate(ClockId,Rate:LongWord; Turbo:Boolean):LongWord; inline;
function ClockGetState(ClockId:LongWord):LongWord; inline;
function ClockSetState(ClockId,State:LongWord):LongWord; inline;
function ClockGetMinRate(ClockId:LongWord):LongWord; inline;
function ClockGetMaxRate(ClockId:LongWord):LongWord; inline;
Turbo functions
function TurboGetState(TurboId:LongWord):LongWord; inline;
function TurboSetState(TurboId,State:LongWord):LongWord; inline;
Voltage functions
function VoltageGetValue(VoltageId:LongWord):LongWord; inline;
function VoltageSetValue(VoltageId,Value:LongWord):LongWord; inline;
function VoltageGetMinValue(VoltageId:LongWord):LongWord; inline;
function VoltageGetMaxValue(VoltageId:LongWord):LongWord; inline;
Temperature functions
function TemperatureGetCurrent(TemperatureId:LongWord):LongWord; inline;
function TemperatureGetMaximum(TemperatureId:LongWord):LongWord; inline;
GPU memory functions
function GPUMemoryAllocate(Length,Alignment,Flags:LongWord):THandle; inline;
function GPUMemoryRelease(Handle:THandle):LongWord; inline;
function GPUMemoryLock(Handle:THandle):LongWord; inline;
function GPUMemoryUnlock(Handle:THandle):LongWord; inline;
GPU misc functions
function GPUExecuteCode(Address:Pointer; R0,R1,R2,R3,R4,R5:LongWord):LongWord; inline;
function DispmanxHandleGet(Resource:THandle):THandle; inline;
function EDIDBlockGet(Block:LongWord; Buffer:Pointer; Length:LongWord):LongWord; inline;
Framebuffer functions
function FramebufferAvailable:Boolean; inline;
function FramebufferAllocate(Alignment:LongWord; var Address,Length:LongWord):LongWord; inline;
function FramebufferSetState(State:LongWord):LongWord; inline;
function FramebufferGetDimensions(var Width,Height,Top,Bottom,Left,Right:LongWord):LongWord; inline;
function FramebufferGetPhysical(var Width,Height:LongWord):LongWord; inline;
function FramebufferSetPhysical(var Width,Height:LongWord):LongWord; inline;
function FramebufferTestPhysical(var Width,Height:LongWord):LongWord; inline;
function FramebufferGetVirtual(var Width,Height:LongWord):LongWord; inline;
function FramebufferSetVirtual(var Width,Height:LongWord):LongWord; inline;
function FramebufferTestVirtual(var Width,Height:LongWord):LongWord; inline;
function FramebufferGetDepth(var Depth:LongWord):LongWord; inline;
function FramebufferSetDepth(var Depth:LongWord):LongWord; inline;
function FramebufferTestDepth(var Depth:LongWord):LongWord; inline;
function FramebufferGetPixelOrder(var Order:LongWord):LongWord; inline;
function FramebufferSetPixelOrder(var Order:LongWord):LongWord; inline;
function FramebufferTestPixelOrder(var Order:LongWord):LongWord; inline;
function FramebufferGetAlphaMode(var Mode:LongWord):LongWord; inline;
function FramebufferSetAlphaMode(var Mode:LongWord):LongWord; inline;
function FramebufferTestAlphaMode(var Mode:LongWord):LongWord; inline;
function FramebufferGetPitch:LongWord; inline;
function FramebufferGetOffset(var X,Y:LongWord):LongWord; inline;
function FramebufferSetOffset(var X,Y:LongWord):LongWord; inline;
function FramebufferTestOffset(var X,Y:LongWord):LongWord; inline;
function FramebufferGetOverscan(var Top,Bottom,Left,Right:LongWord):LongWord; inline;
function FramebufferSetOverscan(var Top,Bottom,Left,Right:LongWord):LongWord; inline;
function FramebufferTestOverscan(var Top,Bottom,Left,Right:LongWord):LongWord; inline;
function FramebufferGetPalette(Buffer:Pointer; Length:LongWord):LongWord; inline;
function FramebufferSetPalette(Start,Count:LongWord; Buffer:Pointer; Length:LongWord):LongWord; inline;
function FramebufferTestPalette(Start,Count:LongWord; Buffer:Pointer; Length:LongWord):LongWord; inline;
function FramebufferTestVsync:LongWord; inline;
function FramebufferSetVsync:LongWord; inline;
function FramebufferSetBacklight(Brightness:LongWord):LongWord; inline;
Touch functions
function TouchGetBuffer(var Address:LongWord):LongWord; inline;
Cursor functions
function CursorSetDefault:LongWord; inline;
function CursorSetInfo(Width,Height,HotspotX,HotspotY:LongWord; Pixels:Pointer; Length:LongWord):LongWord; inline;
function CursorSetState(Enabled:Boolean; X,Y:LongWord; Relative:Boolean):LongWord; inline;
DMA functions
function DMATransfer(Data:PDMAData; Direction,Peripheral:LongWord):LongWord; inline;
function DMAFillMemory(Dest:Pointer; Size:LongWord; Value:Byte):LongWord; inline;
function DMACopyMemory(Source,Dest:Pointer; Size:LongWord):LongWord; inline;
function DMAReadPeripheral(Address,Dest:Pointer; Size,Peripheral:LongWord):LongWord; inline;
function DMAWritePeripheral(Source,Address:Pointer; Size,Peripheral:LongWord):LongWord; inline;
function DMAAllocateBuffer(Size:LongWord):Pointer; inline;
function DMAAllocateBufferEx(var Size:LongWord):Pointer; inline;
function DMAReleaseBuffer(Buffer:Pointer):LongWord; inline;
function DMAGetChannels:LongWord; inline;
GPIO functions
function GPIORead(Reg:LongWord):LongWord; inline;
procedure GPIOWrite(Reg,Value:LongWord); inline;
function GPIOInputGet(Pin:LongWord):LongWord; inline;
function GPIOInputWait(Pin,Trigger,Timeout:LongWord):LongWord; inline;
function GPIOInputEvent(Pin,Trigger,Timeout:LongWord; Callback:TGPIOCallback; Data:Pointer):LongWord; inline;
function GPIOOutputSet(Pin,Level:LongWord):LongWord; inline;
function GPIOPullGet(Pin:LongWord):LongWord; inline;
function GPIOPullSelect(Pin,Mode:LongWord):LongWord; inline;
function GPIOFunctionGet(Pin:LongWord):LongWord; inline;
function GPIOFunctionSelect(Pin,Mode:LongWord):LongWord; inline;
Virtual GPIO functions
function VirtualGPIOInputGet(Pin:LongWord):LongWord; inline;
function VirtualGPIOOutputSet(Pin,Level:LongWord):LongWord; inline;
function VirtualGPIOFunctionSelect(Pin,Mode:LongWord):LongWord; inline;
SPI functions
function SPIStart(Mode,ClockRate,ClockPhase,ClockPolarity:LongWord):LongWord; inline;
function SPIStop:LongWord; inline;
function SPIRead(ChipSelect:Word; Dest:Pointer; Size:LongWord; var Count:LongWord):LongWord; inline;
function SPIWrite(ChipSelect:Word; Source:Pointer; Size:LongWord; var Count:LongWord):LongWord; inline;
function SPIWriteRead(ChipSelect:Word; Source,Dest:Pointer; Size:LongWord; var Count:LongWord):LongWord; inline;
function SPIGetMode:LongWord; inline;
function SPISetMode(Mode:LongWord):LongWord; inline;
function SPIGetClockRate(ChipSelect:Word):LongWord; inline;
function SPISetClockRate(ChipSelect:Word;ClockRate:LongWord):LongWord; inline;
function SPIGetClockPhase:LongWord; inline;
function SPISetClockPhase(ClockPhase:LongWord):LongWord; inline;
function SPIGetClockPolarity:LongWord; inline;
function SPISetClockPolarity(ClockPolarity:LongWord):LongWord; inline;
function SPIGetSelectPolarity(ChipSelect:Word):LongWord; inline;
function SPISetSelectPolarity(ChipSelect:Word; SelectPolarity:LongWord):LongWord; inline;
I2C functions
function I2CStart(Rate:LongWord):LongWord; inline;
function I2CStop:LongWord; inline;
function I2CRead(Address:Word; Buffer:Pointer; Size:LongWord; var Count:LongWord):LongWord; inline;
function I2CWrite(Address:Word; Buffer:Pointer; Size:LongWord; var Count:LongWord):LongWord; inline;
function I2CWriteRead(Address:Word; Initial:Pointer; Len:LongWord; Data:Pointer; Size:LongWord; var Count:LongWord):LongWord; inline;
function I2CWriteWrite(Address:Word; Initial:Pointer; Len:LongWord; Data:Pointer; Size:LongWord; var Count:LongWord):LongWord; inline;
function I2CGetRate:LongWord; inline;
function I2CSetRate(Rate:LongWord):LongWord; inline;
function I2CGetAddress:Word; inline;
function I2CSetAddress(Address:Word):LongWord; inline;
PWM functions
function PWMWrite(Value:LongWord):LongWord; inline;
function PWMSetMode(Mode:LongWord):LongWord; inline;
function PWMSetRange(Range:LongWord):LongWord; inline;
function PWMSetFrequency(Frequency:LongWord):LongWord; inline;
function PWMConfigure(DutyNS,PeriodNS:LongWord):LongWord; inline;
RTC functions
function RTCAvailable:Boolean; inline;
function RTCGetTime:Int64; inline;
function RTCSetTime(const Time:Int64):Int64; inline;
Serial functions
function SerialAvailable:Boolean; inline;
function SerialOpen(BaudRate,DataBits,StopBits,Parity,FlowControl,ReceiveDepth,TransmitDepth:LongWord):LongWord; inline;
function SerialClose:LongWord; inline;
function SerialRead(Buffer:Pointer; Size:LongWord; var Count:LongWord):LongWord; inline;
function SerialWrite(Buffer:Pointer; Size:LongWord; var Count:LongWord):LongWord; inline;
Peripheral functions
function PeripheralGetBase:PtrUInt; inline;
function PeripheralGetSize:LongWord; inline;
function PeripheralRead(Base,Reg:LongWord):LongWord; inline;
procedure PeripheralWrite(Base,Reg,Value:LongWord); inline;
function LocalPeripheralGetBase:PtrUInt; inline;
function LocalPeripheralGetSize:LongWord; inline;
System functions
function SaveIRQ:TIRQMask; inline;
function RestoreIRQ(IRQMask:TIRQMask):TIRQMask; inline;
function SaveFIQ:TFIQMask; inline;
function RestoreFIQ(FIQMask:TFIQMask):TFIQMask; inline;
procedure EnableIRQFIQ; inline;
procedure DisableIRQFIQ; inline;
function SaveIRQFIQ:TIRQFIQMask; inline;
function RestoreIRQFIQ(IRQFIQMask:TIRQFIQMask):TIRQFIQMask; inline;
function SaveAbort:TAbortMask; inline;
function RestoreAbort(AbortMask:TAbortMask):TAbortMask; inline;
procedure Pause; inline;
function HaltThread(ExitCode:LongWord):LongWord; inline;
procedure SendEvent; inline;
procedure WaitForInterrupt; inline;
procedure ReadMemoryBarrier; inline;
procedure WriteMemoryBarrier; inline;
procedure DataMemoryBarrier; inline;
procedure DataSynchronizationBarrier; inline;
procedure InstructionMemoryBarrier; inline;
procedure InvalidateTLB; inline;
procedure InvalidateDataTLB; inline;
procedure InvalidateInstructionTLB; inline;
procedure InvalidateCache; inline;
procedure CleanDataCache; inline;
procedure InvalidateDataCache; inline;
procedure CleanAndInvalidateDataCache; inline;
procedure InvalidateInstructionCache; inline;
procedure CleanDataCacheRange(Address,Size:LongWord); inline;
procedure InvalidateDataCacheRange(Address,Size:LongWord); inline;
procedure CleanAndInvalidateDataCacheRange(Address,Size:LongWord); inline;
procedure InvalidateInstructionCacheRange(Address,Size:LongWord); inline;
procedure FlushPrefetchBuffer; inline;
procedure FlushBranchTargetCache; inline;
procedure ContextSwitch(OldStack,NewStack:Pointer; NewThread:TThreadHandle); inline;
procedure ContextSwitchIRQ(OldStack,NewStack:Pointer; NewThread:TThreadHandle); inline;
procedure ContextSwitchFIQ(OldStack,NewStack:Pointer; NewThread:TThreadHandle); inline;
procedure ContextSwitchSWI(OldStack,NewStack:Pointer; NewThread:TThreadHandle); inline;
function InterlockedOr(var Target:LongInt;Value:LongInt):LongInt; inline;
function InterlockedXor(var Target:LongInt; Value:LongInt):LongInt; inline;
function InterlockedAnd(var Target:LongInt; Value:LongInt):LongInt; inline;
function InterlockedDecrement(var Target:LongInt):LongInt; inline;
function InterlockedIncrement(var Target:LongInt):LongInt; inline;
function InterlockedExchange(var Target:LongInt; Source:LongInt):LongInt; inline;
function InterlockedAddExchange(var Target:LongInt; Source:LongInt):LongInt; inline;
function InterlockedCompareExchange(var Target:LongInt; Source,Compare:LongInt):LongInt; inline;
function PageTableGetBase:PtrUInt; inline;
function PageTableGetSize:LongWord; inline;
function PageTableGetEntry(Address:PtrUInt):TPageTableEntry; inline;
function PageTableSetEntry(const Entry:TPageTableEntry):LongWord; inline;
function PageTablesGetAddress:PtrUInt; inline;
function PageTablesGetLength:LongWord; inline;
function PageTablesGetCount:LongWord; inline;
function PageTablesGetShift:LongWord; inline;
function PageTablesGetNext:PtrUInt; inline;
function PageTablesGetUsed:LongWord; inline;
function PageTablesGetFree:LongWord; inline;
function VectorTableGetBase:PtrUInt; inline;
function VectorTableGetSize:LongWord; inline;
function VectorTableGetCount:LongWord; inline;
function VectorTableGetEntry(Number:LongWord):PtrUInt; inline;
function VectorTableSetEntry(Number:LongWord; Address:PtrUInt):LongWord; inline;
Exception functions
procedure HardwareException(AType:LongWord; Address,Frame:Pointer);
procedure UnhandledException(Obj:TObject; Addr:CodePointer; FrameCount:LongInt; Frames:PCodePointer); {[public,alias:'FPC_BREAK_UNHANDLED_EXCEPTION'];}
Text IO functions
procedure TextIOOpen(var F:Text; AWrite:TTextIOWriteChar; ARead:TTextIOReadChar; AMode:LongInt; AUserData:Pointer);
function TextIOReadData(ARead:TTextIOReadChar; AUserData:Pointer; ABuffer:PChar; ACount:LongInt):LongInt;
Console functions
function ConsoleGetKey(var ACh:Char; AUserData:Pointer):Boolean; inline;
function ConsolePeekKey(var ACh:Char; AUserData:Pointer):Boolean; inline;
function ConsoleWriteChar(ACh:Char; AUserData:Pointer):Boolean; inline;
function ConsoleReadChar(var ACh:Char; AUserData:Pointer):Boolean; inline;
function ConsoleReadWideChar(var ACh:WideChar; AUserData:Pointer):Boolean; inline;
function ConsoleHideMouse(AUserData:Pointer):Boolean; inline;
function ConsoleShowMouse(X,Y:LongWord; AUserData:Pointer):Boolean; inline;
function ConsoleReadMouse(var X,Y,Buttons:LongWord; AUserData:Pointer):Boolean; inline;
CodePage functions
Name functions
function HostSetDomain(const ADomain:String):Boolean; inline;
Logging functions
procedure LoggingOutputEx(AFacility,ASeverity:LongWord; const ATag,AContent:String); inline;
Utility functions
function FirstBitSet(Value:LongWord):LongWord; inline;
function CountLeadingZeros(Value:LongWord):LongWord; inline;
function PhysicalToIOAddress(Address:Pointer):LongWord; inline;
function IOAddressToPhysical(Address:Pointer):LongWord; inline;
function PhysicalToBusAddress(Address:Pointer):LongWord; inline;
function BusAddressToPhysical(Address:Pointer):LongWord; inline;
procedure NanosecondDelay(Nanoseconds:LongWord);
procedure MicrosecondDelay(Microseconds:LongWord);
procedure MillisecondDelay(Milliseconds:LongWord);
procedure NanosecondDelayEx(Nanoseconds:LongWord; Wait:Boolean);
procedure MicrosecondDelayEx(Microseconds:LongWord; Wait:Boolean);
procedure MillisecondDelayEx(Milliseconds:LongWord; Wait:Boolean);
System random functions
Dos conversion functions
Dos Info/Date/Time functions
Dos environment functions
SysUtils tick functions
SysUtils locale functions
procedure SysUtilsGetLocalTime(var SystemTime:TSystemTime);
procedure SysUtilsSetLocalTime(const SystemTime:TSystemTime);
function SysUtilsGetLocalTimeOffset:Integer;
Platform helper functions
Return to Unit Reference