;; listm   new instruction by microprogram

;; linked-list
;; list
;;   data
;;   next

;; search for d in list x
;; return 1 found, 0 not found

;; search(x,d) 
;;   int flag
;;   flag = 0
;;   while x != nil 
;;     if x.data == d
;;       flag = 1
;;       break
;;     else
;;       x = x.next
;;   return flag

;; test list (7,8,9)
;;      1000:7, 1001:1002, 1002:8, 1003:1004,
;;      1004:9, 1005:0

;; main
;;   print search(list,8)

;; let x=r1, d=r2, tmp=r3
;; let retval=r4
;; let list

.s
	list 1000	;; to 1005
.a 0
.c
	ld r31 #2000
	ld r1 #7
	st 1000 r1
	ld r1 #1002
	st 1001 r1
	ld r1 #8
	st 1002 r1
	ld r1 #1004
	st 1003 r1
	ld r1 #9
	st 1004 r1
	ld r1 #0
	st 1005 r1	;; list (7,8,9)
:main	ld r1 #1000
	ld r2 #8
	xx r4 r1 r2
	trap print r4
	trap stop r0
.e
