home *** CD-ROM | disk | FTP | other *** search
/ The Datafile PD-CD 5 / DATAFILE_PDCD5.iso / utilities / a / abode / !Abode / Source (.txt) < prev    next >
RISC OS BBC BASIC V Source  |  1994-08-23  |  18KB  |  831 lines

  1.  ><Abode$Dir>.Source
  2.  This application is FreeWare. (c) 1992,1993,1994 Dick Alstein
  3. Appl$="Abode"
  4. Version$="1.20 (23-Aug-94)"
  5. error
  6. quit%=
  7.     .mask%=(1<<4)+(1<<5)+(1<<7)+(1<<11)+(1<<12)
  8.  "OS_ReadMonotonicTime" 
  9.  blinktime%
  10. F  blinktime%=(blinktime%+blinkperiod%)-(blinktime% 
  11.  blinkperiod%)
  12.  "Wimp_PollIdle",mask%,blk%,blinktime% 
  13.  reason%
  14.  reason% 
  15.       
  16. blinkcaret
  17. +      
  18.  "OS_ReadMonotonicTime" 
  19.  time%
  20.       
  21.  time%>rmamintime% 
  22. B        
  23.  minimizerma% 
  24.  "XOS_ChangeDynamicArea",1,-(1<<24)
  25. !        rmamintime%=time%+100
  26.       
  27. )    
  28.  2 : 
  29.  "XWimp_OpenWindow",,blk%
  30. )    
  31.  3 : 
  32.  "Wimp_CloseWindow",,blk%
  33. ?    
  34.  6 : 
  35. mouseclick(blk%!0,blk%!4,blk%!8,blk%!12,blk%!16)
  36. )    
  37.  8 : 
  38. key(blk%!0,blk%!4,blk%!24)
  39.  9 : 
  40. menuselect(blk%)
  41. 1    
  42.  17,18 : 
  43. receive(blk%!4,blk%!8,blk%!16)
  44.  quit%
  45. msg_exit
  46.  "Wimp_CloseDown"
  47. access(name$,type%)
  48.  ofs%,read%,item$,itemtype%,i%,N$
  49.  "OS_File",5,name$ 
  50.  ,,,,,attr%
  51.  type%=2 
  52. &+  attr%=(attr% 
  53.  &F7) 
  54.  (access% 
  55.  &08)
  56. (#  attr%=(attr% 
  57.  &C4) 
  58.  access%
  59.  dontlocksetup% 
  60. *$    N$=
  61. upcase(
  62. leafname(name$))
  63. +     
  64. msg_lookup0(N$)<>"" 
  65.       attr%=attr% 
  66. -        
  67.  "XOS_File",4,name$,,,,attr% 
  68.  ;flg%
  69.  (flg% 
  70. complain(
  71. msg_lookup1("NoAccess",name$))
  72.  type%=2 
  73.     ofs%=0
  74. 6        
  75. 7B      
  76.  "OS_GBPB",10,name$,blk%,1,ofs%,40,"*" 
  77.  ,,,read%,ofs%
  78.       
  79.  read% 
  80.         itemtype%=blk%!16
  81. :)        item$=name$+"."+
  82. str(blk%+20)
  83. ;$        
  84. access(item$,itemtype%)
  85.       
  86. =     
  87.  (read%=0) 
  88.  (flg% 
  89. basicload(file$)
  90.  dodir% 
  91.  "Wimp_StartTask","Dir "+
  92. dirname(file$)
  93.  "XOS_Module",18,"ARMBasicEditor" 
  94.  ;flg%
  95.  ((flg% 
  96.  1)=0) 
  97.  -1) 
  98. insertcmd("EDIT")
  99. insertcmd("MODE MODE")
  100.  "Wimp_StartTask","Basic -load "+file$
  101. blinkcaret
  102.  blink% 
  103.  "Wimp_GetCaretPosition",,ct%
  104.  (ct%!0<>-1) 
  105.  (ct%!16<>-1) 
  106.     ct%!16=(ct%!16)
  107. (1<<25)
  108. TI    
  109.  "Wimp_SetCaretPosition",ct%!0,ct%!4,ct%!8,ct%!12,ct%!16,ct%!20
  110. complain(text$)
  111.  dummy%
  112. dummy%=
  113. errbox(text$,17)
  114. defaultstatus
  115. mode%=1
  116. access%=&03
  117. dodir%=
  118. confirm%=
  119. blink%=
  120. newtype$="Text"
  121. cmd$=""
  122. dontlocksetup%=
  123. pullfront%=
  124. pullfrontkey%=&1EA
  125. blinkperiod%=25
  126. minimizerma%=
  127. taskwindow%=
  128. dirname(F$)
  129.  p%,q%
  130. F$,".",p%)
  131.  q% > 0 
  132.  p%=q%+1
  133.  q%=0
  134. F$,p%-2)
  135. errbox(err$,boxes%)
  136. errblk%!0=0
  137. $(errblk%+4)=err$+
  138.  "Wimp_ReportError",errblk%,boxes%,Appl$ 
  139.  ,click%
  140. =(click%=1)
  141. error
  142.  "Wimp_CloseDown" : 
  143. errbox(
  144. $+" (line "+
  145. )+")",3) 
  146.  "Wimp_CloseDown"
  147.  flg%
  148.  errblk% &100
  149.  "Wimp_Initialise",200,&4B534154,Appl$ 
  150.  osversion%,thistask%
  151. error
  152.  blk% &400
  153. indsize%=&400
  154.  indir% indsize%
  155. indirend%=indir%+indsize%
  156.  ptrinfo% 20
  157.  varbuf% 256
  158. newtype$="Text"
  159.  emptystr% 4
  160. $emptystr%=""
  161.  ct% 24
  162.  accessbit%(4)
  163. accessbit%(0)=&08
  164. accessbit%(1)=&01
  165. accessbit%(2)=&02
  166. accessbit%(3)=&10
  167. accessbit%(4)=&20
  168. msg_init
  169.  "OS_ReadMonotonicTime" 
  170.  rmamintime%
  171. readscreenvars
  172. loadstatus
  173. %spfilename$="<Abode$Dir>.Sprites"
  174.  "OS_ReadModeVariable",27,0 
  175.  ;flg% : 
  176.  test if hires modes available
  177.  (flg% 
  178.  2)=0 
  179.   spfilename$+="22"
  180.  "OS_File",17,spfilename$ 
  181.  ,,,,spsize%
  182. spsize%+=16
  183.  sparea% spsize%
  184. sparea%!0=spsize%
  185. sparea%!8=16
  186.  "OS_SpriteOp",256+9,sparea%
  187.  "OS_SpriteOp",256+10,sparea%,spfilename$
  188.  spname% 14
  189. $spname%="abode_"+
  190. (mode%)
  191.  mode%=4 
  192.  (access% 
  193.  accessbit%(0)) 
  194.     $spname%+="b"
  195.     $spname%+="a"
  196. blk%!0=-1
  197. blk%!4=0 : blk%!8=0
  198. blk%!12=68 : blk%!16=68
  199. blk%!20=&7000311A
  200. blk%!24=spname%
  201. blk%!28=sparea%
  202. blk%!32=12
  203.  "Wimp_CreateIcon",,blk% 
  204.  baricon%
  205.  "Wimp_OpenTemplate",,"<Abode$Dir>.Templates"
  206. *infowin%=
  207. loadtemplate("Info",sparea%)
  208. !$(blk%!(92+32*3+20))=Version$
  209. .accesswin%=
  210. loadtemplate("Access",sparea%)
  211. ,optwin%=
  212. loadtemplate("Options",sparea%)
  213. 'pullfrontkeystr%=blk%!(92+32*11+20)
  214. 1grabkeywin%=
  215. loadtemplate("GrabKeys",sparea%)
  216.  "Wimp_CloseTemplate"
  217.  I%=0 
  218. selecticon(accesswin%,I%,(access% 
  219.  accessbit%(I%)))
  220. selecticon(optwin%,1,dodir%)
  221. selecticon(optwin%,2,dontlocksetup%)
  222. selecticon(optwin%,3,confirm%)
  223. selecticon(optwin%,4,blink%)
  224. selecticon(optwin%,5,pullfront%)
  225. selecticon(optwin%,6,minimizerma%)
  226. shadeicon(optwin%,8,
  227.  blink%)
  228. shadeicon(optwin%,9,
  229.  blink%)
  230. selecticon(optwin%,14,taskwindow%)
  231. :blk%!0=grabkeywin% : 
  232.  open grabkeys window off-screen
  233.  "Wimp_GetWindowState",,blk%
  234. blk%!4=(blk%!4)-10000
  235. blk%!8=(blk%!8)-10000
  236. blk%!12=(blk%!12)-10000
  237. blk%!16=(blk%!16)-10000
  238. blk%!28=-1
  239.  "Wimp_OpenWindow",,blk%
  240. preparemenus
  241. insertcmd(s$)
  242.  i%=1 
  243.  "OS_Byte",138,0,
  244. s$,i%,1))
  245.  "OS_Byte",138,0,13
  246. key(window%,icon%,key%)
  247.  val%,ok%
  248.  (window%=optwin%) 
  249.  (icon%=11) 
  250.   val%=0
  251. validhotkey(key%) 
  252. -    $(pullfrontkeystr%)=
  253. hotkeyname(key%)
  254. !    
  255. selecticon(optwin%,11,0)
  256. I    
  257.  "Wimp_SetCaretPosition",optwin%,11,,,-1,
  258. ($(pullfrontkeystr%))
  259.     pullfrontkey%=key%
  260.  (key%=27) 
  261.  (key%=13) 
  262. 6    $(pullfrontkeystr%)=
  263. hotkeyname(pullfrontkey%)
  264. !    
  265. selecticon(optwin%,11,0)
  266. I    
  267.  "Wimp_SetCaretPosition",optwin%,11,,,-1,
  268. ($(pullfrontkeystr%))
  269.  pullfront% 
  270.  (key%=pullfrontkey%) 
  271. *    
  272.  "Wimp_GetPointerInfo",,ptrinfo%
  273.  (ptrinfo%!12)>=0 
  274.       blk%!0=ptrinfo%!12
  275. (      
  276.  "Wimp_GetWindowState",,blk%
  277. !      
  278.  ((blk%!32)
  279. (1<<17)) 
  280.         blk%!28=-2
  281.       
  282.         blk%!28=-1
  283.       
  284. -      
  285.  "Wimp_SendMessage",2,blk%,blk%!0
  286.         
  287. !    
  288.  "Wimp_ProcessKey",key%
  289. validhotkey(val%)
  290.     ok%=
  291.  (val% 
  292.  &F) 
  293.  1,2,3,4,5,6,7,8,9
  294.     ok%=(val%>=&181)
  295.  10,11,12
  296.     ok%=(val%>=&1CA)
  297. hotkeyname(val%)
  298.  name$
  299. name$=""
  300.  (val% 
  301.  &10) 
  302.  name$+=
  303. (139)
  304.  (val% 
  305.  &20) 
  306.  name$+="^"
  307. name$+="F"+
  308. (val% 
  309. =name$
  310. leafname(f$)
  311.  p%,q%
  312.   p%=q%+1
  313.   q%=
  314. f$,".",p%)
  315.  q%=0
  316. f$,p%)
  317. loadstatus
  318.  type$
  319.  ("<Abode$Dir>.Status")
  320.  F%=0 
  321. complain(
  322. msg_lookup0("NoStLoad"))
  323. defaultstatus
  324. #F%,mode%,access%,dodir%,confirm%,blink%,type$,cmd$
  325. #F%,dontlocksetup%,pullfront%,pullfrontkey%
  326. #F%,blinkperiod%,minimizerma%,taskwindow%
  327.  mode% < 1 
  328.  mode% > 5 
  329.     mode%=1
  330. (type$)>0) 
  331. (type$)<12) 
  332.     newtype$=type$
  333.     newtype$="Text"
  334. loadtemplate(name$,spptr%)
  335.  handle%,i%
  336.  "Wimp_CloseTemplate" : 
  337. error
  338.  "Wimp_LoadTemplate",,blk%+4,indir%,indirend%,-1,name$,0 
  339.  ,,indir%
  340. blk%!68=spptr%
  341.  blk%!88>0 
  342.  i%=0 
  343.  blk%!88
  344.     f%=blk%!(92+i%*32+16)
  345.  (f% 
  346.  &103)=&102 
  347. B#      blk%!(92+i%*32+24)=spptr%
  348. C        
  349.  "Wimp_CreateWindow",,blk%+4 
  350.  handle%
  351. =handle%
  352. msg_init
  353.  fname$,flags%,size%,buf%
  354. K!fname$="<Abode$Dir>.Messages"
  355.  "MessageTrans_FileInfo",,fname$ 
  356.  flags%,,size%
  357.  flags% 
  358.   buf%=0
  359.  buf% size%
  360.  MsgDesc% 17+
  361. (fname$)
  362. $(MsgDesc%+16)=fname$
  363.  "MessageTrans_OpenFile",MsgDesc%,MsgDesc%+16,buf%
  364. msg_exit
  365.  "MessageTrans_CloseFile",MsgDesc%
  366. MsgDesc%=0
  367. msg_lookup0(token$)
  368.  result%,flg%
  369.  "XMessageTrans_Lookup",MsgDesc%,token$,0 
  370.  ,,result%;flg%
  371.  (flg% 
  372. `      =""
  373. str(result%)
  374. msg_lookup1(token$,param$)
  375.  result%
  376.  "MessageTrans_Lookup",MsgDesc%,token$,blk%,&100,param$ 
  377.  ,,result%
  378. str(result%)
  379. mouseclick(xpos%,ypos%,button%,wndw%,icon%)
  380.  wndw% 
  381.  button% 
  382.       
  383.         
  384.  mode%=5 
  385.           
  386. setmode(1)
  387.         
  388.           
  389. setmode(mode%+1)
  390.         
  391.       
  392.         
  393. mainmenu(1)
  394.       
  395.         
  396.  mode% 
  397.           
  398. x'            
  399. insertcmd("MODE MODE")
  400. y+            
  401.  "Wimp_StartTask","Basic"
  402.           
  403. {1            access%=(access% 
  404.  accessbit%(0))
  405. |C            
  406. selecticon(accesswin%,0,(access% 
  407.  accessbit%(0)))
  408.             
  409. setmode(4)
  410.           
  411.             
  412. runcmd(cmd$)
  413.         
  414.         
  415.  accesswin%
  416. +    
  417. iconselected(accesswin%,icon%) 
  418. /      access%=access% 
  419.  (accessbit%(icon%))
  420.         
  421. 1      access%=access% 
  422.  accessbit%(icon%))
  423.         
  424. !    
  425.  (icon%=0) 
  426.  (mode%=4) 
  427.       
  428. setmode(mode%)
  429.         
  430.  optwin%
  431.  icon% 
  432.       
  433.  1 : dodir%=
  434.  dodir%
  435. /      
  436.  2 : dontlocksetup%=
  437.  dontlocksetup%
  438. #      
  439.  3 : confirm%=
  440.  confirm%
  441.       
  442.         blink%=
  443.  blink%
  444. +        
  445.  "Wimp_GetCaretPosition",,ct%
  446. <        
  447.  blink%)
  448. (ct%!16<>-1)
  449. ((ct%!16)
  450. (1<<25)>0) 
  451. *          ct%!16=(ct%!16) 
  452. (1<<25))
  453. O          
  454.  "Wimp_SetCaretPosition",ct%!0,ct%!4,ct%!8,ct%!12,ct%!16,ct%!20
  455.         
  456. *        
  457. shadeicon(optwin%,8,
  458.  blink%)
  459. *        
  460. shadeicon(optwin%,9,
  461.  blink%)
  462.       
  463. A        
  464.  ((button%=4)
  465. (icon%=9)) 
  466.  ((button%=1)
  467. (icon%=8)) 
  468. !          
  469.  blinkperiod%>16 
  470. #            
  471.  blinkperiod%>40 
  472. !              blinkperiod%-=2
  473.             
  474. !              blinkperiod%-=1
  475.             
  476.           
  477.         
  478. A        
  479.  ((button%=4)
  480. (icon%=8)) 
  481.  ((button%=1)
  482. (icon%=9)) 
  483. "          
  484.  blinkperiod%<100 
  485. #            
  486.  blinkperiod%<40 
  487. !              blinkperiod%+=1
  488.             
  489. !              blinkperiod%+=2
  490.             
  491.           
  492.         
  493. '      
  494.  5 : pullfront%=
  495.  pullfront%
  496. +      
  497.  6 : minimizerma%=
  498.  minimizerma%
  499.       
  500.         
  501. savestatus
  502.