IDENT DDF,DDF
PERIPH
BASE M
SST BFMS,FNSS,EQSS,FTSS,NSSS,GQSS,FASS,DTSS
TITLE DDF - DISPLAY DISK FILE.
*COMMENT DDF - DISPLAY DISK FILE.
COMMENT COPYRIGHT CONTROL DATA SYSTEMS INC. 1992.
DDF SPACE 4,10
*** DDF - DISPLAY DISK FILE.
*
* J. J. EIKUM. 73/03/13.
* J. J. EIKUM. 78/11/24.
* P. C. HIGGINS. 81/06/08.
* P. C. HIGGINS. 84/05/01.
* L. K. JACOBS. 84/10/01.
DDF SPACE 4,50
*** DDF PROVIDES THE CAPABILITY TO READ AND DISPLAY THE
* CONTENTS OF PHYSICAL DISK SECTORS. THE CONTENTS OF THE
* SECTOR CAN BE CHANGED AND THE SECTOR REWRITTEN.
*
* SEVERAL METHODS ARE PROVIDED TO SPECIFY THE DISK
* ADDRESS TO READ. THE ADDRESS CAN BE SPECIFIED EXPLICITLY
* BY ENTERING THE EST ORDINAL, TRACK, AND SECTOR, OR AN FNT,
* EJT, OR QFT ORDINAL CAN BE SPECIFIED AND THE BEGINNING OR
* CURRENT POSITION WILL BE DISPLAYED. SEVERAL SCRATCH AREAS
* ARE AVAILABLE TO STORE EST ORDINAL, TRACK, AND SECTOR
* WHILE READING OTHER LOCATIONS ON MASS STORAGE. RANDOM
* ADRESSING AND PERMANENT FILE REFERENCING COMMANDS ARE ALSO
* PROVIDED. DDF PROVIDES THE CAPABILITY OF PRINTING THE
* INFORMATION DISPLAYED.
*
* WARNING. SINCE THE MASS STORAGE I/O IS DONE BY DDF
* ITSELF, THE DISPLAY MAY BLINK DURING THE ACTUAL TRANSFER,
* ESPECIALLY IN A BUSY SYSTEM. IF THE DISK CHANNEL HANGS FOR
* ANY REASON, THE CONSOLE WILL BLANK AND THE KEYBOARD WILL BE
* INOPERABLE.
*
* WARNING. SOME OF THE DDF COMMANDS, THE ONES THAT
* REQUIRE THE KEYBOARD TO BE UNLOCKED, CAN MAKE CHANGES THAT
* MAY CAUSE THE SYSTEM TO HANG OR PERMANENT FILES TO BE LOST.
* THESE BAD EFFECTS MAY NOT OCCUR UNTIL SOME TIME AFTER THE
* CHANGES HAVE BEEN MADE AND AT THAT TIME IT MAY BE IMPOSSIBLE
* TO UNDERSTAND WHAT HAPPENED. ALSO, IT IS REMOTELY POSSIBLE
* TO BLANK THE CONSOLE WHILE USING THESE COMMANDS. IT IS
* IMPORTANT THAT THE DDF USER UNDERSTAND WHAT IS BEING DONE
* BEFORE USING THESE COMMANDS.
DDF SPACE 4,10
*** DAYFILE MESSAGES.
*
*
* * INCORRECT USER ACCESS.* = *SECURITY-UNLOCK* WAS NOT SET
* ON A SECURED SYSTEM.
DDF SPACE 4,10
*** OPERATOR MESSAGES.
*
*
* THE FOLLOWING MESSAGES MAY APPEAR AT THE CONTROL POINT.
*
* * WAITING FOR MEMORY.* = DDF IS WAITING FOR CM TO STORE
* THE DISPLAY AND COMMAND PROCESSORS.
* *READING EQXXX TP=XXXX CT=XXXX* = SHOWS STATUS OF CHECKOUT
* DURING A PACK RECOVERY.
*
*
* ABOVE THE COMMAND LINE, THE FOLLOWING MESSAGES MAY APPEAR.
*
* *FORMAT ERROR.* = A FORMAT ERROR WAS DETECTED DURING
* TRANSLATION OF THE ENTRY.
* *INCORRECT ENTRY.* = THE COMMAND WAS NOT LEGAL.
* *INCORRECT EQUIPMENT.* = THE EST ORDINAL SPECIFIED EITHER WAS
* NOT MASS STORAGE OR WAS A NULL EQUIPMENT.
* *INCORRECT PARAMETER.* = THE PARAMETER IN THE ENTRY WAS
* INCORRECT OR TOO LARGE.
* *REPEAT ENTRY.* = THE ENTRY WILL NOT BE CLEARED AFTER
* EXECUTION.
* *SYSTEM BUSY.* = DDF IS WAITING FOR THE SYSTEM TO PROCESS
* A REQUEST.
* * BYTE NNNN.* = THE DATA SPECIFIED IS IN BYTE NNNN.
* * LENGTH = NNNNNNNNB.* = THE *SKIPEI* COMMAND HAS SKIPPED
* NNNNNNNN (OCTAL) SECTORS.
*
* THE FOLLOWING MESSAGES TELL WHY THE *SCAN* COMMAND STOPPED.
* *LINKAGE BYTE BAD.*
* *SYSTEM SECTOR LINKAGE BYTE BAD.*
* *TRACK LINK IN WRONG SECTOR.*
* *WORD COUNT TOO BIG.*
* *TRACK NOT RESERVED.*
*
* THE FOLLOWING MESSAGES MAY APPEAR DURING A PACK RECOVERY.
* *ERROR IN TRACK STATUS.*
* *END OF EQUIPMENT.*
* *SYSTEM SECTOR IN TRACK.*
* *NEXT TRACK IN USE.*
*
* SOME COMMANDS READ SEVERAL SECTORS. IF A DISK ERROR IS
* ENCOUNTERED WHILE PROCESSING THE COMMAND, PROCESSING STOPS
* AND THE ERROR CODE IS DISPLAYED ON THE LEFT SCREEN.
DDF SPACE 4,10
* COMMON DECKS.
*CALL COMDMAC
*CALL COMPMAC
*CALL COMSCPS
*CALL COMSEJT
*CALL COMSLFD
*CALL COMSPIM
*CALL COMSMSP
*CALL COMSMST
*CALL COMSPRD
*CALL COMSSSD
*CALL COMSZOL
DDF SPACE 4,10
** PROGRAMS CALLED.
*
* DDFILE - DDF UTILITY FUNCTION PROCESSOR.
* NOTE - (RA+2) = POINTER TO OUTPUT FILE.
* (RA+3) = POINTER TO *DBUF*.
* (RA+4) = LWA+1 OF *DDFILE*.
* (RA+5) = CPU STATUS WORD - USED TO RECEIVE FUNCTION
* CODE FROM *DDF*.
* THE ASSEMBLY CONSTANT *D* (=5) IS USED TO REFERENCE
* THESE LOCATIONS.
DDF SPACE 4,50
** DDF LOADING SEQUENCE.
*
* THE FOLLOWING SEQUENCE IS USED TO INITIALIZE *DDF*.
*
* A) UPON ENTRY *DDF* BRANCHES TO *PRS*.
* - CHECK FOR LEGAL USER.
* - LOAD *DDFILE*.
* - REQUEST FL FOR CM RESIDENT TABLES AND PROCESSOR
* OVERLAYS.
* - LOAD RIGHT SCREEN PROCESSOR OVERLAYS TO CM.
* B) *PRS* BRANCHES TO *LCP*.
* - LOAD AND PRESET EACH COMMAND PROCESSOR OVERLAY, AND
* LOAD COMMAND PROCESSORS TO CM.
* - WRITE TABLES TO CM.
* C) LOAD RESIDENT OVERLAY.
* - PRESET DIRECT CELLS AND CONSTANTS.
* - SET CHANNELS AND REQUEST DISPLAY.
* - SET EQUIPMENT PARAMETERS FOR DEFAULT FAMILY-S
* LABEL TRACK.
* - CLEAR END OF SECTOR BUFFER FOR NEATER DISPLAY.
* D) ENTER MAIN LOOP VIA THE READ SECTOR COMMAND PROCESSOR.
*
* DDF LOADING SEQUENCE DIAGRAM -
*
* ORIGINAL PROGRAM
*
* LOC PPFW(1100)----------------------------------------------
* DDF(MAIN LOOP)
* DLS(LEFT SCREEN DRIVER)
* DRS(RIGHT SCREEN DRIVER)
* LOC RSPLA---------------------------------------------------
* TABLES(TCEF,TCRO)
* LCP(LOAD COMMAND PROCESSORS)>>>>>>>>>V>>>>>V>>>>>V>>>>>V
* LOC OVL----------------------------------V-----V-----V V
* PRS 8XB 8XC 8XD V
* RIGHT SCREEN PROCESSORS . . . V
* LOC RESLA(AFTER LONGEST-----------------.-----.-----.-----V
* SINGLE RIGHT SCREEN . . . 8XA
* PROCESSOR) . . . .
* . . . .
* . . . .
* LOC CPLA---------------------------------.-----.-----.-----.
* . . . PRR
* . . . .
* . . . .
*
*
* PP STRUCTURE AFTER LOAD COMPLETE, DURING EXECUTION -
*
* LOC PPFW(1100)--------------------
* DDF(MAIN LOOP)
* DLS(LEFT SCREEN DRIVER)
* DRS(RIGHT SCREEN DRIVER)
* LOC RSPLA-------------------------
* / CURRENT /
* / RIGHT /
* / SCREEN /
* / PROCESSOR /
* LOC RESLA-------------------------
* 8XA -
* RESIDENT
* ROUTINES
* PKI, ETC.
* LOC BFMS--------------------------
* SECTOR BUFFER
* LOC CPLA--------------------------
* / CURRENT /
* / COMMAND /
* / PROCESSOR /
*
*
* CM STRUCTURE AFTER LOAD COMPLETE, DURING EXECUTION -
*
* ORG-------------------------------------------------
* DDFILE(CP PROGRAM)
* DDFILE FL-------------------------------------------
* TCEF(TABLE OF COMMAND FORMATS)
* TCRO(TABLE OF RIGHT SCREEN PROCESSOR OVERLAYS)
* DDFILE FL + CMTL------------------------------------
* RIGHT SCREEN PROCESSORS
* COMMAND PROCESSORS(LOADED FROM OVERLAYS)
DDF SPACE 4,10
**** DIRECT LOCATION ASSIGNMENTS.
MC EQU T4 MASS STORAGE CHANNEL (NOT A SCRATCH CELL)
EQ EQU T5 EST ORDINAL (NOT A SCRATCH CELL)
TK EQU T6 TRACK (NOT A SCRATCH CELL)
SC EQU T7 SECTOR (NOT A SCRATCH CELL)
DK EQU 15 DISPLAY KEYBOARD CONTROL
* 16 SPARE
* 17 SPARE
AB EQU 20 - 24 ASSEMBLY BUFFER
UI EQU AB+3 USER INDEX
RI EQU AB+3 RANDOM INDEX
BA EQU 25 - 26 BUFFER ADDRESS
RC EQU 27 REPEAT COUNT
SB EQU 30 SYSTEM BUSY FLAG
CR EQU 31 CHANNEL RESERVED FLAG
RS EQU 32 RIGHT SCREEN DISPLAY
TA EQU 33 CM SYNTAX TABLE ADDRESS/100B
EF EQU 34 EXECUTE FLAG
LT EQU 35 LAST TRACK NUMBER ON EQUIPMENT
LS EQU 36 LAST SECTOR NUMBER ON TRACK
RT EQU 37 CM TRT RECOVERY TABLE ADDRESS/100B
KE EQU 40 KEYBOARD ENTRY
KI EQU 41 KEYBOARD BUFFER INDEX
KM EQU 42 KEYBOARD MESSAGE POINTER
CA EQU 43 CHARACTER ADDRESS
FN EQU 44 - 50 FILE NAME
* EQU 51 - 57 SPARES
PF EQU 60 - 64 PF CONTROL WORD
* 65 SPARE
XC EQU 66 X-COORDINATE (6000B, CH01 ASSUMED)
YC EQU 67 Y-COORDINATE
****
DDF SPACE 4,20
** DIRECT CELL USAGE.
*
* THE FOLLOWING DIRECT CELLS CAN BE USED AS SCRATCH LOCATIONS
* BY THE DISPLAY ROUTINES AND COMMAND PROCESSORS.
*
* T0 - T3.
* CM - CM+4.
* AB - AB+4.
* RC.
* YC.
*
* THE FOLLOWING DIRECT CELLS CAN BE USED AS SCRATCH LOCATIONS
* BY THE COMMAND PROCESSORS ONLY.
*
* FN - FN+4.
DDF TITLE MACRO DEFINITIONS.
* MACRO DEFINITIONS.
ACRDEF SPACE 4,10
** ACRDEF - AUX COMMAND ROUTINE DEFINITION.
*
*NAME ACRDEF
*
* ENTRY *NAME* = OVERLAY NAME (CM FL RESIDENT).
*
* DEFINES TAG *NAME_M* AS INDEX OF OVERLAY CONTROL WORD IN
* TABLE *TCRO*.
PURGMAC ACRDEF
MACRO ACRDEF,NAM
CON /NAM/NAM,NAM_L,0,NAM,0
.1 SET *O-TCRO-5
QUAL
NAM_N EQU /PRESET/.1/5
QUAL *
LOC .1/5+1
ENDM ACRDEF
ACROVL SPACE 4,10
** ACROVL - DEFINE AUX COMMAND ROUTINE OVERLAY.
*
*NAME ACROVL LA
*
* ENTRY *NAME* = NAME OF OVERLAY. (CM FL RESIDENT)
* *LA* = LOAD ADDRESS.
*
* NOTE IF THE OVERLAY IS TO USE THE RIGHT SCREEN DISPLAY
* OVERLAY AREA, SEE COMMENTS ON USE OF THIS AREA
* WITH DEFINITION OF SYMBOL *ACRLA*.
* NOTE TO BEGIN A SEQUENCE OF OVERLAYS, THE SYMBOL *ACRA*
* MUST BE UNDEFINED OR EQUAL TO ZERO.
PURGMAC ACROVL
MACRO ACROVL,NAM,LA
LOC *O
BSS 0
.A IF DEF,//ACRA
.B IFNE //ACRA,0
QUAL *
QUAL PRESET
.1 SET *-ACRA+4
"ACRA"L EQU .1/5
.CMTL SET .CMTL+"ACRA"L
QUAL *
.A ENDIF
.B ENDIF
USE NAM
.C IFC NE,$NAM$$
QUAL PRESET
NAM EQU *
ACRA MICRO 1,, NAM
QUAL *
QUAL
ACRA SET *
QUAL *
QUAL NAM
LOC LA
NAM EQU *
.C ELSE
QUAL
ACRA SET 0
QUAL *
.C ENDIF
ENDM ACROVL
COMMAND SPACE 4,10
** COMMAND - ENTER COMMAND PROCESSOR.
*
*CMD COMMAND
*
* ENTRY *CMD* = NAME OF COMMAND PROCESSOR.
*
* NOTE - COMMAND PROCESSORS CANNOT USE LITERALS.
PURGMAC COMMAND
MACRO COMMAND,CMD
LOC *O
BSS 0
.A IF DEF,CMDA
QUAL PRESET
.1 SET *-/DDF".N"/CMDA+4
"CMDA"L EQU .1/5
.MCMDL MAX .MCMDL,"CMDA"L
.CMTL SET .CMTL+"CMDA"L
QUAL *
.A ENDIF
.B IFC NE,$CMD$$
QUAL PRESET
CMD EQU .N*10000+*
CMDA MICRO 1,, CMD
QUAL *
CMDA SET *
LOC CPLA
.B ENDIF
ENDM COMMAND
ENTER SPACE 4,10
** ENTER - ENTER SPECIAL SYNTAX.
*
*CMD ENTER (SYNTAX),D
*
* ENTRY *CMD* = NAME OF COMMAND PROCESSOR.
* *SYNTAX* = SYNTAX OF COMMAND.
* IF *D* IS PRESENT, A DUMMY ENTRY IS DEFINED.
PURGMAC ENTER
MACRO ENTER,CMD,SYNTAX,D
.A IFC EQ,$D$$
CON CMD_L*100+CMD/10000,CMD-CMD/10000*10000
.A ELSE
CMD EQU *O
CON 0,0
.A ENDIF
ORG *O-2
.1 SET *
DATA Z$SYNTAX$
BSSZ 10-*O+.1 FILL REMAINDER OF SYNTAX AREA (15D CHAR MAX)
.B IFC EQ,$D$$
CON CMD_L*100+CMD/10000,CMD-CMD/10000*10000
.B ELSE
CON 0,0
.B ENDIF
.1 SET *O-TCEF
LOC .1/5
ENDM ENTER
INDEX SPACE 4,40
** INDEX - GENERATE INDEXED TABLE.
* (MODIFIED VERSION OF MACRO FROM *COMPMAC*.)
*
*
*NAME INDEX TYPE,ADDRESS
*
* ENTRY *NAME* = TABLE NAME.
* *TYPE* = OFFSET INTO TABLE FOR THIS ENTRY.
* *ADDRESS* = CONTENTS OF THIS ENTRY.
*
* THIS MACRO IS INTENDED TO GENERATE TABLES WHICH ARE INDEXED
* BY SYMBOLIC CONSTANTS SUCH AS FILE AND JOB ORIGIN CODES.
* IT HAS 3 CALLING SEQUENCES.
*
* IF *NAME* IS PRESENT, THE FWA OF THE TABLE IS SET TO *NAME*.
*
* IF *ADDRESS* IS MISSING, THE TABLE IS TERMINATED WITH AN
* *ORG* TO THE END OF THE TABLE. THIS RESULTS IN ZERO ENTRIES
* FOR UNDEFINED ENTRIES IN THE TABLE.
*
* OTHERWISE, A TABLE ENTRY IS MADE AT *INDEX* + *TYPE* OF
* *ADDRESS*.
*
* EXAMPLE - TO GENERATE A TABLE FOR PROCESSING FILE TYPES.
*
*TFTP INDEX BEGIN TABLE
*
* INDEX PRFT,PRP PROCESS PRINT FILE AT *PRP*
* INDEX LOFT,LOP PROCESS LOCAL FILE AT *LOP*
*
* INDEX MXFT TERMINATE TABLE AT *TFTP*+*MXFT*
*
* THE CODE PROCESSING THIS TABLE NOTES THAT -
* A FILE OF TYPE *MXFT* CANNOT BE PROCESSED,
* A TABLE ENTRY = 0, CANNOT BE PROCESSED.
*
* USES SYMBOL NAME *INDEX*.
PURGMAC INDEX
MACRO INDEX,A,B,C
.A IFC NE,$A$$
A BSS 0
.1 SET A
.2 SET *O
.A ELSE
ORG .2+B
IFC NE,$C$$,2
LOC B
CON C
LOC .1+B
BSS 0
.A ENDIF
ENDM INDEX
OVERLAY SPACE 4,10
** OVERLAY - DEFINE NEW OVERLAY.
*
* OVERLAY ORG,(TITLE)
*
* ENTRY *ORG* = ORIGIN ADDRESS OF OVERLAY.
* *TITLE* = TITLE FOR OVERLAY.
PURGMAC OVERLAY
OVERLAY MACRO O,TEXT
.N SET .N+1
ERRNG 1R4-.N TOO MANY OVERLAYS
.N MICRO .N,1, ABCDEFGHIJKLMNOPQRSTUVWXYZ01234
TTL DDF/8"OVLN"".N" - TEXT
TITLE
QUAL DDF".N"
IDENT 8"OVLN"".N",O TEXT
*COMMENT DDF - TEXT
COMMENT COPYRIGHT CONTROL DATA SYSTEMS INC. 1992.
ORG O
ENDM OVERLAY
RSDEF SPACE 4,10
** RSDEF - RIGHT SCREEN PROCESSOR DEFINITION.
*
*NAME RSDEF R
*
* ENTRY *NAME* = PROCESSOR OVERLAY NAME.
* *R* = FLAG TO INDICATE PROCESSOR IS RESIDENT, NOT
* AN OVERLAY.
*
* DEFINES TAG *NAME_N* AS INDEX OF OVERLAY CONTROL WORD IN
* TABLE *TDPO*.
PURGMAC RSDEF
MACRO RSDEF,NAM,R
.A IFC EQ,$R$$
CON /NAM/NAM,NAM_L,0,NAM,0
.A ELSE
CON NAM,0,0,0,0
.A ENDIF
.1 SET *O-TCRO-5
QUAL
NAM_N EQU /PRESET/.1/5
QUAL *
LOC .1/5+1
ENDM RSDEF
RSOVL SPACE 4,10
** RSOVL - DEFINE RIGHT SCREEN DISPLAY PROCESSOR OVERLAY.
*
*NAME RSOVL LA
*
* ENTRY *NAME* = NAME OF PROCESSOR.
* *LA* = LOAD ADDRESS.
*
* NOTE - THE DISPLAY PROCESSORS CANNOT USE LITERALS.
* - THE ENTRY TO THE ROUTINE IS AT *LA*+1.
PURGMAC RSOVL
MACRO RSOVL,NAM,LA
LOC *O
BSS 0
.A IF DEF,//RSPA
QUAL *
QUAL PRESET
.1 SET *-RSPA+4
"RSPA"L EQU .1/5
.MRSPL MAX .MRSPL,"RSPA"L
.CMTL SET .CMTL+"RSPA"L
QUAL *
.A ENDIF
USE NAM
.B IFC NE,$NAM$$
QUAL PRESET
NAM EQU *
RSPA MICRO 1,, NAM
QUAL *
QUAL
RSPA SET *
QUAL *
QUAL NAM
LOC LA
NAM EQU *
.B ENDIF
ENDM RSOVL
DDF SPACE 4,20
**** ASSEMBLY CONSTANTS.
CH EQU CHDS DISPLAY CHANNEL
D EQU 5 CPU STATUS WORD
KBUFL EQU 32D+2 KEYBOARD BUFFER LENGTH
NSRA EQU 6 NUMBER OF SCRATCH REGISTER AREAS
RCPC EQU 12D RIGHT SCREEN - COMMANDS PER COLUMN
MLPS EQU 40 MAIN LOOPS PER SECOND ON CC545
NAME MICRO 1,, DDF
OVLN MICRO 1,, X
PNFL EQU 0 TABLE INDEX FOR LOCAL FNT ACCESS
.N SET 0 OVERLAY NUMBER
QUAL PRESET
.1 SET 0
.2 SET 0
NOREF .1,.2
.MRSPL SET 0 MAXIMUM RIGHT SCREEN PROCESSOR LENGTH
NOREF .MRSPL
.MCMDL SET 0 MAXIMUM COMMAND PROCESSOR LENGTH
NOREF .MCMDL
QUAL *
****
TITLE MAIN PROGRAM.
DDF SPACE 4,10
** DDF - MAIN PROGRAM.
ORG PPFW
DDF BSS 0 ENTRY
LJM /PRESET/PRS PRESET PROGRAM
* CON 0,** (IF *DDFILE* NOT LOADED BY PRESET)
* MAIN LOOP.
DDF1 RJM DLS DISPLAY LEFT SCREEN
DFIM (CON RJMI) PROCESS KEYBOARD FOR 721
UJN *+2
CON PKI
RJM SYS DISPLAY SYSTEM HEADERS
RJM DRS DISPLAY RIGHT SCREEN
RJM PSS PAUSE FOR SYSTEM
CFNC THCF TRANSFER HIDDEN TO VISIBLE, CLEAR HIDDEN
DCN CH+40
RJM PKI PROCESS KEYBOARD INPUT
RJM RCP RECALL COMMAND PROCESSOR IF NECESSARY
UJN DDF1 LOOP
DPP SPACE 4,10
** DPP - DROP PP.
DPP BSS 0 ENTRY
LDN 10 CLEAR *DIS* FLAG
STD CM+4
LDN CCTS
STD CM+1
MONITOR SJCM
MONITOR DPPM DROP PP
LJM PPR EXIT TO PP RESIDENT
GLOBAL SPACE 4,10
* GLOBAL DATA.
DFIM (CON C721)
DCTY CON C545 DISPLAY CONSOLE TYPE
DFIM (CON T721)
CTOS CON T545 TOP OF SCREEN
DFIM (CON Y721-YINC)
CBOS CON Y545-YINC BOTTOM OF SCREEN
DFIM (CON -YINC) SINGLE SPACE FOR 721
DBLS CON -YINC*2 DOUBLE SPACE Y-COORDINATE INCREMENT
DFIM (CON LN08)
CPFC CON LN13 LINE ABOVE FIRST LINE OF PFC
TITLE LEFT SCREEN DISPLAY.
*** LEFT SCREEN.
*
* THE LEFT SCREEN DISPLAYS INFORMATION ABOUT THE DISK
* AND THE CONTROL POINT. THE LOGICAL ADDRESS ON THE DISK
* APPEARS FIRST. THE LINK BYTE FROM THE TRT FOR
* THE CURRENT TRACK IS DISPLAYED AND IS INTENSIFIED IF IT IS
* NOT THE SAME AS THE CONTENTS OF THE LINKAGE BYTES. THE CEN-
* TRAL MEMORY ADDRESS, BYTE NUMBER OF THE TRT ENTRY AND
* RESERVATION, INTERLOCK, AND PRESERVED FILE STATUSES ARE ALSO
* DISPLAYED.
*
* THE FAMILY AND PACK NAMES, AND THE CONTROL POINT
* NUMBER AND JSN OF THE ASSOCIATED JOB ARE DISPLAYED.
* THE DISK-S PERMITS AND INDIRECT TRACK NUMBERS ARE SHOWN.
* IF PRESENT, BOTH CONTROL POINT MESSAGES ARE DISPLAYED.
* IF A DISK ERROR OCCURS, THE ERROR CODE RETURNED IN LOCATION
* *RDCT* BY THE DRIVER IS DISPLAYED.
*
* THE CONTENTS OF THE SCRATCH REGISTERS, THE PHYSICAL
* LOCATION, AND THE HARDWARE STATUS CODE (THE MEANING WILL VARY
* DEPENDING ON THE TYPE OF MASS STORAGE) ARE ALSO DISPLAYED.
*
* IF A PACK RECOVERY IS IN PROGRESS, THE TRACK POINTER AND
* TRACK RECOVERY WORD ARE DISPLAYED.
DLS SPACE 4,15
** DLS - DISPLAY LEFT SCREEN.
*
* ENTRY (RT) = CM RECOVERY DATA TABLE ADDRESS.
* (ZERO IF RECOVERY ROUTINES NOT USED.)
*
* USES T1, T2, T3, AB - AB+4, CM - CM+4, RC, YC.
*
* CALLS CTR, DOL, D2S, D4D, D6S, SNT.
*
* MACROS CFNC, DFIM, DISPLA, DISPHD, SFA.
DLS SUBR ENTRY/EXIT
CFNC SLSF SELECT LEFT SCREEN, SMALL CHARACTERS
DISPHD (DDF. DISPLAY DISK FILE.)
DFIM (CON LN06),*+1
LDC LN08 OUTPUT COORDINATES
STD YC
OAN CH+40
LDD XC
OAN CH+40
* DISPLAY DISK ADDRESS DATA.
DISPLA CH01,,( EST =)
LDD EQ DISPLAY TOP DIGIT
SHN -6
ZJN DLS1 IF NO UPPER DIGIT
ADN 1R0
DLS1 OAN CH+40
LDD EQ
RJM D2S DISPLAY LAST TWO DIGITS
DISPLA CH15,,( TK = )
LDD TK
RJM D4D DISPLAY TRACK NUMBER
DISPLA CH30,,(ADDRESS OF TRT =)
LDD TK
SHN -2
DLSA ADC TRTS
RJM D6S DISPLAY TRT ADDRESS
DISPLA ,,(BYTE)
LDD TK
LPN 3
ADN 1R0
OAN CH+40
LCN YINC MOVE TO NEXT LINE
RAD YC
OAN CH+40
DISPLA CH01,,( TYPE = )
SFA EST,EQ DISPLAY EQUIPMENT TYPE
ADK EQDE
CRD AB
LDD AB+3
OAN CH+40
DISPLA CH15,,( SC = )
LDD SC
RJM D4D DISPLAY SECTOR NUMBER
DISPLA CH30,,(CONTENTS OF TRT = )
LDN 0
STD RC
RJM SNT GET NEXT TRACK LINK
STD T2
LDM BFMS
NJN DLS2 IF NOT EOF/EOI
LDM BFMS+1
DLS2 SHN 6
PJN DLS3 IF NOT A CHAIN BYTE
SHN -6
LMD T2
ZJN DLS3 IF TRT AND CHAIN BYTE MATCH
DFIM (CFNC BIVF)
PSN
PSN
LDN 3
STD RC
DLS3 LDC CH48 OUTPUT X-COORDINATE
OAN CH+40
LDD T2
RJM D4D OUTPUT VALUE
DFIM (CFNC EIVF)
SOD RC
PJN DLS3 IF REPEAT COUNT NOT COMPLETE
PSN
PSN
* DISPLAY TRACK STATUS.
RJM CTR CHECK TRACK RESERVATION BIT
STD T2
MJN DLS4 IF TRACK RESERVED
DISPLA CH53,,(NOT),H
DLS4 DISPLA CH57,,(RESERVED)
LCN YINC
RAD YC
OAN CH+40
DISPLA CH01,,( STATE = )
LDD AB
LPN 3
SHN 1
STD T1
LDM DLSE,T1
OAN CH+40
LDM DLSE+1,T1
OAN CH+40
LDD T2
SHN 21-7
PJN DLS6 IF NOT FIRST TRACK PRESERVED FILE
DISPLA CH56,,(PRESERVED)
DLS6 LDD T2
SHN 21-3
PJN DLS7 IF NOT INTERLOCKED
LCN YINC
RAD YC
OAN CH+40
DISPLA CH54,,(INTERLOCKED)
DFIM (CON LN11),*+1
DLS7 LDC LN15
OAN CH+40
SBN YINC
STD YC
* DISPLAY FAMILY AND PACK NAMES.
DISPLA CH01,,(FAMILY = )
SFA EST,PF+4 DISPLAY FAMILY NAME
ADK EQDE
CRD CM
LDD CM+4
SHN 3
ADK PFGL
CRD CM
LDN 3
OAM CM,CH
LDD CM+3
SCN 77
OAN CH+40
DISPLA CH22,,( PACK = )
LDN 3 DISPLAY PACK NAME
OAM PF,CH
LDD PF+3
SCN 77
OAN CH+40
* DISPLAY CONTROL POINT INFORMATION.
DISPLA CH42,,( CP = )
LDD CP DISPLAY CONTROL POINT NUMBER
SHN -7
RJM D2S DISPLAY TWO DIGITS
DISPLA CH55,,(JSN = )
LDC 0
DLSB EQU *-1 (ADDRESS OF EJT ENTRY, SET BY *PRS*)
CRD CM
LDN 2 DISPLAY JOB SEQUENCE NAME
OAM CM,CH
* DISPLAY FIRST PERMIT AND DATA TRACK NUMBERS.
LDD YC
OAN CH+40
DISPLA CH01,,(PERMITS TRACK = )
LDD AB+4
SHN 3
ADN ALGL
CRD CM
LDD CM+2
RJM D4D DISPLAY TRACK NUMBER
DISPLA CH26,,( FIRST TRACK INDIRECT CHAIN = )
LDD CM
RJM D4D DISPLAY TRACK NUMBER
* DISPLAY CONTROL POINT MESSAGES.
LCN YINC*2 OUTPUT COORDINATES
RAD YC
OAN CH+40
LDD XC
OAN CH+40
LDD CP DISPLAY FIRST MESSAGE LINE
ADN MS1W
RJM DOL DISPLAY ONE LINE
LCN YINC
RAD YC
LDN 2 OUTPUT COORDINATES
OAM XC,CH
LDD CP
ADN MS2W OUTPUT SECOND MESSAGE LINE
RJM DOL DISPLAY ONE LINE
* DISPLAY SCRATCH AREAS.
LCN YINC*2 OUTPUT COORDINATES
RAD YC
OAN CH+40
DISPLA CH01,,(------------SCRATCH AREAS-------------)
LDM RDCT
LPN 77
ZJN DLS8.1 IF NO ERROR
STD T3
DFIM (CFNC BIVF)
PSN
PSN
LDN 3
STD RC
DLS8 DISPLA CH44,,(ERROR = )
LDM DLSD,T3
OAN CH+40
DFIM (CFNC EIVF)
SOD RC
NJN DLS8 IF REPEAT COUNT NOT COMPLETE
PSN
PSN
DFIM (LCN YINC)
DLS8.1 LCN YINC*2
RAD YC
OAN CH+40
DISPLA CH06,,(EST TK SC COMMENT)
LDC SRA
STD T2
LDN 0
STD T3
DLS9 LCN YINC
RAD YC
OAN CH+40
LDD XC
OAN CH+40
AOD T3
SHN 6
OAN CH+40 DISPLAY SCRATCH AREA LETTER
LDI T2 DISPLAY EST ORDINAL
RJM D6S
AOD T2
LDI T2 DISPLAY TRACK
RJM D6S
AOD T2
LDI T2 DISPLAY SECTOR
RJM D6S
LDN 0
OAN CH+40
LDN 2 DISPLAY COMMENT
RAD T2
LDN 4
STD CM
DLS10 LDI T2
OAN CH+40
AOD T2
SOD CM
PJN DLS10 IF MORE COMMENT
LDD T3
LMN NSRA
ZJN DLS11 IF END OF SCRATCH AREAS
LJM DLS9 LOOP FOR REST OF SCRATCH REGISTERS
* DISPLAY RECOVERY DATA.
DLS11 LDD RT
NJN DLS12 IF RECOVERY TABLE PRESENT
LJM DLS14 RETURN
DLS12 LCN YINC*2 OUTPUT COORDINATES
RAD YC
OAN CH+40
DISPLA CH01,,(TRACK POINTER = )
LDD RA
ADD RT
SHN 6
DLSC ADN RCPW READ POINTER WORD
* ADN ICPW IF BUILDING INDIRECT CHAIN
* ADN BSPW IF IN *BLDSTRT.*
CRD CM
LDD CM
RJM D4D DISPLAY TRACK POINTER
LCN YINC OUTPUT COORDINATES
RAD YC
OAN CH+40
DISPLA CH01,,(TRACK RECOVERY WORD = )
LDD RA
ADD RT
SHN 6
ADD TK
ADC TRCT-4000
CRD CM
LDN CM
STD T3
DLS13 LDN 0
OAN CH+40
LDI T3
RJM D4D DISPLAY FOUR DIGITS
AOD T3
SBN CM+5
MJN DLS13 IF MORE OF WORD TO DISPLAY
DLS14 FJM *,CH IF CHANNEL FULL, WAIT
DCN CH+40
LJM DLSX RETURN
LIST G
DLSD EQU *-1
ECHO 1,ERRCODE=("DREC")
CON EMN._ERRCODE "TXT._ERRCODE" ERROR
LIST *
DLSE BSS 0
DATA 4HON
DATA 4HIDLE
DATA 4HOFF
DATA 4HDOWN
TITLE RIGHT SCREEN DISPLAY.
*** RIGHT SCREEN.
* THE RIGHT SCREEN DISPLAYS THE CONTENTS OF THE DISK
* SECTOR. THE BYTE NUMBERS ARE THE ACTUAL BYTE NUMBERS FOR
* THE PHYSICAL DISK SECTOR (I.E. BYTES 0 AND 1 ARE THE CONTROL
* BYTES). THESE BYTE NUMBERS ARE USED IN THE MEMORY CHANGING
* COMMANDS.
*
* THE RIGHT SCREEN IS CHANGED WITH THE RIGHT BLANK OR
* TAB KEY. FOR SOME DISPLAYS THE */* INCREMENTS THE ADDRESSES
* DISPLAYED.
DRS SPACE 4,15
** DRS - DISPLAY RIGHT SCREEN.
*
* ENTRY (RS) = INDEX INTO TABLE OF RIGHT SCREEN DISPLAYS.
* RIGHT SCREEN SELECTED - SMALL CHARACTERS.
* CHANNEL ACTIVE.
*
* EXIT TO DISPLAY ROUTINE.
* (T3) = BFMS, BUFFER ADDRESS.
*
* USES T3.
*
* CALLS LDO, RIGHT SCREEN PROCESSORS.
DRS2 FJM *,CH IF CHANNEL FULL, WAIT UNTIL EMPTY
DCN CH+40
DRS SUBR ENTRY/EXIT
LDM DRSB CHECK FOR OVERLAY LOADED
LMD RS
ZJN DRS1 IF DISPLAY UNCHANGED
LDD RS
RJM LDO LOAD DISPLAY OVERLAY
DRS1 LDC BFMS SET BUFFER ADDRESS
STD T3
LJM ** JUMP TO DISPLAY PROCESSOR
* LJM RSPLA (NOT FORMATTED DISPLAY)
* LJM DFD (IF FORMATTED DISPLAY)
DRSA EQU *-1 OVERLAY CONTROL WORD FROM CM TABLE
* CONTROL WORD FROM CM TABLE = (DRSA).
*DRSA DATA 0 ADDRESS OF LOADED DISPLAY PROCESSOR
DATA 0 PROCESSOR LENGTH
CON 0,0
DATA 0 DISPLAY INDEX
ERRNZ *-DRSA-5 CONTROL WORD MUST BE FIVE BYTES
DRSB CON MXDI CURRENTLY LOADED RIGHT SCREEN DISPLAY ID
* (PRESET TO ILLEGAL ID FOR INITIALIZATION)
DIS HERE DISPLAY DATA
RSPLA BSS 0 RIGHT SCREEN PROCESSOR LOAD ADDRESS
TITLE CENTRAL MEMORY RESIDENT TABLES.
USE PRESET
QUAL PRESET
** CM TABLES.
*
TCEF SPACE 4,15
** TCEF - TABLE OF COMMAND ENTRY FORMATS.
*
* VFD 96/Z*SYNTAX*
* VFD 6/L,1/0,5/OVL,12/PP ADDR
*
* AFTER LOAD TO CM
* VFD 96/Z*SYNTAX*
* VFD 6/L,1/1,17/CM ADDR
*
* L = COMMAND PROCESSOR LENGTH (CM WORDS).
* OVL = LAST CHARACTER OF OVERLAY NAME.
* PP/CM ADDR = ADDRESS OF PROCESSOR.
TCEF BSS 0
LOC 0
ARD ENTER (AUTOREAD.)
BTR ENTER (BEGINR.)
BEI ENTER (BLDEOI.)
BLS ENTER (BLDSL.)
BRS ENTER (BLDSTRT.)
BOT ENTER (BOT.)
CTB ENTER (CTB.)
DEP ENTER (DEP.)
DIS ENTER (DIS.)
DRP ENTER (DROP.)
DTK ENTER (DTK.)
EEP ENTER (EEP.)
EET ENTER (EJT.)
EST ENTER (EST.)
EFO ENTER (FAMILY.)
FPE ENTER (FIND.)
FIS ENTER (FINDISS.)
FOV ENTER (FINDO.)
FST ENTER (FINDS.)
FSS ENTER (FINDSS.)
EFB ENTER (FNT.)
EFL ENTER (FNTL.)
EFC ENTER (FNTLC.)
GTT ENTER (GETTRT.)
HOL ENTER (HOLD.)
LSA ENTER (LOAD.)
NAT ENTER (NEXTAT.)
NSS ENTER (NEXTSS.)
EPN ENTER (PACKNAM.)
PRD ENTER (PREAD.)
PTK ENTER (PTK.)
PWT ENTER (PWRITE.)
EIT ENTER (QFT.)
ERA ENTER (RANDOM.)
REC ENTER (RECOVER.)
SCN ENTER (SCAN.)
ELS ENTER (SC.*.)
ESC ENTER (SC.)
SRW ENTER (SETRW.)
STP ENTER (SETTP.)
SPF ENTER (SHOWPF.)
SKE ENTER (SKIPEI.)
SKF ENTER (SKIPF.)
SKR ENTER (SKIPR.)
STB ENTER (STB.)
SSA ENTER (STORE.)
ETK ENTER (TK.)
SCT ENTER (UI.)
WRT ENTER (WRITE.)
TCEFA ENTER ( ),DUMMY LISTING FILE COMMANDS
CLF ENTER (LISTING.)
OUT ENTER (OUT.)
PRT ENTER (PRINT.)
RET ENTER (RETURN.)
REW ENTER (REWIND.)
SID ENTER (SETID.)
SKL ENTER (SKIPL.)
.END ENTER ,DUMMY END OF TABLE
QUAL
LOC *O
.1 SET *-/PRESET/TCEF
TCEFL EQU .1/5 LENGTH OF TABLE
QUAL *
TDPO SPACE 4,10
** TCRO - TABLE OF CENTRAL RESIDENT OVERLAYS.
*
* VFD 12/ENTRY,12/L,24/ADDR,12/DI
*
* ENTRY = PROCESSOR ENTRY ADDRESS.
* L = PROCESSOR LENGTH IN CM WORDS.
* (L=0 IF NOT AN OVERLAY)
* ADDR = PP ADDRESS OF CODE BEFORE LOADED TO CM.
* = CM ADDRESS AFTER PRESET.
* DI = OPTION (USUALLY A BUFFER INDEX).
TCRO BSS 0
LOC 0
DFB RSDEF DISPLAY SECTOR - FIVE BYTES/LINE
DTB RSDEF DISPLAY SECTOR - TEN BYTES/LINE
DTX RSDEF DISPLAY SECTOR - TEXT
DLC RSDEF DISPLAY LEGAL COMMANDS
DFD RSDEF DISPLAY SECTOR - FORMATTED
DSS RSDEF DISPLAY SYSTEM SECTOR FOR *DFD*
DPE RSDEF DISPLAY PFC SECTOR FOR *DFD*
DEI RSDEF DISPLAY EOI SECTOR FOR *DFD*
MXDO EQU * MAXIMUM DISPLAY OVERLAY INDEX+1
TAR ACRDEF TABLE ACCESS ROUTINES (EJT, FNT, QFT)
LRR ACRDEF LABEL/TRT RECONSTRUCTION SUBROUTINES
QUAL
LOC *O
TCRO EQU 0+TCEFL CM ADDRESS OF TABLE
MXDI EQU DFDN+1 MAXIMUM DISPLAY INDEX FOR DISPLAY TOGGLE
.1 SET *-/PRESET/TCRO
TCROL EQU .1/5 TABLE LENGTH IN CM WORDS
SPACE 4,10
.1 SET *-/PRESET/TCEF
CMTL EQU .1/5 CM TABLE AREA LENGTH
QUAL *
.CMTL SET CMTL ACCUMULATE TOTAL CM REQUIRED
TITLE LOAD COMMAND PROCESSORS.
LCP SPACE 4,15
** LCP - LOAD COMMAND PROCESSORS.
*
* ENTRY FROM PRS.
* (AB+3 - AB+4) = CM LOAD ADDRESS COMMAND PROCESSORS.
* (RC) = 1.
* (TA) = CM FWA FOR TABLES.
*
* EXIT TO RESIDENT OVERLAY PRESET.
*
* USES AB, AB+3, AB+4, RC, T1.
*
* CALLS EXR, PSS.
LCP3 LDC CMTL WRITE TABLES TO CM
STD T1
LDD RA
ADD TA
SHN 6
CWM TCEF,T1
LDC 3R8"OVLN"A LOAD RESIDENT ROUTINES OVERLAY
RJM EXR EXECUTE OVERLAY
LCP BSS 0
LCP1 RJM PSS PAUSE FOR SYSTEM
AOD RC ADVANCE OVERLAY NAME
SBN .L+1
PJN LCP3 IF ALL COMMAND OVERLAYS LOADED
LDD RC LOAD NEXT OVERLAY
ADC 2L8"OVLN"
RJM EXR EXECUTE OVERLAY
LDC TCEF-2 SET COMMAND TABLE ADDRESS
STD AB
LCP2 LDN 2 CHECK NEXT COMMAND
RAD AB
LDI AB
ZJN LCP1 IF END OF COMMAND TABLE
LDN 10 ADVANCE TO OVERLAY ID
RAD AB
LDI AB
SHN 21-5
MJN LCP2 IF PROCESSOR ALREADY LOADED
STD T1
SHN 5-21
LPN 37
LMD RC
NJN LCP2 IF COMMAND PROCESSOR NOT IN THIS OVERLAY
LDM 1,AB SET PP MEMORY ADDRESS
STM LCPA
LDI AB SET CM ADDRESS INTO TABLE
SCN 77
LMD AB+3
LMN 40
STI AB
LDD AB+4
STM 1,AB
LDD AB+3 WRITE PROCESSOR TO CM
SHN 6
ADD RA
SHN 6
ADD AB+4
CWM **,T1
LCPA EQU *-1 (PP ADDRESS OF PROCESSOR)
LDD T1 UPDATE CM ADDRESS
RAD AB+4
SHN -14
RAD AB+3
LJM LCP2 LOOP
PSS SPACE 4,10
** PSS - PAUSE FOR SYSTEM.
*
* EXIT TO *PPR*, IF ERROR FLAG SET.
* (CM+1) = 0 IF ERROR FLAG NOT SET.
*
* MACROS MONITOR, PAUSE.
PSS SUBR ENTRY/EXIT
PAUSE
LDD CM+1
ZJN PSSX IF ERROR FLAG NOT SET
MONITOR DPPM DROP PP
LJM PPR EXIT
OVL SPACE 4,10
** OVL - COMMAND PROCESSOR OVERLAY LOAD ADDRESS.
OVL EQU *+5
TITLE PRESET PROGRAM.
PRS SPACE 4,10
** PRS - PRESET PROGRAM.
*
* EXIT TO PPR IF ANY ERRORS.
* TO LCP TO CONTINUE PRESET.
* (AB+3 - AB+4) = CM LOAD ADDRESS COMMAND PROCESSORS.
* (RC) = 1.
* (TA) = CM FWA FOR TABLES.
* (DDF) = 0, IF *DDFILE* NOT LOADED.
*
* USES CM - CM+4.
*
* CALLS DFM, CUA, PSS.
*
* MACROS EXECUTE, MONITOR, PAUSE.
PRS BSS 0
RJM CUA CHECK USER ACCESS
NJN PRS0 IF JOB HAS NO SYSTEM ORIGIN PRIVILEGES
LDK SSML
CRD CM
LDD CM
LPN 7
ZJN PRS1 IF UNSECURED SYSTEM
LDK SSTL
CRD CM
LDD CM
SHN 21-11
MJN PRS1 IF *SECURITY-UNLOCK* SET
PRS0 LDC PRSE * INCORRECT USER ACCESS.*
RJM DFM SEND DAYFILE MESSAGE
MONITOR ABTM
LJM PPR EXIT
PRS1 LDN 1 PRESET OVERLAY COUNTER
STD RC
LDN 10
STD CM+4
LDN SCTS SET *DIS* FLAG
STD CM+1
MONITOR SJCM
PRS2 RJM PSS PAUSE FOR SYSTEM
LDD FL
NJN PRS3 IF NONZERO FIELD LENGTH
LDN ZERL
CRD CM
AOD CM+1 REQUEST MEMORY
MONITOR RSTM
UJN PRS2 LOOP
PRS3 RJM PSS PAUSE FOR SYSTEM
LDN ZERL CLEAR CPU READY FLAG
CRD CM
LDD RA
SHN 6
ADN D
CWD CM
LDD CP WRITE CONTROL CARD TO MESSAGE AREA
ADN MS1W
CWM PRSB,ON
CWD CM
ADN TFSW-MS1W-1 FETCH EJT ORDINAL
CRD CM
SFA EJT,CM
STD CM+4 SET ADDRESS OF EJT ENTRY
STM DLSB
SHN -14
STD CM+3
RAM DLSB-1
LDN 0
STD CM+2
LDN 1S5+1 SET JOB ADVANCE
STD CM+1
LDD MA
CWM PRSF,ON
MONITOR UTEM
LDD CM+1 CHECK *UTEM* RESPONSE
NJP PRS3 IF REJECT
RJM PSS PAUSE
LDN ZERL
CRD CM
LDD MA CALL *1AJ* WITH CONTROL CARD IN MS1W
CWM PRSC,ON
CWD CM
EXECUTE 1AJ,=
MONITOR RPPM
LDD CM+1
ZJN PRS5 IF PP NOT ASSIGNED
PRS4 PAUSE WAIT UNTIL CPU READY
LDD CM+1
ZJN PRS6 IF ERROR FLAG NOT SET
PRS5 LDN 0 DISABLE LISTING FILE COMMANDS
STM TCEFA
STM DDF INDICATE *DDFILE* NOT LOADED
STD CM+1 CLEAR ERROR FLAG
MONITOR CEFM
LDN ZERL
UJN PRS7 REQUEST STORAGE FOR COMMAND PROCESSORS
PRS6 LDD RA READ CPU READY FLAG
SHN 6
ADN D
CRD CM
LDD CM
ZJN PRS4 IF NOT READY
* REQUEST FL FOR COMMAND PROCESORS.
LDD RA GET LWA+1 OF DDFILE
SHN 6
ADN D-1
PRS7 CRD AB
LDD AB+3
SHN 14
ADD AB+4
ADN 77
SHN -6
STD TA SET CM TABLE ADDRESS
SHN 6
ADC TCMTL+77 CM FL INCREASE REQUIRED
SHN -6
STD AB (AB) = REQUIRED FL
LDD CP
ADN MS1W
CWM PRSD,TR * WAITING FOR MEMORY.*
PRS8 LDN ZERL
CRD CM
LDD AB REQUEST STORAGE
STD CM+1
MONITOR RSTM
RJM PSS PAUSE
LDD AB
LMD FL
NJN PRS8 IF MEMORY NOT OBTAINED
* LOAD DISPLAY PROCESSOR OVERLAYS TO CM.
LDD TA INITIALIZE OVERLAY ADDRESS POINTER
SHN 6
ADC CMTL
STD AB+4
SHN -14
STD AB+3
LDN 0
STD AB
PRS9 LDM TCRO+1,AB SET WORD COUNT
ZJN PRS10 IF NOT AN OVERLAY
STD T1
LDM TCRO+3,AB SET PP MEMORY ADDRESS
STM PRSA
LDD AB+3 SET CM ADDRESS INTO TABLE
STM TCRO+2,AB
LDD AB+4
STM TCRO+3,AB
LDD AB+3 WRITE PROCESSOR TO CM
SHN 6
ADD RA
SHN 6
ADD AB+4
CWM **,T1
PRSA EQU *-1 (PP ADDRESS OF PROCESSOR)
LDD T1 UPDATE CM ADDRESS
RAD AB+4
SHN -14
RAD AB+3
PRS10 LDN 5 ADVANCE INDEX
RAD AB
SBN MXDO*5
PJN PRS11 IF END OF TABLE
LJM PRS9 LOOP
PRS11 LJM LCP LOAD COMMAND PROCESSORS FROM OVERLAYS
PRSB VFD 48/8L$DDFILE.,12/0
PRSC VFD 18/3R1AJ,6/0,12/2,12/0,12/4
PRSD DATA C* WAITING FOR MEMORY.*
PRSE DATA C* INCORRECT USER ACCESS.*
PRSF VFD 12/1,6/6,42/1 SET JOB ADVANCE
SPACE 4,10
** PRESET COMMON DECKS.
QUAL$ EQU 0 DONT REQUALIFY COMMON DECKS
*CALL COMPCUA
EJT$ EQU 0 DEFINE *COMPGFP* ACCESS TO EJT
*CALL COMPGFP
QUAL * RESUME UNQUALIFIED DEFINITIONS
TITLE RIGHT SCREEN DISPLAY PROCESSOR CM RESIDENT OVERLAYS.
DFB SPACE 4,10
*** FIVE BYTES PER LINE.
* THE CONTENTS OF THE SECTOR ARE DISPLAYED BY CENTRAL
* MEMORY WORD. THE BYTE NUMBERS ARE DISPLAYED IN
* PARENTHESIS AFTER THE CENTRAL MEMORY WORD NUMBER.
* THE */* IS USED TO TOGGLE BETWEEN THE FIRST AND
* SECOND HALF OF THE SECTOR. THE NUMBER OF WORDS
* DISPLAYED IS DETERMINED BY THE WORD COUNT IN THE
* CONTROL BYTES.
DFB SPACE 4,15
** DFB - DISPLAY FIVE BYTES/LINE.
*
* ENTRY CONSOLE FUNCTIONED FOR RIGHT SCREEN.
* (DRSA - DRSA+4) = PROCESSOR CONTROL WORD.
* (T3) = BUFFER ADDRESS.
*
* EXIT TO DRS2.
*
* USES T3, YC, AB - AB+4.
*
* CALLS DMW, D4D, SPP.
*
* MACROS DISPLA.
DFB RSOVL RSPLA
DISPHD (DDF. 5 BYTES/LINE.)
LDM CTOS SET TOP OF SCREEN
OAN CH+40
SBN YINC
STD YC
DISPLA CH01,,(LINKAGE BYTES = )
LDI T3 DISPLAY CONTROL BYTES
RJM D4D DISPLAY FOUR DIGITS
LDN 0
OAN CH+40
LDM BFMS+1
RJM D4D DISPLAY FOUR DIGITS
RJM SPP SET PAGE PARAMETERS
ZJN DFB1 IF NO WORDS TO DISPLAY
STD AB+4
LDM BFMS+1 NUMBER OF WORDS IN SECTOR
SBD AB - FIRST WORD NUMBER
MJN DFB4 IF NO DATA TO BE DISPLAYED
SBD AB+4 - PAGE SIZE
PJN DFB2 IF FULL PAGE TO BE DISPLAYED
RAD AB+4 ADJUST WORD COUNT TO DISPLAY
DFB1 ZJN DFB4 IF NO DATA TO DISPLAY
DFB2 LCN YINC ADVANCE Y-COORDINATE
RAD YC
LDD AB SET LAST WORD NUMBER + 1
ADN 10
STD AB+1
LCN 10 DECREMENT WORDS TO DISPLAY
RAD AB+4
PJN DFB3 IF FULL GROUP TO BE DISPLAYED
RAD AB+1 ADJUST LAST WORD NUMBER
LDN 0
STD AB+4
DFB3 LDD AB SET FIRST BYTE NUMBER
SHN 2 FIRST WORD NUMBER * 5
STD AB+2
LDD AB
ADN 2 + 2
RAD AB+2 = FIRST BYTE NUMBER
LDN 0 SET DISPLAY MODE
STD AB+3
RJM DMW DISPLAY MEMORY WORDS
LDD AB+4
NJN DFB2 IF MORE WORDS TO DISPLAY
DFB4 LJM DRS2 EXIT
DIS HERE
DTB SPACE 4,10
*** TEN BYTES PER LINE.
* THE CONTENTS OF THE SECTOR ARE DISPLAYED 10B BYTES PER
* LINE. THE ENTIRE SECTOR IS DISPLAYED ON THE SCREEN
* WITH BYTE NUMBERS.
DTB SPACE 4,15
** DTB - DISPLAY TEN BYTES/LINE
*
* ENTRY CONSOLE FUNCTIONED FOR RIGHT SCREEN.
* (DRSA - DRSA+4) = PROCESSOR CONTROL WORD.
* (T3) = BUFFER ADDRESS.
*
* EXIT TO DRS2.
*
* USES T2, T3, XC, YC.
*
* CALLS D4D, ODC.
DTB RSOVL RSPLA
DISPHD (DDF. 10B BYTES/LINE.)
LDC LN05
STD YC
LDM DCTY SET FIRST BYTE NUMBER
SBK C545
ZJN DTB1 IF CC545 CONSOLE
LDN 0 CLEAR BOTTOM OF SCREEN ADJUSTMENT
STM DTBA
LDM DRSA+4 CHECK PAGE NUMBER FOR 721
LPN 1
ZJN DTB1 IF FIRST PAGE
LDC 250 SET FIRST BYTE SECOND PAGE
DTB1 STD T2
* OUTPUT ONE LINE.
DTB2 LDN 2 OUTPUT COORDINATES
OAM XC,CH
LDD T2
RJM D4D DISPLAY BYTE NUMBER
LDN 7*XINC
DTB3 RAD XC OUTPUT X-COORDINATE
OAN CH+40
LDM BFMS,T2
RJM D4D DISPLAY CONTENTS OF BYTE
AOD T2
LPN 7
ZJN DTB4 IF END OF LINE
LDN 5*XINC
UJN DTB3 LOOP TO DISPLAY REST OF LINE
* OUTPUT DISPLAY CODE FOR LINE.
DTB4 OAN CH+40
LDC CH01 RESET X-COORDINATE
STD XC
LDC BFMS-10 SET ADDRESS OF FIRST BYTE
ADD T2
STD T3
LDN 10 BYTES TO DISPLAY
RJM ODC OUTPUT DISPLAY CODE
LDD T2
LPN 77
NJN DTB5 IF NOT NEW BLOCK
* ADVANCE Y-COORDINATE.
LCN YINC
RAD YC
DTB5 LCN YINC
RAD YC
SBM CBOS
DTBA ADN YINC*4
MJN DTB8 IF AT BOTTOM OF SCREEN
LDC 500-1 CHECK FOR END OF DISPLAY
SBD T2
MJN DTB6 IF AT BOTTOM OF SCREEN
LJM DTB2 LOOP
* DISPLAY LAST TWO BYTES.
DTB6 LDN 2 OUTPUT COORDINATES
OAM XC,CH
LDD T2 DISPLAY BYTE NUMBER
RJM D4D
LDN 7*XINC
DTB7 RAD XC OUTPUT X-COORDINATE
OAN CH+40
LDM BFMS,T2 DISPLAY CONTENTS OF BYTE
RJM D4D
AOD T2
LPN 1
ZJN DTB9 IF BOTH BYTES DISPLAYED
LDN 5*XINC
UJN DTB7 LOOP TO DISPLAY REST OF LINE
DTB8 UJN DTB10 RETURN
DTB9 LDC CH49 OUTPUT DISPLAY CODE FOR LAST 2 BYTES
OAN CH+40
LDC BFMS+500
STD T3
LDN 2
RJM ODC
LDC CH01 RESET X-COORDINATE
STD XC
DTB10 LJM DRS2 RETURN
DIS HERE
DTX SPACE 4,10
*** TEXT.
* DISPLAYS THE CONTENTS OF THE SECTOR IN TEXT MODE.
* THE AMOUNT OF TEXT TO DISPLAY IS DETERMINED BY THE
* WORD COUNT IN THE CONTROL BYTES.
DTX SPACE 4,15
** DTX - DISPLAY TEXT.
*
* ENTRY CONSOLE FUNCTIONED FOR RIGHT SCREEN.
* (DRSA - DRSA+4) = PROCESSOR CONTROL WORD.
* (T3) = BUFFER ADDRESS.
*
* EXIT TO DRS2.
*
* USES T1, T2, T3, AB, YC.
*
* CALLS ODC.
DTX RSOVL RSPLA
DISPHD (DDF. TEXT MODE DISPLAY.)
LDM CTOS
ADN YINC
STD YC
LDM BFMS SET WORD COUNT
NJN DTX2 IF DATA TO DISPLAY
DTX1 LJM DTX7 RETURN
DTX2 LDM BFMS+1
STD AB
LDM DCTY SET FIRST BYTE NUMBER
SBK C545
ZJN DTX3 IF CC545 CONSOLE
LDM DRSA+4 CHECK PAGE NUMBER FOR 721
LPN 1
ZJN DTX3 IF FIRST PAGE
LDC -40 DECREMENT NUMBER OF WORDS TO DISPLAY
RAD AB
MJN DTX1 IF NO WORDS TO DISPLAY
LDC 240 SET FIRST BYTE SECOND PAGE
DTX3 ADN 2
RAD T3 FIRST BYTE TO DISPLAY
LDN 0
STD T1
DTX4 LDD XC
DTX5 OAN CH+40
LCN YINC
RAD YC
SBM CBOS
MJN DTX7 IF BOTTOM OF SCREEN REACHED
LDD YC
OAN CH+40
LDN 0 INITIALIZE LINE WORD COUNT
STD T2
DTX6 LDD T1
SBD AB
ZJN DTX7 IF ALL WORDS DISPLAYED
LDN 5
RJM ODC OUTPUT DISPLAY CODE WORD
AOD T1
LDM -1,T3
ZJN DTX4 IF END OF TEXT LINE
AOD T2
SBN 5
NJN DTX6 IF NOT END OF SCREEN LINE
LDC CH05 CONTINUE ON NEXT LINE OF SCREEN
UJN DTX5 LOOP FOR REST OF LINE
DTX7 LJM DRS2 RETURN
DIS HERE
DLC SPACE 4,10
*** LEGAL COMMANDS.
* DISPLAYS A LIST OF THE DDF COMMANDS.
DLC SPACE 4,15
** DLC - DISPLAY LEGAL COMMANDS.
*
* ENTRY CONSOLE FUNCTIONED FOR RIGHT SCREEN.
* (DRSA - DRSA+4) = PROCESSOR CONTROL WORD.
* (TA) = ADDRESS OF COMMAND TABLE IN CM.
*
* EXIT TO DRS2.
*
* USES T2, DK, RC, XC, YC, AB - AB+4.
*
* CALLS DOL.
DLC RSOVL RSPLA
DISPHD (DDF. LEGAL COMMANDS.)
LDN 0 INITIALIZE COMMAND INDEX
STD DK
DLC1 LDM CTOS
STD YC
LDN RCPC COMMANDS PER COLUMN
STD RC
DLC2 LDN 2 OUTPUT COORDINATES
OAM XC,CH
LDD RA GET ADDRESS OF COMMAND
ADD TA
SHN 6
ADD DK
ADN 2 CHECK NEXT COMMAND
CRD AB
SBN 2
RJM DOL DISPLAY COMMAND
LDD AB CHECK NEXT COMMAND
ZJN DLC3 IF END OF COMMANDS
LCN YINC ADVANCE Y-COORDINATE
RAD YC
LDN 2 ADVANCE COMMAND INDEX
RAD DK
SOD RC
NJN DLC2 IF NOT END OF COLUMN
LDC 13D*XINC ADVANCE X-COORDINATE
RAD XC
UJN DLC1 START NEXT COLUMN
DLC3 LDM DCTY RESET COORDINATES
SBK C545
ZJN DLC4 IF CC545 CONSOLE
LDN 3*YINC
DLC4 SBK 3*YINC+RCPC*YINC
ADM CTOS
STD YC
LDC CH01
STD XC
* OUTPUT SPECIAL CHARACTER COMMANDS.
LDC DLCA-1
STD T2
DLC5 LCN YINC
RAD YC
LDN 2
OAM XC,CH
DLC6 AOD T2 DISPLAY LINE
LDI T2
OAN CH+40
LPN 77
NJN DLC6 IF NOT END OF LINE
LDM 1,T2
NJN DLC5 IF MORE LINES TO DISPLAY
LJM DRS2 RETURN
DLCA BSS 0
DATA Z*+ INCREMENT SECTOR.*
DATA Z*- DECREMENT SECTOR.*
DATA Z*. ADVANCE PAST END OF TRACK, ZERO SECTOR.*
DATA Z*, ADVANCE TO NEXT TRACK IN CHAIN.*
DATA Z*= ADVANCE PAST EOI.*
DATA Z*8 INCREMENT TRACK.*
DATA Z*9 DECREMENT TRACK.*
DATA Z*/ ADVANCE RIGHT SCREEN.*
DATA Z*SPACE - READ CURRENT SECTOR.*
DATA Z*RIGHT BLANK OR TAB - CHANGE RIGHT DISPLAY.*
CON 0
DIS HERE
DFD SPACE 4,20
** DFD - DISPLAY FORMATTED DATA.
*
* DETERMINES SECTOR TYPE AND CALLS APPROPRIATE FORMATTING
* DISPLAY PROCESSOR.
*
* ENTRY CONSOLE FUNCTIONED FOR RIGHT SCREEN.
* (DRSA - DRSA+4) = PROCESSOR CONTROL WORD.
* (T3) = BUFFER ADDRESS.
*
* EXIT TO DRS2.
*
* USES AB.
*
* CALLS DEI, DPE, DSS, D4D, LDO.
*
* MACROS DISPLA.
DFD RSOVL RSPLA
DISPHD (DDF. FORMATTED DISPLAY.)
LDM CTOS
OAN CH+40
ADM DBLS DOUBLE SPACE
ADN YINC BACK UP ONE
STD YC
DISPLA CH01,,(LINKAGE BYTES = )
LDI T3
RJM D4D DISPLAY FIRST BYTE
LDN 0
OAN CH+40
STD AB
LDM BFMS+1
RJM D4D DISPLAY SECOND BYTE
LDI T3
ZJN DFD2 IF EOF/EOI SECTOR
LDM BFMS+1
ZJN DFD5 IF EMPTY SECTOR
LDI T3
SHN 6
ADM BFMS+1
LMC 377777
NJN DFD1 IF NOT SYSTEM SECTOR
LDN DSSN SELECT SYSTEM SECTOR DISPLAY
UJN DFD3 LOAD PROCESSOR
DFD1 LDN DPEN SELECT PFC DISPLAY
UJN DFD3 LOAD PROCESSOR
DFD2 LDM BFMS+1
NJN DFD5 IF NOT EOI SECTOR
LDN DEIN SELECT EOI SECTOR DISPLAY
DFD3 LMM DFDB
ZJN DFD4 IF PROCESSOR LOADED
LMM DFDB
STM DFDB
RJM LDO LOAD DISPLAY OVERLAY
LDD CM SET PROCESSOR ADDRESS
STM DFDA
DFD4 LJM ** JUMP TO DISPLAY PROCESSOR
DFDA EQU *-1
DFD5 LJM DRS2 RETURN
DFDB DATA 0 CURRENT PROCESSOR ID
DCE SPACE 4,15
** DCE - DISPLAY PF CATALOG ENTRY.
*
* ENTRY (AB+2) = SET FOR CALL TO DMW.
* (T3) = BUFFER ADDRESS.
*
* EXIT DATA DISPLAYED.
*
* USES T1, AB, AB+1, CM, YC.
*
* CALLS DPT, DMW.
*
* MACROS DISPLA.
DCE SUBR ENTRY/EXIT
LDM CPFC SET *DMW* PARAMETERS
STD YC
LDN 0
STD AB
LDN NWCE
STD AB+1
LDC TPFC
STD AB+3
RJM DMW DISPLAY MEMORY WORDS
* DISPLAY DATES AND MODES.
LDM DBLS
RAD YC
LPC 7777
OAN CH+40
LDC -NWCE*5
ADD T3
STD CM
DISPLA CH01,,(CREATED )
LDD CM DISPLAY CREATION DATE
ADN FCCD
RJM DPT DISPLAY PACKED DATE AND TIME
DISPLA CH34,,( CT = )
LDM FCCT,CM DISPLAY FILE CATAGORY
SHN -6
STD T1
LDM DCEA,T1
OAN CH+40
DISPLA ,,( M = )
LDM FCAM,CM DISPLAY ACCESS MODE
LPN 77
STD T1
LDM DCEB,T1
OAN CH+40
LCN YINC
RAD YC
OAN CH+40
DISPLA CH01,,(MODIFIED )
LDD CM DISPLAY MODIFICATION DATE
ADN FCMD
RJM DPT
DISPLA CH35,,(CONTROL )
LDD CM DISPLAY CONTROL CHANGE DATE
ADN FCKD
RJM DPT
LCN YINC
RAD YC
OAN CH+40
DISPLA CH01,,(ACCESSED )
LDD CM DISPLAY LAST ACCESS DATE
ADN FCAD
RJM DPT
DISPLA CH35,,(UTILITY )
LDD CM DISPLAY UTILITY ACCESS DATE
ADN FCUD
RJM DPT
LJM DCEX RETURN
DCEA DATA 2HPR FILE CATAGORIES
DATA 2HSP
DATA 2HPU
DCEB DATA 2HWR ACCESS MODES
DATA 2HRD
DATA 2HAP
DATA 2HEX
DATA 2H
DATA 2HMD
DATA 2HRM
DATA 2HRA
DPT SPACE 4,10
** DPT - DISPLAY PACKED DATE AND TIME.
*
* ENTRY (A) = ADDRESS OF PACKED DATE AND TIME.
*
* USES T1, AB - AB+4.
*
* CALLS CDD.
DPT SUBR ENTRY/EXIT
STD T1
LDI T1 CONVERT YEAR
SHN -6
SBN 30D
PJN DPT1 IF YEAR GREATER THAN 1999
ADC 100D
DPT1 RJM CDD
SHN 6
LMN 1R/
STD AB+1
SHN -14
LMC 2L
STD AB
LDI T1 CONVERT MONTH
LPN 77
RJM CDD
STD AB+2
AOD T1
LDI T1 CONVERT DAY
SHN -6
RJM CDD
SHN 6
LMN 1R.
STD AB+4
SHN -14
LMC 2L /
STD AB+3
LDN 5 DISPLAY * YY/MM/DD.*
OAM AB,CH
LDI T1 CONVERT HOUR
LPN 77
RJM CDD
SHN 6
LMN 1R.
STD AB+1
SHN -14
LMC 2L
STD AB
AOD T1
LDI T1 CONVERT MINUTE
SHN -6
RJM CDD
STD AB+2
LDI T1 CONVERT SECOND
LPN 77
RJM CDD
SHN 6
LMN 1R.
STD AB+4
SHN -14
LMC 2L .
STD AB+3
LDN 5 DISPLAY * HH/MM/SS.*
OAM AB,CH
LJM DPTX RETURN
SPACE 4,10
** *DFD* COMMON DECKS.
*CALL COMPCDD
SPACE 4,10
* PFC TAGS FOR DISPLAYS.
TPFC DATA 10H FCFN/FCUI
DATA 10H FCLF/FCBT
DATA 10H FCRI/FCCD
DATA 10H FCAC/FCMD
DATA 10H FCCT/FCAD
DATA 10H FCKD
DATA 10H FCRS/FCUD
DATA 10H FCPW/FCXD
DATA 10H FCAF/FCAA
DATA 10H FCAL/FCFC
DATA 10H FCCN
DATA 10H FCP1
DATA 10H FCP2
DATA 10H FCTF/FCTV
DATA 10H FCCW
DATA 10H FCIW
SPACE 4,10
* FNT DISPLAY TAGS.
TFNT DATA 10H FNT
DATA 10H FST
DIS HERE
SPACE 4,10
QUAL
.1 SET *-RSPLA+4
FDPLA EQU RSPLA+.1/5*5 FORMATTED DISPLAY PROCESSOR LOAD ADDRESS
QUAL *
DSS SPACE 4,10
*** SYSTEM SECTOR DISPLAY.
* IF THE SECTOR CURRENTLY IN THE BUFFER IS A SYSTEM
* SECTOR, THE VARIOUS FIELDS THEREIN ARE DISPLAYED.
DSS SPACE 4,15
** DSS - DISPLAY SYSTEM SECTOR.
*
* ENTRY FROM DFD.
* CONSOLE FUNCTIONED FOR RIGHT SCREEN.
* (T3) = BUFFER ADDRESS.
* (YC) = Y-COORDINATE.
*
* EXIT TO DRS2.
*
* USES AB - AB+3, YC.
*
* CALLS DCE, DMW, DPT.
*
* MACROS DISPLA.
DSS RSOVL FDPLA
LDN 0 DISPLAY FNT/FST
STD AB
LDN 2
STD AB+1
LDN FNSS-BFMS
STD AB+2
LDC /DFD/TFNT
STD AB+3
RJM DMW DISPLAY MEMORY WORDS
LDM DBLS
RAD YC
LPC 7777
OAN CH+40
DISPLA CH01,,(SYSTEM SECTOR. UPDATED)
LDC DTSS+2 DISPLAY DATE AND TIME
RJM /DFD/DPT
* DISPLAY PFC ENTRY FOR DIRECT ACCESS OR FAST ATTACH FILES.
LDM FNSS+4 CHECK FILE TYPE
SHN -6
LMN PMFT
ZJN DSS1 IF DIRECT ACCESS PERMANENT FILE
LMN FAFT&PMFT
NJN DSS2 IF NOT FAST ATTACH FILE
DSS1 LDN CTSS-BFMS
STD AB+2
RJM /DFD/DCE DISPLAY CATALOG ENTRY
DSS2 LJM DRS2 RETURN
DIS HERE
DPE SPACE 4,10
*** PFC ENTRY.
* THE CONTENTS OF ONE PERMANENT FILE CATALOG ENTRY ARE
* DISPLAYED. THE CENTRAL MEMORY WORD NUMBER DISPLAYED
* IS RELATIVE TO THE BEGINNING OF THE PFC ENTRY. THE
* BYTE NUMBER RELATIVE TO THE BEGINNING OF THE SECTOR
* IS DISPLAYED IN PARENTHESIS AFTER THE CM WORD NUMBER.
* THE */* IS USED TO ADVANCE TO THE NEXT PFC ENTRY IN
* THE SECTOR.
DPE SPACE 4,15
** DPE - DISPLAY PFC ENTRY.
*
* ENTRY FROM DFD.
* CONSOLE FUNCTIONED FOR RIGHT SCREEN.
* (DRSA - DRSA+4) = PROCESSOR CONTROL WORD.
* (T3) = BUFFER ADDRESS.
* (YC) = Y-COORDINATE.
*
* EXIT TO DRS2.
*
* USES T2, AB+2, DRSA+4.
*
* CALLS DCE, D2S.
*
* MACROS DISPLA.
DPE RSOVL FDPLA
LDM DRSA+4 CHECK INDEX
SHN NWCES
SBM BFMS+1
PJN DPE1 IF NOT IN SECTOR
ADN NWCE-1
MJN DPE2 IF END OF PFC NOT IN SECTOR
DPE1 LDN 0
STM DRSA+4
DPE2 LCN YINC*2
RAD YC
OAN CH+40
DISPLA CH01,,(PFC ORDINAL = )
LDM DRSA+4
ADN 1R0
OAN CH+40
LDM DRSA+4
SHN NWCES
STD T2
SHN 2
ADD T2
ADN 2
STD AB+2
RJM /DFD/DCE DISPLAY CATALOG ENTRY
LJM DRS2 RETURN
DIS HERE
DEI SPACE 4,10
*** EOI SECTOR DISPLAY.
* IF THE SECTOR CURRENTLY IN THE BUFFER IS AN EOI
* SECTOR, THE VARIOUS FIELDS THEREIN ARE DISPLAYED.
DEI SPACE 4,15
** DEI - DISPLAY EOI SECTOR.
*
* ENTRY FROM DFD.
* CONSOLE FUNCTIONED FOR RIGHT SCREEN.
* (T3) = BUFFER ADDRESS.
*
* EXIT TO DRS2.
*
* USES AB - AB+3, YC.
*
* CALLS DMW, DPT.
*
* MACROS DISPLA.
DEI RSOVL FDPLA
LDN 0 DISPLAY FNT/FST
STD AB
LDN 2
STD AB+1
LDN FNEI
STD AB+2
LDC /DFD/TFNT
STD AB+3
RJM DMW DISPLAY MEMORY WORDS
LDM DBLS
RAD YC
LPC 7777
OAN CH+40
DISPLA CH01,,(EOI SECTOR. UPDATED)
LDC BFMS+DTEI+2 DISPLAY DATE AND TIME
RJM /DFD/DPT
LJM DRS2 RETURN
DIS HERE
SPACE 4,10
RSOVL END OF RIGHT SCREEN PROCESSORS
QUAL PRESET
.1 MAX DSSL,DPEL,DEIL
.2 SET FDPLA-RSPLA
.MRSPL MAX .MRSPL,.2/5+.1 MAXIMUM TOTAL OVERLAY AREA
QUAL *
MRSPL EQU /PRESET/.MRSPL MAX RIGHT SCREEN PROCESSOR LENGTH
SPACE 4,15
** AUXILIARY COMMAND ROUTINES ORIGIN DEFINITION.
*
* THIS AREA AT THE END OF THE RIGHT SCREEN PROCESSOR OVERLAY
* AREA MAY BE USED BY COMMAND PROCESSORS FOR EXTRA SUBROUTINES.
* BEFORE LOADING THE SUBROUTINES, THE COMMAND PROCESSOR MUST
* FIRST SET THE DISPLAY INDEX (RS) TO *DFBN* TO SELECT THE
* SHORTEST DISPLAY OVERLAY (*DFB*). NOTE THAT THIS MUST BE
* DONE BEFORE EACH CALL TO REFRESH THE DISPLAY TO OVERRIDE ANY
* KEYBOARD REQUESTS THAT CHANGE THE RIGHT SCREEN DISPLAY.
*
* ** THE *DFB* DISPLAY MUST NOT USE ANY SECONDARY OVERLAYS. **
ACRLA EQU RSPLA+/PRESET/DFBL*5
MACRL EQU MRSPL-/PRESET/DFBL MAXIMUM LENGTH OF OVERLAY
SPACE 4,10
** RESIDENT OVERLAY ORIGIN DEFINITION.
*
* THIS OVERLAY IS LOADED ONCE AND REMAINS IN THE PP.
RESLA EQU RSPLA+MRSPL*5-4 RESIDENT LOAD ADDRESS
SPACE 4,10
OVERFLOW PPFW
OVERLAY RESLA,(RESIDENT ROUTINES.)
QUAL *
BSS 2
LJM PRR PRESET RESIDENT ROUTINES
* ABOVE CODE MAY BE OVERLAYED BY RIGHT SCREEN PROCESSORS.
TITLE KEYBOARD INPUT PROCESSING.
*** KEYBOARD INPUT.
* IF THE CHARACTERS ARE THE FIRST ENTRY, THE FOLLOWING
* APPLIES -
* *+* READS THE NEXT SECTOR. IF AT EOI OR END OF THE TRACK THE
* CURRENT SECTOR IS REREAD.
* *-* READS THE PREVIOUS SECTOR. IF AT THE BEGINNING OF TRACK
* THE CURRENT SECTOR IS REREAD.
* *.* ADVANCES TO TRACK IN THE CONTROL BYTES AND SETS THE
* SECTOR TO 0. IF THE CONTROL BYTES DO NOT CONTAIN A
* TRACK LINK, THE CURRENT SECTOR IS REREAD.
* *,* ADVANCES TO THE NEXT TRACK IN THE TRT CHAIN. THE SECTOR
* NUMBER IS NOT CHANGED. IF CURRENTLY IN THE LAST
* TRACK IN THE CHAIN, THE CURRENT SECTOR IS REREAD.
* *=* READS THE NEXT SECTOR AFTER EOI. IF THE EOI IS AT THE
* END OF AN EOI TRACK, THE CURRENT SECTOR IS REREAD.
* *CR* SETS *REPEAT ENTRY.*
* * * READS THE CURRENT SECTOR INTO THE BUFFER.
* (*) HOLDS DISPLAY.
* *8* INCREMENTS THE TRACK NUMBER BY ONE AND READS THE SECTOR.
* *9* DECREMENTS THE TRACK NUMBER BY ONE AND READS THE SECTOR.
* RIGHT BLANK OR TAB CHANGES THE RIGHT SCREEN DISPLAY.
* */* ADVANCES THE ADDRESS DISPLAYED ON THE RIGHT SCREEN.
*
* ALL COMMANDS ARE DISPLAYED ON THE BOTTOM OF THE LEFT SCREEN
* AS THEY ARE ENTERED.
*
* *CR* MUST FOLLOW ALL COMMANDS BEFORE ACTION IS TAKEN.
* *BKSP* DELETES THE PREVIOUS CHARACTER TYPED.
* LEFT BLANK OR BACKTAB DELETES THE CURRENT LINE BEING ENTERED.
*
* COMMANDS ARE PROCESSED INTERPRETIVELY. AFTER THE PERIOD (.)
* ANY ALPHA-NUMERIC CHARACTERS CAN BE ENTERED, HOWEVER, THE
* MESSAGE *FORMAT ERROR.* OR *INCORRECT PARAMETER.* WILL APPEAR
* AFTER THE *CR* IS ENTERED IF AN ERROR IS MADE.
*
* NOTE THAT MOST COMMANDS DO NOT CAUSE A SECTOR TO ACTUALLY
* BE READ AND DISPLAYED. AFTER ENTERING COMMANDS THAT CHANGE
* THE EQUIPMENT, TRACK, OR SECTOR A SPACE MUST BE ENTERED TO
* READ THE SECTOR. THIS ALLOWS DATA FROM ONE SECTOR TO BE
* READ AND WRITTEN TO ANOTHER SECTOR.
*
* AFTER A COMMAND THAT CHANGES THE EQUIPMENT OR TRACK, THE
* TRACK AND SECTOR NUMBERS ARE CHECKED. IF EITHER THE TRACK
* OR SECTOR IS ILLEGAL ON THE EQUIPMENT/TRACK, IT WILL BE SET
* TO ZERO.
*
DKB SPACE 4,10
** DKB - DISPLAY KEYBOARD BUFFER.
*
* ENTRY (KM) = ADDRESS OF KEYBOARD MESSAGE.
* (DK) = DISPLAY KEYBOARD CONTROL(721 ONLY).
*
* EXIT (A) = (DK), ZERO FOR CC545.
*
* USES DK, T1, YC.
*
* MACROS CFNC, DFIM.
DKB SUBR ENTRY/EXIT
CFNC SLPF SELECT LEFT PRIORITY OUTPUT
DFIM (CON LN51),*+1
LDC LN49-YINC/2 SET Y-COORDINATE
STD YC
DFIM (UJN DKB1)
* DISPLAY KEYBOARD BUFFER IN MEDIUM CHARACTERS ON CC545.
DCN CH+40
CFNC SLMF SELECT LEFT SCREEN, MEDIUM CHARACTERS
LDN 4 SET INTENSIFICATION COUNT
STD DK
DKB1 LDN 2 OUTPUT COORDINATES
OAM XC,CH
* LDN 0
STD T1
DKB2 LDM KBUF,T1
ZJN DKB3 IF END OF KEYBOARD LINE
SHN 6
ADM KBUF+1,T1
OAN CH+40
LDN 2 ADVANCE INDEX
RAD T1
SBD KI
MJN DKB2 IF NOT END OF KEYBOARD LINE
DKB3 CFNC EELF ERASE TO END OF LINE
* DISPLAY KEYBOARD MESSAGE(S) IF SET.
LDN 2 OUTPUT ERROR MESSAGE LINE COORDINATE
OAM DKBA,CH
LDD KM
ZJN DKB5 IF ERROR MESSAGE NOT SET
STD T1 SET MESSAGE ADDRESS
DKB4 LDI T1 DISPLAY MESSAGE
OAN CH+40
LPN 77
ZJN DKB5 IF END OF MESSAGE
AOD T1
UJN DKB4 DISPLAY NEXT BYTE
DKB5 LDD SB
NJN DKB6 IF SYSTEM BUSY FLAG CLEAR
DISPLA ,,(SYSTEM BUSY.)
* LOOP FOR PROPER INTENSIFICATION.
DFIM (CFNC EELF)
DKB6 SOD DK
ZJN DKB7 IF INTENSIFICATION COMPLETE
LJM DKB1 LOOP
DKB7 FJM *,CH IF CHANNEL FULL, WAIT UNTIL EMPTY
DCN CH+40
LDD DK
LJM DKBX RETURN
* COORDINATES FOR ERROR MESSAGE LINE.
DKBA CON CH01
DFIM (CON LN50)
CON LN48+YINC/2
PKI SPACE 4,10
** PKI - PROCESS KEYBOARD INPUT.
*
* EXIT TO SPECIAL CHARACTER PROCESSOR.
* TO FIRST CHARACTER PROCESSOR.
* TO *BSP* IF KEYBOARD BUFFER FULL.
* TO *IKE* IF NOT A SPECIAL CHARACTER.
*
* USES DK, EF, KE, KI, T1.
*
* CALLS BSP, DKB, IKE, SPECIAL CHARACTER PROCESSORS.
PKI8 STM PKIA STORE CHARACTER
PKI9 LDN 0
STD DK
PKIX RJM DKB DISPLAY KEYBOARD LINE
NJN PKI1 IF INPUT NOT COMPLETE
LJM * ENTRY/EXIT
PKI EQU *-1
*PKI SUBR ENTRY/EXIT
LDN 0
STD DK
PKI1 CFNC SKIF SELECT KEYBOARD INPUT
IAN CH+40
DCN CH+40
STD KE
ZJN PKI8 IF NO INPUT
DFIM (UJN PKI3)
LDC 60B PRESET TO *CR*
PKIA EQU *-1
ZJN PKI2 IF NO PREVIOUS CHARACTER
SOM PKIB DECREMENT COUNTER
NJN PKI9 IF DELAY NOT ELAPSED
LDN 20 SET REPEAT DELAY
PKI2 LMN 24 SET INITIAL DELAY
STM PKIB
PKI3 LDD KE
STM PKIA
SBN 63
PJN PKI9 IF ILLEGAL CHARACTER
ADN 63-1R8
MJN PKI7 IF NOT SPECIAL FIRST CHARACTER
LDD KI
NJN PKI4 IF NOT FIRST CHARACTER
LDM PKIC-1R8,KE GET ADDRESS OF PROCESSOR
STD T1
UJN PKI5 PROCESS COMMAND
PKI4 LDD KE
SBN 53
MJN PKI7 IF NOT SPECIAL CHARACTER
LDM PKID-53,KE GET ADDRESS OF PROCESSOR
STD T1
PKI5 LJM 0,T1 PROCESS COMMAND
PKI6 LDN 1R REPLACE CODE FOR SPACE
STD KE
PKI7 LDN 0 CLEAR EXECUTE FLAG
STD EF
LDD KE
STM KBUF,KI
AOD DK
AOD KI
LMK KBUFL-1
NJN IKE IF BUFFER NOT FULL
LJM BSP DELETE LAST CHARACTER ENTERED
PKIB CON 1 DELAY COUNT
PKIC SPACE 4,10
* TABLE OF SPECIAL FIRST CHARACTERS.
PKIC BSS 0
LOC 1R8
CON ITN 8 - INCREMENT TRACK NUMBER
CON DTN 9 - DECREMET TRACK NUMBER
CON AOS + - ADVANCE ONE SECTOR
CON BOS - - BACKUP ONE SECTOR
CON DDC * - DROP DISPLAY CHANNEL
CON IRD / - INCREMENT RIGHT DISPLAY
CON PKIX (
CON PKIX )
CON CMB LEFT BLANK - CLEAR MESSAGE AND KEYBOARD
CON APE = - ADVANCE PAST EOI
CON RRD RIGHT BLANK - ROTATE RIGHT DISPLAY
CON AOT , - ADVANCE ONE TRACK
CON ATZ . - ADVANCE ONE TRACK AND ZERO SECTOR NO.
CON SRE CR - SET REPEAT ENTRY
CON PKIX BKSP
CON RCS SPACE - READ CURRENT SECTOR
LOC *O
PKID SPACE 4,10
* TABLE OF SPECIAL CHARACTERS.
PKID BSS 0
LOC 53
CON CMB LEFT BLANK - CLEAR MESSAGE AND KEYBOARD
CON PKI7 =
CON RRD RIGHT BLANK - ROTATE RIGHT DISPLAY
CON PKI7 ,
CON PKI7 .
CON PEC CR - PROCESS ENTERED COMMAND
CON BSP BKSP - DELETE LAST CHARACTER
CON PKI6 SPACE
LOC *O
IKE SPACE 4,15
** IKE - INTERPRET KEYBOARD ENTRY.
*
* ENTRY (EF) = 0 IF INTERPRET ONLY.
* (EF) " 0 IF EXECUTE REQUESTED.
* (KI) = END OF BUFFER POINTER.
* (TA) = CM FWA OF COMMAND TABLE.
*
* EXIT TO PKIX IF EXECUTE NOT REQUESTED.
* TO EMC IF FIRST CHARACTER 0 - 7.
* TO COMMAND PROCESSOR IF EXECUTE AND COMMAND COMPLETE.
* (CA) = ADDRESS OF NEXT CHARACTER IN BUFFER.
*
* USES T1 - T3, CA, CM, KM.
*
* CALLS EMC, COMMAND PROCESSORS.
IKE LDN 0
STD T1 SET TRIAL CHARACTER
STD CM SET SYNTAX TABLE INDEX
LDM KBUF CHECK FIRST CHARACTER
SBN 1R0
MJN IKE1 IF ALPHABETIC
SBN 8D
PJN IKE1 IF ABOVE 7
LJM EMC PROCESS MEMORY CHANGE COMMAND
IKE1 LDN 2 SET SYNTAX ENTRY LENGTH
STD T2
LDD RA READ ENTRY
ADD TA
SHN 6
ADD CM
CRM IKEA,T2
LDN 2 ADVANCE INDEX FOR NEXT PASS
RAD CM
LDC IKEA SET ENTRY POINTER
STD T2
LDI T2
NJN IKE2 IF NOT END OF TABLE
LJM IKE9 PROCESS END OF SCAN
IKE2 LDC KBUF SET CHARACTER ADDRESS
STD CA
IKE3 LDI T2 COMPARE UPPER
SHN -6
ZJN IKE7 IF COMPARE COMPLETE
STD T3
LMI CA
NJN IKE4 IF NO MATCH
AOD CA
LDI T2 COMPARE LOWER
LPN 77
ZJN IKE7 IF COMPARE COMPLETE
STD T3
LMI CA
NJN IKE4 IF NO MATCH
AOD T2
AOD CA
UJN IKE3 LOOP
* PROCESS NO MATCH FOUND.
IKE4 LDI CA
NJN IKE5 IF DIFFERENT CHARACTER
LDD T1
NJN IKE6 IF NOT UNIQUE ENTRY
LDD T3 SET NEXT CHARACTER
STD T1
IKE5 LJM IKE1 LOOP
IKE6 LMD T3
ZJN IKE5 IF SAME CHARACTER
UJN IKE10 CHECK EXECUTE FLAG
* PROCESS UNIQUE CHARACTER.
IKE7 LDD EF
NJN IKE8 IF EXECUTE FLAG SET
LJM PKIX RETURN IF INTERPRET ONLY
* PROCESS COMMAND.
IKE8 LDM IKEA+10 SET WORD COUNT
SHN -6
STD T1
LDM IKEA+10 GET CM ADDRESS
LPN 37
SHN 6
ADD RA
SHN 6
ADM IKEA+11
CRM CPLA,T1 READ COMMAND PROCESSOR
LJM CPLA EXECUTE COMMAND
* PROCESS END OF FORMAT SCAN.
IKE9 LDD T1
NJN IKE12 IF UNIQUE CHARACTER
STM KBUF-1,KI BACKSPACE POINTER
SOD KI
IKE10 LDD EF
ZJN IKE11 IF EXECUTE FLAG NOT SET
LDC SREA *REPEAT ENTRY.*
STD KM
IKE11 LJM PKIX RETURN
IKE12 SBN 1R=
PJN IKE10 IF SPECIAL CHARACTER
LDD T1 FILL NEXT CHARACTER
STM KBUF,KI
AOD KI
LJM IKE LOOP
IKEA BSS 12 COMMAND SYNTAX BUFFER
SPACE 4,10
** EXIT ROUTINES FOR COMMAND PROCESSORS.
ERR SPACE 4,10
** ERR - SET ERROR MESSAGE.
ERR1 LDC =C*FORMAT ERROR.*
UJN ERR SET MESSAGE
ERR2 LDC =Z*INCORRECT PARAMETER.*
UJN ERR SET MESSAGE
ERR3 LDC =Z*NOT FOUND.*
UJN ERR SET MESSAGE
ERR4 LDC =Z*INCORRECT ENTRY.*
UJN ERR SET MESSAGE
ERR5 LDC =Z*INCORRECT EQUIPMENT.*
ERR STD KM
UJN RET RETURN
IMS SPACE 4,10
** IMS - INITIALIZE MASS STORAGE DRIVERS AND RANDOM ACCESS.
IMS RJM CTS CHECK TRACK AND SECTOR NUMBERS
* UJN RET RETURN
RET SPACE 4,10
** RET - NORMAL RETURN.
RET LDN 0 CLEAR INDEX
RET1 STD T1 SET CLEARING INDEX
LDD KM
NJN RET3 IF MESSAGE SET
LDD T1 SET KEYBOARD INDEX
STD KI
RET2 LDN 0 CLEAR BUFFER
STM KBUF,T1
AOD T1
LMC KBUFL
NJN RET2 IF NOT END OF BUFFER
RET3 LDC RCPX RESTORE LOOP
STM RCPA
STD SB CLEAR *SYSTEM BUSY* INDICATION
LJM PKIX RETURN
SBN SPACE 4,10
** SBN - SET BYTE NUMBER MESSAGE.
*
* (FN) = BYTE NUMBER.
SBN LDD FN CONVERT NUMBER
SHN -6
RJM C2D CONVERT TOP TWO DIGITS
STM SBNB
LDD FN
RJM C2D CONVERT TWO DIGITS
STM SBNB+1
* CHECK RIGHT SCREEN PAGE.
LDD RS
SBK DFBN
DFIM (ZJN SBN1)
ZJN SBN3 IF FIVE BYTE DISPLAY
SBN DLCN-DFBN
DFIM (MJN SBN3)
MJN SBN4 IF TEN BYTE OR TEXT DISPLAY
ZJN SBN4 IF COMMAND DISPLAY
* SET PAGE NUMBER FOR FOUR PAGE DISPLAY.
SBN1 LDN 0
STM DRSA+4
LDC -2-500/4
SBN2 RAD FN
MJN SBN4 IF ON CURRENT PAGE
AOM DRSA+4
LDC -500/4
UJN SBN2 LOOP TO CHECK NEXT PAGE
* SET PAGE NUMBER FOR TWO PAGE DISPLAY.
SBN3 LDD FN
ADC -242
SHN 0-21
LMN 1
STM DRSA+4
SBN4 LDC SBNA
LJM SKM DISPLAY MESSAGE
SBNA DATA H* BYTE *
SBNB DATA Z*NNNN.*
SCP SPACE 4,10
** SCP - START UP CPU PROGRAM.
*
* ENTRY (A) = FUNCTION NUMBER * 2 + 1.
* (CM - CM+4) = CONTENTS OF CPU STATUS WORD.
SCP STD CM+4
LDD RA
SHN 6
ADN D
CWD CM
LJM RET RETURN
SKM SPACE 4,10
** SKM - SET KEYBOARD MESSAGE.
*
* ENTRY (A) = ADDRESS OF MESSAGE.
SKM EQU ERR
SPACE 4,10
** SPECIAL CHARACTER PROCESSORS.
AOS SPACE 4,10
** AOS - ADVANCE ONE SECTOR.
AOS LDD SC CHECK SECTOR COUNT
SBD LS
ZJN AOS1 IF END OF TRACK
LDM BFMS
ADM BFMS+1
ZJN AOS1 IF END OF INFORMATION
AOD SC
AOS1 LJM RCS READ SECTOR
AOT SPACE 4,10
** AOT - ADVANCE ONE TRACK.
AOT RJM SNT GET NEXT TRACK
SHN 6
PJN AOT1 IF END OF CHAIN
SHN -6
STD TK
AOT1 UJN ATZ2 CHECK TRACK NUMBER
APE SPACE 4,10
** APE - ADVANCE PAST EOI.
APE LDD SC
SBD LS
ZJN APE1 IF END OF TRACK
AOD SC ADVANCE TO NEXT SECTOR
UJN APE2 READ SECTOR
APE1 RJM SNT GET NEXT TRACK
SHN 6
PJN APE2 IF EOI TRACK
SHN -6
STD TK
LDN 0
STD SC
APE2 LJM RCS READ SECTOR
ATZ SPACE 4,10
** ATZ - ADVANCE ONE TRACK AND ZERO SECTOR.
ATZ LDM BFMS
NJN ATZ1 IF NOT EOF
LDM BFMS+1
ATZ1 SHN 6
PJN ATZ2 IF NOT CHAIN BYTE
SHN -6
STD TK SET NEXT TRACK
LDN 0
STD SC
ATZ2 RJM CTS CHECK SECTOR LIMIT
LJM RCS READ SECTOR
BOS SPACE 4,10
** BOS - BACKUP ONE SECTOR.
BOS LDD SC
ZJN BOS1 IF BEGINNING OF TRACK
SOD SC
BOS1 LJM RCS READ SECTOR
BSP SPACE 4,10
** BSP - BACKSPACE KEYBOARD BUFFER.
BSP SOD KI DECREMENT POINTER
LDD KM
LMC SREA
ZJN BSP1 IF *REPEAT ENTRY.*
LDN 0
STD KM CLEAR MESSAGE
BSP1 STM KBUF,KI CLEAR LAST CHARACTER
LJM RET3 RESTORE LOOP
CMB SPACE 4,10
** CMB - CLEAR MESSAGE AND BUFFER.
CMB LDN 0 CLEAR KEYBOARD MESSAGE
STD KM
STM RDCT CLEAR DRIVER ERROR CODE
STD CM CLEAR CONTROL POINT MESSAGES
LDD CP
ADN MS1W
CWD CM
ADN MS2W-MS1W
CWD CM
LJM RET CLEAR KEYBOARD BUFFER
DDC SPACE 4,10
** DDC - DROP DISPLAY CHANNEL.
DDC RJM HDC HOLD DISPLAY CHANNEL
RJM CSB CLEAR SCREEN BUFFER
UJN IRD1 RETURN TO *PKIX*
DTN SPACE 4,10
** DTN - DECREMENT TRACK NUMBER.
DTN SOD TK
DTN1 LPC 3777
ADC 4000
STD TK
LJM ATZ2 CHECK TRACK NUMBER
IRD SPACE 4,10
** IRD - INCREMENT RIGHT DISPLAY.
IRD AOM DRSA+4 INCREMENT DISPLAY INDEX
LPC 777
STM DRSA+4
IRD1 LJM PKIX RETURN
ITN SPACE 4,10
** ITN - INCREMENT TRACK NUMBER.
ITN AOD TK
UJN DTN1 CHECK TRACK NUMBER
PEC SPACE 4,10
** PEC - PROCESS ENTERED COMMAND.
PEC LDN 1 SET EXECUTE FLAG
STD EF
LJM IKE CHECK COMMAND
RCS SPACE 4,10
** RCS - READ CURRENT SECTOR.
RCS RJM RSB READ SECTOR
LJM RET3 RESTORE MAIN LOOP
RRD SPACE 4,10
** RRD - ROTATE RIGHT DISPLAY.
RRD AOD RS INCREMENT RIGHT DISPLAY POINTER
SBN MXDI
NJN RRD1 IF LEGAL DISPLAY
STD RS
RRD1 UJN IRD1 RETURN TO *PKIX*
SRE SPACE 4,10
** SRE - SET REPEAT ENTRY.
SRE LDC SREA
STD KM
UJN RRD1 RETURN TO *PKIX*
SREA DATA Z*REPEAT ENTRY.*
TITLE MEMORY CHANGES.
EMC SPACE 4,10
*** MEMORY CHANGES.
* XXX,YYYY. ENTER YYYY INTO BYTE XXX.
* XXX,DCC ENTER CHARACTERS CC IN BYTE XXX.
*
* IF THE COMMA *,* IS REPLACED BY A PLUS *+*, THE BYTE NUMBER
* WILL BE INCREMENTED AFTER THE ENTRY IS PROCESSED. THE ACTUAL
* DATA ON THE DISK IS NOT CHANGED UNTIL THE WRITE COMMAND IS
* ENTERED.
EMC SPACE 4,10
** EMC - ENTER MEMORY CHANGE.
*
* ENTRY (EF) = 0 IF INTERPRET ONLY.
* (EF) " 0 IF EXECUTE REQUESTED.
*
* USES T1, AB+4, CM, CA, KM, RC.
*
* CALLS BSP, CDR, RET.
EMC LDC KBUF
STD CA
RJM CDR CONVERT BYTE NUMBER
ZJN EMC2 IF NO MORE CHARACTERS
LMN 1R+
ZJN EMC1 IF *+*
LMN 1R,&1R+
NJN EMC3 IF ILLEGAL CHARACTER
EMC1 LDD AB+4
STD RC
ADC -502
PJN EMC3 IF BYTE NUMBER TOO LARGE
LDD CA
STD CM
AOD CA
LDI CA
LMN 1RD
ZJN EMC6 IF CHARACTER ENTRY
* ENTER OCTAL VALUE.
RJM CDR CONVERT VALUE
EMC2 ZJN EMC4 IF NO MORE CHARACTERS
LMN 1R.
ZJN EMC7 IF *.*
EMC3 LJM BSP DELETE ILLEGAL CHARACTER
* INCOMPLETE ENTRY.
EMC4 LDD EF
ZJN EMC5 IF EXECUTE NOT REQUESTED
LDC SREA SET *REPEAT ENTRY.*
STD KM
EMC5 LJM PKIX RETURN
* ENTER DISPLAY CODE.
EMC6 LDM 3,CA
NJN EMC3 IF TOO MANY CHARACTERS
LDM 1,CA
SHN 6
ADM 2,CA
STD AB+4 VALUE
* ENTRY COMPLETE.
EMC7 LDD EF
ZJN EMC5 IF EXECUTE NOT REQUESTED
LDD AB+4
STM BFMS,RC STORE VALUE
LDI CM
LMN 1R+
ZJN EMC8 IF *+* TYPE ENTRY
LJM RET RETURN
* *+* ENTRY, ADVANCE ADDRESS.
EMC8 LDD CM
SBN 1
STD T1
EMC9 AOI T1 ADVANCE ADDRESS
SBN 1R8
MJN EMC11 IF NO OVERFLOW
LDN 1R0 RESET DIGIT
STI T1
SOD T1
ADC -KBUF
PJN EMC9 IF MORE DIGITS
LDN KBUFL-1
STD T1
EMC10 LDM KBUF,T1 SHIFT BUFFER ONE CHARACTER RIGHT
STM KBUF+1,T1
SOD T1
PJN EMC10 IF MORE CHARACTERS
LDN 1R1
STM KBUF ADD LEADING 1
AOD CM INCREMENT CHARACTER COUNT
EMC11 LDM 1,CM
LMN 1RD
NJN EMC12 IF NOT CHARACTER ENTRY
AOD CM
EMC12 LDD CM
ADC -KBUF+1
LJM RET1 CLEAR LAST PART OF ENTRY
TITLE SUBROUTINES.
ASD SPACE 4,10
** ASD - ASSEMBLE DIGITS.
*
* ENTRY (CA) = ADDRESS OF CHARACTER STRING.
*
* EXIT (AB - AB+4) = ASSEMBLY.
* TO ERR IF NOT TERMINATED BY A *.*.
*
* CALLS CDR, ERR1.
ASD SUBR ENTRY/EXIT
RJM CDR CONVERT DIGITS
LMN 1R.
ZJN ASDX IF PERIOD
LJM ERR1 *FORMAT ERROR.*
ASN SPACE 4,10
** ASN - ASSEMBLE NAME.
*
* ENTRY (CA) = ADDRESS OF CHARACTER STRING.
*
* EXIT (FN - FN+4) = NAME (LEFT JUSTIFIED).
* TO ERR IF ILLEGAL CHARACTER OR MORE THAN 7 CHARACTERS.
*
* USES T1, T2.
*
* CALLS ERR2.
ASN3 LDD T2 ADD CHARACTER TO NAME
STM FN,T1
ASN SUBR ENTRY/EXIT
LDN ZERL
CRD FN
LDN 0
STD T1
ASN1 LDI CA ASSEMBLE CHARACTERS
ZJN ASN2 IF END OF CHARACTER STRING
SBN 1R.
ZJN ASNX IF TERMINATOR
LDI CA SAVE CHARACTER
SHN 6
STD T2
AOD CA
LDI CA
ZJN ASN2 IF END OF CHARACTER STRING
SBN 1R.
ZJN ASN3 IF TERMINATOR
LDI CA ADD CHARACTERS TO NAME
LMD T2
STM FN,T1
AOD CA
AOD T1
SBN 4
MJN ASN1 IF LESS THAN 7 CHARACTERS
ASN2 LJM ERR2 *INCORRECT PARAMETER.*
CDR SPACE 4,10
** CDR - CONVERT DIGITS RIGHT ADJUSTED.
*
* ENTRY (CA) = ADDRESS OF CHARACTER STRING.
*
* EXIT (A) = SEPARATOR CHARACTER.
* (AB - AB+4) = ASSEMBLY.
* (CA) = ADDRESS OF SEPAROTOR CHARACTER.
*
* USES T2, T3, CA.
CDR SUBR ENTRY/EXIT
LDN ZERL CLEAR ASSEMBLY AREA
CRD AB
CDR1 LDI CA LOAD CHARACTER
SBN 1R0
MJN CDR2 IF ALPHA
SBN 1R8-1R0
MJN CDR3 IF OCTAL DIGIT
SBN 1R -1R8
ZJN CDR5 IF SPACE
CDR2 LDI CA LOAD CHARACTER
UJN CDRX RETURN
CDR3 ADN 1R8-1R0 STORE DIGIT
STD T3
LDN AB+4 SET BYTE ADDRESS
STD T2
CDR4 LDI T2 LOAD BYTE
SHN 3
ADD T3 ADD NEW DIGIT
STI T2 STORE
SHN -14 SAVE OVERFLOW
STD T3
SOD T2 ADVANCE BYTE ADDRESS
LMN AB-1
NJN CDR4 IF NOT END OF ASSEMBLY AREA
CDR5 AOD CA ADVANCE ADDRESS
UJN CDR1 LOOP
CEQ SPACE 4,10
** CEQ - CHECK EQUIPMENT.
*
* ENTRY (EQ) = EQUIPMENT.
*
* EXIT TO *ERR5* IF INCORRECT EQUIPMENT.
*
* USES CM - CM+4.
*
* MACROS SFA.
CEQ SUBR ENTRY/EXIT
SFA EST,EQ READ EST ENTRY
ADK EQDE
CRD CM
LDD CM+4 MST ADDRESS/10
SHN 3
ADN DDLL
CRD CM
LDD CM
SHN 21-12
PJN CEQX IF NOT NULL EQUIPMENT
LJM ERR5 *INCORRECT EQUIPMENT.*
CLB SPACE 4,10
** CLB - CHECK LOCK BIT.
*
* EXIT TO ERR IF KEYBOARD LOCKED.
* (CM - CM+4) = *SSTL* WORD READ FROM CMR.
*
* USES CM - CM+4.
*
* CALLS ERR.
CLB SUBR ENTRY/EXIT
LDK SSTL CHECK *SECURITY-UNLOCK* BIT
CRD CM
LDD CM
SHN 21-11
MJN CLBX IF UNLOCKED
LJM ERR4 *INCORRECT ENTRY.*
CSA SPACE 4,10
** CSA - COMPUTE SCRATCH AREA ADDRESS.
*
* ENTRY (CA) = POINTER TO NEXT CHARACTER.
*
* EXIT (CA) UPDATED.
* (T2) = ADDRESS OF SCRATCH AREA.
*
* CALLS ERR1, ERR2.
CSA SUBR ENTRY/EXIT
LDI CA
SBN NSRA+1
PJN CSA1 IF ILLEGAL CHARACTER
LDI CA CALCULATE ADDRESS
SBN 1
SHN 3
ADI CA
ADC SRA-1
STD T2
AOD CA CHECK NEXT CHARACTER
LDI CA
LMN 1R.
ZJN CSAX IF LEGAL SEPARATOR
LJM ERR1 *FORMAT ERROR.*
CSA1 LJM ERR2 *INCORRECT PARAMETER.*
CSB SPACE 4,10
** CSB - CLEAR SCREEN BUFFER.
*
* CLEAR SCREEN BUFFER, RESET TOP OF PAGE, AND SET *PKI*-S
* RETURN ADDRESS TO *DDF1* WHEN THE CONSOLE TYPE IS A *CDC721*.
*
* USES T1.
*
* MACROS CFNC, DFIM.
CSB1 LDN CSBAL-1
STD T1
CSB2 LDM CSBA,T1 ISSUE FUNCTION
CFNC
SOD T1
PJN CSB2 IF MORE FUNCTIONS
LDC DDF1 SET *PKI* EXIT
STM PKI
CSB SUBR ENTRY/EXIT
DFIM (UJN CSB1)
UJN CSBX RETURN
CSBA BSS 0 TABLE OF FUNCTION CODES IN REVERSE ORDER
CON CHSF CLEAR HIDDEN SCREEN
CON RTPF RESET TOP OF PAGE
CON SRSF SELECT RIGHT SCREEN, SMALL CHARACTERS
CON RTPF RESET TOP OF PAGE
CON SLSF SELECT LEFT SCREEN, SMALL CHARACTERS
CSBAL EQU *-CSBA
CTR SPACE 4,10
** CTR - CHECK TRACK RESERVATION BIT.
*
* EXIT (A) .LT. 0 IF RESERVATION BIT SET.
*
* CALLS SNT.
CTR SUBR ENTRY/EXIT
RJM SNT SET NEXT TRACK
LDD T1
ADC SHNI+22-4
STM CTRA
LDD CM+4
CTRA SHN **
UJN CTRX RETURN
CTS SPACE 4,10
** CTS - CHECK TRACK AND SECTOR AND ZERO IF TOO LARGE.
*
* ENTRY (EQ) = EST ORDINAL.
*
* EXIT (A) .NE. 0, IF DEVICE IS INACCESSIBLE. (OFF OR DOWN)
* (LS) = LAST SECTOR FOR CURRENT TRACK AND EQUIPMENT.
* (LT) = MAXIMUM TRACK NUMBER FOR DEVICE.
* (SC) = 0 IF IT WAS LARGER THAN THE SECTOR LIMIT.
* (TK) = 4000 IF IT WAS LARGER THAN (LT).
*
* USES AB - AB+4, CM - CM+4.
CTS SUBR ENTRY/EXIT
CTSA SETMS IO,(AR,NS,AD,RW,DF)
* SETMS IO,(RR,NR,NS,AD,RW,DF) (ERROR PROCESSING ENABLED)
LDD CM+4 SET FIRST WORD OF TRT
SHN 3
ADK TDGL
CRD CM
ADK TRLL-TDGL
CRD AB
LDD AB+3
LPN 77
SHN 14
LMD AB+4
SBD TH =4000/4
STM DLSA+1
STM SNTA+1
SHN -14
LMC ADCI
STM DLSA
STM SNTA
LDD CM GET MAXIMUM TRACK
ADC 4000-1
STD LT
SBD TK
PJN CTS1 IF LEGAL TRACK
LDC 4000
STD TK
CTS1 LDM SLM CHECK SECTOR
SBN 1
STD LS
SBD SC
PJN CTS2 IF LEGAL SECTOR
LDN 0
STD SC
CTS2 UJP CTSX RETURN
DMW SPACE 4,20
** DMW - DISPLAY MEMORY WORDS.
*
* ENTRY (AB) = WORD NUMBER OF FIRST LINE TO DISPLAY.
* (AB+1) = WORD NUMBER+1 OF LAST LINE.
* (AB+2) = INDEX FOR FIRST BYTE TO DISPLAY.
* (AB+3) = N TO DISPLAY KEYWORD TABLE.
* (N = FWA OF TABLE, 10 CHARACTERS PER ENTRY.)
* = 0 TO SUPPRESS KEYWORD DISPLAY.
* (YC) = Y-COORDINATE ABOVE FIRST LINE TO BE DISPLAYED.
*
* EXIT (AB) = (AB+1).
* (T3) = ADDRESS OF LAST BYTE DISPLAYED + 1.
* (YC) = Y-COORDINATE OF LAST LINE DISPLAYED.
*
* USES T3, AB, AB+2, YC, RC.
*
* CALLS D2D, D4D, ODC.
DMW SUBR ENTRY/EXIT
LDD AB
SBD AB+1
PJN DMWX IF NOTHING TO DISPLAY
LDD AB+3 SET TABLE ADDRESS
STM DMWA
LDD AB+2 SET BYTE ADDRESS
ADC BFMS
STD T3
* DISPLAY LABEL FOR WORD.
DMW1 LCN YINC
RAD YC
OAN CH+40 OUTPUT COORDINATES
LDD XC
OAN CH+40
LDD AB DISPLAY CM WORD NUMBER
RJM D2D
LDC 2R (
OAN CH+40
LDD AB+2 DISPLAY BYTE NUMBER
RJM D4D
LDC 2R)
OAN CH+40
LDD AB+3
ZJN DMW2 IF NOT TABLE DISPLAY
LDN 5 DISPLAY TABLE DATA
OAM **,CH
DMWA EQU *-1
LDN 5 ADVANCE TABLE POINTER
RAM DMWA
* DISPLAY CONTENTS OF WORD.
DMW2 LDN 0 DISPLAY 5 BYTES
STD RC
OAN CH+40
DMW3 LDN 0
OAN CH+40
LDI T3 DISPLAY CONTENTS OF BYTE
RJM D4D
AOD T3
AOD RC
LMN 5
NJN DMW3 IF MORE BYTES
* LDN 0 DISPLAY 5 BYTES IN DISPLAY CODE
OAN CH+40
LCN 5
RAD T3
LDN 5
RJM ODC OUTPUT DISPLAY CODE
DMW4 LDN 5 INCREMENT BYTE ADDRESS
RAD AB+2
AOD AB INCREMENT CM WORD NUMBER
LMD AB+1
ZJN DMW5 IF END OF DISPLAY
LJM DMW1 LOOP
DMW5 LJM DMWX RETURN
D2D SPACE 4,10
** D2D - DISPLAY 2 DIGITS.
*
* ENTRY (A) = DIGITS RIGHT ADJUSTED.
D2D SUBR ENTRY/EXIT
LPN 77 UNPACK DIGITS
STD T0
SHN 3
LMD T0
SCN 70
ADC 2R00 CONVERT TO DISPLAY CODE
OAN CH+40
UJN D2DX RETURN
D4D SPACE 4,10
** D4D - DISPLAY 4 DIGITS.
*
* ENTRY (A) = DIGITS RIGHT ADJUSTED.
*
* USES T1.
*
* CALLS D2D.
D4D SUBR ENTRY/EXIT
STD T1
SHN -6 DISPLAY FIRST 2 DIGITS
RJM D2D
LDD T1 DISPLAY SECOND 2 DIGITS
RJM D2D
UJN D4DX RETURN
END SPACE 4,10
** END - END CPU PROGRAM.
*
* USES CM - CM+4.
*
* CALLS WCC.
END SUBR ENTRY/EXIT
ENDA RJM WCC WAIT FOR CPU TO COMPLETE
* UJN ENDX (*DDFILE* NOT LOADED)
LDN 0*2+1
STD CM+4
LDD RA
SHN 6
ADN D
CWD CM
UJN ENDX RETURN
LDO SPACE 4,20
** LDO - LOAD OVERLAY.
*
* ENTRY (A) = OVERLAY CONTROL WORD INDEX.
* (RELATIVE TO *TCRO*)
* (DRSB) = PREVIOUS (RS).
* (DRSA - DRSA+4) = CURRENT OVERLAY CONTROL WORD.
*
* EXIT (DRSA - DRSA+4) UPDATED AS REQUIRED.
* (DRSB) UPDATED IF DISPLAY IS BEING CHANGED.
* (CM) = LOAD ADDRESS.
* OVERLAY LOADED AND PRESET.
* OLD OVERLAY CONTROL WORD WRITTEN TO CM, IF VALID,
* TO PRESERVE DISPLAY INDEX.
*
* USES AB, CM - CM+4.
*
* CALLS MCI.
LDO SUBR ENTRY/EXIT
STD AB SAVE INDEX
LDD RA LOAD CONTROL WORD FOR DESIRED OVERLAY
ADD TA
SHN 6
ADC TCRO
ADD AB
CRD CM
LDD CM+1 CHECK WORD COUNT
ZJN LDO1 IF NO LOAD REQUIRED
LDD CM SET LOAD ADDRESS
STM LDOA
LDD CM+2 LOAD PROCESSOR OVERLAY
SHN 6
ADD RA
SHN 6
ADD CM+3
CRM **,CM+1
LDOA EQU *-1 LOAD ADDRESS
LDO1 LDD AB
LMD RS
NJP LDOX IF NOT A MAIN DISPLAY OVERLAY
LDM DRSB
SBN MXDI
PJN LDO2 IF OLD CONTROL WORD INVALID
LDD RA STORE OLD CONTROL WORD
ADD TA
SHN 6
ADC TCRO
ADM DRSB
CWM DRSA,ON
LDO2 LDD RA READ NEW PROCESSOR CONTROL WORD
ADD TA
SHN 6
ADC TCRO
ADD RS
CRM DRSA,ON (SETS PROCESSOR ENTRY ADDRESS FOR *LJM*)
LDD RS UPDATE OLD ID
STM DRSB
LJM LDOX RETURN
ODC SPACE 4,10
** ODC - OUTPUT DISPLAY CODE.
*
* ENTRY (A) = NUMBER OF BYTES TO DISPLAY.
* (T3) = ADDRESS OF FIRST BYTE.
* (XC) = 6000.
*
* EXIT (T3) = ADDRESS OF NEXT BYTE.
*
* USES T0, T3.
ODC2 LDI T3 DISPLAY BOTH CHARACTERS
ODC3 OAN CH+40
AOD T3
SOD T0
NJN ODC1 IF MORE BYTES TO DISPLAY
ODC SUBR ENTRY/EXIT
STD T0
ODC1 LDI T3
SBD XC
MJN ODC2 IF UPPER CHARACTER LEGAL
LPN 77
UJN ODC3 DISPLAY LOWER CHARACTER ONLY
RCP SPACE 4,10
** RCP - RECALL COMMAND PROCESSOR IF NECESSARY.
*
* ENTRY (RCPA) = ADDRESS IN COMMAND PROCESSOR IF RECALLING.
* = RCPX IF NO RECALL NEEDED.
*
* EXIT (RCPA) UPDATED.
RCP SUBR ENTRY/EXIT
RCP1 LJM RCPX RETURN IF NO RECALL
* LJM COMMAND (RECALL COMMAND PROCESSOR)
RCPA EQU *-1
SOM RCPB
PJN RCP1 IF RECALL COUNT NOT EXAUSTED
DFIM (LDN MLPS-1)
LDN 0 RESET RECALL COUNT
STM RCPB
UJN RCPX RETURN TO MAIN LOOP
RCPB CON 0 RECALL COUNT
RSB SPACE 4,10
** RSB - READ SECTOR TO BUFFER.
*
* EXIT (A) .LT. 0 IF ERROR ON READ.
* (A) = 0 IF NO ERROR.
*
* CALLS CEQ, RDS.
*
* MACROS ENDMS.
RSB SUBR ENTRY/EXIT
RJM CEQ CHECK EQUIPMENT
LDC BFMS
RJM RDS READ SECTOR
MJN RSBX IF ERROR
ENDMS
* LDN 0
STM RDCT
UJN RSBX RETURN
SNS SPACE 4,10
** SNS - SET NEXT SECTOR.
*
* EXIT (A) = 0 IF CURRENTLY AT EOI.
SNS1 LDM BFMS
NJN SNS2 IF NOT EOF
LDM BFMS+1
SNS2 STD TK
SNS SUBR ENTRY/EXIT
LDM BFMS
ADM BFMS+1
ZJN SNSX IF EOI
AOD SC
SBD LS
SBN 1
NJN SNSX IF NOT END OF TRACK
STD SC SET SECTOR TO ZERO
LDM BFMS
SHN 6
ADM BFMS+1
LMC 377777
NJN SNS1 IF NOT SYSTEM SECTOR
LDM NSSS
UJN SNS2 ENTER TRACK FROM SYSTEM SECTOR
SPP SPACE 4,10
** SPP - SET PAGE PARAMETERS.
*
* ENTRY (DRSA+4) = PAGE INDEX.
* (T3) = BFMS.
*
* EXIT (A) = NUMBER OF WORDS TO DISPLAY (PAGE SIZE).
* (AB) = FIRST CM WORD NUMBER (PAGE INDEX * PAGE SIZE).
*
* USES AB.
SPP SUBR ENTRY/EXIT
LDM DRSA+4
DFIM (LPN 3)
LPN 1 PAGE INDEX
DFIM (SHN 4) * 20B, 721 PAGE SIZE
SHN 5 * 40B, 545 PAGE SIZE
STD AB = FIRST CM WORD NUMBER
LDI T3 SET UP NUMBER OF WORDS TO DISPLAY
ZJN SPPX IF EOI SECTOR
DFIM (LDN 20) 721 PAGE SIZE IN CM WORDS
LDN 40 545 PAGE SIZE IN CM WORDS
UJN SPPX RETURN
WCC SPACE 4,10
** WCC - WAIT FOR CPU TO COMPLETE.
*
* EXIT (CM - CM+4) = CONTENTS OF CPU STATUS WORD.
*
* CALLS RCPA.
WCC SUBR ENTRY/EXIT
WCC1 RJM RCPA RETURN TO MAIN LOOP
LDD RA READ STATUS WORD
SHN 6
ADN D
CRD CM
LDD CM+4
ZJN WCCX IF COMPLETE
UJN WCC1 LOOP
SPACE 4,10
* COMMON DECKS.
QUAL COMDDSP AVOID *RDS* DEFINITION CONFLICT
*CALL COMDDSP
QUAL *
RDC EQU /COMDDSP/RDS REQUEST DISPLAY CHANNEL
DDS EQU /COMDDSP/DDS
HDC EQU /COMDDSP/HDC
PSS EQU /COMDDSP/PSS
*CALL COMDSYS
*CALL COMPC2D
QUAL COMPSNT
IRA$ EQU *
QUAL *
*CALL COMPSNT
TITLE BUFFERS.
SRA SPACE 4,10
** SRA - SCRATCH REGISTER AREA.
*
* 9 BYTES PER ENTRY.
* 0 = EST ORDINAL.
* 1 = TRACK.
* 2 = SECTOR.
* 3 = 3/DISPLAY NUMBER,9/DISPLAY INDEX
* 4 - 8 = 10 CHARACTER COMMENT
SRA BSSZ 9D*NSRA
KBUF SPACE 4,10
KBUF BSSZ KBUFL KEYBOARD BUFFER
SPACE 4,10
DIS HERE
SPACE 4,10
USE PRESET
BFMS BSSN 502 SECTOR BUFFER
CPLA BSSN 0 COMMAND PROCESSOR LOAD ADDRESS
END BSSN
SPACE 4,10
* COMMON DECKS THAT DEFINE TAGS BASED ON *BFMS*.
QUAL LSD
*CALL COMSLSD
QUAL *
*CALL COMSPFM
*CALL COMSSSE
*CALL COMSWEI
TITLE PRESET PROGRAM.
PRR SPACE 4,10
** PRR - PRESET RESIDENT ROUTINES.
PRR3 LDN 10 CLEAR LAST PART OF BUFFER
STD T1
PRR4 LDN 0
STM BFMS+500,T1
SOD T1
PJN PRR4 IF MORE TO CLEAR
LJM RCS READ SECTOR
ERRNG BFMS+500-* CLEARING CODE OVERFLOWS END OF BUFFER
PRR BSS 0 ENTRY
LDN 0 PRESET DIRECT CELLS
STD CR
STD KI
STD KM
STD DK
STM RSPLA
STD RT
LDK DFBN PRESET FIVE BYTE RIGHT SCREEN DISPLAY
STD RS
LDD CP
ADK PFCW
CRD CM
ADK PKNW-PFCW
CRD PF
LDD CM+3
STD PF+4
LDC CH01 PRESET X-COORDINATE
STD XC
STD SB CLEAR SYSTEM BUSY FLAG
LDK DSEQ CHECK DISPLAY CONSOLE TYPE
SFA EST
ADK EQAE
CRD CM
LDD CM+2
ZJN PRR1 IF CC545 CONSOLE
MDIN MODIFY DISPLAY GENERATOR
PRR1 LDN 0 CLEAR *.* IN COMMON DECKS
STM D6SA
STM D2SB CLEAR *OAN* INSTRUCTION
LDD RA PRESET CPU PROGRAM ADDRESS CONSTANTS
SHN 6
ADN D-2
CRD CM
LDD CM+3
STD BA
LDD CM+4
STD BA+1
LDM DDF
NJN PRR2 IF *DDFILE* LOADED
ISTORE ENDA,(UJN ENDX)
PRR2 RJM RDC REQUEST DISPLAY
RJM CSB CLEAR SCREEN BUFFER
LDN ZERL CLEAR CONTROL POINT MESSAGES
CRD CM
LDD CP
ADN MS1W
CWD CM
ADK MS2W-MS1W
CWD CM
LDN 0 INITIALIZE DISK ADDRESS DATA
STD SC
LDC PFNL GET DEFAULT FAMILY ORDINAL
CRD CM
LDD CM+3
STD EQ
SFA EST GET LABEL TRACK NUMBER
ADK EQDE
CRD CM
LDD CM+4
SHN 3
ADN ALGL
CRD CM
LDD CM+1
STD TK
RJM CTS CHECK TRACK VALUE
LDC DDF1 PRESET *PKI* EXIT
STM PKI
LJM PRR3 CLEAR BUFFER AND ENTER MAIN LOOP
SPACE 4,10
** DUMP INSTRUCTION MODIFICATION BLOCK.
DIMB
SPACE 4,10
OVERFLOW RESLA
OVERLAY /PRESET/OVL,(COMMAND PROCESSORS.)
OVL SPACE 4,10
** OVL - INITIALIZE OVERLAY.
*
* LOAD NON-COMMAND OVERLAYS TO CM.
OVL SUBR ENTRY/EXIT
* INITIALIZE *COMPGFP* IN OVERLAY BEFORE SAVING IN CM.
RJM IFP INITIALIZE FNT PROCESSORS
* SAVE *TAR* OVERLAY IN CM.
LDN /PRESET/TARL SET OVERLAY LENGTH
STD T1
LDD AB+3 SAVE CM ADDRESS
STM /PRESET/TCRO+TARN*5+2
LDD AB+4
STM /PRESET/TCRO+TARN*5+3
LDD AB+3 WRITE OVERLAY TO CM
SHN 6
ADD RA
SHN 6
ADD AB+4
CWM /PRESET/TAR,T1
LDD T1 UPDATE CM ADDRESS
RAD AB+4
SHN -14
RAD AB+3
UJN OVLX RETURN
SPACE 4,10
*** THE FOLLOWING COMMANDS ARE AVAILABLE -
ARD SPACE 4,10
*** AUTOREAD.NNNN.
* REREAD THE SECTOR EVERY NNNN SECONDS. IF NNNN IS NOT
* ENTERED, ONE IS USED. AUTOREAD IS TERMINATED BY CLEARING
* THE COMMAND WITH THE LEFT BLANK OR BACKTAB KEY.
ARD COMMAND
LDN MLPS SET DEFAULT COUNT
STD FN+1
LDI CA
ZJN ARD1 IF NO SECOND COUNT ENTERED
RJM ASD ASSEMBLE COUNT
LDD AB+4
SHN 5 * 40
ERRNZ MLPS-40 CODE ASSUMES EQUALITY SHIFT 5 = * 40
STD FN+1
ARD1 LDD FN+1 SET COUNT
STD FN
ARD2 RJM RCPA RETURN TO MAIN LOOP
SOD FN
PJN ARD2 IF MORE DELAY
RJM RSB READ SECTOR
UJN ARD1 RESET COUNT
BEI SPACE 4,10
*** BLDEOI.
* CREATES A EOI SECTOR IN BUFFER.
BEI COMMAND
LDC BFMS
STD T3
BEI1 LDN 0
STI T3
AOD T3
ADC -BFMS-2-100*5
MJN BEI1 IF NOT END OF BUFFER
LDC 2RDD
STM FNSS
LDN 1RF
SHN 6
STM FNSS+1
LDN PDTL SET DATE AND TIME
CRM DTSS,ON
LJM RET RETURN
BOT SPACE 4,15
*** BOT.NNNN.
* BACK UP ONE TRACK. SEARCH THE TRT STARTING AT TRACK NNNN FOR
* A TRACK THAT POINTS TO THE CURRENT TRACK. IF ONE IS FOUND,
* THE CURRENT TRACK IS SET TO THAT VALUE. IF NO TRACK IS FOUND
* THAT POINTS TO THE CURRENT TRACK, *INCORRECT PARAMETER.* IS
* DISPLAYED. IF NNNN IS NOT ENTERED, THE SEARCH STARTS AT
* TRACK 0.
*
* NOTE THAT THE SEQUENCE OF COMMANDS *TK.NNNN.*, *BOT.*,
* *TK.NNNN.*, *BOT.AAAA.* (WHERE AAAA IS THE TRACK RETURNED BY
* THE FIRST *BOT.* COMMAND + 1) CAN BE USED TO DETERMINE IF
* TWO DIFFERENT TRACKS ARE BOTH LINKED TO TRACK NNNN.
BOT COMMAND
LDD TK
STD RC
LDI CA
ZJN BOT1 IF NO TRACK ENTERED (START AT TRACK 0)
RJM ASD ASSEMBLE TRACK NUMBER
LDD AB+4
BOT1 LPC 3777
ADC 4000
STD TK SET STARTING TRACK
BOT2 RJM SNT GET LINK
LMD RC
ZJN BOT3 IF LINKED TO CURRENT TRACK
AOD TK
LMD LT
NJN BOT2 IF MORE TRACKS TO CHECK
LDD RC RESTORE CURRENT TRACK
STD TK
LJM ERR2 *INCORRECT PARAMETER.*
BOT3 LJM RET RETURN
CTB SPACE 4,10
*** CTB.
* CLEAR THE TRACK INTERLOCK BIT FOR CURRENT TRACK AND
* EQUIPMENT. THE KEYBOARD MUST BE UNLOCKED TO USE THIS
* COMMAND.
CTB COMMAND
RJM CLB CHECK LOCK BIT
RJM SNT CHECK TRACK INTERLOCK BIT
LDD T1
ADC SHNI+22-4-4
STM CTBA
LDD CM+4
CTBA SHN **
MJN CTB1 IF TRACK INTERLOCK IS SET
LJM ERR4 *INCORRECT ENTRY.*
CTB1 LDD EQ
STD CM+1
LDD TK
STD CM+2
LDN CTIS
STD CM+3
MONITOR STBM
LJM RET RETURN
DEP SPACE 4,10
*** DEP.
* DISABLE ERROR PROCESSING FOR CALLS TO THE MASS STORAGE
* DRIVER TO READ A SECTOR.
* (BY DEFAULT, ERROR PROCESSING IS DISABLED.)
DEP COMMAND
LDN DEPL-1
STD T1
DEP1 LDM DEPA,T1 MOVE SETMS CODE
STM CTSA,T1
SOD T1
PJN DEP1 IF MOVE NOT COMPLETE
LJM RET RETURN
DEPA SETMS IO,(AR,NS,AD,RW,DF) SELECT RETURN ON ALL ERRORS
DEPL EQU *-DEPA LENGTH
DIS SPACE 4,10
*** DIS.
* DROP DISPLAY AND CALL *DIS* TO CONTROL POINT.
DIS COMMAND
RJM END END CPU PROGRAM
RJM DDS DROP DISPLAY
LDD CP SET CONTROL POINT NUMBER
SHN -7
RAM DISA+1
LDD IA WRITE INPUT REGISTER
CWM DISA,ON
LJM PPR EXIT TO PP RESIDENT
DISA VFD 60/0LDIS
DRP SPACE 4,10
*** DROP.
* DROP DISPLAY AND PP.
DRP COMMAND
RJM END END CPU PROGRAM
RJM DDS DROP DISPLAY
LJM DPP DROP PP
DTK SPACE 4,10
*** DTK.SSSS.
* DROP TRACKS STARTING WITH THE CURRENT TRACK AND SET THE EOI
* SECTOR IN THE TRT TO SSSS.
*
* DTK.
* DROP TRACKS TO END OF CHAIN STARTING WITH THE CURRENT TRACK.
*
* THE KEYBOARD MUST BE UNLOCKED TO USE THIS COMMAND.
DTK COMMAND
RJM CLB CHECK LOCK BIT
RJM CTR CHECK TRACK RESERVATION
PJN DTK2 IF TRACK RESERVATION BIT NOT SET
LDD EQ SET EST ORDINAL
ADC 4000 SET CHECKPOINT
STD CM+1
LDD TK
STD CM+2
LDI CA
ZJN DTK1 IF NO SECTOR SPECIFIED
RJM ASD ASSEMBLE SECTOR NUMBER
LDD AB+4
STD CM+3
SBD LS
SBN 1
PJN DTK2 IF ILLEGAL SECTOR
LDD CM+2 CLEAR SECTOR PARAMETER BIT
LPC 3777
STD CM+2
DTK1 MONITOR DTKM
LJM RET RETURN
DTK2 LJM ERR2 *INCORRECT PARAMETER.*
EEP SPACE 4,10
*** EEP.
* ENABLE ERROR PROCESSING FOR CALLS TO THE MASS STORAGE
* DRIVER TO READ A SECTOR.
* (BY DEFAULT, ERROR PROCESSING IS DISABLED.)
EEP COMMAND
LDN EEPL-1
STD T1
EEP1 LDM EEPA,T1 MOVE SETMS CODE
STM CTSA,T1
SOD T1
PJN EEP1 IF MOVE NOT COMPLETE
LJM RET RETURN
EEPA SETMS IO,(RR,NR,NS,AD,RW,DF) RETURN ON NOT READY/RESERVED
EEPL EQU *-EEPA LENGTH
ERRNZ DEPL-EEPL SETMS MACRO LENGTH CHANGE
EET SPACE 4,10
*** EJT.NNNN.
* ENTER DISK ADDRESS FROM EJT ORDINAL NNNN.
* (0 .LE. NNNN .LE. LARGEST EJT ORDINAL.) THE EQUIPMENT,
* TRACK, AND SECTOR ARE SET TO THE BEGINNING OF THE FILE.
* *INCORRECT PARAMETER.* IS DISPLAYED IF THE EJT ENTRY IS NOT
* USED OR THE FILE DOES NOT HAVE ANY TRACKS ASSIGNED.
EET COMMAND
LDN TARN
RJM LDO LOAD OVERLAY
LDN PEJT
RJM /TAR/RFE READ FST ENTRY
LDD FN+1
ZJP ERR2 IF TRACK NOT ASSIGNED
STD TK
LDN 0 CLEAR SECTOR
STD SC
LJM IMS INITIALIZE MASS STORAGE
EST SPACE 4,10
*** EST.NN.
* ENTER EST ORDINAL. THE EQUIPMENT MUST BE A MASS STORAGE
* DEVICE.
EST COMMAND
RJM ASD ASSEMBLE NUMBER
LDD AB+4
LPC 777
STD AB
SFA EST READ EST ENTRY
ADK EQDE
CRD CM
LDD CM
SHN 6
PJN EST1 IF NOT MASS STORAGE
LDD CM+4 MST ADDRESS/10
SHN 3
ADN DDLL
CRD CM
LDD CM
SHN 21-12
MJN EST1 IF NULL EQUIPMENT
LDD AB
STD EQ
LJM IMS INITIALIZE MASS STORAGE
EST1 LJM ERR5 *INCORRECT EQUIPMENT.*
EFO SPACE 4,10
*** FAMILY.CCCCCCC.
* USE PERMANENT FILE FAMILY *CCCCCCC*. (THE FAMILY IS SET
* INTERNALLY IN DDF. *PFCW* IN THE CONTROL POINT AREA IS NOT
* CHANGED.) THE FAMILY IS INITIALLY SET TO THE FAMILY
* SPECIFIED IN *PFCW*.
EFO COMMAND
RJM ASN ASSEMBLE NAME
RJM SFE SET FAMILY EQUIPMENT
NJN EFO1 IF FAMILY NOT FOUND
LDD T2 SET FAMILY EST ORDINAL
STD PF+4
LJM RET RETURN
EFO1 LJM ERR2 *INCORRECT PARAMETER.*
*CALL COMPSFE
FPE SPACE 4,25
*** FIND.
* THE FIND COMMAND SCANS THE CATALOG TRACK STARTING AT THE
* CURRENT POSITION SEARCHING FOR THE SPECIFIED CATALOG ENTRY.
* THE CATALOG TRACK MUST BE READ VIA APPROPRIATE COMMANDS
* (FAMILY, PACKNAM, UI, ETC.) BEFORE THE FIND COMMAND IS USED.
* THE FOLLOWING OPTIONS ARE AVAILABLE.
*
* FIND.CCCCCCC.NNNNNN.
* SEARCH FOR PERMANENT FILE CCCCCCC WITH USER INDEX NNNNNN.
*
* FIND.CCCCCCC..
* SEARCH FOR PERMANENT FILE CCCCCCC WITH A ZERO USER INDEX
* (I.E. A HOLE).
*
* FIND.CCCCCCC.
* SEARCH FOR PERMANENT FILE CCCCCCC. THE USER INDEX IS
* IGNORED.
*
* FIND..NNNNNN.
* SEARCH FOR A PERMANENT FILE WITH USER INDEX NNNNNN. THE FILE
* NAME IS IGNORED.
*
* FIND...
* SEARCH FOR A PERMANENT FILE WITH A ZERO USER INDEX. THE FILE
* NAME IS IGNORED. (I.E. SEARCH FOR ANY HOLE.)
FPE COMMAND
RJM ASN GET FILE NAME
AOD CA
LDI CA
ZJN FPE1 IF UI NOT ENTERED
RJM ASD ASSEMBLE USER INDEX
LDD AB+3
LPN 37
RAD FN+3
LDD AB+4
STD FN+4
FPE1 LDD RS
LMN DFDN
SHN 12
ADM /DFD/DFDB
LMN DPEN
NJN FPE2 IF PFC DISPLAY NOT UP
LDM DRSA+4
UJN FPE3 STORE PFC ORDINAL
FPE2 LDN 0
FPE3 STD T3
SHN NWCES
STD T1
SHN 2
RAD T1
LDM BFMS
ADM BFMS+1
NJN FPE4 IF EOI NOT ENCOUNTERED
LJM ERR3 *NOT FOUND.*
* COMPARE PARAMETERS WITH THE CATALOG ENTRY.
FPE4 LDD FN
ZJN FPE6 IF FILE NAME NOT SPECIFIED
LDN 0
STD T2
FPE5 LDM FN,T2 COMPARE NAME
LMM BFMS+2,T1
NJN FPE7 IF NOT A MATCH
AOD T1
AOD T2
SBN 3
MJN FPE5 IF MORE CHARACTERS
LDD FN+3 COMPARE SEVENTH CHARACTER
LMM BFMS+2,T1
SCN 77
NJN FPE9 IF NOT A MATCH
FPE6 LDD T3
SHN NWCES
STD T1
SHN 2
RAD T1
LDI CA
NJN FPE8 IF UI SPECIFIED
LDM BFMS+2+FCUI,T1
LPN 37
ADM BFMS+2+FCUI+1,T1
NJN FPE11 IF NON-ZERO, ASSUME MATCH
FPE7 UJN FPE9 CONTINUE SEARCH
FPE8 LDM BFMS+2+FCUI,T1
LMD FN+3
LPN 37
NJN FPE9 IF UI DOES NOT MATCH
LDM BFMS+2+FCUI+1,T1
LMD FN+4
ZJN FPE11 IF UI MATCHES
* ADVANCE TO NEXT CATALOG ENTRY.
FPE9 AOD T3 ADVANCE BUFFER INDEX
SHN NWCES
STD T1
SBM BFMS+1
PJN FPE10 IF END OF SECTOR
LDD T1
SHN 2
RAD T1
LJM FPE4 LOOP
FPE10 RJM SNS SET NEXT SECTOR
RJM RSB READ SECTOR
MJN FPE12 IF ERROR
RJM RCPA RETURN TO MAIN LOOP
LJM FPE2 LOOP
* DISPLAY PFC ENTRY.
FPE11 LDN DFDN SET DISPLAY
STD RS
RJM LDO LOAD OVERLAY
LDD T3
STM DRSA+4
FPE12 LJM RET RETURN
FIS SPACE 4,10
*** FINDISS.NNNNNN.
* STARTING AT THE CURRENT POSITION, SEARCH FOR THE NEXT SYSTEM
* SECTOR WITH USER INDEX NNNNNN ON THE CHAIN. IF NNNNNN IS
* NOT SPECIFIED THE USER INDEX IS NOT CHECKED AND THE NEXT
* SYSTEM SECTOR IS DISPLAYED. THIS COMMAND IS INTENDED TO BE
* USED ON THE INDIRECT ACCESS PERMANENT FILE CHAIN.
FIS COMMAND
LDI CA
ZJN FIS1 IF NO USER INDEX SPECIFIED
RJM ASD ASSEMBLE USER INDEX
LDD AB+3
STD FN+3
LDD AB+4
STD FN+4
FIS1 RJM SNS ADVANCE TO NEXT SECTOR
NJN FIS3 IF NOT EOI
RJM SNT GET NEXT TRACK
STD T1
SHN 6
MJN FIS2 IF NOT EOI TRACK
SHN -6
LMD SC
NJN FIS2 IF NOT AT EOI INDICATED IN TRT
LJM ERR3 *NOT FOUND.*
FIS2 AOD SC
SBD LS
SBN 1
NJN FIS3 IF NOT END OF TRACK
STD SC
LDD T1
STD TK
FIS3 RJM RSB READ SECTOR
MJN FIS5 IF ERROR
LDM BFMS
SHN 6
ADM BFMS+1
LMC 377777
NJN FIS4 IF NOT SYSTEM SECTOR
LDI CA
ZJN FIS5 IF NO UI SPECIFIED
LDM CTSS+3
LMD FN+3
LPN 37
NJN FIS4 IF UI DOES NOT MATCH
LDM CTSS+4
LMD FN+4
ZJN FIS5 IF UI MATCHES
FIS4 RJM RCPA RETURN TO MAIN LOOP
LJM FIS1 LOOP
FIS5 LJM RET RETURN
FOV SPACE 4,10
*** FINDO.NNNN NNNN NNNN NNNN NNNN.
* SEARCH FROM THE CURRENT POSITION FOR THE OCTAL NUMBER
* SPECIFIED. THE NUMBER CAN BE 1 TO 20 DIGITS AND IS RIGHT
* JUSTIFIED IN AS MANY BYTES AS ARE NECESSARY TO HOLD THE
* NUMBER. THE SEARCH STARTS ON A BYTE BOUNDARY AND THE BYTE
* NUMBER IS DISPLAYED IF THE SEARCH IS SUCCESSFUL. IF THE
* FIRST PART OF THE NUMBER IS FOUND AT THE END OF THE BUFFER,
* THE SEARCH IS TERMINATED EVEN THOUGH THE ENTIRE NUMBER
* WAS NOT FOUND. IF THE CARRIAGE RETURN IS ENTERED AGAIN,
* THE SEARCH CONTINUES AT THE CURRENT MATCH.
FOV COMMAND
LDD CA SAVE CHARACTER ADDRESS
STD FN+4
LDN 0
STD T1
FOV1 AOD CA FIND SIZE OF NUMBER
LDI CA
ZJN FOV2 IF END OF STRING
LMN 1R
NJN FOV1 IF NOT BLANK CHARACTER
AOD T1 COUNT BLANKS
UJN FOV1 CHECK NEXT CHARACTER
FOV2 SOD CA SET BYTE COUNT
SBD FN+4
SBD T1
ADN 3
SHN -2
STD FN+3
FOV3 LDD FN+4 CONVERT NUMBER
STD CA
RJM ASD ASSEMBLE DIGITS
LDD KM CHECK KEYBOARD MESSAGE
LMC SBNA
NJN FOV4 IF NOT MESSAGE FROM FINDO
STD KM
LJM FOV9 CONTINUE SEARCH
FOV4 LDM BFMS
ZJN FOV5 IF EOF
LDM BFMS+1
FOV5 ZJN FOV10 IF ZERO LENGTH SECTOR
SHN 2 SET BYTE COUNT
ADM BFMS+1
ADN 2
STD FN+2
LDN 2 SET STARTING POSITION
STD FN
STD FN+1
FOV6 LDN 5 SET BEGINNING OF SEARCH
SBD FN+3
STD T3
FOV7 LDM BFMS,FN+1 COMPARE BYTES
LMM AB,T3
NJN FOV9 IF NOT A MATCH
AOD T3
LMN 5
ZJN FOV8 IF SEARCH COMPLETE
AOD FN+1
LMD FN+2
NJN FOV7 IF NOT END OF SECTOR
FOV8 LJM SBN DISPLAY BYTE NUMBER
FOV9 AOD FN
STD FN+1
LMD FN+2
NJN FOV6 IF NOT END OF SECTOR
FOV10 RJM RCPA RETURN TO MAIN LOOP
RJM SNS READ NEXT SECTOR
ZJN FOV11 IF EOI
RJM RSB READ SECTOR
MJN FOV12 IF ERROR
LJM FOV3 LOOP
FOV11 LJM ERR3 *NOT FOUND.*
FOV12 LJM RET RETURN
FST SPACE 4,10
*** FINDS.CCCCCCC
* SEARCH FROM THE CURRENT POSITION FOR THE STRING OF CHARACTERS
* CCCCCCC. IF THE FIRST PART OF THE STRING MATCHES THE
* END OF THE BUFFER, THE SEARCH IS TERMINATED EVEN THOUGH THE
* ENTIRE STRING WAS NOT FOUND. THE BYTE NUMBER OF THE BEGIN-
* ING OF THE STRING IS DISPLAYED. IF THE CARRIAGE RETURN IS
* ENTERED, THE SEARCH IS BEGUN AGAIN AT THAT POINT.
FST COMMAND
LDI CA
NJN FST1 IF CHARACTER STRING ENTERED
LJM ERR2 *INCORRECT PARAMETER.*
FST1 LDD KM CHECK KEYBOARD MESSAGE
LMC SBNA
NJN FST2 IF NOT MESSAGE FROM FINDS
STD KM
LDN 1
STD T2
LJM FST9 CONTINUE SEARCH AT NEXT BYTE
FST2 LDM BFMS
ZJN FST3 IF EOF
LDM BFMS+1
NJN FST4 IF NOT ZERO LENGTH SECTOR
FST3 LJM FST10 ADVANCE TO NEXT SECTOR
FST4 SHN 2 SET BYTE COUNT
ADM BFMS+1
ADN 2
STD FN+2
LDN 2 SET STARTING BYTE NUMBER
STD FN
STD FN+1
LDD CA SET BEGINNING OF STRING
STD T3
FST5 LDN 2 SET FIRST/SECOND HALF OF BYTE FLAG
STD T2
FST6 LDM BFMS,FN+1 CHECK FIRST CHARACTER OF BYTE
SHN -6
LMI T3
NJN FST9 IF CHARACTERS DONT MATCH
AOD T3
FST7 LDI T3 CHECK SECOND CHARACTER OF BYTE
ZJN FST8 IF SEARCH COMPLETE
LMM BFMS,FN+1
LPN 77
NJN FST9 IF CHARACTERS DONT MATCH
AOD T3
LDI T3
ZJN FST8 IF SEARCH COMPLETE
AOD FN+1 ADVANCE TO NEXT 2 CHARACTERS
LMD FN+2
NJN FST6 IF NOT END OF SECTOR
FST8 LJM SBN DISPLAY BYTE NUMBER
FST9 LDD CA RESET POINTERS
STD T3
LDD FN
STD FN+1
SOD T2
NJN FST7 IF STARTED WITH FIRST CHARACTER OF BYTE
AOD FN ADVANCE SEARCH TO START WITH NEXT BYTE
STD FN+1
LMD FN+2
NJN FST5 IF NOT END OF SECTOR
FST10 RJM RCPA RETURN TO MAIN LOOP
RJM SNS SET NEXT SECTOR
ZJN FST11 IF EOI
RJM RSB READ SECTOR
MJN FST12 IF ERROR
LJM FST2 SEARCH NEW SECTOR
FST11 LJM ERR3 *NOT FOUND.*
FST12 LJM RET RETURN
FSS SPACE 4,10
*** FINDSS.NNNNNN.
* STARTING FROM THE CURRENT TRACK AND SEARCHING TO THE END
* OF THE TRT, FIND AND DISPLAY THE NEXT SYSTEM SECTOR WITH
* USER INDEX NNNNNN. IF NNNNNN IS NOT SPECIFIED, THE USER
* INDEX IS NOT CHECKED.
FSS COMMAND
LDN 0
STD SC
LDI CA
ZJN FSS1 IF UI NOT ENTERED
RJM ASD ASSEMBLE USER INDEX
LDD AB+3
STD FN+3
LDD AB+4
STD FN+4
FSS1 AOD TK ADVANCE TO NEXT TRACK
LMD LT
NJN FSS2 IF NOT END OF TRT
SOD TK
LJM ERR3 *NOT FOUND.*
FSS2 RJM SNT CHECK FOR FLAWED TRACK
LMC 3777
ZJN FSS1 IF FLAWED TRACK
RJM RSB READ SECTOR
MJN FSS4 IF ERROR
LDM BFMS
SHN 6
ADM BFMS+1
LMC 377777
NJN FSS3 IF NOT SYSTEM SECTOR
LDI CA
ZJN FSS4 IF NO UI SPECIFIED
LDM FNSS+4 CHECK FILE TYPE
SHN -6
LMN PMFT
NJN FSS3 IF NOT PERMANENT FILE SYSTEM SECTOR
LDM CTSS+3
LMD FN+3
LPN 37
NJN FSS3 IF UI DOES NOT MATCH
LDM CTSS+4
LMD FN+4
ZJN FSS4 IF UI MATCHES
FSS3 RJM RCPA RETURN TO MAIN LOOP
LJM FSS1 LOOP
FSS4 LJM RET RETURN
EFB SPACE 4,10
*** FNT.NNNN.
* ENTER DISK ADDRESS FROM GLOBAL FNT ORDINAL NNNN.
* (0 .LE. NNNN .LE. LARGEST FNT ORDINAL.) THE EQUIPMENT,
* TRACK, AND SECTOR ARE SET TO THE BEGINNING OF THE FILE.
* *INCORRECT PARAMETER.* IS DISPLAYED IF THE FNT ENTRY IS NOT
* USED OR THE FILE DOES NOT HAVE ANY TRACKS ASSIGNED.
EFB COMMAND
LDN TARN
RJM LDO LOAD OVERLAY
LDN PFNT
RJM /TAR/RFE READ FST ENTRY
LDD FN+1
ZJP ERR2 IF TRACK NOT ASSIGNED
STD TK TRACK
LDN 0
STD SC SECTOR
LJM IMS INITIALIZE MASS STORAGE
EFL SPACE 4,10
*** FNTL.NNNN.
* ENTER DISK ADDRESS FROM LOCAL FNT ORDINAL NNNN.
* (0 .LE. NNNN .LE. LARGEST FNT ORDINAL.) THE EQUIPMENT,
* TRACK, AND SECTOR ARE SET TO THE BEGINNING OF THE FILE.
* *INCORRECT PARAMETER.* IS DISPLAYED IF THE FNT ENTRY IS NOT
* USED OR THE FILE DOES NOT HAVE ANY TRACKS ASSIGNED.
EFL COMMAND
LDN TARN
RJM LDO LOAD OVERLAY
LDN PNFL
RJM /TAR/RFE READ FST ENTRY
LDD FN+1
ZJP ERR2 IF TRACK NOT ASSIGNED
STD TK
LDN 0 CLEAR SECTOR
STD SC
LJM IMS INITIALIZE MASS STORAGE
EFC SPACE 4,10
*** FNTLC.NNNN.
* ENTER DISK ADDRESS FROM LOCAL FNT ORDINAL NNNN.
* (0 .LE. NNNN .LE. LARGEST FNT ORDINAL.) THE EQUIPMENT,
* TRACK, AND SECTOR ARE SET TO THE CURRENT POSITION OF THE
* FILE. *INCORRECT PARAMETER.* IS DISPLAYED IF THE FNT ENTRY
* IS NOT USED OR THE FILE DOES NOT HAVE ANY TRACKS ASSIGNED.
EFC COMMAND
LDN TARN
RJM LDO LOAD OVERLAY
LDN PNFL
RJM /TAR/RFE READ FST ENTRY
LDD T3 CHECK FILE TYPE
CRD CM
LDD FN+2 SET TRACK
ZJN EFC2 IF NO CURRENT TRACK
STD TK
LDD FN+3 SET SECTOR
STD SC
UJN EFC3 INITIALIZE MASS STORAGE
EFC2 STD SC SET SECTOR
LDD FN+1 SET TRACK
STD TK
EFC3 LJM IMS INITIALIZE MASS STORAGE
GTT SPACE 4,10
*** GETTRT.NNNN.
* THIS COMMAND IS INTENDED TO BE USED ON THE LABEL TRACK. THE
* EQUIPMENT AND TRACK MUST BE SET FOR THE LABEL TRACK BEFORE
* THE COMMAND IS USED. GETTRT READS THE SECTOR THAT CONTAINS
* THE CHECKPOINTED TRT INFORMATION FOR TRACK NNNN AND DISPLAYS
* THE BYTE NUMBER WITHIN THE SECTOR FOR THAT TRACK.
GTT COMMAND
RJM ASD GET TRACK NUMBER
LDD AB+4 GET BYTE NUMBER WITHIN CM WORD
LPC 3777
STD AB+4
LPN 3
STD AB+3
LDD AB+4 GET CM WORD NUMBER
SHN -2
STD AB+2
SHN -6 SET SECTOR NUMBER
STD SC
SHN 6
STD AB+1
AOD SC
LDD AB+2 GET CM WORD NUMBER WITH SECTOR
SBD AB+1
STD AB
SHN 2 CALCULATE BYTE NUMBER
ADD AB
ADD AB+3
ADN 2
STD FN
RJM RSB READ SECTOR
LJM SBN DISPLAY BYTE NUMBER
HOL SPACE 4,10
*** HOLD.
* DROP DISPLAY AND WAIT FOR OPERATOR ASSIGNMENT. RESERVED
* CHANNEL IS NOT DROPPED.
HOL COMMAND
RJM DDS DROP DISPLAY
LDD MA SAVE DISK DATA
CWD T3
RJM RDC REQUEST DISPLAY
RJM CSB CLEAR SCREEN BUFFER
LDD MA RESTORE DISK DATA
CRD T3
LJM IMS INITIALIZE MASS STORAGE
EIT SPACE 4,10
*** QFT.NNNN.
* ENTER DISK ADDRESS FROM QFT ORDINAL NNNN.
* (0 .LE. NNNN .LE. LARGEST QFT ORDINAL.) THE EQUIPMENT,
* TRACK, AND SECTOR ARE SET TO THE BEGINNING OF THE FILE.
* *INCORRECT PARAMETER.* IS DISPLAYED IF THE QFT ENTRY IS NOT
* USED OR THE FILE DOES NOT HAVE ANY TRACKS ASSIGNED.
EIT COMMAND
LDN TARN
RJM LDO LOAD OVERLAY
LDN PQFT
RJM /TAR/RFE READ FST ENTRY
LDD FN+1
ZJP ERR2 IF TRACK NOT ASSIGNED
STD TK
LDN 0 CLEAR SECTOR
STD SC
LJM IMS INITIALIZE MASS STORAGE
LSA SPACE 4,10
*** LOAD.C.
* RELOAD THE EQUIPMENT, TRACK, AND SECTOR FROM SCRATCH AREA
* C. C IS A SINGLE ALPHABETIC CHARACTER (LEGAL CHARACTERS ARE
* DISPLAYED ON THE LEFT SCREEN). (REFER TO THE STORE COMMAND.)
LSA COMMAND
RJM CSA GET ADDRESS OF SCRATCH AREA
LDI T2
ZJN LSA1 IF STORE NOT DONE
STD EQ
LDM 1,T2
STD TK
LDM 2,T2
STD SC
LDM 3,T2 SET DISPLAY
SHN -11
STD RS
RJM LDO LOAD OVERLAY
LDM 3,T2
LPC 777
STM DRSA+4
LJM IMS INITIALIZE MASS STORAGE
LSA1 LJM ERR2 *INCORRECT PARAMETER.*
EPN SPACE 4,10
*** PACKNAM.CCCCCCC.
* USE PERMANENT FILE PACK CCCCCCC. (THE PACK NAME IS SET
* INTERNALLY IN DDF. *PKNW* IN THE CONTROL POINT AREA IS NOT
* CHANGED.) THE PACK NAME IS INITIALLY SET TO THE NAME IN
* *PKNW*.
EPN COMMAND
RJM ASN GET NAME
LDD FN SAVE NAME
STD PF
LDD FN+1
STD PF+1
LDD FN+2
STD PF+2
LDD PF+3
LPN 77
LMD FN+3
STD PF+3
LJM RET RETURN
PRD SPACE 4,10
*** PREAD.
* READ THE CURRENT SECTOR USING THE *READ PROTECTED SECTOR*
* FUNCTION. THIS COMMAND REPLACES THE SPACE KEY WHEN READING
* PROTECTED SECTORS. SPECIAL KEYS LIKE *+* AND *-* CANNOT
* BE USED TO READ PROTECTED SECTORS. THE KEYBOARD MUST BE
* UNLOCKED TO USE THIS COMMAND.
PRD COMMAND
RJM CLB CHECK LOCK BIT
RJM CEQ CHECK EQUIPMENT
LDD TK SAVE TRACK AND SECTOR
STD FN
LDD SC
STD FN+1
LDD EQ SET EQUIPMENT
ADC 1000
STM PRDB
EXECUTE 0PI,PRDB+1 SET UP DRIVER FOR PROTECTED SECTORS
LDD FN RESET TRACK AND SECTOR
STD TK
LDD FN+1
STD SC
LDM KBUF+1
LMN 1RW
NJN PRD1 IF NOT *PWRITE* COMMAND
LDC WDS
STM PRDA
PRD1 LDC BFMS READ/WRITE SECTOR
RJM RDS
PRDA EQU *-1
* RJM WDS (*PWRITE* COMMAND)
MJN PRD2 IF ERROR
ENDMS
* LDN 0
STM RDCT
PRD2 LDM RDCT RELOAD DRIVER
STD FN
LDD T6
STD FN+1
RJM CTS
LDD FN
STM RDCT
LDD FN+1
STD T6
LJM RET RETURN
PRDB BSS 0 *0PI* LOAD ADDRESS
ERRNG 7777-PRDB-1-ZPXL *0PI* OVERFLOWS PP MEMORY
PTK SPACE 4,10
*** PTK.NNNN.
* ENTER PROTECTED TRACK. THIS COMMAND WORKS THE SAME AS THE
* TK. COMMAND EXCEPT THE NUMBER ENTERED IS NOT CHECKED AND THE
* KEYBOARD MUST BE UNLOCKED.
PTK COMMAND
RJM CLB CHECK LOCK BIT
RJM ASD ASSEMBLE TRACK NUMBER
LDD AB+4
LPC 3777
LMC 4000
STD TK
LJM RET RETURN
PWT SPACE 4,10
*** PWRITE.
* WRITE THE CURRENT SECTOR USING THE *WRITE PROTECTED SECTOR*
* FUNCTION. THIS COMMAND SHOULD BE USED INSTEAD OF THE *WRITE*
* COMMAND WHEN WRITING PROTECTED SECTORS.
QUAL PRESET
PWT EQU PRD
PWTL EQU PRDL
QUAL *
ERA SPACE 4,20
*** RANDOM.NNNN.RRRR.
* SET TRACK AND SECTOR FOR RANDOM ADDRESS RRRR WITH FIRST TRACK
* NNNN. *INCORRECT PARAMETER.* IS DISPLAYED IF THE RANDOM
* ADDRESS IS NOT ON THE TRACK.
*
*
* RANDOM..RRRR.
* SET TRACK AND SECTOR FOR RANDOM ADDRESS RRRR USING THE
* CURRENT TRACK AS THE FIRST TRACK. *INCORRECT PARAMETER.* IS
* DISPLAYED IF THE RANDOM ADDRESS IS NOT ON THE CHAIN.
*
*
* RANDOM.C.RRRR.
* SET TRACK AND SECTOR FOR RANDOM ADDRESS RRRR USING THE TRACK
* SPECIFIED BY SCRATCH REGISTER C AS THE FIRST TRACK.
* *INCORRECT PARAMETER.* IS DISPLAYED IF THE RANDOM ADDRESS IS
* NOT ON THE CHAIN.
ERA COMMAND
LDD TK SAVE CURRENT TRACK
STD RC
LDI CA
LMN 1R.
ZJN ERA3 IF TRACK NUMBER NOT ENTERED
LDI CA
SBN NSRA+1
PJN ERA1 IF NOT A SCRATCH AREA
RJM CSA COMPUTE SCRATCH AREA ADDRESS
LDM 1,T2 SET TRACK FROM SCRATCH AREA
UJN ERA2 STORE TRACK
ERA1 RJM ASD GET FIRST TRACK
LDD AB+4
ERA2 STD TK
ERA3 AOD CA
RJM CDR GET RANDOM ADDRESS
LMN 1R.
NJN ERA4 IF FORMAT ERROR
RJM CRA CHECK RANDOM ADDRESS
MJN ERA5 IF NOT ON CHAIN
LJM RET RETURN
ERA4 LDD RC RESET TRACK
STD TK
LJM ERR1 *FORMAT ERROR.*
ERA5 LDD RC RESET TRACK
STD TK
LJM ERR2 *INCORRECT PARAMETER.*
*CALL COMPCRA
ESC SPACE 4,10
*** SC.NNNN.
* ENTER SECTOR NUMBER. *INCORRECT PARAMETER.* IS DISPLAYED IF
* THE SECTOR NUMBER IS TOO LARGE.
ESC COMMAND
RJM ASD ASSEMBLE NUMBER
LDD LS
SBD AB+4
MJN ESC1 IF ILLEGAL SECTOR
LDD AB+4
STD SC
LJM RET RETURN
ESC1 LJM ERR2 *INCORRECT PARAMETER.*
ELS SPACE 4,10
*** SC.*.
* ENTER THE NUMBER OF THE LAST SECTOR ON THE TRACK INTO THE
* SECTOR NUMBER.
ELS COMMAND
LDD LS SET LAST SECTOR
STD SC
LJM RET RETURN
SCN SPACE 4,15
*** SCAN.
* SCAN FROM THE CURRENT POSITION UNTIL THE END OF INFORMATION
* CONTROL BYTES ARE ENCOUNTERED. THE SCAN STOPS IF, AT SOME
* POINT, THE CONTROL BYTES ARE INCORRECT OR THE TRACK IS NOT
* RESERVED.
*
*
* SCAN.*.
* SCAN FROM THE CURRENT POSITION UNTIL THE END OF INFORMATION
* INDICATED IN THE TRT IS REACHED. THIS IS INTENDED TO BE USED
* FOR THE INDIRECT ACCESS PERMANENT FILE CHAIN. NOTE - WHEN
* *PFM* DELINKS A TRACK IN THE MIDDLE OF THE CHAIN, IT DOES NOT
* UPDATE THE TRACK POINTER IN THE PRECEEDING TRACK. THIS WILL
* CAUSE SCAN TO STOP AT THIS POINT AND DISPLAY AN ERROR.
SCN COMMAND
SCN1 RJM RCPA RETURN TO MAIN LOOP
RJM SNT CHECK TRT
LDN 0 SET ERROR MESSAGE NUMBER
STD T3
LDM BFMS
SHN 6
ADM BFMS+1
LMC 377777
NJN SCN2 IF NOT SYSTEM SECTOR
AOD T3
LDM NSSS
UJN SCN3 CHECK SYSTEM SECTOR POINTER
SCN2 LDM BFMS
NJN SCN3 IF NOT EOF
LDM BFMS+1
NJN SCN3 IF NOT EOI
LJM SCN9 CHECK EOI PROCESSING
SCN3 SHN 6
PJN SCN4 IF NOT A TRACK LINK BYTE
SHN -6
LMM CM,T1
NJN SCN8 IF LINKAGE BYTES DONT MATCH TRT
LDN 2 SET ERROR MESSAGE NUMBER
STD T3
LDD SC
LMD LS
NJN SCN8 IF TRACK LINK NOT IN LAST SECTOR
UJN SCN5 CHECK WORD COUNT
SCN4 SHN -6
SBN 1
LMD SC
NJN SCN8 IF NEXT SECTOR .NE. CURRENT SECTOR+1
SCN5 LDN 3 SET MESSAGE NUMBER
STD T3
LDM BFMS CHECK WORD COUNT
ZJN SCN6 IF EOF
LDD HN
SBM BFMS+1
MJN SCN8 IF BAD WORD COUNT
SCN6 AOD T3
RJM CTR CHECK TRACK RESERVATION
PJN SCN8 IF TRACK NOT RESERVED
RJM SNS ADVANCE TO NEXT SECTOR
SCN7 RJM RSB READ SECTOR
MJN SCN11 IF ERROR
LJM SCN1 LOOP
SCN8 LDM SCNA,T3 GET MESSAGE
LJM SKM SET KEYBOARD MESSAGE
SCN9 LDI CA
ZJN SCN11 IF NOT SCAN TO TRT EOI
RJM SNT SET NEXT TRACK
STD T1
SHN 6
MJN SCN10 IF NOT EOI TRACK
SHN -6
LMD SC
ZJN SCN11 IF AT EOI INDICATED IN TRT
SCN10 AOD SC ADVANCE TO NEXT SECTOR
SBD LS
SBN 1
NJN SCN7 IF NOT END OF TRACK
STD SC
LDD T1
STD TK
UJN SCN7 READ NEXT SECTOR
SCN11 LJM RET RETURN
SCNA CON SCNB,SCNC,SCND,SCNE,SCNF
SCNB DATA Z*LINKAGE BYTE BAD.*
SCNC DATA Z*SYSTEM SECTOR LINKAGE BYTE BAD.*
SCND DATA Z*TRACK LINK IN WRONG SECTOR.*
SCNE DATA Z*WORD COUNT TOO BIG.*
SCNF DATA Z*TRACK NOT RESERVED.*
SPF SPACE 4,10
*** SHOWPF.
* DISPLAY THE PERMANENT FILE WHOSE CATALOG ENTRY IS CURRENTLY
* DISPLAYED. THE *PFC* DISPLAY MUST BE ON THE RIGHT SCREEN TO
* USE THIS COMMAND. THE DEVICE, TRACK, AND SECTOR FROM THE
* PFC CURRENTLY DISPLAYED ARE USED TO DISPLAY THE FILE. IF THE
* DEVICE IS NOT PRESENT, *INCORRECT PARAMETER* IS DISPLAYED.
SPF COMMAND
LDD RS CHECK CURRENT DISPLAY
LMN DFDN
SHN 12
ADM /DFD/DFDB
LMN DPEN
NJP ERR4 IF PFC DISPLAY NOT UP
LDM DRSA+4 COMPUTE PFC ADDRESS
SHN NWCES
STD FN
SHN 2
RAD FN
LDM BFMS+2+FCDN,FN DETERMINE EQUIPMENT FILE IS ON
LPN 77
ZJN SPF2 IF FILE IS ON MASTER DEVICE
STD CM
LDD MA SAVE CURRENT DIRECT CELLS
ADN 4
CWD T3 - T7
ADN 1
CWD CM+3 - CM+7
LDD T5 SEARCH FOR DEVICE
RJM SDN
PJN SPF1 IF DEVICE FOUND
ADN 1
ZJN SPF4 IF DEVICE NOT FOUND
SPF1 LDD MA RESTORE DIRECT CELLS USED BY *COMPSDN*
ADN 4+1
CRD CM+3
SPF2 LDM BFMS+2+FCBT,FN SET TRACK
STD T6
LDM BFMS+2+FCBS,FN SET SECTOR
STD T7
SHN 21-13
PJN SPF3 IF INDIRECT ACCESS FILE
LDN 0
STD T7
SPF3 LJM IMS INITIALIZE MASS STORAGE
SPF4 LDD MA RESTORE PREVIOUS VALUES TO DIRECT CELLS
ADN 4
CRD T3
ADN 1
CRD CM+3
LJM ERR2 *INCORRECT PARAMETER*
*CALL COMPSDN
SKE SPACE 4,10
*** SKIPEI.
* SET TRACK AND SECTOR TO EOI BASED ON CURRENT POSITION AND
* INFORMATION IN THE TRT. THE NUMBER OF SECTORS SKIPPED IS
* DISPLAYED ON THE LEFT SCREEN.
SKE COMMAND
RJM SEI SEARCH FOR EOI
LDD T2 SET UP MESSAGE
SHN -6
RJM C2D CONVERT TWO DIGITS
STM SKEB
LDD T2
RJM C2D CONVERT TWO DIGITS
STM SKEB+1
LDD T3
SHN -6
RJM C2D CONVERT TWO DIGITS
STM SKEB+2
LDD T3
RJM C2D CONVERT TWO DIGITS
STM SKEB+3
LDC SKEA
LJM SKM SET KEYBOARD MESSAGE
SKEA DATA H* LENGTH = *
SKEB DATA Z*NNNNNNNNB.*
*CALL COMPSEI
SKF SPACE 4,10
*** SKIPF.
* READ THE FILE STARTING AT THE CURRENT POSITION UNTIL AN EOF
* IS ENCOUNTERED.
SKF COMMAND
SKF1 RJM SNS ADVANCE TO THE NEXT SECTOR
RJM RSB READ SECTOR
MJN SKF2 IF ERROR
RJM RCPA RETURN TO MAIN LOOP
LDM BFMS
ADM BFMS+1
ZJN SKF3 IF EOI
LDM BFMS
NJN SKF1 IF NOT EOF
SKF2 LJM RET RETURN
SKF3 LJM ERR3 *NOT FOUND.*
SKR SPACE 4,10
*** SKIPR.
* READ THE FILE STARTING AT THE CURRENT POSITION UNTIL AN EOR
* OR EOF IS ENCOUNTERED.
SKR COMMAND
SKR1 RJM SNS ADVANCE TO THE NEXT SECTOR
RJM RSB READ SECTOR
MJN SKR2 IF ERROR
RJM RCPA RETURN TO MAIN LOOP
LDM BFMS
ADM BFMS+1
ZJN SKR3 IF EOI
LDM BFMS
ZJN SKR2 IF EOF
LDM BFMS+1
SHN -6
NJN SKR1 IF NOT SHORT PRU
SKR2 LJM RET RETURN
SKR3 LJM ERR3 *NOT FOUND.*
STB SPACE 4,10
*** STB.
* SET THE TRACK INTERLOCK BIT FOR THE CURRENT TRACK. THE
* KEYBOARD MUST BE UNLOCKED TO USE THIS COMMAND.
STB COMMAND
RJM CLB CHECK LOCK BIT
STB1 RJM CTR CHECK TRACK RESERVATION
MJN STB2 IF TRACK IS RESERVED
LJM ERR4 *INCORRECT ENTRY.*
STB2 LDD EQ
STD CM+1
LDD TK
STD CM+2
LDN STIS
STD CM+3
MONITOR STBM
LDD CM+1
ZJN STB3 IF REQUEST HONORED
LDN 0
STD SB
RJM RCPA RETURN TO MAIN LOOP
UJN STB1 LOOP
STB3 LJM RET RETURN
SSA SPACE 4,10
*** STORE.C.COMMENT
* STORE THE CURRENT EQUIPMENT, TRACK, AND SECTOR INTO SCRATCH
* AREA C. C IS A SINGLE ALPHABETIC CHARACTER (LEGAL CHARACTERS
* ARE DISPLAYED ON THE LEFT SCREEN). THE COMMENT IS COPIED TO
* THE SCRATCH AREA AND DISPLAYED ON THE LEFT SCREEN. THE
* COMMENT IS FOR CONVENIENCE ONLY AND IS TRUNCATED TO 10
* CHARACTERS. THE EQUIPMENT, TRACK, AND SECTOR CAN BE RELOADED
* FROM THE SCRATCH AREA WITH THE *LOAD* COMMAND.
SSA COMMAND
RJM CSA GET ADDRESS OF SCRATCH AREA
LDD EQ SAVE EQUIPMENT
STI T2
AOD T2
LDD TK SAVE TRACK
STI T2
AOD T2
LDD SC SAVE SECTOR
STI T2
AOD T2
LDD RS SAVE DISPLAY INFORMATION
SHN 11
ADM DRSA+4
STI T2
AOD T2
LDN 4 COPY COMMENT
STD T1
AOD CA
SSA1 LDI CA
SHN 6
ADM 1,CA
STI T2
LDN 2
RAD CA
AOD T2
SOD T1
PJN SSA1 IF MORE BYTES
LJM RET RETURN
ETK SPACE 4,10
*** TK.NNNN.
* ENTER TRACK NUMBER. *INCORRECT PARAMETER.* IS DISPLAYED IF
* THE NUMBER IS TOO LARGE.
ETK COMMAND
RJM ASD ASSEMBLE NUMBER
LDD AB+4
LPC 3777
ADC 4000
STD T2
SBD LT
SBN 1
PJN ETK1 IF ILLEGAL TRACK
LDD T2
STD TK
LJM RET RETURN
ETK1 LJM ERR2 *INCORRECT PARAMETER.*
SCT SPACE 4,10
*** UI.NNNNNN.
* SET EQUIPMENT AND TRACK FOR THE CATALOG ENTRIES FOR USER
* INDEX NNNNNN (NNNNNN .LE. 377777). *INCORRECT PARAMETER.* IS
* DISPLAYED IF THE CATALOG IS NOT FOUND (THIS MAY BE THE RESULT
* OF ENTERING THE WRONG FAMILY OR PACK NAME.) IF THE FAMILY
* OR PACK NAME ARE CHANGED (AFTER ENTERING THE *UI* COMMAND),
* THE *UI* COMMAND MUST BE REENTERED.
SCT COMMAND
RJM ASD GET USER INDEX
LDD MA SAVE CURRENT ENTRIES
ADN 5
CWD T3
LDN PF
RJM SCA SET CATALOG ADDRESS
PJN SCT1 IF DEVICE FOUND AND ACCESSIBLE
ADN 1
NJN SCT2 IF NOT FOUND
SCT1 LDN DFDN
STD RS
RJM LDO LOAD OVERLAY
LDN 0 SET SECTOR
STD SC
STM DRSA+4 SET DISPLAY INDEX
LJM IMS INITIALIZE MASS STORAGE
SCT2 LDD MA RESTORE PREVIOUS ENTRIES
ADN 5
CRD T3
LJM ERR2 *INCORRECT PARAMETER.*
*CALL COMPSCA
WRT SPACE 4,10
*** WRITE.
* WRITE THE CONTENTS OF THE BUFFER TO THE SECTOR CURRENTLY
* INDICATED. IF THE KEYBOARD IS NOT UNLOCKED, *INCORRECT
* ENTRY.* IS DISPLAYED.
WRT COMMAND
RJM CLB CHECK FOR LOCKED KEYBOARD
RJM CEQ CHECK EQUIPMENT
LDC BFMS+WLSF
RJM WDS WRITE DATA
ENDMS
LJM RET RETURN
SPACE 4,10
COMMAND
TAR SPACE 4,10
** TAR - TABLE ACCESS ROUTINES.
*
* THIS CM RESIDENT OVERLAY CONTAINS THE SUBROUTINES REQUIRED
* FOR COMMANDS *EJT.*, *FNT.*, *FNTL.*, *FNTLC.*, AND *QFT.*
* TO ACCESS THE CMR/NFL TABLES INVOLVED TO READ A FST ENTRY.
*
* THEY ARE LOADED AT THE END OF THE COMMAND OVERLAY.
QUAL PRESET
.1 MAX EETL,EFBL,EFLL,EFCL,EITL
QUAL *
QUAL
TARLA EQU CPLA+/PRESET/.1*5 TAR OVERLAY LOAD ADDRESS
QUAL *
TAR ACROVL TARLA
CFA SPACE 4,10
** CFA - CALCULATE FNT ADDRESS.
*
* ENTRY (CA) = ADDRESS OF CHARACTER STRING.
*
* EXIT (T3) = LOCAL FNT POINTER.
*
* USES CM - CM+4.
*
* CALL ASD.
CFA SUBR ENTRY/EXIT
RJM ASD GET FNT ORDINAL
LDN LENF COMPUTE FNT NFL ADDRESS (FNTN+NNNN*LENF)
STD T0
LDC FNTN
STD T3
CFA1 LDD AB+4
RAD T3
SHN -14
NJN CFA2 IF OVERFLOW
SOD T0
NJN CFA1 IF MULTIPLY BY LENF INCOMPLETE
LDD CP
ADN FLSW GET NFL/100B
CRD CM
LDD CM FORM LWA+1 OF LOCAL FNT AREA
SHN 6
ADN 1
STD CM+1
LDD T3
SBD CM+1
MJN CFAX IF LEGAL ORDINAL
CFA2 LJM ERR2 *INCORRECT PARAMETER.*
CTO SPACE 4,15
** CTO - CHECK TABLE ORDINAL.
*
* ENTRY (A) = MANAGED TABLE IDENTIFICATION CODE.
* (CA) = ADDRESS OF CHARACTER STRING.
*
* EXIT (T3) = TABLE ORDINAL.
* (T1) = MANAGED TABLE IDENTIFICATION CODE.
*
* USES CM - CM+4.
*
* CALLS ASD.
CTO SUBR ENTRY/EXIT
STD T1
RJM ASD ASSEMBLE TABLE ORDINAL
LDM TMTP,T1 READ POINTER WORD
CRD CM
LDD AB+4 CHECK VALID ORDINAL
STD T3
SBD CM+2
MJN CTOX IF LEGAL ORDINAL
LJM ERR2 *INCORRECT PARAMETER.*
RFE SPACE 4,15
** RFE - READ FST ENTRY.
*
* ENTRY (A) = MANAGED TABLE IDENTIFICATION CODE.
* (CA) = ADDRESS OF CHARACTER STRING.
*
* EXIT (FN - FN+4) = FST ENTRY.
* (T3) = FNT ADDRESS.
* (EQ) = EST ORDINAL.
*
* USES CM - CM+4.
*
* CALLS CFA, CTO, .EJT, .FNT, .QFT.
*
* MACROS NFA, SFA.
RFE4 LDD FN SET EST ORDINAL
STD EQ
RFE SUBR ENTRY/EXIT
LMK PNFL
NJN RFE1 IF NOT LOCAL FNT
STD T1
RJM CFA CALCULATE FNT ADDRESS
NFA T3,R
UJN RFE2 READ TABLE ENTRY
RFE1 LMK PNFL
RJM CTO CHECK TABLE ORDINAL
LDM TMTA,T1
STD CM
LDD T3 GET ADDRESS OF SPECIFIED ENTRY
RJM 0,CM
RFE2 ADM TFSI,T1
CRD FN READ FST ENTRY
LDD FN+1
ZJN RFE3 IF EMPTY FILE
SFA EST,FN
ADK EQDE
CRD CM READ EST ENTRY
LDD CM
SHN 21-13
MJN RFE4 IF MASS STORAGE
RFE3 LJM ERR2 *INCORRECT PARAMETER.*
TFSI INDEX LIST OF INDICES TO FST ENTRY
INDEX PNFL,FSTL
INDEX PFNT,FSTG
INDEX PQFT,ENTQ
INDEX PEJT,SCHE
INDEX PEJT+1
TMTA INDEX LIST OF MANAGED TABLE ACCESS ROUTINES
INDEX PFNT,.FNT
INDEX PQFT,.QFT
INDEX PEJT,.EJT
INDEX PEJT+1
TMTP INDEX LIST OF MANAGED TABLE POINTER ADDRESSES
INDEX PFNT,FNTP
INDEX PQFT,QFTP
INDEX PEJT,EJTP
INDEX PEJT+1
QUAL$ EQU 0 SELECT UNQUALIFIED ASSEMBLY OF COMPGFP
EJT$ EQU 0 DEFINE *COMPGFP* ACCESS TO EJT
FNT$ EQU 0 DEFINE *COMPGFP* ACCESS TO FNT
QFT$ EQU 0 DEFINE *COMPGFP* ACCESS TO QFT
IFP$ EQU 0 GENERATE *IFP* REMOTE CODE
.OFFS SET *O-*L
*CALL COMPGFP
SPACE 4,10
ACROVL
ERRNG EPFW-TARLA-/PRESET/TARL*5 *TAR* OVERFLOWS ERROR PROC.
* SINCE THE IFP CODE FOR COMPGFP IS EXECUTED DURING PRESET,
* THE LOCATIONS TO BE PRESET MUST BE REFERENCE VIA THE ORIGIN
* COUNTER, RATHER THAN THE LOCATION COUNTER (WHICH WAS USED TO
* DEFINE THE SYMBOLS *EJTB*, *FNTB*, AND *QFT*).
* TO ACCOMPLISH THIS, THE PRESET CODE IS ASSEMBLED USEING A
* DIFFERENT QUALIFIER. THIS NECESSITATES REDEFINING THE
* ASSEMBLY OPTION TAGS AS WELL.
USE PRESET
QUAL$ EQU 0 SELECT UNQUALIFIED ASSEMBLY OF COMPGFP
EJT$ EQU 0 DEFINE *COMPGFP* ACCESS TO EJT
EJTB EQU /TAR/EJTB+/TAR/.OFFS
FNT$ EQU 0 DEFINE *COMPGFP* ACCESS TO FNT
FNTB EQU /TAR/FNTB+/TAR/.OFFS
QFT$ EQU 0 DEFINE *COMPGFP* ACCESS TO QFT
QFTB EQU /TAR/QFTB+/TAR/.OFFS
IFP$ EQU 0 GENERATE *IFP* REMOTE CODE
IFP HERE ASSEMBLE *IFP* REMOTE CODE HERE
USE *
SPACE 4,10
OVERFLOW /PRESET/OVL
QUAL * RESUME UNQUALIFIED DEFINITIONS
OVERLAY /PRESET/OVL,(LISTING FILE COMMAND PROCESSORS.)
OVL SUBR ENTRY/EXIT
UJN OVLX RETURN
SPACE 4,10
*** THE FOLLOWING COMMANDS ARE USED TO PRINT THE CONTENTS OF THE
* DISK SECTOR AND MANIPULATE THE LISTING FILE.
CLF SPACE 4,10
*** LISTING.CCCCCCC.
* SET THE LISTING FILE NAME TO CCCCCCC. THE LISTING FILE IS
* ORIGINALLY *OUTPUT*.
CLF COMMAND
RJM WCC WAIT FOR PREVIOUS REQUEST TO COMPLETE
RJM ASN GET NAME
LDD BA
SHN 6
ADD RA
SHN 6
ADD BA+1
CWD FN WRITE NAME TO BUFFER
LDN 2*2+1
LJM SCP START CPU
OUT SPACE 4,10
*** OUT.
* RELEASE THE LISTING FILE TO THE OUTPUT QUEUE.
OUT COMMAND
RJM WCC WAIT FOR PREVIOUS REQUEST TO COMPLETE
LDN 3*2+1
LJM SCP START CPU
PRT SPACE 4,10
*** PRINT.
* PRINT THE CURRENT EQUIPMENT, TRACK, SECTOR, TRT INFORMATION,
* AND THE CONTENTS OF THE SECTOR.
*
*
* PRINT.NNNN.
* PRINT THE NEXT NNNN (MUST BE AN OCTAL NUMBER) SECTORS START-
* ING WITH THE CURRENT SECTOR. PRINTING WILL STOP AT EOI IF
* ENCOUNTERED BEFORE NNNN SECTORS HAVE BEEN PRINTED. ONE PAGE
* OF OUTPUT IS PRODUCED FOR EACH SECTOR PRINTED.
PRT COMMAND
LDI CA
ZJN PRT1 IF NUMBER NOT ENTERED
RJM ASD CONVERT NUMBER
LDD AB+4
SBN 1
PRT1 STD FN SAVE COUNT
PRT2 RJM WCC WAIT FOR PREVIOUS REQUEST TO COMPLETE
RJM SNT GET CONTENTS OF TRT
STD AB
LDD CM+4
STD AB+1
LDM DLSA
STD AB+3
LDM DLSA+1
STD AB+4
LDD TK
SHN -2
RAD AB+4
SHN -14
RAD AB+3
LDM BFMS
STD T5+3 (=CM)
LDM BFMS+1
STD T5+4 (=CM+1)
LDD BA
SHN 6
ADD RA
SHN 6
ADD BA+1
CWD T5 WRITE OUT EQUIPMENT AND CONTROL BYTES
ADN 1
CWD AB
ADN 1
CWM BFMS+2,HN WRITE OUT CONTENTS OF BUFFER
RJM WCC RESET (CM - CM+4)
SOD FN DECREMENT COUNT
MJN PRT3 IF DONE
RJM SNS SET NEXT SECTOR
ZJN PRT3 IF AT EOI
LDN 1*2+1 SET FUNCTION CODE
STD CM+4
LDD RA
SHN 6
ADN D
CWD CM
RJM RSB READ NEXT SECTOR
MJN PRT4 IF ERROR
LJM PRT2 LOOP
PRT3 LDN 1*2+1
LJM SCP START CPU
PRT4 LJM RET RETURN
RET SPACE 4,10
*** RETURN.
* RETURN THE LISTING FILE.
RET COMMAND
RJM WCC WAIT FOR PREVIOUS REQUEST TO COMPLETE
LDN 6*2+1
LJM SCP START CPU
REW SPACE 4,10
*** REWIND.
* REWIND THE LISTING FILE.
REW COMMAND
RJM WCC WAIT FOR PREVIOUS REQUEST TO COMPLETE
LDN 4*2+1
LJM SCP START CPU
SID SPACE 4,10
*** SETID.NN.
* SET THE ID FOR THE OUTPUT FILE TO NN.
SID COMMAND
RJM WCC WAIT FOR PREVIOUS REQUEST TO COMPLETE
RJM ASD CONVERT ID
LDD BA
SHN 6
ADD RA
SHN 6
ADD BA+1
CWD AB
LDN 7*2+1
LJM SCP START CPU
SKL SPACE 4,10
*** SKIPL.
* POSITION TO THE END OF THE LISTING FILE.
SKL COMMAND
RJM WCC WAIT FOR PREVIOUS REQUEST TO COMPLETE
LDN 5*2+1
LJM SCP START CPU
SPACE 4,10
COMMAND
SPACE 4,10
OVERFLOW /PRESET/OVL
QUAL *
OVERLAY /PRESET/OVL,(LABEL/TRT RECONSTRUCTION PROCESSORS.)
OVL SPACE 4,10
** PRESET THE OVERLAY BY LOADING THE AUXILIARY COMMAND
* PROCESSOR SUBROUTINES TO CM.
OVL SUBR ENTRY/EXIT
LDN /PRESET/LRRL SET OVERLAY LENGTH
STD T1
LDD AB+3 SAVE CM ADDRESS
STM /PRESET/TCRO+LRRN*5+2
LDD AB+4
STM /PRESET/TCRO+LRRN*5+3
LDD AB+3 WRITE OVERLAY TO CM
SHN 6
ADD RA
SHN 6
ADD AB+4
CWM /PRESET/LRR,T1
LDD T1 UPDATE CM ADDRESS
RAD AB+4
SHN -14
RAD AB+3
UJN OVLX EXIT
SPACE 4,10
*** THE FOLLOWING COMMANDS CAN BE USED TO RECONSTRUCT THE LABEL
* AND TRT OF A DEVICE THAT HAS LOST THEM. THE COMMANDS WILL
* NOT NECESSARILY RECOVER THE DEVICE CORRECTLY. THE COMMANDS
* (IN APPROXIMATE ORDER OF USE) ARE -
*
* BEGINR - BEGIN RECOVERY BY INITIALIZING TABLES;
* RECOVER - SCAN DEVICE TO FIND FILES;
* BLDTRT - CHECK FOR LINKAGE ERRORS AND BUILD A SECTOR OF
* THE TRT FOR THE LABEL TRACK.
* NEXTAT - FIND AND READ NEXT AVAILABLE TRACK.
* (A TRACK WITH NO LINKAGE IN THE RECOVERY TABLES.)
* NEXTSS - FIND AND READ NEXT TRACK IN THE RECOVERY TABLE
* THAT BEGINS WITH A SYSTEM SECTOR.
* SETTRT - MODIFY POINTERS FOR RECOVER COMMAND.
* SETRW - MODIFY RECOVERY DATA FOR A TRACK.
* BLDSL - CREATE LABEL SECTOR FOR DEVICE.
*
* THESE COMMANDS USE A RECOVERY TABLE IN CM TO KEEP TRACK OF
* LINKAGES. THE TABLE IS INITIALIZED BY THE *BEGINR.* COMMAND.
* THE OTHER COMMANDS USE OR MODIFY THE DATA IN THE TABLE TO
* EFFECT DEVICE RECOVERY. THE TABLE IS FORMATTED AS FOLLOWS.
*
*
*T,MST IMAGE OF MST FOR DEVICE. (MSTL WORDS LONG)
*
*
*T,SSDW *FNSS* WORD FROM SYSTEM SECTOR OF CURRENT CHAIN.
* *FTSS* WORD.
* *DTSS* WORD. (THREE WORDS FOR FNSS....DTSS)
*
*
*T,RCPW 12/FT, 12/PT, 12/SC, 24/UNUSED (RECOVER POINTERS)
*
* FT - FIRST TRACK OF CURRENT CHAIN.
* PT - PREVIOUS TRACK IN CHAIN.
* SC - CURRENT SECTOR FOR EOI SEARCH AFTER ERROR.
*
*
*T,ICPW 12/FT, 12/PT, 36/UNUSED (INDIRECT CHAIN POINTERS)
*
* FT - FIRST TRACK OF INDIRECT CHAIN IN *BLDIC* COMMAND.
* PT - PREVIOUS TRACK OF INDIRECT CHAIN.
*
*
*T,BSPW 12/TT, 12/SC, 12/FT, 12/NF, 12/TL (BUILD POINTERS)
*
* TT - DESTINATION TRACK FOR WRITING TRT.
* SC - SECTOR FOR CURRENT PIECE OF TRT.
* FT - FIRST TRACK FOR CURRENT PIECE OF TRT.
* NF - DAF FILE COUNT.
* TL - TRT LENGTH FROM MST.
*
*
* TWO RESERVED WORDS FOLLOW.
*
*
*T,TRCT BEGINNING OF TRACK RECOVERY TABLE.
* (MSTL+10 WORD FROM BEGINNING OF MST AREA.)
* (ONE WORD PER TRACK AS FOLLOWS)
*
*T 6/TY, 1/RE, 1/SS, 1/FL, 1/, 2/EI, 12/FT, 12/PT, 12/NT, 12/LC
*
* TY - FILE TYPE FROM SYSTEM SECTOR.
* RE - READ ERROR DETECTED IN TRACK.
* SS - SYSTEM SECTOR IN TRACK AT OTHER THAN SECTOR ZERO.
* FL - FLAWED TRACK INDICATOR.
* EI - EOI STATUS FOR TRACK.
* =0 - NO EOI.
* =1 - NORMAL EOI IN TRACK.
* =2 - EOI, WRITTEN BY IMS.
* FT - FIRST TRACK OF CHAIN LINKED TO THIS TRACK.
* PT - FIRST TRACK ENCOUNTERED LINKED TO THIS ONE.
* ((PT) = CURRENT TRACK IF START OF FILE)
* NT - NEXT TRACK OR EOI SECTOR NUMBER.
* LC - LINKAGE COUNT. (NUMBER OF TRACKS LINKED
* TO THIS TRACK.)
SPACE 4,10
** LINKAGE RECOVERY DEFINITIONS.
*
* THE FOLLOWING SYMBOLS ARE USED TO REFERENCE THE
* CM RECOVERY TABLES.
QUAL
SSDW EQU MSTL+0 SYSTEM SECTOR DATA WORDS
RCPW EQU MSTL+3 RECOVERY POINTER WORD
ICPW EQU MSTL+4 INDIRECT CHAIN RECOVERY POINTER WORD
BSPW EQU MSTL+5 BUILD SECTOR POINTER WORD
* MSTL+6 SPARE
* MSTL+7 SPARE
TRCT EQU MSTL+10 TRACK RECOVERY TABLE
CRAL EQU TRCT+4077 CM RECOVERY AREA LENGTH
QUAL *
SPACE 4,10
** DIRECT CELL USAGE CONVENTIONS.
*
* (FN - FN+4) = RECOVERY POINTERS.
* = (RCPW) FOR BEGINR, NEXXTAT, NEXTSS, RECOVER.
* = (ICPW) FOR BLDIC. (NOT YET IMPLEMENTED)
* = (BSPW) FOR BLDSL, BLDTRT.
* (AB - AB+4) = RECOVERY WORD FOR CURRENT TRACK.
BTR SPACE 4,10
*** BEGINR.
* BEGIN TRACK RECOVERY FOR THE CURRENT SELECTED EQUIPMENT BY
* RESERVING AND CLEARING THE CM RECOVERY TABLES.
* THE EQUIPMENT TO BE RECOVERED MUST BE REMOVABLE AND UNLOADED.
* THE MST IN CMR FOR THE SELECTED EQUIPMENT IS USED TO
* INITIALIZE THE MST FOR THE LABEL TRACK BUILT BY THE RECOVERY
* COMMANDS. BE SURE THE EQUIPMENT MNEMONIC IN THE *E,M*
* DISPLAY MATCHES THE PACK TO BE RECOVERED. IF THIS COMMAND IS
* USED AGAIN, RECOVERY IS RESTARTED FOR THE CURRENT EQUIPMENT.
BTR COMMAND
LDD RT
NJN BTR2 IF NOT FIRST USE OF *BEGINR.*
LDD FL REQUEST STORAGE FOR TABLE
STD RT SAVE TABLE ADDRESS
ADN CRAL/100B
STD AB
LDD CP
ADN MS1W
CWM BTRA,TR * WAITING FOR MEMORY.*
BTR1 LDN ZERL REQUEST STORAGE FOR RECOVERY TABLE
CRD CM
LDD AB
STD CM+1
MONITOR RSTM
RJM PSS PAUSE
LDD AB
LMD FL
NJN BTR1 IF MEMORY NOT OBTAINED
BTR2 LDN DFBN SET DEFAULT DISPLAY AND LOAD SUBROUTINES
STD RS
LDN LRRN OVERLAY CONTROL WORD INDEX
RJM LDO LOAD OVERLAY
SFA EST,EQ READ EST ENTRY
ADK EQDE
CRD CM
LDN MSTL SET UP MST SKELTON FOR RECOVERY
STD T1
LDD CM+4 GET MST ADDRESS
SHN 3
CRM EPFW,T1
RJM MST SET MST AREA
LDD RA WRITE MST TO RECOVERY TABLE
ADD RT
SHN 6
CWM EPFW,T1
LDN ZERL
CRD AB CLEAR RECOVERY WORDS
CRD FN
LDD CP CLEAR MESSAGE
ADN MS1W
CWD FN
BTR3 LDD RA CLEAR RECOVERY TABLE
ADD RT
SHN 6
ADD T1
CWD FN
AOD T1
ADC -CRAL
MJN BTR3 IF MORE TO CLEAR
LDC 4000-1 SET INITIAL TRACK
STD FN
RJM /LRR/SRP SAVE RECOVERY POINTERS
AOD FN READ FIRST SECTOR
STD TK
LDN 0
STD SC
RJM RSB READ SECTOR TO BUFFER
LJM RET RETURN
BTRA DATA C* WAITING FOR MEMORY.*
MST SPACE 4,10
** MST - SET MST RECOVERY TABLE.
*
* ENTRY (EPFW - EPFW+MSTL) = MST IMAGE.
*
* EXIT MST SET FOR RECOVERY OPERATIONS.
*
* USES T3.
MST SUBR ENTRY/EXIT
LDC EPFW+ALGL*5
STD T3
LDC /LSD/FLTK
STM 1,T3
LDN 0
STI T3 CLEAR INDIRECT POINTER
STM 2,T3 CLEAR PERMITS POINTER
STM 3,T3 CLEAR CATALOG TRACK COUNT
STM 4,T3 CLEAR *DAT* POINTER
.1 SET STLL-ALGL
LDN .1*5
RAD T3
LDN 2
STI T3 CLEAR INITIALIZE REQUESTS
LDN 0
STM 1,T3 CLEAR ERROR STATUS
STM 3,T3 CLEAR DAF USER COUNT
LJM MSTX RETURN
BLS SPACE 4,20
*** BLDSL.
* BUILDS A LABEL SECTOR IMAGE IN THE DATA BUFFER FROM DATA
* IN THE CM RECOVERY TABLE. ONCE THE OTHER RECOVERY COMMANDS
* HAVE COMPLETED, THE MEMORY CHANGE COMMANDS CAN FILL IN ANY
* MISSING DATA. THE BUFFER CAN THEN BE WRITTEN TO DISK WITH
* THE WRITE COMMAND.
*
* NOTE - IF THIS COMMAND IS USED AFTER THE *RECOVER* COMMAND
* COMPLETES, THE MST IN THE DATA BUFFER WILL SHOW THE
* POINTERS TO THE FIRST TRACK OF THE PERMIT DATA AND INDIRECT
* PF CHAIN. SINCE THE *RECOVER* COMMAND IS UNABLE TO FIND THE
* CATALOG TRACK CHAIN, THESE POINTERS ARE HELPFUL IN LOCATING
* THE CATALOG TRACK CHAIN, WHICH IS ALLOCATED BY *IMS*
* IMMEDIATELY PRECEEDING THESE TWO TRACKS. THIS ONLY APPLIES
* TO THE INITIAL CATALOG TRACKS. OVERFLOW TRACKS ARE LINKED
* THRU THE LAST SECTOR OF ONE OF THE INITIAL TRACKS.
BLS COMMAND
LDD RT
NJN BLS1 IF RECOVERY TABLES NOT PRESENT
LJM ERR4 *INCORRECT COMMAND.*
BLS1 LDN DFBN SET DEFAULT DISPLAY AND LOAD SUBROUTINES
STD RS
LDN LRRN OVERLAY CONTROL WORD INDEX
RJM LDO LOAD OVERLAY
LDC 3777 SET LINKAGE FOR SYSTEM SECTOR
STM BFMS
LDN 77
STM BFMS+1
BLS2 LDN ZERL CLEAR SECTOR BUFFER
CRM FNSS,ON
BLSA EQU *-1
LDN 5 ADVANCE BUFFER ADDRESS
RAM BLSA
LMC BFMS+2+100*5
NJN BLS2 IF CLEAR INCOMPLETE
LDN 2
STD T1
BLS3 LDM BLSB,T1 SET FILE NAME = *LABEL*
STM FNSS,T1
SOD T1
PJN BLS3 IF COPY INCOMPLETE
LDC SYFT*1S6 SET FILE TYPE
STM FNSS+4
LDD EQ SET EQUIPMENT ORDINAL
STM FTSS-1
LDN PDTL SET DATE AND TIME
CRM DTSS,ON
LDN 1
STM NSSS SET NEXT SECTOR
STM DTSS SET FLAG
STM /LSD/LLSS SET LABEL LEVEL
SFA EST,EQ READ EST ENTRY
ADK EQDE
CRD CM
LDD CM+3 SET EQUIPMENT MNEMONIC
STM /LSD/E4SS
LDN MSTL READ MST FROM RECOVERY AREA
STD T1
LDD RA
ADD RT
SHN 6
CRM /LSD/N4SS,T1
LDM /LSD/N4SS+ALGL*5+1 SET LABEL TRACK AND SECTOR
STD TK
STM FTSS
LDN 0
STD SC
LJM RET RETURN
BLSB DATA Z*LABEL*
BRS SPACE 4,10
*** BLDSTRT.
* BUILD NEXT SECTOR OF TRT DATA FOR LABEL TRACK. AFTER LAST
* SECTOR IS BUILT, THE POINTERS ARE RESET FOR THE FIRST SECTOR
* AGAIN. TRACK AND SECTOR ARE SET FOR *WRITE* COMMAND.
*
* BLDSTRT.N.
* BUILD SECTOR *N* OF TRT DATA FOR LABEL TRACK. (N .GE. 1)
*
* NOTE IT WILL BE NECESSARY TO MANUALLY GENERATE THE EOI
* SECTOR FOR THE LABEL TRACK.
BRS COMMAND
LDD RT
NJN BRS1 IF TABLES NOT ALLOCATED
LJM ERR4 *INCORRECT ENTRY.*
BRS1 LDN DFBN SET DEFAULT DISPLAY AND LOAD SUBROUTINES
STD RS
LDN LRRN OVERLAY CONTROL WORD INDEX
RJM LDO LOAD OVERLAY
LDN BSPW-RCPW SET POINTER INDEX
RAM /LRR/RRPA
STM /LRR/SRPA
RJM /LRR/RRP RESTORE RECOVERY POINTERS
LDD FN
NJN BRS2 IF NOT INITIAL ENTRY
STD FN+1
LDD RA GET LABEL TRACK FROM MST
ADD RT
SHN 6
ADN ALGL
CRD CM
LDD CM+1
STD FN
BRS2 LDI CA CHECK PARAMETER
ZJN BRS3 IF NO SECTOR SPECIFIED
SBN 1R1
MJN BRS4 IF ILLEGAL SECTOR NUMBER
STD FN+1
BRS3 AOD FN+1 ADVANCE SECTOR
SBN 1
SHN 10 (400B TK/PRU)
ADC 4000
STD FN+2 SET STARTING TRACK
SBD LT
MJN BRS5 IF LEGAL SECTOR
BRS4 LJM ERR2 *INCORRECT PARAMETER*
* CHECK ALL TRACKS FOR ERRORS.
BRS5 RJM CLE CHECK FOR LINKAGE ERRORS
RJM BTS BUILD TRT SECTOR
LDM BFMS+1
LMC 100
ZJN BRS8 IF SECTOR FULL, NOT END OF TRT
* COMPLETE LAST SECTOR OF TRT.
LDD TK
LPN 3
ZJN BRS7 IF LAST WORD FULL
BRS6 LDC 3777 SET UNUSABLE TRACKS AS FLAWED
STI T3
AOD T3
LDD RC
SHN 1
LMN 1
STD RC
AOD TK
LPN 3
NJN BRS6 IF NOT END OF WORD
LDD RC SAVE TRACK STATUS BYTE
STI T3
AOD T3
AOM BFMS+1 INCREMENT SECTOR WORD COUNT
BRS7 LDN 0 CLEAR REMAINDER OF LAST SECTOR
STI T3
AOD T3
ADC -BFMS-2-100*5
MJN BRS7 IF NOT END OF SECTOR
LDN 0 RESET POINTER TO START OVER
STD FN
* SET POINTERS AND RETURN.
BRS8 LDD TK SAVE NEXT TRACK
STD FN+2
LDD FN SET DESTINATION ADDRESS
STD TK
LDD FN+1 SET SECTOR
STD SC
LDD RA SAVE POINTERS
ADD RT
SHN 6
ADN BSPW
CWD FN
LJM RET RETURN
BTS SPACE 4,10
** BTS - BUILD TRT SECTOR.
*
* BUILD A SECTOR OF TRT FROM RECOVERY TABLE.
BTS SUBR ENTRY/EXIT
LDD FN+1 SET LINK
ADN 1
STM BFMS
LDN 0
STD RC
STM BFMS+1
LDC BFMS+2
STD T3
LDD FN+2
STD TK
* BUILD TRT FROM RECOVERY TABLE.
BTS1 RJM /LRR/STA SET TABLE ADDRESS
CRD AB READ TRACK RECOVERY WORD
LDD AB
LPN 10
ZJN BTS2 IF NOT FLAWED TRACK
LDC 3777 SET FLAWED TRACK
STI T3
UJN BTS4 SET STATUS
BTS2 LDD AB+3
STI T3
LDD AB
SCN 77
ZJN BTS3 IF NOT FIRST TRACK OF FILE
LDC 401
UJN BTS5 SET TRACK STATUS
BTS3 LDD AB+3
ZJN BTS5 IF TRACK NOT LINKED
BTS4 LDN 1 SET TRACK STATUS
BTS5 SHN 21 MERGE STATUS
LMD RC
SHN 1
STD RC
AOD T3 ADVANCE TRACK POINTERS
AOD TK
LPN 3
NJN BTS6 IF TRT WORD NOT COMPLETE
LDD RC STORE TRACK STATUS BYTE
STI T3
AOD T3
LDN 0
STD RC
AOM BFMS+1 INCREMENT SECTOR WORD COUNT
LMC 100
ZJN BTS7 IF SECTOR FULL
BTS6 LDD TK
LMD LT
ZJN BTS7 IF END OF TRT
LJM BTS1 PROCESS NEXT ENTRY
BTS7 LJM BTSX RETURN
CLE SPACE 4,10
** CLE - CHECK FOR LINKAGE ERRORS.
*
* VERIFY THAT ALL TRACKS RESERVED HAVE UNIQUE LINKAGE.
CLE SUBR ENTRY/EXIT
LDC 4000
STD TK
CLE1 RJM /LRR/STA SET TABLE ADDRESS
CRD AB READ TRACK RECOVERY WORD
LDD AB
LPN 64
NJN CLE2 IF ERRORS
LDD AB+4
SBN 2
MJN CLE3 IF LINKAGE UNIQUE
CLE2 LDC CLEA *ERROR IN TRACK STATUS.*
LJM ERR OUTPUT MESSAGE
CLE3 AOD TK
SBD LT
MJN CLE1 IF ALL TRACKS NOT CHECKED
UJN CLEX RETURN - NO ERRORS
CLEA DATA Z*ERROR IN TRACK STATUS.*
NAT SPACE 4,10
*** NEXTAT.
* LOCATES THE NEXT AVAILABLE TRACK ON THE CURRENT EQUIPMENT,
* AND READS THE FIRST SECTOR OF THE TRACK. THE SEARCH BEGINS
* AT THE DISPLAYED TRACK POINTER+1. BY RESETTING THE TRACK
* POINTER TO TRACK ZERO, AND USING THIS COMMAND, UNRESERVED
* TRACKS CAN BE FOUND AND CHECKED FOR BEING PART OF THE
* CATALOG TRACK CHAIN OR INDIRECT FILE CHAIN.
NAT COMMAND
LDD RT
NJN NAT1 IF TABLES ALLOCATED
LJM ERR4 *INCORRECT ENTRY.*
NAT1 LDN DFBN SET DEFAULT DISPLAY AND LOAD SUBROUTINES
STD RS
LDN LRRN OVERLAY CONTROL WORD INDEX
RJM LDO LOAD OVERLAY
RJM /LRR/RRP RESTORE RECOVERY POINTERS
UJN NAT3 ENTER LOOP
NAT2 RJM /LRR/STA SET TABLE ADDRESS
CRD AB READ TRACK RECOVERY WORD
LDD AB+1 CHECK FOR LINK
ZJN NAT4 IF TRACK AVAILABLE
NAT3 AOD FN
STD TK
SBD LT
MJN NAT2 IF NOT END OF DEVICE
SOD TK
LDC NATA *END OF EQUIPMENT.*
LJM ERR OUTPUT MESSAGE
NAT4 STD SC
RJM /LRR/SRP SAVE UPDATED RECOVERY POINTERS
RJM RSB READ SECTOR TO BUFFER
LJM RET RETURN
NATA DATA Z*END OF EQUIPMENT.*
NSS SPACE 4,10
*** NEXTSS.
* LOCATES THE NEXT TRACK IN THE RECOVERY TABLE THAT BEGINS
* WITH A SYSTEM SECTOR. THE SEARCH BEGINS AT THE DISPLAYED
* TRACK POINTER+1.
NSS COMMAND
LDD RT
NJN NSS1 IF TABLES ALLOCATED
LJM ERR4 *INCORRECT ENTRY.*
NSS1 LDN DFBN SET DEFAULT DISPLAY AND LOAD GUBROUTINES
STD RS
LDN LRRN OVERLAY CONTROL WORD INDEX
RJM LDO LOAD OVERLAY
RJM /LRR/RRP RESTORE RECOVERY POINTERS
UJN NSS3 ENTER LOOP
NSS2 RJM /LRR/STA SET TABLE ADDRESS
CRD AB READ TRACK RECOVERY WORD
LDD AB CHECK FOR SYSTEM SECTOR
SCN 77
NJN NSS4 IF SYSTEM SECTOR (FIRST TRACK)
NSS3 AOD FN
STD TK
SBD LT
MJN NSS2 IF NOT END OF DEVICE
SOD TK
LDC NSSA *END OF EQUIPMENT.*
LJM ERR OUTPUT MESSAGE
NSS4 LDN 0
STD SC
RJM /LRR/SRP SAVE UPDATED RECOVERY POINTERS
RJM RSB READ SECTOR TO BUFFER
LJM RET RETURN
NSSA DATA Z*END OF EQUIPMENT.*
REC SPACE 4,15
*** RECOVER.
* RECOVER TRACKS STARTING AT FIRST TRACK OF DEVICE. IF THIS
* COMMAND IS USED MORE THAN ONCE SINCE A *BEGINR* COMMAND, IT
* CONTINUES RECOVERY BY FINDING THE NEXT SYSTEM SECTOR TRACK.
*
* RECOVER.X. (X = ANY CHARACTER.)
* CONTINUE RECOVERY BY SCANNING FROM CURRENT POSITION TO EOI.
*
* RECOVERY DATA IS ADDED TO THE TABLE BY SEARCHING FOR TRACKS
* THAT BEGIN WITH A SYSTEM SECTOR, AND FOLLOWING THE LINKAGE
* TO EOI. ERRORS AND ANOMOLYS ARE FLAGGED. THE INDIRECT CHAIN
* IS NOT TRACED. THE DISPLAY IS DROPPED UNTIL AN ERROR
* OCCURS, OR UNTIL THE SEARCH COMPLETES. IT IS THEN
* REQUESTED AGAIN AS IF A *HOLD* COMMAND HAD BEEN USED.
REC COMMAND
LDD RT
NJN REC1 IF TABLES ALLOCATED.
LJM ERR4 *INCORRECT COMMAND.*
REC1 LDN DFBN SET DEFAULT DISPLAY AND LOAD SUBROUTINES
STD RS
LDN LRRN OVERLAY CONTROL WORD INDEX
RJM LDO LOAD OVERLAY
RJM /LRR/RRP RESTORE RECOVERY POINTERS
LDI CA CHECK MODE
ZJN REC2 IF NO ENTRY SPECIFIED
RJM DDS DROP DISPLAY
AOD FN+2 ADVANCE TO NEXT SECTOR
STD SC
LJM REC5 CONTINUE FROM NEXT SECTOR.
REC2 RJM DDS DROP DISPLAY
* ENTER HERE TO CHECK NEXT TRACK FOR SYSTEM SECTOR.
REC3 AOD FN SET TRACK AND SECTOR
STD FN+1
STD TK
LMD LT
NJN REC4 IF NOT END OF EQUIPMENT
SOD TK
SOD FN
LDC RECB *END OF EQUIPMENT.*
LJM REC14 REPORT ERROR
REC4 LDN 0
STD SC
RJM /LRR/STA SET TABLE ADDRESS
CRD AB READ TRACK RECOVERY WORD
LDD AB+1
NJN REC3 IF TRACK LINKED
RJM RSB READ SECTOR TO BUFFER
MJP REC13 IF ERROR
LDM BFMS CHECK FOR SYSTEM SECTOR
SHN 6
ADM BFMS+1
ZJN REC6 IF EOI AT (SC) = 0
LMC 377777
NJN REC3 IF NOT SYSTEM SECTOR
RJM /LRR/CSS CHECK SYSTEM SECTOR
ZJN REC7 IF NO CHAIN RECOVERY
* ENTER HERE TO SCAN FROM CURRENT POSITION TO EOI.
REC5 RJM /LRR/SRP SAVE RECOVERY POINTERS
RJM /LRR/WSM WRITE STATUS MESSAGE
RJM PSS PAUSE FOR SYSTEM
RJM /LRR/RRP RESTORE RECOVERY POINTERS
RJM SNS SET NEXT SECTOR
NJN REC8 IF NOT EOI
* CHECK EOI SECTOR.
REC6 RJM /LRR/CEI CHECK EOI
RJM /LRR/STA SET TABLE ADDRESS
CWD AB SAVE TRACK RECOVERY WORD
REC7 LJM REC3 LOOP TO FIND NEXT FILE
REC8 LDD SC
ZJN REC10 IF NEW TRACK
RJM RSB READ SECTOR TO BUFFER
MJP REC13 IF ERROR
LDM BFMS CHECK FOR SYSTEM SECTOR IN TRACK
SHN 6
ADM BFMS+1
LMC 377777
NJP REC5 IF NOT SYSTEM SECTOR
LDD AB SET SYSTEM-SECTOR-IN-TRACK STATUS
SCN 20
LMN 20
STD AB
LDC RECC *SYSTEM SECTOR IN TRACK.*
LJM REC14 PROCESS ERROR
* ADVANCE TO NEXT TRACK.
REC10 LDD TK SET FORWARD LINK
STD AB+3
LDD FN+1 RESET TRACK
STD TK
RJM /LRR/STA SET TABLE ADDRESS
CWD AB SAVE TRACK RECOVERY WORD
LDD AB+3 SET NEW TRACK
STD TK
RJM /LRR/STA SET TABLE ADDRESS
CRD AB READ TRACK RECOVERY WORD
AOD AB+4
LDD AB+1
NJN REC12 IF TRACK ALREADY LINKED
RJM RSB READ SECTOR TO BUFFER
MJP REC13 IF ERROR
LDM BFMS CHECK FOR BEGINNING OF ANOTHER FILE
SHN 6
ADM BFMS+1
LMC 377777
ZJN REC12 IF SYSTEM SECTOR
LDD FN SET REVERSE LINKS
STD AB+1
LDD FN+1
STD AB+2
LDD TK
STD FN+1
LJM REC5 LOOP
* TRACK TO BE LINKED IS ALREADY IN USE.
REC12 LDC RECD *NEXT TRACK IN USE.*
UJN REC14 PROCESS ERROR
* PROCESS READ ERROR IN TRACK.
REC13 LDD AB SET ERROR STATUS
SCN 40
LMN 40
STD AB
LDN 0
* TERMINATE PROCESSING.
REC14 STD T3 SAVE MESSAGE ADDRESS
LDD SC SAVE CURRENT SECTOR
STD FN+2
RJM /LRR/SRP SAVE RECOVERY POINTERS
RJM /LRR/RDM RESUME DISPLAY MODE
LDD T3
LJM ERR REPORT ERROR
RECB DATA Z*END OF EQUIPMENT.*
RECC DATA Z*SYSTEM SECTOR IN TRACK.*
RECD DATA Z*NEXT TRACK IN USE.*
SRW SPACE 4,10
*** SETRW.B.NNNN.
* CHANGE BYTE *B* OF CURRENT TRACK RECOVERY WORD TO *NNNN*.
SRW COMMAND
LDD RT
NJN SRW1 IF TABLES ALLOCATED
LJM ERR4 *INCORRECT ENTRY.*
SRW1 LDN DFBN SET DEFAULT DISPLAY AND LOAD SUBROUTINES
STD RS
LDN LRRN OVERLAY CONTROL WORD INDEX
RJM LDO LOAD OVERLAY
RJM /LRR/STA SET TABLE ADDRESS
CRD CM READ TRACK RECOVERY WORD
RJM ASD GET BYTE NUMBER
LDD AB+4
STD RC
SBN 5
PJN SRW2 IF OUT OF RANGE
AOD CA ADVANCE CHARACTER ADDRESS
RJM ASD ASSEMBLE NEW VALUE
LDD AB+4
STM CM,RC
RJM /LRR/STA SET TABLE ADDRESS
CWD CM SAVE TRACK RECOVERY WORD
LJM RET RETURN
SRW2 LJM ERR2 *INCORRECT PARAMETER.*
STP SPACE 4,10
*** SETTP.NNNN.
* SETS RECOVERY TRACK POINTER FOR *RECOVER.*, *NEXTAT.*,
* *NEXTSS.*, AND *SETRW.* COMMANDS TO *NNNN*.
STP COMMAND
LDD RT
NJN STP1 IF TABLES ALLOCATED
LJM ERR4 *INCORRECT ENTRY.*
STP1 ADD RA READ POINTER WORD
SHN 6
ADN RCPW
CRD CM
RJM ASD ASSEMBLE VALUE
LDD AB+4
LPC 3777
LMC 4000
STD CM
STD TK
LDD RA SAVE UPDATED POINTER WORD
ADD RT
SHN 6
ADN RCPW
CWD CM
LDN 0
STD SC
RJM RSB READ SECTOR TO BUFFER
LJM RET RETURN
SPACE 4,10
COMMAND TERMINATE COMMANDS
LRR SPACE 4,10
** LRR - LABEL/TRT RECONSTRUCTION SUBROUTINES.
*
* THE FOLLOWING ROUTINES ARE SAVED IN CENTRAL TO BE LOADED
* AT THE END OF THE RIGHT SCREEN PROCESSOR AREA AS NEEDED.
LRR ACROVL ACRLA
CEI SPACE 4,15
** CEI - CHECK EOI SECTOR.
*
* ENTRY (AB - AB+4) = TRACK RECOVERY WORD.
* (FN - FN+4) = RECOVERY POINTERS.
*
* EXIT (A) = 0 IF INDIRECT CHAIN.
* RECOVERY POINTERS UPDATED.
*
* USES T1, CM - CM+4.
*
* CALLS STA.
CEI SUBR ENTRY/EXIT
LDD SC
STD AB+3
AOD AB SET EOI STATUS
LDD SC
LMN LS
ZJN CEIX IF AT END OF TRACK
AOD SC
RJM RSB READ SECTOR TO BUFFER
ZJN CEI1 IF NO READ ERROR
RJM SRP SAVE RECOVERY POINTERS
RJM /LRR/RDM RESUME DISPLAY MODE
LJM RET RETURN
CEI1 LDN 2
STD T1
SOD SC
LDM BFMS
ADM BFMS+1
NJN CEI3 IF NOT ANOTHER EOI SECTOR
CEI2 LDM BFMS+FNEI,T1 CHECK FOR FILENAME *IMS*
LMM CEIB,T1
NJN CEI3 IF NOT CATALOG/PERMIT/DATA TRACK
SOD T1
PJN CEI2 IF CHECK NOT COMPLETE
AOD AB SET IMS EOI STATUS
CEI3 LDN 0 FORCE EOI STATUS FOR *SNS*
STM BFMS
STM BFMS+1
LJM CEIX RETURN
CEIB DATA Z*IMS*
CSS SPACE 4,15
** CSS - CHECK SYSTEM SECTOR.
*
* ENTRY (AB - AB+4) = TRACK RECOVERY WORD.
* (FN - FN+4) = RECOVERY POINTERS.
*
* EXIT (A) = 0 IF INDIRECT CHAIN.
* RECOVERY POINTERS UPDATED.
*
* USES T1, CM - CM+4.
*
* CALLS STA, ERR.
CSS SUBR ENTRY/EXIT
LDD RA READ MST RECOVERY AREA
ADD RT
SHN 6
ADN ALGL
CRD CM
ADN SSDW-ALGL SAVE FNT/FST/DATE/TIME
CWM FNSS,TR
LDD FN SET LINKAGE
STD AB+1
STD AB+2
LDM FNSS+4 SET FILE TYPE
SHN -6
STD T1
SHN 6
RAD AB
LDD T1
LMN SYFT
NJN CSSX IF NOT SPECIAL FILE
LDN 2
STD T1
CSS1 LDM FNSS,T1 CHECK FOR FILENAME *LABEL*
LMM CSSA,T1
NJN CSS2 IF NOT LABEL SECTOR
SOD T1
PJN CSS1 IF CHECK NOT COMPLETE
LDN 1 ALGL BYTE POINTER
UJN CSS6 SAVE TRACK
CSS2 LDN 2
STD T1
CSS3 LDM FNSS,T1 CHECK FOR FILENAME *DATA*
LMM CSSB,T1
NJN CSS4 IF NOT INDIRECT CHAIN
SOD T1
PJN CSS3 IF CHECK NOT COMPLETE
LDN 0 ALGL BYTE POINTER
UJN CSS6 SAVE TRACK
CSS4 LDN 2
STD T1
LDM FNSS+3
LMM CSSC+3
SCN 77
NJN CSS7 IF NOT PERMIT CHAIN
CSS5 LDM FNSS,T1 CHECK FOR FILENAME *PERMIT*
LMM CSSC,T1
NJN CSS7 IF NOT PERMIT CHAIN
SOD T1
PJN CSS5 IF CHECK NOT COMPLETE
LDN 2 ALGL BYTE POINTER
* SAVE TRACK IN PROPER *ALGL* BYTE.
CSS6 STD T1
LDD TK SAVE TRACK POINTER
STM CM,T1
LDD RA
ADD RT
SHN 6
ADN ALGL
CWD CM
RJM SRP SAVE RECOVERY POINTERS
LDD T1
ZJN CSS7 IF INDIRECTS
LMN 1
NJN CSS7 IF NOT LABEL
RJM RDM RESUME DISPLAY MODE
LDC CSSA *LABEL*
LJM ERR OUTPUT MESSAGE
CSS7 LJM CSSX EXIT
CSSA DATA Z*LABEL*
CSSB DATA Z*DATA*
CSSC DATA Z*PERMIT*
RDM SPACE 4,10
** RDM - RESUME DISPLAY.
*
* RESETS PARAMETERS AND REQUESTS DISPLAY.
*
* USES T3.
*
* CALLS CSB, RDC, MDC.
RDM SUBR ENTRY/EXIT
LDD MA SAVE DISK DATA
CWD T3
RJM RDC REQUEST DISPLAY CHANNEL
RJM CSB CLEAR SCREEN BUFFER
LDD MA RESTORE DISK DATA
CRD T3
UJN RDMX RETURN
RRP SPACE 4,10
** RRP - RESTORE RECOVERY POINTERS.
*
* ENTRY (TK) = CURRENT TRACK.
*
* EXIT (AB - AB+4) = TRACK RECOVERY WORD.
* (FN - FN+4) = RECOVERY POINTERS.
RRP SUBR ENTRY/EXIT
LDD RA
ADD RT
SHN 6
RRPA ADN RCPW
* ADN ICPW IF INDIRECT CHAIN RECOVERY
* ADN BSPW IF GENERATION OF TRT (BLDSTRT.)
CRD FN
RJM STA SET TABLE ADDRESS
CRD AB READ TRACK RECOVERY WORD
UJN RRPX RETURN
SRP SPACE 4,10
** SRP - SAVE RECOVERY POINTERS.
*
* ENTRY (TK) = CURRENT TRACK.
* (AB - AB+4) = TRACK RECOVERY WORD.
* (FN - FN+4) = RECOVERY POINTERS.
*
* EXIT WORDS STORED IN CM RECOVERY AREA.
SRP SUBR ENTRY/EXIT
RJM STA SET TABLE ADDRESS
CWD AB SAVE TRACK RECOVERY WORD
LDD RA SAVE RECOVERY PARAMETERS
ADD RT
SHN 6
SRPA ADN RCPW
* ADN ICPW IF INDIRECT CHAIN RECOVERY
* ADN BSPW IF GENERATION OF TRT (BLDSTRT.)
CWD FN
UJN SRPX RETURN
STA SPACE 4,10
** STA - SET TABLE ADDRESS.
*
* EXIT (A) = CM ADDRESS FOR CURRENT TRACK RECOVERY WORD.
STA SUBR ENTRY/EXIT
LDD RA
ADD RT
SHN 6
ADD TK
ADC TRCT-4000
UJN STAX RETURN
WSM SPACE 4,10
** WSM - WRITE STATUS MESSAGE.
*
* WRITES MESSAGE TO MS1W FOR RECOVERY STATUS.
WSM SUBR ENTRY/EXIT
LDD EQ SET EST IN MESSAGE
SHN -6
ADC 2RQ0
STM WSMA+5
LDD EQ
RJM C2D CONVERT TO DISPLAY
STM WSMA+6
LDD FN SET TRACK POINTER IN MESSAGE
SHN -6
RJM C2D CONVERT TO DISPLAY
STM WSMA+11
LDD FN
RJM C2D CONVERT TO DISPLAY
STM WSMA+12
LDD FN+1 SET CURRENT TRACK IN MESSAGE
SHN -6
RJM C2D CONVERT TO DISPLAY
STM WSMA+15
LDD FN+1
RJM C2D CONVERT TO DISPLAY
STM WSMA+16
LDN ZERL
CRD CM
LDD CP WRITE MESSAGE TO MS1W
ADN MS1W
CWM WSMA,TR
CWD CM SET EOL
LJM WSMX RETURN
WSMA DATA 30H READING EQXXX TP=XXXX CT=XXXX
SPACE 4,10
ACROVL END OF OVERLAY
ERRNG MACRL-/PRESET/LRRL *LRR* OVERFLOWS DISPLAY OVL AREA
SPACE 4,10
OVERFLOW /PRESET/OVL
QUAL *
SPACE 4,10
QUAL
.L EQU .N LAST OVERLAY LETTER
MCMDL EQU /PRESET/.MCMDL MAXIMUM COMMAND PROCESSOR LENGTH
TCMTL EQU /PRESET/.CMTL TOTAL CM REQUIRED FOR RESIDENT OVLS
SPACE 4,10
ERRNG EPFW-CPLA-MCMDL*5 COMMAND(S) OVERFLOW ERROR PROCESSOR
DDF TTL DDF - DISPLAY DISK FILE.
END