Download this file here. Byte-compile it, then run it with xemacs-21.5-b34 -batch -l very-long-comment.elc .
(unless (or (> most-positive-fixnum #x3fffffff) (featurep 'bignum)) (error 'unimplemented)) (defvar very-long-comment-readchar-index 0) (defvar very-long-comment-readchar-unread-char nil) (defun very-long-comment-readchar (&optional unread) (symbol-macrolet ((very-long-comment-length 1073741824) (very-long-comment-readchar-prologue "(hello #@1073741824") (very-long-comment-readchar-epilogue "there)")) (if unread (if very-long-comment-readchar-unread-char (error 'unimplemented) (setq very-long-comment-readchar-unread-char unread)) (cond ((prog1 very-long-comment-readchar-unread-char (setq very-long-comment-readchar-unread-char nil))) ((< very-long-comment-readchar-index (length very-long-comment-readchar-prologue)) (aref very-long-comment-readchar-prologue (prog1 very-long-comment-readchar-index (incf very-long-comment-readchar-index)))) ((if (<= (+ very-long-comment-length (length very-long-comment-readchar-prologue)) #x3fffffff) (< very-long-comment-readchar-index (+ very-long-comment-length (length very-long-comment-readchar-prologue))) (or (< very-long-comment-readchar-index #x3fffffff) (< very-long-comment-readchar-index (+ very-long-comment-length (length very-long-comment-readchar-prologue))))) (if (eql 0 (% very-long-comment-readchar-index #x1000000)) (debug-print "index now %x\n" very-long-comment-readchar-index)) (incf very-long-comment-readchar-index) ?a) ((< very-long-comment-readchar-index (+ very-long-comment-length (length very-long-comment-readchar-prologue) (length very-long-comment-readchar-epilogue))) (aref very-long-comment-readchar-epilogue (prog1 (- very-long-comment-readchar-index very-long-comment-length (length very-long-comment-readchar-prologue)) (incf very-long-comment-readchar-index)))))))) (debug-print "just read %S\n" (read #'very-long-comment-readchar))