From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mp11.migadu.com ([2001:41d0:8:6d80::]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits)) by ms0.migadu.com with LMTPS id EP6oII3fFmJ0iQAAgWs5BA (envelope-from ) for ; Thu, 24 Feb 2022 02:29:49 +0100 Received: from aspmx1.migadu.com ([2001:41d0:8:6d80::]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits)) by mp11.migadu.com with LMTPS id eDf7HY3fFmLoTgEA9RJhRA (envelope-from ) for ; Thu, 24 Feb 2022 02:29:49 +0100 Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by aspmx1.migadu.com (Postfix) with ESMTPS id 390093A199 for ; Thu, 24 Feb 2022 02:29:49 +0100 (CET) Received: from localhost ([::1]:38814 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1nN2x2-0001rD-58 for larch@yhetil.org; Wed, 23 Feb 2022 20:29:48 -0500 Received: from eggs.gnu.org ([209.51.188.92]:51490) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1nMzaN-0007ra-Ft for guix-devel@gnu.org; Wed, 23 Feb 2022 16:54:11 -0500 Received: from mout.web.de ([212.227.17.11]:48329) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1nMzaK-0003at-I7 for guix-devel@gnu.org; Wed, 23 Feb 2022 16:54:11 -0500 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=web.de; s=dbaedf251592; t=1645653245; bh=tbMj06Uth/2mLsIQLx9PqZJxiRE/WXM0jXI9eLqsZxg=; h=X-UI-Sender-Class:Date:From:To:Subject; b=LoFb3mu/3OqGPPt04oqKuGfwMp0YmLlap2FkjpFwZW8R2HWO1dR/QmYiCt4WNvBiM FHwJJLpA7WD3laiMPi6BCj0i1NKaEyY0MGQgN9YPLoCO39EVRKe4i/JcRZmXHyIm/V MDE46qQiL9S/xtofHnVG64d2ktK/qu2QENYaE9J4= X-UI-Sender-Class: c548c8c5-30a9-4db5-a2e7-cb6cb037b8f9 Received: from localhost ([188.110.249.218]) by smtp.web.de (mrweb105 [213.165.67.124]) with ESMTPSA (Nemesis) id 1MKuON-1ng1T60Hvx-00LMVN for ; Wed, 23 Feb 2022 22:54:05 +0100 Date: Wed, 23 Feb 2022 22:54:03 +0100 From: Stefan Karrmann To: guix-devel@gnu.org Subject: announcement of minimal binary boot (mb2) with indirection table forth Message-ID: <20220223215402.GB93204@web.de> MIME-Version: 1.0 Content-Type: multipart/signed; micalg=pgp-sha256; protocol="application/pgp-signature"; boundary="B4IIlcmfBL/1gGOG" Content-Disposition: inline User-Agent: Mutt/1.10.1 (2018-07-13) X-Provags-ID: V03:K1:cZX9tC5n02wvrNcI1DJtcLa6e9gzgmhe/WmdT8Kk2FeZoXV+Fxg XaRGcQbZDhDUGFPC0EF0wgoUPrebevvZC+Iye7lD/HJCRrEhwdTrfAJ8qt0DjSkuPIHz+Nc yrojm4liiDeDFg/TPZl5Q02dYpUvvB3SnUg9NBAwSQkXgJSnMgSCafyglJl3bNzuhpoNrn1 3L65pnl0hGjSxsgMRqNhA== X-UI-Out-Filterresults: notjunk:1;V03:K0:UhoiE2ray14=:AAIPR4v7DPopaUb/BJ6ko7 EzTGOMUFCMk/06I2FtQQuNAp5a1+Et3gQPA2CilGell/RS/BiiEAhehBPrU78PLbHjY8esJ5R ZiRD6jsz5Kjmfh/gaqvxwEH2sYIZqlXaLhjX2VCz424aUFw7BqxMgP0ekgVPcZV6C1As04ocw cxmIQng2kdL//ShvClJ+ZYCa9rchDEoATz6jybzs7itdzxhY8PvpTfTUl95hEaW0NPycwKKvc LmwPstZXk74UOSy7xo2EzioMwVES8myps5KhTXNTF8E1a+ZQZrXACzy1vtEC8+rMRHLktSRAz FcgdGbU+Bzxeu3uQkSnLp3hDzNmHJ7ct2K+IENNs9FnbwUKKKEW7tnwSyW5ybOEXEzC8P4EED m4a0hdvcwLcvLG3Rj1bRl00fAniDj1C2gadQ3Uq9oOmaXuxOfeAIf5z45uRmy4zTCg3hpKuBZ fgZUILDjdKZ/Liy5y2SFOjEfZueboWCAD+epPO71Ui5rqEDVAYd08LBmtrqq4ZEeNpFqxpmHN AKiWiAfqmQX50/hUoSv/XMR4mjxg/hbd+68BpYvh0vhZWcJ0vx3vB/JdM0hPztXbhl4NTD3vU g3tQLXe/U7D9p4tpBMpA84AdmOG7U0sHSbGXtlNSx16jB1VmyOehnhiqlNMzRhVJpJBYb8jcY urdIcvnELEK9J965z/quk4w5sp2kjPl8gabVknVGkC9dFx1VwYpBq61EAqZnh1a/1pjxkZh3J 9+6vD+5vR4I0TJe/EYCUiuEASRN+sfjsoAdOVB/4lmTzF0lAMQx/SXKk0jFkfaE4IuKCcohyc RgtmIJLoyuAECLlpCrzwor1lhsDW0L0aXxRn7Zr6nF6XbnLVFMzLW2y2DxIxRJnQTROBzPZ8n xNZvYRpLI68ETXEVCwtCgjJnN9MVz84V52LOevr/FM8sIOObx9zRi4OOAvfHrEETI7JR8LLWa TXbZaw8cw5POq+ZNLQj9wVWmTcvrBHTNh+FQcTOdgD4zOIKFGoOcHOjVA1rSk6AtD+E2xUVjP NqZPKiZWLBKB074SODBEBEjmt/ySi4Wh/LfyXbFHCfSv5QmTLVWFNA4FDt8tMknneOMG5KA51 HAAKnBJ+7gR7jM= Received-SPF: pass client-ip=212.227.17.11; envelope-from=s.karrmann@web.de; helo=mout.web.de X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, FREEMAIL_FROM=0.001, RCVD_IN_MSPIKE_H3=0.001, RCVD_IN_MSPIKE_WL=0.001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001, T_SCC_BODY_TEXT_LINE=-0.01 autolearn=ham autolearn_force=no X-Spam_action: no action X-Mailman-Approved-At: Wed, 23 Feb 2022 20:28:56 -0500 X-BeenThere: guix-devel@gnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: "Development of GNU Guix and the GNU System distribution." List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: guix-devel-bounces+larch=yhetil.org@gnu.org Sender: "Guix-devel" X-Migadu-Flow: FLOW_IN X-Migadu-Country: US ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=yhetil.org; s=key1; t=1645666189; h=from:from:sender:sender:reply-to:subject:subject:date:date: message-id:message-id:to:to:cc:mime-version:mime-version: content-type:content-type:list-id:list-help:list-unsubscribe: list-subscribe:list-post:dkim-signature; bh=AM301UV1tjxb8cu1I7pqcGe4fjDMAN6JI5C68/ZDca4=; b=rdiAMaELLWofCJ1TuBPqAJcdiqr+v5hIdgZgjM1B8XAMZ3CbprBuD1LpeUXikm3Sk0El7K +siNoVSv/RBIH9/fNemOZ0KWSFARKlL7TuWe1DG1hixJbH8RCPU0jSLVaVrYvEZkafkis7 sgJCcozBPbzAiBlyiYaFSPSUE4qjZRIY5AhWQzBlQnynK40y0gTw1FMVW8+l2hH1/Jfvd1 QNTzJD//dKyCy9snar3zH0kZHGGoWu956lLQ6i+5uHe2kSyUt0tNhvkzGVnfD1CH40u/JA CwROCKiXGQ6RHvc9cLI4bjjCyMRbsNSKVStV+cn1mJP9lvjvUSRV+3FkokqD5Q== ARC-Seal: i=1; s=key1; d=yhetil.org; t=1645666189; a=rsa-sha256; cv=none; b=dSYJnEmyxxtfukgx8j9v8l7fRCiWoKwnLrUemt5bUgwrOCILH1Io0hnmDSDZvorf4W1VVQ 6UABN9PvVbhbeaOaszbTsmv3ECW5X2bW89ZA9A5F2tE5WIg21p6raQlQ41hJr0uU5mzCz/ yrAIGpzB3S58rvTijJw9HR7toUqm/xalbXcUV4kRKTVTLQcm/gbkgVdQIb5dNQtk3sN2Y/ HQIIdgoh2IuFH9vXnY7XDEP9GhFpp0JIPcbY6fatrVDBJ+eaCIgj/D6ufK2mH3Os4a0PFd E+ip2qMdMvMG1bHHnPklpF6EQPxjKA4cGmb2f6Z+7xwhcDwH0+i5Ar6f470mZw== ARC-Authentication-Results: i=1; aspmx1.migadu.com; dkim=pass header.d=web.de header.s=dbaedf251592 header.b="LoFb3mu/"; dmarc=pass (policy=none) header.from=web.de; spf=pass (aspmx1.migadu.com: domain of "guix-devel-bounces+larch=yhetil.org@gnu.org" designates 209.51.188.17 as permitted sender) smtp.mailfrom="guix-devel-bounces+larch=yhetil.org@gnu.org" X-Migadu-Spam-Score: -7.43 Authentication-Results: aspmx1.migadu.com; dkim=pass header.d=web.de header.s=dbaedf251592 header.b="LoFb3mu/"; dmarc=pass (policy=none) header.from=web.de; spf=pass (aspmx1.migadu.com: domain of "guix-devel-bounces+larch=yhetil.org@gnu.org" designates 209.51.188.17 as permitted sender) smtp.mailfrom="guix-devel-bounces+larch=yhetil.org@gnu.org" X-Migadu-Queue-Id: 390093A199 X-Spam-Score: -7.43 X-Migadu-Scanner: scn1.migadu.com X-TUID: aGTM7GignMX+ --B4IIlcmfBL/1gGOG Content-Type: text/plain; charset=us-ascii Content-Disposition: inline Content-Transfer-Encoding: quoted-printable Dear all, the articles [1, 2] about the struggle to reduce the binary seed for the guix bootstrap was really interesting for me. I took up the challenge to reduce the binary seed further. [1] https://guix.gnu.org/manual/en/html_node/Reduced-Binary-Seed-Bootstrap.= html [2] https://guix.gnu.org/en/blog/2020/guix-further-reduces-bootstrap-seed-t= o-25/ My hard binay seed is a monitor, which takes octal encoded octets (aka bytes) as input, writes the octets in reverse order into the memory, and finally jumps to the new code. It's size is: - for octal keyboard input on x86: 32 octets (!) - for octal uninitialized serial input on x86: 34 octets - for octal initialized serial input on x86: 41 octets - for octal linux input on x86: 48 octets - for octet keyboard input on x86: 18 octets This make sense, if we use the alt numpad input method. For those, who don't regard octal encoded octets as real source code, I provide a second binary seed which implements a forth nucleus. I call it itf or indirection table forth. The sizes for this interpreter are much bigger than the sizes of the monitors but still small in comparision to a boot sector (512 octets): - 75 octets for bios monitor on x86 - **__81__** octets for bios standalone on x86 (!) i.e. six of them fit easily into one boot sector! For easier development we have: - 102 octets for linux monitor on 32 bit x86 - 101 octets for linux standalone on 32 bit x86 The bootstrap code in forth source code is still in its development phase. I've compiled and tested the first colon words. The next task is a more normal forth interpreter and a regular dictionary. As it is common in forth, we define new code words, i.e. primitives in machine code. (Think of asm(...) in gcc.) At start it is hard work on such a tiny base. But already after 2 new words, it is mainly writing down the bit pattern of the octets for the machine code in forth source code. It still needs improvement of the forth word set. Afterwards, we can use it to bootstrap either gForth or a scheme interpreter [3]. AFAIK, we already have a c-compiler in scheme, cf. [4]. Therfore, this will open the path to c programs etc.pp. I'll appreciate help on this path. [3] http://www.complang.tuwien.ac.at/~schani/oldstuff/scheme_in_forth.tar.gz [4] https://www.gnu.org/software/mes/ You find git repository of this project at: https://codeberg.org/StefanK/MinimalBinaryBoot IMHO, we can transfer both, the monitor and the itf, easily to other architectures, i.e. cpu. I'm curious when someone writes a smaller binary seed. On [5], we read that brainf#*k is down to 99 bytes (on x86) but I haven't found the source. Moreover, who want's to write source in it? [5] https://justine.lol/sectorlisp2/ Kind regards, --=20 Stefan Karrmann Sichere Kommunikation? GPG: 0x8C3260C01550B612E4C5730D22E42112094CE53F --B4IIlcmfBL/1gGOG Content-Type: application/pgp-signature; name="signature.asc" -----BEGIN PGP SIGNATURE----- iHUEABEIAB0WIQTgp2U2yyWrn5cDAu+hKuIrXrO0NwUCYhas5wAKCRChKuIrXrO0 N2NjAPwMPQ/uQcO7bbfRAGakL+UJkcaQBUHxN6F+utr6c3aWyQEAl7jwzDHQ99ET 8eDYaCLLTsi1J+Ry+AY4Z1ODcI0vSb4= =pS5J -----END PGP SIGNATURE----- --B4IIlcmfBL/1gGOG--