/ vim: set sw=8 noexpandtab : *000 INTRET, 0 JMP GOTINT INPUTY, 1000 / Address of youngest byte in input buffer INPUTO, 1000 / Address of oldest byte in input buffer *200 / Main program enables keyboard interrupt, then enters echo loop KIE ION LOOP, TSF / Call ECHO if printer is ready JMS ECHO JMP LOOP ECHO, 0 TAD INPUTO CMA IAC / Negate TAD INPUTY SNA / Abandon echo if input buffer is empty (n.b. or full, because we don't have wrap bits) JMP I ECHO TAD I INPUTO / Read from input buffer TLS / Print JMS FIXO JMP I ECHO GOTINT, KSF / Skip reading keyboard if nothing was typed JMP NOIN DCA SAVED KRB / Read from keyboard DCA I INPUTY / Write to input buffer JMS FIXY CLA TAD SAVED NOIN, RMF ION JMP I INTRET / Wrap INPUTY pointer at 2000 back to 1000 FIXY, 0 TAD INPUTY TAD [-2000] SZA JMP I FIXY CLA TAD [1000] DCA INPUTY JMP I FIXY / Wrap INPUTO pointer at 2000 back to 1000 FIXO, 0 TAD INPUTO TAD [-2000] SZA JMP I FIXO CLA TAD [1000] DCA INPUTO JMP I FIXO *300 SAVED, 0