File BUILD.PA (PAL assembler source file)

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

/ BUILD THE MEMORY DISPATCH TABLE		17-AUG-91
/
/
/
/	BBBB   U   U  IIIII  L      DDDD
/	B   B  U   U    I    L      D   D
/	B   B  U   U    I    L      D   D
/	BBBB   U   U    I    L      D   D
/	B   B  U   U    I    L      D   D
/	B   B  U   U    I    L      D   D
/	BBBB    UUU   IIIII  LLLLL  DDDD
/
/
/

/
/EDIT HISTORY:
/
/19-JAN-78: 
/	1)  FIXED THE DEFECT AND RESOLUTION REVERSAL
/
/23-MAY-90	(LHN)
/	1) CHANGE - TO REJECT SHEETS FROM CHANNEL 2 TO
/	   THE CHOP LINE AT STARTUP - INSTEAD OF
/	   REJECTING FROM CHANNEL 1 TO CHOP LINE
/
/3-JUL-90	(LHN)
/	1) SEPARATED THE SAMPLE AND REJECT TRAY CAPACITY
/	   VALUES
/
/30-AUG-90	(LHN)
/	1) ADDED 'LSPCTR' TO PRESET LIST
/
/
/02-JUL-91	(LHN)		FOR VERSION 4
/	1)  DELETED "LINESP" TASK FROM DISPATCH TABLE
/	2)  CHANGED TTYST CALL TO TTY
/	3)  DELETED CH1DEF, CH1RES, CH3DEF AND CH3RES
/	4)  CHANGED CH2RES TO CH2SPL
/
/17-AUG-91	(LHN)
/	1)  ADJUSTED THE TRANSFER LOCATIONS FOR SICK DATA
/


	TASK=	BUILD
	CUR=	BLDFLD
	INIWT=	0
	VERS=	4



	FIELD 	CUR%10
	*BLDLOC

/ / /%R BUILD THE MEMORY DISPATCH TABLE / /%TW / / START, CAL SEND PWRF PWRMSG /TELL POWER FAIL TO RESTART US. STAR1, CLB JMS SETCLG /GO SET UP THE MACHINE /DISTANCES FOR THIS CHOP LENGTH. JMS BLDPRS /GO BUILD THE PRESET TABLE. JMS BLDDSP /GO BUILD THE DISPATCH TABLE. JMS PRESF0 /GO PRESET WORKING LOCATIONS. DBEI50 /ENABLE MOTION ENCODER INTERRUPTS. CLB CAL /BACK TO SLEEP 'TIL THE NEXT CHOP SUSPND / LENGTH CHANGE. JMP STAR1 STRTA, 0 /LOCAL TEMPORARY.
/ PRESF0, 0 TAD (MEMTBL-1) /SET UP AND CLEAR THE DEFECT MEMORY DCA XR10 / TABLE AREA. TAD (-400) DCA STRTA DCA I XR10 ISZ STRTA JMP .-2 TAD (PRSTBL-1) /PRESET THE WORKING LOCATIONS DCA XR10 /FROM THE INITIAL VALUE TABLE TAD (PRSTBL-PRSEND) STL RAR DCA PRS1A TAD I XR10 DCA PRS1B TAD I XR10 DCA I PRS1B ISZ PRS1A JMP .-5 TAD (37) DBCO54 /CLEAR ACTIVE TRAY INDICATORS CLB CMA /SET DEFECTS IN THE PRODUCT MEMORY TAD CH2LOC /TABLE FROM CHANNEL 2 TO THE CHOPPER AND (0377) TAD MEMPTR DCA XR10 TAD CH2LOC DCA PRS1B TAD (7) DCA I XR10 ISZ PRS1B JMP .-3 TAD (-5) /MARK THE SHEETS NOW IN THE STACKER DCA PRS1B /FOR THE REJECT A TRAY CLB CMA TAD MEMPTR DCA XR10 TAD (20) DCA I XR10 ISZ PRS1B JMP .-3
/ CLB TAD TRAYSZ /RESET THE SAMPLE TRAY SHEET COUNTER DCA SMTCNT TAD TRAYRZ /RESET THE REJECT TRAY SHEET COUNTER DCA REJCNT TAD PUTUP1 /RESET THE PRODUCT TRAY SHEET DCA PROCNT /COUNTER TAD METERC /RESET THE INCREMENT METER COUNTER DCA METER1 JMP I PRESF0 /RETURN. PRS1A, 0 /LOCAL STORAGE PRS1B, 0
/ / /%RP ANALYZE THE PRESET TABLE CODE BITS / /%TW LOOK FOR BITS IN THE CURRENT CODE WORD FROM THE / PRESET TABLE. IF A BIT IS FOUND, GET THE / CORRESPONDING LINKAGE FROM THE LIST FOLLOWING THE / "JMS BLBSUB" AND PUT IT IN THE NEXT LOCATION / IN THE LINKAGE TABLE. / / BLDSUB, 0 DCA BLDBA /SAVE THE CODE WORD TAD (-12) /SET UP THE CODE BIT LOOP COUNTER DCA BLDBB BLDB1, TAD BLDBA /ROTATE THE NEXT BIT INTO THE LINK CLL RAL DCA BLDBA SNL CLA /IS A BIT SET IN THIS POSITION ? JMP BLDB2 /NO, GO, ON TAD I BLDSUB /GET THE LINK WORD FOLLOWING THE SNA /CALL, IS THE LINK ZERO ? JMP BLDB3 /NO, GO ON DCA I XR10 /NO, PUT IT IN THE LINK TABLE BLDB2, ISZ BLDSUB /INCREMENT THE RETURN ADDRESS ISZ BLDBB /FINISHED THIS CODE WORD ? JMP BLDB1 /NO, KEEP GOING JMP I BLDSUB /YES, RETURN BLDB3, CLB /GO LOG "PRESET TABLE ERROR" CAL SENDW TTY BLDMSG JMP BLDB1 /NOW TRY TO CONTINUE ON. BLDBA, 0 /LOCAL TEMPORIES BLDBB, 0 PAGE
/ / /%R BUILD THE MEMORY PRESET TABLE / /%TW / / BLDPRS, 0 TAD (SETTBL-1) /SET UP AND CLEAR THE SETUP,MEMORY DCA XR10 / AND DISPATCH TABLES. TAD (-600) DCA BLDPA DCA I XR10 ISZ BLDPA JMP .-2 TAD (SETTBL) /SET UP THE PRESET TABLE POINTER. DCA BLDPA CLB STL RAR /INITIALIZE THE CODE BIT. DCA BLDPB DCA BLDPC /SET INSPECTOR-STACKER SWITCH TO / INSPECTOR. / TAD INPRES /CHECK THAT THE INSPECTOR RESOLUTION / SPA SNA /IS A POSTIVE NUMBER, SET IT TO 1 / CLB IAC / IF NOT. / DCA INPRES / TAD INPRES /SUBTRACT 1/2 OF INSP. RESOLUTION / CLL RAR /FROM THE CHANNEL POSITION. DCA RESCON TAD CH1POS /COMPUTE THE LOCATION FOR CHANNEL 1. JMS BLDSET DCA CH1LOC TAD CH2POS /COMPUTE THE LOCATION FOR CHANNEL 2. JMS BLDSET DCA CH2LOC TAD BLDPB /SAVE THE TABLE CODE BIT AND CLEAR DCA BLDPD / THE ACTIVE CODE BIT. CH3LOC DOES DCA BLDPB / WANT TO BE IN THE DISPATCH TABLE TAD CH3POS /COMPUTE THE LOCATION FOR CHANNEL 3. JMS BLDSET DCA CH3LOC TAD BLDPD /RESTORE THE TABLE CODE BIT DCA BLDPB TAD CH3LOC /SAVE THE LOCATION OF CDF 20 /CH3 FOR "SAMPLE". DCA I (PTRCH3) CDF CUR ISZ BLDPC /SET SWITCH TO STACKER LOCATIONS. DCA RESCON /CLEAR THE INSPECTOR RESOLUTION / REGISTER !!!!!!
TAD SMGPOS /COMPUTE THE LOCATION FOR THE SAMPLE JMS BLDSET /GATE. DCA SMGLOC TAD RAGPOS /COMPUTE THE LOCATION FOR THE REJECT JMS BLDSET /A GATE. DCA RAGLOC TAD RBGPOS /COMPUTE THE LOCATION FOR THE REJECT JMS BLDSET /B GATE. DCA RBGLOC TAD PCGPOS /COMPUTE THE LOCATION ON THE PRODUCT JMS BLDSET /C GATE. DCA PCGLOC TAD PAGPOS /COMPUTE THE LOCATION OF THE PRODUCT JMS BLDSET /A GATE. DCA PAGLOC TAD PBGPOS /COMPUTE THE LOCATION OF THE PRODUCT JMS BLDSET /B GATE. DCA PBGLOC TAD SMRPOS /COMPUTE THE LOCATION FOR FIRING THE JMS BLDSET /SAMPLE MARKER. DCA SMRLOC ISZ BLDPA /SWITCH TO SECOND CODE WORD OF PAIR. CLB STL RAR /RESET THE CODE BIT FOR SECOND WORD. DCA BLDPB DCA BLDPC /SET THE SWITCH TO INSPECTOR /LOCATIONS. / CLB CMA / TAD INPRES /IS THE RESOLUTION EQUAL 0 OR 1 ? / SPA SNA CLA / JMP BLDP2 /YES, DON'T BOTHER. / CLB CMA / TAD INPRES / CLL RAR / CIA / DCA RESCON / TAD CH1POS /COMPUTE THE LOCATION OF CHANNEL 1 / JMS BLDSET /RESOLUTION ROUTINE. / CLB / TAD CH2POS /COMPUTE THE LOCATION OF CHANNEL 2 / JMS BLDSET /RESOLUTION ROUTINE. / CLB / TAD CH3POS /COMPUTE THE LOCATION OF CHANNEL 3 / JMS BLDSET /RESOLUTION ROUTINE. / CLB
/ BLDP2, TAD (60) /LOOK FOR A BLANK CODE PAIR AFTER TAD BLDPA /THE 24TH(DEC) MOTION INTERRUPT DCA XR10 /LOCATION IN THE PRESET TABLE. JMS BLDP3 TAD (40) /SET BIT FOR THE "TRAYCK" ROUTINE IN DCA I XR10 /THE PRESET TABLE WHERE NOTHING ELSE /IS HAPPENING. JMS BLDP3 /FIND THE NEXT BLANK PAIR AND ADD IN TAD (4) /THE CODE BIT FOR THE "MISC1" DCA I XR10 /ROUTINE. JMP I BLDPRS /RETURN. BLDP3, 0 TAD I XR10 /IS THIS CODE PAIR EMPTY ? TAD I XR10 SZA CLA JMP .-3 /NO, KEEP LOOKING. CLB CMA /YES, BACK UP THE AUTO-INDEX. TAD XR10 DCA XR10 JMP I BLDP3 /RETURN. RESCON, 0 /LOCAL TEMPORARIES BLDPA, 0 BLDPB, 0 BLDPC, 0 BLDPD, 0 PAGE
/ / /%R DIVISION ROUTINE FOR LOADING THE PRESET TABLE / /%TW / / BLDSET, 0 TAD RESCON /MAYBE ADD IN RESOLUTION CIA /MAKE THE DIVIDEND NEGATIVE CLL DCA BLDSA /SAVE NEGATIVE DIVIDEND DCA BLDSB /RESET QUOTIENT STORAGE TAD BLDSA TAD SHLENG /GET DIVISOR, AND DIVIDE BY SZL /CONTINOUS ADDITION JMP .+3 ISZ BLDSB /INCREMENT INTEGER QUOTIENT JMP .-4 /GO, AGAIN SZA /REMAINDER = 0 ? JMP .+4 /NO, GO ON. TAD BLDPC /YES, INCREMENT THE QUOTIENT FOR TAD BLDSB / STACKER GATE CALCULATION O N L Y DCA BLDSB CIA /FINISHED, FORM A POSITIVE REMAINDER TAD SHLENG DCA BLDSA / / / PLACE CODE BITS IN THE PRESET TABLE / / TAD BLDPC /IS THE SWITCH SET FOR THE STACKER ? SZA CLA JMP BLDS2 /YES, GO ON TAD BLDSB /NO, FORM -(INTEGER) QUOTINET CIA DCA BLDSB TAD BLDSA /SUBTRACT "REMAINDER" FROM THE SHEET CIA /LENGTH (MODULO THE SHEET LENGTH) TAD SHLENG SPA TAD SHLENG DCA BLDSA
/ BLDS2, TAD BLDPA /FORM ADDRESS IN "SETTBL" FOR THE TAD BLDSA /LOCATION OF THE "REMAINDER" AND TAD BLDSA /ADD IN THE CURRENT CODE BIT DCA BLDSA TAD BLDPB TAD I BLDSA DCA I BLDSA TAD BLDPB /ROTATE THE CODE BITS ONE TO THE CLL RAR /RIGHT DCA BLDPB TAD BLDSB /RETURN WITH INTEGER QUOTIENT IN AC JMP I BLDSET BLDSA, 0 /LOCAL TEMPORIES BLDSB, 0 / / /%R SET UP THE MACHINE CONSTANTS FOR THIS CHOP LENGTH / /%TW / / SETCLG, 0 CDF 30 TAD I (CHOPC) /GET THE NEW CHOP LENGTH CODE, CDF CUR CLL RTL RTL / MULTIPLY IT TIMES 20, TAD (CPTBL1-21) / ADD IN THE TABLE BASE DCA XR10 / AND SAVE IN THE AUTO-INDEX. TAD (-20) /SET UP THE LOOP COUNTER. DCA SETCA TAD (CH1POS-1) /NOW PUT THE DESTINATION ADDRESS DCA XR11 / IN AN AUTO-INDEX. TAD I XR10 /GET A WORD OF DATA AND DCA I XR11 / PUT IT AWAY. ISZ SETCA /DONE ENOUGH ? JMP .-3 /NO, DO ANOTHER. JMP I SETCLG /YES, RETURN SETCA, 0
/ / /%R BUILD THE JUMP TABLE FROM THE PRESET TABLE / /%TW / / BLDDSP, 0 TAD (DSPTBL-1) /SET UP THE BASE ADDRESS OF THE JUMP DCA XR10 /DISPATCH TABLE. TAD (SETTBL-1) /SET UP THE BASE ADDRESS OF THE DCA XR11 /PRESET TABLE. AC0002 TAD SHLENG /SET UP LOOP COUNTER CIA DCA BLDDA BLDD1, TAD I XR11 /ANY BITS SET IN THIS CODE WORD ? SNA JMP BLDD2 /NO, LOOK AT SECOND WORD OF CODE / PAIR / / / BELOW ARE THE ADDRESSES WHICH CORRESPOND TO THE CODE / BITS IN THE FIRST WORD OF EACH PAIR IN THE PRESET / TABLE. IF A BIT IS PRESENT IN THE CODE WORD, ITS / CORRESPONDING ADDRESS IS PUT IN THE LINK TABLE. / / JMS BLDSUB /GO LOOK FOR CODE BITS / TFTABL+CH1SPL /CHANNEL 1 SPLICE ROUTINE TFTABL+CH2DEF /CHANNEL 2 DEFECT ROUTINE TFTABL+SMGATE /SAMPLE GATE ROUTINE TFTABL+RAGATE /REJECT A GATE ROUTINE TFTABL+RBGATE /REJECT B GATE ROUTINE TFTABL+PCGATE /PRODUCT C GATE ROUTINE TFTABL+PAGATE /PRODUCT A GATE ROUTINE TFTABL+PBGATE /PRODUCT B GATE ROUTINE TFTABL+SMARKR /FIRE THE SAMPLE MARKER / ROUTINE 0 /
BLDD2, TAD I XR11 /ANY BITS SET IN SECOND CODE WORD ? SNA JMP BLDD3 / / / BELOW IS THE LINKAGE LIST FOR THE SECOND CODE WORD / OF EACH PAIR FROM THE PRESET TABLE. DO THE SAME AS / NOTED ABOVE. / / JMS BLDSUB /GO LOOK FOR CODE BITS 0 0 0 0 0 0 TFTABL+TRAYCK /TRAY CHECK ROUTINE 0 0 / TFTABL+MISC1 /MISCELLANEOUS CLEAN UP BLDD3, CLB DCA I XR10 /ADD A ZERO WORD TO TERMINATE THIS /MOTION PULSE. ISZ BLDDA /FINISHED ALL THE PRESET TABLE ? JMP BLDD1 /NO, KEEP GOING JMP I BLDDSP /YES, RETURN BLDDA, 0 /LOCAL TEMPORARIES. PAGE
/ / / MACHINE TIMING CONSTANTS FOR EACH CHOP LENGTH / / / / / CONSTANTS FOR 178 MM CHOP / / CPTBL1, 6114 /WAS 3775 - CH 1 (SPLICE DETECTOR) 244 /WAS 3225 - CH 2 (4 X CHOP - 10) 3016 /CH 3 (FOR SPLICE PROCESSING) 74 /S 233 /RA 372 /RB 532 /PC 671 /PA 1030 /PB 205 /S M 53 /MOTION PULSES PER CHOP -360 /MOTION PULSES PER METER (MPM) -5 /NUMBER OF SHEETS FOR MACHINE CHECK 0 /FILLERS (FOR NOW) 0 0 / / / CONSTANTS FOR 198 MM CHOP / / CPTBL2, 6124 /WAS 4002 - CH 1 270 /WAS 3230 - CH 2 (N X CHOP - 10) 3021 /CH 3 42 /S 202 /RA 342 /RB 501 /PC 640 /PA 1000 /PB 174 /S M 60 /MPPC -360 /MPM -5 /NMCK 0 0 0
/ / / CONSTANTS FOR 238 MM CHOP / / CPTBL3, 6146 /WAS 4015 - CH 1 246 /WAS 3242 - CH 2 (N X CHOP - 10) 3034 /CH 3 72 /S 233 /RA 372 /RB 531 /PC 672 /PA 1032 /PB 224 /S M 72 /MPPC -360 /MPM -4 /NMCK 0 0 0 / / / CONSTANTS FOR 296 MM CHOP / / /CPTBL4, 3163 /CH 1 / 2434 /CH 2 / 2235 /CH 3 / 302 /S / 440 /RA / 600 /RB / 737 /PC / 1076 /PA / 1235 /PB / 372 /S M / 104 /MPPC / -360 /MPM / -3 /NMCK / 0 / 0 / 0
/ / / CONSTANTS FOR 298 MM CHOP / / CPTBL5, 6134 /WAS 4022 - CH 1 320 /WAS 3251 - CH 2 (N X CHOP - 10) 3044 /CH 3 17 /S 156 /RA 315 /RB 455 /PC 612 /PA 752 /PB 151 /S M 110 /MPPC -360 /MPM -3 /NMCK 0 0 0 / / / CONSTANTS FOR 354 MM CHOP / / CPTBL6, 6126 /WAS 4004 - CH 1 244 /WAS 3232 - CH 2 (N X CHOP - 10) 3023 /CH 3 100 /S 237 /RA 376 /RB 540 /PC 677 /PA 1036 /PB 232 /S M 126 /MPPC -360 /MPM -3 /NMCK 0 0 0
/ / / CONSTANTS FOR 398 MM CHOP / / CPTBL7, 6140 /WAS 4031 - CH 1 270 /WAS 3262 - CH 2 (N X CHOP - 10) 3055 /CH 3 ( OLD VALUE ) 60 /S 217 /RA 356 /RB 516 /PC 655 /PA 1013 /PB 212 /S M 140 /MPPC -360 /MPM -3 /NCMK 0 0 0 / / / CONSTANTS FOR 430 MM CHOP / / /CPTBL8, 3145 /CH 1 / 2421 /CH 2 / 2224 /CH 3 / 300 /S / 436 /RA / 575 /RB / 733 /PC / 1072 /PA / 1231 /PB / 370 /S M / 142 /MPPC / -360 /MPM / -3 /NMCK / 0 / 0 / 0
/ BLDMSG, ZBLOCK 3 0 0 TEXT "PRESET TABLE ERROR" PWRMSG, ZBLOCK 3 /PWRF LINKAGE STAR1-1 PAGE
/ / /%RT TABLE OF INITIAL VALUES FOR PROGRAM START UP / / / FORMAT OF TABLE: / / EACH ENTRY IS A PAIR OF WORDS / / FIRST WORD - ADDRESS OF VARIABLE FOR PRESET / SECOND WORD - INITIAL VALUE FOR THAT VARIABLE / / PRSTBL, MEMPTR /PRODUCT MEMORY TABLE POINTER MEMTBL MEMWPR /DISPATCH TABLE POINTER DSPTBL-1 MSPDAT /STACKER STATUS WORD 73 MSPFLG /MACHINE STOPPED FLAG 1 FCHOPF /FIRST CHOP FLAG -2 EMULC1 /EMULSION MISS COUNTER #1 -24 EMULC2 /EMULSION MISS MESSAGE UP FLAG 4000 SHTDTA /NEXT SHEET DATA WORD FOR FIELD 2 7 SWPRJF /SWAP THE REJECT TRAY ON SPLICE FLAG 0 SWPPRO /SWAP THE PRODUCT TRAYS FLAG 0 SWPREJ /SWAP REJECT TRAYS FLAG 0 STAKFG /STACKER CONTROL FLAG FOR MAINTENCE 0 STAKSF /STACKER SEQUENCE ACTIVE FLAG 0 GATEDY /INITIAL GATE DELAY. -50 LPTPFG /PRINTER PAPER LOW FLAG 0 CHOPCT /DISPLAY CHOP COUNTER 0 CHOPSV /DETAILS OF CURRENT CHOP 0 LSPCTR /MACHINE SPEED MOTION PULSE 0 / COUNTER
/ / / MORE OF THE INITIAL VALUE TABLE / / CTHOLD /COUNT-HOLD FLAG 0 MANRJF /MANUAL REJECT REQUEST FLAG 0 MANSMF /MANUAL SAMPLE REQUEST FLAG 0 SHLCNT /SHEET LENGTH COUNTER 0 SPLFLG /SPLICE DETECTED FLAG 0 SRODNF /STACKER RUN OUT DONE FLAG 0 SROFLG /STACKER RUN OUT IN PROGRESS FLAG 0 TRAYNF /TRAY NEEDED INDICATOR FLAG 0 TRAFLG /TRAY OUT ALARM FLAG 0 CTSAVE /COUNT/HOLD PRODUCT COUNT 0 STAKDY /STACKER DELAY COUNTER 0 STAKCT /STACKER DELAY SHEET COUNTER 0 STAKWD /STACKER TRAY DESTINATION WORD 0 MCHECK /MACHINE CHECK FLAG 0
/ / / MORE OF THE INITIAL VALUE TABLE / / REJFLG /ACTIVE REJECT TRAY FLAG 0 PROFLG /ACTIVE PRODUCT TRAY FLAG 1 PROAIR /INDEX PRODUCT TRAY AIR FLAG. 0 SMTFLG /SAMPLE TRAY OUT FLAG 1 SMGEJC /SAMPLE TRAY EJECT DELAY 0 SMTLKF /SAMPLE TRAY LOCKED IN FLAG 0 SMTLKD /SAMPLE TRAY UNLOCK DELAY 0 RATFLG /REJECT A TRAY OUT FLAG 1 RAGEJC /REJECT A TRAY EJECT DELAY 0 RBTFLG /REJECT B TRAY OUT FLAG 1 RBGEJC /REJECT B TRAY EJECT DELAY 0 PATFLG /PRODUCT A TRAY OUT FLAG 1 PAGEJC /PRODUCT A TRAY EJECT DELAY 0 PBTFLG /PRODUCT B TRAY OUT FLAG 1 PBGEJC /PRODUCT B TRAY EJECT DELAY 0 PCTFLG /PRODUCT C TRAY OUT FLAG 1 PCGEJC /PRODUCT C TRAY EJECT DELAY 0 MTESTF /MAST IN TEST MODE FLAG PRSEND, 4000 PAGE NOPUNCH /F1COMM FOLLLOWS 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