\codesr.xpl Complete set of intrinsics for XPL0 on the Raspberry Pi code \var:=\Abs(int)=0, \var:=\Ran(range)=1, \var:=\Rem(expr)=2, \adr:=\Reserve(bytes)=3, \var:=\Swap(int)=4, \var:=\Extend(byte)=5, Restart=6, \var:=\ChIn(dev)=7, ChOut(dev,byte)=8, CrLf(dev)=9, \var:=\IntIn(dev)=10, IntOut(dev,int)=11, Text(dev,str)=12, OpenI(dev)=13, OpenO(dev)=14, Close(dev)=15, Abort=16, Trap(bits)=17, \var:=\Free=18, \var:=\Rerun=19, \adr:=\GetHP=20, SetHP(adr)=21, \var:=\GetErr=22, Cursor(X,Y)=23, FSet(hand,^I/^O)=24, SetRun(bool)=25, \var:=\HexIn(dev)=26, HexOut(dev,int)=27, \var:=\FOpen(pathname,0=r/1=w)=29, FClose(hand)=32, \var:=\KeyHit=33, \var:=\ChkKey=33, Sound(vol,dur,period)=39, Clear=40, Point(X,Y,color)=41, Line(X,Y,color)=42, Move(X,Y)=43, \var:=\ReadPix(X,Y)=44, SetVid(mode)=45, \var:=\Fix(real)=50, Attrib(bg:fg)=69, SetWind(X0,Y0,X1,Y1,mode,fill)=70, RawText(dev,str)=71, Hilight(X0,Y0,X1,Y1,bg:fg)=72, \adr:=\MAlloc(bytes)=73, Release(adr)=74, TrapC(bool)=75, \var:=\TestC=76, ShowMouse(bool)=77, MoveMouse=78, RanSeed(int)=79, \rgb:=\GetPalette(reg)=80, Paint(X,Y,W,H,image,W2)=81, \var:=\GetTime=82, BackUp=83, SetFB(W,H,D)=84, \var:=\OpenMouse=85, \adr:=\GetMouse=86, \adr:=\GetMouseMove=87, ShowCursor(bool)=88, \var:=\GetKey=89, SetPalette(reg,R,G,B)=90, \adr:=\GetFont(set)=91, SetFont(height,adr)=92, \var:=\GetShiftKeys=93, DelayUS(int)=94, \adr:=\GetDateTime=95, InsertKey(byte)=96, \adr:=\GetFB=97, WaitForVSync=98, ShowPage(0/1)=99, CopyMem(dst,src,bytes)=100, FillMem(adr,byte,bytes)=101, \adr:=\ReallocMem(adr,bytes)=102, PlaySoundFile(pathname)=103, SetHexDigits(digits)=104, \process:=\Fork(processes)=105, Join(process)=106, \adr:=\SharedMem(bytes)=107, Lock(adr)=108, Unlock(adr)=109; code real \adr:=\RlRes(int)=46, \var:=\RlIn(dev)=47, RlOut(dev,real)=48, \var:=\Float(int)=49, \var:=\RlAbs(real)=51, Format(int,int)=52, \var:=\Sqrt(real)=53, \var:=\Ln(real)=54, \var:=\Exp(real)=55, \var:=\Sin(real)=56, \var:=\ATan2(realY,realX)=57, \var:=\Mod(real,real)=58, \var:=\Log(real)=59, \var:=\Cos(real)=60, \var:=\Tan(real)=61, \var:=\ASin(real)=62, \var:=\ACos(real)=63, \var:=\Floor(real)=64, \var:=\Ceil(real)=65, \var:=\Pow(realX,realY)=66; include xpllib; int Counts(128), I, Ch, Num, Maxx, SI Cnt; char Str, Addr; [\Read this program's compiled assembly language into a string if not OpenInFile("funcfreq.s") then [Text(0, "funcfreq.s not found"); exit 1]; Str:= 0; I:= 0; loop [Str:= ReallocMem(Str, I+1); Ch:= ChIn(3); if Ch = EOF then quit; Str(I):= Ch; I:= I+1; ]; Str(I):= 0; \Count numbers of times each intrinsic is called for I:= 0 to 127 do Counts(I):= 0; Addr:= Str; loop [Addr:= StrFind(Addr, "intr"); if Addr = 0 then quit; Addr:= Addr+4; \skip "intr" Num:= 0; while Addr(0)>=^0 and Addr(0)<=^9 do [Num:= Num*10 + Addr(0) - ^0; Addr:= Addr+1; ]; if Num < 128 then \for safety Counts(Num):= Counts(Num)+1; ]; Print("Top ten intrinsic calls (code: freq):\n"); Cnt:= 0; loop [Maxx:= 0; for I:= 0 to 127 do if Counts(I) > Maxx then [Maxx:= Counts(I); SI:= I; ]; Print("%2d: %2d\n", SI, Counts(SI)); Counts(SI):= 0; Cnt:= Cnt+1; if Cnt >= 10 then quit; ]; ]