IDENT DDFILE,FETS,DDFILE ABS SST SYSCOM B1 ENTRY DDFILE ENTRY MFL= ENTRY SSJ= TITLE DDFILE - DDF UTILITY FUNCTION PROCESSOR. *COMMENT DDFILE - DDF UTILITY FUNCTION PROCESSOR. COMMENT COPYRIGHT CONTROL DATA SYSTEMS INC. 1992. DDF SPACE 4,10 *** DDFILE - *DDF* UTILITY FUNCTION PROCESSOR. * * J. J. EIKUM. 74/04/06. DDF SPACE 4,10 *** *DDFILE* PROCESSES FUNCTIONS RELATING TO THE LISTING * FILE FOR *DDF*. *DDFILE* IS LOADED AUTOMATICALLY BY *DDF*. SPACE 4,10,15 *** DAYFILE MESSAGES. * * * LISTING FILE DOES NOT EXIST.* = THERE WAS NO LISTING * FILE TO BE RELEASED. DDF SPACE 4,10 * COMMON DECKS. *CALL COMCMAC *CALL COMSDSP *CALL COMSPRD *CALL COMSSSD *CALL COMSSSJ DDF SPACE 4,10 **** ASSEMBLY CONSTANTS. DBUFL EQU 102B OBUFL EQU 1001B D EQU 5 CPU STATUS WORD **** DDF SPACE 4,10 ** FETS. ORG 101B FETS BSS 0 O BSS 0 OUTPUT FILEB OBUF,OBUFL,(FET=7),(EPR) SPACE 4,10 * *SSJ=* SPECIAL ENTRY POINT. SSJ= BSS 0 SPECIAL SYSTEM JOB PARAMETER BLOCK VFD 36/0,12/LSCS,12/IRSI BSSZ SSJL-1 DDF TITLE MAIN PROGRAM. ** DDF - MAIN PROGRAM. DDF SX6 3RDDF WAIT FOR REQUEST LX6 42 SA6 D RECALL A6 SA1 D GET FUNCTION NUMBER SX2 X1 AX2 1 SA3 TFCN+X2 SB2 X3 JP B2 JUMP TO PROCESSOR TFCN SPACE 4,10 ** TFCN - TABLE OF FUNCTION PROCESSORS. TFCN BSS 0 FUNCTION PROCESSORS. LOC 0 CON END END PROGRAM CON PRT PRINT CON COF CHANGE LISTING FILE NAME CON OUT RELEASE LISTING FILE TO QUEUE CON REW REWIND LISTING FILE CON SKP SKIP TO EOI CON RET RETURN FILE CON SID SETID LOC *O DDF TITLE FUNCTION PROCESSORS. END SPACE 4,10 ** FUNCTION 0 - END PROGRAM. END RJ CMF COMPLETE FILE ENDRUN PRT SPACE 4,10 ** FUNCTION 1 - PRINT. * * ENTRY (DBUF) = 12/EQ,12/TK,12/SC,24/CONTROL BYTES. * (DBUF+1) = 12/(TRT),12/TRACK BITS,18/ ,18/ADDRESS. * (DBUF+2 - DBUF+65) = CONTENTS OF SECTOR. * OUTPUT PAGE HEADER. PRT CLOCK PRTF TIME DATE PRTE DATE SA5 DBUF MX0 -12 LX5 12 BX1 -X0*X5 RJ COD CONVERT EST ORDINAL BX7 X4 LX5 12 LX7 9*6 BX1 -X0*X5 SA7 PRTB RJ COD TRACK SA1 PRTC MX2 5*6 BX4 X2*X1 BX3 -X2*X6 LX5 12 BX6 X3+X4 SA6 A1 BX1 -X0*X5 RJ COD SECTOR MX1 9*6 SX2 1R. LX6 6 BX3 X1*X6 BX6 X3+X2 LX6 5*6 LX5 24 MX0 -24 SA6 PRTD BX1 -X0*X5 RJ WOD LINKAGE BYTES MX0 -24 BX1 -X0*X7 SX2 2R LX7 6*6 BX3 -X0*X7 LX2 4*6 LX3 6*6 BX4 X1+X2 SA1 DBUF BX6 X4+X3 MX0 -12 SA6 PRTH BX2 -X0*X1 AX1 12 SA5 =3R BX1 -X0*X1 SA4 PRTI NZ X1,PRT2 IF NOT EOF OR EOI SX7 B0+ NZ X2,PRT1 IF NOT EOI SX5 3REOI EQ PRT3 PRINT EOI PRT1 SX5 3REOF EQ PRT3 PRINT EOF PRT2 SX3 X2-100B SX7 X2+ ZR X3,PRT3 IF NOT EOR SX5 3REOR PRT3 MX0 7*6 SA7 PRTN SAVE WORD COUNT BX2 X0*X4 BX6 X2+X5 SA6 A4 WRITEC O,PRTA WRITEC O,PRTJ WRITEC O,PRTG WRITEC O,PRTJ WRITEC O,PRTJ * OUTPUT ONE CM WORD. SA0 B0+ PRT4 SX1 A0 RJ COD CM WORD NUMBER SX1 5 SX2 A0 IX3 X1*X2 SB2 X6+ SX1 X3+2 RJ WOD BYTE NUMBER MX1 -4*6 MX3 -3*6 BX4 -X1*X7 SX2 B2+ SA1 PRTK BX5 -X3*X2 LX4 6 LX5 7*6 IX7 X4+X1 BX6 X5+X7 WRITEO O PRINT WORD AND BYTE NUMBERS SA1 A0+DBUF+2 OUTPUT CONTENTS OF NEXT CM WORD RJ WOD CONVERT WORD MX1 4*6 BX0 X7 BX2 X1*X6 LX6 4*6 BX3 X1*X6 SA1 PRTL LX2 9*6 LX3 4*6 BX4 X2+X3 BX5 X6 BX6 X4+X1 WRITEO O LX5 4*6 MX1 2*6 BX3 X1*X0 BX2 X1*X5 LX3 8*6 LX0 2*6 MX1 4*6 BX4 X2+X3 BX2 X1*X0 SA1 PRTL LX4 9*6 LX2 4*6 BX5 X2+X4 BX6 X5+X1 WRITEO O LX0 4*6 MX2 4*6 BX1 X2*X0 RJ ZTB BLANK FILL SA1 PRTN SX2 A0 LX6 9*6 IX3 X2-X1 NZ X3,PRT5 IF NOT AT WORD COUNT MX2 30 SA1 PRTM BX3 X2*X6 BX6 X3+X1 PRT5 WRITEO O SA1 A0+DBUF+2 OUTPUT DISPLAY CODE RJ ZTB BLANK FILL WRITEO O * ADVANCE TO NEXT WORD. SA1 PRTO NZ X1,PRT6 IF JUST PRINTED SECOND HALF OF LINE SX7 40B SA2 =10H SA0 A0+40B SA7 A1 BX6 X2 WRITEO O SA2 =10H BX6 X2 WRITEO O EQ PRT4 LOOP TO PRINT SECOND HALF OF LINE PRT6 MX6 0 SA0 A0-40B+1 SA6 A1 WRITEO O TERMINATE LINE SX1 A0-40B ZR X1,PRT7 IF END OF BUFFER LX1 15 SX2 X1 NZ X2,PRT4 IF NO BLANK LINE NEEDED SX6 1R0 LX6 9*6 WRITEO O EQ PRT4 LOOP PRT7 SA0 B1 EQ DDF RETURN PRTA DATA 10H1 EST ORD. PRTB DATA 10H EE PRTC DATA 10HTRACK TTTT DATA 10H SECTOR PRTD DATA 10HNNNN. DATA 30H PRTE DATA 10H DATE PRTF DATA 10H TIME DATA 2C PRTG DATA 20H- LINKAGE BYTES = PRTH DATA 10HNNNN NNNN PRTI DATA 10H. EOI DATA 2C PRTJ VFD 12/2R- ,48/0 PRTK VFD 18/0,12/2R (,24/0,6/1R) PRTL VFD 6/1R ,24/0,6/1R ,24/0 PRTM VFD 30/0,30/5R##### PRTN CON 0 WORD COUNT PRTO CON 0 POINTER BIAS COF SPACE 4,10 ** FUNCTION 2 - CHANGE LISTING FILE NAME. * * ENTRY (DBUF) = 42/FILE NAME,18/0. COF RJ CMF FLUSH BUFFER IF NECCESSARY SA1 DBUF SX2 B1 BX6 X1+X2 SA6 O SET NEW FILE NAME EQ DDF RETURN OUT SPACE 4,10 ** FUNCTION 3 - RELEASE LISTING FILE TO QUEUE. OUT RJ CMF COMPLETE FILE SA5 O SAVE FET+0 STATUS O CHECK IF FILE EXISTS BX6 X5 MX3 -11 SA1 X2 SA6 X2 LX3 12-11 BX3 -X3*X1 ZR X3,OUT1 IF FILE DOES NOT EXIST MX6 42 BX6 X6*X1 SA6 OUTA SET FILE NAME IN *DSP* PARAMETER BLOCK ROUTE OUTA,R SA1 OUTA+1 CLEAR *TID* FLAG BIT SX3 FRTI BX6 -X3*X1 SA6 A1 EQ DDF RETURN OUT1 MESSAGE (=C* LISTING FILE DOES NOT EXIST.*),3,R EQ DDF RETURN OUTA VFD 42/0LOUTPUT,18/0 VFD 24/0,12/2HPR,6/0,18/FRDC+FRCS BSSZ 5 REW SPACE 4,10 ** FUNCTION 4 - REWIND LISTING FILE. REW RJ CMF COMPLETE FILE REWIND O EQ DDF RETURN SKP SPACE 4,10 ** FUNCTION 5 - SKIP TO EOI. SKP SB2 A0 NZ B2,DDF IF CURRENTLY WRITING ON FILE SKIPEI O EQ DDF RETURN RET SPACE 4,10 ** FUNCTION 6 - RETURN FILE. RET RJ CMF COMPLETE FILE RETURN O EQ DDF RETURN SID SPACE 4,10 ** FUNCTION 7 - SETID. * * ENTRY (DBUF) = ID. SID SA1 DBUF SA2 OUTA+1 SET *TID* FLAG BIT SX3 FRTI BX6 X2+X3 SA6 A2 BX6 X1 SET *TID* FIELD SA6 A6+B1 EQ DDF RETURN DDF TITLE SUBROUTINES. CMF SPACE 4,10 ** CMF - COMPLETE FILE. * * ENTRY (A0) .NE. 0 IF BUFFER FLUSH REQUIRED. * * EXIT (A0) = 0. * * USES B - 2. * * MACROS WRITER. CMF SUBR ENTRY/EXIT SB2 A0 ZR B2,CMFX IF WRITE NOT NEEDED WRITER O,R SA0 B0 EQ CMFX RETURN DDF SPACE 4,10 * COMMON DECKS. *CALL COMCCIO *CALL COMCCOD *CALL COMCLFM *CALL COMCSYS *CALL COMCWOD *CALL COMCWTC *CALL COMCWTO *CALL COMCWTW *CALL COMCZTB DDF SPACE 4,10 * BUFFERS. USE BUFFERS DBUF EQU * OBUF EQU DBUF+DBUFL EBUF EQU OBUF+OBUFL END OF BUFFERS MFL= EQU EBUF+8 MINIMUM MEMORY REQUIRED FOR PROGRAM PRS TITLE PRESET. PRS SPACE 4,10 ** PRS - PRESET. * * EXIT (RA+2) = POINTER TO OUTPUT FILE. * (RA+3) = POINTER TO *DBUF*. * (RA+4) = LWA+1 OF *DDFILE*. * (A0) = 0. DDFILE BSS 0 PRS SA1 O SET UP POINTERS SB1 1 MX2 42 SX3 A1 SX7 DBUF BX4 X2*X1 BX6 X4+X3 SA6 B1+B1 SA7 A6+B1 SX6 MFL= SA6 A7+B1 SA0 B0 DESELECT WRITE FLAG EQ DDF ENTER LOOP SPACE 4,10 END