*20 PMODE EJECT / / / / / / P I P 4 / / / / / THIS IS THE FOURTH PART OF PIP / / / / / / / / / / LODSYM /RECALL OLD SAVED SYMBOLS. / / / / / / / / / / / / / EJECT / / *5000 / / / / / / S O U R C E H A N D L E R / / / / / / ASCINP=BININP /SAME DEFINITIONS AS BINARY(FOR NOW , ANYWAY) ASCOUT=BINOUT ASCLST=BINLST ASCLTO=ASCLST / / / / / / ASCII, DECODE /GET THE INPUT REQUEST NOW ASCINP /DISPLAY THE POSSIBLE INPUT DEVICES. DCA BFLAG1 DCA BFLAG2 DCA BCOUNT DCA ORIGIN DCA BFIELD DCA BOLDP DCA 177 /INITIALIE VARIOUS POINTERS AND COUNTS. ASMIFZ CARD-1 /ASSEMBLE NEXT CHECK IF CARD READER DEISRED. JMS I ACRCHK /SEE IF ITS A "C" FOR THE CARD READER SEARCH /SEARCH THE LIST FOR A GOOD OPTION ASCLST /LIST OF GOOD CHARS ASCGO /WHERE TO GO FOR THEM JMP ASCII /NO LEGAL REQUEST THERE. / / ASMIFZ CARD-1 /ASSEMBLE IN CARD POINTER IF CARD READER DESIRED. ACRCHK, CRDLTT /CARD READER POINTER. / / ASCH1, ISZ BFLAG1 //SET FOR HIGH SPPEED READER ASCT1, ISZ BFLAG1 /SET FO R TTY JMP APART2 /GO AND GET OUTPUT / ASCT, TAPE /SET FOR TAPE OPERATION PONE /SET TO INPUT AND SOURCE DCA FWHAT PONE DCA FTYPE DIRECT /LOOKUP UP NAME NOW. HPUSH /AND SAVE IT AWAY / APART2, DECODE /GET THE OUTPUT DEVICE ASCOUT SEARCH /LOOKUP UP REPLY ASCLTO ASCGO2 /GO TO WHERE IT POINTS ASMIFZ CARD-1 /IS LINE PRINTER THERE???? JMS I ASCLPT /CHECK IF "P" TYPED AND INITIALIZE LINEPRINTER. JMP APART2 /N OT A GOOD REPLY / / ASMIFZ CARD-1 /ASSEMBLE IN PRINTER POINTER? ASCLPT, LPT2 /POINTER TO CHECKER AND INITIALIZER. / / ASCH2, ISZ BFLAG2 /SET TO HIGH OUTPUT ASCT2, ISZ BFLAG2 /SET TO TTY OUTPUT SKP /SKP OVER TAPE INITIALIZER. ASCTT, TAPE /SET FOR A TAPE OPERATION, SHOULD THERE BE ONE. PONE DCA FTYPE /SET FOR SOURCE MODD. MONE TAD BFLAG1 TAD BFLAG2 /IS IT MASS STORAGE TO MASS STORAGE. SPA CLA /???? FILEC /YEP. DO TRANSFER NOW. 6016 /INITIALIZE HIGH READER. 6032 /CLEAR TTY AND AC. ALSO ANY OTHER DEVICES RIGH NOW. PUSH /SAVE OUTPUT FILE INFORMATION HPOP /BRING IN INPUT FILE INFORMATION JMS I ASETI /SET UP SEQUENTIAL TAPE INPUT TAD BFLAG2 /ARE WE GOING TO TAPE SZA CLA LEADER /NO. WE BETTER GENERATE SOME LEADER NOW. / / / / ALOOP, TAD BFLAG1 /GET THE INPUT DEVICE POINTER. SZA CLA /FROM A FILE? JMP .+3 /NOPE. JMS I AAGET /YEP. GET A CHAR NOW SKP /SKP OVER BELOW GET. AUXIN /IF NOT FROM A FILE, GET THE CHAR NOW. AND L177 AND L177 /MAKE INTO A GOOD ASCII CHARACTER. TAD L200 /WITH PARITY BIT ON. DCA FTYPE /AND STORE AWAY. TAD 177 /WAS A CONTROL Z TYPED? SZA CLA JMP AEND /YEP. DO END SEARCH /SEARCH FOR POSIBLE SPECIAL CHARACTERS. AC1 AG1 TAD FTYPE /A STANDARD CHARACTER. TAD M240 /CHECK TO SEE IF IN STANDARD 6 BIT RANGE SPA CLA JMP ABAD /NOT IN RANGE. A BAD CHAR. TAD FTYPE TAD M340 SMA CLA JMP ABAD /TOOO BIG. IGNORE IT. AOK, JMS APUTIT /CHAR OK AS IS. OUTPUTTIT. JMP ALOOP /GO BACK AND GET ANOTHER ONE. / / ABAD, JMP ALOOP /BAD CHAR. GET NEXT ONE / / / AEND, TAD BFLAG1 /IS IT MASS INPUT? SNA CLA JMP AEND2 /YEP. IGNORE STANDARD PAPER TAPE CRAP. JMS I AMORE /ASK FOR MORE TAPES?? JMP ALOOP /HE S GOT ANOTHER TAPE. AEND2, JMS ACRR /PLACE A CR IN THE BUFFER. TAD AABLAH /GETE THE EOT-Z CHAR DCA FTYPE /AND PLACE IN THE BUFFER JMS APUTIT JMS APUTIT /PLACE IT OUT THERE MONE /IF LASS STOREAGE IT NEVER RETURNS TO HERE DCA FTYPE /PLACE A RUBOUT ON BUS JMS APUTIT /AND SEND IT OUT JMS ACRR /DO ANOTHER CARRIGE RETURN. LEADER /THEN GENERATE TRAILER PIP /AND FINALLY GO BACK TO PIP / / / / ACR, JMS ACRR /COMES HERE IF A CR ENCOUNTERED. JMP ALOOP JMP ALOOP /GET NEXT CHAR / / ACRR, 0 /GENERATES A CR,LF,RUBOUT TAD AC1 /215 DCA FTYPE JMS APUTIT /OUT GOES THE C R TAD M212 CIA DCA FTYPE JMS APUTIT /OUT GOES THE L F MONE DCA FTYPE JMS APUTIT /OUT GOES THE RUBOUT JMP I ACRR /RETURN / / / APUTIT, 0 /SENDS A CHAR ALONG CORRECTLY TAD BFLAG2 /WHERES IT GOING? SZA CLA JMP .+3 /TO THE SEQUENTIAL DEVICE JMS I AAAPUT /PLACE IN MASS BUFFER. JMP I APUTIT /AND RETURN TAD FTYPE /GET THE CHAR AUXOUT /GOOD BYE JMP I APUTIT /AND RETURN. / / AAAPUT, AAPUT ASETI, SETI AAGET, AAAGET AMORE, MORE / / / AC1, 215 300 337 243 ASMIFZ TERMC-44 /IS 44 A LEGAL CHAR??? 244 /NO. ASSEMBLE IT IN THE EXCEPTION TABLE. 247 AABLAH, 232 4211 /END OF LIST / / / AG1, ACR ABAD ABAD ABAD ASMIFZ TERMC-44 /SHOULD WE IGNORE DOLLAR SIGNS??? ABAD /YEP. ASSEMBLE IN THE POINTER. ABAD AEND AOK / / / / ASCGO, ASCH1 ASCT ASCT1 / ASCGO2, ASCH2 ASCTT ASCT2 / / / / / / / / / / / / / / EJECT / THIS PAGE OVERLAPS A LITTLE FROM PREVIOUS PAGE. / / / / MORE OF THE ASCII HANDLER. / / / / / AAPUT, 0 SEARCH /CHECK FOR A SPECIAL CONTROL CHAR. AC1 /SAME LIST IS OK. AG2 TAD FTYPE /GET THE CHAR TAD M240 SPA CLA JMP AP /TOO SMALL. NOG A REGULAR CHAR. TAD FTYPE TAD M340 SMA CLA JMP AP /TOO BIG. IT S NO GOOD. TAD FTYPE /GET THE CHAR AGAIN AND L77 /JUST THE LOW ORDER BITS. AAA1, JMS AAAAAA /PLACE THE CHAR IN THE BUFFER. JMP I AAPUT /AND EXIT/ / / / AP, JMP I AAPUT /BAD CHAR. / APCR, TAD AL43 /CR FOUND. PLACE A "43" IN THE BUFFER JMP AAA1 /STICK IN BUFFER / AATAB, TAD L7 TAD AL40 /CONVERT TAB TO A 47 JMP AAA1 / / / AAEND, ASMIFN TERMC-44 /IS 44 THE END OF FILE CHARACTER? ASMSKP 2 /NO. ZERO IS. IGNORE NEXT TWO STATEMENTS. PFOUR /DOLLAR SIGN IS THE END OF BUFFER CRAP TAD AL40 /MAKE IT INTO A DOLLAR SIGN JMS AAAAAA /AND PLACE EOF CHAR IN THE BUFFER. TAD L7400 /SEE IF BUFFER IS WRITTEN OUT. CMA AND BOLDP /BY CHECKING ENDING ADDRESS SNA CLA JMP .+3 /BUFFER IS CLEAR AND WRITTEN OUT. JMS AAAAAA /BUFFER STILL IN USE. ADD 1 CHAR AND SEE IF DUMPED. JMP .-6 /NOT DUMPED. WAIT. TAD AAUNIT /GET THE UNIT DCA FUNIT /AND FLACE AWAY TAD AABLOCK /GET THE FIRST BLOCK DCA FBNUM /AND STASH AWAY. TAD AABLOCK /GET THE FIRST BLOCK CIA TAD AAOUTB /ADD IN NEXT BLOCK TO GET SIZE. DCA FSIZE /AND STASH AWAY. PONE /SET FOR SEOURCE DCA FTYPE HPUSH /NOW STASH THIS AWAY FOR FILEC TO USE. POP /REGET THE OUTPUT UNIT CONFIGUARTATION. FILEC /AND DO A DIRCTORY TYPE COPY. / / / / / AAAAAA, 0 /PLACES HALF A CHAR IN THE BUFFER. DCA BTEMP1 TAD BFIELD /FIRST TIME THROUGH? SZA CLA JMP AAA /NOPE. IGNORE SETUP ISZ BFIELD /SET SWITCH TAD AABLOCK /GET START OF BINARY CRAP. DCA AAOUTB /AND SET UP WRITE BLOCK. TAD L7400 /GET THE LOCATION OF START DCA BOLDP /AND SAVE IN THE ADDRESS MONE /SET THE SWITCH TO PLACE IN LEFT HALF OF WORD. DCA ORIGIN / ASMIFN STAR20-1 /DO WE WANT TO STICK IN A "*20" AT BEGINNING OF FILE??? ASMSKP 10 /NOPE. DONT ASSEMBLETHEM IN. / TAD A5262 /GET A "*20" AND PLACE IT DCA I BOLDP ISZ BOLDP /IN FIRST TWO WORDS OF FILE. TAD A6043 DCA I BOLDP ISZ BOLDP /BOP UP THE IN POINTER. / TAD AL43 /TELL BUFFERS WE JUST PUT A "43" IN IT. DCA ALASTC /BY PLACING IT IN LAST CAR INSERTED. / AAA, TAD BTEMP1 /GET THE CAR CIA TAD AL43 /IS IT A 43 SZA CLA JMP .+6 /NOPE. INSERT IT TAD ALASTC /GET PREVIOUS CHAR CIA TAD AL43 /WAS IT ALSO A 43 SNA CLA JMP I AAAAAA /YEP. IGNORE IT. TAD BTEMP1 /UPDATE OLD CHAR DCA ALASTC ISZ ORIGIN /TEST LEFT OR RIGHT SWITCH JMP AAA2 /RIGHT HALF TAD BTEMP1 /LEFT HALF RTL RTL RTL AND L7700 /PLACE IN LEFT HALF OF WORD DCA I BOLDP /AND STASH AWAY. JMP I AAAAAA /AND EXIT NOW. / AAA2, MONE DCA ORIGIN /RESET HALF SWITCH. TAD BTEMP1 /PLACE IN RIGHT HALF OF WORD. AND L77 TAD I BOLDP DCA I BOLDP /AND PLACE IT AWAY. ISZ BOLDP /THAT ALL> JMP I AAAAAA /YEP. BUFFER STILL GOOD. TAD L7400 /BUFFER FULL. RESET POINTER. DCA BOLDP TAD AAOUTB /GET THE OUTPUT BLOCK TAD AALIM /WILL IT EXCEED WORKING AREA? SNA CLA NO /YEP, IT WILL. GIVE ERROR MESSAGE. WRITE /WRITE OUT FULL BUFFER. AAUNIT, SYSBIN 7400 1 AAOUTB, 0 ISZ AAOUTB /BOP UP BLOCK JMP I AAAAAA /AND EXIT / / / ASMIFN STAR20-1 /DO WE WANT THE "*20" LITERALS IN??? ASMSKP 3 /NOPE. DON T PUT THEM IN. / A5262, 5262 A6043, 6043 / AABLOCK, SYSBBLOCK AL40, 40 AL43, 43 ALASTC, 0 AALIM, -SYSWT-1 /MAXIMUM SIZE OF THE WORKSPACE. / / / / / / / / / / / / EJECT / MORE ASCII HANDLERS / / / *5400 / / / / / / / / AAAGET, 0 /MAIN BUFFER GETTER ROUTINE CLA TAD BFIELD SZA CLA /ARE WE ACTIVE? JMP AAGET2 /YEP. IGNORE NEXT. ISZ BFIELD /SET STATUS SWITCH / ASMIFN STAR20-1 /DO WE WANT TO SKIP PAST A "*20" ASMSKP 3 /NOPE. NO *20 SKIP. / JMS I AGETI /GET A WORD JMS I AGETI /GET TWO WORDS (BYPASS "*20") / MONE DCA ORIGIN / LEFT HALF OF WORD CHAR. / AAGET2, ISZ ORIGIN /WHICH HALF? JMP AAGET3 /RIGHT HALF . JMS I AGETI /GET A WORD. DCA BOLDP /AND STASH AWAY TAD BOLDP /RETURN WITH ITS VALUE. RTR RTR RTR /SHIFT TO CORRECT POSITION. JMP AAGET4 /GO DOWN AND GET REST. / AAGET3, MONE DCA ORIGIN /RESET RIGHT-LEFT SWITHC. TAD BOLDP /GET THE RIGHT CHAR AAGET4, AND L77 /JUST GET 6 BITS DCA FTYPE /STORE AWAY. SEARCH /CHECK FOR A NO NO. AAGL1 AAGO1 TAD FTYPE TAD M40 /FIGURE OUT CORRECT BIT 4 SPA />40. A 20 0 TYPE CHARACTER TAD A100 /<40 A 300 TXPE CHAR. TAD AAGET3 /ADD IN 240 (ACTUALLY 7240) AND A377 /JUST MAKE IT8 BITS JMP I AAAGET /AND EXIT. / / A100, 100 A377, 377 AGETI, GETI / / AACR, TAD M215 /CARRIGE RETURN CIA JMP I AAAGET / AAATAB, PONE TAD L10 TAD L200 JMP I AAAGET / AAAEND, PTWO TAD L30 TAD L200 JMP I AAAGET /EXIT WITH A CONTROL Z IN THE AC. / / / / / AAGL1, 0 ASMIFZ TERMC-44 /IS 44 THE END OF FILE CHAR? 44 /YEP. ON 44 GO TO THE CONTROL Z GENERATOR. 43 47 4037 /END OF LIST / AAGO1, ASMIFN TERMC-44 AAAEND /00 IS THE END OF FILE CHARQACTER. ASMIFZ TERMC-44 AAAGET+1 /44 (DOLLAR SIGN) IS THE TERMINATOR. ASMIFZ TERMC-44 /IS DOLLAR SIGN LEGAL? AAAEND /NOPE. IT S THE END OF FILE CHAR. AACR AAATAB AAAGET+1 / AG2, APCR AP AP ASMIFZ TERMC-44 /ASMEBLE IGNORE CHARACTER IF DOLLA.R IS THE END OF FILE CAHR... AP AP AP AAEND AATAB / / / / / / / / / / / / ABDIS, LEFT+200 TOP-240 ASMIFN REMAKE /DO WE WANT REMAKE OPTION? ASMSKP 5 /YEP. SKIP NEXT MESSAGE. TEXT "FAUXILIARY OPTIONS: HC --- COPY SPECIFED BLOCKS HD --- DUPLICATE TAPE 0 ONTO 1\" / / / / / ASMIFZ REMAKE /DO WE WANT REMAKE MESSAGE? ASMSKP 6 /YEP. PUT IN MESSAGE. TEXT "FAUXILIARY OPTIONS: HC --- COPY SPECIFIED BLOCKS HD --- DUPLICATE TAPE 0 ONTO 1 HR --- REFORMAT FILE\" / / / / / / EJECT / / / / / *5600 / / / / / THIS IS THE ABSOLUTE BLOCK HANDLER / / / / / / / / / CINPUT=ASCINP /SAME AS SOURCE INPUT(FOR NOW) COUTPUT=ASCOUT /SAME AS SOURCE FOR NOW. / / / ABSOL, DECODE /GIVE THE MESSAGE AND WAIT FOR A REPLY. ABDIS /ABSOLUTE DISPLAY CRAP. TAD FUNIT /GET THE NUMBER OF ADDITION AL UNITS. AND L7 /ONLY 3 GOOD BITS ALWLOED. SNA /WAS IT ZERO? PONE /YEP. MAKE IT INTO A ONE. CIA /COMP TO SET UP COUNT DCA OUTNUM /AND STORE AWAY IN COUNTER SET. SEARCH /LOOKUP THE RELYP. ABL1 ABG1 JMP ABSOL /ILLEGAL REPLY. / / / / DUP, DCA INUNIT /COPIES 0 TO 1 OR MORE TAPES. DCA INBLOCK /SET UP INPUT UNIT AND BLOCK TO 0, OUTPUT BLOCK TO 0. DCA OUTBLOCK PONE DCA OUTUNIT /SET THE OUTPUT UNIT TO 1 CLA CLL CML RTR /2000 RAR /1000. A 1000 BLOCK COPY. DCA FSIZE /SET UP SIZE. COPY /THEN GO DO OCPY. PIP /RETURN TO PIP WHEN DONE / / / ACOPY, DECODE /GET THE INPUT DEVICE AND BLOCK NUMBER. CINPUT /FROM THE COPY INPUT CRAP. TAD FTYPE /GET THE REPLY TAD M314 /IS IT AN L (THE ONLY LEGAL DEVICE) SZA CLA JMP ACOPY /NOPE. REDISPLAY MESSAGE. TAD FUNIT AND L7 /MAKE SURE ITS A TAPE. DCA INUNIT /AND STASH AWAY. PUSH /SAV THE SIZE BECUASE DECODE MIGH ZAP IT. JMS AGETN /GET THE STARTING BLOCK NUMBER. JMP ACOPY /NOT ALL LEGAL NUMBERS. TAD AGNUM /GET THE BLOCK NUMBER DCA INBLOCK /AND SAVE AWAY. ACOPY2, DECODE /GET THE OUTPUT DEVICE COUTPUT /DISPLAY CHOICES TAD FTYPE TAD M314 /HAS HE CHOSEN CORRECTLY( TYPED AN L) SZA CLA JMP ACOPY2 /NOPE. RIP TAPE. TAD FUNIT /GET THE UNIT AND L7 /MAKE A TAPE DCA OUTUNIT /AND STASH AWAY. JMS AGETN /GET THE BLOCK NUMBER. JMP ACOPY2 /NOT A LEBGAL NUMBER TAD AGNUM /GET THE STARTING BLOCK DCA OUTBLOCK /AND STASH AWAY. POP /RESTORE THE SIZE OF THE COPY. COPY /AND DO IT. PIP /RETURN TO PIP WHEN DONE. / / / / AGETN, 0 /CONVERTS FNAME INTO A NUMBER(IF NOT THERE RETURNS TO .+1, OTHERWSIE TO .+2) LINC /GO OVELMODE LMODE SET I 1 /SET 1 TO POINT TO FNAME BLOCK. FNAME+6000-1 LDF 0 /IN DF 0 STC AGNUM /ZAP OUT PRESENT NUMBER. SET I 2 /SET 2 TO A COUNT. -5 AALOOP, LDH I 1 /GET THE NEXT CHAR FROM FNAME. SHD I /IS IT A 77 7777 /WHICH IS END OF NUMBER? JMP ALD /YEP. EXIT. ADA I /IS IT TOO SMALL? -57 /(BELOW 60) APO JMP AALL /YEP. BAD CHAR. ADA I /IS IT TOO LARGE -11 /(ABOVE 70) APO I JMP AALL /YEP. BAD CHAR. LDA I /GET OLD TOTAL AGNUM, 0 ROL 3 /MULTIPLY BY 10 BCL I 7 STC AGNUM /MULTIPLY DONE LDH 1 /REGET THE NUMBER ADA I -60 /CHOP OFF CHAR BITS ADD AGNUM /ADD IN OLD TOTAL. AZE I /IF NOT ZERO THEN SKP CLR /IF ZERO , ZERO AC TO 0000, IN CASE IT WAS 7777, WHICH IS EVIL IN 8 MODE. STC AGNUM /STASH AWAY SOMEPLACE O OTHER. XSK I 2 /BOP UP COUNT JMP AALOOP /MORE TO GO. JMP AALL /TOO MANY DIGITS. NUM TOO LARGE. / / / / ALD, PDP /GET INTO PMODE PMODE ISZ AGETN /GO TO GOOD RETURN / LMODE / AALL, PDP /GET INTO 8 MODE PMODE /WE RE BACK IN PMODE NOW. CLA /CLEAR THE AC JMP I AGETN /AND EXIT. / / / / / / / / / / / / ABL1, 303 ASMIFN REMAKE /REMAKE OPTION INCLUDED??? 322 /YEP. PLACE CHECK CHAR IN LIST. 4304 / ABG1, ACOPY ASMIFN REMAKE /REMAKE OPTION??? KONVRT /YEP. PLACE IN POINTER OPTION. DUP / / / / / / / / / / / / / / / ASMIFN CARD-1 /DO WE WANT LINE PRINTRTER.??? ASMSKP 30 /NOPE. DONT ASEEMBLE IT N. / / / LPT2, 0 /LINE PRINTER CHECKER AND INITIALIZER. TAD FTYPE /GET THE OUTPUT DEVICE TAD LPM320 /IS IT A "P" SZA CLA /? JMP I LPT2 /NOPE. RETURN TO CHECK SOME MORE. JMS I LLPEJ2 /YEP. GIVE TWO EJECTS TO GET THINGS GOING. ISZ BFLAG2 /PREPARE TO SET OUTPUT FLAG TO 3 JMP I .+1 /RETURN AND ADD TWO MORE TO BFLGA2 ASCH2 /HIGH SPPEED PUNCH SETTER / LPM320, -320 /"P" LLPEJ2, LPEJ2 /POINTER TO EJECTOR ROUTINE. / / / / / / / / / / / / / / / / / / / / EJECT / / / / ASMIFN CARD-1 /DO WE WANT THE WARD READER ROUTINE IN THERE?????? ASMSKP 2250-1436 /NOPE. SKIP PAST THE MESS. / / / / *6000 / / / / / CARD READER AND LINE PRINTER ROUTINES. / / / 0000 /FOR JMPS IN LMODE / / / LMODE /DEFINE SYMBOLS IN LMODE IN CASE OF ADDRESSING ERRORS WHILE ASSEMBLING / CDCUNT, 0000 CPOINT, 0000 CDSWT, 0000 CDCONT, 0000 / / / / / PMODE /TELL IT WE RE BACK IN PMODE NOW. / / / / RCSF=6631 /SKIP IF COLUMN READY. RCRA=6632 /READ IN AN ALPHA CHAR RCRB=6634 /READ IN A BINARY CHAR. RCSD=6671 /SKIP IF END OF CARD. RCSE=6672 /START A NEW CARD MOVING AND SKIP IF OK. RCRD=6674 /TURN OFF THE CARD DONE FLAG. / / / / / / / CDINIT, 0 /INITIALIZE THE CARD READER. DCA BTEMP3 /CLEAR THE CARD MOVING FLAG. DCA BTEMP2 /CLEAR THE CARD IN BUFFER FLAG. TAD BOLDO /GET THE FIRST COLUMN TO BE LOOKED AT. TAD DATA /GET THE LAST COLUMN TO DE DONE. SNA CLA /OBTH ZERO? TAD CDL110 /GET A 72 IN THE AC. SZA /IS IT ZERO??? DCA DATA /NOPE. STORE THE 72 IN THE LAST COLUMN SCAN. TAD DATA /GET THE LAST CLUMN CMA TAD BOLDO /GET THE FIRST AND COMPARE CDL100, SMA CLA /IS THE FIRST> THEN LAST? NO /IT IS. GIVE ERROR MESSAGE. JMP I CDINIT /INITIALIZATION FINISHED. / / CDL110, 110 /72 DECMIL / / / CDREAD, 0 /READS A CHAR FROM THE CARD READER. MTHREE /DO WE WANT CARD READER INPUT???? TAD BFLAG1 /CHECK THE INPUT FLAG. SNA CLA JMP .+3 /YEP. WE CWANT CARD READER INPUT ISZ CDREAD /NOPE. JMP THRIRD RETURN ADDRESS. JMP CDISZ /ISZ CDREAD AGAIN BEFORE EXITING. TAD BTEMP2 /IS THE CARD ALREADY IN THE BUFFER??? CDL240, SZA CLA /ALSO A 240 LITTERAL HERE JMP CDNEXT /YEP. IT IS. FETCH A CHAR FROM IT. TAD BTEMP3 /IS THE CARD MOVING???? SZA CLA JMP CDGONG /ITS MOVING. CHECK TO SEE IF COLUMN IS READY. RCSE /START THE CARD GOING NOW... JMP CNOTR /ITS NOT READY. WAIT AWILE BY RETURN TO USER. ISZ BTEMP3 /SET THE SWITCH TO SHOW THE CARD MOVING. MOVE /ZERO OUT THE CARD BUFFER. CDBUF-1 /CONTAINS A 0000 CDBUF 50 /80=120=50*2 TAD CDPONT /SET CPOINT TO POINT TO FIRST CHAR OF CARD BUFFER DCA CPOINT DCA BCOUNT /ZERO OUT THE CURRENT COLUMN COUNTER. / CDGONG, RCSF /IS THERE A CHAR THERE??? JMP CNOTR /NOPE. WAIT. RCRA /READ IT IN ALPHA NUMERIC TYPE DCA TEMP /STORE IN TEMP ISZ BCOUNT /BOP UP COLUMN COUNTER BY 1. TAD BCOUNT /GET CURRENT POSITIION. CLL CML CMA IAC /13 BIT NEGATE TAD BOLDO /IS IT BELOW THE STARTING COLUMN??? SNL SZA CLA JMP CNOTR /YEP. IGNORE IT. TAD DATA /GET THE UPPER LIMIT CLL CML CMA IAC /13 BIT NEGATE. TAD BCOUNT /HAVE WE GONE TOO FAR??? SNL SZA CLA JMP CNOTR /YEP. IGNORE THE CHAR. TAD TEMP /ALL IS WELL. RETRIEVE THE HCARACTER. LINC /NOW GO OVER TO THE LINC SIDE. LMODE STH I CPOINT /SAVE THE HALFWORD IN THE BUFFER. PDP PMODE /AND BACK INTO 8 MODE. / CNOTR, CLA /CLEAR THEAC TO BE SURE. RCSD /END OF CARD REACHED??? JMP I CDREAD /NOPE. RETURN TO USER TO WAIT AWHILE. JMP CDDONE /GO CONVERT STORED CARD. / / / CDNEXT, LINC /CARD IN BUFFER AND CONVERTED. LMODE /LETS GET A CHAR. LDH I CPOINT /GET A CHAR. PDP /GET OVER INTO A DECENT MODE PMODE SNA /IS IT THROUGH(00=CR) JMP CDEOC /YEP. END OF CARD. TAD M40 /NOT DONE. SEE WHICIH WAY TO ADD. SPA TAD CDL100 /01-37=301-337 TAD CDL240 /40-77=240-277 / CDISZ, ISZ CDREAD /AND EXIT TO SECOND LOCATION JMP I CDREAD /(OR THIRD IF CARD READER NOT CHOSEN DEVICE. / / / CDEOC, DCA BTEMP2 /TURN OF THE CARD IN FLAG TAD CDL215 /GET A CR IN THE AC JMP CDISZ /AND EXIT. / / / / / CDDONE, DCA BTEMP3 /TURN OFF THE CARD MOVING SWITCH. ISZ BTEMP2 /AND TURN ON THE CARD IN BUFFER SWITCH. RCRD /TURN OFF THE CARD DONE FLAG. LINC /AND GO OVER TO LMODE LMODE SET I CDCUNT /SET COUNTER TO 80 COLUMNS -120 SET I CPOINT /SET POINTER TO POINT TO LAST COLUMN+1 CDBUF+50 STC CDSWT /TELL THE BLANK SCANNER TO DELETE BLANKS. / CDLOOP, LDA I -4000 /BACKSPACE 1 CHAR IN CARD BUFFEER. ADM CPOINT LDH CPOINT /GET THE CHAR XSK CDSWT /TEST THE BLANKS SCAN SWITCH. AZE /STILL SCANNING. CHECK FOR BLANK. SKP /NOT BLANK OR NOT SCANNING. JMP CDFUNT /IT BLANK. IGNORE IT. ROR 1 /ROTATE RIGHT TO PUT BIT 11 IN BIT 0 ADA I /NOW ADD IN BASIC TABLA ADDRESS POINTER. CDTAB STC CDCONT /GET TRANSITION CHAR ADDRESS. LDH CDCONT /NOW GET THE TRANSITION CHARACTER. SET I CDSWT /AND TELL IT WE RE NOT SCANNING BLANKS ANYMORE -0 CDFUNT, STH CPOINT /NOW STASH AWAY CONVERTED CHAR. XSK I CDCUNT /HAVE WE DONE 80 COLUMNS?? JMP CDLOOP /NOPE. GO BACK AND DO ANOTHER. SET I CPOINT /YEP. WE VE DONE 80 COLUMNS. CDPONT, CDBUF-1+4000 /SET THE POINTER SO CDNEXT CAN GET THE CHARS. JMP CDNEXT+1 /AND EXIT AND GET A CHAR TO SEND B / / / / / / / LP1, 211 /TAB CDL215, 215 /CR 4232 / END-OF-TAPE / / / / / / / / / EJECT / / / 0000 /USED FOR ZEROING OUT THE CARD BUFFER. / CDBUF, 0000 /80 COLUMN BUFFER / *CDBUF+50 / 0000 /USED AS END OF CHAR CHARACTER INCASE OF 80 CHARACTER SCAN. / / / / / / / / THIS IS THE CONVERSION TABLE FOR THE CARD READER CHARS TO ASCII CHARS. / / / CDTAB, 4061 /BLANK 1 6263 /2 3 6465 /4 5 6667 /6 7 7071 /8 9 7243 /: NUMBER SIGN 4047 /AT SIGN APOSTROPHE 7542 /= " 6057 /0 / 2324 /S T 2526 /U V 2730 /W X 3132 /Y Z 3554 /] , 4537 /% BACK ARROW. 7677 /> ? 5512 /- J 1314 /K L 1516 /M N 1720 /O P 2122 /Q R 4144 /! DOLLAR SIGN 5251 /* ) 7334 /; \ 4601 /? A 0203 /B C 0405 /D E 0607 /F G 1011 /H I 3356 /[ . 7450 /< ( 5336 /+ ^ / / / / / / / / / EJECT / / PMODE / / / / LINE PRINTER ROUTINE. / / / / / / / LINE PRINTER DEFINITIONS. / / LSE=6651 LCF=6652 LLB=6654 LSD=6661 LCB=6662 LPR=6664 / / / / / / / / / / LPTEST, 0000 /MAIN LINE PRINT CHARACTER CABOSH. MTHREE /IS IF LINE PRINTER IS THE CHOSEN ONE(DEVICE 3) TAD BFLAG2 SZA CLA JMP I LPTEST /NOT THE CHOSEN ONE. TAD I LPSEQ /GET THE CHAR DCA FTYPE /PLACE IN SEARCHER INPUT. SEARCH LP1 LP2 TAD FTYPE /GET THE CHAR TAD M340 /SUBTRACT TOO BIG CHAR. CLL /CLEAR LINC FOR NEW TEST. TAD LPL100 /CHECK FOR LOWER LIMIT SNL CLA /IS IT INBETWEEN 240-337??? JMP I LPEXIT /NOPE. IGNORE IT. TAD FTYPE /GET THE CHAR LPCOMM, JMS LPPUT /AND OUTPUT THE CHAR. JMP I LPEXIT /AM D EXIT / / / LPEXIT, SEQEXT LPSEQ, SEQIN LPCOL, 0000 / / / / LPEJ2, 0 /GIVES TWO EJECTS ON THE PRINTER. MONE /REALLY A 17 JMS LPPUT /EJECT 1 TAD LPM204 /RESET THE COUNTER TO 130 CHARS PER LINE. DCA LPCOL /AND STASB AWAY MONE JMS LPPUT /EJECT 2 JMP I LPEJ2 /RETURN TO THE CLALER. / / / / LPPUT, 0 /PRINTS A CHAR OR DOES A CONTROL CRAP. DCA TEMP /SAVE THE CHAR. ISZ LPCOL /WILL THIS OVERFLOW THE LINE??? JMP LPWFIT /IT WILL FIT LPCR, TAD LPM204 /RESET TO 130 CHARS ON THE LINE DCA LPCOL /STASH AWAY. TAD L7770 /SPACE 1 LINE JMP LPCOMM /GO TO THE COMMON CHAR PUTTER. LPWFIT, CHECKIO /CHECK FOR A CONTROL Z OR SOMETHING. LSD /LINE PRINTER CLEAR???? JMP LPWFIT /NOPE. WAIT. LCF /CLEAR THE FLAG TAD TEMP /GET THE FUNCTION. SMA /IS IT A CONTROL. LLB /NOPE. MUST BE CHAR. STICK IN BUFFER.R. SPA /IS IT POSITIVE? LPR /NOPE. MUST BE CONTROL. ZAP IT CLA /NOW CLEAR THE AC TO BE SURE. JMP I LPPUT /AND RETURN TO THE CALLER. / / / / / / / / LP2, LPTAB LPCR LPEND / / / / LPTAB, TAD LP40 /BLANK JMS LPPUT /SEND TO PUTTER ROUTINE. PTHREE /TO CORRECT FOR THE -204+1 [3]. TAD LPCOL /GET THE COLUMN. AND L7 /IS IT A MULTIPLE OF 8 SZA CLA /?? JMP LPTAB /NOPE. GIVE ANOTHER BLAKN. JMP I LPEXIT /AND EXIT. / / LPEND, JMS LPEJ2 /GIVE TWO EJECTS. PIP / / / / LP40, 40 LPL100, 100 LPM204, -204 / / / / / / / / / / / / / / / EJECT / THIS ORIGIN INSURES THAT BUFFER-1 CONTAINS A ZERO FOR THE TRIVIAL CORE ZERO ROUTINE / WHICH IS LOCATED IN PAGE 1(200-377) / / / / *BUFFER-1 / 0000 / / / / / / / EJECT *BUFFER / / / / THIS ROUTINE IS CALLED ONLY ONCE AT INITIALIZATION TO FIGURE OUT HOW / MANY K OF CORE THE GUY HAS. THEN IT S USED IN THE / BUFFER AREA. / / / / / / / COREF, 0 /MAIN ENTRY. CLA CLL DCA TEMP /ZERO OUT CLOOP, ISZ TEMP TAD TEMP CIA DCA COUNT DCA TEMP1 CLLOOP, ISZ TEMP1 JMS CSET TAD TEMP1 DCA I CPBYTE ISZ COUNT JMP CLLOOP TAD TEMP CIA DCA COUNT DCA TEMP1 CCLOOP, ISZ TEMP1 JMS CSET TAD I CPBYTE CIA TAD TEMP1 SZA CLA JMP COUT ISZ COUNT JMP CCLOOP JMP CLOOP / COUT, MTWO TAD TEMP CLL RTL RTL DCA TEMP1 TAD CBUFF CIA CLL RTL RTL RAL TAD TEMP1 DCA BNUM CDF 0 TAD BNUM CLL RAR AND L7770 SZA CLA JMP I COREF TAD M40 DCA COUT DISPLAY INSULT ISZ COUT JMP .-3 JMP I COREF / / CSET, 0 TAD L7777 TAD TEMP1 AND L7 CLL RTL RAL TAD CCDF DCA .+1 0 JMP I CSET / CCDF, CDF 0 CBUFF, BUFFER CPBYTE, 7777 /SHOULD BE A FREE LOC NOW. / / / / INSULT, LEFT+240 /ABOUT CENTER OF SCREEN TOP TEXT " FI WOULD F RUN F FASTER FIF YOU F HAD F 8K FINSTEAD FOF ONLY F 4K\" / / / / / / EJECT / SAVE THE SYMBOLS FOR P I P 1 / / / / / / SAVSYM 2 / / / / / EJECT