home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
The Datafile PD-CD 3
/
PDCD_3.iso
/
utilities
/
utilsm
/
makeboot
/
!MakeBoot
/
Source
(
.txt
)
< prev
Wrap
RISC OS BBC BASIC V Source
|
1993-12-06
|
33KB
|
1,534 lines
><MakeBoot$Dir>.Source
This application is FreeWare. (c) 1993 Dick Alstein
Appl$="MakeBoot"
Version$="1.14 (6-12-93)"
error
quit%=
)mask%=1+(1<<4)+(1<<5)+(1<<11)+(1<<12)
"Wimp_Poll",mask%,blk%
reason%
reason%
1 :
redraw(blk%!0)
2 :
"Wimp_OpenWindow",,blk%
blk%!0
!
winhdl%(0),winhdl%(1)
.
"Wimp_GetPointerInfo",,ptrinfo%
ptrinfo%!8=1
)
"Filer_OpenDir "+bootdir$
-1)
)
"Wimp_CloseWindow",,blk%
'
"Wimp_CloseWindow",,blk%
6 :
mouseclick(blk%!0,blk%!4,blk%!8,blk%!12,blk%!16)
7 :
moveappl
8 :
key(blk%!0,blk%!4,blk%!24)
9 :
menuselect(blk%)
17,18 :
receive(blk%!4,blk%!8,blk%!16)
quit%
msg_exit
"Wimp_CloseDown"
buf%,w%,i%
errblk% &100
"Wimp_Initialise",200,&4B534154,Appl$
osversion%,thistask%
error :
blk% &600
indsize%=&600
indir% indsize%
indirend%=indir%+indsize%
ptrinfo% 20
dragblk% 60
scrapblk% 256
"OS_ReadVarVal","MakeBoot$Dir",scrapblk%,256,0
,,len%
scrapblk%?len%=13
ApplDir$=$(scrapblk%)
ApplPath$="MakeBootRes:"
msg_init
scrapblk%!0=-1
:!scrapblk%!4=0 : scrapblk%!8=0
;%scrapblk%!12=82 : scrapblk%!16=68
scrapblk%!20=&7000301A
$(scrapblk%+24)="!makeboot"
"Wimp_CreateIcon",,scrapblk%
baricon%
winhdl%(1)
wintitle%(1)
maxapps%=256
"Wimp_OpenTemplate",,ApplPath$+"Templates"
C"infowin%=
loadtemplate("Info")
D!$(blk%!(92+3*32+20))=Version$
E'winhdl%(0)=
loadtemplate("BootSeq")
icon0xmin%=blk%!(92+0*32+0)
icon0xmax%=blk%!(92+0*32+8)
icon0ymin%=blk%!(92+0*32+4)
icon1xmin%=blk%!(92+1*32+0)
icon1xmax%=blk%!(92+1*32+8)
icon2xmin%=blk%!(92+2*32+0)
icon2xmax%=blk%!(92+2*32+8)
itemheight%=80
wintitle%(0)=blk%!76
i% (blk%!84)
wintitle%(1)=i%
blk%!76=wintitle%(1)
"Wimp_CreateWindow",,blk%+4
winhdl%(1)
S($(wintitle%(0))=
msg_lookup0("BSEQ")
T)$(wintitle%(1))=
msg_lookup0("DBSEQ")
U#filewin%=
loadtemplate("Files")
V#filename_dir%=blk%!(92+2*32+20)
W$filename_leaf%=blk%!(92+3*32+20)
X(saveseqwin%=
loadtemplate("SaveSeq")
Y"saveseq_dir%=blk%!(92+2*32+20)
Z#saveseq_leaf%=blk%!(92+3*32+20)
[(dialogwin%=
loadtemplate("Dialogue")
dial_msg%=blk%!(92+20)
]<dial_buttoncol%=(blk%!(92+1*32+16))
((1<<2)+(&FF<<24))
dial_text%(3)
_#dial_text%(1)=blk%!(92+1*32+20)
`#dial_text%(2)=blk%!(92+2*32+20)
a#dial_text%(3)=blk%!(92+3*32+20)
"Wimp_CloseTemplate"
nractions%=6
action%(nractions%)
i%=0
nractions%
buf% 16
action%(i%)=buf%
$(action%(0))="Run"
$(action%(1))="Boot"
$(action%(2))="IconSprites"
l!$(action%(3))="Filer_OpenDir"
$(action%(4))="ToolSprites"
$(action%(5))="Filer_Boot"
$(action%(6))="RMLoad"
Action$(nractions%+1)
i%=0
nractions%
r) Action$(i%)=
upcase($(action%(i%)))
nrapps%(1)
nrapps%(0)=0
nrapps%(1)=0
w8applblksize%=0 :
size of a block for item data
x#applblksize%+=256 :
pathname
y#applblksize%+=12 :
leafname
applblksize%+=4 :
type
{4applblksize%+=16 :
name of sprite to display
|!applblksize%+=4 :
action
},applblksize%+=4 :
"disabled" switch
~%applblksize%+=256 :
parameters
appl%(1,maxapps%) :
pointers to item data blocks
heap_init
initmenus
readscreenvars
display%(1) :
0 -> Name + Action, 1 -> Full info
winxmin%(1),winymin%(1),winxmax%(1),winymax%(1)
choices_load
selecticon(saveseqwin%,5,makebackup%)
changed%(1)
changed%(0)=
changed%(1)=
8shutdown_ok%=
allow shutdown with changes made?
*bootdir$=
striproot(ApplDir$)+".!Boot"
seqfname$(1)
seqfname$(0)="!Run"
seqfname$(1)="DeskBoot"
loadall
redraw(handle%)
w%,more%,top%,linenr%,lastline%
handle%=winhdl%(0)
w%=0
w%=1
blk%!0=handle%
"Wimp_RedrawWindow",,blk%
more%
#top%=blk%!16-blk%!24+icon0ymin%
more%
* linenr%=(top%-blk%!40)
itemheight%
, lastline%=(top%-blk%!32)
itemheight%
linenr%<=lastline%
0
(linenr%<nrapps%(w%))
(linenr%>=0)
)
print item data for this line
b%=appl%(w%,linenr%)
# scrapblk%!0=icon0xmin%+12
scrapblk%!8=icon0xmax%
7 scrapblk%!12=icon0ymin%-(itemheight%*linenr%)
0 scrapblk%!4=(scrapblk%!12)-itemheight%
b%!292
" scrapblk%!16=&13400133
" scrapblk%!16=&17000133
scrapblk%!20=b%+256
scrapblk%!24=b%+272
scrapblk%!28=12
'
"Wimp_PlotIcon",,scrapblk%
scrapblk%!0=icon1xmin%
scrapblk%!8=icon1xmax%
b%!292
" scrapblk%!16=&13000131
" scrapblk%!16=&1B000131
& scrapblk%!20=action%(b%!288)
scrapblk%!28=-1
scrapblk%!32=16
'
"Wimp_PlotIcon",,scrapblk%
display%(w%)=1
" scrapblk%!0=icon2xmin%
" scrapblk%!8=icon2xmax%
b%!292
$ scrapblk%!16=&13000131
$ scrapblk%!16=&18000131
scrapblk%!20=b%+296
scrapblk%!28=-1
scrapblk%!32=256
)
"Wimp_PlotIcon",,scrapblk%
linenr%+=1
"Wimp_GetRectangle",,blk%
more%
coordtolinenr(w%,y%)
yc%,l%
scrapblk%!0=winhdl%(w%)
"Wimp_GetWindowState",,scrapblk%
/yc%=scrapblk%!16-scrapblk%!24+icon0ymin%-y%
yc%<0
l%=-1
l%=yc%
itemheight%
l%>nrapps%(w%)
l%=nrapps%(w%)
coordtofieldnr(w%,x%)
scrapblk%!0=winhdl%(w%)
"Wimp_GetWindowState",,scrapblk%
x%-=scrapblk%!4-scrapblk%!20
x%<icon1xmin%
f%=0
x%<icon2xmin%
f%=1
f%=2
addappl(w%,name$,type%,action%,args$,off%,nr%)
b%,i%,spr$
nrapps%(w%)=maxapps%
dialogue(0)
nr%<0
nr%=0
nr%<nrapps%(w%)
3
inserting in sequence - shift other items
#
i%=nrapps%(w%)
nr%
% appl%(w%,i%+1)=appl%(w%,i%)
nr%=nrapps%(w%)
b%=
heap_get(applblksize%)
appl%(w%,nr%)=b%
$(b%)=name$
$(b%+256)=
leafname(name$)
b%!268=type%
type%
!
0 : spr$="file_???"
"
&1000 : spr$="directory"
&2000
#
sprexists($(b%+256))
spr$=$(b%+256)
spr$="application"
&FFFFFFFF
spr$="file_xxx"
spr$="file_"+
~(type%)
sprexists(spr$)
spr$="file_xxx"
$(b%+272)="S"+spr$
action%=-1
+
attach default action to new item
type%
&1000 : b%!288=3
&2000
*
(osversion%>=300)
(w%=1)
b%!288=5
-
fileexists(name$+".!Boot")
b%!288=1
2
fileexists(name$+".!Sprites")
b%!288=1
b%!288=0
&FF9 : b%!288=2
&FFA : b%!288=6
: b%!288=0
&
b%!288=action%
b%!292=off%
$(b%+296)=args$
nrapps%(w%)+=1
setextent(w%)
setchanged(w%,
redrawfromline(w%,nr%)
redrawline(w%,linenr%)
xmin%,ymin%,xmax%,ymax%
xmin%=icon0xmin%+12
xmax%=icon2xmax%
7*ymax%=icon0ymin%-(itemheight%*linenr%)
ymin%=ymax%-itemheight%
"Wimp_ForceRedraw",winhdl%(w%),xmin%,ymin%,xmax%,ymax%
redrawfromline(w%,linenr%)
xmin%,ymin%,xmax%,ymax%
xmin%=icon0xmin%+12
xmax%=icon2xmax%
@*ymax%=icon0ymin%-(itemheight%*linenr%)
ymin%=-10000
"Wimp_ForceRedraw",winhdl%(w%),xmin%,ymin%,xmax%,ymax%
clearsequence(w%)
nrapps%(w%)>0
deleteappl(w%,nrapps%(w%)-1)
deleteappl(w%,nr%)
heap_release(appl%(w%,nr%))
i%=nr%
(nrapps%(w%)-1)
P! appl%(w%,i%)=appl%(w%,i%+1)
nrapps%(w%)-=1
redrawfromline(w%,nr%)
setchanged(w%,
setextent(w%)
dirname(F$)
p%,q%
F$,".",p%)
q% > 0
p%=q%+1
q%=0
F$,p%-2)
errbox(err$,boxes%)
errblk%!0=0
$(errblk%+4)=err$+
"Wimp_ReportError",errblk%,boxes%,Appl$
,click%
=(click%=1)
error
"Wimp_CloseDown" :
errbox(
$+" (line "+
)+")",3)
"Wimp_CloseDown"
direxists(f$)
type%,flags%
type%=0
(f$)>0
"XOS_File",17,f$
type%;flags%
=(type%=2)
((flags%
1)=0)
fileexists(f$)
type%,flags%
type%=0
(f$)>0
"XOS_File",17,f$
type%;flags%
=(type%=1)
((flags%
1)=0)
seqfname(i%)
=bootdir$+"."+seqfname$(i%)
key(window%,icon%,key%)
window%
filewin%
!
(icon%=3)
(key%=13)
# bootdir$=$(filename_dir%)
( seqfname$(1)=$(filename_leaf%)
#
selecticon(filewin%,4,1)
"
"Wimp_CreateMenu",,-1
#
selecticon(filewin%,4,0)
#
"Wimp_ProcessKey",key%
!
"Wimp_ProcessKey",key%
leafname(f$)
p%,q%
p%=q%+1
q%=
f$,".",p%)
q%=0
f$,p%)
--- split name of root directory from pathname ---
striproot(f$)
p%,q%
f$,"$")
q%>0
p%=q%
q%=
f$,"$",p%+1)
f$,p%)
loadall
i%,loaderror%
loaderror%=0
"Hourglass_On"
direxists(bootdir$)
i%=0
&
file