;;; -*-mode:lisp;package:lambda;base:8 -*- ;; this file will have the diagnostic for the multiplier chip (defun write-multiplier-2-complement (data) (write-spy-reg-and-check data) (lam-execute (write) lam-ir-op lam-op-alu lam-ir-ob lam-ob-alu lam-ir-m-src lam-m-src-spy-reg lam-ir-func-dest lam-func-dest-multiplier lam-ir-aluf lam-alu-setm lam-ir-slow-dest 1 lam-ir-mf 3)) (defun write-multiplier (data) (write-spy-reg-and-check data) (lam-execute (write) lam-ir-op lam-op-alu lam-ir-ob lam-ob-alu lam-ir-m-src lam-m-src-spy-reg lam-ir-func-dest lam-func-dest-multiplier lam-ir-aluf lam-alu-setm lam-ir-slow-dest 1 lam-ir-mf 0)) (defun read-multiplier-ft () (lam-execute (read) lam-ir-op lam-op-alu lam-ir-ob lam-ob-alu lam-ir-m-src lam-m-src-multiplier-ft lam-ir-aluf lam-alu-setm) (read-mfo)) (defun read-multiplier () (lam-execute (read) lam-ir-op lam-op-alu lam-ir-ob lam-ob-alu lam-ir-m-src lam-m-src-multiplier lam-ir-aluf lam-alu-setm) (read-mfo)) (defun write-multiplier-stepping (data) (write-spy-reg-and-check data) (lam-execute (executor lam-execute-noclocks) lam-ir-op lam-op-alu lam-ir-ob lam-ob-alu lam-ir-m-src lam-m-src-spy-reg lam-ir-func-dest lam-func-dest-multiplier lam-ir-aluf lam-alu-setm lam-ir-slow-dest 1) (sm-step-loop)) (defun read-multiplier-stepping () (lam-execute (executor lam-execute-noclocks) lam-ir-op lam-op-alu lam-ir-ob lam-ob-alu lam-ir-m-src lam-m-src-multiplier-ft lam-ir-aluf lam-alu-setm) (sm-step-loop)) (defun multiply-16-bit-unsigned-number (data1 data2) (let* ((low-half 177777) (data (+ (logand low-half data1) (dpb (ldb 020 data2) 2020 0)))) (write-multiplier data) (read-multiplier-ft)))