H H AAA N N DDDD L EEEEE H H A A NN N D D L E HHHHH AAAAA N N N D D L EEEEE H H A A N NN D D L E H H A A N N DDDD LLLLL EEEEE HANDLE V05.03 A handler parameter listing program for RT-11 and TSX-Plus 06 Sep 1991 William K. Walker RDB/Alpha Systems P. O. Box 149 Alpha, OH 45301-0149 (513) 426-0344/426-7094 rdbalpha@mcimail.com HANDLE -- Handler Parameter Listing Program, V05.03 Page 2 Overview and Syntax HANDLE inspects an RT-11 or TSX-Plus handler file and lists its parameters. An abbreviated listing is produced for handlers built for RT-11 monitors prior to V5.3. HANDLE can list the following parameters, if they are specified in the handler file (numbers indicate items modified or omitted for old-format -- V5.2 or earlier -- handlers): o release/version [1] o sysgen options o handler status (both words) [2] o device code o device class [3] o device class modifier [3] o device size o installation and display CSRs o slot id (some PRO3xx handlers) o vector addresses, and PC and PSW values o handler size o primary driver (boot) size o presence of installation code o special function codes and code types [3] o handler service routine pointers [3] o data table descriptors [3] o extended device unit support [3] o DMA support parameters [3] o SET options [1] The release/version data starting at file address 110 are treated cautiously for old-format handlers. If the release word does not look "reasonable", the contents of the release/version area are not listed. [2] Handler status word 2 data (file address 36) are not listed. [3] Not listed. Syntax: r[un] handle file-spec[/option] or [run ]handle file-spec[/option] where file-spec is an RT-11 file specification (the default extension is "sys"), and /option is one of the following (the default is /N): option effect ------ ------ /?,/H,/I display help text /O assume "old" format /N assume "new" format (Note that /O can also be used for a "brief" listing.) HANDLE -- Handler Parameter Listing Program, V05.03 Page 3 Hints, Messages and Bug Reports I have checked HANDLE with handlers as early as V4 (circa 1982) and as recent as V5.6, and it works fine. Still, HANDLE is not infallable. Beginning with the V5.3 release, the RT-11 develop- ers began adding a lot of new handler functionality, gobbling up a large portion of the formerly "reserved" space in block 0. However, some programmers had been using these reserved areas for their own purposes. Besides providing an object lesson on the importance of adhering to published standards, these sort of conflicts cause problems for anyone attempting to write a handler listing program that is "backward-compatible" across a broad range of RT-11 releases. HANDLE attempts to determine whether a handler is old- or new-format by checking block 0, location 0 of the handler file for the presence of the RAD50 value "HAN." But this test may fail when applied to the occasional third-party handler of uncertain parentage. Thus, the "/O" and "/N" options. --------------- Besides the usual error messages from the Command String Inter- preter (CSI), HANDLE flags two additional conditions. HANDLE first checks location 0 of the handler file for the radix-50 value "HAN", which denotes a V5.3+ compatible handler. If this check fails, and /N is in effect, HANDLE issues the warn- ing message: ?HANDLE-W-Possible old-style handler file The other message is triggered by a hard read error. This condi- tion is treated as fatal, and causes an immediate exit with an error message of the form: ?HANDLE-F-Error reading file-spec Here, "file-spec" is the name of the file HANDLE was attempting to read when the error occurred. --------------- Bug reports or suggestions for improvement should be sent to: William K. Walker 740 Alpha Rd., Box 149 CompuServe: 71066,24 Alpha, OH 45301-0149 MCI Mail: rdbalpha (513) 426-0344 Internet: rdbalpha@mcimail.com HANDLE -- Handler Parameter Listing Program, V05.03 Page 4 Map of Locations Displayed * indicates data or pointer to data displayed by HANDLE + indicates location is reported on or checked "pointer" means "file address" (offset from start of block 0) "offset" means "offset from current location counter" ---------------------------------------------------------------- block 0: -------- 000000 h.han rad50 "HAN" + 000002 h.fetc fetch handler service routine (HSR) * 000004 h.rele release HSR * 000006 h.load load HSR * 000010 h.unlo unload HSR * 000012- (reserved) 000016 000020 h.clas device classification * 000021 h.mod device classification modifier * 000022 h.spf1 1st special function list * 000024 h.spf2 2nd special function list * 000026 h.spf3 3rd special function list * 000030 h.spfx special function extension list pointer * 000032 h.repl bbr geometry table pointer * 000034 (reserved) 000036 h.sts2 2nd device status word * 000040- (reserved) 000050 000052 h.siz handler size * 000054 h.dsiz device size, in blocks * 000056 h.dsts device status word * 000060 h.gen sysgen options * 000061 (reserved) 000062 h.bptr primary bootstrap pointer 000064 h.blen bootstrap size, in bytes * 000066 h.read bootstrap read routine pointer 000070 h.type rad50 data table name -or- -1 * 000072 h.data descriptors pointer -or- data tables pointer * 000074 h.dlen total size of all data table descriptor lists 000076 h.unit extended device-unit ownership table pointer + 000100 h.64um ext. dev.-unit handler one-letter name (rad50) * and device characteristics for UMR support 000102 (reserved) 000104 pointer to more "block 0 type" info (?) 000106 h.user user data table descriptor pointer * 000110 release, in rad50 * 000112- version(s) * 000173 000164- h.dcsr display CSR(s) * 000174 000176 h.icsr installation CSR * 000200 h.idk data device installation entry point + 000202 h.isy system device installation entry point 000204- installation code 000377 000400- h.set SET code * 000777 HANDLE -- Handler Parameter Listing Program, V05.03 Page 5 Map of Locations Displayed ---------------------------------------------------------------- block 1: -------- 001000 h1.vec vector address -or- vector table offset * 001002 h1.abt interrupt service routine entry point offset * 001004 h1.hld interrupt priority (340 usually) * 001010 h1.flg flag word 001012 h1.nop NOP + more flags (optional) 001016 h1.fg2 2nd flag word (optional) + 001020 h1.sck spfun address check routine pointer (optional) 001022 h1.sdf DMA spfun table pointer (optional) 001024 h1.ldt LD translation table pointer (optional) ---------------------------------------------------------------- HANDLE -- Handler Parameter Listing Program, V05.03 Page 6 Examples .handle sy:ldx file SY:LDX.SYS release V05, version(s) 59 1282 7171 sysgen mmg$t tim$it status filst$ spfun$ varsz$ status2 MOUNT/DISMOUNT enabled code 46 (LD - Logical disk) class 4 (RT-11 file structured disk) device 0. blocks csr 0 vector 0, pc=base+1424, ps=340 handler 1526 bytes, 427. words install check spfun(s) 372, 373 pointers fetch=3172, release=3070, load=3172, unload=3070 table(s) type=LD, address=3070, size=0 bytes, 0. words extended device-unit support, device name="L" SET LD CLEAN SET LD EMPTY SET LD [NO]WRITE SET LD [NO]BPT=decimal-value .handle sy:ldx/o file SY:LDX.SYS release V05, version(s) 59 1282 7171 sysgen mmg$t tim$it status filst$ spfun$ varsz$ code 46 (LD - Logical disk) device 0. blocks csr 0 vector 0, pc=base+1424, ps=340 handler 1526 bytes, 427. words install check SET LD CLEAN SET LD EMPTY SET LD [NO]WRITE SET LD [NO]BPT=decimal-value HANDLE -- Handler Parameter Listing Program, V05.03 Page 7 Examples .handle sy:dux file SY:DUX.SYS release V05, version(s) 173 01 08 184 sysgen mmg$t tim$it status filst$ spfun$ varsz$ code 50 (DU - MSCP class disk) class 4 (RT-11 file structured disk) modifier 2 (spfun 376,377 extended error data) device 0. blocks csr 172150 vector 154, pc=base+306, ps=340 handler 440 bytes, 144. words boot 1000 bytes, 256. words install check spfun(s) 371, 372, 373 360 377 (type=read) 376 (type=write) 367 (type=read) 366 (type=write) pointers fetch=3000, release=3176, load=3000, unload=3176 table(s) type=DU, address=7070, size=44 bytes, 18. words type=UMS, address=1032, size=2 bytes, 1. words DMA device, permanent UMRs=2, I/O request serialization SET DU UNIT=decimal-value SET DU PART=decimal-value SET DU PORT=decimal-value SET DU CSR=octal-value SET DU VECTOR=octal-value SET DU CSR0=octal-value SET DU VEC0=octal-value SET DU RETRY=decimal-value HANDLE -- Handler Parameter Listing Program, V05.03 Page 8 Examples .handle sy:mux file DK:MUX.SYS release V05, version(s) 91 173 01 01 91 21 sysgen mmg$t tim$it status specl$ hndlr$ spfun$ abtio$ code 60 (MU - TMSCP class magtape) class 5 (Magtape) device 0. blocks csr 174500 vector 260, pc=base+316, ps=340 handler 6366 bytes, 1659. words install check spfun(s) 372, 373, 375, 376 (type=motion-only) 360 352, 354 377 (type=write) 371 (type=write) 370 (type=read) pointers fetch=11000, release=11176, load=11000, unload=11176 table(s) type=MU, address=14070, size=10 bytes, 4. words type=UMS, address=1032, size=2 bytes, 1. words DMA device, permanent UMRs=2, I/O request serialization SET MU UNIT=decimal-value SET MU DENSE=decimal-value SET MU DEFALT SET MU PORT=decimal-value SET MU CSR=octal-value SET MU VECTOR=octal-value SET MU CSR0=octal-value SET MU VEC0=octal-value SET MU RETRY=decimal-value HANDLE -- Handler Parameter Listing Program, V05.03 Page 9 Examples .handle sy:spx file DK:SPX.SYS release V05, version(s) 23 sysgen mmg$t tim$it status wonly$ specl$ hndlr$ abtio$ code 55 (SP - Transparent spooler) class 7 (Printer) device 0. blocks csr 0 vector 110, pc=base+420, ps=340 handler 776 bytes, 255. words install check pointers fetch=2476, release=0, load=2476, unload=0 SET SP [NO]WAIT SET SP NEXT SET SP KILL SET SP EXIT SET SP [NO]FORM0 SET SP ENDPAG=decimal-value .handle sy:slx file DK:SLX.SYS release V05, version(s) 68 sysgen mmg$t tim$it status ronly$ wonly$ spfun$ code 51 (SL - Single-line editor) class 14 (Pseudohandler) device 0. blocks csr 0 vector 0, pc=base+136, ps=340 handler 2244 bytes, 594. words install check spfun(s) 372 pointers fetch=0, release=0, load=0, unload=10520 table(s) type=SL, address=10520, size=0 bytes, 0. words SET SL ASK SET SL OFF SET SL ON SET SL KMON SET SL [NO]LEARN SET SL [NO]KED SET SL [NO]RECALL SET SL [NO]LET SET SL [NO]SYSGEN SET SL [NO]TTYIN SET SL VT100 SET SL VT102 SET SL WIDTH=decimal-value