home *** CD-ROM | disk | FTP | other *** search
/ The Datafile PD-CD 5 / DATAFILE_PDCD5.iso / utilities / r / riscpcboot / !Boot / Utils / !BootConf / !runimage (.txt) < prev    next >
Encoding:
RISC OS BBC BASIC V Source  |  1991-02-01  |  42.0 KB  |  1,649 lines

  1.  Startup Configure
  2.  By James Allderidge
  3.  Version 1.00
  4. init_postwimp
  5. open_mainwin
  6. main_finish=
  7.  "Wimp_Poll",mask%,block% 
  8.  rcode%
  9.  rcode% 
  10.  !block% 
  11.  basewinh%
  12.      block%!256=mainwinh%
  13. -     
  14.  "Wimp_GetWindowState",,block%+256
  15. 2     block%!268=block%!4+block%!268-block%!260
  16. 6     block%!272=block%!8+block%!272-block%!264+108
  17.      block%!260=block%!4
  18.       block%!264=block%!8+108
  19.      block%!284=block%!28
  20. )     
  21.  "Wimp_OpenWindow",,block%+256
  22.      block%!28=mainwinh%
  23. %     
  24.  "Wimp_OpenWindow",,block%
  25.  selbwinh%
  26. %     
  27.  "Wimp_OpenWindow",,block%
  28.      !block%=selbwinh%
  29.      block%!256=sellwinh%
  30. -     
  31.  "Wimp_GetWindowState",,block%+256
  32. 5     block%!268=block%!4+block%!268-block%!260+16
  33. 6     block%!272=block%!8+block%!272-block%!264+192
  34.      block%!260=block%!4+16
  35.        block%!264=block%!8+192
  36.      block%!284=block%!28
  37. ")     
  38.  "Wimp_OpenWindow",,block%+256
  39.      block%!28=sellwinh%
  40. $%     
  41.  "Wimp_OpenWindow",,block%
  42. %        
  43. &%     
  44.  "Wimp_OpenWindow",,block%
  45. )$   
  46.  "Wimp_CloseWindow",,block%
  47.    main_finish=
  48.  6  :
  49. click(!block%,block%!4,block%!8,block%!12,block%!16)
  50.  7  :
  51. box_dragged(!block%,block%!4,block%!8,block%!12)
  52.  8  :
  53. process_key(!block%,block%!4,block%!8,block%!24)
  54.  9  :
  55. menuselect(block%)
  56.  11 :
  57.  !block%<>basewinh% 
  58.  !block%<>mainwinh% 
  59.  !block%<>setwinh% 
  60.  !block%<>selbwinh% 
  61.  !block%<>sprswinh% caret%=
  62.  17,18 :
  63. message(!block%,block%!4,block%!8,block%!12,block%!16,block%+20)
  64.  main_finish
  65. closedown
  66.  ******************Initialisation********************
  67.  "Cannot start application":
  68. listareamax%=4096
  69. listareap%=0
  70. scrapblen%=256
  71. outmax%=768
  72. indirmdsize%=256
  73. menu_bsize%=1024
  74. list_itemp%=36
  75. list_itemmax%=1024
  76. list_itemxp%=0
  77. selection_changed%=
  78. back_sel_grey%=
  79. spr_apl_trans%=
  80. caret%=
  81. spriteselname$=""
  82. file_trans_name$=""
  83.  block% 2048,listarea% 4096,list_item% 1024
  84.  scrapb% scrapblen%
  85.  menu_buff% menu_bsize%,inmenudat% indirmdsize%
  86.  oldcaret% 24
  87. open_message("<bootconf$dir>.Messages")
  88.  ***variables*****
  89. mask%=%1000000110001
  90. O taskname$=
  91. get_msg("TaskID")
  92.  "Wimp_Initialise",300,&4B534154,taskname$,
  93. messagesok 
  94.  ,my_handle%
  95. error(
  96. get_msg("FATALERR"),
  97. load_windows
  98. wmess_read_mode
  99. drag_ok
  100. 3d_look
  101.  flag%
  102. 6,161,140
  103. ,,flag%
  104.  flag% 
  105.  1=1 =
  106. drag_ok
  107.  flag%
  108. 131129,,"DragASprite_Start" 
  109.  dragst% ;flag%
  110. (flag%
  111. 1) dragst%=-1
  112. 131129,,"DragASprite_Stop"
  113.  dragsp%;flag%
  114. (flag%
  115. 1)dragsp%=-1
  116. 6,161,28
  117. ,,flag%
  118. (flag%
  119. 2)=0 dragst%=-1:dragsp%=-1
  120.  *******************Wimp Response**************************
  121. click(mx%,my%,bu%,whan%,ihan%)
  122.  bu% 
  123.  whan% 
  124.  mainwinh%
  125.  ihan% 
  126. oP    
  127. create_menu(
  128. dir_menu(" Borders ,Default","boot:choices.borders",&ff9))
  129. p=    
  130. get_iconscoords(mainwinh%,4,imix%,imiy%,imax%,imay%)
  131. q4    
  132.  "Wimp_CreateMenu",,menu_buff%,imax%,imay%
  133.     presentm%=mainwinh%
  134.     presentmi%=4
  135. uR    
  136. create_menu(
  137. dir_menusp(" Sprites ,Default","boot:choices.sprites",&ff9))
  138. v=    
  139. get_iconscoords(mainwinh%,5,imix%,imiy%,imax%,imay%)
  140. w4    
  141.  "Wimp_CreateMenu",,menu_buff%,imax%,imay%
  142.     presentm%=mainwinh%
  143.     presentmi%=5
  144. {T    
  145. create_menu(
  146. dir_menu(" Backgrounds ,None","boot:choices.background",&ff9))
  147. |=    
  148. get_iconscoords(mainwinh%,6,imix%,imiy%,imax%,imay%)
  149. }4    
  150.  "Wimp_CreateMenu",,menu_buff%,imax%,imay%
  151.     presentm%=mainwinh%
  152.     presentmi%=6
  153. apply_desktop_look
  154. set_icon_state(mainwinh%,16,(
  155. get_icon_state(mainwinh%,15)
  156. (1<<21))<<1,1<<22)
  157. open_selwin
  158. open_dirs("boot:choices.boot.tasks")
  159. open_dirs("boot:choices.boot.predesk")
  160.  23,24,25
  161.  back_sel_grey% 
  162. :    
  163. set_icon_state(mainwinh%,7,
  164. (ihan%=23)<<21,1<<21)
  165. :    
  166. set_icon_state(mainwinh%,8,
  167. (ihan%=24)<<21,1<<21)
  168. :    
  169. set_icon_state(mainwinh%,9,
  170. (ihan%=25)<<21,1<<21)
  171.         
  172. >    
  173. get_iconscoords(mainwinh%,35,imix%,imiy%,imax%,imay%)
  174. A    
  175. changeiconname(setwinh%,1,
  176. get_icon_value(mainwinh%,34))
  177. 2    
  178.  "Wimp_CreateMenu",,setwinh%,imax%,imay%
  179.     presentm%=mainwinh%
  180.     presentmi%=35
  181.  basewinh%
  182.  ihan% 
  183. "XOS_ReadVarVal","Help$Dir",block%,256,0,3 
  184.  ;ok%
  185.  "Hourglass_On"
  186.  ok%=7 
  187. ("Filer_Run Resources:$.Apps.!Help") 
  188.  "Wimp_ProcessKey",&181
  189.  "Hourglass_Off"
  190. default_options
  191.  bu%=4 main_finish=
  192. get_settings:
  193. cancel_selection
  194. set_options:
  195.  bu%=4 main_finish=
  196.  selbwinh%
  197.  ihan% 
  198. remove_selection
  199. done_selection
  200. cancel_selection
  201.  sellwinh%
  202. remove_selection
  203.  sprswinh%
  204.  ihan% 
  205. remove_addsprites
  206. load_addedsprite(-1)
  207.  setwinh%
  208.  ihan% 
  209.  "Wimp_CreateMenu",,-1
  210. check_for_directory(
  211. get_icon_value(setwinh%,1)):
  212. changeiconname(mainwinh%,34,
  213. convert_path_to_canonical(
  214. get_icon_value(setwinh%,1))) 
  215. error(
  216. get_msg("BADPATH"),0,0,0)
  217.  "Wimp_CreateMenu",,-1
  218.  whan% 
  219.  mainwinh%
  220.  ihan% 
  221.  4,19
  222. P    
  223. create_menu(
  224. dir_menu(" Borders ,Default","boot:choices.borders",&ff9))
  225. =    
  226. get_iconscoords(mainwinh%,4,imix%,imiy%,imax%,imay%)
  227. l    
  228.  ihan%=4 
  229.  "Wimp_CreateMenu",,menu_buff%,imax%,imay% 
  230.  "Wimp_CreateMenu",,menu_buff%,mx%-64,my%
  231.     presentm%=mainwinh%
  232.     presentmi%=4
  233.  5,20
  234. P    
  235. create_menu(
  236. dir_menu(" Sprites ,Default","boot:choices.sprites",&ff9))
  237. =    
  238. get_iconscoords(mainwinh%,5,imix%,imiy%,imax%,imay%)
  239. l    
  240.  ihan%=5 
  241.  "Wimp_CreateMenu",,menu_buff%,imax%,imay% 
  242.  "Wimp_CreateMenu",,menu_buff%,mx%-64,my%
  243.     presentm%=mainwinh%
  244.     presentmi%=5
  245.  6,21
  246. T    
  247. create_menu(
  248. dir_menu(" Backgrounds ,None","boot:choices.background",&ff9))
  249. =    
  250. get_iconscoords(mainwinh%,6,imix%,imiy%,imax%,imay%)
  251. l    
  252.  ihan%=6 
  253.  "Wimp_CreateMenu",,menu_buff%,imax%,imay% 
  254.  "Wimp_CreateMenu",,menu_buff%,mx%-64,my%
  255.     presentm%=mainwinh%
  256.     presentmi%=6
  257.  34,35
  258. >    
  259. get_iconscoords(mainwinh%,35,imix%,imiy%,imax%,imay%)
  260. A    
  261. changeiconname(setwinh%,1,
  262. get_icon_value(mainwinh%,34))
  263. i    
  264.  ihan%=35 
  265.  "Wimp_CreateMenu",,setwinh%,imax%,imay% 
  266.  "Wimp_CreateMenu",,setwinh%,mx%-64,my%
  267.     presentm%=mainwinh%
  268.     presentmi%=35
  269.  whan%=setwinh% 
  270.  ihan%=2:
  271. drag_box(whan%,ihan%,
  272. ,"directory"):dragtype%=0
  273. box_dragged(minx%,miny%,maxx%,maxy%)
  274.  whan%,handle%
  275.  dragsprite% 
  276.  dragsp% 
  277.  "Wimp_DragBox",,-1
  278.  "Wimp_GetPointerInfo",,block%
  279.  dragtype% 
  280. draged_savebox(block%!12,block%!16,!block%,block%!4,0,0,"null")
  281. process_key(whan%,ihan%,xoff%,key%)
  282.  fname$
  283.  key%=&D 
  284.  whan%=basewinh% 
  285. set_icon_state(basewinh%,3,1<<21,1<<21):
  286. set_options:main_finish=
  287.  key%=&D 
  288.  whan%=mainwinh% 
  289. check_for_directory(
  290. get_icon_value(mainwinh%,34)) 
  291. changeiconname(mainwinh%,34,
  292. convert_path_to_canonical(
  293. get_icon_value(mainwinh%,34))):
  294.  "Wimp_SetCaretPosition",basewinh%,-1 
  295. error(
  296. get_msg("BADPATH"),0,0,0)
  297.  key%=&D 
  298.  whan%=selbwinh% 
  299. set_icon_state(selbwinh%,1,1<<21,1<<21):
  300. done_selection:
  301.  key%=&D 
  302.  whan%=setwinh% 
  303.  "Wimp_CreateMenu",,-1
  304. check_for_directory(
  305. get_icon_value(setwinh%,1)):
  306. changeiconname(mainwinh%,34,
  307. convert_path_to_canonical(
  308. get_icon_value(setwinh%,1))) 
  309. error(
  310. get_msg("BADPATH"),0,0,0)
  311.  key%=&1b 
  312.  whan%=selbwinh% 
  313. set_icon_state(selbwinh%,2,1<<21,1<<21):
  314. cancel_selection:
  315.  key%=&D 
  316.  whan%=sprswinh% 
  317. set_icon_state(sprswinh%,7,1<<21,1<<21):
  318. load_addedsprite:
  319.  key%=&1b 
  320.  whan%=sprswinh% 
  321. set_icon_state(sprswinh%,6,1<<21,1<<21):
  322. remove_addsprites:
  323.  key%=&181 
  324.  "Hourglass_On"
  325. "If ""<Help$Dir>""="""" Then Filer_Run Resources:$.Apps.!Help"
  326.  "Hourglass_Off"
  327.  "Wimp_ProcessKey",key%
  328. menuselect(block%)
  329.  mainwin%,mwinnum%,string$
  330.  presentm%=mainwinh% 
  331.  "Wimp_DecodeMenu",,menu_buff%,block%,block%+256
  332.  presentmi% 
  333. changeiconname(mainwinh%,19,$(block%+256))
  334. changeiconname(mainwinh%,20,$(block%+256))
  335.   string$=$(block%+256)
  336.  string$="None" 
  337. grey_backtype 
  338. restore_backtype
  339. changeiconname(mainwinh%,21,string$)
  340.  ************************Message Acctions********************
  341. messagesok
  342. poss%=0
  343. block%!poss%=1:poss%+=4
  344. block%!poss%=2:poss%+=4
  345. block%!poss%=3:poss%+=4
  346. block%!poss%=&502:poss%+=4
  347.  block%!poss%=&400c1:poss%+=4
  348. block%!poss%=0
  349. =block%
  350. message(size%,thandm%,my_ref%,your_reflag%,messaget%,message%)
  351.  messaget% 
  352.  0 :main_finish=
  353. applfile_dragged(
  354. get_null(message%+24),!message%,message%!20)
  355. datasave_act(
  356. get_null(message%+24),message%!16,my_ref%)
  357. load_dragged(
  358. get_null(message%+24),!message%,message%!20)
  359.  &502 :
  360. helpreply(
  361. helptext(message%!12,message%!16),my_ref%,thandm%)
  362.  &400C1  :
  363. wmess_read_mode
  364. helpreply(help$,ref%,task%)
  365. (help$)>0
  366. block%!0=(25+
  367. (help$))
  368. block%!12=ref%
  369. block%!16=&503
  370. $(block%+20)=help$
  371. ?(block%+20+
  372. (help$))=0
  373. "Wimp_SendMessage",17,block%,task%
  374. helptext(whan%,ihan%)
  375.  text$,token$
  376.  whan% 
  377.  mainwinh%  :token$="HWMAIN"
  378.  basewinh%  :token$="HWBASE"
  379.  sellwinh%  :token$="HWLIST"
  380.  selbwinh%  :token$="HWBLIST"
  381.  setwinh%   :token$="HWSET"
  382.  "Wimp_GetMenuState",1,block%+1024,whan%,ihan%
  383.  block%!1024<>-1 
  384.  presentmi% 
  385. 1    
  386.  4 :=
  387. get_msg("HMTOOLS")
  388. 2"   
  389.  5 :=
  390. get_msg("HMSPRITES")
  391. 3    
  392.  6 :=
  393. get_msg("HMBACKS")
  394. get_msg("NOHELP")
  395. get_msg(token$+
  396.  ihan%)
  397. wmess_read_mode
  398. !block%=128
  399. block%!4=129
  400. block%!8=130
  401. block%!12=131
  402. block%!16=-1
  403.  "OS_ReadVduVariables",block%,block%
  404.  "OS_ReadModeVariable",-1,4  
  405.  ,,xps%
  406.  "OS_ReadModeVariable",-1,5 
  407.  ,,yps%
  408. C screen_xmin%=(!block%)<<xps%
  409. D!screen_ymin%=(block%!4)<<yps%
  410. E#screen_xmax%=(block%!8+1)<<xps%
  411. F$screen_ymax%=(block%!12+1)<<yps%
  412. xps%=1<<xps%
  413. yps%=1<<yps%
  414. applfile_dragged(name$,whan%,filetype%)
  415.  (whan%=mainwinh% 
  416.  whan%=basewinh%) 
  417.  (filetype%=&fea 
  418.  filetype%=&ff9 
  419.  (filetype%=&feb 
  420. lower_case(name$),8)="pinboard")) 
  421.  block%!12=block%!8
  422.  block%!36=-1
  423.  file_trans_name$=name$
  424. "XOS_ReadVarVal","Wimp$Scrap",block%+256,256,0,3 
  425.  ,,end%;ok%
  426.  ok%=7 
  427. error(
  428. get_msg("NOWINSCP"),0,0,
  429. R  $(block%+44)="<Wimp$Scrap>"
  430. ($(block%+44))+1)
  431. 4<>0 !block%=((44+
  432. ($(block%+44))+1)
  433. 3)+4 
  434.  !block%=44+
  435. ($(block%+44))+1
  436. T" block%?(44+
  437. ($(block%+44)))=0
  438.  block%!16=2
  439.  "Wimp_SendMessage",17,block%,block%!4
  440. load_dragged(name$,whan%,filetype%)
  441.  (whan%=mainwinh% 
  442.  whan%=basewinh%) 
  443.  filetype%=&ff9 
  444. lower_case(name$)="<wimp$scrap>" spriteselname$=file_trans_name$:spr_apl_trans%=
  445.  spriteselname$=name$:spr_apl_trans%=
  446.  spr_apl_task%=block%!4
  447.  spr_apl_mref%=block%!8
  448.  spr_apl_name$=name$
  449.  spr_apl_type%=filetype%
  450.  block%!24 
  451. load_addedsprite(0)
  452. load_addedsprite(1)
  453. load_addedsprite(2)
  454. open_sprite_sel
  455.  (whan%=mainwinh% 
  456.  whan%=basewinh%) 
  457.  filetype%=&feb 
  458. transfer_pinboard_file(name$,file_trans_name$)
  459.  (whan%=mainwinh% 
  460.  whan%=basewinh%) 
  461.  filetype%=&fea 
  462. desktop_filter(name$,"boot:choices.boot.tasks.Settings","boot:choices.boot.tasks.pinboard")
  463.  "XOS_File",18,"boot:choices.boot.tasks.Settings",&fea
  464.  "XOS_File",18,"boot:choices.boot.tasks.pinboard",&feb
  465. lower_case(name$)="<wimp$scrap>" 
  466.  "XOS_File",6,name$
  467.  block%!12=block%!8
  468.  block%!16=4
  469.  "Wimp_SendMessage",17,block%,block%!4
  470.  (whan%=sellwinh% 
  471.  whan%=selbwinh%) 
  472.  filetype%=&2000 
  473.  block%!12=block%!8
  474.  block%!16=4
  475.  "Wimp_SendMessage",17,block%,block%!4
  476. item_not_in_list(
  477. strip_fname(name$)) 
  478. update_icon(whan%,
  479. add_list_item(
  480. strip_fname(name$)))
  481. add_item_to_memlist(name$)
  482.  (whan%=mainwinh% 
  483.  whan%=basewinh%) 
  484.  filetype%=&2000 
  485.  block%!12=block%!8
  486.  block%!16=4
  487.  "Wimp_SendMessage",17,block%,block%!4
  488. lower_case(
  489. strip_fname(name$)) 
  490.  "!system" :
  491. update_copy(name$,"boot:resources")
  492.  "!scrap" :
  493. update_copy(name$,"boot:resources")
  494.  "!fonts" :
  495. update_copy(name$,"boot:resources")
  496. datasave_act(fname$,size%,block%!12)
  497.  dragtype% 
  498. lower_case(fname$)<>"<wimp$scrap>" 
  499. check_for_directory(
  500. get_file_path(fname$)) 
  501. changeiconname(mainwinh%,34,
  502. get_file_path(fname$)) 
  503. error(
  504. get_msg("BADPATH"),0,0,0)
  505.  "Wimp_CreateMenu",,-1
  506.  dragtype%=-1
  507.  **********************Menu Control***********************
  508. create_menu(menu$)
  509.  stposs%,place%
  510. stposs%=1
  511. Splace%=
  512. startmenu(0,menu_buff%,
  513. get_string(",",menu$,stposs%),7,2,7,0,100,40,0)
  514. Uplace%=
  515. menuitem(place%,menu_buff%,0,0,
  516. icon_norm,
  517. get_string(",",menu$,stposs%))
  518.  stposs%=1 
  519.  (place%>menu_bsize%-32)
  520. 8menu_buff%!(place%-24)=menu_buff%!(place%-24) 
  521.  1<<7
  522. icon_norm
  523. =&07090011
  524. get_string(endst$,string$,
  525.  stposs%)
  526.  tposs%
  527. tposs%=stposs%
  528. &stposs%=
  529. string$,endst$,stposs%)+1
  530. string$,tposs%,
  531. string$,endst$,tposs%)-tposs%)
  532. startmenu(bpl%,bufflag%,title$,fcol%,bcol%,mfcol%,mbcol%,width%,height%,gap%)
  533. $(bufflag%+bpl%)=title$
  534. bufflag%?(12+bpl%)=fcol%
  535. bufflag%?(13+bpl%)=bcol%
  536. bufflag%?(14+bpl%)=mfcol%
  537. bufflag%?(15+bpl%)=mbcol%
  538. bufflag%!(16+bpl%)=width%
  539. bufflag%!(20+bpl%)=height%
  540. bufflag%!(24+bpl%)=gap%
  541. =bpl%+28
  542. menuitem(bpl%,bufflag%,flag%,ihan%,idata%,name$)
  543.  poss%
  544.  16*(
  545.  name$+1)>bufflag%!16 bufflag%!16=16*(
  546.  name$+1)
  547. bufflag%+=bpl%
  548. !bufflag%=flag%
  549. bufflag%!4=ihan%
  550.  name$<12 
  551.  (idata%
  552. 1<<8)=0 
  553.  $(bufflag%+12)=name$
  554.  mdatp%<indirmdsize% 
  555.  idata%=idata%
  556. " bufflag%!12=inmenudat%+mdatp%
  557.  bufflag%!16=0
  558.  bufflag%!20=1+
  559.  name$
  560.  poss%=1 
  561.  name$
  562. 3 inmenudat%!(poss%+mdatp%-1)=
  563. name$,poss%,1))
  564.   inmenudat%!(poss%+mdatp%)=0
  565.  mdatp%+=2+
  566.  name$
  567. bufflag%!8=idata%
  568. bpl%+=24
  569.     =bpl%
  570. dir_menu(files$,dir$,type%)
  571.  item%
  572. item%=0
  573.  "OS_GBPB",12,dir$,scrapb%,1,item%,256,0 
  574.  ,,,,item%
  575.  item%<>-1
  576.  (scrapb%!16=1) 
  577.  (scrapb%!20=type%) 
  578.  files$+=","+
  579. get_terminator(scrapb%+24)
  580.  "OS_GBPB",12,dir$,scrapb%,1,item%,256,0 
  581.  ,,,,item%
  582. =files$
  583. dir_menusp(files$,dir$,type%)
  584.  item%,filename$
  585. item%=0
  586.  "OS_GBPB",12,dir$,scrapb%,1,item%,256,0 
  587.  ,,,,item%
  588.  item%<>-1
  589.  (scrapb%!16=1) 
  590.  (scrapb%!20=type%) 
  591. +  filename$=
  592. get_terminator(scrapb%+24)
  593. is_in_list(
  594. remove_modenums(
  595. lower_case(filename$)),files$) files$+=","+filename$
  596.  "OS_GBPB",12,dir$,scrapb%,1,item%,256,0 
  597.  ,,,,item%
  598. =files$
  599. is_in_list(name$,list$)
  600.  poss%,nposs%
  601. nposs%=0
  602. poss%=1
  603. nposs%=
  604. list$,",",poss%)
  605.  poss%,nposs%,
  606. list$,poss%,nposs%-poss%)
  607. lower_case(
  608. list$,poss%,nposs%-poss%))=name$ =
  609. poss%=nposs%+1
  610.  nposs%=0
  611. remove_modenums(sprite$)
  612. sprite$,1)>="1" 
  613. sprite$,1)<="9" 
  614. sprite$,
  615. (sprite$)-1,1)>="1" 
  616. sprite$,
  617. (sprite$)-1,1)<="9" sprite$=
  618. sprite$,
  619. (sprite$)-2)
  620. =sprite$
  621.  ********************Support Procedures**********************
  622.  **************Icons*************
  623. changeiconname(handle%,icon%,name$)
  624.  indir%,iflags%,wbl%
  625. wbl%=block%+256
  626. !wbl%=handle%
  627. wbl%!4=icon%
  628.  "Wimp_GetIconState",,wbl%
  629. iflags%=wbl%!24
  630.  iflags% 
  631.  (1<<8 
  632.  1)=(1<<8 
  633.  indir%=wbl%!28
  634.  indir%>&8000 
  635.  indir%<&8000+16*1024*1024 $indir%=name$
  636. update_icon(handle%,icon%)
  637. changeiconvalid(handle%,icon%,name$)
  638.  indir%,iflags%,wbl%
  639. wbl%=block%+256
  640. !wbl%=handle%
  641. wbl%!4=icon%
  642.  "Wimp_GetIconState",,wbl%
  643. iflags%=wbl%!24
  644.  iflags% 
  645.  (1<<8 
  646.  1)=(1<<8 
  647.  valid%=wbl%!32
  648.  valid%>&8000 
  649.  valid%<&8000+16*1024*1024
  650.  $valid%=name$
  651. get_iconscoords(whan%,ihan%,
  652.  imix%,
  653.  imiy%,
  654.  imax%,
  655.  imay%)
  656. !block%=whan%
  657. block%!4=ihan%
  658.  "Wimp_GetWindowInfo",,block%
  659. winx%=block%!4
  660. winy%=block%!16
  661. wax%=block%!44+block%!20
  662. way%=block%!56+block%!24
  663. block%!4=ihan%
  664.  "Wimp_GetIconState",,block%
  665. imix%=(block%!8+winx%-wax%)
  666. # imiy%=(block%!12+winy%-way%)
  667. $ imax%=(block%!16+winx%-wax%)
  668. % imay%=(block%!20+winy%-way%)
  669. update_icon(handle%,icon%)
  670.  wbl%
  671. wbl%=block%+256
  672. !wbl%=handle%
  673. wbl%!4=icon%
  674. wbl%!8=0
  675. wbl%!12=0
  676.  "Wimp_SetIconState",,wbl%
  677. get_icon_value(handle%,icon%)
  678.  wbl%
  679. wbl%=block%+256
  680. !wbl%=handle%
  681. wbl%!4=icon%
  682.  "Wimp_GetIconState",,wbl%
  683. =$(wbl%!28)
  684. get_icon_state(handle%,icon%)
  685.  wbl%
  686. wbl%=block%+256
  687. !wbl%=handle%
  688. wbl%!4=icon%
  689.  "Wimp_GetIconState",,wbl%
  690. =wbl%!24
  691. set_icon_state(handle%,icon%,eor%,clear%)
  692.  wbl%
  693. wbl%=block%+256
  694. !wbl%=handle%
  695. wbl%!4=icon%
  696. wbl%!8=eor%
  697. wbl%!12=clear%
  698.  "Wimp_SetIconState",,wbl%
  699. drag_box(whan%,ihan%,sprite%,sname$)
  700. get_iconscoords(whan%,ihan%,block%!8,block%!12,block%!16,block%!20)
  701. block%!4=5
  702. block%!24=screen_xmin%
  703. block%!28=screen_ymin%
  704. block%!32=screen_xmax%
  705. block%!36=screen_ymax%
  706.  sprite% 
  707.  dragst%<>-1 
  708.  dragst%,197,1,sname$,block%+8,block%+24:dragsprite%=
  709.  "Wimp_DragBox",,block%:dragsprite%=
  710.   *********Window*******************
  711. open_windowtemp(iblock%,ilen%,font%,name$)
  712.  winhan%
  713.  "Wimp_LoadTemplate",,listarea%,iblock%,iblock%+ilen%,font%,name$ 
  714.  ,,,,,,ok%
  715.  ok%=0 
  716. error(
  717. get_msg("winnf"),0,0,0)
  718.  "Wimp_CreateWindow",,listarea% 
  719.  winhan%
  720. =winhan%
  721. load_windowtemp(addr%,iblock%,ilen%,font%,name$)
  722.  "Wimp_LoadTemplate",,addr%,iblock%,iblock%+ilen%,font%,name$
  723. centre_win_coords(block%)
  724.  xwid%,ywid%
  725. xwid%=block%!12-block%!4
  726. ywid%=block%!16-block%!8
  727. f0block%!4=(screen_xmax%-screen_xmin%-xwid%)/2
  728. g0block%!8=(screen_ymax%-screen_ymin%-ywid%)/2
  729. block%!12=block%!4+xwid%
  730. block%!16=block%!8+ywid%
  731.  *********************General********************
  732. draged_savebox(block%!20,block%!24,block%!28,block%!32,block%!36,block%!40,$(block%+44))
  733.  len%
  734. o+$(block%+44)=
  735. strip_fname($(block%+44))
  736.  $(block%+44)="" 
  737. error(
  738. get_msg("BFN"),0,0,0):
  739. len%=
  740. ($(block%+44))
  741.  (44+len%+1)
  742. 4<>0 !block%=((48+len%+1)
  743.  !block%=48+len%+1
  744. block%?(44+len%)=0
  745. block%!12=0
  746. block%!16=1
  747.  "Wimp_SendMessage",17,block%,block%!20,block%!24
  748. get_file_path(fname$)
  749.  nloop%,loop%
  750. lower_case(fname$)="<wimp$scrap>" 
  751. nloop%=0
  752. loop%=nloop%
  753. nloop%=
  754. fname$,".",loop%+1)
  755.  nloop%=0
  756. fname$,loop%-1)
  757. strip_fname(fname$)
  758. nloop%=0
  759. loop%=nloop%
  760. nloop%=
  761. fname$,".",loop%+1)
  762.  nloop%=0
  763. fname$,
  764. (fname$)-loop%)
  765. strip_command(str$)
  766.  loop%
  767. loop%=1
  768. str$,loop%,1)=" "
  769. loop%+=1
  770. str$,loop%,
  771. str$," ",loop%)-loop%)
  772. get_file_root(fname$)
  773. fname$,
  774. fname$,"$",0))
  775. convert_path_to_canonical(path$)
  776.  "XOS_FSControl",37,path$,block%,,,256 
  777.  ;ok%
  778.  ok%=7 =""
  779. =$block%
  780. check_for_directory(path$)
  781.  type%
  782.  path$="" =
  783.  "XOS_File",5,path$ 
  784.  type%
  785.  type%<2 =
  786. update_copy(ofile$,tfile$)
  787.  messb%
  788.  "Wimp_StartTask","Filer_Action" 
  789.  fileacthan%
  790.  fileacthan%=0 
  791. messb%=block%+256
  792. 4messb%!4=0:messb%!8=0:messb%!12=0:messb%!16=&403
  793. '$(messb%+20)=
  794. get_file_path(ofile$)
  795. )!messb%=((20+
  796. ($(messb%+20))+1)
  797. !messb%?(20+
  798. ($(messb%+20)))=0
  799.  "Wimp_SendMessage",17,messb%,fileacthan%
  800. 4messb%!4=0:messb%!8=0:messb%!12=0:messb%!16=&404
  801. %$(messb%+20)=
  802. strip_fname(ofile$)
  803. )!messb%=((20+
  804. ($(messb%+20))+1)
  805. !messb%?(20+
  806. ($(messb%+20)))=0
  807.  "Wimp_SendMessage",17,messb%,fileacthan%
  808. 4messb%!4=0:messb%!8=0:messb%!12=0:messb%!16=&405
  809. messb%!20=0
  810. messb%!24=%1101
  811. $(messb%+28)=tfile$
  812. )!messb%=((28+
  813. ($(messb%+28))+1)
  814. !messb%?(28+
  815. ($(messb%+28)))=0
  816.  "Wimp_SendMessage",17,messb%,fileacthan%
  817. update_copy2(ofile$,tfile$)
  818. "XOS_FSControl",26,ofile$,tfile$,%101001000000011 
  819.  ;reg%
  820.  (reg%
  821.  1)=1 
  822. error(
  823. get_msg("UPFAIL"),0,0,0)
  824. get_null(addr%)
  825.  poss%,string$
  826. poss%=0:string$=""
  827.  addr%?poss%<>0
  828. "string$=string$+
  829. (addr%?poss%)
  830. poss%+=1
  831. =string$
  832. get_terminator(addr%)
  833.  name$,poss%
  834. poss%=0
  835. name$+=
  836. (addr%?poss%)
  837. poss%+=1
  838.  addr%?poss%=0 
  839.  addr%?poss%=&0D 
  840.  addr%?poss%=&0A
  841. =name$
  842. lower_case(string$)
  843.  lcasest$,loop%
  844. loop%=1
  845. string$,loop%,1))>=
  846. ("A") 
  847. string$,loop%,1))<=
  848. ("Z") 
  849. 9lcasest$=lcasest$+
  850. string$,loop%,1))-(
  851. "a"))
  852. 'lcasest$=lcasest$+
  853. string$,loop%,1)
  854. loop%+=1
  855.  loop%>=
  856. (string$)+1
  857. =lcasest$
  858. is_file_there(file$,type%)
  859.  "OS_File",20,file$ 
  860.  objtype%,,,,,,ftype%
  861. :=(objtype%<>0 
  862.  type%=-1) 
  863.  (type%<>-1 
  864.  type%=ftype%)
  865. file_locked(file$)
  866.  attribs%
  867.  "XOS_File",5,file$ 
  868.  ,,,,,attribs%
  869.  (attribs% 
  870.  8) = 8 =
  871. error(rep$,erl,err,terminal%)
  872.  "Wimp_SpriteOp",36,,"ptr_default",1
  873.  "Wimp_ReportError","****"+rep$+" "+
  874.  erl,9,taskname$
  875.  terminal% 
  876. closedown
  877. closedown
  878. close_message
  879.  caret% 
  880.  "XWimp_SetCaretPosition",!oldcaret%,oldcaret%!4,oldcaret%!8,oldcaret%!12,oldcaret%!16,oldcaret%,!20
  881.  spr_apl_trans% 
  882.  "XOS_File",6,spr_apl_name$
  883. spr_apl_trans%=
  884.  "Wimp_CloseDown",my_handle%,&4B534154
  885.  ***********************messages*****************************
  886. get_msg(messt$)
  887.  addr%,poss%,look$
  888.  "XMessageTrans_Lookup",messbuff%,messt$, 0 
  889.  ,,look$ ;ok%
  890.  ok%=9 =""
  891. =look$
  892. open_message(filen$)
  893.  flags%,size%
  894.  filen$="" 
  895.  "MessageTrans_FileInfo",,filen$ 
  896.  flags%,,size%
  897.  msgfilebuf% size%
  898.  messbuff% 17+
  899.  filen$
  900. $(messbuff%+16)=filen$
  901. "MessageTrans_OpenFile",messbuff%,messbuff%+16,msgfilebuf%
  902. close_message
  903.  messbuff% 
  904. "MessageTrans_CloseFile",messbuff%
  905.  *************init***********************
  906. init_postwimp
  907.  flag%
  908. "XOS_ReadVarVal","Boot$Path",block%,256,0,3 
  909.  ,,end% ;ok%
  910.  ok%=7 
  911. error(
  912. get_msg("BNF"),0,0,
  913.  get icon bounderies
  914. check_for_files
  915. get_settings
  916. selection_start
  917. get_settings
  918. get_appearance
  919. 6,161,140
  920. ,,flag%
  921.  (flag%
  922. set_icon_state(mainwinh%,10,(flag%
  923. 1)<<21,1<<21)
  924. 6,161,28
  925. ,,flag%
  926. set_icon_state(mainwinh%,11,(flag%
  927. 2)<<20,1<<21)
  928.  files
  929. set_icon_state(mainwinh%,13,
  930. is_file_there("boot:choices.boot.tasks.Bootapps",&feb)<<21,1<<21)
  931. is_file_there("boot:choices.boot.tasks.allsomeaps",&feb) 
  932. set_icon_state(mainwinh%,14,1<<21,1<<21)
  933. set_icon_state(mainwinh%,15,1<<21,1<<21)
  934. set_icon_state(mainwinh%,14,
  935. is_file_there("boot:choices.boot.tasks.addallapps",&feb)<<21,1<<21)
  936. set_icon_state(mainwinh%,15,
  937. is_file_there("boot:choices.boot.tasks.addsomeaps",&feb)<<21,1<<21)
  938. set_icon_state(mainwinh%,16,(
  939. get_icon_state(mainwinh%,15)
  940. (1<<21))<<1,1<<22)
  941. "XOS_ReadVarVal","MainApps$dir",block%,256,0,3 
  942.  ,,end% ;ok%
  943.  ok%=7 
  944. "OS_ReadVarVal","bootconf$dir",block%,256,0,3 
  945.  ,,end%
  946. block%?end%=&0d
  947.  ok%<>7 
  948. changeiconname(mainwinh%,34,$block%) 
  949. changeiconname(mainwinh%,34,
  950. $block%,
  951. $block%,"$",0)))
  952. load_windows
  953.  main_icons% 2048,base_icons% 128
  954.  selb_icons% 256,sprs_icons% 200
  955.  set_icons% 256
  956. 3d_look 
  957.  "Wimp_OpenTemplate",,"<bootconf$dir>.Templates"
  958.  "Wimp_OpenTemplate",,"<bootconf$dir>.Templates2"
  959. <:mainwinh%=
  960. open_windowtemp(main_icons%,2048,-1,"main")
  961. =9basewinh%=
  962. open_windowtemp(base_icons%,128,-1,"base")
  963. ><selbwinh%=
  964. open_windowtemp(selb_icons%,256,-1,"selbase")
  965. ?^sellwinh%=
  966. open_windowtemp(list_item%+list_itemp%,list_itemmax%-list_itemp%,-1,"selitems")
  967. @6setwinh%=
  968. open_windowtemp(set_icons%,256,-1,"set")
  969. A?sprswinh%=
  970. open_windowtemp(sprs_icons%,200,-1,"addsprites")
  971.  "Wimp_CloseTemplate"
  972. EA**************************main procedures********************
  973. set_options
  974. set_config_appear
  975. desktopboot_options
  976. apps_options
  977. selection_save
  978. settup_boot
  979. open_mainwin
  980. !block%=basewinh%
  981.  "Wimp_GetWindowState",,block%
  982. centre_win_coords(block%)
  983. block%!28=-1
  984.  "Wimp_OpenWindow",,block%
  985. !block%=mainwinh%
  986.  "Wimp_GetWindowState",,block%+256
  987. V-block%!268=block%!4+block%!268-block%!260
  988. W1block%!272=block%!8+block%!272-block%!264+108
  989. block%!260=block%!4
  990. block%!264=block%!8+108
  991.  "Wimp_OpenWindow",,block%+256
  992.  "Wimp_GetCaretPosition",,oldcaret%
  993.  "Wimp_SetCaretPosition",basewinh%,-1
  994. caret%=
  995.  ********************applications options********************
  996. apps_options
  997. get_icon_state(mainwinh%,14)
  998. (1<<21))=(1<<21) 
  999. get_icon_state(mainwinh%,15)
  1000. (1<<21))=(1<<21) 
  1001.  "OS_FSControl",26,"<bootconf$dir>.AllSomeAps","boot:choices.boot.tasks.AllSomeAps",2
  1002. is_file_there("boot:choices.boot.tasks.AddAllApps",-1) 
  1003.  "OS_FSControl",27,"boot:choices.boot.tasks.AddAllApps",2
  1004. is_file_there("boot:choices.boot.tasks.AddSomeAps",-1) 
  1005.  "OS_FSControl",27,"boot:choices.boot.tasks.AddSomeAps",,2
  1006. is_file_there("boot:choices.boot.tasks.allsomeaps",-1) 
  1007.  "OS_FSControl",27,"boot:choices.boot.tasks.allsomeaps",2
  1008. get_icon_state(mainwinh%,14)
  1009. (1<<21))=(1<<21) 
  1010.  "OS_FSControl",26,"<bootconf$dir>.AddAllApps","boot:choices.boot.tasks.AddAllApps",2
  1011. is_file_there("boot:choices.boot.tasks.AddAllApps",-1) 
  1012.  "OS_FSControl",27,"boot:choices.boot.tasks.AddAllApps",2
  1013. get_icon_state(mainwinh%,15)
  1014. (1<<21))=(1<<21) 
  1015.  "OS_FSControl",26,"<bootconf$dir>.AddSomeAps","boot:choices.boot.tasks.AddSomeAps",2
  1016. is_file_there("boot:choices.boot.tasks.AddSomeAps",-1) 
  1017.  "OS_FSControl",27,"boot:choices.boot.tasks.AddSomeAps",,2
  1018. get_icon_state(mainwinh%,13)
  1019. (1<<21))=(1<<21) 
  1020.  "OS_FSControl",26,"<bootconf$dir>.BootApps","boot:choices.boot.tasks.BootApps",2
  1021. is_file_there("boot:choices.boot.tasks.BootApps",-1) 
  1022.  "OS_FSControl",27,"boot:choices.boot.tasks.BootApps",2
  1023.  ****************appearance options**********************
  1024. set_config_appear
  1025. get_icon_state(mainwinh%,10)
  1026. (1<<21))=(1<<21) 
  1027. 6,161,140
  1028. ,,flag%
  1029.  flag%=flag%
  1030. 6,162,140,flag%
  1031. 6,161,140
  1032. ,,flag%
  1033.  flag%=flag%
  1034. 6,162,140,flag%
  1035. get_icon_state(mainwinh%,11)
  1036. (1<<21))=(1<<21) 
  1037. 6,161,28
  1038. ,,flag%
  1039.  flag%=flag%
  1040. 6,162,28,flag%
  1041. 6,161,28
  1042. ,,flag%
  1043.  flag%=flag%
  1044. 6,162,28,flag%
  1045. desktopboot_options
  1046.  fileh%,sprites$,border$,background$
  1047.  "OS_FSControl",26,"<bootconf$dir>.Desktop","boot:choices.boot.Desktop",2
  1048. )fileh%=
  1049. ("boot:choices.boot.DeskTop")
  1050. #fileh%:
  1051.  fileh%=0 
  1052. #fileh%=
  1053. #fileh%
  1054. )border$=
  1055. get_icon_value(mainwinh%,19)
  1056. *sprites$=
  1057. get_icon_value(mainwinh%,20)
  1058. -background$=
  1059. get_icon_value(mainwinh%,21)
  1060. #fileh%,"set MainApps$Dir "+
  1061. get_icon_value(mainwinh%,34)
  1062.  sprites$<>"Default" 
  1063.  sprites$<>"" 
  1064. #fileh%,"iconsprites boot:choices.sprites."+sprites$
  1065.  border$<>"Default" 
  1066.  border$<>"" 
  1067. #fileh%,"toolsprites boot:choices.borders."+border$
  1068.  background$<>"None" 
  1069.  background$<>"" 
  1070. #fileh%,"backdrop boot:choices.background."+background$+" "+
  1071. background_type
  1072. #fileh%
  1073. settup_boot
  1074.  bootpath$,end%,ok%,filesys$,csd$,fin%,drive%
  1075.  "OS_FSControl",48,"boot:choices",2
  1076. "XOS_ReadVarVal","Boot$Path",block%,256,0,3 
  1077.  ,,end% ;ok%
  1078.  ok%=7 
  1079. error(
  1080. get_msg("BNF"),0,0,
  1081. block%?end%=&0d
  1082. &filesys$=
  1083. $block%,
  1084. $block%,":")-1)
  1085. Fdrivename$=
  1086. $block%,
  1087. $block%,":")+1,
  1088. $block%,".")-
  1089. $block%,":")-1)
  1090. "XOS_ReadVarVal","FileSwitch$"+filesys$+"$CSD",block%,256,0,3 
  1091.  ,,end% ;ok%
  1092.  ok%=7 
  1093.  csd$="" 
  1094.  block%?end%=&0d:csd$=$block%
  1095. notfound%=
  1096. drive%=7
  1097.  notfound% 
  1098.  drive%>=0
  1099.  "XOS_FSControl",0,filesys$+"::"+
  1100.  drive% 
  1101.  ;ok%
  1102.  ok%=6 
  1103.  "OS_ReadVarVal","FileSwitch$"+filesys$+"$CSD",block%,256,0,3 
  1104.  ,,end%
  1105.   block%?end%=&0d
  1106. $block%,
  1107. $block%,".")-1)=drivename$ 
  1108.  notfound%=
  1109.  drive%-=1
  1110.   drive%-=1
  1111.  csd$<>"" 
  1112. ("set FileSwitch$"+filesys$+"$CSD "+csd$) 
  1113.  "OS_FSControl",43
  1114. ("Configure FileSystem "+filesys$)
  1115. ("Configure Drive "+
  1116.  drive%)
  1117. ("Configure boot")
  1118. ?*******************general response handling***************
  1119. get_appearance
  1120.  fileh%,place%,string$,command$
  1121. changeiconname(mainwinh%,19,"Default")
  1122. changeiconname(mainwinh%,20,"Default")
  1123. changeiconname(mainwinh%,21,"None")
  1124. grey_backtype
  1125. )fileh%=
  1126. ("boot:choices.boot.desktop")
  1127. #fileh%:
  1128.  fileh%=0 
  1129.  string$=
  1130. #fileh%
  1131. string$,1)<>"/" 
  1132. lower_case(
  1133. strip_command(string$)) 
  1134.  "toolsprites"
  1135. changeiconname(mainwinh%,19,
  1136. strip_fname(string$))
  1137.  "iconsprites"
  1138. changeiconname(mainwinh%,20,
  1139. strip_fname(string$))
  1140.  "backdrop"
  1141.   place%=
  1142. string$,"-")
  1143.   back_sel_grey%=
  1144. set_icon_state(mainwinh%,7,0,1<<21)
  1145. set_icon_state(mainwinh%,8,0,1<<21)
  1146. set_icon_state(mainwinh%,9,0,1<<21)
  1147. lower_case(
  1148. string$,place%,
  1149. string$," ",place%)-place%)) 
  1150.  "-tile" :
  1151. set_icon_state(mainwinh%,7,1<<21,1<<21):back_sel_grey%=
  1152.  "-scale":
  1153. set_icon_state(mainwinh%,8,1<<21,1<<21):back_sel_grey%=
  1154.  "-centre":
  1155. set_icon_state(mainwinh%,9,1<<21,1<<21):back_sel_grey%=
  1156. =  command$=
  1157. strip_command(
  1158. strip_fname(
  1159. string$,place%)))
  1160.  command$<>"" 
  1161. changeiconname(mainwinh%,21,command$):
  1162. restore_backtype
  1163. #fileh%
  1164. #fileh%
  1165. apply_desktop_look
  1166.  border$,sprites$,background$,mode%
  1167. )border$=
  1168. get_icon_value(mainwinh%,19)
  1169. *sprites$=
  1170. get_icon_value(mainwinh%,20)
  1171. -background$=
  1172. get_icon_value(mainwinh%,21)
  1173.  sprites$<>"Default" 
  1174.  sprites$<>"" 
  1175. ("iconsprites boot:choices.sprites."+sprites$) 
  1176. ("iconsprites WindowManager:sprites")
  1177.  border$<>"Default" 
  1178.  border$<>"" 
  1179. ("toolsprites boot:choices.borders."+border$) 
  1180. ("toolsprites")
  1181.  background$<>"None" 
  1182.  background$<>"" 
  1183. ("backdrop boot:choices.background."+background$+" "+
  1184. background_type)
  1185.  "Wimp_ReadSysInfo",1 
  1186.  mode%
  1187.  "Wimp_SetMode",mode%
  1188. background_type
  1189. get_icon_state(mainwinh%,7)
  1190. (1<<21))=(1<<21) 
  1191.  ="-Tile"
  1192. get_icon_state(mainwinh%,8)
  1193. (1<<21))=(1<<21) 
  1194.  ="-Scale"
  1195. get_icon_state(mainwinh%,9)
  1196. (1<<21))=(1<<21) 
  1197.  ="-Centre"
  1198. default_options
  1199. changeiconname(mainwinh%,19,"Default")
  1200. changeiconname(mainwinh%,20,"Default")
  1201. changeiconname(mainwinh%,21,"None")
  1202. grey_backtype
  1203. grey_backtype
  1204. back_sel_grey%=
  1205. set_icon_state(mainwinh%,7,1<<22,1<<22)
  1206. set_icon_state(mainwinh%,8,1<<22,1<<22)
  1207. set_icon_state(mainwinh%,9,1<<22,1<<22)
  1208. set_icon_state(mainwinh%,23,2<<24,15<<24)
  1209. set_icon_state(mainwinh%,24,2<<24,15<<24)
  1210. set_icon_state(mainwinh%,25,2<<24,15<<24)
  1211. restore_backtype
  1212. back_sel_grey%=
  1213. set_icon_state(mainwinh%,7,0,1<<22)
  1214. set_icon_state(mainwinh%,8,0,1<<22)
  1215. set_icon_state(mainwinh%,9,0,1<<22)
  1216. set_icon_state(mainwinh%,23,7<<24,15<<24)
  1217. set_icon_state(mainwinh%,24,7<<24,15<<24)
  1218. set_icon_state(mainwinh%,25,7<<24,15<<24)
  1219. open_dirs(dir$)
  1220. ("filer_opendir "+dir$)
  1221.  *****************selection window handling*******************
  1222. open_selwin
  1223. !block%=selbwinh%
  1224.  "Wimp_GetWindowState",,block%
  1225. centre_win_coords(block%)
  1226. block%!28=-1
  1227.  "Wimp_OpenWindow",,block%
  1228. block%!256=sellwinh%
  1229.  "Wimp_GetWindowState",,block%+256
  1230. %0block%!268=block%!4+block%!268-block%!260+16
  1231. &1block%!272=block%!8+block%!272-block%!264+192
  1232. block%!260=block%!4+16
  1233. block%!264=block%!8+192
  1234.  "Wimp_OpenWindow",,block%+256
  1235.  caret%=
  1236.  "Wimp_GetCaretPosition",,oldcaret%
  1237.  "Wimp_SetCaretPosition",selbwinh%,-1
  1238. caret%=
  1239. set_icon_state(selbwinh%,1,0,1<<21)
  1240. set_icon_state(selbwinh%,2,0,1<<21)
  1241. selection_start
  1242. !block%=sellwinh%
  1243. block%!4=0
  1244.  "Wimp_GetIconState",,block%
  1245. !list_item%=sellwinh%
  1246.  loop%=4 
  1247. 7%list_item%!loop%=block%!(loop%+4)
  1248. list_itemyp%=list_item%!8
  1249. :/list_icon_width%=list_item%!16-list_item%!8
  1250.  "Wimp_DeleteIcon",,block%
  1251.  "OS_File",5,"boot:choices.appstoadd" 
  1252.  type%,,,,len%
  1253.  len%<4096 
  1254.  type%=1 
  1255.  "OS_File",16,"boot:choices.appstoadd",listarea% 
  1256.  ,,,,listareap%  
  1257.  ?listarea%=0:listareap%=0
  1258. make_icons_from_list
  1259. selection_save
  1260.  selection_changed%=
  1261.  "OS_File",10,"boot:choices.appstoadd",&fff,0,listarea%,listarea%+listareap%
  1262. make_icons_from_list
  1263.  point%,name$
  1264. point%=0
  1265. H"name$=
  1266. get_a_list_name(point%)
  1267.  name$<>""
  1268. J-icon%=
  1269. add_list_item(
  1270. strip_fname(name$))
  1271. K"name$=
  1272. get_a_list_name(point%)
  1273. listareap%=point%
  1274. item_not_in_list(tname$)
  1275.  point%,name$
  1276. point%=0
  1277. tname$=
  1278. lower_case(tname$)
  1279. T=name$=
  1280. lower_case(
  1281. strip_fname(
  1282. get_a_list_name(point%)))
  1283.  name$<>""
  1284.  name$=tname$ =
  1285. W=name$=
  1286. lower_case(
  1287. strip_fname(
  1288. get_a_list_name(point%)))
  1289. add_list_item(name$)
  1290.  ihan%,ibsize%
  1291. ]%iwidth%=list_item%!8-list_itemyp%
  1292. ^,list_item%!16-=list_item%!8-list_itemyp%
  1293. list_item%!8=list_itemyp%
  1294. `(list_item%!24=list_item%+list_itemp%
  1295. a#$(list_item%+list_itemp%)=name$
  1296.  "Wimp_CreateIcon",,list_item% 
  1297.  ihan%
  1298. ibsize%=list_itemyp%
  1299. d,list_itemyp%+=list_item%!8-list_item%!16
  1300. list_itemp%+=list_item%!32
  1301. !block%=sellwinh%
  1302.  "Wimp_GetWindowState",,block%
  1303.  ibsize%<block%!8-block%!16 
  1304. i  block%!8=block%!12-block%!4
  1305.  block%!4=ibsize%
  1306.  !block%=0
  1307.  block%!12=0
  1308.  "Wimp_SetExtent",sellwinh%,block%
  1309.  block%!24<list_itemyp% 
  1310. !block%=sellwinh%
  1311.  "Wimp_GetWindowState",,block%
  1312. r-block%!24=list_itemyp%-block%!4+block%!12
  1313.  "Wimp_OpenWindow",,block%
  1314. =ihan%
  1315. remove_selection
  1316.  loop%,iloop%,point%,name$,opoint%
  1317. point%=0
  1318. opoint%=0
  1319. iloop%=0
  1320. |"name$=
  1321. get_a_list_name(point%)
  1322.  name$<>""
  1323. get_icon_state(sellwinh%,iloop%)
  1324. (1<<21))=(1<<21) 
  1325.  loop%=0 
  1326.  listareap%-point%
  1327. 8  listarea%?(opoint%+loop%)=listarea%?(point%+loop%)
  1328.  listareap%-=point%-opoint%
  1329.  ?(listarea%+listareap%)=0
  1330.  point%=opoint%
  1331. !block%=sellwinh%
  1332. block%!4=iloop%
  1333.  "Wimp_DeleteIcon",,block%
  1334. opoint%=point%
  1335. "name$=
  1336. get_a_list_name(point%)
  1337. iloop%+=1
  1338. +list_item%!8=list_item%!8-list_item%!16
  1339. list_item%!16=0
  1340. list_itemp%=36
  1341. list_itemyp%=list_item%!8
  1342. make_icons_from_list
  1343. set_list_extent
  1344. remove_item(item%)
  1345.  loop%,iloop%,point%,name$,opoint%
  1346. point%=0
  1347. opoint%=0
  1348. iloop%=0
  1349. "name$=
  1350. get_a_list_name(point%)
  1351.  name$<>""
  1352.  iloop%=item% 
  1353.  loop%=0 
  1354.  listareap%-point%
  1355. 8  listarea%?(opoint%+loop%)=listarea%?(point%+loop%)
  1356.  listareap%-=point%-opoint%
  1357.  ?(listarea%+listareap%)=0
  1358.  point%=opoint%
  1359. !block%=sellwinh%
  1360. block%!4=iloop%
  1361.  "Wimp_DeleteIcon",,block%
  1362. opoint%=point%
  1363. "name$=
  1364. get_a_list_name(point%)
  1365. iloop%+=1
  1366. +list_item%!8=list_item%!8-list_item%!16
  1367. list_item%!16=0
  1368. list_itemp%=36
  1369. list_itemyp%=list_item%!8
  1370. make_icons_from_list
  1371. set_list_extent
  1372. set_list_extent
  1373. !block%=sellwinh%
  1374.  "Wimp_GetWindowState",,block%
  1375. width%=block%!8-block%!16
  1376. block%!8=block%!12-block%!4
  1377.  (list_itemyp%+list_icon_width%)<width% block%!4=list_itemyp%+list_icon_width% 
  1378.  block%!4=width%
  1379. !block%=0
  1380. block%!12=0
  1381.  "Wimp_SetExtent",sellwinh%,block%
  1382. !block%=sellwinh%
  1383.  "Wimp_GetWindowState",,block%
  1384.  "Wimp_ForceRedraw",sellwinh%,block%!20,block%!24-block%!16+block%!8,block%!12-block%!4+block%!20,block%!24
  1385.  (list_itemyp%+list_icon_width%)<block%!24 
  1386. 2block%!24=list_itemyp%+list_icon_width%-width%
  1387.  "Wimp_OpenWindow",,block%
  1388. cancel_selection
  1389. point%=0
  1390. iloop%=0
  1391. "name$=
  1392. get_a_list_name(point%)
  1393.  name$<>""
  1394.  !block%=sellwinh%
  1395.  block%!4=iloop%
  1396.  iloop%+=1
  1397.  "Wimp_DeleteIcon",,block%
  1398. # name$=
  1399. get_a_list_name(point%)
  1400.  "OS_File",5,"boot:choices.appstoadd" 
  1401.  type%,,,,len%
  1402.  len%<4096 
  1403.  type%=1 
  1404.  "OS_File",16,"boot:choices.appstoadd",listarea% 
  1405.  ,,,,listareap%  
  1406.  ?listarea%=0:listareap%=0
  1407. +list_item%!8=list_item%!8-list_item%!16
  1408. list_item%!16=0
  1409. list_itemp%=36
  1410. list_itemyp%=list_item%!8
  1411. make_icons_from_list
  1412. !block%=selbwinh%
  1413.  "Wimp_CloseWindow",,block%
  1414. !block%=sellwinh%
  1415.  "Wimp_CloseWindow",,block%
  1416. selection_changed%=
  1417.  caret%=
  1418.  "Wimp_GetCaretPosition",,oldcaret%
  1419.  "Wimp_SetCaretPosition",basewinh%,-1
  1420. caret%=
  1421. done_selection
  1422. !block%=selbwinh%
  1423.  "Wimp_CloseWindow",,block%
  1424. !block%=sellwinh%
  1425.  "Wimp_CloseWindow",,block%
  1426. selection_changed%=
  1427.  caret%=
  1428.  "Wimp_GetCaretPosition",,oldcaret%
  1429.  "Wimp_SetCaretPosition",basewinh%,-1
  1430. caret%=
  1431.  ******item handling***************************
  1432. get_a_file(fileh%)
  1433.  fname$,char$
  1434. fname$=""
  1435. char$=
  1436. #fileh%)
  1437.  char$=" "
  1438. char$=
  1439. #fileh%)
  1440.  char$=" " char$=
  1441. #fileh%)
  1442. #fileh% 
  1443.  char$<>" "
  1444.  char$<>" " 
  1445. (char$)<>&0d 
  1446. (char$)<>&0a fname$+=char$
  1447. char$=
  1448. #fileh%)
  1449. =fname$
  1450. get_a_list_name(
  1451.  point%)
  1452.  fname$,char$
  1453. char$=
  1454. (listarea%?point%)
  1455.  char$=" "
  1456. char$=
  1457. (listarea%?point%)
  1458. point%+=1
  1459.  point%<listareamax% 
  1460.  point%<listareap% 
  1461.  char$<>" "
  1462. char$=
  1463. (listarea%?point%)
  1464.  char$<>" " 
  1465. (char$)<>&0d 
  1466. (char$)<>&0a fname$+=char$
  1467. point%+=1
  1468. =fname$
  1469. add_item_to_memlist(name$)
  1470. !$(listarea%+listareap%)=name$
  1471. +?(listarea%+listareap%+
  1472. (name$))=
  1473. (" ")
  1474. (?(listarea%+listareap%+
  1475. (name$)+1)=0
  1476. listareap%+=
  1477. (name$)+1
  1478.  *************sprite handling**********************
  1479. open_sprite_sel
  1480. set_icon_state(sprswinh%,6,0,1<<21)
  1481. set_icon_state(sprswinh%,7,0,1<<21)
  1482. !block%=sprswinh%
  1483.  "Wimp_GetWindowState",,block%
  1484. centre_win_coords(block%)
  1485. block%!28=-1
  1486.  "Wimp_OpenWindow",,block%
  1487.  caret%=
  1488.  "Wimp_GetCaretPosition",,oldcaret%
  1489.  "Wimp_SetCaretPosition",sprswinh%,-1
  1490. caret%=
  1491. remove_addsprites
  1492. !block%=sprswinh%
  1493.  "Wimp_CloseWindow",,block%
  1494.  caret%=
  1495.  "Wimp_GetCaretPosition",,oldcaret%
  1496.  "Wimp_SetCaretPosition",basewinh%,-1
  1497. caret%=
  1498.  spr_apl_trans% 
  1499.  "XOS_File",6,spr_apl_name$
  1500. spr_apl_trans%=
  1501. load_addedsprite(type%)
  1502. !block%=sprswinh%
  1503.  "Wimp_CloseWindow",,block%
  1504.  caret%=
  1505.  "Wimp_GetCaretPosition",,oldcaret%
  1506.  "Wimp_SetCaretPosition",basewinh%,-1
  1507. caret%=
  1508. added_sprite_state(type%) 
  1509.  "XOS_FSControl",26,spr_apl_name$,"boot:choices.Borders."+
  1510. strip_fname(spriteselname$)
  1511.  "XOS_FSControl",26,spr_apl_name$,"boot:choices.sprites."+
  1512. strip_fname(spriteselname$)
  1513.  "XOS_FSControl",26,spr_apl_name$,"boot:choices.backgrounds."+
  1514. strip_fname(spriteselname$)
  1515.  spr_apl_trans% 
  1516.  "XOS_File",6,spr_apl_name$
  1517. block%!12=spr_apl_mref%
  1518. block%!16=4
  1519. block%!40=filetype%
  1520. $(block%+44)=spr_apl_name$
  1521. ($(block%+44))+1)
  1522. 4<>0 !block%=((44+
  1523. ($(block%+44))+1)
  1524. 3)+4 
  1525.  !block%=44+
  1526. ($(block%+44))+1
  1527. >!block%?(44+
  1528. ($(block%+44)))=0
  1529.  "Wimp_SendMessage",17,block%,spr_apl_task%
  1530. spr_apl_trans%=
  1531. added_sprite_state(type%)
  1532.  type%<>-1 
  1533.  =type%
  1534. get_icon_state(sprswinh%,0)
  1535. (1<<21))=(1<<21) =0
  1536. get_icon_state(sprswinh%,1)
  1537. (1<<21))=(1<<21) =1
  1538. get_icon_state(sprswinh%,2)
  1539. (1<<21))=(1<<21) =2
  1540. J>*******************desktop boot filter********************
  1541. desktop_filter(orig_file$,trans_file$,pin_file$)
  1542.  ofile%,tfile%,place%,comm%,stposs%
  1543. ofile%=
  1544. (orig_file$)
  1545. tfile%=
  1546. (trans_file$)
  1547. pfile%=
  1548. (pin_file$)
  1549. #ofile%:
  1550. #tfile%:
  1551. #pfile%:
  1552.  line$=
  1553. #ofile%
  1554.  place%=0
  1555. UT comm$=
  1556. lower_case(
  1557. get_part(
  1558. remove_leading_spaces(line$,place%),0," ",place%))
  1559.  comm$ 
  1560.  "pin","addtinydir"
  1561. #pfile%,line$
  1562.  "pinboard","backdrop"
  1563. #tfile%,line$
  1564. #ofile%
  1565. #ofile%
  1566. #tfile%
  1567. #pfile%
  1568. get_nch(string$,start%)
  1569. string$,start%,1)=" " 
  1570.  start%<
  1571. (string$)
  1572. start%+=1
  1573. =start%
  1574. get_part(string$,start%,find$,
  1575.  next%)
  1576.  fin%
  1577. string$,start%,1)="""" 
  1578.  find$="""":start%+=1
  1579. fin%=
  1580. string$,find$,start%)
  1581.  fin%=0 fin%=
  1582. (string$)+1
  1583. n"next%=
  1584. get_nch(string$,fin%+1)
  1585. st$=string$
  1586. string$,start%,fin%-start%-1)
  1587. remove_leading_spaces(string$,
  1588.  place%)
  1589. string$,place%,1)<>" " 
  1590.  =string$
  1591. string$,place%,1)=" "
  1592. place%+=1
  1593. string$,
  1594. (string$)-place%+1)
  1595. y8******************pinboard filter*******************
  1596. transfer_pinboard_file(name$,fname$)
  1597. lower_case(name$)="<wimp$scrap>" 
  1598. lower_case(
  1599. fname$,8))="pinboard" 
  1600. filter_pfile(name$,"boot:choices.boot.tasks.pinboard"):
  1601.  "XOS_File",6,name$
  1602. lower_case(
  1603. strip_fname(name$),8))="pinboard" 
  1604. filter_pfile(name$,"boot:choices.boot.tasks.pinboard")
  1605. block%!12=block%!8
  1606. block%!16=4
  1607.  "Wimp_SendMessage",17,block%,block%!4
  1608. filter_pfile(ofile$,tfile$)
  1609. ofile%=
  1610. (ofile$)
  1611. tfile%=
  1612. (tfile$)
  1613. #ofile%:
  1614. #tfile%:
  1615.  line$=
  1616. #ofile%
  1617.  place%=0
  1618. T comm$=
  1619. lower_case(
  1620. get_part(
  1621. remove_leading_spaces(line$,place%),0," ",place%))
  1622.  (comm$="pinboard" 
  1623.  comm$="backdrop") 
  1624. #tfile%,line$
  1625. #ofile%
  1626. #ofile%
  1627. #tfile%
  1628.  "OS_File",18,tfile$,&feb
  1629. A***********program integrity and locking detection***********
  1630. check_for_files
  1631. is_file_there("<bootconf$dir>.addallapps",&feb) 
  1632. error(
  1633. get_msg("APPSNF"),0,0,
  1634. is_file_there("<bootconf$dir>.addsomeaps",&feb) 
  1635. error(
  1636. get_msg("APPSNF"),0,0,
  1637. is_file_there("<bootconf$dir>.allsomeaps",&feb) 
  1638. error(
  1639. get_msg("APPSNF"),0,0,
  1640. is_file_there("<bootconf$dir>.bootapps",&feb) 
  1641. error(
  1642. get_msg("APPSNF"),0,0,
  1643. is_file_there("<bootconf$dir>.desktop",&fea) 
  1644. error(
  1645. get_msg("APPSNF"),0,0,
  1646. file_locked("boot:choices.boot.desktop") 
  1647. error(
  1648. get_msg("FILELK"),0,0,
  1649.