# HG changeset patch # User Steve Losh # Date 1482083746 18000 # Node ID af9c310b6b51fd85f296107e733c2a9291d94652 # Parent 768effcba68b9944679460da075d6e48c1d5e053 Clean up from blog post diff -r 768effcba68b -r af9c310b6b51 .lispwords --- a/.lispwords Sat Dec 17 13:30:29 2016 -0500 +++ b/.lispwords Sun Dec 18 12:55:46 2016 -0500 @@ -1,3 +1,3 @@ -(1 macro-map) +(2 macro-map) (1 register-case) (2 define-subwidget) diff -r 768effcba68b -r af9c310b6b51 src/emulator.lisp --- a/src/emulator.lisp Sat Dec 17 13:30:29 2016 -0500 +++ b/src/emulator.lisp Sun Dec 18 12:55:46 2016 -0500 @@ -1,5 +1,6 @@ (in-package :chip8) -(declaim (optimize (speed 3) (safety 1) (debug 2))) +(declaim (optimize (speed 3) (safety 0) (debug 0))) +; (declaim (optimize (speed 3) (safety 1) (debug 2))) ;;;; Constants ---------------------------------------------------------------- @@ -48,12 +49,12 @@ (values (chop 8 (ash v 1)) (get-bit 7 v))) -(defun-inline bcd (integer) - (values (-<> integer (floor <> 100) (mod <> 10)) - (-<> integer (floor <> 10) (mod <> 10)) - (-<> integer (floor <> 1) (mod <> 10)))) +(defun-inline digit (position integer &optional (base 10)) + (-<> integer + (floor <> (expt base position)) + (mod <> base))) -(defmacro macro-map ((lambda-list items) &rest body) +(defmacro macro-map (lambda-list items &rest body) (with-gensyms (macro) `(macrolet ((,macro ,(ensure-list lambda-list) ,@body)) ,@(iterate (for item :in items) @@ -212,13 +213,13 @@ (macro-map ;; LD - ((NAME ARGLIST DESTINATION SOURCE) - ((op-ld-i