(loader '((title |defun.lo|)))
(if (not (>= (version) 15.2)) (progn (error 'load 'erricf 'defun)))
(loader'((entry pkg-gensym subr1)
(push a1)
(jcall gensym)
(mov a1 a2)
(pop a1)
(jmp symbol)
))
(loader'((entry vect-to-cons subr3)
(push a3)
(push a1)
(plus a2 a1)
(diff '1 a1)
(push nil)
(push a1)
101
(cnbgt (& 2) (& 0) 102)
(hpxmov (& 3) (& 2) a4)
(push (@ 103))
(push (& 2))
(mov a4 a1)
(jcall ncons)
(push a1)
(mov '2 a4)
(jmp nconc)
103
(eval ())
(mov a1 (& 1))
(mov (& 2) a1)
(jcall 1+)
(mov a1 (& 2))
(bra 101)
102
(mov (& 1) a1)
(adjstk '4)
(return)
))
(defvar #:maclisp:lexpr:len 70)
(defvar #:maclisp:lexpr:bvl-vector (makevector #:maclisp:lexpr:len ()))
(loader'((entry #:maclisp:lexpr:init-bvl-vector subr1)
(push a1)
(mov a1 (cvalq #:maclisp:lexpr:len))
(mov nil a2)
(mov (& 0) a1)
(jcall makevector)
(mov a1 (cvalq #:maclisp:lexpr:bvl-vector))
(adjstk '1)
(return)
))
(loader'((fentry listify subr1)
(entry listify subr1)
(push a1)
(cnblt a1 '0 101)
(mov (cvalq #:maclisp:lexpr:bvl-vector) a3)
(mov a1 a2)
(mov '0 a1)
(adjstk '1)
(bra vect-to-cons)
101
(mov (cvalq #:maclisp:lexpr:len) a4)
(plus a1 a4)
(plus '1 a4)
(mov (& 0) a3)
(times '-1 a3)
(push a3)
(mov (cvalq #:maclisp:lexpr:bvl-vector) a3)
(pop a2)
(mov a4 a1)
(adjstk '1)
(bra vect-to-cons)
))
(loader'((fentry arg subr1)
(entry arg subr1)
(diff '1 a1)
(hpxmov (cvalq #:maclisp:lexpr:bvl-vector) a1 a1)
(return)
))
(loader'((fentry setarg subr2)
(entry setarg subr2)
(diff '1 a1)
(hpmovx a2 (cvalq #:maclisp:lexpr:bvl-vector) a1)
(mov a2 a1)
(return)
))
(loader'((fentry #:maclisp:lexpr:aux subr1)
(entry #:maclisp:lexpr:aux subr1)
(push a1)
(jcall length)
(push '0)
(push a1)
(cnble a1 (cvalq #:maclisp:lexpr:len) 103)
(call #:maclisp:lexpr:init-bvl-vector)
103
(cnbge (& 1) (& 0) 104)
(mov (& 2) a4)
(mov (cdr a4) (& 2))
(hpmovx (car a4) (cvalq #:maclisp:lexpr:bvl-vector) (& 1))
(mov (& 1) a1)
(jcall 1+)
(mov a1 (& 1))
(bra 103)
104
(mov nil a1)
(adjstk '3)
(return)
))
(loader'((entry #:maclisp:lexpr subr2)
(push a2)
(push (@ 101))
(push 'lambda)
(push a1)
(push (@ 102))
(push '#:maclisp:lexpr:aux)
(push a1)
(mov '2 a4)
(jmp list)
102
(eval ())
(push a1)
(push (& 4))
(mov '4 a4)
(jmp mcons)
101
(eval ())
(adjstk '1)
(return)
))
(loader'((entry #:maclisp:lexpr:subst-nil-to-gensym subr1)
(push a1)
(bfnil a1 101)
(mov '#:maclisp:lexpr:nil a1)
(adjstk '1)
(bra pkg-gensym)
101
(btcons a1 103)
(adjstk '1)
(return)
103
(push a1)
(mov (car a1) a1)
(call #:maclisp:lexpr:subst-nil-to-gensym)
(push a1)
(mov (& 2) a4)
(bfnil (cdr a4) 105)
(mov nil a3)
(bra 106)
105
(mov (cdr a4) a1)
(call #:maclisp:lexpr:subst-nil-to-gensym)
(mov a1 a3)
106
(pop a2)
(pop a1)
(adjstk '1)
(jmp rplac)
))
(loader'((entry #:maclisp:lexpr:nil-in-bvl subr2)
(push a2)
(push (@ 101))
(push 'lambda)
(call #:maclisp:lexpr:subst-nil-to-gensym)
(push a1)
(push (& 3))
(mov '3 a4)
(jmp mcons)
101
(eval ())
(adjstk '1)
(return)
))
(loader'((fentry lambda fsubr)
(entry lambda fsubr)
(mov (cdr a1) a4)
(mov (car a1) a1)
(btcons a1 101)
(mov a4 a2)
(bra #:maclisp:lexpr)
101
(mov a4 a2)
(bra #:maclisp:lexpr:nil-in-bvl)
))
(defvar #:maclisp:&keywords '(&optional &rest &aux &key))
(loader'((entry #:maclisp:defun:kwd-input subr2)
(jcall memq)
(push (cdr a1))
(push nil)
(btnil (& 1) 102)
103
(btnil (& 1) 102)
(mov (& 1) a1)
(mov (cvalq #:maclisp:&keywords) a2)
(mov (car a1) a1)
(jcall memq)
(bfnil a1 102)
(mov (& 1) a4)
(mov (cdr a4) (& 1))
(push (car a4))
(push (@ 105))
(push (& 2))
(mov (& 2) a1)
(jcall ncons)
(push a1)
(mov '2 a4)
(jmp nconc)
105
(eval ())
(adjstk '1)
(mov a1 (& 0))
(bra 103)
102
(mov (& 0) a1)
(adjstk '2)
(return)
))
(loader'((entry #:maclisp:defun:kwd-optl subr2)
(push a2)
(push a1)
(mov a2 a1)
(jcall length)
(push '0)
(push nil)
(push a1)
101
(cnbge (& 2) (& 0) 102)
(mov (& 4) a2)
(mov (& 2) a1)
(jcall nth)
(push a1)
(bfsymb a1 103)
(push (@ 105))
(push a1)
(push (@ 106))
(push 'if)
(push (@ 107))
(push 'lt)
(push (& 9))
(push (@ 108))
(push 'length)
(push (& 13))
(mov '2 a4)
(jmp list)
108
(eval ())
(push a1)
(mov '3 a4)
(jmp list)
107
(eval ())
(push a1)
(push (@ 109))
(push 'nth)
(push (& 10))
(push (& 12))
(mov '3 a4)
(jmp list)
109
(eval ())
(push a1)
(push '(()))
(mov '4 a4)
(jmp mcons)
106
(eval ())
(push a1)
(mov '2 a4)
(jmp list)
105
(eval ())
(push (@ 110))
(push (& 3))
(jcall ncons)
(push a1)
(mov '2 a4)
(jmp nconc)
110
(eval ())
(mov a1 (& 2))
(bra 104)
103
(jcall length)
(cabne '2 a1 111)
(push (@ 113))
(mov (& 1) a4)
(push (car a4))
(push (@ 114))
(push 'if)
(push (@ 115))
(push 'lt)
(push (& 9))
(push (@ 116))
(push 'length)
(push (& 13))
(mov '2 a4)
(jmp list)
116
(eval ())
(push a1)
(mov '3 a4)
(jmp list)
115
(eval ())
(push a1)
(push (@ 117))
(push 'nth)
(push (& 10))
(push (& 12))
(mov '3 a4)
(jmp list)
117
(eval ())
(push a1)
(mov (& 6) a3)
(mov (cdr a3) a3)
(push (car a3))
(mov '4 a4)
(jmp list)
114
(eval ())
(push a1)
(mov '2 a4)
(jmp list)
113
(eval ())
(push (@ 118))
(push (& 3))
(jcall ncons)
(push a1)
(mov '2 a4)
(jmp nconc)
118
(eval ())
(mov a1 (& 2))
(bra 104)
111
(mov (& 0) a1)
(jcall length)
(cabne '3 a1 104)
(push (@ 121))
(mov (& 1) a4)
(push (car a4))
(push (@ 122))
(push 'if)
(push (@ 123))
(push 'lt)
(push (& 9))
(push (@ 124))
(push 'length)
(push (& 13))
(mov '2 a4)
(jmp list)
124
(eval ())
(push a1)
(mov '3 a4)
(jmp list)
123
(eval ())
(push a1)
(push (@ 125))
(push 'nth)
(push (& 10))
(push (& 12))
(mov '3 a4)
(jmp list)
125
(eval ())
(push a1)
(mov (& 6) a3)
(mov (cdr a3) a3)
(push (car a3))
(mov '4 a4)
(jmp list)
122
(eval ())
(push a1)
(mov '2 a4)
(jmp list)
121
(eval ())
(push (@ 126))
(push (& 3))
(jcall ncons)
(push a1)
(mov '2 a4)
(jmp nconc)
126
(eval ())
(mov a1 (& 2))
(push (@ 127))
(mov (& 1) a4)
(mov (cdr a4) a4)
(mov (cdr a4) a4)
(push (car a4))
(push (@ 128))
(push 'if)
(push (@ 129))
(push 'lt)
(push (& 9))
(push (@ 130))
(push 'length)
(push (& 13))
(mov '2 a4)
(jmp list)
130
(eval ())
(push a1)
(mov '3 a4)
(jmp list)
129
(eval ())
(push a1)
(push '(t ()))
(mov '3 a4)
(jmp mcons)
128
(eval ())
(push a1)
(mov '2 a4)
(jmp list)
127
(eval ())
(push (@ 131))
(push (& 3))
(jcall ncons)
(push a1)
(mov '2 a4)
(jmp nconc)
131
(eval ())
(mov a1 (& 2))
104
(mov (& 3) a1)
(jcall 1+)
(mov a1 (& 3))
(adjstk '1)
(bra 101)
102
(push (@ 132))
(push (& 4))
(push (@ 133))
(push 'nthcdr)
(push (& 6))
(push (& 8))
(mov '3 a4)
(jmp list)
133
(eval ())
(push a1)
(mov '2 a4)
(jmp list)
132
(eval ())
(push (@ 134))
(push (& 2))
(jcall ncons)
(push a1)
(mov '2 a4)
(jmp nconc)
134
(eval ())
(mov a1 (& 1))
(adjstk '5)
(return)
))
(loader'((entry #:maclisp:defun:kwd-key-aux subr1)
(push a1)
(push nil)
(btnil a1 102)
103
(bfcons (& 1) 102)
(mov (& 1) a4)
(push (car a4))
(bfsymb (& 0) 105)
(push (@ 107))
(push (& 1))
(push (& 2))
(mov '2 a4)
(jmp list)
107
(eval ())
(mov '(() ()) a2)
(jcall cons)
(mov a1 a4)
(bra 106)
105
(mov (& 0) a3)
(bfsymb (car a3) 108)
(mov '(() ()) a2)
(mov a3 a1)
(jcall cons)
(mov a1 a4)
(bra 106)
108
(push (@ 110))
(mov (car a3) a2)
(bfnil (cdr a2) 111)
(push (@ 113))
(mov (car a3) a1)
(push (car a1))
(mov (car a3) a1)
(push (car a1))
(mov '2 a4)
(jmp list)
113
(eval ())
(mov a1 a2)
(bra 112)
111
(mov (car a3) a2)
112
(push a2)
(mov (& 2) a2)
(mov (cdr a2) a2)
(push (car a2))
(mov (& 3) a2)
(mov (cdr a2) a2)
(mov (cdr a2) a2)
(push (car a2))
(mov '3 a4)
(jmp list)
110
(eval ())
(mov a1 a4)
106
(adjstk '1)
(push (@ 114))
(push (& 1))
(mov a4 a1)
(jcall ncons)
(push a1)
(mov '2 a4)
(jmp nconc)
114
(eval ())
(mov a1 (& 0))
(mov (& 1) a4)
(mov (cdr a4) (& 1))
(bra 103)
102
(mov (& 0) a1)
(adjstk '2)
(return)
))
(loader'((entry #:maclisp:defun:kwd-key subr1)
(push a1)
(push nil)
101
(btnil (& 1) 102)
(mov (& 1) a4)
(push (car a4))
(mov (& 0) a1)
(mov (car a1) a1)
(mov (cdr a1) a1)
(mov '(()) a2)
(mov (car a1) a1)
(jcall cons)
(push (@ 103))
(push (& 2))
(jcall ncons)
(push a1)
(mov '2 a4)
(jmp nconc)
103
(eval ())
(mov a1 (& 1))
(mov (& 0) a4)
(mov (cdr a4) a4)
(mov (cdr a4) a4)
(btnil (car a4) 105)
(mov (& 0) a1)
(mov (cdr a1) a1)
(mov (cdr a1) a1)
(mov '(()) a2)
(mov (car a1) a1)
(jcall cons)
(push (@ 106))
(push (& 2))
(jcall ncons)
(push a1)
(mov '2 a4)
(jmp nconc)
106
(eval ())
(mov a1 (& 1))
105
(mov (& 2) a4)
(mov (cdr a4) (& 2))
(adjstk '1)
(bra 101)
102
(mov (& 0) a1)
(adjstk '2)
(return)
))
(loader'((fentry #:maclisp:defun:kwd-bind-key subr2)
(entry #:maclisp:defun:kwd-bind-key subr2)
(push a2)
(push a1)
101
(btnil (& 1) 102)
(mov (& 1) a4)
(push (car a4))
(mov (& 0) a3)
(mov (car a3) (& 0))
(mov (cdr a3) a3)
(mov (cdr a3) a2)
(mov (car a3) a3)
(push a3)
(mov (car a2) a2)
(push a2)
(mov (& 2) a1)
(mov (car a1) (& 2))
(mov (cdr a1) a1)
(mov (car a1) a1)
(push a1)
(push (@ 103))
(push (& 5))
(mov '1 a4)
(jmp eval)
103
(eval ())
(mov a1 a2)
(mov (& 3) a1)
(jcall memq)
(push a1)
(btnil a1 104)
(mov (cdr a1) a4)
(mov (& 1) a3)
(mov (car a4) (cval a3))
(push (car a1))
(push (@ 106))
(push (& 7))
(mov '1 a4)
(jmp eval)
106
(eval ())
(mov a1 a2)
(pop a1)
(jcall delete)
(mov (& 5) a4)
(mov a1 (cval a4))
(push a4)
(mov (& 1) a1)
(mov (cdr a1) a1)
(push (car a1))
(push (@ 107))
(push a4)
(mov '1 a4)
(jmp eval)
107
(eval ())
(mov a1 a2)
(pop a1)
(jcall delete)
(pop a4)
(mov a1 (cval a4))
(btnil (& 2) 105)
(mov (& 2) a4)
(mov 't (cval a4))
(bra 105)
104
(push (@ 110))
(push (& 4))
(mov '1 a4)
(jmp eval)
110
(eval ())
(mov (& 1) a4)
(mov a1 (cval a4))
105
(adjstk '5)
(mov (& 1) a4)
(mov (cdr a4) (& 1))
(bra 101)
102
(mov nil a1)
(adjstk '2)
(return)
))
(loader'((entry #:maclisp:defun:kwd-aux subr1)
(btnil a1 101)
(push a1)
(push nil)
103
(bfcons (& 1) 104)
(mov (& 1) a4)
(mov (cdr a4) (& 1))
(push (car a4))
(bfsymb (& 0) 105)
(push (@ 107))
(push (& 1))
(mov '1 a4)
(jmp list)
107
(eval ())
(bra 106)
105
(mov (& 0) a1)
106
(adjstk '1)
(mov (& 0) a2)
(jcall cons)
(mov a1 (& 0))
(bra 103)
104
(mov (& 0) a1)
(adjstk '2)
(jmp nreverse)
101
(mov nil a1)
(return)
))
(loader'((entry #:maclisp:defun:dvl subr2)
(push a2)
(push a1)
(bfsymb a1 101)
(push (@ 103))
(push a1)
(push (@ 104))
(push '#:maclisp:lexpr:aux)
(push a1)
(mov '2 a4)
(jmp list)
104
(eval ())
(push a1)
(push (& 4))
(mov '3 a4)
(jmp mcons)
103
(eval ())
(adjstk '2)
(return)
101
(mov a1 a2)
(mov '&optional a1)
(call #:maclisp:defun:kwd-input)
(push a1)
(mov (& 1) a2)
(mov '&rest a1)
(call #:maclisp:defun:kwd-input)
(push (car a1))
(mov (& 2) a2)
(mov '&key a1)
(call #:maclisp:defun:kwd-input)
(call #:maclisp:defun:kwd-key-aux)
(push a1)
(mov (& 3) a2)
(mov '&aux a1)
(call #:maclisp:defun:kwd-input)
(push a1)
(mov '#:maclisp:defun a1)
(call pkg-gensym)
(push nil)
(push a1)
105
(mov (& 6) a1)
(mov (cvalq #:maclisp:&keywords) a2)
(mov (car a1) a1)
(jcall memq)
(bfnil a1 106)
(btnil (& 6) 106)
(mov (& 6) a4)
(mov (cdr a4) (& 6))
(push (car a4))
(push (@ 107))
(push (& 3))
(mov (& 2) a1)
(jcall ncons)
(push a1)
(mov '2 a4)
(jmp nconc)
107
(eval ())
(adjstk '1)
(mov a1 (& 1))
(bra 105)
106
(btnil (& 2) 109)
(push (@ 110))
(push (@ 111))
(push 'slet)
(mov (& 5) a1)
(call #:maclisp:defun:kwd-aux)
(push a1)
(push (& 11))
(mov '3 a4)
(jmp mcons)
111
(eval ())
(push a1)
(mov '1 a4)
(jmp list)
110
(eval ())
(mov a1 (& 7))
109
(btnil (& 4) 113)
(push (@ 114))
(push (@ 115))
(push 'let)
(push (@ 116))
(push (@ 117))
(push (& 9))
(push (& 6))
(mov '2 a4)
(jmp list)
117
(eval ())
(push a1)
(mov '1 a4)
(jmp list)
116
(eval ())
(push a1)
(push (& 11))
(mov '3 a4)
(jmp mcons)
115
(eval ())
(push a1)
(mov '1 a4)
(jmp list)
114
(eval ())
(mov a1 (& 7))
113
(btnil (& 3) 119)
(push (@ 120))
(push (@ 121))
(push 'let)
(mov (& 6) a1)
(call #:maclisp:defun:kwd-key)
(push a1)
(push (@ 122))
(push '#:maclisp:defun:kwd-bind-key)
(mov (& 6) a1)
(jcall kwote)
(push a1)
(mov (& 10) a1)
(jcall kwote)
(push a1)
(mov '3 a4)
(jmp list)
122
(eval ())
(push a1)
(push (& 12))
(mov '4 a4)
(jmp mcons)
121
(eval ())
(push a1)
(mov '1 a4)
(jmp list)
120
(eval ())
(mov a1 (& 7))
119
(btnil (& 5) 124)
(push (@ 125))
(push (@ 126))
(push 'slet)
(mov (& 8) a2)
(mov (& 3) a1)
(call #:maclisp:defun:kwd-optl)
(push a1)
(push (& 11))
(mov '3 a4)
(jmp mcons)
126
(eval ())
(push a1)
(mov '1 a4)
(jmp list)
125
(eval ())
(mov a1 (& 7))
124
(bfnil (& 5) 127)
(bfnil (& 4) 127)
(bfnil (& 3) 127)
(bfnil (& 2) 127)
(mov (& 7) a2)
(mov (& 1) a1)
(jcall cons)
(mov a1 (& 7))
(adjstk '8)
(return)
127
(push (@ 129))
(push (& 2))
(push (& 2))
(mov '2 a4)
(jmp nconc)
129
(eval ())
(mov (& 7) a2)
(jcall cons)
(mov a1 (& 7))
(adjstk '8)
(return)
))
(loader'((fentry defun dmsubr)
(entry defun dmsubr)
(push a1)
(mov (cdr a1) a4)
(cabne 'expr (car a4) 101)
(push (@ 103))
(push 'de)
(push (car a1))
(mov (cdr a1) a1)
(mov (cdr a1) a1)
(mov (& 3) a2)
(mov (cdr a2) a2)
(mov (cdr a2) a2)
(mov (cdr a2) a2)
(mov (car a1) a1)
(call #:maclisp:defun:dvl)
(push a1)
(mov '3 a4)
(jmp mcons)
103
(eval ())
(adjstk '1)
(return)
101
(mov (cdr a1) a3)
(cabne 'fexpr (car a3) 104)
(push (@ 106))
(push 'df)
(push (car a1))
(mov (cdr a1) a1)
(mov (cdr a1) a1)
(mov (& 3) a2)
(mov (cdr a2) a2)
(mov (cdr a2) a2)
(mov (cdr a2) a2)
(mov (car a1) a1)
(call #:maclisp:defun:dvl)
(push a1)
(mov '3 a4)
(jmp mcons)
106
(eval ())
(adjstk '1)
(return)
104
(mov (cdr a1) a2)
(cabne 'macro (car a2) 107)
(push (@ 109))
(push 'dm)
(push (car a1))
(mov (cdr a1) a1)
(mov (cdr a1) a1)
(mov (& 3) a2)
(mov (cdr a2) a2)
(mov (cdr a2) a2)
(mov (cdr a2) a2)
(mov (car a1) a1)
(call #:maclisp:defun:dvl)
(push a1)
(mov '3 a4)
(jmp mcons)
109
(eval ())
(adjstk '1)
(return)
107
(push (@ 110))
(push 'de)
(push (car a1))
(mov (cdr a1) a1)
(mov (& 3) a2)
(mov (cdr a2) a2)
(mov (cdr a2) a2)
(mov (car a1) a1)
(call #:maclisp:defun:dvl)
(push a1)
(mov '3 a4)
(jmp mcons)
110
(eval ())
(adjstk '1)
(return)
))
(loader '((end)))