/035 SUBROUTINE TO READ A NAME FROM KEYBOARD / /CALL :JMS RDNAME / WORD 1,2 CHAR'S FROM NAME IN EXCESS-40 CODE / WORD 2,2 CHAA'S FROM NAME / WORD 3,2 CHAR'S FROM NAME /ERROR RETURN /NORMAL RETURN / /ROUTINE USES AUTO INDEX 10, ROUTINES READ, PRINT /AND CRLF / BSW=7002 BUFADR=400 / / RRNAME, 0 TAD RDNMBF /ADDRESS ASCII BUFFER DCA RDPTR DCA RDCNT /CHAR. COUNTER RDIN, JMS READ /READ CHAR FROM KEYB. DCA RDCHAR TAD RDCHAR TAD RDMRO /RUBOUT ? SNA JMP RDROS /YES, TO SERVICE TAD RDMCRN /NO,CARRIAGE RETURN ? SNA JMP RDTWNR /YES,TO SERVICE TAD RDMLFD /NO,LINE FEED SNA JMP RDTWNR /YES,SAME SERVICE ASCR TAD RDMSPE /NO,CHAR>240 ? SPA SNA CLA JMP RDFTNM /NO,ERROR RETURN TAD RDCHAR /YES,IN BUFFER DCA I RDPTR ISZ RDCNT /+# CHAR'S ISZ RDPTR JMP RDIN /NEXT CHAR JMP RDFTNM /4K BUFFER FULL,ERROR / RDROS, TAD RDCNT /ALREADY SOMETHING IN BUFFER? SNA CLA JMP RDIN /NO,STUPID RO-TYPER! CMA /YES COUNTER BACK 1 TAD RDCNT DCA RDCNT CMA /AND POINTER BACK 1 TAD RDPTR DCA RDPTR TAD I RDPTR /PRINT REMOVED CHAR JMS PRINT JMP RDIN /END RO-SERVICE / RDTWNR, JMS CRLF /PRINT CR LF TAD RDCNT SNA JMP RDFTNM /NAME WITHOUT CHAR'S IS RUBBISH TAD M6 SMA SZA /SIX OR LESS CHAR'S CLA /MORE,THAN MAKE IT SIX TAD C6 CIA DCA RDCNT /-# CHAR'S TAD RDNMBF /BUFFER ADDRESS DCA RDPTR TAD RDNAME /PACKED NAME ADDRESS DCA RDTMM /PLACED UNDER CALLING TAD RDTMP DCA 10 DCA I 10 DCA I 10 /CLEAR BUFFER RDNNT, TAD I RDPTR /MAKE EXCESS-40 CODE TAD C240 AND C77 BSW DCA I RDTMP ISZ RDPTR ISZ RDCNT SKP JMP RDNMOK /READY READING NAME TAD I RDPTR /NOT READY NEXTTCHAR TAD C240 AND C77 TAD I RDTMP DCA I RDTMP ISZ RDTMP ISZ RDPTR ISZ DCNT JMP RDNXT /NEXT CHAR'S RDNMOK, ISZ RDNAME /NORMAL RETURN RDFTNM, ISZ RDNAME ISZ RDNAME ISZ RDNAME JMP I RDNAME /EXIT / / /VARIABLES / RDNMBF, BUFADR /ADDRESS BUFFER RDPTR, 0 RDCNT, 0 RDCHAR, 0 RDTMP, 0 RDMRO, -377 RDMCRN, 377-215 RDMLFD, 215-212 RDMSPE, 212-240 / /GENERAL CONSTANTS M6, -6 C6, 6 C77, 77 C240, 220