X-Git-Url: https://thelambdalab.xyz/gitweb/index.cgi?p=ez.git;a=blobdiff_plain;f=ez.el;fp=ez.el;h=f96005a3167b302367d40e8a22545fc830c4e593;hp=7a91e579135bf2afd497b4a12842a026bf053a7e;hb=c2bf7428388aedee98c42c52c3c1bf2ac75f29bc;hpb=6f7b0f5e308675a8c11e2d48482d23f10bb99599 diff --git a/ez.el b/ez.el index 7a91e57..f96005a 100644 --- a/ez.el +++ b/ez.el @@ -840,12 +840,19 @@ (ez-print (ez-get-obj-name obj))) 'run) +(defvar ez--next-read-args nil) (defun ez-op-read (operands operand-types) (let ((baddr1 (car operands)) (baddr2 (cadr operands))) - ) + (setq ez--next-read-args (list baddr1 baddr2))) 'wait-for-input) +(defun ez-op-read2 (input-string) + (ez-tokenize-string input-string + (car ez--next-read-args) + (cadr ez--next-read-args)) + 'run) + ;; Execution loop (defun ez-load-and-run (filename) @@ -888,8 +895,12 @@ (defun ez-enter () (interactive) - (with-current-buffer "*ez*" - (buffer-substring ez-input-marker (point-max)))) + (if (not (eq ez-machine-state 'wait-for-input)) + (error "Z-machine not ready for input.")) + (let ((input-string (with-current-buffer "*ez*" + (buffer-substring ez-input-marker (point-max))))) + (ez-op-read2 input-string) + (ez-run))) ;; Mode