JTDRIVER ;skeleton driver implementing u 2-DEC-1994 10:13:13 AMAC V2.1-13-2671 Page 1 V01H 2-DEC-1994 10:12:45 [EVERHART.JT]JTDRIVER_S2.MAR;120 00000001 00000000 1 evax = 1 00000001 00000000 2 alpha=1 00000001 00000000 3 bigpage=1 00000020 00000000 4 addressbits=32 00000001 00000000 5 step2=1 00000000 00000000 6 msetrp=0 ;turn mousetrap stuff on 00000000 7 ;evxrei=0 ; try to REI to original PSL 00000000 8 ;evxr64d=0 ;macro-64 RET stuff 00000000 9 .TITLE JTDRiver ;skeleton driver implementing ucb linkage 00000000 10 .IDENT 'V01h' 00000000 50 .define_pal rd_ps, 145 00000000 51 .define_pal wr_ps_sw 156 00000000 52 .define_pal getps, 145 ?01F 00000000 53 .if df,evxrei ?01F 00000000 54 .define_pal rei, 146 ?01F 00000000 55 .endc ?01F 00000000 56 .if df,evxr64d ?01F 00000000 57 .define_pal rei, 146 ?01F 00000000 58 .endc 00000000 59 ;b$fmt$=0 ;disable "leave io$_format alone" mode 00000000 60 ; Copyright 1993,1994 Glenn C. Everhart 00000000 61 ; All rights reserved 00000000 62 ; Author: Glenn C. Everhart 00000000 63 ; 00000000 64 ; mods: 00000000 65 ; 30/jun/1994 GCE - Change kernel mapping logic to use a bitmap instead 00000000 66 ; so we can basically map everything (to within an ambiguity factor). 00000000 67 ; Use a 2KB buffer bitmap, which covers 16000 file numbers and will do 00000000 68 ; a pretty good job of rejecting the rest. Then we can turn on the logic 00000000 69 ; to only look at mapped files and save taking a performance hit on 00000000 70 ; anything else (to all intents & purposes). For the moment just make the 00000000 71 ; bitmap space a 2048 byte block constant in size for simplicity. In a 00000000 72 ; later version we may make it vary in size. Use of this will allow us 00000000 73 ; to protect ANY number of files even if the ACE gets deleted on them 00000000 74 ; all... 00000000 75 ; 7/7/94 gce - Deallocate LDT only AFTER the dowait call... 00000000 76 ; 7/8/94 gce -step2 conversion begun 00000000 77 ; 00000000 78 ; 00000000 00000000 79 real_pvt=0 ;define to include code that on bit 2048 prevents opens on 00000000 80 ;assigned devices, privs or not. 0000005F 00000000 81 .ntype __,R31 ; set EVAX nonzero if R31 is a register ?01T 00000000 82 .if eq <__ & ^xF0> - ^x50 00000001 ?01T 00000000 83 EVAX = 1 ?01F 00000000 84 .iff ?01F 00000000 85 ;EVAX = 0 ?01F 00000000 86 .endc ?01T 00000000 87 .if df,evax 00000001 ?01T 00000000 88 evax = 1 00000001 ?01T 00000000 89 alpha=1 00000001 ?01T 00000000 90 bigpage=1 00000020 ?01T 00000000 91 addressbits=32 ?01T 00000000 92 ; ;... EVAX=1 -> Step1 00000002 ?02T 00000000 93 .iif ndf WCB$W_NMAP, evax=2 ;... EVAX=2 -> Step2 (ndf as of T2.0) 00000001 ?02T 00000000 94 .iif ndf WCB$W_NMAP, step2=1 ;... EVAX=2 -> Step2 (ndf as of T2.0) ?01T 00000000 95 .endc 00000000 00000000 96 x$$$dt=0 JTDRIVER ;skeleton driver implementing u 2-DEC-1994 10:13:13 AMAC V2.1-13-2671 Page 2 V01H 2-DEC-1994 10:12:45 [EVERHART.JT]JTDRIVER_S2.MAR;120 ?01F 00000000 97 .if ndf,evax ?01F 00000000 98 .macro .jsb_entry ?01F 00000000 99 ; jsb entry ?01F 00000000 100 .endm ?01F 00000000 101 .macro driver_data ?01F 00000000 102 .PSECT $$$105_PROLOGUE ?01F 00000000 103 .endm ?01F 00000000 104 .macro driver_code ?01F 00000000 105 .PSECT $$$115_DRIVER ?01F 00000000 106 .endm ?01F 00000000 107 .endc 00000000 108 ; above for Alpha only. 00000000 109 ; 00000000 110 ; function: "Tricks" driver. 00000000 111 ; Implements FDT capture (based on code published on sigtapes and 00000000 112 ; info-vax for "standard" capture techniques) and implements file 00000000 113 ; marking and transparent daemon access on open and various other 00000000 114 ; times. Also throws in fragmentation avoider. 00000000 115 ; 00000000 116 ; the driver works by intercepting FDT entries of a host driver and 00000000 117 ; adding its own ahead of them. The most complex intercept is the 00000000 118 ; open one (accfilt and on). It decides the i/o is of interest and 00000000 119 ; issues its own $qio to read the file ACL to look for our ACE (application 00000000 120 ; ACE, flagged by my initials). If this is found or the file is in an 00000000 121 ; internal "look at" list then some actions happen immediately: 00000000 122 ; setting privs/identifiers/base priority/softlinks. If the "send to 00000000 123 ; daemon" flag is set in the ace (1 bit of flags) the open daemon 00000000 124 ; (jtdmn) is sent a message and we wait on EF 31 till the daemon sends 00000000 125 ; a special knl ast back. Note our qio thread produces a normal 00000000 126 ; kernel AST and that does a special kernel AST from which the 00000000 127 ; daemon call may be done. Once back, we reissue the FDT calls lower 00000000 128 ; on kernel stack. On completing this we flag the mainline may go on 00000000 129 ; set efn 31 and our "waitfor" cell, and go on. Once the mainline resumes 00000000 130 ; it can delete the LDT (local area stuff) if appropriate or shorten 00000000 131 ; it and free most of the memory grabbed during open. The open daemon 00000000 132 ; can signal to either cause the i/o to fail or to make it seem to 00000000 133 ; succeed without actually doing the open by appropriate return codes. 00000000 134 ; 00000000 135 ; delete and extend daemons are basically similar (as a directory daemon 00000000 136 ; would be) but since they work on all files they omit the kernel thread 00000000 137 ; that does its own I/O. 00000000 138 ; 00000000 139 ; For softlinks, in addition to moving file opens there 'n' 00000000 140 ; back, keep a device table to let us refer to devices by using some 00000000 141 ; hi bits in file ID & RVN areas to refer to rel. vol of a softlink-set 00000000 142 ; by editing dir files on the way by when opened to have these bogus 00000000 143 ; file IDs. On create, must check DID field & see if we have an LDT 00000000 144 ; with a flag for that dir, so we'd again clobber create (& user chnl) to 00000000 145 ; point at the other disk during time the file's open. That may let us 00000000 146 ; produce the illusion that softlinked dirs really "are" on the current 00000000 147 ; volume. 00000000 148 ; 00000000 149 ; We will support file moving, delete management, dynamic priority, 00000000 150 ; privs & identifiers, daemon-based additional access controls, 00000000 151 ; (which might be file integrity tests & conditional softlinks), 00000000 152 ; and space management eventually. Also we'll eventually support 00000000 153 ; special action on directore read-in so the dirs' files get arbitrated JTDRIVER ;skeleton driver implementing u 2-DEC-1994 10:13:13 AMAC V2.1-13-2671 Page 3 V01H 2-DEC-1994 10:12:45 [EVERHART.JT]JTDRIVER_S2.MAR;120 00000000 154 ; by a daemon instead of directly read. That'll let them be treated as 00000000 155 ; softlinks too without having to clutter the disk, (ever maybe) 00000000 156 ; with junk file headers. 00000000 157 ; (juicer has dir layout docs in its comments.) 00000000 158 ; 00000000 159 ; Initial version basically to support security & limited hsm stuff, 00000000 160 ; not ALL softlink possibilities. 00000000 161 ; 00000000 162 ; For a follow-on, we will add support for removing file headers completely. 00000000 163 ; Note that we can do a softlink to other files so long as we can tell 00000000 164 ; that the file should be so linked. Having a bitmap to let us filter 00000000 165 ; out uninteresting files, our open daemon can tell that. To handle requests 00000000 166 ; other than open we need to catch access without io$m_access, io$_acpcontrol, 00000000 167 ; and some other functions of io$_modify and maybe io$_delete (depends on 00000000 168 ; policy decision...SHOULD a file "somewhere else" be deleted apart from 00000000 169 ; its "home" location...I think not, so just fake success for that). Where 00000000 170 ; these don't open a file, we do the softlink by resetting the IRP only, 00000000 171 ; not the channel too. Thus no catching logic is needed to put the user 00000000 172 ; channel back. 00000000 173 ; By catching I/O in this way we can read in a linked directory from 00000000 174 ; "somewhere" and just tag those file IDs as being in our bitmap, and 00000000 175 ; record for the daemon that those files are on device xxx:, then let 00000000 176 ; the daemon return the correct device softlink info to let the file 00000000 177 ; be accessed at its home. The directory would reside on the local 00000000 178 ; disk. When a file got created in it, the directory would get a real 00000000 179 ; entry. An inswap would need the "somewhere" entry to be removed and 00000000 180 ; a real one added and the daemon's data telling it where the real file 00000000 181 ; was reset. At each directory open for such a directory that was "really" 00000000 182 ; somewhere else, though, a merge of the then-current remote directory 00000000 183 ; and the local one would be needed, concurrently updating the daemon's 00000000 184 ; database, so new files created on the other device would appear in 00000000 185 ; the local file, but files really on the local disk would appear. There 00000000 186 ; could be problems where the directory read was from the XQP with 00000000 187 ; this, though, so we may want to just pull the directory in every time 00000000 188 ; regardless. We get control ahead of the XQP, but must ensure all 00000000 189 ; processing of this kind is in another process, as the XQP is not in 00000000 190 ; an interruptable point for this stuff. 00000000 191 ; 00000000 192 ; It is possible to have directory entries pointing at nonexistent 00000000 193 ; file headers and file IDs and have the access daemon (that handles 00000000 194 ; io$_access, io$_acpcontrol etc.) generate a softlink to some real 00000000 195 ; file on the fly. If the nonexistent directory entries are flagged by, 00000000 196 ; say, bit 8 of the RVN being set, it might be possible to reset the 00000000 197 ; access to the desired one in kernel mode. If done by a daemon using 00000000 198 ; some other flagging (a bitmap maybe? Or maybe use RVN 255?) then 00000000 199 ; the daemon is responsible for setting the correct FID and device into 00000000 200 ; the request and device can be stored in the daemon database. Thus 00000000 201 ; an outswapped file could be completely offline, yet the directory 00000000 202 ; entry could be "there", and in moments of not inswapping it might be 00000000 203 ; left pointing at some scratch file header that would point at a zero 00000000 204 ; length file, via dynamic softlink, so that directory entries and so 00000000 205 ; on would succeed even though their info would be fairly useless. 00000000 206 ; (It's possible to reset the EOF pointer of these to the right size 00000000 207 ; and possibly reset the date before each access should we choose to 00000000 208 ; do so; file would be zero size anyhow. If a daemon access is used, 00000000 209 ; the extra overhead of resetting date every time and so on might not 00000000 210 ; be too bad. It would mean that the outswapped file size and at least JTDRIVER ;skeleton driver implementing u 2-DEC-1994 10:13:13 AMAC V2.1-13-2671 Page 4 V01H 2-DEC-1994 10:12:45 [EVERHART.JT]JTDRIVER_S2.MAR;120 00000000 211 ; creation date would still be visible even if the file ID was actually 00000000 212 ; useless.) 00000000 213 ; A second release would be usefully able to perform these operations 00000000 214 ; so that outswapped file headers could be purged away, yet directory 00000000 215 ; operations would continue to be able to show the files. This would mean 00000000 216 ; that the directory files would continue to be large, but the index 00000000 217 ; file would not grow boundlessly. If such a directory were outswapped, 00000000 218 ; it might be inswapped later,being able to outswap only if it had no 00000000 219 ; current files. This is a little easier than softlinking directories 00000000 220 ; since no merging is needed. Directory opens are usually done by 00000000 221 ; RMS in exec mode, and this would make it easy to shove an outswapped 00000000 222 ; directory back in, from our daemon, doing so before the XQP actually 00000000 223 ; gets the request queued to move anything. We'd need extra data in 00000000 224 ; a daemon database and possibly in a knl mode bitmap to flag what 00000000 225 ; was a directory; an outswapped directory might need to be flagged 00000000 226 ; with an otherwise illegal FID so we would have a sure and certain 00000000 227 ; tag to use on it. Inswapping it would then have to replace the 00000000 228 ; FID in the parent directory. The directory file format seems not to 00000000 229 ; have any checksums, so this will be comparatively clean and simple. 00000000 230 ; Flagging in this way would allow clear detection of directory files, 00000000 231 ; though the daemon would need to back up the test with its own data 00000000 232 ; so inadvertent bogus matches would just be allowed to continue. (One 00000000 233 ; might coopt RVN 255 and RVN 254 for directories and files respectively 00000000 234 ; where one wanted a simple tag that could be used to recognize swapped 00000000 235 ; dirs and files.) This way one could get rid of file headers off a disk, 00000000 236 ; and periodically trim off directory files, yet the directories would 00000000 237 ; still apparently be there if anyone looked (and if a mode to open 00000000 238 ; them were selected; if not, the directory file could just be pointed 00000000 239 ; at some ordinary file and the open would NOT show another directory). 00000000 240 ; Normally you'd want to limit depth of opening old outswapped directories 00000000 241 ; by telling the daemon how old a directory might be and still be opened 00000000 242 ; (so a simple dir [...]*.* doesn't inswap everything unless that's really 00000000 243 ; wanted). Since you'd be regulating at the granularity of directories 00000000 244 ; filetype cuts might not show up, but directories would. Users could 00000000 245 ; reset directory creation dates with the FILE utility or similar if 00000000 246 ; they wanted to keep these dates useful. A script to reset directory 00000000 247 ; revision dates to the date of last file creation should be supplied 00000000 248 ; to be run periodically, so that this information would be more 00000000 249 ; useful; VMS normally doesn't maintain it. 00000000 250 ; 00000000 251 ; Glenn C. Everhart, November 1993 00000000 252 ; 00000000 253 ;vms$$v6=0 ;add forvms v6 def'n 00000001 00000000 254 vms$v5=1 00000000 255 ; define v5$picky also for SMP operation 00000001 00000000 256 v5$picky=1 00000000 257 .SBTTL EXTERNAL AND LOCAL DEFINITIONS 00000000 258 00000000 259 ; 00000000 260 ; EXTERNAL SYMBOLS 00000000 261 ; 00000000 262 .library /SYS$SHARE:LIB/ 00000000 263 00000000 264 ; $ADPDEF ;DEFINE ADAPTER CONTROL BLOCK 00000000 419 $CRBDEF ;DEFINE CHANNEL REQUEST BLOCK X02/002 ?01T 00000000 .IIF NDF MACRO64$, .NOCROSS X03/006 ?01T 00000000 .iif greater __temp_count, _mtu_validate_keyword JTDRIVER ;skeleton driver implementing u 2-DEC-1994 10:13:13 AMAC V2.1-13-2671 Page 5 V01H EXTERNAL AND LOCAL DEFINITIONS 2-DEC-1994 10:12:45 [EVERHART.JT]JTDRIVER_S2.MAR;120 X03/196 ?01T 00000000 .iif greater __temp_count, _mtu_validate_keyword X02/008 ?01T 00000000 .IIF NDF MACRO64$, .CROSS 00000000 907 $DYNDEF ;define dynamic data types X02/003 ?01T 00000000 .IIF NDF MACRO64$, .NOCROSS X02/1507?01T 00000000 .IIF NDF MACRO64$, .CROSS 00000000 1484 $DCDEF ;DEFINE DEVICE CLASS X02/003 ?01T 00000000 .IIF NDF MACRO64$, .NOCROSS X02/1776?01T 00000000 .IIF NDF MACRO64$, .CROSS 00000000 1533 $DDBDEF ;DEFINE DEVICE DATA BLOCK X02/003 ?01T 00000000 .IIF NDF MACRO64$, .NOCROSS X03/059 ?01T 00000000 .iif greater __temp_count, _mtu_validate_keyword X03/216 ?01T 00000000 .iif greater __temp_count, _mtu_validate_keyword X02/253 ?01T 00000000 .IIF NDF MACRO64$, .CROSS 00000000 1655 $DEVDEF ;DEFINE DEVICE CHARACTERISTICS X02/003 ?01T 00000000 .IIF NDF MACRO64$, .NOCROSS X02/411 ?01T 00000000 .IIF NDF MACRO64$, .CROSS 00000000 1757 $DPTDEF ;DEFINE DRIVER PROLOGUE TABLE X02/003 ?01T 00000000 .IIF NDF MACRO64$, .NOCROSS X03/059 ?01T 00000000 .iif greater __temp_count, _mtu_validate_keyword X03/375 ?01T 00000000 .iif greater __temp_count, _mtu_validate_keyword X02/412 ?01T 00000000 .IIF NDF MACRO64$, .CROSS 00000000 2042 $EMBDEF ;DEFINE ERROR MESSAGE BUFFER X03/003 ?01T 00000000 .IIF NDF MACRO64$, .NOCROSS X03/384 ?01T 00000000 .IIF NDF MACRO64$, .CROSS X03/003 ?01T 00000000 .IIF NDF MACRO64$, .NOCROSS X03/294 ?01T 00000000 .IIF NDF MACRO64$, .CROSS X03/003 ?01T 00000000 .IIF NDF MACRO64$, .NOCROSS X03/207 ?01T 00000000 .IIF NDF MACRO64$, .CROSS X03/003 ?01T 00000000 .IIF NDF MACRO64$, .NOCROSS X03/138 ?01T 00000000 .IIF NDF MACRO64$, .CROSS 00000000 2081 $IDBDEF ;DEFINE INTERRUPT DATA BLOCK X02/003 ?01T 00000000 .IIF NDF MACRO64$, .NOCROSS X03/059 ?01T 00000000 .iif greater __temp_count, _mtu_validate_keyword X03/186 ?01T 00000000 .iif greater __temp_count, _mtu_validate_keyword X02/223 ?01T 00000000 .IIF NDF MACRO64$, .CROSS 00000000 2573 $IODEF ;DEFINE I/O FUNCTION CODES X02/003 ?01T 00000000 .IIF NDF MACRO64$, .NOCROSS X02/1521?01T 00000000 .IIF NDF MACRO64$, .CROSS 00000000 2619 $DDTDEF ; DEFINE DISPATCH TBL... X02/003 ?01T 00000000 .IIF NDF MACRO64$, .NOCROSS X03/059 ?01T 00000000 .iif greater __temp_count, _mtu_validate_keyword X03/207 ?01T 00000000 .iif greater __temp_count, _mtu_validate_keyword X02/244 ?01T 00000000 .IIF NDF MACRO64$, .CROSS ?01T 00000000 2620 .if df,step2 00000028 ?01T 00000000 2621 ddt$l_fdt=ddt$ps_fdt_2 ?01T 00000000 2622 .endc 00000000 2747 $ptedef X02/003 ?01T 00000000 .IIF NDF MACRO64$, .NOCROSS X03/059 ?01T 00000000 .iif greater __temp_count, _mtu_validate_keyword X03/444 ?01T 00000000 .iif greater __temp_count, _mtu_validate_keyword X02/481 ?01T 00000000 .IIF NDF MACRO64$, .CROSS 00000000 2761 $vadef X02/003 ?01T 00000000 .IIF NDF MACRO64$, .NOCROSS X02/087 ?01T 00000000 .IIF NDF MACRO64$, .CROSS 00000000 3016 $IRPDEF ;DEFINE I/O REQUEST PACKET X02/003 ?01T 00000000 .IIF NDF MACRO64$, .NOCROSS X03/059 ?01T 00000000 .iif greater __temp_count, _mtu_validate_keyword JTDRIVER ;skeleton driver implementing u 2-DEC-1994 10:13:13 AMAC V2.1-13-2671 Page 6 V01H EXTERNAL AND LOCAL DEFINITIONS 2-DEC-1994 10:12:45 [EVERHART.JT]JTDRIVER_S2.MAR;120 X03/834 ?01T 00000000 .iif greater __temp_count, _mtu_validate_keyword X02/871 ?01T 00000000 .IIF NDF MACRO64$, .CROSS 00000000 3042 $irpedef X02/003 ?01T 00000000 .IIF NDF MACRO64$, .NOCROSS X03/059 ?01T 00000000 .iif greater __temp_count, _mtu_validate_keyword X03/147 ?01T 00000000 .iif greater __temp_count, _mtu_validate_keyword X02/184 ?01T 00000000 .IIF NDF MACRO64$, .CROSS 00000000 3300 $PRDEF ;DEFINE PROCESSOR REGISTERS X02/003 ?01T 00000000 .IIF NDF MACRO64$, .NOCROSS X02/819 ?01T 00000000 .IIF NDF MACRO64$, .CROSS 00000000 3957 $SSDEF ;DEFINE SYSTEM STATUS CODES X02/003 ?01T 00000000 .IIF NDF MACRO64$, .NOCROSS X02/2014?01T 00000000 .IIF NDF MACRO64$, .CROSS 00000000 4525 $UCBDEF ;DEFINE UNIT CONTROL BLOCK X02/003 ?01T 00000000 .IIF NDF MACRO64$, .NOCROSS X03/059 ?01T 00000000 .iif greater __temp_count, _mtu_validate_keyword X03/1773?01T 00000000 .iif greater __temp_count, _mtu_validate_keyword X02/1810?01T 00000000 .IIF NDF MACRO64$, .CROSS ?01T 00000000 4526 .if df,step2 ?01T 00000000 4540 $fdt_contextdef X02/003 ?02T 00000000 .IIF NDF MACRO64$, .NOCROSS X03/059 ?02T 00000000 .iif greater __temp_count, _mtu_validate_keyword X03/111 ?02T 00000000 .iif greater __temp_count, _mtu_validate_keyword X02/148 ?02T 00000000 .IIF NDF MACRO64$, .CROSS ?01T 00000000 4541 .endc 00000000 4588 $sbdef ; system blk offsets X02/003 ?01T 00000000 .IIF NDF MACRO64$, .NOCROSS X03/059 ?01T 00000000 .iif greater __temp_count, _mtu_validate_keyword X03/210 ?01T 00000000 .iif greater __temp_count, _mtu_validate_keyword X02/247 ?01T 00000000 .IIF NDF MACRO64$, .CROSS 00000000 4608 $psldef X02/003 ?01T 00000000 .IIF NDF MACRO64$, .NOCROSS X02/105 ?01T 00000000 .IIF NDF MACRO64$, .CROSS 00000000 4609 $prdef 00000000 4673 $acldef X02/003 ?01T 00000000 .IIF NDF MACRO64$, .NOCROSS X02/237 ?01T 00000000 .IIF NDF MACRO64$, .CROSS 00000000 4697 $rsndef ;define resource numbers X02/003 ?01T 00000000 .IIF NDF MACRO64$, .NOCROSS X02/117 ?01T 00000000 .IIF NDF MACRO64$, .CROSS 00000000 4830 $acedef X02/003 ?01T 00000000 .IIF NDF MACRO64$, .NOCROSS X02/440 ?01T 00000000 .IIF NDF MACRO64$, .CROSS 00000000 4845 $VECDEF ;DEFINE INTERRUPT VECTOR BLOCK X02/003 ?01T 00000000 .IIF NDF MACRO64$, .NOCROSS X03/059 ?01T 00000000 .iif greater __temp_count, _mtu_validate_keyword X03/114 ?01T 00000000 .iif greater __temp_count, _mtu_validate_keyword X02/151 ?01T 00000000 .IIF NDF MACRO64$, .CROSS 00000000 5101 $pcbdef X02/003 ?01T 00000000 .IIF NDF MACRO64$, .NOCROSS X03/059 ?01T 00000000 .iif greater __temp_count, _mtu_validate_keyword X03/837 ?01T 00000000 .iif greater __temp_count, _mtu_validate_keyword X02/874 ?01T 00000000 .IIF NDF MACRO64$, .CROSS 00000000 5120 $statedef X02/003 ?01T 00000000 .IIF NDF MACRO64$, .NOCROSS X02/102 ?01T 00000000 .IIF NDF MACRO64$, .CROSS 00000000 5180 $jibdef JTDRIVER ;skeleton driver implementing u 2-DEC-1994 10:13:13 AMAC V2.1-13-2671 Page 7 V01H EXTERNAL AND LOCAL DEFINITIONS 2-DEC-1994 10:12:45 [EVERHART.JT]JTDRIVER_S2.MAR;120 X02/003 ?01T 00000000 .IIF NDF MACRO64$, .NOCROSS X03/059 ?01T 00000000 .iif greater __temp_count, _mtu_validate_keyword X03/247 ?01T 00000000 .iif greater __temp_count, _mtu_validate_keyword X02/284 ?01T 00000000 .IIF NDF MACRO64$, .CROSS 00000000 5212 $acbdef X02/003 ?01T 00000000 .IIF NDF MACRO64$, .NOCROSS X03/059 ?01T 00000000 .iif greater __temp_count, _mtu_validate_keyword X03/160 ?01T 00000000 .iif greater __temp_count, _mtu_validate_keyword X02/197 ?01T 00000000 .IIF NDF MACRO64$, .CROSS 00000000 5449 $vcbdef X02/003 ?01T 00000000 .IIF NDF MACRO64$, .NOCROSS X02/752 ?01T 00000000 .IIF NDF MACRO64$, .CROSS 00000000 5483 $arbdef X02/003 ?01T 00000000 .IIF NDF MACRO64$, .NOCROSS X03/059 ?01T 00000000 .iif greater __temp_count, _mtu_validate_keyword X03/171 ?01T 00000000 .iif greater __temp_count, _mtu_validate_keyword X02/208 ?01T 00000000 .IIF NDF MACRO64$, .CROSS 00000000 5565 $wcbdef X02/003 ?01T 00000000 .IIF NDF MACRO64$, .NOCROSS X03/059 ?01T 00000000 .iif greater __temp_count, _mtu_validate_keyword X03/282 ?01T 00000000 .iif greater __temp_count, _mtu_validate_keyword X03/338 ?01T 00000000 .iif greater __temp_count, _mtu_validate_keyword X02/375 ?01T 00000000 .IIF NDF MACRO64$, .CROSS 00000000 5601 $ccbdef X02/003 ?01T 00000000 .IIF NDF MACRO64$, .NOCROSS X03/059 ?01T 00000000 .iif greater __temp_count, _mtu_validate_keyword X03/177 ?01T 00000000 .iif greater __temp_count, _mtu_validate_keyword X02/214 ?01T 00000000 .IIF NDF MACRO64$, .CROSS 00000000 5700 $fcbdef X02/003 ?01T 00000000 .IIF NDF MACRO64$, .NOCROSS X03/059 ?01T 00000000 .iif greater __temp_count, _mtu_validate_keyword X03/366 ?01T 00000000 .iif greater __temp_count, _mtu_validate_keyword X02/403 ?01T 00000000 .IIF NDF MACRO64$, .CROSS 00000000 5949 $phddef X02/003 ?01T 00000000 .IIF NDF MACRO64$, .NOCROSS X03/059 ?01T 00000000 .iif greater __temp_count, _mtu_validate_keyword X03/816 ?01T 00000000 .iif greater __temp_count, _mtu_validate_keyword X02/853 ?01T 00000000 .IIF NDF MACRO64$, .CROSS 00000000 6087 $RABDEF ; RAB structure defs X02/003 ?01T 00000000 .IIF NDF MACRO64$, .NOCROSS X03/059 ?01T 00000000 .iif greater __temp_count, _mtu_validate_keyword X03/478 ?01T 00000000 .iif greater __temp_count, _mtu_validate_keyword X02/515 ?01T 00000000 .IIF NDF MACRO64$, .CROSS 00000000 6363 $RMSDEF ; RMS constants X02/003 ?01T 00000000 .IIF NDF MACRO64$, .NOCROSS X02/865 ?01T 00000000 .IIF NDF MACRO64$, .CROSS 00000000 6364 ; defs for acl hacking 00000000 6603 $fibdef X02/003 ?01T 00000000 .IIF NDF MACRO64$, .NOCROSS X02/762 ?01T 00000000 .IIF NDF MACRO64$, .CROSS 00000000 6638 $ipldef X02/003 ?01T 00000000 .IIF NDF MACRO64$, .NOCROSS X02/150 ?01T 00000000 .IIF NDF MACRO64$, .CROSS 00000000 6802 $atrdef X02/003 ?01T 00000000 .IIF NDF MACRO64$, .NOCROSS X02/537 ?01T 00000000 .IIF NDF MACRO64$, .CROSS 00000000 00000000 6803 p1=0 ; first qio param JTDRIVER ;skeleton driver implementing u 2-DEC-1994 10:13:13 AMAC V2.1-13-2671 Page 8 V01H EXTERNAL AND LOCAL DEFINITIONS 2-DEC-1994 10:12:45 [EVERHART.JT]JTDRIVER_S2.MAR;120 00000004 00000000 6804 p2=4 00000008 00000000 6805 p3=8 0000000C 00000000 6806 p4=12 00000010 00000000 6807 p5=16 00000014 00000000 6808 p6=20 ;6th qio param offsets 00000000 6809 ?01T 00000000 6810 .IF DF,VMS$V5 ;VMS V5 + LATER ONLY ?01T 00000000 6860 $SPLCODDEF X02/003 ?02T 00000000 .IIF NDF MACRO64$, .NOCROSS X02/195 ?02T 00000000 .IIF NDF MACRO64$, .CROSS ?01T 00000000 7245 $cpudef X02/003 ?02T 00000000 .IIF NDF MACRO64$, .NOCROSS X03/059 ?02T 00000000 .iif greater __temp_count, _mtu_validate_keyword X03/1224?02T 00000000 .iif greater __temp_count, _mtu_validate_keyword X02/1261?02T 00000000 .IIF NDF MACRO64$, .CROSS ?01T 00000000 7246 .ENDC 00000000 7247 ; 00000000 7248 ; UCB OFFSETS WHICH FOLLOW THE STANDARD UCB FIELDS 00000000 7249 ; 00000000 7250 $DEFINI UCB ;START OF UCB DEFINITIONS X01/002 ?01T 00000000 .IIF NDF MACRO64$, .NOCROSS 00000000 7251 00000000 7252 ;.=UCB$W_BCR+2 ;BEGIN DEFINITIONS AT END OF UCB 00000000 7253 .=UCB$K_LCL_DISK_LENGTH ;v4 def end of ucb 00000114 7254 ; USE THESE FIELDS TO HOLD OUR LOCAL DATA FOR VIRT DISK. 00000114 7255 ; Add our stuff at the end to ensure we don't mess some fields up that some 00000114 7256 ; areas of VMS may want. 00000114 7257 ; Leave thisfield first so we can know all diskswill have it at the 00000114 7258 ; same offset. 00000114 7259 ; 00000114 7260 ; 00000118 7261 $def ucb$l_hucbs .blkl 1 ;host ucb table 00000114 X01/001 ?01T 00000114 .IIF NB,ucb$l_hucbs, ucb$l_hucbs: X01/002 ?01T 00000114 .IIF NB,.blkl, .blkl 1 00000118 7262 ; 00000118 7263 ; Add other fields here if desired. 00000118 7264 ; 0000011C 7265 $def ucb$l_exdmn .blkl 1 ;extend dmn pid 00000118 X01/001 ?01T 00000118 .IIF NB,ucb$l_exdmn, ucb$l_exdmn: X01/002 ?01T 00000118 .IIF NB,.blkl, .blkl 1 00000120 7266 $def ucb$l_exmbx .blkl 1 ;extend dmn mbx ucb 0000011C X01/001 ?01T 0000011C .IIF NB,ucb$l_exmbx, ucb$l_exmbx: X01/002 ?01T 0000011C .IIF NB,.blkl, .blkl 1 00000124 7267 $def ucb$l_deldmn .blkl 1 ;delete daemon pid 00000120 X01/001 ?01T 00000120 .IIF NB,ucb$l_deldmn, ucb$l_deldmn: X01/002 ?01T 00000120 .IIF NB,.blkl, .blkl 1 00000128 7268 $def ucb$l_delmbx .blkl 1 ;delete dmn mailbox ucb 00000124 X01/001 ?01T 00000124 .IIF NB,ucb$l_delmbx, ucb$l_delmbx: X01/002 ?01T 00000124 .IIF NB,.blkl, .blkl 1 00000128 7269 ; 00000128 7270 ; 0000012C 7271 $def ucb$l_ctlflgs .blkl 1 ;flags to control modes 00000128 X01/001 ?01T 00000128 .IIF NB,ucb$l_ctlflgs, ucb$l_ctlflgs: X01/002 ?01T 00000128 .IIF NB,.blkl, .blkl 1 0000012C 7272 ; 0000012C 7273 ; 00000130 7274 $def ucb$l_prcvec .blkl 1 ;process local data tbl JTDRIVER ;skeleton driver implementing u 2-DEC-1994 10:13:13 AMAC V2.1-13-2671 Page 9 V01H EXTERNAL AND LOCAL DEFINITIONS 2-DEC-1994 10:12:45 [EVERHART.JT]JTDRIVER_S2.MAR;120 0000012C X01/001 ?01T 0000012C .IIF NB,ucb$l_prcvec, ucb$l_prcvec: X01/002 ?01T 0000012C .IIF NB,.blkl, .blkl 1 00000134 7275 $def ucb$l_daemon .blkl 1 ;daemon pid for open daemon 00000130 X01/001 ?01T 00000130 .IIF NB,ucb$l_daemon, ucb$l_daemon: X01/002 ?01T 00000130 .IIF NB,.blkl, .blkl 1 00000138 7276 $def ucb$l_mbxucb .blkl 1 ;mailbox for input to daemon 00000134 X01/001 ?01T 00000134 .IIF NB,ucb$l_mbxucb, ucb$l_mbxucb: X01/002 ?01T 00000134 .IIF NB,.blkl, .blkl 1 00000140 7277 $def ucb$l_keycry .blkl 2 ;ucb resident "key" for ACEs 00000138 X01/001 ?01T 00000138 .IIF NB,ucb$l_keycry, ucb$l_keycry: X01/002 ?01T 00000138 .IIF NB,.blkl, .blkl 2 00000140 7278 ;use as part of authenticator 00000140 7279 ;for security-relevant fcns. 00000140 7280 ;auth=f(file id, key, priv-info), match ace and computed 00000140 7281 ;auth tag. 00000144 7282 $def ucb$l_cbtctr .blkl 1 ;how many extents 00000140 X01/001 ?01T 00000140 .IIF NB,ucb$l_cbtctr, ucb$l_cbtctr: X01/002 ?01T 00000140 .IIF NB,.blkl, .blkl 1 00000148 7283 $def ucb$l_cbtini .blkl 1 ;init for counter 00000144 X01/001 ?01T 00000144 .IIF NB,ucb$l_cbtini, ucb$l_cbtini: X01/002 ?01T 00000144 .IIF NB,.blkl, .blkl 1 00000148 7284 ; preceding 2 fields allow specifying of contig-best-try extents 00000148 7285 ; on every Nth extend, not every one. This should still help keep 00000148 7286 ; file extensions from preferentially picking up chaff 00000198 7287 $def ucb$JTcontfil .blkb 80 00000148 X01/001 ?01T 00000148 .IIF NB,ucb$JTcontfil, ucb$JTcontfil: X01/002 ?01T 00000148 .IIF NB,.blkb, .blkb 80 0000019C 7288 $def ucb$l_asten .blkl 1 ;ast enable mask store 00000198 X01/001 ?01T 00000198 .IIF NB,ucb$l_asten, ucb$l_asten: X01/002 ?01T 00000198 .IIF NB,.blkl, .blkl 1 0000019C 7289 ; 000001A0 7290 $DEF ucb$l_minxt .blkl 1 ;min. extent 0000019C X01/001 ?01T 0000019C .IIF NB,ucb$l_minxt, ucb$l_minxt: X01/002 ?01T 0000019C .IIF NB,.blkl, .blkl 1 000001A4 7291 $def ucb$l_maxxt .blkl 1 ;max extent 000001A0 X01/001 ?01T 000001A0 .IIF NB,ucb$l_maxxt, ucb$l_maxxt: X01/002 ?01T 000001A0 .IIF NB,.blkl, .blkl 1 000001A8 7292 $def ucb$l_frac .blkl 1 ;fraction to extend by 000001A4 X01/001 ?01T 000001A4 .IIF NB,ucb$l_frac, ucb$l_frac: X01/002 ?01T 000001A4 .IIF NB,.blkl, .blkl 1 000001AC 7293 $def ucb$l_slop .blkl 1 ;slop blocks to leave free 000001A8 X01/001 ?01T 000001A8 .IIF NB,ucb$l_slop, ucb$l_slop: X01/002 ?01T 000001A8 .IIF NB,.blkl, .blkl 1 000001AC 7294 ; DDT intercept fields 000001AC 7295 ; following must be contiguous. 000001AC 7296 $def ucb$s_ppdbgn ;add any more prepended stuff after this 000001AC X01/001 ?01T 000001AC .IIF NB,ucb$s_ppdbgn, ucb$s_ppdbgn: 000001B0 7297 $def ucb$l_uniqid .blkl 1 ;driver-unique ID, gets filled in 000001AC X01/001 ?01T 000001AC .IIF NB,ucb$l_uniqid, ucb$l_uniqid: X01/002 ?01T 000001AC .IIF NB,.blkl, .blkl 1 000001B0 7298 ; by DPT address for easy following 000001B0 7299 ; by SDA 000001B4 7300 $def ucb$l_intcddt .blkl 1 ; Our interceptor's DDT address if 000001B0 X01/001 ?01T 000001B0 .IIF NB,ucb$l_intcddt, ucb$l_intcddt: X01/002 ?01T 000001B0 .IIF NB,.blkl, .blkl 1 000001B4 7301 ; we are intercepted 000001B8 7302 $def ucb$l_prevddt .blkl 1 ; previous DDT address JTDRIVER ;skeleton driver implementing u 2-DEC-1994 10:13:13 AMAC V2.1-13-2671 Page 10 V01H EXTERNAL AND LOCAL DEFINITIONS 2-DEC-1994 10:12:45 [EVERHART.JT]JTDRIVER_S2.MAR;120 000001B4 X01/001 ?01T 000001B4 .IIF NB,ucb$l_prevddt, ucb$l_prevddt: X01/002 ?01T 000001B4 .IIF NB,.blkl, .blkl 1 000001BC 7303 $def ucb$l_icsign .blkl 1 ; unique pattern that identifies 000001B8 X01/001 ?01T 000001B8 .IIF NB,ucb$l_icsign, ucb$l_icsign: X01/002 ?01T 000001B8 .IIF NB,.blkl, .blkl 1 000001BC 7304 ; this as a DDT intercept block 000001BC 7305 ; NOTE: Jon Pinkley suggests that the DDT size should be encoded in part of this 000001BC 7306 ; unique ID so that incompatible future versions will be guarded against. 000001BC 7307 $def ucb$s_ppdend 000001BC X01/001 ?01T 000001BC .IIF NB,ucb$s_ppdend, ucb$s_ppdend: 0000022C 7308 $def ucb$a_vicddt .blkb ddt$k_length 000001BC X01/001 ?01T 000001BC .IIF NB,ucb$a_vicddt, ucb$a_vicddt: X01/002 ?01T 000001BC .IIF NB,.blkb, .blkb ddt$k_length 0000022C 7309 ; space for victim's DDT 0000022C 7310 .blkl 4 ;safety 00000240 7311 $def ucb$l_backlk .blkl 1 ;backlink to victim ucb 0000023C X01/001 ?01T 0000023C .IIF NB,ucb$l_backlk, ucb$l_backlk: X01/002 ?01T 0000023C .IIF NB,.blkl, .blkl 1 00000240 7312 ; Make the "unique magic number" depend on the DDT length, and on the 00000240 7313 ; length of the prepended material. If anything new is added, be sure that 00000240 7314 ; this magic number value changes. F013F070 00000240 7315 magic=^xF013F000 + ddt$k_length + <256*> F013F070 00000240 7316 p.magic=^xF013F000 + ddt$k_length + <256*> 00000800 ?01T 00000240 7317 .iif ndf,f.nsiz,f.nsiz=2048 00000010 ?01T 00000240 7318 .iif ndf,f.nums,f.nums=16 ?01F 00000240 7319 .iif ndf,f.nsiz,f.nsiz=2048 00000240 00000240 7320 ucb$l_fnums: .blkw f.nums ;store for file numbers to inspect whether 00000260 7321 ;an ACE is there or not. 00000268 7322 $DEF UCB$L_JT_HOST_DESCR .BLKL 2 ;host dvc desc. 00000260 X01/001 ?01T 00000260 .IIF NB,UCB$L_JT_HOST_DESCR, UCB$L_JT_HOST_DESCR: X01/002 ?01T 00000260 .IIF NB,.BLKL, .BLKL 2 00000268 7323 ; 00000268 7324 ; Store copy of victim FDT table here for step 2 Alpha driver. 00000268 7325 ; assumes FDT table is 64+2 longs long 00000380 7326 $def ucb$l_myfdt .blkl 70 ;user FDT tbl copy + slop for safety 00000268 X01/001 ?01T 00000268 .IIF NB,ucb$l_myfdt, ucb$l_myfdt: X01/002 ?01T 00000268 .IIF NB,.blkl, .blkl 70 00000384 7327 $def ucb$l_oldfdt .blkl 1 ;fdt tbl of prior fdt chain 00000380 X01/001 ?01T 00000380 .IIF NB,ucb$l_oldfdt, ucb$l_oldfdt: X01/002 ?01T 00000380 .IIF NB,.blkl, .blkl 1 00000388 7328 $def ucb$l_vict .blkl 1 ;victim ucb, for unmung check 00000384 X01/001 ?01T 00000384 .IIF NB,ucb$l_vict, ucb$l_vict: X01/002 ?01T 00000384 .IIF NB,.blkl, .blkl 1 0000038C 7329 $def ucb$l_mungd .blkl 1 ;munged flag, 1 if numg'd 00000388 X01/001 ?01T 00000388 .IIF NB,ucb$l_mungd, ucb$l_mungd: X01/002 ?01T 00000388 .IIF NB,.blkl, .blkl 1 0000039C 7330 $def ucb$l_exempt .blkl 4 ;exempt PIDs 0000038C X01/001 ?01T 0000038C .IIF NB,ucb$l_exempt, ucb$l_exempt: X01/002 ?01T 0000038C .IIF NB,.blkl, .blkl 4 000003AC 7331 $def ucb$l_exedel .blkl 4 ;pids exempt from delete checks only 0000039C X01/001 ?01T 0000039C .IIF NB,ucb$l_exedel, ucb$l_exedel: X01/002 ?01T 0000039C .IIF NB,.blkl, .blkl 4 000003B0 7332 $def ucb$l_ktrln .blkl 1 000003AC X01/001 ?01T 000003AC .IIF NB,ucb$l_ktrln, ucb$l_ktrln: X01/002 ?01T 000003AC .IIF NB,.blkl, .blkl 1 000003B4 7333 $def ucb$l_k2tnm .blkl 1 000003B0 X01/001 ?01T 000003B0 .IIF NB,ucb$l_k2tnm, ucb$l_k2tnm: JTDRIVER ;skeleton driver implementing u 2-DEC-1994 10:13:13 AMAC V2.1-13-2671 Page 11 V01H EXTERNAL AND LOCAL DEFINITIONS 2-DEC-1994 10:12:45 [EVERHART.JT]JTDRIVER_S2.MAR;120 X01/002 ?01T 000003B0 .IIF NB,.blkl, .blkl 1 ?01T 000003B4 7334 .if df,msetrp ?01T 000003B4 7335 ; mousetrap trace cells ?01T 000003B8 7336 $def mtp$fmt .blkl 1 ;mousetrap get into format 000003B4 X01/001 ?02T 000003B4 .IIF NB,mtp$fmt, mtp$fmt: X01/002 ?02T 000003B4 .IIF NB,.blkl, .blkl 1 ?01T 000003BC 7337 $def mtp$irp .blkl 1 000003B8 X01/001 ?02T 000003B8 .IIF NB,mtp$irp, mtp$irp: X01/002 ?02T 000003B8 .IIF NB,.blkl, .blkl 1 ?01T 000003C0 7338 $def mtp$ldt .blkl 1 000003BC X01/001 ?02T 000003BC .IIF NB,mtp$ldt, mtp$ldt: X01/002 ?02T 000003BC .IIF NB,.blkl, .blkl 1 ?01T 000003C4 7339 $def mtp$trace .blkl 1 000003C0 X01/001 ?02T 000003C0 .IIF NB,mtp$trace, mtp$trace: X01/002 ?02T 000003C0 .IIF NB,.blkl, .blkl 1 ?01T 000003C8 7340 $def mtp$ccb .blkl 1 000003C4 X01/001 ?02T 000003C4 .IIF NB,mtp$ccb, mtp$ccb: X01/002 ?02T 000003C4 .IIF NB,.blkl, .blkl 1 ?01T 000003CC 7341 $def mtp$chan .blkl 1 000003C8 X01/001 ?02T 000003C8 .IIF NB,mtp$chan, mtp$chan: X01/002 ?02T 000003C8 .IIF NB,.blkl, .blkl 1 ?01T 000003D0 7342 $def mtp$ior0 .blkl 1 000003CC X01/001 ?02T 000003CC .IIF NB,mtp$ior0, mtp$ior0: X01/002 ?02T 000003CC .IIF NB,.blkl, .blkl 1 ?01T 000003D8 7343 $def mtp$r1 .blkl 2 ;findldt tst 000003D0 X01/001 ?02T 000003D0 .IIF NB,mtp$r1, mtp$r1: X01/002 ?02T 000003D0 .IIF NB,.blkl, .blkl 2 ?01T 000003DC 7344 $def mtp$r0 .blkl 1 000003D8 X01/001 ?02T 000003D8 .IIF NB,mtp$r0, mtp$r0: X01/002 ?02T 000003D8 .IIF NB,.blkl, .blkl 1 ?01T 000003E0 7345 $def mtp$trc2 .blkl 1 000003DC X01/001 ?02T 000003DC .IIF NB,mtp$trc2, mtp$trc2: X01/002 ?02T 000003DC .IIF NB,.blkl, .blkl 1 ?01T 000003E8 7346 $def mtp$trc3 .blkl 2 000003E0 X01/001 ?02T 000003E0 .IIF NB,mtp$trc3, mtp$trc3: X01/002 ?02T 000003E0 .IIF NB,.blkl, .blkl 2 ?01T 000003E8 7347 .endc 000003EA 7348 $DEF UCB$K_JT_LEN .BLKW 1 ;LENGTH OF UCB 000003E8 X01/001 ?01T 000003E8 .IIF NB,UCB$K_JT_LEN, UCB$K_JT_LEN: X01/002 ?01T 000003E8 .IIF NB,.BLKW, .BLKW 1 000003EA 7349 ;UCB$K_JT_LEN=. ;LENGTH OF UCB 000003EA 7350 00000000 7351 $DEFEND UCB ;END OF UCB DEFINITONS X01/008 ?01T 000003EA .IIF NDF MACRO64$, .CROSS 00000000 7352 ; Define LDT offsets here. 00000000 00000000 7353 ldt$l_fwd = 0 ;forward link. (LDTs are singly linked) 00000004 00000000 7354 ldt$l_ccb = 4 ;CCB address so we can check ID 00000008 00000000 7355 ldt$l_accmd = 8 ;accmd from user FIB (tells how open) 0000000C 00000000 7356 ldt$l_wprv = 12 ;working privs 00000014 00000000 7357 ldt$l_aprv = 20 ;auth privs 0000001C 00000000 7358 ldt$l_bprio = 28 ;process base priority 00000020 00000000 7359 ldt$l_prcstr = 32 ;pointer to per-process delblk count block 00000024 00000000 7360 ldt$l_synch = 36 ;address of "iosb" block used to 00000000 7361 ;end process waits & deallocated at 00000000 7362 ;end of those waits. 00000028 00000000 7363 ldt$l_iosb = 40 ;iosb for internal $qio 00000030 00000000 7364 ldt$l_jtucb = 48 ;pointer to jt: ucb JTDRIVER ;skeleton driver implementing u 2-DEC-1994 10:13:13 AMAC V2.1-13-2671 Page 12 V01H EXTERNAL AND LOCAL DEFINITIONS 2-DEC-1994 10:12:45 [EVERHART.JT]JTDRIVER_S2.MAR;120 00000034 00000000 7365 ldt$l_fresiz = 52 ;length of LDT left since we will chop 00000000 7366 ;off unused parts of ACE after we read 00000000 7367 ;it to regain pool 00000000 7368 ; Keep chnucb in "permanent" part of LDT since it hangs around till close 00000000 7369 ; if we do a softlink. It will be zero unless there is a softlink so 00000000 7370 ; it acts as a flag to restore the channel, too. 00000038 00000000 7371 ldt$l_chnucb = 56 ;original channel UCB address 0000003C 00000000 7372 ldt$l_ace = 60 ;start of our ACE, up to 256 bytes long 00000000 7373 ; chop off what's below here, as we need it no more after the file is open. 0000013C 00000000 7374 ldt$l_regs = 316 ;register save, r0 to r15 00000174 00000000 7375 ldt$l_flgs = 372 ;slop storage for flags 00000178 00000000 7376 ldt$l_parm = 376 ;storage for up to 6 params (6 longs) 00000190 00000000 7377 ldt$l_fib = 400 ;FIB we use for OUR I/O 00000000 7378 ; 72 bytes max for our FIB 000001D8 00000000 7379 ldt$l_acl = 472 ;storage for ACL read-in; 512 bytes 000003D8 00000000 7380 ldt$l_itmlst = 984 ;item list to read the ACL all in if 00000000 7381 ;we can. 000003F8 00000000 7382 ldt$l_aclsiz = 1016 ;size of the ACL on the file 000003FC 00000000 7383 ldt$l_rtnsts = 1020 ;status back from daemon 00000404 00000000 7384 ldt$l_myfid = 1028 ;file id from read-acl call 0000040C 00000000 7385 ldt$l_mydid = 1036 ;dir id in user's fib 00000414 00000000 7386 ldt$l_psl = 1044 ;psl of original i/o 0000041C 00000000 7387 ldt$l_fnd = 1052 ;filename desc of orig i/o (p2 arg) 00000000 7388 ;2 longs 00000424 00000000 7389 ldt$l_fndd = 1060 ;data area for filename (256 bytes) 00000528 00000000 7390 ldt$l_fdtctx = 1320 ;save area for user's FDT context ptr 00000530 00000000 7391 ldt$l_size = 1328 0000052C 00000000 7392 ldt$k_clrsiz = 1324 ;allocate a little slop. 00000000 7393 00000000 7394 ; ACE format: 00000000 7395 ;ace: .byte length 00000000 7396 ; .byte type = ace$c_info ;application ACE 00000000 7397 ; .word flags ;stuff like hidden, protected... 00000000 7398 ; .long info-flags ;use 1 bit to mean call the daemon 00000000 7399 ; .ascii /GCEV/ ;my identifier 00000000 7400 ; .blkb data ;up to 244 bytes of data. 00000000 7401 00000000 7402 ; data is a variable length list of stuff. 00000000 7403 ; Codes are as follows: 00000000 7404 ; 00 - nothing. Terminates list. 00000000 7405 ; 01 - starts "inspectme" record. Nothing more. We send FID from the LDT 00000000 7406 ; in this case. This makes these real fast to forge. 00000000 7407 ; 02 - "moveme" record. Again we send FID from LDT and need nothing more. 00000000 7408 ; We use info from the daemon to find the actual file based 00000000 7409 ; on the file ID here. 00000000 7410 ; 03 - "bprio" record. Format: 00000000 7411 ; 03, prio, ;total 6 bytes 00000000 7412 ; 04 - "priv" record. Format: 00000000 7413 ; 04, ;total 17 bytes 00000000 7414 ; 05 - "ident" record, format: 00000000 7415 ; 05, ;total 17 bytes 00000000 7416 ; 06 - "softlink" record, format: 00000000 7417 ; 06, len, flgs, ;variable len 00000000 7418 ; 07 - "temporary" tag. Format: 00000000 7419 ; 07, len, , ;16 bytes 00000000 7420 ; flags for softlinks: 00000000 7421 ; 0 = normal JTDRIVER ;skeleton driver implementing u 2-DEC-1994 10:13:13 AMAC V2.1-13-2671 Page 13 V01H EXTERNAL AND LOCAL DEFINITIONS 2-DEC-1994 10:12:45 [EVERHART.JT]JTDRIVER_S2.MAR;120 00000000 7422 ; 1 = softlink only on read, act like moveme record if r/w open 00000000 7423 ; 2 = directory file softlink, pass to daemon for special 00000000 7424 ; handling so we can pull the dir in. 00000000 7425 ; more flags later as I think of them. 00000000 7426 ; more types as needed too. 00000000 7427 00000000 7428 00000000 7429 .SBTTL STANDARD TABLES 00000000 7430 00000000 7431 ; 00000000 7432 ; DRIVER PROLOGUE TABLE 00000000 7433 ; 00000000 7434 ; THE DPT DESCRIBES DRIVER PARAMETERS AND I/O DATABASE FIELDS 00000000 7435 ; THAT ARE TO BE INITIALIZED DURING DRIVER LOADING AND RELOADING 00000000 7436 ; 00000000 7441 driver_data 0000012C 00000000 7442 JT_UNITS=300 00000000 7443 JT$DPT:: 00000000 ?01T 00000000 7444 .iif ndf,spt$m_xpamod,dpt$m_xpamod=0 ?01T 00000000 7445 .if df,evax ?01T 00000000 7446 DPTAB - ;DPT CREATION MACRO ?01T 00000000 7593 END=JT_END,- ;END OF DRIVER LABEL ?01T 00000000 7594 ADAPTER=NULL,- ;ADAPTER TYPE = NONE (VIRTUAL) ?01T 00000000 7595 FLAGS=DPT$M_SMPMOD!dpt$m_xpamod!DPT$M_NOUNLOAD, - ;SET TO USE SMP,xa ?01T 00000000 7596 DEFUNITS=2,- ;UNITS 0 THRU 1 thru 31 ?01T 00000000 7597 step=2,- ?01T 00000000 7598 UCBSIZE=UCB$K_JT_LEN,- ;LENGTH OF UCB ?01T 00000000 7599 MAXUNITS=JT_UNITS,- ;FOR SANITY...CAN CHANGE ?01T 00000187 7919 NAME=JTDRIVER ;DRIVER NAME X03/003 ?02T 00000000 .IIF NDF MACRO64$, .NOCROSS X03/474 ?02T 00000000 .IIF NDF MACRO64$, .CROSS X03/003 ?02T 00000000 .IIF NDF MACRO64$, .NOCROSS X04/059 ?02T 00000000 .iif greater __temp_count, _mtu_validate_keyword X04/577 ?02T 00000000 .iif greater __temp_count, _mtu_validate_keyword X03/614 ?02T 00000000 .IIF NDF MACRO64$, .CROSS X01/623 ?01T 00000000 DRIVER$DPT:: X01/014 ?01T 00000000 .LONG 0, 0 X01/023 ?01T 00000008 .WORD DPT$K_BASE_LEN+NAM$C_MAXRSS X01/031 ?01T 0000000A .BYTE DYN$C_DPT X01/032 ?01T 0000000B .BYTE 0 X01/041 ?01T 0000000C .WORD DPT$K_STEP_2 X01/050 ?02T 0000000E .WORD DPT$K_STEP2_V2 X01/062 ?01T 00000010 .WORD 2 X01/070 ?01T 00000012 .WORD JT_UNITS X01/078 ?01T 00000014 .WORD UCB$K_JT_LEN X01/086 ?01T 00000016 .WORD 0 X01/094 ?01T 00000018 .WORD 0 X01/102 ?01T 0000001A .WORD 0 X01/112 ?01T 0000001C .LONG DPT$M_SMPMOD!dpt$m_xpamod!DPT$M_NOUNLOAD!..SMP_FLAG.. X01/121 ?01T 00000020 .LONG AT$_NULL X01/129 ?01T 00000024 .LONG 0 X01/138 ?01T 00000028 .ADDRESS DRIVER$STRUC_INIT X01/146 ?01T 0000002C .ADDRESS DRIVER$STRUC_REINIT X01/155 ?01T 00000030 .ADDRESS 0 X01/163 ?01T 00000034 .ADDRESS 0 X01/171 ?01T 00000038 .ADDRESS DDT$$BASE X01/179 ?01T 0000003C .LONG 0 JTDRIVER ;skeleton driver implementing u 2-DEC-1994 10:13:13 AMAC V2.1-13-2671 Page 14 V01H STANDARD TABLES 2-DEC-1994 10:12:45 [EVERHART.JT]JTDRIVER_S2.MAR;120 X01/188 ?01T 00000040 .LONG 0 X01/197 ?01T 00000044 .ADDRESS 0 X01/207 ?01T 00000048 .ASCIC /JTDRIVER/ X01/217 ?01T 00000058 .LONG 0 X01/225 ?01T 0000005C .LONG 0 X01/234 ?01T 00000060 .QUAD 0 X01/243 ?01T 00000068 .WORD NAM$C_MAXRSS X01/251 ?01T 0000006A .BYTE DSC$K_DTYPE_T X01/259 ?01T 0000006B .BYTE DSC$K_CLASS_S X01/267 ?01T 0000006C .ADDRESS DRIVER$DPT+DPT$T_IMAGE_NAME X01/283 ?01T 00000070 .LONG 0,0,0,0 X01/292 ?01T 00000080 .ADDRESS 0 X01/301 ?01T 00000084 .LONG 0 00000000 X01/319 ?02T 00000187 .IIF NDF ..SMP_FLAG.., ..SMP_FLAG.. = 0 ?01F 00000187 7920 .iff ?02F 00000187 7921 .if ndf,vms$$v6 ?02F 00000187 7922 DPTAB - ;DPT CREATION MACRO ?02F 00000187 7923 END=JT_END,- ;END OF DRIVER LABEL ?02F 00000187 7924 ADAPTER=NULL,- ;ADAPTER TYPE = NONE (VIRTUAL) ?02F 00000187 7925 FLAGS=DPT$M_SMPMOD!DPT$M_NOUNLOAD, - ;SET TO USE SMP ?02F 00000187 7926 DEFUNITS=2,- ;UNITS 0 THRU 1 thru 31 ?02F 00000187 7927 UCBSIZE=UCB$K_JT_LEN,- ;LENGTH OF UCB ?02F 00000187 7928 MAXUNITS=JT_UNITS,- ;FOR SANITY...CAN CHANGE ?02F 00000187 7929 NAME=JTDRIVER ;DRIVER NAME ?02F 00000187 7930 .iff ?02F 00000187 7931 DPTAB - ;DPT CREATION MACRO ?02F 00000187 7932 END=JT_END,- ;END OF DRIVER LABEL ?02F 00000187 7933 ADAPTER=NULL,- ;ADAPTER TYPE = NONE (VIRTUAL) ?02F 00000187 7934 FLAGS=DPT$M_SMPMOD!dpt$m_xpamod!DPT$M_NOUNLOAD, - ;SET TO USE SMP,xa ?02F 00000187 7935 DEFUNITS=2,- ;UNITS 0 THRU 1 thru 31 ?02F 00000187 7936 UCBSIZE=UCB$K_JT_LEN,- ;LENGTH OF UCB ?02F 00000187 7937 MAXUNITS=JT_UNITS,- ;FOR SANITY...CAN CHANGE ?02F 00000187 7938 NAME=JTDRIVER ;DRIVER NAME ?02F 00000187 7939 .endc ?01F 00000187 7940 .endc ?02T 00000016 8054 DPT_STORE INIT ;START CONTROL BLOCK INIT VALUES X01/008 ?01T 00000000 DRIVER$STRUC_INIT: 00000000 X02/030 ?02T 00000000 .iif identical false, , _MTU_DIR_ARG_3 = 0 X01/005 ?01T 00000002 MOVL 4(ap),r2 X01/006 ?01T 00000006 MOVL 8(ap),r3 X01/007 ?01T 0000000A MOVL 12(ap),r4 X01/008 ?01T 0000000E MOVL 16(ap),r5 X01/009 ?01T 00000012 MOVL 20(ap),r6 0000001E 8055 DPT_STORE DDB,DDB$L_ACPD,L,<^A\F11\> ;DEFAULT ACP NAME 00000002 X01/047 ?04T 00000016 .IIF IDN ,, op$$=2 X01/059 ?04T 00000016 MOVL #<^A\F11\>, - X01/059 ?04T 00000016 DDB$L_ACPD(r3) 00000022 8056 DPT_STORE DDB,DDB$L_ACPD+3,B,DDB$K_PACK ;ACP CLASS 00000006 X01/049 ?04T 0000001E .IIF IDN ,, op$$=6 X01/059 ?04T 0000001E MOVB #, - X01/059 ?04T 0000001E DDB$L_ACPD+3(r3) ?01F 00000022 8057 .IF NDF,VMS$V5 ?01F 00000022 8058 DPT_STORE UCB,UCB$B_FIPL,B,8 ;FORK IPL (VMS V4.X) ?01T 00000022 8059 .IFF ;DEFINE FOR VMS V5.X & LATER ?01T 00000026 8060 DPT_STORE UCB,UCB$B_FLCK,B,SPL$C_IOLOCK8 ;FORK IPL (VMS V5.X + LATER) 00000006 X01/049 ?05T 00000022 .IIF IDN ,, op$$=6 X01/059 ?05T 00000022 MOVB #, - JTDRIVER ;skeleton driver implementing u 2-DEC-1994 10:13:13 AMAC V2.1-13-2671 Page 15 V01H STANDARD TABLES 2-DEC-1994 10:12:45 [EVERHART.JT]JTDRIVER_S2.MAR;120 X01/059 ?05T 00000022 UCB$B_FLCK(r6) ?01T 00000026 8061 .ENDC 00000026 8062 ; These characteristics for an intercept driver shouldn't look just 00000026 8063 ; like a real disk unless it is prepared to handle being mounted, etc. 00000026 8064 ; Therefore comment a couple of them out. 00000026 8065 DPT_STORE UCB,UCB$L_DEVCHAR,L,- ;DEVICE CHARACTERISTICS 00000026 8066 ; RANDOM ACCESS 00000002 X01/047 ?04T 00000026 .IIF IDN ,, op$$=2 X01/059 ?04T 00000026 MOVL #, - X01/059 ?04T 00000026 UCB$L_DEVCHAR(r6) 0000002E 8073 DPT_STORE UCB,UCB$L_DEVCHAR2,L,- ;DEVICE CHARACTERISTICS 00000036 8074 ; Prefix name with "node$" (like rp06) 00000002 X01/047 ?04T 0000002E .IIF IDN ,, op$$=2 X01/059 ?04T 0000002E MOVL #, - X01/059 ?04T 0000002E UCB$L_DEVCHAR2(r6) 0000003A 8075 DPT_STORE UCB,UCB$B_DEVCLASS,B,DC$_DISK ;DEVICE CLASS 00000006 X01/049 ?04T 00000036 .IIF IDN ,, op$$=6 X01/059 ?04T 00000036 MOVB #, - X01/059 ?04T 00000036 UCB$B_DEVCLASS(r6) 00000040 8076 DPT_STORE UCB,UCB$W_DEVBUFSIZ,W,512 ;DEFAULT BUFFER SIZE 00000004 X01/048 ?04T 0000003A .IIF IDN ,, op$$=4 X01/059 ?04T 0000003A MOVW #<512>, - X01/059 ?04T 0000003A UCB$W_DEVBUFSIZ(r6) 00000040 8077 ; FOLLOWING DEFINES OUR DEVICE "PHYSICAL LAYOUT". It's faked here. 00000044 8078 DPT_STORE UCB,UCB$B_TRACKS,B,1 ; 1 TRK/CYL 00000006 X01/049 ?04T 00000040 .IIF IDN ,, op$$=6 X01/059 ?04T 00000040 MOVB #<1>, - X01/059 ?04T 00000040 UCB$B_TRACKS(r6) 00000049 8079 DPT_STORE UCB,UCB$B_SECTORS,B,64 ;NUMBER OF SECTORS PER TRACK 00000006 X01/049 ?04T 00000044 .IIF IDN ,, op$$=6 X01/059 ?04T 00000044 MOVB #<64>, - X01/059 ?04T 00000044 UCB$B_SECTORS(r6) 0000004D 8080 DPT_STORE UCB,UCB$W_CYLINDERS,W,16 ;NUMBER OF CYLINDERS 00000004 X01/048 ?04T 00000049 .IIF IDN ,, op$$=4 X01/059 ?04T 00000049 MOVW #<16>, - X01/059 ?04T 00000049 UCB$W_CYLINDERS(r6) 00000052 8081 DPT_STORE UCB,UCB$B_DIPL,B,8 ;DEVICE IPL 00000006 X01/049 ?04T 0000004D .IIF IDN ,, op$$=6 X01/059 ?04T 0000004D MOVB #<8>, - X01/059 ?04T 0000004D UCB$B_DIPL(r6) 00000052 8082 ; DPT_STORE UCB,UCB$B_ERTMAX,B,10 ;MAX ERROR RETRY COUNT 00000052 8083 DPT_STORE UCB,UCB$L_DEVSTS,L,- ;INHIBIT LOG TO PHYS CONVERSION IN FDT 00000057 8084 ;... 00000002 X01/047 ?04T 00000052 .IIF IDN ,, op$$=2 X01/059 ?04T 00000052 MOVL #, - X01/059 ?04T 00000052 UCB$L_DEVSTS(r6) 00000057 8085 ; 00000057 8086 ; don't mess with LBN; leave alone so it's easier to hack on... 00000057 8087 ; 0000006E 8088 DPT_STORE REINIT ;START CONTROL BLOCK RE-INIT VALUES JTDRIVER ;skeleton driver implementing u 2-DEC-1994 10:13:13 AMAC V2.1-13-2671 Page 16 V01H STANDARD TABLES 2-DEC-1994 10:12:45 [EVERHART.JT]JTDRIVER_S2.MAR;120 X01/015 ?02T 00000057 RET X01/016 ?02T 00000058 DRIVER$STRUC_REINIT: 00000000 X02/055 ?03T 00000058 .iif identical false, , _MTU_DIR_ARG_3 = 0 X01/100 ?02T 0000005A MOVL 4(ap),r2 X01/101 ?02T 0000005E MOVL 8(ap),r3 X01/102 ?02T 00000062 MOVL 12(ap),r4 X01/103 ?02T 00000066 MOVL 16(ap),r5 X01/104 ?02T 0000006A MOVL 20(ap),r6 0000006E 8089 ; DPT_STORE CRB,CRB$L_INTD+VEC$L_ISR,D,JT_INT ;INTERRUPT SERVICE ROUTINE ADDRESS ?01F 0000006E 8090 .if ndf,evax ?01F 0000006E 8091 DPT_STORE CRB,CRB$L_INTD+VEC$L_INITIAL,- ;CONTROLLER INIT ADDRESS ?01F 0000006E 8092 D,JT_ctrl_INIT ;... ?01F 0000006E 8093 DPT_STORE CRB,CRB$L_INTD+VEC$L_UNITINIT,- ;UNIT INIT ADDRESS ?01F 0000006E 8094 D,JT_unit_INIT ;... ?01F 0000006E 8095 .endc 00000076 8096 DPT_STORE DDB,DDB$L_DDT,D,JT$DDT ;DDT ADDRESS 00000008 X01/051 ?04T 0000006E .IIF IDN ,, op$$=8 00000000 X01/052 ?04T 0000006E .IIF IDN ,, lit$$=0 X01/059 ?04T 0000006E MOVAB , - X01/059 ?04T 0000006E DDB$L_DDT(r3) 0000007F 8097 DPT_STORE UCB,UCB$L_UNIQID,D,driver$dpt ;store DPT address 00000008 X01/051 ?04T 00000076 .IIF IDN ,, op$$=8 00000000 X01/052 ?04T 00000076 .IIF IDN ,, lit$$=0 X01/059 ?04T 00000076 MOVAB , - X01/059 ?04T 00000076 UCB$L_UNIQID(r6) 0000007F 8098 ; DPT_STORE UCB,UCB$L_UNIQID,D,DPT$TAB ;store DPT address 0000007F 8099 ; (change "XX" to device 0000007F 8100 ; mnemonic correct values) 00000088 8101 DPT_STORE UCB,UCB$L_ICSIGN,L,magic ; Add unique pattern (that might 00000002 X01/047 ?04T 0000007F .IIF IDN ,, op$$=2 X01/059 ?04T 0000007F MOVL #, - X01/059 ?04T 0000007F UCB$L_ICSIGN(r6) 00000088 8102 ; bring back some memories in 00000088 8103 ; DOS-11 users) 00000088 8104 00000088 8105 ; HISTORICAL NOTE: under DOS-11, one would get F012 and F024 errors 00000088 8106 ; on odd address and illegal instruction traps. If we don't have 00000088 8107 ; this magic number HERE, on the other hand, we're likely to see 00000088 8108 ; bugchecks in VMS due to uncontrolled bashing of UCB fields! 00000000 8109 DPT_STORE END ;END OF INITIALIZATION TABLE X01/025 ?03T 00000088 RET 00000000 8110 00000000 8111 ; 00000000 8112 ; DRIVER DISPATCH TABLE 00000000 8113 ; 00000000 8114 ; THE DDT LISTS ENTRY POINTS FOR DRIVER SUBROUTINES WHICH ARE 00000000 8115 ; CALLED BY THE OPERATING SYSTEM. 00000000 8116 ; 00000000 8117 ;JT$DDT: ?01T 00000000 8118 .if df,evax ?01T 00000000 8119 DDTAB - ;DDT CREATION MACRO ?01T 00000000 8302 DEVNAM=JT,- ;NAME OF DEVICE ?01T 00000000 8303 START=JT_STARTIO,- ;START I/O ROUTINE ?01T 00000000 8304 FUNCTB=JT_FUNCTABLE,- ;FUNCTION DECISION TABLE ?01T 00000000 8305 CTRLINIT=JT_CTRL_INIT,- ?01T 00000000 8306 UNITINIT=JT_UNIT_INIT,- ?01T 00000000 8307 CANCEL=0,- ;CANCEL=NO-OP FOR FILES DEVICE JTDRIVER ;skeleton driver implementing u 2-DEC-1994 10:13:13 AMAC V2.1-13-2671 Page 17 V01H STANDARD TABLES 2-DEC-1994 10:12:45 [EVERHART.JT]JTDRIVER_S2.MAR;120 ?01T 00000000 8308 REGDMP=0,- ;REGISTER DUMP ROUTINE ?01T 00000000 8309 DIAGBF=0,- ;BYTES IN DIAG BUFFER ?01T 00000070 8329 ERLGBF=0 ;BYTES IN X03/003 ?02T 00000000 .IIF NDF MACRO64$, .NOCROSS X04/059 ?02T 00000000 .iif greater __temp_count, _mtu_validate_keyword X04/108 ?02T 00000000 .iif greater __temp_count, _mtu_validate_keyword X03/145 ?02T 00000000 .IIF NDF MACRO64$, .CROSS X01/198 ?01T 00000000 JT$DDT:: X01/199 ?01T 00000000 DDT$$BASE: X01/200 ?01T 00000000 .LONG 0 X01/201 ?01T 00000004 .LONG 0 X01/209 ?01T 00000008 .WORD DDT$K_LENGTH X01/210 ?01T 0000000A .WORD 0 X01/218 ?01T 0000000C .WORD 0 X01/226 ?01T 0000000E .WORD 0 X01/234 ?01T 00000010 .WORD FDT$K_LENGTH X01/236 ?01T 00000012 .WORD 0 X02/004 ?03T 00000014 .ADDRESS JT_STARTIO X01/014 ?02T 00000018 .LONG 0 X02/036 ?02T 0000001C .ADDRESS JT_CTRL_INIT X02/052 ?02T 00000020 .ADDRESS JT_UNIT_INIT X02/066 ?02T 00000024 .ADDRESS IOC$RETURN_SUCCESS X01/079 ?01T 00000028 .ADDRESS JT_FUNCTABLE X02/091 ?02T 0000002C .ADDRESS IOC$RETURN_SUCCESS X02/107 ?02T 00000030 .ADDRESS IOC$RETURN_SUCCESS X02/124 ?03T 00000034 .ADDRESS IOC$RETURN_SUCCESS X01/136 ?02T 00000038 .LONG 0 X02/156 ?02T 0000003C .ADDRESS IOC_STD$MNTVER X02/171 ?02T 00000040 .ADDRESS IOC$RETURN X02/185 ?02T 00000044 .ADDRESS IOC$RETURN X02/199 ?02T 00000048 .ADDRESS IOC$RETURN X02/213 ?02T 0000004C .ADDRESS IOC$RETURN X02/227 ?02T 00000050 .ADDRESS IOC$RETURN X02/243 ?02T 00000054 .ADDRESS IOC$RETURN_UNSUPPORTED X02/259 ?02T 00000058 .ADDRESS IOC$RETURN_UNSUPPORTED X01/272 ?01T 0000005C .LONG 0 X01/280 ?01T 00000060 .LONG 0 X02/290 ?02T 00000064 .ADDRESS IOC$RETURN X02/306 ?02T 00000068 .ADDRESS IOC$RETURN_SUCCESS X01/319 ?01T 0000006C .ADDRESS 0 ?01T 00000070 8330 ;ERRLOG BUFFER ?01F 00000070 8331 .iff ?01F 00000070 8332 DDTAB - ;DDT CREATION MACRO ?01F 00000070 8333 DEVNAM=JT,- ;NAME OF DEVICE ?01F 00000070 8334 START=JT_STARTIO,- ;START I/O ROUTINE ?01F 00000070 8335 FUNCTB=JT_FUNCTABLE,- ;FUNCTION DECISION TABLE ?01F 00000070 8336 ; CANCEL=0,- ;CANCEL=NO-OP FOR FILES DEVICE ?01F 00000070 8337 ; REGDMP=0,- ;REGISTER DUMP ROUTINE ?01F 00000070 8338 ; DIAGBF=0,- ;BYTES IN DIAG BUFFER ?01F 00000070 8339 ERLGBF=0 ;BYTES IN ?01F 00000070 8340 ;ERRLOG BUFFER ?01F 00000070 8341 .endc 00000070 8342 ; 00000070 8343 ; FUNCTION DECISION TABLE 00000070 8344 ; 00000070 8345 ; THE FDT LISTS VALID FUNCTION CODES, SPECIFIES WHICH 00000070 8346 ; CODES ARE BUFFERED, AND DESIGNATES SUBROUTINES TO JTDRIVER ;skeleton driver implementing u 2-DEC-1994 10:13:13 AMAC V2.1-13-2671 Page 18 V01H STANDARD TABLES 2-DEC-1994 10:12:45 [EVERHART.JT]JTDRIVER_S2.MAR;120 00000070 8347 ; PERFORM PREPROCESSING FOR PARTICULAR FUNCTIONS. 00000070 8348 ; 00000070 8349 ; note the stuff here needs to be an octaword multiple. 00000070 8350 v15a: .address vcstp15 ;AST address for internal AST 00000074 8351 kasta: .address jtkast ;SKAST addr for daemon to use 00000078 8352 ACLlit: .ascii /GCEV/ ;literal for our use for ACE flag 0000007C 8353 .long 0 ;pad to mult. of 8 00000080 8354 ; code chaining data: 00000080 8355 chnflg: .long 0 ;chain or use our FDT chain flag...use ours if 0 00000084 8356 myonoff: 00000084 8357 fdtonoff: .long 0 ;switch my fdt stuff off if non-0 00000088 8358 .ascii /flag/ ;define your own unique flag here; just leave it 4 bytes long! 0000008C 8359 .long 0 ;fdt tbl from before patch FFFFFFF4 00000090 8360 fdt_chn = -12 FFFFFFFC 00000090 8361 fdt_prev = -4 FFFFFFF8 00000090 8362 fdt_idnt = -8 ?01F 00000090 8363 .if ndf,evax ?01F 00000090 8364 JT_FUNCTABLE: ?01F 00000090 8365 FUNCTAB ,- ;LIST LEGAL FUNCTIONS ?01F 00000090 8366 ; MOUNT VOLUME ?01F 00000090 8388 ; no-op phys I/O for a test here... ?01F 00000090 8389 FUNCTAB ,- ;BUFFERED FUNCTIONS ?01F 00000090 8390 ; MOUNT VOLUME ?01F 00000090 8406 myfdtstart: ?01F 00000090 8407 FUNCTAB JT_ALIGN,- ;TEST ALIGNMENT FUNCTIONS ?01F 00000090 8408 ?01F 00000090 8415 ; io$_format + modifiers (e.g. io$_format+128) as function code ?01F 00000090 8416 ; allows one to associate a JT unit and some other device; see ?01F 00000090 8417 ; the JT_format code comments for description of buffer to be passed. ?01F 00000090 8418 functab JT_format,- ;point to host disk ?01F 00000090 8419 ?01F 00000090 8420 ; ?01F 00000090 8421 ; First our very own filter routines ?01F 00000090 8422 ; ?01F 00000090 8423 ; Following FDT function should cover every function in the local ?01F 00000090 8424 ; FDT entries between "myfdtbgn" and "myfdtend", in this case just ?01F 00000090 8425 ; mount and modify. Its function is to switch these off or on at ?01F 00000090 8426 ; need. ?01F 00000090 8427 Functab fdtswitch,- ?01F 00000090 8428 ?01F 00000090 8429 myfdtbgn=. ?01F 00000090 8430 ; Leave a couple of these in place as an illustration. You would of course ?01F 00000090 8431 ; need to insert your own if you're messing with FDT code, or remove these if ?01F 00000090 8432 ; you don't want to. The FDT switch logic is a waste of time and space if ?01F 00000090 8433 ; you do nothing with them... ?01F 00000090 8434 ; They don't actually do anything here, but could be added to. Throw in one ?01F 00000090 8435 ; to call some daemon at various points and it can act as a second ACP ?01F 00000090 8436 ; when control is inserted at FDT time (ahead of the DEC ACP/XQP code!) ?01F 00000090 8437 FUNCTAB MFYMOUNT,- ;MOUNT FUNCTION ?01F 00000090 8438 ; MOUNT VOLUME ?01F 00000090 8439 functab accfilt,- ;Access file (open files) ?01F 00000090 8440 ?01F 00000090 8441 functab deacfilt,- ;deaccess file (close) ?01F 00000090 8442 ?01F 00000090 8443 functab crefilt,- ;create file ?01F 00000090 8444 ?01F 00000090 8445 FuncTab DelFilt,- ;delete file ?01F 00000090 8446 ?01F 00000090 8447 FuncTab MFYFilt,- ?01F 00000090 8448 ;modify filter (e.g. extend) ?01F 00000090 8449 myfdtend=. ?01F 00000090 8450 ; Note that if we want to allow numerous disk drivers to be patched ?01F 00000090 8451 ; by this one there is not a unique path to the original fdt ?01F 00000090 8452 ; routine. Therefore use a UCB cell for the patch, not a cell ?01F 00000090 8453 ; ahead of the FDT. That way each unit gets a good return ?01F 00000090 8454 ; path. That's why there's an "oldfdt" cell in the UCB here. ?01F 00000090 8455 ; ?01F 00000090 8456 ; ?01F 00000090 8457 ; Following contains all legal functions in mask... ?01F 00000090 8458 ; That way it can transfer all control to a "previous" FDT chain. ?01F 00000090 8459 fdtlclcnt: ?01F 00000090 8460 FuncTab fdttoorig,- JTDRIVER ;skeleton driver implementing u 2-DEC-1994 10:13:13 AMAC V2.1-13-2671 Page 20 V01H STANDARD TABLES 2-DEC-1994 10:12:45 [EVERHART.JT]JTDRIVER_S2.MAR;120 ?01F 00000090 8461 ; MOUNT VOLUME ?01F 00000090 8506 ; Now the "standard" disk FDT routines needed to let ODS-2 work (or ods-1 !) ?01F 00000090 8507 ; (Where we are doing read - or possibly write- virtual by hand ourselves ?01F 00000090 8508 ; we may never get to these BTW...) ?01F 00000090 8509 FUNCTAB +ACP$READBLK,- ;READ FUNCTIONS ?01F 00000090 8510 ?01F 00000090 8514 FUNCTAB +ACP$WRITEBLK,- ;WRITE FUNCTIONS ?01F 00000090 8515 ?01F 00000090 8519 FUNCTAB +ACP$ACCESS,- ;ACCESS FUNCTIONS ?01F 00000090 8520 ?01F 00000090 8523 FUNCTAB +ACP$DEACCESS,- ;DEACCESS FUNCTION ?01F 00000090 8524 ?01F 00000090 8526 FUNCTAB +ACP$MODIFY,- ;MODIFY FUNCTIONS ?01F 00000090 8527 ?01F 00000090 8531 FUNCTAB +ACP$MOUNT,- ;MOUNT FUNCTION ?01F 00000090 8532 ; MOUNT VOLUME ?01F 00000090 8533 FUNCTAB +EXE$LCLDSKVALID,- ;LOCAL DISK VALID FUNCTIONS ?01F 00000090 8534 ;PACK ACKNOWLEDGE ?01F 00000090 8537 FUNCTAB +EXE$ZEROPARM,- ;ZERO PARAMETER FUNCTIONS ?01F 00000090 8538 ; AVAILABLE ?01F 00000090 8541 FUNCTAB +EXE$ONEPARM,- ;ONE PARAMETER FUNCTION ?01F 00000090 8542 ?01F 00000090 8544 FUNCTAB +EXE$SENSEMODE,- ;SENSE FUNCTIONS ?01F 00000090 8545 ?01F 00000090 8548 FUNCTAB +EXE$SETCHAR,- ;SET FUNCTIONS ?01F 00000090 8549 ?01F 00000090 8552 ; This routine normally would be called to go back to our FDT chain at ?01F 00000090 8553 ; fdtlclcnt; it lies after all normal ones would go. It transfers from the FDT ?01F 00000090 8554 ; table in the UCB to the JTdriver table. At fdtlclcnt we transfer to the ?01F 00000090 8555 ; original driver fdt chain. Note this needs serious mods in axp step2... ?01F 00000090 8556 mybak: ?01F 00000090 8557 FuncTab fdttoucb,- ?01F 00000090 8558 ; MOUNT VOLUME ?01T 00000090 8603 .iff ?01T 00000090 8604 JT_FUNCTABLE: ?01T 00000198 8623 FDT_INI X01/010 ?01T 00000090 DRIVER$FDT:: X01/018 ?01T 00000090 .LONG 0,0 X01/033 ?01T 00000098 .ADDRESS - X01/033 ?01T 00000098 EXE$ILLIOFUNC X01/036 ?01T 0000009C .ADDRESS - X01/036 ?01T 0000009C EXE$ILLIOFUNC X01/039 ?01T 000000A0 .ADDRESS - X01/039 ?01T 000000A0 EXE$ILLIOFUNC X01/042 ?01T 000000A4 .ADDRESS - X01/042 ?01T 000000A4 EXE$ILLIOFUNC X01/045 ?01T 000000A8 .ADDRESS - X01/045 ?01T 000000A8 EXE$ILLIOFUNC X01/048 ?01T 000000AC .ADDRESS - X01/048 ?01T 000000AC EXE$ILLIOFUNC X01/051 ?01T 000000B0 .ADDRESS - X01/051 ?01T 000000B0 EXE$ILLIOFUNC X01/054 ?01T 000000B4 .ADDRESS - X01/054 ?01T 000000B4 EXE$ILLIOFUNC X01/057 ?01T 000000B8 .ADDRESS - X01/057 ?01T 000000B8 EXE$ILLIOFUNC X01/060 ?01T 000000BC .ADDRESS - X01/060 ?01T 000000BC EXE$ILLIOFUNC X01/063 ?01T 000000C0 .ADDRESS - X01/063 ?01T 000000C0 EXE$ILLIOFUNC X01/066 ?01T 000000C4 .ADDRESS - X01/066 ?01T 000000C4 EXE$ILLIOFUNC JTDRIVER ;skeleton driver implementing u 2-DEC-1994 10:13:13 AMAC V2.1-13-2671 Page 23 V01H STANDARD TABLES 2-DEC-1994 10:12:45 [EVERHART.JT]JTDRIVER_S2.MAR;120 X01/069 ?01T 000000C8 .ADDRESS - X01/069 ?01T 000000C8 EXE$ILLIOFUNC X01/072 ?01T 000000CC .ADDRESS - X01/072 ?01T 000000CC EXE$ILLIOFUNC X01/075 ?01T 000000D0 .ADDRESS - X01/075 ?01T 000000D0 EXE$ILLIOFUNC X01/078 ?01T 000000D4 .ADDRESS - X01/078 ?01T 000000D4 EXE$ILLIOFUNC X01/081 ?01T 000000D8 .ADDRESS - X01/081 ?01T 000000D8 EXE$ILLIOFUNC X01/084 ?01T 000000DC .ADDRESS - X01/084 ?01T 000000DC EXE$ILLIOFUNC X01/087 ?01T 000000E0 .ADDRESS - X01/087 ?01T 000000E0 EXE$ILLIOFUNC X01/090 ?01T 000000E4 .ADDRESS - X01/090 ?01T 000000E4 EXE$ILLIOFUNC X01/093 ?01T 000000E8 .ADDRESS - X01/093 ?01T 000000E8 EXE$ILLIOFUNC X01/096 ?01T 000000EC .ADDRESS - X01/096 ?01T 000000EC EXE$ILLIOFUNC X01/099 ?01T 000000F0 .ADDRESS - X01/099 ?01T 000000F0 EXE$ILLIOFUNC X01/102 ?01T 000000F4 .ADDRESS - X01/102 ?01T 000000F4 EXE$ILLIOFUNC X01/105 ?01T 000000F8 .ADDRESS - X01/105 ?01T 000000F8 EXE$ILLIOFUNC X01/108 ?01T 000000FC .ADDRESS - X01/108 ?01T 000000FC EXE$ILLIOFUNC X01/111 ?01T 00000100 .ADDRESS - X01/111 ?01T 00000100 EXE$ILLIOFUNC X01/114 ?01T 00000104 .ADDRESS - X01/114 ?01T 00000104 EXE$ILLIOFUNC X01/117 ?01T 00000108 .ADDRESS - X01/117 ?01T 00000108 EXE$ILLIOFUNC X01/120 ?01T 0000010C .ADDRESS - X01/120 ?01T 0000010C EXE$ILLIOFUNC X01/123 ?01T 00000110 .ADDRESS - X01/123 ?01T 00000110 EXE$ILLIOFUNC X01/126 ?01T 00000114 .ADDRESS - X01/126 ?01T 00000114 EXE$ILLIOFUNC X01/129 ?01T 00000118 .ADDRESS - X01/129 ?01T 00000118 EXE$ILLIOFUNC X01/132 ?01T 0000011C .ADDRESS - X01/132 ?01T 0000011C EXE$ILLIOFUNC X01/135 ?01T 00000120 .ADDRESS - X01/135 ?01T 00000120 EXE$ILLIOFUNC X01/138 ?01T 00000124 .ADDRESS - X01/138 ?01T 00000124 EXE$ILLIOFUNC X01/141 ?01T 00000128 .ADDRESS - X01/141 ?01T 00000128 EXE$ILLIOFUNC X01/144 ?01T 0000012C .ADDRESS - X01/144 ?01T 0000012C EXE$ILLIOFUNC X01/147 ?01T 00000130 .ADDRESS - X01/147 ?01T 00000130 EXE$ILLIOFUNC X01/150 ?01T 00000134 .ADDRESS - X01/150 ?01T 00000134 EXE$ILLIOFUNC X01/153 ?01T 00000138 .ADDRESS - JTDRIVER ;skeleton driver implementing u 2-DEC-1994 10:13:13 AMAC V2.1-13-2671 Page 24 V01H STANDARD TABLES 2-DEC-1994 10:12:45 [EVERHART.JT]JTDRIVER_S2.MAR;120 X01/153 ?01T 00000138 EXE$ILLIOFUNC X01/156 ?01T 0000013C .ADDRESS - X01/156 ?01T 0000013C EXE$ILLIOFUNC X01/159 ?01T 00000140 .ADDRESS - X01/159 ?01T 00000140 EXE$ILLIOFUNC X01/162 ?01T 00000144 .ADDRESS - X01/162 ?01T 00000144 EXE$ILLIOFUNC X01/165 ?01T 00000148 .ADDRESS - X01/165 ?01T 00000148 EXE$ILLIOFUNC X01/168 ?01T 0000014C .ADDRESS - X01/168 ?01T 0000014C EXE$ILLIOFUNC X01/171 ?01T 00000150 .ADDRESS - X01/171 ?01T 00000150 EXE$ILLIOFUNC X01/174 ?01T 00000154 .ADDRESS - X01/174 ?01T 00000154 EXE$ILLIOFUNC X01/177 ?01T 00000158 .ADDRESS - X01/177 ?01T 00000158 EXE$ILLIOFUNC X01/180 ?01T 0000015C .ADDRESS - X01/180 ?01T 0000015C EXE$ILLIOFUNC X01/183 ?01T 00000160 .ADDRESS - X01/183 ?01T 00000160 EXE$ILLIOFUNC X01/186 ?01T 00000164 .ADDRESS - X01/186 ?01T 00000164 EXE$ILLIOFUNC X01/189 ?01T 00000168 .ADDRESS - X01/189 ?01T 00000168 EXE$ILLIOFUNC X01/192 ?01T 0000016C .ADDRESS - X01/192 ?01T 0000016C EXE$ILLIOFUNC X01/195 ?01T 00000170 .ADDRESS - X01/195 ?01T 00000170 EXE$ILLIOFUNC X01/198 ?01T 00000174 .ADDRESS - X01/198 ?01T 00000174 EXE$ILLIOFUNC X01/201 ?01T 00000178 .ADDRESS - X01/201 ?01T 00000178 EXE$ILLIOFUNC X01/204 ?01T 0000017C .ADDRESS - X01/204 ?01T 0000017C EXE$ILLIOFUNC X01/207 ?01T 00000180 .ADDRESS - X01/207 ?01T 00000180 EXE$ILLIOFUNC X01/210 ?01T 00000184 .ADDRESS - X01/210 ?01T 00000184 EXE$ILLIOFUNC X01/213 ?01T 00000188 .ADDRESS - X01/213 ?01T 00000188 EXE$ILLIOFUNC X01/216 ?01T 0000018C .ADDRESS - X01/216 ?01T 0000018C EXE$ILLIOFUNC X01/219 ?01T 00000190 .ADDRESS - X01/219 ?01T 00000190 EXE$ILLIOFUNC X01/222 ?01T 00000194 .ADDRESS - X01/222 ?01T 00000194 EXE$ILLIOFUNC ?01T 00000198 8624 FDT_BUF - ; BUFFERED functions ?01T 00000198 8644 ; MOUNT VOLUME X01/114 ?01T 00000090 .LONG $$BUFL,$$BUFH ?01T 00000198 8660 myfdtstart: ?01T 00000198 8661 ; io$_format + modifiers (e.g. io$_format+128) as function code ?01T 00000198 8662 ; allows one to associate a JT unit and some other device; see ?01T 00000198 8663 ; the JT_format code comments for description of buffer to be passed. ?01T 00000198 8691 fdt_act JT_format,- ;point to host disk ?01T 00000198 8692 X01/041 ?03T 00000110 .ADDRESS JT_format ?01T 00000198 8693 ; ?01T 00000198 8694 ; First our very own filter routines ?01T 00000198 8695 ; ?01T 00000198 8696 ; Following FDT function should cover every function in the local ?01T 00000198 8697 ; FDT entries between "myfdtbgn" and "myfdtend", in this case just ?01T 00000198 8698 ; mount and modify. Its function is to switch these off or on at ?01T 00000198 8699 ; need. 00000198 ?01T 00000198 8700 myfdtbgn=. ?01T 00000198 8701 ; Leave a couple of these in place as an illustration. You would of course ?01T 00000198 8702 ; need to insert your own if you're messing with FDT code, or remove these if ?01T 00000198 8703 ; you don't want to. The FDT switch logic is a waste of time and space if ?01T 00000198 8704 ; you do nothing with them... ?01T 00000198 8705 ; They don't actually do anything here, but could be added to. Throw in one ?01T 00000198 8706 ; to call some daemon at various points and it can act as a second ACP ?01T 00000198 8707 ; when control is inserted at FDT time (ahead of the DEC ACP/XQP code!) ?01T 00000198 8708 fdt_act MFYMOUNT,- ;MOUNT FUNCTION ?01T 00000198 8709 ; MOUNT VOLUME X01/033 ?03T 0000017C .ADDRESS MFYMOUNT ?01T 00000198 8710 fdt_act accfilt,- ;Access file (open files) ?01T 00000198 8711 X01/033 ?03T 00000160 .ADDRESS accfilt ?01T 00000198 8712 fdt_act deacfilt,- ;deaccess file (close) ?01T 00000198 8713 X01/033 ?03T 00000168 .ADDRESS deacfilt ?01T 00000198 8714 fdt_act crefilt,- ;create file ?01T 00000198 8715 X01/033 ?03T 00000164 .ADDRESS crefilt ?01T 00000198 8716 fdt_act DelFilt,- ;delete file ?01T 00000198 8717 X01/033 ?03T 0000016C .ADDRESS DelFilt ?01T 00000198 8718 fdt_act MFYFilt,- ?01T 00000198 8719 ;modify filter (e.g. extend) X01/033 ?03T 00000170 .ADDRESS MFYFilt 00000198 ?01T 00000198 8720 myfdtend=. ?01T 00000198 8721 .endc 00000198 8722 ; Data used for templates and so on here 00000198 8723 ; item list for reading ACL 00000198 8724 gceacl: .word 512 ;ACL buffer is 512 bytes long 0000019A 8725 .word atr$c_readacl ;read the whole ACL in if we can 0000019C 8726 gceaba: .long 0 ;address of ACL buffer in LDT 000001A0 8727 .word 4 ;get ACL length 000001A2 8728 .word atr$c_acllength ; this item reads ACL length JTDRIVER ;skeleton driver implementing u 2-DEC-1994 10:13:13 AMAC V2.1-13-2671 Page 26 V01H STANDARD TABLES 2-DEC-1994 10:12:45 [EVERHART.JT]JTDRIVER_S2.MAR;120 000001A4 8729 gceala: .long 0 ; address in LDT of cell to get ACL size 000001A8 8730 .long 0,0 ;terminator for item list 00000018 000001B0 8731 gcetpl=.-gceacl ;length of template. 000001B0 8732 ; Flag literal used to check for MY ACL entries. 000001B0 8733 gceflg: .ascii /GCEV/ ;use my initials... 000001B4 8734 jt_ucb: 000001B4 8735 jt_utb: 000001B4 8736 .rept jt_units 000001B4 8737 .long 0 00000664 8738 .endr 00000664 8739 .long 0,0,0,0,0,0,0,0,0,0 0000068C 8740 00000089 8741 driver_code ?01F 00000089 8742 .if ndf,evax ?01F 00000089 8743 ; fdtswitch - ?01F 00000089 8744 ; Based on state of "myonoff" variable either enable or disable ?01F 00000089 8745 ; my FDT processing, allowing the FDT chain to remain always intact. ?01F 00000089 8746 ; This needs to be the first of a chain of FDT entries added to the ?01F 00000089 8747 ; FDT processing of a driver. ?01F 00000089 8748 ?01F 00000089 8749 fdtswitch: .jsb_entry ?01F 00000089 8750 tstl fdtonoff ;global on/off ?01F 00000089 8751 bneq 1$ ?01F 00000089 8752 rsb ;go to next FDT if null ?01F 00000089 8753 1$: addl2 #,r8 ;pass our fdt codes ?01F 00000089 8754 rsb ;return to std ?01F 00000089 8755 ; fdttoorig - ?01F 00000089 8756 ; This entry continues FDT processing at the point after the new ?01F 00000089 8757 ; entries by returning to the original FDT chain at the point where ?01F 00000089 8758 ; that chain begins. (It is presumed that FDT entries will always be ?01F 00000089 8759 ; added ahead of existing ones due to the nonreturning nature of ?01F 00000089 8760 ; FDT processing.) This is done instead of simply duplicating the ?01F 00000089 8761 ; DEC FDT entries because in this way multiple FDT patches can ?01F 00000089 8762 ; coexist, as would be impossible if this trick were not used. As ?01F 00000089 8763 ; can be seen, its overhead is minimal. ?01F 00000089 8764 ; The old FDT location is kept in the UCB for our device because ?01F 00000089 8765 ; that allows us to get back to different FDTs when several drivers' ?01F 00000089 8766 ; FDT chains are pointed here first. ?01F 00000089 8767 fdttoorig: .jsb_entry ?01F 00000089 8768 pushl r0 ?01F 00000089 8769 ; (this routine gets called a fair bit and if GETJTUCB can be ?01F 00000089 8770 ; called less, things speed up.) ?01F 00000089 8771 jsb getjtucb ;get UCB for JT unit from stolen ?01F 00000089 8772 ;one ?01F 00000089 8773 tstl r0 ;r0 is return UCB ?01F 00000089 8774 bgeq 1$ ;if not negative, not a UCB ?01F 00000089 8775 tstl ucb$l_oldfdt(r0) ;a prior fdt exist? ?01F 00000089 8776 beql 1$ ?01F 00000089 8777 movl ucb$l_oldfdt(r0),r8 ;point to original FDT point ?01F 00000089 8778 addl2 #<16-12>,r8 ;pass the 2 entry masks ?01F 00000089 8779 1$: ;back up since sysqioreq adds 12 ?01F 00000089 8780 popl r0 ?01F 00000089 8781 2$: rsb ;off to the previous FDT routines. ?01F 00000089 8782 ; fdttoucb - ?01F 00000089 8783 ; This entry continues FDT processing at the point after the new ?01F 00000089 8784 ; entries by returning to the original FDT chain at the point where ?01F 00000089 8785 ; that chain begins. (It is presumed that FDT entries will always be JTDRIVER ;skeleton driver implementing u 2-DEC-1994 10:13:13 AMAC V2.1-13-2671 Page 27 V01H STANDARD TABLES 2-DEC-1994 10:12:45 [EVERHART.JT]JTDRIVER_S2.MAR;120 ?01F 00000089 8786 ; added ahead of existing ones due to the nonreturning nature of ?01F 00000089 8787 ; FDT processing.) This is done instead of simply duplicating the ?01F 00000089 8788 ; DEC FDT entries because in this way multiple FDT patches can ?01F 00000089 8789 ; coexist, as would be impossible if this trick were not used. As ?01F 00000089 8790 ; can be seen, its overhead is minimal. ?01F 00000089 8791 ; The old FDT location is kept in the UCB for our device because ?01F 00000089 8792 ; that allows us to get back to different FDTs when several drivers' ?01F 00000089 8793 ; FDT chains are pointed here first. ?02F 00000089 8794 .if df,evax ?02F 00000089 8795 fdttoucb: .jsb_entry output= ?02F 00000089 8796 .iff ?02F 00000089 8797 fdttoucb: ?02F 00000089 8798 .endc ?01F 00000089 8799 pushl r0 ?01F 00000089 8800 ; (this routine gets called a fair bit and if GETJFUCB can be ?01F 00000089 8801 ; called less, things speed up.) ?01F 00000089 8802 movab myfdtstart,r8 ?01F 00000089 8803 subl2 #12,r8 ;start at our FDT entries ?01F 00000089 8804 ; note sysqioreq adds 12 so we start 12 bytes earlier. ?01F 00000089 8805 1$: ;back up since sysqioreq adds 12 ?01F 00000089 8806 popl r0 ?01F 00000089 8807 2$: rsb ;off to the previous FDT routines. ?01F 00000089 8808 .endc 00000089 8809 ; 00000089 8810 ; GETJTUCB - Find JT: UCB address, given r5 points to UCB of the patched 00000089 8811 ; device. Return the UCB in R0, which should return 0 if we can't find 00000089 8812 ; it. 00000089 8813 ; This routine is called a lot and therefore is made as quick as 00000089 8814 ; it well can be, especially for the usual case. 00000089 8824 getjtucb: .jsb_entry output= 00000089 8825 ; clrl r0 ;no UCB initially found 00000089 8826 pushl r10 0000008B 8827 pushl r11 ;faster than pushr supposedly 0000008D 8828 ; pushr #^m 0000008D 8829 ; Assumes that R5 is the UCB address of the device that has had some 0000008D 8830 ; code intercepted and that we are in some bit of code that knows 0000008D 8831 ; it is in an intercept driver. Also assumes R11 may be used as 0000008D 8832 ; scratch registers (as is true in FDT routines). Control returns at 0000008D 8833 ; label "err" if the DDT appears to have been clobbered by 0000008D 8834 ; something not following this standard, if conditional "chk.err" 0000008D 8835 ; is defined. 0000008D 8836 ; Entry: R5 - victim device UCB address 0000008D 8837 ; Exit: R11 - intercept driver UCB address 00000000 0000008D 8838 chk.err=0 0000008D 8839 movl ucb$l_ddt(r5),r10 ;get the DDT we currently have 00000092 8840 ; note we know our virtual driver's DPT address!!! 00000092 8841 movab driver$dpt,r11 ;magic pattern is DPT addr. 00000099 8842 ; lock this section with forklock so we can safely remove 00000099 8843 ; entries at fork also. Use victim device forklock. 00000099 8844 ; (don't preserve r0 since we clobber it anyway.) 000000B7 8924 forklock lock=ucb$b_flck(r5),savipl=-(sp),preserve=NO X01/023 ?01T 00000099 MFPR S^#PR$_IPL,-(sp) X01/033 ?02T 0000009C MOVZBL ucb$b_flck(r5),R0 X01/046 000000A0 BLBC SMP$GL_FLAGS,30001$ X01/048 000000A7 JSB G^SMP$ACQUIRE X01/049 000000AD BRB 30002$ X01/050 000000AF 30001$: JTDRIVER ;skeleton driver implementing u 2-DEC-1994 10:13:13 AMAC V2.1-13-2671 Page 28 V01H STANDARD TABLES 2-DEC-1994 10:12:45 [EVERHART.JT]JTDRIVER_S2.MAR;120 X02/005 ?01T 000000AF MTPR SMP$AL_IPLVEC[R0],S^#PR$_IPL X01/028 000000B7 30002$: 000000B7 8925 2$: cmpl (r10),R11 000000BB 8926 ;this our own driver? 000000BB 8927 ; beql 1$ ;if eql yes, end search 000000BB 8928 ; 000000BB 8929 ; The somewhat odd layout here removes extra branches in the 000000BB 8930 ; most common case, i.e., finding our driver the very first time 000000BB 8931 ; through. The "bneq" branch next time is usually NOT taken. 000000BB 8932 ; 000000BB 8933 bneq 5$ ;check next in chain if not us 000000BD 8934 ; At this point R10 contains the DDT address within the intercept 000000BD 8935 ; driver's UCB. Return the address of the intercept driver's UCB next. 000000BD 8936 movab <0-ucb$a_vicddt>(r10),r11 ;point R11 at the intercept UCB 000000C2 8937 ; brb 4$ ; note in this layout we can comment this out. 000000C2 8938 4$: 000000D6 8987 forkunlock lock=ucb$b_flck(r5),newipl=(sp)+,preserve=NO X01/021 000000C2 BLBC SMP$GL_FLAGS,30003$ X01/030 ?02T 000000C9 MOVZBL ucb$b_flck(r5),R0 X01/044 ?01T 000000CD JSB G^SMP$RELEASE X01/051 000000D3 30003$: X01/053 ?01T 000000D3 MTPR (sp)+,S^#PR$_IPL 000000D6 8988 ; NOW clobber r0 and put things back. 000000D6 8989 movl r11,r0 000000D9 8990 ; popr #^m 000000D9 8991 popl r11 000000DC 8992 popl r10 ;supposedly faster than popr 000000DF 8993 rsb 000000E0 8994 ; Make very sure this DDT is inside a UCB bashed according to our 000000E0 8995 ; specs. The "p.magic" number reflects some version info too. 000000E0 8996 ; If this is not so, not much sense searching more. 000000E0 8997 5$: cmpl (r10),#p.magic 000000E8 8998 bneq 3$ ;exit if this is nonstd bash 000000EA 8999 ; follow DDT block chain to next saved DDT. 000000EA 9000 movl (r10),r10 000000EE 9001 ;point R10 at the next DDT in the 000000EE 9002 ;chain 000000EE 9003 bgeq 3$ ; (error check if not negative) 000000F0 9004 brb 2$ ;then check again 000000F2 9005 ;1$: 000000F2 9006 3$: 000000F2 9007 clrl r11 ;return 0 if nothing found 000000F4 9008 brb 4$ 000000F6 9009 ; 000000F6 9010 ; Few macros for long distance branches... 000000F6 9011 ; 000000F6 9012 .macro beqlw lbl,?lbl2 000000F6 9013 bneq lbl2 000000F6 9014 brw lbl 000000F6 9015 lbl2: 000000F6 9016 .endm 000000F6 9017 .macro bneqw lbl,?lbl2 000000F6 9018 beql lbl2 000000F6 9019 brw lbl 000000F6 9020 lbl2: 000000F6 9021 .endm 000000F6 9022 .macro bleqw lbl,?lbl2 JTDRIVER ;skeleton driver implementing u 2-DEC-1994 10:13:13 AMAC V2.1-13-2671 Page 29 V01H STANDARD TABLES 2-DEC-1994 10:12:45 [EVERHART.JT]JTDRIVER_S2.MAR;120 000000F6 9023 bgtr lbl2 000000F6 9024 brw lbl 000000F6 9025 lbl2: 000000F6 9026 .endm 000000F6 9027 .macro bgeqw lbl,?lbl2 000000F6 9028 blss lbl2 000000F6 9029 brw lbl 000000F6 9030 lbl2: 000000F6 9031 .endm 000000F6 9032 ; allocate does not zero its result area. 000000F6 9033 ; This macro makes it easy to zero an allocated area before using it. 000000F6 9034 ; Leaves no side effects...just zeroes the area for "size" bytes 000000F6 9035 ; starting at "addr". 000000F6 9036 .macro zapz addr,size 000000F6 9037 pushr #^m ;save regs from movc5 000000F6 9038 movc5 #0,addr,#0,size,addr 000000F6 9039 popr #^m ;save regs from movc5 000000F6 9040 .endm 000000F6 9041 ; 000000F6 9042 .SBTTL Our FDT Filter Routines 000000F6 9043 ; These routines are edited from the JTdriver versions to call 000000F6 9044 ; getJTucb, assuming they are called with R5 pointing at the patched 000000F6 9045 ; driver's UCB. 000000F6 9046 ; INPUTS: 000000F6 9047 ; 000000F6 9048 ; R3 - IRP ADDRESS (I/O REQUEST PACKET) 000000F6 9049 ; R4 - PCB ADDRESS (PROCESS CONTROL BLOCK) 000000F6 9050 ; R5 - UCB ADDRESS (UNIT CONTROL BLOCK) 000000F6 9051 ; R6 - CCB ADDRESS (CHANNEL CONTROL BLOCK) 000000F6 9052 ; R7 - BIT NUMBER OF THE I/O FUNCTION CODE 000000F6 9053 ; R8 - ADDRESS OF FDT TABLE ENTRY FOR THIS ROUTINE 000000F6 9054 ; (AP) - ADDRESS OF FIRST QIO PARAMETER 000000F6 9055 ; Filter routines. 000000F6 9056 ; These do the interesting stuff. 000000F6 9057 ; 000000F6 9058 ;AccFilt: Handles open (io$_access) requests. 000000F6 9059 ; Operation: 000000F6 9060 ; 1. Check that access is really OK here (not our own daemons, not 000000F6 9061 ; our own internal I/O, either dummy FID to call daemon at once 000000F6 9062 ; or not in our job, and that function has io$m_access bit 000000F6 9063 ; set if not a bogus fid (& relevant fcnmsk bit). 000000F6 9064 ; 2. Store the I/O context (registers etc.) in a structure called 000000F6 9065 ; our Local Data Table (LDT) 000000F6 9066 ; (note: skip 2-5 if dummy FID & just call daemon if needed) 000000F6 9067 ; 3. Start an i/o thread to read the ACL in. Note we make mainline wait 000000F6 9068 ; via waitfor ef#31 and loop till our local data structure says 000000F6 9069 ; we got r0 return from USER'S i/o. Flag nodelete till done 000000F6 9070 ; unless it was set at start. Use per-process counter to do 000000F6 9071 ; the nodelete state right. 000000F6 9072 ; 4. If our ACE is there (3rd long containing "GCEV") then store it in 000000F6 9073 ; our structure for later. Junk stuff we don't need any more. 000000F6 9074 ; 5. ASTs (knl, -> sp. knl) of internal I/O get to skast state. 000000F6 9075 ; 6. If ACE says to call daemon, or if ACL not all there and our ACE not 000000F6 9076 ; seen, call daemon (in latter case flagging to read ACL one ACE at 000000F6 9077 ; a time) 000000F6 9078 ; 7. Either direct or from SKAST from daemon return, restore regs 000000F6 9079 ; & context and issue user i/o. Unblock mainline once we get JTDRIVER ;skeleton driver implementing u 2-DEC-1994 10:13:13 AMAC V2.1-13-2671 Page 30 V01H Our FDT Filter Routines 2-DEC-1994 10:12:45 [EVERHART.JT]JTDRIVER_S2.MAR;120 000000F6 9080 ; r0 status from that i/o (return approp. value) and undo 000000F6 9081 ; no-delete, no-suspend flagging of process. Free knl stuff if 000000F6 9082 ; no need for it, or leave it for delete FDT processing. 000000F6 9083 ; 00000108 9128 AccFilt: $driver_fdt_entry 00000000 X02/073 ?02T 000000F6 .iif identical false, , _MTU_DIR_ARG_3 = 0 X01/129 ?01T 000000F8 MOVL FDTARG$_IRP(AP),R3 X01/130 ?01T 000000FC MOVL FDTARG$_PCB(AP),R4 X01/131 ?01T 00000100 MOVL FDTARG$_UCB(AP),R5 X01/132 ?01T 00000104 MOVL FDTARG$_CCB(AP),R6 00000108 9129 ; skip kernel channels 00000108 9130 bitb #3,irp$b_rmod(r3) ;see if any nonknl bits are there 0000010C 9131 bneq 1$ ;if neq yes, ok to continue 0000010E 9132 2$: 0000010E 9133 bsbw pors 00000111 9134 ret 00000112 9135 ; brw pors ;no, cannot munge knl packet 00000112 9136 1$: 00000112 9137 ; Also check quotas like the DEC FDT routines do to ensure quotas are 00000112 9138 ; not going to be violated. No need to go further if so. 00000112 9139 movl pcb$l_jib(r4),r1 ;get the JIB ?01T 00000117 9140 .if df,evax ?01T 00000117 9141 tstl jib$l_filcnt(r1) ;got any files left? ?01F 0000011A 9142 .iff ?01F 0000011A 9143 tstw jib$w_filcnt(r1) ;got any files left? ?01F 0000011A 9144 .endc 0000011A 9145 bleq 2$ ;no, skip now. 0000011C 9146 ;check device not mounted, mounted, shadowset part etc. 0000011C 9147 bbs #dev$v_dmt,ucb$l_devchar(r5),2$ 00000121 9148 bbc #dev$v_mnt,ucb$l_devchar(r5),2$ 00000126 9149 bitl #,ucb$l_devchar2(r5) 0000012E 9150 bneq 2$ 00000130 9151 bbs #dev$v_for,ucb$l_devchar(r5),2$ 00000135 9152 ; Quotas and so on look OK. Can't economically check more here. 00000135 9153 pushr #^m 00000137 9154 ; original r5 now at 4(sp). Must get that to continue the ops. 00000137 9155 jsb getJTucb ;find JTdriver ucb 0000013B 9156 tstl r0 0000013D 9157 blss 509$ 0000013F 9158 popr #^m 00000141 9159 bsbw popout 00000144 9160 ret 00000145 9161 509$: 00000145 9162 ; bgeqw popout ?01T 00000145 9163 .iif df,msetrp,movl #1,mtp$trace(r0) 0000014A 9164 movl r5,ucb$l_backlk(r0) ;save link'd ucb in ours too. 0000014F 9165 movl r0,r5 ;point R5 at JT UCB 00000152 9166 bitl #1,ucb$l_ctlflgs(r5) ;doing this filtering? 00000157 9167 bneq 1509$ 00000159 9168 popr #^m 0000015B 9169 bsbw popout 0000015E 9170 ret 0000015F 9171 1509$: 0000015F 9172 ; beqlw popout 0000015F 9173 ; Make sure this isn't one of OUR daemons ?01T 0000015F 9174 .iif df,msetrp,movl #2,mtp$trace(r5) ?01T 00000164 9175 .iif df,msetrp,movl r3,mtp$irp(r5) JTDRIVER ;skeleton driver implementing u 2-DEC-1994 10:13:13 AMAC V2.1-13-2671 Page 31 V01H Our FDT Filter Routines 2-DEC-1994 10:12:45 [EVERHART.JT]JTDRIVER_S2.MAR;120 00000169 9176 cmpl pcb$l_pid(r4),ucb$l_daemon(r5) ;open etc. daemon? 00000170 9177 bneq 2509$ 00000172 9178 3509$: popr #^m 00000174 9179 bsbw popout 00000177 9180 ret 00000178 9181 2509$: 00000178 9182 ; beqlw popout 00000178 9183 cmpl pcb$l_pid(r4),ucb$l_exdmn(r5) ;not extend daemon 00000184 9184 beqlw 3509$ X01/001 0000017F bneq 30004$ X01/002 00000181 brw 3509$ X01/003 00000184 30004$: 00000184 9185 cmpl pcb$l_pid(r4),ucb$l_deldmn(r5) 00000190 9186 beqlw 3509$ ;not delete daemon X01/001 0000018B bneq 30005$ X01/002 0000018D brw 3509$ X01/003 00000190 30005$: 00000190 9187 cmpl pcb$l_pid(r4),ucb$l_exempt(r5) ;exempted pid? 0000019C 9188 beqlw 3509$ X01/001 00000197 bneq 30006$ X01/002 00000199 brw 3509$ X01/003 0000019C 30006$: 0000019C 9189 cmpl pcb$l_pid(r4),ucb$l_exempt+4(r5) ;exempted pid? 000001A8 9190 beqlw 3509$ X01/001 000001A3 bneq 30007$ X01/002 000001A5 brw 3509$ X01/003 000001A8 30007$: 000001A8 9191 cmpl pcb$l_pid(r4),ucb$l_exempt+8(r5) ;exempted pid? 000001B4 9192 beqlw 3509$ X01/001 000001AF bneq 30008$ X01/002 000001B1 brw 3509$ X01/003 000001B4 30008$: 000001B4 9193 cmpl pcb$l_pid(r4),ucb$l_exempt+12(r5) ;exempted pid? 000001C0 9194 beqlw 3509$ X01/001 000001BB bneq 30009$ X01/002 000001BD brw 3509$ X01/003 000001C0 30009$: 000001C0 9195 ;make sure not a knl mode channel (leave the XQP channel alone!!!) ?01T 000001C0 9196 .iif df,msetrp,movl #3,mtp$trace(r5) 000001C5 9197 cmpb ccb$b_amod(r6),#1 ;this the XQP's chnl? 000001C9 9198 ; if less than 1 skip too...though that isn't supposed to happen 000001CE 9199 bleqw 3509$ ; if so scram NOW. X01/001 000001C9 bgtr 30010$ X01/002 000001CB brw 3509$ X01/003 000001CE 30010$: 000001CE 9200 bitl #1024,ucb$l_ctlflgs(r5) ; checking for bogus FIDs? 000001D7 9201 beql 3$ ; if eql no ?01T 000001D9 9202 .if df,evax ?01T 000001D9 9203 movl irp$l_qio_p1(r3),r0 ;get P1 param ?01F 000001DD 9204 .iff ?01F 000001DD 9205 movl p1(ap),r0 ?01F 000001DD 9206 .endc 000001DD 9207 beql 3$ 000001DF 9208 movl 4(r0),r0 ;point at user FIB 000001E3 9209 beql 3$ ; skip if none there 000001E5 9210 ; fid = fileno, fileseq, rvn, filenohi 000001E5 9211 ; if filenohi .gt.128 and rvn .gt.128 as unsigned numbers then JTDRIVER ;skeleton driver implementing u 2-DEC-1994 10:13:13 AMAC V2.1-13-2671 Page 32 V01H Our FDT Filter Routines 2-DEC-1994 10:12:45 [EVERHART.JT]JTDRIVER_S2.MAR;120 000001E5 9212 ; treat the operation here. 000001E5 9213 ; Other h.o. bits are used to act as device switches here if this 000001E5 9214 ; is selected. This requires of course that real volume sets 000001E5 9215 ; be limited to maybe 32 volumes and that real maxfiles be less 000001E5 9216 ; than the 24 bits' worth, for those volumes monitored here. Since 000001E5 9217 ; this monitor is per disk, the function CAN just be disabled on large 000001E5 9218 ; volume sets. 000001E5 9219 bitb #128,fib$w_fid+4(r0) ;rvn bit set? 000001EA 9220 beql 3$ 000001EC 9221 bitb #128,fib$w_fid+5(r0) ;hi fileno set? 000001F1 9222 bneq 4$ ;if so skip open funct. test 000001F3 9223 3$: ?01T 000001F3 9224 .if df,evax ?01T 000001F3 9225 bitl #,irp$l_func(r3) ; see if this is really an OPEN ?01F 000001FB 9226 .iff ?01F 000001FB 9227 bitw #,irp$w_func(r3) ; see if this is really an OPEN ?01F 000001FB 9228 .endc 00000200 9229 beqlw 3509$ ;if not, scram X01/001 000001FB bneq 30011$ X01/002 000001FD brw 3509$ X01/003 00000200 30011$: 00000200 9230 brb 93$ 00000202 9231 4$: 00000202 9232 ; If here, we have a file id that appears fake and are flagging 00000202 9233 ; such. Arrange to call the daemon in that case. 00000202 9234 ; Note no LDT exists yet, so we'll do tests later, before issuing 00000202 9235 ; our own i/o, to test this. 00000202 9236 93$: 00000202 9237 ; Ensure the file is not already open too, like DEC FDT routines do. ?01T 00000202 9238 .iif df,msetrp,movl #5,mtp$trace(r5) 00000207 9239 tstl ccb$l_wind(r6) ;if a window exists, open now 0000020F 9240 bneqw 3509$ ;so scram fast. X01/001 0000020A beql 30012$ X01/002 0000020C brw 3509$ X01/003 0000020F 30012$: 0000020F 9241 ; 0000020F 9242 ; Now ensure that this call is not in the same JOB as the daemon. 0000020F 9243 ; (This lets the daemon spawn processes to do some work.) 0000020F 9244 pushr #^m ;get some regs 00000213 9245 movl ucb$l_daemon(r5),r10 ;get the daemon PID 00000218 9246 bleq 5$ 0000021A 9247 movzwl r10,r7 ;get process index 0000021D 9248 ; like code in FQdriver... 0000021D 9249 movl g^sch$gl_pcbvec,r6 ;get pcb vector 00000224 9250 movl (r6)[r7],r8 ;get a PCB address 00000228 9251 tstl r8 ;ensure a system addr 0000022A 9252 bgeq 5$ ;skip if not 0000022C 9253 cmpl r10,pcb$l_pid(r8) ;be sure this is the daemon process 00000231 9254 bneq 5$ ;else skip 00000233 9255 ; ok, we for sure have the daemon's PCB now. See if the JIBs match 00000233 9256 cmpl pcb$l_jib(r8),pcb$l_jib(r4) ;same JIB as daemon's? 0000023A 9257 bneq 5$ ;if not, don't skip out 0000023C 9258 popr #^m ;get regs back now 00000240 9259 48$: brw 3509$ ;then buzz off 00000243 9260 5$: 00000243 9261 popr #^m ;get regs back now 00000247 9262 ; Ensure this is not our own internal IRP by checking vs the AST address in JTDRIVER ;skeleton driver implementing u 2-DEC-1994 10:13:13 AMAC V2.1-13-2671 Page 33 V01H Our FDT Filter Routines 2-DEC-1994 10:12:45 [EVERHART.JT]JTDRIVER_S2.MAR;120 00000247 9263 ; the IRP. ?01T 00000247 9264 .iif df,msetrp,movl #6,mtp$trace(r5) 0000024C 9265 movab vcstp15,v15a 00000257 9266 cmpl v15a,irp$l_ast(r3) ;our IRP should be skipped 00000264 9267 beqlw 3509$ X01/001 0000025F bneq 30013$ X01/002 00000261 brw 3509$ X01/003 00000264 30013$: 00000264 9268 ; 00000264 9269 ; Add "keep private volumes really private" by seeing if the volume 00000264 9270 ; owner (ucb$l_pid) is nonzero and if it is, if it does not match 00000264 9271 ; irp$l_pid then fail this i/o. ?01T 00000264 9272 .if df,real_pvt ?01T 00000264 9273 pushl r0 ?01T 00000266 9274 bitl #2048,ucb$l_ctlflgs(r5) ;2048 bit means keep pvt dvc pvt ?01T 0000026F 9275 beql 148$ ?01T 00000271 9276 movl ucb$l_backlk(r5),r0 ;get original ucb ?01T 00000276 9277 tstl ucb$l_pid(r5) ;device owned by a pid? ?01T 00000279 9278 beql 148$ ;if eql no, skip out ?01T 0000027B 9279 tstl irp$l_pid(r3) ;can't check internal irps ?01T 0000027E 9280 blss 148$ ?01T 00000280 9281 cmpl irp$l_pid(r3),ucb$l_pid(r5) ;this i/o from owner? ?01T 00000285 9282 beql 148$ ;yah...let it by ?01T 00000287 9283 ; I/O from someone else. Return error... ?01T 00000287 9284 popl r0 ?01T 0000028A 9285 popr #^m ;restore regs now ?01T 0000028C 9286 movl #ss$_nopriv,r0 ;this is the error ?01T 0000029F 9305 call_abortio X01/007 ?01T 0000028F PUSHL R0 X01/008 ?01T 00000291 PUSHL R5 X01/009 ?01T 00000293 PUSHL R4 X01/010 ?01T 00000295 PUSHL R3 X01/011 ?01T 00000297 CALLS #4,G^EXE_STD$ABORTIO X01/014 ?02T 0000029E RET ?01T 0000029F 9306 ; ret ?01T 0000029F 9307 ; jmp g^exe$abortio ;so stop the open HERE. ?01T 0000029F 9308 148$: ?01T 0000029F 9309 popl r0 ?01T 000002A2 9310 .endc 000002A2 9311 ; if we want to check only files in our store, do the following... 000002A2 9312 ; In some cases this will reduce overhead a LOT. ?01T 000002A2 9313 .iif df,msetrp,movl #7,mtp$trace(r5) 000002A7 9314 bitl #^x40000,ucb$l_ctlflgs(r5) ;check magic bit 000002B0 9315 beql 50$ 000002B2 9316 pushr #^m ;need some regs ?01T 000002B4 9317 .if df,evax ?01T 000002B4 9318 movl irp$l_qio_p1(r5),r0 ;get FIB desc ?01F 000002B8 9319 .iff ?01F 000002B8 9320 movl p1(ap),r0 ?01F 000002B8 9321 .endc 000002B8 9322 beql 47$ 000002BA 9323 movl 4(r0),r0 ;get fib addr 000002BE 9324 beql 47$ 000002C0 9325 movzwl fib$w_fid(r0),r1 ;get file number (check numbers 000002C4 9326 ; to save space) 000002C4 9327 beql 47$ ; look, don't skip, if no filenum ?01F 000002C6 9328 .if df,wd.lst JTDRIVER ;skeleton driver implementing u 2-DEC-1994 10:13:13 AMAC V2.1-13-2671 Page 34 V01H Our FDT Filter Routines 2-DEC-1994 10:12:45 [EVERHART.JT]JTDRIVER_S2.MAR;120 ?01F 000002C6 9329 movl #f.nums,r2 ; get size of store ?01F 000002C6 9330 movab ucb$l_fnums(r5),r3 ; point at store ?01F 000002C6 9331 49$: cmpw (r3)+,r1 ; same file number? ?01F 000002C6 9332 beql 47$ ; if so go ahead ?01F 000002C6 9333 sobgtr r2,49$ ?01T 000002C6 9334 .iff ;bitmap ?02F 000002C6 9335 .iif ndf,f.nums,f.nums=16 ?02F 000002C6 9336 .iif ndf,f.nsiz,f.nsiz=2048 ?01T 000002C6 9337 movl #f.nsiz,r2 ; size of array ?01T 000002CD 9338 movl ucb$l_fnums(r5),r3 ; get storage area ?01T 000002D2 9339 beql 47$ ; no bitmap means look ?01T 000002D4 9340 ; r1 is file number... FFFFC000 ?02T 000002D4 9341 .iif ndf,f.mask,f.mask=-16384 ;max bits to use in bitmap check ?01T 000002D4 9342 bicl #f.mask,r1 ;clear extra bits ?01T 000002DB 9343 ashl #-3,r1,r2 ;r2 gets byte offset into bitmap ?01T 000002E0 9344 addl3 r3,r2,r0 ;get the address ?01T 000002E4 9345 bicl #-8,r1 ;isolate bit in byte now (0-7) ?01T 000002EB 9346 bbs r1,(r0),47$ ;if the bit is zero, not here ?01T 000002EF 9347 ;if the bit is set, though, go fer it ?01T 000002EF 9348 .endc 000002EF 9349 ; fall thru...no match 000002EF 9350 popr #^m 000002F1 9351 popr #^m 000002F3 9352 bsbw popout 000002F6 9353 ret 000002F7 9354 47$: 000002F7 9355 popr #^m 000002F9 9356 50$: 000002F9 9357 ; Looks like we need to deal with this IRP. 000002F9 9358 ; First allocate some space to save the I/O context and find where this 000002F9 9359 ; operation's LDT should be added. 000002F9 9360 ; Do this from device IPL and save registers since we need them here. 000002F9 9361 pushl r0 000002FB 9362 pushl r1 000002FD 9363 pushr #^m 00000301 9473 devicelock lockaddr=ucb$l_dlck(r5), - ?03T 0000031F 9516 lockipl=ucb$b_dipl(r5),preserve=YES X03/003 ?01T 00000301 .IIF NDF MACRO64$, .NOCROSS X04/059 ?01T 00000000 .iif greater __temp_count, _mtu_validate_keyword X04/180 ?01T 00000000 .iif greater __temp_count, _mtu_validate_keyword X03/217 ?01T 00000000 .IIF NDF MACRO64$, .CROSS X01/247 ?01T 00000301 BLBC SMP$GL_FLAGS,30014$ X02/001 ?03T 00000308 EVAX_STQ R0, -(SP) X01/008 ?03T 0000030B MOVL ucb$l_dlck(r5),R0 X01/017 ?02T 0000030F JSB SMP$ACQUIREL X02/001 ?03T 00000315 EVAX_LDQ R0, (SP)+ X01/007 ?02T 00000318 BRB 30015$ X01/009 ?01T 0000031A 30014$: X02/016 ?03T 0000031A MTPR ucb$b_dipl(r5),S^#PR$_IPL X01/040 ?01T 0000031F 30015$: ?01T 0000031F 9517 .iif df,msetrp,movl #8,mtp$trace(r5) 00000324 9518 jsb findldt ;get our LDT if any. (normally none) 0000032A 9519 tstl r0 ;did we find one ready? 0000032C 9520 ; must reallocate if we found one...should never get one twice 0000032C 9521 beql 55$ ;if eql, good, no LDT. Grab one from pool. 0000032E 9522 ;got an ldt. Free it up. 0000032E 9523 pushl r1 JTDRIVER ;skeleton driver implementing u 2-DEC-1994 10:13:13 AMAC V2.1-13-2671 Page 35 V01H Our FDT Filter Routines 2-DEC-1994 10:12:45 [EVERHART.JT]JTDRIVER_S2.MAR;120 00000330 9524 ; point past this LDT so link is ok 00000330 9525 movl ldt$l_fwd(r0),ldt$l_fwd(r1) ;remove this ldt from chain 00000335 9526 ; r0 = addr = ldt 00000335 9527 movl ldt$l_fresiz(r0),r1 ;get size 00000339 9528 jsb g^exe$deanonpgdsiz ;free it 0000033F 9529 popl r1 00000342 9530 ;ok, now the bogus LDT is gone. Get a new one. 00000342 9531 55$: ?01T 00000342 9532 .iif df,msetrp,movl #9,mtp$trace(r5) ?01T 00000347 9533 .iif df,msetrp, movl r1,mtp$r1(r5) 0000034C 9534 tstl r1 ;got a valid pointer? 00000353 9535 beqlw 2000$ ;if not, skip out X01/001 0000034E bneq 30017$ X01/002 00000350 brw 2000$ X01/003 00000353 30017$: 00000353 9536 pushl r1 00000355 9537 movl #ldt$l_size,r1 ;ldt size to get 0000035C 9538 jsb g^exe$alonpagvar ;go get pool 00000362 9539 popl r1 ?01T 00000365 9540 .iif df,msetrp,movl r0,mtp$r0(r5) 0000036A 9541 blbs r0,56$ ;if ok, go on 0000036D 9542 989$: brw 2000$ ;else skip out. 00000370 9543 56$: ?01T 00000370 9544 .iif df,msetrp,movl #10,mtp$trace(r5) 00000375 9545 movl r2,(r1) ;point link at this one ?01T 00000378 9546 .iif df,msetrp,movl r2,mtp$ldt(r5) 0000037D 9547 movl r1,r9 ;save copy here 00000380 9548 clrl ldt$l_fwd(r2) ;zero our fwd pointer 00000383 9549 movl #ldt$k_clrsiz,r10 00000394 9550 zapz (r2),r10 ;clear entire LDT out fassstt X01/001 0000038A pushr #^m ;save regs from movc5 X01/002 0000038C movc5 #0,(r2),#0,r10,(r2) X01/003 00000392 popr #^m ;save regs from movc5 00000394 9551 ; now wee have the LDT created. Set it up. 00000394 9552 movl #ldt$l_size,ldt$l_fresiz(r2) ;set up the size to free 0000039C 9553 movl r6,ldt$l_ccb(r2) ;claim the LDT for us 000003A0 9554 movl r2,r11 ;want the LDT less volatile 000003A3 9555 ; Need to set up the process structure here. Since findldt doesn't 000003A3 9556 ; return it, wee need to get it directly off the UCB. 000003A3 9557 pushr #^m ?01T 000003A5 9558 .iif df,msetrp,movl #11,mtp$trace(r5) 000003AA 9559 movl ucb$l_prcvec(r5),r1 ;start of ldt chain 000003AF 9560 bgeq 999$ ;lose if none 000003B1 9561 movzwl pcb$l_pid(r4),r2 ;get index 000003B6 9562 ashl #5,r2,r2 ;get tbl entry offset 000003BA 9563 ; shift 5 so 32 bytes = 8 longs per entry 000003BA 9564 addl3 r2,r1,r3 ;point r3 at our slot 000003BE 9565 movl r3,r1 ;let r1 return as link addr 000003C1 9566 999$: 000003C1 9567 popr #^m ?01T 000003C3 9568 .iif df,msetrp,movl #12,mtp$trace(r5) 000003C8 9569 movl r1,ldt$l_prcstr(r11) ;set up pointer to process struct 000003CC 9570 bgeq 989$ 000003CE 9571 addl2 #8,ldt$l_prcstr(r11) ;pass LDT base info to get to our counters 000003D2 9572 ; allocate the synch structure we need now. 000003D2 9573 ; (if we keep ldt allocated till wait falls thru and dealloc after 000003D2 9574 ; then we may be able to just use the ldt here though.) JTDRIVER ;skeleton driver implementing u 2-DEC-1994 10:13:13 AMAC V2.1-13-2671 Page 36 V01H Our FDT Filter Routines 2-DEC-1994 10:12:45 [EVERHART.JT]JTDRIVER_S2.MAR;120 000003D2 9575 movl #16,r1 000003D5 9576 jsb g^exe$alonpagvar 000003DB 9577 blbs r0,57$ ;if all well, fine 000003DE 9578 ;no aux struct so skip out 000003DE 9579 clrl (r9) ;clr pointer to ldt 000003E0 9580 movl r11,r0 ;addr to free 000003E3 9581 movl ldt$l_fresiz(r11),r1 ;size to free 000003E7 9582 jsb g^exe$deanonpgdsiz 000003ED 9583 brw 2000$ ;skip out 000003F0 9584 57$: 000003F0 9585 movl r2,ldt$l_synch(r11) ;save pointer to synch block ?01T 000003F4 9586 .iif df,msetrp,movl #13,mtp$trace(r5) 000003F9 9587 clrq (r2) ;set it initially null 1....... %AMAC-I-QUADMEMREF, (1) quadword memory references may be unaligned in routine ACCFILT 000003FB 9588 movl r11,r1 ;save ldt pointer ?01T 000003FE 9589 .if ndf,evxr64d ?01T 000003FE 9590 movpsl ldt$l_psl(r11) ;save original psl of request for later ?01F 00000402 9591 .iff ?01F 00000402 9592 evax_getps ?01F 00000402 9593 movl r0,ldt$l_psl(r11) ?01F 00000402 9594 .endc 00000402 9595 insv #2,#psl$v_ipl,#psl$s_ipl,ldt$l_psl(r11) ;enforce ipl2 00000409 9596 movab ldt$l_regs(r11),r0 ;where to save regs 0000040E 9597 popr #^m 00000412 9598 movl r2,(r0)+ 00000415 9599 movl r3,(r0)+ 00000418 9600 movl r4,(r0)+ 0000041B 9601 movl r5,(r0)+ ;save all registers. 0000041E 9602 movl r6,(r0)+ ;use movl since we don't know its 00000421 9603 movl r7,(r0)+ ;quadword aligned. 00000424 9604 movl r8,(r0)+ 00000427 9605 movl r9,(r0)+ 0000042A 9606 movl r10,(r0)+ 0000042D 9607 movl r11,(r0)+ ;save all registers ?01T 00000430 9608 .iif df,msetrp,movl #14,mtp$trace(r5) ?01T 00000435 9609 .iif df,msetrp,movl r6,mtp$ccb(r5) 0000043A 9610 pushr #^m 0000043E 9611 movl r1,r11 ;r11 is again the LDT 00000441 9612 movl irp$ps_fdt_context(r3),ldt$l_fdtctx(r11) ;save FDT context addr ?01T 00000448 9613 .iif df,msetrp, movl irp$ps_fdt_context(r3),mtp$trc3+4(r5) 0000044F 9614 ; now fix up saved R5 to point at original intercepted ucb 0000044F 9615 movl ucb$l_backlk(r5),ldt$l_regs+12(r11) 00000456 9616 movab ldt$l_parm(r11),r0 ;save qio params ?01T 0000045B 9617 .if df,evax ?01T 0000045B 9618 movl irp$l_qio_p1(r3),(r0)+ ?01T 0000045F 9619 movl irp$l_qio_p2(r3),(r0)+ ?01T 00000463 9620 movl irp$l_qio_p3(r3),(r0)+ ?01T 00000468 9621 movl irp$l_qio_p4(r3),(r0)+ ?01T 0000046D 9622 movl irp$l_qio_p5(r3),(r0) ?01F 00000472 9623 .iff ?01F 00000472 9624 movl p1(ap),(r0)+ ?01F 00000472 9625 movl p2(ap),(r0)+ ?01F 00000472 9626 movl p3(ap),(r0)+ ?01F 00000472 9627 movl p4(ap),(r0)+ ?01F 00000472 9628 movl p5(ap),(r0)+ JTDRIVER ;skeleton driver implementing u 2-DEC-1994 10:13:13 AMAC V2.1-13-2671 Page 37 V01H Our FDT Filter Routines 2-DEC-1994 10:12:45 [EVERHART.JT]JTDRIVER_S2.MAR;120 ?01F 00000472 9629 .endc 00000472 9630 ; get the params like user FIB stuff... ?01T 00000472 9631 .if df,evax ?01T 00000472 9632 movl irp$l_qio_p1(r3),r10 ;fib desc. ?01F 00000476 9633 .iff ?01F 00000476 9634 movl p1(ap),r10 ?01F 00000476 9635 .endc 00000476 9636 movl 4(r10),r10 ;point at fib ityself 0000047A 9637 movl fib$l_acctl(r10),ldt$l_accmd(r11) ;save "how open" ?01T 0000047F 9638 .iif df,msetrp,movl #15,mtp$trace(r5) ?01T 00000484 9639 .if df,evax ?01T 00000484 9640 movl pcb$l_prib(r4),ldt$l_bprio(r11) ;save base prio ?01F 00000489 9641 .iff ?01F 00000489 9642 movzbl pcb$b_prib(r4),ldt$l_bprio(r11) ;save base prio ?01F 00000489 9643 .endc 00000489 9644 ; save file id, dir id from user call initially. Get file ID later after 00000489 9645 ; our i/o as a "better" number [should be the same]. 00000489 9646 movl fib$w_fid(r10),ldt$l_myfid(r11) 0000048F 9647 movzwl fib$w_fid+4(r10),ldt$l_myfid+4(r11) 00000495 9648 movl fib$w_did(r10),ldt$l_mydid(r11) ;save dir id too 1....... %AMAC-I-MEMREFNOT, (1) memory reference not naturally aligned in routine ACCFILT 0000049B 9649 movzwl fib$w_did+4(r10),ldt$l_mydid+4(r11) 000004A1 9650 movl g^ctl$gl_phd,r9 ;get proc. hdr 000004A8 9651 movl phd$q_privmsk(r9),ldt$l_wprv(r11) ;save working privs 000004AD 9652 movl phd$q_privmsk+4(r9),ldt$l_wprv+4(r11) ;save working privs 000004B2 9653 movl phd$q_authpriv(r9),ldt$l_aprv(r11) ;save auth privs 000004B8 9654 movl phd$q_authpriv+4(r9),ldt$l_aprv+4(r11) ;save auth privs 000004BE 9655 movl r5,ldt$l_jtucb(r11) ;save jt ucb here too 000004C2 9656 ; set up template, blast it into the LDT for item list 000004C2 9657 movab ldt$l_acl(r11),gceaba ;acl buffer address 000004CB 9658 movab ldt$l_aclsiz(r11),gceala ;length of acl 000004D4 9659 movab gceacl,r9 ;point at template now 000004DB 9660 movab ldt$l_itmlst(r11),r8 000004E0 9661 pushr #^m ;don't let movc3 trash these 000004E2 9662 movc3 #gcetpl,(r9),(r8) ;copy filled-in template to our 000004E6 9663 ;itemlist in ldt 000004E6 9664 popr #^m 000004E8 9665 ;fib desc still in r10 000004E8 9666 movab ldt$l_fib(r11),r9 ;copy user fib ?01T 000004ED 9667 .if df,evax ?01T 000004ED 9668 movl @irp$l_qio_p1(r3),r8 ;get size user has ?01F 000004F1 9669 .iff ?01F 000004F1 9670 movl @p1(ap),r8 ?01F 000004F1 9671 .endc 000004F1 9672 cmpl r8,#64 000004F8 9673 bleq 59$ ;if ok branch 000004FA 9674 movl #64,r8 00000501 9675 59$: 00000501 9676 pushr #^m ;don't let movc3 trash these 00000503 9677 movc3 r8,(r10),(r9) ;copy user FIB 00000507 9678 popr #^m ?01T 00000509 9679 .iif df,msetrp,movl #16,mtp$trace(r5) 0000050E 9680 bicl #^xfff,fib$l_acctl(r9) ;no special open bits 00000516 9681 ;ensure fib has nothing special 00000516 9682 clrl fib$l_aclctx(r9) ;no acl context JTDRIVER ;skeleton driver implementing u 2-DEC-1994 10:13:13 AMAC V2.1-13-2671 Page 38 V01H Our FDT Filter Routines 2-DEC-1994 10:12:45 [EVERHART.JT]JTDRIVER_S2.MAR;120 00000519 9683 ; 00000519 9684 ; An open might look up a filename so copy user desc too. ?01T 00000519 9685 .if df,evax ?01T 00000519 9686 movl irp$l_qio_p2(r3),r8 ;get desc. pointer ?01F 0000051D 9687 .iff ?01F 0000051D 9688 movl p2(ap),r8 ;get desc pointer ?01F 0000051D 9689 .endc 0000051D 9690 beql 159$ ;if no p2 arg, skip save 0000051F 9691 movl (r8),ldt$l_fnd(r11) ;copy user desc. 00000524 9692 cmpw #255,ldt$l_fnd(r11) ;see if count to big 0000052B 9693 bgeq 259$ ;if geq all well 0000052D 9694 movw #255,ldt$l_fnd(r11) ;else chop off 00000534 9695 259$: movl 4(r8),r8 ;point at user data now 00000538 9696 beql 159$ 0000053A 9697 pushr #^m ;don't let movc3 trash these 0000053C 9698 movab ldt$l_fndd(r11),r1 ;our ldt data address 00000541 9699 movab ldt$l_fndd(r11),ldt$l_fnd+4(r11) ;fill in data addr 00000548 9700 movzbl ldt$l_fnd(r11),r0 ;count to move 0000054D 9701 beql 359$ 0000054F 9702 movc3 r0,(r8),(r1) ;copy filename string 00000553 9703 359$: 00000553 9704 popr #^m 00000555 9705 159$: 00000555 9706 ; Basically all set up now. Issue a $qio with an AST to point to the 00000555 9707 ; normal-knl-AST code and start waiting the mainline for ef #31 (the junk 00000555 9708 ; efn) and for the extra "iosb" area to get bumped. Block deletion of the 00000555 9709 ; process during this $qio by hand, counting this up and down per PROCESS. 00000555 9710 movl ldt$l_prcstr(r11),r1 ;get process data block 00000559 9711 00000573 9757 deviceunlock lockaddr=ucb$l_dlck(r5),newipl=#ipl$_astdel,preserve=YES X01/018 00000559 BLBC SMP$GL_FLAGS,30018$ X02/023 ?02T 00000560 EVAX_STQ R0, -(SP) X01/029 ?02T 00000563 MOVL ucb$l_dlck(r5),R0 X01/043 ?01T 00000567 JSB G^SMP$RELEASEL X02/048 ?02T 0000056D EVAX_LDQ R0, (SP)+ X01/052 00000570 30018$: X01/054 ?01T 00000570 MTPR #ipl$_astdel,S^#PR$_IPL 00000573 9758 00000573 9759 ; Before issuing our I/O, see if this is a bogus file id 00000573 9760 ; that we let by earlier and route it to the daemon if so, directly 00000573 9761 ; without reading the ACL. 00000573 9762 ; R5 should still be pointing at the JT unit here since we issue another 00000573 9763 ; $qio which handles getting it moved... ?01T 00000573 9764 .iif df,msetrp,movl #17,mtp$trace(r5) 00000578 9765 bitl #1024,ucb$l_ctlflgs(r5) ; checking for bogus FIDs? 00000586 9766 beqlw 103$ ; if eql no X01/001 00000581 bneq 30019$ X01/002 00000583 brw 103$ X01/003 00000586 30019$: ?01T 00000586 9767 .if df,evax ?01T 00000586 9768 movl irp$l_qio_p1(r3),r0 ;get P1 param ?01F 0000058A 9769 .iff ?01F 0000058A 9770 movl p1(ap),r0 ?01F 0000058A 9771 .endc 0000058F 9772 beqlw 103$ X01/001 0000058A bneq 30020$ X01/002 0000058C brw 103$ JTDRIVER ;skeleton driver implementing u 2-DEC-1994 10:13:13 AMAC V2.1-13-2671 Page 39 V01H Our FDT Filter Routines 2-DEC-1994 10:12:45 [EVERHART.JT]JTDRIVER_S2.MAR;120 X01/003 0000058F 30020$: 0000058F 9773 movl 4(r0),r0 ;point at user FIB 00000598 9774 beqlw 103$ ; skip if none there X01/001 00000593 bneq 30021$ X01/002 00000595 brw 103$ X01/003 00000598 30021$: 00000598 9775 ; fid = fileno, fileseq, rvn, filenohi 00000598 9776 ; if filenohi .gt.128 and rvn .gt.128 as unsigned numbers then 00000598 9777 ; treat the operation here. 00000598 9778 ; Other h.o. bits are used to act as device switches here if this 00000598 9779 ; is selected. This requires of course that real volume sets 00000598 9780 ; be limited to maybe 32 volumes and that real maxfiles be less 00000598 9781 ; than the 24 bits' worth, for those volumes monitored here. Since 00000598 9782 ; this monitor is per disk, the function CAN just be disabled on large 00000598 9783 ; volume sets. 00000598 9784 bitb #128,fib$w_fid+4(r0) ;rvn bit set? 0000059D 9785 beql 105$ 0000059F 9786 bitb #128,fib$w_fid+5(r0) ;hi fileno set? 000005A4 9787 beql 105$ ;if so skip open funct. test 000005A6 9788 ; If here, we have a file id that appears fake and are flagging 000005A6 9789 ; such. Arrange to call the daemon in that case. 000005A6 9790 ; Note no LDT exists yet, so we'll do tests later, before issuing 000005A6 9791 ; our own i/o, to test this. 000005A6 9792 ; LDT pointer in R11 here. 000005A6 9793 movl r11,r0 000005A9 9794 movl r5,r1 000005AC 9795 popr #^m 000005B0 9796 movl r0,r11 000005B3 9797 movl r1,r0 000005B6 9798 popl r1 000005B9 9799 popl r1 ;leave r0 alone 000005BC 9800 ; now stack is clean except of push 000005BC 9801 popl r5 ;get original r5 back 000005BF 9802 tstl (sp)+ ;& remove saved r0 000005C1 9803 ; Now replace regs on stack, but we do leave R11 pointing at LDT. 000005C1 9804 ; Since R11 is scratch for FDT routines, this is ok. Other 000005C1 9805 ; stacked regs in r2-r10 range get left alone but we 000005C1 9806 ; continue with r5 = JT UCB (stacked r5=victim ucb). 000005C1 9807 pushr #^m 000005C5 9808 movl r0,r5 ;set r5 to jt ucb 000005C8 9809 pushr #^m ;now stack is same as 000005CA 9810 ;after push of r0-r11 000005CA 9811 ; Note fake FID handling not defined yet. ?01T 000005CA 9812 .iif df,msetrp,movl #1017,mtp$trace(r5) 000005D3 9813 brw afakfid ;go handle fake fids 000005D6 9814 105$: 000005D6 9815 103$: 000005D6 9816 ; (r1) = count up/down our knl threads 000005D6 9817 ; 4(r1) = disable delete counter ?01T 000005D6 9818 .iif df,msetrp,movl #18,mtp$trace(r5) 000005DB 9819 tstl 4(r1) ;is del inhibited now? 000005DE 9820 bgtr 61$ 000005E0 9821 incl (r1) ;count knl thread up here. 000005E2 9822 bitl #,pcb$l_sts(r4) ;is delete inhibited now? 000005EB 9823 bneq 160$ ;if so leave it alone 000005ED 9824 61$: incl 4(r1) ;bump inhibit counter once more 000005F0 9825 bisl #,pcb$l_sts(r4) ;inhib del JTDRIVER ;skeleton driver implementing u 2-DEC-1994 10:13:13 AMAC V2.1-13-2671 Page 40 V01H Our FDT Filter Routines 2-DEC-1994 10:12:45 [EVERHART.JT]JTDRIVER_S2.MAR;120 000005F9 9826 160$: 000005F9 9827 movl ldt$l_synch(r11),r10 ;point r10 at the synch block 000005FD 9828 ; the $qio will return with all regs except r0,r1 000005FD 9829 ; First have to get the channel number from the CCB address which was passed 000005FD 9830 ; in R6 so we can use the channel for OUR $qio. 000005FD 9831 ; 000005FD 9832 ; This is system dependent. ?01T 000005FD 9833 .if df,evax ;evax defined for alpha ?01T 000005FD 9834 movl r6,r12 ;deduced from sysqioreq src ?01T 00000600 9835 subl2 g^ctl$ga_ccb_table,r12 ;subtract base address ?01T 00000607 9836 ashl #-5,r12,r12 ;divide by ccb$k_length = 32 ?01T 0000060C 9837 ; assume ccb$k_length eq 32 ?01T 0000060C 9838 incl r12 ;1-based ?01T 0000060E 9839 pushl r13 ?01T 00000610 9840 bicl3 #^c<^x0000f000>,r12,r13 ;r13 -> hi 4 bits ?01T 00000618 9841 bicl2 #^xf000,r12 ;get low 12 bits masked off ?01T 0000061F 9842 ashl #4,r12,r12 ;shift 12 up ?01T 00000623 9843 ashl #-12,r13,r0 ;shift the 4 down ?01T 00000628 9844 bisl r0,r12 ;merge ?01T 0000062B 9845 movzwl r12,r12 ;ensure h.o. bits off ?01T 0000062E 9846 popl r13 ;restore borrowed reg ?01T 00000631 9847 ; r12 is now channel ?01T 00000631 9848 movl r12,r8 ?01F 00000634 9849 .iff ;vax vers ?01F 00000634 9850 movl r6,r8 ?01F 00000634 9851 subl2 g^ctl$gl_ccbbase,r8 ;form -chnl ?01F 00000634 9852 mnegl r8,r8 ?01F 00000634 9853 movzwl r8,r8 ;r12 should be channel now ?01F 00000634 9854 .endc 00000634 9855 ; now issue the $qio 00000634 9856 ; form descriptor for fib on stack 00000634 9857 pushl r11 ;be VERY sure we keep valid ldt ptr ?01F 00000636 9858 .if df,evaxrr ?01F 00000636 9859 movl sp,r12 ;save sp in r12 ?01F 00000636 9860 ; now force sp to be octa-aligned ?01F 00000636 9861 bicl #15,sp ;just clear low bits ?01F 00000636 9862 .endc 00000636 9863 subl #16,sp ;get 4 longs 00000639 9864 movl sp,r10 ;descriptor is len, addr 0000063C 9865 movl #64,(r10) 00000643 9866 movab ldt$l_fib(r11),4(r10) ;(r10) is descriptor of fib now. 00000649 9867 movl #gcetpl,8(r10) ;length of itemlist 0000064D 9868 movab ldt$l_itmlst(r11),12(r10) ;now have descriptor for itmlst ?01T 00000653 9869 .if df,evax ?02F 00000653 9870 .if df,drctcl ?02F 00000653 9871 subl2 #40,sp ?02F 00000653 9872 evax_stq r12,(sp) ?02F 00000653 9873 evax_stq r13,8(sp) ?02F 00000653 9874 evax_stq r14,16(sp) ?02F 00000653 9875 evax_stq r15,24(sp) ?02F 00000653 9876 evax_rd_ps ?02F 00000653 9877 evax_or r0,r31,r15 ;store old ps ?02F 00000653 9878 evax_stq r15,32(sp) ; save old ps on stack. Safer. ?02F 00000653 9879 ;clear low 2 bits of r0 (previous mode) ?02F 00000653 9880 bicl #3,r0 ;prev mode MUST be kernel next. ?02F 00000653 9881 evax_or r0,r31,r16 ;set r16 prev-mode bits to zero ?02F 00000653 9882 evax_wr_ps_sw ;set prev mode to kernel JTDRIVER ;skeleton driver implementing u 2-DEC-1994 10:13:13 AMAC V2.1-13-2671 Page 41 V01H Our FDT Filter Routines 2-DEC-1994 10:12:45 [EVERHART.JT]JTDRIVER_S2.MAR;120 ?02F 00000653 9883 .endc ?01T 00000653 9884 .endc 00000653 9885 ;begin the $qio here 00000653 9886 clrl -(sp) ;p6 00000655 9887 movl 12(r10),-(sp) ;p5 00000659 9888 clrl -(sp) ;p4 0000065B 9889 clrl -(sp) ;p3 0000065D 9890 ; Where user open involves a dir lookup, we might need one too. 0000065D 9891 ; Therefore supply the filename he used if we found one. 0000065D 9892 tstl ldt$l_fndd(r11) ;got a p2? 00000661 9893 bneq 459$ ;if so fill in 00000663 9894 clrl -(sp) ;p2 zero if none here 00000665 9895 brb 559$ 00000667 9896 459$: pushab ldt$l_fnd(r11) ;p2 as our copy of user p2 in knl space 0000066B 9897 559$: 0000066B 9898 movab (r10),-(sp) ;p1 0000066E 9899 movl r11,-(sp) ;ast parm = LDT address 00000671 9900 movab vcstp15,-(sp) ;ast address = vcstp15 (step 1.5 of thread) 00000678 9901 ; movl ldt$l_synch(r11),-(sp) ;iosb = synch + 8 00000678 9902 ; addl2 #8,(sp) ;this gives us a way to getthe status for debug 00000678 9903 ; tstl (sp) ;ensure negative 00000678 9904 ; blss 659$ 00000678 9905 ; clrl (sp) ;if synch addr illegal use 0 00000678 9906 ;659$: 00000678 9907 clrl -(sp) ;no iosb 0000067A 9908 movl #io$_access,-(sp) ;function 0000067D 9909 movl r8,-(sp) ;channel number 00000680 9910 movl #31,-(sp) ;junk event flag 00000683 9911 movl g^ctl$gl_pcb,r4 ;point at our PCB just in case ?01T 0000068A 9912 .if df,msetrp ?01T 0000068A 9913 pushl r10 ?01T 0000068C 9914 movl ldt$l_jtucb(r11),r10 ;get jt ucb ?01T 00000690 9915 movl r8,mtp$chan(r10) ?01T 00000695 9916 movl #18,mtp$trace(r10) ?01T 0000069A 9917 popl r10 ?01T 0000069D 9918 .endc ?01T 0000069D 9919 .if df,evax ?01T 0000069D 9920 ; exe$qio expects to be entered at ipl 0. ?01T 000006A0 9921 setipl ipl=#0,environ=UNIPROCESSOR X01/005 ?02T 0000069D MTPR #0,S^#PR$_IPL ?01T 000006A0 9922 ; call exe$qio without extra chmk dispatch (which might mess stack up) 0000001D ?01T 000006A0 9923 qiooff = 29 ;index into dispatch table for sys$qio (determined by inspecting ?01T 000006A0 9924 ; code) ?01T 000006A0 9925 movl g^PMS$GL_KERNEL_DISPATCH_VECTOR,r0 ?01T 000006A7 9926 ; movab g^cmod$ar_kernel_dispatch_vector,r0 ;procedure desc ?01T 000006A7 9927 addl2 #<16*qiooff>,r0 ;form addr of qio prc desc ?01T 000006AE 9928 movl (r0),r0 ;load procedure descr addr into r0 ?02F 000006B1 9929 .if df,drctcl ?02F 000006B1 9930 .iif df,x$$$dt,jsb g^ini$brk ;**********************debug********** ?02F 000006B1 9931 calls #12,(r0) ?02F 000006B1 9932 .iif df,x$$$dt,jsb g^ini$brk ;**********************debug********** ?02T 000006B1 9933 .iff ?02T 000006B1 9934 calls #12,g^sys$qio ;do the i/o ?02T 000006B8 9935 .endc ;drctcl ?02F 000006B8 9936 .if df,drctcl ?02F 000006B8 9937 evax_ldq r16,32(sp) ;get original ps ?02F 000006B8 9938 evax_wr_ps_sw ;restore original prev. mode JTDRIVER ;skeleton driver implementing u 2-DEC-1994 10:13:13 AMAC V2.1-13-2671 Page 42 V01H Our FDT Filter Routines 2-DEC-1994 10:12:45 [EVERHART.JT]JTDRIVER_S2.MAR;120 ?02F 000006B8 9939 evax_ldq r13,8(sp) ?02F 000006B8 9940 evax_ldq r12,(sp) ?02F 000006B8 9941 evax_ldq r14,16(sp) ?02F 000006B8 9942 evax_ldq r15,24(sp) ?02F 000006B8 9943 addl2 #40,sp ?02F 000006B8 9944 .endc ?01F 000006B8 9945 .iff ?01F 000006B8 9946 ; force curr, prev mode to knl (=0) before issuing the request here. ?01F 000006B8 9947 movpsl -(sp) ;force prev knl mode too ?01F 000006B8 9948 bicl #,(sp) ?01F 000006B8 9949 insv #0,#psl$v_ipl,#psl$s_ipl,(sp) ;sys services like ipl 0 on vax ?01F 000006B8 9950 pushab 158$ ?01F 000006B8 9951 rei ;continues at 158$ with stack clear ?01F 000006B8 9952 158$: ?02F 000006B8 9953 .if ndf,ee$qq ?02F 000006B8 9954 calls #12,g^exe$qio ;do the i/o (kernel entry!!!) ?02F 000006B8 9955 .iff ?02F 000006B8 9956 calls #12,g^sys$qio ;do the i/o (kernel entry!!!) ?02F 000006B8 9957 .endc ?01F 000006B8 9958 .endc 000006BB 9959 setipl ipl=#2,environ=UNIPROCESSOR ;back to astdel X01/005 ?01T 000006B8 MTPR #2,S^#PR$_IPL 000006BB 9960 addl2 #16,sp ;clean the stack. ?01F 000006BE 9961 .if df,evaxrr ?01F 000006BE 9962 movl r12,sp ;get original pre-call sp back ?01F 000006BE 9963 .endc 000006BE 9964 popl r11 ?01T 000006C1 9965 .if df,msetrp ?01T 000006C1 9966 pushl r10 ?01T 000006C3 9967 movl ldt$l_jtucb(r11),r10 ;get jt ucb ?01T 000006C7 9968 movl r0,mtp$ior0(r10) ?01T 000006CC 9969 ?01T 000006CC 9970 movl #19,mtp$trace(r10) ?01T 000006D1 9971 popl r10 ?01T 000006D4 9972 .endc 000006D4 9973 ; r11 should still be the LDT address, R10 the synch block address. 000006D4 9974 ; blbc r0,500$ ;if the I/O failed, we lose. Try to just issue 000006D4 9975 blbs r0,3500$ 000006D7 9976 brw 500$ 000006DA 9977 3500$: 000006DA 9978 ;the user's i/o. ?01F 000006DA 9979 .if ndf,evax ?01F 000006DA 9980 movl ldt$l_psl(r11),-(sp) ;get to original I/O PSL ?01F 000006DA 9981 jsb 301$ ?01F 000006DA 9982 brb 302$ ?01F 000006DA 9983 301$: rei ?01F 000006DA 9984 302$: ?01F 000006DA 9985 .endc ?01F 000006DA 9986 .if df,evxrei ?01F 000006DA 9987 movl ldt$l_psl(r11),-(sp) ;get to original I/O PSL ?01F 000006DA 9988 clrl -(sp) ?01F 000006DA 9989 pushab 301$ ; get 4 byte addr ?01F 000006DA 9990 movl #-1,-(sp) ; now have pc,ps on stack as 8 bytes ?01F 000006DA 9991 evax_stq r7,-(sp) ?01F 000006DA 9992 evax_stq r6,-(sp) ?01F 000006DA 9993 evax_stq r5,-(sp) ?01F 000006DA 9994 evax_stq r4,-(sp) JTDRIVER ;skeleton driver implementing u 2-DEC-1994 10:13:13 AMAC V2.1-13-2671 Page 43 V01H Our FDT Filter Routines 2-DEC-1994 10:12:45 [EVERHART.JT]JTDRIVER_S2.MAR;120 ?01F 000006DA 9995 evax_stq r3,-(sp) ?01F 000006DA 9996 evax_stq r2,-(sp) ;ready for PAL call ?01F 000006DA 9997 evax_imb ?01F 000006DA 9998 evax_rei ?01F 000006DA 9999 addl2 #64,sp ;never execute but keep macro-32 happy ?01F 000006DA 10000 301$: ?01F 000006DA 10001 .endc ?01F 000006DA 10002 .if df,evxr64d ?01F 000006DA 10003 pushl r0 ?01F 000006DA 10004 pushl r1 ?01F 000006DA 10005 pushl ldt$l_psl(r11) ;get original psl ?01F 000006DA 10006 .iif df,x$$$dt, jsb g^ini$brk ;*************** debug ************ ?01F 000006DA 10007 calls #1,g^evxr64 ?01F 000006DA 10008 .iif df,x$$$dt, jsb g^ini$brk ;*************** debug ************ ?01F 000006DA 10009 popl r1 ?01F 000006DA 10010 popl r0 ?01F 000006DA 10011 .endc 000006DA 10012 ; if ldt got deallocated before here, could be disaster. 000006DA 10013 movl ldt$l_synch(r11),r10 ;status blk address 000006DE 10014 jsb dowait ;await done 000006E4 10015 movl r10,r0 ;r0 status from user's I/O here usually now 000006E7 10016 ; Now that dowait is done we can free the LDT with no fear of having it 000006E7 10017 ; deallocated out from under dowait. 000006EA 10018 setipl ipl=#2,environ=UNIPROCESSOR X01/005 ?01T 000006E7 MTPR #2,S^#PR$_IPL 000006EA 10019 pushl r0 000006EC 10020 ; 000006EC 10021 ; Now we can deallocate either the whole LDT or the part below the 000006EC 10022 ; ACE. 000006EC 10023 ; Rather than fiddle, leave the whole ACE buffer there, chopping 000006EC 10024 ; off after it. 000006EC 10025 ; LDT is pointed at by R11 here. 000006EC 10026 ; Note we have our regs back because fdtlop etc. saves all in its 000006EC 10027 ; entry mask. Thus the regs are original qio regs. For findldt we 000006EC 10028 ; need r5=JT unit UCB though, so get that. 000006EC 10029 movl ldt$l_regs+12(r11),r5 ;original ucb 000006F1 10030 jsb getjtucb ;find JT UCB again 000006F5 10031 tstl r0 ;lose if we cannot 000006F7 10032 beql 85$ ; 000006F9 10033 movl r0,r5 ;now r5=JT ucb ?01T 000006FC 10034 .iif df,msetrp, movl #1433,mtp$trace(r5) 00000705 10035 cmpl ldt$l_ace+8(r11),acllit ;this our ACE? 0000070D 10036 beql 80$ ;if eql we must keep the ace till close 0000070F 10037 ; clean all out 0000070F 10038 jsb findldt ;find where this LDT is 00000715 10039 ; On return r1 is previous LDT (which we need) and r0 is 00000715 10040 ; LDT address (must be same as R11). 00000715 10041 cmpl r0,r11 00000718 10042 bneq 85$ ;if we get bad LDT, don't mess 0000071A 10043 ; r1 is prev LDT, r11 is this one. 0000071A 10044 movl ldt$l_fwd(r11),ldt$l_fwd(r1) ;collapse this LDT out of chain 0000071F 10045 ;now deallocate this LDT & go 0000071F 10046 movl ldt$l_fresiz(r11),r1 ;length to free 00000723 10047 movl r11,r0 ;addr to free 00000726 10048 ; first get the FDT context area address. Will be in R1 when we pop 00000726 10049 ; the following registers. 00000726 10050 movl ldt$l_fdtctx(r11),r9 ;get fdt context area JTDRIVER ;skeleton driver implementing u 2-DEC-1994 10:13:13 AMAC V2.1-13-2671 Page 44 V01H Our FDT Filter Routines 2-DEC-1994 10:12:45 [EVERHART.JT]JTDRIVER_S2.MAR;120 0000072B 10051 jsb g^exe$deanonpgdsiz ;free it 00000731 10052 brw 85$ 00000734 10053 80$: 00000734 10054 ; shorten by reallocate/copy/delete 00000734 10055 jsb findldt 0000073A 10056 cmpl r0,r11 0000073D 10057 bneq 85$ ;if we get bad LDT, don't mess 0000073F 10058 movl r1,r10 ;move prev-ldt addr to r10...keep from harm 00000742 10059 movl #ldt$l_regs,r1 ;length to allocate 00000749 10060 jsb g^exe$alonpagvar 0000074F 10061 blbc r0,85$ ;leave LDT alone if we can't grab less 00000752 10062 movl r2,r9 ;new addr save 00000755 10063 movc3 #ldt$l_regs,(r11),(r9) ;copy 1st part of LDT 0000075B 10064 ; now free the old LDT after we move linkage. 0000075B 10065 movl #ldt$l_regs,ldt$l_fresiz(r9) ;set size as less 00000763 10066 movl r9,ldt$l_fwd(r10) ;point prev. LDT at this. 00000767 10067 movl ldt$l_fresiz(r11),r1 0000076B 10068 movl r11,r0 ;dealloc old ldt 0000076E 10069 ; first get the FDT context area address. Will be in R1 when we pop 0000076E 10070 ; the following registers. 0000076E 10071 movl ldt$l_fdtctx(r11),r9 ;get fdt context area 00000773 10072 jsb g^exe$deanonpgdsiz ;free it 00000779 10073 ; now old LDT should be free so we're done. 00000779 10074 85$: 00000779 10075 popl r0 0000077C 10076 ; get all the saved regs off the stack 0000077C 10077 ; return r1 as fdt context address we saved in r9 above ?01F 0000077C 10078 .if df,vxrgo ?01F 0000077C 10079 movl r9,44(sp) ;final pop of r1 gets it ?01T 0000077C 10080 .iff ?01T 0000077C 10081 movl r9,r12 ; use an axp reg ?01T 0000077F 10082 .endc 0000077F 10083 ; this way the caller's R9 is unaltered due to the pop 0000077F 10084 popr #^m 00000783 10085 popl r1 00000786 10086 popl r1 ;leave r0 alone but clean stack ?01T 00000789 10087 .iif ndf,vxrgo, movl r12,r1 ;get fdt ctx area to r1 0000078C 10088 brw 510$ 0000078F 10089 0000078F 10090 ; here at 500$ if I/O failed!!! 0000078F 10091 500$: 0000078F 10092 movl r11,r0 ;save LDT pointer in r0 00000792 10093 ; (need LDT at stp2bad) 00000792 10094 popr #^m 00000796 10095 popl r1 00000799 10096 popl r1 ;leave r0 alone 0000079C 10097 ;stp2bad preserves all regs via save/restore. 0000079C 10098 ; first get the FDT context area address. Will be in R1 when we pop 0000079C 10099 ; the following registers. 0000079C 10100 movl ldt$l_fdtctx(r0),r1 ;get fdt context area 000007A1 10101 movl r0,r11 000007A4 10102 pushl r11 000007A6 10103 bsbw stp2bad ;go try & resume i/o 000007AC 10104 setipl ipl=#2,environ=UNIPROCESSOR X01/005 ?01T 000007A9 MTPR #2,S^#PR$_IPL 000007AC 10105 ; R11 can be scratched in fdt code since it gets restored on exit from 000007AC 10106 ; the system service. JTDRIVER ;skeleton driver implementing u 2-DEC-1994 10:13:13 AMAC V2.1-13-2671 Page 45 V01H Our FDT Filter Routines 2-DEC-1994 10:12:45 [EVERHART.JT]JTDRIVER_S2.MAR;120 000007AC 10107 popl r11 000007AF 10108 movl #ss$_accvio,r0 ;set generic error 000007B2 10109 ; 000007B2 10110 ; free the ldt now to keep it clean. 000007B2 10111 pushr #^m 000007B6 10112 ; Now we can deallocate either the whole LDT or the part below the 000007B6 10113 ; ACE. 000007B6 10114 ; Rather than fiddle, leave the whole ACE buffer there, chopping 000007B6 10115 ; off after it. 000007B6 10116 ; LDT is pointed at by R11 here. 000007B6 10117 ; Note we have our regs back because fdtlop etc. saves all in its 000007B6 10118 ; entry mask. Thus the regs are original qio regs. For findldt we 000007B6 10119 ; need r5=JT unit UCB though, so get that. 000007B6 10120 movl ldt$l_regs+12(r11),r5 ;original ucb 000007BB 10121 jsb getjtucb ;find JT UCB again 000007BF 10122 tstl r0 ;lose if we cannot 000007C1 10123 beql 3085$ ; 000007C3 10124 movl r0,r5 ;now r5=JT ucb 000007C6 10125 cmpl ldt$l_ace+8(r11),acllit ;this our ACE? 000007CE 10126 beql 3080$ ;if eql we must keep the ace till close 000007D0 10127 ; clean all out 000007D0 10128 jsb findldt ;find where this LDT is 000007D6 10129 ; On return r1 is previous LDT (which we need) and r0 is 000007D6 10130 ; LDT address (must be same as R11). 000007D6 10131 cmpl r0,r11 000007D9 10132 bneq 3085$ ;if we get bad LDT, don't mess 000007DB 10133 ; r1 is prev LDT, r11 is this one. 000007DB 10134 movl ldt$l_fwd(r11),ldt$l_fwd(r1) ;collapse this LDT out of chain 000007E0 10135 ;now deallocate this LDT & go 000007E0 10136 movl ldt$l_fresiz(r11),r1 ;length to free 000007E4 10137 movl r11,r0 ;addr to free 000007E7 10138 jsb g^exe$deanonpgdsiz ;free it 000007ED 10139 brw 3085$ 000007F0 10140 3080$: 000007F0 10141 ; shorten by reallocate/copy/delete 000007F0 10142 jsb findldt 000007F6 10143 cmpl r0,r11 000007F9 10144 bneq 3085$ ;if we get bad LDT, don't mess 000007FB 10145 movl r1,r10 ;move prev-ldt addr to r10...keep from harm 000007FE 10146 movl #ldt$l_regs,r1 ;length to allocate 00000805 10147 jsb g^exe$alonpagvar 0000080B 10148 blbc r0,3085$ ;leave LDT alone if we can't grab less 0000080E 10149 movl r2,r9 ;new addr save 00000811 10150 movc3 #ldt$l_regs,(r11),(r9) ;copy 1st part of LDT 00000817 10151 ; now free the old LDT after we move linkage. 00000817 10152 movl #ldt$l_regs,ldt$l_fresiz(r9) ;set size as less 0000081F 10153 movl r9,ldt$l_fwd(r10) ;point prev. LDT at this. 00000823 10154 movl ldt$l_fresiz(r11),r1 00000827 10155 movl r11,r0 ;dealloc old ldt 0000082A 10156 jsb g^exe$deanonpgdsiz ;free it 00000830 10157 ; now old LDT should be free so we're done. 00000830 10158 3085$: 00000830 10159 popr #^m 00000834 10160 510$: 00000834 10161 pushl r1 00000836 10162 pushl r0 ;ensure waits run 00000838 10163 movl #31,-(sp) ;junk event flag JTDRIVER ;skeleton driver implementing u 2-DEC-1994 10:13:13 AMAC V2.1-13-2671 Page 46 V01H Our FDT Filter Routines 2-DEC-1994 10:12:45 [EVERHART.JT]JTDRIVER_S2.MAR;120 0000083B 10164 calls #1,g^sys$setef 00000842 10165 popl r0 ;get status back 00000845 10166 popl r1 00000848 10167 ; Must now flush the pushr of off stack. 00000848 10168 popl r5 ;get saved r5 = ucb pointer 0000084B 10169 tstl (sp)+ ;fix stack, leave r0 alone 0000084D 10170 ; For step2 we must store r0 in fdt_context structure, which is 0000084D 10171 ; located by IRP$PS_FDT_CONTEXT in the IRP for the original user 0000084D 10172 ; IRP; this returns the intermediate return status to the user. 0000084D 10173 ; Return dd$_fdt_compl in r0 at this point in step2, and real status 0000084D 10174 ; in the fdt_context area at FDT_CONTEXT$L_QIO_STATUS and 0000084D 10175 ; perhaps FDT_CONTEXT$L_QIO_R1_VALUE as needed. 0000084D 10176 ; This needs to be gathered from the user's I/O appropriately too. 0000084D 10177 ; Note that the LDT has the cell ldt$l_fdtctx which is the address 0000084D 10178 ; of the user's FDT context area. That should be used since the IRP 0000084D 10179 ; is invalid by the time we get here. Our pointer is not. 0000084D 10180 0000084D 10181 ; !!!! note that the LDT is now deallocated. Must get fdt context 0000084D 10182 ; before this... 0000084D 10183 0000084D 10184 ;;;; movl ldt$l_fdtctx(r11),r1 ;get fdt context area ?01T 0000084D 10185 .iif df,x$$$dt,jsb g^ini$brk ;*******************debug***** 00000853 10186 ; here see if r1 is fdt context area!! 00000853 10187 movl r0,fdt_context$l_qio_status(r1) ;save status 00000857 10188 movl #ss$_fdt_compl,r0 ;normal fdt donesignal 0000085E 10189 clrl irp$ps_fdt_context(r3) ;clear fdt context 00000865 10190 setipl ipl=#0,environ=UNIPROCESSOR X01/005 ?01T 00000862 MTPR #0,S^#PR$_IPL 00000865 10191 ret 00000866 10192 ; jmp g^exe$qioreturn ;do intermediate exit. 00000866 10193 00000866 10194 2000$: 00000880 10195 deviceunlock lockaddr=ucb$l_dlck(r5),newipl=#ipl$_astdel,preserve=YES X01/018 00000866 BLBC SMP$GL_FLAGS,30022$ X02/023 ?02T 0000086D EVAX_STQ R0, -(SP) X01/029 ?02T 00000870 MOVL ucb$l_dlck(r5),R0 X01/043 ?01T 00000874 JSB G^SMP$RELEASEL X02/048 ?02T 0000087A EVAX_LDQ R0, (SP)+ X01/052 0000087D 30022$: X01/054 ?01T 0000087D MTPR #ipl$_astdel,S^#PR$_IPL 00000880 10196 popr #^m 00000884 10197 popl r1 00000887 10198 popl r0 0000088A 10199 popr #^m 0000088C 10200 bsbw popout 0000088F 10201 ret 00000890 10202 ; brw popout ;leave 00000890 10203 ; handling for fake FIDs, not yet implemented so just return. 00000890 10204 afakfid: 00000890 10205 popr #^m 00000894 10206 bsbw popout 00000897 10207 ret 00000898 10208 00000898 10209 ; clnprv 00000898 10210 clnprv: .jsb_entry 00000898 10211 pushr #^m 0000089C 10212 ;entry r5 is victim ucb addr JTDRIVER ;skeleton driver implementing u 2-DEC-1994 10:13:13 AMAC V2.1-13-2671 Page 47 V01H Our FDT Filter Routines 2-DEC-1994 10:12:45 [EVERHART.JT]JTDRIVER_S2.MAR;120 0000089C 10213 jsb getjtucb ;get jt ucb 000008A0 10214 tstl r0 000008A2 10215 bgeq 99$ 000008A4 10216 movl r0,r5 ;r5 now is jt ucb 000008A7 10217 movl r0,r10 ;set for clnup 000008AA 10218 jsb clnup 000008B0 10219 movl r5,r0 000008B3 10220 movl r10,r1 000008B6 10221 99$: 000008B6 10222 popr #^m 000008BA 10223 rsb; 000008BB 10224 ; prvidset 000008BB 10225 ; This entry reads the ACE and sets privs/idents/base prio of 000008BB 10226 ; the process based on what the ACE has. 000008BB 10227 ; On entry R11 contains the LDT pointer. 000008BB 10228 prvidset: .jsb_entry 000008BB 10229 pushr #^m 000008BF 10230 movab ldt$l_ace(r11),r10 ;point at our ACE 000008C3 10231 ; look for priv sets 000008C3 10232 cmpl ldt$l_ace+8(r11),acllit ;this our ACE? 000008D0 10233 bneqw 999$ X01/001 000008CB beql 30023$ X01/002 000008CD brw 999$ X01/003 000008D0 30023$: 000008D0 10234 movab 12(r10),r10 ;start of data 000008D4 10235 1$: movzbl (r10)+,r9 ;get fcn byte 000008DC 10236 beqlw 999$ X01/001 000008D7 bneq 30024$ X01/002 000008D9 brw 999$ X01/003 000008DC 30024$: 000008DC 10237 cmpb r9,#1 ;inspectme => not here 000008DF 10238 beql 1$ 000008E1 10239 cmpb r9,#2 ;moveme 000008E4 10240 beql 1$ 000008E6 10241 cmpb r9,#3 ;base prio set? 000008E9 10242 bneq 2$ ;if not look more 000008EB 10243 ; set base prio if ok 000008EB 10244 cvtbl (r10)+,r8 ;prio to use to r8 000008EE 10245 movl (r10)+,r7 ;one long of sec.info 000008F1 10246 movl ldt$l_myfid(r11),r2 ;file id 000008F6 10247 movl ldt$l_myfid+4(r11),r3 ;hi fileid 000008FB 10248 clrl r1 000008FD 10249 movl r8,r0 00000900 10250 jsb auth ;compute auth key 00000906 10251 cmpl r0,r7 ;check against ace 00000909 10252 bneq 1$ ;if no good look more 0000090B 10253 ; ok...set base prio 0000090B 10254 movl g^ctl$gl_pcb,r4 ?01T 00000912 10255 .if df,evax ?01T 00000912 10256 movl r8,pcb$l_prib(r4) ;set base prio (axp) ?01F 00000916 10257 .iff ?01F 00000916 10258 movb r8,pcb$b_prib(r4) ;set base prio (axp) ?01F 00000916 10259 .endc 00000916 10260 brw 1$ 00000919 10261 2$: 00000919 10262 cmpb r9,#4 ;priv set? 0000091C 10263 bneq 3$ ;if neq look more JTDRIVER ;skeleton driver implementing u 2-DEC-1994 10:13:13 AMAC V2.1-13-2671 Page 48 V01H Our FDT Filter Routines 2-DEC-1994 10:12:45 [EVERHART.JT]JTDRIVER_S2.MAR;120 0000091E 10264 movl (r10)+,r0 ;sec info 00000921 10265 movl r0,r7 00000924 10266 movl (r10)+,r1 ;sec info 00000927 10267 movl r0,r8 0000092A 10268 movl ldt$l_myfid(r11),r2 ;file id 0000092F 10269 movl ldt$l_myfid+4(r11),r3 ;hi fileid 00000934 10270 jsb auth 0000093A 10271 movl (r10)+,r2 ;get info from ace 0000093D 10272 movl (r10)+,r3 00000940 10273 cmpl r0,r2 ;check auth info 00000943 10274 bneq 3$ 00000945 10275 cmpl r1,r3 00000948 10276 bneq 3$ 0000094A 10277 ; set privs to mask. 0000094A 10278 movl g^ctl$gl_pcb,r4 00000951 10279 movl r7,pcb$q_priv(r4) 00000956 10280 movl r8,pcb$q_priv+4(r4) 0000095B 10281 movl r7,g^ctl$gq_procpriv 00000962 10282 movl r8,g^ctl$gq_procpriv+4 00000969 10283 movl g^ctl$gl_phd,r4 00000970 10284 movl r7,phd$q_authpriv(r4) 00000975 10285 movl r8,phd$q_authpriv+4(r4) 0000097A 10286 movl r7,phd$q_privmsk(r4) 0000097E 10287 movl r8,phd$q_privmsk+4(r4) 00000982 10288 brw 1$ 00000985 10289 3$: cmpb r9,#5 ;ident set? 00000988 10290 bneq 4$ 0000098A 10291 movl (r10)+,r0 ;sec info (identifier hi) 0000098D 10292 movl r0,r7 00000990 10293 movl (r10)+,r1 ;sec info (identifier lo) 00000993 10294 movl r0,r8 00000996 10295 movl ldt$l_myfid(r11),r2 ;file id 0000099B 10296 movl ldt$l_myfid+4(r11),r3 ;hi fileid 000009A0 10297 jsb auth 000009A6 10298 movl (r10)+,r2 ;get info from ace 000009A9 10299 movl (r10)+,r3 000009AC 10300 cmpl r0,r2 ;check auth info 000009AF 10301 bneq 34$ 000009B1 10302 cmpl r1,r3 000009B4 10303 bneq 34$ 000009B6 10304 ; grant identifier in r7,r8 to curr. process. 000009B6 10305 clrq -(sp) ;clear privatr & procname cells 000009B8 10306 movab -16(r10),-(sp) ;addr of identifier info 000009BC 10307 clrq -(sp) ;null pid & prcname 000009BE 10308 calls #5,grantid ;use internal code (from vms) 000009C5 10309 brw 1$ 000009C8 10310 34$: clrq -8(r10) ;zero the identifier if it didn't 1 %AMAC-I-QUADMEMREF, (1) quadword memory references may be unaligned in routine PRVIDSET 000009CB 10311 ;authenticate, so we don't revoke it 000009CB 10312 ;later 000009CB 10313 brw 1$ 000009CE 10314 4$: cmpb r9,#6 ;softlink record? 000009D1 10315 bneq 5$ ;skip out if illegal value 000009D3 10316 movzbl (r10),r9 ;get length of data 000009D6 10317 addl2 r9,r10 ;add to pointer JTDRIVER ;skeleton driver implementing u 2-DEC-1994 10:13:13 AMAC V2.1-13-2671 Page 49 V01H Our FDT Filter Routines 2-DEC-1994 10:12:45 [EVERHART.JT]JTDRIVER_S2.MAR;120 000009D9 10318 brw 1$ 000009DC 10319 5$: cmpb r9,#7 ;temp tag? 000009E4 10320 bneqw 999$ ;if ill value scram X01/001 000009DF beql 30025$ X01/002 000009E1 brw 999$ X01/003 000009E4 30025$: 000009E4 10321 movzbl (r10),r9 ;get length 000009E7 10322 addl2 r9,r10 000009EA 10323 brw 1$ 000009ED 10324 999$: 000009ED 10325 popr #^m 000009F1 10326 rsb 000009F2 10327 ; auth - 000009F2 10328 ; call: r0,r1 = security info 000009F2 10329 ; r2,r3 = file ID 000009F2 10330 ; ucb$l_keycry key; ucb ptr in r5 000009F2 10331 ; output in r0,r1 = auth string 000009F2 10332 auth: .jsb_entry output= 000009F2 10333 ; simple minded scrambler 000009F2 10334 ; However not TOO simple minded. Don't want this to introduce a 000009F2 10335 ; new security hole so do xors and some funny checksum adds 000009F2 10336 xorl2 r3,r0 000009F5 10337 xorl2 r2,r1 000009F8 10338 xorl2 ucb$l_keycry(r5),r0 000009FD 10339 xorl2 ucb$l_keycry+4(r5),r1 ;bunch of xors to scramble 00000A02 10340 ; now xor once more with a constant 00000A02 10341 xorl2 #^x5218fba2,r0 00000A09 10342 xorl2 #^xaba7126c,r1 00000A10 10343 pushl r0 00000A12 10344 pushl r1 00000A14 10345 ashl #3,r0,r0 00000A18 10346 addl2 r0,r1 00000A1B 10347 addl2 r2,r1 00000A1E 10348 ; (sp) is old r1 00000A1E 10349 ;4(sp) is old r0 00000A1E 10350 addl2 r1,4(sp) 00000A22 10351 movzwl ucb$l_keycry+5(r5),r1 1....... %AMAC-I-MEMREFNOT, (1) memory reference not naturally aligned in routine AUTH 00000A27 10352 addl2 r1,4(sp) 00000A2B 10353 movl (sp),r1 ;get old r1 00000A2E 10354 ashl #5,r1,r1 00000A32 10355 addl2 r3,r1 00000A35 10356 addl2 r1,(sp) ;mix up r1 00000A38 10357 movzwl ucb$l_keycry+1(r5),r1 1....... %AMAC-I-MEMREFNOT, (1) memory reference not naturally aligned in routine AUTH 00000A3D 10358 addl2 r1,(sp) 00000A40 10359 ;for weirdness use a couple ffs's 00000A40 10360 ffs #0,#32,(sp),r1 00000A45 10361 addl2 r1,4(sp) 00000A49 10362 ffs #0,#32,4(sp),r1 00000A4F 10363 addl2 r1,(sp) 00000A52 10364 popl r1 00000A55 10365 popl r0 JTDRIVER ;skeleton driver implementing u 2-DEC-1994 10:13:13 AMAC V2.1-13-2671 Page 50 V01H Our FDT Filter Routines 2-DEC-1994 10:12:45 [EVERHART.JT]JTDRIVER_S2.MAR;120 00000A58 10366 rsb 00000A59 10367 ; 00000A59 10368 ; setsoftl - 00000A59 10369 ; Called with R11 = LDT, r5=orig channel UCB, r6=CCB 00000A59 10370 ; If softlink needed, should set ccb$l_ucb to desired UCB 00000A59 10371 ; or else let it alone. 00000A59 10372 setsoftl: .jsb_entry 00000A59 10373 pushr #^m 00000A5D 10374 cmpl ldt$l_ace+8(r11),acllit ;this our ACE? 00000A6A 10375 bneqw 999$ X01/001 00000A65 beql 30026$ X01/002 00000A67 brw 999$ X01/003 00000A6A 30026$: 00000A6A 10376 movab ldt$l_ace(r11),r10 ;point at the ACE now 00000A6E 10377 movab 12(r10),r10 ;start of data 00000A72 10378 1$: movzbl (r10)+,r9 ;get fcn byte 00000A7A 10379 beqlw 999$ X01/001 00000A75 bneq 30027$ X01/002 00000A77 brw 999$ X01/003 00000A7A 30027$: 00000A7A 10380 cmpb r9,#1 ;inspectme => not here 00000A7D 10381 beql 1$ 00000A7F 10382 cmpb r9,#2 ;moveme 00000A82 10383 beql 1$ 00000A84 10384 cmpb r9,#3 ;base prio set? 00000A87 10385 bneq 2$ ;if not look more 00000A89 10386 ; set base prio if ok 00000A89 10387 cvtbl (r10)+,r8 ;prio to use to r8 00000A8C 10388 movl (r10)+,r7 ;one long of sec.info 00000A8F 10389 brw 1$ 00000A92 10390 2$: 00000A92 10391 cmpb r9,#4 ;priv set? 00000A95 10392 bneq 3$ ;if neq look more 00000A97 10393 movl (r10)+,r0 ;sec info 00000A9A 10394 movl (r10)+,r1 ;sec info 00000A9D 10395 movl (r10)+,r2 ;get info from ace 00000AA0 10396 movl (r10)+,r3 00000AA3 10397 brw 1$ 00000AA6 10398 3$: cmpb r9,#5 ;ident set? 00000AA9 10399 bneq 4$ 00000AAB 10400 movl (r10)+,r0 ;sec info 00000AAE 10401 movl (r10)+,r1 ;sec info 00000AB1 10402 movl (r10)+,r2 ;get info from ace 00000AB4 10403 movl (r10)+,r3 00000AB7 10404 brw 1$ 00000ABA 10405 4$: cmpb r9,#6 ;softlink record? 00000AC2 10406 bneqw 5$ ;skip out if illegal value X01/001 00000ABD beql 30028$ X01/002 00000ABF brw 5$ X01/003 00000AC2 30028$: 00000AC2 10407 movzbl (r10),r9 ;get length of data 00000AC5 10408 ; Softlink file. Find file & device and deal with it. 00000AC5 10409 ; Note: not looking at flags yet here. Just links files. 00000AC5 10410 ; (this is ok for a security tool. Directory links etc. not 00000AC5 10411 ; yet dealt with.) 00000AC5 10412 ; get file ID first 00000AC5 10413 movl r10,r8 ;point at data JTDRIVER ;skeleton driver implementing u 2-DEC-1994 10:13:13 AMAC V2.1-13-2671 Page 51 V01H Our FDT Filter Routines 2-DEC-1994 10:12:45 [EVERHART.JT]JTDRIVER_S2.MAR;120 00000AC8 10414 addl2 r9,r10 ;add to pointer used globally in this sub 00000ACB 10415 incl r8 ;pass length byte 00000ACD 10416 movl r8,r9 ;use r9 as a base reg later 00000AD0 10417 addl2 #<1+4+2>,r8 ;pass flags, file id 00000AD3 10418 ; check & act on flags 00000AD3 10419 tstb (r9) ;normal link (0)? 00000AD5 10420 beql 901$ 00000AD7 10421 cmpb #1,(r9) ;r/o link? 00000ADA 10422 bneq 901$ ;no. Presume dir. link must work normally. 00000ADC 10423 bitl #fib$m_write,ldt$l_accmd(r11) ;r/o open (write bit clr?) 00000AE4 10424 beql 901$ ;yes, do write link 00000AE6 10425 brw 1$ ;else don't do link. Daemon must coop too. 00000AE9 10426 901$: 00000AE9 10427 ; at r9, have 00000AE9 10428 ;next we get device name (counted ascii in ace) 00000AE9 10429 movl g^ctl$gl_pcb,r4 ;get curr. pcb for sure 00000AF0 10430 jsb g^sch$iolockw ;lock mutex 00000AF6 10431 ;build name descr. on stack 00000AF6 10432 subl2 #12,sp ;get space 00000AF9 10433 movl sp,r2 ;& pointer 00000AFC 10434 movzbw (r8)+,(r2) ;size of string 00000AFF 10435 movb #dsc$k_dtype_t,2(r2) 00000B03 10436 movb #1,3(r2) ;fixed string 00000B07 10437 movl r8,4(r2) ;data address 00000B0B 10438 movl r2,r1 ; string addr in r1 needed 00000B0E 10439 pushr #^m 00000B12 10440 jsb g^ioc$searchdev ;find device 00000B18 10441 popr #^m 00000B1C 10442 addl2 #12,sp ;put stack back 00000B1F 10443 blbc r0,7$ ;if can't find, skip it 00000B22 10444 ; Looks ok. Now reset ref counts on the UCBs and fix up 00000B22 10445 ; user FIB ref to new file and CCB UCB ref. 00000B22 10446 movl ccb$l_ucb(r6),r7 ;old ucb ?01T 00000B26 10447 .if df,evax ?01T 00000B26 10448 decl ucb$l_refc(r7) ;count his refs down ?01T 00000B29 10449 bgtr 10$ ?01T 00000B2B 10450 clrl ucb$l_refc(r7) ?01F 00000B2E 10451 .iff ?01F 00000B2E 10452 decw ucb$w_refc(r7) ;count his refs down ?01F 00000B2E 10453 bgtr 10$ ?01F 00000B2E 10454 clrw ucb$w_refc(r7) ?01F 00000B2E 10455 .endc 00000B2E 10456 10$: movl r1,ccb$l_ucb(r6) ;update user CCB ?01T 00000B32 10457 .if df,evax ?01T 00000B32 10458 incl ucb$l_refc(r1) ;& count 1 ref up there ?01F 00000B35 10459 .iff ?01F 00000B35 10460 incw ucb$w_refc(r1) ;& count 1 ref up there ?01F 00000B35 10461 .endc 00000B35 10462 movl ldt$l_regs+4(r11),r3 ;get user IRP 00000B3A 10463 movl r1,irp$l_ucb(r3) ;point that at this ucb 00000B3E 10464 ;update FIB pointer now. 00000B3E 10465 movl ldt$l_parm(r11),r8 ;get P1 = fib descr. 00000B43 10466 beql 7$ 00000B45 10467 movl 4(r8),r8 ;get fib addr to r8 here 00000B49 10468 beql 7$ JTDRIVER ;skeleton driver implementing u 2-DEC-1994 10:13:13 AMAC V2.1-13-2671 Page 52 V01H Our FDT Filter Routines 2-DEC-1994 10:12:45 [EVERHART.JT]JTDRIVER_S2.MAR;120 00000B4B 10469 movl 1(r9),fib$w_fid(r8) ;fill in file id 1....... %AMAC-I-MEMREFNOT, (1) memory reference not naturally aligned in routine SETSOFTL 00000B50 10470 movw 5(r9),fib$w_fid+4(r8) ;all 6 bytes 1....... %AMAC-I-MEMREFNOT, (1) memory reference not naturally aligned in routine SETSOFTL 00000B55 10471 clrw fib$w_did(r8) 00000B58 10472 clrl fib$w_did+2(r8) ;set no lookup on softlinks...we have a file id 00000B5B 10473 bicw #fib$m_findfid,fib$w_nmctl(r8) ;no fid or wild lookup 00000B61 10474 bicw #fib$m_wild,fib$w_nmctl(r8) 00000B67 10475 clrl fib$l_wcc(r8) ;no wild context 00000B6A 10476 7$: jsb g^sch$iounlock 00000B70 10477 brw 1$ 00000B73 10478 5$: cmpb r9,#7 ;temp tag? 00000B76 10479 bneq 999$ ;if ill value scram 00000B78 10480 movzbl (r10),r9 ;get length 00000B7B 10481 addl2 r9,r10 00000B7E 10482 brw 1$ 00000B81 10483 999$: 00000B81 10484 popr #^m 00000B85 10485 rsb 00000B86 10486 ; 00000B86 10487 ; movldt - 00000B86 10488 ; Called with R11 = LDT entry, ccb$l_ucb(r6) = new UCB, 00000B86 10489 ; ldt$chnucb = old UCB = r5. This routine should relink the 00000B86 10490 ; LDT from the old device to the new one. 00000B86 10491 movldt: .jsb_entry 00000B86 10492 pushr #^m 00000B8A 10493 ; first find pointer to the old LDT 00000B8A 10494 movl g^ctl$gl_pcb,r4 00000B91 10495 jsb findldt ;get existing LDT 00000B97 10496 tstl r0 00000B99 10497 beql 999$ 00000B9B 10498 movl r1,r10 ;old pointer in r10 now 00000B9E 10499 movl ldt$l_fwd(r11),ldt$l_fwd(r10) ;remove LDT from this chain 00000BA3 10500 ; now find new place for the LDT 00000BA3 10501 movl ccb$l_ucb(r6),r5 ;UCB we need to go to 00000BA7 10502 jsb findldt ;find where we can put ldt 00000BAD 10503 tstl r0 ;r0 better be 0 00000BAF 10504 beql 2$ 00000BB1 10505 movl ldt$l_fresiz(r11),r1 00000BB5 10506 movl r11,r0 00000BB8 10507 jsb g^exe$deanonpgdsiz 00000BBE 10508 brb 999$ 00000BC0 10509 2$: clrl ldt$l_fwd(r11) ;set no fwd from us 00000BC3 10510 movl r11,ldt$l_fwd(r1) ;point other chain at us 00000BC7 10511 999$: 00000BC7 10512 popr #^m 00000BCB 10513 rsb 00000BCC 10514 ; 00000BCC 10515 ; dowait. Enter with r10 = iosb block and r11 = ldt 00000BCC 10516 ; bashes r0 00000BCC 10517 ; 00000BCC 10518 dowait: .jsb_entry output= 00000BCF 10519 setipl ipl=#0,environ=UNIPROCESSOR JTDRIVER ;skeleton driver implementing u 2-DEC-1994 10:13:13 AMAC V2.1-13-2671 Page 53 V01H Our FDT Filter Routines 2-DEC-1994 10:12:45 [EVERHART.JT]JTDRIVER_S2.MAR;120 X01/005 ?01T 00000BCC MTPR #0,S^#PR$_IPL 00000BCF 10520 10$: tstl (r10) ;iosb nonzero already? 00000BD1 10521 bneq 90$ 00000BD3 10522 movl ldt$l_prcstr(r11),r0 ;point at process string 00000BD7 10523 beql 90$ ;invalid -> exit 00000BD9 10524 tstl (r0) ;knl threads all done? 00000BDB 10525 ; all knl threads done means finished 00000BDB 10526 beql 90$ ;if so scram. 00000BDD 10527 ;looks like we need to wait. Do so. 00000BDD 10528 movl #31,-(sp) ;wait for efn 31 00000BE0 10529 calls #1,g^sys$waitfr 00000BE7 10530 ; then clear it again 00000BE7 10531 movl #31,-(sp) 00000BEA 10532 calls #1,g^sys$clref 00000BF1 10533 brb 10$ ;then check again 00000BF3 10534 90$: movl r10,r0 ;save data address 00000BF6 10535 movl (r10),r10 ;get status finally, return in r10 00000BF9 10536 bneq 92$ ;if nonzero that's good 00000BFB 10537 movl #2,r10 ;else force nonzero but bogus 00000BFE 10538 92$: pushr #^m 00000C00 10539 ; deallocate the "iosb" block from pool now. 00000C00 10540 movl #16,r1 ;16 bytes 00000C03 10541 jsb g^exe$deanonpgdsiz 00000C09 10542 popr #^m 00000C0B 10543 ; done now. 00000C0B 10544 rsb 00000C0C 10545 ; fdt redo entries. 00000C0C 10546 ; Logic pretty much copied from sysqioreq.mar bit 00000C0C 10547 .entry fdtlop,^m 00000C0E 10548 10$: addl2 #12,r8 ;next mask 00000C11 10549 bbc r7,(r8),10$ 00000C15 10550 movl 8(r8),r0 ;get address 00000C19 10551 jsb (r0) 00000C1B 10552 brb 10$ 00000C1D 10553 .entry fdtxit,^m 00000C1F 10554 movl #ss$_normal,r0 ;good fake exit 00000C22 10555 jsb x$fini 00000C28 10556 ret 00000C29 10557 .entry fdtbxt,^m 00000C2B 10558 movl #ss$_nopriv,r0 ;bad fakeexit. no priv...the classic VMS status 00000C2E 10559 jsb x$fini 00000C34 10560 ret ;for appearances sake 00000C35 10561 00000C35 10562 x$fini: .jsb_entry 00000C4A 10590 call_finishioc do_ret=no X01/002 00000C35 CLRL R1 X02/007 00000C37 MOVL R0,IRP$L_IOST1(R3) X02/008 00000C3B MOVL R1,IRP$L_IOST2(R3) X02/010 00000C3F PUSHL R5 X02/011 00000C41 PUSHL R3 X02/012 00000C43 CALLS #2,G^EXE_STD$FINISHIO 00000C4A 10591 rsb 00000C4B 10592 00000C5D 10593 DeacFilt: $driver_fdt_entry 00000000 X02/075 ?02T 00000C4B .iif identical false, , _MTU_DIR_ARG_3 = 0 X01/131 ?01T 00000C4D MOVL FDTARG$_IRP(AP),R3 X01/132 ?01T 00000C51 MOVL FDTARG$_PCB(AP),R4 JTDRIVER ;skeleton driver implementing u 2-DEC-1994 10:13:13 AMAC V2.1-13-2671 Page 54 V01H Our FDT Filter Routines 2-DEC-1994 10:12:45 [EVERHART.JT]JTDRIVER_S2.MAR;120 X01/133 ?01T 00000C55 MOVL FDTARG$_UCB(AP),R5 X01/134 ?01T 00000C59 MOVL FDTARG$_CCB(AP),R6 00000C5D 10594 pushr #^m 00000C5F 10595 ; original r5 now at 4(sp). Must get that to continue the ops. 00000C5F 10596 jsb getJTucb ;find JTdriver ucb 00000C63 10597 tstl r0 00000C65 10598 blss 509$ 00000C67 10599 1509$: popr #^m 00000C69 10600 bsbw popout 00000C6C 10601 ret 00000C6D 10602 509$: 00000C6D 10603 ; bgeqw popout 00000C6D 10604 movl r5,ucb$l_backlk(r0) ;save link'd ucb in ours too. 00000C72 10605 movl r0,r5 ;point R5 at JT UCB 00000C75 10606 bitl i^#65792,ucb$l_ctlflgs(r5) ;look at deaccess (close)? 00000C83 10607 beqlw 1509$ ; if eql no, forget it X01/001 00000C7E bneq 30029$ X01/002 00000C80 brw 1509$ X01/003 00000C83 30029$: 00000C83 10608 ; Make sure this isn't one of OUR daemons 00000C83 10609 cmpl pcb$l_pid(r4),ucb$l_daemon(r5) ;open etc. daemon? 00000C8F 10610 beqlw 1509$ X01/001 00000C8A bneq 30030$ X01/002 00000C8C brw 1509$ X01/003 00000C8F 30030$: 00000C8F 10611 cmpl pcb$l_pid(r4),ucb$l_exdmn(r5) ;not extend daemon 00000C9B 10612 beqlw 1509$ X01/001 00000C96 bneq 30031$ X01/002 00000C98 brw 1509$ X01/003 00000C9B 30031$: 00000C9B 10613 cmpl pcb$l_pid(r4),ucb$l_deldmn(r5) 00000CA7 10614 beqlw 1509$ ;not delete daemon X01/001 00000CA2 bneq 30032$ X01/002 00000CA4 brw 1509$ X01/003 00000CA7 30032$: 00000CA7 10615 cmpl pcb$l_pid(r4),ucb$l_exempt(r5) ;exempted pid? 00000CB3 10616 beqlw 1509$ X01/001 00000CAE bneq 30033$ X01/002 00000CB0 brw 1509$ X01/003 00000CB3 30033$: 00000CB3 10617 cmpl pcb$l_pid(r4),ucb$l_exempt+4(r5) ;exempted pid? 00000CBF 10618 beqlw 1509$ X01/001 00000CBA bneq 30034$ X01/002 00000CBC brw 1509$ X01/003 00000CBF 30034$: 00000CBF 10619 cmpl pcb$l_pid(r4),ucb$l_exempt+8(r5) ;exempted pid? 00000CCB 10620 beqlw 1509$ X01/001 00000CC6 bneq 30035$ X01/002 00000CC8 brw 1509$ X01/003 00000CCB 30035$: 00000CCB 10621 cmpl pcb$l_pid(r4),ucb$l_exempt+12(r5) ;exempted pid? 00000CD7 10622 beqlw 1509$ X01/001 00000CD2 bneq 30036$ X01/002 00000CD4 brw 1509$ X01/003 00000CD7 30036$: 00000CD7 10623 ;make sure not a knl mode channel (leave the XQP channel alone!!!) 00000CD7 10624 cmpb ccb$b_amod(r6),#1 ;this the XQP's chnl? JTDRIVER ;skeleton driver implementing u 2-DEC-1994 10:13:13 AMAC V2.1-13-2671 Page 55 V01H Our FDT Filter Routines 2-DEC-1994 10:12:45 [EVERHART.JT]JTDRIVER_S2.MAR;120 00000CE0 10625 bleqw 1509$ ; if so scram NOW. X01/001 00000CDB bgtr 30037$ X01/002 00000CDD brw 1509$ X01/003 00000CE0 30037$: 00000CE0 10626 ; Looks like we need to inspect this entry. 00000CE0 10627 ; If there's a softlink, pass the FDT calls for the user, then 00000CE0 10628 ; restore the channel, remove LDT, etc. 00000CE0 10629 movl r5,r10 ;pass orig. UCB addr in R10 00000CE3 10630 ; change it to orig. one in clenup if we need to reissue i/o & 00000CE3 10631 ; then reset chnl. 00000CE3 10632 jsb clnup ;go restore privs/prio/idents etc. 00000CE9 10633 cmpl r10,r5 ;need to reset chnl? 00000CEC 10634 beql 99$ ;if eql no, just exit 00000CEE 10635 pushl r10 ;need to remember desired UCB addr 00000CF0 10636 ; reissue rest of fdts 00000CF0 10637 pushl r5 ;keep JT ucb around 00000CF2 10638 movl ucb$l_backlk(r5),r5 ;victim ucb 00000CF7 10639 subl2 #24,sp ;make stack room 00000CFA 10640 movl sp,r9 ?01T 00000CFD 10641 .if df,evax ?01T 00000CFD 10642 movl irp$l_qio_p1(r3),(r9) ?01T 00000D01 10643 movl irp$l_qio_p2(r3),04(r9) ?01T 00000D06 10644 movl irp$l_qio_p3(r3),08(r9) ?01T 00000D0C 10645 movl irp$l_qio_p4(r3),12(r9) ?01T 00000D12 10646 movl irp$l_qio_p5(r3),16(r9) ?01T 00000D18 10647 movl irp$l_qio_p6(r3),20(r9) ?01F 00000D1E 10648 .iff ?01F 00000D1E 10649 movl p1(ap),(r9) ?01F 00000D1E 10650 movl p2(ap),04(r9) ?01F 00000D1E 10651 movl p3(ap),08(r9) ?01F 00000D1E 10652 movl p4(ap),12(r9) ?01F 00000D1E 10653 movl p5(ap),16(r9) ?01F 00000D1E 10654 movl p6(ap),20(r9) ?01F 00000D1E 10655 .endc 00000D1E 10656 ; reconstitute call to victim's FDT 00000D1E 10657 EXTZV #IRP$V_FCODE,#IRP$S_FCODE,IRP$L_FUNC(R3),R1 ; GET FCN CODE 00000D24 10658 pushr #^m 00000D28 10659 jsb getjtucb ;locate JT UCB 00000D2C 10660 tstl r0 00000D2E 10661 bgeq 199$ ;no JT UCB should not happen 00000D30 10662 movab ucb$l_oldfdt(r0),r7 00000D35 10663 bgeq 199$ ;if old FDT isn't in sys space we're messed 00000D37 10664 ; Here rely on the fact that we got here via our modified FDT call and that 00000D37 10665 ; the orig. FDT is stored just a bit past the current one. 00000D37 10666 ; ucb$l_oldfdt near ucb$l_myfdt 00000D37 10667 addl2 #8,r7 ;point at one of 64 fdt addresses 00000D3A 10668 movl (r7)[r1],r8 ;r7 is desired routine address 00000D3E 10669 ;now call the "official" FDT code 00000D3E 10670 pushl r6 ;ccb 00000D40 10671 pushl r5 ;ucb 00000D42 10672 pushl r4 ;pcb 00000D44 10673 pushl r3 ;irp 00000D46 10674 calls #4,(r8) ;Call the original routine 00000D49 10675 popr #^m 00000D4D 10676 brb 1199$ 00000D4F 10677 199$: 00000D4F 10678 popr #^m JTDRIVER ;skeleton driver implementing u 2-DEC-1994 10:13:13 AMAC V2.1-13-2671 Page 56 V01H Our FDT Filter Routines 2-DEC-1994 10:12:45 [EVERHART.JT]JTDRIVER_S2.MAR;120 00000D53 10679 movl #16,r0 ;fail with err if structures messed 00000D6C 10680 call_finishioc do_ret=yes X01/002 00000D56 CLRL R1 X02/011 00000D58 MOVL R0,IRP$L_IOST1(R3) X02/012 00000D5C MOVL R1,IRP$L_IOST2(R3) X02/014 00000D60 PUSHL R5 X02/015 00000D62 PUSHL R3 X02/016 00000D64 CALLS #2,G^EXE_STD$FINISHIO X02/019 ?01T 00000D6B RET 00000D6C 10681 1199$: 00000D6C 10682 ; Now return as the original routine would. 00000D6C 10683 ; callg (r9),fdtlop ;reissue fdt chain 00000D6F 10684 setipl ipl=#2,environ=UNIPROCESSOR X01/005 ?01T 00000D6C MTPR #2,S^#PR$_IPL 00000D6F 10685 addl2 #24,sp ; fix stack 00000D72 10686 popl r5 00000D75 10687 popl r10 00000D78 10688 movl ccb$l_ucb(r6),r9 ;keep old ucb a mo... 00000D7C 10689 movl r10,ccb$l_ucb(r6) ;reset user channel to orig. device 00000D80 10690 ; adjust ref counts now ?01T 00000D80 10691 .if df,evax ?01T 00000D80 10692 decl ucb$l_refc(r9) ;1 less chnl on old dvc ?01T 00000D83 10693 bgtr 4$ ;if 1+, ok ?01T 00000D85 10694 movl #1,ucb$l_refc(r9) ;mounted dsk should have 1 or more ?01T 00000D89 10695 4$: incl ucb$l_refc(r10) ;bump new count again ?01F 00000D8C 10696 .iff ?01F 00000D8C 10697 decw ucb$w_refc(r9) ;1 less chnl on old dvc ?01F 00000D8C 10698 bgtr 4$ ;if 1+, ok ?01F 00000D8C 10699 movw #1,ucb$w_refc(r9) ;mounted dsk should have 1 or more ?01F 00000D8C 10700 4$: incw ucb$w_refc(r10) ;bump new count again ?01F 00000D8C 10701 .endc 00000D8C 10702 ;;;?????? check flow here 00000D8C 10703 popr #^m 00000D8E 10704 ; setipl ipl=#0,environ=UNIPROCESSOR 00000D8E 10705 movl #ss$_fdt_compl,r0 00000D95 10706 ret 00000D96 10707 99$: 00000D96 10708 popr #^m 00000D98 10709 bsbw popout 00000D9B 10710 ret 00000D9C 10711 ; rsb 00000D9C 10712 clnup: .jsb_entry output= 00000D9C 10713 ; remove old ldt etc. after prio/priv/ident restore. If 00000D9C 10714 ; original UCB in LDT differs from UCB now, save orig ucb in R10 00000D9C 10715 pushr #^m 00000DA0 10716 ; find LDT first. If none, not much to do. 00000DA0 10717 jsb findldt 00000DA6 10718 tstl r0 ;got an ldt? 00000DAD 10719 beqlw 999$ ;if eql no X01/001 00000DA8 bneq 30038$ X01/002 00000DAA brw 999$ X01/003 00000DAD 30038$: 00000DAD 10720 movl r0,r11 ;ldt in r0 if nonzero 00000DB0 10721 ;put prio/privs back 00000DB0 10722 movl g^ctl$gl_pcb,r4 ?01T 00000DB7 10723 .if df,evax ?01T 00000DB7 10724 movl ldt$l_bprio(r11),pcb$l_prib(r4) JTDRIVER ;skeleton driver implementing u 2-DEC-1994 10:13:13 AMAC V2.1-13-2671 Page 57 V01H Our FDT Filter Routines 2-DEC-1994 10:12:45 [EVERHART.JT]JTDRIVER_S2.MAR;120 ?01F 00000DBC 10725 .iff ?01F 00000DBC 10726 movb ldt$l_bprio(r11),pcb$b_prib(r4) ?01F 00000DBC 10727 .endc 00000DBC 10728 movl ldt$l_wprv(r11),pcb$q_priv(r4) 00000DC2 10729 movl ldt$l_wprv+4(r11),pcb$q_priv+4(r4) 00000DC8 10730 movl ldt$l_wprv(r11),g^ctl$gq_procpriv 00000DD0 10731 movl ldt$l_wprv+4(r11),g^ctl$gq_procpriv+4 00000DD8 10732 movl g^ctl$gl_phd,r4 00000DDF 10733 movl ldt$l_aprv(r11),phd$q_authpriv(r4) 00000DE5 10734 movl ldt$l_aprv+4(r11),phd$q_authpriv+4(r4) 00000DEB 10735 movl ldt$l_wprv(r11),phd$q_privmsk(r4) 00000DF0 10736 movl ldt$l_wprv+4(r11),phd$q_privmsk+4(r4) 00000DF5 10737 ; See if this is closing a softlink that changed devices 00000DF5 10738 ; so the user channel needs to be put back. 00000DF5 10739 cmpl ldt$l_chnucb(r11),ccb$l_ucb(r6) ;softlink close? 00000DFA 10740 beql 1$ ;if eql no 00000DFC 10741 movl ldt$l_chnucb(r11),r10 ;else save orig. ucb 00000E00 10742 1$: 00000E00 10743 ; put back idents 00000E00 10744 pushl r10 00000E02 10745 jsb undoid ;undo ident hacking. Do this in a subroutine 00000E08 10746 ;for clarity. We need to again root thru the 00000E08 10747 ;ACE to accomplish this... 00000E08 10748 popl r10 00000E0B 10749 ; get rid of whole LDT 00000E0B 10750 ; clean all out 00000E0B 10751 ; Synch: LDT pertains to this process only, so should be no problem 00000E0B 10752 ; with other LDTs. The LDT vector is per-process. 00000E0B 10753 jsb findldt ;find where this LDT is 00000E11 10754 ; On return r1 is previous LDT (which we need) and r0 is 00000E11 10755 ; LDT address (must be same as R11). 00000E11 10756 cmpl r0,r11 00000E14 10757 bneq 999$ ;if we get bad LDT, don't mess 00000E16 10758 ; Use careful order so nothing else gets interfered with. 00000E16 10759 ; r1 is prev LDT, r11 is this one. 00000E16 10760 movl ldt$l_fwd(r11),ldt$l_fwd(r1) ;collapse this LDT out of chain 00000E1B 10761 ;now deallocate this LDT & go 00000E1B 10762 movl ldt$l_fresiz(r11),r1 ;length to free 00000E1F 10763 movl r11,r0 ;addr to free 00000E22 10764 jsb g^exe$deanonpgdsiz ;free it 00000E28 10765 ; Now the LDT is freed and we go off on our merry way. The file gets closed 00000E28 10766 ; by later FDT stuff. 00000E28 10767 999$: 00000E28 10768 popr #^m 00000E2C 10769 rsb 00000E2D 10770 ; Revoke identifiers found granted by the ACE. 00000E2D 10771 undoid: .jsb_entry 00000E2D 10772 pushr #^m 00000E31 10773 movab ldt$l_ace(r11),r10 ;point at our ACE 00000E35 10774 ; look for priv sets 00000E35 10775 cmpl ldt$l_ace+8(r11),acllit ;this our ACE? 00000E42 10776 bneqw 999$ X01/001 00000E3D beql 30039$ X01/002 00000E3F brw 999$ X01/003 00000E42 30039$: 00000E42 10777 movab 12(r10),r10 ;start of data 00000E46 10778 1$: movzbl (r10)+,r9 ;get fcn byte JTDRIVER ;skeleton driver implementing u 2-DEC-1994 10:13:13 AMAC V2.1-13-2671 Page 58 V01H Our FDT Filter Routines 2-DEC-1994 10:12:45 [EVERHART.JT]JTDRIVER_S2.MAR;120 00000E4E 10779 beqlw 999$ X01/001 00000E49 bneq 30040$ X01/002 00000E4B brw 999$ X01/003 00000E4E 30040$: 00000E4E 10780 cmpb r9,#1 ;inspectme => not here 00000E51 10781 beql 1$ 00000E53 10782 cmpb r9,#2 ;moveme 00000E56 10783 beql 1$ 00000E58 10784 cmpb r9,#3 ;base prio set? 00000E5B 10785 bneq 2$ ;if not look more 00000E5D 10786 ; set base prio if ok 00000E5D 10787 cvtbl (r10)+,r8 ;prio to use to r8 00000E60 10788 movl (r10)+,r7 ;one long of sec.info 00000E63 10789 brw 1$ 00000E66 10790 2$: 00000E66 10791 cmpb r9,#4 ;priv set? 00000E69 10792 bneq 3$ ;if neq look more 00000E6B 10793 movl (r10)+,r0 ;sec info 00000E6E 10794 movl (r10)+,r1 ;sec info 00000E71 10795 movl (r10)+,r2 ;get info from ace 00000E74 10796 movl (r10)+,r3 00000E77 10797 brw 1$ 00000E7A 10798 3$: cmpb r9,#5 ;ident set? 00000E7D 10799 bneq 4$ 00000E7F 10800 ; If the auth check passed first time, it'll pass now, so check 00000E7F 10801 ; just as was done to grant, and revoke anything we would have granted 00000E7F 10802 ; initially. 00000E7F 10803 movl (r10)+,r0 ;sec info 00000E82 10804 movl r0,r7 00000E85 10805 movl (r10)+,r1 ;sec info 00000E88 10806 movl r0,r8 00000E8B 10807 movl ldt$l_myfid(r11),r2 ;file id 00000E90 10808 movl ldt$l_myfid+4(r11),r3 ;hi fileid 00000E95 10809 ; At file close time we may have blown file ID away off end of LDT 00000E95 10810 ; so don't authorize...just check for null identifier and don't revoke 00000E95 10811 ; that... 00000E95 10812 ; jsb auth 00000E95 10813 movl (r10)+,r2 ;get info from ace 00000E98 10814 movl (r10)+,r3 00000E9B 10815 ; cmpl r0,r2 ;check auth info 00000E9B 10816 ; bneq 4$ 00000E9B 10817 ; cmpl r1,r3 00000E9B 10818 ; bneq 4$ 00000E9B 10819 tstl r7 ;null identifier (1st long =0)? 00000E9D 10820 beql 4$ ;if so we didn't auth it on grant...no revoke 00000E9F 10821 ; UNgrant identifier in r7,r8 to curr. process. 00000E9F 10822 clrq -(sp) ;clear privatr & procname cells 00000EA1 10823 movab -16(r10),-(sp) ;addr of identifier info 00000EA5 10824 clrq -(sp) ;null pid & prcname 00000EA7 10825 calls #5,revokid ;use internal code (from vms) 00000EAE 10826 brw 1$ 00000EB1 10827 4$: cmpb r9,#6 ;softlink record? 00000EB4 10828 bneq 5$ ;skip out if illegal value 00000EB6 10829 movzbl (r10),r9 ;get length of data 00000EB9 10830 addl2 r9,r10 ;add to pointer 00000EBC 10831 brw 1$ 00000EBF 10832 5$: cmpb r9,#7 ;temp tag? JTDRIVER ;skeleton driver implementing u 2-DEC-1994 10:13:13 AMAC V2.1-13-2671 Page 59 V01H Our FDT Filter Routines 2-DEC-1994 10:12:45 [EVERHART.JT]JTDRIVER_S2.MAR;120 00000EC2 10833 bneq 999$ ;if ill value scram 00000EC4 10834 movzbl (r10),r9 ;get length 00000EC7 10835 addl2 r9,r10 00000ECA 10836 brw 1$ 00000ECD 10837 999$: 00000ECD 10838 popr #^m 00000ED1 10839 rsb 00000ED2 10840 ; 00000ED2 10841 ; Delfilt = 00000ED2 10842 ; Monitor delete requests; allow a daemon to "do something" first (like 00000ED2 10843 ; make a copy for awhile) 00000EE4 10844 DelFilt: $driver_fdt_entry 00000000 X02/075 ?02T 00000ED2 .iif identical false, , _MTU_DIR_ARG_3 = 0 X01/131 ?01T 00000ED4 MOVL FDTARG$_IRP(AP),R3 X01/132 ?01T 00000ED8 MOVL FDTARG$_PCB(AP),R4 X01/133 ?01T 00000EDC MOVL FDTARG$_UCB(AP),R5 X01/134 ?01T 00000EE0 MOVL FDTARG$_CCB(AP),R6 00000EE4 10845 ; be sure not a knl channel 00000EE4 10846 tstl r6 ;is there a CCB (must be +) 00000EE6 10847 bleq 2$ ;if not skip out 00000EE8 10848 cmpb ccb$b_amod(r6),#1 ;knl mode access? 00000EEC 10849 bgtr 1$ 00000EEE 10850 2$: bsbw pors ;leave knl channelsalone, continue chain 00000EF1 10851 ret 00000EF2 10852 1$: 00000EF2 10853 ; Do deletion control stuff 00000EF2 10854 pushr #^m 00000EF4 10855 ; original r5 now at 4(sp). Must get that to continue the ops. 00000EF4 10856 jsb getJTucb ;find JTdriver ucb 00000EF8 10857 tstl r0 00000EFA 10858 blss 509$ 00000EFC 10859 1509$: popr #^m 00000EFE 10860 bsbw popout 00000F01 10861 ret 00000F02 10862 509$: 00000F02 10863 ; bgeqw popout 00000F02 10864 movl r5,ucb$l_backlk(r0) ;save link'd ucb in ours too. 00000F07 10865 movl r0,r5 ;point R5 at JT UCB 00000F0A 10866 ; Want this control? 00000F0A 10867 bitl #<128>,ucb$l_ctlflgs(r5) ;user want delete control? 00000F18 10868 beqlw 1509$ ;if eql no, skip out. X01/001 00000F13 bneq 30041$ X01/002 00000F15 brw 1509$ X01/003 00000F18 30041$: 00000F18 10869 ; Make sure this isn't one of OUR daemons 00000F18 10870 cmpl pcb$l_pid(r4),ucb$l_daemon(r5) ;open etc. daemon? 00000F24 10871 beqlw 1509$ X01/001 00000F1F bneq 30042$ X01/002 00000F21 brw 1509$ X01/003 00000F24 30042$: 00000F24 10872 cmpl pcb$l_pid(r4),ucb$l_exdmn(r5) ;not extend daemon 00000F30 10873 beqlw 1509$ X01/001 00000F2B bneq 30043$ X01/002 00000F2D brw 1509$ X01/003 00000F30 30043$: 00000F30 10874 cmpl pcb$l_pid(r4),ucb$l_deldmn(r5) 00000F3C 10875 beqlw 1509$ ;not delete daemon JTDRIVER ;skeleton driver implementing u 2-DEC-1994 10:13:13 AMAC V2.1-13-2671 Page 60 V01H Our FDT Filter Routines 2-DEC-1994 10:12:45 [EVERHART.JT]JTDRIVER_S2.MAR;120 X01/001 00000F37 bneq 30044$ X01/002 00000F39 brw 1509$ X01/003 00000F3C 30044$: 00000F3C 10876 cmpl pcb$l_pid(r4),ucb$l_exempt(r5) ;exempted pid? 00000F48 10877 beqlw 1509$ X01/001 00000F43 bneq 30045$ X01/002 00000F45 brw 1509$ X01/003 00000F48 30045$: 00000F48 10878 cmpl pcb$l_pid(r4),ucb$l_exempt+4(r5) ;exempted pid? 00000F54 10879 beqlw 1509$ X01/001 00000F4F bneq 30046$ X01/002 00000F51 brw 1509$ X01/003 00000F54 30046$: 00000F54 10880 cmpl pcb$l_pid(r4),ucb$l_exempt+8(r5) ;exempted pid? 00000F60 10881 beqlw 1509$ X01/001 00000F5B bneq 30047$ X01/002 00000F5D brw 1509$ X01/003 00000F60 30047$: 00000F60 10882 cmpl pcb$l_pid(r4),ucb$l_exempt+12(r5) ;exempted pid? 00000F6C 10883 beqlw 1509$ X01/001 00000F67 bneq 30048$ X01/002 00000F69 brw 1509$ X01/003 00000F6C 30048$: 00000F6C 10884 ;make sure not a knl mode channel (leave the XQP channel alone!!!) 00000F6C 10885 cmpb ccb$b_amod(r6),#1 ;this the XQP's chnl? 00000F75 10886 bleqw 1509$ ; if so scram NOW. X01/001 00000F70 bgtr 30049$ X01/002 00000F72 brw 1509$ X01/003 00000F75 30049$: 00000F75 10887 ; Also...hack... 00000F75 10888 ;if io$m_create is seen here (128 bit) we erase it from the 00000F75 10889 ; irp but skip this i/o, to allow utils to do more work. 00000F75 10890 ; This is because we probably will want other utilities to 00000F75 10891 ; do deletions and need not to force them to be all within the 00000F75 10892 ; daemon process. ?01T 00000F75 10893 .if df,evax ?01T 00000F75 10894 bitL #io$m_create,irp$l_func(r3) ;bogus subfunc? ?01T 00000F7D 10895 beql 10$ ;if not there, normal ?01T 00000F7F 10896 bicl #io$m_create,irp$l_func(r3) ;else remove and ?01F 00000F87 10897 .iff ?01F 00000F87 10898 bitw #io$m_create,irp$w_func(r3) ;bogus subfunc? ?01F 00000F87 10899 beql 10$ ;if not there, normal ?01F 00000F87 10900 bicw #io$m_create,irp$w_func(r3) ;else remove and ?01F 00000F87 10901 .endc 00000F87 10902 brw 999$ ;let delete by 00000F8A 10903 10$: 00000F8A 10904 ; Now ensure that this call is not in the same JOB as the daemon. 00000F8A 10905 ; (This lets the daemon spawn processes to do some work.) 00000F8A 10906 pushr #^m ;get some regs 00000F8E 10907 movl ucb$l_deldmn(r5),r10 ;get the daemon PID 00000F93 10908 bleq 5$ 00000F95 10909 movzwl r10,r7 ;get process index 00000F98 10910 ; like code in FQdriver... 00000F98 10911 movl g^sch$gl_pcbvec,r6 ;get pcb vector 00000F9F 10912 movl (r6)[r7],r8 ;get a PCB address 00000FA3 10913 tstl r8 ;ensure a system addr 00000FA5 10914 bgeq 5$ ;skip if not JTDRIVER ;skeleton driver implementing u 2-DEC-1994 10:13:13 AMAC V2.1-13-2671 Page 61 V01H Our FDT Filter Routines 2-DEC-1994 10:12:45 [EVERHART.JT]JTDRIVER_S2.MAR;120 00000FA7 10915 cmpl r10,pcb$l_pid(r8) ;be sure this is the daemon process 00000FAC 10916 bneq 5$ ;else skip 00000FAE 10917 ; ok, we for sure have the daemon's PCB now. See if the JIBs match 00000FAE 10918 cmpl pcb$l_jib(r8),pcb$l_jib(r4) ;same JIB as daemon's? 00000FB5 10919 bneq 5$ ;if not, don't skip out 00000FB7 10920 popr #^m ;get regs back now 00000FBB 10921 48$: brw 1509$ ;then buzz off 00000FBE 10922 5$: 00000FBE 10923 popr #^m ;get regs back now 00000FC2 10924 ; Notify deldmn if one exists. Let that do the real work. 00000FC2 10925 ; Looks like we CAN help, if there's someone out there we can yell for. 00000FC2 10926 ; Check this. 00000FC2 10927 pushl r0 00000FC4 10928 pushl r10 00000FC6 10929 pushl r11 ?01F 00000FC8 10930 .if ndf,evax ?01F 00000FC8 10931 movl p1(ap),r0 ;get fib ?01T 00000FC8 10932 .iff ?01T 00000FC8 10933 movl irp$l_qio_p1(r3),r0 ?01T 00000FCC 10934 .endc 00000FD3 10996 ifnord #4,4(r0),51$ X02/006 ?03T 00000FCC PROBER #0,#4,4(r0) X02/007 ?03T 00000FD1 BEQL 51$ 00000FD3 10997 movl 4(r0),r0 ;...from descriptor 00000FD7 10998 movl r0,r9 ;save user FIB address 00000FDA 10999 clrl r11 ;r11=0 ==> flag no security interest 00000FDC 11000 pushr #^m ;need some regs ?01T 00000FDE 11001 .if df,evax ?01T 00000FDE 11002 movl irp$l_qio_p1(r3),r0 ;get FIB desc ?01F 00000FE2 11003 .iff ?01F 00000FE2 11004 movl p1(ap),r0 ?01F 00000FE2 11005 .endc 00000FE2 11006 beql 450$ 00000FE4 11007 movl 4(r0),r0 ;get fib addr 00000FE8 11008 beql 450$ 00000FEA 11009 movzwl fib$w_fid(r0),r1 ;get file number (check numbers 00000FEE 11010 ; to save space) 00000FEE 11011 movl #f.nums,r2 ; get size of store ?01F 00000FF1 11012 .if df,wd.lst ?01F 00000FF1 11013 movab ucb$l_fnums(r5),r3 ; point at store ?01F 00000FF1 11014 49$: cmpw (r3)+,r1 ; same file number? ?01F 00000FF1 11015 beql 47$ ; if so go ahead ?01F 00000FF1 11016 sobgtr r2,49$ ?01T 00000FF1 11017 .iff ;bitmap ?01T 00000FF1 11018 ; r1 is file number... ?01T 00000FF1 11019 movl ucb$l_fnums(r5),r3 ; addr of storage ?01T 00000FF6 11020 beql 47$ ; if none pretend everything matches ?02F 00000FF8 11021 .iif ndf,f.mask,f.mask=-16384 ;max bits to use in bitmap check ?01T 00000FF8 11022 bicl #f.mask,r1 ;clear extra bits ?01T 00000FFF 11023 ashl #-3,r1,r2 ;r2 gets byte offset into bitmap ?01T 00001004 11024 addl3 r3,r2,r0 ;get address ?01T 00001008 11025 bicl #-8,r1 ;isolate bit in byte now (0-7) ?01T 0000100F 11026 bbs r1,(r0),47$ ;if the bit is zero, not here ?01T 00001013 11027 ;if the bit is set, though, go fer it ?01T 00001013 11028 .endc 00001013 11029 ; fall thru...no match 00001013 11030 450$: popr #^m JTDRIVER ;skeleton driver implementing u 2-DEC-1994 10:13:13 AMAC V2.1-13-2671 Page 62 V01H Our FDT Filter Routines 2-DEC-1994 10:12:45 [EVERHART.JT]JTDRIVER_S2.MAR;120 00001015 11031 brb 51$ 00001017 11032 47$: 00001017 11033 popr #^m 00001019 11034 incl r11 ; flag to check del access 0000101B 11035 50$: 0000101B 11036 ; (r0 is too volatile) 0000101B 11037 51$: 0000101B 11038 movl ucb$l_delmbx(r5),r10 ;get del mbx ucb if any 00001020 11039 bgeq 850$ ;if none, can'thelp. 00001022 11040 bitl #ucb$m_online,ucb$l_sts(r10) ;online? 00001027 11041 beql 850$ ;if not no soap ?01T 00001029 11042 .if df,evax ?01T 00001029 11043 tstl ucb$l_refc(r10) ;anyone listening? ?01F 0000102C 11044 .iff ?01F 0000102C 11045 tstw ucb$w_refc(r10) ;anyone listening? ?01F 0000102C 11046 .endc 0000102C 11047 beql 850$ ;if no, no dmn. 0000102E 11048 tstl ucb$l_orb(r10) ;owner exist? 00001031 11049 bgeq 850$ ;if geq no, skip. 00001033 11050 ; check pid now for delpid 00001033 11051 pushr #^m 00001037 11052 movl g^sch$gl_maxpix,r7 ;max proc index 0000103E 11053 100$: movl g^sch$gl_pcbvec,r6 ;pcb vector 00001045 11054 movl (r6)[r7],r8 ;get a pcb 00001049 11055 tstl r8 ;got one? 0000104B 11056 bgeq 101$ ;if geq no 0000104D 11057 cmpl ucb$l_deldmn(r5),pcb$l_pid(r8) ;this our pid? 00001054 11058 beql 102$ ;if eql yes, all well 00001056 11059 101$: sobgtr r7,100$ ;check 'em all 00001059 11060 clrl ucb$l_deldmn(r5) ;clr dmn pid if it isn'tthere now 0000105D 11061 102$: popr #^m 00001061 11062 tstl ucb$l_deldmn(r5) ;is the daemon around? 00001065 11063 beql 850$ ;if not skip out 00001067 11064 ; Looks like a msg can besent, so do so. For clarity do in a sub. 00001067 11065 pushr #^m 0000106B 11066 jsb snddelmsg ;send delete message 00001071 11067 popr #^m 00001075 11068 ; note secret return code 4096 indicates failure. 00001075 11069 850$: 00001075 11070 800$: 00001075 11071 popl r11 00001078 11072 popl r10 0000107B 11073 cmpl #3,r0 ;fake success status? 0000107E 11074 beql 2999$ 00001080 11075 blbc r0,1999$ 00001083 11076 popl r0 00001086 11077 00001086 11078 999$: brw 1509$ 00001089 11079 ; popr #^m 00001089 11080 ; movl #1,r0 00001089 11081 ; rsb 00001089 11082 1999$: popl r0 ;restore the stack 0000108C 11083 popr #^m 0000108E 11084 movl #ss$_nopriv,r0 ;return no priv if daemon rejected the op 000010A1 11085 call_abortio X01/007 00001091 PUSHL R0 X01/008 00001093 PUSHL R5 JTDRIVER ;skeleton driver implementing u 2-DEC-1994 10:13:13 AMAC V2.1-13-2671 Page 63 V01H Our FDT Filter Routines 2-DEC-1994 10:12:45 [EVERHART.JT]JTDRIVER_S2.MAR;120 X01/009 00001095 PUSHL R4 X01/010 00001097 PUSHL R3 X01/011 00001099 CALLS #4,G^EXE_STD$ABORTIO X01/014 ?01T 000010A0 RET 000010A1 11086 ; ret 000010A1 11087 ; jmp g^exe$abortio ;and abort the i/o 000010A1 11088 2999$: popl r0 ?01F 000010A4 11089 .if df,zotdi$ ?01F 000010A4 11090 ; ensure if faking success that dir id looks empty so we get no msg ?02F 000010A4 11091 .if ndf,evax ?02F 000010A4 11092 movl p1(ap),r0 ;get fib ?02F 000010A4 11093 .iff ?02F 000010A4 11094 movl irp$l_qio_p1(r3),r0 ?02F 000010A4 11095 .endc ?01F 000010A4 11096 ifnord #4,4(r0),2951$ ?01F 000010A4 11097 movl 4(r0),r0 ;...from descriptor ?01F 000010A4 11098 beql 2951$ ;fib addr can't be 0 ?01F 000010A4 11099 clrl fib$w_did(r0) ;clear dir id ?01F 000010A4 11100 clrw fib$w_did+4(r0) ;(6 bytes) ?01F 000010A4 11101 .endc 000010A4 11102 2951$: popr #^m 000010A6 11103 movl #1,r0 000010BF 11104 call_finishioc do_ret=yes X01/002 000010A9 CLRL R1 X02/011 000010AB MOVL R0,IRP$L_IOST1(R3) X02/012 000010AF MOVL R1,IRP$L_IOST2(R3) X02/014 000010B3 PUSHL R5 X02/015 000010B5 PUSHL R3 X02/016 000010B7 CALLS #2,G^EXE_STD$FINISHIO X02/019 ?01T 000010BE RET 000010BF 11105 ; rsb 000010BF 11106 ; 000010BF 11107 ; Crefilt - 000010BF 11108 ; Get create requests for purposes of doing space management. 000010BF 11109 ; Needed also for cases where directory is a bogus one we put in 000010BF 11110 ; to do directory softlinks; must then change device & did to a 000010BF 11111 ; real one somewhere. 000010D1 11112 Crefilt: $driver_fdt_entry 00000000 X02/075 ?02T 000010BF .iif identical false, , _MTU_DIR_ARG_3 = 0 X01/131 ?01T 000010C1 MOVL FDTARG$_IRP(AP),R3 X01/132 ?01T 000010C5 MOVL FDTARG$_PCB(AP),R4 X01/133 ?01T 000010C9 MOVL FDTARG$_UCB(AP),R5 X01/134 ?01T 000010CD MOVL FDTARG$_CCB(AP),R6 000010D1 11113 ; be sure not a knl channel 000010D1 11114 tstl r6 ;is there a CCB (must be +) 000010D3 11115 bleq 2$ ;if not skip out 000010D5 11116 cmpb ccb$b_amod(r6),#1 ;knl mode access? 000010D9 11117 bgtr 1$ 000010DB 11118 2$: bsbw pors ;leave knl mode chnls alone! 000010DE 11119 ret 000010DF 11120 1$: pushr #^m 000010E1 11121 ; original r5 now at 4(sp). Must get that to continue the ops. 000010E1 11122 jsb getJTucb ;find JTdriver ucb 000010E5 11123 tstl r0 000010E7 11124 blss 509$ 000010E9 11125 1509$: 000010E9 11126 popr #^m JTDRIVER ;skeleton driver implementing u 2-DEC-1994 10:13:13 AMAC V2.1-13-2671 Page 64 V01H Our FDT Filter Routines 2-DEC-1994 10:12:45 [EVERHART.JT]JTDRIVER_S2.MAR;120 000010EB 11127 bsbw popout 000010EE 11128 ret 000010EF 11129 509$: 000010EF 11130 ; bgeqw popout 000010EF 11131 movl r5,ucb$l_backlk(r0) ;save link'd ucb in ours too. 000010F4 11132 movl r0,r5 ;point R5 at JT UCB 000010F7 11133 bitl i^#16,ucb$l_ctlflgs(r5) ;look at create? 00001105 11134 beqlw 1509$ ;if not skip X01/001 00001100 bneq 30050$ X01/002 00001102 brw 1509$ X01/003 00001105 30050$: 00001105 11135 ; Make sure this isn't one of OUR daemons 00001105 11136 cmpl pcb$l_pid(r4),ucb$l_daemon(r5) ;open etc. daemon? 00001111 11137 beqlw 1509$ X01/001 0000110C bneq 30051$ X01/002 0000110E brw 1509$ X01/003 00001111 30051$: 00001111 11138 cmpl pcb$l_pid(r4),ucb$l_exdmn(r5) ;not extend daemon 0000111D 11139 beqlw 1509$ X01/001 00001118 bneq 30052$ X01/002 0000111A brw 1509$ X01/003 0000111D 30052$: 0000111D 11140 cmpl pcb$l_pid(r4),ucb$l_deldmn(r5) 00001129 11141 beqlw 1509$ ;not delete daemon X01/001 00001124 bneq 30053$ X01/002 00001126 brw 1509$ X01/003 00001129 30053$: 00001129 11142 cmpl pcb$l_pid(r4),ucb$l_exempt(r5) ;exempted pid? 00001135 11143 beqlw 1509$ X01/001 00001130 bneq 30054$ X01/002 00001132 brw 1509$ X01/003 00001135 30054$: 00001135 11144 cmpl pcb$l_pid(r4),ucb$l_exempt+4(r5) ;exempted pid? 00001141 11145 beqlw 1509$ X01/001 0000113C bneq 30055$ X01/002 0000113E brw 1509$ X01/003 00001141 30055$: 00001141 11146 cmpl pcb$l_pid(r4),ucb$l_exempt+8(r5) ;exempted pid? 0000114D 11147 beqlw 1509$ X01/001 00001148 bneq 30056$ X01/002 0000114A brw 1509$ X01/003 0000114D 30056$: 0000114D 11148 cmpl pcb$l_pid(r4),ucb$l_exempt+12(r5) ;exempted pid? 00001159 11149 beqlw 1509$ X01/001 00001154 bneq 30057$ X01/002 00001156 brw 1509$ X01/003 00001159 30057$: 00001159 11150 ;make sure not a knl mode channel (leave the XQP channel alone!!!) 00001159 11151 cmpb ccb$b_amod(r6),#1 ;this the XQP's chnl? 00001162 11152 bleqw 1509$ ; if so scram NOW. X01/001 0000115D bgtr 30058$ X01/002 0000115F brw 1509$ X01/003 00001162 30058$: 00001162 11153 bitl #8,ucb$l_ctlflgs(r5) ;doing cbt alloc on create? 00001167 11154 ; note NO extend size change on create...too darn risky... 00001167 11155 beql 8810$ ;if eql no 00001169 11156 pushl r0 JTDRIVER ;skeleton driver implementing u 2-DEC-1994 10:13:13 AMAC V2.1-13-2671 Page 65 V01H Our FDT Filter Routines 2-DEC-1994 10:12:45 [EVERHART.JT]JTDRIVER_S2.MAR;120 ?01F 0000116B 11157 .if ndf,evax ?01F 0000116B 11158 movl p1(ap),r0 ;get fib ?01T 0000116B 11159 .iff ?01T 0000116B 11160 movl irp$l_qio_p1(r3),r0 ?01T 0000116F 11161 .endc 00001176 11162 ifnord #4,4(r0),10$ X02/007 ?03T 0000116F PROBER #0,#4,4(r0) X02/008 ?03T 00001174 BEQL 10$ 00001176 11163 movl 4(r0),r0 ;...from descriptor 00001181 11164 ifnord #4,fib$w_exctl(r0),10$ X02/007 ?03T 0000117A PROBER #0,#4,fib$w_exctl(r0) X02/008 ?03T 0000117F BEQL 10$ 00001181 11165 bitw #fib$m_extend,fib$w_exctl(r0) ;extending at all? 0000118C 11166 beqlw 10$ ;if no extend, leave fib alone X01/001 00001187 bneq 30059$ X01/002 00001189 brw 10$ X01/003 0000118C 30059$: 0000118C 11167 ; Because contiguous best try allocation flushes the entire extend cache, 0000118C 11168 ; it can cause a tremendous performance hit. Therefore allow it to be 0000118C 11169 ; separately switched so that the benefits of longer extents can be had 0000118C 11170 ; if desired without forcing this flushing every time a file is extended. 0000118C 11171 bitl i^#32,ucb$l_ctlflgs(r5) ;separate control for setting contig best tr 0000118C 11171 y 00001195 11172 beql 10$ 00001197 11173 ; leave contig and contig-best-try alone 00001197 11174 bitw #,fib$w_exctl(r0) ;contig alloc? 0000119B 11175 bneq 10$ ;if contig leave it alone 0000119D 11176 bisw #fib$m_alconb,fib$w_exctl(r0) ;else set cbt alloc 000011A1 11177 10$: 000011A1 11178 popl r0 000011A4 11179 8810$: 000011A4 11180 bitl i^#512,ucb$l_ctlflgs(r5) ;doing space control? 000011AD 11181 beql 21$ 000011AF 11182 pushl r0 000011B1 11183 movl p1(ap),r0 ;get fib 000011BC 11184 ifnord #4,4(r0),20$ X02/007 ?03T 000011B5 PROBER #0,#4,4(r0) X02/008 ?03T 000011BA BEQL 20$ 000011BC 11185 movl 4(r0),r0 ;...from descriptor 000011C0 11186 brw mspc ;go handle space control now 1....... %AMAC-I-BRANCHBET, (1) branch between routines from routine CREFILT 000011C3 11187 20$: popl r0 000011C6 11188 21$: brw 1509$ 000011C9 11189 ; 000011C9 11190 PopOut: .jsb_entry output=r0 000011C9 11191 ; popr #^m 000011C9 11192 bsbw pors 000011CC 11193 rsb 000011CD 11194 pors: .jsb_entry output=r0 000011CD 11195 ; Here need to return to the "standard" FDT routine. Do so by computing 000011CD 11196 ; the address in the FDT table of the normal host and calling that, then 000011CD 11197 ; returning. 000011CD 11198 EXTZV #IRP$V_FCODE,#IRP$S_FCODE,IRP$L_FUNC(R3),R1 ; GET FCN CODE 000011D3 11199 pushr #^m 000011D7 11200 movl r1,r10 JTDRIVER ;skeleton driver implementing u 2-DEC-1994 10:13:13 AMAC V2.1-13-2671 Page 66 V01H Our FDT Filter Routines 2-DEC-1994 10:12:45 [EVERHART.JT]JTDRIVER_S2.MAR;120 000011DA 11201 jsb getjtucb ;find JT UCB checking for extra links 000011DE 11202 tstl r0 ;got it? 000011E0 11203 bgeq 199$ ;if not skip out 000011E2 11204 movl ucb$l_oldfdt(r0),r7 ;get address of previous FDT 000011E7 11205 bgeq 199$ ;ensure ok... 000011E9 11206 ; movl ucb$l_ddt(r5),r7 ;find FDT 000011E9 11207 ; Here rely on the fact that we got here via our modified FDT call and that 000011E9 11208 ; the orig. FDT is stored just a bit past the current one. 000011E9 11209 ; movl (r7),r7 ;point at orig. FDT 000011E9 11210 addl2 #8,r7 ;point at one of 64 fdt addresses 000011EC 11211 movl (r7)[r10],r8 ;r7 is desired routine address 000011F0 11212 ;now call the "official" FDT code 000011F0 11213 pushl r6 ;ccb 000011F2 11214 pushl r5 ;ucb 000011F4 11215 pushl r4 ;pcb 000011F6 11216 pushl r3 ;irp 000011F8 11217 calls #4,(r8) ;Call the original routine 000011FB 11218 popr #^m 000011FF 11219 ; Now return as the original routine would. 000011FF 11220 ; caller does this 000011FF 11221 rsb 00001200 11222 ; ret 00001200 11223 199$: 00001200 11224 popr #^m 00001204 11225 movl #16,r0 00001216 11226 call_abortio do_ret=no X01/007 00001207 PUSHL R0 X01/008 00001209 PUSHL R5 X01/009 0000120B PUSHL R4 X01/010 0000120D PUSHL R3 X01/011 0000120F CALLS #4,G^EXE_STD$ABORTIO 00001216 11227 rsb 00001217 11228 ; ret 00001217 11229 ; rsb 00001229 11230 mfyfilt: $driver_fdt_entry ;filter on MODIFY requests (e.g. extend) 00000000 X02/075 ?02T 00001217 .iif identical false, , _MTU_DIR_ARG_3 = 0 X01/131 ?01T 00001219 MOVL FDTARG$_IRP(AP),R3 X01/132 ?01T 0000121D MOVL FDTARG$_PCB(AP),R4 X01/133 ?01T 00001221 MOVL FDTARG$_UCB(AP),R5 X01/134 ?01T 00001225 MOVL FDTARG$_CCB(AP),R6 00001229 11231 ; First do some preliminary checks for sanity. 00001229 11232 ; 1. Channel must NOT be kernel mode 00001229 11233 ; 2. Not a movefile 00001229 11234 tstl r6 ;is there a CCB (must be +) 0000122B 11235 bgtr 5509$ 0000122D 11236 6509$: bsbw pors 00001230 11237 ret 00001231 11238 5509$: 00001231 11239 ; bleq pors ;if not skip out 00001231 11240 cmpb ccb$b_amod(r6),#1 ;knl mode access? 00001235 11241 bleq 6509$ ;leave knl mode chnls alone! 00001237 11242 ;funct modifiers are bits 6-15 00001237 11243 ; this is hex ffc0 00001237 11244 ; Normal io$_modify should have no modifiers, so if it has it's 00001237 11245 ; for something else; leave that alone. ?01F 00001237 11246 .if ndf,evax ?01F 00001237 11247 bitw #^xFFC0,irp$w_func(r3) ;this a movefile or other modifier? JTDRIVER ;skeleton driver implementing u 2-DEC-1994 10:13:13 AMAC V2.1-13-2671 Page 67 V01H Our FDT Filter Routines 2-DEC-1994 10:12:45 [EVERHART.JT]JTDRIVER_S2.MAR;120 ?01T 00001237 11248 .iff ?01T 00001237 11249 ; axp 6.1 sets 2000 bit for some reason. However movefile bit is 1000 hex ?01T 00001237 11250 ; so do not mess with movefile but let 2000 bit by. ?01T 00001237 11251 bitl #^xDFC0,irp$l_func(r3) ;this a movefile or other modifier? ?01T 0000123F 11252 .endc 0000123F 11253 bneq 6509$ ;if so ignore it here. 00001241 11254 pushr #^m 00001243 11255 ; original r5 now at 4(sp). Must get that to continue the ops. 00001243 11256 jsb getJTucb ;find JTdriver ucb 00001247 11257 tstl r0 00001249 11258 blss 509$ 0000124B 11259 1509$: 0000124B 11260 popr #^m 0000124D 11261 bsbw popout 00001250 11262 ret 00001251 11263 509$: 00001251 11264 ; bgeqw popout 00001251 11265 movl r5,ucb$l_backlk(r0) ;save link'd ucb in ours too. 00001256 11266 movl r0,r5 ;point R5 at JT UCB 00001259 11267 ; Make sure this isn't one of OUR daemons 00001259 11268 cmpl pcb$l_pid(r4),ucb$l_daemon(r5) ;open etc. daemon? 00001265 11269 beqlw 1509$ X01/001 00001260 bneq 30060$ X01/002 00001262 brw 1509$ X01/003 00001265 30060$: 00001265 11270 cmpl pcb$l_pid(r4),ucb$l_exdmn(r5) ;not extend daemon 00001271 11271 beqlw 1509$ X01/001 0000126C bneq 30061$ X01/002 0000126E brw 1509$ X01/003 00001271 30061$: 00001271 11272 cmpl pcb$l_pid(r4),ucb$l_deldmn(r5) 0000127D 11273 beqlw 1509$ ;not delete daemon X01/001 00001278 bneq 30062$ X01/002 0000127A brw 1509$ X01/003 0000127D 30062$: 0000127D 11274 cmpl pcb$l_pid(r4),ucb$l_exempt(r5) ;exempted pid? 00001289 11275 beqlw 1509$ X01/001 00001284 bneq 30063$ X01/002 00001286 brw 1509$ X01/003 00001289 30063$: 00001289 11276 cmpl pcb$l_pid(r4),ucb$l_exempt+4(r5) ;exempted pid? 00001295 11277 beqlw 1509$ X01/001 00001290 bneq 30064$ X01/002 00001292 brw 1509$ X01/003 00001295 30064$: 00001295 11278 cmpl pcb$l_pid(r4),ucb$l_exempt+8(r5) ;exempted pid? 000012A1 11279 beqlw 1509$ X01/001 0000129C bneq 30065$ X01/002 0000129E brw 1509$ X01/003 000012A1 30065$: 000012A1 11280 cmpl pcb$l_pid(r4),ucb$l_exempt+12(r5) ;exempted pid? 000012AD 11281 beqlw 1509$ X01/001 000012A8 bneq 30066$ X01/002 000012AA brw 1509$ X01/003 000012AD 30066$: 000012AD 11282 ;make sure not a knl mode channel (leave the XQP channel alone!!!) 000012AD 11283 cmpb ccb$b_amod(r6),#1 ;this the XQP's chnl? JTDRIVER ;skeleton driver implementing u 2-DEC-1994 10:13:13 AMAC V2.1-13-2671 Page 68 V01H Our FDT Filter Routines 2-DEC-1994 10:12:45 [EVERHART.JT]JTDRIVER_S2.MAR;120 000012B6 11284 bleqw 1509$ ; if so scram NOW. X01/001 000012B1 bgtr 30067$ X01/002 000012B3 brw 1509$ X01/003 000012B6 30067$: 000012B6 11285 ; Now ensure that this call is not in the same JOB as the daemon. 000012B6 11286 ; (This lets the daemon spawn processes to do some work.) 000012B6 11287 pushr #^m ;get some regs 000012BA 11288 movl ucb$l_exdmn(r5),r10 ;get the daemon PID 000012BF 11289 bleq 5$ 000012C1 11290 movzwl r10,r7 ;get process index 000012C4 11291 ; like code in FQdriver... 000012C4 11292 movl g^sch$gl_pcbvec,r6 ;get pcb vector 000012CB 11293 movl (r6)[r7],r8 ;get a PCB address 000012CF 11294 tstl r8 ;ensure a system addr 000012D1 11295 bgeq 5$ ;skip if not 000012D3 11296 cmpl r10,pcb$l_pid(r8) ;be sure this is the daemon process 000012D8 11297 bneq 5$ ;else skip 000012DA 11298 ; ok, we for sure have the daemon's PCB now. See if the JIBs match 000012DA 11299 cmpl pcb$l_jib(r8),pcb$l_jib(r4) ;same JIB as daemon's? 000012E1 11300 bneq 5$ ;if not, don't skip out 000012E3 11301 popr #^m ;get regs back now 000012E7 11302 48$: brw 1509$ ;then buzz off 000012EA 11303 5$: 000012EA 11304 popr #^m ;get regs back now 000012EE 11305 bitl i^#2,ucb$l_ctlflgs(r5) ;look at mfy? 000012FC 11306 bneqw mfycmn ;if neq yes X01/001 000012F7 beql 30068$ X01/002 000012F9 brw mfycmn X01/003 000012FC 30068$: 000012FC 11307 ; (test later will see about space control if doing this) 000012FC 11308 bitl i^#512,ucb$l_ctlflgs(r5) ;doing space control? 00001305 11309 beql 701$ 00001307 11310 pushl r0 ?01F 00001309 11311 .if ndf,evax ?01F 00001309 11312 movl p1(ap),r0 ;get fib ?01T 00001309 11313 .iff ?01T 00001309 11314 movl irp$l_qio_p1(r3),r0 ?01T 0000130D 11315 .endc 0000130D 11316 beql 702$ 00001316 11317 ifnord #4,4(r0),702$ X02/007 ?03T 0000130F PROBER #0,#4,4(r0) X02/008 ?03T 00001314 BEQL 702$ 00001316 11318 movl 4(r0),r0 ;...from descriptor 0000131A 11319 beql 702$ 0000131C 11320 7701$: brw mspc ;if so go handle space control 0000131F 11321 701$: 0000131F 11322 popr #^m 00001321 11323 bsbw pors 00001324 11324 ret 00001325 11325 702$: POPL R0 00001328 11326 popr #^m 0000132A 11327 bsbw pors 0000132D 11328 ret 0000132E 11329 mspcj: popl r0 00001331 11330 popr #^m 00001333 11331 bsbw pors 00001336 11332 ret JTDRIVER ;skeleton driver implementing u 2-DEC-1994 10:13:13 AMAC V2.1-13-2671 Page 69 V01H Our FDT Filter Routines 2-DEC-1994 10:12:45 [EVERHART.JT]JTDRIVER_S2.MAR;120 00001337 11333 mfycmn: 00001337 11334 ; here we can modify request fields in the FIB the user supplies to reduce 00001337 11335 ; fragmentation...e.g. set fib$l_exsz bigger or set fib$m_alconb bit 00001337 11336 ; in fib$w_exctl IFF fib$m_alcon is not set & set fib$m_aldef. 00001337 11337 ; 00001337 11338 pushl r0 ?01F 00001339 11339 .if ndf,evax ?01F 00001339 11340 movl p1(ap),r0 ;get fib ?01T 00001339 11341 .iff ?01T 00001339 11342 movl irp$l_qio_p1(r3),r0 ?01T 0000133D 11343 .endc 00001344 11344 ifnord #4,4(r0),mspcj X02/007 ?03T 0000133D PROBER #0,#4,4(r0) X02/008 ?03T 00001342 BEQL mspcj 00001344 11345 movl 4(r0),r0 ;...from descriptor 0000134F 11346 ifnord #4,fib$w_exctl(r0),mspcj X02/007 ?03T 00001348 PROBER #0,#4,fib$w_exctl(r0) X02/008 ?03T 0000134D BEQL mspcj 0000134F 11347 bitw #fib$m_extend,fib$w_exctl(r0) ;extending at all? 0000135A 11348 beqlw mspc ;if no extend, leave fib alone X01/001 00001355 bneq 30069$ X01/002 00001357 brw mspc X01/003 0000135A 30069$: 0000135A 11349 ; Because contiguous best try allocation flushes the entire extend cache, 0000135A 11350 ; it can cause a tremendous performance hit. Therefore allow it to be 0000135A 11351 ; separately switched so that the benefits of longer extents can be had 0000135A 11352 ; if desired without forcing this flushing every time a file is extended. 0000135A 11353 bitl i^#32,ucb$l_ctlflgs(r5) ;separate control for setting contig best tr 0000135A 11353 y 00001363 11354 beql 1$ 00001365 11355 ; leave contig and contig-best-try alone 00001365 11356 bitw #,fib$w_exctl(r0) ;contig alloc? 00001369 11357 bneq 1$ ;if contig leave it alone 0000136B 11358 ; allow this on every nth extend. 0000136B 11359 ; This will allow periodic flushes of the extent cache but will let 0000136B 11360 ; it not be made totally useless. By flushing the extent cache periodically 0000136B 11361 ; we can try to reduce the fragmentation it induces. 0000136B 11362 ; if bit 16384 is not set, do not set aldef. 0000136B 11363 bitl i^#16384,ucb$l_ctlflgs(r5) ;allow aldef? 00001374 11364 beql 704$ 00001376 11365 bisw #,fib$w_exctl(r0) ;set to use vol default if 0000137A 11366 704$: ;bigger than program's 0000137A 11367 decl ucb$l_cbtctr(r5) ;count down 0000137E 11368 bgtr 1$ ;and if >0 don't set cbt yet 00001380 11369 movl ucb$l_cbtini(r5),ucb$l_cbtctr(r5) ;else reset counter 00001387 11370 bisw #,fib$w_exctl(r0) ;else turn on contig best 0000138B 11371 ;try and turn on use of 0000138B 11372 ;system default extension if 0000138B 11373 ;larger than program default 0000138B 11374 1$: 0000138B 11375 ; One can add code to check file size and bump extension by more than default if 0000138B 11376 ; it's big (for example, extend by 10% of its' size, not by a few blocks at a time). 0000138B 11377 pushr #^m 0000138F 11378 bitw #,fib$w_exctl(r0) ;contig alloc? 00001398 11379 bneqw 222$ ;leave size alone for contig alloc X01/001 00001393 beql 30070$ X01/002 00001395 brw 222$ JTDRIVER ;skeleton driver implementing u 2-DEC-1994 10:13:13 AMAC V2.1-13-2671 Page 70 V01H Our FDT Filter Routines 2-DEC-1994 10:12:45 [EVERHART.JT]JTDRIVER_S2.MAR;120 X01/003 00001398 30070$: 00001398 11380 movl ccb$l_wind(r6),r7 ;get window block 0000139C 11381 bgeq 222$ ;guard 0000139E 11382 movl wcb$l_fcb(r7),r8 ;and file control blkock 000013A2 11383 bgeq 222$ ;guard 000013A4 11384 movl fcb$l_filesize(r8),r6 ;get filesize 000013A8 11385 beql 222$ 000013AA 11386 ; It is suggested to divide by acp$gb_window instead of 10... 000013AA 11387 ; this is the acp_window sysgen param (default 7), the number of retrieval pointers 000013AA 11388 ; present per window by default. This has no direct relation to size, but one must 000013AA 11389 ; expect at least one retrieval pointer needs to change. In the default situation 000013AA 11390 ; say 1/4th of file size can be used. 000013AA 11391 ; 000013AA 11392 ; The fraction starts at 1/4, but can be anywhere from 1/1 to 1/1000 000013AA 11393 divl2 ucb$l_frac(r5),r6 ;get 1/4 of current size or so 000013AF 11394 incl r6 ;plus one...for good luck 000013B1 11395 ;fncymod=1 ;chop this if desired 000013B1 11396 ; .if df,fncymd 000013B1 11397 cmpl r6,ucb$l_maxxt(r5) ;extending over max (nominally 120000) 000013B6 11398 bleq 1222$ 000013B8 11399 movl ucb$l_maxxt(r5),r6 ;clamp to max what we're forcing 000013BD 11400 1222$: 000013BD 11401 ; .endc 000013BD 11402 cmpl r6,ucb$l_minxt(r5) ;if less than 10 leave alone too 000013C2 11403 bgeq 1223$ 000013C4 11404 movl ucb$l_minxt(r5),r6 ;at least grab this minimum 000013C9 11405 1223$: 000013C9 11406 ; .if df,fncymd 000013C9 11407 ; never try to grab over1/8 of total free space. 000013C9 11408 movl ucb$l_backlk(r5),r8 ;get host ucb (set just above) 000013CE 11409 bgeq 222$ ;(better be there) 000013D0 11410 movl ucb$l_vcb(r8),r8 ;point at vcb 000013D4 11411 bgeq 222$ 000013D6 11412 movl vcb$l_free(r8),r8 ;no. blks free 000013DA 11413 ashl #-3,r8,r8 ;free space /8 000013DF 11414 cmpl r6,r8 ;extent over freespc/8? 000013E2 11415 ; bgtr 222$ ;if so don't push it here 000013E2 11416 bleq 3223$ ;if not all still ok 000013E4 11417 movl r8,r6 ;else clamp to free/8 000013E7 11418 3223$: 000013E7 11419 ; .endc 000013E7 11420 cmpl r6,fib$l_exsz(r0) ;make sure we're increasing size 000013EB 11421 bleq 222$ ;if less than user wants, leave alone 000013ED 11422 000013ED 11423 ; if 4096 bit is clear, allow size ctl always. Otherwise only if aldef set. 000013ED 11424 bitl i^#4096,ucb$l_ctlflgs(r5) 000013F6 11425 beql 2222$ 000013F8 11426 bitw #,fib$w_exctl(r0) ;set to use vol default if 000013FC 11427 beql 222$ ;if aldef NOT set, leave size alone. 000013FE 11428 2222$: 000013FE 11429 movl r6,fib$l_exsz(r0) ;fill in as new extend size 00001402 11430 222$: 00001402 11431 popr #^m 00001406 11432 ; fall thru to space control 00001406 11433 mspc: 00001406 11434 ; on entry here r0 has user FIB address. 00001406 11435 bitl i^#512,ucb$l_ctlflgs(r5) ;doing space control? JTDRIVER ;skeleton driver implementing u 2-DEC-1994 10:13:13 AMAC V2.1-13-2671 Page 71 V01H Our FDT Filter Routines 2-DEC-1994 10:12:45 [EVERHART.JT]JTDRIVER_S2.MAR;120 00001414 11436 beqlw 800$ ;guard against unwanted calls X01/001 0000140F bneq 30071$ X01/002 00001411 brw 800$ X01/003 00001414 30071$: 00001414 11437 bitw #fib$m_extend,fib$w_exctl(r0) ;extending? 0000141F 11438 beqlw 800$ ;if not no work here X01/001 0000141A bneq 30072$ X01/002 0000141C brw 800$ X01/003 0000141F 30072$: 0000141F 11439 ; Now send msg to space daemon and await return via skast 0000141F 11440 ; if user request will exhaust disk space but yet is less than 1/8 0000141F 11441 ; of disk size. (Some requests are just too darn hard to handle; if 0000141F 11442 ; the request is for over 1/8 of disk size, we probably can't clean 0000141F 11443 ; off enough to fix it anyway. 0000141F 11444 ; ucb$l_exdmn & ucb$l_exmbx will be fields we use. 0000141F 11445 pushr #^m 00001423 11446 ; 00001423 11447 ; Note: in this area we leave r3, r4, r5, r6, r7, and r8 pretty 00001423 11448 ; much alone since FDT processing uses those; r5 can be JT or target 00001423 11449 ; UCB, but the others get left intact so we can save & restore the i/o 00001423 11450 ; properly. 00001423 11451 movl ucb$l_backlk(r5),r10 00001428 11452 bgeq 850$ ;(better be there) 0000142A 11453 movl r10,r9 ;keep ucb around for size chk 0000142D 11454 movl ucb$l_vcb(r10),r10 ;point at vcb 00001431 11455 bgeq 850$ 00001433 11456 movl vcb$l_free(r10),r10 ;no. blks free 00001437 11457 cmpl fib$l_exsz(r0),r10 ;enough room there? 0000143B 11458 blssu 850$ ;if lss then all OK 0000143D 11459 movl ucb$l_maxblock(r9),r9 ;disk size 00001442 11460 ashl #-3,r9,r9 ;divide by 8 00001447 11461 cmpl r10,r9 ;size req. > dsksize/8 ? 0000144A 11462 bgeq 850$ ;if so, cannot help. Let it fail. 0000144C 11463 ; Looks like we CAN help, if there's someone out there we can yell for. 0000144C 11464 ; Check this. 0000144C 11465 movl r0,r9 ;save user FIB address 0000144F 11466 ; (r0 is too volatile) 0000144F 11467 movl ucb$l_exmbx(r5),r10 ;get extend mbx ucb if any 00001454 11468 bgeq 850$ ;if none, can'thelp. 00001456 11469 bitl #ucb$m_online,ucb$l_sts(r10) ;online? 0000145B 11470 beql 850$ ;if not no soap ?01T 0000145D 11471 .if df,evax ?01T 0000145D 11472 tstl ucb$l_refc(r10) ;anyone listening? ?01F 00001460 11473 .iff ?01F 00001460 11474 tstw ucb$w_refc(r10) ;anyone listening? ?01F 00001460 11475 .endc 00001460 11476 beql 850$ ;if no, no dmn. 00001462 11477 tstl ucb$l_orb(r10) ;owner exist? 00001465 11478 bgeq 850$ ;if geq no, skip. 00001467 11479 ; check pid now for expid 00001467 11480 pushr #^m 0000146B 11481 movl g^sch$gl_maxpix,r7 ;max proc index 00001472 11482 100$: movl g^sch$gl_pcbvec,r6 ;pcb vector 00001479 11483 movl (r6)[r7],r8 ;get a pcb 0000147D 11484 tstl r8 ;got one? 0000147F 11485 bgeq 101$ ;if geq no 00001481 11486 cmpl ucb$l_exdmn(r5),pcb$l_pid(r8) ;this our pid? JTDRIVER ;skeleton driver implementing u 2-DEC-1994 10:13:13 AMAC V2.1-13-2671 Page 72 V01H Our FDT Filter Routines 2-DEC-1994 10:12:45 [EVERHART.JT]JTDRIVER_S2.MAR;120 00001488 11487 beql 102$ ;if eql yes, all well 0000148A 11488 101$: sobgtr r7,100$ ;check 'em all 0000148D 11489 clrl ucb$l_exdmn(r5) ;clr dmn pid if it isn'tthere now 00001491 11490 102$: popr #^m 00001495 11491 tstl ucb$l_exdmn(r5) ;is thedaemon around? 00001499 11492 beql 850$ ;if not skip out 0000149B 11493 ; Looks like a msg can besent, so do so. For clarity do in a sub. 0000149B 11494 jsb sndexmsg ;send extend message 000014A1 11495 850$: popr #^m 000014A5 11496 800$: 000014A5 11497 popl r0 000014A8 11498 popr #^m 000014AA 11499 movl #1,r0 000014AD 11500 bsbw pors 000014B0 11501 ret 000014B1 11502 ; sndexmsg - called with r5=JT ucb, r9=user FIB address 000014B1 11503 ; Send a message to free space to the extend daemon via ucb$l_exmbx 000014B1 11504 ; passing device and size needed. 000014B1 11505 sndexmsg: .jsb_entry 000014B1 11506 ; "can" the IRP status so it can continue, using a pool buffer. 000014B1 11507 movl #112,r1 ;get some room 000014B8 11508 jsb g^exe$alonpagvar ;via vms routines 000014BE 11509 blbs r0,1$ 000014C1 11510 rsb ;just return if out of space 000014C2 11511 1$: 000014CE 11512 zapz (r2),#112 ;zero area X01/001 000014C2 pushr #^m ;save regs from movc5 X01/002 000014C4 movc5 #0,(r2),#0,#112,(r2) X01/003 000014CC popr #^m ;save regs from movc5 000014CE 11513 movl r2,r11 ;save msg blk address 000014D1 11514 pushr #^m 000014D5 11515 movl r11,(r2) ;store address of blk in msg block 000014D8 11516 ; Note that R3 to R8 are unaltered from their original state 000014D8 11517 ; here. We'll save these, then restore them after the AST 000014D8 11518 ; and continue the thread. During this thread, we send a message 000014D8 11519 ; to the daemon (with msgblk and address of sndexast and dvcname/unit 000014D8 11520 ; and size needed) and then enter a wait loop awaiting a flag being 000014D8 11521 ; set (wait for efn 31 in the loop). The AST will just set the 000014D8 11522 ; flag and let things continue; it should get the msg blk as 000014D8 11523 ; a parameter of the AST. 000014D8 11524 movl ucb$l_backlk(r5),r0 ;get original dvc ucb 000014DD 11525 movl ucb$l_ddb(r0),r1 ;get DDB (name is there) 000014E1 11526 movab ddb$t_name(r1),r1 ;point at dvc name 000014E5 11527 movl #2,4(r11) ;flag this an extend call 000014E9 11528 movl (r1)+,8(r11) ;copy dvc name 000014ED 11529 movl (r1)+,12(r11) 000014F1 11530 movl (r1)+,16(r11) 000014F5 11531 movl (r1)+,20(r11) ;counted name 000014F9 11532 movzwl ucb$w_unit(r0),24(r11) ;unit no. 000014FE 11533 ; Save the regs in case the daemon needs them. 000014FE 11534 movl r3,28(r11) ;irp 00001502 11535 movl g^ctl$gl_pcb,r4 ;be sure pcb is in r4 00001509 11536 movl r4,32(r11) 0000150D 11537 movl r0,36(r11) ;orig. r5 = orig. dvc UCB 00001511 11538 movl r6,40(r11) ;ccb addr 00001515 11539 movl r7,44(r11) 00001519 11540 movl r8,48(r11) ;copy r7, r8 JTDRIVER ;skeleton driver implementing u 2-DEC-1994 10:13:13 AMAC V2.1-13-2671 Page 73 V01H Our FDT Filter Routines 2-DEC-1994 10:12:45 [EVERHART.JT]JTDRIVER_S2.MAR;120 0000151D 11541 movl r9,52(r11) ;user FIB 00001521 11542 movl fib$l_exsz(r9),56(r11) ;size needed 00001526 11543 movl fib$w_fid(r9),60(r11) ;copy file id 0000152B 11544 movl fib$w_fid+4(r9),64(r11) 00001530 11545 movl fib$l_acctl(r9),68(r11) ;how open 00001535 11546 movab sndexast,72(r11) ;where to send skast back to 0000153D 11547 movl g^ctl$gl_pcb,76(r11) ;send pcb 00001545 11548 movl g^ctl$gl_pcb,r4 0000154C 11549 movl pcb$l_pid(r4),80(r11) 00001552 11550 movl pcb$l_epid(r4),84(r11) 00001558 11551 movl ucb$l_ddb(r0),r1 ;get DDB (name is there) 0000155C 11552 movl ddb$l_allocls(r1),88(r11) ;save alloc class 00001561 11553 movl ddb$l_sb(r1),r1 ;get sys block if any 00001565 11554 bgeq 833$ ;if none, omit name grab 00001567 11555 movl sb$t_nodename(r1),92(r11) ;else save nodename 0000156C 11556 movl sb$t_nodename+4(r1),96(r11) 00001571 11557 833$: 00001571 11558 ; Reserve 4(r11) as wait flag. 00001571 11559 ; emit a message now to the daemon and wait for him to set us 00001571 11560 ; runnable again (setting ipl0 meanwhile to besure he can!) 00001571 11561 pushr #^m 00001573 11562 movl #100,r3 ;size of msg 0000157A 11563 movl r5,r10 ;save jtdriver ucb 0000157D 11564 movl ucb$l_exmbx(r5),r5 ;mailbox daemon ucb 00001582 11565 movl r11,r4 ;addr of msg to send 00001585 11566 jsb g^exe$wrtmailbox ;send it to the daemon 0000158B 11567 popr #^m 0000158D 11568 blbc r0,40$ ;br to dealloc space if we fail 00001590 11569 movl #pcb$m_nodelet,r9 ;set what bit to alter (if any) 00001597 11570 movl g^ctl$gl_pcb,r4 ;get current pcb address 0000159E 11571 bitl #,pcb$l_sts(r4) ;is delete inhibited now? 000015A7 11572 beql 67$ ;if not set now, we may alter 000015A9 11573 clrl r9 ;else leave alone 000015AB 11574 67$: bisl r9,pcb$l_sts(r4) ;inhibit process delete 000015B0 11575 ; across ipl0 interval 000015B0 11576 clrl 4(r11) ;ensure we do synch... 000015B3 11577 ; Wait for the AST to fire here. 000015B6 11578 setipl ipl=#0,environ=UNIPROCESSOR X01/005 ?01T 000015B3 MTPR #0,S^#PR$_IPL 000015B6 11579 ; Now we can issue a wait that a skast can interrupt. 000015B6 11580 65$: tstl 4(r11) ;done the wait? 000015B9 11581 bneq 50$ 000015BB 11582 pushl #31 000015BD 11583 calls #1,g^sys$clref 000015C4 11584 tstl 4(r11) 000015C7 11585 bneq 50$ 000015C9 11586 pushl #31 ;wait for ef 31 000015CB 11587 calls #1,g^sys$waitfr 000015D2 11588 brb 65$ 000015D4 11589 50$: 000015D4 11590 ; now back to IPL2 to ensure no AST interruptions for what is left. 000015D7 11591 setipl ipl=#2,environ=UNIPROCESSOR X01/005 ?01T 000015D4 MTPR #2,S^#PR$_IPL 000015D7 11592 bicl r9,pcb$l_sts(r4) ;enable delete if we were inhibiting it 000015DC 11593 40$: movl r11,r0 000015DF 11594 movl #112,r1 ;size 000015E6 11595 jsb g^exe$deanonpgdsiz ;free the msg block JTDRIVER ;skeleton driver implementing u 2-DEC-1994 10:13:13 AMAC V2.1-13-2671 Page 74 V01H Our FDT Filter Routines 2-DEC-1994 10:12:45 [EVERHART.JT]JTDRIVER_S2.MAR;120 000015EC 11596 popr #^m 000015F0 11597 ; Once back here, all registers are OK and the FDT loop 000015F0 11598 ; should just continue where it left off. 000015F0 11599 rsb 000015F1 11600 ; sndexast - 000015F1 11601 ; return control from extend daemon to let the i/o continue. 000015F1 11602 ; AST arg is scratch block address 000015F1 11603 sndexast: .jsb_entry 000015F1 11604 movl acb$l_astprm(r5),r11 ;msg blk address 000015F5 11605 cmpl #4096,4(r11) ;if special returncode, leave it. 000015FD 11606 beql 1$ 000015FF 11607 cmpl #3,4(r11) ;leave fake-success alone too 00001603 11608 beql 1$ 00001605 11609 movl #1,4(r11) ;let the wait end 00001609 11610 1$: pushl #31 ; set ef 31 0000160B 11611 calls #1,g^sys$setef ;set the ef 00001612 11612 movl r5,r0 ;point at acb 00001615 11613 movl #,r1 ;size 00001618 11614 jsb g^exe$deanonpgdsiz ;deallocate the acb 0000161E 11615 movl #1,r0 ;say all well 00001621 11616 rsb 00001622 11617 ; snddelmsg - called with r5=JT ucb, r9=user FIB address 00001622 11618 ; Send a message of file delete to the delete daemon via ucb$l_delmbx 00001622 11619 ; passing device name & fileinfo 00001622 11620 ; On entry if R11=1, chk security too. 00001622 11621 snddelmsg: .jsb_entry 00001622 11622 ; "can" the IRP status so it can continue, using a pool buffer. ?01T 00001622 11623 .if ndf,hsmonly ?01T 00001622 11624 ; if bit 64 set, and if r11=0, send no message, so msg goes to daemon ?01T 00001622 11625 ; only for knl tagged files if bit 64 set. ?01T 00001622 11626 bitl #64,ucb$l_ctlflgs(r5) ?01T 0000162B 11627 beql 100$ ?01T 0000162D 11628 tstl r11 ;this file tagged for security test? ?01T 0000162F 11629 bneq 100$ ;yes, do it ?01T 00001631 11630 rsb ;no, leave ?01T 00001632 11631 100$: ?01T 00001632 11632 .endc 00001632 11633 movl #116,r1 ;get some room 00001639 11634 jsb g^exe$alonpagvar ;via vms routines 0000163F 11635 blbs r0,1$ 00001642 11636 rsb ;just return if out of space 00001643 11637 1$: 0000164F 11638 zapz (r2),#116 ;zero area X01/001 00001643 pushr #^m ;save regs from movc5 X01/002 00001645 movc5 #0,(r2),#0,#116,(r2) X01/003 0000164D popr #^m ;save regs from movc5 0000164F 11639 movl r11,112(r2) ;save flag of security test 00001653 11640 movl r2,r11 ;save msg blk address 00001656 11641 pushr #^m 0000165A 11642 movl r11,(r2) ;store address of blk in msg block 0000165D 11643 ; Note that R3 to R8 are unaltered from their original state 0000165D 11644 ; here. We'll save these, then restore them after the AST 0000165D 11645 ; and continue the thread. During this thread, we send a message 0000165D 11646 ; to the daemon (with msgblk and address of sndexast and dvcname/unit 0000165D 11647 ; and size needed) and then enter a wait loop awaiting a flag being 0000165D 11648 ; set (wait for efn 31 in the loop). The AST will just set the 0000165D 11649 ; flag and let things continue; it should get the msg blk as JTDRIVER ;skeleton driver implementing u 2-DEC-1994 10:13:13 AMAC V2.1-13-2671 Page 75 V01H Our FDT Filter Routines 2-DEC-1994 10:12:45 [EVERHART.JT]JTDRIVER_S2.MAR;120 0000165D 11650 ; a parameter of the AST. 0000165D 11651 movl ucb$l_backlk(r5),r0 ;get original dvc ucb 00001662 11652 movl ucb$l_ddb(r0),r1 ;get DDB (name is there) 00001666 11653 movab ddb$t_name(r1),r1 ;point at dvc name 0000166A 11654 movl #3,4(r11) ;flag a delete call 0000166E 11655 movl (r1)+,8(r11) ;copy dvc name 00001672 11656 movl (r1)+,12(r11) 00001676 11657 movl (r1)+,16(r11) 0000167A 11658 movl (r1)+,20(r11) ;counted name 0000167E 11659 movzwl ucb$w_unit(r0),24(r11) ;unit no. 00001683 11660 ; Save the regs in case the daemon needs them. 00001683 11661 movl r3,28(r11) ;irp 00001687 11662 movl g^ctl$gl_pcb,r4 ;be sure pcb is in r4 0000168E 11663 movl r4,32(r11) 00001692 11664 movl r0,36(r11) ;orig. r5 = orig. dvc UCB 00001696 11665 movl r6,40(r11) ;ccb addr 0000169A 11666 movl r7,44(r11) 0000169E 11667 movl r8,48(r11) ;copy r7, r8 000016A2 11668 movl r9,52(r11) ;user FIB 000016A6 11669 movl fib$l_exsz(r9),56(r11) ;size needed 000016AB 11670 movl fib$w_fid(r9),60(r11) ;copy file id 000016B0 11671 movl fib$w_fid+4(r9),64(r11) 000016B5 11672 movl fib$l_acctl(r9),68(r11) ;how open 000016BA 11673 ; Let the extend AST code serve here too. 000016BA 11674 movab sndexast,72(r11) ;where to send skast back to 000016C0 11675 movl fib$w_did(r9),76(r11) ;send did too 1....... %AMAC-I-MEMREFNOT, (1) memory reference not naturally aligned in routine SNDDELMSG 000016C5 11676 movzwl fib$w_did+4(r9),80(r11) 000016CA 11677 movl g^ctl$gl_pcb,84(r11) ;send pcb 000016D2 11678 movl g^ctl$gl_pcb,r4 000016D9 11679 movl pcb$l_pid(r4),88(r11) 000016DF 11680 movl pcb$l_epid(r4),92(r11) 000016E5 11681 movl ucb$l_ddb(r0),r1 ;get DDB (name is there) 000016E9 11682 movl ddb$l_allocls(r1),96(r11) ;save alloc class 000016EE 11683 movl ddb$l_sb(r1),r1 ;get sys block if any 000016F2 11684 bgeq 833$ ;if none, omit name grab 000016F4 11685 movl sb$t_nodename(r1),100(r11) ;else save nodename 000016F9 11686 movl sb$t_nodename+4(r1),104(r11) 000016FE 11687 833$: 000016FE 11688 ; Reserve 4(r11) as wait flag. 000016FE 11689 ; emit a message now to the daemon and wait for him to set us 000016FE 11690 ; runnable again (setting ipl0 meanwhile to besure he can!) 000016FE 11691 pushr #^m 00001700 11692 movl #116,r3 ;size of msg 00001707 11693 movl r5,r10 ;save jtdriver ucb 0000170A 11694 movl ucb$l_delmbx(r5),r5 ;mailbox daemon ucb 0000170F 11695 movl r11,r4 ;addr of msg to send 00001712 11696 jsb g^exe$wrtmailbox ;send it to the daemon 00001718 11697 popr #^m 0000171A 11698 blbc r0,40$ ;br to dealloc space if we fail 0000171D 11699 movl #pcb$m_nodelet,r9 ;set what bit to alter (if any) 00001724 11700 movl g^ctl$gl_pcb,r4 ;get current pcb address 0000172B 11701 bitl #,pcb$l_sts(r4) ;is delete inhibited now? 00001734 11702 beql 67$ ;if not set now, we may alter 00001736 11703 clrl r9 ;else leave alone JTDRIVER ;skeleton driver implementing u 2-DEC-1994 10:13:13 AMAC V2.1-13-2671 Page 76 V01H Our FDT Filter Routines 2-DEC-1994 10:12:45 [EVERHART.JT]JTDRIVER_S2.MAR;120 00001738 11704 67$: bisl r9,pcb$l_sts(r4) ;inhibit process delete 0000173D 11705 ; across ipl0 interval 0000173D 11706 clrl 4(r11) ; zero our wait cell so we do synch 00001740 11707 ; Wait for the AST to fire here. 00001743 11708 setipl ipl=#0,environ=UNIPROCESSOR X01/005 ?01T 00001740 MTPR #0,S^#PR$_IPL 00001743 11709 ; Now we can issue a wait that a skast can interrupt. 00001743 11710 65$: 00001743 11711 tstl 4(r11) ;done the wait? 00001746 11712 bneq 50$ 00001748 11713 pushl #31 0000174A 11714 calls #1,g^sys$clref ;clear efn 31 00001751 11715 tstl 4(r11) 00001754 11716 bneq 50$ ;be sure wait still pending 00001756 11717 pushl #31 ;wait for ef 31 00001758 11718 calls #1,g^sys$waitfr 0000175F 11719 brb 65$ 00001761 11720 50$: 00001761 11721 ; now back to IPL2 to ensure no AST interruptions for what is left. 00001764 11722 setipl ipl=#2,environ=UNIPROCESSOR X01/005 ?01T 00001761 MTPR #2,S^#PR$_IPL 00001764 11723 movl g^ctl$gl_pcb,r4 ;get current pcb address 0000176B 11724 bicl r9,pcb$l_sts(r4) ;enable delete if we were inhibiting it 00001770 11725 movl 4(r11),r0 ;if we got to daemon, flag ok 00001774 11726 brb 41$ 00001776 11727 40$: movl #1,r0 ;let it go if mbx err 00001779 11728 41$: pushl r0 0000177B 11729 movl r11,r0 0000177E 11730 movl #116,r1 ;size 00001785 11731 jsb g^exe$deanonpgdsiz ;free the msg block 0000178B 11732 popl r0 0000178E 11733 popr #^m 00001792 11734 ; Once back here, all registers are OK and the FDT loop 00001792 11735 ; should just continue where it left off. 00001792 11736 rsb 000017A5 11737 mfymount: $driver_fdt_entry 00000000 X02/075 ?02T 00001793 .iif identical false, , _MTU_DIR_ARG_3 = 0 X01/131 ?01T 00001795 MOVL FDTARG$_IRP(AP),R3 X01/132 ?01T 00001799 MOVL FDTARG$_PCB(AP),R4 X01/133 ?01T 0000179D MOVL FDTARG$_UCB(AP),R5 X01/134 ?01T 000017A1 MOVL FDTARG$_CCB(AP),R6 000017A5 11738 ; stick processing in here if doing anything at io$_mount i/o time. 000017A5 11739 ; for here, do nothing. 000017A5 11740 movl #1,r0 000017A8 11741 bsbw pors 000017AB 11742 ret 000017AC 11743 ;++ 000017AC 11744 ; 000017AC 11745 ; JT_format - bash host disk tables to point at ours. 000017AC 11746 ; 000017AC 11747 ; With no function modifiers, this routine takes as arguments the name 000017AC 11748 ; of the host disk (the real disk where the virtual disk will exist), 000017AC 11749 ; the size of the virtual disk, and the LBN where the virtual disk 000017AC 11750 ; will start. After these are set up, the device is put online and is 000017AC 11751 ; software enabled. 000017AC 11752 ; 000017AC 11753 ; This routine does virtually no checking, so the parameters must be JTDRIVER ;skeleton driver implementing u 2-DEC-1994 10:13:13 AMAC V2.1-13-2671 Page 77 V01H Our FDT Filter Routines 2-DEC-1994 10:12:45 [EVERHART.JT]JTDRIVER_S2.MAR;120 000017AC 11754 ; correct. 000017AC 11755 ; 000017AC 11756 ; Inputs: 000017AC 11757 ; p1 - pointer to buffer. The buffer has the following format: 000017AC 11758 ; longword 0 - (was hlbn) - flag for function. 1 to bash 000017AC 11759 ; the targetted disk, 2 to unbash it, else 000017AC 11760 ; illegal. 000017AC 11761 ; longword 1 - virtual disk length, the number of blocks in 000017AC 11762 ; the virtual disk. If negative disables 000017AC 11763 ; FDT chaining; otherwise ignored. 000017AC 11764 ; longword 2 through the end of the buffer, the name of the 000017AC 11765 ; virtual disk. This buffer must be blank 000017AC 11766 ; padded if padding is necessary 000017AC 11767 ; 000017AC 11768 ; 000017AC 11769 ; p2 - size of the above buffer 000017AC 11770 ;-- 000017BE 11771 JT_format: $driver_fdt_entry 00000000 X02/075 ?02T 000017AC .iif identical false, , _MTU_DIR_ARG_3 = 0 X01/131 ?01T 000017AE MOVL FDTARG$_IRP(AP),R3 X01/132 ?01T 000017B2 MOVL FDTARG$_PCB(AP),R4 X01/133 ?01T 000017B6 MOVL FDTARG$_UCB(AP),R5 X01/134 ?01T 000017BA MOVL FDTARG$_CCB(AP),R6 ?01T 000017BE 11772 .if df,msetrp ?01T 000017BE 11773 ; mousetrap trace cells ?01T 000017BE 11774 movl irp$l_func(r3),mtp$fmt(r5) ;save fcn code if we get here ?01T 000017C4 11775 .endc ?01F 000017C4 11776 .if ndf,evax ?01F 000017C4 11777 bicw3 #io$m_fcode,irp$w_func(r3),r0 ;mask off function code ?01T 000017C4 11778 .iff ?01T 000017C4 11779 bicw3 #io$m_fcode,irp$l_func(r3),r0 ;mask off function code ?01T 000017C9 11780 .endc 000017C9 11781 bneq 20$ ;branch if modifiers, special 000017CB 11782 ;thus, normal io$_format will do nothing. 000017CB 11783 brb 10$ 000017CD 11784 ; see if we even get here... 000017CD 11785 ; bsbw pors ;regular processing 000017CD 11786 ; ret 000017CD 11787 100$: 000017CD 11788 popr #^m 000017D1 11789 10$: 000017D1 11790 movzwl #SS$_BADPARAM,r0 ;illegal parameter 000017D4 11791 clrl r1 000017E6 11792 call_abortio X01/007 000017D6 PUSHL R0 X01/008 000017D8 PUSHL R5 X01/009 000017DA PUSHL R4 X01/010 000017DC PUSHL R3 X01/011 000017DE CALLS #4,G^EXE_STD$ABORTIO X01/014 ?01T 000017E5 RET 000017E6 11793 ; ret 000017E6 11794 ; jmp g^exe$abortio 000017E6 11795 20$: ?01F 000017E6 11796 .if ndf,evax ?01F 000017E6 11797 movl p1(ap),r0 ;buffer address ?01F 000017E6 11798 movl p2(ap),r1 ;length of buffer ?01T 000017E6 11799 .iff JTDRIVER ;skeleton driver implementing u 2-DEC-1994 10:13:13 AMAC V2.1-13-2671 Page 78 V01H Our FDT Filter Routines 2-DEC-1994 10:12:45 [EVERHART.JT]JTDRIVER_S2.MAR;120 ?01T 000017E6 11800 movl irp$l_qio_p1(r3),r0 ;buff address ?01T 000017EA 11801 movl irp$l_qio_p2(r3),r1 ;buff length ?01T 000017EE 11802 .endc 00001820 11824 call_writechk X01/002 000017EE PUSHL R0 X01/003 000017F0 PUSHL R1 X01/004 000017F2 PUSHL R0 X01/005 000017F4 PUSHL R5 X01/006 000017F6 PUSHL R4 X01/007 000017F8 PUSHL R3 X01/008 000017FA CALLS #5,G^EXE_STD$WRITECHK X01/003 00001801 BLBS R0,30073$ X01/004 00001804 ADDL #4,SP X02/012 00001807 PUSHL R0 X02/013 00001809 PUSHL R5 X02/014 0000180B PUSHL R4 X02/015 0000180D PUSHL R3 X02/016 0000180F CALLS #4,G^EXE_STD$ABORTIO X02/019 ?01T 00001816 RET X01/023 00001817 30073$: MOVL IRP$L_BCNT(R3),R1 X01/024 0000181B CLRL R2 X01/025 0000181D POPL R0 00001820 11825 ; jsb g^exe$writechk ;read access? doesn't return on error 00001820 11826 ; clrl irp$l_bcnt(r3) ;paranoia, don't need to do this... 00001820 11827 pushr #^m ?01F 00001824 11828 .if ndf,evax ?01F 00001824 11829 movl p1(ap),r0 ;get buffer address ?01T 00001824 11830 .iff ?01T 00001824 11831 movl irp$l_qio_p1(r3),r0 ?01T 00001828 11832 .endc 00001828 11833 movl (r0)+,r7 ;get option code 0000182B 11834 bleq 100$ ;0 or negative illegal 0000182D 11835 cmpl r7,#2 ;3 and up illegal too 00001830 11836 bgtr 100$ 00001832 11837 incl chnflg 00001838 11838 movl (r0)+,r6 ;size of virtual disk (ignored) 0000183B 11839 bleq 70$ 0000183D 11840 clrl chnflg ;if 0 or neg. size don't chain... 00001843 11841 70$: 00001843 11842 movab (r0),- ;name of "real" disk 00001843 11843 ucb$l_JT_host_descr+4(r5) ?01F 00001848 11844 .if ndf,evax ?01F 00001848 11845 subl3 #8,p2(ap),- ;set length of name in descriptor ?01F 00001848 11846 ucb$l_JT_host_descr(r5) ?01T 00001848 11847 .iff ?01T 00001848 11848 subl3 #8,irp$l_qio_p2(r3),- ?01T 00001848 11849 ucb$l_JT_host_descr(r5) ?01T 0000184F 11850 .endc 0000184F 11851 bleq 100$ ;bad length 00001851 11852 movab ucb$l_JT_host_descr(r5),r1 ;descriptor for... 00001856 11853 jsb g^ioc$searchdev ;search for host device 0000185C 11854 blbs r0,30$ ;branch on success 0000185F 11855 ; fail the associate... 0000185F 11856 popr #^m 00001863 11857 movzwl #ss$_nosuchdev+2,r0 ;make an error, usually a warning 00001868 11858 clrl r1 0000187A 11859 call_abortio JTDRIVER ;skeleton driver implementing u 2-DEC-1994 10:13:13 AMAC V2.1-13-2671 Page 79 V01H Our FDT Filter Routines 2-DEC-1994 10:12:45 [EVERHART.JT]JTDRIVER_S2.MAR;120 X01/007 0000186A PUSHL R0 X01/008 0000186C PUSHL R5 X01/009 0000186E PUSHL R4 X01/010 00001870 PUSHL R3 X01/011 00001872 CALLS #4,G^EXE_STD$ABORTIO X01/014 ?01T 00001879 RET 0000187A 11860 ; ret 0000187A 11861 ; jmp g^exe$abortio ;exit with error 0000187A 11862 30$: ;found the device 0000187A 11863 ; r1 is target ucb address... 0000187A 11864 ; move it to r11 to be less volatile 0000187A 11865 movl r1,r11 0000187D 11866 cmpl r7,#1 ;bashing the target UCB? 00001880 11867 bneq 31$ 00001882 11868 jsb mung ;go mung target... 00001888 11869 brb 32$ 0000188A 11870 31$: 0000188A 11871 ; Be sure we unmung the correct disk or we can really screw up a system. 0000188A 11872 cmpl r11,ucb$l_vict(r5) ;undoing right disk? 0000188F 11873 bneq 32$ ;if not skip out, do nothing. 00001891 11874 jsb umung ;unmung target 00001897 11875 32$: 00001897 11876 ; bisw #ucb$m_valid,ucb$w_sts(r5) ;set volume valid 00001897 11877 ; bisw #ucb$m_online,ucb$w_sts(r5) ;set unit online 00001897 11878 ; movl ucb$l_irp(r5),r3 ;restore r3, neatness counts 00001897 11879 popr #^m 0000189B 11880 movzwl #ss$_normal,r0 ;success 000018B4 11881 call_finishioc do_ret=yes X01/002 0000189E CLRL R1 X02/011 000018A0 MOVL R0,IRP$L_IOST1(R3) X02/012 000018A4 MOVL R1,IRP$L_IOST2(R3) X02/014 000018A8 PUSHL R5 X02/015 000018AA PUSHL R3 X02/016 000018AC CALLS #2,G^EXE_STD$FINISHIO X02/019 ?01T 000018B3 RET 000018B4 11882 ; jmp g^exe$finishioc ;wrap things up. 000018B4 11883 mung: .jsb_entry 000018B4 11884 ; steal DDT from host. Assumes that the intercept UCB address 000018B4 11885 ; is in R5 (that is, the UCB in which we will place the DDT copy), 000018B4 11886 ; and that the UCB of the device whose DDT we are stealing is 000018B4 11887 ; pointed to by R11. All registers are preserved explicitly so that 000018B4 11888 ; surrounding code cannot be clobbered. R0 is returned as a status 000018B4 11889 ; code so that if it returns with low bit clear, it means something 000018B4 11890 ; went wrong so the bash did NOT occur. This generally means some other 000018B4 11891 ; code that does not follow this standard has grabbed the DDT already. 000018B4 11892 ; The following example assumes the code lives in a driver so the 000018B4 11893 ; unique ID field and magic number are set already. 000018B4 11894 tstl ucb$l_mungd(r5) ;already munged/not deassigned? 000018B8 11895 beql 6$ 000018BA 11896 rsb ;no dbl bash 000018BB 11897 6$: 000018BB 11898 pushr #^m 000018BF 11899 ; Acquire victim's fork lock to synchronize all this. 000018BF 11900 movl #ss$_normal,r0 ;assume success 000018C2 11901 forklock ucb$b_flck(r11),- 000018E6 11902 savipl=-(sp),preserve=YES X01/023 ?01T 000018C2 MFPR S^#PR$_IPL,-(sp) JTDRIVER ;skeleton driver implementing u 2-DEC-1994 10:13:13 AMAC V2.1-13-2671 Page 80 V01H Our FDT Filter Routines 2-DEC-1994 10:12:45 [EVERHART.JT]JTDRIVER_S2.MAR;120 X02/029 ?02T 000018C5 EVAX_STQ R0, -(SP) X01/035 ?02T 000018C8 MOVZBL ucb$b_flck(r11),R0 X01/048 000018CC BLBC SMP$GL_FLAGS,30075$ X01/050 000018D3 JSB G^SMP$ACQUIRE X01/051 000018D9 BRB 30076$ X01/052 000018DB 30075$: X02/058 ?01T 000018DB MTPR SMP$AL_IPLVEC[R0],S^#PR$_IPL X01/081 000018E3 30076$: X02/085 ?02T 000018E3 EVAX_LDQ R0, (SP)+ 000018E6 11903 ; find the current DDT address from the UCB (leaving the copy in 000018E6 11904 ; the DDB alone) 000018E6 11905 movl ucb$l_ddt(r11),r10 ;point at victim's DDB 000018EB 11906 ; fill in host ucb tbl (makes chnl handling faster) 000018EB 11907 movab jt_ucb,ucb$l_hucbs(r5) 000018F4 11908 movl ucb$l_hucbs(r5),r9 ;get ucb table 000018F9 11909 movzwl ucb$w_unit(r5),r0 ;get unit no. 000018FD 11910 moval (r9)[r0],r9 ;point into tbl 00001901 11911 movl r11,(r9) ;save target ucb addr in tbl 00001904 11912 ; see if this DDT is the same as the original 00001904 11913 movl ucb$l_ddb(r11),r9 ;the ddb$l_ddt is the original 00001908 11914 cmpl ddb$l_ddt(r9),r10 ;bashing driver the first time? 0000190C 11915 beql 1$ ;if eql yes 0000190E 11916 ; driver was bashed already. Check that the current basher followed the 0000190E 11917 ; standard. Then continue if it looks OK. 0000190E 11918 cmpl (r10),#p.magic 00001916 11919 ;does the magic pattern exist? 00001916 11920 ; if magic pattern is missing things are badly messed. 00001916 11921 beql 2$ ;if eql looks like all's well 00001918 11922 movl #2,r0 ;say things failed 0000191B 11923 brw 100$ ;(brb might work too) 0000191E 11924 2$: 0000191E 11925 ; set our new ddt address in the previous interceptor's slot 0000191E 11926 movab ucb$a_vicddt(r5),(r10) 00001924 11927 ;store next-DDT address relative 00001924 11928 ;to the original victim one 00001924 11929 1$: 00001924 11930 movl #1,ucb$l_mungd(r5) ;say we munged jt 00001929 11931 movl r10,ucb$l_prevddt(r5) ;set previous DDT address up 0000192E 11932 clrl ucb$l_intcddt(r5) ;clear intercepting DDT initially 00001932 11933 3$: 00001932 11934 pushl r5 00001934 11935 ; copy a little extra for good luck... 00001934 11936 movc3 #,(r10),ucb$a_vicddt(r5) ;copy the DDT 0000193C 11937 popl r5 ;get UCB pointer back (movc3 bashes it) 0000193F 11938 ; 0000193F 11939 ; Here make whatever mods to the DDT you need to. 0000193F 11940 ; 0000193F 11941 ; FOR EXAMPLE make the following mods to the FDT pointer 0000193F 11942 ; (These assume the standard proposed for FDT pointers) 0000193F 11943 movab ucb$a_vicddt(r5),r8 ;get a base register for the DDT 00001944 11944 movl r5,JT_functable+fdt_prev ;save old FDT ucb address 0000194B 11945 movl ddt$l_fdt(r10),ucb$l_oldfdt(r5) 00001951 11946 movl ucb$l_uniqid(r5),JT_functable+fdt_idnt ;save unique ID also 0000195A 11947 ; copy legal and buffered entry masks of original driver. 0000195A 11948 ; HOWEVER, set mask for format entry to be nonbuffered here since 0000195A 11949 ; we deal with it. 0000195A 11950 pushr #^m JTDRIVER ;skeleton driver implementing u 2-DEC-1994 10:13:13 AMAC V2.1-13-2671 Page 81 V01H Our FDT Filter Routines 2-DEC-1994 10:12:45 [EVERHART.JT]JTDRIVER_S2.MAR;120 0000195E 11951 movab ucb$l_myfdt(r5),r9 ;our function table dummy in UCB 00001963 11952 movl ddt$l_fdt(r10),r7 ;victim's FDT table 00001967 11953 ; We want all functions legal in the victim's FDT table to be legal 00001967 11954 ; here. 00001967 11955 pushr #^m ;preserve regs from movc 00001969 11956 movl #<68*4>,r0 ;byte count of a step 2 FDT 00001970 11957 movc3 r0,(r7),(r9) ;copy his FDT to ours 00001974 11958 popr #^m ;preserve regs from movc 00001976 11959 ; Now copy in our modify & back-to-original FDT cells. 00001976 11960 ; We will do this in our FDT table by having FDT definitions only 00001976 11961 ; for those functions in JTdriver that we service locally. Thus 00001976 11962 ; all entry cells for the rest will point in the JT FDT to 00001976 11963 ; exe$illiofunc. 00001976 11964 movab g^exe$illiofunc,r8 ;get the magic address 0000197D 11965 movab jt_functable,r10 ;r10 becomes JT FDT tbl 00001984 11966 addl2 #8,r10 ;point at functions 00001987 11967 addl2 #8,r9 ;his new FDT... 0000198A 11968 movl #64,r11 ;64 functions ?01T 00001991 11969 .if ndf,b$fmt$ ?01T 00001991 11970 pushl r7 ?01T 00001993 11971 movab jt_format,r7 ; let victim's format fdt by ?01T 00001998 11972 .endc 00001998 11973 75$: cmpl (r10),r8 ;this function hadled in JT? 0000199B 11974 beql 76$ ;if eql no, skip ?01T 0000199D 11975 .if ndf,b$fmt$ ?01T 0000199D 11976 cmpl (r10),r7 ;this our io$_format ?01T 000019A0 11977 beql 76$ ;if so leave victim's alone ?01T 000019A2 11978 .endc 000019A2 11979 movl (r10),(r9) ;if we do it point his fdt at our fcn 000019A5 11980 ; (NOTE: our functions MUST therefore call the previous FDT's functions at 000019A5 11981 ; end of their processing.) 000019A5 11982 76$: cmpl (r10)+,(r9)+ ;pass the entry 000019A8 11983 sobgtr r11,75$ ;do all functions ?01T 000019AB 11984 .if ndf,b$fmt$ ?01T 000019AB 11985 popl r7 ;get back victim fdt ?01T 000019AE 11986 .endc 000019AE 11987 ; JTdriver FDT table. Last entry goes to user's original FDT chain. 000019AE 11988 ; 000019AE 11989 ; Thus we simply insert our FDT processing ahead of normal stuff, but 000019AE 11990 ; all fcn msks & functions will work for any driver. 000019AE 11991 popr #^m 000019B2 11992 ; Now point the user's FDT at our bugger'd copy. 000019B2 11993 movab ucb$l_myfdt(r5),ddt$l_fdt(r8) ;point at our FDT table 000019B8 11994 clrl myonoff ;turn my FDTs on 000019BE 11995 ; 000019BE 11996 ; Finally clobber the victim device's DDT pointer to point to our new 000019BE 11997 ; one. 000019BE 11998 movab ucb$a_vicddt(r5),ucb$l_ddt(r11) 000019C5 11999 ; Now the DDT used for the victim device unit is that of our UCB 000019C5 12000 ; and will invoke whatever special processing we need. This processing in 000019C5 12001 ; the example here causes the intercept driver's FDT routines to be 000019C5 12002 ; used ahead of whatever was in the original driver's FDTs. Because 000019C5 12003 ; the DDT is modified using the UCB pointer only, target device units 000019C5 12004 ; that have not been patched in this way continue to use their old 000019C5 12005 ; DDTs and FDTs unaltered. 000019C5 12006 ; 000019C5 12007 ; Processing complete; release victim's fork lock JTDRIVER ;skeleton driver implementing u 2-DEC-1994 10:13:13 AMAC V2.1-13-2671 Page 82 V01H Our FDT Filter Routines 2-DEC-1994 10:12:45 [EVERHART.JT]JTDRIVER_S2.MAR;120 000019C5 12008 100$: 000019C5 12009 forkunlock lock=ucb$b_flck(r11),newipl=(sp)+,- 000019DF 12010 preserve=YES X01/021 000019C5 BLBC SMP$GL_FLAGS,30077$ X02/026 ?02T 000019CC EVAX_STQ R0, -(SP) X01/032 ?02T 000019CF MOVZBL ucb$b_flck(r11),R0 X01/046 ?01T 000019D3 JSB G^SMP$RELEASE X02/051 ?02T 000019D9 EVAX_LDQ R0, (SP)+ X01/055 000019DC 30077$: X01/057 ?01T 000019DC MTPR (sp)+,S^#PR$_IPL 000019DF 12011 popr #^m 000019E3 12012 rsb 000019E4 12013 umung: .jsb_entry 000019E4 12014 ; 000019E4 12015 ; Entry: R11 points at victim device UCB and current driver is the one 000019E4 12016 ; desiring to remove its entry from the DDT chain. Thus its xx$dpt: address 000019E4 12017 ; is the one being sought. ("Current driver" here means the intercept 000019E4 12018 ; driver.) 000019E4 12019 ; It is assumed that the driver knows that the DDT chain was patched 000019E4 12020 ; so that its UCB contains an entry in the DDT chain 000019E4 12021 pushr #^m 000019E8 12022 movl r11,r5 ;hereafter use r5 as victim's UCB 000019EB 12023 movl ucb$l_ddt(r5),r10 ;get the DDT we currently have 000019F0 12024 movl ucb$l_ddb(r5),r1 ;get ddb of victim 000019F4 12025 movl ddb$l_ddt(r1),r1 ;and real original DDT 000019F8 12026 movl r10,r0 ;save ucb$l_ddt addr for later 000019FB 12027 movab driver$dpt,r11 ;magic pattern is DPT addr. 00001A02 12028 ; movab DPT$TAB,r11 ;magic pattern is DPT addr. 00001A02 12029 ; lock this section with forklock so we can safely remove 00001A02 12030 ; entries at fork also. Use victim device forklock. 00001A26 12031 forklock lock=ucb$b_flck(r5),savipl=-(sp),preserve=YES X01/023 ?01T 00001A02 MFPR S^#PR$_IPL,-(sp) X02/029 ?02T 00001A05 EVAX_STQ R0, -(SP) X01/035 ?02T 00001A08 MOVZBL ucb$b_flck(r5),R0 X01/048 00001A0C BLBC SMP$GL_FLAGS,30079$ X01/050 00001A13 JSB G^SMP$ACQUIRE X01/051 00001A19 BRB 30080$ X01/052 00001A1B 30079$: X02/058 ?01T 00001A1B MTPR SMP$AL_IPLVEC[R0],S^#PR$_IPL X01/081 00001A23 30080$: X02/085 ?02T 00001A23 EVAX_LDQ R0, (SP)+ 00001A26 12032 2$: cmpl (r10),R11 00001A2A 12033 ;this our own driver? 00001A2A 12034 beql 1$ ;if eql yes, end search ?01T 00001A2C 12035 .if df,chk.err ?01T 00001A2C 12036 cmpl (r10),#p.magic ?01T 00001A39 12037 bneqw 4$ ;exit if this is nonstd bash X01/001 ?01T 00001A34 beql 30081$ X01/002 ?01T 00001A36 brw 4$ X01/003 ?01T 00001A39 30081$: ?01T 00001A39 12038 .endc ;chk.err 00001A39 12039 ; follow DDT block chain to next saved DDT. 00001A39 12040 movl (r10),r10 00001A3D 12041 ;point R10 at the next DDT in the 00001A3D 12042 ;chain ?01T 00001A3D 12043 .if df,chk.err ?01T 00001A42 12044 bgeqw 4$ ; (error check if not negative) JTDRIVER ;skeleton driver implementing u 2-DEC-1994 10:13:13 AMAC V2.1-13-2671 Page 83 V01H Our FDT Filter Routines 2-DEC-1994 10:12:45 [EVERHART.JT]JTDRIVER_S2.MAR;120 X01/001 ?01T 00001A3D blss 30082$ X01/002 ?01T 00001A3F brw 4$ X01/003 ?01T 00001A42 30082$: ?01T 00001A42 12045 .endc ;chk.err 00001A42 12046 brb 2$ ;then check again 00001A44 12047 1$: 00001A44 12048 ; At this point R10 contains the DDT address within the intercept 00001A44 12049 ; driver's UCB. Return the address of the intercept driver's UCB next. 00001A44 12050 tstl (r10) ;were we intercepted? 00001A47 12051 bgeq 3$ ;if geq no, skip back-fixup 00001A49 12052 ; we were intercepted. Fix up next guy in line. 00001A49 12053 movl (r10),r11 ;point at interceptor 00001A4D 12054 movl (r10),(r11) 00001A52 12055 3$: 00001A52 12056 ; if we intercepted someone, fix up our intercepted victim to skip by 00001A52 12057 ; us also. 00001A52 12058 movl (r10),r2 ;did we intercept 00001A56 12059 ;original driver? 00001A56 12060 cmpl r2,r1 ;test if this is original 00001A59 12061 beql 5$ ;if eql yes, no bash 00001A5B 12062 ; replace previous intercept address by ours (which might be zero) 00001A5B 12063 movl (r10),(r2) 00001A60 12064 5$: 00001A60 12065 ; Here remove FDT entries from the list if they were modified. 00001A60 12066 ; This needs a scan of the FDT chain starting at the victim's 00001A60 12067 ; ddt$l_fdt pointer and skipping around any entry that has address 00001A60 12068 ; JT_functable: 00001A60 12069 ; The FDT chain is singly linked. The code here assumes everybody 00001A60 12070 ; plays by the same rules! 00001A60 12071 ; NOTE: Omit this code if we didn't insert our FDT code in the chain!!! 00001A60 12072 movl ddt$l_fdt(r0),r1 ;start of FDT chain 00001A64 12073 movab JT_functable,r2 ;address of our FDT table 00001A6B 12074 clrl r3 00001A6D 12075 movab <0-ucb$a_vicddt>(r10),r4 ;initially point at our ucb 00001A72 12076 ; Also set the JT device offline when we unbash it. This is a simple 00001A72 12077 ; flag that ctl prog. can use to tell if it's been used already. ?01T 00001A72 12078 .if df,evax ?01T 00001A72 12079 bicl #,ucb$l_sts(r4) ?01F 00001A7B 12080 .iff ?01F 00001A7B 12081 bicw #,ucb$w_sts(r4) ?01F 00001A7B 12082 .endc 00001A7B 12083 6$: cmpl r1,r2 ;current fdt point at us? 00001A7E 12084 beql 7$ ;if eql yes, fix up chain 00001A80 12085 movl r1,r3 ;else store last pointer 00001A83 12086 movl fdt_prev(r1),r4 ;and point at next 00001A87 12087 bgeq 8$ 00001A89 12088 movl ucb$l_oldfdt(r4),r1 ;where last FDT pointer is in the ucb 00001A8E 12089 ;;;BUT not all UCBs will have the fdt offset at the same place!!! 00001A8E 12090 ;;;HOWEVER we will leave this in, putting the oldfdt field first after 00001A8E 12091 ;;;the regular UCB things. 00001A8E 12092 bgeq 8$ ;if not sys addr, no messin' 00001A90 12093 brb 6$ ;look till we find one. 00001A92 12094 7$: 00001A92 12095 ;r3 is 0 or fdt pointing to our block next 00001A92 12096 ;r1 points at our fdt block 00001A92 12097 tstl r3 ;if r3=0 nobody points at us 00001A94 12098 bgeq 8$ ;so nothing to do JTDRIVER ;skeleton driver implementing u 2-DEC-1994 10:13:13 AMAC V2.1-13-2671 Page 84 V01H Our FDT Filter Routines 2-DEC-1994 10:12:45 [EVERHART.JT]JTDRIVER_S2.MAR;120 00001A96 12099 movl fdt_prev(r1),r4 00001A9A 12100 bgeq 17$ 00001A9C 12101 movl ucb$l_oldfdt(r4),-(sp) ;save old fdt loc 00001AA1 12102 movl fdt_prev(r3),r4 00001AA5 12103 blss 18$ 00001AA7 12104 tstl (sp)+ 00001AA9 12105 brb 17$ 00001AAB 12106 18$: movl (sp)+,ucb$l_oldfdt(r4) 00001AB0 12107 17$: movl fdt_prev(r1),fdt_prev(r3) ;else point our next-fdt pointer at 00001AB5 12108 ;last fdt addr. 00001AB5 12109 8$: 00001AB5 12110 ; 00001AB5 12111 ; Finally if the victim UCB DDT entry points at ours, make it point at 00001AB5 12112 ; our predecessor. If it points at a successor, we can leave it alone. 00001AB5 12113 cmpl r10,r0 ;does victim ucb point at our DDT? 00001AB8 12114 bneq 4$ ;if not cannot replace it 00001ABA 12115 movl (r10),ucb$l_ddt(r5) 00001AC0 12116 clrl (r10) ;zero jt munged flag 00001AC4 12117 4$: 00001ADE 12118 forkunlock lock=ucb$b_flck(r5),newipl=(sp)+,preserve=YES X01/021 00001AC4 BLBC SMP$GL_FLAGS,30083$ X02/026 ?02T 00001ACB EVAX_STQ R0, -(SP) X01/032 ?02T 00001ACE MOVZBL ucb$b_flck(r5),R0 X01/046 ?01T 00001AD2 JSB G^SMP$RELEASE X02/051 ?02T 00001AD8 EVAX_LDQ R0, (SP)+ X01/055 00001ADB 30083$: X01/057 ?01T 00001ADB MTPR (sp)+,S^#PR$_IPL 00001ADE 12119 popr #^m 00001AE2 12120 ;copy our prior DDT ptr to next one 00001AE2 12121 rsb 00001AE3 12122 00001AE3 12123 .SBTTL CONTROLLER INITIALIZATION ROUTINE 00001AE3 12124 ; ++ 00001AE3 12125 ; 00001AE3 12126 ; JT_ctrl_INIT - CONTROLLER INITIALIZATION ROUTINE 00001AE3 12127 ; 00001AE3 12128 ; FUNCTIONAL DESCRIPTION: 00001AE3 12129 ; noop 00001AE3 12130 ; INPUTS: 00001AE3 12131 ; R4 - CSR ADDRESS 00001AE3 12132 ; R5 - IDB ADDRESS 00001AE3 12133 ; R6 - DDB ADDRESS 00001AE3 12134 ; R8 - CRB ADDRESS 00001AE3 12135 ; 00001AE3 12136 ; THE OPERATING SYSTEM CALLS THIS ROUTINE: 00001AE3 12137 ; - AT SYSTEM STARTUP 00001AE3 12138 ; - DURING DRIVER LOADING 00001AE3 12139 ; - DURING RECOVERY FROM POWER FAILURE 00001AE3 12140 ; THE DRIVER CALLS THIS ROUTINE TO INIT AFTER AN NXM ERROR. 00001AE3 12141 ;-- 00001AF8 12174 JT_ctrl_INIT: $driver_ctrlinit_entry 00000000 X02/080 ?02T 00001AE3 .iif identical false, , _MTU_DIR_ARG_3 = 0 X01/130 ?01T 00001AE5 MOVL #SS$_NORMAL, R0 X01/131 ?01T 00001AE8 MOVL ctrlarg$_idb(AP), R4 X01/132 ?01T 00001AEC MOVL ctrlarg$_idb(AP), R5 X01/133 ?01T 00001AF0 MOVL ctrlarg$_ddb(AP), R6 X01/134 ?01T 00001AF4 MOVL ctrlarg$_crb(AP), R8 JTDRIVER ;skeleton driver implementing u 2-DEC-1994 10:13:13 AMAC V2.1-13-2671 Page 85 V01H CONTROLLER INITIALIZATION ROUTI 2-DEC-1994 10:12:45 [EVERHART.JT]JTDRIVER_S2.MAR;120 00001AF8 12175 ; CLRL CRB$L_AUXSTRUC(R8) ; SAY NO AUX MEM 00001AF8 12176 movl #1,r0 00001AFB 12177 Ret ;RETURN 00001AFC 12178 .SBTTL INTERNAL CONTROLLER RE-INITIALIZATION 00001AFC 12179 ; 00001AFC 12180 ; INPUTS: 00001AFC 12181 ; R4 => controller CSR (dummy) 00001AFC 12182 ; R5 => UCB 00001AFC 12183 ; 00001AFC 12184 .SBTTL UNIT INITIALIZATION ROUTINE 00001AFC 12185 ;++ 00001AFC 12186 ; 00001AFC 12187 ; JT_unit_INIT - UNIT INITIALIZATION ROUTINE 00001AFC 12188 ; 00001AFC 12189 ; FUNCTIONAL DESCRIPTION: 00001AFC 12190 ; 00001AFC 12191 ; THIS ROUTINE SETS THE JT: ONLINE. 00001AFC 12192 ; 00001AFC 12193 ; THE OPERATING SYSTEM CALLS THIS ROUTINE: 00001AFC 12194 ; - AT SYSTEM STARTUP 00001AFC 12195 ; - DURING DRIVER LOADING 00001AFC 12196 ; - DURING RECOVERY FROM POWER FAILURE 00001AFC 12197 ; 00001AFC 12198 ; INPUTS: 00001AFC 12199 ; 00001AFC 12200 ; R4 - CSR ADDRESS (CONTROLLER STATUS REGISTER) 00001AFC 12201 ; R5 - UCB ADDRESS (UNIT CONTROL BLOCK) 00001AFC 12202 ; R8 - CRB ADDRESS 00001AFC 12203 ; 00001AFC 12204 ; OUTPUTS: 00001AFC 12205 ; 00001AFC 12206 ; THE UNIT IS SET ONLINE. 00001AFC 12207 ; ALL GENERAL REGISTERS (R0-R15) ARE PRESERVED. 00001AFC 12208 ; 00001AFC 12209 ;-- 00001AFC 12210 00001B09 12239 JT_unit_INIT: $driver_unitinit_entry 00000000 X02/074 ?02T 00001AFC .iif identical false, , _MTU_DIR_ARG_3 = 0 X01/124 ?01T 00001AFE MOVL #SS$_NORMAL, R0 X01/125 ?01T 00001B01 MOVL unitarg$_idb(AP), R4 X01/126 ?01T 00001B05 MOVL unitarg$_ucb(AP), R5 00001B09 12240 ; Don't set unit online here. Priv'd task that assigns JT unit 00001B09 12241 ; to a file does this to ensure only assigned JTn: get used. 00001B09 12242 ; BISW #UCB$M_ONLINE,UCB$W_STS(R5) ;SET UCB STATUS ONLINE 00001B09 12243 ;limit size of JT: data buffers 00002000 00001B09 12244 JT_bufsiz=8192 00001B09 12245 movl #JT_bufsiz,ucb$l_maxbcnt(r5) ;limit transfers to 8k 00001B12 12246 MOVB #DC$_MISC,UCB$B_DEVCLASS(R5) ;SET DISK DEVICE CLASS 00001B17 12247 clrl ucb$l_mungd(r5) ;not mung'd yet 00001B1B 12248 ; NOTE: we may want to set this as something other than an RX class 00001B1B 12249 ; disk if MSCP is to use it. MSCP explicitly will NOT serve an 00001B1B 12250 ; RX type device. For now leave it in, but others can alter. 00001B1B 12251 ; (There's no GOOD reason to disable MSCP, but care!!!) 00001B1B 12252 movl #^Xb22d4001,ucb$l_media_id(r5) ; set media id as JT 00001B24 12253 ; (note the id might be wrong but is attempt to get it.) (used only for 00001B24 12254 ; MSCP serving.) 00001B24 12255 MOVB #DT$_FD1,UCB$B_DEVTYPE(R5) ;Make it foreign disk type 1 JTDRIVER ;skeleton driver implementing u 2-DEC-1994 10:13:13 AMAC V2.1-13-2671 Page 86 V01H UNIT INITIALIZATION ROUTINE 2-DEC-1994 10:12:45 [EVERHART.JT]JTDRIVER_S2.MAR;120 00001B29 12256 movab driver$dpt,ucb$l_uniqid(r5) 00001B32 12257 ; (dt$_rp06 works but may confuse analyze/disk) 00001B32 12258 ;;; NOTE: changed from fd1 type so MSCP will know it's a local disk and 00001B32 12259 ;;; attempt no weird jiggery-pokery with the JT: device. 00001B32 12260 ; MSCP may still refuse to do a foreign drive too; jiggery-pokery later 00001B32 12261 ; to test if there's occasion to do so. 00001B32 12262 ; Set up crc polynomial 00001B32 12263 movab jt_utb,ucb$l_hucbs(r5) ;host ucb table 00001B3B 12264 ;$def ucb$l_ktrln .blkl 1 00001B3B 12265 ;$def ucb$l_k2tnm .blkl 1 00001B3B 12266 movab kast_code,ucb$l_ktrln(r5) ;set up kast pointers 00001B44 12267 movab kast_code_2,ucb$l_k2tnm(r5) ?01F 00001B4D 12268 .if df,j$$vdsk ;normally not defined ?01F 00001B4D 12269 movl r5,ucb$l_backlk(r5) ;backlink UCB initially our own ?01F 00001B4D 12270 ; Set up to point the JT unit DDT at its own UCB initially. ?01F 00001B4D 12271 fork ;ensure allocation's ok ?01F 00001B4D 12272 pushr #^m ;save regs from movc etc. ?01F 00001B4D 12273 ; Move our DDT into our UCB and point ucb$l_ddt there so when we go a-hunting ?01F 00001B4D 12274 ; for it, we find it where we do our own virtual disk. ?01F 00001B4D 12275 movl ucb$l_ddt(r5),r6 ;where our ddt now is ?01F 00001B4D 12276 movab ucb$a_vicddt(r5),r7 ;where we'll copy it ?01F 00001B4D 12277 movc3 #ddt$k_length,(r6),(r7) ;copy our DDT ?01F 00001B4D 12278 popr #^m ;get back regs so we can ?01F 00001B4D 12279 ;find our UCB again. ?01F 00001B4D 12280 movab ucb$a_vicddt(r5),ucb$l_ddt(r5) ;point UCB DDT pointer at copy ?01F 00001B4D 12281 .endc 00001B4D 12282 clrl chnflg ;initially set to use our chain of FDTs 00001B53 12283 ; Allocate process vector here. 00001B53 12284 movl g^sch$gl_maxpix,r1 00001B5A 12285 ashl #5,r1,r1 ;get 32 bytes per process 00001B5E 12286 ; link to LDT 00001B5E 12287 ; ccb addr 00001B5E 12288 ; proc. counter of enable/disable deletion 00001B5E 12289 ; finish count for our thread, bumped before we do i/o, decremented when 00001B5E 12290 ; user's i/o r0 return avail. 00001B5E 12291 ; 00000000 00001B5E 12292 pv.ldt=0 00000004 00001B5E 12293 pv.ccb=4 00000008 00001B5E 12294 pv.eds=8 0000000C 00001B5E 12295 pv.fin=12 00001B5E 12296 pushl r1 00001B60 12297 jsb g^exe$alonpagvar ;get some pool 00001B66 12298 popl r1 00001B69 12299 blbc r0,5$ 00001B76 12300 zapz (r2),r1 ;zero it all initially X01/001 00001B6C pushr #^m ;save regs from movc5 X01/002 00001B6E movc5 #0,(r2),#0,r1,(r2) X01/003 00001B74 popr #^m ;save regs from movc5 00001B76 12301 movl r2,ucb$l_prcvec(r5) ;set initial pointer in UCB 00001B7B 12302 ; now grab filenum bitmap store ?01T 00001B7B 12303 .if ndf,wd.lst ?02F 00001B7B 12304 .iif ndf,f.nsiz,f.nsiz=2048 ?01T 00001B7B 12305 clrl ucb$l_fnums(r5) ?01T 00001B7F 12306 movl #f.nsiz,r1 ;bytes to get ?01T 00001B86 12307 jsb g^exe$alonpagvar ;get some pool ?01T 00001B8C 12308 blbc r0,31$ ?01T 00001B8F 12309 movl r2,ucb$l_fnums(r5) JTDRIVER ;skeleton driver implementing u 2-DEC-1994 10:13:13 AMAC V2.1-13-2671 Page 87 V01H UNIT INITIALIZATION ROUTINE 2-DEC-1994 10:12:45 [EVERHART.JT]JTDRIVER_S2.MAR;120 ?01T 00001B9E 12310 zapz (r2),r1 X01/001 ?01T 00001B94 pushr #^m ;save regs from movc5 X01/002 ?01T 00001B96 movc5 #0,(r2),#0,r1,(r2) X01/003 ?01T 00001B9C popr #^m ;save regs from movc5 ?01T 00001B9E 12311 31$: ?01T 00001B9E 12312 .endc 00001B9E 12313 movl #1,r0 00001BA1 12314 RET ;RETURN 00001BA2 12315 5$: 00001BA2 12316 BICL #UCB$M_ONLINE,UCB$L_STS(R5) ;SET UCB STATUS OFFLINE 00001BA7 12317 movl #1,r0 00001BAA 12318 ret 00001BAB 12319 ; 00001BAB 12320 ; findldt 00001BAB 12321 ; call with r5 = jt ucb cell, r6=ccb, r4=pcb 00001BAB 12322 ; Returns pointer to LDT in R0 00001BAB 12323 ; r0=0 if none exists. returns r1 = address to link ldt to if r0=0 00001BAB 12324 ; if r1 = 0 on return also, seriously bogus state like no 00001BAB 12325 ; prcvec table. 00001BAB 12326 ; call at device ipl. 00001BAB 12327 ; 00001BAB 12328 ; slot has 00001BAB 12329 ; pointer to LDT chain 00001BAB 12330 ; PID of owner process (in case it exits w/o cleanup) 00001BAB 12331 findldt: .jsb_entry output= 00001BAB 12332 pushr #^M 00001BAF 12333 movl g^ctl$gl_pcb,r4 00001BB6 12334 clrl r0 ;initially nothing 00001BB8 12335 movl ucb$l_prcvec(r5),r1 ;start of ldt chain 00001BBD 12336 bgeq 999$ ;lose if none 00001BBF 12337 movzwl pcb$l_pid(r4),r2 ;get index 00001BC4 12338 ashl #5,r2,r2 ;get tbl entry offset 00001BC8 12339 ; shift 5 so 32 bytes = 8 longs per entry 00001BC8 12340 addl3 r2,r1,r3 ;point r3 at our slot 00001BCC 12341 movl r3,r1 ;let r1 return as link addr 00001BCF 12342 tstl 4(r1) ;empty slot? 00001BD2 12343 bneq 3$ 00001BD4 12344 clrl (r1) ;if slot is empty clr ldt area 00001BD6 12345 brb 5$ 00001BD8 12346 3$: cmpl 4(r1),pcb$l_pid(r4) ;right pid? 00001BDE 12347 beql 5$ 00001BE0 12348 jsb freslot ;wrong so free all ldt's 00001BE6 12349 clrl (r1) 00001BE8 12350 5$: movl pcb$l_pid(r4),4(r1) ;claim slot now 00001BEE 12351 10$: tstl r1 ;ensure pointer ok 00001BF0 12352 bgeq 999$ 00001BF2 12353 ; check right process. 00001BF2 12354 movl ldt$l_fwd(r1),r11 ;get candidate ldt 00001BF6 12355 bgeq 999$ ;if null, none to find, but R1 pointer ok 00001BF8 12356 cmpl ldt$l_ccb(r11),r6 ;got right ccb? 00001BFC 12357 beql 800$ ;if we have it, branch 00001BFE 12358 movl r11,r1 ;else loop to next 00001C01 12359 brb 10$ ;and retry 00001C03 12360 800$: movl r11,r0 ;return ldt addr in r0 00001C06 12361 999$: 00001C06 12362 ; Callers may test r0=0 or r1=0. If they're +, return 0 since that's 00001C06 12363 ; also an error. JTDRIVER ;skeleton driver implementing u 2-DEC-1994 10:13:13 AMAC V2.1-13-2671 Page 88 V01H UNIT INITIALIZATION ROUTINE 2-DEC-1994 10:12:45 [EVERHART.JT]JTDRIVER_S2.MAR;120 00001C06 12364 tstl r1 00001C08 12365 blss 997$ 00001C0A 12366 clrl r1 00001C0C 12367 997$: tstl r0 00001C0E 12368 blss 996$ 00001C10 12369 clrl r0 ;return 0 instead of any positive values 00001C12 12370 996$: ?01T 00001C12 12371 .iif df,msetrp, movl r1,mtp$r1+4(r5) 00001C17 12372 popr #^M 00001C1B 12373 rsb 00001C1C 12374 freslot: .jsb_entry ;free entire slot, deallocating any LDTs. 00001C1C 12375 pushr #^M 00001C20 12376 movl r1,r11 ;slot address 00001C23 12377 movl (r1),r10 ;start LDT if any 00001C26 12378 10$: tstl r10 00001C28 12379 beql 50$ 00001C2A 12380 movl (r10),r10 ;grab pointer to next ldt if any 00001C2D 12381 movl ldt$l_fresiz(r10),r1 ;size to free 00001C31 12382 jsb g^exe$deanonpgdsiz 00001C37 12383 brb 10$ ;keep looking 00001C39 12384 50$: 00001C43 12385 zapz (r1),#32 ;zero all 32 bytes X01/001 00001C39 pushr #^m ;save regs from movc5 X01/002 00001C3B movc5 #0,(r1),#0,#32,(r1) X01/003 00001C41 popr #^m ;save regs from movc5 00001C43 12386 popr #^M 00001C47 12387 rsb 00001C48 12388 .SBTTL Other FDT ROUTINES 00001C48 12389 ;++ 00001C48 12390 ; 00001C48 12391 ; JT_ALIGN - FDT ROUTINE TO TEST XFER BYTE COUNT 00001C48 12392 ; 00001C48 12393 ; FUNCTIONAL DESCRIPTION: 00001C48 12394 ; 00001C48 12395 ; THIS ROUTINE IS CALLED FROM THE FUNCTION DECISION TABLE DISPATCHER 00001C48 12396 ; TO CHECK THE BYTE COUNT PARAMETER SPECIFIED BY THE USER PROCESS 00001C48 12397 ; FOR AN EVEN NUMBER OF BYTES (WORD BOUNDARY). 00001C48 12398 ; 00001C48 12399 ; INPUTS: 00001C48 12400 ; 00001C48 12401 ; R3 - IRP ADDRESS (I/O REQUEST PACKET) 00001C48 12402 ; R4 - PCB ADDRESS (PROCESS CONTROL BLOCK) 00001C48 12403 ; R5 - UCB ADDRESS (UNIT CONTROL BLOCK) 00001C48 12404 ; R6 - CCB ADDRESS (CHANNEL CONTROL BLOCK) 00001C48 12405 ; R7 - BIT NUMBER OF THE I/O FUNCTION CODE 00001C48 12406 ; R8 - ADDRESS OF FDT TABLE ENTRY FOR THIS ROUTINE 00001C48 12407 ; 4(AP) - ADDRESS OF FIRST FUNCTION DEPENDENT QIO PARAMETER 00001C48 12408 ; 00001C48 12409 ; OUTPUTS: 00001C48 12410 ; 00001C48 12411 ; IF THE QIO BYTE COUNT PARAMETER IS ODD, THE I/O OPERATION IS 00001C48 12412 ; TERMINATED WITH AN ERROR. IF IT IS EVEN, CONTROL IS RETURNED 00001C48 12413 ; TO THE FDT DISPATCHER. 00001C48 12414 ; 00001C48 12415 ;-- 00000000 00001C48 12416 nolchk=0 00001C48 12417 JT_ALIGN: .jsb_entry ;CHECK BYTE COUNT AT P1(AP) JTDRIVER ;skeleton driver implementing u 2-DEC-1994 10:13:13 AMAC V2.1-13-2671 Page 89 V01H Other FDT ROUTINES 2-DEC-1994 10:12:45 [EVERHART.JT]JTDRIVER_S2.MAR;120 00001C48 12418 ; BLBS 4(AP),10$ ;IF LBS - ODD BYTE COUNT 00001C48 12419 movl #1,r0 00001C4B 12420 RSB ;EVEN - RETURN TO CALLER 00001C4C 12421 00001C4C 12422 .SBTTL START I/O ROUTINE 00001C4C 12423 ;++ 00001C4C 12424 ; 00001C4C 12425 ; JT_STARTIO - START I/O ROUTINE 00001C4C 12426 ; 00001C4C 12427 ; FUNCTIONAL DESCRIPTION: 00001C4C 12428 ; 00001C4C 12429 ; THIS FORK PROCESS IS ENTERED FROM THE EXECUTIVE AFTER AN I/O REQUEST 00001C4C 12430 ; PACKET HAS BEEN DEQUEUED. 00001C4C 12431 ; 00001C4C 12432 ; INPUTS: 00001C4C 12433 ; 00001C4C 12434 ; R3 - IRP ADDRESS (I/O REQUEST PACKET) 00001C4C 12435 ; R5 - UCB ADDRESS (UNIT CONTROL BLOCK) 00001C4C 12436 ; IRP$L_MEDIA - PARAMETER LONGWORD (LOGICAL BLOCK NUMBER) 00001C4C 12437 ; 00001C4C 12438 ; OUTPUTS: 00001C4C 12439 ; 00001C4C 12440 ; R0 - FIRST I/O STATUS LONGWORD: STATUS CODE & BYTES XFERED 00001C4C 12441 ; R1 - SECOND I/O STATUS LONGWORD: 0 FOR DISKS 00001C4C 12442 ; 00001C4C 12443 ; THE I/O FUNCTION IS EXECUTED. 00001C4C 12444 ; 00001C4C 12445 ; ALL REGISTERS EXCEPT R0-R4 ARE PRESERVED. 00001C4C 12446 ; 00001C4C 12447 ;-- 00001C56 12480 JT_STARTIO: $driver_start_entry 00000000 X02/079 ?02T 00001C4C .iif identical false, , _MTU_DIR_ARG_3 = 0 X01/129 ?01T 00001C4E MOVL startarg$_irp(AP), R3 X01/130 ?01T 00001C52 MOVL startarg$_ucb(AP), R5 00001C56 12481 ; 00001C56 12482 ; PREPROCESS UCB FIELDS 00001C56 12483 ; 00001C56 12484 ; ASSUME RY_EXTENDED_STATUS_LENGTH EQ 8 00001C56 12485 ; CLRQ UCB$Q_JT_EXTENDED_STATUS(R5) ; Zero READ ERROR REGISTER area. 00001C56 12486 ; 00001C56 12487 ; BRANCH TO FUNCTION EXECUTION 00001C56 12488 bbs #ucb$v_online,- ; if online set software valid 00001C56 12489 ucb$l_sts(r5),210$ 00001C5C 12490 216$: movzwl #ss$_volinv,r0 ; else set volume invalid 00001C61 12491 brw resetxfr ; reset byte count & exit 00001C64 12492 210$: 00001C64 12493 ; Unless we use this entry, we want to junk any calls here. 00001C64 12494 brb 216$ ;just always say invalid volume. 00001C66 12495 00001C66 12496 ; Get here for other start-io entries if the virtual disk code is 00001C66 12497 ; commented out also, as it must be. 00001C66 12498 ;FATALERR: ;UNRECOVERABLE ERROR 00001C66 12499 ; MOVZWL #SS$_DRVERR,R0 ;ASSUME DRIVE ERROR STATUS 00001C66 12500 00001C66 12501 RESETXFR: ; dummy entry ... should never really get here 00001C66 12502 MOVL UCB$L_IRP(R5),R3 ;GET I/O PKT 00001C6A 12503 ; MNEGW IRP$W_BCNT(R3),UCB$W_BCR(R5) ; RESET BYTECOUNT JTDRIVER ;skeleton driver implementing u 2-DEC-1994 10:13:13 AMAC V2.1-13-2671 Page 90 V01H START I/O ROUTINE 2-DEC-1994 10:12:45 [EVERHART.JT]JTDRIVER_S2.MAR;120 00001C6A 12504 ; BRW FUNCXT 00001C6A 12505 FUNCXT: ;FUNCTION EXIT 00001C6A 12506 CLRL R1 ;CLEAR 2ND LONGWORD OF IOSB 00001C7A 12533 REQCOM,environment=call ; COMPLETE REQUEST X02/003 00001C6C PUSHL R5 X02/004 00001C6E PUSHL R1 X02/005 00001C70 PUSHL R0 X02/006 00001C72 CALLS #3,G^IOC_STD$REQCOM X01/011 ?01T 00001C79 RET 00001C7A 12534 ; 00001C7A 12535 ;PWRFAIL: ;POWER FAILURE 00001C7A 12536 ; BICW #UCB$M_POWER,UCB$W_STS(R5) ;CLEAR POWER FAILURE BIT 00001C7A 12537 ; MOVL UCB$L_IRP(R5),R3 ;GET ADDRESS OF I/O PACKET 00001C7A 12538 ; MOVQ IRP$L_SVAPTE(R3),- ;RESTORE TRANSFER PARAMETERS 00001C7A 12539 ; UCB$L_SVAPTE(R5) ;... 00001C7A 12540 ; BRW JT_STARTIO ;START REQUEST OVER 00001C7A 12541 ;JT_INT:: 00001C7A 12542 ;JT_UNSOLNT:: 00001C7A 12543 ; POPR #^M 00001C7A 12544 ; REI ;DUMMY RETURN FROM ANY INTERRUPT 00001C7A 12545 ;; 00001C7A 12546 ;Note that the "step2" stuff is a special kernel AST so the call 00001C7A 12547 ; convention is JSB type regardless... 00001C7A 12548 jtkast: .jsb_entry 00001C7A 12549 ; special knl AST entry daemon should cause. 00001C7A 12550 pushr #^m 00001C7E 12551 movl acb$l_astprm(r5),r11 ;get LDT address 00001C82 12552 movl r5,r0 ;dealloc. the acb 00001C85 12553 movl #acb$c_length,r1 ;length used 00001C88 12554 jsb g^exe$deanonpgdsiz 00001C8E 12555 ; get ucb pointer back 00001C8E 12556 movl ldt$l_regs+12(r11),r5 ;get victim dvc ucb 00001C93 12557 jsb getjtucb ;find JT UCB now 00001C97 12558 tstl r0 00001C99 12559 bgeq 12$ 00001C9B 12560 movl r0,r5 ;point at jt ucb now 00001C9E 12561 12$: 00001C9E 12562 movl r11,(sp) ; set return of r11 in r0 00001CA1 12563 movl r5,4(sp) ; r5 returns in r1 00001CA5 12564 popr #^m 00001CA9 12565 bsbw lclcnt ;go continue "step2" ast 00001CAC 12566 rsb 00001CAD 12567 00001CAD 12568 ; step 1.5 entry. Normal kernel AST here from our $qio. We take it and 00001CAD 12569 ; build a special kernel AST instead. 00001CAD 12570 .entry vcstp15,^m 00000004 00001CAF 12571 prm=4 00001CAF 12572 movl prm(ap),r11 ;get LDT address back to familiar R11 00001CB3 12573 ;grab an ACB for skast 00001CB3 12574 movl #,r1 ;size of an acb 00001CB6 12575 jsb g^exe$alonpagvar ;allocate space for acb 00001CBC 12576 blbc r0,999$ ;if we fail, lose 00001CC9 12577 zapz (r2),# ;zero the ACB initially X01/001 00001CBF pushr #^m ;save regs from movc5 X01/002 00001CC1 movc5 #0,(r2),#0,#,(r2) X01/003 00001CC7 popr #^m ;save regs from movc5 00001CC9 12578 movw r1,acb$w_size(r2) ;save size JTDRIVER ;skeleton driver implementing u 2-DEC-1994 10:13:13 AMAC V2.1-13-2671 Page 91 V01H START I/O ROUTINE 2-DEC-1994 10:12:45 [EVERHART.JT]JTDRIVER_S2.MAR;120 00001CCD 12579 movl r11,acb$l_astprm(r2) ;ldt is AST parameter again 00001CD1 12580 movl r2,r5 ;sch$qast wants r5 to have acb ?01T 00001CD4 12581 .if df,msetrp ?01T 00001CD4 12582 pushl r10 ?01T 00001CD6 12583 movl ldt$l_jtucb(r11),r10 ;get jt ucb ?01T 00001CDA 12584 movl #20,mtp$trace(r10) ?01T 00001CDF 12585 popl r10 ?01T 00001CE2 12586 .endc 00001CE2 12587 movl g^ctl$gl_pcb,r4 ;point at our PCB just in case 00001CE9 12588 ; .if df,evax 00001CE9 12589 ; decl pcb$l_astcnt(r4) ;count down ast quota for this one 00001CE9 12590 ; .iff 00001CE9 12591 ; adawi #-1,pcb$w_astcnt(r4) 00001CE9 12592 ; .endc 00001CE9 12593 movab vcstep2,acb$l_kast(r5) ;goto vcstep2... 00001CF1 12594 movl pcb$l_pid(r4),acb$l_pid(r5) ;in this process 00001CF7 12595 clrl acb$l_ast(r5) ;set no ast 00001CFA 12596 movb #<1@acb$v_kast>,acb$b_rmod(r5) ;set skast mode 00001CFF 12597 movl #3,r2 ;prio boost of 3 (random...) 00001D02 12598 jsb g^sch$qast ;requeue the acb 00001D08 12599 999$: movl #31,-(sp) ;set junk efn now 00001D0B 12600 calls #1,g^sys$setef ; 00001D12 12601 movl #1,r0 ;normal status 00001D15 12602 ret ;back to whatever now 00001D16 12603 00001D16 12604 00001D16 12605 ; "step 2" entry. HERE we have (hopefully) the ACL read in and must now 00001D16 12606 ; decode it. Also we need to see if we need to call the daemon and do so if 00001D16 12607 ; this is appropriate. 00001D16 12608 ; Note stp2bad is a very unusual path... 00001D16 12609 stp2bad: .jsb_entry 00001D16 12610 pushr #^m 00001D1A 12611 movl r0,r11 ;r11 now points at LDT 00001D1D 12612 brw v2cmn ;go join common code to try & issue user's I/O 1....... %AMAC-I-BRANCHBET, (1) branch between routines from routine STP2BAD 00001D20 12613 vcstep2: .jsb_entry 00001D20 12614 pushr #^m 00001D24 12615 movl #31,-(sp) ;set junk efn now 00001D27 12616 calls #1,g^sys$setef ; 00001D2E 12617 movl acb$l_astprm(r5),r11 ; get LDT addr 00001D32 12618 ;now free the ACB 00001D32 12619 pushr #^m 00001D36 12620 movl r5,r0 ;address 00001D39 12621 movl #acb$c_length,r1 ;size 00001D3C 12622 jsb g^exe$deanonpgdsiz 00001D42 12623 popr #^m 00001D46 12624 v2cmn: tstl r11 ;ensure LDT is good 00001D48 12625 blss vcz ;if good, it's neg. addr 00001D4A 12626 vcx: popr #^m 00001D4E 12627 rsb ;else give up. 00001D4F 12628 vcz: 00001D4F 12629 ; Now get original IRP, UCB, etc. to registers so we can work normally. ?01T 00001D4F 12630 .if df,msetrp ?01T 00001D4F 12631 pushl r10 ?01T 00001D51 12632 movl ldt$l_jtucb(r11),r10 ;get jt ucb JTDRIVER ;skeleton driver implementing u 2-DEC-1994 10:13:13 AMAC V2.1-13-2671 Page 92 V01H START I/O ROUTINE 2-DEC-1994 10:12:45 [EVERHART.JT]JTDRIVER_S2.MAR;120 ?01T 00001D55 12633 movl #21,mtp$trace(r10) ?01T 00001D5A 12634 popl r10 ?01T 00001D5D 12635 .endc 00001D5D 12636 movl ldt$l_regs+4(r11),r3 ;get original R3 00001D62 12637 movl ldt$l_regs+12(r11),r5 ;and real device R5 00001D67 12638 jsb getjtucb ;go find JT UCB address 00001D6B 12639 tstl r0 ;got it? 00001D6D 12640 beql vcx ;if not give up. 00001D6F 12641 movl r0,r5 ;R5 is now JT UCB addr ?01T 00001D72 12642 .iif df,msetrp,movl #22,mtp$trace(r5) 00001D77 12643 movab ldt$l_acl(r11),r9 ;now point at the ACL we read 00001D7C 12644 tstl (r9) ;whole ACL null? (shortcut) 00001D83 12645 beqlw 15$ ;if so skip everything. X01/001 00001D7E bneq 30084$ X01/002 00001D80 brw 15$ X01/003 00001D83 30084$: ?01T 00001D83 12646 .iif df,msetrp,movl #23,mtp$trace(r5) 00001D88 12647 ; acl in r9 00001D88 12648 ; get ACL size 00001D88 12649 movl ldt$l_aclsiz(r11),r10 ;pass ACL size in R10 00001D92 12650 beqlw 15$ ;sanity check again X01/001 00001D8D bneq 30085$ X01/002 00001D8F brw 15$ X01/003 00001D92 30085$: 00001D92 12651 ; Hunt up our ACE if possible & store in LDT 00001D92 12652 addl3 #512,r9,r8 ;r8 is end address 00001D9A 12653 7$: movzbl (r9),r7 ;get length 00001DA2 12654 beqlw 15$ ;if 0, skip X01/001 00001D9D bneq 30086$ X01/002 00001D9F brw 15$ X01/003 00001DA2 30086$: 00001DA2 12655 cmpl r9,r8 ;past end? 00001DA5 12656 bgequ dnfid ;if so branch 00001DA7 12657 cmpb 1(r9),#ace$c_info ;application ACL? 00001DAB 12658 beql 8$ ;if so, see if ours. 00001DAD 12659 9$: addl2 r7,r9 00001DB0 12660 brb 7$ ;else keep looking 00001DB2 12661 8$: cmpl 8(r9),acllit ;see if it's mine... 00001DBA 12662 bneq 9$ ;if neq skip 00001DBC 12663 ; aha...found OUR ACE. 00001DBC 12664 ; Fill in LDT ?01T 00001DBC 12665 .iif df,msetrp,movl #24,mtp$trace(r5) 00001DC1 12666 pushr #^m 00001DC3 12667 movab ldt$l_ace(r11),r0 ;copy the ACE in 00001DC7 12668 movc3 r7,(r9),(r0) ;one fell swoop 00001DCB 12669 popr #^m 00001DCD 12670 brw dnfid ;if an ACE was there, don't fake one 00001DD0 12671 ; Check for our file number cache here and FAKE an ACE if none was seen. 00001DD0 12672 ; (Note we might still have an ACE in a too-long ACL; daemon must test that.) 00001DD0 12673 15$: movab ldt$l_fib(r11),r7 ;point at our fib ?01T 00001DD5 12674 .iif df,msetrp,movl #25,mtp$trace(r5) 00001DDA 12675 bitl #32768,ucb$l_ctlflgs(r5) ;pretend ACE is there always? 00001DE3 12676 bneq fakfid ; if bit is set, do so. Use if disk 00001DE5 12677 ; has almost all files marked... 00001DE5 12678 movzwl fib$w_fid(r7),r7 ;this file number ?01F 00001DE9 12679 .if df,wd.lst ?01F 00001DE9 12680 movl #f.nums,r10 ;number of filenumbers JTDRIVER ;skeleton driver implementing u 2-DEC-1994 10:13:13 AMAC V2.1-13-2671 Page 93 V01H START I/O ROUTINE 2-DEC-1994 10:12:45 [EVERHART.JT]JTDRIVER_S2.MAR;120 ?01F 00001DE9 12681 movab ucb$l_fnums(r5),r9 ;store of 16 bit file numbers ?01F 00001DE9 12682 11$: cmpw (r9)+,r7 ;got our file number? ?01F 00001DE9 12683 beql fakfid ;if so gen. an ACE ?01F 00001DE9 12684 sobgtr r10,11$ ;check all ?01T 00001DE9 12685 .iff ?01T 00001DE9 12686 movl ucb$l_fnums(r5),r9 ; address of storage ?01T 00001DEE 12687 beql dnfdj ?01T 00001DF0 12688 bicl #f.mask,r7 ; clear extra bits ?01T 00001DF7 12689 ashl #-3,r7,r10 ; isolate bit number ?01T 00001DFC 12690 addl2 r9,r10 ;address to R10 ?01T 00001DFF 12691 bicl #-8,r7 ; get bit # ?01T 00001E06 12692 bbs r7,(r10),fakfid ; and test if, gen ace if a 1 ?01T 00001E0A 12693 .endc 00001E0A 12694 dnfdj: brw dnfid ;if we see none, continue normally 00001E0D 12695 00001E0D 12696 fakfid: movab ldt$l_ace(r11),r10 ;else gen. our ACE 00001E11 12697 movb #13,(r10)+ ;ace length 00001E14 12698 movb #ace$c_info,(r10)+ ;info flags 00001E17 12699 movw #^xe01,(r10)+ ;other flags (hidden, prot, dmn) 00001E1C 12700 movl #1,(r10)+ ;call daemon 00001E1F 12701 movl acllit,(r10)+ ;flag OUR ACE 00001E26 12702 movb #1,(r10)+ ;and insert an "inspectme" record 00001E29 12703 ; Rest will be 0 from initial zapz call of mem. in LDT on alloc. 00001E29 12704 dnfid: 00001E29 12705 10$: 00001E29 12706 ; Save the file ID from our FIB for possible daemon use. ?01T 00001E29 12707 .iif df,msetrp,movl #26,mtp$trace(r5) 00001E2E 12708 movab ldt$l_fib(r11),r7 ;point at our fib 00001E33 12709 movl fib$w_fid(r7),ldt$l_myfid(r11) 00001E39 12710 movl fib$w_fid+4(r7),ldt$l_myfid+4(r11) 00001E3F 12711 ; Flag for the daemon if the ACL was too darn long. 00001E3F 12712 cmpl ldt$l_aclsiz(r11),#512 ;was acl too long? 00001E48 12713 bleq 15$ ;if leq, no 00001E4A 12714 ; long ACL. If no ACE now, go hunt. 00001E4A 12715 tstb ldt$l_ace(r11) ;ace still null? 00001E4D 12716 bneq 15$ ;if not, leave alone 00001E4F 12717 movl ldt$l_aclsiz(r11),ldt$l_ace(r11) ;else save len 00001E55 12718 movl #<<8*65536>+1>,ldt$l_ace+4(r11) ;and save magic # as flag 00001E5D 12719 15$: 00001E5D 12720 ; Now see if we need to call the daemon. If so, best go and do it, 00001E5D 12721 ; getting back via SKAST. Afterwards, do any priv or ID mods or 00001E5D 12722 ; other alteration if user I/O is to go on; otherwise just do bogus 00001E5D 12723 ; good/bad finish. ?01T 00001E5D 12724 .iif df,msetrp,movl #27,mtp$trace(r5) 00001E62 12725 movl #1,ldt$l_rtnsts(r11) ;set return stat initially ok 00001E67 12726 movab ldt$l_ace(r11),r10 ;point at our ACE 00001E6B 12727 bitl #1,4(r10) ;1 bit means call daemon 00001E74 12728 beqlw 30$ ;if eql no daemon call. X01/001 00001E6F bneq 30087$ X01/002 00001E71 brw 30$ X01/003 00001E74 30087$: 00001E74 12729 ; Need to call daemon. Do mailbox thing like fqdriver, after test that 00001E74 12730 ; daemon exists. ?01T 00001E74 12731 .iif df,msetrp,movl #27,mtp$trace(r5) 00001E79 12732 movl ucb$l_mbxucb(r5),r9 ;mailbox ucb here 00001E83 12733 bgeqw 30$ X01/001 00001E7E blss 30088$ JTDRIVER ;skeleton driver implementing u 2-DEC-1994 10:13:13 AMAC V2.1-13-2671 Page 94 V01H START I/O ROUTINE 2-DEC-1994 10:12:45 [EVERHART.JT]JTDRIVER_S2.MAR;120 X01/002 00001E80 brw 30$ X01/003 00001E83 30088$: ?01T 00001E83 12734 .iif df,msetrp,movl #28,mtp$trace(r5) 00001E88 12735 bitl #ucb$m_online,ucb$l_sts(r9) ;is mbx online? 00001E92 12736 beqlw 30$ ;if not, just issue i/o X01/001 00001E8D bneq 30089$ X01/002 00001E8F brw 30$ X01/003 00001E92 30089$: ?01T 00001E92 12737 .iif df,msetrp,movl #29,mtp$trace(r5) ?01T 00001E97 12738 .if df,evax ?01T 00001E97 12739 tstl ucb$l_refc(r9) ;someone listening? ?01F 00001E9A 12740 .iff ?01F 00001E9A 12741 tstw ucb$w_refc(r9) ;someone listening? ?01F 00001E9A 12742 .endc 00001E9F 12743 bleqw 30$ ;if leq no X01/001 00001E9A bgtr 30090$ X01/002 00001E9C brw 30$ X01/003 00001E9F 30090$: 00001E9F 12744 tstl ucb$l_orb(r9) ;someone own it (daemon)? 00001EA7 12745 bgeqw 30$ ;if geq no X01/001 00001EA2 blss 30091$ X01/002 00001EA4 brw 30$ X01/003 00001EA7 30091$: ?01T 00001EA7 12746 .iif df,msetrp,movl #30,mtp$trace(r5) 00001EAC 12747 ;check daemon pid still valid 00001EAC 12748 pushr #^m 00001EB0 12749 movzwl g^sch$gl_maxpix,r7 ;max process index in VMS 00001EB7 12750 22$: 00001EB7 12751 movl g^sch$gl_pcbvec,r6 ;get pcb vector address 00001EBE 12752 movl (r6)[r7],r8 ;get a PCB address 00001EC2 12753 tstl r8 ;system address should be < 0 00001EC4 12754 bgeq 23$ ;if it seems not to be a pcb forget it 00001EC6 12755 cmpl ucb$l_daemon(r5),pcb$l_pid(r8) ;this our process? 00001ECD 12756 beql 21$ ;if so, jump out of loop 00001ECF 12757 23$: sobgtr r7,22$ ;if not, look at next 00001ED2 12758 clrl ucb$l_daemon(r5) ;if cannot find process, zero our flag 00001ED6 12759 21$: 00001ED6 12760 popr #^m ?01T 00001EDA 12761 .iif df,msetrp,movl #31,mtp$trace(r5) 00001EDF 12762 tstl ucb$l_daemon(r5) ;got our daemon process there? 00001EE8 12763 beqlw 30$ ;if not, skip X01/001 00001EE3 bneq 30092$ X01/002 00001EE5 brw 30$ X01/003 00001EE8 30092$: 00001EE8 12764 ; Looks OK to send a buffer to the daemon. Grab one and send the message, 00001EE8 12765 subl #96,sp ;get buffer on stack 00001EEF 12766 movl sp,r8 ;r8 points at it now 00001EF2 12767 movl r11,(r8) ;pass LDT 00001EF5 12768 movl r5,4(r8) ;pass UCB of JT dvc 00001EF9 12769 movl ucb$l_backlk(r5),8(r8) ;and original dvc UCB (needed...) 00001EFF 12770 movl r10,12(r8) ;point at our ACE 00001F03 12771 movab jtkast,16(r8) ;point at where to send SKAST 00001F09 12772 movl ldt$l_myfid(r11),20(r8) ;pass file id too 00001F0F 12773 movl ldt$l_myfid+4(r11),24(r8) ;all of it... 00001F15 12774 movl ldt$l_accmd(r11),28(r8) ;send how-open info 00001F1A 12775 movl ldt$l_mydid(r11),32(r8) ;also directory ID 00001F20 12776 movl ldt$l_mydid+4(r11),36(r8) ;all of it JTDRIVER ;skeleton driver implementing u 2-DEC-1994 10:13:13 AMAC V2.1-13-2671 Page 95 V01H START I/O ROUTINE 2-DEC-1994 10:12:45 [EVERHART.JT]JTDRIVER_S2.MAR;120 00001F26 12777 ; Reason for sending this stuff is that it's harder to retrieve it 00001F26 12778 ; from another proc. context in thedaemon. 00001F26 12779 movl g^ctl$gl_pcb,40(r8) ;send pcb 00001F2E 12780 movl g^ctl$gl_pcb,r4 00001F35 12781 movl pcb$l_pid(r4),44(r8) ;& pid so we can send an ast 00001F3B 12782 movl pcb$l_epid(r4),48(r8) ;& pid so we can send an ast 00001F41 12783 movl r5,52(r8) ;ucb of JT device 00001F45 12784 ; Now follow ucb$l_ddb to get device name, unit, allocls and 00001F45 12785 ; nodename. 00001F45 12786 pushr #^m 00001F47 12787 movl ucb$l_backlk(r5),r0 ;get device ucb of victim 00001F4C 12788 movzwl ucb$w_unit(r0),56(r8) ;send unit number 00001F51 12789 movl ucb$l_ddb(r0),r1 ;get DDB (name is there) 00001F55 12790 movl ddb$l_allocls(r1),84(r8) ;save alloc class 00001F5A 12791 clrl 60(r8) ;zero nodename 00001F5D 12792 clrl 64(r8) ;(fill in below if it exists. This 00001F60 12793 ; prevents stacked junk from being used. 00001F60 12794 movl ddb$l_sb(r1),r1 ;get sys block if any 00001F64 12795 bgeq 833$ ;if none, omit name grab 00001F66 12796 movl sb$t_nodename(r1),60(r8) ;else save nodename 00001F6B 12797 movl sb$t_nodename+4(r1),64(r8) 00001F70 12798 833$: 00001F70 12799 movl ucb$l_ddb(r0),r1 ;get DDB (name is there) 00001F74 12800 movl ddb$t_name(r1),68(r8) 00001F79 12801 movl ddb$t_name+04(r1),72(r8) 00001F7E 12802 movl ddb$t_name+08(r1),76(r8) 00001F83 12803 movl ddb$t_name+12(r1),80(r8) 00001F88 12804 ; copy device name too. Now msg has all we need to make a unique filename. 00001F88 12805 ; Note we use alloc. class if present, else nodename. 00001F88 12806 popr #^m 00001F8A 12807 00001F8A 12808 movl #1,4(r8) ;flag as an open dmn call 00001F8E 12809 pushr #^m ;ensure ucb etc. get back ?01T 00001F90 12810 .iif df,msetrp,movl #32,mtp$trace(r5) 00001F95 12811 movl r9,r5 ;ucb of mbx unit 00001F98 12812 movl r8,r4 ;where buffer is 00001F9B 12813 movl #96,r3 ;message size 00001FA2 12814 jsb g^exe$wrtmailbox ;emit it 00001FA8 12815 popr #^m 00001FAA 12816 addl2 #96,sp ;fix stack 00001FB1 12817 blbs r0,31$ ;if ok, leave for now 00001FB4 12818 30$: 00001FB4 12819 movl r11,(sp) ;need clean stack, r11=ldt in r0 00001FB7 12820 movl r5,4(sp) ;r1 gets r5 00001FBB 12821 popr #^m 00001FBF 12822 bsbw lclcnt ;helper branch 00001FC2 12823 rsb 00001FC3 12824 31$: ; Here when mailbox write is done. 00001FC3 12825 ; Exit this AST routine and await next. 00001FC3 12826 popr #^m 00001FC7 12827 movl #1,r0 ;say ok 00001FCA 12828 rsb 00001FCB 12829 00001FCB 12830 ; Here for "local" operation to continue with the I/O. 00001FCB 12831 ; This point will merge AST return and fallthru if anything went 00001FCB 12832 ; wrong telling daemon and fallthru where daemon should not be called. 00001FCB 12833 ; At entry expect LDT pointer in R11. JTDRIVER ;skeleton driver implementing u 2-DEC-1994 10:13:13 AMAC V2.1-13-2671 Page 96 V01H START I/O ROUTINE 2-DEC-1994 10:12:45 [EVERHART.JT]JTDRIVER_S2.MAR;120 00001FCB 12834 ; Also we expect jt ucb in r5 00001FCB 12835 lclcnt: .jsb_entry input=,output=r0 00001FCB 12836 ; get stack as we expect it below 00001FCB 12837 pushr #^m 00001FCF 12838 movl r0,r11 ; on entry r0 = ldt 00001FD2 12839 movl r1,r5 ?01T 00001FD5 12840 .iif df,msetrp,movl #33,mtp$trace(r5) 00001FDA 12841 jsb prvidset ;alter privs/idents if appriopriate now 00001FDE 12842 ;(also base prio, etc.) ?01T 00001FDE 12843 .if df,msetrp ?01T 00001FDE 12844 pushl r0 ?01T 00001FE0 12845 movl ldt$l_jtucb(r11),r0 ?01T 00001FE4 12846 movl #133,mtp$trace(r0) ?01T 00001FED 12847 popl r0 ?01T 00001FF0 12848 .endc 00001FF0 12849 movl r11,r0 ;now restore regs of original I/O 00001FF3 12850 movab ldt$l_regs(r0),r1 ;regs save r2-r11 00001FF8 12851 movl (r1)+,r2 00001FFB 12852 movl (r1)+,r3 00001FFE 12853 movl (r1)+,r4 00002001 12854 movl (r1)+,r5 00002004 12855 movl (r1)+,r6 00002007 12856 movl (r1)+,r7 0000200A 12857 movl (r1)+,r8 0000200D 12858 movl (r1)+,r9 00002010 12859 movl (r1)+,r10 00002013 12860 ; movl (r1)+,r11 ;now have all regs back 00002013 12861 ; actually, junk r11 again 00002013 12862 movl r0,r11 00002016 12863 ; Now re-enable proc. delete, suspend, etc. etc. 00002016 12864 ; since we're about to reissue user I/O (or dummy junk it) 00002016 12865 movl ldt$l_prcstr(r11),r10 ;get block of info 0000201A 12866 bgeq 10$ 0000201C 12867 1$: tstl 4(r10) ;check del-inhibit count 0000201F 12868 bleq 2$ ;if 0 or - skip 00002021 12869 decl 4(r10) ;count down del-inhib. 00002024 12870 bgtr 2$ ;if gtr, no reenable 00002026 12871 bicl #,pcb$l_sts(r4) 0000202F 12872 2$: 0000202F 12873 10$: ?01T 0000202F 12874 .if df,msetrp ?01T 0000202F 12875 pushl r0 ?01T 00002031 12876 movl ldt$l_jtucb(r11),r0 ?01T 00002035 12877 movl #233,mtp$trace(r0) ?01T 0000203E 12878 popl r0 ?01T 00002041 12879 .endc 00002041 12880 movl #31,-(sp) ;set ef. to end mainline wait 00002044 12881 calls #1,g^sys$setef ;when we get outta here, that is... ?01T 0000204B 12882 .if df,msetrp ?01T 0000204B 12883 pushl r0 ?01T 0000204D 12884 movl ldt$l_jtucb(r11),r0 ?01T 00002051 12885 movl #333,mtp$trace(r0) ?01T 0000205A 12886 popl r0 ?01T 0000205D 12887 .endc 0000205D 12888 ; This should allow the mainline to go on. 0000205D 12889 ; get conditional softlink to return 7,not 1, so we can zap privs back 0000205D 12890 cmpl ldt$l_rtnsts(r11),#7 ;cond. softlink path? JTDRIVER ;skeleton driver implementing u 2-DEC-1994 10:13:13 AMAC V2.1-13-2671 Page 97 V01H START I/O ROUTINE 2-DEC-1994 10:12:45 [EVERHART.JT]JTDRIVER_S2.MAR;120 00002062 12891 bneq 53$ 00002064 12892 movl #1,ldt$l_rtnsts(r11) ;yes, reset to just status 1 00002069 12893 pushr #^m 0000206D 12894 ; Do not blow the LDT away at this point. Just reset privs to orig. etc. 0000206D 12895 movl g^ctl$gl_pcb,r4 ?01T 00002074 12896 .if df,evax ?01T 00002074 12897 movl ldt$l_bprio(r11),pcb$l_prib(r4) ?01F 00002079 12898 .iff ?01F 00002079 12899 movb ldt$l_bprio(r11),pcb$b_prib(r4) ?01F 00002079 12900 .endc 00002079 12901 movl ldt$l_wprv(r11),pcb$q_priv(r4) 0000207F 12902 movl ldt$l_wprv+4(r11),pcb$q_priv+4(r4) 00002085 12903 movl ldt$l_wprv(r11),g^ctl$gq_procpriv 0000208D 12904 movl ldt$l_wprv+4(r11),g^ctl$gq_procpriv+4 00002095 12905 movl g^ctl$gl_phd,r4 0000209C 12906 movl ldt$l_aprv(r11),phd$q_authpriv(r4) 000020A2 12907 movl ldt$l_aprv+4(r11),phd$q_authpriv+4(r4) 000020A8 12908 movl ldt$l_wprv(r11),phd$q_privmsk(r4) 000020AD 12909 movl ldt$l_wprv+4(r11),phd$q_privmsk+4(r4) ?01T 000020B2 12910 .if df,msetrp ?01T 000020B2 12911 pushl r0 ?01T 000020B4 12912 movl ldt$l_jtucb(r11),r0 ?01T 000020B8 12913 movl #433,mtp$trace(r0) ?01T 000020C1 12914 popl r0 ?01T 000020C4 12915 .endc 000020C4 12916 jsb undoid ; reset identifiers too ?01T 000020C8 12917 .if df,msetrp ?01T 000020C8 12918 pushl r0 ?01T 000020CA 12919 movl ldt$l_jtucb(r11),r0 ?01T 000020CE 12920 movl #533,mtp$trace(r0) ?01T 000020D7 12921 popl r0 ?01T 000020DA 12922 .endc 000020DA 12923 popr #^m 000020DE 12924 53$: 000020DE 12925 movl r5,ldt$l_chnucb(r11) ;save original chnl ucb 000020E2 12926 cmpl ldt$l_rtnsts(r11),#5 ;just did r/o softl inswap? 000020E7 12927 beql 353$ 000020E9 12928 jsb setsoftl ;handle softlinks if enabled and needed. 000020ED 12929 353$: ?01T 000020ED 12930 .if df,msetrp ?01T 000020ED 12931 pushl r0 ?01T 000020EF 12932 movl ldt$l_jtucb(r11),r0 ?01T 000020F3 12933 movl #633,mtp$trace(r0) ?01T 000020FC 12934 popl r0 ?01T 000020FF 12935 .endc 000020FF 12936 cmpl r5,ccb$l_ucb(r6) ;new ucb for i/o? 00002103 12937 beql 12$ ;if eql no. 00002105 12938 jsb movldt ;else move LDT to new JT unit links 00002109 12939 12$: ?01T 00002109 12940 .if df,msetrp ?01T 00002109 12941 pushl r0 ?01T 0000210B 12942 movl ldt$l_jtucb(r11),r0 ?01T 0000210F 12943 movl #733,mtp$trace(r0) ?01T 00002118 12944 popl r0 ?01T 0000211B 12945 .endc 0000211B 12946 movl ccb$l_ucb(r6),r5 ;get ccb ucb now 0000211F 12947 movl r5,irp$l_ucb(r3) ;reset IRP device also JTDRIVER ;skeleton driver implementing u 2-DEC-1994 10:13:13 AMAC V2.1-13-2671 Page 98 V01H START I/O ROUTINE 2-DEC-1994 10:12:45 [EVERHART.JT]JTDRIVER_S2.MAR;120 00002123 12948 ;now grab the args and save on stack. 00002123 12949 ; i.e., DO the user's I/O for him. 00002123 12950 ; Get args out of LDT 00002123 12951 subl #24,sp 00002126 12952 movl sp,r10 ;arg area in r10 00002129 12953 movl ldt$l_parm+00(r11),00(r10) 0000212F 12954 movl ldt$l_parm+04(r11),04(r10) 00002135 12955 movl ldt$l_parm+08(r11),08(r10) 0000213B 12956 movl ldt$l_parm+12(r11),12(r10) 00002141 12957 movl ldt$l_parm+16(r11),16(r10) ?01F 00002147 12958 .if ndf,evax ?01F 00002147 12959 movl #0,20(r10) ?01T 00002147 12960 .iff ?01T 00002147 12961 movl irp$l_qio_p6(r3),20(r10) ?01T 0000214D 12962 .endc 0000214D 12963 ; on vax, restore original PSL (for previous mode) here. ?01F 0000214D 12964 .if ndf,evax ?01F 0000214D 12965 movl ldt$l_psl(r11),-(sp) ;get to original I/O PSL ?01F 0000214D 12966 bsbb 301$ ?01F 0000214D 12967 brb 302$ ?01F 0000214D 12968 301$: rei ?01F 0000214D 12969 302$: ?01F 0000214D 12970 .endc ?01F 0000214D 12971 .if df,evxrei ?01F 0000214D 12972 movl ldt$l_psl(r11),-(sp) ;get to original I/O PSL ?01F 0000214D 12973 clrl -(sp) ?01F 0000214D 12974 pushab 301$ ; get 4 byte addr ?01F 0000214D 12975 movl #-1,-(sp) ; now have pc,ps on stack as 8 bytes ?01F 0000214D 12976 evax_stq r7,-(sp) ?01F 0000214D 12977 evax_stq r6,-(sp) ?01F 0000214D 12978 evax_stq r5,-(sp) ?01F 0000214D 12979 evax_stq r4,-(sp) ?01F 0000214D 12980 evax_stq r3,-(sp) ?01F 0000214D 12981 evax_stq r2,-(sp) ;ready for PAL call ?01F 0000214D 12982 evax_imb ?01F 0000214D 12983 evax_rei ?01F 0000214D 12984 addl2 #64,sp ;never execute but keep macro-32 happy ?01F 0000214D 12985 301$: ?01F 0000214D 12986 .endc ?01F 0000214D 12987 .if df,evxr64d ?01F 0000214D 12988 pushl r0 ?01F 0000214D 12989 pushl r1 ?01F 0000214D 12990 pushl ldt$l_psl(r11) ;get original psl ?01F 0000214D 12991 .iif df,x$$$dt, jsb g^ini$brk ;*************** debug ************ ?01F 0000214D 12992 calls #1,g^evxr64 ?01F 0000214D 12993 .iif df,x$$$dt, jsb g^ini$brk ;*************** debug ************ ?01F 0000214D 12994 popl r1 ?01F 0000214D 12995 popl r0 ?01F 0000214D 12996 .endc 0000214D 12997 ; Now see...should we junk the I/O? ?01T 0000214D 12998 .if df,msetrp ?01T 0000214D 12999 pushl r0 ?01T 0000214F 13000 movl ldt$l_jtucb(r11),r0 ?01T 00002153 13001 movl #833,mtp$trace(r0) ?01T 0000215C 13002 popl r0 ?01T 0000215F 13003 .endc 0000215F 13004 cmpl ldt$l_rtnsts(r11),#3 ;secret "fake success"? JTDRIVER ;skeleton driver implementing u 2-DEC-1994 10:13:13 AMAC V2.1-13-2671 Page 99 V01H START I/O ROUTINE 2-DEC-1994 10:12:45 [EVERHART.JT]JTDRIVER_S2.MAR;120 00002164 13005 beql 50$ 00002166 13006 blbc ldt$l_rtnsts(r11),60$ ;or generate i/o fail? 0000216B 13007 ; no i/o junking...reissue user I.O. 0000216B 13008 EXTZV #IRP$V_FCODE,#IRP$S_FCODE,IRP$L_FUNC(R3),R1 ; GET FCN CODE 00002171 13009 pushr #^m 00002175 13010 jsb getjtucb ;find JT UCB (safely) 00002179 13011 tstl r0 ;got it? 0000217B 13012 bgeq 199$ ;if not branch (should never happen) ?01T 0000217D 13013 .iif df,msetrp,movl #933,mtp$trace(r0) 00002186 13014 movl ucb$l_oldfdt(r0),r7 0000218B 13015 bgeq 199$ ;if prev fdt illegal, fail 0000218D 13016 ; movl ucb$l_ddt(r5),r7 ;find FDT 0000218D 13017 ; Here rely on the fact that we got here via our modified FDT call and that 0000218D 13018 ; the orig. FDT is stored just a bit past the current one. 0000218D 13019 ; movl (r7),r7 ;point at orig. FDT 0000218D 13020 addl2 #8,r7 ;point at one of 64 fdt addresses 00002190 13021 ; Get the routine address we need now using the IRP function... 00002190 13022 EXTZV #IRP$V_FCODE,#IRP$S_FCODE,IRP$L_FUNC(R3),R1 ; GET FCN CODE 00002196 13023 movl (r7)[r1],r8 ;r7 is desired routine address 0000219A 13024 ;now call the "official" FDT code 0000219A 13025 ; Note: the FDT code would normally be called from a $qio with the previous 0000219A 13026 ; mode set accordingly. Here we're inside a skast, no guarantees that the 0000219A 13027 ; previous mode is set right. This means we can't count on access checks being 0000219A 13028 ; right without resetting it by hand. Do so here. ?01T 0000219A 13029 .if df,evax ?01T 0000219A 13030 subl2 #16,sp ; make some stack room ?01T 0000219D 13031 evax_rd_ps ?01T 000021A3 13032 ; psl now in R0 ?01T 000021A3 13033 evax_stq r0,(sp) ;save our current psl ?01T 000021A6 13034 evax_stq r16,8(sp) ;save r16 which we must mess with ?01T 000021AA 13035 movl ldt$l_psl(r11),r0 ;get original psw ?01T 000021AF 13036 bicl #^c3,r0 ;leave low 2 bits only ?01T 000021B6 13037 movl r0,-(sp) ;save a moment ?01T 000021B9 13038 movl 4(sp),r0 ;get current psl ?01T 000021BD 13039 bicl #3,r0 ;zero prev. mode ?01T 000021C0 13040 bisl (sp)+,r0 ;get correct original prev mode ?01T 000021C3 13041 evax_or r0,r31,r16 ;put into r16 for palcode ?01T 000021C7 13042 evax_wr_ps_sw ?01T 000021CD 13043 .endc 000021CD 13044 pushl r6 ;ccb 000021CF 13045 pushl r5 ;ucb 000021D1 13046 pushl r4 ;pcb 000021D3 13047 pushl r3 ;irp ?01T 000021D5 13048 .if df,msetrp ?01T 000021D5 13049 pushl r0 ?01T 000021D7 13050 movl ldt$l_jtucb(r11),r0 ?01T 000021DB 13051 movl #1033,mtp$trace(r0) ?01T 000021E4 13052 movl r8,mtp$r1(r0) ?01T 000021E9 13053 popl r0 ?01T 000021EC 13054 .endc 000021EC 13055 calls #4,(r8) ;Call the original routine ?01T 000021EF 13056 .if df,evax ?01T 000021EF 13057 evax_ldq r16,(sp) ;get psl from before fdt code call ?01T 000021F2 13058 evax_wr_ps_sw ; restore previous mode bits ?01T 000021F8 13059 evax_ldq r16,8(sp) ;now get r16 back as before we mucked ?01T 000021FC 13060 addl2 #16,sp ?01T 000021FF 13061 .endc JTDRIVER ;skeleton driver implementing u 2-DEC-1994 10:13:13 AMAC V2.1-13-2671 Page 100 V01H START I/O ROUTINE 2-DEC-1994 10:12:45 [EVERHART.JT]JTDRIVER_S2.MAR;120 000021FF 13062 popr #^m 00002203 13063 brb 1199$ 00002205 13064 ; 00002205 13065 ; Get to 199$ if structures are illegal. Should never happen. 00002205 13066 199$: 00002205 13067 popr #^m 00002209 13068 movl #16,r0 00002221 13069 call_finishioc do_ret=no ;lose if illegal structures X01/002 0000220C CLRL R1 X02/011 0000220E MOVL R0,IRP$L_IOST1(R3) X02/012 00002212 MOVL R1,IRP$L_IOST2(R3) X02/014 00002216 PUSHL R5 X02/015 00002218 PUSHL R3 X02/016 0000221A CALLS #2,G^EXE_STD$FINISHIO 00002221 13070 addl2 #24,sp 00002224 13071 popr #^m 00002228 13072 rsb ;exit lclcnt routine 00002229 13073 1199$: 00002229 13074 ; callg (r10),fdtlop ;reissue user FDTs 0000222C 13075 setipl ipl=#2,environ=UNIPROCESSOR X01/005 ?01T 00002229 MTPR #2,S^#PR$_IPL 0000222C 13076 ; axp stores final context in context cell 0000222C 13077 ; Therefore grab that result here, not just R0 which ordinarily from a 0000222C 13078 ; top FDT routine will have a warning status 0000222C 13079 ; To merge with everything else, however, store in R0 ?01T 0000222C 13080 .if df,evax ?01T 0000222C 13081 movl ldt$l_fdtctx(r11),r0 ?01T 00002231 13082 movl fdt_context$l_qio_status(r0),r0 ?01T 00002235 13083 .endc 00002235 13084 brw 70$ 00002238 13085 50$: 00002238 13086 ; Daemon disallowed the I/O so undo any driver-done mods to the 00002238 13087 ; process (privs, ids, base prio) since we will NOT be closing the file. ?01T 00002238 13088 .if df,msetrp ?01T 00002238 13089 pushl r0 ?01T 0000223A 13090 movl ldt$l_jtucb(r11),r0 ?01T 0000223E 13091 movl #1133,mtp$trace(r0) ?01T 00002247 13092 movl 4(sp),mtp$trc2(r0) ;save r0 as of just after user i/o ?01T 0000224D 13093 popl r0 ?01T 00002250 13094 .endc 00002250 13095 jsb clnprv 00002254 13096 pushl r0 00002256 13097 pushl r1 00002258 13098 movl #1,r0 00002270 13099 call_finishioc do_ret=no X01/002 0000225B CLRL R1 X02/011 0000225D MOVL R0,IRP$L_IOST1(R3) X02/012 00002261 MOVL R1,IRP$L_IOST2(R3) X02/014 00002265 PUSHL R5 X02/015 00002267 PUSHL R3 X02/016 00002269 CALLS #2,G^EXE_STD$FINISHIO 00002270 13100 ; callg (r10),fdtxit ;fake success 00002270 13101 brb 170$ 00002272 13102 60$: 00002272 13103 ; Daemon disallowed the I/O so undo any driver-done mods to the 00002272 13104 ; process (privs, ids, base prio) since we will NOT be closing the file. 00002272 13105 jsb clnprv JTDRIVER ;skeleton driver implementing u 2-DEC-1994 10:13:13 AMAC V2.1-13-2671 Page 101 V01H START I/O ROUTINE 2-DEC-1994 10:12:45 [EVERHART.JT]JTDRIVER_S2.MAR;120 00002276 13106 pushl r0 00002278 13107 pushl r1 0000227A 13108 movl #ss$_nopriv,r0 00002292 13109 call_finishioc do_ret=no X01/002 0000227D CLRL R1 X02/011 0000227F MOVL R0,IRP$L_IOST1(R3) X02/012 00002283 MOVL R1,IRP$L_IOST2(R3) X02/014 00002287 PUSHL R5 X02/015 00002289 PUSHL R3 X02/016 0000228B CALLS #2,G^EXE_STD$FINISHIO 00002292 13110 ; callg (r10),fdtbxt ;failure 00002292 13111 170$: 00002292 13112 popl r1 00002295 13113 popl r0 ;get back r0,r1. r1=new r10 from clnup 00002298 13114 cmpl r0,r1 ;same ucb? 0000229B 13115 beql 70$ ;if so nothing more needed 0000229D 13116 ; clnup found a softlink channel but the daemon disallowed the I/O 0000229D 13117 ; so reset the channel back to the original device here. 0000229D 13118 movl r1,r10 000022A0 13119 movl ccb$l_ucb(r6),r9 ;keep old ucb a mo... 000022A4 13120 movl r10,ccb$l_ucb(r6) ;reset user channel to orig. device 000022A8 13121 ; adjust ref counts now ?01T 000022A8 13122 .if df,evax ?01T 000022A8 13123 decl ucb$l_refc(r9) ;1 less chnl on old dvc ?01T 000022AB 13124 bgtr 174$ ;if 1+, ok ?01T 000022AD 13125 movl #1,ucb$l_refc(r9) ;mounted dsk should have 1 or more ?01T 000022B1 13126 174$: incl ucb$l_refc(r10) ;bump new count again ?01F 000022B4 13127 .iff ?01F 000022B4 13128 decw ucb$w_refc(r9) ;1 less chnl on old dvc ?01F 000022B4 13129 bgtr 174$ ;if 1+, ok ?01F 000022B4 13130 movw #1,ucb$w_refc(r9) ;mounted dsk should have 1 or more ?01F 000022B4 13131 174$: incw ucb$w_refc(r10) ;bump new count again ?01F 000022B4 13132 .endc 000022B4 13133 ; 000022B4 13134 70$: 000022B4 13135 addl2 #24,sp ?01T 000022B7 13136 .if df,msetrp ?01T 000022B7 13137 pushl r0 ?01T 000022B9 13138 movl ldt$l_jtucb(r11),r0 ?01T 000022BD 13139 movl #1233,mtp$trace(r0) ?01T 000022C6 13140 movl 4(sp),mtp$trc2(r0) ;save r0 as of just after user i/o ?01T 000022CC 13141 popl r0 ?01T 000022CF 13142 .endc 000022CF 13143 movl ldt$l_synch(r11),r10 ;get synch block address 000022D3 13144 ; gotta end mainline wait 000022D3 13145 bgeq 3$ ;skip if illegal 000022D5 13146 movl r0,(r10) ;end the wait now 000022D8 13147 bneq 3$ 000022DA 13148 movl #2,(r10) ;set nonzero if it was 0 000022DD 13149 3$: 000022DD 13150 movl ldt$l_prcstr(r11),r10 ;get block of info 000022E1 13151 bgeq 20$ 000022E3 13152 tstl (r10) ;see if any threads counted 000022E5 13153 beql 71$ 000022E7 13154 decl (r10) ;count down threads used 000022E9 13155 71$: movl #31,-(sp) ;set ef. to end mainline wait 000022EC 13156 pushl r0 ;save user's fdt r0 JTDRIVER ;skeleton driver implementing u 2-DEC-1994 10:13:13 AMAC V2.1-13-2671 Page 102 V01H START I/O ROUTINE 2-DEC-1994 10:12:45 [EVERHART.JT]JTDRIVER_S2.MAR;120 000022EE 13157 calls #1,g^sys$setef ;when we get outta here, that is... 000022F5 13158 popl r0 000022F8 13159 20$: 000022F8 13160 blbs r0,25$ ;if user i/o failed, reset his 000022FB 13161 ; ; privs, prio for him. 000022FB 13162 movl g^ctl$gl_pcb,r4 ?01T 00002302 13163 .if df,evax ?01T 00002302 13164 movl ldt$l_bprio(r11),pcb$l_prib(r4) ?01F 00002307 13165 .iff ?01F 00002307 13166 movb ldt$l_bprio(r11),pcb$b_prib(r4) ?01F 00002307 13167 .endc 00002307 13168 movl ldt$l_wprv(r11),pcb$q_priv(r4) 0000230D 13169 movl ldt$l_wprv+4(r11),pcb$q_priv+4(r4) 00002313 13170 movl ldt$l_wprv(r11),g^ctl$gq_procpriv 0000231B 13171 movl ldt$l_wprv+4(r11),g^ctl$gq_procpriv+4 00002323 13172 movl g^ctl$gl_phd,r4 0000232A 13173 movl ldt$l_aprv(r11),phd$q_authpriv(r4) 00002330 13174 movl ldt$l_aprv+4(r11),phd$q_authpriv+4(r4) 00002336 13175 movl ldt$l_wprv(r11),phd$q_privmsk(r4) 0000233B 13176 movl ldt$l_wprv+4(r11),phd$q_privmsk+4(r4) 00002340 13177 pushl r10 00002342 13178 jsb undoid 00002346 13179 popl r10 00002349 13180 25$: ?01T 00002349 13181 .if df,msetrp ?01T 00002349 13182 pushl r0 ?01T 0000234B 13183 movl ldt$l_jtucb(r11),r0 ?01T 0000234F 13184 movl #1333,mtp$trace(r0) ?01T 00002358 13185 movl sp,mtp$trc3(r0) ?01T 0000235D 13186 popl r0 ?01T 00002360 13187 .endc 00002360 13188 ; exit the AST. ?01T 00002360 13189 .iif df,x$$$dt, jsb g^ini$brk ;************************debug****** 00002366 13190 popr #^m 0000236A 13191 movl #1,r0 ;say ok 0000236D 13192 rsb 0000236E 13193 0000236E 13194 ; Local grant/revoke ID code needed because vms internal code won't 0000236E 13195 ; work above IPL0. Ripped off vms listings so's it'll work right, 0000236E 13196 ; kludged by hand to just set things up internally for current 0000236E 13197 ; process only. 0000236E 13198 ; Argument list offsets 0000236E 13199 ; 00000004 0000236E 13200 v.pidadr = 4 ; address of PID 00000008 0000236E 13201 v.prcnam = 8 ; address of process name desc 0000000C 0000236E 13202 v.id = 12 ; address of identifier and attrib 00000010 0000236E 13203 v.name = 16 ; address of identifier name desc 00000010 0000236E 13204 v.mode = 16 ; grant/revoke mode for kernel routine 00000014 0000236E 13205 v.prvatr = 20 ; address for previous attributes 0000236E 13206 ;++ 0000236E 13207 ; 0000236E 13208 ; GRANTID - grant identifier to process 0000236E 13209 ; REVOKID - revoke identifier from process 0000236E 13210 ; 0000236E 13211 ; CALLING SEQUENCE: 0000236E 13212 ; GRANTID (v.pidadr, v.prcnam, ID, NAME, PRVATR) 0000236E 13213 ; REVOKID (v.pidadr, v.prcnam, ID, NAME, PRVATR) JTDRIVER ;skeleton driver implementing u 2-DEC-1994 10:13:13 AMAC V2.1-13-2671 Page 103 V01H START I/O ROUTINE 2-DEC-1994 10:12:45 [EVERHART.JT]JTDRIVER_S2.MAR;120 0000236E 13214 ; 0000236E 13215 ; INPUT PARAMETERS: 0000236E 13216 ; v.pidadr: address of PID of process 0000236E 13217 ; v.prcnam: address of descriptor of process name 0000236E 13218 ; ID: address of identifier to grant 0000236E 13219 ; NAME: address of descriptor of identifier name 0000236E 13220 ; 0000236E 13221 ; IMPLICIT INPUTS: 0000236E 13222 ; NONE 0000236E 13223 ; 0000236E 13224 ; OUTPUT PARAMETERS: 0000236E 13225 ; v.pidadr: address to store resulting PID 0000236E 13226 ; IDADDR: address to store resulting identifier 0000236E 13227 ; PRVATR: previous attributes of superseded or revoked identifier 0000236E 13228 ; 0000236E 13229 ;-- ?01T 0000236E 13230 .if df,evax ?01T 00002370 13231 grantid: .call_entry preserve=,home_args=true,max_args=6 00000001 X01/034 ?02T 0000236E .iif identical true, , _MTU_DIR_ARG_3 = 1 ?01F 00002370 13232 .iff ?01F 00002370 13233 .entry grantid,^m ?01F 00002370 13234 .endc 00002370 13235 MOVL #1,R3 ; set grant mode 00002373 13236 BRB gr10$ 1....... %AMAC-I-BRANCHBET, (1) branch between routines from routine GRANTID ?01T 00002375 13237 .if df,evax ?01T 00002377 13238 revokid: .call_entry preserve=,home_args=true,max_args=6 00000001 X01/034 ?02T 00002375 .iif identical true, , _MTU_DIR_ARG_3 = 1 ?01F 00002377 13239 .iff ?01F 00002377 13240 .entry revokid,^m ?01F 00002377 13241 .endc 00002377 13242 CLRL R3 ; set revoke mode 00002379 13243 gr10$: 00002379 13244 MOVL v.id(AP),R2 ; get pointer to identifier 0000237D 13245 BNEQ 20$ ; branch if ID specified 0000237F 13246 CLRQ -(SP) ; allocate ID buffer on stack 00002381 13247 MOVL SP,R2 ; and set pointer 00002384 13248 00002384 13249 20$: TSTL (R2) ; see if a binary ID is supplied 00002386 13250 BNEQ 30$ ; if so, skip conversion 00002388 13251 brw 40$ ; call kernel mode routine with 0000238B 13252 30$: PUSHL v.prvatr(AP) ; previous attributes 0000238E 13253 MOVQ R2,-(SP) ; identifier and mode 00002391 13254 MOVQ v.pidadr(AP),-(SP) ; v.pidadr & v.prcnam 1....... %AMAC-I-MEMREFNOT, (1) memory reference not naturally aligned in routine GRANTID 00002395 13255 ; movl r2,-(sp) 00002395 13256 ; movl r3,-(sp) 00002395 13257 ; movl v.pidadr(ap),-(sp) 00002395 13258 ; movl v.pidadr+4(ap),-(sp) 00002395 13259 calls #5,grant_revoke ; go do the work. Already in knl mode 0000239C 13260 40$: RET 0000239D 13261 0000239D 13262 ;++ JTDRIVER ;skeleton driver implementing u 2-DEC-1994 10:13:13 AMAC V2.1-13-2671 Page 104 V01H START I/O ROUTINE 2-DEC-1994 10:12:45 [EVERHART.JT]JTDRIVER_S2.MAR;120 0000239D 13263 ; 0000239D 13264 ; GRANT_REVOKE - kernel mode rights list handling 0000239D 13265 ; 0000239D 13266 ; FUNCTIONAL DESCRIPTION: 0000239D 13267 ; 0000239D 13268 ; This routine does the kernel mode processing to grant or 0000239D 13269 ; revoke an identifier. It locates the specified process 0000239D 13270 ; and searches and modifies the rights list. 0000239D 13271 ; 0000239D 13272 ; CALLING SEQUENCE: 0000239D 13273 ; GRANT_REVOKE (v.pidadr, v.prcnam, ID, MODE, PRVATR) 0000239D 13274 ; 0000239D 13275 ; INPUT PARAMETERS: 0000239D 13276 ; v.pidadr: address of PID of process 0000239D 13277 ; v.prcnam: address of descriptor of process name 0000239D 13278 ; ID: address of identifier to grant 0000239D 13279 ; MODE: 0 to revoke identifier, 1 to grant 0000239D 13280 ; 0000239D 13281 ; IMPLICIT INPUTS: 0000239D 13282 ; NONE 0000239D 13283 ; 0000239D 13284 ; OUTPUT PARAMETERS: 0000239D 13285 ; v.pidadr: address to store resulting PID 0000239D 13286 ; PRVATR: previous attributes of superseded identifier 0000239D 13287 ; 0000239D 13288 ; IMPLICIT OUTPUTS: 0000239D 13289 ; NONE 0000239D 13290 ; 0000239D 13291 ; SIDE EFFECTS: 0000239D 13292 ; Identifier entered in specified rights list 0000239D 13293 ; 0000239D 13294 ;-- 0000239D 13295 0000239D 13296 ; Main subroutine entry point. 0000239D 13297 ; Works on current process, but is OK at elevated IPL (well, ASTDEL...) 0000239D 13298 ; 0000239D 13299 .entry grant_revoke,^M 0000239F 13300 ;GRANT_REVOKE: 0000239F 13301 ; .WORD ^M 0000239F 13302 CLRQ R7 ; init rights vector index and free pointer 000023A1 13303 MOVL R4,R6 ; save PCB addr in R6 000023A4 13304 movl g^ctl$gl_pcb,r4 ; current process 000023C0 13503 lock lockname=sched,preserve=no ;set synch like exe$nampid does X01/178 ?01T 000023AB BLBC SMP$GL_FLAGS,30095$ X01/184 ?01T 000023B2 MOVL S^#SPL$C_sched,R0 X01/190 ?02T 000023B5 JSB G^SMP$ACQUIRE X01/198 ?02T 000023BB BRB 30096$ X01/201 ?01T 000023BD 30095$: X02/208 ?03T 000023BD MTPR S^#IPL$_sched,S^#PR$_IPL X01/232 ?01T 000023C0 30096$: 000023C0 13504 movl pcb$l_pid(r4),r1 ; get current process' IPID 000023DE 13631 unlock lockname=sched,newipl=#ipl$_ASTDEL X01/106 ?01T 000023C5 BLBC SMP$GL_FLAGS,30101$ X02/110 ?02T 000023CC EVAX_STQ R0, -(SP) X01/114 ?01T 000023CF MOVL S^#SPL$C_sched,R0 X01/125 ?02T 000023D2 JSB G^SMP$RELEASE X02/130 ?02T 000023D8 EVAX_LDQ R0, (SP)+ JTDRIVER ;skeleton driver implementing u 2-DEC-1994 10:13:13 AMAC V2.1-13-2671 Page 105 V01H START I/O ROUTINE 2-DEC-1994 10:12:45 [EVERHART.JT]JTDRIVER_S2.MAR;120 X01/133 ?01T 000023DB 30101$: X01/135 ?02T 000023DB MTPR #ipl$_ASTDEL,S^#PR$_IPL 000023DE 13632 movl #ss$_normal,r0 ;fake the exe$nampid call 000023E1 13633 MOVL R4,R6 ; save PCB address 000023E4 13634 50$: MOVL PCB$Q_PRIV+ARB$L_RIGHTSLIST(R6)[R7],R4 ; get rights list descriptor 000023EA 13635 BEQL 100$ ; branch if none present 000023EC 13636 ASHL #-3,(R4)+,R3 ; get rights list length 000023F1 13637 MOVL (R4),R4 ; and rights list address 000023F4 13638 000023F4 13639 60$: MOVL v.id(AP),R1 ; get address of identifier 000023F8 13640 ; this is an internal call...KNOW we can access args. 000023F8 13641 movl 4(r1),r2 000023FC 13642 movl (r1),r1 000023FF 13643 ; MOVQ (R1),R1 ; get identifier and attributes 000023FF 13644 ; MOVL v.prvatr(AP),R5 ; get pointer to prev. atr. longword 000023FF 13645 clrl r5 ; no prev attrs 00002401 13646 BRB 90$ ; dive into loop 00002403 13647 ; 00002403 13648 ; To here when an empty entry is encountered in a list 00002403 13649 ; 00002403 13650 70$: TSTL R8 ; check if we already have one 00002405 13651 BNEQ 100$ ; branch if so 00002407 13652 MOVL R4,R8 ; otherwise save the pointer 0000240A 13653 BRB 100$ ; chain to next list if any 0000240C 13654 ; 0000240C 13655 ; Search the rights list for the desired identifier 0000240C 13656 ; 0000240C 13657 80$: MOVL (R4),R0 ; get next identifier from rights list 0000240F 13658 BEQL 70$ ; if zero, end of list 00002411 13659 CMPL R0,R1 ; see if matches desired ID 00002414 13660 BEQL 140$ ; if yes, exit loop 00002416 13661 ADDL #8,R4 ; next list entry 00002419 13662 90$: SOBGEQ R3,80$ ; loop throught rights list 0000241C 13663 ; 0000241C 13664 ; Identifier not found in this list. 0000241C 13665 ; 0000241C 13666 100$: TSTL R7 ; check which list in use 0000241E 13667 BNEQ 110$ ; branch if not first 00002420 13668 ADDL #2,R7 ; point to extended rights list 00002423 13669 BRB 50$ ; and search it 00002425 13670 00002425 13671 110$: BLBC v.mode(AP),120$ ; branch if attempted revoke 00002429 13672 TSTL R8 ; see if empty entry found 0000242B 13673 BEQL 180$ ; branch if not 0000242D 13674 movl r1,(r8) 00002430 13675 movl r2,4(r8) 00002434 13676 ; MOVQ R1,(R8) ; store identifier in list 00002434 13677 120$: MOVL #SS$_WASCLR,R0 ; if revoke - benign success 00002437 13678 130$: RET 00002438 13679 ; 00002438 13680 ; Specified identifier found in rights list 00002438 13681 ; 00002438 13682 140$: TSTL R5 ; see if prev attributes to be returned 0000243A 13683 BEQL 150$ ; branch if not 0000243C 13684 MOVL 4(R4),(R5) ; store previous attribites 00002440 13685 150$: BLBC v.mode(AP),160$ ; branch to do revoke 00002444 13686 movl r1,(r4) JTDRIVER ;skeleton driver implementing u 2-DEC-1994 10:13:13 AMAC V2.1-13-2671 Page 106 V01H START I/O ROUTINE 2-DEC-1994 10:12:45 [EVERHART.JT]JTDRIVER_S2.MAR;120 00002447 13687 movl r2,4(r4) 0000244B 13688 ; MOVQ R1,(R4) ; store identifier in rights list 0000244B 13689 BRB 170$ 0000244D 13690 0000244D 13691 160$: ASHL #3,R3,R3 ; compute remaining list size 00002451 13692 ADDL3 #8,R3,R0 ; compute size plus one entry 00002455 13693 MOVC5 R3,8(R4),#0,R0,(R4) ; collapse out found list entry 0000245C 13694 170$: MOVL #SS$_WASSET,R0 ; set return status 0000245F 13695 RET 00002460 13696 ; 00002460 13697 ; No empty entries available - extend the rights list 00002460 13698 ; 00002460 13699 180$: CLRQ R1 ; assume no block present 00002462 13700 MOVL PCB$Q_PRIV+ARB$L_RIGHTSLIST(R6)[R7],R9 ; point to rights list again 00002468 13701 BEQL 190$ ; branch if none exists 0000246A 13702 movl (r9),r1 0000246D 13703 movl 4(r9),r2 00002471 13704 ; MOVQ (R9),R1 ; get current block size and address 00002471 13705 190$:; MOVQ R1,R3 ; save size and addr for later 00002471 13706 movl r1,r3 00002474 13707 movl r2,r4 00002477 13708 ADDL #ARB$S_LOCALRIGHTS+16,R1 ; increase size and add overhead 0000247E 13709 JSB G^EXE$ALONONPAGED ; and allocate a new one 00002484 13710 BLBC R0,130$ ; branch on failure 00002487 13711 MOVL R2,R5 ; save block address 0000248A 13712 SUBL3 #16,R1,(R2)+ ; set up actual list length 0000248E 13713 MOVAB 8(R2),(R2)+ ; and descriptor pointer 00002492 13714 MOVW R1,(R2)+ ; block length 00002495 13715 MOVW #DYN$C_RIGHTSLIST,(R2)+ ; and block type 0000249A 13716 movl r4,-(sp) 0000249D 13717 movl r5,-(sp) 000024A0 13718 ; MOVQ R4,-(SP) ; save R4 & R5 000024A0 13719 MOVC5 R3,(R4),#0,(R5),(R2) ; copy the contents and zero rest 000024A6 13720 ; MOVQ (SP)+,R4 ; restore regs 000024A6 13721 movl (sp)+,r5 000024A9 13722 movl (sp)+,r4 000024AC 13723 BLBC R7,200$ ; branch if extended process list 000024AF 13724 MOVL (R5),G^EXE$GQ_RIGHTSLIST ; and store in system descriptor 000024B6 13725 MOVL 4(R5),G^EXE$GQ_RIGHTSLIST+4 ; and store in system descriptor 000024BE 13726 MOVL R4,R0 ; get pointer to old block 000024C1 13727 BEQL 220$ ; branch if none 000024C3 13728 SUBL #12,R0 ; point to start of block 000024C6 13729 BRB 210$ 000024C8 13730 000024C8 13731 200$: MOVL R5,PCB$Q_PRIV+ARB$L_RIGHTSLIST(R6)[R7] ; set up new pointer 000024CE 13732 MOVL R9,R0 000024D1 13733 BEQL 220$ ; branch if no old block 000024D3 13734 210$: JSB G^EXE$DEANONPAGED ; deallocate the old list 000024D9 13735 220$: BRW 50$ ; locate free entry and try again 000024DC 13736 000024DC 13737 ; 000024DC 13738 ; Code to support "exttrnlnm" functions, loaded here to get it into pool. 000024DC 13739 ; Always just use JTA0: to find it. No JTA0: means no work... 000024DC 13740 ; entry: r0=lnmstrlen, r1=addr of lnmstr 000024DC 13741 ; r2=tblstrlen, r3=addr of tblstr, r7=victim pcb 000024DC 13742 ; r6=outbuf address 000024DC 13743 ;$def ucb$l_ktrln .blkl 1 ;kast_code adr JTDRIVER ;skeleton driver implementing u 2-DEC-1994 10:13:13 AMAC V2.1-13-2671 Page 107 V01H START I/O ROUTINE 2-DEC-1994 10:12:45 [EVERHART.JT]JTDRIVER_S2.MAR;120 000024DC 13744 ;$def ucb$l_k2tnm .blkl 1 ;kast_code_2 adr 000024DC 13745 ; 000024DC 13746 ;pid: .blkl 1 ;0 000024DC 13747 ;prcnam: .blkl 1 ;4 000024DC 13748 ;pcb: .blkl 1 ;8 000024DC 13749 ;adr: .blkl 1 ;12 000024DC 13750 ;retcod: .blkl 1 ;16 000024DC 13751 ;lnmstrlen: ;20 000024DC 13752 ; .blkl 1 000024DC 13753 ;tblstrlen: ;24 000024DC 13754 ; .blkl 1 000024DC 13755 ;lnmstr: .blkb 32 ;28 000024DC 13756 ;tblstr: .blkb 32 ;60 000024DC 13757 ;stat: .blkl 1 ;64 000024DC 13758 ; .blkl 1 ;68 000024DC 13759 ; .blkb LNM$C_NAMLENGTH ;72 000024DC 13760 ; .blkb 1 ;make it even 000024DC 13761 ; .blkl 4 ;328 000024DC 13762 ;outbuf: .blkb LNMX$T_XLATION+LNM$C_NAMLENGTH ;344 000024DC 13763 ; 000024DC 13764 ; 000024DC 13863 $lnmstrdef X02/003 ?01T 000024DC .IIF NDF MACRO64$, .NOCROSS X03/059 ?01T 00000000 .iif greater __temp_count, _mtu_validate_keyword X03/366 ?01T 00000000 .iif greater __temp_count, _mtu_validate_keyword X02/403 ?01T 00000000 .IIF NDF MACRO64$, .CROSS 000024DC 13864 kast_code: .jsb_entry 000024DC 13865 pushr #^m 000024E0 13866 ; entered in skast. 000024E0 13867 ; require ast param to be an argblk entry 000024E0 13868 movl acb$l_astprm(r5),r11 ;get arg block 00000014 000024E4 13869 lnmsl=20 ;must match offsets in jttrnlnm 000024E4 13870 movl lnmsl(r11),r0 000024E8 13871 movab 28(r11),r1 ;lnmstr addr 000024EC 13872 movl 24(r11),r2 ;tblstrlen 000024F0 13873 movab 60(r11),r3 ;tblstr 000024F4 13874 movl #PSL$C_USER,r5 000024F7 13875 movab 344(r11),r6 ;outbuf 000024FC 13876 jsb G^LNM$SEARCH_ONE ; search for logical 00002502 13877 popr #^m 00002506 13878 movl r0,16(r11) ;retcod 0000250A 13879 ; 0000250A 13880 movl 8(r11),r4 0000250E 13881 movl PCB$L_PID(r4),ACB$L_PID(r5) 00002514 13882 movab kast_code_2,acb$l_kast(r5) 0000251C 13883 movb #ACB$M_KAST!PSL$C_KERNEL,ACB$B_RMOD(r5) 00002521 13884 movl #0,r2 ;no prio bump 00002524 13885 jsb G^SCH$QAST ; requeue AST 0000252A 13886 rsb 0000252B 13887 ; 0000252B 13888 kast_code_2: .jsb_entry 0000252B 13889 pushr #^m 0000252D 13890 movl acb$l_astprm(r5),r11 ;get arg block 00002531 13891 movl 12(r11),r1 ;adr 00002535 13892 movl 16(r11),(r1) 00002539 13893 blbc 16(r11),100$ 0000253D 13894 cvtbl <344+LNMX$T_XLATION>(r11),4(r1) JTDRIVER ;skeleton driver implementing u 2-DEC-1994 10:13:13 AMAC V2.1-13-2671 Page 108 V01H START I/O ROUTINE 2-DEC-1994 10:12:45 [EVERHART.JT]JTDRIVER_S2.MAR;120 00002543 13895 movc3 4(r1),<344+LNMX$T_XLATION+1>(r11),8(r1) ; save translation 0000254B 13896 100$: popr #^m 0000254D 13897 ; 0000254D 13898 movl PCB$L_PID(r4),r1 00002552 13899 movl #0,r2 00000011 00002555 13900 astefn=17 00002555 13901 movl #astefn,r3 00002558 13902 jsb G^SCH$POSTEF ; set event-flag 0000255E 13903 movl r5,r0 00002561 13904 jsb G^EXE$DEANONPAGED ; deallocate ACB and disappear 00002567 13905 rsb 00002568 13906 ; 00002568 13907 JT_END: ;ADDRESS OF LAST LOCATION IN DRIVER 00002568 13908 .END JTDRIVER Machine Code Listing 2-DEC-1994 10:13:13 AMAC V2.1-13-2671 Page 109 V01H DRIVER$STRUC_INIT 2-DEC-1994 10:12:45 [EVERHART.JT]JTDRIVER_S2.MAR;120 .PSECT $$$115_DRIVER, 5, PIC, CON, REL, LCL,- NOSHR, EXE, RD, NOWRT 0000 DRIVER$STRUC_INIT: ; 008054 43C8153E 0000 SUBQ SP, 64, SP ; SP, 64, SP B77E0000 0004 STQ R27, (SP) ; R27, (SP) B75E0008 0008 STQ R26, 8(SP) ; R26, 8(SP) B45E0010 000C STQ R2, 16(SP) ; R2, 16(SP) B47E0018 0010 STQ R3, 24(SP) ; R3, 24(SP) B49E0020 0014 STQ R4, 32(SP) ; R4, 32(SP) B4BE0028 0018 STQ R5, 40(SP) ; R5, 40(SP) B4DE0030 001C STQ R6, 48(SP) ; R6, 48(SP) B7BE0038 0020 STQ FP, 56(SP) ; FP, 56(SP) 47FE041D 0024 MOV SP, FP ; SP, FP 0028 $L1: 43F10003 0028 SEXTL R17, R3 ; R17, R3 279F0031 002C LDAH R28, 49(R31) ; R28, 49(R31) ; 008055 239C3146 0030 LDA R28, 12614(R28) ; R28, 12614(R28) B3830010 0034 STL R28, 16(R3) ; R28, 16(R3) 43FC0017 0038 SEXTL R28, R23 ; R28, R23 ; 008056 4AE07057 003C MSKBL R23, 3, R23 ; R23, 3, R23 43F40006 0040 SEXTL R20, R6 ; R20, R6 ; 008054 26F70100 0044 LDAH R23, 256(R23) ; R23, 256(R23) ; 008056 B2E30010 0048 STL R23, 16(R3) ; R23, 16(R3) 26FF1C05 004C LDAH R23, 7173(R31) ; R23, 7173(R31) ; 008072 A3260008 0050 LDL R25, 8(R6) ; R25, 8(R6) ; 008060 22DF0200 0054 LDA R22, 512(R31) ; R22, 512(R31) ; 008074 47E0341A 0058 BIS R31, 1, R26 ; R31, 1, R26 ; 008075 43F00002 005C SEXTL R16, R2 ; R16, R2 ; 008054 4B207059 0060 MSKBL R25, 3, R25 ; R25, 3, R25 ; 008060 43F20004 0064 SEXTL R18, R4 ; R18, R4 ; 008054 27393A00 0068 LDAH R25, 14848(R25) ; R25, 14848(R25) ; 008060 B3260008 006C STL R25, 8(R6) ; R25, 8(R6) B2E60048 0070 STL R23, 72(R6) ; R23, 72(R6) ; 008072 22FF0200 0074 LDA R23, 512(R31) ; R23, 512(R31) ; 008076 B2C6004C 0078 STL R22, 76(R6) ; R22, 76(R6) ; 008074 4AE0537C 007C INSWL R23, 2, R28 ; R23, 2, R28 ; 008076 A3260058 0080 LDL R25, 88(R6) ; R25, 88(R6) ; 008075 43F30005 0084 SEXTL R19, R5 ; R19, R5 ; 008054 473FF119 0088 BIC R25, 255, R25 ; R25, 255, R25 ; 008075 473A0419 008C BIS R25, R26, R25 ; R25, R26, R25 B3260058 0090 STL R25, 88(R6) ; R25, 88(R6) 47E03419 0094 BIS R31, 1, R25 ; R31, 1, R25 ; 008078 A2C60058 0098 LDL R22, 88(R6) ; R22, 88(R6) ; 008076 4B203177 009C INSBL R25, 1, R23 ; R25, 1, R23 ; 008078 4AC05256 00A0 MSKWL R22, 2, R22 ; R22, 2, R22 ; 008076 46DC0416 00A4 BIS R22, R28, R22 ; R22, R28, R22 B2C60058 00A8 STL R22, 88(R6) ; R22, 88(R6) 47E8141C 00AC BIS R31, 64, R28 ; R31, 64, R28 ; 008079 A306005C 00B0 LDL R24, 92(R6) ; R24, 92(R6) ; 008078 4B003058 00B4 MSKBL R24, 1, R24 ; R24, 1, R24 47170418 00B8 BIS R24, R23, R24 ; R24, R23, R24 B306005C 00BC STL R24, 92(R6) ; R24, 92(R6) A346005C 00C0 LDL R26, 92(R6) ; R26, 92(R6) ; 008079 47E21418 00C4 BIS R31, 16, R24 ; R31, 16, R24 ; 008080 4B005376 00C8 INSWL R24, 2, R22 ; R24, 2, R22 47E09418 00CC BIS R31, 4, R24 ; R31, 4, R24 ; 008084 475FF11A 00D0 BIC R26, 255, R26 ; R26, 255, R26 ; 008079 JTDRIVER Machine Code Listing 2-DEC-1994 10:13:13 AMAC V2.1-13-2671 Page 110 V01H DRIVER$STRUC_INIT 2-DEC-1994 10:12:45 [EVERHART.JT]JTDRIVER_S2.MAR;120 475C041A 00D4 BIS R26, R28, R26 ; R26, R28, R26 B346005C 00D8 STL R26, 92(R6) ; R26, 92(R6) 47E1141A 00DC BIS R31, 8, R26 ; R31, 8, R26 ; 008081 A2E6005C 00E0 LDL R23, 92(R6) ; R23, 92(R6) ; 008080 4AE05257 00E4 MSKWL R23, 2, R23 ; R23, 2, R23 46F60417 00E8 BIS R23, R22, R23 ; R23, R22, R23 B2E6005C 00EC STL R23, 92(R6) ; R23, 92(R6) A3260080 00F0 LDL R25, 128(R6) ; R25, 128(R6) ; 008081 473FF119 00F4 BIC R25, 255, R25 ; R25, 255, R25 473A0419 00F8 BIS R25, R26, R25 ; R25, R26, R25 B3260080 00FC STL R25, 128(R6) ; R25, 128(R6) B306008C 0100 STL R24, 140(R6) ; R24, 140(R6) ; 008084 0104 $L2: ; 008088 47FD041E 0104 MOV FP, SP ; FP, SP A79E0008 0108 LDQ R28, 8(SP) ; R28, 8(SP) A45E0010 010C LDQ R2, 16(SP) ; R2, 16(SP) A47E0018 0110 LDQ R3, 24(SP) ; R3, 24(SP) A49E0020 0114 LDQ R4, 32(SP) ; R4, 32(SP) A4BE0028 0118 LDQ R5, 40(SP) ; R5, 40(SP) A4DE0030 011C LDQ R6, 48(SP) ; R6, 48(SP) A7BE0038 0120 LDQ FP, 56(SP) ; FP, 56(SP) 43C8141E 0124 ADDQ SP, 64, SP ; SP, 64, SP 6BFC8001 0128 RET R28 ; R28 47FF041F 012C NOP ; Routine Size: 304 bytes, Routine Base: $$$115_DRIVER + 0000 0130 DRIVER$STRUC_REINIT: ; 008088 43C8153E 0130 SUBQ SP, 64, SP ; SP, 64, SP B77E0000 0134 STQ R27, (SP) ; R27, (SP) B75E0008 0138 STQ R26, 8(SP) ; R26, 8(SP) B45E0010 013C STQ R2, 16(SP) ; R2, 16(SP) B47E0018 0140 STQ R3, 24(SP) ; R3, 24(SP) B49E0020 0144 STQ R4, 32(SP) ; R4, 32(SP) B4BE0028 0148 STQ R5, 40(SP) ; R5, 40(SP) B4DE0030 014C STQ R6, 48(SP) ; R6, 48(SP) B7BE0038 0150 STQ FP, 56(SP) ; FP, 56(SP) 47FE041D 0154 MOV SP, FP ; SP, FP 0158 $L3: 43F10003 0158 SEXTL R17, R3 ; R17, R3 A79B0020 015C LDQ R28, 32(R27) ; R28, 32(R27) ; 008096 43F40006 0160 SEXTL R20, R6 ; R20, R6 ; 008088 A75B0028 0164 LDQ R26, 40(R27) ; R26, 40(R27) ; 008097 273FF014 0168 LDAH R25, -4076(R31) ; R25, -4076(R31) ; 008101 B383000C 016C STL R28, 12(R3) ; R28, 12(R3) ; 008096 B34601AC 0170 STL R26, 428(R6) ; R26, 428(R6) ; 008097 2339F070 0174 LDA R25, -3984(R25) ; R25, -3984(R25) ; 008101 43F00002 0178 SEXTL R16, R2 ; R16, R2 ; 008088 B32601B8 017C STL R25, 440(R6) ; R25, 440(R6) ; 008101 43F20004 0180 SEXTL R18, R4 ; R18, R4 ; 008088 43F30005 0184 SEXTL R19, R5 ; R19, R5 0188 $L4: ; 008109 47FD041E 0188 MOV FP, SP ; FP, SP A79E0008 018C LDQ R28, 8(SP) ; R28, 8(SP) A45E0010 0190 LDQ R2, 16(SP) ; R2, 16(SP) A47E0018 0194 LDQ R3, 24(SP) ; R3, 24(SP) A49E0020 0198 LDQ R4, 32(SP) ; R4, 32(SP) JTDRIVER Machine Code Listing 2-DEC-1994 10:13:13 AMAC V2.1-13-2671 Page 111 V01H DRIVER$STRUC_REINIT 2-DEC-1994 10:12:45 [EVERHART.JT]JTDRIVER_S2.MAR;120 A4BE0028 019C LDQ R5, 40(SP) ; R5, 40(SP) A4DE0030 01A0 LDQ R6, 48(SP) ; R6, 48(SP) A7BE0038 01A4 LDQ FP, 56(SP) ; FP, 56(SP) 43C8141E 01A8 ADDQ SP, 64, SP ; SP, 64, SP 6BFC8001 01AC RET R28 ; R28 Routine Size: 128 bytes, Routine Base: $$$115_DRIVER + 0130 01B0 GETJTUCB: ; 008824 43C4153E 01B0 SUBQ SP, 32, SP ; SP, 32, SP B75E0000 01B4 STQ R26, (SP) ; R26, (SP) B55E0008 01B8 STQ R10, 8(SP) ; R10, 8(SP) B57E0010 01BC STQ R11, 16(SP) ; R11, 16(SP) B5BE0018 01C0 STQ R13, 24(SP) ; R13, 24(SP) 47FB040D 01C4 MOV R27, R13 ; R27, R13 01C8 $L5: 47E0041B 01C8 MOV R0, R27 ; R0, R27 ; 008924 A14500C0 01CC LDL R10, 192(R5) ; R10, 192(R5) ; 008839 A56DFFF0 01D0 LDQ R11, -16(R13) ; R11, -16(R13) ; 008841 43C0953E 01D4 SUBQ SP, 4, SP ; SP, 4, SP ; 008924 47E1041A 01D8 MOV R1, R26 ; R1, R26 0000000E 01DC CALL_PAL 14 ; 14 A72D0018 01E0 LDQ R25, 24(R13) ; R25, 24(R13) 47FA0401 01E4 MOV R26, R1 ; R26, R1 B01E0000 01E8 STL R0, (SP) ; R0, (SP) 47FB0400 01EC MOV R27, R0 ; R27, R0 A0050008 01F0 LDL R0, 8(R5) ; R0, 8(R5) A3190000 01F4 LDL R24, (R25) ; R24, (R25) 480070C0 01F8 EXTBL R0, 3, R0 ; R0, 3, R0 F300002A 01FC BLBS R24, $L93 ; R24, $L93 0200 87_30001$: A6ED0010 0200 LDQ R23, 16(R13) ; R23, 16(R13) 47E00416 0204 MOV R0, R22 ; R0, R22 47E1041C 0208 MOV R1, R28 ; R1, R28 40170057 020C S4ADDL R0, R23, R23 ; R0, R23, R23 A2170000 0210 LDL R16, (R23) ; R16, (R23) 4603F010 0214 AND R16, 31, R16 ; R16, 31, R16 0000000F 0218 CALL_PAL 15 ; 15 47FC0401 021C MOV R28, R1 ; R28, R1 47F60400 0220 MOV R22, R0 ; R22, R0 2FFE0000 0224 LNOP ; 0228 87_30002$: A34AFFF0 0228 LDL R26, -16(R10) ; R26, -16(R10) ; 008925 434B0530 022C SUBQ R26, R11, R16 ; R26, R11, R16 F6000025 0230 BNE R16, 87_5$ ; R16, 87_5$ ; 008933 47FF041F 0234 NOP ; 0238 L$1: 216AFE44 0238 LDA R11, -444(R10) ; R11, -444(R10) ; 008936 2FFE0000 023C LNOP ; 0240 87_4$: ; 008938 A6ED0018 0240 LDQ R23, 24(R13) ; R23, 24(R13) ; 008987 A2D70000 0244 LDL R22, (R23) ; R22, (R23) E2C00007 0248 BLBC R22, 87_30003$ ; R22, 87_30003$ A0050008 024C LDL R0, 8(R5) ; R0, 8(R5) A74D0030 0250 LDQ R26, 48(R13) ; R26, 48(R13) 43C1953E 0254 SUBQ SP, 12, SP ; SP, 12, SP A76D0038 0258 LDQ R27, 56(R13) ; R27, 56(R13) JTDRIVER Machine Code Listing 2-DEC-1994 10:13:13 AMAC V2.1-13-2671 Page 112 V01H GETJTUCB 2-DEC-1994 10:12:45 [EVERHART.JT]JTDRIVER_S2.MAR;120 480070C0 025C EXTBL R0, 3, R0 ; R0, 3, R0 6B5A4000 0260 JSR R26, R26 ; R26, R26 43C1941E 0264 ADDQ SP, 12, SP ; SP, 12, SP 0268 87_30003$: A21E0000 0268 LDL R16, (SP) ; R16, (SP) 47E1041B 026C MOV R1, R27 ; R1, R27 43C0941E 0270 ADDQ SP, 4, SP ; SP, 4, SP 47E0041C 0274 MOV R0, R28 ; R0, R28 4603F010 0278 AND R16, 31, R16 ; R16, 31, R16 0000000F 027C CALL_PAL 15 ; 15 47FC0400 0280 MOV R28, R0 ; R28, R0 43EB0000 0284 SEXTL R11, R0 ; R11, R0 ; 008989 47FB0401 0288 MOV R27, R1 ; R27, R1 ; 008987 028C $L6: ; 008993 A79E0000 028C LDQ R28, (SP) ; R28, (SP) A55E0008 0290 LDQ R10, 8(SP) ; R10, 8(SP) A57E0010 0294 LDQ R11, 16(SP) ; R11, 16(SP) A5BE0018 0298 LDQ R13, 24(SP) ; R13, 24(SP) 43C4141E 029C ADDQ SP, 32, SP ; SP, 32, SP 6BFC8001 02A0 RET R28 ; R28 2FFE0000 02A4 LNOP ; 02A8 $L93: ; 008924 A74D0020 02A8 LDQ R26, 32(R13) ; R26, 32(R13) 43C1953E 02AC SUBQ SP, 12, SP ; SP, 12, SP A76D0028 02B0 LDQ R27, 40(R13) ; R27, 40(R13) 6B5A4000 02B4 JSR R26, R26 ; R26, R26 43C1941E 02B8 ADDQ SP, 12, SP ; SP, 12, SP A34AFFF0 02BC LDL R26, -16(R10) ; R26, -16(R10) ; 008925 434B0530 02C0 SUBQ R26, R11, R16 ; R26, R11, R16 E61FFFDC 02C4 BEQ R16, L$1 ; R16, L$1 ; 008933 02C8 87_5$: ; 008997 A32AFFFC 02C8 LDL R25, -4(R10) ; R25, -4(R10) 271FF014 02CC LDAH R24, -4076(R31) ; R24, -4076(R31) 2318F070 02D0 LDA R24, -3984(R24) ; R24, -3984(R24) 43380530 02D4 SUBQ R25, R24, R16 ; R25, R24, R16 F6000002 02D8 BNE R16, 87_3$ ; R16, 87_3$ ; 008998 A14AFFF8 02DC LDL R10, -8(R10) ; R10, -8(R10) ; 009000 E95FFFD1 02E0 BLT R10, 87_30002$ ; R10, 87_30002$ ; 009004 02E4 87_3$: ; 009006 47FF040B 02E4 CLR R11 ; R11 ; 009007 C3FFFFD5 02E8 BR 87_4$ ; 87_4$ ; 009008 47FF041F 02EC NOP ; Routine Size: 320 bytes, Routine Base: $$$115_DRIVER + 01B0 02F0 ACCFILT: ; 009128 43D2153E 02F0 SUBQ SP, 144, SP ; SP, 144, SP B77E0000 02F4 STQ R27, (SP) ; R27, (SP) B75E0010 02F8 STQ R26, 16(SP) ; R26, 16(SP) B45E0018 02FC STQ R2, 24(SP) ; R2, 24(SP) B47E0020 0300 STQ R3, 32(SP) ; R3, 32(SP) B49E0028 0304 STQ R4, 40(SP) ; R4, 40(SP) B4BE0030 0308 STQ R5, 48(SP) ; R5, 48(SP) B4DE0038 030C STQ R6, 56(SP) ; R6, 56(SP) B4FE0040 0310 STQ R7, 64(SP) ; R7, 64(SP) B51E0048 0314 STQ R8, 72(SP) ; R8, 72(SP) B53E0050 0318 STQ R9, 80(SP) ; R9, 80(SP) JTDRIVER Machine Code Listing 2-DEC-1994 10:13:13 AMAC V2.1-13-2671 Page 113 V01H ACCFILT 2-DEC-1994 10:12:45 [EVERHART.JT]JTDRIVER_S2.MAR;120 B55E0058 031C STQ R10, 88(SP) ; R10, 88(SP) B57E0060 0320 STQ R11, 96(SP) ; R11, 96(SP) B59E0068 0324 STQ R12, 104(SP) ; R12, 104(SP) B5BE0070 0328 STQ R13, 112(SP) ; R13, 112(SP) B5DE0078 032C STQ R14, 120(SP) ; R14, 120(SP) B5FE0080 0330 STQ R15, 128(SP) ; R15, 128(SP) 47FB040E 0334 MOV R27, R14 ; R27, R14 B7BE0088 0338 STQ FP, 136(SP) ; FP, 136(SP) 47FE041D 033C MOV SP, FP ; SP, FP B7FE0008 0340 STQ R31, 8(SP) ; R31, 8(SP) 0344 $L7: 43F00003 0344 SEXTL R16, R3 ; R16, R3 43F10004 0348 SEXTL R17, R4 ; R17, R4 A3630008 034C LDL R27, 8(R3) ; R27, 8(R3) ; 009130 43F20005 0350 SEXTL R18, R5 ; R18, R5 ; 009128 43F30006 0354 SEXTL R19, R6 ; R19, R6 4B6070DB 0358 EXTBL R27, 3, R27 ; R27, 3, R27 ; 009130 47607014 035C AND R27, 3, R20 ; R27, 3, R20 F6800017 0360 BNE R20, 88_1$ ; R20, 88_1$ ; 009131 47FF041F 0364 NOP ; 0368 88_2$: ; 009132 236E0290 0368 LDA R27, 656(R14) ; R27, 656(R14) ; 009133 D3400CC8 036C BSR R26, PORS ; R26, PORS 0370 $L8: ; 009134 47FD041E 0370 MOV FP, SP ; FP, SP A79E0010 0374 LDQ R28, 16(SP) ; R28, 16(SP) A45E0018 0378 LDQ R2, 24(SP) ; R2, 24(SP) A47E0020 037C LDQ R3, 32(SP) ; R3, 32(SP) A49E0028 0380 LDQ R4, 40(SP) ; R4, 40(SP) A4BE0030 0384 LDQ R5, 48(SP) ; R5, 48(SP) A4DE0038 0388 LDQ R6, 56(SP) ; R6, 56(SP) A4FE0040 038C LDQ R7, 64(SP) ; R7, 64(SP) A51E0048 0390 LDQ R8, 72(SP) ; R8, 72(SP) A53E0050 0394 LDQ R9, 80(SP) ; R9, 80(SP) A55E0058 0398 LDQ R10, 88(SP) ; R10, 88(SP) A57E0060 039C LDQ R11, 96(SP) ; R11, 96(SP) A59E0068 03A0 LDQ R12, 104(SP) ; R12, 104(SP) A5BE0070 03A4 LDQ R13, 112(SP) ; R13, 112(SP) A5DE0078 03A8 LDQ R14, 120(SP) ; R14, 120(SP) A5FE0080 03AC LDQ R15, 128(SP) ; R15, 128(SP) A7BE0088 03B0 LDQ FP, 136(SP) ; FP, 136(SP) 43D2141E 03B4 ADDQ SP, 144, SP ; SP, 144, SP 6BFC8001 03B8 RET R28 ; R28 47FF041F 03BC NOP ; 03C0 88_1$: ; 009136 A02400FC 03C0 LDL R1, 252(R4) ; R1, 252(R4) ; 009139 41DA153B 03C4 SUBQ R14, 208, R27 ; R14, 208, R27 ; 009155 A3410030 03C8 LDL R26, 48(R1) ; R26, 48(R1) ; 009141 EF5FFFE6 03CC BLE R26, 88_2$ ; R26, 88_2$ ; 009145 A2A50048 03D0 LDL R21, 72(R5) ; R21, 72(R5) ; 009147 47F50414 03D4 MOV R21, R20 ; R21, R20 4A82B699 03D8 SRL R20, 21, R25 ; R20, 21, R25 F33FFFE2 03DC BLBS R25, 88_2$ ; R25, 88_2$ 47F50414 03E0 MOV R21, R20 ; R21, R20 ; 009148 4A827698 03E4 SRL R20, 19, R24 ; R20, 19, R24 E31FFFDF 03E8 BLBC R24, 88_2$ ; R24, 88_2$ A2C5004C 03EC LDL R22, 76(R5) ; R22, 76(R5) ; 009149 JTDRIVER Machine Code Listing 2-DEC-1994 10:13:13 AMAC V2.1-13-2671 Page 114 V01H ACCFILT 2-DEC-1994 10:12:45 [EVERHART.JT]JTDRIVER_S2.MAR;120 26FF0004 03F0 LDAH R23, 4(R31) ; R23, 4(R31) 42E81417 03F4 ADDQ R23, 64, R23 ; R23, 64, R23 46D70014 03F8 AND R22, R23, R20 ; R22, R23, R20 F69FFFDA 03FC BNE R20, 88_2$ ; R20, 88_2$ ; 009150 A2850048 0400 LDL R20, 72(R5) ; R20, 72(R5) ; 009151 4A83169C 0404 SRL R20, 24, R28 ; R20, 24, R28 F39FFFD7 0408 BLBS R28, 88_2$ ; R28, 88_2$ 43C2153E 040C SUBQ SP, 16, SP ; SP, 16, SP ; 009155 B0BE000C 0410 STL R5, 12(SP) ; R5, 12(SP) ; 009153 B01E0008 0414 STL R0, 8(SP) ; R0, 8(SP) D35FFF65 0418 BSR R26, GETJTUCB ; R26, GETJTUCB ; 009155 43C1141E 041C ADDQ SP, 8, SP ; SP, 8, SP E8000007 0420 BLT R0, 88_509$ ; R0, 88_509$ ; 009157 236E0280 0424 LDA R27, 640(R14) ; R27, 640(R14) ; 009159 A01E0000 0428 LDL R0, (SP) ; R0, (SP) ; 009158 A0BE0004 042C LDL R5, 4(SP) ; R5, 4(SP) 43C1141E 0430 ADDQ SP, 8, SP ; SP, 8, SP D3400C8A 0434 BSR R26, POPOUT ; R26, POPOUT ; 009159 C3FFFFCD 0438 BR $L8 ; $L8 ; 009160 47FF041F 043C NOP ; 0440 88_509$: ; 009161 47E0341B 0440 BIS R31, 1, R27 ; R31, 1, R27 ; 009163 B36003C0 0444 STL R27, 960(R0) ; R27, 960(R0) B0A0023C 0448 STL R5, 572(R0) ; R5, 572(R0) ; 009164 43E00005 044C SEXTL R0, R5 ; R0, R5 ; 009165 A6AEFF18 0450 LDQ R21, -232(R14) ; R21, -232(R14) ; 009265 236E0280 0454 LDA R27, 640(R14) ; R27, 640(R14) ; 009169 A3450128 0458 LDL R26, 296(R5) ; R26, 296(R5) ; 009166 47403014 045C AND R26, 1, R20 ; R26, 1, R20 F6800005 0460 BNE R20, 88_1509$ ; R20, 88_1509$ ; 009167 A01E0000 0464 LDL R0, (SP) ; R0, (SP) ; 009168 A0BE0004 0468 LDL R5, 4(SP) ; R5, 4(SP) 43C1141E 046C ADDQ SP, 8, SP ; SP, 8, SP D3400C7B 0470 BSR R26, POPOUT ; R26, POPOUT ; 009169 C3FFFFBE 0474 BR $L8 ; $L8 ; 009170 0478 88_1509$: ; 009171 2F0503C0 0478 LDQ_U R24, 960(R5) ; R24, 960(R5) ; 009174 47E05419 047C BIS R31, 2, R25 ; R31, 2, R25 2EC503C3 0480 LDQ_U R22, 963(R5) ; R22, 963(R5) 4B250577 0484 INSLL R25, R5, R23 ; R25, R5, R23 4865057B 0488 INSLL R3, R5, R27 ; R3, R5, R27 ; 009175 4B050458 048C MSKLL R24, R5, R24 ; R24, R5, R24 ; 009174 4AC50C56 0490 MSKLH R22, R5, R22 ; R22, R5, R22 47170418 0494 BIS R24, R23, R24 ; R24, R23, R24 4B250CF7 0498 INSLH R25, R5, R23 ; R25, R5, R23 46D70416 049C BIS R22, R23, R22 ; R22, R23, R22 3EC503C3 04A0 STQ_U R22, 963(R5) ; R22, 963(R5) 3F0503C0 04A4 STQ_U R24, 960(R5) ; R24, 960(R5) 2F8503B8 04A8 LDQ_U R28, 952(R5) ; R28, 952(R5) ; 009175 2F4503BB 04AC LDQ_U R26, 955(R5) ; R26, 955(R5) 4B85045C 04B0 MSKLL R28, R5, R28 ; R28, R5, R28 4B450C5A 04B4 MSKLH R26, R5, R26 ; R26, R5, R26 479B041C 04B8 BIS R28, R27, R28 ; R28, R27, R28 48650CFB 04BC INSLH R3, R5, R27 ; R3, R5, R27 475B041A 04C0 BIS R26, R27, R26 ; R26, R27, R26 3F4503BB 04C4 STQ_U R26, 955(R5) ; R26, 955(R5) 3F8503B8 04C8 STQ_U R28, 952(R5) ; R28, 952(R5) JTDRIVER Machine Code Listing 2-DEC-1994 10:13:13 AMAC V2.1-13-2671 Page 115 V01H ACCFILT 2-DEC-1994 10:12:45 [EVERHART.JT]JTDRIVER_S2.MAR;120 2F050130 04CC LDQ_U R24, 304(R5) ; R24, 304(R5) ; 009176 2EC50133 04D0 LDQ_U R22, 307(R5) ; R22, 307(R5) A32400D4 04D4 LDL R25, 212(R4) ; R25, 212(R4) 4B0504D8 04D8 EXTLL R24, R5, R24 ; R24, R5, R24 4AC50D57 04DC EXTLH R22, R5, R23 ; R22, R5, R23 47170418 04E0 BIS R24, R23, R24 ; R24, R23, R24 43F80018 04E4 SEXTL R24, R24 ; R24, R24 43380534 04E8 SUBQ R25, R24, R20 ; R25, R24, R20 F6800006 04EC BNE R20, 88_2509$ ; R20, 88_2509$ ; 009177 04F0 88_3509$: ; 009178 A01E0000 04F0 LDL R0, (SP) ; R0, (SP) 236E0280 04F4 LDA R27, 640(R14) ; R27, 640(R14) ; 009179 A0BE0004 04F8 LDL R5, 4(SP) ; R5, 4(SP) ; 009178 43C1141E 04FC ADDQ SP, 8, SP ; SP, 8, SP D3400C57 0500 BSR R26, POPOUT ; R26, POPOUT ; 009179 C3FFFF9A 0504 BR $L8 ; $L8 ; 009180 0508 88_2509$: ; 009181 2F650118 0508 LDQ_U R27, 280(R5) ; R27, 280(R5) ; 009183 2F25011B 050C LDQ_U R25, 283(R5) ; R25, 283(R5) A38400D4 0510 LDL R28, 212(R4) ; R28, 212(R4) 4B6504DB 0514 EXTLL R27, R5, R27 ; R27, R5, R27 4B250D5A 0518 EXTLH R25, R5, R26 ; R25, R5, R26 477A041B 051C BIS R27, R26, R27 ; R27, R26, R27 43FB001B 0520 SEXTL R27, R27 ; R27, R27 439B0534 0524 SUBQ R28, R27, R20 ; R28, R27, R20 E69FFFF1 0528 BEQ R20, 88_3509$ ; R20, 88_3509$ ; 009184 052C 88_30004$: 2EE50120 052C LDQ_U R23, 288(R5) ; R23, 288(R5) ; 009185 2F850123 0530 LDQ_U R28, 291(R5) ; R28, 291(R5) A30400D4 0534 LDL R24, 212(R4) ; R24, 212(R4) 4AE504D7 0538 EXTLL R23, R5, R23 ; R23, R5, R23 4B850D56 053C EXTLH R28, R5, R22 ; R28, R5, R22 46F60417 0540 BIS R23, R22, R23 ; R23, R22, R23 43F70017 0544 SEXTL R23, R23 ; R23, R23 43170534 0548 SUBQ R24, R23, R20 ; R24, R23, R20 E69FFFE8 054C BEQ R20, 88_3509$ ; R20, 88_3509$ ; 009186 0550 88_30005$: 2F45038C 0550 LDQ_U R26, 908(R5) ; R26, 908(R5) ; 009187 2325038C 0554 LDA R25, 908(R5) ; R25, 908(R5) 2EE5038F 0558 LDQ_U R23, 911(R5) ; R23, 911(R5) A36400D4 055C LDL R27, 212(R4) ; R27, 212(R4) 4B5904DA 0560 EXTLL R26, R25, R26 ; R26, R25, R26 4AF90D58 0564 EXTLH R23, R25, R24 ; R23, R25, R24 4758041A 0568 BIS R26, R24, R26 ; R26, R24, R26 43FA001A 056C SEXTL R26, R26 ; R26, R26 437A0534 0570 SUBQ R27, R26, R20 ; R27, R26, R20 E69FFFDE 0574 BEQ R20, 88_3509$ ; R20, 88_3509$ ; 009188 0578 88_30006$: 2F650390 0578 LDQ_U R27, 912(R5) ; R27, 912(R5) ; 009189 2F250393 057C LDQ_U R25, 915(R5) ; R25, 915(R5) A2C400D4 0580 LDL R22, 212(R4) ; R22, 212(R4) 4B6504DB 0584 EXTLL R27, R5, R27 ; R27, R5, R27 4B250D5A 0588 EXTLH R25, R5, R26 ; R25, R5, R26 477A041B 058C BIS R27, R26, R27 ; R27, R26, R27 43FB001B 0590 SEXTL R27, R27 ; R27, R27 42DB0534 0594 SUBQ R22, R27, R20 ; R22, R27, R20 E69FFFD5 0598 BEQ R20, 88_3509$ ; R20, 88_3509$ ; 009190 JTDRIVER Machine Code Listing 2-DEC-1994 10:13:13 AMAC V2.1-13-2671 Page 116 V01H ACCFILT 2-DEC-1994 10:12:45 [EVERHART.JT]JTDRIVER_S2.MAR;120 059C 88_30007$: 2EC50394 059C LDQ_U R22, 916(R5) ; R22, 916(R5) ; 009191 23850394 05A0 LDA R28, 916(R5) ; R28, 916(R5) 2F450397 05A4 LDQ_U R26, 919(R5) ; R26, 919(R5) A30400D4 05A8 LDL R24, 212(R4) ; R24, 212(R4) 4ADC04D6 05AC EXTLL R22, R28, R22 ; R22, R28, R22 4B5C0D5B 05B0 EXTLH R26, R28, R27 ; R26, R28, R27 46DB0416 05B4 BIS R22, R27, R22 ; R22, R27, R22 43F60016 05B8 SEXTL R22, R22 ; R22, R22 43160534 05BC SUBQ R24, R22, R20 ; R24, R22, R20 E69FFFCB 05C0 BEQ R20, 88_3509$ ; R20, 88_3509$ ; 009192 05C4 88_30008$: 2EE50398 05C4 LDQ_U R23, 920(R5) ; R23, 920(R5) ; 009193 2F85039B 05C8 LDQ_U R28, 923(R5) ; R28, 923(R5) A32400D4 05CC LDL R25, 212(R4) ; R25, 212(R4) 4AE504D7 05D0 EXTLL R23, R5, R23 ; R23, R5, R23 4B850D56 05D4 EXTLH R28, R5, R22 ; R28, R5, R22 46F60417 05D8 BIS R23, R22, R23 ; R23, R22, R23 43F70017 05DC SEXTL R23, R23 ; R23, R23 43370534 05E0 SUBQ R25, R23, R20 ; R25, R23, R20 E69FFFC2 05E4 BEQ R20, 88_3509$ ; R20, 88_3509$ ; 009194 05E8 88_30009$: 2F4503C0 05E8 LDQ_U R26, 960(R5) ; R26, 960(R5) ; 009196 47E0741B 05EC BIS R31, 3, R27 ; R31, 3, R27 2F0503C3 05F0 LDQ_U R24, 963(R5) ; R24, 963(R5) 4B650579 05F4 INSLL R27, R5, R25 ; R27, R5, R25 4B45045A 05F8 MSKLL R26, R5, R26 ; R26, R5, R26 4B050C58 05FC MSKLH R24, R5, R24 ; R24, R5, R24 4759041A 0600 BIS R26, R25, R26 ; R26, R25, R26 4B650CF9 0604 INSLH R27, R5, R25 ; R27, R5, R25 47190418 0608 BIS R24, R25, R24 ; R24, R25, R24 3F0503C3 060C STQ_U R24, 963(R5) ; R24, 963(R5) 3F4503C0 0610 STQ_U R26, 960(R5) ; R26, 960(R5) A2C60010 0614 LDL R22, 16(R6) ; R22, 16(R6) ; 009197 4AC0F176 0618 INSBL R22, 7, R22 ; R22, 7, R22 4AC71796 061C SRA R22, 56, R22 ; R22, 56, R22 42C03534 0620 SUBQ R22, 1, R20 ; R22, 1, R20 EE9FFFB2 0624 BLE R20, 88_3509$ ; R20, 88_3509$ ; 009199 0628 88_30010$: 2F650128 0628 LDQ_U R27, 296(R5) ; R27, 296(R5) ; 009200 239F0400 062C LDA R28, 1024(R31) ; R28, 1024(R31) 2F25012B 0630 LDQ_U R25, 299(R5) ; R25, 299(R5) 4B6504DB 0634 EXTLL R27, R5, R27 ; R27, R5, R27 4B250D5A 0638 EXTLH R25, R5, R26 ; R25, R5, R26 477A041B 063C BIS R27, R26, R27 ; R27, R26, R27 43FB001B 0640 SEXTL R27, R27 ; R27, R27 477C0014 0644 AND R27, R28, R20 ; R27, R28, R20 E6800011 0648 BEQ R20, 88_3$ ; R20, 88_3$ ; 009201 A0030078 064C LDL R0, 120(R3) ; R0, 120(R3) ; 009203 E400000F 0650 BEQ R0, 88_3$ ; R0, 88_3$ ; 009207 A0000004 0654 LDL R0, 4(R0) ; R0, 4(R0) ; 009208 E400000D 0658 BEQ R0, 88_3$ ; R0, 88_3$ ; 009209 2EC00008 065C LDQ_U R22, 8(R0) ; R22, 8(R0) ; 009219 4AC000D6 0660 EXTBL R22, R0, R22 ; R22, R0, R22 46D01014 0664 AND R22, 128, R20 ; R22, 128, R20 4A871734 0668 SLL R20, 56, R20 ; R20, 56, R20 4A871794 066C SRA R20, 56, R20 ; R20, 56, R20 JTDRIVER Machine Code Listing 2-DEC-1994 10:13:13 AMAC V2.1-13-2671 Page 117 V01H ACCFILT 2-DEC-1994 10:12:45 [EVERHART.JT]JTDRIVER_S2.MAR;120 E6800007 0670 BEQ R20, 88_3$ ; R20, 88_3$ ; 009220 2F400009 0674 LDQ_U R26, 9(R0) ; R26, 9(R0) ; 009221 40013419 0678 ADDQ R0, 9, R25 ; R0, 9, R25 4B5900DA 067C EXTBL R26, R25, R26 ; R26, R25, R26 47501014 0680 AND R26, 128, R20 ; R26, 128, R20 4A871734 0684 SLL R20, 56, R20 ; R20, 56, R20 4A871794 0688 SRA R20, 56, R20 ; R20, 56, R20 F6800004 068C BNE R20, 88_4$ ; R20, 88_4$ ; 009222 0690 88_3$: ; 009223 A3030060 0690 LDL R24, 96(R3) ; R24, 96(R3) ; 009225 47081014 0694 AND R24, 64, R20 ; R24, 64, R20 E69FFF95 0698 BEQ R20, 88_3509$ ; R20, 88_3509$ ; 009229 47FF041F 069C NOP ; 06A0 88_4$: ; 009231 2EC503C0 06A0 LDQ_U R22, 960(R5) ; R22, 960(R5) ; 009238 47E0B417 06A4 BIS R31, 5, R23 ; R31, 5, R23 2F6503C3 06A8 LDQ_U R27, 963(R5) ; R27, 963(R5) 4AE5057C 06AC INSLL R23, R5, R28 ; R23, R5, R28 4AC50456 06B0 MSKLL R22, R5, R22 ; R22, R5, R22 4B650C5B 06B4 MSKLH R27, R5, R27 ; R27, R5, R27 46DC0416 06B8 BIS R22, R28, R22 ; R22, R28, R22 4AE50CFC 06BC INSLH R23, R5, R28 ; R23, R5, R28 477C041B 06C0 BIS R27, R28, R27 ; R27, R28, R27 3F6503C3 06C4 STQ_U R27, 963(R5) ; R27, 963(R5) 3EC503C0 06C8 STQ_U R22, 960(R5) ; R22, 960(R5) A3460004 06CC LDL R26, 4(R6) ; R26, 4(R6) ; 009239 F75FFF87 06D0 BNE R26, 88_3509$ ; R26, 88_3509$ ; 009240 06D4 88_30012$: 43C3153E 06D4 SUBQ SP, 24, SP ; SP, 24, SP ; 009244 B17E0014 06D8 STL R11, 20(SP) ; R11, 20(SP) B15E0010 06DC STL R10, 16(SP) ; R10, 16(SP) B13E000C 06E0 STL R9, 12(SP) ; R9, 12(SP) B11E0008 06E4 STL R8, 8(SP) ; R8, 8(SP) B0FE0004 06E8 STL R7, 4(SP) ; R7, 4(SP) B0DE0000 06EC STL R6, (SP) ; R6, (SP) 2D450130 06F0 LDQ_U R10, 304(R5) ; R10, 304(R5) ; 009245 2F050133 06F4 LDQ_U R24, 307(R5) ; R24, 307(R5) A13E000C 06F8 LDL R9, 12(SP) ; R9, 12(SP) ; 009258 494504CA 06FC EXTLL R10, R5, R10 ; R10, R5, R10 ; 009245 A17E0014 0700 LDL R11, 20(SP) ; R11, 20(SP) ; 009258 4B050D59 0704 EXTLH R24, R5, R25 ; R24, R5, R25 ; 009245 4559040A 0708 BIS R10, R25, R10 ; R10, R25, R10 43EA000A 070C SEXTL R10, R10 ; R10, R10 ED400015 0710 BLE R10, 88_5$ ; R10, 88_5$ ; 009246 A6EE0070 0714 LDQ R23, 112(R14) ; R23, 112(R14) ; 009249 494012C7 0718 EXTWL R10, 0, R7 ; R10, 0, R7 ; 009247 A0D70000 071C LDL R6, (R23) ; R6, (R23) ; 009249 40E60056 0720 S4ADDL R7, R6, R22 ; R7, R6, R22 ; 009250 A0DE0000 0724 LDL R6, (SP) ; R6, (SP) ; 009258 A1160000 0728 LDL R8, (R22) ; R8, (R22) ; 009250 A0FE0004 072C LDL R7, 4(SP) ; R7, 4(SP) ; 009258 F900000D 0730 BGE R8, 88_5$ ; R8, 88_5$ ; 009252 A38800D4 0734 LDL R28, 212(R8) ; R28, 212(R8) ; 009253 415C0534 0738 SUBQ R10, R28, R20 ; R10, R28, R20 F680000A 073C BNE R20, 88_5$ ; R20, 88_5$ ; 009254 A36800FC 0740 LDL R27, 252(R8) ; R27, 252(R8) ; 009256 A34400FC 0744 LDL R26, 252(R4) ; R26, 252(R4) JTDRIVER Machine Code Listing 2-DEC-1994 10:13:13 AMAC V2.1-13-2671 Page 118 V01H ACCFILT 2-DEC-1994 10:12:45 [EVERHART.JT]JTDRIVER_S2.MAR;120 A11E0008 0748 LDL R8, 8(SP) ; R8, 8(SP) ; 009258 A15E0010 074C LDL R10, 16(SP) ; R10, 16(SP) 437A0534 0750 SUBQ R27, R26, R20 ; R27, R26, R20 ; 009256 F6800004 0754 BNE R20, 88_5$ ; R20, 88_5$ ; 009257 43C3141E 0758 ADDQ SP, 24, SP ; SP, 24, SP ; 009258 075C 88_48$: ; 009259 C3FFFF64 075C BR 88_3509$ ; 88_3509$ 0760 88_30011$: ; 009229 C3FFFFCF 0760 BR 88_4$ ; 88_4$ ; 009230 47FF041F 0764 NOP ; 0768 88_5$: ; 009260 A0DE0000 0768 LDL R6, (SP) ; R6, (SP) ; 009261 47E0D419 076C BIS R31, 6, R25 ; R31, 6, R25 ; 009264 A0FE0004 0770 LDL R7, 4(SP) ; R7, 4(SP) ; 009261 4B250577 0774 INSLL R25, R5, R23 ; R25, R5, R23 ; 009264 A11E0008 0778 LDL R8, 8(SP) ; R8, 8(SP) ; 009261 A13E000C 077C LDL R9, 12(SP) ; R9, 12(SP) A15E0010 0780 LDL R10, 16(SP) ; R10, 16(SP) A17E0014 0784 LDL R11, 20(SP) ; R11, 20(SP) 43C3141E 0788 ADDQ SP, 24, SP ; SP, 24, SP 2F0503C0 078C LDQ_U R24, 960(R5) ; R24, 960(R5) ; 009264 2EC503C3 0790 LDQ_U R22, 963(R5) ; R22, 963(R5) A78EFFC8 0794 LDQ R28, -56(R14) ; R28, -56(R14) ; 009265 4B050458 0798 MSKLL R24, R5, R24 ; R24, R5, R24 ; 009264 4AC50C56 079C MSKLH R22, R5, R22 ; R22, R5, R22 47170418 07A0 BIS R24, R23, R24 ; R24, R23, R24 4B250CF7 07A4 INSLH R25, R5, R23 ; R25, R5, R23 43FC001B 07A8 SEXTL R28, R27 ; R28, R27 ; 009266 46D70416 07AC BIS R22, R23, R22 ; R22, R23, R22 ; 009264 3EC503C3 07B0 STQ_U R22, 963(R5) ; R22, 963(R5) 3F0503C0 07B4 STQ_U R24, 960(R5) ; R24, 960(R5) B3950070 07B8 STL R28, 112(R21) ; R28, 112(R21) ; 009265 A3430010 07BC LDL R26, 16(R3) ; R26, 16(R3) ; 009266 437A0534 07C0 SUBQ R27, R26, R20 ; R27, R26, R20 E69FFF4A 07C4 BEQ R20, 88_3509$ ; R20, 88_3509$ ; 009267 07C8 88_30013$: 43C0953E 07C8 SUBQ SP, 4, SP ; SP, 4, SP ; 009273 233F0800 07CC LDA R25, 2048(R31) ; R25, 2048(R31) ; 009274 B01E0000 07D0 STL R0, (SP) ; R0, (SP) ; 009273 2385023C 07D4 LDA R28, 572(R5) ; R28, 572(R5) ; 009276 2F050128 07D8 LDQ_U R24, 296(R5) ; R24, 296(R5) ; 009274 2EC5012B 07DC LDQ_U R22, 299(R5) ; R22, 299(R5) 4B0504D8 07E0 EXTLL R24, R5, R24 ; R24, R5, R24 4AC50D57 07E4 EXTLH R22, R5, R23 ; R22, R5, R23 47170418 07E8 BIS R24, R23, R24 ; R24, R23, R24 43F80018 07EC SEXTL R24, R24 ; R24, R24 47190014 07F0 AND R24, R25, R20 ; R24, R25, R20 E680001C 07F4 BEQ R20, 88_148$ ; R20, 88_148$ ; 009275 A325003C 07F8 LDL R25, 60(R5) ; R25, 60(R5) ; 009277 2C05023C 07FC LDQ_U R0, 572(R5) ; R0, 572(R5) ; 009276 2F45023F 0800 LDQ_U R26, 575(R5) ; R26, 575(R5) E7200018 0804 BEQ R25, 88_148$ ; R25, 88_148$ ; 009278 A2A3000C 0808 LDL R21, 12(R3) ; R21, 12(R3) ; 009279 481C04C0 080C EXTLL R0, R28, R0 ; R0, R28, R0 ; 009276 4B5C0D5B 0810 EXTLH R26, R28, R27 ; R26, R28, R27 47E09419 0814 BIS R31, 4, R25 ; R31, 4, R25 ; 009305 EAA00013 0818 BLT R21, 88_148$ ; R21, 88_148$ ; 009280 JTDRIVER Machine Code Listing 2-DEC-1994 10:13:13 AMAC V2.1-13-2671 Page 119 V01H ACCFILT 2-DEC-1994 10:12:45 [EVERHART.JT]JTDRIVER_S2.MAR;120 A305003C 081C LDL R24, 60(R5) ; R24, 60(R5) ; 009281 441B0400 0820 BIS R0, R27, R0 ; R0, R27, R0 ; 009276 43E00000 0824 SEXTL R0, R0 ; R0, R0 42B80534 0828 SUBQ R21, R24, R20 ; R21, R24, R20 ; 009281 A01E0000 082C LDL R0, (SP) ; R0, (SP) ; 009284 E680000D 0830 BEQ R20, 88_148$ ; R20, 88_148$ ; 009282 A0BE0008 0834 LDL R5, 8(SP) ; R5, 8(SP) ; 009285 A74EFFB0 0838 LDQ R26, -80(R14) ; R26, -80(R14) ; 009305 43E40011 083C SEXTL R4, R17 ; R4, R17 A01E0004 0840 LDL R0, 4(SP) ; R0, 4(SP) ; 009285 47E49400 0844 BIS R31, 36, R0 ; R31, 36, R0 ; 009286 A76EFFB8 0848 LDQ R27, -72(R14) ; R27, -72(R14) ; 009305 43C1941E 084C ADDQ SP, 12, SP ; SP, 12, SP ; 009284 43E00013 0850 SEXTL R0, R19 ; R0, R19 ; 009305 43E50012 0854 SEXTL R5, R18 ; R5, R18 43E30010 0858 SEXTL R3, R16 ; R3, R16 6B5A4000 085C JSR R26, R26 ; R26, R26 C3FFFEC3 0860 BR $L8 ; $L8 47FF041F 0864 NOP ; 0868 88_148$: ; 009308 A01E0000 0868 LDL R0, (SP) ; R0, (SP) ; 009309 43C0941E 086C ADDQ SP, 4, SP ; SP, 4, SP 2EC503C0 0870 LDQ_U R22, 960(R5) ; R22, 960(R5) ; 009313 47E0F417 0874 BIS R31, 7, R23 ; R31, 7, R23 2F6503C3 0878 LDQ_U R27, 963(R5) ; R27, 963(R5) 4AE5057C 087C INSLL R23, R5, R28 ; R23, R5, R28 275F0004 0880 LDAH R26, 4(R31) ; R26, 4(R31) ; 009314 4AC50456 0884 MSKLL R22, R5, R22 ; R22, R5, R22 ; 009313 4B650C5B 0888 MSKLH R27, R5, R27 ; R27, R5, R27 46DC0416 088C BIS R22, R28, R22 ; R22, R28, R22 4AE50CFC 0890 INSLH R23, R5, R28 ; R23, R5, R28 477C041B 0894 BIS R27, R28, R27 ; R27, R28, R27 3F6503C3 0898 STQ_U R27, 963(R5) ; R27, 963(R5) 3EC503C0 089C STQ_U R22, 960(R5) ; R22, 960(R5) 2F250128 08A0 LDQ_U R25, 296(R5) ; R25, 296(R5) ; 009314 2EE5012B 08A4 LDQ_U R23, 299(R5) ; R23, 299(R5) 4B2504D9 08A8 EXTLL R25, R5, R25 ; R25, R5, R25 4AE50D58 08AC EXTLH R23, R5, R24 ; R23, R5, R24 47380419 08B0 BIS R25, R24, R25 ; R25, R24, R25 43F90019 08B4 SEXTL R25, R25 ; R25, R25 473A0014 08B8 AND R25, R26, R20 ; R25, R26, R20 E680002E 08BC BEQ R20, 88_50$ ; R20, 88_50$ ; 009315 43C2153E 08C0 SUBQ SP, 16, SP ; SP, 16, SP ; 009316 B07E000C 08C4 STL R3, 12(SP) ; R3, 12(SP) B05E0008 08C8 STL R2, 8(SP) ; R2, 8(SP) B03E0004 08CC STL R1, 4(SP) ; R1, 4(SP) B01E0000 08D0 STL R0, (SP) ; R0, (SP) A0050078 08D4 LDL R0, 120(R5) ; R0, 120(R5) ; 009318 E40000A9 08D8 BEQ R0, 88_47$ ; R0, 88_47$ ; 009322 A0000004 08DC LDL R0, 4(R0) ; R0, 4(R0) ; 009323 E40000A7 08E0 BEQ R0, 88_47$ ; R0, 88_47$ ; 009324 2C200004 08E4 LDQ_U R1, 4(R0) ; R1, 4(R0) ; 009325 40009416 08E8 ADDQ R0, 4, R22 ; R0, 4, R22 483602C1 08EC EXTWL R1, R22, R1 ; R1, R22, R1 F2C003E6 08F0 BLBS R22, $L126 ; R22, $L126 08F4 $L127: E42000A2 08F4 BEQ R1, 88_47$ ; R1, 88_47$ ; 009327 JTDRIVER Machine Code Listing 2-DEC-1994 10:13:13 AMAC V2.1-13-2671 Page 120 V01H ACCFILT 2-DEC-1994 10:12:45 [EVERHART.JT]JTDRIVER_S2.MAR;120 2C650240 08F8 LDQ_U R3, 576(R5) ; R3, 576(R5) ; 009338 2F250243 08FC LDQ_U R25, 579(R5) ; R25, 579(R5) 205F0800 0900 LDA R2, 2048(R31) ; R2, 2048(R31) ; 009337 486504C3 0904 EXTLL R3, R5, R3 ; R3, R5, R3 ; 009338 4B250D5A 0908 EXTLH R25, R5, R26 ; R25, R5, R26 447A0403 090C BIS R3, R26, R3 ; R3, R26, R3 43E30003 0910 SEXTL R3, R3 ; R3, R3 E460009A 0914 BEQ R3, 88_47$ ; R3, 88_47$ ; 009339 231F3FFF 0918 LDA R24, 16383(R31) ; R24, 16383(R31) ; 009342 44380001 091C AND R1, R24, R1 ; R1, R24, R1 43E10016 0920 SEXTL R1, R22 ; R1, R22 ; 009343 4AC07782 0924 SRA R22, 3, R2 ; R22, 3, R2 4420F001 0928 AND R1, 7, R1 ; R1, 7, R1 ; 009345 4820779C 092C SRA R1, 3, R28 ; R1, 3, R28 ; 009346 40620000 0930 ADDL R3, R2, R0 ; R3, R2, R0 ; 009344 401C001B 0934 ADDL R0, R28, R27 ; R0, R28, R27 ; 009346 A01E0000 0938 LDL R0, (SP) ; R0, (SP) ; 009350 4420F01A 093C AND R1, 7, R26 ; R1, 7, R26 ; 009346 A03E0004 0940 LDL R1, 4(SP) ; R1, 4(SP) ; 009350 2F9B0000 0944 LDQ_U R28, (R27) ; R28, (R27) ; 009346 A05E0008 0948 LDL R2, 8(SP) ; R2, 8(SP) ; 009350 A07E000C 094C LDL R3, 12(SP) ; R3, 12(SP) 4B9B00DC 0950 EXTBL R28, R27, R28 ; R28, R27, R28 ; 009346 A01E0010 0954 LDL R0, 16(SP) ; R0, 16(SP) ; 009351 4B9A0699 0958 SRL R28, R26, R25 ; R28, R26, R25 ; 009346 F3200088 095C BLBS R25, 88_47$ ; R25, 88_47$ A0BE0014 0960 LDL R5, 20(SP) ; R5, 20(SP) ; 009351 43C3141E 0964 ADDQ SP, 24, SP ; SP, 24, SP 236E0280 0968 LDA R27, 640(R14) ; R27, 640(R14) ; 009352 D3400B3C 096C BSR R26, POPOUT ; R26, POPOUT C3FFFE7F 0970 BR $L8 ; $L8 ; 009353 47FF041F 0974 NOP ; 0978 88_50$: ; 009356 43C6153E 0978 SUBQ SP, 48, SP ; SP, 48, SP ; 009363 A70EFF48 097C LDQ R24, -184(R14) ; R24, -184(R14) ; 009516 B01E002C 0980 STL R0, 44(SP) ; R0, 44(SP) ; 009361 B03E0028 0984 STL R1, 40(SP) ; R1, 40(SP) ; 009362 B17E0024 0988 STL R11, 36(SP) ; R11, 36(SP) ; 009363 B15E0020 098C STL R10, 32(SP) ; R10, 32(SP) B13E001C 0990 STL R9, 28(SP) ; R9, 28(SP) B11E0018 0994 STL R8, 24(SP) ; R8, 24(SP) B0FE0014 0998 STL R7, 20(SP) ; R7, 20(SP) B0DE0010 099C STL R6, 16(SP) ; R6, 16(SP) B0BE000C 09A0 STL R5, 12(SP) ; R5, 12(SP) B09E0008 09A4 STL R4, 8(SP) ; R4, 8(SP) B07E0004 09A8 STL R3, 4(SP) ; R3, 4(SP) B05E0000 09AC STL R2, (SP) ; R2, (SP) A2F80000 09B0 LDL R23, (R24) ; R23, (R24) ; 009516 F2E00078 09B4 BLBS R23, $L94 ; R23, $L94 09B8 88_30014$: A2050080 09B8 LDL R16, 128(R5) ; R16, 128(R5) 47E00416 09BC MOV R0, R22 ; R0, R22 47E1041C 09C0 MOV R1, R28 ; R1, R28 4603F010 09C4 AND R16, 31, R16 ; R16, 31, R16 0000000F 09C8 CALL_PAL 15 ; 15 47FC0401 09CC MOV R28, R1 ; R28, R1 47F60400 09D0 MOV R22, R0 ; R22, R0 JTDRIVER Machine Code Listing 2-DEC-1994 10:13:13 AMAC V2.1-13-2671 Page 121 V01H ACCFILT 2-DEC-1994 10:12:45 [EVERHART.JT]JTDRIVER_S2.MAR;120 2FFE0000 09D4 LNOP ; 09D8 88_30015$: 2F4503C0 09D8 LDQ_U R26, 960(R5) ; R26, 960(R5) ; 009517 47E1141B 09DC BIS R31, 8, R27 ; R31, 8, R27 2F0503C3 09E0 LDQ_U R24, 963(R5) ; R24, 963(R5) 4B650579 09E4 INSLL R27, R5, R25 ; R27, R5, R25 4B45045A 09E8 MSKLL R26, R5, R26 ; R26, R5, R26 4B050C58 09EC MSKLH R24, R5, R24 ; R24, R5, R24 4759041A 09F0 BIS R26, R25, R26 ; R26, R25, R26 4B650CF9 09F4 INSLH R27, R5, R25 ; R27, R5, R25 236E03C8 09F8 LDA R27, 968(R14) ; R27, 968(R14) ; 009518 47190418 09FC BIS R24, R25, R24 ; R24, R25, R24 ; 009517 3F0503C3 0A00 STQ_U R24, 963(R5) ; R24, 963(R5) 3F4503C0 0A04 STQ_U R26, 960(R5) ; R26, 960(R5) 43C1153E 0A08 SUBQ SP, 8, SP ; SP, 8, SP ; 009518 D3401278 0A0C BSR R26, FINDLDT ; R26, FINDLDT 43C1141E 0A10 ADDQ SP, 8, SP ; SP, 8, SP E400000B 0A14 BEQ R0, 88_55$ ; R0, 88_55$ ; 009521 43C0953E 0A18 SUBQ SP, 4, SP ; SP, 4, SP ; 009523 A74E0020 0A1C LDQ R26, 32(R14) ; R26, 32(R14) ; 009528 A76E0028 0A20 LDQ R27, 40(R14) ; R27, 40(R14) B03E0000 0A24 STL R1, (SP) ; R1, (SP) ; 009523 A2E00000 0A28 LDL R23, (R0) ; R23, (R0) ; 009525 B2E10000 0A2C STL R23, (R1) ; R23, (R1) A0200034 0A30 LDL R1, 52(R0) ; R1, 52(R0) ; 009527 43C0953E 0A34 SUBQ SP, 4, SP ; SP, 4, SP ; 009528 6B5A4000 0A38 JSR R26, R26 ; R26, R26 A03E0004 0A3C LDL R1, 4(SP) ; R1, 4(SP) ; 009529 43C1141E 0A40 ADDQ SP, 8, SP ; SP, 8, SP 0A44 88_55$: ; 009531 2F8503C0 0A44 LDQ_U R28, 960(R5) ; R28, 960(R5) ; 009532 47E13416 0A48 BIS R31, 9, R22 ; R31, 9, R22 2F4503C3 0A4C LDQ_U R26, 963(R5) ; R26, 963(R5) 4AC5057B 0A50 INSLL R22, R5, R27 ; R22, R5, R27 48250578 0A54 INSLL R1, R5, R24 ; R1, R5, R24 ; 009533 4B85045C 0A58 MSKLL R28, R5, R28 ; R28, R5, R28 ; 009532 4B450C5A 0A5C MSKLH R26, R5, R26 ; R26, R5, R26 479B041C 0A60 BIS R28, R27, R28 ; R28, R27, R28 4AC50CFB 0A64 INSLH R22, R5, R27 ; R22, R5, R27 475B041A 0A68 BIS R26, R27, R26 ; R26, R27, R26 3F4503C3 0A6C STQ_U R26, 963(R5) ; R26, 963(R5) 3F8503C0 0A70 STQ_U R28, 960(R5) ; R28, 960(R5) 2F2503D0 0A74 LDQ_U R25, 976(R5) ; R25, 976(R5) ; 009533 2EE503D3 0A78 LDQ_U R23, 979(R5) ; R23, 979(R5) 4B250459 0A7C MSKLL R25, R5, R25 ; R25, R5, R25 4AE50C57 0A80 MSKLH R23, R5, R23 ; R23, R5, R23 47380419 0A84 BIS R25, R24, R25 ; R25, R24, R25 48250CF8 0A88 INSLH R1, R5, R24 ; R1, R5, R24 46F80417 0A8C BIS R23, R24, R23 ; R23, R24, R23 3EE503D3 0A90 STQ_U R23, 979(R5) ; R23, 979(R5) 3F2503D0 0A94 STQ_U R25, 976(R5) ; R25, 976(R5) E4200015 0A98 BEQ R1, 88_989$ ; R1, 88_989$ ; 009535 0A9C 88_30017$: A74E0030 0A9C LDQ R26, 48(R14) ; R26, 48(R14) ; 009538 43C0953E 0AA0 SUBQ SP, 4, SP ; SP, 4, SP ; 009536 A76E0038 0AA4 LDQ R27, 56(R14) ; R27, 56(R14) ; 009538 B03E0000 0AA8 STL R1, (SP) ; R1, (SP) ; 009536 JTDRIVER Machine Code Listing 2-DEC-1994 10:13:13 AMAC V2.1-13-2671 Page 122 V01H ACCFILT 2-DEC-1994 10:12:45 [EVERHART.JT]JTDRIVER_S2.MAR;120 203F0530 0AAC LDA R1, 1328(R31) ; R1, 1328(R31) ; 009537 43C0953E 0AB0 SUBQ SP, 4, SP ; SP, 4, SP ; 009538 6B5A4000 0AB4 JSR R26, R26 ; R26, R26 A03E0004 0AB8 LDL R1, 4(SP) ; R1, 4(SP) ; 009539 43C1141E 0ABC ADDQ SP, 8, SP ; SP, 8, SP 2EC503D8 0AC0 LDQ_U R22, 984(R5) ; R22, 984(R5) ; 009540 2F6503DB 0AC4 LDQ_U R27, 987(R5) ; R27, 987(R5) 4805057C 0AC8 INSLL R0, R5, R28 ; R0, R5, R28 4AC50456 0ACC MSKLL R22, R5, R22 ; R22, R5, R22 4B650C5B 0AD0 MSKLH R27, R5, R27 ; R27, R5, R27 46DC0416 0AD4 BIS R22, R28, R22 ; R22, R28, R22 48050CFC 0AD8 INSLH R0, R5, R28 ; R0, R5, R28 477C041B 0ADC BIS R27, R28, R27 ; R27, R28, R27 3F6503DB 0AE0 STQ_U R27, 987(R5) ; R27, 987(R5) 3EC503D8 0AE4 STQ_U R22, 984(R5) ; R22, 984(R5) F0000037 0AE8 BLBS R0, 88_56$ ; R0, 88_56$ ; 009541 47FF041F 0AEC NOP ; 0AF0 88_989$: ; 009542 A74EFF48 0AF0 LDQ R26, -184(R14) ; R26, -184(R14) ; 010195 A33A0000 0AF4 LDL R25, (R26) ; R25, (R26) E3200008 0AF8 BLBC R25, 88_30022$ ; R25, 88_30022$ 43C1153E 0AFC SUBQ SP, 8, SP ; SP, 8, SP A74EFFD0 0B00 LDQ R26, -48(R14) ; R26, -48(R14) B41E0000 0B04 STQ R0, (SP) ; R0, (SP) A0050034 0B08 LDL R0, 52(R5) ; R0, 52(R5) A76EFFD8 0B0C LDQ R27, -40(R14) ; R27, -40(R14) 6B5A4000 0B10 JSR R26, R26 ; R26, R26 A41E0000 0B14 LDQ R0, (SP) ; R0, (SP) 43C1141E 0B18 ADDQ SP, 8, SP ; SP, 8, SP 0B1C 88_30022$: 47E05410 0B1C BIS R31, 2, R16 ; R31, 2, R16 47E00418 0B20 MOV R0, R24 ; R0, R24 47E10417 0B24 MOV R1, R23 ; R1, R23 0000000F 0B28 CALL_PAL 15 ; 15 A0BE000C 0B2C LDL R5, 12(SP) ; R5, 12(SP) ; 010196 236E0280 0B30 LDA R27, 640(R14) ; R27, 640(R14) ; 010200 A05E0000 0B34 LDL R2, (SP) ; R2, (SP) ; 010196 47F80400 0B38 MOV R24, R0 ; R24, R0 ; 010195 A01E002C 0B3C LDL R0, 44(SP) ; R0, 44(SP) ; 010198 47F70401 0B40 MOV R23, R1 ; R23, R1 ; 010195 A07E0004 0B44 LDL R3, 4(SP) ; R3, 4(SP) ; 010196 A09E0008 0B48 LDL R4, 8(SP) ; R4, 8(SP) A0DE0010 0B4C LDL R6, 16(SP) ; R6, 16(SP) A0FE0014 0B50 LDL R7, 20(SP) ; R7, 20(SP) A11E0018 0B54 LDL R8, 24(SP) ; R8, 24(SP) A13E001C 0B58 LDL R9, 28(SP) ; R9, 28(SP) A15E0020 0B5C LDL R10, 32(SP) ; R10, 32(SP) A17E0024 0B60 LDL R11, 36(SP) ; R11, 36(SP) A03E0028 0B64 LDL R1, 40(SP) ; R1, 40(SP) ; 010197 A01E0030 0B68 LDL R0, 48(SP) ; R0, 48(SP) ; 010199 A0BE0034 0B6C LDL R5, 52(SP) ; R5, 52(SP) 43C7141E 0B70 ADDQ SP, 56, SP ; SP, 56, SP D3400ABA 0B74 BSR R26, POPOUT ; R26, POPOUT ; 010200 C3FFFDFD 0B78 BR $L8 ; $L8 ; 010201 47FF041F 0B7C NOP ; 0B80 88_47$: ; 009354 A01E0000 0B80 LDL R0, (SP) ; R0, (SP) ; 009355 JTDRIVER Machine Code Listing 2-DEC-1994 10:13:13 AMAC V2.1-13-2671 Page 123 V01H ACCFILT 2-DEC-1994 10:12:45 [EVERHART.JT]JTDRIVER_S2.MAR;120 A03E0004 0B84 LDL R1, 4(SP) ; R1, 4(SP) A05E0008 0B88 LDL R2, 8(SP) ; R2, 8(SP) A07E000C 0B8C LDL R3, 12(SP) ; R3, 12(SP) 43C2141E 0B90 ADDQ SP, 16, SP ; SP, 16, SP C3FFFF78 0B94 BR 88_50$ ; 88_50$ ; 009356 0B98 $L94: ; 009516 43C1153E 0B98 SUBQ SP, 8, SP ; SP, 8, SP A74EFF90 0B9C LDQ R26, -112(R14) ; R26, -112(R14) A76EFF98 0BA0 LDQ R27, -104(R14) ; R27, -104(R14) B41E0000 0BA4 STQ R0, (SP) ; R0, (SP) A0050034 0BA8 LDL R0, 52(R5) ; R0, 52(R5) 6B5A4000 0BAC JSR R26, R26 ; R26, R26 A41E0000 0BB0 LDQ R0, (SP) ; R0, (SP) 43C1141E 0BB4 ADDQ SP, 8, SP ; SP, 8, SP C3FFFF87 0BB8 BR 88_30015$ ; 88_30015$ 47FF041F 0BBC NOP ; 0BC0 $L95: ; 009535 C3FFFFCB 0BC0 BR 88_989$ ; 88_989$ 47FF041F 0BC4 NOP ; 0BC8 88_56$: ; 009543 2F2503C0 0BC8 LDQ_U R25, 960(R5) ; R25, 960(R5) ; 009544 47E1541A 0BCC BIS R31, 10, R26 ; R31, 10, R26 2EE503C3 0BD0 LDQ_U R23, 963(R5) ; R23, 963(R5) 4B450578 0BD4 INSLL R26, R5, R24 ; R26, R5, R24 215F052C 0BD8 LDA R10, 1324(R31) ; R10, 1324(R31) ; 009549 4B250459 0BDC MSKLL R25, R5, R25 ; R25, R5, R25 ; 009544 4AE50C57 0BE0 MSKLH R23, R5, R23 ; R23, R5, R23 47380419 0BE4 BIS R25, R24, R25 ; R25, R24, R25 4B450CF8 0BE8 INSLH R26, R5, R24 ; R26, R5, R24 234503BC 0BEC LDA R26, 956(R5) ; R26, 956(R5) ; 009546 46F80417 0BF0 BIS R23, R24, R23 ; R23, R24, R23 ; 009544 3EE503C3 0BF4 STQ_U R23, 963(R5) ; R23, 963(R5) 3F2503C0 0BF8 STQ_U R25, 960(R5) ; R25, 960(R5) 485A0578 0BFC INSLL R2, R26, R24 ; R2, R26, R24 ; 009546 B0410000 0C00 STL R2, (R1) ; R2, (R1) ; 009545 43E10009 0C04 SEXTL R1, R9 ; R1, R9 ; 009547 2F2503BC 0C08 LDQ_U R25, 956(R5) ; R25, 956(R5) ; 009546 494012D1 0C0C EXTWL R10, 0, R17 ; R10, 0, R17 ; 009550 2EE503BF 0C10 LDQ_U R23, 959(R5) ; R23, 959(R5) ; 009546 47E20410 0C14 MOV R2, R16 ; R2, R16 ; 009550 4B3A0459 0C18 MSKLL R25, R26, R25 ; R25, R26, R25 ; 009546 4AFA0C57 0C1C MSKLH R23, R26, R23 ; R23, R26, R23 47380419 0C20 BIS R25, R24, R25 ; R25, R24, R25 485A0CF8 0C24 INSLH R2, R26, R24 ; R2, R26, R24 A74E0040 0C28 LDQ R26, 64(R14) ; R26, 64(R14) ; 009550 46F80417 0C2C BIS R23, R24, R23 ; R23, R24, R23 ; 009546 3EE503BF 0C30 STQ_U R23, 959(R5) ; R23, 959(R5) 3F2503BC 0C34 STQ_U R25, 956(R5) ; R25, 956(R5) B3E20000 0C38 STL R31, (R2) ; R31, (R2) ; 009548 43C3153E 0C3C SUBQ SP, 24, SP ; SP, 24, SP ; 009550 B0BE0014 0C40 STL R5, 20(SP) ; R5, 20(SP) B09E0010 0C44 STL R4, 16(SP) ; R4, 16(SP) B07E000C 0C48 STL R3, 12(SP) ; R3, 12(SP) B05E0008 0C4C STL R2, 8(SP) ; R2, 8(SP) B03E0004 0C50 STL R1, 4(SP) ; R1, 4(SP) 47E20401 0C54 MOV R2, R1 ; R2, R1 B01E0000 0C58 STL R0, (SP) ; R0, (SP) JTDRIVER Machine Code Listing 2-DEC-1994 10:13:13 AMAC V2.1-13-2671 Page 124 V01H ACCFILT 2-DEC-1994 10:12:45 [EVERHART.JT]JTDRIVER_S2.MAR;120 47FF0400 0C5C CLR R0 ; R0 6B5A4000 0C60 JSR R26, R26 ; R26, R26 235F0530 0C64 LDA R26, 1328(R31) ; R26, 1328(R31) ; 009552 47E17419 0C68 BIS R31, 11, R25 ; R31, 11, R25 ; 009558 A05E0008 0C6C LDL R2, 8(SP) ; R2, 8(SP) ; 009550 A01E0000 0C70 LDL R0, (SP) ; R0, (SP) A03E0004 0C74 LDL R1, 4(SP) ; R1, 4(SP) A07E000C 0C78 LDL R3, 12(SP) ; R3, 12(SP) 43E2000B 0C7C SEXTL R2, R11 ; R2, R11 ; 009554 A09E0010 0C80 LDL R4, 16(SP) ; R4, 16(SP) ; 009550 A0BE0014 0C84 LDL R5, 20(SP) ; R5, 20(SP) 43C3141E 0C88 ADDQ SP, 24, SP ; SP, 24, SP B3420034 0C8C STL R26, 52(R2) ; R26, 52(R2) ; 009552 B0C20004 0C90 STL R6, 4(R2) ; R6, 4(R2) ; 009553 43C1153E 0C94 SUBQ SP, 8, SP ; SP, 8, SP ; 009557 B07E0004 0C98 STL R3, 4(SP) ; R3, 4(SP) B05E0000 0C9C STL R2, (SP) ; R2, (SP) B32503C0 0CA0 STL R25, 960(R5) ; R25, 960(R5) ; 009558 A025012C 0CA4 LDL R1, 300(R5) ; R1, 300(R5) ; 009559 F8200006 0CA8 BGE R1, 88_999$ ; R1, 88_999$ ; 009560 A04400D4 0CAC LDL R2, 212(R4) ; R2, 212(R4) ; 009561 484012C2 0CB0 EXTWL R2, 0, R2 ; R2, 0, R2 4840B722 0CB4 SLL R2, 5, R2 ; R2, 5, R2 ; 009562 43E20002 0CB8 SEXTL R2, R2 ; R2, R2 40410003 0CBC ADDL R2, R1, R3 ; R2, R1, R3 ; 009564 43E30001 0CC0 SEXTL R3, R1 ; R3, R1 ; 009565 0CC4 88_999$: ; 009566 A05E0000 0CC4 LDL R2, (SP) ; R2, (SP) ; 009567 47E19417 0CC8 BIS R31, 12, R23 ; R31, 12, R23 ; 009568 A07E0004 0CCC LDL R3, 4(SP) ; R3, 4(SP) ; 009567 43C1141E 0CD0 ADDQ SP, 8, SP ; SP, 8, SP B2E503C0 0CD4 STL R23, 960(R5) ; R23, 960(R5) ; 009568 B02B0020 0CD8 STL R1, 32(R11) ; R1, 32(R11) ; 009569 F83FFF84 0CDC BGE R1, 88_989$ ; R1, 88_989$ ; 009570 A38B0020 0CE0 LDL R28, 32(R11) ; R28, 32(R11) ; 009571 A74E0030 0CE4 LDQ R26, 48(R14) ; R26, 48(R14) ; 009576 47E21401 0CE8 BIS R31, 16, R1 ; R31, 16, R1 ; 009575 A76E0038 0CEC LDQ R27, 56(R14) ; R27, 56(R14) ; 009576 4381101C 0CF0 ADDL R28, 8, R28 ; R28, 8, R28 ; 009571 B38B0020 0CF4 STL R28, 32(R11) ; R28, 32(R11) 43C1153E 0CF8 SUBQ SP, 8, SP ; SP, 8, SP ; 009576 6B5A4000 0CFC JSR R26, R26 ; R26, R26 43C1141E 0D00 ADDQ SP, 8, SP ; SP, 8, SP F000000A 0D04 BLBS R0, 88_57$ ; R0, 88_57$ ; 009577 A74E0020 0D08 LDQ R26, 32(R14) ; R26, 32(R14) ; 009582 B3E90000 0D0C STL R31, (R9) ; R31, (R9) ; 009579 43EB0000 0D10 SEXTL R11, R0 ; R11, R0 ; 009580 A02B0034 0D14 LDL R1, 52(R11) ; R1, 52(R11) ; 009581 43C1153E 0D18 SUBQ SP, 8, SP ; SP, 8, SP ; 009582 A76E0028 0D1C LDQ R27, 40(R14) ; R27, 40(R14) 6B5A4000 0D20 JSR R26, R26 ; R26, R26 43C1141E 0D24 ADDQ SP, 8, SP ; SP, 8, SP C3FFFF71 0D28 BR 88_989$ ; 88_989$ ; 009583 2FFE0000 0D2C LNOP ; 0D30 88_57$: ; 009584 B04B0024 0D30 STL R2, 36(R11) ; R2, 36(R11) ; 009585 47E1B41A 0D34 BIS R31, 13, R26 ; R31, 13, R26 ; 009586 JTDRIVER Machine Code Listing 2-DEC-1994 10:13:13 AMAC V2.1-13-2671 Page 125 V01H ACCFILT 2-DEC-1994 10:12:45 [EVERHART.JT]JTDRIVER_S2.MAR;120 43EB0001 0D38 SEXTL R11, R1 ; R11, R1 ; 009588 B34503C0 0D3C STL R26, 960(R5) ; R26, 960(R5) ; 009586 47E00418 0D40 MOV R0, R24 ; R0, R24 ; 009590 B3E20000 0D44 STL R31, (R2) ; R31, (R2) ; 009587 B3E20004 0D48 STL R31, 4(R2) ; R31, 4(R2) 233F1F00 0D4C LDA R25, 7936(R31) ; R25, 7936(R31) ; 009595 00000091 0D50 CALL_PAL 145 ; 145 ; 009590 B00B0414 0D54 STL R0, 1044(R11) ; R0, 1044(R11) A34B0414 0D58 LDL R26, 1044(R11) ; R26, 1044(R11) ; 009595 47F80400 0D5C MOV R24, R0 ; R24, R0 ; 009590 231F0200 0D60 LDA R24, 512(R31) ; R24, 512(R31) ; 009595 200B013C 0D64 LDA R0, 316(R11) ; R0, 316(R11) ; 009596 4759011A 0D68 BIC R26, R25, R26 ; R26, R25, R26 ; 009595 4758041A 0D6C BIS R26, R24, R26 ; R26, R24, R26 B34B0414 0D70 STL R26, 1044(R11) ; R26, 1044(R11) 47E00419 0D74 MOV R0, R25 ; R0, R25 ; 009598 40009400 0D78 ADDQ R0, 4, R0 ; R0, 4, R0 A05E0000 0D7C LDL R2, (SP) ; R2, (SP) ; 009597 47E00418 0D80 MOV R0, R24 ; R0, R24 ; 009599 A07E0004 0D84 LDL R3, 4(SP) ; R3, 4(SP) ; 009597 40009400 0D88 ADDQ R0, 4, R0 ; R0, 4, R0 ; 009599 A09E0008 0D8C LDL R4, 8(SP) ; R4, 8(SP) ; 009597 A0BE000C 0D90 LDL R5, 12(SP) ; R5, 12(SP) 47E0041A 0D94 MOV R0, R26 ; R0, R26 ; 009600 A0DE0010 0D98 LDL R6, 16(SP) ; R6, 16(SP) ; 009597 40009400 0D9C ADDQ R0, 4, R0 ; R0, 4, R0 ; 009600 A0FE0014 0DA0 LDL R7, 20(SP) ; R7, 20(SP) ; 009597 A11E0018 0DA4 LDL R8, 24(SP) ; R8, 24(SP) A13E001C 0DA8 LDL R9, 28(SP) ; R9, 28(SP) A15E0020 0DAC LDL R10, 32(SP) ; R10, 32(SP) A17E0024 0DB0 LDL R11, 36(SP) ; R11, 36(SP) 43C5141E 0DB4 ADDQ SP, 40, SP ; SP, 40, SP B0590000 0DB8 STL R2, (R25) ; R2, (R25) ; 009598 47E00419 0DBC MOV R0, R25 ; R0, R25 ; 009601 40009400 0DC0 ADDQ R0, 4, R0 ; R0, 4, R0 B0780000 0DC4 STL R3, (R24) ; R3, (R24) ; 009599 47E00418 0DC8 MOV R0, R24 ; R0, R24 ; 009602 B09A0000 0DCC STL R4, (R26) ; R4, (R26) ; 009600 40009400 0DD0 ADDQ R0, 4, R0 ; R0, 4, R0 ; 009602 B0B90000 0DD4 STL R5, (R25) ; R5, (R25) ; 009601 47E0041A 0DD8 MOV R0, R26 ; R0, R26 ; 009603 B0D80000 0DDC STL R6, (R24) ; R6, (R24) ; 009602 40009400 0DE0 ADDQ R0, 4, R0 ; R0, 4, R0 ; 009603 47E00419 0DE4 MOV R0, R25 ; R0, R25 ; 009604 40009400 0DE8 ADDQ R0, 4, R0 ; R0, 4, R0 B0FA0000 0DEC STL R7, (R26) ; R7, (R26) ; 009603 47E00418 0DF0 MOV R0, R24 ; R0, R24 ; 009605 B1190000 0DF4 STL R8, (R25) ; R8, (R25) ; 009604 40009400 0DF8 ADDQ R0, 4, R0 ; R0, 4, R0 ; 009605 47E0041A 0DFC MOV R0, R26 ; R0, R26 ; 009606 40009400 0E00 ADDQ R0, 4, R0 ; R0, 4, R0 B1380000 0E04 STL R9, (R24) ; R9, (R24) ; 009605 47E00419 0E08 MOV R0, R25 ; R0, R25 ; 009607 B15A0000 0E0C STL R10, (R26) ; R10, (R26) ; 009606 47E1D418 0E10 BIS R31, 14, R24 ; R31, 14, R24 ; 009608 B1790000 0E14 STL R11, (R25) ; R11, (R25) ; 009607 B30503C0 0E18 STL R24, 960(R5) ; R24, 960(R5) ; 009608 JTDRIVER Machine Code Listing 2-DEC-1994 10:13:13 AMAC V2.1-13-2671 Page 126 V01H ACCFILT 2-DEC-1994 10:12:45 [EVERHART.JT]JTDRIVER_S2.MAR;120 40009400 0E1C ADDQ R0, 4, R0 ; R0, 4, R0 ; 009607 B0C503C4 0E20 STL R6, 964(R5) ; R6, 964(R5) ; 009609 43C5153E 0E24 SUBQ SP, 40, SP ; SP, 40, SP ; 009610 B17E0024 0E28 STL R11, 36(SP) ; R11, 36(SP) 43E1000B 0E2C SEXTL R1, R11 ; R1, R11 ; 009611 B15E0020 0E30 STL R10, 32(SP) ; R10, 32(SP) ; 009610 200B0178 0E34 LDA R0, 376(R11) ; R0, 376(R11) ; 009616 B13E001C 0E38 STL R9, 28(SP) ; R9, 28(SP) ; 009610 B11E0018 0E3C STL R8, 24(SP) ; R8, 24(SP) B0FE0014 0E40 STL R7, 20(SP) ; R7, 20(SP) B0DE0010 0E44 STL R6, 16(SP) ; R6, 16(SP) B0BE000C 0E48 STL R5, 12(SP) ; R5, 12(SP) B09E0008 0E4C STL R4, 8(SP) ; R4, 8(SP) B07E0004 0E50 STL R3, 4(SP) ; R3, 4(SP) B05E0000 0E54 STL R2, (SP) ; R2, (SP) A3430090 0E58 LDL R26, 144(R3) ; R26, 144(R3) ; 009612 B34B0528 0E5C STL R26, 1320(R11) ; R26, 1320(R11) A3230090 0E60 LDL R25, 144(R3) ; R25, 144(R3) ; 009613 B32503E4 0E64 STL R25, 996(R5) ; R25, 996(R5) A345023C 0E68 LDL R26, 572(R5) ; R26, 572(R5) ; 009615 47E00419 0E6C MOV R0, R25 ; R0, R25 ; 009618 40009400 0E70 ADDQ R0, 4, R0 ; R0, 4, R0 B34B0148 0E74 STL R26, 328(R11) ; R26, 328(R11) ; 009615 A3430078 0E78 LDL R26, 120(R3) ; R26, 120(R3) ; 009618 B3590000 0E7C STL R26, (R25) ; R26, (R25) 47E0041A 0E80 MOV R0, R26 ; R0, R26 ; 009619 A303007C 0E84 LDL R24, 124(R3) ; R24, 124(R3) 40009400 0E88 ADDQ R0, 4, R0 ; R0, 4, R0 B31A0000 0E8C STL R24, (R26) ; R24, (R26) A3230080 0E90 LDL R25, 128(R3) ; R25, 128(R3) ; 009620 47E00418 0E94 MOV R0, R24 ; R0, R24 40009400 0E98 ADDQ R0, 4, R0 ; R0, 4, R0 B3380000 0E9C STL R25, (R24) ; R25, (R24) 47E00419 0EA0 MOV R0, R25 ; R0, R25 ; 009621 A3430084 0EA4 LDL R26, 132(R3) ; R26, 132(R3) 40009400 0EA8 ADDQ R0, 4, R0 ; R0, 4, R0 B3590000 0EAC STL R26, (R25) ; R26, (R25) A3030088 0EB0 LDL R24, 136(R3) ; R24, 136(R3) ; 009622 47E1F419 0EB4 BIS R31, 15, R25 ; R31, 15, R25 ; 009638 B3000000 0EB8 STL R24, (R0) ; R24, (R0) ; 009622 A1430078 0EBC LDL R10, 120(R3) ; R10, 120(R3) ; 009632 A14A0004 0EC0 LDL R10, 4(R10) ; R10, 4(R10) ; 009636 A34A0000 0EC4 LDL R26, (R10) ; R26, (R10) ; 009637 B34B0008 0EC8 STL R26, 8(R11) ; R26, 8(R11) B32503C0 0ECC STL R25, 960(R5) ; R25, 960(R5) ; 009638 A3040074 0ED0 LDL R24, 116(R4) ; R24, 116(R4) ; 009640 B30B001C 0ED4 STL R24, 28(R11) ; R24, 28(R11) A34A0004 0ED8 LDL R26, 4(R10) ; R26, 4(R10) ; 009646 B34B0404 0EDC STL R26, 1028(R11) ; R26, 1028(R11) 2F0A0008 0EE0 LDQ_U R24, 8(R10) ; R24, 8(R10) ; 009647 4B0A02D8 0EE4 EXTWL R24, R10, R24 ; R24, R10, R24 F140026C 0EE8 BLBS R10, $L128 ; R10, $L128 0EEC $L129: B30B0408 0EEC STL R24, 1032(R11) ; R24, 1032(R11) 41415418 0EF0 ADDQ R10, 10, R24 ; R10, 10, R24 ; 009648 2F2A000A 0EF4 LDQ_U R25, 10(R10) ; R25, 10(R10) 2DEA000D 0EF8 LDQ_U R15, 13(R10) ; R15, 13(R10) JTDRIVER Machine Code Listing 2-DEC-1994 10:13:13 AMAC V2.1-13-2671 Page 127 V01H ACCFILT 2-DEC-1994 10:12:45 [EVERHART.JT]JTDRIVER_S2.MAR;120 4B3804D9 0EFC EXTLL R25, R24, R25 ; R25, R24, R25 49F80D5A 0F00 EXTLH R15, R24, R26 ; R15, R24, R26 4141D418 0F04 ADDQ R10, 14, R24 ; R10, 14, R24 ; 009649 473A0419 0F08 BIS R25, R26, R25 ; R25, R26, R25 ; 009648 B32B040C 0F0C STL R25, 1036(R11) ; R25, 1036(R11) 2F2A000E 0F10 LDQ_U R25, 14(R10) ; R25, 14(R10) ; 009649 4B3802D9 0F14 EXTWL R25, R24, R25 ; R25, R24, R25 F3000264 0F18 BLBS R24, $L130 ; R24, $L130 0F1C $L131: B32B0410 0F1C STL R25, 1040(R11) ; R25, 1040(R11) 210B03D8 0F20 LDA R8, 984(R11) ; R8, 984(R11) ; 009660 A72EFF78 0F24 LDQ R25, -136(R14) ; R25, -136(R14) ; 009650 47E31411 0F28 BIS R31, 24, R17 ; R31, 24, R17 ; 009662 A6EEFF18 0F2C LDQ R23, -232(R14) ; R23, -232(R14) ; 009657 47E80410 0F30 MOV R8, R16 ; R8, R16 ; 009662 A1390000 0F34 LDL R9, (R25) ; R9, (R25) ; 009650 A3090000 0F38 LDL R24, (R9) ; R24, (R9) ; 009651 B30B000C 0F3C STL R24, 12(R11) ; R24, 12(R11) A3290004 0F40 LDL R25, 4(R9) ; R25, 4(R9) ; 009652 B32B0010 0F44 STL R25, 16(R11) ; R25, 16(R11) 232B01D8 0F48 LDA R25, 472(R11) ; R25, 472(R11) ; 009657 A3490280 0F4C LDL R26, 640(R9) ; R26, 640(R9) ; 009653 B34B0014 0F50 STL R26, 20(R11) ; R26, 20(R11) A3090284 0F54 LDL R24, 644(R9) ; R24, 644(R9) ; 009654 234B03F8 0F58 LDA R26, 1016(R11) ; R26, 1016(R11) ; 009658 21370198 0F5C LDA R9, 408(R23) ; R9, 408(R23) ; 009659 47E90412 0F60 MOV R9, R18 ; R9, R18 ; 009662 B30B0018 0F64 STL R24, 24(R11) ; R24, 24(R11) ; 009654 B0AB0030 0F68 STL R5, 48(R11) ; R5, 48(R11) ; 009655 B337019C 0F6C STL R25, 412(R23) ; R25, 412(R23) ; 009657 B35701A4 0F70 STL R26, 420(R23) ; R26, 420(R23) ; 009658 43C3153E 0F74 SUBQ SP, 24, SP ; SP, 24, SP ; 009661 A74EFFF0 0F78 LDQ R26, -16(R14) ; R26, -16(R14) ; 009662 B0BE0014 0F7C STL R5, 20(SP) ; R5, 20(SP) ; 009661 B09E0010 0F80 STL R4, 16(SP) ; R4, 16(SP) B07E000C 0F84 STL R3, 12(SP) ; R3, 12(SP) B05E0008 0F88 STL R2, 8(SP) ; R2, 8(SP) B03E0004 0F8C STL R1, 4(SP) ; R1, 4(SP) B01E0000 0F90 STL R0, (SP) ; R0, (SP) 6B5A4000 0F94 JSR R26, R26 ; R26, R26 ; 009662 A07E000C 0F98 LDL R3, 12(SP) ; R3, 12(SP) ; 009664 A01E0000 0F9C LDL R0, (SP) ; R0, (SP) 212B0190 0FA0 LDA R9, 400(R11) ; R9, 400(R11) ; 009666 A03E0004 0FA4 LDL R1, 4(SP) ; R1, 4(SP) ; 009664 A05E0008 0FA8 LDL R2, 8(SP) ; R2, 8(SP) A09E0010 0FAC LDL R4, 16(SP) ; R4, 16(SP) A0BE0014 0FB0 LDL R5, 20(SP) ; R5, 20(SP) 43C3141E 0FB4 ADDQ SP, 24, SP ; SP, 24, SP A3230078 0FB8 LDL R25, 120(R3) ; R25, 120(R3) ; 009668 A1190000 0FBC LDL R8, (R25) ; R8, (R25) 41081536 0FC0 SUBQ R8, 64, R22 ; R8, 64, R22 ; 009672 EEC00001 0FC4 BLE R22, 88_59$ ; R22, 88_59$ ; 009673 47E81408 0FC8 BIS R31, 64, R8 ; R31, 64, R8 ; 009674 0FCC 88_59$: ; 009675 43C3153E 0FCC SUBQ SP, 24, SP ; SP, 24, SP ; 009676 A74EFFF0 0FD0 LDQ R26, -16(R14) ; R26, -16(R14) ; 009677 490012D1 0FD4 EXTWL R8, 0, R17 ; R8, 0, R17 JTDRIVER Machine Code Listing 2-DEC-1994 10:13:13 AMAC V2.1-13-2671 Page 128 V01H ACCFILT 2-DEC-1994 10:12:45 [EVERHART.JT]JTDRIVER_S2.MAR;120 B0BE0014 0FD8 STL R5, 20(SP) ; R5, 20(SP) ; 009676 B09E0010 0FDC STL R4, 16(SP) ; R4, 16(SP) 47EA0412 0FE0 MOV R10, R18 ; R10, R18 ; 009677 B07E000C 0FE4 STL R3, 12(SP) ; R3, 12(SP) ; 009676 47E90410 0FE8 MOV R9, R16 ; R9, R16 ; 009677 B05E0008 0FEC STL R2, 8(SP) ; R2, 8(SP) ; 009676 B03E0004 0FF0 STL R1, 4(SP) ; R1, 4(SP) B01E0000 0FF4 STL R0, (SP) ; R0, (SP) 6B5A4000 0FF8 JSR R26, R26 ; R26, R26 ; 009677 47E21418 0FFC BIS R31, 16, R24 ; R31, 16, R24 ; 009679 233F0FFF 1000 LDA R25, 4095(R31) ; R25, 4095(R31) ; 009680 A0BE0014 1004 LDL R5, 20(SP) ; R5, 20(SP) ; 009678 238B041C 1008 LDA R28, 1052(R11) ; R28, 1052(R11) ; 009692 A01E0000 100C LDL R0, (SP) ; R0, (SP) ; 009678 A03E0004 1010 LDL R1, 4(SP) ; R1, 4(SP) A05E0008 1014 LDL R2, 8(SP) ; R2, 8(SP) A07E000C 1018 LDL R3, 12(SP) ; R3, 12(SP) A09E0010 101C LDL R4, 16(SP) ; R4, 16(SP) 43C3141E 1020 ADDQ SP, 24, SP ; SP, 24, SP B30503C0 1024 STL R24, 960(R5) ; R24, 960(R5) ; 009679 A3490000 1028 LDL R26, (R9) ; R26, (R9) ; 009680 4759011A 102C BIC R26, R25, R26 ; R26, R25, R26 B3490000 1030 STL R26, (R9) ; R26, (R9) B3E90030 1034 STL R31, 48(R9) ; R31, 48(R9) ; 009682 A103007C 1038 LDL R8, 124(R3) ; R8, 124(R3) ; 009686 E500002E 103C BEQ R8, 88_159$ ; R8, 88_159$ ; 009690 A3080000 1040 LDL R24, (R8) ; R24, (R8) ; 009691 B30B041C 1044 STL R24, 1052(R11) ; R24, 1052(R11) 2ECB041C 1048 LDQ_U R22, 1052(R11) ; R22, 1052(R11) ; 009692 4ADC02D6 104C EXTWL R22, R28, R22 ; R22, R28, R22 F380021A 1050 BLBS R28, $L132 ; R28, $L132 1054 $L133: 4AC61736 1054 SLL R22, 48, R22 ; R22, 48, R22 47FFF419 1058 BIS R31, 255, R25 ; R31, 255, R25 4AC61796 105C SRA R22, 48, R22 ; R22, 48, R22 43360534 1060 SUBQ R25, R22, R20 ; R25, R22, R20 FA800008 1064 BGE R20, 88_259$ ; R20, 88_259$ ; 009693 2F8B041C 1068 LDQ_U R28, 1052(R11) ; R28, 1052(R11) ; 009694 47FFF417 106C BIS R31, 255, R23 ; R31, 255, R23 22CB041C 1070 LDA R22, 1052(R11) ; R22, 1052(R11) 4AF6037A 1074 INSWL R23, R22, R26 ; R23, R22, R26 4B96025C 1078 MSKWL R28, R22, R28 ; R28, R22, R28 479A041C 107C BIS R28, R26, R28 ; R28, R26, R28 F2C00212 1080 BLBS R22, $L134 ; R22, $L134 1084 $L135: 3F8B041C 1084 STQ_U R28, 1052(R11) ; R28, 1052(R11) 1088 88_259$: ; 009695 A1080004 1088 LDL R8, 4(R8) ; R8, 4(R8) E500001A 108C BEQ R8, 88_159$ ; R8, 88_159$ ; 009696 43C3153E 1090 SUBQ SP, 24, SP ; SP, 24, SP ; 009697 230B0424 1094 LDA R24, 1060(R11) ; R24, 1060(R11) ; 009699 B0BE0014 1098 STL R5, 20(SP) ; R5, 20(SP) ; 009697 22CB041C 109C LDA R22, 1052(R11) ; R22, 1052(R11) ; 009700 B09E0010 10A0 STL R4, 16(SP) ; R4, 16(SP) ; 009697 B07E000C 10A4 STL R3, 12(SP) ; R3, 12(SP) B05E0008 10A8 STL R2, 8(SP) ; R2, 8(SP) B03E0004 10AC STL R1, 4(SP) ; R1, 4(SP) JTDRIVER Machine Code Listing 2-DEC-1994 10:13:13 AMAC V2.1-13-2671 Page 129 V01H ACCFILT 2-DEC-1994 10:12:45 [EVERHART.JT]JTDRIVER_S2.MAR;120 B01E0000 10B0 STL R0, (SP) ; R0, (SP) 202B0424 10B4 LDA R1, 1060(R11) ; R1, 1060(R11) ; 009698 B30B0420 10B8 STL R24, 1056(R11) ; R24, 1056(R11) ; 009699 2C0B041C 10BC LDQ_U R0, 1052(R11) ; R0, 1052(R11) ; 009700 481600C0 10C0 EXTBL R0, R22, R0 ; R0, R22, R0 E4000005 10C4 BEQ R0, 88_359$ ; R0, 88_359$ ; 009701 A74EFFF0 10C8 LDQ R26, -16(R14) ; R26, -16(R14) ; 009702 480012D1 10CC EXTWL R0, 0, R17 ; R0, 0, R17 47E80412 10D0 MOV R8, R18 ; R8, R18 47E10410 10D4 MOV R1, R16 ; R1, R16 6B5A4000 10D8 JSR R26, R26 ; R26, R26 10DC 88_359$: ; 009703 A01E0000 10DC LDL R0, (SP) ; R0, (SP) ; 009704 A03E0004 10E0 LDL R1, 4(SP) ; R1, 4(SP) A05E0008 10E4 LDL R2, 8(SP) ; R2, 8(SP) A07E000C 10E8 LDL R3, 12(SP) ; R3, 12(SP) A09E0010 10EC LDL R4, 16(SP) ; R4, 16(SP) A0BE0014 10F0 LDL R5, 20(SP) ; R5, 20(SP) 43C3141E 10F4 ADDQ SP, 24, SP ; SP, 24, SP 10F8 88_159$: ; 009705 A78EFF48 10F8 LDQ R28, -184(R14) ; R28, -184(R14) ; 009757 A02B0020 10FC LDL R1, 32(R11) ; R1, 32(R11) ; 009710 A37C0000 1100 LDL R27, (R28) ; R27, (R28) ; 009757 E3600008 1104 BLBC R27, 88_30018$ ; R27, 88_30018$ 43C1153E 1108 SUBQ SP, 8, SP ; SP, 8, SP A74EFFD0 110C LDQ R26, -48(R14) ; R26, -48(R14) A76EFFD8 1110 LDQ R27, -40(R14) ; R27, -40(R14) B41E0000 1114 STQ R0, (SP) ; R0, (SP) A0050034 1118 LDL R0, 52(R5) ; R0, 52(R5) 6B5A4000 111C JSR R26, R26 ; R26, R26 A41E0000 1120 LDQ R0, (SP) ; R0, (SP) 43C1141E 1124 ADDQ SP, 8, SP ; SP, 8, SP 1128 88_30018$: 47E05410 1128 BIS R31, 2, R16 ; R31, 2, R16 47E0041A 112C MOV R0, R26 ; R0, R26 47E10419 1130 MOV R1, R25 ; R1, R25 0000000F 1134 CALL_PAL 15 ; 15 47E23418 1138 BIS R31, 17, R24 ; R31, 17, R24 ; 009764 B30503C0 113C STL R24, 960(R5) ; R24, 960(R5) A2C50128 1140 LDL R22, 296(R5) ; R22, 296(R5) ; 009765 22FF0400 1144 LDA R23, 1024(R31) ; R23, 1024(R31) 47FA0400 1148 MOV R26, R0 ; R26, R0 ; 009757 47F90401 114C MOV R25, R1 ; R25, R1 46D70014 1150 AND R22, R23, R20 ; R22, R23, R20 ; 009765 E6800002 1154 BEQ R20, 88_103$ ; R20, 88_103$ ; 009766 1158 88_30019$: A0030078 1158 LDL R0, 120(R3) ; R0, 120(R3) ; 009768 F40000E8 115C BNE R0, 88_30020$ ; R0, 88_30020$ ; 009772 1160 88_103$: ; 009815 47E2541C 1160 BIS R31, 18, R28 ; R31, 18, R28 ; 009818 B38503C0 1164 STL R28, 960(R5) ; R28, 960(R5) A3610004 1168 LDL R27, 4(R1) ; R27, 4(R1) ; 009819 271F0081 116C LDAH R24, 129(R31) ; R24, 129(R31) ; 009822 FF600006 1170 BGT R27, 88_61$ ; R27, 88_61$ ; 009820 A3210000 1174 LDL R25, (R1) ; R25, (R1) ; 009821 43203019 1178 ADDL R25, 1, R25 ; R25, 1, R25 B3210000 117C STL R25, (R1) ; R25, (R1) JTDRIVER Machine Code Listing 2-DEC-1994 10:13:13 AMAC V2.1-13-2671 Page 130 V01H ACCFILT 2-DEC-1994 10:12:45 [EVERHART.JT]JTDRIVER_S2.MAR;120 A2E40080 1180 LDL R23, 128(R4) ; R23, 128(R4) ; 009822 46F80014 1184 AND R23, R24, R20 ; R23, R24, R20 F6800007 1188 BNE R20, 88_160$ ; R20, 88_160$ ; 009823 118C 88_61$: ; 009824 A3810004 118C LDL R28, 4(R1) ; R28, 4(R1) 277F0081 1190 LDAH R27, 129(R31) ; R27, 129(R31) ; 009825 4380301C 1194 ADDL R28, 1, R28 ; R28, 1, R28 ; 009824 B3810004 1198 STL R28, 4(R1) ; R28, 4(R1) A3240080 119C LDL R25, 128(R4) ; R25, 128(R4) ; 009825 473B0419 11A0 BIS R25, R27, R25 ; R25, R27, R25 B3240080 11A4 STL R25, 128(R4) ; R25, 128(R4) 11A8 88_160$: ; 009826 A70E00A0 11A8 LDQ R24, 160(R14) ; R24, 160(R14) ; 009835 43E6000C 11AC SEXTL R6, R12 ; R6, R12 ; 009834 A14B0024 11B0 LDL R10, 36(R11) ; R10, 36(R11) ; 009827 277FFFFF 11B4 LDAH R27, -1(R31) ; R27, -1(R31) ; 009840 237B0FFF 11B8 LDA R27, 4095(R27) ; R27, 4095(R27) A2F80000 11BC LDL R23, (R24) ; R23, (R24) ; 009835 43C0953E 11C0 SUBQ SP, 4, SP ; SP, 4, SP ; 009839 275F0001 11C4 LDAH R26, 1(R31) ; R26, 1(R31) ; 009841 4197012C 11C8 SUBL R12, R23, R12 ; R12, R23, R12 ; 009835 B1BE0000 11CC STL R13, (SP) ; R13, (SP) ; 009839 43EC001C 11D0 SEXTL R12, R28 ; R12, R28 ; 009836 4B80B78C 11D4 SRA R28, 5, R12 ; R28, 5, R12 235AF000 11D8 LDA R26, -4096(R26) ; R26, -4096(R26) ; 009841 4180300C 11DC ADDL R12, 1, R12 ; R12, 1, R12 ; 009838 459B010D 11E0 BIC R12, R27, R13 ; R12, R27, R13 ; 009840 43ED000D 11E4 SEXTL R13, R13 ; R13, R13 43ED0017 11E8 SEXTL R13, R23 ; R13, R23 ; 009843 A1BE0000 11EC LDL R13, (SP) ; R13, (SP) ; 009846 43C0941E 11F0 ADDQ SP, 4, SP ; SP, 4, SP 43C2953E 11F4 SUBQ SP, 20, SP ; SP, 20, SP ; 009863 43FE000A 11F8 SEXTL SP, R10 ; SP, R10 ; 009864 B17E0010 11FC STL R11, 16(SP) ; R11, 16(SP) ; 009857 47E81416 1200 BIS R31, 64, R22 ; R31, 64, R22 ; 009865 B2CA0000 1204 STL R22, (R10) ; R22, (R10) 238B0190 1208 LDA R28, 400(R11) ; R28, 400(R11) ; 009866 B38A0004 120C STL R28, 4(R10) ; R28, 4(R10) 459A010C 1210 BIC R12, R26, R12 ; R12, R26, R12 ; 009841 47E3141B 1214 BIS R31, 24, R27 ; R31, 24, R27 ; 009867 B36A0008 1218 STL R27, 8(R10) ; R27, 8(R10) 234B03D8 121C LDA R26, 984(R11) ; R26, 984(R11) ; 009868 B34A000C 1220 STL R26, 12(R10) ; R26, 12(R10) 43C0953E 1224 SUBQ SP, 4, SP ; SP, 4, SP ; 009886 4980972C 1228 SLL R12, 4, R12 ; R12, 4, R12 ; 009842 B3FE0000 122C STL R31, (SP) ; R31, (SP) ; 009886 A32A000C 1230 LDL R25, 12(R10) ; R25, 12(R10) ; 009887 43C1953E 1234 SUBQ SP, 12, SP ; SP, 12, SP ; 009889 4AE19780 1238 SRA R23, 12, R0 ; R23, 12, R0 ; 009843 43EC000C 123C SEXTL R12, R12 ; R12, R12 ; 009842 B33E0008 1240 STL R25, 8(SP) ; R25, 8(SP) ; 009887 4580040C 1244 BIS R12, R0, R12 ; R12, R0, R12 ; 009844 B3FE0004 1248 STL R31, 4(SP) ; R31, 4(SP) ; 009888 43EC000C 124C SEXTL R12, R12 ; R12, R12 ; 009844 B3FE0000 1250 STL R31, (SP) ; R31, (SP) ; 009889 498012CC 1254 EXTWL R12, 0, R12 ; R12, 0, R12 ; 009845 A30B0424 1258 LDL R24, 1060(R11) ; R24, 1060(R11) ; 009892 JTDRIVER Machine Code Listing 2-DEC-1994 10:13:13 AMAC V2.1-13-2671 Page 131 V01H ACCFILT 2-DEC-1994 10:12:45 [EVERHART.JT]JTDRIVER_S2.MAR;120 43EC0008 125C SEXTL R12, R8 ; R12, R8 ; 009848 E70000B7 1260 BEQ R24, $L98 ; R24, $L98 ; 009893 1264 88_459$: ; 009896 43C0953E 1264 SUBQ SP, 4, SP ; SP, 4, SP 22EB041C 1268 LDA R23, 1052(R11) ; R23, 1052(R11) B2FE0000 126C STL R23, (SP) ; R23, (SP) 1270 88_559$: ; 009897 43C1153E 1270 SUBQ SP, 8, SP ; SP, 8, SP ; 009899 A6CEFFC8 1274 LDQ R22, -56(R14) ; R22, -56(R14) ; 009900 A74EFF70 1278 LDQ R26, -144(R14) ; R26, -144(R14) ; 009911 47E6541C 127C BIS R31, 50, R28 ; R31, 50, R28 ; 009908 B15E0004 1280 STL R10, 4(SP) ; R10, 4(SP) ; 009898 47E3F41B 1284 BIS R31, 31, R27 ; R31, 31, R27 ; 009910 B17E0000 1288 STL R11, (SP) ; R11, (SP) ; 009899 43C2953E 128C SUBQ SP, 20, SP ; SP, 20, SP ; 009910 47E25419 1290 BIS R31, 18, R25 ; R31, 18, R25 ; 009916 B2DE0010 1294 STL R22, 16(SP) ; R22, 16(SP) ; 009900 B3FE000C 1298 STL R31, 12(SP) ; R31, 12(SP) ; 009907 47FF0410 129C CLR R16 ; R16 ; 009921 B39E0008 12A0 STL R28, 8(SP) ; R28, 8(SP) ; 009908 47E00418 12A4 MOV R0, R24 ; R0, R24 ; 009921 B11E0004 12A8 STL R8, 4(SP) ; R8, 4(SP) ; 009909 47E10417 12AC MOV R1, R23 ; R1, R23 ; 009921 B37E0000 12B0 STL R27, (SP) ; R27, (SP) ; 009910 239F01D0 12B4 LDA R28, 464(R31) ; R28, 464(R31) ; 009927 A09A0000 12B8 LDL R4, (R26) ; R4, (R26) ; 009911 43C0953E 12BC SUBQ SP, 4, SP ; SP, 4, SP ; 009913 B15E0000 12C0 STL R10, (SP) ; R10, (SP) A14B0030 12C4 LDL R10, 48(R11) ; R10, 48(R11) ; 009914 B10A03C8 12C8 STL R8, 968(R10) ; R8, 968(R10) ; 009915 B32A03C0 12CC STL R25, 960(R10) ; R25, 960(R10) ; 009916 A15E0000 12D0 LDL R10, (SP) ; R10, (SP) ; 009917 43C0941E 12D4 ADDQ SP, 4, SP ; SP, 4, SP 0000000F 12D8 CALL_PAL 15 ; 15 ; 009921 A6CE00A8 12DC LDQ R22, 168(R14) ; R22, 168(R14) ; 009925 47E19419 12E0 BIS R31, 12, R25 ; R31, 12, R25 ; 009934 47F80400 12E4 MOV R24, R0 ; R24, R0 ; 009921 A0160000 12E8 LDL R0, (R22) ; R0, (R22) ; 009925 47F70401 12EC MOV R23, R1 ; R23, R1 ; 009921 401C0000 12F0 ADDL R0, R28, R0 ; R0, R28, R0 ; 009927 A0000000 12F4 LDL R0, (R0) ; R0, (R0) ; 009928 43C6953E 12F8 SUBQ SP, 52, SP ; SP, 52, SP ; 009934 A37E004C 12FC LDL R27, 76(SP) ; R27, 76(SP) A21E0034 1300 LDL R16, 52(SP) ; R16, 52(SP) A23E0038 1304 LDL R17, 56(SP) ; R17, 56(SP) A25E003C 1308 LDL R18, 60(SP) ; R18, 60(SP) A27E0040 130C LDL R19, 64(SP) ; R19, 64(SP) A29E0044 1310 LDL R20, 68(SP) ; R20, 68(SP) A2BE0048 1314 LDL R21, 72(SP) ; R21, 72(SP) A35E0050 1318 LDL R26, 80(SP) ; R26, 80(SP) B77E0000 131C STQ R27, (SP) ; R27, (SP) B75E0008 1320 STQ R26, 8(SP) ; R26, 8(SP) A37E0054 1324 LDL R27, 84(SP) ; R27, 84(SP) A35E0058 1328 LDL R26, 88(SP) ; R26, 88(SP) B77E0010 132C STQ R27, 16(SP) ; R27, 16(SP) B75E0018 1330 STQ R26, 24(SP) ; R26, 24(SP) A35E0060 1334 LDL R26, 96(SP) ; R26, 96(SP) JTDRIVER Machine Code Listing 2-DEC-1994 10:13:13 AMAC V2.1-13-2671 Page 132 V01H ACCFILT 2-DEC-1994 10:12:45 [EVERHART.JT]JTDRIVER_S2.MAR;120 A37E005C 1338 LDL R27, 92(SP) ; R27, 92(SP) B77E0020 133C STQ R27, 32(SP) ; R27, 32(SP) B75E0028 1340 STQ R26, 40(SP) ; R26, 40(SP) A74E0080 1344 LDQ R26, 128(R14) ; R26, 128(R14) A76E0088 1348 LDQ R27, 136(R14) ; R27, 136(R14) 6B5A4000 134C JSR R26, R26 ; R26, R26 47E05410 1350 BIS R31, 2, R16 ; R31, 2, R16 ; 009959 47E10418 1354 MOV R1, R24 ; R1, R24 43CC941E 1358 ADDQ SP, 100, SP ; SP, 100, SP ; 009934 47E00419 135C MOV R0, R25 ; R0, R25 ; 009959 0000000F 1360 CALL_PAL 15 ; 15 A17E0010 1364 LDL R11, 16(SP) ; R11, 16(SP) ; 009964 B15E0010 1368 STL R10, 16(SP) ; R10, 16(SP) ; 009966 43C2141E 136C ADDQ SP, 16, SP ; SP, 16, SP ; 009964 47F90400 1370 MOV R25, R0 ; R25, R0 ; 009959 A14B0030 1374 LDL R10, 48(R11) ; R10, 48(R11) ; 009967 47E27417 1378 BIS R31, 19, R23 ; R31, 19, R23 ; 009970 47F80401 137C MOV R24, R1 ; R24, R1 ; 009959 B00A03CC 1380 STL R0, 972(R10) ; R0, 972(R10) ; 009968 B2EA03C0 1384 STL R23, 960(R10) ; R23, 960(R10) ; 009970 A15E0000 1388 LDL R10, (SP) ; R10, (SP) ; 009971 43C0941E 138C ADDQ SP, 4, SP ; SP, 4, SP E000006F 1390 BLBC R0, $L99 ; R0, $L99 ; 009975 1394 88_3500$: ; 009977 A14B0024 1394 LDL R10, 36(R11) ; R10, 36(R11) ; 010013 43C1153E 1398 SUBQ SP, 8, SP ; SP, 8, SP ; 010014 236E0140 139C LDA R27, 320(R14) ; R27, 320(R14) D340040F 13A0 BSR R26, DOWAIT ; R26, DOWAIT 47E05410 13A4 BIS R31, 2, R16 ; R31, 2, R16 ; 010018 43EA0000 13A8 SEXTL R10, R0 ; R10, R0 ; 010015 47E00416 13AC MOV R0, R22 ; R0, R22 ; 010018 43C1141E 13B0 ADDQ SP, 8, SP ; SP, 8, SP ; 010014 47E1041C 13B4 MOV R1, R28 ; R1, R28 ; 010018 0000000F 13B8 CALL_PAL 15 ; 15 43C0953E 13BC SUBQ SP, 4, SP ; SP, 4, SP ; 010019 47FC0401 13C0 MOV R28, R1 ; R28, R1 ; 010018 47F60400 13C4 MOV R22, R0 ; R22, R0 B01E0000 13C8 STL R0, (SP) ; R0, (SP) ; 010019 A0AB0148 13CC LDL R5, 328(R11) ; R5, 328(R11) ; 010029 43C0953E 13D0 SUBQ SP, 4, SP ; SP, 4, SP ; 010030 41DA153B 13D4 SUBQ R14, 208, R27 ; R14, 208, R27 D35FFB75 13D8 BSR R26, GETJTUCB ; R26, GETJTUCB 235F0599 13DC LDA R26, 1433(R31) ; R26, 1433(R31) ; 010034 43C0941E 13E0 ADDQ SP, 4, SP ; SP, 4, SP ; 010030 E4000018 13E4 BEQ R0, 88_85$ ; R0, 88_85$ ; 010032 A6EEFF18 13E8 LDQ R23, -232(R14) ; R23, -232(R14) ; 010035 43E00005 13EC SEXTL R0, R5 ; R0, R5 ; 010033 236E03C8 13F0 LDA R27, 968(R14) ; R27, 968(R14) ; 010038 B34503C0 13F4 STL R26, 960(R5) ; R26, 960(R5) ; 010034 A30B0044 13F8 LDL R24, 68(R11) ; R24, 68(R11) ; 010035 A2D70078 13FC LDL R22, 120(R23) ; R22, 120(R23) 43160534 1400 SUBQ R24, R22, R20 ; R24, R22, R20 E68000A6 1404 BEQ R20, 88_80$ ; R20, 88_80$ ; 010036 43C0953E 1408 SUBQ SP, 4, SP ; SP, 4, SP ; 010038 D3400FF8 140C BSR R26, FINDLDT ; R26, FINDLDT 400B0534 1410 SUBQ R0, R11, R20 ; R0, R11, R20 ; 010041 43C0941E 1414 ADDQ SP, 4, SP ; SP, 4, SP ; 010038 JTDRIVER Machine Code Listing 2-DEC-1994 10:13:13 AMAC V2.1-13-2671 Page 133 V01H ACCFILT 2-DEC-1994 10:12:45 [EVERHART.JT]JTDRIVER_S2.MAR;120 F680000B 1418 BNE R20, 88_85$ ; R20, 88_85$ ; 010042 A38B0000 141C LDL R28, (R11) ; R28, (R11) ; 010044 43EB0000 1420 SEXTL R11, R0 ; R11, R0 ; 010047 A74E0020 1424 LDQ R26, 32(R14) ; R26, 32(R14) ; 010051 A76E0028 1428 LDQ R27, 40(R14) ; R27, 40(R14) B3810000 142C STL R28, (R1) ; R28, (R1) ; 010044 A02B0034 1430 LDL R1, 52(R11) ; R1, 52(R11) ; 010046 A12B0528 1434 LDL R9, 1320(R11) ; R9, 1320(R11) ; 010050 43C0953E 1438 SUBQ SP, 4, SP ; SP, 4, SP ; 010051 6B5A4000 143C JSR R26, R26 ; R26, R26 43C0941E 1440 ADDQ SP, 4, SP ; SP, 4, SP 2FFE0000 1444 LNOP ; 1448 88_85$: ; 010074 A01E0000 1448 LDL R0, (SP) ; R0, (SP) ; 010075 43C0941E 144C ADDQ SP, 4, SP ; SP, 4, SP 43E9000C 1450 SEXTL R9, R12 ; R9, R12 ; 010081 A03E0028 1454 LDL R1, 40(SP) ; R1, 40(SP) ; 010085 A05E0000 1458 LDL R2, (SP) ; R2, (SP) ; 010084 A07E0004 145C LDL R3, 4(SP) ; R3, 4(SP) A09E0008 1460 LDL R4, 8(SP) ; R4, 8(SP) A0BE000C 1464 LDL R5, 12(SP) ; R5, 12(SP) A0DE0010 1468 LDL R6, 16(SP) ; R6, 16(SP) A0FE0014 146C LDL R7, 20(SP) ; R7, 20(SP) A11E0018 1470 LDL R8, 24(SP) ; R8, 24(SP) A13E001C 1474 LDL R9, 28(SP) ; R9, 28(SP) A15E0020 1478 LDL R10, 32(SP) ; R10, 32(SP) A17E0024 147C LDL R11, 36(SP) ; R11, 36(SP) A03E002C 1480 LDL R1, 44(SP) ; R1, 44(SP) ; 010086 43C6141E 1484 ADDQ SP, 48, SP ; SP, 48, SP 43EC0001 1488 SEXTL R12, R1 ; R12, R1 ; 010087 2FFE0000 148C LNOP ; 1490 88_510$: ; 010160 A74EFFA0 1490 LDQ R26, -96(R14) ; R26, -96(R14) ; 010164 43C1153E 1494 SUBQ SP, 8, SP ; SP, 8, SP ; 010162 A76EFFA8 1498 LDQ R27, -88(R14) ; R27, -88(R14) ; 010164 47E3F410 149C BIS R31, 31, R16 ; R31, 31, R16 ; 010163 B03E0004 14A0 STL R1, 4(SP) ; R1, 4(SP) ; 010161 47E03419 14A4 BIS R31, 1, R25 ; R31, 1, R25 ; 010164 B01E0000 14A8 STL R0, (SP) ; R0, (SP) ; 010162 6B5A4000 14AC JSR R26, R26 ; R26, R26 ; 010164 A74E0090 14B0 LDQ R26, 144(R14) ; R26, 144(R14) ; 010185 A01E0000 14B4 LDL R0, (SP) ; R0, (SP) ; 010165 A03E0004 14B8 LDL R1, 4(SP) ; R1, 4(SP) ; 010166 A0BE0008 14BC LDL R5, 8(SP) ; R5, 8(SP) ; 010168 A76E0098 14C0 LDQ R27, 152(R14) ; R27, 152(R14) ; 010185 43C2141E 14C4 ADDQ SP, 16, SP ; SP, 16, SP ; 010169 6B5A4000 14C8 JSR R26, R26 ; R26, R26 ; 010185 47FF0410 14CC CLR R16 ; R16 ; 010190 B0010000 14D0 STL R0, (R1) ; R0, (R1) ; 010187 201F0AC8 14D4 LDA R0, 2760(R31) ; R0, 2760(R31) ; 010188 47E0041B 14D8 MOV R0, R27 ; R0, R27 ; 010190 B3E30090 14DC STL R31, 144(R3) ; R31, 144(R3) ; 010189 47E1041A 14E0 MOV R1, R26 ; R1, R26 ; 010190 0000000F 14E4 CALL_PAL 15 ; 15 47FA0401 14E8 MOV R26, R1 ; R26, R1 47FB0400 14EC MOV R27, R0 ; R27, R0 C3FFFB9F 14F0 BR $L8 ; $L8 ; 010191 JTDRIVER Machine Code Listing 2-DEC-1994 10:13:13 AMAC V2.1-13-2671 Page 134 V01H ACCFILT 2-DEC-1994 10:12:45 [EVERHART.JT]JTDRIVER_S2.MAR;120 47FF041F 14F4 NOP ; 14F8 $L96: ; 009766 C3FFFF19 14F8 BR 88_103$ ; 88_103$ 47FF041F 14FC NOP ; 1500 88_30020$: ; 009772 A0000004 1500 LDL R0, 4(R0) ; R0, 4(R0) ; 009773 E41FFF16 1504 BEQ R0, 88_103$ ; R0, 88_103$ ; 009774 1508 88_30021$: 2F600008 1508 LDQ_U R27, 8(R0) ; R27, 8(R0) ; 009784 4B6000DB 150C EXTBL R27, R0, R27 ; R27, R0, R27 47701014 1510 AND R27, 128, R20 ; R27, 128, R20 4A871734 1514 SLL R20, 56, R20 ; R20, 56, R20 4A871794 1518 SRA R20, 56, R20 ; R20, 56, R20 E69FFF10 151C BEQ R20, 88_103$ ; R20, 88_103$ ; 009785 2F000009 1520 LDQ_U R24, 9(R0) ; R24, 9(R0) ; 009786 40013417 1524 ADDQ R0, 9, R23 ; R0, 9, R23 4B1700D8 1528 EXTBL R24, R23, R24 ; R24, R23, R24 47101014 152C AND R24, 128, R20 ; R24, 128, R20 4A871734 1530 SLL R20, 56, R20 ; R20, 56, R20 4A871794 1534 SRA R20, 56, R20 ; R20, 56, R20 F68000A1 1538 BNE R20, $L97 ; R20, $L97 ; 009787 153C 88_105$: ; 009814 C3FFFF08 153C BR 88_103$ ; 88_103$ ; 009815 1540 $L98: ; 009894 43C0953E 1540 SUBQ SP, 4, SP ; SP, 4, SP B3FE0000 1544 STL R31, (SP) ; R31, (SP) C3FFFF49 1548 BR 88_559$ ; 88_559$ ; 009895 47FF041F 154C NOP ; 1550 $L99: ; 009976 A03E0028 1550 LDL R1, 40(SP) ; R1, 40(SP) ; 010095 43EB0000 1554 SEXTL R11, R0 ; R11, R0 ; 010092 A05E0000 1558 LDL R2, (SP) ; R2, (SP) ; 010094 236E0568 155C LDA R27, 1384(R14) ; R27, 1384(R14) ; 010103 A07E0004 1560 LDL R3, 4(SP) ; R3, 4(SP) ; 010094 A09E0008 1564 LDL R4, 8(SP) ; R4, 8(SP) A0BE000C 1568 LDL R5, 12(SP) ; R5, 12(SP) A0DE0010 156C LDL R6, 16(SP) ; R6, 16(SP) A0FE0014 1570 LDL R7, 20(SP) ; R7, 20(SP) A11E0018 1574 LDL R8, 24(SP) ; R8, 24(SP) A13E001C 1578 LDL R9, 28(SP) ; R9, 28(SP) A15E0020 157C LDL R10, 32(SP) ; R10, 32(SP) A17E0024 1580 LDL R11, 36(SP) ; R11, 36(SP) 43E0000B 1584 SEXTL R0, R11 ; R0, R11 ; 010101 A03E002C 1588 LDL R1, 44(SP) ; R1, 44(SP) ; 010096 43C6141E 158C ADDQ SP, 48, SP ; SP, 48, SP A0200528 1590 LDL R1, 1320(R0) ; R1, 1320(R0) ; 010100 43C1153E 1594 SUBQ SP, 8, SP ; SP, 8, SP ; 010103 B17E0004 1598 STL R11, 4(SP) ; R11, 4(SP) ; 010102 D3401104 159C BSR R26, STP2BAD ; R26, STP2BAD ; 010103 47E05410 15A0 BIS R31, 2, R16 ; R31, 2, R16 ; 010104 47E10418 15A4 MOV R1, R24 ; R1, R24 43C0941E 15A8 ADDQ SP, 4, SP ; SP, 4, SP ; 010103 47E00419 15AC MOV R0, R25 ; R0, R25 ; 010104 0000000F 15B0 CALL_PAL 15 ; 15 A17E0000 15B4 LDL R11, (SP) ; R11, (SP) ; 010107 43C5953E 15B8 SUBQ SP, 44, SP ; SP, 44, SP 47F90400 15BC MOV R25, R0 ; R25, R0 ; 010104 JTDRIVER Machine Code Listing 2-DEC-1994 10:13:13 AMAC V2.1-13-2671 Page 135 V01H ACCFILT 2-DEC-1994 10:12:45 [EVERHART.JT]JTDRIVER_S2.MAR;120 B17E002C 15C0 STL R11, 44(SP) ; R11, 44(SP) ; 010111 47F80401 15C4 MOV R24, R1 ; R24, R1 ; 010104 B15E0028 15C8 STL R10, 40(SP) ; R10, 40(SP) ; 010111 47E19400 15CC BIS R31, 12, R0 ; R31, 12, R0 ; 010108 B13E0024 15D0 STL R9, 36(SP) ; R9, 36(SP) ; 010111 41DA153B 15D4 SUBQ R14, 208, R27 ; R14, 208, R27 ; 010121 B11E0020 15D8 STL R8, 32(SP) ; R8, 32(SP) ; 010111 B0FE001C 15DC STL R7, 28(SP) ; R7, 28(SP) B0DE0018 15E0 STL R6, 24(SP) ; R6, 24(SP) B0BE0014 15E4 STL R5, 20(SP) ; R5, 20(SP) B09E0010 15E8 STL R4, 16(SP) ; R4, 16(SP) B07E000C 15EC STL R3, 12(SP) ; R3, 12(SP) B05E0008 15F0 STL R2, 8(SP) ; R2, 8(SP) B03E0004 15F4 STL R1, 4(SP) ; R1, 4(SP) B01E0000 15F8 STL R0, (SP) ; R0, (SP) A0AB0148 15FC LDL R5, 328(R11) ; R5, 328(R11) ; 010120 43C1153E 1600 SUBQ SP, 8, SP ; SP, 8, SP ; 010121 D35FFAEA 1604 BSR R26, GETJTUCB ; R26, GETJTUCB 43C1141E 1608 ADDQ SP, 8, SP ; SP, 8, SP E4000016 160C BEQ R0, 88_3085$ ; R0, 88_3085$ ; 010123 A76EFF18 1610 LDQ R27, -232(R14) ; R27, -232(R14) ; 010125 43E00005 1614 SEXTL R0, R5 ; R0, R5 ; 010124 A38B0044 1618 LDL R28, 68(R11) ; R28, 68(R11) ; 010125 A35B0078 161C LDL R26, 120(R27) ; R26, 120(R27) 236E03C8 1620 LDA R27, 968(R14) ; R27, 968(R14) ; 010128 439A0534 1624 SUBQ R28, R26, R20 ; R28, R26, R20 ; 010125 E6800041 1628 BEQ R20, 88_3080$ ; R20, 88_3080$ ; 010126 43C1153E 162C SUBQ SP, 8, SP ; SP, 8, SP ; 010128 D3400F6F 1630 BSR R26, FINDLDT ; R26, FINDLDT 400B0534 1634 SUBQ R0, R11, R20 ; R0, R11, R20 ; 010131 43C1141E 1638 ADDQ SP, 8, SP ; SP, 8, SP ; 010128 F680000A 163C BNE R20, 88_3085$ ; R20, 88_3085$ ; 010132 A32B0000 1640 LDL R25, (R11) ; R25, (R11) ; 010134 43EB0000 1644 SEXTL R11, R0 ; R11, R0 ; 010137 A74E0020 1648 LDQ R26, 32(R14) ; R26, 32(R14) ; 010138 A76E0028 164C LDQ R27, 40(R14) ; R27, 40(R14) B3210000 1650 STL R25, (R1) ; R25, (R1) ; 010134 A02B0034 1654 LDL R1, 52(R11) ; R1, 52(R11) ; 010136 43C1153E 1658 SUBQ SP, 8, SP ; SP, 8, SP ; 010138 6B5A4000 165C JSR R26, R26 ; R26, R26 43C1141E 1660 ADDQ SP, 8, SP ; SP, 8, SP 2FFE0000 1664 LNOP ; 1668 88_3085$: ; 010158 A01E0000 1668 LDL R0, (SP) ; R0, (SP) ; 010159 A03E0004 166C LDL R1, 4(SP) ; R1, 4(SP) A05E0008 1670 LDL R2, 8(SP) ; R2, 8(SP) A07E000C 1674 LDL R3, 12(SP) ; R3, 12(SP) A09E0010 1678 LDL R4, 16(SP) ; R4, 16(SP) A0BE0014 167C LDL R5, 20(SP) ; R5, 20(SP) A0DE0018 1680 LDL R6, 24(SP) ; R6, 24(SP) A0FE001C 1684 LDL R7, 28(SP) ; R7, 28(SP) A11E0020 1688 LDL R8, 32(SP) ; R8, 32(SP) A13E0024 168C LDL R9, 36(SP) ; R9, 36(SP) A15E0028 1690 LDL R10, 40(SP) ; R10, 40(SP) A17E002C 1694 LDL R11, 44(SP) ; R11, 44(SP) 43C6141E 1698 ADDQ SP, 48, SP ; SP, 48, SP C3FFFF7C 169C BR 88_510$ ; 88_510$ ; 010160 JTDRIVER Machine Code Listing 2-DEC-1994 10:13:13 AMAC V2.1-13-2671 Page 136 V01H ACCFILT 2-DEC-1994 10:12:45 [EVERHART.JT]JTDRIVER_S2.MAR;120 16A0 88_80$: ; 010053 43C0953E 16A0 SUBQ SP, 4, SP ; SP, 4, SP ; 010055 236E03C8 16A4 LDA R27, 968(R14) ; R27, 968(R14) D3400F51 16A8 BSR R26, FINDLDT ; R26, FINDLDT 400B0534 16AC SUBQ R0, R11, R20 ; R0, R11, R20 ; 010056 43C0941E 16B0 ADDQ SP, 4, SP ; SP, 4, SP ; 010055 F69FFF64 16B4 BNE R20, 88_85$ ; R20, 88_85$ ; 010057 A74E0030 16B8 LDQ R26, 48(R14) ; R26, 48(R14) ; 010060 43E1000A 16BC SEXTL R1, R10 ; R1, R10 ; 010058 A76E0038 16C0 LDQ R27, 56(R14) ; R27, 56(R14) ; 010060 203F013C 16C4 LDA R1, 316(R31) ; R1, 316(R31) ; 010059 43C0953E 16C8 SUBQ SP, 4, SP ; SP, 4, SP ; 010060 6B5A4000 16CC JSR R26, R26 ; R26, R26 43C0941E 16D0 ADDQ SP, 4, SP ; SP, 4, SP E01FFF5C 16D4 BLBC R0, 88_85$ ; R0, 88_85$ ; 010061 A74EFFF0 16D8 LDQ R26, -16(R14) ; R26, -16(R14) ; 010063 43E20009 16DC SEXTL R2, R9 ; R2, R9 ; 010062 223F013C 16E0 LDA R17, 316(R31) ; R17, 316(R31) ; 010063 47EB0412 16E4 MOV R11, R18 ; R11, R18 47E90410 16E8 MOV R9, R16 ; R9, R16 6B5A4000 16EC JSR R26, R26 ; R26, R26 231F013C 16F0 LDA R24, 316(R31) ; R24, 316(R31) ; 010065 47FF0402 16F4 CLR R2 ; R2 ; 010063 A74E0020 16F8 LDQ R26, 32(R14) ; R26, 32(R14) ; 010072 47F00403 16FC MOV R16, R3 ; R16, R3 ; 010063 B3090034 1700 STL R24, 52(R9) ; R24, 52(R9) ; 010065 47FF0404 1704 CLR R4 ; R4 ; 010063 B12A0000 1708 STL R9, (R10) ; R9, (R10) ; 010066 47FF0405 170C CLR R5 ; R5 ; 010063 A02B0034 1710 LDL R1, 52(R11) ; R1, 52(R11) ; 010067 43EB0000 1714 SEXTL R11, R0 ; R11, R0 ; 010068 A12B0528 1718 LDL R9, 1320(R11) ; R9, 1320(R11) ; 010071 43C0953E 171C SUBQ SP, 4, SP ; SP, 4, SP ; 010072 A76E0028 1720 LDQ R27, 40(R14) ; R27, 40(R14) 6B5A4000 1724 JSR R26, R26 ; R26, R26 43C0941E 1728 ADDQ SP, 4, SP ; SP, 4, SP C3FFFF46 172C BR 88_85$ ; 88_85$ ; 010074 1730 88_3080$: ; 010140 43C1153E 1730 SUBQ SP, 8, SP ; SP, 8, SP ; 010142 236E03C8 1734 LDA R27, 968(R14) ; R27, 968(R14) D3400F2D 1738 BSR R26, FINDLDT ; R26, FINDLDT 400B0534 173C SUBQ R0, R11, R20 ; R0, R11, R20 ; 010143 43C1141E 1740 ADDQ SP, 8, SP ; SP, 8, SP ; 010142 F69FFFC8 1744 BNE R20, 88_3085$ ; R20, 88_3085$ ; 010144 A74E0030 1748 LDQ R26, 48(R14) ; R26, 48(R14) ; 010147 43E1000A 174C SEXTL R1, R10 ; R1, R10 ; 010145 A76E0038 1750 LDQ R27, 56(R14) ; R27, 56(R14) ; 010147 203F013C 1754 LDA R1, 316(R31) ; R1, 316(R31) ; 010146 43C1153E 1758 SUBQ SP, 8, SP ; SP, 8, SP ; 010147 6B5A4000 175C JSR R26, R26 ; R26, R26 43C1141E 1760 ADDQ SP, 8, SP ; SP, 8, SP E01FFFC0 1764 BLBC R0, 88_3085$ ; R0, 88_3085$ ; 010148 A74EFFF0 1768 LDQ R26, -16(R14) ; R26, -16(R14) ; 010150 43E20009 176C SEXTL R2, R9 ; R2, R9 ; 010149 223F013C 1770 LDA R17, 316(R31) ; R17, 316(R31) ; 010150 47EB0412 1774 MOV R11, R18 ; R11, R18 47E90410 1778 MOV R9, R16 ; R9, R16 JTDRIVER Machine Code Listing 2-DEC-1994 10:13:13 AMAC V2.1-13-2671 Page 137 V01H ACCFILT 2-DEC-1994 10:12:45 [EVERHART.JT]JTDRIVER_S2.MAR;120 6B5A4000 177C JSR R26, R26 ; R26, R26 22FF013C 1780 LDA R23, 316(R31) ; R23, 316(R31) ; 010152 47FF0402 1784 CLR R2 ; R2 ; 010150 A74E0020 1788 LDQ R26, 32(R14) ; R26, 32(R14) ; 010156 47F00403 178C MOV R16, R3 ; R16, R3 ; 010150 B2E90034 1790 STL R23, 52(R9) ; R23, 52(R9) ; 010152 47FF0404 1794 CLR R4 ; R4 ; 010150 B12A0000 1798 STL R9, (R10) ; R9, (R10) ; 010153 47FF0405 179C CLR R5 ; R5 ; 010150 A02B0034 17A0 LDL R1, 52(R11) ; R1, 52(R11) ; 010154 43EB0000 17A4 SEXTL R11, R0 ; R11, R0 ; 010155 A76E0028 17A8 LDQ R27, 40(R14) ; R27, 40(R14) ; 010156 43C1153E 17AC SUBQ SP, 8, SP ; SP, 8, SP 6B5A4000 17B0 JSR R26, R26 ; R26, R26 43C1141E 17B4 ADDQ SP, 8, SP ; SP, 8, SP C3FFFFAB 17B8 BR 88_3085$ ; 88_3085$ ; 010158 47FF041F 17BC NOP ; 17C0 $L97: ; 009793 43EB0000 17C0 SEXTL R11, R0 ; R11, R0 A05E0000 17C4 LDL R2, (SP) ; R2, (SP) ; 009795 43E50001 17C8 SEXTL R5, R1 ; R5, R1 ; 009794 A07E0004 17CC LDL R3, 4(SP) ; R3, 4(SP) ; 009795 A09E0008 17D0 LDL R4, 8(SP) ; R4, 8(SP) 22DF03F9 17D4 LDA R22, 1017(R31) ; R22, 1017(R31) ; 009812 A0BE000C 17D8 LDL R5, 12(SP) ; R5, 12(SP) ; 009795 A0DE0010 17DC LDL R6, 16(SP) ; R6, 16(SP) A0FE0014 17E0 LDL R7, 20(SP) ; R7, 20(SP) A11E0018 17E4 LDL R8, 24(SP) ; R8, 24(SP) A13E001C 17E8 LDL R9, 28(SP) ; R9, 28(SP) A15E0020 17EC LDL R10, 32(SP) ; R10, 32(SP) A17E0024 17F0 LDL R11, 36(SP) ; R11, 36(SP) 43C5141E 17F4 ADDQ SP, 40, SP ; SP, 40, SP 43E0000B 17F8 SEXTL R0, R11 ; R0, R11 ; 009796 43E10000 17FC SEXTL R1, R0 ; R1, R0 ; 009797 A03E0000 1800 LDL R1, (SP) ; R1, (SP) ; 009798 A03E0004 1804 LDL R1, 4(SP) ; R1, 4(SP) ; 009799 A0BE0008 1808 LDL R5, 8(SP) ; R5, 8(SP) ; 009801 43C2953E 180C SUBQ SP, 20, SP ; SP, 20, SP ; 009798 B17E0020 1810 STL R11, 32(SP) ; R11, 32(SP) ; 009807 B15E001C 1814 STL R10, 28(SP) ; R10, 28(SP) B13E0018 1818 STL R9, 24(SP) ; R9, 24(SP) B11E0014 181C STL R8, 20(SP) ; R8, 20(SP) B0FE0010 1820 STL R7, 16(SP) ; R7, 16(SP) B0DE000C 1824 STL R6, 12(SP) ; R6, 12(SP) B0BE0008 1828 STL R5, 8(SP) ; R5, 8(SP) 43E00005 182C SEXTL R0, R5 ; R0, R5 ; 009808 B09E0004 1830 STL R4, 4(SP) ; R4, 4(SP) ; 009807 B07E0000 1834 STL R3, (SP) ; R3, (SP) 43C1953E 1838 SUBQ SP, 12, SP ; SP, 12, SP ; 009809 B05E0008 183C STL R2, 8(SP) ; R2, 8(SP) B03E0004 1840 STL R1, 4(SP) ; R1, 4(SP) B01E0000 1844 STL R0, (SP) ; R0, (SP) B2C503C0 1848 STL R22, 960(R5) ; R22, 960(R5) ; 009812 184C AFAKFID: ; 010204 A01E0000 184C LDL R0, (SP) ; R0, (SP) ; 010205 236E0280 1850 LDA R27, 640(R14) ; R27, 640(R14) ; 010206 A03E0004 1854 LDL R1, 4(SP) ; R1, 4(SP) ; 010205 JTDRIVER Machine Code Listing 2-DEC-1994 10:13:13 AMAC V2.1-13-2671 Page 138 V01H ACCFILT 2-DEC-1994 10:12:45 [EVERHART.JT]JTDRIVER_S2.MAR;120 A05E0008 1858 LDL R2, 8(SP) ; R2, 8(SP) A07E000C 185C LDL R3, 12(SP) ; R3, 12(SP) A09E0010 1860 LDL R4, 16(SP) ; R4, 16(SP) A0BE0014 1864 LDL R5, 20(SP) ; R5, 20(SP) A0DE0018 1868 LDL R6, 24(SP) ; R6, 24(SP) A0FE001C 186C LDL R7, 28(SP) ; R7, 28(SP) A11E0020 1870 LDL R8, 32(SP) ; R8, 32(SP) A13E0024 1874 LDL R9, 36(SP) ; R9, 36(SP) A15E0028 1878 LDL R10, 40(SP) ; R10, 40(SP) A17E002C 187C LDL R11, 44(SP) ; R11, 44(SP) 43C6141E 1880 ADDQ SP, 48, SP ; SP, 48, SP D3400776 1884 BSR R26, POPOUT ; R26, POPOUT ; 010206 C3FFFAB9 1888 BR $L8 ; $L8 ; 010207 188C $L126: ; 009325 2F600005 188C LDQ_U R27, 5(R0) ; R27, 5(R0) 4B760B5C 1890 EXTWH R27, R22, R28 ; R27, R22, R28 443C0401 1894 BIS R1, R28, R1 ; R1, R28, R1 C3FFFC16 1898 BR $L127 ; $L127 189C $L128: ; 009647 2F2A0009 189C LDQ_U R25, 9(R10) ; R25, 9(R10) 4B2A0B5A 18A0 EXTWH R25, R10, R26 ; R25, R10, R26 471A0418 18A4 BIS R24, R26, R24 ; R24, R26, R24 C3FFFD90 18A8 BR $L129 ; $L129 18AC $L130: ; 009649 2DEA000F 18AC LDQ_U R15, 15(R10) ; R15, 15(R10) 49F80B5A 18B0 EXTWH R15, R24, R26 ; R15, R24, R26 473A0419 18B4 BIS R25, R26, R25 ; R25, R26, R25 C3FFFD98 18B8 BR $L131 ; $L131 18BC $L132: ; 009692 2F4B041D 18BC LDQ_U R26, 1053(R11) ; R26, 1053(R11) 4B5C0B5B 18C0 EXTWH R26, R28, R27 ; R26, R28, R27 46DB0416 18C4 BIS R22, R27, R22 ; R22, R27, R22 C3FFFDE2 18C8 BR $L133 ; $L133 18CC $L134: ; 009694 2F6B041D 18CC LDQ_U R27, 1053(R11) ; R27, 1053(R11) 4AF60AFA 18D0 INSWH R23, R22, R26 ; R23, R22, R26 4B760A5B 18D4 MSKWH R27, R22, R27 ; R27, R22, R27 477A041B 18D8 BIS R27, R26, R27 ; R27, R26, R27 3F6B041D 18DC STQ_U R27, 1053(R11) ; R27, 1053(R11) C3FFFDE8 18E0 BR $L135 ; $L135 47FF041F 18E4 NOP ; 47FF041F 18E8 NOP ; 47FF041F 18EC NOP ; Routine Size: 5632 bytes, Routine Base: $$$115_DRIVER + 02F0 18F0 CLNPRV: ; 010210 43CC153E 18F0 SUBQ SP, 96, SP ; SP, 96, SP B75E0000 18F4 STQ R26, (SP) ; R26, (SP) B45E0008 18F8 STQ R2, 8(SP) ; R2, 8(SP) B47E0010 18FC STQ R3, 16(SP) ; R3, 16(SP) B49E0018 1900 STQ R4, 24(SP) ; R4, 24(SP) B4BE0020 1904 STQ R5, 32(SP) ; R5, 32(SP) B4DE0028 1908 STQ R6, 40(SP) ; R6, 40(SP) B4FE0030 190C STQ R7, 48(SP) ; R7, 48(SP) B51E0038 1910 STQ R8, 56(SP) ; R8, 56(SP) B53E0040 1914 STQ R9, 64(SP) ; R9, 64(SP) JTDRIVER Machine Code Listing 2-DEC-1994 10:13:13 AMAC V2.1-13-2671 Page 139 V01H CLNPRV 2-DEC-1994 10:12:45 [EVERHART.JT]JTDRIVER_S2.MAR;120 B55E0048 1918 STQ R10, 72(SP) ; R10, 72(SP) B57E0050 191C STQ R11, 80(SP) ; R11, 80(SP) B5BE0058 1920 STQ R13, 88(SP) ; R13, 88(SP) 47FB040D 1924 MOV R27, R13 ; R27, R13 1928 $L9: 236DFE80 1928 LDA R27, -384(R13) ; R27, -384(R13) ; 010213 D35FFA20 192C BSR R26, GETJTUCB ; R26, GETJTUCB F8000006 1930 BGE R0, 90_99$ ; R0, 90_99$ ; 010215 43E00005 1934 SEXTL R0, R5 ; R0, R5 ; 010216 43E0000A 1938 SEXTL R0, R10 ; R0, R10 ; 010217 236D0188 193C LDA R27, 392(R13) ; R27, 392(R13) ; 010218 D3400433 1940 BSR R26, CLNUP ; R26, CLNUP 43E50000 1944 SEXTL R5, R0 ; R5, R0 ; 010219 43EA0001 1948 SEXTL R10, R1 ; R10, R1 ; 010220 194C 90_99$: ; 010221 A79E0000 194C LDQ R28, (SP) ; R28, (SP) ; 010223 A45E0008 1950 LDQ R2, 8(SP) ; R2, 8(SP) A47E0010 1954 LDQ R3, 16(SP) ; R3, 16(SP) A49E0018 1958 LDQ R4, 24(SP) ; R4, 24(SP) A4BE0020 195C LDQ R5, 32(SP) ; R5, 32(SP) A4DE0028 1960 LDQ R6, 40(SP) ; R6, 40(SP) A4FE0030 1964 LDQ R7, 48(SP) ; R7, 48(SP) A51E0038 1968 LDQ R8, 56(SP) ; R8, 56(SP) A53E0040 196C LDQ R9, 64(SP) ; R9, 64(SP) A55E0048 1970 LDQ R10, 72(SP) ; R10, 72(SP) A57E0050 1974 LDQ R11, 80(SP) ; R11, 80(SP) A5BE0058 1978 LDQ R13, 88(SP) ; R13, 88(SP) 43CC141E 197C ADDQ SP, 96, SP ; SP, 96, SP 6BFC8001 1980 RET R28 ; R28 47FF041F 1984 NOP ; 47FF041F 1988 NOP ; 47FF041F 198C NOP ; Routine Size: 160 bytes, Routine Base: $$$115_DRIVER + 18F0 1990 PRVIDSET: ; 010228 43CE153E 1990 SUBQ SP, 112, SP ; SP, 112, SP B75E0008 1994 STQ R26, 8(SP) ; R26, 8(SP) B45E0010 1998 STQ R2, 16(SP) ; R2, 16(SP) B47E0018 199C STQ R3, 24(SP) ; R3, 24(SP) B49E0020 19A0 STQ R4, 32(SP) ; R4, 32(SP) B4BE0028 19A4 STQ R5, 40(SP) ; R5, 40(SP) B4DE0030 19A8 STQ R6, 48(SP) ; R6, 48(SP) B4FE0038 19AC STQ R7, 56(SP) ; R7, 56(SP) B51E0040 19B0 STQ R8, 64(SP) ; R8, 64(SP) B53E0048 19B4 STQ R9, 72(SP) ; R9, 72(SP) B55E0050 19B8 STQ R10, 80(SP) ; R10, 80(SP) B57E0058 19BC STQ R11, 88(SP) ; R11, 88(SP) B5BE0060 19C0 STQ R13, 96(SP) ; R13, 96(SP) 47FB040D 19C4 MOV R27, R13 ; R27, R13 B5FE0068 19C8 STQ R15, 104(SP) ; R15, 104(SP) 19CC $L11: 43C1153E 19CC SUBQ SP, 8, SP ; SP, 8, SP ; 010229 A72DFE58 19D0 LDQ R25, -424(R13) ; R25, -424(R13) ; 010232 4167940A 19D4 ADDQ R11, 60, R10 ; R11, 60, R10 ; 010230 B03E0004 19D8 STL R1, 4(SP) ; R1, 4(SP) ; 010229 B01E0000 19DC STL R0, (SP) ; R0, (SP) JTDRIVER Machine Code Listing 2-DEC-1994 10:13:13 AMAC V2.1-13-2671 Page 140 V01H PRVIDSET 2-DEC-1994 10:12:45 [EVERHART.JT]JTDRIVER_S2.MAR;120 A34B0044 19E0 LDL R26, 68(R11) ; R26, 68(R11) ; 010232 A3190078 19E4 LDL R24, 120(R25) ; R24, 120(R25) 43580530 19E8 SUBQ R26, R24, R16 ; R26, R24, R16 F6000006 19EC BNE R16, 91_999$ ; R16, 91_999$ ; 010233 19F0 91_30023$: 4141940A 19F0 ADDQ R10, 12, R10 ; R10, 12, R10 ; 010234 2FFE0000 19F4 LNOP ; 19F8 91_1$: ; 010235 2D2A0000 19F8 LDQ_U R9, (R10) ; R9, (R10) 492A00C9 19FC EXTBL R9, R10, R9 ; R9, R10, R9 4140340A 1A00 ADDQ R10, 1, R10 ; R10, 1, R10 F5200014 1A04 BNE R9, 91_30024$ ; R9, 91_30024$ ; 010236 1A08 91_999$: ; 010324 A01E0000 1A08 LDL R0, (SP) ; R0, (SP) ; 010325 A03E0004 1A0C LDL R1, 4(SP) ; R1, 4(SP) 43C1141E 1A10 ADDQ SP, 8, SP ; SP, 8, SP 1A14 $L12: ; 010326 A79E0008 1A14 LDQ R28, 8(SP) ; R28, 8(SP) A45E0010 1A18 LDQ R2, 16(SP) ; R2, 16(SP) A47E0018 1A1C LDQ R3, 24(SP) ; R3, 24(SP) A49E0020 1A20 LDQ R4, 32(SP) ; R4, 32(SP) A4BE0028 1A24 LDQ R5, 40(SP) ; R5, 40(SP) A4DE0030 1A28 LDQ R6, 48(SP) ; R6, 48(SP) A4FE0038 1A2C LDQ R7, 56(SP) ; R7, 56(SP) A51E0040 1A30 LDQ R8, 64(SP) ; R8, 64(SP) A53E0048 1A34 LDQ R9, 72(SP) ; R9, 72(SP) A55E0050 1A38 LDQ R10, 80(SP) ; R10, 80(SP) A57E0058 1A3C LDQ R11, 88(SP) ; R11, 88(SP) A5BE0060 1A40 LDQ R13, 96(SP) ; R13, 96(SP) A5FE0068 1A44 LDQ R15, 104(SP) ; R15, 104(SP) 43CE141E 1A48 ADDQ SP, 112, SP ; SP, 112, SP 6BFC8001 1A4C RET R28 ; R28 1A50 $L100: ; 010233 C3FFFFED 1A50 BR 91_999$ ; 91_999$ 47FF041F 1A54 NOP ; 1A58 91_30024$: ; 010236 41203530 1A58 SUBQ R9, 1, R16 ; R9, 1, R16 ; 010237 E61FFFE6 1A5C BEQ R16, 91_1$ ; R16, 91_1$ ; 010238 41205530 1A60 SUBQ R9, 2, R16 ; R9, 2, R16 ; 010239 E61FFFE4 1A64 BEQ R16, 91_1$ ; R16, 91_1$ ; 010240 41207530 1A68 SUBQ R9, 3, R16 ; R9, 3, R16 ; 010241 F600001A 1A6C BNE R16, 91_2$ ; R16, 91_2$ ; 010242 2F4A0000 1A70 LDQ_U R26, (R10) ; R26, (R10) ; 010244 47FF0401 1A74 CLR R1 ; R1 ; 010248 2CEA0001 1A78 LDQ_U R7, 1(R10) ; R7, 1(R10) ; 010245 41A3141B 1A7C ADDQ R13, 24, R27 ; R13, 24, R27 ; 010250 A04B0404 1A80 LDL R2, 1028(R11) ; R2, 1028(R11) ; 010246 4B4A00DA 1A84 EXTBL R26, R10, R26 ; R26, R10, R26 ; 010244 4140340A 1A88 ADDQ R10, 1, R10 ; R10, 1, R10 A06B0408 1A8C LDL R3, 1032(R11) ; R3, 1032(R11) ; 010247 4B471728 1A90 SLL R26, 56, R8 ; R26, 56, R8 ; 010244 2F0A0003 1A94 LDQ_U R24, 3(R10) ; R24, 3(R10) ; 010245 48EA04C7 1A98 EXTLL R7, R10, R7 ; R7, R10, R7 49071788 1A9C SRA R8, 56, R8 ; R8, 56, R8 ; 010244 4B0A0D59 1AA0 EXTLH R24, R10, R25 ; R24, R10, R25 ; 010245 4140940A 1AA4 ADDQ R10, 4, R10 ; R10, 4, R10 44F90407 1AA8 BIS R7, R25, R7 ; R7, R25, R7 JTDRIVER Machine Code Listing 2-DEC-1994 10:13:13 AMAC V2.1-13-2671 Page 141 V01H PRVIDSET 2-DEC-1994 10:12:45 [EVERHART.JT]JTDRIVER_S2.MAR;120 43E70007 1AAC SEXTL R7, R7 ; R7, R7 43E80000 1AB0 SEXTL R8, R0 ; R8, R0 ; 010249 43C1153E 1AB4 SUBQ SP, 8, SP ; SP, 8, SP ; 010250 D3400079 1AB8 BSR R26, AUTH ; R26, AUTH 40070530 1ABC SUBQ R0, R7, R16 ; R0, R7, R16 ; 010251 43C1141E 1AC0 ADDQ SP, 8, SP ; SP, 8, SP ; 010250 F61FFFCC 1AC4 BNE R16, 91_1$ ; R16, 91_1$ ; 010252 A6CDFEB0 1AC8 LDQ R22, -336(R13) ; R22, -336(R13) ; 010254 A0960000 1ACC LDL R4, (R22) ; R4, (R22) B1040074 1AD0 STL R8, 116(R4) ; R8, 116(R4) ; 010256 C3FFFFC8 1AD4 BR 91_1$ ; 91_1$ ; 010260 1AD8 91_2$: ; 010261 41209530 1AD8 SUBQ R9, 4, R16 ; R9, 4, R16 ; 010262 F6000022 1ADC BNE R16, 91_3$ ; R16, 91_3$ ; 010263 A00A0000 1AE0 LDL R0, (R10) ; R0, (R10) ; 010264 4140940A 1AE4 ADDQ R10, 4, R10 ; R10, 4, R10 A04B0404 1AE8 LDL R2, 1028(R11) ; R2, 1028(R11) ; 010268 41A3141B 1AEC ADDQ R13, 24, R27 ; R13, 24, R27 ; 010270 A02A0000 1AF0 LDL R1, (R10) ; R1, (R10) ; 010266 4140940A 1AF4 ADDQ R10, 4, R10 ; R10, 4, R10 A06B0408 1AF8 LDL R3, 1032(R11) ; R3, 1032(R11) ; 010269 43E00007 1AFC SEXTL R0, R7 ; R0, R7 ; 010265 43E00008 1B00 SEXTL R0, R8 ; R0, R8 ; 010267 43C1153E 1B04 SUBQ SP, 8, SP ; SP, 8, SP ; 010270 D3400065 1B08 BSR R26, AUTH ; R26, AUTH 43C1141E 1B0C ADDQ SP, 8, SP ; SP, 8, SP A04A0000 1B10 LDL R2, (R10) ; R2, (R10) ; 010271 A06A0004 1B14 LDL R3, 4(R10) ; R3, 4(R10) ; 010272 4141140A 1B18 ADDQ R10, 8, R10 ; R10, 8, R10 40020530 1B1C SUBQ R0, R2, R16 ; R0, R2, R16 ; 010273 F6000011 1B20 BNE R16, 91_3$ ; R16, 91_3$ ; 010274 A5ED0010 1B24 LDQ R15, 16(R13) ; R15, 16(R13) ; 010281 40230530 1B28 SUBQ R1, R3, R16 ; R1, R3, R16 ; 010275 F600000E 1B2C BNE R16, 91_3$ ; R16, 91_3$ ; 010276 A74DFEB0 1B30 LDQ R26, -336(R13) ; R26, -336(R13) ; 010278 A70DFEB8 1B34 LDQ R24, -328(R13) ; R24, -328(R13) ; 010283 A09A0000 1B38 LDL R4, (R26) ; R4, (R26) ; 010278 B0E40100 1B3C STL R7, 256(R4) ; R7, 256(R4) ; 010279 B1040104 1B40 STL R8, 260(R4) ; R8, 260(R4) ; 010280 B0EF0000 1B44 STL R7, (R15) ; R7, (R15) ; 010281 B10F0004 1B48 STL R8, 4(R15) ; R8, 4(R15) ; 010282 A0980000 1B4C LDL R4, (R24) ; R4, (R24) ; 010283 B0E40280 1B50 STL R7, 640(R4) ; R7, 640(R4) ; 010284 B1040284 1B54 STL R8, 644(R4) ; R8, 644(R4) ; 010285 B0E40000 1B58 STL R7, (R4) ; R7, (R4) ; 010286 B1040004 1B5C STL R8, 4(R4) ; R8, 4(R4) ; 010287 C3FFFFA5 1B60 BR 91_1$ ; 91_1$ ; 010288 47FF041F 1B64 NOP ; 1B68 91_3$: ; 010289 453FF01B 1B68 AND R9, 255, R27 ; R9, 255, R27 4360B530 1B6C SUBQ R27, 5, R16 ; R27, 5, R16 F6000033 1B70 BNE R16, 91_4$ ; R16, 91_4$ ; 010290 2C0A0000 1B74 LDQ_U R0, (R10) ; R0, (R10) ; 010291 2F2A0003 1B78 LDQ_U R25, 3(R10) ; R25, 3(R10) 41A3141B 1B7C ADDQ R13, 24, R27 ; R13, 24, R27 ; 010297 A04B0404 1B80 LDL R2, 1028(R11) ; R2, 1028(R11) ; 010295 480A04C0 1B84 EXTLL R0, R10, R0 ; R0, R10, R0 ; 010291 JTDRIVER Machine Code Listing 2-DEC-1994 10:13:13 AMAC V2.1-13-2671 Page 142 V01H PRVIDSET 2-DEC-1994 10:12:45 [EVERHART.JT]JTDRIVER_S2.MAR;120 4B2A0D5A 1B88 EXTLH R25, R10, R26 ; R25, R10, R26 A06B0408 1B8C LDL R3, 1032(R11) ; R3, 1032(R11) ; 010296 4140940A 1B90 ADDQ R10, 4, R10 ; R10, 4, R10 ; 010291 441A0400 1B94 BIS R0, R26, R0 ; R0, R26, R0 2C2A0000 1B98 LDQ_U R1, (R10) ; R1, (R10) ; 010293 43E00000 1B9C SEXTL R0, R0 ; R0, R0 ; 010291 2EEA0003 1BA0 LDQ_U R23, 3(R10) ; R23, 3(R10) ; 010293 43E00007 1BA4 SEXTL R0, R7 ; R0, R7 ; 010292 43E00008 1BA8 SEXTL R0, R8 ; R0, R8 ; 010294 482A04C1 1BAC EXTLL R1, R10, R1 ; R1, R10, R1 ; 010293 4AEA0D58 1BB0 EXTLH R23, R10, R24 ; R23, R10, R24 4140940A 1BB4 ADDQ R10, 4, R10 ; R10, 4, R10 44380401 1BB8 BIS R1, R24, R1 ; R1, R24, R1 43E10001 1BBC SEXTL R1, R1 ; R1, R1 43C1153E 1BC0 SUBQ SP, 8, SP ; SP, 8, SP ; 010297 D3400036 1BC4 BSR R26, AUTH ; R26, AUTH 43C1141E 1BC8 ADDQ SP, 8, SP ; SP, 8, SP 2C4A0000 1BCC LDQ_U R2, (R10) ; R2, (R10) ; 010298 2F6A0003 1BD0 LDQ_U R27, 3(R10) ; R27, 3(R10) 2C6A0004 1BD4 LDQ_U R3, 4(R10) ; R3, 4(R10) ; 010299 484A04C2 1BD8 EXTLL R2, R10, R2 ; R2, R10, R2 ; 010298 4B6A0D5C 1BDC EXTLH R27, R10, R28 ; R27, R10, R28 4140940A 1BE0 ADDQ R10, 4, R10 ; R10, 4, R10 486A04C3 1BE4 EXTLL R3, R10, R3 ; R3, R10, R3 ; 010299 2F2A0003 1BE8 LDQ_U R25, 3(R10) ; R25, 3(R10) 445C0402 1BEC BIS R2, R28, R2 ; R2, R28, R2 ; 010298 43E20002 1BF0 SEXTL R2, R2 ; R2, R2 40020530 1BF4 SUBQ R0, R2, R16 ; R0, R2, R16 ; 010300 4B2A0D5A 1BF8 EXTLH R25, R10, R26 ; R25, R10, R26 ; 010299 4140940A 1BFC ADDQ R10, 4, R10 ; R10, 4, R10 447A0403 1C00 BIS R3, R26, R3 ; R3, R26, R3 43E30003 1C04 SEXTL R3, R3 ; R3, R3 F6000017 1C08 BNE R16, 91_34$ ; R16, 91_34$ ; 010301 40230530 1C0C SUBQ R1, R3, R16 ; R1, R3, R16 ; 010302 F6000015 1C10 BNE R16, 91_34$ ; R16, 91_34$ ; 010303 47FF0413 1C14 CLR R19 ; R19 ; 010305 47FF0414 1C18 CLR R20 ; R20 41421532 1C1C SUBQ R10, 16, R18 ; R10, 16, R18 ; 010306 47FF0410 1C20 CLR R16 ; R16 ; 010307 47FF0411 1C24 CLR R17 ; R17 43C1153E 1C28 SUBQ SP, 8, SP ; SP, 8, SP ; 010308 47E0B419 1C2C BIS R31, 5, R25 ; R31, 5, R25 236D04D0 1C30 LDA R27, 1232(R13) ; R27, 1232(R13) D340130A 1C34 BSR R26, GRANTID ; R26, GRANTID 43C1141E 1C38 ADDQ SP, 8, SP ; SP, 8, SP C3FFFF6E 1C3C BR 91_1$ ; 91_1$ ; 010309 1C40 91_4$: ; 010314 453FF01C 1C40 AND R9, 255, R28 ; R9, 255, R28 4380D530 1C44 SUBQ R28, 6, R16 ; R28, 6, R16 E600000F 1C48 BEQ R16, $L101 ; R16, $L101 ; 010315 1C4C 91_5$: ; 010319 453FF01A 1C4C AND R9, 255, R26 ; R9, 255, R26 4340F530 1C50 SUBQ R26, 7, R16 ; R26, 7, R16 F61FFF6C 1C54 BNE R16, 91_999$ ; R16, 91_999$ ; 010320 1C58 91_30025$: 2D2A0000 1C58 LDQ_U R9, (R10) ; R9, (R10) ; 010321 492A00C9 1C5C EXTBL R9, R10, R9 ; R9, R10, R9 JTDRIVER Machine Code Listing 2-DEC-1994 10:13:13 AMAC V2.1-13-2671 Page 143 V01H PRVIDSET 2-DEC-1994 10:12:45 [EVERHART.JT]JTDRIVER_S2.MAR;120 4149000A 1C60 ADDL R10, R9, R10 ; R10, R9, R10 ; 010322 C3FFFF64 1C64 BR 91_1$ ; 91_1$ ; 010323 1C68 91_34$: ; 010310 2ECAFFFF 1C68 LDQ_U R22, -1(R10) ; R22, -1(R10) 2EEAFFF8 1C6C LDQ_U R23, -8(R10) ; R23, -8(R10) 4ACA0E56 1C70 MSKQH R22, R10, R22 ; R22, R10, R22 3ECAFFFF 1C74 STQ_U R22, -1(R10) ; R22, -1(R10) 4AEA0657 1C78 MSKQL R23, R10, R23 ; R23, R10, R23 3EEAFFF8 1C7C STQ_U R23, -8(R10) ; R23, -8(R10) C3FFFF5D 1C80 BR 91_1$ ; 91_1$ ; 010313 47FF041F 1C84 NOP ; 1C88 $L101: ; 010316 2D2A0000 1C88 LDQ_U R9, (R10) ; R9, (R10) 492A00C9 1C8C EXTBL R9, R10, R9 ; R9, R10, R9 4149000A 1C90 ADDL R10, R9, R10 ; R10, R9, R10 ; 010317 C3FFFF58 1C94 BR 91_1$ ; 91_1$ ; 010318 47FF041F 1C98 NOP ; 47FF041F 1C9C NOP ; Routine Size: 784 bytes, Routine Base: $$$115_DRIVER + 1990 1CA0 AUTH: ; 010332 1CA0 $L13: A3850138 1CA0 LDL R28, 312(R5) ; R28, 312(R5) ; 010338 44030800 1CA4 XOR R0, R3, R0 ; R0, R3, R0 ; 010336 A305013C 1CA8 LDL R24, 316(R5) ; R24, 316(R5) ; 010339 43E00000 1CAC SEXTL R0, R0 ; R0, R0 ; 010336 44220801 1CB0 XOR R1, R2, R1 ; R1, R2, R1 ; 010337 441C0800 1CB4 XOR R0, R28, R0 ; R0, R28, R0 ; 010338 26FF5219 1CB8 LDAH R23, 21017(R31) ; R23, 21017(R31) ; 010341 43E10001 1CBC SEXTL R1, R1 ; R1, R1 ; 010337 43E00000 1CC0 SEXTL R0, R0 ; R0, R0 ; 010338 22F7FBA2 1CC4 LDA R23, -1118(R23) ; R23, -1118(R23) ; 010341 44380801 1CC8 XOR R1, R24, R1 ; R1, R24, R1 ; 010339 26DFABA7 1CCC LDAH R22, -21593(R31) ; R22, -21593(R31) ; 010342 43C1153E 1CD0 SUBQ SP, 8, SP ; SP, 8, SP ; 010344 44170800 1CD4 XOR R0, R23, R0 ; R0, R23, R0 ; 010341 43E10001 1CD8 SEXTL R1, R1 ; R1, R1 ; 010339 22D6126C 1CDC LDA R22, 4716(R22) ; R22, 4716(R22) ; 010342 43E00000 1CE0 SEXTL R0, R0 ; R0, R0 ; 010341 B01E0004 1CE4 STL R0, 4(SP) ; R0, 4(SP) ; 010343 44360801 1CE8 XOR R1, R22, R1 ; R1, R22, R1 ; 010342 48007720 1CEC SLL R0, 3, R0 ; R0, 3, R0 ; 010345 43E10001 1CF0 SEXTL R1, R1 ; R1, R1 ; 010342 B03E0000 1CF4 STL R1, (SP) ; R1, (SP) ; 010344 A31E0004 1CF8 LDL R24, 4(SP) ; R24, 4(SP) ; 010350 43E00000 1CFC SEXTL R0, R0 ; R0, R0 ; 010345 40200001 1D00 ADDL R1, R0, R1 ; R1, R0, R1 ; 010346 40220001 1D04 ADDL R1, R2, R1 ; R1, R2, R1 ; 010347 43010018 1D08 ADDL R24, R1, R24 ; R24, R1, R24 ; 010350 B31E0004 1D0C STL R24, 4(SP) ; R24, 4(SP) 2C25013D 1D10 LDQ_U R1, 317(R5) ; R1, 317(R5) ; 010351 22C5013D 1D14 LDA R22, 317(R5) ; R22, 317(R5) 483602C1 1D18 EXTWL R1, R22, R1 ; R1, R22, R1 F2C0002C 1D1C BLBS R22, $L136 ; R22, $L136 1D20 $L137: A2FE0004 1D20 LDL R23, 4(SP) ; R23, 4(SP) ; 010352 JTDRIVER Machine Code Listing 2-DEC-1994 10:13:13 AMAC V2.1-13-2671 Page 144 V01H AUTH 2-DEC-1994 10:12:45 [EVERHART.JT]JTDRIVER_S2.MAR;120 42E10017 1D24 ADDL R23, R1, R23 ; R23, R1, R23 B2FE0004 1D28 STL R23, 4(SP) ; R23, 4(SP) 22E50139 1D2C LDA R23, 313(R5) ; R23, 313(R5) ; 010357 A03E0000 1D30 LDL R1, (SP) ; R1, (SP) ; 010353 A33E0000 1D34 LDL R25, (SP) ; R25, (SP) ; 010356 4820B721 1D38 SLL R1, 5, R1 ; R1, 5, R1 ; 010354 40230001 1D3C ADDL R1, R3, R1 ; R1, R3, R1 ; 010355 43210019 1D40 ADDL R25, R1, R25 ; R25, R1, R25 ; 010356 B33E0000 1D44 STL R25, (SP) ; R25, (SP) 2C250139 1D48 LDQ_U R1, 313(R5) ; R1, 313(R5) ; 010357 483702C1 1D4C EXTWL R1, R23, R1 ; R1, R23, R1 F2E00023 1D50 BLBS R23, $L138 ; R23, $L138 1D54 $L139: A31E0000 1D54 LDL R24, (SP) ; R24, (SP) ; 010358 43010018 1D58 ADDL R24, R1, R24 ; R24, R1, R24 43F80016 1D5C SEXTL R24, R22 ; R24, R22 ; 010360 B31E0000 1D60 STL R24, (SP) ; R24, (SP) ; 010358 43E41121 1D64 SUBL R31, 32, R1 ; R31, 32, R1 ; 010360 47F60516 1D68 ORNOT R31, R22, R22 ; R31, R22, R22 E4200004 1D6C BEQ R1, $L140 ; R1, $L140 1D70 $L141: E2C00003 1D70 BLBC R22, $L140 ; R22, $L140 40203001 1D74 ADDL R1, 1, R1 ; R1, 1, R1 4AC03696 1D78 SRL R22, 1, R22 ; R22, 1, R22 F43FFFFC 1D7C BNE R1, $L141 ; R1, $L141 1D80 $L140: A33E0004 1D80 LDL R25, 4(SP) ; R25, 4(SP) ; 010361 40241001 1D84 ADDL R1, 32, R1 ; R1, 32, R1 ; 010360 43210019 1D88 ADDL R25, R1, R25 ; R25, R1, R25 ; 010361 B33E0004 1D8C STL R25, 4(SP) ; R25, 4(SP) 43F90017 1D90 SEXTL R25, R23 ; R25, R23 ; 010362 43E41121 1D94 SUBL R31, 32, R1 ; R31, 32, R1 47F70517 1D98 ORNOT R31, R23, R23 ; R31, R23, R23 E4200004 1D9C BEQ R1, $L142 ; R1, $L142 1DA0 $L143: E2E00003 1DA0 BLBC R23, $L142 ; R23, $L142 40203001 1DA4 ADDL R1, 1, R1 ; R1, 1, R1 4AE03697 1DA8 SRL R23, 1, R23 ; R23, 1, R23 F43FFFFC 1DAC BNE R1, $L143 ; R1, $L143 1DB0 $L142: A39E0000 1DB0 LDL R28, (SP) ; R28, (SP) ; 010363 40241001 1DB4 ADDL R1, 32, R1 ; R1, 32, R1 ; 010362 4381001C 1DB8 ADDL R28, R1, R28 ; R28, R1, R28 ; 010363 B39E0000 1DBC STL R28, (SP) ; R28, (SP) A01E0004 1DC0 LDL R0, 4(SP) ; R0, 4(SP) ; 010365 43FC0001 1DC4 SEXTL R28, R1 ; R28, R1 ; 010364 43C1141E 1DC8 ADDQ SP, 8, SP ; SP, 8, SP ; 010365 1DCC $L14: ; 010366 6BFA8001 1DCC RET R26 ; R26 1DD0 $L136: ; 010351 2F25013E 1DD0 LDQ_U R25, 318(R5) ; R25, 318(R5) 4B360B5C 1DD4 EXTWH R25, R22, R28 ; R25, R22, R28 443C0401 1DD8 BIS R1, R28, R1 ; R1, R28, R1 C3FFFFD0 1DDC BR $L137 ; $L137 1DE0 $L138: ; 010357 2F85013A 1DE0 LDQ_U R28, 314(R5) ; R28, 314(R5) 4B970B56 1DE4 EXTWH R28, R23, R22 ; R28, R23, R22 JTDRIVER Machine Code Listing 2-DEC-1994 10:13:13 AMAC V2.1-13-2671 Page 145 V01H AUTH 2-DEC-1994 10:12:45 [EVERHART.JT]JTDRIVER_S2.MAR;120 44360401 1DE8 BIS R1, R22, R1 ; R1, R22, R1 C3FFFFD9 1DEC BR $L139 ; $L139 Routine Size: 336 bytes, Routine Base: $$$115_DRIVER + 1CA0 1DF0 SETSOFTL: ; 010372 43CC153E 1DF0 SUBQ SP, 96, SP ; SP, 96, SP B75E0000 1DF4 STQ R26, (SP) ; R26, (SP) B45E0008 1DF8 STQ R2, 8(SP) ; R2, 8(SP) B47E0010 1DFC STQ R3, 16(SP) ; R3, 16(SP) B49E0018 1E00 STQ R4, 24(SP) ; R4, 24(SP) B4BE0020 1E04 STQ R5, 32(SP) ; R5, 32(SP) B4DE0028 1E08 STQ R6, 40(SP) ; R6, 40(SP) B4FE0030 1E0C STQ R7, 48(SP) ; R7, 48(SP) B51E0038 1E10 STQ R8, 56(SP) ; R8, 56(SP) B53E0040 1E14 STQ R9, 64(SP) ; R9, 64(SP) B55E0048 1E18 STQ R10, 72(SP) ; R10, 72(SP) B57E0050 1E1C STQ R11, 80(SP) ; R11, 80(SP) B5BE0058 1E20 STQ R13, 88(SP) ; R13, 88(SP) 47FB040D 1E24 MOV R27, R13 ; R27, R13 1E28 $L15: 43C6153E 1E28 SUBQ SP, 48, SP ; SP, 48, SP ; 010373 A74DFE28 1E2C LDQ R26, -472(R13) ; R26, -472(R13) ; 010374 B17E002C 1E30 STL R11, 44(SP) ; R11, 44(SP) ; 010373 B15E0028 1E34 STL R10, 40(SP) ; R10, 40(SP) B13E0024 1E38 STL R9, 36(SP) ; R9, 36(SP) B11E0020 1E3C STL R8, 32(SP) ; R8, 32(SP) B0FE001C 1E40 STL R7, 28(SP) ; R7, 28(SP) B0DE0018 1E44 STL R6, 24(SP) ; R6, 24(SP) B0BE0014 1E48 STL R5, 20(SP) ; R5, 20(SP) B09E0010 1E4C STL R4, 16(SP) ; R4, 16(SP) B07E000C 1E50 STL R3, 12(SP) ; R3, 12(SP) B05E0008 1E54 STL R2, 8(SP) ; R2, 8(SP) B03E0004 1E58 STL R1, 4(SP) ; R1, 4(SP) B01E0000 1E5C STL R0, (SP) ; R0, (SP) A36B0044 1E60 LDL R27, 68(R11) ; R27, 68(R11) ; 010374 A33A0078 1E64 LDL R25, 120(R26) ; R25, 120(R26) 43790530 1E68 SUBQ R27, R25, R16 ; R27, R25, R16 F6000006 1E6C BNE R16, 93_999$ ; R16, 93_999$ ; 010375 1E70 93_30026$: 4169140A 1E70 ADDQ R11, 72, R10 ; R11, 72, R10 ; 010376 2FFE0000 1E74 LNOP ; 1E78 93_1$: ; 010378 2D2A0000 1E78 LDQ_U R9, (R10) ; R9, (R10) 492A00C9 1E7C EXTBL R9, R10, R9 ; R9, R10, R9 4140340A 1E80 ADDQ R10, 1, R10 ; R10, 1, R10 F520001E 1E84 BNE R9, 93_30027$ ; R9, 93_30027$ ; 010379 1E88 93_999$: ; 010483 A01E0000 1E88 LDL R0, (SP) ; R0, (SP) ; 010484 A03E0004 1E8C LDL R1, 4(SP) ; R1, 4(SP) A05E0008 1E90 LDL R2, 8(SP) ; R2, 8(SP) A07E000C 1E94 LDL R3, 12(SP) ; R3, 12(SP) A09E0010 1E98 LDL R4, 16(SP) ; R4, 16(SP) A0BE0014 1E9C LDL R5, 20(SP) ; R5, 20(SP) A0DE0018 1EA0 LDL R6, 24(SP) ; R6, 24(SP) A0FE001C 1EA4 LDL R7, 28(SP) ; R7, 28(SP) A11E0020 1EA8 LDL R8, 32(SP) ; R8, 32(SP) JTDRIVER Machine Code Listing 2-DEC-1994 10:13:13 AMAC V2.1-13-2671 Page 146 V01H SETSOFTL 2-DEC-1994 10:12:45 [EVERHART.JT]JTDRIVER_S2.MAR;120 A13E0024 1EAC LDL R9, 36(SP) ; R9, 36(SP) A15E0028 1EB0 LDL R10, 40(SP) ; R10, 40(SP) A17E002C 1EB4 LDL R11, 44(SP) ; R11, 44(SP) 43C6141E 1EB8 ADDQ SP, 48, SP ; SP, 48, SP 1EBC $L16: ; 010485 A79E0000 1EBC LDQ R28, (SP) ; R28, (SP) A45E0008 1EC0 LDQ R2, 8(SP) ; R2, 8(SP) A47E0010 1EC4 LDQ R3, 16(SP) ; R3, 16(SP) A49E0018 1EC8 LDQ R4, 24(SP) ; R4, 24(SP) A4BE0020 1ECC LDQ R5, 32(SP) ; R5, 32(SP) A4DE0028 1ED0 LDQ R6, 40(SP) ; R6, 40(SP) A4FE0030 1ED4 LDQ R7, 48(SP) ; R7, 48(SP) A51E0038 1ED8 LDQ R8, 56(SP) ; R8, 56(SP) A53E0040 1EDC LDQ R9, 64(SP) ; R9, 64(SP) A55E0048 1EE0 LDQ R10, 72(SP) ; R10, 72(SP) A57E0050 1EE4 LDQ R11, 80(SP) ; R11, 80(SP) A5BE0058 1EE8 LDQ R13, 88(SP) ; R13, 88(SP) 43CC141E 1EEC ADDQ SP, 96, SP ; SP, 96, SP 6BFC8001 1EF0 RET R28 ; R28 2FFE0000 1EF4 LNOP ; 1EF8 $L102: ; 010375 C3FFFFE3 1EF8 BR 93_999$ ; 93_999$ 47FF041F 1EFC NOP ; 1F00 93_30027$: ; 010379 41203530 1F00 SUBQ R9, 1, R16 ; R9, 1, R16 ; 010380 E61FFFDC 1F04 BEQ R16, 93_1$ ; R16, 93_1$ ; 010381 41205530 1F08 SUBQ R9, 2, R16 ; R9, 2, R16 ; 010382 E61FFFDA 1F0C BEQ R16, 93_1$ ; R16, 93_1$ ; 010383 41207530 1F10 SUBQ R9, 3, R16 ; R9, 3, R16 ; 010384 F600000E 1F14 BNE R16, 93_2$ ; R16, 93_2$ ; 010385 2F4A0000 1F18 LDQ_U R26, (R10) ; R26, (R10) ; 010387 2CEA0001 1F1C LDQ_U R7, 1(R10) ; R7, 1(R10) ; 010388 4B4A00DA 1F20 EXTBL R26, R10, R26 ; R26, R10, R26 ; 010387 4140340A 1F24 ADDQ R10, 1, R10 ; R10, 1, R10 48EA04C7 1F28 EXTLL R7, R10, R7 ; R7, R10, R7 ; 010388 2F0A0003 1F2C LDQ_U R24, 3(R10) ; R24, 3(R10) 4B471728 1F30 SLL R26, 56, R8 ; R26, 56, R8 ; 010387 4B0A0D59 1F34 EXTLH R24, R10, R25 ; R24, R10, R25 ; 010388 49071788 1F38 SRA R8, 56, R8 ; R8, 56, R8 ; 010387 44F90407 1F3C BIS R7, R25, R7 ; R7, R25, R7 ; 010388 43E70007 1F40 SEXTL R7, R7 ; R7, R7 4140940A 1F44 ADDQ R10, 4, R10 ; R10, 4, R10 C3FFFFCB 1F48 BR 93_1$ ; 93_1$ ; 010389 47FF041F 1F4C NOP ; 1F50 93_2$: ; 010390 41209530 1F50 SUBQ R9, 4, R16 ; R9, 4, R16 ; 010391 F600001E 1F54 BNE R16, 93_3$ ; R16, 93_3$ ; 010392 2C0A0000 1F58 LDQ_U R0, (R10) ; R0, (R10) ; 010393 2F8A0003 1F5C LDQ_U R28, 3(R10) ; R28, 3(R10) 2C2A0004 1F60 LDQ_U R1, 4(R10) ; R1, 4(R10) ; 010394 480A04C0 1F64 EXTLL R0, R10, R0 ; R0, R10, R0 ; 010393 4B8A0D56 1F68 EXTLH R28, R10, R22 ; R28, R10, R22 4140940A 1F6C ADDQ R10, 4, R10 ; R10, 4, R10 482A04C1 1F70 EXTLL R1, R10, R1 ; R1, R10, R1 ; 010394 2F4A0003 1F74 LDQ_U R26, 3(R10) ; R26, 3(R10) 2C4A0004 1F78 LDQ_U R2, 4(R10) ; R2, 4(R10) ; 010395 44160400 1F7C BIS R0, R22, R0 ; R0, R22, R0 ; 010393 JTDRIVER Machine Code Listing 2-DEC-1994 10:13:13 AMAC V2.1-13-2671 Page 147 V01H SETSOFTL 2-DEC-1994 10:12:45 [EVERHART.JT]JTDRIVER_S2.MAR;120 43E00000 1F80 SEXTL R0, R0 ; R0, R0 4B4A0D5B 1F84 EXTLH R26, R10, R27 ; R26, R10, R27 ; 010394 4140940A 1F88 ADDQ R10, 4, R10 ; R10, 4, R10 484A04C2 1F8C EXTLL R2, R10, R2 ; R2, R10, R2 ; 010395 2F0A0003 1F90 LDQ_U R24, 3(R10) ; R24, 3(R10) 443B0401 1F94 BIS R1, R27, R1 ; R1, R27, R1 ; 010394 2C6A0004 1F98 LDQ_U R3, 4(R10) ; R3, 4(R10) ; 010396 43E10001 1F9C SEXTL R1, R1 ; R1, R1 ; 010394 4B0A0D59 1FA0 EXTLH R24, R10, R25 ; R24, R10, R25 ; 010395 4140940A 1FA4 ADDQ R10, 4, R10 ; R10, 4, R10 486A04C3 1FA8 EXTLL R3, R10, R3 ; R3, R10, R3 ; 010396 2ECA0003 1FAC LDQ_U R22, 3(R10) ; R22, 3(R10) 44590402 1FB0 BIS R2, R25, R2 ; R2, R25, R2 ; 010395 43E20002 1FB4 SEXTL R2, R2 ; R2, R2 4ACA0D57 1FB8 EXTLH R22, R10, R23 ; R22, R10, R23 ; 010396 4140940A 1FBC ADDQ R10, 4, R10 ; R10, 4, R10 44770403 1FC0 BIS R3, R23, R3 ; R3, R23, R3 43E30003 1FC4 SEXTL R3, R3 ; R3, R3 C3FFFFAB 1FC8 BR 93_1$ ; 93_1$ ; 010397 47FF041F 1FCC NOP ; 1FD0 93_3$: ; 010398 4120B530 1FD0 SUBQ R9, 5, R16 ; R9, 5, R16 F600001E 1FD4 BNE R16, 93_4$ ; R16, 93_4$ ; 010399 2C0A0000 1FD8 LDQ_U R0, (R10) ; R0, (R10) ; 010400 2F4A0003 1FDC LDQ_U R26, 3(R10) ; R26, 3(R10) 2C2A0004 1FE0 LDQ_U R1, 4(R10) ; R1, 4(R10) ; 010401 480A04C0 1FE4 EXTLL R0, R10, R0 ; R0, R10, R0 ; 010400 4B4A0D5B 1FE8 EXTLH R26, R10, R27 ; R26, R10, R27 4140940A 1FEC ADDQ R10, 4, R10 ; R10, 4, R10 482A04C1 1FF0 EXTLL R1, R10, R1 ; R1, R10, R1 ; 010401 2F0A0003 1FF4 LDQ_U R24, 3(R10) ; R24, 3(R10) 2C4A0004 1FF8 LDQ_U R2, 4(R10) ; R2, 4(R10) ; 010402 441B0400 1FFC BIS R0, R27, R0 ; R0, R27, R0 ; 010400 43E00000 2000 SEXTL R0, R0 ; R0, R0 4B0A0D59 2004 EXTLH R24, R10, R25 ; R24, R10, R25 ; 010401 4140940A 2008 ADDQ R10, 4, R10 ; R10, 4, R10 484A04C2 200C EXTLL R2, R10, R2 ; R2, R10, R2 ; 010402 2ECA0003 2010 LDQ_U R22, 3(R10) ; R22, 3(R10) 44390401 2014 BIS R1, R25, R1 ; R1, R25, R1 ; 010401 2C6A0004 2018 LDQ_U R3, 4(R10) ; R3, 4(R10) ; 010403 43E10001 201C SEXTL R1, R1 ; R1, R1 ; 010401 4ACA0D57 2020 EXTLH R22, R10, R23 ; R22, R10, R23 ; 010402 4140940A 2024 ADDQ R10, 4, R10 ; R10, 4, R10 486A04C3 2028 EXTLL R3, R10, R3 ; R3, R10, R3 ; 010403 2F6A0003 202C LDQ_U R27, 3(R10) ; R27, 3(R10) 44570402 2030 BIS R2, R23, R2 ; R2, R23, R2 ; 010402 43E20002 2034 SEXTL R2, R2 ; R2, R2 4B6A0D5C 2038 EXTLH R27, R10, R28 ; R27, R10, R28 ; 010403 4140940A 203C ADDQ R10, 4, R10 ; R10, 4, R10 447C0403 2040 BIS R3, R28, R3 ; R3, R28, R3 43E30003 2044 SEXTL R3, R3 ; R3, R3 C3FFFF8B 2048 BR 93_1$ ; 93_1$ ; 010404 47FF041F 204C NOP ; 2050 93_4$: ; 010405 4120D530 2050 SUBQ R9, 6, R16 ; R9, 6, R16 F6000012 2054 BNE R16, $L103 ; R16, $L103 ; 010406 2058 93_30028$: JTDRIVER Machine Code Listing 2-DEC-1994 10:13:13 AMAC V2.1-13-2671 Page 148 V01H SETSOFTL 2-DEC-1994 10:12:45 [EVERHART.JT]JTDRIVER_S2.MAR;120 2D2A0000 2058 LDQ_U R9, (R10) ; R9, (R10) ; 010407 43EA0008 205C SEXTL R10, R8 ; R10, R8 ; 010413 41003008 2060 ADDL R8, 1, R8 ; R8, 1, R8 ; 010415 492A00C9 2064 EXTBL R9, R10, R9 ; R9, R10, R9 ; 010407 4149000A 2068 ADDL R10, R9, R10 ; R10, R9, R10 ; 010414 43E80009 206C SEXTL R8, R9 ; R8, R9 ; 010416 4100F008 2070 ADDL R8, 7, R8 ; R8, 7, R8 ; 010417 2E290000 2074 LDQ_U R17, (R9) ; R17, (R9) ; 010419 4A2900D1 2078 EXTBL R17, R9, R17 ; R17, R9, R17 E620000E 207C BEQ R17, 93_901$ ; R17, 93_901$ ; 010420 42203530 2080 SUBQ R17, 1, R16 ; R17, 1, R16 ; 010421 F600000C 2084 BNE R16, 93_901$ ; R16, 93_901$ ; 010422 A2CB0008 2088 LDL R22, 8(R11) ; R22, 8(R11) ; 010423 22FF0100 208C LDA R23, 256(R31) ; R23, 256(R31) 46D70010 2090 AND R22, R23, R16 ; R22, R23, R16 F61FFF78 2094 BNE R16, 93_1$ ; R16, 93_1$ ; 010425 C3E00007 2098 BR 93_901$ ; 93_901$ ; 010424 47FF041F 209C NOP ; 20A0 $L103: ; 010406 4120F530 20A0 SUBQ R9, 7, R16 ; R9, 7, R16 ; 010478 F61FFF78 20A4 BNE R16, 93_999$ ; R16, 93_999$ ; 010479 2D2A0000 20A8 LDQ_U R9, (R10) ; R9, (R10) ; 010480 492A00C9 20AC EXTBL R9, R10, R9 ; R9, R10, R9 4149000A 20B0 ADDL R10, R9, R10 ; R10, R9, R10 ; 010481 C3FFFF70 20B4 BR 93_1$ ; 93_1$ ; 010482 20B8 93_901$: ; 010426 A76DFE80 20B8 LDQ R27, -384(R13) ; R27, -384(R13) ; 010429 A74D0010 20BC LDQ R26, 16(R13) ; R26, 16(R13) ; 010430 A09B0000 20C0 LDL R4, (R27) ; R4, (R27) ; 010429 A76D0018 20C4 LDQ R27, 24(R13) ; R27, 24(R13) ; 010430 6B5A4000 20C8 JSR R26, R26 ; R26, R26 43C1953E 20CC SUBQ SP, 12, SP ; SP, 12, SP ; 010432 43FE0002 20D0 SEXTL SP, R2 ; SP, R2 ; 010433 2F280000 20D4 LDQ_U R25, (R8) ; R25, (R8) ; 010434 A74D0020 20D8 LDQ R26, 32(R13) ; R26, 32(R13) ; 010440 43E20001 20DC SEXTL R2, R1 ; R2, R1 ; 010438 A3020000 20E0 LDL R24, (R2) ; R24, (R2) ; 010434 4B2800D9 20E4 EXTBL R25, R8, R25 ; R25, R8, R25 41003408 20E8 ADDQ R8, 1, R8 ; R8, 1, R8 A76D0028 20EC LDQ R27, 40(R13) ; R27, 40(R13) ; 010440 4B001258 20F0 MSKWL R24, 0, R24 ; R24, 0, R24 ; 010434 47190418 20F4 BIS R24, R25, R24 ; R24, R25, R24 43F8001C 20F8 SEXTL R24, R28 ; R24, R28 ; 010435 B3020000 20FC STL R24, (R2) ; R24, (R2) ; 010434 4B80505C 2100 MSKBL R28, 2, R28 ; R28, 2, R28 ; 010435 279C000E 2104 LDAH R28, 14(R28) ; R28, 14(R28) 43FC0018 2108 SEXTL R28, R24 ; R28, R24 ; 010436 B3820000 210C STL R28, (R2) ; R28, (R2) ; 010435 4B007058 2110 MSKBL R24, 3, R24 ; R24, 3, R24 ; 010436 27180100 2114 LDAH R24, 256(R24) ; R24, 256(R24) B3020000 2118 STL R24, (R2) ; R24, (R2) B1020004 211C STL R8, 4(R2) ; R8, 4(R2) ; 010437 43C2953E 2120 SUBQ SP, 20, SP ; SP, 20, SP ; 010439 B13E0010 2124 STL R9, 16(SP) ; R9, 16(SP) B11E000C 2128 STL R8, 12(SP) ; R8, 12(SP) B0BE0008 212C STL R5, 8(SP) ; R5, 8(SP) B09E0004 2130 STL R4, 4(SP) ; R4, 4(SP) JTDRIVER Machine Code Listing 2-DEC-1994 10:13:13 AMAC V2.1-13-2671 Page 149 V01H SETSOFTL 2-DEC-1994 10:12:45 [EVERHART.JT]JTDRIVER_S2.MAR;120 B07E0000 2134 STL R3, (SP) ; R3, (SP) 6B5A4000 2138 JSR R26, R26 ; R26, R26 ; 010440 A07E0000 213C LDL R3, (SP) ; R3, (SP) ; 010441 A09E0004 2140 LDL R4, 4(SP) ; R4, 4(SP) A0BE0008 2144 LDL R5, 8(SP) ; R5, 8(SP) A11E000C 2148 LDL R8, 12(SP) ; R8, 12(SP) A13E0010 214C LDL R9, 16(SP) ; R9, 16(SP) 43C4141E 2150 ADDQ SP, 32, SP ; SP, 32, SP ; 010442 E000003E 2154 BLBC R0, 93_7$ ; R0, 93_7$ ; 010443 A0E60000 2158 LDL R7, (R6) ; R7, (R6) ; 010446 A387007C 215C LDL R28, 124(R7) ; R28, 124(R7) ; 010448 4380313C 2160 SUBL R28, 1, R28 ; R28, 1, R28 B387007C 2164 STL R28, 124(R7) ; R28, 124(R7) FF800001 2168 BGT R28, 93_10$ ; R28, 93_10$ ; 010449 B3E7007C 216C STL R31, 124(R7) ; R31, 124(R7) ; 010450 2170 93_10$: ; 010456 B0260000 2170 STL R1, (R6) ; R1, (R6) A341007C 2174 LDL R26, 124(R1) ; R26, 124(R1) ; 010458 4340301A 2178 ADDL R26, 1, R26 ; R26, 1, R26 B341007C 217C STL R26, 124(R1) ; R26, 124(R1) A06B0140 2180 LDL R3, 320(R11) ; R3, 320(R11) ; 010462 B0230024 2184 STL R1, 36(R3) ; R1, 36(R3) ; 010463 A10B0178 2188 LDL R8, 376(R11) ; R8, 376(R11) ; 010465 E5000030 218C BEQ R8, 93_7$ ; R8, 93_7$ ; 010466 A1080004 2190 LDL R8, 4(R8) ; R8, 4(R8) ; 010467 E500002E 2194 BEQ R8, 93_7$ ; R8, 93_7$ ; 010468 2F090001 2198 LDQ_U R24, 1(R9) ; R24, 1(R9) ; 010469 41203417 219C ADDQ R9, 1, R23 ; R9, 1, R23 2F890004 21A0 LDQ_U R28, 4(R9) ; R28, 4(R9) 4120B419 21A4 ADDQ R9, 5, R25 ; R9, 5, R25 ; 010470 4B1704D8 21A8 EXTLL R24, R23, R24 ; R24, R23, R24 ; 010469 4B970D56 21AC EXTLH R28, R23, R22 ; R28, R23, R22 47160418 21B0 BIS R24, R22, R24 ; R24, R22, R24 B3080004 21B4 STL R24, 4(R8) ; R24, 4(R8) 2F490005 21B8 LDQ_U R26, 5(R9) ; R26, 5(R9) ; 010470 4B5902DA 21BC EXTWL R26, R25, R26 ; R26, R25, R26 F3200027 21C0 BLBS R25, $L144 ; R25, $L144 21C4 $L145: 2F880008 21C4 LDQ_U R28, 8(R8) ; R28, 8(R8) 4B480379 21C8 INSWL R26, R8, R25 ; R26, R8, R25 4B88025C 21CC MSKWL R28, R8, R28 ; R28, R8, R28 4799041C 21D0 BIS R28, R25, R28 ; R28, R25, R28 F1000026 21D4 BLBS R8, $L146 ; R8, $L146 21D8 $L147: 3F880008 21D8 STQ_U R28, 8(R8) ; R28, 8(R8) 41015417 21DC ADDQ R8, 10, R23 ; R8, 10, R23 ; 010471 2EC8000A 21E0 LDQ_U R22, 10(R8) ; R22, 10(R8) 4AD70256 21E4 MSKWL R22, R23, R22 ; R22, R23, R22 F2E00027 21E8 BLBS R23, $L148 ; R23, $L148 21EC $L149: 3EC8000A 21EC STQ_U R22, 10(R8) ; R22, 10(R8) 41029416 21F0 ADDQ R8, 20, R22 ; R8, 20, R22 ; 010473 B3E8000C 21F4 STL R31, 12(R8) ; R31, 12(R8) ; 010472 233F0800 21F8 LDA R25, 2048(R31) ; R25, 2048(R31) ; 010473 2F080014 21FC LDQ_U R24, 20(R8) ; R24, 20(R8) 4B1602D7 2200 EXTWL R24, R22, R23 ; R24, R22, R23 F2C00024 2204 BLBS R22, $L150 ; R22, $L150 JTDRIVER Machine Code Listing 2-DEC-1994 10:13:13 AMAC V2.1-13-2671 Page 150 V01H SETSOFTL 2-DEC-1994 10:12:45 [EVERHART.JT]JTDRIVER_S2.MAR;120 2208 $L151: 46F9011A 2208 BIC R23, R25, R26 ; R23, R25, R26 4B560375 220C INSWL R26, R22, R21 ; R26, R22, R21 4B160258 2210 MSKWL R24, R22, R24 ; R24, R22, R24 47150418 2214 BIS R24, R21, R24 ; R24, R21, R24 F2C00023 2218 BLBS R22, $L152 ; R22, $L152 221C $L153: 3F080014 221C STQ_U R24, 20(R8) ; R24, 20(R8) 41029418 2220 ADDQ R8, 20, R24 ; R8, 20, R24 ; 010474 2F480014 2224 LDQ_U R26, 20(R8) ; R26, 20(R8) 237F0100 2228 LDA R27, 256(R31) ; R27, 256(R31) 4B5802D9 222C EXTWL R26, R24, R25 ; R26, R24, R25 F3000022 2230 BLBS R24, $L154 ; R24, $L154 2234 $L155: 473B011C 2234 BIC R25, R27, R28 ; R25, R27, R28 4B980377 2238 INSWL R28, R24, R23 ; R28, R24, R23 4B58025A 223C MSKWL R26, R24, R26 ; R26, R24, R26 4757041A 2240 BIS R26, R23, R26 ; R26, R23, R26 F3000021 2244 BLBS R24, $L156 ; R24, $L156 2248 $L157: 3F480014 2248 STQ_U R26, 20(R8) ; R26, 20(R8) B3E80010 224C STL R31, 16(R8) ; R31, 16(R8) ; 010475 2250 93_7$: ; 010476 A74D0030 2250 LDQ R26, 48(R13) ; R26, 48(R13) A76D0038 2254 LDQ R27, 56(R13) ; R27, 56(R13) 6B5A4000 2258 JSR R26, R26 ; R26, R26 C3FFFF06 225C BR 93_1$ ; 93_1$ ; 010477 2260 $L144: ; 010470 2EE90006 2260 LDQ_U R23, 6(R9) ; R23, 6(R9) 4AF90B58 2264 EXTWH R23, R25, R24 ; R23, R25, R24 4758041A 2268 BIS R26, R24, R26 ; R26, R24, R26 C3FFFFD5 226C BR $L145 ; $L145 2270 $L146: 2F680009 2270 LDQ_U R27, 9(R8) ; R27, 9(R8) 4B480AF9 2274 INSWH R26, R8, R25 ; R26, R8, R25 4B680A5B 2278 MSKWH R27, R8, R27 ; R27, R8, R27 4779041B 227C BIS R27, R25, R27 ; R27, R25, R27 3F680009 2280 STQ_U R27, 9(R8) ; R27, 9(R8) C3FFFFD4 2284 BR $L147 ; $L147 2288 $L148: ; 010471 2F88000B 2288 LDQ_U R28, 11(R8) ; R28, 11(R8) 4B970A5C 228C MSKWH R28, R23, R28 ; R28, R23, R28 3F88000B 2290 STQ_U R28, 11(R8) ; R28, 11(R8) C3FFFFD5 2294 BR $L149 ; $L149 2298 $L150: ; 010473 2F680015 2298 LDQ_U R27, 21(R8) ; R27, 21(R8) 4B760B5C 229C EXTWH R27, R22, R28 ; R27, R22, R28 46FC0417 22A0 BIS R23, R28, R23 ; R23, R28, R23 C3FFFFD8 22A4 BR $L151 ; $L151 22A8 $L152: 4B560AF5 22A8 INSWH R26, R22, R21 ; R26, R22, R21 4B760A5B 22AC MSKWH R27, R22, R27 ; R27, R22, R27 4775041B 22B0 BIS R27, R21, R27 ; R27, R21, R27 3F680015 22B4 STQ_U R27, 21(R8) ; R27, 21(R8) C3FFFFD8 22B8 BR $L153 ; $L153 22BC $L154: ; 010474 2EC80015 22BC LDQ_U R22, 21(R8) ; R22, 21(R8) JTDRIVER Machine Code Listing 2-DEC-1994 10:13:13 AMAC V2.1-13-2671 Page 151 V01H SETSOFTL 2-DEC-1994 10:12:45 [EVERHART.JT]JTDRIVER_S2.MAR;120 4AD80B57 22C0 EXTWH R22, R24, R23 ; R22, R24, R23 47370419 22C4 BIS R25, R23, R25 ; R25, R23, R25 C3FFFFDA 22C8 BR $L155 ; $L155 22CC $L156: 4B980AF7 22CC INSWH R28, R24, R23 ; R28, R24, R23 4AD80A56 22D0 MSKWH R22, R24, R22 ; R22, R24, R22 46D70416 22D4 BIS R22, R23, R22 ; R22, R23, R22 3EC80015 22D8 STQ_U R22, 21(R8) ; R22, 21(R8) C3FFFFDA 22DC BR $L157 ; $L157 Routine Size: 1264 bytes, Routine Base: $$$115_DRIVER + 1DF0 22E0 MOVLDT: ; 010491 43CC153E 22E0 SUBQ SP, 96, SP ; SP, 96, SP B75E0000 22E4 STQ R26, (SP) ; R26, (SP) B45E0008 22E8 STQ R2, 8(SP) ; R2, 8(SP) B47E0010 22EC STQ R3, 16(SP) ; R3, 16(SP) B49E0018 22F0 STQ R4, 24(SP) ; R4, 24(SP) B4BE0020 22F4 STQ R5, 32(SP) ; R5, 32(SP) B4DE0028 22F8 STQ R6, 40(SP) ; R6, 40(SP) B4FE0030 22FC STQ R7, 48(SP) ; R7, 48(SP) B51E0038 2300 STQ R8, 56(SP) ; R8, 56(SP) B53E0040 2304 STQ R9, 64(SP) ; R9, 64(SP) B55E0048 2308 STQ R10, 72(SP) ; R10, 72(SP) B57E0050 230C STQ R11, 80(SP) ; R11, 80(SP) B5BE0058 2310 STQ R13, 88(SP) ; R13, 88(SP) 47FB040D 2314 MOV R27, R13 ; R27, R13 2318 $L17: 43C1153E 2318 SUBQ SP, 8, SP ; SP, 8, SP ; 010492 A78DFE40 231C LDQ R28, -448(R13) ; R28, -448(R13) ; 010494 236D0298 2320 LDA R27, 664(R13) ; R27, 664(R13) ; 010495 B03E0004 2324 STL R1, 4(SP) ; R1, 4(SP) ; 010492 B01E0000 2328 STL R0, (SP) ; R0, (SP) A09C0000 232C LDL R4, (R28) ; R4, (R28) ; 010494 43C1153E 2330 SUBQ SP, 8, SP ; SP, 8, SP ; 010495 D3400C2E 2334 BSR R26, FINDLDT ; R26, FINDLDT 43C1141E 2338 ADDQ SP, 8, SP ; SP, 8, SP E400000C 233C BEQ R0, 94_999$ ; R0, 94_999$ ; 010497 43E1000A 2340 SEXTL R1, R10 ; R1, R10 ; 010498 A36B0000 2344 LDL R27, (R11) ; R27, (R11) ; 010499 B36A0000 2348 STL R27, (R10) ; R27, (R10) 236D0298 234C LDA R27, 664(R13) ; R27, 664(R13) ; 010502 A0A60000 2350 LDL R5, (R6) ; R5, (R6) ; 010501 43C1153E 2354 SUBQ SP, 8, SP ; SP, 8, SP ; 010502 D3400C25 2358 BSR R26, FINDLDT ; R26, FINDLDT 43C1141E 235C ADDQ SP, 8, SP ; SP, 8, SP F4000015 2360 BNE R0, $L104 ; R0, $L104 ; 010504 2364 94_2$: ; 010509 B3EB0000 2364 STL R31, (R11) ; R31, (R11) B1610000 2368 STL R11, (R1) ; R11, (R1) ; 010510 47FF041F 236C NOP ; 2370 94_999$: ; 010511 A01E0000 2370 LDL R0, (SP) ; R0, (SP) ; 010512 A03E0004 2374 LDL R1, 4(SP) ; R1, 4(SP) 43C1141E 2378 ADDQ SP, 8, SP ; SP, 8, SP 237C $L18: ; 010513 A79E0000 237C LDQ R28, (SP) ; R28, (SP) JTDRIVER Machine Code Listing 2-DEC-1994 10:13:13 AMAC V2.1-13-2671 Page 152 V01H MOVLDT 2-DEC-1994 10:12:45 [EVERHART.JT]JTDRIVER_S2.MAR;120 A45E0008 2380 LDQ R2, 8(SP) ; R2, 8(SP) A47E0010 2384 LDQ R3, 16(SP) ; R3, 16(SP) A49E0018 2388 LDQ R4, 24(SP) ; R4, 24(SP) A4BE0020 238C LDQ R5, 32(SP) ; R5, 32(SP) A4DE0028 2390 LDQ R6, 40(SP) ; R6, 40(SP) A4FE0030 2394 LDQ R7, 48(SP) ; R7, 48(SP) A51E0038 2398 LDQ R8, 56(SP) ; R8, 56(SP) A53E0040 239C LDQ R9, 64(SP) ; R9, 64(SP) A55E0048 23A0 LDQ R10, 72(SP) ; R10, 72(SP) A57E0050 23A4 LDQ R11, 80(SP) ; R11, 80(SP) A5BE0058 23A8 LDQ R13, 88(SP) ; R13, 88(SP) 43CC141E 23AC ADDQ SP, 96, SP ; SP, 96, SP 6BFC8001 23B0 RET R28 ; R28 2FFE0000 23B4 LNOP ; 23B8 $L104: ; 010505 A74DFEF0 23B8 LDQ R26, -272(R13) ; R26, -272(R13) ; 010507 43EB0000 23BC SEXTL R11, R0 ; R11, R0 ; 010506 A02B0034 23C0 LDL R1, 52(R11) ; R1, 52(R11) ; 010505 43C1153E 23C4 SUBQ SP, 8, SP ; SP, 8, SP ; 010507 A76DFEF8 23C8 LDQ R27, -264(R13) ; R27, -264(R13) 6B5A4000 23CC JSR R26, R26 ; R26, R26 43C1141E 23D0 ADDQ SP, 8, SP ; SP, 8, SP C3FFFFE6 23D4 BR 94_999$ ; 94_999$ ; 010508 47FF041F 23D8 NOP ; 47FF041F 23DC NOP ; Routine Size: 256 bytes, Routine Base: $$$115_DRIVER + 22E0 23E0 DOWAIT: ; 010518 43C4153E 23E0 SUBQ SP, 32, SP ; SP, 32, SP B75E0000 23E4 STQ R26, (SP) ; R26, (SP) B45E0008 23E8 STQ R2, 8(SP) ; R2, 8(SP) B47E0010 23EC STQ R3, 16(SP) ; R3, 16(SP) B5BE0018 23F0 STQ R13, 24(SP) ; R13, 24(SP) 47FB040D 23F4 MOV R27, R13 ; R27, R13 23F8 $L19: 47FF0410 23F8 CLR R16 ; R16 ; 010519 47E1041B 23FC MOV R1, R27 ; R1, R27 47E0041C 2400 MOV R0, R28 ; R0, R28 0000000F 2404 CALL_PAL 15 ; 15 47FC0400 2408 MOV R28, R0 ; R28, R0 47FB0401 240C MOV R27, R1 ; R27, R1 2410 95_10$: ; 010520 A34A0000 2410 LDL R26, (R10) ; R26, (R10) F7400010 2414 BNE R26, 95_90$ ; R26, 95_90$ ; 010521 2418 L$2: A00B0020 2418 LDL R0, 32(R11) ; R0, 32(R11) ; 010522 E400000E 241C BEQ R0, 95_90$ ; R0, 95_90$ ; 010523 A3200000 2420 LDL R25, (R0) ; R25, (R0) ; 010524 E720000C 2424 BEQ R25, 95_90$ ; R25, 95_90$ ; 010526 A74D0020 2428 LDQ R26, 32(R13) ; R26, 32(R13) ; 010529 47E3F410 242C BIS R31, 31, R16 ; R31, 31, R16 ; 010528 A76D0028 2430 LDQ R27, 40(R13) ; R27, 40(R13) ; 010529 47E03419 2434 BIS R31, 1, R25 ; R31, 1, R25 6B5A4000 2438 JSR R26, R26 ; R26, R26 47E3F410 243C BIS R31, 31, R16 ; R31, 31, R16 ; 010531 47E03419 2440 BIS R31, 1, R25 ; R31, 1, R25 ; 010532 JTDRIVER Machine Code Listing 2-DEC-1994 10:13:13 AMAC V2.1-13-2671 Page 153 V01H DOWAIT 2-DEC-1994 10:12:45 [EVERHART.JT]JTDRIVER_S2.MAR;120 A74D0010 2444 LDQ R26, 16(R13) ; R26, 16(R13) A76D0018 2448 LDQ R27, 24(R13) ; R27, 24(R13) 6B5A4000 244C JSR R26, R26 ; R26, R26 A34A0000 2450 LDL R26, (R10) ; R26, (R10) ; 010520 E75FFFF0 2454 BEQ R26, L$2 ; R26, L$2 ; 010521 2458 95_90$: ; 010534 43EA0000 2458 SEXTL R10, R0 ; R10, R0 A14A0000 245C LDL R10, (R10) ; R10, (R10) ; 010535 F5400001 2460 BNE R10, 95_92$ ; R10, 95_92$ ; 010536 47E0540A 2464 BIS R31, 2, R10 ; R31, 2, R10 ; 010537 2468 95_92$: ; 010538 43C2153E 2468 SUBQ SP, 16, SP ; SP, 16, SP A74DFEE0 246C LDQ R26, -288(R13) ; R26, -288(R13) ; 010541 A76DFEE8 2470 LDQ R27, -280(R13) ; R27, -280(R13) B07E000C 2474 STL R3, 12(SP) ; R3, 12(SP) ; 010538 B05E0008 2478 STL R2, 8(SP) ; R2, 8(SP) B03E0004 247C STL R1, 4(SP) ; R1, 4(SP) B01E0000 2480 STL R0, (SP) ; R0, (SP) 47E21401 2484 BIS R31, 16, R1 ; R31, 16, R1 ; 010540 6B5A4000 2488 JSR R26, R26 ; R26, R26 ; 010541 A01E0000 248C LDL R0, (SP) ; R0, (SP) ; 010542 A03E0004 2490 LDL R1, 4(SP) ; R1, 4(SP) A05E0008 2494 LDL R2, 8(SP) ; R2, 8(SP) A07E000C 2498 LDL R3, 12(SP) ; R3, 12(SP) 43C2141E 249C ADDQ SP, 16, SP ; SP, 16, SP 24A0 $L20: ; 010544 A79E0000 24A0 LDQ R28, (SP) ; R28, (SP) A45E0008 24A4 LDQ R2, 8(SP) ; R2, 8(SP) A47E0010 24A8 LDQ R3, 16(SP) ; R3, 16(SP) A5BE0018 24AC LDQ R13, 24(SP) ; R13, 24(SP) 43C4141E 24B0 ADDQ SP, 32, SP ; SP, 32, SP 6BFC8001 24B4 RET R28 ; R28 47FF041F 24B8 NOP ; 47FF041F 24BC NOP ; Routine Size: 224 bytes, Routine Base: $$$115_DRIVER + 23E0 24C0 FDTLOP:: ; 010547 43D0153E 24C0 SUBQ SP, 128, SP ; SP, 128, SP B77E0000 24C4 STQ R27, (SP) ; R27, (SP) B75E0018 24C8 STQ R26, 24(SP) ; R26, 24(SP) B45E0020 24CC STQ R2, 32(SP) ; R2, 32(SP) B47E0028 24D0 STQ R3, 40(SP) ; R3, 40(SP) B49E0030 24D4 STQ R4, 48(SP) ; R4, 48(SP) B4BE0038 24D8 STQ R5, 56(SP) ; R5, 56(SP) B4DE0040 24DC STQ R6, 64(SP) ; R6, 64(SP) B4FE0048 24E0 STQ R7, 72(SP) ; R7, 72(SP) B51E0050 24E4 STQ R8, 80(SP) ; R8, 80(SP) B53E0058 24E8 STQ R9, 88(SP) ; R9, 88(SP) B55E0060 24EC STQ R10, 96(SP) ; R10, 96(SP) B57E0068 24F0 STQ R11, 104(SP) ; R11, 104(SP) B5BE0070 24F4 STQ R13, 112(SP) ; R13, 112(SP) B7BE0078 24F8 STQ FP, 120(SP) ; FP, 120(SP) 47FB040D 24FC MOV R27, R13 ; R27, R13 B7FE0008 2500 STQ R31, 8(SP) ; R31, 8(SP) 47FE041D 2504 MOV SP, FP ; SP, FP 2508 $L21: JTDRIVER Machine Code Listing 2-DEC-1994 10:13:13 AMAC V2.1-13-2671 Page 154 V01H FDTLOP 2-DEC-1994 10:12:45 [EVERHART.JT]JTDRIVER_S2.MAR;120 48E0779C 2508 SRA R7, 3, R28 ; R7, 3, R28 ; 010549 41019008 250C ADDL R8, 12, R8 ; R8, 12, R8 ; 010548 411C001B 2510 ADDL R8, R28, R27 ; R8, R28, R27 ; 010549 44E0F01A 2514 AND R7, 7, R26 ; R7, 7, R26 2F9B0000 2518 LDQ_U R28, (R27) ; R28, (R27) 4B9B00DC 251C EXTBL R28, R27, R28 ; R28, R27, R28 4B9A0699 2520 SRL R28, R26, R25 ; R28, R26, R25 E33FFFF8 2524 BLBC R25, $L21 ; R25, $L21 A0080008 2528 LDL R0, 8(R8) ; R0, 8(R8) ; 010550 43E03418 252C ADDQ R31, 1, R24 ; R31, 1, R24 ; 010551 A74D0030 2530 LDQ R26, 48(R13) ; R26, 48(R13) 47FF0419 2534 CLR R25 ; R25 A76D0038 2538 LDQ R27, 56(R13) ; R27, 56(R13) 47E00417 253C MOV R0, R23 ; R0, R23 6B5A4000 2540 JSR R26, R26 ; R26, R26 C3FFFFF0 2544 BR $L21 ; $L21 ; 010552 47FF041F 2548 NOP ; 47FF041F 254C NOP ; Routine Size: 144 bytes, Routine Base: $$$115_DRIVER + 24C0 2550 FDTXIT:: ; 010553 43D0153E 2550 SUBQ SP, 128, SP ; SP, 128, SP B77E0000 2554 STQ R27, (SP) ; R27, (SP) B75E0018 2558 STQ R26, 24(SP) ; R26, 24(SP) B45E0020 255C STQ R2, 32(SP) ; R2, 32(SP) B47E0028 2560 STQ R3, 40(SP) ; R3, 40(SP) B49E0030 2564 STQ R4, 48(SP) ; R4, 48(SP) B4BE0038 2568 STQ R5, 56(SP) ; R5, 56(SP) B4DE0040 256C STQ R6, 64(SP) ; R6, 64(SP) B4FE0048 2570 STQ R7, 72(SP) ; R7, 72(SP) B51E0050 2574 STQ R8, 80(SP) ; R8, 80(SP) B53E0058 2578 STQ R9, 88(SP) ; R9, 88(SP) B55E0060 257C STQ R10, 96(SP) ; R10, 96(SP) B57E0068 2580 STQ R11, 104(SP) ; R11, 104(SP) B5BE0070 2584 STQ R13, 112(SP) ; R13, 112(SP) B7BE0078 2588 STQ FP, 120(SP) ; FP, 120(SP) 47FB040D 258C MOV R27, R13 ; R27, R13 B7FE0008 2590 STQ R31, 8(SP) ; R31, 8(SP) 47FE041D 2594 MOV SP, FP ; SP, FP 2598 $L23: 47E03400 2598 BIS R31, 1, R0 ; R31, 1, R0 ; 010554 41A8141B 259C ADDQ R13, 64, R27 ; R13, 64, R27 ; 010555 D340003B 25A0 BSR R26, X$FINI ; R26, X$FINI 25A4 $L24: ; 010556 47FD041E 25A4 MOV FP, SP ; FP, SP A79E0018 25A8 LDQ R28, 24(SP) ; R28, 24(SP) A45E0020 25AC LDQ R2, 32(SP) ; R2, 32(SP) A47E0028 25B0 LDQ R3, 40(SP) ; R3, 40(SP) A49E0030 25B4 LDQ R4, 48(SP) ; R4, 48(SP) A4BE0038 25B8 LDQ R5, 56(SP) ; R5, 56(SP) A4DE0040 25BC LDQ R6, 64(SP) ; R6, 64(SP) A4FE0048 25C0 LDQ R7, 72(SP) ; R7, 72(SP) A51E0050 25C4 LDQ R8, 80(SP) ; R8, 80(SP) A53E0058 25C8 LDQ R9, 88(SP) ; R9, 88(SP) A55E0060 25CC LDQ R10, 96(SP) ; R10, 96(SP) A57E0068 25D0 LDQ R11, 104(SP) ; R11, 104(SP) JTDRIVER Machine Code Listing 2-DEC-1994 10:13:13 AMAC V2.1-13-2671 Page 155 V01H FDTXIT 2-DEC-1994 10:12:45 [EVERHART.JT]JTDRIVER_S2.MAR;120 A5BE0070 25D4 LDQ R13, 112(SP) ; R13, 112(SP) A7BE0078 25D8 LDQ FP, 120(SP) ; FP, 120(SP) 43D0141E 25DC ADDQ SP, 128, SP ; SP, 128, SP 6BFC8001 25E0 RET R28 ; R28 47FF041F 25E4 NOP ; 47FF041F 25E8 NOP ; 47FF041F 25EC NOP ; Routine Size: 160 bytes, Routine Base: $$$115_DRIVER + 2550 25F0 FDTBXT:: ; 010557 43D0153E 25F0 SUBQ SP, 128, SP ; SP, 128, SP B77E0000 25F4 STQ R27, (SP) ; R27, (SP) B75E0018 25F8 STQ R26, 24(SP) ; R26, 24(SP) B45E0020 25FC STQ R2, 32(SP) ; R2, 32(SP) B47E0028 2600 STQ R3, 40(SP) ; R3, 40(SP) B49E0030 2604 STQ R4, 48(SP) ; R4, 48(SP) B4BE0038 2608 STQ R5, 56(SP) ; R5, 56(SP) B4DE0040 260C STQ R6, 64(SP) ; R6, 64(SP) B4FE0048 2610 STQ R7, 72(SP) ; R7, 72(SP) B51E0050 2614 STQ R8, 80(SP) ; R8, 80(SP) B53E0058 2618 STQ R9, 88(SP) ; R9, 88(SP) B55E0060 261C STQ R10, 96(SP) ; R10, 96(SP) B57E0068 2620 STQ R11, 104(SP) ; R11, 104(SP) B5BE0070 2624 STQ R13, 112(SP) ; R13, 112(SP) B7BE0078 2628 STQ FP, 120(SP) ; FP, 120(SP) 47FB040D 262C MOV R27, R13 ; R27, R13 B7FE0008 2630 STQ R31, 8(SP) ; R31, 8(SP) 47FE041D 2634 MOV SP, FP ; SP, FP 2638 $L25: 47E49400 2638 BIS R31, 36, R0 ; R31, 36, R0 ; 010558 41A4141B 263C ADDQ R13, 32, R27 ; R13, 32, R27 ; 010559 D3400013 2640 BSR R26, X$FINI ; R26, X$FINI 2644 $L26: ; 010560 47FD041E 2644 MOV FP, SP ; FP, SP A79E0018 2648 LDQ R28, 24(SP) ; R28, 24(SP) A45E0020 264C LDQ R2, 32(SP) ; R2, 32(SP) A47E0028 2650 LDQ R3, 40(SP) ; R3, 40(SP) A49E0030 2654 LDQ R4, 48(SP) ; R4, 48(SP) A4BE0038 2658 LDQ R5, 56(SP) ; R5, 56(SP) A4DE0040 265C LDQ R6, 64(SP) ; R6, 64(SP) A4FE0048 2660 LDQ R7, 72(SP) ; R7, 72(SP) A51E0050 2664 LDQ R8, 80(SP) ; R8, 80(SP) A53E0058 2668 LDQ R9, 88(SP) ; R9, 88(SP) A55E0060 266C LDQ R10, 96(SP) ; R10, 96(SP) A57E0068 2670 LDQ R11, 104(SP) ; R11, 104(SP) A5BE0070 2674 LDQ R13, 112(SP) ; R13, 112(SP) A7BE0078 2678 LDQ FP, 120(SP) ; FP, 120(SP) 43D0141E 267C ADDQ SP, 128, SP ; SP, 128, SP 6BFC8001 2680 RET R28 ; R28 47FF041F 2684 NOP ; 47FF041F 2688 NOP ; 47FF041F 268C NOP ; Routine Size: 160 bytes, Routine Base: $$$115_DRIVER + 25F0 2690 X$FINI: ; 010562 JTDRIVER Machine Code Listing 2-DEC-1994 10:13:13 AMAC V2.1-13-2671 Page 156 V01H X$FINI 2-DEC-1994 10:12:45 [EVERHART.JT]JTDRIVER_S2.MAR;120 43C2153E 2690 SUBQ SP, 16, SP ; SP, 16, SP B75E0000 2694 STQ R26, (SP) ; R26, (SP) B5BE0008 2698 STQ R13, 8(SP) ; R13, 8(SP) 47FB040D 269C MOV R27, R13 ; R27, R13 26A0 $L27: A74D0010 26A0 LDQ R26, 16(R13) ; R26, 16(R13) ; 010590 47FF0401 26A4 CLR R1 ; R1 B0030050 26A8 STL R0, 80(R3) ; R0, 80(R3) 43E50011 26AC SEXTL R5, R17 ; R5, R17 A76D0018 26B0 LDQ R27, 24(R13) ; R27, 24(R13) 43E30010 26B4 SEXTL R3, R16 ; R3, R16 B0230054 26B8 STL R1, 84(R3) ; R1, 84(R3) 47E05419 26BC BIS R31, 2, R25 ; R31, 2, R25 6B5A4000 26C0 JSR R26, R26 ; R26, R26 26C4 $L28: ; 010591 A79E0000 26C4 LDQ R28, (SP) ; R28, (SP) A5BE0008 26C8 LDQ R13, 8(SP) ; R13, 8(SP) 43C2141E 26CC ADDQ SP, 16, SP ; SP, 16, SP 6BFC8001 26D0 RET R28 ; R28 47FF041F 26D4 NOP ; 47FF041F 26D8 NOP ; 47FF041F 26DC NOP ; Routine Size: 80 bytes, Routine Base: $$$115_DRIVER + 2690 26E0 DEACFILT: ; 010593 43D2153E 26E0 SUBQ SP, 144, SP ; SP, 144, SP B77E0000 26E4 STQ R27, (SP) ; R27, (SP) B75E0010 26E8 STQ R26, 16(SP) ; R26, 16(SP) B45E0018 26EC STQ R2, 24(SP) ; R2, 24(SP) B47E0020 26F0 STQ R3, 32(SP) ; R3, 32(SP) B49E0028 26F4 STQ R4, 40(SP) ; R4, 40(SP) B4BE0030 26F8 STQ R5, 48(SP) ; R5, 48(SP) B4DE0038 26FC STQ R6, 56(SP) ; R6, 56(SP) B4FE0040 2700 STQ R7, 64(SP) ; R7, 64(SP) B51E0048 2704 STQ R8, 72(SP) ; R8, 72(SP) B53E0050 2708 STQ R9, 80(SP) ; R9, 80(SP) B55E0058 270C STQ R10, 88(SP) ; R10, 88(SP) B57E0060 2710 STQ R11, 96(SP) ; R11, 96(SP) B59E0068 2714 STQ R12, 104(SP) ; R12, 104(SP) B5BE0070 2718 STQ R13, 112(SP) ; R13, 112(SP) 47FB040D 271C MOV R27, R13 ; R27, R13 B5DE0078 2720 STQ R14, 120(SP) ; R14, 120(SP) B5FE0080 2724 STQ R15, 128(SP) ; R15, 128(SP) B7BE0088 2728 STQ FP, 136(SP) ; FP, 136(SP) 47FE041D 272C MOV SP, FP ; SP, FP B7FE0008 2730 STQ R31, 8(SP) ; R31, 8(SP) 2734 $L29: 43C2153E 2734 SUBQ SP, 16, SP ; SP, 16, SP ; 010596 43F20005 2738 SEXTL R18, R5 ; R18, R5 ; 010593 B0BE000C 273C STL R5, 12(SP) ; R5, 12(SP) ; 010594 43F00003 2740 SEXTL R16, R3 ; R16, R3 ; 010593 43F10004 2744 SEXTL R17, R4 ; R17, R4 B01E0008 2748 STL R0, 8(SP) ; R0, 8(SP) ; 010594 43F30006 274C SEXTL R19, R6 ; R19, R6 ; 010593 236DFD20 2750 LDA R27, -736(R13) ; R27, -736(R13) ; 010596 D35FF696 2754 BSR R26, GETJTUCB ; R26, GETJTUCB JTDRIVER Machine Code Listing 2-DEC-1994 10:13:13 AMAC V2.1-13-2671 Page 157 V01H DEACFILT 2-DEC-1994 10:12:45 [EVERHART.JT]JTDRIVER_S2.MAR;120 43C1141E 2758 ADDQ SP, 8, SP ; SP, 8, SP E800001A 275C BLT R0, 100_509$ ; R0, 100_509$ ; 010598 2760 100_1509$: ; 010599 A01E0000 2760 LDL R0, (SP) ; R0, (SP) 41AE141B 2764 ADDQ R13, 112, R27 ; R13, 112, R27 ; 010600 A0BE0004 2768 LDL R5, 4(SP) ; R5, 4(SP) ; 010599 43C1141E 276C ADDQ SP, 8, SP ; SP, 8, SP 47FF041F 2770 NOP ; D34003BA 2774 BSR R26, POPOUT ; R26, POPOUT ; 010600 2778 $L30: ; 010601 47FD041E 2778 MOV FP, SP ; FP, SP A79E0010 277C LDQ R28, 16(SP) ; R28, 16(SP) A45E0018 2780 LDQ R2, 24(SP) ; R2, 24(SP) A47E0020 2784 LDQ R3, 32(SP) ; R3, 32(SP) A49E0028 2788 LDQ R4, 40(SP) ; R4, 40(SP) A4BE0030 278C LDQ R5, 48(SP) ; R5, 48(SP) A4DE0038 2790 LDQ R6, 56(SP) ; R6, 56(SP) A4FE0040 2794 LDQ R7, 64(SP) ; R7, 64(SP) A51E0048 2798 LDQ R8, 72(SP) ; R8, 72(SP) A53E0050 279C LDQ R9, 80(SP) ; R9, 80(SP) A55E0058 27A0 LDQ R10, 88(SP) ; R10, 88(SP) A57E0060 27A4 LDQ R11, 96(SP) ; R11, 96(SP) A59E0068 27A8 LDQ R12, 104(SP) ; R12, 104(SP) A5BE0070 27AC LDQ R13, 112(SP) ; R13, 112(SP) A5DE0078 27B0 LDQ R14, 120(SP) ; R14, 120(SP) A5FE0080 27B4 LDQ R15, 128(SP) ; R15, 128(SP) A7BE0088 27B8 LDQ FP, 136(SP) ; FP, 136(SP) 43D2141E 27BC ADDQ SP, 144, SP ; SP, 144, SP 6BFC8001 27C0 RET R28 ; R28 47FF041F 27C4 NOP ; 27C8 100_509$: ; 010602 B0A0023C 27C8 STL R5, 572(R0) ; R5, 572(R0) ; 010604 43E00005 27CC SEXTL R0, R5 ; R0, R5 ; 010605 279F0001 27D0 LDAH R28, 1(R31) ; R28, 1(R31) ; 010606 A3650128 27D4 LDL R27, 296(R5) ; R27, 296(R5) 239C0100 27D8 LDA R28, 256(R28) ; R28, 256(R28) 477C0014 27DC AND R27, R28, R20 ; R27, R28, R20 E69FFFDF 27E0 BEQ R20, 100_1509$ ; R20, 100_1509$ ; 010607 27E4 100_30029$: A34400D4 27E4 LDL R26, 212(R4) ; R26, 212(R4) ; 010609 A3250130 27E8 LDL R25, 304(R5) ; R25, 304(R5) 43590534 27EC SUBQ R26, R25, R20 ; R26, R25, R20 E69FFFDB 27F0 BEQ R20, 100_1509$ ; R20, 100_1509$ ; 010610 27F4 100_30030$: A30400D4 27F4 LDL R24, 212(R4) ; R24, 212(R4) ; 010611 A2E50118 27F8 LDL R23, 280(R5) ; R23, 280(R5) 43170534 27FC SUBQ R24, R23, R20 ; R24, R23, R20 E69FFFD7 2800 BEQ R20, 100_1509$ ; R20, 100_1509$ ; 010612 2804 100_30031$: A2C400D4 2804 LDL R22, 212(R4) ; R22, 212(R4) ; 010613 A3850120 2808 LDL R28, 288(R5) ; R28, 288(R5) 42DC0534 280C SUBQ R22, R28, R20 ; R22, R28, R20 E69FFFD3 2810 BEQ R20, 100_1509$ ; R20, 100_1509$ ; 010614 2814 100_30032$: A36400D4 2814 LDL R27, 212(R4) ; R27, 212(R4) ; 010615 A345038C 2818 LDL R26, 908(R5) ; R26, 908(R5) 437A0534 281C SUBQ R27, R26, R20 ; R27, R26, R20 JTDRIVER Machine Code Listing 2-DEC-1994 10:13:13 AMAC V2.1-13-2671 Page 158 V01H DEACFILT 2-DEC-1994 10:12:45 [EVERHART.JT]JTDRIVER_S2.MAR;120 E69FFFCF 2820 BEQ R20, 100_1509$ ; R20, 100_1509$ ; 010616 2824 100_30033$: A32400D4 2824 LDL R25, 212(R4) ; R25, 212(R4) ; 010617 A2E50390 2828 LDL R23, 912(R5) ; R23, 912(R5) 43370534 282C SUBQ R25, R23, R20 ; R25, R23, R20 E69FFFCB 2830 BEQ R20, 100_1509$ ; R20, 100_1509$ ; 010618 2834 100_30034$: A2C400D4 2834 LDL R22, 212(R4) ; R22, 212(R4) ; 010619 A3650394 2838 LDL R27, 916(R5) ; R27, 916(R5) 42DB0534 283C SUBQ R22, R27, R20 ; R22, R27, R20 E69FFFC7 2840 BEQ R20, 100_1509$ ; R20, 100_1509$ ; 010620 2844 100_30035$: A34400D4 2844 LDL R26, 212(R4) ; R26, 212(R4) ; 010621 A3050398 2848 LDL R24, 920(R5) ; R24, 920(R5) 43580534 284C SUBQ R26, R24, R20 ; R26, R24, R20 E69FFFC3 2850 BEQ R20, 100_1509$ ; R20, 100_1509$ ; 010622 2854 100_30036$: A2C60010 2854 LDL R22, 16(R6) ; R22, 16(R6) ; 010624 4AC0F176 2858 INSBL R22, 7, R22 ; R22, 7, R22 4AC71796 285C SRA R22, 56, R22 ; R22, 56, R22 42C03534 2860 SUBQ R22, 1, R20 ; R22, 1, R20 EE9FFFBE 2864 BLE R20, 100_1509$ ; R20, 100_1509$ ; 010625 2868 100_30037$: 43E5000A 2868 SEXTL R5, R10 ; R5, R10 ; 010629 43C1153E 286C SUBQ SP, 8, SP ; SP, 8, SP ; 010632 41A5141B 2870 ADDQ R13, 40, R27 ; R13, 40, R27 D3400066 2874 BSR R26, CLNUP ; R26, CLNUP 41450534 2878 SUBQ R10, R5, R20 ; R10, R5, R20 ; 010633 43C1141E 287C ADDQ SP, 8, SP ; SP, 8, SP ; 010632 E680004B 2880 BEQ R20, 100_99$ ; R20, 100_99$ ; 010634 43C1153E 2884 SUBQ SP, 8, SP ; SP, 8, SP ; 010637 B15E0004 2888 STL R10, 4(SP) ; R10, 4(SP) ; 010635 B0BE0000 288C STL R5, (SP) ; R5, (SP) ; 010637 A0A5023C 2890 LDL R5, 572(R5) ; R5, 572(R5) ; 010638 43C3153E 2894 SUBQ SP, 24, SP ; SP, 24, SP ; 010639 43FE0009 2898 SEXTL SP, R9 ; SP, R9 ; 010640 A3830078 289C LDL R28, 120(R3) ; R28, 120(R3) ; 010642 B3890000 28A0 STL R28, (R9) ; R28, (R9) A363007C 28A4 LDL R27, 124(R3) ; R27, 124(R3) ; 010643 B3690004 28A8 STL R27, 4(R9) ; R27, 4(R9) 236DFD20 28AC LDA R27, -736(R13) ; R27, -736(R13) ; 010659 A3430080 28B0 LDL R26, 128(R3) ; R26, 128(R3) ; 010644 B3490008 28B4 STL R26, 8(R9) ; R26, 8(R9) A3230084 28B8 LDL R25, 132(R3) ; R25, 132(R3) ; 010645 B329000C 28BC STL R25, 12(R9) ; R25, 12(R9) A3030088 28C0 LDL R24, 136(R3) ; R24, 136(R3) ; 010646 B3090010 28C4 STL R24, 16(R9) ; R24, 16(R9) A2E3008C 28C8 LDL R23, 140(R3) ; R23, 140(R3) ; 010647 B2E90014 28CC STL R23, 20(R9) ; R23, 20(R9) A2C30060 28D0 LDL R22, 96(R3) ; R22, 96(R3) ; 010657 43C3153E 28D4 SUBQ SP, 24, SP ; SP, 24, SP ; 010659 B13E0014 28D8 STL R9, 20(SP) ; R9, 20(SP) ; 010658 B11E0010 28DC STL R8, 16(SP) ; R8, 16(SP) B0FE000C 28E0 STL R7, 12(SP) ; R7, 12(SP) 46C7F001 28E4 AND R22, 63, R1 ; R22, 63, R1 ; 010657 B0DE0008 28E8 STL R6, 8(SP) ; R6, 8(SP) ; 010658 D35FF630 28EC BSR R26, GETJTUCB ; R26, GETJTUCB ; 010659 JTDRIVER Machine Code Listing 2-DEC-1994 10:13:13 AMAC V2.1-13-2671 Page 159 V01H DEACFILT 2-DEC-1994 10:12:45 [EVERHART.JT]JTDRIVER_S2.MAR;120 47E09419 28F0 BIS R31, 4, R25 ; R31, 4, R25 ; 010674 43C1141E 28F4 ADDQ SP, 8, SP ; SP, 8, SP ; 010659 20E00380 28F8 LDA R7, 896(R0) ; R7, 896(R0) ; 010662 F8000032 28FC BGE R0, 100_199$ ; R0, 100_199$ ; 010661 F8E00031 2900 BGE R7, 100_199$ ; R7, 100_199$ ; 010663 40E11007 2904 ADDL R7, 8, R7 ; R7, 8, R7 ; 010667 4027005A 2908 S4ADDL R1, R7, R26 ; R1, R7, R26 ; 010668 A76DFF98 290C LDQ R27, -104(R13) ; R27, -104(R13) ; 010674 43E60013 2910 SEXTL R6, R19 ; R6, R19 ; 010670 A11A0000 2914 LDL R8, (R26) ; R8, (R26) ; 010668 A74DFF90 2918 LDQ R26, -112(R13) ; R26, -112(R13) ; 010674 43E50012 291C SEXTL R5, R18 ; R5, R18 ; 010671 43E40011 2920 SEXTL R4, R17 ; R4, R17 ; 010672 43E30010 2924 SEXTL R3, R16 ; R3, R16 ; 010673 43C1153E 2928 SUBQ SP, 8, SP ; SP, 8, SP ; 010674 47E80417 292C MOV R8, R23 ; R8, R23 43E03418 2930 ADDQ R31, 1, R24 ; R31, 1, R24 6B5A4000 2934 JSR R26, R26 ; R26, R26 A0DE0008 2938 LDL R6, 8(SP) ; R6, 8(SP) ; 010675 A0FE000C 293C LDL R7, 12(SP) ; R7, 12(SP) A11E0010 2940 LDL R8, 16(SP) ; R8, 16(SP) A13E0014 2944 LDL R9, 20(SP) ; R9, 20(SP) 43C3141E 2948 ADDQ SP, 24, SP ; SP, 24, SP 294C 100_1199$: ; 010681 47E05410 294C BIS R31, 2, R16 ; R31, 2, R16 ; 010684 47E10418 2950 MOV R1, R24 ; R1, R24 47E00419 2954 MOV R0, R25 ; R0, R25 0000000F 2958 CALL_PAL 15 ; 15 A0BE0018 295C LDL R5, 24(SP) ; R5, 24(SP) ; 010686 47F90400 2960 MOV R25, R0 ; R25, R0 ; 010684 A15E001C 2964 LDL R10, 28(SP) ; R10, 28(SP) ; 010687 43C4141E 2968 ADDQ SP, 32, SP ; SP, 32, SP A1260000 296C LDL R9, (R6) ; R9, (R6) ; 010688 47F80401 2970 MOV R24, R1 ; R24, R1 ; 010684 B1460000 2974 STL R10, (R6) ; R10, (R6) ; 010689 A2C9007C 2978 LDL R22, 124(R9) ; R22, 124(R9) ; 010692 42C03136 297C SUBL R22, 1, R22 ; R22, 1, R22 B2C9007C 2980 STL R22, 124(R9) ; R22, 124(R9) FEC00002 2984 BGT R22, 100_4$ ; R22, 100_4$ ; 010693 47E0341C 2988 BIS R31, 1, R28 ; R31, 1, R28 ; 010694 B389007C 298C STL R28, 124(R9) ; R28, 124(R9) 2990 100_4$: ; 010695 A34A007C 2990 LDL R26, 124(R10) ; R26, 124(R10) 4340301A 2994 ADDL R26, 1, R26 ; R26, 1, R26 B34A007C 2998 STL R26, 124(R10) ; R26, 124(R10) A01E0000 299C LDL R0, (SP) ; R0, (SP) ; 010703 A0BE0004 29A0 LDL R5, 4(SP) ; R5, 4(SP) 43C1141E 29A4 ADDQ SP, 8, SP ; SP, 8, SP 201F0AC8 29A8 LDA R0, 2760(R31) ; R0, 2760(R31) ; 010705 C3FFFF72 29AC BR $L30 ; $L30 ; 010706 29B0 100_99$: ; 010707 A01E0000 29B0 LDL R0, (SP) ; R0, (SP) ; 010708 41AE141B 29B4 ADDQ R13, 112, R27 ; R13, 112, R27 ; 010709 A0BE0004 29B8 LDL R5, 4(SP) ; R5, 4(SP) ; 010708 43C1141E 29BC ADDQ SP, 8, SP ; SP, 8, SP D3400327 29C0 BSR R26, POPOUT ; R26, POPOUT ; 010709 C3FFFF6C 29C4 BR $L30 ; $L30 ; 010710 JTDRIVER Machine Code Listing 2-DEC-1994 10:13:13 AMAC V2.1-13-2671 Page 160 V01H DEACFILT 2-DEC-1994 10:12:45 [EVERHART.JT]JTDRIVER_S2.MAR;120 29C8 100_199$: ; 010677 A74DFFF0 29C8 LDQ R26, -16(R13) ; R26, -16(R13) ; 010680 47E21400 29CC BIS R31, 16, R0 ; R31, 16, R0 ; 010679 A0DE0000 29D0 LDL R6, (SP) ; R6, (SP) ; 010678 47FF0401 29D4 CLR R1 ; R1 ; 010680 A0FE0004 29D8 LDL R7, 4(SP) ; R7, 4(SP) ; 010678 43E50011 29DC SEXTL R5, R17 ; R5, R17 ; 010680 A11E0008 29E0 LDL R8, 8(SP) ; R8, 8(SP) ; 010678 43E30010 29E4 SEXTL R3, R16 ; R3, R16 ; 010680 A13E000C 29E8 LDL R9, 12(SP) ; R9, 12(SP) ; 010678 43C2141E 29EC ADDQ SP, 16, SP ; SP, 16, SP B0030050 29F0 STL R0, 80(R3) ; R0, 80(R3) ; 010680 47E05419 29F4 BIS R31, 2, R25 ; R31, 2, R25 B0230054 29F8 STL R1, 84(R3) ; R1, 84(R3) 43C1153E 29FC SUBQ SP, 8, SP ; SP, 8, SP A76DFFF8 2A00 LDQ R27, -8(R13) ; R27, -8(R13) 6B5A4000 2A04 JSR R26, R26 ; R26, R26 43C1141E 2A08 ADDQ SP, 8, SP ; SP, 8, SP C3FFFF5A 2A0C BR $L30 ; $L30 Routine Size: 816 bytes, Routine Base: $$$115_DRIVER + 26E0 2A10 CLNUP: ; 010712 43CC153E 2A10 SUBQ SP, 96, SP ; SP, 96, SP B75E0008 2A14 STQ R26, 8(SP) ; R26, 8(SP) B45E0010 2A18 STQ R2, 16(SP) ; R2, 16(SP) B47E0018 2A1C STQ R3, 24(SP) ; R3, 24(SP) B49E0020 2A20 STQ R4, 32(SP) ; R4, 32(SP) B4BE0028 2A24 STQ R5, 40(SP) ; R5, 40(SP) B4DE0030 2A28 STQ R6, 48(SP) ; R6, 48(SP) B4FE0038 2A2C STQ R7, 56(SP) ; R7, 56(SP) B51E0040 2A30 STQ R8, 64(SP) ; R8, 64(SP) B53E0048 2A34 STQ R9, 72(SP) ; R9, 72(SP) B57E0050 2A38 STQ R11, 80(SP) ; R11, 80(SP) B5BE0058 2A3C STQ R13, 88(SP) ; R13, 88(SP) 47FB040D 2A40 MOV R27, R13 ; R27, R13 2A44 $L31: 43C2153E 2A44 SUBQ SP, 16, SP ; SP, 16, SP ; 010717 236D0190 2A48 LDA R27, 400(R13) ; R27, 400(R13) B03E000C 2A4C STL R1, 12(SP) ; R1, 12(SP) ; 010715 B01E0008 2A50 STL R0, 8(SP) ; R0, 8(SP) D3400A66 2A54 BSR R26, FINDLDT ; R26, FINDLDT ; 010717 43C1141E 2A58 ADDQ SP, 8, SP ; SP, 8, SP E4000030 2A5C BEQ R0, 101_999$ ; R0, 101_999$ ; 010719 2A60 101_30038$: A78DFD38 2A60 LDQ R28, -712(R13) ; R28, -712(R13) ; 010722 43E0000B 2A64 SEXTL R0, R11 ; R0, R11 ; 010720 A62DFE98 2A68 LDQ R17, -360(R13) ; R17, -360(R13) ; 010730 A36B001C 2A6C LDL R27, 28(R11) ; R27, 28(R11) ; 010724 A09C0000 2A70 LDL R4, (R28) ; R4, (R28) ; 010722 B3640074 2A74 STL R27, 116(R4) ; R27, 116(R4) ; 010724 A34B000C 2A78 LDL R26, 12(R11) ; R26, 12(R11) ; 010728 B3440100 2A7C STL R26, 256(R4) ; R26, 256(R4) A30B0010 2A80 LDL R24, 16(R11) ; R24, 16(R11) ; 010729 A74DFD40 2A84 LDQ R26, -704(R13) ; R26, -704(R13) ; 010732 B3040104 2A88 STL R24, 260(R4) ; R24, 260(R4) ; 010729 A2CB000C 2A8C LDL R22, 12(R11) ; R22, 12(R11) ; 010730 JTDRIVER Machine Code Listing 2-DEC-1994 10:13:13 AMAC V2.1-13-2671 Page 161 V01H CLNUP 2-DEC-1994 10:12:45 [EVERHART.JT]JTDRIVER_S2.MAR;120 B2D10000 2A90 STL R22, (R17) ; R22, (R17) A36B0010 2A94 LDL R27, 16(R11) ; R27, 16(R11) ; 010731 B3710004 2A98 STL R27, 4(R17) ; R27, 4(R17) A09A0000 2A9C LDL R4, (R26) ; R4, (R26) ; 010732 A32B0014 2AA0 LDL R25, 20(R11) ; R25, 20(R11) ; 010733 B3240280 2AA4 STL R25, 640(R4) ; R25, 640(R4) A2EB0018 2AA8 LDL R23, 24(R11) ; R23, 24(R11) ; 010734 B2E40284 2AAC STL R23, 644(R4) ; R23, 644(R4) A38B000C 2AB0 LDL R28, 12(R11) ; R28, 12(R11) ; 010735 B3840000 2AB4 STL R28, (R4) ; R28, (R4) A34B0010 2AB8 LDL R26, 16(R11) ; R26, 16(R11) ; 010736 B3440004 2ABC STL R26, 4(R4) ; R26, 4(R4) A30B0038 2AC0 LDL R24, 56(R11) ; R24, 56(R11) ; 010739 A2E60000 2AC4 LDL R23, (R6) ; R23, (R6) 43170530 2AC8 SUBQ R24, R23, R16 ; R24, R23, R16 E6000001 2ACC BEQ R16, 101_1$ ; R16, 101_1$ ; 010740 A14B0038 2AD0 LDL R10, 56(R11) ; R10, 56(R11) ; 010741 2AD4 101_1$: ; 010742 43C1153E 2AD4 SUBQ SP, 8, SP ; SP, 8, SP ; 010745 41A2141B 2AD8 ADDQ R13, 16, R27 ; R13, 16, R27 B15E0004 2ADC STL R10, 4(SP) ; R10, 4(SP) ; 010744 D3400023 2AE0 BSR R26, UNDOID ; R26, UNDOID ; 010745 A15E0004 2AE4 LDL R10, 4(SP) ; R10, 4(SP) ; 010748 236D0190 2AE8 LDA R27, 400(R13) ; R27, 400(R13) ; 010753 D3400A40 2AEC BSR R26, FINDLDT ; R26, FINDLDT 400B0530 2AF0 SUBQ R0, R11, R16 ; R0, R11, R16 ; 010756 43C1141E 2AF4 ADDQ SP, 8, SP ; SP, 8, SP ; 010753 F6000009 2AF8 BNE R16, 101_999$ ; R16, 101_999$ ; 010757 A2CB0000 2AFC LDL R22, (R11) ; R22, (R11) ; 010760 43EB0000 2B00 SEXTL R11, R0 ; R11, R0 ; 010763 A74DFDE8 2B04 LDQ R26, -536(R13) ; R26, -536(R13) ; 010764 A76DFDF0 2B08 LDQ R27, -528(R13) ; R27, -528(R13) B2C10000 2B0C STL R22, (R1) ; R22, (R1) ; 010760 A02B0034 2B10 LDL R1, 52(R11) ; R1, 52(R11) ; 010762 43C1153E 2B14 SUBQ SP, 8, SP ; SP, 8, SP ; 010764 6B5A4000 2B18 JSR R26, R26 ; R26, R26 43C1141E 2B1C ADDQ SP, 8, SP ; SP, 8, SP 2B20 101_999$: ; 010767 A01E0000 2B20 LDL R0, (SP) ; R0, (SP) ; 010768 A03E0004 2B24 LDL R1, 4(SP) ; R1, 4(SP) 43C1141E 2B28 ADDQ SP, 8, SP ; SP, 8, SP 2B2C $L32: ; 010769 A79E0008 2B2C LDQ R28, 8(SP) ; R28, 8(SP) A45E0010 2B30 LDQ R2, 16(SP) ; R2, 16(SP) A47E0018 2B34 LDQ R3, 24(SP) ; R3, 24(SP) A49E0020 2B38 LDQ R4, 32(SP) ; R4, 32(SP) A4BE0028 2B3C LDQ R5, 40(SP) ; R5, 40(SP) A4DE0030 2B40 LDQ R6, 48(SP) ; R6, 48(SP) A4FE0038 2B44 LDQ R7, 56(SP) ; R7, 56(SP) A51E0040 2B48 LDQ R8, 64(SP) ; R8, 64(SP) A53E0048 2B4C LDQ R9, 72(SP) ; R9, 72(SP) A57E0050 2B50 LDQ R11, 80(SP) ; R11, 80(SP) A5BE0058 2B54 LDQ R13, 88(SP) ; R13, 88(SP) 43CC141E 2B58 ADDQ SP, 96, SP ; SP, 96, SP 6BFC8001 2B5C RET R28 ; R28 2B60 $L105: ; 010719 C3FFFFEF 2B60 BR 101_999$ ; 101_999$ JTDRIVER Machine Code Listing 2-DEC-1994 10:13:13 AMAC V2.1-13-2671 Page 162 V01H CLNUP 2-DEC-1994 10:12:45 [EVERHART.JT]JTDRIVER_S2.MAR;120 47FF041F 2B64 NOP ; 47FF041F 2B68 NOP ; 47FF041F 2B6C NOP ; Routine Size: 352 bytes, Routine Base: $$$115_DRIVER + 2A10 2B70 UNDOID: ; 010771 43CC153E 2B70 SUBQ SP, 96, SP ; SP, 96, SP B75E0000 2B74 STQ R26, (SP) ; R26, (SP) B45E0008 2B78 STQ R2, 8(SP) ; R2, 8(SP) B47E0010 2B7C STQ R3, 16(SP) ; R3, 16(SP) B49E0018 2B80 STQ R4, 24(SP) ; R4, 24(SP) B4BE0020 2B84 STQ R5, 32(SP) ; R5, 32(SP) B4DE0028 2B88 STQ R6, 40(SP) ; R6, 40(SP) B4FE0030 2B8C STQ R7, 48(SP) ; R7, 48(SP) B51E0038 2B90 STQ R8, 56(SP) ; R8, 56(SP) B53E0040 2B94 STQ R9, 64(SP) ; R9, 64(SP) B55E0048 2B98 STQ R10, 72(SP) ; R10, 72(SP) B57E0050 2B9C STQ R11, 80(SP) ; R11, 80(SP) B5BE0058 2BA0 STQ R13, 88(SP) ; R13, 88(SP) 47FB040D 2BA4 MOV R27, R13 ; R27, R13 2BA8 $L33: 43C1153E 2BA8 SUBQ SP, 8, SP ; SP, 8, SP ; 010772 A72DFCD0 2BAC LDQ R25, -816(R13) ; R25, -816(R13) ; 010775 4167940A 2BB0 ADDQ R11, 60, R10 ; R11, 60, R10 ; 010773 B03E0004 2BB4 STL R1, 4(SP) ; R1, 4(SP) ; 010772 B01E0000 2BB8 STL R0, (SP) ; R0, (SP) A34B0044 2BBC LDL R26, 68(R11) ; R26, 68(R11) ; 010775 A3190078 2BC0 LDL R24, 120(R25) ; R24, 120(R25) 43580530 2BC4 SUBQ R26, R24, R16 ; R26, R24, R16 F6000005 2BC8 BNE R16, 102_999$ ; R16, 102_999$ ; 010776 2BCC 102_30039$: 4141940A 2BCC ADDQ R10, 12, R10 ; R10, 12, R10 ; 010777 2BD0 102_1$: ; 010778 2D2A0000 2BD0 LDQ_U R9, (R10) ; R9, (R10) 492A00C9 2BD4 EXTBL R9, R10, R9 ; R9, R10, R9 4140340A 2BD8 ADDQ R10, 1, R10 ; R10, 1, R10 F5200014 2BDC BNE R9, 102_30040$ ; R9, 102_30040$ ; 010779 2BE0 102_999$: ; 010837 A01E0000 2BE0 LDL R0, (SP) ; R0, (SP) ; 010838 A03E0004 2BE4 LDL R1, 4(SP) ; R1, 4(SP) 43C1141E 2BE8 ADDQ SP, 8, SP ; SP, 8, SP 2BEC $L34: ; 010839 A79E0000 2BEC LDQ R28, (SP) ; R28, (SP) A45E0008 2BF0 LDQ R2, 8(SP) ; R2, 8(SP) A47E0010 2BF4 LDQ R3, 16(SP) ; R3, 16(SP) A49E0018 2BF8 LDQ R4, 24(SP) ; R4, 24(SP) A4BE0020 2BFC LDQ R5, 32(SP) ; R5, 32(SP) A4DE0028 2C00 LDQ R6, 40(SP) ; R6, 40(SP) A4FE0030 2C04 LDQ R7, 48(SP) ; R7, 48(SP) A51E0038 2C08 LDQ R8, 56(SP) ; R8, 56(SP) A53E0040 2C0C LDQ R9, 64(SP) ; R9, 64(SP) A55E0048 2C10 LDQ R10, 72(SP) ; R10, 72(SP) A57E0050 2C14 LDQ R11, 80(SP) ; R11, 80(SP) A5BE0058 2C18 LDQ R13, 88(SP) ; R13, 88(SP) 43CC141E 2C1C ADDQ SP, 96, SP ; SP, 96, SP 6BFC8001 2C20 RET R28 ; R28 JTDRIVER Machine Code Listing 2-DEC-1994 10:13:13 AMAC V2.1-13-2671 Page 163 V01H UNDOID 2-DEC-1994 10:12:45 [EVERHART.JT]JTDRIVER_S2.MAR;120 2FFE0000 2C24 LNOP ; 2C28 $L106: ; 010776 C3FFFFED 2C28 BR 102_999$ ; 102_999$ 47FF041F 2C2C NOP ; 2C30 102_30040$: ; 010779 41203530 2C30 SUBQ R9, 1, R16 ; R9, 1, R16 ; 010780 E61FFFE6 2C34 BEQ R16, 102_1$ ; R16, 102_1$ ; 010781 41205530 2C38 SUBQ R9, 2, R16 ; R9, 2, R16 ; 010782 E61FFFE4 2C3C BEQ R16, 102_1$ ; R16, 102_1$ ; 010783 41207530 2C40 SUBQ R9, 3, R16 ; R9, 3, R16 ; 010784 F600000E 2C44 BNE R16, 102_2$ ; R16, 102_2$ ; 010785 2F4A0000 2C48 LDQ_U R26, (R10) ; R26, (R10) ; 010787 2CEA0001 2C4C LDQ_U R7, 1(R10) ; R7, 1(R10) ; 010788 4B4A00DA 2C50 EXTBL R26, R10, R26 ; R26, R10, R26 ; 010787 4140340A 2C54 ADDQ R10, 1, R10 ; R10, 1, R10 48EA04C7 2C58 EXTLL R7, R10, R7 ; R7, R10, R7 ; 010788 2F0A0003 2C5C LDQ_U R24, 3(R10) ; R24, 3(R10) 4B471728 2C60 SLL R26, 56, R8 ; R26, 56, R8 ; 010787 4B0A0D59 2C64 EXTLH R24, R10, R25 ; R24, R10, R25 ; 010788 49071788 2C68 SRA R8, 56, R8 ; R8, 56, R8 ; 010787 44F90407 2C6C BIS R7, R25, R7 ; R7, R25, R7 ; 010788 43E70007 2C70 SEXTL R7, R7 ; R7, R7 4140940A 2C74 ADDQ R10, 4, R10 ; R10, 4, R10 C3FFFFD5 2C78 BR 102_1$ ; 102_1$ ; 010789 47FF041F 2C7C NOP ; 2C80 102_2$: ; 010790 41209530 2C80 SUBQ R9, 4, R16 ; R9, 4, R16 ; 010791 F600001E 2C84 BNE R16, 102_3$ ; R16, 102_3$ ; 010792 2C0A0000 2C88 LDQ_U R0, (R10) ; R0, (R10) ; 010793 2F8A0003 2C8C LDQ_U R28, 3(R10) ; R28, 3(R10) 2C2A0004 2C90 LDQ_U R1, 4(R10) ; R1, 4(R10) ; 010794 480A04C0 2C94 EXTLL R0, R10, R0 ; R0, R10, R0 ; 010793 4B8A0D56 2C98 EXTLH R28, R10, R22 ; R28, R10, R22 4140940A 2C9C ADDQ R10, 4, R10 ; R10, 4, R10 482A04C1 2CA0 EXTLL R1, R10, R1 ; R1, R10, R1 ; 010794 2F4A0003 2CA4 LDQ_U R26, 3(R10) ; R26, 3(R10) 2C4A0004 2CA8 LDQ_U R2, 4(R10) ; R2, 4(R10) ; 010795 44160400 2CAC BIS R0, R22, R0 ; R0, R22, R0 ; 010793 43E00000 2CB0 SEXTL R0, R0 ; R0, R0 4B4A0D5B 2CB4 EXTLH R26, R10, R27 ; R26, R10, R27 ; 010794 4140940A 2CB8 ADDQ R10, 4, R10 ; R10, 4, R10 484A04C2 2CBC EXTLL R2, R10, R2 ; R2, R10, R2 ; 010795 2F0A0003 2CC0 LDQ_U R24, 3(R10) ; R24, 3(R10) 443B0401 2CC4 BIS R1, R27, R1 ; R1, R27, R1 ; 010794 2C6A0004 2CC8 LDQ_U R3, 4(R10) ; R3, 4(R10) ; 010796 43E10001 2CCC SEXTL R1, R1 ; R1, R1 ; 010794 4B0A0D59 2CD0 EXTLH R24, R10, R25 ; R24, R10, R25 ; 010795 4140940A 2CD4 ADDQ R10, 4, R10 ; R10, 4, R10 486A04C3 2CD8 EXTLL R3, R10, R3 ; R3, R10, R3 ; 010796 2ECA0003 2CDC LDQ_U R22, 3(R10) ; R22, 3(R10) 44590402 2CE0 BIS R2, R25, R2 ; R2, R25, R2 ; 010795 43E20002 2CE4 SEXTL R2, R2 ; R2, R2 4ACA0D57 2CE8 EXTLH R22, R10, R23 ; R22, R10, R23 ; 010796 4140940A 2CEC ADDQ R10, 4, R10 ; R10, 4, R10 44770403 2CF0 BIS R3, R23, R3 ; R3, R23, R3 43E30003 2CF4 SEXTL R3, R3 ; R3, R3 C3FFFFB5 2CF8 BR 102_1$ ; 102_1$ ; 010797 JTDRIVER Machine Code Listing 2-DEC-1994 10:13:13 AMAC V2.1-13-2671 Page 164 V01H UNDOID 2-DEC-1994 10:12:45 [EVERHART.JT]JTDRIVER_S2.MAR;120 47FF041F 2CFC NOP ; 2D00 102_3$: ; 010798 4120B530 2D00 SUBQ R9, 5, R16 ; R9, 5, R16 F600002E 2D04 BNE R16, 102_4$ ; R16, 102_4$ ; 010799 2C0A0000 2D08 LDQ_U R0, (R10) ; R0, (R10) ; 010803 2F4A0003 2D0C LDQ_U R26, 3(R10) ; R26, 3(R10) A04B0404 2D10 LDL R2, 1028(R11) ; R2, 1028(R11) ; 010807 480A04C0 2D14 EXTLL R0, R10, R0 ; R0, R10, R0 ; 010803 4B4A0D5B 2D18 EXTLH R26, R10, R27 ; R26, R10, R27 A06B0408 2D1C LDL R3, 1032(R11) ; R3, 1032(R11) ; 010808 4140940A 2D20 ADDQ R10, 4, R10 ; R10, 4, R10 ; 010803 441B0400 2D24 BIS R0, R27, R0 ; R0, R27, R0 2C2A0000 2D28 LDQ_U R1, (R10) ; R1, (R10) ; 010805 43E00000 2D2C SEXTL R0, R0 ; R0, R0 ; 010803 2F0A0003 2D30 LDQ_U R24, 3(R10) ; R24, 3(R10) ; 010805 43E00007 2D34 SEXTL R0, R7 ; R0, R7 ; 010804 43E70010 2D38 SEXTL R7, R16 ; R7, R16 ; 010819 482A04C1 2D3C EXTLL R1, R10, R1 ; R1, R10, R1 ; 010805 4B0A0D59 2D40 EXTLH R24, R10, R25 ; R24, R10, R25 4140940A 2D44 ADDQ R10, 4, R10 ; R10, 4, R10 44390401 2D48 BIS R1, R25, R1 ; R1, R25, R1 2C4A0000 2D4C LDQ_U R2, (R10) ; R2, (R10) ; 010813 2F8A0003 2D50 LDQ_U R28, 3(R10) ; R28, 3(R10) 43E10001 2D54 SEXTL R1, R1 ; R1, R1 ; 010805 2C6A0004 2D58 LDQ_U R3, 4(R10) ; R3, 4(R10) ; 010814 43E00008 2D5C SEXTL R0, R8 ; R0, R8 ; 010806 484A04C2 2D60 EXTLL R2, R10, R2 ; R2, R10, R2 ; 010813 4B8A0D56 2D64 EXTLH R28, R10, R22 ; R28, R10, R22 4140940A 2D68 ADDQ R10, 4, R10 ; R10, 4, R10 486A04C3 2D6C EXTLL R3, R10, R3 ; R3, R10, R3 ; 010814 2F4A0003 2D70 LDQ_U R26, 3(R10) ; R26, 3(R10) 44560402 2D74 BIS R2, R22, R2 ; R2, R22, R2 ; 010813 43E20002 2D78 SEXTL R2, R2 ; R2, R2 4B4A0D5B 2D7C EXTLH R26, R10, R27 ; R26, R10, R27 ; 010814 4140940A 2D80 ADDQ R10, 4, R10 ; R10, 4, R10 447B0403 2D84 BIS R3, R27, R3 ; R3, R27, R3 43E30003 2D88 SEXTL R3, R3 ; R3, R3 E600000C 2D8C BEQ R16, 102_4$ ; R16, 102_4$ ; 010820 47FF0413 2D90 CLR R19 ; R19 ; 010822 47FF0414 2D94 CLR R20 ; R20 41421532 2D98 SUBQ R10, 16, R18 ; R10, 16, R18 ; 010823 47FF0410 2D9C CLR R16 ; R16 ; 010824 47FF0411 2DA0 CLR R17 ; R17 43C1153E 2DA4 SUBQ SP, 8, SP ; SP, 8, SP ; 010825 47E0B419 2DA8 BIS R31, 5, R25 ; R31, 5, R25 236D0398 2DAC LDA R27, 920(R13) ; R27, 920(R13) D3400EBF 2DB0 BSR R26, REVOKID ; R26, REVOKID 43C1141E 2DB4 ADDQ SP, 8, SP ; SP, 8, SP C3FFFF85 2DB8 BR 102_1$ ; 102_1$ ; 010826 47FF041F 2DBC NOP ; 2DC0 102_4$: ; 010827 4120D530 2DC0 SUBQ R9, 6, R16 ; R9, 6, R16 F6000004 2DC4 BNE R16, 102_5$ ; R16, 102_5$ ; 010828 2D2A0000 2DC8 LDQ_U R9, (R10) ; R9, (R10) ; 010829 492A00C9 2DCC EXTBL R9, R10, R9 ; R9, R10, R9 4149000A 2DD0 ADDL R10, R9, R10 ; R10, R9, R10 ; 010830 C3FFFF7E 2DD4 BR 102_1$ ; 102_1$ ; 010831 JTDRIVER Machine Code Listing 2-DEC-1994 10:13:13 AMAC V2.1-13-2671 Page 165 V01H UNDOID 2-DEC-1994 10:12:45 [EVERHART.JT]JTDRIVER_S2.MAR;120 2DD8 102_5$: ; 010832 4120F530 2DD8 SUBQ R9, 7, R16 ; R9, 7, R16 F61FFF80 2DDC BNE R16, 102_999$ ; R16, 102_999$ ; 010833 2D2A0000 2DE0 LDQ_U R9, (R10) ; R9, (R10) ; 010834 492A00C9 2DE4 EXTBL R9, R10, R9 ; R9, R10, R9 4149000A 2DE8 ADDL R10, R9, R10 ; R10, R9, R10 ; 010835 C3FFFF78 2DEC BR 102_1$ ; 102_1$ ; 010836 Routine Size: 640 bytes, Routine Base: $$$115_DRIVER + 2B70 2DF0 DELFILT: ; 010844 43D2153E 2DF0 SUBQ SP, 144, SP ; SP, 144, SP B77E0000 2DF4 STQ R27, (SP) ; R27, (SP) B75E0010 2DF8 STQ R26, 16(SP) ; R26, 16(SP) B45E0018 2DFC STQ R2, 24(SP) ; R2, 24(SP) B47E0020 2E00 STQ R3, 32(SP) ; R3, 32(SP) B49E0028 2E04 STQ R4, 40(SP) ; R4, 40(SP) B4BE0030 2E08 STQ R5, 48(SP) ; R5, 48(SP) B4DE0038 2E0C STQ R6, 56(SP) ; R6, 56(SP) B4FE0040 2E10 STQ R7, 64(SP) ; R7, 64(SP) B51E0048 2E14 STQ R8, 72(SP) ; R8, 72(SP) B53E0050 2E18 STQ R9, 80(SP) ; R9, 80(SP) B55E0058 2E1C STQ R10, 88(SP) ; R10, 88(SP) B57E0060 2E20 STQ R11, 96(SP) ; R11, 96(SP) B59E0068 2E24 STQ R12, 104(SP) ; R12, 104(SP) B5BE0070 2E28 STQ R13, 112(SP) ; R13, 112(SP) 47FB040D 2E2C MOV R27, R13 ; R27, R13 B5DE0078 2E30 STQ R14, 120(SP) ; R14, 120(SP) B5FE0080 2E34 STQ R15, 128(SP) ; R15, 128(SP) B7BE0088 2E38 STQ FP, 136(SP) ; FP, 136(SP) 47FE041D 2E3C MOV SP, FP ; SP, FP B7FE0008 2E40 STQ R31, 8(SP) ; R31, 8(SP) 2E44 $L35: 43F30006 2E44 SEXTL R19, R6 ; R19, R6 43E60014 2E48 SEXTL R6, R20 ; R6, R20 ; 010846 43F00003 2E4C SEXTL R16, R3 ; R16, R3 ; 010844 43F10004 2E50 SEXTL R17, R4 ; R17, R4 43F20005 2E54 SEXTL R18, R5 ; R18, R5 EE800005 2E58 BLE R20, 103_2$ ; R20, 103_2$ ; 010847 A3660010 2E5C LDL R27, 16(R6) ; R27, 16(R6) ; 010848 4B60F17B 2E60 INSBL R27, 7, R27 ; R27, 7, R27 4B67179B 2E64 SRA R27, 56, R27 ; R27, 56, R27 43603534 2E68 SUBQ R27, 1, R20 ; R27, 1, R20 FE800016 2E6C BGT R20, 103_1$ ; R20, 103_1$ ; 010849 2E70 103_2$: ; 010850 41A7141B 2E70 ADDQ R13, 56, R27 ; R13, 56, R27 D3400206 2E74 BSR R26, PORS ; R26, PORS 2E78 $L36: ; 010851 47FD041E 2E78 MOV FP, SP ; FP, SP A79E0010 2E7C LDQ R28, 16(SP) ; R28, 16(SP) A45E0018 2E80 LDQ R2, 24(SP) ; R2, 24(SP) A47E0020 2E84 LDQ R3, 32(SP) ; R3, 32(SP) A49E0028 2E88 LDQ R4, 40(SP) ; R4, 40(SP) A4BE0030 2E8C LDQ R5, 48(SP) ; R5, 48(SP) A4DE0038 2E90 LDQ R6, 56(SP) ; R6, 56(SP) A4FE0040 2E94 LDQ R7, 64(SP) ; R7, 64(SP) A51E0048 2E98 LDQ R8, 72(SP) ; R8, 72(SP) JTDRIVER Machine Code Listing 2-DEC-1994 10:13:13 AMAC V2.1-13-2671 Page 166 V01H DELFILT 2-DEC-1994 10:12:45 [EVERHART.JT]JTDRIVER_S2.MAR;120 A53E0050 2E9C LDQ R9, 80(SP) ; R9, 80(SP) A55E0058 2EA0 LDQ R10, 88(SP) ; R10, 88(SP) A57E0060 2EA4 LDQ R11, 96(SP) ; R11, 96(SP) A59E0068 2EA8 LDQ R12, 104(SP) ; R12, 104(SP) A5BE0070 2EAC LDQ R13, 112(SP) ; R13, 112(SP) A5DE0078 2EB0 LDQ R14, 120(SP) ; R14, 120(SP) A5FE0080 2EB4 LDQ R15, 128(SP) ; R15, 128(SP) A7BE0088 2EB8 LDQ FP, 136(SP) ; FP, 136(SP) 43D2141E 2EBC ADDQ SP, 144, SP ; SP, 144, SP 6BFC8001 2EC0 RET R28 ; R28 47FF041F 2EC4 NOP ; 2EC8 103_1$: ; 010852 43C2153E 2EC8 SUBQ SP, 16, SP ; SP, 16, SP ; 010856 236DFCD8 2ECC LDA R27, -808(R13) ; R27, -808(R13) B0BE000C 2ED0 STL R5, 12(SP) ; R5, 12(SP) ; 010854 B01E0008 2ED4 STL R0, 8(SP) ; R0, 8(SP) D35FF4B5 2ED8 BSR R26, GETJTUCB ; R26, GETJTUCB ; 010856 43C1141E 2EDC ADDQ SP, 8, SP ; SP, 8, SP E8000007 2EE0 BLT R0, 103_509$ ; R0, 103_509$ ; 010858 47FF041F 2EE4 NOP ; 2EE8 103_1509$: ; 010859 A01E0000 2EE8 LDL R0, (SP) ; R0, (SP) 41A5141B 2EEC ADDQ R13, 40, R27 ; R13, 40, R27 ; 010860 A0BE0004 2EF0 LDL R5, 4(SP) ; R5, 4(SP) ; 010859 43C1141E 2EF4 ADDQ SP, 8, SP ; SP, 8, SP D34001D9 2EF8 BSR R26, POPOUT ; R26, POPOUT ; 010860 C3FFFFDE 2EFC BR $L36 ; $L36 ; 010861 2F00 103_509$: ; 010862 B0A0023C 2F00 STL R5, 572(R0) ; R5, 572(R0) ; 010864 43E00005 2F04 SEXTL R0, R5 ; R0, R5 ; 010865 A6ADFE18 2F08 LDQ R21, -488(R13) ; R21, -488(R13) ; 011053 A3450128 2F0C LDL R26, 296(R5) ; R26, 296(R5) ; 010867 47501014 2F10 AND R26, 128, R20 ; R26, 128, R20 E69FFFF4 2F14 BEQ R20, 103_1509$ ; R20, 103_1509$ ; 010868 2F18 103_30041$: A32400D4 2F18 LDL R25, 212(R4) ; R25, 212(R4) ; 010870 A3050130 2F1C LDL R24, 304(R5) ; R24, 304(R5) 43380534 2F20 SUBQ R25, R24, R20 ; R25, R24, R20 E69FFFF0 2F24 BEQ R20, 103_1509$ ; R20, 103_1509$ ; 010871 2F28 103_30042$: A2E400D4 2F28 LDL R23, 212(R4) ; R23, 212(R4) ; 010872 A2C50118 2F2C LDL R22, 280(R5) ; R22, 280(R5) 42F60534 2F30 SUBQ R23, R22, R20 ; R23, R22, R20 E69FFFEC 2F34 BEQ R20, 103_1509$ ; R20, 103_1509$ ; 010873 2F38 103_30043$: A38400D4 2F38 LDL R28, 212(R4) ; R28, 212(R4) ; 010874 A3650120 2F3C LDL R27, 288(R5) ; R27, 288(R5) 439B0534 2F40 SUBQ R28, R27, R20 ; R28, R27, R20 E69FFFE8 2F44 BEQ R20, 103_1509$ ; R20, 103_1509$ ; 010875 2F48 103_30044$: A34400D4 2F48 LDL R26, 212(R4) ; R26, 212(R4) ; 010876 A325038C 2F4C LDL R25, 908(R5) ; R25, 908(R5) 43590534 2F50 SUBQ R26, R25, R20 ; R26, R25, R20 E69FFFE4 2F54 BEQ R20, 103_1509$ ; R20, 103_1509$ ; 010877 2F58 103_30045$: A30400D4 2F58 LDL R24, 212(R4) ; R24, 212(R4) ; 010878 A2C50390 2F5C LDL R22, 912(R5) ; R22, 912(R5) JTDRIVER Machine Code Listing 2-DEC-1994 10:13:13 AMAC V2.1-13-2671 Page 167 V01H DELFILT 2-DEC-1994 10:12:45 [EVERHART.JT]JTDRIVER_S2.MAR;120 43160534 2F60 SUBQ R24, R22, R20 ; R24, R22, R20 E69FFFE0 2F64 BEQ R20, 103_1509$ ; R20, 103_1509$ ; 010879 2F68 103_30046$: A38400D4 2F68 LDL R28, 212(R4) ; R28, 212(R4) ; 010880 A3450394 2F6C LDL R26, 916(R5) ; R26, 916(R5) 439A0534 2F70 SUBQ R28, R26, R20 ; R28, R26, R20 E69FFFDC 2F74 BEQ R20, 103_1509$ ; R20, 103_1509$ ; 010881 2F78 103_30047$: A32400D4 2F78 LDL R25, 212(R4) ; R25, 212(R4) ; 010882 A2E50398 2F7C LDL R23, 920(R5) ; R23, 920(R5) 43370534 2F80 SUBQ R25, R23, R20 ; R25, R23, R20 E69FFFD8 2F84 BEQ R20, 103_1509$ ; R20, 103_1509$ ; 010883 2F88 103_30048$: A3860010 2F88 LDL R28, 16(R6) ; R28, 16(R6) ; 010885 4B80F17C 2F8C INSBL R28, 7, R28 ; R28, 7, R28 4B87179C 2F90 SRA R28, 56, R28 ; R28, 56, R28 43803534 2F94 SUBQ R28, 1, R20 ; R28, 1, R20 EE9FFFD3 2F98 BLE R20, 103_1509$ ; R20, 103_1509$ ; 010886 2F9C 103_30049$: A3630060 2F9C LDL R27, 96(R3) ; R27, 96(R3) ; 010894 47701014 2FA0 AND R27, 128, R20 ; R27, 128, R20 F680001E 2FA4 BNE R20, $L107 ; R20, $L107 ; 010895 2FA8 103_10$: ; 010903 43C3153E 2FA8 SUBQ SP, 24, SP ; SP, 24, SP ; 010906 B17E0014 2FAC STL R11, 20(SP) ; R11, 20(SP) B15E0010 2FB0 STL R10, 16(SP) ; R10, 16(SP) B13E000C 2FB4 STL R9, 12(SP) ; R9, 12(SP) B11E0008 2FB8 STL R8, 8(SP) ; R8, 8(SP) B0FE0004 2FBC STL R7, 4(SP) ; R7, 4(SP) B0DE0000 2FC0 STL R6, (SP) ; R6, (SP) A1450120 2FC4 LDL R10, 288(R5) ; R10, 288(R5) ; 010907 A13E000C 2FC8 LDL R9, 12(SP) ; R9, 12(SP) ; 010920 A17E0014 2FCC LDL R11, 20(SP) ; R11, 20(SP) ED400017 2FD0 BLE R10, 103_5$ ; R10, 103_5$ ; 010908 A0D50000 2FD4 LDL R6, (R21) ; R6, (R21) ; 010911 494012C7 2FD8 EXTWL R10, 0, R7 ; R10, 0, R7 ; 010909 40E6005A 2FDC S4ADDL R7, R6, R26 ; R7, R6, R26 ; 010912 A0DE0000 2FE0 LDL R6, (SP) ; R6, (SP) ; 010920 A11A0000 2FE4 LDL R8, (R26) ; R8, (R26) ; 010912 A0FE0004 2FE8 LDL R7, 4(SP) ; R7, 4(SP) ; 010920 F9000010 2FEC BGE R8, 103_5$ ; R8, 103_5$ ; 010914 A32800D4 2FF0 LDL R25, 212(R8) ; R25, 212(R8) ; 010915 41590534 2FF4 SUBQ R10, R25, R20 ; R10, R25, R20 F680000D 2FF8 BNE R20, 103_5$ ; R20, 103_5$ ; 010916 A30800FC 2FFC LDL R24, 252(R8) ; R24, 252(R8) ; 010918 A2E400FC 3000 LDL R23, 252(R4) ; R23, 252(R4) A11E0008 3004 LDL R8, 8(SP) ; R8, 8(SP) ; 010920 A15E0010 3008 LDL R10, 16(SP) ; R10, 16(SP) 43170534 300C SUBQ R24, R23, R20 ; R24, R23, R20 ; 010918 F6800007 3010 BNE R20, 103_5$ ; R20, 103_5$ ; 010919 43C3141E 3014 ADDQ SP, 24, SP ; SP, 24, SP ; 010920 3018 103_48$: ; 010921 C3FFFFB3 3018 BR 103_1509$ ; 103_1509$ 47FF041F 301C NOP ; 3020 $L107: ; 010896 A3830060 3020 LDL R28, 96(R3) ; R28, 96(R3) 4790111C 3024 BIC R28, 128, R28 ; R28, 128, R28 JTDRIVER Machine Code Listing 2-DEC-1994 10:13:13 AMAC V2.1-13-2671 Page 168 V01H DELFILT 2-DEC-1994 10:12:45 [EVERHART.JT]JTDRIVER_S2.MAR;120 B3830060 3028 STL R28, 96(R3) ; R28, 96(R3) 302C 103_999$: ; 011078 C3FFFFAE 302C BR 103_1509$ ; 103_1509$ 3030 103_5$: ; 010922 A0DE0000 3030 LDL R6, (SP) ; R6, (SP) ; 010923 47FF0412 3034 CLR R18 ; R18 ; 010996 A0FE0004 3038 LDL R7, 4(SP) ; R7, 4(SP) ; 010923 47E09411 303C BIS R31, 4, R17 ; R31, 4, R17 ; 010996 A11E0008 3040 LDL R8, 8(SP) ; R8, 8(SP) ; 010923 A13E000C 3044 LDL R9, 12(SP) ; R9, 12(SP) A15E0010 3048 LDL R10, 16(SP) ; R10, 16(SP) A17E0014 304C LDL R11, 20(SP) ; R11, 20(SP) B01E0014 3050 STL R0, 20(SP) ; R0, 20(SP) ; 010927 B15E0010 3054 STL R10, 16(SP) ; R10, 16(SP) ; 010928 43C1941E 3058 ADDQ SP, 12, SP ; SP, 12, SP ; 010923 B17E0000 305C STL R11, (SP) ; R11, (SP) ; 010929 A0030078 3060 LDL R0, 120(R3) ; R0, 120(R3) ; 010933 47E0041B 3064 MOV R0, R27 ; R0, R27 ; 010996 40009410 3068 ADDQ R0, 4, R16 ; R0, 4, R16 00000091 306C CALL_PAL 145 ; 145 44007000 3070 AND R0, 3, R0 ; R0, 3, R0 424009BA 3074 CMPLT R18, R0, R26 ; R18, R0, R26 42203131 3078 SUBL R17, 1, R17 ; R17, 1, R17 474004D2 307C CMOVNE R26, R0, R18 ; R26, R0, R18 0000008F 3080 CALL_PAL 143 ; 143 47E00414 3084 MOV R0, R20 ; R0, R20 47FB0400 3088 MOV R27, R0 ; R27, R0 E6800026 308C BEQ R20, 103_50$ ; R20, 103_50$ A0000004 3090 LDL R0, 4(R0) ; R0, 4(R0) ; 010997 43C2153E 3094 SUBQ SP, 16, SP ; SP, 16, SP ; 011000 47FF040B 3098 CLR R11 ; R11 ; 010999 B07E000C 309C STL R3, 12(SP) ; R3, 12(SP) ; 011000 B05E0008 30A0 STL R2, 8(SP) ; R2, 8(SP) 43E00009 30A4 SEXTL R0, R9 ; R0, R9 ; 010998 B03E0004 30A8 STL R1, 4(SP) ; R1, 4(SP) ; 011000 B01E0000 30AC STL R0, (SP) ; R0, (SP) A0030078 30B0 LDL R0, 120(R3) ; R0, 120(R3) ; 011002 E400005A 30B4 BEQ R0, 103_450$ ; R0, 103_450$ ; 011006 A0000004 30B8 LDL R0, 4(R0) ; R0, 4(R0) ; 011007 E4000058 30BC BEQ R0, 103_450$ ; R0, 103_450$ ; 011008 2C200004 30C0 LDQ_U R1, 4(R0) ; R1, 4(R0) ; 011009 40009419 30C4 ADDQ R0, 4, R25 ; R0, 4, R25 483902C1 30C8 EXTWL R1, R25, R1 ; R1, R25, R1 F3200078 30CC BLBS R25, $L158 ; R25, $L158 30D0 $L159: A0650240 30D0 LDL R3, 576(R5) ; R3, 576(R5) ; 011019 47E21402 30D4 BIS R31, 16, R2 ; R31, 16, R2 ; 011011 E460000D 30D8 BEQ R3, 103_47$ ; R3, 103_47$ ; 011020 22DF3FFF 30DC LDA R22, 16383(R31) ; R22, 16383(R31) ; 011022 44360001 30E0 AND R1, R22, R1 ; R1, R22, R1 43E1001B 30E4 SEXTL R1, R27 ; R1, R27 ; 011023 4B607782 30E8 SRA R27, 3, R2 ; R27, 3, R2 4420F001 30EC AND R1, 7, R1 ; R1, 7, R1 ; 011025 4820779A 30F0 SRA R1, 3, R26 ; R1, 3, R26 ; 011026 40620000 30F4 ADDL R3, R2, R0 ; R3, R2, R0 ; 011024 401A0019 30F8 ADDL R0, R26, R25 ; R0, R26, R25 ; 011026 4420F018 30FC AND R1, 7, R24 ; R1, 7, R24 JTDRIVER Machine Code Listing 2-DEC-1994 10:13:13 AMAC V2.1-13-2671 Page 169 V01H DELFILT 2-DEC-1994 10:12:45 [EVERHART.JT]JTDRIVER_S2.MAR;120 2F590000 3100 LDQ_U R26, (R25) ; R26, (R25) 4B5900DA 3104 EXTBL R26, R25, R26 ; R26, R25, R26 4B580697 3108 SRL R26, R24, R23 ; R26, R24, R23 E2E00044 310C BLBC R23, 103_450$ ; R23, 103_450$ 3110 103_47$: ; 011032 A01E0000 3110 LDL R0, (SP) ; R0, (SP) ; 011033 4160300B 3114 ADDL R11, 1, R11 ; R11, 1, R11 ; 011034 A03E0004 3118 LDL R1, 4(SP) ; R1, 4(SP) ; 011033 A05E0008 311C LDL R2, 8(SP) ; R2, 8(SP) A07E000C 3120 LDL R3, 12(SP) ; R3, 12(SP) 43C2141E 3124 ADDQ SP, 16, SP ; SP, 16, SP 3128 103_50$: ; 011035 A1450124 3128 LDL R10, 292(R5) ; R10, 292(R5) ; 011038 F9400032 312C BGE R10, 103_850$ ; R10, 103_850$ ; 011039 A2CA0088 3130 LDL R22, 136(R10) ; R22, 136(R10) ; 011040 46C21014 3134 AND R22, 16, R20 ; R22, 16, R20 E680002F 3138 BEQ R20, 103_850$ ; R20, 103_850$ ; 011041 A38A007C 313C LDL R28, 124(R10) ; R28, 124(R10) ; 011043 E780002D 3140 BEQ R28, 103_850$ ; R28, 103_850$ ; 011047 A36A0024 3144 LDL R27, 36(R10) ; R27, 36(R10) ; 011048 FB60002B 3148 BGE R27, 103_850$ ; R27, 103_850$ ; 011049 43C2153E 314C SUBQ SP, 16, SP ; SP, 16, SP ; 011051 A74D0020 3150 LDQ R26, 32(R13) ; R26, 32(R13) ; 011052 B11E000C 3154 STL R8, 12(SP) ; R8, 12(SP) ; 011051 B0FE0008 3158 STL R7, 8(SP) ; R7, 8(SP) B0DE0004 315C STL R6, 4(SP) ; R6, 4(SP) B0BE0000 3160 STL R5, (SP) ; R5, (SP) A0FA0000 3164 LDL R7, (R26) ; R7, (R26) ; 011052 3168 103_100$: ; 011053 A0D50000 3168 LDL R6, (R21) ; R6, (R21) 40E60059 316C S4ADDL R7, R6, R25 ; R7, R6, R25 ; 011054 A1190000 3170 LDL R8, (R25) ; R8, (R25) F9000004 3174 BGE R8, 103_101$ ; R8, 103_101$ ; 011056 A3050120 3178 LDL R24, 288(R5) ; R24, 288(R5) ; 011057 A2E800D4 317C LDL R23, 212(R8) ; R23, 212(R8) 43170534 3180 SUBQ R24, R23, R20 ; R24, R23, R20 E6800003 3184 BEQ R20, 103_102$ ; R20, 103_102$ ; 011058 3188 103_101$: ; 011059 40E03127 3188 SUBL R7, 1, R7 ; R7, 1, R7 FCFFFFF6 318C BGT R7, 103_100$ ; R7, 103_100$ B3E50120 3190 STL R31, 288(R5) ; R31, 288(R5) ; 011060 3194 103_102$: ; 011061 A0BE0000 3194 LDL R5, (SP) ; R5, (SP) A0DE0004 3198 LDL R6, 4(SP) ; R6, 4(SP) A0FE0008 319C LDL R7, 8(SP) ; R7, 8(SP) A11E000C 31A0 LDL R8, 12(SP) ; R8, 12(SP) 43C2141E 31A4 ADDQ SP, 16, SP ; SP, 16, SP A2C50120 31A8 LDL R22, 288(R5) ; R22, 288(R5) ; 011062 E6C00012 31AC BEQ R22, 103_850$ ; R22, 103_850$ ; 011063 43C3153E 31B0 SUBQ SP, 24, SP ; SP, 24, SP ; 011065 41B0141B 31B4 ADDQ R13, 128, R27 ; R13, 128, R27 ; 011066 B11E0014 31B8 STL R8, 20(SP) ; R8, 20(SP) ; 011065 43C0953E 31BC SUBQ SP, 4, SP ; SP, 4, SP ; 011066 B0FE0014 31C0 STL R7, 20(SP) ; R7, 20(SP) ; 011065 B0DE0010 31C4 STL R6, 16(SP) ; R6, 16(SP) B0BE000C 31C8 STL R5, 12(SP) ; R5, 12(SP) B09E0008 31CC STL R4, 8(SP) ; R4, 8(SP) JTDRIVER Machine Code Listing 2-DEC-1994 10:13:13 AMAC V2.1-13-2671 Page 170 V01H DELFILT 2-DEC-1994 10:12:45 [EVERHART.JT]JTDRIVER_S2.MAR;120 B07E0004 31D0 STL R3, 4(SP) ; R3, 4(SP) D340046A 31D4 BSR R26, SNDDELMSG ; R26, SNDDELMSG ; 011066 A07E0004 31D8 LDL R3, 4(SP) ; R3, 4(SP) ; 011067 A09E0008 31DC LDL R4, 8(SP) ; R4, 8(SP) A0BE000C 31E0 LDL R5, 12(SP) ; R5, 12(SP) A0DE0010 31E4 LDL R6, 16(SP) ; R6, 16(SP) A0FE0014 31E8 LDL R7, 20(SP) ; R7, 20(SP) 43C0941E 31EC ADDQ SP, 4, SP ; SP, 4, SP ; 011066 A11E0014 31F0 LDL R8, 20(SP) ; R8, 20(SP) ; 011067 43C3141E 31F4 ADDQ SP, 24, SP ; SP, 24, SP 31F8 103_850$: ; 011069 A17E0000 31F8 LDL R11, (SP) ; R11, (SP) ; 011071 40007534 31FC SUBQ R0, 3, R20 ; R0, 3, R20 ; 011073 A15E0004 3200 LDL R10, 4(SP) ; R10, 4(SP) ; 011072 43C1141E 3204 ADDQ SP, 8, SP ; SP, 8, SP ; 011071 E680000B 3208 BEQ R20, 103_2999$ ; R20, 103_2999$ ; 011074 E000001A 320C BLBC R0, 103_1999$ ; R0, 103_1999$ ; 011075 A01E0000 3210 LDL R0, (SP) ; R0, (SP) ; 011076 43C0941E 3214 ADDQ SP, 4, SP ; SP, 4, SP C3FFFF33 3218 BR 103_1509$ ; 103_1509$ ; 011078 47FF041F 321C NOP ; 3220 103_450$: ; 011030 A01E0000 3220 LDL R0, (SP) ; R0, (SP) A03E0004 3224 LDL R1, 4(SP) ; R1, 4(SP) A05E0008 3228 LDL R2, 8(SP) ; R2, 8(SP) A07E000C 322C LDL R3, 12(SP) ; R3, 12(SP) 43C2141E 3230 ADDQ SP, 16, SP ; SP, 16, SP C3FFFFBC 3234 BR 103_50$ ; 103_50$ ; 011031 3238 103_2999$: ; 011088 A01E0000 3238 LDL R0, (SP) ; R0, (SP) 43C0941E 323C ADDQ SP, 4, SP ; SP, 4, SP 3240 103_2951$: ; 011102 A0BE0004 3240 LDL R5, 4(SP) ; R5, 4(SP) 47FF0401 3244 CLR R1 ; R1 ; 011104 A74DFFA8 3248 LDQ R26, -88(R13) ; R26, -88(R13) 43E30010 324C SEXTL R3, R16 ; R3, R16 A01E0000 3250 LDL R0, (SP) ; R0, (SP) ; 011102 47E03400 3254 BIS R31, 1, R0 ; R31, 1, R0 ; 011103 43C1141E 3258 ADDQ SP, 8, SP ; SP, 8, SP ; 011102 B0030050 325C STL R0, 80(R3) ; R0, 80(R3) ; 011104 A76DFFB0 3260 LDQ R27, -80(R13) ; R27, -80(R13) 43E50011 3264 SEXTL R5, R17 ; R5, R17 B0230054 3268 STL R1, 84(R3) ; R1, 84(R3) 47E05419 326C BIS R31, 2, R25 ; R31, 2, R25 6B5A4000 3270 JSR R26, R26 ; R26, R26 C3FFFF00 3274 BR $L36 ; $L36 3278 103_1999$: ; 011082 A0BE0008 3278 LDL R5, 8(SP) ; R5, 8(SP) ; 011083 43E40011 327C SEXTL R4, R17 ; R4, R17 ; 011085 A74DFD58 3280 LDQ R26, -680(R13) ; R26, -680(R13) 43E30010 3284 SEXTL R3, R16 ; R3, R16 A01E0000 3288 LDL R0, (SP) ; R0, (SP) ; 011082 47E09419 328C BIS R31, 4, R25 ; R31, 4, R25 ; 011085 A01E0004 3290 LDL R0, 4(SP) ; R0, 4(SP) ; 011083 47E49400 3294 BIS R31, 36, R0 ; R31, 36, R0 ; 011084 A76DFD60 3298 LDQ R27, -672(R13) ; R27, -672(R13) ; 011085 43C1941E 329C ADDQ SP, 12, SP ; SP, 12, SP ; 011082 JTDRIVER Machine Code Listing 2-DEC-1994 10:13:13 AMAC V2.1-13-2671 Page 171 V01H DELFILT 2-DEC-1994 10:12:45 [EVERHART.JT]JTDRIVER_S2.MAR;120 43E00013 32A0 SEXTL R0, R19 ; R0, R19 ; 011085 43E50012 32A4 SEXTL R5, R18 ; R5, R18 6B5A4000 32A8 JSR R26, R26 ; R26, R26 C3FFFEF2 32AC BR $L36 ; $L36 32B0 $L158: ; 011009 2EE00005 32B0 LDQ_U R23, 5(R0) ; R23, 5(R0) 4AF90B58 32B4 EXTWH R23, R25, R24 ; R23, R25, R24 44380401 32B8 BIS R1, R24, R1 ; R1, R24, R1 C3FFFF84 32BC BR $L159 ; $L159 Routine Size: 1232 bytes, Routine Base: $$$115_DRIVER + 2DF0 32C0 CREFILT: ; 011112 43D8153E 32C0 SUBQ SP, 192, SP ; SP, 192, SP B77E0000 32C4 STQ R27, (SP) ; R27, (SP) B75E0040 32C8 STQ R26, 64(SP) ; R26, 64(SP) B45E0048 32CC STQ R2, 72(SP) ; R2, 72(SP) B47E0050 32D0 STQ R3, 80(SP) ; R3, 80(SP) B49E0058 32D4 STQ R4, 88(SP) ; R4, 88(SP) B4BE0060 32D8 STQ R5, 96(SP) ; R5, 96(SP) B4DE0068 32DC STQ R6, 104(SP) ; R6, 104(SP) B4FE0070 32E0 STQ R7, 112(SP) ; R7, 112(SP) B51E0078 32E4 STQ R8, 120(SP) ; R8, 120(SP) B53E0080 32E8 STQ R9, 128(SP) ; R9, 128(SP) B55E0088 32EC STQ R10, 136(SP) ; R10, 136(SP) B57E0090 32F0 STQ R11, 144(SP) ; R11, 144(SP) B59E0098 32F4 STQ R12, 152(SP) ; R12, 152(SP) B5BE00A0 32F8 STQ R13, 160(SP) ; R13, 160(SP) 47FB040D 32FC MOV R27, R13 ; R27, R13 B5DE00A8 3300 STQ R14, 168(SP) ; R14, 168(SP) B5FE00B0 3304 STQ R15, 176(SP) ; R15, 176(SP) B7BE00B8 3308 STQ FP, 184(SP) ; FP, 184(SP) 47FE041D 330C MOV SP, FP ; SP, FP B7FE0008 3310 STQ R31, 8(SP) ; R31, 8(SP) B73D0010 3314 STQ R25, 16(FP) ; R25, 16(FP) B61D0018 3318 STQ R16, 24(FP) ; R16, 24(FP) B63D0020 331C STQ R17, 32(FP) ; R17, 32(FP) B65D0028 3320 STQ R18, 40(FP) ; R18, 40(FP) B67D0030 3324 STQ R19, 48(FP) ; R19, 48(FP) 3328 $L37: 43F30006 3328 SEXTL R19, R6 ; R19, R6 43E60014 332C SEXTL R6, R20 ; R6, R20 ; 011114 43F00003 3330 SEXTL R16, R3 ; R16, R3 ; 011112 43F10004 3334 SEXTL R17, R4 ; R17, R4 43F20005 3338 SEXTL R18, R5 ; R18, R5 EE800005 333C BLE R20, 104_2$ ; R20, 104_2$ ; 011115 A3660010 3340 LDL R27, 16(R6) ; R27, 16(R6) ; 011116 4B60F17B 3344 INSBL R27, 7, R27 ; R27, 7, R27 4B67179B 3348 SRA R27, 56, R27 ; R27, 56, R27 43603534 334C SUBQ R27, 1, R20 ; R27, 1, R20 FE800017 3350 BGT R20, 104_1$ ; R20, 104_1$ ; 011117 3354 104_2$: ; 011118 236DFD60 3354 LDA R27, -672(R13) ; R27, -672(R13) 2FFE0000 3358 LNOP ; D34000CC 335C BSR R26, PORS ; R26, PORS 3360 $L38: ; 011119 47FD041E 3360 MOV FP, SP ; FP, SP JTDRIVER Machine Code Listing 2-DEC-1994 10:13:13 AMAC V2.1-13-2671 Page 172 V01H CREFILT 2-DEC-1994 10:12:45 [EVERHART.JT]JTDRIVER_S2.MAR;120 A79E0040 3364 LDQ R28, 64(SP) ; R28, 64(SP) A45E0048 3368 LDQ R2, 72(SP) ; R2, 72(SP) A47E0050 336C LDQ R3, 80(SP) ; R3, 80(SP) A49E0058 3370 LDQ R4, 88(SP) ; R4, 88(SP) A4BE0060 3374 LDQ R5, 96(SP) ; R5, 96(SP) A4DE0068 3378 LDQ R6, 104(SP) ; R6, 104(SP) A4FE0070 337C LDQ R7, 112(SP) ; R7, 112(SP) A51E0078 3380 LDQ R8, 120(SP) ; R8, 120(SP) A53E0080 3384 LDQ R9, 128(SP) ; R9, 128(SP) A55E0088 3388 LDQ R10, 136(SP) ; R10, 136(SP) A57E0090 338C LDQ R11, 144(SP) ; R11, 144(SP) A59E0098 3390 LDQ R12, 152(SP) ; R12, 152(SP) A5BE00A0 3394 LDQ R13, 160(SP) ; R13, 160(SP) A5DE00A8 3398 LDQ R14, 168(SP) ; R14, 168(SP) A5FE00B0 339C LDQ R15, 176(SP) ; R15, 176(SP) A7BE00B8 33A0 LDQ FP, 184(SP) ; FP, 184(SP) 43D8141E 33A4 ADDQ SP, 192, SP ; SP, 192, SP 6BFC8001 33A8 RET R28 ; R28 47FF041F 33AC NOP ; 33B0 104_1$: ; 011120 43C2153E 33B0 SUBQ SP, 16, SP ; SP, 16, SP ; 011122 236DFA00 33B4 LDA R27, -1536(R13) ; R27, -1536(R13) B0BE000C 33B8 STL R5, 12(SP) ; R5, 12(SP) ; 011120 B01E0008 33BC STL R0, 8(SP) ; R0, 8(SP) D35FF37B 33C0 BSR R26, GETJTUCB ; R26, GETJTUCB ; 011122 43C1141E 33C4 ADDQ SP, 8, SP ; SP, 8, SP E8000007 33C8 BLT R0, 104_509$ ; R0, 104_509$ ; 011124 47FF041F 33CC NOP ; 33D0 104_1509$: ; 011125 A01E0000 33D0 LDL R0, (SP) ; R0, (SP) ; 011126 236DFD50 33D4 LDA R27, -688(R13) ; R27, -688(R13) ; 011127 A0BE0004 33D8 LDL R5, 4(SP) ; R5, 4(SP) ; 011126 43C1141E 33DC ADDQ SP, 8, SP ; SP, 8, SP D340009F 33E0 BSR R26, POPOUT ; R26, POPOUT ; 011127 C3FFFFDE 33E4 BR $L38 ; $L38 ; 011128 33E8 104_509$: ; 011129 B0A0023C 33E8 STL R5, 572(R0) ; R5, 572(R0) ; 011131 43E00005 33EC SEXTL R0, R5 ; R0, R5 ; 011132 A3450128 33F0 LDL R26, 296(R5) ; R26, 296(R5) ; 011133 47421014 33F4 AND R26, 16, R20 ; R26, 16, R20 E69FFFF5 33F8 BEQ R20, 104_1509$ ; R20, 104_1509$ ; 011134 33FC 104_30050$: A30400D4 33FC LDL R24, 212(R4) ; R24, 212(R4) ; 011136 A2E50130 3400 LDL R23, 304(R5) ; R23, 304(R5) 43170534 3404 SUBQ R24, R23, R20 ; R24, R23, R20 E69FFFF1 3408 BEQ R20, 104_1509$ ; R20, 104_1509$ ; 011137 340C 104_30051$: A2C400D4 340C LDL R22, 212(R4) ; R22, 212(R4) ; 011138 A3850118 3410 LDL R28, 280(R5) ; R28, 280(R5) 42DC0534 3414 SUBQ R22, R28, R20 ; R22, R28, R20 E69FFFED 3418 BEQ R20, 104_1509$ ; R20, 104_1509$ ; 011139 341C 104_30052$: A36400D4 341C LDL R27, 212(R4) ; R27, 212(R4) ; 011140 A3450120 3420 LDL R26, 288(R5) ; R26, 288(R5) 437A0534 3424 SUBQ R27, R26, R20 ; R27, R26, R20 E69FFFE9 3428 BEQ R20, 104_1509$ ; R20, 104_1509$ ; 011141 342C 104_30053$: JTDRIVER Machine Code Listing 2-DEC-1994 10:13:13 AMAC V2.1-13-2671 Page 173 V01H CREFILT 2-DEC-1994 10:12:45 [EVERHART.JT]JTDRIVER_S2.MAR;120 A30400D4 342C LDL R24, 212(R4) ; R24, 212(R4) ; 011142 A2E5038C 3430 LDL R23, 908(R5) ; R23, 908(R5) 43170534 3434 SUBQ R24, R23, R20 ; R24, R23, R20 E69FFFE5 3438 BEQ R20, 104_1509$ ; R20, 104_1509$ ; 011143 343C 104_30054$: A2C400D4 343C LDL R22, 212(R4) ; R22, 212(R4) ; 011144 A3650390 3440 LDL R27, 912(R5) ; R27, 912(R5) 42DB0534 3444 SUBQ R22, R27, R20 ; R22, R27, R20 E69FFFE1 3448 BEQ R20, 104_1509$ ; R20, 104_1509$ ; 011145 344C 104_30055$: A34400D4 344C LDL R26, 212(R4) ; R26, 212(R4) ; 011146 A2E50394 3450 LDL R23, 916(R5) ; R23, 916(R5) 43570534 3454 SUBQ R26, R23, R20 ; R26, R23, R20 E69FFFDD 3458 BEQ R20, 104_1509$ ; R20, 104_1509$ ; 011147 345C 104_30056$: A2C400D4 345C LDL R22, 212(R4) ; R22, 212(R4) ; 011148 A3650398 3460 LDL R27, 920(R5) ; R27, 920(R5) 42DB0534 3464 SUBQ R22, R27, R20 ; R22, R27, R20 E69FFFD9 3468 BEQ R20, 104_1509$ ; R20, 104_1509$ ; 011149 346C 104_30057$: A3060010 346C LDL R24, 16(R6) ; R24, 16(R6) ; 011151 4B00F178 3470 INSBL R24, 7, R24 ; R24, 7, R24 4B071798 3474 SRA R24, 56, R24 ; R24, 56, R24 43003534 3478 SUBQ R24, 1, R20 ; R24, 1, R20 EE9FFFD4 347C BLE R20, 104_1509$ ; R20, 104_1509$ ; 011152 3480 104_30058$: A2E50128 3480 LDL R23, 296(R5) ; R23, 296(R5) ; 011153 46E11014 3484 AND R23, 8, R20 ; R23, 8, R20 E6800039 3488 BEQ R20, 104_8810$ ; R20, 104_8810$ ; 011155 43C0953E 348C SUBQ SP, 4, SP ; SP, 4, SP ; 011156 47FF0412 3490 CLR R18 ; R18 ; 011162 B01E0000 3494 STL R0, (SP) ; R0, (SP) ; 011156 A0030078 3498 LDL R0, 120(R3) ; R0, 120(R3) ; 011160 47E09411 349C BIS R31, 4, R17 ; R31, 4, R17 ; 011162 47E00416 34A0 MOV R0, R22 ; R0, R22 40009410 34A4 ADDQ R0, 4, R16 ; R0, 4, R16 00000091 34A8 CALL_PAL 145 ; 145 44007000 34AC AND R0, 3, R0 ; R0, 3, R0 424009BC 34B0 CMPLT R18, R0, R28 ; R18, R0, R28 42203131 34B4 SUBL R17, 1, R17 ; R17, 1, R17 478004D2 34B8 CMOVNE R28, R0, R18 ; R28, R0, R18 0000008F 34BC CALL_PAL 143 ; 143 47E00414 34C0 MOV R0, R20 ; R0, R20 47F60400 34C4 MOV R22, R0 ; R22, R0 E6800027 34C8 BEQ R20, 104_10$ ; R20, 104_10$ 47FF0412 34CC CLR R18 ; R18 ; 011164 A0000004 34D0 LDL R0, 4(R0) ; R0, 4(R0) ; 011163 47E09411 34D4 BIS R31, 4, R17 ; R31, 4, R17 ; 011164 47E0041B 34D8 MOV R0, R27 ; R0, R27 4002D410 34DC ADDQ R0, 22, R16 ; R0, 22, R16 00000091 34E0 CALL_PAL 145 ; 145 44007000 34E4 AND R0, 3, R0 ; R0, 3, R0 424009BA 34E8 CMPLT R18, R0, R26 ; R18, R0, R26 42203131 34EC SUBL R17, 1, R17 ; R17, 1, R17 474004D2 34F0 CMOVNE R26, R0, R18 ; R26, R0, R18 0000008F 34F4 CALL_PAL 143 ; 143 47E00414 34F8 MOV R0, R20 ; R0, R20 JTDRIVER Machine Code Listing 2-DEC-1994 10:13:13 AMAC V2.1-13-2671 Page 174 V01H CREFILT 2-DEC-1994 10:12:45 [EVERHART.JT]JTDRIVER_S2.MAR;120 E680001A 34FC BEQ R20, 104_10$ ; R20, 104_10$ 47FB0400 3500 MOV R27, R0 ; R27, R0 4002D416 3504 ADDQ R0, 22, R22 ; R0, 22, R22 ; 011165 2EE00016 3508 LDQ_U R23, 22(R0) ; R23, 22(R0) 4AF602D7 350C EXTWL R23, R22, R23 ; R23, R22, R23 F2C00041 3510 BLBS R22, $L160 ; R22, $L160 3514 $L161: 46F01014 3514 AND R23, 128, R20 ; R23, 128, R20 E6800013 3518 BEQ R20, 104_10$ ; R20, 104_10$ ; 011166 351C 104_30059$: A3450128 351C LDL R26, 296(R5) ; R26, 296(R5) ; 011171 47441014 3520 AND R26, 32, R20 ; R26, 32, R20 E6800010 3524 BEQ R20, 104_10$ ; R20, 104_10$ ; 011172 2EE00016 3528 LDQ_U R23, 22(R0) ; R23, 22(R0) ; 011174 4002D416 352C ADDQ R0, 22, R22 ; R0, 22, R22 4AF602D7 3530 EXTWL R23, R22, R23 ; R23, R22, R23 F2C0003C 3534 BLBS R22, $L162 ; R22, $L162 3538 $L163: 46E07014 3538 AND R23, 3, R20 ; R23, 3, R20 F680000A 353C BNE R20, 104_10$ ; R20, 104_10$ ; 011175 2F000016 3540 LDQ_U R24, 22(R0) ; R24, 22(R0) ; 011176 4002D416 3544 ADDQ R0, 22, R22 ; R0, 22, R22 4B1602D7 3548 EXTWL R24, R22, R23 ; R24, R22, R23 F2C0003A 354C BLBS R22, $L164 ; R22, $L164 3550 $L165: 46E0541A 3550 BIS R23, 2, R26 ; R23, 2, R26 4B560375 3554 INSWL R26, R22, R21 ; R26, R22, R21 4B160258 3558 MSKWL R24, R22, R24 ; R24, R22, R24 47150418 355C BIS R24, R21, R24 ; R24, R21, R24 F2C00039 3560 BLBS R22, $L166 ; R22, $L166 3564 $L167: 3F000016 3564 STQ_U R24, 22(R0) ; R24, 22(R0) 3568 104_10$: ; 011177 A01E0000 3568 LDL R0, (SP) ; R0, (SP) ; 011178 43C0941E 356C ADDQ SP, 4, SP ; SP, 4, SP 3570 104_8810$: ; 011179 A3650128 3570 LDL R27, 296(R5) ; R27, 296(R5) ; 011180 239F0200 3574 LDA R28, 512(R31) ; R28, 512(R31) 477C0014 3578 AND R27, R28, R20 ; R27, R28, R20 E69FFF94 357C BEQ R20, 104_1509$ ; R20, 104_1509$ ; 011181 43C0953E 3580 SUBQ SP, 4, SP ; SP, 4, SP ; 011182 47FF0412 3584 CLR R18 ; R18 ; 011184 B01E0000 3588 STL R0, (SP) ; R0, (SP) ; 011182 47E09411 358C BIS R31, 4, R17 ; R31, 4, R17 ; 011184 A01D0010 3590 LDL R0, 16(FP) ; R0, 16(FP) ; 011183 40009410 3594 ADDQ R0, 4, R16 ; R0, 4, R16 ; 011184 47E0041A 3598 MOV R0, R26 ; R0, R26 00000091 359C CALL_PAL 145 ; 145 44007000 35A0 AND R0, 3, R0 ; R0, 3, R0 424009B8 35A4 CMPLT R18, R0, R24 ; R18, R0, R24 42203131 35A8 SUBL R17, 1, R17 ; R17, 1, R17 470004D2 35AC CMOVNE R24, R0, R18 ; R24, R0, R18 0000008F 35B0 CALL_PAL 143 ; 143 47E00414 35B4 MOV R0, R20 ; R0, R20 47FA0400 35B8 MOV R26, R0 ; R26, R0 F6800006 35BC BNE R20, $L109 ; R20, $L109 35C0 104_20$: ; 011187 JTDRIVER Machine Code Listing 2-DEC-1994 10:13:13 AMAC V2.1-13-2671 Page 175 V01H CREFILT 2-DEC-1994 10:12:45 [EVERHART.JT]JTDRIVER_S2.MAR;120 A01E0000 35C0 LDL R0, (SP) ; R0, (SP) 43C0941E 35C4 ADDQ SP, 4, SP ; SP, 4, SP 35C8 104_21$: ; 011188 C3FFFF81 35C8 BR 104_1509$ ; 104_1509$ 47FF041F 35CC NOP ; 35D0 $L108: ; 011166 C3FFFFE5 35D0 BR 104_10$ ; 104_10$ 47FF041F 35D4 NOP ; 35D8 $L109: ; 011185 A0000004 35D8 LDL R0, 4(R0) ; R0, 4(R0) 47FF041F 35DC NOP ; 35E0 MSPC: ; 011433 A2E50128 35E0 LDL R23, 296(R5) ; R23, 296(R5) ; 011435 231F0200 35E4 LDA R24, 512(R31) ; R24, 512(R31) A6ADFB40 35E8 LDQ R21, -1216(R13) ; R21, -1216(R13) ; 011482 46F80014 35EC AND R23, R24, R20 ; R23, R24, R20 ; 011435 F6800121 35F0 BNE R20, 110_30071$ ; R20, 110_30071$ ; 011436 47FF041F 35F4 NOP ; 35F8 110_800$: ; 011496 A01E0000 35F8 LDL R0, (SP) ; R0, (SP) ; 011497 236DFD60 35FC LDA R27, -672(R13) ; R27, -672(R13) ; 011500 A01E0004 3600 LDL R0, 4(SP) ; R0, 4(SP) ; 011498 47E03400 3604 BIS R31, 1, R0 ; R31, 1, R0 ; 011499 A0BE0008 3608 LDL R5, 8(SP) ; R5, 8(SP) ; 011498 43C1941E 360C ADDQ SP, 12, SP ; SP, 12, SP ; 011497 D340001F 3610 BSR R26, PORS ; R26, PORS ; 011500 C3E00088 3614 BR $L44 ; $L44 ; 011501 3618 $L160: ; 011165 2F600017 3618 LDQ_U R27, 23(R0) ; R27, 23(R0) 4B760B5C 361C EXTWH R27, R22, R28 ; R27, R22, R28 46FC0417 3620 BIS R23, R28, R23 ; R23, R28, R23 C3FFFFBB 3624 BR $L161 ; $L161 3628 $L162: ; 011174 2F600017 3628 LDQ_U R27, 23(R0) ; R27, 23(R0) 4B760B5C 362C EXTWH R27, R22, R28 ; R27, R22, R28 46FC0417 3630 BIS R23, R28, R23 ; R23, R28, R23 C3FFFFC0 3634 BR $L163 ; $L163 3638 $L164: ; 011176 2F600017 3638 LDQ_U R27, 23(R0) ; R27, 23(R0) 4B760B5C 363C EXTWH R27, R22, R28 ; R27, R22, R28 46FC0417 3640 BIS R23, R28, R23 ; R23, R28, R23 C3FFFFC2 3644 BR $L165 ; $L165 3648 $L166: 4B560AF5 3648 INSWH R26, R22, R21 ; R26, R22, R21 4B760A5B 364C MSKWH R27, R22, R27 ; R27, R22, R27 4775041B 3650 BIS R27, R21, R27 ; R27, R21, R27 3F600017 3654 STQ_U R27, 23(R0) ; R27, 23(R0) C3FFFFC2 3658 BR $L167 ; $L167 47FF041F 365C NOP ; Routine Size: 928 bytes, Routine Base: $$$115_DRIVER + 32C0 3660 POPOUT: ; 011190 43C2153E 3660 SUBQ SP, 16, SP ; SP, 16, SP B75E0000 3664 STQ R26, (SP) ; R26, (SP) B5BE0008 3668 STQ R13, 8(SP) ; R13, 8(SP) 47FB040D 366C MOV R27, R13 ; R27, R13 JTDRIVER Machine Code Listing 2-DEC-1994 10:13:13 AMAC V2.1-13-2671 Page 176 V01H POPOUT 2-DEC-1994 10:12:45 [EVERHART.JT]JTDRIVER_S2.MAR;120 3670 $L39: 41A2141B 3670 ADDQ R13, 16, R27 ; R13, 16, R27 ; 011192 D3400006 3674 BSR R26, PORS ; R26, PORS 3678 $L40: ; 011193 A79E0000 3678 LDQ R28, (SP) ; R28, (SP) A5BE0008 367C LDQ R13, 8(SP) ; R13, 8(SP) 43C2141E 3680 ADDQ SP, 16, SP ; SP, 16, SP 6BFC8001 3684 RET R28 ; R28 47FF041F 3688 NOP ; 47FF041F 368C NOP ; Routine Size: 48 bytes, Routine Base: $$$115_DRIVER + 3660 3690 PORS: ; 011194 43C8153E 3690 SUBQ SP, 64, SP ; SP, 64, SP B75E0008 3694 STQ R26, 8(SP) ; R26, 8(SP) B4DE0010 3698 STQ R6, 16(SP) ; R6, 16(SP) B4FE0018 369C STQ R7, 24(SP) ; R7, 24(SP) B51E0020 36A0 STQ R8, 32(SP) ; R8, 32(SP) B53E0028 36A4 STQ R9, 40(SP) ; R9, 40(SP) B55E0030 36A8 STQ R10, 48(SP) ; R10, 48(SP) B5BE0038 36AC STQ R13, 56(SP) ; R13, 56(SP) 47FB040D 36B0 MOV R27, R13 ; R27, R13 36B4 $L41: A3830060 36B4 LDL R28, 96(R3) ; R28, 96(R3) ; 011198 43C2953E 36B8 SUBQ SP, 20, SP ; SP, 20, SP ; 011199 236DFCA0 36BC LDA R27, -864(R13) ; R27, -864(R13) ; 011201 B15E0010 36C0 STL R10, 16(SP) ; R10, 16(SP) ; 011199 B13E000C 36C4 STL R9, 12(SP) ; R9, 12(SP) 4787F001 36C8 AND R28, 63, R1 ; R28, 63, R1 ; 011198 B11E0008 36CC STL R8, 8(SP) ; R8, 8(SP) ; 011199 43E1000A 36D0 SEXTL R1, R10 ; R1, R10 ; 011200 B0FE0004 36D4 STL R7, 4(SP) ; R7, 4(SP) ; 011199 B0DE0000 36D8 STL R6, (SP) ; R6, (SP) 43C1953E 36DC SUBQ SP, 12, SP ; SP, 12, SP ; 011201 D35FF2B3 36E0 BSR R26, GETJTUCB ; R26, GETJTUCB 47E09419 36E4 BIS R31, 4, R25 ; R31, 4, R25 ; 011217 43C1941E 36E8 ADDQ SP, 12, SP ; SP, 12, SP ; 011201 F8000020 36EC BGE R0, 106_199$ ; R0, 106_199$ ; 011203 A0E00380 36F0 LDL R7, 896(R0) ; R7, 896(R0) ; 011204 43E60013 36F4 SEXTL R6, R19 ; R6, R19 ; 011213 43E50012 36F8 SEXTL R5, R18 ; R5, R18 ; 011214 F8E0001C 36FC BGE R7, 106_199$ ; R7, 106_199$ ; 011205 40E11007 3700 ADDL R7, 8, R7 ; R7, 8, R7 ; 011210 4147005A 3704 S4ADDL R10, R7, R26 ; R10, R7, R26 ; 011211 A76DFF18 3708 LDQ R27, -232(R13) ; R27, -232(R13) ; 011217 43E40011 370C SEXTL R4, R17 ; R4, R17 ; 011215 A11A0000 3710 LDL R8, (R26) ; R8, (R26) ; 011211 A74DFF10 3714 LDQ R26, -240(R13) ; R26, -240(R13) ; 011217 43E30010 3718 SEXTL R3, R16 ; R3, R16 ; 011216 43C1953E 371C SUBQ SP, 12, SP ; SP, 12, SP ; 011217 47E80417 3720 MOV R8, R23 ; R8, R23 43E03418 3724 ADDQ R31, 1, R24 ; R31, 1, R24 6B5A4000 3728 JSR R26, R26 ; R26, R26 A0DE000C 372C LDL R6, 12(SP) ; R6, 12(SP) ; 011218 A0FE0010 3730 LDL R7, 16(SP) ; R7, 16(SP) A11E0014 3734 LDL R8, 20(SP) ; R8, 20(SP) JTDRIVER Machine Code Listing 2-DEC-1994 10:13:13 AMAC V2.1-13-2671 Page 177 V01H PORS 2-DEC-1994 10:12:45 [EVERHART.JT]JTDRIVER_S2.MAR;120 A13E0018 3738 LDL R9, 24(SP) ; R9, 24(SP) A15E001C 373C LDL R10, 28(SP) ; R10, 28(SP) 43C1941E 3740 ADDQ SP, 12, SP ; SP, 12, SP ; 011217 43C2941E 3744 ADDQ SP, 20, SP ; SP, 20, SP ; 011218 3748 $L42: ; 011221 A79E0008 3748 LDQ R28, 8(SP) ; R28, 8(SP) A4DE0010 374C LDQ R6, 16(SP) ; R6, 16(SP) A4FE0018 3750 LDQ R7, 24(SP) ; R7, 24(SP) A51E0020 3754 LDQ R8, 32(SP) ; R8, 32(SP) A53E0028 3758 LDQ R9, 40(SP) ; R9, 40(SP) A55E0030 375C LDQ R10, 48(SP) ; R10, 48(SP) A5BE0038 3760 LDQ R13, 56(SP) ; R13, 56(SP) 43C8141E 3764 ADDQ SP, 64, SP ; SP, 64, SP 6BFC8001 3768 RET R28 ; R28 47FF041F 376C NOP ; 3770 106_199$: ; 011223 A74DFD20 3770 LDQ R26, -736(R13) ; R26, -736(R13) ; 011226 47E21400 3774 BIS R31, 16, R0 ; R31, 16, R0 ; 011225 A0DE0000 3778 LDL R6, (SP) ; R6, (SP) ; 011224 43E00013 377C SEXTL R0, R19 ; R0, R19 ; 011226 A0FE0004 3780 LDL R7, 4(SP) ; R7, 4(SP) ; 011224 43E50012 3784 SEXTL R5, R18 ; R5, R18 ; 011226 A11E0008 3788 LDL R8, 8(SP) ; R8, 8(SP) ; 011224 43E40011 378C SEXTL R4, R17 ; R4, R17 ; 011226 A13E000C 3790 LDL R9, 12(SP) ; R9, 12(SP) ; 011224 43E30010 3794 SEXTL R3, R16 ; R3, R16 ; 011226 A15E0010 3798 LDL R10, 16(SP) ; R10, 16(SP) ; 011224 43C2941E 379C ADDQ SP, 20, SP ; SP, 20, SP A76DFD28 37A0 LDQ R27, -728(R13) ; R27, -728(R13) ; 011226 47E09419 37A4 BIS R31, 4, R25 ; R31, 4, R25 6B5A4000 37A8 JSR R26, R26 ; R26, R26 C3FFFFE6 37AC BR $L42 ; $L42 ; 011227 Routine Size: 288 bytes, Routine Base: $$$115_DRIVER + 3690 37B0 MFYFILT: ; 011230 43D8153E 37B0 SUBQ SP, 192, SP ; SP, 192, SP B77E0000 37B4 STQ R27, (SP) ; R27, (SP) B75E0040 37B8 STQ R26, 64(SP) ; R26, 64(SP) B45E0048 37BC STQ R2, 72(SP) ; R2, 72(SP) B47E0050 37C0 STQ R3, 80(SP) ; R3, 80(SP) B49E0058 37C4 STQ R4, 88(SP) ; R4, 88(SP) B4BE0060 37C8 STQ R5, 96(SP) ; R5, 96(SP) B4DE0068 37CC STQ R6, 104(SP) ; R6, 104(SP) B4FE0070 37D0 STQ R7, 112(SP) ; R7, 112(SP) B51E0078 37D4 STQ R8, 120(SP) ; R8, 120(SP) B53E0080 37D8 STQ R9, 128(SP) ; R9, 128(SP) B55E0088 37DC STQ R10, 136(SP) ; R10, 136(SP) B57E0090 37E0 STQ R11, 144(SP) ; R11, 144(SP) B59E0098 37E4 STQ R12, 152(SP) ; R12, 152(SP) B5BE00A0 37E8 STQ R13, 160(SP) ; R13, 160(SP) 4370152D 37EC SUBQ R27, 128, R13 ; R27, 128, R13 B5DE00A8 37F0 STQ R14, 168(SP) ; R14, 168(SP) B5FE00B0 37F4 STQ R15, 176(SP) ; R15, 176(SP) B7BE00B8 37F8 STQ FP, 184(SP) ; FP, 184(SP) 47FE041D 37FC MOV SP, FP ; SP, FP B7FE0008 3800 STQ R31, 8(SP) ; R31, 8(SP) JTDRIVER Machine Code Listing 2-DEC-1994 10:13:13 AMAC V2.1-13-2671 Page 178 V01H MFYFILT 2-DEC-1994 10:12:45 [EVERHART.JT]JTDRIVER_S2.MAR;120 B73D0010 3804 STQ R25, 16(FP) ; R25, 16(FP) B61D0018 3808 STQ R16, 24(FP) ; R16, 24(FP) B63D0020 380C STQ R17, 32(FP) ; R17, 32(FP) B65D0028 3810 STQ R18, 40(FP) ; R18, 40(FP) B67D0030 3814 STQ R19, 48(FP) ; R19, 48(FP) 3818 $L43: 43F30006 3818 SEXTL R19, R6 ; R19, R6 43E60014 381C SEXTL R6, R20 ; R6, R20 ; 011234 43F00003 3820 SEXTL R16, R3 ; R16, R3 ; 011230 43F10004 3824 SEXTL R17, R4 ; R17, R4 43F20005 3828 SEXTL R18, R5 ; R18, R5 FE800016 382C BGT R20, 107_5509$ ; R20, 107_5509$ ; 011235 3830 107_6509$: ; 011236 236DFD60 3830 LDA R27, -672(R13) ; R27, -672(R13) D35FFF96 3834 BSR R26, PORS ; R26, PORS 3838 $L44: ; 011237 47FD041E 3838 MOV FP, SP ; FP, SP A79E0040 383C LDQ R28, 64(SP) ; R28, 64(SP) A45E0048 3840 LDQ R2, 72(SP) ; R2, 72(SP) A47E0050 3844 LDQ R3, 80(SP) ; R3, 80(SP) A49E0058 3848 LDQ R4, 88(SP) ; R4, 88(SP) A4BE0060 384C LDQ R5, 96(SP) ; R5, 96(SP) A4DE0068 3850 LDQ R6, 104(SP) ; R6, 104(SP) A4FE0070 3854 LDQ R7, 112(SP) ; R7, 112(SP) A51E0078 3858 LDQ R8, 120(SP) ; R8, 120(SP) A53E0080 385C LDQ R9, 128(SP) ; R9, 128(SP) A55E0088 3860 LDQ R10, 136(SP) ; R10, 136(SP) A57E0090 3864 LDQ R11, 144(SP) ; R11, 144(SP) A59E0098 3868 LDQ R12, 152(SP) ; R12, 152(SP) A5BE00A0 386C LDQ R13, 160(SP) ; R13, 160(SP) A5DE00A8 3870 LDQ R14, 168(SP) ; R14, 168(SP) A5FE00B0 3874 LDQ R15, 176(SP) ; R15, 176(SP) A7BE00B8 3878 LDQ FP, 184(SP) ; FP, 184(SP) 43D8141E 387C ADDQ SP, 192, SP ; SP, 192, SP 6BFC8001 3880 RET R28 ; R28 47FF041F 3884 NOP ; 3888 107_5509$: ; 011238 A3660010 3888 LDL R27, 16(R6) ; R27, 16(R6) ; 011240 275F0001 388C LDAH R26, 1(R31) ; R26, 1(R31) ; 011251 235ADFC0 3890 LDA R26, -8256(R26) ; R26, -8256(R26) 4B60F17B 3894 INSBL R27, 7, R27 ; R27, 7, R27 ; 011240 4B67179B 3898 SRA R27, 56, R27 ; R27, 56, R27 43603534 389C SUBQ R27, 1, R20 ; R27, 1, R20 EE9FFFE3 38A0 BLE R20, 107_6509$ ; R20, 107_6509$ ; 011241 A3030060 38A4 LDL R24, 96(R3) ; R24, 96(R3) ; 011251 236DFA00 38A8 LDA R27, -1536(R13) ; R27, -1536(R13) ; 011256 471A0014 38AC AND R24, R26, R20 ; R24, R26, R20 ; 011251 F69FFFDF 38B0 BNE R20, 107_6509$ ; R20, 107_6509$ ; 011253 43C2153E 38B4 SUBQ SP, 16, SP ; SP, 16, SP ; 011256 B0BE000C 38B8 STL R5, 12(SP) ; R5, 12(SP) ; 011254 B01E0008 38BC STL R0, 8(SP) ; R0, 8(SP) D35FF23B 38C0 BSR R26, GETJTUCB ; R26, GETJTUCB ; 011256 43C1141E 38C4 ADDQ SP, 8, SP ; SP, 8, SP E8000007 38C8 BLT R0, 107_509$ ; R0, 107_509$ ; 011258 47FF041F 38CC NOP ; 38D0 107_1509$: ; 011259 A01E0000 38D0 LDL R0, (SP) ; R0, (SP) ; 011260 JTDRIVER Machine Code Listing 2-DEC-1994 10:13:13 AMAC V2.1-13-2671 Page 179 V01H MFYFILT 2-DEC-1994 10:12:45 [EVERHART.JT]JTDRIVER_S2.MAR;120 236DFD50 38D4 LDA R27, -688(R13) ; R27, -688(R13) ; 011261 A0BE0004 38D8 LDL R5, 4(SP) ; R5, 4(SP) ; 011260 43C1141E 38DC ADDQ SP, 8, SP ; SP, 8, SP D35FFF5F 38E0 BSR R26, POPOUT ; R26, POPOUT ; 011261 C3FFFFD4 38E4 BR $L44 ; $L44 ; 011262 38E8 107_509$: ; 011263 B0A0023C 38E8 STL R5, 572(R0) ; R5, 572(R0) ; 011265 43E00005 38EC SEXTL R0, R5 ; R0, R5 ; 011266 A2E400D4 38F0 LDL R23, 212(R4) ; R23, 212(R4) ; 011268 A2C50130 38F4 LDL R22, 304(R5) ; R22, 304(R5) 42F60534 38F8 SUBQ R23, R22, R20 ; R23, R22, R20 E69FFFF4 38FC BEQ R20, 107_1509$ ; R20, 107_1509$ ; 011269 3900 107_30060$: A38400D4 3900 LDL R28, 212(R4) ; R28, 212(R4) ; 011270 A3650118 3904 LDL R27, 280(R5) ; R27, 280(R5) 439B0534 3908 SUBQ R28, R27, R20 ; R28, R27, R20 E69FFFF0 390C BEQ R20, 107_1509$ ; R20, 107_1509$ ; 011271 3910 107_30061$: A34400D4 3910 LDL R26, 212(R4) ; R26, 212(R4) ; 011272 A3050120 3914 LDL R24, 288(R5) ; R24, 288(R5) 43580534 3918 SUBQ R26, R24, R20 ; R26, R24, R20 E69FFFEC 391C BEQ R20, 107_1509$ ; R20, 107_1509$ ; 011273 3920 107_30062$: A2E400D4 3920 LDL R23, 212(R4) ; R23, 212(R4) ; 011274 A2C5038C 3924 LDL R22, 908(R5) ; R22, 908(R5) 42F60534 3928 SUBQ R23, R22, R20 ; R23, R22, R20 E69FFFE8 392C BEQ R20, 107_1509$ ; R20, 107_1509$ ; 011275 3930 107_30063$: A38400D4 3930 LDL R28, 212(R4) ; R28, 212(R4) ; 011276 A3450390 3934 LDL R26, 912(R5) ; R26, 912(R5) 439A0534 3938 SUBQ R28, R26, R20 ; R28, R26, R20 E69FFFE4 393C BEQ R20, 107_1509$ ; R20, 107_1509$ ; 011277 3940 107_30064$: A30400D4 3940 LDL R24, 212(R4) ; R24, 212(R4) ; 011278 A2C50394 3944 LDL R22, 916(R5) ; R22, 916(R5) 43160534 3948 SUBQ R24, R22, R20 ; R24, R22, R20 E69FFFE0 394C BEQ R20, 107_1509$ ; R20, 107_1509$ ; 011279 3950 107_30065$: A38400D4 3950 LDL R28, 212(R4) ; R28, 212(R4) ; 011280 A3450398 3954 LDL R26, 920(R5) ; R26, 920(R5) 439A0534 3958 SUBQ R28, R26, R20 ; R28, R26, R20 E69FFFDC 395C BEQ R20, 107_1509$ ; R20, 107_1509$ ; 011281 3960 107_30066$: A2E60010 3960 LDL R23, 16(R6) ; R23, 16(R6) ; 011283 4AE0F177 3964 INSBL R23, 7, R23 ; R23, 7, R23 4AE71797 3968 SRA R23, 56, R23 ; R23, 56, R23 42E03534 396C SUBQ R23, 1, R20 ; R23, 1, R20 EE9FFFD7 3970 BLE R20, 107_1509$ ; R20, 107_1509$ ; 011284 3974 107_30067$: 43C3153E 3974 SUBQ SP, 24, SP ; SP, 24, SP ; 011287 B17E0014 3978 STL R11, 20(SP) ; R11, 20(SP) B15E0010 397C STL R10, 16(SP) ; R10, 16(SP) B13E000C 3980 STL R9, 12(SP) ; R9, 12(SP) B11E0008 3984 STL R8, 8(SP) ; R8, 8(SP) B0FE0004 3988 STL R7, 4(SP) ; R7, 4(SP) B0DE0000 398C STL R6, (SP) ; R6, (SP) A1450118 3990 LDL R10, 280(R5) ; R10, 280(R5) ; 011288 JTDRIVER Machine Code Listing 2-DEC-1994 10:13:13 AMAC V2.1-13-2671 Page 180 V01H MFYFILT 2-DEC-1994 10:12:45 [EVERHART.JT]JTDRIVER_S2.MAR;120 A13E000C 3994 LDL R9, 12(SP) ; R9, 12(SP) ; 011301 A17E0014 3998 LDL R11, 20(SP) ; R11, 20(SP) ED400014 399C BLE R10, 107_5$ ; R10, 107_5$ ; 011289 A6CDFB40 39A0 LDQ R22, -1216(R13) ; R22, -1216(R13) ; 011292 494012C7 39A4 EXTWL R10, 0, R7 ; R10, 0, R7 ; 011290 A0D60000 39A8 LDL R6, (R22) ; R6, (R22) ; 011292 40E6005C 39AC S4ADDL R7, R6, R28 ; R7, R6, R28 ; 011293 A0DE0000 39B0 LDL R6, (SP) ; R6, (SP) ; 011301 A0FE0004 39B4 LDL R7, 4(SP) ; R7, 4(SP) A11C0000 39B8 LDL R8, (R28) ; R8, (R28) ; 011293 F900000C 39BC BGE R8, 107_5$ ; R8, 107_5$ ; 011295 A36800D4 39C0 LDL R27, 212(R8) ; R27, 212(R8) ; 011296 415B0534 39C4 SUBQ R10, R27, R20 ; R10, R27, R20 A15E0010 39C8 LDL R10, 16(SP) ; R10, 16(SP) ; 011301 F6800008 39CC BNE R20, 107_5$ ; R20, 107_5$ ; 011297 A34800FC 39D0 LDL R26, 252(R8) ; R26, 252(R8) ; 011299 A30400FC 39D4 LDL R24, 252(R4) ; R24, 252(R4) A11E0008 39D8 LDL R8, 8(SP) ; R8, 8(SP) ; 011301 43580534 39DC SUBQ R26, R24, R20 ; R26, R24, R20 ; 011299 F6800003 39E0 BNE R20, 107_5$ ; R20, 107_5$ ; 011300 43C3141E 39E4 ADDQ SP, 24, SP ; SP, 24, SP ; 011301 39E8 107_48$: ; 011302 C3FFFFB9 39E8 BR 107_1509$ ; 107_1509$ 47FF041F 39EC NOP ; 39F0 107_5$: ; 011303 A0DE0000 39F0 LDL R6, (SP) ; R6, (SP) ; 011304 A0FE0004 39F4 LDL R7, 4(SP) ; R7, 4(SP) A11E0008 39F8 LDL R8, 8(SP) ; R8, 8(SP) A13E000C 39FC LDL R9, 12(SP) ; R9, 12(SP) A15E0010 3A00 LDL R10, 16(SP) ; R10, 16(SP) A17E0014 3A04 LDL R11, 20(SP) ; R11, 20(SP) 43C3141E 3A08 ADDQ SP, 24, SP ; SP, 24, SP A2E50128 3A0C LDL R23, 296(R5) ; R23, 296(R5) ; 011305 46E05014 3A10 AND R23, 2, R20 ; R23, 2, R20 F6800020 3A14 BNE R20, $L110 ; R20, $L110 ; 011306 3A18 107_30068$: A3850128 3A18 LDL R28, 296(R5) ; R28, 296(R5) ; 011308 22DF0200 3A1C LDA R22, 512(R31) ; R22, 512(R31) 47960014 3A20 AND R28, R22, R20 ; R28, R22, R20 E6800042 3A24 BEQ R20, 107_701$ ; R20, 107_701$ ; 011309 43C0953E 3A28 SUBQ SP, 4, SP ; SP, 4, SP ; 011310 B01E0000 3A2C STL R0, (SP) ; R0, (SP) A0030078 3A30 LDL R0, 120(R3) ; R0, 120(R3) ; 011314 E4000044 3A34 BEQ R0, 107_702$ ; R0, 107_702$ ; 011316 47E0041B 3A38 MOV R0, R27 ; R0, R27 ; 011317 47FF0412 3A3C CLR R18 ; R18 47E09411 3A40 BIS R31, 4, R17 ; R31, 4, R17 40009410 3A44 ADDQ R0, 4, R16 ; R0, 4, R16 00000091 3A48 CALL_PAL 145 ; 145 44007000 3A4C AND R0, 3, R0 ; R0, 3, R0 424009BA 3A50 CMPLT R18, R0, R26 ; R18, R0, R26 42203131 3A54 SUBL R17, 1, R17 ; R17, 1, R17 474004D2 3A58 CMOVNE R26, R0, R18 ; R26, R0, R18 0000008F 3A5C CALL_PAL 143 ; 143 47E00414 3A60 MOV R0, R20 ; R0, R20 47FB0400 3A64 MOV R27, R0 ; R27, R0 E6800037 3A68 BEQ R20, 107_702$ ; R20, 107_702$ JTDRIVER Machine Code Listing 2-DEC-1994 10:13:13 AMAC V2.1-13-2671 Page 181 V01H MFYFILT 2-DEC-1994 10:12:45 [EVERHART.JT]JTDRIVER_S2.MAR;120 A0000004 3A6C LDL R0, 4(R0) ; R0, 4(R0) ; 011318 E4000035 3A70 BEQ R0, 107_702$ ; R0, 107_702$ ; 011319 3A74 107_7701$: ; 011320 C3FFFEDA 3A74 BR MSPC ; MSPC 3A78 110_30071$: ; 011436 2F800016 3A78 LDQ_U R28, 22(R0) ; R28, 22(R0) ; 011437 4002D41B 3A7C ADDQ R0, 22, R27 ; R0, 22, R27 4B9B02DC 3A80 EXTWL R28, R27, R28 ; R28, R27, R28 F360010F 3A84 BLBS R27, $L168 ; R27, $L168 47901014 3A88 AND R28, 128, R20 ; R28, 128, R20 F6800038 3A8C BNE R20, 110_30072$ ; R20, 110_30072$ ; 011438 C3FFFED9 3A90 BR 110_800$ ; 110_800$ 47FF041F 3A94 NOP ; 3A98 $L110: ; 011306 43C0953E 3A98 SUBQ SP, 4, SP ; SP, 4, SP ; 011338 47FF0412 3A9C CLR R18 ; R18 ; 011344 B01E0000 3AA0 STL R0, (SP) ; R0, (SP) ; 011338 47E09411 3AA4 BIS R31, 4, R17 ; R31, 4, R17 ; 011344 A0030078 3AA8 LDL R0, 120(R3) ; R0, 120(R3) ; 011342 47E00417 3AAC MOV R0, R23 ; R0, R23 ; 011344 40009410 3AB0 ADDQ R0, 4, R16 ; R0, 4, R16 00000091 3AB4 CALL_PAL 145 ; 145 44007000 3AB8 AND R0, 3, R0 ; R0, 3, R0 424009B6 3ABC CMPLT R18, R0, R22 ; R18, R0, R22 42203131 3AC0 SUBL R17, 1, R17 ; R17, 1, R17 46C004D2 3AC4 CMOVNE R22, R0, R18 ; R22, R0, R18 0000008F 3AC8 CALL_PAL 143 ; 143 47E00414 3ACC MOV R0, R20 ; R0, R20 47F70400 3AD0 MOV R23, R0 ; R23, R0 E6800076 3AD4 BEQ R20, MSPCJ ; R20, MSPCJ 47FF0412 3AD8 CLR R18 ; R18 ; 011346 A0000004 3ADC LDL R0, 4(R0) ; R0, 4(R0) ; 011345 47E09411 3AE0 BIS R31, 4, R17 ; R31, 4, R17 ; 011346 4002D410 3AE4 ADDQ R0, 22, R16 ; R0, 22, R16 47E0041C 3AE8 MOV R0, R28 ; R0, R28 00000091 3AEC CALL_PAL 145 ; 145 44007000 3AF0 AND R0, 3, R0 ; R0, 3, R0 424009BB 3AF4 CMPLT R18, R0, R27 ; R18, R0, R27 42203131 3AF8 SUBL R17, 1, R17 ; R17, 1, R17 476004D2 3AFC CMOVNE R27, R0, R18 ; R27, R0, R18 0000008F 3B00 CALL_PAL 143 ; 143 47E00414 3B04 MOV R0, R20 ; R0, R20 E6800069 3B08 BEQ R20, MSPCJ ; R20, MSPCJ 47FC0400 3B0C MOV R28, R0 ; R28, R0 4002D417 3B10 ADDQ R0, 22, R23 ; R0, 22, R23 ; 011347 2F000016 3B14 LDQ_U R24, 22(R0) ; R24, 22(R0) 4B1702D8 3B18 EXTWL R24, R23, R24 ; R24, R23, R24 F2E000EF 3B1C BLBS R23, $L170 ; R23, $L170 47101014 3B20 AND R24, 128, R20 ; R24, 128, R20 F680006A 3B24 BNE R20, 109_30069$ ; R20, 109_30069$ ; 011348 C3FFFEAD 3B28 BR MSPC ; MSPC 47FF041F 3B2C NOP ; 3B30 107_701$: ; 011321 A01E0000 3B30 LDL R0, (SP) ; R0, (SP) ; 011322 236DFD60 3B34 LDA R27, -672(R13) ; R27, -672(R13) ; 011323 A0BE0004 3B38 LDL R5, 4(SP) ; R5, 4(SP) ; 011322 43C1141E 3B3C ADDQ SP, 8, SP ; SP, 8, SP JTDRIVER Machine Code Listing 2-DEC-1994 10:13:13 AMAC V2.1-13-2671 Page 182 V01H MFYFILT 2-DEC-1994 10:12:45 [EVERHART.JT]JTDRIVER_S2.MAR;120 D35FFED3 3B40 BSR R26, PORS ; R26, PORS ; 011323 C3FFFF3C 3B44 BR $L44 ; $L44 ; 011324 3B48 107_702$: ; 011325 A01E0000 3B48 LDL R0, (SP) ; R0, (SP) 236DFD60 3B4C LDA R27, -672(R13) ; R27, -672(R13) ; 011327 A01E0004 3B50 LDL R0, 4(SP) ; R0, 4(SP) ; 011326 A0BE0008 3B54 LDL R5, 8(SP) ; R5, 8(SP) 43C1941E 3B58 ADDQ SP, 12, SP ; SP, 12, SP D35FFECC 3B5C BSR R26, PORS ; R26, PORS ; 011327 C3FFFF35 3B60 BR $L44 ; $L44 ; 011328 47FF041F 3B64 NOP ; 3B68 $L112: ; 011436 C3FFFEA3 3B68 BR 110_800$ ; 110_800$ 47FF041F 3B6C NOP ; 3B70 110_30072$: ; 011438 43C5953E 3B70 SUBQ SP, 44, SP ; SP, 44, SP ; 011445 B17E0028 3B74 STL R11, 40(SP) ; R11, 40(SP) B15E0024 3B78 STL R10, 36(SP) ; R10, 36(SP) B13E0020 3B7C STL R9, 32(SP) ; R9, 32(SP) B11E001C 3B80 STL R8, 28(SP) ; R8, 28(SP) B0FE0018 3B84 STL R7, 24(SP) ; R7, 24(SP) B0DE0014 3B88 STL R6, 20(SP) ; R6, 20(SP) B0BE0010 3B8C STL R5, 16(SP) ; R5, 16(SP) B09E000C 3B90 STL R4, 12(SP) ; R4, 12(SP) B07E0008 3B94 STL R3, 8(SP) ; R3, 8(SP) B05E0004 3B98 STL R2, 4(SP) ; R2, 4(SP) B03E0000 3B9C STL R1, (SP) ; R1, (SP) A145023C 3BA0 LDL R10, 572(R5) ; R10, 572(R5) ; 011451 F9400034 3BA4 BGE R10, 110_850$ ; R10, 110_850$ ; 011452 43EA0009 3BA8 SEXTL R10, R9 ; R10, R9 ; 011453 A14A0044 3BAC LDL R10, 68(R10) ; R10, 68(R10) ; 011454 F9400031 3BB0 BGE R10, 110_850$ ; R10, 110_850$ ; 011455 A14A0054 3BB4 LDL R10, 84(R10) ; R10, 84(R10) ; 011456 A3600018 3BB8 LDL R27, 24(R0) ; R27, 24(R0) ; 011457 436A03B4 3BBC CMPULT R27, R10, R20 ; R27, R10, R20 F680002D 3BC0 BNE R20, 110_850$ ; R20, 110_850$ ; 011458 A1290104 3BC4 LDL R9, 260(R9) ; R9, 260(R9) ; 011459 43E90018 3BC8 SEXTL R9, R24 ; R9, R24 ; 011460 4B007789 3BCC SRA R24, 3, R9 ; R24, 3, R9 41490534 3BD0 SUBQ R10, R9, R20 ; R10, R9, R20 ; 011461 FA800028 3BD4 BGE R20, 110_850$ ; R20, 110_850$ ; 011462 A145011C 3BD8 LDL R10, 284(R5) ; R10, 284(R5) ; 011467 43E00009 3BDC SEXTL R0, R9 ; R0, R9 ; 011465 F9400025 3BE0 BGE R10, 110_850$ ; R10, 110_850$ ; 011468 A2EA0088 3BE4 LDL R23, 136(R10) ; R23, 136(R10) ; 011469 46E21014 3BE8 AND R23, 16, R20 ; R23, 16, R20 E6800022 3BEC BEQ R20, 110_850$ ; R20, 110_850$ ; 011470 A2CA007C 3BF0 LDL R22, 124(R10) ; R22, 124(R10) ; 011472 E6C00020 3BF4 BEQ R22, 110_850$ ; R22, 110_850$ ; 011476 A38A0024 3BF8 LDL R28, 36(R10) ; R28, 36(R10) ; 011477 FB80001E 3BFC BGE R28, 110_850$ ; R28, 110_850$ ; 011478 43C2153E 3C00 SUBQ SP, 16, SP ; SP, 16, SP ; 011480 A76DFD48 3C04 LDQ R27, -696(R13) ; R27, -696(R13) ; 011481 B11E000C 3C08 STL R8, 12(SP) ; R8, 12(SP) ; 011480 B0FE0008 3C0C STL R7, 8(SP) ; R7, 8(SP) B0DE0004 3C10 STL R6, 4(SP) ; R6, 4(SP) B0BE0000 3C14 STL R5, (SP) ; R5, (SP) JTDRIVER Machine Code Listing 2-DEC-1994 10:13:13 AMAC V2.1-13-2671 Page 183 V01H MFYFILT 2-DEC-1994 10:12:45 [EVERHART.JT]JTDRIVER_S2.MAR;120 A0FB0000 3C18 LDL R7, (R27) ; R7, (R27) ; 011481 47FF041F 3C1C NOP ; 3C20 110_100$: ; 011482 A0D50000 3C20 LDL R6, (R21) ; R6, (R21) 40E6005A 3C24 S4ADDL R7, R6, R26 ; R7, R6, R26 ; 011483 A11A0000 3C28 LDL R8, (R26) ; R8, (R26) F9000004 3C2C BGE R8, 110_101$ ; R8, 110_101$ ; 011485 A3050118 3C30 LDL R24, 280(R5) ; R24, 280(R5) ; 011486 A2E800D4 3C34 LDL R23, 212(R8) ; R23, 212(R8) 43170534 3C38 SUBQ R24, R23, R20 ; R24, R23, R20 E6800003 3C3C BEQ R20, 110_102$ ; R20, 110_102$ ; 011487 3C40 110_101$: ; 011488 40E03127 3C40 SUBL R7, 1, R7 ; R7, 1, R7 FCFFFFF6 3C44 BGT R7, 110_100$ ; R7, 110_100$ B3E50118 3C48 STL R31, 280(R5) ; R31, 280(R5) ; 011489 3C4C 110_102$: ; 011490 A0BE0000 3C4C LDL R5, (SP) ; R5, (SP) A0DE0004 3C50 LDL R6, 4(SP) ; R6, 4(SP) A0FE0008 3C54 LDL R7, 8(SP) ; R7, 8(SP) A11E000C 3C58 LDL R8, 12(SP) ; R8, 12(SP) 43C2141E 3C5C ADDQ SP, 16, SP ; SP, 16, SP A2C50118 3C60 LDL R22, 280(R5) ; R22, 280(R5) ; 011491 E6C00004 3C64 BEQ R22, 110_850$ ; R22, 110_850$ ; 011492 43C1153E 3C68 SUBQ SP, 8, SP ; SP, 8, SP ; 011494 236DFD70 3C6C LDA R27, -656(R13) ; R27, -656(R13) D34000BF 3C70 BSR R26, SNDEXMSG ; R26, SNDEXMSG 43C1141E 3C74 ADDQ SP, 8, SP ; SP, 8, SP 3C78 110_850$: ; 011495 A03E0000 3C78 LDL R1, (SP) ; R1, (SP) A05E0004 3C7C LDL R2, 4(SP) ; R2, 4(SP) A07E0008 3C80 LDL R3, 8(SP) ; R3, 8(SP) A09E000C 3C84 LDL R4, 12(SP) ; R4, 12(SP) A0BE0010 3C88 LDL R5, 16(SP) ; R5, 16(SP) A0DE0014 3C8C LDL R6, 20(SP) ; R6, 20(SP) A0FE0018 3C90 LDL R7, 24(SP) ; R7, 24(SP) A11E001C 3C94 LDL R8, 28(SP) ; R8, 28(SP) A13E0020 3C98 LDL R9, 32(SP) ; R9, 32(SP) A15E0024 3C9C LDL R10, 36(SP) ; R10, 36(SP) A17E0028 3CA0 LDL R11, 40(SP) ; R11, 40(SP) 43C5941E 3CA4 ADDQ SP, 44, SP ; SP, 44, SP C3FFFE53 3CA8 BR 110_800$ ; 110_800$ ; 011496 47FF041F 3CAC NOP ; 3CB0 MSPCJ: ; 011329 A01E0000 3CB0 LDL R0, (SP) ; R0, (SP) 236DFD60 3CB4 LDA R27, -672(R13) ; R27, -672(R13) ; 011331 A01E0004 3CB8 LDL R0, 4(SP) ; R0, 4(SP) ; 011330 A0BE0008 3CBC LDL R5, 8(SP) ; R5, 8(SP) 43C1941E 3CC0 ADDQ SP, 12, SP ; SP, 12, SP D35FFE72 3CC4 BSR R26, PORS ; R26, PORS ; 011331 C3FFFEDB 3CC8 BR $L44 ; $L44 ; 011332 47FF041F 3CCC NOP ; 3CD0 109_30069$: ; 011348 A3850128 3CD0 LDL R28, 296(R5) ; R28, 296(R5) ; 011353 47841014 3CD4 AND R28, 32, R20 ; R28, 32, R20 E6800024 3CD8 BEQ R20, 109_1$ ; R20, 109_1$ ; 011354 2F400016 3CDC LDQ_U R26, 22(R0) ; R26, 22(R0) ; 011356 4002D418 3CE0 ADDQ R0, 22, R24 ; R0, 22, R24 JTDRIVER Machine Code Listing 2-DEC-1994 10:13:13 AMAC V2.1-13-2671 Page 184 V01H MFYFILT 2-DEC-1994 10:12:45 [EVERHART.JT]JTDRIVER_S2.MAR;120 4B5802DA 3CE4 EXTWL R26, R24, R26 ; R26, R24, R26 F3000082 3CE8 BLBS R24, $L172 ; R24, $L172 3CEC $L173: 47407014 3CEC AND R26, 3, R20 ; R26, 3, R20 F680001E 3CF0 BNE R20, 109_1$ ; R20, 109_1$ ; 011357 A3650128 3CF4 LDL R27, 296(R5) ; R27, 296(R5) ; 011363 239F4000 3CF8 LDA R28, 16384(R31) ; R28, 16384(R31) 477C0014 3CFC AND R27, R28, R20 ; R27, R28, R20 E680000A 3D00 BEQ R20, 109_704$ ; R20, 109_704$ ; 011364 2F000016 3D04 LDQ_U R24, 22(R0) ; R24, 22(R0) ; 011365 4002D416 3D08 ADDQ R0, 22, R22 ; R0, 22, R22 4B1602D7 3D0C EXTWL R24, R22, R23 ; R24, R22, R23 F2C0007C 3D10 BLBS R22, $L174 ; R22, $L174 3D14 $L175: 46E1141A 3D14 BIS R23, 8, R26 ; R23, 8, R26 4B560375 3D18 INSWL R26, R22, R21 ; R26, R22, R21 4B160258 3D1C MSKWL R24, R22, R24 ; R24, R22, R24 47150418 3D20 BIS R24, R21, R24 ; R24, R21, R24 F2C0007B 3D24 BLBS R22, $L176 ; R22, $L176 3D28 $L177: 3F000016 3D28 STQ_U R24, 22(R0) ; R24, 22(R0) 3D2C 109_704$: ; 011366 A3650140 3D2C LDL R27, 320(R5) ; R27, 320(R5) ; 011367 4360313B 3D30 SUBL R27, 1, R27 ; R27, 1, R27 B3650140 3D34 STL R27, 320(R5) ; R27, 320(R5) FF60000C 3D38 BGT R27, 109_1$ ; R27, 109_1$ ; 011368 A3450144 3D3C LDL R26, 324(R5) ; R26, 324(R5) ; 011369 4002D41C 3D40 ADDQ R0, 22, R28 ; R0, 22, R28 ; 011370 B3450140 3D44 STL R26, 320(R5) ; R26, 320(R5) ; 011369 2EE00016 3D48 LDQ_U R23, 22(R0) ; R23, 22(R0) ; 011370 4AFC02D6 3D4C EXTWL R23, R28, R22 ; R23, R28, R22 F3800075 3D50 BLBS R28, $L178 ; R28, $L178 3D54 $L179: 46C05418 3D54 BIS R22, 2, R24 ; R22, 2, R24 4B1C0375 3D58 INSWL R24, R28, R21 ; R24, R28, R21 4AFC0257 3D5C MSKWL R23, R28, R23 ; R23, R28, R23 46F50417 3D60 BIS R23, R21, R23 ; R23, R21, R23 F3800074 3D64 BLBS R28, $L180 ; R28, $L180 3D68 $L181: 3EE00016 3D68 STQ_U R23, 22(R0) ; R23, 22(R0) 3D6C 109_1$: ; 011374 43C3953E 3D6C SUBQ SP, 28, SP ; SP, 28, SP ; 011377 4002D41A 3D70 ADDQ R0, 22, R26 ; R0, 22, R26 ; 011378 B11E0018 3D74 STL R8, 24(SP) ; R8, 24(SP) ; 011377 B0FE0014 3D78 STL R7, 20(SP) ; R7, 20(SP) B0DE0010 3D7C STL R6, 16(SP) ; R6, 16(SP) B0BE000C 3D80 STL R5, 12(SP) ; R5, 12(SP) B09E0008 3D84 STL R4, 8(SP) ; R4, 8(SP) B07E0004 3D88 STL R3, 4(SP) ; R3, 4(SP) B05E0000 3D8C STL R2, (SP) ; R2, (SP) 2F600016 3D90 LDQ_U R27, 22(R0) ; R27, 22(R0) ; 011378 4B7A02DB 3D94 EXTWL R27, R26, R27 ; R27, R26, R27 F340006C 3D98 BLBS R26, $L182 ; R26, $L182 3D9C $L183: 47603014 3D9C AND R27, 1, R20 ; R27, 1, R20 F680003D 3DA0 BNE R20, 109_222$ ; R20, 109_222$ ; 011379 3DA4 109_30070$: JTDRIVER Machine Code Listing 2-DEC-1994 10:13:13 AMAC V2.1-13-2671 Page 185 V01H MFYFILT 2-DEC-1994 10:12:45 [EVERHART.JT]JTDRIVER_S2.MAR;120 A0E60004 3DA4 LDL R7, 4(R6) ; R7, 4(R6) ; 011380 F8E0003B 3DA8 BGE R7, 109_222$ ; R7, 109_222$ ; 011381 A1070020 3DAC LDL R8, 32(R7) ; R8, 32(R7) ; 011382 F9000039 3DB0 BGE R8, 109_222$ ; R8, 109_222$ ; 011383 A0C80044 3DB4 LDL R6, 68(R8) ; R6, 68(R8) ; 011384 E4C00037 3DB8 BEQ R6, 109_222$ ; R6, 109_222$ ; 011385 A2C501A4 3DBC LDL R22, 420(R5) ; R22, 420(R5) ; 011393 43C8153E 3DC0 SUBQ SP, 64, SP ; SP, 64, SP A74D0020 3DC4 LDQ R26, 32(R13) ; R26, 32(R13) B41E0000 3DC8 STQ R0, (SP) ; R0, (SP) B43E0008 3DCC STQ R1, 8(SP) ; R1, 8(SP) B61E0010 3DD0 STQ R16, 16(SP) ; R16, 16(SP) B63E0018 3DD4 STQ R17, 24(SP) ; R17, 24(SP) 47F60411 3DD8 MOV R22, R17 ; R22, R17 B65E0020 3DDC STQ R18, 32(SP) ; R18, 32(SP) 47E60410 3DE0 MOV R6, R16 ; R6, R16 B67E0028 3DE4 STQ R19, 40(SP) ; R19, 40(SP) A76D0028 3DE8 LDQ R27, 40(R13) ; R27, 40(R13) B73E0030 3DEC STQ R25, 48(SP) ; R25, 48(SP) 6B5A4000 3DF0 JSR R26, R26 ; R26, R26 47E00406 3DF4 MOV R0, R6 ; R0, R6 A41E0000 3DF8 LDQ R0, (SP) ; R0, (SP) A43E0008 3DFC LDQ R1, 8(SP) ; R1, 8(SP) 40C03006 3E00 ADDL R6, 1, R6 ; R6, 1, R6 ; 011394 A61E0010 3E04 LDQ R16, 16(SP) ; R16, 16(SP) ; 011393 A63E0018 3E08 LDQ R17, 24(SP) ; R17, 24(SP) A65E0020 3E0C LDQ R18, 32(SP) ; R18, 32(SP) A67E0028 3E10 LDQ R19, 40(SP) ; R19, 40(SP) A73E0030 3E14 LDQ R25, 48(SP) ; R25, 48(SP) 43C8141E 3E18 ADDQ SP, 64, SP ; SP, 64, SP A38501A0 3E1C LDL R28, 416(R5) ; R28, 416(R5) ; 011397 40DC0534 3E20 SUBQ R6, R28, R20 ; R6, R28, R20 EE800001 3E24 BLE R20, 109_1222$ ; R20, 109_1222$ ; 011398 A0C501A0 3E28 LDL R6, 416(R5) ; R6, 416(R5) ; 011399 3E2C 109_1222$: ; 011400 A2A5019C 3E2C LDL R21, 412(R5) ; R21, 412(R5) ; 011402 40D50534 3E30 SUBQ R6, R21, R20 ; R6, R21, R20 46950886 3E34 CMOVLT R20, R21, R6 ; R20, R21, R6 ; 011404 3E38 109_1223$: ; 011405 A105023C 3E38 LDL R8, 572(R5) ; R8, 572(R5) ; 011408 F9000016 3E3C BGE R8, 109_222$ ; R8, 109_222$ ; 011409 A1080044 3E40 LDL R8, 68(R8) ; R8, 68(R8) ; 011410 F9000014 3E44 BGE R8, 109_222$ ; R8, 109_222$ ; 011411 A1080054 3E48 LDL R8, 84(R8) ; R8, 84(R8) ; 011412 43E8001A 3E4C SEXTL R8, R26 ; R8, R26 ; 011413 4B407788 3E50 SRA R26, 3, R8 ; R26, 3, R8 40C80534 3E54 SUBQ R6, R8, R20 ; R6, R8, R20 ; 011414 EE800001 3E58 BLE R20, 109_3223$ ; R20, 109_3223$ ; 011416 43E80006 3E5C SEXTL R8, R6 ; R8, R6 ; 011417 3E60 109_3223$: ; 011418 A3000018 3E60 LDL R24, 24(R0) ; R24, 24(R0) ; 011420 40D80534 3E64 SUBQ R6, R24, R20 ; R6, R24, R20 EE80000B 3E68 BLE R20, 109_222$ ; R20, 109_222$ ; 011421 A2C50128 3E6C LDL R22, 296(R5) ; R22, 296(R5) ; 011424 22FF1000 3E70 LDA R23, 4096(R31) ; R23, 4096(R31) 46D70014 3E74 AND R22, R23, R20 ; R22, R23, R20 E6800006 3E78 BEQ R20, 109_2222$ ; R20, 109_2222$ ; 011425 JTDRIVER Machine Code Listing 2-DEC-1994 10:13:13 AMAC V2.1-13-2671 Page 186 V01H MFYFILT 2-DEC-1994 10:12:45 [EVERHART.JT]JTDRIVER_S2.MAR;120 2F600016 3E7C LDQ_U R27, 22(R0) ; R27, 22(R0) ; 011426 4002D41A 3E80 ADDQ R0, 22, R26 ; R0, 22, R26 4B7A02DB 3E84 EXTWL R27, R26, R27 ; R27, R26, R27 F3400034 3E88 BLBS R26, $L184 ; R26, $L184 3E8C $L185: 47611014 3E8C AND R27, 8, R20 ; R27, 8, R20 E6800001 3E90 BEQ R20, 109_222$ ; R20, 109_222$ ; 011427 3E94 109_2222$: ; 011428 B0C00018 3E94 STL R6, 24(R0) ; R6, 24(R0) ; 011429 3E98 109_222$: ; 011430 A05E0000 3E98 LDL R2, (SP) ; R2, (SP) ; 011431 A07E0004 3E9C LDL R3, 4(SP) ; R3, 4(SP) A09E0008 3EA0 LDL R4, 8(SP) ; R4, 8(SP) A0BE000C 3EA4 LDL R5, 12(SP) ; R5, 12(SP) A0DE0010 3EA8 LDL R6, 16(SP) ; R6, 16(SP) A0FE0014 3EAC LDL R7, 20(SP) ; R7, 20(SP) A11E0018 3EB0 LDL R8, 24(SP) ; R8, 24(SP) 43C3941E 3EB4 ADDQ SP, 28, SP ; SP, 28, SP C3FFFDC9 3EB8 BR MSPC ; MSPC ; 011433 47FF041F 3EBC NOP ; 3EC0 $L111: ; 011379 C3FFFFF5 3EC0 BR 109_222$ ; 109_222$ 3EC4 $L168: ; 011437 2F000017 3EC4 LDQ_U R24, 23(R0) ; R24, 23(R0) 4B1B0B5A 3EC8 EXTWH R24, R27, R26 ; R24, R27, R26 479A041C 3ECC BIS R28, R26, R28 ; R28, R26, R28 47901014 3ED0 AND R28, 128, R20 ; R28, 128, R20 F69FFF26 3ED4 BNE R20, 110_30072$ ; R20, 110_30072$ ; 011438 C3FFFDC7 3ED8 BR 110_800$ ; 110_800$ 3EDC $L170: ; 011347 2F800017 3EDC LDQ_U R28, 23(R0) ; R28, 23(R0) 4B970B56 3EE0 EXTWH R28, R23, R22 ; R28, R23, R22 47160418 3EE4 BIS R24, R22, R24 ; R24, R22, R24 47101014 3EE8 AND R24, 128, R20 ; R24, 128, R20 F69FFF78 3EEC BNE R20, 109_30069$ ; R20, 109_30069$ ; 011348 C3FFFDBB 3EF0 BR MSPC ; MSPC 3EF4 $L172: ; 011356 2EC00017 3EF4 LDQ_U R22, 23(R0) ; R22, 23(R0) 4AD80B57 3EF8 EXTWH R22, R24, R23 ; R22, R24, R23 4757041A 3EFC BIS R26, R23, R26 ; R26, R23, R26 C3FFFF7A 3F00 BR $L173 ; $L173 3F04 $L174: ; 011365 2F600017 3F04 LDQ_U R27, 23(R0) ; R27, 23(R0) 4B760B5C 3F08 EXTWH R27, R22, R28 ; R27, R22, R28 46FC0417 3F0C BIS R23, R28, R23 ; R23, R28, R23 C3FFFF80 3F10 BR $L175 ; $L175 3F14 $L176: 4B560AF5 3F14 INSWH R26, R22, R21 ; R26, R22, R21 4B760A5B 3F18 MSKWH R27, R22, R27 ; R27, R22, R27 4775041B 3F1C BIS R27, R21, R27 ; R27, R21, R27 3F600017 3F20 STQ_U R27, 23(R0) ; R27, 23(R0) C3FFFF80 3F24 BR $L177 ; $L177 3F28 $L178: ; 011370 2F400017 3F28 LDQ_U R26, 23(R0) ; R26, 23(R0) 4B5C0B5B 3F2C EXTWH R26, R28, R27 ; R26, R28, R27 46DB0416 3F30 BIS R22, R27, R22 ; R22, R27, R22 C3FFFF87 3F34 BR $L179 ; $L179 JTDRIVER Machine Code Listing 2-DEC-1994 10:13:13 AMAC V2.1-13-2671 Page 187 V01H MFYFILT 2-DEC-1994 10:12:45 [EVERHART.JT]JTDRIVER_S2.MAR;120 3F38 $L180: 4B1C0AF5 3F38 INSWH R24, R28, R21 ; R24, R28, R21 4B5C0A5A 3F3C MSKWH R26, R28, R26 ; R26, R28, R26 4755041A 3F40 BIS R26, R21, R26 ; R26, R21, R26 3F400017 3F44 STQ_U R26, 23(R0) ; R26, 23(R0) C3FFFF87 3F48 BR $L181 ; $L181 3F4C $L182: ; 011378 2EE00017 3F4C LDQ_U R23, 23(R0) ; R23, 23(R0) 4AFA0B58 3F50 EXTWH R23, R26, R24 ; R23, R26, R24 4778041B 3F54 BIS R27, R24, R27 ; R27, R24, R27 C3FFFF90 3F58 BR $L183 ; $L183 3F5C $L184: ; 011426 2EE00017 3F5C LDQ_U R23, 23(R0) ; R23, 23(R0) 4AFA0B58 3F60 EXTWH R23, R26, R24 ; R23, R26, R24 4778041B 3F64 BIS R27, R24, R27 ; R27, R24, R27 C3FFFFC8 3F68 BR $L185 ; $L185 47FF041F 3F6C NOP ; Routine Size: 1984 bytes, Routine Base: $$$115_DRIVER + 37B0 3F70 SNDEXMSG: ; 011505 43CE153E 3F70 SUBQ SP, 112, SP ; SP, 112, SP B75E0008 3F74 STQ R26, 8(SP) ; R26, 8(SP) B45E0010 3F78 STQ R2, 16(SP) ; R2, 16(SP) B47E0018 3F7C STQ R3, 24(SP) ; R3, 24(SP) B49E0020 3F80 STQ R4, 32(SP) ; R4, 32(SP) B4BE0028 3F84 STQ R5, 40(SP) ; R5, 40(SP) B4DE0030 3F88 STQ R6, 48(SP) ; R6, 48(SP) B4FE0038 3F8C STQ R7, 56(SP) ; R7, 56(SP) B51E0040 3F90 STQ R8, 64(SP) ; R8, 64(SP) B53E0048 3F94 STQ R9, 72(SP) ; R9, 72(SP) B55E0050 3F98 STQ R10, 80(SP) ; R10, 80(SP) B57E0058 3F9C STQ R11, 88(SP) ; R11, 88(SP) B5BE0060 3FA0 STQ R13, 96(SP) ; R13, 96(SP) 47FB040D 3FA4 MOV R27, R13 ; R27, R13 B5FE0068 3FA8 STQ R15, 104(SP) ; R15, 104(SP) 3FAC $L45: A74DFD90 3FAC LDQ R26, -624(R13) ; R26, -624(R13) ; 011508 47EE1401 3FB0 BIS R31, 112, R1 ; R31, 112, R1 ; 011507 A76DFD98 3FB4 LDQ R27, -616(R13) ; R27, -616(R13) ; 011508 6B5A4000 3FB8 JSR R26, R26 ; R26, R26 F0000010 3FBC BLBS R0, 111_1$ ; R0, 111_1$ ; 011509 3FC0 $L46: ; 011510 A79E0008 3FC0 LDQ R28, 8(SP) ; R28, 8(SP) A45E0010 3FC4 LDQ R2, 16(SP) ; R2, 16(SP) A47E0018 3FC8 LDQ R3, 24(SP) ; R3, 24(SP) A49E0020 3FCC LDQ R4, 32(SP) ; R4, 32(SP) A4BE0028 3FD0 LDQ R5, 40(SP) ; R5, 40(SP) A4DE0030 3FD4 LDQ R6, 48(SP) ; R6, 48(SP) A4FE0038 3FD8 LDQ R7, 56(SP) ; R7, 56(SP) A51E0040 3FDC LDQ R8, 64(SP) ; R8, 64(SP) A53E0048 3FE0 LDQ R9, 72(SP) ; R9, 72(SP) A55E0050 3FE4 LDQ R10, 80(SP) ; R10, 80(SP) A57E0058 3FE8 LDQ R11, 88(SP) ; R11, 88(SP) A5BE0060 3FEC LDQ R13, 96(SP) ; R13, 96(SP) A5FE0068 3FF0 LDQ R15, 104(SP) ; R15, 104(SP) 43CE141E 3FF4 ADDQ SP, 112, SP ; SP, 112, SP JTDRIVER Machine Code Listing 2-DEC-1994 10:13:13 AMAC V2.1-13-2671 Page 188 V01H SNDEXMSG 2-DEC-1994 10:12:45 [EVERHART.JT]JTDRIVER_S2.MAR;120 6BFC8001 3FF8 RET R28 ; R28 47FF041F 3FFC NOP ; 4000 111_1$: ; 011511 43C3153E 4000 SUBQ SP, 24, SP ; SP, 24, SP ; 011512 47E20419 4004 MOV R2, R25 ; R2, R25 B0BE0014 4008 STL R5, 20(SP) ; R5, 20(SP) 47FFF418 400C BIS R31, 255, R24 ; R31, 255, R24 B09E0010 4010 STL R4, 16(SP) ; R4, 16(SP) 4720F004 4014 AND R25, 7, R4 ; R25, 7, R4 B07E000C 4018 STL R3, 12(SP) ; R3, 12(SP) 4B040724 401C SLL R24, R4, R4 ; R24, R4, R4 B05E0008 4020 STL R2, 8(SP) ; R2, 8(SP) B03E0004 4024 STL R1, 4(SP) ; R1, 4(SP) B01E0000 4028 STL R0, (SP) ; R0, (SP) 2DF90000 402C LDQ_U R15, (R25) ; R15, (R25) 49E4060F 4030 ZAP R15, R4, R15 ; R15, R4, R15 3DF90000 4034 STQ_U R15, (R25) ; R15, (R25) 3FF90008 4038 STQ_U R31, 8(R25) ; R31, 8(R25) 48811684 403C SRL R4, 8, R4 ; R4, 8, R4 3FF90010 4040 STQ_U R31, 16(R25) ; R31, 16(R25) 3FF90018 4044 STQ_U R31, 24(R25) ; R31, 24(R25) 3FF90020 4048 STQ_U R31, 32(R25) ; R31, 32(R25) 3FF90028 404C STQ_U R31, 40(R25) ; R31, 40(R25) 3FF90030 4050 STQ_U R31, 48(R25) ; R31, 48(R25) 3FF90038 4054 STQ_U R31, 56(R25) ; R31, 56(R25) 3FF90040 4058 STQ_U R31, 64(R25) ; R31, 64(R25) 3FF90048 405C STQ_U R31, 72(R25) ; R31, 72(R25) 3FF90050 4060 STQ_U R31, 80(R25) ; R31, 80(R25) 3FF90058 4064 STQ_U R31, 88(R25) ; R31, 88(R25) 3FF90060 4068 STQ_U R31, 96(R25) ; R31, 96(R25) 3FF90068 406C STQ_U R31, 104(R25) ; R31, 104(R25) E4800003 4070 BEQ R4, $L186 ; R4, $L186 2DF90070 4074 LDQ_U R15, 112(R25) ; R15, 112(R25) 49E4060F 4078 ZAP R15, R4, R15 ; R15, R4, R15 3DF90070 407C STQ_U R15, 112(R25) ; R15, 112(R25) 4080 $L186: A01E0000 4080 LDL R0, (SP) ; R0, (SP) 47E05419 4084 BIS R31, 2, R25 ; R31, 2, R25 ; 011527 A03E0004 4088 LDL R1, 4(SP) ; R1, 4(SP) ; 011512 A05E0008 408C LDL R2, 8(SP) ; R2, 8(SP) A07E000C 4090 LDL R3, 12(SP) ; R3, 12(SP) A09E0010 4094 LDL R4, 16(SP) ; R4, 16(SP) A0BE0014 4098 LDL R5, 20(SP) ; R5, 20(SP) 43C3141E 409C ADDQ SP, 24, SP ; SP, 24, SP 43C5953E 40A0 SUBQ SP, 44, SP ; SP, 44, SP ; 011514 A6EDFCD0 40A4 LDQ R23, -816(R13) ; R23, -816(R13) ; 011535 43E2000B 40A8 SEXTL R2, R11 ; R2, R11 ; 011513 B17E0028 40AC STL R11, 40(SP) ; R11, 40(SP) ; 011514 B15E0024 40B0 STL R10, 36(SP) ; R10, 36(SP) B13E0020 40B4 STL R9, 32(SP) ; R9, 32(SP) B11E001C 40B8 STL R8, 28(SP) ; R8, 28(SP) B0FE0018 40BC STL R7, 24(SP) ; R7, 24(SP) B0DE0014 40C0 STL R6, 20(SP) ; R6, 20(SP) B0BE0010 40C4 STL R5, 16(SP) ; R5, 16(SP) B09E000C 40C8 STL R4, 12(SP) ; R4, 12(SP) B07E0008 40CC STL R3, 8(SP) ; R3, 8(SP) B05E0004 40D0 STL R2, 4(SP) ; R2, 4(SP) JTDRIVER Machine Code Listing 2-DEC-1994 10:13:13 AMAC V2.1-13-2671 Page 189 V01H SNDEXMSG 2-DEC-1994 10:12:45 [EVERHART.JT]JTDRIVER_S2.MAR;120 B03E0000 40D4 STL R1, (SP) ; R1, (SP) B1620000 40D8 STL R11, (R2) ; R11, (R2) ; 011515 A005023C 40DC LDL R0, 572(R5) ; R0, 572(R5) ; 011524 A0200038 40E0 LDL R1, 56(R0) ; R1, 56(R0) ; 011525 B32B0004 40E4 STL R25, 4(R11) ; R25, 4(R11) ; 011527 40229401 40E8 ADDQ R1, 20, R1 ; R1, 20, R1 ; 011526 A3010000 40EC LDL R24, (R1) ; R24, (R1) ; 011528 40209401 40F0 ADDQ R1, 4, R1 ; R1, 4, R1 B30B0008 40F4 STL R24, 8(R11) ; R24, 8(R11) A3410000 40F8 LDL R26, (R1) ; R26, (R1) ; 011529 40209401 40FC ADDQ R1, 4, R1 ; R1, 4, R1 B34B000C 4100 STL R26, 12(R11) ; R26, 12(R11) A3210000 4104 LDL R25, (R1) ; R25, (R1) ; 011530 40209401 4108 ADDQ R1, 4, R1 ; R1, 4, R1 B32B0010 410C STL R25, 16(R11) ; R25, 16(R11) A3010000 4110 LDL R24, (R1) ; R24, (R1) ; 011531 40209401 4114 ADDQ R1, 4, R1 ; R1, 4, R1 B30B0014 4118 STL R24, 20(R11) ; R24, 20(R11) A3400074 411C LDL R26, 116(R0) ; R26, 116(R0) ; 011532 4B4012DA 4120 EXTWL R26, 0, R26 ; R26, 0, R26 B34B0018 4124 STL R26, 24(R11) ; R26, 24(R11) B06B001C 4128 STL R3, 28(R11) ; R3, 28(R11) ; 011534 A0970000 412C LDL R4, (R23) ; R4, (R23) ; 011535 A74D0020 4130 LDQ R26, 32(R13) ; R26, 32(R13) ; 011546 B08B0020 4134 STL R4, 32(R11) ; R4, 32(R11) ; 011536 B00B0024 4138 STL R0, 36(R11) ; R0, 36(R11) ; 011537 B0CB0028 413C STL R6, 40(R11) ; R6, 40(R11) ; 011538 B0EB002C 4140 STL R7, 44(R11) ; R7, 44(R11) ; 011539 B10B0030 4144 STL R8, 48(R11) ; R8, 48(R11) ; 011540 B12B0034 4148 STL R9, 52(R11) ; R9, 52(R11) ; 011541 A3290018 414C LDL R25, 24(R9) ; R25, 24(R9) ; 011542 B32B0038 4150 STL R25, 56(R11) ; R25, 56(R11) A3090004 4154 LDL R24, 4(R9) ; R24, 4(R9) ; 011543 B30B003C 4158 STL R24, 60(R11) ; R24, 60(R11) A3290008 415C LDL R25, 8(R9) ; R25, 8(R9) ; 011544 B32B0040 4160 STL R25, 64(R11) ; R25, 64(R11) A3090000 4164 LDL R24, (R9) ; R24, (R9) ; 011545 B30B0044 4168 STL R24, 68(R11) ; R24, 68(R11) B34B0048 416C STL R26, 72(R11) ; R26, 72(R11) ; 011546 A3370000 4170 LDL R25, (R23) ; R25, (R23) ; 011547 B32B004C 4174 STL R25, 76(R11) ; R25, 76(R11) A0970000 4178 LDL R4, (R23) ; R4, (R23) ; 011548 A30400D4 417C LDL R24, 212(R4) ; R24, 212(R4) ; 011549 B30B0050 4180 STL R24, 80(R11) ; R24, 80(R11) A34400D8 4184 LDL R26, 216(R4) ; R26, 216(R4) ; 011550 B34B0054 4188 STL R26, 84(R11) ; R26, 84(R11) A0200038 418C LDL R1, 56(R0) ; R1, 56(R0) ; 011551 A3210034 4190 LDL R25, 52(R1) ; R25, 52(R1) ; 011552 B32B0058 4194 STL R25, 88(R11) ; R25, 88(R11) A021002C 4198 LDL R1, 44(R1) ; R1, 44(R1) ; 011553 F8200004 419C BGE R1, 111_833$ ; R1, 111_833$ ; 011554 A3010048 41A0 LDL R24, 72(R1) ; R24, 72(R1) ; 011555 B30B005C 41A4 STL R24, 92(R11) ; R24, 92(R11) A2C1004C 41A8 LDL R22, 76(R1) ; R22, 76(R1) ; 011556 B2CB0060 41AC STL R22, 96(R11) ; R22, 96(R11) 41B0 111_833$: ; 011557 43C1953E 41B0 SUBQ SP, 12, SP ; SP, 12, SP ; 011561 JTDRIVER Machine Code Listing 2-DEC-1994 10:13:13 AMAC V2.1-13-2671 Page 190 V01H SNDEXMSG 2-DEC-1994 10:12:45 [EVERHART.JT]JTDRIVER_S2.MAR;120 A74D0010 41B4 LDQ R26, 16(R13) ; R26, 16(R13) ; 011566 43E5000A 41B8 SEXTL R5, R10 ; R5, R10 ; 011563 A76D0018 41BC LDQ R27, 24(R13) ; R27, 24(R13) ; 011566 B0BE0008 41C0 STL R5, 8(SP) ; R5, 8(SP) ; 011561 B09E0004 41C4 STL R4, 4(SP) ; R4, 4(SP) B07E0000 41C8 STL R3, (SP) ; R3, (SP) 47EC9403 41CC BIS R31, 100, R3 ; R31, 100, R3 ; 011562 A0A5011C 41D0 LDL R5, 284(R5) ; R5, 284(R5) ; 011564 43EB0004 41D4 SEXTL R11, R4 ; R11, R4 ; 011565 43C1153E 41D8 SUBQ SP, 8, SP ; SP, 8, SP ; 011566 6B5A4000 41DC JSR R26, R26 ; R26, R26 277F0080 41E0 LDAH R27, 128(R31) ; R27, 128(R31) ; 011571 A07E0008 41E4 LDL R3, 8(SP) ; R3, 8(SP) ; 011567 A09E000C 41E8 LDL R4, 12(SP) ; R4, 12(SP) A0BE0010 41EC LDL R5, 16(SP) ; R5, 16(SP) 43C2941E 41F0 ADDQ SP, 20, SP ; SP, 20, SP E0000024 41F4 BLBC R0, 111_40$ ; R0, 111_40$ ; 011568 A78DFCD0 41F8 LDQ R28, -816(R13) ; R28, -816(R13) ; 011570 253F0080 41FC LDAH R9, 128(R31) ; R9, 128(R31) ; 011569 A09C0000 4200 LDL R4, (R28) ; R4, (R28) ; 011570 A3440080 4204 LDL R26, 128(R4) ; R26, 128(R4) ; 011571 475B0010 4208 AND R26, R27, R16 ; R26, R27, R16 461F04C9 420C CMOVNE R16, R31, R9 ; R16, R31, R9 ; 011573 4210 111_67$: ; 011574 A3040080 4210 LDL R24, 128(R4) ; R24, 128(R4) 47FF0410 4214 CLR R16 ; R16 ; 011578 47E00417 4218 MOV R0, R23 ; R0, R23 47E10416 421C MOV R1, R22 ; R1, R22 47090418 4220 BIS R24, R9, R24 ; R24, R9, R24 ; 011574 B3040080 4224 STL R24, 128(R4) ; R24, 128(R4) B3EB0004 4228 STL R31, 4(R11) ; R31, 4(R11) ; 011576 0000000F 422C CALL_PAL 15 ; 15 ; 011578 47F70400 4230 MOV R23, R0 ; R23, R0 47F60401 4234 MOV R22, R1 ; R22, R1 4238 111_65$: ; 011580 A38B0004 4238 LDL R28, 4(R11) ; R28, 4(R11) 47E3F410 423C BIS R31, 31, R16 ; R31, 31, R16 ; 011582 47E03419 4240 BIS R31, 1, R25 ; R31, 1, R25 ; 011583 F7800024 4244 BNE R28, 111_50$ ; R28, 111_50$ ; 011581 A74DFEB0 4248 LDQ R26, -336(R13) ; R26, -336(R13) ; 011583 43C0953E 424C SUBQ SP, 4, SP ; SP, 4, SP A76DFEB8 4250 LDQ R27, -328(R13) ; R27, -328(R13) 6B5A4000 4254 JSR R26, R26 ; R26, R26 47E3F410 4258 BIS R31, 31, R16 ; R31, 31, R16 ; 011586 47E03419 425C BIS R31, 1, R25 ; R31, 1, R25 ; 011587 43C0941E 4260 ADDQ SP, 4, SP ; SP, 4, SP ; 011583 A36B0004 4264 LDL R27, 4(R11) ; R27, 4(R11) ; 011584 F760001B 4268 BNE R27, 111_50$ ; R27, 111_50$ ; 011585 A74DFEC0 426C LDQ R26, -320(R13) ; R26, -320(R13) ; 011587 A76DFEC8 4270 LDQ R27, -312(R13) ; R27, -312(R13) 43C0953E 4274 SUBQ SP, 4, SP ; SP, 4, SP 6B5A4000 4278 JSR R26, R26 ; R26, R26 43C0941E 427C ADDQ SP, 4, SP ; SP, 4, SP C3FFFFED 4280 BR 111_65$ ; 111_65$ ; 011588 47FF041F 4284 NOP ; 4288 111_40$: ; 011593 A74DFD80 4288 LDQ R26, -640(R13) ; R26, -640(R13) ; 011595 JTDRIVER Machine Code Listing 2-DEC-1994 10:13:13 AMAC V2.1-13-2671 Page 191 V01H SNDEXMSG 2-DEC-1994 10:12:45 [EVERHART.JT]JTDRIVER_S2.MAR;120 43EB0000 428C SEXTL R11, R0 ; R11, R0 ; 011593 A76DFD88 4290 LDQ R27, -632(R13) ; R27, -632(R13) ; 011595 47EE1401 4294 BIS R31, 112, R1 ; R31, 112, R1 ; 011594 43C0953E 4298 SUBQ SP, 4, SP ; SP, 4, SP ; 011595 6B5A4000 429C JSR R26, R26 ; R26, R26 A03E0004 42A0 LDL R1, 4(SP) ; R1, 4(SP) ; 011596 A05E0008 42A4 LDL R2, 8(SP) ; R2, 8(SP) A07E000C 42A8 LDL R3, 12(SP) ; R3, 12(SP) A09E0010 42AC LDL R4, 16(SP) ; R4, 16(SP) A0BE0014 42B0 LDL R5, 20(SP) ; R5, 20(SP) 43C0941E 42B4 ADDQ SP, 4, SP ; SP, 4, SP ; 011595 A0DE0014 42B8 LDL R6, 20(SP) ; R6, 20(SP) ; 011596 A0FE0018 42BC LDL R7, 24(SP) ; R7, 24(SP) A11E001C 42C0 LDL R8, 28(SP) ; R8, 28(SP) A13E0020 42C4 LDL R9, 32(SP) ; R9, 32(SP) A15E0024 42C8 LDL R10, 36(SP) ; R10, 36(SP) A17E0028 42CC LDL R11, 40(SP) ; R11, 40(SP) 43C5941E 42D0 ADDQ SP, 44, SP ; SP, 44, SP C3FFFF3A 42D4 BR $L46 ; $L46 ; 011599 42D8 111_50$: ; 011589 47E05410 42D8 BIS R31, 2, R16 ; R31, 2, R16 ; 011591 47E0041A 42DC MOV R0, R26 ; R0, R26 47E10419 42E0 MOV R1, R25 ; R1, R25 0000000F 42E4 CALL_PAL 15 ; 15 A2E40080 42E8 LDL R23, 128(R4) ; R23, 128(R4) ; 011592 47FA0400 42EC MOV R26, R0 ; R26, R0 ; 011591 47F90401 42F0 MOV R25, R1 ; R25, R1 46E90117 42F4 BIC R23, R9, R23 ; R23, R9, R23 ; 011592 B2E40080 42F8 STL R23, 128(R4) ; R23, 128(R4) C3FFFFE2 42FC BR 111_40$ ; 111_40$ ; 011593 Routine Size: 912 bytes, Routine Base: $$$115_DRIVER + 3F70 4300 SNDEXAST: ; 011603 43C4153E 4300 SUBQ SP, 32, SP ; SP, 32, SP B75E0008 4304 STQ R26, 8(SP) ; R26, 8(SP) B57E0010 4308 STQ R11, 16(SP) ; R11, 16(SP) B5BE0018 430C STQ R13, 24(SP) ; R13, 24(SP) 47FB040D 4310 MOV R27, R13 ; R27, R13 4314 $L47: A1650014 4314 LDL R11, 20(R5) ; R11, 20(R5) ; 011604 239F1000 4318 LDA R28, 4096(R31) ; R28, 4096(R31) ; 011605 47E0341B 431C BIS R31, 1, R27 ; R31, 1, R27 ; 011609 A22B0004 4320 LDL R17, 4(R11) ; R17, 4(R11) ; 011605 43910530 4324 SUBQ R28, R17, R16 ; R28, R17, R16 E6000003 4328 BEQ R16, 112_1$ ; R16, 112_1$ ; 011606 42207530 432C SUBQ R17, 3, R16 ; R17, 3, R16 ; 011607 E6000001 4330 BEQ R16, 112_1$ ; R16, 112_1$ ; 011608 B36B0004 4334 STL R27, 4(R11) ; R27, 4(R11) ; 011609 4338 112_1$: ; 011610 A74DFCD8 4338 LDQ R26, -808(R13) ; R26, -808(R13) ; 011611 47E3F410 433C BIS R31, 31, R16 ; R31, 31, R16 ; 011610 A76DFCE0 4340 LDQ R27, -800(R13) ; R27, -800(R13) ; 011611 47E03419 4344 BIS R31, 1, R25 ; R31, 1, R25 6B5A4000 4348 JSR R26, R26 ; R26, R26 47E49401 434C BIS R31, 36, R1 ; R31, 36, R1 ; 011613 A74DFD58 4350 LDQ R26, -680(R13) ; R26, -680(R13) ; 011614 JTDRIVER Machine Code Listing 2-DEC-1994 10:13:13 AMAC V2.1-13-2671 Page 192 V01H SNDEXAST 2-DEC-1994 10:12:45 [EVERHART.JT]JTDRIVER_S2.MAR;120 43E50000 4354 SEXTL R5, R0 ; R5, R0 ; 011612 A76DFD60 4358 LDQ R27, -672(R13) ; R27, -672(R13) ; 011614 6B5A4000 435C JSR R26, R26 ; R26, R26 47E03400 4360 BIS R31, 1, R0 ; R31, 1, R0 ; 011615 4364 $L48: ; 011616 A79E0008 4364 LDQ R28, 8(SP) ; R28, 8(SP) A57E0010 4368 LDQ R11, 16(SP) ; R11, 16(SP) A5BE0018 436C LDQ R13, 24(SP) ; R13, 24(SP) 43C4141E 4370 ADDQ SP, 32, SP ; SP, 32, SP 6BFC8001 4374 RET R28 ; R28 47FF041F 4378 NOP ; 47FF041F 437C NOP ; Routine Size: 128 bytes, Routine Base: $$$115_DRIVER + 4300 4380 SNDDELMSG: ; 011621 43CE153E 4380 SUBQ SP, 112, SP ; SP, 112, SP B75E0008 4384 STQ R26, 8(SP) ; R26, 8(SP) B45E0010 4388 STQ R2, 16(SP) ; R2, 16(SP) B47E0018 438C STQ R3, 24(SP) ; R3, 24(SP) B49E0020 4390 STQ R4, 32(SP) ; R4, 32(SP) B4BE0028 4394 STQ R5, 40(SP) ; R5, 40(SP) B4DE0030 4398 STQ R6, 48(SP) ; R6, 48(SP) B4FE0038 439C STQ R7, 56(SP) ; R7, 56(SP) B51E0040 43A0 STQ R8, 64(SP) ; R8, 64(SP) B53E0048 43A4 STQ R9, 72(SP) ; R9, 72(SP) B55E0050 43A8 STQ R10, 80(SP) ; R10, 80(SP) B57E0058 43AC STQ R11, 88(SP) ; R11, 88(SP) B5BE0060 43B0 STQ R13, 96(SP) ; R13, 96(SP) 47FB040D 43B4 MOV R27, R13 ; R27, R13 B5FE0068 43B8 STQ R15, 104(SP) ; R15, 104(SP) 43BC $L49: A3850128 43BC LDL R28, 296(R5) ; R28, 296(R5) ; 011626 47881010 43C0 AND R28, 64, R16 ; R28, 64, R16 E6000012 43C4 BEQ R16, 113_100$ ; R16, 113_100$ ; 011627 F5600011 43C8 BNE R11, 113_100$ ; R11, 113_100$ ; 011629 47FF041F 43CC NOP ; 43D0 $L50: ; 011630 A79E0008 43D0 LDQ R28, 8(SP) ; R28, 8(SP) A45E0010 43D4 LDQ R2, 16(SP) ; R2, 16(SP) A47E0018 43D8 LDQ R3, 24(SP) ; R3, 24(SP) A49E0020 43DC LDQ R4, 32(SP) ; R4, 32(SP) A4BE0028 43E0 LDQ R5, 40(SP) ; R5, 40(SP) A4DE0030 43E4 LDQ R6, 48(SP) ; R6, 48(SP) A4FE0038 43E8 LDQ R7, 56(SP) ; R7, 56(SP) A51E0040 43EC LDQ R8, 64(SP) ; R8, 64(SP) A53E0048 43F0 LDQ R9, 72(SP) ; R9, 72(SP) A55E0050 43F4 LDQ R10, 80(SP) ; R10, 80(SP) A57E0058 43F8 LDQ R11, 88(SP) ; R11, 88(SP) A5BE0060 43FC LDQ R13, 96(SP) ; R13, 96(SP) A5FE0068 4400 LDQ R15, 104(SP) ; R15, 104(SP) 43CE141E 4404 ADDQ SP, 112, SP ; SP, 112, SP 6BFC8001 4408 RET R28 ; R28 47FF041F 440C NOP ; 4410 113_100$: ; 011631 A74DFD58 4410 LDQ R26, -680(R13) ; R26, -680(R13) ; 011634 47EE9401 4414 BIS R31, 116, R1 ; R31, 116, R1 ; 011633 JTDRIVER Machine Code Listing 2-DEC-1994 10:13:13 AMAC V2.1-13-2671 Page 193 V01H SNDDELMSG 2-DEC-1994 10:12:45 [EVERHART.JT]JTDRIVER_S2.MAR;120 A76DFD60 4418 LDQ R27, -672(R13) ; R27, -672(R13) ; 011634 6B5A4000 441C JSR R26, R26 ; R26, R26 E01FFFEB 4420 BLBC R0, $L50 ; R0, $L50 ; 011636 4424 113_1$: ; 011637 43C3153E 4424 SUBQ SP, 24, SP ; SP, 24, SP ; 011638 47E20419 4428 MOV R2, R25 ; R2, R25 B0BE0014 442C STL R5, 20(SP) ; R5, 20(SP) 231F0FFF 4430 LDA R24, 4095(R31) ; R24, 4095(R31) B09E0010 4434 STL R4, 16(SP) ; R4, 16(SP) 4720F004 4438 AND R25, 7, R4 ; R25, 7, R4 B07E000C 443C STL R3, 12(SP) ; R3, 12(SP) 4B040724 4440 SLL R24, R4, R4 ; R24, R4, R4 B05E0008 4444 STL R2, 8(SP) ; R2, 8(SP) B03E0004 4448 STL R1, 4(SP) ; R1, 4(SP) B01E0000 444C STL R0, (SP) ; R0, (SP) 2DF90000 4450 LDQ_U R15, (R25) ; R15, (R25) 49E4060F 4454 ZAP R15, R4, R15 ; R15, R4, R15 3DF90000 4458 STQ_U R15, (R25) ; R15, (R25) 3FF90008 445C STQ_U R31, 8(R25) ; R31, 8(R25) 48811684 4460 SRL R4, 8, R4 ; R4, 8, R4 3FF90010 4464 STQ_U R31, 16(R25) ; R31, 16(R25) 3FF90018 4468 STQ_U R31, 24(R25) ; R31, 24(R25) 3FF90020 446C STQ_U R31, 32(R25) ; R31, 32(R25) 3FF90028 4470 STQ_U R31, 40(R25) ; R31, 40(R25) 3FF90030 4474 STQ_U R31, 48(R25) ; R31, 48(R25) 3FF90038 4478 STQ_U R31, 56(R25) ; R31, 56(R25) 3FF90040 447C STQ_U R31, 64(R25) ; R31, 64(R25) 3FF90048 4480 STQ_U R31, 72(R25) ; R31, 72(R25) 3FF90050 4484 STQ_U R31, 80(R25) ; R31, 80(R25) 3FF90058 4488 STQ_U R31, 88(R25) ; R31, 88(R25) 3FF90060 448C STQ_U R31, 96(R25) ; R31, 96(R25) 3FF90068 4490 STQ_U R31, 104(R25) ; R31, 104(R25) E4800008 4494 BEQ R4, $L187 ; R4, $L187 2DF90070 4498 LDQ_U R15, 112(R25) ; R15, 112(R25) 49E4060F 449C ZAP R15, R4, R15 ; R15, R4, R15 3DF90070 44A0 STQ_U R15, 112(R25) ; R15, 112(R25) 48811684 44A4 SRL R4, 8, R4 ; R4, 8, R4 E4800003 44A8 BEQ R4, $L187 ; R4, $L187 2DF90078 44AC LDQ_U R15, 120(R25) ; R15, 120(R25) 49E4060F 44B0 ZAP R15, R4, R15 ; R15, R4, R15 3DF90078 44B4 STQ_U R15, 120(R25) ; R15, 120(R25) 44B8 $L187: A05E0008 44B8 LDL R2, 8(SP) ; R2, 8(SP) 47E07419 44BC BIS R31, 3, R25 ; R31, 3, R25 ; 011654 A01E0000 44C0 LDL R0, (SP) ; R0, (SP) ; 011638 A03E0004 44C4 LDL R1, 4(SP) ; R1, 4(SP) A07E000C 44C8 LDL R3, 12(SP) ; R3, 12(SP) A09E0010 44CC LDL R4, 16(SP) ; R4, 16(SP) A0BE0014 44D0 LDL R5, 20(SP) ; R5, 20(SP) 43C3141E 44D4 ADDQ SP, 24, SP ; SP, 24, SP B1620070 44D8 STL R11, 112(R2) ; R11, 112(R2) ; 011639 43C5953E 44DC SUBQ SP, 44, SP ; SP, 44, SP ; 011641 43E2000B 44E0 SEXTL R2, R11 ; R2, R11 ; 011640 A6EDFC98 44E4 LDQ R23, -872(R13) ; R23, -872(R13) ; 011662 B17E0028 44E8 STL R11, 40(SP) ; R11, 40(SP) ; 011641 B15E0024 44EC STL R10, 36(SP) ; R10, 36(SP) B13E0020 44F0 STL R9, 32(SP) ; R9, 32(SP) JTDRIVER Machine Code Listing 2-DEC-1994 10:13:13 AMAC V2.1-13-2671 Page 194 V01H SNDDELMSG 2-DEC-1994 10:12:45 [EVERHART.JT]JTDRIVER_S2.MAR;120 B11E001C 44F4 STL R8, 28(SP) ; R8, 28(SP) B0FE0018 44F8 STL R7, 24(SP) ; R7, 24(SP) B0DE0014 44FC STL R6, 20(SP) ; R6, 20(SP) B0BE0010 4500 STL R5, 16(SP) ; R5, 16(SP) B09E000C 4504 STL R4, 12(SP) ; R4, 12(SP) B07E0008 4508 STL R3, 8(SP) ; R3, 8(SP) B05E0004 450C STL R2, 4(SP) ; R2, 4(SP) B03E0000 4510 STL R1, (SP) ; R1, (SP) B1620000 4514 STL R11, (R2) ; R11, (R2) ; 011642 A005023C 4518 LDL R0, 572(R5) ; R0, 572(R5) ; 011651 A0200038 451C LDL R1, 56(R0) ; R1, 56(R0) ; 011652 B32B0004 4520 STL R25, 4(R11) ; R25, 4(R11) ; 011654 40229401 4524 ADDQ R1, 20, R1 ; R1, 20, R1 ; 011653 A3010000 4528 LDL R24, (R1) ; R24, (R1) ; 011655 40209401 452C ADDQ R1, 4, R1 ; R1, 4, R1 B30B0008 4530 STL R24, 8(R11) ; R24, 8(R11) A3410000 4534 LDL R26, (R1) ; R26, (R1) ; 011656 40209401 4538 ADDQ R1, 4, R1 ; R1, 4, R1 B34B000C 453C STL R26, 12(R11) ; R26, 12(R11) A3210000 4540 LDL R25, (R1) ; R25, (R1) ; 011657 40209401 4544 ADDQ R1, 4, R1 ; R1, 4, R1 B32B0010 4548 STL R25, 16(R11) ; R25, 16(R11) A3010000 454C LDL R24, (R1) ; R24, (R1) ; 011658 40209401 4550 ADDQ R1, 4, R1 ; R1, 4, R1 B30B0014 4554 STL R24, 20(R11) ; R24, 20(R11) A3400074 4558 LDL R26, 116(R0) ; R26, 116(R0) ; 011659 4B4012DA 455C EXTWL R26, 0, R26 ; R26, 0, R26 B34B0018 4560 STL R26, 24(R11) ; R26, 24(R11) B06B001C 4564 STL R3, 28(R11) ; R3, 28(R11) ; 011661 A0970000 4568 LDL R4, (R23) ; R4, (R23) ; 011662 A74DFFE8 456C LDQ R26, -24(R13) ; R26, -24(R13) ; 011674 B08B0020 4570 STL R4, 32(R11) ; R4, 32(R11) ; 011663 B00B0024 4574 STL R0, 36(R11) ; R0, 36(R11) ; 011664 B0CB0028 4578 STL R6, 40(R11) ; R6, 40(R11) ; 011665 B0EB002C 457C STL R7, 44(R11) ; R7, 44(R11) ; 011666 B10B0030 4580 STL R8, 48(R11) ; R8, 48(R11) ; 011667 B12B0034 4584 STL R9, 52(R11) ; R9, 52(R11) ; 011668 A3290018 4588 LDL R25, 24(R9) ; R25, 24(R9) ; 011669 B32B0038 458C STL R25, 56(R11) ; R25, 56(R11) A3090004 4590 LDL R24, 4(R9) ; R24, 4(R9) ; 011670 B30B003C 4594 STL R24, 60(R11) ; R24, 60(R11) A3290008 4598 LDL R25, 8(R9) ; R25, 8(R9) ; 011671 B32B0040 459C STL R25, 64(R11) ; R25, 64(R11) A3090000 45A0 LDL R24, (R9) ; R24, (R9) ; 011672 B30B0044 45A4 STL R24, 68(R11) ; R24, 68(R11) B34B0048 45A8 STL R26, 72(R11) ; R26, 72(R11) ; 011674 41215418 45AC ADDQ R9, 10, R24 ; R9, 10, R24 ; 011675 2F29000A 45B0 LDQ_U R25, 10(R9) ; R25, 10(R9) 2DE9000D 45B4 LDQ_U R15, 13(R9) ; R15, 13(R9) 4B3804D9 45B8 EXTLL R25, R24, R25 ; R25, R24, R25 49F80D5A 45BC EXTLH R15, R24, R26 ; R15, R24, R26 4121D418 45C0 ADDQ R9, 14, R24 ; R9, 14, R24 ; 011676 473A0419 45C4 BIS R25, R26, R25 ; R25, R26, R25 ; 011675 B32B004C 45C8 STL R25, 76(R11) ; R25, 76(R11) 2F29000E 45CC LDQ_U R25, 14(R9) ; R25, 14(R9) ; 011676 4B3802D9 45D0 EXTWL R25, R24, R25 ; R25, R24, R25 F300006D 45D4 BLBS R24, $L188 ; R24, $L188 JTDRIVER Machine Code Listing 2-DEC-1994 10:13:13 AMAC V2.1-13-2671 Page 195 V01H SNDDELMSG 2-DEC-1994 10:12:45 [EVERHART.JT]JTDRIVER_S2.MAR;120 45D8 $L189: B32B0050 45D8 STL R25, 80(R11) ; R25, 80(R11) A3570000 45DC LDL R26, (R23) ; R26, (R23) ; 011677 B34B0054 45E0 STL R26, 84(R11) ; R26, 84(R11) A0970000 45E4 LDL R4, (R23) ; R4, (R23) ; 011678 A32400D4 45E8 LDL R25, 212(R4) ; R25, 212(R4) ; 011679 B32B0058 45EC STL R25, 88(R11) ; R25, 88(R11) A30400D8 45F0 LDL R24, 216(R4) ; R24, 216(R4) ; 011680 B30B005C 45F4 STL R24, 92(R11) ; R24, 92(R11) A0200038 45F8 LDL R1, 56(R0) ; R1, 56(R0) ; 011681 A3410034 45FC LDL R26, 52(R1) ; R26, 52(R1) ; 011682 B34B0060 4600 STL R26, 96(R11) ; R26, 96(R11) A021002C 4604 LDL R1, 44(R1) ; R1, 44(R1) ; 011683 F8200004 4608 BGE R1, 113_833$ ; R1, 113_833$ ; 011684 A3210048 460C LDL R25, 72(R1) ; R25, 72(R1) ; 011685 B32B0064 4610 STL R25, 100(R11) ; R25, 100(R11) A2E1004C 4614 LDL R23, 76(R1) ; R23, 76(R1) ; 011686 B2EB0068 4618 STL R23, 104(R11) ; R23, 104(R11) 461C 113_833$: ; 011687 43C1953E 461C SUBQ SP, 12, SP ; SP, 12, SP ; 011691 A74DFFD8 4620 LDQ R26, -40(R13) ; R26, -40(R13) ; 011696 43E5000A 4624 SEXTL R5, R10 ; R5, R10 ; 011693 A76DFFE0 4628 LDQ R27, -32(R13) ; R27, -32(R13) ; 011696 B0BE0008 462C STL R5, 8(SP) ; R5, 8(SP) ; 011691 B09E0004 4630 STL R4, 4(SP) ; R4, 4(SP) B07E0000 4634 STL R3, (SP) ; R3, (SP) 47EE9403 4638 BIS R31, 116, R3 ; R31, 116, R3 ; 011692 A0A50124 463C LDL R5, 292(R5) ; R5, 292(R5) ; 011694 43EB0004 4640 SEXTL R11, R4 ; R11, R4 ; 011695 43C1153E 4644 SUBQ SP, 8, SP ; SP, 8, SP ; 011696 6B5A4000 4648 JSR R26, R26 ; R26, R26 A07E0008 464C LDL R3, 8(SP) ; R3, 8(SP) ; 011697 A09E000C 4650 LDL R4, 12(SP) ; R4, 12(SP) A0BE0010 4654 LDL R5, 16(SP) ; R5, 16(SP) 43C2941E 4658 ADDQ SP, 20, SP ; SP, 20, SP E0000026 465C BLBC R0, 113_40$ ; R0, 113_40$ ; 011698 A6CDFC98 4660 LDQ R22, -872(R13) ; R22, -872(R13) ; 011700 279F0080 4664 LDAH R28, 128(R31) ; R28, 128(R31) ; 011701 253F0080 4668 LDAH R9, 128(R31) ; R9, 128(R31) ; 011699 A0960000 466C LDL R4, (R22) ; R4, (R22) ; 011700 A3640080 4670 LDL R27, 128(R4) ; R27, 128(R4) ; 011701 477C0010 4674 AND R27, R28, R16 ; R27, R28, R16 461F04C9 4678 CMOVNE R16, R31, R9 ; R16, R31, R9 ; 011703 467C 113_67$: ; 011704 A3240080 467C LDL R25, 128(R4) ; R25, 128(R4) 47FF0410 4680 CLR R16 ; R16 ; 011708 47E00418 4684 MOV R0, R24 ; R0, R24 47E10417 4688 MOV R1, R23 ; R1, R23 47290419 468C BIS R25, R9, R25 ; R25, R9, R25 ; 011704 B3240080 4690 STL R25, 128(R4) ; R25, 128(R4) B3EB0004 4694 STL R31, 4(R11) ; R31, 4(R11) ; 011706 0000000F 4698 CALL_PAL 15 ; 15 ; 011708 47F80400 469C MOV R24, R0 ; R24, R0 47F70401 46A0 MOV R23, R1 ; R23, R1 2FFE0000 46A4 LNOP ; 46A8 113_65$: ; 011710 A2CB0004 46A8 LDL R22, 4(R11) ; R22, 4(R11) ; 011711 JTDRIVER Machine Code Listing 2-DEC-1994 10:13:13 AMAC V2.1-13-2671 Page 196 V01H SNDDELMSG 2-DEC-1994 10:12:45 [EVERHART.JT]JTDRIVER_S2.MAR;120 47E3F410 46AC BIS R31, 31, R16 ; R31, 31, R16 ; 011713 47E03419 46B0 BIS R31, 1, R25 ; R31, 1, R25 ; 011714 F6C00028 46B4 BNE R22, 113_50$ ; R22, 113_50$ ; 011712 A74DFE78 46B8 LDQ R26, -392(R13) ; R26, -392(R13) ; 011714 43C0953E 46BC SUBQ SP, 4, SP ; SP, 4, SP A76DFE80 46C0 LDQ R27, -384(R13) ; R27, -384(R13) 6B5A4000 46C4 JSR R26, R26 ; R26, R26 47E3F410 46C8 BIS R31, 31, R16 ; R31, 31, R16 ; 011717 47E03419 46CC BIS R31, 1, R25 ; R31, 1, R25 ; 011718 43C0941E 46D0 ADDQ SP, 4, SP ; SP, 4, SP ; 011714 A38B0004 46D4 LDL R28, 4(R11) ; R28, 4(R11) ; 011715 F780001F 46D8 BNE R28, 113_50$ ; R28, 113_50$ ; 011716 A74DFE88 46DC LDQ R26, -376(R13) ; R26, -376(R13) ; 011718 A76DFE90 46E0 LDQ R27, -368(R13) ; R27, -368(R13) 43C0953E 46E4 SUBQ SP, 4, SP ; SP, 4, SP 6B5A4000 46E8 JSR R26, R26 ; R26, R26 43C0941E 46EC ADDQ SP, 4, SP ; SP, 4, SP C3FFFFED 46F0 BR 113_65$ ; 113_65$ ; 011719 47FF041F 46F4 NOP ; 46F8 113_40$: ; 011727 47E03400 46F8 BIS R31, 1, R0 ; R31, 1, R0 2FFE0000 46FC LNOP ; 4700 113_41$: ; 011728 A74DFD48 4700 LDQ R26, -696(R13) ; R26, -696(R13) ; 011731 43C0953E 4704 SUBQ SP, 4, SP ; SP, 4, SP ; 011728 A76DFD50 4708 LDQ R27, -688(R13) ; R27, -688(R13) ; 011731 47EE9401 470C BIS R31, 116, R1 ; R31, 116, R1 ; 011730 B01E0000 4710 STL R0, (SP) ; R0, (SP) ; 011728 43EB0000 4714 SEXTL R11, R0 ; R11, R0 ; 011729 6B5A4000 4718 JSR R26, R26 ; R26, R26 ; 011731 A01E0000 471C LDL R0, (SP) ; R0, (SP) ; 011732 A03E0004 4720 LDL R1, 4(SP) ; R1, 4(SP) ; 011733 A05E0008 4724 LDL R2, 8(SP) ; R2, 8(SP) A07E000C 4728 LDL R3, 12(SP) ; R3, 12(SP) A09E0010 472C LDL R4, 16(SP) ; R4, 16(SP) A0BE0014 4730 LDL R5, 20(SP) ; R5, 20(SP) 43C0941E 4734 ADDQ SP, 4, SP ; SP, 4, SP ; 011732 A0DE0014 4738 LDL R6, 20(SP) ; R6, 20(SP) ; 011733 A0FE0018 473C LDL R7, 24(SP) ; R7, 24(SP) A11E001C 4740 LDL R8, 28(SP) ; R8, 28(SP) A13E0020 4744 LDL R9, 32(SP) ; R9, 32(SP) A15E0024 4748 LDL R10, 36(SP) ; R10, 36(SP) A17E0028 474C LDL R11, 40(SP) ; R11, 40(SP) 43C5941E 4750 ADDQ SP, 44, SP ; SP, 44, SP C3FFFF1E 4754 BR $L50 ; $L50 ; 011736 4758 113_50$: ; 011720 47E05410 4758 BIS R31, 2, R16 ; R31, 2, R16 ; 011722 47E0041B 475C MOV R0, R27 ; R0, R27 47E1041A 4760 MOV R1, R26 ; R1, R26 0000000F 4764 CALL_PAL 15 ; 15 A72DFC98 4768 LDQ R25, -872(R13) ; R25, -872(R13) ; 011723 47FA0401 476C MOV R26, R1 ; R26, R1 ; 011722 47FB0400 4770 MOV R27, R0 ; R27, R0 A0990000 4774 LDL R4, (R25) ; R4, (R25) ; 011723 A2E40080 4778 LDL R23, 128(R4) ; R23, 128(R4) ; 011724 46E90117 477C BIC R23, R9, R23 ; R23, R9, R23 B2E40080 4780 STL R23, 128(R4) ; R23, 128(R4) JTDRIVER Machine Code Listing 2-DEC-1994 10:13:13 AMAC V2.1-13-2671 Page 197 V01H SNDDELMSG 2-DEC-1994 10:12:45 [EVERHART.JT]JTDRIVER_S2.MAR;120 A00B0004 4784 LDL R0, 4(R11) ; R0, 4(R11) ; 011725 C3FFFFDD 4788 BR 113_41$ ; 113_41$ ; 011726 478C $L188: ; 011676 2DE9000F 478C LDQ_U R15, 15(R9) ; R15, 15(R9) 49F80B5A 4790 EXTWH R15, R24, R26 ; R15, R24, R26 473A0419 4794 BIS R25, R26, R25 ; R25, R26, R25 C3FFFF8F 4798 BR $L189 ; $L189 47FF041F 479C NOP ; Routine Size: 1056 bytes, Routine Base: $$$115_DRIVER + 4380 47A0 MFYMOUNT: ; 011737 43D2153E 47A0 SUBQ SP, 144, SP ; SP, 144, SP B77E0000 47A4 STQ R27, (SP) ; R27, (SP) B75E0010 47A8 STQ R26, 16(SP) ; R26, 16(SP) B45E0018 47AC STQ R2, 24(SP) ; R2, 24(SP) B47E0020 47B0 STQ R3, 32(SP) ; R3, 32(SP) B49E0028 47B4 STQ R4, 40(SP) ; R4, 40(SP) B4BE0030 47B8 STQ R5, 48(SP) ; R5, 48(SP) B4DE0038 47BC STQ R6, 56(SP) ; R6, 56(SP) B4FE0040 47C0 STQ R7, 64(SP) ; R7, 64(SP) B51E0048 47C4 STQ R8, 72(SP) ; R8, 72(SP) B53E0050 47C8 STQ R9, 80(SP) ; R9, 80(SP) B55E0058 47CC STQ R10, 88(SP) ; R10, 88(SP) B57E0060 47D0 STQ R11, 96(SP) ; R11, 96(SP) B59E0068 47D4 STQ R12, 104(SP) ; R12, 104(SP) B5BE0070 47D8 STQ R13, 112(SP) ; R13, 112(SP) 47FB040D 47DC MOV R27, R13 ; R27, R13 B5DE0078 47E0 STQ R14, 120(SP) ; R14, 120(SP) B5FE0080 47E4 STQ R15, 128(SP) ; R15, 128(SP) B7BE0088 47E8 STQ FP, 136(SP) ; FP, 136(SP) 47FE041D 47EC MOV SP, FP ; SP, FP B7FE0008 47F0 STQ R31, 8(SP) ; R31, 8(SP) 47F4 $L51: 43F00003 47F4 SEXTL R16, R3 ; R16, R3 43F10004 47F8 SEXTL R17, R4 ; R17, R4 43F20005 47FC SEXTL R18, R5 ; R18, R5 43F30006 4800 SEXTL R19, R6 ; R19, R6 47E03400 4804 BIS R31, 1, R0 ; R31, 1, R0 ; 011740 41AB153B 4808 SUBQ R13, 88, R27 ; R13, 88, R27 ; 011741 D35FFBA0 480C BSR R26, PORS ; R26, PORS 4810 $L52: ; 011742 47FD041E 4810 MOV FP, SP ; FP, SP A79E0010 4814 LDQ R28, 16(SP) ; R28, 16(SP) A45E0018 4818 LDQ R2, 24(SP) ; R2, 24(SP) A47E0020 481C LDQ R3, 32(SP) ; R3, 32(SP) A49E0028 4820 LDQ R4, 40(SP) ; R4, 40(SP) A4BE0030 4824 LDQ R5, 48(SP) ; R5, 48(SP) A4DE0038 4828 LDQ R6, 56(SP) ; R6, 56(SP) A4FE0040 482C LDQ R7, 64(SP) ; R7, 64(SP) A51E0048 4830 LDQ R8, 72(SP) ; R8, 72(SP) A53E0050 4834 LDQ R9, 80(SP) ; R9, 80(SP) A55E0058 4838 LDQ R10, 88(SP) ; R10, 88(SP) A57E0060 483C LDQ R11, 96(SP) ; R11, 96(SP) A59E0068 4840 LDQ R12, 104(SP) ; R12, 104(SP) A5BE0070 4844 LDQ R13, 112(SP) ; R13, 112(SP) A5DE0078 4848 LDQ R14, 120(SP) ; R14, 120(SP) JTDRIVER Machine Code Listing 2-DEC-1994 10:13:13 AMAC V2.1-13-2671 Page 198 V01H MFYMOUNT 2-DEC-1994 10:12:45 [EVERHART.JT]JTDRIVER_S2.MAR;120 A5FE0080 484C LDQ R15, 128(SP) ; R15, 128(SP) A7BE0088 4850 LDQ FP, 136(SP) ; FP, 136(SP) 43D2141E 4854 ADDQ SP, 144, SP ; SP, 144, SP 6BFC8001 4858 RET R28 ; R28 47FF041F 485C NOP ; Routine Size: 192 bytes, Routine Base: $$$115_DRIVER + 47A0 4860 JT_FORMAT: ; 011771 43D2153E 4860 SUBQ SP, 144, SP ; SP, 144, SP B77E0000 4864 STQ R27, (SP) ; R27, (SP) B75E0010 4868 STQ R26, 16(SP) ; R26, 16(SP) B45E0018 486C STQ R2, 24(SP) ; R2, 24(SP) B47E0020 4870 STQ R3, 32(SP) ; R3, 32(SP) B49E0028 4874 STQ R4, 40(SP) ; R4, 40(SP) B4BE0030 4878 STQ R5, 48(SP) ; R5, 48(SP) B4DE0038 487C STQ R6, 56(SP) ; R6, 56(SP) B4FE0040 4880 STQ R7, 64(SP) ; R7, 64(SP) B51E0048 4884 STQ R8, 72(SP) ; R8, 72(SP) B53E0050 4888 STQ R9, 80(SP) ; R9, 80(SP) B55E0058 488C STQ R10, 88(SP) ; R10, 88(SP) B57E0060 4890 STQ R11, 96(SP) ; R11, 96(SP) B59E0068 4894 STQ R12, 104(SP) ; R12, 104(SP) B5BE0070 4898 STQ R13, 112(SP) ; R13, 112(SP) 47FB040D 489C MOV R27, R13 ; R27, R13 B5DE0078 48A0 STQ R14, 120(SP) ; R14, 120(SP) B5FE0080 48A4 STQ R15, 128(SP) ; R15, 128(SP) B7BE0088 48A8 STQ FP, 136(SP) ; FP, 136(SP) 47FE041D 48AC MOV SP, FP ; SP, FP B7FE0008 48B0 STQ R31, 8(SP) ; R31, 8(SP) 48B4 $L53: 43F00003 48B4 SEXTL R16, R3 ; R16, R3 43F20005 48B8 SEXTL R18, R5 ; R18, R5 A3830060 48BC LDL R28, 96(R3) ; R28, 96(R3) ; 011774 481F9620 48C0 ZAPNOT R0, 252, R0 ; R0, 252, R0 ; 011779 43F10004 48C4 SEXTL R17, R4 ; R17, R4 ; 011771 43F30006 48C8 SEXTL R19, R6 ; R19, R6 B38503B4 48CC STL R28, 948(R5) ; R28, 948(R5) ; 011774 A3430060 48D0 LDL R26, 96(R3) ; R26, 96(R3) ; 011779 4B4012DA 48D4 EXTWL R26, 0, R26 ; R26, 0, R26 4747F11B 48D8 BIC R26, 63, R27 ; R26, 63, R27 4B661734 48DC SLL R27, 48, R20 ; R27, 48, R20 441B0400 48E0 BIS R0, R27, R0 ; R0, R27, R0 F680001E 48E4 BNE R20, 115_20$ ; R20, 115_20$ ; 011781 48E8 115_10$: ; 011789 A74DFCA8 48E8 LDQ R26, -856(R13) ; R26, -856(R13) ; 011792 47E29400 48EC BIS R31, 20, R0 ; R31, 20, R0 ; 011790 A76DFCB0 48F0 LDQ R27, -848(R13) ; R27, -848(R13) ; 011792 47FF0401 48F4 CLR R1 ; R1 ; 011791 43E00013 48F8 SEXTL R0, R19 ; R0, R19 ; 011792 43E50012 48FC SEXTL R5, R18 ; R5, R18 43E40011 4900 SEXTL R4, R17 ; R4, R17 43E30010 4904 SEXTL R3, R16 ; R3, R16 47E09419 4908 BIS R31, 4, R25 ; R31, 4, R25 6B5A4000 490C JSR R26, R26 ; R26, R26 4910 $L54: 47FD041E 4910 MOV FP, SP ; FP, SP JTDRIVER Machine Code Listing 2-DEC-1994 10:13:13 AMAC V2.1-13-2671 Page 199 V01H JT_FORMAT 2-DEC-1994 10:12:45 [EVERHART.JT]JTDRIVER_S2.MAR;120 A79E0010 4914 LDQ R28, 16(SP) ; R28, 16(SP) A45E0018 4918 LDQ R2, 24(SP) ; R2, 24(SP) A47E0020 491C LDQ R3, 32(SP) ; R3, 32(SP) A49E0028 4920 LDQ R4, 40(SP) ; R4, 40(SP) A4BE0030 4924 LDQ R5, 48(SP) ; R5, 48(SP) A4DE0038 4928 LDQ R6, 56(SP) ; R6, 56(SP) A4FE0040 492C LDQ R7, 64(SP) ; R7, 64(SP) A51E0048 4930 LDQ R8, 72(SP) ; R8, 72(SP) A53E0050 4934 LDQ R9, 80(SP) ; R9, 80(SP) A55E0058 4938 LDQ R10, 88(SP) ; R10, 88(SP) A57E0060 493C LDQ R11, 96(SP) ; R11, 96(SP) A59E0068 4940 LDQ R12, 104(SP) ; R12, 104(SP) A5BE0070 4944 LDQ R13, 112(SP) ; R13, 112(SP) A5DE0078 4948 LDQ R14, 120(SP) ; R14, 120(SP) A5FE0080 494C LDQ R15, 128(SP) ; R15, 128(SP) A7BE0088 4950 LDQ FP, 136(SP) ; FP, 136(SP) 43D2141E 4954 ADDQ SP, 144, SP ; SP, 144, SP 6BFC8001 4958 RET R28 ; R28 47FF041F 495C NOP ; 4960 115_20$: ; 011795 A0030078 4960 LDL R0, 120(R3) ; R0, 120(R3) ; 011800 43E50012 4964 SEXTL R5, R18 ; R5, R18 ; 011824 A023007C 4968 LDL R1, 124(R3) ; R1, 124(R3) ; 011801 43C0953E 496C SUBQ SP, 4, SP ; SP, 4, SP ; 011824 A74D0028 4970 LDQ R26, 40(R13) ; R26, 40(R13) 43E40011 4974 SEXTL R4, R17 ; R4, R17 B01E0000 4978 STL R0, (SP) ; R0, (SP) 43E00013 497C SEXTL R0, R19 ; R0, R19 A76D0030 4980 LDQ R27, 48(R13) ; R27, 48(R13) 43E10014 4984 SEXTL R1, R20 ; R1, R20 43E30010 4988 SEXTL R3, R16 ; R3, R16 43C1953E 498C SUBQ SP, 12, SP ; SP, 12, SP 47E0B419 4990 BIS R31, 5, R25 ; R31, 5, R25 6B5A4000 4994 JSR R26, R26 ; R26, R26 43C1941E 4998 ADDQ SP, 12, SP ; SP, 12, SP E0000050 499C BLBC R0, $L113 ; R0, $L113 49A0 115_30073$: A0230044 49A0 LDL R1, 68(R3) ; R1, 68(R3) 47FF0402 49A4 CLR R2 ; R2 A01E0000 49A8 LDL R0, (SP) ; R0, (SP) 43C5953E 49AC SUBQ SP, 44, SP ; SP, 44, SP B17E002C 49B0 STL R11, 44(SP) ; R11, 44(SP) ; 011827 B15E0028 49B4 STL R10, 40(SP) ; R10, 40(SP) B13E0024 49B8 STL R9, 36(SP) ; R9, 36(SP) B11E0020 49BC STL R8, 32(SP) ; R8, 32(SP) B0FE001C 49C0 STL R7, 28(SP) ; R7, 28(SP) B0DE0018 49C4 STL R6, 24(SP) ; R6, 24(SP) B0BE0014 49C8 STL R5, 20(SP) ; R5, 20(SP) B09E0010 49CC STL R4, 16(SP) ; R4, 16(SP) B07E000C 49D0 STL R3, 12(SP) ; R3, 12(SP) B05E0008 49D4 STL R2, 8(SP) ; R2, 8(SP) B03E0004 49D8 STL R1, 4(SP) ; R1, 4(SP) B01E0000 49DC STL R0, (SP) ; R0, (SP) A0030078 49E0 LDL R0, 120(R3) ; R0, 120(R3) ; 011831 A0E00000 49E4 LDL R7, (R0) ; R7, (R0) ; 011833 40009400 49E8 ADDQ R0, 4, R0 ; R0, 4, R0 ECE0002E 49EC BLE R7, 115_100$ ; R7, 115_100$ ; 011834 JTDRIVER Machine Code Listing 2-DEC-1994 10:13:13 AMAC V2.1-13-2671 Page 200 V01H JT_FORMAT 2-DEC-1994 10:12:45 [EVERHART.JT]JTDRIVER_S2.MAR;120 40E05534 49F0 SUBQ R7, 2, R20 ; R7, 2, R20 ; 011835 FE80002C 49F4 BGT R20, 115_100$ ; R20, 115_100$ ; 011836 A72DFC10 49F8 LDQ R25, -1008(R13) ; R25, -1008(R13) ; 011837 A2D90080 49FC LDL R22, 128(R25) ; R22, 128(R25) 43301418 4A00 ADDQ R25, 128, R24 ; R25, 128, R24 42C03016 4A04 ADDL R22, 1, R22 ; R22, 1, R22 B2D90080 4A08 STL R22, 128(R25) ; R22, 128(R25) A0C00000 4A0C LDL R6, (R0) ; R6, (R0) ; 011838 40009400 4A10 ADDQ R0, 4, R0 ; R0, 4, R0 ECC00002 4A14 BLE R6, 115_70$ ; R6, 115_70$ ; 011839 A78DFC10 4A18 LDQ R28, -1008(R13) ; R28, -1008(R13) ; 011840 B3FC0080 4A1C STL R31, 128(R28) ; R31, 128(R28) 4A20 115_70$: ; 011841 B0050264 4A20 STL R0, 612(R5) ; R0, 612(R5) ; 011842 20250260 4A24 LDA R1, 608(R5) ; R1, 608(R5) ; 011852 A323007C 4A28 LDL R25, 124(R3) ; R25, 124(R3) ; 011848 43211138 4A2C SUBL R25, 8, R24 ; R25, 8, R24 B3050260 4A30 STL R24, 608(R5) ; R24, 608(R5) EF00001C 4A34 BLE R24, 115_100$ ; R24, 115_100$ ; 011851 A74DFE08 4A38 LDQ R26, -504(R13) ; R26, -504(R13) ; 011853 A76DFE10 4A3C LDQ R27, -496(R13) ; R27, -496(R13) 6B5A4000 4A40 JSR R26, R26 ; R26, R26 F0000030 4A44 BLBS R0, 115_30$ ; R0, 115_30$ ; 011854 A07E000C 4A48 LDL R3, 12(SP) ; R3, 12(SP) ; 011856 47E09419 4A4C BIS R31, 4, R25 ; R31, 4, R25 ; 011859 A09E0010 4A50 LDL R4, 16(SP) ; R4, 16(SP) ; 011856 A0BE0014 4A54 LDL R5, 20(SP) ; R5, 20(SP) A74DFCA8 4A58 LDQ R26, -856(R13) ; R26, -856(R13) ; 011859 43E30010 4A5C SEXTL R3, R16 ; R3, R16 A01E0000 4A60 LDL R0, (SP) ; R0, (SP) ; 011856 201F090A 4A64 LDA R0, 2314(R31) ; R0, 2314(R31) ; 011857 A03E0004 4A68 LDL R1, 4(SP) ; R1, 4(SP) ; 011856 47FF0401 4A6C CLR R1 ; R1 ; 011858 A05E0008 4A70 LDL R2, 8(SP) ; R2, 8(SP) ; 011856 43E00013 4A74 SEXTL R0, R19 ; R0, R19 ; 011859 A0DE0018 4A78 LDL R6, 24(SP) ; R6, 24(SP) ; 011856 43E50012 4A7C SEXTL R5, R18 ; R5, R18 ; 011859 A0FE001C 4A80 LDL R7, 28(SP) ; R7, 28(SP) ; 011856 43E40011 4A84 SEXTL R4, R17 ; R4, R17 ; 011859 A11E0020 4A88 LDL R8, 32(SP) ; R8, 32(SP) ; 011856 A13E0024 4A8C LDL R9, 36(SP) ; R9, 36(SP) A15E0028 4A90 LDL R10, 40(SP) ; R10, 40(SP) A17E002C 4A94 LDL R11, 44(SP) ; R11, 44(SP) A76DFCB0 4A98 LDQ R27, -848(R13) ; R27, -848(R13) ; 011859 43C6141E 4A9C ADDQ SP, 48, SP ; SP, 48, SP ; 011856 6B5A4000 4AA0 JSR R26, R26 ; R26, R26 ; 011859 C3FFFF9A 4AA4 BR $L54 ; $L54 4AA8 115_100$: ; 011787 A01E0000 4AA8 LDL R0, (SP) ; R0, (SP) ; 011788 A03E0004 4AAC LDL R1, 4(SP) ; R1, 4(SP) A05E0008 4AB0 LDL R2, 8(SP) ; R2, 8(SP) A07E000C 4AB4 LDL R3, 12(SP) ; R3, 12(SP) A09E0010 4AB8 LDL R4, 16(SP) ; R4, 16(SP) A0BE0014 4ABC LDL R5, 20(SP) ; R5, 20(SP) A0DE0018 4AC0 LDL R6, 24(SP) ; R6, 24(SP) A0FE001C 4AC4 LDL R7, 28(SP) ; R7, 28(SP) A11E0020 4AC8 LDL R8, 32(SP) ; R8, 32(SP) JTDRIVER Machine Code Listing 2-DEC-1994 10:13:13 AMAC V2.1-13-2671 Page 201 V01H JT_FORMAT 2-DEC-1994 10:12:45 [EVERHART.JT]JTDRIVER_S2.MAR;120 A13E0024 4ACC LDL R9, 36(SP) ; R9, 36(SP) A15E0028 4AD0 LDL R10, 40(SP) ; R10, 40(SP) A17E002C 4AD4 LDL R11, 44(SP) ; R11, 44(SP) 43C6141E 4AD8 ADDQ SP, 48, SP ; SP, 48, SP C3FFFF82 4ADC BR 115_10$ ; 115_10$ ; 011789 4AE0 $L113: ; 011824 A74DFCA8 4AE0 LDQ R26, -856(R13) ; R26, -856(R13) 43C0941E 4AE4 ADDQ SP, 4, SP ; SP, 4, SP A76DFCB0 4AE8 LDQ R27, -848(R13) ; R27, -848(R13) 43E00013 4AEC SEXTL R0, R19 ; R0, R19 43E50012 4AF0 SEXTL R5, R18 ; R5, R18 43E40011 4AF4 SEXTL R4, R17 ; R4, R17 43E30010 4AF8 SEXTL R3, R16 ; R3, R16 47E09419 4AFC BIS R31, 4, R25 ; R31, 4, R25 6B5A4000 4B00 JSR R26, R26 ; R26, R26 C3FFFF82 4B04 BR $L54 ; $L54 4B08 115_30$: ; 011862 40E03534 4B08 SUBQ R7, 1, R20 ; R7, 1, R20 ; 011866 43E1000B 4B0C SEXTL R1, R11 ; R1, R11 ; 011865 E680001D 4B10 BEQ R20, $L114 ; R20, $L114 ; 011867 4B14 115_31$: ; 011870 A2C50384 4B14 LDL R22, 900(R5) ; R22, 900(R5) ; 011872 41AB141B 4B18 ADDQ R13, 88, R27 ; R13, 88, R27 ; 011874 41760534 4B1C SUBQ R11, R22, R20 ; R11, R22, R20 ; 011872 F6800001 4B20 BNE R20, 115_32$ ; R20, 115_32$ ; 011873 D34000FA 4B24 BSR R26, UMUNG ; R26, UMUNG ; 011874 4B28 115_32$: ; 011875 A07E000C 4B28 LDL R3, 12(SP) ; R3, 12(SP) ; 011879 47E05419 4B2C BIS R31, 2, R25 ; R31, 2, R25 ; 011881 A0BE0014 4B30 LDL R5, 20(SP) ; R5, 20(SP) ; 011879 A74DFEF8 4B34 LDQ R26, -264(R13) ; R26, -264(R13) ; 011881 A01E0000 4B38 LDL R0, (SP) ; R0, (SP) ; 011879 47E03400 4B3C BIS R31, 1, R0 ; R31, 1, R0 ; 011880 A03E0004 4B40 LDL R1, 4(SP) ; R1, 4(SP) ; 011879 47FF0401 4B44 CLR R1 ; R1 ; 011881 A05E0008 4B48 LDL R2, 8(SP) ; R2, 8(SP) ; 011879 43E50011 4B4C SEXTL R5, R17 ; R5, R17 ; 011881 A09E0010 4B50 LDL R4, 16(SP) ; R4, 16(SP) ; 011879 43E30010 4B54 SEXTL R3, R16 ; R3, R16 ; 011881 A0DE0018 4B58 LDL R6, 24(SP) ; R6, 24(SP) ; 011879 A0FE001C 4B5C LDL R7, 28(SP) ; R7, 28(SP) A11E0020 4B60 LDL R8, 32(SP) ; R8, 32(SP) A13E0024 4B64 LDL R9, 36(SP) ; R9, 36(SP) A15E0028 4B68 LDL R10, 40(SP) ; R10, 40(SP) A17E002C 4B6C LDL R11, 44(SP) ; R11, 44(SP) 43C6141E 4B70 ADDQ SP, 48, SP ; SP, 48, SP B0030050 4B74 STL R0, 80(R3) ; R0, 80(R3) ; 011881 A76DFF00 4B78 LDQ R27, -256(R13) ; R27, -256(R13) B0230054 4B7C STL R1, 84(R3) ; R1, 84(R3) 6B5A4000 4B80 JSR R26, R26 ; R26, R26 C3FFFF62 4B84 BR $L54 ; $L54 4B88 $L114: ; 011868 41A7141B 4B88 ADDQ R13, 56, R27 ; R13, 56, R27 D3400004 4B8C BSR R26, MUNG ; R26, MUNG C3FFFFE5 4B90 BR 115_32$ ; 115_32$ ; 011869 47FF041F 4B94 NOP ; 47FF041F 4B98 NOP ; JTDRIVER Machine Code Listing 2-DEC-1994 10:13:13 AMAC V2.1-13-2671 Page 202 V01H JT_FORMAT 2-DEC-1994 10:12:45 [EVERHART.JT]JTDRIVER_S2.MAR;120 47FF041F 4B9C NOP ; Routine Size: 832 bytes, Routine Base: $$$115_DRIVER + 4860 4BA0 MUNG: ; 011883 43CE153E 4BA0 SUBQ SP, 112, SP ; SP, 112, SP B75E0008 4BA4 STQ R26, 8(SP) ; R26, 8(SP) B45E0010 4BA8 STQ R2, 16(SP) ; R2, 16(SP) B47E0018 4BAC STQ R3, 24(SP) ; R3, 24(SP) B49E0020 4BB0 STQ R4, 32(SP) ; R4, 32(SP) B4BE0028 4BB4 STQ R5, 40(SP) ; R5, 40(SP) B4DE0030 4BB8 STQ R6, 48(SP) ; R6, 48(SP) B4FE0038 4BBC STQ R7, 56(SP) ; R7, 56(SP) B51E0040 4BC0 STQ R8, 64(SP) ; R8, 64(SP) B53E0048 4BC4 STQ R9, 72(SP) ; R9, 72(SP) B55E0050 4BC8 STQ R10, 80(SP) ; R10, 80(SP) B57E0058 4BCC STQ R11, 88(SP) ; R11, 88(SP) B5BE0060 4BD0 STQ R13, 96(SP) ; R13, 96(SP) 47FB040D 4BD4 MOV R27, R13 ; R27, R13 B5FE0068 4BD8 STQ R15, 104(SP) ; R15, 104(SP) A5EDFBD8 4BDC LDQ R15, -1064(R13) ; R15, -1064(R13) ; 011907 4BE0 $L55: ; 011883 A3850388 4BE0 LDL R28, 904(R5) ; R28, 904(R5) ; 011894 E7800010 4BE4 BEQ R28, 116_6$ ; R28, 116_6$ ; 011895 4BE8 $L56: ; 011896 A79E0008 4BE8 LDQ R28, 8(SP) ; R28, 8(SP) A45E0010 4BEC LDQ R2, 16(SP) ; R2, 16(SP) A47E0018 4BF0 LDQ R3, 24(SP) ; R3, 24(SP) A49E0020 4BF4 LDQ R4, 32(SP) ; R4, 32(SP) A4BE0028 4BF8 LDQ R5, 40(SP) ; R5, 40(SP) A4DE0030 4BFC LDQ R6, 48(SP) ; R6, 48(SP) A4FE0038 4C00 LDQ R7, 56(SP) ; R7, 56(SP) A51E0040 4C04 LDQ R8, 64(SP) ; R8, 64(SP) A53E0048 4C08 LDQ R9, 72(SP) ; R9, 72(SP) A55E0050 4C0C LDQ R10, 80(SP) ; R10, 80(SP) A57E0058 4C10 LDQ R11, 88(SP) ; R11, 88(SP) A5BE0060 4C14 LDQ R13, 96(SP) ; R13, 96(SP) A5FE0068 4C18 LDQ R15, 104(SP) ; R15, 104(SP) 43CE141E 4C1C ADDQ SP, 112, SP ; SP, 112, SP 6BFC8001 4C20 RET R28 ; R28 47FF041F 4C24 NOP ; 4C28 116_6$: ; 011897 43C5953E 4C28 SUBQ SP, 44, SP ; SP, 44, SP ; 011898 47E03400 4C2C BIS R31, 1, R0 ; R31, 1, R0 ; 011900 B17E0028 4C30 STL R11, 40(SP) ; R11, 40(SP) ; 011898 47E0041B 4C34 MOV R0, R27 ; R0, R27 ; 011902 B15E0024 4C38 STL R10, 36(SP) ; R10, 36(SP) ; 011898 47E1041A 4C3C MOV R1, R26 ; R1, R26 ; 011902 B13E0020 4C40 STL R9, 32(SP) ; R9, 32(SP) ; 011898 B11E001C 4C44 STL R8, 28(SP) ; R8, 28(SP) B0FE0018 4C48 STL R7, 24(SP) ; R7, 24(SP) B0DE0014 4C4C STL R6, 20(SP) ; R6, 20(SP) 43C0953E 4C50 SUBQ SP, 4, SP ; SP, 4, SP ; 011902 B0BE0014 4C54 STL R5, 20(SP) ; R5, 20(SP) ; 011898 B09E0010 4C58 STL R4, 16(SP) ; R4, 16(SP) B07E000C 4C5C STL R3, 12(SP) ; R3, 12(SP) B05E0008 4C60 STL R2, 8(SP) ; R2, 8(SP) JTDRIVER Machine Code Listing 2-DEC-1994 10:13:13 AMAC V2.1-13-2671 Page 203 V01H MUNG 2-DEC-1994 10:12:45 [EVERHART.JT]JTDRIVER_S2.MAR;120 B03E0004 4C64 STL R1, 4(SP) ; R1, 4(SP) 0000000E 4C68 CALL_PAL 14 ; 14 ; 011902 A72DFC08 4C6C LDQ R25, -1016(R13) ; R25, -1016(R13) 47FA0401 4C70 MOV R26, R1 ; R26, R1 B01E0000 4C74 STL R0, (SP) ; R0, (SP) 43C1153E 4C78 SUBQ SP, 8, SP ; SP, 8, SP 47FB0400 4C7C MOV R27, R0 ; R27, R0 B41E0000 4C80 STQ R0, (SP) ; R0, (SP) A00B0008 4C84 LDL R0, 8(R11) ; R0, 8(R11) A3190000 4C88 LDL R24, (R25) ; R24, (R25) 480070C0 4C8C EXTBL R0, 3, R0 ; R0, 3, R0 F3000095 4C90 BLBS R24, $L115 ; R24, $L115 4C94 116_30075$: A6EDFC00 4C94 LDQ R23, -1024(R13) ; R23, -1024(R13) 47E00416 4C98 MOV R0, R22 ; R0, R22 47E1041C 4C9C MOV R1, R28 ; R1, R28 40170057 4CA0 S4ADDL R0, R23, R23 ; R0, R23, R23 A2170000 4CA4 LDL R16, (R23) ; R16, (R23) 4603F010 4CA8 AND R16, 31, R16 ; R16, 31, R16 0000000F 4CAC CALL_PAL 15 ; 15 47FC0401 4CB0 MOV R28, R1 ; R28, R1 47F60400 4CB4 MOV R22, R0 ; R22, R0 4CB8 116_30076$: A41E0000 4CB8 LDQ R0, (SP) ; R0, (SP) 43C1141E 4CBC ADDQ SP, 8, SP ; SP, 8, SP A14B00C0 4CC0 LDL R10, 192(R11) ; R10, 192(R11) ; 011905 236F01B4 4CC4 LDA R27, 436(R15) ; R27, 436(R15) ; 011907 B3650114 4CC8 STL R27, 276(R5) ; R27, 276(R5) 43FB0009 4CCC SEXTL R27, R9 ; R27, R9 ; 011908 A0050074 4CD0 LDL R0, 116(R5) ; R0, 116(R5) ; 011909 480012C0 4CD4 EXTWL R0, 0, R0 ; R0, 0, R0 40090049 4CD8 S4ADDL R0, R9, R9 ; R0, R9, R9 ; 011910 B1690000 4CDC STL R11, (R9) ; R11, (R9) ; 011911 A12B0038 4CE0 LDL R9, 56(R11) ; R9, 56(R11) ; 011913 A329000C 4CE4 LDL R25, 12(R9) ; R25, 12(R9) ; 011914 432A0530 4CE8 SUBQ R25, R10, R16 ; R25, R10, R16 E6000007 4CEC BEQ R16, 116_1$ ; R16, 116_1$ ; 011915 A2EAFFFC 4CF0 LDL R23, -4(R10) ; R23, -4(R10) ; 011918 26DFF014 4CF4 LDAH R22, -4076(R31) ; R22, -4076(R31) 22D6F070 4CF8 LDA R22, -3984(R22) ; R22, -3984(R22) 42F60530 4CFC SUBQ R23, R22, R16 ; R23, R22, R16 F600007F 4D00 BNE R16, $L116 ; R16, $L116 ; 011921 4D04 116_2$: ; 011924 238501BC 4D04 LDA R28, 444(R5) ; R28, 444(R5) ; 011926 B38AFFF4 4D08 STL R28, -12(R10) ; R28, -12(R10) 4D0C 116_1$: ; 011929 47E0341A 4D0C BIS R31, 1, R26 ; R31, 1, R26 ; 011930 B3450388 4D10 STL R26, 904(R5) ; R26, 904(R5) B14501B4 4D14 STL R10, 436(R5) ; R10, 436(R5) ; 011931 B3E501B0 4D18 STL R31, 432(R5) ; R31, 432(R5) ; 011932 4D1C 116_3$: ; 011933 A74DFCB0 4D1C LDQ R26, -848(R13) ; R26, -848(R13) ; 011936 43C0953E 4D20 SUBQ SP, 4, SP ; SP, 4, SP ; 011934 47EA0412 4D24 MOV R10, R18 ; R10, R18 ; 011936 B0BE0000 4D28 STL R5, (SP) ; R5, (SP) ; 011934 47EF9411 4D2C BIS R31, 124, R17 ; R31, 124, R17 ; 011936 220501BC 4D30 LDA R16, 444(R5) ; R16, 444(R5) JTDRIVER Machine Code Listing 2-DEC-1994 10:13:13 AMAC V2.1-13-2671 Page 204 V01H MUNG 2-DEC-1994 10:12:45 [EVERHART.JT]JTDRIVER_S2.MAR;120 424F9401 4D34 ADDQ R18, 124, R1 ; R18, 124, R1 6B5A4000 4D38 JSR R26, R26 ; R26, R26 47FF0404 4D3C CLR R4 ; R4 47FF0402 4D40 CLR R2 ; R2 A0BE0000 4D44 LDL R5, (SP) ; R5, (SP) ; 011937 43C0941E 4D48 ADDQ SP, 4, SP ; SP, 4, SP 47F00403 4D4C MOV R16, R3 ; R16, R3 ; 011936 A74DFCB0 4D50 LDQ R26, -848(R13) ; R26, -848(R13) ; 011957 47FF0400 4D54 CLR R0 ; R0 ; 011936 B0AF008C 4D58 STL R5, 140(R15) ; R5, 140(R15) ; 011944 A30A0028 4D5C LDL R24, 40(R10) ; R24, 40(R10) ; 011945 210501BC 4D60 LDA R8, 444(R5) ; R8, 444(R5) ; 011943 B3050380 4D64 STL R24, 896(R5) ; R24, 896(R5) ; 011945 A2E501AC 4D68 LDL R23, 428(R5) ; R23, 428(R5) ; 011946 B2EF0088 4D6C STL R23, 136(R15) ; R23, 136(R15) 43C3153E 4D70 SUBQ SP, 24, SP ; SP, 24, SP ; 011950 B17E0014 4D74 STL R11, 20(SP) ; R11, 20(SP) B15E0010 4D78 STL R10, 16(SP) ; R10, 16(SP) B13E000C 4D7C STL R9, 12(SP) ; R9, 12(SP) 21250268 4D80 LDA R9, 616(R5) ; R9, 616(R5) ; 011951 B11E0008 4D84 STL R8, 8(SP) ; R8, 8(SP) ; 011950 47E90410 4D88 MOV R9, R16 ; R9, R16 ; 011957 B0FE0004 4D8C STL R7, 4(SP) ; R7, 4(SP) ; 011950 B0DE0000 4D90 STL R6, (SP) ; R6, (SP) A0EA0028 4D94 LDL R7, 40(R10) ; R7, 40(R10) ; 011952 43C3153E 4D98 SUBQ SP, 24, SP ; SP, 24, SP ; 011955 B0BE0014 4D9C STL R5, 20(SP) ; R5, 20(SP) B09E0010 4DA0 STL R4, 16(SP) ; R4, 16(SP) B07E000C 4DA4 STL R3, 12(SP) ; R3, 12(SP) 47E70412 4DA8 MOV R7, R18 ; R7, R18 ; 011957 B05E0008 4DAC STL R2, 8(SP) ; R2, 8(SP) ; 011955 B03E0004 4DB0 STL R1, 4(SP) ; R1, 4(SP) B01E0000 4DB4 STL R0, (SP) ; R0, (SP) 201F0110 4DB8 LDA R0, 272(R31) ; R0, 272(R31) ; 011956 480012D1 4DBC EXTWL R0, 0, R17 ; R0, 0, R17 ; 011957 6B5A4000 4DC0 JSR R26, R26 ; R26, R26 47E8140B 4DC4 BIS R31, 64, R11 ; R31, 64, R11 ; 011968 A01E0000 4DC8 LDL R0, (SP) ; R0, (SP) ; 011958 A03E0004 4DCC LDL R1, 4(SP) ; R1, 4(SP) 41F2140A 4DD0 ADDQ R15, 144, R10 ; R15, 144, R10 ; 011965 A05E0008 4DD4 LDL R2, 8(SP) ; R2, 8(SP) ; 011958 4141100A 4DD8 ADDL R10, 8, R10 ; R10, 8, R10 ; 011966 A07E000C 4DDC LDL R3, 12(SP) ; R3, 12(SP) ; 011958 41211009 4DE0 ADDL R9, 8, R9 ; R9, 8, R9 ; 011967 A09E0010 4DE4 LDL R4, 16(SP) ; R4, 16(SP) ; 011958 A0BE0014 4DE8 LDL R5, 20(SP) ; R5, 20(SP) 43C3141E 4DEC ADDQ SP, 24, SP ; SP, 24, SP A50D0018 4DF0 LDQ R8, 24(R13) ; R8, 24(R13) ; 011964 43C0953E 4DF4 SUBQ SP, 4, SP ; SP, 4, SP ; 011970 B0FE0000 4DF8 STL R7, (SP) ; R7, (SP) A4ED0010 4DFC LDQ R7, 16(R13) ; R7, 16(R13) ; 011971 4E00 116_75$: ; 011973 A22A0000 4E00 LDL R17, (R10) ; R17, (R10) 42280530 4E04 SUBQ R17, R8, R16 ; R17, R8, R16 E6000003 4E08 BEQ R16, 116_76$ ; R16, 116_76$ ; 011974 42270530 4E0C SUBQ R17, R7, R16 ; R17, R7, R16 ; 011976 E6000001 4E10 BEQ R16, 116_76$ ; R16, 116_76$ ; 011977 JTDRIVER Machine Code Listing 2-DEC-1994 10:13:13 AMAC V2.1-13-2671 Page 205 V01H MUNG 2-DEC-1994 10:12:45 [EVERHART.JT]JTDRIVER_S2.MAR;120 B2290000 4E14 STL R17, (R9) ; R17, (R9) ; 011979 4E18 116_76$: ; 011982 4160312B 4E18 SUBL R11, 1, R11 ; R11, 1, R11 ; 011983 41209409 4E1C ADDQ R9, 4, R9 ; R9, 4, R9 ; 011982 4140940A 4E20 ADDQ R10, 4, R10 ; R10, 4, R10 FD7FFFF6 4E24 BGT R11, 116_75$ ; R11, 116_75$ ; 011983 A0FE0000 4E28 LDL R7, (SP) ; R7, (SP) ; 011985 22E50268 4E2C LDA R23, 616(R5) ; R23, 616(R5) ; 011993 A0DE0004 4E30 LDL R6, 4(SP) ; R6, 4(SP) ; 011991 22C501BC 4E34 LDA R22, 444(R5) ; R22, 444(R5) ; 011998 A0FE0008 4E38 LDL R7, 8(SP) ; R7, 8(SP) ; 011991 A11E000C 4E3C LDL R8, 12(SP) ; R8, 12(SP) A13E0010 4E40 LDL R9, 16(SP) ; R9, 16(SP) A15E0014 4E44 LDL R10, 20(SP) ; R10, 20(SP) 43C0941E 4E48 ADDQ SP, 4, SP ; SP, 4, SP ; 011985 A17E0014 4E4C LDL R11, 20(SP) ; R11, 20(SP) ; 011991 43C3141E 4E50 ADDQ SP, 24, SP ; SP, 24, SP B2E80028 4E54 STL R23, 40(R8) ; R23, 40(R8) ; 011993 B3EF0084 4E58 STL R31, 132(R15) ; R31, 132(R15) ; 011994 B2CB00C0 4E5C STL R22, 192(R11) ; R22, 192(R11) ; 011998 4E60 116_100$: ; 012008 A78DFC08 4E60 LDQ R28, -1016(R13) ; R28, -1016(R13) ; 012010 A37C0000 4E64 LDL R27, (R28) ; R27, (R28) E360000A 4E68 BLBC R27, 116_30077$ ; R27, 116_30077$ 43C1153E 4E6C SUBQ SP, 8, SP ; SP, 8, SP A74DFC20 4E70 LDQ R26, -992(R13) ; R26, -992(R13) B41E0000 4E74 STQ R0, (SP) ; R0, (SP) A00B0008 4E78 LDL R0, 8(R11) ; R0, 8(R11) 43C1153E 4E7C SUBQ SP, 8, SP ; SP, 8, SP A76DFC28 4E80 LDQ R27, -984(R13) ; R27, -984(R13) 480070C0 4E84 EXTBL R0, 3, R0 ; R0, 3, R0 6B5A4000 4E88 JSR R26, R26 ; R26, R26 A41E0008 4E8C LDQ R0, 8(SP) ; R0, 8(SP) 43C2141E 4E90 ADDQ SP, 16, SP ; SP, 16, SP 4E94 116_30077$: A21E0000 4E94 LDL R16, (SP) ; R16, (SP) 43C0941E 4E98 ADDQ SP, 4, SP ; SP, 4, SP 47E0041A 4E9C MOV R0, R26 ; R0, R26 47E10419 4EA0 MOV R1, R25 ; R1, R25 4603F010 4EA4 AND R16, 31, R16 ; R16, 31, R16 0000000F 4EA8 CALL_PAL 15 ; 15 A03E0000 4EAC LDL R1, (SP) ; R1, (SP) ; 012011 47FA0400 4EB0 MOV R26, R0 ; R26, R0 ; 012010 A05E0004 4EB4 LDL R2, 4(SP) ; R2, 4(SP) ; 012011 A07E0008 4EB8 LDL R3, 8(SP) ; R3, 8(SP) A09E000C 4EBC LDL R4, 12(SP) ; R4, 12(SP) A0BE0010 4EC0 LDL R5, 16(SP) ; R5, 16(SP) A0DE0014 4EC4 LDL R6, 20(SP) ; R6, 20(SP) A0FE0018 4EC8 LDL R7, 24(SP) ; R7, 24(SP) A11E001C 4ECC LDL R8, 28(SP) ; R8, 28(SP) A13E0020 4ED0 LDL R9, 32(SP) ; R9, 32(SP) A15E0024 4ED4 LDL R10, 36(SP) ; R10, 36(SP) A17E0028 4ED8 LDL R11, 40(SP) ; R11, 40(SP) 43C5941E 4EDC ADDQ SP, 44, SP ; SP, 44, SP C3FFFF41 4EE0 BR $L56 ; $L56 ; 012012 2FFE0000 4EE4 LNOP ; 4EE8 $L115: ; 011902 JTDRIVER Machine Code Listing 2-DEC-1994 10:13:13 AMAC V2.1-13-2671 Page 206 V01H MUNG 2-DEC-1994 10:12:45 [EVERHART.JT]JTDRIVER_S2.MAR;120 A74DFC10 4EE8 LDQ R26, -1008(R13) ; R26, -1008(R13) 43C1153E 4EEC SUBQ SP, 8, SP ; SP, 8, SP A76DFC18 4EF0 LDQ R27, -1000(R13) ; R27, -1000(R13) 6B5A4000 4EF4 JSR R26, R26 ; R26, R26 43C1141E 4EF8 ADDQ SP, 8, SP ; SP, 8, SP C3FFFF6E 4EFC BR 116_30076$ ; 116_30076$ 4F00 $L116: ; 011922 47E05400 4F00 BIS R31, 2, R0 ; R31, 2, R0 C3FFFFD6 4F04 BR 116_100$ ; 116_100$ ; 011923 47FF041F 4F08 NOP ; 47FF041F 4F0C NOP ; Routine Size: 880 bytes, Routine Base: $$$115_DRIVER + 4BA0 4F10 UMUNG: ; 012013 43C8153E 4F10 SUBQ SP, 64, SP ; SP, 64, SP B75E0000 4F14 STQ R26, (SP) ; R26, (SP) B45E0008 4F18 STQ R2, 8(SP) ; R2, 8(SP) B47E0010 4F1C STQ R3, 16(SP) ; R3, 16(SP) B49E0018 4F20 STQ R4, 24(SP) ; R4, 24(SP) B4BE0020 4F24 STQ R5, 32(SP) ; R5, 32(SP) B55E0028 4F28 STQ R10, 40(SP) ; R10, 40(SP) B57E0030 4F2C STQ R11, 48(SP) ; R11, 48(SP) B5BE0038 4F30 STQ R13, 56(SP) ; R13, 56(SP) 47FB040D 4F34 MOV R27, R13 ; R27, R13 4F38 $L57: 43C1153E 4F38 SUBQ SP, 8, SP ; SP, 8, SP ; 012021 43EB0005 4F3C SEXTL R11, R5 ; R11, R5 ; 012022 B03E0004 4F40 STL R1, 4(SP) ; R1, 4(SP) ; 012021 B01E0000 4F44 STL R0, (SP) ; R0, (SP) A0250038 4F48 LDL R1, 56(R5) ; R1, 56(R5) ; 012024 A14500C0 4F4C LDL R10, 192(R5) ; R10, 192(R5) ; 012023 A56DFBC0 4F50 LDQ R11, -1088(R13) ; R11, -1088(R13) ; 012027 A021000C 4F54 LDL R1, 12(R1) ; R1, 12(R1) ; 012025 43EA0000 4F58 SEXTL R10, R0 ; R10, R0 ; 012026 47E0041B 4F5C MOV R0, R27 ; R0, R27 ; 012031 43C0953E 4F60 SUBQ SP, 4, SP ; SP, 4, SP 47E1041A 4F64 MOV R1, R26 ; R1, R26 0000000E 4F68 CALL_PAL 14 ; 14 A70DFBE8 4F6C LDQ R24, -1048(R13) ; R24, -1048(R13) 47FA0401 4F70 MOV R26, R1 ; R26, R1 B01E0000 4F74 STL R0, (SP) ; R0, (SP) 43C1153E 4F78 SUBQ SP, 8, SP ; SP, 8, SP 47FB0400 4F7C MOV R27, R0 ; R27, R0 B01E0004 4F80 STL R0, 4(SP) ; R0, 4(SP) 480094D9 4F84 EXTLL R0, 4, R25 ; R0, 4, R25 B33E0000 4F88 STL R25, (SP) ; R25, (SP) A0050008 4F8C LDL R0, 8(R5) ; R0, 8(R5) A2F80000 4F90 LDL R23, (R24) ; R23, (R24) 480070C0 4F94 EXTBL R0, 3, R0 ; R0, 3, R0 F2E0003F 4F98 BLBS R23, $L117 ; R23, $L117 4F9C 117_30079$: A6CDFBE0 4F9C LDQ R22, -1056(R13) ; R22, -1056(R13) 47E1041B 4FA0 MOV R1, R27 ; R1, R27 47E0041C 4FA4 MOV R0, R28 ; R0, R28 40160056 4FA8 S4ADDL R0, R22, R22 ; R0, R22, R22 A2160000 4FAC LDL R16, (R22) ; R16, (R22) JTDRIVER Machine Code Listing 2-DEC-1994 10:13:13 AMAC V2.1-13-2671 Page 207 V01H UMUNG 2-DEC-1994 10:12:45 [EVERHART.JT]JTDRIVER_S2.MAR;120 4603F010 4FB0 AND R16, 31, R16 ; R16, 31, R16 0000000F 4FB4 CALL_PAL 15 ; 15 47FC0400 4FB8 MOV R28, R0 ; R28, R0 47FB0401 4FBC MOV R27, R1 ; R27, R1 4FC0 117_30080$: A01E0000 4FC0 LDL R0, (SP) ; R0, (SP) 48009F5A 4FC4 EXTQH R0, 4, R26 ; R0, 4, R26 A01E0004 4FC8 LDL R0, 4(SP) ; R0, 4(SP) 43C1141E 4FCC ADDQ SP, 8, SP ; SP, 8, SP 480014C0 4FD0 EXTLL R0, 0, R0 ; R0, 0, R0 47400400 4FD4 BIS R26, R0, R0 ; R26, R0, R0 4FD8 117_2$: ; 012032 A30AFFF0 4FD8 LDL R24, -16(R10) ; R24, -16(R10) 430B0530 4FDC SUBQ R24, R11, R16 ; R24, R11, R16 E6000033 4FE0 BEQ R16, 117_1$ ; R16, 117_1$ ; 012034 A2CAFFFC 4FE4 LDL R22, -4(R10) ; R22, -4(R10) ; 012036 279FF014 4FE8 LDAH R28, -4076(R31) ; R28, -4076(R31) 239CF070 4FEC LDA R28, -3984(R28) ; R28, -3984(R28) 42DC0530 4FF0 SUBQ R22, R28, R16 ; R22, R28, R16 F6000002 4FF4 BNE R16, 117_4$ ; R16, 117_4$ ; 012037 4FF8 117_30081$: A14AFFF8 4FF8 LDL R10, -8(R10) ; R10, -8(R10) ; 012040 E95FFFF6 4FFC BLT R10, 117_2$ ; R10, 117_2$ ; 012044 5000 117_4$: ; 012117 A74DFBE8 5000 LDQ R26, -1048(R13) ; R26, -1048(R13) ; 012118 A33A0000 5004 LDL R25, (R26) ; R25, (R26) E3200010 5008 BLBC R25, 117_30083$ ; R25, 117_30083$ 43C1153E 500C SUBQ SP, 8, SP ; SP, 8, SP 480094D8 5010 EXTLL R0, 4, R24 ; R0, 4, R24 A74DFC00 5014 LDQ R26, -1024(R13) ; R26, -1024(R13) B01E0004 5018 STL R0, 4(SP) ; R0, 4(SP) B31E0000 501C STL R24, (SP) ; R24, (SP) A0050008 5020 LDL R0, 8(R5) ; R0, 8(R5) 43C1953E 5024 SUBQ SP, 12, SP ; SP, 12, SP A76DFC08 5028 LDQ R27, -1016(R13) ; R27, -1016(R13) 480070C0 502C EXTBL R0, 3, R0 ; R0, 3, R0 6B5A4000 5030 JSR R26, R26 ; R26, R26 A01E000C 5034 LDL R0, 12(SP) ; R0, 12(SP) 48009F57 5038 EXTQH R0, 4, R23 ; R0, 4, R23 A01E0010 503C LDL R0, 16(SP) ; R0, 16(SP) 43C2941E 5040 ADDQ SP, 20, SP ; SP, 20, SP 480014C0 5044 EXTLL R0, 0, R0 ; R0, 0, R0 46E00400 5048 BIS R23, R0, R0 ; R23, R0, R0 504C 117_30083$: A21E0000 504C LDL R16, (SP) ; R16, (SP) 47E00416 5050 MOV R0, R22 ; R0, R22 43C0941E 5054 ADDQ SP, 4, SP ; SP, 4, SP 47E1041C 5058 MOV R1, R28 ; R1, R28 4603F010 505C AND R16, 31, R16 ; R16, 31, R16 0000000F 5060 CALL_PAL 15 ; 15 A01E0000 5064 LDL R0, (SP) ; R0, (SP) ; 012119 A03E0004 5068 LDL R1, 4(SP) ; R1, 4(SP) 43C1141E 506C ADDQ SP, 8, SP ; SP, 8, SP 5070 $L58: ; 012121 A79E0000 5070 LDQ R28, (SP) ; R28, (SP) A45E0008 5074 LDQ R2, 8(SP) ; R2, 8(SP) A47E0010 5078 LDQ R3, 16(SP) ; R3, 16(SP) JTDRIVER Machine Code Listing 2-DEC-1994 10:13:13 AMAC V2.1-13-2671 Page 208 V01H UMUNG 2-DEC-1994 10:12:45 [EVERHART.JT]JTDRIVER_S2.MAR;120 A49E0018 507C LDQ R4, 24(SP) ; R4, 24(SP) A4BE0020 5080 LDQ R5, 32(SP) ; R5, 32(SP) A55E0028 5084 LDQ R10, 40(SP) ; R10, 40(SP) A57E0030 5088 LDQ R11, 48(SP) ; R11, 48(SP) A5BE0038 508C LDQ R13, 56(SP) ; R13, 56(SP) 43C8141E 5090 ADDQ SP, 64, SP ; SP, 64, SP 6BFC8001 5094 RET R28 ; R28 5098 $L117: ; 012031 A74DFBF0 5098 LDQ R26, -1040(R13) ; R26, -1040(R13) 43C1953E 509C SUBQ SP, 12, SP ; SP, 12, SP A76DFBF8 50A0 LDQ R27, -1032(R13) ; R27, -1032(R13) 6B5A4000 50A4 JSR R26, R26 ; R26, R26 43C1941E 50A8 ADDQ SP, 12, SP ; SP, 12, SP C3FFFFC4 50AC BR 117_30080$ ; 117_30080$ 50B0 117_1$: ; 012047 A22AFFF4 50B0 LDL R17, -12(R10) ; R17, -12(R10) ; 012050 FA200003 50B4 BGE R17, 117_3$ ; R17, 117_3$ ; 012051 47F1040B 50B8 MOV R17, R11 ; R17, R11 ; 012053 A32AFFF8 50BC LDL R25, -8(R10) ; R25, -8(R10) ; 012054 B32BFFF8 50C0 STL R25, -8(R11) ; R25, -8(R11) 50C4 117_3$: ; 012055 A04AFFF8 50C4 LDL R2, -8(R10) ; R2, -8(R10) ; 012058 40410530 50C8 SUBQ R2, R1, R16 ; R2, R1, R16 ; 012060 E6000002 50CC BEQ R16, 117_5$ ; R16, 117_5$ ; 012061 A38AFFF4 50D0 LDL R28, -12(R10) ; R28, -12(R10) ; 012063 B382FFF4 50D4 STL R28, -12(R2) ; R28, -12(R2) 50D8 117_5$: ; 012064 208AFE44 50D8 LDA R4, -444(R10) ; R4, -444(R10) ; 012075 A74DFBB8 50DC LDQ R26, -1096(R13) ; R26, -1096(R13) ; 012073 239F0810 50E0 LDA R28, 2064(R31) ; R28, 2064(R31) ; 012079 A0200028 50E4 LDL R1, 40(R0) ; R1, 40(R0) ; 012072 A2C40088 50E8 LDL R22, 136(R4) ; R22, 136(R4) ; 012079 47FF0403 50EC CLR R3 ; R3 ; 012074 43521402 50F0 ADDQ R26, 144, R2 ; R26, 144, R2 ; 012073 46DC0116 50F4 BIC R22, R28, R22 ; R22, R28, R22 ; 012079 B2C40088 50F8 STL R22, 136(R4) ; R22, 136(R4) 47FF041F 50FC NOP ; 5100 117_6$: ; 012083 40220530 5100 SUBQ R1, R2, R16 ; R1, R2, R16 E600000A 5104 BEQ R16, 117_7$ ; R16, 117_7$ ; 012084 A081FFFC 5108 LDL R4, -4(R1) ; R4, -4(R1) ; 012086 43E10003 510C SEXTL R1, R3 ; R1, R3 ; 012085 F8800015 5110 BGE R4, 117_8$ ; R4, 117_8$ ; 012087 A0240380 5114 LDL R1, 896(R4) ; R1, 896(R4) ; 012088 E83FFFF9 5118 BLT R1, 117_6$ ; R1, 117_6$ ; 012093 C3E00012 511C BR 117_8$ ; 117_8$ ; 012092 5120 $L118: ; 012037 C3FFFFB7 5120 BR 117_4$ ; 117_4$ 47FF041F 5124 NOP ; 5128 117_30082$: ; 012044 C3FFFFAB 5128 BR 117_2$ ; 117_2$ ; 012046 47FF041F 512C NOP ; 5130 117_7$: ; 012094 F860000D 5130 BGE R3, 117_8$ ; R3, 117_8$ ; 012098 A081FFFC 5134 LDL R4, -4(R1) ; R4, -4(R1) ; 012099 F8800009 5138 BGE R4, 117_17$ ; R4, 117_17$ ; 012100 A3640380 513C LDL R27, 896(R4) ; R27, 896(R4) ; 012101 JTDRIVER Machine Code Listing 2-DEC-1994 10:13:13 AMAC V2.1-13-2671 Page 209 V01H UMUNG 2-DEC-1994 10:12:45 [EVERHART.JT]JTDRIVER_S2.MAR;120 43C0953E 5140 SUBQ SP, 4, SP ; SP, 4, SP B37E0000 5144 STL R27, (SP) ; R27, (SP) A083FFFC 5148 LDL R4, -4(R3) ; R4, -4(R3) ; 012102 F880000C 514C BGE R4, $L119 ; R4, $L119 ; 012103 5150 117_18$: ; 012106 A35E0000 5150 LDL R26, (SP) ; R26, (SP) 43C0941E 5154 ADDQ SP, 4, SP ; SP, 4, SP B3440380 5158 STL R26, 896(R4) ; R26, 896(R4) 47FF041F 515C NOP ; 5160 117_17$: ; 012107 A321FFFC 5160 LDL R25, -4(R1) ; R25, -4(R1) B323FFFC 5164 STL R25, -4(R3) ; R25, -4(R3) 5168 117_8$: ; 012109 41400530 5168 SUBQ R10, R0, R16 ; R10, R0, R16 ; 012113 F61FFFA4 516C BNE R16, 117_4$ ; R16, 117_4$ ; 012114 A2EAFFF8 5170 LDL R23, -8(R10) ; R23, -8(R10) ; 012115 B2E500C0 5174 STL R23, 192(R5) ; R23, 192(R5) B3EA01CC 5178 STL R31, 460(R10) ; R31, 460(R10) ; 012116 C3FFFFA0 517C BR 117_4$ ; 117_4$ ; 012117 5180 $L119: ; 012104 43C0941E 5180 ADDQ SP, 4, SP ; SP, 4, SP C3FFFFF6 5184 BR 117_17$ ; 117_17$ ; 012105 47FF041F 5188 NOP ; 47FF041F 518C NOP ; Routine Size: 640 bytes, Routine Base: $$$115_DRIVER + 4F10 5190 JT_CTRL_INIT: ; 012174 43C8153E 5190 SUBQ SP, 64, SP ; SP, 64, SP B77E0000 5194 STQ R27, (SP) ; R27, (SP) B75E0008 5198 STQ R26, 8(SP) ; R26, 8(SP) B45E0010 519C STQ R2, 16(SP) ; R2, 16(SP) B49E0018 51A0 STQ R4, 24(SP) ; R4, 24(SP) B4BE0020 51A4 STQ R5, 32(SP) ; R5, 32(SP) B4DE0028 51A8 STQ R6, 40(SP) ; R6, 40(SP) B51E0030 51AC STQ R8, 48(SP) ; R8, 48(SP) B7BE0038 51B0 STQ FP, 56(SP) ; FP, 56(SP) 47FE041D 51B4 MOV SP, FP ; SP, FP 51B8 $L59: 47E03400 51B8 BIS R31, 1, R0 ; R31, 1, R0 43F00004 51BC SEXTL R16, R4 ; R16, R4 43F00005 51C0 SEXTL R16, R5 ; R16, R5 43F10006 51C4 SEXTL R17, R6 ; R17, R6 43F20008 51C8 SEXTL R18, R8 ; R18, R8 47E03400 51CC BIS R31, 1, R0 ; R31, 1, R0 ; 012176 51D0 $L60: ; 012177 47FD041E 51D0 MOV FP, SP ; FP, SP A79E0008 51D4 LDQ R28, 8(SP) ; R28, 8(SP) A45E0010 51D8 LDQ R2, 16(SP) ; R2, 16(SP) A49E0018 51DC LDQ R4, 24(SP) ; R4, 24(SP) A4BE0020 51E0 LDQ R5, 32(SP) ; R5, 32(SP) A4DE0028 51E4 LDQ R6, 40(SP) ; R6, 40(SP) A51E0030 51E8 LDQ R8, 48(SP) ; R8, 48(SP) A7BE0038 51EC LDQ FP, 56(SP) ; FP, 56(SP) 43C8141E 51F0 ADDQ SP, 64, SP ; SP, 64, SP 6BFC8001 51F4 RET R28 ; R28 47FF041F 51F8 NOP ; JTDRIVER Machine Code Listing 2-DEC-1994 10:13:13 AMAC V2.1-13-2671 Page 210 V01H JT_CTRL_INIT 2-DEC-1994 10:12:45 [EVERHART.JT]JTDRIVER_S2.MAR;120 47FF041F 51FC NOP ; Routine Size: 112 bytes, Routine Base: $$$115_DRIVER + 5190 5200 JT_UNIT_INIT: ; 012239 43CA153E 5200 SUBQ SP, 80, SP ; SP, 80, SP B77E0000 5204 STQ R27, (SP) ; R27, (SP) B75E0018 5208 STQ R26, 24(SP) ; R26, 24(SP) B45E0020 520C STQ R2, 32(SP) ; R2, 32(SP) B47E0028 5210 STQ R3, 40(SP) ; R3, 40(SP) B49E0030 5214 STQ R4, 48(SP) ; R4, 48(SP) B4BE0038 5218 STQ R5, 56(SP) ; R5, 56(SP) B5BE0040 521C STQ R13, 64(SP) ; R13, 64(SP) B7BE0048 5220 STQ FP, 72(SP) ; FP, 72(SP) 47FB040D 5224 MOV R27, R13 ; R27, R13 B7FE0008 5228 STQ R31, 8(SP) ; R31, 8(SP) 47FE041D 522C MOV SP, FP ; SP, FP 5230 $L61: 43F10005 5230 SEXTL R17, R5 ; R17, R5 A6ED0020 5234 LDQ R23, 32(R13) ; R23, 32(R13) ; 012266 239F2000 5238 LDA R28, 8192(R31) ; R28, 8192(R31) ; 012245 B3850108 523C STL R28, 264(R5) ; R28, 264(R5) A3250058 5240 LDL R25, 88(R5) ; R25, 88(R5) ; 012246 47F9141A 5244 BIS R31, 200, R26 ; R31, 200, R26 271FB22D 5248 LDAH R24, -19923(R31) ; R24, -19923(R31) ; 012252 23184001 524C LDA R24, 16385(R24) ; R24, 16385(R24) 473FF119 5250 BIC R25, 255, R25 ; R25, 255, R25 ; 012246 473A0419 5254 BIS R25, R26, R25 ; R25, R26, R25 B3250058 5258 STL R25, 88(R5) ; R25, 88(R5) 47F03416 525C BIS R31, 129, R22 ; R31, 129, R22 ; 012255 B3E50388 5260 STL R31, 904(R5) ; R31, 904(R5) ; 012247 4AC0317B 5264 INSBL R22, 1, R27 ; R22, 1, R27 ; 012255 B30500CC 5268 STL R24, 204(R5) ; R24, 204(R5) ; 012252 47E03400 526C BIS R31, 1, R0 ; R31, 1, R0 ; 012239 A3850058 5270 LDL R28, 88(R5) ; R28, 88(R5) ; 012255 43F00004 5274 SEXTL R16, R4 ; R16, R4 ; 012239 A72DFB88 5278 LDQ R25, -1144(R13) ; R25, -1144(R13) ; 012263 A74DFB90 527C LDQ R26, -1136(R13) ; R26, -1136(R13) ; 012256 4B80305C 5280 MSKBL R28, 1, R28 ; R28, 1, R28 ; 012255 A6CD0028 5284 LDQ R22, 40(R13) ; R22, 40(R13) ; 012267 231901B4 5288 LDA R24, 436(R25) ; R24, 436(R25) ; 012263 479B041C 528C BIS R28, R27, R28 ; R28, R27, R28 ; 012255 B3850058 5290 STL R28, 88(R5) ; R28, 88(R5) A78DFEE8 5294 LDQ R28, -280(R13) ; R28, -280(R13) ; 012284 B34501AC 5298 STL R26, 428(R5) ; R26, 428(R5) ; 012256 B3050114 529C STL R24, 276(R5) ; R24, 276(R5) ; 012263 B2E503AC 52A0 STL R23, 940(R5) ; R23, 940(R5) ; 012266 B2C503B0 52A4 STL R22, 944(R5) ; R22, 944(R5) ; 012267 B3F90080 52A8 STL R31, 128(R25) ; R31, 128(R25) ; 012282 A03C0000 52AC LDL R1, (R28) ; R1, (R28) ; 012284 A74DFCA0 52B0 LDQ R26, -864(R13) ; R26, -864(R13) ; 012297 43C2153E 52B4 SUBQ SP, 16, SP ; SP, 16, SP A76DFCA8 52B8 LDQ R27, -856(R13) ; R27, -856(R13) 4820B721 52BC SLL R1, 5, R1 ; R1, 5, R1 ; 012285 43E10001 52C0 SEXTL R1, R1 ; R1, R1 B03E000C 52C4 STL R1, 12(SP) ; R1, 12(SP) ; 012296 6B5A4000 52C8 JSR R26, R26 ; R26, R26 ; 012297 JTDRIVER Machine Code Listing 2-DEC-1994 10:13:13 AMAC V2.1-13-2671 Page 211 V01H JT_UNIT_INIT 2-DEC-1994 10:12:45 [EVERHART.JT]JTDRIVER_S2.MAR;120 A03E000C 52CC LDL R1, 12(SP) ; R1, 12(SP) ; 012298 43C2141E 52D0 ADDQ SP, 16, SP ; SP, 16, SP E000003E 52D4 BLBC R0, 119_5$ ; R0, 119_5$ ; 012299 43C3153E 52D8 SUBQ SP, 24, SP ; SP, 24, SP ; 012300 A74DFCB0 52DC LDQ R26, -848(R13) ; R26, -848(R13) 47E20419 52E0 MOV R2, R25 ; R2, R25 B0BE0014 52E4 STL R5, 20(SP) ; R5, 20(SP) B09E0010 52E8 STL R4, 16(SP) ; R4, 16(SP) 482012D1 52EC EXTWL R1, 0, R17 ; R1, 0, R17 B07E000C 52F0 STL R3, 12(SP) ; R3, 12(SP) 47E20410 52F4 MOV R2, R16 ; R2, R16 B05E0008 52F8 STL R2, 8(SP) ; R2, 8(SP) B03E0004 52FC STL R1, 4(SP) ; R1, 4(SP) B01E0000 5300 STL R0, (SP) ; R0, (SP) 47FF0400 5304 CLR R0 ; R0 47F90401 5308 MOV R25, R1 ; R25, R1 6B5A4000 530C JSR R26, R26 ; R26, R26 A0BE0014 5310 LDL R5, 20(SP) ; R5, 20(SP) A74DFCA0 5314 LDQ R26, -864(R13) ; R26, -864(R13) ; 012307 A01E0000 5318 LDL R0, (SP) ; R0, (SP) ; 012300 A03E0004 531C LDL R1, 4(SP) ; R1, 4(SP) A05E0008 5320 LDL R2, 8(SP) ; R2, 8(SP) 203F0800 5324 LDA R1, 2048(R31) ; R1, 2048(R31) ; 012306 A07E000C 5328 LDL R3, 12(SP) ; R3, 12(SP) ; 012300 A09E0010 532C LDL R4, 16(SP) ; R4, 16(SP) 43C3141E 5330 ADDQ SP, 24, SP ; SP, 24, SP B045012C 5334 STL R2, 300(R5) ; R2, 300(R5) ; 012301 A76DFCA8 5338 LDQ R27, -856(R13) ; R27, -856(R13) ; 012307 B3E50240 533C STL R31, 576(R5) ; R31, 576(R5) ; 012305 6B5A4000 5340 JSR R26, R26 ; R26, R26 ; 012307 E0000016 5344 BLBC R0, 119_31$ ; R0, 119_31$ ; 012308 B0450240 5348 STL R2, 576(R5) ; R2, 576(R5) ; 012309 43C3153E 534C SUBQ SP, 24, SP ; SP, 24, SP ; 012310 A74DFCB0 5350 LDQ R26, -848(R13) ; R26, -848(R13) 47E20418 5354 MOV R2, R24 ; R2, R24 B0BE0014 5358 STL R5, 20(SP) ; R5, 20(SP) 482012D1 535C EXTWL R1, 0, R17 ; R1, 0, R17 B09E0010 5360 STL R4, 16(SP) ; R4, 16(SP) 47E20410 5364 MOV R2, R16 ; R2, R16 B07E000C 5368 STL R3, 12(SP) ; R3, 12(SP) B05E0008 536C STL R2, 8(SP) ; R2, 8(SP) B03E0004 5370 STL R1, 4(SP) ; R1, 4(SP) 47F80401 5374 MOV R24, R1 ; R24, R1 B01E0000 5378 STL R0, (SP) ; R0, (SP) 47FF0400 537C CLR R0 ; R0 6B5A4000 5380 JSR R26, R26 ; R26, R26 A01E0000 5384 LDL R0, (SP) ; R0, (SP) A03E0004 5388 LDL R1, 4(SP) ; R1, 4(SP) A05E0008 538C LDL R2, 8(SP) ; R2, 8(SP) A07E000C 5390 LDL R3, 12(SP) ; R3, 12(SP) A09E0010 5394 LDL R4, 16(SP) ; R4, 16(SP) A0BE0014 5398 LDL R5, 20(SP) ; R5, 20(SP) 43C3141E 539C ADDQ SP, 24, SP ; SP, 24, SP 53A0 119_31$: ; 012311 47E03400 53A0 BIS R31, 1, R0 ; R31, 1, R0 ; 012313 2FFE0000 53A4 LNOP ; 53A8 $L62: ; 012314 JTDRIVER Machine Code Listing 2-DEC-1994 10:13:13 AMAC V2.1-13-2671 Page 212 V01H JT_UNIT_INIT 2-DEC-1994 10:12:45 [EVERHART.JT]JTDRIVER_S2.MAR;120 47FD041E 53A8 MOV FP, SP ; FP, SP A79E0018 53AC LDQ R28, 24(SP) ; R28, 24(SP) A45E0020 53B0 LDQ R2, 32(SP) ; R2, 32(SP) A47E0028 53B4 LDQ R3, 40(SP) ; R3, 40(SP) A49E0030 53B8 LDQ R4, 48(SP) ; R4, 48(SP) A4BE0038 53BC LDQ R5, 56(SP) ; R5, 56(SP) A5BE0040 53C0 LDQ R13, 64(SP) ; R13, 64(SP) A7BE0048 53C4 LDQ FP, 72(SP) ; FP, 72(SP) 43CA141E 53C8 ADDQ SP, 80, SP ; SP, 80, SP 6BFC8001 53CC RET R28 ; R28 53D0 119_5$: ; 012315 A2C50088 53D0 LDL R22, 136(R5) ; R22, 136(R5) ; 012316 47E03400 53D4 BIS R31, 1, R0 ; R31, 1, R0 ; 012317 46C21116 53D8 BIC R22, 16, R22 ; R22, 16, R22 ; 012316 B2C50088 53DC STL R22, 136(R5) ; R22, 136(R5) C3FFFFF1 53E0 BR $L62 ; $L62 ; 012318 47FF041F 53E4 NOP ; 47FF041F 53E8 NOP ; 47FF041F 53EC NOP ; Routine Size: 496 bytes, Routine Base: $$$115_DRIVER + 5200 53F0 FINDLDT: ; 012331 43CC153E 53F0 SUBQ SP, 96, SP ; SP, 96, SP B75E0000 53F4 STQ R26, (SP) ; R26, (SP) B45E0008 53F8 STQ R2, 8(SP) ; R2, 8(SP) B47E0010 53FC STQ R3, 16(SP) ; R3, 16(SP) B49E0018 5400 STQ R4, 24(SP) ; R4, 24(SP) B4BE0020 5404 STQ R5, 32(SP) ; R5, 32(SP) B4DE0028 5408 STQ R6, 40(SP) ; R6, 40(SP) B4FE0030 540C STQ R7, 48(SP) ; R7, 48(SP) B51E0038 5410 STQ R8, 56(SP) ; R8, 56(SP) B53E0040 5414 STQ R9, 64(SP) ; R9, 64(SP) B55E0048 5418 STQ R10, 72(SP) ; R10, 72(SP) B57E0050 541C STQ R11, 80(SP) ; R11, 80(SP) B5BE0058 5420 STQ R13, 88(SP) ; R13, 88(SP) 47FB040D 5424 MOV R27, R13 ; R27, R13 5428 $L63: A78DFBA8 5428 LDQ R28, -1112(R13) ; R28, -1112(R13) ; 012333 47FF0400 542C CLR R0 ; R0 ; 012334 A025012C 5430 LDL R1, 300(R5) ; R1, 300(R5) ; 012335 A09C0000 5434 LDL R4, (R28) ; R4, (R28) ; 012333 F820001B 5438 BGE R1, 120_999$ ; R1, 120_999$ ; 012336 A04400D4 543C LDL R2, 212(R4) ; R2, 212(R4) ; 012337 484012C2 5440 EXTWL R2, 0, R2 ; R2, 0, R2 4840B722 5444 SLL R2, 5, R2 ; R2, 5, R2 ; 012338 43E20002 5448 SEXTL R2, R2 ; R2, R2 40410003 544C ADDL R2, R1, R3 ; R2, R1, R3 ; 012340 43E30001 5450 SEXTL R3, R1 ; R3, R1 ; 012341 A3410004 5454 LDL R26, 4(R1) ; R26, 4(R1) ; 012342 E7400025 5458 BEQ R26, $L120 ; R26, $L120 ; 012343 545C 120_3$: ; 012346 A3210004 545C LDL R25, 4(R1) ; R25, 4(R1) A30400D4 5460 LDL R24, 212(R4) ; R24, 212(R4) 43380530 5464 SUBQ R25, R24, R16 ; R25, R24, R16 E6000003 5468 BEQ R16, 120_5$ ; R16, 120_5$ ; 012347 41A2141B 546C ADDQ R13, 16, R27 ; R13, 16, R27 ; 012348 JTDRIVER Machine Code Listing 2-DEC-1994 10:13:13 AMAC V2.1-13-2671 Page 213 V01H FINDLDT 2-DEC-1994 10:12:45 [EVERHART.JT]JTDRIVER_S2.MAR;120 D3400023 5470 BSR R26, FRESLOT ; R26, FRESLOT B3E10000 5474 STL R31, (R1) ; R31, (R1) ; 012349 5478 120_5$: ; 012350 A2E400D4 5478 LDL R23, 212(R4) ; R23, 212(R4) B2E10004 547C STL R23, 4(R1) ; R23, 4(R1) 5480 120_10$: ; 012351 F8200009 5480 BGE R1, 120_999$ ; R1, 120_999$ ; 012352 47FF041F 5484 NOP ; 5488 L$3: A1610000 5488 LDL R11, (R1) ; R11, (R1) ; 012354 F9600006 548C BGE R11, 120_999$ ; R11, 120_999$ ; 012355 A2CB0004 5490 LDL R22, 4(R11) ; R22, 4(R11) ; 012356 42C60530 5494 SUBQ R22, R6, R16 ; R22, R6, R16 E6000017 5498 BEQ R16, 120_800$ ; R16, 120_800$ ; 012357 43EB0001 549C SEXTL R11, R1 ; R11, R1 ; 012358 E83FFFF9 54A0 BLT R1, L$3 ; R1, L$3 ; 012352 47FF041F 54A4 NOP ; 54A8 120_999$: ; 012361 443F08C1 54A8 CMOVGE R1, R31, R1 ; R1, R31, R1 ; 012366 54AC 120_997$: ; 012367 441F08C0 54AC CMOVGE R0, R31, R0 ; R0, R31, R0 ; 012369 54B0 120_996$: ; 012370 B02503D4 54B0 STL R1, 980(R5) ; R1, 980(R5) ; 012371 54B4 $L64: ; 012373 A79E0000 54B4 LDQ R28, (SP) ; R28, (SP) A45E0008 54B8 LDQ R2, 8(SP) ; R2, 8(SP) A47E0010 54BC LDQ R3, 16(SP) ; R3, 16(SP) A49E0018 54C0 LDQ R4, 24(SP) ; R4, 24(SP) A4BE0020 54C4 LDQ R5, 32(SP) ; R5, 32(SP) A4DE0028 54C8 LDQ R6, 40(SP) ; R6, 40(SP) A4FE0030 54CC LDQ R7, 48(SP) ; R7, 48(SP) A51E0038 54D0 LDQ R8, 56(SP) ; R8, 56(SP) A53E0040 54D4 LDQ R9, 64(SP) ; R9, 64(SP) A55E0048 54D8 LDQ R10, 72(SP) ; R10, 72(SP) A57E0050 54DC LDQ R11, 80(SP) ; R11, 80(SP) A5BE0058 54E0 LDQ R13, 88(SP) ; R13, 88(SP) 43CC141E 54E4 ADDQ SP, 96, SP ; SP, 96, SP 6BFC8001 54E8 RET R28 ; R28 2FFE0000 54EC LNOP ; 54F0 $L120: ; 012344 B3E10000 54F0 STL R31, (R1) ; R31, (R1) C3FFFFE0 54F4 BR 120_5$ ; 120_5$ ; 012345 54F8 120_800$: ; 012360 43EB0000 54F8 SEXTL R11, R0 ; R11, R0 C3FFFFEA 54FC BR 120_999$ ; 120_999$ ; 012361 Routine Size: 272 bytes, Routine Base: $$$115_DRIVER + 53F0 5500 FRESLOT: ; 012374 43CC153E 5500 SUBQ SP, 96, SP ; SP, 96, SP B75E0000 5504 STQ R26, (SP) ; R26, (SP) B45E0008 5508 STQ R2, 8(SP) ; R2, 8(SP) B47E0010 550C STQ R3, 16(SP) ; R3, 16(SP) B49E0018 5510 STQ R4, 24(SP) ; R4, 24(SP) B4BE0020 5514 STQ R5, 32(SP) ; R5, 32(SP) B4DE0028 5518 STQ R6, 40(SP) ; R6, 40(SP) B4FE0030 551C STQ R7, 48(SP) ; R7, 48(SP) JTDRIVER Machine Code Listing 2-DEC-1994 10:13:13 AMAC V2.1-13-2671 Page 214 V01H FRESLOT 2-DEC-1994 10:12:45 [EVERHART.JT]JTDRIVER_S2.MAR;120 B51E0038 5520 STQ R8, 56(SP) ; R8, 56(SP) B53E0040 5524 STQ R9, 64(SP) ; R9, 64(SP) B55E0048 5528 STQ R10, 72(SP) ; R10, 72(SP) B57E0050 552C STQ R11, 80(SP) ; R11, 80(SP) B5BE0058 5530 STQ R13, 88(SP) ; R13, 88(SP) 47FB040D 5534 MOV R27, R13 ; R27, R13 5538 $L65: 43C1153E 5538 SUBQ SP, 8, SP ; SP, 8, SP ; 012375 43E1000B 553C SEXTL R1, R11 ; R1, R11 ; 012376 B03E0004 5540 STL R1, 4(SP) ; R1, 4(SP) ; 012375 B01E0000 5544 STL R0, (SP) ; R0, (SP) A1410000 5548 LDL R10, (R1) ; R10, (R1) ; 012377 554C 121_10$: ; 012378 E5400008 554C BEQ R10, 121_50$ ; R10, 121_50$ ; 012379 5550 L$4: A14A0000 5550 LDL R10, (R10) ; R10, (R10) ; 012380 A74DFC48 5554 LDQ R26, -952(R13) ; R26, -952(R13) ; 012382 A76DFC50 5558 LDQ R27, -944(R13) ; R27, -944(R13) A02A0034 555C LDL R1, 52(R10) ; R1, 52(R10) ; 012381 43C1153E 5560 SUBQ SP, 8, SP ; SP, 8, SP ; 012382 6B5A4000 5564 JSR R26, R26 ; R26, R26 43C1141E 5568 ADDQ SP, 8, SP ; SP, 8, SP F55FFFF8 556C BNE R10, L$4 ; R10, L$4 ; 012379 5570 121_50$: ; 012384 43C3153E 5570 SUBQ SP, 24, SP ; SP, 24, SP ; 012385 47E10419 5574 MOV R1, R25 ; R1, R25 B0BE0014 5578 STL R5, 20(SP) ; R5, 20(SP) 47FFF418 557C BIS R31, 255, R24 ; R31, 255, R24 B09E0010 5580 STL R4, 16(SP) ; R4, 16(SP) 4720F004 5584 AND R25, 7, R4 ; R25, 7, R4 B07E000C 5588 STL R3, 12(SP) ; R3, 12(SP) 4B040724 558C SLL R24, R4, R4 ; R24, R4, R4 B05E0008 5590 STL R2, 8(SP) ; R2, 8(SP) B03E0004 5594 STL R1, 4(SP) ; R1, 4(SP) B01E0000 5598 STL R0, (SP) ; R0, (SP) 2EF90000 559C LDQ_U R23, (R25) ; R23, (R25) 4AE40617 55A0 ZAP R23, R4, R23 ; R23, R4, R23 3EF90000 55A4 STQ_U R23, (R25) ; R23, (R25) 48811684 55A8 SRL R4, 8, R4 ; R4, 8, R4 3FF90008 55AC STQ_U R31, 8(R25) ; R31, 8(R25) 3FF90010 55B0 STQ_U R31, 16(R25) ; R31, 16(R25) 3FF90018 55B4 STQ_U R31, 24(R25) ; R31, 24(R25) E4800003 55B8 BEQ R4, $L190 ; R4, $L190 2EF90020 55BC LDQ_U R23, 32(R25) ; R23, 32(R25) 4AE40617 55C0 ZAP R23, R4, R23 ; R23, R4, R23 3EF90020 55C4 STQ_U R23, 32(R25) ; R23, 32(R25) 55C8 $L190: A01E0000 55C8 LDL R0, (SP) ; R0, (SP) A03E0004 55CC LDL R1, 4(SP) ; R1, 4(SP) A05E0008 55D0 LDL R2, 8(SP) ; R2, 8(SP) A07E000C 55D4 LDL R3, 12(SP) ; R3, 12(SP) A09E0010 55D8 LDL R4, 16(SP) ; R4, 16(SP) A0BE0014 55DC LDL R5, 20(SP) ; R5, 20(SP) A01E0018 55E0 LDL R0, 24(SP) ; R0, 24(SP) ; 012386 A03E001C 55E4 LDL R1, 28(SP) ; R1, 28(SP) 43C4141E 55E8 ADDQ SP, 32, SP ; SP, 32, SP 55EC $L66: ; 012387 JTDRIVER Machine Code Listing 2-DEC-1994 10:13:13 AMAC V2.1-13-2671 Page 215 V01H FRESLOT 2-DEC-1994 10:12:45 [EVERHART.JT]JTDRIVER_S2.MAR;120 A79E0000 55EC LDQ R28, (SP) ; R28, (SP) A45E0008 55F0 LDQ R2, 8(SP) ; R2, 8(SP) A47E0010 55F4 LDQ R3, 16(SP) ; R3, 16(SP) A49E0018 55F8 LDQ R4, 24(SP) ; R4, 24(SP) A4BE0020 55FC LDQ R5, 32(SP) ; R5, 32(SP) A4DE0028 5600 LDQ R6, 40(SP) ; R6, 40(SP) A4FE0030 5604 LDQ R7, 48(SP) ; R7, 48(SP) A51E0038 5608 LDQ R8, 56(SP) ; R8, 56(SP) A53E0040 560C LDQ R9, 64(SP) ; R9, 64(SP) A55E0048 5610 LDQ R10, 72(SP) ; R10, 72(SP) A57E0050 5614 LDQ R11, 80(SP) ; R11, 80(SP) A5BE0058 5618 LDQ R13, 88(SP) ; R13, 88(SP) 43CC141E 561C ADDQ SP, 96, SP ; SP, 96, SP 6BFC8001 5620 RET R28 ; R28 47FF041F 5624 NOP ; 47FF041F 5628 NOP ; 47FF041F 562C NOP ; Routine Size: 304 bytes, Routine Base: $$$115_DRIVER + 5500 5630 JT_ALIGN: ; 012417 5630 $L67: 47E03400 5630 BIS R31, 1, R0 ; R31, 1, R0 ; 012419 5634 $L68: ; 012420 6BFA8001 5634 RET R26 ; R26 47FF041F 5638 NOP ; 47FF041F 563C NOP ; Routine Size: 16 bytes, Routine Base: $$$115_DRIVER + 5630 5640 JT_STARTIO: ; 012480 43C8153E 5640 SUBQ SP, 64, SP ; SP, 64, SP B77E0000 5644 STQ R27, (SP) ; R27, (SP) B75E0008 5648 STQ R26, 8(SP) ; R26, 8(SP) B45E0010 564C STQ R2, 16(SP) ; R2, 16(SP) B47E0018 5650 STQ R3, 24(SP) ; R3, 24(SP) B49E0020 5654 STQ R4, 32(SP) ; R4, 32(SP) B4BE0028 5658 STQ R5, 40(SP) ; R5, 40(SP) B5BE0030 565C STQ R13, 48(SP) ; R13, 48(SP) B7BE0038 5660 STQ FP, 56(SP) ; FP, 56(SP) 47FB040D 5664 MOV R27, R13 ; R27, R13 47FE041D 5668 MOV SP, FP ; SP, FP 566C $L69: 43F10005 566C SEXTL R17, R5 ; R17, R5 43F00003 5670 SEXTL R16, R3 ; R16, R3 A2450088 5674 LDL R18, 136(R5) ; R18, 136(R5) ; 012488 4642101C 5678 AND R18, 16, R28 ; R18, 16, R28 567C 123_210$: ; 012492 201F0254 567C LDA R0, 596(R31) ; R0, 596(R31) ; 012490 5680 RESETXFR: ; 012501 A0650078 5680 LDL R3, 120(R5) ; R3, 120(R5) ; 012502 5684 FUNCXT: ; 012505 A74D0028 5684 LDQ R26, 40(R13) ; R26, 40(R13) ; 012533 47FF0401 5688 CLR R1 ; R1 ; 012506 A76D0030 568C LDQ R27, 48(R13) ; R27, 48(R13) ; 012533 43E50012 5690 SEXTL R5, R18 ; R5, R18 43E10011 5694 SEXTL R1, R17 ; R1, R17 JTDRIVER Machine Code Listing 2-DEC-1994 10:13:13 AMAC V2.1-13-2671 Page 216 V01H JT_STARTIO 2-DEC-1994 10:12:45 [EVERHART.JT]JTDRIVER_S2.MAR;120 43E00010 5698 SEXTL R0, R16 ; R0, R16 47E07419 569C BIS R31, 3, R25 ; R31, 3, R25 6B5A4000 56A0 JSR R26, R26 ; R26, R26 56A4 $L70: 47FD041E 56A4 MOV FP, SP ; FP, SP A79E0008 56A8 LDQ R28, 8(SP) ; R28, 8(SP) A45E0010 56AC LDQ R2, 16(SP) ; R2, 16(SP) A47E0018 56B0 LDQ R3, 24(SP) ; R3, 24(SP) A49E0020 56B4 LDQ R4, 32(SP) ; R4, 32(SP) A4BE0028 56B8 LDQ R5, 40(SP) ; R5, 40(SP) A5BE0030 56BC LDQ R13, 48(SP) ; R13, 48(SP) A7BE0038 56C0 LDQ FP, 56(SP) ; FP, 56(SP) 43C8141E 56C4 ADDQ SP, 64, SP ; SP, 64, SP 6BFC8001 56C8 RET R28 ; R28 47FF041F 56CC NOP ; Routine Size: 144 bytes, Routine Base: $$$115_DRIVER + 5640 56D0 JTKAST: ; 012548 43CC153E 56D0 SUBQ SP, 96, SP ; SP, 96, SP B75E0000 56D4 STQ R26, (SP) ; R26, (SP) B45E0008 56D8 STQ R2, 8(SP) ; R2, 8(SP) B47E0010 56DC STQ R3, 16(SP) ; R3, 16(SP) B49E0018 56E0 STQ R4, 24(SP) ; R4, 24(SP) B4BE0020 56E4 STQ R5, 32(SP) ; R5, 32(SP) B4DE0028 56E8 STQ R6, 40(SP) ; R6, 40(SP) B4FE0030 56EC STQ R7, 48(SP) ; R7, 48(SP) B51E0038 56F0 STQ R8, 56(SP) ; R8, 56(SP) B53E0040 56F4 STQ R9, 64(SP) ; R9, 64(SP) B55E0048 56F8 STQ R10, 72(SP) ; R10, 72(SP) B57E0050 56FC STQ R11, 80(SP) ; R11, 80(SP) B5BE0058 5700 STQ R13, 88(SP) ; R13, 88(SP) 47FB040D 5704 MOV R27, R13 ; R27, R13 5708 $L71: 43C6153E 5708 SUBQ SP, 48, SP ; SP, 48, SP ; 012550 A74DFBF0 570C LDQ R26, -1040(R13) ; R26, -1040(R13) ; 012554 A76DFBF8 5710 LDQ R27, -1032(R13) ; R27, -1032(R13) B17E002C 5714 STL R11, 44(SP) ; R11, 44(SP) ; 012550 B15E0028 5718 STL R10, 40(SP) ; R10, 40(SP) B13E0024 571C STL R9, 36(SP) ; R9, 36(SP) B11E0020 5720 STL R8, 32(SP) ; R8, 32(SP) B0FE001C 5724 STL R7, 28(SP) ; R7, 28(SP) B0DE0018 5728 STL R6, 24(SP) ; R6, 24(SP) B0BE0014 572C STL R5, 20(SP) ; R5, 20(SP) B09E0010 5730 STL R4, 16(SP) ; R4, 16(SP) B07E000C 5734 STL R3, 12(SP) ; R3, 12(SP) B05E0008 5738 STL R2, 8(SP) ; R2, 8(SP) B03E0004 573C STL R1, 4(SP) ; R1, 4(SP) B01E0000 5740 STL R0, (SP) ; R0, (SP) 43E50000 5744 SEXTL R5, R0 ; R5, R0 ; 012552 A1650014 5748 LDL R11, 20(R5) ; R11, 20(R5) ; 012551 47E49401 574C BIS R31, 36, R1 ; R31, 36, R1 ; 012553 6B5A4000 5750 JSR R26, R26 ; R26, R26 ; 012554 A0AB0148 5754 LDL R5, 328(R11) ; R5, 328(R11) ; 012556 236DFB00 5758 LDA R27, -1280(R13) ; R27, -1280(R13) ; 012557 D35FEA94 575C BSR R26, GETJTUCB ; R26, GETJTUCB F8000001 5760 BGE R0, 126_12$ ; R0, 126_12$ ; 012559 JTDRIVER Machine Code Listing 2-DEC-1994 10:13:13 AMAC V2.1-13-2671 Page 217 V01H JTKAST 2-DEC-1994 10:12:45 [EVERHART.JT]JTDRIVER_S2.MAR;120 43E00005 5764 SEXTL R0, R5 ; R0, R5 ; 012560 5768 126_12$: ; 012561 B17E0000 5768 STL R11, (SP) ; R11, (SP) ; 012562 41AB141B 576C ADDQ R13, 88, R27 ; R13, 88, R27 ; 012565 B0BE0004 5770 STL R5, 4(SP) ; R5, 4(SP) ; 012563 A01E0000 5774 LDL R0, (SP) ; R0, (SP) ; 012564 A03E0004 5778 LDL R1, 4(SP) ; R1, 4(SP) A05E0008 577C LDL R2, 8(SP) ; R2, 8(SP) A07E000C 5780 LDL R3, 12(SP) ; R3, 12(SP) A09E0010 5784 LDL R4, 16(SP) ; R4, 16(SP) A0BE0014 5788 LDL R5, 20(SP) ; R5, 20(SP) A0DE0018 578C LDL R6, 24(SP) ; R6, 24(SP) A0FE001C 5790 LDL R7, 28(SP) ; R7, 28(SP) A11E0020 5794 LDL R8, 32(SP) ; R8, 32(SP) A13E0024 5798 LDL R9, 36(SP) ; R9, 36(SP) A15E0028 579C LDL R10, 40(SP) ; R10, 40(SP) A17E002C 57A0 LDL R11, 44(SP) ; R11, 44(SP) 43C6141E 57A4 ADDQ SP, 48, SP ; SP, 48, SP D340024D 57A8 BSR R26, LCLCNT ; R26, LCLCNT ; 012565 57AC $L72: ; 012566 A79E0000 57AC LDQ R28, (SP) ; R28, (SP) A45E0008 57B0 LDQ R2, 8(SP) ; R2, 8(SP) A47E0010 57B4 LDQ R3, 16(SP) ; R3, 16(SP) A49E0018 57B8 LDQ R4, 24(SP) ; R4, 24(SP) A4BE0020 57BC LDQ R5, 32(SP) ; R5, 32(SP) A4DE0028 57C0 LDQ R6, 40(SP) ; R6, 40(SP) A4FE0030 57C4 LDQ R7, 48(SP) ; R7, 48(SP) A51E0038 57C8 LDQ R8, 56(SP) ; R8, 56(SP) A53E0040 57CC LDQ R9, 64(SP) ; R9, 64(SP) A55E0048 57D0 LDQ R10, 72(SP) ; R10, 72(SP) A57E0050 57D4 LDQ R11, 80(SP) ; R11, 80(SP) A5BE0058 57D8 LDQ R13, 88(SP) ; R13, 88(SP) 43CC141E 57DC ADDQ SP, 96, SP ; SP, 96, SP 6BFC8001 57E0 RET R28 ; R28 47FF041F 57E4 NOP ; 47FF041F 57E8 NOP ; 47FF041F 57EC NOP ; Routine Size: 288 bytes, Routine Base: $$$115_DRIVER + 56D0 57F0 VCSTP15:: ; 012570 43D0153E 57F0 SUBQ SP, 128, SP ; SP, 128, SP B77E0000 57F4 STQ R27, (SP) ; R27, (SP) B75E0018 57F8 STQ R26, 24(SP) ; R26, 24(SP) B45E0020 57FC STQ R2, 32(SP) ; R2, 32(SP) B47E0028 5800 STQ R3, 40(SP) ; R3, 40(SP) B49E0030 5804 STQ R4, 48(SP) ; R4, 48(SP) B4BE0038 5808 STQ R5, 56(SP) ; R5, 56(SP) B4DE0040 580C STQ R6, 64(SP) ; R6, 64(SP) B4FE0048 5810 STQ R7, 72(SP) ; R7, 72(SP) B51E0050 5814 STQ R8, 80(SP) ; R8, 80(SP) B53E0058 5818 STQ R9, 88(SP) ; R9, 88(SP) B55E0060 581C STQ R10, 96(SP) ; R10, 96(SP) B57E0068 5820 STQ R11, 104(SP) ; R11, 104(SP) B5BE0070 5824 STQ R13, 112(SP) ; R13, 112(SP) B7BE0078 5828 STQ FP, 120(SP) ; FP, 120(SP) 47FB040D 582C MOV R27, R13 ; R27, R13 JTDRIVER Machine Code Listing 2-DEC-1994 10:13:13 AMAC V2.1-13-2671 Page 218 V01H VCSTP15 2-DEC-1994 10:12:45 [EVERHART.JT]JTDRIVER_S2.MAR;120 B7FE0008 5830 STQ R31, 8(SP) ; R31, 8(SP) 47FE041D 5834 MOV SP, FP ; SP, FP 5838 $L73: A74DFBF0 5838 LDQ R26, -1040(R13) ; R26, -1040(R13) ; 012575 43F0000B 583C SEXTL R16, R11 ; R16, R11 ; 012572 A76DFBF8 5840 LDQ R27, -1032(R13) ; R27, -1032(R13) ; 012575 47E49401 5844 BIS R31, 36, R1 ; R31, 36, R1 ; 012574 6B5A4000 5848 JSR R26, R26 ; R26, R26 ; 012575 E0000041 584C BLBC R0, 127_999$ ; R0, 127_999$ ; 012576 43C3153E 5850 SUBQ SP, 24, SP ; SP, 24, SP ; 012577 47E20419 5854 MOV R2, R25 ; R2, R25 B0BE0014 5858 STL R5, 20(SP) ; R5, 20(SP) 231F0FFF 585C LDA R24, 4095(R31) ; R24, 4095(R31) B09E0010 5860 STL R4, 16(SP) ; R4, 16(SP) 4720F004 5864 AND R25, 7, R4 ; R25, 7, R4 B07E000C 5868 STL R3, 12(SP) ; R3, 12(SP) 4B040724 586C SLL R24, R4, R4 ; R24, R4, R4 B05E0008 5870 STL R2, 8(SP) ; R2, 8(SP) B03E0004 5874 STL R1, 4(SP) ; R1, 4(SP) B01E0000 5878 STL R0, (SP) ; R0, (SP) 2EF90000 587C LDQ_U R23, (R25) ; R23, (R25) 4AE40617 5880 ZAP R23, R4, R23 ; R23, R4, R23 3EF90000 5884 STQ_U R23, (R25) ; R23, (R25) 48811684 5888 SRL R4, 8, R4 ; R4, 8, R4 3FF90008 588C STQ_U R31, 8(R25) ; R31, 8(R25) 3FF90010 5890 STQ_U R31, 16(R25) ; R31, 16(R25) 3FF90018 5894 STQ_U R31, 24(R25) ; R31, 24(R25) E4800008 5898 BEQ R4, $L191 ; R4, $L191 2EF90020 589C LDQ_U R23, 32(R25) ; R23, 32(R25) 4AE40617 58A0 ZAP R23, R4, R23 ; R23, R4, R23 3EF90020 58A4 STQ_U R23, 32(R25) ; R23, 32(R25) 48811684 58A8 SRL R4, 8, R4 ; R4, 8, R4 E4800003 58AC BEQ R4, $L191 ; R4, $L191 2EF90028 58B0 LDQ_U R23, 40(R25) ; R23, 40(R25) 4AE40617 58B4 ZAP R23, R4, R23 ; R23, R4, R23 3EF90028 58B8 STQ_U R23, 40(R25) ; R23, 40(R25) 58BC $L191: A05E0008 58BC LDL R2, 8(SP) ; R2, 8(SP) 47E29418 58C0 BIS R31, 20, R24 ; R31, 20, R24 ; 012584 A01E0000 58C4 LDL R0, (SP) ; R0, (SP) ; 012577 A03E0004 58C8 LDL R1, 4(SP) ; R1, 4(SP) A07E000C 58CC LDL R3, 12(SP) ; R3, 12(SP) A09E0010 58D0 LDL R4, 16(SP) ; R4, 16(SP) A0BE0014 58D4 LDL R5, 20(SP) ; R5, 20(SP) 43C3141E 58D8 ADDQ SP, 24, SP ; SP, 24, SP A3420008 58DC LDL R26, 8(R2) ; R26, 8(R2) ; 012578 48201379 58E0 INSWL R1, 0, R25 ; R1, 0, R25 A6EDFB30 58E4 LDQ R23, -1232(R13) ; R23, -1232(R13) ; 012587 43E20005 58E8 SEXTL R2, R5 ; R2, R5 ; 012580 A6CD0040 58EC LDQ R22, 64(R13) ; R22, 64(R13) ; 012593 4B40125A 58F0 MSKWL R26, 0, R26 ; R26, 0, R26 ; 012578 A76D0038 58F4 LDQ R27, 56(R13) ; R27, 56(R13) ; 012598 4759041A 58F8 BIS R26, R25, R26 ; R26, R25, R26 ; 012578 B3420008 58FC STL R26, 8(R2) ; R26, 8(R2) B1620014 5900 STL R11, 20(R2) ; R11, 20(R2) ; 012579 43C0953E 5904 SUBQ SP, 4, SP ; SP, 4, SP ; 012582 47E07402 5908 BIS R31, 3, R2 ; R31, 3, R2 ; 012597 JTDRIVER Machine Code Listing 2-DEC-1994 10:13:13 AMAC V2.1-13-2671 Page 219 V01H VCSTP15 2-DEC-1994 10:12:45 [EVERHART.JT]JTDRIVER_S2.MAR;120 B15E0000 590C STL R10, (SP) ; R10, (SP) ; 012582 A14B0030 5910 LDL R10, 48(R11) ; R10, 48(R11) ; 012583 B30A03C0 5914 STL R24, 960(R10) ; R24, 960(R10) ; 012584 47F01418 5918 BIS R31, 128, R24 ; R31, 128, R24 ; 012596 A15E0000 591C LDL R10, (SP) ; R10, (SP) ; 012585 43C0941E 5920 ADDQ SP, 4, SP ; SP, 4, SP A0970000 5924 LDL R4, (R23) ; R4, (R23) ; 012587 B2C50020 5928 STL R22, 32(R5) ; R22, 32(R5) ; 012593 4B007176 592C INSBL R24, 3, R22 ; R24, 3, R22 ; 012596 A34400D4 5930 LDL R26, 212(R4) ; R26, 212(R4) ; 012594 B345000C 5934 STL R26, 12(R5) ; R26, 12(R5) B3E50010 5938 STL R31, 16(R5) ; R31, 16(R5) ; 012595 A2E50008 593C LDL R23, 8(R5) ; R23, 8(R5) ; 012596 A74D0030 5940 LDQ R26, 48(R13) ; R26, 48(R13) ; 012598 4AE07057 5944 MSKBL R23, 3, R23 ; R23, 3, R23 ; 012596 46F60417 5948 BIS R23, R22, R23 ; R23, R22, R23 B2E50008 594C STL R23, 8(R5) ; R23, 8(R5) 6B5A4000 5950 JSR R26, R26 ; R26, R26 ; 012598 5954 127_999$: ; 012599 A74DFB60 5954 LDQ R26, -1184(R13) ; R26, -1184(R13) ; 012600 47E3F410 5958 BIS R31, 31, R16 ; R31, 31, R16 ; 012599 A76DFB68 595C LDQ R27, -1176(R13) ; R27, -1176(R13) ; 012600 47E03419 5960 BIS R31, 1, R25 ; R31, 1, R25 6B5A4000 5964 JSR R26, R26 ; R26, R26 47E03400 5968 BIS R31, 1, R0 ; R31, 1, R0 ; 012601 596C $L74: ; 012602 47FD041E 596C MOV FP, SP ; FP, SP A79E0018 5970 LDQ R28, 24(SP) ; R28, 24(SP) A45E0020 5974 LDQ R2, 32(SP) ; R2, 32(SP) A47E0028 5978 LDQ R3, 40(SP) ; R3, 40(SP) A49E0030 597C LDQ R4, 48(SP) ; R4, 48(SP) A4BE0038 5980 LDQ R5, 56(SP) ; R5, 56(SP) A4DE0040 5984 LDQ R6, 64(SP) ; R6, 64(SP) A4FE0048 5988 LDQ R7, 72(SP) ; R7, 72(SP) A51E0050 598C LDQ R8, 80(SP) ; R8, 80(SP) A53E0058 5990 LDQ R9, 88(SP) ; R9, 88(SP) A55E0060 5994 LDQ R10, 96(SP) ; R10, 96(SP) A57E0068 5998 LDQ R11, 104(SP) ; R11, 104(SP) A5BE0070 599C LDQ R13, 112(SP) ; R13, 112(SP) A7BE0078 59A0 LDQ FP, 120(SP) ; FP, 120(SP) 43D0141E 59A4 ADDQ SP, 128, SP ; SP, 128, SP 6BFC8001 59A8 RET R28 ; R28 47FF041F 59AC NOP ; Routine Size: 448 bytes, Routine Base: $$$115_DRIVER + 57F0 59B0 STP2BAD: ; 012609 43CC153E 59B0 SUBQ SP, 96, SP ; SP, 96, SP B75E0000 59B4 STQ R26, (SP) ; R26, (SP) B45E0008 59B8 STQ R2, 8(SP) ; R2, 8(SP) B47E0010 59BC STQ R3, 16(SP) ; R3, 16(SP) B49E0018 59C0 STQ R4, 24(SP) ; R4, 24(SP) B4BE0020 59C4 STQ R5, 32(SP) ; R5, 32(SP) B4DE0028 59C8 STQ R6, 40(SP) ; R6, 40(SP) B4FE0030 59CC STQ R7, 48(SP) ; R7, 48(SP) B51E0038 59D0 STQ R8, 56(SP) ; R8, 56(SP) B53E0040 59D4 STQ R9, 64(SP) ; R9, 64(SP) JTDRIVER Machine Code Listing 2-DEC-1994 10:13:13 AMAC V2.1-13-2671 Page 220 V01H STP2BAD 2-DEC-1994 10:12:45 [EVERHART.JT]JTDRIVER_S2.MAR;120 B55E0048 59D8 STQ R10, 72(SP) ; R10, 72(SP) B57E0050 59DC STQ R11, 80(SP) ; R11, 80(SP) B5BE0058 59E0 STQ R13, 88(SP) ; R13, 88(SP) 47FB040D 59E4 MOV R27, R13 ; R27, R13 59E8 $L75: 43C6153E 59E8 SUBQ SP, 48, SP ; SP, 48, SP ; 012610 B17E002C 59EC STL R11, 44(SP) ; R11, 44(SP) B15E0028 59F0 STL R10, 40(SP) ; R10, 40(SP) 43E0000B 59F4 SEXTL R0, R11 ; R0, R11 ; 012611 B13E0024 59F8 STL R9, 36(SP) ; R9, 36(SP) ; 012610 B11E0020 59FC STL R8, 32(SP) ; R8, 32(SP) B0FE001C 5A00 STL R7, 28(SP) ; R7, 28(SP) B0DE0018 5A04 STL R6, 24(SP) ; R6, 24(SP) B0BE0014 5A08 STL R5, 20(SP) ; R5, 20(SP) B09E0010 5A0C STL R4, 16(SP) ; R4, 16(SP) B07E000C 5A10 STL R3, 12(SP) ; R3, 12(SP) B05E0008 5A14 STL R2, 8(SP) ; R2, 8(SP) B03E0004 5A18 STL R1, 4(SP) ; R1, 4(SP) B01E0000 5A1C STL R0, (SP) ; R0, (SP) C3E0003B 5A20 BR V2CMN ; V2CMN ; 012612 47FF041F 5A24 NOP ; 47FF041F 5A28 NOP ; 47FF041F 5A2C NOP ; Routine Size: 128 bytes, Routine Base: $$$115_DRIVER + 59B0 5A30 VCSTEP2: ; 012613 43CC153E 5A30 SUBQ SP, 96, SP ; SP, 96, SP B75E0000 5A34 STQ R26, (SP) ; R26, (SP) B45E0008 5A38 STQ R2, 8(SP) ; R2, 8(SP) B47E0010 5A3C STQ R3, 16(SP) ; R3, 16(SP) B49E0018 5A40 STQ R4, 24(SP) ; R4, 24(SP) B4BE0020 5A44 STQ R5, 32(SP) ; R5, 32(SP) B4DE0028 5A48 STQ R6, 40(SP) ; R6, 40(SP) B4FE0030 5A4C STQ R7, 48(SP) ; R7, 48(SP) B51E0038 5A50 STQ R8, 56(SP) ; R8, 56(SP) B53E0040 5A54 STQ R9, 64(SP) ; R9, 64(SP) B55E0048 5A58 STQ R10, 72(SP) ; R10, 72(SP) B57E0050 5A5C STQ R11, 80(SP) ; R11, 80(SP) B5BE0058 5A60 STQ R13, 88(SP) ; R13, 88(SP) 436D152D 5A64 SUBQ R27, 104, R13 ; R27, 104, R13 5A68 $L77: 43C6153E 5A68 SUBQ SP, 48, SP ; SP, 48, SP ; 012614 A74DFA38 5A6C LDQ R26, -1480(R13) ; R26, -1480(R13) ; 012616 A76DFA40 5A70 LDQ R27, -1472(R13) ; R27, -1472(R13) 47E3F410 5A74 BIS R31, 31, R16 ; R31, 31, R16 ; 012615 B17E002C 5A78 STL R11, 44(SP) ; R11, 44(SP) ; 012614 47E03419 5A7C BIS R31, 1, R25 ; R31, 1, R25 ; 012616 B15E0028 5A80 STL R10, 40(SP) ; R10, 40(SP) ; 012614 B13E0024 5A84 STL R9, 36(SP) ; R9, 36(SP) B11E0020 5A88 STL R8, 32(SP) ; R8, 32(SP) B0FE001C 5A8C STL R7, 28(SP) ; R7, 28(SP) B0DE0018 5A90 STL R6, 24(SP) ; R6, 24(SP) B0BE0014 5A94 STL R5, 20(SP) ; R5, 20(SP) B09E0010 5A98 STL R4, 16(SP) ; R4, 16(SP) B07E000C 5A9C STL R3, 12(SP) ; R3, 12(SP) B05E0008 5AA0 STL R2, 8(SP) ; R2, 8(SP) JTDRIVER Machine Code Listing 2-DEC-1994 10:13:13 AMAC V2.1-13-2671 Page 221 V01H VCSTEP2 2-DEC-1994 10:12:45 [EVERHART.JT]JTDRIVER_S2.MAR;120 B03E0004 5AA4 STL R1, 4(SP) ; R1, 4(SP) B01E0000 5AA8 STL R0, (SP) ; R0, (SP) 6B5A4000 5AAC JSR R26, R26 ; R26, R26 ; 012616 A1650014 5AB0 LDL R11, 20(R5) ; R11, 20(R5) ; 012617 43C3953E 5AB4 SUBQ SP, 28, SP ; SP, 28, SP ; 012619 A74DFAB8 5AB8 LDQ R26, -1352(R13) ; R26, -1352(R13) ; 012622 A76DFAC0 5ABC LDQ R27, -1344(R13) ; R27, -1344(R13) B17E0018 5AC0 STL R11, 24(SP) ; R11, 24(SP) ; 012619 B0BE0014 5AC4 STL R5, 20(SP) ; R5, 20(SP) B09E0010 5AC8 STL R4, 16(SP) ; R4, 16(SP) B07E000C 5ACC STL R3, 12(SP) ; R3, 12(SP) B05E0008 5AD0 STL R2, 8(SP) ; R2, 8(SP) B03E0004 5AD4 STL R1, 4(SP) ; R1, 4(SP) B01E0000 5AD8 STL R0, (SP) ; R0, (SP) 43E50000 5ADC SEXTL R5, R0 ; R5, R0 ; 012620 47E49401 5AE0 BIS R31, 36, R1 ; R31, 36, R1 ; 012621 43C0953E 5AE4 SUBQ SP, 4, SP ; SP, 4, SP ; 012622 6B5A4000 5AE8 JSR R26, R26 ; R26, R26 A01E0004 5AEC LDL R0, 4(SP) ; R0, 4(SP) ; 012623 A03E0008 5AF0 LDL R1, 8(SP) ; R1, 8(SP) A05E000C 5AF4 LDL R2, 12(SP) ; R2, 12(SP) A07E0010 5AF8 LDL R3, 16(SP) ; R3, 16(SP) A09E0014 5AFC LDL R4, 20(SP) ; R4, 20(SP) 43C0941E 5B00 ADDQ SP, 4, SP ; SP, 4, SP ; 012622 A0BE0014 5B04 LDL R5, 20(SP) ; R5, 20(SP) ; 012623 A17E0018 5B08 LDL R11, 24(SP) ; R11, 24(SP) 43C3941E 5B0C ADDQ SP, 28, SP ; SP, 28, SP 5B10 V2CMN: ; 012624 E960001D 5B10 BLT R11, VCZ ; R11, VCZ ; 012625 47FF041F 5B14 NOP ; 5B18 VCX: ; 012626 A01E0000 5B18 LDL R0, (SP) ; R0, (SP) A03E0004 5B1C LDL R1, 4(SP) ; R1, 4(SP) A05E0008 5B20 LDL R2, 8(SP) ; R2, 8(SP) A07E000C 5B24 LDL R3, 12(SP) ; R3, 12(SP) A09E0010 5B28 LDL R4, 16(SP) ; R4, 16(SP) A0BE0014 5B2C LDL R5, 20(SP) ; R5, 20(SP) A0DE0018 5B30 LDL R6, 24(SP) ; R6, 24(SP) A0FE001C 5B34 LDL R7, 28(SP) ; R7, 28(SP) A11E0020 5B38 LDL R8, 32(SP) ; R8, 32(SP) A13E0024 5B3C LDL R9, 36(SP) ; R9, 36(SP) A15E0028 5B40 LDL R10, 40(SP) ; R10, 40(SP) A17E002C 5B44 LDL R11, 44(SP) ; R11, 44(SP) 43C6141E 5B48 ADDQ SP, 48, SP ; SP, 48, SP 2FFE0000 5B4C LNOP ; 5B50 $L78: ; 012627 A79E0000 5B50 LDQ R28, (SP) ; R28, (SP) A45E0008 5B54 LDQ R2, 8(SP) ; R2, 8(SP) A47E0010 5B58 LDQ R3, 16(SP) ; R3, 16(SP) A49E0018 5B5C LDQ R4, 24(SP) ; R4, 24(SP) A4BE0020 5B60 LDQ R5, 32(SP) ; R5, 32(SP) A4DE0028 5B64 LDQ R6, 40(SP) ; R6, 40(SP) A4FE0030 5B68 LDQ R7, 48(SP) ; R7, 48(SP) A51E0038 5B6C LDQ R8, 56(SP) ; R8, 56(SP) A53E0040 5B70 LDQ R9, 64(SP) ; R9, 64(SP) A55E0048 5B74 LDQ R10, 72(SP) ; R10, 72(SP) A57E0050 5B78 LDQ R11, 80(SP) ; R11, 80(SP) JTDRIVER Machine Code Listing 2-DEC-1994 10:13:13 AMAC V2.1-13-2671 Page 222 V01H VCSTEP2 2-DEC-1994 10:12:45 [EVERHART.JT]JTDRIVER_S2.MAR;120 A5BE0058 5B7C LDQ R13, 88(SP) ; R13, 88(SP) 43CC141E 5B80 ADDQ SP, 96, SP ; SP, 96, SP 6BFC8001 5B84 RET R28 ; R28 5B88 VCZ: ; 012628 43C0953E 5B88 SUBQ SP, 4, SP ; SP, 4, SP ; 012631 47E2B41C 5B8C BIS R31, 21, R28 ; R31, 21, R28 ; 012633 B15E0000 5B90 STL R10, (SP) ; R10, (SP) ; 012631 236DF9C8 5B94 LDA R27, -1592(R13) ; R27, -1592(R13) ; 012638 A14B0030 5B98 LDL R10, 48(R11) ; R10, 48(R11) ; 012632 B38A03C0 5B9C STL R28, 960(R10) ; R28, 960(R10) ; 012633 A15E0000 5BA0 LDL R10, (SP) ; R10, (SP) ; 012634 43C0941E 5BA4 ADDQ SP, 4, SP ; SP, 4, SP A06B0140 5BA8 LDL R3, 320(R11) ; R3, 320(R11) ; 012636 A0AB0148 5BAC LDL R5, 328(R11) ; R5, 328(R11) ; 012637 D35FE97F 5BB0 BSR R26, GETJTUCB ; R26, GETJTUCB ; 012638 E41FFFD8 5BB4 BEQ R0, VCX ; R0, VCX ; 012640 43E00005 5BB8 SEXTL R0, R5 ; R0, R5 ; 012641 A6CDF9B0 5BBC LDQ R22, -1616(R13) ; R22, -1616(R13) ; 012701 212B01D8 5BC0 LDA R9, 472(R11) ; R9, 472(R11) ; 012643 A70DFA08 5BC4 LDQ R24, -1528(R13) ; R24, -1528(R13) ; 012779 47E2D419 5BC8 BIS R31, 22, R25 ; R31, 22, R25 ; 012642 B32503C0 5BCC STL R25, 960(R5) ; R25, 960(R5) A3890000 5BD0 LDL R28, (R9) ; R28, (R9) ; 012644 A6EDFB08 5BD4 LDQ R23, -1272(R13) ; R23, -1272(R13) ; 012751 E7800005 5BD8 BEQ R28, 132_15$ ; R28, 132_15$ ; 012645 5BDC 132_30084$: 47E2F41B 5BDC BIS R31, 23, R27 ; R31, 23, R27 ; 012646 B36503C0 5BE0 STL R27, 960(R5) ; R27, 960(R5) A14B03F8 5BE4 LDL R10, 1016(R11) ; R10, 1016(R11) ; 012649 F540007B 5BE8 BNE R10, 132_30085$ ; R10, 132_30085$ ; 012650 47FF041F 5BEC NOP ; 5BF0 132_15$: ; 012673 47E33419 5BF0 BIS R31, 25, R25 ; R31, 25, R25 ; 012674 B32503C0 5BF4 STL R25, 960(R5) ; R25, 960(R5) A3850128 5BF8 LDL R28, 296(R5) ; R28, 296(R5) ; 012675 26BF0001 5BFC LDAH R21, 1(R31) ; R21, 1(R31) 20EB0190 5C00 LDA R7, 400(R11) ; R7, 400(R11) ; 012673 22B58000 5C04 LDA R21, -32768(R21) ; R21, -32768(R21) ; 012675 47950010 5C08 AND R28, R21, R16 ; R28, R21, R16 40E0941B 5C0C ADDQ R7, 4, R27 ; R7, 4, R27 ; 012678 F6000012 5C10 BNE R16, FAKFID ; R16, FAKFID ; 012676 2CFB0000 5C14 LDQ_U R7, (R27) ; R7, (R27) ; 012678 48FB02C7 5C18 EXTWL R7, R27, R7 ; R7, R27, R7 F3600121 5C1C BLBS R27, $L192 ; R27, $L192 5C20 $L193: A1250240 5C20 LDL R9, 576(R5) ; R9, 576(R5) ; 012686 E5200038 5C24 BEQ R9, DNFID ; R9, DNFID ; 012687 22BF3FFF 5C28 LDA R21, 16383(R31) ; R21, 16383(R31) ; 012688 44F50007 5C2C AND R7, R21, R7 ; R7, R21, R7 43E7001B 5C30 SEXTL R7, R27 ; R7, R27 ; 012689 4B60778A 5C34 SRA R27, 3, R10 ; R27, 3, R10 44E0F007 5C38 AND R7, 7, R7 ; R7, 7, R7 ; 012691 48E0779A 5C3C SRA R7, 3, R26 ; R7, 3, R26 ; 012692 4149000A 5C40 ADDL R10, R9, R10 ; R10, R9, R10 ; 012690 415A0019 5C44 ADDL R10, R26, R25 ; R10, R26, R25 ; 012692 44E0F015 5C48 AND R7, 7, R21 ; R7, 7, R21 2F590000 5C4C LDQ_U R26, (R25) ; R26, (R25) JTDRIVER Machine Code Listing 2-DEC-1994 10:13:13 AMAC V2.1-13-2671 Page 223 V01H VCSTEP2 2-DEC-1994 10:12:45 [EVERHART.JT]JTDRIVER_S2.MAR;120 4B5900DA 5C50 EXTBL R26, R25, R26 ; R26, R25, R26 4B55069C 5C54 SRL R26, R21, R28 ; R26, R21, R28 E380002B 5C58 BLBC R28, DNFID ; R28, DNFID 5C5C FAKFID: ; 012696 4167940A 5C5C ADDQ R11, 60, R10 ; R11, 60, R10 47EA0415 5C60 MOV R10, R21 ; R10, R21 ; 012697 47E1B419 5C64 BIS R31, 13, R25 ; R31, 13, R25 2F950000 5C68 LDQ_U R28, (R21) ; R28, (R21) 4B35017B 5C6C INSBL R25, R21, R27 ; R25, R21, R27 4140340A 5C70 ADDQ R10, 1, R10 ; R10, 1, R10 4B95005C 5C74 MSKBL R28, R21, R28 ; R28, R21, R28 47E0F419 5C78 BIS R31, 7, R25 ; R31, 7, R25 ; 012698 479B041C 5C7C BIS R28, R27, R28 ; R28, R27, R28 ; 012697 3F950000 5C80 STQ_U R28, (R21) ; R28, (R21) 47EA0415 5C84 MOV R10, R21 ; R10, R21 ; 012698 4B35017B 5C88 INSBL R25, R21, R27 ; R25, R21, R27 2F950000 5C8C LDQ_U R28, (R21) ; R28, (R21) 4140340A 5C90 ADDQ R10, 1, R10 ; R10, 1, R10 233F0E01 5C94 LDA R25, 3585(R31) ; R25, 3585(R31) ; 012699 4B95005C 5C98 MSKBL R28, R21, R28 ; R28, R21, R28 ; 012698 479B041C 5C9C BIS R28, R27, R28 ; R28, R27, R28 3F950000 5CA0 STQ_U R28, (R21) ; R28, (R21) 47EA0415 5CA4 MOV R10, R21 ; R10, R21 ; 012699 4B35037A 5CA8 INSWL R25, R21, R26 ; R25, R21, R26 2F950000 5CAC LDQ_U R28, (R21) ; R28, (R21) 4140540A 5CB0 ADDQ R10, 2, R10 ; R10, 2, R10 4B95025C 5CB4 MSKWL R28, R21, R28 ; R28, R21, R28 479A041C 5CB8 BIS R28, R26, R28 ; R28, R26, R28 F2A000FD 5CBC BLBS R21, $L194 ; R21, $L194 5CC0 $L195: 47EA0419 5CC0 MOV R10, R25 ; R10, R25 ; 012700 3F950000 5CC4 STQ_U R28, (R21) ; R28, (R21) ; 012699 4140940A 5CC8 ADDQ R10, 4, R10 ; R10, 4, R10 ; 012700 47E03415 5CCC BIS R31, 1, R21 ; R31, 1, R21 47EA041B 5CD0 MOV R10, R27 ; R10, R27 ; 012701 B2B90000 5CD4 STL R21, (R25) ; R21, (R25) ; 012700 4140940A 5CD8 ADDQ R10, 4, R10 ; R10, 4, R10 ; 012701 A3960078 5CDC LDL R28, 120(R22) ; R28, 120(R22) 47EA0415 5CE0 MOV R10, R21 ; R10, R21 ; 012702 47E03419 5CE4 BIS R31, 1, R25 ; R31, 1, R25 B39B0000 5CE8 STL R28, (R27) ; R28, (R27) ; 012701 4B35017B 5CEC INSBL R25, R21, R27 ; R25, R21, R27 ; 012702 2F950000 5CF0 LDQ_U R28, (R21) ; R28, (R21) 4140340A 5CF4 ADDQ R10, 1, R10 ; R10, 1, R10 4B95005C 5CF8 MSKBL R28, R21, R28 ; R28, R21, R28 479B041C 5CFC BIS R28, R27, R28 ; R28, R27, R28 3F950000 5D00 STQ_U R28, (R21) ; R28, (R21) 47FF041F 5D04 NOP ; 5D08 DNFID: ; 012704 20EB0190 5D08 LDA R7, 400(R11) ; R7, 400(R11) ; 012708 47E3541A 5D0C BIS R31, 26, R26 ; R31, 26, R26 ; 012707 B34503C0 5D10 STL R26, 960(R5) ; R26, 960(R5) 4167941A 5D14 ADDQ R11, 60, R26 ; R11, 60, R26 ; 012715 A2C70004 5D18 LDL R22, 4(R7) ; R22, 4(R7) ; 012709 B2CB0404 5D1C STL R22, 1028(R11) ; R22, 1028(R11) A3670008 5D20 LDL R27, 8(R7) ; R27, 8(R7) ; 012710 22DF0200 5D24 LDA R22, 512(R31) ; R22, 512(R31) ; 012712 JTDRIVER Machine Code Listing 2-DEC-1994 10:13:13 AMAC V2.1-13-2671 Page 224 V01H VCSTEP2 2-DEC-1994 10:12:45 [EVERHART.JT]JTDRIVER_S2.MAR;120 B36B0408 5D28 STL R27, 1032(R11) ; R27, 1032(R11) ; 012710 A32B03F8 5D2C LDL R25, 1016(R11) ; R25, 1016(R11) ; 012712 43360530 5D30 SUBQ R25, R22, R16 ; R25, R22, R16 EE000008 5D34 BLE R16, 135_15$ ; R16, 135_15$ ; 012713 2F6B003C 5D38 LDQ_U R27, 60(R11) ; R27, 60(R11) ; 012715 26DF0008 5D3C LDAH R22, 8(R31) ; R22, 8(R31) ; 012718 42C03416 5D40 ADDQ R22, 1, R22 ; R22, 1, R22 4B7A00D0 5D44 EXTBL R27, R26, R16 ; R27, R26, R16 ; 012715 F6000003 5D48 BNE R16, 135_15$ ; R16, 135_15$ ; 012716 A32B03F8 5D4C LDL R25, 1016(R11) ; R25, 1016(R11) ; 012717 B32B003C 5D50 STL R25, 60(R11) ; R25, 60(R11) B2CB0040 5D54 STL R22, 64(R11) ; R22, 64(R11) ; 012718 5D58 135_15$: ; 012719 47E3741B 5D58 BIS R31, 27, R27 ; R31, 27, R27 ; 012724 B36503C0 5D5C STL R27, 960(R5) ; R27, 960(R5) 47E0341A 5D60 BIS R31, 1, R26 ; R31, 1, R26 ; 012725 B34B03FC 5D64 STL R26, 1020(R11) ; R26, 1020(R11) A2CB0040 5D68 LDL R22, 64(R11) ; R22, 64(R11) ; 012727 4167940A 5D6C ADDQ R11, 60, R10 ; R11, 60, R10 ; 012726 46C03010 5D70 AND R22, 1, R16 ; R22, 1, R16 ; 012727 E6000004 5D74 BEQ R16, 135_30$ ; R16, 135_30$ ; 012728 5D78 135_30087$: 47E3741C 5D78 BIS R31, 27, R28 ; R31, 27, R28 ; 012731 B38503C0 5D7C STL R28, 960(R5) ; R28, 960(R5) A1250134 5D80 LDL R9, 308(R5) ; R9, 308(R5) ; 012732 E9200026 5D84 BLT R9, 135_30088$ ; R9, 135_30088$ ; 012733 5D88 135_30$: ; 012818 B17E0000 5D88 STL R11, (SP) ; R11, (SP) ; 012819 41BC153B 5D8C SUBQ R13, 224, R27 ; R13, 224, R27 ; 012822 B0BE0004 5D90 STL R5, 4(SP) ; R5, 4(SP) ; 012820 A01E0000 5D94 LDL R0, (SP) ; R0, (SP) ; 012821 A03E0004 5D98 LDL R1, 4(SP) ; R1, 4(SP) A05E0008 5D9C LDL R2, 8(SP) ; R2, 8(SP) A07E000C 5DA0 LDL R3, 12(SP) ; R3, 12(SP) A09E0010 5DA4 LDL R4, 16(SP) ; R4, 16(SP) A0BE0014 5DA8 LDL R5, 20(SP) ; R5, 20(SP) A0DE0018 5DAC LDL R6, 24(SP) ; R6, 24(SP) A0FE001C 5DB0 LDL R7, 28(SP) ; R7, 28(SP) A11E0020 5DB4 LDL R8, 32(SP) ; R8, 32(SP) A13E0024 5DB8 LDL R9, 36(SP) ; R9, 36(SP) A15E0028 5DBC LDL R10, 40(SP) ; R10, 40(SP) A17E002C 5DC0 LDL R11, 44(SP) ; R11, 44(SP) 43C6141E 5DC4 ADDQ SP, 48, SP ; SP, 48, SP D34000C5 5DC8 BSR R26, LCLCNT ; R26, LCLCNT ; 012822 C3FFFF60 5DCC BR $L78 ; $L78 ; 012823 5DD0 $L121: ; 012645 C3FFFF87 5DD0 BR 132_15$ ; 132_15$ 47FF041F 5DD4 NOP ; 5DD8 132_30085$: ; 012650 237F0200 5DD8 LDA R27, 512(R31) ; R27, 512(R31) ; 012652 43690008 5DDC ADDL R27, R9, R8 ; R27, R9, R8 5DE0 132_7$: ; 012653 2CE90000 5DE0 LDQ_U R7, (R9) ; R7, (R9) 48E900C7 5DE4 EXTBL R7, R9, R7 ; R7, R9, R7 E4FFFF81 5DE8 BEQ R7, 132_15$ ; R7, 132_15$ ; 012654 5DEC 132_30086$: 412803B0 5DEC CMPULT R9, R8, R16 ; R9, R8, R16 ; 012655 JTDRIVER Machine Code Listing 2-DEC-1994 10:13:13 AMAC V2.1-13-2671 Page 225 V01H VCSTEP2 2-DEC-1994 10:12:45 [EVERHART.JT]JTDRIVER_S2.MAR;120 E61FFFC5 5DF0 BEQ R16, DNFID ; R16, DNFID ; 012656 2F690001 5DF4 LDQ_U R27, 1(R9) ; R27, 1(R9) ; 012657 4120341A 5DF8 ADDQ R9, 1, R26 ; R9, 1, R26 4B7A00DB 5DFC EXTBL R27, R26, R27 ; R27, R26, R27 4360F530 5E00 SUBQ R27, 7, R16 ; R27, 7, R16 E600008C 5E04 BEQ R16, 132_8$ ; R16, 132_8$ ; 012658 5E08 132_9$: ; 012659 41270009 5E08 ADDL R9, R7, R9 ; R9, R7, R9 C3FFFFF4 5E0C BR 132_7$ ; 132_7$ ; 012660 5E10 DNFDJ: ; 012694 C3FFFFBD 5E10 BR DNFID ; DNFID 47FF041F 5E14 NOP ; 5E18 $L122: ; 012728 C3FFFFDB 5E18 BR 135_30$ ; 135_30$ 47FF041F 5E1C NOP ; 5E20 135_30088$: ; 012733 47E3941A 5E20 BIS R31, 28, R26 ; R31, 28, R26 ; 012734 B34503C0 5E24 STL R26, 960(R5) ; R26, 960(R5) A3290088 5E28 LDL R25, 136(R9) ; R25, 136(R9) ; 012735 47221010 5E2C AND R25, 16, R16 ; R25, 16, R16 E61FFFD5 5E30 BEQ R16, 135_30$ ; R16, 135_30$ ; 012736 5E34 135_30089$: 47E3B416 5E34 BIS R31, 29, R22 ; R31, 29, R22 ; 012737 B2C503C0 5E38 STL R22, 960(R5) ; R22, 960(R5) A389007C 5E3C LDL R28, 124(R9) ; R28, 124(R9) ; 012739 EF9FFFD1 5E40 BLE R28, 135_30$ ; R28, 135_30$ ; 012743 5E44 135_30090$: A3690024 5E44 LDL R27, 36(R9) ; R27, 36(R9) ; 012744 FB7FFFCF 5E48 BGE R27, 135_30$ ; R27, 135_30$ ; 012745 5E4C 135_30091$: 47E3D41A 5E4C BIS R31, 30, R26 ; R31, 30, R26 ; 012746 B34503C0 5E50 STL R26, 960(R5) ; R26, 960(R5) 43C2153E 5E54 SUBQ SP, 16, SP ; SP, 16, SP ; 012748 A72DFD10 5E58 LDQ R25, -752(R13) ; R25, -752(R13) ; 012749 B11E000C 5E5C STL R8, 12(SP) ; R8, 12(SP) ; 012748 B0FE0008 5E60 STL R7, 8(SP) ; R7, 8(SP) B0DE0004 5E64 STL R6, 4(SP) ; R6, 4(SP) B0BE0000 5E68 STL R5, (SP) ; R5, (SP) 2CF90000 5E6C LDQ_U R7, (R25) ; R7, (R25) ; 012749 48F902C7 5E70 EXTWL R7, R25, R7 ; R7, R25, R7 F3200095 5E74 BLBS R25, $L196 ; R25, $L196 5E78 135_22$: ; 012750 A0D70000 5E78 LDL R6, (R23) ; R6, (R23) ; 012751 40E6005B 5E7C S4ADDL R7, R6, R27 ; R7, R6, R27 ; 012752 A11B0000 5E80 LDL R8, (R27) ; R8, (R27) F9000004 5E84 BGE R8, 135_23$ ; R8, 135_23$ ; 012754 A3450130 5E88 LDL R26, 304(R5) ; R26, 304(R5) ; 012755 A32800D4 5E8C LDL R25, 212(R8) ; R25, 212(R8) 43590530 5E90 SUBQ R26, R25, R16 ; R26, R25, R16 E6000003 5E94 BEQ R16, 135_21$ ; R16, 135_21$ ; 012756 5E98 135_23$: ; 012757 40E03127 5E98 SUBL R7, 1, R7 ; R7, 1, R7 FCFFFFF6 5E9C BGT R7, 135_22$ ; R7, 135_22$ B3E50130 5EA0 STL R31, 304(R5) ; R31, 304(R5) ; 012758 5EA4 135_21$: ; 012759 A0BE0000 5EA4 LDL R5, (SP) ; R5, (SP) ; 012760 47E3F417 5EA8 BIS R31, 31, R23 ; R31, 31, R23 ; 012761 JTDRIVER Machine Code Listing 2-DEC-1994 10:13:13 AMAC V2.1-13-2671 Page 226 V01H VCSTEP2 2-DEC-1994 10:12:45 [EVERHART.JT]JTDRIVER_S2.MAR;120 A0DE0004 5EAC LDL R6, 4(SP) ; R6, 4(SP) ; 012760 A0FE0008 5EB0 LDL R7, 8(SP) ; R7, 8(SP) A11E000C 5EB4 LDL R8, 12(SP) ; R8, 12(SP) 43C2141E 5EB8 ADDQ SP, 16, SP ; SP, 16, SP B2E503C0 5EBC STL R23, 960(R5) ; R23, 960(R5) ; 012761 A2C50130 5EC0 LDL R22, 304(R5) ; R22, 304(R5) ; 012762 E6DFFFB0 5EC4 BEQ R22, 135_30$ ; R22, 135_30$ ; 012763 5EC8 135_30092$: 43CC153E 5EC8 SUBQ SP, 96, SP ; SP, 96, SP ; 012765 A76D0018 5ECC LDQ R27, 24(R13) ; R27, 24(R13) ; 012771 43FE0008 5ED0 SEXTL SP, R8 ; SP, R8 ; 012766 B1680000 5ED4 STL R11, (R8) ; R11, (R8) ; 012767 B0A80004 5ED8 STL R5, 4(R8) ; R5, 4(R8) ; 012768 A385023C 5EDC LDL R28, 572(R5) ; R28, 572(R5) ; 012769 B3880008 5EE0 STL R28, 8(R8) ; R28, 8(R8) B148000C 5EE4 STL R10, 12(R8) ; R10, 12(R8) ; 012770 B3680010 5EE8 STL R27, 16(R8) ; R27, 16(R8) ; 012771 A34B0404 5EEC LDL R26, 1028(R11) ; R26, 1028(R11) ; 012772 B3480014 5EF0 STL R26, 20(R8) ; R26, 20(R8) A2EB0408 5EF4 LDL R23, 1032(R11) ; R23, 1032(R11) ; 012773 B2E80018 5EF8 STL R23, 24(R8) ; R23, 24(R8) A2CB0008 5EFC LDL R22, 8(R11) ; R22, 8(R11) ; 012774 B2C8001C 5F00 STL R22, 28(R8) ; R22, 28(R8) A38B040C 5F04 LDL R28, 1036(R11) ; R28, 1036(R11) ; 012775 B3880020 5F08 STL R28, 32(R8) ; R28, 32(R8) A34B0410 5F0C LDL R26, 1040(R11) ; R26, 1040(R11) ; 012776 B3480024 5F10 STL R26, 36(R8) ; R26, 36(R8) A3380000 5F14 LDL R25, (R24) ; R25, (R24) ; 012779 B3280028 5F18 STL R25, 40(R8) ; R25, 40(R8) A0980000 5F1C LDL R4, (R24) ; R4, (R24) ; 012780 A2E400D4 5F20 LDL R23, 212(R4) ; R23, 212(R4) ; 012781 B2E8002C 5F24 STL R23, 44(R8) ; R23, 44(R8) A2C400D8 5F28 LDL R22, 216(R4) ; R22, 216(R4) ; 012782 B2C80030 5F2C STL R22, 48(R8) ; R22, 48(R8) B0A80034 5F30 STL R5, 52(R8) ; R5, 52(R8) ; 012783 43C1953E 5F34 SUBQ SP, 12, SP ; SP, 12, SP ; 012786 B05E0008 5F38 STL R2, 8(SP) ; R2, 8(SP) B03E0004 5F3C STL R1, 4(SP) ; R1, 4(SP) B01E0000 5F40 STL R0, (SP) ; R0, (SP) A005023C 5F44 LDL R0, 572(R5) ; R0, 572(R5) ; 012787 A3800074 5F48 LDL R28, 116(R0) ; R28, 116(R0) ; 012788 4B8012DC 5F4C EXTWL R28, 0, R28 ; R28, 0, R28 B3880038 5F50 STL R28, 56(R8) ; R28, 56(R8) A0200038 5F54 LDL R1, 56(R0) ; R1, 56(R0) ; 012789 A3610034 5F58 LDL R27, 52(R1) ; R27, 52(R1) ; 012790 B3680054 5F5C STL R27, 84(R8) ; R27, 84(R8) B3E8003C 5F60 STL R31, 60(R8) ; R31, 60(R8) ; 012791 B3E80040 5F64 STL R31, 64(R8) ; R31, 64(R8) ; 012792 A021002C 5F68 LDL R1, 44(R1) ; R1, 44(R1) ; 012794 F8200004 5F6C BGE R1, 135_833$ ; R1, 135_833$ ; 012795 A3410048 5F70 LDL R26, 72(R1) ; R26, 72(R1) ; 012796 B348003C 5F74 STL R26, 60(R8) ; R26, 60(R8) A301004C 5F78 LDL R24, 76(R1) ; R24, 76(R1) ; 012797 B3080040 5F7C STL R24, 64(R8) ; R24, 64(R8) 5F80 135_833$: ; 012798 A0200038 5F80 LDL R1, 56(R0) ; R1, 56(R0) ; 012799 47E41416 5F84 BIS R31, 32, R22 ; R31, 32, R22 ; 012810 JTDRIVER Machine Code Listing 2-DEC-1994 10:13:13 AMAC V2.1-13-2671 Page 227 V01H VCSTEP2 2-DEC-1994 10:12:45 [EVERHART.JT]JTDRIVER_S2.MAR;120 A76DFD50 5F88 LDQ R27, -688(R13) ; R27, -688(R13) ; 012814 A2E10014 5F8C LDL R23, 20(R1) ; R23, 20(R1) ; 012800 B2E80044 5F90 STL R23, 68(R8) ; R23, 68(R8) 47E03417 5F94 BIS R31, 1, R23 ; R31, 1, R23 ; 012808 A3810018 5F98 LDL R28, 24(R1) ; R28, 24(R1) ; 012801 B3880048 5F9C STL R28, 72(R8) ; R28, 72(R8) A341001C 5FA0 LDL R26, 28(R1) ; R26, 28(R1) ; 012802 B348004C 5FA4 STL R26, 76(R8) ; R26, 76(R8) A3010020 5FA8 LDL R24, 32(R1) ; R24, 32(R1) ; 012803 A74DFD48 5FAC LDQ R26, -696(R13) ; R26, -696(R13) ; 012814 B3080050 5FB0 STL R24, 80(R8) ; R24, 80(R8) ; 012803 A01E0000 5FB4 LDL R0, (SP) ; R0, (SP) ; 012806 A03E0004 5FB8 LDL R1, 4(SP) ; R1, 4(SP) A05E0008 5FBC LDL R2, 8(SP) ; R2, 8(SP) B2E80004 5FC0 STL R23, 4(R8) ; R23, 4(R8) ; 012808 B0BE0008 5FC4 STL R5, 8(SP) ; R5, 8(SP) ; 012809 B09E0004 5FC8 STL R4, 4(SP) ; R4, 4(SP) 43E80004 5FCC SEXTL R8, R4 ; R8, R4 ; 012812 B07E0000 5FD0 STL R3, (SP) ; R3, (SP) ; 012809 47EC1403 5FD4 BIS R31, 96, R3 ; R31, 96, R3 ; 012813 B2C503C0 5FD8 STL R22, 960(R5) ; R22, 960(R5) ; 012810 43E90005 5FDC SEXTL R9, R5 ; R9, R5 ; 012811 43C0953E 5FE0 SUBQ SP, 4, SP ; SP, 4, SP ; 012814 6B5A4000 5FE4 JSR R26, R26 ; R26, R26 A07E0004 5FE8 LDL R3, 4(SP) ; R3, 4(SP) ; 012815 A09E0008 5FEC LDL R4, 8(SP) ; R4, 8(SP) A0BE000C 5FF0 LDL R5, 12(SP) ; R5, 12(SP) 43CE141E 5FF4 ADDQ SP, 112, SP ; SP, 112, SP ; 012816 E01FFF63 5FF8 BLBC R0, 135_30$ ; R0, 135_30$ ; 012818 5FFC 135_31$: ; 012824 A01E0000 5FFC LDL R0, (SP) ; R0, (SP) ; 012826 47E03400 6000 BIS R31, 1, R0 ; R31, 1, R0 ; 012827 A03E0004 6004 LDL R1, 4(SP) ; R1, 4(SP) ; 012826 A05E0008 6008 LDL R2, 8(SP) ; R2, 8(SP) A07E000C 600C LDL R3, 12(SP) ; R3, 12(SP) A09E0010 6010 LDL R4, 16(SP) ; R4, 16(SP) A0BE0014 6014 LDL R5, 20(SP) ; R5, 20(SP) A0DE0018 6018 LDL R6, 24(SP) ; R6, 24(SP) A0FE001C 601C LDL R7, 28(SP) ; R7, 28(SP) A11E0020 6020 LDL R8, 32(SP) ; R8, 32(SP) A13E0024 6024 LDL R9, 36(SP) ; R9, 36(SP) A15E0028 6028 LDL R10, 40(SP) ; R10, 40(SP) A17E002C 602C LDL R11, 44(SP) ; R11, 44(SP) 43C6141E 6030 ADDQ SP, 48, SP ; SP, 48, SP C3FFFEC6 6034 BR $L78 ; $L78 ; 012828 6038 132_8$: ; 012661 A3290008 6038 LDL R25, 8(R9) ; R25, 8(R9) A2B60078 603C LDL R21, 120(R22) ; R21, 120(R22) 43350530 6040 SUBQ R25, R21, R16 ; R25, R21, R16 F61FFF70 6044 BNE R16, 132_9$ ; R16, 132_9$ ; 012662 47E3141A 6048 BIS R31, 24, R26 ; R31, 24, R26 ; 012665 B34503C0 604C STL R26, 960(R5) ; R26, 960(R5) 43C3153E 6050 SUBQ SP, 24, SP ; SP, 24, SP ; 012666 A74DFA88 6054 LDQ R26, -1400(R13) ; R26, -1400(R13) ; 012668 48E012D1 6058 EXTWL R7, 0, R17 ; R7, 0, R17 B0BE0014 605C STL R5, 20(SP) ; R5, 20(SP) ; 012666 B09E0010 6060 STL R4, 16(SP) ; R4, 16(SP) JTDRIVER Machine Code Listing 2-DEC-1994 10:13:13 AMAC V2.1-13-2671 Page 228 V01H VCSTEP2 2-DEC-1994 10:12:45 [EVERHART.JT]JTDRIVER_S2.MAR;120 47E90412 6064 MOV R9, R18 ; R9, R18 ; 012668 B07E000C 6068 STL R3, 12(SP) ; R3, 12(SP) ; 012666 B05E0008 606C STL R2, 8(SP) ; R2, 8(SP) B03E0004 6070 STL R1, 4(SP) ; R1, 4(SP) B01E0000 6074 STL R0, (SP) ; R0, (SP) 41679400 6078 ADDQ R11, 60, R0 ; R11, 60, R0 ; 012667 47E00410 607C MOV R0, R16 ; R0, R16 ; 012668 6B5A4000 6080 JSR R26, R26 ; R26, R26 A01E0000 6084 LDL R0, (SP) ; R0, (SP) ; 012669 A03E0004 6088 LDL R1, 4(SP) ; R1, 4(SP) A05E0008 608C LDL R2, 8(SP) ; R2, 8(SP) A07E000C 6090 LDL R3, 12(SP) ; R3, 12(SP) A09E0010 6094 LDL R4, 16(SP) ; R4, 16(SP) A0BE0014 6098 LDL R5, 20(SP) ; R5, 20(SP) 43C3141E 609C ADDQ SP, 24, SP ; SP, 24, SP C3FFFF19 60A0 BR DNFID ; DNFID ; 012670 60A4 $L192: ; 012678 2F3B0001 60A4 LDQ_U R25, 1(R27) ; R25, 1(R27) 4B3B0B5A 60A8 EXTWH R25, R27, R26 ; R25, R27, R26 44FA0407 60AC BIS R7, R26, R7 ; R7, R26, R7 C3FFFEDB 60B0 BR $L193 ; $L193 60B4 $L194: ; 012699 2F750001 60B4 LDQ_U R27, 1(R21) ; R27, 1(R21) 4B350AFA 60B8 INSWH R25, R21, R26 ; R25, R21, R26 4B750A5B 60BC MSKWH R27, R21, R27 ; R27, R21, R27 477A041B 60C0 BIS R27, R26, R27 ; R27, R26, R27 3F750001 60C4 STQ_U R27, 1(R21) ; R27, 1(R21) C3FFFEFD 60C8 BR $L195 ; $L195 60CC $L196: ; 012749 2F990001 60CC LDQ_U R28, 1(R25) ; R28, 1(R25) 4B990B56 60D0 EXTWH R28, R25, R22 ; R28, R25, R22 44F60407 60D4 BIS R7, R22, R7 ; R7, R22, R7 C3FFFF67 60D8 BR 135_22$ ; 135_22$ 47FF041F 60DC NOP ; Routine Size: 1712 bytes, Routine Base: $$$115_DRIVER + 5A30 60E0 LCLCNT: ; 012835 43CC153E 60E0 SUBQ SP, 96, SP ; SP, 96, SP B75E0000 60E4 STQ R26, (SP) ; R26, (SP) B45E0008 60E8 STQ R2, 8(SP) ; R2, 8(SP) B47E0010 60EC STQ R3, 16(SP) ; R3, 16(SP) B49E0018 60F0 STQ R4, 24(SP) ; R4, 24(SP) B4BE0020 60F4 STQ R5, 32(SP) ; R5, 32(SP) B4DE0028 60F8 STQ R6, 40(SP) ; R6, 40(SP) B4FE0030 60FC STQ R7, 48(SP) ; R7, 48(SP) B51E0038 6100 STQ R8, 56(SP) ; R8, 56(SP) B53E0040 6104 STQ R9, 64(SP) ; R9, 64(SP) B55E0048 6108 STQ R10, 72(SP) ; R10, 72(SP) B57E0050 610C STQ R11, 80(SP) ; R11, 80(SP) B5BE0058 6110 STQ R13, 88(SP) ; R13, 88(SP) 47FB040D 6114 MOV R27, R13 ; R27, R13 6118 $L79: 43C6153E 6118 SUBQ SP, 48, SP ; SP, 48, SP ; 012837 47E4341C 611C BIS R31, 33, R28 ; R31, 33, R28 ; 012840 B17E002C 6120 STL R11, 44(SP) ; R11, 44(SP) ; 012837 43E0000B 6124 SEXTL R0, R11 ; R0, R11 ; 012838 JTDRIVER Machine Code Listing 2-DEC-1994 10:13:13 AMAC V2.1-13-2671 Page 229 V01H LCLCNT 2-DEC-1994 10:12:45 [EVERHART.JT]JTDRIVER_S2.MAR;120 B15E0028 6128 STL R10, 40(SP) ; R10, 40(SP) ; 012837 236DFC38 612C LDA R27, -968(R13) ; R27, -968(R13) ; 012841 B13E0024 6130 STL R9, 36(SP) ; R9, 36(SP) ; 012837 B11E0020 6134 STL R8, 32(SP) ; R8, 32(SP) B0FE001C 6138 STL R7, 28(SP) ; R7, 28(SP) B0DE0018 613C STL R6, 24(SP) ; R6, 24(SP) B0BE0014 6140 STL R5, 20(SP) ; R5, 20(SP) 43E10005 6144 SEXTL R1, R5 ; R1, R5 ; 012839 B09E0010 6148 STL R4, 16(SP) ; R4, 16(SP) ; 012837 B07E000C 614C STL R3, 12(SP) ; R3, 12(SP) B05E0008 6150 STL R2, 8(SP) ; R2, 8(SP) B03E0004 6154 STL R1, 4(SP) ; R1, 4(SP) B01E0000 6158 STL R0, (SP) ; R0, (SP) B38503C0 615C STL R28, 960(R5) ; R28, 960(R5) ; 012840 D35FEE0B 6160 BSR R26, PRVIDSET ; R26, PRVIDSET ; 012841 47F0B41B 6164 BIS R31, 133, R27 ; R31, 133, R27 ; 012846 43C0953E 6168 SUBQ SP, 4, SP ; SP, 4, SP ; 012844 B01E0000 616C STL R0, (SP) ; R0, (SP) A00B0030 6170 LDL R0, 48(R11) ; R0, 48(R11) ; 012845 B36003C0 6174 STL R27, 960(R0) ; R27, 960(R0) ; 012846 A01E0000 6178 LDL R0, (SP) ; R0, (SP) ; 012847 43EB0000 617C SEXTL R11, R0 ; R11, R0 ; 012849 2020013C 6180 LDA R1, 316(R0) ; R1, 316(R0) ; 012850 43C0941E 6184 ADDQ SP, 4, SP ; SP, 4, SP ; 012847 A0410000 6188 LDL R2, (R1) ; R2, (R1) ; 012851 43E0000B 618C SEXTL R0, R11 ; R0, R11 ; 012862 A0610004 6190 LDL R3, 4(R1) ; R3, 4(R1) ; 012852 A0810008 6194 LDL R4, 8(R1) ; R4, 8(R1) ; 012853 A0A1000C 6198 LDL R5, 12(R1) ; R5, 12(R1) ; 012854 A0C10010 619C LDL R6, 16(R1) ; R6, 16(R1) ; 012855 A0E10014 61A0 LDL R7, 20(R1) ; R7, 20(R1) ; 012856 40209401 61A4 ADDQ R1, 4, R1 ; R1, 4, R1 ; 012851 A1010014 61A8 LDL R8, 20(R1) ; R8, 20(R1) ; 012857 40209401 61AC ADDQ R1, 4, R1 ; R1, 4, R1 ; 012852 A1210014 61B0 LDL R9, 20(R1) ; R9, 20(R1) ; 012858 40209401 61B4 ADDQ R1, 4, R1 ; R1, 4, R1 ; 012853 A1410014 61B8 LDL R10, 20(R1) ; R10, 20(R1) ; 012859 40209401 61BC ADDQ R1, 4, R1 ; R1, 4, R1 ; 012854 A14B0020 61C0 LDL R10, 32(R11) ; R10, 32(R11) ; 012865 40229401 61C4 ADDQ R1, 20, R1 ; R1, 20, R1 ; 012859 F940000A 61C8 BGE R10, 136_2$ ; R10, 136_2$ ; 012866 61CC 136_1$: ; 012867 A32A0004 61CC LDL R25, 4(R10) ; R25, 4(R10) 277F0081 61D0 LDAH R27, 129(R31) ; R27, 129(R31) ; 012871 EF200007 61D4 BLE R25, 136_2$ ; R25, 136_2$ ; 012868 A2EA0004 61D8 LDL R23, 4(R10) ; R23, 4(R10) ; 012869 42E03137 61DC SUBL R23, 1, R23 ; R23, 1, R23 B2EA0004 61E0 STL R23, 4(R10) ; R23, 4(R10) FEE00003 61E4 BGT R23, 136_2$ ; R23, 136_2$ ; 012870 A3840080 61E8 LDL R28, 128(R4) ; R28, 128(R4) ; 012871 479B011C 61EC BIC R28, R27, R28 ; R28, R27, R28 B3840080 61F0 STL R28, 128(R4) ; R28, 128(R4) 61F4 136_2$: ; 012872 43C0953E 61F4 SUBQ SP, 4, SP ; SP, 4, SP ; 012875 A76DFB20 61F8 LDQ R27, -1248(R13) ; R27, -1248(R13) ; 012881 47FD341A 61FC BIS R31, 233, R26 ; R31, 233, R26 ; 012877 B01E0000 6200 STL R0, (SP) ; R0, (SP) ; 012875 JTDRIVER Machine Code Listing 2-DEC-1994 10:13:13 AMAC V2.1-13-2671 Page 230 V01H LCLCNT 2-DEC-1994 10:12:45 [EVERHART.JT]JTDRIVER_S2.MAR;120 A00B0030 6204 LDL R0, 48(R11) ; R0, 48(R11) ; 012876 47E3F410 6208 BIS R31, 31, R16 ; R31, 31, R16 ; 012880 47E03419 620C BIS R31, 1, R25 ; R31, 1, R25 ; 012881 B34003C0 6210 STL R26, 960(R0) ; R26, 960(R0) ; 012877 A74DFB18 6214 LDQ R26, -1256(R13) ; R26, -1256(R13) ; 012881 A01E0000 6218 LDL R0, (SP) ; R0, (SP) ; 012878 43C0941E 621C ADDQ SP, 4, SP ; SP, 4, SP 6B5A4000 6220 JSR R26, R26 ; R26, R26 ; 012881 233F014D 6224 LDA R25, 333(R31) ; R25, 333(R31) ; 012885 43C0953E 6228 SUBQ SP, 4, SP ; SP, 4, SP ; 012883 B01E0000 622C STL R0, (SP) ; R0, (SP) A00B0030 6230 LDL R0, 48(R11) ; R0, 48(R11) ; 012884 B32003C0 6234 STL R25, 960(R0) ; R25, 960(R0) ; 012885 A01E0000 6238 LDL R0, (SP) ; R0, (SP) ; 012886 43C0941E 623C ADDQ SP, 4, SP ; SP, 4, SP A30B03FC 6240 LDL R24, 1020(R11) ; R24, 1020(R11) ; 012890 4300F531 6244 SUBQ R24, 7, R17 ; R24, 7, R17 F6200043 6248 BNE R17, 136_53$ ; R17, 136_53$ ; 012891 47E03417 624C BIS R31, 1, R23 ; R31, 1, R23 ; 012892 B2EB03FC 6250 STL R23, 1020(R11) ; R23, 1020(R11) 43C6153E 6254 SUBQ SP, 48, SP ; SP, 48, SP ; 012893 A6CDFAE8 6258 LDQ R22, -1304(R13) ; R22, -1304(R13) ; 012895 A6ADFC48 625C LDQ R21, -952(R13) ; R21, -952(R13) ; 012903 231F01B1 6260 LDA R24, 433(R31) ; R24, 433(R31) ; 012913 B17E002C 6264 STL R11, 44(SP) ; R11, 44(SP) ; 012893 B15E0028 6268 STL R10, 40(SP) ; R10, 40(SP) B13E0024 626C STL R9, 36(SP) ; R9, 36(SP) B11E0020 6270 STL R8, 32(SP) ; R8, 32(SP) B0FE001C 6274 STL R7, 28(SP) ; R7, 28(SP) B0DE0018 6278 STL R6, 24(SP) ; R6, 24(SP) B0BE0014 627C STL R5, 20(SP) ; R5, 20(SP) B09E0010 6280 STL R4, 16(SP) ; R4, 16(SP) B07E000C 6284 STL R3, 12(SP) ; R3, 12(SP) B05E0008 6288 STL R2, 8(SP) ; R2, 8(SP) B03E0004 628C STL R1, 4(SP) ; R1, 4(SP) B01E0000 6290 STL R0, (SP) ; R0, (SP) A0960000 6294 LDL R4, (R22) ; R4, (R22) ; 012895 A38B001C 6298 LDL R28, 28(R11) ; R28, 28(R11) ; 012897 A74DFAF0 629C LDQ R26, -1296(R13) ; R26, -1296(R13) ; 012905 B3840074 62A0 STL R28, 116(R4) ; R28, 116(R4) ; 012897 A36B000C 62A4 LDL R27, 12(R11) ; R27, 12(R11) ; 012901 B3640100 62A8 STL R27, 256(R4) ; R27, 256(R4) A32B0010 62AC LDL R25, 16(R11) ; R25, 16(R11) ; 012902 B3240104 62B0 STL R25, 260(R4) ; R25, 260(R4) A2EB000C 62B4 LDL R23, 12(R11) ; R23, 12(R11) ; 012903 B2F50000 62B8 STL R23, (R21) ; R23, (R21) A36B0010 62BC LDL R27, 16(R11) ; R27, 16(R11) ; 012904 B3750004 62C0 STL R27, 4(R21) ; R27, 4(R21) A09A0000 62C4 LDL R4, (R26) ; R4, (R26) ; 012905 236DFDC0 62C8 LDA R27, -576(R13) ; R27, -576(R13) ; 012916 A32B0014 62CC LDL R25, 20(R11) ; R25, 20(R11) ; 012906 B3240280 62D0 STL R25, 640(R4) ; R25, 640(R4) A2EB0018 62D4 LDL R23, 24(R11) ; R23, 24(R11) ; 012907 B2E40284 62D8 STL R23, 644(R4) ; R23, 644(R4) A38B000C 62DC LDL R28, 12(R11) ; R28, 12(R11) ; 012908 B3840000 62E0 STL R28, (R4) ; R28, (R4) A34B0010 62E4 LDL R26, 16(R11) ; R26, 16(R11) ; 012909 JTDRIVER Machine Code Listing 2-DEC-1994 10:13:13 AMAC V2.1-13-2671 Page 231 V01H LCLCNT 2-DEC-1994 10:12:45 [EVERHART.JT]JTDRIVER_S2.MAR;120 B3440004 62E8 STL R26, 4(R4) ; R26, 4(R4) 43C0953E 62EC SUBQ SP, 4, SP ; SP, 4, SP ; 012911 B01E0000 62F0 STL R0, (SP) ; R0, (SP) A00B0030 62F4 LDL R0, 48(R11) ; R0, 48(R11) ; 012912 B30003C0 62F8 STL R24, 960(R0) ; R24, 960(R0) ; 012913 A01E0000 62FC LDL R0, (SP) ; R0, (SP) ; 012914 43C0941E 6300 ADDQ SP, 4, SP ; SP, 4, SP D35FF21A 6304 BSR R26, UNDOID ; R26, UNDOID ; 012916 22FF0215 6308 LDA R23, 533(R31) ; R23, 533(R31) ; 012920 43C0953E 630C SUBQ SP, 4, SP ; SP, 4, SP ; 012918 B01E0000 6310 STL R0, (SP) ; R0, (SP) A00B0030 6314 LDL R0, 48(R11) ; R0, 48(R11) ; 012919 B2E003C0 6318 STL R23, 960(R0) ; R23, 960(R0) ; 012920 A01E0000 631C LDL R0, (SP) ; R0, (SP) ; 012921 A01E0004 6320 LDL R0, 4(SP) ; R0, 4(SP) ; 012923 A03E0008 6324 LDL R1, 8(SP) ; R1, 8(SP) A05E000C 6328 LDL R2, 12(SP) ; R2, 12(SP) A07E0010 632C LDL R3, 16(SP) ; R3, 16(SP) A09E0014 6330 LDL R4, 20(SP) ; R4, 20(SP) 43C0941E 6334 ADDQ SP, 4, SP ; SP, 4, SP ; 012921 A0BE0014 6338 LDL R5, 20(SP) ; R5, 20(SP) ; 012923 A0DE0018 633C LDL R6, 24(SP) ; R6, 24(SP) A0FE001C 6340 LDL R7, 28(SP) ; R7, 28(SP) A11E0020 6344 LDL R8, 32(SP) ; R8, 32(SP) A13E0024 6348 LDL R9, 36(SP) ; R9, 36(SP) A15E0028 634C LDL R10, 40(SP) ; R10, 40(SP) A17E002C 6350 LDL R11, 44(SP) ; R11, 44(SP) 43C6141E 6354 ADDQ SP, 48, SP ; SP, 48, SP 6358 136_53$: ; 012924 B0AB0038 6358 STL R5, 56(R11) ; R5, 56(R11) ; 012925 236DFC68 635C LDA R27, -920(R13) ; R27, -920(R13) ; 012928 A2CB03FC 6360 LDL R22, 1020(R11) ; R22, 1020(R11) ; 012926 42C0B531 6364 SUBQ R22, 5, R17 ; R22, 5, R17 E6200001 6368 BEQ R17, 136_353$ ; R17, 136_353$ ; 012927 D35FEEA0 636C BSR R26, SETSOFTL ; R26, SETSOFTL ; 012928 6370 136_353$: ; 012929 43C0953E 6370 SUBQ SP, 4, SP ; SP, 4, SP ; 012931 239F0279 6374 LDA R28, 633(R31) ; R28, 633(R31) ; 012933 B01E0000 6378 STL R0, (SP) ; R0, (SP) ; 012931 A00B0030 637C LDL R0, 48(R11) ; R0, 48(R11) ; 012932 B38003C0 6380 STL R28, 960(R0) ; R28, 960(R0) ; 012933 A01E0000 6384 LDL R0, (SP) ; R0, (SP) ; 012934 43C0941E 6388 ADDQ SP, 4, SP ; SP, 4, SP A3660000 638C LDL R27, (R6) ; R27, (R6) ; 012936 40BB0531 6390 SUBQ R5, R27, R17 ; R5, R27, R17 E6200002 6394 BEQ R17, 136_12$ ; R17, 136_12$ ; 012937 236DFCA8 6398 LDA R27, -856(R13) ; R27, -856(R13) ; 012938 D35FEFD0 639C BSR R26, MOVLDT ; R26, MOVLDT 63A0 136_12$: ; 012939 43C0953E 63A0 SUBQ SP, 4, SP ; SP, 4, SP ; 012941 235F02DD 63A4 LDA R26, 733(R31) ; R26, 733(R31) ; 012943 B01E0000 63A8 STL R0, (SP) ; R0, (SP) ; 012941 239F0341 63AC LDA R28, 833(R31) ; R28, 833(R31) ; 013001 A00B0030 63B0 LDL R0, 48(R11) ; R0, 48(R11) ; 012942 B34003C0 63B4 STL R26, 960(R0) ; R26, 960(R0) ; 012943 A01E0000 63B8 LDL R0, (SP) ; R0, (SP) ; 012944 43C0941E 63BC ADDQ SP, 4, SP ; SP, 4, SP JTDRIVER Machine Code Listing 2-DEC-1994 10:13:13 AMAC V2.1-13-2671 Page 232 V01H LCLCNT 2-DEC-1994 10:12:45 [EVERHART.JT]JTDRIVER_S2.MAR;120 A0A60000 63C0 LDL R5, (R6) ; R5, (R6) ; 012946 B0A30024 63C4 STL R5, 36(R3) ; R5, 36(R3) ; 012947 43C3153E 63C8 SUBQ SP, 24, SP ; SP, 24, SP ; 012951 A30B0178 63CC LDL R24, 376(R11) ; R24, 376(R11) ; 012953 43FE000A 63D0 SEXTL SP, R10 ; SP, R10 ; 012952 B30A0000 63D4 STL R24, (R10) ; R24, (R10) ; 012953 A2CB017C 63D8 LDL R22, 380(R11) ; R22, 380(R11) ; 012954 B2CA0004 63DC STL R22, 4(R10) ; R22, 4(R10) A36B0180 63E0 LDL R27, 384(R11) ; R27, 384(R11) ; 012955 B36A0008 63E4 STL R27, 8(R10) ; R27, 8(R10) A32B0184 63E8 LDL R25, 388(R11) ; R25, 388(R11) ; 012956 B32A000C 63EC STL R25, 12(R10) ; R25, 12(R10) A2EB0188 63F0 LDL R23, 392(R11) ; R23, 392(R11) ; 012957 B2EA0010 63F4 STL R23, 16(R10) ; R23, 16(R10) A2C3008C 63F8 LDL R22, 140(R3) ; R22, 140(R3) ; 012961 B2CA0014 63FC STL R22, 20(R10) ; R22, 20(R10) 43C0953E 6400 SUBQ SP, 4, SP ; SP, 4, SP ; 012999 B01E0000 6404 STL R0, (SP) ; R0, (SP) A00B0030 6408 LDL R0, 48(R11) ; R0, 48(R11) ; 013000 B38003C0 640C STL R28, 960(R0) ; R28, 960(R0) ; 013001 A01E0000 6410 LDL R0, (SP) ; R0, (SP) ; 013002 43C0941E 6414 ADDQ SP, 4, SP ; SP, 4, SP A36B03FC 6418 LDL R27, 1020(R11) ; R27, 1020(R11) ; 013004 43607531 641C SUBQ R27, 3, R17 ; R27, 3, R17 E62000B5 6420 BEQ R17, 136_50$ ; R17, 136_50$ ; 013005 A34B03FC 6424 LDL R26, 1020(R11) ; R26, 1020(R11) ; 013006 236DFAA8 6428 LDA R27, -1368(R13) ; R27, -1368(R13) ; 013010 E34000DC 642C BLBC R26, 136_60$ ; R26, 136_60$ ; 013006 A3230060 6430 LDL R25, 96(R3) ; R25, 96(R3) ; 013008 43C3153E 6434 SUBQ SP, 24, SP ; SP, 24, SP ; 013010 B13E0014 6438 STL R9, 20(SP) ; R9, 20(SP) ; 013009 B11E0010 643C STL R8, 16(SP) ; R8, 16(SP) B0FE000C 6440 STL R7, 12(SP) ; R7, 12(SP) 4727F001 6444 AND R25, 63, R1 ; R25, 63, R1 ; 013008 B0DE0008 6448 STL R6, 8(SP) ; R6, 8(SP) ; 013009 D35FE758 644C BSR R26, GETJTUCB ; R26, GETJTUCB ; 013010 43C1141E 6450 ADDQ SP, 8, SP ; SP, 8, SP F80000E2 6454 BGE R0, 136_199$ ; R0, 136_199$ ; 013012 22FF03A5 6458 LDA R23, 933(R31) ; R23, 933(R31) ; 013013 B2E003C0 645C STL R23, 960(R0) ; R23, 960(R0) A0E00380 6460 LDL R7, 896(R0) ; R7, 896(R0) ; 013014 F8E000DE 6464 BGE R7, 136_199$ ; R7, 136_199$ ; 013015 A2C30060 6468 LDL R22, 96(R3) ; R22, 96(R3) ; 013022 40E11007 646C ADDL R7, 8, R7 ; R7, 8, R7 ; 013020 46C7F001 6470 AND R22, 63, R1 ; R22, 63, R1 ; 013022 4027005A 6474 S4ADDL R1, R7, R26 ; R1, R7, R26 ; 013023 A11A0000 6478 LDL R8, (R26) ; R8, (R26) 43C2153E 647C SUBQ SP, 16, SP ; SP, 16, SP ; 013030 00000091 6480 CALL_PAL 145 ; 145 ; 013031 B41E0000 6484 STQ R0, (SP) ; R0, (SP) ; 013033 B61E0008 6488 STQ R16, 8(SP) ; R16, 8(SP) ; 013034 A00B0414 648C LDL R0, 1044(R11) ; R0, 1044(R11) ; 013035 43C0953E 6490 SUBQ SP, 4, SP ; SP, 4, SP ; 013037 44007000 6494 AND R0, 3, R0 ; R0, 3, R0 ; 013036 43E00000 6498 SEXTL R0, R0 ; R0, R0 B01E0000 649C STL R0, (SP) ; R0, (SP) ; 013037 A01E0004 64A0 LDL R0, 4(SP) ; R0, 4(SP) ; 013038 JTDRIVER Machine Code Listing 2-DEC-1994 10:13:13 AMAC V2.1-13-2671 Page 233 V01H LCLCNT 2-DEC-1994 10:12:45 [EVERHART.JT]JTDRIVER_S2.MAR;120 A33E0000 64A4 LDL R25, (SP) ; R25, (SP) ; 013040 43C0941E 64A8 ADDQ SP, 4, SP ; SP, 4, SP 44007100 64AC BIC R0, 3, R0 ; R0, 3, R0 ; 013039 44190400 64B0 BIS R0, R25, R0 ; R0, R25, R0 ; 013040 43E00000 64B4 SEXTL R0, R0 ; R0, R0 47E00410 64B8 MOV R0, R16 ; R0, R16 ; 013041 47E09419 64BC BIS R31, 4, R25 ; R31, 4, R25 ; 013055 0000009C 64C0 CALL_PAL 156 ; 156 ; 013042 A74DFD18 64C4 LDQ R26, -744(R13) ; R26, -744(R13) ; 013055 43C2953E 64C8 SUBQ SP, 20, SP ; SP, 20, SP ; 013049 A76DFD20 64CC LDQ R27, -736(R13) ; R27, -736(R13) ; 013055 231F0409 64D0 LDA R24, 1033(R31) ; R24, 1033(R31) ; 013051 B0DE0010 64D4 STL R6, 16(SP) ; R6, 16(SP) ; 013044 B0BE000C 64D8 STL R5, 12(SP) ; R5, 12(SP) ; 013045 47E80417 64DC MOV R8, R23 ; R8, R23 ; 013055 B09E0008 64E0 STL R4, 8(SP) ; R4, 8(SP) ; 013046 B07E0004 64E4 STL R3, 4(SP) ; R3, 4(SP) ; 013047 B01E0000 64E8 STL R0, (SP) ; R0, (SP) ; 013049 A00B0030 64EC LDL R0, 48(R11) ; R0, 48(R11) ; 013050 B30003C0 64F0 STL R24, 960(R0) ; R24, 960(R0) ; 013051 43E03418 64F4 ADDQ R31, 1, R24 ; R31, 1, R24 ; 013055 B10003D0 64F8 STL R8, 976(R0) ; R8, 976(R0) ; 013052 A01E0000 64FC LDL R0, (SP) ; R0, (SP) ; 013053 43C0953E 6500 SUBQ SP, 4, SP ; SP, 4, SP A21E0008 6504 LDL R16, 8(SP) ; R16, 8(SP) ; 013055 A23E000C 6508 LDL R17, 12(SP) ; R17, 12(SP) A25E0010 650C LDL R18, 16(SP) ; R18, 16(SP) A27E0014 6510 LDL R19, 20(SP) ; R19, 20(SP) 6B5A4000 6514 JSR R26, R26 ; R26, R26 A61E0018 6518 LDQ R16, 24(SP) ; R16, 24(SP) ; 013057 43C3141E 651C ADDQ SP, 24, SP ; SP, 24, SP ; 013055 0000009C 6520 CALL_PAL 156 ; 156 ; 013058 A61E0008 6524 LDQ R16, 8(SP) ; R16, 8(SP) ; 013059 A0DE0010 6528 LDL R6, 16(SP) ; R6, 16(SP) ; 013062 A0FE0014 652C LDL R7, 20(SP) ; R7, 20(SP) A11E0018 6530 LDL R8, 24(SP) ; R8, 24(SP) A13E001C 6534 LDL R9, 28(SP) ; R9, 28(SP) 43C4141E 6538 ADDQ SP, 32, SP ; SP, 32, SP 653C 136_1199$: ; 013073 47E05410 653C BIS R31, 2, R16 ; R31, 2, R16 ; 013075 47E00417 6540 MOV R0, R23 ; R0, R23 47E10416 6544 MOV R1, R22 ; R1, R22 0000000F 6548 CALL_PAL 15 ; 15 47F70400 654C MOV R23, R0 ; R23, R0 A00B0528 6550 LDL R0, 1320(R11) ; R0, 1320(R11) ; 013081 47F60401 6554 MOV R22, R1 ; R22, R1 ; 013075 A0000000 6558 LDL R0, (R0) ; R0, (R0) ; 013082 47FF041F 655C NOP ; 6560 136_70$: ; 013134 B01E0014 6560 STL R0, 20(SP) ; R0, 20(SP) ; 013137 43C2941E 6564 ADDQ SP, 20, SP ; SP, 20, SP ; 013135 A00B0030 6568 LDL R0, 48(R11) ; R0, 48(R11) ; 013138 239F04D1 656C LDA R28, 1233(R31) ; R28, 1233(R31) ; 013139 B38003C0 6570 STL R28, 960(R0) ; R28, 960(R0) A37E0004 6574 LDL R27, 4(SP) ; R27, 4(SP) ; 013140 B36003DC 6578 STL R27, 988(R0) ; R27, 988(R0) A01E0000 657C LDL R0, (SP) ; R0, (SP) ; 013141 JTDRIVER Machine Code Listing 2-DEC-1994 10:13:13 AMAC V2.1-13-2671 Page 234 V01H LCLCNT 2-DEC-1994 10:12:45 [EVERHART.JT]JTDRIVER_S2.MAR;120 43C0941E 6580 ADDQ SP, 4, SP ; SP, 4, SP A14B0024 6584 LDL R10, 36(R11) ; R10, 36(R11) ; 013143 F9400004 6588 BGE R10, 136_3$ ; R10, 136_3$ ; 013145 B00A0000 658C STL R0, (R10) ; R0, (R10) ; 013146 F4000002 6590 BNE R0, 136_3$ ; R0, 136_3$ ; 013147 47E0541A 6594 BIS R31, 2, R26 ; R31, 2, R26 ; 013148 B34A0000 6598 STL R26, (R10) ; R26, (R10) 659C 136_3$: ; 013149 A14B0020 659C LDL R10, 32(R11) ; R10, 32(R11) ; 013150 F9400010 65A0 BGE R10, 136_20$ ; R10, 136_20$ ; 013151 A32A0000 65A4 LDL R25, (R10) ; R25, (R10) ; 013152 E7200003 65A8 BEQ R25, 136_71$ ; R25, 136_71$ ; 013153 A2EA0000 65AC LDL R23, (R10) ; R23, (R10) ; 013154 42E03137 65B0 SUBL R23, 1, R23 ; R23, 1, R23 B2EA0000 65B4 STL R23, (R10) ; R23, (R10) 65B8 136_71$: ; 013155 A74DFB18 65B8 LDQ R26, -1256(R13) ; R26, -1256(R13) ; 013157 43C0953E 65BC SUBQ SP, 4, SP ; SP, 4, SP ; 013155 47E3F416 65C0 BIS R31, 31, R22 ; R31, 31, R22 A76DFB20 65C4 LDQ R27, -1248(R13) ; R27, -1248(R13) ; 013157 B2DE0000 65C8 STL R22, (SP) ; R22, (SP) ; 013155 43E00010 65CC SEXTL R0, R16 ; R0, R16 ; 013156 43C1953E 65D0 SUBQ SP, 12, SP ; SP, 12, SP ; 013157 47E03419 65D4 BIS R31, 1, R25 ; R31, 1, R25 6B5A4000 65D8 JSR R26, R26 ; R26, R26 A01E000C 65DC LDL R0, 12(SP) ; R0, 12(SP) ; 013158 43C2141E 65E0 ADDQ SP, 16, SP ; SP, 16, SP 65E4 136_20$: ; 013159 F000001D 65E4 BLBS R0, 136_25$ ; R0, 136_25$ ; 013160 A78DFAE8 65E8 LDQ R28, -1304(R13) ; R28, -1304(R13) ; 013162 A36B001C 65EC LDL R27, 28(R11) ; R27, 28(R11) ; 013164 A09C0000 65F0 LDL R4, (R28) ; R4, (R28) ; 013162 B3640074 65F4 STL R27, 116(R4) ; R27, 116(R4) ; 013164 A34B000C 65F8 LDL R26, 12(R11) ; R26, 12(R11) ; 013168 A76DFC48 65FC LDQ R27, -952(R13) ; R27, -952(R13) ; 013170 B3440100 6600 STL R26, 256(R4) ; R26, 256(R4) ; 013168 A30B0010 6604 LDL R24, 16(R11) ; R24, 16(R11) ; 013169 B3040104 6608 STL R24, 260(R4) ; R24, 260(R4) A2CB000C 660C LDL R22, 12(R11) ; R22, 12(R11) ; 013170 A70DFAF0 6610 LDQ R24, -1296(R13) ; R24, -1296(R13) ; 013172 B2DB0000 6614 STL R22, (R27) ; R22, (R27) ; 013170 A32B0010 6618 LDL R25, 16(R11) ; R25, 16(R11) ; 013171 B33B0004 661C STL R25, 4(R27) ; R25, 4(R27) 236DFDC0 6620 LDA R27, -576(R13) ; R27, -576(R13) ; 013178 A0980000 6624 LDL R4, (R24) ; R4, (R24) ; 013172 A2EB0014 6628 LDL R23, 20(R11) ; R23, 20(R11) ; 013173 B2E40280 662C STL R23, 640(R4) ; R23, 640(R4) A38B0018 6630 LDL R28, 24(R11) ; R28, 24(R11) ; 013174 B3840284 6634 STL R28, 644(R4) ; R28, 644(R4) A32B000C 6638 LDL R25, 12(R11) ; R25, 12(R11) ; 013175 B3240000 663C STL R25, (R4) ; R25, (R4) A2EB0010 6640 LDL R23, 16(R11) ; R23, 16(R11) ; 013176 B2E40004 6644 STL R23, 4(R4) ; R23, 4(R4) 43C2153E 6648 SUBQ SP, 16, SP ; SP, 16, SP ; 013178 B15E000C 664C STL R10, 12(SP) ; R10, 12(SP) ; 013177 D35FF147 6650 BSR R26, UNDOID ; R26, UNDOID ; 013178 A15E000C 6654 LDL R10, 12(SP) ; R10, 12(SP) ; 013179 JTDRIVER Machine Code Listing 2-DEC-1994 10:13:13 AMAC V2.1-13-2671 Page 235 V01H LCLCNT 2-DEC-1994 10:12:45 [EVERHART.JT]JTDRIVER_S2.MAR;120 43C2141E 6658 ADDQ SP, 16, SP ; SP, 16, SP 665C 136_25$: ; 013180 43C0953E 665C SUBQ SP, 4, SP ; SP, 4, SP ; 013182 A74DFC08 6660 LDQ R26, -1016(R13) ; R26, -1016(R13) ; 013189 239F0535 6664 LDA R28, 1333(R31) ; R28, 1333(R31) ; 013184 A76DFC10 6668 LDQ R27, -1008(R13) ; R27, -1008(R13) ; 013189 B01E0000 666C STL R0, (SP) ; R0, (SP) ; 013182 A00B0030 6670 LDL R0, 48(R11) ; R0, 48(R11) ; 013183 B38003C0 6674 STL R28, 960(R0) ; R28, 960(R0) ; 013184 B3C003E0 6678 STL SP, 992(R0) ; SP, 992(R0) ; 013185 A01E0000 667C LDL R0, (SP) ; R0, (SP) ; 013186 43C0941E 6680 ADDQ SP, 4, SP ; SP, 4, SP 6B5A4000 6684 JSR R26, R26 ; R26, R26 ; 013189 A01E0000 6688 LDL R0, (SP) ; R0, (SP) ; 013190 A03E0004 668C LDL R1, 4(SP) ; R1, 4(SP) 47E03400 6690 BIS R31, 1, R0 ; R31, 1, R0 ; 013191 A05E0008 6694 LDL R2, 8(SP) ; R2, 8(SP) ; 013190 A07E000C 6698 LDL R3, 12(SP) ; R3, 12(SP) A09E0010 669C LDL R4, 16(SP) ; R4, 16(SP) A0BE0014 66A0 LDL R5, 20(SP) ; R5, 20(SP) A0DE0018 66A4 LDL R6, 24(SP) ; R6, 24(SP) A0FE001C 66A8 LDL R7, 28(SP) ; R7, 28(SP) A11E0020 66AC LDL R8, 32(SP) ; R8, 32(SP) A13E0024 66B0 LDL R9, 36(SP) ; R9, 36(SP) A15E0028 66B4 LDL R10, 40(SP) ; R10, 40(SP) A17E002C 66B8 LDL R11, 44(SP) ; R11, 44(SP) 43C6141E 66BC ADDQ SP, 48, SP ; SP, 48, SP 66C0 $L80: ; 013192 A79E0000 66C0 LDQ R28, (SP) ; R28, (SP) A45E0008 66C4 LDQ R2, 8(SP) ; R2, 8(SP) A47E0010 66C8 LDQ R3, 16(SP) ; R3, 16(SP) A49E0018 66CC LDQ R4, 24(SP) ; R4, 24(SP) A4BE0020 66D0 LDQ R5, 32(SP) ; R5, 32(SP) A4DE0028 66D4 LDQ R6, 40(SP) ; R6, 40(SP) A4FE0030 66D8 LDQ R7, 48(SP) ; R7, 48(SP) A51E0038 66DC LDQ R8, 56(SP) ; R8, 56(SP) A53E0040 66E0 LDQ R9, 64(SP) ; R9, 64(SP) A55E0048 66E4 LDQ R10, 72(SP) ; R10, 72(SP) A57E0050 66E8 LDQ R11, 80(SP) ; R11, 80(SP) A5BE0058 66EC LDQ R13, 88(SP) ; R13, 88(SP) 43CC141E 66F0 ADDQ SP, 96, SP ; SP, 96, SP 6BFC8001 66F4 RET R28 ; R28 66F8 136_50$: ; 013085 43C0953E 66F8 SUBQ SP, 4, SP ; SP, 4, SP ; 013089 237F046D 66FC LDA R27, 1133(R31) ; R27, 1133(R31) ; 013091 B01E0000 6700 STL R0, (SP) ; R0, (SP) ; 013089 A00B0030 6704 LDL R0, 48(R11) ; R0, 48(R11) ; 013090 B36003C0 6708 STL R27, 960(R0) ; R27, 960(R0) ; 013091 236DFC28 670C LDA R27, -984(R13) ; R27, -984(R13) ; 013095 A35E0004 6710 LDL R26, 4(SP) ; R26, 4(SP) ; 013092 B34003DC 6714 STL R26, 988(R0) ; R26, 988(R0) A01E0000 6718 LDL R0, (SP) ; R0, (SP) ; 013093 43C0953E 671C SUBQ SP, 4, SP ; SP, 4, SP D35FEC73 6720 BSR R26, CLNPRV ; R26, CLNPRV ; 013095 47E05419 6724 BIS R31, 2, R25 ; R31, 2, R25 ; 013099 A74DFD78 6728 LDQ R26, -648(R13) ; R26, -648(R13) 43E50011 672C SEXTL R5, R17 ; R5, R17 JTDRIVER Machine Code Listing 2-DEC-1994 10:13:13 AMAC V2.1-13-2671 Page 236 V01H LCLCNT 2-DEC-1994 10:12:45 [EVERHART.JT]JTDRIVER_S2.MAR;120 B01E0004 6730 STL R0, 4(SP) ; R0, 4(SP) ; 013096 47E03400 6734 BIS R31, 1, R0 ; R31, 1, R0 ; 013098 B03E0000 6738 STL R1, (SP) ; R1, (SP) ; 013097 47FF0401 673C CLR R1 ; R1 ; 013099 B0030050 6740 STL R0, 80(R3) ; R0, 80(R3) 43E30010 6744 SEXTL R3, R16 ; R3, R16 A76DFD80 6748 LDQ R27, -640(R13) ; R27, -640(R13) B0230054 674C STL R1, 84(R3) ; R1, 84(R3) 47FF041F 6750 NOP ; 6B5A4000 6754 JSR R26, R26 ; R26, R26 6758 136_170$: ; 013111 A03E0000 6758 LDL R1, (SP) ; R1, (SP) ; 013112 A01E0004 675C LDL R0, 4(SP) ; R0, 4(SP) ; 013113 43C1141E 6760 ADDQ SP, 8, SP ; SP, 8, SP 43E1000A 6764 SEXTL R1, R10 ; R1, R10 ; 013118 40010530 6768 SUBQ R0, R1, R16 ; R0, R1, R16 ; 013114 E61FFF7C 676C BEQ R16, 136_70$ ; R16, 136_70$ ; 013115 A1260000 6770 LDL R9, (R6) ; R9, (R6) ; 013119 B1460000 6774 STL R10, (R6) ; R10, (R6) ; 013120 A309007C 6778 LDL R24, 124(R9) ; R24, 124(R9) ; 013123 43003138 677C SUBL R24, 1, R24 ; R24, 1, R24 B309007C 6780 STL R24, 124(R9) ; R24, 124(R9) FF000002 6784 BGT R24, 136_174$ ; R24, 136_174$ ; 013124 47E03417 6788 BIS R31, 1, R23 ; R31, 1, R23 ; 013125 B2E9007C 678C STL R23, 124(R9) ; R23, 124(R9) 6790 136_174$: ; 013126 A38A007C 6790 LDL R28, 124(R10) ; R28, 124(R10) 4380301C 6794 ADDL R28, 1, R28 ; R28, 1, R28 B38A007C 6798 STL R28, 124(R10) ; R28, 124(R10) C3FFFF70 679C BR 136_70$ ; 136_70$ ; 013134 67A0 136_60$: ; 013102 43C1153E 67A0 SUBQ SP, 8, SP ; SP, 8, SP ; 013105 236DFC28 67A4 LDA R27, -984(R13) ; R27, -984(R13) D35FEC51 67A8 BSR R26, CLNPRV ; R26, CLNPRV 47E05419 67AC BIS R31, 2, R25 ; R31, 2, R25 ; 013109 A74DFD78 67B0 LDQ R26, -648(R13) ; R26, -648(R13) 43E50011 67B4 SEXTL R5, R17 ; R5, R17 B01E0004 67B8 STL R0, 4(SP) ; R0, 4(SP) ; 013106 47E49400 67BC BIS R31, 36, R0 ; R31, 36, R0 ; 013108 B03E0000 67C0 STL R1, (SP) ; R1, (SP) ; 013107 47FF0401 67C4 CLR R1 ; R1 ; 013109 B0030050 67C8 STL R0, 80(R3) ; R0, 80(R3) 43E30010 67CC SEXTL R3, R16 ; R3, R16 A76DFD80 67D0 LDQ R27, -640(R13) ; R27, -640(R13) B0230054 67D4 STL R1, 84(R3) ; R1, 84(R3) 6B5A4000 67D8 JSR R26, R26 ; R26, R26 C3FFFFDE 67DC BR 136_170$ ; 136_170$ ; 013111 67E0 136_199$: ; 013066 A0DE0000 67E0 LDL R6, (SP) ; R6, (SP) ; 013067 47E21400 67E4 BIS R31, 16, R0 ; R31, 16, R0 ; 013068 A0FE0004 67E8 LDL R7, 4(SP) ; R7, 4(SP) ; 013067 47FF0401 67EC CLR R1 ; R1 ; 013069 A11E0008 67F0 LDL R8, 8(SP) ; R8, 8(SP) ; 013067 43E50011 67F4 SEXTL R5, R17 ; R5, R17 ; 013069 A13E000C 67F8 LDL R9, 12(SP) ; R9, 12(SP) ; 013067 43C2141E 67FC ADDQ SP, 16, SP ; SP, 16, SP A74DFD78 6800 LDQ R26, -648(R13) ; R26, -648(R13) ; 013069 JTDRIVER Machine Code Listing 2-DEC-1994 10:13:13 AMAC V2.1-13-2671 Page 237 V01H LCLCNT 2-DEC-1994 10:12:45 [EVERHART.JT]JTDRIVER_S2.MAR;120 43E30010 6804 SEXTL R3, R16 ; R3, R16 B0030050 6808 STL R0, 80(R3) ; R0, 80(R3) 47E05419 680C BIS R31, 2, R25 ; R31, 2, R25 B0230054 6810 STL R1, 84(R3) ; R1, 84(R3) 43C1153E 6814 SUBQ SP, 8, SP ; SP, 8, SP A76DFD80 6818 LDQ R27, -640(R13) ; R27, -640(R13) 6B5A4000 681C JSR R26, R26 ; R26, R26 A01E0020 6820 LDL R0, 32(SP) ; R0, 32(SP) ; 013071 A03E0024 6824 LDL R1, 36(SP) ; R1, 36(SP) A05E0028 6828 LDL R2, 40(SP) ; R2, 40(SP) A07E002C 682C LDL R3, 44(SP) ; R3, 44(SP) A09E0030 6830 LDL R4, 48(SP) ; R4, 48(SP) 43C4141E 6834 ADDQ SP, 32, SP ; SP, 32, SP ; 013070 A0BE0014 6838 LDL R5, 20(SP) ; R5, 20(SP) ; 013071 A0DE0018 683C LDL R6, 24(SP) ; R6, 24(SP) A0FE001C 6840 LDL R7, 28(SP) ; R7, 28(SP) A11E0020 6844 LDL R8, 32(SP) ; R8, 32(SP) A13E0024 6848 LDL R9, 36(SP) ; R9, 36(SP) A15E0028 684C LDL R10, 40(SP) ; R10, 40(SP) A17E002C 6850 LDL R11, 44(SP) ; R11, 44(SP) 43C6141E 6854 ADDQ SP, 48, SP ; SP, 48, SP C3FFFF99 6858 BR $L80 ; $L80 ; 013072 47FF041F 685C NOP ; Routine Size: 1920 bytes, Routine Base: $$$115_DRIVER + 60E0 6860 GRANTID: ; 013231 43CA153E 6860 SUBQ SP, 80, SP ; SP, 80, SP 473FF019 6864 AND R25, 255, R25 ; R25, 255, R25 B77E0000 6868 STQ R27, (SP) ; R27, (SP) B75E0028 686C STQ R26, 40(SP) ; R26, 40(SP) B45E0030 6870 STQ R2, 48(SP) ; R2, 48(SP) B47E0038 6874 STQ R3, 56(SP) ; R3, 56(SP) B5BE0040 6878 STQ R13, 64(SP) ; R13, 64(SP) 47FB040D 687C MOV R27, R13 ; R27, R13 B7BE0048 6880 STQ FP, 72(SP) ; FP, 72(SP) 47FE041D 6884 MOV SP, FP ; SP, FP B33D0008 6888 STL R25, 8(FP) ; R25, 8(FP) B21D000C 688C STL R16, 12(FP) ; R16, 12(FP) B23D0010 6890 STL R17, 16(FP) ; R17, 16(FP) B25D0014 6894 STL R18, 20(FP) ; R18, 20(FP) B27D0018 6898 STL R19, 24(FP) ; R19, 24(FP) B29D001C 689C STL R20, 28(FP) ; R20, 28(FP) B2BD0020 68A0 STL R21, 32(FP) ; R21, 32(FP) 68A4 $L81: 47E03403 68A4 BIS R31, 1, R3 ; R31, 1, R3 ; 013235 C3E00013 68A8 BR GR10$ ; GR10$ ; 013236 47FF041F 68AC NOP ; Routine Size: 80 bytes, Routine Base: $$$115_DRIVER + 6860 68B0 REVOKID: ; 013238 43CA153E 68B0 SUBQ SP, 80, SP ; SP, 80, SP 473FF019 68B4 AND R25, 255, R25 ; R25, 255, R25 B77E0000 68B8 STQ R27, (SP) ; R27, (SP) B75E0028 68BC STQ R26, 40(SP) ; R26, 40(SP) B45E0030 68C0 STQ R2, 48(SP) ; R2, 48(SP) JTDRIVER Machine Code Listing 2-DEC-1994 10:13:13 AMAC V2.1-13-2671 Page 238 V01H REVOKID 2-DEC-1994 10:12:45 [EVERHART.JT]JTDRIVER_S2.MAR;120 B47E0038 68C4 STQ R3, 56(SP) ; R3, 56(SP) B5BE0040 68C8 STQ R13, 64(SP) ; R13, 64(SP) 436A152D 68CC SUBQ R27, 80, R13 ; R27, 80, R13 B7BE0048 68D0 STQ FP, 72(SP) ; FP, 72(SP) 47FE041D 68D4 MOV SP, FP ; SP, FP B33D0008 68D8 STL R25, 8(FP) ; R25, 8(FP) B21D000C 68DC STL R16, 12(FP) ; R16, 12(FP) B23D0010 68E0 STL R17, 16(FP) ; R17, 16(FP) B25D0014 68E4 STL R18, 20(FP) ; R18, 20(FP) B27D0018 68E8 STL R19, 24(FP) ; R19, 24(FP) B29D001C 68EC STL R20, 28(FP) ; R20, 28(FP) B2BD0020 68F0 STL R21, 32(FP) ; R21, 32(FP) 68F4 $L83: 47FF0403 68F4 CLR R3 ; R3 ; 013242 68F8 GR10$: ; 013243 A05D0014 68F8 LDL R2, 20(FP) ; R2, 20(FP) ; 013244 F4400003 68FC BNE R2, 139_20$ ; R2, 139_20$ ; 013245 43C1153E 6900 SUBQ SP, 8, SP ; SP, 8, SP ; 013246 43FE0002 6904 SEXTL SP, R2 ; SP, R2 ; 013247 B7FE0000 6908 STQ R31, (SP) ; R31, (SP) ; 013246 690C 139_20$: ; 013249 A3620000 690C LDL R27, (R2) ; R27, (R2) E760000F 6910 BEQ R27, 139_40$ ; R27, 139_40$ ; 013250 6914 139_30$: ; 013252 A21D000C 6914 LDL R16, 12(FP) ; R16, 12(FP) ; 013254 47C1F01A 6918 AND SP, 15, R26 ; SP, 15, R26 ; 013259 A23D0010 691C LDL R17, 16(FP) ; R17, 16(FP) ; 013254 4342141A 6920 ADDQ R26, 16, R26 ; R26, 16, R26 ; 013259 A29D001C 6924 LDL R20, 28(FP) ; R20, 28(FP) ; 013252 47C1F11E 6928 BIC SP, 15, SP ; SP, 15, SP ; 013259 43C2153E 692C SUBQ SP, 16, SP ; SP, 16, SP 43E30013 6930 SEXTL R3, R19 ; R3, R19 ; 013253 43E20012 6934 SEXTL R2, R18 ; R2, R18 B75E0008 6938 STQ R26, 8(SP) ; R26, 8(SP) ; 013259 47E0B419 693C BIS R31, 5, R25 ; R31, 5, R25 41BF153B 6940 SUBQ R13, 248, R27 ; R13, 248, R27 D340000E 6944 BSR R26, GRANT_REVOKE ; R26, GRANT_REVOKE A75E0008 6948 LDQ R26, 8(SP) ; R26, 8(SP) 43DA001E 694C ADDL SP, R26, SP ; SP, R26, SP 6950 139_40$: ; 013260 47FD041E 6950 MOV FP, SP ; FP, SP A79E0028 6954 LDQ R28, 40(SP) ; R28, 40(SP) A45E0030 6958 LDQ R2, 48(SP) ; R2, 48(SP) A47E0038 695C LDQ R3, 56(SP) ; R3, 56(SP) A5BE0040 6960 LDQ R13, 64(SP) ; R13, 64(SP) A7BE0048 6964 LDQ FP, 72(SP) ; FP, 72(SP) 43CA141E 6968 ADDQ SP, 80, SP ; SP, 80, SP 6BFC8001 696C RET R28 ; R28 6970 $L123: ; 013251 C3FFFFF7 6970 BR 139_40$ ; 139_40$ 47FF041F 6974 NOP ; 47FF041F 6978 NOP ; 47FF041F 697C NOP ; Routine Size: 208 bytes, Routine Base: $$$115_DRIVER + 68B0 6980 GRANT_REVOKE:: ; 013299 JTDRIVER Machine Code Listing 2-DEC-1994 10:13:13 AMAC V2.1-13-2671 Page 239 V01H GRANT_REVOKE 2-DEC-1994 10:12:45 [EVERHART.JT]JTDRIVER_S2.MAR;120 43D4153E 6980 SUBQ SP, 160, SP ; SP, 160, SP B77E0000 6984 STQ R27, (SP) ; R27, (SP) B75E0038 6988 STQ R26, 56(SP) ; R26, 56(SP) B45E0040 698C STQ R2, 64(SP) ; R2, 64(SP) B47E0048 6990 STQ R3, 72(SP) ; R3, 72(SP) B49E0050 6994 STQ R4, 80(SP) ; R4, 80(SP) B4BE0058 6998 STQ R5, 88(SP) ; R5, 88(SP) B4DE0060 699C STQ R6, 96(SP) ; R6, 96(SP) B4FE0068 69A0 STQ R7, 104(SP) ; R7, 104(SP) B51E0070 69A4 STQ R8, 112(SP) ; R8, 112(SP) B53E0078 69A8 STQ R9, 120(SP) ; R9, 120(SP) B5BE0080 69AC STQ R13, 128(SP) ; R13, 128(SP) B5DE0088 69B0 STQ R14, 136(SP) ; R14, 136(SP) 47FB040D 69B4 MOV R27, R13 ; R27, R13 B5FE0090 69B8 STQ R15, 144(SP) ; R15, 144(SP) B7BE0098 69BC STQ FP, 152(SP) ; FP, 152(SP) 47FE041D 69C0 MOV SP, FP ; SP, FP B7FE0008 69C4 STQ R31, 8(SP) ; R31, 8(SP) A5EDFAB0 69C8 LDQ R15, -1360(R13) ; R15, -1360(R13) ; 013503 B73D0010 69CC STQ R25, 16(FP) ; R25, 16(FP) ; 013299 B61D0018 69D0 STQ R16, 24(FP) ; R16, 24(FP) B63D0020 69D4 STQ R17, 32(FP) ; R17, 32(FP) B65D0028 69D8 STQ R18, 40(FP) ; R18, 40(FP) B67D0030 69DC STQ R19, 48(FP) ; R19, 48(FP) 69E0 $L85: A78DFAD8 69E0 LDQ R28, -1320(R13) ; R28, -1320(R13) ; 013304 43E40006 69E4 SEXTL R4, R6 ; R4, R6 ; 013303 A36F0000 69E8 LDL R27, (R15) ; R27, (R15) ; 013503 47FF0407 69EC CLR R7 ; R7 ; 013302 47FF0408 69F0 CLR R8 ; R8 A09C0000 69F4 LDL R4, (R28) ; R4, (R28) ; 013304 F360002F 69F8 BLBS R27, $L124 ; R27, $L124 ; 013503 69FC 140_30095$: 47E11410 69FC BIS R31, 8, R16 ; R31, 8, R16 47E0041A 6A00 MOV R0, R26 ; R0, R26 47E10419 6A04 MOV R1, R25 ; R1, R25 0000000F 6A08 CALL_PAL 15 ; 15 47FA0400 6A0C MOV R26, R0 ; R26, R0 47F90401 6A10 MOV R25, R1 ; R25, R1 2FFE0000 6A14 LNOP ; 6A18 140_30096$: A30F0000 6A18 LDL R24, (R15) ; R24, (R15) ; 013631 A02400D4 6A1C LDL R1, 212(R4) ; R1, 212(R4) ; 013504 E3000008 6A20 BLBC R24, 140_30101$ ; R24, 140_30101$ ; 013631 A74DFAC8 6A24 LDQ R26, -1336(R13) ; R26, -1336(R13) 43C2153E 6A28 SUBQ SP, 16, SP ; SP, 16, SP A76DFAD0 6A2C LDQ R27, -1328(R13) ; R27, -1328(R13) B41E0008 6A30 STQ R0, 8(SP) ; R0, 8(SP) 47E65400 6A34 BIS R31, 50, R0 ; R31, 50, R0 6B5A4000 6A38 JSR R26, R26 ; R26, R26 A41E0008 6A3C LDQ R0, 8(SP) ; R0, 8(SP) 43C2141E 6A40 ADDQ SP, 16, SP ; SP, 16, SP 6A44 140_30101$: 47E05410 6A44 BIS R31, 2, R16 ; R31, 2, R16 47E00417 6A48 MOV R0, R23 ; R0, R23 47E10416 6A4C MOV R1, R22 ; R1, R22 43E40006 6A50 SEXTL R4, R6 ; R4, R6 ; 013633 JTDRIVER Machine Code Listing 2-DEC-1994 10:13:13 AMAC V2.1-13-2671 Page 240 V01H GRANT_REVOKE 2-DEC-1994 10:12:45 [EVERHART.JT]JTDRIVER_S2.MAR;120 0000000F 6A54 CALL_PAL 15 ; 15 ; 013631 47F70400 6A58 MOV R23, R0 ; R23, R0 47F60401 6A5C MOV R22, R1 ; R22, R1 47E03400 6A60 BIS R31, 1, R0 ; R31, 1, R0 ; 013632 2FFE0000 6A64 LNOP ; 6A68 140_50$: ; 013634 40E6005B 6A68 S4ADDL R7, R6, R27 ; R7, R6, R27 21FB0120 6A6C LDA R15, 288(R27) ; R15, 288(R27) A08F0000 6A70 LDL R4, (R15) ; R4, (R15) E480000C 6A74 BEQ R4, 140_100$ ; R4, 140_100$ ; 013635 A3440000 6A78 LDL R26, (R4) ; R26, (R4) ; 013636 40809404 6A7C ADDQ R4, 4, R4 ; R4, 4, R4 A0840000 6A80 LDL R4, (R4) ; R4, (R4) ; 013637 43FA0018 6A84 SEXTL R26, R24 ; R26, R24 ; 013636 4B007783 6A88 SRA R24, 3, R3 ; R24, 3, R3 6A8C 140_60$: ; 013639 A03D0028 6A8C LDL R1, 40(FP) ; R1, 40(FP) 47FF0405 6A90 CLR R5 ; R5 ; 013645 A0410004 6A94 LDL R2, 4(R1) ; R2, 4(R1) ; 013641 A0210000 6A98 LDL R1, (R1) ; R1, (R1) ; 013642 6A9C 140_90$: ; 013662 40603123 6A9C SUBL R3, 1, R3 ; R3, 1, R3 F860000B 6AA0 BGE R3, 140_80$ ; R3, 140_80$ 47FF041F 6AA4 NOP ; 6AA8 140_100$: ; 013666 F4E00011 6AA8 BNE R7, 140_110$ ; R7, 140_110$ ; 013667 47FF041F 6AAC NOP ; 6AB0 L$5: 40E05007 6AB0 ADDL R7, 2, R7 ; R7, 2, R7 ; 013668 C3FFFFEC 6AB4 BR 140_50$ ; 140_50$ ; 013669 6AB8 $L124: ; 013503 A74DFAB8 6AB8 LDQ R26, -1352(R13) ; R26, -1352(R13) 47E65400 6ABC BIS R31, 50, R0 ; R31, 50, R0 A76DFAC0 6AC0 LDQ R27, -1344(R13) ; R27, -1344(R13) 6B5A4000 6AC4 JSR R26, R26 ; R26, R26 C3FFFFD3 6AC8 BR 140_30096$ ; 140_30096$ 47FF041F 6ACC NOP ; 6AD0 140_80$: ; 013657 A0040000 6AD0 LDL R0, (R4) ; R0, (R4) E400006E 6AD4 BEQ R0, 140_70$ ; R0, 140_70$ ; 013658 40010532 6AD8 SUBQ R0, R1, R18 ; R0, R1, R18 ; 013659 E6400072 6ADC BEQ R18, 140_140$ ; R18, 140_140$ ; 013660 40603123 6AE0 SUBL R3, 1, R3 ; R3, 1, R3 ; 013662 40811004 6AE4 ADDL R4, 8, R4 ; R4, 8, R4 ; 013661 F87FFFF9 6AE8 BGE R3, 140_80$ ; R3, 140_80$ ; 013662 E4FFFFF0 6AEC BEQ R7, L$5 ; R7, L$5 ; 013667 6AF0 140_110$: ; 013671 A2FD0030 6AF0 LDL R23, 48(FP) ; R23, 48(FP) E2E00003 6AF4 BLBC R23, 140_120$ ; R23, 140_120$ E5000013 6AF8 BEQ R8, 140_180$ ; R8, 140_180$ ; 013673 B0280000 6AFC STL R1, (R8) ; R1, (R8) ; 013674 B0480004 6B00 STL R2, 4(R8) ; R2, 4(R8) ; 013675 6B04 140_120$: ; 013677 47E03400 6B04 BIS R31, 1, R0 ; R31, 1, R0 6B08 140_130$: ; 013678 47FD041E 6B08 MOV FP, SP ; FP, SP A79E0038 6B0C LDQ R28, 56(SP) ; R28, 56(SP) JTDRIVER Machine Code Listing 2-DEC-1994 10:13:13 AMAC V2.1-13-2671 Page 241 V01H GRANT_REVOKE 2-DEC-1994 10:12:45 [EVERHART.JT]JTDRIVER_S2.MAR;120 A45E0040 6B10 LDQ R2, 64(SP) ; R2, 64(SP) A47E0048 6B14 LDQ R3, 72(SP) ; R3, 72(SP) A49E0050 6B18 LDQ R4, 80(SP) ; R4, 80(SP) A4BE0058 6B1C LDQ R5, 88(SP) ; R5, 88(SP) A4DE0060 6B20 LDQ R6, 96(SP) ; R6, 96(SP) A4FE0068 6B24 LDQ R7, 104(SP) ; R7, 104(SP) A51E0070 6B28 LDQ R8, 112(SP) ; R8, 112(SP) A53E0078 6B2C LDQ R9, 120(SP) ; R9, 120(SP) A5BE0080 6B30 LDQ R13, 128(SP) ; R13, 128(SP) A5DE0088 6B34 LDQ R14, 136(SP) ; R14, 136(SP) A5FE0090 6B38 LDQ R15, 144(SP) ; R15, 144(SP) A7BE0098 6B3C LDQ FP, 152(SP) ; FP, 152(SP) 43D4141E 6B40 ADDQ SP, 160, SP ; SP, 160, SP 6BFC8001 6B44 RET R28 ; R28 6B48 140_180$: ; 013699 A12F0000 6B48 LDL R9, (R15) ; R9, (R15) ; 013700 47FF0401 6B4C CLR R1 ; R1 ; 013699 47FF0402 6B50 CLR R2 ; R2 E5200002 6B54 BEQ R9, 140_190$ ; R9, 140_190$ ; 013701 A0290000 6B58 LDL R1, (R9) ; R1, (R9) ; 013702 A0490004 6B5C LDL R2, 4(R9) ; R2, 4(R9) ; 013703 6B60 140_190$: ; 013705 A74D0038 6B60 LDQ R26, 56(R13) ; R26, 56(R13) ; 013709 43E10003 6B64 SEXTL R1, R3 ; R1, R3 ; 013706 A76D0040 6B68 LDQ R27, 64(R13) ; R27, 64(R13) ; 013709 43E20004 6B6C SEXTL R2, R4 ; R2, R4 ; 013707 402A1001 6B70 ADDL R1, 80, R1 ; R1, 80, R1 ; 013708 6B5A4000 6B74 JSR R26, R26 ; R26, R26 ; 013709 E01FFFE3 6B78 BLBC R0, 140_130$ ; R0, 140_130$ ; 013710 43E20005 6B7C SEXTL R2, R5 ; R2, R5 ; 013711 47E2041A 6B80 MOV R2, R26 ; R2, R26 ; 013712 40409402 6B84 ADDQ R2, 4, R2 ; R2, 4, R2 40221139 6B88 SUBL R1, 16, R25 ; R1, 16, R25 B33A0000 6B8C STL R25, (R26) ; R25, (R26) 40411418 6B90 ADDQ R2, 8, R24 ; R2, 8, R24 ; 013713 47E20417 6B94 MOV R2, R23 ; R2, R23 40409402 6B98 ADDQ R2, 4, R2 ; R2, 4, R2 47E20419 6B9C MOV R2, R25 ; R2, R25 ; 013714 B3170000 6BA0 STL R24, (R23) ; R24, (R23) ; 013713 4839037A 6BA4 INSWL R1, R25, R26 ; R1, R25, R26 ; 013714 2F190000 6BA8 LDQ_U R24, (R25) ; R24, (R25) 40405402 6BAC ADDQ R2, 2, R2 ; R2, 2, R2 4B190258 6BB0 MSKWL R24, R25, R24 ; R24, R25, R24 471A0418 6BB4 BIS R24, R26, R24 ; R24, R26, R24 F3200059 6BB8 BLBS R25, $L198 ; R25, $L198 6BBC $L199: 47E20417 6BBC MOV R2, R23 ; R2, R23 ; 013715 3F190000 6BC0 STQ_U R24, (R25) ; R24, (R25) ; 013714 47E85418 6BC4 BIS R31, 66, R24 ; R31, 66, R24 ; 013715 2F570000 6BC8 LDQ_U R26, (R23) ; R26, (R23) 4B17036E 6BCC INSWL R24, R23, R14 ; R24, R23, R14 40405402 6BD0 ADDQ R2, 2, R2 ; R2, 2, R2 4B57025A 6BD4 MSKWL R26, R23, R26 ; R26, R23, R26 474E041A 6BD8 BIS R26, R14, R26 ; R26, R14, R26 F2E00056 6BDC BLBS R23, $L200 ; R23, $L200 6BE0 $L201: 3F570000 6BE0 STQ_U R26, (R23) ; R26, (R23) JTDRIVER Machine Code Listing 2-DEC-1994 10:13:13 AMAC V2.1-13-2671 Page 242 V01H GRANT_REVOKE 2-DEC-1994 10:12:45 [EVERHART.JT]JTDRIVER_S2.MAR;120 43C1153E 6BE4 SUBQ SP, 8, SP ; SP, 8, SP ; 013717 486012D3 6BE8 EXTWL R3, 0, R19 ; R3, 0, R19 ; 013719 B09E0004 6BEC STL R4, 4(SP) ; R4, 4(SP) ; 013716 B0BE0000 6BF0 STL R5, (SP) ; R5, (SP) ; 013717 47E40412 6BF4 MOV R4, R18 ; R4, R18 ; 013719 2E250000 6BF8 LDQ_U R17, (R5) ; R17, (R5) 4A2502D1 6BFC EXTWL R17, R5, R17 ; R17, R5, R17 F0A00053 6C00 BLBS R5, $L202 ; R5, $L202 6C04 $L203: 47F10401 6C04 MOV R17, R1 ; R17, R1 A74DFBC8 6C08 LDQ R26, -1080(R13) ; R26, -1080(R13) 42710134 6C0C SUBL R19, R17, R20 ; R19, R17, R20 46930881 6C10 CMOVLT R20, R19, R1 ; R20, R19, R1 47E20410 6C14 MOV R2, R16 ; R2, R16 42410001 6C18 ADDL R18, R1, R1 ; R18, R1, R1 42110003 6C1C ADDL R16, R17, R3 ; R16, R17, R3 6B5A4000 6C20 JSR R26, R26 ; R26, R26 E6200002 6C24 BEQ R17, $L204 ; R17, $L204 A74DFBA8 6C28 LDQ R26, -1112(R13) ; R26, -1112(R13) 6B5A4000 6C2C JSR R26, R26 ; R26, R26 6C30 $L204: A0BE0000 6C30 LDL R5, (SP) ; R5, (SP) ; 013721 47FF0402 6C34 CLR R2 ; R2 ; 013719 A09E0004 6C38 LDL R4, 4(SP) ; R4, 4(SP) ; 013722 43C1141E 6C3C ADDQ SP, 8, SP ; SP, 8, SP A6CD0028 6C40 LDQ R22, 40(R13) ; R22, 40(R13) ; 013724 E0E0000C 6C44 BLBC R7, 140_200$ ; R7, 140_200$ ; 013723 A2E50000 6C48 LDL R23, (R5) ; R23, (R5) ; 013724 43E40000 6C4C SEXTL R4, R0 ; R4, R0 ; 013726 B2F60000 6C50 STL R23, (R22) ; R23, (R22) ; 013724 A2A50004 6C54 LDL R21, 4(R5) ; R21, 4(R5) ; 013725 B2B60004 6C58 STL R21, 4(R22) ; R21, 4(R22) E41FFF82 6C5C BEQ R0, 140_50$ ; R0, 140_50$ ; 013727 40019120 6C60 SUBL R0, 12, R0 ; R0, 12, R0 ; 013728 2FFE0000 6C64 LNOP ; 6C68 140_210$: ; 013734 A74D0048 6C68 LDQ R26, 72(R13) ; R26, 72(R13) A76D0050 6C6C LDQ R27, 80(R13) ; R27, 80(R13) 6B5A4000 6C70 JSR R26, R26 ; R26, R26 6C74 140_220$: ; 013735 C3FFFF7C 6C74 BR 140_50$ ; 140_50$ 6C78 140_200$: ; 013731 40E6005B 6C78 S4ADDL R7, R6, R27 ; R7, R6, R27 43E90000 6C7C SEXTL R9, R0 ; R9, R0 ; 013732 B0BB0120 6C80 STL R5, 288(R27) ; R5, 288(R27) ; 013731 E41FFF78 6C84 BEQ R0, 140_50$ ; R0, 140_50$ ; 013733 C3FFFFF7 6C88 BR 140_210$ ; 140_210$ ; 013734 47FF041F 6C8C NOP ; 6C90 140_70$: ; 013650 F51FFF85 6C90 BNE R8, 140_100$ ; R8, 140_100$ ; 013651 43E40008 6C94 SEXTL R4, R8 ; R4, R8 ; 013652 F4FFFF95 6C98 BNE R7, 140_110$ ; R7, 140_110$ ; 013667 40E05007 6C9C ADDL R7, 2, R7 ; R7, 2, R7 ; 013668 C3FFFF71 6CA0 BR 140_50$ ; 140_50$ ; 013669 47FF041F 6CA4 NOP ; 6CA8 140_140$: ; 013682 E4A00002 6CA8 BEQ R5, 140_150$ ; R5, 140_150$ ; 013683 JTDRIVER Machine Code Listing 2-DEC-1994 10:13:13 AMAC V2.1-13-2671 Page 243 V01H GRANT_REVOKE 2-DEC-1994 10:12:45 [EVERHART.JT]JTDRIVER_S2.MAR;120 A3440004 6CAC LDL R26, 4(R4) ; R26, 4(R4) ; 013684 B3450000 6CB0 STL R26, (R5) ; R26, (R5) 6CB4 140_150$: ; 013685 A33D0030 6CB4 LDL R25, 48(FP) ; R25, 48(FP) F3200015 6CB8 BLBS R25, $L125 ; R25, $L125 6CBC 140_160$: ; 013691 48607723 6CBC SLL R3, 3, R3 ; R3, 3, R3 A74DFBC8 6CC0 LDQ R26, -1080(R13) ; R26, -1080(R13) ; 013693 40811412 6CC4 ADDQ R4, 8, R18 ; R4, 8, R18 43E30003 6CC8 SEXTL R3, R3 ; R3, R3 ; 013691 40611000 6CCC ADDL R3, 8, R0 ; R3, 8, R0 ; 013692 486012D3 6CD0 EXTWL R3, 0, R19 ; R3, 0, R19 ; 013693 480012D1 6CD4 EXTWL R0, 0, R17 ; R0, 0, R17 47E40410 6CD8 MOV R4, R16 ; R4, R16 47F10401 6CDC MOV R17, R1 ; R17, R1 42710134 6CE0 SUBL R19, R17, R20 ; R19, R17, R20 46930881 6CE4 CMOVLT R20, R19, R1 ; R20, R19, R1 42710120 6CE8 SUBL R19, R17, R0 ; R19, R17, R0 42410001 6CEC ADDL R18, R1, R1 ; R18, R1, R1 6B5A4000 6CF0 JSR R26, R26 ; R26, R26 E6200003 6CF4 BEQ R17, 140_170$ ; R17, 140_170$ A74DFBA8 6CF8 LDQ R26, -1112(R13) ; R26, -1112(R13) 44001880 6CFC CMOVLT R0, 0, R0 ; R0, 0, R0 6B5A4000 6D00 JSR R26, R26 ; R26, R26 6D04 140_170$: ; 013694 47E13400 6D04 BIS R31, 9, R0 ; R31, 9, R0 C3FFFF7F 6D08 BR 140_130$ ; 140_130$ ; 013695 2FFE0000 6D0C LNOP ; 6D10 $L125: ; 013686 B0240000 6D10 STL R1, (R4) ; R1, (R4) 47E13400 6D14 BIS R31, 9, R0 ; R31, 9, R0 ; 013694 B0440004 6D18 STL R2, 4(R4) ; R2, 4(R4) ; 013687 C3FFFF7A 6D1C BR 140_130$ ; 140_130$ ; 013695 6D20 $L198: ; 013714 2EF90001 6D20 LDQ_U R23, 1(R25) ; R23, 1(R25) 48390AFA 6D24 INSWH R1, R25, R26 ; R1, R25, R26 4AF90A57 6D28 MSKWH R23, R25, R23 ; R23, R25, R23 46FA0417 6D2C BIS R23, R26, R23 ; R23, R26, R23 3EF90001 6D30 STQ_U R23, 1(R25) ; R23, 1(R25) C3FFFFA1 6D34 BR $L199 ; $L199 6D38 $L200: ; 013715 2F370001 6D38 LDQ_U R25, 1(R23) ; R25, 1(R23) 4B170AEE 6D3C INSWH R24, R23, R14 ; R24, R23, R14 4B370A59 6D40 MSKWH R25, R23, R25 ; R25, R23, R25 472E0419 6D44 BIS R25, R14, R25 ; R25, R14, R25 3F370001 6D48 STQ_U R25, 1(R23) ; R25, 1(R23) C3FFFFA4 6D4C BR $L201 ; $L201 6D50 $L202: ; 013719 2F050001 6D50 LDQ_U R24, 1(R5) ; R24, 1(R5) 4B050B59 6D54 EXTWH R24, R5, R25 ; R24, R5, R25 46390411 6D58 BIS R17, R25, R17 ; R17, R25, R17 C3FFFFA9 6D5C BR $L203 ; $L203 Routine Size: 992 bytes, Routine Base: $$$115_DRIVER + 6980 6D60 KAST_CODE: ; 013864 43C8153E 6D60 SUBQ SP, 64, SP ; SP, 64, SP JTDRIVER Machine Code Listing 2-DEC-1994 10:13:13 AMAC V2.1-13-2671 Page 244 V01H KAST_CODE 2-DEC-1994 10:12:45 [EVERHART.JT]JTDRIVER_S2.MAR;120 B75E0000 6D64 STQ R26, (SP) ; R26, (SP) B45E0008 6D68 STQ R2, 8(SP) ; R2, 8(SP) B47E0010 6D6C STQ R3, 16(SP) ; R3, 16(SP) B49E0018 6D70 STQ R4, 24(SP) ; R4, 24(SP) B4BE0020 6D74 STQ R5, 32(SP) ; R5, 32(SP) B4DE0028 6D78 STQ R6, 40(SP) ; R6, 40(SP) B57E0030 6D7C STQ R11, 48(SP) ; R11, 48(SP) B5BE0038 6D80 STQ R13, 56(SP) ; R13, 56(SP) 47FB040D 6D84 MOV R27, R13 ; R27, R13 6D88 $L87: 43C1153E 6D88 SUBQ SP, 8, SP ; SP, 8, SP ; 013865 A74D0010 6D8C LDQ R26, 16(R13) ; R26, 16(R13) ; 013876 A76D0018 6D90 LDQ R27, 24(R13) ; R27, 24(R13) B0DE0004 6D94 STL R6, 4(SP) ; R6, 4(SP) ; 013865 B0BE0000 6D98 STL R5, (SP) ; R5, (SP) A1650014 6D9C LDL R11, 20(R5) ; R11, 20(R5) ; 013868 47E07405 6DA0 BIS R31, 3, R5 ; R31, 3, R5 ; 013874 A00B0014 6DA4 LDL R0, 20(R11) ; R0, 20(R11) ; 013870 A04B0018 6DA8 LDL R2, 24(R11) ; R2, 24(R11) ; 013872 41639401 6DAC ADDQ R11, 28, R1 ; R11, 28, R1 ; 013871 41679403 6DB0 ADDQ R11, 60, R3 ; R11, 60, R3 ; 013873 20CB0158 6DB4 LDA R6, 344(R11) ; R6, 344(R11) ; 013875 43C1153E 6DB8 SUBQ SP, 8, SP ; SP, 8, SP ; 013876 6B5A4000 6DBC JSR R26, R26 ; R26, R26 47F01416 6DC0 BIS R31, 128, R22 ; R31, 128, R22 ; 013883 4AC0717B 6DC4 INSBL R22, 3, R27 ; R22, 3, R27 A0BE0008 6DC8 LDL R5, 8(SP) ; R5, 8(SP) ; 013877 47FF0402 6DCC CLR R2 ; R2 ; 013884 A0DE000C 6DD0 LDL R6, 12(SP) ; R6, 12(SP) ; 013877 43C2141E 6DD4 ADDQ SP, 16, SP ; SP, 16, SP B00B0010 6DD8 STL R0, 16(R11) ; R0, 16(R11) ; 013878 A08B0008 6DDC LDL R4, 8(R11) ; R4, 8(R11) ; 013880 A70DFEC8 6DE0 LDQ R24, -312(R13) ; R24, -312(R13) ; 013882 A74DFF80 6DE4 LDQ R26, -128(R13) ; R26, -128(R13) ; 013885 A32400D4 6DE8 LDL R25, 212(R4) ; R25, 212(R4) ; 013881 B325000C 6DEC STL R25, 12(R5) ; R25, 12(R5) B3050020 6DF0 STL R24, 32(R5) ; R24, 32(R5) ; 013882 A3850008 6DF4 LDL R28, 8(R5) ; R28, 8(R5) ; 013883 4B80705C 6DF8 MSKBL R28, 3, R28 ; R28, 3, R28 479B041C 6DFC BIS R28, R27, R28 ; R28, R27, R28 A76DFF88 6E00 LDQ R27, -120(R13) ; R27, -120(R13) ; 013885 B3850008 6E04 STL R28, 8(R5) ; R28, 8(R5) ; 013883 6B5A4000 6E08 JSR R26, R26 ; R26, R26 ; 013885 6E0C $L88: ; 013886 A79E0000 6E0C LDQ R28, (SP) ; R28, (SP) A45E0008 6E10 LDQ R2, 8(SP) ; R2, 8(SP) A47E0010 6E14 LDQ R3, 16(SP) ; R3, 16(SP) A49E0018 6E18 LDQ R4, 24(SP) ; R4, 24(SP) A4BE0020 6E1C LDQ R5, 32(SP) ; R5, 32(SP) A4DE0028 6E20 LDQ R6, 40(SP) ; R6, 40(SP) A57E0030 6E24 LDQ R11, 48(SP) ; R11, 48(SP) A5BE0038 6E28 LDQ R13, 56(SP) ; R13, 56(SP) 43C8141E 6E2C ADDQ SP, 64, SP ; SP, 64, SP 6BFC8001 6E30 RET R28 ; R28 47FF041F 6E34 NOP ; 47FF041F 6E38 NOP ; 47FF041F 6E3C NOP ; JTDRIVER Machine Code Listing 2-DEC-1994 10:13:13 AMAC V2.1-13-2671 Page 245 V01H KAST_CODE 2-DEC-1994 10:12:45 [EVERHART.JT]JTDRIVER_S2.MAR;120 Routine Size: 224 bytes, Routine Base: $$$115_DRIVER + 6D60 6E40 KAST_CODE_2: ; 013888 43C8153E 6E40 SUBQ SP, 64, SP ; SP, 64, SP B75E0008 6E44 STQ R26, 8(SP) ; R26, 8(SP) B45E0010 6E48 STQ R2, 16(SP) ; R2, 16(SP) B47E0018 6E4C STQ R3, 24(SP) ; R3, 24(SP) B49E0020 6E50 STQ R4, 32(SP) ; R4, 32(SP) B4BE0028 6E54 STQ R5, 40(SP) ; R5, 40(SP) B57E0030 6E58 STQ R11, 48(SP) ; R11, 48(SP) B5BE0038 6E5C STQ R13, 56(SP) ; R13, 56(SP) 47FB040D 6E60 MOV R27, R13 ; R27, R13 6E64 $L89: 43C1153E 6E64 SUBQ SP, 8, SP ; SP, 8, SP ; 013889 B0BE0004 6E68 STL R5, 4(SP) ; R5, 4(SP) B09E0000 6E6C STL R4, (SP) ; R4, (SP) A1650014 6E70 LDL R11, 20(R5) ; R11, 20(R5) ; 013890 A02B000C 6E74 LDL R1, 12(R11) ; R1, 12(R11) ; 013891 A38B0010 6E78 LDL R28, 16(R11) ; R28, 16(R11) ; 013892 B3810000 6E7C STL R28, (R1) ; R28, (R1) A36B0010 6E80 LDL R27, 16(R11) ; R27, 16(R11) ; 013893 E360000E 6E84 BLBC R27, 142_100$ ; R27, 142_100$ A32B0170 6E88 LDL R25, 368(R11) ; R25, 368(R11) ; 013894 40209417 6E8C ADDQ R1, 4, R23 ; R1, 4, R23 ; 013895 473FF019 6E90 AND R25, 255, R25 ; R25, 255, R25 ; 013894 4B271738 6E94 SLL R25, 56, R24 ; R25, 56, R24 4B071798 6E98 SRA R24, 56, R24 ; R24, 56, R24 B3010004 6E9C STL R24, 4(R1) ; R24, 4(R1) 2E210004 6EA0 LDQ_U R17, 4(R1) ; R17, 4(R1) ; 013895 4A3702D1 6EA4 EXTWL R17, R23, R17 ; R17, R23, R17 F2E0001B 6EA8 BLBS R23, $L206 ; R23, $L206 6EAC $L207: A74DFAE0 6EAC LDQ R26, -1312(R13) ; R26, -1312(R13) 224B0171 6EB0 LDA R18, 369(R11) ; R18, 369(R11) 40211410 6EB4 ADDQ R1, 8, R16 ; R1, 8, R16 6B5A4000 6EB8 JSR R26, R26 ; R26, R26 47FF0400 6EBC CLR R0 ; R0 6EC0 142_100$: ; 013896 A09E0000 6EC0 LDL R4, (SP) ; R4, (SP) 47FF0402 6EC4 CLR R2 ; R2 ; 013899 A74D0010 6EC8 LDQ R26, 16(R13) ; R26, 16(R13) ; 013902 47E23403 6ECC BIS R31, 17, R3 ; R31, 17, R3 ; 013901 A0BE0004 6ED0 LDL R5, 4(SP) ; R5, 4(SP) ; 013896 43C1141E 6ED4 ADDQ SP, 8, SP ; SP, 8, SP A02400D4 6ED8 LDL R1, 212(R4) ; R1, 212(R4) ; 013898 A76D0018 6EDC LDQ R27, 24(R13) ; R27, 24(R13) ; 013902 6B5A4000 6EE0 JSR R26, R26 ; R26, R26 A74DFFD0 6EE4 LDQ R26, -48(R13) ; R26, -48(R13) ; 013904 A76DFFD8 6EE8 LDQ R27, -40(R13) ; R27, -40(R13) 43E50000 6EEC SEXTL R5, R0 ; R5, R0 ; 013903 6B5A4000 6EF0 JSR R26, R26 ; R26, R26 ; 013904 6EF4 $L90: ; 013905 A79E0008 6EF4 LDQ R28, 8(SP) ; R28, 8(SP) A45E0010 6EF8 LDQ R2, 16(SP) ; R2, 16(SP) A47E0018 6EFC LDQ R3, 24(SP) ; R3, 24(SP) A49E0020 6F00 LDQ R4, 32(SP) ; R4, 32(SP) JTDRIVER Machine Code Listing 2-DEC-1994 10:13:13 AMAC V2.1-13-2671 Page 246 V01H KAST_CODE_2 2-DEC-1994 10:12:45 [EVERHART.JT]JTDRIVER_S2.MAR;120 A4BE0028 6F04 LDQ R5, 40(SP) ; R5, 40(SP) A57E0030 6F08 LDQ R11, 48(SP) ; R11, 48(SP) A5BE0038 6F0C LDQ R13, 56(SP) ; R13, 56(SP) 43C8141E 6F10 ADDQ SP, 64, SP ; SP, 64, SP 6BFC8001 6F14 RET R28 ; R28 6F18 JT_END: ; 013907 6F18 $L206: ; 013895 2F210005 6F18 LDQ_U R25, 5(R1) ; R25, 5(R1) 4B370B56 6F1C EXTWH R25, R23, R22 ; R25, R23, R22 46360411 6F20 BIS R17, R22, R17 ; R17, R22, R17 C3FFFFE1 6F24 BR $L207 ; $L207 Routine Size: 232 bytes, Routine Base: $$$115_DRIVER + 6E40 .PSECT $$$115_LINKAGE, 5, NOPIC, CON, REL, LCL,- NOSHR, NOEXE, RD, NOWRT 0000 ; Heavyweight Frame invocation descriptor Entry point: DRIVER$STRUC_INIT Registers saved: R2-R6, FP Fixed Stack Size: 64 00050000 0020 .LONG 327680 04000000 0024 .LONG 67108864 00040000 0028 .LONG 262144 00313146 002C .LONG 3223878 00010000 0030 .LONG 65536 10000000 0034 .LONG 268435456 1C050000 0038 .LONG 470089728 0C050000 003C .LONG 201654272 04050000 0040 .LONG 67436544 08000000 0044 .LONG 134217728 0048 ; Heavyweight Frame invocation descriptor Entry point: DRIVER$STRUC_REINIT Registers saved: R2-R6, FP Fixed Stack Size: 64 00000000 0068 .ADDRESS $PSECT_BASE92 00000000 0070 .ADDRESS $PSECT_BASE91 F013F070 0078 .LONG 4027838576 0080 ; Null-Frame invocation descriptor Entry point: GETJTUCB Registers saved: R10-R11, R13 Fixed Stack Size: 32 00000000 0090 .ADDRESS SMP$AL_IPLVEC 00000000 0098 .ADDRESS SMP$GL_FLAGS 00A0 .LINKAGE SMP$ACQUIRE ; Call signature for Linkage Pair: ; 00000002 ; 00000000 00B0 .LINKAGE SMP$RELEASE ; Call signature for Linkage Pair: ; 00000002 JTDRIVER Machine Code Listing 2-DEC-1994 10:13:13 AMAC V2.1-13-2671 Page 247 V01H KAST_CODE_2 2-DEC-1994 10:12:45 [EVERHART.JT]JTDRIVER_S2.MAR;120 ; 00000000 00000000 00C0 .ADDRESS CTL$GL_PCB 00000000 00C8 .ADDRESS CTL$GL_PHD FFFF0FFF 00D0 .LONG 4294905855 00E0 .LINKAGE SMP$ACQUIREL ; Call signature for Linkage Pair: ; 00000002 ; 00000000 00F0 .LINKAGE SYS$SETEF ; Call signature for Linkage Pair: ; 10000022 ; 00000001 0100 .LINKAGE EXE_STD$ABORTIO ; Call signature for Linkage Pair: ; 10022222 ; 00000004 00040040 0110 .LONG 262208 00000000 0118 .ADDRESS VCSTP15 0120 .LINKAGE SMP$RELEASEL ; Call signature for Linkage Pair: ; 00000002 ; 00000000 00800000 0130 .LONG 8388608 0140 .LINKAGE OTS$MOVE 0150 ; Heavyweight Frame invocation descriptor Entry point: ACCFILT Registers saved: R2-R15, FP Fixed Stack Size: 144 0170 .LINKAGE EXE$DEANONPGDSIZ ; Call signature for Linkage Pair: ; 00000002 ; 00000000 0180 .LINKAGE EXE$ALONPAGVAR ; Call signature for Linkage Pair: ; 00000002 ; 00000000 0190 .LINKAGE OTS$ZERO 00810000 01A0 .LONG 8454144 0000F000 01A4 .LONG 61440 01B0 .LINKAGE OTS$MOVEM 00000000 01C0 .ADDRESS SCH$GL_PCBVEC 01D0 .LINKAGE SYS$QIO ; Call signature for Linkage Pair: ; 12222222 ; 000AAA0C 01E0 .LINKAGE INI$BRK ; Call signature for Linkage Pair: ; 00000002 ; 00000000 00000000 01F0 .ADDRESS CTL$GA_CCB_TABLE 00000000 01F8 .ADDRESS PMS$GL_KERNEL_DISPATCH_VECTOR 0200 ; Null-Frame invocation descriptor Entry point: CLNPRV Registers saved: R2-R11, R13 JTDRIVER Machine Code Listing 2-DEC-1994 10:13:13 AMAC V2.1-13-2671 Page 248 V01H KAST_CODE_2 2-DEC-1994 10:12:45 [EVERHART.JT]JTDRIVER_S2.MAR;120 Fixed Stack Size: 96 0210 ; Null-Frame invocation descriptor Entry point: PRVIDSET Registers saved: R2-R11, R13, R15 Fixed Stack Size: 112 00000000 0220 .ADDRESS CTL$GQ_PROCPRIV 0228 ; Null-Frame invocation descriptor Entry point: AUTH ABA7126C 0238 .LONG -1415114132 5218FBA2 023C .LONG 1377368994 0240 ; Null-Frame invocation descriptor Entry point: SETSOFTL Registers saved: R2-R11, R13 Fixed Stack Size: 96 0250 .LINKAGE SCH$IOLOCKW ; Call signature for Linkage Pair: ; 00000002 ; 00000000 0260 .LINKAGE IOC$SEARCHDEV ; Call signature for Linkage Pair: ; 00000002 ; 00000000 0270 .LINKAGE SCH$IOUNLOCK ; Call signature for Linkage Pair: ; 00000002 ; 00000000 0280 ; Null-Frame invocation descriptor Entry point: MOVLDT Registers saved: R2-R11, R13 Fixed Stack Size: 96 0290 ; Null-Frame invocation descriptor Entry point: DOWAIT Registers saved: R2-R3, R13 Fixed Stack Size: 32 02A0 .LINKAGE SYS$CLREF ; Call signature for Linkage Pair: ; 10000022 ; 00000001 02B0 .LINKAGE SYS$WAITFR ; Call signature for Linkage Pair: ; 10000022 ; 00000001 02C0 ; Heavyweight Frame invocation descriptor Entry point: FDTLOP Registers saved: R2-R11, R13, FP JTDRIVER Machine Code Listing 2-DEC-1994 10:13:13 AMAC V2.1-13-2671 Page 249 V01H KAST_CODE_2 2-DEC-1994 10:12:45 [EVERHART.JT]JTDRIVER_S2.MAR;120 Fixed Stack Size: 128 Call Signature: 0020 02E0 .CALL_SIGNATURE 10000002 02E0 (Summary: I32, Function Value: I32) 00000000 (Argument Count: 0) 02F0 .LINKAGE OTS$CALL_PROC 0300 ; Heavyweight Frame invocation descriptor Entry point: FDTXIT Registers saved: R2-R11, R13, FP Fixed Stack Size: 128 Call Signature: FFE0 0320 ; Heavyweight Frame invocation descriptor Entry point: FDTBXT Registers saved: R2-R11, R13, FP Fixed Stack Size: 128 Call Signature: FFC0 0340 ; Null-Frame invocation descriptor Entry point: X$FINI Registers saved: R13 Fixed Stack Size: 16 0350 .LINKAGE EXE_STD$FINISHIO ; Call signature for Linkage Pair: ; 10000222 ; 00000002 0360 ; Heavyweight Frame invocation descriptor Entry point: DEACFILT Registers saved: R2-R15, FP Fixed Stack Size: 144 00010100 0380 .LONG 65792 0388 ; Null-Frame invocation descriptor Entry point: CLNUP Registers saved: R2-R9, R11, R13 Fixed Stack Size: 96 0398 ; Null-Frame invocation descriptor Entry point: UNDOID Registers saved: R2-R11, R13 Fixed Stack Size: 96 03A8 ; Heavyweight Frame invocation descriptor Entry point: DELFILT Registers saved: R2-R15, FP Fixed Stack Size: 144 00000000 03C8 .ADDRESS SCH$GL_MAXPIX JTDRIVER Machine Code Listing 2-DEC-1994 10:13:13 AMAC V2.1-13-2671 Page 250 V01H KAST_CODE_2 2-DEC-1994 10:12:45 [EVERHART.JT]JTDRIVER_S2.MAR;120 03D0 ; Null-Frame invocation descriptor Entry point: POPOUT Registers saved: R13 Fixed Stack Size: 16 03E0 ; Null-Frame invocation descriptor Entry point: PORS Registers saved: R6-R10, R13 Fixed Stack Size: 64 03F0 ; Null-Frame invocation descriptor Entry point: SNDEXMSG Registers saved: R2-R11, R13, R15 Fixed Stack Size: 112 0400 .LINKAGE EXE$WRTMAILBOX ; Call signature for Linkage Pair: ; 00000002 ; 00000000 00000000 0410 .ADDRESS SNDEXAST 0418 ; Null-Frame invocation descriptor Entry point: SNDEXAST Registers saved: R11, R13 Fixed Stack Size: 32 0428 ; Null-Frame invocation descriptor Entry point: SNDDELMSG Registers saved: R2-R11, R13, R15 Fixed Stack Size: 112 0438 ; Heavyweight Frame invocation descriptor Entry point: MFYMOUNT Registers saved: R2-R15, FP Fixed Stack Size: 144 0458 ; Heavyweight Frame invocation descriptor Entry point: JT_FORMAT Registers saved: R2-R15, FP Fixed Stack Size: 144 0480 .LINKAGE EXE_STD$WRITECHK ; Call signature for Linkage Pair: ; 10222222 ; 00000005 0490 ; Null-Frame invocation descriptor Entry point: MUNG Registers saved: R2-R11, R13, R15 Fixed Stack Size: 112 00000000 04A0 .ADDRESS JT_FORMAT JTDRIVER Machine Code Listing 2-DEC-1994 10:13:13 AMAC V2.1-13-2671 Page 251 V01H KAST_CODE_2 2-DEC-1994 10:12:45 [EVERHART.JT]JTDRIVER_S2.MAR;120 00000000 04A8 .ADDRESS EXE$ILLIOFUNC 04B0 ; Null-Frame invocation descriptor Entry point: UMUNG Registers saved: R2-R5, R10-R11, R13 Fixed Stack Size: 64 04C0 ; Heavyweight Frame invocation descriptor Entry point: JT_CTRL_INIT Registers saved: R2, R4-R6, R8, FP Fixed Stack Size: 64 04E0 ; Heavyweight Frame invocation descriptor Entry point: JT_UNIT_INIT Registers saved: R2-R5, R13, FP Fixed Stack Size: 80 00000000 0500 .ADDRESS KAST_CODE 00000000 0508 .ADDRESS KAST_CODE_2 B22D4001 0510 .LONG -1305657343 0518 ; Null-Frame invocation descriptor Entry point: FINDLDT Registers saved: R2-R11, R13 Fixed Stack Size: 96 0528 ; Null-Frame invocation descriptor Entry point: FRESLOT Registers saved: R2-R11, R13 Fixed Stack Size: 96 0538 ; Null-Frame invocation descriptor Entry point: JT_ALIGN 0548 ; Heavyweight Frame invocation descriptor Entry point: JT_STARTIO Registers saved: R2-R5, R13, FP Fixed Stack Size: 64 0570 .LINKAGE IOC_STD$REQCOM ; Call signature for Linkage Pair: ; 10002222 ; 00000003 0580 ; Null-Frame invocation descriptor Entry point: JTKAST Registers saved: R2-R11, R13 Fixed Stack Size: 96 0590 ; Heavyweight Frame invocation descriptor Entry point: VCSTP15 JTDRIVER Machine Code Listing 2-DEC-1994 10:13:13 AMAC V2.1-13-2671 Page 252 V01H KAST_CODE_2 2-DEC-1994 10:12:45 [EVERHART.JT]JTDRIVER_S2.MAR;120 Registers saved: R2-R11, R13, FP Fixed Stack Size: 128 Call Signature: 0020 05B0 .CALL_SIGNATURE 10000022 05B0 (Summary: I32, Function Value: I32) 00000001 (Argument Count: 1) 05C0 .LINKAGE SCH$QAST ; Call signature for Linkage Pair: ; 00000002 ; 00000000 00000000 05D0 .ADDRESS VCSTEP2 05D8 ; Null-Frame invocation descriptor Entry point: LCLCNT Registers saved: R2-R11, R13 Fixed Stack Size: 96 05E8 ; Heavyweight Frame invocation descriptor Entry point: GRANT_REVOKE Registers saved: R2-R9, R13-R15, FP Fixed Stack Size: 160 Call Signature: 0020 0608 .CALL_SIGNATURE 10022222 0608 (Summary: I32, Function Value: I32) 00000004 (Argument Count: 4) 00000000 0610 .ADDRESS EXE$GQ_RIGHTSLIST 0620 .LINKAGE EXE$ALONONPAGED ; Call signature for Linkage Pair: ; 00000002 ; 00000000 0630 .LINKAGE EXE$DEANONPAGED ; Call signature for Linkage Pair: ; 00000002 ; 00000000 0640 ; Null-Frame invocation descriptor Entry point: KAST_CODE Registers saved: R2-R6, R11, R13 Fixed Stack Size: 64 0650 .LINKAGE LNM$SEARCH_ONE ; Call signature for Linkage Pair: ; 00000002 ; 00000000 0660 ; Null-Frame invocation descriptor Entry point: KAST_CODE_2 Registers saved: R2-R5, R11, R13 Fixed Stack Size: 64 0670 .LINKAGE SCH$POSTEF ; Call signature for Linkage Pair: ; 00000002 ; 00000000 JTDRIVER Machine Code Listing 2-DEC-1994 10:13:13 AMAC V2.1-13-2671 Page 253 V01H KAST_CODE_2 2-DEC-1994 10:12:45 [EVERHART.JT]JTDRIVER_S2.MAR;120 0680 ; Heavyweight Frame invocation descriptor Entry point: CREFILT Registers saved: R2-R15, FP Fixed Stack Size: 192 06A0 .LINKAGE OTS$DIV_I 0000DFC0 06B0 .LONG 57280 06B8 ; Null-Frame invocation descriptor Entry point: STP2BAD Registers saved: R2-R11, R13 Fixed Stack Size: 96 00008000 06C8 .LONG 32768 00000000 06D0 .ADDRESS JTKAST 00080001 06D8 .LONG 524289 00080000 06DC .LONG 524288 06E0 ; Heavyweight Frame invocation descriptor Entry point: GRANTID Registers saved: R2-R3, R13, FP Fixed Stack Size: 80 0700 ; Heavyweight Frame invocation descriptor Entry point: MFYFILT Registers saved: R2-R15, FP Fixed Stack Size: 192 0720 ; Null-Frame invocation descriptor Entry point: VCSTEP2 Registers saved: R2-R11, R13 Fixed Stack Size: 96 0730 ; Heavyweight Frame invocation descriptor Entry point: REVOKID Registers saved: R2-R3, R13, FP Fixed Stack Size: 80 .PSECT $$$105_PROLOGUE, 5, PIC, CON, REL, LCL,- NOSHR, NOEXE, RD, WRT 00000000 0000 .LONG 0 00000000 0004 .LONG 0 0187 0008 .WORD 391 1E 000A .BYTE 30 00 000B .BYTE 0 0002 000C .WORD 2 0002 000E .WORD 2 0002 0010 .WORD 2 012C 0012 .WORD 300 03E8 0014 .WORD 1000 0000 0016 .WORD 0 0000 0018 .WORD 0 0000 001A .WORD 0 JTDRIVER Machine Code Listing 2-DEC-1994 10:13:13 AMAC V2.1-13-2671 Page 254 V01H KAST_CODE_2 2-DEC-1994 10:12:45 [EVERHART.JT]JTDRIVER_S2.MAR;120 00000104 001C .LONG 260 00000005 0020 .LONG 5 00000000 0024 .LONG 0 00000000 0028 .ADDRESS DRIVER$STRUC_INIT 00000000 002C .ADDRESS DRIVER$STRUC_REINIT 00000000 0030 .LONG X^00000000 00000000 0034 .LONG X^00000000 00000000 0038 .ADDRESS DDT$$BASE 00000000 003C .LONG 0 00000000 0040 .LONG 0 00000000 0044 .LONG X^00000000 08 0048 .BYTE 8 5244544A 0049 .ASCII \JTDRIVER\ 52455649 004D 00000000 0058 .LONG 0 00000000 005C .LONG 0 00000000 0060 .QUAD 0 00000000 0064 00FF 0068 .WORD 255 0E 006A .BYTE 14 01 006B .BYTE 1 00000088 006C .ADDRESS $$$105_PROLOGUE+136 00000000 0070 .LONG 0 00000000 0074 .LONG 0 00000000 0078 .LONG 0 00000000 007C .LONG 0 00000000 0080 .LONG X^00000000 00000000 0084 .LONG 0 .PSECT $$$110_DATA, 5, PIC, CON, REL, LCL,- NOSHR, NOEXE, RD, WRT 00000000 0000 .LONG 0 00000000 0004 .LONG 0 0070 0008 .WORD 112 0000 000A .WORD 0 0000 000C .WORD 0 0000 000E .WORD 0 0108 0010 .WORD 264 0000 0012 .WORD 0 00000000 0014 .ADDRESS JT_STARTIO 00000000 0018 .LONG 0 00000000 001C .ADDRESS JT_CTRL_INIT 00000000 0020 .ADDRESS JT_UNIT_INIT 00000000 0024 .ADDRESS IOC$RETURN_SUCCESS 00000000 0028 .ADDRESS JT_FUNCTABLE 00000000 002C .ADDRESS IOC$RETURN_SUCCESS 00000000 0030 .ADDRESS IOC$RETURN_SUCCESS 00000000 0034 .ADDRESS IOC$RETURN_SUCCESS 00000000 0038 .LONG 0 00000000 003C .ADDRESS IOC_STD$MNTVER 00000000 0040 .ADDRESS IOC$RETURN 00000000 0044 .ADDRESS IOC$RETURN 00000000 0048 .ADDRESS IOC$RETURN 00000000 004C .ADDRESS IOC$RETURN 00000000 0050 .ADDRESS IOC$RETURN 00000000 0054 .ADDRESS IOC$RETURN_UNSUPPORTED 00000000 0058 .ADDRESS IOC$RETURN_UNSUPPORTED JTDRIVER Machine Code Listing 2-DEC-1994 10:13:13 AMAC V2.1-13-2671 Page 255 V01H KAST_CODE_2 2-DEC-1994 10:12:45 [EVERHART.JT]JTDRIVER_S2.MAR;120 00000000 005C .LONG 0 00000000 0060 .LONG 0 00000000 0064 .ADDRESS IOC$RETURN 00000000 0068 .ADDRESS IOC$RETURN_SUCCESS 00000000 006C .LONG X^00000000 00000000 0070 .ADDRESS VCSTP15 00000000 0074 .ADDRESS JTKAST 56454347 0078 .ASCII \GCEV\ 00000000 007C .LONG 0 00000000 0080 .LONG 0 00000000 0084 .LONG 0 67616C66 0088 .ASCII \flag\ 00000000 008C .LONG 0 4C020103 0090 .LONG 1275199747 037C0088 0094 .LONG 58458248 00000000 0098 .ADDRESS EXE$ILLIOFUNC 00000000 009C .ADDRESS EXE$ILLIOFUNC 00000000 00A0 .ADDRESS EXE$ILLIOFUNC 00000000 00A4 .ADDRESS EXE$ILLIOFUNC 00000000 00A8 .ADDRESS EXE$ILLIOFUNC 00000000 00AC .ADDRESS EXE$ILLIOFUNC 00000000 00B0 .ADDRESS EXE$ILLIOFUNC 00000000 00B4 .ADDRESS EXE$ILLIOFUNC 00000000 00B8 .ADDRESS EXE$ILLIOFUNC 00000000 00BC .ADDRESS EXE$ILLIOFUNC 00000000 00C0 .ADDRESS EXE$ILLIOFUNC 00000000 00C4 .ADDRESS EXE$ILLIOFUNC 00000000 00C8 .ADDRESS EXE$ILLIOFUNC 00000000 00CC .ADDRESS EXE$ILLIOFUNC 00000000 00D0 .ADDRESS EXE$ILLIOFUNC 00000000 00D4 .ADDRESS EXE$ILLIOFUNC 00000000 00D8 .ADDRESS EXE$ILLIOFUNC 00000000 00DC .ADDRESS EXE$ILLIOFUNC 00000000 00E0 .ADDRESS EXE$ILLIOFUNC 00000000 00E4 .ADDRESS EXE$ILLIOFUNC 00000000 00E8 .ADDRESS EXE$ILLIOFUNC 00000000 00EC .ADDRESS EXE$ILLIOFUNC 00000000 00F0 .ADDRESS EXE$ILLIOFUNC 00000000 00F4 .ADDRESS EXE$ILLIOFUNC 00000000 00F8 .ADDRESS EXE$ILLIOFUNC 00000000 00FC .ADDRESS EXE$ILLIOFUNC 00000000 0100 .ADDRESS EXE$ILLIOFUNC 00000000 0104 .ADDRESS EXE$ILLIOFUNC 00000000 0108 .ADDRESS EXE$ILLIOFUNC 00000000 010C .ADDRESS EXE$ILLIOFUNC 00000000 0110 .ADDRESS JT_FORMAT 00000000 0114 .ADDRESS EXE$ILLIOFUNC 00000000 0118 .ADDRESS EXE$ILLIOFUNC 00000000 011C .ADDRESS EXE$ILLIOFUNC 00000000 0120 .ADDRESS EXE$ILLIOFUNC 00000000 0124 .ADDRESS EXE$ILLIOFUNC 00000000 0128 .ADDRESS EXE$ILLIOFUNC 00000000 012C .ADDRESS EXE$ILLIOFUNC 00000000 0130 .ADDRESS EXE$ILLIOFUNC 00000000 0134 .ADDRESS EXE$ILLIOFUNC 00000000 0138 .ADDRESS EXE$ILLIOFUNC 00000000 013C .ADDRESS EXE$ILLIOFUNC JTDRIVER Machine Code Listing 2-DEC-1994 10:13:13 AMAC V2.1-13-2671 Page 256 V01H KAST_CODE_2 2-DEC-1994 10:12:45 [EVERHART.JT]JTDRIVER_S2.MAR;120 00000000 0140 .ADDRESS EXE$ILLIOFUNC 00000000 0144 .ADDRESS EXE$ILLIOFUNC 00000000 0148 .ADDRESS EXE$ILLIOFUNC 00000000 014C .ADDRESS EXE$ILLIOFUNC 00000000 0150 .ADDRESS EXE$ILLIOFUNC 00000000 0154 .ADDRESS EXE$ILLIOFUNC 00000000 0158 .ADDRESS EXE$ILLIOFUNC 00000000 015C .ADDRESS EXE$ILLIOFUNC 00000000 0160 .ADDRESS ACCFILT 00000000 0164 .ADDRESS CREFILT 00000000 0168 .ADDRESS DEACFILT 00000000 016C .ADDRESS DELFILT 00000000 0170 .ADDRESS MFYFILT 00000000 0174 .ADDRESS EXE$ILLIOFUNC 00000000 0178 .ADDRESS EXE$ILLIOFUNC 00000000 017C .ADDRESS MFYMOUNT 00000000 0180 .ADDRESS EXE$ILLIOFUNC 00000000 0184 .ADDRESS EXE$ILLIOFUNC 00000000 0188 .ADDRESS EXE$ILLIOFUNC 00000000 018C .ADDRESS EXE$ILLIOFUNC 00000000 0190 .ADDRESS EXE$ILLIOFUNC 00000000 0194 .ADDRESS EXE$ILLIOFUNC 0200 0198 .WORD 512 0025 019A .WORD 37 00000000 019C .LONG 0 0004 01A0 .WORD 4 0026 01A2 .WORD 38 00000000 01A4 .LONG 0 00000000 01A8 .LONG 0 00000000 01AC .LONG 0 56454347 01B0 .ASCII \GCEV\ 00000000 01B4 .LONG 0 00000000 01B8 .LONG 0 00000000 01BC .LONG 0 00000000 01C0 .LONG 0 00000000 01C4 .LONG 0 00000000 01C8 .LONG 0 00000000 01CC .LONG 0 00000000 01D0 .LONG 0 00000000 01D4 .LONG 0 00000000 01D8 .LONG 0 00000000 01DC .LONG 0 00000000 01E0 .LONG 0 00000000 01E4 .LONG 0 00000000 01E8 .LONG 0 00000000 01EC .LONG 0 00000000 01F0 .LONG 0 00000000 01F4 .LONG 0 00000000 01F8 .LONG 0 00000000 01FC .LONG 0 00000000 0200 .LONG 0 00000000 0204 .LONG 0 00000000 0208 .LONG 0 00000000 020C .LONG 0 00000000 0210 .LONG 0 00000000 0214 .LONG 0 00000000 0218 .LONG 0 JTDRIVER Machine Code Listing 2-DEC-1994 10:13:13 AMAC V2.1-13-2671 Page 257 V01H KAST_CODE_2 2-DEC-1994 10:12:45 [EVERHART.JT]JTDRIVER_S2.MAR;120 00000000 021C .LONG 0 00000000 0220 .LONG 0 00000000 0224 .LONG 0 00000000 0228 .LONG 0 00000000 022C .LONG 0 00000000 0230 .LONG 0 00000000 0234 .LONG 0 00000000 0238 .LONG 0 00000000 023C .LONG 0 00000000 0240 .LONG 0 00000000 0244 .LONG 0 00000000 0248 .LONG 0 00000000 024C .LONG 0 00000000 0250 .LONG 0 00000000 0254 .LONG 0 00000000 0258 .LONG 0 00000000 025C .LONG 0 00000000 0260 .LONG 0 00000000 0264 .LONG 0 00000000 0268 .LONG 0 00000000 026C .LONG 0 00000000 0270 .LONG 0 00000000 0274 .LONG 0 00000000 0278 .LONG 0 00000000 027C .LONG 0 00000000 0280 .LONG 0 00000000 0284 .LONG 0 00000000 0288 .LONG 0 00000000 028C .LONG 0 00000000 0290 .LONG 0 00000000 0294 .LONG 0 00000000 0298 .LONG 0 00000000 029C .LONG 0 00000000 02A0 .LONG 0 00000000 02A4 .LONG 0 00000000 02A8 .LONG 0 00000000 02AC .LONG 0 00000000 02B0 .LONG 0 00000000 02B4 .LONG 0 00000000 02B8 .LONG 0 00000000 02BC .LONG 0 00000000 02C0 .LONG 0 00000000 02C4 .LONG 0 00000000 02C8 .LONG 0 00000000 02CC .LONG 0 00000000 02D0 .LONG 0 00000000 02D4 .LONG 0 00000000 02D8 .LONG 0 00000000 02DC .LONG 0 00000000 02E0 .LONG 0 00000000 02E4 .LONG 0 00000000 02E8 .LONG 0 00000000 02EC .LONG 0 00000000 02F0 .LONG 0 00000000 02F4 .LONG 0 00000000 02F8 .LONG 0 00000000 02FC .LONG 0 JTDRIVER Machine Code Listing 2-DEC-1994 10:13:13 AMAC V2.1-13-2671 Page 258 V01H KAST_CODE_2 2-DEC-1994 10:12:45 [EVERHART.JT]JTDRIVER_S2.MAR;120 00000000 0300 .LONG 0 00000000 0304 .LONG 0 00000000 0308 .LONG 0 00000000 030C .LONG 0 00000000 0310 .LONG 0 00000000 0314 .LONG 0 00000000 0318 .LONG 0 00000000 031C .LONG 0 00000000 0320 .LONG 0 00000000 0324 .LONG 0 00000000 0328 .LONG 0 00000000 032C .LONG 0 00000000 0330 .LONG 0 00000000 0334 .LONG 0 00000000 0338 .LONG 0 00000000 033C .LONG 0 00000000 0340 .LONG 0 00000000 0344 .LONG 0 00000000 0348 .LONG 0 00000000 034C .LONG 0 00000000 0350 .LONG 0 00000000 0354 .LONG 0 00000000 0358 .LONG 0 00000000 035C .LONG 0 00000000 0360 .LONG 0 00000000 0364 .LONG 0 00000000 0368 .LONG 0 00000000 036C .LONG 0 00000000 0370 .LONG 0 00000000 0374 .LONG 0 00000000 0378 .LONG 0 00000000 037C .LONG 0 00000000 0380 .LONG 0 00000000 0384 .LONG 0 00000000 0388 .LONG 0 00000000 038C .LONG 0 00000000 0390 .LONG 0 00000000 0394 .LONG 0 00000000 0398 .LONG 0 00000000 039C .LONG 0 00000000 03A0 .LONG 0 00000000 03A4 .LONG 0 00000000 03A8 .LONG 0 00000000 03AC .LONG 0 00000000 03B0 .LONG 0 00000000 03B4 .LONG 0 00000000 03B8 .LONG 0 00000000 03BC .LONG 0 00000000 03C0 .LONG 0 00000000 03C4 .LONG 0 00000000 03C8 .LONG 0 00000000 03CC .LONG 0 00000000 03D0 .LONG 0 00000000 03D4 .LONG 0 00000000 03D8 .LONG 0 00000000 03DC .LONG 0 00000000 03E0 .LONG 0 JTDRIVER Machine Code Listing 2-DEC-1994 10:13:13 AMAC V2.1-13-2671 Page 259 V01H KAST_CODE_2 2-DEC-1994 10:12:45 [EVERHART.JT]JTDRIVER_S2.MAR;120 00000000 03E4 .LONG 0 00000000 03E8 .LONG 0 00000000 03EC .LONG 0 00000000 03F0 .LONG 0 00000000 03F4 .LONG 0 00000000 03F8 .LONG 0 00000000 03FC .LONG 0 00000000 0400 .LONG 0 00000000 0404 .LONG 0 00000000 0408 .LONG 0 00000000 040C .LONG 0 00000000 0410 .LONG 0 00000000 0414 .LONG 0 00000000 0418 .LONG 0 00000000 041C .LONG 0 00000000 0420 .LONG 0 00000000 0424 .LONG 0 00000000 0428 .LONG 0 00000000 042C .LONG 0 00000000 0430 .LONG 0 00000000 0434 .LONG 0 00000000 0438 .LONG 0 00000000 043C .LONG 0 00000000 0440 .LONG 0 00000000 0444 .LONG 0 00000000 0448 .LONG 0 00000000 044C .LONG 0 00000000 0450 .LONG 0 00000000 0454 .LONG 0 00000000 0458 .LONG 0 00000000 045C .LONG 0 00000000 0460 .LONG 0 00000000 0464 .LONG 0 00000000 0468 .LONG 0 00000000 046C .LONG 0 00000000 0470 .LONG 0 00000000 0474 .LONG 0 00000000 0478 .LONG 0 00000000 047C .LONG 0 00000000 0480 .LONG 0 00000000 0484 .LONG 0 00000000 0488 .LONG 0 00000000 048C .LONG 0 00000000 0490 .LONG 0 00000000 0494 .LONG 0 00000000 0498 .LONG 0 00000000 049C .LONG 0 00000000 04A0 .LONG 0 00000000 04A4 .LONG 0 00000000 04A8 .LONG 0 00000000 04AC .LONG 0 00000000 04B0 .LONG 0 00000000 04B4 .LONG 0 00000000 04B8 .LONG 0 00000000 04BC .LONG 0 00000000 04C0 .LONG 0 00000000 04C4 .LONG 0 JTDRIVER Machine Code Listing 2-DEC-1994 10:13:13 AMAC V2.1-13-2671 Page 260 V01H KAST_CODE_2 2-DEC-1994 10:12:45 [EVERHART.JT]JTDRIVER_S2.MAR;120 00000000 04C8 .LONG 0 00000000 04CC .LONG 0 00000000 04D0 .LONG 0 00000000 04D4 .LONG 0 00000000 04D8 .LONG 0 00000000 04DC .LONG 0 00000000 04E0 .LONG 0 00000000 04E4 .LONG 0 00000000 04E8 .LONG 0 00000000 04EC .LONG 0 00000000 04F0 .LONG 0 00000000 04F4 .LONG 0 00000000 04F8 .LONG 0 00000000 04FC .LONG 0 00000000 0500 .LONG 0 00000000 0504 .LONG 0 00000000 0508 .LONG 0 00000000 050C .LONG 0 00000000 0510 .LONG 0 00000000 0514 .LONG 0 00000000 0518 .LONG 0 00000000 051C .LONG 0 00000000 0520 .LONG 0 00000000 0524 .LONG 0 00000000 0528 .LONG 0 00000000 052C .LONG 0 00000000 0530 .LONG 0 00000000 0534 .LONG 0 00000000 0538 .LONG 0 00000000 053C .LONG 0 00000000 0540 .LONG 0 00000000 0544 .LONG 0 00000000 0548 .LONG 0 00000000 054C .LONG 0 00000000 0550 .LONG 0 00000000 0554 .LONG 0 00000000 0558 .LONG 0 00000000 055C .LONG 0 00000000 0560 .LONG 0 00000000 0564 .LONG 0 00000000 0568 .LONG 0 00000000 056C .LONG 0 00000000 0570 .LONG 0 00000000 0574 .LONG 0 00000000 0578 .LONG 0 00000000 057C .LONG 0 00000000 0580 .LONG 0 00000000 0584 .LONG 0 00000000 0588 .LONG 0 00000000 058C .LONG 0 00000000 0590 .LONG 0 00000000 0594 .LONG 0 00000000 0598 .LONG 0 00000000 059C .LONG 0 00000000 05A0 .LONG 0 00000000 05A4 .LONG 0 00000000 05A8 .LONG 0 JTDRIVER Machine Code Listing 2-DEC-1994 10:13:13 AMAC V2.1-13-2671 Page 261 V01H KAST_CODE_2 2-DEC-1994 10:12:45 [EVERHART.JT]JTDRIVER_S2.MAR;120 00000000 05AC .LONG 0 00000000 05B0 .LONG 0 00000000 05B4 .LONG 0 00000000 05B8 .LONG 0 00000000 05BC .LONG 0 00000000 05C0 .LONG 0 00000000 05C4 .LONG 0 00000000 05C8 .LONG 0 00000000 05CC .LONG 0 00000000 05D0 .LONG 0 00000000 05D4 .LONG 0 00000000 05D8 .LONG 0 00000000 05DC .LONG 0 00000000 05E0 .LONG 0 00000000 05E4 .LONG 0 00000000 05E8 .LONG 0 00000000 05EC .LONG 0 00000000 05F0 .LONG 0 00000000 05F4 .LONG 0 00000000 05F8 .LONG 0 00000000 05FC .LONG 0 00000000 0600 .LONG 0 00000000 0604 .LONG 0 00000000 0608 .LONG 0 00000000 060C .LONG 0 00000000 0610 .LONG 0 00000000 0614 .LONG 0 00000000 0618 .LONG 0 00000000 061C .LONG 0 00000000 0620 .LONG 0 00000000 0624 .LONG 0 00000000 0628 .LONG 0 00000000 062C .LONG 0 00000000 0630 .LONG 0 00000000 0634 .LONG 0 00000000 0638 .LONG 0 00000000 063C .LONG 0 00000000 0640 .LONG 0 00000000 0644 .LONG 0 00000000 0648 .LONG 0 00000000 064C .LONG 0 00000000 0650 .LONG 0 00000000 0654 .LONG 0 00000000 0658 .LONG 0 00000000 065C .LONG 0 00000000 0660 .LONG 0 00000000 0664 .LONG 0 00000000 0668 .LONG 0 00000000 066C .LONG 0 00000000 0670 .LONG 0 00000000 0674 .LONG 0 00000000 0678 .LONG 0 00000000 067C .LONG 0 00000000 0680 .LONG 0 00000000 0684 .LONG 0 00000000 0688 .LONG 0