File MEMORY.PA (PAL assembler source file)

Directory of image this file is from
This file as a plain text file

/ MEMORY FUNCTION ROUTINE			21-MAY-90
/
/
/
/
/EDIT HISTORY:
/
/7-JUL-78  (LHN): [N1]
/	1)  ADDED FIX FOR "MOTION PULSE MISSING" ERROR BUG.
/
/21-MAY-90	(LHN)
/	1) ADD MACHINE CHECK SHEETS TO THE TOTAL SAMPLE
/	   COUNTER.
/









	TASK=	MEMORY
	INIWT=	0
	CUR=	MEMRYFLD
	VERS=	1

	TASK2=	CHOP
	CUR2=	CUR
	INIWT2=	0
	VERS2=	3



	FIELD MEMRYFLD%10
	*MEMRYLOC

/ / /%R MEMORY FUNCTION ROUTINE / /%TW THIS ROUTINE IS EXECUTED EACH TIME A MOTION / INTERRUPT IS RECOGNIZED. IT CHECKS TO SEE THAT A / MOTION BIT WAS RECEIVED FROM THE MOTION ENCODER. IF / NOT, AN "INVALID MOTION PULSE" ERROR MESSAGE IS / QUEUED ON THE CONSOLE TELETYPE, AND THE MACHINE IS / STOPPED WITH THE MAST MONITOR INTERLOCK. / /%TD FOR VALID MOTION INTERRUPTS, "MEMORY" SEQUENCES THE / FUNCTIONS NECESSARY FOR THIS MOTION PULSE. THE / ROUTINES CALLED SERVICE THE INSPECTOR DEFECT DATA / ("DEFDAT"), THE CHOP SIGNAL ("CHOPCK"), AND THE JUMP / TABLE ("MEMWRK"). IF STACKER RUNOUT IS IN PROGRESS / CONTROL IS TRANSFERRED TO "SROCTR". / /%TD AFTER DOING THE WORK NECESSARY FOR THIS MOTION PULSE, / "MEMORY" CHECKS IF ANOTHER MOTION PULSE HAS OCURRED. / IF NOT CONTROL IS RETURNED TO THE INTERRUPTED / PROGRAM VIA "INTRET". IF ANOTHER MOTION PULSE HAS / COME IN, MAST HAS BEEN OVERSPEED AND MAY HAVE LOST / TRACK OF PRODUCT DATA. IN THIS EVENT THE MAST / MONITOR INTERLOCK IS OPENED AND THE ERROR MESSAGE / "MAST OVERSPEED" IS QUEUED FOR THE CONSOLE TELETYPE. / WHILE THE EXERCISER CAN OVERSPEED MAST UNDER SOME / CONDITIONS, THE FINISHING MACHINE CANNOT! IF AN / OVERSPEED OCCURS DURING NORMAL OPERATION THERE / IS A SYSTEM FAILURE IN THE HARDWARE OR SOFTWARE / AND THE WHOLE SYSTEM SHOULD BE CHECKED CAREFULLY. / / START, CLB /FIRST ADD US TO THE INTERRUPT CAL /CHAIN. SKPINS MOTINT MEMR1, CLB CAL /TO SLEEP 'TIL THE NEXT MOTION WAITE /PULSE COMES ALONG. MOTEVF ISZ MOTEVF /SET OUR EVENT FLAG PENDING NOW ! DBRO54 /TOGGLE THE MAST RUNNING LINE. AND (4000) DBCO54 CLL RAL CML RAR DBSO54 CLB TAD MOTENB /IS THE MOTION BIT ENABLED ? SZA CLA JMP MEMR1 /NO, EXIT TAD SROFLG /ARE WE IN STACKER RUN OUT ? SZA CLA JMP SROCTR /YES, GO SERVICE STACKER RUN OUT
/ DBRI50 /DID THE CHOP OCCUR SINCE THE AND (0200) /LAST MOTION PULSE ? SNA CLA JMP MEMR3 /NO, GO ON. CLB TAD (CHOP) /YES, RUN THE CHOP PROCESSING TASK CAL RUN TAD SHLENG /IS THE SHEET LENGTH COUNTER CIA /WITHIN 2 MOTION PULSES OF THE TAD SHLCNT /SHEET LENGTH. TAD (3) SMA CLA JMP MEMR2 /OK, GO ON TAD FCHOPF /IS THIS THE FIRST CHOP AFTER SZA CLA /START UP ? JMP MEMR2 /YES, FORGET IT, GO ON. CAL SEND INLOCK SROMG1 TAD MEMMSG /IS OUR ERROR MESSAGE BUSY ? SZA CLA JMP MEMR2 /YES, GO ON. CAL SEND TTYST MEMMSG MEMR2, TAD (200) /CLEAR THE CHOP BIT. DBCI50 CLB CMA /SET THE AC TO SAY CHOP TIME. MEMR3, JMS MEMWRK /GO DO WHAT IS NEEDED FOR THIS /MOTION INTERRUPT. TAD CTHOLD /ARE WE IN COUNT/HOLD ? SZA CLA JMP MEMR1 /YES, EXIT ISZ METER1 /NO, INCREMENT THE METERAGE COUNTER JMP MEMR1 /RETURN THRU THE INTERRUPT RELEASE CDF CRTXDF ISZ I (INCRTM) /TELL FIELD 3 TO INCREMENT THE METER CDF CUR /COUNTER DISPLAY. TAD METERC /RESET THE METER COUNTER DCA METER1 JMP MEMR1 MEMRA, 0 /LOCAL TEMPORARIES. MEMRB, 0
/ / / MOTION PULSE INTERRUPT HANDLER / / MOTINT, ZBLOCK 2 DBSK50 /MOTION PULSE INTERRUPT ? JMP I MOTINT /NO, BACK INTO THE SKIP CHAIN. / / READ AND CLEAR BIT 0 / CDF CIF CUR AC2000 DBCI50 /CLEAR MOTION PULSE FROM INPUT REG. CLB CIF 0 TAD (MOTEVF) /POST THE EVENT FLAG TO WAKE UP /MEMORY TASK. POSTDS MOTEVF, 1 /MOTION PULSE EVENT FLAG
/ / /%R STACKER RUN OUT CONTROL / /%TW THIS ROUTINE IS ENABLED BY "LP07" WHENEVER THE / OPERATOR ENTERS THE STACKER RUNOUT MODE. COME HERE / FROM "MEMORY" FOR EACH MOTION PULSE WHILE CLEARING / THE STACKER TO SEQUENCE THE SHEETS IN THE STACKER / BELTS INTO THE APPROPRIATE TRAYS. "SROCTR" ALS0 / CHECKS THE RUNOUT TRAP SET UP BY "LP07" AND WHEN THE / TRAP GOES TO ZERO, THE STACKER IS CLEAR AND THE MAST / MONITOR INTERLOCK IS USED TO STOP THE MACHINE. THE / "STACKER RUNOUT FINISHED" MESSAGE IS ALSO DISPLAYED / ON THE OPERATOR'S CRT AND FURTHER MOTION PULSES ARE / DISABLED UNTIL THE MACHINE HAS STOPPED. / /%TD DURING RUNOUT THE CHOPPER IS NOT MOVING AND "SROCTR" / SIMULATES THE NECESSARY CHOP PULSES. THE PSUEDO / CHOP PULSES ARE GENERATED WHENEVER THE SHEET LENGTH / COUNTER EQUALS THE KNOWN SHEET LENGTH. THESE CHOP / SIGNALS ARE NEEDED TO SEQUENCE THE JUMP TABLE. THE / MOTION PULSES OCCUR AS USUAL SINCE THE MOTION / ENCODER IS DRIVEN BY THE STACKER. / / SROCTR, CLB ISZ SROTRP /YES, HAVE WE DONE ENOUGH RUN OUT ? JMP SROC1 /NO, GO ON CAL /YES, OPEN THE "MAST MONITOR" SEND /INTERLOCK. INLOCK SROMG1 CAL SEND /GO DISPLAY "STACKER RUN OUT CRTMSG /FINISHED" MESSAGE SROMG2 ISZ SRODNF /SET THE STACKER RUN OUT DONE FLAG CLB IAC /DISABLE THE MOTION ENCODER DCA MOTENB /INTERRUPT CLB CMA DBCO50 /TURN OFF ALL THE STACKER GATES JMP MEMR1 / AND EXIT.
/ SROC1, TAD SHLCNT /DOES THE SHEET LENGTH COUNTER EQUAL CIA /THE KNOWN SHEET LENGTH ? TAD SHLENG SPA SNA CLA CLB CMA /YES, SET THE AC TO SAY CHOP TIME SROC2, JMS MEMWRK /GO DO THE JUMP TABLE WORK JMP MEMR1 /NOW EXIT. SROMG1, ZBLOCK 3 2000 /OPEN "MAST MONITOR" INTERLOCK SROMG2, ZBLOCK 3 MOPM06 /"STACKER RUN OUT FINISHED" /OPERATOR MESSAGE. PAGE
/ / /%R ENTER THE MEMORY JUMP TABLE / /%TW COME HERE FROM "MEMORY" OR "SROCTR" FOR EACH MOTION / INTERRUPT, SET UP AND RUN WHATEVER TASKS / ARE NEEDED FOR THIS MOTION PULSE. SOME TASKS / NEED BE DONE ONLY ONCE PER SHEET LENGTH OF PRODUCT / TRAVEL, BUT IT IS IMPORTANT THAT THEY BE DONE WHEN / THE SHEETS ARE IN CERTAIN SPECIFIED POSTIONS. / THESE FUNCTIONS INCLUDE SETTING UP THE STACKER GATE / DELAY COUNTERS, FIRING THE SAMPLE MARKER, AND / STORING THE INSPECTOR DEFECT DATA FOR A SHEET. / /%TD "MEMWRK" ALSO MAINTAINS THE SHEET LENGTH COUNTER. A / CHECK IS MADE TO INSURE THAT THE SHEET LENGTH / COUNTER DOES NOT EXCEED THE KNOWN SHEET LENGTH. IF / IT DOES, THE CHOP PULSE IS MISSING (OR LATE) AND THE / MAST MONITOR INTERLOCK IS OPENED TO STOP THE MACHINE. / THE "CHOP SIGNAL MISSING" ERROR IS ALSO QUEUED FOR / THE CONSOLE TELETYPE. / / MEMWRK, 0 SPA CLA /AC NEGATIVE ? ( - SAYS CHOP TIME) JMP MEM3 /YES, DO CHOP TIME SERVICE. ISZ SHLCNT /INCREMENT THE SHEET LENGTH COUNTER TAD SHLENG /CHECK THAT THE SHEET LENGTH COUNTER CIA /DOES NOT EXCEED THE SHEET LENGTH BY TAD SHLCNT /MORE THAN 1 MOTION PULSE. SPA SNA JMP MEM2 /IT IS OK, GO ON CLL RAR /THE SHEET LENGTH COUNTER EXCEEDS /[N1] CLL RAR SNA CLA /THE SHEET LENGTH. BY MORE THAN 3 ? JMP MEM2 /[N1] NO, GO ON ISZ FCHOPF TAD FCHOPF /IS THIS THE FIRST CHOP AFTER SZA CLA / STARTUP ? JMP MEM1 /YES, GO ON TAD MEMWMG /IS OUR ERROR MESSAGE ACTIVE ? SZA CLA JMP MEM1 /YES, GO ON CAL /NO, LOG "CHOP SIGNAL MISSING" ERROR SEND TTYST MEMWMG MEM1, CLB IAC DCA SHLCNT /RESET THE SHEET LENGTH COUNTER TAD (DSPTBL-1) DCA MEMWPR
/ MEM2, JMS GATEON /GO TURN ON THE STACKER GATES AS / NEEDED JMS MEM5 /NOW CHECK WHAT TASKS SHOULD RUN JMP I MEMWRK /ALL DONE, RETURN. / / / AT CHOP TIME FINISH THE WORK FOR THIS SHEET / / MEM3, TAD SHLENG /IF THE SHEET LENGTH COUNTER IS CMA / LESS THAN THE KNOWN SHEET LENGTH, TAD SHLCNT / FORCE ANY REMAINING TASKS IN THE SMA / DISPATCH TABLE TO RUN. JMP MEM4 DCA MEMWA JMS MEM5 ISZ MEMWA JMP .-2 MEM4, CLB CMA /INCREMENT THE MEMORY TABLE POINTER TAD MEMPTR AND (0377) /TRAP THE POINTER WITHIN THE TABLE. TAD (MEMTBL) DCA MEMPTR JMP MEM1 /NOW DO WHATEVER FOR THE FIRST / MOTION PULSE OF THE SHEET. / / / CHECK THE DISPATCH TABLE FOR TASKS TO RUN / / MEM5, 0 MEM5A, ISZ MEMWPR /GET THE NEXT ENTRY IN THE DISPATCH TAD MEMWPR / TABLE. DCA MEMWB /SAVE FOR 2 LEVEL INDIRECT. TAD I MEMWB SNA /IS IT 0 ? JMP I MEM5 /YES, RETURN DCA MEMWB /NO, SAVE THE ADDRESS FOR INDIRECT CDF 0 TAD I MEMWB /REMOVE THE RUN WAIT BIT AND (-RUNWT-1) /FOR THIS TASK. DCA I MEMWB /ZERO THE TASKS FLAG WORD TO MAKE CDF CUR / THE TASK RUNNABLE. JMP MEM5A /LOOK AT THE NEXT ENTRY
/ MEMWA, 0 /LOCAL TEMPORARY MEMWB, 0
/ / /%R TURN THE STACKER GATES ON WHEN NEEDED / /%TW THIS ROUTINE IS CALLED FROM "MEMORY" DURING THE / SERVICING OF A MOTION PULSE, AND MONITORS THE / STACKER GATE TURN ON DELAY TIMING. THE TURN ON / DELAY COUNTERS ARE SET UP BY THE INDIVIDUAL GATE / HANDLERS. WHEN ONE OF THESE DELAY COUNTERS GOES TO / ZERO, "GATEON" TURNS ON THE GATE AND TRAY AIR VALVES / FOR THAT STACKER POSITION. / / GATEON, 0 CLB /HAS THE SAMPLE GATE TURN ON DELAY ISZ SMGTON /TIMED OUT ? JMP .+4 /NO, GO ON TAD (4000) /YES, TURN THE SAMPLE GATE AND TRAY DBSO50 /AIR ON. CLB /HAS THE REJECT A GATE TURN ON DELAY ISZ RAGTON /TIMED OUT ? JMP .+4 /NO, GO ON TAD (2000) /YES, TURN THE REJ. A GATE AND TRAY DBSO50 /AIR ON. CLB /HAS THE REJECT B GATE TURN ON DELAY ISZ RBGTON /TIMED OUT ? JMP .+4 /NO, GO ON TAD (1000) /YES, TURN THE REJ. B GATE AND TRAY DBSO50 /AIR ON. CLB /HAS THE PRODUCT C GATE TURN ON ISZ PCGTON /TIMED OUT ? JMP .+4 /NO, GO ON. TAD (0400) /YES, TURN THE PROD. C GATE AND TRAY DBSO50 /AIR ON CLB /HAS THE PRODUCT A GATE TURN ON ISZ PAGTON /DELAY TIMED OUT ? JMP .+4 /NO, GO ON TAD (0200) /YES, TURN THE PROD. A GATE AND TRAY DBSO50 /AIR ON CLB /HAS THE PRODUCT B GATE TURN ON ISZ PBGTON /DELAY TIMED OUT ? JMP .+4 /NO, GO ON. TAD (0100) /YES, TURN THE PROD. B GATE AND TRAY DBSO50 /AIR ON CLB JMS GATEOF /NOW CHECK THE TURN OFF DELAYS. JMP I GATEON /RETURN
/ PAGE
/ / /%R CHOP TIME FUNCTION SEQUENCE / / /%TD "CHOPCK" COMBINES THE PRODUCT DATA FROM THE DEFECT / MEMORY TABLE WITH THE MANUAL SAMPLE AND REJECT / REQUEST DATA AND PASSES THIS INFORMATION TO "PRODCT", / WHICH DETERMINES THE TRAY DESTINATION FOR THIS / SHEET. "CHOPCK" ALSO INCREMENTS THE DEFECT MEMORY / POINTER "MEMPRT" FOR EACH CHOP. "PRODCT" IS THEN / CALLED TO MAKE A PRODUCT DECISION ABOUT THE SHEET / JUST CHOPPED, AND PICK THE STACKER TRAY DESTINATION / FOR THAT SHEET. / /
START2, CLB CAL SUSPND /GO TO SLEEP 'TIL NEEDED CLB TAD MANSMF /IS THE MANUAL SAMPLE FLAG SET ? SNA CLA JMP CHOP3 /NO, GO ON TAD (40) /YES, MARK THE NEXT SHEET AS A TAD I MEMPTR /SAMPLE. DCA I MEMPTR CLB CMA TAD MANSMF /DECREMENT THE MANUAL SAMPLE REQUEST SMA /FLAG. (THE FLAG VALUE MUST REMAIN DCA MANSMF /POSITIVE OR ZERO.) JMP CHOP4 CHOP3, TAD MANRJF /IS THE MANUAL REJECT FLAG SET ? SNA CLA JMP CHOP4 /NO, GO ON TAD I MEMPTR /YES, IS THE NEXT SHEET AVAILABLE AND (0170) /FOR A REJECT ? SZA CLA JMP CHOP4 /NO, GO ON TAD (400) /YES, MARK THE NEXT SHEET AS A TAD I MEMPTR /REJECT. DCA I MEMPTR CLB CMA TAD MANRJF /DECREMENT THE MANUAL REJECT REQUEST SMA /FLAG. (THE FLAG VALUE MUST REMAIN DCA MANRJF /POSITIVE OR ZERO.) CHOP4, CLB ISZ CHOPCT /INCREMEMT THE CHOP COUNTER FOR NOP /DISPLAY - THIS NOP IS REQUIRED !! JMS PRODCT /GO SET UP STACKER FOR THIS SHEET /REGISTER CDF 20 CLB IAC /SET THE CHOP HAPPENED FLAG FOR DCA I (CHOPFG) / "TALLEY". CDF CUR CLB TAD (TALLEY) /NOW WE CAN TALLEY THIS SHEET. CAL RUN TAD (SAMPLE) /ALSO RUN PATTERN SAMPLING TASK. CAL RUN
/ CLB IAC TAD FCHOPF /INCREMENT THE FIRST CHOP COUNTER SPA SNA DCA FCHOPF /BUT DON'T LET IT GO BEYOND 0. CLB TAD MCHECK /IS THE MACHINE CHECK FLAG SET ? SNA CLA JMP START2 /NO, ALL DONE, EXIT. DCA MCHECK /YES, CLEAR THE MACHINE CHECK FLAG. TAD MCHEKN /GET THE NUMBER OF SHEETS FOR THIS TAD PROCNT / CHOP SIZE AND EXTEND THE PUTUP. DCA PROCNT TAD MCHEKN /ADD THE MACHINE CHECK SHEETS TO CIA / THE TOTAL SAMPLES COUNTER CDF 30 TAD I (INCRTS) DCA I (INCRTS) CDF CUR TAD MCHEKN /NOW WE CODE THE FLAG FOR THE CIA / OTHER FIELDS. MQL TAD PROFLG /GET THE ACTIVE PRODUCT TRAY AND TAD (PDTTBL-1) / CONVERT IT TO A LETTER AND DCA CHOPZ1 TAD I CHOPZ1 MQA / 'OR' IN THE SHEET COUNT. CDF 20 DCA I (MCKMGF) /SAVE FOR "TALLEY" TAD I (MCKMGF) CDF 30 DCA I (MCKDSP) /AND FOR "MISC1". CDF CUR JMP START2 /GO BACK TO SLEEP PDTTBL, 0200 0100 0000 0300 CHOPZ1, 0
MEMMSG, ZBLOCK 3 0 0 TEXT "]3MOTION PULSE MISSING" MEMWMG, ZBLOCK 3 0 0 TEXT "]3CHOP SIGNAL MISSING" PAGE
/ / /%R PRODUCT DIRECTION ROUTINE / /%TW COME HERE FROM "CHOPCK" FOR EACH CHOP TO DECODE / WHICH TRAY THIS SHEET BELONGS IN AND RETURN THE / SHEET DESTINATION INFORMATION TO THE DEFECT MEMORY / TABLE FOR THE STACKER GATE HANDLER ROUTINES. / /%TD "PRODCT" ALSO CONTROLS CHANGING OF THE ACTIVE TRAYS / AS THEY FILL WITH PRODUCT. DURING A MACHINE CHECK / THIS ROUTINE WILL ADD 5 SHEETS TO THE NEXT PRODUCT / TRAY (5 SHEETS ARE ADDED TO THE CURRENT PRODUCT TRAY / BY "MOPCMD"). IF THE MAINTENANCE FLAG "STAKFG" IS / SET, "PRODCT" GOES TO THE STACKER MAINTENANCE DRIVER / ROUTINE "STAKCN" FOR THE REQUESTED TRAY DESTINATION, / WHICH OVERRIDES THE NORMAL TRAY DIRECTION. WHEN / THE GOOD PRODUCT TRAYS CHANGE, THE "NEWBOX" FLAG IS / SET FOR THE SAMPLE TALLEY ROUTINE "TALGEN" IN FIELD / 2. / / PRODCT, 0 CLB TAD STAKFG /IS THE MAINTENANCE FLAG SET ? TAD STAKSF SNA CLA JMP .+3 /NO, GO ON JMS I (STAKCN) /YES, GO TO THE MAINTENANCE ROUTINE JMP I PRODCT /RETURN TAD I MEMPTR /SAVE THE DATA FOR THIS SHEET FOR DCA CHOPSV /THE SAMPLE TALLEY ROUTINE TAD I MEMPTR /IS THIS SHEET MARKED AS A SAMPLE ? AND (3160) SNA CLA JMP PROD1 /NO, GO ON TAD SMTFLG /YES, IS THE SAMPLE TRAY OUT ? SZA CLA JMP PROD1 /GO MARK THIS SHEET AS REJECT TAD (0440) /NO, MARK THE SHEET AS A SAMPLE IN DCA I MEMPTR /THE MEMORY TABLE. ISZ SMTCNT /IS THE SAMPLE TRAY FULL ? JMP PROD3 /NO, GO ON. TAD SMTLKF /YES, IS THE SAMPLE TRAY LOCKED IN ? SNA CLA JMP .+4 /NO, GO ON CLB CMA /YES, SET THE SAMPLE TRAY SHEET DCA SMTCNT /COUNTER TO -1. JMP PROD3 /RETURN
AC4000 /MARK THE SAMPLE TRAY TO EJECT TAD I MEMPTR DCA I MEMPTR CLB CMA /SET THE SAMPLE TRAY OUT FLAG DCA SMTFLG JMP PROD3 PROD1, TAD I MEMPTR /IS THIS SHEET MARKED AS A REJECT ? SNA CLA JMP PROD2 /NO, GO SET UP FOR GOOD PRODUCT TAD REJFLG /IS REJECT TRAY A ACTIVE ? SNA CLA TAD (10) /YES, MARK SHEET FOR REJECT A TAD (10) /NO, MARK SHEET FOR REJECT B DCA I MEMPTR ISZ REJCNT /IS THE ACTIVE REJECT TRAY FULL ? JMP PROD3 /NO, RETURN AC4000 /YES, MARK THE REJECT TRAY TO EJECT TAD I MEMPTR DCA I MEMPTR JMS PROD4 JMP PROD3 /RETURN PROD2, TAD PROFLG /MARK THE SHEET FOR THE ACTIVE DCA I MEMPTR /PRODUCT TRAY. ISZ PROCNT /IS THE ACTIVE PRODUCT TRAY FULL ? JMP PROD3 /NO, RETURN AC4000 /YES, MARK THE PRODUCT TRAY TO EJECT TAD I MEMPTR DCA I MEMPTR JMS PROD5 CDF 20 ISZ I (NEWBOX) /NEW BOX FLAG FOR THE SAMPLE TALLEY CDF CUR
/ PROD3, CLB TAD CHOPSV /IS THE SPLICE NOW AT THE CHOPPER ? AND (0010) SNA CLA JMP I PRODCT /NO, WE'LL WAIT. TAD SWPREJ /IS THE SWAP REJECT TRAY FLAG SET ? SNA CLA JMP PROD3A /NO, GO ON. DCA SWPREJ /YES, RESET THE FLAG NOW. TAD REJFLG /IS THE REJECT A TRAY ACTIVE ? SZA CLA JMP .+4 TAD (-10) DCA RAGEJC /SET IT TO EJECT. JMP .+3 TAD (-10) DCA RBGEJC /NO, SET REJECT B TO EJECT JMS PROD4 /NOW SWITCH THE ACTIVE TRAY. PROD3A, TAD SWPPRO /SHOULD WE ALSO INDEX THE /PRODUCT TRAYS ? SNA CLA JMP I PRODCT /NO, JUST EXIT. DCA SWPPRO /YES, RESET FLAG NOW. TAD PROFLG /GET THE ACTIVE PRODUCT TRAY CODE. TAD (PROTBL-1) DCA PRODA TAD I PRODA /GET THE ADDRESS OF THE NEEDED DCA PRODA / TRAY EJECT COUNTER. TAD (-20) /MARK THE ACTIVE PRODUCT DCA I PRODA /TRAY TO EJECT. JMS PROD5 /SWITCH THE ACTIVE TRAY. JMP I PRODCT /RETURN
/ PROD4, 0 TAD REJFLG /SET THE REJECT TRAY SHEET COUNTER. CMA /ACTIVE. DCA REJFLG TAD TRAYSZ /RESET THE REJECT TRAY SHEET COUNTER DCA REJCNT JMP I PROD4 /RETURN. PROD5, 0 TAD PUTUP1 /RESET THE PRODUCT TRAY SHEET DCA PROCNT /COUNTER. TAD PROFLG /SET THE NEXT PRODUCT TRAY TO BE CLL RAL /ACTIVE. AND (0007) SNA CLB IAC DCA PROFLG JMP I PROD5 /RETURN. PRODA, 0 /LOCAL TEMPORARY. PROTBL, PBGEJC PAGEJC 0 /NEEDED SPACER !!! PCGEJC PAGE
/ / /%R STACKER MAINTENANCE ROUTINE / /%TW COME HERE FROM THE "PRODCT" ROUTINE WHEN THE / STACKER MAINTENANCE FLAG IS SET. FORCE / SHEETS TO GO IN THE DESIRED STACKER TRAY. / / STAKCN, 0 DBRI50 /IS THE MEMORY IN THE "TEST" MODE ? AND (0040) SNA CLA JMP .+3 /YES, GO ON. DCA STAKFG /NO, CLEAR THE STACKER MAINT. FLAG. JMP I STAKCN /EXIT TAD MEMPTR /SET UP INDIRECT INTO THE MEMORY DCA STAKZB /TABLE TAD STAKWD /IS THE TRAY DESTINATION WORD = 0 ? SNA JMS STAKSQ /YES, GO TO THE TRAY SEQ. ROUTINE. DCA I STAKZB /ENTER TRAY COMMAND IN THE MEMORY / TABLE. JMP I STAKCN /RETURN.
/ / /%R STACKER TEST SEQUENCE CONTROL / /%TW / / STAKSQ, 0 ISZ STAKDY /HAS THE STACKER TEST START UP DELAY /TIMED OUT ? JMP I STAKSQ /NO, RETURN. CLB CMA /YES, RESET THE DELAY TO -1. THIS DCA STAKDY /WILL CAUSE IT TO TIME OUT EACH TIME / THROUGH. JMP I .+1 /GO ENTER THE SEQUENCE CODE. STAK1, .+2 /.+2 IS THE INITIAL ENTRY ADDRESS. JMP I STAKSQ /RETURN. TAD (40) /GET THE DESTINATION CODE FOR THE JMS STAK2 /SAMPLE GATE AND GO CHECK FOR A FULL / TRAY. JMS STAK1 /ENOUGH FOR THE SAMPLE TRAY, GO ON /TO THE REJECT A TRAY THE NEXT TIME / THROUGH. TAD (20) /GET THE CODE FOR THE REJECT A TRAY. JMS STAK2 /SAME AS ABOVE. JMS STAK1 TAD (10) /GET THE CODE FOR THE REJECT B TRAY. JMS STAK2 JMS STAK1 TAD (4) /GET THE CODE FOR THE PRODUCT C TRAY. JMS STAK2 JMS STAK1 CLB IAC RAL /GET THE CODE FOR THE PRODUCT A TRAY. JMS STAK2 JMS STAK1 CLB IAC /AND NOW DO THE PRODUCT B TRAY. JMS STAK2 /GO CHECK IF THIS TRAY IS FULL. CLB /IT IS, SET UP TO END THE TEST SEQ. TAD (-22) /RESET THE LOCAL SHEET COUNTER. THIS DCA STAKCT /IS SOMETHING LIKE A STACKER RUN OUT /AND LETS ALL THE SHEETS MARKED FOR /PRODUCT B GET THERE BEFORE WE STOP / THE MACHINE. TAD STAKZA /GET THE LAST TRAY DESTINATION BACK, JMS STAK1 /AND SET THE ENTRY ADDRESS TO THE / NEXT LINE. JMS STAK2 /GO CHECK IF "RUN OUT" IS FINISHED.
CLB /IT IS, SET UP AND STOP THE MACHINE. TAD (STAK1+2) /RESET THE TEST SEQUENCE ENTRY DCA STAK1 /ADDRESS TO THE SAMPLE GATE. TAD (-10) /RESET THE START UP DELAY TIMER. DCA STAKDY /THIS WILL GIVE US TIME TO STOP. CLB STL RTR /GO OPEN THE "MAST MONITOR" CAL /INTERLOCK TO STOP THIS THING. SENDW INLOCK STAKMG JMP I STAKSQ /RETURN. / / / WATCH THE LOCAL SHEET COUNTER. COME HERE WITH / THE TRAY DESTINATION CODE IN THE ACCUMULATOR. / / STAK2, 0 ISZ STAKCT /HAVE WE PUT ENOUGH SHEETS INTO / THIS TRAY ? JMP I STAKSQ /NO, RETURN THRU THE CALL TO / "STAKSQ". TAD (4000) /YES, ADD THE EJECT BIT TO THE TRAY DCA STAKZA /DESTINATION CODE. TAD (-62) /RESET THE LOCAL SHEET COUNTER TO DCA STAKCT / 50(10). TAD STAKZA /GET THE TRAY DESTINATION WORD BACK. JMP I STAK2 /RETURN. STAKZA, 0 /LOCAL TEMPORARIES STAKZB, 0 STAKMG, ZBLOCK 3 2000
/ / / TURN OFF THE STACKER GATES AS NEEDED / / GATEOF, 0 CLB ISZ SMGTOF JMP .+4 TAD (4000) DBCO50 CLB ISZ RAGTOF JMP .+4 TAD (2000) DBCO50 CLB ISZ RBGTOF JMP .+4 TAD (1000) DBCO50 CLB ISZ PCGTOF JMP .+4 TAD (400) DBCO50 CLB ISZ PAGTOF JMP .+4 TAD (200) DBCO50 CLB ISZ PBGTOF JMP I GATEOF TAD (100) DBCO50 CLB JMP I GATEOF PAGE NOPUNCH /FIELD 1 COMMON FOLLOWS XLIST 1



Feel free to contact me, David Gesswein djg@pdp8online.com with any questions, comments on the web site, or if you have related equipment, documentation, software etc. you are willing to part with.  I am interested in anything PDP-8 related, computers, peripherals used with them, DEC or third party, or documentation. 

PDP-8 Home Page   PDP-8 Site Map   PDP-8 Site Search