From 2b6938788cb269ad19ecfecf6c58bcdb067e3988 Mon Sep 17 00:00:00 2001 From: rsiddharth Date: Tue, 8 Aug 2017 04:31:09 +0000 Subject: guile: Add (net ricketyspace taocp utils mix) module. * guile/net/ricketyspace/taocp/utils/mix.scm: New file. --- guile/net/ricketyspace/taocp/utils/mix.scm | 25 +++++++++++++++++++++++++ 1 file changed, 25 insertions(+) create mode 100644 guile/net/ricketyspace/taocp/utils/mix.scm diff --git a/guile/net/ricketyspace/taocp/utils/mix.scm b/guile/net/ricketyspace/taocp/utils/mix.scm new file mode 100644 index 0000000..c92a61b --- /dev/null +++ b/guile/net/ricketyspace/taocp/utils/mix.scm @@ -0,0 +1,25 @@ +;;;; copyright 2016 rsiddharth +;;;; under gnu general public license version 3 or higher. + +(define-module (net ricketyspace taocp utils mix) + #:use-module (srfi srfi-13) + #:use-module (srfi srfi-1) + #:export (word-to-decimal + nth-byte)) + +;;;; Functions that facilitate hacking in MIX + +;;; All functions in this module assume that a byte is 6 bits. + +(define (word-to-decimal word) + "Converts WORD to a decimal number. + +WORD must be a string in this format: + + ±:00:00:00:00:00" + (let ((bytes (string-split word #\:))) + (fold (lambda (byte-number d) + (+ (* (expt (expt 2 6) (- 4 byte-number)) + (string->number (list-ref bytes byte-number))) + d)) + 0 (iota 5)))) -- cgit v1.2.3