home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Archive Magazine 1997
/
ARCHIVE_97.iso
/
multimedia
/
ultima
/
_willy
/
_runimage
(
.txt
)
< prev
next >
Wrap
RISC OS BBC BASIC V Source
|
1996-05-31
|
54KB
|
2,429 lines
Ultimap v 2.00 (30 March 1995)
Simon Hayles 1994
=&40000
taskid% 4:$taskid%="TASK"
"Wimp_Initialise",200,!taskid%,"Ultimap"
version%,task_handle%
errorbox
"OS_Module",16,"Ubase%Ultimap"
*UBASE 40000 800000
global variables
box% 12,box2% 12,matrix% 16,origin1% 8,origin2% 8
! icon_font$="homerton.medium"
full_name$="Untitled"
query_string$=""
menu%=0
sprite_size%=&1E000
q% 256,old_q% 256
errblk% 3000
main% 1000,sprites% sprite_size%
@ !sprites%=sprite_size%:sprites%!8=16:
spop%,&209,sprites%
wimp_palette% 20*4
page_stack% 1024
s_sprites%=1
s_draw%=2
s_replay%=3
s_quicktime%=4
s_fonts%=5
s_starcoms%=6
s_loadorder%=7
s_sounds%=8
s_text%=9
s_pages%=10
s_clicks%=11
s_mousedrag%=12
s_often%=13
s_pointer%=14
s_mouse%=15
s_pageshown%=16
s_spare%=17
s_clickson%=18
s_temp%=19
s_sequences%=20
options
printing%=
portrait%=
current_page%=0
margin%=16
click_time=1
click_pause=1
temp_list%=0
trying%=
speaking_text%=
speak_sound%=
speak_token%=
h_scroll%=
v_scroll%=
toggle_icon%=
title_bar%=
scanning%=
scan_keys%=1
scan_time%=100
scan_object%=1
scan_count%=0
menu_enabled%=
ws%=sprites%+32
page_size%=3
file_version%=101
current_page$="Page 1"
ws%=sprites%+32
"Hourglass_On"
load_templates
get_mode_info
load_options
new_file
"OS_GetEnv"
EnvStr$,end_adr%
EnvStr$," -quit ")
Y- I%=
EnvStr$,""""):I%=
EnvStr$,"""",I%+1)
I%+=1:
EnvStr$,I%,1)<>" "
EnvStr$,I%)
f$<>"" full_name$=f$:
load_file(f$,2)
icon_bar%=
iconbar
setcaret%,main_w%,-1,0,10,10
"Hourglass_Off"
errorbox
drag%,,-1
begin_trying
try_poll
load_templates
font_array% 256:
4:t%!font_array%=0:
"Wimp_OpenTemplate",,"<Obey$Dir>.Templates"
winds% 2000,indir% 1000
indl%=indir%+4000
"Wimp_LoadTemplate",,winds%,indir%,indl%,-1,"main_w",0
,,indir%
"Wimp_CreateWindow",,winds%
main_w%
"Wimp_LoadTemplate",,winds%,indir%,indl%,font_array%,"pagelist_wc",0
,,indir%
"Wimp_CreateWindow",,winds%
pagelist_wc%
"Wimp_LoadTemplate",,winds%,indir%,indl%,font_array%,"print_w",0
,,indir%
"Wimp_CreateWindow",,winds%
print_w%
"Wimp_LoadTemplate",,winds%,indir%,indl%,-1,"info",0
,,indir%
"Wimp_CreateWindow",,winds%
info%
"Wimp_CloseTemplate"
load_options
}$ ptr%=
("<Ultimap$Dir>.options")
#ptr%,toolbox_on%,scanning%,scan_keys%,scan_time%,menu_enabled%,sound_vol%
#ptr%
% ptr%=
("<Ultimap$Dir>.messages")
#ptr%,info$,info1$
#ptr%
set_icon_text(info%,1,info$)
set_icon_text(info%,2,info1$)
finish
setcaret%,-1
lose_fonts
"Wimp_CloseDown",task_handle%,!taskid%
"OS_Exit"
redraw_window
redraww%,,q%
more%
more%
- offx%=(q%!4-q%!20):offy%=(q%!16-q%!24)
!q%
\
main_w%:
draw_main_w(q%!28-offx%,q%!32-offy%,q%!36-offx%,q%!40-offy%,offx%,offy%)
Z
pagelist_wc%:
draw_pagelist_wc(q%!28-offx%,q%!32-offy%,q%!36-offx%,q%!40-offy%)
getr%,,q%
more%
front(handle%)
!q%=handle%:
getw%,,q%
open_window(!q%,q%!4,q%!8,q%!12,q%!16,q%!20,q%!24,-1)
open_window(handle%,x%,y%,x1%,y1%,scx%,scy%,bhandle%)
handle%=-1
q%!28=bhandle%
q%!0=handle%
( q%!4=x%:q%!8=y%:q%!12=x1%:q%!16=y1%
q%!20=scx%:q%!24=scy%
openw%,,q%
close_window(handle%)
!q%=handle%:
closew%,,q%
getenv%=&10
wimp% = (1<<18) + (3<<6)
createw%=wimp%+1
createicon%=wimp%+2
deleteicon%=wimp%+4
openw%=wimp%+5
closew%=wimp%+6
poll%=wimp%+7
redraww%=wimp%+8
updatew%=wimp%+9
getr%=wimp%+10
getw%=wimp%+11
getwi%=wimp%+12
seti%=wimp%+13
geti%=wimp%+14
getp%=wimp%+15
drag%=wimp%+16
forceredraw%=wimp%+17
setcaret%=wimp%+18
getcaret%=wimp%+19
createmenu%=wimp%+20
setextent%=wimp%+&17
processkey%=wimp%+&1C
sendmessage%=wimp%+&27
crsubmenu%=wimp%+&28
ploticon%=&400E2
setcol%=&40743
spop%=&2E
findfont%=&40081
losefont%=&40082
fontinfo%=&40084
stringwidth%=&40085
setfont%=&4008A
currentfont%=&4008B
converttoos%=&40088
converttopoints%=&40089
paint%=&40086
findcaret%=&4008D
charbbox%=&4008E
Ubase%=&1C0100
newfile%=Ubase%
newstack%=Ubase%+1
killstack%=Ubase%+2
addentry%=Ubase%+3
amendentry%=Ubase%+4
findtoken%=Ubase%+5
killentry%=Ubase%+6
movedata%=Ubase%+7
addpacked%=Ubase%+8
getentry%=Ubase%+9
unpacksprite%=Ubase%+10
nentries%=Ubase%+11
movetoend%=Ubase%+12
readstatus%=Ubase%+13
writestatus%=Ubase%+14
rendershape%=Ubase%+15
getnth%=Ubase%+17
locatefile%=Ubase%+19
playsound%=Ubase%+20
PD%=&80140
PDselect%=PD%+5
PDabort%=PD%+9
PDpagesize%=PD%+3
PDgiverec%=PD%+11
PDdrawpage%=PD%+12
PDgetrec%=PD%+13
PDendjob%=PD%+8
"OS_Module",14,"Ubase%Ultimap"
get_pointer
getp%,,q%
Hmousex%=!q%:mousey%=q%!4:b%=q%!8:handle%=q%!12:icon%=q%!16:ob%=q%!20
errorbox
SYS drag%,,-1
4!errblk%=
$:t$="("+
+")"+t$+" at line "+
$(errblk%+4)=t$+
"Wimp_ReportError",errblk%,1,"Ultimap"
finish:
IF printing% printing%=FALSE:PROCclose_window(print_w%)
iconbar
+ !q%=-1:q%!4=0:q%!8=0:q%!12=64:q%!16=64
q%!20=&300A
string0(q%+24,appsprite$)
"Wimp_CreateIcon",,q%
handle%
=handle%
set_icon_fonts
findfont%,,icon_font$,12*16,12*16
font%
"Wimp_WhichIcon",print_w%,q%,1<<6,1<<6
< t%=0:
icon_font(print_w%,t%!q%,font%):t%+=4:
t%!q%=-1
icon_font(window%,icon%,font%)
% !errblk%=window%:errblk%!4=icon%
- errblk%!12=&FF000000:errblk%!8=font%<<24
font%?font_array%+=1
seti%,,errblk%
lose_fonts
255:n%=A%?font_array%:A%?font_array%=0
n%>0
B%=1
losefont%,A%:
get_mode_info
"Wimp_ReadPalette",,wimp_palette%
"OS_ReadModeVariable",-1,4
,,xef%
"OS_ReadModeVariable",-1,5
,,yef%
"OS_ReadModeVariable",-1,11
,,screen_width%
"OS_ReadModeVariable",-1,12
,,screen_height%
(J screen_width%=screen_width%<<xef%:screen_height%=screen_height%<<yef%
start_drag(type%,x%,y%,x1%,y1%)
!q%=0:q%!4=5
-) q%!8=x%:q%!12=y%:q%!16=x1%:q%!20=y1%
.= q%!24=0:q%!28=0:q%!32=screen_width%:q%!36=screen_height%
drag%,,q%
drag_type%=type%
--------------------------------------------------------------------------------------------------------
string0(t%):
t$:t$="":
?t%<32:=""
:t$=t$+
?t%:t%+=1:
?t%<32
t$=255:=t$
string0(t%,t$):$t%=t$:t%?
t$=0:
--------------------------------------------------------------------------------------------------------
check_pagelist_wc
but%=q%!8
>$ !ws%=pagelist_wc%:
getw%,,ws%
?/ offx%=(ws%!4-ws%!20):offy%=(ws%!16-ws%!24)
@! page%=(((q%!4)-offy%)
-48)+1
nentries%,s_pages%
np%:
page%>np%
getnth%,s_pages%,page%
,page%
current_page%=page%
arrange_pagelist_wc(page%)
pre_process
show_page(page%)
scanning%
but%
createmenu%,,-1
show_page(page%)
current_page%=page%
!q%=main_w%:
getw%,,q%
(q%!32)
(1<<16)
forceredraw%,-1,q%!4,q%!8,q%!12,q%!16
window_title(main_w%,full_name$)
getentry%,s_pages%,page%
adr%
Q# current_page$=
string0(adr%+4)
"set Upage "+current_page$
update_object(stack%,object%)
adr%
getentry%,stack%,object%
adr%
forceredraw%,main_w%,adr%!12,adr%!16,adr%!20,adr%!24
set_icon_state(window%,icon%,eor%,clear%)
\X !errblk%=window%:errblk%!4=icon%:errblk%!8=eor%:errblk%!12=clear%:
seti%,,errblk%
icon_state(window%,icon%)
`C !errblk%=window%:errblk%!4=icon%:
geti%,,errblk%:=errblk%!24
set_icon_text(window%,icon%,text$)
c7 !errblk%=window%:errblk%!4=icon%:
geti%,,errblk%
string0(errblk%!28,
text$,(errblk%!36)-1))
e/ errblk%!8=0:errblk%!12=0:
seti%,,errblk%
leaf(name$):
name$,".")=0:=name$
name$=
name$,
name$-
name$,"."))
name$,".")=0:=name$
start_drag(type%,x%,y%,x1%,y1%)
!q%=0:q%!4=5
n) q%!8=x%:q%!12=y%:q%!16=x1%:q%!20=y1%
o= q%!24=0:q%!28=0:q%!32=screen_width%:q%!36=screen_height%
drag%,,q%
drag_type%=type%
ramfetch
DMT_ref%=q%!4
DMT%=q%!20
DMT_len%=q%!24
file_type%
y>
&AFF,&FF9:
save_picture(drag_ptype%,drag_picture%,"")
z*
&FFF:
save_text(drag_picture%,"")
{)
&D3C:
save_sound(drag_sound%,"")
datasaveack
q%!12<>myref%
DMT%=0
f_type%=q%!40
f_type%
&AFF,&FF9:
save_picture(drag_ptype%,drag_picture%,
string0(q%+44))
&D3C:
save_sound(drag_sound%,
string0(q%+44))
&FFF:
save_text(drag_picture%,
string0(q%+44))
q%!12=q%!8:q%!16=3
sendmessage%,17,q%,q%!4
save_picture(type%,token%,name$)
save$=""
DMT_ptr%=0
"Hourglass_On"
getentry%,type%,token%
adr%
len%=(!adr%)-16
readstatus%,type%,token%
l% len%=l%
adr%+=16
type%=s_sprites%
.
getentry%,s_sprites%,token%
adr%
!adr%=(adr%!16)+16
! save$=
string0(adr%+4)
+ adr%!4=1:adr%!8=16:adr%!12=!adr%
len%=!adr%+12:adr%+=4
9
unpacksprite%,s_sprites%,token%,sprites%+12
!sprites%=1
sprites%!4=16
& sprites%!8=(sprites%!12)+16
len%=sprites%!8
adr%=sprites%
file_type%=&FF9
file_type%=&AFF
DMT_mylen%=len%
DMT_data%=adr%
save_slave(name$,adr%,len%,file_type%)
save$<>""
getentry%,s_sprites%,token%
adr%
string0(adr%+4,save$)
save_sound(sound%,name$)
DMT_ptr%=0
"Hourglass_On"
getentry%,s_sounds%,sound%
adr%
len%=(!adr%)-24
readstatus%,s_sounds%,sound%
l% len%=l%
adr%+=24
DMT_mylen%=len%
DMT_data%=adr%
save_slave(name$,adr%,len%,&D3C)
save_text(text%,name$)
getentry%,s_text%,text%
adr%
movedata%,adr%,ws%,!adr%
adr%=ws%+4:t%=adr%
len%=0
?t%=13 ?t%=10
?t%<>0 len%+=1:t%+=1
?t%=0
?t%=0
DMT_ptr%=0
"Hourglass_On"
DMT_mylen%=len%
DMT_data%=adr%
save_slave(name$,adr%,len%,&FFF)
save_slave(name$,adr%,len%,file_type%)
DMT%
DMT_mylen%-DMT_ptr%>DMT_len%
l%=DMT_len%
l%=DMT_mylen%-DMT_ptr%
"Hourglass_Off"
"Wimp_TransferBlock",task_handle%,DMT_data%+DMT_ptr%,DMT_ref%,DMT%,l%
DMT_ptr%+=l%
q%!12=q%!8:q%!16=7
q%!24=l%
sendmessage%,18,q%,q%!4:
send RAM transmit
.
"save "+name$+" "+
~adr%+" +"+
~len%
+
"SETTYPE "+name$+" "+
~file_type%
"Hourglass_Off"
dataload
movedata%,q%,old_q%,256
old_q%!40
&BC3:
E
old_q%!20=main_w%
(old_q%!20=-2
old_q%!24=icon_bar%)
old_q%!12<>0
modified%
4
open_query("load"+
string0(old_q%+44))
.
load_file(
string0(old_q%+44),1)
T old_q%!12=old_q%!8:old_q%!16=4:
"Wimp_SendMessage",17,old_q%,old_q%!4
load_file(name$,error%)
(name$):l%=
set_slot(
&4000)*&4000+&4000,error%)
newfile%
. full_name$=
name$,
(name$)-
name$,"!")-1)
"Hourglass_On"
"load "+name$+" 40000"
version%=!&4000C
locatefile%,&78000
modified%=0
query_string$=""
edited_area%=0
W current_page%=!&40020:toolbox_on%=!&40024:menu_enabled%=!&40028:page_size%=!&4002C
P h_scroll%=!&40060:v_scroll%=!&40064:title_bar%=!&40068:toggle_icon%=!&4006C
< scanning%=!&40070:scan_keys%=!&40074:scan_time%=!&40078
size_page
redefine_main_w
open_main_w
!&40030
4 t%=&40030:x%=t%!4:y%=t%!8:x1%=t%!12:y1%=t%!16
x1%>screen_width% x%=x%-(x1%-x%):x1%=screen_width%
y1%+40>screen_height% y%=y%-(y1%-y%)-40:y1%=screen_height%-40
x%<0 x%=0
y%<0 y%=0
open_window(main_w%,x%,y%,x1%,y1%,t%!20,t%!24,-1)
"Hourglass_Off"
"OS_ReadVarVal","Obey$Dir",main%,1000
,,T%
T%?main%=0
full_name$=
string0(main%)
window_title(main_w%,full_name$)
! appsprite$=
leaf(full_name$)
' menu$=
appsprite$,
(appsprite$)-1)
menu$<12
:menu$=menu$+
menu$=12
--------------------------------------------------------------------------------------------------------
new_file
set_slot(
+&4000,2)
newfile%
t%=1
newstack%
full_name$="No_Name"
----------------------------------------------------------------------------------------------------
open_centre(handle%,off%)
!q%=handle%:
getw%,,q%
+( w%=(q%!12)-(q%!4):h%=(q%!16)-(q%!8)
wx%=screen_width%
wy%=screen_height%
open_window(handle%,wx%,wy%+off%,wx%+w%,wy%+h%+off%,q%!20,q%!24,-1)
open_main_w
!ws%=main_w%:
getw%,,ws%
sx%=ws%!4:sy%=ws%!8
sx1%=ws%!12:sy1%=ws%!16
5) sh%=screen_height%:sw%=screen_width%
hs%=0:vs%=0:tb%=0
h_scroll% hs%=40
v_scroll% vs%+=40
title_bar% tb%=36
w%=sx1%-sx%:h%=sy1%-sy%
sy1%+tb%>sh% sy1%=sh%-tb%:sy%=sy1%-h%
sy%<hs% sy%=hs%
sx1%+vs%>sw% sx1%=sw%-vs%:sx%=sx1%-w%
sx%<0 sx%=0
!ws%=main_w%
ws%!4=sx%
ws%!8=sy%
ws%!12=sx1%
ws%!16=sy1%
ws%!20=0:ws%!24=0
ws%!28=-1
open_window(main_w%,ws%!4,ws%!8,ws%!12,ws%!16,ws%!20,ws%!24,ws%!28)
!q%=main_w%:
getw%,,ws%
----------------------------------------------------------------------------------------------------
draw_picture(type%,token%,x%,y%,w%,h%,flags%)
type%=s_draw% x%+=(1<<xef%):y%+=(1<<yef%):w%-=(2<<xef%):h%-=(2<<yef%)
getentry%,type%,token%
!a%>sprite_size%-24 flags%=flags%
P8 !errblk%=x%:errblk%!4=y%:errblk%!8=w%:errblk%!12=h%
rendershape%,type%,token%,sprites%,errblk%,flags%
----------------------------------------------------------------------------------------------------
window_title(window%,title$)
window%=main_w%
X1
getentry%,s_pages%,current_page%
adr%
Y+ title$=title$+" - "+
string0(adr%+4)
modified% title$=title$+" *"
\( !errblk%=window%:
getwi%,,errblk%
string0(errblk%!76,title$)
forceredraw%,-1,errblk%!4,(errblk%!16),errblk%!12,errblk%!16+36
----------------------------------------------------------------------------------------------------
check_icon_bar
f" mx%=!q%:my%=q%!4:button%=q%!8
button%
do_icon_bar_menu(mx%,my%):
front(main_w%)
setcaret%,main_w%,-1,0,0,10
do_icon_bar_menu(x%,y%)
scan_time%=0:scan_time%=100:scan_keys%=1
opt%=0
2:P%=main%
[opt opt%
.iconmenu
equs menu$
r) equd &070207:equd 208:equd 40:equd 0
s% equd 0:equd info%:equd &07000021
equs "Info "
u0 equd scanning%
1:equd ibmenu:equd &07000021
equs "Scanning "
w& equd 0:equd somenu:equd &07000021
equs "Sound volume"
y$ equd &80:equd -1:equd &07000021
equs "Quit "
.ibmenu
equs "Scanning":equd 0
~) equd &070207:equd 208:equd 40:equd 0
1 equd (scan_keys%=2)
1:equd -1:equd &07000021
equs "Two switches"
) equd &80:equd ibmenu1:equd &07000021
equs "Speed "
.somenu
equs "Sound Volume"
) equd &070207:equd 208:equd 40:equd 0
4 equd (sound_vol%=&10F)
1:equd -1:equd &07000021
equs "Off "
4 equd (sound_vol%=&14F)
1:equd -1:equd &07000021
equs "Quiet "
< equd &80
((sound_vol%=&17F)
1):equd -1:equd &07000021
equs "Loud "
.ibmenu1
! equs "Seconds":equb 0:equd 0
) equd &070207:equd 208:equd 40:equd 0
$ equd &84:equd -1:equd &07000121
" equd ibmess:equd ibval:equd 8
.ibval equs "a0-9."+
'.ibmess equs
(scan_time%/100)+
createmenu%,,main%,mx%-16,260
menu%=5
----------------------------------------------------------------------------------------------------
icon_bar_menu
!q%
q%!4
'
-1:scanning%=scanning%
7
scan_keys%=2 scan_keys%=1
scan_keys%=2
scanning%=
) t%=(
string0(ibmess)))*100
t% scan_time%=t%
scanning%=
q%!4
0:sound_vol%=&10F
1:sound_vol%=&14F
2:sound_vol%=&17F
modified%
open_query("")
finish
getp%,,q%:
q%!8
do_icon_bar_menu(mx%,my%)
--------------------------------------------------------------------------------------------------------
draw_main_w(wx%,wy%,wx1%,wy1%,offx%,offy%)
getentry%,s_pages%,current_page%
adr%
% stack%=adr%!20:page_col%=adr%!28
setcol%,page_col%:
wx%+offx%,wy%+offy%,wx1%-wx%,wy1%-wy%
nentries%,stack%
no%
object%=1
0
getnth%,stack%,object%
adr%,token%
E x%=adr%!12:y%=adr%!16:x1%=adr%!20:y1%=adr%!24:flags%=adr%!36
C
x%<wx1%
x1%>wx%
y%<wy1%
y1%>wy%
(flags%
128)=0
adr%!4
<
s_text%:
draw_text(stack%,token%,offx%,offy%)
e
s_sprites%,s_draw%:
draw_picture(adr%!4,adr%!8,x%+offx%,y%+offy%,x1%-x%,y1%-y%,flags%)
strip_spaces(text$)
text$=32 text$=
text$,
text$-1)
text$<>32
=text$
lower_case(text$):
text$="":=""
t$,t%,c%
text$
c%=
text$,t%,1))
c%>64
c%<91 c%+=32
t$=t$+
----------------------------------------------------------------------------------------------------
draw_text(stack%,token%,offx%,offy%)
speaking_text%
speak_token%=token%
highlight_text(stack%,token%,offx%,offy%,speak_word%):
getentry%,stack%,token%
adr%
x%=(adr%!12)+offx%
y%=(adr%!16)+offy%
" x1%=(adr%!20)-(1<<xef%)+offx%
" y1%=(adr%!24)-(1<<yef%)+offy%
. flags%=adr%!36:font%=adr%!40:b_s%=adr%!32
0 fcol%=adr%!52:
fcol%
&FF fcol%=page_col%
bcol%=adr%!56
flags%
1 fcol%=fcol%
&FFFFFF00:bcol%=bcol%
&FFFFFF00
draw_border(b_s%,fcol%,bcol%,x%,y%,x1%,y1%)
x%+=(1<<xef%)
x1%-=(1<<xef%)
y%+=(1<<yef%)
y1%-=(1<<yef%)
:font%=0
font%
getentry%,s_fonts%,font%
findfont%,,t%+4,adr%!44,adr%!48
font%
font%
bcol%
&FF bcol%=fcol%
"ColourTrans_SetFontColours",font%,bcol%,fcol%,14
fontinfo%,font%
,cx%,cy%,cx1%,cy1%
> cx%=-(1<<xef%):cy%=-(1<<yef%):cx1%=8<<xef%:cy1%=8<<yef%
text_height%=cy1%
getentry%,s_text%,adr%!8
text%
text%+=4
text_offset%=0
, px%=x%+margin%:py%=y1%-text_height%+cy%
$ centre%=
:right%=
:underline%=
flags%
8 centre%=
flags%
16 right%=
flags%
32 underline%=
text_offset%?text%
/
13:py%-=text_height%:text_offset%+=1
- text$=
string0(text%+text_offset%)
text_offset%+=
text$
font%
@
stringwidth%,,text$,1<<30,1<<30,-1,
text$
,,w%
&
converttoos%,,w%
-
centre% px%=x%+(x1%-x%)
(
right% px%=x1%-w%-margin%
6
underline% text$=
(25)+
(16)+text$
.
paint%,,text$,1<<4,px%,py%-cy%
w%=
text$*cx1%
-
centre% px%=x%+(x1%-x%)
(
right% px%=x1%-w%-margin%
3
setcol%,fcol%:
px%,py%+cy1%:
text$
8
underline%
px%,py%-cy%:
1,cx1%*
text$,0
text_offset%?text%=0
font%
losefont%,font%
draw_border(style%,col%,bcol%,x%,y%,x1%,y1%)
(bcol%
&FF)=0
setcol%,bcol%:
x%,y%,x1%-x%,y1%-y%
style%
setcol%,col%
x%,y%,x1%-x%,y1%-y%
bold
setcol%,&FFFFFF00
x%,y%:
x%,y1%:
x1%,y1%
''
setcol%,!(wimp_palette%+16)
x1%,y%:
x%,y%
inset
*'
setcol%,!(wimp_palette%+16)
+#
x%,y%:
x%,y1%:
x1%,y1%
setcol%,&FFFFFF00
x1%,y%:
x%,y%
play_sound(sound%)
getentry%,s_sounds%,sound%
adr1%
4G len%=(!adr1%)-24:
readstatus%,s_sounds%,sound%
l% len%=l%
errorbox:
playsound%,adr1%+24,len%,sound_vol%
play_sound_wait(sound%)
getentry%,s_sounds%,sound%
adr1%
<G len%=(!adr1%)-24:
readstatus%,s_sounds%,sound%
l% len%=l%
playsound%,adr1%+24,len%,sound_vol%
playsound%,0
t%<>-1
make_space(plus%)
B# size%=(!&40004-&40000)+plus%*2
C+ slot_size%=
+(size%
&4000)*&4000+&4000
"Wimp_SlotSize",slot_size%,-1
t%<slot_size%
1,"Ultimap has run out of memory"
set_slot(size%,error%)
slot_size%=size%
"Wimp_SlotSize",slot_size%,-1
t%<slot_size%
error%,"There's not enough memory to load this file!"
open_print_w
portrait% a%=0:b%=1<<21
a%=1<<21:b%=0
set_icon_state(print_w%,6,a%,1<<21)
set_icon_state(print_w%,7,b%,1<<21)
set_icon_text(print_w%,2,"1")
getp%,,q%
createmenu%,,-1
createmenu%,,print_w%,!q%-30,q%!4+60
check_print_w
b%=q%!8
q%!16
createmenu%,,-1
]) !q%=print_w%:q%!4=7:
geti%,,q%
^H
(q%!24)
(1<<21) style%=2:portrait%=
style%=1:portrait%=
_) !q%=print_w%:q%!4=2:
geti%,,q%
`$ run_num%=
string0(q%!28))
a
run_num%=0 run_num%=1
b(
print_routine(style%,run_num%)
c$
createmenu%,,-1
print_routine(style%,run_num%)
phandle%,ohandle%
left%,bottom%,right%,top%
copiesleft%,rect%
phandle%=
("printer:")
#phandle%:
1,"There is no printer driver!"
PDselect%,phandle%,"Ultima"
ohandle%
PDabort%,phandle%:
#phandle%:
PDselect%,ohandle%:printing%=
PDpagesize%
,,,left%,bottom%,right%,top%
"Hourglass_On"
loop%=1
run_num%
w" !ws%=main_w%:
getwi%,,ws%
x4 mx%=ws%!44:my%=ws%!48:mx1%=ws%!52:my1%=ws%!56
y4 !box%=mx%:box%!4=my%:box%!8=mx1%:box%!12=my1%
style%
landscape
page_size%=4
scx=.67
scy=.67
K !matrix%=0:matrix%!4=-scx*2^16:matrix%!8=scy*2^16:matrix%!12=0
[ !origin1%=(right%-left%)
16:origin1%!4=top%-(top%-bottom%)
2-(top%-bottom%)
scx=1.4
scy=1.5
K !matrix%=0:matrix%!4=-scx*2^16:matrix%!8=scy*2^16:matrix%!12=0
J !origin1%=(right%-left%)
20:origin1%!4=top%-(top%-bottom%)
portrait
scx=1.05
scy=.95
H !matrix%=scx*2^16:matrix%!4=0:matrix%!8=0:matrix%!12=scy*2^16
9 !origin1%=(right%-left%)
20:origin1%!4=bottom%
PDgiverec%,loop%,box%,matrix%,origin1%,&FFFFFF00
printing%=
PDdrawpage%,1,box2%,0,0
copiesleft%,,rect%
copiesleft%<>0
,
draw_main_w(mx%,my%,mx1%,my1%,0,0)
1
PDgetrec%,,box2%
copiesleft%,,rect%
PDendjob%,phandle%
#phandle%
PDselect%,ohandle%
printing%=
"Hourglass_Off"
hide_object(stack%,token%,hide%,on_vdu%)
getentry%,stack%,token%
adr1%
hide%<>0
((adr1%!36)
128)<>0 on_vdu%=0
hide%=0
((adr1%!36)
128)=0 on_vdu%=0
hide% adr1%!36=(adr1%!36)
adr1%!36=(adr1%!36)
&FFFFFF7F
on_vdu%
forceredraw%,main_w%,adr1%!12,adr1%!16,adr1%!20+(4<<xef%),adr1%!24+(1<<yef%)
light_object(stack%,token%,hi%,on_vdu%)
getentry%,stack%,token%
adr1%
h%=(adr1%!36)
hi% hi%=1
hi% adr1%!36=(adr1%!36)
adr1%!36=(adr1%!36)
&FFFFFFFE
on_vdu%
h%<>hi%
forceredraw%,main_w%,adr1%!12,adr1%!16,adr1%!20,adr1%!24
stack(page%)
adr%
getentry%,s_pages%,page%
adr%
adr%=0
adr%!20=0
2,"bad stack from page"
=adr%!20
which_object(page%,x%,y%)
stack%=
stack(page%)
nentries%,stack%
no%:o%=0
no%=0:=0
t%=1
getnth%,stack%,t%
adr%,token%
x%>=adr%!12
y%>=adr%!16
x%<adr%!20
y%<adr%!24
((adr%!36)
128)=0
8 o%=token%:off_mx%=x%-adr%!12:off_my%=y%-adr%!16
arrange_pagelist_wc(page%)
iw%=280:ih%=-48:pl_tick%=0
nentries%,s_pages%
% !q%=0:q%!8=iw%-(3<<xef%):q%!12=0
np%<3 q%!4=ih%*3
q%!4=ih%*np%
setextent%,pagelist_wc%,q%
iy%=ih%:cur_y%=iy%
loop%=1
getnth%,s_pages%,loop%
adr%,token%
token%=page% cur_y%=iy%:pl_tick%=iy%
iy%+=ih%
" !q%=pagelist_wc%:
getw%,,q%
" offy%=(q%!16-q%!24):sy%=q%!24
( wy%=(q%!8)-offy%:wy1%=(q%!16)-offy%
cur_y%<wy% sy%+=cur_y%-wy%
cur_y%-ih%>wy1% sy%=cur_y%-ih%
q%!24=sy%
o%=(q%!32)
(1<<16)
openw%,,q%
o%=0
closew%,,q%
forceredraw%,-1,q%!4,q%!8,q%!12,q%!16
draw_pagelist_wc(wx%,wy%,wx1%,wy1%)
nentries%,s_pages%
findfont%,,icon_font$,12*16,12*16
font%
* ih%=-48:ix%=0:iy%=ih%:ix1%=280:iy1%=0
page%=1
ix%<=wx1%
ix1%>=wx%
iy%<=wy1%
iy1%>=wy%
0
getnth%,s_pages%,page%
adr%,token%
iy%=pl_tick%
2 !q%=ix%:q%!4=iy%:q%!8=ix%+38:q%!12=iy1%
- q%!16=&7000019:
string0(q%+20,"
ploticon%,,q%
4 !q%=ix%+38:q%!4=iy%:q%!8=ix%+280:q%!12=iy1%
= q%!16=font%<<24
&171:q%!20=adr%+4:q%!24=0:q%!32=12
ploticon%,,q%
iy%+=ih%:iy1%+=ih%
losefont%,font%
!q%=pagelist_wc%
pt_from_context(context%)
context%
s_mousedrag%:=4
s_often%:=8
s_pointer%:=16
s_mouse%:=20
s_pageshown%:=32
name_exsists(stack%,f$)
nentries%,stack%
ne%=0:=0
f%=0:f$=
lower_case(f$)
entry%=1
getnth%,stack%,entry%
adr%,token%
lower_case(
string0(adr%+4)) f%=token%
size_page
!q%=main_w%:
getwi%,,q%
(q%!32)
(1<<16) open%=
open%=
"Wimp_DeleteWindow",,q%
bh%=q%!28
portrait%=
page_size%
1:q%!52=1279:q%!48=-920
2:q%!52=1599:q%!48=-1160
3:q%!52=2046:q%!48=-1500
4:q%!52=1320:q%!48=-2000:portrait%=
:q%!52=1279:q%!48=-920
"Wimp_CreateWindow",,q%+4
main_w%
U !q%=main_w%:
getw%,,q%:
open_window(!q%,q%!4,q%!8,q%!12,q%!16,q%!20,q%!24,bh%)
***************************** clicks below here **************************
begin_trying
trying%=
click_underway%=
pause_on%=
pointer_object%=0
input$=""
zero_page_stack
pre_process
show_page(current_page%)
scanning%
"set Uobject "+
"set Ustatus "+
status$=""
delight
%! stack%=
stack(current_page%)
nentries%,stack%
no%
object%=1
))
getnth%,stack%,object%
adr%
*+
adr%!36
1 adr%!36=(adr%!36)
speak_token%
update_object(stack%,speak_token%)
zero_page_stack:
4:T%!page_stack%=0:
:page_ptr%=0:
pre_process
pointer_object%=0
pointer_int%=0
often_int%=0
seq_int%=0
scan_object%=0
82 speaking_text%=0:speak_word%=0:speak_token%=0
pointer_on%=
try_time%=
nentries%,s_sequences%
>/
getnth%,s_sequences%,1
adr%,token%
?C
killentry%,s_sequences%,token%:
clear all sequences
nentries%,s_clickson%
E*
getnth%,s_clickson%,1
,token%
F?
killentry%,s_clickson%,token%:
clear all clicks
I! stack%=
stack(current_page%)
getentry%,s_pages%,current_page%
adr%
adr%!24
writestatus%,s_clicks%,adr%!24,0
nentries%,stack%
no%
object%=1
O)
getnth%,stack%,object%
adr%
Pa adr%!36=(adr%!36)
&FFFFFF3E:
ensure all objects shown, unselected and unhighlighted
click%=adr%!28
Rh
click%
writestatus%,s_clicks%,click%,0:
zero status to avoid repetition of click
object%=0
object%=0
W3
getentry%,s_pages%,current_page%
adr%
click%=adr%!24
Z)
getnth%,stack%,object%
adr%
click%=adr%!28
click%
^-
getentry%,s_clicks%,click%
adr%
_-
readstatus%,s_clicks%,click%
s%=0
a-
writestatus%,s_clicks%,click%,1
b5
adr%!4
pre_click(s_mousedrag%,adr%!4,0)
adr%!8
often_int%=
e& adr%!24=try_time%+adr%!12
f*
pre_click(s_often%,adr%!8,1)
adr%!16
pointer_int%=
j-
pre_click(s_pointer%,adr%!16,1)
l3
adr%!20
pre_click(s_mouse%,adr%!20,1)
adr%!32
n/
pre_click(s_pageshown%,adr%!32,1)
o,
do_click(s_pageshown%,adr%!32)
pre_click(context%,click%,seq%)
adr%
getentry%,context%,click%
adr%
end%=adr%+!adr%:adr%+=4
len%=!adr%:cmd%=adr%!4
cmd%
}8
1,3,4:
seq%=0
pre_list(cmd%,adr%+8,len%-12)
~A
context%=s_pageshown%
seq%=0
play_sound(adr%!8)
seq%
seq_int%=
0 flag%=adr%!12:s%=adr%+36:e%=len%-40
.
flag%
4 s%=adr%+40:e%=len%-44
pre_list(3,s%,e%)
adr%+=len%
adr%>=end%
pre_list(cmd%,adr%,len%)
list%=0
cmd%
1
light_object(stack%,list%!adr%,1,0)
0
hide_object(stack%,list%!adr%,1,0)
0
hide_object(stack%,list%!adr%,0,0)
try_poll
poll%,,q%
playsound%,0
"OS_Module",16,"Ubase%Ultimap"
try_null
redraw_window
open_window(!q%,q%!4,q%!8,q%!12,q%!16,q%!20,q%!24,q%!28)
close_window(!q%)
!q%=main_w%
pointer_on%<>
"pointer 1"
L
!q%=main_w%
pointer_on%=1
"Wimp_SpriteOp",36,1,"ptr_clock",2
K
!q%=main_w%
pointer_on%=2
"Wimp_SpriteOp",36,1,"ptr_hand",2
try_mouse
try_user_drag
try_keys
try_menu_select
17,18:
try_receive(q%)
try_receive(q%)
q%!16
finish:
datasaveack
q%!40=&BC3
dataload
ramfetch
&502:
help_request
&400C0:
try_menu_warning
&400C1:
"Hourglass_On"
get_mode_info
lose_fonts
set_icon_fonts
"Hourglass_Off"
try_null
4 !q%=main_w%:
getw%,,q%:
((q%!32)
(1<<16))=0
seq_int%
check_sequences(
check_clicks
input$,1)=
13:input$=
input$,
(input$)-1):!q%=main_w%:q%!24=13:
try_keys
pointer_int%
scanning%=
under_pointer
often_int%
often
scanning%
scan_keys%=1
playsound%,0
t%<>-1
speaking_text%
speak_sound%
)
play_sound_wait(speak_sound%)
7:t%=
speaking_text
check_sysvars
check_sysvars
"OS_ReadVarVal","Upage",main%,1000
,,T%
% T%?main%=0:page$=
string0(main%)
page$<>current_page$
* page%=
name_exsists(s_pages%,page$)
page%
current_page%=page%
pre_process
"
show_page(current_page%)
scanning%
"OS_ReadVarVal","Uobject",main%,1000
,,T%
' T%?main%=0:object$=
string0(main%)
object$<>""
"set Uobject "+
4 input$=object$:!q%=main_w%:q%!24=13:
try_keys
try_mouse
q%!12
q%!16=icon_bar%
1,&100,&9000,1:
check_icon_bar
main_w%:
try_main_w
pagelist_wc%:
check_pagelist_wc
print_w%:
check_print_w
try_main_w
setcaret%,main_w%,-1,0,0,10
mx%=!q%:my%=q%!4
button%=q%!8
button%
menu_enabled%
open_try_menu(mx%,my%)
scanning%
scan_click(button%):
pointer_on%=1
icon%=q%!16
!q%=main_w%:
getw%,,q%
+ offx%=(q%!4-q%!20):offy%=(q%!16-q%!24)
mx%-=offx%:my%-=offy%
button%
% stack%=
stack(current_page%)
5 object%=
which_object(current_page%,mx%,my%)
object%
-
getentry%,stack%,object%
adr%
click%=adr%!28
click%
1
getentry%,s_clicks%,click%
adr%
adr%!4
6
getentry%,s_mousedrag%,adr%!4
adr%
+
begin_save(object%,adr%!12)
&100
2 page_ptr%-=4:
page_ptr%<0 page_ptr%=1020
%
page_ptr%!page_stack%<>0
delight
. current_page%=page_ptr%!page_stack%
" page_ptr%!page_stack%=0
pre_process
$
show_page(current_page%)
scanning%
&400
% stack%=
stack(current_page%)
5 object%=
which_object(current_page%,mx%,my%)
object%
-
getentry%,stack%,object%
adr%
click%=adr%!28
click%
1
getentry%,s_clicks%,click%
adr%
C
adr%!20
do_click_recorded(object%,s_mouse%,adr%!20)
5
getentry%,s_pages%,current_page%
adr%
click%=adr%!24
click%
#1
getentry%,s_clicks%,click%
adr%
$=
adr%!20
do_click_recorded(0,s_mouse%,adr%!20)
try_keys
!q%
main_w%
key%=q%!24
key%=13
/' stack%=
stack(current_page%)
0/
lower_case(
input$,6))="object"
1+ token%=
input$,
(input$)-6))
2.
getentry%,stack%,token%
adr%
adr%
adr%!28
5' pointer_object%=token%
66
getentry%,s_clicks%,adr%!28
adr%
7F
adr%!20
do_click_recorded(token%,s_mouse%,adr%!20)
;A
lower_case(
input$,4))="back" q%!8=&100:
try_main_w
input$=""
>-
key%=27:
close_window(main_w%):
?&
key%=&180
open_print_w:
@K
key%>31
key%<255 input$=input$+
(key%)
processkey%,key%
A"
input$=255 input$=""
print_w%
DH
q%!24=13 q%!8=4:q%!16=4:
check_print_w
processkey%,q%!24
processkey%,q%!24
do_click_recorded(object%,context%,click%)
object% status$=".object"+
object%+"."+
object%=0 status$=".background."+
"set Ustatus "+
leaf(full_name$)+"."+current_page$+status$
do_click(context%,click%)
do_click(context%,click%)
getentry%,context%,click%
adr%
movedata%,adr%,ws%+8,!adr%
T$ !ws%=(ws%!8)+8:ws%!4=12:ws%!8=0
make_space(!ws%+16)
addentry%,s_clickson%,ws%
check_clicks
check_clicks
nentries%,s_clickson%
nc%=0
click%=1
^1
getnth%,s_clickson%,click%
click_adr%
_+
click_adr%!8<
click_adr%!4<>0
`0 ptr%=click_adr%!4:cadr%=click_adr%+ptr%
a- click_len%=!cadr%:cmd%=cadr%!4:ok%=
cmd%
c:
1,3,4:
click_list(cmd%,cadr%+8,click_len%-12)
delight
f0 page_ptr%!page_stack%=current_page%
g6 page_ptr%+=4:
page_ptr%=1024 page_ptr%=0
h" current_page%=cadr%!8
iM
current_page%=0
nentries%,s_pages%
t%:current_page%=
j.
current_page%=0 current_page%=1
pre_process
l&
show_page(current_page%)
scanning%
p!
playsound%,0
q1
t%=-1 ok%=
play_sound(cadr%!8)
r*
speak_text(stack%,cadr%!8)
s!
init_seq(
,cadr%)
u) click_cmd$=
string0(cadr%+8)
v) cmd$=
lower_case(click_cmd$)
w'
cmd$,10)="load file "
x- file$=
cmd$,
cmd$-10):page$=""
file$," ")
z3 page$=
file$,
(file$)-
file$," "))
{, file$=
file$,
file$," ")-1)
}) file$=full_name$+"."+file$
.
:click_adr%!4=0:
"
load_file(file$,1)
Z
page$<>"" page%=
name_exsists(s_pages%,page$):
page% current_page%=page%
pre_process
(
show_page(current_page%)
scanning%
zero_page_stack
3
cmd$,4)="load"
cmd$,5)="*load"
, file$=
cmd$,
cmd$-5):page$=""
file$," ")
3 page$=
file$,
(file$)-
file$," "))
, file$=
file$,
file$," ")-1)
.
:click_adr%!4=0:
"
load_file(file$,1)
Z
page$<>"" page%=
name_exsists(s_pages%,page$):
page% current_page%=page%
pre_process
(
show_page(current_page%)
scanning%
zero_page_stack
1
cmd$,3)="run"
cmd$,4)="*run"
* file$=
cmd$,
cmd$-4):
file$
.
:click_adr%!4=0:
#
"filer_run "+file$
click_cmd$=""
"
cmd$,6)="replay"
# file$=
cmd$,
cmd$-7)
"
file$,"-at")=0
3
getentry%,stack%,object%
adr%
6 x%=(adr%!12)+offx%:y%=(adr%!16)+offy%
0 file$=file$+" -at "+
x%+","+
.
:click_adr%!4=0:
(
"Wimp_StartTask",file$
click_cmd$=""
M
cmd$,4)="back" input$="back":!q%=main_w%:q%!24=13:
try_keys:
"
cmd$,6)="object"
click_cmd$=""
input$=cmd$+
,
:click_adr%!4=0:
*
click_cmd$<>""
click_cmd$
%
9:click_adr%!8=
+cadr%!8
a
12:pointer_on%=2:
get_pointer:
handle%=main_w%
"Wimp_SpriteOp",36,1,"ptr_hand",2
3
getnth%,s_clickson%,click%
click_adr%
+
ok% click_adr%!4=ptr%+click_len%
3
click_adr%!4>=!click_adr% click_adr%!4=0
click%=1
getnth%,s_clickson%,click%
adr%,token%
adr%!4=0
)
killentry%,s_clickson%,token%
click%-=1
click%+=1
nentries%,s_clickson%
click%>=nc%
nc%=0
click_list(cmd%,adr%,len%)
list%=0
cmd%
.
getentry%,stack%,list%!adr%
"
(t%!36)
1 t%=0
t%=1
/
light_object(stack%,list%!adr%,1,1)
0
hide_object(stack%,list%!adr%,1,1)
0
hide_object(stack%,list%!adr%,0,1)
under_pointer:
pointer_on%=1
get_pointer
!q%=main_w%:
getw%,,q%
+ offx%=(q%!4-q%!20):offy%=(q%!16-q%!24)
( mx%=mousex%-offx%:my%=mousey%-offy%
handle%=main_w% object%=
which_object(current_page%,mx%,my%)
object%=0
object%<>pointer_object%
"pointer 1":pointer_on%=
pointer_object%=object%
# stack%=
stack(current_page%)
nentries%,stack%
no%
ob%=1
.
getnth%,stack%,ob%
adr%,token%
K
token%<>object%
(adr%!36)
light_object(stack%,token%,0,1)
object%
4
getentry%,stack%,object%
adr%,token%
adr%!28
2
getentry%,s_clicks%,adr%!28
adr%
4
adr%!16
do_click(s_pointer%,adr%!16)
5
getentry%,s_pages%,current_page%
adr%
adr%!24
2
getentry%,s_clicks%,adr%!24
adr%
4
adr%!16
do_click(s_pointer%,adr%!16)
often:
pointer_on%<>
! stack%=
stack(current_page%)
nentries%,stack%
no%
ob%=1
,
getnth%,stack%,ob%
adr%,token%
adr%!28
0
getentry%,s_clicks%,adr%!28
adr%
adr%!8
adr%!24<
adr%!24=
+adr%!12
)
do_click(s_often%,adr%!8)
open_try_menu(mx%,my%)
2:P%=main%
[optI%
equs menu$
equd &070207
equd 168:equd 40:equd 0
, equd 8:equd pagelist_wc%:equd &07000021
equs "Show page "
$ equd &80:equd -1:equd &07000021
equs "Print "
menu%=11
createmenu%,,main%,mx%,my%-32
try_menu_warning
$ mx%=q%!24:my%=q%!28:item%=q%!32
arrange_pagelist_wc(current_page%)
crsubmenu%,,pagelist_wc%,mx%,my%
try_menu_select
menu%
icon_bar_menu
!q%
open_print_w
try_pagelist_wc
but%=q%!8
)$ !ws%=pagelist_wc%:
getw%,,ws%
*/ offx%=(ws%!4-ws%!20):offy%=(ws%!16-ws%!24)
+! page%=(((q%!4)-offy%)
-48)+1
nentries%,s_pages%
np%:
page%>np%
getnth%,s_pages%,page%
,page%
arrange_pagelist_wc(page%)
show_page(page%)
arrange_pagelist_wc(current_page%)
begin_trying
but%
createmenu%,,-1
scan_count%>
scan_keys%=1 scan_count%=
+scan_time%
8! stack%=
stack(current_page%)
nentries%,stack%
no%=0
scan_object%<>0
<3
getnth%,stack%,scan_object%
adr%,token%
adr%!36
>)
light_object(stack%,token%,0,1)
scan_object%+=1
@*
scan_object%>no% scan_object%=1
scan_object%=1
yes%=0
G3
getnth%,stack%,scan_object%
adr%,token%
H+
(adr%!28)<>0
((adr%!36)
128)=0
I.
getentry%,s_clicks%,adr%!28
adr%
adr%!16
K4
light_object(stack%,token%,1,1):yes%=no%
scan_object%+=1
N,
scan_object%>no% scan_object%=1
yes%+=1
scan_object%+=1
S*
scan_object%>no% scan_object%=1
yes%+=1
yes%=no%
scan_click(but%)
scan_object%=0
[! stack%=
stack(current_page%)
scan_keys%=1
(scan_keys%=2
(but%
&101))
]3
getnth%,stack%,scan_object%
adr%,token%
adr%!28
_.
getentry%,s_clicks%,adr%!28
adr%
`.
adr%!20
do_click(s_mouse%,adr%!20)
but%
&404
redefine_main_w
!q%=main_w%:
getwi%,,q%
(q%!32)
(1<<16) open%=
open%=
"Wimp_DeleteWindow",,q%
k' f%=((q%!32)
&83FFFFFF)
(&83<<24)
bh%=q%!28
h_scroll% f%=f%
(1<<30)
v_scroll% f%=f%
(1<<28)
h_scroll%
v_scroll% f%=f%
(1<<29)
title_bar% f%=f%
(1<<26):
toggle_icon% f%=f%
(1<<27)
q%!32=f%
"Wimp_CreateWindow",,q%+4
main_w%
sU !q%=main_w%:
getw%,,q%:
open_window(!q%,q%!4,q%!8,q%!12,q%!16,q%!20,q%!24,bh%)
init_seq(time%,adr%)
movedata%,adr%,ws%,!adr%
(adr%!12)
4 ws%!4=40:ws%!8=36
ws%!4=36:ws%!8=0
y) ws%!12=4:ws%!16=adr%!20:ws%!20=time%
z* ws%!24=adr%!8:ws%!28=0:ws%!32=adr%!12
make_space(!ws%+16)
addentry%,s_sequences%,ws%
(ws%!32)
64 pointer_on%=1:
get_pointer:
handle%=main_w%
"Wimp_SpriteOp",36,1,"ptr_clock",2
check_sequences(time%)
nentries%,s_sequences%
ns%
# stack%=
stack(current_page%)
seq%=1
,
getnth%,s_sequences%,seq%
adr%
time%>adr%!20
adr%!20=time%+adr%!16
? len%=!adr%:ptr%=adr%!4:optr%=adr%!8:ptr_inc%=adr%!12
( loop%=(adr%!32)
2:last_one%=0
C last%=(adr%!32)
8:trail%=(adr%!32)
16:noud%=(adr%!32)
! seethru%=(adr%!32)
+
adr%!24<>0
adr%!28=adr%!24
loop%
$
ptr%=40 last_one%=
$
ptr%=36 last_one%=
"
optr%<>0
trail%=0
last_one%
last%=0
noud%
4
fast_draw(stack%,optr%!adr%,
6
hide_object(stack%,optr%!adr%,1,1)
noud%
2
fast_draw(stack%,optr%!adr%,
4
hide_object(stack%,optr%!adr%,1,1)
last_one%=0
noud%
6
fast_draw(stack%,ptr%!adr%,0,seethru%)
1
hide_object(stack%,ptr%!adr%,0,1)
' adr%!8=ptr%:ptr%+=ptr_inc%
loop%
ptr%=len%
' ptr%=len%-8:adr%!12=-4
ptr%=32
$ ptr%=40:adr%!12=4
3
adr%!24<>0 adr%!28=(adr%!28)+1
ptr%=len%
ptr%=36
1
adr%!24<>0 adr%!28=(adr%!28)+1
ptr%=0
adr%!4=ptr%
nomore%=
(
nentries%,s_sequences%
ns%
seq%=1
7
getnth%,s_sequences%,seq%
adr%,token%
A
adr%!4=0
(adr%!32)
"pointer 1":pointer_on%=
L
adr%!4=0 nomore%=0:seq%=ns%:
killentry%,s_sequences%,token%
nomore%
fast_draw(stack%,token%,erase%,seethru%)
adr%
!q%=main_w%:
getw%,,q%
+ offx%=(q%!4-q%!20):offy%=(q%!16-q%!24)
getentry%,stack%,token%
adr%
x%=(adr%!12)+offx%
y%=(adr%!16)+offy%
" x1%=(adr%!20)-(1<<xef%)+offx%
" y1%=(adr%!24)-(1<<yef%)+offy%
erase%
((adr%!36)
128)=0 adr%!36=(adr%!36)
getentry%,s_pages%,current_page%
adr1%
bcol%=adr1%!28:
(adr%!36)
seethru%=0 adr%!36=(adr%!36)
flags%=adr%!36:type%=adr%!4
f !q%=main_w%:q%!4=x%-offx%:q%!8=y%-offy%-32:q%!12=x1%-offx%+(1<<xef%)+32:q%!16=y1%-offy%+(1<<yef%)
updatew%,,q%
more%
more%
erase%
3
setcol%,bcol%:
x%,y%,x1%-x%,y1%-y%
type%
:
s_text%:
draw_text(stack%,token%,offx%,offy%)
k
s_sprites%,s_draw%:
draw_picture(adr%!4,adr%!8,x%+(1<<xef%),y%+(1<<yef%),x1%-x%,y1%-y%,flags%)
getr%,,q%
more%
speak_text(stack%,token%)
speak_token%=token%
! speak_word%=0:speak_sound%=0
getentry%,stack%,token%
adr%
getentry%,s_text%,adr%!8
adr%
sptext%=adr%+4
?sptext%<>0
speaking_text%=
text$="":a%=sptext%
:text$=text$+
(?a%):a%+=1:
?a%<48
2 speak_sound%=
name_exsists(s_sounds%,text$)
update_object(stack%,speak_token%)
speaking_text
getentry%,stack%,speak_token%
adr%
getentry%,s_text%,adr%!8
adr%
sptext%=adr%+4
speak_word%+=1
c%=speak_word%?sptext%
c%=32
c%=13
c%=0
c%=32
c%=13
- speak_word%+=1:c%=speak_word%?sptext%
c%>32
c%=0
c%<>0
& text$="":a%=speak_word%+sptext%
:text$=text$+
(?a%):a%+=1:
?a%<48
2 speak_sound%=
name_exsists(s_sounds%,text$)
c%=0 speaking_text%=
update_object(stack%,speak_token%)
highlight_text(stack%,token%,offx%,offy%,word%)
getentry%,stack%,token%
adr%
x%=(adr%!12)+offx%
y%=(adr%!16)+offy%
" x1%=(adr%!20)-(1<<xef%)+offx%
" y1%=(adr%!24)-(1<<yef%)+offy%
. flags%=adr%!36:font%=adr%!40:b_s%=adr%!32
8 fcol%=adr%!52:
fcol%
&FF fcol%=default_page_col%
bcol%=adr%!56
flags%
1 fcol%=fcol%
&FFFFFF00:bcol%=bcol%
&FFFFFF00
draw_border(b_s%,fcol%,bcol%,x%,y%,x1%,y1%)
x%+=(1<<xef%)
x1%-=(1<<xef%)
y%+=(1<<yef%)
y1%-=(1<<yef%)
:font%=0
font%
%'
getentry%,s_fonts%,font%
&1
findfont%,,t%+4,adr%!44,adr%!48
font%
font%
)
bcol%
&FF bcol%=fcol%
*.
fontinfo%,font%
,cx%,cy%,cx1%,cy1%
,> cx%=-(1<<xef%):cy%=-(1<<yef%):cx1%=8<<xef%:cy1%=8<<yef%
text_height%=cy1%
getentry%,s_text%,adr%!8
text%
text%+=4
text_offset%=0
2, px%=x%+margin%:py%=y1%-text_height%+cy%
3$ centre%=
:right%=
:underline%=
flags%
8 centre%=
flags%
16 right%=
flags%
32 underline%=
text_offset%?text%
:/
13:py%-=text_height%:text_offset%+=1
<- text$=
string0(text%+text_offset%)
text_offset%+=
text$
px%=x%+margin%
font%
@@
stringwidth%,,text$,1<<30,1<<30,-1,
text$
,,w%
A&
converttoos%,,w%
B-
centre% px%=x%+(x1%-x%)
C(
right% px%=x1%-w%-margin%
D7
underline% ul$=
(25)+
(16)
ul$=""
EA
"ColourTrans_SetFontColours",font%,bcol%,fcol%,14
F2
paint%,,ul$+text$,1<<4,px%,py%-cy%
GB
text_offset%>word%
(text_offset%-
text$)<=word%
H/ i%=word%-(text_offset%-
(text$))
l$=
text$,i%)
J<
stringwidth%,,l$,1<<30,1<<30,-1,
,,w%
K(
converttoos%,,w%
px%+=w%
M$ r$=
text$,
text$-
N*
r$," ") r$=
r$," "))
OW
"ColourTrans_SetFontColours",font%,bcol%
&FFFFFF00,fcol%
&FFFFFF00,14
P1
paint%,,ul$+r$,1<<4,px%,py%-cy%
w%=
text$*cx1%
T-
centre% px%=x%+(x1%-x%)
U(
right% px%=x1%-w%-margin%
V3
setcol%,fcol%:
px%,py%+cy1%:
text$
W8
underline%
px%,py%-cy%:
1,cx1%*
text$,0
XB
text_offset%>word%
(text_offset%-
text$)<=word%
Y/ i%=word%-(text_offset%-
(text$))
l$=
text$,i%)
[" w%=
l$*cx1%:px%+=w%
\$ r$=
text$,
text$-
]*
r$," ") r$=
r$," "))
^<
setcol%,fcol%
&FFFF0000:
px%,py%+cy1%:
_7
underline%
px%,py%-cy%:
1,cx1%*
text_offset%?text%=0
font%
losefont%,font%
begin_save(object%,sound%)
getentry%,stack%,object%
adr%
getp%,,q%:mx%=!q%:my%=q%!4
j2 ix%=mx%-38:iy%=my%-38:ix1%=mx%+38:iy1%=my%+38
sound%
adr%!28
m.
getentry%,s_clicks%,adr%!28
adr%
adr%!20
o/
getentry%,s_mouse%,adr%!20
adr%
adr%!8=5
q drag_sound%=adr%!12
r-
start_drag(3,ix%,iy%,ix1%,iy1%)
adr%!4=s_text%
x1 drag_ptype%=s_text%:drag_picture%=adr%!8
y*
start_drag(20,ix%,iy%,ix1%,iy1%)
{0 drag_ptype%=adr%!4:drag_picture%=adr%!8
|)
start_drag(4,ix%,iy%,ix1%,iy1%)
try_user_drag
get_pointer
handle%=main_w%
q%!20=handle%:q%!24=icon%
q%!28=mousex%:q%!32=mousey%
q%!36=sprite_size%-24
!q%=56
drag_type%
saving sound
3
getentry%,s_sounds%,drag_sound%
adr%
save$=
string0(adr%+4)
file_type%=&D3C
saving picture
7
getentry%,drag_ptype%,drag_picture%
adr%
save$=
string0(adr%+4)
D
drag_ptype%=s_sprites% file_type%=&FF9
file_type%=&AFF
saving text
save$="text"
file_type%=&FFF
q%!40=file_type%
string0(q%+44,save$)
q%!12=q%!8:q%!16=1
sendmessage%,17,q%,handle%,icon%:
send datasave
myref%=q%!8
DMT%=0
DMT_ptr%=0