home *** CD-ROM | disk | FTP | other *** search
/ The Datafile PD-CD 3 / PDCD_3.iso / utilities / utilsd / filesplit / !FileSplit / !RunImage (.txt) < prev    next >
RISC OS BBC BASIC V Source  |  1994-02-27  |  7KB  |  309 lines

  1.  FileSplitter
  2.  v1.01 (Sun 27th February 94)
  3.  Copyright Ainsley Pereira 1994
  4. ver$="1.01 (27 Feb 1994)"
  5.  q% &400, iicon% &400, spr% 8900, menu% 28+24*2
  6. !iiend%=iicon%+&400:ip%=iicon%
  7.  "Wimp_Initialise",200,&4b534154,"FileSplit" 
  8.  ,task%
  9.  "Wimp_OpenTemplate",,"<FileSplit$Dir>.Templates"
  10.  "Wimp_LoadTemplate",,q%,ip%,iiend%,-1,"split",0 
  11. ,,ip%
  12.  "Wimp_CreateWindow",,q% 
  13.  split%
  14.  "Wimp_LoadTemplate",,q%,ip%,iiend%,-1,"join",0 
  15. ,,ip%
  16.  "Wimp_CreateWindow",,q% 
  17.  join%
  18.  "Wimp_LoadTemplate",,q%,ip%,iiend%,-1,"out",0 
  19. ,,ip%
  20.  "Wimp_CreateWindow",,q% 
  21.  out%
  22.  "Wimp_LoadTemplate",,q%,ip%,iiend%,-1,"info",0 
  23. ,,ip%
  24.  "Wimp_CreateWindow",,q% 
  25.  info%
  26.  "Wimp_LoadTemplate",,q%,ip%,iiend%,-1,"me",0 
  27. ,,ip%
  28.  "Wimp_CreateWindow",,q% 
  29.  "Wimp_LoadTemplate",,q%,ip%,iiend%,-1,"next",0 
  30. ,,ip%
  31.  "Wimp_CreateWindow",,q% 
  32.  next%
  33.  "Wimp_CloseTemplate"
  34. `!spr%=8900:spr%!4=0:spr%!8=16:spr%!12=16:
  35.  "OS_SpriteOp",266,spr%,"<FileSplit$Dir>.Sprites"
  36. M$menu%="FileSplit"+
  37. 0:menu%!12=&70207:menu%!16=160:menu%!20=44:menu%!24=0
  38. Gmenu%!28=&00:menu%!32=info%:menu%!36=&7000031:$(menu%+40)="Info"+
  39. Dmenu%!52=&80:menu%!56=-1:menu%!60=&7000031:$(menu%+64)="Quit"+
  40. O!q%=-1:q%!4=0:q%!8=0:q%!12=68:q%!16=68:q%!20=&3002:$(q%+24)="!filesplit"+
  41.  "Wimp_CreateIcon",,q% 
  42.  icbar%
  43. sets(info%, 7, ver$)
  44. .joinptr%=0     :splitptr%=0    :splitto%=0
  45. 0jointo$=""     :splitfrom$=""  :splitdst$=""
  46.  !jointotal%=0   :splittotal%=0
  47. !#joinseqsize%=0 :splitseqsize%=0
  48. "!joinname$=""   :splitname$=""
  49. joinseq%=0     :splitseq%=0
  50. initjoin:
  51. initsplit
  52. quit%=
  53. error
  54.  "Wimp_Poll",%110000110001,q% 
  55.  event%
  56.  event% 
  57. redraw
  58. +%    
  59.  "Wimp_OpenWindow",,q%
  60. close
  61. --    
  62.  q%!12=-2 
  63. barclick 
  64. winclick
  65. .'    
  66.  "Wimp_ProcessKey",q%!24
  67.  !q%=1 quit%=
  68.  17,18: 
  69. message
  70.  quit%
  71.  "Wimp_CloseDown",task%,&4b534154
  72. close
  73.  "Wimp_CloseWindow",,q%
  74.  !q% 
  75.  join%  : 
  76. initjoin
  77.  split% : 
  78. initsplit
  79. message
  80.  q%!16 
  81.  0:quit%=
  82. filedrop
  83. redraw
  84.  "Wimp_RedrawWindow",,q% 
  85.  more%
  86.  more%
  87.   x0%=q%!4-q%!20
  88.   y0%=q%!16-q%!24
  89.  "Wimp_ReadPixTrans",&100,spr%,"ampy",,,,q%+&300,q%+&310
  90.  "OS_SpriteOp",308,spr%,"ampy",x0%+18,y0%-302,0,q%+&300,q%+&310
  91.  "Wimp_GetRectangle",,q% 
  92.  more%
  93. filedrop
  94.  q%!20 
  95.  join%  : 
  96.  q%!40 
  97.       
  98.  &1000: 
  99. openjoin
  100. WH      
  101.  splitopen%=
  102. open(split%):splitopen%=
  103. :splitfrom$=
  104. getfd
  105. X        
  106. openjoin
  107.  joinopen%=
  108. open(join%)
  109.   joinseq%=0
  110.   joinopen%=
  111.   jointo$=
  112. getfd
  113. sets(join%, 2, "None")
  114. barclick
  115.  (q%!8 
  116.  %010)=%010 
  117.  "Wimp_CreateMenu",,menu%,!q%-64,184
  118. open(wh%)
  119. q%!&300=wh%
  120.  "Wimp_GetWindowState",,q%+&300
  121. m,q%!&31C=-1:
  122.  "Wimp_OpenWindow",,q%+&300
  123. getfd
  124. fd$=""
  125. fdchar$=""
  126.  X<256 
  127.  fdchar$<>
  128.   fd$+=fdchar$
  129.   fdchar$=
  130. (q%?X)
  131.   X+=1
  132.  File format
  133.  12 - original leafname CR terminated
  134.   1 - number of files
  135.   1 - file number
  136.   4 - total size
  137.  a%,b%,totsize%,wrong%,file%,file$,area%:wrong%=
  138. file$=
  139. getfd
  140. file%=
  141. (file$)
  142.  "OS_GBPB",4,file%,q%,12,0
  143.  joinname$="" joinname$=$q%
  144.  joinname$<>$q% 
  145. report("This is not the right file")
  146.   wrong%=
  147.  wrong% 
  148.  "OS_BGet",,file% 
  149.  joinseqsize%
  150.  "OS_BGet",,file% 
  151.  a%<>joinseq% 
  152. `    
  153. report("This file is out of sequence, please drag the correct file to the Join window")
  154.     wrong%=
  155.  wrong% 
  156.  "Hourglass_On"
  157.  "OS_BGet",,file% 
  158.  "OS_BGet",,file% 
  159.  b%:totsize%=b%+(a%<<8)
  160.  "OS_BGet",,file% 
  161.  "OS_BGet",,file% 
  162.  b%:totsize%+=(a%<<16)+(b%<<24)
  163.  "OS_File",5,file$ 
  164.  ,,,,length%:length%-=18
  165.  "OS_Module",6,,,length% 
  166.  ,,area%
  167.  "XOS_GBPB",3,file%,area%,length%,18
  168.  joinseq%=0 
  169. )    a%=
  170. (jointo$+"."+joinname$):
  171.     joinptr%=0
  172.  "XOS_Find",&C3,jointo$+"."+joinname$ 
  173.  dst%
  174.  "XOS_GBPB",1,dst%,area%,length%,joinptr% 
  175.  ,,,,joinptr%
  176.  "XOS_Find",0,dst%
  177.  "XOS_Module",7,,area%
  178.   joinseq%+=1
  179.  joinseq%=joinseqsize% !q%=join%:
  180.  "Wimp_CloseWindow",,q%:
  181. initjoin
  182. sets(join%, 2, 
  183. joinseq%+" of "+
  184. joinseqsize%)
  185.  "Hourglass_Off"
  186.  "OS_Find",0,file%
  187. winclick
  188.  q%!12 
  189.  split%: 
  190.  q%!16=11 
  191. dosplit
  192.  out%  : 
  193.  q%!16=2  
  194.  "Wimp_CloseWindow",,q%+12
  195.  info% : 
  196.  q%!16=5  
  197. open(me%)
  198.  next% : 
  199.  q%!16=1  
  200. makefile
  201. geticon(w, i):
  202.  x,x$
  203. =!(q%+&300)=w:!(q%+&304)=i:
  204.  "Wimp_GetIconState",,q%+&300
  205. /x$="":x=q%!&31C:
  206.  ?x>31:x$+=
  207. ?x:x+=1:
  208. issel(w, i)
  209. q%!&300=w:q%!&304=i
  210.  "Wimp_GetIconState",,q%+&300
  211. =(q%!&318 
  212.  1<<21)
  213. sets(w, i, s$)
  214. 7q%!&300=w:q%!&304=i:
  215.  "Wimp_GetIconState",,q%+&300
  216. $(q%!&31C)=s$
  217. 7q%!&308=0:q%!&30C=0:
  218.  "Wimp_SetIconState",,q%+&300
  219. report(e$)
  220. sets(out%, 1, e$)
  221. open(out%)
  222. dosplit
  223. splitto%=
  224. issel(split%, 9)
  225. splitsize%=794*1024
  226. issel(split%, 3) splitsize%=1584*1024
  227. issel(split%, 4) splitsize%=
  228. geticon(split%,5))*1024
  229. splitseq%=0
  230.  "OS_File",5,splitfrom$ 
  231.  ,,,,splittotal%
  232. *splitseqsize%=(splittotal%/splitsize%)
  233.  splitseqsize%<>splittotal%/splitsize% splitseqsize%+=1
  234. !q%=split%
  235.  "Wimp_CloseWindow",,q%
  236. splitname$=splitfrom$
  237. splitname$,".")
  238. 0  splitname$=
  239. splitname$,
  240. splitname$,".")+1)
  241. splitptr%=0
  242.  splitto% 
  243. sets(next%, 0, "Please insert disc 1 of "+
  244. splitseqsize%)
  245. open(next%)
  246.   splitdst$="adfs::0.$."
  247.   splitdst$=splitfrom$
  248.     splitdst$=
  249. splitdst$)
  250. splitdst$)="."
  251. makefile
  252.  splitseq%=splitseqsize%
  253. makefile
  254.  file%
  255.  "Hourglass_On"
  256. )file%=
  257. (splitdst$+"Split"+
  258. splitseq%)
  259.  #file%,splitname$+
  260.  #file%=12
  261.  #file%,splitseqsize%
  262.  #file%,splitseq%
  263.  #file%,(splittotal% 
  264.  &FF)
  265.  #file%,((splittotal%>>8) 
  266.  &FF)
  267.  #file%,((splittotal%>>16) 
  268.  &FF)
  269.  #file%,((splittotal%>>24) 
  270.  &FF)
  271.  "OS_Find",&43,splitfrom$ 
  272.  src%
  273.  "OS_Module",6,,,splitsize% 
  274.  ,,area%
  275.  "XOS_GBPB",3,src%,area%,splitsize%,splitptr%
  276.  "XOS_GBPB",1,file%,area%,splitsize%,18
  277.  "XOS_Module",7,,area%
  278.  "OS_Find",0,src%
  279.  "OS_Find",0,file%
  280. &splitseq%+=1:splitptr%+=splitsize%
  281.  splittotal%-(splitseq%*splitsize%)<splitsize% splitsize%=splittotal%-(splitseq%*splitsize%)
  282.  splitto% 
  283. sets(next%, 0, "Please insert disc "+
  284. (splitseq%+1)+" of "+
  285. splitseqsize%)
  286.  splitseq%=splitseqsize% !q%=next%:
  287.  "Wimp_CloseWindow",,q%:
  288. initsplit
  289.  "Hourglass_Off"
  290. error
  291. 7!q%=
  292. :$(q%+4)=
  293. $+" (internal error code "+
  294. +")"+
  295.  "Wimp_ReportError",q%,3,"FileSplitter" 
  296.  ,fatal
  297.  fatal=2 quit%=
  298. initsplit
  299. splitptr%=0    :splitto%=0
  300.  splitfrom$=""  :splitdst$=""
  301. #splittotal%=0  :splitseqsize%=0
  302. splitname$=""  :splitseq%=0
  303. splitopen%=
  304. initjoin
  305. !joinptr%=0    :joinseqsize%=0
  306. jointo$=""    :joinname$=""
  307. jointotal%=0  :joinseq%=0
  308. joinopen%=
  309.