(loader '((title |cstruct.lo|))) (if (not (>= (version) 15.2)) (progn (error 'load 'erricf 'cstruct))) (add-feature 'cstruct) (if (eq 0 (getglobal '|←charref|)) (progn (cload (catenate #:system:system-directory "o/cstruct.o")))) (setq #:sys-package:colon 'cstruct) (loader'((fentry defcstruct dmsubr) (entry defcstruct dmsubr) (mov (cdr a1) a4) (mov (car a1) a1) (push a1) (push a4) (push '0) (push nil) (push a4) (push nil) 101 (bfcons (& 1) 102) (mov (& 1) a4) (mov (cdr a4) (& 1)) (push (car a4)) (mov (& 0) a2) (mov (& 4) a1) (jcall cons) (push a1) (push (@ 103)) (push (& 6)) (mov (& 3) a1) (mov '((char . 1) (short . 2) (long . 4)) a2) (mov (car a1) a1) (jcall cassq) (push a1) (mov '2 a4) (jmp +) 103 (eval ()) (mov a1 (& 5)) (pop a1) (adjstk '1) (mov (& 0) a2) (jcall cons) (mov a1 (& 0)) (bra 101) 102 (mov (& 0) a1) (jcall nreverse) (adjstk '2) (mov a1 (& 2)) 104 (btnil (& 2) 105) (mov (& 2) a2) (mov (cdr a2) (& 2)) (mov (car a2) a2) (mov (& 3) a1) (call #:cstruct:field-accessor) (mov (& 0) a2) (jcall cons) (mov a1 (& 0)) (bra 104) 105 (push (@ 106)) (push (& 1)) (push (@ 107)) (push (@ 108)) (push 'putprop) (push (@ 109)) (push 'quote) (push (& 10)) (mov '2 a4) (jmp list) 109 (eval ()) (push a1) (push (& 7)) (push '('sizeof)) (mov '4 a4) (jmp mcons) 108 (eval ()) (push a1) (push (@ 110)) (push 'de) (mov 'make a2) (mov (& 9) a1) (jcall symbol) (push a1) (push nil) (push (@ 111)) (push '|←malloc|) (push (& 11)) (mov '2 a4) (jmp list) 111 (eval ()) (push a1) (mov '4 a4) (jmp list) 110 (eval ()) (push a1) (push (@ 112)) (push 'quote) (push (& 10)) (mov '2 a4) (jmp list) 112 (eval ()) (push a1) (mov '3 a4) (jmp list) 107 (eval ()) (push a1) (mov '2 a4) (jmp append) 106 (eval ()) (mov a1 a2) (mov 'progn a1) (adjstk '4) (jmp cons) )) (loader'((entry #:cstruct:field-accessor subr2) (mov (cdr a2) a4) (mov (car a2) a2) (push a2) (mov (cdr a4) a3) (mov (car a4) a4) (push a4) (mov (car a3) a3) (push (@ 101)) (push 'de) (mov a3 a2) (jcall symbol) (push a1) (push '(o . v)) (push (@ 102)) (push 'ifn) (push 'v) (push (@ 103)) (push (@ 104)) (push '"←") (push (& 10)) (push '"ref") (mov '3 a4) (jmp concat) 104 (eval ()) (push a1) (push 'o) (push (& 11)) (mov '3 a4) (jmp list) 103 (eval ()) (push a1) (push (@ 105)) (push (@ 106)) (push '"←") (push (& 11)) (push '"set") (mov '3 a4) (jmp concat) 106 (eval ()) (push a1) (push 'o) (push (& 12)) (push '((car v))) (mov '4 a4) (jmp mcons) 105 (eval ()) (push a1) (mov '4 a4) (jmp list) 102 (eval ()) (push a1) (mov '4 a4) (jmp list) 101 (eval ()) (adjstk '2) (return) )) (loader'((fentry sizeof subr1) (entry sizeof subr1) (mov 'sizeof a2) (jmp getprop) )) (loader'((fentry |←malloc| subr1) (entry |←malloc| subr1) (push (@ 101)) (push (eval (kwote (#:system:cached-getglobal '|←malloc|)))) (push '0) (push a1) (push '1) (mov '4 a4) (jmp callextern) 101 (eval ()) (jmp loc) )) (loader'((fentry |←free| subr1) (entry |←free| subr1) (push (@ 101)) (push (eval (kwote (#:system:cached-getglobal '|←free|)))) (push '1) (jcall vag) (push a1) (push '0) (mov '4 a4) (jmp callextern) 101 (eval ()) (return) )) (loader'((fentry |←charref| subr2) (entry |←charref| subr2) (push a2) (push (@ 101)) (push (eval (kwote (#:system:cached-getglobal '|←charref|)))) (push '1) (jcall vag) (push a1) (push '0) (push (& 5)) (push '1) (mov '6 a4) (jmp callextern) 101 (eval ()) (adjstk '1) (return) )) (loader'((fentry |←shortref| subr2) (entry |←shortref| subr2) (push a2) (push (@ 101)) (push (eval (kwote (#:system:cached-getglobal '|←shortref|)))) (push '1) (jcall vag) (push a1) (push '0) (push (& 5)) (push '1) (mov '6 a4) (jmp callextern) 101 (eval ()) (adjstk '1) (return) )) (loader'((fentry |←longref| subr2) (entry |←longref| subr2) (push a2) (push (@ 101)) (push (eval (kwote (#:system:cached-getglobal '|←longref|)))) (push '0) (jcall vag) (push a1) (push '0) (push (& 5)) (push '1) (mov '6 a4) (jmp callextern) 101 (eval ()) (adjstk '1) (jmp loc) )) (loader'((fentry |←charset| subr3) (entry |←charset| subr3) (push a3) (push a2) (push (@ 101)) (push (eval (kwote (#:system:cached-getglobal '|←charset|)))) (push '1) (jcall vag) (push a1) (push '0) (push (& 5)) (push '1) (push (& 8)) (push '1) (mov '8 a4) (jmp callextern) 101 (eval ()) (adjstk '2) (return) )) (loader'((fentry |←shortset| subr3) (entry |←shortset| subr3) (push a3) (push a2) (push (@ 101)) (push (eval (kwote (#:system:cached-getglobal '|←shortset|)))) (push '1) (jcall vag) (push a1) (push '0) (push (& 5)) (push '1) (push (& 8)) (push '1) (mov '8 a4) (jmp callextern) 101 (eval ()) (adjstk '2) (return) )) (loader'((fentry |←longset| subr3) (entry |←longset| subr3) (push a3) (push a2) (push (@ 101)) (push (eval (kwote (#:system:cached-getglobal '|←longset|)))) (push '1) (jcall vag) (push a1) (push '0) (push (& 5)) (push '1) (mov (& 8) a1) (jcall vag) (push a1) (push '0) (mov '8 a4) (jmp callextern) 101 (eval ()) (adjstk '2) (return) )) (loader'((fentry |←cstring| subr2) (entry |←cstring| subr2) (push (@ 101)) (push (eval (kwote (#:system:cached-getglobal '|←cstring|)))) (push '0) (push a1) (push '3) (push a2) (push '1) (mov '6 a4) (jmp callextern) 101 (eval ()) (jmp loc) )) (loader '((end)))