Home » Recent acquisitions » Acorn ADFS disks » adfs_AcornComputing_199402.adf » 9402 » Miscellany/To_FromBMP/!ToBMP/!RunImage

Miscellany/To_FromBMP/!ToBMP/!RunImage

This website contains an archive of files for the Acorn Electron, BBC Micro, Acorn Archimedes, Commodore 16 and Commodore 64 computers, which Dominic Ford has rescued from his private collection of floppy disks and cassettes.

Some of these files were originally commercial releases in the 1980s and 1990s, but they are now widely available online. I assume that copyright over them is no longer being asserted. If you own the copyright and would like files to be removed, please contact me.

Tape/disk: Home » Recent acquisitions » Acorn ADFS disks » adfs_AcornComputing_199402.adf » 9402
Filename: Miscellany/To_FromBMP/!ToBMP/!RunImage
Read OK:
File size: 1DF3 bytes
Load address: 0000
Exec address: 0000
Duplicates

There is 1 duplicate copy of this file in the archive:

File contents
   10REM ><ToBMP$Dir>.!RunImage
   20REM by David Thomas, for Acorn Computing LEN 1993
   30SYS"Wimp_Initialise",200,&4B534154,"ToBMP"TOwimp%,taskh%
   40SYS"Interface_Initialise",taskh%
   50SYS"Wimp_SlotSize",-1,-1TObaseslot%
   60DIMcode%256,q%512,indr%512,menu%80:indr_end%=indr%+512:finished%=FALSE:in$=""
   70SYS"Wimp_OpenTemplate",,"<ToBMP$Dir>.Templates":prog_info%=FNcreatewin("prog_info"):save%=FNcreatewin("save"):SYS"Wimp_CloseTemplate"
   80SYS"OS_File",255,"<ToBMP$Dir>.Menu",menu%:menu%!32=prog_info%
   90!q%=-1:q%!4=0:q%!8=0:q%!12=68:q%!16=68:q%!20=&3002:$(q%+24)="!tobmp":SYS"Wimp_CreateIcon",,q%TObicn%
  100FORopt%=0TO2STEP2:P%=code%:[OPTopt%
  110.swap ldrb r2,[r0]:and r3,r2,#&0F:mov r3,r3,lsl#4:and r4,r2,#&F0:mov r4,r4,lsr#4:orr r2,r3,r4:strb r2,[r0],#1:cmp r0,r1:blt swap:mov pc,r14
  120.swape ldrb r2,[r0]:and r3,r2,#&01:mov r3,r3,lsl#7:mov r4,r3:and r3,r2,#&02:mov r3,r3,lsl#5:orr r4,r3,r4:and r3,r2,#&04:mov r3,r3,lsl#3:orr r4,r3,r4:and r3,r2,#&08:mov r3,r3,lsl#1:orr r4,r3,r4:and r3,r2,#&10
  130mov r3,r3,lsr#1:orr r4,r3,r4:and r3,r2,#&20:mov r3,r3,lsr#3:orr r4,r3,r4:and r3,r2,#&40:mov r3,r3,lsr#5:orr r4,r3,r4:and r3,r2,#&80:mov r3,r3,lsr#7:orr r4,r3,r4:strb r4,[r0],#1:cmp r0,r1:blt swape:mov pc,r14
  140.swapt ldrb r2,[r0]:ldrb r3,[r0,#2]:strb r3,[r0]:strb r2,[r0,#2]:add r0,r0,#3:cmp r0,r1:bne swapt:mov pc,r14
  150]:NEXT
  160ONERRORPROCerror
  170REPEAT
  180SYS"Wimp_Poll",,q%TOreason%
  190SYS"Interface_Poll",reason%,,taskh%
  200SYS"Interface_PreProcessKey",reason%,q%,taskh%TOreason%
  210CASEreason%OF
  220WHEN1:SYS"Wimp_RedrawWindow",,q%TOmore%:WHILEmore%:SYS"Interface_Render3dWindow",,q%:SYS"Wimp_GetRectangle",,q%TOmore%:ENDWHILE
  230WHEN2:SYS"Wimp_OpenWindow",,q%
  240WHEN3:SYS"Wimp_CloseWindow",,q%
  250WHEN6:PROCmouse
  260WHEN7:PROCdragboxend
  270WHEN8:SYS"Wimp_ProcessKey",q%!24
  280WHEN9:IF!q%=1 finished%=TRUE ELSE SYS"Wimp_GetPointerInfo",,q%:IFq%!8=1SYS"Wimp_CreateMenu",,menu%,!q%-72,q%!4
  290WHEN17,18:CASEq%!16OF
  300WHEN0:finished%=TRUE
  310WHEN2:PROCsave(FNvar(q%+44))
  320WHEN3:IFq%!40=&690ORq%!40=&FF9 in$=FNvar(q%+44):type%=q%!40:SYS"Wimp_GetPointerInfo",,q%:SYS"Wimp_CreateMenu",,save%,!q%-152,q%!4+68
  330WHEN10:h%=q%!20:SYS"OS_ReadVarVal","ToBMP$Dir",q%+256,256,0,3 TO ,,end%:q2%=q%+256:q2%?end%=13:BPUT#h%,"Run "+$(q%+256)
  340ENDCASE
  350ENDCASE
  360UNTILfinished%
  370SYS"Interface_CloseDown",taskh%
  380SYS"Wimp_CloseDown",taskh%,&4B534154
  390END
  400DEFPROCmouse
  410CASEq%!12OF
  420WHEN-2:CASEq%!16OF
  430WHENbicn%:CASEq%!8OF
  440WHEN2:SYS"Wimp_CreateMenu",,menu%,!q%-76,184
  450WHEN1:IF in$<>"" SYS "OS_File",5,in$ TO in%:IFin%=1 SYS"Wimp_GetPointerInfo",,q%:SYS"Wimp_CreateMenu",,save%,!q%-152,q%!4+68
  460ENDCASE
  470ENDCASE
  480WHENsave%:CASEq%!8OF
  490WHEN4,1:CASEq%!16OF
  500WHEN2:PROCdragbox(save%,2,"file_69c")
  510WHEN0:PROCsave(FNvar(FNtextaddr(save%,1)))
  520ENDCASE
  530ENDCASE
  540ENDCASE
  550ENDPROC
  560DEFPROCsave(file$)
  570SYS"Hourglass_On"
  580q%!8=4:q%!12=save%:q%!16=0:SYS"Interface_SlabButton",,q%
  590IFINSTR(file$,".")<1ANDINSTR(file$,":")<1PROCok("To save, drag the file icon to a directory display"):ENDPROC
  600rd%=OPENINin$
  610IFtype%=&FF9PROCsprite ELSE PROCclear
  620PROCslotsize(54+pal%+size%)
  630IFcurrslot%<(54+pal%+size%+baseslot%)CLOSE#rd%:PROCok("I cannot grab the memory needed for processing this file. Please free some memory and try again."):ENDPROC
  640$buff%="BM":buff%!2=54+pal%+size%:buff%!6=0:buff%!10=54+pal%:buff%!14=40
  650buff%!18=x%:buff%!22=y%:buff%!26=1:buff%!28=bpp%:buff%!30=0:buff%!34=size%
  660buff%!38=0:buff%!42=0:buff%!46=2^bpp%:buff%!50=2^bpp%
  670IFbpp%<24THEN
  680CASEtype%OF
  690WHEN&690:CASEbpp%OF
  700WHEN8:FORentry%=0TO(2^bpp%)-1:!(buff%+54+entry%*4)=BGET#rd%<<16ORBGET#rd%<<8ORBGET#rd%:NEXT
  710OTHERWISECLOSE#rd%:PROCok("I'm afraid I don't support "+STR$bpp%+"bpp Clear files."):ENDPROC
  720ENDCASE
  730WHEN&FF9:IFpalette%>=image%THEN
  740CASEbpp%OF
  750WHEN1:!(buff%+54)=&FFFFFF:!(buff%+58)=0
  760WHEN4:!(buff%+54)=&FFFFFF:!(buff%+58)=&DDDDDD:!(buff%+62)=&BBBBBB:!(buff%+66)=&999999:!(buff%+70)=&777777:!(buff%+74)=&555555:!(buff%+78)=&333333:!(buff%+82)=&000000:!(buff%+86)=&004499:!(buff%+90)=&EEEE00:!(buff%+94)=&00CC00:!(buff%+98)=&DD0000
  770!(buff%+102)=&EEEEBB:!(buff%+106)=&558800:!(buff%+110)=&FFBB00:!(buff%+114)=&00BBFF
  780WHEN8:FORentry%=0TO255:shade%=entry%AND3:!(buff%+54+entry%*4)=((((entry%AND16)>>1)+(entry%AND4)+shade%)<<20)+((((entry%AND96)>>3)+shade%)<<12)+((((entry%AND128)>>4)+((entry%AND8)>>1)+shade%)<<4):NEXT
  790OTHERWISECLOSE#rd%:PROCok("I'm afraid I don't support "+STR$bpp%+"bpp Sprites."):ENDPROC
  800ENDCASE
  810ELSE PTR#rd%=palette%
  820CASEbpp%OF
  830WHEN1,4:FORentry%=0TO(2^bpp%)-1:!(buff%+54+entry%*4)=FNrword:s%=FNrword:NEXT
  840WHEN8:IFimage%-palette%>=2048THEN
  850FORentry%=0TO(2^bpp%)-1:!(buff%+54+entry%*4)=FNrword:s%=FNrword:NEXT
  860ELSE
  870FORentry%=0TO15:!(buff%+54+entry%*4)=FNrword:s%=FNrword:NEXT
  880FORentry%=16TO255:!(buff%+54+entry%*4)=!(buff%+54+(entry%AND15)*4)+(entry%AND128)+((entry%AND96)<<9)+((entry%AND16)<<19):NEXT
  890ENDIF
  900OTHERWISECLOSE#rd%:PROCok("I'm afraid I don't support "+STR$bpp%+"bpp Sprites."):ENDPROC
  910ENDCASE
  920ENDIF
  930ENDCASE
  940ENDIF
  950ptr%=0:IFtype%=&FF9PTR#rd%=image%
  960REPEAT
  970SYS"OS_GBPB",4,rd%,buff%+54+pal%+size%-rowsize%-ptr%,actrowsize%
  980A%=buff%+54+pal%+size%-rowsize%-ptr%:B%=A%+actrowsize%
  990CASEbpp%OF
 1000WHEN1:CALLswape
 1010WHEN4:CALLswap
 1020WHEN24:CALLswapt
 1030ENDCASE
 1040ptr%+=rowsize%
 1050UNTILptr%>=y%*rowsize%
 1060CLOSE#rd%
 1070SYS"OS_File",10,file$,&69C,,buff%,buff%+54+pal%+size%
 1080PROCslotsize(0)
 1090PROCseticontext(save%,1,file$)
 1100q%!8=0:q%!12=save%:q%!16=0:SYS"Interface_SlabButton",,q%
 1110SYS"Wimp_CreateMenu",-1
 1120SYS"Hourglass_Off"
 1130ENDPROC
 1140DEFPROCslotsize(amount%)
 1150SYS"Wimp_SlotSize",amount%+baseslot%,-1TOcurrslot%:buff%=HIMEM
 1160ENDPROC
 1170DEFPROCsprite
 1180PTR#rd%=4:offset%=FNword-4:PTR#rd%=offset%+16:xwords%=FNword+1:y%=FNword+1:fb%=FNword:lb%=FNword:image%=offset%+FNword:transp%=offset%+FNword:mode%=FNword:palette%=offset%+44:bpp%=2^FNrmv(mode%,9):x%=(xwords%*32-(31-lb%)-fb%)DIVbpp%
 1190IFbpp%<24 pal%=2^bpp%*4 ELSE pal%=0
 1200rowsize%=xwords%*4:size%=rowsize%*y%:actrowsize%=rowsize%
 1210ENDPROC
 1220DEFPROCclear
 1230WHILEBGET#rd%>32:ENDWHILE:v%=FNword:x%=FNword:y%=FNword:bpp%=FNword
 1240IFbpp%<24 pal%=2^bpp%*4 ELSE pal%=0
 1250rowsize%=((x%*bpp%+31)ANDNOT31)DIV8:size%=rowsize%*y%:actrowsize%=x%*bpp%/8
 1260ENDPROC
 1270DEF PROCdragbox(wind%,icon%,spname$)
 1280!q%=wind%:SYS "Wimp_GetWindowState",,q%:x%=q%!4:y%=q%!16:xs%=q%!20:ys%=q%!24:!q%=wind%:q%!4=icon%:SYS "Wimp_GetIconState",,q%:q%!4=5:q%!8+=x%-xs%:q%!12+=y%-ys%:q%!16+=x%-xs%:q%!20+=y%-ys%:q%!24=0:q%!28=0:q%!32=&7FFFFFFF:q%!36=&7FFFFFFF
 1290SYS "OS_Byte",161,28 TO,,dragaspr%:IF dragaspr%AND2 SYS "DragASprite_Start",197,1,spname$,q%+8,q%+24 ELSE SYS "Wimp_DragBox",,q%
 1300ENDPROC
 1310DEFPROCdragboxend
 1320IF dragaspr%AND2 SYS "DragASprite_Stop"
 1330SYS"Wimp_GetPointerInfo",,q%:q%!20=q%!12:q%!24=q%!16:q%!28=!q%:q%!32=q%!4:q%!12=0:q%!16=1:q%!36=0:q%!40=&69C:$(q%+44)=FNleaf(FNvar(FNtextaddr(save%,1)))+CHR$0:!q%=44+(LENFNvar(FNtextaddr(save%,1))+4)ANDNOT3:SYS"Wimp_SendMessage",17,q%,q%!20
 1340ENDPROC
 1350DEFFNleaf(file$)
 1360WHILEINSTR(file$,":")>0:file$=MID$(file$,INSTR(file$,":")+1):ENDWHILE
 1370WHILEINSTR(file$,".")>0:file$=MID$(file$,INSTR(file$,".")+1):ENDWHILE
 1380=file$
 1390DEFFNvar(var%)var$="":WHILE?var%>31:var$+=CHR$?var%:var%+=1:ENDWHILE:=var$
 1400DEFPROCgeticonstate(wind%,icon%)q%!256=wind%:q%!260=icon%:SYS"Wimp_GetIconState",,q%+256:ENDPROC
 1410DEFPROCseticonstate(wind%,icon%,eor%,clear%)q%!256=wind%:q%!260=icon%:q%!264=eor%:q%!268=clear%:SYS"Wimp_SetIconState",,q%+256:ENDPROC
 1420DEFPROCseticontext(wind%,icon%,text$)PROCgeticonstate(wind%,icon%):$FNtextaddr(wind%,icon%)=text$:PROCseticonstate(wind%,icon%,0,0):ENDPROC
 1430DEFFNtextaddr(wind%,icon%)PROCgeticonstate(wind%,icon%):=q%!284
 1440DEFPROCopenwindow(wind%)q%!256=wind%:SYS"Wimp_GetWindowState",,q%+256:q%!284=-1:SYS"Wimp_OpenWindow",,q%+256:ENDPROC
 1450DEFFNcreatewin(temp$)SYS"Wimp_LoadTemplate",,q%,indr%,indr_end%,-1,temp$,0TO,,indr%:SYS"Wimp_CreateWindow",,q%TOwind%:=wind%
 1460DEFFNword:=BGET#rd%ORBGET#rd%<<8ORBGET#rd%<<16ORBGET#rd%<<24
 1470DEFFNrword:=BGET#rd%<<24ORBGET#rd%<<16ORBGET#rd%<<8ORBGET#rd%
 1480DEFFNrmv(mode%,var%):SYS"OS_ReadModeVariable",mode%,var%TO,,var%:=var%
 1490DEFPROCok(message$)
 1500PROCslotsize(0):q%!8=0:q%!12=save%:q%!16=0:SYS"Interface_SlabButton",,q%
 1510q%!256=0:$(q%+260)=message$+CHR$0:SYS"Wimp_ReportError",q%+256,17,"Message from ToBMP"
 1520ENDPROC
 1530DEFPROCerror
 1540PROCslotsize(0):q%!8=0:q%!12=save%:q%!16=0:SYS"Interface_SlabButton",,q%
 1550q%!256=ERR:$(q%+260)=REPORT$+", IEC "+STR$ERL+", click OK to continue or Cancel to quit."+CHR$0:SYS"Wimp_ReportError",q%+256,3,"ToBMP"TO,btns%:IFbtns%=2 finished%=TRUE
 1560ENDPROC

� ><ToBMP$Dir>.!RunImage
1� by David Thomas, for Acorn Computing � 1993
:ș"Wimp_Initialise",200,&4B534154,"ToBMP"�wimp%,taskh%
(#ș"Interface_Initialise",taskh%
2%ș"Wimp_SlotSize",-1,-1�baseslot%
<K�code%256,q%512,indr%512,menu%80:indr_end%=indr%+512:finished%=�:in$=""
F�ș"Wimp_OpenTemplate",,"<ToBMP$Dir>.Templates":prog_info%=�createwin("prog_info"):save%=�createwin("save"):ș"Wimp_CloseTemplate"
P@ș"OS_File",255,"<ToBMP$Dir>.Menu",menu%:menu%!32=prog_info%
Zf!q%=-1:q%!4=0:q%!8=0:q%!12=68:q%!16=68:q%!20=&3002:$(q%+24)="!tobmp":ș"Wimp_CreateIcon",,q%�bicn%
d!�opt%=0�2�2:P%=code%:[OPTopt%
n�.swap ldrb r2,[r0]:and r3,r2,#&0F:mov r3,r3,lsl#4:and r4,r2,#&F0:mov r4,r4,lsr#4:orr r2,r3,r4:strb r2,[r0],#1:cmp r0,r1:blt swap:mov pc,r14
x�.swape ldrb r2,[r0]:and r3,r2,#&01:mov r3,r3,lsl#7:mov r4,r3:and r3,r2,#&02:mov r3,r3,lsl#5:orr r4,r3,r4:and r3,r2,#&04:mov r3,r3,lsl#3:orr r4,r3,r4:and r3,r2,#&08:mov r3,r3,lsl#1:orr r4,r3,r4:and r3,r2,#&10
��mov r3,r3,lsr#1:orr r4,r3,r4:and r3,r2,#&20:mov r3,r3,lsr#3:orr r4,r3,r4:and r3,r2,#&40:mov r3,r3,lsr#5:orr r4,r3,r4:and r3,r2,#&80:mov r3,r3,lsr#7:orr r4,r3,r4:strb r4,[r0],#1:cmp r0,r1:blt swape:mov pc,r14
�p.swapt ldrb r2,[r0]:ldrb r3,[r0,#2]:strb r3,[r0]:strb r2,[r0,#2]:add r0,r0,#3:cmp r0,r1:bne swapt:mov pc,r14
�]:�
���error
��
�ș"Wimp_Poll",,q%�reason%
�&ș"Interface_Poll",reason%,,taskh%
�9ș"Interface_PreProcessKey",reason%,q%,taskh%�reason%
�Ȏreason%�
�q�1:ș"Wimp_RedrawWindow",,q%�more%:ȕmore%:ș"Interface_Render3dWindow",,q%:ș"Wimp_GetRectangle",,q%�more%:�
��2:ș"Wimp_OpenWindow",,q%
��3:ș"Wimp_CloseWindow",,q%
�
�6:�mouse
�7:�dragboxend
 �8:ș"Wimp_ProcessKey",q%!24
e�9:�!q%=1 finished%=� � ș"Wimp_GetPointerInfo",,q%:�q%!8=1ș"Wimp_CreateMenu",,menu%,!q%-72,q%!4
"�17,18:Ȏq%!16�
,�0:finished%=�
6�2:�save(�var(q%+44))
@��3:�q%!40=&690�q%!40=&FF9 in$=�var(q%+44):type%=q%!40:ș"Wimp_GetPointerInfo",,q%:ș"Wimp_CreateMenu",,save%,!q%-152,q%!4+68
Js�10:h%=q%!20:ș"OS_ReadVarVal","ToBMP$Dir",q%+256,256,0,3 � ,,end%:q2%=q%+256:q2%?end%=13:�#h%,"Run "+$(q%+256)
T�
^�
h�finished%
r"ș"Interface_CloseDown",taskh%
|'ș"Wimp_CloseDown",taskh%,&4B534154
��
���mouse
�Ȏq%!12�
��-2:Ȏq%!16�
��bicn%:Ȏq%!8�
�,�2:ș"Wimp_CreateMenu",,menu%,!q%-76,184
�w�1:� in$<>"" ș "OS_File",5,in$ � in%:�in%=1 ș"Wimp_GetPointerInfo",,q%:ș"Wimp_CreateMenu",,save%,!q%-152,q%!4+68
��
��
��save%:Ȏq%!8�
��4,1:Ȏq%!16�
�#�2:�dragbox(save%,2,"file_69c")
�&�0:�save(�var(�textaddr(save%,1)))
�
�
�
&�
0��save(file$)
:ș"Hourglass_On"
D;q%!8=4:q%!12=save%:q%!16=0:ș"Interface_SlabButton",,q%
N[�file$,".")<1��file$,":")<1�ok("To save, drag the file icon to a directory display"):�
Xrd%=�in$
b�type%=&FF9�sprite � �clear
l�slotsize(54+pal%+size%)
v��currslot%<(54+pal%+size%+baseslot%)�#rd%:�ok("I cannot grab the memory needed for processing this file. Please free some memory and try again."):�
�L$buff%="BM":buff%!2=54+pal%+size%:buff%!6=0:buff%!10=54+pal%:buff%!14=40
�Nbuff%!18=x%:buff%!22=y%:buff%!26=1:buff%!28=bpp%:buff%!30=0:buff%!34=size%
�9buff%!38=0:buff%!42=0:buff%!46=2^bpp%:buff%!50=2^bpp%
�
�bpp%<24�
�Ȏtype%�
��&690:Ȏbpp%�
�K�8:�entry%=0�(2^bpp%)-1:!(buff%+54+entry%*4)=�#rd%<<16��#rd%<<8��#rd%:�
�H�#rd%:�ok("I'm afraid I don't support "+�bpp%+"bpp Clear files."):�
��
��&FF9:�palette%>=image%�
�Ȏbpp%�
�(�1:!(buff%+54)=&FFFFFF:!(buff%+58)=0
���4:!(buff%+54)=&FFFFFF:!(buff%+58)=&DDDDDD:!(buff%+62)=&BBBBBB:!(buff%+66)=&999999:!(buff%+70)=&777777:!(buff%+74)=&555555:!(buff%+78)=&333333:!(buff%+82)=&000000:!(buff%+86)=&004499:!(buff%+90)=&EEEE00:!(buff%+94)=&00CC00:!(buff%+98)=&DD0000
W!(buff%+102)=&EEEEBB:!(buff%+106)=&558800:!(buff%+110)=&FFBB00:!(buff%+114)=&00BBFF
��8:�entry%=0�255:shade%=entry%�3:!(buff%+54+entry%*4)=((((entry%�16)>>1)+(entry%�4)+shade%)<<20)+((((entry%�96)>>3)+shade%)<<12)+((((entry%�128)>>4)+((entry%�8)>>1)+shade%)<<4):�
D�#rd%:�ok("I'm afraid I don't support "+�bpp%+"bpp Sprites."):�
 �
*� �#rd%=palette%
4Ȏbpp%�
>E�1,4:�entry%=0�(2^bpp%)-1:!(buff%+54+entry%*4)=�rword:s%=�rword:�
H�8:�image%-palette%>=2048�
R@�entry%=0�(2^bpp%)-1:!(buff%+54+entry%*4)=�rword:s%=�rword:�
\�
f8�entry%=0�15:!(buff%+54+entry%*4)=�rword:s%=�rword:�
ps�entry%=16�255:!(buff%+54+entry%*4)=!(buff%+54+(entry%�15)*4)+(entry%�128)+((entry%�96)<<9)+((entry%�16)<<19):�
z�
�D�#rd%:�ok("I'm afraid I don't support "+�bpp%+"bpp Sprites."):�
��
��
��
��
�"ptr%=0:�type%=&FF9�#rd%=image%
��
�Cș"OS_GBPB",4,rd%,buff%+54+pal%+size%-rowsize%-ptr%,actrowsize%
�:A%=buff%+54+pal%+size%-rowsize%-ptr%:B%=A%+actrowsize%
�Ȏbpp%�
�
�1:�swape
��4:�swap
��24:�swapt
�
ptr%+=rowsize%
�ptr%>=y%*rowsize%
$	�#rd%
.8ș"OS_File",10,file$,&69C,,buff%,buff%+54+pal%+size%
8�slotsize(0)
B�seticontext(save%,1,file$)
L;q%!8=0:q%!12=save%:q%!16=0:ș"Interface_SlabButton",,q%
Vș"Wimp_CreateMenu",-1
`ș"Hourglass_Off"
j�
t��slotsize(amount%)
~<ș"Wimp_SlotSize",amount%+baseslot%,-1�currslot%:buff%=�
��
���sprite
���#rd%=4:offset%=�word-4:�#rd%=offset%+16:xwords%=�word+1:y%=�word+1:fb%=�word:lb%=�word:image%=offset%+�word:transp%=offset%+�word:mode%=�word:palette%=offset%+44:bpp%=2^�rmv(mode%,9):x%=(xwords%*32-(31-lb%)-fb%)�bpp%
�#�bpp%<24 pal%=2^bpp%*4 � pal%=0
�=rowsize%=xwords%*4:size%=rowsize%*y%:actrowsize%=rowsize%
��
���clear
�6ȕ�#rd%>32:�:v%=�word:x%=�word:y%=�word:bpp%=�word
�#�bpp%<24 pal%=2^bpp%*4 � pal%=0
�Irowsize%=((x%*bpp%+31)��31)�8:size%=rowsize%*y%:actrowsize%=x%*bpp%/8
��
�#� �dragbox(wind%,icon%,spname$)
�!q%=wind%:ș "Wimp_GetWindowState",,q%:x%=q%!4:y%=q%!16:xs%=q%!20:ys%=q%!24:!q%=wind%:q%!4=icon%:ș "Wimp_GetIconState",,q%:q%!4=5:q%!8+=x%-xs%:q%!12+=y%-ys%:q%!16+=x%-xs%:q%!20+=y%-ys%:q%!24=0:q%!28=0:q%!32=&7FFFFFFF:q%!36=&7FFFFFFF

zș "OS_Byte",161,28 �,,dragaspr%:� dragaspr%�2 ș "DragASprite_Start",197,1,spname$,q%+8,q%+24 � ș "Wimp_DragBox",,q%
�
��dragboxend
('� dragaspr%�2 ș "DragASprite_Stop"
2�ș"Wimp_GetPointerInfo",,q%:q%!20=q%!12:q%!24=q%!16:q%!28=!q%:q%!32=q%!4:q%!12=0:q%!16=1:q%!36=0:q%!40=&69C:$(q%+44)=�leaf(�var(�textaddr(save%,1)))+�0:!q%=44+(��var(�textaddr(save%,1))+4)��3:ș"Wimp_SendMessage",17,q%,q%!20
<�
Fݤleaf(file$)
P1ȕ�file$,":")>0:file$=�file$,�file$,":")+1):�
Z1ȕ�file$,".")>0:file$=�file$,�file$,".")+1):�
d
=file$
n>ݤvar(var%)var$="":ȕ?var%>31:var$+=�?var%:var%+=1:�:=var$
xX��geticonstate(wind%,icon%)q%!256=wind%:q%!260=icon%:ș"Wimp_GetIconState",,q%+256:�
�~��seticonstate(wind%,icon%,eor%,clear%)q%!256=wind%:q%!260=icon%:q%!264=eor%:q%!268=clear%:ș"Wimp_SetIconState",,q%+256:�
�}��seticontext(wind%,icon%,text$)�geticonstate(wind%,icon%):$�textaddr(wind%,icon%)=text$:�seticonstate(wind%,icon%,0,0):�
�=ݤtextaddr(wind%,icon%)�geticonstate(wind%,icon%):=q%!284
�k��openwindow(wind%)q%!256=wind%:ș"Wimp_GetWindowState",,q%+256:q%!284=-1:ș"Wimp_OpenWindow",,q%+256:�
�yݤcreatewin(temp$)ș"Wimp_LoadTemplate",,q%,indr%,indr_end%,-1,temp$,0�,,indr%:ș"Wimp_CreateWindow",,q%�wind%:=wind%
�.ݤword:=�#rd%��#rd%<<8��#rd%<<16��#rd%<<24
�/ݤrword:=�#rd%<<24��#rd%<<16��#rd%<<8��#rd%
�Eݤrmv(mode%,var%):ș"OS_ReadModeVariable",mode%,var%�,,var%:=var%
���ok(message$)
�H�slotsize(0):q%!8=0:q%!12=save%:q%!16=0:ș"Interface_SlabButton",,q%
�Vq%!256=0:$(q%+260)=message$+�0:ș"Wimp_ReportError",q%+256,17,"Message from ToBMP"
��
���error
H�slotsize(0):q%!8=0:q%!12=save%:q%!16=0:ș"Interface_SlabButton",,q%
�q%!256=�:$(q%+260)=�$+", IEC "+Þ+", click OK to continue or Cancel to quit."+�0:ș"Wimp_ReportError",q%+256,3,"ToBMP"�,btns%:�btns%=2 finished%=�
�
�
00000000  0d 00 0a 1c f4 20 3e 3c  54 6f 42 4d 50 24 44 69  |..... ><ToBMP$Di|
00000010  72 3e 2e 21 52 75 6e 49  6d 61 67 65 0d 00 14 31  |r>.!RunImage...1|
00000020  f4 20 62 79 20 44 61 76  69 64 20 54 68 6f 6d 61  |. by David Thoma|
00000030  73 2c 20 66 6f 72 20 41  63 6f 72 6e 20 43 6f 6d  |s, for Acorn Com|
00000040  70 75 74 69 6e 67 20 a9  20 31 39 39 33 0d 00 1e  |puting . 1993...|
00000050  3a c8 99 22 57 69 6d 70  5f 49 6e 69 74 69 61 6c  |:.."Wimp_Initial|
00000060  69 73 65 22 2c 32 30 30  2c 26 34 42 35 33 34 31  |ise",200,&4B5341|
00000070  35 34 2c 22 54 6f 42 4d  50 22 b8 77 69 6d 70 25  |54,"ToBMP".wimp%|
00000080  2c 74 61 73 6b 68 25 0d  00 28 23 c8 99 22 49 6e  |,taskh%..(#.."In|
00000090  74 65 72 66 61 63 65 5f  49 6e 69 74 69 61 6c 69  |terface_Initiali|
000000a0  73 65 22 2c 74 61 73 6b  68 25 0d 00 32 25 c8 99  |se",taskh%..2%..|
000000b0  22 57 69 6d 70 5f 53 6c  6f 74 53 69 7a 65 22 2c  |"Wimp_SlotSize",|
000000c0  2d 31 2c 2d 31 b8 62 61  73 65 73 6c 6f 74 25 0d  |-1,-1.baseslot%.|
000000d0  00 3c 4b de 63 6f 64 65  25 32 35 36 2c 71 25 35  |.<K.code%256,q%5|
000000e0  31 32 2c 69 6e 64 72 25  35 31 32 2c 6d 65 6e 75  |12,indr%512,menu|
000000f0  25 38 30 3a 69 6e 64 72  5f 65 6e 64 25 3d 69 6e  |%80:indr_end%=in|
00000100  64 72 25 2b 35 31 32 3a  66 69 6e 69 73 68 65 64  |dr%+512:finished|
00000110  25 3d a3 3a 69 6e 24 3d  22 22 0d 00 46 85 c8 99  |%=.:in$=""..F...|
00000120  22 57 69 6d 70 5f 4f 70  65 6e 54 65 6d 70 6c 61  |"Wimp_OpenTempla|
00000130  74 65 22 2c 2c 22 3c 54  6f 42 4d 50 24 44 69 72  |te",,"<ToBMP$Dir|
00000140  3e 2e 54 65 6d 70 6c 61  74 65 73 22 3a 70 72 6f  |>.Templates":pro|
00000150  67 5f 69 6e 66 6f 25 3d  a4 63 72 65 61 74 65 77  |g_info%=.createw|
00000160  69 6e 28 22 70 72 6f 67  5f 69 6e 66 6f 22 29 3a  |in("prog_info"):|
00000170  73 61 76 65 25 3d a4 63  72 65 61 74 65 77 69 6e  |save%=.createwin|
00000180  28 22 73 61 76 65 22 29  3a c8 99 22 57 69 6d 70  |("save"):.."Wimp|
00000190  5f 43 6c 6f 73 65 54 65  6d 70 6c 61 74 65 22 0d  |_CloseTemplate".|
000001a0  00 50 40 c8 99 22 4f 53  5f 46 69 6c 65 22 2c 32  |.P@.."OS_File",2|
000001b0  35 35 2c 22 3c 54 6f 42  4d 50 24 44 69 72 3e 2e  |55,"<ToBMP$Dir>.|
000001c0  4d 65 6e 75 22 2c 6d 65  6e 75 25 3a 6d 65 6e 75  |Menu",menu%:menu|
000001d0  25 21 33 32 3d 70 72 6f  67 5f 69 6e 66 6f 25 0d  |%!32=prog_info%.|
000001e0  00 5a 66 21 71 25 3d 2d  31 3a 71 25 21 34 3d 30  |.Zf!q%=-1:q%!4=0|
000001f0  3a 71 25 21 38 3d 30 3a  71 25 21 31 32 3d 36 38  |:q%!8=0:q%!12=68|
00000200  3a 71 25 21 31 36 3d 36  38 3a 71 25 21 32 30 3d  |:q%!16=68:q%!20=|
00000210  26 33 30 30 32 3a 24 28  71 25 2b 32 34 29 3d 22  |&3002:$(q%+24)="|
00000220  21 74 6f 62 6d 70 22 3a  c8 99 22 57 69 6d 70 5f  |!tobmp":.."Wimp_|
00000230  43 72 65 61 74 65 49 63  6f 6e 22 2c 2c 71 25 b8  |CreateIcon",,q%.|
00000240  62 69 63 6e 25 0d 00 64  21 e3 6f 70 74 25 3d 30  |bicn%..d!.opt%=0|
00000250  b8 32 88 32 3a 50 25 3d  63 6f 64 65 25 3a 5b 4f  |.2.2:P%=code%:[O|
00000260  50 54 6f 70 74 25 0d 00  6e 8f 2e 73 77 61 70 20  |PTopt%..n..swap |
00000270  6c 64 72 62 20 72 32 2c  5b 72 30 5d 3a 61 6e 64  |ldrb r2,[r0]:and|
00000280  20 72 33 2c 72 32 2c 23  26 30 46 3a 6d 6f 76 20  | r3,r2,#&0F:mov |
00000290  72 33 2c 72 33 2c 6c 73  6c 23 34 3a 61 6e 64 20  |r3,r3,lsl#4:and |
000002a0  72 34 2c 72 32 2c 23 26  46 30 3a 6d 6f 76 20 72  |r4,r2,#&F0:mov r|
000002b0  34 2c 72 34 2c 6c 73 72  23 34 3a 6f 72 72 20 72  |4,r4,lsr#4:orr r|
000002c0  32 2c 72 33 2c 72 34 3a  73 74 72 62 20 72 32 2c  |2,r3,r4:strb r2,|
000002d0  5b 72 30 5d 2c 23 31 3a  63 6d 70 20 72 30 2c 72  |[r0],#1:cmp r0,r|
000002e0  31 3a 62 6c 74 20 73 77  61 70 3a 6d 6f 76 20 70  |1:blt swap:mov p|
000002f0  63 2c 72 31 34 0d 00 78  d3 2e 73 77 61 70 65 20  |c,r14..x..swape |
00000300  6c 64 72 62 20 72 32 2c  5b 72 30 5d 3a 61 6e 64  |ldrb r2,[r0]:and|
00000310  20 72 33 2c 72 32 2c 23  26 30 31 3a 6d 6f 76 20  | r3,r2,#&01:mov |
00000320  72 33 2c 72 33 2c 6c 73  6c 23 37 3a 6d 6f 76 20  |r3,r3,lsl#7:mov |
00000330  72 34 2c 72 33 3a 61 6e  64 20 72 33 2c 72 32 2c  |r4,r3:and r3,r2,|
00000340  23 26 30 32 3a 6d 6f 76  20 72 33 2c 72 33 2c 6c  |#&02:mov r3,r3,l|
00000350  73 6c 23 35 3a 6f 72 72  20 72 34 2c 72 33 2c 72  |sl#5:orr r4,r3,r|
00000360  34 3a 61 6e 64 20 72 33  2c 72 32 2c 23 26 30 34  |4:and r3,r2,#&04|
00000370  3a 6d 6f 76 20 72 33 2c  72 33 2c 6c 73 6c 23 33  |:mov r3,r3,lsl#3|
00000380  3a 6f 72 72 20 72 34 2c  72 33 2c 72 34 3a 61 6e  |:orr r4,r3,r4:an|
00000390  64 20 72 33 2c 72 32 2c  23 26 30 38 3a 6d 6f 76  |d r3,r2,#&08:mov|
000003a0  20 72 33 2c 72 33 2c 6c  73 6c 23 31 3a 6f 72 72  | r3,r3,lsl#1:orr|
000003b0  20 72 34 2c 72 33 2c 72  34 3a 61 6e 64 20 72 33  | r4,r3,r4:and r3|
000003c0  2c 72 32 2c 23 26 31 30  0d 00 82 d3 6d 6f 76 20  |,r2,#&10....mov |
000003d0  72 33 2c 72 33 2c 6c 73  72 23 31 3a 6f 72 72 20  |r3,r3,lsr#1:orr |
000003e0  72 34 2c 72 33 2c 72 34  3a 61 6e 64 20 72 33 2c  |r4,r3,r4:and r3,|
000003f0  72 32 2c 23 26 32 30 3a  6d 6f 76 20 72 33 2c 72  |r2,#&20:mov r3,r|
00000400  33 2c 6c 73 72 23 33 3a  6f 72 72 20 72 34 2c 72  |3,lsr#3:orr r4,r|
00000410  33 2c 72 34 3a 61 6e 64  20 72 33 2c 72 32 2c 23  |3,r4:and r3,r2,#|
00000420  26 34 30 3a 6d 6f 76 20  72 33 2c 72 33 2c 6c 73  |&40:mov r3,r3,ls|
00000430  72 23 35 3a 6f 72 72 20  72 34 2c 72 33 2c 72 34  |r#5:orr r4,r3,r4|
00000440  3a 61 6e 64 20 72 33 2c  72 32 2c 23 26 38 30 3a  |:and r3,r2,#&80:|
00000450  6d 6f 76 20 72 33 2c 72  33 2c 6c 73 72 23 37 3a  |mov r3,r3,lsr#7:|
00000460  6f 72 72 20 72 34 2c 72  33 2c 72 34 3a 73 74 72  |orr r4,r3,r4:str|
00000470  62 20 72 34 2c 5b 72 30  5d 2c 23 31 3a 63 6d 70  |b r4,[r0],#1:cmp|
00000480  20 72 30 2c 72 31 3a 62  6c 74 20 73 77 61 70 65  | r0,r1:blt swape|
00000490  3a 6d 6f 76 20 70 63 2c  72 31 34 0d 00 8c 70 2e  |:mov pc,r14...p.|
000004a0  73 77 61 70 74 20 6c 64  72 62 20 72 32 2c 5b 72  |swapt ldrb r2,[r|
000004b0  30 5d 3a 6c 64 72 62 20  72 33 2c 5b 72 30 2c 23  |0]:ldrb r3,[r0,#|
000004c0  32 5d 3a 73 74 72 62 20  72 33 2c 5b 72 30 5d 3a  |2]:strb r3,[r0]:|
000004d0  73 74 72 62 20 72 32 2c  5b 72 30 2c 23 32 5d 3a  |strb r2,[r0,#2]:|
000004e0  61 64 64 20 72 30 2c 72  30 2c 23 33 3a 63 6d 70  |add r0,r0,#3:cmp|
000004f0  20 72 30 2c 72 31 3a 62  6e 65 20 73 77 61 70 74  | r0,r1:bne swapt|
00000500  3a 6d 6f 76 20 70 63 2c  72 31 34 0d 00 96 07 5d  |:mov pc,r14....]|
00000510  3a ed 0d 00 a0 0c ee 85  f2 65 72 72 6f 72 0d 00  |:........error..|
00000520  aa 05 f5 0d 00 b4 1d c8  99 22 57 69 6d 70 5f 50  |........."Wimp_P|
00000530  6f 6c 6c 22 2c 2c 71 25  b8 72 65 61 73 6f 6e 25  |oll",,q%.reason%|
00000540  0d 00 be 26 c8 99 22 49  6e 74 65 72 66 61 63 65  |...&.."Interface|
00000550  5f 50 6f 6c 6c 22 2c 72  65 61 73 6f 6e 25 2c 2c  |_Poll",reason%,,|
00000560  74 61 73 6b 68 25 0d 00  c8 39 c8 99 22 49 6e 74  |taskh%...9.."Int|
00000570  65 72 66 61 63 65 5f 50  72 65 50 72 6f 63 65 73  |erface_PreProces|
00000580  73 4b 65 79 22 2c 72 65  61 73 6f 6e 25 2c 71 25  |sKey",reason%,q%|
00000590  2c 74 61 73 6b 68 25 b8  72 65 61 73 6f 6e 25 0d  |,taskh%.reason%.|
000005a0  00 d2 0e c8 8e 72 65 61  73 6f 6e 25 ca 0d 00 dc  |.....reason%....|
000005b0  71 c9 31 3a c8 99 22 57  69 6d 70 5f 52 65 64 72  |q.1:.."Wimp_Redr|
000005c0  61 77 57 69 6e 64 6f 77  22 2c 2c 71 25 b8 6d 6f  |awWindow",,q%.mo|
000005d0  72 65 25 3a c8 95 6d 6f  72 65 25 3a c8 99 22 49  |re%:..more%:.."I|
000005e0  6e 74 65 72 66 61 63 65  5f 52 65 6e 64 65 72 33  |nterface_Render3|
000005f0  64 57 69 6e 64 6f 77 22  2c 2c 71 25 3a c8 99 22  |dWindow",,q%:.."|
00000600  57 69 6d 70 5f 47 65 74  52 65 63 74 61 6e 67 6c  |Wimp_GetRectangl|
00000610  65 22 2c 2c 71 25 b8 6d  6f 72 65 25 3a ce 0d 00  |e",,q%.more%:...|
00000620  e6 1e c9 32 3a c8 99 22  57 69 6d 70 5f 4f 70 65  |...2:.."Wimp_Ope|
00000630  6e 57 69 6e 64 6f 77 22  2c 2c 71 25 0d 00 f0 1f  |nWindow",,q%....|
00000640  c9 33 3a c8 99 22 57 69  6d 70 5f 43 6c 6f 73 65  |.3:.."Wimp_Close|
00000650  57 69 6e 64 6f 77 22 2c  2c 71 25 0d 00 fa 0d c9  |Window",,q%.....|
00000660  36 3a f2 6d 6f 75 73 65  0d 01 04 12 c9 37 3a f2  |6:.mouse.....7:.|
00000670  64 72 61 67 62 6f 78 65  6e 64 0d 01 0e 20 c9 38  |dragboxend... .8|
00000680  3a c8 99 22 57 69 6d 70  5f 50 72 6f 63 65 73 73  |:.."Wimp_Process|
00000690  4b 65 79 22 2c 71 25 21  32 34 0d 01 18 65 c9 39  |Key",q%!24...e.9|
000006a0  3a e7 21 71 25 3d 31 20  66 69 6e 69 73 68 65 64  |:.!q%=1 finished|
000006b0  25 3d b9 20 8b 20 c8 99  22 57 69 6d 70 5f 47 65  |%=. . .."Wimp_Ge|
000006c0  74 50 6f 69 6e 74 65 72  49 6e 66 6f 22 2c 2c 71  |tPointerInfo",,q|
000006d0  25 3a e7 71 25 21 38 3d  31 c8 99 22 57 69 6d 70  |%:.q%!8=1.."Wimp|
000006e0  5f 43 72 65 61 74 65 4d  65 6e 75 22 2c 2c 6d 65  |_CreateMenu",,me|
000006f0  6e 75 25 2c 21 71 25 2d  37 32 2c 71 25 21 34 0d  |nu%,!q%-72,q%!4.|
00000700  01 22 13 c9 31 37 2c 31  38 3a c8 8e 71 25 21 31  |."..17,18:..q%!1|
00000710  36 ca 0d 01 2c 12 c9 30  3a 66 69 6e 69 73 68 65  |6...,..0:finishe|
00000720  64 25 3d b9 0d 01 36 19  c9 32 3a f2 73 61 76 65  |d%=...6..2:.save|
00000730  28 a4 76 61 72 28 71 25  2b 34 34 29 29 0d 01 40  |(.var(q%+44))..@|
00000740  80 c9 33 3a e7 71 25 21  34 30 3d 26 36 39 30 84  |..3:.q%!40=&690.|
00000750  71 25 21 34 30 3d 26 46  46 39 20 69 6e 24 3d a4  |q%!40=&FF9 in$=.|
00000760  76 61 72 28 71 25 2b 34  34 29 3a 74 79 70 65 25  |var(q%+44):type%|
00000770  3d 71 25 21 34 30 3a c8  99 22 57 69 6d 70 5f 47  |=q%!40:.."Wimp_G|
00000780  65 74 50 6f 69 6e 74 65  72 49 6e 66 6f 22 2c 2c  |etPointerInfo",,|
00000790  71 25 3a c8 99 22 57 69  6d 70 5f 43 72 65 61 74  |q%:.."Wimp_Creat|
000007a0  65 4d 65 6e 75 22 2c 2c  73 61 76 65 25 2c 21 71  |eMenu",,save%,!q|
000007b0  25 2d 31 35 32 2c 71 25  21 34 2b 36 38 0d 01 4a  |%-152,q%!4+68..J|
000007c0  73 c9 31 30 3a 68 25 3d  71 25 21 32 30 3a c8 99  |s.10:h%=q%!20:..|
000007d0  22 4f 53 5f 52 65 61 64  56 61 72 56 61 6c 22 2c  |"OS_ReadVarVal",|
000007e0  22 54 6f 42 4d 50 24 44  69 72 22 2c 71 25 2b 32  |"ToBMP$Dir",q%+2|
000007f0  35 36 2c 32 35 36 2c 30  2c 33 20 b8 20 2c 2c 65  |56,256,0,3 . ,,e|
00000800  6e 64 25 3a 71 32 25 3d  71 25 2b 32 35 36 3a 71  |nd%:q2%=q%+256:q|
00000810  32 25 3f 65 6e 64 25 3d  31 33 3a d5 23 68 25 2c  |2%?end%=13:.#h%,|
00000820  22 52 75 6e 20 22 2b 24  28 71 25 2b 32 35 36 29  |"Run "+$(q%+256)|
00000830  0d 01 54 05 cb 0d 01 5e  05 cb 0d 01 68 0e fd 66  |..T....^....h..f|
00000840  69 6e 69 73 68 65 64 25  0d 01 72 22 c8 99 22 49  |inished%..r".."I|
00000850  6e 74 65 72 66 61 63 65  5f 43 6c 6f 73 65 44 6f  |nterface_CloseDo|
00000860  77 6e 22 2c 74 61 73 6b  68 25 0d 01 7c 27 c8 99  |wn",taskh%..|'..|
00000870  22 57 69 6d 70 5f 43 6c  6f 73 65 44 6f 77 6e 22  |"Wimp_CloseDown"|
00000880  2c 74 61 73 6b 68 25 2c  26 34 42 35 33 34 31 35  |,taskh%,&4B53415|
00000890  34 0d 01 86 05 e0 0d 01  90 0b dd f2 6d 6f 75 73  |4...........mous|
000008a0  65 0d 01 9a 0c c8 8e 71  25 21 31 32 ca 0d 01 a4  |e......q%!12....|
000008b0  10 c9 2d 32 3a c8 8e 71  25 21 31 36 ca 0d 01 ae  |..-2:..q%!16....|
000008c0  12 c9 62 69 63 6e 25 3a  c8 8e 71 25 21 38 ca 0d  |..bicn%:..q%!8..|
000008d0  01 b8 2c c9 32 3a c8 99  22 57 69 6d 70 5f 43 72  |..,.2:.."Wimp_Cr|
000008e0  65 61 74 65 4d 65 6e 75  22 2c 2c 6d 65 6e 75 25  |eateMenu",,menu%|
000008f0  2c 21 71 25 2d 37 36 2c  31 38 34 0d 01 c2 77 c9  |,!q%-76,184...w.|
00000900  31 3a e7 20 69 6e 24 3c  3e 22 22 20 c8 99 20 22  |1:. in$<>"" .. "|
00000910  4f 53 5f 46 69 6c 65 22  2c 35 2c 69 6e 24 20 b8  |OS_File",5,in$ .|
00000920  20 69 6e 25 3a e7 69 6e  25 3d 31 20 c8 99 22 57  | in%:.in%=1 .."W|
00000930  69 6d 70 5f 47 65 74 50  6f 69 6e 74 65 72 49 6e  |imp_GetPointerIn|
00000940  66 6f 22 2c 2c 71 25 3a  c8 99 22 57 69 6d 70 5f  |fo",,q%:.."Wimp_|
00000950  43 72 65 61 74 65 4d 65  6e 75 22 2c 2c 73 61 76  |CreateMenu",,sav|
00000960  65 25 2c 21 71 25 2d 31  35 32 2c 71 25 21 34 2b  |e%,!q%-152,q%!4+|
00000970  36 38 0d 01 cc 05 cb 0d  01 d6 05 cb 0d 01 e0 12  |68..............|
00000980  c9 73 61 76 65 25 3a c8  8e 71 25 21 38 ca 0d 01  |.save%:..q%!8...|
00000990  ea 11 c9 34 2c 31 3a c8  8e 71 25 21 31 36 ca 0d  |...4,1:..q%!16..|
000009a0  01 f4 23 c9 32 3a f2 64  72 61 67 62 6f 78 28 73  |..#.2:.dragbox(s|
000009b0  61 76 65 25 2c 32 2c 22  66 69 6c 65 5f 36 39 63  |ave%,2,"file_69c|
000009c0  22 29 0d 01 fe 26 c9 30  3a f2 73 61 76 65 28 a4  |")...&.0:.save(.|
000009d0  76 61 72 28 a4 74 65 78  74 61 64 64 72 28 73 61  |var(.textaddr(sa|
000009e0  76 65 25 2c 31 29 29 29  0d 02 08 05 cb 0d 02 12  |ve%,1)))........|
000009f0  05 cb 0d 02 1c 05 cb 0d  02 26 05 e1 0d 02 30 11  |.........&....0.|
00000a00  dd f2 73 61 76 65 28 66  69 6c 65 24 29 0d 02 3a  |..save(file$)..:|
00000a10  14 c8 99 22 48 6f 75 72  67 6c 61 73 73 5f 4f 6e  |..."Hourglass_On|
00000a20  22 0d 02 44 3b 71 25 21  38 3d 34 3a 71 25 21 31  |"..D;q%!8=4:q%!1|
00000a30  32 3d 73 61 76 65 25 3a  71 25 21 31 36 3d 30 3a  |2=save%:q%!16=0:|
00000a40  c8 99 22 49 6e 74 65 72  66 61 63 65 5f 53 6c 61  |.."Interface_Sla|
00000a50  62 42 75 74 74 6f 6e 22  2c 2c 71 25 0d 02 4e 5b  |bButton",,q%..N[|
00000a60  e7 a7 66 69 6c 65 24 2c  22 2e 22 29 3c 31 80 a7  |..file$,".")<1..|
00000a70  66 69 6c 65 24 2c 22 3a  22 29 3c 31 f2 6f 6b 28  |file$,":")<1.ok(|
00000a80  22 54 6f 20 73 61 76 65  2c 20 64 72 61 67 20 74  |"To save, drag t|
00000a90  68 65 20 66 69 6c 65 20  69 63 6f 6e 20 74 6f 20  |he file icon to |
00000aa0  61 20 64 69 72 65 63 74  6f 72 79 20 64 69 73 70  |a directory disp|
00000ab0  6c 61 79 22 29 3a e1 0d  02 58 0c 72 64 25 3d 8e  |lay"):...X.rd%=.|
00000ac0  69 6e 24 0d 02 62 1f e7  74 79 70 65 25 3d 26 46  |in$..b..type%=&F|
00000ad0  46 39 f2 73 70 72 69 74  65 20 8b 20 f2 63 6c 65  |F9.sprite . .cle|
00000ae0  61 72 0d 02 6c 1c f2 73  6c 6f 74 73 69 7a 65 28  |ar..l..slotsize(|
00000af0  35 34 2b 70 61 6c 25 2b  73 69 7a 65 25 29 0d 02  |54+pal%+size%)..|
00000b00  76 97 e7 63 75 72 72 73  6c 6f 74 25 3c 28 35 34  |v..currslot%<(54|
00000b10  2b 70 61 6c 25 2b 73 69  7a 65 25 2b 62 61 73 65  |+pal%+size%+base|
00000b20  73 6c 6f 74 25 29 d9 23  72 64 25 3a f2 6f 6b 28  |slot%).#rd%:.ok(|
00000b30  22 49 20 63 61 6e 6e 6f  74 20 67 72 61 62 20 74  |"I cannot grab t|
00000b40  68 65 20 6d 65 6d 6f 72  79 20 6e 65 65 64 65 64  |he memory needed|
00000b50  20 66 6f 72 20 70 72 6f  63 65 73 73 69 6e 67 20  | for processing |
00000b60  74 68 69 73 20 66 69 6c  65 2e 20 50 6c 65 61 73  |this file. Pleas|
00000b70  65 20 66 72 65 65 20 73  6f 6d 65 20 6d 65 6d 6f  |e free some memo|
00000b80  72 79 20 61 6e 64 20 74  72 79 20 61 67 61 69 6e  |ry and try again|
00000b90  2e 22 29 3a e1 0d 02 80  4c 24 62 75 66 66 25 3d  |."):....L$buff%=|
00000ba0  22 42 4d 22 3a 62 75 66  66 25 21 32 3d 35 34 2b  |"BM":buff%!2=54+|
00000bb0  70 61 6c 25 2b 73 69 7a  65 25 3a 62 75 66 66 25  |pal%+size%:buff%|
00000bc0  21 36 3d 30 3a 62 75 66  66 25 21 31 30 3d 35 34  |!6=0:buff%!10=54|
00000bd0  2b 70 61 6c 25 3a 62 75  66 66 25 21 31 34 3d 34  |+pal%:buff%!14=4|
00000be0  30 0d 02 8a 4e 62 75 66  66 25 21 31 38 3d 78 25  |0...Nbuff%!18=x%|
00000bf0  3a 62 75 66 66 25 21 32  32 3d 79 25 3a 62 75 66  |:buff%!22=y%:buf|
00000c00  66 25 21 32 36 3d 31 3a  62 75 66 66 25 21 32 38  |f%!26=1:buff%!28|
00000c10  3d 62 70 70 25 3a 62 75  66 66 25 21 33 30 3d 30  |=bpp%:buff%!30=0|
00000c20  3a 62 75 66 66 25 21 33  34 3d 73 69 7a 65 25 0d  |:buff%!34=size%.|
00000c30  02 94 39 62 75 66 66 25  21 33 38 3d 30 3a 62 75  |..9buff%!38=0:bu|
00000c40  66 66 25 21 34 32 3d 30  3a 62 75 66 66 25 21 34  |ff%!42=0:buff%!4|
00000c50  36 3d 32 5e 62 70 70 25  3a 62 75 66 66 25 21 35  |6=2^bpp%:buff%!5|
00000c60  30 3d 32 5e 62 70 70 25  0d 02 9e 0d e7 62 70 70  |0=2^bpp%.....bpp|
00000c70  25 3c 32 34 8c 0d 02 a8  0c c8 8e 74 79 70 65 25  |%<24.......type%|
00000c80  ca 0d 02 b2 11 c9 26 36  39 30 3a c8 8e 62 70 70  |......&690:..bpp|
00000c90  25 ca 0d 02 bc 4b c9 38  3a e3 65 6e 74 72 79 25  |%....K.8:.entry%|
00000ca0  3d 30 b8 28 32 5e 62 70  70 25 29 2d 31 3a 21 28  |=0.(2^bpp%)-1:!(|
00000cb0  62 75 66 66 25 2b 35 34  2b 65 6e 74 72 79 25 2a  |buff%+54+entry%*|
00000cc0  34 29 3d 9a 23 72 64 25  3c 3c 31 36 84 9a 23 72  |4)=.#rd%<<16..#r|
00000cd0  64 25 3c 3c 38 84 9a 23  72 64 25 3a ed 0d 02 c6  |d%<<8..#rd%:....|
00000ce0  48 7f d9 23 72 64 25 3a  f2 6f 6b 28 22 49 27 6d  |H..#rd%:.ok("I'm|
00000cf0  20 61 66 72 61 69 64 20  49 20 64 6f 6e 27 74 20  | afraid I don't |
00000d00  73 75 70 70 6f 72 74 20  22 2b c3 62 70 70 25 2b  |support "+.bpp%+|
00000d10  22 62 70 70 20 43 6c 65  61 72 20 66 69 6c 65 73  |"bpp Clear files|
00000d20  2e 22 29 3a e1 0d 02 d0  05 cb 0d 02 da 1c c9 26  |."):...........&|
00000d30  46 46 39 3a e7 70 61 6c  65 74 74 65 25 3e 3d 69  |FF9:.palette%>=i|
00000d40  6d 61 67 65 25 8c 0d 02  e4 0b c8 8e 62 70 70 25  |mage%.......bpp%|
00000d50  ca 0d 02 ee 28 c9 31 3a  21 28 62 75 66 66 25 2b  |....(.1:!(buff%+|
00000d60  35 34 29 3d 26 46 46 46  46 46 46 3a 21 28 62 75  |54)=&FFFFFF:!(bu|
00000d70  66 66 25 2b 35 38 29 3d  30 0d 02 f8 f6 c9 34 3a  |ff%+58)=0.....4:|
00000d80  21 28 62 75 66 66 25 2b  35 34 29 3d 26 46 46 46  |!(buff%+54)=&FFF|
00000d90  46 46 46 3a 21 28 62 75  66 66 25 2b 35 38 29 3d  |FFF:!(buff%+58)=|
00000da0  26 44 44 44 44 44 44 3a  21 28 62 75 66 66 25 2b  |&DDDDDD:!(buff%+|
00000db0  36 32 29 3d 26 42 42 42  42 42 42 3a 21 28 62 75  |62)=&BBBBBB:!(bu|
00000dc0  66 66 25 2b 36 36 29 3d  26 39 39 39 39 39 39 3a  |ff%+66)=&999999:|
00000dd0  21 28 62 75 66 66 25 2b  37 30 29 3d 26 37 37 37  |!(buff%+70)=&777|
00000de0  37 37 37 3a 21 28 62 75  66 66 25 2b 37 34 29 3d  |777:!(buff%+74)=|
00000df0  26 35 35 35 35 35 35 3a  21 28 62 75 66 66 25 2b  |&555555:!(buff%+|
00000e00  37 38 29 3d 26 33 33 33  33 33 33 3a 21 28 62 75  |78)=&333333:!(bu|
00000e10  66 66 25 2b 38 32 29 3d  26 30 30 30 30 30 30 3a  |ff%+82)=&000000:|
00000e20  21 28 62 75 66 66 25 2b  38 36 29 3d 26 30 30 34  |!(buff%+86)=&004|
00000e30  34 39 39 3a 21 28 62 75  66 66 25 2b 39 30 29 3d  |499:!(buff%+90)=|
00000e40  26 45 45 45 45 30 30 3a  21 28 62 75 66 66 25 2b  |&EEEE00:!(buff%+|
00000e50  39 34 29 3d 26 30 30 43  43 30 30 3a 21 28 62 75  |94)=&00CC00:!(bu|
00000e60  66 66 25 2b 39 38 29 3d  26 44 44 30 30 30 30 0d  |ff%+98)=&DD0000.|
00000e70  03 02 57 21 28 62 75 66  66 25 2b 31 30 32 29 3d  |..W!(buff%+102)=|
00000e80  26 45 45 45 45 42 42 3a  21 28 62 75 66 66 25 2b  |&EEEEBB:!(buff%+|
00000e90  31 30 36 29 3d 26 35 35  38 38 30 30 3a 21 28 62  |106)=&558800:!(b|
00000ea0  75 66 66 25 2b 31 31 30  29 3d 26 46 46 42 42 30  |uff%+110)=&FFBB0|
00000eb0  30 3a 21 28 62 75 66 66  25 2b 31 31 34 29 3d 26  |0:!(buff%+114)=&|
00000ec0  30 30 42 42 46 46 0d 03  0c b6 c9 38 3a e3 65 6e  |00BBFF.....8:.en|
00000ed0  74 72 79 25 3d 30 b8 32  35 35 3a 73 68 61 64 65  |try%=0.255:shade|
00000ee0  25 3d 65 6e 74 72 79 25  80 33 3a 21 28 62 75 66  |%=entry%.3:!(buf|
00000ef0  66 25 2b 35 34 2b 65 6e  74 72 79 25 2a 34 29 3d  |f%+54+entry%*4)=|
00000f00  28 28 28 28 65 6e 74 72  79 25 80 31 36 29 3e 3e  |((((entry%.16)>>|
00000f10  31 29 2b 28 65 6e 74 72  79 25 80 34 29 2b 73 68  |1)+(entry%.4)+sh|
00000f20  61 64 65 25 29 3c 3c 32  30 29 2b 28 28 28 28 65  |ade%)<<20)+((((e|
00000f30  6e 74 72 79 25 80 39 36  29 3e 3e 33 29 2b 73 68  |ntry%.96)>>3)+sh|
00000f40  61 64 65 25 29 3c 3c 31  32 29 2b 28 28 28 28 65  |ade%)<<12)+((((e|
00000f50  6e 74 72 79 25 80 31 32  38 29 3e 3e 34 29 2b 28  |ntry%.128)>>4)+(|
00000f60  28 65 6e 74 72 79 25 80  38 29 3e 3e 31 29 2b 73  |(entry%.8)>>1)+s|
00000f70  68 61 64 65 25 29 3c 3c  34 29 3a ed 0d 03 16 44  |hade%)<<4):....D|
00000f80  7f d9 23 72 64 25 3a f2  6f 6b 28 22 49 27 6d 20  |..#rd%:.ok("I'm |
00000f90  61 66 72 61 69 64 20 49  20 64 6f 6e 27 74 20 73  |afraid I don't s|
00000fa0  75 70 70 6f 72 74 20 22  2b c3 62 70 70 25 2b 22  |upport "+.bpp%+"|
00000fb0  62 70 70 20 53 70 72 69  74 65 73 2e 22 29 3a e1  |bpp Sprites."):.|
00000fc0  0d 03 20 05 cb 0d 03 2a  14 cc 20 cf 23 72 64 25  |.. ....*.. .#rd%|
00000fd0  3d 70 61 6c 65 74 74 65  25 0d 03 34 0b c8 8e 62  |=palette%..4...b|
00000fe0  70 70 25 ca 0d 03 3e 45  c9 31 2c 34 3a e3 65 6e  |pp%...>E.1,4:.en|
00000ff0  74 72 79 25 3d 30 b8 28  32 5e 62 70 70 25 29 2d  |try%=0.(2^bpp%)-|
00001000  31 3a 21 28 62 75 66 66  25 2b 35 34 2b 65 6e 74  |1:!(buff%+54+ent|
00001010  72 79 25 2a 34 29 3d a4  72 77 6f 72 64 3a 73 25  |ry%*4)=.rword:s%|
00001020  3d a4 72 77 6f 72 64 3a  ed 0d 03 48 1e c9 38 3a  |=.rword:...H..8:|
00001030  e7 69 6d 61 67 65 25 2d  70 61 6c 65 74 74 65 25  |.image%-palette%|
00001040  3e 3d 32 30 34 38 8c 0d  03 52 40 e3 65 6e 74 72  |>=2048...R@.entr|
00001050  79 25 3d 30 b8 28 32 5e  62 70 70 25 29 2d 31 3a  |y%=0.(2^bpp%)-1:|
00001060  21 28 62 75 66 66 25 2b  35 34 2b 65 6e 74 72 79  |!(buff%+54+entry|
00001070  25 2a 34 29 3d a4 72 77  6f 72 64 3a 73 25 3d a4  |%*4)=.rword:s%=.|
00001080  72 77 6f 72 64 3a ed 0d  03 5c 05 cc 0d 03 66 38  |rword:...\....f8|
00001090  e3 65 6e 74 72 79 25 3d  30 b8 31 35 3a 21 28 62  |.entry%=0.15:!(b|
000010a0  75 66 66 25 2b 35 34 2b  65 6e 74 72 79 25 2a 34  |uff%+54+entry%*4|
000010b0  29 3d a4 72 77 6f 72 64  3a 73 25 3d a4 72 77 6f  |)=.rword:s%=.rwo|
000010c0  72 64 3a ed 0d 03 70 73  e3 65 6e 74 72 79 25 3d  |rd:...ps.entry%=|
000010d0  31 36 b8 32 35 35 3a 21  28 62 75 66 66 25 2b 35  |16.255:!(buff%+5|
000010e0  34 2b 65 6e 74 72 79 25  2a 34 29 3d 21 28 62 75  |4+entry%*4)=!(bu|
000010f0  66 66 25 2b 35 34 2b 28  65 6e 74 72 79 25 80 31  |ff%+54+(entry%.1|
00001100  35 29 2a 34 29 2b 28 65  6e 74 72 79 25 80 31 32  |5)*4)+(entry%.12|
00001110  38 29 2b 28 28 65 6e 74  72 79 25 80 39 36 29 3c  |8)+((entry%.96)<|
00001120  3c 39 29 2b 28 28 65 6e  74 72 79 25 80 31 36 29  |<9)+((entry%.16)|
00001130  3c 3c 31 39 29 3a ed 0d  03 7a 05 cd 0d 03 84 44  |<<19):...z.....D|
00001140  7f d9 23 72 64 25 3a f2  6f 6b 28 22 49 27 6d 20  |..#rd%:.ok("I'm |
00001150  61 66 72 61 69 64 20 49  20 64 6f 6e 27 74 20 73  |afraid I don't s|
00001160  75 70 70 6f 72 74 20 22  2b c3 62 70 70 25 2b 22  |upport "+.bpp%+"|
00001170  62 70 70 20 53 70 72 69  74 65 73 2e 22 29 3a e1  |bpp Sprites."):.|
00001180  0d 03 8e 05 cb 0d 03 98  05 cd 0d 03 a2 05 cb 0d  |................|
00001190  03 ac 05 cd 0d 03 b6 22  70 74 72 25 3d 30 3a e7  |......."ptr%=0:.|
000011a0  74 79 70 65 25 3d 26 46  46 39 8f 23 72 64 25 3d  |type%=&FF9.#rd%=|
000011b0  69 6d 61 67 65 25 0d 03  c0 05 f5 0d 03 ca 43 c8  |image%........C.|
000011c0  99 22 4f 53 5f 47 42 50  42 22 2c 34 2c 72 64 25  |."OS_GBPB",4,rd%|
000011d0  2c 62 75 66 66 25 2b 35  34 2b 70 61 6c 25 2b 73  |,buff%+54+pal%+s|
000011e0  69 7a 65 25 2d 72 6f 77  73 69 7a 65 25 2d 70 74  |ize%-rowsize%-pt|
000011f0  72 25 2c 61 63 74 72 6f  77 73 69 7a 65 25 0d 03  |r%,actrowsize%..|
00001200  d4 3a 41 25 3d 62 75 66  66 25 2b 35 34 2b 70 61  |.:A%=buff%+54+pa|
00001210  6c 25 2b 73 69 7a 65 25  2d 72 6f 77 73 69 7a 65  |l%+size%-rowsize|
00001220  25 2d 70 74 72 25 3a 42  25 3d 41 25 2b 61 63 74  |%-ptr%:B%=A%+act|
00001230  72 6f 77 73 69 7a 65 25  0d 03 de 0b c8 8e 62 70  |rowsize%......bp|
00001240  70 25 ca 0d 03 e8 0d c9  31 3a d6 73 77 61 70 65  |p%......1:.swape|
00001250  0d 03 f2 0c c9 34 3a d6  73 77 61 70 0d 03 fc 0e  |.....4:.swap....|
00001260  c9 32 34 3a d6 73 77 61  70 74 0d 04 06 05 cb 0d  |.24:.swapt......|
00001270  04 10 12 70 74 72 25 2b  3d 72 6f 77 73 69 7a 65  |...ptr%+=rowsize|
00001280  25 0d 04 1a 16 fd 70 74  72 25 3e 3d 79 25 2a 72  |%.....ptr%>=y%*r|
00001290  6f 77 73 69 7a 65 25 0d  04 24 09 d9 23 72 64 25  |owsize%..$..#rd%|
000012a0  0d 04 2e 38 c8 99 22 4f  53 5f 46 69 6c 65 22 2c  |...8.."OS_File",|
000012b0  31 30 2c 66 69 6c 65 24  2c 26 36 39 43 2c 2c 62  |10,file$,&69C,,b|
000012c0  75 66 66 25 2c 62 75 66  66 25 2b 35 34 2b 70 61  |uff%,buff%+54+pa|
000012d0  6c 25 2b 73 69 7a 65 25  0d 04 38 10 f2 73 6c 6f  |l%+size%..8..slo|
000012e0  74 73 69 7a 65 28 30 29  0d 04 42 1f f2 73 65 74  |tsize(0)..B..set|
000012f0  69 63 6f 6e 74 65 78 74  28 73 61 76 65 25 2c 31  |icontext(save%,1|
00001300  2c 66 69 6c 65 24 29 0d  04 4c 3b 71 25 21 38 3d  |,file$)..L;q%!8=|
00001310  30 3a 71 25 21 31 32 3d  73 61 76 65 25 3a 71 25  |0:q%!12=save%:q%|
00001320  21 31 36 3d 30 3a c8 99  22 49 6e 74 65 72 66 61  |!16=0:.."Interfa|
00001330  63 65 5f 53 6c 61 62 42  75 74 74 6f 6e 22 2c 2c  |ce_SlabButton",,|
00001340  71 25 0d 04 56 1a c8 99  22 57 69 6d 70 5f 43 72  |q%..V..."Wimp_Cr|
00001350  65 61 74 65 4d 65 6e 75  22 2c 2d 31 0d 04 60 15  |eateMenu",-1..`.|
00001360  c8 99 22 48 6f 75 72 67  6c 61 73 73 5f 4f 66 66  |.."Hourglass_Off|
00001370  22 0d 04 6a 05 e1 0d 04  74 17 dd f2 73 6c 6f 74  |"..j....t...slot|
00001380  73 69 7a 65 28 61 6d 6f  75 6e 74 25 29 0d 04 7e  |size(amount%)..~|
00001390  3c c8 99 22 57 69 6d 70  5f 53 6c 6f 74 53 69 7a  |<.."Wimp_SlotSiz|
000013a0  65 22 2c 61 6d 6f 75 6e  74 25 2b 62 61 73 65 73  |e",amount%+bases|
000013b0  6c 6f 74 25 2c 2d 31 b8  63 75 72 72 73 6c 6f 74  |lot%,-1.currslot|
000013c0  25 3a 62 75 66 66 25 3d  93 0d 04 88 05 e1 0d 04  |%:buff%=........|
000013d0  92 0c dd f2 73 70 72 69  74 65 0d 04 9c dd cf 23  |....sprite.....#|
000013e0  72 64 25 3d 34 3a 6f 66  66 73 65 74 25 3d a4 77  |rd%=4:offset%=.w|
000013f0  6f 72 64 2d 34 3a cf 23  72 64 25 3d 6f 66 66 73  |ord-4:.#rd%=offs|
00001400  65 74 25 2b 31 36 3a 78  77 6f 72 64 73 25 3d a4  |et%+16:xwords%=.|
00001410  77 6f 72 64 2b 31 3a 79  25 3d a4 77 6f 72 64 2b  |word+1:y%=.word+|
00001420  31 3a 66 62 25 3d a4 77  6f 72 64 3a 6c 62 25 3d  |1:fb%=.word:lb%=|
00001430  a4 77 6f 72 64 3a 69 6d  61 67 65 25 3d 6f 66 66  |.word:image%=off|
00001440  73 65 74 25 2b a4 77 6f  72 64 3a 74 72 61 6e 73  |set%+.word:trans|
00001450  70 25 3d 6f 66 66 73 65  74 25 2b a4 77 6f 72 64  |p%=offset%+.word|
00001460  3a 6d 6f 64 65 25 3d a4  77 6f 72 64 3a 70 61 6c  |:mode%=.word:pal|
00001470  65 74 74 65 25 3d 6f 66  66 73 65 74 25 2b 34 34  |ette%=offset%+44|
00001480  3a 62 70 70 25 3d 32 5e  a4 72 6d 76 28 6d 6f 64  |:bpp%=2^.rmv(mod|
00001490  65 25 2c 39 29 3a 78 25  3d 28 78 77 6f 72 64 73  |e%,9):x%=(xwords|
000014a0  25 2a 33 32 2d 28 33 31  2d 6c 62 25 29 2d 66 62  |%*32-(31-lb%)-fb|
000014b0  25 29 81 62 70 70 25 0d  04 a6 23 e7 62 70 70 25  |%).bpp%...#.bpp%|
000014c0  3c 32 34 20 70 61 6c 25  3d 32 5e 62 70 70 25 2a  |<24 pal%=2^bpp%*|
000014d0  34 20 8b 20 70 61 6c 25  3d 30 0d 04 b0 3d 72 6f  |4 . pal%=0...=ro|
000014e0  77 73 69 7a 65 25 3d 78  77 6f 72 64 73 25 2a 34  |wsize%=xwords%*4|
000014f0  3a 73 69 7a 65 25 3d 72  6f 77 73 69 7a 65 25 2a  |:size%=rowsize%*|
00001500  79 25 3a 61 63 74 72 6f  77 73 69 7a 65 25 3d 72  |y%:actrowsize%=r|
00001510  6f 77 73 69 7a 65 25 0d  04 ba 05 e1 0d 04 c4 0b  |owsize%.........|
00001520  dd f2 63 6c 65 61 72 0d  04 ce 36 c8 95 9a 23 72  |..clear...6...#r|
00001530  64 25 3e 33 32 3a ce 3a  76 25 3d a4 77 6f 72 64  |d%>32:.:v%=.word|
00001540  3a 78 25 3d a4 77 6f 72  64 3a 79 25 3d a4 77 6f  |:x%=.word:y%=.wo|
00001550  72 64 3a 62 70 70 25 3d  a4 77 6f 72 64 0d 04 d8  |rd:bpp%=.word...|
00001560  23 e7 62 70 70 25 3c 32  34 20 70 61 6c 25 3d 32  |#.bpp%<24 pal%=2|
00001570  5e 62 70 70 25 2a 34 20  8b 20 70 61 6c 25 3d 30  |^bpp%*4 . pal%=0|
00001580  0d 04 e2 49 72 6f 77 73  69 7a 65 25 3d 28 28 78  |...Irowsize%=((x|
00001590  25 2a 62 70 70 25 2b 33  31 29 80 ac 33 31 29 81  |%*bpp%+31)..31).|
000015a0  38 3a 73 69 7a 65 25 3d  72 6f 77 73 69 7a 65 25  |8:size%=rowsize%|
000015b0  2a 79 25 3a 61 63 74 72  6f 77 73 69 7a 65 25 3d  |*y%:actrowsize%=|
000015c0  78 25 2a 62 70 70 25 2f  38 0d 04 ec 05 e1 0d 04  |x%*bpp%/8.......|
000015d0  f6 23 dd 20 f2 64 72 61  67 62 6f 78 28 77 69 6e  |.#. .dragbox(win|
000015e0  64 25 2c 69 63 6f 6e 25  2c 73 70 6e 61 6d 65 24  |d%,icon%,spname$|
000015f0  29 0d 05 00 ed 21 71 25  3d 77 69 6e 64 25 3a c8  |)....!q%=wind%:.|
00001600  99 20 22 57 69 6d 70 5f  47 65 74 57 69 6e 64 6f  |. "Wimp_GetWindo|
00001610  77 53 74 61 74 65 22 2c  2c 71 25 3a 78 25 3d 71  |wState",,q%:x%=q|
00001620  25 21 34 3a 79 25 3d 71  25 21 31 36 3a 78 73 25  |%!4:y%=q%!16:xs%|
00001630  3d 71 25 21 32 30 3a 79  73 25 3d 71 25 21 32 34  |=q%!20:ys%=q%!24|
00001640  3a 21 71 25 3d 77 69 6e  64 25 3a 71 25 21 34 3d  |:!q%=wind%:q%!4=|
00001650  69 63 6f 6e 25 3a c8 99  20 22 57 69 6d 70 5f 47  |icon%:.. "Wimp_G|
00001660  65 74 49 63 6f 6e 53 74  61 74 65 22 2c 2c 71 25  |etIconState",,q%|
00001670  3a 71 25 21 34 3d 35 3a  71 25 21 38 2b 3d 78 25  |:q%!4=5:q%!8+=x%|
00001680  2d 78 73 25 3a 71 25 21  31 32 2b 3d 79 25 2d 79  |-xs%:q%!12+=y%-y|
00001690  73 25 3a 71 25 21 31 36  2b 3d 78 25 2d 78 73 25  |s%:q%!16+=x%-xs%|
000016a0  3a 71 25 21 32 30 2b 3d  79 25 2d 79 73 25 3a 71  |:q%!20+=y%-ys%:q|
000016b0  25 21 32 34 3d 30 3a 71  25 21 32 38 3d 30 3a 71  |%!24=0:q%!28=0:q|
000016c0  25 21 33 32 3d 26 37 46  46 46 46 46 46 46 3a 71  |%!32=&7FFFFFFF:q|
000016d0  25 21 33 36 3d 26 37 46  46 46 46 46 46 46 0d 05  |%!36=&7FFFFFFF..|
000016e0  0a 7a c8 99 20 22 4f 53  5f 42 79 74 65 22 2c 31  |.z.. "OS_Byte",1|
000016f0  36 31 2c 32 38 20 b8 2c  2c 64 72 61 67 61 73 70  |61,28 .,,dragasp|
00001700  72 25 3a e7 20 64 72 61  67 61 73 70 72 25 80 32  |r%:. dragaspr%.2|
00001710  20 c8 99 20 22 44 72 61  67 41 53 70 72 69 74 65  | .. "DragASprite|
00001720  5f 53 74 61 72 74 22 2c  31 39 37 2c 31 2c 73 70  |_Start",197,1,sp|
00001730  6e 61 6d 65 24 2c 71 25  2b 38 2c 71 25 2b 32 34  |name$,q%+8,q%+24|
00001740  20 8b 20 c8 99 20 22 57  69 6d 70 5f 44 72 61 67  | . .. "Wimp_Drag|
00001750  42 6f 78 22 2c 2c 71 25  0d 05 14 05 e1 0d 05 1e  |Box",,q%........|
00001760  10 dd f2 64 72 61 67 62  6f 78 65 6e 64 0d 05 28  |...dragboxend..(|
00001770  27 e7 20 64 72 61 67 61  73 70 72 25 80 32 20 c8  |'. dragaspr%.2 .|
00001780  99 20 22 44 72 61 67 41  53 70 72 69 74 65 5f 53  |. "DragASprite_S|
00001790  74 6f 70 22 0d 05 32 e4  c8 99 22 57 69 6d 70 5f  |top"..2..."Wimp_|
000017a0  47 65 74 50 6f 69 6e 74  65 72 49 6e 66 6f 22 2c  |GetPointerInfo",|
000017b0  2c 71 25 3a 71 25 21 32  30 3d 71 25 21 31 32 3a  |,q%:q%!20=q%!12:|
000017c0  71 25 21 32 34 3d 71 25  21 31 36 3a 71 25 21 32  |q%!24=q%!16:q%!2|
000017d0  38 3d 21 71 25 3a 71 25  21 33 32 3d 71 25 21 34  |8=!q%:q%!32=q%!4|
000017e0  3a 71 25 21 31 32 3d 30  3a 71 25 21 31 36 3d 31  |:q%!12=0:q%!16=1|
000017f0  3a 71 25 21 33 36 3d 30  3a 71 25 21 34 30 3d 26  |:q%!36=0:q%!40=&|
00001800  36 39 43 3a 24 28 71 25  2b 34 34 29 3d a4 6c 65  |69C:$(q%+44)=.le|
00001810  61 66 28 a4 76 61 72 28  a4 74 65 78 74 61 64 64  |af(.var(.textadd|
00001820  72 28 73 61 76 65 25 2c  31 29 29 29 2b bd 30 3a  |r(save%,1)))+.0:|
00001830  21 71 25 3d 34 34 2b 28  a9 a4 76 61 72 28 a4 74  |!q%=44+(..var(.t|
00001840  65 78 74 61 64 64 72 28  73 61 76 65 25 2c 31 29  |extaddr(save%,1)|
00001850  29 2b 34 29 80 ac 33 3a  c8 99 22 57 69 6d 70 5f  |)+4)..3:.."Wimp_|
00001860  53 65 6e 64 4d 65 73 73  61 67 65 22 2c 31 37 2c  |SendMessage",17,|
00001870  71 25 2c 71 25 21 32 30  0d 05 3c 05 e1 0d 05 46  |q%,q%!20..<....F|
00001880  11 dd a4 6c 65 61 66 28  66 69 6c 65 24 29 0d 05  |...leaf(file$)..|
00001890  50 31 c8 95 a7 66 69 6c  65 24 2c 22 3a 22 29 3e  |P1...file$,":")>|
000018a0  30 3a 66 69 6c 65 24 3d  c1 66 69 6c 65 24 2c a7  |0:file$=.file$,.|
000018b0  66 69 6c 65 24 2c 22 3a  22 29 2b 31 29 3a ce 0d  |file$,":")+1):..|
000018c0  05 5a 31 c8 95 a7 66 69  6c 65 24 2c 22 2e 22 29  |.Z1...file$,".")|
000018d0  3e 30 3a 66 69 6c 65 24  3d c1 66 69 6c 65 24 2c  |>0:file$=.file$,|
000018e0  a7 66 69 6c 65 24 2c 22  2e 22 29 2b 31 29 3a ce  |.file$,".")+1):.|
000018f0  0d 05 64 0a 3d 66 69 6c  65 24 0d 05 6e 3e dd a4  |..d.=file$..n>..|
00001900  76 61 72 28 76 61 72 25  29 76 61 72 24 3d 22 22  |var(var%)var$=""|
00001910  3a c8 95 3f 76 61 72 25  3e 33 31 3a 76 61 72 24  |:..?var%>31:var$|
00001920  2b 3d bd 3f 76 61 72 25  3a 76 61 72 25 2b 3d 31  |+=.?var%:var%+=1|
00001930  3a ce 3a 3d 76 61 72 24  0d 05 78 58 dd f2 67 65  |:.:=var$..xX..ge|
00001940  74 69 63 6f 6e 73 74 61  74 65 28 77 69 6e 64 25  |ticonstate(wind%|
00001950  2c 69 63 6f 6e 25 29 71  25 21 32 35 36 3d 77 69  |,icon%)q%!256=wi|
00001960  6e 64 25 3a 71 25 21 32  36 30 3d 69 63 6f 6e 25  |nd%:q%!260=icon%|
00001970  3a c8 99 22 57 69 6d 70  5f 47 65 74 49 63 6f 6e  |:.."Wimp_GetIcon|
00001980  53 74 61 74 65 22 2c 2c  71 25 2b 32 35 36 3a e1  |State",,q%+256:.|
00001990  0d 05 82 7e dd f2 73 65  74 69 63 6f 6e 73 74 61  |...~..seticonsta|
000019a0  74 65 28 77 69 6e 64 25  2c 69 63 6f 6e 25 2c 65  |te(wind%,icon%,e|
000019b0  6f 72 25 2c 63 6c 65 61  72 25 29 71 25 21 32 35  |or%,clear%)q%!25|
000019c0  36 3d 77 69 6e 64 25 3a  71 25 21 32 36 30 3d 69  |6=wind%:q%!260=i|
000019d0  63 6f 6e 25 3a 71 25 21  32 36 34 3d 65 6f 72 25  |con%:q%!264=eor%|
000019e0  3a 71 25 21 32 36 38 3d  63 6c 65 61 72 25 3a c8  |:q%!268=clear%:.|
000019f0  99 22 57 69 6d 70 5f 53  65 74 49 63 6f 6e 53 74  |."Wimp_SetIconSt|
00001a00  61 74 65 22 2c 2c 71 25  2b 32 35 36 3a e1 0d 05  |ate",,q%+256:...|
00001a10  8c 7d dd f2 73 65 74 69  63 6f 6e 74 65 78 74 28  |.}..seticontext(|
00001a20  77 69 6e 64 25 2c 69 63  6f 6e 25 2c 74 65 78 74  |wind%,icon%,text|
00001a30  24 29 f2 67 65 74 69 63  6f 6e 73 74 61 74 65 28  |$).geticonstate(|
00001a40  77 69 6e 64 25 2c 69 63  6f 6e 25 29 3a 24 a4 74  |wind%,icon%):$.t|
00001a50  65 78 74 61 64 64 72 28  77 69 6e 64 25 2c 69 63  |extaddr(wind%,ic|
00001a60  6f 6e 25 29 3d 74 65 78  74 24 3a f2 73 65 74 69  |on%)=text$:.seti|
00001a70  63 6f 6e 73 74 61 74 65  28 77 69 6e 64 25 2c 69  |constate(wind%,i|
00001a80  63 6f 6e 25 2c 30 2c 30  29 3a e1 0d 05 96 3d dd  |con%,0,0):....=.|
00001a90  a4 74 65 78 74 61 64 64  72 28 77 69 6e 64 25 2c  |.textaddr(wind%,|
00001aa0  69 63 6f 6e 25 29 f2 67  65 74 69 63 6f 6e 73 74  |icon%).geticonst|
00001ab0  61 74 65 28 77 69 6e 64  25 2c 69 63 6f 6e 25 29  |ate(wind%,icon%)|
00001ac0  3a 3d 71 25 21 32 38 34  0d 05 a0 6b dd f2 6f 70  |:=q%!284...k..op|
00001ad0  65 6e 77 69 6e 64 6f 77  28 77 69 6e 64 25 29 71  |enwindow(wind%)q|
00001ae0  25 21 32 35 36 3d 77 69  6e 64 25 3a c8 99 22 57  |%!256=wind%:.."W|
00001af0  69 6d 70 5f 47 65 74 57  69 6e 64 6f 77 53 74 61  |imp_GetWindowSta|
00001b00  74 65 22 2c 2c 71 25 2b  32 35 36 3a 71 25 21 32  |te",,q%+256:q%!2|
00001b10  38 34 3d 2d 31 3a c8 99  22 57 69 6d 70 5f 4f 70  |84=-1:.."Wimp_Op|
00001b20  65 6e 57 69 6e 64 6f 77  22 2c 2c 71 25 2b 32 35  |enWindow",,q%+25|
00001b30  36 3a e1 0d 05 aa 79 dd  a4 63 72 65 61 74 65 77  |6:....y..createw|
00001b40  69 6e 28 74 65 6d 70 24  29 c8 99 22 57 69 6d 70  |in(temp$).."Wimp|
00001b50  5f 4c 6f 61 64 54 65 6d  70 6c 61 74 65 22 2c 2c  |_LoadTemplate",,|
00001b60  71 25 2c 69 6e 64 72 25  2c 69 6e 64 72 5f 65 6e  |q%,indr%,indr_en|
00001b70  64 25 2c 2d 31 2c 74 65  6d 70 24 2c 30 b8 2c 2c  |d%,-1,temp$,0.,,|
00001b80  69 6e 64 72 25 3a c8 99  22 57 69 6d 70 5f 43 72  |indr%:.."Wimp_Cr|
00001b90  65 61 74 65 57 69 6e 64  6f 77 22 2c 2c 71 25 b8  |eateWindow",,q%.|
00001ba0  77 69 6e 64 25 3a 3d 77  69 6e 64 25 0d 05 b4 2e  |wind%:=wind%....|
00001bb0  dd a4 77 6f 72 64 3a 3d  9a 23 72 64 25 84 9a 23  |..word:=.#rd%..#|
00001bc0  72 64 25 3c 3c 38 84 9a  23 72 64 25 3c 3c 31 36  |rd%<<8..#rd%<<16|
00001bd0  84 9a 23 72 64 25 3c 3c  32 34 0d 05 be 2f dd a4  |..#rd%<<24.../..|
00001be0  72 77 6f 72 64 3a 3d 9a  23 72 64 25 3c 3c 32 34  |rword:=.#rd%<<24|
00001bf0  84 9a 23 72 64 25 3c 3c  31 36 84 9a 23 72 64 25  |..#rd%<<16..#rd%|
00001c00  3c 3c 38 84 9a 23 72 64  25 0d 05 c8 45 dd a4 72  |<<8..#rd%...E..r|
00001c10  6d 76 28 6d 6f 64 65 25  2c 76 61 72 25 29 3a c8  |mv(mode%,var%):.|
00001c20  99 22 4f 53 5f 52 65 61  64 4d 6f 64 65 56 61 72  |."OS_ReadModeVar|
00001c30  69 61 62 6c 65 22 2c 6d  6f 64 65 25 2c 76 61 72  |iable",mode%,var|
00001c40  25 b8 2c 2c 76 61 72 25  3a 3d 76 61 72 25 0d 05  |%.,,var%:=var%..|
00001c50  d2 12 dd f2 6f 6b 28 6d  65 73 73 61 67 65 24 29  |....ok(message$)|
00001c60  0d 05 dc 48 f2 73 6c 6f  74 73 69 7a 65 28 30 29  |...H.slotsize(0)|
00001c70  3a 71 25 21 38 3d 30 3a  71 25 21 31 32 3d 73 61  |:q%!8=0:q%!12=sa|
00001c80  76 65 25 3a 71 25 21 31  36 3d 30 3a c8 99 22 49  |ve%:q%!16=0:.."I|
00001c90  6e 74 65 72 66 61 63 65  5f 53 6c 61 62 42 75 74  |nterface_SlabBut|
00001ca0  74 6f 6e 22 2c 2c 71 25  0d 05 e6 56 71 25 21 32  |ton",,q%...Vq%!2|
00001cb0  35 36 3d 30 3a 24 28 71  25 2b 32 36 30 29 3d 6d  |56=0:$(q%+260)=m|
00001cc0  65 73 73 61 67 65 24 2b  bd 30 3a c8 99 22 57 69  |essage$+.0:.."Wi|
00001cd0  6d 70 5f 52 65 70 6f 72  74 45 72 72 6f 72 22 2c  |mp_ReportError",|
00001ce0  71 25 2b 32 35 36 2c 31  37 2c 22 4d 65 73 73 61  |q%+256,17,"Messa|
00001cf0  67 65 20 66 72 6f 6d 20  54 6f 42 4d 50 22 0d 05  |ge from ToBMP"..|
00001d00  f0 05 e1 0d 05 fa 0b dd  f2 65 72 72 6f 72 0d 06  |.........error..|
00001d10  04 48 f2 73 6c 6f 74 73  69 7a 65 28 30 29 3a 71  |.H.slotsize(0):q|
00001d20  25 21 38 3d 30 3a 71 25  21 31 32 3d 73 61 76 65  |%!8=0:q%!12=save|
00001d30  25 3a 71 25 21 31 36 3d  30 3a c8 99 22 49 6e 74  |%:q%!16=0:.."Int|
00001d40  65 72 66 61 63 65 5f 53  6c 61 62 42 75 74 74 6f  |erface_SlabButto|
00001d50  6e 22 2c 2c 71 25 0d 06  0e 96 71 25 21 32 35 36  |n",,q%....q%!256|
00001d60  3d 9f 3a 24 28 71 25 2b  32 36 30 29 3d f6 24 2b  |=.:$(q%+260)=.$+|
00001d70  22 2c 20 49 45 43 20 22  2b c3 9e 2b 22 2c 20 63  |", IEC "+..+", c|
00001d80  6c 69 63 6b 20 4f 4b 20  74 6f 20 63 6f 6e 74 69  |lick OK to conti|
00001d90  6e 75 65 20 6f 72 20 43  61 6e 63 65 6c 20 74 6f  |nue or Cancel to|
00001da0  20 71 75 69 74 2e 22 2b  bd 30 3a c8 99 22 57 69  | quit."+.0:.."Wi|
00001db0  6d 70 5f 52 65 70 6f 72  74 45 72 72 6f 72 22 2c  |mp_ReportError",|
00001dc0  71 25 2b 32 35 36 2c 33  2c 22 54 6f 42 4d 50 22  |q%+256,3,"ToBMP"|
00001dd0  b8 2c 62 74 6e 73 25 3a  e7 62 74 6e 73 25 3d 32  |.,btns%:.btns%=2|
00001de0  20 66 69 6e 69 73 68 65  64 25 3d b9 0d 06 18 05  | finished%=.....|
00001df0  e1 0d ff                                          |...|
00001df3