;;; -*- Mode:LISP; Package:NEW-MATH; Base:10; Readtable:CL -*- (defun create-n (n) (do ((n n (1- n)) (a () (push () a))) ((= n 0) a))) (defun iterative-div2 (l) (do ((l l (cddr l)) (a () (push (car l) a))) ((null l) a))) (defun recursive-div2 (l) (cond ((null l) ()) (t (cons (car l) (recursive-div2 (cddr l)))))) (defun test-1 (l) (do ((i 300. (1- i))) ((= i 0)) (iterative-div2 l) (iterative-div2 l) (iterative-div2 l) (iterative-div2 l))) (defun test-2 (l) (do ((i 300. (1- i))) ((= i 0)) (recursive-div2 l) (recursive-div2 l) (recursive-div2 l) (recursive-div2 l))) (defun init-vm () (setq gr:*cons-cache-free* (hw:unboxed-constant 0)) (dotimes (i 1024.) (hw:write-vma (hw:dpb i (byte 14. 10.) gr:*all-zero*)) (hw:nop) (hw:write-map (hw:dpb (+ i 1024.) (byte 20. 12.) #x8f)) (hw:write-md gr:*all-zero*) (let ((base (hw:dpb i (byte 14. 10.) gr:*all-zero*))) (dotimes (j 1024.) (hw:vma-start-write (+ base j)))))) (defun cons (car cdr) (hw:write-md car) (hw:vma-start-write gr:*cons-cache-free*) (setq gr:*cons-cache-free* (1+ gr:*cons-cache-free*)) (hw:write-md cdr) (hw:vma-start-write gr:*cons-cache-free*) (setq gr:*cons-cache-free* (1+ gr:*cons-cache-free*)) (- gr:*cons-cache-free* 2)) (defun push (car cdr) (hw:write-md car) (hw:vma-start-write gr:*cons-cache-free*) (setq gr:*cons-cache-free* (1+ gr:*cons-cache-free*)) (hw:write-md cdr) (hw:vma-start-write gr:*cons-cache-free*) (setq gr:*cons-cache-free* (1+ gr:*cons-cache-free*)) (- gr:*cons-cache-free* 2)) (defun car (l) (hw:vma-start-read-early l) (hw:read-md)) (defun cdr (l) (hw:vma-start-read-cdr-early l) (hw:read-md)) (defun cddr (l) (hw:vma-start-read-cdr-early l) (hw:vma-start-read (hw:read-md)) (hw:read-md)) (defun illop () (hw:nop) (hw:nop) (hw:write-processor-control #x80) (hw:nop) (hw:nop) (hw:nop) (hw:write-processor-control 0) (hw:nop) (hw:nop) nil) (defafun init-gr () (movei gr:*all-zero* 0) (movei gr:*nil* 0) (movei gr:*zero* '0) (movei gr:*one* '1) (movei gr:*two* '2) (movei gr:*three* '3) (movei gr:*minus-one* '-1) (returni nil)) (defun test-div2 () (do () (()) (init-gr) (hw:write-processor-control 7.) (init-vm) (hw:write-processor-control #x80) (hw:nop) (hw:nop) (hw:nop) (hw:nop) (hw:write-processor-control 0.) (let ((l (create-n 100.))) (do ((led 0 (- 1 led))) (()) (setq gr:*cons-cache-free* #x1000) (hw:write-memory-control (hw:dpb led (byte 1. 7.) (hw:read-memory-control))) (iterative-div2 l) )))) (defun kbug:run-div2 () (lam:k-reset) (lam:k-init) (lam:k-init-virtual-memory) (lam:ch-init) (kbug:load-fcns 'new-math:(init-gr init-vm test-div2 create-n iterative-div2 recursive-div2 test-1 test-2 push )) (kbug:kbug 'test-div2))