1$! 2$! @(#)seldrive.com 7.9 04/01/14 3$! 4$! CD drive device settings command procedure for OpenVMS 5$! See the INSTALL.VMS file for details. 6$! OpenVMS versions: 6.0 and later, tested with 7.2 and 7.3 on VAX(tm) machines 7$! and 7.2-1 as well as 7.3-1 on Alpha(tm) machines 8$! 9$! xmcd - Motif(R) CD Audio Player/Ripper 10$! 11$! Copyright (C) 1993-2004 Ti Kan 12$! E-mail: xmcd@amb.org 13$! Contributing author: Michael Monscheuer 14$! E-mail: M.Monscheuer@t-online.de 15$! 16$! This program is free software; you can redistribute it and/or modify 17$! it under the terms of the GNU General Public License as published by 18$! the Free Software Foundation; either version 2 of the License, or 19$! (at your option) any later version. 20$! 21$! This program is distributed in the hope that it will be useful, 22$! but WITHOUT ANY WARRANTY; without even the implied warranty of 23$! MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 24$! GNU General Public License for more details. 25$! 26$! You should have received a copy of the GNU General Public License 27$! along with this program; if not, write to the Free Software 28$! Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. 29$! 30$!============================================================================= 31$! 32$! This procedure will on behalf of the user apply the modifications needed 33$! in XMCD's configuration file DEVICE.CFG for making use of the CD drive's 34$! capabilities. 35$! It usually is being executed from inside INSTALLVMS.COM at the time XMCD 36$! is being installed on your system. 37$! However, this procedure also can be run from the command prompt. 38$! This for example may become necessary if the CD drive was replaced with 39$! a different model than used previously. 40$! If running this procedure from the command prompt and you don't know what 41$! CD drive model you are using with XMCD, you may pass the CD drive's VMS 42$! device name to this procedure as P1 (f.i. @SELDRIVE $1$DKA400). VMS will 43$! tell you your drive's model name then if it is willing and able to reveal 44$! it. 45$! 46$! This procedure makes use of the drive configuration tables in the 47$! [.LIBDI_D.CFGTBL] subdirectory which contain vendor and drive specific 48$! configuration data on numerous CD drives. Two menues are presented 49$! to chose the vendor and model name from. 50$! 51$! Parameters: 52$! ------------ 53$! P1 - Optional, VMS device name of CD drive used with XMCD, f.i. $1$DKA400 54$! Only used when procedure is run from the command prompt 55$! P2 - Reserved for use with INSTALLVMS.COM only. 56$! 57$! Restrictions: 58$! -------------- 59$! 60$! This procedure cannot be used with pre-V7.0 VMS versions. 61$! Also, it will discard unsuitable versions of xmcd configuration 62$! tables and resultingly not apply any modification to DEVICE.CFG 63$! 64$! 65$! Some basics first... 66$! 67$ IF F$VERIFY() 68$ THEN 69$ ESC = "<ESC>" 70$ BEL = "<BEL>" 71$ CR = "<CR>" 72$ LF = "<LF>" 73$ ELSE 74$ BEL[0,8]=7 75$ LF[0,8]=10 76$ CR[0,8]=13 77$ ESC[0,8]=27 78$ ENDIF 79$ 80$ MATCHTBLVERS = 6 81$ 82$ IF F$GETSYI("VERSION") .LES. "V7" 83$ THEN 84$ WRITE SYS$OUTPUT "''CR'''LF'%DRVCFG-F-VVMM, VMS version mismatch, version is not 7.0 or later''CR'''LF'" 85$ EXIT 86$ ENDIF 87$ IF P2 .EQS. "NO_ENTRY_TEXT" THEN GOTO NO_P1 88$! 89$! Prepare user having to specify the CD drive model. 90$! 91$ WRITE SYS$OUTPUT "''ESC'[0;0H''ESC'[2J''CR'''LF' Configuration of device settings" 92$ WRITE SYS$OUTPUT " ---------------------------------" 93$ WRITE SYS$OUTPUT "''CR'''LF' You now need to specify your CD drive model." 94$ WRITE SYS$OUTPUT " This information will be used to apply changes to xmcd's device" 95$ WRITE SYS$OUTPUT " configuration file which will be necessary to make use of all your" 96$ WRITE SYS$OUTPUT " CD drive's capabilities." 97$ WRITE SYS$OUTPUT "" 98$ 99$ IF P1 .EQS. "" THEN GOTO ENTRY_TEXT_DONE 100$ IF .NOT. F$GETDVI(P1,"EXISTS") 101$ THEN 102$ WRITE SYS$OUTPUT "''CR'''LF'%SYSTEM-W-NOSUCHDEV, no such device available - ''P1'" 103$ EXIT 104$ ENDIF 105$ DRVMDL = F$GETDVI(P1,"DEVICE_TYPE_NAME") 106$ 107$ WRITE SYS$OUTPUT " Your CD drive ''P1' is considered to be a ''ESC'[7m ''DRVMDL' ''ESC'[0m ." 108$ WRITE SYS$OUTPUT "" 109$ WRITE SYS$OUTPUT " Remember this model type when next being prompted with the drive" 110$ WRITE SYS$OUTPUT " manufacturer and model type menues.''CR'''LF'" 111$ 112$ ENTRY_TEXT_DONE: 113$ 114$ INQUIRE/NOPUNCTATION DUMMY "''ESC'[28C''ESC'[7mPress Return to continue''ESC'[0m" 115$ WRITE SYS$OUTPUT "''ESC'[1A''ESC'[2K" 116$ 117$ NO_P1: 118$ 119$! 120$! Check whether procedure is run in correct environment. 121$! 122$ IF F$SEARCH("DEVICE.CFG") .EQS. "" 123$ THEN 124$ WRITE SYS$OUTPUT "''CR'''LF' %DRVCFG-F-NOCFGFIL, No device configuration file DEVICE.CFG found!" 125$ WRITE SYS$OUTPUT " Make sure you are running this procedure from your xmcd top-level directory!''CR'''LF'" 126$ GOTO ERR_EXIT 127$ ENDIF 128$! 129$! Determine available vendor specific configuration files. 130$! 131$ WRITE SYS$OUTPUT "''CR'''LF' %DRVCFG-S-GACD, Gathering available drive configuration data." 132$ WRITE SYS$OUTPUT " This may take a few seconds.''CR'''LF'''LF'" 133$ VCNT = 0 134$ DCNT = 0 135$ GET_VENDOR: 136$ VEND = F$SEARCH("[.LIBDI_D.CFGTBL]*.") 137$ IF VEND .EQS. "" THEN GOTO GOT_VENDORS 138$ SEARCH/NOWARNING/NOOUT 'VEND' "tblver=''MATCHTBLVERS'" 139$ IF $SEVERITY .NE. 1 THEN GOTO GET_VENDOR 140$ VCNT = VCNT + 1 141$ VEND'VCNT' = F$PARSE(VEND,,,"NAME") 142$ PIPE SEARCH 'VEND' "alias" | (READ SYS$INPUT RESULT ; DEFINE/JOB ALINAM &RESULT) 143$ VENDS'VCNT' = F$EDIT(F$ELEMENT(1,"=",F$TRNLNM("ALINAM")),"TRIM") 144$ DEASS/JOB ALINAM 145$ FNDSTR = VENDS'VCNT' 146$ WRITE SYS$OUTPUT "''ESC'[1A''ESC'[0K Found vendor: ''FNDSTR'" 147$ GOTO GET_VENDOR 148$ GOT_VENDORS: 149$ IF VCNT .EQ. 0 150$ THEN 151$ WRITE SYS$OUTPUT "''CR'''LF' %DRVCFG-F-NOCFGFIL, No drive configuration files found!" 152$ GOTO ERR_EXIT 153$ ENDIF 154$! 155$! Display vendor name menu 156$! 157$ WRITE SYS$OUTPUT "''ESC'[0;0H''ESC'[2J" 158$ WRITE SYS$OUTPUT "''ESC'#6Drive Manufacturer Menu" 159$ WRITE SYS$OUTPUT "-------------------------------------------------------------------------------" 160$ RCNT = 1 161$ LCNT = 4 162$ FILL = " " 163$ DISP_VENDORS: 164$ IF LCNT .EQ. 21 165$ THEN 166$ LCNT = 4 167$ RCNT = RCNT + 33 168$ ENDIF 169$ DCNT = DCNT + 1 170$ IF DCNT .GT. VCNT THEN GOTO DISP_VEND_DONE 171$ LCNT = LCNT + 1 172$ IF DCNT .GE. 10 THEN FILL = "" 173$ VENDSTR = VENDS'DCNT' 174$ WRITE SYS$OUTPUT "''ESC'[''LCNT';''RCNT'H''FILL'''DCNT') ''VENDSTR'" 175$ GOTO DISP_VENDORS 176$ 177$ DISP_VEND_DONE: 178$ 179$ OPEN/READ 0 SYS$COMMAND 180$ READ/END=ERR_EXIT/PROMPT="''ESC'[23;0H''ESC'[0KEnter your CD drive's manufacturer number (or press ^Z to exit): " 0 DCHOICE 181$ CLOSE 0 182$ IF DCHOICE .LT. 1 .OR. DCHOICE .GT. DCNT-1 THEN GOTO DISP_VEND_DONE 183$ 184$ FILE = VEND'DCHOICE' 185$ OPEN/READ 1 [.LIBDI_D.CFGTBL]'FILE'. 186$! 187$! Determine available drive models of selected vendor 188$! 189$ DRCNT = 0 190$ READDEVFIL: 191$ READ/ERROR=ENDREADDEV 1 LINE 192$ STR = F$EDIT(F$EXTRACT(0,1,LINE),"COLLAPSE") 193$ IF STR .EQS. "#" .OR. STR .EQS. "" THEN GOTO READDEVFIL 194$ DRCNT = DRCNT + 1 195$ DRIVE'DRCNT' = F$ELEMENT(0,":",LINE) 196$ GOTO READDEVFIL 197$ ENDREADDEV: 198$ CLOSE 1 199$ VCNT = 0 200$ IF DRCNT .EQ. 0 201$ THEN 202$ WRITE SYS$OUTPUT "''CR'''LF' %DRVCFG-F-NODRVPAR, No ''vendstr' drives found!" 203$ GOTO ERR_EXIT 204$ ENDIF 205$! 206$! Display model name menue 207$! 208$ MODELMANU = VENDS'DCHOICE' 209$ WRITE SYS$OUTPUT "''ESC'[0;0H''ESC'[2J" 210$ WRITE SYS$OUTPUT " ''MODELMANU' Drive Model Menu" 211$ WRITE SYS$OUTPUT " -----------------------------------------------------------------------------" 212$ RCNT = 3 213$ LCNT = 4 214$ FILL = " " 215$ DISP_MODELS: 216$ IF LCNT .EQ. 21 217$ THEN 218$ LCNT = 4 219$ RCNT = RCNT + 18 220$ ENDIF 221$ VCNT = VCNT + 1 222$ IF VCNT .GT. DRCNT THEN GOTO DISP_MODEL_DONE 223$ LCNT = LCNT + 1 224$ IF VCNT .GE. 10 THEN FILL = "" 225$ MODELSTR = DRIVE'VCNT' 226$ WRITE SYS$OUTPUT "''ESC'[''LCNT';''RCNT'H''FILL'''VCNT') ''MODELSTR'" 227$ GOTO DISP_MODELS 228$ 229$ DISP_MODEL_DONE: 230$ 231$ OPEN/READ 2 SYS$COMMAND 232$ READ/END=ERR_EXIT/PROMPT="''ESC'[23;3H''ESC'[0KEnter your CD drive's model number (or press ^Z to exit): " 2 MCHOICE 233$ CLOSE 2 234$ IF MCHOICE .LT. 1 .OR. MCHOICE .GT. VCNT-1 THEN GOTO DISP_MODEL_DONE 235$ MODEL = DRIVE'MCHOICE' 236$! 237$! Setup params to be updated in DEVICE.CFG 238$! 239$ OPEN/READ 3 [.LIBDI_D.CFGTBL]'FILE'. 240$ READDEVCAP: 241$ READ/ERROR=ENDREADCAP 3 LINE 242$ STR = F$EDIT(F$EXTRACT(0,1,LINE),"COLLAPSE") 243$ IF STR .EQS. "#" .OR. STR .EQS. "" THEN GOTO READDEVCAP 244$ DRIVE = F$ELEMENT(0,":",LINE) 245$ IF DRIVE .EQS. MODEL THEN GOTO ENDREADCAP 246$ GOTO READDEVCAP 247$ ENDREADCAP: 248$ CLOSE 3 249$ 250$ WRITE SYS$OUTPUT "''CR'''LF' %DRVCFG-I-CHKCHG, Checking required modifications to DEVICE.CFG" 251$ 252$ mode = F$ELEMENT(1,":",LINE) 253$! 254$! For non-SCSI drives (where the cfgtbl mode field is 0), the 255$! deviceInterfaceMethod parameter is set in a platform-dependent manner 256$! (See the comments of this parameter in device.cfg). For VMS, the 257$! deviceInterfaceMethod should be set to 0 even in this case because 258$! non-SCSI (IDE) drives are supported via SCSI-emulation in VMS's DQdriver. 259$! 260$ OPEN/WRITE 101 CHANGE.1 261$ WRITE 101 "deviceInterfaceMethod: 0" 262$ CLOSE 101 263$ OPEN/WRITE 201 MOD1.EDT 264$ WRITE 201 "FIND 'deviceInterfaceMethod:'" 265$ WRITE 201 "DELETE" 266$ WRITE 201 "INCLUDE CHANGE.1" 267$ WRITE 201 "EXIT" 268$ CLOSE 201 269$ 270$ vcode = F$ELEMENT(2,":",LINE) 271$ OPEN/WRITE 102 CHANGE.2 272$ WRITE 102 "driveVendorCode: ''vcode'" 273$ CLOSE 102 274$ OPEN/WRITE 202 MOD2.EDT 275$ WRITE 202 "FIND 'driveVendorCode:'" 276$ WRITE 202 "DELETE" 277$ WRITE 202 "INCLUDE CHANGE.2" 278$ WRITE 202 "EXIT" 279$ CLOSE 202 280$ 281$ pmsf = F$ELEMENT(3,":",LINE) 282$ IF pmsf 283$ THEN 284$ pmsf = "True" 285$ ELSE 286$ pmsf = "False" 287$ ENDIF 288$ OPEN/WRITE 103 CHANGE.3 289$ WRITE 103 "playAudioMSFSupport: ''pmsf'" 290$ CLOSE 103 291$ OPEN/WRITE 203 MOD3.EDT 292$ WRITE 203 "FIND 'playAudioMSFSupport:'" 293$ WRITE 203 "DELETE" 294$ WRITE 203 "INCLUDE CHANGE.3" 295$ WRITE 203 "EXIT" 296$ CLOSE 203 297$ 298$ p12 = F$ELEMENT(4,":",LINE) 299$ IF p12 300$ THEN 301$ p12 = "True" 302$ ELSE 303$ p12 = "False" 304$ ENDIF 305$ OPEN/WRITE 104 CHANGE.4 306$ WRITE 104 "playAudio12Support: ''p12'" 307$ CLOSE 104 308$ OPEN/WRITE 204 MOD4.EDT 309$ WRITE 204 "FIND 'playAudio12Support:'" 310$ WRITE 204 "DELETE" 311$ WRITE 204 "INCLUDE CHANGE.4" 312$ WRITE 204 "EXIT" 313$ CLOSE 204 314$ 315$ p10 = F$ELEMENT(5,":",LINE) 316$ IF p10 317$ THEN 318$ p10 = "True" 319$ ELSE 320$ p10 = "False" 321$ ENDIF 322$ OPEN/WRITE 105 CHANGE.5 323$ WRITE 105 "playAudio10Support: ''p10'" 324$ CLOSE 105 325$ OPEN/WRITE 205 MOD5.EDT 326$ WRITE 205 "FIND 'playAudio10Support:'" 327$ WRITE 205 "DELETE" 328$ WRITE 205 "INCLUDE CHANGE.5" 329$ WRITE 205 "EXIT" 330$ CLOSE 205 331$ 332$ pti = F$ELEMENT(6,":",LINE) 333$ IF pti 334$ THEN 335$ pti = "True" 336$ ELSE 337$ pti = "False" 338$ ENDIF 339$ OPEN/WRITE 106 CHANGE.6 340$ WRITE 106 "playAudioTISupport: ''pti'" 341$ CLOSE 106 342$ OPEN/WRITE 206 MOD6.EDT 343$ WRITE 206 "FIND 'playAudioTISupport:'" 344$ WRITE 206 "DELETE" 345$ WRITE 206 "INCLUDE CHANGE.6" 346$ WRITE 206 "EXIT" 347$ CLOSE 206 348$ 349$ ld = F$ELEMENT(7,":",LINE) 350$ IF ld 351$ THEN 352$ ld = "True" 353$ ELSE 354$ ld = "False" 355$ ENDIF 356$ OPEN/WRITE 107 CHANGE.7 357$ WRITE 107 "loadSupport: ''ld'" 358$ CLOSE 107 359$ OPEN/WRITE 207 MOD7.EDT 360$ WRITE 207 "FIND 'loadSupport:'" 361$ WRITE 207 "DELETE" 362$ WRITE 207 "INCLUDE CHANGE.7" 363$ WRITE 207 "EXIT" 364$ CLOSE 207 365$ 366$ ej = F$ELEMENT(8,":",LINE) 367$ IF ej 368$ THEN 369$ ej = "True" 370$ ELSE 371$ ej = "False" 372$ ENDIF 373$ OPEN/WRITE 108 CHANGE.8 374$ WRITE 108 "ejectSupport: ''ej'" 375$ CLOSE 108 376$ OPEN/WRITE 208 MOD8.EDT 377$ WRITE 208 "FIND 'ejectSupport:'" 378$ WRITE 208 "DELETE" 379$ WRITE 208 "INCLUDE CHANGE.8" 380$ WRITE 208 "EXIT" 381$ CLOSE 208 382$ 383$ mdbd = F$ELEMENT(9,":",LINE) 384$ IF mdbd 385$ THEN 386$ mdbd = "True" 387$ ELSE 388$ mdbd = "False" 389$ ENDIF 390$ OPEN/WRITE 109 CHANGE.9 391$ WRITE 109 "modeSenseSetDBD: ''mdbd'" 392$ CLOSE 109 393$ OPEN/WRITE 209 MOD9.EDT 394$ WRITE 209 "FIND 'modeSenseSetDBD:'" 395$ WRITE 209 "DELETE" 396$ WRITE 209 "INCLUDE CHANGE.9" 397$ WRITE 209 "EXIT" 398$ CLOSE 209 399$ 400$ m10 = F$ELEMENT(10,":",LINE) 401$ IF m10 402$ THEN 403$ m10 = "True" 404$ ELSE 405$ m10 = "False" 406$ ENDIF 407$ OPEN/WRITE 110 CHANGE.10 408$ WRITE 110 "modeSenseUse10Byte: ''m10'" 409$ CLOSE 110 410$ OPEN/WRITE 210 MOD10.EDT 411$ WRITE 210 "FIND 'modeSenseUse10Byte:'" 412$ WRITE 210 "DELETE" 413$ WRITE 210 "INCLUDE CHANGE.10" 414$ WRITE 210 "EXIT" 415$ CLOSE 210 416$ 417$ vctl = F$ELEMENT(11,":",LINE) 418$ VOLCTL = "False" 419$ IF vctl .EQ. 1 .OR. vctl .EQ. 3 .OR. vctl .EQ. 5 .OR. vctl .EQ. 7 THEN VOLCTL = "True" 420$ OPEN/WRITE 111A CHANGE.11A 421$ WRITE 111A "volumeControlSupport: ''VOLCTL'" 422$ CLOSE 111A 423$ OPEN/WRITE 211A MOD11A.EDT 424$ WRITE 211A "FIND 'volumeControlSupport:'" 425$ WRITE 211A "DELETE" 426$ WRITE 211A "INCLUDE CHANGE.11A" 427$ WRITE 211A "EXIT" 428$ CLOSE 211A 429$ 430$ BALCTL = "False" 431$ IF vctl .EQ. 2 .OR. vctl .EQ. 3 .OR. vctl .EQ. 6 .OR. vctl .EQ. 7 THEN BALCTL = "True" 432$ OPEN/WRITE 111B CHANGE.11B 433$ WRITE 111B "balanceControlSupport: ''BALCTL'" 434$ CLOSE 111B 435$ OPEN/WRITE 211B MOD11B.EDT 436$ WRITE 211B "FIND 'balanceControlSupport:'" 437$ WRITE 211B "DELETE" 438$ WRITE 211B "INCLUDE CHANGE.11B" 439$ WRITE 211B "EXIT" 440$ CLOSE 211B 441$ 442$ ROUCTL = "False" 443$ IF vctl .EQ. 4 .OR. vctl .EQ. 5 .OR. vctl .EQ. 6 .OR. vctl .EQ. 7 THEN ROUCTL = "True" 444$ OPEN/WRITE 111C CHANGE.11C 445$ WRITE 111C "channelRouteSupport: ''ROUCTL'" 446$ CLOSE 111C 447$ OPEN/WRITE 211C MOD11C.EDT 448$ WRITE 211C "FIND 'channelRouteSupport:'" 449$ WRITE 211C "DELETE" 450$ WRITE 211C "INCLUDE CHANGE.11C" 451$ WRITE 211C "EXIT" 452$ CLOSE 211C 453$ 454$ vbase = F$ELEMENT(12,":",LINE) 455$ OPEN/WRITE 112 CHANGE.12 456$ WRITE 112 "scsiAudioVolumeBase: ''vbase'" 457$ CLOSE 112 458$ OPEN/WRITE 212 MOD12.EDT 459$ WRITE 212 "FIND 'scsiAudioVolumeBase:'" 460$ WRITE 212 "DELETE" 461$ WRITE 212 "INCLUDE CHANGE.12" 462$ WRITE 212 "EXIT" 463$ CLOSE 212 464$ 465$ vtaper = F$ELEMENT(13,":",LINE) 466$ OPEN/WRITE 113 CHANGE.13 467$ WRITE 113 "volumeControlTaper: ''vtaper'" 468$ CLOSE 113 469$ OPEN/WRITE 213 MOD13.EDT 470$ WRITE 213 "FIND 'volumeControlTaper:'" 471$ WRITE 213 "DELETE" 472$ WRITE 213 "INCLUDE CHANGE.13" 473$ WRITE 213 "EXIT" 474$ CLOSE 213 475$ 476$ paus = F$ELEMENT(14,":",LINE) 477$ IF paus 478$ THEN 479$ paus = "True" 480$ ELSE 481$ paus = "False" 482$ ENDIF 483$ OPEN/WRITE 114 CHANGE.14 484$ WRITE 114 "pauseResumeSupport: ''paus'" 485$ CLOSE 114 486$ OPEN/WRITE 214 MOD14.EDT 487$ WRITE 214 "FIND 'pauseResumeSupport:'" 488$ WRITE 214 "DELETE" 489$ WRITE 214 "INCLUDE CHANGE.14" 490$ WRITE 214 "EXIT" 491$ CLOSE 214 492$ 493$ strict = F$ELEMENT(15,":",LINE) 494$ IF strict 495$ THEN 496$ strict = "True" 497$ ELSE 498$ strict = "False" 499$ ENDIF 500$ OPEN/WRITE 115 CHANGE.15 501$ WRITE 115 "strictPauseResume: ''strict'" 502$ CLOSE 115 503$ OPEN/WRITE 215 MOD15.EDT 504$ WRITE 215 "FIND 'strictPauseResume:'" 505$ WRITE 215 "DELETE" 506$ WRITE 215 "INCLUDE CHANGE.15" 507$ WRITE 215 "EXIT" 508$ CLOSE 215 509$ 510$ ppp = F$ELEMENT(16,":",LINE) 511$ IF ppp 512$ THEN 513$ ppp = "True" 514$ ELSE 515$ ppp = "False" 516$ ENDIF 517$ OPEN/WRITE 116 CHANGE.16 518$ WRITE 116 "playPausePlay: ''ppp'" 519$ CLOSE 116 520$ OPEN/WRITE 216 MOD16.EDT 521$ WRITE 216 "FIND 'playPausePlay:'" 522$ WRITE 216 "DELETE" 523$ WRITE 216 "INCLUDE CHANGE.16" 524$ WRITE 216 "EXIT" 525$ CLOSE 216 526$ 527$ lk = F$ELEMENT(17,":",LINE) 528$ IF lk 529$ THEN 530$ lk = "True" 531$ ELSE 532$ lk = "False" 533$ ENDIF 534$ OPEN/WRITE 117 CHANGE.17 535$ WRITE 117 "caddyLockSupport: ''lk'" 536$ CLOSE 117 537$ OPEN/WRITE 217 MOD17.EDT 538$ WRITE 217 "FIND 'caddyLockSupport:'" 539$ WRITE 217 "DELETE" 540$ WRITE 217 "INCLUDE CHANGE.17" 541$ WRITE 217 "EXIT" 542$ CLOSE 217 543$ 544$ cp = F$ELEMENT(18,":",LINE) 545$ IF cp 546$ THEN 547$ cp = "True" 548$ ELSE 549$ cp = "False" 550$ ENDIF 551$ OPEN/WRITE 118 CHANGE.18 552$ WRITE 118 "curposFormat: ''cp'" 553$ CLOSE 118 554$ OPEN/WRITE 218 MOD18.EDT 555$ WRITE 218 "FIND 'curposFormat:'" 556$ WRITE 218 "DELETE" 557$ WRITE 218 "INCLUDE CHANGE.18" 558$ WRITE 218 "EXIT" 559$ CLOSE 218 560$ 561$ tur = F$ELEMENT(19,":",LINE) 562$ IF tur 563$ THEN 564$ tur = "True" 565$ ELSE 566$ tur = "False" 567$ ENDIF 568$ OPEN/WRITE 119 CHANGE.19 569$ WRITE 119 "noTURWhenPlaying: ''tur'" 570$ CLOSE 119 571$ OPEN/WRITE 219 MOD19.EDT 572$ WRITE 219 "FIND 'noTURWhenPlaying:'" 573$ WRITE 219 "DELETE" 574$ WRITE 219 "INCLUDE CHANGE.19" 575$ WRITE 219 "EXIT" 576$ CLOSE 219 577$ 578$ chg = F$ELEMENT(20,":",LINE) 579$ OPEN/WRITE 120 CHANGE.20 580$ WRITE 120 "mediumChangeMethod: ''chg'" 581$ CLOSE 120 582$ OPEN/WRITE 220 MOD20.EDT 583$ WRITE 220 "FIND 'mediumChangeMethod:'" 584$ WRITE 220 "DELETE" 585$ WRITE 220 "INCLUDE CHANGE.20" 586$ WRITE 220 "EXIT" 587$ CLOSE 220 588$ 589$ ndisc = F$ELEMENT(21,":",LINE) 590$ OPEN/WRITE 121 CHANGE.21 591$ WRITE 121 "numDiscs: ''ndisc'" 592$ CLOSE 121 593$ OPEN/WRITE 221 MOD21.EDT 594$ WRITE 221 "FIND 'numDiscs:'" 595$ WRITE 221 "DELETE" 596$ WRITE 221 "INCLUDE CHANGE.21" 597$ WRITE 221 "EXIT" 598$ CLOSE 221 599$ 600$ sp = F$ELEMENT(22,":",LINE) 601$ OPEN/WRITE 122 CHANGE.22 602$ WRITE 122 "spinUpInterval: ''sp'" 603$ CLOSE 122 604$ OPEN/WRITE 222 MOD22.EDT 605$ WRITE 222 "FIND 'spinUpInterval:'" 606$ WRITE 222 "DELETE" 607$ WRITE 222 "INCLUDE CHANGE.22" 608$ WRITE 222 "EXIT" 609$ CLOSE 222 610$ 611$ msel = F$ELEMENT(23,":",LINE) 612$ IF msel 613$ THEN 614$ msel = "True" 615$ ELSE 616$ msel = "False" 617$ ENDIF 618$ OPEN/WRITE 123 CHANGE.23 619$ WRITE 123 "cddaScsiModeSelect: ''msel'" 620$ CLOSE 123 621$ OPEN/WRITE 223 MOD23.EDT 622$ WRITE 223 "FIND 'cddaScsiModeSelect:'" 623$ WRITE 223 "DELETE" 624$ WRITE 223 "INCLUDE CHANGE.23" 625$ WRITE 223 "EXIT" 626$ CLOSE 223 627$ 628$ dens = F$ELEMENT(24,":",LINE) 629$ OPEN/WRITE 124 CHANGE.24 630$ WRITE 124 "cddaScsiDensity: ''dens'" 631$ CLOSE 124 632$ OPEN/WRITE 224 MOD24.EDT 633$ WRITE 224 "FIND 'cddaScsiDensity:'" 634$ WRITE 224 "DELETE" 635$ WRITE 224 "INCLUDE CHANGE.24" 636$ WRITE 224 "EXIT" 637$ CLOSE 224 638$ 639$ rdcmd = F$ELEMENT(25,":",LINE) 640$ OPEN/WRITE 125 CHANGE.25 641$ WRITE 125 "cddaScsiReadCommand: ''rdcmd'" 642$ CLOSE 125 643$ OPEN/WRITE 225 MOD25.EDT 644$ WRITE 225 "FIND 'cddaScsiReadCommand:'" 645$ WRITE 225 "DELETE" 646$ WRITE 225 "INCLUDE CHANGE.25" 647$ WRITE 225 "EXIT" 648$ CLOSE 225 649$ 650$ be = F$ELEMENT(26,":",LINE) 651$ IF be 652$ THEN 653$ be = "True" 654$ ELSE 655$ be = "False" 656$ ENDIF 657$ OPEN/WRITE 126 CHANGE.26 658$ WRITE 126 "cddaDataBigEndian: ''be'" 659$ CLOSE 126 660$ OPEN/WRITE 226 MOD26.EDT 661$ WRITE 226 "FIND 'cddaDataBigEndian:'" 662$ WRITE 226 "DELETE" 663$ WRITE 226 "INCLUDE CHANGE.26" 664$ WRITE 226 "EXIT" 665$ CLOSE 226 666$! 667$! OpenVMS CDDA defaults 668$! 669$ OPEN/WRITE 1000 CHANGE.1000 670$ WRITE 1000 "cddaMethod: 2" 671$ CLOSE 1000 672$ OPEN/WRITE 2000 MOD2000.EDT 673$ WRITE 2000 "FIND 'cddaMethod:'" 674$ WRITE 2000 "DELETE" 675$ WRITE 2000 "INCLUDE CHANGE.1000" 676$ WRITE 2000 "EXIT" 677$ CLOSE 2000 678$ 679$ OPEN/WRITE 1001 CHANGE.1001 680$ WRITE 1001 "cddaReadMethod: 1" 681$ CLOSE 1001 682$ OPEN/WRITE 2001 MOD2001.EDT 683$ WRITE 2001 "FIND 'cddaReadMethod:'" 684$ WRITE 2001 "DELETE" 685$ WRITE 2001 "INCLUDE CHANGE.1001" 686$ WRITE 2001 "EXIT" 687$ CLOSE 2001 688$ 689$ OPEN/WRITE 1002 CHANGE.1002 690$ WRITE 1002 "cddaWriteMethod: 7" 691$ CLOSE 1002 692$ OPEN/WRITE 2002 MOD2002.EDT 693$ WRITE 2002 "FIND 'cddaWriteMethod:'" 694$ WRITE 2002 "DELETE" 695$ WRITE 2002 "INCLUDE CHANGE.1002" 696$ WRITE 2002 "EXIT" 697$ CLOSE 2002 698$ 699$! 700$! Display some informational messages and apply changes to DEVICE.CFG 701$! 702$ 703$ WRITE SYS$OUTPUT " %DRVCFG-I-COPY, Saving default DEVICE.CFG as DEVICE_ORIG.CFG" 704$ COPYY DEVICE.CFG DEVICE_ORIG.CFG 705$ WRITE SYS$OUTPUT " %DRVCFG-I-APPCHG, Applying changes to DEVICE.CFG" 706$ DEFINE/NOLOG SYS$INPUT SYS$COMMAND 707$ DEFINE/NOLOG SYS$OUTPUT NLA0: 708$ EDITTT/EDT/COMMAND=MOD1.EDT DEVICE.CFG 709$ EDITTT/EDT/COMMAND=MOD2.EDT DEVICE.CFG 710$ EDITTT/EDT/COMMAND=MOD3.EDT DEVICE.CFG 711$ EDITTT/EDT/COMMAND=MOD4.EDT DEVICE.CFG 712$ EDITTT/EDT/COMMAND=MOD5.EDT DEVICE.CFG 713$ EDITTT/EDT/COMMAND=MOD6.EDT DEVICE.CFG 714$ EDITTT/EDT/COMMAND=MOD7.EDT DEVICE.CFG 715$ EDITTT/EDT/COMMAND=MOD8.EDT DEVICE.CFG 716$ EDITTT/EDT/COMMAND=MOD9.EDT DEVICE.CFG 717$ EDITTT/EDT/COMMAND=MOD10.EDT DEVICE.CFG 718$ EDITTT/EDT/COMMAND=MOD11A.EDT DEVICE.CFG 719$ EDITTT/EDT/COMMAND=MOD11B.EDT DEVICE.CFG 720$ EDITTT/EDT/COMMAND=MOD11C.EDT DEVICE.CFG 721$ EDITTT/EDT/COMMAND=MOD12.EDT DEVICE.CFG 722$ EDITTT/EDT/COMMAND=MOD13.EDT DEVICE.CFG 723$ EDITTT/EDT/COMMAND=MOD14.EDT DEVICE.CFG 724$ EDITTT/EDT/COMMAND=MOD15.EDT DEVICE.CFG 725$ EDITTT/EDT/COMMAND=MOD16.EDT DEVICE.CFG 726$ EDITTT/EDT/COMMAND=MOD17.EDT DEVICE.CFG 727$ EDITTT/EDT/COMMAND=MOD18.EDT DEVICE.CFG 728$ EDITTT/EDT/COMMAND=MOD19.EDT DEVICE.CFG 729$ EDITTT/EDT/COMMAND=MOD20.EDT DEVICE.CFG 730$ EDITTT/EDT/COMMAND=MOD21.EDT DEVICE.CFG 731$ EDITTT/EDT/COMMAND=MOD22.EDT DEVICE.CFG 732$ EDITTT/EDT/COMMAND=MOD23.EDT DEVICE.CFG 733$ EDITTT/EDT/COMMAND=MOD24.EDT DEVICE.CFG 734$ EDITTT/EDT/COMMAND=MOD25.EDT DEVICE.CFG 735$ EDITTT/EDT/COMMAND=MOD26.EDT DEVICE.CFG 736$ 737$ EDITTT/EDT/COMMAND=MOD2000.EDT DEVICE.CFG 738$ EDITTT/EDT/COMMAND=MOD2001.EDT DEVICE.CFG 739$ EDITTT/EDT/COMMAND=MOD2002.EDT DEVICE.CFG 740$ 741$ DEASSIGN SYS$OUTPUT 742$ DEASSIGN SYS$INPUT 743$ WRITE SYS$OUTPUT " %DRVCFG-I-CLNUP, Cleaning up temporary files..." 744$ DELETE/NOCONFIRM MOD*.EDT;*,CHANGE.*;* 745$ PURGE DEVICE.CFG 746$ RENAME DEVICE.CFG DEVICE.CFG;1 747$ 748$ WRITE SYS$OUTPUT "''CR'''LF' %DRVCFG-S-SUCUPD, DEVICE.CFG successfully updated." 749$ GOTO EXIT 750$ 751$ ERR_EXIT: 752$ WRITE SYS$OUTPUT "''CR'''LF' Automatic configuration of DEVICE.CFG _not_ done.''CR'''LF'" 753$ WRITE SYS$OUTPUT " You need to either re-run this procedure or edit your DEVICE.CFG file " 754$ WRITE SYS$OUTPUT " manually to make use of all your CD drive's capabilities.''CR'''LF'" 755$ IF P2 .NES. "NO_ENTRY_TEXT" THEN GOTO EXIT 756$ INQUIRE/NOPUNCTATION DUMMY "''ESC'[28C''ESC'[7mPress Return to continue''ESC'[0m" 757$ 758$ EXIT: 759$ EXIT 760$ 761