IDENT SCTD,FWA ABS SST ENTRY SCTD ENTRY RFL= ENTRY SSJ= SYSCOM B1 TITLE SCTD - SERVICE CLASS CONTROL TABLE DISPLAY. *COMMENT SCTD - SERVICE CLASS CONTROL TABLE DISPLAY. COMMENT COPYRIGHT CONTROL DATA SYSTEMS INC. 1992. SPACE 4,10 *** SCTD - SERVICE CLASS CONTROL TABLE DISPLAY. * * W. T. COLEMAN 82/09/16. SPACE 4,10 *** *SCTD* IS A CPU UTILITY USED BY THE OPERATOR TO DISPLAY * THE SERVICE CLASS CONTROL TABLE AND THE PRIORITY ORDERED * SERVICE CLASSES ON THE *L* DISPLAY OR TO FORMAT IT FOR * A PRINTER. SPACE 4,20 *** CONTROL STATEMENT CALL. * * * SCTD(LFN,OP) ORDER DEPENDENT PARAMETERS. * OR * SCTD(L=LFN,LO=OP) ORDER INDEPENDENT (KEYWORD = PARAMETER). * * WHERE * * OP = *L* FORMAT DATA FOR A LINE PRINTER. * * OP = *D* FORMAT DATA FOR *L* DISPLAY (DEFAULT). * * LFN LIST OUTPUT FILE NAME (DEFAULT = OUTPUT). * THIS PARAMETER VALID ONLY WITH (LO=L). * * NOTES SPECIAL PRIVILEGES REQUIRED. * 1. USER MUST BE *SYOT* TO USE *L* DISPLAY (LO=D). * 2. USER MUST BE *SYOT* OR HAVE SYSTEM ORIGIN * PRIVILEGES TO GENERATE A LISTING (LO=L). SPACE 4,20 *** DAYFILE MESSAGES. * * THESE MESSAGES ARE ISSUED TO THE JOB AND SYSTEM DAYFILES. * * *ARGUMENT ERROR.* * AN INCORRECT PARAMETER WAS ENTERED. (FATAL ERROR) * * *INCORRECT USER ACCESS.* * CALLING JOB WAS NOT SYSTEM ORIGIN. (FATAL ERROR) * * *SCTD UTILITY COMPLETE.* * INDICATES NORMAL COMPLETION OF PROGRAM. * * *CANNOT ACCESS L-DISPLAY.* * *DSD* DETECTED AN ERROR CONDITION WHEN INPUT WAS * ENTERED VIA THE *L* DISPLAY. SPACE 4,15 *** OPERATOR MESSAGES. * * *END PROCESSED.* * AN INFORMATIVE MESSAGE INDICATING THAT AN END COMMAND * WAS ENTERED VIA THE *L* DISPLAY. THE UTILITY HAS * BEEN TERMINATED. * * *UNRECOGNIZABLE DIRECTIVE.* * AN ERROR MESSAGE INDICATING THAT THE DIRECTIVE * ENTERED VIA THE *L* DISPLAY WAS NOT ONE OF THE VALID * DIRECTIVES. SPACE 4,10 *** *L* DISPLAY COMMANDS. * * THE FOLLOWING ARE LEGAL COMMANDS TO BE ENTERED BY THE * OPERATOR THROUGH THE *L* DISPLAY. * * L.END. TERMINATE THE UTILITY. * * L.+. ADVANCE TO THE NEXT SCREEN. * * L.-. REVERSE TO THE PREVIOUS SCREEN. SPACE 4,15 *** DEFINITION COMMON DECKS. * *CALL COMCCMD *CALL COMCDCM *CALL COMCDCP *CALL COMCMAC *CALL COMSEVT *CALL COMSSFM *CALL COMSSSJ SCLASS SPACE 4,15 ** SCLASS - DEFINE SERVICE CLASS TABLE. * * SCLASS NM,MN,DF,ST,TX * * ENTRY *NM* = SERVICE CLASS NAME. * *MN* = TWO CHARACTER MNEMONIC. * *DF* = DAYFILE MESSAGE CHARACTER. * *ST* = SHORT TEXT FOR *QFTLIST*. * *TX* = TEXT OF SERVICE CLASS NAME FOR BANNER PAGE. * * NOTE - THE CALL TO *COMSSCD* MUST FOLLOW THE DEFINITION OF * THIS MACRO. PURGMAC SCLASS SCLASS MACRO NM,MN,DF,ST,TX .SCL RMT .A IFLT NM,12D VFD 12/0L_MN,48/MN_MK TX .A ELSE VFD 12/0L_MN,36/MN_MK,12/0 TX .A ENDIF .SCL RMT SCLASS ENDM SCL$ EQU 0 ONLY PROCESS CLASSES WITH JCB-S *CALL COMSSCD TITLE ASSEMBLY CONSTANTS. **** ASSEMBLY CONSTANTS. CNCI EQU 4 NO COMMAND INPUT (*CPM* RETURN STATUS) LBUFL EQU LDSY *L* DISPLAY BUFFER LENGTH LCOMU EQU LCOM/2+1 INPUT BUFFER PACKED NPXW EQU 5 PRIORITY ORDERED SERVICE CLASSES PER WORD NSPL EQU 10 NUMBER OF SERVICE CLASSES PER LINE NUMPX EQU 10B NUMBER OF PRIORITY ORDERED SERVICE CLASSES SCTL EQU SCTE LENGTH OF OF *SCT* XCDT EQU 4 X - COORDINATE FOR *L* DISPLAY YCDT EQU 2 Y - COORDINATE FOR *L* DISPLAY **** TITLE TABLES AND BUFFER DEFINITIONS. ORG 111B FWA BSS 0 SPACE 4,10 * DAYFILE MESSAGES. DAFC DATA C* SCTD UTILITY COMPLETE.* ERAR DATA C* ARGUMENT ERROR.* ERCA DATA C* CANNOT ACCESS L-DISPLAY.* ERIU DATA C* INCORRECT USER ACCESS.* SPACE 4,10 * FLAG DEFINITIONS. LFLG CON 0 *L* DISPLAY FLAG PFLG CON 0 PRINTER OUTPUT FLAG SYOF CON 0 SYSTEM ORIGIN FLAG SPACE 4,5 * GLOBAL STORAGE DEFINITIONS. CPAG DATA 1 INDEX OF SCREEN TO DISPLAY SPACE 4,10 ** *SETJOB* PARAMETER BLOCK. SETB VFD 60/0 VFD 48/0,12/2LDF SPACE 4,10 ** *SFM* PARAMETER BLOCK. SFMB VFD 12/RSCF,12/0,12/SCTL,6/0,18/WBUF CON 0 END OF *SFM* PARAMETER BLOCK ROLB SPACE 4,5 ** ROLB - ROLLOUT PARAMETER BLOCK. ROLB VFD 30/0,18/LINE,12/60 TMLD SPACE 4,10 ** TMLD - TABLE OF MESSAGES TO *L* DISPLAY. TMLD BSS 0 LOC 0 DATA C* * ENDM DATA C*END PROCESSED. * EUND DATA C*UNRECOGNIZABLE DIRECTIVE. * LOC *O EMOR CON 0 ERROR MESSAGE ORDINAL LDPT SPACE 4,5 ** LDPT - *L* DISPLAY PAGE TABLE. LDPT PAGT SDTA,SDTA+SDMP,SDTA+SDIP LEFT SCREEN PAGE 1 PAGT SDTB,SDTB+SDMP,SDTB+SDIP LEFT SCREEN PAGE 2 PAGT * SPACE 4,5 * SSJ= PARAMETER BLOCK. SSJ= BSS 0 SSJ= ENTRY POINT BSSZ SSJL SSJ= PARAMETER BLOCK FETS SPACE 4,10 * FET DEFINITIONS. O BSS 0 PRINTER OUTPUT FILE BUFFER OUTPUT FILEB OBUF,SDTAE-SDTH,(FET=6) TSCT SPACE 4,10 ** TSCT - SERVICE CLASS TABLE. * *T 12/CLASS, 48/VALUE * * CLASS - TWO CHARACTER SERVICE CLASS MNEMONIC. * VALUE - CORRESPONDING SERVICE CLASS MASK VALUE. TSCT BSS 0 LIST G .SCL HERE LIST * TSCTL EQU *-TSCT ERRNZ TSCTL-MXJC+1 ENSURE ALL SERVICE CLASSES PRESENT CON 0 END OF TABLE SCTD TITLE MAIN PROGRAM. ** SCTD - MAIN PROGRAM. * * EXIT *SCTD* PROGRAM COMPLETED. * * CALLS PRS, LOP. * * MACROS ENDRUN, MESSAGE. SCTD BSS 0 ENTRY RJ PRS PRESET ROUTINE RJ LOP PROCESS LIST OPTIONS MESSAGE DAFC,0,R * SCTD UTILITY COMPLETE.* ENDRUN LOP TITLE LIST OPTION PROCESSOR. LOP SPACE 4,25 ** LOP - LIST OPTION PROCESSOR. * * *LOP* FORMATS THE *SCT* DATA TO A LOCAL FILE FOR PRINTING, * IF THE PRINT OPTION IS SPECIFIED. IF THE *L* DISPLAY IS * SELECTED *LOP* WILL DISPLAY THE APPROPRIATE DATA ON THE * *L* DISPLAY UNTIL AN *L.END.* COMMAND IS ENTERED. * * ENTRY USER HAS BEEN VALIDATED (EITHER SYSTEM ORIGIN * OR SYSTEM ORIGIN PRIVILEGES). * * (SFMB) = *SFM* PARAMETER BLOCK SET UP * FOR *RSCF* SUBFUNCTION. * (PFLG) = 1, IF PRINT FILE REQUESTED. * (LFLG) = 1, IF *L* DISPLAY REQUESTED. * * EXIT PRINT FILE, IF REQUESTED, LOCAL TO USER JOB. * * USES X - 1, 2, 5, 6. * A - 1, 2, 5. * * CALLS CMP, EFP, FDB, GSD, ILD, OLD. * * MACROS SETFS, SETJOB, WRITER. LOP SUBR ENTRY/EXIT RJ GSD GET *SCT* DATA SA2 PFLG ZR X2,LOP1 IF NOT TO BE PRINTED SX2 O SET OUTPUT FET ADDRESS SX1 SDTH FWA PAGE 1 WITH PRINTER HEADER SX6 SDTAE LWA PAGE 1 RJ FDB BUILD PRINT FILE WRITER O FLUSH OUTPUT BUFFER SX1 SDTB FWA PAGE 2 SX6 SDTBE LWA PAGE 2 RJ FDB BUILD PRINT FILE WRITER O FLUSH OUTPUT BUFFER SETFS O,0 SAVE OUTPUT AS LOCAL FILE SETJOB SETB CHANGE JOB DISPOSITION TO *DF* SX2 B0+ SET FORMATTING FOR *L* DISPLAY LOP1 SA1 LFLG ZR X1,LOPX IF *L* DISPLAY NOT SELECTED LOP2 RJ OLD OUTPUT *L* DISPLAY DATA RJ ILD INPUT *L* DISPLAY DATA RJ CMP COMMAND PROCESSOR SA1 EMOR CHECK FOR ERROR MESSAGE NZ X1,LOP2 IF ERROR IN COMMAND RJ EFP EXECUTE FUNCTION PROCESSOR EQ LOP2 LOOP TITLE FUNCTION PROCESSORS. END SPACE 4,15 ** END - *END* FUNCTION PROCESSOR. * * *END* TERMINATES THE UTILITY. * * USES X - 6. * A - 6. * * CALLS OLD. * * MACROS DSDINP, ENDRUN, MESSAGE. END SUBR ENTRY/EXIT SX6 ENDM *END PROCESSED.* SA6 EMOR SET MESSAGE ORDINAL RJ OLD OUTPUT *L* DISPLAY DSDINP IPW,C CLEAR *L* DISPLAY INPUT BUFFER MESSAGE DAFC,0,R * SCTD UTILITY COMPLETE.* ENDRUN TITLE SUBROUTINES. CMP SPACE 4,20 ** CMP - COMMAND FUNCTION PROCESSOR. * * *CMP* VALIDATES THE COMMAND ENTERED VIA THE *L* DISPLAY AND * SETS THE PROCESSOR ADDRESS FOR THE COMMAND ENTERED. PAGING * IS PROCESSED DIRECTLY BY *CMP*. * * ENTRY (IBUF) = *L* DISPLAY INPUT DIRECTIVE. * * EXIT (B5) = ADDRESS OF FUNCTION PROCESSOR, IF NO ERROR. * (B5) = 0, IF PAGING COMMAND. * (EMOR) = 0, IF NO ERROR IN DIRECTIVE INPUT. * (EMOR) = ERROR MESSAGE ADDRESS, IF ERROR. * (X3) = COMMAND, LEFT JUSTIFIED, ZERO FILLED. * * USES X - 0, 1, 2, 3, 4, 6, 7. * A - 1, 3, 6, 7. * B - 2, 3, 5, 6. * * CALLS PGD, POP, USB. CMP2 SB5 X1+ SET PROCESSOR ADDRESS CMP3 SX6 B0+ SET NO ERROR SA6 EMOR SET MESSAGE ORDINAL CMP SUBR ENTRY/EXIT * CHECK FOR PAGING COMMAND. SX1 CMPA *L* DISPLAY BUFFER FWA SX2 LDPT PAGE TABLE FWA SA3 IBUF GET PAGING CHARACTER MX0 6 PAGING CHARACTER MASK BX3 X0*X3 SX4 B1+ INDICATE *L* DISPLAY RJ PGD PAGE *L* DISPLAY SB5 B0 INDICATE PAGING COMMAND MX0 -18 SCREEN INDEX MASK SA1 LDPT PAGE TABLE FWA LX1 30 BX6 -X0*X1 GET LEFT SCREEN INDEX SA6 CPAG SAVE LEFT SCREEN INDEX ZR X4,CMP3 IF LEGAL PAGING * CHECK FOR VALID NON PAGING COMMAND. SB2 IBUF FWA OF PACKED COMMAND BUFFER SB3 B0+ INDICATE DISPLAY CODE RJ USB UNPACK STRING BUFFER SB6 USBB FWA UNPACKED STRING BUFFER RJ POP PICK OUT PARAMETER SX7 EUND *UNRECOGNIZABLE DIRECTIVE.* SA7 EMOR SET MESSAGE ORDINAL SA1 TCOM TABLE OF COMMANDS MX0 42 COMMAND MASK CMP1 ZR X1,CMPX IF END OF TABLE (INCORRECT COMMAND) BX3 X0*X1 GET COMMAND BX2 X3-X6 CHECK IF CURRENT ENTRY IN TABLE ZR X2,CMP2 IF A MATCH SA1 A1+1 NEXT ENTRY IN TABLE EQ CMP1 CHECK NEXT COMMAND IN TABLE CMPA BSS 1 *L* DISPLAY BUFFER FWA REQUIRED BY *PGD* PGD HERE REMOTE BLOCK FROM *COMCDCP* TCOM SPACE 4,10 ** TCOM - TABLE OF COMMANDS. * *T 36/COMMAND,6/0,18/ADDR * * COMMAND = DISPLAY CODE COMMAND VALUE. * * ADDR = PROCESSING ROUTINE ADDRESS. TCOM BSS 0 VFD 42/0LEND,18/END CON 0 EFP SPACE 4,15 ** EFP - EXECUTE FUNCTION PROCESSOR. * * *EFP* JUMPS TO THE CORRECT FUNCTION PROCESSOR, BASED UPON * THE COMMAND ENTERED VIA THE *L* DISPLAY. THE FUNCTION * PROCESSING ROUTINE IS SET UP SO THAT IT RETURNS TO THE * ADDRESS *EFP* WOULD HAVE RETURNED TO. * * ENTRY (B5) = ADDRESS OF FUNCTION PROCESSOR. * (B5) = 0, IF PAGING COMMAND. * * EXIT TO FUNCTION PROCESSOR WITH RETURN ADDRESS SET. * * USES X - 2, 7. * A - 2, 7. EFP SUBR ENTRY/EXIT ZR B5,EFPX IF PAGING COMMAND SA2 EFPX SET RETURN ADDRESS BX7 X2 SA7 B5 JP B5+1 JUMP TO SUBROUTINE ERR SPACE 4,10 ** ERR - ERROR PROCESSOR. * * *ERR* ISSUES AN ERROR MESSAGE TO THE USER AND SYSTEM * DAYFILE AND THEN ABORTS THE UTILITY. * * ENTRY (X2) = ADDRESS OF ERROR MESSAGE. * * EXIT MESSAGE ISSUED IN SYSTEM AND USER DAYFILE. * * MACROS ABORT, MESSAGE. ERR BSS 0 ENTRY MESSAGE X2,0,R ABORT FDB SPACE 4,20 ** FDB - FORMAT DISPLAY BUFFER. * * ENTRY (X1) = FWA BUFFER TO FORMAT. * (X2) = 0, IF FORMATTING FOR *L* DISPLAY. * = FET ADDRESS OF OUTPUT FILE IF FOR PRINTER. * (X5) = (PADT) ENTRY FOR PAGE TO REFORMAT. * (X6) = LWA BUFFER TO FORMAT. * (B2) = *L* DISPLAY MESSAGE INDEX. * * EXIT (LBUF) = FWA FORMATTED *L* DISPLAY BUFFER. * * USES X - 3. * B - 2, 3, 4, 6. * * CALLS FLB. FDB SUBR ENTRY/EXIT * SET UP PARAMETERS FOR *FLB*. SX3 B1+ *C* DISPLAY FORMAT SB2 LBUF FWA TO PLACE FORMATTED DATA SB6 LBUF+LBUFL LWA+1 OF BUFFER TO RECEIVE CONVERTED DATA NZ X2,FDB1 IF FORMATTING FOR PRINTER SB3 XCDT SET X-COORDINATE FOR *L* DISPLAY SB4 YCDT SET Y-COORDINATE FOR *L* DISPLAY FDB1 RJ FLB FORMAT DATA TO BE OUTPUT EQ FDBX RETURN GSD SPACE 4,10 ** GSD - GET *SCT* DATA. * * *GSD* UPDATES THE SERVICE CLASS CONTROL TABLE TEMPLATES. * * ENTRY (WBUF) = ADDRESS OF FIRST *SCT* ENTRY. * * CALLS WOS, WPO. * * MACROS SYSTEM. GSD SUBR ENTRY/EXIT SYSTEM SFM,R,SFMB,RSDF*100B RETURN SYSTEM DATA RJ WOS WRITE ORIGIN-S SERVICE CLASSES RJ WPO WRITE PRIORITY ORDERED SERICE CLASSES EQ GSDX RETURN IDT SPACE 4,15 ** IDT - INITIALIZE DISPLAY TEMPLATES. * * *IDT* BLANK FILLS THE SERVICE CLASS DATA AREAS OF THE *L* * DISPLAY TEMPLATES. * * EXIT SERVICE CLASS DATA AREAS REINITIALIZED. * * USES X - 5. * A - 5. * * MACROS MOVE. IDT SUBR ENTRY/EXIT SA5 TJOS-1 TABLE OF JOB ORIGIN SERVICE CLASSES IDT1 SA5 A5+1 GET NEXT ENTRY FROM TABLE ZR X5,IDTX IF END OF TABLE MOVE 23,IDTA,X5 RESET TEMPLATE DATA AREA EQ IDT1 RESET NEXT SERVICE CLASS AREA IDTA BSS 0 TO RESET SERVICE CLASS DATA AREAS DATA 50H DATA 60H DATA 60H DATA 60H ILD SPACE 4,15 ** ILD - INPUT *L* DISPLAY. * * *ILD* WILL ROLLOUT UNTIL A COMMAND IS ENTERED VIA THE *L* * DISPLAY. IF NO COMMAND HAS BEEN ENTERED AFTER THE * SPECIFIED ROLLOUT TIME, THE DISPLAY IS REBUILT TO REFLECT * THE CURRENT STATE OF THE SYSTEM. * * USES X - 0, 1, 2. * A - 1. * B - 2, 3. * * CALLS GSD, OLD. * * MACROS DSDINP, ROLLOUT. ILD SUBR ENTRY/EXIT ILD1 DSDINP IPW REQUEST INPUT FROM OPERATOR SA1 IPW MX0 -12 BX1 -X0*X1 AX1 1 IGNORE COMPLETION BIT SX2 X1-CNCI SB3 X1 NZ X2,ILDX IF COMMAND ENTERED ROLLOUT ROLB WAIT FOR *L* DISPLAY INPUT RJ OLD OUTPUT *L* DISPLAY EQ ILD1 CHECK *L* DISPLAY INPUT OLD SPACE 4,15 ** OLD - OUTPUT *L* DISPLAY DATA. * * *OLD* OUTPUTS THE DATA IN THE *L* DISPLAY BUFFER, THE * OPERATOR INPUT AND THE ERROR MESSAGE, IF ANY, TO THE * OPERATOR CONSOLE *L* DISPLAY. * * ENTRY (EMOR) = *L* DISPLAY MESSAGE INDEX. * (CMPB) = INDEX INTO *PADT*. * * USES X - 1, 2, 3, 5, 6. * A - 1, 5. * * CALLS FDB, GSD, IDT, ZTB. * * MACROS DSDOUT, MOVE. OLD SUBR ENTRY/EXIT RJ IDT INITIALIZE DISPLAY TEMPLATES RJ GSD GET *SCT* DATA * SET OPERATOR INPUT AND ERROR MESSAGE IN BUFFER. SA1 CPAG GET INDEX OF PAGE TO DISPLAY SA5 X1+LDPT SA3 EMOR GET MESSAGE ORDINAL SX3 TMLD+X3 GET MESSAGE FOR *L* DISPLAY LX5 -18 RIGHT JUSTIFY MESSAGE BUFFER ADDRESS MOVE 3,X3,X5 SET MESSAGE IN BUFFER SB2 LCOMU-1 OPERATOR INPUT LINE LENGTH SA1 IBUF FIRST WORD OF OPERATOR INPUT OLD1 ZR B2,OLD2 IF ALL WORDS CONVERTED RJ ZTB CONVERT ALL ZERO BYTES TO BLANKS SA6 A1 REPLACE IN *IBUF* SB2 B2-B1 DECREMENT NUMBER OF WORDS TO CONVERT SA1 A1+1 NEXT WORD IN *IBUF* EQ OLD1 CONVERT NEXT WORD OLD2 SX3 IBUF GET OPERATOR INPUT LX5 -18 RIGHT JUSTIFY INPUT BUFFER ADDRESS MOVE 6,X3,X5 SET OPERATOR INPUT IN BUFFER * FORMAT AND OUTPUT *L* DISPLAY BUFFER. SX2 B0+ INDICATE *L* DISPLAY FOR *FDB* SA1 CPAG GET FWA BUFFER TO FORMAT SA1 X1+LDPT SX6 X1+SDTAL-1 LWA BUFFER TO FORMAT RJ FDB FORMAT *L* DISPLAY BUFFER DSDOUT LFWA DISPLAY *L* DISPLAY BUFFER EQ OLDX RETURN WOS SPACE 4,15 ** WOS - WRITE ORIGINS-S SERVICE CLASS(ES). * * *WOS* WRITES THE ORIGIN-S SERVICE CLASSES TO THE * APPROPRIATE AREAS IN THE *L* DISPLAY TEMPLATES. * * ENTRY (WBUF) = ADDRESS OF FIRST *SCT* ENTRY. * * EXIT SERVICE CLASS DATA SET IN TEMPLATES. * * USES X - ALL. * A - 1, 2, 3, 6, 7. * B - 2, 3, 4, 5. WOS SUBR ENTRY/EXIT * INITIALIZE FOR PROCESSING LOOP. SB2 TJOS FWA OF WORD TO FILL IN TEMPLATE SB3 NSPL NUMBER OF SERVICE CLASSES PER LINE SA1 TSCT-1 FWA-1 OF SERVICE CLASS TABLE SA2 B2 SA2 X2 GET FIRST TEMPLATE WORD SA3 WBUF FWA OF *SCT* DATA BUFFER MX0 -36 BX3 -X0*X3 SX6 B1+ USED TO TOGGLE WRITE WORD FLAG SX5 B0+ CLEAR WRITE WORD FLAG * MAIN PROCESSING LOOP. WOS1 SA1 A1+B1 GET NEXT ENTRY IN SERVICE CLASS TABLE ZR X1,WOS2 IF END OF TABLE * CHECK FOR MATCH WITH TABLE ENTRY. BX4 -X0*X1 GET SERVICE CLASS MASK BX4 X3*X4 ZR X4,WOS1 IF NOT A MATCH, CHECK NEXT ENTRY IN TABLE * PROCESS SERVICE CLASS MATCH. MX0 12 GET SERVICE CLASS MNEMONIC BX4 X0*X1 BX2 -X0*X2 CLEAR TWO CHARACTERS FOR SERVICE CLASS MX0 -36 BX2 X4+X2 SET SERVICE CLASS INTO WORD LX2 30 BX5 X6-X5 TOGGLE WRITE WORD FLAG SB3 B3-1 NZ X5,WOS3 IF WRITE WORD FLAG IS SET ZR B3,WOS3 IF END OF LINE EQ WOS1 LOOP FOR NEXT SERVICE CLASS * PROCESS END OF SERVICE CLASS TABLE. WOS2 SX5 B1+ SET WRITE WORD FLAG * WRITE WORD IN TEMPLATE. WOS3 SB5 B3-NSPL+1 ZR B5,WOS4 IF ONLY ONE SERVICE CLASS THIS LINE SX4 B3 BX4 X5*X4 NZ X4,WOS4 IF JUSTIFICATION NOT NEEDED LX2 30 WOS4 BX7 X2 SA7 A2 SET WORD IN TEMPLATE ZR X1,WOS6 IF END OF THIS ORIGIN TYPE * CHECK NEXT SERVICE CLASS FOR THIS ORIGIN TYPE. ZR B3,WOS5 IF END OF LINE SA2 A2+1 SET NEXT WORD IN TEMPLATE EQ WOS1 LOOP FOR NEXT SERVICE CLASS * RESET FOR NEXT LINE IN TEMPLATE. WOS5 SA2 A2+1 GET FIRST WORD NEXT LINE IN TEMPLATE SB3 NSPL EQ WOS1 LOOP FOR NEXT SERVICE CLASS * PROCESS END OF THIS ORIGIN TYPE. WOS6 SB2 B2+B1 GET FWA OF NEXT LINE IN TEMPLATE SA2 B2 ZR X2,WOS7 IF END OF DATA SA2 X2 GET FIRST WORD NEXT LINE IN TEMPLATE BX5 X5-X5 CLEAR WRITE FLAG SB3 NSPL SA1 TSCT-1 SA3 A3+1 GET NEXT WORD IN *SCT* BUFFER EQ WOS1 LOOP FOR NEXT SERVICE CLASS * ADD LINE TERMINATORS TO ALL SERVICE CLASS DATA LINES. WOS7 MX0 48 MASK FOR ZERO BYTE TERMINATOR SB3 TJOS-1 INITIALIZE AREAS TO PROCESS WOS8 SB3 B3+B1 GET FWA OF AREA TO PROCESS SA2 B3 ZR X2,WOSX IF ALL AREAS PROCESSED SA2 X2-1 SB4 4 NUMBER OF DATA LINES PER AREA WOS9 SA2 A2+6 LAST WORD IN LINE BX6 X0*X2 ADD IN ZERO BYTE TERMINATOR SA6 A2 REPLACE IN BUFFER SB4 B4-1 COUNT ONE LINE NZ B4,WOS9 IF MORE LINES IN THIS AREA EQ WOS8 PROCESS NEXT SERVICE CLASS AREA TJOS SPACE 4,10 ** TJOS - TABLE OF JOB ORIGIN SERVICE CLASS LIST. * *T 42/0,18/SCOA * * (SCOA) = FWA OF SERVICE CLASS OUTPUT AREA. TJOS BSS 0 VFD 42/0,18/SDSO VFD 42/0,18/SDBO VFD 42/0,18/SDRB VFD 42/0,18/SDIO CON 0 END OF TABLE WPO SPACE 4,20 ** WPO - WRITE PRIORITY ORDERED SERVICE CLASSES. * * *WPO* WRITES THE PRIORITY ORDERED SERVICE CLASSES TO THE * APPROPRIATE AREAS IN THE *L* DISPLAY TEMPLATES. * * ENTRY TPOS = TABLE OF PRIORITY ORDERED SERVICE CLASSES IN * TEMPLATES. * (WBUF) = ADDRESS OF FIRST *SCT* ENTRY. * * EXIT PRIORITY ORDERED SERVICE CLASSES SET IN TEMPLATES. * * USES X - 0, 1, 3, 4, 5, 6, 7. * A - 1, 3, 5, 7. * B - 2, 3. * * MACROS MOVE. WPO SUBR ENTRY/EXIT MOVE PBUFL,WPOA,PBUF RE-INITIALIZE *PBUF* SB2 NPXW NUMBER OF SERVCE CLASSES PER WORD SB3 NUMPX NUMBER OF PRIORITY ORDERED SERVICE CLASSES SA1 PBUF FWA OF TEMPORARY BUILD BUFFER SA3 WBUF+PLSC FWA OF PRIORITY ORDERED SERVICE CLASS DATA MX0 12 MASK FOR SERVICE CLASSES SX6 B1 USED TO TOGGLE WRITE FLAG SX5 B0+ CLEAR WRITE FLAG * PROCESS ALL PRIORITY ORDERED SERVICE CLASSES. WPO1 BX4 X0*X3 GET NEXT SERVICE CLASS SB3 B3-B1 COUNT ONE SERVICE CLASS SB2 B2-1 COUNT ONE SERVICE CLASS THIS LINE LX3 12 BX5 X6-X5 TOGGLE WRITE FLAG ZR X4,WPO2 IF NO SERVICE CLASS PRESENT BX1 -X0*X1 CLEAR 2 CHARACTERS BX1 X1+X4 SET SERVICE CLASS WPO2 LX1 30 NZ B2,WPO3 IF MORE SERVCE CLASSES THIS LINE SB2 NPXW SA3 A3+1 GET MORE SERVCE CLASSES FROM SYSTEM BUFFER WPO3 NZ X5,WPO4 IF WRITE FLAG SET NZ B3,WPO1 IF MORE SERVICE CLASSES * WRITE CURRENT WORD TO BUILD BUFFER. WPO4 NZ B3,WPO5 IF NOT END OF SERVICE CLASSES LX1 30 BX7 X1 WRITE LAST SERVICE CLASS ENTRY SA7 A1+ EQ WPO6 SET SERVICE CLASSES IN TEMPLATES WPO5 BX7 X1 WRITE CURRENT WORD TO BUILD BUFFER SA7 A1+ SA1 A1+B1 NEXT WORD IN BUILD BUFFER EQ WPO1 LOOP FOR NEXT SERVICE CLASS * SET PRIORITY ORDERED SERVICE CLASSES INTO TEMPLATES. WPO6 SA5 TPOS TABLE OF TEMPLATE ADDRESSES WPO7 ZR X5,WPOX IF NO MORE PAGES IN TEMPLATE MOVE PBUFL,PBUF,X5 PUT DATA INTO TEMPLATE SA5 A5+B1 NEXT TEMPLATE ADDRESS EQ WPO7 LOOP FOR NEXT TEMPLATE PAGE WPOA DATA 50H TPOS SPACE 4,10 ** TPOS - TABLE OF PRIORITY ORDERED SERVICE CLASS ORIGINS. * *T 42/0,18/ADDR * * (ADDR) = ADDRESS OF DATA OUTPUT AREA ON TEMPLATE PAGE. TPOS BSS 0 VFD 42/0,18/SDPA VFD 42/0,18/SDPB CON 0 END OF TABLE SPACE 4,20 * COMMON DECKS. *CALL COMCCIO *CALL COMCCOD *CALL COMCCPM *CALL COMCFLD *CALL COMCLFM *CALL COMCMVE *CALL COMCPOP *CALL COMCSFN *CALL COMCSYS *CALL COMCUSB *CALL COMCWOD *CALL COMCWTC *CALL COMCWTO *CALL COMCWTW *CALL COMCZTB TITLE BUFFER AREA. USE BUFFERS SDTA SPACE 4,5 ** SERVICE CLASS DISPLAY TEMPLATES. SDTH BSS 0 HEADER FOR PRINT OPTION DATA 50HSCTD - SERVICE CLASS CONTROL TABLE DISPLAY SDAT BSSZ 1 DATE STAMP STIM BSSZ 1 TIME STAMP CON 0 SDTA BSS 0 PAGE 1 DATA DATA 50HSERVICE CLASS CONTROL TABLE DISPLAY PAG DATA 8CE 1 OF 2 DATA C* * DATA 58C SYSTEM ORIGIN SERVICE CLASSES DATA C* * SDSO DATA 60H DATA 60H DATA 60H DATA 60H DATA C* * DATA 58C LOCAL BATCH ORIGIN SERVICE CLASSES DATA C* * SDBO DATA 60H DATA 60H DATA 60H DATA 60H DATA C* * DATA 58C PRIORITY ORDERED SERVICE CLASSES DATA C* * DATA 58C P0 P1 P2 P3 P4 P5 P6 P7 SDPA DATA 50C SDMP EQU *-SDTA MESSAGE LINE POSITION IN TEMPLATE DATA 28C SDIP EQU *-SDTA INPUT LINE POSITION IN TEMPLATE DATA 50C SDTAL EQU *-SDTA LENGTH OF HEADER BUFFER SDTAE EQU *-1 END OF PAGE 1 SDTB BSS 0 PAGE 2 DATA DATA 50HSERVICE CLASS CONTROL TABLE DISPLAY PAG DATA 8CE 2 OF 2 DATA C* * DATA 58C REMOTE BATCH ORIGIN TYPE SERVICE CLASSES DATA C* * SDRB DATA 60H DATA 60H DATA 60H DATA 60H DATA C* * DATA 58C INTERACTIVE ORIGIN SERVICE CLASSES DATA C* * SDIO DATA 60H DATA 60H DATA 60H DATA 60H DATA C* * DATA 58C PRIORITY ORDERED SERVICE CLASSES DATA C* * DATA 58C P0 P1 P2 P3 P4 P5 P6 P7 SDPB DATA 50C DATA 28C DATA 50C SDTBL EQU *-SDTB LENGTH OF PAGE 2 TEMPLATE SDTBE EQU *-1 END OF PAGE 2 ERRNZ SDTBL-SDTAL TEMPLATES NOT SAME LENGTH IPW BSS 0 INPUT BUFFER FOR *L* DISPLAY VFD 12/6,1/0,1/0,46/0 IBUF BSS LCOMU INPUT BUFFER * SCRATCH BUFFER. PBUF DATA 50H PBUFL EQU *-PBUF *PBUF* LENGTH * *L* DISPLAY BUFFER. LFWA VFD 12/LBUFL,1/0,1/0,46/0 *L* DISPLAY CONTROL WORD LBUF EQU * *L* DISPLAY BUFFER STARTS HERE LBUFE EQU LBUF+LBUFL END OF *L* DISPLAY BUFFER ERRNG LFWA-SDTBE TEMPLATE OVERFLOWS *L* DISPLAY BUFFER ERRNG LBUFL-SDTAL TEMPLATE IS LARGER THAN *LBUF* * OUTPUT FILE BUFFER. OBUF EQU LBUF OUTPUT BUFFER OVERLAYS *L* DISPLAY BUFFER OBUFE EQU OBUF+SDTAE-SDTH END OF OUTPUT BUFFER * *SFM* WORKING BUFFER. .WBUF MAX LBUFE,OBUFE WBUF EQU .WBUF *WBUF* FOLLOWS *OBUF* AND *LBUF* WBUFE EQU WBUF+SCTL END OF *WBUF* PRS TITLE PRESET. ** PRS - PRESET ROUTINE. * * ENTRY CONTROL STATEMENT ARGUMENT LIST AT RA+2 (ARGR) * IN OPERATING SYSTEM FORMAT. * * EXIT (B1) = 1. * (PFLG) = 1, IF PRINT FILE REQUESTED. * (LFLG) = 1, IF *L* DISPLAY REQUESTED. * * ERROR TO *ERR*, IF ARGUMENT ERROR OR INCORRECT USER ACCESS. * (X2) = FWA ERROR MESSAGE. * * USES X - 0, 1, 2, 3, 4, 6. * A - 1, 2, 3, 6. * B - 1, 2, 3, 4, 5, 6, 7. * * CALLS ARM, CPA, FNB, USB. * * MACROS ARG, CLOCK, DATE, GETSPS, SUBR. * SET DATE AND TIME IN HEADER. PRS SUBR ENTRY/EXIT SB1 1 SYSTEM COMMUNICATION (B1)=1 DATE SDAT CLOCK STIM GETSPS SYOF CHECK FOR SYSTEM ORIGIN PRIVILEGES SA1 SYOF ZR X1,PRS1 IF SYSTEM ORIGIN PRIVILEGES SX2 ERIU *INCORRECT USER ACCESS.* EQ ERR ABORT * PROCESS ARGUMENT LIST. PRS1 SB2 CCDR UNPACK CONTROL CARD RJ USB SA1 A6 ASSURE TERMINATOR CHARACTER SX6 1R. SA6 X1+B1 SA2 PRSB SET SEPARATOR MASK SB2 60 SET MAXIMUM NON-DELIMITER DISPLAY CODE SB7 PRS9 SET EXIT FOR TERMINATOR CHARACTER RJ FNB FIND NON-BLANK CHARACTER * SKIP PROGRAM NAME. SB7 PRS6 SET EXIT FOR TERMINATOR CHARACTER PRS4 RJ FNB FIND NON-BLANK CHARACTER SB4 B5-B2 LX4 X2,B5 PL B4,PRS5 IF SEPARATOR CHARACTER PL X4,PRS4 IF NOT SEPARATOR CHARACTER PRS5 SB3 TARG FWA ARGUMENT EQUIVALENCE TABLE SB2 TARGL LENGTH ARGUMENT TABLE SB4 PRSA ADDRESS TO PLACE DATA RJ CPA CONVERT POSITIONAL ARGUMENTS NG B5,PRS9 IF ARGUMENT ERROR PL X1,PRS6 IF NO ARGUMENTS PROCESSED SX6 B5+ SET LWA OF ARGUMENTS SA6 USBC SB6 PRSA FWA OF ARGUMENTS RJ ARM PROCESS ARGUMENTS NZ X1,PRS9 IF ERROR * DETERMINE LIST OPTIONS. PRS6 SA1 LO GET CHARACTER FROM LIST OPTION SA2 TLOP-1 MX0 6 SB4 A2+ SAVE ADDRESS OF ARGUMENT TABLE PRS7 BX3 X0*X1 PROCESS NEXT CHARACTER FROM LIST OPTION ZR X3,PRSX IF ALL OPTIONS PROCESSED PRS8 SA2 A2+B1 SEARCH ARGUMENT TABLE ZR X2,PRS9 IF LIST OPTION NOT DEFINED IN TABLE BX4 X0*X2 BX4 X4-X3 NZ X4,PRS8 IF MATCH NOT FOUND SX6 B1 SET FLAG FOR THIS OPTION SA6 X2 SX3 A2-TLOP LX1 6 SA2 B4 INITIALIZE TABLE ADDRESS NZ X3,PRS7 IF NOT LO=D MX4 -12 SA3 JOPR CHECK FOR SYSTEM ORIGIN LX3 0-24 BX3 -X4*X3 SX3 X3-SYOT ZR X3,PRS7 IF SYSTEM ORIGIN JOB SX2 ERIU *INCORRECT USER ACCESS.* EQ ERR ABORT PRS9 SX2 ERAR *ARGUMENT ERROR.* EQ ERR ABORT PRSA BSS 100 PRSB CON 40000000000033127777B SEPARATOR MASK ** ASSUMED VALUES FOR LIST OPTIONS. LO CON 0LD SELECTED LIST OPTION (DEFAULT = *D*) SPACE 4,10 ** ARGUMENT EQUIVALENCE TABLE. TARG BSS 0 L ARG O,O,0,0 OUTPUT FILE NAME LO ARG LO,LO,0,0 LIST OPTIONS ARG END OF ARGUMENT TABLE TARGL EQU *-TARG-1 LENGTH OF ARGUMENT TABLE TLOP SPACE 4,15 ** TLOP - TABLE OF LIST OPTIONS. * *T, 42/ OPTION,18/ ADDR * * (ADDR) WILL BE SET NON-ZERO IN PRS IF OPTION IS SELECTED. TLOP BSS 0 VFD 42/0LD,18/LFLG SELECT *L* DISPLAY VFD 42/0LL,18/PFLG SELECT LINE PRINTER CON 0 END OF TABLE FNB SPACE 4,15 ** FNB - FIND NON-BLANK CHARACTER. * * ENTRY (B6) = NEXT CHARACTER ADDRESS. * (B7) = EXIT ADDRESS, IF TERMINATOR ENCOUNTERED. * * EXIT (X1) = (B5) = NEXT NON-BLANK CHARACTER. * (B6) = NEXT CHARACTER ADDRESS (UPDATED). * EXIT IS MADE TO (B7), IF TERMINATOR ENCOUNTERED. * * USES X - 1, 4. * A - 1. * B - 1, 5, 6, 7. * * CALLS ARM, CPA, FNB, USB. * * MACROS CLOCK, DATE, GETSPS, SUBR. FNB SUBR ENTRY/EXIT FNB1 SA1 B6 GET NEXT CHARACTER SB6 B6+B1 SX4 X1-1R ZR X4,FNB1 IF BLANK CHARACTER SB5 X1+ SX4 X1-1R. ZR X4,FNB2 IF TERMINATOR CHARACTER SX4 X1-1R) NZ X4,FNBX IF NOT TERMINATOR CHARACTER, RETURN FNB2 JP B7 TERMINATOR CHARACTER TITLE PRESET COMMON DECKS. *CALL COMCARM *CALL COMCCPA SPACE 4,5 SCTDE EQU * END OF PROGRAM .RFL= MAX SCTDE,WBUFE RFL= EQU .RFL= SPACE 4,5 END