.COMMENT This document contains commented-out code to allow it to be .; used with various RUNOFF's. By default, it works with .; the DECUS library version (11-530, M02), and produces a HELP .; file only. By following the instructions below, you can produce .; a version for a Runoff which supports conditionals or options, .; which will enable you to produce either a help file or a .; "pocket reference" mini-manual. .; .; Basically, comments: .; CND disable all conditionally selected code, except that .; required to generate default HELP, in all versions, .; DSR disable .IF xxx, .ELSE xxx, and .ENDIF xxx's .; S14 disable .OPTION n, .ELSE n and .END OPTION n's .; BON disables Bonner Runoff specials, mainly character pitch .; control .; .; To use: .; Version S1.4, distributed by the DECUS RSX SIG, .; 1. Do a global delete of all S14 and CND comments .; 2. .INCLUDE #1 if you want a HELP file. Don't .INCLUDE .; if you want a mini-manual. .; 3. .INCLUDE #2 if you want a manual describing Telex .; Computer Products defaults .; (.HEX, 32 bytes wide), don't .INCLUDE #1 .; if you want Sira defaults (.LDA, 16 bytes) .; 4. .INCLUDE #3 if you want the manual to describe running .; HEX on VAX/VMS in compatibility mode. .; .; VAX/VMS Digital Standard Runoff .; 1. Do a global delete of all DSR and CND comments .; 2. On the command line, include the /VARIANT=TCP qualifier .; if you want a manual describing Telex Computer Products .; file defaults (.HEX, 32 bytes wide). Do not include the .; 'TCP' variant if you want Sira type defaults .; (.LDA, 16 bytes wide). .; 3. Include the /VARIANT=HELP qualifier if you want the help .; file, leave the switch off for a mini-manual. .; 4. Include the /VARIANT=VMS qualifier if you want to describe .; running HEX on VAX/VMS in compatibility mode. .; .; If you have Real Time Systems' xse stream editor, the command .; xse -ftodsr.tr -ohex.rnh hex.rnh;-1 .; will do this for you (and change HEX's to HFE's). .; .; Bonner Lab Runoff .; 1. Do a global delete of all BON, DSR and CND comments .; 2. Include .VARIANT TCP if you want a manual describing .; Telex Computer Products file defaults (.HEX, 32 bytes .; wide). Do not include the 'TCP' variant if you want Sira .; type defaults (.LDA, 16 bytes wide). .; 3. Include .VARIANT HELP if you want the help .; file, don't include it for a mini-manual. .; 4. Include .VARIANT VMS if you want todescribe running .; HEX on VAX/VMS in compatibility mode. .; If you have Real Time Systems' xse stream editor, the command .; xse -ftobon.tr -ohex.rnh hex.rnh;-1 .; will do this for you (and change HEX's to HFE's). .; .; .; Under RSX, you may wish to change some occurrences of CLI prompt $ to > .; in the first section. .; .; If you do not have parent-offspring tasking, you may wish to delete the .; "." and "$" sections. On VAX/VMS, you should in any case delete the .; last paragraph of this section (describing "."/"$" alone) anyway. .; .; If you have changed HEX's task name, do a global replace (paste) of .; all occurrences of _HEX to _xxx, .; e.g. S/_HEX/_HFE/REST in EDT V2 ff if your new name is HFE. .;S14.OPTION 1 .;DSR.IF HELP .;S14.PS32767,78.LM0.rm78.NHD .;BON.PS64,78 .;DSR.LM0.rm78.nopaging 1 _HEX .S .;DSR.ELSE HELP .;S14.ELSE 1 .;CND.PS64,80.LM0.RM80 .;BON^= .;CND.C;_HEX .;CND.T _HEX .;CND.B1.P0 .;BON\= .;S14.END OPTION 1 .;DSR.ENDIF HELP .;BON.NHY _HEX (the Hex File Editor) can be invoked in two ways: .P0 Interactive mode .LM+8.B1.NF.TS24 .;DSR.IF VMS .;S14.IF 4 $ _HEX Type _HEX (or RUN $_HEX) in response to the CLI prompt. .;S14.ELSE 4 .;DSR.ELSE VMS _> _HEX Type _HEX (or RUN $_HEX) in response to the CLI prompt. .;S14.END OPTION 4 .;DSR.ENDIF VMS _HEX_>command Command lines may be entered. _HEX_>command _HEX_>_^Z Control-Z terminates _HEX. .P-8 Indirect command mode .B1 .;DSR.IF VMS .;S14.IF 4 $ _HEX @filespec where filespec is the file specification of an .;S14.ELSE 4 .;DSR.ELSE VMS _> _HEX @filespec where filespec is the file specification of an .;S14.END OPTION 4 .;DSR.ENDIF VMS indirect command file (default type CMD) containing a list of _HEX commands. .P-8 Commands are: AND APPEND COMPARE COMPLEMENT COPY CRC CSUM DECREMENT DISPLAY DIVIDE [NO]ECHO EDIT EXIT FILL FORMAT HELP INIT IDENT INCREMENT INIT MOVE MULTIPLY NAME NEGATE OFFSET OR REMAINDER REVERSE ROTATE READ SEARCH SHIFT SUM TRANSFER USE WRITE XOR . $ .b1.lm-8.F See .;S14.OPTION 1 .;DSR.IF HELP HELP _HEX .;DSR.ENDIF HELP .;S14.END OPTION 1 COMMANDS for a summary of command syntaxes, .BR or# .;S14.OPTION 1 .;DSR.IF HELP HELP _HEX .;DSR.ENDIF HELP .;S14.END OPTION 1 SYNTAX for syntax rules, .br or# .;S14.OPTION 1 .;DSR.IF HELP HELP _HEX .;DSR.ENDIF HELP .;S14.END OPTION 1 RANGE for an explanation of memory range specifications, .br or# .;S14.OPTION 1 .;DSR.IF HELP HELP _HEX .;DSR.ENDIF HELP .;S14.END OPTION 1 _ for help on individual commands. .;S14.OPTION 1 .;DSR.IF HELP .b1 2 COMMANDS .b1.rm76 .;DSR.ELSE HELP .;BON^= .;S14.ELSE 1 .;CND.HL1 COMMANDS .;BON\= .;DSR.ENDIF HELP .;S14.END OPTION 1 .nf.ts33 AND range WITH pp MOVE BYTE/WORD FROM _*_*_*_* TO _*_*_*_* APPEND range [PARTIAL] [WIDTH vv/vvvv] FILE f##MULTIPLY [SIGNED] range BY pp COMPARE [range] FILE f/WITH aaaa NAME [nnnnnnnn] COMPLEMENT range NEGATE range COPY range TO cccc [REPEAT vvvv] OFFSET [aaaa] CRC range [TO _*_*_*_*] OR range WITH pp CSUM range READ [range] FILE filespec DECREMENT range [BY pp] REMAINDER [SIGNED] range BY pp DISPLAY [ASCII] range [FILE f] REVERSE range DIVIDE [SIGNED] range BY pp ROTATE LEFT/RIGHT [SIGNED] range [BY pp] [NO]ECHO SEARCH range FOR pp/qqqq EDIT aaaa [STEP ww] SHIFT LEFT/RIGHT [SIGNED ] range [BY pp] EXIT (or ctrl/Z) SUM range [TO _*_*_*_*] FILL range WITH pp TRANSFER [aaaa] FORMAT [type [char/SMS]] USE vv OF ww FOR READ HELP or ? [_HEX command] WRITE range [PARTIAL][WIDTH vv/vvvv] FILE f INCREMENT range [BY pp] XOR range WITH pp INIT [WITH pp] _. or $ [CLI command] .p0 type is format: INTEL/MOTOROLA/ROCKWELL/RCA/TEKHEX/EXTENDED/TEXAS/MOSTEK/ WHITESMITHS/RIM/BIN/HEX/OCTAL/TCI/FAIRCHILD/SIRA/OBJECT/ABSOLUTE/TASK .f .;S14.OPTION 1 .;DSR.IF HELP .P0 HELP text on SYNTAX explains codes aaaa, _*_*_*_* etc.; see also RANGE. .b1 2 Syntax .b1 .;DSR.ELSE HELP .;S14.ELSE 1 .;BON^= .;CND.HL1 SYNTAX .;BON\= .;DSR.ENDIF HELP .;S14.END OPTION 1 .nj.lm5.i-4 1.##aaaa, bbbb, and cccc indicate 4, 6, or 8-digit addresses, depending on the current mode_: 16, 24, or 32 bit respectively. Leading zeroes are required. .i-4 2.##vvvv and wwww indicate a hex number of exactly the same number of digits as there are letters, e.g_. vv is a 2-digit number, wwwwww is a 24-bit address. .i-4 3.##pp indicates a byte value which may be entered as a 2-digit hex value, or a character specification like that used by DISPLAY (q.v.). .i-4 4.##qqqq indicates a 16-bit value entered as either a 4-digit hexadecimal number, or a double-quote (") followed by two ASCII characters. .i-4 5.##nnnnnnnn indicates an 8-character program name. .i-4 6.##_*_*_*_* represents an entity which may either be an address, as aaaa, or a pseudo-register, written as %vv. .i-4 7.##Uppercase words are required keywords. .i-4 8.##Structures in brackets ([...]) show optional parameters. The brackets are not part of the syntax. .i-4 9.##Slashes indicate alternative keywords or options. .i-4 10.#All numbers and all input/output of the _HEX utility are hexadecimal unless stated otherwise. .LM0.j .;S14.OPTION 1 .;DSR.IF HELP .b1 2 Range .b1 .;DSR.ELSE HELP .;S14.ELSE 1 .;BON^= .;CND.HL1 RANGE .;BON\= .;DSR.ENDIF HELP .;S14.END OPTION 1 Range specifications used by many commands take the form: .lm+8.nf.b1 [ODD ] FROM aaaa THRU bbbb [STEP ss] [PLUS cccc] [EVEN] LOW HIGH [MINUS cccc] .f.lm-8.b1 where items on the lower line are alternatives for the fields immediately above them. .p0 aaaa and bbbb are the (inclusive) addresses for the operation. If ss is omitted, every byte in that range is included (i.e_. the default is 01), otherwise only every ss'th address, starting at aaaa, and _<= bbbb, is used. aaaa may be replaced by LOW, which takes the value of the lowest address met in the last READ or COMPARE, and similarly, bbbb may be replaced by HIGH. .p0 ODD or EVEN force aaaa to the appropriate boundary as default ss to 02. .p0 PLUS and MINUS add or subtract the given value from addresses read from or written to a file, and are only available with READ, COMPARE, WRITE, and APPEND. .;S14.OPTION 1 .;DSR.IF HELP .b1 2 AND .p8 .;DSR.ELSE HELP .;S14.ELSE 1 .;BON^= .;CND.HL1 DETAILED COMMAND DESCRIPTIONS .;CND.HL2 AND .;CND.i8 .;BON\= .;DSR.ENDIF HELP .;S14.END OPTION 1 AND [ODD/EVEN] FROM aaaa THRU bbbb [STEP ss] WITH pp .f.b1 logically AND's pp with every byte in the range, storing the result of each operation back into memory. .;S14.OPTION 1 .;DSR.IF HELP .b1 2 APPEND .p8 .;DSR.ELSE HELP .;S14.ELSE 1 .;BON^= .;CND.HL2 APPEND .;CND.i8 .;BON\= .;DSR.ENDIF HELP .;S14.END OPTION 1 APPEND [ODD/EVEN] FROM aaaa THRU bbbb [STEP ss] .I15 [PLUS/MINUS cccc] [PARTIAL] [WIDTH vv/vvvv] FILE filespec .P0 extends an object file, defining locations aaaa to bbbb. .P0 If given, vv determines the maximum number of bytes output per line, by causing a new record to be started at addresses which are exact multiples of vv, e.g_. if vv_=10, records start at addresses aa00, aa10, aa20 ..., and the maximum length is thus 16_. bytes. .P0 For PROM programmer formats (HEX and OCTAL) vvvv is a 4-digit PROM size. The STEP range argument may be used to generate hi and lo byte PROM files. .P0 The current program name will be included in the object file if the current object format provides for this. A trailer record containing the transfer address (if any) will be written unless suppressed by PARTIAL. .;S14.OPTION 1 .;DSR.IF HELP .b1 2 COMPARE .p8 .;DSR.ELSE HELP .;S14.ELSE 1 .;BON^= .;CND.HL2 COMPARE .;CND.i8 .;BON\= .;DSR.ENDIF HELP .;S14.END OPTION 1 COMPARE [[ODD/EVEN] FROM aaaa THRU bbbb [STEP ss]] .I16 [PLUS/MINUS cccc] [PARTIAL] FILE filespec .P0 where filespec is a file specification of an object file (filetype see FORMAT). .p0 The code defined by the file will be compared with memory (which is unchanged). The transfer address and name (if given) are compared with the current ones. .P0 The optional range specification may be used to limit the portion of the file to be compared with virtual memory to addresses aaaa to bbbb. Then ss, if also given, specifies that consecutive input bytes are compared with every ss'th location in memory -- used when the file was so output by WRITE. .P0 PARTIAL says that a trailer record should not be expected (or allowed). .P0 An alternative command form compares areas of virtual memory: .p8 COMPARE [[ODD/EVEN] FROM aaaa THRU bbbb [STEP ss]] .I16 [PLUS/MINUS cccc] WITH dddd .p0 Compares every ss'th byte from the FROM/THRU area with sequential bytes from the area beginning at address dddd. If no range specification is given, then the range from the last command that did have one is used instead. .;S14.OPTION 1 .;DSR.IF HELP .b1 2 COMPLEMENT .p8.TS13 .;DSR.ELSE HELP .;S14.ELSE 1 .;BON^= .;CND.HL2 COMPLEMENT .;CND.i8.TS12 .;BON\= .;DSR.ENDIF HELP .;S14.END OPTION 1 COMPLEMENT [ODD/EVEN] FROM aaaa THRU bbbb [STEP ss] .p sets every ss'th location from aaaa to bbbb to its one's complement, i.e_. every bit is inverted. .;S14.OPTION 1 .;DSR.IF HELP .b1 2 COPY .p8 .;DSR.ELSE HELP .;S14.ELSE 1 .;BON^= .;CND.HL2 COPY .;CND.i8 .;BON\= .;DSR.ENDIF HELP COPY [ODD/EVEN] FROM aaaa THRU bbbb [STEP ss] TO cccc [REPEAT vvvv] .P0 copies the values contained in every ss'th location from aaaa to bbbb to sequential locations starting at cccc. The copy only affects the source area if it is overlapped by the target area. .P0 If the REPEAT option is given, vvvv contiguous copies of the source are made. .;S14.OPTION 1 .;DSR.IF HELP .b1 2 CRC .p8 .;DSR.ELSE HELP .;S14.ELSE 1 .;BON^= .;CND.HL2 CRC .;CND.i8 .;BON\= .;DSR.ENDIF HELP .;S14.END OPTION 1 CRC FROM aaaa THRU bbbb [STEP ss] [TO _*_*_*_*] .P0 Calculates and displays the standard bisync CRC of every ss'th byte from aaaa to bbbb, using a preset of 0000. If a TO address (or pseudo-register) is specified, the result is stored there in high-low order. .;S14.OPTION 1 .;DSR.IF HELP .b1 2 CSUM .p8 .;DSR.ELSE HELP .;S14.ELSE 1 .;BON^= .;CND.HL2 CSUM .;CND.i8 .;BON\= .;DSR.ENDIF HELP .;S14.END OPTION 1 CSUM [ODD/EVEN] FROM aaaa THRU bbbb [STEP ss] .P0 calculates and displays a 16-bit byte-wise summation of ss'th locations from aaaa to bbbb, and writes a SAL assembler-type CSUM block is at bbbb+1, in form: .b1.lm+8.nf.ts32 bbbb+1 _= aaaa lo bbbb+2 _= aaaa hi bbbb+3 _= sum lo bbbb+4 _= sum hi .lm-8.f .;S14.OPTION 1 .;DSR.IF HELP .b1 2 DECREMENT .p8 .;DSR.ELSE HELP .;S14.ELSE 1 .;BON^= .;CND.HL2 DECREMENT .;CND.i8 .;BON\= .;DSR.ENDIF HELP .;S14.END OPTION 1 DECREMENT [ODD/EVEN] FROM aaaa THRU bbbb [STEP ss] [BY pp] .P0 Subtracts pp (default 1) to every ss'th byte from aaaa to bbbb. .;S14.OPTION 1 .;DSR.IF HELP .b1 2 DISPLAY .p8 .;DSR.ELSE HELP .;S14.ELSE 1 .;BON^= .;CND.HL2 DISPLAY .;CND.i8 .;BON\= .;DSR.ENDIF HELP .;S14.END OPTION 1 DISPLAY [ASCII] FROM aaaa THRU bbbb [STEP ss] [FILE filespec] .P0 displays every ss'th byte from aaaa to bbbb, on the terminal (or, if specified, in a file). .; which is then spooled to the printer). If ss is (default) 01, aaaa to bbbb are rounded to aaa0 to bbbF. .P0 Format is 2-digit hex bytes, unless the ASCII keyword is included. In ASCII displays, non-printing characters are shown as equivalent letters prefixed by:- .b1.nf.ts8,16 _^ control codes, 00-37, thus _^C is ctrl/C, hex 03, ~ control codes with parity bit set, 80-9F, - printing characters with parity bit set, A0-FE, plus: _^_# shows the parity-clear delete character, code 7F _#_# shows the parity-set delete character, code FF .f .;S14.OPTION 1 .;DSR.IF HELP .b1 2 DIVIDE .P8.TS13 .;DSR.ELSE HELP .;S14.ELSE 1 .;BON^= .;CND.HL2 DIVIDE .;CND.I8.TS12 .;BON\= .;DSR.ENDIF HELP .;S14.END OPTION 1 DIVIDE [SIGNED] [ODD/EVEN] FROM aaaa THRU bbbb [STEP ss] BY pp .p0 divides every ss'th byte from aaaa to bbbb by pp, and replaces it with the quotient. Source and pp are considered unsigned unless the SIGNED option is given. .;S14.OPTION 1 .;DSR.IF HELP .b1 2 ECHO .F.p8 .;DSR.ELSE HELP .;S14.ELSE 1 .;BON^= .;CND.HL2 ECHO and NOECHO .;CND.i8 .;BON\= .;DSR.ENDIF HELP .;S14.END OPTION 1 NOECHO .P0 suppresses echoing of commands (including itself) and READ/WRITE statistics reports when running from a command file. Has no effect when commands are being taken from the terminal, or on error messages or SEARCH etc. reports. .p8 ECHO .P0 re-enables echoing of commands read from a file. .P0 The default is to echo all commands except comments starting with ;. .;S14.OPTION 1 .;DSR.IF HELP .b1 2 EDIT .P8.TS16 .;DSR.ELSE HELP .;S14.ELSE 1 .;BON^= .;CND.HL2 EDIT .;CND.i8.TS16 .;BON\= .;DSR.ENDIF HELP .;S14.END OPTION 1 EDIT aaaa [STEP ss] .P0 initiates an interactive session to examine and optionally replace the contents of virtual memory starting at location aaaa. The following display appears: .p8 aaaa vv_=cc- .P0 where aaaa is the current address being edited, vv is its contents in hex, and cc is the ASCII character, shown as in DISPLAY. Reply with:- .lm+16.p-8 pp_ to replace the contents of the location being edited and bring up the next ss'th location for editing. .P _ to leave the location as it is and open the next ss'th location. .P pp_^_ to replace the contents of the location being edited and open the previous ss'th location. .P _^_ to leave the location as it is and open the previous ss'th location. .lm-16.P0 pp's may be 2-digit hex values, or an ASCII character specifier: 'char, _^char, _^_#, -char, ~char, or _#_#, (see DISPLAY). .;S14.OPTION 1 .;DSR.IF HELP .b1 2 EXIT .p8 .;DSR.ELSE HELP .;S14.ELSE 1 .;BON^= .;CND.HL2 EXIT .;CND.i8 .;BON\= .;DSR.ENDIF HELP .;S14.END OPTION 1 EXIT .P0 causes an exit from _HEX, and return to the operating system or calling task. Intended for use in a command file -- control/Z has the same effect at a terminal. .;S14.OPTION 1 .;DSR.IF HELP .b1 2 FILL .p8 .;DSR.ELSE HELP .;S14.ELSE 1 .;BON^= .;CND.HL2 FILL .;CND.i8 .;BON\= .;DSR.ENDIF HELP .;S14.END OPTION 1 FILL [ODD/EVEN] FROM aaaa THRU bbbb [STEP ss] WITH pp .P0 Every [ss'th] location from aaaa to bbbb is filled with byte value pp. .;S14.OPTION 1 .;DSR.IF HELP .b1 2 FORMAT .p8 .;DSR.ELSE HELP .;S14.ELSE 1 .;BON^= .;CND.HL2 FORMAT .;CND.i8 .;BON\= .;DSR.ENDIF HELP .;S14.END OPTION 1 FORMAT [type [char]] .P0 Displays or specifies the object file format and sets READ/WRITE defaults: .s.ts20,30,38,46.nf default max type WIDTH WIDTH##filetype ---- ----- -----##-------- .;S14.OPTION 2 .;DSR.IF TCP .;CNDINTEL ##32 250 .HEX .;CNDMOTOROLA ##32 ##252 .HEX .;CNDROCKWELL ##32 ##252 .HEX .;CNDRCA ##32 ##168 .HEX COSMAC UT4 utility .;CNDTEKHEX ##32 ##250 .HEX Tektronix emulator .;CNDEXTENDED [TEKHEX] ##32 ##250 .HEX ditto, "Extended TekHex" .;CNDTEXAS ##32 ##200 .OBJ 7000/9900/99000 families .;CNDMOSTEK ##32 ##250 .HEX .;CNDWHITESMITHS ###1 ####1 none XEQ_. file format .;CNDRIM ##64 ##254 .RIM PDP-8/IM6100 Read-in-Mode .;CNDBIN #128 ##254 .BIN PDP-8/IM6100 binary#mode .;CNDHEX#[char/SMS] 1024 16384 .PRM Data I/O hex-char or SMS .;CNDOCTAL#[ch/SMS] 1024 16384 .PRM Data I/O octal-char or SMS .;CNDTCI ##32 ##263 .HEX .;CNDFAIRCHILD ##32 ##168 .HEX "Fairbug" .;S14.ELSE 2 .;DSR.ELSE TCP INTEL ##16 250 .LDA MOTOROLA ##16 ##252 .LDA ROCKWELL ##16 ##252 .LDA RCA ##16 ##168 .LDA COSMAC UT4 utility TEKHEX ##16 ##250 .LDA Tektronix emulator EXTENDED [TEKHEX] ##16 ##250 .LDA ditto, "Extended TekHex" TEXAS ##16 ##200 .LDA 7000/9900/99000 families MOSTEK ##16 ##250 .LDA WHITESMITHS ###1 ####1 none XEQ_. file format RIM ##64 ##254 .RIM PDP-8/IM6100 Read-in-Mode BIN #128 ##254 .BIN PDP-8/IM6100 binary#mode HEX#[char/SMS] 1024 16384 .PRM Data I/O hex-char or SMS OCTAL#[ch/SMS] 1024 16384 .PRM Data I/O octal-char or SMS TCI ##16 ##263 .LDA FAIRCHILD ##16 ##168 .LDA "Fairbug" .;S14.END OPTION 2 .;DSR.ENDIF TCP SIRA ##64 ##505 .LDA Sira binary OBJECT ##64 ##510 .OBJ MACRO ABS object ABSOLUTE ##64 ##505 .LDA PDP-11 paper tape loader TASK #512 ##512 .SYS TKB output .f .;S14.OPTION 1 .;DSR.IF HELP .b1 2 IDENT .p8 .;DSR.ELSE HELP .;S14.ELSE 1 .;BON^= .;CND.HL2 IDENT .;CND.i8 .;BON\= .;DSR.ENDIF HELP .;S14.END OPTION 1 IDENT .P0 Displays _HEX's current version number (last revision date). .;S14.OPTION 1 .;DSR.IF HELP .b1 2 INCREMENT .p8 .;DSR.ELSE HELP .;S14.ELSE 1 .;BON^= .;CND.HL2 INCREMENT .;CND.i8 .;BON\= .;DSR.ENDIF HELP .;S14.END OPTION 1 INCREMENT [ODD/EVEN] FROM aaaa THRU bbbb [STEP ss] [BY pp] .P0 Adds pp (default 1) to every ss'th byte from aaaa to bbbb. .;S14.OPTION 1 .;DSR.IF HELP .b1 2 INIT .p8 .;DSR.ELSE HELP .;S14.ELSE 1 .;BON^= .;CND.HL2 INIT .;CND.i8 .;BON\= .;DSR.ENDIF HELP .;S14.END OPTION 1 INIT WITH [pp] .P0 This command resets _HEX to its initial conditions. Virtual memory is set to value pp (default FF), the transfer address values is set to 0000, program name to null. .;S14.OPTION 1 .;DSR.IF HELP .b1 2 MOVE .p8 .;DSR.ELSE HELP .;S14.ELSE 1 .;BON^= .;CND.HL2 MOVE .;CND.i8 .;BON\= .;DSR.ENDIF HELP .;S14.END OPTION 1 MOVE BYTE FROM _*_*_*_* TO _*_*_*_* .br or######MOVE WORD FROM _*_*_*_* TO _*_*_*_* .P0 where _*_*_*_*'s represent either a hex number valid under the current offset, or a pseudo-register specification. .P0 MOVE is a variation of the COPY command. It is limited to a one byte or one word transfer, but can access the pseudo-register set. Like COPY, MOVE has no affect on the source area. A word moves copies the entire word at one time, rather than bytewise as in copy. .;S14.OPTION 1 .;DSR.IF HELP .b1 2 MULTIPLY .P8.TS12 .;DSR.ELSE HELP .;S14.ELSE 1 .;BON^= .;CND.HL2 MULTIPLY .;CND.I8.TS12 .;BON\= .;DSR.ENDIF HELP .;S14.END OPTION 1 MULTIPLY [SIGNED] [ODD/EVEN] FROM aaaa THRU bbbb [STEP ss] BY pp .p0 multiplies every ss'th byte from aaaa to bbbb by pp, and replaces it with the result. Source and pp are considered unsigned unless the SIGNED option is given. .;S14.OPTION 1 .;DSR.IF HELP .b1 2 NAME .p8 .;DSR.ELSE HELP .;S14.ELSE 1 .;BON^= .;CND.HL2 NAME .;CND.i8 .;BON\= .;DSR.ENDIF HELP .;S14.END OPTION 1 NAME [nnnnnnnn] .P0 If nnnnnnnn is given, this becomes the new 1-8 character program name. If nnnnnnnn is omitted, the current name (if any) is displayed. .;S14.OPTION 1 .;DSR.IF HELP .b1 2 NEGATE .p8.TS12 .;DSR.ELSE HELP .;S14.ELSE 1 .;BON^= .;CND.HL2 NEGATE .;CND.i8.TS12 .;BON\= .;DSR.ENDIF HELP .;S14.END OPTION 1 NEGATE [ODD/EVEN] FROM aaaa THRU bbbb [STEP ss] .p0 sets every ss'th location from aaaa to bbbb to its two's complement, i.e_. every byte is negated. .;S14.OPTION 1 .;DSR.IF HELP .b1 2 OFFSET .p8 .;DSR.ELSE HELP .;S14.ELSE 1 .;BON^= .;CND.HL2 OFFSET .;CND.i8 .;BON\= .;DSR.ENDIF HELP .;S14.END OPTION 1 OFFSET [aaaa] .P0 If aaaa is specified, that value becomes the new offset. The offset should be chosen so that the addresses to be handled will be offset internally to within 0000 to 7FFF. .P0 After the offset is given, the offsetting of addresses internally is totally transparent to the user, i.e_. the user specifies (and sees) actual addresses. .P0 The offset may be 4, 6, or 8 digits to specify 16, 24, or 32-bit mode. .P0 If aaaa is omitted, the current offset is displayed. .;S14.OPTION 1 .;DSR.IF HELP .b1 2 OR .p8 .;DSR.ELSE HELP .;S14.ELSE 1 .;BON^= .;CND.HL2 OR .;CND.i8 .;BON\= .;DSR.ENDIF HELP .;S14.END OPTION 1 OR [ODD/EVEN] FROM aaaa THRU bbbb [STEP ss] WITH pp .f.b1 logically inclusive OR's pp with every byte in the range, storing the result of each operation into memory. .;S14.OPTION 1 .;DSR.IF HELP .b1 2 READ .p8 .;DSR.ELSE HELP .;S14.ELSE 1 .;BON^= .;CND.HL2 READ .;CND.i8 .;BON\= .;DSR.ENDIF HELP .;S14.END OPTION 1 READ [[ODD/EVEN] FROM aaaa THRU bbbb [STEP ss]] .I13 [PLUS/MINUS cccc] [PARTIAL] FILE filespec .P0 where filespec is a file specification of an object file. (See FORMAT for default filetype). .P0 The code defined by the file will be placed in its proper location in virtual memory. Unspecified locations are not affected. .P0 Optionally, limits may be placed on the portion of the input file to be used to define virtual memory. If so specified, only code defining addresses from aaaa to bbbb will be placed in virtual memory. ss, if given, specifies that consecutive input bytes go into every ss'th location in memory -- used when the file was so output by WRITE. .P0 The transfer address and name (if given) update the current ones. .P0 PARTIAL says that a trailer record should not be expected (or allowed). .;S14.OPTION 1 .;DSR.IF HELP .b1 2 REMAINDER .p8.TS12 .;DSR.ELSE HELP .;S14.ELSE 1 .;BON^= .;CND.HL2 REMAINDER .;CND.i8.TS12 .;BON\= .;DSR.ENDIF HELP .;S14.END OPTION 1 REMAINDER [SIGNED] [ODD/EVEN] FROM aaaa THRU bbbb [STEP ss] BY pp .B1 sets every ss'th byte from aaaa to bbbb by pp, to the remainder (modulus) on dividing it by pp. Source and pp are considered unsigned unless the SIGNED option is given. .;S14.OPTION 1 .;DSR.IF HELP .b1 2 REVERSE .p8 .;DSR.ELSE HELP .;S14.ELSE 1 .;BON^= .;CND.HL2 REVERSE .;CND.i8 .;BON\= .;DSR.ENDIF HELP .;S14.END OPTION 1 REVERSE [ODD/EVEN] FROM aaaa THRU bbbb [STEP ss] .P0 reverses in place the values contained in every ss'th location from aaaa to bbbb i.e_. aaaa is exchanged with bbbb, aaaa+ss with bbbb+ss etc.. .;S14.OPTION 1 .;DSR.IF HELP .b1 2 ROTATE .p8 .;DSR.ELSE HELP .;S14.ELSE 1 .;BON^= .;CND.HL2 ROTATE .;CND.i8 .;BON\= .;DSR.ENDIF HELP .;S14.END OPTION 1 ROTATE LEFT/RIGHT [ODD/EVEN] FROM aaaa THRU bbbb [STEP ss] [BY pp] .P0 Internally rotates each ss'th byte from aaaa to bbbb left or right by pp bits. The default value of pp is 1. .P0 For LEFT rotates, bit 7 goes into bit 0; for RIGHT rotates, bit 0 goes into bit 7. .;S14.OPTION 1 .;DSR.IF HELP .b1 2 SEARCH .p8 .;DSR.ELSE HELP .;S14.ELSE 1 .;BON^= .;CND.HL2 SEARCH .;CND.i8 .;BON\= .;DSR.ENDIF HELP .;S14.END OPTION 1 SEARCH FROM aaaa THRU bbbb [STEP ss] FOR [NOT] pp/qqqq .P0 searches the specified range of virtual memory for bytes or words which match (or do not match) the value given. The addresses containing the value are displayed. In the case of a word value, the search is for that value in lo-hi order. .P0 pp is a 2-digit hex byte, or character specifier: 'char, _^char, _^_#, -char, ~char, or _#_#, (see DISPLAY). qqqq is a 4-digit hex word or "charchar. .;S14.OPTION 1 .;DSR.IF HELP .b1 2 SHIFT .p8 .;DSR.ELSE HELP .;S14.ELSE 1 .;BON^= .;CND.HL2 SHIFT .;CND.i8 .;BON\= .;DSR.ENDIF HELP .;S14.END OPTION 1 SHIFT LEFT/RIGHT [SIGNED] .I14 [ODD/EVEN] FROM aaaa THRU bbbb [STEP ss] [BY pp] .P0 Shifts each ss'th byte from aaaa to bbbb left or right by pp bits. The default value of pp is 1. .P0 For a LEFT shift, zeroes are moved into the lo bits. .P0 For a RIGHT shift, zeroes are moved into the high bits unless the SIGNED option is given, when the sign bit is replicated. .;S14.OPTION 1 .;DSR.IF HELP .b1 2 SUM .p8 .;DSR.ELSE HELP .;S14.ELSE 1 .;BON^= .;CND.HL2 SUM .;CND.i8 .;BON\= .;DSR.ENDIF HELP .;S14.END OPTION 1 SUM [ODD/EVEN] FROM aaaa THRU bbbb [STEP ss] [TO _*_*_*_*] .P0 calculates and displays on the terminal a 16-bit byte-wise summation of ss'th locations from aaaa to bbbb, optionally storing the result at address or pseudo-register _*_*_*_*. .;S14.OPTION 1 .;DSR.IF HELP .b1 2 TRANSFER .p8 .;DSR.ELSE HELP .;S14.ELSE 1 .;BON^= .;CND.HL2 TRANSFER .;CND.i8 .;BON\= .;DSR.ENDIF HELP .;S14.END OPTION 1 TRANSFER [aaaa] .P0 If aaaa is given, this becomes the new transfer address. If aaaa is omitted, the current one (or 0 if none) is displayed. .;S14.OPTION 1 .;DSR.IF HELP .b1 2 USE .p8 .;DSR.ELSE HELP .;S14.ELSE 1 .;BON^= .;CND.HL2 USE .;CND.i8 .;BON\= .;DSR.ENDIF HELP .;S14.END OPTION 1 USE vv OF ww FOR READ .p0 This command sets up _HEX to handle files in which the basic addressable unit is wider than eight bits. The command instructs READ to input only one 8-bit section of the addressable unit at each location. Thus the USE command allows these files to be split into partitions suitable for loading into 8-bit PROMs. .p0 ww represents the number of 8-bit groups that make up each addressable unit (the width of the addressable unit must be a multiple of eight bits). vv specifies which of the bb bit groups is to be input as the value of a location. .p0 Note that USE only functions sensibly with file formats which give a single load address (FAIRCHILD, TASK, and WHITESMITHS). Other formats confuse READ because they update the load address at regular intervals (often every file record). Use the range specification's STEP option for other formats. .;S14.OPTION 1 .;DSR.IF HELP .b1 2 WRITE .p8 .;DSR.ELSE HELP .;S14.ELSE 1 .;BON^= .;CND.HL2 WRITE .;CND.i8 .;BON\= .;DSR.ENDIF HELP .;S14.END OPTION 1 WRITE [ODD/EVEN] FROM aaaa THRU bbbb [STEP ss] .I14 [PLUS/MINUS cccc] [PARTIAL] [WIDTH vv/vvvv] FILE filespec .P0 creates an object file defining locations aaaa to bbbb. .P0 If given, vv determines the maximum number of bytes output per line, by causing a new record to be started at addresses which are exact multiples of vv, e.g_. if vv_=10, records start at addresses aa00, aa10, aa20 ..., and the maximum length is thus 16_. bytes. .P0 For PROM programmer formats (HEX and OCTAL) vvvv is a 4-digit PROM size. The STEP range argument may be used to generate hi and lo byte PROM files. .P0 The current program name will be included in the object file if the current object format provides for this. A trailer record containing the transfer address (if any) will be written unless suppressed by PARTIAL. .P0 APPEND (q.v.) is the same as WRITE, except that data is added to an old file, without writing a header. .;S14.OPTION 1 .;DSR.IF HELP .b1 2 XOR .p8 .;DSR.ELSE HELP .;S14.ELSE 1 .;BON^= .;CND.HL2 XOR .;CND.i8 .;BON\= .;DSR.ENDIF HELP .;S14.END OPTION 1 XOR [ODD/EVEN] FROM aaaa THRU bbbb [STEP ss] WITH pp .f.b1 logically exclusive OR's pp with every byte in the range, storing the result of each operation back into memory. .;S14.OPTION 1 .;DSR.IF HELP .b1 2 . .p8 .;DSR.ELSE HELP .;S14.ELSE 1 .;BON^= .;CND.HL2 .#and $ (SEND CLI COMMAND) .;CND.i8 .;BON\= .;DSR.ENDIF HELP .;S14.END OPTION 1 .;DSR.IF VMS _.#CLI command .;S14.IF 4 .;S14.OPTION 1 .;S14.ELSE 1 .;DSR.IFNOT HELP .i8 $#CLI command .;DSR.ENDIF HELP .;S14.END OPTION 1 .;S14.ELSE 4 .;DSR.ELSE VMS .;S14.OPTION 1 .;S14.ELSE 1 .;DSR.IFNOT HELP .i8 _.#[CLI command] .;DSR.ENDIF HELP .;S14.END OPTION 1 $#[CLI command] .;S14.END OPTION 4 .;DSR.ENDIF VMS .P0 sends the rest of the line after the _. .;S14.OPTION 1 .;S14.ELSE 1 .;DSR.IFNOT HELP or $ .;DSR.ENDIF HELP .;S14.END OPTION 1 to the current command line interpreter (DCL or MCR). Control returns to _HEX after the command is executed. This enables a system command (e.g_. an assembly) to be issued without losing the contents of _HEX's buffer and any edits made. .;DSR.IFNOT VMS .;S14.OPTION 4 .;S14.ELSE 4 .P0 If command is omitted, _HEX suspends itself, allowing you to send multiple lines to the CLI. To continue, type UNS _HEX. .;S14.END OPTION 4 .;DSR.ENDIF VMS .;S14.OPTION 1 .;DSR.IF HELP .b1 2 $ .P8 .;DSR.IF VMS .;S14.IF 4 $#CLI command .;S14.ELSE 4 .;DSR.ELSE VMS $#[CLI command] .;S14.END OPTION 4 .;DSR.ENDIF VMS .P0 sends the rest of the line after the $ to the current command line interpreter (DCL or MCR). Control returns to _HEX after the command is executed. This enables a system command (e.g_. an assembly) to be issued without losing the contents of _HEX's buffer and any edits made. .;DSR.IFNOT VMS .;S14.OPTION 4 .;S14.ELSE 4 .P0 If command is omitted, _HEX suspends itself, allowing you to send multiple lines to the CLI. To continue, type UNS _HEX. .;S14.END OPTION 4 .;DSR.ENDIF VMS .;DSR.ENDIF HELP .;S14.END OPTION 1