home *** CD-ROM | disk | FTP | other *** search
/ OS/2 Shareware BBS: 33 VDrivers / 33-VDrivers.zip / s3_20003.zip / SETUP.CMD < prev    next >
OS/2 REXX Batch file  |  2001-03-05  |  12KB  |  345 lines

  1. /**/
  2. '@echo off'
  3. call rxfuncadd sysloadfuncs, rexxutil, sysloadfuncs
  4. call sysloadfuncs
  5. /* CID ERROR CODES */
  6. error = 65024
  7. ERR_USAGE       = 5632
  8. ERR_CHIP        = 5636
  9. ERR_OS2VER      = 5636
  10. ERR_UNPACK      = 5636
  11. ERR_COMPAT      = 5636
  12. env = 'OS2ENVIRONMENT'
  13. src = ''
  14. trg = ''
  15. parse upper arg args
  16. cid = parsearg('U')
  17. call getsrc
  18. if args <> '' then signal usage
  19. call gettrg
  20. /* space-seperated S3 chip list -- must match with svgadefs.h */
  21. chips = '801/805 928 911 864 964 868 968 Trio32 Trio64 Trio64V+'
  22. chips = chips 'Aurora64V+ ViRGE ViRGE/vX Trio64UV+ Trio64V+Compatible Trio64V2'
  23. chips = chips 'Yosemite ViRGE/DX-GX ViRGE/GX2 ViRGE+COMPATBLE M3 M5 ViRGE/GX2'
  24. chips = chips 'Trio3D M5+ Savage_family SavageMX/IX Trio3D/2X'
  25. pipenull = ' 1>nul 2>&1'
  26. w = 70
  27. log = trg'\os2\install\display.log'
  28. x = linein(src||'BUILD.LVL')
  29. rc = lineout( src||'BUILD.LVL' )
  30. rc = lineout(log, copies('=',w))
  31. rc = lineout(log, x)
  32. call SysCls
  33. say ''
  34. say copies('*',w)
  35. say center('S3 ViRGE,ViRGE/VX,ViRGE/DX,ViRGE/GX,ViRGE/GX2,Trio3D/2X',w)
  36. say center('âfâBâXâvâîâCüEâhâëâCâoü[üEâCâôâXâgü[âï',w)
  37. say center('âoü[âWâçâô 2.00.03',w)
  38. say ''
  39. say center('âCâôâXâgü[âïé╠æOé╔ READMEJ.TXT âtâ@âCâïé╠', w)
  40. say center('ôαùeé≡é¿ô╟é▌é¡é╛é│éó', w)
  41. say ''
  42. call usage1
  43. say ''
  44. say center('âCâôâXâgü[âïî│âhâëâCâu 'src,w)
  45. say center('âCâôâXâgü[âïɵâhâëâCâu 'trg '['word(trginfo,4)']',w)
  46. if cid <> '' then do
  47.         say ''
  48.         say 'âåü[âUü[üEâIâvâVâçâô:'
  49.         call saylog '   Ä⌐ô«âCâôâXâgü[âï'
  50. end
  51. say copies('*',w)
  52. say ''
  53. u2spec = SysSearchPath('PATH', 'UNPACK2.EXE')
  54. if (u2spec = '') then do
  55.         call lineout log, 'âVâXâeâÇé╔ UNPACK2.EXE é≡Æ╟ë┴é╡é─é¡é╛é│éó'
  56.         'unpack' src'unpack.pk2' trg pipenull
  57. end
  58. call unpack 'prereq.pk2' trg||'\os2\dll\portio.dll'
  59. call unpack 'prereq.pk2' trg||'\os2\install\s3chipid.exe'
  60. ''trg||'\os2\install\s3chipid 2 0'
  61. chipid = rc
  62. rc = SysFileDelete( trg||'\os2\install\s3chipid.exe' )
  63. rc = SysFileDelete( trg||'\os2\dll\portio.dll' )
  64. if chipid = 0 then do
  65.         error = ERR_CHIP
  66.         call saylog 'âGâëü[: òsû╛é╚ârâfâIüEâAâ_âvâ^ü[é¬îƒÅoé│éΩé▄é╡é╜'
  67.         signal readme
  68. end
  69. else if chipid < -1 then do
  70.         error = ERR_COMPAT
  71.         call saylog 'âGâëü[: ârâfâI BIOS é╔î▌è╖ɽé¬éáéΦé▄é╣é±'
  72.         signal readme
  73. end
  74. else if chipid <> -1 then do
  75.         chiptext = 'S3 ' || word( chips, chipid )
  76.         tempid = chipid
  77. end
  78. else do
  79.         chiptext = 'IBM Mach 868'
  80.         tempid = 6
  81. end
  82. call saylog 'é▒é╠âVâXâeâÇé╠ârâfâIüEâ`âbâvé═ ['tempid'] ' || chiptext || 'é┼é╖'
  83. say ''
  84. if chipid <> -1 then x = wordpos(chipid, '12 13 18 19 23 28')
  85. else x = 1
  86. if x=0 then do
  87.         error = ERR_CHIP
  88.         call saylog 'âGâëü[: é▒é╠ârâfâIüEâ`âbâvé═âTâ|ü[âgé╡é─éóé▄é╣é±'
  89.         say 'É│é╡éóâhâëâCâoü[é≡Ägùpé╡é─é¡é╛é│éó'
  90.         signal readme
  91. end
  92. os2ver = SysOS2Ver() /* returns 2.30 for Warp */
  93. if (os2ver > 2.4) then do
  94.         call saylog 'îxìÉ: OS/2 é╠ÉVâoü[âWâçâôé¬îƒÅoé│éΩé▄é╡é╜'
  95.         SAY ''
  96.         SAY 'é▒é╠âfâBâXâvâîâCüEâhâëâCâoü[é═'
  97.         SAY 'ô·û{îΩ OS/2 Warp âoü[âWâçâô 4.00'
  98.         SAY 'é▄é╜é═ 2.11 Åπé┼ô«ì∞é╡é▄é╖üB'
  99.         SAY 'î╗ì▌é╠ OS/2 é╔âCâôâXâgü[âïé╖éΘé╞üAÉ│é╡é¡'
  100.         SAY 'ô«ì∞é╡é╚éóë┬ö\ɽé¬éáéΦé▄é╖üB'
  101.         SAY 'âCâôâXâgü[âïé≡ÅIù╣é╡é─üAÉ│é╡éóâoü[âWâçâôé╠'
  102.         SAY 'âfâBâXâvâîâCüEâhâëâCâoü[é≡ôⁿÄΦé╡é─é¡é╛é│éóüB'
  103.         call prompt
  104. end
  105. if (os2ver < 2.10) then do
  106.         error = ERR_OS2VER
  107.         call saylog 'âGâëü[: âTâ|ü[âgé╡é─éóé╚éó OS/2 é╠âoü[âWâçâôé┼é╖'
  108.         signal readme
  109. end
  110. currentdriver = sysini(, 'PM_DISPLAYDRIVERS', 'CURRENTDRIVER')
  111. If \pos('IBMVGA32',currentdriver) then do
  112.         call saylog 'îxìÉ: î╗ì▌üAâCâôâXâgü[âïÄ₧é╠âVâXâeâÇé╠ârâfâIüEâéü[âhé¬'
  113.         say "VGA é┼é═éáéΦé▄é╣é±üB"
  114.         say 'âfâBâXâvâîâCüEâhâëâCâoü[é≡É│é╡é¡âCâôâXâgü[âïé╖éΘé╜é▀üA'
  115.         say 'âCâôâXâgü[âïÄ₧é╠âVâXâeâÇ'
  116.         say 'é╠ârâfâIüEâéü[âhé≡ VGA é╔é╖éΘòKùvé¬éáéΦé▄é╖üB'
  117.         say 'âhâëâCâoü[üEâfâBâXâPâbâgôαé╠ READMEJ.TXT âtâ@âCâïé╠ôαùeé≡'
  118.         say 'ÄQÅ╞é╡é─üAâVâXâeâÇé╠ârâfâIüEâéü[âhé≡ VGA é╔É▌ÆΦé╡é─é¡é╛é│éóüB'
  119.         call prompt
  120. end
  121. if cid = '' then do
  122.         say "âLü[é≡é╟éΩé⌐ëƒé╖é╞æ▒ìsüA'q' âLü[é┼ÆåÄ~"
  123.         key = SysGetKey('NOECHO')
  124.         parse upper var key key
  125.         if key = 'Q' then signal readme
  126. end
  127. prefix = 'WIN_RES_S3_'
  128. count  = 20
  129. Do i = 0 to 20
  130.         appkey = prefix||i
  131.         result = sysini(, appkey, 'DELETE:')
  132. End
  133. rc=sysini( , 'PM_DISPLAYDRIVERS', 'RESOURCESIZE', 'DELETE:' )
  134. /*
  135. ** turn off readonly attributes -- fails dspinstl
  136. */
  137. rc = SysFileTree(trg||'\os2\*.*',stem,'S','***+*','***-*')
  138. /* Files required by dspinstl.exe */
  139. say ''
  140. call saylog 'âtâ@âCâïé╠òíÄ╩Æå'
  141. if os2ver = 2.11 then do
  142.         rc = SysFileTree(trg||'\os2\install\IBMJC05.DSC',stem,'F','*****','***-*')
  143.         if stem.0 = 1 then
  144.             'rename ' || trg || '\os2\install\IBMJC05.DSC IBMJC05.S3'
  145. end
  146. call unpack 'prereq.pk2' trg||'\os2\install\dspinstl.exe'
  147. call unpack 'prereq.pk2' trg||'\os2\install\dspinstl.hlp'
  148. call unpack 'prereq.pk2' trg||'\os2\install\dspinstl.ico'
  149. call unpack 'prereq.pk2' trg||'\os2\install\product.exe'
  150. call unpack 'prereq.pk2' trg||'\os2\dll\svga.dll'
  151. call unpack 'prereq.pk2' trg||'\os2\dll\inscfg32.dll'
  152. 'copy ' || src || 'install1.dsp ' || trg || '\' pipenull
  153. 'copy ' || src || 'install2.dsp ' || trg || '\' pipenull
  154. 'copy ' || src || 's3common.dsp ' || trg || '\' pipenull
  155. 'copy ' || src || 's3misc1.dsp  ' || trg || '\' pipenull
  156. mmbase = value('MMBASE',,env)
  157. if mmbase <> '' then do
  158.         if right(mmbase,1) = ';' then mmbase = left(mmbase, length(mmbase)-1)
  159.         if right(mmbase,1) = '\' then mmbase = left(mmbase, length(mmbase)-1)
  160.         if ( os2ver < 2.4 ) & ( os2ver > 2.11 )then do
  161.                 call unpack 'prereq.pk2' mmbase'\dll\dive.dll'
  162.                 call unpack 'prereq.pk2' mmbase'\dll\svsh.dll'
  163.                 call unpack 'prereq.pk2' mmbase'\r565lut8.lut'
  164.                 call unpack 'prereq.pk2' mmbase'\y644lut8.lut'
  165.                 call unpack 'prereq.pk2' mmbase'\yuv_lut8.lut'
  166.         end
  167. end
  168. rc=SysFileDelete( trg || '\os2\install\s3virge.dsc' )
  169. rc=SysFileDelete( trg || '\os2\install\s3triov.dsc' )
  170. rc=SysFileDelete( trg || '\os2\install\triov.dsc' )
  171. rc=SysFileDelete( trg || '\os2\install\triov1.dsc' )
  172. rc=SysFileDelete( trg || '\os2\install\pss3.dsc' )
  173. rc=SysFileDelete( trg || '\os2\install\s3.dsc' )
  174. rc=SysFileDelete( trg || '\os2\install\00s3.dsc' )
  175. rc=SysFileDelete( trg || '\os2\private.dif' )
  176. rc=SysFileDelete( trg || '\os2\video.cfg' )
  177. refreshtable = value('REFRESH_TABLE',,env)
  178. if refreshtable <> '' then rc=SysFileDelete( refreshtable )
  179. call unpack 'prereq.pk2' trg||'\os2\install\VIRGE.dsc'
  180. 'rename ' || trg || '\os2\install\VIRGE.dsc 00S3.DSC'
  181. call unpack 'prereq.pk2' trg||'\os2\svga.exe'
  182. call saylog "OS/2é╠âfâBâXâvâîâCüEâCâôâXâgü[âïüEâvâìâOâëâÇé≡èJÄné╡é─éóé▄é╖..."
  183. say ''
  184. /* set up parameters for dspinstl.exe */
  185. call stream log, 'c', 'close'
  186. dspinstl = trg||'\os2\install\dspinstl.exe'
  187. dspsrc = right( src, 1 )
  188. if (dspsrc <> '\') & (dspsrc <> '/') then
  189.         dspsrc = src
  190. else
  191.         dspsrc = left(src, length(src)-1) /* dspinstl: no trailing slash */
  192. dspopt = '/pk:other /sk:none /s:'dspsrc' /t:'trg
  193. if os2ver = 2.11 then do
  194.    dspdsc = '/pd:'src'S3MISC1.DSC'
  195. dcmd = dspinstl dspopt dspdsc cid
  196. rc = lineout(log, dcmd)
  197. ''dcmd
  198. end
  199. dspdsc = '/pd:'src'PVIRGE.DSC'
  200. dcmd = dspinstl dspopt dspdsc cid
  201. rc = lineout(log, dcmd)
  202. /* Dspinstl renames files on replace so delete files first. */
  203. result = sysini(, 'PM_INSTALL', 'WINOS2_LOCATION')
  204. winpath = ''
  205. if (result <> '') & (pos('ERROR',result) = 0) then do
  206.         winpath = space(left(result,length(result)-1),0)
  207.         rc = SysFileTree(winpath||'\*.*',stem,,'***+*','***-*')
  208.         rc = SysFileDelete( winpath || '\os2fs.exe' )
  209. end
  210. rc = SysFileDelete( trg || '\OS2\DDC.CMD' )
  211. ''dcmd
  212. if os2ver = 2.11 then 'copy ' || src || 'screen01.211 ' || trg || '\os2\screen01.sys'
  213. call saylog "...OS/2 âfâBâXâvâîâCüEâCâôâXâgü[âïüEâvâìâOâëâÇé¬ÅIù╣é╡é▄é╡é╜"
  214. say ''
  215. if winpath <> '' then do
  216.         setup='EXENAME='||winpath||'\os2fs.exe;NORENAME=YES'
  217.         rc = SysCreateObject("WPProgram", "S3 Windows âtâHâôâgüEâTâCâY", "<WP_CONFIG>",setup,'update')
  218.         If (rc <> 0)
  219.                 Then call lineout log,'Font Size Object Created'
  220.                 Else call lineout log,'Font Size Object Creation Failed in 'winpath' rc='rc
  221. end
  222. setup = 'EXENAME=' || trg || '\OS2\DDC.CMD;'
  223. setup = setup || 'ICONFILE=' || trg || '\OS2\DDC.ICO;'
  224. setup = setup || 'NOAUTOCLOSE=YES;MAXIMIZED=YES;NORENAME=YES'
  225. rc = SysCreateObject("WPProgram", "DDC âfâBâXâvâîâCüEâZâbâgâAâbâv", "<WP_CONFIG>",setup,'update')
  226. If (rc <> 0)
  227.         Then call lineout log, 'DDC âZâbâgâAâbâvüEâAâCâRâôé¬É╢ɼé│éΩé▄é╡é╜'
  228.         Else call lineout log, 'DDC âZâbâgâAâbâvüEâAâCâRâôé╠É╢ɼé╔Ä╕ösé╡é▄é╡é╜, rc='rc
  229. setting = 'WIN_BACKGROUND_INIT=1;'
  230. len = length(setting)
  231. x = SysIni(, 'WINOS2', 'PM_GlobalWindows31Settings')
  232. If (left(x, len) <> setting)then do
  233.         x = setting||x
  234.         SysIni(, 'WINOS2', 'PM_GlobalWindows31Settings', x)
  235. end
  236. if ((os2ver = 2.10) | (os2ver = 2.11)) then do
  237.         '' || trg || '\os2\install\vcfginst.exe'
  238.         rc = SysFileDelete( trg || '\os2\install\vcfginst.exe' )
  239. end
  240. '' || trg || '\os2\install\create.exe ' || trg || '\os2\install\syslevel.vid 2000 S320003 562107701 ViRGE,ViRGE/VX,ViRGE/DX,ViRGE/GX,ViRGE/GX2,Trio3D/2X Video Display Driver'
  241. rc = SysFileDelete( trg || '\os2\install\create.exe' )
  242. dspdsc = '/pd:' || trg || '\os2\install\00S3.DSC'
  243. dspopt = '/pk:other /sk:none /s:'dspsrc' /t:'trg
  244. if cid = '' then
  245.      dcmd = dspinstl dspopt dspdsc
  246. else
  247.      dcmd = dspinstl dspopt dspdsc '/res:640x480x256 /u'
  248. ''dcmd
  249. rc = SysFileDelete( trg || '\install1.dsp' )
  250. rc = SysFileDelete( trg || '\install2.dsp' )
  251. rc = SysFileDelete( trg || '\s3common.dsp' )
  252. rc = SysFileDelete( trg || '\s3misc1.dsp'  )
  253. 'start ' || trg || '\os2\install\product.exe ' || trg cid
  254. signal done
  255. getsrc:
  256. if cid = '' then do
  257.         parse source src
  258.         src = word(src,3)
  259. end
  260. else do
  261.         src = parsearg('S')
  262.         if src = '' then signal usage
  263.         src = right(src,length(src)-3)
  264.         temp = right(src, 1)
  265.         if (temp <> '\') & (temp <> '/') then src=src||'\'
  266. end
  267. src = FileSpec('DRIVE', src) || FileSpec('PATH', src)
  268. return
  269. gettrg:
  270. trg = SysSearchPath('PATH', 'PMSHELL.EXE')
  271. trg = FileSpec('drive',trg)
  272. trginfo = SysDriveInfo(trg)
  273. return
  274. parsearg:
  275. parse upper arg switch
  276. result = ''
  277. x = pos(switch, args)
  278. if x <> 0 then do
  279.         y = pos(' ', args, x)
  280.         if y = 0 then y = length(args)
  281.         result = space(substr(args, x-1, y-x+2),0)
  282.         args = delstr(args, x-1, y-x+2)
  283. end
  284. return result
  285. usage:
  286. call usage1
  287. error = ERR_USAGE
  288. signal readme
  289. saylog:
  290. parse arg msg
  291.         say msg
  292.         rc = lineout(log, msg)
  293. return
  294. prompt:
  295. if cid = '' then do
  296.         say ''
  297.         SAY 'âCâôâXâgü[âïé≡æ▒é»é▄é╖é⌐? (y or n)'
  298.         key = SysGetKey('NOECHO')
  299.         say ''
  300.         parse upper var key key
  301.         if key <> 'Y' then signal readme
  302. end
  303. return
  304. unpack:
  305. parse arg pack file
  306. pack = src||pack
  307. if file = '' then
  308.         'unpack2' pack trg pipenull
  309. else do
  310.         call SysFileTree file,stem,,'***+*','***-*'
  311.         filename = filespec("name", file)
  312.         filedrive = filespec("drive", file)
  313.         filepath = filedrive||filespec("path", file)
  314.         if filepath='' then filepath=trg
  315.         'unpack2 'pack filepath' /n:'filename pipenull
  316. end
  317. if (rc <> 0) then do
  318.         error = err_unpack
  319.         call saylog 'âGâëü[: 'pack' é⌐éτ 'file' é╠âAâôâpâbâNÆåé╔âGâëü[é¬ö¡É╢é╡é▄é╡é╜, rc = 'rc
  320.         signal readme
  321. end
  322. else rc = lineout(log, file' é≡âAâôâpâbâNé╡é▄é╡é╜')
  323. return
  324. readme:
  325. say ''
  326. say 'âfâBâXâvâîâCüEâhâëâCâoü[é╠âCâôâXâgü[âïé¬ÅIù╣é╡é▄é╡é╜üB'
  327. say 'âhâëâCâoü[üEâfâBâXâPâbâgé╠ READMEJ.TXT âtâ@âCâïé╔'
  328. say 'Æ╟ë┴Åεò±é¬ïLÅqé│éΩé─éóé▄é╖üB'
  329. say ''
  330. rc = lineout( log )
  331. exit error
  332. done:
  333. rc = lineout( log )
  334. if cid = '' then 'exit'
  335. exit error
  336. usage1:
  337. say 'SETUP.CMD: S3 âfâBâXâvâîâCüEâhâëâCâoü[üEâCâôâXâgü[âïüEâåü[âeâBâèâeâBü['
  338. say ''
  339. say 'Ägùpû@: SETUP {/U /S:SRCPATH}'
  340. say ''
  341. say 'Ä⌐ô«âCâôâXâgü[âï(CID)Ä₧é╔é═üA/U âpâëâüü[â^ü[é≡ÄwÆΦé╡é─é¡é╛é│éó'
  342. return
  343.  
  344.  
  345.