2014-07-06 07:07:03 +00:00
|
|
|
(load "mu.arc")
|
|
|
|
|
2014-07-06 08:41:37 +00:00
|
|
|
(clear)
|
|
|
|
(add-fns '((test1
|
2014-07-11 05:08:08 +00:00
|
|
|
((integer 1) <- loadi 1)
|
|
|
|
((integer 2) <- loadi 3)
|
|
|
|
((integer 3) <- add (integer 1) (integer 2)))))
|
2014-07-06 08:41:37 +00:00
|
|
|
(run function*!test1)
|
2014-07-06 07:07:03 +00:00
|
|
|
(if (~iso memory* (obj 1 1 2 3 3 4))
|
|
|
|
(prn "F - load and add instructions work"))
|
2014-07-06 08:53:18 +00:00
|
|
|
|
|
|
|
(clear)
|
|
|
|
(add-fns
|
|
|
|
'((add-fn
|
2014-07-11 05:08:08 +00:00
|
|
|
((integer 3) <- add (integer 1) (integer 2)))
|
2014-07-06 08:53:18 +00:00
|
|
|
(main
|
2014-07-11 05:08:08 +00:00
|
|
|
((integer 1) <- loadi 1)
|
|
|
|
((integer 2) <- loadi 3)
|
2014-07-06 09:06:42 +00:00
|
|
|
(add-fn))))
|
2014-07-06 08:53:18 +00:00
|
|
|
(run function*!main)
|
|
|
|
;? (prn memory*)
|
|
|
|
(if (~iso memory* (obj 1 1 2 3 3 4))
|
|
|
|
(prn "F - compound functions work"))
|
2014-07-06 08:57:47 +00:00
|
|
|
|
|
|
|
(clear)
|
|
|
|
(add-fns
|
|
|
|
'((add-fn
|
2014-07-11 05:08:08 +00:00
|
|
|
((integer 3) <- add (integer 1) (integer 2))
|
2014-07-07 03:13:15 +00:00
|
|
|
(reply)
|
2014-07-11 05:08:08 +00:00
|
|
|
((integer 4) <- loadi 34))
|
2014-07-06 08:57:47 +00:00
|
|
|
(main
|
2014-07-11 05:08:08 +00:00
|
|
|
((integer 1) <- loadi 1)
|
|
|
|
((integer 2) <- loadi 3)
|
2014-07-06 09:06:42 +00:00
|
|
|
(add-fn))))
|
2014-07-06 08:57:47 +00:00
|
|
|
(run function*!main)
|
|
|
|
;? (prn memory*)
|
|
|
|
(if (~iso memory* (obj 1 1 2 3 3 4))
|
|
|
|
(prn "F - early return works"))
|
2014-07-06 09:34:03 +00:00
|
|
|
;? (quit)
|
2014-07-06 09:19:32 +00:00
|
|
|
|
|
|
|
(clear)
|
|
|
|
(add-fns
|
|
|
|
'((add-fn
|
2014-07-11 05:08:08 +00:00
|
|
|
((integer 4) <- read)
|
|
|
|
((integer 5) <- read)
|
|
|
|
((integer 3) <- add (integer 4) (integer 5))
|
2014-07-07 03:13:15 +00:00
|
|
|
(reply)
|
2014-07-11 05:08:08 +00:00
|
|
|
((integer 4) <- loadi 34))
|
2014-07-06 09:19:32 +00:00
|
|
|
(main
|
2014-07-11 05:08:08 +00:00
|
|
|
((integer 1) <- loadi 1)
|
|
|
|
((integer 2) <- loadi 3)
|
|
|
|
(add-fn (integer 1) (integer 2))
|
2014-07-06 09:34:03 +00:00
|
|
|
)))
|
2014-07-06 09:19:32 +00:00
|
|
|
(run function*!main)
|
|
|
|
;? (prn memory*)
|
|
|
|
(if (~iso memory* (obj 1 1 2 3 3 4
|
|
|
|
; add-fn's temporaries
|
|
|
|
4 1 5 3))
|
|
|
|
(prn "F - parameterized compound fn"))
|
2014-07-06 09:34:03 +00:00
|
|
|
|
|
|
|
(clear)
|
|
|
|
(add-fns
|
|
|
|
'((add-fn
|
2014-07-11 05:08:08 +00:00
|
|
|
((integer 4) <- read)
|
|
|
|
((integer 5) <- read)
|
|
|
|
((integer 6) <- add (integer 4) (integer 5))
|
|
|
|
(reply (integer 6))
|
|
|
|
((integer 4) <- loadi 34))
|
2014-07-06 09:34:03 +00:00
|
|
|
(main
|
2014-07-11 05:08:08 +00:00
|
|
|
((integer 1) <- loadi 1)
|
|
|
|
((integer 2) <- loadi 3)
|
|
|
|
((integer 3) <- add-fn (integer 1) (integer 2)))))
|
2014-07-06 09:34:03 +00:00
|
|
|
(run function*!main)
|
|
|
|
;? (prn memory*)
|
|
|
|
(if (~iso memory* (obj 1 1 2 3 3 4
|
|
|
|
; add-fn's temporaries
|
|
|
|
4 1 5 3 6 4))
|
|
|
|
(prn "F - parameterized compound fn with return value"))
|
2014-07-06 09:35:45 +00:00
|
|
|
|
|
|
|
(clear)
|
|
|
|
(add-fns
|
|
|
|
'((add-fn
|
2014-07-11 05:08:08 +00:00
|
|
|
((integer 4) <- read)
|
|
|
|
((integer 5) <- read)
|
|
|
|
((integer 6) <- add (integer 4) (integer 5))
|
|
|
|
(reply (integer 6) (integer 5))
|
|
|
|
((integer 4) <- loadi 34))
|
2014-07-06 09:35:45 +00:00
|
|
|
(main
|
2014-07-11 05:08:08 +00:00
|
|
|
((integer 1) <- loadi 1)
|
|
|
|
((integer 2) <- loadi 3)
|
|
|
|
((integer 3) (integer 7) <- add-fn (integer 1) (integer 2)))))
|
2014-07-06 09:35:45 +00:00
|
|
|
(run function*!main)
|
|
|
|
;? (prn memory*)
|
|
|
|
(if (~iso memory* (obj 1 1 2 3 3 4 7 3
|
|
|
|
; add-fn's temporaries
|
|
|
|
4 1 5 3 6 4))
|
|
|
|
(prn "F - parameterized compound fn with multiple return values"))
|
2014-07-12 04:04:38 +00:00
|
|
|
|
|
|
|
(clear)
|
|
|
|
(add-fns
|
|
|
|
'((main
|
|
|
|
((integer 1) <- loadi 1)
|
|
|
|
((integer 2) <- loadi 3)
|
|
|
|
((integer 3) <- sub (integer 1) (integer 2)))))
|
|
|
|
(run function*!main)
|
|
|
|
;? (prn memory*)
|
|
|
|
(if (~iso memory* (obj 1 1 2 3 3 -2))
|
|
|
|
(prn "F - sub works"))
|
|
|
|
|
|
|
|
(clear)
|
|
|
|
(add-fns
|
|
|
|
'((main
|
|
|
|
((integer 1) <- loadi 2)
|
|
|
|
((integer 2) <- loadi 3)
|
|
|
|
((integer 3) <- mul (integer 1) (integer 2)))))
|
|
|
|
(run function*!main)
|
|
|
|
;? (prn memory*)
|
|
|
|
(if (~iso memory* (obj 1 2 2 3 3 6))
|
|
|
|
(prn "F - mul works"))
|
|
|
|
|
|
|
|
(clear)
|
|
|
|
(add-fns
|
|
|
|
'((main
|
|
|
|
((integer 1) <- loadi 8)
|
|
|
|
((integer 2) <- loadi 3)
|
|
|
|
((integer 3) <- div (integer 1) (integer 2)))))
|
|
|
|
(run function*!main)
|
|
|
|
;? (prn memory*)
|
|
|
|
(if (~iso memory* (obj 1 8 2 3 3 (/ real.8 3)))
|
|
|
|
(prn "F - div works"))
|
|
|
|
|
|
|
|
(clear)
|
|
|
|
(add-fns
|
|
|
|
'((main
|
|
|
|
((integer 1) <- loadi 8)
|
|
|
|
((integer 2) <- loadi 3)
|
|
|
|
((integer 3) (integer 4) <- idiv (integer 1) (integer 2)))))
|
|
|
|
(run function*!main)
|
|
|
|
;? (prn memory*)
|
|
|
|
(if (~iso memory* (obj 1 8 2 3 3 2 4 2))
|
|
|
|
(prn "F - idiv works"))
|
2014-07-12 04:22:32 +00:00
|
|
|
|
|
|
|
(clear)
|
|
|
|
(add-fns
|
|
|
|
'((main
|
|
|
|
((integer 1) <- loadi 8)
|
|
|
|
(jmp (location 3))
|
|
|
|
((integer 2) <- loadi 3)
|
|
|
|
(reply))))
|
|
|
|
(run function*!main)
|
|
|
|
;? (prn memory*)
|
|
|
|
(if (~iso memory* (obj 1 8))
|
|
|
|
(prn "F - jmp works"))
|