/ /COULTER S TEST PROGRAM / /W.S.STEWART, MERCK AND CO.INC. 8/13/70 / / /SOME MORE IOTS / CLSF=6131 /CLOCK SKIP ON FLAG CLON=6132 /CLOCK ON FINT=6431 /FIRE ONE SHOT SFLG=6441 /SKIP ON COULTER FLAG SWRD=6446 /TAKE IN WORD AND CLEAR FLAG / /CHECK IF CLOCK INTERRUPT / *1 CLSF /CHECK CLOCK FLAG JMP PRINT /NOT SET, CONTINUE CHAIN CLON /SET, CLEAR INTERRUPT FINT /AND FIRE ONE SHOT JMP RETURN /THEN EXIT / /FLAG AND POINTER STORAGE LOCATIONS / *10 WORD, 0 /LOCATION FOR NEXT WORD CHAR, 0 /NEXT CHAR TO PRINT *20 PRFLG, 0 /PRINT FLAG - 7777 IF SET COUNT, 0 /COUNT OF READINGS BUFFI, 0 /BUFFER USED FOR INPUT BUFFO, 0 /BUFFER USED FOR OUTPUT BUFFDN, 0 /BUFFER DONE FLAG - 7777 IF SET C800, 777 /CONSTANT C200, -200 /CONSTANT INDEX, 0 /USED AS COUNT INDEX LOCATION TEMP, 0 /TEMPORARY STORAGE LINE, 0 /COUNTS LINES *100 / /PROGRAM WAIT AREA / RETURN, TAD PRFLG /GET PRINT FLAG CIA TAD BUFFDN /ADD TO BUFFER DONE FLAG SNA /RESULT ZERO JMP WAIT /YES, NO PROBLEMS SMA CLA /RESULT NEGATIVE JMP WAIT /NO, NO PROBLEMS JMP BDONE /YES, WE MUST PRINT A BUFFER WAIT, ION CLA JMP . / /CHECK KEYBOARD FLAG / KBD, KSF /IS KEYBOARD FLAG SET HLT /NO, WE MUST HAVE ANOTHER DEVICE KRB /GET CHAR TAD (-203 SZA CLA /IS IT CONTROL C JMP RETURN /NO, IGNORE JMP I .+1 /YES, GO TO MONITOR 7600 / /END OF PAGE ZERO *200 / /INITIALIZE / CLON /TURN ON CLOCK CLA DCA PRFLG /CLEAR PRINT FLAG DCA BUFFDN /CLEAR BUFFER DONE FLAG DCA COUNT /CLEAR WORD COUNT IAC /ONE TO AC DCA LINE /INITIAL LINE COUNT TO ONE TAD (577 DCA BUFFI /SET INPUT BUFFER TAD (577 DCA WORD /SET WORD ADDRESS TAD C800 DCA BUFFO /SET OUTPUT BUFFER JMP NEWLN /STORE FIRST LINE NBR / /CHECK PRINTER FLAG / PRINT, TSF TCF /CHECK AND CLEAR PRINTER FLAG JMP CLTR /NOT SET, CHECK COULTER S / /PRINTER FLAG WAS SET / ISZ PRFLG /IS PRINT FLAG SET JMP BDONE /NO TAD I CHAR /GET A CHARACTER TPC /PRINT IT TAD (-212 /SUBTRACT LINE FEED SNA CLA /WAS IT JMP RETURN /YES, BUFFER IS DONE CONT, CMA CLA /7777 TO AC DCA PRFLG /SET PRINT FLAG JMP RETURN /EXIT / /END OF BUFFER / BDONE, ISZ BUFFDN /ANOTHER BUFFER READY JMP RETURN /NO, EXIT TAD BUFFO /GET BUFFER INDICATOR CIA /MAKE 2S COMPLEMENT TAD C800 /ADD 800 SNA /WAS BUFFER ON 800 TAD C200 /YES, SUBTRACT 200 TAD BUFFO /NO, ADD 200 DCA BUFFO /BUFFER NOW SET TAD BUFFO DCA CHAR /SET UP CHARACTER INDEX TAD I CHAR /GET CHAR TLS /PRINT IT JMP CONT /CONTINUE / /END OF PAGE ONE *400 / /CHECK COULTER S / CLTR, SFLG /SKIP ON COULTER FLAG JMP KBD /NOT SET, CHECK KEYBOARD / /COULTER FLAG WAS SET / SWRD /TAKE IN WORD AND CLEAR FLAG BCD1, RAL /ROTATE IT ONE LEFT DCA TEMP /SAVE IT TAD (-3 DCA INDEX /SET INDEX TO -3 BCD, TAD TEMP /GET CHAR RTL /PUT NEXT DIGIT IN LOW ORDER RTL DCA TEMP /SAVE RESULT TAD TEMP AND (17 /LOOK AT FOUR LOW ORDER BITS TAD (260 /MAKE IT ASCII CHAR DCA I WORD /STORE IT IN BUFFER ISZ INDEX /THAT LAST CHAR JMP BCD /NO TAD COUNT /GET READING COUNT TAD (-7 SNA CLA /IS IT SEVENTH READING JMP LAST /YES TAD (240 DCA I WORD /STORE A SPACE TAD (240 DCA I WORD /ANOTHER TAD COUNT IAC DCA COUNT /INCREMENT WORD COUNT JMP RETURN / /7TH READING FOUND / LAST, DCA COUNT /CLEAR WORD COUNT TAD (215 /CARRIAGE RETURN DCA I WORD /PUT IN BUFFER TAD (212 /LINE FEED DCA I WORD /PUT IN BUFFER CMA /7777 TO AC DCA BUFFDN /SET BUFFER DONE FLAG TAD LINE IAC DCA LINE /INCREMENT LINE COUNT / /SWITCH TO NEW BUFFER / TAD BUFFI /GET BUFFER INDICATOR CIA /MAKE 2S COMPLEMENT TAD C800 /ADD 800 SNA /WAS BUFFER ON 800 TAD C200 /YES, SUBTRACT 200 TAD BUFFI /NO, ADD 200 DCA BUFFI /BUFFER NOW SET TAD BUFFI DCA WORD /RESET WORD POINTER / /SET UP NEW LINE / NEWLN, DCA INDEX /CLEAR COUNT TAD LINE /GET LINE COUNT LOOP1, TAD (-144 /SUBTRACT 100 SPA /RESULT POSITIVE JMP .+3 /NO ISZ INDEX /YES, DO AGAIN JMP LOOP1 TAD (144 /ADD 100 BACK DCA TEMP /SAVE TAD INDEX /ROTATE RESULT RTL CLL RTL CLL DCA INDEX /SAVE TAD TEMP /GET PARTIAL RESULT LOOP2, TAD (-12 /SUBTRACT 10 SPA /RESULT POSITIVE JMP .+3 /NO ISZ INDEX /YES, INCREMENT JMP LOOP2 /AND CONTINUE TAD (12 /ADD 10 BACK DCA TEMP /SAVE TAD INDEX /GET COUNT AND ROTATE RTL CLL RTL CLL TAD TEMP /ADD LAST DIGIT JMP BCD1 /PUT WORD IN STORAGE / /END OF PAGE 2 AND PROGRAM / $