# HG changeset patch # User Steve Losh # Date 1481999429 18000 # Node ID 768effcba68b9944679460da075d6e48c1d5e053 # Parent 74a28f68aa629537f788f8e528f8ac5b24374961 Clean up debugger, more docstrings diff -r 74a28f68aa62 -r 768effcba68b src/debugger.lisp --- a/src/debugger.lisp Fri Dec 16 23:41:37 2016 -0500 +++ b/src/debugger.lisp Sat Dec 17 13:30:29 2016 -0500 @@ -95,11 +95,12 @@ (defun print-disassembled-instruction (array index) (destructuring-bind (address instruction disassembly bits) (instruction-information array index) - (format t "~3,'0X: ~4,'0X ~24A ~8A~%" - address - instruction - (or disassembly "") - bits))) + (let ((*print-base* 16)) + (format t "~3,'0X: ~4,'0X ~24A ~8A~%" + address + instruction + (or disassembly "") + bits)))) (defun disassemble-instructions (array start) (iterate @@ -113,7 +114,7 @@ (sleep 0.001))) -;;;; Debugger ----------------------------------------------------------------- +;;;; Debugger API ------------------------------------------------------------- (defun debugger-pause (debugger) (with-debugger (debugger) (setf paused t print-needed t))) @@ -134,15 +135,9 @@ (defun debugger-print (debugger chip) (with-debugger (debugger) (when (and paused print-needed) + (setf print-needed nil) (let ((pc (chip-program-counter chip))) - (setf print-needed nil) - (destructuring-bind (address instruction disassembly bits) - (instruction-information (chip-memory chip) pc) - (format t "~3,'0X: ~4,'0X ~24A ~8A~%" - address - instruction - (or disassembly "") - bits)) + (print-disassembled-instruction (chip-memory chip) pc) (mapc (rcurry #'funcall pc) callbacks-arrived)))) (values)) @@ -150,23 +145,20 @@ (debugger-paused debugger)) (defun debugger-check-breakpoints (debugger address) - (let ((result (member address (debugger-breakpoints debugger)))) - (if result - (progn (debugger-pause debugger) - t) - nil))) + (if (member address (debugger-breakpoints debugger)) + (progn (debugger-pause debugger) + t) + nil)) (defun debugger-should-wait-p (debugger address) (with-debugger (debugger) - (if (not paused) - ;; If we're not paused, we just need to check for breakpoints - (debugger-check-breakpoints debugger address) - ;; Otherwise we're paused - (if take-step - (progn (setf take-step nil ; if we're paused, but are ready to step, go - print-needed t) - nil) - t)))) ; otherwise we're fully paused -- wait + (cond + ;; If we're not paused, we just need to check for breakpoints. + ((not paused) (debugger-check-breakpoints debugger address)) + ;; If we're paused, but are ready to step, go. + (take-step (setf take-step nil print-needed t) nil) + ;; Otherwise we're fully paused -- wait + (t t)))) (defun debugger-add-breakpoint (debugger address) (pushnew address (debugger-breakpoints debugger))) diff -r 74a28f68aa62 -r 768effcba68b src/emulator.lisp --- a/src/emulator.lisp Fri Dec 16 23:41:37 2016 -0500 +++ b/src/emulator.lisp Sat Dec 17 13:30:29 2016 -0500 @@ -334,8 +334,12 @@ (defconstant +pi+ (float pi 1.0)) (defconstant +tau+ (* 2 +pi+)) (defconstant +sample-rate+ 44100d0) -(defconstant +audio-buffer-size+ 512) -(defconstant +audio-buffer-time+ (* +audio-buffer-size+ (/ +sample-rate+))) + +(defconstant +audio-buffer-size+ 512 + "The number of samples in the audio buffer.") + +(defconstant +audio-buffer-time+ (* +audio-buffer-size+ (/ +sample-rate+)) + "The total time the information in the audio buffer represents, in seconds.") (defun sqr (angle)