cdc:nos2.source:opl.opl871:deck:coding.001
Deck CODING Part 001
1 Modification
Listing Sections
- Deck CODING Start
- Deck CODING Part 1 (Line 1962)
Source
Seq # *Modification Id* Act ----------------------------+ 01962 M00S01959.coding +++| 01963 M00S01960.coding +++| Large buffers and working storage areas should be defined using EQU 01964 M00S01961.coding +++| statements (rather than BSS and BSSZ) to avoid unneccessary loading 01965 M00S01962.coding +++| of the buffer areas that do not require initialization. This 01966 M00S01963.coding +++| applies to CPU and PP code. 01967 M00S01964.coding +++| 01968 M00S01965.coding +++| USE BUFFERS 01969 M00S01966.coding +++| IBUF EQU * 01970 M00S01967.coding +++| OBUF EQU IBUF+IBUFL 01971 M00S01968.coding +++| RFL= EQU OBUF+OBUFL 01972 M00S01969.coding +++| 01973 M00S01970.coding +++| Small buffers and working storage areas may be allocated via BSSZ, 01974 M00S01971.coding +++| if the program requires that the area be zero on program initiation. 01975 M00S01972.coding +++| 01976 M00S01973.coding +++| The BSSN macro defined in COMCMAC and COMPMAC may also be used to 01977 M00S01974.coding +++| define buffers. 01978 M00S01975.coding +++| 01979 M00S01976.coding +++| 01980 M00S01977.coding +++| 3.5 DATA/CODE NAMING TERMINOLOGY 01981 M00S01978.coding +++| 01982 M00S01979.coding +++| 01983 M00S01980.coding +++|1 PAGE 40 01984 M00S01981.coding +++| 01985 M00S01982.coding +++| 01986 M00S01983.coding +++| 3.5.1 USE OF CONDITION TERMINOLOGY 01987 M00S01984.coding +++| 01988 M00S01985.coding +++| The following terms are used to describe the condition of bits used 01989 M00S01986.coding +++| as flags or switches. The selected terms should be used 01990 M00S01987.coding +++| consistently within a program. 01991 M00S01988.coding +++| 01992 M00S01989.coding +++| 1 0 01993 M00S01990.coding +++| on off 01994 M00S01991.coding +++| true false 01995 M00S01992.coding +++| set clear (reset) 01996 M00S01993.coding +++| nonzero zero 01997 M00S01994.coding +++| up down 01998 M00S01995.coding +++| 01999 M00S01996.coding +++| 02000 M00S01997.coding +++| 3.5.2 TAGS WITHIN SUBROUTINES 02001 M00S01998.coding +++| 02002 M00S01999.coding +++| Each subroutine (main loop, primary subroutine or secondary 02003 M00S02000.coding +++| subroutine) has a meaningful three character name which is derived 02004 M00S02001.coding +++| from the title of the subroutine (see section 2.4). 02005 M00S02002.coding +++| 02006 M00S02003.coding +++| Tags used for branch instructions are of the form: 02007 M00S02004.coding +++| 02008 M00S02005.coding +++| XXXn Example: GFN1 02009 M00S02006.coding +++| 02010 M00S02007.coding +++| Tags on code which is added later to the subroutine are of the 02011 M00S02008.coding +++| form: 02012 M00S02009.coding +++| 02013 M00S02010.coding +++| XXXN.n Example: GFN1.1 02014 M00S02011.coding +++| 02015 M00S02012.coding +++| Tags that are inserted between the SUBR and the tag XXX1 by 02016 M00S02013.coding +++| corrective code are of the form: 02017 M00S02014.coding +++| 02018 M00S02015.coding +++| XXX0.n Example: GFN0.1 02019 M00S02016.coding +++| 02020 M00S02017.coding +++| 02021 M00S02018.coding +++| Tags on storage locations (constants, temporary storage and 02022 M00S02019.coding +++| instruction modification) within a subroutine are of the form: 02023 M00S02020.coding +++| 02024 M00S02021.coding +++| XXXa 02025 M00S02022.coding +++| 02026 M00S02023.coding +++| Where: 02027 M00S02024.coding +++| 02028 M00S02025.coding +++| XXX = Subroutine name 02029 M00S02026.coding +++| XXXN = Tag preceding an added one 02030 M00S02027.coding +++| n = Number from 1 to 99 (in consecutive order beginning at 02031 M00S02028.coding +++| the entry point and ending at the exit point) 02032 M00S02029.coding +++| a = Letter from A to Z and AA to ZZ (in alphabetical order 02033 M00S02030.coding +++| and excluding X) 02034 M00S02031.coding +++| 02035 M00S02032.coding +++| Tags of the form XXXn, XXXn.n, and XXXa should not be referenced 02036 M00S02033.coding +++| outside of subroutine XXX. 02037 M00S02034.coding +++| 02038 M00S02035.coding +++|1 PAGE 41 02039 M00S02036.coding +++| 02040 M00S02037.coding +++| 02041 M00S02038.coding +++| If the above rules cannot be followed due to tag unavailability, 02042 M00S02039.coding +++| the entire subroutine will have its tags resequenced. 02043 M00S02040.coding +++| 02044 M00S02041.coding +++| Tags on storage locations within a subroutine which must be 02045 M00S02042.coding +++| referenced outside of the subroutine should be given appropriate 02046 M00S02043.coding +++| global tags. 02047 M00S02044.coding +++| 02048 M00S02045.coding +++| 02049 M00S02046.coding +++| 3.5.3 TAGS ON DATA 02050 M00S02047.coding +++| 02051 M00S02048.coding +++| 02052 M00S02049.coding +++| 3.5.3.1 DIRECT CELLS 02053 M00S02050.coding +++| 02054 M00S02051.coding +++| All PP direct cells have two-character names. 02055 M00S02052.coding +++| 02056 M00S02053.coding +++| The following table defines the preassigned direct cell usage: 02057 M00S02054.coding +++| 02058 M00S02055.coding +++| Contents Name Location 02059 M00S02056.coding +++| 02060 M00S02057.coding +++| Control Point RA/100 RA 55 02061 M00S02058.coding +++| Control Point FL/100 FL 56 02062 M00S02059.coding +++| 1 ON 70 02063 M00S02060.coding +++| 100 HN 71 02064 M00S02061.coding +++| 1000 TH 72 02065 M00S02062.coding +++| 3 TR 73 02066 M00S02063.coding +++| CPA address CP 74 02067 M00S02064.coding +++| PP input register address IA 75 02068 M00S02065.coding +++| PP output register address OA 76 02069 M00S02066.coding +++| PP message buffer address MA 77 02070 M00S02067.coding +++| 02071 M00S02068.coding +++| 02072 M00S02069.coding +++| 3.5.3.2 CODE CONTROL NAMES 02073 M00S02070.coding +++| 02074 M00S02071.coding +++| Names used for assembly options, micros and to control code 02075 M00S02072.coding +++| generation are five or more characters long. 02076 M00S02073.coding +++| 02077 M00S02074.coding +++| 02078 M00S02075.coding +++| 3.5.3.3 TABLE NAMES 02079 M00S02076.coding +++| 02080 M00S02077.coding +++| Tags used on tables have the form: 02081 M00S02078.coding +++| 02082 M00S02079.coding +++| Txxx 02083 M00S02080.coding +++| 02084 M00S02081.coding +++| Tags used for table lengths have the form: 02085 M00S02082.coding +++| 02086 M00S02083.coding +++| TxxxL 02087 M00S02084.coding +++| 02088 M00S02085.coding +++| Tags used for table entry lengths have the form: 02089 M00S02086.coding +++| 02090 M00S02087.coding +++| TxxxE 02091 M00S02088.coding +++| 02092 M00S02089.coding +++|1 PAGE 42 02093 M00S02090.coding +++| 02094 M00S02091.coding +++| 02095 M00S02092.coding +++| Where: 02096 M00S02093.coding +++| 02097 M00S02094.coding +++| xxx = 3 character table name 02098 M00S02095.coding +++| 02099 M00S02096.coding +++| 02100 M00S02097.coding +++| 3.5.3.4 GLOBAL MEMORY LOCATIONS 02101 M00S02098.coding +++| 02102 M00S02099.coding +++| Names used for global memory locations (locations referenced by more 02103 M00S02100.coding +++| than one subroutine) are four characters long. Multiple definitions 02104 M00S02101.coding +++| for global memory locations should be avoided. 02105 M00S02102.coding +++| 02106 M00S02103.coding +++| 02107 M00S02104.coding +++| 3.5.4 CONSTANTS USED AS INSTRUCTIONS 02108 M00S02105.coding +++| 02109 M00S02106.coding +++| Four letter tag names should end in "I" if the tag name is defining 02110 M00S02107.coding +++| an instruction. 02111 M00S02108.coding +++| 02112 M00S02109.coding +++| For example: 02113 M00S02110.coding +++| 02114 M00S02111.coding +++| LJMI EQU 0100B *LJM* INSTRUCTION 02115 M00S02112.coding +++| SHNI EQU 1000B *SHN* INSTRUCTION 02116 M00S02113.coding +++| 02117 M00S02114.coding +++| PP instructions are defined as constants in common deck COMSPIM. 02118 M00S02115.coding +++| 02119 M00S02116.coding +++| 02120 M00S02117.coding +++| 3.5.5 IF/ELSE/ENDIF SYMBOLS 02121 M00S02118.coding +++| 02122 M00S02119.coding +++| Symbols used on IF, ELSE, ENDIF and SKIP psuedo instructions may be 02123 M00S02120.coding +++| system symbols or local symbols of the form: 02124 M00S02121.coding +++| 02125 M00S02122.coding +++| .a 02126 M00S02123.coding +++| 02127 M00S02124.coding +++| where: 02128 M00S02125.coding +++| a = letter from A to Z 02129 M00S02126.coding +++| 02130 M00S02127.coding +++| Unlabeled, unnumbered IF/ELSE/SKIP/ENDIF sequences should not be 02131 M00S02128.coding +++| used as they may unexpectedly affect other sequences. For very 02132 M00S02129.coding +++| short sequences a line count may be used, for longer sequences 02133 M00S02130.coding +++| labels are preferred. 02134 M00S02131.coding +++| 02135 M00S02132.coding +++| 3.5.6 NON-LOCAL MACRO SYMBOLS 02136 M00S02133.coding +++| 02137 M00S02134.coding +++| To avoid conflicts with user code, non-local symbols defined within 02138 M00S02135.coding +++| macros are of the form: 02139 M00S02136.coding +++| 02140 M00S02137.coding +++| .n 02141 M00S02138.coding +++| 02142 M00S02139.coding +++| where: 02143 M00S02140.coding +++| n = number from 1 to 99 02144 M00S02141.coding +++| 02145 M00S02142.coding +++| 02146 M00S02143.coding +++|1 PAGE 43 02147 M00S02144.coding +++| 02148 M00S02145.coding +++| 02149 M00S02146.coding +++| 3.5.7 LOW CORE LOCATION SYMBOLS 02150 M00S02147.coding +++| 02151 M00S02148.coding +++| Symbols that are used to define locations in low core (CMR) are of 02152 M00S02149.coding +++| the form: 02153 M00S02150.coding +++| 02154 M00S02151.coding +++| xxxL 02155 M00S02152.coding +++| 02156 M00S02153.coding +++| 02157 M00S02154.coding +++| 3.5.8 CONTROL POINT AREA LOCATION SYMBOLS 02158 M00S02155.coding +++| 02159 M00S02156.coding +++| Symbols that are used for defining locations in the control point 02160 M00S02157.coding +++| area are of the form: 02161 M00S02158.coding +++| 02162 M00S02159.coding +++| xxxW 02163 M00S02160.coding +++| 02164 M00S02161.coding +++| 02165 M00S02162.coding +++| 3.5.9 MONITOR FUNCTION SYMBOLS 02166 M00S02163.coding +++| 02167 M00S02164.coding +++| Symbols used for monitor function requests are of the form: 02168 M00S02165.coding +++| 02169 M00S02166.coding +++| xxxM 02170 M00S02167.coding +++| 02171 M00S02168.coding +++| 02172 M00S02169.coding +++| 3.5.10 NEGATIVE FIELD LENGTH SYMBOLS 02173 M00S02170.coding +++| 02174 M00S02171.coding +++| Symbols used to reference data in negative field length are of the 02175 M00S02172.coding +++| form: 02176 M00S02173.coding +++| 02177 M00S02174.coding +++| xxxN 02178 M00S02175.coding +++| 02179 M00S02176.coding +++| 02180 M00S02177.coding +++| 3.6 PSEUDO INSTRUCTION USE, FORMAT, AND PARAMETERS 02181 M00S02178.coding +++| 02182 M00S02179.coding +++| 02183 M00S02180.coding +++| 3.6.1 BASE AND POST RADIX USE 02184 M00S02181.coding +++| 02185 M00S02182.coding +++| The BASE DECIMAL pseudo-op is used in all CPU code. The BASE MIXED 02186 M00S02183.coding +++| pseudo-op is used in all PP code. Post Radix is allowed for data 02187 M00S02184.coding +++| formats other than octal and decimal; in specifying timing loops 02188 M00S02185.coding +++| where decimal values are more meaningful to humans; and where 02189 M00S02186.coding +++| external specifications such as ANSI or corporate standards dictate 02190 M00S02187.coding +++| the use of a particular format. 02191 M00S02188.coding +++| 02192 M00S02189.coding +++| 02193 M00S02190.coding +++| 3.6.2 EXTERNAL REFERENCES 02194 M00S02191.coding +++| 02195 M00S02192.coding +++| The EXT pseudo-op is not used. All references to external names use 02196 M00S02193.coding +++| the form =Xname. In an absolute assembly, references to locations 02197 M00S02194.coding +++| in other overlays use the form =Xname. 02198 M00S02195.coding +++| 02199 M00S02196.coding +++| 02200 M00S02197.coding +++|1 PAGE 44 02201 M00S02198.coding +++| 02202 M00S02199.coding +++| 02203 M00S02200.coding +++| 3.6.3 SPACE CARD FORMAT 02204 M00S02201.coding +++| 02205 M00S02202.coding +++| The format of the SPACE pseudo instruction is: 02206 M00S02203.coding +++| 02207 M00S02204.coding +++| tag SPACE 4,n 02208 M00S02205.coding +++| 02209 M00S02206.coding +++| where: 02210 M00S02207.coding +++| 02211 M00S02208.coding +++| tag =table, macro or subroutine name 02212 M00S02209.coding +++| n =statement count 02213 M00S02210.coding +++| 02214 M00S02211.coding +++| The statement count is a multiple of 5 that is greater or equal to 02215 M00S02212.coding +++| 10. It should be large enough to avoid breaking documentation 02216 M00S02213.coding +++| across page boundaries. 02217 M00S02214.coding +++| 02218 M00S02215.coding +++| 02219 M00S02216.coding +++| 3.6.4 CONDITIONAL CODE 02220 M00S02217.coding +++| 02221 M00S02218.coding +++| Numeric skip counts are discouraged with IF, IFC, ELSE, etc., 02222 M00S02219.coding +++| because this makes code difficult to read (especially when the 02223 M00S02220.coding +++| skipped lines are not listed). ENDIF should be used instead. An 02224 M00S02221.coding +++| exception is allowed for very short sequences and for systems texts 02225 M00S02222.coding +++| where space is critical. 02226 M00S02223.coding +++| 02227 M00S02224.coding +++| Conditional sequences should be bracketed with labels (refer to 02228 M00S02225.coding +++| section 3.5.5) which allows them to be easily spotted and matched in 02229 M00S02226.coding +++| listings. 02230 M00S02227.coding +++| 02231 M00S02228.coding +++| When either end of a sequence of conditional code occurs at a break 02232 M00S02229.coding +++| in the listing (SPACE, TITLE, or blank lines), the spacing lines 02233 M00S02230.coding +++| should be placed so that spacing will be correct whether the test is 02234 M00S02231.coding +++| true or false. Usually this means moving the spacing outside the 02235 M00S02232.coding +++| conditional code. 02236 M00S02233.coding +++| 02237 M00S02234.coding +++| Example: 02238 M00S02235.coding +++| . 02239 M00S02236.coding +++| . 02240 M00S02237.coding +++| . 02241 M00S02238.coding +++| EQ TAG1 CONTINUE 02242 M00S02239.coding +++| (blank line) (outside conditional code) 02243 M00S02240.coding +++| .A IFC EQ,*"SYSTEM"*SCOPE* 02244 M00S02241.coding +++| TAG3 CONTROL TAGA,R READ COMMAND 02245 M00S02242.coding +++| EQ TAGX RETURN 02246 M00S02243.coding +++| (blank line) 02247 M00S02244.coding +++| TAGA BSS 8 COMMAND BUFFER 02248 M00S02245.coding +++| .A ELSE 02249 M00S02246.coding +++| TAG3 CONTROL CCDR READ COMMAND 02250 M00S02247.coding +++| EQ TAGX RETURN 02251 M00S02248.coding +++| .A ENDIF 02252 M00S02249.coding +++| ABC SPACE 4,10 (outside conditional code) 02253 M00S02250.coding +++| 02254 M00S02251.coding +++|1 PAGE 45 02255 M00S02252.coding +++| 02256 M00S02253.coding +++| 02257 M00S02254.coding +++| 3.6.5 MACROS 02258 M00S02255.coding +++| 02259 M00S02256.coding +++| Macro definitions should include a description of how the macro is 02260 M00S02257.coding +++| called and a description of all formal parameters. (Refer to 02261 M00S02258.coding +++| section 2.5.) 02262 M00S02259.coding +++| 02263 M00S02260.coding +++| The PURGMAC psuedo instruction should be used to disable any 02264 M00S02261.coding +++| previous macro definitions of the same name. 02265 M00S02262.coding +++| 02266 M00S02263.coding +++| Non-local symbol definitions should be of the form .n (see section 02267 M00S02264.coding +++| 3.5.6). 02268 M00S02265.coding +++| 02269 M00S02266.coding +++| To avoid terminating multiple macro definitions, the ENDM 02270 M00S02267.coding +++| instruction should be labeled with the macro name. 02271 M00S02268.coding +++| 02272 M00S02269.coding +++| The MACREF macro (defined in SYSTEXT) may be included within the 02273 M00S02270.coding +++| macro definition body to provide symbolic reference table listing of 02274 M00S02271.coding +++| the calls of the macro. 02275 M00S02272.coding +++| 02276 M00S02273.coding +++| The SYSTEM XXX,= macro (defined in CPCOM) should be used for cross 02277 M00S02274.coding +++| referencing of CP programs calling PP programs without a standard 02278 M00S02275.coding +++| interface (Examples: CPUMTR calling 1MA, MAGNET calling 1MT via SPC 02279 M00S02276.coding +++| call). 02280 M00S02277.coding +++| 02281 M00S02278.coding +++| The EXECUTE XXX,= macro (defined in COMPMAC) should be used for 02282 M00S02279.coding +++| cross referencing of PP programs calling PP programs or overlays 02283 M00S02280.coding +++| without a standard interface. 02284 M00S02281.coding +++| 02285 M00S02282.coding +++| When space is critical, as in systems texts, the following list of 02286 M00S02283.coding +++| column numbers represent the beginning of each field in a COMPASS 02287 M00S02284.coding +++| coding line to be used in a macro definition. 02288 M00S02285.coding +++| 02289 M00S02286.coding +++| Column 2 = location field 02290 M00S02287.coding +++| column 3 = operation field 02291 M00S02288.coding +++| column 6 = address field 02292 M00S02289.coding +++| column 73 = reserved 02293 M00S02290.coding +++| 02294 M00S02291.coding +++| If a field is full or overflows into an adjacent field, then one 02295 M00S02292.coding +++| space should separate the fields. If comments are required, they 02296 M00S02293.coding +++| should appear as stand-alone comments rather than embedded comments. 02297 M00S02294.coding +++| 02298 M00S02295.coding +++| 02299 M00S02296.coding +++| 3.6.6 DIS PSEUDO INSTRUCTION 02300 M00S02297.coding +++| 02301 M00S02298.coding +++| The DIS pseudo instruction should not be used to generate data since 02302 M00S02299.coding +++| the syntax of the instruction determines the format of the data. 02303 M00S02300.coding +++| The DATA psuedo instruction should be used instead. 02304 M00S02301.coding +++| 02305 M00S02302.coding +++| 02306 M00S02303.coding +++|1 PAGE 46 02307 M00S02304.coding +++| 02308 M00S02305.coding +++| 02309 M00S02306.coding +++| 3.7 TESTS FOR OVERFLOW 02310 M00S02307.coding +++| 02311 M00S02308.coding +++| CPU and PP programs should contain assembly checks for certain types 02312 M00S02309.coding +++| of overflow conditions. The following points should be considered 02313 M00S02310.coding +++| when making the checks. 02314 M00S02311.coding +++| 02315 M00S02312.coding +++| PP programs and overlays are generated by COMPASS in multiples 02316 M00S02313.coding +++| of 5 PP bytes (1 CM word). Therefore, when reading an overlay 02317 M00S02314.coding +++| from central memory to PP memory, more PP bytes may be 02318 M00S02315.coding +++| destroyed than the actual number of bytes of PP code. 02319 M00S02316.coding +++| 02320 M00S02317.coding +++| Overlays loaded from mass storage to PP memory come in 02321 M00S02318.coding +++| multiplies of 500 PP bytes. At least 5 bytes of the last PRU 02322 M00S02319.coding +++| are required to represent end of record which can increase the 02323 M00S02320.coding +++| size of the overlay by one PRU (500 bytes). 02324 M00S02321.coding +++| 02325 M00S02322.coding +++| Care should be taken to insure that the literals block has been 02326 M00S02323.coding +++| defined before checking for the overflow conditions. Literals 02327 M00S02324.coding +++| can be flushed by specifying: 02328 M00S02325.coding +++| 02329 M00S02326.coding +++| USE (name) 02330 M00S02327.coding +++| USE * 02331 M00S02328.coding +++| 02332 M00S02329.coding +++| 02333 M00S02330.coding +++| The OVERFLOW macro (defined in COMPMAC) may be used to perform these 02334 M00S02331.coding +++| checks. 02335 M00S02332.coding +++| 02336 M00S02333.coding +++| 02337 M00S02334.coding +++| 3.7.1 CM LOADS 02338 M00S02335.coding +++| 02339 M00S02336.coding +++| All PP programs include a test for the amount of core remaining 02340 M00S02337.coding +++| after a CM load as shown in the following example: 02341 M00S02338.coding +++| 02342 M00S02339.coding +++| USE OVERFLOW 02343 M00S02340.coding +++| xxx BSS 0 02344 M00S02341.coding +++| ERRNG 7772-xxx PP MEMORY OVERFLOW 02345 M00S02342.coding +++| 02346 M00S02343.coding +++| Where: 02347 M00S02344.coding +++| 02348 M00S02345.coding +++| xxx =tag for the last location defined 02349 M00S02346.coding +++| 02350 M00S02347.coding +++| 02351 M00S02348.coding +++| 3.7.2 TABLE OVERFLOW 02352 M00S02349.coding +++| 02353 M00S02350.coding +++| If a PP program uses more storage than it declares, its length is 02354 M00S02351.coding +++| checked as shown in the following example: 02355 M00S02352.coding +++| 02356 M00S02353.coding +++| USE OVERFLOW 02357 M00S02354.coding +++| xxx BSS 0 02358 M00S02355.coding +++| xxxE EQU xxx+xxxL 02359 M00S02356.coding +++| ERRNG 7777-xxxE PROGRAM OVERFLOW 02360 M00S02357.coding +++| 02361 M00S02358.coding +++|1 PAGE 47 02362 M00S02359.coding +++| 02363 M00S02360.coding +++| 02364 M00S02361.coding +++| Where: 02365 M00S02362.coding +++| 02366 M00S02363.coding +++| xxx = tag for the last location defined 02367 M00S02364.coding +++| xxxL = length of undeclared space 02368 M00S02365.coding +++| xxxE = end of space used 02369 M00S02366.coding +++| 02370 M00S02367.coding +++| 02371 M00S02368.coding +++| 3.7.3 MASS STORAGE LOADS 02372 M00S02369.coding +++| 02373 M00S02370.coding +++| A test will be included in each PP program which may reside on mass 02374 M00S02371.coding +++| storage. This test will protect against a load which exceeds the 02375 M00S02372.coding +++| end of memory in the PP causing wrap around. The "OVERFLOW" macro 02376 M00S02373.coding +++| is available in COMPMAC for this operation. 02377 M00S02374.coding +++| 02378 M00S02375.coding +++| 02379 M00S02376.coding +++| 3.7.4 OVERLAY LOADS 02380 M00S02377.coding +++| 02381 M00S02378.coding +++| Programs calling overlays should test for memory overflow with the 02382 M00S02379.coding +++| following test: 02383 M00S02380.coding +++| ERRNG (lwa+1)-(load addr)-len comment 02384 M00S02381.coding +++| where: 02385 M00S02382.coding +++| 02386 M00S02383.coding +++| 1wa+1 = first byte not to be destroyed by the zero level 02387 M00S02384.coding +++| overlay 02388 M00S02385.coding +++| load addr = address where the overlay is loaded 02389 M00S02386.coding +++| len = length of overlay 02390 M00S02387.coding +++| 02391 M00S02388.coding +++| The length of an overlay is defined to be the number of bytes 02392 M00S02389.coding +++| destroyed by the overlay during loading and execution. The overlay 02393 M00S02390.coding +++| should also contain a test to insure that it does not exceed its 02394 M00S02391.coding +++| defined length. The overlay length can be adjusted to a higher or 02395 M00S02392.coding +++| smaller value as long as none of the tests fail. The "OVERFLOW" 02396 M00S02393.coding +++| macro is available in COMPMAC for this operation. 02397 M00S02394.coding +++| 02398 M00S02395.coding +++| 02399 M00S02396.coding +++| 3.8 RELOCATABLE CPU CODE 02400 M00S02397.coding +++| 02401 M00S02398.coding +++| The first word of a relocatable CPU program should be of the format: 02402 M00S02399.coding +++| 02403 M00S02400.coding +++| 42/0LDECK, 18/ADDR 02404 M00S02401.coding +++| 02405 M00S02402.coding +++| where: 02406 M00S02403.coding +++| 02407 M00S02404.coding +++| DECK = deck name 02408 M00S02405.coding +++| ADDR = entry address of program 02409 M00S02406.coding +++| 02410 M00S02407.coding +++| This word is used to locate the first word address and entry point 02411 M00S02408.coding +++| of a routine in a CM dump. 02412 M00S02409.coding +++| 02413 M00S02410.coding +++| The contents of A0 must never be used in a library level routine 02414 M00S02411.coding +++| unless it is saved and restored. A0 is used by FTN as a base 02415 M00S02412.coding +++| register for formal parameters in subroutine linkages. 02416 M00S02413.coding +++| 02417 M00S02414.coding +++|1 PAGE 48 02418 M00S02415.coding +++| 02419 M00S02416.coding +++| 02420 M00S02417.coding +++| 3.9 ROUTINE/SUBROUTINE COMPLEXITY 02421 M00S02418.coding +++| 02422 M00S02419.coding +++| In this context, the term "complexity" is used in its formal sense; 02423 M00S02420.coding +++| that is, a sense of the structural incoherence (entropy) of a 02424 M00S02421.coding +++| routine. The more complex a routine is, the more liable it is to be 02425 M00S02422.coding +++| a source of errors, difficult to implement, and worse to modify or 02426 M00S02423.coding +++| correct. There are no hard and fast rules for gauging the 02427 M00S02424.coding +++| complexity of a routine, but it can be said in general that the 02428 M00S02425.coding +++| longer it is, the more decisions it makes (branches), and the more 02429 M00S02426.coding +++| functions it performs, the more complex and unreliable it tends to 02430 M00S02427.coding +++| be. 02431 M00S02428.coding +++| 02432 M00S02429.coding +++| In order to reduce complexity, the following guidelines are to be 02433 M00S02430.coding +++| followed whenever possible (i.e., not impossible). 02434 M00S02431.coding +++| 02435 M00S02432.coding +++| 1. One routine - one function. Each routine should have one 02436 M00S02433.coding +++| clearly defined function. 02437 M00S02434.coding +++| 02438 M00S02435.coding +++| 2. 10-Tag rule. If there are more than 10 branching locations 02439 M00S02436.coding +++| within a routine, it is most likely attempting to perform 02440 M00S02437.coding +++| too many functions (see 1 above). It should be considered a 02441 M00S02438.coding +++| candidate to be broken up into functional units. 02442 M00S02439.coding +++| 02443 M00S02440.coding +++| 3. Code Modification. Minimize within routines, avoid between 02444 M00S02441.coding +++| routines. If used between routines, document thoroughly. 02445 M00S02442.coding +++| 02446 M00S02443.coding +++| 4. Hidden Variables. Data placed in a register with the hope 02447 M00S02444.coding +++| of being used at some later time often may not survive to 02448 M00S02445.coding +++| its destination. Consider global variables for 02449 M00S02446.coding +++| inter-routine communication, especially when there are one 02450 M00S02447.coding +++| or more routines intervening. In any case, all exit 02451 M00S02448.coding +++| conditions from a routine must be documented. 02452 M00S02449.coding +++| 02453 M00S02450.coding +++| 5. Code for the Future. Always consider the implications of 02454 M00S02451.coding +++| debugging, modification, and maintenance; structure code to 02455 M00S02452.coding +++| make these tasks easier. 02456 M00S02453.coding +++| 02457 M00S02454.coding +++| 02458 M00S02455.coding +++| 4.0 MISCELLANEOUS 02459 M00S02456.coding +++| 02460 M00S02457.coding +++| 02461 M00S02458.coding +++| 4.1 PROGRAM NAMING 02462 M00S02459.coding +++| 02463 M00S02460.coding +++| 02464 M00S02461.coding +++| 4.1.1 LENGTH OF PROGRAM NAME 02465 M00S02462.coding +++| 02466 M00S02463.coding +++| Peripheral processor program names are 3 characters long. 02467 M00S02464.coding +++| 02468 M00S02465.coding +++| Central Processor program names are 4 to 7 characters long. 02469 M00S02466.coding +++| 02470 M00S02467.coding +++| 02471 M00S02468.coding +++|1 PAGE 49 02472 M00S02469.coding +++| 02473 M00S02470.coding +++| 02474 M00S02471.coding +++| 4.1.2 RESERVED NAMES 02475 M00S02472.coding +++| 02476 M00S02473.coding +++| The following PP program names are reserved or presently defined for 02477 M00S02474.coding +++| use (x means any character legal in a PP program name and n means 02478 M00S02475.coding +++| any number between 0 - 9): 02479 M00S02476.coding +++| 02480 M00S02477.coding +++| Uxx Reserved for installations 02481 M00S02478.coding +++| nUx Reserved for installations 02482 M00S02479.coding +++| 9AA-9T9 Reserved for system use 02483 M00S02480.coding +++| 9VA-9Z9 Reserved for system use 02484 M00S02481.coding +++| 90A-929 Reserved for diagnostics 02485 M00S02482.coding +++| 93A-939 Reserved for system use 02486 M00S02483.coding +++| 02487 M00S02484.coding +++| The following names are currently used by NOS: 02488 M00S02485.coding +++| 02489 M00S02486.coding +++| 6xx Callable mass storage drivers 02490 M00S02487.coding +++| 7xx Mass storage error processing overlays 02491 M00S02488.coding +++| 9AA-9D9 DSD overlays 02492 M00S02489.coding +++| 9EA-9F9 DIS overlays 02493 M00S02490.coding +++| 9GA-9G9 O26 overlays 02494 M00S02491.coding +++| 0xx Location free overlays 02495 M00S02492.coding +++| 0Cx Controlware identification processors 02496 M00S02493.coding +++| 0Px Pack number identification processors 02497 M00S02494.coding +++| 0Tx Automatic track flaw processors 02498 M00S02495.coding +++| UxxL PPCOM symbol - reserved for installations 02499 M00S02496.coding +++| UxxM PPCOM symbol - reserved for installations 02500 M00S02497.coding +++| UxxN PPCOM symbol - reserved for installations 02501 M00S02498.coding +++| UxxP PPCOM symbol - reserved for installations 02502 M00S02499.coding +++| UxxW PPCOM symbol - reserved for installations 02503 M00S02500.coding +++| 02504 M00S02501.coding +++| In general, tags beginning with U should not be used as tags in 02505 M00S02502.coding +++| NOSTEXT, COMSXXX decks, etc. or as macro names in COMCMAC, COMPMAC, 02506 M00S02503.coding +++| etc. These tags should be reserved for installation use. 02507 M00S02504.coding +++| 02508 M00S02505.coding +++| 02509 M00S02506.coding +++| 4.1.3 COMMON DECK NAMES 02510 M00S02507.coding +++| 02511 M00S02508.coding +++| Common deck names are seven characters in length and in the 02512 M00S02509.coding +++| following form: 02513 M00S02510.coding +++| 02514 M00S02511.coding +++| COMxaaa 02515 M00S02512.coding +++| 02516 M00S02513.coding +++|1 PAGE 50 02517 M00S02514.coding +++| 02518 M00S02515.coding +++| 02519 M00S02516.coding +++| where: 02520 M00S02517.coding +++| 02521 M00S02518.coding +++| aaa = The name of the routine or a symbolic name if no 02522 M00S02519.coding +++| routine name. 02523 M00S02520.coding +++| X = One of the following common deck indicators: 02524 M00S02521.coding +++| C = CPU code 02525 M00S02522.coding +++| P = PP code 02526 M00S02523.coding +++| S = Subsystem text symbols, constants etc. 02527 M00S02524.coding +++| D = Display driver code 02528 M00S02525.coding +++| T = Tables 02529 M00S02526.coding +++| M = Mass storage error equivalents 02530 M00S02527.coding +++| B = Data manager 02531 M00S02528.coding +++| K = Transaction subsystem 02532 M00S02529.coding +++| I = Initialization 02533 M00S02530.coding +++| 02534 M00S02531.coding +++| The following indicators are reserved for SYMPL common decks: A, E, 02535 M00S02532.coding +++| U, Z. 02536 M00S02533.coding +++| 02537 M00S02534.coding +++| 02538 M00S02535.coding +++| 4.2 CODE TRANSMITTAL RULES 02539 M00S02536.coding +++| 02540 M00S02537.coding +++| Code which is to be integrated into a system build for eventual 02541 M00S02538.coding +++| release to the field is identified and formatted as described in 02542 M00S02539.coding +++| this section. 02543 M00S02540.coding +++| 02544 M00S02541.coding +++| 02545 M00S02542.coding +++| 4.2.1 GENERAL RULES 02546 M00S02543.coding +++| 02547 M00S02544.coding +++| Each external PSR being answered has a corresponding corrective code 02548 M00S02545.coding +++| identifier (to be described later). Corrective code answering other 02549 M00S02546.coding +++| PSRs is not included in the modification under this identifier. 02550 M00S02547.coding +++| Exceptions are allowed where required by interrelated modifications 02551 M00S02548.coding +++| for several PSRs. 02552 M00S02549.coding +++| 02553 M00S02550.coding +++| Corrections are placed in ascending numerical order; i. e., the 02554 M00S02551.coding +++| corrections are sorted in the same order that the lines being 02555 M00S02552.coding +++| corrected appear on the program library. If a single modification 02556 M00S02553.coding +++| changes several decks, then the corrections are also sorted in the 02557 M00S02554.coding +++| order that the decks appear on the program library. 02558 M00S02555.coding +++| 02559 M00S02556.coding +++| Corrections modifying lines with previously modified sequence 02560 M00S02557.coding +++| numbers include the line number of the nearest preceding original 02561 M00S02558.coding +++| line in parenthesis in the comments field of the modify directive. 02562 M00S02559.coding +++| 02563 M00S02560.coding +++| 02564 M00S02561.coding +++| 4.2.2 MODSET FORMAT 02565 M00S02562.coding +++| 02566 M00S02563.coding +++|1 PAGE 51 02567 M00S02564.coding +++| 02568 M00S02565.coding +++| 02569 M00S02566.coding +++| 4.2.2.1 MODSET IDENTIFIER 02570 M00S02567.coding +++| 02571 M00S02568.coding +++| Separate modset name lists are maintained for NOS 1 (R5.5) and NOS 2 02572 M00S02569.coding +++| (R6.0). Processes for naming modsets are identical, except for 02573 M00S02570.coding +++| multiple deck modsets (NS1xxx and NS2xxx), documentation modsets 02574 M00S02571.coding +++| (DOK1xxx and DOK2xxx), and release feature modsets (FN1xxx and 02575 M00S02572.coding +++| FN2xxx). A modset named 1CD4 in NOS 1, for example, has no 02576 M00S02573.coding +++| relationship to modset 1CD4 in NOS2. 02577 M00S02574.coding +++| 02578 M00S02575.coding +++| You should not sign up for a modset name until after code has been 02579 M00S02576.coding +++| generated and tested, and depending on the size of the modset, even 02580 M00S02577.coding +++| after code review has taken place. This allows other analysts 02581 M00S02578.coding +++| submitting code to get the next available modset name. You should 02582 M00S02579.coding +++| not request modset names for modsets not to be included in the 02583 M00S02580.coding +++| current series of builds; you should not request feature modset 02584 M00S02581.coding +++| names for a future release until feature code for the current 02585 M00S02582.coding +++| release is complete. If you sign up for a modset name and don't use 02586 M00S02583.coding +++| it, notify Code Control so that the modset name can be used by 02587 M00S02584.coding +++| someone else. 02588 M00S02585.coding +++| 02589 M00S02586.coding +++| The modset name consists of three to five alphanumeric characters 02590 M00S02587.coding +++| which are extracted from the deck name followed by a 1 to 3 digit 02591 M00S02588.coding +++| sequence number. The modset name cannot exceed 7 characters. 02592 M00S02589.coding +++| 02593 M00S02590.coding +++| 1. For common decks that begin with "COM" use the last four 02594 M00S02591.coding +++| characters of the name (example - CMAC4 is a modset in deck 02595 M00S02592.coding +++| COMCMAC). 02596 M00S02593.coding +++| 02597 M00S02594.coding +++| 2. For PP programs use the three character program name (example - 02598 M00S02595.coding +++| CPM2 is a modset in deck CPM). 02599 M00S02596.coding +++| 02600 M00S02597.coding +++| 3. All other decks use the first five characters of the deck name; 02601 M00S02598.coding +++| if the deck name is less than six characters use the entire deck 02602 M00S02599.coding +++| name (example - LIBED2 is a modset in deck LIBEDIT). 02603 M00S02600.coding +++| 02604 M00S02601.coding +++| 4. Modifications which involve multiple decks are given the modset 02605 M00S02602.coding +++| name: 02606 M00S02603.coding +++| NS1xxx if NOS 1, 02607 M00S02604.coding +++| NS2xxx if NOS 2. 02608 M00S02605.coding +++| 02609 M00S02606.coding +++| Example - NS1001 is a multiple deck modset in NOS 1. 02610 M00S02607.coding +++| NS2001 is a multiple deck modset in NOS 2. 02611 M00S02608.coding +++| 02612 M00S02609.coding +++| 5. Modifications which only correct documentation within a deck are 02613 M00S02610.coding +++| gathered together for each corrective code release and given the 02614 M00S02611.coding +++| modset name: 02615 M00S02612.coding +++| DOK1xxx if NOS 1, 02616 M00S02613.coding +++| DOK2xxx if NOS 2. 02617 M00S02614.coding +++| 02618 M00S02615.coding +++| Example - DOK1006 is a NOS 1 modset. 02619 M00S02616.coding +++| DOK2006 is a NOS 2 modset. 02620 M00S02617.coding +++| 02621 M00S02618.coding +++|1 PAGE 52 02622 M00S02619.coding +++| 02623 M00S02620.coding +++| 02624 M00S02621.coding +++| This does not include lines of code which have documentation 02625 M00S02622.coding +++| changes in them. 02626 M00S02623.coding +++| 02627 M00S02624.coding +++| 6. If a modset is adding a new feature, the feature modset name for 02628 M00S02625.coding +++| each deck modified is obtained from NOS Code Control. 02629 M00S02626.coding +++| 02630 M00S02627.coding +++| 7. Upon release of the system, a "composite" modset is generated 02631 M00S02628.coding +++| from all feature code which is to be released. 02632 M00S02629.coding +++| 02633 M00S02630.coding +++| 02634 M00S02631.coding +++| 4.2.2.2 MODSET CORRECTION LETTER 02635 M00S02632.coding +++| 02636 M00S02633.coding +++| When a modset is correcting a previous modset, one alphabetic 02637 M00S02634.coding +++| character (starting with A) will be appended to the sequence 02638 M00S02635.coding +++| number. Whenever a modset correction letter of "B" or above is 02639 M00S02636.coding +++| required, the comments header of the modset must indicate which 02640 M00S02637.coding +++| previous modset is being corrected. 02641 M00S02638.coding +++| 02642 M00S02639.coding +++| 02643 M00S02640.coding +++| 4.2.2.3 OVERFLOW 02644 M00S02641.coding +++| 02645 M00S02642.coding +++| Whenever a modset identifier using the above conventions exceeds 02646 M00S02643.coding +++| seven characters, truncate the last character(s) of the deck name to 02647 M00S02644.coding +++| reduce the identifier to seven characters. 02648 M00S02645.coding +++| 02649 M00S02646.coding +++| 02650 M00S02647.coding +++| 4.2.2.4 MODSET EXAMPLE 02651 M00S02648.coding +++| 02652 M00S02649.coding +++| The following format is used for corrective code modsets: 02653 M00S02650.coding +++| 02654 M00S02651.coding +++| 1 11 18 30 (column numbers) 02655 M00S02652.coding +++| +-------+---------+--------------+ 02656 M00S02653.coding +++| 02657 M00S02654.coding +++| ident 02658 M00S02655.coding +++| *IDENT ident initials. yy/mm/dd. 02659 M00S02656.coding +++| */ **** system. 02660 M00S02657.coding +++| */ **** PSR number. 02661 M00S02658.coding +++| */ **** REQUIRES - modset. 02662 M00S02659.coding +++| */ ***** PROBLEM - problem description. 02663 M00S02660.coding +++| */ (continuation of problem description). 02664 M00S02661.coding +++| */ 02665 M00S02662.coding +++| */ SOLUTION - solution description. 02666 M00S02663.coding +++| */ (continuation of solution description). 02667 M00S02664.coding +++| */ 02668 M00S02665.coding +++| */ ***** RESUBMITTAL - yy/mm/dd. 02669 M00S02666.coding +++| */ Reason for resubmittal. 02670 M00S02667.coding +++| *DECK deckname 02671 M00S02668.coding +++| *I,sequence number 02672 M00S02669.coding +++| *D,sequence number 02673 M00S02670.coding +++| *D,modname.sequence number (nearest original seq. no.) 02674 M00S02671.coding +++| *EDIT deckname (if common deck) 02675 M00S02672.coding +++| */ END OF MODSET. 02676 M00S02673.coding +++| 02677 M00S02674.coding +++|1 PAGE 53 02678 M00S02675.coding +++| 02679 M00S02676.coding +++| 02680 M00S02677.coding +++| Where: 02681 M00S02678.coding +++| 02682 M00S02679.coding +++| ident = Modset name. 02683 M00S02680.coding +++| 02684 M00S02681.coding +++| initials = Initials of the analyst(s) who wrote and/or 02685 M00S02682.coding +++| tested the code. Example - ABC. (one 02686 M00S02683.coding +++| analyst) ABC/ADD. (two analysts) 02687 M00S02684.coding +++| 02688 M00S02685.coding +++| yy/mm/dd = Date of last modset change. 02689 M00S02686.coding +++| 02690 M00S02687.coding +++| system = Name of system in which the modset will be 02691 M00S02688.coding +++| released. (ie - NOS 1 OS. Or NOS 2 OS.) 02692 M00S02689.coding +++| 02693 M00S02690.coding +++| PSR number = This line must always be present. If more 02694 M00S02691.coding +++| than one PSR is answered, list the PSR 02695 M00S02692.coding +++| numbers on separate lines. If no PSR is 02696 M00S02693.coding +++| involved, use the phrase: NO PSR. 02697 M00S02694.coding +++| 02698 M00S02695.coding +++| modset = The REQUIRES lines must always be present. 02699 M00S02696.coding +++| If more than one modset is required (direct 02700 M00S02697.coding +++| or indirect dependency), list the modsets on 02701 M00S02698.coding +++| separate lines. If no dependency is 02702 M00S02699.coding +++| involved, use the phrase: NONE. 02703 M00S02700.coding +++| 02704 M00S02701.coding +++| Since mods to mods in the same release are not allowed for PSR code 02705 M00S02702.coding +++| (physically dependent code must be in the same modset), the REQUIRES 02706 M00S02703.coding +++| should specify modsets with logical or space dependencies. Modsets 02707 M00S02704.coding +++| previously released in a standard system usually should not be 02708 M00S02705.coding +++| included. For initial transmittal of feature code, REQUIRES - NONE 02709 M00S02706.coding +++| should be used. For feature repair code, the REQUIRES should 02710 M00S02707.coding +++| specify those modsets going into the same build that are dependent 02711 M00S02708.coding +++| on each other. 02712 M00S02709.coding +++| 02713 M00S02710.coding +++| The problem description should describe the problem being fixed by 02714 M00S02711.coding +++| the modset and the impact the problem has on the user. The solution 02715 M00S02712.coding +++| description should describe how the problem was fixed. External 02716 M00S02713.coding +++| interface changes caused by the installation of the modset should 02717 M00S02714.coding +++| also be documented. The problem/solution description may be 02718 M00S02715.coding +++| combined into one paragraph to avoid redundancy. 02719 M00S02716.coding +++| 02720 M00S02717.coding +++| The *READPL directive is not used. 02721 M00S02718.coding +++| 02722 M00S02719.coding +++| 02723 M00S02720.coding +++| 4.3 INTERFACE CONSIDERATIONS 02724 M00S02721.coding +++| 02725 M00S02722.coding +++| 02726 M00S02723.coding +++|1 PAGE 54 02727 M00S02724.coding +++| 02728 M00S02725.coding +++| 02729 M00S02726.coding +++| 4.3.1 SYSTEM SUPPLIED INTERFACES 02730 M00S02727.coding +++| 02731 M00S02728.coding +++| All interactions between programs (CPU and PP) and the system use 02732 M00S02729.coding +++| system-supplied macros, linkage labels or common decks. In PP 02733 M00S02730.coding +++| programs the system defined direct cells are only used as defined by 02734 M00S02731.coding +++| the system. (see section 3.5.3.1) 02735 M00S02732.coding +++| 02736 M00S02733.coding +++| 02737 M00S02734.coding +++| 4.3.2 PARAMETER VALIDATION 02738 M00S02735.coding +++| 02739 M00S02736.coding +++| Each parameter passed between programs will be validated or 02740 M00S02737.coding +++| processed in a way that protects the program from uncontrolled 02741 M00S02738.coding +++| actions caused by unexpected values. 02742 M00S02739.coding +++| 02743 M00S02740.coding +++| 02744 M00S02741.coding +++| 4.3.3 MEMORY ACCESS 02745 M00S02742.coding +++| 02746 M00S02743.coding +++| PP programs which access the field length of a job will insure that 02747 M00S02744.coding +++| no combination of parameters, errors, etc. will cause access to an 02748 M00S02745.coding +++| address outside of that field length. Addresses should be validated 02749 M00S02746.coding +++| prior to using them for a CM read or write to avoid referencing 02750 M00S02747.coding +++| areas of memory outside of the control points field length. 02751 M00S02748.coding +++| 02752 M00S02749.coding +++| A PP program accessing the field length of a control point should 02753 M00S02750.coding +++| insure the relative address does not exceed 377777B. 02754 M00S02751.coding +++| 02755 M00S02752.coding +++| 02756 M00S02753.coding +++| 4.3.4 SECURITY 02757 M00S02754.coding +++| 02758 M00S02755.coding +++| Programs that perform privileged functions must insure that the 02759 M00S02756.coding +++| requester of the function has been given permission by the system to 02760 M00S02757.coding +++| use the function. This also applies to the use of special device 02761 M00S02758.coding +++| drivers, which could be called accidentally or maliciously by 02762 M00S02759.coding +++| unauthorized users. Where common decks are available to check 02763 M00S02760.coding +++| security or privileges, they should be used rather than locally 02764 M00S02761.coding +++| written code. 02765 M00S02762.coding +++| 02766 M00S02763.coding +++| 02767 M00S02764.coding +++| 4.3.5 RESERVATIONS AND INTERLOCKS 02768 M00S02765.coding +++| 02769 M00S02766.coding +++| Reservations and interlocks are only used as defined by the system 02770 M00S02767.coding +++| and are released as soon as possible. Non-essential code is not 02771 M00S02768.coding +++| executed while a reservation or interlock is in effect. 02772 M00S02769.coding +++| 02773 M00S02770.coding +++| In cases where a reservation reject could occur, the program will: 02774 M00S02771.coding +++| 02775 M00S02772.coding +++| 1. Control the rate of reservation re-issue. 02776 M00S02773.coding +++| 2. Detect and respond to error conditions. 02777 M00S02774.coding +++| 3. Protect against storage move lockup. 02778 M00S02775.coding +++| 02779 M00S02776.coding +++|1 PAGE 55 02780 M00S02777.coding +++| 02781 M00S02778.coding +++| 02782 M00S02779.coding +++| Programs which use reservations and interlocks will insure that the 02783 M00S02780.coding +++| conditions are released no matter what program path is taken. 02784 M00S02781.coding +++| 02785 M00S02782.coding +++| When multiple interlocks are required, all programs in the operating 02786 M00S02783.coding +++| system must request the interlocks in the same order. When a reject 02787 M00S02784.coding +++| occurs when attempting to obtain such interlocks, all reservations 02788 M00S02785.coding +++| held must be released and the entire sequence of interlocking must 02789 M00S02786.coding +++| begin again. 02790 M00S02787.coding +++| 02791 M00S02788.coding +++| Care must be taken to not issue dayfile messages, load overlays, or 02792 M00S02789.coding +++| pause with non-dedicated channel(s) reserved. 02793 M00S02790.coding +++| 02794 M00S02791.coding +++| A PP program must not have a disk channel reserved when it attempts 02795 M00S02792.coding +++| to do an STBM or AFAM monitor function. If necessary, a ENDMS 02796 M00S02793.coding +++| should be performed to ensure this. 02797 M00S02794.coding +++| 02798 M00S02795.coding +++| 02799 M00S02796.coding +++| 4.3.6 DOCUMENTING HARDWARE DEFICIENCIES 02800 M00S02797.coding +++| 02801 M00S02798.coding +++| Instructions which are included to compensate for hardware 02802 M00S02799.coding +++| deficiencies are documented with a brief description or 02803 M00S02800.coding +++| identification of the deficiency. 02804 M00S02801.coding +++| 02805 M00S02802.coding +++| 02806 M00S02803.coding +++| 4.3.7 NEW FUNCTION/LOW CORE IDENTIFIERS 02807 M00S02804.coding +++| 02808 M00S02805.coding +++| New tags in PPCOM, use of previously reserved fields in CMR and CPA, 02809 M00S02806.coding +++| new PP function numbers, new monitor function numbers, etc. must be 02810 M00S02807.coding +++| signed up for via the DSO (Design Support Office). 02811 M00S02808.coding +++| 02812 M00S02809.coding +++| 02813 M00S02810.coding +++| 4.3.8 DECK INTERDEPENDENCIES 02814 M00S02811.coding +++| 02815 M00S02812.coding +++| Beware of deck interdependencies which may require additional 02816 M00S02813.coding +++| code/modsets, such as PPCOM and COMSXXX changes affecting DSDI, DIS 02817 M00S02814.coding +++| changes that should also be made in XIS, and COMCXXX/COMDXXX/COMPXXX/ 02818 M00S02815.coding +++| COMSXXX/COMTXXX, etc. changes causing CALLCPU/CALLDIS/CALLPPU/ 02819 M00S02816.coding +++| CALLSYS/CALLTAB, etc. to not assemble without lots of errors. 02820 M00S02817.coding +++| 02821 M00S02818.coding +++| 02822 M00S02819.coding +++| 4.4 MODULARITY 02823 M00S02820.coding +++| 02824 M00S02821.coding +++| 02825 M00S02822.coding +++| 4.4.1 PP OVERLAYS 02826 M00S02823.coding +++| 02827 M00S02824.coding +++| PP Programs use overlays whenever possible to improve the long range 02828 M00S02825.coding +++| performance of the system. Overlays are used for any seldom 02829 M00S02826.coding +++| executed code such as error handling and seldom used features. 02830 M00S02827.coding +++| 02831 M00S02828.coding +++| 02832 M00S02829.coding +++|1 PAGE 56 02833 M00S02830.coding +++| 02834 M00S02831.coding +++| 02835 M00S02832.coding +++| 4.4.2 HELPER PP-S 02836 M00S02833.coding +++| 02837 M00S02834.coding +++| Helper PPs are not used unless no other method exists. The 02838 M00S02835.coding +++| availability of PPs when needed should be considered, since the use 02839 M00S02836.coding +++| of helper PP's may lead to deadlocks if no PP's are available. 02840 M00S02837.coding +++| 02841 M00S02838.coding +++| 02842 M00S02839.coding +++| 4.4.3 COMMON DECKS 02843 M00S02840.coding +++| 02844 M00S02841.coding +++| A common deck containing executable code consists of one or more 02845 M00S02842.coding +++| subroutines (as defined in sections 3.2.6 and 3.2.7) and any 02846 M00S02843.coding +++| associated data storage areas. The purpose of common decks is to 02847 M00S02844.coding +++| increase efficiency in writing code, insure uniformity of code and 02848 M00S02845.coding +++| decrease debugging time. Common decks contain optimized code and 02849 M00S02846.coding +++| external interfaces that are generalized to facilitate their use in 02850 M00S02847.coding +++| future programs. These decks should be used in preference to local 02851 M00S02848.coding +++| code whenever possible. 02852 M00S02849.coding +++| 02853 M00S02850.coding +++| Common Decks which contain only macros are not qualified. "S" type 02854 M00S02851.coding +++| common decks are not qualified by the QUAL pseudo-op within the 02855 M00S02852.coding +++| common deck. If an "S" type common deck is qualified externally, 02856 M00S02853.coding +++| the qualifier is the three character name of the routine. For 02857 M00S02854.coding +++| example: 02858 M00S02855.coding +++| 02859 M00S02856.coding +++| COMSaaa (where aaa is the qualifier) 02860 M00S02857.coding +++| 02861 M00S02858.coding +++| 02862 M00S02859.coding +++| 4.5 DAYFILE MESSAGES 02863 M00S02860.coding +++| 02864 M00S02861.coding +++| Dayfile messages issued to the user or system Dayfile begin with a 02865 M00S02862.coding +++| blank character and end with a period. Dayfile messages should not 02866 M00S02863.coding +++| exceed 50 characters. Abbreviations should be avoided when possible 02867 M00S02864.coding +++| in dayfile messages. 02868 M00S02865.coding +++| 02869 M00S02866.coding +++| Informative messages should be issued to the user dayfile only 02870 M00S02867.coding +++| (option 3 on the MESSAGE macro or the CPON option on the call to 02871 M00S02868.coding +++| DFM). Messages that indicate that the job will abort are the only 02872 M00S02869.coding +++| informative user messages that should also be issued to the System 02873 M00S02870.coding +++| Dayfile. Special system programs (MODVAL, ISF, Subsystems, PF or 02874 M00S02871.coding +++| Queue Utilities, etc.) are exceptions and may issue informative 02875 M00S02872.coding +++| messages to the System Dayfile when necessary. 02876 M00S02873.coding +++| 02877 M00S02874.coding +++| 02878 M00S02875.coding +++|1 PAGE 57 02879 M00S02876.coding +++| 02880 M00S02877.coding +++| 02881 M00S02878.coding +++| 4.6 UNHANGABLE CHANNEL CODE 02882 M00S02879.coding +++| 02883 M00S02880.coding +++| To avoid channel hangs, bit 2**5 is set on some PP channel 02884 M00S02881.coding +++| instructions. This should only be used when undesirable side 02885 M00S02882.coding +++| affects will not result and where it is possible to take corrective 02886 M00S02883.coding +++| action. (For example: disconnecting an inactive channel will not 02887 M00S02884.coding +++| result in undesirable effects.) Bit 2**5 should not be used when 02888 M00S02885.coding +++| unpredictable results may occur. Bit 2**5 is not used with channel 02889 M00S02886.coding +++| 15. 02890 M00S02887.coding +++| 02891 M00S02888.coding +++| Example: 02892 M00S02889.coding +++| IJM tag1,CH IF CHANNEL DISCONNECTED 02893 M00S02890.coding +++| DCN CH+4O DISCONNECT CHANNEL 02894 M00S02891.coding +++| RJM ERP PROCESS ERROR 02895 M00S02892.coding +++| tag1 . 02896 M00S02893.coding +++| . 02897 M00S02894.coding +++| . 02898 M00S02895.coding +++| 02899 M00S02896.coding +++| 02900 M00S02897.coding +++| 4.7 SPECIAL ENTRY POINTS 02901 M00S02898.coding +++| 02902 M00S02899.coding +++| Special entry points defined by NOS include: 02903 M00S02900.coding +++| 02904 M00S02901.coding +++| ARG= Inhibit argument processing 02905 M00S02902.coding +++| CLB= Command line buffer 02906 M00S02903.coding +++| DMP= Allow special system processing 02907 M00S02904.coding +++| LDR= Loader processing 02908 M00S02905.coding +++| MFL= Minimum field length 02909 M00S02906.coding +++| RFL= Running field length 02910 M00S02907.coding +++| SDM= Suppress dayfile message 02911 M00S02908.coding +++| SSJ= Special system job 02912 M00S02909.coding +++| SSM= Secure system memory 02913 M00S02910.coding +++| VAL= Validation program 02914 M00S02911.coding +++| 02915 M00S02912.coding +++| To insure proper loading and execution of special entry point 02916 M00S02913.coding +++| programs, special entry points must be declared after normal entry 02917 M00S02914.coding +++| points. 02918 M00S02915.coding +++| 02919 M00S02916.coding +++| EXAMPLE: 02920 M00S02917.coding +++| 02921 M00S02918.coding +++| IDENT FWA 02922 M00S02919.coding +++| ABS 02923 M00S02920.coding +++| ENTRY ABC 02924 M00S02921.coding +++| ENTRY XYZ 02925 M00S02922.coding +++| ENTRY RFL= 02926 M00S02923.coding +++| ENTRY SSJ= 02927 M00S02924.coding +++| SYSCOM B1 02928 M00S02925.coding +++| . 02929 M00S02926.coding +++| . 02930 M00S02927.coding +++| . 02931 M00S02928.coding +++| 02932 M00S02929.coding +++| 02933 M00S02930.coding +++|1 PAGE 58 02934 M00S02931.coding +++| 02935 M00S02932.coding +++| 02936 M00S02933.coding +++| 4.8 SCRATCH FILE NAMES. 02937 M00S02934.coding +++| 02938 M00S02935.coding +++| Programs requiring temporary scratch files will use the names 02939 M00S02936.coding +++| ZZZZZG0 - ZZZZZG9 as names for scratch files. Programs which 02940 M00S02937.coding +++| require more than these 10 scratch file names must resolve the 02941 M00S02938.coding +++| required file names with Systems Design. Such scratch files must 02942 M00S02939.coding +++| always be returned at program termination. 02943 M00S02940.coding +++| 02944 M00S02941.coding +++| 02945 M00S02942.coding +++|1 PAGE 59 02946 M00S02943.coding +++| 02947 M00S02944.coding +++| 02948 M00S02945.coding +++| APPENDIX A - ABBREVIATIONS 02949 M00S02946.coding +++| 02950 M00S02947.coding +++| Standard industry abbreviations and programming language names may 02951 M00S02948.coding +++| be used even though they are not included in the following appendix. 02952 M00S02949.coding +++| 02953 M00S02950.coding +++| A.1 GENERAL ABBREVIATIONS 02954 M00S02951.coding +++| 02955 M00S02952.coding +++| BML binary maintenance log 02956 M00S02953.coding +++| BOI beginning of information 02957 M00S02954.coding +++| CLT common library table 02958 M00S02955.coding +++| CM central memory 02959 M00S02956.coding +++| CME central memory extension 02960 M00S02957.coding +++| CMM common memory manager 02961 M00S02958.coding +++| CMR central memory resident 02962 M00S02959.coding +++| CMU compare/move unit 02963 M00S02960.coding +++| CP control point 02964 M00S02961.coding +++| CPA control point area address 02965 M00S02962.coding +++| CPU central processing unit 02966 M00S02963.coding +++| CR carriage return 02967 M00S02964.coding +++| CSU cartridge storage unit 02968 M00S02965.coding +++| CW control word 02969 M00S02966.coding +++| DAT device access table 02970 M00S02967.coding +++| DIT device interlock table 02971 M00S02968.coding +++| ECS extended core storage 02972 M00S02969.coding +++| ESM extended semi conductor memory 02973 M00S02970.coding +++| EJT executing job table 02974 M00S02971.coding +++| EJTO executing job table ordinal 02975 M00S02972.coding +++| EM extended memory 02976 M00S02973.coding +++| EOF end of file 02977 M00S02974.coding +++| EOI end of information 02978 M00S02975.coding +++| EOL end of line 02979 M00S02976.coding +++| EOR end of record 02980 M00S02977.coding +++| EOS end of stream 02981 M00S02978.coding +++| EPD entry point directory 02982 M00S02979.coding +++| EST equipment status table 02983 M00S02980.coding +++| FOT family ordinal table 02984 M00S02981.coding +++| ETX end of text 02985 M00S02982.coding +++| FDX full duplex 02986 M00S02983.coding +++| FET file enviroment table 02987 M00S02984.coding +++| FL field length 02988 M00S02985.coding +++| FLE field length for extended memory 02989 M00S02986.coding +++| FLPP first level PPU 02990 M00S02987.coding +++| FNT file name table 02991 M00S02988.coding +++| FST file status table 02992 M00S02989.coding +++| FWA first word address 02993 M00S02990.coding +++| HDX half duplex 02994 M00S02991.coding +++| ID identifier or identification 02995 M00S02992.coding +++| I/O input/output 02996 M00S02993.coding +++| JCB job control block 02997 M00S02994.coding +++| JSN job sequence name 02998 M00S02995.coding +++| LCME large core memory extended 02999 M00S02996.coding +++| 03000 M00S02997.coding +++|1 PAGE 60 03001 M00S02998.coding +++| 03002 M00S02999.coding +++| 03003 M00S03000.coding +++| LFN logical file name 03004 M00S03001.coding +++| LWA last word address 03005 M00S03002.coding +++| MID machine identification 03006 M00S03003.coding +++| MMF multi-mainframe 03007 M00S03004.coding +++| MRT machine recovery table 03008 M00S03005.coding +++| MS mass storage 03009 M00S03006.coding +++| MSA mass storage adaptor 03010 M00S03007.coding +++| MST mass storage table 03011 M00S03008.coding +++| MST mass storage transport (do not use abbreviation where 03012 M00S03009.coding +++| confusion with Mass Storage Table may result) 03013 M00S03010.coding +++| MT magnetic tape 03014 M00S03011.coding +++| MUX multiplexer 03015 M00S03012.coding +++| NFL negative field length 03016 M00S03013.coding +++| PF permanent file 03017 M00S03014.coding +++| PFC permanent file catalog 03018 M00S03015.coding +++| PFN permanent file name 03019 M00S03016.coding +++| PLD peripheral library directory 03020 M00S03017.coding +++| PP peripheral processor 03021 M00S03018.coding +++| PPU first-level peripheral processor; only on CYBER 176 03022 M00S03019.coding +++| (also known as FLPP) 03023 M00S03020.coding +++| PRU physical record unit 03024 M00S03021.coding +++| PST program status table 03025 M00S03022.coding +++| QFT queued file table 03026 M00S03023.coding +++| RA reference address 03027 M00S03024.coding +++| RAE reference address for extended memory 03028 M00S03025.coding +++| RCL resident central library 03029 M00S03026.coding +++| RPL resident peripheral library 03030 M00S03027.coding +++| RMS rotating mass storage 03031 M00S03028.coding +++| SCP system control point 03032 M00S03029.coding +++| SCR status and control register 03033 M00S03030.coding +++| SECDED single error correction, double error detection 03034 M00S03031.coding +++| SUBCP subcontrol point 03035 M00S03032.coding +++| TRT track reservation table 03036 M00S03033.coding +++| TTY teletype 03037 M00S03034.coding +++| UCP user control point 03038 M00S03035.coding +++| UEM unified extended memory for 8X5 03039 M00S03036.coding +++| UDT unit descriptor table 03040 M00S03037.coding +++| UJN user job name 03041 M00S03038.coding +++| VSN volume serial number 03042 M00S03039.coding +++| 03043 M00S03040.coding +++| 03044 M00S03041.coding +++| A.2 NETWORK HOST PRODUCTS ABBREVIATIONS 03045 M00S03042.coding +++| 03046 M00S03043.coding +++| ABH application block header 03047 M00S03044.coding +++| ABL application block limit 03048 M00S03045.coding +++| ABN application block number 03049 M00S03046.coding +++| ABT application block type 03050 M00S03047.coding +++| ACK block acknowledged 03051 M00S03048.coding +++| ACN application connection number 03052 M00S03049.coding +++| ACT application character type 03053 M00S03050.coding +++| ADR address information 03054 M00S03051.coding +++| 03055 M00S03052.coding +++|1 PAGE 61 03056 M00S03053.coding +++| 03057 M00S03054.coding +++| 03058 M00S03055.coding +++| ALN application list number 03059 M00S03056.coding +++| CLA communications line adapter 03060 M00S03057.coding +++| IBU input block undeliverable 03061 M00S03058.coding +++| IVT interactive virtual terminal 03062 M00S03059.coding +++| LCF local configuration file 03063 M00S03060.coding +++| LOP local operator 03064 M00S03061.coding +++| NAK block not acknowledged 03065 M00S03062.coding +++| NCF network configuration file 03066 M00S03063.coding +++| NDL network definition language 03067 M00S03064.coding +++| NFE no format effectors 03068 M00S03065.coding +++| NOP network operator 03069 M00S03066.coding +++| NPU network processing unit 03070 M00S03067.coding +++| PFC primary function code 03071 M00S03068.coding +++| SFC secondary function code 03072 M00S03069.coding +++| SM supervisory message 03073 M00S03070.coding +++| SMP supervisory message processor 03074 M00S03071.coding +++| TA text area 03075 M00S03072.coding +++| TLC text length characters 03076 M00S03073.coding +++| TLMAX maximum length of data message block text 03077 M00S03074.coding +++| TNAME terminal name 03078 M00S03075.coding +++| 03079 M00S03076.coding +++| 03080 M00S03077.coding +++| A.3 ACRONYMS 03081 M00S03078.coding +++| 03082 M00S03079.coding +++| AIP Application Interface Program 03083 M00S03080.coding +++| BIO Batchio 03084 M00S03081.coding +++| CDCS CYBER Database Control System 03085 M00S03082.coding +++| CRM Cyber Record Manager 03086 M00S03083.coding +++| FSE Full Screen Editor 03087 M00S03084.coding +++| IAF Interactive Facility 03088 M00S03085.coding +++| LCN Loosely Coupled Network 03089 M00S03086.coding +++| MAG Magnet 03090 M00S03087.coding +++| MAP Matrix Array Processor 03091 M00S03088.coding +++| MCS Message Control System 03092 M00S03089.coding +++| MSF Mass Storage Facility 03093 M00S03090.coding +++| MSS Mass Storage Subsystem 03094 M00S03091.coding +++| NAM Network Access Method 03095 M00S03092.coding +++| NOS Network Operating System 03096 M00S03093.coding +++| NVE Network Validation Facility 03097 M00S03094.coding +++| RBF Remote Batch Facility 03098 M00S03095.coding +++| RDF Remote Diagnostic Facility 03099 M00S03096.coding +++| RHF Remote Host Facility 03100 M00S03097.coding +++| SMF Screen Management Facility 03101 M00S03098.coding +++| SSF Scope Station Facility 03102 M00S03099.coding +++| STM Stimulator 03103 M00S03100.coding +++| TAF Transaction Facility 03104 M00S03101.coding +++| TIP Terminal Interface Program 03105 M00S03102.coding +++| TVF Terminal Verification Facility 03106 M00S03103.coding +++| 03107 M00S03104.coding +++|1 PAGE 62 03108 M00S03105.coding +++| 03109 M00S03106.coding +++| 03110 M00S03107.coding +++| APPENDIX B - ERROR MESSAGE GUIDELINES 03111 M00S03108.coding +++| 03112 M00S03109.coding +++| The following general principles are to be observed in designing 03113 M00S03110.coding +++| future error messages for NOS. Existing messages should be improved 03114 M00S03111.coding +++| as opportunities arise. These guidelines will be formalized in a 03115 M00S03112.coding +++| later Usability Design Direction Document. 03116 M00S03113.coding +++| 03117 M00S03114.coding +++| 1. The purpose of an error message is to inform the user how to 03118 M00S03115.coding +++| correct a problem. 03119 M00S03116.coding +++| 03120 M00S03117.coding +++| Discussion: It helps to view error messages as prompts: not 03121 M00S03118.coding +++| "this is what you did wrong" but "this is how to do it right." 03122 M00S03119.coding +++| Messages should be phrased positively. The words "ILLEGAL", 03123 M00S03120.coding +++| "INVALID", and "SYNTAX" are specifically not permitted in NOS 03124 M00S03121.coding +++| messages. Of course, there are other ways to phrase unhelpful, 03125 M00S03122.coding +++| negative messages; but these three words are singled out for 03126 M00S03123.coding +++| extinction for being so frequently seen in the company of 03127 M00S03124.coding +++| usability offenders. 03128 M00S03125.coding +++| 03129 M00S03126.coding +++| 2. A single message should diagnose a single error. 03130 M00S03127.coding +++| 03131 M00S03128.coding +++| Discussion: For example, if the meaning of message is "more 03132 M00S03129.coding +++| than seven characters or leading non-alphabetic character or 03133 M00S03130.coding +++| null identifier" it should be three messages. Usually, the code 03134 M00S03131.coding +++| must make three separate tests, so it is easy to be precise. An 03135 M00S03132.coding +++| exception is when a common deck returns an error status which 03136 M00S03133.coding +++| could have resulted from several different conditions. 03137 M00S03134.coding +++| 03138 M00S03135.coding +++| 3. An error message is friendly if it is business-like and 03139 M00S03136.coding +++| informative. 03140 M00S03137.coding +++| 03141 M00S03138.coding +++| Discussion: Cute, funny, or flippant messages are to be 03142 M00S03139.coding +++| avoided, as they seldom diagnose accurately and always wear 03143 M00S03140.coding +++| quickly. Messages should be directed at the process and not the 03144 M00S03141.coding +++| person. 03145 M00S03142.coding +++| 03146 M00S03143.coding +++| 4. Messages must be written plainly, using terms already known to 03147 M00S03144.coding +++| the user. 03148 M00S03145.coding +++| 03149 M00S03146.coding +++| Discussion: Messages should use terms which are either 03150 M00S03147.coding +++| self-defining or natural to the process. All words should be 03151 M00S03148.coding +++| part of the external user interface, like "file name" instead of 03152 M00S03149.coding +++| "LFN" (unless LFN is an external parameter). 03153 M00S03150.coding +++| 03154 M00S03151.coding +++| 5. Messages must be written in English. 03155 M00S03152.coding +++| 03156 M00S03153.coding +++| Discussion: Messages should follow normal rules for English 03157 M00S03154.coding +++| grammar and punctuation, although "pidgin English" -- the 03158 M00S03155.coding +++| omission of selected subjects, verbs or objects in the interest 03159 M00S03156.coding +++| of brevity where the meaning is clear - is acceptable. Messages 03160 M00S03157.coding +++| should not be written in octal, or in other forms of scientific 03161 M00S03158.coding +++| notation. Note that the asterisk is not an English punctuator. 03162 M00S03159.coding +++|1 PAGE 63 03163 M00S03160.coding +++| 03164 M00S03161.coding +++| 03165 M00S03162.coding +++| 03166 M00S03163.coding +++| 6. Messages should be self-contained. 03167 M00S03164.coding +++| 03168 M00S03165.coding +++| Discussion: If you need to tell a story, tell the whole story. 03169 M00S03166.coding +++| Avoid references, as they are difficult to keep up-to-date and 03170 M00S03167.coding +++| are often no more helpful then a good one-line message would be. 03171 M00S03168.coding +++| 03172 M00S03169.coding +++| 7. Error messages should point directly to the source of the 03173 M00S03170.coding +++| trouble. 03174 M00S03171.coding +++| 03175 M00S03172.coding +++| Discussion: For example, "FILE NOT FOUND" is better put as 03176 M00S03173.coding +++| "FILE XYZ NOT FOUND", "EXPECTING COMMA OR PERIOD AFTER 'ABC'" is 03177 M00S03174.coding +++| much clearer than "SYNTAX ERROR". In general, the technique of 03178 M00S03175.coding +++| echoing back part of the user input as part of the message is 03179 M00S03176.coding +++| better than the use of internal names or parameter keywords 03180 M00S03177.coding +++| which the user may not recognize. 03181 M00S03178.coding +++| 03182 M00S03179.coding +++| 8. Interactive error messages should appear as soon as possible 03183 M00S03180.coding +++| after an error is committed. 03184 M00S03181.coding +++| 03185 M00S03182.coding +++| Discussion: Each interactive input should be completely and 03186 M00S03183.coding +++| fully validated as soon as it is received. In no event should a 03187 M00S03184.coding +++| user be led down the garden path to enter a long series of input 03188 M00S03185.coding +++| only to be advised that it is all wrong because the first part 03189 M00S03186.coding +++| was wrong. 03190 M00S03187.coding +++| 03191 M00S03188.coding +++| 9. No messages at all should appear for trivial, correctable errors 03192 M00S03189.coding +++| - nor should they be errors. 03193 M00S03190.coding +++| 03194 M00S03191.coding +++| Discussion: Errors such as missing or redundant terminators 03195 M00S03192.coding +++| should not be errors at all. If a reasonable assumption can be 03196 M00S03193.coding +++| made as to the intent of an input, it should be acted upon as 03197 M00S03194.coding +++| though it were "valid". No error diagnostic should be produced 03198 M00S03195.coding +++| for these cases. If it is not perfectly clear what assumption 03199 M00S03196.coding +++| was made, the assumption was probably not reasonable to begin 03200 M00S03197.coding +++| with. 03201 M00S03198.coding +++| 03202 M00S03199.coding +++| 10. An error message must clearly signal that an error has occurred. 03203 M00S03200.coding +++| 03204 M00S03201.coding +++| Discussion: An error message must not be phrased in such a way 03205 M00S03202.coding +++| as to be confused with a merely informative message. Also, a 03206 M00S03203.coding +++| message should indicate the gravity and extent of the error, as 03207 M00S03204.coding +++| when an error in a list inhibits processing of the remainder of 03208 M00S03205.coding +++| the list. 03209 M00S03206.coding +++| 03210 M00S03207.coding +++|1 PAGE 64 03211 M00S03208.coding +++| 03212 M00S03209.coding +++| 03213 M00S03210.coding +++| APPENDIX C DOCUMENTATION/USABILITY GUIDELINES 03214 M00S03211.coding +++| 03215 M00S03212.coding +++| 03216 M00S03213.coding +++| 1. COMMAND should be used instead of CONTROL STATEMENT or CONTROL 03217 M00S03214.coding +++| CARD. 03218 M00S03215.coding +++| 03219 M00S03216.coding +++| 2. INCORRECT should be used rather than ILLEGAL or INVALID (refer 03220 M00S03217.coding +++| to Appendix B item 1). 03221 M00S03218.coding +++| 03222 M00S03219.coding +++| 3. USER should be used instead of ACCOUNT. 03223 M00S03220.coding +++| 03224 M00S03221.coding +++| 4. USER NAME should be used instead of USER NUMBER or ACCOUNT 03225 M00S03222.coding +++| NUMBER. 03226 M00S03223.coding +++| 03227 M00S03224.coding +++| 5. EXTENDED MEMORY should be used rather than ECS. 03228 M00S03225.coding +++| 03229 M00S03226.coding +++| 6. MONITOR REQUEST should be used rather than RA+1 CALL. 03230 M00S03227.coding +++| 03231 M00S03228.coding +++| 7. EST ORDINAL or DEVICE should be used instead of EQUIPMENT NUMBER 03232 M00S03229.coding +++| or EQUIPMENT. 03233 M00S03230.coding +++| 03234 M00S03231.coding +++| 8. English variables such as file name rather than filenam should 03235 M00S03232.coding +++| be used to remove the shorthand notation of using variable names 03236 M00S03233.coding +++| that are the same length as the maximum entry. 03237 M00S03234.coding +++| 03238 M00S03235.coding +++| 9. Documentation, messages, etc. should avoid the use of sexist 03239 M00S03236.coding +++| language (he, she, him, her, etc.). 03240 M00S03237.coding +++| 03241 M00S03238.coding +++|*WEOR
cdc/nos2.source/opl.opl871/deck/coding.001.txt ยท Last modified: (external edit)