<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>Lisp on The VikiD Truth</title><link>https://thevikidtruth.com/computing/category/lisp/</link><description>Recent content in Lisp on The VikiD Truth</description><generator>Hugo</generator><language>en</language><lastBuildDate>Thu, 22 Oct 2026 10:30:00 +0400</lastBuildDate><atom:link href="https://thevikidtruth.com/computing/category/lisp/index.xml" rel="self" type="application/rss+xml"/><item><title>with-output-to-string</title><link>https://thevikidtruth.com/computing/withoutputtostring/</link><pubDate>Sun, 09 Apr 2023 22:39:59 +0400</pubDate><guid>https://thevikidtruth.com/computing/withoutputtostring/</guid><description>&lt;p&gt;&lt;a href="https://thevikidtruth.com/computing/commonlisp/"&gt;commonlisp&lt;/a&gt; | &lt;a href="https://thevikidtruth.com/computing/clfunctions/"&gt;Functions&lt;/a&gt; | &lt;a href="https://thevikidtruth.com/computing/withoutputtostring/"&gt;with-output-to-string&lt;/a&gt;&lt;/p&gt;&#10;&lt;h1 id="with-output-to-string"&gt;with-output-to-string&lt;/h1&gt;&#10;&lt;p&gt;&lt;a href="http://clhs.lisp.se/Body/m_w_out_.htm" rel="noopener"&gt;External Link: Macro WITH-OUTPUT-TO-STRING&lt;/a&gt;.&lt;/p&gt;&#10;&lt;p&gt;The macro WITH-OUTPUT-TO-STRING can be used to create a string output stream, and return the resulting string at the end.&lt;/p&gt;&#10;&lt;pre tabindex="0"&gt;&lt;code&gt;with-output-to-string (var &amp;amp;optional string-form &amp;amp;key element-type)&#10;declaration* form*&#10;&#10;=&amp;gt; result*&#10;&lt;/code&gt;&lt;/pre&gt;&lt;pre tabindex="0"&gt;&lt;code&gt;element-type specifier is defaulted to character.&#10;form* is implicit progn&#10;&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;&lt;strong&gt;with-output-to-string&lt;/strong&gt; creates a character output stream&#10;and performs a series of operation that output to the result.&#10;automatically closed on exit&#10;side effect: the string is modified&lt;/p&gt;</description></item><item><title>Common Lisp Functions</title><link>https://thevikidtruth.com/computing/clfunctions/</link><pubDate>Sun, 09 Apr 2023 22:28:42 +0400</pubDate><guid>https://thevikidtruth.com/computing/clfunctions/</guid><description>&lt;p&gt;&lt;a href="https://thevikidtruth.com/computing/clfunctions/"&gt;Functions&lt;/a&gt; | &lt;a href="https://thevikidtruth.com/computing/withoutputtostring/"&gt;with-output-to-string&lt;/a&gt;&lt;/p&gt;&#10;&lt;h1 id="common-lisp-functions"&gt;Common Lisp Functions&lt;/h1&gt;&#10;&lt;p&gt;The truth about functions in Common Lisp: &lt;strong&gt;a function is an object, and a name is just one of many ways to reach it.&lt;/strong&gt; Once you separate &amp;ldquo;the function&amp;rdquo; from &amp;ldquo;the symbol that names it&amp;rdquo;, the strange-looking &lt;code&gt;#'&lt;/code&gt; and &lt;code&gt;funcall&lt;/code&gt; suddenly make perfect sense.&lt;/p&gt;&#10;&lt;h3 id="what-it-is-in-plain-words"&gt;What it is, in plain words&lt;/h3&gt;&#10;&lt;p&gt;A Common Lisp function is a first-class object that takes arguments and returns zero or more values. You create named ones with &lt;code&gt;defun&lt;/code&gt; and anonymous ones with &lt;code&gt;lambda&lt;/code&gt;:&lt;/p&gt;</description></item><item><title>Common Lisp</title><link>https://thevikidtruth.com/computing/commonlisp/</link><pubDate>Tue, 23 Aug 2022 01:36:02 +0400</pubDate><guid>https://thevikidtruth.com/computing/commonlisp/</guid><description>&lt;p&gt;&lt;a href="https://thevikidtruth.com/about/caveatemptor/"&gt;Read This!&lt;/a&gt; | | &lt;span class="missing-link"&gt;Quick Links&lt;/span&gt; | &lt;a href="https://thevikidtruth.com/computing/algorithms/"&gt;Algorithms&lt;/a&gt; | &lt;a href="https://thevikidtruth.com/computing/assemblylanguage/"&gt;AssemblyLanguage&lt;/a&gt; | &lt;span class="missing-link"&gt;BASH&lt;/span&gt; | &lt;a href="https://thevikidtruth.com/computing/cprogramming/"&gt;C-Programmming&lt;/a&gt; |&#10;&lt;a href="https://thevikidtruth.com/computing/commonlisp/"&gt;CommonLisp&lt;/a&gt; |&#10;&lt;a href="https://thevikidtruth.com/computing/computersecurity/"&gt;Computer Security&lt;/a&gt; | &lt;a href="https://thevikidtruth.com/computing/databases/"&gt;Databases&lt;/a&gt; | &lt;span class="missing-link"&gt;Emacs&lt;/span&gt; | &lt;span class="missing-link"&gt;Exploitation&lt;/span&gt; |&#10;&lt;a href="https://thevikidtruth.com/computing/functional/"&gt;Functional Programming&lt;/a&gt; |&#10;&lt;a href="https://thevikidtruth.com/computing/firewalls/"&gt;Firewalls&lt;/a&gt; | &lt;a href="https://thevikidtruth.com/computing/git/"&gt;Git&lt;/a&gt; | &lt;a href="https://thevikidtruth.com/computing/haskell/"&gt;Haskell&lt;/a&gt; | &lt;span class="missing-link"&gt;Javascipt&lt;/span&gt; | &lt;a href="https://thevikidtruth.com/computing/julia/"&gt;Julia&lt;/a&gt; | &lt;span class="missing-link"&gt;Social Engineering&lt;/span&gt; |&#10;&lt;a href="https://thevikidtruth.com/computing/picolisp/"&gt;Picolisp&lt;/a&gt; | &lt;span class="missing-link"&gt;Pharo Smalltalk&lt;/span&gt; |&#10;&lt;span class="missing-link"&gt;Linux&lt;/span&gt; |&#10;&lt;a href="https://thevikidtruth.com/computing/python/"&gt;Python&lt;/a&gt; |&#10;&lt;a href="https://thevikidtruth.com/computing/os/"&gt;Operating Systems&lt;/a&gt; |&#10;&lt;a href="https://thevikidtruth.com/computing/machinelearning/"&gt;Machine Learning&lt;/a&gt; | &lt;a href="https://thevikidtruth.com/computing/metasploit/"&gt;Metasploit&lt;/a&gt; | &lt;span class="missing-link"&gt;Open Data Science&lt;/span&gt; |&#10;&lt;a href="https://thevikidtruth.com/computing/networking/"&gt;Networking&lt;/a&gt; | &lt;a href="https://thevikidtruth.com/computing/machinelearning/"&gt;Machine Learning&lt;/a&gt; | &lt;a href="https://thevikidtruth.com/computing/racket/"&gt;Racket&lt;/a&gt; | &lt;a href="https://thevikidtruth.com/computing/scheme/"&gt;Scheme&lt;/a&gt; |&#10;&lt;span class="missing-link"&gt;Unity&lt;/span&gt; | &lt;a href="https://thevikidtruth.com/computing/vim/"&gt;vim&lt;/a&gt; |&#10;&lt;a href="https://thevikidtruth.com/computing/webdevelopment/"&gt;Web Development&lt;/a&gt; | &lt;a href="https://thevikidtruth.com/computing/windowswsl/"&gt;Windows WSL&lt;/a&gt;&lt;/p&gt;&#10;&lt;h1 id="common-lisp"&gt;Common Lisp&lt;/h1&gt;&#10;&lt;p&gt;Here is the truth that took me years to see: &lt;strong&gt;Common Lisp is not an old language that refused to die – it&amp;rsquo;s a living system that was finished early.&lt;/strong&gt; It was standardised in 1994, and code written then still runs unchanged today on fast, native-code compilers. Few languages can say that.&lt;/p&gt;</description></item><item><title>Racket</title><link>https://thevikidtruth.com/computing/racket/</link><pubDate>Wed, 17 Aug 2022 01:06:30 +0400</pubDate><guid>https://thevikidtruth.com/computing/racket/</guid><description>&lt;h1 id="racket"&gt;Racket&lt;/h1&gt;&#10;&lt;p&gt;Racket is an evolution of the Scheme Language. A Scheme with Batteries and more.&#10;&lt;a href="https://docs.racket-lang.org/r6rs/r6rs-std/index.html" rel="noopener"&gt;Read R6RS Scheme Specs. It always helps.&lt;/a&gt;&lt;/p&gt;&#10;&lt;h2 id="initial-grammar"&gt;Initial Grammar&lt;/h2&gt;&#10;&lt;pre tabindex="0"&gt;&lt;code&gt; program ::= {expr | test | def}*&#10; def ::= (define &amp;lt;variable name&amp;gt; expr)&#10; test ::= (check-expect expr expr)&#10; expr ::= string&#10; ::= number&#10; ::= (&amp;lt;function&amp;gt; expr*)&#10; ::= &amp;lt;variable name&amp;gt;&#10; string ::= &amp;#34;&amp;lt;character&amp;gt;&amp;#34;&#10; number ::= positive&#10; ::= negative&#10; positive ::= mag&#10; negative ::= -mag&#10; mag ::= int&#10; ::= real&#10; ::= fraction&#10; int ::= digit*&#10; digit ::= 0|1|2|3|4|5|6|7|8|9&#10; real ::= digit*.digit*&#10; fraction ::= int/nonzero-int&#10;non-zeroint::= &amp;lt;1|2|3|4|5|6|7|8|9&amp;gt;int&#10;&lt;/code&gt;&lt;/pre&gt;&lt;h2 id="drracket"&gt;DrRacket&lt;/h2&gt;&#10;&lt;p&gt;If using DrRacket as an IDE. You can get auto-complete while typing &amp;ldquo;ctrl-/&amp;rdquo;&lt;/p&gt;</description></item><item><title>Input / Output IO</title><link>https://thevikidtruth.com/computing/plio/</link><pubDate>Sat, 28 Aug 2021 07:09:06 +0400</pubDate><guid>https://thevikidtruth.com/computing/plio/</guid><description>&lt;p class="right"&gt;&lt;img src="https://thevikidtruth.com/assets/picos.png" alt="picos"&gt;&lt;/p&gt;&#10;&lt;p&gt;&lt;a href="https://thevikidtruth.com/computing/computingfreedom/"&gt;computingFreedom&lt;/a&gt; |&#10;&lt;a href="https://thevikidtruth.com/computing/bciyh/"&gt;Build&lt;/a&gt; |&#10;&lt;a href="https://thevikidtruth.com/computing/picolisp/"&gt;Picolisp&lt;/a&gt; | &lt;a href="https://thevikidtruth.com/computing/pilmachine/"&gt;Picolisp Machine&lt;/a&gt; | &lt;span class="missing-link"&gt;Pil sources&lt;/span&gt; | &lt;a href="https://thevikidtruth.com/computing/piltutorials/"&gt;Pil Tutorials&lt;/a&gt; |&#10;&lt;span class="missing-link"&gt;Linux&lt;/span&gt; | &lt;span class="missing-link"&gt;BASH&lt;/span&gt; |&#10;&lt;a href="https://thevikidtruth.com/computing/cprogramming/"&gt;C Programmming&lt;/a&gt; |&#10;&lt;a href="https://thevikidtruth.com/computing/os/"&gt;Operating Systems&lt;/a&gt; |&#10;&lt;span class="missing-link"&gt;JavaScript&lt;/span&gt; |&#10;&lt;span class="missing-link"&gt;Emacs&lt;/span&gt; | &lt;a href="https://thevikidtruth.com/computing/vim/"&gt;vim&lt;/a&gt; |&#10;&lt;span class="missing-link"&gt;Pharo Smalltalk&lt;/span&gt; |&#10;&lt;a href="https://thevikidtruth.com/computing/computersecurity/"&gt;Computer Security&lt;/a&gt; |&#10;&lt;a href="https://thevikidtruth.com/computing/penti/"&gt;Penti&lt;/a&gt;&lt;/p&gt;&#10;&lt;h1 id="input--output-io"&gt;Input / Output IO&lt;/h1&gt;&#10;&lt;p&gt;Here is the truth about I/O in PicoLisp: &lt;strong&gt;everything is a stream or a list of characters, and the same functions that print to your terminal can print into a socket, a file or a string.&lt;/strong&gt; Once you meet &lt;code&gt;in&lt;/code&gt;, &lt;code&gt;out&lt;/code&gt; and &lt;code&gt;prin&lt;/code&gt;, the rest is composition.&lt;/p&gt;</description></item><item><title>new</title><link>https://thevikidtruth.com/computing/plnew/</link><pubDate>Sat, 28 Aug 2021 06:47:27 +0400</pubDate><guid>https://thevikidtruth.com/computing/plnew/</guid><description>&lt;p&gt;&lt;span class="missing-link"&gt;Computing&lt;/span&gt; | &lt;a href="https://thevikidtruth.com/computing/picolisp/"&gt;Picolisp&lt;/a&gt; | &lt;a href="http://software-lab.de/doc/ref.html#vm" rel="noopener"&gt;The Picolisp Reference&lt;/a&gt; | &lt;a href="https://thevikidtruth.com/computing/pilasm/"&gt;ASM&lt;/a&gt; |&#10;&lt;a href="https://thevikidtruth.com/computing/piltutorials/"&gt;Pil Tutorials&lt;/a&gt; |&lt;/p&gt;&#10;&lt;h1 id="new"&gt;new&lt;/h1&gt;&#10;&lt;pre tabindex="0"&gt;&lt;code&gt;(new [&amp;#39;flg|num] [&amp;#39;typ [&amp;#39;any ..]]) -&amp;gt; obj &#10;&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;Creates and returns a new object.&lt;/p&gt;&#10;&lt;p&gt;If &lt;strong&gt;flg&lt;/strong&gt; is given and &lt;strong&gt;non-NIL&lt;/strong&gt;, the new object will be an &lt;strong&gt;external symbol&lt;/strong&gt;&#10;(created in database file 1 if T, or in the corresponding database file if num is given).&lt;/p&gt;&#10;&lt;p&gt;&lt;strong&gt;typ&lt;/strong&gt; (typically a list of classes) is assigned to the VAL,&#10;and the &lt;em&gt;initial T message&lt;/em&gt; is sent with the arguments any to the new object.&lt;/p&gt;</description></item><item><title>box</title><link>https://thevikidtruth.com/computing/plbox/</link><pubDate>Sat, 28 Aug 2021 06:45:21 +0400</pubDate><guid>https://thevikidtruth.com/computing/plbox/</guid><description>&lt;p&gt;&lt;span class="missing-link"&gt;Computing&lt;/span&gt; | &lt;a href="https://thevikidtruth.com/computing/picolisp/"&gt;Picolisp&lt;/a&gt; | &lt;a href="https://thevikidtruth.com/computing/pilasm/"&gt;ASM&lt;/a&gt; |&#10;&lt;a href="https://thevikidtruth.com/computing/piltutorials/"&gt;Pil Tutorials&lt;/a&gt; |&lt;/p&gt;&#10;&lt;h1 id="box"&gt;box&lt;/h1&gt;&#10;&lt;p&gt;Here is the truth about &lt;code&gt;box&lt;/code&gt; in PicoLisp: &lt;strong&gt;it is a tiny mutable cell – a cons whose purpose is to hold something that changes while the identity of the cell stays put.&lt;/strong&gt; When you need a shared, updatable place without inventing a class, you reach for a box.&lt;/p&gt;&#10;&lt;h3 id="what-it-is-in-plain-words"&gt;What it is, in plain words&lt;/h3&gt;&#10;&lt;p&gt;&lt;code&gt;(box Val)&lt;/code&gt; creates a new cell with &lt;code&gt;Val&lt;/code&gt; as its value. Access and update with &lt;code&gt;val&lt;/code&gt; and &lt;code&gt;set&lt;/code&gt; (or related patterns). Because PicoLisp is dynamically typed and list-oriented, a box is often enough where another language would demand an object or an &lt;code&gt;IORef&lt;/code&gt;.&lt;/p&gt;</description></item><item><title>The Vikid PicoLisp Tutorial</title><link>https://thevikidtruth.com/computing/pltutorial/</link><pubDate>Thu, 26 Aug 2021 01:17:21 +0400</pubDate><guid>https://thevikidtruth.com/computing/pltutorial/</guid><description>&lt;p class="right"&gt;&lt;img src="https://thevikidtruth.com/assets/picos.png" alt="picos"&gt;&lt;/p&gt;&#10;&lt;p&gt;&lt;a href="https://thevikidtruth.com/computing/computingfreedom/"&gt;computingFreedom&lt;/a&gt; | &lt;a href="https://thevikidtruth.com/computing/bciyh/"&gt;Build&lt;/a&gt; |&#10;&lt;a href="https://thevikidtruth.com/computing/picolisp/"&gt;Picolisp&lt;/a&gt; | &lt;a href="https://thevikidtruth.com/computing/pilmachine/"&gt;Picolisp Machine&lt;/a&gt; | &lt;span class="missing-link"&gt;Pil sources&lt;/span&gt; | &lt;a href="https://thevikidtruth.com/computing/piltutorials/"&gt;Pil Tutorials&lt;/a&gt; |&#10;&lt;span class="missing-link"&gt;Linux&lt;/span&gt; | &lt;span class="missing-link"&gt;BASH&lt;/span&gt; |&#10;&lt;a href="https://thevikidtruth.com/computing/cprogramming/"&gt;C Programmming&lt;/a&gt; | &lt;a href="https://thevikidtruth.com/computing/os/"&gt;Operating Systems&lt;/a&gt; | &lt;span class="missing-link"&gt;Javascipt&lt;/span&gt; | &lt;span class="missing-link"&gt;Emacs&lt;/span&gt; | &lt;a href="https://thevikidtruth.com/computing/vim/"&gt;vim&lt;/a&gt; |&#10;&lt;span class="missing-link"&gt;Pharo Smalltalk&lt;/span&gt; | &lt;a href="https://thevikidtruth.com/computing/computersecurity/"&gt;Computer Security&lt;/a&gt; | &lt;a href="https://thevikidtruth.com/computing/penti/"&gt;Penti&lt;/a&gt; | &lt;a href="https://thevikidtruth.com/computing/pltutorial/"&gt;Picolisp Tutorial&lt;/a&gt;&lt;/p&gt;&#10;&lt;h2 id="the-vikid-picolisp-tutorial"&gt;The Vikid PicoLisp Tutorial&lt;/h2&gt;&#10;&lt;p&gt;Start picolisp&lt;/p&gt;&#10;&lt;pre tabindex="0"&gt;&lt;code&gt;$ pil +&#10;&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;Set some values&lt;/p&gt;&#10;&lt;pre tabindex="0"&gt;&lt;code&gt;(setq A &amp;#39;(This is the value)) # Set the value of &amp;#39;A&amp;#39;&#10;&#10;(put &amp;#39;A &amp;#39;key1 &amp;#39;val1) # Store property &amp;#39;key1&amp;#39;&#10;&#10;(put &amp;#39;A &amp;#39;key2 &amp;#39;val2) # and &amp;#39;key2&amp;#39;&#10;&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;inspect them with &amp;lsquo;show&amp;rsquo;&lt;/p&gt;&#10;&lt;pre tabindex="0"&gt;&lt;code&gt;(show &amp;#39;A) # Now &amp;#39;show&amp;#39; the symbol &amp;#39;A&amp;#39;&#10;&#10;(put &amp;#39;B &amp;#39;a &amp;#39;A) # Put &amp;#39;A&amp;#39; under the &amp;#39;a&amp;#39;-property of &amp;#39;B&amp;#39;&#10;&#10;(setq Lst &amp;#39;(A B C)) # Create a list with &amp;#39;B&amp;#39; as second argument&#10;&#10;(show Lst 2 &amp;#39;a) # Show the property &amp;#39;a of the 2nd element of &amp;#39;Lst&amp;#39;&#10;&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;using vi and v.&lt;/p&gt;</description></item><item><title>vers.h</title><link>https://thevikidtruth.com/computing/versh/</link><pubDate>Thu, 29 Jun 2017 02:06:42 +0400</pubDate><guid>https://thevikidtruth.com/computing/versh/</guid><description>&lt;p&gt;&lt;a href="https://thevikidtruth.com/about/caveatemptor/"&gt;Read This!&lt;/a&gt; |&#10;&lt;a href="https://thevikidtruth.com/computing/picolisp/"&gt;Picolisp&lt;/a&gt; | &lt;a href="https://thevikidtruth.com/computing/pilmachine/"&gt;Picolisp Machine&lt;/a&gt; | &lt;span class="missing-link"&gt;Pil Sources&lt;/span&gt; | &lt;a href="https://thevikidtruth.com/computing/piltutorials/"&gt;Pil Tutorials&lt;/a&gt; |&#10;&lt;span class="missing-link"&gt;Linux&lt;/span&gt; | &lt;span class="missing-link"&gt;BASH&lt;/span&gt; |&#10;&lt;a href="https://thevikidtruth.com/computing/cprogramming/"&gt;C-Programmming&lt;/a&gt; | &lt;span class="missing-link"&gt;Javascipt&lt;/span&gt; | &lt;a href="https://thevikidtruth.com/computing/python/"&gt;Python&lt;/a&gt; | &lt;a href="https://thevikidtruth.com/computing/scheme/"&gt;Scheme&lt;/a&gt; |&#10;&lt;a href="https://thevikidtruth.com/computing/os/"&gt;Operating Systems&lt;/a&gt; | &lt;a href="https://thevikidtruth.com/computing/assemblylanguage/"&gt;AssemblyLanguage&lt;/a&gt; |&#10;&lt;a href="https://thevikidtruth.com/computing/computersecurity/"&gt;Computer Security&lt;/a&gt; |&#10;&lt;a href="https://thevikidtruth.com/computing/firewalls/"&gt;Firewalls&lt;/a&gt; |&#10;&lt;span class="missing-link"&gt;Exploitation&lt;/span&gt; | &lt;span class="missing-link"&gt;Social Engineering&lt;/span&gt; | &lt;a href="https://thevikidtruth.com/computing/metasploit/"&gt;Metasploit&lt;/a&gt; |&#10;&lt;span class="missing-link"&gt;Emacs&lt;/span&gt; | &lt;a href="https://thevikidtruth.com/computing/vim/"&gt;vim&lt;/a&gt; |&#10;&lt;span class="missing-link"&gt;Pharo Smalltalk&lt;/span&gt; |&#10;&lt;a href="https://thevikidtruth.com/computing/databases/"&gt;Databases&lt;/a&gt; | &lt;a href="https://thevikidtruth.com/computing/networking/"&gt;Networking&lt;/a&gt; | &lt;a href="https://thevikidtruth.com/computing/machinelearning/"&gt;Machine Learning&lt;/a&gt; |&#10;&lt;a href="https://thevikidtruth.com/computing/git/"&gt;Git&lt;/a&gt; |&#10;&lt;a href="https://thevikidtruth.com/computing/machinelearning/"&gt;Machine Learning&lt;/a&gt; |&#10;&lt;a href="https://thevikidtruth.com/computing/algorithms/"&gt;Algorithms&lt;/a&gt; |&#10;&lt;span class="missing-link"&gt;Open Data Science&lt;/span&gt;&lt;/p&gt;&#10;&lt;h1 id="versh"&gt;&lt;a href="https://thevikidtruth.com/computing/versh/"&gt;vers.h&lt;/a&gt;&lt;/h1&gt;&#10;&lt;p&gt;Here is the truth about versioning shell helpers: &lt;strong&gt;a tiny wrapper that prints versions of the tools you actually use saves more time than it has any right to.&lt;/strong&gt; When something breaks after an update, &amp;ldquo;what am I running?&amp;rdquo; should be a one-liner.&lt;/p&gt;</description></item><item><title>Picolisp Tutorials</title><link>https://thevikidtruth.com/computing/piltutorials/</link><pubDate>Sat, 24 Jun 2017 03:42:32 +0400</pubDate><guid>https://thevikidtruth.com/computing/piltutorials/</guid><description>&lt;p&gt;&lt;a href="https://thevikidtruth.com/about/caveatemptor/"&gt;Read This!&lt;/a&gt; |&#10;&lt;a href="https://thevikidtruth.com/computing/picolisp/"&gt;Picolisp&lt;/a&gt; | &lt;a href="https://thevikidtruth.com/computing/pilmachine/"&gt;Picolisp Machine&lt;/a&gt; | &lt;span class="missing-link"&gt;Pil Sources&lt;/span&gt; | &lt;a href="https://thevikidtruth.com/computing/piltutorials/"&gt;Pil Tutorials&lt;/a&gt; |&#10;&lt;span class="missing-link"&gt;Picolisp By Example&lt;/span&gt; |&#10;&lt;span class="missing-link"&gt;Linux&lt;/span&gt; | &lt;span class="missing-link"&gt;BASH&lt;/span&gt; |&#10;&lt;a href="https://thevikidtruth.com/computing/cprogramming/"&gt;C-Programmming&lt;/a&gt; | &lt;span class="missing-link"&gt;Javascipt&lt;/span&gt; | &lt;a href="https://thevikidtruth.com/computing/python/"&gt;Python&lt;/a&gt; | &lt;a href="https://thevikidtruth.com/computing/scheme/"&gt;Scheme&lt;/a&gt; |&#10;&lt;a href="https://thevikidtruth.com/computing/os/"&gt;Operating Systems&lt;/a&gt; | &lt;a href="https://thevikidtruth.com/computing/assemblylanguage/"&gt;AssemblyLanguage&lt;/a&gt; |&#10;&lt;a href="https://thevikidtruth.com/computing/computersecurity/"&gt;Computer Security&lt;/a&gt; |&#10;&lt;a href="https://thevikidtruth.com/computing/firewalls/"&gt;Firewalls&lt;/a&gt; |&#10;&lt;span class="missing-link"&gt;Exploitation&lt;/span&gt; | &lt;span class="missing-link"&gt;Social Engineering&lt;/span&gt; | &lt;a href="https://thevikidtruth.com/computing/metasploit/"&gt;Metasploit&lt;/a&gt; |&#10;&lt;span class="missing-link"&gt;Emacs&lt;/span&gt; | &lt;a href="https://thevikidtruth.com/computing/vim/"&gt;vim&lt;/a&gt; |&#10;&lt;span class="missing-link"&gt;Pharo Smalltalk&lt;/span&gt; |&#10;&lt;a href="https://thevikidtruth.com/computing/databases/"&gt;Databases&lt;/a&gt; | &lt;a href="https://thevikidtruth.com/computing/networking/"&gt;Networking&lt;/a&gt; | &lt;a href="https://thevikidtruth.com/computing/machinelearning/"&gt;Machine Learning&lt;/a&gt; |&#10;&lt;a href="https://thevikidtruth.com/computing/git/"&gt;Git&lt;/a&gt; |&#10;&lt;a href="https://thevikidtruth.com/computing/machinelearning/"&gt;Machine Learning&lt;/a&gt; |&#10;&lt;a href="https://thevikidtruth.com/computing/algorithms/"&gt;Algorithms&lt;/a&gt; |&#10;&lt;span class="missing-link"&gt;Open Data Science&lt;/span&gt; |&lt;/p&gt;&#10;&lt;h1 id="picolisp-tutorials"&gt;Picolisp Tutorials&lt;/h1&gt;&#10;&lt;p&gt;Here is the truth about learning PicoLisp: &lt;strong&gt;the language is small enough that tutorials can take you from zero to a working app without a 900-page book.&lt;/strong&gt; The hard part is not syntax – it is trusting that lists, symbols and a handful of forms really are enough.&lt;/p&gt;</description></item><item><title>Find Boxes in Lists</title><link>https://thevikidtruth.com/computing/findboxes/</link><pubDate>Wed, 21 Jun 2017 13:31:50 +0400</pubDate><guid>https://thevikidtruth.com/computing/findboxes/</guid><description>&lt;h1 id="find-boxes-in-lists"&gt;Find Boxes in Lists&lt;/h1&gt;&#10;&lt;p&gt;Here is the truth about finding boxes on a network: &lt;strong&gt;most &amp;ldquo;discovery&amp;rdquo; is just asking politely which doors are open, then writing down who answers.&lt;/strong&gt; The skill is doing it thoroughly, quietly enough for the context, and only where you have permission.&lt;/p&gt;&#10;&lt;h3 id="what-it-is-in-plain-words"&gt;What it is, in plain words&lt;/h3&gt;&#10;&lt;p&gt;&lt;strong&gt;Finding boxes&lt;/strong&gt; means enumerating live hosts and interesting services on a network – the first phase of any lab, inventory or authorised &lt;a href="https://thevikidtruth.com/computing/penetrationtesting/"&gt;penetration test&lt;/a&gt;. Tools range from a single &lt;code&gt;ping&lt;/code&gt; to full-fat scanners like nmap. On a home LAN it is how you remember which Pi has which IP; on an engagement it is how you build the map.&lt;/p&gt;</description></item><item><title>pmap</title><link>https://thevikidtruth.com/computing/pmap/</link><pubDate>Sun, 04 Dec 2016 04:11:39 +0400</pubDate><guid>https://thevikidtruth.com/computing/pmap/</guid><description>&lt;p&gt;&lt;a href="https://thevikidtruth.com/computing/linuxtools/"&gt;linuxtools&lt;/a&gt;&lt;/p&gt;&#10;&lt;h1 id="pmap"&gt;pmap&lt;/h1&gt;&#10;&lt;p&gt;The truth about a running program&amp;rsquo;s memory is that &lt;strong&gt;it isn&amp;rsquo;t one big block – it&amp;rsquo;s a patchwork map of regions, each with its own purpose and permissions.&lt;/strong&gt; pmap prints that map.&lt;/p&gt;&#10;&lt;h3 id="what-it-is-in-plain-words"&gt;What it is, in plain words&lt;/h3&gt;&#10;&lt;p&gt;&lt;strong&gt;pmap&lt;/strong&gt; (from the &lt;code&gt;procps-ng&lt;/code&gt; package, installed almost everywhere) reports the &lt;strong&gt;memory map&lt;/strong&gt; of a process: every region of virtual address space it has, how big each is, what permissions it has (read, write, execute), and what backs it – a file like &lt;code&gt;/usr/lib/libc.so.6&lt;/code&gt;, the heap, the stack, or anonymous memory.&lt;/p&gt;</description></item><item><title>Scheme</title><link>https://thevikidtruth.com/computing/scheme/</link><pubDate>Wed, 30 Nov 2016 08:50:15 +0400</pubDate><guid>https://thevikidtruth.com/computing/scheme/</guid><description>&lt;p&gt;&lt;a href="https://thevikidtruth.com/about/caveatemptor/"&gt;Read This!&lt;/a&gt; |&#10;&lt;a href="https://thevikidtruth.com/computing/picolisp/"&gt;Picolisp&lt;/a&gt; | &lt;a href="https://thevikidtruth.com/computing/pilmachine/"&gt;Picolisp Machine&lt;/a&gt; | &lt;span class="missing-link"&gt;Pil Sources&lt;/span&gt; |&#10;&lt;span class="missing-link"&gt;Linux&lt;/span&gt; | &lt;span class="missing-link"&gt;BASH&lt;/span&gt; |&#10;&lt;a href="https://thevikidtruth.com/computing/cprogramming/"&gt;C-Programmming&lt;/a&gt; | &lt;span class="missing-link"&gt;Javascipt&lt;/span&gt; | &lt;a href="https://thevikidtruth.com/computing/python/"&gt;Python&lt;/a&gt; | &lt;a href="https://thevikidtruth.com/computing/racket/"&gt;Racket&lt;/a&gt; | &lt;a href="https://thevikidtruth.com/computing/scheme/"&gt;Scheme&lt;/a&gt; |&#10;&lt;a href="https://thevikidtruth.com/computing/os/"&gt;Operating Systems&lt;/a&gt; | &lt;a href="https://thevikidtruth.com/computing/assemblylanguage/"&gt;AssemblyLanguage&lt;/a&gt; |&#10;&lt;a href="https://thevikidtruth.com/computing/computersecurity/"&gt;Computer Security&lt;/a&gt; |&#10;&lt;a href="https://thevikidtruth.com/computing/firewalls/"&gt;Firewalls&lt;/a&gt; |&#10;&lt;span class="missing-link"&gt;Exploitation&lt;/span&gt; | &lt;span class="missing-link"&gt;Social Engineering&lt;/span&gt; | &lt;a href="https://thevikidtruth.com/computing/metasploit/"&gt;Metasploit&lt;/a&gt; |&#10;&lt;span class="missing-link"&gt;Emacs&lt;/span&gt; | &lt;a href="https://thevikidtruth.com/computing/vim/"&gt;vim&lt;/a&gt; |&#10;&lt;span class="missing-link"&gt;Pharo Smalltalk&lt;/span&gt; |&#10;&lt;a href="https://thevikidtruth.com/computing/databases/"&gt;Databases&lt;/a&gt;&lt;/p&gt;&#10;&lt;h1 id="scheme"&gt;Scheme&lt;/h1&gt;&#10;&lt;p&gt;I am partial to scheme, I always really appreciated it.&lt;/p&gt;&#10;&lt;pre tabindex="0"&gt;&lt;code&gt; (define (max-of-list lst)&#10; (foldr max (first lst) (rest lst)))&#10;&lt;/code&gt;&lt;/pre&gt;&lt;h2 id="r6rs---revision-6-scheme-standard"&gt;&lt;span class="missing-link"&gt;R6RS - Revision 6 Scheme Standard&lt;/span&gt;&lt;/h2&gt;&#10;&lt;p&gt;Programming languages should be designed not by piling feature on top of feature, but by removing&#10;the weaknesses and restrictions that make additional features appear necessary. Scheme demonstrates&#10;that a very small number of rules for forming expressions, with no restrictions on how they are composed,&#10;suffice to form a practical and efficient programming language that is flexible enough to support most of the major &amp;hellip;&#10;&lt;span class="missing-link"&gt;Read more.&lt;/span&gt;&lt;/p&gt;</description></item><item><title>Picolisp Databases</title><link>https://thevikidtruth.com/computing/pildb/</link><pubDate>Wed, 30 Nov 2016 08:06:23 +0400</pubDate><guid>https://thevikidtruth.com/computing/pildb/</guid><description>&lt;p&gt;&lt;a href="https://thevikidtruth.com/about/caveatemptor/"&gt;Read This!&lt;/a&gt; |&#10;&lt;a href="https://thevikidtruth.com/computing/picolisp/"&gt;Picolisp&lt;/a&gt; | &lt;a href="https://thevikidtruth.com/computing/pilmachine/"&gt;Picolisp Machine&lt;/a&gt; | &lt;span class="missing-link"&gt;Pil Sources&lt;/span&gt; |&#10;&lt;span class="missing-link"&gt;Linux&lt;/span&gt; | &lt;span class="missing-link"&gt;BASH&lt;/span&gt; |&#10;&lt;a href="https://thevikidtruth.com/computing/cprogramming/"&gt;C-Programmming&lt;/a&gt; | &lt;span class="missing-link"&gt;Javascipt&lt;/span&gt; | &lt;a href="https://thevikidtruth.com/computing/python/"&gt;Python&lt;/a&gt; |&#10;&lt;a href="https://thevikidtruth.com/computing/os/"&gt;Operating Systems&lt;/a&gt; | &lt;a href="https://thevikidtruth.com/computing/assemblylanguage/"&gt;AssemblyLanguage&lt;/a&gt; |&#10;&lt;a href="https://thevikidtruth.com/computing/computersecurity/"&gt;Computer Security&lt;/a&gt; |&#10;&lt;a href="https://thevikidtruth.com/computing/firewalls/"&gt;Firewalls&lt;/a&gt; |&#10;&lt;span class="missing-link"&gt;Exploitation&lt;/span&gt; | &lt;span class="missing-link"&gt;Social Engineering&lt;/span&gt; | &lt;a href="https://thevikidtruth.com/computing/metasploit/"&gt;Metasploit&lt;/a&gt; |&#10;&lt;span class="missing-link"&gt;Emacs&lt;/span&gt; | &lt;a href="https://thevikidtruth.com/computing/vim/"&gt;vim&lt;/a&gt; |&#10;&lt;span class="missing-link"&gt;Pharo Smalltalk&lt;/span&gt; |&#10;&lt;a href="https://thevikidtruth.com/computing/databases/"&gt;Databases&lt;/a&gt; | &lt;a href="https://thevikidtruth.com/computing/pildb/"&gt;Picolisp DB&amp;rsquo;s&lt;/a&gt;&lt;/p&gt;&#10;&lt;h1 id="picolisp-databases"&gt;Picolisp Databases&lt;/h1&gt;&#10;&lt;p&gt;Here is the truth about PicoLisp&amp;rsquo;s database: &lt;strong&gt;it is not a bolt-on library – it is the language&amp;rsquo;s own object system, made durable.&lt;/strong&gt; Entities and relations are first-class, transactions are built in, and there is no ORM because you never leave Lisp.&lt;/p&gt;</description></item><item><title>Picolisp ASM</title><link>https://thevikidtruth.com/computing/pilasm/</link><pubDate>Sat, 26 Nov 2016 11:39:51 +0400</pubDate><guid>https://thevikidtruth.com/computing/pilasm/</guid><description>&lt;h1 id="picolisp-asm"&gt;Picolisp ASM&lt;/h1&gt;&#10;&lt;p&gt;&lt;span class="missing-link"&gt;Quicklinks&lt;/span&gt; | &lt;span class="missing-link"&gt;Readinglist&lt;/span&gt; | &lt;span class="missing-link"&gt;Computing&lt;/span&gt; | &lt;a href="https://thevikidtruth.com/computing/picolisp/"&gt;Picolisp&lt;/a&gt; |&#10;&lt;a href="http://software-lab.de/doc/ref.html#vm" rel="noopener"&gt;The Picolisp Reference&lt;/a&gt; | &lt;a href="https://thevikidtruth.com/computing/pilasm/"&gt;ASM&lt;/a&gt;&lt;/p&gt;&#10;&lt;pre tabindex="0"&gt;&lt;code&gt; CPU Registers:&#10;&#10; +---+---+---+---+---+---+---+---+&#10; | A | B | \\ [A]ccumulator&#10; +---+---+---+---+---+---+---+---+ D [B]yte register&#10; | C | / [C]ount register&#10; +---+---+---+---+---+---+---+---+ [D]ouble register&#10; | E | [E]xpression register&#10; +---+---+---+---+---+---+---+---+&#10;&#10; +---+---+---+---+---+---+---+---+&#10; | X | [X] Index register&#10; +---+---+---+---+---+---+---+---+ [Y] Index register&#10; | Y | [Z] Index register&#10; +---+---+---+---+---+---+---+---+&#10; | Z |&#10; +---+---+---+---+---+---+---+---+&#10;&#10; +---+---+---+---+---+---+---+---+&#10; | L | [L]ink register&#10; +---+---+---+---+---+---+---+---+ [S]tack pointer&#10; | S |&#10; +---+---+---+---+---+---+---+---+&#10;&#10; +-------------------------------+&#10; | [z]ero [s]ign [x,b,c]arry | [F]lags&#10; +-------------------------------+&#10;&lt;/code&gt;&lt;/pre&gt;&lt;pre tabindex="0"&gt;&lt;code&gt; Source Addressing Modes:&#10; ld A 1234 # Immediate&#10; ld A &amp;#34;(a+b-c)&amp;#34;&#10; ld A R # Register&#10; ld A Global # Direct&#10; ld A (R) # Indexed&#10; ld A (R 8) # Indexed with offset&#10; ld A (R OFFS)&#10; ld A (R Global)&#10; ld A (Global) # Indirect&#10; ld A (Global OFFS) # Indirect with offset&#10; ld A ((R)) # Indexed indirect&#10; ld A ((R 8)) # Indexed with offset indirect&#10; ld A ((R 8) OFFS)&#10; ld A ((R Global) OFFS)&#10; ld A ((R OFFS) Global)&#10; ...&#10;&#10; Destination Addressing Modes:&#10; ld R A # Register&#10; ld (R) A # Indexed&#10; ld (R 8) A # Indexed with offset&#10; ld (R OFFS) A&#10; ld (R Global) A&#10; ld (Global) A # Indirect&#10; ld (Global OFFS) A # Indirect with offset&#10; ld ((R)) A # Indexed indirect&#10; ld ((R 8)) A # Indexed with offset indirect&#10; ld ((R 8) OFFS) A&#10; ld ((R Global) OFFS) A&#10; ld ((R OFFS) Global) A&#10; ...&#10;&#10; Target Addressing Modes:&#10; jmp 1234 # Absolute&#10; jmp Label&#10; jmp (R) # Indexed&#10; jmp (R T) # Indexed SUBR&#10; jmp (Global) # Indirect&#10;&#10;========================================================================&#10;&#10; Instruction set:&#10; nop # No operation&#10;&#10; Move Instructions:&#10; ld dst src # Load &amp;#39;dst&amp;#39; from &amp;#39;src&amp;#39; [---]&#10; ld2 src # Load &amp;#39;A&amp;#39; from two bytes &amp;#39;src&amp;#39; (unsigned) [---]&#10; ld4 src # Load &amp;#39;A&amp;#39; from four bytes &amp;#39;src&amp;#39; (unsigned) [---]&#10; ldz dst src # Load if Zero &amp;#39;dst&amp;#39; from &amp;#39;src&amp;#39; [---]&#10; ldnz dst src # Load if not Zero &amp;#39;dst&amp;#39; from &amp;#39;src&amp;#39; [---]&#10; lea dst src # Load &amp;#39;dst&amp;#39; with effective address of &amp;#39;src&amp;#39; [---]&#10; st2 dst # Store two bytes from &amp;#39;A&amp;#39; into &amp;#39;dst&amp;#39; [---]&#10; st4 dst # Store four bytes from &amp;#39;A&amp;#39; into &amp;#39;dst&amp;#39; [---]&#10; xchg dst dst # Exchange &amp;#39;dst&amp;#39;s [---]&#10; movn dst src cnt # Move &amp;#39;cnt&amp;#39; bytes from &amp;#39;src&amp;#39; to &amp;#39;dst&amp;#39; (non-overlapping or src &amp;lt; dst)&#10; mset dst cnt # Set &amp;#39;cnt&amp;#39; bytes of memory to B&#10; save src end dst # Save &amp;#39;src&amp;#39;..&amp;#39;end&amp;#39; to &amp;#39;dst&amp;#39; (aligned, non-overlapping or src &amp;lt; dst)&#10; load dst end src # Load &amp;#39;dst&amp;#39;..&amp;#39;end&amp;#39; from &amp;#39;src&amp;#39; (aligned, non-overlapping)&#10;&#10; Arithmetics:&#10; add dst src # Add &amp;#39;src&amp;#39; to &amp;#39;dst&amp;#39; [zsc]&#10; addc dst src # Add &amp;#39;src&amp;#39; to &amp;#39;dst&amp;#39; with Carry [zsc]&#10; sub dst src # Subtract &amp;#39;src&amp;#39; from &amp;#39;dst&amp;#39; [zsb]&#10; subb dst src # Subtract &amp;#39;src&amp;#39; from &amp;#39;dst&amp;#39; with Borrow [zsb]&#10;&#10; inc dst # Increment &amp;#39;dst&amp;#39; [zs.]&#10; dec dst # Decrement &amp;#39;dst&amp;#39; [zs.]&#10; not dst # One&amp;#39;s complement negation of &amp;#39;dst&amp;#39; [z..]&#10; neg dst # Two&amp;#39;s complement negation of &amp;#39;dst&amp;#39; [zs.]&#10;&#10; and dst src # Bitwise AND &amp;#39;dst&amp;#39; with &amp;#39;src&amp;#39; [zs.]&#10; or dst src # Bitwise OR &amp;#39;dst&amp;#39; with &amp;#39;src&amp;#39; [zs.]&#10; xor dst src # Bitwise XOR &amp;#39;dst&amp;#39; with &amp;#39;src&amp;#39; [zs.]&#10; off dst src # Clear &amp;#39;src&amp;#39; bits in &amp;#39;dst&amp;#39; [zs.]&#10; test dst src # Bit-test &amp;#39;dst&amp;#39; with &amp;#39;src&amp;#39; [zs.]&#10;&#10; shl dst src # Shift &amp;#39;dst&amp;#39; left into x-bit by &amp;#39;src&amp;#39; bits [zsx]&#10; shr dst src # Shift &amp;#39;dst&amp;#39; right into x-bit by &amp;#39;src&amp;#39; bits [zsx]&#10; rol dst src # Rotate &amp;#39;dst&amp;#39; left by &amp;#39;src&amp;#39; bits [...]&#10; ror dst src # Rotate &amp;#39;dst&amp;#39; right by &amp;#39;src&amp;#39; bits [...]&#10; rxl dst src # Rotate &amp;#39;dst&amp;#39; with x-bit left by &amp;#39;src&amp;#39; bits [zsx]&#10; rxr dst src # Rotate &amp;#39;dst&amp;#39; with x-bit right by &amp;#39;src&amp;#39; bits [zsx]&#10;&#10; mul src # Multiplication of &amp;#39;A&amp;#39; and &amp;#39;src&amp;#39; into &amp;#39;D&amp;#39; [...]&#10; div src # Division of &amp;#39;D&amp;#39; by &amp;#39;src&amp;#39; into &amp;#39;A&amp;#39;, &amp;#39;C&amp;#39; [...]&#10;&#10; zxt # Zero-extend &amp;#39;B&amp;#39; to &amp;#39;A&amp;#39; [...]&#10; eq # Set Zero and clear Borrow [z._]&#10; gt # Clear Zero and Borrow [_._]&#10; lt # Clear Zero and set Borrow [_.b]&#10; setx # Set x-bit [--x]&#10; clrx # Clear x-bit [--_]&#10;&#10; Comparisons:&#10; cmp dst src # Compare &amp;#39;dst&amp;#39; with &amp;#39;src&amp;#39; [zsc]&#10; cmpn dst src cnt # Compare &amp;#39;cnt&amp;#39; bytes &amp;#39;dst&amp;#39; with &amp;#39;src&amp;#39; [z..]&#10; slen dst src # Set &amp;#39;dst&amp;#39; to the string length of &amp;#39;src&amp;#39; [...]&#10; memb src cnt # Find B in &amp;#39;cnt&amp;#39; bytes of &amp;#39;src&amp;#39; memory [z..]&#10; null src # Compare &amp;#39;src&amp;#39; with 0 [zs_]&#10; nulp src # Check &amp;#39;src&amp;#39; for null-pointer [z..]&#10; nul4 # Compare four bytes in &amp;#39;A&amp;#39; with 0 [zs_]&#10;&#10; Byte addressing:&#10; set dst src # Set &amp;#39;dst&amp;#39; byte to &amp;#39;src&amp;#39; [---]&#10; nul src # Compare byte &amp;#39;src&amp;#39; with 0 [z..]&#10;&#10; Types:&#10; cnt src # Non-&amp;#39;z&amp;#39; if small number [z..]&#10; big src # Non-&amp;#39;z&amp;#39; if bignum [z..]&#10; num src # Non-&amp;#39;z&amp;#39; if number [z..]&#10; sym src # Non-&amp;#39;z&amp;#39; if symbol [z..]&#10; atom src # Non-&amp;#39;z&amp;#39; if atom [z..]&#10;&#10; Floating point:&#10; ldd # Load double value pointed to by &amp;#39;C&amp;#39;&#10; ldf # Load float value pointed to by &amp;#39;C&amp;#39;&#10; fixnum # Convert double with scale &amp;#39;E&amp;#39; to fixnum in &amp;#39;E&amp;#39;&#10; float # Convert fixnum with scale &amp;#39;A&amp;#39; pointed to by &amp;#39;X&amp;#39;&#10; std # Store double value at address &amp;#39;Z&amp;#39;&#10; stf # Store float value at address &amp;#39;Z&amp;#39;&#10;&#10; Flow control:&#10; jmp adr # Jump to &amp;#39;adr&amp;#39; [---]&#10; jz adr # Jump to &amp;#39;adr&amp;#39; if Zero [---]&#10; jnz adr # Jump to &amp;#39;adr&amp;#39; if not Zero [---]&#10; js adr # Jump to &amp;#39;adr&amp;#39; if Sign [---]&#10; jns adr # Jump to &amp;#39;adr&amp;#39; if not Sign [---]&#10; jc adr # Jump to &amp;#39;adr&amp;#39; if Carry set [---]&#10; jnc adr # Jump to &amp;#39;adr&amp;#39; if Carry not set [---]&#10; jb adr # Jump to &amp;#39;adr&amp;#39; if Borrow set [---]&#10; jnb adr # Jump to &amp;#39;adr&amp;#39; if Borrow not set [---]&#10; jx adr # Jump to &amp;#39;adr&amp;#39; if x-bit set [---]&#10; jnx adr # Jump to &amp;#39;adr&amp;#39; if x-bit not set [---]&#10;&#10; call adr # Call &amp;#39;adr&amp;#39;&#10; cc adr(src ..) # C-Call to &amp;#39;adr&amp;#39; with &amp;#39;src&amp;#39; arguments&#10; cc adr reg # C-Call to &amp;#39;adr&amp;#39; with top of stacked args in &amp;#39;reg&amp;#39;&#10;&#10; ret # Return [---]&#10; catch # Prepare non-local jump [---]&#10; throw # Resolve non-local jump [---]&#10; func # Convert &amp;#39;E&amp;#39; to function pointer&#10; begin # Called from foreign function&#10; return # Return to foreign function&#10;&#10; Stack Manipulations:&#10; push src # Push &amp;#39;src&amp;#39; [---]&#10; pop dst # Pop &amp;#39;dst&amp;#39; [---]&#10; tos dst # Get return entry [---]&#10; link # Setup frame [---]&#10; tuck src # Extend frame [---]&#10; drop # Drop frame [---]&#10;&#10; Evaluation:&#10; eval # Evaluate expression in &amp;#39;E&amp;#39;&#10; eval+ # Evaluate expression in partial stack frame&#10; eval/ret # Evaluate expression and return&#10; exec reg # Execute lists in &amp;#39;reg&amp;#39;, ignore results&#10; prog reg # Evaluate expressions in &amp;#39;reg&amp;#39;, return last result&#10;&#10; System:&#10; initData # Init runtime data&#10; initCode # Init runtime code&#10; initMain # Command in X, arguments in Y, last pointer in Z&#10; initLib # Library function pointer in A&#10; stop # Stop (system-dependent)&#10;&#10;========================================================================&#10;&#10; Naming conventions:&#10;&#10; Lisp level functions, which would be all of the form &amp;#39;doXyzE_E&amp;#39;, are written&#10; as &amp;#39;doXyz&amp;#39; for brevity.&#10;&lt;/code&gt;&lt;/pre&gt;</description></item><item><title>The Picolisp Machine</title><link>https://thevikidtruth.com/computing/pilmachine/</link><pubDate>Fri, 25 Nov 2016 22:39:56 +0400</pubDate><guid>https://thevikidtruth.com/computing/pilmachine/</guid><description>&lt;p&gt;&lt;span class="missing-link"&gt;Quicklinks&lt;/span&gt; | &lt;span class="missing-link"&gt;Readinglist&lt;/span&gt; | &lt;span class="missing-link"&gt;Computing&lt;/span&gt; | &lt;a href="https://thevikidtruth.com/computing/picolisp/"&gt;Picolisp&lt;/a&gt; | &lt;a href="http://software-lab.de/doc/ref.html#vm" rel="noopener"&gt;The Picolisp Reference&lt;/a&gt; | &lt;a href="https://thevikidtruth.com/computing/pilasm/"&gt;ASM&lt;/a&gt; |&#10;&lt;a href="https://thevikidtruth.com/computing/piltutorials/"&gt;Pil Tutorials&lt;/a&gt; |&lt;/p&gt;&#10;&lt;h1 id="the-picolisp-machine"&gt;The Picolisp Machine&lt;/h1&gt;&#10;&lt;p&gt;One of the key features of the picolisp language is that high-level constructs&#10;of the language directly map to the underlying machinery,&#10;making the whole system both understandable and predictable.&lt;/p&gt;&#10;&lt;p&gt;&lt;strong&gt;Also please note that there are still a number of possible errors in this Document, it is under active development&lt;/strong&gt;&lt;/p&gt;&#10;&lt;h4 id="data-types"&gt;Data Types&lt;/h4&gt;&#10;&lt;p&gt;These are the fundamental datatypes in Picolisp:&lt;/p&gt;</description></item><item><title>PicoLisp</title><link>https://thevikidtruth.com/computing/picolisp/</link><pubDate>Thu, 12 May 2016 01:09:25 +0400</pubDate><guid>https://thevikidtruth.com/computing/picolisp/</guid><description>&lt;p class="right"&gt;&lt;img src="https://thevikidtruth.com/assets/picos.png" alt="picos"&gt;&lt;/p&gt;&#10;&lt;p&gt;&lt;a href="https://thevikidtruth.com/computing/computingfreedom/"&gt;computingFreedom&lt;/a&gt; |&#10;&lt;span class="missing-link"&gt;Quicklinks&lt;/span&gt; | &lt;span class="missing-link"&gt;Readinglist&lt;/span&gt; | &lt;a href="https://thevikidtruth.com/computing/bciyh/"&gt;Build&lt;/a&gt; |&#10;&lt;a href="https://thevikidtruth.com/computing/picolisp/"&gt;Picolisp&lt;/a&gt; | &lt;a href="https://thevikidtruth.com/computing/pilmachine/"&gt;Picolisp Machine&lt;/a&gt; | &lt;span class="missing-link"&gt;Pil sources&lt;/span&gt; | &lt;a href="https://thevikidtruth.com/computing/piltutorials/"&gt;Pil Tutorials&lt;/a&gt; |&#10;&lt;span class="missing-link"&gt;Linux&lt;/span&gt; | &lt;span class="missing-link"&gt;BASH&lt;/span&gt; |&#10;&lt;a href="https://thevikidtruth.com/computing/cprogramming/"&gt;C Programmming&lt;/a&gt; |&#10;&lt;a href="https://thevikidtruth.com/computing/os/"&gt;Operating Systems&lt;/a&gt; |&#10;&lt;span class="missing-link"&gt;JavaScript&lt;/span&gt; |&#10;&lt;span class="missing-link"&gt;Emacs&lt;/span&gt; | &lt;a href="https://thevikidtruth.com/computing/vim/"&gt;vim&lt;/a&gt; |&#10;&lt;span class="missing-link"&gt;Pharo Smalltalk&lt;/span&gt; |&#10;&lt;a href="https://thevikidtruth.com/computing/computersecurity/"&gt;Computer Security&lt;/a&gt; |&#10;&lt;a href="https://thevikidtruth.com/computing/penti/"&gt;Penti&lt;/a&gt;&lt;/p&gt;&#10;&lt;h1 id="picolisp"&gt;PicoLisp&lt;/h1&gt;&#10;&lt;p&gt;If you have always been interested in Lisp and its variant forms such as **Common&#10;Lisp, Scheme, &lt;a href="https://racket-lang.org" rel="noopener"&gt;Racket&lt;/a&gt;, &lt;strong&gt;&lt;a href="http://www.newlisp.org" rel="noopener"&gt;newLISP&lt;/a&gt;&lt;/strong&gt; and the like, I think that you are really going to&#10;love &lt;strong&gt;&lt;a href="http://picolisp.com" rel="noopener"&gt;Picolisp&lt;/a&gt;&lt;/strong&gt;.&lt;/p&gt;&#10;&lt;p&gt;The original 32 bit implementation is written in &lt;strong&gt;C&lt;/strong&gt;, and supports 32bit programming.&#10;Over the years the language has grown and is now available in 64 bit. The really cool&#10;things is this time the language is implemented by a [assembler written in picolisp](&lt;a href="http://software-lab.de/doc64/asm" rel="noopener"&gt;http://software-lab.de/doc64/asm&lt;/a&gt;&#10;generic).&#10;The &lt;a href="http://picolisp.com" rel="noopener"&gt;picolisp website&lt;/a&gt; has all the&#10;&lt;a href="http://picolisp.com/wiki/?Documentation" rel="noopener"&gt;documentation&lt;/a&gt; that you&#10;need to get setup and running. It also has an extensive &lt;a href="http://software-lab.de/doc/tut.html" rel="noopener"&gt;tutorial&lt;/a&gt; on the&#10;language. So you can get started there.&lt;/p&gt;</description></item></channel></rss>