URL
https://opencores.org/ocsvn/igor/igor/trunk
Subversion Repositories igor
[/] [igor/] [trunk/] [microprogram_assembler/] [mem.lisp] - Rev 3
Compare with Previous | Blame | View Log
(in-package #:sexptomem)
(sexp-to-memory
(%nil
%t
%if
%quote
%lambda
%progn
%cons
%car
%cdr
%eval
%apply
%type
%make-array
%array-size
%array-get
%array-set
%make-symbol
%symbol-to-string
%char-to-int
%int-to-char
%get-char
%put-char
%num-devices
%device-type
%set-address
%get-address
%error
%add
%sub
%mul
%div
%bitwise-and
%bitwise-or
%bitwise-not
%bitwise-shift
%current-environment
%make-eval-state
%eval-partial
%define
%undefine
%eq?
%num-eq?
%char-eq?
%less-than?
%mod
%set!
%set-car!
%set-cdr!
%phase-eval
%phase-eval-args
%phase-apply
%phase-eval-if
%phase-initial
%phase-env-lookup
%phase-env-lookup-local
%phase-apply-function
%phase-bind-args
%phase-eval-progn
%phase-eval-args-top
%phase-eval-args-cdr
%phase-eval-args-cons
%phase-eval-symbol
%phase-set!
xxx3F
%timeout
%err-invalid-phase
%err-unbound-symbol
%err-invalid-param-list
%err-too-few-args
%err-too-many-args
%err-invalid-state
%err-invalid-arg-list
%err-type-error
%err-not-a-list
%err-not-a-function
%err-invalid-function
%err-malformed-form
%err-invalid-builtin
%err-invalid-array-index
%err-invalid-env
%err-not-a-pair)
:1000
(%progn
(%define (%quote =) (%lambda (a b) (%num-eq? a b)))
(%define (%quote -) (%lambda (a b) (%sub a b)))
(%define (%quote +) (%lambda (a b) (%add a b)))
(%define (%quote *) (%lambda (a b) (%mul a b)))
;; (%define (%quote print-string)
;; (%lambda (str devnr)
;; (%progn
;; (%define (%quote iter)
;; (%lambda (n) (%if (= n (%array-size str))
;; %nil
;; (%progn
;; (%put-char devnr (%array-get str n))
;; (iter (+ n 1))))))
;; (iter 0))))
(%put-char 1 #\h)
(%put-char 1 #\e)
(%put-char 1 #\l)
(%put-char 1 #\l)
(%put-char 1 #\o)
(%put-char 1 #\Newline)
(%define (%quote count)
(%lambda (a b)
(%progn
(%define (%quote iter)
(%lambda (n)
(%if (= n b) n (iter (+ n 1)))))
(iter a))))
;; (count 0 #x1000000)
(%define (%quote echo)
(%lambda (devnr)
(%progn (%put-char devnr (%get-char devnr)) (echo devnr))))
;; (echo 1)
(%define (%quote a) (%make-array 5 2))
(%array-get a 0)
(%array-set a 1 (+ (%array-get a 0)
(%array-get a 1)))
(%array-set a 1 (+ (%array-get a 0)
(%array-get a 1)))
(%define (%quote r) %nil)
(%set! (%quote r) 2)
(%define
(%quote fact)
(%lambda (n) (%if (= n 1) 1 (* n (fact (- n 1))))))
(%set! (%quote r) (fact (- 12 (* (+ 3 1) 2))))
(%set! (%quote r) (%array-get a 1))
(%set! (%quote r) (%cons r a))
;;(%error (%quote foo))
;;(%define (%quote foo) (%lambda (a . foo) foo))
(%set! (%quote r) (foo 1 2 3))
r))
;; (%add 2 3)
;; (%eval-partial
;; (%make-eval-state (%quote (%add 11 5))
;; (%current-environment))
;; 0)
;; (%apply
;; (%lambda (p n) (%apply p (%cons p (%cons n %nil))))
;; (%cons (%lambda (p n)
;; (%if (%num-eq? n 1)
;; 1
;; (%mul n (%apply p (%cons p (%cons (%sub n 1) %nil))))))
;; (%cons 4 %nil)))
;; (%apply (%lambda (a b) (%add a (%mul b 2))) (%quote (4 5))))
;; (sexp-to-memory
;; (%if nil (%add 5 2) 3))