File ROLLDT.PA (PAL assembler source file)

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

/ROLL DATA DECODE TASK				27-AUG-91
/
/
/
/	RRRR    OOO   L      L      DDDD   TTTTT
/	R   R  O   O  L      L      D   D    T
/	R   R  O   O  L      L      D   D    T
/	RRRR   O   O  L      L      D   D    T
/	R R    O   O  L      L      D   D    T
/	R  R   O   O  L      L      D   D    T
/	R   R   OOO   LLLLL  LLLLL  DDDD     T
/
/
/

/
/EDIT HISTORY:
/
/09-NOV-78	(LHN)
/	1)  FIXED DATE DECODING
/20-NOV-78	(LHN)
/	1)  FIXED START OF ROLL SAMPLING LENGTH.
/24-APR-90	(LHN)
/	1) REMOVED ENTRY OF SAMPLING FREQUENCY
/	2) CHANGED ENTRY OF SAMPLING CODE FOR BOX SAMPLES
/
/
/24-JUN-91	(LHN)		FOR VERSION 4A
/	1)  DELETED ENTRY FOR SISTER ROLL CUT NUMBER 
/	2)  DELETED USE OF SHEARC VARIABLE
/	3)  DELETED USE OF NSHEAR VARIABLE
/	4)  CHANGED TTYST CALL TO TTY
/	5)  CHANGED TASK TO RECEIVE DATA MESSAGES. THIS 
/	      ALLOWS ROLL INFO TO COME FROM ANY TASK.
/
/27-JUL-91	(LHN)
/	1)  FURTHER EDITING FOR GATEWAY INPUT
/
/
/22-AUG-91	(LHN)		FOR VERSION 4B
/	1)  CHANGED THE SHIFT CODE TO 2 DIGITS.


//
///
///	NEED TEST FOR SHIFT CHANGE VIA GATEWY IN GATEOP
///	- WHEN SHIFT CHANGES, RESET SHIFT ROLL NUMBER
///
///	NEED TO RUN BUILD FROM GATECR
///
//

/ TASK= ROLLDT INIWT= 0 CUR= ROLDTFLD VERS= 4 FIELD ROLDTFLD%10 *ROLLPGZ RTD0A, 0 /LOCAL TEMPORARIES RTD0B, 0 RTD0C, 0 /RTD0D, 0 RTD0E, 0 RTD0F, 0 SMADDR, 0 /SAVED MESSAGE POINTER *ROLDTLOC
/ / / INTERNAL OPERATOR DATA MESSAGE FORMAT / / /RTMSG, ZBLOCK 3 /RTS8 OVERHEAD /RTTYPE, MESSAGE TYPE /RTSIND, STATUS INDICATOR /RTFUNC, FUNCTION CODE /RTDECF, CHARACTER COUNT OF DATA /RTDBUF, DATA CHARACTER 1 / ... / ... / DATA CHARACTER N (UP TO 13) / 0 / / GATEWAY MESSAGE FORMAT / / / THE FORMAT OF THE ROLL DATA THAT THE GATEWAY WILL SEND / IS: / / NRNNNNNNNNNN PPPP SS WWW CCC HH OO DDDDDDDDDDD TTTTTTTT / OR / CRNNNNNNNNNN PPPP SS WWW CCC HH OO DDDDDDDDDDD TTTTTTTT / / / WHERE: NR => CODE TO SAY MESSAGE IS NEXT ROLL / DATA / CR => CODE TO SAY MESSAGE IS CURRENT / ROLL DATA / NNNNNNNNNN => 10 DIGIT ROLL NUMBER / PPPP => 4 CHARACTER PUTUP CODE / SS => 2 CHARACTER SAMPLING CODE / WWW => 3 DIGIT SHEET WIDTH IN MM / CCC => 3 DIGIT SHEET LENGTH (CHOP / LENGTH) IN MM / HH => 2 CHARACTER SHIFT CODE / OO => 2 CHARACTER OPERATOR CODE / DDDDDDDDDDD => 11 CHARACTER DATE IN vms / STANDARD FORMAT / TTTTTTTT => 8 DIGIT TIME IN VMS STANDARD / FORMAT / / FOR EXAMPLE, A NEXT ROLL DATA MESSAGE MIGHT LOOK LIKE: / / NR3214569871 0100 01 230 398 01 23 26-JUN-1991 14:21:33 /
/ / /%RT RT01 DATA TERMINAL OPERATION / / /%TW THE RT01 DATA TERMINAL IS ONE OF THE INPUT DEVICES / FOR OPERATOR INFORMATION. THE NUMERIC AND CONTROL / KEYS ON THE RT01 PERMIT THE ENTRY AND MODIFICATION / OF THE ROLL DATA AND HEADING INFORMATION. / /%TW THE RT01 KEYBOARD HAS 4 STATUS LIGHTS CONTROLLED / FROM THE MAST SYSTEM. THESE STATUS LIGHTS AND THE / CONTROL KEYS DETERMINE WHAT TYPE OF INFORMATION / IS BEING ENTERED ON THE NUMERIC KEYS. THE DATA / IS CLASSED AS FOLLOWS: / / /%TN STATUS CONTROL DATA TYPE /%TN LIGHT KEY /%TN /%TN 1 B NEXT ROLL NUMBER /%TN 1 C NEXT ROLL PUT-UP AND SHEAR CUT /%TN 1 D NEXT ROLL SAMPLING CODE /%TN 1 E NEXT ROLL SLIT WIDTH (MM) /%TN 1 F NEXT ROLL CHOP LENGTH (MM) /%TN /%TN 3 B CURRENT ROLL NUMBER /%TN 3 C CURRENT ROLL PUT-UP AND SHEAR CUT /%TN 3 D CURRENT ROLL SAMPLING CODE /%TN 3 E CURRENT ROLL SLIT WIDTH (MM) /%TN /%TN 4 B DATE /%TN 4 C SHIFT CODE /%TN 4 D OPERATOR CODE /%TN / /%TW THE "A" CONTROL KEY HAS TWO FUNCTIONS, CLEAR THE / CURRENT DISPLAY AND MOVE THE STATUS LIGHT TO THE / NEXT POSITION. IF A NUMBER HAS BEEN ENTERED ON / THE RT01 THE "A" KEY WILL CLEAR THE DISPLAY AND / TELL MAST TO IGNORE THE ENTERED NUMBER. IF THE / "A" KEY IS STRUCK WHEN THERE IS NO DATA BEING / DISPLAYED, THE STATUS LIGHT WILL ADVANCE TO THE / THE NEXT POSITION.
/ / /%R RT01 DATA DECODE ROUTINE / /%TW DECODE AND PROCESS DATA ENTERED BY THE MACHINE / OPERATOR ON THE RT01 DATA TERMINAL. / / START, CLB CAL RECEIVE /GO TO SLEEP 'TIL NEXT TIME MADDR, 0 /GETS THE MESSAGE ADDRESS DCA MSGCDF /FIELD OF MESSAGE IS IN THE AC AC7775 /SAVE THE ADDRESS OF THE EVENT TAD MADDR / FLAG FOR THE MESSAGE DCA MEVFLG JMS GETWRD /GET THE MESSAGE TYPE DCA RTTYPE TAD RTTYPE /LET'S SEE WHAT TYPE WE HAVE. TAD (-"*) SNA JMP RTD00 /DATA IS FROM RT01 OR CRT. TAD ("*-"C) /IS THIS CURRENT ROLL DATA ? SZA JMP NX1 /NO, GO ON. JMS GETWRD /IS THE SECOND LETTER "R" TAD (-"R) SNA CLA JMP GATECR /YES, GO PROCESS CR DATA. JMP RTDERR /NO, GO DO ERROR. NX1, TAD ("C-"N) /IS THIS NEXT ROLL DATA ? SZA CLA JMP NX2 /NO, GO ON. JMS GETWRD /IS THE SECOND LETTER "R" ? TAD (-"R) SNA CLA JMP GATENR /YES, GO PROCESS NR DATA. NX2, JMP RTDERR /UNDEFINED INPUT, DO ERROR.
/ / / EXIT AFTER PROCESSING MESSAGE / / RTDXIT, CLB CDF CUR TAD MSGCDF /GET A CDF TO THE CALLER'S FIELD DCA MEF TAD MEVFLG /GET THE EVENT FLAG ADDRESS AND CAL / GO POST THE EVENT FLAG. POST MEF, 0 JMP START /GO WAIT FOR MORE TO DO. / / SET DATA FIELD FOR INPUT MESSAGE / CDFMSG, 0 MSGCDF, HLT JMP I CDFMSG / / GET THE NEXT INPUT MESSAGE CHARACTER / GETCHR, 0 JMS GETWRD /GET THE NEXT MESSAGE WORD. AND (0177) /REDUCE IT TO 7 BITS, TAD (7640) / AND MAKE IT UPPER CASE SMA TAD (7740) TAD (0340) AND (0077) /MASK OUT NEEDED NIBBLE, JMP I GETCHR / AND RETURN IT IN THE AC. / / GET THE NEXT WORD FROM THE INPUT MESSAGE / GETWRD, 0 CLB JMS CDFMSG /SET DATA FIELD TO INPUT MESSAGE TAD I MADDR /GET THE NEXT MESSAGE CHARACTER ISZ MADDR CDF CUR / TAD (7440) /CONVERT LOWER CASE TO UPPER CASE / SMA / TAD (7740) / TAD (340) JMP I GETWRD /RETURN TO CALLER MEVFLG, 0 /INPUT MESSAGE EVENT FLAG ADDRESS RTTYPE, 0 /INPUT MESSAGE TYPE
/ / / DISPLAY THE "DATA ENTRY ERROR" MESSAGE / / RTDERR, CLB TAD RTTYPE /WHAT TYPE OF MESSAGE DO WE HAVE? TAD (-"*) /FROM THE RT01 OR CRT? SZA CLA JMP RTDE1 /NO, GO ON, JMS CRTMGA /YES, GO CUE THE "DATA ENTRY ERROR" MOPM02 / MESSAGE FOR DISPLAY. CAL SENDW /DELAY FOR 5 SECONDS CLOCK DLYMSG AC4000 JMS CRTMGA /GO CLEAR THE MESSAGE FROM DISPLAY MOPM02 RTDE1, TAD MEVFLG /SET THE FIRST WORD OF THE TAD (3) / MESSAGE TO -1 TO SHOW ERROR DCA RTTYPE JMS CDFMSG CLB CMA DCA I RTTYPE JMP RTDXIT / DLYMSG, ZBLOCK 3 /DELAY MESSAGE 0 /SET EVENT FLAG AFTER INTERVAL 0;400 /5 SECOND DELAY PAGE
/ / / DECODE INPUT FROM RT01 AND/OR CRT / / RTD00, JMS GETWRD /GET THE INDICATOR STATUS FROM DCA RTSIND / THE INPUT MESSAGE JMS GETWRD /NOW GET THE RT01 FUNCTION CODE DCA RTFUNC JMS GETWRD /AND GET THE MESSAGE LENGTH DCA RTDECF TAD RTSIND /IS THE STATUS INDICATOR CODE = 1 ? CLL RAR SZA JMP RTD05 /NO, KEEP LOOKING / / / DECODE NEW ROLL DATA / / CLB CMA RAL /YES, IS THE FUNCTION CODE = B ? TAD RTFUNC SZA JMP RTD01 /NO, KEEP LOOKING TAD (-12) /GO CHECK FOR THE CORRECT MESSAGE JMS RTDCHK / MESSAGE LENGTH. JMS RTMOVR /YES, GO MOVE THE NEXT ROLL NUMBER CRTX01 /TO THE TEXT AREA. ISZ NEWRNF /SET THE ROLL NUMBER ENTERED FLAG AC4000 JMS CRTMGA /GO REMOVE THE "ENTER NEXT ROLL MOPM08 /DATA" MESSAGE FROM THE DISPLAY. JMP RTDXIT /GO TO THE ROUTINE EXIT RTD01, TAD (-1) /IS THE FUNCTION CODE = C ? SZA JMP RTD02 /NO, KEEP LOOKING TAD (-4) /GO CHECK FOR THE CORRECT MESSAGE JMS RTDCHK / MESSAGE LENGTH. JMS RTMOVP /YES, GO MOVE THE NEXT ROLL PUT-UP CRTX02 /TO THE TEXT AREA DCA NPUTPF /SET THE PUT-UP ENTERED FLAG JMP RTDXIT /GO TO THE ROUTINE EXIT
/ RTD02, TAD (-1) /IS THE FUNCTION CODE = D ? SZA JMP RTD03 /NO, KEEP LOOKING CLB CMA RAL /GO CHECK FOR THE CORRECT MESSAGE JMS RTDCHK / MESSAGE LENGTH. JMS RTMOVS /YES, GO MOVE THE NEXT ROLL SAMPLE CRTX03 /CODE TO THE TEXT AREA. DCA NSAMCD /SAVE THE NEW SAMPLING CODE . MQA DCA NSAMSP /AND THE SPECIAL SAMPLING FLAG. JMP RTDXIT /GO TO THE ROUTINE EXIT RTD03, TAD (-1) /IS THE FUNCTION CODE = E ? SZA JMP RTD04 /NO, KEEP LOOKING AC7775 /GO CHECK FOR THE CORRECT MESSAGE JMS RTDCHK / MESSAGE LENGTH. JMS RTMOVW /YES, GO PROCESS THE NEXT ROLL SLIT CRTX04 / WIDTH. DCA NSLITC /PUT THE NEXT ROLL WIDTH HERE. JMP RTDXIT /GO TO THE ROUTINE EXIT RTD04, TAD (-1) /IS THE FUNCTION CODE = F ? SZA JMP RTDERR /NO, GO DISPLAY THE DATA ERROR MSG AC7775 /GO CHECK FOR THE CORRECT MESSAGE JMS RTDCHK / MESSAGE LENGTH. JMS RTMOVC /YES, GO MOVE THE NEW CHOP LENGTH CRTX05 /TO THE TEXT AREA AND SET UP THE /CHOP LENGTH DATA FOR END-OF-ROLL /SUMMARY TIME. DCA NCHOPC /SAVE THE NEXT ROLL CHOP SIZE JMP RTDXIT /ALL DONE, GO CLEAN UP AND EXIT. / / / DECODE STATUS INDICATOR 2 / / RTD05, CLL RAR /IS THE STATUS INDICATOR CODE = 2 ? SZA JMP RTD10 /NO, KEEP LOOKING / / / SISTER ROLL CUT NUMBER IS NO LONGER USED / / JMP RTDERR /NO, GO DISPLAY THE DATA ERROR MSG
/ / / DECODE CURRENT ROLL DATA CHANGES / / RTD10, CLL RAR /IS THE STATUS INDICATOR CODE = 3 ? SZA JMP RTD14 /NO, KEEP LOOKING CLB CMA RAL /YES, IS THE FUNCTION CODE = B ? TAD RTFUNC SZA JMP RTD11 /NO, KEEP LOOKING TAD (-12) /GO CHECK FOR THE CORRECT MESSAGE JMS RTDCHK / MESSAGE LENGTH. JMS RTMOVR /YES, GO MOVE THE CURRENT ROLL CRTX06 /NUMBER TO THE TEXT AREA. CDF 20 ISZ I (MROLLF) /SET THE MOVE ROLL NUMBER FLG JMP RTDXIT /GO TO THE ROUTINE EXIT RTD11, TAD (-1) /IS THE FUNCTION CODE = C ? SZA JMP RTD12 /NO, KEEP LOOKING TAD (-4) /GO CHECK FOR THE CORRECT MESSAGE JMS RTDCHK / MESSAGE LENGTH. JMS RTMOVP /YES, GO MOVE THE CURRENT ROLL CRTX07 /PUT-UP TO THE TEXT AREA. CDF 10 DCA I (PUTUP1) /RESET THE CURRENT PUT UP IN F1. CDF 20 ISZ I (NPCODE) /SET THE NEW PUT-UP CODE FLAG. JMP RTDXIT /GO TO THE ROUTINE EXIT. RTSIND, 0 /INDICATOR STATUS RTFUNC, 0 /FUNCTION CODE RTDECF, 0 /CHARACTER COUNT IN MESSAGE
/ PAGE
/ RTD12, TAD (-1) /IS THE FUNCTION CODE = D ? SZA JMP RTD13 /NO, KEEP LOOKING CLB CMA RAL /GO CHECK FOR THE CORRECT MESSAGE JMS RTDCHK / MESSAGE LENGTH. JMS RTMOVS /YES, GO MOVE THE CURRENT ROLL CRTX08 /SAMPLING CODE TO THE TEXT AREA. CDF 20 DCA I (PATCON) /UPDATE THE CURRENT SAMPLING /PATTERN INTERVAL. MQA / AND THE SPECIAL SAMPLING FLAG DCA I (SPESAM) ISZ I (NSCODE) /SET THE NEW SAMPLING CODE FLAG FOR JMP RTDXIT /GO TO THE ROUTINE EXIT RTD13, TAD (-1) /IS THE FUNCTION CODE = E ? SZA JMP RTD14 /NO, KEEP LOOKING AC7775 /GO CHECK FOR THE CORRECT MESSAGE JMS RTDCHK / MESSAGE LENGTH. JMS RTMOVW /YES, GO PROCESS THE CURRENT ROLL CRTX09 / SLIT WIDTH DATA. DCA SLITC /PUT CURRENT WIDTH HERE. JMP RTDXIT /GO TO THE ROUTINE EXIT
/ / / DECODE NEW HEADING INFORMATION / / RTD14, CLL RAR /IS THE STATUS INDICATOR CODE = 4 ? SZA JMP RTDERR /NO, GO DISPLAY THE DATA ERROR MSG CLB CMA RAL /YES, IS THE FUNCTION CODE = B ? TAD RTFUNC SZA JMP RTD16 /NO, KEEP LOOKING TAD RTDECF /IS THE DATE 11 CHARACTERS LONG ? TAD (-13) SZA CLA JMP RTD15 /NO, DO OLD DATE FORMAT JMS NUDATE /YES, TRY NEW DATE FORMAT JMP RTDXIT /GO TO THE ROUTINE EXIT. RTD15, TAD (-6) /YES, GO CHECK THAT ONLY 6 DIGITS JMS RTDCHK / WERE ENTERED ? TAD (CRTX11-1) /SET UP AN AUTO-INDEX FOR THE TEXT DCA XR11 / AREA JMS RTMOV2 /GO MOVE THE MONTH TAD (5546) /AD "-&" TO CRTTXT DCA I XR11 JMS RTMOV2 /GO MOVE THE DAY TAD (5546) DCA I XR11 JMS RTMOV2 /GO MOVE THE YEAR TAD (4040) /ADD 4 SPACES TO CLEAR TEXT DCA I XR11 TAD (4040) DCA I XR11 TAD (DATEWD-1) /SET UP AND MOVE THE DATE DIGITS DCA XR11 / FROM THE CRT TEXT TO A LOCAL TAD (CRTX11-1) / BUFFER FOR 'RTDATE' TO USE. DCA XR12 TAD I XR12 /MOVE THE DAY DIGITS. DCA I XR11 ISZ XR12 /SKIP "-&" TAD I XR12 /NOW THE MONTH DIGITS. DCA I XR11 ISZ XR12 /SKIP "-&" TAD I XR12 /AND LAST THE YEAR DIGITS. DCA I XR11 JMS RTDATE /GO PROCESS THE SYSTEM FOR RTS/8. JMS RTDTTY /GO OUTPUT AND DISPLAY THE NEW DATE CRTH01 CRTX11 JMP RTDXIT /GO TO THE ROUTINE EXIT.
/ RTD16, TAD (-1) /IS THE FUNCTION CODE = C ? SZA JMP RTD17 /NO, KEEP LOOKING CLB CMA RAL /YES, GO CHECK THAT ONLY 2 DIGITS JMS RTDCHK / WERE ENTERED TAD (CRTX12-1) /SET UP AN AUTO-INDEX FOR THE TEXT DCA XR11 / AREA JMS RTMOV2 /GO MOVE THE SHIFT CODE TO THE TEXT CLB IAC DCA SHFTRL /RESET THE SHIFT ROLL NUMBER FOR / THE SAMPLING ROUTINES. JMS RTDTTY /GO OUTPUT AND DISPLAY THE NEW CRTH02 / SHIFT CODE. CRTX12 JMP RTDXIT /GO TO THE ROUTINE EXIT. / RTD17, TAD (-1) /IS THE FUNCTION CODE = D ? SZA JMP RTDERR /NO, GO DISPLAY THE DATA ERROR MSG CLB CMA RAL /YES, GO CHECK THAT ONLY 2 DIGITS JMS RTDCHK / WERE ENTERED. TAD (CRTX13-1) /SET UP AN AUTO-INDEX FOR THE TEXT DCA XR11 / AREA JMS RTMOV2 /GO MOVE THE NEW OPERATOR CODE TO / THE TEXT AREA JMS RTDTTY /GO OUTPUT AND DISPLAY THE NEW CRTH03 / OPERATOR CODE. CRTX13 JMP RTDXIT /GO TO THE ROUTINE EXIT. / / / CHECK THAT ONLY THE RIGHT NUMBER OF / DIGITS WERE ENTERED ON THE RT01. / / COME HERE WITH MINUS THE NUMBER OF VALID / DIGITS FOR THIS DATA ENTRY. / / RTDCHK, 0 TAD RTDECF SNA JMP I RTDCHK /YES, RETURN JMP RTDERR /NO, GO DISPLAY THE DATA ERROR MSG PAGE
/ / /%RP PROCESS A ROLL NUMBER / / RTMOVR, 0 CLB CMA /SET UP AN AUTO-INDEX FOR THE TEXT TAD I RTMOVR /AREA DCA XR11 JMS RTMOV3 /GO MOVE THE NEW PRODUCT TYPE TAD (700) JMS RTMOV3 /GO MOVE THE NEW EMULSION TYPE TAD (700) JMS RTMOV3 /GO MOVE THE NEW EMULSION RUN TAD (700) JMS RTMOV1 /GO MOVE THE NEW SLIT CUT DIGIT TAD I RTMOVR JMS RTSHOW /GO CUE THE NEW TEXT FOR DISPLAY ISZ RTMOVR JMP I RTMOVR /RETURN
/ / /%RP PROCESS THE PUT-UP CODE / / RTMOVP, 0 CLB CMA /SET UP AN AUTO-INDEX FOR THE TEXT TAD I RTMOVP /AREA DCA XR11 TAD MADDR /SAVE THE MESSAGE DATA POINTER DCA SMADDR JMS RTVLDP /GO VALIDATE THE PUTUP CODE TAD SMADDR /RESET THE MESSAGE DATA POINTER DCA MADDR JMS RTMOV2 /GO MOVE THE NEW PUT-UP JMS RTMOV2 TAD I RTMOVP /GET THE FIRST PUTUP DIGIT DCA RTD0A TAD I RTD0A /IS IT A 2? AND (7700) TAD (-6200) SZA CLA JMP RTMVP1 /NO, GO ON TAD (6230) /YES, PUTUP IS 2X50, PUT "2X" AS DCA I RTD0A / FIRST WORD OF DISPLAYED PUTUP. RTMVP1, TAD I RTMOVP ISZ RTMOVP JMS RTSHOW /GO CUE THE NEW TEXT FOR DISPLAY TAD RTD0B CIA JMP I RTMOVP /RETURN / / VALIDATE THE NEW PUTUP / RTVLDP, 0 JMS GETCHR /GET THE FIRST PUTUP CHAR AGAIN TAD (-62) /IS IT A 2? SZA CLA JMP RTMP1 /NO, JUST A 3 DIGIT PUTUP. JMS GETCHR /YES, SKIP SECOND PUTUP CHAR AC7776 /NOW GET 2 DECIMAL DIGITS SKP RTMP1, AC7775 JMS RTABIN /GO CONVERT NEW PUT-UP TO BINARY JMS RTVALD /GO TEST FOR A VALID PUT-UP CODE RTPTBL RTPTBL-RTPEND JMP I RTVLDP
/ / /%RP PROCESS A SAMPLING CODE / / RTMOVS, 0 CLB CMA /SET UP AN AUTO-INDEX FOR THE TEXT TAD I RTMOVS /AREA DCA XR11 JMS RTVLDS /GO VALIDATE THE SAMPLING CODE TAD RTMSA /NOW CONVERT THE SAMPLING CHRACTERS BSW / TO TEXT FOR CRTTXT AND TAD RTMSC DCA I XR11 / PUT THE WORD IN CRTTXT. TAD I RTMOVS JMS RTSHOW /GO CUE THE NEW TEXT FOR DISPLAY TAD I RTMSB /PUT THE SPECIAL SAMPLING CODE IN MQL / THE MQ. TAD RTMSC /RETURN THE SAMPLING INVERVAL TO AND (0017) ISZ RTMOVS / THE CALLING ROUTINE. JMP I RTMOVS /RETURN / / VALIDATE THE NEW SAMPLING CODE / RTVLDS, 0 JMS GETCHR /GET THE FIRST SAMPLING CODE DCA RTMSA / CHARACTER AND SAVE IT. TAD RTMSA /NOW VALIDATE THE FIRST CHARACTER. JMS RTVALD RTSTBL RTSTBL-RTSEND TAD RTMSA /FORM AN INDEX TO THE SPECIAL AND (0007) / SAMPLING CODE VALUE AND TAD (RTSEND+1) DCA RTMSB / SAVE IT FOR LATER. JMS GETCHR /NOW GET THE SECOND SAMPLE CODE DCA RTMSC / AND SAVE IT. TAD RTMSC /TEST THAT IT IS A NUMBER TAD (-60) SPA SNA JMP RTDERR TAD (-12) SMA CLA JMP RTDERR JMP I RTVLDS
/ RTMSA, 0 RTMSB, 0 RTMSC, 0 PAGE
/ / /%RP PROCESS THE SLIT WIDTH / / RTMOVW, 0 CLB CMA /SET UP AN AUTO-INDEX FOR THE TEXT TAD I RTMOVW /AREA DCA XR11 TAD MADDR /SAVE THE MESSAGE DATA POINTER DCA SMADDR JMS RTMOV3 /GO MOVE THE NEW SLIT WIDTH TAD (4055) /ADD A " -" TO THE CHOP CRT TEXT DCA I XR11 TAD I RTMOVW ISZ RTMOVW JMS RTSHOW /GO CUE THE NEW TEXT FOR DISPLAY TAD SMADDR /RESET THE MESSAGE DATA POINTER DCA MADDR AC7775 /GO CONVERT THE NEW SLIT WIDTH JMS RTABIN / TO BINARY AND SAVE IT FOR THE JMP I RTMOVW /NOW RETURN. / / /%RP PROCESS THE NEW ROLL CHOP LENGTH / / RTMOVC, 0 CLB CMA /SET UP AN AUTO-INDEX FOR THE TEXT TAD I RTMOVC /AREA DCA XR11 TAD MADDR /SAVE THE MESSAGE DATA POINTER DCA SMADDR AC7775 JMS RTABIN /GO CONVERT THE NEW CHOP LENGTH TO /BINARY. JMS RTVALD /GO TEST FOR A VALID CHOP LENGTH RTCTBL RTCTBL-RTCEND TAD SMADDR /RESET THE MESSAGE DATA POINTER DCA MADDR JMS RTMOV3 /GO MOVE THE CHOP LENGTH TAD I RTMOVC ISZ RTMOVC JMS RTSHOW /GO CUE THE NEW TEXT FOR DISPLAY CLB CMA RAL /COMPUTE THE CODE FOR THIS CHOP TAD (RTCTBL-RTCEND) /LENGTH (1-8). CIA TAD RTD0F JMP I RTMOVC /NOW RETURN
/ / /%RTP RTO1 DATA MOVING SUBROUTINES / /%TW MOVE 3 DIGITS FROM THE RT01 DATA BUFFER TO A / CRT TEXT AREA. / / RTMOV3, 0 JMS RTMOV1 /GO FORM AND MOVE 1 DIGIT JMS RTMOV2 /GO FORM AND MOVE 2 DIGITS JMP I RTMOV3 / / /%TW MOVE 2 DIGITS FROM THE RT01 DATA BUFFER TO A / CRT TEXT AREA. / / RTMOV2, 0 JMS GETCHR /GET THE FIRST NEW DIGIT, BSW / MOVE IT TO THE OTHER END, MQL / AND SAVE IT. JMS GETCHR /GET THE SECOND NEW DIGIT, MQA / PACK IN THE SECOND DIGIT DCA I XR11 /ADD THE NEW WORD TO THE TEXT AREA JMP I RTMOV2 /RETURN / / /%TW MOVE 1 DIGIT FROM THE RT01 DATA BUFFER TO A / CRT TEXT AREA. / / RTMOV1, 0 MQL /SAVE POSSIBLE DATA ON ENTRY JMS GETCHR /GET THE NEW DIGIT, MQA TAD (4600) / AND ADD IN THE NULL CHARACTER. DCA I XR11 /ADD THE NEW WORD TO THE TEXT AREA JMP I RTMOV1 /RETURN
/ / /%RP ASCII TO BINARY CONVERTER / /%TW COME HERE TO CONVERT ASCII CHARACTERS IN THE / DATA MESSAGE TO A BINARY NUMBER. ENTER WITH THE / NUMBER OF DIGITS TO CONVERT IN THE ACCUMULATOR. ON / EXIT, THE BINARY NUMBER IS STORED IN 'RTD0B' AND IS / IN THE ACCUMULATOR. / / RTABIN, 0 DCA RTD0A /SAVE THE LOOP COUNTER RTBN1, CLL RAL /MULTIPLY THE CURRENT NUMBER BY 10 DCA RTD0B TAD RTD0B CLL RTL TAD RTD0B DCA RTD0B /SAVE THE CURRENT NUMBER JMS GETCHR /ADD IN THE NEW DIGIT AND (17) TAD RTD0B ISZ RTD0A /IS THE NUMBER CONVERSION FINISHED? JMP RTBN1 /NO, KEEP GOING DCA RTD0B TAD RTD0B JMP I RTABIN /YES, RETURN / / /%RP CUE A TEXT AREA FOR DISPLAY ON THE CRT. / / THE ADDRESS OF THE TEXT AREA IS IN THE ACCUMULATOR. / / RTSHOW, 0 DCA RTSHWA /SAVE MESSAGE NUMBER CAL SENDW /ISSUE THE MESSAGE REQUIRED CRT RTSHWM JMP I RTSHOW /RETURN RTSHWM, ZBLOCK 3 /CRT MESSAGE HANDLER MESSAGE RTSHWA, 0
/ / / CUE A TEXT AREA TO PRINT ON THE TELETYPE AND / DISPLAY THE TEXT AREA ON THE CRT. / / THE ADDRESS OF THE TEXT AREA FOLLOWS THE CALL. / / RTDTTY, 0 TAD I RTDTTY /GET THE TEXT ADDRESS TO PRINT ISZ RTDTTY DCA RTSHTA TAD I RTDTTY ISZ RTDTTY DCA RTSHTB TAD RTSHTB JMS RTSHOW /GO CUE THE TEXT FOR DISPLAY CAL SENDW /ISSUE THE MESSAGE TO TTY TTY RTSHT1 CAL SENDW TTY RTSHT2 JMP I RTDTTY /RETURN TO CALLER. RTSHT1, ZBLOCK 3 3000 0 RTSHTA, 0 RTSHT2, ZBLOCK 3 1000 0 RTSHTB, 0 PAGE
/ / / ADD OR DELETE A CRT MESSAGE / / CRTMGA, 0 TAD I CRTMGA /FETCH MESSAGE NUMBER ISZ CRTMGA /INC FOR PROPER RETURN DCA CRTMGC /SET UP FOR CRT MESSAGE CALL CAL SENDW CRTMSG /SEND MESSAGE TO MESSAGE HANDLER CRTMGB JMP I CRTMGA /RETURN CRTMGB, ZBLOCK 3 CRTMGC, 0 / / / CHECK FOR A 'SPACE' CHARACTER / / RTCKSP, 0 JMS GETCHR /GET THE NEXT INPUT CHARACTER TAD (-40) /IS IT A SPACE? SNA CLA JMP I RTCKSP /YES, RETURN JMP RTDERR /NO, TAKE THE ERROR EXIT
/ / /%RP TEST FOR A VALID CODE TYPE / / COME HERE TO LOOK FOR A BINARY NUMBER IN / THE SPECIFIED TABLE. / / / THE CALLING SEQUENCE IS: / / (AC) = THE BINARY NUMBER TO LOOK FOR / JMS RTVALD / ADDRESS OF THE TABLE TO LOOK IN / -(LENGTH OF THE TABLE) / / RTVALD, 0 CIA DCA RTD0E CLB CMA TAD I RTVALD ISZ RTVALD DCA XR12 CLB CMA TAD I RTVALD ISZ RTVALD DCA RTD0F RTV1, TAD I XR12 TAD RTD0E SNA CLA JMP I RTVALD ISZ RTD0F JMP RTV1 /NO, KEEP LOOKING JMP RTDERR /YES, GO DISPLAY THE "DATA ENTRY /ERROR" AND QUIT.
/ / /%RP SET UP THE SYSTEM DATE FOR USE BY RTS/8 / / RTDATE, 0 CLB TAD (DATEWD) /SET UP A POINTER TO OUR DATA DCA RTD0C / BUFFER. JMS RTDA1 /GO GET THE 'DAY' DIGITS. AND (0037) CLL RTL RAL DCA RTD0A /SAVE FOR A MOMENT. JMS RTDA1 /GO GET THE 'MONTH' DIGITS. AND (0017) BSW CLL RTL TAD RTD0A /ADD 'MONTH' TO 'DAY'. DCA RTD0A JMS RTDA1 /NOW GET THE 'YEAR' DIGITS. TAD (-106) /FORCE BASE YEAR OF 1970. CDF 0 DCA I (YEAR) /SAVE YEAR IN THE EXEC'S YEAR WORD. TAD I (YEAR) SPA TAD (4) AND (0007) TAD RTD0A /ADD 'YEAR' INTO THE NEW DATE WORD, DCA I (DATE) / AND PUT IT IN THE EXEC'S DATE CDF CUR / WORD. JMP I RTDATE /ALL DONE, RETURN HOME. RTDA1, 0 TAD I RTD0C /GET THE HIGH ORDER DIGIT OF THE BSW AND (0017) / PAIR, AND MULTIPLY BY 10(10) CLL RAL DCA RTD0B TAD RTD0B RTL TAD RTD0B DCA RTD0B TAD I RTD0C /NOW THE LOW ORDER DIGIT ISZ RTD0C AND (0017) TAD RTD0B /COMBINE THE TWO DIGITS. JMP I RTDA1 /BACK TO CALLER. DATEWD, 0 /BUFFER FOR DATE DIGITS, FILLED BY 0 / WHOEVER CALLS US. 0
/ / /%RTP TABLES OF VALID OPERATOR DATA / / TABLE OF VALID CHOP LENGTHS (IN BINARY) / / RTCTBL, 262 /178 MM CHOP LENGTH 306 /198 356 /238 / 450 /296 452 /298 542 /354 RTCEND, 616 /398 / 656 /430 / / / TABLE OF VALID PUT-UP CODES / / RTPTBL, 31 /25 SHEETS PER PRODUCT TRAY 62 /50 113 /75 144 /100 RTPEND, 175 /125 / / / TABLE OF VALID SPECIAL SAMPLE CODES / / RTSTBL, 60 /0 /ORDER IS IMPORTANT !!!! 61 /1 RTSEND, 62 /2 0 -32 /25 SHEETS -63 /50 SHEETS PAGE
/ / / PROCESS NEXT ROLL DATA FROM GATEWAY / / GATENR, JMS GATEVL /GO VALIDATE THE INPUT MESSAGE JMS RTMOVR /GO MOVE THE NEXT ROLL NUMBER TO CRTX01 / THE TEXT AREA. ISZ NEWRNF /SET THE ROLL NUMBER ENTERED FLAG AC4000 JMS CRTMGA /GO REMOVE THE "ENTER NEXT ROLL MOPM08 / DATA" MESSAGE FROM THE DISPLAY. ISZ MADDR /INCREMENT THE MESSAGE DATA POINTER JMS RTMOVP /GO MOVE THE NEXT ROLL PUT-UP CRTX02 / TO THE TEXT AREA DCA NPUTPF /SET THE PUT-UP ENTERED FLAG ISZ MADDR /INCREMENT THE MESSAGE DATA POINTER JMS RTMOVS /GO MOVE THE NEXT ROLL SAMPLE CRTX03 / CODE TO THE TEXT AREA. DCA NSAMCD /SAVE THE NEW SAMPLING CODE . MQA DCA NSAMSP / AND THE SPECIAL SAMPLING FLAG ISZ MADDR /INCREMENT THE MESSAGE DATA POINTER JMS RTMOVW /GO PROCESS THE NEXT ROLL SLIT CRTX04 / WIDTH. DCA NSLITC /PUT THE NEXT ROLL WIDTH HERE. ISZ MADDR /INCREMENT THE MESSAGE DATA POINTER JMS RTMOVC /GO MOVE THE NEW CHOP LENGTH CRTX05 / TO THE TEXT AREA AND SET UP THE / CHOP LENGTH DATA FOR END-OF-ROLL / SUMMARY TIME. DCA NCHOPC /SAVE THE NEXT ROLL CHOP SIZE JMS GATEOP /GO MOVE SHIFT, OPERATOR AND DATE. JMP RTDXIT /ALL DONE, EXIT
/ / / PROCESS CURRENT ROLL DATA FROM GATEWAY / / GATECR, JMS GATEVL /GO VALIDATE THE INPUT MESAGE JMS RTMOVR /GO MOVE THE CURRENT ROLL CRTX06 / NUMBER TO THE TEXT AREA. CDF 20 ISZ I (MROLLF) /SET THE MOVE ROLL NUMBER FLG CDF CUR ISZ MADDR /INCREMENT THE MESSAGE DATA POINTER JMS RTMOVP /GO MOVE THE CURRENT ROLL CRTX07 / PUT-UP TO THE TEXT AREA. CDF 10 DCA I (PUTUP1) /SAVE THE NEXT ROLL PUTUP CDF 20 ISZ I (NPCODE) /SET THE NEW PUT-UP CODE FLAG. CDF CUR ISZ MADDR /INCREMENT THE MESSAGE DATA POINTER JMS RTMOVS /GO MOVE THE CURRENT ROLL CRTX08 / SAMPLING CODE TO THE TEXT AREA. CDF 20 DCA I (PATCON) /UPDATE THE CURRENT SAMPLING / PATTERN INTERVAL, MQA DCA I (SPESAM) / AND THE SPECIAL SAMPLING FLAG ISZ I (NSCODE) /SET THE NEW SAMPLING CODE FLAG CDF CUR ISZ MADDR /INCREMENT THE MESSAGE DATA POINTER JMS RTMOVW /GO PROCESS THE CURRENT ROLL CRTX09 / SLIT WIDTH DATA. DCA SLITC /PUT CURRENT WIDTH HERE.
/ ISZ MADDR /INCREMENT THE MESSAGE DATA POINTER JMS RTMOVC /GO MOVE THE CURRENT CHOP LENGTH CRTX10 / TO THE TEXT AREA DCA RCHOP /SAVE THE NEXT ROLL CHOP SIZE TAD CHOPC /IS THE CHOP SIZE THE SAME AS WHAT CIA / WE ARE NOW USING ? TAD RCHOP SNA CLA JMP GATEC1 /YES, GO ON. CAL /NO, MAKE SURE THE MACHINE IS SEND / STOPPED. INLOCK GATMSG TAD RCHOP /UPDATE THE CHOP SIZE. DCA CHOPC TAD (BUILD) /NOW RUN BUILD TO SET UP FOR CAL / THE NEW CHOP SIZE. RUN CDF 20 /SET THE END OR ROLL SECQUENCE CLB IAC / FLAG TO FORCE TALLEY TO DO DCA I (EORSFG) / FULL SAMPLE TALLEY HEADING. CDF CUR GATEC1, JMS GATEOP /GO MOVE SHIFT, OPERATOR AND DATE. JMP RTDXIT /GO TO THE ROUTINE EXIT GATMSG, ZBLOCK 3 MSTINL+MOPM07 /CLEAR STACKER MESSAGE
/ PAGE
/ / / PROCESS GATEWAY DATA FOR SHIFT, OPERATOR AND DATE / / GATEOP, 0 ISZ MADDR /INCREMENT THE MESSAGE DATA POINTER. TAD (CRTX12-1) /SET UP AN AUTO-INDEX FOR THE TEXT DCA XR11 / AREA JMS RTMOV2 /GO MOVE THE SHIFT CODE TO THE TEXT TAD CRTX12 /IS THIS SHIFT DATA THE SAME AS WHAT CIA / WE HAVE NOW? TAD RSHIFT SNA CLA JMP GATEO1 /YES, GO ON. TAD CRTX12 /NO, SAVE THE NEW SHIFT CODE AND DCA RSHIFT CLB IAC DCA SHFTRL / RESET THE SHIFT ROLL NUMBER FOR / THE SAMPLING ROUTINES. GATEO1, JMS RTDTTY /GO OUTPUT AND DISPLAY THE NEW CRTH02 / SHIFT CODE. CRTX12 ISZ MADDR /INCREMENT MESSAGE DATA POINTER. TAD (CRTX13-1) /SET UP AN AUTO-INDEX FOR THE TEXT DCA XR11 / AREA JMS RTMOV2 /GO MOVE THE NEW OPERATOR CODE TO / THE TEXT AREA JMS RTDTTY /GO OUTPUT AND DISPLAY THE NEW CRTH03 / OPERATOR CODE. CRTX13 / / / NOW STORE AND REFORMAT DATE / / ISZ MADDR /INCREMENT POINTER OVER SPACE. JMS NUDATE /GO PROCESS DATE IN NEW FORMAT. JMP I GATEOP /ALL DONE.....
/ / / PROCESS DATE IN NEW DEC FORMAT / / NUDATE, 0 TAD MADDR /SAVE THE INPUT MESSAGE POINTER. DCA SMADDR TAD (CRTX11-1) /SET UP AN AUTO-INDEX FOR THE TEXT DCA XR11 / AREA. JMS RTMOV2 /MOVE THE DATE TEXT. JMS RTMOV2 JMS RTMOV2 JMS RTMOV2 JMS RTMOV1 /PUTS LAST 2 DIGITS OF THE YEAR JMS RTMOV2 / TOGETHER. JMS RTDTTY /GO OUTPUT AND DISPLAY THE NEW CRTH01 / DATE. CRTX11 TAD I (CRTX11) /MOVE THE DAY DIGITS TO THE BUFFER DCA I (DATEWD) / FOR 'RTDATE'. TAD SMADDR /NOW RESET THE MESSAGE POINTER TAD (3) / SO WE CAN TRANSLATE THE DATE DCA MADDR / FOR RTS8 TAD (DATSTG-1) /SET UP AUTO-INDEX TO A LOCAL DCA XR11 / STRING BUFFER JMS RTMOV2 /GET THE FIRST 2 MONTH DIGITS JMS GETCHR /GET THE THIRD DIGIT AND BSW / SHIFT IT LEFT TO MATCH THE DCA I XR11 / MONTH STRING. TAD (MONTHS-3) /FIND WHAT MONTH WAS ENTERED. DCA XR11 NUDA1, ISZ XR11 NUDA2, ISZ XR11 TAD I XR11 /COMPARE FIRST 2 CHARACTERS SNA JMP NUDA4 /ZERO IS END OF TABLE CIA TAD DATSTG SZA CLA JMP NUDA1 TAD I XR11 /NOW COMPARE 3RD CHARACTER. CIA TAD DATSTG+1 SZA CLA JMP NUDA2 TAD I XR11 /GET THE MONTH NUMBER IN ASCII AND NUDA3, DCA I (DATEWD+1) / PUT IT IN 'RTDATE'S BUFFER. TAD I (CRTX11+5) /MOVE THE YEAR CHARACTERS TO DCA I (DATEWD+2) / 'RTDATE'S BUFFER. JMS RTDATE /GO MOVE THE DATA TO RTS8. TAD SMADDR /RESTORE THE MESSAGE POINTER TO DCA MADDR / POINT AFTER DATE. JMP I NUDATE /ALL DONE, I HOPE... NUDA4, TAD (6060) /IF NO MONTH, USE ZEROES. JMP NUDA3 PAGE
/ / / VALIDATE THE GATEWY INPUT MESSAGE / / IF INVALID DATA IS FOUND, TAKE THE ERROR EXIT / / GATEVL, 0 TAD MADDR /SAVE THE INPUT MESSAGE POINTER DCA SMADDR TAD (12) /SKIP OVER THE ROLL NUMBER TAD MADDR DCA MADDR JMS RTCKSP /CHECK FOR SPACE - DELIMINATOR JMS RTVLDP /GO VALIDATE THE PUTUP CODE JMS RTCKSP /CHECK FOR SPACE - DELIMINATOR JMS RTVLDS /GO VALIDATE THE SAMPLE CODE JMS RTCKSP /CHECK FOR SPACE - DELIMINATOR TAD (3) /SKIP SLIT WIDTH TAD MADDR DCA MADDR JMS RTCKSP /CHECK FOR SPACE - DELIMINATOR AC7775 /CHECK CHOP LENGTH JMS RTABIN JMS RTVALD RTCTBL RTCTBL-RTCEND JMS RTCKSP /CHECK FOR SPACE - DELIMINATOR AC0002 /CHECK FOR SHIFT CODE LENGTH TAD MADDR DCA MADDR JMS RTCKSP /CHECK FOR SPACE - DELIMINATOR AC0002 /CHECK FOR OPERATOR CODE LENGTH TAD MADDR DCA MADDR JMS RTCKSP /CHECK FOR SPACE - DELIMINATOR TAD (-13) /CHECK FOR DATE LENGTH TAD MADDR DCA MADDR JMS RTCKSP /CHECK FOR SPACE - DELIMINATOR TAD SMADDR /RESET THE INPUT MESSAGE POINTER DCA MADDR JMP I GATEVL /ALL DONE, RETURN
/ / / TABLE OF MONTHS AND THEIR ASCII NUMBER / / MONTHS, TEXT "JAN" ; 6061 TEXT "FEB" ; 6062 TEXT "MAR" ; 6063 TEXT "APR" ; 6064 TEXT "MAY" ; 6065 TEXT "JUN" ; 6066 TEXT "JUL" ; 6067 TEXT "AUG" ; 6070 TEXT "SEP" ; 6071 TEXT "OCT" ; 6160 TEXT "NOV" ; 6161 TEXT "DEC" ; 6162 / / GERMAN DIFFERENCES / TEXT "MAI" ; 6065 TEXT "OKT" ; 6160 TEXT "DEZ" ; 6162 0; 0; 0; 0 /TABLE TERMINATOR DATSTG, TEXT "JAN&" PAGE NOPUNCH /CRT TEXT FILE 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