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