cdc:nos2.source:opl.opl871:deck:coding.001
Deck CODING Part 001
1 Modification
Listing Sections
- Deck CODING Start
- Deck CODING Part 1 (Line 1967)
Source
Seq # *Modification Id* Act ----------------------------+ 01967 M01S01964.coding +++| 01968 M01S01965.coding +++| USE BUFFERS 01969 M01S01966.coding +++| IBUF EQU * 01970 M01S01967.coding +++| OBUF EQU IBUF+IBUFL 01971 M01S01968.coding +++| RFL= EQU OBUF+OBUFL 01972 M01S01969.coding +++| 01973 M01S01970.coding +++| Small buffers and working storage areas may be allocated via BSSZ, 01974 M01S01971.coding +++| if the program requires that the area be zero on program initiation. 01975 M01S01972.coding +++| 01976 M01S01973.coding +++| The BSSN macro defined in COMCMAC and COMPMAC may also be used to 01977 M01S01974.coding +++| define buffers. 01978 M01S01975.coding +++| 01979 M01S01976.coding +++| 01980 M01S01977.coding +++| 3.5 DATA/CODE NAMING TERMINOLOGY 01981 M01S01978.coding +++| 01982 M01S01979.coding +++| 01983 M01S01980.coding +++|1 PAGE 40 01984 M01S01981.coding +++| 01985 M01S01982.coding +++| 01986 M01S01983.coding +++| 3.5.1 USE OF CONDITION TERMINOLOGY 01987 M01S01984.coding +++| 01988 M01S01985.coding +++| The following terms are used to describe the condition of bits used 01989 M01S01986.coding +++| as flags or switches. The selected terms should be used 01990 M01S01987.coding +++| consistently within a program. 01991 M01S01988.coding +++| 01992 M01S01989.coding +++| 1 0 01993 M01S01990.coding +++| on off 01994 M01S01991.coding +++| true false 01995 M01S01992.coding +++| set clear (reset) 01996 M01S01993.coding +++| nonzero zero 01997 M01S01994.coding +++| up down 01998 M01S01995.coding +++| 01999 M01S01996.coding +++| 02000 M01S01997.coding +++| 3.5.2 TAGS WITHIN SUBROUTINES 02001 M01S01998.coding +++| 02002 M01S01999.coding +++| Each subroutine (main loop, primary subroutine or secondary 02003 M01S02000.coding +++| subroutine) has a meaningful three character name which is derived 02004 M01S02001.coding +++| from the title of the subroutine (see section 2.4). 02005 M01S02002.coding +++| 02006 M01S02003.coding +++| Tags used for branch instructions are of the form: 02007 M01S02004.coding +++| 02008 M01S02005.coding +++| XXXn Example: GFN1 02009 M01S02006.coding +++| 02010 M01S02007.coding +++| Tags on code which is added later to the subroutine are of the 02011 M01S02008.coding +++| form: 02012 M01S02009.coding +++| 02013 M01S02010.coding +++| XXXN.n Example: GFN1.1 02014 M01S02011.coding +++| 02015 M01S02012.coding +++| Tags that are inserted between the SUBR and the tag XXX1 by 02016 M01S02013.coding +++| corrective code are of the form: 02017 M01S02014.coding +++| 02018 M01S02015.coding +++| XXX0.n Example: GFN0.1 02019 M01S02016.coding +++| 02020 M01S02017.coding +++| 02021 M01S02018.coding +++| Tags on storage locations (constants, temporary storage and 02022 M01S02019.coding +++| instruction modification) within a subroutine are of the form: 02023 M01S02020.coding +++| 02024 M01S02021.coding +++| XXXa 02025 M01S02022.coding +++| 02026 M01S02023.coding +++| Where: 02027 M01S02024.coding +++| 02028 M01S02025.coding +++| XXX = Subroutine name 02029 M01S02026.coding +++| XXXN = Tag preceding an added one 02030 M01S02027.coding +++| n = Number from 1 to 99 (in consecutive order beginning at 02031 M01S02028.coding +++| the entry point and ending at the exit point) 02032 M01S02029.coding +++| a = Letter from A to Z and AA to ZZ (in alphabetical order 02033 M01S02030.coding +++| and excluding X) 02034 M01S02031.coding +++| 02035 M01S02032.coding +++| Tags of the form XXXn, XXXn.n, and XXXa should not be referenced 02036 M01S02033.coding +++| outside of subroutine XXX. 02037 M01S02034.coding +++| 02038 M01S02035.coding +++|1 PAGE 41 02039 M01S02036.coding +++| 02040 M01S02037.coding +++| 02041 M01S02038.coding +++| If the above rules cannot be followed due to tag unavailability, 02042 M01S02039.coding +++| the entire subroutine will have its tags resequenced. 02043 M01S02040.coding +++| 02044 M01S02041.coding +++| Tags on storage locations within a subroutine which must be 02045 M01S02042.coding +++| referenced outside of the subroutine should be given appropriate 02046 M01S02043.coding +++| global tags. 02047 M01S02044.coding +++| 02048 M01S02045.coding +++| 02049 M01S02046.coding +++| 3.5.3 TAGS ON DATA 02050 M01S02047.coding +++| 02051 M01S02048.coding +++| 02052 M01S02049.coding +++| 3.5.3.1 DIRECT CELLS 02053 M01S02050.coding +++| 02054 M01S02051.coding +++| All PP direct cells have two-character names. 02055 M01S02052.coding +++| 02056 M01S02053.coding +++| The following table defines the preassigned direct cell usage: 02057 M01S02054.coding +++| 02058 M01S02055.coding +++| Contents Name Location 02059 M01S02056.coding +++| 02060 M01S02057.coding +++| Control Point RA/100 RA 55 02061 M01S02058.coding +++| Control Point FL/100 FL 56 02062 M01S02059.coding +++| 1 ON 70 02063 M01S02060.coding +++| 100 HN 71 02064 M01S02061.coding +++| 1000 TH 72 02065 M01S02062.coding +++| 3 TR 73 02066 M01S02063.coding +++| CPA address CP 74 02067 M01S02064.coding +++| PP input register address IA 75 02068 M01S02065.coding +++| PP output register address OA 76 02069 M01S02066.coding +++| PP message buffer address MA 77 02070 M01S02067.coding +++| 02071 M01S02068.coding +++| 02072 M01S02069.coding +++| 3.5.3.2 CODE CONTROL NAMES 02073 M01S02070.coding +++| 02074 M01S02071.coding +++| Names used for assembly options, micros and to control code 02075 M01S02072.coding +++| generation are five or more characters long. 02076 M01S02073.coding +++| 02077 M01S02074.coding +++| 02078 M01S02075.coding +++| 3.5.3.3 TABLE NAMES 02079 M01S02076.coding +++| 02080 M01S02077.coding +++| Tags used on tables have the form: 02081 M01S02078.coding +++| 02082 M01S02079.coding +++| Txxx 02083 M01S02080.coding +++| 02084 M01S02081.coding +++| Tags used for table lengths have the form: 02085 M01S02082.coding +++| 02086 M01S02083.coding +++| TxxxL 02087 M01S02084.coding +++| 02088 M01S02085.coding +++| Tags used for table entry lengths have the form: 02089 M01S02086.coding +++| 02090 M01S02087.coding +++| TxxxE 02091 M01S02088.coding +++| 02092 M01S02089.coding +++|1 PAGE 42 02093 M01S02090.coding +++| 02094 M01S02091.coding +++| 02095 M01S02092.coding +++| Where: 02096 M01S02093.coding +++| 02097 M01S02094.coding +++| xxx = 3 character table name 02098 M01S02095.coding +++| 02099 M01S02096.coding +++| 02100 M01S02097.coding +++| 3.5.3.4 GLOBAL MEMORY LOCATIONS 02101 M01S02098.coding +++| 02102 M01S02099.coding +++| Names used for global memory locations (locations referenced by more 02103 M01S02100.coding +++| than one subroutine) are four characters long. Multiple definitions 02104 M01S02101.coding +++| for global memory locations should be avoided. 02105 M01S02102.coding +++| 02106 M01S02103.coding +++| 02107 M01S02104.coding +++| 3.5.4 CONSTANTS USED AS INSTRUCTIONS 02108 M01S02105.coding +++| 02109 M01S02106.coding +++| Four letter tag names should end in "I" if the tag name is defining 02110 M01S02107.coding +++| an instruction. 02111 M01S02108.coding +++| 02112 M01S02109.coding +++| For example: 02113 M01S02110.coding +++| 02114 M01S02111.coding +++| LJMI EQU 0100B *LJM* INSTRUCTION 02115 M01S02112.coding +++| SHNI EQU 1000B *SHN* INSTRUCTION 02116 M01S02113.coding +++| 02117 M01S02114.coding +++| PP instructions are defined as constants in common deck COMSPIM. 02118 M01S02115.coding +++| 02119 M01S02116.coding +++| 02120 M01S02117.coding +++| 3.5.5 IF/ELSE/ENDIF SYMBOLS 02121 M01S02118.coding +++| 02122 M01S02119.coding +++| Symbols used on IF, ELSE, ENDIF and SKIP psuedo instructions may be 02123 M01S02120.coding +++| system symbols or local symbols of the form: 02124 M01S02121.coding +++| 02125 M01S02122.coding +++| .a 02126 M01S02123.coding +++| 02127 M01S02124.coding +++| where: 02128 M01S02125.coding +++| a = letter from A to Z 02129 M01S02126.coding +++| 02130 M01S02127.coding +++| Unlabeled, unnumbered IF/ELSE/SKIP/ENDIF sequences should not be 02131 M01S02128.coding +++| used as they may unexpectedly affect other sequences. For very 02132 M01S02129.coding +++| short sequences a line count may be used, for longer sequences 02133 M01S02130.coding +++| labels are preferred. 02134 M01S02131.coding +++| 02135 M01S02132.coding +++| 3.5.6 NON-LOCAL MACRO SYMBOLS 02136 M01S02133.coding +++| 02137 M01S02134.coding +++| To avoid conflicts with user code, non-local symbols defined within 02138 M01S02135.coding +++| macros are of the form: 02139 M01S02136.coding +++| 02140 M01S02137.coding +++| .n 02141 M01S02138.coding +++| 02142 M01S02139.coding +++| where: 02143 M01S02140.coding +++| n = number from 1 to 99 02144 M01S02141.coding +++| 02145 M01S02142.coding +++| 02146 M01S02143.coding +++|1 PAGE 43 02147 M01S02144.coding +++| 02148 M01S02145.coding +++| 02149 M01S02146.coding +++| 3.5.7 LOW CORE LOCATION SYMBOLS 02150 M01S02147.coding +++| 02151 M01S02148.coding +++| Symbols that are used to define locations in low core (CMR) are of 02152 M01S02149.coding +++| the form: 02153 M01S02150.coding +++| 02154 M01S02151.coding +++| xxxL 02155 M01S02152.coding +++| 02156 M01S02153.coding +++| 02157 M01S02154.coding +++| 3.5.8 CONTROL POINT AREA LOCATION SYMBOLS 02158 M01S02155.coding +++| 02159 M01S02156.coding +++| Symbols that are used for defining locations in the control point 02160 M01S02157.coding +++| area are of the form: 02161 M01S02158.coding +++| 02162 M01S02159.coding +++| xxxW 02163 M01S02160.coding +++| 02164 M01S02161.coding +++| 02165 M01S02162.coding +++| 3.5.9 MONITOR FUNCTION SYMBOLS 02166 M01S02163.coding +++| 02167 M01S02164.coding +++| Symbols used for monitor function requests are of the form: 02168 M01S02165.coding +++| 02169 M01S02166.coding +++| xxxM 02170 M01S02167.coding +++| 02171 M01S02168.coding +++| 02172 M01S02169.coding +++| 3.5.10 NEGATIVE FIELD LENGTH SYMBOLS 02173 M01S02170.coding +++| 02174 M01S02171.coding +++| Symbols used to reference data in negative field length are of the 02175 M01S02172.coding +++| form: 02176 M01S02173.coding +++| 02177 M01S02174.coding +++| xxxN 02178 M01S02175.coding +++| 02179 M01S02176.coding +++| 02180 M01S02177.coding +++| 3.6 PSEUDO INSTRUCTION USE, FORMAT, AND PARAMETERS 02181 M01S02178.coding +++| 02182 M01S02179.coding +++| 02183 M01S02180.coding +++| 3.6.1 BASE AND POST RADIX USE 02184 M01S02181.coding +++| 02185 M01S02182.coding +++| The BASE DECIMAL pseudo-op is used in all CPU code. The BASE MIXED 02186 M01S02183.coding +++| pseudo-op is used in all PP code. Post Radix is allowed for data 02187 M01S02184.coding +++| formats other than octal and decimal; in specifying timing loops 02188 M01S02185.coding +++| where decimal values are more meaningful to humans; and where 02189 M01S02186.coding +++| external specifications such as ANSI or corporate standards dictate 02190 M01S02187.coding +++| the use of a particular format. 02191 M01S02188.coding +++| 02192 M01S02189.coding +++| 02193 M01S02190.coding +++| 3.6.2 EXTERNAL REFERENCES 02194 M01S02191.coding +++| 02195 M01S02192.coding +++| The EXT pseudo-op is not used. All references to external names use 02196 M01S02193.coding +++| the form =Xname. In an absolute assembly, references to locations 02197 M01S02194.coding +++| in other overlays use the form =Xname. 02198 M01S02195.coding +++| 02199 M01S02196.coding +++| 02200 M01S02197.coding +++|1 PAGE 44 02201 M01S02198.coding +++| 02202 M01S02199.coding +++| 02203 M01S02200.coding +++| 3.6.3 SPACE CARD FORMAT 02204 M01S02201.coding +++| 02205 M01S02202.coding +++| The format of the SPACE pseudo instruction is: 02206 M01S02203.coding +++| 02207 M01S02204.coding +++| tag SPACE 4,n 02208 M01S02205.coding +++| 02209 M01S02206.coding +++| where: 02210 M01S02207.coding +++| 02211 M01S02208.coding +++| tag =table, macro or subroutine name 02212 M01S02209.coding +++| n =statement count 02213 M01S02210.coding +++| 02214 M01S02211.coding +++| The statement count is a multiple of 5 that is greater or equal to 02215 M01S02212.coding +++| 10. It should be large enough to avoid breaking documentation 02216 M01S02213.coding +++| across page boundaries. 02217 M01S02214.coding +++| 02218 M01S02215.coding +++| 02219 M01S02216.coding +++| 3.6.4 CONDITIONAL CODE 02220 M01S02217.coding +++| 02221 M01S02218.coding +++| Numeric skip counts are discouraged with IF, IFC, ELSE, etc., 02222 M01S02219.coding +++| because this makes code difficult to read (especially when the 02223 M01S02220.coding +++| skipped lines are not listed). ENDIF should be used instead. An 02224 M01S02221.coding +++| exception is allowed for very short sequences and for systems texts 02225 M01S02222.coding +++| where space is critical. 02226 M01S02223.coding +++| 02227 M01S02224.coding +++| Conditional sequences should be bracketed with labels (refer to 02228 M01S02225.coding +++| section 3.5.5) which allows them to be easily spotted and matched in 02229 M01S02226.coding +++| listings. 02230 M01S02227.coding +++| 02231 M01S02228.coding +++| When either end of a sequence of conditional code occurs at a break 02232 M01S02229.coding +++| in the listing (SPACE, TITLE, or blank lines), the spacing lines 02233 M01S02230.coding +++| should be placed so that spacing will be correct whether the test is 02234 M01S02231.coding +++| true or false. Usually this means moving the spacing outside the 02235 M01S02232.coding +++| conditional code. 02236 M01S02233.coding +++| 02237 M01S02234.coding +++| Example: 02238 M01S02235.coding +++| . 02239 M01S02236.coding +++| . 02240 M01S02237.coding +++| . 02241 M01S02238.coding +++| EQ TAG1 CONTINUE 02242 M01S02239.coding +++| (blank line) (outside conditional code) 02243 M01S02240.coding +++| .A IFC EQ,*"SYSTEM"*SCOPE* 02244 M01S02241.coding +++| TAG3 CONTROL TAGA,R READ COMMAND 02245 M01S02242.coding +++| EQ TAGX RETURN 02246 M01S02243.coding +++| (blank line) 02247 M01S02244.coding +++| TAGA BSS 8 COMMAND BUFFER 02248 M01S02245.coding +++| .A ELSE 02249 M01S02246.coding +++| TAG3 CONTROL CCDR READ COMMAND 02250 M01S02247.coding +++| EQ TAGX RETURN 02251 M01S02248.coding +++| .A ENDIF 02252 M01S02249.coding +++| ABC SPACE 4,10 (outside conditional code) 02253 M01S02250.coding +++| 02254 M01S02251.coding +++|1 PAGE 45 02255 M01S02252.coding +++| 02256 M01S02253.coding +++| 02257 M01S02254.coding +++| 3.6.5 MACROS 02258 M01S02255.coding +++| 02259 M01S02256.coding +++| Macro definitions should include a description of how the macro is 02260 M01S02257.coding +++| called and a description of all formal parameters. (Refer to 02261 M01S02258.coding +++| section 2.5.) 02262 M01S02259.coding +++| 02263 M01S02260.coding +++| The PURGMAC psuedo instruction should be used to disable any 02264 M01S02261.coding +++| previous macro definitions of the same name. 02265 M01S02262.coding +++| 02266 M01S02263.coding +++| Non-local symbol definitions should be of the form .n (see section 02267 M01S02264.coding +++| 3.5.6). 02268 M01S02265.coding +++| 02269 M01S02266.coding +++| To avoid terminating multiple macro definitions, the ENDM 02270 M01S02267.coding +++| instruction should be labeled with the macro name. 02271 M01S02268.coding +++| 02272 M01S02269.coding +++| The MACREF macro (defined in SYSTEXT) may be included within the 02273 M01S02270.coding +++| macro definition body to provide symbolic reference table listing of 02274 M01S02271.coding +++| the calls of the macro. 02275 M01S02272.coding +++| 02276 M01S02273.coding +++| The SYSTEM XXX,= macro (defined in CPCOM) should be used for cross 02277 M01S02274.coding +++| referencing of CP programs calling PP programs without a standard 02278 M01S02275.coding +++| interface (Examples: CPUMTR calling 1MA, MAGNET calling 1MT via SPC 02279 M01S02276.coding +++| call). 02280 M01S02277.coding +++| 02281 M01S02278.coding +++| The EXECUTE XXX,= macro (defined in COMPMAC) should be used for 02282 M01S02279.coding +++| cross referencing of PP programs calling PP programs or overlays 02283 M01S02280.coding +++| without a standard interface. 02284 M01S02281.coding +++| 02285 M01S02282.coding +++| When space is critical, as in systems texts, the following list of 02286 M01S02283.coding +++| column numbers represent the beginning of each field in a COMPASS 02287 M01S02284.coding +++| coding line to be used in a macro definition. 02288 M01S02285.coding +++| 02289 M01S02286.coding +++| Column 2 = location field 02290 M01S02287.coding +++| column 3 = operation field 02291 M01S02288.coding +++| column 6 = address field 02292 M01S02289.coding +++| column 73 = reserved 02293 M01S02290.coding +++| 02294 M01S02291.coding +++| If a field is full or overflows into an adjacent field, then one 02295 M01S02292.coding +++| space should separate the fields. If comments are required, they 02296 M01S02293.coding +++| should appear as stand-alone comments rather than embedded comments. 02297 M01S02294.coding +++| 02298 M01S02295.coding +++| 02299 M01S02296.coding +++| 3.6.6 DIS PSEUDO INSTRUCTION 02300 M01S02297.coding +++| 02301 M01S02298.coding +++| The DIS pseudo instruction should not be used to generate data since 02302 M01S02299.coding +++| the syntax of the instruction determines the format of the data. 02303 M01S02300.coding +++| The DATA psuedo instruction should be used instead. 02304 M01S02301.coding +++| 02305 M01S02302.coding +++| 02306 M01S02303.coding +++|1 PAGE 46 02307 M01S02304.coding +++| 02308 M01S02305.coding +++| 02309 M01S02306.coding +++| 3.7 TESTS FOR OVERFLOW 02310 M01S02307.coding +++| 02311 M01S02308.coding +++| CPU and PP programs should contain assembly checks for certain types 02312 M01S02309.coding +++| of overflow conditions. The following points should be considered 02313 M01S02310.coding +++| when making the checks. 02314 M01S02311.coding +++| 02315 M01S02312.coding +++| PP programs and overlays are generated by COMPASS in multiples 02316 M01S02313.coding +++| of 5 PP bytes (1 CM word). Therefore, when reading an overlay 02317 M01S02314.coding +++| from central memory to PP memory, more PP bytes may be 02318 M01S02315.coding +++| destroyed than the actual number of bytes of PP code. 02319 M01S02316.coding +++| 02320 M01S02317.coding +++| Overlays loaded from mass storage to PP memory come in 02321 M01S02318.coding +++| multiplies of 500 PP bytes. At least 5 bytes of the last PRU 02322 M01S02319.coding +++| are required to represent end of record which can increase the 02323 M01S02320.coding +++| size of the overlay by one PRU (500 bytes). 02324 M01S02321.coding +++| 02325 M01S02322.coding +++| Care should be taken to insure that the literals block has been 02326 M01S02323.coding +++| defined before checking for the overflow conditions. Literals 02327 M01S02324.coding +++| can be flushed by specifying: 02328 M01S02325.coding +++| 02329 M01S02326.coding +++| USE (name) 02330 M01S02327.coding +++| USE * 02331 M01S02328.coding +++| 02332 M01S02329.coding +++| 02333 M01S02330.coding +++| The OVERFLOW macro (defined in COMPMAC) may be used to perform these 02334 M01S02331.coding +++| checks. 02335 M01S02332.coding +++| 02336 M01S02333.coding +++| 02337 M01S02334.coding +++| 3.7.1 CM LOADS 02338 M01S02335.coding +++| 02339 M01S02336.coding +++| All PP programs include a test for the amount of core remaining 02340 M01S02337.coding +++| after a CM load as shown in the following example: 02341 M01S02338.coding +++| 02342 M01S02339.coding +++| USE OVERFLOW 02343 M01S02340.coding +++| xxx BSS 0 02344 M01S02341.coding +++| ERRNG 7772-xxx PP MEMORY OVERFLOW 02345 M01S02342.coding +++| 02346 M01S02343.coding +++| Where: 02347 M01S02344.coding +++| 02348 M01S02345.coding +++| xxx =tag for the last location defined 02349 M01S02346.coding +++| 02350 M01S02347.coding +++| 02351 M01S02348.coding +++| 3.7.2 TABLE OVERFLOW 02352 M01S02349.coding +++| 02353 M01S02350.coding +++| If a PP program uses more storage than it declares, its length is 02354 M01S02351.coding +++| checked as shown in the following example: 02355 M01S02352.coding +++| 02356 M01S02353.coding +++| USE OVERFLOW 02357 M01S02354.coding +++| xxx BSS 0 02358 M01S02355.coding +++| xxxE EQU xxx+xxxL 02359 M01S02356.coding +++| ERRNG 7777-xxxE PROGRAM OVERFLOW 02360 M01S02357.coding +++| 02361 M01S02358.coding +++|1 PAGE 47 02362 M01S02359.coding +++| 02363 M01S02360.coding +++| 02364 M01S02361.coding +++| Where: 02365 M01S02362.coding +++| 02366 M01S02363.coding +++| xxx = tag for the last location defined 02367 M01S02364.coding +++| xxxL = length of undeclared space 02368 M01S02365.coding +++| xxxE = end of space used 02369 M01S02366.coding +++| 02370 M01S02367.coding +++| 02371 M01S02368.coding +++| 3.7.3 MASS STORAGE LOADS 02372 M01S02369.coding +++| 02373 M01S02370.coding +++| A test will be included in each PP program which may reside on mass 02374 M01S02371.coding +++| storage. This test will protect against a load which exceeds the 02375 M01S02372.coding +++| end of memory in the PP causing wrap around. The "OVERFLOW" macro 02376 M01S02373.coding +++| is available in COMPMAC for this operation. 02377 M01S02374.coding +++| 02378 M01S02375.coding +++| 02379 M01S02376.coding +++| 3.7.4 OVERLAY LOADS 02380 M01S02377.coding +++| 02381 M01S02378.coding +++| Programs calling overlays should test for memory overflow with the 02382 M01S02379.coding +++| following test: 02383 M01S02380.coding +++| ERRNG (lwa+1)-(load addr)-len comment 02384 M01S02381.coding +++| where: 02385 M01S02382.coding +++| 02386 M01S02383.coding +++| 1wa+1 = first byte not to be destroyed by the zero level 02387 M01S02384.coding +++| overlay 02388 M01S02385.coding +++| load addr = address where the overlay is loaded 02389 M01S02386.coding +++| len = length of overlay 02390 M01S02387.coding +++| 02391 M01S02388.coding +++| The length of an overlay is defined to be the number of bytes 02392 M01S02389.coding +++| destroyed by the overlay during loading and execution. The overlay 02393 M01S02390.coding +++| should also contain a test to insure that it does not exceed its 02394 M01S02391.coding +++| defined length. The overlay length can be adjusted to a higher or 02395 M01S02392.coding +++| smaller value as long as none of the tests fail. The "OVERFLOW" 02396 M01S02393.coding +++| macro is available in COMPMAC for this operation. 02397 M01S02394.coding +++| 02398 M01S02395.coding +++| 02399 M01S02396.coding +++| 3.8 RELOCATABLE CPU CODE 02400 M01S02397.coding +++| 02401 M01S02398.coding +++| The first word of a relocatable CPU program should be of the format: 02402 M01S02399.coding +++| 02403 M01S02400.coding +++| 42/0LDECK, 18/ADDR 02404 M01S02401.coding +++| 02405 M01S02402.coding +++| where: 02406 M01S02403.coding +++| 02407 M01S02404.coding +++| DECK = deck name 02408 M01S02405.coding +++| ADDR = entry address of program 02409 M01S02406.coding +++| 02410 M01S02407.coding +++| This word is used to locate the first word address and entry point 02411 M01S02408.coding +++| of a routine in a CM dump. 02412 M01S02409.coding +++| 02413 M01S02410.coding +++| The contents of A0 must never be used in a library level routine 02414 M01S02411.coding +++| unless it is saved and restored. A0 is used by FTN as a base 02415 M01S02412.coding +++| register for formal parameters in subroutine linkages. 02416 M01S02413.coding +++| 02417 M01S02414.coding +++|1 PAGE 48 02418 M01S02415.coding +++| 02419 M01S02416.coding +++| 02420 M01S02417.coding +++| 3.9 ROUTINE/SUBROUTINE COMPLEXITY 02421 M01S02418.coding +++| 02422 M01S02419.coding +++| In this context, the term "complexity" is used in its formal sense; 02423 M01S02420.coding +++| that is, a sense of the structural incoherence (entropy) of a 02424 M01S02421.coding +++| routine. The more complex a routine is, the more liable it is to be 02425 M01S02422.coding +++| a source of errors, difficult to implement, and worse to modify or 02426 M01S02423.coding +++| correct. There are no hard and fast rules for gauging the 02427 M01S02424.coding +++| complexity of a routine, but it can be said in general that the 02428 M01S02425.coding +++| longer it is, the more decisions it makes (branches), and the more 02429 M01S02426.coding +++| functions it performs, the more complex and unreliable it tends to 02430 M01S02427.coding +++| be. 02431 M01S02428.coding +++| 02432 M01S02429.coding +++| In order to reduce complexity, the following guidelines are to be 02433 M01S02430.coding +++| followed whenever possible (i.e., not impossible). 02434 M01S02431.coding +++| 02435 M01S02432.coding +++| 1. One routine - one function. Each routine should have one 02436 M01S02433.coding +++| clearly defined function. 02437 M01S02434.coding +++| 02438 M01S02435.coding +++| 2. 10-Tag rule. If there are more than 10 branching locations 02439 M01S02436.coding +++| within a routine, it is most likely attempting to perform 02440 M01S02437.coding +++| too many functions (see 1 above). It should be considered a 02441 M01S02438.coding +++| candidate to be broken up into functional units. 02442 M01S02439.coding +++| 02443 M01S02440.coding +++| 3. Code Modification. Minimize within routines, avoid between 02444 M01S02441.coding +++| routines. If used between routines, document thoroughly. 02445 M01S02442.coding +++| 02446 M01S02443.coding +++| 4. Hidden Variables. Data placed in a register with the hope 02447 M01S02444.coding +++| of being used at some later time often may not survive to 02448 M01S02445.coding +++| its destination. Consider global variables for 02449 M01S02446.coding +++| inter-routine communication, especially when there are one 02450 M01S02447.coding +++| or more routines intervening. In any case, all exit 02451 M01S02448.coding +++| conditions from a routine must be documented. 02452 M01S02449.coding +++| 02453 M01S02450.coding +++| 5. Code for the Future. Always consider the implications of 02454 M01S02451.coding +++| debugging, modification, and maintenance; structure code to 02455 M01S02452.coding +++| make these tasks easier. 02456 M01S02453.coding +++| 02457 M01S02454.coding +++| 02458 M01S02455.coding +++| 4.0 MISCELLANEOUS 02459 M01S02456.coding +++| 02460 M01S02457.coding +++| 02461 M01S02458.coding +++| 4.1 PROGRAM NAMING 02462 M01S02459.coding +++| 02463 M01S02460.coding +++| 02464 M01S02461.coding +++| 4.1.1 LENGTH OF PROGRAM NAME 02465 M01S02462.coding +++| 02466 M01S02463.coding +++| Peripheral processor program names are 3 characters long. 02467 M01S02464.coding +++| 02468 M01S02465.coding +++| Central Processor program names are 4 to 7 characters long. 02469 M01S02466.coding +++| 02470 M01S02467.coding +++| 02471 M01S02468.coding +++|1 PAGE 49 02472 M01S02469.coding +++| 02473 M01S02470.coding +++| 02474 M01S02471.coding +++| 4.1.2 RESERVED NAMES 02475 M01S02472.coding +++| 02476 M01S02473.coding +++| The following PP program names are reserved or presently defined for 02477 M01S02474.coding +++| use (x means any character legal in a PP program name and n means 02478 M01S02475.coding +++| any number between 0 - 9): 02479 M01S02476.coding +++| 02480 M01S02477.coding +++| Uxx Reserved for installations 02481 M01S02478.coding +++| nUx Reserved for installations 02482 M01S02479.coding +++| 9AA-9T9 Reserved for system use 02483 M01S02480.coding +++| 9VA-9Z9 Reserved for system use 02484 M01S02481.coding +++| 90A-929 Reserved for diagnostics 02485 M01S02482.coding +++| 93A-939 Reserved for system use 02486 M01S02483.coding +++| 02487 M01S02484.coding +++| The following names are currently used by NOS: 02488 M01S02485.coding +++| 02489 M01S02486.coding +++| 6xx Callable mass storage drivers 02490 M01S02487.coding +++| 7xx Mass storage error processing overlays 02491 M01S02488.coding +++| 9AA-9D9 DSD overlays 02492 M01S02489.coding +++| 9EA-9F9 DIS overlays 02493 M01S02490.coding +++| 9GA-9G9 O26 overlays 02494 M01S02491.coding +++| 0xx Location free overlays 02495 M01S02492.coding +++| 0Cx Controlware identification processors 02496 M01S02493.coding +++| 0Px Pack number identification processors 02497 M01S02494.coding +++| 0Tx Automatic track flaw processors 02498 M01S02495.coding +++| UxxL PPCOM symbol - reserved for installations 02499 M01S02496.coding +++| UxxM PPCOM symbol - reserved for installations 02500 M01S02497.coding +++| UxxN PPCOM symbol - reserved for installations 02501 M01S02498.coding +++| UxxP PPCOM symbol - reserved for installations 02502 M01S02499.coding +++| UxxW PPCOM symbol - reserved for installations 02503 M01S02500.coding +++| 02504 M01S02501.coding +++| In general, tags beginning with U should not be used as tags in 02505 M01S02502.coding +++| NOSTEXT, COMSXXX decks, etc. or as macro names in COMCMAC, COMPMAC, 02506 M01S02503.coding +++| etc. These tags should be reserved for installation use. 02507 M01S02504.coding +++| 02508 M01S02505.coding +++| 02509 M01S02506.coding +++| 4.1.3 COMMON DECK NAMES 02510 M01S02507.coding +++| 02511 M01S02508.coding +++| Common deck names are seven characters in length and in the 02512 M01S02509.coding +++| following form: 02513 M01S02510.coding +++| 02514 M01S02511.coding +++| COMxaaa 02515 M01S02512.coding +++| 02516 M01S02513.coding +++|1 PAGE 50 02517 M01S02514.coding +++| 02518 M01S02515.coding +++| 02519 M01S02516.coding +++| where: 02520 M01S02517.coding +++| 02521 M01S02518.coding +++| aaa = The name of the routine or a symbolic name if no 02522 M01S02519.coding +++| routine name. 02523 M01S02520.coding +++| X = One of the following common deck indicators: 02524 M01S02521.coding +++| C = CPU code 02525 M01S02522.coding +++| P = PP code 02526 M01S02523.coding +++| S = Subsystem text symbols, constants etc. 02527 M01S02524.coding +++| D = Display driver code 02528 M01S02525.coding +++| T = Tables 02529 M01S02526.coding +++| M = Mass storage error equivalents 02530 M01S02527.coding +++| B = Data manager 02531 M01S02528.coding +++| K = Transaction subsystem 02532 M01S02529.coding +++| I = Initialization 02533 M01S02530.coding +++| 02534 M01S02531.coding +++| The following indicators are reserved for SYMPL common decks: A, E, 02535 M01S02532.coding +++| U, Z. 02536 M01S02533.coding +++| 02537 M01S02534.coding +++| 02538 M01S02535.coding +++| 4.2 CODE TRANSMITTAL RULES 02539 M01S02536.coding +++| 02540 M01S02537.coding +++| Code which is to be integrated into a system build for eventual 02541 M01S02538.coding +++| release to the field is identified and formatted as described in 02542 M01S02539.coding +++| this section. 02543 M01S02540.coding +++| 02544 M01S02541.coding +++| 02545 M01S02542.coding +++| 4.2.1 GENERAL RULES 02546 M01S02543.coding +++| 02547 M01S02544.coding +++| Each external PSR being answered has a corresponding corrective code 02548 M01S02545.coding +++| identifier (to be described later). Corrective code answering other 02549 M01S02546.coding +++| PSRs is not included in the modification under this identifier. 02550 M01S02547.coding +++| Exceptions are allowed where required by interrelated modifications 02551 M01S02548.coding +++| for several PSRs. 02552 M01S02549.coding +++| 02553 M01S02550.coding +++| Corrections are placed in ascending numerical order; i. e., the 02554 M01S02551.coding +++| corrections are sorted in the same order that the lines being 02555 M01S02552.coding +++| corrected appear on the program library. If a single modification 02556 M01S02553.coding +++| changes several decks, then the corrections are also sorted in the 02557 M01S02554.coding +++| order that the decks appear on the program library. 02558 M01S02555.coding +++| 02559 M01S02556.coding +++| Corrections modifying lines with previously modified sequence 02560 M01S02557.coding +++| numbers include the line number of the nearest preceding original 02561 M01S02558.coding +++| line in parenthesis in the comments field of the modify directive. 02562 M01S02559.coding +++| 02563 M01S02560.coding +++| 02564 M01S02561.coding +++| 4.2.2 MODSET FORMAT 02565 M01S02562.coding +++| 02566 M01S02563.coding +++|1 PAGE 51 02567 M01S02564.coding +++| 02568 M01S02565.coding +++| 02569 M01S02566.coding +++| 4.2.2.1 MODSET IDENTIFIER 02570 M01S02567.coding +++| 02571 M01S02568.coding +++| Separate modset name lists are maintained for NOS 1 (R5.5) and NOS 2 02572 M01S02569.coding +++| (R6.0). Processes for naming modsets are identical, except for 02573 M01S02570.coding +++| multiple deck modsets (NS1xxx and NS2xxx), documentation modsets 02574 M01S02571.coding +++| (DOK1xxx and DOK2xxx), and release feature modsets (FN1xxx and 02575 M01S02572.coding +++| FN2xxx). A modset named 1CD4 in NOS 1, for example, has no 02576 M01S02573.coding +++| relationship to modset 1CD4 in NOS2. 02577 M01S02574.coding +++| 02578 M01S02575.coding +++| You should not sign up for a modset name until after code has been 02579 M01S02576.coding +++| generated and tested, and depending on the size of the modset, even 02580 M01S02577.coding +++| after code review has taken place. This allows other analysts 02581 M01S02578.coding +++| submitting code to get the next available modset name. You should 02582 M01S02579.coding +++| not request modset names for modsets not to be included in the 02583 M01S02580.coding +++| current series of builds; you should not request feature modset 02584 M01S02581.coding +++| names for a future release until feature code for the current 02585 M01S02582.coding +++| release is complete. If you sign up for a modset name and don't use 02586 M01S02583.coding +++| it, notify Code Control so that the modset name can be used by 02587 M01S02584.coding +++| someone else. 02588 M01S02585.coding +++| 02589 M01S02586.coding +++| The modset name consists of three to five alphanumeric characters 02590 M01S02587.coding +++| which are extracted from the deck name followed by a 1 to 3 digit 02591 M01S02588.coding +++| sequence number. The modset name cannot exceed 7 characters. 02592 M01S02589.coding +++| 02593 M01S02590.coding +++| 1. For common decks that begin with "COM" use the last four 02594 M01S02591.coding +++| characters of the name (example - CMAC4 is a modset in deck 02595 M01S02592.coding +++| COMCMAC). 02596 M01S02593.coding +++| 02597 M01S02594.coding +++| 2. For PP programs use the three character program name (example - 02598 M01S02595.coding +++| CPM2 is a modset in deck CPM). 02599 M01S02596.coding +++| 02600 M01S02597.coding +++| 3. All other decks use the first five characters of the deck name; 02601 M01S02598.coding +++| if the deck name is less than six characters use the entire deck 02602 M01S02599.coding +++| name (example - LIBED2 is a modset in deck LIBEDIT). 02603 M01S02600.coding +++| 02604 M01S02601.coding +++| 4. Modifications which involve multiple decks are given the modset 02605 M01S02602.coding +++| name: 02606 M01S02603.coding +++| NS1xxx if NOS 1, 02607 M01S02604.coding +++| NS2xxx if NOS 2. 02608 M01S02605.coding +++| 02609 M01S02606.coding +++| Example - NS1001 is a multiple deck modset in NOS 1. 02610 M01S02607.coding +++| NS2001 is a multiple deck modset in NOS 2. 02611 M01S02608.coding +++| 02612 M01S02609.coding +++| 5. Modifications which only correct documentation within a deck are 02613 M01S02610.coding +++| gathered together for each corrective code release and given the 02614 M01S02611.coding +++| modset name: 02615 M01S02612.coding +++| DOK1xxx if NOS 1, 02616 M01S02613.coding +++| DOK2xxx if NOS 2. 02617 M01S02614.coding +++| 02618 M01S02615.coding +++| Example - DOK1006 is a NOS 1 modset. 02619 M01S02616.coding +++| DOK2006 is a NOS 2 modset. 02620 M01S02617.coding +++| 02621 M01S02618.coding +++|1 PAGE 52 02622 M01S02619.coding +++| 02623 M01S02620.coding +++| 02624 M01S02621.coding +++| This does not include lines of code which have documentation 02625 M01S02622.coding +++| changes in them. 02626 M01S02623.coding +++| 02627 M01S02624.coding +++| 6. If a modset is adding a new feature, the feature modset name for 02628 M01S02625.coding +++| each deck modified is obtained from NOS Code Control. 02629 M01S02626.coding +++| 02630 M01S02627.coding +++| 7. Upon release of the system, a "composite" modset is generated 02631 M01S02628.coding +++| from all feature code which is to be released. 02632 M01S02629.coding +++| 02633 M01S02630.coding +++| 02634 M01S02631.coding +++| 4.2.2.2 MODSET CORRECTION LETTER 02635 M01S02632.coding +++| 02636 M01S02633.coding +++| When a modset is correcting a previous modset, one alphabetic 02637 M01S02634.coding +++| character (starting with A) will be appended to the sequence 02638 M01S02635.coding +++| number. Whenever a modset correction letter of "B" or above is 02639 M01S02636.coding +++| required, the comments header of the modset must indicate which 02640 M01S02637.coding +++| previous modset is being corrected. 02641 M01S02638.coding +++| 02642 M01S02639.coding +++| 02643 M01S02640.coding +++| 4.2.2.3 OVERFLOW 02644 M01S02641.coding +++| 02645 M01S02642.coding +++| Whenever a modset identifier using the above conventions exceeds 02646 M01S02643.coding +++| seven characters, truncate the last character(s) of the deck name to 02647 M01S02644.coding +++| reduce the identifier to seven characters. 02648 M01S02645.coding +++| 02649 M01S02646.coding +++| 02650 M01S02647.coding +++| 4.2.2.4 MODSET EXAMPLE 02651 M01S02648.coding +++| 02652 M01S02649.coding +++| The following format is used for corrective code modsets: 02653 M01S02650.coding +++| 02654 M01S02651.coding +++| 1 11 18 30 (column numbers) 02655 M01S02652.coding +++| +-------+---------+--------------+ 02656 M01S02653.coding +++| 02657 M01S02654.coding +++| ident 02658 M01S02655.coding +++| *IDENT ident initials. yy/mm/dd. 02659 M01S02656.coding +++| */ **** system. 02660 M01S02657.coding +++| */ **** PSR number. 02661 M01S02658.coding +++| */ **** REQUIRES - modset. 02662 M01S02659.coding +++| */ ***** PROBLEM - problem description. 02663 M01S02660.coding +++| */ (continuation of problem description). 02664 M01S02661.coding +++| */ 02665 M01S02662.coding +++| */ SOLUTION - solution description. 02666 M01S02663.coding +++| */ (continuation of solution description). 02667 M01S02664.coding +++| */ 02668 M01S02665.coding +++| */ ***** RESUBMITTAL - yy/mm/dd. 02669 M01S02666.coding +++| */ Reason for resubmittal. 02670 M01S02667.coding +++| *DECK deckname 02671 M01S02668.coding +++| *I,sequence number 02672 M01S02669.coding +++| *D,sequence number 02673 M01S02670.coding +++| *D,modname.sequence number (nearest original seq. no.) 02674 M01S02671.coding +++| *EDIT deckname (if common deck) 02675 M01S02672.coding +++| */ END OF MODSET. 02676 M01S02673.coding +++| 02677 M01S02674.coding +++|1 PAGE 53 02678 M01S02675.coding +++| 02679 M01S02676.coding +++| 02680 M01S02677.coding +++| Where: 02681 M01S02678.coding +++| 02682 M01S02679.coding +++| ident = Modset name. 02683 M01S02680.coding +++| 02684 M01S02681.coding +++| initials = Initials of the analyst(s) who wrote and/or 02685 M01S02682.coding +++| tested the code. Example - ABC. (one 02686 M01S02683.coding +++| analyst) ABC/ADD. (two analysts) 02687 M01S02684.coding +++| 02688 M01S02685.coding +++| yy/mm/dd = Date of last modset change. 02689 M01S02686.coding +++| 02690 M01S02687.coding +++| system = Name of system in which the modset will be 02691 M01S02688.coding +++| released. (ie - NOS 1 OS. Or NOS 2 OS.) 02692 M01S02689.coding +++| 02693 M01S02690.coding +++| PSR number = This line must always be present. If more 02694 M01S02691.coding +++| than one PSR is answered, list the PSR 02695 M01S02692.coding +++| numbers on separate lines. If no PSR is 02696 M01S02693.coding +++| involved, use the phrase: NO PSR. 02697 M01S02694.coding +++| 02698 M01S02695.coding +++| modset = The REQUIRES lines must always be present. 02699 M01S02696.coding +++| If more than one modset is required (direct 02700 M01S02697.coding +++| or indirect dependency), list the modsets on 02701 M01S02698.coding +++| separate lines. If no dependency is 02702 M01S02699.coding +++| involved, use the phrase: NONE. 02703 M01S02700.coding +++| 02704 M01S02701.coding +++| Since mods to mods in the same release are not allowed for PSR code 02705 M01S02702.coding +++| (physically dependent code must be in the same modset), the REQUIRES 02706 M01S02703.coding +++| should specify modsets with logical or space dependencies. Modsets 02707 M01S02704.coding +++| previously released in a standard system usually should not be 02708 M01S02705.coding +++| included. For initial transmittal of feature code, REQUIRES - NONE 02709 M01S02706.coding +++| should be used. For feature repair code, the REQUIRES should 02710 M01S02707.coding +++| specify those modsets going into the same build that are dependent 02711 M01S02708.coding +++| on each other. 02712 M01S02709.coding +++| 02713 M01S02710.coding +++| The problem description should describe the problem being fixed by 02714 M01S02711.coding +++| the modset and the impact the problem has on the user. The solution 02715 M01S02712.coding +++| description should describe how the problem was fixed. External 02716 M01S02713.coding +++| interface changes caused by the installation of the modset should 02717 M01S02714.coding +++| also be documented. The problem/solution description may be 02718 M01S02715.coding +++| combined into one paragraph to avoid redundancy. 02719 M01S02716.coding +++| 02720 M01S02717.coding +++| The *READPL directive is not used. 02721 M01S02718.coding +++| 02722 M01S02719.coding +++| 02723 M01S02720.coding +++| 4.3 INTERFACE CONSIDERATIONS 02724 M01S02721.coding +++| 02725 M01S02722.coding +++| 02726 M01S02723.coding +++|1 PAGE 54 02727 M01S02724.coding +++| 02728 M01S02725.coding +++| 02729 M01S02726.coding +++| 4.3.1 SYSTEM SUPPLIED INTERFACES 02730 M01S02727.coding +++| 02731 M01S02728.coding +++| All interactions between programs (CPU and PP) and the system use 02732 M01S02729.coding +++| system-supplied macros, linkage labels or common decks. In PP 02733 M01S02730.coding +++| programs the system defined direct cells are only used as defined by 02734 M01S02731.coding +++| the system. (see section 3.5.3.1) 02735 M01S02732.coding +++| 02736 M01S02733.coding +++| 02737 M01S02734.coding +++| 4.3.2 PARAMETER VALIDATION 02738 M01S02735.coding +++| 02739 M01S02736.coding +++| Each parameter passed between programs will be validated or 02740 M01S02737.coding +++| processed in a way that protects the program from uncontrolled 02741 M01S02738.coding +++| actions caused by unexpected values. 02742 M01S02739.coding +++| 02743 M01S02740.coding +++| 02744 M01S02741.coding +++| 4.3.3 MEMORY ACCESS 02745 M01S02742.coding +++| 02746 M01S02743.coding +++| PP programs which access the field length of a job will insure that 02747 M01S02744.coding +++| no combination of parameters, errors, etc. will cause access to an 02748 M01S02745.coding +++| address outside of that field length. Addresses should be validated 02749 M01S02746.coding +++| prior to using them for a CM read or write to avoid referencing 02750 M01S02747.coding +++| areas of memory outside of the control points field length. 02751 M01S02748.coding +++| 02752 M01S02749.coding +++| A PP program accessing the field length of a control point should 02753 M01S02750.coding +++| insure the relative address does not exceed 377777B. 02754 M01S02751.coding +++| 02755 M01S02752.coding +++| 02756 M01S02753.coding +++| 4.3.4 SECURITY 02757 M01S02754.coding +++| 02758 M01S02755.coding +++| Programs that perform privileged functions must insure that the 02759 M01S02756.coding +++| requester of the function has been given permission by the system to 02760 M01S02757.coding +++| use the function. This also applies to the use of special device 02761 M01S02758.coding +++| drivers, which could be called accidentally or maliciously by 02762 M01S02759.coding +++| unauthorized users. Where common decks are available to check 02763 M01S02760.coding +++| security or privileges, they should be used rather than locally 02764 M01S02761.coding +++| written code. 02765 M01S02762.coding +++| 02766 M01S02763.coding +++| 02767 M01S02764.coding +++| 4.3.5 RESERVATIONS AND INTERLOCKS 02768 M01S02765.coding +++| 02769 M01S02766.coding +++| Reservations and interlocks are only used as defined by the system 02770 M01S02767.coding +++| and are released as soon as possible. Non-essential code is not 02771 M01S02768.coding +++| executed while a reservation or interlock is in effect. 02772 M01S02769.coding +++| 02773 M01S02770.coding +++| In cases where a reservation reject could occur, the program will: 02774 M01S02771.coding +++| 02775 M01S02772.coding +++| 1. Control the rate of reservation re-issue. 02776 M01S02773.coding +++| 2. Detect and respond to error conditions. 02777 M01S02774.coding +++| 3. Protect against storage move lockup. 02778 M01S02775.coding +++| 02779 M01S02776.coding +++|1 PAGE 55 02780 M01S02777.coding +++| 02781 M01S02778.coding +++| 02782 M01S02779.coding +++| Programs which use reservations and interlocks will insure that the 02783 M01S02780.coding +++| conditions are released no matter what program path is taken. 02784 M01S02781.coding +++| 02785 M01S02782.coding +++| When multiple interlocks are required, all programs in the operating 02786 M01S02783.coding +++| system must request the interlocks in the same order. When a reject 02787 M01S02784.coding +++| occurs when attempting to obtain such interlocks, all reservations 02788 M01S02785.coding +++| held must be released and the entire sequence of interlocking must 02789 M01S02786.coding +++| begin again. 02790 M01S02787.coding +++| 02791 M01S02788.coding +++| Care must be taken to not issue dayfile messages, load overlays, or 02792 M01S02789.coding +++| pause with non-dedicated channel(s) reserved. 02793 M01S02790.coding +++| 02794 M01S02791.coding +++| A PP program must not have a disk channel reserved when it attempts 02795 M01S02792.coding +++| to do an STBM or AFAM monitor function. If necessary, a ENDMS 02796 M01S02793.coding +++| should be performed to ensure this. 02797 M01S02794.coding +++| 02798 M01S02795.coding +++| 02799 M01S02796.coding +++| 4.3.6 DOCUMENTING HARDWARE DEFICIENCIES 02800 M01S02797.coding +++| 02801 M01S02798.coding +++| Instructions which are included to compensate for hardware 02802 M01S02799.coding +++| deficiencies are documented with a brief description or 02803 M01S02800.coding +++| identification of the deficiency. 02804 M01S02801.coding +++| 02805 M01S02802.coding +++| 02806 M01S02803.coding +++| 4.3.7 NEW FUNCTION/LOW CORE IDENTIFIERS 02807 M01S02804.coding +++| 02808 M01S02805.coding +++| New tags in PPCOM, use of previously reserved fields in CMR and CPA, 02809 M01S02806.coding +++| new PP function numbers, new monitor function numbers, etc. must be 02810 M01S02807.coding +++| signed up for via the DSO (Design Support Office). 02811 M01S02808.coding +++| 02812 M01S02809.coding +++| 02813 M01S02810.coding +++| 4.3.8 DECK INTERDEPENDENCIES 02814 M01S02811.coding +++| 02815 M01S02812.coding +++| Beware of deck interdependencies which may require additional 02816 M01S02813.coding +++| code/modsets, such as PPCOM and COMSXXX changes affecting DSDI, DIS 02817 M01S02814.coding +++| changes that should also be made in XIS, and COMCXXX/COMDXXX/COMPXXX/ 02818 M01S02815.coding +++| COMSXXX/COMTXXX, etc. changes causing CALLCPU/CALLDIS/CALLPPU/ 02819 M01S02816.coding +++| CALLSYS/CALLTAB, etc. to not assemble without lots of errors. 02820 M01S02817.coding +++| 02821 M01S02818.coding +++| 02822 M01S02819.coding +++| 4.4 MODULARITY 02823 M01S02820.coding +++| 02824 M01S02821.coding +++| 02825 M01S02822.coding +++| 4.4.1 PP OVERLAYS 02826 M01S02823.coding +++| 02827 M01S02824.coding +++| PP Programs use overlays whenever possible to improve the long range 02828 M01S02825.coding +++| performance of the system. Overlays are used for any seldom 02829 M01S02826.coding +++| executed code such as error handling and seldom used features. 02830 M01S02827.coding +++| 02831 M01S02828.coding +++| 02832 M01S02829.coding +++|1 PAGE 56 02833 M01S02830.coding +++| 02834 M01S02831.coding +++| 02835 M01S02832.coding +++| 4.4.2 HELPER PP-S 02836 M01S02833.coding +++| 02837 M01S02834.coding +++| Helper PPs are not used unless no other method exists. The 02838 M01S02835.coding +++| availability of PPs when needed should be considered, since the use 02839 M01S02836.coding +++| of helper PP's may lead to deadlocks if no PP's are available. 02840 M01S02837.coding +++| 02841 M01S02838.coding +++| 02842 M01S02839.coding +++| 4.4.3 COMMON DECKS 02843 M01S02840.coding +++| 02844 M01S02841.coding +++| A common deck containing executable code consists of one or more 02845 M01S02842.coding +++| subroutines (as defined in sections 3.2.6 and 3.2.7) and any 02846 M01S02843.coding +++| associated data storage areas. The purpose of common decks is to 02847 M01S02844.coding +++| increase efficiency in writing code, insure uniformity of code and 02848 M01S02845.coding +++| decrease debugging time. Common decks contain optimized code and 02849 M01S02846.coding +++| external interfaces that are generalized to facilitate their use in 02850 M01S02847.coding +++| future programs. These decks should be used in preference to local 02851 M01S02848.coding +++| code whenever possible. 02852 M01S02849.coding +++| 02853 M01S02850.coding +++| Common Decks which contain only macros are not qualified. "S" type 02854 M01S02851.coding +++| common decks are not qualified by the QUAL pseudo-op within the 02855 M01S02852.coding +++| common deck. If an "S" type common deck is qualified externally, 02856 M01S02853.coding +++| the qualifier is the three character name of the routine. For 02857 M01S02854.coding +++| example: 02858 M01S02855.coding +++| 02859 M01S02856.coding +++| COMSaaa (where aaa is the qualifier) 02860 M01S02857.coding +++| 02861 M01S02858.coding +++| 02862 M01S02859.coding +++| 4.5 DAYFILE MESSAGES 02863 M01S02860.coding +++| 02864 M01S02861.coding +++| Dayfile messages issued to the user or system Dayfile begin with a 02865 M01S02862.coding +++| blank character and end with a period. Dayfile messages should not 02866 M01S02863.coding +++| exceed 50 characters. Abbreviations should be avoided when possible 02867 M01S02864.coding +++| in dayfile messages. 02868 M01S02865.coding +++| 02869 M01S02866.coding +++| Informative messages should be issued to the user dayfile only 02870 M01S02867.coding +++| (option 3 on the MESSAGE macro or the CPON option on the call to 02871 M01S02868.coding +++| DFM). Messages that indicate that the job will abort are the only 02872 M01S02869.coding +++| informative user messages that should also be issued to the System 02873 M01S02870.coding +++| Dayfile. Special system programs (MODVAL, ISF, Subsystems, PF or 02874 M01S02871.coding +++| Queue Utilities, etc.) are exceptions and may issue informative 02875 M01S02872.coding +++| messages to the System Dayfile when necessary. 02876 M01S02873.coding +++| 02877 M01S02874.coding +++| 02878 M01S02875.coding +++|1 PAGE 57 02879 M01S02876.coding +++| 02880 M01S02877.coding +++| 02881 M01S02878.coding +++| 4.6 UNHANGABLE CHANNEL CODE 02882 M01S02879.coding +++| 02883 M01S02880.coding +++| To avoid channel hangs, bit 2**5 is set on some PP channel 02884 M01S02881.coding +++| instructions. This should only be used when undesirable side 02885 M01S02882.coding +++| affects will not result and where it is possible to take corrective 02886 M01S02883.coding +++| action. (For example: disconnecting an inactive channel will not 02887 M01S02884.coding +++| result in undesirable effects.) Bit 2**5 should not be used when 02888 M01S02885.coding +++| unpredictable results may occur. Bit 2**5 is not used with channel 02889 M01S02886.coding +++| 15. 02890 M01S02887.coding +++| 02891 M01S02888.coding +++| Example: 02892 M01S02889.coding +++| IJM tag1,CH IF CHANNEL DISCONNECTED 02893 M01S02890.coding +++| DCN CH+4O DISCONNECT CHANNEL 02894 M01S02891.coding +++| RJM ERP PROCESS ERROR 02895 M01S02892.coding +++| tag1 . 02896 M01S02893.coding +++| . 02897 M01S02894.coding +++| . 02898 M01S02895.coding +++| 02899 M01S02896.coding +++| 02900 M01S02897.coding +++| 4.7 SPECIAL ENTRY POINTS 02901 M01S02898.coding +++| 02902 M01S02899.coding +++| Special entry points defined by NOS include: 02903 M01S02900.coding +++| 02904 M01S02901.coding +++| ARG= Inhibit argument processing 02905 M01S02902.coding +++| CLB= Command line buffer 02906 M01S02903.coding +++| DMP= Allow special system processing 02907 M01S02904.coding +++| LDR= Loader processing 02908 M01S02905.coding +++| MFL= Minimum field length 02909 M01S02906.coding +++| RFL= Running field length 02910 M01S02907.coding +++| SDM= Suppress dayfile message 02911 M01S02908.coding +++| SSJ= Special system job 02912 M01S02909.coding +++| SSM= Secure system memory 02913 M01S02910.coding +++| VAL= Validation program 02914 M01S02911.coding +++| 02915 M01S02912.coding +++| To insure proper loading and execution of special entry point 02916 M01S02913.coding +++| programs, special entry points must be declared after normal entry 02917 M01S02914.coding +++| points. 02918 M01S02915.coding +++| 02919 M01S02916.coding +++| EXAMPLE: 02920 M01S02917.coding +++| 02921 M01S02918.coding +++| IDENT FWA 02922 M01S02919.coding +++| ABS 02923 M01S02920.coding +++| ENTRY ABC 02924 M01S02921.coding +++| ENTRY XYZ 02925 M01S02922.coding +++| ENTRY RFL= 02926 M01S02923.coding +++| ENTRY SSJ= 02927 M01S02924.coding +++| SYSCOM B1 02928 M01S02925.coding +++| . 02929 M01S02926.coding +++| . 02930 M01S02927.coding +++| . 02931 M01S02928.coding +++| 02932 M01S02929.coding +++| 02933 M01S02930.coding +++|1 PAGE 58 02934 M01S02931.coding +++| 02935 M01S02932.coding +++| 02936 M01S02933.coding +++| 4.8 SCRATCH FILE NAMES. 02937 M01S02934.coding +++| 02938 M01S02935.coding +++| Programs requiring temporary scratch files will use the names 02939 M01S02936.coding +++| ZZZZZG0 - ZZZZZG9 as names for scratch files. Programs which 02940 M01S02937.coding +++| require more than these 10 scratch file names must resolve the 02941 M01S02938.coding +++| required file names with Systems Design. Such scratch files must 02942 M01S02939.coding +++| always be returned at program termination. 02943 M01S02940.coding +++| 02944 M01S02941.coding +++| 02945 M01S02942.coding +++|1 PAGE 59 02946 M01S02943.coding +++| 02947 M01S02944.coding +++| 02948 M01S02945.coding +++| APPENDIX A - ABBREVIATIONS 02949 M01S02946.coding +++| 02950 M01S02947.coding +++| Standard industry abbreviations and programming language names may 02951 M01S02948.coding +++| be used even though they are not included in the following appendix. 02952 M01S02949.coding +++| 02953 M01S02950.coding +++| A.1 GENERAL ABBREVIATIONS 02954 M01S02951.coding +++| 02955 M01S02952.coding +++| BML binary maintenance log 02956 M01S02953.coding +++| BOI beginning of information 02957 M01S02954.coding +++| CLT common library table 02958 M01S02955.coding +++| CM central memory 02959 M01S02956.coding +++| CME central memory extension 02960 M01S02957.coding +++| CMM common memory manager 02961 M01S02958.coding +++| CMR central memory resident 02962 M01S02959.coding +++| CMU compare/move unit 02963 M01S02960.coding +++| CP control point 02964 M01S02961.coding +++| CPA control point area address 02965 M01S02962.coding +++| CPU central processing unit 02966 M01S02963.coding +++| CR carriage return 02967 M01S02964.coding +++| CSU cartridge storage unit 02968 M01S02965.coding +++| CW control word 02969 M01S02966.coding +++| DAT device access table 02970 M01S02967.coding +++| DIT device interlock table 02971 M01S02968.coding +++| ECS extended core storage 02972 M01S02969.coding +++| ESM extended semi conductor memory 02973 M01S02970.coding +++| EJT executing job table 02974 M01S02971.coding +++| EJTO executing job table ordinal 02975 M01S02972.coding +++| EM extended memory 02976 M01S02973.coding +++| EOF end of file 02977 M01S02974.coding +++| EOI end of information 02978 M01S02975.coding +++| EOL end of line 02979 M01S02976.coding +++| EOR end of record 02980 M01S02977.coding +++| EOS end of stream 02981 M01S02978.coding +++| EPD entry point directory 02982 M01S02979.coding +++| EST equipment status table 02983 M01S02980.coding +++| FOT family ordinal table 02984 M01S02981.coding +++| ETX end of text 02985 M01S02982.coding +++| FDX full duplex 02986 M01S02983.coding +++| FET file enviroment table 02987 M01S02984.coding +++| FL field length 02988 M01S02985.coding +++| FLE field length for extended memory 02989 M01S02986.coding +++| FLPP first level PPU 02990 M01S02987.coding +++| FNT file name table 02991 M01S02988.coding +++| FST file status table 02992 M01S02989.coding +++| FWA first word address 02993 M01S02990.coding +++| HDX half duplex 02994 M01S02991.coding +++| ID identifier or identification 02995 M01S02992.coding +++| I/O input/output 02996 M01S02993.coding +++| JCB job control block 02997 M01S02994.coding +++| JSN job sequence name 02998 M01S02995.coding +++| LCME large core memory extended 02999 M01S02996.coding +++| 03000 M01S02997.coding +++|1 PAGE 60 03001 M01S02998.coding +++| 03002 M01S02999.coding +++| 03003 M01S03000.coding +++| LFN logical file name 03004 M01S03001.coding +++| LWA last word address 03005 M01S03002.coding +++| MID machine identification 03006 M01S03003.coding +++| MMF multi-mainframe 03007 M01S03004.coding +++| MRT machine recovery table 03008 M01S03005.coding +++| MS mass storage 03009 M01S03006.coding +++| MSA mass storage adaptor 03010 M01S03007.coding +++| MST mass storage table 03011 M01S03008.coding +++| MST mass storage transport (do not use abbreviation where 03012 M01S03009.coding +++| confusion with Mass Storage Table may result) 03013 M01S03010.coding +++| MT magnetic tape 03014 M01S03011.coding +++| MUX multiplexer 03015 M01S03012.coding +++| NFL negative field length 03016 M01S03013.coding +++| PF permanent file 03017 M01S03014.coding +++| PFC permanent file catalog 03018 M01S03015.coding +++| PFN permanent file name 03019 M01S03016.coding +++| PLD peripheral library directory 03020 M01S03017.coding +++| PP peripheral processor 03021 M01S03018.coding +++| PPU first-level peripheral processor; only on CYBER 176 03022 M01S03019.coding +++| (also known as FLPP) 03023 M01S03020.coding +++| PRU physical record unit 03024 M01S03021.coding +++| PST program status table 03025 M01S03022.coding +++| QFT queued file table 03026 M01S03023.coding +++| RA reference address 03027 M01S03024.coding +++| RAE reference address for extended memory 03028 M01S03025.coding +++| RCL resident central library 03029 M01S03026.coding +++| RPL resident peripheral library 03030 M01S03027.coding +++| RMS rotating mass storage 03031 M01S03028.coding +++| SCP system control point 03032 M01S03029.coding +++| SCR status and control register 03033 M01S03030.coding +++| SECDED single error correction, double error detection 03034 M01S03031.coding +++| SUBCP subcontrol point 03035 M01S03032.coding +++| TRT track reservation table 03036 M01S03033.coding +++| TTY teletype 03037 M01S03034.coding +++| UCP user control point 03038 M01S03035.coding +++| UEM unified extended memory for 8X5 03039 M01S03036.coding +++| UDT unit descriptor table 03040 M01S03037.coding +++| UJN user job name 03041 M01S03038.coding +++| VSN volume serial number 03042 M01S03039.coding +++| 03043 M01S03040.coding +++| 03044 M01S03041.coding +++| A.2 NETWORK HOST PRODUCTS ABBREVIATIONS 03045 M01S03042.coding +++| 03046 M01S03043.coding +++| ABH application block header 03047 M01S03044.coding +++| ABL application block limit 03048 M01S03045.coding +++| ABN application block number 03049 M01S03046.coding +++| ABT application block type 03050 M01S03047.coding +++| ACK block acknowledged 03051 M01S03048.coding +++| ACN application connection number 03052 M01S03049.coding +++| ACT application character type 03053 M01S03050.coding +++| ADR address information 03054 M01S03051.coding +++| 03055 M01S03052.coding +++|1 PAGE 61 03056 M01S03053.coding +++| 03057 M01S03054.coding +++| 03058 M01S03055.coding +++| ALN application list number 03059 M01S03056.coding +++| CLA communications line adapter 03060 M01S03057.coding +++| IBU input block undeliverable 03061 M01S03058.coding +++| IVT interactive virtual terminal 03062 M01S03059.coding +++| LCF local configuration file 03063 M01S03060.coding +++| LOP local operator 03064 M01S03061.coding +++| NAK block not acknowledged 03065 M01S03062.coding +++| NCF network configuration file 03066 M01S03063.coding +++| NDL network definition language 03067 M01S03064.coding +++| NFE no format effectors 03068 M01S03065.coding +++| NOP network operator 03069 M01S03066.coding +++| NPU network processing unit 03070 M01S03067.coding +++| PFC primary function code 03071 M01S03068.coding +++| SFC secondary function code 03072 M01S03069.coding +++| SM supervisory message 03073 M01S03070.coding +++| SMP supervisory message processor 03074 M01S03071.coding +++| TA text area 03075 M01S03072.coding +++| TLC text length characters 03076 M01S03073.coding +++| TLMAX maximum length of data message block text 03077 M01S03074.coding +++| TNAME terminal name 03078 M01S03075.coding +++| 03079 M01S03076.coding +++| 03080 M01S03077.coding +++| A.3 ACRONYMS 03081 M01S03078.coding +++| 03082 M01S03079.coding +++| AIP Application Interface Program 03083 M01S03080.coding +++| BIO Batchio 03084 M01S03081.coding +++| CDCS CYBER Database Control System 03085 M01S03082.coding +++| CRM Cyber Record Manager 03086 M01S03083.coding +++| FSE Full Screen Editor 03087 M01S03084.coding +++| IAF Interactive Facility 03088 M01S03085.coding +++| LCN Loosely Coupled Network 03089 M01S03086.coding +++| MAG Magnet 03090 M01S03087.coding +++| MAP Matrix Array Processor 03091 M01S03088.coding +++| MCS Message Control System 03092 M01S03089.coding +++| MSF Mass Storage Facility 03093 M01S03090.coding +++| MSS Mass Storage Subsystem 03094 M01S03091.coding +++| NAM Network Access Method 03095 M01S03092.coding +++| NOS Network Operating System 03096 M01S03093.coding +++| NVE Network Validation Facility 03097 M01S03094.coding +++| RBF Remote Batch Facility 03098 M01S03095.coding +++| RDF Remote Diagnostic Facility 03099 M01S03096.coding +++| RHF Remote Host Facility 03100 M01S03097.coding +++| SMF Screen Management Facility 03101 M01S03098.coding +++| SSF Scope Station Facility 03102 M01S03099.coding +++| STM Stimulator 03103 M01S03100.coding +++| TAF Transaction Facility 03104 M01S03101.coding +++| TIP Terminal Interface Program 03105 M01S03102.coding +++| TVF Terminal Verification Facility 03106 M01S03103.coding +++| 03107 M01S03104.coding +++|1 PAGE 62 03108 M01S03105.coding +++| 03109 M01S03106.coding +++| 03110 M01S03107.coding +++| APPENDIX B - ERROR MESSAGE GUIDELINES 03111 M01S03108.coding +++| 03112 M01S03109.coding +++| The following general principles are to be observed in designing 03113 M01S03110.coding +++| future error messages for NOS. Existing messages should be improved 03114 M01S03111.coding +++| as opportunities arise. These guidelines will be formalized in a 03115 M01S03112.coding +++| later Usability Design Direction Document. 03116 M01S03113.coding +++| 03117 M01S03114.coding +++| 1. The purpose of an error message is to inform the user how to 03118 M01S03115.coding +++| correct a problem. 03119 M01S03116.coding +++| 03120 M01S03117.coding +++| Discussion: It helps to view error messages as prompts: not 03121 M01S03118.coding +++| "this is what you did wrong" but "this is how to do it right." 03122 M01S03119.coding +++| Messages should be phrased positively. The words "ILLEGAL", 03123 M01S03120.coding +++| "INVALID", and "SYNTAX" are specifically not permitted in NOS 03124 M01S03121.coding +++| messages. Of course, there are other ways to phrase unhelpful, 03125 M01S03122.coding +++| negative messages; but these three words are singled out for 03126 M01S03123.coding +++| extinction for being so frequently seen in the company of 03127 M01S03124.coding +++| usability offenders. 03128 M01S03125.coding +++| 03129 M01S03126.coding +++| 2. A single message should diagnose a single error. 03130 M01S03127.coding +++| 03131 M01S03128.coding +++| Discussion: For example, if the meaning of message is "more 03132 M01S03129.coding +++| than seven characters or leading non-alphabetic character or 03133 M01S03130.coding +++| null identifier" it should be three messages. Usually, the code 03134 M01S03131.coding +++| must make three separate tests, so it is easy to be precise. An 03135 M01S03132.coding +++| exception is when a common deck returns an error status which 03136 M01S03133.coding +++| could have resulted from several different conditions. 03137 M01S03134.coding +++| 03138 M01S03135.coding +++| 3. An error message is friendly if it is business-like and 03139 M01S03136.coding +++| informative. 03140 M01S03137.coding +++| 03141 M01S03138.coding +++| Discussion: Cute, funny, or flippant messages are to be 03142 M01S03139.coding +++| avoided, as they seldom diagnose accurately and always wear 03143 M01S03140.coding +++| quickly. Messages should be directed at the process and not the 03144 M01S03141.coding +++| person. 03145 M01S03142.coding +++| 03146 M01S03143.coding +++| 4. Messages must be written plainly, using terms already known to 03147 M01S03144.coding +++| the user. 03148 M01S03145.coding +++| 03149 M01S03146.coding +++| Discussion: Messages should use terms which are either 03150 M01S03147.coding +++| self-defining or natural to the process. All words should be 03151 M01S03148.coding +++| part of the external user interface, like "file name" instead of 03152 M01S03149.coding +++| "LFN" (unless LFN is an external parameter). 03153 M01S03150.coding +++| 03154 M01S03151.coding +++| 5. Messages must be written in English. 03155 M01S03152.coding +++| 03156 M01S03153.coding +++| Discussion: Messages should follow normal rules for English 03157 M01S03154.coding +++| grammar and punctuation, although "pidgin English" -- the 03158 M01S03155.coding +++| omission of selected subjects, verbs or objects in the interest 03159 M01S03156.coding +++| of brevity where the meaning is clear - is acceptable. Messages 03160 M01S03157.coding +++| should not be written in octal, or in other forms of scientific 03161 M01S03158.coding +++| notation. Note that the asterisk is not an English punctuator. 03162 M01S03159.coding +++|1 PAGE 63 03163 M01S03160.coding +++| 03164 M01S03161.coding +++| 03165 M01S03162.coding +++| 03166 M01S03163.coding +++| 6. Messages should be self-contained. 03167 M01S03164.coding +++| 03168 M01S03165.coding +++| Discussion: If you need to tell a story, tell the whole story. 03169 M01S03166.coding +++| Avoid references, as they are difficult to keep up-to-date and 03170 M01S03167.coding +++| are often no more helpful then a good one-line message would be. 03171 M01S03168.coding +++| 03172 M01S03169.coding +++| 7. Error messages should point directly to the source of the 03173 M01S03170.coding +++| trouble. 03174 M01S03171.coding +++| 03175 M01S03172.coding +++| Discussion: For example, "FILE NOT FOUND" is better put as 03176 M01S03173.coding +++| "FILE XYZ NOT FOUND", "EXPECTING COMMA OR PERIOD AFTER 'ABC'" is 03177 M01S03174.coding +++| much clearer than "SYNTAX ERROR". In general, the technique of 03178 M01S03175.coding +++| echoing back part of the user input as part of the message is 03179 M01S03176.coding +++| better than the use of internal names or parameter keywords 03180 M01S03177.coding +++| which the user may not recognize. 03181 M01S03178.coding +++| 03182 M01S03179.coding +++| 8. Interactive error messages should appear as soon as possible 03183 M01S03180.coding +++| after an error is committed. 03184 M01S03181.coding +++| 03185 M01S03182.coding +++| Discussion: Each interactive input should be completely and 03186 M01S03183.coding +++| fully validated as soon as it is received. In no event should a 03187 M01S03184.coding +++| user be led down the garden path to enter a long series of input 03188 M01S03185.coding +++| only to be advised that it is all wrong because the first part 03189 M01S03186.coding +++| was wrong. 03190 M01S03187.coding +++| 03191 M01S03188.coding +++| 9. No messages at all should appear for trivial, correctable errors 03192 M01S03189.coding +++| - nor should they be errors. 03193 M01S03190.coding +++| 03194 M01S03191.coding +++| Discussion: Errors such as missing or redundant terminators 03195 M01S03192.coding +++| should not be errors at all. If a reasonable assumption can be 03196 M01S03193.coding +++| made as to the intent of an input, it should be acted upon as 03197 M01S03194.coding +++| though it were "valid". No error diagnostic should be produced 03198 M01S03195.coding +++| for these cases. If it is not perfectly clear what assumption 03199 M01S03196.coding +++| was made, the assumption was probably not reasonable to begin 03200 M01S03197.coding +++| with. 03201 M01S03198.coding +++| 03202 M01S03199.coding +++| 10. An error message must clearly signal that an error has occurred. 03203 M01S03200.coding +++| 03204 M01S03201.coding +++| Discussion: An error message must not be phrased in such a way 03205 M01S03202.coding +++| as to be confused with a merely informative message. Also, a 03206 M01S03203.coding +++| message should indicate the gravity and extent of the error, as 03207 M01S03204.coding +++| when an error in a list inhibits processing of the remainder of 03208 M01S03205.coding +++| the list. 03209 M01S03206.coding +++| 03210 M01S03207.coding +++|1 PAGE 64 03211 M01S03208.coding +++| 03212 M01S03209.coding +++| 03213 M01S03210.coding +++| APPENDIX C DOCUMENTATION/USABILITY GUIDELINES 03214 M01S03211.coding +++| 03215 M01S03212.coding +++| 03216 M01S03213.coding +++| 1. COMMAND should be used instead of CONTROL STATEMENT or CONTROL 03217 M01S03214.coding +++| CARD. 03218 M01S03215.coding +++| 03219 M01S03216.coding +++| 2. INCORRECT should be used rather than ILLEGAL or INVALID (refer 03220 M01S03217.coding +++| to Appendix B item 1). 03221 M01S03218.coding +++| 03222 M01S03219.coding +++| 3. USER should be used instead of ACCOUNT. 03223 M01S03220.coding +++| 03224 M01S03221.coding +++| 4. USER NAME should be used instead of USER NUMBER or ACCOUNT 03225 M01S03222.coding +++| NUMBER. 03226 M01S03223.coding +++| 03227 M01S03224.coding +++| 5. EXTENDED MEMORY should be used rather than ECS. 03228 M01S03225.coding +++| 03229 M01S03226.coding +++| 6. MONITOR REQUEST should be used rather than RA+1 CALL. 03230 M01S03227.coding +++| 03231 M01S03228.coding +++| 7. EST ORDINAL or DEVICE should be used instead of EQUIPMENT NUMBER 03232 M01S03229.coding +++| or EQUIPMENT. 03233 M01S03230.coding +++| 03234 M01S03231.coding +++| 8. English variables such as file name rather than filenam should 03235 M01S03232.coding +++| be used to remove the shorthand notation of using variable names 03236 M01S03233.coding +++| that are the same length as the maximum entry. 03237 M01S03234.coding +++| 03238 M01S03235.coding +++| 9. Documentation, messages, etc. should avoid the use of sexist 03239 M01S03236.coding +++| language (he, she, him, her, etc.). 03240 M01S03237.coding +++| 03241 M01S03238.coding +++|*WEOR
cdc/nos2.source/opl.opl871/deck/coding.001.txt ยท Last modified: by 127.0.0.1